ZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGFhNWY3NDIuLmRmMTc0ZWQgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtNjYsNiArNjYsNyBAQAogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogbGlidG9vbAogbG9jYWwvc25tcGNoZWNrCitsb2NhbC9zbm1wY29uZgogTWFrZWZpbGUKIG1hbi8qLlsxMzU4XQogbWFuL2RlZmF1bHRfc3RvcmUuMy5oCmRpZmYgLS1naXQgYS9DSEFOR0VTIGIvQ0hBTkdFUwppbmRleCBkMDI1NzhmLi4xMWYyMTdmIDEwMDY0NAotLS0gYS9DSEFOR0VTCisrKyBiL0NIQU5HRVMKQEAgLTMsMTE4ICszLDQ5OSBAQAogYSBzdW1tYXJ5IG9mIHRoZSBtYWpvciBjaGFuZ2VzLCBhbmQgdGhlIENoYW5nZUxvZyBmaWxlIGZvciBhIGNvbXByZWhlbnNpdmUKIGxpc3Rpbmcgb2YgYWxsIGNoYW5nZXMgbWFkZSB0byB0aGUgY29kZS4KIAotCi0qNS42LjIqCisqNS43LjIqCiAKICAgICBzbm1wbGliOgotICAgICAgLSBbUEFUQ0ggMjgzNTU3N106IFJlcGxhY2UgU05NUF9aRVJPIG9mIGFycmF5cyB3aXRoIGEgbWVtc2V0LgotICAgICAgLSBbUEFUQ0ggMzUxMDQ1NF06IEFsbG93IHRoZSB1c2Ugb2YgMC4wLjAuMC8wIGFzIGFsaWFzIGZvciBkZWZhdWx0CisgICAgICAtIEFkZCBEb3h5Z2VuLXN0eWxlIGZ1bmN0aW9uIGhlYWRlciBmb3IKKwluZXRzbm1wX3JlZ2lzdGVyX2RlZmF1bHRfdGFyZ2V0KCkgYW5kCisJbmV0c25tcF9jbGVhcl9kZWZhdWx0X3RhcmdldCgpLgorICAgICAgLSBBZGQgbmV0c25tcF9zZXRlbnYoKS4KKyAgICAgIC0gQXZvaWQgdGhhdCBzeXN0ZW0gY2xvY2sgY2hhbmdlcyAoZS5nLiBieSBudHBkKSBhZmZlY3QgY29kZSB0aGF0CisJbmVlZHMgcmVsYXRpdmUgdGltZSBNYWtlIHN1cmUgdGhhdCB0aGUgcmFuZ2Ugb2YgdGhlIFNOTVB2MyB2YXJpYWJsZQorCXNubXBFbmdpbmVUaW1lIGlzIDAuLjIxNDc0ODM2NDcgb24gYWxsIHN1cHBvcnRlZCBzeXN0ZW1zIGluc3RlYWQgb2YKKwkwLi40Mjk0OTY3MiBvbiBzb21lIHN5c3RlbXMgKGkuZS4gd3JhcGFyb3VuZCBhZnRlciA0OTcgZGF5cykgQWRkCisJbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCksIG5ldHNubXBfc2V0X21vbm90b25pY19tYXJrZXIoKSwKKwluZXRzbm1wX3JlYWR5X21vbm90b25pYygpLCBuZXRzbm1wX2dldF9hZ2VudF9ydW50aW1lKCkKKyAgICAgIC0gQXZvaWQgdGhhdCBzeXN0ZW0gY2xvY2sgY2hhbmdlcyAoZS5nLiBieSBudHBkKSBhZmZlY3QgY29kZSB0aGF0CisJbmVlZHMgcmVsYXRpdmUgdGltZSBNYWtlIHN1cmUgdGhhdCB0aGUgcmFuZ2Ugb2YgdGhlIFNOTVB2MyB2YXJpYWJsZQorCXNubXBFbmdpbmVUaW1lIGlzIDAuLjIxNDc0ODM2NDcgb24gYWxsIHN1cHBvcnRlZCBzeXN0ZW1zIGluc3RlYWQgb2YKKwkwLi40Mjk0OTY3MiBvbiBzb21lIHN5c3RlbXMgKGkuZS4gd3JhcGFyb3VuZCBhZnRlciA0OTcgZGF5cykgQWRkCisJbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCksIG5ldHNubXBfc2V0X21vbm90b25pY19tYXJrZXIoKSwKKwluZXRzbm1wX3JlYWR5X21vbm90b25pYygpLCBuZXRzbm1wX2dldF9hZ2VudF9ydW50aW1lKCkgRGVwcmVjYXRlCisJYXRpbWVfZGlmZigpLCBhdGltZV9uZXdNYXJrZXIoKSwgYXRpbWVfcmVhZHkoKSwgYXRpbWVfc2V0TWFya2VyKCksCisJbWFya2VyX3R0aWNrcygpLCBuZXRzbm1wX21hcmtlcl91cHRpbWUoKSwgbmV0c25tcF90aW1ldmFsX3VwdGltZSgpLAorCXRpbWV2YWxfdHRpY2tzKCksIHVhdGltZV9kaWZmKCksIHVhdGltZV9oZGlmZigpIGFuZCB1YXRpbWVfcmVhZHkoKS4KKyAgICAgIC0gQXZvaWQgd2FpdGluZyBpbmRlZmluaXRlbHkgaWYgYSBzZXNzaW9uIGhhcyB0aW1lb3V0IHplcm8KKyAgICAgIC0gRGVjbGFyZSAidHlwZSIgYXJndW1lbnQgb2Ygc2Vfc3RvcmVfbGlzdCgpIC8gc2Vfc3RvcmVfc2xpc3QoKSAvCisJc2Vfc3RvcmVfZW51bV9saXN0KCkgY29uc3QKKyAgICAgIC0gTWFrZSBpdCBleHBsaWNpdCB0aGF0IE1BWF9TVUJJRCBpcyBhbiB1bnNpZ25lZCBjb25zdGFudAorICAgICAgLSBNYWtlIG5ldHNubXBfY2FsbGJhY2tfYWNjZXB0KCkgcmV0dXJuIC0xIChmYWlsdXJlKSBpbnN0ZWFkIG9mIDAKKwkoU1RESU5fRklMRU5PKQorICAgICAgLSBNYWtlIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZSgpIHJvYnVzdCBhZ2FpbnN0IG1lbW9yeSBhbGxvY2F0aW9uCisJZmFpbHVyZXMuIE1ha2UgTkVUU05NUF9MQVJHRV9GRF9aRVJPKCkgdXNlIG1lbXNldCgpIG9uIFVuaXggc3lzdGVtcworCWluc3RlYWQgb2YgYW4gZXhwbGljaXQgbG9vcC4KKyAgICAgIC0gTWFrZSBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoKSByb2J1c3QgYWdhaW5zdCBtZW1vcnkgYWxsb2NhdGlvbgorCWZhaWx1cmVzLiBNYWtlIE5FVFNOTVBfTEFSR0VfRkRfWkVSTygpIHVzZSBtZW1zZXQoKSBvbiBVbml4IHN5c3RlbXMKKwlpbnN0ZWFkIG9mIGFuIGV4cGxpY2l0IGxvb3AuIE1ha2Ugc3VyZSB0aGF0IG9uIFVuaXggc3lzdGVtcworCW5ldHNubXBfbGFyZ2VfZmRfY2xyKCkgZG9lc24ndCB0cnkgdG8gcmVhZCBtZW1vcnkgaXQgaXNuJ3QgYWxsb3dlZAorCXRvIHJlYWQgaWYgdGhlIGZpcnN0IGFyZ3VtZW50IGVxdWFscyAtMSAoYSB2YWx1ZSB0aGF0IHNob3VsZG4ndCBiZQorCXBhc3NlZCBieSB0aGUgY2FsbGVyKS4KKyAgICAgIC0gTWVyZ2UgdG9nZXRoZXIgdGhlIExpbnV4IGFuZCAqQlNEIHZlcnNpb24gb2Ygc3JjIHBvcnQgc2VuZGluZy4KKyAgICAgIC0gT25seSB0cmFuc2Zvcm0gdGhlIGFkZHJlc3MgdG8gcHJpbnRhYmxlIGZvcm0gd2hlbiBuZWVkZWQuCisgICAgICAtIFBBVENIIDM1MTA0NTQ6IEFsbG93IHRoZSB1c2Ugb2YgMC4wLjAuMC8wIGFzIGFsaWFzIGZvciBkZWZhdWx0CisgICAgICAtIFByZXZlbnQgZ2NjIHBlZC13YXJuaW5nIGZvciBORVRTTk1QX1JFTU9WRV9DT05TVCBnaXQtc3ZuLWlkOgorCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDEKKwk4MDUyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgICAgLSBSZWR1Y2Ugb3ZlcmhlYWQgb2YgY29uZmlnIGZpbGUgcGFyc2luZworICAgICAgLSBSZW1vdmUgb2Jzb2xldGUgc25tcF9nZXRfZmRfZm9yX3Nlc3Npb24oKSBkZWNsYXJhdGlvbgorICAgICAgLSBTZXBhcmF0ZSBvdXQgdGhlIGNtZXNnIGJ1ZmZlciBzaXplCisgICAgICAtIFNldCB0aGUgcnBhdGggZm9yIGxpYnBlcmwuc28gaW4gbGlibmV0c25tcG1pYnMuc28gc3VjaCB0aGF0IHRoZQorCWR5bmFtaWMgbGlua2VyIGNhbiBmaW5kIGxpYnBlcmwuc28gd2l0aG91dCByZXF1aXJpbmcgdGhlIHVzZXIgdG8KKwltb2RpZnkgdGhlIGR5bmFtaWMgbGlua2VyIHNldHRpbmdzLiBUaGlzIGNoYW5nZSBpbgorCWFnZW50L01ha2VmaWxlLmluIGlzIG5lY2Vzc2FyeSBvbiB0aGUgNS41IGJyYW5jaCBhbmQgbGF0ZXIgYnV0IG5vdAorCW9uIHRoZSA1LjQgYnJhbmNoLiBUaGF0IGlzIGJlY2F1c2UgdGhlIDUuNCBicmFuY2ggdXNlcyBhbiBvbGRlcgorCXZlcnNpb24gb2YgbGlidG9vbCB0aGF0IHByb3BhZ2F0ZXMgdGhlIHJwYXRoIG9mIGRlcGVuZGVudAorCWxpYnJhcmllcy4gVGhpcyBpcyBjYWxsZWQgaW50ZXItbGlicmFyeSBkZXBlbmRlbmN5IHRyYWNraW5nIGluIHRoZQorCWxpYnRvb2wgbWFudWFsLiBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgcHJlc2VudCBpbiBsaWJ0b29sIHZlcnNpb24gMQorCWJ1dCBub3QgaW4gbGlidG9vbCB2ZXJzaW9uIDIuIEZvciBtb3JlIGJhY2tncm91bmQgaW5mb3JtYXRpb24gYWJvdXQKKwlkeW5hbWljIGxpYnJhcmllcyBhbmQgcnBhdGhzLCBzZWUgYWxzbyB0aGUgZG9jdW1lbnQgd2l0aCB0aGUgdGl0bGUKKwkiUnBhdGhJc3N1ZSIgb24gdGhlIERlYmlhbiB3aWtpCisJKGh0dHA6Ly93aWtpLmRlYmlhbi5vcmcvUnBhdGhJc3N1ZSkuCisgICAgICAtIFNpbXBsaWZ5IGltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBtYW5pcHVsYXRpbmcgNjQtYml0IG51bWJlcnMuCisgICAgICAtIFNpbXBsaWZ5IHRoZSBzZV9zdG9yZV9lbnVtX2xpc3QoKSBpbXBsZW1lbnRhdGlvbgorICAgICAgLSBVc2UgU05NUF9BTExPQ19UWVBFREVGIHRvIGFsbG9jYXRlIHRyYW5zcG9ydHMgaW4gb3JkZXIgdG8gYXZvaWQgdGhlCisJc2VwYXJhdGUgY2FsbCB0byBtZW1zZXQuCisgICAgICAtIFtQQVRDSCAzNDE0NzczXTogRW5jb2RlIGludGVnZXIgdmFsdWUgdXNpbmcgQVNOX0lOVEVHRVIKICAgICAgIC0gW1BBVENIIDM1MjY1OTldOiBEb24ndCBoYW5nIG9uIHJldHJpZWQgZmFpbGluZyBTTk1QdjMgcmVzcG9uc2VzCi0gICAgICAtIFtCVUcgMzEzNDMyM106IEZpeCBjcmFzaCB3aGVuIGNvbXBhcmluZyBpbnZhbGlkIE9JRHMKLSAgICAgIC0gQXZvaWQgdW5uZWNlc3NhcnkgY2FzdHMgd2hlbiB1c2luZyBuZXRzbm1wX3NldF9yb3dfY29sdW1uKCkKLSAgICAgIC0gRWxpbWluYXRlIGFzc29ydGVkIGRlYWQgdmFyaWFibGVzCisgICAgICAtIFBBVENIIDM1NjA0NzM6IGZyb20gZmVubmVyOiBIYW5kbGUgVGltZVRpY2tzIHdoZW4gcHJldHR5LXByaW50aW5nCisJT0lEICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisgICAgICAtIEFkZCB0aGUgc3ltYm9sIE5FVFNOTVBfUFJJbyB0byBoZWxwIGluIHByaW50aW5nIG9pZCB2YWx1ZXMuCisgICAgICAtIERvIG5vdCBjcmFzaCBmcm9tIGVtcHR5IHZhbHVlcyBpbiAtLXRva2VuPXZhbHVlIGFyZ3VtZW50cworICAgICAgLSBEbyBub3QgY3Jhc2ggb24gaW5jb21wbGV0ZSBjb25maWd1cmF0aW9uIHRva2Vucy4KKyAgICAgIC0gRG8gbm90IHRydW5jYXRlIHNpbmdsZSBkZWZhdWx0IHRyYW5zcG9ydCBkb21haW5zCisgICAgICAtIE1vdmUgdGhlIGNoZWNrIHRoYXQgdGhlIHBkdSB2YXJpYWJsZSBpcyBub24tTlVMTCB0byBiZWZvcmUgdGhlCisJZmlyc3QgZGVyZWZlcmVuY2Ugb2YgaXQuCisKKyAgICBzbm1wbGliICsgc25tcGQgKyBzbm1wd2FsazoKKyAgICAgIC0gQXZvaWQgdGhhdCBzeXN0ZW0gY2xvY2sgY2hhbmdlcyAoZS5nLiBieSBudHBkKSBhZmZlY3QgY29kZSB0aGF0CisJbmVlZHMgcmVsYXRpdmUgdGltZQorCisgICAgc25tcGxpYiwgc25tcGQsIHBlcmw6CisgICAgICAtIEVsaW1pbmF0ZSBkZWFkIHZhcmlhYmxlcyBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmMKKwlhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0c19saW51eC5jCisJYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX2FjYworCWVzcy5jIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYworCWFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJvY2ZzX3N0YXR1cy5jCisJYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2xpbnV4LmMKKwlhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguYworCWFnZW50L21pYmdyb3VwL3Jtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHNfbGludXguYworCWFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MKKwkuYyBhcHBzL3NubXB0bHMuYyBhcHBzL3NubXB0cmFwZF9sb2cuYyBzbm1wbGliL2Rpcl91dGlscy5jCisJc25tcGxpYi9zbm1wX2NsaWVudC5jIHNubXBsaWIvc25tcF9vcGVuc3NsLmMKKwlzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU1RDUERvbWFpbi5jCisgICAgICAtIEJVRzogMzUxNzAzMDogRW5zdXJlIGxhcmdlIHRhYmxlcyBhcmUgd2Fsa2VkIHByb3Blcmx5CisgICAgICAtIEJVRzogMzU0MTAxMjogRml4IGhhbmRsaW5nIG9mIGdldHRhYmxlIGNvbHVtbnMKKyAgICAgIC0gW1BBVENIIDM1Mjk1NDFdOiBEb24ndCByZWZlciB0byBpbnRlcm5hbCAnbXknIHZhcmlhYmxlcyBmcm9tCisJZXh0ZXJuYWwgc2NyaXB0cyBGaXggcHJvdmlkZWQgYnkgTGV6eiBHaWxlcworCisgICAgc25tcDoKKyAgICAgIC0gQnJpZGdlLW1pYjogRml4IGluZGV4IGludGVycHJldGF0aW9uLiBUaGlzIHBhdGNoIGNvcnJlY3RzIGEgd3JvbmcKKwlkYXRhIGludGVycHJldGF0aW9uLiBzbm1wLWJyaWRnZS1taWIgb2J0YWlucyB0aGUgaWZpbmRleCB2YWx1ZSBmcm9tCisJdGhlIHN5c2ZzIGF0dHJpYnV0ZSAnaWZpbmRleCcgVGhlIHZhbHVlIGdpdmVuIGJ5IHRoZSBzeXNmcworCWF0dHJpYnV0ZSBpcyBhbiBpbnRlZ2VyLCB3aGljaCBpcyBoYW5kbGVkIGFzIGhleCBhbmQgbGVhZHMgdG8KKwlpbmNvcnJlY3QgZGF0YSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuIGUuZy4gJCA+IHNubXB3YWxrIGxvY2FsaG9zdAorCUJSSURHRS1NSUI6OmRvdDFkQmFzZVBvcnRJZkluZGV4LjIKKwlCUklER0UtTUlCOjpkb3QxZEJhc2VQb3J0SWZJbmRleC4yID0gSU5URUdFUjogNTQgYWNjb3JkaW5nIHRvIHRoZQorCXN5c2ZzIGF0dHJpYnV0ZSB0aGUgdmFsdWUgaXMgMzYgJCA+IGNhdAorCS9zeXMvY2xhc3MvbmV0LzxkZXZpY2U+L2lmaW5kZXggMzYgU2lnbmVkLW9mZi1ieTogTWlqbyBTYWZyYWRpbgorCTxzYWZyYWRpbkBsaW51eC52bmV0LmlibS5jb20+CiAKICAgICBzbm1wZDoKLSAgICAgIC0gW1BBVENIIDI5NDE4MTFdOiBIYW5kbGUgc3VjY2Vzc2Z1bCByZXF1ZXN0cyB3aXRoIHJlcUlEIDAKLSAgICAgIC0gW1BBVENIIDMwOTY3MjVdOiBzeXNPUlRhYmxlIHJlZ2lzdGF0aW9uIGZvciBub3RpZmljYXRpb24gbG9nIG1pYgorICAgICAgLSBMb3dlcmVkIHNldmVyaXR5IG9mICdFcnJvciBleHBhbmRpbmcgWFhYIHRvIDY0Yml0cycgbWVzc2FnZXMuCisgICAgICAtIFJlbW92ZWQgZXJyb3IgbG9nIG1lc3NhZ2VzIHdoZW4gSVB2NiBpcyBkaXNhYmxlZC4KKyAgICAgIC0gQWRkIG1pc3NpbmcgZGVidWcgdGFnCisgICAgICAtIEFkZCBuZXRzbm1wX2dldF9uZXh0X2FsYXJtX3RpbWUoKQorICAgICAgLSBBdm9pZCB0aGF0IHN5c3RlbSBjbG9jayBjaGFuZ2VzIChlLmcuIGJ5IG50cGQpIGFmZmVjdCBjb2RlIHRoYXQKKwluZWVkcyByZWxhdGl2ZSB0aW1lIE1ha2Ugc3VyZSB0aGF0IHRoZSByYW5nZSBvZiB0aGUgU05NUHYzIHZhcmlhYmxlCisJc25tcEVuZ2luZVRpbWUgaXMgMC4uMjE0NzQ4MzY0NyBvbiBhbGwgc3VwcG9ydGVkIHN5c3RlbXMgaW5zdGVhZCBvZgorCTAuLjQyOTQ5NjcyIG9uIHNvbWUgc3lzdGVtcyAoaS5lLiB3cmFwYXJvdW5kIGFmdGVyIDQ5NyBkYXlzKQorICAgICAgLSBCVUcgMzU0MjE4ODogQ29ycmVjdCBzeXNPUkRlc2NyIGZvciBzbm1wVXNtTUlCLiBUaGFua3MgdG8gRGF2ZQorCVZ1Y2ljaCBmb3IgcmVwb3J0aW5nIHRoaXMuCisgICAgICAtIEJVRyAzNTQyMzA3OiBDb3JyZWN0IHN5c09SSUQgZm9yIHNubXBNUERTdGF0cy4gVGhhbmtzIHRvIERhdmUKKwlWdWNpY2ggZm9yIHJlcG9ydGluZyB0aGlzLgorICAgICAgLSBCVUc6IDM0MzkyMzQ6IENvcnJlY3QgdGhlIGRlcGVuZGVuY2llcyBvZiB1Y2Qtc25tcC9wYXNzIGFuZAorCXVjZC1zbm1wL3Bhc3NfcGVyc2lzdAorICAgICAgLSBCVUc6IDM0MzkyMzQ6IE1vdmUgbmV0c25tcF9wYXNzX3N0cl90b19lcnJubyB0byBwYXNzX2NvbW1vbiBhbmQKKwlyZW5hbWUgaXQgdG8gbmV0c25tcF9pbnRlcm5hbF9wYXNzX3N0cl90b19lcnJubworICAgICAgLSBCVUc6IDM0NjM3Njc6IEhhbmRsZSBwYXJzaW5nIHN1YmlkZW50aWZpZXJzID4gMl4zMQorICAgICAgLSBCVUc6IDM1MzIwOTA6IEZpeCBoaWdoIGlmSW5kZXggdmFsdWVzIGNyYXNoaW5nIGhyRGV2aWNlRGVzY3IKKyAgICAgIC0gQ2FsbCBzbm1wX29pZHRyZWVfY29tcGFyZSBpbnN0ZWFkIG9mIHNubXBfb2lkX21pbl9jb21wYXJlCisgICAgICAtIERJU01BTi1QSU5HLU1JQjogQXZvaWQgZGFuZ2xpbmcgcG9pbnRlcnMgKGJhc2VkIG9uIHBhdGNoIDM1MDMyNTkpCisgICAgICAtIERJU01BTi1QSU5HLU1JQjogQXZvaWQgcmVhZGluZyBmcmVlZCBtZW1vcnkgd2hlbiBkZWxldGluZyBhIHJvdworCWZyb20gYSB0YWJsZQorICAgICAgLSBESVNNQU4tUElORy1NSUI6IERvIG5vdCBzZW5kIHRoZSBjb250ZW50cyBvZiB0aGUgc3RhY2sgb3ZlciB0aGUKKwluZXR3b3JrCisgICAgICAtIERJU01BTi1QSU5HLU1JQjogRG9uJ3QgY2FsbCBleGl0KCkgdXBvbiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlCisgICAgICAtIERJU01BTi1QSU5HLU1JQjogRml4IElQdjYgc29ja2V0IGxlYWsgaW4gZXJyb3IgcGF0aHMKKyAgICAgIC0gRElTTUFOLVBJTkctTUlCOiBGaXggYSBzb2NrZXQgbGVhayB0cmlnZ2VyZWQgYnkgcGluZ2luZyBhIHJlbW90ZQorCWhvc3QKKyAgICAgIC0gRElTTUFOLVBJTkctTUlCOiBGaXggbW9yZSBtZW1vcnkgbGVha3MKKyAgICAgIC0gRElTTUFOLVBJTkctTUlCOiBGaXggc2V2ZXJhbCBtZW1vcnkgbGVha3MKKyAgICAgIC0gRElTTUFOLVBJTkctTUlCOiBNYWtlIHBpbmcgaW1wbGVtZW50YXRpb24gaW5kZXBlbmRlbnQgb2YgbnRwZCBjbG9jaworCWp1bXBzCisgICAgICAtIERJU01BTi1QSU5HLU1JQjogTWFrZSBwaW5naW5nIGxvY2FsIGludGVyZmFjZSBhZGRyZXNzZXMgd29yaworICAgICAgLSBESVNNQU4tU0NIRURVTEVSLU1JQjogSGFuZGxlIDMyLWNoYXJhY3RlciBzY2hlZENvbnRleHROYW1lIHZhbHVlcworCWNvcnJlY3RseS4gU2VlIGFsc28gY29tbWl0CisJYjNjNDk4MjU0MmUwYWIxNTFmYjM4ODQ3NTRjZGZiY2I0NzJkYTUyZC4KKyAgICAgIC0gRGlzYWJsZSB0aGUgc3VwcG9ydCBmb3IgaW50ZWdlcjY0IGluIHBhc3Mgc2NyaXB0cyBpZiBjb21waWxpbmcKKwl3aXRob3V0IG9wYXF1ZS1zcGVjaWFsLXR5cGVzLgorICAgICAgLSBGYWN0b3Igb3V0IGFzYzJiaW4gYW5kIGJpbjJhc2MuIEFkZCBhIG5ldHNubXBfaW50ZXJuYWxfIHByZWZpeCB0bworCXRoZW0KKyAgICAgIC0gRml4ZWQgVUNELVNOTVAtTUlCOjpzeXN0ZW1TdGF0cyBhZnRlciAzMCBkYXlzIG9mIHVwdGltZS4gQWZ0ZXIgMzAKKwlkYXlzLCB2YWx1ZXMgZnJvbSAvcHJvYy9zdGF0IChvbiBMaW51eCkgY2FuIGdldCBiaWdnZXIgdGhhbiAzMmJpdHMKKwlhbmQgc25tcGQgY2FsY3VsYXRpb25zIG1pZ2h0IHJlbmRlciBjb3VudGVycyBsaWtlIHNzQ3B1VXNlcgorCW5lZ2F0aXZlIG9yIHplcm8sIHdoaWxlIHRoZSByZWFsIHZhbHVlIGlzIGhpZ2hlci4gVGhlcmVmb3JlIHRoZQorCWNvdW50ZXJzIHNob3VsZCBiZSB0cmFja2VkIGFzIHRoZSBsYXJnZXN0IGludGVnZXIgYXZhaWxhYmxlLgorICAgICAgLSBGaXhlZCBzbm1wZCAnLWQnIG9wdGlvbi4gTm93IGl0IGR1bXBzIHBhY2tldHMgYWdhaW4uCisgICAgICAtIElGLU1JQjo6aWZUeXBlOiBSZXBvcnQgdHlwZSAiaW5maW5pYmFuZCAoMTk5KSIgZm9yIEluZmluaUJhbmQKKwlpbnRlcmZhY2VzIGluc3RlYWQgb2YgdHlwZSAib3RoZXIgKDEpIi4KKyAgICAgIC0gSW5pdF9hZ2VudCgpICsgaW5pdF9rbWVtKCk6IFJldHVybiBhbiBlcnJvciB2YWx1ZSBpbnN0ZWFkIG9mCisJaW52b2tpbmcgZXhpdCgpIGlmIGFjY2VzcyB0byBrZXJuZWwgdmlydHVhbCBtZW1vcnkgaXMgZGVuaWVkCisgICAgICAtIE1ha2UgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGRsbW9kIG1vZHVsZSBmYWlsIHJhdGhlciB0aGFuCisJZ2VuZXJhdGUgYSBkdW1teSBtb2R1bGUgaWYgdGhlIGRsb3BlbiBmdW5jdGlvbiBpc24ndCBhdmFpbGFibGUuCisgICAgICAtIE1hdGNoIGVhY2ggZ2V0cHduYW0oKS9nZXRwd3VpZCgpIGNhbGwgd2l0aCBhbiBlbmRwd2VudCgpIGNhbGwgYW5kCisJZWFjaCBnZXRncmVudCgpIGNhbGwgd2l0aCBhbiBlbmRncmVudCgpIGNhbGwuCisgICAgICAtIFBBVENIIDM0MDIzNzY6IGZyb20gTGVvbmFyZG8gQ2hpcXVpdHRvOiBSZWNvZ25pc2UgUmVpc2VyRlMgQWxzbworCW1vdmUgdmFyaW91cyBGU1R5cGUgZGVmaW5pdGlvbnMgdG8gdGhlIGFwcHJvcHJpYXRlIGJsb2NrcworICAgICAgLSBQQVRDSCAzNDUzODY4OiBmcm9tICJCaWxsIEZlbm5lciA8ZmVubmVyQGdtYWlsLmNvbT4iOiBGYWN0b3IgY29tbW9uCisJY29kZSBpbnRvIHBhc3NfY29tbW9uIE1vdmUgdGhlIGNvZGUgZm9yIHBvcm1hdHRpbmcgYW5kIHByaW50aW5nCisJdmFsdWVzIGZyb20gcGFzcyBhbmQgcGFzc19wZXJzaXN0IGludG8gcGFzc19jb21tb24uCisgICAgICAtIFBBVENIOiAzNDg3ODY3OiBEb24ndCBza2lwIG1pc3NpbmcgaWZYVGFibGUgZW50cmllcworCShpZkNvbm5lY3RvclByZXNlbnQgRkFMU0UpCisgICAgICAtIFBhc3NfcGVyc2lzdDogIEZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW50cm9kdWNlZCBpbiBjb21taXQKKwkzMWZhMDdjZDlmZmRlNDZkNDFkMmI1ODM4YzNmYzRkMDE1NDhiZmI1LiBUaGUgZm9sbG93aW5nIHJhY2UKKwljb25kaXRpb24gY291bGQgaGFwcGVuOiAtIEEgc3lzdGVtIGNhbGwgZmFpbHMgYW5kIGVycm5vIGlzIHNldAorCWFjY29yZGluZ2x5IGJ5IHRoZSBDIGxpYnJhcnkuIC0gU0lHQ0hMRCBoYW5kbGVyIGludm9rZXMgYSBzeXN0ZW0KKwljYWxsIHRoYXQgZmFpbHMgYW5kIGhlbmNlIG92ZXJ3cml0ZXMgZXJybm8uIC0gU0lHQ0hMRCBoYW5kbGVyCisJbGVhdmVzLiAtIG9yaWdpbmFsIGNvbnRleHQgY2hlY2tzIGVycm5vIGFuZCBmaW5kcyB0aGUgdmFsdWUgZnJvbQorCXRoZSBzeXN0ZW0gY2FsbCBpbnZva2VkIGJ5IHRoZSBTSUdDSExEIGhhbmRsZXIgaW5zdGVhZCBvZiB0aGUKKwlzeXN0ZW0gY2FsbCB0aGF0IGZhaWxlZCBvcmlnaW5hbGx5LiBPdGhlciBmaXhlcyBpbmNsdWRlZCBpbiB0aGlzCisJcGF0Y2g6IC0gUmVuYW1lZCBkZWluaXRfcGFzc19wZXJzaXN0KCkgaW50byBzaHV0ZG93bl9wYXNzX3BlcnNpc3QoKQorCXN1Y2ggdGhhdCB0aGlzIGZ1bmN0aW9uIGdldHMgY2FsbGVkIGR1cmluZyBhZ2VudCBzaHV0ZG93bi4gLSBNYWRlCisJc3VyZSB0aGF0IHNodXRkb3duX3Bhc3NfcGVyc2lzdCgpIGlzIGNhbGxlZCBieSB0aGUgV2luZG93cworCXNubXBkLmV4ZSB0b28uIC0gV2luZG93czogYXZvaWQgY2FsbGluZworCUNsb3NlSGFuZGxlKElOVkFMSURfSEFORExFX1ZBTFVFKS4gLSBXaW5kb3dzOiBhdm9pZCB0aGF0IGNsb3NpbmcgYQorCXBhc3NfcGVyc2lzdCBwaXBlIHRyaWdnZXJzIGEgY3Jhc2guIC0gV2luZG93czogcGFzc19wZXJzaXN0OiBjbG9zZQorCWhhbmRsZXMgb2YgZmluaXNoZWQgcHJvY2Vzc2VzLgorCWFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jIHdpbjMyL21pYl9tb2R1bGVfc2h1dGRvd24uaAorICAgICAgLSBTbXV4OiBzaW1wbGlmeSBzbXV4X2xpc3RfZGV0YWNoKCkKKyAgICAgIC0gVURQLU1JQjogUmVwb3J0IHRoZSBwcm9wZXIgYWRkcmVzcyBpbiB1ZHBMb2NhbEFkZHJlc3MgaW5zdGVhZCBvZgorCTAuMC4wLjAuIE1ha2VzIHRlc3QgVDE2MHNubXBuZXRzdGF0IHBhc3MgYWdhaW4uIEZpeGVzIGEgYnVnCisJaW50cm9kdWNlZCBpbiBjb21taXQgYzc2ZmI5NmY2NWUzM2JhMmZkMjEyYTkyMWU4YzM4NjE1NWVlNWM3YS4KKyAgICAgIC0gW0JVRyAzNDYwMzY0XTogRml4IHVzZSBvZiBibG9jayBmYWN0b3Igd2hlbiBkZXRlY3RpbmcgZXJyb3IKKwljb25kaXRpb25zCisgICAgICAtIFtCVUcgMzQ4OTYzMV06IEZpeCBpbmNvcnJlY3QgaGFuZGxpbmcgb2YgVUNEIG1vbml0b3JpbmcgZmxhZworICAgICAgLSBbUEFUQ0ggMzQxMDA1MF06IFNraXAgYWxyZWFkeS0ncHJvY2Vzc2VkJyB2YXJiaW5kcyBCYXNlZCBvbiBtaWIyYworCXBhdGNoIHByb3ZpZGVkIGJ5IFN0ZXBoZW4gVHVybmVyCisgICAgICAtIFtQQVRDSCAzNDEwMDU5XTogRml4IHNwYXJzZWx5IGF1Z21lbnRpbmcgdHJpZ2dlciB0YWJsZXMgUGF0Y2gKKwlwcm92aWRlZCBieSBTdGVwaGVuIFR1cm5lcgorICAgICAgLSBbUEFUQ0ggMzQ0NzQ0NF06IEZpeCBTSUdfUElQRSBoYW5kbGluZyBQYXRjaCBwcm92aWRlZCBieSBCaWxsCisJRmVubmVyCisgICAgICAtIFtQQVRDSCAzNDQ3NjcxXTogRml4IG92ZXJyaWRlIGhhbmRsaW5nIG9mIE9JRCB2YWx1ZXMgUGF0Y2ggc3VwcGxpZWQKKwlieSBQaGlsbGlwIE8nRG9ubmVsbAogICAgICAgLSBbUEFUQ0ggMzQ3OTc0MF06IEZpeCBoclNXUnVuUGVyZiBzdGF0aXN0aWNzCi0gICAgICAtIFtQQVRDSCAzNDg3ODY3XTogRG9uJ3Qgc2tpcCBtaXNzaW5nIGlmWFRhYmxlIGVudHJpZXMgKGlmQ29ubmVjdG9yUHJlc2VudCBGQUxTRSkKICAgICAgIC0gW1BBVENIIDM0ODc5MTldOiBGaXggY29tcGlsYXRpb24gd2hlbiBjYWNoaW5nIGlzIGRpc2FibGVkCiAgICAgICAtIFtQQVRDSCAzNDk1Njk3XTogU3RvcmUgcGVyc2lzdGVudCBzbm1wVGFyZ2V0IHRhYmxlIGNoYW5nZXMKLSAgICAgIC0gW0JVRyAzNTI2NTQ5XTogQ1ZFLTIwMTItMjE0MSBBcnJheSBpbmRleCBlcnJvciBsZWFkaW5nIHRvIGNyYXNoCi0gICAgICAtIFtCVUcgMzUzMjA5MF06IEZpeCBoaWdoIGlmSW5kZXggdmFsdWVzIGNyYXNoaW5nIGhyRGV2aWNlRGVzY3IKLSAgICAgIC0gQWRkZWQgT0NGUzIgKE9yYWNsZSBDbHVzdGVyIEZTKSB0byBoclN0b3JhZ2VUYWJsZSBhbmQgaHJGU1RhYmxlCi0gICAgICAtIEVsaW1pbmF0ZSBhc3NvcnRlZCBkZWFkIHZhcmlhYmxlcwotICAgICAgLSBVRFAtTUlCOiBSZXBvcnQgcHJvcGVyIHVkcExvY2FsQWRkcmVzcyAoaW5zdGVhZCBvZiAwLjAuMC4wKQorICAgICAgLSBCVUcgMzU0MjE4ODogQ29ycmVjdCBzeXNPUkRlc2NyIGZvciBzbm1wVXNtTUlCLiBUaGFua3MgdG8gRGF2ZQorCVZ1Y2ljaCBmb3IgcmVwb3J0aW5nIHRoaXMuCisgICAgICAtIEJVRyAzNTQyMzA3OiBDb3JyZWN0IHN5c09SSUQgZm9yIHNubXBNUERTdGF0cy4gVGhhbmtzIHRvIERhdmUKKwlWdWNpY2ggZm9yIHJlcG9ydGluZyB0aGlzLgorICAgICAgLSBCVUc6IDM1NDM4NjQ6IFJlbW92ZSBleHRyYW5lb3VzIGZ1bmN0aW9uIHR5cGUgKGFuZCBmaXggYSByZWxhdGVkCisJdHlwbykKKyAgICAgIC0gUmVtb3ZlZCBsaW1pdCBvZiAnZXhlYycgYW5kICdzaCcgZW50cmllcyBpbiBzbm1wZC5jb25mIFVzZSBkeW5hbWljCisJKHJlKWFsbG9jYXRpb24gaW5zdGVhZC4KKyAgICAgIC0gW1BBVENIIDM1NDMwMDBdOiBWYXJpb3VzIGZpeGVzIHRvIFJtb24gY29kZSBTdXBwbGllZCBieSBQYXRyaWNrCisJUml0dGVyCiAKICAgICBzbm1wZHg6Ci0gICAgICAtIFtQQVRDSCAzNDQ1NDM3XTogTG9nIEFnZW50WCBkaXNjb25uZWN0aW9ucyAoaW4gbGluZSB3aXRoIGNvbm5lY3Rpb25zKQorICAgICAgLSBbUEFUQ0ggMzQ0NTQzN106IExvZyBBZ2VudFggZGlzY29ubmVjdGlvbnMgKGluIGxpbmUgd2l0aAorCWNvbm5lY3Rpb25zKSBQYXRjaCBwcm92aWRlZCBieSBCaWxsIEZlbm5lcgogCiAgICAgc25tcHRyYXBkOgotICAgICAgLSBbQlVHIDMxNTEyNTRdOiBGaXggY3Jhc2ggd2l0aCBpbnZhbGlkIHRyYXBoYW5kbGUgZGlyZWN0aXZlCiAgICAgICAtIEF2b2lkIGNyYXNoIGR1cmluZyBzaHV0ZG93biBkdWUgdG8gaW52b2tpbmcgcGVybF9kZXN0cnVjdChOVUxMKQotICAgICAgLSBEb24ndCBpbnZva2Ugc2h1dGRvd25fcGVybCgpIGZyb20gU0lHVEVSTSBoYW5kbGVyCi0gICAgICAtIEhhbmRsZSBjaGFuZ2VzIHRvIGxpYm15c3FsY2xpZW50IEFQSSAoYWZmZWN0cyBGZWRvcmEgMTUvMTYpCisgICAgICAtIERvIG5vdCBpbnZva2Ugc2h1dGRvd25fcGVybCgpIGZyb20gaW5zaWRlIHRoZSBTSUdURVJNIGhhbmRsZXIgc2luY2UKKwl0aGF0IGZhaWxzIGlmIFNJR1RFUk0gaXMgcmVjZWl2ZWQgd2hpbGUgYSBQZXJsIGhhbmRsZXIgaXMgYWN0aXZlLgorCUJhc2VkIG9uIGEgcGF0Y2ggcG9zdGVkIGJ5IEpvZWwgQXZuaSA8amF2bmlAYXJ1YmFuZXR3b3Jrcy5jb20+CisgICAgICAtIEVsaW1pbmF0ZSBhbiB1bnVzZWQgdmFyaWFibGUgKE5vdykKKyAgICAgIC0gTW92ZSB0aGUgbWFpbiBsb29wIGNvZGUgaW50byBhIG5ldyBmdW5jdGlvbgogICAgICAgLSBSZW1vdmUgc3VwZXJmbHVvdXMgY2FzdHMKIAotICAgIGFwcHM6Ci0gICAgICAtIFtQQVRDSCAyODM1NTc3XTogUmVwbGFjZSBTTk1QX1pFUk8gb2YgYXJyYXlzIHdpdGggYSBtZW1zZXQuCisgICAgc25tcHRyYXBkX3NxbDoKKyAgICAgIC0gQXZvaWQgdGhhdCBhIGxpbmtlciBlcnJvciBpcyB0cmlnZ2VyZWQgb24gc3lzdGVtcyB3aGVyZSBteV9wcm9nbmFtZQorCWlzIG1pc3NpbmcgaW4gbGlibXlzcWxjbGllbnQgKGUuZy4gRmVkb3JhIDE1IGFuZCAxNikuIFRoaXMgaXMgYQorCWJhY2twb3J0IG9mIGNvbW1pdCA5ZjY1M2Y3LgogCi0gICAgYnVpbGQvaW5zdGFsbDoKLSAgICAgIC0gW0JVRyAzMTUyODQxXTogSW5zdGFsbCB1dGlsX2Z1bmNzIHN1YmhlYWRlcnMKLSAgICAgIC0gT3BlbkJTRDogRml4IG9yZGVyIG9mIGhlYWRlcnMgd2hlbiBjaGVja2luZyA8bmV0aW5ldC9pbl9wY2IuaD4KKyAgICBhaXg6CisgICAgICAtIEVsaW1pbmF0ZSBjb25maWd1cmUgd2FybmluZyByZWdhcmRpbmcgbGlicGVyZnN0YXQuaCBvbiBBSVggNi4xIGFuZAorCXVwCisgICAgICAtIFBBVENIIDM0MDM0MzM6IGZyb20gYmxlbnR6OiBJc3N1ZXMgd2l0aCBoclNXUnVuTmFtZSBhbmQgUGFyYW1ldGVycworCW9uIEFJWAkgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyCisJPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgIGFwcHMsIHNubXBsaWI6CisgICAgICAtIFBBVENIOiAyODM1NTc3OiBpZGVudGlmaWVkIGJ5ICJCYXJ0IFZhbiBBc3NjaGUiOiBSZXBsYWNlIFNOTVBfWkVSTworCW9mIGFycmF5cyB3aXRoIGEgbWVtc2V0LiBnaXQtc3ZuLWlkOgorCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDEKKwk3Nzk3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgICAgLSBCVUc6IDM1Mjk3Njg6IEJlIG1vcmUgY2FyZWZ1bCB3aGVuIHN0cmlwcGluZyBvZmYgbnVtZXJpYyBzdWZmaXhlcworCisgICAgYnVpbGQ6CisgICAgICAtIERvIG5vdCBnZW5lcmF0ZSBhbiBvdXRwdXQgZmlsZSBvbiBmYWlsdXJlIG1ha2Ugc3VwcG9zZXMgdGhhdCBubworCW91dHB1dCBpcyBnZW5lcmF0ZWQgaWYgdGhlIGNvbW1hbmQgZmFpbGVkLiBDaGFuZ2UgZmVhdHVyZS1yZW1vdmUgdG8KKwlmb2xsb3cgdGhhdCBwcmVzdW1wdGlvbi4KKyAgICAgIC0gQlVHOiAzNTMyMjM0OiBGaXggdHlwbyBpbiBsaWJ0b29sIHNjcmlwdCAoYWRkcmVzc2VkIHByb3Blcmx5IGluCisJbGlidG9vbCAyLjQuMikKKworICAgIGJ1aWxkaW5nOgorICAgICAgLSBBZGQgZGVwZW5kZW5jaWVzIG9uIEBGRUFUVVJFVEFSR1NAIHRvIG1ha2UgdGhlIHN1YnRhcmdldCB3b3JrIGFzCisJd2VsbC4KKyAgICAgIC0gQWRkIG1pc3NpbmcgZW5kIGNvbW1lbnRzIHRvIGZlYXR1cmUgaWZuZGVmcy4KICAgICAgIC0gQWRkIHRhcmdldCB0byBidWlsZCBhZ2VudHh0cmFwIGZyb20gdGhlIHRvcGxldmVsCi0gICAgICAtIEJ1aWxkIGZpeCBmb3Igc3lzdGVtcyBsYWNraW5nIGZpZWxkIG1zZ19jb250cm9sIGluIHN0cnVjdCBtc2doZHIKLSAgICAgIC0gRml4IHN0YXRpYyBidWlsZHMgdXNpbmcgbmV0LXNubXAtY29uZmlnIGFuZCAtKmxpYnMgZmxhZ3MKKyAgICAgIC0gQnVpbGQgZml4IGZvciBzeXN0ZW1zIGxhY2tpbmcgZmllbGQgbXNnX2ZsYWdzIGluIHN0cnVjdCBtc2doZHIKKwkoZS5nLiBJUklYKQorICAgICAgLSBCdWlsZCBmaXggZm9yIHN5c3RlbXMgbGFja2luZyBmaWVsZHMgbXNnX2NvbnRyb2wvbXNnX2ZsYWdzIGluCisJc3RydWN0IG1zZ2hkciAoYmFja3BvcnQpCisgICAgICAtIENvcnJlY3QgZGVwZW5kZW5jaWVzIC0gc2luY2UKKwliZjc0ZmVhNjlmMjRkYzZlODVmOTA4ZjNmNDFkMTQyNmIyZTA5Njg4IHNubXBjb25mIGlzIGxvY2F0ZWQgaW4KKwlidWlsZGRpciwgbm90IHNyY2RpcgorICAgICAgLSBDb3JyZWN0IGRlcGVuZGVuY2llcyAtIHNpbmNlCisJYmY3NGZlYTY5ZjI0ZGM2ZTg1ZjkwOGYzZjQxZDE0MjZiMmUwOTY4OCBzbm1wY29uZiBpcyBsb2NhdGVkIGluCisJYnVpbGRkaXIsIG5vdCBzcmNkaXIiIFRoaXMgcmV2ZXJ0cyBjb21taXQKKwk5ZWZhNDY3YTk3MmJiNmUxYzdmYmRhZjJlMjc0MjlkMjlmNGFiODllLgorICAgICAgLSBNYWtlIHRoZSB0cmFuc3BvcnQgY29uZmlndXJhdGlvbiBjb2RlIHdvcmsgYWdhaW4gUHJldmlvdXNseSB0aGUKKwl0cmFuc3BvcnQgaW5oZXJpdGFuY2UgcHJvY2Vzc2luZyBjb2RlIHJhbiB3aXRoCisJTkVUU05NUF9GRUFUVVJFX0NIRUNLSU5HIHNldC4gSW4gdGhpcyBtb2RlIHRoZSBmaWxlCisJbmV0LXNubXAvZmVhdHVyZS1kZXRhaWxzLmggaXMgcmVxdWllcmVkLiBUaGF0IGZpbGUgaXMgY3JlYXRlZAorCWR1cmluZyB0aGUgZmlyc3QgbWFrZSBydW4sIGFuZCB0aGF0IGhhcHBlbnMgYWZ0ZXIgY29uZmlndXJlIGlzIHJ1bi4KKwlDaGFuZ2UgdGhpcyB0byB1bmRlZmluZSBORVRTTk1QX01JTklNQUxfQ09ERSwgZWZmZWN0aXZlbHkgdHVybmluZworCW9mZiBmZWF0dXJlIHN1cHBvcnQgZHVyaW5nIHRyYW5zcG9ydCBjb25maWd1cmF0aW9uIGluIG9yZGVyIHRvIG1ha2UKKwlpdCB3b3JrIGF0IGFsbC4KKyAgICAgIC0gUnVuIGxpYnRvb2wgLS1tb2RlPWZpbmlzaCBvbiB0aGUgcmlnaHQgZGlyZWN0b3J5CisKKyAgICBsaWJuZXRzbm1wOgorICAgICAgLSBQQVRDSCAzMzk0NTg2OiBmcm9tIHJ3YS1jbzogZmlsZSBkZXNjcmlwdG9yIGxlYWsgaW4gcmVhZF9jb25maWcKKwkoK2ZpeCkgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICBsaWJzbm1wOgorICAgICAgLSBDaGFuZ2VkIHRoZSB0eXBlIG9mIHRoZSBmb3VydGggYXJndW1lbnQgb2YgbmV0c25tcF9zZXRfcm93X2NvbHVtbigpCisJZnJvbSBjb25zdCBjaGFyKiB0byBjb25zdCB2b2lkKiBzdWNoIHRoYXQgbm8gY2FzdCBpcyBuZWNlc3Nhcnkgd2hlbgorCXBhc3NpbmcgYW5vdGhlciBkYXRhdHlwZSB0aGVuIGNoYXIqIG9yIGNvbnN0IGNoYXIqLgogCiAgICAgbWFuOgotICAgICAgLSBbQlVHIDMxOTA3MjVdOiBEb2N1bWVudCBzbm1weyxfc2Vzc31zeW5jaF9yZXNwb25zZSBhbmQgc25tcF9hc3luY19zZW5kCisgICAgICAtIFtCVUcgMzQ5MDcwOF06IENsYXJpZnkgdXNlIG9mIGNvbW1vbiBjb21tYW5kLWxpbmUgb3B0aW9ucworICAgICAgLSBCVUc6IDM1MzUyNjk6IERvY3VtZW50IHVzZSBvZiBbc25tcF0gZm9yIGNsaWVudC1zaWRlIHRvb2xzLgogCi0gICAgbWliMmM6Ci0gICAgICAtIE1ha2UgdGhlIG1pYjJjIGZvcmVhY2ggcmFuZ2VzIHdvcmsgYXMgYWR2ZXJ0aXNlZCBpbiB0aGUgY29tbWVudHMuCisgICAgcGFzczoKIAogICAgIHBlcmw6CisgICAgICAtIEFkZCBhZ2VudDo6dXB0aW1lKCkKKyAgICAgIC0gRW5hYmxlIHNlbmRpbmcgU05NUHYyIHRyYXBzIHdpdGggYW4gZW1wdHkgdmFyYmluZCBsaXN0CiAgICAgICAtIEZpeCBzcGVsbGluZyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgU05NUCBtb2R1bGUKLSAgICAgIC0gRml4ZWQgc2VnbWVudGF0aW9uIGZhdWx0IHdoZW4gaGFuZGxlciByZWdpc3RyYXRpb24gZmFpbHMuCi0gICAgICAtIERvbid0IG9wZW4gc3RkZXJyIHVubmVjZXNzYXJpbHkgKGFmZmVjdHMgZW1iZWRkZWQgYWdlbnQpCisgICAgICAtIEZpeGVkIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGVuIGhhbmRsZXIgcmVnaXN0cmF0aW9uIGZhaWxzLiBXaGVuCisJbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyIGZhaWxzLCBpdCBmcmVlcyBpdHMgcmVnaW5mbyAtPgorCW5zYWhyX0RFU1RST1kgKGFuZCBhbnkgb3RoZXIgZnVuY3Rpb24pIG11c3Qgbm90IGRlcmVmZXJlbmNlIGl0LgorICAgICAgLSBQZXJsOiBNYWtlIHN1cmUgdGhhdCB0aGUgY29uc3RhbnQgU05NUF9ERUZBVUxUX1JFVFJJRVMgaXMKKwlyZWNvZ25pemVkLiBTTk1QIG1vZHVsZTogQWRkIGNvbnN0YW50cworCU5FVFNOTVBfQ0FMTEJBQ0tfT1BfUkVDRUlWRURfTUVTU0FHRSBhbmQKKwlORVRTTk1QX0NBTExCQUNLX09QX1RJTUVEX09VVC4gV2hlbiB0aGUgTmV0LVNOTVAgUGVybCBtb2R1bGVzIGFyZQorCWJ1aWx0IG9uIFdpbmRvd3Mgd2l0aCBNU1ZDIG9yIE1pbkdXIGl0IGlzIHBvc3NpYmxlIHRoYXQgZWFjaCB0aGVzZQorCWFyZSBsaW5rZWQgd2l0aCBhbm90aGVyIHZlcnNpb24gb2YgdGhlIE1TVkMgcnVudGltZSBsaWJyYXJ5IHRoYW4KKwl0aGUgUGVybCBpbnRlcnByZXRlciBpdHNlbGYuIEluIHRoYXQgY2FzZSB0aGUgImVycm5vIiB2YXJpYWJsZSB1c2VkCisJaW5zaWRlIC54cyBzb3VyY2UgZmlsZXMgaXMgYW5vdGhlciB2YXJpYWJsZSB0aGFuIHRoZSAkISB2YXJpYWJsZSBpbgorCS5wbSBmaWxlcy4gT3I6IGFzc2lnbm1lbnRzIHRvICJlcnJubyIgaW4gYSAueHMgZmlsZSBkbyBub3QgbW9kaWZ5CisJdGhlICIkISIgUGVybCB2YXJpYWJsZSBUaGlzIHBhdGNoIGF2b2lkcyB1c2luZyAiZXJybm8iIGJ5IG1vZGlmeWluZworCXRoZSBkaWZmZXJlbnQgY29uc3RhbnQoKSBmdW5jdGlvbnMgc3VjaCB0aGF0IHRoZXNlIHJldHVybiBhCisJdHdvLWVsZW1lbnQgYXJyYXkgaW5zdGVhZCBvZiByZXR1cm5pbmcgYSBzY2FsYXIgYW5kIHNldHRpbmcgZXJybm8uCiAKICAgICBweXRob246Ci0gICAgICAtIFtQQVRDSCAzMTg1MDg1XTogRml4IHNlZ2ZhdWx0IG9uIDY0LWJpdCBzeXN0ZW1zCisgICAgICAtIEF2b2lkIHRoYXQgYW4gU05NUCBzZXQgd2l0aCBVc2VFbnVtcyBlbmFibGVkIGNhdXNlcyBhIHNlZ21lbnRhdGlvbgorCWZhdWx0CisgICAgICAtIFtQQVRDSCAzNDMzODQ2XTogRml4IGZvciB1c2Ugd2l0aCBweXRob24gMi40CisgICAgICAtIEJVRzogMzUzNTk2NzogRml4IG1lbW9yeSBsZWFrIC0gc25tcF97c2Vzc199ZXJyb3IgYWxsb2NhdGVzIHRoZQorCW91dHB1dCBidWZmZXIKIAogICAgIHRlc3Rpbmc6Ci0gICAgICAtIFtCVUcgMzQ3NDU5MF06IERvbid0IG1hdGNoIHVuZGVyc2NvcmVzIHdpdGhpbiB0aGUgc291cmNlIHJvb3QgZmlsZW5hbWUKICAgICAgIC0gQWRkIGEgdGVzdCBmb3Igc2Vfc3RvcmVfbGlzdCgpCi0gICAgICAtIEZpeCBQZXJsIHJlZ3Jlc3Npb24gdGVzdCBmYWlsdXJlcwotICAgICAgLSBEb24ndCBmYWlsIHNraXBwZWQgUGVybCB0ZXN0cy4KLSAgICAgIC0gUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMKKyAgICAgIC0gQWRkIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDE1NGRpc21hbnBpbmdtaWJfc2ltcGxlCisgICAgICAtIEF2b2lkIGZhbHNlIG5lZ2F0aXZlIGZvciBUMTE0YWdlbnR4YWdlbnR4dHJhcF9zaW1wbGUgY2F1c2VkIGJ5IHRoZQorCXRlc3QgcmVzdWx0IGJlaW5nIHByZXNlbnQgaW4gdGhlIGhleCBkdW1wICgibW9zdGx5X2hhcm1sZXNzIikKKyAgICAgIC0gQ29udmVydCBzbm1wbGliL3Rlc3RfYmluYXJ5X2FycmF5LmMgaW50byB0d28gdW5pdCB0ZXN0cworICAgICAgLSBGaXggUGVybCByZWdyZXNzaW9uIHRlc3QgZmFpbHVyZXMgQWxsIFBlcmwgcmVncmVzc2lvbiB0ZXN0cyBwYXNzCisJbm93IG9uIExpbnV4IGFuZCBvbiBXaW5kb3dzIChNU1ZDKS4KKyAgICAgIC0gTWFrZSB0aGUgYXNuMSB0ZXN0IHBhc3MgZXZlbiBpZiBzdXBwb3J0IGZvciBvcGFxdWUgdHlwZXMgYXJlCisJcmVtb3ZlZC4KKyAgICAgIC0gUGVybCByZWdyZXNzaW9uIHRlc3RzOiBEb24ndCBmYWlsIHNraXBwZWQgdGVzdHMuCisgICAgICAtIFByb3RlY3QgdGhlIHVzZSBvZiAkT1NUWVBFIHRvIGVuc3VyZSB0aGF0ICd0ZXN0JyBnZXQgZW5vdWdoCisJcGFyYW1ldGVycy4KKyAgICAgIC0gUmVtb3ZlIGFuIGluY29ycmVjdCBjb21tZW50IGZyb20gc2ltcGxlX2V2YWxfdG9vbHMuc2gKKyAgICAgIC0gUmVtb3ZlIHVudXNlZCB2YXJpYWJsZQorICAgICAgLSBSZXF1aXJlIGEgc2VtaWNvbG9uIGFmdGVyIE9LKCksIE9LRigpIGFuZCBQTEFOKCkgQWxzbywgbGV0IE9LRigpCisJZW1pdCBhIHNpbmdsZSBsaW5lIG9mIG91dHB1dCBzdWNoIHRoYXQgYWxsIG91dHB1dCBpdCBwcm9kdWNlcyBpcworCXZpc2libGUgaW4gdGhlIG91dHB1dCBvZiAibWFrZSB0ZXN0Ii4KKyAgICAgIC0gW0JVRyAzNDc0NTkwXTogRG9uJ3QgbWF0Y2ggdW5kZXJzY29yZXMgd2l0aGluIHRoZSBzb3VyY2Ugcm9vdAorCWZpbGVuYW1lCisgICAgICAtIEFkZCB0ZXN0IGNhc2VzIGZvciBzbm1wX3NlcnZpY2UKIAotICAgIEFJWDoKLSAgICAgIC0gRWxpbWluYXRlIGNvbmZpZ3VyZSB3YXJuaW5nIHJlZ2FyZGluZyBsaWJwZXJmc3RhdC5oIChBSVggNi4xZmYpCisgICAgdW5zcGVjaWZpZWQ6CisgICAgICAtIEFkZGVkIENWRlMgKENlbnRyYVZpc2lvbiBGaWxlIFN5c3RlbSkgdG8gaHJTdG9yYWdlVGFibGUgYW5kCisJaHJGU1RhYmxlLgorICAgICAgLSBSZW1vdmVkIGNvdW50ZXItNjQgZXJyb3IgbWVzc2FnZXMuICAgVGhlc2UgbWVzc2FnZXMgZG8gbm90IHNheQorCWVueXRoaW5nIHVzZWZ1bCwgY2FsbGVyIHNob3VsZCBjaGVjayB0aGVpciByZXR1cm4gdmFsdWUgYW5kIHJlcG9ydAorCWl0LgorICAgICAgLSBBZGRlZCBPQ0ZTMiAoT3JhY2xlIENsdXN0ZXIgRlMpIHRvIGhyU3RvcmFnZVRhYmxlIGFuZCBockZTVGFibGUKKyAgICAgIC0gW0JVRyAzNDQ0OTM5XTogQlVHOiAxNzk2ODg2OiBzbm1wbGliOiBBdm9pZCB0aGF0CisJc3ByaW50X3JlYWxsb2Nfb2N0ZXRfc3RyaW5nKCkgZW1iZWRzIHVucHJpbnRhYmxlIGNvbnRyb2wgY2hhcmFjdGVycworCW9yIGJpbmFyeSB6ZXJvZXMgaW4gaXRzIG91dHB1dC4gVGhpcyBiZWhhdmlvciBjb3VsZCBjYXVzZSB0cnVuY2F0ZWQKKwlvdXRwdXQgaW4gc25tcHRyYXBkLgorICAgICAgLSBbQlVHIDM0NTIwNjldOiBGaXggc25tcHRyYXBfb2lkIGRlY2xhcmF0aW9uIGluIG1pYjJjIGdlbmVyYXRlZCBjb2RlCisJVGhpcyBidWcgd2FzIGludHJvZHVjZWQgY29uc2lkZXJhYmxlIHRpbWUgYWdvLiBJdCBkaWQgYWxyZWFkeSBleGlzdAorCWF0IHRoZSB0aW1lIHRoZSA1LjYgYnJhbmNoIHdhcyBjcmVhdGVkIChzZWUgYWxzbyBjb21taXQKKwkwZWMwODhhZmEyN2NmZGE0ZTZlYTc4YWFlN2NmYzU1MDc1NjRlZGRlKS4KKyAgICAgIC0gW0JVRyAzNDU0MTY4XTogY29uZmlndXJlOiBGaXggYnVpbGRpbmcgd2l0aCAtLWVuYWJsZS1yZWFkLW9ubHkKKyAgICAgIC0gW1BBVENIIDM0MTg2NDldOiBIT1NULVJFU09VUkNFUy1NSUI6IFVzZSBwY2xvc2UoKSBpbnN0ZWFkIG9mCisJZmNsb3NlKCkgdG8gY2xvc2UgYSBwaXBlLgorICAgICAgLSBbQlVHIDM1NDA2MjFdOiBkaXN0OiBBZGQgbWlzc2luZyBQcm92aWRlczogdG8gbmV0LXNubXAtcGVybG1vZHMgUlBNCisJc3BlYworCisgICAgQlNEOgorCisgICAgQnVnIDMxNTI4NDE6CisgICAgICAtIERvIG5vdCBpbnN0YWxsIHRoZSB1dGlsX2Z1bmNzIHN1YmhlYWRlcnMgdGhhdCB3ZXJlIHJlbW92ZWQgaW4gNS43CisgICAgICAtIEluc3RhbGwgdXRpbF9mdW5jcyBzdWJoZWFkZXJzCisgICAgICAtIEluc3RhbGwgdXRpbF9mdW5jcyBzdWJoZWFkZXJzIGludHJvZHVjZWQgaW4gNS42CiAKICAgICBDeWd3aW46CiAgICAgICAtIE1ha2UgZGF0ZV9uX3RpbWUoKSBwcm9kdWNlIHRpbWUgem9uZSBpbmZvcm1hdGlvbgotICAgICAgLSBGaXggZ2V0X3VwdGltZSgpIC8gaHJTeXN0ZW1VcHRpbWUgaW1wbGVtZW50YXRpb24KKworICAgIEN5d2luOgorICAgICAgLSBBZ2VudDogSW1wbGVtZW50IGdldF91cHRpbWUoKSBzdWNoIHRoYXQgcXVlcnlpbmcKKwlIT1NULVJFU09VUkNFUy1NSUI6OmhyU3lzdGVtVXB0aW1lIHJldHVybnMgYSBub24temVybyB2YWx1ZS4KIAogICAgIEZyZWVCU0Q6Ci0gICAgICAtIFtQQVRDSCAzNDg5Mzg3XTogSW5zdGFsbCBGcmVlQlNEIDEwIGhlYWRlciBmaWxlIChwbHVzIG90aGVyIG1pc3NpbmcgdmVyc2lvbnMpCiAgICAgICAtIFJlc3RvcmUgSVBfUkVDVkRTVEFERFIgZnVuY3Rpb25hbGl0eS4KKyAgICAgIC0gU25tcGQgKyBhcHBzOiBTZW5kaW5nIFVEUCBwYWNrZXRzIHdvcmtzIGFnYWluIGZvciBub24tcm9vdCB1c2VycworICAgICAgLSBbUEFUQ0ggMzQ4OTM4N106IEluc3RhbGwgRnJlZUJTRCAxMCBoZWFkZXIgZmlsZSAocGx1cyBvdGhlciBtaXNzaW5nCisJdmVyc2lvbnMpCiAKICAgICBMaW51eDoKLSAgICAgIC0gW1BBVENIIDMyMDU4MTFdOiBPcHRpb24gdG8gc2tpcCBmZC9sb29wL3JhbSBkZXZpY2VzIGluIGRpc2tJT1RhYmxlCi0gICAgICAtIFtQQVRDSCAzNTI1OTk4XTogRG9uJ3QgdXNlIGFuIHVuaW5pdGlhbGlzZWQgdmFsdWUgaW4gZXJyb3IgbWVzc2FnZQorICAgICAgLSBQQVRDSDogMzUyNTk5ODogRG9uJ3QgdXNlIGFuIHVuaW5pdGlhbGlzZWQgdmFsdWUgaW4gZXJyb3IgbWVzc2FnZQorICAgICAgLSBbUEFUQ0ggMzUzNjQyMF06IEVuc3VyZSBzbmQvcmN2IG1lbW9yeSBidWZmZXJzIGFyZSBzdWl0YWJseSBhbGlnbmVkCisJUGF0Y2ggcHJvdmlkZWQgYnkgVHlsZXIgT2xtc3RlYWQKIAogICAgIE1pbkdXOgotICAgICAgLSBBdm9pZCAicHJhZ21hIGNvbW1lbnQiIHdhcm5pbmdzIGluIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KLSAgICAgIC0gTWFkZSByZWdyZXNzaW9uIHRlc3Qgb3V0cHV0IGluZGVwZW5kZW50IG9mIFdpbmRvd3MgcmVnaXN0cnkgc2V0dGluZ3MKKyAgICAgIC0gTmV0LVNOTVAgUGVybCBtb2R1bGVzIGJ1aWxkIGFnYWluLgorICAgICAgLSBTdXBwb3J0IHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIG9mIHJlY2VudCBTaGluaW5nIExpZ2h0IE9wZW5TU0wKKwliaW5hcnkgZGlzdHJpYnV0aW9ucworICAgICAgLSBUZXN0aW5nOiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgdGVzdCBmcmFtZXdvcmsKKyAgICAgIC0gVGVzdGluZzogRml4IGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIHRlc3QgcnVubmVyCisgICAgICAtIFRlc3Rpbmc6IE1ha2UgdGVzdCBUMTMwc25tcHYxdmFjbWdldF9zaW1wbGUgcGFzcworICAgICAgLSBUZXN0aW5nOiBNYWtlIHRob3NlIHJlZ3Jlc3Npb24gdGVzdHMgcGFzcyBmb3Igd2hpY2ggU05NUENPTkZQQVRICisJYW5kL29yIFNOTVBfUEVSU0lTVEVOVF9ESVIgbWF0dGVyCisgICAgICAtIFRlc3Rpbmc6IE1ha2UgdW5pdC10ZXN0cy9UMDE0Z2V0aG9zdGJ5YWRkcl9jbGliIHBhc3MKKyAgICAgIC0gVGVzdGluZzogTWFrZSB1bml0LXRlc3RzL1QxMDJwZHVfYnVpbGRfY2xpYiBwYXNzLgorICAgICAgLSBUZXN0aW5nOiBPYnRhaW4gdGhlIE1TWVMgcGF0aCBmcm9tIHRoZSBlbnZpcm9ubWVudAogCi0gICAgTmV0QlNEOgotICAgICAgLSBVcGRhdGUgbWVtb3J5IGFuZCBDUFUgc3RhdGlzdGljcyBoYW5kbGluZwotCi0gICAgT3BlbkJTRDoKLSAgICAgIC0gU3VwcG9ydCB1cGRhdGluZyB0aGUgcm91dGluZyB0YWJsZQorICAgIFdpbjMyOgorICAgICAgLSBBdm9pZCB0aGF0IGNvbXBpbGluZyB0aGUgaGVhZGVyIGZpbGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorCXdpdGggdGhlIE1pbkdXIGdjYyBjb21waWxlciB0cmlnZ2VycyB3YXJuaW5ncyBhYm91dCAicHJhZ21hCisJY29tbWVudCIuCisgICAgICAtIEF2b2lkIHRoYXQgdGhlIFBBQ0tBR0VfKiBtYWNyb3MgZGVmaW5lZCBpbgorCTxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4gY2F1c2UgdHJvdWJsZSB3aGVuIGluY2x1ZGluZyB0aGlzCisJaGVhZGVyIGluIGEgcGFja2FnZSB0aGF0IHVzZXMgdGhlIEdOVSBhdXRvdG9vbHMuCisgICAgICAtIEJ1aWxkaW5nOiBCdWlsZHMgbm93IGNvcnJlY3RseSB3aXRoIGEgNjQtYml0IGNvbXBpbGVyLiBnaXQtc3ZuLWlkOgorCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDEKKwk5NDU4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgICAgLSBTbm1wZDogUmVtb3ZlIGRsbW9kCiAKICAgICBXaW5kb3dzOgotICAgICAgLSBBdm9pZCBwcm9ibGVtcyBpZiBOZXQtU05NUCBQZXJsIG1vZHVsZXMgYXJlIGJ1aWx0IHdpdGggYSBkaWZmZXJlbnQKLQl2ZXJzaW9uIG9mIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIHRoYW4gdGhhdCB1c2VkIGZvciBBY3RpdmVQZXJsCi0gICAgICAtIEF2b2lkIHByb2JsZW1zIHdpdGggUEFDS0FHRV8qIG1hY3JvcyB3aGVuIHVzaW5nIEdOVSBhdXRvdG9vbHMuCi0gICAgICAtIE5vdyBidWlsZHMgY29ycmVjdGx5IHdpdGggYSA2NC1iaXQgY29tcGlsZXIuCi0gICAgICAtIGJ1aWxkLmJhdDogR2VuZXJhdGUgUERCIGZpbGVzIGluIHJlbGVhc2UgbW9kZS4KLSAgICAgIC0gYnVpbGQuYmF0OiBJbnN0YWxsIG5ldHNubXAuZGxsIGJlZm9yZSBydW5uaW5nIFBlcmwgcmVncmVzc2lvbiB0ZXN0cwotICAgICAgLSBEZXByZWNhdGVkIGxpYnNubXAuZGVmIC0gdXNlIE5FVFNOTVBfSU1QT1JUIGluc3RlYWQKLSAgICAgIC0gRml4IHdpbkV4dERMTCBjb21waWxlciB3YXJuaW5ncyAoZm9sbG93aW5nIHVfbG9uZyBvaWQgdHlwZWRlZikKLSAgICAgIC0gTWFrZSBsaW5raW5nIHdpdGggcmVjZW50IE9wZW5TU0wgYmluYXJpZXMgc3VjY2VlZC4KLSAgICAgIC0gTWFrZSBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoKSByb2J1c3QgYWdhaW5zdCBtZW1hbGxvYyBmYWlsdXJlcy4KLSAgICAgIC0gUGVybCBtb2R1bGVzIGJ1aWxkIG5vdyB3aXRoIElQdjYgZW5hYmxlZC4KLSAgICAgIC0gU25tcGQ6IFJlbW92ZSBkbG1vZAorICAgICAgLSBCdWlsZGluZyAoYnVpbGQuYmF0KTogSW5zdGFsbCBuZXRzbm1wLmRsbCBiZWZvcmUgcnVubmluZyB0aGUgUGVybAorCXJlZ3Jlc3Npb24gdGVzdHMgc3VjaCB0aGF0IHRoZSByZWdyZXNzaW9uIHRlc3RzIGFyZSBydW4gd2l0aCB0aGUKKwljb3JyZWN0IHZlcnNpb24gb2YgbmV0c25tcC5kbGwuCisgICAgICAtIE1TVkM6IEF2b2lkIHRoYXQgdGhlIHR5cGVkZWZzIGluIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKwljb25mbGljdCB3aXRoIHRob3NlIGluIDxzdGRpbnQuaD4gZnJvbSB0aGUgbXNpbnR0eXBlcyBwcm9qZWN0CisgICAgICAtIE1TVkM6IExpbmsgd2l0aCBwcm9wZXIgbGliZWF5MzIgbGlicmFyeQorICAgICAgLSBNU1ZDOiBXaGVuIGxpbmtpbmcgd2l0aCBPcGVuU1NMLCBsaW5rIHdpdGggdXNlcjMyLmxpYiB0b28KKyAgICAgIC0gTWFrZSBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoKSByb2J1c3QgYWdhaW5zdCBtZW1vcnkgYWxsb2NhdGlvbgorCWZhaWx1cmVzLiBNYWtlIE5FVFNOTVBfTEFSR0VfRkRfWkVSTygpIHVzZSBtZW1zZXQoKSBvbiBVbml4IHN5c3RlbXMKKwlpbnN0ZWFkIG9mIGFuIGV4cGxpY2l0IGxvb3AuIE1ha2Ugc3VyZSB0aGF0IG9uIFVuaXggc3lzdGVtcworCW5ldHNubXBfbGFyZ2VfZmRfY2xyKCkgZG9lc24ndCB0cnkgdG8gcmVhZCBtZW1vcnkgaXQgaXNuJ3QgYWxsb3dlZAorCXRvIHJlYWQgaWYgdGhlIGZpcnN0IGFyZ3VtZW50IGVxdWFscyAtMSAoYSB2YWx1ZSB0aGF0IHNob3VsZG4ndCBiZQorCXBhc3NlZCBieSB0aGUgY2FsbGVyKS4gTWFrZSBuZXRzbm1wX2xhcmdlX2ZkX2lzX3NldCgpIHJldHVybiBmYWxzZQorCW9uIFVuaXggc3lzdGVtcyBpZiB0aGUgZmlyc3QgYXJndW1lbnQgZXF1YWxzIC0xIChhIHZhbHVlIHRoYXQKKwlzaG91bGRuJ3QgYmUgcGFzc2VkIGJ5IHRoZSBjYWxsZXIpLiBNYWtlCisJbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKCkgc2hyaW5rIGJlaGF2aW9yIGNvcnJlY3QuCisgICAgICAtIFBlcmwgKGJ1aWxkLmJhdCk6IFdoZW4gaW5zdGFsbGluZyBkZXZlbG9wbWVudCBmaWxlcywgaW5zdGFsbCB0aGUKKwlQREIgZmlsZXMgdG9vLgorICAgICAgLSBSZW1vdmUgc3VwZXJmbHVvdXMgbGluayBsaWJyYXJpZXMgZnJvbSBwcm9qZWN0IGZpbGVzICgqLmRzcCkKICAgICAgIC0gU25tcHRyYXBkOiBNYWtlIHRoZSBJUCBhZGRyZXNzIHRvIGhvc3RuYW1lIGNvbnZlcnNpb24gd29yaworICAgICAgLSBUZXN0aW5nOiBwZXJsOiBGaXggYW4gaW5jb3JyZWN0IG1lc3NhZ2UgcHJpbnRlZCB3aGlsZSBydW5uaW5nIHRoZQorCVBlcmwgbW9kdWxlIHJlZ3Jlc3Npb24gdGVzdHMKIAogCi0qNS42LjEqCiAKLSAgICBnZW5lcmFsOgotICAgICAgLSBVcGdyYWRlZCBEVExTIHN1cHBvcnQgZnJvbSBhbHBoYSB0byBmdWxsOyBtZW50aW9uIHRoYXQgdHNtIGlzCi0JbmVlZGVkIGZvciBUTFMgdG9vCiAKKyo1LjcuMSoKKworICAgIHNubXBsaWI6CisgICAgICAtIEZpeCBhIGNyYXNoIHRoYXQgY291bGQgYmUKKyAgICAgIC0gdHdlYWsgcGF0Y2ggMzA0NDg4OCB0byByZXN0b3JlCisKKyAgICBzbm1wZDoKKyAgICAgIC0gW1BBVENIIDMzODY2MzNdOiBmaXggaW50ZWdlciBvdmVyZmxvdyBpbiBkaXNrIHBlcmNlbnQgY2FsY3VsYXRpb25zCisgICAgICAtIE1ha2UKKyAgICAgIC0gUmVzdG9yZSBzdG9yYWdlIHRhYmxlcyBvbiBMaW51eAorICAgICAgLSBydW4gc2lnbmFsIGhhbmRsZXJzIHdoZW4gc2VsZWN0KCkKKworICAgIHNubXB0cmFwZDoKKyAgICAgIC0gQWRkIG1pc3NpbmcgbmV3bGluZQorICAgICAgLSBJbnZva2Ugc2h1dGRvd25fcGVybCgpIHdoZW4KKworICAgIGJ1aWxkaW5nOgorICAgICAgLSBbUEFUQ0ggMzM4Mzk1MV06IEZpeCAtV3VudXNlZCBjb21waWxlIHdhcm5pbmdzIHdpdGggRnJlZUJTRC9OZXRCU0QKKwlTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKyAgICAgIC0gYnVpbGQgZml4CisgICAgICAtIGJ1aWxkIGZpeCBmb3Igc3lzdGVtcyBsYWNraW5nCisKKyAgICBsaWJuZXRzbm1wOgorICAgICAgLSBbUEFUQ0ggMzM4NzEzOV06IGZyb20KKworICAgIG1hbjoKKyAgICAgIC0gW1BBVENIIDMzMTI4NjFdOiBNYW4gcGFnZXMKKworICAgIHRlc3Rpbmc6CisgICAgICAtIENoYW5nZWQKKyAgICAgIC0gQ2hlY2sgUElEIGZpbGUgZXhpc3RlbmNlIGFmdGVyIGhhdmluZyByZWFkIGl0IGluc3RlYWQgb2YgYmVmb3JlLgorCVRoaXMgZml4ZXMgdGhlIHJhY2UgY29uZGl0aW9uIHdoZXJlIHRoZSBQSUQgZmlsZSBkaXNhcHBlYXJlZCBhZnRlcgorCXRoZSBleGlzdGVuY2UgY2hlY2sgYW5kIGJlZm9yZSBpdCB3YXMgcmVhZC4KKyAgICAgIC0gTWFrZSB0aGUgU05NUF9WRVJCT1NFPTEgb3V0cHV0IGV2ZW4gbW9yZSB2ZXJib3NlLgorCisgICAgdW5zcGVjaWZpZWQ6CisgICAgICAtIG1pbm9yIE5FV1MgcG9saXNoCisKKyAgICBQZXJsOgorICAgICAgLSBSZW1vdmUgZmlsZSBwZXJsL05ldFNOTVAueHMKKworICAgIFdpbjMyOgorICAgICAgLSBBZGQgc3VwcG9ydCBmb3IKKyAgICAgIC0gRG9jdW1lbnQgaG93IHRvIGJ1aWxkIDY0LWJpdAorICAgICAgLSBEb2N1bWVudGVkIGhvdyB0byB1c2UgYnVpbGQuYmF0IHdpdGgKKyAgICAgIC0gd2luRXh0RExMOiBJbnZva2UKKworICAgIFdpbmRvd3M6CisgICAgICAtIEF2b2lkIHRoYXQgaWYKKyAgICAgIC0gUmVtb3ZlIG91dGRhdGVkIGluc3RydWN0aW9ucyBhYm91dAorCisqNS43KgogICAgIHNubXBsaWI6CiAgICAgICAtIEFkZGVkIGZ1bmN0aW9uIG5ldHNubXBfZGVsZXRlX3RhYmxlX2RhdGFfc2V0KCkuCiAgICAgICAtIEFkZGVkIGZ1bmN0aW9uIG5ldHNubXBfZGVsZXRlX3RhYmxlX2RhdGFfc2V0KCkuIEFkZGVkIGRlY2xhcmF0aW9uCkBAIC0xMjMsMjAgKzUwNCwzOSBAQAogICAgICAgLSBBZGRlZCBmdW5jdGlvbiBuZXRzbm1wX2RlbGV0ZV90YWJsZV9kYXRhX3NldCgpLiBBZGRlZCBkZWNsYXJhdGlvbgogCWZvciB0aGUgZnVuY3Rpb24gbmV0c25tcF90YWJsZV9kYXRhX2RlbGV0ZV90YWJsZSgpIGluIGEgcHVibGljCiAJYWdlbnQgaGVhZGVyIGZpbGUuIEZpeGVkIG1lbW9yeSBsZWFrIGluCi0JbmV0c25tcF90YWJsZV9kYXRhX2RlbGV0ZV90YWJsZSgpLiAoQmFja3BvcnRlZCByMTk0NTAgYW5kIHIxOTQ1NAotCWZyb20gdHJ1bmsuKQorCW5ldHNubXBfdGFibGVfZGF0YV9kZWxldGVfdGFibGUoKS4KKyAgICAgIC0gQWRkZWQgZnVuY3Rpb24gbmV0c25tcF9kZWxldGVfdGFibGVfZGF0YV9zZXQoKS4gQWRkZWQgZGVjbGFyYXRpb24KKwlmb3IgdGhlIGZ1bmN0aW9uIG5ldHNubXBfdGFibGVfZGF0YV9kZWxldGVfdGFibGUoKSBpbiBhIHB1YmxpYworCWFnZW50IGhlYWRlciBmaWxlLiBGaXhlZCBtZW1vcnkgbGVhayBpbgorCW5ldHNubXBfdGFibGVfZGF0YV9kZWxldGVfdGFibGUoKS4gRml4ZWQgbWVtb3J5IGxlYWsgdHJpZ2dlcmVkIGJ5CisJdW5yZWdpc3RlcmluZyBhIHRhYmxlIGhhbmRsZXIuCiAgICAgICAtIEFkZGVkIG1hY3JvIG5ldHNubXBfc3RhdGljX2Fzc2VydCgpLgorICAgICAgLSBBZGRlZCBuZXRzbm1wX21pYl9oYW5kbGVyLmRhdGFfY2xvbmUsIGEgZnVuY3Rpb24gcG9pbnRlciB0aGF0CisJZGVmaW5lcyBob3cgdG8gY2xvbmUgbmV0c25tcF9taWJfaGFuZGxlci5teXZvaWQuIE11c3QgYmUgZGVmaW5lZCBpZgorCWFuZCBvbmx5IGlmIGRhdGFfZnJlZSBpcyBzZXQuIFRoZSBmdW5jdGlvbiBuZXRzbm1wX2hhbmRsZXJfZHVwKCkKKwlkb2VzIG5vdyBjbG9uZSBNSUIgaGFuZGxlciBwcml2YXRlIGRhdGEgaWYgZGF0YV9jbG9uZSgpIGlzIHNldC4KKwlQcmV2aW91c2x5IGFmdGVyIGR1cGxpY2F0aW5nIGEgTUlCIGhhbmRsZXIgYW5kIHVucmVnaXN0ZXJpbmcgb25lIG9mCisJdGhlIHR3byBNSUIgaGFuZGxlcnMsIHRoZSBwcml2YXRlIGRhdGEgcG9pbnRlciAobXl2b2lkKSBvZiB0aGUKKwlvdGhlciBiZWNhbWUgYSBkYW5nbGluZyBwb2ludGVyLiBOb3RlOiBhZGRpdGlvbiBvZgorCW5ldHNubXBfbWliX2hhbmRsZXIuZGF0YV9jbG9uZSBpcyBhbiBBQkkgY2hhbmdlLgogICAgICAgLSBBZGRlZCBzbm1wX3Nlc3Nfc2Vzc2lvbl9sb29rdXAoKS4KKyAgICAgIC0gQWRkZWQgdGhlIGZ1bmN0aW9uIG5ldHNubXBfY2hlY2tfZGVmaW5lZG5lc3MoKSwgd2hpY2ggaGVscHMgdG8gZmluZAorCXRoZSBjYXVzZSBvZiB1bmRlZmluZWQgdmFsdWUgZXJyb3JzIGFzIHJlcG9ydGVkIGJ5IFZhbGdyaW5kLgogICAgICAgLSBBdm9pZCB0aGF0IFZhbGdyaW5kIGNvbXBsYWlucyBhYm91dCB1bmluaXRpYWxpemVkIGRhdGEgZm9yIHRoZQogCWJ1ZmZlcnMgcmV0dXJuZWQgYnkgbmV0c25tcF9jYWxsYmFja19yZWN2KCkgYW5kCiAJbmV0c25tcF9jYWxsYmFja19ob29rX2J1aWxkKCkuCiAgICAgICAtIEJlIGNvbnN0IGNvcnJlY3Qgb3ZlciBjYWxscyB0byBzdHIqIGZ1bmN0aW9ucy4KICAgICAgIC0gQ2hhbmdlZCB0aGUgYXJndW1lbnQgdHlwZSBvZiBkZWJ1Z19yZWdpc3Rlcl90b2tlbnMoKSBmcm9tIGNoYXIgKgotCWludG8gY29uc3QgY2hhciAqLiAoQmFja3BvcnRlZCByMTk2NjUgYW5kIHIxOTY2NiBmcm9tIHRoZSB0cnVuay4pCisJaW50byBjb25zdCBjaGFyICouCisgICAgICAtIENoZWNrIHRoYXQgdGhlIGFyZ3VtZW50IHRvIG5ldHNubXBfdHJhbnNwb3J0X2NvcHkgaXMgbm9uLU5VTEwKICAgICAgIC0gQ2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiBzdHJkdXAgaW4gbmV0c25tcF9jcmVhdGVfZGF0YV9saXN0IGFuZAogCWZhaWwgaWYgc3RyZHVwIGZhaWxzLgogICAgICAgLSBDb3JyZWN0IHRoZSBleHRlcm4gIkMiIGRlY2xhcmF0aW9ucyB0byBiZSBjb25zaXN0ZW50LiBSZW1vdmUKIAljb21tZW50ZWQgb3V0IGNvZGUuCisgICAgICAtIEZlbm5lcjogZml4IHNlbmRpbmcgb2YgVURQIHJlc3BvbnNlcyBmcm9tIG11bHRpaG9tZWQgYWdlbnRzLiBUcnkgdG8KKwlzZW5kIHRoZSByZXNwb25zZSBhcyBpdCB3YXMgYmVmb3JlIE5ldC1TTk1QIDUuNiAoYXNzdW1pbmcgdGhlCisJYXBwcm9wcmlhdGUgcmVxdWVzdCB3YXMgdW5pY2FzdCkgYW5kIG9ubHkgaWYgaXQgZmFpbHMgdHJ5IHRvIHNldAorCWlmX2luZGV4ICh0aGUgcmVxdWVzdCBtdXN0IGJlIGJyb2FkY2FzdCkuCiAgICAgICAtIEZpeGVkIGJ1Z3MgaW4gYXNuX3BhcnNlX3Vuc2lnbmVkX2ludDY0KCksCiAJYXNuX2J1aWxkX3Vuc2lnbmVkX2ludDY0KCksIGFzbl9wYXJzZV9zaWduZWRfaW50NjQoKSBhbmQKIAlhc25fYnVpbGRfc2lnbmVkX2ludDY0KCkuIE1vc3QgYnV0IG5vdCBhbGwgb2YgdGhlc2UgYnVncyB3ZXJlCkBAIC0xNjEsMjQgKzU2MSwxMDEgQEAKIAlieSB0aGUgKHVuZG9jdW1lbnRlZCkgc25tcGQuY29uZiAiZW51bSIga2V5d29yZCBoYW5kbGVyIC0gc3RvcmluZwogCXBvaW50ZXJzIHRvIHN0cmluZ3MgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBpbiBhIGdsb2JhbCBsaXN0IGRvZXMKIAlub3Qgd29yay4KLSAgICAgIC0gSW52b2tpbmcgc2VfY2xlYXJfc2xpc3QoKSBkb2VzIG5vIGxvbmdlciBjcmVhdGUgYSBkYW5nbGluZyBwb2ludGVyLgotCUZpeGVkIGxlYWtzLWF0LWV4aXQgdHJpZ2dlcmVkIGJ5IHVzaW5nIHRoZSBzbm1wX2VudW0gY29kZS4KLQlEb2N1bWVudGVkIGJlaGF2aW9yIG9mIHNlX2FkZF9wYWlyKCksIHNlX2FkZF9wYWlyX3RvX3NsaXN0KCkgYW5kCi0JY2xlYXJfc25tcF9lbnVtKCkuIE1hZGUgc25tcF9lbnVtIGV4YW1wbGUgY29uc2lzdGVudCB3aXRoIHRoZSByZXN0Ci0Jb2YgdGhlIGNvZGUgYnkgYWRkaW5nIHN0cmR1cCgpIGNhbGxzIGFuZCBhZGRlZCBhIGNhbGwgdG8KLQlzZV9jbGVhcl9hbGxfbGlzdHMoKS4gRml4ZWQgYSBtZW1vcnkgY29ycnVwdGlvbiBwcm9ibGVtIHRyaWdnZXJlZAotCWJ5IHRoZSAodW5kb2N1bWVudGVkKSBzbm1wZC5jb25mICJlbnVtIiBrZXl3b3JkIGhhbmRsZXIgLSBzdG9yaW5nCi0JcG9pbnRlcnMgdG8gc3RyaW5ncyBhbGxvY2F0ZWQgb24gdGhlIHN0YWNrIGluIGEgZ2xvYmFsIGxpc3QgZG9lcwotCW5vdCB3b3JrLiAKKyAgICAgIC0gUmVtb3ZlIHRoZSBzdXBwb3J0IGZvciBDTVUgY29tcGF0aWJpbGl0eSBzaW5jZSB0aGVyZSBpcyBubyB3YXkgdG8KKwllbmFibGUgaXQgYW5kIG5vYm9keSBoYXZlIG1pc3NlZCBpdC4KKyAgICAgIC0gW0JVRyAzMTM0MzIzXTogRml4IGNyYXNoIHdoZW4gY29tcGFyaW5nIGludmFsaWQgT0lEcworICAgICAgLSBbUEFUQ0ggMzE2NTg3OF06IENhdGNoIGJ1ZmZlciBvdmVycnVuIG9uIDY0LWJpdCBzeXN0ZW1zCisgICAgICAtIFtQQVRDSCAzMTk1NTM3XTogTWlub3IgYmluYXJ5X2FycmF5IGNvbnRhaW5lciBzb3J0IG9wdGltaXphdGlvbgorICAgICAgLSBbUEFUQ0ggMzIwMzgwNl06IEFkZCB0aGUgZnVuY3Rpb24gbmV0c25tcF9sYXJnZV9zZWxlY3QoKS4KKyAgICAgIC0gW1BBVENIIDMyMDM4MDZdOiBNYWtlIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZSgpIGNsZWFyIGFsbAorCXJlbGV2YW50IGZpbGUgZGVzY3JpcHRvcnMuCisgICAgICAtIFtQQVRDSCAzMjAzODA2XTogTWlub3IgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIG9mCisJbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKCkuCisgICAgICAtIGFkZCBJUHY2IHN1cHBvcnQgdG8gRFRMU1VEUCB0cmFuc3BvcnQKKyAgICAgIC0gYWRkIElQdjYgc3VwcG9ydCB0byBEVExTVURQIHRyYW5zcG9ydCB1c2UgbmV3CisJbmV0c25tcF9zb2NrYWRkcl9zdG9yYWdlIGluIG5ldHNubXBfYWRkcl9wYWlyCisgICAgICAtIGFkZCBJUHY2IHN1cHBvcnQgdG8gRFRMU1VEUCB0cmFuc3BvcnQgdXNlIG5ldworCW5ldHNubXBfc29ja2FkZHJfc3RvcmFnZSBpbiBuZXRzbm1wX2FkZHJfcGFpciBhZGQgYmFzZV90cmFuc3BvcnQKKwlwdHIgZm9yIHR1bm5lbGVkIHRyYW5zcG9ydHMKKyAgICAgIC0gYWRkIG1vcmUgb3BlbnNzbCBlcnJvciBjYXNlcyB3aGVyZSB3ZSBjaGVjayBmb3IgbG9jYWwgY2VydAorICAgICAgLSBhZGQgbmV3IHRyYW5zcG9ydCBjb25maWcgdG9rZW5zIGxvY2FsQ2VydC9wZWVyQ2VydCwgZGVwcmVjYXRlCisJb3VyX2lkZW50aXR5LCB0aGVpcl9pZGVudGl0eQorICAgICAgLSBhZGQgb3B0aW9uYWwgc3VwcG9ydCBmb3IgbG9jYWwgRE5TU0VDIHZhbGlkYXRpb24gb2YgaG9zdG5hbWVzCS0KKwlvcHRpb25hbCBhdCBjb25maWd1cmUgdGltZTogLS13aXRoLWxvY2FsLWRuc3NlYy12YWxpZGF0aW9uIC0KKwlyZXF1aXJlcyBETlNTRUMtVG9vbCB2YWxpZGF0aW9uIGxpYnJhcmllcyAtIGluaXRpYWwgc3VwcG9ydCwgZm9yCisJc3lzdGVtcyB3aXRoIGdldGFkZHJpbmZvLiBzdXBwb3J0IGZvciBhZGRpdGlvbmFsIHJlc29sdmVyCisJaW50ZXJmYWNlcyBjb21pbmcgc29vbi4gLSBhbHNvIFRPRE86IGZsYWcgZm9yIGlnbm9yaW5nIHZhbGlkYXRvaW4KKwllcnJvcnMgKGxvZyAmIGNvbnRpbnVlKQorICAgICAgLSBkb250IHJldHVybiBlbXB0eSBhcnJheQogICAgICAgLSBmb3JjZSBhIDsgYXQgdGhlIGVuZCBvZiB0aGUgc3RhdGljX2Fzc2VydCBtYWNyby4KKyAgICAgIC0gaW50cm9kdWNlIG5ldyBsb2NhbENlcnQvcGVlckNlcnQsIGRlcHJlY2F0ZSBzZXJ2ZXJDZXJ0LCBjbGllbnRDZXJ0LAorCWRlZlg1MDlTZXJ2ZXJQdWIsIGRlZlg1MDlDbGllbnRQdWIKICAgICAgIC0gbmV0c25tcF9oYW5kbGVyX2R1cCgpOiBmcmVlaW5nIHRoZSBkdXBsaWNhdGVkIGhhbmRsZXIgbm8gbG9uZ2VyCiAJY2F1c2VzIGEgY3Jhc2ggKGRvdWJsZSBmcmVlKSB3aGVuIGhhbmRsZXItPm15dm9pZCBvZiB0aGUgb3JpZ2luYWwKIAloYW5kbGVyIHdhcyBub24tTlVMTC4KKyAgICAgIC0gcmVhbGxvYytpbml0IGluc3RlYWQgb2YgY2FsbG9jIGluc3BpcmVkIGJ5IHBhdGNoIDMxOTU1MzIgZnJvbQorCVN0ZXBoZW4gSGVtbWluZ2VyCisgICAgICAtIHJlZmluZSBjZXJ0IGRlYnVnZ2luZzsgcmVtb3ZlIHVudXNlZCBmdW5jdGlvbgorICAgICAgLSByZW1vdmUgaW5saW5lIHZlcnNpb25zIG9mIGNvbnRhaW5lciBmdW5jcworICAgICAgLSBzbm1wX3NodXRkb3duKCk6IGFkZGVkIGNhbGwgdG8gbmV0c25tcF9jZXJ0c19zaHV0ZG93bigpLgorICAgICAgLSAwIEFwcGxpZWQgdGhlIGludGVudCBvZiBwYXRjaCAzMDQ0ODg4IHRvIGFsbG93IGFwcGxpY2F0aW9ucyB0byByZWFkCisJdGhlIGVycm9yIG1lc3NhZ2VzIG9mIGEgTUlCIHBhcnNpbmcgZmFpbHVyZS4KKyAgICAgIC0gRml4ZWQgYSBtZW1vcnkgbGVhayBpbiBzbm1wX2ZyZWVfc2Vzc2lvbigpLgorICAgICAgLSBbQlVHIDMxODQ2OTddOiBEb24ndCByZWZlcmVuY2UgaW50ZXJuYWwgTUQ1IHdoZW4gaXQncyBleHBsaWNpdGx5CisJZGlzYWJsZWQKKyAgICAgIC0gW0JVRyAzMjM0NzU0XTogRW5zdXJlIG9sZCBmX2NyZWF0ZV9mcm9tX3RzdHJpbmcgaG9vayBpcyBpbml0aWFsaXplZAorCXRvIE5VTEwKKyAgICAgIC0gW0JVRyAzMjY0ODUyXTogUmVjb2duaXNlIG1pc3NpbmcgcmVwb3J0IHR5cGVzCisJKHNubXB7VW5hdmFpbGFibGUsVW5rbm93bn1Db250ZXh0cyxzbm1wVW5rbm93blBEVUhhbmRsZXJzKQorICAgICAgLSBfbWliaW5kZXhfYWRkKCkgbm8gbG9uZ2VyIHJlYWRzIHBhc3QgdGhlIGVuZCBvZiB0aGUgZHluYW1pY2FsbHkKKwlhbGxvY2F0ZWQgYXJyYXkgX21pYmluZGV4ZXMuCisgICAgICAtIFtCVUcgMzE1MTg0NV06IGZpeCBtdWx0aXBsZSByZWdpc3RyYXRpb25zIG9mIHNubXAgdHJhbnNwb3J0IGhhbmRsZXIKKworICAgIHNubXA6CisgICAgICAtIHBhdGNoOiAzMDk2NzI1OiBzeXNPUlRhYmxlIHJlZ2lzdGF0aW9uIGZvciBub3RpZmljYXRpb24gbG9nIG1pYgorCW9yaWdpbmFsIHBhdGNoIGZpeGVkIHNldmVyYWwgaXNzdWVzLCBvdGhlciBwYXJ0cyBhcHBsaWVkIGVhcmxpZXIKIAogICAgIHNubXBkOgotICAgICAgLSBQYXRjaCAzMTQxNDYyOiBmcm9tIGZlbm5lcjogZml4IGFnZW50eCBzdWJhZ2VudCBpc3N1ZXMgd2l0aAotCW11bHRpcGxlLW9iamVjdCByZXF1ZXN0cwotICAgICAgLSBQYXRjaCBmcm9tIE5pZWxzIHRvIGZpeCBWQUNNIHBlcnNpc3RhbnQgc3RvcmFnZS4KKyAgICAgIC0gQWRkIG1pc3NpbmcgZnVuY3Rpb24gZGVjbGFyYXRpb24KKyAgICAgIC0gQWRkZWQgZnVuY3Rpb25zIG5ldHNubXBfaGFuZGxlcl9vd25zX3RhYnJlcSgpLAorCW5ldHNubXBfcmVnaXN0cmF0aW9uX293bnNfdGFicmVxKCksIG5ldHNubXBfaXRlcmF0b3JfY2xvbmUoKS4KKwlFeHBvcnRlZCBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2Nsb25lKCkuCisgICAgICAtIEFkZGVkIGZ1bmN0aW9ucyBuZXRzbm1wX2hhbmRsZXJfb3duc190YWJyZXEoKSwKKwluZXRzbm1wX3JlZ2lzdHJhdGlvbl9vd25zX3RhYnJlcSgpLCBuZXRzbm1wX2l0ZXJhdG9yX2Nsb25lKCkuCisJRXhwb3J0ZWQgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19jbG9uZSgpLiBNb2RpZmllZAorCW5ldHNubXBfaXRlcmF0b3JfZGVsZXRlX3RhYmxlKCkgc3VjaCB0aGF0IGl0IGZyZWVzIHRoZSB0YWJsZQorCXJlZ2lzdHJhdGlvbiBpbmZvcm1hdGlvbiBzdG9yZWQgaW4gYSB0YWJsZSBpdGVyYXRvciB0b28uIE1vZGlmaWVkCisJbmV0c25tcF9nZXRfdGFibGVfaXRlcmF0b3JfaGFuZGxlcigpIHN1Y2ggdGhhdCB0aGUgdGFibGUgaXRlcmF0b3IKKwlwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbiBpcyBmcmVlZCB3aGVuIHRoZSBhc3NvY2lhdGVkIGhhbmRsZXIgaXMKKwlmcmVlZC4gUmVzdG9yZWQgdGhlIGJlaGF2aW9yIG9mIG5ldHNubXBfZ2V0X3RhYmxlX2hhbmRsZXIoKSB0byB0aGF0CisJb2YgcjE5NDQ5LCB0aGF0IGlzLCBub3Qgc2V0dGluZyB1cCB0aGUgZGF0YV9mcmVlIHBvaW50ZXIgYmVjYXVzZQorCW5vdCBhbGwgY2FsbGVycyBvZiBuZXRzbm1wX2dldF90YWJsZV9oYW5kbGVyKCkgZXhwZWN0IHRoYXQgdGFibGUKKwlyZWdpc3RyYXRpb24gaW5mb3JtYXRpb24gaXMgZnJlZWQgd2hlbiB0aGUgYXNzb2NpYXRlZCBoYW5kbGVyIGlzCisJZnJlZWQuCisgICAgICAtIEFkZGVkIG5ldHNubXBfZ2V0X3RhYmxlX2l0ZXJhdG9yMigpLgorICAgICAgLSBBZGRlZCBuZXRzbm1wX2dldF90YWJsZV9pdGVyYXRvcjIoKS4gQWRkZWQKKwluZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yMigpLgorICAgICAgLSBBZGRlZCBuZXRzbm1wX2dldF90YWJsZV9pdGVyYXRvcjIoKS4gQWRkZWQKKwluZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yMigpLiBBZGRlZAorCW5ldHNubXBfaGFuZGxlcl9vd25zX2l0ZXJhdG9yX2luZm8oKS4KKyAgICAgIC0gQWRkZWQgbmV0c25tcF9nZXRfdGFibGVfaXRlcmF0b3IyKCkuIEFkZGVkCisJbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcjIoKS4gQWRkZWQKKwluZXRzbm1wX2hhbmRsZXJfb3duc19pdGVyYXRvcl9pbmZvKCkuIEZpeGVkIGxlYWstYXQtZXhpdCB0cmlnZ2VyZWQKKwlieSBzbm1wTm90aWZ5VGFibGUuCisgICAgICAtIEFkZGVkIG5ldHNubXBfZ2V0X3RhYmxlX2l0ZXJhdG9yMigpLiBBZGRlZAorCW5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IyKCkuIEFkZGVkCisJbmV0c25tcF9oYW5kbGVyX293bnNfaXRlcmF0b3JfaW5mbygpLiBGaXhlZCBsZWFrLWF0LWV4aXQgdHJpZ2dlcmVkCisJYnkgc25tcE5vdGlmeVRhYmxlLiBGaXhlZCBsZWFrLWF0LWV4aXQgdHJpZ2dlcmVkIGJ5CisJc25tcFRhcmdldEFkZHJUYWJsZS4gQWxzbywgcmVzdG9yZWQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgb2YKKwluZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yKCkuCisgICAgICAtIEFkZGVkIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZTIoKSwKKwluZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyMigpLCBuZXRzbm1wX2Nsb25lX3dhdGNoZXJfaW5mbygpCisJYW5kIG5ldHNubXBfb3duc193YXRjaGVyX2luZm8oKS4gU2VlIGFsc28gdGhlIERveHlnZW4gY29tbWVudHMgZm9yCisJbW9yZSBpbmZvLgorICAgICAgLSBBZGRlZCBuZXRzbm1wX3VucmVnaXN0ZXJfYXV0b19kYXRhX3RhYmxlKCkuCisgICAgICAtIEFkZGVkIHJlZmVyZW5jZSBjb3VudCBpbiB0aGUgbmV0c25tcF9iYWJ5X3N0ZXBzX21vZGVzIGRhdGEKKwlzdHJ1Y3R1cmUgYW5kIG1hZGUgc3VyZSB0aGF0IHRoaXMgZGF0YSBzdHJ1Y3R1cmUgaXMgYXV0b21hdGljYWxseQorCWZyZWVkIHdoZW4gdGhlIGhhbmRsZXIgdGhhdCBvd25zIGl0IGlzIHVucmVnaXN0ZXJlZC4KICAgICAgIC0gQWRkZWQgc25tcF9zZXNzX3Nlc3Npb25fbG9va3VwKCkuIENhbGwgc2h1dGRvd25fbWFzdGVyX2FnZW50KCkgYW5kCiAJc2h1dGRvd25fYWdlbnQoKSBkdXJpbmcgc2h1dGRvd24uCiAgICAgICAtIEFkZGVkIHNubXBfc2Vzc19zZXNzaW9uX2xvb2t1cCgpLiBDYWxsIHNodXRkb3duX21hc3Rlcl9hZ2VudCgpIGFuZApAQCAtMjAzLDEwICs2ODAsNjkgQEAKIAlzdWNoIHRoYXQgaXQgbmV2ZXIgZXhhbWluZXMgc2Vzc2lvbnMgdGhhdCBhbHJlYWR5IGhhdmUgYmVlbiBjbG9zZWQuCiAJSXQgaXMgZm9yIHRoaXMgY2hhbmdlIHRoYXQgaXQgd2FzIG5lY2Vzc2FyeSB0byBpbnRyb2R1Y2UgdGhlIG5ldwogCWZ1bmN0aW9uIHNubXBfc2Vzc19zZXNzaW9uX2xvb2t1cCgpLgorICAgICAgLSBBZGRlZCB0aGUgZnVuY3Rpb25zIG5ldHNubXBfZHVwbGljYXRlX3ZhcmlhYmxlKCkgYW5kCisJbmV0c25tcF9jYWNoZV9oYW5kbGVyX293bnNfY2FjaGUoKS4KKyAgICAgIC0gQWRkZWQgdGhlIGZ1bmN0aW9ucyBuZXRzbm1wX2R1cGxpY2F0ZV92YXJpYWJsZSgpIGFuZAorCW5ldHNubXBfY2FjaGVfaGFuZGxlcl9vd25zX2NhY2hlKCkuIE1lbW9yeSBhbGxvY2F0ZWQgYnkKKwluZXRzbm1wX3JlZ2lzdGVyX29sZF9hcGkoKSBmb3Igc3RvcmluZyBTTk1QIHZhcmlhYmxlcyBpcyBub3cgZnJlZWQKKwl3aGVuIHRoZSBhc3NvY2lhdGVkIGhhbmRsZXIgaXMgdW5yZWdpc3RlcmVkLgorICAgICAgLSBBZGRlZCB0aGUgZnVuY3Rpb25zIG5ldHNubXBfZHVwbGljYXRlX3ZhcmlhYmxlKCkgYW5kCisJbmV0c25tcF9jYWNoZV9oYW5kbGVyX293bnNfY2FjaGUoKS4gTWVtb3J5IGFsbG9jYXRlZCBieQorCW5ldHNubXBfcmVnaXN0ZXJfb2xkX2FwaSgpIGZvciBzdG9yaW5nIFNOTVAgdmFyaWFibGVzIGlzIG5vdyBmcmVlZAorCXdoZW4gdGhlIGFzc29jaWF0ZWQgaGFuZGxlciBpcyB1bnJlZ2lzdGVyZWQuIENhbGxiYWNrIGZ1bmN0aW9uIGRhdGEKKwlkZWFsbG9jYXRpb24gZG9lcyBubyBsb25nZXIgZnJlZSB0aGUgbWVtb3J5IGFsbG9jYXRlZCBmb3IgdGhlCisJQWdlbnRYIHNlc3Npb24gLSB0aGUgbWVtb3J5IHRoYXQgd2FzIGFsbG9jYXRlZCBmb3IgQWdlbnRYIHNlc3Npb25zCisJaXMgbm93IGRlYWxsb2NhdGVkIGp1c3QgYXMgdGhhdCBmb3IgYW55IG90aGVyIHNlc3Npb24uIFRoaXMgZml4ZXMgYQorCWxlYWstYXQtZXhpdC4KKyAgICAgIC0gQWRkZWQgdGhlIGZ1bmN0aW9ucyBuZXRzbm1wX2R1cGxpY2F0ZV92YXJpYWJsZSgpIGFuZAorCW5ldHNubXBfY2FjaGVfaGFuZGxlcl9vd25zX2NhY2hlKCkuIE1lbW9yeSBhbGxvY2F0ZWQgYnkKKwluZXRzbm1wX3JlZ2lzdGVyX29sZF9hcGkoKSBmb3Igc3RvcmluZyBTTk1QIHZhcmlhYmxlcyBpcyBub3cgZnJlZWQKKwl3aGVuIHRoZSBhc3NvY2lhdGVkIGhhbmRsZXIgaXMgdW5yZWdpc3RlcmVkLiBDYWxsYmFjayBmdW5jdGlvbiBkYXRhCisJZGVhbGxvY2F0aW9uIGRvZXMgbm8gbG9uZ2VyIGZyZWUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgZm9yIHRoZQorCUFnZW50WCBzZXNzaW9uIC0gdGhlIG1lbW9yeSB0aGF0IHdhcyBhbGxvY2F0ZWQgZm9yIEFnZW50WCBzZXNzaW9ucworCWlzIG5vdyBkZWFsbG9jYXRlZCBqdXN0IGFzIHRoYXQgZm9yIGFueSBvdGhlciBzZXNzaW9uLiBUaGlzIGZpeGVzIGEKKwlsZWFrLWF0LWV4aXQuIE5vdGlmeSBmaWx0ZXIgdGFibGU6IENhbGxiYWNrIGZ1bmN0aW9uIGRhdGEKKwlkZWFsbG9jYXRpb24gZG9lcyBubyBsb25nZXIgZnJlZSB0aGUgZGF0YSBpbiAqCSAgCisJKnNubXBOb3RpZnlGaWx0ZXJUYWJsZV9pZl9jdHguY29udGFpbmVyIC0gdGhpcyBpcyBub3cgZG9uZSBieSAgCisJc2h1dGRvd25fc25tcE5vdGlmeUZpbHRlclRhYmxlKCkgYW5kCisgICAgICAtIEF1dG9tYXRpY2FsbHkgZnJlZSB0aGUgcHJpdmF0ZSBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0ZWQgYnkKKwluZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9oYW5kbGVyX2dldCgpLgorICAgICAgLSBCdWlsZHMgd2l0aCBtb3N0IHJlY2VudCBNaW5HVyAoaGF2aW5nICNkZWZpbmUgbG9jYWx0aW1lX3IpLgorICAgICAgLSBDb3VudCB0aGUgbnVtYmVyIG9mIHVzZXJzIG9mIGEgbmV0c25tcF9jYWNoZSBkYXRhIHN0cnVjdHVyZSBpbnN0ZWFkCisJb2YgZHVwbGljYXRpbmcgaXQuCisgICAgICAtIERlY2xhcmUgdGhlIE9JRCBhcmd1bWVudCB0eXBlIG9mIE1JQiByZWdpc3RyYXRpb24gZnVuY3Rpb25zIGFzCisJJ2NvbnN0IG9pZCAqJyBpbnN0ZWFkIG9mICdvaWQgKicgc2luY2UgdGhlc2UgZnVuY3Rpb25zIGRvIG5vdAorCW1vZGlmeSB0aGUgT0lELgorICAgICAgLSBEbyBub3QgbGVhayB0aGUgbGltaXRzIG9mIHNjYWxhcl9ncm91cCBvYmplY3RzIG9uIHNodXRkb3duLgorICAgICAgLSBFeHRlbmQgdGhlIGRvY3VtZW50YXRpb24gZm9yIGRhdGFfY2xvbmUgYW5kIGRhdGFfZnJlZQorICAgICAgLSBGYWN0b3Igb3V0IGNvbW1vbiBjb25maWdfYWRkX21pYiBzdGF0bWVudHMKKyAgICAgIC0gRmluZCBvdXQgd2hldGhlciBsaWJycG0gaXMgYXZhaWxhYmxlIGJlZm9yZSBjb25maWd1cmluZyB0aGUgYWdlbnQKKwltb2R1bGVzIGJlY2F1c2UgaG9zdC9kYXRhL2FjY2Vzcy9zd2luc3QgbmVlZHMgc3ltYm9sIEhBVkVfTElCUlBNLgorCUFzIGEgcmVzdWx0LCBjb25maWd1cmUgaGFzIHRvIGJlIHJ1biBvbmx5IG9uY2UgaW5zdGVhZCBvZiB0d2ljZSB0bworCWVuYWJsZSB0aGUgaHJTV0luc3RhbGxlZCB0YWJsZSBvbiBzeXN0ZW1zIHRoYXQgaGF2ZSBsaWJycG0uCiAgICAgICAtIEZpeGVkIGEgZG91YmxlIGZyZWUgYXQgZXhpdCB0aGF0IHdhcyB0cmlnZ2VyZWQgYnkgY2xlYW5pbmcgdXAgdGhlCiAJZGF0YSBzdHJ1Y3R1cmVzIHVzZWQgZm9yIGVtYmVkZGVkIFBlcmwgc3VwcG9ydC4KLSAgICAgIC0gRml4ZWQgb3JkZXIgb2YgcnBtbGliIGRldGVjdGlvbiBhbmQgYWdlbnQgbW9kdWxlIGNvbmZpZ3VyYXRpb24KLQkoYmFja3BvcnRlZCByMTk2MjEgZnJvbSB0cnVuaykuCisgICAgICAtIEZpeGVkIGEgeWVhci0yMDM4IGJ1ZyBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgaXBSb3V0ZVRhYmxlLgorICAgICAgLSBJbnRyb2R1Y2VkIG5ldHNubXBfcGlkX3QuCisgICAgICAtIE1JQi1zcGVjaWZpYyBsZWFrLWF0LWV4aXQgZml4ZXMuCisgICAgICAtIE1ha2UgaXQgcG9zc2libGUgdG8gY29weSB3YXRjaGVkIGRhdGEgaXRlbXMgd2l0aG91dCBtZW1vcnkgbGVha3MuCisgICAgICAtIE1ha2UgdGhlIHNldHRpbmcgb2YgdGhlIGFyZ3ZyZXN0YXJ0KiB2YXJpYWJsZXMgb3B0aW9uYWwgb24KKwlVU0lOR19VVElMX0ZVTkNTX1JFU1RBUlRfTU9EVUxFLgorICAgICAgLSBNYWtlIHRoZSBzZXR0aW5nIG9mIHRoZSBhcmd2cmVzdGFydCogdmFyaWFibGVzIG9wdGlvbmFsIG9uCisJVVNJTkdfVVRJTF9GVU5DU19SRVNUQVJUX01PRFVMRS4gUmVtb3ZlIHV0aWxfZnVuY3MvcmVzdGFydCBmcm9tIHRoZQorCXJlcXVpcmVtZW50IHNldHMgb2YgdXRpbF9mdW5jcyBhbmQgZGVmYXVsdF9tb2R1bGVzLgorICAgICAgLSBNYWtlIHRoZSBzZXR0aW5nIG9mIHRoZSBhcmd2cmVzdGFydCogdmFyaWFibGVzIG9wdGlvbmFsIG9uCisJVVNJTkdfVVRJTF9GVU5DU19SRVNUQVJUX01PRFVMRS4gUmVtb3ZlIHV0aWxfZnVuY3MvcmVzdGFydCBmcm9tIHRoZQorCXJlcXVpcmVtZW50IHNldHMgb2YgdXRpbF9mdW5jcyBhbmQgZGVmYXVsdF9tb2R1bGVzLiBBZGQKKwl1dGlsX2Z1bmNzL3Jlc3RhcnQgdG8gdGhlIHJlcXVpcmVtZW50IHNldCBvZiB1Y2Qtc25tcC92ZXJzaW9uaW5mby4KKyAgICAgIC0gUGF0Y2ggMzE0MTQ2MjogZnJvbSBmZW5uZXI6IGZpeCBhZ2VudHggc3ViYWdlbnQgaXNzdWVzIHdpdGgKKwltdWx0aXBsZS1vYmplY3QgcmVxdWVzdHMKKyAgICAgIC0gUGF0Y2ggZnJvbSBOaWVscyB0byBmaXggVkFDTSBwZXJzaXN0YW50IHN0b3JhZ2UuCisgICAgICAtIFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgY21wCisgICAgICAtIFJlbW92ZSB1dGlsX2Z1bmNzL0V4aXQgZnJvbSB0aGUgcmVxdWlyZW1lbnQgc2V0cyBvZiB1dGlsX2Z1bmNzIGFuZAorCWRlZmF1bHRfbW9kdWxlcy4KKyAgICAgIC0gUmVtb3ZlIHV0aWxfZnVuY3MvRXhpdCBmcm9tIHRoZSByZXF1aXJlbWVudCBzZXRzIG9mIHV0aWxfZnVuY3MgYW5kCisJZGVmYXVsdF9tb2R1bGVzLiBOZXZlciB1c2UgRXhpdCB0byB0ZXJtaW5hdGUgdGhlIGFnZW50LgogICAgICAgLSBSZW1vdmluZyB0aGUgbGFzdCBjYWNoZSB2aWEgbmV0c25tcF9jYWNoZV9yZW1vdmUoKSBkb2VzIG5vIGxvbmdlcgogCXRyaWdnZXIgYSBjcmFzaC4KICAgICAgIC0gVXBkYXRlIHRoZSBsZW5ndGggb2Ygc3lzT2JqZWN0SUQgYXMgd2VsbCBhcyB0aGUgZGF0YSB3aGVuIGl0IGlzIHNldApAQCAtMjE4LDI2ICs3NTQsNTQgQEAKICAgICAgIC0gW0JVRyAzMDU4MTAxXTogV3JpdGVhYmxlICdsb25nJyBpbnN0YW5jZXMgd29yayBvbiA2NC1iaXQgc3lzdGVtcywKIAlidXQgbm90IHdyaXRhYmxlICdpbnQncwogICAgICAgLSBbQlVHIDMwNjI1MzhdOiBGaXggY29tMnNlYyogaGFuZGxpbmcgb2Ygbm9uLWRlZmF1bHQgY29udGV4dHMKKyAgICAgIC0gW0JVRyAzMjA1NzY1XTogaGFuZGxlIHJlY29uZmlnIGZvciBjZXJ0U2VjTmFtZSB0b2tlbgogICAgICAgLSBbQlVHIF06IGVuZm9yY2UgbWF4IGxlbmd0aCBvbiBUTFMgc2VjTmFtZSBtYXBzCisgICAgICAtIFtCVUcgXTogZW5mb3JjZSBtYXggbGVuZ3RoIG9uIFRMUyBzZWNOYW1lIG1hcHMgYWRkIHByaW9yaXR5IHRvCisJc2VjbmFtZSBkZWJ1Z2dpbmcKICAgICAgIC0gW1BBVENIIDIxMTk3MjVdOiBGaXggc2tpcE5GU0luSG9zdFJlc291cmNlcyBoYW5kbGluZyBvZgogCWhyU3RvcmFnZVRhYmxlCisgICAgICAtIFtQQVRDSCAyOTQxODExXTogSGFuZGxlIHN1Y2Nlc3NmdWwgcmVxdWVzdHMgd2l0aCByZXFJRCAwCisgICAgICAtIFtQQVRDSCAyOTc1MjU0XTogQXZvaWQgY2FsbGJhY2sgcmUtdXNlIG9mIGNsb3NlZCBzZXNzaW9ucyBRbjoKKwlTaG91bGQgdGhpcyBhbHNvIGJlIGFwcGxpZWQgd2hlbiBtYWluIHNlc3Npb24gaXMgTlVMTD8KICAgICAgIC0gW1BBVENIIDMwNTM0MzZdOiBmcm9tOiB0YWtldm9zOiBmaXg6IHRjcENvbm5lY3Rpb25UYWJsZV9kYXRhX2FjY2VzcwogCWludmFsaWQgbWVtb3J5IGFjY2VzcwogICAgICAgLSBbUEFUQ0ggMzA1NzA5MF06IG1ha2UgZXRodG9vbCBzdXBwb3J0IG9uIGxpbnV4IHVzZSB0aGUgaGlnaCBzcGVlZAogCXN0cnVjdCBpbmZvIGZvciAxMDBHKy4KKyAgICAgIC0gW1BBVENIIDMwNTcwOTNdOiBhbGxvdyBsaW51eCB0byB1c2UgbGlicGNpIGZvciBjcmVhdGluZyB1c2VmdWwKKwlpZkRlc2NyIHN0cmluZ3MKICAgICAgIC0gW1BBVENIIDMwOTY3MjVdOiBEb24ndCByZWdpc3RlciB2MVRyYXAgY2FsbGJhY2ssIGlmIFNOTVB2MSBpcyBub3QKIAlzdXBwb3J0ZWQKICAgICAgIC0gW1BBVENIIDMwOTY3MjVdOiBJbmNsdWRlIFNOTVB2MSB0cmFwIE9JRHMgaW4gbmxtTG9nTm90aWZpY2F0aW9uSUQKIAljb2x1bW4KKyAgICAgIC0gW1BBVENIIDMxMjU5Nl06IGxpc3RlbiBmb3IgbmV0bGluayBjaGFuZ2UgZXZlbnRzIGZvciB0aGUKKwlhcnAtcmVsYXRlZCB0YWJsZXMKKyAgICAgIC0gW1BBVENIIDMxNTI0MTJdOiBIYW5kbGUgKGFuZCByZXBvcnQpIHByb2JsZW1zIHJlYWRpbmcgL3Byb2Mvdm1zdGF0CisgICAgICAtIFtQQVRDSCAzMjAzODA2XTogQXZvaWQgdGhhdCB0aGUgbWFpbiBhZ2VudCBwcm9jZXNzaW5nIGxvb3AgLSB3aGVuCisJdXNpbmcgbW9yZSB0aGFuIEZEX1NFVFNJWkUgZmlsZSBkZXNjcmlwdG9ycyAtIGNhbiBjYXVzZSBtZW1vcnkKKwljb3JydXB0aW9uIGJ5IGludm9raW5nIHNlbGVjdCgpLgorICAgICAgLSBbUEFUQ0ggXTogb3B0aW1pemF0aW9ucyBmb3IgbGFyZ2Ugcm91dGUgdGFibGVzIGZyb20gU3RlcGhlbgorCUhlbW1pbmdlciBhcHBsaWVkIHBhcnRzIDEtMyBvZiA0IGZyb20gaGltIChtc2dzIHRvIGNvZGVycyBvbgorCTIvMjgvMTE7IHN1YmplY3QgaXAtZm9yd2FyZC1taWIgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzOyBwYXJ0IDQKKwluZWVkcyBtb3JlIHdvcmsKICAgICAgIC0gYWRkIGRlYnVnIGZvciBjZXJ0IGZpbmQgaGludCBhcyBzdHJpbmcvaW50Ci0gICAgICAtIGFkZCBkZWJ1ZyBmb3Igc3NsIGNpcGhlcnMsIGNsYXJpZnkgZmluZ2VycHJpbnQgbWF0Y2ggZGVidWcKKyAgICAgIC0gYWRkIG5ld2x5IGNyZWF0ZWQvZGVzdHJveWVkIGludGVyZmFjZXMgdG8gaXB2NklmVGFibGUgVGhlIGxpc3Qgb2YKKwlpbnRlcmZhY2VzIHdhcyBuZXZlciByZWZyZXNoZWQsIG5vdyBpdCBpcyByZWxvYWRlZCBldmVyeSB0aW1lIHRoZQorCXRhYmxlIGlzIGFjY2Vzc2VkLiBJJ3ZlIGFsc28gZml4ZWQgYSBtZW1vcnkgbGVhayBhbmQgb3B0aW1pemVkIHRoZQorCWxvYWRpbmcgb2YgdGhlIGxpc3QgYSBiaXQuCiAgICAgICAtIGNvbTJzZWM2IGRpcmVjdGl2ZTogSWYgY29uZmlndXJlIGhhcyBub3QgZm91bmQgZ2V0YWRkcmluZm8oKSwKIAlub24tbnVtZXJpYyBJUHY2IGFkZHJlc3NlcyBkbyBub3cgdHJpZ2dlciBhbiBlcnJvciBtZXNzYWdlLgotCShCYWNrcG9ydGVkIHIxOTY1MC4pCi0gICAgICAtIGRvbid0IHNlY29uZC1ndWVzcyBjYWNoZSBoYW5kbGVyICAgKHdhdmVzIGhhbmQpIHRoaXMgaXMgbm90IHRoZQorICAgICAgLSBkb24ndCBzZWNvbmQtZ3Vlc3MgY2FjaGUgaGFuZGxlciAod2F2ZXMgaGFuZCkgdGhpcyBpcyBub3QgdGhlCiAJZnVuY3Rpb24geW91IGFyZSBsb29raW5nIGZvci4gbmV0c25tcF9jYWNoZV9pc192YWxpZCgpIGlzIG5vdCBtZWFudAogCWZvciBtaWIgbW9kdWxlcworICAgICAgLSBleGFtcGxlIE1JQjogQWRkZWQgc2h1dGRvd24gZnVuY3Rpb24gdGhhdCBmcmVlcyBhbGwgbWVtb3J5IG93bmVkIGJ5CisJdGhpcyBNSUIgaW1wbGVtZW50YXRpb24uCiAgICAgICAtIGZpeCBkb3VibGUgZnJlZSBpbiBUTFMgZXJyb3IgaGFuZGxpbmcKKyAgICAgIC0gZml4ZWQgdGhlIGFnZW50IHdyaXRpbmcgJ2xvb2tzIGxpa2UgYSA2NGJpdCB3cmFwLCBidXQgcHJldiE9bmV3JyBpbgorCXN5c2xvZyB3aGVuIGNvbXB1dGluZyBpcFN5c3RlbVN0YXRzIFdpdGhvdXQgdGhlIG1lbWNweSwKKwlwcmV2X3ZhbHMtPnN0YXRzIGFuZCBuZXdfdmFscy0+c3RhdHMgY291bGQgZ2V0IGRpZmZlcmVudCwgd2hpY2gKKwljb3VsZCBtdWNoIG11Y2ggbGF0ZXIgKHdoZW4gYSBjb3VudGVyIGdldHMgYmlnZ2VyIHRoYW4gMzIgYml0cykKKwlyZXN1bHQgaW4gJ3ByZXYhPW5ldycgbWVzc2FnZSBpbiBzeXNsb2cuIFR5cGljYWxseSB0aGlzIGhhcHBlbnMKKwlhZnRlciBsb25nIHRpbWUgb2YgdXB0aW1lIGFuZCBpdCBpcyB2ZXJ5IGhhcmQgdG8gcmVwcm9kdWNlLgogICAgICAgLSBob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9ycG06IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4KIAluZXRzbm1fc3dpbnN0X2FyY2hfaW5pdCgpLgogICAgICAgLSBob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9ycG06IFBhc3MgY29ycmVjdCBwYXRoIHRvIHJwbWRiT3BlbigpIHN1Y2gKQEAgLTI0OSwxNyArODEzLDQxIEBACiAJaW5pdHMgdG8gbmV3IGFnZW50IGNlcnQgaW5pdCBmdW5jdGlvbiwgY2FsbGVkIGZyb20gaW5pdF9hZ2VudC4KICAgICAgIC0gbmV0c25tcF9jYWNoZV9mcmVlKCk6IEEgbW9yZSBkZXRhaWxlZCBtZXNzYWdlIGlzIG5vdyBsb2dnZWQgd2hlbgogCWF0dGVtcHRpbmcgdG8gZnJlZSBhIGNhY2hlIHRoYXQgaXMgc3RpbGwgaW4gdGhlIGNhY2hlIGxpc3QuCi0JKEJhY2twb3J0ZWQgcjE5NTI0LikKKyAgICAgIC0gcmV3b3JrZWQgaHJTdG9yYWdlVGFibGUgdG8gc3VwcG9ydCBsYXJnZSBmaWxlc3lzdGVtcy4gVGhlCisJaHJTdG9yYWdlQWxsb2NhdGlvblVuaXRzIGRvZXMgbm90IHJlcG9ydCByZWFsIGFsbG9jYXRpb24gdW5pdCBzaXplLAorCWJ1dCBzb21lIGNhbGN1bGF0ZWQgdmFsdWUgc28gaHJTdG9yYWdlQWxsb2NhdGlvblVuaXRzICoKKwloclN0b3JhZ2VTaXplIGdpdmVzIHJlYWwgc2l6ZSBvZiB0aGUgZmlsZXN5c3RlbS4gVGhpcyBjYWxjdWxhdGlvbgorCWhhcHBlbnMgb25seSB3aGVuIGhyU3RvcmFnZVNpemUgaXMgdG9vIHNtYWxsICgzMmJpdHMpIGZvcgorCWZpbGVzeXN0ZW0gc2l6ZSwgZS5nLiBmaWxlc3lzdGVtcyBsYXJnZXIgdGhhbiA4VEIgd2l0aCA0MDk2IGJ5dGVzCisJYmxvY2sgc2l6ZS4gVGhpcyBjYWxjdWxhdGlvbiBjYW4gYmUgdHVybmVkIG9mZiBieQorCSdyZWFsU3RvcmFnZVVuaXRzJyBjb25maWcgb3B0aW9uLgorICAgICAgLSBza2lwIG5vbi1BRl9JTkVUIGludGVyZmFjZXMgd2hlbiBsb2FkaW5nIGlwdjQgYWRkcnMKICAgICAgIC0gc25tcGQgaXMgYWdhaW4gc2luZ2xlLXRocmVhZGVkLiBbUEFUQ0ggMjk1OTgxMV06IFNhZnJhbmVrOgogCVJlaW1wbGVtZW50IExpbnV4IE5ldGxpbmsgSVB2NiBwcmVmaXggbGlzdGVuZXIuCi0gICAgICAtIHVzZSBjYWNoZS11bmlxdWUgaWQgaW5zdGVhZCBvZiBoYW5kbGVyIG5hbWUgZm9yIHNoYXJlZCBjYWNoZSByZWxvYWQKLQlwcm90ZWN0aW9uCi0gICAgICAtIFBhdGNoIGZyb20gQ2xhdXMgS2xlaW4gdG8gZml4IGVuZ2luZWlkIGdlbmVyYXRpb24gb24gb3V0Z29pbmcgdjMKLQl0cmFwcyBmcm9tIHRoZSBhZ2VudAotICAgICAgLSBhZGQgbmV3bHkgY3JlYXRlZC9kZXN0cm95ZWQgaW50ZXJmYWNlcyB0byBpcHY2SWZUYWJsZQlUaGUgbGlzdCBvZgotCWludGVyZmFjZXMgd2FzIG5ldmVyIHJlZnJlc2hlZCwgbm93IGl0IGlzIHJlbG9hZGVkIGV2ZXJ5IHRpbWUgdGhlCi0JdGFibGUgaXMgYWNjZXNzZWQuIEkndmUgYWxzbyBmaXhlZCBhIG1lbW9yeSBsZWFrIGFuZCBvcHRpbWl6ZWQgdGhlCi0JbG9hZGluZyBvZiB0aGUgbGlzdCBhIGJpdC4KKyAgICAgIC0gRml4ZWQgbWVtb3J5IGxlYWsgaW4gVENQLU1JQiB0YWJsZXMgaW50cm9kdWNlZCBieSBwYXRjaCAjMzA1MzQzNi4KKyAgICAgIC0gRml4ZWQgbWVtb3J5IGxlYWsgaW4gVENQLU1JQiB0YWJsZXMgaW50cm9kdWNlZCBieSBwYXRjaCAjMzA1MzQzNi4iCisJW1BBVENIIDMwNTM0MzZdOiBmcm9tOiB0YWtldm9zOiBmaXg6IHRjcENvbm5lY3Rpb25UYWJsZV9kYXRhX2FjY2VzcworCWludmFsaWQgbWVtb3J5IGFjY2VzcyIgdGhlIGJ1ZyAzMDUzNDM2IGlzIGZpeGluZyB3YXMgaW50cm9kdWNlZCBpbgorCXIxNzcxOSwgYW5kIGZpeGVkIGluIHIxNzg2MS4KKyAgICAgIC0gVXNlIHByb3BlciBmb3JtYXQgc3BlY2lmaWVyIGluIGRlYnVnIHN0YXRlbWVudHMgZm9yIHByaW50aW5nIHZhbHVlcworCW9mIHR5cGUgJ29pZCcuCisgICAgICAtIFtQQVRDSCAzMDY2ODYyXTogZml4IHRoZSBhZ2VudCBmb3IgY29tcGFyaW5nIHVuc2lnbmVkIGxhcmdlIGluZGV4ZXMKKwlvZiB0aGUgZGlzayBhbmQgZXh0ZW5kIHRhYmxlcy4KKyAgICAgIC0gZml4ZWQgaHJTV1J1blBhdGggb2Ygc3dhcHBlZC1vdXQgcHJvY2Vzc2VzIG9uIExpbnV4LiAgIGZnZXRzKCkKKwlyZXR1cm5zIE5VTEwgYm90aCB3aGVuIC9wcm9jL1BJRC9jbWRsaW5lIGlzIGVtcHR5ICg9IHN3YXBwZWQgb3V0KQorCWFuZCB3aGVuIHRoZSBwcm9jZXNzIGV4aXRlZCBhZnRlciBmb3BlbigpLCBzbyBjaGVjaworCS9wcm9jL1BJRC9zdGF0dXMgaW4gYm90aCBjYXNlcy4KKyAgICAgIC0gZml4ZWQgcmFjZSBjb25kaXRpb24gaW4gaHJTV1J1blRhYmxlIFRyZWF0IHRoZSByZWFkcyBmcm9tCisJL3Byb2MvPHBpZD4vKiBjYXJlZnVseSwgcHJvY2Vzc2VzIGNhbiBleGl0IGluIHRoZSBtaWRkbGUgb2YKKwlwcm9jZXNzaW5nLiAoYWxyZWFkeSBmaXhlZCBpbiBWNS01LXBhdGNoZXMgYW5kIFY1LTQtcGF0Y2hlcyBpbiBTVk4KKwlyZXYuIDIwMTE1LCBkdW5ubyB3aHkgSSBkaWQgbm90IHBhdGNoIHRydW5rKQorICAgICAgLSBwYXRjaCAzMTMxMzk3OiBmcm9tIHRha2V2b3M6IGh1Z2Ugc3BlZWR1cHMgb2YgdGhlIFRDUC9VRFAgVGFibGVzCisgICAgICAtIHBhdGNoIDMyOTkzODQ6IGZpeCBJTkZPUk1zIHNvIHRoZXkgcmV0cnkgcHJvYmluZyBmb3IgYW4gZW5naW5lSUQuCisgICAgICAtIHBhdGNoIDMzMDY0NzY6IGZyb20gdGlueXB5cmFtaWRzOiBmaXggbWVtb3J5IGxlYWsgaW4gdGhlIHN3cnVuCisJY29udGFpbmVyIGxvYWRpbmcKKyAgICAgIC0gdWNkX3NubXAgYnVpbGRzIGFnYWluIG9uIE1pbkdXIGFuZCBDeWd3aW4uCisgICAgICAtIHBhdGNoIDMzMTAyNTA6IGZyb20gZmVubmVyOiBtaXNjIGZpeGVzIGZvciBkZWJ1Z2dpbmcgb3V0cHV0IG9mCisJYWdlbnR4CiAKICAgICBzbm1wdHJhcGQ6CiAgICAgICAtIEZpeGVkIGEgZG91YmxlIGZyZWUgYXQgZXhpdCB0aGF0IHdhcyB0cmlnZ2VyZWQgYnkgY2xlYW5pbmcgdXAgdGhlCkBAIC0yNzYsMjIgKzg2NCw5MyBAQAogCV9fc2VsZWN0X25vY2FuY2VsIChpbiAvbGliNjQvbGliYy0yLjExLjIuc28pIGJ5IDB4NDA0RTIwOiBtYWluCiAJKHNubXB0cmFwZC5jOjEyNTgpCiAKLSAgICBzbm1waW5mb3JtOgotICAgICAgLSBmaXggY29udGV4dEVuZ2luZUlEcyBmb3Igb3V0Z29pbmcgaW5mb3JtcyBmcm9tIHNubXBpbmZvcm0gdG8KLSAgICAgICAgYmUgdGhlIGxvY2FsIGVuZ2luZUlECisgICAgYXBwczoKKyAgICAgIC0gW1BBVENIIDMwNTQ4MTddOiBBZGRzIHBlci12YXJpYWJsZSB0aW1lZCBvdXRwdXQgc3VwcG9ydCB0byBzbm1wd2FsaworCXVzaW5nIC1DVAorICAgICAgLSBhZGQgc25tcC5jb25mIHRva2VucyBmb3IgdGltZW91dHMgYW5kIHJldHJpZXMKIAogICAgIGJ1aWxkOgogICAgICAgLSBbQlVHIDMwODgzNjBdOiBFbnN1cmUgcHl0aG9uIG1vZHVsZXMgYXJlIGJ1aWx0IGFnYWluc3QgdGhlIGNvcnJlY3QKIAlsaWJyYXJpZXMKIAogICAgIGJ1aWxkaW5nOgorICAgICAgLSBGaXggLS13aXRoLXNlY3VyaXR5LW1vZHVsZXMgaGFuZGxpbmcgQWxsb3cgcmVwZWF0ZWQgbW9kdWxlcworCSh0c20sdHNtKSBhcyB3ZWxsIGFzIGRlZmFpbHQgbW9kdWxlcyAodXNtKSBNb3ZlIHRoZSBnZW5lcmF0aW9uIG9mCisJdGhlIGZpbGVzIGFmdGVyIHRoZSBjaGVja2luZworICAgICAgLSBNYWtlIGl0IHBvc3NpYmxlIHRvIHJlZ2VuZXJhdGUgdXNpbmcgYXV0b2NvbmYgMi42OC4KICAgICAgIC0gU29tZSBzeXN0ZW1zIGRvIG5vdCBzdXBwb3J0IHRoZSAtRSBmbGFnIHRvIGdyZXAsIHVzZSBhdXRvY29uZiB0bwogCWZpbmQgdGhlIHJpZ2h0IGVncmVwIGF0IGFsbCB0aW1lcy4KKyAgICAgIC0gY2hlY2sgZm9yIC9kZXYva21lbSBpbnN0ZWFkIG9mIGFzc3VtaW5nIGl0IGV4aXN0cyBhbmQgaGFyZGNvZGluZworCXdoZW4gaXQgaXMgbm90IHRoZXJlCisKKyAgICBsaWJuZXRzbm1wOgorICAgICAgLSBtYWRlIHRoZSBTU0ggdHJhbnNwb3J0IGNvbmZpZ3VyYWJsZSBhcyBpdCBzaG91bGQgYmUuCisKKyAgICBsaWJuZXRzbm1wbWliczoKKyAgICAgIC0gTWFrZSBhbGwgZnVuY3Rpb25zIGluIHRoZSBkbG1vZCBtb2R1bGUgdGhhdCBkb24ndCBoYXZlIHRvIGJlIHB1YmxpYworCXN0YXRpYworCisgICAgbWliMmM6CisgICAgICAtIFtQQVRDSCAzMTc1MzIzXTogRml4IGhhbmRsaW5nIG9mICd3aGlsZSAoZmFsc2UpJyBibG9ja3MKKyAgICAgIC0gW1BBVENIIDMyMDQ4ODNdOiBGaXggaGFuZGxpbmcgb2Ygbm9uLXRhYmxlIG9iamVjdHMgbmFtZWQgZm9vVGFibGUKKyAgICAgIC0gW1BBVENIIDMyMTE0ODRdOiBTdXBwb3J0IGVudW1lcmF0aW9ucyBpbiBub3RpZmljYXRpb24gdmFyYmluZHMKKyAgICAgIC0gbWFrZSB0aGUgbWliMmMgZm9yZWFjaCByYW5nZXMgd29yayBhcyBhZHZlcnRpc2VkIGluIHRoZSBjb21tZW50cy4KKworICAgIHBhY2thZ2luZzoKKyAgICAgIC0gRW5hYmxlIG1pY3JvLWFuZC1tYWNyby1mZWF0dXJlIG1hbmFnZW1lbnQgd2l0aGluIE5ldC1TTk1QOyB0aGlzCisJYWRkcyBhIG51bWJlciBvZiBuZXcgZmxhZ3MgdG8gY29uZmlndXJlICgtLWVuYWJsZS1taW5pbWFsaXN0IGFuZAorCS0tZW5hYmxlLXJlYWQtb25seSkuIFRoZXNlIGNoYW5nZXMgYXJlIGRlc2lnbmVkIHRvIHJlbW92ZSBtdWNoIG9mCisJdGhlIGlubGluZSBjb2RlIHRoYXQgaXNuJ3QgYWx3YXlzIG5lY2Vzc2FyeSBvciBkZXNpcmVkLiBTY3JpcHRzCisJZXhpc3QgKGFuZCB3aWxsIGJlIGltcHJvdmVkKSB0byBzdGlwIG91dCB1bnVzZWQgY29tcG9uZW50cyBmcm9tIHRoZQorCWNvZGUgZW50aXJlbHkgdG8gZW5hYmxlIGEgc2hvcnRlciByZXZpZXcgcHJvY2VzcyBmb3IgdXBncmFkaW5nIHRvCisJbmV3IHJlbGVhc2VzLiBUaGlzIHdvcmsgd2FzIGRvbmUgYnkgV2VzIEhhcmRha2VyIGFuZCBNaWNoYWVsIEJhZXIKKwlmcm9tIFNQQVJUQSwgSW5jLiBidXQgaXMgYmVpbmcgY2hlY2tlZCBpbiBhcyBhIGxhcmdlIHBhdGNoIHNpbmNlCisJY29udmVydGluZyB0aGUgbWljcm8gcGF0Y2hlcyBmcm9tIGdpdCB0byBzdm4gdHVyZW5kIG91dCB0byBiZQorCWltcG9zc2libGUKKworICAgIHBhdGNoIDMxNDA4MzM6CisgICAgICAtIGZpeCBwcm94eSBHRVRORVhUIHJlcXVlc3RzIFdoZW4gT0lEcyByZXF1ZXN0ZWQgYXJlIGJlbG93IHRoZSBwcm94eQorCXJlcXVlc3QgcmVtYXAsIHdlIG5lZWQgdG8gbm90IGluY2x1ZGUgYW55IE9JRHMgdGhhdCBtaWdodCBiZSBpbiB0aGUKKwlzcGFjZSBiZXR3ZWVuIHRoZSBvcmlnaW5hbCBPSUQgYW5kIHRoZSByZW1hcHBlZCBPSUQuIFRoaXMgcGF0Y2gKKwlmdWRnZXMgdGhlIHJlcXVlc3Qgc28gdGhhdCBpdCBmaXhlcyB0aGUgcmVxdWVzdCBPSUQgc28gaXQncyBqdXN0CisJYmVmb3JlIHRoZSByZW1hcHBlZCBwcm94eSByYW5nZS4KKworICAgIHBhdGNoIDMxODQwMjY6CisgICAgICAtIEF2b2lkIGNvbnN0YW50IHJlZnJlc2ggb2YgaW50ZXJmYWNlIHN0YXRpc3RpY3MKIAogICAgIHBlcmw6Ci0gICAgICAtIDAgcGF0Y2ggMzA0OTAyOTogZnJvbSBmZW5uZWM6IGZpeCBhIG1lbW9yeSBsZWFrIHdpdGggc25tcCBidWxrd2Fsa3MKKyAgICAgIC0gcGF0Y2ggMzA0OTAyOTogZnJvbSBmZW5uZWM6IGZpeCBhIG1lbW9yeSBsZWFrIHdpdGggc25tcCBidWxrd2Fsa3MKKyAgICAgIC0gcGF0Y2ggZnJvbSBNYXJ0aW4gQnVjazogZG9uJ3QgYWx3YXlzIG9wZW4gc3RkZXJyIGFzIHRoZSBjYWxscyB0bworCXNubXBfbG9nIGFscmVhZHkgZG8gdGhpcyBhbmQgaXQgbWVzc2VzIHVwIHRoZSBhZ2VudCB3aGVuIGVtYmVkZGVkCisKKyAgICBweXRob246CisgICAgICAtIFtQQVRDSCAzMTg1MDg1XTogRml4IHNlZ2ZhdWx0IG9uIDY0LWJpdCBzeXN0ZW1zCisgICAgICAtIFtCVUcgMzI5NTQwN106IEZpeCBoYW5kbGluZyBvZiB2b2lkIHBvaW50ZXIKIAogICAgIHRlc3Rpbmc6CisgICAgICAtIEFkZCBtaXNzaW5nIHByZWNvbmRpdGlvbnMKKyAgICAgIC0gQWRkZWQgZnVuY3Rpb24gbmV0c25tcF9kZWxldGVfdGFibGVfZGF0YV9zZXQoKS4gQWRkZWQgZGVjbGFyYXRpb24KKwlmb3IgdGhlIGZ1bmN0aW9uIG5ldHNubXBfdGFibGVfZGF0YV9kZWxldGVfdGFibGUoKSBpbiBhIHB1YmxpYworCWFnZW50IGhlYWRlciBmaWxlLiBGaXhlZCBtZW1vcnkgbGVhayBpbgorCW5ldHNubXBfdGFibGVfZGF0YV9kZWxldGVfdGFibGUoKS4gRml4ZWQgbWVtb3J5IGxlYWsgdHJpZ2dlcmVkIGJ5CisJdW5yZWdpc3RlcmluZyBhIHRhYmxlIGhhbmRsZXIuIFVuaXQgdGVzdHMgY2FuIG5vdyBpbnZva2UgZnVuY3Rpb25zCisJZnJvbSBsaWJhZ2VudC4KKyAgICAgIC0gQWRkZWQgZnVuY3Rpb24gbmV0c25tcF9kZWxldGVfdGFibGVfZGF0YV9zZXQoKS4gQWRkZWQgZGVjbGFyYXRpb24KKwlmb3IgdGhlIGZ1bmN0aW9uIG5ldHNubXBfdGFibGVfZGF0YV9kZWxldGVfdGFibGUoKSBpbiBhIHB1YmxpYworCWFnZW50IGhlYWRlciBmaWxlLiBGaXhlZCBtZW1vcnkgbGVhayBpbgorCW5ldHNubXBfdGFibGVfZGF0YV9kZWxldGVfdGFibGUoKS4gRml4ZWQgbWVtb3J5IGxlYWsgdHJpZ2dlcmVkIGJ5CisJdW5yZWdpc3RlcmluZyBhIHRhYmxlIGhhbmRsZXIuIFVuaXQgdGVzdHMgY2FuIG5vdyBpbnZva2UgZnVuY3Rpb25zCisJZnJvbSBsaWJhZ2VudC4gQWRkZWQgdW5pdCB0ZXN0IGZvciB0YWJsZV9kYXRhc2V0LgorICAgICAgLSBBZGRlZCBpbmV0X250b3AoKSBhbmQgaW5ldF9wdG9uKCkgdW5pdCB0ZXN0LgorICAgICAgLSBBZGRlZCBuZXRzbm1wX21pYl9oYW5kbGVyLmRhdGFfY2xvbmUsIGEgZnVuY3Rpb24gcG9pbnRlciB0aGF0CisJZGVmaW5lcyBob3cgdG8gY2xvbmUgbmV0c25tcF9taWJfaGFuZGxlci5teXZvaWQuIE11c3QgYmUgZGVmaW5lZCBpZgorCWFuZCBvbmx5IGlmIGRhdGFfZnJlZSBpcyBzZXQuIFRoZSBmdW5jdGlvbiBuZXRzbm1wX2hhbmRsZXJfZHVwKCkKKwlkb2VzIG5vdyBjbG9uZSBNSUIgaGFuZGxlciBwcml2YXRlIGRhdGEgaWYgZGF0YV9jbG9uZSgpIGlzIHNldC4KKwlQcmV2aW91c2x5IGFmdGVyIGR1cGxpY2F0aW5nIGEgTUlCIGhhbmRsZXIgYW5kIHVucmVnaXN0ZXJpbmcgb25lIG9mCisJdGhlIHR3byBNSUIgaGFuZGxlcnMsIHRoZSBwcml2YXRlIGRhdGEgcG9pbnRlciAobXl2b2lkKSBvZiB0aGUKKwlvdGhlciBiZWNhbWUgYSBkYW5nbGluZyBwb2ludGVyLiBOb3RlOiBhZGRpdGlvbiBvZgorCW5ldHNubXBfbWliX2hhbmRsZXIuZGF0YV9jbG9uZSBpcyBhbiBBQkkgY2hhbmdlLiBhZGRlZCBtb3JlIHRlc3QKKwljYXNlcyB0byB0aGUgaGFuZGxlciByZWdpc3RyYXRpb24gdGVzdC4KICAgICAgIC0gR2VuZXJhdGUgYSBub3JtYWwgI2xpbmUgZGlyZWN0aXZlIGFzIHBlciBDOTkgaW5zdGVhZCBvZiB0aGUKIAljb21waWxlci1zcGVjaWZpYyAjPG4+LWRpcmVjdGl2ZS4KICAgICAgIC0gSW50cm9kdWNlZCBuZXcgdGVzdCB0eXBlIG5leHQgdG8gY2FwcCBhbmQgY2xpYjogY2FnZW50bGliLgpAQCAtMzAzLDIzICs5NjIsMzIgQEAKIAlEWU5BTUlDX0FOQUxZWkVSPSJ2YWxncmluZCAtLXRyYWNlLWNoaWxkcmVuPXllcyAtLWxlYWstY2hlY2s9ZnVsbCI7CiAJY2QgdGVzdGluZyAmJiAuL1JVTkZVTExURVNUUyAtZyB1bml0LXRlc3RzKQogICAgICAgLSBUZXN0IDcxIChjb20yc2VjNl9zaW1wbGUpIGRvZXMgbm93IHN1Y2NlZWQgZXZlbiBpZiBJUHY2IEROUwotCXJlc29sdXRpb24gaXMgbm90IGF2YWlsYWJsZS4gKEJhY2twb3J0ZWQgcjE5NjQ4LikKKwlyZXNvbHV0aW9uIGlzIG5vdCBhdmFpbGFibGUuCiAgICAgICAtIFRlc3QgVDAzMCBkb2VzIG5vdyBwYXNzIG9uIE1pbkdXLgotICAgICAgLSBVbml0IHRlc3RzIGNhbiBub3cgaW52b2tlIGZ1bmN0aW9ucyBmcm9tIGxpYmFnZW50LgotICAgICAgLSBVbml0IHRlc3RzIGNhbiBub3cgaW52b2tlIGZ1bmN0aW9ucyBmcm9tIGxpYmFnZW50LiBBZGRlZCB1bml0IHRlc3QKLQlmb3IgdGFibGVfZGF0YXNldC4gKEJhY2twb3J0ZWQgZnJvbSByMTk0NTAgZnJvbSB0aGUgdHJ1bmsuKQorICAgICAgLSBhdXRvLWNyZWF0ZSB1c2VyIHNwZWNpZmllZCBTTk1QX1RNUERJUiBhbmQgU05NUF9UTVBfUEVSU0lTVEVOVERJUgorCXRvbzsgZGVmYXVsdCBTTk1QX1RNUF9QRVJTSVNURU5ESVIgYmFzZWQgb24gU05NUF9UTVBESVIgZm9yIHVzZXIKKwlzcGVjaWZpZWQgU05NUF9UTVBESVIKIAotICAgIHVuc3BlY2lmaWVkOgorICAgIG1hbjoKKyAgICAgIC0gW0JVRyAzMTkwNzI1XTogRG9jdW1lbnQgc25tcHssX3Nlc3N9c3luY2hfcmVzcG9uc2UgYW5kCisJc25tcF9hc3luY19zZW5kCisKKyAgICBHZW5lcmljOgorICAgICAgLSBNYWtlIGl0IHBvc3NpYmxlIHRvIGJ1aWxkIHN0YXRpYyBhcHBsaWNhdGlvbnMgdXNpbmcgbmV0LXNubXAtY29uZmlnCisJYW5kIHRoZSAtKmxpYnMgZmxhZ3Mgb25jZSBtb3JlLgogICAgICAgLSBbQlVHIDMxMDI5MDRdOiBBbGwgTmV0LVNOTVAgQyBzb3VyY2UgZmlsZXMgYXJlIG5vdyBjb21waWxlZCB3aXRoCiAJLWZuby1zdCByaWN0LWFsaWFzaW5nLCBhdCBsZWFzdCBpZiB0aGUgY29uZmlndXJlZCBjb21waWxlciBzdXBwb3J0cwogCXRoaXMgZmxhZy4KICAgICAgIC0gW1BBVENIIDMwNzQ5MThdOiBmcm9tIHdlaXpoZW5nOiBjaGVjayBmb3IgQ09OVEFJTkVSX0lOU0VSVCBmYWlsdXJlcwogCWFuZCByZWFjdCBhcHByb3ByaWF0ZWx5IHRvIGF2b2lkIG1lbW9yeSBsZWFrcworICAgICAgLSBbUEFUQ0ggMzE2NzMyNV06IGZyb20ga3Jpc3p0b2Zvcm86IFVDRC1TTk1QL1N5c3RlbVN0YXRzOiBhZGQKKwl2YXJpYWJsZXMgdG8gcmVwb3J0IGNwdXN0ZWFsLCBjcHVndWVzdCwgY3B1Z3Vlc3RuaWNlCiAKICAgICBDeWd3aW46CiAKICAgICBMaW51eDoKICAgICAgIC0gW1BBVENIIDMwODMwMjddOiBGaXggUlBNIHNwZWMgZmlsZSB0byBzdXBwb3J0IENlbnRPUworICAgICAgLSBbUEFUQ0ggMzIwNTgxMV06IE9wdGlvbiB0byBza2lwIGZkL2xvb3AvcmFtIGRldmljZXMgaW4gZGlza0lPVGFibGUKICAgICAgIC0gYWdlbnQ6IGlwTmV0VG9QaHlzaWNhbFRhYmxlOiBEbyBub3QgbG9nIGFuIGVycm9yIG1lc3NhZ2UgaWYgb25lIG9yCiAJbW9yZSBpbnRlcmZhY2VzIGFyZSBwcmVzZW50IHRoYXQgZG8gbm90IGhhdmUgc3VjaCBpbmZvcm1hdGlvbgogCShOVURfTk9BUlApLCBlLmcuIHR1bm5lbHMuIFJlcG9ydGVkIGJ5IFN0ZXBoZW4gSGVtbWluZ2VyLiBTZWUgYWxzbwpAQCAtMzI3LDMwICs5OTUsNTQgQEAKICAgICAgIC0gc25tcGQgaXMgYWdhaW4gc2luZ2xlLXRocmVhZGVkLgogCiAgICAgTWluR1c6CisgICAgICAtIE1hZGUgcmVncmVzc2lvbiB0ZXN0IG91dHB1dCBpbmRlcGVuZGVudCBvZiB0aGUgTmV0LVNOTVAgdmFyaWFibGVzCisJZGVmaW5lZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeS4gU29tZSB0ZXN0cyB0aGF0IGZhaWxlZCBwcmV2aW91c2x5CisJYWZ0ZXIgdGhlIE5ldC1TTk1QIGJpbmFyaWVzIChNU1ZDIGJ1aWxkKSBoYWQgYmVlbiBpbnN0YWxsZWQgZG8gbm93CisJcGFzcy4KICAgICAgIC0gY29uZmlndXJlOiBEZXRlY3Rpb24gb2YgdGhlIGZ1bmN0aW9ucyBnYWlfc3RyZXJyb3IoKSwKLQlnZXRhZGRyaW5mbygpLCBnZXRob3N0bmFtZSgpIGFuZCBnZXRob3N0bmFtZSgpIGRvZXMgbm93IHN1Y2NlZWQuCi0JKEJhY2twb3J0ZWQgcjE5NjQ2IGZyb20gdGhlIHRydW5rLikKKwlnZXRhZGRyaW5mbygpLCBnZXRob3N0YnluYW1lKCkgYW5kIGdldGhvc3RuYW1lKCkgZG9lcyBub3cgc3VjY2VlZC4KICAgICAgIC0gdGVzdGluZzogSWYgdGhlIGFnZW50IGhhcyBiZWVuIGFza2VkIHRvIHN0b3AsIHdhaXQgdW50aWwgdGhlIHNubXBkCiAJcHJvY2VzcyBkaXNhcHBlYXJlZCBiZWZvcmUgcHJvY2VlZGluZy4KKyAgICAgIC0gVGVzdHMgMDI1IGFuZCAwMjYgcGFzcyBvbiBNaW5HVyBldmVuIGlmIHdpbkV4dERMTCBoYXMgYmVlbiBlbmFibGVkLgorCisgICAgTmV0QlNEOgorICAgICAgLSBEcmFnb25GbHkgc3VwcG9ydCBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KKworICAgIE9wZW5CU0Q6CisgICAgICAtIFVwZGF0ZSBTV1J1biBjb2RlIHRvIHVzZSBrdm1fZ2V0cHJvYzIgW0Zyb20gT3BlbkJTRCBwYXRjaCBhcmNoaXZlXQogCiAgICAgV2luMzI6CiAgICAgICAtIEF2b2lkIHRoYXQgTVNWQyByZXBvcnRzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHJlZGVmaW5pdGlvbiBvZiB0aGUKIAltYWxsb2MoKSBtYWNybyBkdXJpbmcgYnVpbGRpbmcgdGhlIE5ldC1TTk1QIHNvdXJjZSBjb2RlLgorICAgICAgLSBEZXByZWNhdGVkIGxpYnNubXAuZGVmIC0gYWRkIE5FVFNOTVBfSU1QT1JUIHRvIGZ1bmN0aW9uCisJZGVjbGFyYXRpb25zIGluc3RlYWQgdG8gZXhwb3J0IGEgZnVuY3Rpb24gZnJvbSBuZXRzbm1wLmRsbC4KKyAgICAgIC0gR3VhcmQgbmV0c25tcF91ZHBfcmVjdmZyb20oKSBldGMuIGRlY2xhcmF0aW9ucyBjb25zaXN0ZW50bHkuIEJ1aWxkcworCXdpdGggVmlzdWFsIFN0dWRpbyAyMDEwLgorICAgICAgLSBJbnRyb2R1Y2VkIG5ldHNubXBfcGlkX3QuIEVsaW1pbmF0ZWQgY2FzdHMgYmV0d2VlbiBpbnQgYW5kIEhBTkRMRQorCWluIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYyBhbmQKKwlhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuYy4KICAgICAgIC0gV2hlbiBzbm1wZC5leGUgaXMgc3RhcnRlZCBpbiBhIGNvbW1hbmQgcHJvbXB0IHdpbmRvdywgdGhlIHNubXBkCiAJcHJvY2VzcyBub3cgc3RvcHMgdXBvbiB0aGUgZmlyc3Qga2V5IHByZXNzLiBUaGlzIG1ha2VzIGl0IGVhc2llciB0bwogCWRlYnVnIHNubXBkLmV4ZSBmb3IgbWVtb3J5IGxlYWtzLgogICAgICAgLSBbUEFUQ0ggMzA4NTE4N106IEJ1aWxkaW5nIHZpYSB0aGUgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gcHJvamVjdAogCWZpbGUgKC5kc3cvLmRzcCkgd29ya3MgYWdhaW4uCisgICAgICAtIFtQQVRDSCAzMjkzODQyXTogRWxpbWluYXRlIHJlZ2lzdHJ5IGFyZ3VtZW50IGxpbWl0IG9mIDEyNworCWNoYXJhY3RlcnMgKHRoaXMgbGltaXRhdGlvbiB3YXMgcmVwb3J0ZWQgYnkgU3lsdmFpbiBEZXJ5KS4KICAgICAgIC0gYnVpbGRpbmc6IEF2b2lkIHRoYXQgTVNWQyAyMDEwIHByaW50cyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dAogCXJlZGVmaW5pbmcgRUFERFJJTlVTRS4KICAgICAgIC0gYnVpbGRpbmc6IEJ1aWxkcyBub3cgY29ycmVjdGx5IHdpdGggYSA2NC1iaXQgY29tcGlsZXIuCiAgICAgICAtIGJ1aWxkaW5nOiBiYXRjaCBidWlsZCB3aXRoIE9wZW5TU0wgZW5hYmxlZCBhbmQgd2l0aCByZWNlbnQgT3BlblNTTAogCWRldmVsb3BtZW50IGZpbGVzIHdvcmtzIGFnYWluLgotICAgICAgLSBzaHV0ZG93bl9zbm1wTm90aWZ5RmlsdGVyVGFibGUoKSBhbmQgc2h1dGRvd25fd2luRXh0RExMKCkgYXJlIG5vdwotCWludm9rZWQgd2hlbiB0aGUgTmV0LVNOTVAgc2VydmljZSBpcyBzdG9wcGVkLiAoUGFydGlhbGx5IGJhY2twb3J0ZWQKLQlyMTk1MTUgZnJvbSB0aGUgdHJ1bmsuKQorICAgICAgLSBoZWFkZXIgZmlsZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNhbiBub3cgYmUgdXNlZCBpbiB0aGUKKwlNaW5HVyBlbnZpcm9ubWVudC4KICAgICAgIC0gdGVzdGluZzogQXZvaWQgdGhhdCBUMjAwIGZhaWxzIG9uIGtub3duIE1pY3Jvc29mdCBTTk1QIGV4dGVuc2lvbgogCURMTCBidWdzLgorICAgICAgLSBCdWlsZCBzbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmMgb25seSBpZgorCU5FVFNOTVBfRU5BQkxFX0lQVjYgaGFzIGJlZW4gZGVmaW5lZC4KKyAgICAgIC0gRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uCisJb2YgdGhlIE1JQi1JSSBpcE5ldFRvTWVkaWFUYWJsZS4KKyAgICAgIC0gTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW86IExpbmsgd2l0aCBnZGkzMi5saWIgaWYgT3BlblNTTCBoYXMgYmVlbgorCWVuYWJsZWQgYmVjYXVzZSBnZGkzMi5saWIgaXMgYSBkZXBlbmRlbmN5IG9mIE9wZW5TU0wuCiAKICo1LjYqCiAKQEAgLTE2MjMsNiArMjMxNSw3IEBACiAgICAgICAtIFtQQVRDSCAxNjAwNDUzXTogT1MgWCBjb21waWxlLXRpbWUgZW5kaWFuIGRldGVybWluYXRpb24KICAgICAgIC0gW1BBVENIIDE2MDA1MjJdOiBDUFUgSEFMIGltcGxlbWVudGF0aW9uIGZvciBtYWNoL2RhcndpbgogICAgICAgLSBJbXByb3ZlIG1lbW9yeSByZXBvcnRpbmcgKHBhdGNoIGZyb20gQXBwbGUpCisgICAgICAtIFBhdGNoOiAzNTE0MDQ5IGZyb20gdHdvYml0cy1naXRodWI6IGZpeCBjb21waWxhdGlvbiBvbiBkYXJ3aW4xMQogCiAgICAgU29sYXJpczoKICAgICAgIC0gW0JVRyAxNjI2MTUzXTogTm8gaHJTV1J1biBpbmZvcm1hdGlvbnMgb24gU29sYXJpcyB6b25lcwpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDc5Zjk0OGIuLjY4NGYyNDAgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsNiArMSw3MTggQEAKKyMgLSotIHRleHQgLSotCisKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQ2hhbmdlczogVjUuNi4xIC0+IFY1LjYuMgorQ2hhbmdlczogVjUuNy4yLnJjMyAtPiBWNS43LjIKKworY29tbWl0IDUwNTRiNTcwNjE5ZGYwYTgxOTU4YTA0NWJlZjEzNWIyMDIwNWYwMzYKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBPY3QgOSAxNToyNjowNSAyMDEyIC0wNzAwCisKKyAgICBtYWtlIGRlcGVuZCBmb3IgNS43LjIKKworY29tbWl0IDU2YTc5N2ZmM2U3MWRjODg2NDY3ZDE3Y2UwMjViMDIzN2M4YzFjYzMKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBPY3QgOSAxNDo0MjoyMyAyMDEyIC0wNzAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNy4yCisKK2NvbW1pdCAwODEzZjhiNjJkZjBlODQ0MGZmZWYxNjFjZTEzNGZmOTQ1NWU3ZGU5CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVAcmVkaGF0LmNvbT4KK0RhdGU6ICAgVHVlIE9jdCA5IDA2OjMzOjU4IDIwMTIgLTA3MDAKKworICAgIGZpeCBkb3VibGUtbmVnYXRpdmUgdHlwbworICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgYTZhODg5Mjc1MzQ2ODRlMjc1Y2NmMGU3ODA1MTMwOTRhNzNmYzZiYgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIE9jdCA5IDA2OjMxOjIxIDIwMTIgLTA3MDAKKworICAgIEFJWCBuZXQtc25tcDUuNy4xIGhyU1dSdW5QYXRoIG5vdCBjb21wbGV0ZQorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgNThhNGQ4ODM5MDIxZjc3MmMzNWE3MzJiZDA5NmQxZTI5MGRjMGE2MgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIE9jdCA5IDA2OjMwOjU3IDIwMTIgLTA3MDAKKworICAgIEFJWCBuZXQtc25tcDUuNy4xIGhyU1dSdW5QYXRoIG5vdCBjb21wbGV0ZQorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgNjI2ZWFiZWM0ZWE5OGU1MzU5MDg5NzkwODU4NDc5YTU5YTI2Y2RjYgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIFNlcCAzMCAyMzozMDoyOCAyMDEyICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBNb3ZlIHRoZSBjaGVjayB0aGF0IHRoZSBwZHUgdmFyaWFibGUgaXMgbm9uLU5VTEwgdG8gYmVmb3JlIHRoZSBmaXJzdCBkZXJlZmVyZW5jZSBvZiBpdC4KKworY29tbWl0IDY4YWFiNTcyYzJkMjc0NmI1MWE5NWViYTExMDU2OGMzOGIwNTA4MDgKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBTZXAgMjUgMTk6MDc6NDIgMjAxMiAtMDcwMAorCisgICAgUmVsZWFzZSBDYW5kaWRhdGUgZm9yIFY1LTctcGF0Y2hlcworCitjb21taXQgMGE0MTUzM2IxYjQ5ZjAwZDczNTdhM2QyYmVhNWRmYTc1ZThlZGNkNworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgTW9uIFNlcCAyNCAwMDowNzoxOSAyMDEyICswMjAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBBZGQgdGVzdCBjYXNlcyBmb3Igc25tcF9zZXJ2aWNlCisKK2NvbW1pdCBhNjFiNDhkNzhlMTFkOTQ1ZGVmNDZmZGUwZjdkNTVmNzkxOWMzMzVhCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gU2VwIDIzIDA3OjUzOjA5IDIwMTIgKzAyMDAKKworICAgIFByZWZlciBjb3B5X253b3JkX2NvbnN0IG92ZXIgY29weV9ud29yZChORVRTTk1QX1JFTU9WRV9DT05TVAorCitjb21taXQgOWJmZmM1NDEzZDBkODgyMzk4YjA2ZjQxMDlhYzgwN2FmMmY3ODM0NworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIFNlcCAyMyAwMDoyOTo0NCAyMDEyICswMjAwCisKKyAgICBTaW1wbGlmeSBsb2dnaW5nIHRocm91Z2ggdGhlIHVzZSBvZiBuZXRzbm1wX2NvbmZpZ19lcnJvcgorCitjb21taXQgZDA5ZDUzYTBmYTZkZjYzYjIxZTZmMTI3MzFiZWU1MWEzNjI0ZTg1ZQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IFNlcCAyMiAyMTozMDowOCAyMDEyICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBEbyBub3QgY3Jhc2ggb24gaW5jb21wbGV0ZSBjb25maWd1cmF0aW9uIHRva2Vucy4KKworY29tbWl0IDAyZGNlNmY0M2I5OWY4NTk0MTYyNzkyOGMxYTUwMjJkNjcyNWQxMjQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBTZXAgMjIgMjE6Mjg6NTEgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogRG8gbm90IHRydW5jYXRlIHNpbmdsZSBkZWZhdWx0IHRyYW5zcG9ydCBkb21haW5zCisKK2NvbW1pdCAyMTFlM2M3MDYyNTk2NTQ0MWIyYTAyOWE2MTEzODAyOTc0NjczYzQzCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgU2VwIDIyIDExOjIzOjE5IDIwMTIgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IERvIG5vdCBjcmFzaCBmcm9tIGVtcHR5IHZhbHVlcyBpbiAtLXRva2VuPXZhbHVlIGFyZ3VtZW50cworCitjb21taXQgYWYzZDJkOTczYjFlOGUyOWQyMDVkOGEwN2FjZDgyYjFmODU0ODE5ZQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IFNlcCAyMiAxMDozMDoxNiAyMDEyICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBBZGQgdGhlIHN5bWJvbCBORVRTTk1QX1BSSW8gdG8gaGVscCBpbiBwcmludGluZyBvaWQgdmFsdWVzLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NoYW5nZXM6IFY1LjcuMi5yYzIgLT4gVjUuNy4yLnJjMworCitjb21taXQgOGI0NTI5MjMwMWYwMzQ5ZmZiNjlkNGZkODU5NWYyZDViMTk5ZTZiNgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIFNlcCAyNSAxOTozNTozOSAyMDEyIC0wNzAwCisKKyAgICBtYWtlIGRlcGVuZCBmb3IgNS43LjIucmMzCisKK2NvbW1pdCAwY2JmZmI1NjVlNjJhZWY5MzdmYzcwMGQ4ZDNjM2I4YzY1ZGRmYTY1CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgU2VwIDI1IDE5OjA3OjQwIDIwMTIgLTA3MDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LjIucmMzCisKK2NvbW1pdCA0MDUwNTk3MWFkZDZhM2I2ZjU5NTRjZmJkZTUzMjc0OWJmYmNiMTZhCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gU2VwIDE3IDEzOjM0OjM3IDIwMTIgLTA3MDAKKworICAgIGZpeCBmb3IgaGlkZGVuIENNU0dfeHh4IG1hY3JvcyBvbiBBSVgKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IDYwZjBhOWU5ODNhYjgyN2M4MjRlMzk3ZDYyYWVmZjQ4YTYwZjAxMzMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBTZXAgMTcgMTM6MzE6MTIgMjAxMiAtMDcwMAorCisgICAgRml4IHBzdGF0IG1lbW9yeSBsZWFrIG9uIGhwdXggMTFpCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCAxM2JkNGQ1NmJhYTk4ODYwMThhMDA0NzdlMzIxNGViZTAyNzA1ZmZlCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gU2VwIDE3IDEzOjMxOjA0IDIwMTIgLTA3MDAKKworICAgIEZpeCBwc3RhdCBtZW1vcnkgbGVhayBvbiBocHV4IDExaQorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgMDgwNTQyMDgxM2RlMTU2YzdmYzUxNDI1MzRmYjQyMGEwZmNjMzU3MgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIFNlcCAxNyAxMzoyODo1OSAyMDEyIC0wNzAwCisKKyAgICBmaXhlcyBBVCBjb2RlIG9uIGhwdXggMTFpCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCBiZGIzYjE0NjM4MGRiMTMxNmNhYmQ1OGI3MDQ0MzZlN2VlY2RkOWY1CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gU2VwIDE3IDEzOjI4OjUwIDIwMTIgLTA3MDAKKworICAgIGZpeGVzIEFUIGNvZGUgb24gaHB1eCAxMWkKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IGU5MzZjZjgxMGE0NzM3OTE1NmQ5MTNhNzE0ZTM4MTYxODFhMGQzZGIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBTZXAgMTcgMTM6MjU6MjAgMjAxMiAtMDcwMAorCisgICAgZml4ZXMgZGlzQXZhaWwgb24gRnJlZUJTRCB1ZnMKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IDYwOGFiNTc4ODdlNTU2NmU2MzUwOWEzZjdlNWQwYTNlMjg5MmY0YTcKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBTZXAgMTcgMTM6MjU6MDIgMjAxMiAtMDcwMAorCisgICAgZml4ZXMgZGlzQXZhaWwgb24gRnJlZUJTRCB1ZnMKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDaGFuZ2VzOiBWNS43LjIucmMxIC0+IFY1LjcuMi5yYzIKKworY29tbWl0IDA3ZjkxNDU2NGUwOTcyMjRkNjc3NTE1YzJmNWZkMWYzYzBjOWViNDIKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBTZXAgMSAwOTo1NDo0MiAyMDEyIC0wNzAwCisKKyAgICBSZWxlYXNlIENhbmRpZGF0ZSBmb3IgVjUtNy1wYXRjaGVzCisKK2NvbW1pdCBhZWUyMTdjMDdlYTlmMzRhMzIyNjhlOTY2YzdlY2VmMDM2ZWM0YTk2CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgU2VwIDEgMDk6NTQ6MzggMjAxMiAtMDcwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjcuMi5yYzIKKworY29tbWl0IDExOWIwZDNjZjEyYzk3Y2EzYzc0ZDZkMWU3MjMxOTY3MGE4Mzc4YWEKK0F1dGhvcjogQmlsbCBGZW5uZXIgPGZlbm5lckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBTZXAgMSAwOTo1MTowOCAyMDEyIC0wNzAwCisKKyAgICBDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzNTYwNDczOiBmcm9tIGZlbm5lcjogSGFuZGxlIFRpbWVUaWNrcyB3aGVuIHByZXR0eS1wcmludGluZyBPSUQKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IGM5NGM2MmVhMGVkY2ViYmZiYjczZmFiNmVjZGRjNjc5Zjc2OTRkYWIKK0F1dGhvcjogQmlsbCBGZW5uZXIgPGZlbm5lckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBTZXAgMSAwOTo1MTowOCAyMDEyIC0wNzAwCisKKyAgICBDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzNTYwNDczOiBmcm9tIGZlbm5lcjogSGFuZGxlIFRpbWVUaWNrcyB3aGVuIHByZXR0eS1wcmludGluZyBPSUQKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IDZkN2Y5ZWIwZGVjZGI5NjgyODM2ZmZkMDNmMTk3NDIxOTdhZDg3ZGIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBBdWcgMjkgMjE6MTQ6NDYgMjAxMiArMDIwMAorCisgICAgRml4IHBvc3NpYmxlIG1lbW9yeSBvdmVycnVuIGluIGZzeXNfZ2V0ZnNzdGF0cy5jIChwYXRjaCAzNTU5NDE3KQorCitjb21taXQgZjIzNWVlOGIzMmVlZDFkZTNmMWU0MjAyZWY0NWI2Mzc3ZmJjZTE2MworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEF1ZyAyOSAyMTowNzoxNCAyMDEyICswMjAwCisKKyAgICBGaXggZm9yIGhyU3RvcmFnZVRhYmxlIG9uIEFJWCAoYnVnIDM1NTcxNTkpCisKK2NvbW1pdCA3OGNjOWQ1Y2NkODZiMTcwNjIyYWFjNTQzYzM0NWMwMjA3NTVjNzhhCitBdXRob3I6IHN0aGVuIDxzdGhlbjIzOTM0QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEF1ZyAyOCAxNzoxODowOSAyMDEyIC0wNzAwCisKKyAgICBhZGQgbWlzc2luZyBwcm9jZXNzIHN0YXR1cyB2YWx1ZXMgdW5kZXIgbmV0L29wZW4tYnNkCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCA0ZWY5ZGNkODBiMGJkYTFlMThiN2UzNDlhMDhiYzBmMjJhN2U3NTVlCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXVnIDI4IDE3OjE2OjM3IDIwMTIgLTA3MDAKKworICAgIENIQU5HRVM6IE9wZW5CU0Q6IFBBVENIIDM1NTk0MTQ6IGZyb20gbmJhOiBzdXBwb3J0IE9wZW5CU0QgZm9yIGhyX3N3aW5zdAorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgMGI1NjlmY2NlYTk0MTRjNTBjZmQ2YjBlODNlMTgzMWJhMTI5MWNlMgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEF1ZyAyOCAxNzoxNDo0NSAyMDEyIC0wNzAwCisKKyAgICBhZGQgbWlzc2luZyBwcm9jZXNzIHN0YXR1cyB2YWx1ZXMgdW5kZXIgbmV0L29wZW4tYnNkCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCAxZDNjN2JlN2ZhN2EzOGZkM2ZjMzk3MjBiYjVjYjcwZjhiZDcxMTYwCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXVnIDI4IDE3OjE0OjIyIDIwMTIgLTA3MDAKKworICAgIGFkZCBtaXNzaW5nIHByb2Nlc3Mgc3RhdHVzIHZhbHVlcyB1bmRlciBuZXQvb3Blbi1ic2QKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IGZmNDM4NDMzYWNhMDk2YmJiZWEyOWRkMzBkZmQ1YzU1MjM3NjFhNzIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBBdWcgMjggMTY6NTA6NDYgMjAxMiAtMDcwMAorCisgICAgRml4IHJlYWwgbWVtb3J5IHJlcG9ydGluZyBvbiBCU0Qgc3lzdGVtcworICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgYzQyOWE0ZjM5ODRkYWU3OTFlMzA3ZGY3MDIyNTFmOTZlZjA0N2Q4OAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEF1ZyAyOCAxNjo0OToxMCAyMDEyIC0wNzAwCisKKyAgICBGaXggcmVhbCBtZW1vcnkgcmVwb3J0aW5nIG9uIEJTRCBzeXN0ZW1zCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCA0MWQ5ODBjMDE1NTY0ZGI3ZjIyZjc2MzE5MGY2MWFjMGQ1NmJhM2IyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgQXVnIDI0IDE0OjM1OjUzIDIwMTIgKzAwMDAKKworICAgIFdpbmRvd3M6IFVuYnJlYWsgRExMIGJ1aWxkCisKK2NvbW1pdCAyNzkzOTIzYmZlMmIwMjZmY2FlYWY1MzhhZTUwM2YxMDVjYjMxNWJjCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSmFuIDMgMjI6MjY6MjAgMjAxMSArMDAwMAorCisgICAgYWRkZWQgbWlzc2luZyBUTFNUQ1AgbWVudGlvbiBpbiB0aGUgaGVscCBvdXRwdXQKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDaGFuZ2VzOiBWNS43LjIucHJlMyAtPiBWNS43LjIucmMxCisKK2NvbW1pdCA5ZWM1YzU5OTc4MDI1MWRjZDMxNTVmOWFjOTgwNmVjZTdlZDZiYTIyCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgQXVnIDExIDEyOjAwOjM3IDIwMTIgLTA3MDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjcuMi5yYzEKKworY29tbWl0IDMzNThiNjViMTFlMmMwZWU3MTJmNjA5ZjAyMDcxMjYwZjc1ZjliYjMKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBBdWcgMTEgMTE6Mzk6MzggMjAxMiAtMDcwMAorCisgICAgUmVsZWFzZSBDYW5kaWRhdGUgZm9yIFY1LTctcGF0Y2hlcworCitjb21taXQgNDg0OWE0MzBkYWFmYjkxYzdhNjFiZmJiYzE3ZjkyOTllNThmY2Y2NAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IEF1ZyAxMSAxMTozOTozNSAyMDEyIC0wNzAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNy4yLnJjMQorCitjb21taXQgMWJjMjY4NDI4ZTgyOTg1MmM5ZWYwYTc5NTUyY2E0MDQ1YWRkMjhhMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyA5IDIyOjQyOjUyIDIwMTIgKzAyMDAKKworICAgIE1ha2Ugc3VyZSB3ZSBoYXZlIGFuIGluaXRpYWxpemVkIGt2bSBzdHJ1Y3R1cmUgd2hlbiBxdWVyeWluZyBwcm9jIHRhYmxlIG9uIEJTRC4KKworY29tbWl0IDdlNjdjNTAzOGI2YWFiZmRhMTkzOWVhODFkOTQwYjI0MDAwY2ZiNTEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDkgMTQ6Mjc6MDggMjAxMiArMDIwMAorCisgICAgUmVtb3ZlZCBlcnJvciBtZXNzYWdlIHdoZW4gZmlsZSBjYW5ub3QgYmUgb3BlbmVkLgorICAgIAorICAgIFRoaXMgc2hvdWxkIGJlIGhhbmRsZWQgYnkgY2FsbGVyLCBub3QgaW4gdGhlIGZ1bmN0aW9uLiBUaGVyZSBpcyBvbmx5IG9uZSBjYWxsZXIgbm93LCB1ZHBfZW5kcG9pbnRfbGludXguYy4KKworY29tbWl0IDU5YjBkZTBiOGZhNzNlYjQwMzAwNmNlZTc1ZmY4NjUxZTE1ODVlMjgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDkgMTQ6MjM6MTQgMjAxMiArMDIwMAorCisgICAgRml4IGNvbXBpbGF0aW9uIGVycm9ycyBpbnRyb2R1Y2VkIGJ5IGNvbW1pdCBmOTVkZjYzNDFiMWQwNjI0OTQ0M2U1MTZiNTlhNDNjZGZhM2Q0Nzc3LgorICAgIAorICAgIFRoaXMgaXMgZW1iYXJhc3NpbmcsIEkgY29tcGlsZWQgdGhlIHNvdXJjZXMgd2l0aG91dCAtLWVuYWJsZS1pcHY2LiBTb3JyeSBmb3IgaW5jb252ZW5pZW5jZS4KKworY29tbWl0IDVkN2VkYWRkNDc2MTY4MGI2NmQxZGYzYmZkZTdjYTViMTZjYTVhMTYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDkgMTI6NDY6MzUgMjAxMiArMDIwMAorCisgICAgRml4IGNvbXBpbGF0aW9uIGVycm9yIGludHJvZHVjZWQgYnkgY29tbWl0IGY5NWRmNjM0MWIxZDA2MjQ5NDQzZTUxNmI1OWE0M2NkZmEzZDQ3NzcuCisKK2NvbW1pdCA0M2M5N2JiYWFmMjExZjRjN2Y3YzcwNGNmY2I5MDFkZmJmODM0ODc0CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyA5IDEyOjMwOjA5IDIwMTIgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBMb3dlcmVkIHNldmVyaXR5IG9mICdFcnJvciBleHBhbmRpbmcgWFhYIHRvIDY0Yml0cycgbWVzc2FnZXMuCisKK2NvbW1pdCA4ZTVjZjJhNzJhNDZjZDQ4M2QyMmU2MjkwYTZjOGM0YzI2YWY2YWQyCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyA5IDEyOjI1OjQ4IDIwMTIgKzAyMDAKKworICAgIENIQU5HRVM6IHJlbW92ZWQgY291bnRlci02NCBlcnJvciBtZXNzYWdlcy4KKyAgICAKKyAgICBUaGVzZSBtZXNzYWdlcyBkbyBub3Qgc2F5IGVueXRoaW5nIHVzZWZ1bCwgY2FsbGVyIHNob3VsZCBjaGVjayB0aGVpciByZXR1cm4gdmFsdWUgYW5kIHJlcG9ydCBpdC4KKworY29tbWl0IGY5NWRmNjM0MWIxZDA2MjQ5NDQzZTUxNmI1OWE0M2NkZmEzZDQ3NzcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDkgMTI6MDE6MjUgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IHJlbW92ZWQgZXJyb3IgbG9nIG1lc3NhZ2VzIHdoZW4gSVB2NiBpcyBkaXNhYmxlZC4KKworY29tbWl0IDE4ZGFjZThlNGEzNmIwODNkNmVmNzE3NzM1YzYzZTdmNDAyMjRkYjgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDkgMTA6NDE6NDUgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogYWRkZWQgQ1ZGUyAoQ2VudHJhVmlzaW9uIEZpbGUgU3lzdGVtKSB0byBoclN0b3JhZ2VUYWJsZSBhbmQgaHJGU1RhYmxlLgorCitjb21taXQgOTBmNDMxYjQ1ZDIxNTA2NDI3YmMwYmQxZDRlZTY5ZTBiOGVhMzBiYworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEF1ZyA4IDIzOjEwOjUwIDIwMTIgKzAyMDAKKworICAgIFVwZGF0ZSB0byBjdXJyZW50IE1JQiB2ZXJzaW9ucworCitjb21taXQgOWU3YTBiOWU1ODBkM2IxZWE2MTk4YTc0MTRjODE2YzIzYjEyM2IxMAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEF1ZyA4IDIyOjI3OjE2IDIwMTIgKzAyMDAKKworICAgIFVzZSBhIHdya2luZyBhd2sgZm9yIFNvbGFyaXMKKworY29tbWl0IDBlMzkyMmFlMjFlNGI3ZWM1Mzg4NjdhZmQyMmNlNzRkNzQxZTBmMWMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBBdWcgOCAyMjoxNzozNCAyMDEyICswMjAwCisKKyAgICBmaXggcHJvdG90eXBlIGZvciBrbG9va3VwCisKK2NvbW1pdCBhMjIxMDk3MTFhNmQxZWMxNGI2YTNmMWNhYzIyMWQ3MDI2M2YxMDRhCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgQXVnIDggMjI6MDg6MTMgMjAxMiArMDIwMAorCisgICAgZml4IHByb3RvdHlwZXMgZm9yIGtsb29rdXAKKworY29tbWl0IGFjMDYyOTcyYzU4NTE3NGY5NWQ3YmE4N2FhNWVjNTRjNDJmZGVjNTUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBBdWcgOCAyMjowMDoyNiAyMDEyICswMjAwCisKKyAgICBmaXggcHJvdG90eXBlcyBmb3Iga2xvb2t1cAorCitjb21taXQgN2NkZDhlYmVmOTUwN2ZlNzY2MTA3Y2E5ZmVlMDU0YzQ0Y2MwYmFjNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIEF1ZyA1IDA4OjEzOjU5IDIwMTIgKzAwMDAKKworICAgIE1ha2Ugc25tcF9hbGFybV9yZXNldCgpIHVzZSB0aGUgbW9ub3RvbmljIGNsb2NrLiBGaXhlcyBhIGJ1ZyBpbnRyb2R1Y2VkIGluIGNvbW1pdCAzN2JhN2UyLgorCitjb21taXQgMDIzZjYxZWE3ODNiZmNjNTNmZTkwYWE2NjU0NWM1YWVhMmRiODA2MQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEF1ZyA4IDE2OjI2OjU0IDIwMTIgKzAwMDAKKworICAgIEZpeCBidWlsZCBicmVha2FnZSBjYXVzZWQgYnkgY29tbWl0IDAyODYxNGVjZjJkNjczOTg2OTlkYzNiZDc4NDAyOWYzMzYwZjJlMTMKKworY29tbWl0IGNkODIwOTQ5YTE0OTFhZjEwM2E4NTU1ZjZiZGFlMDQ4NTFmM2QyODUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBBdWcgOCAxNjoxNjo0MyAyMDEyICswMDAwCisKKyAgICBVbmRvIGJ1aWxkIGJyZWFrYWdlIGNhdXNlZCBieSBjb21taXQgMzdiYTdlMjBhNTIxZmJmMDQ1OGEwYzc3ZWVhMmU1ZTM2YmQ3ZWMwYQorCitjb21taXQgZjE0MzAwOGNjYzU3ZWExMGNiYjg4YWIzNTU0ODIyYjE3YjYyNzBhYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIEF1ZyA1IDA4OjQ1OjQyIDIwMTIgKzAwMDAKKworICAgIE1ha2UgZ2V0X2V4ZWNfb3V0cHV0KCkgd29yayBvbiBiaWcgZW5kaWFuIHN5c3RlbXMuCisgICAgCisgICAgVW5kbyBBUEkgYnJlYWthZ2UgaW50cm9kdWNlZCBieSBjb21taXQgNzM3NGI4NGZlNGMyZWY4NDk3ZmRlM2RhZTgwYTY5YWE4OWViYTE5Yy4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDaGFuZ2VzOiBWNS43LjIucHJlMiAtPiBWNS43LjIucHJlMworCitjb21taXQgODQzMjJlMGRjMmE4OTc0NjQ2NTQyZDk4ODFiYzAxYjQzZGMzYTEyZAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEp1bCAzMSAxNjoyNDowNyAyMDEyIC0wNzAwCisKKyAgICBtYWtlIGRlcGVuZCBmb3IgNS43LjIucHJlMworCitjb21taXQgOGZlYzdhODFkNjEzM2E1ZjA1ZWQzNGE1YWY5ODA2YWY1ZDEyODIyMworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEp1bCAzMSAxNTo1Nzo1NiAyMDEyIC0wNzAwCisKKyAgICBmaXggdGhlIGFzc2VydCBjaGVjayB0byBhbGxvdyBmb3Igc29tZSBrbm93biBhc3NlcnRzCisKK2NvbW1pdCBkZmRlNmQyZGRkNTE5YzhjMmFlMTc4ODc3NGZkZjkwZDhiZWEwMmIxCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSnVsIDMwIDEwOjA4OjI0IDIwMTIgLTA3MDAKKworICAgIGluY2x1ZGUgZXJybm8uaCBhbmQgZG9uJ3QgdXNlIGNvbnRpbnVlIG91dHNpZGUgYSBsb29wCisKK2NvbW1pdCA3Y2ZmZTAyMjJjZDk4YTIxZTMwZjQ0YzNkZjlmMGQ5MGJmMDk2ZmU5CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSnVsIDMxIDE0OjEzOjUwIDIwMTIgLTA3MDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LjIucHJlMworCitjb21taXQgMjJhZjdmZDQ2Nzc2YThkYjIzNjJlODhhY2IxYjY5YjE2NWMwMzRiNgorQXV0aG9yOiBibGVudHogPGJsZW50ekB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKdWwgMzEgMTM6NTI6NDAgMjAxMiAtMDcwMAorCisgICAgQ0hBTkdFUzogYWl4OiBQQVRDSCAzNDAzNDMzOiBmcm9tIGJsZW50ejogSXNzdWVzIHdpdGggaHJTV1J1bk5hbWUgYW5kIFBhcmFtZXRlcnMgb24gQUlYCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCA1MTZiOWY4Mjc1YjhkYjAzY2RjNDEwNzhlNjVjMjE3MDMwOWEzZjhiCitBdXRob3I6IEp1bGllbiBQaW5vbiA8anBpbm9uQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEp1bCAzMSAxMzoyNTozMSAyMDEyIC0wNzAwCisKKyAgICBDSEFOR0VTOiBwZXJsOiBQQVRDSCAzNDEyOTM5OiBmcm9tIGpwaW5vbjogUmVwYWlyIHRrbWliCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCA4ZjIzMGY0MDFjNjRkODIyODgzYWM0NDQ2MjRhMmMyZmQ3MTI4ZDhlCitBdXRob3I6IEhhcnNoYSBTaGl2YW5uYSA8bmFhbnVoc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKdWwgMzEgMTM6MjI6MTEgMjAxMiAtMDcwMAorCisgICAgQ0hBTkdFUzogbGlibmV0c25tcDogUEFUQ0ggMzU1Mjc0NTogZnJvbSBuYWFudWhzOiBmaXggdG8gc3VwcG9ydCAzMiBjaGFycyBmb3IgVkFDTSBuYW1lcyBhcyBwZXIgUkZDLTI1NzUKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IDM0MDA4ZDMyYWVmNDNkOGJiZTEwMDBmYjliZjk0NjQyYzA1MTRmNmYKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKdWwgMzEgMTM6MjA6MzEgMjAxMiAtMDcwMAorCisgICAgZml4IHRoZSBhZ2VudHggcGluZyBwYXRjaCBzbyBpdCB3b3JrcyB3aXRoIHRoZSBuZXdlciBhbGFybSBzdHJ1Y3R1cmUgbmFtZXMKKworY29tbWl0IDk2MjY3NjM5NGQzZmU1NTdlYWQ5MTA1N2I0ZDc4MDIyNmRjMGQ2YjMKK0F1dGhvcjogTWlqbyBTYWZyYWRpbiA8bWlqb3NAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSnVsIDMxIDEyOjQ4OjAxIDIwMTIgLTA3MDAKKworICAgIENIQU5HRVM6IGFnZW50OiBQQVRDSCAzNDE0MDUxOiBmcm9tIG1pam9zOiBzbm1wLWJyaWRnZS1taWI6IGZpeCBmb3IgZG90MWRCYXNlVGFibGUKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IDM3YmE3ZTIwYTUyMWZiZjA0NThhMGM3N2VlYTJlNWUzNmJkN2VjMGEKK0F1dGhvcjogVmluY2VudCBCZXJuYXQgPHZiZXJuYXRAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSnVsIDMxIDEyOjI3OjI4IDIwMTIgLTA3MDAKKworICAgIENIQU5HRVM6IGFnZW50OiBQQVRDSCAzNDgxNjg2OiBmcm9tIHZiZXJuYXQ6IERvbnQgcGluZyBtYXN0ZXIgYWdlbnQgdW5sZXNzIHRoZXJlIGlzIG5vIGluY29taW5nIHRyYWZmaWMKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IDJiZTVmZWFkYjA1NDA4NDZlMGUzYWRhMjdlZmI5Nzg5NGE0Y2JkNTIKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKdWwgMzEgMDc6Mjk6MTcgMjAxMiAtMDcwMAorCisgICAgYWRkZWQgYSBkYXJ3aW4gMTIgdmVyc2lvbgorCitjb21taXQgMWY5YmNkMjFlN2MyZDVlZmZiNjJhYTAxYjdiODdlNDNkYzg2MjE0YworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKdWwgMzEgMTQ6NDM6MjcgMjAxMiArMDIwMAorCisgICAgRml4ZWQgU0NUUC1NSUI6OnNjdHBBc3NvY1ByaW1Qcm9jZXNzLCB0aGUgbGlzdCBvZiBwcm9jZXNzZXMgd2FzIG5vdCBpbml0aWFsaXplZC4KKworY29tbWl0IDQ4YmU1ZTg5YWEwNGFkYjBkZjdlMDk0YjJmZTQ2MzAxNTQyOWZjOTgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSnVsIDMxIDEzOjQ4OjMxIDIwMTIgKzAyMDAKKworICAgIEFkZGVkIGxvZyBtZXNzYWdlIHdoZW4gaXBUYWJsZSBtaXNzZXMgc29tZSBpbnRlcmZhY2VzLgorCitjb21taXQgNzUyM2YwZjAxYmE0ZGI2NWFjMTY0N2EyMzIyOGNmMDZjMGI3MmEwMworQXV0aG9yOiBNYXJpdXN6IENlaWVyIDxtY2VpZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSnVsIDMwIDEwOjE5OjMzIDIwMTIgLTA3MDAKKworICAgIENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENIIDM1MzY2OTI6IGZyb20gbWNlaWVyOiBjcmVhdGUgYSB1bml0IHRlc3QgZm9yIHJlYWRfY29uZmlnIEFQSXMKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IGMwN2I4ZDliMzc3MGI2MTVjOGUxNjJkYmRmNzY0MzgwNWYzNzJkNzUKK0F1dGhvcjogTWFyaXVzeiBDZWllciA8bWNlaWVyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEp1bCAzMCAxMDoxODo0MiAyMDEyIC0wNzAwCisKKyAgICBDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzNTM2NjkyOiBmcm9tIG1jZWllcjogRml4IGZvciBjYWxsYmFjayBjYWxsaW5nIHdoZW4gdW5yZWdpc3RlcmluZyBjb25maWcgaGFuZGxlcgorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgNWMyNDI0ZjA3ZDg1YzBjNGY3OWQ2YzVmYWY2NGQ3ZjNlZTg2MTcyNgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEp1bCAzMCAxMDowODo0MiAyMDEyIC0wNzAwCisKKyAgICBkb24ndCBkdXBsaWNhdGUgc2VuZF9lbnRlcnByaXNlX3RyYXBfdmFycyBkZWYKKworY29tbWl0IDczNzRiODRmZTRjMmVmODQ5N2ZkZTNkYWU4MGE2OWFhODllYmExOWMKK0F1dGhvcjogR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEp1bCAzMCAwOTo0MToxNyAyMDEyIC0wNzAwCisKKyAgICBDSEFOR0VTOiBmcmVlYnNkOiBQQVRDSCAzMzgzOTcwOiBmcm9tIHlhYmVyYXVuZXlhOiBGaXggY29tcGlsZSBlcnJvciBvbiBGcmVlQlNEIDkueC9QT1NJWGlmeSBhdXRvX25saXN0LCBldGMKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IDY3MGQ5NmU3ODY1OTBmZGQzMGExNmEzMzAwYzBlZDViZDZlNTMyMTQKK0F1dGhvcjogTWFyayBSdXNrIDx1c2VyX2lkPTM0OTg5NUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBKdWwgMjkgMjM6Mzk6MjIgMjAxMiAtMDcwMAorCisgICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIIDM0MjQ5MzM6IGZyb20gdXNlcl9pZD0zNDk4OTU6IFVzZSBORVRTTk1QX0RTX0FHRU5UX0FHRU5UWF9USU1FT1VUIGZvciB0aGUgZGVmYXVsdCB0aW1lb3V0CisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCBmMWVhZWMxNWVmNjAzYjhjZTU0MjkzMmZmZGJkODc4OGMzZDFhY2M1CitBdXRob3I6IERhbmllbCBIb2JpIDxob2JpZEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBKdWwgMjkgMjM6Mjg6MDEgMjAxMiAtMDcwMAorCisgICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIIDM1MzA3OTQ6IGZyb20gaG9iaWQ6IHBhc3MvcGFzc19wZXJzaXN0OiB1bnJlZ2lzdGVyIE1JQiB3aXRoIGNvcnJlY3QgcHJpb3JpdHkKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IGQ3ODNhZDk5MGU5MTRjMGVlMWM5OGQwYTkzYTQyOWViMmIyZjQ5OTcKK0F1dGhvcjogRG91ZyBNYW5sZXkgPHRla2thbWFuZW5kbGVzc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBKdWwgMjkgMjM6MjU6NDAgMjAxMiAtMDcwMAorCisgICAgQ0hBTkdFUzogbGlibmV0c25tcDogUEFUQ0ggMzUyNjU5OTogZnJvbSB0ZWtrYW1hbmVuZGxlc3M6IEEgYnVnZ3kgU05NUHYzIGFnZW50IGNhbiBjYXVzZSBhIG5ldC1zbm1wIGNsaWVudCB0byBoYW5nCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCBlOTg1MTUyMGMxOGQ3ZWQxNzI0MDRhMzdkYzBkYzdhMTM2YmZhZWRkCitBdXRob3I6IERhbmllbCBFdmVycyA8ZGFuaWVsLWV2ZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIEp1bCAyOSAyMzoxNDoxOSAyMDEyIC0wNzAwCisKKyAgICBDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzNTQ4MjU3OiBmcm9tIGRhbmllbC1ldmVyczogZml4IGZvciByZWN1cnNpdmUgcHRocmVhZCBtdXRleGVzCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCBlN2EzNzY3OGMyYjczNTlhZmQ0NGEzMDdlODI0YzFmN2Q3YTBjODdkCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gSnVsIDI5IDIxOjM1OjM1IDIwMTIgLTA3MDAKKworICAgIE5FV1M6IG9zeDogcGF0Y2g6IDM1MTQwNDkgZnJvbSB0d29iaXRzLWdpdGh1YjogZml4IGNvbXBpbGF0aW9uIG9uIGRhcndpbjExCisKK2NvbW1pdCAxMjIxNDI2YWJhZDE1YjliMmZjZWU4ZjFlMzJhYjUyZWYyNjkyOTUyCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgRnJpIEp1bCAyNyAxNDoxODoyNCAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBwZXJsOiBQQVRDSEVTOiAzNTI5NTQxOiBEb24ndCByZWZlciB0byBpbnRlcm5hbCAnbXknIHZhcmlhYmxlcyBmcm9tIGV4dGVybmFsIHNjcmlwdHMKKyAgICAKKyAgICBGaXggcHJvdmlkZWQgYnkgTGV6eiBHaWxlcworCitjb21taXQgOWMwNmMyMjAyZGMwNTY3MDNjODA5NTlhMGVjYTlhNzE2ODRjMjhkZQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIEZyaSBKdWwgMjcgMTM6Mjk6MzAgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogTGludXg6IFBBVENIRVM6IDM1MzY0MjA6IEVuc3VyZSBzbmQvcmN2IG1lbW9yeSBidWZmZXJzIGFyZSBzdWl0YWJseSBhbGlnbmVkCisgICAgCisgICAgUGF0Y2ggcHJvdmlkZWQgYnkgVHlsZXIgT2xtc3RlYWQKKworY29tbWl0IDg5YjgyYzU1ZjllZmQyZThhYjhjNmQ2NWZhNTY3YzViMWZhYzE4NDMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBGcmkgSnVsIDI3IDEzOjE0OjA3IDIwMTIgKzAxMDAKKworICAgICJJZGxlIiBwcm9jZXNzZXMgKGkuZS4gaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgY3JlYXRlZCkgYXJlIHByb2JhYmx5CisgICAgYmVzdCByZWdhcmRlZCBhcyAid2FpdGluZyBmb3IgYW4gZXZlbnQiIHRvIGJlY29tZSBydW5uYWJsZSAtIGkuZS4gJ25vdFJ1bm5hYmxlKDMpJworICAgIFRoYXQgZXZlbnQgYmVpbmcgdGhlIGNvbXBsZXRpb24gb2YgdGhlIGNyZWF0aW9uIHByb2Nlc3MuCisgICAgICAgSXQncyBhcmd1YWJsZSB3aGV0aGVyIG9yIG5vdCB0aGV5IGFyZSBzdHJpY3RseSAibG9hZGVkIiwgYnV0CisgICAgdGhpcyBmZWVscyBsZXNzIG1pc2xlYWRpbmcgdGhhbiByZXBvcnRpbmcgdGhlbSBhcyAnaW52YWxpZCg0KScKKworY29tbWl0IDZlNzgwYTViZjBkNjRiZjQ3ZGZiZjQ3OWFlN2Y1NmMxMGZmODE2NmUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBGcmkgSnVsIDI3IDEyOjU3OjU0IDIwMTIgKzAxMDAKKworICAgIENsYXJpZnkgbWVhbmluZyBvZiBoclNXUnVuU3RhdHVzICdpbnZhbGlkKDQpJworICAgIEVuc3VyZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgYWx0ZXJuYXRpdmVzIGRvbid0IGNvbmZ1c2UgY29kZSBzeW50YXgKKworY29tbWl0IDk5YjM1M2Y3MjUzYTViYjM4Yjg2ZjMxYzI3MDhlMTZiMzRhNDZjZTcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBGcmkgSnVsIDI3IDEyOjUwOjUxIDIwMTIgKzAxMDAKKworICAgIEFkZGl0aW9uYWwgcGF0Y2ggZnJvbSBQYXRjaCBJRCAjMzU0MzAwMAorCitjb21taXQgZDBlMDNmZTRhMjM2OTQ1ZGFmNDJhZjdhNDcwOTRlNjg2ZjliZGI5ZQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIEZyaSBKdWwgMjcgMTI6NDE6MDIgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDM1NDMwMDA6IFZhcmlvdXMgZml4ZXMgdG8gUm1vbiBjb2RlCisgICAgU3VwcGxpZWQgYnkgUGF0cmljayBSaXR0ZXIKKworY29tbWl0IDY2MzJhMmI5YjlmYWQxYTBiMGQ2YmFlZGYyYTJiMzkxZjVkNGU5MTQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgSnVsIDI2IDE0OjM5OjQyIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHBlcmw6IEJVRzogMzUxNzAzMDogRW5zdXJlIGxhcmdlIHRhYmxlcyBhcmUgd2Fsa2VkIHByb3Blcmx5CisKK2NvbW1pdCBiOGQxNjYwNGRiYjJmODBlYmUyODUyMzIyYWE4MzM2MWEwMzIzNzk2CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IEp1bCAyNiAxNDoxOTowNyAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBhcHBzOiBCVUc6IDM1Mjk3Njg6IEJlIG1vcmUgY2FyZWZ1bCB3aGVuIHN0cmlwcGluZyBvZmYgbnVtZXJpYyBzdWZmaXhlcworCitjb21taXQgMGIzYWQ0NGVjNGMxYjlmNDFkYzNlZjcwZTZhMzhhNTNlZjI2OGFkZQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBKdWwgMjYgMTM6MzQ6MTAgMjAxMiArMDEwMAorCisgICAgRml4IGNvbW1lbnRzIGRlc2NyaWJpbmcgRnJlZUJTRCByZWxhdGlvbnNoaXBzCisKK2NvbW1pdCA4Y2Y3YTg5MTg3YTk5NmZhZmYwNDA0MTQ5ODZmZmE1ZDc4ZDU2ODNlCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IEp1bCAyNiAxMzoyMTo1NiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBidWlsZDogQlVHOiAzNTMyMjM0OiBGaXggdHlwbyBpbiBsaWJ0b29sIHNjcmlwdAorICAgIChhZGRyZXNzZWQgcHJvcGVybHkgaW4gbGlidG9vbCAyLjQuMikKKworY29tbWl0IDQyNThkODUyY2E3YjZhZWFlOTNhZDczMDY0ZDQzYWE4MDdlYjYxMDQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgSnVsIDI2IDEzOjE2OjIwIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IGRvYzogQlVHOiAzNTM1MjY5OiBEb2N1bWVudCB1c2Ugb2YgW3NubXBdIGZvciBjbGllbnQtc2lkZSB0b29scy4KKworY29tbWl0IDI2ZWQ0MGNiZDA3Y2YyNzFhOWNmYzQ1MTdkOTY0Nzc0NzEyYWQ3N2MKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgSnVsIDI2IDEyOjU3OjU2IDIwMTIgKzAxMDAKKworICAgIFN1cHBvcnQgbG9jYWwgcm9sbHVwIG9mIHBhdGNoZXMgd2l0aG91dCBmaXJzdCBzeW5jaHJvbmlzaW5nIHdpdGggZXh0ZW5hbCByZXBvLgorCitjb21taXQgOTA0YzQ0MmQ2MGM1Yjk5YWFjZDdmNjAzMDdjMjg2ODRlZmFlODU0YworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBKdWwgMjYgMTI6NTM6MzcgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogcHl0aG9uOiBCVUc6IDM1MzU5Njc6IEZpeCBtZW1vcnkgbGVhayAtIHNubXBfe3Nlc3NffWVycm9yIGFsbG9jYXRlcyB0aGUgb3V0cHV0IGJ1ZmZlcgorCitjb21taXQgNTk3ZWNkYTY4ZWUyYjU4MGI2NjYyODg5NzdiMDRhYTEzMzIwNzUxNworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBKdWwgMjYgMTI6MTc6MTQgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogQlVHOiAzNTQwNjIxOiBkaXN0OiBBZGQgbWlzc2luZyBQcm92aWRlczogdG8gbmV0LXNubXAtcGVybG1vZHMgUlBNIHNwZWMKKworY29tbWl0IDQzZDViYTIyNGMzZjI5ZmQ4ZTdmZDFkMDYwYTE3MDQ1YWFkN2VmZjAKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgSnVsIDI2IDExOjI1OjQzIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHBlcmw6IEJVRzogMzU0MTAxMjogRml4IGhhbmRsaW5nIG9mIGdldHRhYmxlIGNvbHVtbnMKKworY29tbWl0IGJjMjkzYWNhZDhkMzQ4N2NkZGVmM2M3MGNlYTc0MzY4ZjM0ZDkzNTQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgSnVsIDI2IDExOjIwOjIwIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDM1NDM4NjQ6IFJlbW92ZSBleHRyYW5lb3VzIGZ1bmN0aW9uIHR5cGUKKyAgICAoYW5kIGZpeCBhIHJlbGF0ZWQgdHlwbykKKworY29tbWl0IDAyODYxNGVjZjJkNjczOTg2OTlkYzNiZDc4NDAyOWYzMzYwZjJlMTMKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSnVsIDI0IDE1OjM3OjE2IDIwMTIgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBmaXhlZCBzbm1wZCBleGl0aW5nIHNob3J0bHkgYWZ0ZXIgc3RhcnQgZHVlIHRvIGluY29taW5nIHNpZ25hbC4KKworY29tbWl0IDRkMzg4OTVmNDU5YTFkZjI0ZjY4YzRhNjBlNGNhZjZhNzc4ZDhjMWYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVuIDI3IDA5OjM1OjQ0IDIwMTIgLTA0MDAKKworICAgIENIQU5HRVM6IHNubXBkOiByZW1vdmVkIGxpbWl0IG9mICdleGVjJyBhbmQgJ3NoJyBlbnRyaWVzIGluIHNubXBkLmNvbmYKKyAgICAKKyAgICBVc2UgZHluYW1pYyAocmUpYWxsb2NhdGlvbiBpbnN0ZWFkLgorCitjb21taXQgZGNlZWFjYzk5OGZlMjMyMjg4MmU3ZWVkZWMwYTcxYTc5ZGM0OTRhYgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBKdWwgMjQgMDk6MDA6MjMgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgYmUgc3VycHJpc2VkIGlmIHRoZXJlIGFyZSBubyBjaGFuZ2VzIHRvIHZhcmlvdXMgZmlsZXMKKworY29tbWl0IDU2YzNjMDc4MzM2Y2JmMWJmMDlmZDFiMDEwNzhhOTAzMDcxNzYxM2UKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFdlZCBKdWwgMTEgMDg6NDc6MTMgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEJVRyAzNTQyMzA3OiBDb3JyZWN0IHN5c09SSUQgZm9yIHNubXBNUERTdGF0cy4gVGhhbmtzIHRvIERhdmUgVnVjaWNoIGZvciByZXBvcnRpbmcgdGhpcy4KKworY29tbWl0IDYxZWNlZGMwODNmODgxZGI4YTlhNTBkNTBiZGVlZDM2NjI0ZWQzMDcKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFdlZCBKdWwgMTEgMDA6MjE6MjcgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEJVRyAzNTQyMTg4OiBDb3JyZWN0IHN5c09SRGVzY3IgZm9yIHNubXBVc21NSUIuIFRoYW5rcyB0byBEYXZlIFZ1Y2ljaCBmb3IgcmVwb3J0aW5nIHRoaXMuCisKK2NvbW1pdCAyZjllZGU0MTlmNDBlODQ4YTI0MjUzODkyODhjYWMwZTIzMzFiOTkyCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IEp1bCAxOSAxNzoxMDo1MiAyMDEyICswMTAwCisKKyAgICBGaXggZXhhbXBsZSAncnN5bmMnIGNvbW1hbmQgZm9yIGZ1bGwgcmVsZWFzZXMKKworY29tbWl0IDZkZDc4ODRkOTllNzU2ZTJmMjJiNjg4ODIzY2UxYjFkNTI2YWQxNjYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBXZWQgSnVsIDE4IDE1OjU5OjU5IDIwMTIgKzAxMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjYuMgogCiBjb21taXQgOTc2Njk2YTEyOGU1N2I1MTJiZjdhZDQwMGQwMDIzNjhiNGE5YTg3MQogQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CkBAIC01MCwxMiArNzYyLDU0IEBACiAKICAgICBkb24ndCB1c2UgLS1yZWJhc2UKIAorY29tbWl0IGQ0YzE1NDk1OTNjZTJjMmNhZWI5OGU1ZjhhYmZkN2E1YWU1YTAyNzMKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVuIDI3IDA5OjM1OjQ0IDIwMTIgLTA0MDAKKworICAgIENIQU5HRVM6IHNubXBkOiByZW1vdmVkIGxpbWl0IG9mICdleGVjJyBhbmQgJ3NoJyBlbnRyaWVzIGluIHNubXBkLmNvbmYKKyAgICAKKyAgICBVc2UgZHluYW1pYyAocmUpYWxsb2NhdGlvbiBpbnN0ZWFkLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NoYW5nZXM6IFY1LjcuMi5wcmUxIC0+IFY1LjcuMi5wcmUyCisKK2NvbW1pdCBmZmNlNDlmYjFhYjRhNzhkNGYyOTQ3YmUwNmQ2MjBmMTQyNDUyOGZkCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVsIDExIDE3OjEyOjMxIDIwMTIgLTA3MDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LjIucHJlMgorCitjb21taXQgYmQ3YzcyOTcxODc4MThlNWVlZjczMjc2NjdlNGE4MWY2YzlmYzg5YgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1bCAxMSAxNDo1NTozOCAyMDEyIC0wNzAwCisKKyAgICBkb24ndCB1c2UgLS1yZWJhc2UKKworY29tbWl0IGE3MTUzMTJlMmNlNDlkNGRhOTNmYzE0MGNjMzlmYzEwMGIwYjc5NzgKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdWwgMTEgMTU6NDc6MjIgMjAxMiAtMDcwMAorCisgICAgdXBkYXRlZCBmb3IgdGhlIHByZXZpb3VzIDUuNy4yLnByZTEgcmVsZWFzZQorCiBjb21taXQgMTcyNzc2ODliNjI5ZjQ1ODZkNWQ3MTRkODdjZTZiYzExZjg4NzY2OAogQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgV2VkIEp1bCAxMSAxNDo1NTozOCAyMDEyIC0wNzAwCiAKICAgICBkb24ndCB1c2UgLS1yZWJhc2UKIAorY29tbWl0IDY3ODZmZmM3NmZhY2Y3NDZhZmI2YWYyNTE1OGY3OTQwNjU2YWIzOWMKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFdlZCBKdWwgMTEgMDg6NDc6MTMgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEJVRyAzNTQyMzA3OiBDb3JyZWN0IHN5c09SSUQgZm9yIHNubXBNUERTdGF0cy4gVGhhbmtzIHRvIERhdmUgVnVjaWNoIGZvciByZXBvcnRpbmcgdGhpcy4KKworY29tbWl0IGYwZTM1ZDYxZjkyNThkYzYwOGRhOWJmNzE4YWYxNDU3YTg1OWZhMTkKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFdlZCBKdWwgMTEgMDA6MjE6MjcgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEJVRyAzNTQyMTg4OiBDb3JyZWN0IHN5c09SRGVzY3IgZm9yIHNubXBVc21NSUIuIFRoYW5rcyB0byBEYXZlIFZ1Y2ljaCBmb3IgcmVwb3J0aW5nIHRoaXMuCisKIGNvbW1pdCA1MjA2ZDI1ZDRjYjk0ZDRiMGRkMzMxYTVhNDExM2Q0ZDg3NzgyYzQyCiBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBNb24gSnVsIDIgMTI6MTQ6MzkgMjAxMiAtMDcwMApAQCAtNzQsNiArODI4LDE0IEBACiAKICAgICBhZnRlciBwdWxsaW5nIGFsbCB0aGUgYnJhbmNoZXMsIHN3aXRjaCBiYWNrIHRvIHRoZSBpbml0aWFsIG9uZQogCitjb21taXQgODI1OTZhNjlmNWNlNTNkNWE2ZjBhZjQyMTVjOThkNjE4NGRhYjRkNAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIEZyaSBKdW4gMjIgMTQ6MDQ6NTAgMjAxMiArMDEwMAorCisgICAgVW5waWNrIG1lcmdlIGNvbmZsaWN0LgorICAgIChOb3Qgc3VyZSB3aHkgdGhpcyB3YXNuJ3QgZmxhZ2dlZCB1cCBlYXJsaWVyIC0gb3IgbWF5YmUgSSBqdXN0IG1pc3NlZCBpdCEpCisgICAgKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgYjA1YmQ3OGY5ZjIzNGJiNTdhMDBiNTRjNWJmYjFkZTMyYTA5ZjRhNCkKKwogY29tbWl0IDZhMDc1YWU0OTRjNzZiODJlZWE5NjMyN2NmNTI0MmRmMDQ4NzQzZGIKIEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgogRGF0ZTogICBGcmkgSnVuIDIyIDE0OjIxOjA4IDIwMTIgKzAxMDAKQEAgLTg2LDI2ICs4NDgsMzcgQEAKIAogICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjYuMi5yYzMKIAotCi1jb21taXQgNTk1M2NmZDg1NWI3YTU2NTY3MmNlZjk0Mjk0OTcxNDFjN2Q5YmUxMgorY29tbWl0IGIwNWJkNzhmOWYyMzRiYjU3YTAwYjU0YzViZmIxZGUzMmEwOWY0YTQKIEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgogRGF0ZTogICBGcmkgSnVuIDIyIDE0OjA0OjUwIDIwMTIgKzAxMDAKIAogICAgIFVucGljayBtZXJnZSBjb25mbGljdC4KICAgICAoTm90IHN1cmUgd2h5IHRoaXMgd2Fzbid0IGZsYWdnZWQgdXAgZWFybGllciAtIG9yIG1heWJlIEkganVzdCBtaXNzZWQgaXQhKQogCi1jb21taXQgZTcyZTIwNWZkY2VmNzg3ZWY4NDBjOGM5MjhlZDI3MzUxYTY5NTQ0YgorY29tbWl0IDRkMTU3NDJjNzUwYTk2YTRkYmIzZGE4NzQ3NDFhZTE1MjQ4OWY4ZDUKIEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgogRGF0ZTogICBGcmkgSnVuIDIyIDEzOjU4OjA3IDIwMTIgKzAxMDAKIAogICAgIFJlbGVhc2UgQ2FuZGlkYXRlIGZvciBWNS02LXBhdGNoZXMKIAotY29tbWl0IGZlYWJlZjNlNmNhMzViYzBmMTQzNDFlNGNkNmRjOWFmZDE5NTViYTcKK2NvbW1pdCBmNmI1ZTMzNzZlZDNhOGU5ZWFmNzRiN2Q2ODIyYjNhNzY1NzcyZWU4CiBBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KIERhdGU6ICAgRnJpIEp1biAyMiAxMzo1Nzo1NiAyMDEyICswMTAwCiAKICAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNi4yLnJjMwogCitjb21taXQgNWNmYjA4MTExMjdhNjUzZGZmMGY0ZTUzYWQ2MDI5ZTIyOThhNmM2MgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIEZyaSBKdW4gMjIgMTM6Mjg6MzcgMjAxMiArMDEwMAorCisgICAgUmVsZWFzZSBDYW5kaWRhdGUgZm9yIFY1LTUtcGF0Y2hlcworCitjb21taXQgZTcyZTIwNWZkY2VmNzg3ZWY4NDBjOGM5MjhlZDI3MzUxYTY5NTQ0YgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIEZyaSBKdW4gMjIgMTM6NTg6MDcgMjAxMiArMDEwMAorCisgICAgUmVsZWFzZSBDYW5kaWRhdGUgZm9yIFY1LTYtcGF0Y2hlcworCiBjb21taXQgZjc5YTU0ZjI0NzI1MDhiMTY3ZDk3N2YzNjdjMzg2NGI1NjIxZTg5ZAogQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CiBEYXRlOiAgIEZyaSBKdW4gMjIgMTM6NDI6NTMgMjAxMiArMDEwMApAQCAtMTcxLDYgKzk0NCwzMCBAQAogCiAgICAgTW9yZSBwcmVjaXNlbHkgZGVzY3JpYmUgLWMgb3B0aW9uLgogCitjb21taXQgNDhjYzM5ZjFhYTBmYTZjZTk1NWVmNzZiMjVkYjhmOWRjYTA2YjgwZAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IEp1biAyIDA5OjI3OjEwIDIwMTIgLTA3MDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjcuMi5wcmUxCisKK2NvbW1pdCA4MTAxODVhZTBiMGNkMmFkNGQ0MjRhMWJhNzc1ZWY1Y2VhZjUwZjAzCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgSnVuIDIgMDk6MjQ6MTkgMjAxMiAtMDcwMAorCisgICAgbWFrZSBkZXBlbmQgZm9yIDUuNy4yLnByZTEKKworY29tbWl0IDYyNzE0NzFlMDEyODJmMzY3NTcyNGVhZjEzNThjZWIwZTk1ZGRkNGUKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBKdW4gMiAwODozMjo0MCAyMDEyIC0wNzAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNy4yLnByZTEKKworY29tbWl0IGZjYjc4MmFhODg5MzEzNGM3NDE0YTkyNmQ5MjY4NTk0ZjcyNWI5MTUKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBKdW4gMiAwODozMjoxOCAyMDEyIC0wNzAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS43LjIucHJlMQorCiBjb21taXQgZTNiY2Q4N2M3MmZjZWE3NzA2ZTg2OGI1YWNlNzUyOTYwOTNmNzQ5NwogQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CiBEYXRlOiAgIFRodSBNYXkgMzEgMTQ6MDk6NDIgMjAxMiArMDEwMApAQCAtMTk1LDI1ICs5OTIsMzAgQEAKIAogICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjYuMi5yYzIKIAotCi1jb21taXQgNTEwOWFlNzdiNmMxZDU0OWQ5MWUzMjgyN2Y0YTJjYWMwNTM4M2Q1OAorY29tbWl0IGQ5YTE1NDQ1YWE3NGY1MzE2YmZjNzExYzE1NTg0Njc4NzJjMjk1OGMKIEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgogRGF0ZTogICBUaHUgTWF5IDMxIDEzOjUwOjEyIDIwMTIgKzAxMDAKIAogICAgIG1ha2UgZGVwZW5kIGZvciA1LjYuMi5yYzIKIAorY29tbWl0IGJjYWJkMmM5NTQyZGJlYmQxZDMxOWI0NDk0NDEzYmRjY2EwNjYxNGUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEzOjM4OjM4IDIwMTIgKzAxMDAKKworICAgIFJlbGVhc2UgQ2FuZGlkYXRlIGZvciBWNS02LXBhdGNoZXMKKworY29tbWl0IGI0NzM4OThjMGM1YWM5ZWI0N2M3YzA1YTNmNzQ1ZTRmZjJhNzZhYWEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEzOjM4OjI4IDIwMTIgKzAxMDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS42LjIucmMyCisKIGNvbW1pdCAxMzE0MjllNzA2MmZiYWE2NWI4MmFmZmVkMWZiOTJkZjJjMGNjODEzCiBBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KIERhdGU6ICAgVGh1IE1heSAzMSAxMzozODozOCAyMDEyICswMTAwCiAKICAgICBSZWxlYXNlIENhbmRpZGF0ZSBmb3IgVjUtNi1wYXRjaGVzCiAKLWNvbW1pdCAxZmJmZTVlZTNjNDI4NzM0NWM1MTQ2Mjc3NWYzOWUxYmQyNzM1ZTJiCi1BdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KLURhdGU6ICAgVGh1IE1heSAzMSAxMzozODoyOCAyMDEyICswMTAwCi0KLSAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNi4yLnJjMgotCiBjb21taXQgMWM4MTEwYjMzYjgxMDVjYTYxOTA5NDVhMzVmZTdhZTkwMzI1MmQ2OAogQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CiBEYXRlOiAgIFRodSBNYXkgMzEgMTM6MjE6MzggMjAxMiArMDEwMApAQCAtMjkyLDYgKzEwOTQsMTggQEAKIAogICAgIEZpeCBtaXNzaW5nIGluY2x1ZGUuIEZpeGVzIFNJR1NFR1Ygb24gRnJlZUJTRDkgeDY0CiAKK2NvbW1pdCA1ODA1ODc4NzQ5YzA4MDYyZGViZjBhOWQ3OThkMDhmYjkxNmNhYTJkCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gTWF5IDI3IDA2OjIzOjE5IDIwMTIgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBBZGQgbWlzc2luZyBkZWJ1ZyB0YWcKKworY29tbWl0IGQxYTQyYmJjYzdiMTQ3MzBjOWE2ZDk5YzRmMDQ3MDk3ODQzYTU0OWIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIEZyaSBNYXkgMjUgMDk6MDI6MjcgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IFJ1biBsaWJ0b29sIC0tbW9kZT1maW5pc2ggb24gdGhlIHJpZ2h0IGRpcmVjdG9yeQorCiBjb21taXQgMWZiZjMzNzExYTE5ZWFjOTczOWFkMjNmNmY2MjUxZWFjYzQxZjFjNAogQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CiBEYXRlOiAgIFR1ZSBNYXkgMjIgMTQ6NTQ6NDUgMjAxMiArMDEwMApAQCAtNDA2LDEyICsxMjIwLDkxIEBACiAKICAgICBDaGVjayBuZWVkIGZvciAtbG0gdG8gdXNlIHJvdW5kL2V4cAogCitjb21taXQgYTA2MDljZjFmM2E2OTE3ZDI2MzcyNTczMjI0OGNkOTM3YTQ1YWQ5NAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IEFwciA3IDA4OjQwOjQ0IDIwMTIgKzAyMDAKKworICAgIFJlbW92ZSBsaW1pdGF0aW9uIG9uIGNvbmZpZ3VyYXRpb24gbGluZSBsZW5ndGguCisKK2NvbW1pdCAzMDU5NzMzMzhhNjNhZTU0YzVlMDJhODYyNmZiZTlhODA2NGRjYjdlCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgQXByIDcgMDA6MzI6MTkgMjAxMiArMDIwMAorCisgICAgUmVkdWNlIHZhcmlhYmxlIHNjb3Blcy4KKworY29tbWl0IGNjYWI0ZTlkM2VkNDI0YzM5ZDBkYzI3YmU2M2ZhNzZjNzQ2MWVhODEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBBcHIgNyAwMDoxNToyMiAyMDEyICswMjAwCisKKyAgICBJbnRlcm5hbGl6ZSB0aGUgbmFtZSBhbmQgbGluZSBudW1iZXIgb2YgdGhlIGN1cnJldCBjb25maWd1cmF0aW9uIGZpbGUKKworY29tbWl0IGNmODc0YWQ3YjlkYWY0ZmNjMGQ0NmNkZDAzNDQ3NGI0NzgwMDUzNDEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIEZyaSBBcHIgNiAyMTo0NzoyOCAyMDEyICswMjAwCisKKyAgICBSZXBsYWNlICNpZiAoQSkgQiAjZWxzZSBCICNlbmRpZiB3aXRoIEIuCisKK2NvbW1pdCBlZjllYTY0MWJjMjkwZWVjNTA2ODViNjA1MTliMzFiZWU4YjE0YTY5CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciA5IDIxOjA0OjA2IDIwMTIgKzAxMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjYuMi5wcmUyCisKK2NvbW1pdCAzNWFiYTE5NTlkZTExOWYxZmI4OTIwM2MzNzEwOWFhNmYwZTIxYzU3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciA5IDIxOjAwOjQwIDIwMTIgKzAxMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjYuMi5wcmUyCisKIGNvbW1pdCBlNDFmYmFmZjE4YWM5MDk1Y2Y0YTczOWEwNmVjMzlhMWE2Y2NmZGMxCiBBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KIERhdGU6ICAgTW9uIEFwciA5IDIwOjM1OjM1IDIwMTIgKzAxMDAKIAogICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS42LjIucHJlMgogCitjb21taXQgMTM3ZmU1ODJkNmNjNTYxMTQzMGRhYjQ2ZWYxNDRlZmQ4NGNmYzgwMworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIEZyaSBBcHIgNiAyMDo0Njo1NiAyMDEyICswMTAwCisKKyAgICBSZXZlcnQgY29tbWl0IDFmNGE4MjliMTgyNzVlNDk1NmNhOTFlNWVjMzcwZGYwMTVmMDYxMzMKKyAgICAoc25tcF9zdG9yZV9uZWVkZWQoKSBBUEkgaXMgbm90IGF2YWlsYWJsZSBpbiA1Lls0NV0ueCkKKworY29tbWl0IDJiN2U2NDI4OGMwMWE4YTA2MjAyNmM1MjFjYTMxYTVlODg1ZjMwY2MKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDIgMTY6MTI6MTIgMjAxMiArMDEwMAorCisgICAgRnJlZUJTRC05OiBGaXggZm9yICdjb25zdCdpZnllZCBubGlzdCBhcmd1bWVudHMKKyAgICBCYWNrcG9ydCBvZiBlZDY1ZWNhNmU3ZjljZmE3MzgwYTc4ZDU2YzAxZWQzMTQ3NDViMTY5IGZyb20gVjUtNi1wYXRjaGVzCisKK2NvbW1pdCA3ZTk1ZDgwYjY5ODA1MTI1OTY0NWMwNzRhNTNmZmQyNjRhNmZhOTE2CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciAyIDE2OjA2OjU2IDIwMTIgKzAxMDAKKworICAgIEZyZWVCU0QtOTogRml4IGZvciAnY29uc3QnaWZ5ZWQgbmxpc3QgYXJndW1lbnRzCisgICAgQmFja3BvcnQgb2YgZWQ2NWVjYTZlN2Y5Y2ZhNzM4MGE3OGQ1NmMwMWVkMzE0NzQ1YjE2OSBmcm9tIFY1LTYtcGF0Y2hlcworCitjb21taXQgMWE5YjdiN2MwMmUyZGVlZmU5OTRkNTk1YTdjYzFkZDJmZmJlZWUxZAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgMiAxNTo1MToyMCAyMDEyICswMTAwCisKKyAgICBGaXggY29tcGlsYXRpb24gb24gRnJlZUJTRCA5Lnggd2l0aCAncmVjZW50JyBoZWFkZXIgc2h1ZmZsaW5nCisgICAgQmFja3BvcnQgb2YgYzUzZDhjMzUyNWY1OTBmMjIxM2QzNWIwZGE5NDEyMzg2MmYzZTM2NiBmcm9tIFY1LTUtcGF0Y2hlcworICAgIChQYXRjaCAjMzM2MzMwOCAtIG9taXR0aW5nIHR3ZWFrcyB0byBjb25maWd1cmUpCisKK2NvbW1pdCAzZDlkZGI0MWUyNjNiYzFhNzhmOWY5NDQwYjhkNGFkNGY4NmM4MmUxCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciAyIDEwOjM2OjE4IDIwMTIgKzAxMDAKKworICAgIEZpeCB0eXBvCisgICAgQmFja3BvcnQgb2YgNWI3MDJiMDI0YjYwMTc2ZDdmNTY5OWI5MmU1NWRhNTBhOGRlYWU3MSBmcm9tIFY1LTYtcGF0Y2hlcworCitjb21taXQgMGQzNWM2MDk1NjRiNjZhMWZmZTgxNTU2ZDM3YWRmMDUwM2MzODljZQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgMiAxMDoxNTowOCAyMDEyICswMTAwCisKKyAgICBQcm92aWRlIG1pc3NpbmcgZGVmaW5pdGlvbiBvZiBORVRTTk1QX1BSSW8KKyAgICAodXNlZCBpbiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX3NvbGFyaXMyLmMpCisKIGNvbW1pdCBhNzkxNDFhNDE5OTUzZDAxMGE2OTg5ZThiODhmNGRmMTI3Mzk0ZDM4CiBBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KIERhdGU6ICAgTW9uIEFwciAyIDA5OjE5OjI2IDIwMTIgKzAxMDAKQEAgLTQxOSw2ICsxMzEyLDI2IEBACiAgICAgSGVhZGVyIGZpZGRsaW5nIGZvciBGcmVlQlNELE9wZW5CU0QsRHJhZ29uZmx5CiAgICAgQmFja3BvcnQgb2YgZjdiMGRlMTUxODAwMmM2ZThmOWI5NGVmM2RlYjg4ODJlMWU5MzM4ZSBmcm9tIFY1LTctcGF0Y2hlcwogCitjb21taXQgYWRmNzRiZjc1M2QzOTcwMzU3YWZkNjMzODAzMjU2MjQxZDljN2I4NworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgMiAwODoyMDo0NiAyMDEyICswMTAwCisKKyAgICBGaXggSVB2NiBUQ1AgJiBVRFAgdGFibGVzLCAqQlNEIHN1cHBvcnQgKGluY2x1ZGluZyBPcGVuQlNEKQorICAgIEJhY2twb3J0IG9mIGNvbW1pdHMgNWNkMTU3MzYyNTQ3MWMwNTgzZTkwODdhZWM2ODAyYjc3MTU3ZDVhMgorICAgICAgYW5kIDUwZDczZjBkNTZmZTIyYzU5MDUzMGIzZTMwNWQ0MWRjZGFjM2NlMDAgZnJvbSBWNS02LXBhdGNoZXMKKworY29tbWl0IGQ5NTU1YWNiOWY0N2MzYWE4ZmRlNGJjMjBhNDRkN2NhNjE4MWE4YTkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBNYXIgMjUgMTg6NDg6MTIgMjAxMiArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogQXZvaWQgZGFuZ2xpbmcgcG9pbnRlcnMgKGJhc2VkIG9uIHBhdGNoIDM1MDMyNTkpCisKK2NvbW1pdCA4MmE4YjQ3ZWU5NmU1ZDI5YTJiN2FjM2NhMDA3MjJkNzM3ZDViNDc5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWFyIDI5IDIyOjMxOjU2IDIwMTIgKzAyMDAKKworICAgIFJ1bm5pbmcgYXV0b2hlYWRlciAvIGF1dG9jb25mCisKIGNvbW1pdCA5Y2E4ZDkzOWFiMzkzMzA2YTFkMGYxNDZjOWNiNzBlYTBjYjE5ZDQ5CiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBUaHUgTWFyIDI5IDIyOjMwOjM4IDIwMTIgKzAyMDAKQEAgLTQ2MSw2ICsxMzc0LDQyIEBACiAKICAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDM0ODc4Njc6IERvbid0IHNraXAgbWlzc2luZyBpZlhUYWJsZSBlbnRyaWVzIChpZkNvbm5lY3RvclByZXNlbnQgRkFMU0UpCiAKK2NvbW1pdCAxMjkwNjU3OGFiMzBjZjc3NmQwODBjMGVmMzAyNWIzMDMzNGQ3NjU1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDI2IDE2OjE3OjQ1IDIwMTIgKzAyMDAKKworICAgIERJU01BTi1QSU5HLU1JQjogRml4IGV2ZW4gbW9yZSBtZW1vcnkgbGVha3MKKworY29tbWl0IGNjZmQ1Y2E2ZmUxMDMxM2Q2MTgxZDI0YmJiMTc5NzgyNWE5N2RhMTAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBNYXIgMjYgMTU6NTE6MTYgMjAxMiArMDIwMAorCisgICAgRElTTUFOLVBJTkctTUlCOiBFbGltaW5hdGUgZHVwbGljYXRlIGNvZGUKKworY29tbWl0IDlmZGEyNjY4NzIyZjA4ZGRiZmRkNjdhMjIzOWQ4YjAyMWRiNjRhODMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBNYXIgMjYgMTU6NDg6NDYgMjAxMiArMDIwMAorCisgICAgRElTTUFOLVBJTkctTUlCOiBXcml0ZSBhIGxvb3AgYXMgYSBsb29wCisKK2NvbW1pdCBjYmMxOGViNzYzYmE2ZGY2OWVmNzA2NjhhNTRkNzViZjM1ZTc5NTAzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDI2IDE1OjI0OjA4IDIwMTIgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IEZpeCBtb3JlIG1lbW9yeSBsZWFrcworCitjb21taXQgYzc3MjUxOTI0NzhhZWMwMThmYjRhZWZhNjA5NDZlMDRhNDA2YzAwYworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE1hciAyNiAxMzo0MzoyNCAyMDEyICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBBdm9pZCByZWFkaW5nIGZyZWVkIG1lbW9yeSB3aGVuIGRlbGV0aW5nIGEgcm93IGZyb20gYSB0YWJsZQorCitjb21taXQgYTZiZTczOTU2NmYzMTBkNzQ0MWZkN2Y1NDk4OWUzOTQ0NmY3YTE0MworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE1hciAyNiAxMzo0MjoyOCAyMDEyICswMjAwCisKKyAgICBFeHRlbmQgRElTTUFOLVBJTkctTUlCIHRlc3QKKwogY29tbWl0IDhhOWI1NzI5MTQ1M2NiOGFlYzI4ZTc2NmM1OTQ3MDFlZDE5YzRmYzYKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIE1vbiBNYXIgMjYgMjE6MDM6NDEgMjAxMiArMDIwMApAQCAtNTAzLDYgKzE0NTIsODQgQEAKIAogICAgIFByb3Blcmx5IGZpbmQgcGFzcyBoZWxwZXJzIGZvciB0ZXN0aW5nLgogCitjb21taXQgZmUyNmEzYzRmMjlmMDQ2YmY2NWVkNTJlOWQ5NDA1NGI2NzVmYmM0YgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IE1hciAyMiAwOTowNDo0MiAyMDEyICswMTAwCisKKyAgICBESVNNQU4tUElORy1NSUI6IExpbWl0IHNvdXJjZSBjb2RlIGxpbmVzIHRvIDgwIGNvbHVtbnMKKworY29tbWl0IDc0NWJhZmNkY2M5YzhlODQ2MTZkNGUyNzRkYjJhMzg0YmYyMzRkYTIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBNYXIgMjIgMDg6NTU6MDUgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogTWFrZSBwaW5nIGltcGxlbWVudGF0aW9uIGluZGVwZW5kZW50IG9mIG50cGQgY2xvY2sganVtcHMKKworY29tbWl0IGRhNjkyNWU2NzYzY2FkYmUwMmY0YThiYmZlNjhhMzYyZTUzNWFkNWUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBNYXIgMjAgMTA6Mzg6MzYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogQWRkIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDE1NGRpc21hbnBpbmdtaWJfc2ltcGxlCisKK2NvbW1pdCBmYTYwNmRkN2NhNmFmZjkzMDhkNGU4YjAxYmJjZGUxNDhmNDQxMjcxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTWFyIDIwIDE2OjQ5OjIxIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IE1ha2UgcGluZ2luZyBsb2NhbCBpbnRlcmZhY2UgYWRkcmVzc2VzIHdvcmsKKworY29tbWl0IDYxN2E4M2JhNzk5NTc1Yzg0YzY2ZjZiMWM0ODBlZjYzMzE2MWE2NGMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBNYXIgMjAgMTY6Mjg6NDYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogRml4IGEgc29ja2V0IGxlYWsgdHJpZ2dlcmVkIGJ5IHBpbmdpbmcgYSByZW1vdGUgaG9zdAorCitjb21taXQgNjI1ZjU1YzI3MmVjNjI4MWUzOGQ4ZTMwZWI1M2ZkNTE1MTZiMDBhZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IE1hciAyMiAwOTo1NDo1NSAyMDEyICswMTAwCisKKyAgICBESVNNQU4tUElORy1NSUI6IENvbnZlcnQgYSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgdmFyaWFibGUgaW50byBhIHN0YWNrIHZhcmlhYmxlCisKK2NvbW1pdCBiNDhmMTlhZDRiNGFhNjhjM2UxNmUyYTcyZGYzN2I5YzBjZDM2YzRhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTWFyIDIwIDE2OjI0OjA3IDIwMTIgKzAxMDAKKworICAgIERJU01BTi1QSU5HLU1JQjogQWRkIG1vcmUgZGVidWdnaW5nIHN0YXRlbWVudHMKKworY29tbWl0IGQ3NGNiMzk2NjE3NTg5MjU2MmY1ZTNhOWIxNjgzYWNiYTJjMjJlMDcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBNYXIgMjAgMTE6NDU6MTggMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogRml4IHNldmVyYWwgbWVtb3J5IGxlYWtzCisKK2NvbW1pdCAwYjFhNzc2NzQ2NzhjYzlhMTViZTNlNzcwMGQzY2VmNjUwZWQwMmM3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTWFyIDIwIDEyOjAwOjMwIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IERvIG5vdCBzZW5kIHRoZSBjb250ZW50cyBvZiB0aGUgc3RhY2sgb3ZlciB0aGUgbmV0d29yaworCitjb21taXQgMTM5MDIzY2QzYWI1MTYzMWNjMTBlMjg2NmQ3MWFiY2Y5OWFlNGMxYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE1hciAyMSAwODo1NjowNyAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBEb24ndCBjYWxsIGV4aXQoKSB1cG9uIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUKKworY29tbWl0IDE2OWI2YWFhN2I2MTgyN2NjMWFkMGIzYWVlYWUzYTcyMjlkZDI1ZDgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBNYXIgMjEgMDg6NTM6MjYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogRml4IElQdjYgc29ja2V0IGxlYWsgaW4gZXJyb3IgcGF0aHMKKworY29tbWl0IGEwYmUzMmFkMDUzYTcxZmE5NjEzNGQ1NWU1NDJiYjA3ZDRmMDI5N2QKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBNYXIgMjAgMTE6NDM6NDYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogQXZvaWQgdGhhdCBob3N0IG5hbWUgcmVzb2x1dGlvbiBmYWlsdXJlIGNhdXNlcyBhIGNyYXNoCisKK2NvbW1pdCBiZjliZmY2NDU1Njc4N2Q3NjZlZTJlZjJkNTc4YWZiOTIwNzE5ZjNhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTWFyIDIxIDA4OjUxOjU1IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IENvbnZlcnQgcHJpbnRmKCkgc3RhdGVtZW50cyBpbnRvIHNubXBfbG9nKCkgYW5kIERFQlVHTVNHKCktc3RhdGVtZW50cy4KKwogY29tbWl0IDVkNzRjMDEyNDU1MjNhOWQ4ZGIxZWRhMjdkMWVmYWUyZWJjMTA0ZmIKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIFdlZCBNYXIgMjEgMTg6NDA6MDIgMjAxMiArMDEwMApAQCAtNTU5LDYgKzE1ODYsMTggQEAKIAogICAgIEFsbG93IGRpc3RyaWJ1dGlvbiBhcyBwYXJ0IG9mIG5vcm1hbCBOZXQtU05NUCBwYWNrYWdlcy4KIAorY29tbWl0IDU5OTlmNjBjNTc3MjNmMjNmM2MyNTRhZjU3ZmRiMTBhZjMwMWE4ZWIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBNYXIgMTggMTk6MDM6MDggMjAxMiArMDEwMAorCisgICAgUmVnZW5lcmF0ZQorCitjb21taXQgMjc1ZDIwNDAzNmE2MDdlM2RmNTBlODQ0N2Q0YmM3NTVlOWRiMDJmZAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIEF1ZyAyOCAyMToyOTowMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogTWFrZSBpdCBwb3NzaWJsZSB0byB1c2UgLS1kaXNhYmxlLWFwcGxpY2F0aW9ucy8tLWRpc2FibGUtYWdlbnQgdG9nZXRoZXIgd2l0aCAtLWVuYWJsZS1taW5pbWFsaXN0CisKIGNvbW1pdCBiZGNjYzg3NTcxMDI5NWFhY2Y1MGY3MWViMWMxZDJlZTk3ZjMzNmZlCiBBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgogRGF0ZTogICBGcmkgTWFyIDE2IDIwOjEwOjU4IDIwMTIgKzAxMDAKQEAgLTU3MSwxMiArMTYxMCwzNyBAQAogCiAgICAgQ2hlY2sgdGhhdCB0aGUgZGF0YSBleGlzdCBiZWZvcmUgdHJ5aW5nIHRvIHJlYWQgaXQKIAorY29tbWl0IGVmYWU4NmJiYTU5NjI0OTFkNDJiNzdiOTM1MTkxYTNlYjI1ZGQ5MzkKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFdlZCBNYXIgMTQgMDE6MDU6MzMgMjAxMiArMDEwMAorCisgICAgUGFydGlhbGx5IHJldmVydCAiTWVyZ2UgcmVtb3RlIGJyYW5jaCAnb3JpZ2luL1Y1LTctcGF0Y2hlcycgaW50byBWNS03LXBhdGNoZXMiCisgICAgCisgICAgQ29tbWl0IGQzNWExODYwMjE3ZTcyM2U0Zjg2NmRkOThlZjY2MjE2NjU5MzRjNGEgYWNjaWRlbnRhbGx5IHJldmVydGVkCisgICAgCisgICAgNGEyZTViY2Q1NmNkMmFmYjM2ZWIxNWQ3NTRlMmZlZTg4OGRkNTBjMCAoaHJoX3N0b3JhZ2UgaXMgYSBwcm9wZXIgcmVwbGFjZW1lbnQgZm9yIGhyX3N0b3JhZ2UpCisgICAgMGRkMWU1NDU1N2QxYmE0OThiNTVkMDE3YjBhOTNlOGNjZjliZDUyMiAoQ0hBTkdFUzogc25tcGQ6IFVEUC1NSUI6IFJlcG9ydCB0aGUgcHJvcGVyIGFkZHJlc3MgaW4gdWRwTG9jYWxBZGRyZXNzKQorICAgIDUxMTZkNDgzNzhlY2YwM2U3MjJmMzAxMGFkNDdiZjIyYTNmYmNiOGMgKFJlZHVjZSBzY29wZSBvZiBwcmVmaXhfdmFsIHN1Y2ggdGhhdCB0aGUgY29tcGlsZXIgZG9lc24ndCB3YXJuIGFib3V0IGFuIHVuc2VkIHZhcmlhYmxlKQorICAgIDEwZjU2NmY0ZDRjYmIzZTIwNTAyM2MyMzY2OTI4OWU0YmZkMDg5Y2IgKHBlcmwvU05NUC9TTk1QLnhzOiBGaXggYSBjb21waWxlciB3YXJuaW5nKQorICAgIAorICAgIGFuZCBwYXJ0IG9mCisgICAgCisgICAgNmU3NGQ2NGY4NWE1OWQ1MGU0NjFkYjRjMzRhYzc2ZjlkZTQ2OGJmYiAoQXZvaWQgdXNpbmcgZ3JlcCBvcHRpb25zIC1xIGFuZCAtdyBiZWNhdXNlIGdyZXAgaW4gU29sYXJpcykKKyAgICAKKyAgICBUaGlzIHJldmVydHMgdGhvc2UgcmV2ZXJ0cy4KKwogY29tbWl0IGFhZWRkNTljYzJkYTcwMTUyN2RjMmQyNjFkNGU5Zjg1ZjE2ZTc1MDQKIEF1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CiBEYXRlOiAgIFN1biBNYXIgMTEgMjA6NTc6MzggMjAxMiArMDEwMAogCiAgICAgQWxsb3cgbWFrZSB0ZXN0IHdoZXJlIHRoZSBzb3VyY2UgcGF0aCBjb250YWlucyB0aGUgc3RyaW5nIE5ldC1TTk1QIHRvIHN1Y2NlZWQuCiAKK2NvbW1pdCA0Yjk0ZDc5NjkxOGE0ZWVhZTY4YWIyMWFhNTNkNDQ0YThiNWMyOTIxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgTWFyIDkgMDg6MDQ6NTkgMjAxMiArMDEwMAorCisgICAgVW5icmVhayBjb21waWxhdGlvbiBvbiBGcmVlQlNEIDQKKwogY29tbWl0IDEwZmU2YjgzMzI0YWQzN2QxOGI5MzdjYzhjNmRlOTRkZTUzNGQwMzUKIEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgogRGF0ZTogICBUaHUgTWFyIDggMTM6MDQ6MDcgMjAxMiArMDAwMApAQCAtNTk1LDYgKzE2NTksMTQgQEAKIAogICAgIG1ha2UgZGVwZW5kIGZvciA1LjYuMi5wcmUxCiAKK2NvbW1pdCAwZWYzNGU2NTE5ZGZjYjgyYzk3ZGY4NDI3NTQ3YzA4ZGNmODFlNjlhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1hciA4IDEwOjExOjMwIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBGaXhlZCBzbm1wZCAnLWQnIG9wdGlvbi4KKyAgICAKKyAgICBOb3cgaXQgZHVtcHMgcGFja2V0cyBhZ2Fpbi4KKwogY29tbWl0IDhlNjk3NDJmMTQzZTRmYzExMTk2ZTViMmVkNjZjOGY3ZjUzZmQwMmYKIEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgogRGF0ZTogICBUdWUgTWFyIDYgMDk6MjQ6MjEgMjAxMiArMDAwMApAQCAtNjQ3LDYgKzE3MTksMTIgQEAKICAgICAKICAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTY1MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKIAorY29tbWl0IGU0MWYxMTVlNDAzMDRjOTQxYmExN2Q2N2UyNDcxMDcyMmQ5MDc0MWIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBNYXIgNSAxMzozOToxNyAyMDEyICswMTAwCisKKyAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBBdm9pZCB1c2luZyBncmVwIG9wdGlvbnMgLXcgYW5kIC1xIGJlY2F1c2UgZ3JlcCBpbiBTb2xhcmlzJyBkZWZhdWx0IHBhdGggZG9lc24ndCB1bmRlcnN0YW5kIHRoZXNlLgorCiBjb21taXQgNTExNmQ0ODM3OGVjZjAzZTcyMmYzMDEwYWQ0N2JmMjJhM2ZiY2I4YwogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KIERhdGU6ICAgTW9uIE1hciA1IDEwOjQ3OjIwIDIwMTIgKzAxMDAKQEAgLTY2NSw2ICsxNzQzLDMwIEBACiAKICAgICBwZXJsL1NOTVAvU05NUC54czogRml4IGEgY29tcGlsZXIgd2FybmluZwogCitjb21taXQgNDRhYTI2NTg5MWNkNTYzZjdmNDExNGVmMjVkY2Y3YWFmM2IxNGU5YQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXIgNSAwOTowNjo1MiAyMDEyICswMDAwCisKKyAgICBNYXJrIHRoZSBjaGFuZ2VzIG1ha2UgYXMgcGFydCBvZiB0aGUgcmVsZWFzZSBwcm9jZXNzIGFzIHNwZWNpZmljIHRvCisgICAgdGhlIHBhcnRpY3VsYXIgYnJhbmNoIGJlaW5nIHJlbGVhc2VkLiAgVmVyc2lvbiB0YWdzLCBjaGFuZ2Vsb2cgZW50cmllcworICAgIGFuZCB0aGUgbGlrZSBzaG91bGRuJ3QgcHJvcGFnYXRlIHRvIGxhdGVyIGJyYW5jaGVzLgorCitjb21taXQgZGFlNGUxNmJlODYxMTc4NjFmNjNkMWEyZjk4MWFkMzYxNDE4ZjVjNgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXIgNSAwOTowNjo1MiAyMDEyICswMDAwCisKKyAgICBNYXJrIHRoZSBjaGFuZ2VzIG1ha2UgYXMgcGFydCBvZiB0aGUgcmVsZWFzZSBwcm9jZXNzIGFzIHNwZWNpZmljIHRvCisgICAgdGhlIHBhcnRpY3VsYXIgYnJhbmNoIGJlaW5nIHJlbGVhc2VkLiAgVmVyc2lvbiB0YWdzLCBjaGFuZ2Vsb2cgZW50cmllcworICAgIGFuZCB0aGUgbGlrZSBzaG91bGRuJ3QgcHJvcGFnYXRlIHRvIGxhdGVyIGJyYW5jaGVzLgorCitjb21taXQgMjhmNjIyNmYyZTIyOGI4Y2EyNDg0ODk3MzVmODY1MDJiMmNjZTBhMQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXIgNSAwOTowNjo1MiAyMDEyICswMDAwCisKKyAgICBNYXJrIHRoZSBjaGFuZ2VzIG1ha2UgYXMgcGFydCBvZiB0aGUgcmVsZWFzZSBwcm9jZXNzIGFzIHNwZWNpZmljIHRvCisgICAgdGhlIHBhcnRpY3VsYXIgYnJhbmNoIGJlaW5nIHJlbGVhc2VkLiAgVmVyc2lvbiB0YWdzLCBjaGFuZ2Vsb2cgZW50cmllcworICAgIGFuZCB0aGUgbGlrZSBzaG91bGRuJ3QgcHJvcGFnYXRlIHRvIGxhdGVyIGJyYW5jaGVzLgorCiBjb21taXQgNDAwMjJhNjk3OTU4MjU5Y2NmYmIzZmVkNDRlYjNjNDcyZjVlODM3ZQogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgU3VuIE1hciA0IDEwOjM3OjQxIDIwMTIgKzAxMDAKQEAgLTY5NSw2ICsxNzk3LDEyIEBACiAKICAgICBwYXNzcGVyc2lzdCB0ZXN0IG5lZWRzIC91c3IvYmluL3BlcmwKIAorY29tbWl0IDg3MjY5OTVjN2E4YWVmNjc0YzRmMTY0YjE4NzFjMzdiYmRjZGFkNTAKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXIgMiAyMTozNjo1OCAyMDEyICswMTAwCisKKyAgICBncmVwIC13IGZhaWxzIHdpdGggT3BlbkJTRCBhbmQgU29sYXJpcyAxMC02NAorCiBjb21taXQgMWViNDc0NWIyM2NjM2E4Mzk4NjRlN2Y2ZWEyODM1NWIwNTY2ZWI2NwogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgRnJpIE1hciAyIDIxOjM1OjQ5IDIwMTIgKzAxMDAKQEAgLTcwNyw2ICsxODE1LDE4IEBACiAKICAgICBNYWtlIHN1cmUgd2UgaGF2ZSB0aGUgcHJvcGVyIHNyY2RpciBmb3Igb3V0LW9mLXNvdXJjZSBidWlsZHMKIAorY29tbWl0IDc4MzY5MDAyYmUyNzExZjBhYTg3NmI2NGE0ZTEwYjA5MGNjMjQxY2QKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXIgMiAyMTozMzozMSAyMDEyICswMTAwCisKKyAgICBOb3QgYWxsIG1ha2UgdmVyc2lvbnMgZGVmaW5lICQoUk0pCisKK2NvbW1pdCA5NDI0NWIyOWEzY2RhODk0NzVjNmVhYjVkOTQ5M2M2NjU3ZmYzOGUzCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWFyIDIgMjE6MjQ6MjQgMjAxMiArMDEwMAorCisgICAgTWFrZSBhdXRvY29uZiAyLjY4IGhhcHB5CisKIGNvbW1pdCA0NGFjZDZjMjg1ZmI1NjE0YjRjOTYxMWIxYWJkZWNhOWRkMjhlNGJiCiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBGcmkgTWFyIDIgMjE6MTI6NDcgMjAxMiArMDEwMApAQCAtNzQ5LDYgKzE4NjksMTIgQEAKIAogICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjUuMi5wcmUxCiAKK2NvbW1pdCAyZTc0YWNiNmYxOWU0NzI5Y2VkZTBhYjQzZTkzMTk2MWNiMjNhYWVhCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUaHUgTWFyIDEgMDk6MTg6MzkgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogQnVnIDMxNTI4NDE6IERvIG5vdCBpbnN0YWxsIHRoZSB1dGlsX2Z1bmNzIHN1YmhlYWRlcnMgdGhhdCB3ZXJlIHJlbW92ZWQgaW4gNS43CisKIGNvbW1pdCBiNzEwOTY0NmI5NWE3MDcxM2QxYWQ5OTFkNDFiY2NkNTdjMGJiM2ViCiBBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgogRGF0ZTogICBUaHUgTWFyIDEgMDg6NDg6NDggMjAxMiArMDEwMApAQCAtODAzLDYgKzE5MjksMTggQEAKIAogICAgIENIQU5HRVM6IHNubXBkOiBCVUdTOiAzNDYwMzY0OiBGaXggdXNlIG9mIGJsb2NrIGZhY3RvciB3aGVuIGRldGVjdGluZyBlcnJvciBjb25kaXRpb25zCiAKK2NvbW1pdCAwMzRmMWM1NzJmNjgzZWE0Mjg1ODMwNzQ0NzFlNWQ1ZDEzYjUxODM3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEZlYiAyOCAxMDoyMjoyMCAyMDEyICswMDAwCisKKyAgICBTa2lwIFNFVC1iYXNlZCB0ZXN0cyB3aGVuIGNvbmZpZ3VyZWQgdXNpbmcgLS1lbmFibGUtcmVhZC1vbmx5CisKK2NvbW1pdCAzNjQyM2UyMTBiZmI2NWVmMTIxYzZhNjZhZWM0MzhjN2MyMzdkM2RmCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEZlYiAyOCAxMDowMzoyNSAyMDEyICswMDAwCisKKyAgICBDSEFOR0VTOiBCVUc6IDM0NTQxNjg6IGNvbmZpZ3VyZTogRml4IGJ1aWxkaW5nIHdpdGggLS1lbmFibGUtcmVhZC1vbmx5CisKIGNvbW1pdCBlZWQwYmNiYzQzZmVhMTgyNTlmMGY2M2IyMDgxYjZkMTA1MzVhMDUyCiBBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KIERhdGU6ICAgVHVlIEZlYiAyOCAwOToyNzoxMSAyMDEyICswMDAwCkBAIC04MTAsNiArMTk0OCwxOCBAQAogICAgIFNraXAgU0VULWJhc2VkIGJhYnktc3RlcHMgd2hlbiBjb21waWxlZCB3aXRoIC0tZGlzYWJsZS1zZXQtc3VwcG9ydC4KICAgICBJbnNwaXJlZCBieSBidWcgIzM0NTQxNjgKIAorY29tbWl0IGVjNmEyMzAzMGU1YTIwNzJjMTljMThjMWQ5YzEyNDM4N2RhNTZiN2IKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgMjcgMTg6NDI6NTggMjAxMiArMDAwMAorCisgICAgQWRkIC1scnQgdG8gTkVUU05NUExJQlMgc3VjaCB0aGF0IGNsb2NrX2dldHRpbWUoKSBjYW4gYmUgZm91bmQKKworY29tbWl0IGYxMzMyMDUwMDI5NGJiMjQwZjYzYzZkZDdkMmU5YTIyMDhlYjc0MGQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gRmViIDI3IDE2OjUyOjUxIDIwMTIgKzAwMDAKKworICAgIFNraXAgU0VULWJhc2VkIHRlc3RzIHdoZW4gY29tcGlsZWQgdXNpbmcgLS1kaXNhYmxlLXNldC1zdXBwb3J0CisKIGNvbW1pdCBjNDI3NmI2MjMyYzI5MTQ1YzAzOTg4NGU2YjVhNmI2ZGE0YjkzODM3CiBBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KIERhdGU6ICAgTW9uIEZlYiAyNyAxNTo1NDo0NSAyMDEyICswMDAwCkBAIC04MjMsNiArMTk3MywxMiBAQAogICAgIE9taXQgU0VULXJlbGF0ZWQgY29kZSB3aGVuIGNvbXBpbGluZyB3aXRoIC0tZGlzYWJsZS1zZXQtc3VwcG9ydAogICAgIChpbnNwaXJlZCBieSBwYXRjaCAjMzQyNDkzMCkKIAorY29tbWl0IDk0ODRkODMyMDNjNGUyZDgyMDQxNmJlNjY1ZmE4MzNhYTcwNDQ0ZDIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBGZWIgMjQgMTQ6MDA6MzIgMjAxMiArMDEwMAorCisgICAgUmV3b3JrIGNvbW1pdCBiNGExOTUwNWEwNTgxNmU5NGUwMWRlOTdiZjk5YWMzN2ZjZGM2ZDIzLgorCiBjb21taXQgMmI3ZjEzNDk1MjI4NjM1ZDgxNmU1OGIyMTc0ZGMxMjRkZDBjZjM5ZgogQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgRnJpIEZlYiAyNCAwNzo0MzoyMiAyMDEyIC0wODAwCkBAIC04NDEsNiArMTk5NywyNCBAQAogCiAgICAgUmVtb3ZlIG9ic29sZXRlIHN5bWJvbCBORVRTTk1QX0VYSVRfT05fQkFEX0tMUkVBRAogCitjb21taXQgYzM2YWI3MWE0ZTA5NmYxNmNjNWE1NTUzM2YwODBjOWE5NDAwOTkxNAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyMyAwODo1Mzo1NiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBGcmVlQlNEOiBzbm1wZCArIGFwcHM6IFNlbmRpbmcgVURQIHBhY2tldHMgd29ya3MgYWdhaW4gZm9yIG5vbi1yb290IHVzZXJzCisKK2NvbW1pdCBlZGViZGRiYTkzMGY4YjE0NzJmYTBiZDIwZmM0MTNlZjhjZjQ2NGEyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgRmViIDIxIDExOjMxOjQ2IDIwMTIgKzAxMDAKKworICAgIHRlc3RpbmcvUlVOVEVTVFM6IEZpeCBhIGJhc2hpc20KKworY29tbWl0IGI0YTE5NTA1YTA1ODE2ZTk0ZTAxZGU5N2JmOTlhYzM3ZmNkYzZkMjMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgMjAgMTY6NTg6NDcgMjAxMiArMDEwMAorCisgICAgRml4IGNvbXBpbGVyIHdhcm5pbmdzIGFib3V0ICVsZCB2ZXJzdXMgdGltZV90IG9uIHN5c3RlbXMgd2hlcmUgdGltZV90IGlzIGEgc3lub255bSBmb3IgbG9uZyBsb25nIGluc3RlYWQgb2YgbG9uZy4KKwogY29tbWl0IGQ4OTc4ZWNjODIxMWJlN2MxZTc5MDVmMWUyMTViYjA2ZGVkMjY2YjYKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CiBEYXRlOiAgIFR1ZSBGZWIgMjEgMTI6MzI6MjUgMjAxMiArMDEwMApAQCAtODU5LDYgKzIwMzMsMjIgQEAKIAogICAgIEZpeCBhIGNvbXBpbGVyIHdhcm5pbmcgb24gc3lzdGVtcyB3aGVyZSBtb2RlX3QgaXMgdW5zaWduZWQKIAorY29tbWl0IGY4YTNlZjBkM2Q0ZTUzMDI3OTkwMDEwMTA0OWI4ZGU5OGE0NGE2ZmIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAxNDo0ODo1MiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliICsgc25tcGQgKyBzbm1wd2FsazogQXZvaWQgdGhhdCBzeXN0ZW0gY2xvY2sgY2hhbmdlcyAoZS5nLiBieSBudHBkKSBhZmZlY3QgY29kZSB0aGF0IG5lZWRzIHJlbGF0aXZlIHRpbWUKKyAgICBDSEFOR0VTOiBzbm1wZDogTWFrZSBzdXJlIHRoYXQgdGhlIHJhbmdlIG9mIHRoZSBTTk1QdjMgdmFyaWFibGUgc25tcEVuZ2luZVRpbWUgaXMgMC4uMjE0NzQ4MzY0NyBvbiBhbGwgc3VwcG9ydGVkIHN5c3RlbXMgaW5zdGVhZCBvZiAwLi40Mjk0OTY3MiBvbiBzb21lIHN5c3RlbXMgKGkuZS4gd3JhcGFyb3VuZCBhZnRlciA0OTcgZGF5cykKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBBZGQgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCksIG5ldHNubXBfc2V0X21vbm90b25pY19tYXJrZXIoKSwgbmV0c25tcF9yZWFkeV9tb25vdG9uaWMoKSwgbmV0c25tcF9nZXRfYWdlbnRfcnVudGltZSgpCisgICAgQ0hBTkdFUzogc25tcGxpYjogRGVwcmVjYXRlIGF0aW1lX2RpZmYoKSwgYXRpbWVfbmV3TWFya2VyKCksIGF0aW1lX3JlYWR5KCksIGF0aW1lX3NldE1hcmtlcigpLCBtYXJrZXJfdHRpY2tzKCksIG5ldHNubXBfbWFya2VyX3VwdGltZSgpLCBuZXRzbm1wX3RpbWV2YWxfdXB0aW1lKCksIHRpbWV2YWxfdHRpY2tzKCksIHVhdGltZV9kaWZmKCksIHVhdGltZV9oZGlmZigpIGFuZCB1YXRpbWVfcmVhZHkoKS4KKyAgICBDSEFOR0VTOiBzbm1wbGliOiBDaGFuZ2UgdGhlIG5hbWVzIG9mIHRoZSBzdHJ1Y3QgdGltZXZhbCBtZW1iZXJzIG9mIGRhdGEgc3RydWN0dXJlcyB0aGF0IHdlcmUgdXNlZCB0byBzdG9yZSBhIHdhbGwgY2xvY2sgdGltZSBidXQgdGhhdCBkbyBub3cgY29udGFpbiBhIG1vbm90b25pYyBjbG9jayB2YWx1ZQorCitjb21taXQgYzE5NzYwZjMzMzNjOTJmYWM1ZDUwZTk3NjhjZGY5MzkyMThiYzQ4NworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEZlYiAxNSAwOTo0NTowMyAyMDEyICswMTAwCisKKyAgICBzbm1wbGliL3NubXB2My5jOiBGaXggc291cmNlIGNvZGUgaW5kZW50YXRpb24KKwogY29tbWl0IGE2ZGIyMzk5NDVlMTk1ZGU1YTkwZmExODM3MDBiMjdhNmVjYjI4ZDMKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIFR1ZSBGZWIgNyAwMDoxMToxNCAyMDEyICswMTAwCkBAIC04ODksNiArMjA3OSwxOCBAQAogCiAgICAgQ0hBTkdFUzogYWRkZWQgT0NGUzIgKE9yYWNsZSBDbHVzdGVyIEZTKSB0byBoclN0b3JhZ2VUYWJsZSBhbmQgaHJGU1RhYmxlCiAKK2NvbW1pdCBmYWZjOTljZDg5ZTczZWM3ZTAwYmY3MzYwZDBiNGZhNjE5NDRhNGY0CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTE6MTg6MzQgMjAxMiArMDEwMAorCisgICAgU2ltcGxpZnkgY2FsY3VsYXRlX3RpbWVfZGlmZigpIGFuZCBjYWxjdWxhdGVfc2VjdGltZV9kaWZmKCkKKworY29tbWl0IDdhZjIwMTNkZThiZjFiMzc5YzA3NmRiNGUxMDQ1MDhlMTc4NzRkM2UKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAxNDo1NTo1OCAyMDEyICswMTAwCisKKyAgICBGaXggb3JkZXIgb2YgZmVhdHVyZSAjaWZuZGVmIGFuZCBEb3h5Z2VuIGNvbW1lbnQgYmxvY2sKKwogY29tbWl0IGJiZDY3ZjYzNTMwZjVlZjBiZmM5NDhmYzU4ZGZlNmE5M2Y4Zjg2NzkKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CiBEYXRlOiAgIE1vbiBGZWIgNiAxNToyNTozMCAyMDEyICswMTAwCkBAIC0xMDYxLDYgKzIyNjMsMzAgQEAKIAogICAgIEZpeGVkIGVycm9yIGhhbmRsaW5nIGluIGluaXRfaWNtcCgpLgogCitjb21taXQgYzMwMzU0OWE1OWZhOGMyZjIwYTlkOGJmMWU5ODVmYmM4YWJkZTZhOAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTU6NDY6MjkgMjAxMiArMDEwMAorCisgICAgUmV3b3JrZWQgX3JlZ2lzdGVyX2V4dGVuZCgpIGVycm9yIGhhbmRsaW5nLgorCitjb21taXQgOWMyMGUyN2E3MDI2ZmMwMzBkYTNiMzI4YjlhMmUxYjRmMzY2NzBjZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTU6MjE6MjggMjAxMiArMDEwMAorCisgICAgRG9uJ3QgdG91Y2ggcmVnaW5mbyB3aGVuIHJlZ2lzdHJhdGlvbiBmYWlscyAtIGl0IGhhcyBiZWVuIGFscmVhZHkgZnJlZWQuCisKK2NvbW1pdCAyMmZkMGJmYzJkZjBlMWY2MDIwZGMzYzUwYTc1M2RkZjI4YTQ1OTljCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNToyMDoyMiAyMDEyICswMTAwCisKKyAgICBEb24ndCB0b3VjaCByZWdpbmZvIHdoZW4gcmVnaXN0cmF0aW9uIGZhaWxzIC0gaXQgaGFzIGJlZW4gYWxyZWFkeSBmcmVlZC4KKworY29tbWl0IDVkNjFlNTdiYWY1ODBjNzgyNTJjMGFiYjAwOThjMDdiYjA1YWYxN2MKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjE3OjA1IDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCiBjb21taXQgM2MzZWVhZTgwZDc5NmYyNzU5N2M5MDFlN2ZmMjA0NmM3NjllZjRiOAogQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIEZyaSBKYW4gMjAgMTU6MDg6MDkgMjAxMiArMDEwMApAQCAtMTI4MSw2ICsyNTA3LDEyIEBACiAKICAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCiAKK2NvbW1pdCA1OTg4NGJiNGQzNWFkMTM3NDdmZmE2NzIzNDM2ZGNhNTg3YTlhYjc3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNzowOToxMiAyMDEyICswMTAwCisKKyAgICBJbiBhYm92ZSBjb2RlLCBvbGVuZ3RoIGlzIGNoZWNrZWQsIHNvIGxldCdzIGNoZWNrIGl0IGFsc28gaGVyZS4KKwogY29tbWl0IGJhNWQ1MjkyYjA0MzkzYjBjN2Q3ZDdlZDk2MTI0MTkyOTQxOGM2ZTQKIEF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBUdWUgSmFuIDE3IDE3OjA1OjE0IDIwMTIgKzAxMDAKQEAgLTE3OTgsNiArMzAzMCwxMiBAQAogCiAgICAgQ0hBTkdFUzogQlVHOiAzNDQwNzUyOiBJRi1NSUI6IFJlcG9ydCBpbnRlcmZhY2Ugc3BlZWQgY29ycmVjdGx5IGZvciBFdGhlcm5ldCBpbnRlcmZhY2VzIGlmIG90aGVyIHRoYW4gMTAgTWJwcywgMTAwIE1icHMsIDEgR2JwcywgMi41IEdicHMgb3IgMTAgR2Jwcy4gQWRkIHN1cHBvcnQgZm9yIE5JQ3MgZmFzdGVyIHRoYW4gNjUgR2Jwcy4KIAorY29tbWl0IGMwOTkwM2E0MmU5ZDk3MzMxZmQ5ZTQ4ZWU4MzFhODVhZmRmOWM3MGEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBKYW4gOSAxMzoyNjoxNyAyMDEyICswMTAwCisKKyAgICBEb3h5Z2VuLXN0eWxlIGRvY3VtZW50YXRpb24gZml4ZXMKKwogY29tbWl0IGUzMjVlY2JmY2U3N2YwMGFjNWNmNmZiZDk1N2Y5NTQ5NWY2MWM1OWIKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CiBEYXRlOiAgIE1vbiBKYW4gOSAxMzoyNToxMCAyMDEyICswMTAwCkBAIC0xODIyLDYgKzMwNjAsMTIgQEAKIAogICAgIENIQU5HRVM6IHNubXBkOiBJRi1NSUI6OmlmVHlwZTogUmVwb3J0IHR5cGUgImluZmluaWJhbmQgKDE5OSkiIGZvciBJbmZpbmlCYW5kIGludGVyZmFjZXMgaW5zdGVhZCBvZiB0eXBlICJvdGhlciAoMSkiLgogCitjb21taXQgMjY5OTMyZmEzMmM3Y2Q0Nzk1NzQ4OTY5OGUwOWJlZTMxZjYzYjdhZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDE0OjM0OjQyIDIwMTIgKzAxMDAKKworICAgIEZpeCBhbiBNU1ZDIGNvbXBpbGVyIHdhcm5pbmcKKwogY29tbWl0IDBkMWMyMWY5OTkxZDEzMDlkMDU3ZTNlNDA1NmQ1NDdkZjdkNDBlY2YKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CiBEYXRlOiAgIEZyaSBKYW4gNiAxNjowNjozMSAyMDEyICswMTAwCkBAIC0yMDI3LDYgKzMyNzEsMTIgQEAKIAogICAgIEZpeGVkIGEgdHlwbwogCitjb21taXQgYmVlNGQ3OWNmNGViN2UwYTQ1Mzk3ZjU5YjUyOThkYTYzM2E4ZTFiYQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNCAxMzoxNDo1NyAyMDEyICswMTAwCisKKyAgICBGaXhlZCByZWFkaW5nIHBhc3QgZW5kIG9mIGJ1ZmZlci4KKwogY29tbWl0IDNkYzBlMDBhMmZkOGUzNGZlMWFlMzNlY2FiZjM2ZTE0NjQ2MGEzMWYKIEF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBXZWQgSmFuIDQgMTI6NDA6MDcgMjAxMiArMDEwMApAQCAtMjA3Nyw2ICszMzI3LDEyIEBACiAgICAgCiAgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTc1NzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCiAKK2NvbW1pdCBiMWVhYWYzMDIzNjlmZDQ1NTJlOGZlZTdiNmE4MDUwOTFlYzBhOWI0CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA0IDExOjM4OjUxIDIwMTIgKzAxMDAKKworICAgIEFkZGVkIGNoZWNrIG9mIGZpbmRfc2VjX21vZCgpIHJldHVybiB2YWx1ZS4KKwogY29tbWl0IGFlZTRlODk1ZmUzYmQ1ZjRhNjFlMzQyNzViZmNhMDM2OGI1NjA1NTUKIEF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBXZWQgSmFuIDQgMTE6MzE6MjIgMjAxMiArMDEwMApAQCAtMjE1MCw2ICszNDA2LDEyIEBACiAKICAgICBDaGVjayBvcGVuKCkgcmVzdWx0LgogCitjb21taXQgNjY2NWQ1ZmUyZmM1NjlkNmZhODU0ZDFkNzhlMzQ3YmJhYzY5ZTA3MAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNDoyMjoyMiAyMDEyICswMTAwCisKKyAgICBGaXhlZCBtaXNzaW5nIGJyZWFrLgorCiBjb21taXQgYTY2NDhjNTQ1M2UxZWY4ZGFjNTdhMzhlZmNjMDBjY2U1M2JmOWU0ZgogQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIFR1ZSBKYW4gMyAxNDoyMDoyNyAyMDEyICswMTAwCkBAIC0yMzQ5LDYgKzM2MTEsMTIgQEAKICAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMzQ0NzY3MTogRml4IG92ZXJyaWRlIGhhbmRsaW5nIG9mIE9JRCB2YWx1ZXMKICAgICBQYXRjaCBzdXBwbGllZCBieSBQaGlsbGlwIE8nRG9ubmVsbAogCitjb21taXQgYmE0YTljZTUxYzk2MDBmOWZkYTE2OGYxZTZlZmYzMmExZGI2M2NiOQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTM6MjQ6MjYgMjAxMSArMDAwMAorCisgICAgVHdlYWsgLS1kaXNhYmxlLXNubXAtc2V0IGNoYW5nZXMKKwogY29tbWl0IDgyN2M4YjI4ODMwMTcxZmFhOWM2MWQ1M2VmY2E5ZWI2NjAwNTYxYzIKIEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgogRGF0ZTogICBUdWUgRGVjIDI3IDExOjI1OjQzIDIwMTEgKzAwMDAKQEAgLTIzNjEsNiArMzYyOSwxMiBAQAogCiAgICAgU2tpcCBTRVQtYmFzZWQgdGVzdHMgd2hlbiBjb25maWd1cmVkIHdpdGggLS1kaXNhYmxlLXNldC1zdXBwb3J0CiAKK2NvbW1pdCAyMzBkZjE0Zjk0YzM3MzZmZjM0Mzc5YTRlMjgxZWVhMzUzYjQ3ZjgwCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBNb24gRGVjIDI2IDIzOjM0OjIzIDIwMTEgKzAxMDAKKworICAgIERvIG5vdCBhc3NpZ24gdG1TdGF0ZVJlZiB0d2ljZQorCiBjb21taXQgYzk2YjNiNGQ4NTMwYWQ1ZTBlZmIwM2YyNGRhYjVlNWYxYTQ2MDAzMQogQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KIERhdGU6ICAgU3VuIERlYyAyNSAxMToxODoyMSAyMDExICswMTAwCkBAIC0yNDkxLDYgKzM3NjUsMTIgQEAKIAogICAgIEZpeGVkIHJldHVybmluZyB1bmluaXRpYWxpemVkIHZhcmlhYmxlICdzdGF0dXMnIHdoZW4gc3MgPT0gTlVMTAogCitjb21taXQgNzMwNGM1M2NmOGFkZWU4ZWNjZWYxYThmMjY3NTZmYzA3ZjA5ODcyMQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIERlYyAxOCAyMzozMTo1MyAyMDExICswMTAwCisKKyAgICBPbiBzb2xhcmlzIDEwIHRlc3QgaW4gL2Jpbi9zaCBkb2Vzbid0IHN1cHBvcnQgdGhlIC1lIHRlc3QuIFJlcGxhY2UgaXQgd2l0aCAtZgorCiBjb21taXQgOGNkM2JlNjBkNjkzYzljMzZmZmI5N2QzZDliY2I0OWMxYjRhYmUzNQogQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KIERhdGU6ICAgU2F0IERlYyAxNyAwODo1MjoyNCAyMDExICswMTAwCkBAIC0yNTg4LDYgKzM4NjgsMTIgQEAKIAogICAgIEZpeCByZWNlbnRseSBpbnRyb2R1Y2VkIGNvbXBpbGVyIHdhcm5pbmdzCiAKK2NvbW1pdCBiN2U1MGQ1ZjlhNjc1NTk4MmQyYWYzMTkxNDczY2IzNDY0M2JjMDNmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDggMDg6Mzc6MjIgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUmVkdWNlIG92ZXJoZWFkIG9mIGNvbmZpZyBmaWxlIHBhcnNpbmcKKwogY29tbWl0IDczYzllZTQyZDI4YWZlMmUxMDdhN2Q2NjE2YjZkMDExODkwYzM2ZWEKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CiBEYXRlOiAgIFRodSBEZWMgOCAwOTowOTo1OSAyMDExICswMTAwCkBAIC0yNjEzLDYgKzM4OTksMjQgQEAKICAgICB0aW1lIHRoZSA1LjYgYnJhbmNoIHdhcyBjcmVhdGVkIChzZWUgYWxzbyBjb21taXQKICAgICAwZWMwODhhZmEyN2NmZGE0ZTZlYTc4YWFlN2NmYzU1MDc1NjRlZGRlKS4KIAorY29tbWl0IGQ0OTRkYjY0YzIwOGI0ZGM2MjgxMzEzMmY4ODYzYmQ1YzFhMzlkNzcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgMSAxMDozODoxNyAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IEVsaW1pbmF0ZSBhbiB1bnVzZWQgdmFyaWFibGUgKE5vdykKKworY29tbWl0IDI4ZjI1NjFiYzI5MzVkOGUxY2JmNDZkMjgyMDE1ODE3M2U3YTRjZjQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgMSAxMDozNzoxMSAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IE1vdmUgdGhlIG1haW4gbG9vcCBjb2RlIGludG8gYSBuZXcgZnVuY3Rpb24KKworY29tbWl0IDM5NmUxMjJkZGM0MmE5MTZmMDZhMDI4ODRjMGU4YTI1OGVkYmUyMzgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgMSAwOTozMjoxNiAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogTWF0Y2ggZWFjaCBnZXRwd25hbSgpL2dldHB3dWlkKCkgY2FsbCB3aXRoIGFuIGVuZHB3ZW50KCkgY2FsbCBhbmQgZWFjaCBnZXRncmVudCgpIGNhbGwgd2l0aCBhbiBlbmRncmVudCgpIGNhbGwuCisKIGNvbW1pdCAzZWZlZmJjMDAyNDM5OTc4NmY4YjY4YjFlOTNiMGE4ZmRkZGRjN2RhCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgogRGF0ZTogICBUaHUgRGVjIDEgMTA6NDE6MDEgMjAxMSArMDEwMApAQCAtMjcyMCw2ICs0MDI0LDI0IEBACiAKICAgICBDSEFOR0VTOiBGcmVlQlNEOiBSZXN0b3JlIElQX1JFQ1ZEU1RBRERSIGZ1bmN0aW9uYWxpdHkuCiAKK2NvbW1pdCA3ZjQ3ZjUyZTQ4MWJhYTlhYWZiNTc4NDI0NGIwZGQyNjUzZTdkY2ZmCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBNb24gTm92IDI4IDA4OjUxOjM5IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFVzZSBTTk1QX0FMTE9DX1RZUEVERUYgdG8gYWxsb2NhdGUgdHJhbnNwb3J0cyBpbiBvcmRlciB0byBhdm9pZCB0aGUgc2VwYXJhdGUgY2FsbCB0byBtZW1zZXQuCisKK2NvbW1pdCBjZjg2MDM5ZTMwODYyMjVjMzA4NWJiOWFkZjA4OGI4YmE1YmE2OTc5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTm92IDIyIDE1OjAyOjU4IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IE1pbkdXOiB0ZXN0aW5nOiBNYWtlIHVuaXQtdGVzdHMvVDEwMnBkdV9idWlsZF9jbGliIHBhc3MuCisKK2NvbW1pdCAxYTg3ZTc2ZTAwZWUzZDVjZDM3YTA3YmZjM2Q4NDQ5MGQzYzJhNGVjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTm92IDIyIDE0OjU1OjQyIDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IE1pbkdXOiB0ZXN0aW5nOiBNYWtlIHVuaXQtdGVzdHMvVDAxNGdldGhvc3RieWFkZHJfY2xpYiBwYXNzCisKIGNvbW1pdCA4ODY3ZmQxZGNmZTcyYjU5ZDA3MzIyZmYzOGE2OTliNjZlYzRmMzI2CiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgogRGF0ZTogICBUdWUgTm92IDIyIDA5OjQ0OjM4IDIwMTEgKzAxMDAKQEAgLTI3MzEsNiArNDA1MywxMiBAQAogICAgIENIQU5HRVM6IHNubXBsaWI6IE1ha2UgbmV0c25tcF9sYXJnZV9mZF9pc19zZXQoKSByZXR1cm4gZmFsc2Ugb24gVW5peCBzeXN0ZW1zIGlmIHRoZSBmaXJzdCBhcmd1bWVudCBlcXVhbHMgLTEgKGEgdmFsdWUgdGhhdCBzaG91bGRuJ3QgYmUgcGFzc2VkIGJ5IHRoZSBjYWxsZXIpLgogICAgIENIQU5HRVM6IFdpbmRvd3M6IE1ha2UgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKCkgc2hyaW5rIGJlaGF2aW9yIGNvcnJlY3QuCiAKK2NvbW1pdCAyM2RiMGNmMDliOGIwZWFiMzdiNzQ5ZWYwYzNjM2YzMDY5MDAyNDVjCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTm92IDIxIDIzOjAyOjU3IDIwMTEgKzAxMDAKKworICAgIEZpeCBjYXN0aW5nIHR2X3VzZWMgdG8gaW50IHdoaWNoIG1heSBiZSB0b28gc2hvcnQKKwogY29tbWl0IDgwZWU0MDIyZTUzNGU2NGFhZDVhNWYyNzE5Mjg0M2I0MmFjYjg1ZTAKIEF1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CiBEYXRlOiAgIFNhdCBOb3YgMTkgMDk6MTQ6MDIgMjAxMSArMDEwMApAQCAtMjc4Miw2ICs0MTEwLDEyIEBACiAKICAgICBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcwogCitjb21taXQgY2QzMmMyZGZmMDZiOWI0NTJjYzE4ZDU1MmQyZjIyMzQwOTJjODI5YworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAxNiAyMzoxNzowOSAyMDExICswMTAwCisKKyAgICBGaXggZm9ybWF0IHdhcm5pbmcKKwogY29tbWl0IDg4MzEzNmMyYjJmYTA3MzlmNDM3YThjZmI2NjE0YWNjYzc2ZTI2OGUKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIFdlZCBOb3YgMTYgMjM6MTU6NTggMjAxMSArMDEwMApAQCAtMjc5NCw2ICs0MTI4LDEyIEBACiAKICAgICBGaXggdXNpbmcgY2hhciBhcyBhcnJheSBpbmRleCAoY3R5cGUuaCkKIAorY29tbWl0IDg0NTI5ZTYzMjBhODlkOTdmMTMxNGFlYmFkODA2MjU1ZDJhMWIxOGMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgMTYgMjM6MDA6NTcgMjAxMSArMDEwMAorCisgICAgRml4IG1pc3NpbmcgZm9ybWF0IGZvciBGcmVlQlNEIDQKKwogY29tbWl0IDRiZDAzNTI5NTVhMjU1MWJmZTAyMzA4ZGQxMzRiOTEyOGM5OGI5ZTkKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIFdlZCBOb3YgMTYgMjI6NTk6MzYgMjAxMSArMDEwMApAQCAtMjgwNiw2ICs0MTQ2LDEyIEBACiAKICAgICBGaXggc2l6ZV90L2ludCBtaXNtYXRjaGVzCiAKK2NvbW1pdCBhNGRiOWY5ZmMxM2QyMWVjZmY0ODhlYjQxMDM3NmVkZGE2YzI4MjMyCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDEzOjQzOjM0IDIwMTEgKzAxMDAKKworICAgIFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzCisKIGNvbW1pdCAzOTBjMDExNGM4ZWMwYmRiMjdiMDhiNmY3NGUzZjZlZjNhNjI5ODFiCiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBXZWQgTm92IDE2IDEzOjM3OjQ5IDIwMTEgKzAxMDAKQEAgLTI4NDgsNiArNDE5NCwxOCBAQAogCiAgICAgRG9uJ3QgdHJ5IHRvIGluc3RhbGwgYW4gZW1wdHkgbGlzdCBvZiBtYW4gcGFnZXMgKE1BTjMpCiAKK2NvbW1pdCBiYTYxOTgwNGU1OTc4YThkZjc1NDg0NGVmY2NhNTJiNjliNTAxNWZhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTm92IDE0IDEzOjM0OjIwIDIwMTEgKzAxMDAKKworICAgIE1pbkdXOiBNYWtlIHN1cmUgdGhhdCB0aGUgYmFja3NsYXNoZXMgaW4gdGhlIHBza2lsbCBtZXNzYWdlIGFyZSBkaXNwbGF5ZWQuCisKK2NvbW1pdCA5MjNlZWNjNTA3Zjc1MDQzYjYwYzVlNjgwNTNhNGYzOTZhYjBiMGQyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTm92IDE0IDEyOjM2OjM4IDIwMTEgKzAxMDAKKworICAgIENvbXBpbGVyIHdhcm5pbmcgZml4IGZvciBzeXN0ZW1zIHdoZXJlIHVpbnQ2NF90ID0gdW5zaWduZWQgbG9uZyAoZS5nLiBSSEVMIDYuMS94ODZfNjQpCisKIGNvbW1pdCA0MzRiZmMxZjc0NTc1NTBiNmY4N2Q1YmNkNTExMjc2YjI3MGI1OTY0CiBBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgTW9uIE5vdiAxNCAxMToyMjo1MyAyMDExICswMTAwCkBAIC0yODY4LDYgKzQyMjYsMTIgQEAKIAogICAgIE5ldEJTRC02OiBPbmUgbW9yZSBpbnN0YW5jZSBvZiB0aW1lc3BlYyByZXBsYWNpbmcgdGltZXZhbAogCitjb21taXQgOGFkNmM1M2ZkZWM1YWRlYWU0ZTUyZjE3NTFlY2VjNGEzNDViYWIwNQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE5vdiAxMSAxODo1OTowMSAyMDExICswMTAwCisKKyAgICBGaXggYnVpZyAjMzQzNjUyNzogYXJwX25ldGxpbms6IGZpeCBkeWluZyByZWxvYWQgb2YgY2FjaGUKKwogY29tbWl0IDM3OGZmZWQwM2JhNzlhODM0NmQ2YzYyNzgxZTJkZGY1Y2U5MmE0NzgKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIEZyaSBOb3YgMTEgMTg6NTU6NDMgMjAxMSArMDEwMApAQCAtMjkwNiw2ICs0MjcwLDE0IEBACiAKICAgICBDSEFOR0VTOiB0ZXN0aW5nOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCiAKK2NvbW1pdCBlMjIxZTY1ZmRjMWM2OGYxOTY4NjUxNzE3ZGNjOWNjZmI2NDE0NzgzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgTm92IDMgMTU6MDU6MDAgMjAxMSArMDEwMAorCisgICAgRml4IHdhcm5pbmdzIGFib3V0IGNvbnZlcnRpbmcgc29ja2FkZHJfaW4gKiBpbnRvIHNvY2thZGRyICouCisgICAgCisgICAgVGhpcyBpcyBhIGZvbGxvdy11cCBmb3IgY29tbWl0IGEwYWYzODUuCisKIGNvbW1pdCAyZTdlOWVkYTBiMGQ2MmE3NjQ1YTlhOGY3MGVmM2ZiNmYzZGQ2OTQxCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgogRGF0ZTogICBUaHUgTm92IDMgMTE6MTc6NDggMjAxMSArMDEwMApAQCAtMjkzMiw2ICs0MzA0LDEyIEBACiAKICAgICBkc2tJbmRleCB3YXMgb2ZmIGJ5IG9uZQogCitjb21taXQgYTViMjg4MjllNjRkNWYzYjg3ZTRiOWIxZWY4Y2MyMDRmMzNhNjFiNworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAyIDIxOjI1OjA3IDIwMTEgKzAxMDAKKworICAgIFNvbGFyaXMgbmVlZHMgJEFXSyB0byBnZXQgYSB1c2FibGUgbmF3aworCiBjb21taXQgMjgwMWEyMTM5ZjI3MDIxZTFhYjE1ZTM2MmUyZDNkNjI0ZmZhYTQ5NAogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgTW9uIE9jdCAzMSAyMjo1NTo1MyAyMDExICswMTAwCkBAIC0yOTcxLDYgKzQzNDksMjAgQEAKICAgICAKICAgICBUaGlzIGlzIGEgYmFja3BvcnQgb2YgY29tbWl0IDlmNjUzZjcuCiAKK2NvbW1pdCAyY2M5NTA0YjliYjg2MjViOTRiZTZjZGE3ZTYwOTkzZDA1OWNkOTI4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgT2N0IDI2IDA5OjAxOjIzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMzQyODUwNjogRml4IG5ldHNubXBfZ2V0aG9zdGJ5YWRkcigpCisgICAgCisgICAgVGhpcyBwYXRjaCBzaG91bGQgZml4IHRoZSByZWdyZXNzaW9ucyBpbnRyb2R1Y2VkIGJ5IGNvbW1pdCA4NWQ5NmM0IChNYXkgMTMsIDIwMTEpLgorCitjb21taXQgOWI0MjdiMzUzZjFjZWI4ZmU4N2U2ZmM4ZWQzYjZjZmFiM2NlN2YyMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IE9jdCAyNyAwODoyMDowMCAyMDExICswMjAwCisKKyAgICBNaW5HVzogQXZvaWQgY29uZnVzaW9uIGJldHdlZW4gTWluR1cncyBraWxsLmV4ZSBhbmQgdGhlIFN5c0ludGVybmFscyBwc2tpbGwuZXhlCisKIGNvbW1pdCAyYzQ1ZjkyY2ZjYjViMDVlMDQ5MjI2YTVhNzg4M2EwYjEwNjAxMWFlCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgogRGF0ZTogICBXZWQgT2N0IDI2IDEwOjQyOjI5IDIwMTEgKzAyMDAKQEAgLTMwMjMsNiArNDQxNSwzOSBAQAogICAgIAogICAgIFRoZSBtZXNzYWdlIGlzIHNob3dzIHVwIHdoZW4gc25tcGQgaXMgc3RhcnRlZCBhbmQgdGhlcmUgaXMgZGlmZmVyZW50IHNldCBvZiBuZXR3b3JrIGludGVyZmFjZXMgdGhhbiBpdCB3YXMgd2hlbiBzbm1wZCB3YXN0IGxhc3Qgc3RvcHBlZC4gVGhpcyBpcyBjb21tb24gb24gcHBwLXNlcnZlcnMgb3IgdmlydHVhbCBob3N0cy4KIAorY29tbWl0IDI1MGY2OThlNTllYWI5ZjFmZmQzMzJmZjU5ZmRiNzJlYTBkZjA2ZmYKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBPY3QgMjMgMDg6NTE6MjMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IE1ha2UgdGhlIHRyYW5zcG9ydCBjb25maWd1cmF0aW9uIGNvZGUgd29yayBhZ2FpbgorICAgIAorICAgIFByZXZpb3VzbHkgdGhlIHRyYW5zcG9ydCBpbmhlcml0YW5jZSBwcm9jZXNzaW5nIGNvZGUgcmFuIHdpdGgKKyAgICBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTkcgc2V0LiBJbiB0aGlzIG1vZGUgdGhlIGZpbGUgbmV0LXNubXAvZmVhdHVyZS1kZXRhaWxzLmgKKyAgICBpcyByZXF1aWVyZWQuIFRoYXQgZmlsZSBpcyBjcmVhdGVkIGR1cmluZyB0aGUgZmlyc3QgbWFrZSBydW4sIGFuZCB0aGF0IGhhcHBlbnMKKyAgICBhZnRlciBjb25maWd1cmUgaXMgcnVuLgorICAgIENoYW5nZSB0aGlzIHRvIHVuZGVmaW5lIE5FVFNOTVBfTUlOSU1BTF9DT0RFLCBlZmZlY3RpdmVseSB0dXJuaW5nIG9mZiBmZWF0dXJlCisgICAgc3VwcG9ydCBkdXJpbmcgdHJhbnNwb3J0IGNvbmZpZ3VyYXRpb24gaW4gb3JkZXIgdG8gbWFrZSBpdCB3b3JrIGF0IGFsbC4KKworY29tbWl0IDZlZjY5MDc2NDIyNDdjNjYzYjliODk2NGI5ZmQ0NGEyMTFkYmNhYTcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBPY3QgMjAgMjA6MzA6NTQgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMzQwODM5ODogRml4IGEgbWVtb3J5IGxlYWsgaW4gYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy4KKyAgICAKKyAgICBUaGlzIG1lbW9yeSBsZWFrIHdhcyBpbnRyb2R1Y2VkIHZpYSBjb21taXQKKyAgICA5YmYzZDk2ZDk2YThlY2Q0YTVmYzM1YzMyNmRjOTM3NDY3MDAyYjZjOiBJbml0aWFsIEhBTAorICAgIGltcGxlbWVudGF0aW9uIG9mIEZpbGVTeXN0ZW0gaW5mb3JtYXRpb24gKE1hcmNoIDcsIDIwMDgpLgorCitjb21taXQgY2Y4MmI4OTRiMjIxN2MyNmVkYzZmMTM1NjM1MWM5MzI0MTU2MDRlMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IE9jdCAxNSAxNDo0NTowOCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDM0MjM5MTU6IENoYW5nZSBkZWZhdWx0IG51bWJlciBvZiByZXRyaWVzIGJhY2sgZnJvbSAwIHRvIDUKKyAgICAKKyAgICBUaGlzIHBhdGNoIGZpeGVzIGEgYnVnIGludHJvZHVjZWQgdmlhIGNvbW1pdCA2Y2FjMDUwIChNYXkgNSwgMjAxMSwKKyAgICBhZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIHRoZSBkZWZhdWx0IG51bWJlciBvZiByZXRyaWVzIGluCisgICAgc25tcGQuY29uZikuCisKIGNvbW1pdCBjMTFhZGFhMTI5MTVhYmZlZTYyOWJiNmMwMjZjMjFmMjE4NWIyMTZlCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgogRGF0ZTogICBNb24gT2N0IDE3IDEwOjI0OjQ2IDIwMTEgKzAyMDAKQEAgLTMwMzUsMTIgKzQ0NjAsMjYgQEAKIAogICAgIENIQU5HRVM6IFdpbjMyOiBBdm9pZCB0aGF0IHRoZSBQQUNLQUdFXyogbWFjcm9zIGRlZmluZWQgaW4gPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPiBjYXVzZSB0cm91YmxlIHdoZW4gaW5jbHVkaW5nIHRoaXMgaGVhZGVyIGluIGEgcGFja2FnZSB0aGF0IHVzZXMgdGhlIEdOVSBhdXRvdG9vbHMuCiAKK2NvbW1pdCA2NjRkM2FlMTA3ZDc1NDA1MWI4YzQyMjc5ZDQ1OWFhNTdhMWJlMWMzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gT2N0IDEwIDE2OjQ3OjE2IDIwMTEgKzAyMDAKKworICAgIE1pbkdXLCBod19mc3lzOiBVc2UgcHJvcGVyIGZvcm1hdCBzcGVjaWZpZXJzIGluIGEgZGVidWcgc3RhdGVtZW50LgorICAgIAorICAgIFRoaXMgcGF0Y2ggZml4ZXMgYW4gaXNzdWUgaW50cm9kdWNlZCBpbiBjb21taXQgNzZmZjI1ZC4KKwogY29tbWl0IDIxMWRjYjQ5MzA2NTYxZTM1YmEzYzIxM2JlN2NmYTI1N2I0MGE4ZTUKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CiBEYXRlOiAgIE1vbiBPY3QgMTAgMTU6NTI6NDMgMjAxMSArMDIwMAogCiAgICAgQXZvaWQgdGhhdCBnY2MgNC42IGNvbXBsYWlucyBhYm91dCBzZXQgYnV0IG5vdCB1c2VkIHZhcmlhYmxlcwogCitjb21taXQgOWY2NTNmNzNlNWFhNzBmMGJlZjExNzQ2MzJlOTU1OTRmODdmNjY5ZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE9jdCAxMCAxMzowMjoyNSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wdHJhcGRfc3FsOiBBdm9pZCB0aGF0IGEgbGlua2VyIGVycm9yIGlzIHRyaWdnZXJlZCBvbiBzeXN0ZW1zIHdoZXJlIG15X3Byb2duYW1lIGlzIG1pc3NpbmcgaW4gbGlibXlzcWxjbGllbnQgKGUuZy4gRmVkb3JhIDE1IGFuZCAxNikuCisKIGNvbW1pdCA0YzgzYjkyMjlhNzQ1NGYzNGY2ZmY3NWY2OWU2N2U0MDMwYzQxOWI1CiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgogRGF0ZTogICBGcmkgT2N0IDcgMTU6NTg6NDUgMjAxMSArMDIwMApAQCAtMzA1NiwxMiArNDQ5NSw0NyBAQAogICAgIGR5bmFtaWMgbGlicmFyaWVzIGFuZCBycGF0aHMsIHNlZSBhbHNvIHRoZSBkb2N1bWVudCB3aXRoIHRoZSB0aXRsZQogICAgICJScGF0aElzc3VlIiBvbiB0aGUgRGViaWFuIHdpa2kgKGh0dHA6Ly93aWtpLmRlYmlhbi5vcmcvUnBhdGhJc3N1ZSkuCiAKK2NvbW1pdCA4OTI1YzkxMmQyNjM5NzUyYTg0YmNmZmVlZjFiNzBhODEwMjY0NDliCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgT2N0IDcgMTQ6MjE6MjggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYWdlbnQ6IEhPU1QtUkVTT1VSQ0VTLU1JQjogQWRkIG1pc3NpbmcgYnJhY2UgaW4gYSBkZWJ1ZyBzdGF0ZW1lbnQKKworY29tbWl0IDc2ZmYyNWQ5YmY5NzU3OWU3MjEzMTAyMDY1ZmQ1MDk2ZjA0OWE0YzUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBPY3QgNyAxNDoxMzoxOCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogSE9TVC1SRVNPVVJDRVMtTUlCOjpoclN0b3JhZ2VUYWJsZTogZml4IGJ1ZyBpbiBoYW5kbGluZyBsYXJnZSBmaWxlc3lzdGVtcywgd2hlcmUgbGFyZ2UgbWVhbnMgYWJvdmUgOCBUQiAoPSAyKiozMSAqIDQwOTYgYnl0ZXMpLgorICAgIAorICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBidWcgaW50cm9kdWNlZCBpbiBjb21taXQKKyAgICA3MWQ4MjkzZjM4N2E2Y2Q2NmJiMGRiYjEzYzBmNTAxNzRkMmU2NzhiLgorICAgIEZvciB0aGUgb3JpZ2luYWwgYnVnIHJlcG9ydCwgc2VlIGFsc28KKyAgICBodHRwczovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9mdW5jPWRldGFpbCZhdGlkPTExMjY5NCZhaWQ9MzQxOTgyNSZncm91cF9pZD0xMjY5NC4KKwogY29tbWl0IDg2NjAzM2RiOTkwNGZmYjEyMDNmMjgzZjgzODA5MmU0Y2Y2OGRlNmIKIEF1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CiBEYXRlOiAgIFRodSBPY3QgNiAwNzozMzoyNyAyMDExICswMjAwCiAKICAgICBDSEFOR0VTOiBzbm1wZDogUmVtb3ZlIHNwdXJpb3VzICNlbmRpZiB0aGF0IHNlZW1zIHRvIGJlIHRoZSByZXN1bHQgb2YgYSBtaXNtZXJnZS4KIAorY29tbWl0IDIwZjRmMzI2N2VlMjBkNTU3MDViN2E0Mzc4OTg3OWMxMDNmOTY2MjAKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFRodSBPY3QgNiAwMDowODo1OSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogQWRkIG1pc3NpbmcgZW5kIGNvbW1lbnRzIHRvIGZlYXR1cmUgaWZuZGVmcy4KKworY29tbWl0IGU1ZGUyY2M1N2JmMzA0ZjMzMjBjYWQwMDM0ZDJlYTJkOGFlZGM0MzYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBPY3QgNSAwOToxNToxMCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBhZ2VudDogTG9nIGEgbW9yZSBkZXRhaWxlZCBlcnJvciBtZXNzYWdlIGlmIGVtYmVkZGVkIHBlcmwgaW5pdGlhbGl6YXRpb24gZmFpbHMKKworY29tbWl0IDVlZWY5OTkwZGUyOGY2MzExMWU2YzA5M2JlMGYzYzdhZTJkNTEzYTEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBPY3QgNSAwODo0NTo0OSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBwZXJsOiBBZGQgYWdlbnQ6OnVwdGltZSgpCisKIGNvbW1pdCA2ODEwZWQ0MmY5YmM1NjA3NTBkNmRiZmI3ZTUwYjZlMmFjMTE4OTljCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgogRGF0ZTogICBGcmkgU2VwIDMwIDExOjAxOjIzIDIwMTEgKzAyMDAKQEAgLTMwNzQsNiArNDU0OCwxMiBAQAogCiAgICAgQ0hBTkdFUzogUEFUQ0g6IDM0MTg2NDk6IEhPU1QtUkVTT1VSQ0VTLU1JQjogVXNlIHBjbG9zZSgpIGluc3RlYWQgb2YgZmNsb3NlKCkgdG8gY2xvc2UgYSBwaXBlLgogCitjb21taXQgNjU5MTkzN2FkYjg1MDAwYzI3MDY5YzRiZTg0Y2Y0Njg4ODM4ZWJjZAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE9jdCAyIDE2OjE4OjAzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBBZGQgZGVwZW5kZW5jaWVzIG9uIEBGRUFUVVJFVEFSR1NAIHRvIG1ha2UgdGhlIHN1YnRhcmdldCB3b3JrIGFzIHdlbGwuCisKIGNvbW1pdCBiOWM4MDEyZWMwMzViYzA4NGYxNzU4NzZmZWNjMzc1MTk1ZjliZTgxCiBBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgogRGF0ZTogICBTdW4gT2N0IDIgMTQ6MDI6NTggMjAxMSArMDIwMApAQCAtMzEyNiwyNCArNDYwNiwyMjYgQEAKICAgICBlcnJvciBhbmQgdGhlbiBmaWd1cmVzIG91dCB0aGF0IHRoZXJlIGlzIG5vIHVzYWJsZSBubGlzdC5oIGFuZCBpZ25vcmVzIGl0CiAgICAgZm9yIHRoZSBmdXR1cmUuCiAKK2NvbW1pdCBhYzM4Y2I1MzFiZWU1MGVkYzhkNGM4MzRmMzAwNWY1OTkyYzc3MWQ4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgU2VwIDI5IDE5OjAzOjAyIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHBlcmw6IEVuYWJsZSBzZW5kaW5nIFNOTVB2MiB0cmFwcyB3aXRoIGFuIGVtcHR5IHZhcmJpbmQgbGlzdAorCitjb21taXQgYTc1ZGUyOTcxNTI3YWMyZDJlODEyMDI0Mjk4NjAyYmIyNDEyZjMzNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIFNlcCAzMCAxMDo0MTo0NCAyMDExICswMjAwCisKKyAgICBwZXJsL1NOTVAvU05NUC54czogVXBkYXRlIGVtYWNzIG1vZGVsaW5lCisKIGNvbW1pdCA4NDhmNjMwMGVmZTM4NDkyZmI0NTQ0NTFhMDMwZjBiN2U2ZmY4YzlkCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgogRGF0ZTogICBGcmkgU2VwIDMwIDEwOjQxOjQ0IDIwMTEgKzAyMDAKIAogICAgIHBlcmwvU05NUC9TTk1QLnhzOiBVcGRhdGUgZW1hY3MgbW9kZWxpbmUKIAorY29tbWl0IGMxMzc0NDczZWNkOGVjOWUwMzEwMDEzODYxZWUxOGM4M2U1ZDZjNWIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIEZyaSBTZXAgMzAgMDM6Mjk6MzYgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogUHJvdGVjdCB0aGUgdXNlIG9mICRPU1RZUEUgdG8gZW5zdXJlIHRoYXQgJ3Rlc3QnIGdldCBlbm91Z2ggcGFyYW1ldGVycy4KKworY29tbWl0IDdlOTdhMjA2MzNhNTdlYWUzOWQwMTViMjMzMzk0NjNjMzJmNWY4NDgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBTZXAgMjkgMTA6MjI6MDggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogQ29udmVydCBzbm1wbGliL3Rlc3RfYmluYXJ5X2FycmF5LmMgaW50byB0d28gdW5pdCB0ZXN0cworCitjb21taXQgOWMwZGQ5ODE3NjQ1NzM0MmZmZmFhNWU3NGQ4MDJlMzE0NWVkNzBlNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IFNlcCAyOSAwODo1NjoxNyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBBZGQgdW5pdCB0ZXN0IGZvciBuZXRzbm1wX3JlZ2lzdGVyX29sZF9hcGkoKQorCitjb21taXQgNWZkMjZlNGZhM2UwMDBlYTljODFjMzhhYjk3NWI3OTQ2ZWZlMjE1NworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIFNlcCAyOCAxNzo0OTo1NSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBhZ2VudDogQXZvaWQgdGhhdCBuZXRzbm1wX3JlZ2lzdGVyX29sZF9hcGkoKSBmYWlsdXJlIHRyaWdnZXJzIGEgZG91YmxlIGZyZWUuCisgICAgCisgICAgRml4ZXMgYSByZWdyZXNzaW9uIGludHJvZHVjZWQgdmlhIGNvbW1pdAorICAgIGFhNGQ0N2MyNjA5ZTUyODE4YzljZGYxYThlMjIwNWRlOWEzMzVhMGEgKHN2biByMTk1MTUpLgorCitjb21taXQgZDIyNTJkMDE2NjkzODA3MzI2ZjcyYjY2MTIzNjQ5ZGVhMDBhZjkxNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IFNlcCAyOSAxMDoyMDowOCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBSZXF1aXJlIGEgc2VtaWNvbG9uIGFmdGVyIE9LKCksIE9LRigpIGFuZCBQTEFOKCkKKyAgICAKKyAgICBBbHNvLCBsZXQgT0tGKCkgZW1pdCBhIHNpbmdsZSBsaW5lIG9mIG91dHB1dCBzdWNoIHRoYXQgYWxsIG91dHB1dCBpdAorICAgIHByb2R1Y2VzIGlzIHZpc2libGUgaW4gdGhlIG91dHB1dCBvZiAibWFrZSB0ZXN0Ii4KKworY29tbWl0IDE0MjE5MjRiNDg1MjE0MjE5MmM1YmI5ZTkzZGRiZmVkNjllOTA4ZmEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBTZXAgMjEgMjI6MjA6MDggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogQXZvaWQgd2FpdGluZyBpbmRlZmluaXRlbHkgaWYgYSBzZXNzaW9uIGhhcyB0aW1lb3V0IHplcm8KKworY29tbWl0IDVmMjdmNGY3NGFlMmJkNWJhZjUwM2NmMzA2YjRmOWEyODQxYTU3Y2YKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgNiAxMDozMjowMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBNaW5HVzogdGVzdGluZzogRml4IGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIHRlc3QgcnVubmVyCisKK2NvbW1pdCAwOTcwMzk1OGNjNWVhODQ1OTI5YWUxOWVmOWUwODA0YWVjYWE1MTJlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDI3IDEyOjQyOjQxIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IEF2b2lkIGZhbHNlIG5lZ2F0aXZlIGZvciBUMTE0YWdlbnR4YWdlbnR4dHJhcF9zaW1wbGUgY2F1c2VkIGJ5IHRoZSB0ZXN0IHJlc3VsdCBiZWluZyBwcmVzZW50IGluIHRoZSBoZXggZHVtcCAoIm1vc3RseV9oYXJtbGVzcyIpCisKK2NvbW1pdCA0MzkzMDAyNzlmNmYzMTQzODYzOGQyZjIyMmMyNGMzYzg0MWZhNmFiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDI3IDExOjE2OjMyIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBNaWNyby1vcHRpbWl6ZSBhZ2VudCBtb2R1bGUgZGVwZW5kZW5jeSBhbmFseXNpcworICAgIAorICAgIFRoaXMgbWFrZXMgdGhlIGFnZW50IG1vZHVsZSBkZXBlbmRlbmN5IGFuYWx5c2lzIGNhcnJpZWQgb3V0IGJ5IHRoZQorICAgIGNvbmZpZ3VyZSBzY3JpcHQgc2xpZ2h0bHkgZmFzdGVyLCBlc3BlY2lhbGx5IG9uIHRob3NlIHN5c3RlbXMgd2hlcmUKKyAgICBmb3JrKCkgaXMgZXhwZW5zaXZlIChDeWd3aW4pLgorCitjb21taXQgYmJjNjgwMDA0YTEzNzYwMzhkZmRjNDE3MmRiZTdiOWUzMTFmYmE2OAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIFNlcCAyNiAxMDoxNDo0NSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBNaW5HVzogdGVzdGluZzogTWFrZSB0ZXN0IFQxMzBzbm1wdjF2YWNtZ2V0X3NpbXBsZSBwYXNzCisKK2NvbW1pdCA3MGIwNmNmNzg5MjA4ZWFhODkwYmZiY2Q2MzhiZGI3NzVmODE3MDU0CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDIwIDA5OjUwOjU3IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IFdpbmRvd3M6IHRlc3Rpbmc6IHBlcmw6IEZpeCBhbiBpbmNvcnJlY3QgbWVzc2FnZSBwcmludGVkIHdoaWxlIHJ1bm5pbmcgdGhlIFBlcmwgbW9kdWxlIHJlZ3Jlc3Npb24gdGVzdHMKKworY29tbWl0IDcwYmNjOGRlMmQwZmM5MmJiYjg0ODE4MjM2MzBmYWI5YmM4N2FmNzUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBTZXAgMTYgMTY6MTQ6MjQgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogTWluR1c6IHRlc3Rpbmc6IE9idGFpbiB0aGUgTVNZUyBwYXRoIGZyb20gdGhlIGVudmlyb25tZW50CisKK2NvbW1pdCA2MjYyNzVlMmQxYWNhZmFlNzE0NGEzM2VkMzAxYTQwZjU5NmIzN2IwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgU2VwIDE0IDEzOjE0OjE3IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IFdpbmRvd3M6IFJlbW92ZSBzdXBlcmZsdW91cyBsaW5rIGxpYnJhcmllcyBmcm9tIHByb2plY3QgZmlsZXMgKCouZHNwKQorCitjb21taXQgMzhmYzNjYWE5ZWViMzgwMDI1NGI0ZjZhZDZmOGY0NzY0YzBmODNkYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCAyMCAwOTozNDowOCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBNYWtlIG5ldHNubXBfY2FsbGJhY2tfYWNjZXB0KCkgcmV0dXJuIC0xIChmYWlsdXJlKSBpbnN0ZWFkIG9mIDAgKFNURElOX0ZJTEVOTykKKworY29tbWl0IDZjOGM3ZThhY2E4ZmMyZWViNTIwMTBhZTNlOWZlZTZkZDgzZWY3ODAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgMTMgMDk6NTg6MjYgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUmVtb3ZlIG9ic29sZXRlIHNubXBfZ2V0X2ZkX2Zvcl9zZXNzaW9uKCkgZGVjbGFyYXRpb24KKworY29tbWl0IDA4NjBkMTFmZDhmYzVkYmRhYWFlMjI2MWZhZTJjMDdmYjljMmM4MmQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBTZXAgOCAxMzo1NDo1NSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBXaW5kb3dzOiBNU1ZDOiBBdm9pZCB0aGF0IHRoZSB0eXBlZGVmcyBpbiA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNvbmZsaWN0IHdpdGggdGhvc2UgaW4gPHN0ZGludC5oPiBmcm9tIHRoZSBtc2ludHR5cGVzIHByb2plY3QKKworY29tbWl0IGY4YTAzNmY2M2ZmNjhmMDgzNDM2MTIwZTBhYmQ0NzhiNjkyYTJmNjEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBTZXAgOCAxMzoyMTowNiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBXaW5kb3dzOiBNU1ZDOiBXaGVuIGxpbmtpbmcgd2l0aCBPcGVuU1NMLCBsaW5rIHdpdGggdXNlcjMyLmxpYiB0b28KKworY29tbWl0IDgzNmEyM2UxMGNhODEwYzM4OTk5MDJkMzI1ODc2MTZhOWQxMjAzZGYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBKdWwgMTQgMTg6Mzg6MTMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogV2luZG93czogTVNWQzogTGluayB3aXRoIHByb3BlciBsaWJlYXkzMiBsaWJyYXJ5CisKK2NvbW1pdCA3YjA3ZmQ2Y2RlZjQ5ZWM3YmIwNGIxNjZlMmE0ZmJiMzdiNTgyODQwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDYgMTE6MTA6MzggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogUmVtb3ZlIGFuIGluY29ycmVjdCBjb21tZW50IGZyb20gc2ltcGxlX2V2YWxfdG9vbHMuc2gKKworY29tbWl0IDk4ZjZkMjlkOTgxZmY4ZTYwNzYwMGM2M2RhZGIyNDA1MzU2Mjk4MDcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgNiAxMDo0OTowMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBNYWtlIElTREVGSU5FRCgpIGNoZWNrIGZvciBhbiBleGFjdCBtYXRjaCBpbnN0ZWFkIG9mIGEgcHJlZml4IG1hdGNoCisKK2NvbW1pdCA1MmNkMDAzMWEzMWY2OTJmMTMyNjNhOTRjMzM1ZDA2YmUxNDU0ODAzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDYgMTA6MTI6NTkgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogTWluR1c6IHRlc3Rpbmc6IE1ha2UgdGhvc2UgcmVncmVzc2lvbiB0ZXN0cyBwYXNzIGZvciB3aGljaCBTTk1QQ09ORlBBVEggYW5kL29yIFNOTVBfUEVSU0lTVEVOVF9ESVIgbWF0dGVyCisKK2NvbW1pdCBmNWNkODliZDMzNTZkZDc0ZTE1NTZjMGI1MDk2NmE2NDNmMTkyMDg1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDYgMTA6MTI6NTkgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogTWluR1c6IHRlc3Rpbmc6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSB0ZXN0IGZyYW1ld29yaworCitjb21taXQgZGVlZGQ1MmM4MzRhNjQ0ODg1MmEwNjc4NTUzNmUxMzg2NTk2OTY5NAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCA2IDEwOjEyOjU4IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IE1pbkdXOiBTdXBwb3J0IHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIG9mIHJlY2VudCBTaGluaW5nIExpZ2h0IE9wZW5TU0wgYmluYXJ5IGRpc3RyaWJ1dGlvbnMKKwogY29tbWl0IGQ1NWJkNGUwNTQ5ZjAzYjZmZDMyNTYyYzJhYTdmZTM5MjcyYTllZjcKIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIFdlZCBTZXAgMjggMDY6NTU6MTkgMjAxMSAtMDcwMAogCiAgICAgcmVtb3ZlIHRoZSB2NS43IGZyb20gdGhlIGZyb3plbiBsaXN0CiAKK2NvbW1pdCBhYzJhZWQzYzk0YmIyZWJiNDczYWYwYTFlMjBmMDU2MWFkNjI5OTU2CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgU2VwIDI4IDA2OjU1OjExIDIwMTEgLTA3MDAKKworICAgIHJlbW92ZSB0aGUgdjUuNyBmcm9tIHRoZSBmcm96ZW4gbGlzdAorCitjb21taXQgNDAwNzkyMDU5NjdiOGU1YWVlZGIxOWZhM2NiMmU3YjJmNzk4ODU3NworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIFNlcCAyNyAyMTo1Mzo0NyAyMDExIC0wNzAwCisKKyAgICBtYWtlIGRlcGVuZAorCitjb21taXQgY2YxNGEyMjg1ODNhZmYzYzVhYjJmMGQ0NGMyZjRjMGZhNWJkNjZhZgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIFNlcCAyNyAyMTo1MzoxOCAyMDExIC0wNzAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS43LjEKKworY29tbWl0IDEwMTRkZDhkZmI0OGE1YmQwNTNmMDQ1NDFlYjk3MjhmMGJlMDdmNDcKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBTZXAgMjcgMjE6NDU6MDQgMjAxMSAtMDcwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNy4xCisKK2NvbW1pdCAxOGQxMTZiYTM4OGMxZGM5NDk1Mjg4ODRiYjAwNjk4ZjFiYWNhYTk0CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgU2VwIDI3IDIxOjExOjUyIDIwMTEgLTA3MDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LjEKKwogY29tbWl0IDQ2ZWFjMDJlOWEyN2JmNGYzMDY4ZTc5NWNhYjg5MWYwNWE4NDg4NzAKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CiBEYXRlOiAgIE1vbiBTZXAgMjYgMjE6NDk6MjcgMjAxMSArMDIwMAogCiAgICAgQ0hBTkdFUzogc25tcGQ6IEF2b2lkIHRoYXQgc25tcGQgY3Jhc2hlcyBpZiBzdGFydGVkIG9uIGEgc3lzdGVtIHdpdGggYW5vdGhlciBPcGVuU1NMIGxpYnJhcnkgdmVyc2lvbiB0aGFuIHRoZSBvbmUgaXQgaGFzIGJlZW4gYnVpbHQgd2l0aC4KIAorY29tbWl0IGE1ZjA2NGRkODI5OTZlMmJlM2YxZTk2MTY3MDNhZDAzOTVmYjVhYmEKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBTZXAgMjIgMDc6MzM6MDEgMjAxMSAtMDcwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNy4xLnJjMworCitjb21taXQgNTY5Nzk0ZmNlYjk5ZWVkN2JlODE3YzY0Zjg1Y2Q5NDVjYWY5OTU5MgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IFNlcCAyMiAwNzoyMDowNyAyMDExIC0wNzAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNy4xLnJjMworCiBjb21taXQgYzU1ZjYwOGYxNmYxNjBmNWU3OWRjMDU3Zjg4NzhkZWY0NjI5NzNlMQogQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CiBEYXRlOiAgIFRodSBTZXAgMjIgMTA6MzU6MjQgMjAxMSArMDEwMApAQCAtMzE1MSw2ICs0ODMzLDE0IEBACiAgICAgRml4IHRoZSBjb2RlIGZvciBwb3B1bGF0aW5nIHRoZSB0YWJsZV90ZGF0YSBjYWNoZSwKICAgICBhbmQgY2xhcmlmeSBhcmVhcyBuZWVkaW5nIE1JQi1zcGVjaWZpYyBhZGRpdGlvbnMuCiAKK2NvbW1pdCAxMzc2M2NmMmM3MWJmOTNmZWMwOTZlZWUwMDQ4NTdjMTViMmNmZmZmCitBdXRob3I6IFN0ZXZlIEZyaWVkbCA8c3RldmVAdW5peHdpei5uZXQ+CitEYXRlOiAgIFRodSBTZXAgMjIgMTA6MDY6NDUgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IDM0MDk2OTI6IENhbGN1bGF0ZSBkaXNrIHBlcmNlbnRhZ2UgdXNhZ2UgdmlhIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMKKyAgICB0byBhdm9pZCBpbnRlZ2VyIGFyaXRobWV0aWMgZXJyb3JzLgorICAgIChDb2RlIGJhc2VkIG9uIHBhdGNoLCByYXRoZXIgdGhhbiBhcHBsaWVkIHZlcmJhdGltKQorCiBjb21taXQgZWUwZDNhZGIwNzgyOTFiNzQzYzllY2I3NmQyMGI1OTFiN2IxNTk3MgogQXV0aG9yOiBTdGV2ZSBGcmllZGwgPHN0ZXZlQHVuaXh3aXoubmV0PgogRGF0ZTogICBUaHUgU2VwIDIyIDA5OjU4OjM5IDIwMTEgKzAxMDAKQEAgLTMxNTksNiArNDg0OSwyNCBAQAogICAgIHRvIGF2b2lkIGludGVnZXIgb3ZlcmZsb3cgZXJyb3JzLgogICAgIChDb2RlIGJhc2VkIG9uIHRoZSBzdWJtaXR0ZWQgcGF0Y2gsIHJhdGhlciB0aGFuIGFwcGxpZWQgdmVyYmF0aW0pCiAKK2NvbW1pdCAzNjdkYTE0ZmNkYjE0NjU5MmRlNjdjMWQ2OTk3YTA5Nzc0MjU5NjczCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgU2VwIDIyIDA4OjA5OjE3IDIwMTEgKzAyMDAKKworICAgIFRoZSBvbmx5IGNoYW5nZSBiZXR3ZWVuIFY1LjcucmMxIGFuZCBWNS43LjEucmMyIGlzIHRoZSB2ZXJzaW9uIG51bWJlci4gTWFrZSB0aGlzIGNsZWFyIGluIHRoZSBDaGFuZ2VMb2cgZmlsZS4KKworY29tbWl0IGMyNzZlZWI4ZjA0NTVhMDg3MGM0YjQ3OGRkZTY0OGU4NjUyOWFkZDMKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBTZXAgMjEgMTM6NTE6NTggMjAxMSAtMDcwMAorCisgICAgY2hhbmdlbG9nIHVwZGF0ZQorCitjb21taXQgNjMwNTA4Mzg2NjZmNjQ1ZmMzMDZkYzJlZTRmNzNmNWVmY2U2M2ZlZAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIFNlcCAyMSAxMzozODoxOCAyMDExIC0wNzAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNy4xLnJjMgorCiBjb21taXQgYmJlMmMxOWEwMWVjZWMwMjRmNzQxZTJlNTQ3MDFhZTYyMTJmNGMzZQogQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KIERhdGU6ICAgU3VuIFNlcCA0IDE0OjQ0OjM4IDIwMTEgKzAyMDAKQEAgLTMxNzUsNiArNDg4MywzMCBAQAogCiAgICAgQ0hBTkdFUzogYnVpbGRpbmc6IENvcnJlY3QgZGVwZW5kZW5jaWVzIC0gc2luY2UgYmY3NGZlYTY5ZjI0ZGM2ZTg1ZjkwOGYzZjQxZDE0MjZiMmUwOTY4OCBzbm1wY29uZiBpcyBsb2NhdGVkIGluIGJ1aWxkZGlyLCBub3Qgc3JjZGlyCiAKK2NvbW1pdCA3ODM1OTY0ZDM1OTNlNWM2YTFhZTdkZTBiNDExNGI3ZGYxYWUwZmUxCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXVnIDMwIDE5OjIxOjUxIDIwMTEgLTA3MDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjcuMS5yYzEKKworY29tbWl0IGNiNmEwYzBiZDZmOGMyYzdjZDVmZDg2MDgwZGM2MzI0ZTdmNzM4NTgKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBBdWcgMzAgMTk6MjA6MzUgMjAxMSAtMDcwMAorCisgICAgbWFrZSBkZXBlbmQgZm9yIDUuNy4xLnJjMQorCitjb21taXQgZTVmZjJlYjgzYmJiZWQ5MmRhYzc1MWM1YTY2NDNkNzhmODM3Y2Y5YworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEF1ZyAzMCAxOToxOTo0NiAyMDExIC0wNzAwCisKKyAgICBmaXggQysrIGNvbW1lbnQKKworY29tbWl0IGNiMWY1Y2ZmYzZmYjUyYzJhNmMwZjdiNDA4YWZlYjQ3ZmNmZTU1ZTQKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBBdWcgMzAgMTk6MDk6NTYgMjAxMSAtMDcwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjcuMS5yYzEKKwogY29tbWl0IDQyMmIwODJhOTU5M2NhOWM2NWFhYzQ0OWU2ZDEyOGE5ZTk3ZTk0ZmIKIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIFR1ZSBBdWcgMzAgMTk6MDY6NTYgMjAxMSAtMDcwMApAQCAtMzIyNSwxMiArNDk1Nyw3MiBAQAogCiAgICAgQXBwYXJlbnRseSBJUklYIGhhcyBhIGRpZmZlcmVudCBBUEkgZm9yIHN0YXRmcwogCitjb21taXQgZjdlMjFmMjYzMzM5MGI3YTI3YzUwMjI3YmVlNmQ4Njk2YWUzZmJjZgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEF1ZyAyOSAxNjowMTozMSAyMDExIC0wNzAwCisKKyAgICBkb24ndCBwcm92aWRlIGEgZmVhdHVyZSB3aGVuIHlvdXIgYSBjaGlsZCBvZiBhbm90aGVyIGZlYXR1cmUKKworY29tbWl0IGNhYzIzYzBiMjU3NGU3MjgwYmQxMjhjNjIyNjg3NWFkMGY2YjRiZmMKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBBdWcgMjggMDk6Mzg6MTQgMjAxMSArMDIwMAorCisgICAgTWFrZSBzdXJlIHRoYXQgZmVhdHVyZS1kZXRhaWxzLmggZXhpc3RzIGJlZm9yZSB0cnlpbmcgdG8gaW5jbHVkZSBpdAorCitjb21taXQgNzgxZjRjZTJhY2IzNzE1NjA3OTdkOGIyOWE4OWVkMDY3NGU5MzVmOAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIEF1ZyAyOCAwOTozNjozNiAyMDExICswMjAwCisKKyAgICBVc2UgdGhlIGZlYXR1cmUgdGFyZ2V0IGluc3RlYWQgb2YgdGhlIHRhcmdldCB3aGVuIGJ1aWxkaW5nIHRoZSBmZWF0dXJlIHNldAorCitjb21taXQgMTFiZmY0NzJjYTdiMWZjZmYwYzE2MTg3YTFiOGExMzA5M2JjOTFjNAorQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEF1ZyAyOSAwMDozMzo1NSAyMDExICswMjAwCisKKyAgICB0aGUgaXJpeDYgYnVpbGQgb25seSBkZWZpbmVzIGlyaXg2LCBub3QgaXJpeAorCitjb21taXQgM2M3M2ExNDA3YTA4MWQ0MmViZGQ5MWRmYmNiMWU0ZjE1MmI3ZGY0YQorQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEF1ZyAyOSAwMDowNToxMyAyMDExICswMjAwCisKKyAgICByZS1hZGQgc29ja2FkZHJfdW4uc3VuX3BhdGggY29uZmlndXJlIGNoZWNrIChsb3N0IGluIHByZXZpb3VzIGNvbW1pdCkKKworY29tbWl0IDJlM2YwMmUwM2FlZDEyNTM4NGJhNGZlM2Q4MzQ5NGQ0M2YzYTI5ZTkKK0F1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBBdWcgMjggMjM6NTM6MzAgMjAxMSArMDIwMAorCisgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX21udGVudC5jIGRvZXNuJ3QgYnVpbGQgb24gSVJJWCB5ZXQKKwogY29tbWl0IGY5NWFhMzEzNzdkNTcyYjA0OWIwYjMxNmRiYjE2M2JmN2FjYTkzZDUKIEF1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIFN1biBBdWcgMjggMjM6MjU6NDAgMjAxMSArMDIwMAogCiAgICAgQ0hBTkdFUzogYnVpbGRpbmc6IGJ1aWxkIGZpeCBmb3Igc3lzdGVtcyBsYWNraW5nIGZpZWxkcyBtc2dfY29udHJvbC9tc2dfZmxhZ3MgaW4gc3RydWN0IG1zZ2hkciAoYmFja3BvcnQpCiAKK2NvbW1pdCA3ZjQ3ZDkzNzY1YWEzNWE1ODY4N2ViOWI0ZjlmNzAwZTQzNDNlMTNjCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgQXVnIDI2IDExOjExOjM1IDIwMTEgLTA3MDAKKworICAgIGFkZGVkIHJlcXVpcmVkIGZlYXR1cmVzIGZvciBtZmQgaGFuZGxpbmcKKworY29tbWl0IDliMmU0MmE2ZTA1NTBmYjc4OWM2MDdjMzUyMDg4MGQ0ZGJjMGNmMjQKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBBdWcgMjYgMTE6MDg6MDkgMjAxMSAtMDcwMAorCisgICAgYWRkZWQgLmZ0IGFuZCAuZnQuMSBmb3IgZmVhdHVyZSBmaWxlcworCitjb21taXQgMzNkY2JmNTZmYzA2MjZhM2U0ZjEzNTkwOTViZDIxN2QxYTU2Nzc5NAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEF1ZyAyNiAxMTowNzo1OCAyMDExIC0wNzAwCisKKyAgICBub193cml0ZV9zdXBwb3J0IHN1cHBvcnRlZAorCitjb21taXQgOTdkNDJlZmQ3NjkzN2NlN2U0YmM0OGE3MmVkNWExMTBlNDIzMTAyZAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEF1ZyAyNiAxMDowODo1MSAyMDExIC0wNzAwCisKKyAgICBoYW5kbGUgbm8td3JpdGUtc3VwcG9ydCB3aXRoIGlmZGVmcworCiBjb21taXQgZWE4YmVkNzllODFjNDJlMzNjYmYzN2NhNmYzYzAzYzU0OTk4N2IyMgogQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgVGh1IEF1ZyAyNSAwNjo1NjoyMiAyMDExIC0wNzAwCkBAIC0zMjQzLDYgKzUwMzUsMjEgQEAKIAogICAgIHVzZSA+PiB0byBwcmludCB0byBzdGRlcnIKIAorY29tbWl0IGNlZTAzNTljNmZhZTJiODVkN2I5MzE4NTllNTE3ZDg5Y2UwNzIyYmIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXVnIDIzIDIzOjQzOjE5IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkOiBEbyBub3QgZ2VuZXJhdGUgYW4gb3V0cHV0IGZpbGUgb24gZmFpbHVyZQorICAgIAorICAgIG1ha2Ugc3VwcG9zZXMgdGhhdCBubyBvdXRwdXQgaXMgZ2VuZXJhdGVkIGlmIHRoZSBjb21tYW5kIGZhaWxlZC4gQ2hhbmdlCisgICAgZmVhdHVyZS1yZW1vdmUgdG8gZm9sbG93IHRoYXQgcHJlc3VtcHRpb24uCisKK2NvbW1pdCBmZTM5ZTcyODhjYTkzMGQyYzlhYWE4MzAxY2M5ZDk1ZjBjMzhmMzZiCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIEF1ZyAyMSAyMTo0ODoxNyAyMDExICswMjAwCisKKyAgICBDb3JyZWN0IHR5cG8KKwogY29tbWl0IDFmMDgyYTMxY2QxMzhmMWY1ZTI3YmU2ZDkwYTFkNTc5MGRjMGZmZTQKIEF1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIFR1ZSBBdWcgMjMgMjM6MzU6NDIgMjAxMSArMDIwMApAQCAtMzI2Nyw2ICs1MDc0LDEyIEBACiAKICAgICBhdXRvcmVjb25mCiAKK2NvbW1pdCAxYTI2NDhlYWY3MWNiMDE4OTUxNTk2Njg5YzUxNTg4ZGNhODA2M2M1CitBdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gQXVnIDIxIDAxOjQ4OjU3IDIwMTEgKzAyMDAKKworICAgIGF1dG9yZWNvbmYKKwogY29tbWl0IDNmMmY2MWIwZTYxM2Q2MTA1ZWNmMmNlYjM5NWRlMGJkZTM3ZjNjZTMKIEF1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIFN1biBBdWcgMjEgMDE6NDc6MTMgMjAxMSArMDIwMApAQCAtMzI4NSw2ICs1MDk4LDI0IEBACiAKICAgICBmaXggYnJva2VuIGxpbmUgd3JhcAogCitjb21taXQgNWI1OTAwYTRmN2RmZWU2ZTFlYzg2OWUzMjMxMGI4MGNhNmZiMjNmZQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyAxOCAxMjoyODowNyAyMDExIC0wNzAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS43LjEucHJlMgorCitjb21taXQgM2I3ZTJlMzk5NDlmODhkOWM1NmVkNWY5OTQwMjhiOTQ4MTZhYjc1YworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyAxOCAxMjoyMzoyOCAyMDExIC0wNzAwCisKKyAgICBtYWtlIGRlcGVuZCBmb3IgNS43LjEucHJlMgorCitjb21taXQgZWNlNjNiZmU0OTljNjMwYmRhYWU2MjAwNjQ4ZDI5MTgwY2UzYTE3OQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyAxOCAxMjowMzoxNyAyMDExIC0wNzAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNy4xLnByZTIKKwogY29tbWl0IDI4YjU0MDcwNTE0NzUzZThkOGFiYjcxOGIyMjRkNjU3YWI3YThhYjgKIEF1dGhvcjogR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgVGh1IEF1ZyAxOCAxMTo0OTo1NiAyMDExIC0wNzAwCkBAIC0zMzEzLDYgKzUxNDQsMTggQEAKIAogICAgIGNoYW5nZWQgY2xpZW50YWRkciBzbyBpdCByZWdpc3RlcnMgYXMgcHJlLW1pYiB0byBiZSBwaWNrZWQgdXAgYmVmb3JlIHRoZSB0cmFuc3BvcnRzIGdldCBjcmVhdGVkCiAKK2NvbW1pdCBjMDIxMzFlNWIzNWQyOTY3NTViYWVjOTliZDM2MzIwNWE4NjMwN2RkCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgQXVnIDE3IDA5OjM0OjAwIDIwMTEgLTA3MDAKKworICAgIGRldGVjdCByZWFsbHkgb2xkIHZlcnNpb25zIG9mIExvbmcucG0KKworY29tbWl0IDUwMGQ2ZGUwNmFhNGZmMzMwYWVlNGQ3NDlhNGNjMzc3YmVjODllMDkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBBdWcgMTcgMTg6MTE6NDcgMjAxMSArMDIwMAorCisgICAgRml4IHRoZSBsb2cgbWVzc2FnZSB0aGF0IHJlcG9ydHMgdGhhdCBnZXRob3N0YnlhZGRyKCkgaXMgbWlzc2luZworCiBjb21taXQgNjU4MDU1NmNjN2JkODMzYWY3MzFiNjJjZTFlZDIwMTc1NjRmZTdlYgogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KIERhdGU6ICAgV2VkIEF1ZyAxNyAxODowODowMSAyMDExICswMjAwCkBAIC0zMzI3LDYgKzUxNzAsMTIgQEAKICAgICAKICAgICBUaGlzIHJldmVydHMgY29tbWl0IGMxYjVhMDMwZDhmMDQ4NzZjZDViOWFmMDA4Yzg3OWNjNDY4YjIxMmYuCiAKK2NvbW1pdCBkYWZmNDlkOWIzMzY5ZWZjYzg3ZjA1ZGM4NTkxMzYyZTgxYTQ1ZmRmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgQXVnIDEzIDE4OjQzOjQ4IDIwMTEgKzAyMDAKKworICAgIFdpbmRvd3M6IE1ha2UgdGhlIFBlcmwgYWdlbnQgbW9kdWxlIHdvcmsgYWdhaW4gd2l0aCB0aGUgb3JpZ2luYWwgU05NUF9GUkVFKCkgZGVmaW5pdGlvbi4KKwogY29tbWl0IDNjNzNiNDgzOGU2MDViMTUwYmMzMTczMTNmMTRlYjMzNDQ0NzI5ZjgKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CiBEYXRlOiAgIFNhdCBBdWcgMTMgMTc6Mzg6MjcgMjAxMSArMDIwMApAQCAtMzQ4NiwxMyArNTMzNSw2IEBACiAKICAgICBmaXggQysrIGNvbW1lbnRzCiAKLWNvbW1pdCBkNTM4YmNiY2NlNjNlMTg5MzU3MmQ4ZjE1ODNmZGMwMmYzNTFmODRmCi1BdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KLURhdGU6ICAgTW9uIEF1ZyA4IDIyOjA3OjQzIDIwMTEgKzAxMDAKLQotICAgIERlZmluZSBfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIHRva2VuCi0gICAgKGFzIHBlciBBbGV4JyBidWlsZCBpbnN0cnVjdGlvbnMpCi0KIGNvbW1pdCA0NDdkZGM2NmQ5MGRkOWU1YzMxMDViMjY4YjZhNjNiZmM1ODBiOTI0CiBBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KIERhdGU6ICAgTW9uIEF1ZyA4IDIyOjAzOjU4IDIwMTEgKzAxMDAKQEAgLTM1MDcsNTg4MyArNTM0OSwyNTg2MiBAQAogICAgIERlZmluZSBfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIHRva2VuCiAgICAgKGFzIHBlciBBbGV4JyBidWlsZCBpbnN0cnVjdGlvbnMpCiAKLWNvbW1pdCBmZmEwNWIwNTFhYzNlMmIxOTcxOTVhOTk4OWNjN2E5MWZlOGQ5MjgyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NoYW5nZXM6IFY1LjcuMSAtPiBWNS43LjIucHJlMQorCitjb21taXQgODEwMTg1YWUwYjBjZDJhZDRkNDI0YTFiYTc3NWVmNWNlYWY1MGYwMwogQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEF1ZyA4IDEzOjU1OjM4IDIwMTEgLTA3MDAKK0RhdGU6ICAgU2F0IEp1biAyIDA5OjI0OjE5IDIwMTIgLTA3MDAKIAotICAgIGEgbmV3IG1hY3JvIG5zYXV0b2NvbmYgdG8gcnVuIHRoZSByaWdodCB2ZXJzaW9uCisgICAgbWFrZSBkZXBlbmQgZm9yIDUuNy4yLnByZTEKIAotY29tbWl0IGI0NTE2MDdkY2EwMTVjMTExZTk2ZmRmZWIyZGRiMDY2MWZiNGY3MjQKK2NvbW1pdCA2MjcxNDcxZTAxMjgyZjM2NzU3MjRlYWYxMzU4Y2ViMGU5NWRkZDRlCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgSnVuIDIgMDg6MzI6NDAgMjAxMiAtMDcwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjcuMi5wcmUxCisKK2NvbW1pdCBmY2I3ODJhYTg4OTMxMzRjNzQxNGE5MjZkOTI2ODU5NGY3MjViOTE1CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgSnVuIDIgMDg6MzI6MTggMjAxMiAtMDcwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNy4yLnByZTEKKworY29tbWl0IGUzYmNkODdjNzJmY2VhNzcwNmU4NjhiNWFjZTc1Mjk2MDkzZjc0OTcKIEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgotRGF0ZTogICBNb24gQXVnIDggMjE6MjA6MzIgMjAxMSArMDEwMAorRGF0ZTogICBUaHUgTWF5IDMxIDE0OjA5OjQyIDIwMTIgKzAxMDAKIAotICAgIEZpeCBjYXBpdGFsaXNhdGlvbiBvZiBOZXQtU05NUAorICAgIEZpeCBkaXN0L3JlbGVhc2UgZm9ybWF0CiAKLWNvbW1pdCBjOTQ4MTMwNDRhNGM0YTYwOGU5OGU4MDIyMzA3NWM2ZmFmMDRlZTExCitjb21taXQgZDgxM2NlMmVlZWZjNjgyMjljZmNhZjIwNjAzMjQ0Y2RkNmQwOWQzYworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTQ6MDc6NTIgMjAxMiArMDEwMAorCisgICAgRml4IGRpc3QvcmVsZWFzZSBmb3JtYXQKKworY29tbWl0IGZhN2JkNTgxZTM3ODM2ODVkYjM5YzliNGVhZjg0N2JlNWFjODZmZDMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEzOjUzOjEwIDIwMTIgKzAxMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjYuMi5yYzIKKworY29tbWl0IDA3MzllMjM4MmQzMTE0NmFjYTMyMDUyNDRjZjcwNzg4YjQwYTQyOGQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEzOjUxOjQ1IDIwMTIgKzAxMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjYuMi5yYzIKKworY29tbWl0IGQ5YTE1NDQ1YWE3NGY1MzE2YmZjNzExYzE1NTg0Njc4NzJjMjk1OGMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEzOjUwOjEyIDIwMTIgKzAxMDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjYuMi5yYzIKKworY29tbWl0IGJjYWJkMmM5NTQyZGJlYmQxZDMxOWI0NDk0NDEzYmRjY2EwNjYxNGUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEzOjM4OjM4IDIwMTIgKzAxMDAKKworICAgIFJlbGVhc2UgQ2FuZGlkYXRlIGZvciBWNS02LXBhdGNoZXMKKworY29tbWl0IGI0NzM4OThjMGM1YWM5ZWI0N2M3YzA1YTNmNzQ1ZTRmZjJhNzZhYWEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEzOjM4OjI4IDIwMTIgKzAxMDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS42LjIucmMyCisKK2NvbW1pdCAxMzE0MjllNzA2MmZiYWE2NWI4MmFmZmVkMWZiOTJkZjJjMGNjODEzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMzozODozOCAyMDEyICswMTAwCisKKyAgICBSZWxlYXNlIENhbmRpZGF0ZSBmb3IgVjUtNi1wYXRjaGVzCisKK2NvbW1pdCAxYzgxMTBiMzNiODEwNWNhNjE5MDk0NWEzNWZlN2FlOTAzMjUyZDY4CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMzoyMTozOCAyMDEyICswMTAwCisKKyAgICBBdm9pZCBwZXJsIHZlcnNpb25pbmcgcHJvYmxlbXMgd2hlbiBzZXR0aW5nIHVwIHRoZSBidWlsZCBlbnZpcm9ubWVudAorCitjb21taXQgNTA4ZWNlMTZlNmY2ZjQ5NTYyZGEyMDQ3OTJhZTA2NDQyNjk5OTRkMQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTM6MjA6NTggMjAxMiArMDEwMAorCisgICAgRml4IGhhbmRsaW5nIG9mIGRpc3QvcmVsZWFzZSBtZXJnZQorCitjb21taXQgNWI4YTg1NDdiMWE0N2QyZjViMjA3ZjQ4ZjI0OTZlNDI0MWQ5MDJjNgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTE6MTA6NDggMjAxMiArMDEwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNS4yLnJjMgorCitjb21taXQgNmMzMjkxNGJmMjhkNjk1ZGYzNDlkY2EyNjllNDg4YjUwMTcwMDMxNgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTE6MDc6MjIgMjAxMiArMDEwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNS4yLnJjMgorCitjb21taXQgOWY1YTgyYTVhZmRiYjNkYWViMmZkNDM3YTMwOWYwYjhkMzU3Y2Y0YgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTE6MDU6MzkgMjAxMiArMDEwMAorCisgICAgbWFrZSBkZXBlbmQgZm9yIDUuNS4yLnJjMgorCitjb21taXQgMzkyMDNmMjk0NzdhM2JlZGYwMTJkNDExMzVkOGFiZDZiY2FkMDhiMQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTA6NTQ6MjcgMjAxMiArMDEwMAorCisgICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUgZm9yIDUuNS4yLnJjMgorCitjb21taXQgMTdlNzllZjBmYWQ3OTYwOWM1YmEyZmViNGU4YjllYjVkN2RiNjg4NgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTA6NDY6MTEgMjAxMiArMDEwMAorCisgICAgUmVsZWFzZSBDYW5kaWRhdGUgZm9yIFY1LTUtcGF0Y2hlcworCitjb21taXQgNTgyMWJlNWJiYjQwMThkZWQyODJmYmJiZDQ4MzBjZjJlZWFkZDllMQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTA6NDU6NTkgMjAxMiArMDEwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjUuMi5yYzIKKworY29tbWl0IDNmMjExMWRlNjczM2EwNGUxMmQ5MTBkMzA2YTM0ZDY3MWUwMDg3NjIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEwOjQ2OjExIDIwMTIgKzAxMDAKKworICAgIFJlbGVhc2UgQ2FuZGlkYXRlIGZvciBWNS01LXBhdGNoZXMKKworY29tbWl0IGNjZjhmZjJjNGRiNjAxMjJkNDEzMDJlNGFlYjcwMGUwYjg2ODEwNWYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDI4IDEwOjE4OjQzIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIRVM6IDM1MjY1OTk6IERvbid0IGhhbmcgb24gcmV0cmllZCBmYWlsaW5nIFNOTVB2MyByZXNwb25zZXMKKworY29tbWl0IGM4MWM4NDgzOTkwOTExZjQ3NDM1ZDMwMDUyNTVkOTFjMzdhYjkyYjIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBNYXkgMjcgMTQ6MDk6MjYgMjAxMiArMDIwMAorCisgICAgRml4IEJTRCB0aGF0IGRvd25ub3QgYWx3YXlzIGxpa2UgSVBfU0VORFNSQ0FERFIgLSBzbyByZXRyeSB3aXRob3V0CisKK2NvbW1pdCBmZmNlMWYyZGMyZjhiMzFhYmQwMWY5M2IyNmRhNzhmNDcyNmExZTY0CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gTWF5IDI3IDE0OjAzOjU4IDIwMTIgKzAyMDAKKworICAgIEZpeCBPUyBtaXNzaW5nIE1TR19ET05UV0FJVCAoQUlYKS4gQmFja3BvcnQgZnJvbSA1LjcKKworY29tbWl0IGM1NzUyMTY4NTAxODViNTY0NTRkYWQwMjUzZTMxNjQ5NzllMTM1MTMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBNYXkgMjcgMTM6NTY6MDEgMjAxMiArMDIwMAorCisgICAgRml4IG1pc3NpbmcgaW5jbHVkZS4gRml4ZXMgU0lHU0VHViBvbiBGcmVlQlNEOSB4NjQKKworY29tbWl0IDU4MDU4Nzg3NDljMDgwNjJkZWJmMGE5ZDc5OGQwOGZiOTE2Y2FhMmQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBNYXkgMjcgMDY6MjM6MTkgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEFkZCBtaXNzaW5nIGRlYnVnIHRhZworCitjb21taXQgZDFhNDJiYmNjN2IxNDczMGM5YTZkOTljNGYwNDcwOTc4NDNhNTQ5YgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgRnJpIE1heSAyNSAwOTowMjoyNyAyMDEyICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogUnVuIGxpYnRvb2wgLS1tb2RlPWZpbmlzaCBvbiB0aGUgcmlnaHQgZGlyZWN0b3J5CisKK2NvbW1pdCAxZmJmMzM3MTFhMTllYWM5NzM5YWQyM2Y2ZjYyNTFlYWNjNDFmMWM0CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIE1heSAyMiAxNDo1NDo0NSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBMaW51eDogUEFUQ0g6IDM1MjU5OTg6IERvbid0IHVzZSBhbiB1bmluaXRpYWxpc2VkIHZhbHVlIGluIGVycm9yIG1lc3NhZ2UKKworY29tbWl0IDMyYzE2ODZiNjdkYzg1YzRhMTg5NTc2MzYzMDY1NjA5ZGZlZDVlNjEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgTWF5IDIyIDE0OjUyOjU2IDIwMTIgKzAxMDAKKworICAgIEF0dGVtcHQgdG8gbWFyayByZWxlYXNlLWNhbmRpZGF0ZSBicmFuY2hlcyBhcyBzdWNoLgorICAgIE9taXQgZmluYWwtcmVsZWFzZS1vbmx5IHN0ZXBzIHdoZW4gcHJlcGFyaW5nIHByZU4vcmNOIHJlbGVhc2VzCisgICAgKFJlbGllcyBvbiBhIHR3ZWFrIHRvIHRoZSBNYWtlcmVsZWFzZSBwZXJsIG1vZHVsZXMpCisKK2NvbW1pdCA0YzU2MzNmMTYwM2U0YmQwM2VkMDVjMzdkNzgyZWM4OTExNzU5YzQ3CitBdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QGZyZWVzbm1wLmNvbT4KK0RhdGU6ICAgTW9uIE1heSAxNCAxMTo0MDowNiAyMDEyIC0wNDAwCisKKyAgICBORVdTOiBzbm1wOiBCVUc6IDM1MjY1NDk6IENWRS0yMDEyLTIxNDEgQXJyYXkgaW5kZXggZXJyb3IgbGVhZGluZyB0byBjcmFzaAorCitjb21taXQgNjVkZDgzYzIyNTVlZTU4ZWRiZjBlMjU4NjNlNTViNThhNDExMzY3OQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAyMDozMDo0MiAyMDEyICswMTAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS42LjIucmMxCisKK2NvbW1pdCBhYzRiYzY1ZTI5MDlmM2JkODVmMzJmMDRiNTA0ZmE2NWQyZjY0NTUzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1heSA3IDIwOjI4OjA2IDIwMTIgKzAxMDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjYuMi5yYzEKKworY29tbWl0IGI3NDk5NDg2NDE5NTExOWVkYjZlMTljODUxNDdmYWMwMGJjYjkzZTMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMjA6MTM6NDYgMjAxMiArMDEwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjYuMi5yYzEKKworY29tbWl0IDkxMzUwMDkyYzQ2ZTY2ZDA2ZDc0MTQzZjQ4MTY0NzNkYjRkMjUxNjAKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMTk6NTY6MzMgMjAxMiArMDEwMAorCisgICAgTWFyayB2ZXJzaW9uLXNwZWNpZmljIGNoYW5nZXMgX2JlZm9yZV8gcHVzaGluZyB0byBjZW50cmFsIHJlcG9zaXRvcnkKKworY29tbWl0IDcyNDFhY2NkNzBiODJkMGZjZDQ0ZDVhNTIzOGIyZWU5NDQ1OTAwZGIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMTc6NTM6MTcgMjAxMiArMDEwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNS4yLnJjMQorCitjb21taXQgN2M3OTZhMTVhMWQxYmI4NWZlZWE5NDBiZDRlMzUxNjg3NzkyMDkxOQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAxNzo1MDo0OSAyMDEyICswMTAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS41LjIucmMxCisKK2NvbW1pdCAwN2UyNjhiZmI2NGIwZWM2NDViM2Y3ZTg3MjY2OTg0ZjkyMTdjZjEyCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1heSA3IDE3OjQ0OjM3IDIwMTIgKzAxMDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjUuMi5yYzEKKworY29tbWl0IDE2ZWFhZjZjM2JhMTQ1OTZjYTllZmFmNGIxMTRmMWI3MDlmNDJiNjgKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMTc6Mjk6MDMgMjAxMiArMDEwMAorCisgICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUgZm9yIDUuNS4yLnJjMQorCitjb21taXQgYzcyOTQ2OWVmMTIxNTQ5MzBjZjlkMTU5NjdlMTYxODZmYjQ0NWYzMAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAxNzoyNzoyMCAyMDEyICswMTAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNS4yLnJjMQorCitjb21taXQgMTQyNTcxZDNjZWEwOGYwYzA3MmQyNGMxZDM5YTQzYzc0NDZmOGNlNworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAxNzowMTowMyAyMDEyICswMTAwCisKKyAgICBXaGVuIGJ1aWxkaW5nIGEgbmV3IHJlbGVhc2UsIHRoZSBpbnN0YWxsZWQgdmVyc2lvbiBvZiB0aGUgcGVybAorICAgIG1vZHVsZXMgbWF5IHdlbGwgYmUgZGlmZmVyZW50IHRvIHRoZSB2ZXJzaW9uIGJlaW5nIGJ1aWx0LgorICAgIFRoYXQgc2hvdWxkIG5vdCBicmVhayB0aGUgYnVpbGQuCisKK2NvbW1pdCBlYmE4NmI2ZjdhZmYyNjFlZTBlNjEzMzRkZjcwZGU3MTU2ZTVjM2NiCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1heSA3IDE3OjAxOjAzIDIwMTIgKzAxMDAKKworICAgIFdoZW4gYnVpbGRpbmcgYSBuZXcgcmVsZWFzZSwgdGhlIGluc3RhbGxlZCB2ZXJzaW9uIG9mIHRoZSBwZXJsCisgICAgbW9kdWxlcyBtYXkgd2VsbCBiZSBkaWZmZXJlbnQgdG8gdGhlIHZlcnNpb24gYmVpbmcgYnVpbHQuCisgICAgVGhhdCBzaG91bGQgbm90IGJyZWFrIHRoZSBidWlsZC4KKworY29tbWl0IDVjMGY2NGQ2ZGIyYjU5M2Y3Y2MwZWQyZDRmNTViN2M1OTJiNzc0YTgKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBcHIgMjMgMjI6MjU6MTUgMjAxMiArMDIwMAorCisgICAgT25seSBvdXRwdXQgY3B1IHdhcm5pbmdzIG9uY2UuCisKK2NvbW1pdCBlZTU4ZTQ4MjdiOWZhMTZlNjYzNWNhMDAzZThhNGYxMWRjYjVmYjdhCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXByIDIzIDIyOjE3OjQyIDIwMTIgKzAyMDAKKworICAgIEZpeCBzcGVsaW5nIGluIGVycm9ybWVzc2FnZS4KKworY29tbWl0IDAzZjQ4NWRmMjJmMjBlMTQ5Y2ZhZTk0YzU3Y2I4MmZlZWNiNWQ3NGIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBcHIgMjMgMjI6MTI6MTEgMjAxMiArMDIwMAorCisgICAgTm90IGFsbCBMaW51eGVzIHVzZSBycG0gKGRlYmlhbi91YnVudHUgY29tZXMgdG8gbWluZCkKKworY29tbWl0IDkzMDgzODIyNGY3ODE2OTZiZDM1MjI1ZjIyNTY5MzQ3NDE2ZjFiMTYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBcHIgMjMgMjI6MTA6MTUgMjAxMiArMDIwMAorCisgICAgQ2hlY2sgbmVlZCBmb3IgLWxtIHRvIHVzZSByb3VuZC9leHAKKworY29tbWl0IGEwNjA5Y2YxZjNhNjkxN2QyNjM3MjU3MzIyNDhjZDkzN2E0NWFkOTQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBBcHIgNyAwODo0MDo0NCAyMDEyICswMjAwCisKKyAgICBSZW1vdmUgbGltaXRhdGlvbiBvbiBjb25maWd1cmF0aW9uIGxpbmUgbGVuZ3RoLgorCitjb21taXQgMzA1OTczMzM4YTYzYWU1NGM1ZTAyYTg2MjZmYmU5YTgwNjRkY2I3ZQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IEFwciA3IDAwOjMyOjE5IDIwMTIgKzAyMDAKKworICAgIFJlZHVjZSB2YXJpYWJsZSBzY29wZXMuCisKK2NvbW1pdCBjY2FiNGU5ZDNlZDQyNGMzOWQwZGMyN2JlNjNmYTc2Yzc0NjFlYTgxCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgQXByIDcgMDA6MTU6MjIgMjAxMiArMDIwMAorCisgICAgSW50ZXJuYWxpemUgdGhlIG5hbWUgYW5kIGxpbmUgbnVtYmVyIG9mIHRoZSBjdXJyZXQgY29uZmlndXJhdGlvbiBmaWxlCisKK2NvbW1pdCBjZjg3NGFkN2I5ZGFmNGZjYzBkNDZjZGQwMzQ0NzRiNDc4MDA1MzQxCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBGcmkgQXByIDYgMjE6NDc6MjggMjAxMiArMDIwMAorCisgICAgUmVwbGFjZSAjaWYgKEEpIEIgI2Vsc2UgQiAjZW5kaWYgd2l0aCBCLgorCitjb21taXQgZWY5ZWE2NDFiYzI5MGVlYzUwNjg1YjYwNTE5YjMxYmVlOGIxNGE2OQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgOSAyMTowNDowNiAyMDEyICswMTAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS42LjIucHJlMgorCitjb21taXQgMzVhYmExOTU5ZGUxMTlmMWZiODkyMDNjMzcxMDlhYTZmMGUyMWM1NworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgOSAyMTowMDo0MCAyMDEyICswMTAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS42LjIucHJlMgorCitjb21taXQgZTQxZmJhZmYxOGFjOTA5NWNmNGE3MzlhMDZlYzM5YTFhNmNjZmRjMQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgOSAyMDozNTozNSAyMDEyICswMTAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNi4yLnByZTIKKworY29tbWl0IDEzN2ZlNTgyZDZjYzU2MTE0MzBkYWI0NmVmMTQ0ZWZkODRjZmM4MDMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBGcmkgQXByIDYgMjA6NDY6NTYgMjAxMiArMDEwMAorCisgICAgUmV2ZXJ0IGNvbW1pdCAxZjRhODI5YjE4Mjc1ZTQ5NTZjYTkxZTVlYzM3MGRmMDE1ZjA2MTMzCisgICAgKHNubXBfc3RvcmVfbmVlZGVkKCkgQVBJIGlzIG5vdCBhdmFpbGFibGUgaW4gNS5bNDVdLngpCisKK2NvbW1pdCAyYjdlNjQyODhjMDFhOGEwNjIwMjZjNTIxY2EzMWE1ZTg4NWYzMGNjCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciAyIDE2OjEyOjEyIDIwMTIgKzAxMDAKKworICAgIEZyZWVCU0QtOTogRml4IGZvciAnY29uc3QnaWZ5ZWQgbmxpc3QgYXJndW1lbnRzCisgICAgQmFja3BvcnQgb2YgZWQ2NWVjYTZlN2Y5Y2ZhNzM4MGE3OGQ1NmMwMWVkMzE0NzQ1YjE2OSBmcm9tIFY1LTYtcGF0Y2hlcworCitjb21taXQgN2U5NWQ4MGI2OTgwNTEyNTk2NDVjMDc0YTUzZmZkMjY0YTZmYTkxNgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgMiAxNjowNjo1NiAyMDEyICswMTAwCisKKyAgICBGcmVlQlNELTk6IEZpeCBmb3IgJ2NvbnN0J2lmeWVkIG5saXN0IGFyZ3VtZW50cworICAgIEJhY2twb3J0IG9mIGVkNjVlY2E2ZTdmOWNmYTczODBhNzhkNTZjMDFlZDMxNDc0NWIxNjkgZnJvbSBWNS02LXBhdGNoZXMKKworY29tbWl0IDFhOWI3YjdjMDJlMmRlZWZlOTk0ZDU5NWE3Y2MxZGQyZmZiZWVlMWQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDIgMTU6NTE6MjAgMjAxMiArMDEwMAorCisgICAgRml4IGNvbXBpbGF0aW9uIG9uIEZyZWVCU0QgOS54IHdpdGggJ3JlY2VudCcgaGVhZGVyIHNodWZmbGluZworICAgIEJhY2twb3J0IG9mIGM1M2Q4YzM1MjVmNTkwZjIyMTNkMzViMGRhOTQxMjM4NjJmM2UzNjYgZnJvbSBWNS01LXBhdGNoZXMKKyAgICAoUGF0Y2ggIzMzNjMzMDggLSBvbWl0dGluZyB0d2Vha3MgdG8gY29uZmlndXJlKQorCitjb21taXQgM2Q5ZGRiNDFlMjYzYmMxYTc4ZjlmOTQ0MGI4ZDRhZDRmODZjODJlMQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgMiAxMDozNjoxOCAyMDEyICswMTAwCisKKyAgICBGaXggdHlwbworICAgIEJhY2twb3J0IG9mIDViNzAyYjAyNGI2MDE3NmQ3ZjU2OTliOTJlNTVkYTUwYThkZWFlNzEgZnJvbSBWNS02LXBhdGNoZXMKKworY29tbWl0IDBkMzVjNjA5NTY0YjY2YTFmZmU4MTU1NmQzN2FkZjA1MDNjMzg5Y2UKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDIgMTA6MTU6MDggMjAxMiArMDEwMAorCisgICAgUHJvdmlkZSBtaXNzaW5nIGRlZmluaXRpb24gb2YgTkVUU05NUF9QUklvCisgICAgKHVzZWQgaW4gYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19zb2xhcmlzMi5jKQorCitjb21taXQgYTc5MTQxYTQxOTk1M2QwMTBhNjk4OWU4Yjg4ZjRkZjEyNzM5NGQzOAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgMiAwOToxOToyNiAyMDEyICswMTAwCisKKyAgICBIZWFkZXIgZmlkZGxpbmcgZm9yIEZyZWVCU0QsT3BlbkJTRCxEcmFnb25mbHkKKyAgICBCYWNrcG9ydCBvZiBmN2IwZGUxNTE4MDAyYzZlOGY5Yjk0ZWYzZGViODg4MmUxZTkzMzhlIGZyb20gVjUtNy1wYXRjaGVzCisKK2NvbW1pdCBhZGY3NGJmNzUzZDM5NzAzNTdhZmQ2MzM4MDMyNTYyNDFkOWM3Yjg3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciAyIDA4OjIwOjQ2IDIwMTIgKzAxMDAKKworICAgIEZpeCBJUHY2IFRDUCAmIFVEUCB0YWJsZXMsICpCU0Qgc3VwcG9ydCAoaW5jbHVkaW5nIE9wZW5CU0QpCisgICAgQmFja3BvcnQgb2YgY29tbWl0cyA1Y2QxNTczNjI1NDcxYzA1ODNlOTA4N2FlYzY4MDJiNzcxNTdkNWEyCisgICAgICBhbmQgNTBkNzNmMGQ1NmZlMjJjNTkwNTMwYjNlMzA1ZDQxZGNkYWMzY2UwMCBmcm9tIFY1LTYtcGF0Y2hlcworCitjb21taXQgZDk1NTVhY2I5ZjQ3YzNhYThmZGU0YmMyMGE0NGQ3Y2E2MTgxYThhOQogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgTW9uIEF1ZyA4IDIxOjU2OjE1IDIwMTEgKzAyMDAKK0RhdGU6ICAgU3VuIE1hciAyNSAxODo0ODoxMiAyMDEyICswMDAwCiAKLSAgICBSZXZlcnQgIkNIQU5HRVM6IFdpbmRvd3M6IEF2b2lkIHRoYXQgaWYgdGhlIE5ldC1TTk1QIFBlcmwgbW9kdWxlcyBoYXZlIGJlZW4gYnVpbHQgd2l0aCBhbm90aGVyIHZlcnNpb24gb2YgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gdGhhbiBBY3RpdmVQZXJsIHRoYXQgdXNpbmcgb25lIG9mIHRoZXNlIFBlcmwgbW9kdWxlcyB0cmlnZ2VycyBhICJGcmVlIHRvIHdyb25nIHBvb2wiIGNyYXNoLiBUaGlzIHJlZ3Jlc3Npb24gd2FzIGNhdXNlZCBieSBjb21taXQgM2IxNGM1OWNmODI3OGQ0MTAyMDdmZjQyZGViZGEyNjM2NDI2YTQ2OCAodGhlIG5ldHNubXBfZnJlZSgpIGludG8gU05NUF9GUkVFKCkgY2hhbmdlcyBpbiB0aGUgKi54cyBmaWxlcykuIgotICAgIAotICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgN2Y0MmQwZDkzMzIwNDg0MTUyMjcxNDI3Y2M5ODA4Y2JkYTQ5YmJkMCBiZWNhdXNlIHRoYXQgY29tbWl0IGlzIG5vdCBzdWl0YWJsZSBmb3IgdGhlIDUuNCBicmFuY2guCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogQXZvaWQgZGFuZ2xpbmcgcG9pbnRlcnMgKGJhc2VkIG9uIHBhdGNoIDM1MDMyNTkpCiAKLWNvbW1pdCA1OGNhNzNkMDM1ODliMDk3NGQ5MjZiZGZkYzM5MjcwOTlmYmEyMTE1Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gQXVnIDggMTE6MjQ6MDkgMjAxMSAtMDcwMAorY29tbWl0IDgyYThiNDdlZTk2ZTVkMjlhMmI3YWMzY2EwMDcyMmQ3MzdkNWI0NzkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXIgMjkgMjI6MzE6NTYgMjAxMiArMDIwMAogCi0gICAgZGlzcGxheSB0aGUgYnJhbmNoIHdlJ2xsIGNvbW1pdCB0bworICAgIFJ1bm5pbmcgYXV0b2hlYWRlciAvIGF1dG9jb25mCiAKLWNvbW1pdCBkNDM3MjliZWZlMTJiZGVmYzg3MDg4OWJkZmUxODJlNzY5M2YxZjNiCi1BdXRob3I6IFZsYWRpbWlyIEtvbmRyYXRpZXYgPHd1bGYyMDAxQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEF1ZyA4IDExOjIwOjMwIDIwMTEgLTA3MDAKK2NvbW1pdCA5Y2E4ZDkzOWFiMzkzMzA2YTFkMGYxNDZjOWNiNzBlYTBjYjE5ZDQ5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWFyIDI5IDIyOjMwOjM4IDIwMTIgKzAyMDAKIAotICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSCAzMzg2NjMzOiBmcm9tIHd1bGYyMDAxOiBmaXggaW50ZWdlciBvdmVyZmxvdyBpbiBkaXNrIHBlcmNlbnQgY2FsY3VsYXRpb25zCi0gICAgCi0gICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisgICAgUnVubmluZyBhdXRvaGVhZGVyIC8gYXV0b2NvbmYKIAotY29tbWl0IDNiYzU2ODMzMzRlNTY2M2M1ODkyNDE5NmVkZDY2NDk2ZmY4MTcwYzIKLUF1dGhvcjogR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEF1ZyA4IDExOjEyOjI3IDIwMTEgLTA3MDAKK2NvbW1pdCBjZWNkNDg2OWRlYjY4ZjNkNGM3MWU3NjhkNWI0MGRkNTc2NDQ2OTI1CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWFyIDI5IDIyOjI5OjMxIDIwMTIgKzAyMDAKIAotICAgIENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENIIDMzODcxMzk6IGZyb20geWFiZXJhdW5leWE6IEF2b2lkIHNlZ2ZhdWx0IGlmIHRyYXBzZXNzIHRyYW5zcG9ydCBlbGVtZW50IGNhbnQgYmUgcGFyc2VkCi0gICAgCi0gICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisgICAgUnVubmluZyBhdXRvaGVhZGVyIC8gYXV0b2NvbmYKIAotY29tbWl0IDFkMWJmZDVmNDUxYzJiYzQyMGI3MTBjOThjNzlkMDRiZGVmNDM5MWIKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBBdWcgOCAxMToxMDo1MiAyMDExIC0wNzAwCitjb21taXQgYTFhNDUxM2JkM2U0ZTYxNDIwMGY2ZGI1YTAyZjYxZDZjOGVlZmIzMgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFdlZCBNYXIgMjggMDk6NDc6NDUgMjAxMiArMDEwMAogCi0gICAgbnNzZnBhdGNoYXBwbHk6IHNwbGl0IHRoZSBkaXNwbGF5ZWQgZ2l0IGNvbW1pdCBjb21tYW5kIGludG8gbXVsdGlwbGUgc2VnbWVudHMKKyAgICBEb3h5Z2VuLXN0eWxlIGRvY3VtZW50YXRpb24gZml4ZXMgKGJhY2twb3J0IG9mIGdpdCBjb21taXQgYzA5OTAzYTQyZTlkOTczMzFmZDllNDhlZTgzMWE4NWFmZGY5YzcwYSkKIAotY29tbWl0IGQzNzNjNGZkOGMzOTFhZmUwYjllMDJhNjBiNWNkNjYxYmM5MDM5ZGMKK2NvbW1pdCA5YmRiY2NhMTIyYzM3ZGEzMDRmYzZhYTY5Mzk3Mjk0NzVmOTBmNWZkCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgV2VkIE1hciAyOCAwOTozMDo0OSAyMDEyICswMTAwCisKKyAgICBEb3h5Z2VuLXN0eWxlIGRvY3VtZW50YXRpb24gZml4ZXMgKGJhY2stcG9ydCBvZiBHSVQgY29tbWl0IGMwOTkwM2E0MmU5ZDk3MzMxZmQ5ZTQ4ZWU4MzFhODVhZmRmOWM3MGEpCisKK2NvbW1pdCAxZjRhODI5YjE4Mjc1ZTQ5NTZjYTkxZTVlYzM3MGRmMDE1ZjA2MTMzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIE1hciAyNyAyMTo0MToyNCAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMzQ5NTY5NzogU3RvcmUgcGVyc2lzdGVudCBzbm1wVGFyZ2V0IHRhYmxlIGNoYW5nZXMKKworY29tbWl0IDFmNzVmMzc3ZDBkYjAxNzU0YzBjMTYxZGM0NDM3MzA4MWJlZWY1MjAKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgTWFyIDI3IDIxOjE0OjA2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IEZyZWVCU0Q6IFBBVENIRVM6IDM0ODkzODc6IEluc3RhbGwgRnJlZUJTRCAxMCBoZWFkZXIgZmlsZSAocGx1cyBvdGhlciBtaXNzaW5nIHZlcnNpb25zKQorCitjb21taXQgM2Q3MmM5ZTc4ZjJhZDgxN2M5ZDFkODI5NzczMjdiYmIyMGQ2M2FiOQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBNYXIgMjcgMjE6MDY6MzEgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAzNDg3ODY3OiBEb24ndCBza2lwIG1pc3NpbmcgaWZYVGFibGUgZW50cmllcyAoaWZDb25uZWN0b3JQcmVzZW50IEZBTFNFKQorCitjb21taXQgMTI5MDY1NzhhYjMwY2Y3NzZkMDgwYzBlZjMwMjViMzAzMzRkNzY1NQogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgTW9uIEF1ZyA4IDE3OjIzOjQzIDIwMTEgKzAyMDAKK0RhdGU6ICAgTW9uIE1hciAyNiAxNjoxNzo0NSAyMDEyICswMjAwCiAKLSAgICBDSEFOR0VTOiBzbm1wbGliOiBGaXggYSBjcmFzaCB0aGF0IGNvdWxkIGJlIHRyaWdnZXJlZCBieSBjYWxsaW5nIF9taWJpbmRleF9hZGQoKSB3aXRoIHRoZSBzZWNvbmQgYXJndW1lbnQgbm90IGVxdWFsIHRvIC0xLgorICAgIERJU01BTi1QSU5HLU1JQjogRml4IGV2ZW4gbW9yZSBtZW1vcnkgbGVha3MKIAotY29tbWl0IDhjYTdmZjFlNjkyY2FlYzQxODZiNzg4YzlhZTJkMjdiZTIxMzI5MGYKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBBdWcgOCAxMDozMzo1NiAyMDExIC0wNzAwCi0KLSAgICBmaXggYW5vdGhlciBmdW5jdGlvbiB0eXBvCi0KLWNvbW1pdCA1NTZlOTM4ZTgyYTdlZTJjMTBmYThjMGI3YzdhMzRlOWU2NWE2ZDVhCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gQXVnIDggMTA6MDU6MjAgMjAxMSAtMDcwMAotCi0gICAgZml4IGZ1bmN0aW9uIG5hbWUgdHlwbwotCi1jb21taXQgOTY5ZTg2NmFmOTgzZDk4NmEyNmJlYmNhODVmZWYwZjZjNjIzY2UyNgotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEF1ZyA4IDA5OjU2OjQzIDIwMTEgLTA3MDAKLQotICAgIG1ha2UgbnNwdWxsL25zcHVzaCBjaGVjayBmb3IgYSBjbGVhbiByZXBvCi0KLWNvbW1pdCA3ZTZmZGM4YjJhM2Q4NmE3OTU0MzY3MzQzNTM3MTYyMWEyODU4NzM3Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gQXVnIDggMDk6NTY6MTMgMjAxMSAtMDcwMAotCi0gICAgbmV3IGZ1bmN0aW9uICJuc21ha2VhbGwiIHRvIHRlc3QgYnVpbGRpbmcgb24gZXZlcnkgYnJhbmNoCi0KLWNvbW1pdCBlMjViZTdjODJkNTU0NWQ4OGFiZWExMGU0ZTI1NWM5MmJlZDNkZTZlCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gQXVnIDggMDk6NTM6MDMgMjAxMSAtMDcwMAotCi0gICAgZGVmYXVsdCB0byBtZXJnZQotCi1jb21taXQgYmNiODFiNzk2ZGQ2YTkyMTk1ZDZkYjEzMTc3YWQzMGYwNWZjNjNmNwotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEF1ZyA4IDA5OjUxOjI2IDIwMTEgLTA3MDAKLQotICAgIHNlcGFyYXRlIG5zc3luYyBpbnRvIG5zcHVsbCBhbmQgbnNwdXNoCi0KLWNvbW1pdCBlNDZiMTcwMTE3ZmU3OGEyZmFhYmVmMWFkY2MzZDZkNGQ1Njk2MDM2Citjb21taXQgY2NmZDVjYTZmZTEwMzEzZDYxODFkMjRiYmIxNzk3ODI1YTk3ZGExMAogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgTW9uIEF1ZyA4IDE3OjIzOjQzIDIwMTEgKzAyMDAKK0RhdGU6ICAgTW9uIE1hciAyNiAxNTo1MToxNiAyMDEyICswMjAwCiAKLSAgICBDSEFOR0VTOiBzbm1wbGliOiBGaXggYSBjcmFzaCB0aGF0IGNvdWxkIGJlIHRyaWdnZXJlZCBieSBjYWxsaW5nIF9taWJpbmRleF9hZGQoKSB3aXRoIHRoZSBzZWNvbmQgYXJndW1lbnQgbm90IGVxdWFsIHRvIC0xLgorICAgIERJU01BTi1QSU5HLU1JQjogRWxpbWluYXRlIGR1cGxpY2F0ZSBjb2RlCiAKLWNvbW1pdCA3ZjQyZDBkOTMzMjA0ODQxNTIyNzE0MjdjYzk4MDhjYmRhNDliYmQwCitjb21taXQgOWZkYTI2Njg3MjJmMDhkZGJmZGQ2N2EyMjM5ZDhiMDIxZGI2NGE4MwogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgTW9uIEF1ZyA4IDA5OjUwOjUxIDIwMTEgKzAyMDAKK0RhdGU6ICAgTW9uIE1hciAyNiAxNTo0ODo0NiAyMDEyICswMjAwCiAKLSAgICBDSEFOR0VTOiBXaW5kb3dzOiBBdm9pZCB0aGF0IGlmIHRoZSBOZXQtU05NUCBQZXJsIG1vZHVsZXMgaGF2ZSBiZWVuIGJ1aWx0IHdpdGggYW5vdGhlciB2ZXJzaW9uIG9mIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIHRoYW4gQWN0aXZlUGVybCB0aGF0IHVzaW5nIG9uZSBvZiB0aGVzZSBQZXJsIG1vZHVsZXMgdHJpZ2dlcnMgYSAiRnJlZSB0byB3cm9uZyBwb29sIiBjcmFzaC4gVGhpcyByZWdyZXNzaW9uIHdhcyBjYXVzZWQgYnkgY29tbWl0IDNiMTRjNTljZjgyNzhkNDEwMjA3ZmY0MmRlYmRhMjYzNjQyNmE0NjggKHRoZSBuZXRzbm1wX2ZyZWUoKSBpbnRvIFNOTVBfRlJFRSgpIGNoYW5nZXMgaW4gdGhlICoueHMgZmlsZXMpLgorICAgIERJU01BTi1QSU5HLU1JQjogV3JpdGUgYSBsb29wIGFzIGEgbG9vcAogCi1jb21taXQgYTNiODY1NGEyMzJjNTYzYmM5N2NjOTkyNWNkOTg1OTBhMzBjNWJjNQorY29tbWl0IGNiYzE4ZWI3NjNiYTZkZjY5ZWY3MDY2OGE1NGQ3NWJmMzVlNzk1MDMKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIE1vbiBBdWcgOCAxNzoyNDoxOCAyMDExICswMjAwCitEYXRlOiAgIE1vbiBNYXIgMjYgMTU6MjQ6MDggMjAxMiArMDIwMAogCi0gICAgRml4IGEgcmVjZW50bHkgaW50cm9kdWNlZCBNaW5HVyBjb21waWxlciB3YXJuaW5nCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogRml4IG1vcmUgbWVtb3J5IGxlYWtzCiAKLWNvbW1pdCBhMGRkM2NhZjI1OTI2ZTQzNDY1NzE4YmY0MTdhNDY0YzJmYjM2MzY2Citjb21taXQgYzc3MjUxOTI0NzhhZWMwMThmYjRhZWZhNjA5NDZlMDRhNDA2YzAwYwogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgU3VuIEF1ZyA3IDEwOjE3OjAxIDIwMTEgKzAyMDAKK0RhdGU6ICAgTW9uIE1hciAyNiAxMzo0MzoyNCAyMDEyICswMjAwCiAKLSAgICBmaW5kIFwoIC1uYW1lICcqLltjaF0nIC1vIC1uYW1lICcqLmluJyAtbyAtbmFtZSAnKi5kc3AnIFwpIC1wZXJtIC11K3ggfCB4YXJncyAtciBjaG1vZCBhLXgKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBBdm9pZCByZWFkaW5nIGZyZWVkIG1lbW9yeSB3aGVuIGRlbGV0aW5nIGEgcm93IGZyb20gYSB0YWJsZQogCi1jb21taXQgYTlhMjUyNTIyZmJlN2RjMWVkNzBmZjI3MjFhNGY4MTU4M2MwZDkyYQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEF1ZyA1IDEwOjIwOjUxIDIwMTEgLTA3MDAKLQotICAgIG1ha2Ugcm9sbHVwIGFuZCBzeW5jIHN1cHBvcnQgLS1yZWJhc2UgYW5kIGNoYW5nZSB0aGUgZGVmYXVsdCBiYWNrIHRvIG1lcmdlCi0KLWNvbW1pdCA5NmY1ZjQ3YWQ0Mjc5NzJkOGQ5YTZjZTA2YzVlMTYxNDczNjIwODNiCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgQXVnIDUgMDk6MjU6MjUgMjAxMSAtMDcwMAotCi0gICAgdHJ5IGEgbXVsdGlwbGUgYnJhbmNoIHB1c2gKLQotY29tbWl0IDBkYmM4NjlmZWMwN2Q4ZTkwZGJkMWM5NTQ5M2VlN2NiYzYyM2M5NWMKK2NvbW1pdCBhNmJlNzM5NTY2ZjMxMGQ3NDQxZmQ3ZjU0OTg5ZTM5NDQ2ZjdhMTQzCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBGcmkgQXVnIDUgMTI6NDA6MzEgMjAxMSArMDIwMAorRGF0ZTogICBNb24gTWFyIDI2IDEzOjQyOjI4IDIwMTIgKzAyMDAKIAotICAgIENIQU5HRVM6IFdpbmRvd3M6IGJ1aWxkLmJhdDogR2VuZXJhdGUgUERCIGZpbGVzIGluIHJlbGVhc2UgbW9kZS4KKyAgICBFeHRlbmQgRElTTUFOLVBJTkctTUlCIHRlc3QKKworY29tbWl0IDhhOWI1NzI5MTQ1M2NiOGFlYzI4ZTc2NmM1OTQ3MDFlZDE5YzRmYzYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBNYXIgMjYgMjE6MDM6NDEgMjAxMiArMDIwMAorCisgICAgRml4IGZvciBEcmFnb25GbHkgMworCitjb21taXQgZTVjOWEzMmY3OWVhYzJlODU1MjdjOWNmMDUwODdjZGFlOWIzNWE2YworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE1hciAyNiAyMDo1OTo1MyAyMDEyICswMjAwCisKKyAgICBEcmFnb25GbHkgbmVlZHMgX0tFUk5FTF9TVFJVQ1RVUkVTIHRvIGNvbXBpbGUgaXB2NiBjb2RlCisKK2NvbW1pdCBjZDQzYmMwOWEzOWJkOTdmZjVlNzE5YTJjZTIzMmNlNDI0NjAwYTY1CitBdXRob3I6IERhdmlkIEltaG9mZiA8ZGltaG9mZkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBNYXIgMjQgMTU6NDc6MTcgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0ggMzUxMDQ1NDogQWxsb3cgdGhlIHVzZSBvZiAwLjAuMC4wLzAgYXMgYWxpYXMgZm9yIGRlZmF1bHQKKworY29tbWl0IGUyZmMxNWY5ZTVhNmUzZTM2YmU1ZjQ4OTYwMWNiZjZiZjczMTkxN2YKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBNYXIgMjQgMTU6MjE6MzggMjAxMiArMDEwMAorCisgICAgRml4IFRDUCBzdGF0ZSB2YWx1ZXMgZm9yIERyYWdvbkZseQorCitjb21taXQgNDMyZmUzZGRmNTRmMmM5OGY5MzY5NTk0NjljYjliMDE0ZDU5OWYwNgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1hciAyNCAxNToxMDo1MiAyMDEyICswMTAwCisKKyAgICBSZXF1aXJlIHBlcmwgdG8gZG8gcGFzc19wZXJzaXN0IHRlc3QKKworY29tbWl0IDM3ZDI3NzBjZjUwYzk4MDIzZWViYTkwZTI1ZDM3MmJmZjczMTZhZGEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2VyLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1hciAyNCAxNTowNjo0MCAyMDEyICswMTAwCisKKyAgICBGaXggVENQIHN0YXRlIHZhbHVlcyBmb3IgRHJhZ29uRmx5CisKK2NvbW1pdCA4NmE5NDhkODY5MWU4ODFkNTU1OTFkY2FiZGRjMjczOWNlNzJiMzBlCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAbmJhLWxpbnV4LnNiLnN0YXRzYmlibGlvdGVrZXQuZGs+CitEYXRlOiAgIFNhdCBNYXIgMjQgMTU6MDE6MzcgMjAxMiArMDEwMAorCisgICAgUHJvcGVybHkgZmluZCBwYXNzIGhlbHBlcnMgZm9yIHRlc3RpbmcuCisKK2NvbW1pdCBmZTI2YTNjNGYyOWYwNDZiZjY1ZWQ1MmU5ZDk0MDU0YjY3NWZiYzRiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgTWFyIDIyIDA5OjA0OjQyIDIwMTIgKzAxMDAKKworICAgIERJU01BTi1QSU5HLU1JQjogTGltaXQgc291cmNlIGNvZGUgbGluZXMgdG8gODAgY29sdW1ucworCitjb21taXQgNzQ1YmFmY2RjYzljOGU4NDYxNmQ0ZTI3NGRiMmEzODRiZjIzNGRhMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IE1hciAyMiAwODo1NTowNSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBNYWtlIHBpbmcgaW1wbGVtZW50YXRpb24gaW5kZXBlbmRlbnQgb2YgbnRwZCBjbG9jayBqdW1wcworCitjb21taXQgZGE2OTI1ZTY3NjNjYWRiZTAyZjRhOGJiZmU2OGEzNjJlNTM1YWQ1ZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE1hciAyMCAxMDozODozNiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBBZGQgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTU0ZGlzbWFucGluZ21pYl9zaW1wbGUKKworY29tbWl0IGZhNjA2ZGQ3Y2E2YWZmOTMwOGQ0ZThiMDFiYmNkZTE0OGY0NDEyNzEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBNYXIgMjAgMTY6NDk6MjEgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogTWFrZSBwaW5naW5nIGxvY2FsIGludGVyZmFjZSBhZGRyZXNzZXMgd29yaworCitjb21taXQgNjE3YTgzYmE3OTk1NzVjODRjNjZmNmIxYzQ4MGVmNjMzMTYxYTY0YworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE1hciAyMCAxNjoyODo0NiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBGaXggYSBzb2NrZXQgbGVhayB0cmlnZ2VyZWQgYnkgcGluZ2luZyBhIHJlbW90ZSBob3N0CisKK2NvbW1pdCA2MjVmNTVjMjcyZWM2MjgxZTM4ZDhlMzBlYjUzZmQ1MTUxNmIwMGFlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgTWFyIDIyIDA5OjU0OjU1IDIwMTIgKzAxMDAKKworICAgIERJU01BTi1QSU5HLU1JQjogQ29udmVydCBhIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCB2YXJpYWJsZSBpbnRvIGEgc3RhY2sgdmFyaWFibGUKKworY29tbWl0IGI0OGYxOWFkNGI0YWE2OGMzZTE2ZTJhNzJkZjM3YjljMGNkMzZjNGEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBNYXIgMjAgMTY6MjQ6MDcgMjAxMiArMDEwMAorCisgICAgRElTTUFOLVBJTkctTUlCOiBBZGQgbW9yZSBkZWJ1Z2dpbmcgc3RhdGVtZW50cworCitjb21taXQgZDc0Y2IzOTY2MTc1ODkyNTYyZjVlM2E5YjE2ODNhY2JhMmMyMmUwNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE1hciAyMCAxMTo0NToxOCAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBGaXggc2V2ZXJhbCBtZW1vcnkgbGVha3MKKworY29tbWl0IDBiMWE3NzY3NDY3OGNjOWExNWJlM2U3NzAwZDNjZWY2NTBlZDAyYzcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBNYXIgMjAgMTI6MDA6MzAgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogRG8gbm90IHNlbmQgdGhlIGNvbnRlbnRzIG9mIHRoZSBzdGFjayBvdmVyIHRoZSBuZXR3b3JrCisKK2NvbW1pdCAxMzkwMjNjZDNhYjUxNjMxY2MxMGUyODY2ZDcxYWJjZjk5YWU0YzFiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTWFyIDIxIDA4OjU2OjA3IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IERvbid0IGNhbGwgZXhpdCgpIHVwb24gbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZQorCitjb21taXQgMTY5YjZhYWE3YjYxODI3Y2MxYWQwYjNhZWVhZTNhNzIyOWRkMjVkOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE1hciAyMSAwODo1MzoyNiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBGaXggSVB2NiBzb2NrZXQgbGVhayBpbiBlcnJvciBwYXRocworCitjb21taXQgYTBiZTMyYWQwNTNhNzFmYTk2MTM0ZDU1ZTU0MmJiMDdkNGYwMjk3ZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE1hciAyMCAxMTo0Mzo0NiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBBdm9pZCB0aGF0IGhvc3QgbmFtZSByZXNvbHV0aW9uIGZhaWx1cmUgY2F1c2VzIGEgY3Jhc2gKKworY29tbWl0IGJmOWJmZjY0NTU2Nzg3ZDc2NmVlMmVmMmQ1NzhhZmI5MjA3MTlmM2EKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBNYXIgMjEgMDg6NTE6NTUgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogQ29udmVydCBwcmludGYoKSBzdGF0ZW1lbnRzIGludG8gc25tcF9sb2coKSBhbmQgREVCVUdNU0coKS1zdGF0ZW1lbnRzLgorCitjb21taXQgNWQ3NGMwMTI0NTUyM2E5ZDhkYjFlZGEyN2QxZWZhZTJlYmMxMDRmYgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE1hciAyMSAxODo0MDowMiAyMDEyICswMTAwCisKKyAgICBOZXcgTUlCOiBWUlJQVjMtTUlCCisKK2NvbW1pdCA1YjM4ZjA2MmI5OWI2ZWYzNjcwOGUyYzdkZTQ5NjVhMzE5MjYxMmU5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTWFyIDIxIDE4OjM0OjQ4IDIwMTIgKzAxMDAKKworICAgIEZvciBzYWZldHksIHNpemVvZiB0aGUgcmlnaHQgdmFyaWFibGUgaW4gbWVtY3B5CisKK2NvbW1pdCBlNWY4Mjc4MmRhMDVlZmE3YzBlNmRjMmJmNWE0MWVlMTE4NjhmNDY5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTWFyIDIxIDE4OjMzOjIxIDIwMTIgKzAxMDAKKworICAgIEZpeCBmb3IgaHJTV1J1biBkYXRhIGZvciBGcmVlQlNECisKK2NvbW1pdCA4MzI3NTY1ZTgyMzI3MGQxMGE0NTA0NTY4ZWRiZTViNWFlMzIzYTU1CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTWFyIDIxIDE4OjMxOjU0IDIwMTIgKzAxMDAKKworICAgIENsZWFuIHVwIHZhcmlhYmxlcyBmb3IgT3BlbkJTRC9OZXRCU0QKKworY29tbWl0IDE3MGY2ZjAyN2JmNGY5MTc0YjcwNzM1MzBkYTRkMDdmNDAwYmJhNTgKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBNYXIgMjEgMTg6Mjg6NTggMjAxMiArMDEwMAorCisgICAgTW92ZSBkZWNsYXJhdGlvbnMgaW4gZnJvbnQgb2Ygc3RhdGVtZW50cworCitjb21taXQgZGJiNDU3M2I2OWZhZTg1Y2RjOTMxYjI4OTJiNWNlNGU1YjE2YjMyMQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE1hciAyMSAxODoyMzozNiAyMDEyICswMTAwCisKKyAgICBSZXF1aXJlIGtlcm5lbF9uZXRic2QgZm9yIE5ldEJTRDYKKworY29tbWl0IGYxMTY4MWYxNWFhZDdkOWE1MmZhMjk4MTJlY2JiNTA3ZjFiN2ZlMjQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBXZWQgTWFyIDIxIDEyOjM2OjM4IDIwMTIgKzAwMDAKKworICAgIENoZWNrIGZvciBvbGQgdGFyYmFsbHMgKGFuZCB1bnBhY2tlZCBkaXN0cmlidXRpb25zKSBiZWZvcmUgc3RhcnRpbmcuCisgICAgVGhlc2UgY2FuIGNvbmZ1c2Ugc3RlcHMgc3VjaCBhcyAibWFrZSBkZXBlbmRjaGVjayIsIHRoYXQgZG8gYSAnZmluZCcKKyAgICBvbiB0aGUgY3VycmVudCB0cmVlLCBhbmQgd291bGQgZGVzY2VuZCBpbnRvIHN1Y2ggdW5wYWNrZWQgc291cmNlIHRyZWVzLgorCitjb21taXQgNDcwZGNkNGI2YzNmZjExZmYwYTM1MzJhNzM0MGE1NmNmZmQ2OTA5OAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFdlZCBNYXIgMjEgMTI6MzI6MTMgMjAxMiArMDAwMAorCisgICAgRG9uJ3QgcnVuICJtYWtlIGRvY3M7IG1ha2UgbWFuY3AiIGlmIHRoZXJlJ3Mgbm8gTWFrZWZpbGUgcHJlc2VudAorCitjb21taXQgYzlhYzQyMDM0M2UxNmRmMmI3MDY1ZjViZjI3OTBkZjQ0ZTI0N2ZiYQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBNYXIgMjAgMTA6MjY6MTAgMjAxMiArMDAwMAorCisgICAgQWxsb3cgZGlzdHJpYnV0aW9uIGFzIHBhcnQgb2Ygbm9ybWFsIE5ldC1TTk1QIHBhY2thZ2VzLgorCitjb21taXQgNTk5OWY2MGM1NzcyM2YyM2YzYzI1NGFmNTdmZGIxMGFmMzAxYThlYgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE1hciAxOCAxOTowMzowOCAyMDEyICswMTAwCisKKyAgICBSZWdlbmVyYXRlCisKK2NvbW1pdCAyNzVkMjA0MDM2YTYwN2UzZGY1MGU4NDQ3ZDRiYzc1NWU5ZGIwMmZkCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gQXVnIDI4IDIxOjI5OjAzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBNYWtlIGl0IHBvc3NpYmxlIHRvIHVzZSAtLWRpc2FibGUtYXBwbGljYXRpb25zLy0tZGlzYWJsZS1hZ2VudCB0b2dldGhlciB3aXRoIC0tZW5hYmxlLW1pbmltYWxpc3QKKworY29tbWl0IGJkY2NjODc1NzEwMjk1YWFjZjUwZjcxZWIxYzFkMmVlOTdmMzM2ZmUKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIEZyaSBNYXIgMTYgMjA6MTA6NTggMjAxMiArMDEwMAorCisgICAgRG8gbm90IGRlY2xhcmUgdGhlIGxvY2FsIHZhcmlhYmxlcyBmb3Igb3BhcXVlX3NwZWNpYWxfdHlwZXMgdW5sZXNzIHRoYXQgb3B0aW9uIGlzIHNldC4KKworY29tbWl0IGI4MGE2N2RhMDUyYWRjYTFiNWE2NDRkYjgzYTc4MmUxNWMyMjM3YzMKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIEZyaSBNYXIgMTYgMTk6NTA6MDMgMjAxMiArMDEwMAorCisgICAgQ2hlY2sgdGhhdCB0aGUgZGF0YSBleGlzdCBiZWZvcmUgdHJ5aW5nIHRvIHJlYWQgaXQKKworY29tbWl0IGVmYWU4NmJiYTU5NjI0OTFkNDJiNzdiOTM1MTkxYTNlYjI1ZGQ5MzkKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFdlZCBNYXIgMTQgMDE6MDU6MzMgMjAxMiArMDEwMAorCisgICAgUGFydGlhbGx5IHJldmVydCAiTWVyZ2UgcmVtb3RlIGJyYW5jaCAnb3JpZ2luL1Y1LTctcGF0Y2hlcycgaW50byBWNS03LXBhdGNoZXMiCiAgICAgCi0gICAgQ0hBTkdFUzogV2luZG93czogYnVpbGQuYmF0OiBXcml0ZSBQREIgZmlsZXMgdG8gdGhlIG91dHB1dCBkaXJlY3RvcnkgaW5zdGVhZCBvZiB0aGUgaW50ZXJtZWRpYXRlIGRpcmVjdG9yeS4KKyAgICBDb21taXQgZDM1YTE4NjAyMTdlNzIzZTRmODY2ZGQ5OGVmNjYyMTY2NTkzNGM0YSBhY2NpZGVudGFsbHkgcmV2ZXJ0ZWQKKyAgICAKKyAgICA0YTJlNWJjZDU2Y2QyYWZiMzZlYjE1ZDc1NGUyZmVlODg4ZGQ1MGMwIChocmhfc3RvcmFnZSBpcyBhIHByb3BlciByZXBsYWNlbWVudCBmb3IgaHJfc3RvcmFnZSkKKyAgICAwZGQxZTU0NTU3ZDFiYTQ5OGI1NWQwMTdiMGE5M2U4Y2NmOWJkNTIyIChDSEFOR0VTOiBzbm1wZDogVURQLU1JQjogUmVwb3J0IHRoZSBwcm9wZXIgYWRkcmVzcyBpbiB1ZHBMb2NhbEFkZHJlc3MpCisgICAgNTExNmQ0ODM3OGVjZjAzZTcyMmYzMDEwYWQ0N2JmMjJhM2ZiY2I4YyAoUmVkdWNlIHNjb3BlIG9mIHByZWZpeF92YWwgc3VjaCB0aGF0IHRoZSBjb21waWxlciBkb2Vzbid0IHdhcm4gYWJvdXQgYW4gdW5zZWQgdmFyaWFibGUpCisgICAgMTBmNTY2ZjRkNGNiYjNlMjA1MDIzYzIzNjY5Mjg5ZTRiZmQwODljYiAocGVybC9TTk1QL1NOTVAueHM6IEZpeCBhIGNvbXBpbGVyIHdhcm5pbmcpCisgICAgCisgICAgYW5kIHBhcnQgb2YKKyAgICAKKyAgICA2ZTc0ZDY0Zjg1YTU5ZDUwZTQ2MWRiNGMzNGFjNzZmOWRlNDY4YmZiIChBdm9pZCB1c2luZyBncmVwIG9wdGlvbnMgLXEgYW5kIC13IGJlY2F1c2UgZ3JlcCBpbiBTb2xhcmlzKQorICAgIAorICAgIFRoaXMgcmV2ZXJ0cyB0aG9zZSByZXZlcnRzLgogCi1jb21taXQgNWIwMjkxZjkxZWQ5NDgzNWY4YWU3ZDk0MzZiMTVmNDBhZmIxOTQ3MworY29tbWl0IGFhZWRkNTljYzJkYTcwMTUyN2RjMmQyNjFkNGU5Zjg1ZjE2ZTc1MDQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBNYXIgMTEgMjA6NTc6MzggMjAxMiArMDEwMAorCisgICAgQWxsb3cgbWFrZSB0ZXN0IHdoZXJlIHRoZSBzb3VyY2UgcGF0aCBjb250YWlucyB0aGUgc3RyaW5nIE5ldC1TTk1QIHRvIHN1Y2NlZWQuCisKK2NvbW1pdCA0Yjk0ZDc5NjkxOGE0ZWVhZTY4YWIyMWFhNTNkNDQ0YThiNWMyOTIxCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBGcmkgQXVnIDUgMTM6MTc6MTkgMjAxMSArMDIwMAorRGF0ZTogICBGcmkgTWFyIDkgMDg6MDQ6NTkgMjAxMiArMDEwMAogCi0gICAgLmdpdGlnbm9yZTogQWRkIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLmRlZiBhbmQgcGVybC9TTk1QL3QKKyAgICBVbmJyZWFrIGNvbXBpbGF0aW9uIG9uIEZyZWVCU0QgNAogCi1jb21taXQgMmY4ZDRmNTc5NmNiYzFjN2U5NjdhY2RhYTgwMTliMjRmMTUyMGEzNgorY29tbWl0IDEwZmU2YjgzMzI0YWQzN2QxOGI5MzdjYzhjNmRlOTRkZTUzNGQwMzUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWFyIDggMTM6MDQ6MDcgMjAxMiArMDAwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNi4yLnByZTEKKworY29tbWl0IGUxMTIyZWRjMWE1ZmU3OTc2YjA2NTA0NDEzNGQzOWU3ZGI1OTg1ZWEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWFyIDggMTI6NDM6MTkgMjAxMiArMDAwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNi4yLnByZTEKKworY29tbWl0IGE2MTNkM2E4MzQ5MTIyMDZkMWJhNTk3MWU0NDFhM2VhNmIzNmFmMjMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWFyIDggMTI6MzM6MDMgMjAxMiArMDAwMAorCisgICAgbWFrZSBkZXBlbmQgZm9yIDUuNi4yLnByZTEKKworY29tbWl0IDBlZjM0ZTY1MTlkZmNiODJjOTdkZjg0Mjc1NDdjMDhkY2Y4MWU2OWEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWFyIDggMTA6MTE6MzAgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEZpeGVkIHNubXBkICctZCcgb3B0aW9uLgorICAgIAorICAgIE5vdyBpdCBkdW1wcyBwYWNrZXRzIGFnYWluLgorCitjb21taXQgOGU2OTc0MmYxNDNlNGZjMTExOTZlNWIyZWQ2NmM4ZjdmNTNmZDAyZgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBNYXIgNiAwOToyNDoyMSAyMDEyICswMDAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNi4yLnByZTEKKworY29tbWl0IGM0ZTAwYjhjM2UxMDEwY2RjYWI1ZTZjMDJkNjBkNzVkZjljNmRjZjIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgTWFyIDYgMDk6MjQ6MDUgMjAxMiArMDAwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNi4yLnByZTEKKworY29tbWl0IDM5NDkwMTA0YTNhYjU4MjM1YWFjZTJmOWQ4NzFjMjY2ZGM0NDg1ZWUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWFyIDUgMDk6MDY6NTIgMjAxMiArMDAwMAorCisgICAgTWFyayB0aGUgY2hhbmdlcyBtYWtlIGFzIHBhcnQgb2YgdGhlIHJlbGVhc2UgcHJvY2VzcyBhcyBzcGVjaWZpYyB0bworICAgIHRoZSBwYXJ0aWN1bGFyIGJyYW5jaCBiZWluZyByZWxlYXNlZC4gIFZlcnNpb24gdGFncywgY2hhbmdlbG9nIGVudHJpZXMKKyAgICBhbmQgdGhlIGxpa2Ugc2hvdWxkbid0IHByb3BhZ2F0ZSB0byBsYXRlciBicmFuY2hlcy4KKworY29tbWl0IDRhMmU1YmNkNTZjZDJhZmIzNmViMTVkNzU0ZTJmZWU4ODhkZDUwYzAKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBNYXIgNSAyMDo1OTozOCAyMDEyICswMTAwCisKKyAgICBocmhfc3RvcmFnZSBpcyBhIHByb3BlciByZXBsYWNlbWVudCBmb3IgaHJfc3RvcmFnZQorCitjb21taXQgY2U4NTgzMjkzMmNjZDkxNmM0MjMxOTExNGM0MDg4NWE0NjZhOWQwZQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE1hciA1IDIwOjU2OjQwIDIwMTIgKzAxMDAKKworICAgIE1vcmUgZml4ZXMgZm9yIFNvbGFyaXMgc2gKKworY29tbWl0IDBkZDFlNTQ1NTdkMWJhNDk4YjU1ZDAxN2IwYTkzZThjY2Y5YmQ1MjIKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIEZyaSBBdWcgNSAxMjowMjo1MSAyMDExICswMjAwCitEYXRlOiAgIE1vbiBNYXIgNSAxNTowODoyNiAyMDEyICswMTAwCiAKLSAgICBDSEFOR0VTOiBXaW5kb3dzOiBBdm9pZCB0aGF0IHJ1bm5pbmcgdGhlIFBlcmwgcmVncmVzc2lvbiB0ZXN0cyBtYWtlcyBzbm1wZCBjcmFzaAorICAgIENIQU5HRVM6IHNubXBkOiBVRFAtTUlCOiBSZXBvcnQgdGhlIHByb3BlciBhZGRyZXNzIGluIHVkcExvY2FsQWRkcmVzcyBpbnN0ZWFkIG9mIDAuMC4wLjAuIE1ha2VzIHRlc3QgVDE2MHNubXBuZXRzdGF0IHBhc3MgYWdhaW4uIEZpeGVzIGEgYnVnIGludHJvZHVjZWQgaW4gY29tbWl0IGM3NmZiOTZmNjVlMzNiYTJmZDIxMmE5MjFlOGMzODYxNTVlZTVjN2EuCiAKLWNvbW1pdCAwYzc1MDdhMWUwMTAxZjRiMTM1YTNlZDhhOTYxNjM1Yjg3MDkzZjFhCitjb21taXQgNTE4OTE3ZTlmMzlmN2E5ZDNjM2JmM2E4NjVlOGFjMGUzMDI2ZDYwMAogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgRnJpIEF1ZyA1IDEwOjU3OjMzIDIwMTEgKzAyMDAKK0RhdGU6ICAgTW9uIE1hciA1IDE0OjA0OjU0IDIwMTIgKzAxMDAKIAotICAgIFVuYnJlYWsgdGhlIFY1LTQtcGF0Y2hlcyAtIHJldmVydCBjb21taXQgZDJjNDc2OGJkMmVmYjQ4NjY0NDM0YTgzMTQyNWMyZGRhODVkNzEzMyAoQ0hBTkdFUzogbGlibmV0c25tcDogUEFUQ0ggMzM2MjIzMzogZnJvbSB5YWJlcmF1bmV5YTogTXV0ZSB1bm5lY2Vzc2FyeSBjYW5ub3QgZmluZCBtb2R1bGUgbm9pc2UpLgorICAgIHNubXBsaWIvc25tcFVEUERvbWFpbi5jOiBGaXggc291cmNlIGNvZGUgaW5kZW50YXRpb24KIAotY29tbWl0IDliN2ZmNGFiZmM5NTI5YmI5ZTE4YTNiODc0MjAxNTIwYmMwZTcxNDEKK2NvbW1pdCAyNjUxOTA5Y2NjZWFiZmNmYWRhZjk0MmMwMjQ1MGUyOGZlODM3ZGM5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgTm92IDkgMTI6MDQ6MDQgMjAxMCArMDAwMAorCisgICAgUGFzc2VzIG5vdyBvbiBNaW5HVyB0b28uCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk2NTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBlNDFmMTE1ZTQwMzA0Yzk0MWJhMTdkNjdlMjQ3MTA3MjJkOTA3NDFiCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBGcmkgQXVnIDUgMTE6MDc6NTUgMjAxMSArMDIwMAorRGF0ZTogICBNb24gTWFyIDUgMTM6Mzk6MTcgMjAxMiArMDEwMAogCi0gICAgVW5icmVhayB0aGUgVjUtNC1wYXRjaGVzIGJyYW5jaCAtIHdhcyBicm9rZW4gYnkgY29tbWl0IGJmNzE3OGIwYjIyNTg3ZDQzZDFhODBjMjY5Y2QyMTZiZDU5MzAyMTQgKGFnZW50OiBjaGFuZ2UgdHlwZSBvZiBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzIHRvIGxvbmcpCisgICAgdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDogQXZvaWQgdXNpbmcgZ3JlcCBvcHRpb25zIC13IGFuZCAtcSBiZWNhdXNlIGdyZXAgaW4gU29sYXJpcycgZGVmYXVsdCBwYXRoIGRvZXNuJ3QgdW5kZXJzdGFuZCB0aGVzZS4KIAotY29tbWl0IDAzMDQ5ZTEwMzZjMmMwNmNiZDZlNWVkNWZlMDg0OTk5ZDU0NjhhNWYKK2NvbW1pdCA1MTE2ZDQ4Mzc4ZWNmMDNlNzIyZjMwMTBhZDQ3YmYyMmEzZmJjYjhjCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBGcmkgQXVnIDUgMTA6NTY6NDggMjAxMSArMDIwMAorRGF0ZTogICBNb24gTWFyIDUgMTA6NDc6MjAgMjAxMiArMDEwMAogCi0gICAgVW5icmVhayB0aGUgVjUtNC1wYXRjaGVzIGJyYW5jaCAtIHdhcyBicm9rZW4gYnkgY29tbWl0IDBlNjg0MmZlMDgwY2VjODUzYjA4Y2QyMzIzMDE1YWJhYmMzODFjZTEgKENIQU5HRVM6IHNubXB0cmFwZDogUEFUQ0ggMzM4MzQ0MTogZnJvbSBzYWNoaW5zdXJlbmRyYW46IEZpeCBjcmFzaCBvbiA1LjQuNCBkdWUgdG8gYWNjZXNzIG9mIGZyZWVkIG1lbW9yeSkuCisgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jOiBSZWR1Y2Ugc2NvcGUgb2YgcHJlZml4X3ZhbCBzdWNoIHRoYXQgdGhlIGNvbXBpbGVyIGRvZXNuJ3Qgd2FybiBhYm91dCBhbiB1bnNlZCB2YXJpYWJsZSBpZiBpdCBpc24ndCBuZWVkZWQuCiAKLWNvbW1pdCAzYWE5NDlmYmRmYzFhOTRhODM0MGFkOGJhZjhiMzE0NzU2YTBiYjlkCitjb21taXQgNmU3NGQ2NGY4NWE1OWQ1MGU0NjFkYjRjMzRhYzc2ZjlkZTQ2OGJmYgogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgRnJpIEF1ZyA1IDEwOjI2OjE1IDIwMTEgKzAyMDAKK0RhdGU6ICAgTW9uIE1hciA1IDA5OjIyOjMxIDIwMTIgKzAxMDAKIAotICAgIFdpbjMyIG1ha2VmaWxlIHdoaXRlc3BhY2UgY2xlYW51cAorICAgIHRlc3RpbmcvZXZhbF90b29scy5zaDogQXZvaWQgdXNpbmcgZ3JlcCBvcHRpb25zIC1xIGFuZCAtdyBiZWNhdXNlIGdyZXAgaW4gU29sYXJpcycgZGVmYXVsdCBwYXRoIGRvZXNuJ3QgdW5kZXJzdGFuZCB0aGVzZSBvcHRpb25zLgogCi1jb21taXQgOTQzOTMwZTFlMTI0Mzg1ZmQ5NDczOGI2ZGNkYTM3ZDI5ZGM3YWM3ZgotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDEwOjQxOjQxIDIwMTEgLTA3MDAKLQotICAgIENIQU5HRVM6IGFnZW50OiBQQVRDSCAzMzI0NzY5OiBmcm9tIGhhcmRha2VyOiBGaXggLVd1bnVzZWQgd2FybmluZwotICAgIAotICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotCi1jb21taXQgOTBjMGU3NWYzZTBkZTczZDZhYWFiM2UzZDcxNDZmMThhOGY5ZTE4NworY29tbWl0IDEwZjU2NmY0ZDRjYmIzZTIwNTAyM2MyMzY2OTI4OWU0YmZkMDg5Y2IKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIFRodSBBdWcgNCAxOToxMjoyNCAyMDExICswMjAwCitEYXRlOiAgIE1vbiBNYXIgNSAxMDo0NzozOSAyMDEyICswMTAwCiAKLSAgICBzbm1wdXNtOiBGaXggcmVjZW50bHkgaW50cm9kdWNlZCBjb21waWxlciB3YXJuaW5ncworICAgIHBlcmwvU05NUC9TTk1QLnhzOiBGaXggYSBjb21waWxlciB3YXJuaW5nCiAKLWNvbW1pdCAyZGQ5ZWQwODU4ZGFhOTgyYjQxNjBiNGQyYTdkNWEyYjgwOTQ0MTcxCi1BdXRob3I6IFN0dWFydCBIZW5kZXJzb24gPHQwancyZnUwa21nQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDEwOjA2OjU3IDIwMTEgLTA3MDAKK2NvbW1pdCA0NGFhMjY1ODkxY2Q1NjNmN2Y0MTE0ZWYyNWRjZjdhYWYzYjE0ZTlhCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1hciA1IDA5OjA2OjUyIDIwMTIgKzAwMDAKIAotICAgIENIQU5HRVM6IG9wZW5ic2Q6IFBBVENIIDMzNTc5MzI6IGZyb20gdDBqdzJmdTBrbWc6IENsZWFuaW5nIGluIG1lbW9yeV9uZXRic2QuYwotICAgIAotICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorICAgIE1hcmsgdGhlIGNoYW5nZXMgbWFrZSBhcyBwYXJ0IG9mIHRoZSByZWxlYXNlIHByb2Nlc3MgYXMgc3BlY2lmaWMgdG8KKyAgICB0aGUgcGFydGljdWxhciBicmFuY2ggYmVpbmcgcmVsZWFzZWQuICBWZXJzaW9uIHRhZ3MsIGNoYW5nZWxvZyBlbnRyaWVzCisgICAgYW5kIHRoZSBsaWtlIHNob3VsZG4ndCBwcm9wYWdhdGUgdG8gbGF0ZXIgYnJhbmNoZXMuCiAKLWNvbW1pdCBmOGY2ZjcwNzE2NDRiN2U3NzFkZjhlNjJhOTMyMjdjZjk2MGEwNGU3Ci1BdXRob3I6IFZsYWRpbWlyIEtvbmRyYXRpZXYgPHd1bGYyMDAxQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA5OjU2OjI5IDIwMTEgLTA3MDAKK2NvbW1pdCBkYWU0ZTE2YmU4NjExNzg2MWY2M2QxYTJmOTgxYWQzNjE0MThmNWM2CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1hciA1IDA5OjA2OjUyIDIwMTIgKzAwMDAKIAotICAgIENIQU5HRVM6IGFnZW50OiBQQVRDSCAzMzg2MTQ3OiBmcm9tIHd1bGYyMDAxOiBmaXggVUNELVNOTVAtTUlCOjpkc2tVc2VkCi0gICAgCi0gICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisgICAgTWFyayB0aGUgY2hhbmdlcyBtYWtlIGFzIHBhcnQgb2YgdGhlIHJlbGVhc2UgcHJvY2VzcyBhcyBzcGVjaWZpYyB0bworICAgIHRoZSBwYXJ0aWN1bGFyIGJyYW5jaCBiZWluZyByZWxlYXNlZC4gIFZlcnNpb24gdGFncywgY2hhbmdlbG9nIGVudHJpZXMKKyAgICBhbmQgdGhlIGxpa2Ugc2hvdWxkbid0IHByb3BhZ2F0ZSB0byBsYXRlciBicmFuY2hlcy4KIAotY29tbWl0IDIxMDFiYjJkN2FkNmRiMDM4Yzc1NWFhOTE5M2M4YWNlMGRiZDRmNTgKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwOToyODowNiAyMDExIC0wNzAwCitjb21taXQgMjhmNjIyNmYyZTIyOGI4Y2EyNDg0ODk3MzVmODY1MDJiMmNjZTBhMQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXIgNSAwOTowNjo1MiAyMDEyICswMDAwCiAKLSAgICBhZGRlZCB0aGUgbWlzc2luZyBmcmVlYnNkOS5oIGZpbGUgZnJvbSB0aGUgZnJlZWJzZDkgcGF0Y2gKKyAgICBNYXJrIHRoZSBjaGFuZ2VzIG1ha2UgYXMgcGFydCBvZiB0aGUgcmVsZWFzZSBwcm9jZXNzIGFzIHNwZWNpZmljIHRvCisgICAgdGhlIHBhcnRpY3VsYXIgYnJhbmNoIGJlaW5nIHJlbGVhc2VkLiAgVmVyc2lvbiB0YWdzLCBjaGFuZ2Vsb2cgZW50cmllcworICAgIGFuZCB0aGUgbGlrZSBzaG91bGRuJ3QgcHJvcGFnYXRlIHRvIGxhdGVyIGJyYW5jaGVzLgogCi1jb21taXQgYjZhNDgxZmEzMDYyODkzZTU4OWJmNjE2M2M5ZDA2ZDBmMjA1MzI0MAotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA5OjI3OjA1IDIwMTEgLTA3MDAKK2NvbW1pdCA0MDAyMmE2OTc5NTgyNTljY2ZiYjNmZWQ0NGViM2M0NzJmNWU4MzdlCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gTWFyIDQgMTA6Mzc6NDEgMjAxMiArMDEwMAogCi0gICAgaWdub3JlICoub3JpZyBhbmQgKi5yZWoKKyAgICBTb2xhcmlzIHNoIGRvZXMgbm90IHVuZGVyc3RhbmQgInRlc3QgLWUiCiAKLWNvbW1pdCBjYzUxMzRlNTNkMWMyMzNkYzQxZTMxZmJiNzhmYWFiMDk4ZjA5MzYxCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDk6MjY6NDQgMjAxMSAtMDcwMAorY29tbWl0IDc3M2FmMGM0MmUwNzdiZWJkYWVjZjFjMGNhZjM5MzI4NWE3Njg4ZjEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBNYXIgMyAxNzoxOTozMCAyMDEyICswMTAwCiAKLSAgICBoZWxwIG91dHB1dCBkZXNjcmliZXMgcmViYXNlIHZzIG1lcmdlIGJldHRlcgorICAgIENsZWFuIHVwIG5zcm9sbHVwIGNvbXBsaWNhdGlvbnMKIAotY29tbWl0IGIzNzJlNWFiMzBhYTE1NTc0MWU5NGRmMjJlMDc1MjUzNWM1OWU0YmIKLUF1dGhvcjogU3R1YXJ0IEhlbmRlcnNvbiA8dDBqdzJmdTBrbWdAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDk6MjI6MjggMjAxMSAtMDcwMAorY29tbWl0IGVlNzEwNDljM2UyMWMxZDBlMzQyNDI5NzEzNjY1MmJiZTBlMzlkODUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBNYXIgMyAxNjo0OTo0MSAyMDEyICswMTAwCiAKLSAgICBDSEFOR0VTOiBvcGVuYnNkOiBQQVRDSCAzMzU3OTI3OiBmcm9tIHQwancyZnUwa21nOiBSZWNvZ25pc2Ugb3BlbmJzZDUKLSAgICAKLSAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKyAgICBtaWJncm91cC9pY21wLmM6IGFkanVzdCBpZmRlZnMgdG8gbWFrZSBpdCBjb21waWxlIG9uIEJTRCdzCiAKLWNvbW1pdCAwNTQ4YTRlOTdiMmExZjAzOTllNThjNGVmYzAwNGM5NDk3Mzk4Y2Q2Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDk6MjI6MTUgMjAxMSAtMDcwMAorY29tbWl0IGNlOTYwMDM2MWU2NjVkZGUxN2FmOWQ4YWIxNmQ3Y2U4NWRjMDU2NDMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXIgMiAyMTozOTo1NSAyMDEyICswMTAwCiAKLSAgICBmaXggd2hlcmUgYXJndW1lbnRzIGFyZSBzZXQKKyAgICBkb3QzU3RhdHNUYWJsZSBoYXMgYnVncyA6LSgKIAotY29tbWl0IDNiMzc4MGJjYTlhZGVlYmY0ZWY3NTA4YWVlNmI4ZWJjYjk0ZjY1NmMKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwOToyMDo0MCAyMDExIC0wNzAwCitjb21taXQgZGZmYWNmNmZhMDc1NWUxNzAwY2JhYzI1Yjg0NDE4NWFiZDgwN2EwYQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1hciAyIDIxOjM4OjEwIDIwMTIgKzAxMDAKIAotICAgIHNwbGl0IG5zc2ZwYXRjaGFwcGx5IGludG8gdHdvIHBhcnRzOiBhcHBseSBhbmQgY29tbWl0aW5nCisgICAgcGFzc3BlcnNpc3QgdGVzdCBuZWVkcyAvdXNyL2Jpbi9wZXJsCiAKLWNvbW1pdCAwNDIyNTE0YTYyYmNhYWU2MDA1MDE3ZDdlOWVkNDg1MDc1ZmU3MDFjCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDk6MTU6MjUgMjAxMSAtMDcwMAorY29tbWl0IDg3MjY5OTVjN2E4YWVmNjc0YzRmMTY0YjE4NzFjMzdiYmRjZGFkNTAKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXIgMiAyMTozNjo1OCAyMDEyICswMTAwCiAKLSAgICBwYXRjaCB1c2luZyAtTgorICAgIGdyZXAgLXcgZmFpbHMgd2l0aCBPcGVuQlNEIGFuZCBTb2xhcmlzIDEwLTY0CiAKLWNvbW1pdCBkYzc1NWE2YWViOWI5Yzg4OTcyN2Q5ZmM4NDJmYzg5ZjcyOWU2ZWMwCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDg6MzM6MjUgMjAxMSAtMDcwMAorY29tbWl0IDFlYjQ3NDViMjNjYzNhODM5ODY0ZTdmNmVhMjgzNTViMDU2NmViNjcKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXIgMiAyMTozNTo0OSAyMDEyICswMTAwCiAKLSAgICBhZGRlZCBzcGFjaW5nIHRvIG1hdGNoIHRoZSBsYXRlciBicmFuY2hlcworICAgIFNvbGFyaXMgbmVlZHMgL3Vzci94cGc0L2Jpbi9ncmVwIHRvIHVuZGVyc3RhbmQgLXEKIAotY29tbWl0IDdiNzI2ZTEwM2MxOTYwZjRjODYwMzg1OWM5YThkOGFhOGM0MDQ1MjAKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwODozMjoyMyAyMDExIC0wNzAwCitjb21taXQgOTk1NGI0Yjc0MWZkOGM2M2Q2MTI4YmQwNTI3Mjk4YzhlNGU5ODlmYworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1hciAyIDIxOjM0OjQ1IDIwMTIgKzAxMDAKIAotICAgIHJlbW92ZWQgYWNjaWRlbnRpYWxseSBkdXBsaWNhdGVkIGNvZGUKKyAgICBNYWtlIHN1cmUgd2UgaGF2ZSB0aGUgcHJvcGVyIHNyY2RpciBmb3Igb3V0LW9mLXNvdXJjZSBidWlsZHMKIAotY29tbWl0IGVjYmFiMGE5OGEwMmZkZTZiYmNhN2RkMzcwYmNkOWMzY2E3NmFmZmUKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwODoyNzo0MSAyMDExIC0wNzAwCitjb21taXQgNzgzNjkwMDJiZTI3MTFmMGFhODc2YjY0YTRlMTBiMDkwY2MyNDFjZAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1hciAyIDIxOjMzOjMxIDIwMTIgKzAxMDAKIAotICAgIG5zc3luYyBzdXBwb3J0cyAtLW1lcmdlIG5vdworICAgIE5vdCBhbGwgbWFrZSB2ZXJzaW9ucyBkZWZpbmUgJChSTSkKIAotY29tbWl0IDAwNzhlMjI0NzBlYjBmZGQ2ZGMwMmUyMDgxMzM1MWFjZGMxNTg5NjQKLUF1dGhvcjogR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA4OjIzOjIyIDIwMTEgLTA3MDAKK2NvbW1pdCA5NDI0NWIyOWEzY2RhODk0NzVjNmVhYjVkOTQ5M2M2NjU3ZmYzOGUzCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWFyIDIgMjE6MjQ6MjQgMjAxMiArMDEwMAogCi0gICAgQ0hBTkdFUzogbGlibmV0c25tcDogUEFUQ0ggMzM2MjIzMzogZnJvbSB5YWJlcmF1bmV5YTogTXV0ZSB1bm5lY2Vzc2FyeSBjYW5ub3QgZmluZCBtb2R1bGUgbm9pc2UKLSAgICAKLSAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKyAgICBNYWtlIGF1dG9jb25mIDIuNjggaGFwcHkKIAotY29tbWl0IGViNzhkYjJiNmUyNzc0YTQ0OTdkODc2OGMxMzhiNGYxNGM1ZjVhN2YKLUF1dGhvcjogR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA4OjE5OjE2IDIwMTEgLTA3MDAKK2NvbW1pdCA0NGFjZDZjMjg1ZmI1NjE0YjRjOTYxMWIxYWJkZWNhOWRkMjhlNGJiCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWFyIDIgMjE6MTI6NDcgMjAxMiArMDEwMAogCi0gICAgQ0hBTkdFUzogZnJlZWJzZDogUEFUQ0ggMzM2MzMwODogZnJvbSB5YWJlcmF1bmV5YTogRml4IGNvbXBpbGF0aW9uIG9uIEZyZWVCU0QgOS54IHdpdGggcmVjZW50IGhlYWRlciBzaHVmZmxpbmcKLSAgICAKLSAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKyAgICBGaXggc3BlbGxpbmcgb2YgbWliIG1vZHVsZSBmc3lzX2dldGZzc3RhdHMKIAotY29tbWl0IDgyMDRhNjRmMGZmMmY2OTQ1YzMyNGVlOWZjMWJlM2FmNmUxYjg1MGYKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwODoxNToxNyAyMDExIC0wNzAwCitjb21taXQgMWZhMWZlZTM2OTNmNjdiODIwMjIzODA2YjNkNzNhZmQ0YzUwZWMxOAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgRnJpIE1hciAyIDAxOjM3OjIwIDIwMTIgKzAxMDAKIAotICAgIGFsbG93IG5zcm9sbHVwIHRvIHRha2UgYSAtLW1lcmdlIGZsYWcgZm9yIG1lcmdpbmcgaW5zdGVhZCBvZiByZWJhc2luZworICAgIFNpbGVuY2UgYSBjbGFuZyB3YXJuaW5nLgogCi1jb21taXQgOTlmNjM2MDI5NmQ0NDU5YWY5OWFmZmZmYWM4OTcwOGE1ODFjM2NlMAotQXV0aG9yOiBTYWNoaW4gU3VyZW5kcmFuIDxzYWNoaW5zdXJlbmRyYW5AdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDg6MTI6MDkgMjAxMSAtMDcwMAorY29tbWl0IDkzMjYzYjk4YTVkYjM0NGNmMmM0ZDQ4OWM0Mzk3MWU3YjI5Y2RiMDMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWFyIDEgMTM6Mzc6MjAgMjAxMiArMDAwMAogCi0gICAgQ0hBTkdFUzogc25tcHRyYXBkOiBQQVRDSCAzMzgzNDQxOiBmcm9tIHNhY2hpbnN1cmVuZHJhbjogRml4IGNyYXNoIG9uIDUuNC40IGR1ZSB0byBhY2Nlc3Mgb2YgZnJlZWQgbWVtb3J5Ci0gICAgCi0gICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNS4yLnByZTEKIAotY29tbWl0IGY3YTg4YmM2ZjczOGY3N2NiOWM0MzA4MWUxZjYyZjI3ZTNiNmVmOTgKLUF1dGhvcjogR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA4OjA5OjE4IDIwMTEgLTA3MDAKK2NvbW1pdCA1YTE3NTQyOGI5NzNkMmVhODU1M2UyOWZlY2Y5NGNmMTU2NmFhODU4CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1hciAxIDExOjQ4OjE4IDIwMTIgKzAwMDAKIAotICAgIENIQU5HRVM6IGZyZWVic2Q6IFBBVENIIDMzNjMzMjg6IGZyb20geWFiZXJhdW5leWE6IEFkZCBGcmVlQlNEIDkueCB0byBzdXBwb3J0ZWQgT1NlcyBsaXN0Ci0gICAgCi0gICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNS4yLnByZTEKIAotY29tbWl0IGU3ZGQxYzQzN2FmZTZlMjZhNTVhYTc3MmQ0NjgwMTI2NTU3NDFkMzEKLUF1dGhvcjogR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA4OjIzOjIyIDIwMTEgLTA3MDAKK2NvbW1pdCAzNjQyNzZhMWM1YWE2NmNhYTIzZWI1YjdmMTExZmRlYjVhZjcxZmE3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1hciAxIDExOjQ1OjEwIDIwMTIgKzAwMDAKIAotICAgIENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENIIDMzNjIyMzM6IGZyb20geWFiZXJhdW5leWE6IE11dGUgdW5uZWNlc3NhcnkgY2Fubm90IGZpbmQgbW9kdWxlIG5vaXNlCi0gICAgCi0gICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisgICAgbWFrZSBkZXBlbmQgZm9yIDUuNS4yLnByZTEKIAotY29tbWl0IGM1M2Q4YzM1MjVmNTkwZjIyMTNkMzViMGRhOTQxMjM4NjJmM2UzNjYKLUF1dGhvcjogR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA4OjE5OjE2IDIwMTEgLTA3MDAKK2NvbW1pdCA3MzU5ODM0MDE3MmVmZjc1NzI5YTZkNTcxOTJiODE3MWQ1YmJmMDBlCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1hciAxIDEwOjQyOjU2IDIwMTIgKzAwMDAKIAotICAgIENIQU5HRVM6IGZyZWVic2Q6IFBBVENIIDMzNjMzMDg6IGZyb20geWFiZXJhdW5leWE6IEZpeCBjb21waWxhdGlvbiBvbiBGcmVlQlNEIDkueCB3aXRoIHJlY2VudCBoZWFkZXIgc2h1ZmZsaW5nCi0gICAgCi0gICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjUuMi5wcmUxCiAKLWNvbW1pdCAzYjhjOGI4NTA4NWFhZTJkMWExYzdjYTM1ZTdkMDY2ZDNkNzRmYTlmCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDg6MTU6MTcgMjAxMSAtMDcwMAorY29tbWl0IGYzMjE0NDAyNjcyY2ExOTlmZDUzMWU2NjEyMmJmOTZjNGQ5YTRlYjcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWFyIDEgMTA6NDI6MzkgMjAxMiArMDAwMAogCi0gICAgYWxsb3cgbnNyb2xsdXAgdG8gdGFrZSBhIC0tbWVyZ2UgZmxhZyBmb3IgbWVyZ2luZyBpbnN0ZWFkIG9mIHJlYmFzaW5nCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNS4yLnByZTEKIAotY29tbWl0IDcxMDBhZWRmZmQ5OGNkYTRiMDUxNjRiY2NmMTc4NzYwMjAxOTZlNzkKLUF1dGhvcjogU2FjaGluIFN1cmVuZHJhbiA8c2FjaGluc3VyZW5kcmFuQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA4OjEyOjA5IDIwMTEgLTA3MDAKK2NvbW1pdCAyZTc0YWNiNmYxOWU0NzI5Y2VkZTBhYjQzZTkzMTk2MWNiMjNhYWVhCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUaHUgTWFyIDEgMDk6MTg6MzkgMjAxMiArMDEwMAogCi0gICAgQ0hBTkdFUzogc25tcHRyYXBkOiBQQVRDSCAzMzgzNDQxOiBmcm9tIHNhY2hpbnN1cmVuZHJhbjogRml4IGNyYXNoIG9uIDUuNC40IGR1ZSB0byBhY2Nlc3Mgb2YgZnJlZWQgbWVtb3J5Ci0gICAgCi0gICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisgICAgQ0hBTkdFUzogQnVnIDMxNTI4NDE6IERvIG5vdCBpbnN0YWxsIHRoZSB1dGlsX2Z1bmNzIHN1YmhlYWRlcnMgdGhhdCB3ZXJlIHJlbW92ZWQgaW4gNS43CiAKLWNvbW1pdCBkMmM0NzY4YmQyZWZiNDg2NjQ0MzRhODMxNDI1YzJkZGE4NWQ3MTMzCi1BdXRob3I6IEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwODoyMzoyMiAyMDExIC0wNzAwCitjb21taXQgYjcxMDk2NDZiOTVhNzA3MTNkMWFkOTkxZDQxYmNjZDU3YzBiYjNlYgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVGh1IE1hciAxIDA4OjQ4OjQ4IDIwMTIgKzAxMDAKIAotICAgIENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENIIDMzNjIyMzM6IGZyb20geWFiZXJhdW5leWE6IE11dGUgdW5uZWNlc3NhcnkgY2Fubm90IGZpbmQgbW9kdWxlIG5vaXNlCi0gICAgCi0gICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisgICAgQ0hBTkdFUzogQnVnIDMxNTI4NDE6IEluc3RhbGwgdXRpbF9mdW5jcyBzdWJoZWFkZXJzIGludHJvZHVjZWQgaW4gNS42CiAKLWNvbW1pdCBkMTliOGZjYTIzODQwNzdmNzMyYTMwZjI5NDZhYjBjMDNiYzBlNzM4Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDg6MTU6MTcgMjAxMSAtMDcwMAorY29tbWl0IDQzMmNiYjdhNTUwMWFiOTBkNjZkMGE4M2U3MzFlNzM0M2JjMDRiMzcKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBGZWIgMjUgMTA6MTM6MTUgMjAxMiArMDEwMAogCi0gICAgYWxsb3cgbnNyb2xsdXAgdG8gdGFrZSBhIC0tbWVyZ2UgZmxhZyBmb3IgbWVyZ2luZyBpbnN0ZWFkIG9mIHJlYmFzaW5nCisgICAgQ29ycmVjdCB0eXBvcwogCi1jb21taXQgMGU2ODQyZmUwODBjZWM4NTNiMDhjZDIzMjMwMTVhYmFiYzM4MWNlMQotQXV0aG9yOiBTYWNoaW4gU3VyZW5kcmFuIDxzYWNoaW5zdXJlbmRyYW5AdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDg6MTI6MDkgMjAxMSAtMDcwMAorY29tbWl0IDZhNmM5YmJjNzU4NGYxOTZhMTE4NWNjMTkzNTIwNGYxMjA2ODExZWQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFdlZCBGZWIgMjkgMDg6NTU6MzUgMjAxMiArMDEwMAogCi0gICAgQ0hBTkdFUzogc25tcHRyYXBkOiBQQVRDSCAzMzgzNDQxOiBmcm9tIHNhY2hpbnN1cmVuZHJhbjogRml4IGNyYXNoIG9uIDUuNC40IGR1ZSB0byBhY2Nlc3Mgb2YgZnJlZWQgbWVtb3J5Ci0gICAgCi0gICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisgICAgQ0hBTkdFUzogQnVnIDMxNTI4NDE6IEluc3RhbGwgdXRpbF9mdW5jcyBzdWJoZWFkZXJzCiAKLWNvbW1pdCBlZmEzMTM1YTI1MGFlMWZmZjMwODQ5NmQyMmU3NzgyYWJjMGMzOTFlCi1BdXRob3I6IEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwODowNDoyNyAyMDExIC0wNzAwCitjb21taXQgZDUxNWUyYTZlNGMyYTFjNGQ4NDczNGNjN2IyZDBiMmZjNWE4OTRhZAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBGZWIgMjggMTU6NTY6MjEgMjAxMiArMDAwMAogCi0gICAgQ0hBTkdFUzogYnVpbGRpbmc6IFBBVENIIDMzODM5NTE6IGZyb20geWFiZXJhdW5leWE6IEZpeCAtV3VudXNlZCBjb21waWxlIHdhcm5pbmdzIHdpdGggRnJlZUJTRC9OZXRCU0QKLSAgICAKLSAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKyAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMzQ4NzkxOTogRml4IGNvbXBpbGF0aW9uIHdoZW4gY2FjaGluZyBpcyBkaXNhYmxlZAogCi1jb21taXQgMjU5ODhiZTgzNjkyNGEzMzAyMDExM2M5NGFhMDI2MTRkMWRiZjFiZQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA3OjM2OjM2IDIwMTEgLTA3MDAKK2NvbW1pdCBhZjgzNjhlZDg4OThhNzhkMDg2OGI0N2FmNDZiYzlkYjA3ZDFjNzY0CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEZlYiAyOCAxNTo1MDo1NiAyMDEyICswMDAwCiAKLSAgICBhdXRvY29uZgorICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIRVM6IDM0MTQ3NzM6IEVuY29kZSBpbnRlZ2VyIHZhbHVlIHVzaW5nIEFTTl9JTlRFR0VSCiAKLWNvbW1pdCA0ZGI2YjY0NTA5ZGMzNTA4MzlkNTk2ZTMyNTA0YjJkODBjYTBjN2IwCi1BdXRob3I6IEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwNzozNjoxMCAyMDExIC0wNzAwCitjb21taXQgMTllMjcxNTgwN2ZlMDZmZDBiYWVkZjg4MTY1MDExYWVlOTMzZTc1NQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBGZWIgMjggMTQ6MDU6MzQgMjAxMiArMDAwMAogCi0gICAgQ0hBTkdFUzogYnVpbGRpbmc6IFBBVENIIDMzODM5NDk6IGZyb20geWFiZXJhdW5leWE6IEZpeCBhdXRvY29uZiB0ZXN0cyBmb3Igc3lzL21idWYuaAotICAgIAotICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorICAgIENIQU5HRVM6IG1hbjogQlVHUzogMzQ5MDcwODogQ2xhcmlmeSB1c2Ugb2YgY29tbW9uIGNvbW1hbmQtbGluZSBvcHRpb25zCiAKLWNvbW1pdCBmM2JjNTUxODRkOTZjNThkY2ZkNTg5NTM3OTZjMTBmNzM1NGRkNGE3Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDY6NTQ6MjIgMjAxMSAtMDcwMAorY29tbWl0IDY1Zjc5NjJmOTMyYzliNzVjNWJiYmIwNDdkMWUyNmFlNjA5NzhlNTMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRmViIDI4IDEyOjIzOjM0IDIwMTIgKzAwMDAKIAotICAgIHByb21wdCBmb3IgcGF0Y2ggYW5kIGFuIGFyZWEsIGFuZCB1c2UgdGhlIHByb3BlciBDSEFOR0VTIGxpbmUgZm9ybWF0CisgICAgQ0hBTkdFUzogc25tcGQ6IEJVR1M6IDM0ODk2MzE6IEZpeCBpbmNvcnJlY3QgaGFuZGxpbmcgb2YgVUNEIG1vbml0b3JpbmcgZmxhZwogCi1jb21taXQgYWQ2OTZiYTEyNDlkM2M0YmMxMmMwZWIzODQ4MWZmMGZjNDMzZjhhMQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA2OjQyOjQyIDIwMTEgLTA3MDAKK2NvbW1pdCBhYzE2NjA1MWI2YTA5MmRkNGE1OTQzMjZlYzg1ZTJmNjk5YjYyNTQ3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEZlYiAyOCAxMTo1Nzo0MSAyMDEyICswMDAwCiAKLSAgICBVc2UgZmV0Y2ggLS1hbGwgYW5kIHJlYmFzZSBhcyBzdWdnZXN0ZWQgYnkgQmFydCBmb3Igc3BlZWQgaW1wcm92ZW1lbnRzCisgICAgQ0hBTkdFUzogdGVzdGluZzogQlVHUzogMzQ3NDU5MDogRG9uJ3QgbWF0Y2ggdW5kZXJzY29yZXMgd2l0aGluIHRoZSBzb3VyY2Ugcm9vdCBmaWxlbmFtZQogCi1jb21taXQgNDQ5NjliNGU1N2MyNzE5NGU1YmQzNTdiYzQ1Mjc1ZmViODY5NWQyMgorY29tbWl0IDg3OWJmNzA3OWQzNGZhNDZmNmZjZjU0YTAxYzg1MDBiZWFlY2U1OWEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRmViIDI4IDEwOjQ0OjQxIDIwMTIgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBCVUdTOiAzNDYwMzY0OiBGaXggdXNlIG9mIGJsb2NrIGZhY3RvciB3aGVuIGRldGVjdGluZyBlcnJvciBjb25kaXRpb25zCisKK2NvbW1pdCAwMzRmMWM1NzJmNjgzZWE0Mjg1ODMwNzQ0NzFlNWQ1ZDEzYjUxODM3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEZlYiAyOCAxMDoyMjoyMCAyMDEyICswMDAwCisKKyAgICBTa2lwIFNFVC1iYXNlZCB0ZXN0cyB3aGVuIGNvbmZpZ3VyZWQgdXNpbmcgLS1lbmFibGUtcmVhZC1vbmx5CisKK2NvbW1pdCAzNjQyM2UyMTBiZmI2NWVmMTIxYzZhNjZhZWM0MzhjN2MyMzdkM2RmCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEZlYiAyOCAxMDowMzoyNSAyMDEyICswMDAwCisKKyAgICBDSEFOR0VTOiBCVUc6IDM0NTQxNjg6IGNvbmZpZ3VyZTogRml4IGJ1aWxkaW5nIHdpdGggLS1lbmFibGUtcmVhZC1vbmx5CisKK2NvbW1pdCBlZWQwYmNiYzQzZmVhMTgyNTlmMGY2M2IyMDgxYjZkMTA1MzVhMDUyCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEZlYiAyOCAwOToyNzoxMSAyMDEyICswMDAwCisKKyAgICBTa2lwIFNFVC1iYXNlZCBiYWJ5LXN0ZXBzIHdoZW4gY29tcGlsZWQgd2l0aCAtLWRpc2FibGUtc2V0LXN1cHBvcnQuCisgICAgSW5zcGlyZWQgYnkgYnVnICMzNDU0MTY4CisKK2NvbW1pdCBlYzZhMjMwMzBlNWEyMDcyYzE5YzE4YzFkOWMxMjQzODdkYTU2YjdiCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBGcmkgSnVsIDggMjA6NTI6MjUgMjAxMSArMDIwMAorRGF0ZTogICBNb24gRmViIDI3IDE4OjQyOjU4IDIwMTIgKzAwMDAKIAotICAgIENIQU5HRVM6IFdpbjMyOiBGaXggdGhlIGNvbXBpbGVyIHdhcm5pbmdzIHRyaWdnZXJlZCBieSB0aGUgd2luRXh0RExMIHNvdXJjZSBjb2RlIGFuZCB0aGF0IGFyZSB0cmlnZ2VyZWQgYnkgdGhlIGNoYW5nZSBvZiB0aGUgIm9pZCIgdHlwZWRlZiBmcm9tIHVpbnQzMl90IHRvIHVfbG9uZy4KKyAgICBBZGQgLWxydCB0byBORVRTTk1QTElCUyBzdWNoIHRoYXQgY2xvY2tfZ2V0dGltZSgpIGNhbiBiZSBmb3VuZAogCi1jb21taXQgZWE1OGI2N2I0ZjMxOGFjZjFmOWU4NTI1ODJiY2NhZDQ3YjRkOGU2NworY29tbWl0IGYxMzMyMDUwMDI5NGJiMjQwZjYzYzZkZDdkMmU5YTIyMDhlYjc0MGQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gRmViIDI3IDE2OjUyOjUxIDIwMTIgKzAwMDAKKworICAgIFNraXAgU0VULWJhc2VkIHRlc3RzIHdoZW4gY29tcGlsZWQgdXNpbmcgLS1kaXNhYmxlLXNldC1zdXBwb3J0CisKK2NvbW1pdCBjNDI3NmI2MjMyYzI5MTQ1YzAzOTg4NGU2YjVhNmI2ZGE0YjkzODM3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEZlYiAyNyAxNTo1NDo0NSAyMDEyICswMDAwCisKKyAgICBPbWl0IFNFVC1yZWxhdGVkIGNvZGUgd2hlbiBjb21waWxpbmcgd2l0aCAtLWRpc2FibGUtc2V0LXN1cHBvcnQgKGluc3BpcmVkIGJ5IHBhdGNoICMzNDI0OTMwKQorCitjb21taXQgMDFjOTMwZWRjYzI1NzAwZDZiNWZiMDM3NmY1NWEyNjQyNWUxM2ZiMAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBGZWIgMjcgMTU6MTc6MjIgMjAxMiArMDAwMAorCisgICAgT21pdCBTRVQtcmVsYXRlZCBjb2RlIHdoZW4gY29tcGlsaW5nIHdpdGggLS1kaXNhYmxlLXNldC1zdXBwb3J0CisgICAgKGluc3BpcmVkIGJ5IHBhdGNoICMzNDI0OTMwKQorCitjb21taXQgOTQ4NGQ4MzIwM2M0ZTJkODIwNDE2YmU2NjVmYTgzM2FhNzA0NDRkMgogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgRnJpIEp1bCA4IDIwOjUyOjI1IDIwMTEgKzAyMDAKK0RhdGU6ICAgRnJpIEZlYiAyNCAxNDowMDozMiAyMDEyICswMTAwCiAKLSAgICBDSEFOR0VTOiBXaW4zMjogd2luRXh0RExMOiBJbnZva2UgU25tcFV0aWxPaWRGcmVlKCkgYmVmb3JlIFNubXBVdGlsT2lkQ3B5KCkuIEl0J3Mgbm90IGNsZWFyIHlldCB3aHkgdGhlIG9yaWdpbmFsIGNvZGUgZGlkIG5vdCBtYWtlIHNubXB3YWxrIHRyaWdnZXIgYSBtZW1vcnkgbGVhay4KKyAgICBSZXdvcmsgY29tbWl0IGI0YTE5NTA1YTA1ODE2ZTk0ZTAxZGU5N2JmOTlhYzM3ZmNkYzZkMjMuCiAKLWNvbW1pdCA4YTAxZWM2NDIzZDQwMGM0YTEzY2NhYzY4YTM3OTFkMDIxOGEwODg1Citjb21taXQgMmI3ZjEzNDk1MjI4NjM1ZDgxNmU1OGIyMTc0ZGMxMjRkZDBjZjM5ZgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEZlYiAyNCAwNzo0MzoyMiAyMDEyIC0wODAwCisKKyAgICBzZXQgTUVSR0VfQVVUT0VESVQgYmVmb3JlIG1lcmdpbmcgdG8gYXZvaWQgdGhlIGZ1dHVyZSBnaXQgMS43LjEwIGZvcmNlZCBtc2cKKworY29tbWl0IGUxYjkxMGIwYmU5MzQzNTg2YWU5ZWRiYTZmNDYwNDBhZjMxNWZjZGQKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIFRodSBBdWcgNCAxMToxOToxNyAyMDExICswMjAwCitEYXRlOiAgIFRodSBGZWIgMjMgMTA6Mjc6NTQgMjAxMiArMDEwMAogCi0gICAgQ0hBTkdFUzogV2luZG93czogTWFrZSBsaW5raW5nIHdpdGggcmVjZW50IE9wZW5TU0wgYmluYXJpZXMgc3VjY2VlZC4KKyAgICBDSEFOR0VTOiBzbm1wZDogaW5pdF9hZ2VudCgpICsgaW5pdF9rbWVtKCk6IFJldHVybiBhbiBlcnJvciB2YWx1ZSBpbnN0ZWFkIG9mIGludm9raW5nIGV4aXQoKSBpZiBhY2Nlc3MgdG8ga2VybmVsIHZpcnR1YWwgbWVtb3J5IGlzIGRlbmllZAogCi1jb21taXQgZTIxZWVmMmZjNWNmZGMxMjAwNDc5MTE4YTJjNWIyOWE3MGIwZGY2MAorY29tbWl0IDQ2M2VlZDIxMjBmOWQxOTFiYzIyNjczNDk2YTQ5ZTgxNzQ2NjRlNGIKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIFRodSBBdWcgNCAwODo1Mjo0MyAyMDExICswMjAwCitEYXRlOiAgIFRodSBGZWIgMjMgMTA6MDM6MzEgMjAxMiArMDEwMAogCi0gICAgQ0hBTkdFUzogYWdlbnQ6IEF2b2lkIHRoYXQgYSBNSUIgd2FsayBvbiB0aGUgaG9zdCByZXNvdXJjZXMgTUlCIHRyaWdnZXJzIGEgY3Jhc2ggb24gRmVkb3JhIDE1CisgICAgUmVtb3ZlIG9ic29sZXRlIHN5bWJvbCBORVRTTk1QX0VYSVRfT05fQkFEX0tMUkVBRAogCi1jb21taXQgYjA1NmVlNmViNTM5MDlhZDA0ZjE2ZWMyNmQyNjkwZDdhMDgzMTkyYQorY29tbWl0IGMzNmFiNzFhNGUwOTZmMTZjYzVhNTU1MzNmMDgwYzlhOTQwMDk5MTQKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIFRodSBBdWcgNCAwNzo1OTowNCAyMDExICswMjAwCitEYXRlOiAgIFRodSBGZWIgMjMgMDg6NTM6NTYgMjAxMiArMDEwMAogCi0gICAgRml4IGEgY29tcGlsZXIgd2FybmluZyBpbiBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmMKKyAgICBDSEFOR0VTOiBGcmVlQlNEOiBzbm1wZCArIGFwcHM6IFNlbmRpbmcgVURQIHBhY2tldHMgd29ya3MgYWdhaW4gZm9yIG5vbi1yb290IHVzZXJzCiAKLWNvbW1pdCAxNzFmOTU4MGZmZmE2MDQxYWZjODYyZWY5NDQwZDk0OWYwYWE3OWJmCitjb21taXQgZWRlYmRkYmE5MzBmOGIxNDcyZmEwYmQyMGZjNDEzZWY4Y2Y0NjRhMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEZlYiAyMSAxMTozMTo0NiAyMDEyICswMTAwCisKKyAgICB0ZXN0aW5nL1JVTlRFU1RTOiBGaXggYSBiYXNoaXNtCisKK2NvbW1pdCBiNGExOTUwNWEwNTgxNmU5NGUwMWRlOTdiZjk5YWMzN2ZjZGM2ZDIzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDIwIDE2OjU4OjQ3IDIwMTIgKzAxMDAKKworICAgIEZpeCBjb21waWxlciB3YXJuaW5ncyBhYm91dCAlbGQgdmVyc3VzIHRpbWVfdCBvbiBzeXN0ZW1zIHdoZXJlIHRpbWVfdCBpcyBhIHN5bm9ueW0gZm9yIGxvbmcgbG9uZyBpbnN0ZWFkIG9mIGxvbmcuCisKK2NvbW1pdCBkODk3OGVjYzgyMTFiZTdjMWU3OTA1ZjFlMjE1YmIwNmRlZDI2NmI2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgRmViIDIxIDEyOjMyOjI1IDIwMTIgKzAxMDAKKworICAgIEZpeCBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4uYyBmaWxlIGhlYWRlcgorCitjb21taXQgYWE3NjZkMTk2ZTUyODdmNmNhNzliNThhMzQ1YjAyNDI2MGFiYTM1NAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiAyMCAxNzowNzoxMyAyMDEyICswMTAwCisKKyAgICBJRi1NSUI6IGRvIG5vdCB0cmlnZ2VyIHVuZGVmaW5lZCBiZWhhdmlvciAoPj4gMzIgb2YgYSAzMi1iaXQgdmFyaWFibGUpIHdoZW4gdXBkYXRpbmcgYSBjb3VudGVyIGFuZCBpZmlfaXBhY2tldHMgaXMgYSAzMi1iaXQgdmFyaWFibGUKKworY29tbWl0IGMzZmI2ZGQ5ZTZiOTllOTU0MjQ5MzE4ODk4Nzg3MWZjNTAxN2NiM2MKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMjMgMDk6NDU6NDUgMjAxMiArMDEwMAorCisgICAgRml4IGEgY29tcGlsZXIgd2FybmluZyBvbiBzeXN0ZW1zIHdoZXJlIG1vZGVfdCBpcyB1bnNpZ25lZAorCitjb21taXQgZjhhM2VmMGQzZDRlNTMwMjc5OTAwMTAxMDQ5YjhkZTk4YTQ0YTZmYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDE0OjQ4OjUyIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWIgKyBzbm1wZCArIHNubXB3YWxrOiBBdm9pZCB0aGF0IHN5c3RlbSBjbG9jayBjaGFuZ2VzIChlLmcuIGJ5IG50cGQpIGFmZmVjdCBjb2RlIHRoYXQgbmVlZHMgcmVsYXRpdmUgdGltZQorICAgIENIQU5HRVM6IHNubXBkOiBNYWtlIHN1cmUgdGhhdCB0aGUgcmFuZ2Ugb2YgdGhlIFNOTVB2MyB2YXJpYWJsZSBzbm1wRW5naW5lVGltZSBpcyAwLi4yMTQ3NDgzNjQ3IG9uIGFsbCBzdXBwb3J0ZWQgc3lzdGVtcyBpbnN0ZWFkIG9mIDAuLjQyOTQ5NjcyIG9uIHNvbWUgc3lzdGVtcyAoaS5lLiB3cmFwYXJvdW5kIGFmdGVyIDQ5NyBkYXlzKQorICAgIENIQU5HRVM6IHNubXBsaWI6IEFkZCBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soKSwgbmV0c25tcF9zZXRfbW9ub3RvbmljX21hcmtlcigpLCBuZXRzbm1wX3JlYWR5X21vbm90b25pYygpLCBuZXRzbm1wX2dldF9hZ2VudF9ydW50aW1lKCkKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBEZXByZWNhdGUgYXRpbWVfZGlmZigpLCBhdGltZV9uZXdNYXJrZXIoKSwgYXRpbWVfcmVhZHkoKSwgYXRpbWVfc2V0TWFya2VyKCksIG1hcmtlcl90dGlja3MoKSwgbmV0c25tcF9tYXJrZXJfdXB0aW1lKCksIG5ldHNubXBfdGltZXZhbF91cHRpbWUoKSwgdGltZXZhbF90dGlja3MoKSwgdWF0aW1lX2RpZmYoKSwgdWF0aW1lX2hkaWZmKCkgYW5kIHVhdGltZV9yZWFkeSgpLgorICAgIENIQU5HRVM6IHNubXBsaWI6IENoYW5nZSB0aGUgbmFtZXMgb2YgdGhlIHN0cnVjdCB0aW1ldmFsIG1lbWJlcnMgb2YgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgd2VyZSB1c2VkIHRvIHN0b3JlIGEgd2FsbCBjbG9jayB0aW1lIGJ1dCB0aGF0IGRvIG5vdyBjb250YWluIGEgbW9ub3RvbmljIGNsb2NrIHZhbHVlCisKK2NvbW1pdCBjMTk3NjBmMzMzM2M5MmZhYzVkNTBlOTc2OGNkZjkzOTIxOGJjNDg3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgRmViIDE1IDA5OjQ1OjAzIDIwMTIgKzAxMDAKKworICAgIHNubXBsaWIvc25tcHYzLmM6IEZpeCBzb3VyY2UgY29kZSBpbmRlbnRhdGlvbgorCitjb21taXQgYTZkYjIzOTk0NWUxOTVkZTVhOTBmYTE4MzcwMGIyN2E2ZWNiMjhkMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEZlYiA3IDAwOjExOjE0IDIwMTIgKzAxMDAKKworICAgIEZpeCBwb3NzaWJsZSBtZW1vcnkgbGVhayBmcm9tIHJlY2VudCBkZWNsYXJhdGlvbnMgcGF0Y2gKKworY29tbWl0IDBmYmJiOWE5ZTI5MDZhN2FmOTU2OTU3MDYxZDQ4NTg3NDQ2MmFlYTkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBGZWIgNiAyMDo0MzowNCAyMDEyICswMTAwCisKKyAgICBEbyBub3QgbWl4IGRlY2xhcmF0aW9ucyBhbmQgc3RhdGVtZW50cworCitjb21taXQgZjMwOGQ1YmFmYjA1ZDc4ZWQ0MDMwYzRlY2ZmMzI0YjZjYmRhNjgwZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDE1OjI1OjMwIDIwMTIgKzAxMDAKKworICAgIEZpeCB0d28gY29tcGlsZXIgd2FybmluZ3MgaW4gYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMKKworY29tbWl0IDQ2ZjBmYzFiN2ZjMjZhMjI1NzYzYmM2NWNjYTUyMGExYzU5ZjAyNTEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBGZWIgNiAyMDo1NDozMiAyMDEyICswMTAwCisKKyAgICBzZW5kbXNnIGRvZXMgbm90IGxpa2UgSVBfU0VORFNSQ0FERFIgaWYgYWRkciBpcyBJTkFERFJfQU5ZCisKK2NvbW1pdCBkZWJhYzQ5OGZlODQxMDExMDEwN2EyZmU2NGY4YWZiNzQ4ZWRhYTA3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEZlYiA2IDE2OjQ4OjA5IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IGFkZGVkIE9DRlMyIChPcmFjbGUgQ2x1c3RlciBGUykgdG8gaHJTdG9yYWdlVGFibGUgYW5kIGhyRlNUYWJsZQorCitjb21taXQgZmFmYzk5Y2Q4OWU3M2VjN2UwMGJmNzM2MGQwYjRmYTYxOTQ0YTRmNAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDExOjE4OjM0IDIwMTIgKzAxMDAKKworICAgIFNpbXBsaWZ5IGNhbGN1bGF0ZV90aW1lX2RpZmYoKSBhbmQgY2FsY3VsYXRlX3NlY3RpbWVfZGlmZigpCisKK2NvbW1pdCA3YWYyMDEzZGU4YmYxYjM3OWMwNzZkYjRlMTA0NTA4ZTE3ODc0ZDNlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTQ6NTU6NTggMjAxMiArMDEwMAorCisgICAgRml4IG9yZGVyIG9mIGZlYXR1cmUgI2lmbmRlZiBhbmQgRG94eWdlbiBjb21tZW50IGJsb2NrCisKK2NvbW1pdCBiYmQ2N2Y2MzUzMGY1ZWYwYmZjOTQ4ZmM1OGRmZTZhOTNmOGY4Njc5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTU6MjU6MzAgMjAxMiArMDEwMAorCisgICAgRml4IHR3byBjb21waWxlciB3YXJuaW5ncyBpbiBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYworCitjb21taXQgNDJhNjZhZWZmMjViOWU5ZWY2MzVhNDA0YWQyZjUyMTJmOWU4Y2YwZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDE0OjQ3OjU0IDIwMTIgKzAxMDAKKworICAgIFJlbmFtZSB0d28gZnVuY3Rpb24gYXJndW1lbnRzCisKK2NvbW1pdCAzZmU3MmIzYjk5YjdlNGIyYjk4MjM2M2RmYzRmMmQ4ZDEzZjQwNTkyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTM6NDk6MjIgMjAxMiArMDEwMAorCisgICAgQ29udmVydCBzbm1wX3NlbGVjdF9pbmZvKCkgZG9jdW1lbnRhdGlvbiB0byBEb3h5Z2VuIGZvcm1hdAorCitjb21taXQgZTlkYjI2NmFlNDhkMDVhN2E2Y2I1ZDcxYjRiZGVhN2FkODA4ZWY1ZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDExOjE3OjU3IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBBZGQgbmV0c25tcF9nZXRfbmV4dF9hbGFybV90aW1lKCkKKworY29tbWl0IGQwODA0NGNiOWU1NzAyZmJmNTQ5ZTE0NDI1ZjQyNzk0MjU5ZDhhMjEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAwOTozODowNyAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogQWRkIG5ldHNubXBfZ2V0X2FnZW50X3J1bnRpbWUoKQorCitjb21taXQgYTA1YzI3YzI3MTFjYjQxNTgyYTNiNGMzMWUzOGIwZTkzNTMwYjYyZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDE0OjUxOjMzIDIwMTIgKzAxMDAKKworICAgIEZpeCBzcGVsbGluZyBpbiBhIHNvdXJjZSBjb2RlIGNvbW1lbnQKKworY29tbWl0IDkxMGQ3YjBkOTkxODM2MDliOTUyOWIwNGMzZjI5MzMwZWI2NjEwMjEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAxNDozODoxMiAyMDEyICswMTAwCisKKyAgICBSZXBsYWNlIG5ldHNubXBfdGltZXZhbF91cHRpbWUoKSBieSBuZXRzbm1wX2dldF9hZ2VudF91cHRpbWUoKQorCitjb21taXQgNDNhODNmNmM2YTk2Y2MyMzE2YjcwZWVjYWNmMTI3ZWI2OTEzYzdhNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDExOjE5OjE1IDIwMTIgKzAxMDAKKworICAgIFVzZSB0aGUgYXNzaWdubWVudCBvcGVyYXRvciBpbnN0ZWFkIG9mIG1lbWNweSgpIGZvciBjb3B5aW5nIHN0cnVjdCB0aW1ldmFsCisKK2NvbW1pdCAyZmU1NzllZmIxY2IzYTc0ZjgyODAzY2EzMjM5MjhmNmI4ZTRiNWMwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgRmViIDMgMTQ6MDQ6MDIgMjAxMiArMDEwMAorCisgICAgTWFrZSBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMgYnVpbGQgYWdhaW4gb24gbm9uLUxpbnV4IHN5c3RlbXMuCisgICAgCisgICAgU2VlIGFsc28gY29tbWl0IDM0NWExZTQyNTQ4MTJjYjllZGMxZDI3NDQ5MWI3NjY4MWE5ZGJhMWUuCisKK2NvbW1pdCA4ODFkZTZhYjczNTUyNzdhNWMxMTZhMDA4ZmJlNTEzMjkzYjA1MDM5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgRmViIDMgMTA6MDg6MjEgMjAxMiArMDEwMAorCisgICAgRml4IGNvbXBpbGVyIHdhcm5pbmdzIHRyaWdnZXJlZCBieSB0aGUgUm1vbiBNSUIgaW1wbGVtZW50YXRpb24KKworY29tbWl0IDQ2Mjk5MzNjMGQzYjNmOWY0YmE1ODM1MzRmNzlhMzdmYjk2MzM4MTcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAyMDowNTozMSAyMDEyICswMDAwCisKKyAgICBNb3JlIGNvbXBpbGVyIHdhcm5pbmcgZml4ZXMKKworY29tbWl0IGU5YjVhM2RlZTZmOWFmYWI4YjkwYTI5MzkyMDQwNjMyYjA3NWFkN2EKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAxNjo1Njo1NSAyMDEyICswMTAwCisKKyAgICBVc2UgU05NUF9NSU4oKSBpbnN0ZWFkIG9mIG1pbigpCisKK2NvbW1pdCBhZTQ1MmM3N2I0MTExMzlkNmI1ODAwZmZjZjg4ZDQ4ZTliNDc5MmE4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMTU6MjM6MzggMjAxMiArMDEwMAorCisgICAgUmVzdG9yZSBjb21taXQgZGJiODc5NWE3ZGY1OTVmMDYwM2YyZWM2MTcwNDc5OWY0YzQ4MjY2Ny4KKworY29tbWl0IGM3ZDExZmEwMGY5OTk1ZGRiOWZlM2Q0OTk0YTNlOTc5MGRhMmUxODkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAxNToxODo0MCAyMDEyICswMTAwCisKKyAgICBSZXN0b3JlIGNvbW1pdCBkYmI4Nzk1YTdkZjU5NWYwNjAzZjJlYzYxNzA0Nzk5ZjRjNDgyNjY3IHBhcnRpYWxseS4KKworY29tbWl0IDAwZmQ2MjcyMGVjNDU0ZjVhNjkwZGU0ZmViYTA4MjIzY2ZiMmMzZjgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAxNDo0ODo0NCAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IEF2b2lkIGNyYXNoIGR1cmluZyBzaHV0ZG93biBkdWUgdG8gaW52b2tpbmcgcGVybF9kZXN0cnVjdChOVUxMKQorCitjb21taXQgZDllMjI5ZDgxYWJlYWYxOTFlZjJjY2IwNzc4NDI4ODVjMjMwZDYyMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDE0OjQ3OjQxIDIwMTIgKzAxMDAKKworICAgIFJlbW92ZSBhIHN1cGVyZmx1b3VzIGRlY2xhcmF0aW9uCisKK2NvbW1pdCAxZTJlMmFmNmNhZTgzMGYzODFlODdhMjQ0ZDAyOWViODZiZjNmY2NlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMTM6MjA6MzcgMjAxMiArMDEwMAorCisgICAgcGVybC9TTk1QL2V4YW1wbGVzL3BpbmdtaWIucGw6IEFkZCBlcnJvciBjaGVja2luZworCitjb21taXQgMjQxYTE0MWUzMWYxNjg0ZmM2Y2Y3MGNjNGEwMGNjZTYzNmZkMzUyNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDExOjI4OjM3IDIwMTIgKzAxMDAKKworICAgIE1ha2UgY29uZmlndXJlLXRpbWUgRVZQX01EX0NUWF9jcmVhdGUoKSBkZXRlY3Rpb24gd29yayBvbiB0aGUgNS40IGJyYW5jaC4KKyAgICAKKyAgICBTZWUgYWxzbyBjb21taXQgNDZlYWMwMmU5YTI3YmY0ZjMwNjhlNzk1Y2FiODkxZjA1YTg0ODg3MC4KKworY29tbWl0IDZkOWQxNGZlYWFhMmQwZmVjNjhiNGQxNTg5NDRkMzJjYjA0ZmYxYmMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAxMToxMjowMCAyMDEyICswMTAwCisKKyAgICBSZXZlcnQgdGhlIGNoYW5nZXMgdGhhdCBicmVhayB0aGUgYnVpbGQgb24gdGhlIDUuNCBicmFuY2ggZnJvbSBjb21taXQgZGJiODc5NWE3ZGY1OTVmMDYwM2YyZWM2MTcwNDc5OWY0YzQ4MjY2Ny4KKworY29tbWl0IDhhYmU0OWUzMGM5N2M4OTgzZTgzYjQ1YTM1YzcxNmZlOTFmNjZiZWEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBGZWIgMSAxMTo1Njo1OCAyMDEyICswMTAwCisKKyAgICBGaXggc2V2ZXJhbCBjb21waWxlciB3YXJuaW5ncyBpbiB0aGUgRElTTUFOIE1JQiBpbXBsZW1lbnRhdGlvbnMuCisKK2NvbW1pdCBmOWZiMGE1MzMzNzVlMTRkYzM3MDAyNWEwYjJmYmM3NjFiZjI3YmU2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMDk6NTY6MDIgMjAxMiArMDEwMAorCisgICAgUmV2ZXJ0ICJIT1NULVJFU09VUkNFU19NSUI6IGZpeCBhIGNvbXBpbGVyIHdhcm5pbmciIGJlY2F1c2UgaXQncyB3cm9uZy4KKyAgICAKKyAgICBUaGlzIHJldmVydHMgY29tbWl0IGFhNmI3OWJjMTI0YTdiN2E4ODVkN2U1MDM1YWIwNmFhM2VjZWY2MTMuCisKK2NvbW1pdCBjYTRhNGZlMjVlZmQyNzE0ZjhmMTk2MWI5Nzg1NjYxNjU2M2Y0MmM5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMTA6MjE6NDkgMjAxMiArMDEwMAorCisgICAgLmdpdGlnbm9yZTogQWRkIHB5dGhvbi9idWlsZAorCitjb21taXQgMTNhZGE1NjU1OGI0NGUyOGQxMzU1YzBkY2UxZDkyMWYzNzQ2ZDU0OAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTU6NTM6NDkgMjAxMiArMDEwMAorCisgICAgUmV2ZXJ0ICJSZXZlcnQgIkZpeCBmb3JtYXQgc3BlY2lmaWVycyB0byBhdm9pZCB3YXJuaW5ncyIiIC0gdGhlcmUgKmlzKiBORVRTTk1QX1BSSW8gaW4gVjUtNisgYnJhbmNoZXMKKyAgICAKKyAgICBUaGlzIHJldmVydHMgY29tbWl0IGFhNTI4YmQyMmM3NDkzY2E4ZDY3ZTY3OGZiZjYxNWNhMGY2M2VhNmQuCisKK2NvbW1pdCBhYTUyOGJkMjJjNzQ5M2NhOGQ2N2U2NzhmYmY2MTVjYTBmNjNlYTZkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNDoxMzoxOCAyMDEyICswMTAwCisKKyAgICBSZXZlcnQgIkZpeCBmb3JtYXQgc3BlY2lmaWVycyB0byBhdm9pZCB3YXJuaW5ncyIgLSB0aGVyZSBpcyBubyBORVRTTk1QX1BSSW8gaW4gVjUtNCBvciBWNS01IGJyYW5jaGVzCisgICAgCisgICAgVGhpcyByZXZlcnRzIGNvbW1pdCAzOTBjMDExNGM4ZWMwYmRiMjdiMDhiNmY3NGUzZjZlZjNhNjI5ODFiLgorCitjb21taXQgMmZiOTliZTlhYTg2YTZjYTM0OWI4NmQ0ZWY4YmM3MjZlZDlmMmE4MgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTQ6NTg6MzUgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgdG91Y2ggcmVnaW5mbyB3aGVuIHJlZ2lzdHJhdGlvbiBmYWlscyAtIGl0IGhhcyBiZWVuIGFscmVhZHkgZnJlZWQuCisKK2NvbW1pdCBlNWMzNTU4OWUwYmY0MTZiZmQwMzZiZDQ2OGY0MmFhZWFiMjVlNzg4CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNDo1NTo1NiAyMDEyICswMTAwCisKKyAgICBEb24ndCB0b3VjaCByZWdpbmZvIHdoZW4gcmVnaXN0cmF0aW9uIGZhaWxzIC0gaXQgaGFzIGJlZW4gYWxyZWFkeSBmcmVlZC4KKworY29tbWl0IDM0NWExZTQyNTQ4MTJjYjllZGMxZDI3NDQ5MWI3NjY4MWE5ZGJhMWUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE0OjUxOjI2IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGVycm9yIGhhbmRsaW5nIGluIGluaXRfaWNtcCgpLgorCitjb21taXQgYzMwMzU0OWE1OWZhOGMyZjIwYTlkOGJmMWU5ODVmYmM4YWJkZTZhOAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTU6NDY6MjkgMjAxMiArMDEwMAorCisgICAgUmV3b3JrZWQgX3JlZ2lzdGVyX2V4dGVuZCgpIGVycm9yIGhhbmRsaW5nLgorCitjb21taXQgOWMyMGUyN2E3MDI2ZmMwMzBkYTNiMzI4YjlhMmUxYjRmMzY2NzBjZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTU6MjE6MjggMjAxMiArMDEwMAorCisgICAgRG9uJ3QgdG91Y2ggcmVnaW5mbyB3aGVuIHJlZ2lzdHJhdGlvbiBmYWlscyAtIGl0IGhhcyBiZWVuIGFscmVhZHkgZnJlZWQuCisKK2NvbW1pdCAyMmZkMGJmYzJkZjBlMWY2MDIwZGMzYzUwYTc1M2RkZjI4YTQ1OTljCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNToyMDoyMiAyMDEyICswMTAwCisKKyAgICBEb24ndCB0b3VjaCByZWdpbmZvIHdoZW4gcmVnaXN0cmF0aW9uIGZhaWxzIC0gaXQgaGFzIGJlZW4gYWxyZWFkeSBmcmVlZC4KKworY29tbWl0IDVkNjFlNTdiYWY1ODBjNzgyNTJjMGFiYjAwOThjMDdiYjA1YWYxN2MKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjE3OjA1IDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCitjb21taXQgM2MzZWVhZTgwZDc5NmYyNzU5N2M5MDFlN2ZmMjA0NmM3NjllZjRiOAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTU6MDg6MDkgMjAxMiArMDEwMAorCisgICAgTWFyayByb3dyZXFfY3R4IGFzIGZyZWVkIHNvIG5leHQgaXRlcmF0aW9uIGFsbG9jYXRlcyBuZXcgb25lIGluc3RlYWQgb2YgcmV1c2luZyB0aGUgZnJlZWQgb25lLgorCitjb21taXQgYWY5YWJkNTNjMjMzN2M5MGE2OTFhN2IwNDRmZjNmOTdjMTAwMzE2MQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTU6MDU6MTAgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgdG91Y2ggcmVnaW5mbyB3aGVuIHJlZ2lzdHJhdGlvbiBmYWlscyAtIGl0IGhhcyBiZWVuIGFscmVhZHkgZnJlZWQuCisKK2NvbW1pdCBjZjk0NjVmNTQxODFlNjJlMjFhOWIxMDIxOTEzMTEwN2EzZDJlYmY2CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNTowNDowNiAyMDEyICswMTAwCisKKyAgICBEb24ndCB0b3VjaCByZWdpbmZvIHdoZW4gcmVnaXN0cmF0aW9uIGZhaWxzIC0gaXQgaGFzIGJlZW4gYWxyZWFkeSBmcmVlZC4KKworY29tbWl0IDc4NzFmMmIwOWI4YjUyZjM0YTllNTc3ODQyNjY0NTkwNTMxNjViY2IKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjAyOjUwIDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCitjb21taXQgN2EzN2YzM2QzMTBjOTU5ODYwN2JjMzIzZDliZGJmOTFhYWY3MmM5NQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTU6MDA6NTEgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgdG91Y2ggcmVnaW5mbyB3aGVuIHJlZ2lzdHJhdGlvbiBmYWlscyAtIGl0IGhhcyBiZWVuIGFscmVhZHkgZnJlZWQuCisKK2NvbW1pdCAzZTQ1ZjcwMjYyNDllNDUzNTBlZGFhYzg1MzM3NDIzYWEwZTk1ZDhiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNDoxMzoxOCAyMDEyICswMTAwCisKKyAgICBSZXZlcnQgIkZpeCBmb3JtYXQgc3BlY2lmaWVycyB0byBhdm9pZCB3YXJuaW5ncyIgLSB0aGVyZSBpcyBubyBORVRTTk1QX1BSSW8gaW4gVjUtNCBvciBWNS01IGJyYW5jaGVzCisgICAgCisgICAgVGhpcyByZXZlcnRzIGNvbW1pdCAzOTBjMDExNGM4ZWMwYmRiMjdiMDhiNmY3NGUzZjZlZjNhNjI5ODFiLgorCitjb21taXQgNjE5MzY3NjJlNjQxYzE4ZGI3NWFhNTEyNWEzM2U3NzZjNjc3YWRjNQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTE6MTM6MzkgMjAxMiArMDEwMAorCisgICAgRml4ZWQgZnJlZWluZyByZWdpbmZvIHR3aWNlIG9uIGVycm9yIGluIGEgdGVtcGxhdGUgYW5kIGFsbCBpdHMgaW5zdGFuY2VzLgorCitjb21taXQgNDk2NDM3NDMwNDE1ZmJhZmViMWNjZDQ3NzRmMWNhMDBkNjI3ZWExZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiAyMCAxMTowNDoxMyAyMDEyICswMTAwCisKKyAgICBweXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jOiBGaXggY29tcGlsZXIgd2FybmluZ3MgaW50cm9kdWNlZCBvbiBWNS42IGJyYW5jaAorCitjb21taXQgNWI0YTI0Y2RjZWUxYmMzZDgyNjMzY2NhZmViOTZmY2U5NTM0OWM1OQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiAyMCAwOToyMjoyNyAyMDEyICswMTAwCisKKyAgICB1bml0IHRlc3RzOiBmaXggYSA2NC1iaXQgY29tcGlsZXIgd2FybmluZworCitjb21taXQgY2JmMWM5MWJhZjcxOTFiZTVmYTI3ZDgxYmNmODcxNDMzMWEyYzEyZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiAyMCAwOToyMDo0MiAyMDEyICswMTAwCisKKyAgICBVc2Ugc25tcFRhcmdldFBhcmFtVGFibGVfZGlzcG9zZSgpIHRvIGZyZWUgYSBzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QuCisgICAgCisgICAgRml4ZXMgYSBidWcgaW50cm9kdWNlZCBpbiBjb21taXQgZGJmMjZhMDVhMDRlZjI0YzQ3MzQ2ZTVhZGRhNDhlMzM4NDk4ZTcxZi4KKworY29tbWl0IGFhNmI3OWJjMTI0YTdiN2E4ODVkN2U1MDM1YWIwNmFhM2VjZWY2MTMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gMjAgMDk6MjA6MzEgMjAxMiArMDEwMAorCisgICAgSE9TVC1SRVNPVVJDRVNfTUlCOiBmaXggYSBjb21waWxlciB3YXJuaW5nCisKK2NvbW1pdCAzYTc2YjQzZTExZmZmYWRhNjMyZmNjYjg0OGFiNTAwZTg3NmFkNDhiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDE4IDE2OjIxOjA1IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHB5dGhvbjogQXZvaWQgdGhhdCBhbiBTTk1QIHNldCB3aXRoIFVzZUVudW1zIGVuYWJsZWQgY2F1c2VzIGEgc2VnbWVudGF0aW9uIGZhdWx0CisKK2NvbW1pdCA4NGRlYzlmYTkyYjBhYTJkNThlYjcwMjAzMzBmNGY5OGU1MTU0MzIxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDE4IDE0OjM4OjIxIDIwMTIgKzAxMDAKKworICAgIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6IEZpeCBtb3N0IGNvbXBpbGVyIHdhcm5pbmdzCisKK2NvbW1pdCAzOGNmMjE4YzNmMWE3Mjc3ODZlMjI3YTVkM2ZiMTg2ZmQwZjFhMTVmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxNDo1MDoxMyAyMDEyICswMTAwCisKKyAgICBGaXggYSB0eXBvCisKK2NvbW1pdCA0NTQxMjIyNDQxMjJiZmRiNmY2N2NhYjMxMjU2ZDdiNDYzNzJlOWUxCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxNDozMDoxOCAyMDEyICswMTAwCisKKyAgICBGcmVlIHRtU3RhdGVSZWYgb24gZXJyb3JzLgorCitjb21taXQgMDExOTAyMmRhYTU5YzczYmZlYzBkYTIzODZkMDYyOGYxNGU2ZGFiNworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTQ6MDk6MTIgMjAxMiArMDEwMAorCisgICAgRnJlZSBmaW5nZXJwcmludCB3aGVuIGl0J3Mgbm90IG5lZWRlZC4KKworY29tbWl0IDBlODRjZDMwM2EwODI2N2RlYzc4ZjZkODFjOWJiMDdlM2Q4M2ExMWYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDEzOjQ4OjI2IDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IDYzZGM4NDZhNzk0OWNlNjk3YjNlMjhjNTQzZGMxMTA1ZTYzYTIyNTAKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDEzOjA4OjI4IDIwMTIgKzAxMDAKKworICAgIEZyZWUgY2VydGlmaWNhdGUgZmluZ2VycHJpbnQuCisKK2NvbW1pdCBjZTFmMjg0YTYzZWI4MTY0NGIzZTMyNjA2Y2JlMzliNjdlMWRmZjJhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxNDozNzowOSAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCA3ZTIxNDEzY2E2ZjJlZmQ3YTNhZmI2MmM2MmI2NDQ4ODFiOGJkMWU3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMzo0NjozMCAyMDEyICswMTAwCisKKyAgICBQcm9wZXJseSBhbGxvY2F0ZSBhbmQgZnJlZSBlbmdpbmVJRC4KKworY29tbWl0IDM0Yzk2Mjg4MjYwN2MzNjM4YTJmYTI1YTJhYzUzMTQ5MmQ3MWM3ODcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDEzOjM3OjI1IDIwMTIgKzAxMDAKKworICAgIEZyZWUgbG9jYWxseSBhbGxvY2F0ZWQgdG1TdGF0ZVJlZi4KKworY29tbWl0IGY1N2FlNTMxZGM1NjU4YWJjZDY1YjE2Mjc2MTU1MjUyMzhkMTZkMmQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDEzOjIwOjI0IDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IDUzNmJjNTc1NTZjMzE0MTU2MWVhNGExOTQ4MTBiMTYyOTBhNjkxZWUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDEzOjE1OjQ3IDIwMTIgKzAxMDAKKworICAgIEFkZGVkIGNoZWNrIGlmIHRoZSBmdW5jdGlvbiBhY3R1YWxseSBkb2VzIHNvbWV0aGluZy4KKworY29tbWl0IGEwNzc3ZDMwN2RiY2FmMjE5ZWUwMTg0YTBmYmFiOWQ0ZTVkNmFhMGIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDEzOjAxOjQ1IDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IDhiOTdhNzFjOGU3OTU5NDI4ZWI0ZDRlOGQ5MGU5MDk2ZDQzZmYwOWYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDEyOjU3OjI2IDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IDJjMTUwN2MyMjAzMDU0OWFlNjYwYzBlMjExZmJkYzVjNzVlYzVjNTcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDEyOjUzOjQ3IDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IDY1ZjJiN2JjZDRmZTAzOTA2YWExYTExNWFiNjBhODliOGFlOTMzZDUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDEyOjUxOjM2IDIwMTIgKzAxMDAKKworICAgIENsb3NlIG9wZW4gZmlsZXMgb24gZXJyb3IuCisKK2NvbW1pdCAwZTUyZTRmNjZkNDQ3NjZiZWEzNzQ3MzU1NmM3OGU1MjE5Yjk1NDYxCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiAxOCAxNTo0NTozMyAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCBkYmYyNmEwNWEwNGVmMjRjNDczNDZlNWFkZGE0OGUzMzg0OThlNzFmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiAxOCAxNTo0MjoxNyAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCA3NDhkYTg0YjFmZDY1NGUzMzhiYzcwMWU4ZjllNWRhMjI5MTg3ZjFjCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiAxOCAxNTozMjowNCAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCBlYjIxNzE0NmZkNTQwMzZlYTQyMDJiZmVmNzhiYmY3NzRkN2UzODJkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiAxOCAxNToyMzoxMCAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCA5YmEzOGVlYzY2MTM4ZWMxZjYxM2VhOGQwNGUxNTgxMzBjNzEyMWJjCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiAxOCAxNToxODo1NSAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCBkOWQ5MzhkMzAxOGMyN2Y1MzI3N2JjNWU1OTU3ODUwMDQ5MGMxZDA5CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiAxOCAxNToxNjozOCAyMDEyICswMTAwCisKKyAgICBDbG9zZSBvcGVuIGZpbGUgb24gZXJyb3IuCisKK2NvbW1pdCBkNWU4MTdkNWJkNTE4ZDlhYzZhMGQ2MGUwZTE0MWRkNjRmMjdhZDE5CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiAxOCAxNToxNDoxMiAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCAyYWU2OGYwNTlkZjlkNzRiMDc0ZDEyZjU5YzE4NDc0NjZlZDU3NmNkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiAxOCAxNTowMzoxNyAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCBhMDBmM2Q0NjExMjFiNTQ1YWVkNzJhYzEyYjI0Mzg3OTFkY2ZjNGJhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiAxOCAxNDo1ODozOSAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCA1OTg4NGJiNGQzNWFkMTM3NDdmZmE2NzIzNDM2ZGNhNTg3YTlhYjc3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNzowOToxMiAyMDEyICswMTAwCisKKyAgICBJbiBhYm92ZSBjb2RlLCBvbGVuZ3RoIGlzIGNoZWNrZWQsIHNvIGxldCdzIGNoZWNrIGl0IGFsc28gaGVyZS4KKworY29tbWl0IGJhNWQ1MjkyYjA0MzkzYjBjN2Q3ZDdlZDk2MTI0MTkyOTQxOGM2ZTQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE3OjA1OjE0IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGRlcmVmZXJlbmNpbmcgTlVMTC4KKworY29tbWl0IGRhMmQ2YTcwMjhhMTNiOWVkZjNhNWM4NDMxNGQwZjFmZWVmNzY3MTQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE2OjQ0OjU2IDIwMTIgKzAxMDAKKworICAgIFByZXZlbnQgZGVyZWZlcmVuY2luZyBOVUxMLgorCitjb21taXQgZjg4MDU0YTliNjliNmRlMjc0ZjdhMTRhNTliNDczMjNlNWU0ZTRjNgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTY6Mzc6MzUgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgZGVyZWZlcmVuY2UgY29udGV4dCBpZiBpdCdzIE5VTEwuCisKK2NvbW1pdCA3YzRkNDU5ZThmMWY2NTJjYzIwOThjM2Q0YzgxZGU5MGE4NGVkNzEwCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNjozMDowOSAyMDEyICswMTAwCisKKyAgICBEb24ndCBkZWZlcmVuY2UgTlVMTC4KKworY29tbWl0IGZjMTliN2YzM2I1ODc5MjdkMmEwMWU3MmQyM2QyMWI5YjE2OTZhYjMKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE2OjI1OjI2IDIwMTIgKzAxMDAKKworICAgIERvbid0IGNsb3NlIE5VTEwgZmlsZS4KKworY29tbWl0IDVlOTVjYTY3OTAwNzZiNzg4MDcyYTgwMWVlN2M4Mjk2OWQ5OTViY2IKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE2OjE3OjA5IDIwMTIgKzAxMDAKKworICAgIFByZXZlbnQgZGVyZWZlcmVuY2luZyBOVUxMIHdoZW4gYSB0cmFuc3BvcnQgZG9lcyBub3QgaGF2ZSBmX2ZtdGFkZHIuCisKK2NvbW1pdCBlZWQ2ZjVmOWI5YWU1NGQyY2VhYjY3YWQ4NWFkZGUxZjZhOGEyMWQ1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNjoxMzoxMyAyMDEyICswMTAwCisKKyAgICBQcmV2ZW50IGRlcmVmZXJlbmNpbmcgTlVMTC4KKworY29tbWl0IDQxY2RlNjhiNWZhNGIzOGQ4MTQ1MGNmOTFlMDgyY2RmYTgyNWU3Y2YKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE2OjEwOjEwIDIwMTIgKzAxMDAKKworICAgIENoZWNrIGlmIGEgcmVnaXN0cmF0aW9uIHdhcyByZWFsbHkgZm91bmQuCisKK2NvbW1pdCA1YjcyYTQwODUzODc2YTE4NmVmY2MwMDkwYTRlMzJjMjM1YjljMDVmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNjowMzo1OCAyMDEyICswMTAwCisKKyAgICBEb24ndCBkZXJlZmVyZW5jZSBOVUxMIHdoZW4gZGlmZmxlbiBpcyBTTVVYX01BWF9QUklPUklUWSAod2hpY2ggaXMgaGlnaGx5IHVubGlrZWx5LCBidXQuLi4pCisKK2NvbW1pdCBmYTZhOTEyZTQxYzVkMGZkMmE2MzY4OTRlODZiNjQyNmMwNzM3NWFiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNTozNzo0NCAyMDEyICswMTAwCisKKyAgICBDaGVjayBmb3IgbWlzc2luZyB2YWx1ZSBpbiBzZXRFdmVudC4KKworY29tbWl0IDQxMGI3MWRhNDI1Mzg5ZmVjYzI1ZDE0ZjQ5ZjIzNzUzNTgxNTc2YWQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE1OjI4OjQxIDIwMTIgKzAxMDAKKworICAgIERlcmVmZXJlbmNlIGVyZWcgb25seSBpZiBpdCBpcyBub3QgTlVMTC4KKworY29tbWl0IDE4NTI3MmQxYTBiOTEzNzc0MTg2ZjFiOTEzNWFlYWY2MzdlYmVkNTIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE1OjE3OjIxIDIwMTIgKzAxMDAKKworICAgIEFzIHBlciBhYm92ZSBjb2RlLCB0ZW1wbGF0ZV92MnBkdSBjYW4gYmUgTlVMTCwgc28gY2hlY2sgaXQgYmVmb3JlIGRlcmVmZXJlbmNpbmcuCisKK2NvbW1pdCA0OGU1ZWFkM2ZkMmMyYjM4NWRmNjk3MmM2NzUyNmZmNmJkYzMwNzY4CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNDo0MjoyMiAyMDEyICswMTAwCisKKyAgICBVcGRhdGVkIGxhc3QgZml4IHRvIG5ldyBlcnJvciByZXBvcnRpbmcgc3R5bGUuCisKK2NvbW1pdCBmMzNkMzM2MTVkNmQ4NWQwMDczNzI2NDczYzQxNDZjYmNkZjExY2VkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNDozMDowNyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBzaWdzZWd2IHdoZW4gZW1wdHkgY29uZmlnIGxpbmUgaXMgcGFyc2VkLgorCitjb21taXQgYjVkZjFlZWI0N2VkMzU1OWI2ZjRkOWVjY2NkYjI0MjEyNmU2Yzk5MgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTQ6MTE6NTggMjAxMiArMDEwMAorCisgICAgRml4ZWQgKGhpZ2hseSB0aGVvcmV0aWNhbCkgc2lnc2VndiB3aGVuIHNwLT5zZWN1cml0eUVuZ2luZUlEIGlzIE5VTEwuCisKK2NvbW1pdCA2ZmVlZDYyOWE3MTg5OWMxMTMwOTY5NTlkODU0OWRjMTIwMWU4ZjlhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxMzo0MzozNyAyMDEyICswMTAwCisKKyAgICBBZGRlZCBOVUxMIGFuZCBsZW4gY2hlY2sganVzdCBpbiBjYXNlIHNvbWVvbmUgcHJvdmlkZXMgdmFsdWUgPSBOVUxMIGFuZCBub3plcm8gbGVuICgtPiBOVUxMIGlzIHRoZW4gZGVyZWZlcmVuY2VkKS4KKworY29tbWl0IDM1NWM1YWIyNjRhZjJhNjAyMGExZDhhOTIzZjgwZjExYjk0MjI5NWUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDEzOjM2OjQxIDIwMTIgKzAxMDAKKworICAgIEV4dGVuZCB0aGUgTlVMTCBjaGVjaywgaS5lLiByZXR1cm4gaWYgdGhlcmUgaXMgbm90aGluZyB0byByZW1vdmUuCisKK2NvbW1pdCBkZGQ3OTQ4YWNhZDkzOGNkNDI5NzQ1MDVkZGNhNGYwMzcyMTE2NzA5CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSmFuIDE2IDExOjExOjI5IDIwMTIgLTA4MDAKKworICAgIHVwZGF0ZSBzcGFydGEncyBjb3B5cmlnaHQKKworY29tbWl0IDQxMjU2MDg2YTdhNTA0MTQ1MzQxOWNmZDZlNTYyYzdiNTVjNTZiMGEKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBKYW4gMTYgMTA6MzI6MDQgMjAxMiAtMDgwMAorCisgICAgcHVsbGVkIGZ1bGwgY29weSBvZiBleHRyYWN0bmV3cyBmcm9tIG1hc3RlcgorCitjb21taXQgNjI1YTcwZGJkZmQ5OTAyZGE3OWVmYTI5M2ZlNmQyYWM4Y2NmMmIyZQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEphbiAxNiAxMDoyNDoxOSAyMDEyIC0wODAwCisKKyAgICB1cGRhdGUgdG8gY2hhbmdlIHRvIHRoZSBuZXdlciBsb2cgZ2VuZXJhdGluZy9wYXJzaW5nCisKK2NvbW1pdCA2MmUzMmIxMzA4OWIyOWVkY2YyNzZmNjE1ZGE2N2U0NTA4ZmU3YmI1CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSmFuIDE2IDA5OjI5OjQyIDIwMTIgLTA4MDAKKworICAgIGNvbmZsaWN0aW5nIG1lcmdlIGZyb20gbWFzdGVyIGZvciBleHRyYWN0bmV3cworCitjb21taXQgNzAwODRkYTYxZDJiY2JkMmNmMWVkODFiZGMzYmY2Nzk0YzJhZmZiNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiAxMyAxMTo0OToxNiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVNDSEVEVUxFUi1NSUI6IEhhbmRsZSAzMi1jaGFyYWN0ZXIgc2NoZWRDb250ZXh0TmFtZSB2YWx1ZXMgY29ycmVjdGx5LgorICAgIAorICAgIFNlZSBhbHNvIGNvbW1pdCBiM2M0OTgyNTQyZTBhYjE1MWZiMzg4NDc1NGNkZmJjYjQ3MmRhNTJkLgorCitjb21taXQgMDRiZjNlMjg4MTU4ZWU4ODBlZGYyMzdlNDAwN2ZlZTM3ZDIwNDRkZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTU6Mzk6MzcgMjAxMiArMDEwMAorCisgICAgRml4ZWQgZW5kbGVzcyBsb29wIHdoZW4gU1NMX3JlYWQgcmV0dXJucyBlcnJvci4KKworY29tbWl0IGMxNTI2ZmNjYzA0NzRjMWRiMThjYWE5ZGJiODMzODUzY2RkZGUzY2MKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDE1OjEzOjIxIDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGEgdHlwby4KKworY29tbWl0IGEyN2FhMTlkZjI4MzE1NmMwMzJjODFlYWVlNWUxMTU4NTlkMzhjMTcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDE1OjExOjMyIDIwMTIgKzAxMDAKKworICAgIERvbid0IHJlcGxhY2UgJ3JjJyB2YXJpYWJsZSwgaXQncyB2YWx1ZSBpcyBuZWVkZWQgb3V0c2lkZSB0aGUgbG9vcC4KKworY29tbWl0IDk4NWRmZjJiMDg3NmQ5NDgzYzQxNGZjY2VhM2VmNmJjNjNlMTQ1NjEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDE1OjAxOjMyIDIwMTIgKzAxMDAKKworICAgIFJlbW92ZWQgZHVwbGljYXRlIGNvZGUuCisKK2NvbW1pdCAyZmQ3ODE4MzE4ZTdhNWRmZTk4ZjUyY2NmNzUwYzJhNjNlODI1ZGVkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxMiAxNTowMDoyMiAyMDEyICswMTAwCisKKyAgICBSZW1vdmVkIGR1cGxpY2F0ZSBjb2RlLgorCitjb21taXQgMTVmMjExMzBiYTMzZGM5YWZkMTY0ZTUyZGZkNzRjOWNlYzBlOTIzMgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTQ6NTg6MTQgMjAxMiArMDEwMAorCisgICAgUmVtb3ZlZCBkdXBsaWNhdGUgY29kZS4KKworY29tbWl0IDJhOGE4ZjJhYjdjZDc1ODI2YzVkNDFlYzNjZmQ1Y2UzZTk2MzRjZjMKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDE0OjM5OjI4IDIwMTIgKzAxMDAKKworICAgIHJlbW92ZSBkZWFkIGNvZGUsICdjcCcgaXMgYWx3YXlzICE9IE5VTEwgaGVyZS4KKworY29tbWl0IDM4ZmQ2Mzc4Y2MzMjc1MTgwZjYzYjhkOWI5YTQwNzJiM2RhYmY4ZTQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDE0OjI1OjA2IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGEgdHlwby4KKworY29tbWl0IGViZDkyZTE5YjEwYzBhMzhlMTdjZGU0MDc4NjRiNDVjMjZlMTczMjcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDE0OjA3OjQzIDIwMTIgKzAxMDAKKworICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgaWYgKHZhbHVlKSBjaGVjayAtIHZhbHVlIGlzIGNoZWNrZWQgZmV3IGxpbmVzIGJlZm9yZS4KKworY29tbWl0IGM1Y2FjZjVjYWY5NzlkMDE4ZWE2Y2FlMWMwM2I4ZmRmMGIxMThkZmQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDEzOjQ0OjQzIDIwMTIgKzAxMDAKKworICAgIFByZXZlbnQgZG91YmxlIGZyZWUoKSwgJ2Rpcm5hbWUnIGlzIGFscmVhZHkgZnJlZWQgaW5zaWRlIHNlX2FkZF9wYWlyX3RvX2xpc3QoKSBpZiBpdCBmYWlscy4KKworY29tbWl0IGFjZGNlYjUwZWE2NmQ2YjMyM2M3NGVlMDIxZmI3N2U4MTBlNGU3YWYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDEzOjQzOjE5IDIwMTIgKzAxMDAKKworICAgIFByZXZlbnQgbWVtb3J5IGxlYWsgd2hlbiBtYWxsb2MgZmFpbHMuCisKK2NvbW1pdCAxNzA1M2UzNGNmZTlhOGFiMzk1ZmI1MGY1YzNmMWRhZmM3MjQ3YWViCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxMiAxMzozMjo1NyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBkb3VibGUgZmNsb3NlKCkuCisgICAgTGludXggbWFuIHBhZ2UgZm9yIGZjbG9zZSgzKSBzYXlzOiBJbiBlaXRoZXIgY2FzZSBhbnkgZnVydGhlciBhY2Nlc3MgKGluY2x1ZGluZyBhbm90aGVyIGNhbGwgdG8gZmNsb3NlKCkpIHRvIHRoZSBzdHJlYW0gcmVzdWx0cyBpbiB1bmRlZmluZWQgYmVoYXZpb3IuCisKK2NvbW1pdCBhNjY0MWVkYjljYjc0ZmMyMjM2YjQyY2U1NTU0ZmMzMzI5OTU2NTUyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDExIDE1OjIyOjM0IDIwMTIgKzAxMDAKKworICAgIE1pbkdXOiBTa2lwIHRlc3QgVDA2NSBpZiBub3Qgc3RhcnRlZCBmcm9tIGluc2lkZSBhbiBNU1lTIHNoZWxsCisKK2NvbW1pdCBhODgzZWYxOTgyZjMwMWIxNDg1ZDIyNzMwMTY3NDkyNzMzMGY1YjY3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiAxMSAxNToxNDo1MyAyMDEyICswMTAwCisKKyAgICBNb3ZlZCBkZWJ1ZyBvcHV0cHV0IGJlZm9yZSByZXR1cm4uCisKK2NvbW1pdCA0NTc1MTk2NzI4N2Q5NzY0MGVmZGNkZjhlNzdlOGQ0OTA5MzlkOGViCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDExIDE0OjE3OjE4IDIwMTIgKzAxMDAKKworICAgIENvbnZlcnQgc3RydG91bGwoKSB1bml0IHRlc3QgaW50byBhIE5ldC1TTk1QIHVuaXQgdGVzdAorCitjb21taXQgMmMyZmE0ODMzNmE0ZjFmMTc3YzI5OTFkNjUxNWQyOWYzOTUzM2M0NAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiAxMSAxMzo1MDo0NCAyMDEyICswMTAwCisKKyAgICBDb252ZXJ0IHJlYWRfY29uZmlnX3JlYWRfb2N0ZXRfc3RyaW5nX2NvbnN0KCkgdW5pdCB0ZXN0IGludG8gYSBOZXQtU05NUCB1bml0IHRlc3QKKworY29tbWl0IDA3YzY2NmY2Y2VhMjdmMmIyYWI5YmMwOGFlZDBjYjYxMzNmZTM3NTgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDExIDEzOjE3OjQ1IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGNvbW1pdCA3M2E1MjNlNDY4Mjc3ZjZkZjJlOTg0ODkxMzEzYjhiZThiY2UxOTIxOgorICAgIEZpZGV4IGRlcmVmZXJlbmNpbmcga2V5LT5pbmZvIHdoZW4ga2V5IGlzIGtub3duIHRvIGJlIE5VTEwuCisKK2NvbW1pdCAzYjY4NjU2NjI5NmRkODdiYzQyYjdmMTE2OWRhYWNkYjNjNDVjYzU4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gT2N0IDE4IDA2OjI1OjU2IDIwMTAgKzAwMDAKKworICAgIFdpbjMyOiBidWlsZHMgYWdhaW4gd2l0aG91dCB3YXJuaW5ncyB3aXRoIE1TVkMgNi4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk0ODkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBmM2E3ZDFiMDk2MDlkYWQ2NDlmNThiYmRiNWI3ZTEwZDM5YjM5OGMxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gT2N0IDE3IDExOjA0OjA2IDIwMTAgKzAwMDAKKworICAgIEZvbGxvdy11cCBmb3IgcjE5NDc2OiBmaXhlZCBhIHR5cG8uCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5NDc4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgMmRlNzNiZDM2NWEzODFiOWMzNTNjYTUyMzA3NjllZWZiMWFjNzFlZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiAxMSAxMTo0Mjo0MiAyMDEyICswMTAwCisKKyAgICBsb2NhbC9wYXNzdGVzdDogUmVtb3ZlIGFuIGluY29ycmVjdCBQQVRIPSBzdGF0ZW1lbnQKKworY29tbWl0IDY5OTUxM2YxMjM4ZTBhZGNlMWYxY2VjOThlMGQxNDcyOTNmYzUwNDcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBPY3QgMTcgMDk6MjU6NTEgMjAxMCArMDAwMAorCisgICAgTkVUU05NUF9SRU1PVkVfQ09OU1QoKS1yZWxhdGVkIGNsZWFudXAuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5NDc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgNjM1OGRlZTcyZmIzNDdlMjYwMGEwYTdiZDIxZjIzMjcwZDNhMDBmNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiAxMSAxMDo1ODoxNSAyMDEyICswMTAwCisKKyAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5jOiBBZGQgYSBjb21tZW50CisKK2NvbW1pdCA1Mzk2YmZlMDMyYzhjYmM3M2M4ZmY1ZDRiMDg1ZWJhZGE5ZjU5ODQ2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDExIDEwOjMwOjE2IDIwMTIgKzAxMDAKKworICAgIFJlcGxhY2Ugc3RybmNweSgpL3N0cm5jYXQoKSBieSBzdHJsY3B5KCkvc3RybGNhdCgpCisKK2NvbW1pdCBmZWIzYWYyOGRjYWUyMjAxNWFlODY1YTJlNWRkOGM0MTZlOTk5MWQ4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDExIDEwOjAyOjA4IDIwMTIgKzAxMDAKKworICAgIFJlcGxhY2Ugc3RybmNweSgpL3N0cm5jYXQoKSBieSBzdHJsY3B5KCkvc3RybGNhdCgpCisKK2NvbW1pdCBiN2UxYWEyNTViYWU0YTM0NTNmOWVjYTY0NGE4NzY2MzQzNTFmMTFkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgTWFyIDIwIDE5OjM2OjI4IDIwMTAgKzAwMDAKKworICAgIENIQU5HRVM6IGxpYnNubXA6IGNoYW5nZWQgdGhlIHR5cGUgb2YgdGhlIGZvdXJ0aCBhcmd1bWVudCBvZiBuZXRzbm1wX3NldF9yb3dfY29sdW1uKCkgZnJvbSBjb25zdCBjaGFyKiB0byBjb25zdCB2b2lkKiBzdWNoIHRoYXQgbm8gY2FzdCBpcyBuZWNlc3Nhcnkgd2hlbiBwYXNzaW5nIGFub3RoZXIgZGF0YXR5cGUgdGhlbiBjaGFyKiBvciBjb25zdCBjaGFyKi4KKyAgICBDSEFOR0VTOiBXaW4zMjogY2hhbmdlZCBpbl9hZGRyX3QgZnJvbSB1X2ludCB0byB1X2xvbmcgc3VjaCB0aGF0IGl0IG1hdGNoZXMgdGhlIGRhdGF0eXBlIG9mIHNvY2thZGRyX2luOjpzaW5fYWRkci4KKyAgICBBbHNvLCBmaXhlZCBzZXZlcmFsIGNvbXBpbGVyIHdhcm5pbmdzIChtb3N0bHkgY2hhciAqIDw+IHVfY2hhciAqIG1pc21hdGNoZXMpIGFuZCByZW1vdmVkIHNvbWUgY2FzdHMuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTgzNDUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgCisgICAgQ29uZmxpY3RzOgorICAgIAlhZ2VudC9hZ2VudF9yZWdpc3RyeS5jCisgICAgCWFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYworICAgIAlhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jCisgICAgCWFwcHMvc25tcHRyYXBkLmMKKyAgICAJc25tcGxpYi9zbm1wSVB2NkJhc2VEb21haW4uYworICAgIAlzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmMKKyAgICAJc25tcGxpYi9zeXN0ZW0uYworCitjb21taXQgZjQ3YTM3NTI4NDlkYjA3NWU2ZjIwNTNiODU5NWI3Yjc5MmZiNjQ2MgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE9jdCAxNSAxMDo1NjowOSAyMDEwICswMDAwCisKKyAgICBDSEFOR0VTOiBXaW4zMjogYnVpbGRpbmc6IEJ1aWxkcyBub3cgY29ycmVjdGx5IHdpdGggYSA2NC1iaXQgY29tcGlsZXIuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk0NTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAwMmI2MDU2ZGY5NWRhOGI2NzMwMzRlMzljMmM3YzM4NmVkMGYzNjljCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgSmFuIDEwIDExOjQ0OjUzIDIwMTIgKzAxMDAKKworICAgIEZpeCBhIGNvbXBpbGVyIHdhcm5pbmcgYWJvdXQgY2FzdGluZyBhd2F5IGNvbnN0CisKK2NvbW1pdCBhMTk4NjU4MzJmYzc3ZjRjMDQ4MTQ0ZDkxYTQzMWIxZTk0ZDMyOWYyCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE9jdCAxNCAyMzoxMjowNSAyMDA5ICswMDAwCisKKyAgICBDSEFOR0VTOiBhcHBzLCBzbm1wbGliOiBQQVRDSDogMjgzNTU3NzogaWRlbnRpZmllZCBieSAiQmFydCBWYW4gQXNzY2hlIjogUmVwbGFjZSBTTk1QX1pFUk8gb2YgYXJyYXlzIHdpdGggYSBtZW1zZXQuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTc3OTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA2N2EzZTJlY2NiOTVmOWM5ZDA4MDllZmNiZGRjZDg2NmVlMzA2MmQ1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDYgMTQ6Mjc6MTUgMjAxMCArMDAwMAorCisgICAgRml4ZWQgYSBjb21waWxlciB3YXJuaW5nIGFib3V0IGRpc2NhcmRpbmcgdGhlIGNvbnN0IHF1YWxpZmllci4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxNzk3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDNkY2RlMmU4YTU5NWE1MjdmMDYxNDJjM2I4NTJkZTg0MzNhMWNmMjgKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gSmFuIDI0IDE0OjI3OjU1IDIwMTAgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFByZXZlbnQgZ2NjIHBlZC13YXJuaW5nIGZvciBORVRTTk1QX1JFTU9WRV9DT05TVAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE4MDUyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYzJlMTUyNWE4NWJkYTUyOTlhM2I5ZjI0MTYxNGY3ZTY1MDlhZWViYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA2IDEzOjM1OjExIDIwMTAgKzAwMDAKKworICAgIEJhY2twb3J0IGNvbW1pdCAyOTVmNDczYzgzNTQ2MjIxYjJhNzFkODE1YzYxZTMzYTY3Zjk4YWUzOiByZWZpbmUgTkVUU05NUF9SRU1PVkVfQ09OU1QoKSBpbXBsZW1lbnRhdGlvbi4KKworY29tbWl0IGNiNDIzYjBhZTllZDAwNTlhYTEwMGRjNGUyZmQ5M2FkMWI5N2ZhZjgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNiAxMTo1Nzo1MSAyMDEwICswMDAwCisKKyAgICBCYWNrcG9ydCBjb21taXQgZTJmYjA5ZTAwOTNlMmY2NDhmZTI2MzhkYTJmM2FmMThmZGIzMmJmMCAtIGludHJvZHVjZSBORVRTTk1QX1JFTU9WRV9DT05TVCgpLgorICAgIAorICAgIENvbmZsaWN0czoKKyAgICAJYWdlbnQvc25tcF9wZXJsLmMKKyAgICAJc25tcGxpYi9zbm1wX3NlcnZpY2UuYworCitjb21taXQgYWZjMzk2YWIxNjE4YTg1OTVhMjUxOWZiYzI1ZjdhNDk4ZTE3NDQxMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiAxMSAwODo0OTozNCAyMDEyICswMTAwCisKKyAgICBVbmJyZWFrIG5ldHNubXBfbWt0ZW1wKCkgYW5kIG1ha2VfdGVtcCgpLgorICAgIAorICAgIFRoZXNlIHdlcmUgYnJva2VuIGJ5IGNvbW1pdCBiYjhmY2JiODc0OTk4MDAwZjk0NWYwNThkMWFhNmZlMTRlOTI1ODk5LgorICAgIEFsc28gcmVwbGFjZSBhIHN0cm5jcHkoKSBjYWxsIGJ5IGEgY2FsbCB0byBzdHJsY3B5KCkgYW5kIHJlcGxhY2UgdGhlCisgICAgbWFrZV90ZW1wZmlsZSgpIGltcGxlbWVudGF0aW9uIGJ5IGEgY2FsbCB0byBuZXRzbm1wX21rdGVtcCgpLgorCitjb21taXQgMjEwMTg1YzE1ZDBkNjVmMGVhOThiNWUzYzJlMDc3NmY2MjIyZDE3MAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiAxMSAwODoyNzo0MyAyMDEyICswMTAwCisKKyAgICBGaXggYSBjcmFzaCBkdXJpbmcgc3RhcnR1cCBvZiBzbm1wZCBpbnRyb2R1Y2VkIGJ5IGNvbW1pdCA4ODUwNjE2ODdkOWNhYTM4NDcwOTc5NjY3ZDdkOGFkNjU2M2NlZGFkLgorICAgIAorICAgIEFsc28sIG1ha2Ugc3VyZSB0aGVyZSBpcyBvbmx5IGEgc2luZ2xlIGNvcHkgb2YgdGhlIGNsZWFudXAgY29kZSBpbiBmdW5jdGlvbgorICAgIG1rZGlyaGllcigpLgorCitjb21taXQgOGJiNGU4NmFiY2Y5OGZmMjg3NDhhZjBhZjg5Yzk4ZTY0ZDVjZDk2MQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgV2VkIEphbiAxMSAwNzo0NzoxMiAyMDEyICswMTAwCisKKyAgICBSZWR1Y2UgdGhlIHNjb3BlIG9mIHRoZSBvbGRtYXNrIHZhcmlhYmxlLgorCitjb21taXQgNjY4MDE0N2IxMzhlYzExNGY4MWM1ZDEyOGFjOTM1MGM4NDUwZDA4MQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEphbiAxMCAxODo0NDozMSAyMDEyICswMDAwCisKKyAgICBNYWtlIHRlc3QgVDAxNWludDY0X2NsaWIgcGFzcyBvbiA2NC1iaXQgc3lzdGVtcworCitjb21taXQgM2FhZDE1YWU1NjBhYzg1N2U3M2M5MDc2NGU5MDNlN2NhMDJiMzI5NQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTU6NDA6NTkgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYnVmZmVyIG92ZXJmbG93IGZvciBsYXJnZSBPSUQgbmFtZXMKKworY29tbWl0IGZiYTE4OGVlODIwMTBiMmYyZDhjYTJlNDI2YmE2NTQ0OTlhYjNkMGEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE1OjMxOjMzIDIwMTIgKzAxMDAKKworICAgIGZpeGVkIGJ1ZmZlciBvdmVyZmxvdyBpbiBfX2NvbmNhdF9vaWRfc3RyCisKK2NvbW1pdCAyMWQyNWQ4NmI4ZTQ5MDRkNzk4ZGM4Yzk2ZGFkZTllNTA0ODQ1N2E4CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNToyNjowNyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgd2hlbiBwYXJzaW5nIHBvcnQgbnVtYmVycy4KKworY29tbWl0IGQzNjkzMTg0MWIyZmMyY2ViYzYzNjRiMjk0OTEyOWEwYWQ0MmFkMWQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE1OjA1OjUxIDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGEgYnVmZmVyIG92ZXJmbG93IHdoZW4gbGFyZ2UgU3VtRmlsZSBpcyB1c2VkLgorCitjb21taXQgMGVmZGQwMjJkYTA5YWYxYjVlMTYxNzFmYTdhMmI1MjNjNWQ2ZWM1OQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTU6MDE6NTMgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYnVmZmVyIG92ZXJmbG93IHdoZW4gdG9vIGJpZyB0ZW1wIGZpbGUgcGF0dGVybiBpcyB1c2VkLgorCitjb21taXQgNTYwYmM2YzA5Yjc1MTU1NmVmZDZiNGM0NDk1NzUxYjEwOWE5M2Y5MgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTQ6NTk6MjQgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYnVmZmVyIG92ZXJmbG93LCBqdXN0IHRvIGJlIHN1cmUuCisKK2NvbW1pdCA4MjkxZDdjNWI5MmEzMWRkNGY1ODJiNDk3ZDRiMmEwODUzMzY3YTU2CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNDo1NToxNiAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cuCisKK2NvbW1pdCA4OGUxZjM0ZGU3MzAwNTc1ZmE2ZGFiODU3ZWNkZGIyNDJhODdkZTgwCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNDo0ODo1NSAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgd2hlbiB0b28gbG9uZyBpbnRlcmZhY2UgbmFtZXMgYXJlIHVzZWQuCisKK2NvbW1pdCBiZTEzNzVhOTkyNmViZTBjZDViNzhhNDA0NWMzYmQxMWM4MzY2NGIxCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNDo0Njo0OSAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgd2hlbiBhIHNlbnNvciBuYW1lIGlzIHRvbyBsb25nLgorCitjb21taXQgMWNiMjQ2MjUzNzIwNjJiMTRjNzFkN2RkNTFlMjBmZWY3NzNlMjc0MworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTQ6NDE6MDAgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYnVmZmVyIG92ZXJmbG93IHdoZW4gYSBDUFUgaGFzIHRvbyBsb25nIG5hbWUuCisKK2NvbW1pdCA4NGM4MDdlZTAzMjUxZTU0ODU2ZTgzZDYyZDA2ZWEwOGI4ZGY1MjdhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNDozNjo1MCAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgd2hlbiB0b28gbG9uZyBpbnRlcmZhY2UgbmFtZXMgYXJlIHVzZWQuCisKK2NvbW1pdCBjMzEwZTM5MGI1ZGQwNWYyNGJlN2ViMTkwNGM3NGU0MTI1OWM5M2RiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNDoyNDo1NCAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgd2hlbiB0b28gYmlnIHRlbXAgZmlsZSBwYXR0ZXJuIGlzIHVzZWQuCisKK2NvbW1pdCA0NjAwZDExNDM0ZTgzYjg2NTNjZjlmODEzYTNkOGI2MzA0NTViNDJkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNDoxNzowOCAyMDEyICswMTAwCisKKyAgICBGaXhlZCBwbGF1c2libGUgc3RyaW5nIG92ZXJmbG93IGJlZm9yZSBwYXJzaW5nIGNvbW1hbmQgbGluZSBvcHRpb25zLgorCitjb21taXQgODg1MDYxNjg3ZDljYWEzODQ3MDk3OTY2N2Q3ZDhhZDY1NjNjZWRhZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTQ6MTE6MDIgMjAxMiArMDEwMAorCisgICAgR2V0IHJpZCBvZiAoaW5zZWN1cmUpIFNOTVBfTUFYUEFUSCBpbiBta2RpcmhpZXIoKQorCitjb21taXQgODAxNjg5MGE0NDVmNmE3ZTJhODczYTA0ODczZDRlMjdiNmVlNjRlMworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTM6NDg6MzQgMjAxMiArMDEwMAorCisgICAgRml4ZWQgd3JvbmcgaW50ZWdlciBzaXplIG9uIDY0IGJpdCBwbGF0Zm9ybS4KKworY29tbWl0IGJiOGZjYmI4NzQ5OTgwMDBmOTQ1ZjA1OGQxYWE2ZmUxNGU5MjU4OTkKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDEzOjMxOjM2IDIwMTIgKzAxMDAKKworICAgIFNlY3VyZSBta3N0ZW1wKCkgd2l0aCB1bWFzaygpIC0gb24gc29tZSBpbXBsZW1lbnRhdGlvbnMgaXQgZG9lcyBub3Qgc2V0IDA2MDAgcGVybWlzc2lvbnMgYXV0b21hdGljYWxseS4KKworY29tbWl0IDIwMjUyM2NhNzA0YmQ3MjJkYzFhYzBlMWU2YjBlNGI0ZTU0MjQ0OTUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDEzOjExOjU3IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGRlcmVmZXJlbmNpbmcgJ2MnIGJlZm9yZSBOVUxMIGNoZWNrLgorCitjb21taXQgNzNhNTIzZTQ2ODI3N2Y2ZGYyZTk4NDg5MTMxM2I4YmU4YmNlMTkyMQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTM6MDg6MjQgMjAxMiArMDEwMAorCisgICAgRml4ZWQgZGVyZWZlcmVuY2luZyBrZXktPmluZm8gd2hlbiBrZXkgaXMga25vd24gdG8gYmUgTlVMTC4KKworY29tbWl0IDJmNGU2YWNkNzE0MTgzZjAxNWI3NjM2NTdmOGYwODQ1OTMzNTdlMjYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTA6Mzg6MTYgMjAxMiArMDEwMAorCisgICAgLmdpdGlnbm9yZTogSWdub3JlIHBlcmwvKi55bWwgZmlsZXMKKworY29tbWl0IGMzNjVkODBjMTZjMmQxN2IxNjAwMTFlOGMxZjljYjk1ODk1NGU5ZGIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMDg6MzQ6MTYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcHRyYXBkOiBEbyBub3QgaW52b2tlIHNodXRkb3duX3BlcmwoKSBmcm9tIGluc2lkZSB0aGUgU0lHVEVSTSBoYW5kbGVyIHNpbmNlIHRoYXQgZmFpbHMgaWYgU0lHVEVSTSBpcyByZWNlaXZlZCB3aGlsZSBhIFBlcmwgaGFuZGxlciBpcyBhY3RpdmUuIEJhc2VkIG9uIGEgcGF0Y2ggcG9zdGVkIGJ5IEpvZWwgQXZuaSA8amF2bmlAYXJ1YmFuZXR3b3Jrcy5jb20+CisKK2NvbW1pdCBkMDU5ZmI4NzhiMTQzNjU5OTk1M2NlYTVhMDc3NDk5ZGRjZGNiY2I1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMTc6MDM6NTUgMjAxMiArMDAwMAorCisgICAgQ0hBTkdFUzogQlVHOiAzNDQwNzUyOiBJRi1NSUI6IFJlcG9ydCBpbnRlcmZhY2Ugc3BlZWQgY29ycmVjdGx5IGZvciBFdGhlcm5ldCBpbnRlcmZhY2VzIGlmIG90aGVyIHRoYW4gMTAgTWJwcywgMTAwIE1icHMsIDEgR2JwcywgMi41IEdicHMgb3IgMTAgR2Jwcy4gQWRkIHN1cHBvcnQgZm9yIE5JQ3MgZmFzdGVyIHRoYW4gNjUgR2Jwcy4KKworY29tbWl0IGMwOTkwM2E0MmU5ZDk3MzMxZmQ5ZTQ4ZWU4MzFhODVhZmRmOWM3MGEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBKYW4gOSAxMzoyNjoxNyAyMDEyICswMTAwCisKKyAgICBEb3h5Z2VuLXN0eWxlIGRvY3VtZW50YXRpb24gZml4ZXMKKworY29tbWl0IGUzMjVlY2JmY2U3N2YwMGFjNWNmNmZiZDk1N2Y5NTQ5NWY2MWM1OWIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBKYW4gOSAxMzoyNToxMCAyMDEyICswMTAwCisKKyAgICBTdXBwcmVzcyB1bmludGVyZXN0aW5nIERveHlnZW4gd2FybmluZ3MKKworY29tbWl0IGJlOTE2MWQzYTU4OThlODYzNzY3ZjkyNjYxMzQ4NjEyNmMyY2JmNjcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAxMjozNTozOSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBTaW1wbGlmeSBpbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgbWFuaXB1bGF0aW5nIDY0LWJpdCBudW1iZXJzLgorCitjb21taXQgODZlNGMyYmUwODUyYTBhMTNiMDYwMzA3NTcyMGIzMjY0ZWM3MGRkZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDEyOjI5OjExIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IE1ha2UgaXQgZXhwbGljaXQgdGhhdCBNQVhfU1VCSUQgaXMgYW4gdW5zaWduZWQgY29uc3RhbnQKKworY29tbWl0IDM3ZTI3MmQ4ZjdiNzE4MGJhMTQwZmEzODZhNWZmMDU4OTY4YTA4YTIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAxODoyMTo0OCAyMDEyICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogSUYtTUlCOjppZlR5cGU6IFJlcG9ydCB0eXBlICJpbmZpbmliYW5kICgxOTkpIiBmb3IgSW5maW5pQmFuZCBpbnRlcmZhY2VzIGluc3RlYWQgb2YgdHlwZSAib3RoZXIgKDEpIi4KKworY29tbWl0IDI2OTkzMmZhMzJjN2NkNDc5NTc0ODk2OThlMDliZWUzMWY2M2I3YWYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAxNDozNDo0MiAyMDEyICswMTAwCisKKyAgICBGaXggYW4gTVNWQyBjb21waWxlciB3YXJuaW5nCisKK2NvbW1pdCAwZDFjMjFmOTk5MWQxMzA5ZDA1N2UzZTQwNTZkNTQ3ZGY3ZDQwZWNmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMTY6MDY6MzEgMjAxMiArMDEwMAorCisgICAgTWFrZSBkZWNsYXJhdGlvbiBhbmQgZGVmaW5pdGlvbiBvZiBzdHJsY2F0KCkgY29uc2lzdGVudC4KKworY29tbWl0IDBjM2Q0ZGJiMGE5Y2Y1YjM1OWY3MGIyZjE5OTE1NDk1NTU0Zjg0MGYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAxNToyMzoxNiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBXaW4zMjogc25tcGQ6IFJlbW92ZSBkbG1vZAorCitjb21taXQgODkzZWNjOTdiNTg3NjYxMDQ1YmVjYmUwOWEzMjBjMWJjYmM3MWM3YworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDE0OjM2OjU5IDIwMTIgKzAxMDAKKworICAgIEFkZCBzdHJsY2F0KCkgdG8gdGhlIE1TVkMgYnVpbGQgaW5mcmFzdHJ1Y3R1cmUuCisKK2NvbW1pdCAzZDEyNjQyMmU2MjU3MDJiOWQzZmEwNjc2YTk3ZWM1Y2IyMGQ5ZDEwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMTU6MDE6MDYgMjAxMiArMDEwMAorCisgICAgTWFrZSB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCBjb25zaXN0ZW50IHdpdGggaXRzIC5pbiBmaWxlCisKK2NvbW1pdCBhZjUzYjc2YzJmZmE3NTFlMzk1OGQwZmM1ZDgyNzlmNzhjMmMxYzI2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMTQ6NDM6NTUgMjAxMiArMDEwMAorCisgICAgU2tpcCBUMDY2cGFzc19zaW1wbGUgYW5kIFQwNjdwYXNzcGVyc2lzdF9zaW1wbGUgb24gTWluR1cKKworY29tbWl0IDM1YTkyZTY5M2QxMzNhNWIxMWU5ZTliNTk5ZGJmNDdlZGVmNDkzM2IKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAwODoxNjozNiAyMDEyICswMTAwCisKKyAgICBSZW1vdmUgc25tcGxpYi9zbm1wRFRMU1VEUERvbWFpbi5jIGFnYWluLCB3aGljaCB3YXMgYWRkZWQgYWNjaWRlbnRhbGx5IHdoaWxlIHJlc29sdmluZyBtZXJnZSBjb25mbGljdHMgKGNvbW1pdCAxZDc4ZjdkNWI1OGFlZDJiNTJjNGQzODZhN2JhODBhNDQ3MTFiYWNhKQorCitjb21taXQgYTliMDczZWEzYjZjZWRmNzEzZTMwNWU3YjE1ZjI4YWU1N2JmZGYxYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiA1IDE3OjQ3OjExIDIwMTIgKzAwMDAKKworICAgIEZpeCA2NC1iaXQgY29tcGlsZXIgd2FybmluZ3MKKworY29tbWl0IDdlODkwZGFkOTVmNTY2MDY5ZWUyODAyMTVhNGZlYTNmMGUyZTM5ODAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBKYW4gNSAxNjozODo1MCAyMDEyICswMTAwCisKKyAgICBBdm9pZCBhIFNJR1NFR1YgaWYgY3AgPT0gTlVMTC4gVGhpcyBpcyBhIGZvbGxvdy11cCBmb3IgY29tbWl0IDA4OWJjYjM2MGFhMjY3OTBhZDJhOGNlZGRmNTgzYjdiYTVkZGZkNDguCisKK2NvbW1pdCAxZjYyMDBjZmUxYjBiMjdlYmIwOTNhMTYwNmI1OTJmOWU5Njg0YmU4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSmFuIDUgMTU6NTM6MzQgMjAxMiArMDEwMAorCisgICAgQ29udmVydCBzdHJuY3B5KCkgY2FsbHMgaW50cm9kdWNlZCBpbiB2NS42CisKK2NvbW1pdCBjMzEyNmIxNDM5MjFmYWJlYWM0NDIxNjZlY2E1YjViNzQyZmQ0MmMwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSmFuIDUgMTU6MDI6MzkgMjAxMiArMDEwMAorCisgICAgUmVwbGFjZSBtb3N0IHN0cm5jcHkoKSBjYWxscyBpbnRyb2R1Y2VkIGluIHY1LjUKKworY29tbWl0IGIyNGVlN2M5MDk2NTdkYjQzYmQ4YzVkOGMwMTA1NWNhMDg4M2M5Y2YKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAwODo0MDozOSAyMDEyICswMTAwCisKKyAgICBFbGltaW5hdGUgbW9zdCBzdHJuY3B5KCkgYW5kIHN0cm5jYXQoKSBjYWxscworICAgIAorICAgIFVzaW5nIHN0cm5jcHkoKSBhbmQgc3RybmNhdCgpIGlzIGVycm9yIHByb25lIC0tIHNlZSBhbHNvCisgICAgaHR0cDovL3d3dy5ncmF0aXNvZnQudXMvdG9kZC9wYXBlcnMvc3RybGNweS5odG1sLiBIZW5jZSByZXBsYWNlCisgICAgYWxsIGludm9jYXRpb25zIG9mIHN0cm5jcHkoKSBhbmQgc3RybmNhdCgpLiBSZXBsYWNlCisgICAgc3RybmNweShkc3QsIHNyYywgbikgY2FsbHMgYnk6CisgICAgKiBzdHJsY3B5KGRzdCwgc3JjLCBuKSBpZiB0aGUgZ29hbCB3YXMgdG8gYXZvaWQgb3V0cHV0IGJ1ZmZlciBvdmVyZmxvdy4KKyAgICAqIHNwcmludGYoZHN0LCAiJS4qcyIsIG4sIHNyYykgdG8gY29weSBhIHByZWZpeCBvZiBzcmMgdG8gZHN0IG9yIGlmIHNyYyBpcworICAgICAgICBub3QgJ1wwJy10ZXJtaW5hdGVkLgorICAgICogbWVtY3B5KGRzdCwgc3JjLCBuKSBpZiBzdHJsZW4oc3JjKSA+PSBuIGFuZCBuIDwgc2l6ZSBvZiBkc3QuCisgICAgKiBzdHJjcHkoZHN0LCBzcmMpIGlmIG4gPiBzdHJsZW4oc3JjKSBhbmQgbiA8IHNpemUgb2YgZHN0LgorCitjb21taXQgNmQ5NWJjNDE0OTQ3MjkzMTAwNTQ3NWMzMGE1NDFmZWQ1NTM0ZGEzOQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiA1IDExOjE5OjE2IDIwMTIgKzAxMDAKKworICAgIEZpeCB3YXJuaW5ncyB0cmlnZ2VyZWQgZHVyaW5nIGNvbXBpbGF0aW9uIG9mIHRoZSBQZXJsIHhzIHNvdXJjZSBmaWxlcworCitjb21taXQgYmFkMDYwMGY2ZWM5NDRlZjg0NTVlMzI3Y2U3ODRiOWIwN2QyNDdjOQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiA1IDEwOjAwOjEzIDIwMTIgKzAxMDAKKworICAgIEFkZCBjb25maWd1cmUgdGVzdCBmb3Igc29ja2FkZHJfdW4uc3VuX3BhdGggc3VjaCB0aGF0IHRoZSBjb20yc2VjIHRlc3QgaXMgcnVuCisKK2NvbW1pdCA5MmEzMmFjNDg2NmE1ZWRjN2YzNDdkMzc5NDJiZjAyOGRlMDI3NjJmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSmFuIDUgMTA6MDA6MjkgMjAxMiArMDEwMAorCisgICAgR2V0IHJpZCBvZiBhIGNvbXBpbGVyIHdhcm5pbmcKKworY29tbWl0IDgzZTRjMGUzMDRmNjE3Y2NhYzY2MTBlZGQ3NGQxNzA2Nzk3YmJmNTIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBKYW4gNSAwOToxNTozNyAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBBZGQgYSB0ZXN0IGZvciBzZV9zdG9yZV9saXN0KCkKKworY29tbWl0IDRmYWU1ODUyMTAzZWMzODkzYWQ0ODhiYzBkOTA1Y2E2OTE0NTk1ZWYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBKYW4gNSAwOToxNzoxNSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBTaW1wbGlmeSB0aGUgc2Vfc3RvcmVfZW51bV9saXN0KCkgaW1wbGVtZW50YXRpb24KKworY29tbWl0IGIzMjIyYmIyNzVmMmYyMzQ2ZTBmZDA0NzhhZmEyZWZiNjAwNzczZTUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBKYW4gNSAwOToxNjo0NSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBEZWNsYXJlICJ0eXBlIiBhcmd1bWVudCBvZiBzZV9zdG9yZV9saXN0KCkgLyBzZV9zdG9yZV9zbGlzdCgpIC8gc2Vfc3RvcmVfZW51bV9saXN0KCkgY29uc3QKKworY29tbWl0IDAyMmY4NDBmYmZjYjBlMjZiMDhmMGU1NTcyODIzMWY2MTE0OTU4MDMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAxOTo1NTo1NiAyMDEyICswMDAwCisKKyAgICBBdm9pZCB0aGF0IFZhbGdyaW5kIGNvbXBsYWlucyBhYm91dCBzZW5kaW5nIFVEUCBkYXRhCisKK2NvbW1pdCA2NzJhODA5YzIyOGU5NTUwYjk5Yjg5MTBiZTc1ZDBiMTYxOTg1NDAyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDQgMTc6MzM6MDkgMjAxMiArMDAwMAorCisgICAgRml4IGEgNjQtYml0IGNvbXBpbGVyIHdhcm5pbmcKKworY29tbWl0IDI0ZmYyNjBhZDg5Y2UyYWEzNjFhNTVjN2M3MmU5MTYwMzFkZWZlMzUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAxNzoxMToyNCAyMDEyICswMTAwCisKKyAgICBDaGFuZ2UgdGhlIHR5cGUgb2YgdGhlIHNlY29uZCBhcmd1bWVudCBvZiBzbm1wX3NldF92YXJfdmFsdWUoKSBhbmQgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKCkgZnJvbSB1X2NoYXIqIHRvIHZvaWQqLCBsaWtlIG9uIG1vcmUgcmVjZW50IGJyYW5jaGVzCisKK2NvbW1pdCBjNmNhNzM3ZmI0NmY5MGE0YmRhNWQ0MzczNGFhYzM0ZTgzN2EwNWY0CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgTWFyIDEzIDE5OjA3OjM3IDIwMTAgKzAwMDAKKworICAgIEJhY2twb3J0IGNvbW1pdCBmNTA0Y2UyZDc0YTRiYzg4ZjY4Y2M5NTE1ZmE3MDUzMzczY2IxNWI1LgorICAgIChGaXhlZCBtb3N0IGNvbXBpbGVyIHdhcm5pbmdzIHRyaWdnZXJlZCBieSB0aGUgc291cmNlIGNvZGUgaW4gdGhlIHBlcmwgc3ViZGlyZWN0b3J5LiBOb3RlOiB0aGVzZSBjaGFuZ2VzIG1heSBjb250YWluIHNvbWUgcmVhbCBidWcgZml4ZXMuKQorICAgIAorICAgIENvbmZsaWN0czoKKyAgICAKKyAgICAJcGVybC9BU04vQVNOLnhzCisgICAgCXBlcmwvT0lEL09JRC54cworICAgIAlwZXJsL1NOTVAvU05NUC54cworICAgIAlwZXJsL2FnZW50L2FnZW50LnhzCisKK2NvbW1pdCBkMjEyZGM5ODRlYzM0ZTRkMjMwNjI1ZTQ2ZTU4YjBjNjI4YTUwZGY1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDQgMTY6NDY6NDkgMjAxMiArMDEwMAorCisgICAgU05NUC54cyBjb21waWxlciB3YXJuaW5nIGZpeGVzCisKK2NvbW1pdCBiYWNlZWJiMTBkOGNhZjVkYjYzY2MzNjkzNWZlZDY1ZWU5MzEwMjlkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDQgMTY6MjI6NDQgMjAxMiArMDEwMAorCisgICAgQWRkIGRlY2xhcmF0aW9uIGZvciBzaHV0ZG93bl9zbm1wTm90aWZ5VGFibGUoKQorCitjb21taXQgZjdmOTY2YWJkNmQyODQ5YjEzMzEyNTJhZmU1YzQ3M2U1YzQwYjMyZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDE0OjI0OjMzIDIwMTIgKzAxMDAKKworICAgIEZpeCBmb3JtYXQgc3BlY2lmaWNhdGlvbiBtaXNtYXRjaGVzLgorCitjb21taXQgMzAzYzAxNWJjZmU5YWYwYjE1NGU5ODgxYzdiNGY0NDllMDhmMzBiYgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE1heSA2IDIyOjA2OjIzIDIwMDkgKzAwMDAKKworICAgIEJhY2twb3J0IGNvbW1pdCBkM2ViMmI1Y2VkMjJhODQ4MDA1M2NlNDNhY2Y5NzM5NzI5MDU1NDA0CisgICAgKFNwcmlua2xlIHNvbWUgY29uc3QtbmVzcyB3aGVyZSByZWxldmFudCAvIGZpeCBmb3JtYXQgc3RyaW5nIG1pc21hdGNoZXMsCisgICAgTmllbHMgQmFnZ2VzZW4sIE1heSAyMDA5KQorICAgIAorICAgIENvbmZsaWN0czoKKyAgICAKKyAgICAJYWdlbnQvYWdlbnRfc3lzT1JUYWJsZS5jCisgICAgCWFnZW50L2hlbHBlcnMvaW5zdGFuY2UuYworICAgIAlhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckNvbmYuYworICAgIAlpbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKyAgICAJaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmgKKworY29tbWl0IGQ5NWI0MDQwNjkxNmJkYTViNDhiNWE2MTMxYmVjMjdiODY2YjBhNzkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBNYXkgNiAyMTo1OToyMCAyMDA5ICswMDAwCisKKyAgICBCYWNrcG9ydCBhMmE3MzE2YzMxMGYwZmNjMzcyODY3M2ZhMDQ3MDUxYzIzYjcxOTYwCisgICAgKFRyaXZpYWwgd2FybmluZyBmaXhlcywgTmllbHMgQmFnZ2VzZW4sIE1heSAyMDA5KS4KKyAgICAKKyAgICBDb25mbGljdHM6CisgICAgCisgICAgCWFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbGludXguYworICAgIAlhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jCisgICAgCWFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYworICAgIAlhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfbGludXguYworICAgIAlhZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jCisgICAgCWFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvZ21hdGNoLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuYworICAgIAlhZ2VudC9zbm1wZC5jCisgICAgCXNubXBsaWIvY29udGFpbmVyX2xpc3Rfc3NsbC5jCisKK2NvbW1pdCBkODZjNDdmMDAzZmRjMTkyYmNlN2I0NmFjNGYwNmIwOWUzODdjMTJiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA0IDEzOjI5OjA4IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGEgdHlwbworCitjb21taXQgYmVlNGQ3OWNmNGViN2UwYTQ1Mzk3ZjU5YjUyOThkYTYzM2E4ZTFiYQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNCAxMzoxNDo1NyAyMDEyICswMTAwCisKKyAgICBGaXhlZCByZWFkaW5nIHBhc3QgZW5kIG9mIGJ1ZmZlci4KKworY29tbWl0IDNkYzBlMDBhMmZkOGUzNGZlMWFlMzNlY2FiZjM2ZTE0NjQ2MGEzMWYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDQgMTI6NDA6MDcgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYnVmZmVyIG92ZXJmbG93IHdoZW4gbGFyZ2UgJ3Rva2VuJyBpcyB1c2VkLgorCitjb21taXQgYjNjNDk4MjU0MmUwYWIxNTFmYjM4ODQ3NTRjZGZiY2I0NzJkYTUyZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNCAxMjoyODo1MiAyMDEyICswMTAwCisKKyAgICBGaXhlZCBvZmYtYnktb25lIG1lbXNldC4KKworY29tbWl0IDBmNTM2OTUwNDRkZDNmMGMzNTA3NzUzZTNmOGMyOWQ5N2U5Njg3MmQKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CiBEYXRlOiAgIFdlZCBBdWcgMyAyMTozODoyNiAyMDExICswMjAwCiAKICAgICBDSEFOR0VTOiBzbm1wbGliLCBzbm1wZCwgcGVybDogRWxpbWluYXRlIGRlYWQgdmFyaWFibGVzCi0KLWNvbW1pdCA3OTRmOWE2OWQ3ZWI2NDIyNjgyMDBiMGE0YjE5OTE1MWRlZjY2ZWQwCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgQXVnIDMgMTQ6MzY6MjUgMjAxMSAtMDcwMAotCi0gICAgbWFudWFsIHByZS1tZXJnZQotCi1jb21taXQgNzMxODdjZTgzNDFlZTMwYjk1MjA0ZDIyYjY5YmNlNTE1MDEyYzBjNQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEF1ZyAzIDExOjA2OjIzIDIwMTEgLTA3MDAKLQotICAgIGFkZGVkIGEgY29tbWVudAotCi1jb21taXQgNDM4YzIxMDg3NmRiZjdkMWY3N2NiMTRkMjJmOGVjOGVhNGYwZTc4ZAotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEF1ZyAzIDExOjAwOjMxIDIwMTEgLTA3MDAKLQotICAgIGF0IGVuZCBvZiBuc3JvbGx1cCBtZW50aW9uIHRoYXQgbm93IHdvdWxkIGJlIGEgZ29vZCB0aW1lIHRvIHJ1biBuc3N5bmMKLQotY29tbWl0IDM5YzJlMjUzYTJhYTFkZTEyOGM3ODUwNWM5MDljYzhhZTU0ZDBlMTYKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBBdWcgMyAxMDo1NjoxNCAyMDExIC0wNzAwCi0KLSAgICBhIG5ldyBuc3N5bmMoKSBmdW5jdGlvbiBmb3IgcHVzaC9wdWxsaW5nIGFjdGl2ZSBicmFuY2hlcwotCi1jb21taXQgZDhiMjA1MmEwMzU5YWQ5ZDFhNjhkOGQ1ODdiYzZiZTE1NjE1OGQyMAotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEF1ZyAzIDExOjAwOjMxIDIwMTEgLTA3MDAKLQotICAgIGF0IGVuZCBvZiBuc3JvbGx1cCBtZW50aW9uIHRoYXQgbm93IHdvdWxkIGJlIGEgZ29vZCB0aW1lIHRvIHJ1biBuc3N5bmMKLQotY29tbWl0IDRlZWE5ZWUzOGYwNmUwMDBhOTVkYzIwOWQwYTcxY2U2MGRhNDk0YjkKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBBdWcgMyAxMDo1NjoxNCAyMDExIC0wNzAwCi0KLSAgICBhIG5ldyBuc3N5bmMoKSBmdW5jdGlvbiBmb3IgcHVzaC9wdWxsaW5nIGFjdGl2ZSBicmFuY2hlcwotCi1jb21taXQgMjg0ZjVmYjc5ZTA1NmEyNzJmNzNiOTA5MzdkN2JmMDU3YzJhZjAyMQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEF1ZyAzIDExOjA2OjIzIDIwMTEgLTA3MDAKLQotICAgIGFkZGVkIGEgY29tbWVudAotCi1jb21taXQgOGMwNDMyYTc0ZmVkZjhhMTM4NWM4YWQwZmYxZmI0MjlhMjhlYWI5OQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEF1ZyAzIDExOjAwOjMxIDIwMTEgLTA3MDAKLQotICAgIGF0IGVuZCBvZiBuc3JvbGx1cCBtZW50aW9uIHRoYXQgbm93IHdvdWxkIGJlIGEgZ29vZCB0aW1lIHRvIHJ1biBuc3N5bmMKLQotY29tbWl0IGNhM2FkM2EyOGY4MWY1OWRmZmEzZGJiODA5YTc3MDE0NzI0MWUzZTUKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBBdWcgMyAxMDo1NjoxNCAyMDExIC0wNzAwCi0KLSAgICBhIG5ldyBuc3N5bmMoKSBmdW5jdGlvbiBmb3IgcHVzaC9wdWxsaW5nIGFjdGl2ZSBicmFuY2hlcwotCi1jb21taXQgNDlmNWY3YWY2NjU3ZTE2MWQ5NzEyZmMxZjYyYmUxODdhYmQ2YTE5NAotQXV0aG9yOiBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgQXVnIDMgMTA6Mjg6MTUgMjAxMSAtMDcwMAotCi0gICAgUmVlbmFibGUgSVAtTUlCOjppcERlZmF1bHRSb3V0ZXJUYWJsZQogICAgIAotICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotCi1jb21taXQgYjYxYWEwOTA2YWQ2ZDBjZWQ1ZWYzODY4YzI2ZGI1MzZhMjc2OTg3OQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEF1ZyAzIDEwOjIzOjAwIDIwMTEgLTA3MDAKLQotICAgIEEgbmV3IGZ1bmN0aW9uOiBuc3NmcGF0Y2hhcHBseSB0aGF0IGF1dG8tcHVsbHMgZ2l0IGNvbW1hbmQgbGluZSBpbmZvIGZyb20gU0YKLQotY29tbWl0IDg2OGNkZmNiNmVjNDIyMGJjZGQ5YTBkZWQ0Yjg0ZWI0ZmNlZWI1M2EKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBBdWcgMiAxNDo0Mzo1MiAyMDExIC0wNzAwCi0KLSAgICBhZGRlZCB2YXJpYWJsZXMgbmFtZXMgdG8gdGhlIGdlbmVyYXRlZCBlcnJvciBtZXNzYWdlcy4KLQotY29tbWl0IGFmYTk3MzI1MjFmMWFlNmQ0ZTBjOWE5MTc0NWRhZGI2M2FjZTU0MGYKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBBdWcgMiAxMzoyMjozOCAyMDExIC0wNzAwCi0KLSAgICBXb3JkaW5nIGNoYW5nZXMgdG8gaGVscCBkZXNjcmliZSBjb250ZXh0cyBiZXR0ZXIKLQotY29tbWl0IDhlNzJmYmU4NDBiODkzMjU3OGRjOTJmOTExMzU5OGY2MDBjYjA1OTAKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBBdWcgMiAxMzoyMjoyMSAyMDExIC0wNzAwCi0KLSAgICBBZGRlZCB0aGUgbWlzc2luZyBVNjQgbTJpIGZpbGUKLQotY29tbWl0IDJmYTdkODdkMzk3OWVjMGZiYjgzNWJjZmZmODk4ZTZiZWMyYWJiZDkKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBBdWcgMyAxMDoyMzowMCAyMDExIC0wNzAwCi0KLSAgICBBIG5ldyBmdW5jdGlvbjogbnNzZnBhdGNoYXBwbHkgdGhhdCBhdXRvLXB1bGxzIGdpdCBjb21tYW5kIGxpbmUgaW5mbyBmcm9tIFNGCi0KLWNvbW1pdCA3M2U3NjU3NGFlNzI4YTRhNGEzMDYyMzU5N2VjMGI5NWZhMjc5N2M1Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgQXVnIDIgMTQ6NDM6NTIgMjAxMSAtMDcwMAotCi0gICAgYWRkZWQgdmFyaWFibGVzIG5hbWVzIHRvIHRoZSBnZW5lcmF0ZWQgZXJyb3IgbWVzc2FnZXMuCi0KLWNvbW1pdCBiMjRhNGYwYzk1NjUzMzUyMjBlZTIxN2QwYzBiNTEzMjFjYzFhNDRmCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgQXVnIDIgMTM6MjI6MzggMjAxMSAtMDcwMAotCi0gICAgV29yZGluZyBjaGFuZ2VzIHRvIGhlbHAgZGVzY3JpYmUgY29udGV4dHMgYmV0dGVyCi0KLWNvbW1pdCBlODM3YzdjYjYyYzY3NmEwMDU5ZDI4NDZlMDJlMzJmNWJiNjNjMWIxCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgQXVnIDIgMTM6MjI6MjEgMjAxMSAtMDcwMAotCi0gICAgQWRkZWQgdGhlIG1pc3NpbmcgVTY0IG0yaSBmaWxlCi0KLWNvbW1pdCA5NzM2MjM0YjM3OThiYTU0NjJhMGE3NDk0M2VkZTgwZTkwYTY0ODViCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgQXVnIDMgMTA6MjM6MDAgMjAxMSAtMDcwMAotCi0gICAgQSBuZXcgZnVuY3Rpb246IG5zc2ZwYXRjaGFwcGx5IHRoYXQgYXV0by1wdWxscyBnaXQgY29tbWFuZCBsaW5lIGluZm8gZnJvbSBTRgotCi1jb21taXQgYmY3MTc4YjBiMjI1ODdkNDNkMWE4MGMyNjljZDIxNmJkNTkzMDIxNAotQXV0aG9yOiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KLURhdGU6ICAgTW9uIEp1bCAxOCAwNDozMTowOCAyMDExICswNDAwCi0KLSAgICBhZ2VudDogY2hhbmdlIHR5cGUgb2Ygc25tcF9lbmFibGVhdXRoZW50cmFwcyB0byBsb25nCisgICAgQ29uZmxpY3RzOgogICAgIAotICAgIFR5cGUgb2Ygc25tcF9lbmFibGVhdXRoZW50cmFwcyB2YXJpYWJsZSBpcyBjaGFuZ2VkIGZyb20gaW50IHRvIGxvbmcuCi0gICAgVGhpcyBmaXhlcyB0aGUgYnVnIHdpdGggd3JpdGluZyB0byBzbm1wRW5hYmxlQXV0aGVuVHJhcHMgaWYgc2VydmVyIGlzCi0gICAgY29tcGlsZWQgZm9yIDY0Yml0IChzbm1wc2V0IHJlcG9ydHMgd3JvbmcgbGVuZ3RoKS4gVGhpcyBidWcgd2FzCi0gICAgaW50cm9kdWNlZCBhIGxvbmcgdGltZSBhZ28gKGJ5IGZhZWVjZDAgY29tbWl0KS4KKyAgICAJYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jCisgICAgCWFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZGF0YV9hY2Nlc3MvZG90M3N0YXRzX2xpbnV4LmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jCisgICAgCWFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYworICAgIAlhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19zdGF0dXMuYworICAgIAlhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfbGludXguYworICAgIAlhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguYworICAgIAlhZ2VudC9taWJncm91cC9ybW9uLW1pYi9kYXRhX2FjY2Vzcy9ldGhlcnN0YXRzX2xpbnV4LmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jCisgICAgCWFwcHMvc25tcHRscy5jCisgICAgCWFwcHMvc25tcHRyYXBkX2xvZy5jCisgICAgCXNubXBsaWIvZGlyX3V0aWxzLmMKKyAgICAJc25tcGxpYi9zbm1wX2NsaWVudC5jCisgICAgCXNubXBsaWIvc25tcF9vcGVuc3NsLmMKKyAgICAJc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4uYworCitjb21taXQgMDE1MzgwNWM5OWI5MTk3MzY1OTM1YzVkMTFhZTljM2Q0YmZhYTBmMworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDA5OjQ4OjQxIDIwMTIgKzAxMDAKKworICAgIEZpeCBhIHNldC1idXQtbm90LXVzZWQgd2FybmluZworCitjb21taXQgM2Y4ODg1ZmJlZTk0MDc3NDhmYzJmMDU3MzcyOGExMWJhMmJjMDIzYQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBBcHIgMjggMDU6NTE6MTMgMjAwOSArMDAwMAorCisgICAgUmV0dXJuIGEgdmFsdWUgZnJvbSBzcHJpbnRfcmVhbGxvY192YWx1ZSBldmVuIGlmIG5vIHN1YnRyZWUgaXMgbG9jYXRlZC4KICAgICAKLSAgICBBY3R1YWxseSB0aGlzIGlzIGEgJ2xlc3MgZWZmb3J0JyB0eXBlIG9mIGZpeCBidXQgSSB3b25kZXIgd2h5IHdlIG5lZWQgYQotICAgIGxvbmcgdG8gc3RvcmUgYW4gSU5URUdFUiBpbiB0aGUgZmlyc3QgcGxhY2U/Ci0gICAgCi0gICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTc1NzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCiAKLWNvbW1pdCAxNmMwMmQ2OWNjOWNlNGZkNGU3NzEwYTBiZjk0MzBmNTIxNzVlZDUwCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgQXVnIDIgMTQ6NDM6NTIgMjAxMSAtMDcwMAotCi0gICAgYWRkZWQgdmFyaWFibGVzIG5hbWVzIHRvIHRoZSBnZW5lcmF0ZWQgZXJyb3IgbWVzc2FnZXMuCi0KLWNvbW1pdCA3ZmVkNjFiZjBhZjE0NzdlYjc0MGEwNTg4ZjZhMTFhMTJiNzIzNTk1Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgQXVnIDIgMTM6MjI6MzggMjAxMSAtMDcwMAotCi0gICAgV29yZGluZyBjaGFuZ2VzIHRvIGhlbHAgZGVzY3JpYmUgY29udGV4dHMgYmV0dGVyCi0KLWNvbW1pdCA5MzgwNjEyZmRjYjRmOWJiMDgxYzRhNDY3NDY2OTIxMjRhYmVkZTUwCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgQXVnIDIgMTM6MjI6MjEgMjAxMSAtMDcwMAotCi0gICAgQWRkZWQgdGhlIG1pc3NpbmcgVTY0IG0yaSBmaWxlCi0KLWNvbW1pdCA2MWIxNzhmMWVlODk1MmFhMDNhYTNiMWJhNTFmNGE2NjU1ZTQ3ZjAxCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBXZWQgQXVnIDMgMTg6MDk6NDcgMjAxMSArMDIwMAotCi0gICAgQ0hBTkdFUzogV2luZG93czogUGVybCBtb2R1bGVzIGJ1aWxkIG5vdyB3aXRoIElQdjYgZW5hYmxlZC4KLQotY29tbWl0IGYyODMyZTM0MDc4NzdlNzFhN2VhNmRlYTY1OWUzZTIwYTBjNWZhNzgKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIFdlZCBBdWcgMyAxNzo0MzowMSAyMDExICswMjAwCi0KLSAgICBXaGl0ZXNwYWNlLW9ubHkgY2hhbmdlOiBmaXggaW5kZW50YXRpb24gb2YgYW4gI2luY2x1ZGUgZGlyZWN0aXZlCi0KLWNvbW1pdCA3ZmNjMGI4MDMyZjhkYTViN2JjMzAwNTlhZjBiYTY1NmVhZTcxMDkxCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBNb24gQXVnIDEgMTQ6MTE6MjggMjAxMSArMDIwMAotCi0gICAgc211eDogRml4IHJlY2VudGx5IHJlaW50cm9kdWNlZCBjb21waWxlciB3YXJuaW5ncyBhYm91dCBzaXplX3QgPD4gc3NpemVfdCBtaXNtYXRjaGVzCi0KLWNvbW1pdCBiNDg0Yjg4ZDZlNTdiNDI1YTg0NjdmNWEzOTMzMzMxMmZlZDJhY2YyCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBUdWUgQXVnIDIgMDk6MzE6NTAgMjAxMSArMDIwMAotCi0gICAgRml4IGEgY29tcGlsZXIgd2FybmluZyBpbiBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9hY2Nlc3MuYwotCi1jb21taXQgOTQ0NjEyZWY1NmFkMjU2NGFhZmUxNGRmNmQwOGUwNDhiNzIyOGI4NgotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgTW9uIEF1ZyAxIDE0OjQ5OjQxIDIwMTEgKzAyMDAKLQotICAgIC5naXRpZ25vcmU6IEFkZCBmaWxlIG5hbWVzIGFuZCBwYXR0ZXJucyBmb3Igb3V0cHV0IGZpbGVzIGdlbmVyYXRlZCBkdXJpbmcgdGhlIFdpbmRvd3MgYnVpbGQKLQotY29tbWl0IDI2MDA5MDEyNzg1ZjgyOGJiZmM4NzU5YWZiYmJmYzU4NzAwZmYxZjYKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIEZyaSBKdWwgMjkgMDk6NTk6MzEgMjAxMSArMDIwMAotCi0gICAgLmdpdGlnbm9yZTogU29ydCBhbHBoYWJldGljYWxseQotCi1jb21taXQgNWUzZmY1NTk2NjQ4ZTA5MDdkNTcxZDdhNGQzYTNhOGMyNDAyZDhlZQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgRnJpIEp1bCAyOSAwODo0MzoxOSAyMDExICswMjAwCi0KLSAgICAuZ2l0aWdub3JlOiBBZGQgYXBwcy9zc2h0b3NubXAKLQotY29tbWl0IDMxYTNhMmEwNjI0MDQ2NTExY2EwN2VjMWY1MjFhMjJkNzk2NmRiODAKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIE1vbiBBdWcgMSAxMzozODowMSAyMDExICswMjAwCi0KLSAgICBSZW1vdmUgdHdvIGdlbmVyYXRlZCBQZXJsIGZpbGVzLgotCi1jb21taXQgYWRhZGNiOTllNTdiOTNiZTY3MGE3YzUxN2ZjOTg5ZGZmZTczOTZlOQotQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEF1ZyAyIDAwOjU2OjQ5IDIwMTEgKzAyMDAKLQotICAgIHN1cHByZXNzICJvayIgdGVzdCBvdXRwdXQgaW4gbnNiCi0KLWNvbW1pdCA0MDEyNWQ4NTM5Y2Q4OWY5NTJmYmMyNDU4OGM1ZTgxZTljZDgyMWZlCitjb21taXQgYjFlYWFmMzAyMzY5ZmQ0NTUyZThmZWU3YjZhODA1MDkxZWMwYTliNAogQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBBdWcgMSAxMzo1ODozMyAyMDExICswMjAwCitEYXRlOiAgIFdlZCBKYW4gNCAxMTozODo1MSAyMDEyICswMTAwCiAKLSAgICBEZXRlY3QgU01VWCByZWN2ZnJvbSgpIGVycm9ycyBwcm9wZXJseS4KKyAgICBBZGRlZCBjaGVjayBvZiBmaW5kX3NlY19tb2QoKSByZXR1cm4gdmFsdWUuCiAKLWNvbW1pdCA1YWNmMGQyY2ViMzk3Nzk2NGVkMzlmMDAzMDczYmE2NDEzOGMyZWJkCi1BdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gSnVsIDMxIDIzOjU3OjQxIDIwMTEgKzAyMDAKLQotICAgIEZvbGxvdy11cCBmb3I6IGJ1aWxkIGZpeCBmb3Igc3lzdGVtcyBsYWNraW5nIGZpZWxkIG1zZ19jb250cm9sIGluIHN0cnVjdCBtc2doZHIKLQotY29tbWl0IGFlOWFjNmM5ODEyODI0YmY1Yjg0OGRjMWYzY2NmNzIyN2M0MzZkMGQKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIFN1biBKdWwgMzEgMDk6MTE6MjggMjAxMSArMDIwMAotCi0gICAgRml4IGFuIGluY29ycmVjdCBzb3VyY2UgY29kZSBjb21tZW50OiB0aGVyZSBpcyBubyByZXF1aXJlbWVudCBpbiB0aGUgQU5TSSBDIHN0YW5kYXJkIHRoYXQgc3RhY2sgdmFyaWFibGVzIHNob3VsZCBiZSBpbml0aWFsaXplZCB0byB6ZXJvLgotCi1jb21taXQgMjQyZTE3OTdiMjY5NGEwNjg5ODU2YWUzNmQwNWQzNDEzYWFmOGQ3NwotQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIEp1bCAzMSAwMTo0NDowOSAyMDExICswMjAwCi0KLSAgICBGb2xsb3ctdXAgZm9yOiBidWlsZCBmaXggZm9yIHN5c3RlbXMgbGFja2luZyBmaWVsZCBtc2dfY29udHJvbCBpbiBzdHJ1Y3QgbXNnaGRyCi0KLWNvbW1pdCA4MmQ3M2ZiMTFiZTNhZTMxZjM5YzlkNjE4ZDUzODhkYzliMTAwNmQ3Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBGcmkgSnVsIDI5IDIwOjUxOjI3IDIwMTEgKzAyMDAKLQotICAgIFVuYnJlYWsgdGhlIFdpbmRvd3MgYnVpbGQKLQotY29tbWl0IDU0YTQ0Y2I3ZGQ3MWRlNjYxNmE1Y2NiZmVkMzRhOGI3OTYzNDZkNTEKLUF1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBKdWwgMzAgMTQ6Mjg6MjkgMjAxMSArMDIwMAotCi0gICAgYXV0b3JlY29uZgotCi1jb21taXQgMTA5ZjY2OTRkNzg4ZjQ4ZWJkOWZjMGExZTkwYzQ1YWJjMzdiZWEyMAotQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IEp1bCAzMCAxNDoyMjoxOSAyMDExICswMjAwCi0KLSAgICBDSEFOR0VTOiBidWlsZGluZzogYnVpbGQgZml4IGZvciBzeXN0ZW1zIGxhY2tpbmcgZmllbGQgbXNnX2NvbnRyb2wgaW4gc3RydWN0IG1zZ2hkcgotCi1jb21taXQgOWU0N2FjNDM5MzMzZDJiYjdjODA2ODYyNDFkYjczMzFhODg3NzBmYgotQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IEp1bCAzMCAwMDoxODoxNCAyMDExICswMjAwCi0KLSAgICBtaW5vciBuc2IgZml4ZXMvZW5oYW5jZW1lbnRzIGZyb20gbXkgb2xkIHN2biB0cmVlCi0KLWNvbW1pdCBjNDgxNzNjMDZhOWVhYWRiZjgxZTZiNDk2MmQ1NWVmMGE1NGRiMjUxCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBGcmkgSnVsIDI5IDEwOjI3OjM5IDIwMTEgKzAyMDAKLQotICAgIEZpeCBhIGJ1ZyBpbiBhIGRlYnVnIHN0YXRlbWVudAotCi1jb21taXQgZWNhMWI5YTI1NDUwY2Q4NzViMjAxMmM1MWMwOTBiYTJiOTdlMDYyOAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgRnJpIEp1bCAyOSAxMDowNDowMiAyMDExICswMjAwCi0KLSAgICBSZXJ1biBhdXRvcmVjb25mCi0KLWNvbW1pdCA2OWFhOWUwMzJjYWY1ZWI3MTNiYjAwNzQ1MTM0NjQwZmU5ZmQwMjM1Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBGcmkgSnVsIDI5IDA5OjU5OjMxIDIwMTEgKzAyMDAKLQotICAgIC5naXRpZ25vcmU6IFNvcnQgYWxwaGFiZXRpY2FsbHkKLQotY29tbWl0IGMzODU5N2RmYTBiMWQzNjdkNTJiYmRjMGFlYWFkZmYwMTU1ODUwYWQKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIEZyaSBKdWwgMjkgMDg6NDM6MTkgMjAxMSArMDIwMAotCi0gICAgLmdpdGlnbm9yZTogQWRkIGFwcHMvc3NodG9zbm1wCi0KLWNvbW1pdCA3NzRkMGI2NmVlMGFjYWZlYWZhMjFmYzhkOTkzODY0Nzc5ZTUwZTYzCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBGcmkgSnVsIDI5IDA3OjQzOjU0IDIwMTEgKzAyMDAKLQotICAgIEZpeCB0d28gZmlsZW5hbWVzIGluIGhvc3QgbWliIHNvdXJjZSBjb2RlIGNvbW1lbnRzLgotCi1jb21taXQgMzQ1ODEyOGI0YTNjNTk3MTk5ODg5NGY5ZDlkOGNjYzZjNzZkM2M5YgorY29tbWl0IGFlZTRlODk1ZmUzYmQ1ZjRhNjFlMzQyNzViZmNhMDM2OGI1NjA1NTUKIEF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSnVsIDI4IDE2OjE2OjE1IDIwMTEgKzAyMDAKK0RhdGU6ICAgV2VkIEphbiA0IDExOjMxOjIyIDIwMTIgKzAxMDAKIAotICAgIEZpeCBwb3RlbnRpYWwgc2lnc2VndiB3aGVuIGFuIGlmVGFibGUgZW50cnkgaXMgcmVtb3ZlZCBhcyByZXN1bHQgb2YgYm90aCBpbnRlcmZhY2VfcmVwbGFjZV9vbGQgYW5kIGludGVyZmFjZV9mYWRlb3V0IGF0IHRoZSBzYW1lIHRpbWUuCisgICAgQWRkZWQgY2hlY2sgb2Ygc25tcF9zZXNzX3RyYW5zcG9ydCgpIHJldHVybiB2YWx1ZS4KIAotY29tbWl0IGEyZjllY2UwNmNmMDBlZTQ3Y2U3ZTg1NjcyMjEwYzFiNTc4NmYzMTEKK2NvbW1pdCA1ZDFkMGE3NDRhYjMwYzhlNjQ1YzNiODUwNmNiYmQyY2NlYjNkMjc1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA0IDExOjA0OjQ4IDIwMTIgKzAxMDAKKworICAgIEFkZGVkIGNoZWNrIG9mIG5ldHNubXBfZXh0cmFjdF9pdGVyYXRvcl9jb250ZXh0KCkgcmV0dXJuIHZhbHVlLgorCitjb21taXQgMjk5ZWE5YTg5YzNmMTc1OGE3NzQ4YmI5YjM0MTFmNjJmMmM3MGY4OAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNCAxMDo1NDo1NSAyMDEyICswMTAwCisKKyAgICBBZGRlZCBjaGVjayBvZiBmb3BlbigpIHJldHVybiB2YWx1ZSwganVzdCBpbiBjYXNlIG9mIHNvbWUgcmFjZS4KKworY29tbWl0IDkwZjFhZTY3NTc5MTc0ODE2MzZlZWY3NzEwMGNhZWViNTNlZGZlMDEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKYW4gMyAxMDowNjo1NiAyMDEyICswMTAwCisKKyAgICBBZGQgc3RybGNhdC5jLiBTb3VyY2U6IGh0dHA6Ly93d3cuZnJlZWJzZC5vcmcvY2dpL2N2c3dlYi5jZ2kvc3JjL2xpYi9saWJjL3N0cmluZy9zdHJsY2F0LmMuCisKK2NvbW1pdCAwODliY2IzNjBhYTI2NzkwYWQyYThjZWRkZjU4M2I3YmE1ZGRmZDQ4CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA0IDEwOjUwOjU2IDIwMTIgKzAxMDAKKworICAgIEFkZGVkIHN0cnJjaHIgcmV0dXJuIHZhbHVlIGNoZWNrLCBqdXN0IHRvIGJlIHN1cmUuCisKK2NvbW1pdCAxOTlhMDUxMWY2ZWIwZWYzZmYxZDlmOTIyYjc5MGFiNjdkZmRlMDFlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDQgMTA6MzE6MjYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IHNtdXg6IHNpbXBsaWZ5IHNtdXhfbGlzdF9kZXRhY2goKQorCitjb21taXQgZDg4MzU3M2FhNzNlMGY1ZmMxODhhY2VkZWU2NDUxZjk1ZGFlOTAwYworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDEwOjIzOjA2IDIwMTIgKzAxMDAKKworICAgIEZpeCBhIGNvbXBpbGVyIHdhcm5pbmcgaW50cm9kdWNlZCBieSBjb21taXQgYTgwOWZlNTA3NWM5ZjM3NDcxNWY3ZDFhNjgyOTQ5YTA3MzAxNzJjMS4KKworY29tbWl0IDdiN2EzZWIyNTAwNTI3ZWFhMTY5OTI4N2E2Y2E2ZmNjNGNjMmUwOGEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAwOTo0MDowMiAyMDEyICswMTAwCisKKyAgICBGaXggYSBidWlsZCBlcnJvciBjYXVzZWQgYnkgY29tbWl0IGE4MDlmZTUwNzVjOWYzNzQ3MTVmN2QxYTY4Mjk0OWEwNzMwMTcyYzEuCisKK2NvbW1pdCAyYjZjMTE5ZmVkNDg0OGRhNjY2M2MxMWYwYzJjYmRjMjk5MjFiNWM2CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE1OjUxOjEwIDIwMTIgKzAxMDAKKworICAgIENoZWNrIGZvciBuZXRzbm1wX2RzX2dldF9pbnQoKSBlcnJvcnMuCisKK2NvbW1pdCA2Y2U1MzYwY2FhNGM5ZGU1MWFkZTU3ODc5ZTgzZjk2YmQwNGI0YzVhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE1OjQyOjIzIDIwMTIgKzAxMDAKKworICAgIENoZWNrIGZvciBtaXNzaW5nIHZpZXcuCisKK2NvbW1pdCBiM2JjNTRiZWQzMTY5MGE4NWRmMmFjZmJmMzI5NmRhOTNhOWU4OWI0CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE1OjIzOjE3IDIwMTIgKzAxMDAKKworICAgIENoZWNrIHNvY2tldCgpIHJlc3VsdC4KKyAgICBBbHNvIGNsb3NlIHRoZSBzb2NrZXQgb24gZXJyb3IuCisKK2NvbW1pdCA5MjA3NWY1MWNkNDVhMzhjYTM4NzYwYjNmZmU4MmUxNjU1OWU5YzJlCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE1OjE4OjI2IDIwMTIgKzAxMDAKKworICAgIENoZWNrIG9wZW4oKSByZXN1bHQuCisKK2NvbW1pdCA2NjY1ZDVmZTJmYzU2OWQ2ZmE4NTRkMWQ3OGUzNDdiYmFjNjllMDcwCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE0OjIyOjIyIDIwMTIgKzAxMDAKKworICAgIEZpeGVkIG1pc3NpbmcgYnJlYWsuCisKK2NvbW1pdCBhNjY0OGM1NDUzZTFlZjhkYWM1N2EzOGVmY2MwMGNjZTUzYmY5ZTRmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE0OjIwOjI3IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIG1pc3NpbmcgYnJlYWsuCisKK2NvbW1pdCBkNjhkY2FlMGYxOGQ1NTQ1NzFhZWYzMjE5NDRhNTI5MDU0OGRkZTg2CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE0OjE2OjExIDIwMTIgKzAxMDAKKworICAgIEFkZGVkICdmYWxsdGhyb3VnaCcgY29tbWVudCBmb3IgQ292ZXJpdHkuCisKK2NvbW1pdCBmYjZmODBjMGZlM2JhMzZlNTZmNWI5MTFhNDdlM2Y2ZjMyYmEyNjZlCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE0OjE0OjA3IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGV4aXQgY29kZSBvZiBlbmNvZGVfa2V5Y2hhbmdlIHdpdGggd3JvbmcgYXJndW1lbnRzLgorICAgIEFsc28gYWRkZWQgYSBjb21tZW50IGZvciBDb3Zlcml0eS4KKworY29tbWl0IDMxMzBlMjRmZGMyMzI0NjRkZDdiYjIxNmY0NmNhZmEyZTBlNzc1YTYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTQ6MDk6NTQgMjAxMiArMDEwMAorCisgICAgQWRkZWQgbWlzc2luZyBicmVhaworCitjb21taXQgMThjMTI2YTk1NjVjYjRkNjlkNzUxM2I5NDRhMjEwNTU4ODA0NWQzNQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNDowNzoyOSAyMDEyICswMTAwCisKKyAgICBBZGRlZCAnZmFsbHRocm91Z2gnIGNvbW1lbnQgZm9yIENvdmVyaXR5LgorCitjb21taXQgNmQzMWM4MjA3MGEyYzY4ZmUzYzUxOWU5ZDU2ZmEyNzc5NTU0ZDAxZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNDowMTo1MyAyMDEyICswMTAwCisKKyAgICBBZGRlZCAnZmFsbHRocm91Z2gnIGNvbW1lbnQgZm9yIENvdmVyaXR5LgorCitjb21taXQgZGM2ZjBlMmU1NDliNGNkMDYxZWJjMTkwMDg0YjFmYzc3YTU1ZjQwZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxMzozMjo1OSAyMDEyICswMTAwCisKKyAgICBGaXhlZCB3cm9uZyBvcGVyYXRvcgorCitjb21taXQgZGFiMzI4NjdlZDBiOTkzMDFlZmQ3YjhkODUyYWQxMjg4YTE4NGJlMAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxMzozMDozMyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBRVUlURlVOIHVzYWdlLgorCitjb21taXQgYjFhMmJjZjY0NjE1ZWI2NmJjMjRkNWJlNDk1MGU0NTAxMjk2MjA0NQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxMzoxODowMyAyMDEyICswMTAwCisKKyAgICBGaXhlZCB3cm9uZyBvcGVyYXRvcgorCitjb21taXQgYjJiMWM4NTFiOTRmZWQzN2MzODZlYWExYmZlYWQ1Yzc3Njk2ZTNlZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxMzoxNDo1MiAyMDEyICswMTAwCisKKyAgICBGaXhlZCB3cm9uZyBvcGVyYXRvcgorCitjb21taXQgYTgwOWZlNTA3NWM5ZjM3NDcxNWY3ZDFhNjgyOTQ5YTA3MzAxNzJjMQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxMDo1ODo0NiAyMDEyICswMTAwCisKKyAgICBBZGRlZCBjaGVjayBmb3IgZmFpbGVkIHJlZ2lzdGVyX21pYi4KKworY29tbWl0IDU5NDlmMDU1YzE2YWU2NTA2MTVhYWU3YTFmZWUzZjJkN2IxNmQ5NDAKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTA6Mjk6NTkgMjAxMiArMDEwMAorCisgICAgTWFrZSBNSUIgZmlsZSBwYXJzaW5nIGFuZCBkZXRlY3Rpb24gbW9yZSBzdHJpY3QgLSBMQUJFTCBpcyByZXF1aXJlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIE1JQiBmaWxlcy4KKworY29tbWl0IGU0YjY3MzY4M2M2OGJhOGIzYWJjMDQwYjkxMjVlYzMwNDY0M2NjN2MKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBKYW4gMSAyMzowMDoyNCAyMDEyICswMTAwCisKKyAgICBBc3N1bWUgdGhhdCBsaWJkbCBtaWdodCBiZSBpbiBBR0VOVExJQlMgb3IgU05NUExJQlMgc28gcHJlYWRkIHRoZW0uCisKK2NvbW1pdCBiMTNjMWU1N2JlZGJhNzliODA2MTAzYzc0ZjE5MjFkNTNhNzA2YjM4CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gSmFuIDEgMjI6NTU6MDYgMjAxMiArMDEwMAorCisgICAgRG8gbm90IHJlcXVpcmUgdWNkLXNubXAvZGxtb2QgdW5sZXNzIGl0IHdpbGwgd29yay4KKworY29tbWl0IDI3ZGNlYTBkNWY4MDFkZjQ5NGFiMmNiNWM1YzBlYmU1NGViMGRjZDMKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBEZWMgMzEgMTQ6NDg6MjkgMjAxMSArMDEwMAorCisgICAgQWRqdXN0IHBhdGhzIGZvciB0ZXN0IHJlc3RydWN0dXJlCisKK2NvbW1pdCAxNGI2MGU4NWExYjU3MDBlOTNkMTI2ZTJmMjkxZDVjNDg1ZjM0ZTM2CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgRGVjIDMxIDE0OjE0OjI5IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBNYWtlIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBkbG1vZCBtb2R1bGUgZmFpbCByYXRoZXIgdGhhbiBnZW5lcmF0ZSBhIGR1bW15IG1vZHVsZSBpZiB0aGUgZGxvcGVuIGZ1bmN0aW9uIGlzbid0IGF2YWlsYWJsZS4KKworY29tbWl0IDk4YTk3NTM4ZmMxZTlmZjQ2YjYwZDVkOTY5MzQ3NDQ0NTc4Mzc4YzAKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBEZWMgMzEgMTM6MzU6MTMgMjAxMSArMDEwMAorCisgICAgQWRqdXN0IHRoZSBwYXRocyB0byBzdXBwb3J0IHRlc3RpbmcgZXZlbiBpZiBidWlsZGRpciAhPSBzcmNkaXIKKworY29tbWl0IDg4ZjBhZjNjZmI5MTZhZTU4NjNjYzI5ODYwNzFkNDM1ZjIwYzMwNjQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBEZWMgMzEgMTE6Mzc6NTIgMjAxMSArMDEwMAorCisgICAgUmVkdWNlIHRoZSBzY29wZSBvZiB0aGUgdmFyaWFibGVzICdwJyBhbmQgJ2xlbicuCisKK2NvbW1pdCAwODE1YTc1MzZjNzZmN2U0ODQyNjM4NjgzZjY3NDg5NGExYThjZTE0CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IERlYyAyOSAxNDo0Mjo1NCAyMDExICswMDAwCisKKyAgICBSZXBvcnQgcHJvYmxlbXMgd2l0aCBTZXRVbmRvIHByb2Nlc3NpbmcKKyAgICBNaXNzZWQgd2hlbiBhcHBseWluZyBwYXRjaCAjMzQ0NTQ0MAorCitjb21taXQgZWIyYWIyMzc0MmNhODZjMGI4OWNjZmU5MWViNmVhMzc0YmYzYWNjMQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBEZWMgMjkgMTQ6Mzc6MzEgMjAxMSArMDAwMAorCisgICAgQ2hlY2sgZm9yIHRoZSBleHBlY3RlZCBlcnJvciAoRVBJUEUpIG9uIGNsb3N1cmUuCisgICAgTWlzc2VkIHdoZW4gYXBwbHlpbmcgcGF0Y2ggIzM0NDc0NDQKKworY29tbWl0IGFhYzEwYmM0ZjA1M2MwMTRmMzgyZDY1OTNmYzMyYWI5NWUwYjFhNTcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgRGVjIDI5IDEyOjU5OjUyIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDM0NjM3Njc6IEhhbmRsZSBwYXJzaW5nIHN1YmlkZW50aWZpZXJzID4gMl4zMQorCitjb21taXQgYmJjMDJlMzZlOTBjMWFhYjc4OTg1NjJmOTYzZjVjYWRiMjZlMTBiZAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFdlZCBEZWMgMjggMTc6MTU6MTYgMjAxMSArMDAwMAorCisgICAgTW92ZSBwYXNzL3Bhc3NfcGVyc2lzdCB0ZXN0cyB0byB0aGUgbmV3IGxvY2F0aW9uCisKK2NvbW1pdCAzODk4YzA0ZmQ2Zjg5ODY3MDYyZmRmZWJmMzY4NTdhYjYxOWMwNDUwCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgV2VkIERlYyAyOCAxNjo1MzoyNCAyMDExICswMDAwCisKKyAgICBBZGQgdGVzdHMgZm9yIHBhc3MvcGFzc19wZXJzaXN0LCBzdXBwbGllZCBieSBCaWxsIEZlbm5lcgorCitjb21taXQgZDVlZTNmMGExYTYzYmIxNzUyYzc0Y2JjYTU1YWEzZDQwYmY5YmYxMworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMjE6NTg6NTEgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDM0NDc0NDQ6IEZpeCBTSUdfUElQRSBoYW5kbGluZworICAgIFBhdGNoIHByb3ZpZGVkIGJ5IEJpbGwgRmVubmVyCisKK2NvbW1pdCAyYTE3YjM3NDMwYzE4NTI5OThjMzU4OGU1NDdkN2ViNjFjMDZkYTcxCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAyMTo0NTozOCAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBhZ2VudHg6IFBBVENIRVM6IDM0NDU0NDA6IE1vcmUgcm9idXN0IGhhbmRsaW5nIG9mIEFnZW50WCBlcnJvcnMKKyAgICBQYXRjaCBwcm92aWRlZCBieSBCaWxsIEZlbm5lcgorCitjb21taXQgZmU1OGEwZTVmNGQ0ZTJlMmVjYmNiNDczODJiMDhjYjFlNGRmMzUyYworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTg6MTY6MjMgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzQ1Njc3MDogSGFuZGxlIChvYnNvbGV0ZSkgVUludGVnZXIgdHlwZSBwcm9wZXJseQorICAgIFBhdGNoIHByb3ZpZGVkIGJ5IEJpbGwgRmVubmVyCisKK2NvbW1pdCAxYmU4Y2YwOGE2N2E5MTg1NWZlZTFlYzRhMmQ4ZTA4N2M3ODEyNDU2CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAxODowNDoxMCAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBhZ2VudHg6IFBBVENIRVM6IDM0NDU0Mzc6IExvZyBBZ2VudFggZGlzY29ubmVjdGlvbnMKKyAgICAoaW4gbGluZSB3aXRoIGNvbm5lY3Rpb25zKSBQYXRjaCBwcm92aWRlZCBieSBCaWxsIEZlbm5lcgorCitjb21taXQgMDY4MDM3Mjg5MTA3ZmFhMmJhM2Y1Y2QyZmIwMGMxOTQ5NGJiOWEwNAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTc6Mjc6NDYgMjAxMSArMDAwMAorCisgICAgSGFuZGxlIGFueSBHRVRORVhUIHJlcXVlc3QgT0lELCBub3QganVzdCBhIHNpbXBsZSB3YWxrLgorCitjb21taXQgYTc0ZmE1Mjg5ODMxMjNkMzU1YThjZGNhYTc3ZGQ0ZWI0YjhjNjk1OQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTc6MDA6MTggMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogcGFzczogUEFUQ0hFUzogMzQ5Mzk0OiBCcmluZyBwYXNzX3BlcnNpc3R0ZXN0IHNjcmlwdCBpbnRvIGxpbmUgd2l0aCBwYXNzdGVzdCoKKyAgICAoaS5lLiB1c2luZyB0aGUgbGVnaXRpbWF0ZSBzdHJ1Y3R1cmUgb2YgTkVULVNOTVAtUEFTUy1NSUIpCisgICAgUGF0Y2ggcHJvdmlkZWQgYnkgQmlsbCBGZW5uZXIKKworY29tbWl0IGJiZTY0OWViZmE2MWVhMjIzOTkxNzBiMzZiOTlkYjMwYTFkZTgwMTIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDE2OjU0OjM4IDIwMTEgKzAwMDAKKworICAgIFJld29yayAicGFzc3Rlc3QiIGV4YW1wbGUgdG8gZnVsbHkgdmFsaWRhdGUgR0VUTkVYVCByZXF1ZXN0cworICAgIGFuZCB1c2UgYSBsZWdpdGltYXRlIHN0cnVjdHVyZSBmb3Igb3V0cHV0LiAgQmFja3BvcnQgb2YgU1ZOCisgICAgcmV2aXNpb24gMTc2MzIgKHdoaWNoIHVwZGF0ZWQgJ3Bhc3N0ZXN0LnBsJyBidXQgbWlzc2VkICdwYXNzdGVzdCcpCisgICAgQ29ycmVjdCBpbiBicmFuY2hlcyA1LjUgYW5kIGFib3ZlCisKK2NvbW1pdCA4MmQwNmM3MjQ3YjIyYzhiMDFkNDViZjU1MDQxZDJmMWU2NDI3ZDQ5CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAxMzo0NToxOCAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMzQ0NzY3MTogRml4IG92ZXJyaWRlIGhhbmRsaW5nIG9mIE9JRCB2YWx1ZXMKKyAgICBQYXRjaCBzdXBwbGllZCBieSBQaGlsbGlwIE8nRG9ubmVsbAorCitjb21taXQgYmE0YTljZTUxYzk2MDBmOWZkYTE2OGYxZTZlZmYzMmExZGI2M2NiOQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTM6MjQ6MjYgMjAxMSArMDAwMAorCisgICAgVHdlYWsgLS1kaXNhYmxlLXNubXAtc2V0IGNoYW5nZXMKKworY29tbWl0IDgyN2M4YjI4ODMwMTcxZmFhOWM2MWQ1M2VmY2E5ZWI2NjAwNTYxYzIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDExOjI1OjQzIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHB5dGhvbjogUEFUQ0hFUzogMzQzMzg0NjogRml4IGZvciB1c2Ugd2l0aCBweXRob24gMi40CisKK2NvbW1pdCBmOThhNTRhOTljYWY3YjQ2YjEwMGE5MjBkYjk0MmNiY2E5YzQzOTI2CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAxMDoxMDozNiAyMDExICswMDAwCisKKyAgICBTa2lwIFNFVC1iYXNlZCB0ZXN0cyB3aGVuIGNvbmZpZ3VyZWQgd2l0aCAtLWRpc2FibGUtc2V0LXN1cHBvcnQKKworY29tbWl0IDIzMGRmMTRmOTRjMzczNmZmMzQzNzlhNGUyODFlZWEzNTNiNDdmODAKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIE1vbiBEZWMgMjYgMjM6MzQ6MjMgMjAxMSArMDEwMAorCisgICAgRG8gbm90IGFzc2lnbiB0bVN0YXRlUmVmIHR3aWNlCisKK2NvbW1pdCBjOTZiM2I0ZDg1MzBhZDVlMGVmYjAzZjI0ZGFiNWU1ZjFhNDYwMDMxCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDI1IDExOjE4OjIxIDIwMTEgKzAxMDAKKworICAgIENvcnJlY3QgdXNlLWFmdGVyLWZyZWUuCisKK2NvbW1pdCBjNTk3OGM4OWNkZTI0NDBmNGQyMGRhZGJjOWQxZGQ4ZGI1NjJkNTZlCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDI1IDExOjE1OjQ0IDIwMTEgKzAxMDAKKworICAgIENvcnJlY3QgZG91YmxlLWZyZWUuCisgICAgCisgICAgbmV0c25tcF90bHN0bUFkZHJfYWRkIHRha2VzIG93bmVyc2hpcCBvZiBpdCdzIGFyZ3VtZW50IHNvIGNhbGxpbmcgZnJlZSBvbiB0aGUKKyAgICBhcmd1bWVudCBvbiBmYWlsdXJlIGlzIGluY29ycmVjdC4KKworY29tbWl0IGMxMzljYTEyM2I0NGJiM2I5YjZiZjkyMWUxNjA5Y2M0NWY2M2E2NjAKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBTYXQgRGVjIDI0IDE2OjU1OjMwIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTIDM0MTAwNTk6IEZpeCBzcGFyc2VseSBhdWdtZW50aW5nIHRyaWdnZXIgdGFibGVzCisgICAgUGF0Y2ggcHJvdmlkZWQgYnkgU3RlcGhlbiBUdXJuZXIKKworY29tbWl0IGM0YWUwMjFiMmU2Mzg0NDM3MDgxYzU2MjNmMzYwYzg4OTYzOTAxODgKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBTYXQgRGVjIDI0IDE2OjI5OjU0IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTIDM0MTAwNTA6IFNraXAgYWxyZWFkeS0ncHJvY2Vzc2VkJyB2YXJiaW5kcworICAgIEJhc2VkIG9uIG1pYjJjIHBhdGNoIHByb3ZpZGVkIGJ5IFN0ZXBoZW4gVHVybmVyCisKK2NvbW1pdCBjNmFjY2Y4YzY2MjU0ZmE4YzQ4NzY3ZWQ3ZGVjNzk1ZGRhZmM1MjJlCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgU2F0IERlYyAyNCAxNjoyNzoxMSAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUyAzNDEwMDUwOiBTa2lwIGFscmVhZHktJ3Byb2Nlc3NlZCcgdmFyYmluZHMKKyAgICBQYXRjaCBwcm92aWRlZCBieSBTdGVwaGVuIFR1cm5lcgorCitjb21taXQgYTYxODI2YWQ4Y2E1NDY2MWQxZDkwOTcxMjUwM2JkM2E4YjMyZWVkMAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVGh1IERlYyAyMiAxODozNTo0NiAyMDExICswMTAwCisKKyAgICBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgorICAgIAorICAgIG15TWF0Y2ggaXMgdW51c2VkIGFzIG5tYXRjaCBpcyB6ZXJvIGFuZCBhbHNvIHNpbmNlIHJlZ2V4QnVmZmVyIGlzIGNyZWF0ZWQKKyAgICB3aXRoIFJFR19OT1NVQiBzZXQuCisKK2NvbW1pdCBiYTRmYzgwZmUyY2ZkNWE1ZDg5MjMwZDhmMzcwM2U0ZmUwMWU2MDE5CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IERlYyAyMiAxOToyNDo0MCAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBhZ2VudDogUEFUQ0ggMzQwMjM3NjogZnJvbSBMZW9uYXJkbyBDaGlxdWl0dG86IFJlY29nbmlzZSBSZWlzZXJGUworICAgIEFsc28gbW92ZSB2YXJpb3VzIEZTVHlwZSBkZWZpbml0aW9ucyB0byB0aGUgYXBwcm9wcmlhdGUgYmxvY2tzCisKK2NvbW1pdCBiNWFjNGEwNGRjZDU0NzBkMDhkMDMzMjFhYmNkMWU5ODI2MjFlNmUwCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IERlYyAyMiAxNDozOTo0NiAyMDExICswMTAwCisKKyAgICBGaXhlZCB1bnRlcm1pbmF0ZWQgc3RyaW5ncyBhZnRlciBzdHJuY3B5CisKK2NvbW1pdCAyYjM3ZTRlOGYyNTBhMGQ4ODIxMTk5YTc0YWMzZjRlNWI3YjdiYWJhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IERlYyAyMiAxNDozMTo1MSAyMDExICswMTAwCisKKyAgICBGaXhlZCB1bnRlcm1pbmF0ZWQgc3RyaW5ncyBhZnRlciBzdHJuY3B5CisKK2NvbW1pdCAzZDA4MzQ1MTU2YzQxOTMzM2RlOTY5ZjEzZDIxZmNlYzdlMThlOTRkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IERlYyAyMiAxNDozMjoyOSAyMDExICswMTAwCisKKyAgICBGaXhlZCB1bnRlcm1pbmF0ZWQgc3RyaW5ncyBhZnRlciBzdHJuY3B5CisKK2NvbW1pdCBjZDg1OWFkNTFjNGYxOGQ1YjBmYzY5ZGQ2NjlmY2IwNTFjNzk4OTY5CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IERlYyAyMiAxNDozOTozMyAyMDExICswMTAwCisKKyAgICBGaXhlZCB3cm9uZyBtZW1tb3ZlIHNpemUKKworY29tbWl0IDMwZmY1OGQwOWQ0YzlkNTQzOGJiNjIxMDU0ZmQ3YWQ3YTJhNTk3ZTQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRGVjIDIyIDE0OjA3OjE5IDIwMTEgKzAxMDAKKworICAgIEZpeGVkIHdyb25nIGxlbmd0aCBvZiBidWZmZXIgd2hlbiBwcmludGluZyBBU05fQklUX1NUUgorCitjb21taXQgNmMxNDg3ZTFkMzYwZDNkMjYwYTM5Y2IxZjViMTVkYTk3ODM5NTA1MworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBEZWMgMjEgMTU6NDc6MzQgMjAxMSArMDEwMAorCisgICAgRml4ZWQgcG90ZW50aWFsIGZyZWUgb2YgdW5pbml0aWFsaXplZCBwb2ludGVyIGluIGVycm9yIGNhc2VzCisKK2NvbW1pdCBjNzZmYjk2ZjY1ZTMzYmEyZmQyMTJhOTIxZThjMzg2MTU1ZWU1YzdhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIERlYyAyMSAxNTo0NDo0NiAyMDExICswMTAwCisKKyAgICBGaXhlZCB1bml0aWFsaXplZCB2YWx1ZXMgaW4gdWRwVGFibGUKKworY29tbWl0IGM0NDYwODY3OWI4OTc1MTE3NmYyOGEyZTU0ZDUyODJiNDZlMmEwNWMKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgRGVjIDIxIDE0OjU2OjEzIDIwMTEgKzAxMDAKKworICAgIFVzZSBjYWxsb2MgaW5zdGVhZCBvZiBtYWxsb2MgYW5kIG1hbnVhbCBjbGVhcmluZworCitjb21taXQgYTA1YzVmOTUxMzQ2MTgyNGU3OTAzYWU5YWU5YTZjMzM4NmUzMzg3OQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBEZWMgMjEgMTQ6NDA6NTAgMjAxMSArMDEwMAorCisgICAgRml4ZWQgcHJpbnRpbmcgb2YgdW5pdGlhbGl6ZWQgdmFyaWFibGUgd2hlbiBzZW5zb3JzX2dldF9sYWJlbCgpIGZhaWxzCisKK2NvbW1pdCBlNGE1ZWRjNzIzOTNiZDNkZTliZjEyYmNlYmE5ZDgzYmJmN2RlNzBiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIERlYyAyMSAxNDozMToyNSAyMDExICswMTAwCisKKyAgICBSZW1vdmVkIHVudXNlZCB2YXJpYWJsZQorCitjb21taXQgZmFlMmU1YjgzNWI4ZGYxZWFlNDdlNGNlYmI0ZWI0MDRkNzI4MjM3NworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBEZWMgMjEgMTM6MzE6MjEgMjAxMSArMDEwMAorCisgICAgRml4ZWQgZGVyZWZlcmVuY2luZyB1bml0aWFsaXplZCBpaWQgaW4gZXJyb3IgY2FzZXMgYW5kIHdpdGggZGVidWcgaW5mbyBlbmFibGVkLgorCitjb21taXQgOWQ1OGY4MWE5MjM5Y2ZiY2ZjOGViY2UzNjdkMjFlOWIzZGNiMDI4YgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBEZWMgMjEgMTM6MzM6MzMgMjAxMSArMDEwMAorCisgICAgRml4ZWQgZGVyZWZlcmVuY2luZyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBpbiBlcnJvciBjYXNlcworCitjb21taXQgMGJjOGMwOGVkZWFlN2FlMDk1ZjExNjI1OGMyMGFlNTc2N2Q2MDY1MgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBEZWMgMjEgMTM6MjA6NTIgMjAxMSArMDEwMAorCisgICAgRml4ZWQgcmV0dXJuaW5nIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgJ3N0YXR1cycgd2hlbiBzcyA9PSBOVUxMCisKK2NvbW1pdCA3MzA0YzUzY2Y4YWRlZThlY2NlZjFhOGYyNjc1NmZjMDdmMDk4NzIxCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDE4IDIzOjMxOjUzIDIwMTEgKzAxMDAKKworICAgIE9uIHNvbGFyaXMgMTAgdGVzdCBpbiAvYmluL3NoIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgLWUgdGVzdC4gUmVwbGFjZSBpdCB3aXRoIC1mCisKK2NvbW1pdCA4Y2QzYmU2MGQ2OTNjOWMzNmZmYjk3ZDNkOWJjYjQ5YzFiNGFiZTM1CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgRGVjIDE3IDA4OjUyOjI0IDIwMTEgKzAxMDAKKworICAgIEF2b2lkIHJlcGV0aXRpb24gb2YgdGhlIGNvbXBsZXggZXhwcmVzc2lvbiBkZXRlcm1pbmluZyBpZiBpdCBpcyBwb3NzaWJsZSB0byBnZXQgdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MuCisgICAgCisgICAgVGhpcyBhbHNvIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGJ1aWxkIG9uIHBsYXRmb3JtcyBsaWtlIFNvbGFyaXMgMTAgdGhhdCBkZWZpbmUKKyAgICBJUF9SRUNWRFNUQUREUiBidXQgbGFjayBlaXRoZXIgb2YgbXNnaGRyLm1zZ19jb250cm9sIGFuZCBtc2doZHIubXNnX2ZsYWdzLgorCitjb21taXQgOTUzZjJlM2Q0MjVlZGUzYjg2M2EyZTdjY2IwYjRiYzg2MjkyOGI1NworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IE5vdiA1IDIyOjEzOjA3IDIwMTEgKzAxMDAKKworICAgIE1vdmUgdGhlIHVzZSBvZiBfc2VuZHRvIGFuZCBfcmVjdmZyb20gYmVsb3cgdGhlaXIgZGVmaW5pdGlvbnMuCisKK2NvbW1pdCA2OGExMTczYzQ2Y2Y3NzYwMTQyNmNmMzkxZDlhODUyNzk0ZjIwNTdlCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gTm92IDIwIDIwOjA1OjE4IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFNlcGFyYXRlIG91dCB0aGUgY21lc2cgYnVmZmVyIHNpemUKKworY29tbWl0IDQ2MWRkMTZmM2IyNjQ3MzIyY2RjZTYzNjMwODFjYzQ0YmE1YTQ5YjUKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBOb3YgMjYgMjE6NTE6MDEgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogTWVyZ2UgdG9nZXRoZXIgdGhlIExpbnV4IGFuZCAqQlNEIHZlcnNpb24gb2Ygc3JjIHBvcnQgc2VuZGluZy4KKworY29tbWl0IDdhY2NiNjliYWExZmMwYjZhMzQzOWQyZTU0OWM4NmRhMzQ1M2JhZDIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBEZWMgMTEgMTk6MzA6MzEgMjAxMSArMDEwMAorCisgICAgVXNlIGEgYmFyZSBzdHJ1Y3QgaW92ZWMgaW4gaW5zdGVhZCBvZiBhIG9uZSBlbGVtZW50IGFycmF5LgorICAgIAorICAgIFRoZSBwdXJwb3NlIG9mIHRoaXMgY2hhbmdlIGlzIHRvIG1ha2UgX3JlY3Zmcm9tIG1vcmUgc2ltaWxhciB0byBfc2VuZHRvLgorCitjb21taXQgMzk4NTJjZDRjODVlZjJiZmM3NWNkZWEyODI1MjYxZWU5M2U3NjhjMgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIERlYyAxMSAxOToyOToyMCAyMDExICswMTAwCisKKyAgICBBZGQgY29tbWVudCBkZXNjcmliaW5nIHRoZSBwdXJwb3NlIG9mIHRoZSBjYWxsIHRvIGdldHNvY2tuYW1lIGFmdGVyIGFsbW9zdCByZW1vdmluZyBpdC4KKworY29tbWl0IDFiMjkyY2EyN2VhYjVjYWE3M2ZlYWFhODNkYzljMTJhYmMwZjJlNzAKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBEZWMgMTEgMTk6Mjc6NTkgMjAxMSArMDEwMAorCisgICAgUmVkdWNlIHZhcmlhYmxlIHNjb3BlLgorCitjb21taXQgYmM4Nzk1NzFlY2E5NTIwYmMxMzJmODQwYzNlNjU5ZDM3OTMxNDRkNworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIERlYyAxMSAxOToyNTozNiAyMDExICswMTAwCisKKyAgICBJbnRyb2R1Y2UgdGVtcG9yYXJ5IHZhcmlhYmxlcyB0byBlYXNlIHRoZSBleHRyYWN0aW9uIG9mIHRoZSBzZXJ2ZXIgYWRkcmVzcy4KKworY29tbWl0IGI3ZWVhNmNmZmJkODcyOTMyY2UyYzA0ZmVmYjZmNDNkZTMzOWYzNzQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBEZWMgMTEgMTk6MTg6MzMgMjAxMSArMDEwMAorCisgICAgUmVuYW1lIHRoZSBjbWVzZ3B0ciB2YXJpYWJsZSB0byBjbS4KKyAgICAKKyAgICBUaGUgcHVycG9zZSBvZiB0aGlzIGlzIHRvIGluY3JlYXNlIHRoZSByZWFkYWJpbGl0eSBvZiB0aGUgY29kZS4KKworY29tbWl0IDBhNzQ2MWU3Mjg4MDVjNjJhMWNhYjlkODdiZmM3NGM3OTI3YTlmY2MKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBEZWMgMTEgMTk6MTU6MjIgMjAxMSArMDEwMAorCisgICAgRmFjdG9yIG91dCBhIGNvbW1vbiBsb29wIGluIHJlY3Ztc2cgb3B0aW9uIHByb2Nlc3NpbmcuCisKK2NvbW1pdCBiM2M2MjQ4ZDAyMDFhYjE2MTA4NDBkNmQwZTc0OWIzYjZjNGFkNzkyCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDExIDE5OjEzOjQzIDIwMTEgKzAxMDAKKworICAgIFVuaWZ5IHRoZSBzdHJ1Y3R1cmUgb2YgTGludXggYW5kIEJTRCByZWN2bXNnIG9wdGlvbiBwYXJzaW5nIHNvbWV3aGF0LgorCitjb21taXQgMzU2NDAwZDYyOTBhNDIzYjUyZWJlZWE1YTVlOTc2ZmIxNWJiNzNiNAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIERlYyAxMSAxOTowNDo1NiAyMDExICswMTAwCisKKyAgICBVc2UgQ01TR19EQVRBIG9uIHRoZSByZXN1bHQgb2YgQ01TR19GSVJTVC9ORVhUSERSLCBub3Qgb24gdGhlIGJ1ZmZlci4KKworY29tbWl0IDNiMzUxNzA4YzYyZGU0NmFhMWI5MGVkMjMyY2ZkOGM3YzViMDIyMzEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgOCAxMjowMDozMiAyMDExICswMTAwCisKKyAgICBSZW1vdmUgYSBjYXN0CisKK2NvbW1pdCBkZTkyNTBkOWRhZTk3MjdhNmNjN2Y2NDc2ODhkZGRmMWI4NTk3MTI4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDggMTE6NTg6MDQgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IE1ha2Ugc3ByaW50X21pYl9vaWQoKSB0cmVhdCBPSUQgY29tcG9uZW50cyBhcyB1bnNpZ25lZCBpbnN0ZWFkIG9mIHNpZ25lZCBpbnRlZ2VycworCitjb21taXQgMGUzM2IzYjZkNTg1NGE0YmFjMTVkNGVhNWUwMTZjNTNkMTYxZDBjZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IERlYyA4IDEwOjAyOjI4IDIwMTEgKzAxMDAKKworICAgIEZpeCByZWNlbnRseSBpbnRyb2R1Y2VkIGNvbXBpbGVyIHdhcm5pbmdzCisKK2NvbW1pdCBiN2U1MGQ1ZjlhNjc1NTk4MmQyYWYzMTkxNDczY2IzNDY0M2JjMDNmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDggMDg6Mzc6MjIgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUmVkdWNlIG92ZXJoZWFkIG9mIGNvbmZpZyBmaWxlIHBhcnNpbmcKKworY29tbWl0IDczYzllZTQyZDI4YWZlMmUxMDdhN2Q2NjE2YjZkMDExODkwYzM2ZWEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgOCAwOTowOTo1OSAyMDExICswMTAwCisKKyAgICBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcworCitjb21taXQgM2RiOTc5NjJiMzdlYjEyZDI1NGQ2MWU2YmUyMzRiMDZhMzkxYzhiYgorQXV0aG9yOiBCaWxsIEZlbm5lciA8ZmVubmVyQGdtYWlsLmNvbT4KK0RhdGU6ICAgVGh1IERlYyA4IDA3OjQzOjQ1IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSCAzNDUzODY4OiBmcm9tICJCaWxsIEZlbm5lciA8ZmVubmVyQGdtYWlsLmNvbT4iOiBGYWN0b3IgY29tbW9uIGNvZGUgaW50byBwYXNzX2NvbW1vbgorICAgIAorICAgIE1vdmUgdGhlIGNvZGUgZm9yIHBvcm1hdHRpbmcgYW5kIHByaW50aW5nIHZhbHVlcyBmcm9tIHBhc3MgYW5kIHBhc3NfcGVyc2lzdAorICAgIGludG8gcGFzc19jb21tb24uCisKK2NvbW1pdCBiNjU2OGM4M2YxNzU2ZTlhNjU0MzRlZGVlZWI0MGQyM2RkYmJiNjUyCitBdXRob3I6IGNjY2hpdSA8Y2NjaGl1QHNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIERlYyA3IDE2OjI1OjI3IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IEJVRzogMzQ1MjA2OTogRml4IHNubXB0cmFwX29pZCBkZWNsYXJhdGlvbiBpbiBtaWIyYyBnZW5lcmF0ZWQgY29kZQorICAgIAorICAgIFRoaXMgYnVnIHdhcyBpbnRyb2R1Y2VkIGNvbnNpZGVyYWJsZSB0aW1lIGFnby4gSXQgZGlkIGFscmVhZHkgZXhpc3QgYXQgdGhlCisgICAgdGltZSB0aGUgNS42IGJyYW5jaCB3YXMgY3JlYXRlZCAoc2VlIGFsc28gY29tbWl0CisgICAgMGVjMDg4YWZhMjdjZmRhNGU2ZWE3OGFhZTdjZmM1NTA3NTY0ZWRkZSkuCisKK2NvbW1pdCBkNDk0ZGI2NGMyMDhiNGRjNjI4MTMxMzJmODg2M2JkNWMxYTM5ZDc3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDEgMTA6Mzg6MTcgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcHRyYXBkOiBFbGltaW5hdGUgYW4gdW51c2VkIHZhcmlhYmxlIChOb3cpCisKK2NvbW1pdCAyOGYyNTYxYmMyOTM1ZDhlMWNiZjQ2ZDI4MjAxNTgxNzNlN2E0Y2Y0CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDEgMTA6Mzc6MTEgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcHRyYXBkOiBNb3ZlIHRoZSBtYWluIGxvb3AgY29kZSBpbnRvIGEgbmV3IGZ1bmN0aW9uCisKK2NvbW1pdCAzOTZlMTIyZGRjNDJhOTE2ZjA2YTAyODg0YzBlOGEyNThlZGJlMjM4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDEgMDk6MzI6MTYgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IE1hdGNoIGVhY2ggZ2V0cHduYW0oKS9nZXRwd3VpZCgpIGNhbGwgd2l0aCBhbiBlbmRwd2VudCgpIGNhbGwgYW5kIGVhY2ggZ2V0Z3JlbnQoKSBjYWxsIHdpdGggYW4gZW5kZ3JlbnQoKSBjYWxsLgorCitjb21taXQgM2VmZWZiYzAwMjQzOTk3ODZmOGI2OGIxZTkzYjBhOGZkZGRkYzdkYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IERlYyAxIDEwOjQxOjAxIDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXB0cmFwZDogUmVtb3ZlIHN1cGVyZmx1b3VzIGNhc3RzCisKK2NvbW1pdCA3ZjA1ZGFhOGUwZTBmNTMzYjBmMTJhM2UxY2YwNzY0MTUxOTkwOWQ2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDEgMTE6NTg6MzIgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogQlVHOiAzNDQ0OTM5OiBCVUc6IDE3OTY4ODY6IHNubXBsaWI6IEF2b2lkIHRoYXQgc3ByaW50X3JlYWxsb2Nfb2N0ZXRfc3RyaW5nKCkgZW1iZWRzIHVucHJpbnRhYmxlIGNvbnRyb2wgY2hhcmFjdGVycyBvciBiaW5hcnkgemVyb2VzIGluIGl0cyBvdXRwdXQuIFRoaXMgYmVoYXZpb3IgY291bGQgY2F1c2UgdHJ1bmNhdGVkIG91dHB1dCBpbiBzbm1wdHJhcGQuCisKK2NvbW1pdCBkYjhmNTU4ZmQyZjNiN2MxMDllYTNhMWMyMTMzYjc1YjZmOGNiMmFkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDEgMTA6MDQ6NDEgMjAxMSArMDEwMAorCisgICAgQ29tcGlsZXIgd2FybmluZyBmaXg6IHBhc3MgdW5zaWduZWQgY2hhcnMgdG8gaXNwcmludCgpIGluc3RlYWQgb2Ygc2lnbmVkIGNoYXJzLgorCitjb21taXQgODAwZGMxMDI4ZTdlMGNkOGNjMTRkODRkZDMxNzIzZDQ3YWMwNzNkYgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVGh1IERlYyAxIDEwOjE4OjU4IDIwMTEgKzAxMDAKKworICAgIFJlZHVjZSB0aGUgc2NvcGUgb2YgdGhlIGhpbnQgdmFyaWFibGUKKworY29tbWl0IDgzZWE0YTA4MGM5MGE3NGI5NzQzZDNmMjRjZjBkNGI4YTFlOGM4NDkKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBOb3YgMjcgMjE6MTY6NTIgMjAxMSArMDEwMAorCisgICAgUmVkdWNlIHRoZSBzY29wZSBvZiB0aGUgdmFyaWFibGUgcW9zCisKK2NvbW1pdCA3YjllMDM0NDFjM2RjM2EwNzY3MGVkMDFmNWQwNDc5MWE4MmM3NTBjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTm92IDMwIDE0OjA0OjAxIDIwMTEgKzAxMDAKKworICAgIFJlbW92ZSAjZGVmaW5lIHZhbCh4KSBfX1NUUklORyh4KSBhbmQgY2hhbmdlIHZhbCh4KSBpbnRvIF9fU1RSSU5HKHgpLgorCitjb21taXQgMmYzNzliMGU0ZWNhZGZhNGU1NDFlMzAwNWM4ZmM4MjgxODgyYjc0MQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE5vdiAzMCAxNTo1ODo0NyAyMDExICswMTAwCisKKyAgICBGb2xsb3ctdXAgZm9yIGNvbW1pdCAxYWE3MDRlOiB1bmJyZWFrIHRoZSBNU1ZDIGJ1aWxkCisKK2NvbW1pdCA2NGVmMGY3MTEyNzYxNzgzNzAyN2ZiMmNmYWYxNzRiOTViYTc5ZTBkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTm92IDMwIDE0OjE5OjUwIDIwMTEgKzAxMDAKKworICAgIEFkZCBTTk1QOjpyZWdpc3Rlcl9kZWJ1Z190b2tlbnMoKQorCitjb21taXQgN2JlYWQ5Y2E5MTdjNjc1NjZkNWVkOThhYjUwN2JiYzAyODE2MjE3ZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE5vdiAzMCAxNDowODowOCAyMDExICswMTAwCisKKyAgICBBZ2VudFggc3ViYWdlbnQ6IFJlZHVjZSBjb2RlIGR1cGxpY2F0aW9uCisKK2NvbW1pdCAwZWQ3MTU0MWY4N2U3ZDc4YmM5OThlZWJkYTMyMTdjNTllMWRmODMwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTm92IDMwIDE0OjAzOjE5IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEFkZCBEb3h5Z2VuLXN0eWxlIGZ1bmN0aW9uIGhlYWRlciBmb3IgbmV0c25tcF9yZWdpc3Rlcl9kZWZhdWx0X3RhcmdldCgpIGFuZCBuZXRzbm1wX2NsZWFyX2RlZmF1bHRfdGFyZ2V0KCkuCisKK2NvbW1pdCA4YzI5NzJiNjFlNDAxNjliNDdjNTA5ODhiNmFlOWU4YzI4NWY4NGY4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTm92IDMwIDE0OjAyOjU0IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHBlcmw6IEZpeCBzcGVsbGluZyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgU05NUCBtb2R1bGUKKworY29tbWl0IDVkZjJiYWM2YmQ3MTc3OTkzMTFmMDAxYWM3YjczZGI4OGYxMWJkZGEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFR1ZSBOb3YgMjkgMDg6NTk6NTggMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogT25seSB0cmFuc2Zvcm0gdGhlIGFkZHJlc3MgdG8gcHJpbnRhYmxlIGZvcm0gd2hlbiBuZWVkZWQuCisKK2NvbW1pdCAxNzFlOGQ0OGQ0YWYwNDAxM2NmZjhmZDI4ZjUzNDFhMmFlZjIxZDg4CitBdXRob3I6IE1pam8gU2FmcmFkaW4gPHNhZnJhZGluQGxpbnV4LnZuZXQuaWJtLmNvbT4KK0RhdGU6ICAgVHVlIE5vdiAyOSAxNjo0OTo0NiAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wLWJyaWRnZS1taWI6IEZpeCBpbmRleCBpbnRlcnByZXRhdGlvbi4KKyAgICAKKyAgICBUaGlzIHBhdGNoIGNvcnJlY3RzIGEgd3JvbmcgZGF0YSBpbnRlcnByZXRhdGlvbi4KKyAgICBzbm1wLWJyaWRnZS1taWIgb2J0YWlucyB0aGUgaWZpbmRleCB2YWx1ZSBmcm9tIHRoZSBzeXNmcworICAgIGF0dHJpYnV0ZSAnaWZpbmRleCcgVGhlIHZhbHVlIGdpdmVuIGJ5IHRoZSBzeXNmcyBhdHRyaWJ1dGUKKyAgICBpcyBhbiBpbnRlZ2VyLCB3aGljaCBpcyBoYW5kbGVkIGFzIGhleCBhbmQgbGVhZHMgdG8KKyAgICBpbmNvcnJlY3QgZGF0YSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuCisgICAgCisgICAgZS5nLgorICAgICAgICAkID4gc25tcHdhbGsgbG9jYWxob3N0IEJSSURHRS1NSUI6OmRvdDFkQmFzZVBvcnRJZkluZGV4LjIKKyAgICAgICAgQlJJREdFLU1JQjo6ZG90MWRCYXNlUG9ydElmSW5kZXguMiA9IElOVEVHRVI6IDU0CisgICAgCisgICAgYWNjb3JkaW5nIHRvIHRoZSBzeXNmcyBhdHRyaWJ1dGUgdGhlIHZhbHVlIGlzIDM2CisgICAgCisgICAgICAgICQgPiBjYXQgL3N5cy9jbGFzcy9uZXQvPGRldmljZT4vaWZpbmRleAorICAgICAgICAzNgorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IE1pam8gU2FmcmFkaW4gPHNhZnJhZGluQGxpbnV4LnZuZXQuaWJtLmNvbT4KKworY29tbWl0IDgyZTM5ZmI2NzA2ZGY5MGVjZjJmYzllMTBhZGEyYjk2MmVlMTk2ZjMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgTm92IDI5IDEyOjI3OjQ2IDIwMTEgKzAwMDAKKworICAgIEZpeCBtdWx0aS1saW5lIGNhc2UgdGVzdGluZyBvZiBpbmNvbWluZyBPSUQKKworY29tbWl0IGIxNWRhMWE0NTE2MDYxMTA1YTFlYWM3NDUwY2Y2NTBlYzQ0MjY2YjIKK0F1dGhvcjogTmlrb2xheSBEZW5ldiA8bmRlbmV2QGdtYWlsLmNvbT4KK0RhdGU6ICAgVHVlIE5vdiAyOSAwODoyOTo0OSAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBGcmVlQlNEOiBSZXN0b3JlIElQX1JFQ1ZEU1RBRERSIGZ1bmN0aW9uYWxpdHkuCisKK2NvbW1pdCA3ZjQ3ZjUyZTQ4MWJhYTlhYWZiNTc4NDI0NGIwZGQyNjUzZTdkY2ZmCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBNb24gTm92IDI4IDA4OjUxOjM5IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFVzZSBTTk1QX0FMTE9DX1RZUEVERUYgdG8gYWxsb2NhdGUgdHJhbnNwb3J0cyBpbiBvcmRlciB0byBhdm9pZCB0aGUgc2VwYXJhdGUgY2FsbCB0byBtZW1zZXQuCisKK2NvbW1pdCBjZjg2MDM5ZTMwODYyMjVjMzA4NWJiOWFkZjA4OGI4YmE1YmE2OTc5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTm92IDIyIDE1OjAyOjU4IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IE1pbkdXOiB0ZXN0aW5nOiBNYWtlIHVuaXQtdGVzdHMvVDEwMnBkdV9idWlsZF9jbGliIHBhc3MuCisKK2NvbW1pdCAxYTg3ZTc2ZTAwZWUzZDVjZDM3YTA3YmZjM2Q4NDQ5MGQzYzJhNGVjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTm92IDIyIDE0OjU1OjQyIDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IE1pbkdXOiB0ZXN0aW5nOiBNYWtlIHVuaXQtdGVzdHMvVDAxNGdldGhvc3RieWFkZHJfY2xpYiBwYXNzCisKK2NvbW1pdCA4ODY3ZmQxZGNmZTcyYjU5ZDA3MzIyZmYzOGE2OTliNjZlYzRmMzI2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTm92IDIyIDA5OjQ0OjM4IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IE1ha2UgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKCkgcm9idXN0IGFnYWluc3QgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMuCisgICAgCisgICAgQ0hBTkdFUzogc25tcGxpYjogTWFrZSBORVRTTk1QX0xBUkdFX0ZEX1pFUk8oKSB1c2UgbWVtc2V0KCkgb24gVW5peCBzeXN0ZW1zIGluc3RlYWQgb2YgYW4gZXhwbGljaXQgbG9vcC4KKyAgICBDSEFOR0VTOiBzbm1wbGliOiBNYWtlIHN1cmUgdGhhdCBvbiBVbml4IHN5c3RlbXMgbmV0c25tcF9sYXJnZV9mZF9jbHIoKSBkb2Vzbid0IHRyeSB0byByZWFkIG1lbW9yeSBpdCBpc24ndCBhbGxvd2VkIHRvIHJlYWQgaWYgdGhlIGZpcnN0IGFyZ3VtZW50IGVxdWFscyAtMSAoYSB2YWx1ZSB0aGF0IHNob3VsZG4ndCBiZSBwYXNzZWQgYnkgdGhlIGNhbGxlcikuCisgICAgQ0hBTkdFUzogc25tcGxpYjogTWFrZSBuZXRzbm1wX2xhcmdlX2ZkX2lzX3NldCgpIHJldHVybiBmYWxzZSBvbiBVbml4IHN5c3RlbXMgaWYgdGhlIGZpcnN0IGFyZ3VtZW50IGVxdWFscyAtMSAoYSB2YWx1ZSB0aGF0IHNob3VsZG4ndCBiZSBwYXNzZWQgYnkgdGhlIGNhbGxlcikuCisgICAgQ0hBTkdFUzogV2luZG93czogTWFrZSBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoKSBzaHJpbmsgYmVoYXZpb3IgY29ycmVjdC4KKworY29tbWl0IDIzZGIwY2YwOWI4YjBlYWIzN2I3NDllZjBjM2MzZjMwNjkwMDI0NWMKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKdWwgMjggMTU6MTk6MjIgMjAxMSArMDIwMAorRGF0ZTogICBNb24gTm92IDIxIDIzOjAyOjU3IDIwMTEgKzAxMDAKIAotICAgIENIQU5HRVM6IHNubXBkOiBSZXN0b3JlIHN0b3JhZ2UgdGFibGVzIG9uIExpbnV4CisgICAgRml4IGNhc3RpbmcgdHZfdXNlYyB0byBpbnQgd2hpY2ggbWF5IGJlIHRvbyBzaG9ydAogCi1jb21taXQgZDYyYTBlYjkwNzBiNGQ4ZDlmZTJiY2ZkYjRkNTNkMzdlZjgxNGY5YgotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKdWwgMjggMTQ6NDk6MDggMjAxMSArMDIwMAorY29tbWl0IDgwZWU0MDIyZTUzNGU2NGFhZDVhNWYyNzE5Mjg0M2I0MmFjYjg1ZTAKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBOb3YgMTkgMDk6MTQ6MDIgMjAxMSArMDEwMAogCi0gICAgRG9jdW1lbnQgaW50ZXJmYWNlX3JlcGxhY2Vfb2xkIG9wdGlvbi4KKyAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzNDM5MjM0OiBNb3ZlIG5ldHNubXBfcGFzc19zdHJfdG9fZXJybm8gdG8gcGFzc19jb21tb24gYW5kIHJlbmFtZSBpdCB0byBuZXRzbm1wX2ludGVybmFsX3Bhc3Nfc3RyX3RvX2Vycm5vCiAKLWNvbW1pdCBmNjYwYjhjMGQ4YzI3MDdiZDczMTQyZjA3NjA3OWM5MTY5ZjM1OTU2Ci1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEp1bCAyOCAxNDo0MDoyNyAyMDExICswMjAwCitjb21taXQgMGJhYTkyOTZjMDcyYmIzNzM1NzYwYjBkZDk5MmYyZDFkM2NhMjdmYQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IE5vdiAxOSAwOTowNToyNCAyMDExICswMTAwCiAKLSAgICBDSEFOR0VTOiBzbm1wZDogYWRkZWQgJ2ludGVyZmFjZV9yZXBsYWNlX29sZCcgb3B0aW9uIHRvIHJlbW92ZSBvbGQgZW50cmllcwotICAgIGluIGlmVGFibGUgd2hlbiBhbiBpbnRlcmZhY2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIGFscmVhZHkgZXhpc2luZyBvbmUKLSAgICBhcHBlYXJzLgotICAgIAotICAgIEUuZy4gcmVtb3ZlIG9sZCBwcHAwIGludGVyZmFjZSB3aGVuIG5ldyBwcHAwIHNob3dzIHVwLgorICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDM0MzkyMzQ6IENvcnJlY3QgdGhlIGRlcGVuZGVuY2llcyBvZiB1Y2Qtc25tcC9wYXNzIGFuZCB1Y2Qtc25tcC9wYXNzX3BlcnNpc3QKIAotY29tbWl0IDQwNmNhYjgxODkyNjQ5OWMzMTIxZGVjZTQzNzdkNjc2Mzg4OTQwNDIKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSnVsIDI4IDE0OjMyOjU3IDIwMTEgKzAyMDAKK2NvbW1pdCAxYWE3MDRlNGEyOTQ0MzBiMjhlMzliNmY5ZTQ2ODNiOGE0OGJjZTA0CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgTm92IDE5IDA4OjM1OjIxIDIwMTEgKzAxMDAKIAotICAgIERvY3VtZW50IHRoZSBpbnRlcmZhY2VfZmFkZW91dCBvcHRpb24uCisgICAgQ0hBTkdFUzogc25tcGQ6IEZhY3RvciBvdXQgYXNjMmJpbiBhbmQgYmluMmFzYy4gQWRkIGEgbmV0c25tcF9pbnRlcm5hbF8gcHJlZml4IHRvIHRoZW0KIAotY29tbWl0IDQyYjg4M2NlMThlNThjYTg5ZmRmZDUxNGVjNjk4ZTJmN2ZmZDFmNjMKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSnVsIDI4IDE0OjMyOjM4IDIwMTEgKzAyMDAKK2NvbW1pdCBjZGE4ZmU5MTAxM2YxMmNiZjY0YTA3NzVhYmI1NTcyMDAzNWFmOTMxCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgTm92IDE5IDAwOjU1OjI0IDIwMTEgKzAxMDAKIAotICAgIEFsbG93IGlmVGFibGUgZW50cmllcyB0byBiZSBkZWxldGVkIGltbWVkaWF0ZWx5IHdoZW4gYXBwcm9wcmlhdGUgaW50ZXJmYWNlCi0gICAgZGlzYXBwZWFycyAoaS5lLiBpbnRlcmZhY2VfZmFkZW91dCA9IDAgd29ya3MgYXMgZXhwZWN0ZWQpLgorICAgIENIQU5HRVM6IHNubXBkOiBDYWxsIHNubXBfb2lkdHJlZV9jb21wYXJlIGluc3RlYWQgb2Ygc25tcF9vaWRfbWluX2NvbXBhcmUKKyAgICBDSEFOR0VTOiBzbm1wZDogUmVtb3ZlIHNubXBfb2lkX21pbl9jb21wYXJlIHNpbmNlIGl0IGlzIGludGVybmFsIGFuZCB1bnVzZWQKIAotY29tbWl0IDQ1MDYyZWE0N2JlMWNkOGRmNDkzM2EwZGU3ZjcyZjhjZjkxODNhYWUKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSnVsIDI4IDEyOjI0OjEwIDIwMTEgKzAyMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBhZGRlZCAnaW50ZXJmYWNlX2ZhZGVvdXQnIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIHNldCBsaWZldGltZSBvZiBpZlRhYmxlIGVudHJpZXMgb2YgcmVtb3ZlZCBpbnRlcmZhY2VzLgotICAgIAotICAgIFByZXZpb3VzIGxpZmV0aW1lIHdhcyBoYXJkY29kZWQgNSBtaW51dGVzLCBub3cgaXQncyBjb25maWd1cmFibGUuCi0KLWNvbW1pdCAzMWZhMDdjZDlmZmRlNDZkNDFkMmI1ODM4YzNmYzRkMDE1NDhiZmI1Ci1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1bCAyNyAxNDo0NTo0NyAyMDExICswMjAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogcHVyZ2Ugem9tYmllcyBvZiBwYXNzX3BlcnNpc3QgY2hpbGQgcHJvY2Vzc2VzLgotICAgIAotICAgIElmIHBhc3NfcGVyc2lzdCBwcm9jZXNzIGVuZHMsIHdlIHNob3VsZCBwcm9jZXNzIGl0cyBzaWdjaGlsZCBzaWduYWwuCi0KLWNvbW1pdCAxMWJkNmUwMzJkMTVmZmIxMWQ3MmUzNTJjYTZiYzk1MDIzYzMzNzFhCi1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1bCAyNyAxNDo0NTowOSAyMDExICswMjAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogcnVuIHNpZ25hbCBoYW5kbGVycyB3aGVuIHNlbGVjdCgpIGlzIGludGVycnVwdGVkLgotICAgIAotICAgIFRoaXMgYmVoYXZpb3IgaXMgaW5kaWNhdGVkIGluIGNvbW1lbnQgb24gbGluZSAxMjQ0LCBidXQgaXQgd2FzIG5vdCBhY3R1YWxseSBkb25lLgotCi1jb21taXQgY2Q2ZTM4MmJlZGE4ZDQwZWRkMDY2NGU4ZmFlYzhkYjIyNGU1ZDVkNgotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgVHVlIEp1bCAyNiAxNjoxNjo0NiAyMDExICswMjAwCi0KLSAgICBDbGFyaWZ5IGFuIElQdjYgc291cmNlIGNvZGUgY29tbWVudAotCi1jb21taXQgMmNlYzYyNDc5MmFmODU0NjUwNWZiYTAyY2EwYTJlMjExNmE1NTllNwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgVHVlIEp1bCAyNiAxNDo1OTozMyAyMDExICswMjAwCi0KLSAgICBTcGVsbGluZyBmaXg6IGRlZmluZWR5IC0+IGRlZmluZWQKLQotY29tbWl0IGY5NWExZjM4MGVhMThmZjYzM2YyNzNhOWFhNWU5ZWIyNzYyNzAxMGUKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIFR1ZSBKdWwgMjYgMTQ6MTk6MTQgMjAxMSArMDIwMAotCi0gICAgU3BlbGxpbmcgZml4OiBhbGV2aWF0ZSAtPiBhbGxldmlhdGUKLQotY29tbWl0IGM1YTg0NjRjNDJhOTRjMjUwZWUyZGZhMmE0NzMxMDlhNzM0MjAzZDgKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSnVsIDI2IDE0OjI0OjU1IDIwMTEgKzAyMDAKLQotICAgIENIQU5HRVM6IHB5dGhvbjogUEFUQ0g6IDMzMTAzNzU6IGZyb20gRXJpbm4gTG9vbmV5LVRyaWdnczogZml4ZWQgcGFyc2luZyBvZiB2YXJiaW5kcyB3aXRoIE1JQiBuYW1lcwotCi1jb21taXQgZjljY2JjNzcyNjY2MTM0ZDFkMTc4YjUwNWFmOWRkY2RkOWVkNDI0NAotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBKdWwgMjUgMTU6MDI6MTUgMjAxMSArMDIwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IGF2b2lkIGRpdmlzaW9uIGJ5IHplcm8gaW4gVUNELVNOTVA6OmRza1RhYmxlCi0KLWNvbW1pdCBjMTRmYzM4NjE0YmFmMTBkNTE3MTM2ZjA0ODA5MDdiN2YwM2Q4ZDc0Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVsIDIwIDEzOjQ0OjU5IDIwMTEgLTA3MDAKLQotICAgIFVwZGF0ZWQgdGhlIHdvcmRpbmcgY2hvaWNlcyBhIGJpdCBhbmQgbGlzdGVkIHRoZSBoYW5kbGVyIHR5cGVzIGl0cyBwcm9kdWNpbmcKLQotY29tbWl0IDQ1ZmY3NzhmNTcxNjRmMWUyZTU1MDIzNzA3NDNkZWJkN2VhYmYyYmUKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKdWwgMTkgMTg6MzY6MTEgMjAxMSAtMDcwMAotCi0gICAgcmVtb3ZlIGJyb2tlbiB3aGl0ZXNwYWNlIGxpbmVzIHRoYXQgbGVhZHMgdG8gcmVhZGluZyBjb25mdXNpb24KLQotY29tbWl0IGViZGQyMTZjMDc0YmY0MWNkM2EwODRiZDE0Njg5Y2YwMWM4ODdiMzEKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKdWwgMTkgMTg6MzY6MTEgMjAxMSAtMDcwMAotCi0gICAgcmVtb3ZlIGJyb2tlbiB3aGl0ZXNwYWNlIGxpbmVzIHRoYXQgbGVhZHMgdG8gcmVhZGluZyBjb25mdXNpb24KLQotY29tbWl0IGQ2NWM3YjE0YTBmOTE1NjBiYmY2NTI3NGY2MmU0OGRiOTdhMzRiM2UKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKdWwgMTkgMTg6NDY6MTAgMjAxMSAtMDcwMAotCi0gICAgdXBkYXRlZCBnaXRpZ25vcmUgdG8gaWdub3JlIGEgbnVtYmVyIG9mIGF1dG8tZ2VuZXJhdGVkIGZpbGVzCi0KLWNvbW1pdCBhYjFkODg3YmEzODNjMzNkODUzYWE0ZDM0OGJiY2VhYjk4MWFhMjQ1Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSnVsIDE5IDE4OjM2OjExIDIwMTEgLTA3MDAKLQotICAgIHJlbW92ZSBicm9rZW4gd2hpdGVzcGFjZSBsaW5lcyB0aGF0IGxlYWRzIHRvIHJlYWRpbmcgY29uZnVzaW9uCi0KLWNvbW1pdCBkZjVmNzAwNTVjZjliZTMzZjA1ZmI1MGFiZTJmNWE4MWVhYzA5MmFkCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBUdWUgSnVsIDE5IDExOjA3OjE5IDIwMTEgKzAyMDAKLQotICAgIFJlcmFuIGF1dG9yZWNvbmYKLQotY29tbWl0IDcwZGVlNGI4ZGQzN2U4YjFkNTlkYjAzY2Q3ZjYzMWZlMzU2ZjE5ZTQKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIFR1ZSBKdWwgMTkgMDk6Mzg6MTYgMjAxMSArMDIwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAzMzY5NjgwOiBmcm9tIElseWEgWWFub2s6IGNoYW5nZSBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzIGZyb20gaW50IHRvIGxvbmcgc3VjaCB0aGF0IG1vZGlmeWluZyB0aGUgY29ycmVzcG9uZGluZyBNSUIgb2JqZWN0IGRvZXMgbm90IG92ZXJ3cml0ZSBtZW1vcnkgaW4gNjQtYml0IGJ1aWxkcy4KLQotY29tbWl0IDBmMzA5YjQ5M2MyMWQzYzY5MTQ0ODc1MTRiNDE1NjA3NTRmZmNkZjkKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIFR1ZSBKdWwgMTkgMDg6Mzc6NTAgMjAxMSArMDIwMAotCi0gICAgQ0hBTkdFUzogc25tcHRyYXBkOiBGaXggYSByYXJlIGNyYXNoIHRyaWdnZXJlZCBieSBTSUdURVJNIGJ5IG1vdmluZyBzaHV0ZG93bl9wZXJsKCkgZnJvbSB0aGUgU0lHVEVSTSBzaWduYWwgaGFuZGxlciB0byB0aGUgY2xlYW51cCBjb2RlIHNlY3Rpb24gaW4gbWFpbigpLgotCi1jb21taXQgNjkwZWE3ZGM0NWM2ZmUxYTdiYmZhMTU4NGVkOWJmOTIxZjE5YjI4ZgotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgVHVlIEp1bCAxOSAwODoyODo1OSAyMDExICswMjAwCi0KLSAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IEFkZCBtaXNzaW5nIG5ld2xpbmUgY2hhcmFjdGVyIGluIGEgbG9nIG1lc3NhZ2UKLQotY29tbWl0IGRkMmZjMmVkODhkMGY5YmI4MWRlMzVkYmUxZjliZDNiYmJiYjNkOTAKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIFR1ZSBKdWwgMTkgMDg6Mjg6MTMgMjAxMSArMDIwMAotCi0gICAgQ0hBTkdFUzogc25tcHRyYXBkOiBJbnZva2Ugc2h1dGRvd25fcGVybCgpIHdoZW4gc2h1dHRpbmcgZG93bgotCi1jb21taXQgNmRlZWMxYTg5MDQ4YzhkYjI2NTIzNTE3YWY5OGRkZDM5N2ZjNzdjMwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgVHVlIEp1bCAxOSAwODoyMzowNSAyMDExICswMjAwCi0KLSAgICBTcGVsbGluZyBmaXg6IGJyYW5rZXQgLT4gYnJhY2tldAotCi1jb21taXQgOGQ5ZGNjODA2ZWFiMzdmZTJkZGY5Y2MzNGNmODY0NjcyNjViNjJjZgotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgU3VuIEp1bCAxNyAxMTozODo1OCAyMDExICswMjAwCi0KLSAgICBSdW4gYXV0b3JlY29uZi4gRml4ZXMgYnVpbGQgYnJlYWthZ2UgY2F1c2VkIGJ5IHBhdGNoIGQ1ODhlYzg1M2JkMDUzMWYyMTJmY2JmNTFiOTYyYjk2YzY4MjhiNTkgKFJQTSA0Ljkgc3VwcG9ydCkKLQotY29tbWl0IGQ2MTdkODRmODNmYTY5ZWQ5ZmE5Zjk4ZWZjNGFmYWY4ODBkMTIxZjIKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIFRodSBKdWwgMTQgMTY6NDM6NDcgMjAxMSArMDIwMAotCi0gICAgU3BlbGxpbmcgZml4OiBicmFua2V0IC0+IGJyYWNrZXQKLQotY29tbWl0IGM0OGNlZWY5NDFjZTAzNmQyNjc1YWU5NDJkZWFkODU0Y2Y1YTFlMGQKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIFRodSBKdWwgMTQgMTY6NDI6MDAgMjAxMSArMDIwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogTWFrZSBuZXRzbm1wX2lwdjZfZm10YWRkcigpIHNob3cgdGhlIElQdjYgc2NvcGUgSUQKLQotY29tbWl0IDdiYWQ3OGU1MTk0MTU3NjkwNGFmZDYyY2M5MTM2NjY3MDhmOGY0NmMKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIFN1biBKdWwgMTcgMTE6MDQ6MzQgMjAxMSArMDIwMAotCi0gICAgQ0hBTkdFUzogV2luMzI6IEFkZCBzdXBwb3J0IGZvciBJUHY2IGFkZHJlc3Mgc2NvcGUgSUQKLQotY29tbWl0IDRmYjFmMGVkYTc5MDlhYWRhNmFiYzViZDhkYmYwMTRkMTE1ZmRiNGUKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIFN1biBKdWwgMTcgMTE6MDc6MTAgMjAxMSArMDIwMAotCi0gICAgUnVuIGF1dG9yZWNvbmYKLQotY29tbWl0IGE1NjcyMWEzZTc3NTRlMzg5ZGFhN2U4YTNkNTc5Mjg5OWVkYzlkZTMKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIFRodSBKdWwgMTQgMTY6MTg6MzIgMjAxMSArMDIwMAotCi0gICAgQWRkIGF1dG9tNHRlLmNhY2hlIGFuZCBzdGFtcC1oIHRvIC5naXRpZ25vcmUKLQotY29tbWl0IDg1MWJjZjUzZmNkMTNjZGYwYmE5ZjEyZTVkNjAzZTczZjhiYjk2MTEKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKdWwgMTUgMTU6MzI6NDkgMjAxMSAtMDcwMAotCi0gICAgbWVudGlvbmUgdGhlICdiZWZvcmUnIHBhcnQgb2YgdGhlIGluamVjdEhhbmRsZXIgbGluZQotCi1jb21taXQgOWY3OTM2MzAxNjJjYjc3MTNhYzRiNjhjOWFhYmU1MGU2NzUxNDA3MQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEp1bCAxNCAwNzozMTozMCAyMDExIC0wNzAwCi0KLSAgICBmaXggYSB0eXBvCi0KLWNvbW1pdCBlZGMyYzg4Mzc1ZmVjY2IxNzZiY2FkZWI1ODgxMGRkNTdiZDk3ZmI3Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gSnVsIDExIDE5OjMzOjAzIDIwMTEgLTA3MDAKLQotICAgIGFkZGVkIGEgY29weSBvZiB0aGUgc2hlbGwtZnVuY3Rpb25zIHRvIHRoZSBvbGRlciBicmFuY2gKLQotY29tbWl0IDk2NGQ2MzUxNDk4MmQ2ZGQ5ZmE5NTAyMGQyNGEzZTg4YjIyZjJkMGMKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBKdWwgMTEgMTk6MzA6MjkgMjAxMSAtMDcwMAotCi0gICAgYSBjb3B5IG9mIHRoZSByZWxlYXNlIGZpbGUgYXBwbGllZCB0byB0aGUgb2xkZXIgYnJhbmNoZXMKLQotY29tbWl0IDE5NmUxMTBiMzE0ZTM3ZTczYTc0ZWRiMDNjNDNkYTAyOTllYThiNDQKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBKdWwgMTEgMTk6MzQ6MDYgMjAxMSAtMDcwMAotCi0gICAgYWRkZWQgNS43IHBhdGNoZXMKLQotY29tbWl0IGEyYWMyNGRkNGI1YjcwOTc3M2ZlODI3Njg3Yzg1OTgyNzc1ZDk5OTgKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBKdWwgMTEgMTk6MzM6MDMgMjAxMSAtMDcwMAotCi0gICAgYWRkZWQgYSBjb3B5IG9mIHRoZSBzaGVsbC1mdW5jdGlvbnMgdG8gdGhlIG9sZGVyIGJyYW5jaAotCi1jb21taXQgOGFkMzJjZWZiMzdjNjIwODBjNGYzZDc0NDQzODg0YmVjMWM0OWFkZAotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEp1bCAxMSAxOTozMDoyOSAyMDExIC0wNzAwCi0KLSAgICBhIGNvcHkgb2YgdGhlIHJlbGVhc2UgZmlsZSBhcHBsaWVkIHRvIHRoZSBvbGRlciBicmFuY2hlcwotCi1jb21taXQgOWZmNDcxNDM5ZTMyNjI1NTA2NjM3N2M3NmQ5OTVlMWFhZjI5NmJkMgotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAyOSAyMzoxNTo0MiAyMDExIC0wNzAwCi0KLSAgICBmaXggdGFnIHB1c2hpbmcKLQotY29tbWl0IGY5YTY1Mzg1YjIzZDA2ZGJiZTk0MzBhMjNjOGViY2Y2OGQxMjEyN2UKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMjkgMjI6MzI6MTAgMjAxMSAtMDcwMAotCi0gICAgbWlzYyBwdWJsaWNhdGlvbiBmaXhlcyBmb3VuZCB3aGlsZSBwdWJsaXNoaW5nCi0KLWNvbW1pdCBkZjljZjlhMWUyOTNkMDVhMjQ3ODY2OTRmNjhjMDVhMmJlMTNhOWIzCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDI5IDE2OjM0OjExIDIwMTEgLTA3MDAKLQotICAgIHhtbCBmaXhlcwotCi1jb21taXQgZWU4ZDE2MDQxNmMyZjdkMTk0MTg2M2U3ZDM3NTEyNjU4ZTNmMmYzNgotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAyOSAxNjozMzo1MCAyMDExIC0wNzAwCi0KLSAgICB1c2UgZ2l0MmNsIHRvIGdlbmVyYXRlIHRoZSBDaGFuZ2VMb2cgZmlsZTsgbmVlZHMgbXVjaCBtb3JlIHdvcmsuCi0KLWNvbW1pdCA1ZDRiYjgwMTEzZGRjY2U1Y2VlMjkzYTRlNTM3YjIwMWZhZmNhYjgzCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDI5IDE0OjQ4OjM5IDIwMTEgLTA3MDAKLQotICAgIHVzZSB0aGUgbmV3IHJ1bi1hdXRvY29uZiBzY3JpcHQKLQotY29tbWl0IDYxZmZlZjYyNjg2NzVhOTFlMjMwZDQ0YjM0MDdhM2QwYzNmZmM4OWQKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMjkgMTQ6NDc6NTYgMjAxMSAtMDcwMAotCi0gICAgQSBzY3JpcHQgdG8gaW52b2tlIHRoZSBjb3JyZWN0IHZlcnNpb24gb2YgdGhlIGF1dG9jb25mIHRvb2wKLQotY29tbWl0IGQwZjZmOGRlMzcyOTJiN2ZiYzllMDU3OTM2OTBiNTc4NGEwNDFkNDYKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMjkgMDg6NDE6NDUgMjAxMSAtMDcwMAotCi0gICAgcmVtYWluaW5nIGNvbW1hbmQgbGluZSBjaGFuZ2VzIGZvciBzdm4gLT4gZ2l0Ci0KLWNvbW1pdCAxNjU2MDg0MDAyMGRjNWUwYzRiMjhjYzJlMzBiYjJjZDAzNGNlMGQwCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDI5IDA3OjI2OjU1IDIwMTEgLTA3MDAKLQotICAgIG1ha2UgdGhlIGJyYW5jaCBlY2hvIG91dHB1dCBhbmQgc3ZuIHVwZGF0ZSBjb252ZXJ0ZWQgdG8gZ2l0IGVxdWl2YWxlbnRzCi0KLWNvbW1pdCBmNzc1YmNkNmE3YTUwZjMzNzgyNTI2ZWNkYjFiZWVhNTVlM2ZlODIzCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDI5IDA3OjExOjI5IDIwMTEgLTA3MDAKLQotICAgIHB1bGwgdGhlIGJyYW5jaCBpbmZvIGZyb20gZ2l0Ci0KLWNvbW1pdCBkNTg4ZWM4NTNiZDA1MzFmMjEyZmNiZjUxYjk2MmI5NmM2ODI4YjU5Ci1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAyOSAxNjowNzowMCAyMDExICswMjAwCi0KLSAgICBUd2VhayBSUE0gaGFuZGxpbmcgdG8gd29yayB3aXRoIGxpYnJhcnkgdmVyc2lvbiA0LjkKLQotY29tbWl0IGFmOGIyMzUyMzRmNzI5NDRhNjQ5YTc2ZjBkMzBjZmY5NWFjMmU4OTUKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxvcGVuc291cmNlQGhhcmRha2Vycy5uZXQ+Ci1EYXRlOiAgIFR1ZSBKdW4gMjggMTM6MTE6MTkgMjAxMSAtMDcwMAotCi0gICAgTWVudGlvbiB0aGUgR2l0IHdpa2kgcGFnZQotCi1jb21taXQgOWJjODJlNGNhNDgzN2YwMDA3MmRiYTg2Yjk0OTdhMjcxODY5MDlmOQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgVHVlIEp1biAyOCAxOToxMzozNSAyMDExICswMjAwCi0KLSAgICBBZGQgLmdpdGlnbm9yZQotCi1jb21taXQgZjJkZjhhMmIwMTY1ZTAxMzdmZDAxN2I0MWM3ZDA0ZTNhNWUxNjhlNgotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPG9wZW5zb3VyY2VAaGFyZGFrZXJzLm5ldD4KLURhdGU6ICAgVHVlIEp1biAyOCAwODoyOTowOCAyMDExIC0wNzAwCi0KLSAgICBXZSdyZSBub3cgdXNpbmcgZ2l0IQotCi1jb21taXQgN2Q5MTdjZmM4Zjc0NTc0MDMyNTY0ODE1YWIwZmI0ODNiNjkxODY0ZQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSnVuIDI0IDEzOjAwOjUwIDIwMTEgKzAwMDAKLQotICAgIHZlcnNpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTI0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYTE2MmU5MzFmMjk5MzFjZTAzZDQwZDczZGQ5NjlmNjA4NjA4M2I4MAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSnVuIDI0IDEyOjM4OjE0IDIwMTEgKzAwMDAKLQotICAgIE1pc3NpbmcgY2hlY2sgZm9yIHJwbXRzLmgKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MjMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwNzg3ZmYxZjYzMmUwODQ0MGU4YmIyNDBkYWJjYTVjNWU2M2ZkODJkCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKdW4gMjQgMTI6MjA6MjAgMjAxMSArMDAwMAotCi0gICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTIyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNDUzMGQ4Nzc1MzEwODNiZmZmZDNiYmNhNGE4MmMzMDAwOWJlZjhmZAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSnVuIDI0IDEyOjA4OjIzIDIwMTEgKzAwMDAKLQotICAgIGRvY3VtZW50YXRpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTIxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNDk1NzVmMTM2YjQwZDA4ZDIxYTE2OGEwZDU0NWQ4NWY1OWM1ODcwMQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSnVuIDI0IDEyOjAyOjE1IDIwMTEgKzAwMDAKLQotICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUyMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDU5OWUzY2RmZjllNzg2MjI1MzU2ODNhNjlmNDI5NzdkZjQwODliYTkKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEp1biAyMyAxNTo0MTozOCAyMDExICswMDAwCi0KLSAgICBUd2VhayBSUE0gaGFuZGxpbmcgdG8gd29yayB3aXRoIGxpYnJhcnkgdmVyc2lvbiA0LjkKLSAgICBCYXNlZCBvbiBhIHBhdGNoIGJ5IEphbiBTYWZyYW5lawotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUxOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDVjMmE2OTFiZDI5ZWEzNDMwNDZkMjE4NjIxNTAyYTY2YmM5NmExYmIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAyMiAxNDoyNzozOSAyMDExICswMDAwCi0KLSAgICBQcm92aWRlIGEgZnJhbWV3b3JrIGZvciByZWFkaW5nIFJQTSBwYWNrYWdlIGluZm9ybWF0aW9uIGZyb20KLSAgICBhIGNhY2hlIGRpcmVjdG9yeSAocmF0aGVyIHRoYW4gcXVlcnlpbmcgdGhlIFJQTWRiIGRpcmVjdGx5KS4KLSAgICAKLSAgICBNeSBhcG9sb2dpZXMgdG8gSmVmZiBKb2huc29uIGZvciB0aGUgZGVsYXkgaW4gYWRkaW5nIHRoaXMgZnVuY3Rpb25hbGl0eS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyNzA3NDM1ZWY1ZTAxMWMzNjM3ZjM3OTgxY2JlNGQ1MGYyZTcyOWRjCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMjIgMTM6MjY6NDUgMjAxMSArMDAwMAotCi0gICAgdmVyc2lvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA1MTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyNzJmOTZhZWM5MzdlZDc0Y2M0ZGI5ODA3NDVkMmRiZTAwY2E1M2EwCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMjIgMTM6MDY6NDUgMjAxMSArMDAwMAotCi0gICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNTE1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOWU0NzFhZGMyYTQwMjEyYjRjMDE3Y2JjZWQ2ZTI1ODgyZTMwNmE0ZAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDIyIDEzOjA0OjEyIDIwMTEgKzAwMDAKLQotICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDUxNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGM0YWQyNzgyNGY5YzZlOTFhOWZjMTFkNjYxOTY1NmMzNmQ1ZDY2MTIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEp1biAyMSAxNDoyODo0OCAyMDExICswMDAwCi0KLSAgICBQcm92aWRlIGEgZnJhbWV3b3JrIGZvciByZWFkaW5nIFJQTSBwYWNrYWdlIGluZm9ybWF0aW9uIGZyb20KLSAgICBhIGNhY2hlIGRpcmVjdG9yeSAocmF0aGVyIHRoYW4gcXVlcnlpbmcgdGhlIFJQTWRiIGRpcmVjdGx5KS4KLSAgICAKLSAgICBNeSBhcG9sb2dpZXMgdG8gSmVmZiBKb2huc29uIGZvciB0aGUgZGVsYXkgaW4gYWRkaW5nIHRoaXMgZnVuY3Rpb25hbGl0eS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA1MTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA4YTVhYzc3NWRlNTc1NDE2MDcwNjY1YzMwYmMzZDc3MzM2ZTEyYmNiCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKdW4gMjEgMTQ6Mjg6NDggMjAxMSArMDAwMAotCi0gICAgUHJvdmlkZSBhIGZyYW1ld29yayBmb3IgcmVhZGluZyBSUE0gcGFja2FnZSBpbmZvcm1hdGlvbiBmcm9tCi0gICAgYSBjYWNoZSBkaXJlY3RvcnkgKHJhdGhlciB0aGFuIHF1ZXJ5aW5nIHRoZSBSUE1kYiBkaXJlY3RseSkuCi0gICAgCi0gICAgTXkgYXBvbG9naWVzIHRvIEplZmYgSm9obnNvbiBmb3IgdGhlIGRlbGF5IGluIGFkZGluZyB0aGlzIGZ1bmN0aW9uYWxpdHkuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNTEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNTk0OTM3ZGI3NTVlYjM4MGZjZjZjZDIyMGNlNjJmNmU0YTMxMDNjMwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIEp1biAxOSAwNzo1MjoyNiAyMDExICswMDAwCi0KLSAgICBGb2xsb3ctdXAgZm9yIHIyMDUxMTogcmVhbGx5IHVzZSB0aGUgcHJvcGVyIGZvcm1hdCBzcGVjaWZpY2F0aW9uLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDUxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDQ1MjQyNTViYTYwODNkMjVjMDNmNjQzNmVjYmUzOTg4MzZmNGEwZjgKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBKdW4gMTkgMDc6NTI6MjYgMjAxMSArMDAwMAotCi0gICAgRm9sbG93LXVwIGZvciByMjA1MTE6IHJlYWxseSB1c2UgdGhlIHByb3BlciBmb3JtYXQgc3BlY2lmaWNhdGlvbi4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA1MTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxMDVkZTAyMTljYTJhYTc5ZWQ2NTg1ZmY4ZDBjZTQ1NWExODZkMTBhCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSnVuIDE3IDE5OjA5OjUyIDIwMTEgKzAwMDAKLQotICAgIEZpeCBhIGJ1ZyBpbiBhIGRlYnVnIHN0YXRlbWVudCBpbnRyb2R1Y2VkIGJ5IHBhdGNoIDMzMTAyNTAgLyByMjA0OTQ6IHVzZSAlbGQgdG8gcHJpbnQgYSB2YWx1ZSBvZiB0eXBlIG9pZCBpbnN0ZWFkIG9mICVkLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDUxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDYyMWM5ZWRhMTI4MmI3ZjU2MmIzNzc3YjVmYjU3ZmQzNTVjMWEyMDYKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKdW4gMTcgMTk6MDk6NTIgMjAxMSArMDAwMAotCi0gICAgRml4IGEgYnVnIGluIGEgZGVidWcgc3RhdGVtZW50IGludHJvZHVjZWQgYnkgcGF0Y2ggMzMxMDI1MCAvIHIyMDQ5NDogdXNlICVsZCB0byBwcmludCBhIHZhbHVlIG9mIHR5cGUgb2lkIGluc3RlYWQgb2YgJWQuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNTExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgM2IzZTk3YjMwOWE1MzVkZjFhOTliMDM2OTM4NjkwNTA2NDlkNTNhMAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEp1biAxNyAxOTowNjo0MiAyMDExICswMDAwCi0KLSAgICBVc2UgJXAgdG8gcHJpbnQgYSBwb2ludGVyIGluc3RlYWQgb2YgJWxkCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTEwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgODc4YmNkODc2NGJlNWQxNThkNjVmNGIyMGE2OGNiM2E5NDhkYmRkZgotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEp1biAxNyAxOTowNjo0MiAyMDExICswMDAwCi0KLSAgICBVc2UgJXAgdG8gcHJpbnQgYSBwb2ludGVyIGluc3RlYWQgb2YgJWxkCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNTEwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNzkwOWY2MGUyZGYwNmQ2NTUyNmU5NDBlYTMyODZjMjRiYzM2YzdmZgotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEp1biAxMCAwNjowNTo0MyAyMDExICswMDAwCi0KLSAgICBJbmNsdWRlIHN0ZGxpYi5oIHRvIG1ha2UgZG1hbGxvYyBoYXBweQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDUwMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDEyZjI2YzVlZTA2ODkxNDRkNDZiZDM0ZjM2YTI4MDUyMjJkMzc2MWQKLUF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSnVuIDkgMTQ6MzU6MDggMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogQlVHOiAzMTUxODQ1OiBmaXggbXVsdGlwbGUgcmVnaXN0cmF0aW9ucyBvZiBzbm1wIHRyYW5zcG9ydCBoYW5kbGVyCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDk5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMzc0YWYwNzU4NjQ0ZTlhYmNjNDk5OGZiMjkxY2EzNzM4NjkwNDhmOAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEp1biAzIDA2OjMwOjMzIDIwMTEgKzAwMDAKLQotICAgIFJldmVydGVkIHIyMDM2MjogdGhhdCBwYXRjaCBtYWtlcyBzZW5zZSBvbiB0aGUgdHJ1bmsgYW5kIHRoZSA1LjYgYnJhbmNoIGJ1dCBub3Qgb24gdGhlIDUuNSBub3Igb24gdGhlIDUuNCBicmFuY2guCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDk1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNDg1MDgxMmY1YWZhYWE3Mjg2Y2NiN2I4MWJjMDUyM2YyYjdkZTM3YwotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAxIDIyOjI0OjIzIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBwYXRjaCAzMzEwMjUwOiBmcm9tIGZlbm5lcjogbWlzYyBmaXhlcyBmb3IgZGVidWdnaW5nIG91dHB1dCBvZiBhZ2VudHgKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0OTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3MTg5MzU2ZDg4YjRjYmQ5MjBmZDkzNDExMWU0YjZkNjkwNTEzZjUwCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDEgMjI6MjQ6MjMgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IHBhdGNoIDMzMTAyNTA6IGZyb20gZmVubmVyOiBtaXNjIGZpeGVzIGZvciBkZWJ1Z2dpbmcgb3V0cHV0IG9mIGFnZW50eAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ5NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGM5YzNkYjE1NzUyZDZlNGI4Yjk2MDBjZDdkMWE4ZDc5ZDZkODNjM2UKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAxIDE1OjU3OjE4IDIwMTEgKzAwMDAKLQotICAgIHZlcnNpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDg3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMGVlZmVjY2Y3NmQ2MzA3OTZiN2M4YzY0YTBlMzNkMDE3NTI2MmZjYgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDEgMTU6NDg6NDkgMjAxMSArMDAwMAotCi0gICAgdmVyc2lvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0ODYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzNWYwYTM4MjJhZjhmMDA4NTUyNDI5MDZiMTMyZTcwMmRlODk5MjEzCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMSAxNTo0NzowNCAyMDExICswMDAwCi0KLSAgICBtYWtlIGRlcGVuZAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ4NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGIxZTVhY2JiNjA1YmVkMzIxMGM3ZjVkZGFlZWVmMmEwNTBjZjZiZWEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAxIDE1OjQyOjAwIDIwMTEgKzAwMDAKLQotICAgIFJlaW5zdGF0ZSBhbiAidW51c2VkIiBsYWJlbCB0aGF0IGlzIGFjdHVhbGx5IHN0aWxsIHJlcXVpcmVkLgotICAgIChyZWZlcmVuY2VkIGluIGxpbmUgMjcxMCkKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0ODQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyNDg3NTc5ZDFlOTc3MTM3ZGM2NDNhY2VlNzYyYWVhYWZhNjBmNGJkCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMSAxNTozMjoyMyAyMDExICswMDAwCi0KLSAgICBGaXggdHlwbwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ4MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGNhYzExYTkyYzA0YTVjYzUxZTIzMWJlMGFiMTE2ZGI4NTUyMjFkZTEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAxIDE1OjA4OjUxIDIwMTEgKzAwMDAKLQotICAgIGRvY3VtZW50YXRpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDgyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZmE4ZWU0Zjk3YzJmYThmYjZlNTljZjA1NWUwZDgxYTNiZGVjZmI5NwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDEgMTQ6NTE6MTQgMjAxMSArMDAwMAotCi0gICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDgxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgODY1Y2NmZjMyMjBkMDE3ZjNlZjNiNjE5ZjBmOGY0NDdkMzM1MTRlYgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDEgMTA6MTk6MzMgMjAxMSArMDAwMAotCi0gICAgdmVyc2lvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3YjYxOWIxMGU5MTJiZGQxYzc2MzNjZTNiMWU3MjU3NGMyMzQxY2U5Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMSAxMDowMTowMSAyMDExICswMDAwCi0KLSAgICB2ZXJzaW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQ3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDU1ZjZlOGMzYTBmNzc0MWJmOGE2ODlhMGZjZjA2Y2M0ODBhZDFlZmYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAxIDA5OjU0OjA0IDIwMTEgKzAwMDAKLQotICAgIG1ha2UgZGVwZW5kCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZDdhMjczY2NiZWU1NjkwMWU4Njc5YTBkZTMyYmM2YWExNmQ0NGJmNQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDEgMDk6MDY6MzIgMjAxMSArMDAwMAotCi0gICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxMjYzNTM1NTFmNDkzN2Y3YzBiYzFhYThjODBjMmQ0OGQxMzQ5YzkzCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMSAwOTowMDoyNCAyMDExICswMDAwCi0KLSAgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlYjAxNWM1ZGZmZDQ3YTM4Yzk3NzkyMzY3NmQxYzRlYzhiNTdiYmVjCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgTWF5IDMxIDIyOjQ5OjMyIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSCAzMDY2ODYyOiBmcm9tIGZoZXc6IGZpeCB0aGUgYWdlbnQgZm9yIGNvbXBhcmluZyB1bnNpZ25lZCBsYXJnZSBpbmRleGVzIG9mIHRoZSBkaXNrIGFuZCBleHRlbmQgdGFibGVzLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ3MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDdmYTMwZmNlMDhhYzQ5NGMzNThlNmEzMWI5NzAyZTEyZmZlYmQ0NjEKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBNYXkgMzEgMjI6NDk6MzIgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIIDMwNjY4NjI6IGZyb20gZmhldzogZml4IHRoZSBhZ2VudCBmb3IgY29tcGFyaW5nIHVuc2lnbmVkIGxhcmdlIGluZGV4ZXMgb2YgdGhlIGRpc2sgYW5kIGV4dGVuZCB0YWJsZXMuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDcxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYjQxZDRhYWY3YTA2YjQ1YTllYzA3YTU1MTFiYWM1YmFkNmZkZGEyYQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIE1heSAzMSAyMjo0OTozMiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0ggMzA2Njg2MjogZnJvbSBmaGV3OiBmaXggdGhlIGFnZW50IGZvciBjb21wYXJpbmcgdW5zaWduZWQgbGFyZ2UgaW5kZXhlcyBvZiB0aGUgZGlzayBhbmQgZXh0ZW5kIHRhYmxlcy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxYTg0Mzg2NTA0MDVhZTM4NDkxZjNhNWM5YTJiMTBmYzk5YjFiOWMyCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgTWF5IDMxIDIyOjQ5OjMyIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSCAzMDY2ODYyOiBmcm9tIGZoZXc6IGZpeCB0aGUgYWdlbnQgZm9yIGNvbXBhcmluZyB1bnNpZ25lZCBsYXJnZSBpbmRleGVzIG9mIHRoZSBkaXNrIGFuZCBleHRlbmQgdGFibGVzLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQ3MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGFiMTY4MjhhZDY5YzU0ZTA2OGMwMzhhOWE5NDQ5MWZkYmM2ZTc5OWYKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgTWF5IDMxIDEyOjMwOjMwIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBmaXhlZCBoclNXUnVuUGF0aCBvZiBzd2FwcGVkLW91dCBwcm9jZXNzZXMgb24gTGludXguCi0gICAgCi0gICAgZmdldHMoKSByZXR1cm5zIE5VTEwgYm90aCB3aGVuIC9wcm9jL1BJRC9jbWRsaW5lIGlzIGVtcHR5ICg9IHN3YXBwZWQgb3V0KSBhbmQgd2hlbiB0aGUgcHJvY2VzcyBleGl0ZWQgYWZ0ZXIgZm9wZW4oKSwgc28gY2hlY2sgL3Byb2MvUElEL3N0YXR1cyBpbiBib3RoIGNhc2VzLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGMwN2Q1OWJkOTJjYzM0YmM5Njk2NGI1ZTc0M2NmZGVlNzk4NzViN2EKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgTWF5IDMxIDEyOjMwOjMwIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBmaXhlZCBoclNXUnVuUGF0aCBvZiBzd2FwcGVkLW91dCBwcm9jZXNzZXMgb24gTGludXguCi0gICAgCi0gICAgZmdldHMoKSByZXR1cm5zIE5VTEwgYm90aCB3aGVuIC9wcm9jL1BJRC9jbWRsaW5lIGlzIGVtcHR5ICg9IHN3YXBwZWQgb3V0KSBhbmQgd2hlbiB0aGUgcHJvY2VzcyBleGl0ZWQgYWZ0ZXIgZm9wZW4oKSwgc28gY2hlY2sgL3Byb2MvUElEL3N0YXR1cyBpbiBib3RoIGNhc2VzLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGJhNjg4MDZkZDA2NGY2NTU1MzZkNmY2OTM3MWM2OTllNjE2MjA1NmUKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgTWF5IDMxIDEyOjMwOjMwIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBmaXhlZCBoclNXUnVuUGF0aCBvZiBzd2FwcGVkLW91dCBwcm9jZXNzZXMgb24gTGludXguCi0gICAgCi0gICAgZmdldHMoKSByZXR1cm5zIE5VTEwgYm90aCB3aGVuIC9wcm9jL1BJRC9jbWRsaW5lIGlzIGVtcHR5ICg9IHN3YXBwZWQgb3V0KSBhbmQgd2hlbiB0aGUgcHJvY2VzcyBleGl0ZWQgYWZ0ZXIgZm9wZW4oKSwgc28gY2hlY2sgL3Byb2MvUElEL3N0YXR1cyBpbiBib3RoIGNhc2VzLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDkxY2RiODE1YmIzNjU3NTdmODRjMjIzNGQ5ZTVmNTc2M2FjNGIwNGYKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMjYgMTY6MTI6NDggMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IHBhdGNoIDMyOTkzODQ6IGZpeCBJTkZPUk1zIHNvIHRoZXkgcmV0cnkgcHJvYmluZyBmb3IgYW4gZW5naW5lSUQuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDU4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMWQyMGQ3MzNmMTc0MDYyNDdjODBjMzBjNDdiODgyODM5ZTBlYWMwNAotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAyNiAxNjoxMjo0OCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogcGF0Y2ggMzI5OTM4NDogZml4IElORk9STXMgc28gdGhleSByZXRyeSBwcm9iaW5nIGZvciBhbiBlbmdpbmVJRC4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhNWE5ZDFlOGEyNGYwMmRmZTRlOTdhZjA0ZDZmNWUwYjU5MGE1MmFlCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDI2IDE2OjEyOjQ4IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBwYXRjaCAzMjk5Mzg0OiBmaXggSU5GT1JNcyBzbyB0aGV5IHJldHJ5IHByb2JpbmcgZm9yIGFuIGVuZ2luZUlELgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ1OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDRiOTU2YzQ3MGFjN2U0OTM5OWU3ZTEyMzk3OThlMmEwNjBmZTU4YmEKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMjYgMTY6MTI6NDggMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IHBhdGNoIDMyOTkzODQ6IGZpeCBJTkZPUk1zIHNvIHRoZXkgcmV0cnkgcHJvYmluZyBmb3IgYW4gZW5naW5lSUQuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDU4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYTliYzM0ZjZmNDUwYjQ3NTFkZWY4Yjg1NzJiMjVjMGY3OTE4YWQ1ZQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAyNiAxNjowNjoxMSAyMDExICswMDAwCi0KLSAgICBBcHBsaWVkIChyb3VnaGx5KSBwYXRjaCAzMjk5MzcwIHRvIGF2b2lkIHJld3JpdGluZyBleGlzdGluZyBhdXRoa2V5L3ByaXZrZXkvZXRjcwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQ1NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDM3NGI4MWZmZmRhNDQ2ZjY0OTlkZWNiNmYwNDhiMTkyMzhhOWY2YjQKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMjYgMTY6MDY6MTEgMjAxMSArMDAwMAotCi0gICAgQXBwbGllZCAocm91Z2hseSkgcGF0Y2ggMzI5OTM3MCB0byBhdm9pZCByZXdyaXRpbmcgZXhpc3RpbmcgYXV0aGtleS9wcml2a2V5L2V0Y3MKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxZDMzMTM3NWQ4NjI4MmUyM2I0YWU2MDIwNTI3NTNhYTRhNGY4N2FjCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDI2IDE2OjA2OjExIDIwMTEgKzAwMDAKLQotICAgIEFwcGxpZWQgKHJvdWdobHkpIHBhdGNoIDMyOTkzNzAgdG8gYXZvaWQgcmV3cml0aW5nIGV4aXN0aW5nIGF1dGhrZXkvcHJpdmtleS9ldGNzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDU3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYWE1ZWM4ZDE5ZGUyOTUxNTEwMzI2MzllMTM4ZThiNzY1ODc4NjZiYwotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAyNiAxNjowNjoxMSAyMDExICswMDAwCi0KLSAgICBBcHBsaWVkIChyb3VnaGx5KSBwYXRjaCAzMjk5MzcwIHRvIGF2b2lkIHJld3JpdGluZyBleGlzdGluZyBhdXRoa2V5L3ByaXZrZXkvZXRjcwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ1NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDk2MmM5ZWIzOTY1NTYzYzVhMzEzZDQxZDg5OTI5OThkN2U2MDMzNTEKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBNYXkgMjUgMTk6NDQ6MTUgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IHBhdGNoIDMzMDY0NzY6IGZyb20gdGlueXB5cmFtaWRzOiBmaXggbWVtb3J5IGxlYWsgaW4gdGhlIHN3cnVuIGNvbnRhaW5lciBsb2FkaW5nCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDU0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZWMyYmI0NDUxOTA4MDU0NjY5ZmQyZmIxZDQ0MTI2YTU3OTA1OWU1NQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIE1heSAyNSAxNjoxNzowNCAyMDExICswMDAwCi0KLSAgICBGb2xsb3ctdXAgZm9yIHIyMDQ0OTogdXNlIE5FVFNOTVBfUFJJbyAidSIgZm9yIHByaW50aW5nIHN1YmlkcyBpbnN0ZWFkIG9mIG9ubHkgTkVUU05NUF9QUklvLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ1MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDg4MDEzMmRhZjJmNTNkYWRmZTQxYjIyYWQzMjJkNzA2NTBhODJjYzEKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBNYXkgMjUgMTM6MDc6MjMgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogV2luMzI6IE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvOiBMaW5rIHdpdGggZ2RpMzIubGliIGlmIE9wZW5TU0wgaGFzIGJlZW4gZW5hYmxlZCBiZWNhdXNlIGdkaTMyLmxpYiBpcyBhIGRlcGVuZGVuY3kgb2YgT3BlblNTTC4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyM2VmMmYxMDg0M2M5YTg3Nzg5YTYxNGFiZGY1MjYzNTBjNGQ4NDQzCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgTWF5IDI1IDEzOjA3OjIzIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IFdpbjMyOiBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbzogTGluayB3aXRoIGdkaTMyLmxpYiBpZiBPcGVuU1NMIGhhcyBiZWVuIGVuYWJsZWQgYmVjYXVzZSBnZGkzMi5saWIgaXMgYSBkZXBlbmRlbmN5IG9mIE9wZW5TU0wuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDUxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOWI4NzAzNzJiNzRhN2FmNWI3NzI2YTYwNTFiNGYzZGI1MDQzYTc3ZQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIE1heSAyNSAwOToyNDowOCAyMDExICswMDAwCi0KLSAgICBGb2xsb3ctdXAgZm9yIHIyMDQ0ODogc2luY2UgdGhlICJvaWQiIHR5cGVkZWYgaGFzIGJlZW4gY2hhbmdlZCBiYWNrIGZyb20gdWludDMyX3QgdG8gdV9sb25nLCBjaGFuZ2UgTkVUU05NUF9QUklvIGZyb20gTkVUU05NUF9QUkkzMiBpbnRvICJsIi4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA4ODVkMWY1NWNlZmE4MmQ5NTM1NmUzZTM1ZWNhZTgxMTU4YWYzYjU5Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgTWF5IDI1IDA5OjIxOjA1IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBVc2UgcHJvcGVyIGZvcm1hdCBzcGVjaWZpZXIgaW4gZGVidWcgc3RhdGVtZW50cyBmb3IgcHJpbnRpbmcgdmFsdWVzIG9mIHR5cGUgJ29pZCcuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDQ5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNzIzYmMzODc1NzE3NTc0MjZiODYxYjZhODg1NGE0YjhkODlkY2QxNQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIE1heSAyNSAwOToyMTowNSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogVXNlIHByb3BlciBmb3JtYXQgc3BlY2lmaWVyIGluIGRlYnVnIHN0YXRlbWVudHMgZm9yIHByaW50aW5nIHZhbHVlcyBvZiB0eXBlICdvaWQnLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ0OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGRlODkwODcwZGUwOGVhY2ZiMjVhYjgxOGM0ZDEzNTJmNWRjYzA5YzkKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBNYXkgMjUgMDk6MjE6MDUgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IFVzZSBwcm9wZXIgZm9ybWF0IHNwZWNpZmllciBpbiBkZWJ1ZyBzdGF0ZW1lbnRzIGZvciBwcmludGluZyB2YWx1ZXMgb2YgdHlwZSAnb2lkJy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NDkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzMGI0YzM2NDk4ODc5YjQ5MGMxNWQ1MDAzMGQwYjJjMTg4MjAyODJkCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgTWF5IDI0IDIzOjQ5OjU3IDIwMTEgKzAwMDAKLQotICAgIHJldmVydCBPSUQgdHlwZWRlZiB0byB1X2xvbmcgYXMgYWdyZWVkIHRvIG9uIC1jb2RlcnMgYW5kIGluIHRoZSBhZG1pbiBtZWV0aW5nCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDQ4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMGYyZWNkNmYwNWRlZTM3ZjkzZWE5YTlhYzllNzI3NmQ2YjQ3OGRkMAotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBNYXkgMjQgMTI6NTE6MzkgMjAxMSArMDAwMAotCi0gICAgQWRkZWQgTlVMTC1jaGVja3MgYWZ0ZXIgbWFsbG9jCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDQ2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYzg5Yzk1YmNjZDEzOGJkYWVlM2UwMWYyZDBmNjYzMzI4ZThlN2U4OAotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBNYXkgMjQgMTI6NTE6MzkgMjAxMSArMDAwMAotCi0gICAgQWRkZWQgTlVMTC1jaGVja3MgYWZ0ZXIgbWFsbG9jCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDQ2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMDU4ODYyMDcwNDJhYzJjOTBhYTMxOTE2NTc4MGQxNzY3NmVkNjhmNAotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBNYXkgMjQgMTI6NTE6MzkgMjAxMSArMDAwMAotCi0gICAgQWRkZWQgTlVMTC1jaGVja3MgYWZ0ZXIgbWFsbG9jCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDQ2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZTNiMjBjYWFiYzMxM2Q4ODhjYTRjYzk1NDRlN2VjZjJlMWFiMDlkNAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gTWF5IDIyIDE5OjM0OjEwIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IGFnZW50OiBCVUc6IDMzMDUxNTc6IEZpeCBpcEFkZHJlc3NQcmVmaXggaGFuZGxpbmcgb2YgSVB2NiBhZGRyZXNzZXMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NDUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5YjEyNWM3MTNiZTFlY2NhNjNmMmIxNjlkMmMxMGQxZDI0YTJkNDc2Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBNYXkgMjIgMTk6MzQ6MTAgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogYWdlbnQ6IEJVRzogMzMwNTE1NzogRml4IGlwQWRkcmVzc1ByZWZpeCBoYW5kbGluZyBvZiBJUHY2IGFkZHJlc3NlcwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ0NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDA0MzMxODgyYTBjOWRmNzlkOTEzNTQ1NzM4MmEyNzI1YzMwMzBmODEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIE1heSAyMiAxOTowNzo1NiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBweXRob246IEJVRzogMzI5NTQwNzogRml4IGhhbmRsaW5nIG9mIHZvaWQgcG9pbnRlcgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ0NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDIzYTJiOTQwZTI2NTYyNjhiZWYzMDAxNWY3ODJlZTZkMDM4ZjkyNjUKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIE1heSAyMiAxOTowNzo1NiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBweXRob246IEJVRzogMzI5NTQwNzogRml4IGhhbmRsaW5nIG9mIHZvaWQgcG9pbnRlcgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ0NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDZlMmJmOTFhYmE1NjJjY2FlYjEzMDQxOTg5M2E3MTcwYmIyMzEyZjkKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIE1heSAyMiAxOTowNzo1NiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBweXRob246IEJVRzogMzI5NTQwNzogRml4IGhhbmRsaW5nIG9mIHZvaWQgcG9pbnRlcgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ0NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGNhYmE2NTFmODRmNzEwMmNiYTE4MWQxOTViNTljNzk3NjhkOTQ1NjEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIE1heSAyMiAxODo1Nzo1MyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDMyNjQ4NTI6IFJlY29nbmlzZSBtaXNzaW5nIHJlcG9ydCB0eXBlcyAoc25tcHtVbmF2YWlsYWJsZSxVbmtub3dufUNvbnRleHRzLHNubXBVbmtub3duUERVSGFuZGxlcnMpCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDQzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYzVhNDU4MGI5MjRlZDVjNDljZmZkMWI3ZmQ4ZTkzMmVkMTY4ZWNkYgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gTWF5IDIyIDE4OjU3OjUzIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMzI2NDg1MjogUmVjb2duaXNlIG1pc3NpbmcgcmVwb3J0IHR5cGVzIChzbm1we1VuYXZhaWxhYmxlLFVua25vd259Q29udGV4dHMsc25tcFVua25vd25QRFVIYW5kbGVycykKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhNmNhZGQwMDk4YjE2YTFlOWZmYTgxMzgxOGIwZTlmOGZiYmMwZWI4Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBNYXkgMjIgMTg6NTc6NTMgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAzMjY0ODUyOiBSZWNvZ25pc2UgbWlzc2luZyByZXBvcnQgdHlwZXMgKHNubXB7VW5hdmFpbGFibGUsVW5rbm93bn1Db250ZXh0cyxzbm1wVW5rbm93blBEVUhhbmRsZXJzKQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ0MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDk4ODE1MDAzZjM0NWVjZTkzZmNmODM2ZmIwYzNlYTU5OTdjOGY5MDAKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIE1heSAyMiAxODo1Nzo1MyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDMyNjQ4NTI6IFJlY29nbmlzZSBtaXNzaW5nIHJlcG9ydCB0eXBlcyAoc25tcHtVbmF2YWlsYWJsZSxVbmtub3dufUNvbnRleHRzLHNubXBVbmtub3duUERVSGFuZGxlcnMpCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDQzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMzAyNDVkMDBkMzBjZmM1MjY5MzliYjJmZjcyMWIyMDc2NTQ2ZThjNwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDIwIDE1OjQxOjA2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMzIzNDc1NDogRW5zdXJlIG9sZCBmX2NyZWF0ZV9mcm9tX3RzdHJpbmcgaG9vayBpcyBpbml0aWFsaXplZCB0byBOVUxMCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDQyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgN2QyZmU5ZGNhZWRjYTg2NmNkY2U2MTc4YjYwNmI4ZjA2MTg5YmYzYQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDIwIDE1OjQxOjA2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMzIzNDc1NDogRW5zdXJlIG9sZCBmX2NyZWF0ZV9mcm9tX3RzdHJpbmcgaG9vayBpcyBpbml0aWFsaXplZCB0byBOVUxMCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDQyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNTZjNzRjNWE0OTM4NjMzMGE1ODE1NjRhNmVlMTU3OWJjZjZjNTA5ZQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDIwIDE1OjQxOjA2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMzIzNDc1NDogRW5zdXJlIG9sZCBmX2NyZWF0ZV9mcm9tX3RzdHJpbmcgaG9vayBpcyBpbml0aWFsaXplZCB0byBOVUxMCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDQyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNDViNGJkNTM3YjYyNzUzNGIxYzYyMTgyMTlmZDc3MGViNWE0YTE1NQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxOSAxOTo0NjoyMCAyMDExICswMDAwCi0KLSAgICB1c2UgI2lmZGVmIHJhdGhlciB0aGFuICNpZiBmb3IgZGVmaW5lIGNoZWNrcy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1Y2M1YTRjZDBkNjQ4OTM1ZWM3NmUwOTYxNjIyOWQwY2VlYmM0MWEwCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDE5IDE5OjQ2OjIwIDIwMTEgKzAwMDAKLQotICAgIHVzZSAjaWZkZWYgcmF0aGVyIHRoYW4gI2lmIGZvciBkZWZpbmUgY2hlY2tzLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ0MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDU4MzgyZTQ4ODVmMzg3ZTNmZmNiOGZlYmE5MzZhNTc4YzY5NDU5ZWUKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTkgMTk6NDY6MjAgMjAxMSArMDAwMAotCi0gICAgdXNlICNpZmRlZiByYXRoZXIgdGhhbiAjaWYgZm9yIGRlZmluZSBjaGVja3MuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYjU4OGQxYTFkYTY4MWIyNmYzNWYyYmJmMDQ5MjI0MmNmNGQ4M2M5NgotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxOSAxOTo0NjoyMCAyMDExICswMDAwCi0KLSAgICB1c2UgI2lmZGVmIHJhdGhlciB0aGFuICNpZiBmb3IgZGVmaW5lIGNoZWNrcy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5OGQ2MjIzZTEwYWYwYjIwNzM5NWM5YTcxMTkwZGZmNmZhODc5NTljCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTkgMTc6MTk6MzEgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogbWFuOiBCVUc6IDMxOTA3MjU6IERvY3VtZW50IHNubXB7LF9zZXNzfXN5bmNoX3Jlc3BvbnNlIGFuZCBzbm1wX2FzeW5jX3NlbmQKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NDAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjMjZlN2E5Mzg1MWVkNjc4NDQ3ZGMzMmFiNzJmYmMxYTAwOGExMzVkCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTkgMTc6MTk6MzEgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogbWFuOiBCVUc6IDMxOTA3MjU6IERvY3VtZW50IHNubXB7LF9zZXNzfXN5bmNoX3Jlc3BvbnNlIGFuZCBzbm1wX2FzeW5jX3NlbmQKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NDAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhZjNkZWExMTBkMDc5YmUxNDY4YWJjN2UwMWNlYzZiZTZjMTFlOWNmCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTkgMTc6MTk6MzEgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogbWFuOiBCVUc6IDMxOTA3MjU6IERvY3VtZW50IHNubXB7LF9zZXNzfXN5bmNoX3Jlc3BvbnNlIGFuZCBzbm1wX2FzeW5jX3NlbmQKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NDAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjMDBmODhmMzM4ODhlZGQ0ODBhY2M5ZWM5MzEyZDZiNjFlMTcwYTc2Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTkgMTc6MTk6MzEgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogbWFuOiBCVUc6IDMxOTA3MjU6IERvY3VtZW50IHNubXB7LF9zZXNzfXN5bmNoX3Jlc3BvbnNlIGFuZCBzbm1wX2FzeW5jX3NlbmQKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NDAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzMjk0NWE3YTE2N2I0ZDU2ZTI5NDA2MjZiNzA5YWIxMTE5MDVkMjFhCi1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxOSAwODo1NToyNiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogZml4ZWQgcmFjZSBjb25kaXRpb24gaW4gaHJTV1J1blRhYmxlCi0gICAgVHJlYXQgdGhlIHJlYWRzIGZyb20gL3Byb2MvPHBpZD4vKiBjYXJlZnVseSwgcHJvY2Vzc2VzIGNhbiBleGl0IGluIHRoZSBtaWRkbGUgb2YgcHJvY2Vzc2luZy4KLSAgICAoYWxyZWFkeSBmaXhlZCBpbiBWNS01LXBhdGNoZXMgYW5kIFY1LTQtcGF0Y2hlcyBpbiBTVk4gcmV2LiAyMDExNSwgZHVubm8gd2h5IEkgZGlkIG5vdCBwYXRjaCB0cnVuaykKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyN2E1NTk1M2YwYmI1N2FhMWFlY2NmNzE4ZjM0YTdkNGFlNjNjNDNlCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTkgMDg6MjY6NTcgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAzMTg0Njk3OiBEb24ndCByZWZlcmVuY2UgaW50ZXJuYWwgTUQ1IHdoZW4gaXQncyBleHBsaWNpdGx5IGRpc2FibGVkCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDM3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOTBlZTc4MmNhNGVhODUzNGI4YjQzZmYxZGQ2N2ZiYTdkNWY1NjllMQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIE1heSAxNSAxNjoyMTozMSAyMDExICswMDAwCi0KLSAgICBGb2xsb3ctdXAgZm9yIHIyMDQzMjogdGVzdGluZy9SVU5URVNUUyB3aXRob3V0IGFyZ3VtZW50cyB3b3JrcyBhZ2FpbiBhcyBpdCBzaG91bGQuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDM1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZDVmYTcwMTM0MjYxYWY3ODQ1M2YwZTAzMTIzY2ZiNWZhMjhjZDY2MwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IE1heSAxNCAxOTozODozMCAyMDExICswMDAwCi0KLSAgICBGaXhlZCBhIHR5cG8gaW4gYSBjb21tZW50LgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQzMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDE5MWNkYjdiMmE2ZTk4NDJhZjFiOTNiNzcyYTlmZGNiZjRjMzVhMzEKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBNYXkgMTQgMTk6MzY6NTYgMjAxMSArMDAwMAotCi0gICAgUlVOVEVTVFMgd29ya3MgYWdhaW4gZm9yIHRlc3RzIHdpdGggYSBmb3VyLWRpZ2l0IG51bWJlci4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwNDFlNjdiZmJjMDdkMmY0ODg0ZTYzMmVlYWM3MWE5NWNhMzU3ZTU0Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgTWF5IDE0IDE4OjQ3OjU2IDIwMTEgKzAwMDAKLQotICAgIERvY3VtZW50IHRoYXQgdGhlIHVjZC1zbm1wIGRpc2tpbyBjb2RlIHN0aWxsIGhhcyB0byBiZSBtb2RpZmllZCBzdWNoIHRoYXQgZGlza2lvX2ZyZWVfY29uZmlnKCkgZ2V0cyBpbnZva2VkIHVwb24gU0lHSFVQLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQzMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGNhMDUzOTk2MDIyZTNjMWRlM2UyZDViNTU4ZmFkZjZkNzllOWZkZDMKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgMTMgMTI6MDU6MTkgMjAxMSArMDAwMAotCi0gICAgRm9sbG93LXVwIGZvciByMjA0MTc6IHJlcGxhY2VkIGEgbWFsbG9jKCkvZnJlZSgpIHBhaXIgYnkgYSBjYWxsIHRvIHJlYWxsb2MoKS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0MjQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3ZjExNWRmODMzNmUzYjllYTk1MjMwMGIzZDRkMTA0ZWIyMTQwY2RiCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDEzIDEyOjA1OjE5IDIwMTEgKzAwMDAKLQotICAgIEZvbGxvdy11cCBmb3IgcjIwNDE3OiByZXBsYWNlZCBhIG1hbGxvYygpL2ZyZWUoKSBwYWlyIGJ5IGEgY2FsbCB0byByZWFsbG9jKCkuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDI0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMDY4Njk1MjA4NTY5NzZmZjQ1OTBhMGJiNjFjNGU5NmYxNmMzNWQ2ZQotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTIgMTE6NDc6MzYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IEZpeGVkIG1lbW9yeSBsZWFrIGluIFRDUC1NSUIgdGFibGVzIGludHJvZHVjZWQgYnkgcGF0Y2ggIzMwNTM0MzYuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDIxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMDVkM2QzYTgyMzExYmY5YjU1Mzg2MjE2ZjE4ODE5OGNkODQ5ZmZmMQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxMiAwOTowMzowMiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluIHNubXBfZnJlZV9zZXNzaW9uKCkuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDE4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNGU5NGFiN2YwYzY1MDliNjI4MmVlZmM4ODhhYjBkY2Y3OGU1NzVhNgotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxMiAwOTowMzowMiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluIHNubXBfZnJlZV9zZXNzaW9uKCkuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDE4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZmYwM2JmYWQ2ZDBjYzU0ZTU4Y2VlNGQ0ZjhmNjdmZTEyOTEwNTE4YwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxMiAwOTowMzowMiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluIHNubXBfZnJlZV9zZXNzaW9uKCkuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDE4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgY2M3OGQwNjIzOTc1NWM2ZWJiODMxOTAzYjZjZWRkM2UxZGJhYjU4MwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxMiAwODoyNTozMyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBfbWliaW5kZXhfYWRkKCkgbm8gbG9uZ2VyIHJlYWRzIHBhc3QgdGhlIGVuZCBvZiB0aGUgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGFycmF5IF9taWJpbmRleGVzLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQxNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDkyNGNiZTNkNjkzYTc5M2MyMDUzNmU4MGU5MTUxMGM5NTlhY2M5YTcKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTIgMDg6MjU6MzMgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogX21pYmluZGV4X2FkZCgpIG5vIGxvbmdlciByZWFkcyBwYXN0IHRoZSBlbmQgb2YgdGhlIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBhcnJheSBfbWliaW5kZXhlcy4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhZGNlZDRhODQ4NzZhMmUzY2I4Njg3YjVmZmE1ODMwYTNiNTAwM2FhCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDEyIDA4OjEyOjQ3IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IFdpbjMyOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluIHRoZSBOZXQtU05NUCAobm9uLXdpbkV4dERMTCkgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1JQi1JSSBpcE5ldFRvTWVkaWFUYWJsZS4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0MTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmMDAxMmRlYzJjOThiYWYxYzBlMjVmYTE3ZDViZjg5YmFjZDBhNGE0Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDEyIDA4OjEyOjQ3IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IFdpbjMyOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluIHRoZSBOZXQtU05NUCAobm9uLXdpbkV4dERMTCkgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1JQi1JSSBpcE5ldFRvTWVkaWFUYWJsZS4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0MTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA4ZDgzZjk1MzgxYzgxOTBlNjRjODlkMjBiNzZjNDZhZDM4OGM0MjFjCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDEyIDA4OjEyOjQ3IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IFdpbjMyOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluIHRoZSBOZXQtU05NUCAobm9uLXdpbkV4dERMTCkgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1JQi1JSSBpcE5ldFRvTWVkaWFUYWJsZS4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA4ZWNkMjk4ZGJjY2VlMWUzMjdjZTY1ODUyZjk4OTI4ZDdiYzA0MWQ3Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDEyIDA4OjA4OjQxIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IFdpbjMyOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluIHRoZSBOZXQtU05NUCAobm9uLXdpbkV4dERMTCkgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1JQi1JSSBpZlRhYmxlLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQxMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGQ5NjJmZGE2Nzc4MTRiNjM0MmFkMWI5YzNmYTg0MjI1YjU1NWNkYTIKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTIgMDg6MDg6NDEgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogV2luMzI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJIGlmVGFibGUuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgY2EzODk0MjkwOGFjNzRmZGYxZjFmMWRlNzc5Y2E1Y2RkNGRlZmEyZAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxMiAwODowODo0MSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNSUItSUkgaWZUYWJsZS4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhYTAzMjc2OWJjM2RhODMwMmMzOGRkOWQ2MmQ1M2Y3ZjA1NGViMmM3Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDEyIDA3OjMzOjAyIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IFdpbjMyOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluIHRoZSBOZXQtU05NUCAobm9uLXdpbkV4dERMTCkgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1JQi1JSSBpcEFkZHJUYWJsZS4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0MTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA0ZmZhOTA4ZDAyY2ZhZDlmZjMxYTIwMTgxOTJkNGFkNWY5NTk0NjdjCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDEyIDA3OjMzOjAyIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IFdpbjMyOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluIHRoZSBOZXQtU05NUCAobm9uLXdpbkV4dERMTCkgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1JQi1JSSBpcEFkZHJUYWJsZS4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0MTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhMjFiZGY3MTY0NDkwZjIxZjdlZTFkM2RmZWM2YTlkMzhlMjRkZDc4Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDEyIDA3OjMzOjAyIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IFdpbjMyOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluIHRoZSBOZXQtU05NUCAobm9uLXdpbkV4dERMTCkgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1JQi1JSSBpcEFkZHJUYWJsZS4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyNzE5MTQ1MTJkYzgyNjhkOGJjNDliYTdlYzM4Y2MyYWNlYzY1NmMzCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDEyIDA2OjU0OjMzIDIwMTEgKzAwMDAKLQotICAgIERvY3VtZW50YXRpb24gLyBzb3VyY2UgY29kZSBjb21tZW50IHNwZWxsaW5nIGZpeDogZXhpdGVudCAtPiBleGlzdGVudC4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0MTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjMDA5YzEyZDcyYmJjMmUyNzk1ZDNhNmIyMmNhYjZiYTA2ZTQ4NTM1Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDEyIDA2OjU0OjMzIDIwMTEgKzAwMDAKLQotICAgIERvY3VtZW50YXRpb24gLyBzb3VyY2UgY29kZSBjb21tZW50IHNwZWxsaW5nIGZpeDogZXhpdGVudCAtPiBleGlzdGVudC4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0MTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA2YzhhZWU3ZjhhMzRkN2RhMjI5ZjQ1OTA4YzhmMzMxZTcyNTQ0MjJlCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDEyIDA2OjU0OjMzIDIwMTEgKzAwMDAKLQotICAgIERvY3VtZW50YXRpb24gLyBzb3VyY2UgY29kZSBjb21tZW50IHNwZWxsaW5nIGZpeDogZXhpdGVudCAtPiBleGlzdGVudC4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjMmQzNWJkNWMzMjJkN2E4NTM2YTFmZjMxZDczZTQxZjc3Yzg1Yjk3Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgTWF5IDEwIDE1OjAyOjUxIDIwMTEgKzAwMDAKLQotICAgIE1pbkdXOiBhdm9pZCB0aGF0IGdjYyBjb21wbGFpbnMgYWJvdXQgcGFzaW5nIGEgKGNoYXIgKikgYXJndW1lbnQgd2hpbGUgKHVuc2lnbmVkIGNoYXIgKikgaXMgZXhwZWN0ZWQuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDAyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgM2RiZTI3Nzk5YTNmMDY1YmJmMjEyNTk5NDY2OTY5YmViNzI2OTBkMgotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIE1heSAxMCAxNTowMjo1MSAyMDExICswMDAwCi0KLSAgICBNaW5HVzogYXZvaWQgdGhhdCBnY2MgY29tcGxhaW5zIGFib3V0IHBhc2luZyBhIChjaGFyICopIGFyZ3VtZW50IHdoaWxlICh1bnNpZ25lZCBjaGFyICopIGlzIGV4cGVjdGVkLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQwMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDE5M2UzOTg0OTI0YmRlYTliYmI3MDMwODA2MmJhZWUzNzMyYWJiYTQKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBNYXkgMTAgMTU6MDI6NTEgMjAxMSArMDAwMAotCi0gICAgTWluR1c6IGF2b2lkIHRoYXQgZ2NjIGNvbXBsYWlucyBhYm91dCBwYXNpbmcgYSAoY2hhciAqKSBhcmd1bWVudCB3aGlsZSAodW5zaWduZWQgY2hhciAqKSBpcyBleHBlY3RlZC4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5NGI1MjM4ZDg4YTAyNzMwNmFhOTExNTc1ODExMWM3ODVhNGFiYWQ4Ci1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gTWF5IDkgMjA6NTI6MDEgMjAxMSArMDAwMAotCi0gICAgVXNlIHN5bWJvbGljIG5hbWVkIGZvciBpZlR5cGUgdmFsdWVzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMzc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMDRiOGUyNzlhN2E3ODVhNzZlYmY0YjY1NzVmNDFjZTYyOTk0NTJjNgotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIE1heSA5IDIwOjUyOjAxIDIwMTEgKzAwMDAKLQotICAgIFVzZSBzeW1ib2xpYyBuYW1lZCBmb3IgaWZUeXBlIHZhbHVlcwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDM3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDNkY2JmZGQ0ZjFmZmVhZDU1MjQxNDliNGVmYjAwMTI4Njg4ZTE1MDUKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBNYXkgOSAyMDo1MjowMSAyMDExICswMDAwCi0KLSAgICBVc2Ugc3ltYm9saWMgbmFtZWQgZm9yIGlmVHlwZSB2YWx1ZXMKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAzNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmNjU4NmFlY2ZhMmQyYmM0OWRlZmQzZDIxZjQ3MWFhOWEzYzU0MzZkCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gTWF5IDkgMjA6NTI6MDEgMjAxMSArMDAwMAotCi0gICAgVXNlIHN5bWJvbGljIG5hbWVkIGZvciBpZlR5cGUgdmFsdWVzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNWQzMzhmN2I5NDU5MzQ2Y2MwYzI1NWFiYjcxZTA5M2ZmM2VhYTgzOAotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIE1heSA5IDIwOjQzOjUxIDIwMTEgKzAwMDAKLQotICAgIElBTkEgaGFzIGZpeGVkIHRoZSBJQU5BLUlQUE0tTUVUUklDUy1SRUdJU1RSWS1NSUIKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1YmIxYzlhOGZkYzQ3YjNlZjM1NWNiNDJlOWUxOGFkODhjZTQ5NmZiCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gTWF5IDggMjA6MDE6MjYgMjAxMSArMDAwMAotCi0gICAgRml4IHdhcm5pbmdzIGFuZCBkYXRhIGZvcm1hdCBmb3IgRGF0ZUFuZFRpbWUgb2JqZWN0cy4KLSAgICBUaGVzZSBtb2R1bGVzIHdvcmssIGJ1dDoKLSAgICAtIFRoZXkgYXJlIExpbnV4IG9ubHkKLSAgICAtIFJvd3MgbXVzdCBiZSBjcmVhdGVkIHdpdGggcm93U3RhdHVzIGNyZWF0ZUFuZFdhaXQgYmVmb3JlIHRoZXkgYXJlIHBvcHVsYXRlZAotICAgIC0gQWdlbnQgbXVzdCBydW4gYXMgcm9vdAotICAgIC0gQWdlbnQgaXMgYmxvY2tlZCB3aGlsZSB0ZXN0cyBydW4KLSAgICAtIERhdGEgZm9ybWF0IGZvciBJbmV0QWRkcmVzcyBvYmplY3RzIGlzIHdyb25nLiBJdCBpcyBBU0NJSSwgbm90IGJpbmFyeQotICAgICAgKG1ha2luZyBpdCBlYXNpZXIgdG8gdXNlIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgYnV0IC4uLikKLSAgICAKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAzNjMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBkYmI4Nzk1YTdkZjU5NWYwNjAzZjJlYzYxNzA0Nzk5ZjRjNDgyNjY3Ci1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gTWF5IDggMjA6MDE6MjYgMjAxMSArMDAwMAotCi0gICAgRml4IHdhcm5pbmdzIGFuZCBkYXRhIGZvcm1hdCBmb3IgRGF0ZUFuZFRpbWUgb2JqZWN0cy4KLSAgICBUaGVzZSBtb2R1bGVzIHdvcmssIGJ1dDoKLSAgICAtIFRoZXkgYXJlIExpbnV4IG9ubHkKLSAgICAtIFJvd3MgbXVzdCBiZSBjcmVhdGVkIHdpdGggcm93U3RhdHVzIGNyZWF0ZUFuZFdhaXQgYmVmb3JlIHRoZXkgYXJlIHBvcHVsYXRlZAotICAgIC0gQWdlbnQgbXVzdCBydW4gYXMgcm9vdAotICAgIC0gQWdlbnQgaXMgYmxvY2tlZCB3aGlsZSB0ZXN0cyBydW4KLSAgICAtIERhdGEgZm9ybWF0IGZvciBJbmV0QWRkcmVzcyBvYmplY3RzIGlzIHdyb25nLiBJdCBpcyBBU0NJSSwgbm90IGJpbmFyeQotICAgICAgKG1ha2luZyBpdCBlYXNpZXIgdG8gdXNlIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgYnV0IC4uLikKLSAgICAKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNjMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlOWFjODYyNzhjMzU4ODAyMjkxNDc1OGEzNDVmYjk4MmJiNWQ0ZWM0Ci1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gTWF5IDggMjA6MDE6MjYgMjAxMSArMDAwMAotCi0gICAgRml4IHdhcm5pbmdzIGFuZCBkYXRhIGZvcm1hdCBmb3IgRGF0ZUFuZFRpbWUgb2JqZWN0cy4KLSAgICBUaGVzZSBtb2R1bGVzIHdvcmssIGJ1dDoKLSAgICAtIFRoZXkgYXJlIExpbnV4IG9ubHkKLSAgICAtIFJvd3MgbXVzdCBiZSBjcmVhdGVkIHdpdGggcm93U3RhdHVzIGNyZWF0ZUFuZFdhaXQgYmVmb3JlIHRoZXkgYXJlIHBvcHVsYXRlZAotICAgIC0gQWdlbnQgbXVzdCBydW4gYXMgcm9vdAotICAgIC0gQWdlbnQgaXMgYmxvY2tlZCB3aGlsZSB0ZXN0cyBydW4KLSAgICAtIERhdGEgZm9ybWF0IGZvciBJbmV0QWRkcmVzcyBvYmplY3RzIGlzIHdyb25nLiBJdCBpcyBBU0NJSSwgbm90IGJpbmFyeQotICAgICAgKG1ha2luZyBpdCBlYXNpZXIgdG8gdXNlIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgYnV0IC4uLikKLSAgICAKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAzNjMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjNGY1ZDliOTRiNDg5NWJiOWM5YTA1MGIxYTg4YjIwMWY5MDFmOTczCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gTWF5IDggMjA6MDE6MjYgMjAxMSArMDAwMAotCi0gICAgRml4IHdhcm5pbmdzIGFuZCBkYXRhIGZvcm1hdCBmb3IgRGF0ZUFuZFRpbWUgb2JqZWN0cy4KLSAgICBUaGVzZSBtb2R1bGVzIHdvcmssIGJ1dDoKLSAgICAtIFRoZXkgYXJlIExpbnV4IG9ubHkKLSAgICAtIFJvd3MgbXVzdCBiZSBjcmVhdGVkIHdpdGggcm93U3RhdHVzIGNyZWF0ZUFuZFdhaXQgYmVmb3JlIHRoZXkgYXJlIHBvcHVsYXRlZAotICAgIC0gQWdlbnQgbXVzdCBydW4gYXMgcm9vdAotICAgIC0gQWdlbnQgaXMgYmxvY2tlZCB3aGlsZSB0ZXN0cyBydW4KLSAgICAtIERhdGEgZm9ybWF0IGZvciBJbmV0QWRkcmVzcyBvYmplY3RzIGlzIHdyb25nLiBJdCBpcyBBU0NJSSwgbm90IGJpbmFyeQotICAgICAgKG1ha2luZyBpdCBlYXNpZXIgdG8gdXNlIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgYnV0IC4uLikKLSAgICAKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzNjMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlM2RiOTVlMTYxOWRkNTdkZmI1NWFjNzQ5NGY0OGQyYWRkNTZkOTczCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgTWF5IDcgMTU6MjI6MjcgMjAxMSArMDAwMAotCi0gICAgUmVtb3ZlZCBhbiB1bnVzZWQgbGFiZWwgZnJvbSBwZXJsL1NOTVAvU05NUC54cy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlYThjZTAwNzQ0ZTgzMjMzZDg1NDM4NTJmODg0YWEwMzdjMTE4M2EyCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgTWF5IDcgMTU6MjI6MjcgMjAxMSArMDAwMAotCi0gICAgUmVtb3ZlZCBhbiB1bnVzZWQgbGFiZWwgZnJvbSBwZXJsL1NOTVAvU05NUC54cy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAzNjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwOTk5NDViYjJmODJlYTZjYjUwM2M3NDg2YzY0YmUwODcxNjQxMjNkCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgTWF5IDcgMTU6MjI6MjcgMjAxMSArMDAwMAotCi0gICAgUmVtb3ZlZCBhbiB1bnVzZWQgbGFiZWwgZnJvbSBwZXJsL1NOTVAvU05NUC54cy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzNjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlNmExYmRhZTRmN2JmNjI1YWI2MDdiNGYyODA3NDcwY2QyNzc3NzcxCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgTWF5IDcgMTM6MTU6NDQgMjAxMSArMDAwMAotCi0gICAgV2luMzI6IGltcHJvdmVkIHNvdXJjZSBjb2RlIGNvbnNpc3RlbmN5IGJ5IHVzaW5nIExQQ1RTVFIgaW5zdGVhZCBvZiBMUENTVFIuIE5vdGU6IHRoaXMgZG9lcyBub3QgbWVhbiB0aGF0IFVuaWNvZGUgYnVpbGRzIGFyZSBzdXBwb3J0ZWQuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzU4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNGViZmNlYTQxOTY0YTg3NDJhMDJjNjg3ODUxMjRiYzI0ZGE1MDZiZQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IE1heSA3IDEzOjExOjQ0IDIwMTEgKzAwMDAKLQotICAgIFJldmVydGVkIGEgY2hhbmdlIHRoYXQgd2FzIGNvbW1pdHRlZCBhY2NpZGVudGFsbHkgaW4gcjIwMjc2LgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDM1NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDgxODZjZjNjM2ZjY2QwMjI2YTA3NjE0NjU5ZjNlOGZjN2QzYWViN2EKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBNYXkgNyAxMjo1NDoxMSAyMDExICswMDAwCi0KLSAgICBGaXhlZCB0d28gY29tcGlsZXIgd2FybmluZ3MuCi0gICAgKEJhY2twb3J0ZWQgcjIwMjM2IGZyb20gdGhlIHRydW5rLikKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzNTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjNzZlMmM3Njk4NWFiN2E0MGQ2ZGJlZmQyZTQ3MzIzODU3NjQ5NzM1Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgTWF5IDcgMTI6NTE6MDQgMjAxMSArMDAwMAotCi0gICAgQ29tbWVudGVkIG91dCBhbiB1bnVzZWQgZnVuY3Rpb24gYmVjYXVzZSB0aGUgY29tcGlsZXIgY29tcGxhaW5lZCBhYm91dCBpdC4KLSAgICAoQmFja3BvcnRlZCByMjAyMzcgZnJvbSB0aGUgdHJ1bmsuKQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDM1NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGE1ODk2OWVkZGIzYjY2OTg3N2Q3MjI5ZjcxOTA4N2JiZDcyN2QwMzMKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgNiAyMTozMjowMSAyMDExICswMDAwCi0KLSAgICBORVdTOiBQQVRDSCAzMTk4NzgxOiBmcm9tIGZlbm5lcjogR2V0IGRpc21hbi9waW5nIGFuZCBkaXNtYW4vdHJhY2Vyb3V0ZSB0byBhdCBsZWFzdCBjb21waWxlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMzUyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMmNjYTYxMjVkNTM4ZmFhOWI1MWI3NzIxNDFmMTkyZDdiNjNjYzBjYgotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSA2IDIxOjMyOjAxIDIwMTEgKzAwMDAKLQotICAgIE5FV1M6IFBBVENIIDMxOTg3ODE6IGZyb20gZmVubmVyOiBHZXQgZGlzbWFuL3BpbmcgYW5kIGRpc21hbi90cmFjZXJvdXRlIHRvIGF0IGxlYXN0IGNvbXBpbGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiMWU3NmJlZjgxYmZjZTE2YzhkMGJjMDFlODU2Y2I0Yzc1OTMwYjVjCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDYgMjE6MzI6MDEgMjAxMSArMDAwMAotCi0gICAgTkVXUzogUEFUQ0ggMzE5ODc4MTogZnJvbSBmZW5uZXI6IEdldCBkaXNtYW4vcGluZyBhbmQgZGlzbWFuL3RyYWNlcm91dGUgdG8gYXQgbGVhc3QgY29tcGlsZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDM1MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGQwZjIyZGQxMGI3YTBkM2RiZjc5NWMyZDQ4ZTNmYTk2MzY2YWVmMWIKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgNiAyMTozMjowMSAyMDExICswMDAwCi0KLSAgICBORVdTOiBQQVRDSCAzMTk4NzgxOiBmcm9tIGZlbm5lcjogR2V0IGRpc21hbi9waW5nIGFuZCBkaXNtYW4vdHJhY2Vyb3V0ZSB0byBhdCBsZWFzdCBjb21waWxlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzUyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZmNiOGE4ZDI3YzJjYzM3OWRjZTI2M2RiZWU2NzIwZDdiNGUwMmQ3NAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDYgMTc6NDY6MjkgMjAxMSArMDAwMAotCi0gICAgdmVyc2lvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1MTVhZjk5Y2I5ZTZhM2IwOTIzZTY1MDQ2NmY3NDQ2NGUzYjliNWY2Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgNiAxNzozNzo1OSAyMDExICswMDAwCi0KLSAgICB2ZXJzaW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDM0NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDZmOTI3ZmQ3M2FmMmE0Y2ViNjdmYzQwOTA4MjZhMjg0YTdlNmZjMTkKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSA2IDE3OjM1OjUwIDIwMTEgKzAwMDAKLQotICAgIG1ha2UgZGVwZW5kCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzQ1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgODA4MGE4MTg5ZWQ3ZWU3M2NhMzIxOGM4MjgwYzY4NzE3ZDQ1MzVkZQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDYgMTc6MjI6MTQgMjAxMSArMDAwMAotCi0gICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA2MmZiOTNlMjg3MjhiMGU5M2MxMzRjODhiNjViMWQ0NTNiNmU4OWMyCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgNiAxNzoxNzo0NiAyMDExICswMDAwCi0KLSAgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3NGUxM2NjOTViZWU0NjU1ZGYyM2JhNTE0YmQyNjU3ODg2YzllNGI2Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgNiAxNDoyMzoyNCAyMDExICswMDAwCi0KLSAgICB2ZXJzaW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDM0MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDc5MzE4N2FhYTA0Yzg4MWY2YjU3ZmNmMzYxMjk2YjUyYTk0MGUxZjgKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSA2IDE0OjIxOjQ1IDIwMTEgKzAwMDAKLQotICAgIHZlcnNpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMzM5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMTQ2NmUxNWU1MjM4MDk2NWY4NDRjNmQ5OGIzZWIyNTc4OTlhNGNlMgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDYgMTQ6MTk6NTcgMjAxMSArMDAwMAotCi0gICAgbWFrZSBkZXBlbmQKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAzMzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBkZWM3ZDQ3Y2EzNzY3YzM3ZDE3OTgxZjFjZjllNTgwYWUyZmUwMjE0Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgNiAxNDowMjowNCAyMDExICswMDAwCi0KLSAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDMzNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDBlYzFjOTI5MTY3YWRiM2Q5NmI0MWVhYzI0MzUzNDk2YzMzNzFiMDgKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSA2IDEzOjU5OjIwIDIwMTEgKzAwMDAKLQotICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDMzNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDFhMDE0NTI5YzVjNGEwN2M4NDA3ZTk1NWE3ZjFmZTY4NmNiN2VlN2MKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSA2IDEzOjUwOjA2IDIwMTEgKzAwMDAKLQotICAgIEZpeCBpbmNvbXBsZXRlIHVuaW5zdGFsbCBjb25maWd1cmF0aW9uOgotICAgIC0gYnJva2VuIHJlbW92YWwgb2YgTWljcm9zb2Z0IERMTAotICAgIC0gcmVtb3ZlIGFzc29ydGVkIG5ldyBNSUJzIGFuZCBoZWFkZXIgZmlsZXMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAzMzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxZDA5MWM1NzkyODI2ZTM5ZWM3MmI2YmJmYjVjNzA3N2E0YTdkOGViCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgNiAxMzo1MDowNiAyMDExICswMDAwCi0KLSAgICBGaXggaW5jb21wbGV0ZSB1bmluc3RhbGwgY29uZmlndXJhdGlvbjoKLSAgICAtIGJyb2tlbiByZW1vdmFsIG9mIE1pY3Jvc29mdCBETEwKLSAgICAtIHJlbW92ZSBhc3NvcnRlZCBuZXcgTUlCcyBhbmQgaGVhZGVyIGZpbGVzCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzM1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZGFjMTAyYmQ1YjYzYTIxMTgxYTgwMzBhZGFmNWZmOTZiOWY4MjZjMwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDYgMTM6NTA6MDYgMjAxMSArMDAwMAotCi0gICAgRml4IGluY29tcGxldGUgdW5pbnN0YWxsIGNvbmZpZ3VyYXRpb246Ci0gICAgLSBicm9rZW4gcmVtb3ZhbCBvZiBNaWNyb3NvZnQgRExMCi0gICAgLSByZW1vdmUgYXNzb3J0ZWQgbmV3IE1JQnMgYW5kIGhlYWRlciBmaWxlcwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDMzNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGZjM2I0MTY3OTRjZjcyOTIyZjhiMmQ2MzZiYmVkMzc3Y2ExYTM2ZWQKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSA2IDEzOjUwOjA2IDIwMTEgKzAwMDAKLQotICAgIEZpeCBpbmNvbXBsZXRlIHVuaW5zdGFsbCBjb25maWd1cmF0aW9uOgotICAgIC0gYnJva2VuIHJlbW92YWwgb2YgTWljcm9zb2Z0IERMTAotICAgIC0gcmVtb3ZlIGFzc29ydGVkIG5ldyBNSUJzIGFuZCBoZWFkZXIgZmlsZXMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAzMzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmM2IxMzcyNWI3YmQ2NGFjOTQ4ZDk3MGQ5ZmU5NjUyOTg4ZWE0MTE4Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgNiAxMjo1ODoyOCAyMDExICswMDAwCi0KLSAgICBTdXBwb3J0IFRhci9HWmlwIGNvbW1hbmQgcGF0aHMgY29udGFpbmluZyBzcGFjZXMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAzMzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyNGViZmE0ODIwNGY4Mzg0NmE3MTY2MmRiOTIxZDgzYzk3MzBiZDZhCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgNiAxMjo1ODoyOCAyMDExICswMDAwCi0KLSAgICBTdXBwb3J0IFRhci9HWmlwIGNvbW1hbmQgcGF0aHMgY29udGFpbmluZyBzcGFjZXMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzMzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlZWMxNzg3NmE2NTNmZDA1MmZmNjI0MjRhODc5NThmYThkMDI5NDQyCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgNiAxMjo1NzowNyAyMDExICswMDAwCi0KLSAgICBSZXBvcnQgR1ppcCBjb21tYW5kIGNvcnJlY3RseQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDMzMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDJhNGMyYWExN2MxYWFiMTlmN2JkMmMwY2ZjMTIxMWE3MTRjYzJhNTUKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSA2IDEyOjU3OjA3IDIwMTEgKzAwMDAKLQotICAgIFJlcG9ydCBHWmlwIGNvbW1hbmQgY29ycmVjdGx5Ci0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzMzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNzEwNDM0YzRlNzUxMWUyNjZiN2VlZDVhZjUzMmUyM2RjNDk1Yzk3YQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSA1IDIxOjQ4OjI0IDIwMTEgKzAwMDAKLQotICAgIEZpeCBmb3IgRHJhZ29uRmx5IEJTRCAoZG9lcyBub3QgZGVmaW5lIElQX1NFTkRTUkNBRERSKQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDMzMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDdmN2NkNzk2ZTA4ZDk0MjFmMGM5MDdhOTdlYzg5NjM2YTk3NTZhODgKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgNSAyMDoyOTozOCAyMDExICswMDAwCi0KLSAgICBGaXggc3BlbGxpbmcgb2YgU09fUkVDVkRTVEFERFIKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzMzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjMWZiMzcyMjkxNDc0MWZhOTk4ZTZiN2NlZTljZThlMDdjZDQ3MDBlCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDUgMDY6MDc6NTEgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogTWluR1c6IE1hZGUgcmVncmVzc2lvbiB0ZXN0IG91dHB1dCBpbmRlcGVuZGVudCBvZiB0aGUgTmV0LVNOTVAgdmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIFdpbmRvd3MgcmVnaXN0cnkuIFNvbWUgdGVzdHMgdGhhdCBmYWlsZWQgcHJldmlvdXNseSBhZnRlciB0aGUgTmV0LVNOTVAgYmluYXJpZXMgKE1TVkMgYnVpbGQpIGhhZCBiZWVuIGluc3RhbGxlZCBkbyBub3cgcGFzcy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzMjkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiYzUyNThkZTIwMzAyMjhiMzY5ZTEzZDJhNDc0OGM4NTdhMGE0YjVlCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDUgMDY6MDc6NTEgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogTWluR1c6IE1hZGUgcmVncmVzc2lvbiB0ZXN0IG91dHB1dCBpbmRlcGVuZGVudCBvZiB0aGUgTmV0LVNOTVAgdmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIFdpbmRvd3MgcmVnaXN0cnkuIFNvbWUgdGVzdHMgdGhhdCBmYWlsZWQgcHJldmlvdXNseSBhZnRlciB0aGUgTmV0LVNOTVAgYmluYXJpZXMgKE1TVkMgYnVpbGQpIGhhZCBiZWVuIGluc3RhbGxlZCBkbyBub3cgcGFzcy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAzMjkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzNzljZGYzYTk2Y2YyN2Y0N2Y0MTEyMjNiNTNmODAwNWYwNDMyYTExCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDUgMDY6MDc6NTEgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogTWluR1c6IE1hZGUgcmVncmVzc2lvbiB0ZXN0IG91dHB1dCBpbmRlcGVuZGVudCBvZiB0aGUgTmV0LVNOTVAgdmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIFdpbmRvd3MgcmVnaXN0cnkuIFNvbWUgdGVzdHMgdGhhdCBmYWlsZWQgcHJldmlvdXNseSBhZnRlciB0aGUgTmV0LVNOTVAgYmluYXJpZXMgKE1TVkMgYnVpbGQpIGhhZCBiZWVuIGluc3RhbGxlZCBkbyBub3cgcGFzcy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzMjkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmNjdjMTUwZmIwNWVkMzhkZjQ0ZjhiNTI2MDkxZDZlOWI4OGQ5ZjMwCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgTWF5IDMgMTk6MTU6MjcgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogR3VhcmQgbmV0c25tcF91ZHBfcmVjdmZyb20oKSBldGMuIGRlY2xhcmF0aW9ucyBjb25zaXN0ZW50bHkuCi0gICAgQ0hBTkdFUzogV2luMzI6IEJ1aWxkcyB3aXRoIFZpc3VhbCBTdHVkaW8gMjAxMC4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAyNzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlZWJlYTY4M2E4MDI2MTM3YTcwOGU1Y2M0OTk2ZGJhYTQxNTU4MDkwCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgTWF5IDMgMTg6NTU6MDIgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogR3VhcmQgbmV0c25tcF91ZHBfcmVjdmZyb20oKSBldGMuIGRlY2xhcmF0aW9ucyBjb25zaXN0ZW50bHkuCi0gICAgQ0hBTkdFUzogV2luMzI6IEJ1aWxkcyB3aXRoIFZpc3VhbCBTdHVkaW8gMjAxMC4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAyNzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwOTgxZTYwMGE2MmQ1MjRiYmEwZmM4Nzg0NDM1ZDc2ZDI3NWQ3ZjMzCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgTWF5IDMgMTU6Mjk6NDYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogV2luMzI6IFBBVENIOiAzMjkzODQyOiBFbGltaW5hdGUgcmVnaXN0cnkgYXJndW1lbnQgbGltaXQgb2YgMTI3IGNoYXJhY3RlcnMgKHRoaXMgbGltaXRhdGlvbiB3YXMgcmVwb3J0ZWQgYnkgU3lsdmFpbiBEZXJ5KS4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAyNzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmM2VhMzQxZmIxOTQ0ZGM2YTYzOTZhZGQ3MmFjMzlmNTc5NGEyZDY5Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgTWF5IDMgMTU6Mjk6NDYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogV2luMzI6IFBBVENIOiAzMjkzODQyOiBFbGltaW5hdGUgcmVnaXN0cnkgYXJndW1lbnQgbGltaXQgb2YgMTI3IGNoYXJhY3RlcnMgKHRoaXMgbGltaXRhdGlvbiB3YXMgcmVwb3J0ZWQgYnkgU3lsdmFpbiBEZXJ5KS4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAyNzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBkMTc2MTUzN2IxMWI3MGJhOWY1YzU1ZDY4ZDAzYjE0YmZlMzI5OTI1Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgTWF5IDMgMTU6Mjk6NDYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogV2luMzI6IFBBVENIOiAzMjkzODQyOiBFbGltaW5hdGUgcmVnaXN0cnkgYXJndW1lbnQgbGltaXQgb2YgMTI3IGNoYXJhY3RlcnMgKHRoaXMgbGltaXRhdGlvbiB3YXMgcmVwb3J0ZWQgYnkgU3lsdmFpbiBEZXJ5KS4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAyNzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhMjkwMGM0NWQxZDkyN2UxZDg5MTgwMGExNDIyYTkyMmIzNzZkODVjCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gTWF5IDIgMTE6MjI6MzQgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogV2luMzI6IGhlYWRlciBmaWxlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4gY2FuIG5vdyBiZSB1c2VkIGluIHRoZSBNaW5HVyBlbnZpcm9ubWVudC4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAyNzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA0MjA1ZjUzODI5YTcyNWI1YjVlZTgzNWQ3OTE4YTc4MzViMjZhZGM2Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gTWF5IDIgMTE6MjI6MzQgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogV2luMzI6IGhlYWRlciBmaWxlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4gY2FuIG5vdyBiZSB1c2VkIGluIHRoZSBNaW5HVyBlbnZpcm9ubWVudC4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAyNzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwZmQ3YjA2MDY5OWI5MDQ3ZmNhYzlhMTVkNmM0ZGUxYzA5NDRjNWMwCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gTWF5IDIgMTE6MjI6MzQgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogV2luMzI6IGhlYWRlciBmaWxlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4gY2FuIG5vdyBiZSB1c2VkIGluIHRoZSBNaW5HVyBlbnZpcm9ubWVudC4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAyNzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyZTAwOTE0ZDQwOGIwZWY5YTQ1ZDJiMzE3YjAzMzI5ZTgxNDU2NTg2Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gTWF5IDIgMTE6MTM6MjMgMjAxMSArMDAwMAotCi0gICAgV2luMzIgRExMIGJ1aWxkIGZpeGVzLgotICAgIChCYWNrcG9ydGVkIHIyMDE4NCBmcm9tIHRydW5rLikKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAyNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyNTljMjI0ODQzZTZkZDcxM2FlNjc3Njg4ZDQxN2IwMDc4YjBhMzcwCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gTWF5IDIgMTE6MTM6MjMgMjAxMSArMDAwMAotCi0gICAgV2luMzIgRExMIGJ1aWxkIGZpeGVzLgotICAgIChCYWNrcG9ydGVkIHIyMDE4NCBmcm9tIHRydW5rLikKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAyNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlNzg2NDIwN2Y4ODgyMzBkZTY3OWFjZmRhMWZkOWI2NTdkNzkyNjEwCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgQXByIDI5IDExOjE3OjExIDIwMTEgKzAwMDAKLQotICAgIFNwZWxsaW5nIGFuZCBncmFtbWFyIGZpeGVzIGZvciB0aGUgc291cmNlIGNvZGUgY29tbWVudHMgaW4gc25tcGxpYi93aW5zZXJ2aWNlLmMuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMjc0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZTdiMzNmNDNkMGMzMTI1MTYyYWJiZDI2NGQ3ZTFmYTNmYTQwNjMwMgotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEFwciAyOSAxMToxNzoxMSAyMDExICswMDAwCi0KLSAgICBTcGVsbGluZyBhbmQgZ3JhbW1hciBmaXhlcyBmb3IgdGhlIHNvdXJjZSBjb2RlIGNvbW1lbnRzIGluIHNubXBsaWIvd2luc2VydmljZS5jLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDI3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGMxNzYyMmVlN2VlODA2ZjAyZTRlYTk5ZDY0Y2M3ZWFiY2Q0NjA4ZDQKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBBcHIgMjkgMTE6MTc6MTEgMjAxMSArMDAwMAotCi0gICAgU3BlbGxpbmcgYW5kIGdyYW1tYXIgZml4ZXMgZm9yIHRoZSBzb3VyY2UgY29kZSBjb21tZW50cyBpbiBzbm1wbGliL3dpbnNlcnZpY2UuYy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAyNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzMTFhZGUyM2RlNGEwMDE0ZmUwZmMyM2NmODNkMDc3Y2Q2NjNhZDA1Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgQXByIDI3IDIxOjE2OjIzIDIwMTEgKzAwMDAKLQotICAgIERvbid0IGZyZWUgdGhlIGlmWFRhYmxlIHJvdyBmb3VuZCBvbiBsb2FkIGZhaWx1cmUgYXMgd2UgZG9uJ3Qgb3duIGl0Ci0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMjQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZWRlMjQ2ODk0NjFiNzVjNDQxYTM2YTM4NGE2YzU1OTcyM2RkZTJkMwotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEFwciAyNyAyMToxNjoyMyAyMDExICswMDAwCi0KLSAgICBEb24ndCBmcmVlIHRoZSBpZlhUYWJsZSByb3cgZm91bmQgb24gbG9hZCBmYWlsdXJlIGFzIHdlIGRvbid0IG93biBpdAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDI0MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDFhZjA4ZTFkNjA4YjdiZDEzMzYxZWFkNWM0MmY0YzQ3YTI4M2I1OTkKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBBcHIgMjcgMjE6MTY6MjMgMjAxMSArMDAwMAotCi0gICAgRG9uJ3QgZnJlZSB0aGUgaWZYVGFibGUgcm93IGZvdW5kIG9uIGxvYWQgZmFpbHVyZSBhcyB3ZSBkb24ndCBvd24gaXQKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAyNDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA2MzczZWYwOWFkZDViMmEyY2QxZDhlMTM2YzY3NGU4NjkxMGI5MGE1Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgQXByIDI3IDIxOjE2OjIzIDIwMTEgKzAwMDAKLQotICAgIERvbid0IGZyZWUgdGhlIGlmWFRhYmxlIHJvdyBmb3VuZCBvbiBsb2FkIGZhaWx1cmUgYXMgd2UgZG9uJ3Qgb3duIGl0Ci0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMjQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNDBhYmQ4ZTVhYjExYTA3YzQ5NmFiMjVmMWFkNTRjYzNlNTgzMjdhNAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gQXByIDE3IDIwOjU2OjQ4IDIwMTEgKzAwMDAKK2NvbW1pdCA4NWY4OTNlMmI2MDVlNjdmOWJkMDQ0M2M3NGUyZWQyNjlhYTY4NTY0CitBdXRob3I6IE5pa2kgRGVuZXYgPG5pa2lfZEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBOb3YgMTcgMjI6NDI6MzIgMjAxMSArMDEwMAogCiAgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDMxNzU2NDA6IFVzZSBJUF9SRUNWRFNUQUREUiBzb2Nrb3B0IHdoZXJlIGF2YWlsYWJsZSAoKkJTRCkKICAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxODMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgVGhpcyBodW5rIGZlbGwgb2Ygd2hlbiB0aGUgcmVzdCBvZiB0aGUgcGF0Y2ggd2FzIG1lcmdlZC4KIAotY29tbWl0IGQyZjZmNTUxMzZiMzk4M2ZhYjE2NDBjMDMxZDVlN2JmMzJhNDg1MzUKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIEFwciAxNyAyMDo1Njo0OCAyMDExICswMDAwCitjb21taXQgNWM5MTNlNTQ2NTZhZTAwOTZiMWZlYjZkYTk4YjVmYzljYTgxZjI3NgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAxNiAyMzozMzowNyAyMDExICswMTAwCisKKyAgICBEZWZpbmUgdGhlIGZ1bGwgTmV0QlNEIGhpZXJhcmNoeSBkb3dud2FyZHMKKworY29tbWl0IGI4ODE4NDFiZDA0OTNkZDcxZDYzMjU5YmRkZWQ0NDliMDZmMDJjMzIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgMTYgMjM6MzA6MzMgMjAxMSArMDEwMAorCisgICAgRml4IHNpemVfdC9pbnQgbWlzbWF0Y2hlcworCitjb21taXQgY2EyOTRjZjc1YmJjOGU5MGRiZjQ0ZWU0MDQ3ODkzNWU5MWRiMTQ4NworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAxNiAyMzoxODowMyAyMDExICswMTAwCisKKyAgICBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcworCitjb21taXQgY2QzMmMyZGZmMDZiOWI0NTJjYzE4ZDU1MmQyZjIyMzQwOTJjODI5YworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAxNiAyMzoxNzowOSAyMDExICswMTAwCisKKyAgICBGaXggZm9ybWF0IHdhcm5pbmcKKworY29tbWl0IDg4MzEzNmMyYjJmYTA3MzlmNDM3YThjZmI2NjE0YWNjYzc2ZTI2OGUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgMTYgMjM6MTU6NTggMjAxMSArMDEwMAorCisgICAgTW9yZSBuZWVkcyBmb3IgTkVUU05NUF9QUklvIGZvcm1hdCBzcGVjaWZpZXIKKworY29tbWl0IGI4MDg0YTdjY2M5MDliNmQ2ZGI3YzBlOGU1OTZkNzg2NzFmNTY3OGIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgMTYgMjM6MTQ6MjYgMjAxMSArMDEwMAorCisgICAgRml4IHVzaW5nIGNoYXIgYXMgYXJyYXkgaW5kZXggKGN0eXBlLmgpCisKK2NvbW1pdCA4NDUyOWU2MzIwYTg5ZDk3ZjEzMTRhZWJhZDgwNjI1NWQyYTFiMThjCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDIzOjAwOjU3IDIwMTEgKzAxMDAKKworICAgIEZpeCBtaXNzaW5nIGZvcm1hdCBmb3IgRnJlZUJTRCA0CisKK2NvbW1pdCA0YmQwMzUyOTU1YTI1NTFiZmUwMjMwOGRkMTM0YjkxMjhjOThiOWU5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDIyOjU5OjM2IDIwMTEgKzAxMDAKKworICAgIEZpeCBwYXJhbnRoZXNpcyBwcm9ibGVtCisKK2NvbW1pdCBmZTYyNjliMTkwMGNmNDRkYzI3YTE5OWE3NjFkMTVhMDFjM2YzMDkyCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDIyOjU4OjM0IDIwMTEgKzAxMDAKKworICAgIEZpeCBzaXplX3QvaW50IG1pc21hdGNoZXMKKworY29tbWl0IGE0ZGI5ZjlmYzEzZDIxZWNmZjQ4OGViNDEwMzc2ZWRkYTZjMjgyMzIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgMTYgMTM6NDM6MzQgMjAxMSArMDEwMAorCisgICAgUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMKKworY29tbWl0IDM5MGMwMTE0YzhlYzBiZGIyN2IwOGI2Zjc0ZTNmNmVmM2E2Mjk4MWIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgMTYgMTM6Mzc6NDkgMjAxMSArMDEwMAorCisgICAgRml4IGZvcm1hdCBzcGVjaWZpZXJzIHRvIGF2b2lkIHdhcm5pbmdzCisKK2NvbW1pdCAyNWNmYzE5NjJhZTU3NmNjYjE1NThkYTFlM2VmOGI2YzE3ZjYzYzE2CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDExOjI3OjUzIDIwMTEgKzAxMDAKKworICAgIFJlYWxseSB1cC10by1kYXRlIG1pYnMKKworY29tbWl0IDBlODZjNzgxZjM5ODliZjAyMmM4OTkzYTExODYxN2I3NGE3NTQyMGMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgMTYgMDk6MTc6MTkgMjAxMSArMDEwMAorCisgICAgbWVtb3J5X2xpbnV4OiBnZXQgU2htZW0gZnJvbSAvcHJvYy9tZW1pbmZvIGZvciAyLjYgKG9yIG5ld2VyKSBrZXJuZWxzCisKK2NvbW1pdCBiZjI2NGQxNWRlZDdhY2JiZjJlMzg3MWI5OGZkMWZjZWY0M2Q5ZWMzCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDA5OjE2OjE2IDIwMTEgKzAxMDAKKworICAgIG1lbW9yeV9saW51eDogY2xvc2Ugc29ja2V0cyBpbiBlcnJvciBzaXR1YXRpb25zCisKK2NvbW1pdCA1N2ZmOGE0MGJhZTVkOWJjYWQxNjA4OTE0MmE5Y2YzMjhjOWZhMWY1CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDA5OjE0OjU3IDIwMTEgKzAxMDAKKworICAgIGRpc21hbi9waW5nLCBkaXNtYW4vdHJhY2Vyb3V0ZTogQ2xvc2Ugc29ja2V0cyBpbiBlcnJvciBzaXR1YXRpb25zCisKK2NvbW1pdCA4YTI1MDJhMTVjMzIxN2I5NTkzOWEzYzgzNjE2N2QyMzBhYzM1ZjAyCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDA5OjEzOjUzIDIwMTEgKzAxMDAKKworICAgIFVwLXRvLWRhdGUgbGlzdCBvZiBSRkNzIHdpdCBtaWJzCisKK2NvbW1pdCBkY2RkNzAyMTExZDhkYTVmNTM4MDRjZmNmMGRmZGFkNzMxNDY4YmRlCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIE5vdiAxNSAxMDo1NzozNCAyMDExICswMDAwCisKKyAgICBEb24ndCB0cnkgdG8gaW5zdGFsbCBhbiBlbXB0eSBsaXN0IG9mIG1hbiBwYWdlcyAoTUFOMykKKworY29tbWl0IGJhNjE5ODA0ZTU5NzhhOGRmNzU0ODQ0ZWZjY2E1MmI2OWI1MDE1ZmEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBOb3YgMTQgMTM6MzQ6MjAgMjAxMSArMDEwMAorCisgICAgTWluR1c6IE1ha2Ugc3VyZSB0aGF0IHRoZSBiYWNrc2xhc2hlcyBpbiB0aGUgcHNraWxsIG1lc3NhZ2UgYXJlIGRpc3BsYXllZC4KKworY29tbWl0IDkyM2VlY2M1MDdmNzUwNDNiNjBjNWU2ODA1M2E0ZjM5NmFiMGIwZDIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBOb3YgMTQgMTI6MzY6MzggMjAxMSArMDEwMAorCisgICAgQ29tcGlsZXIgd2FybmluZyBmaXggZm9yIHN5c3RlbXMgd2hlcmUgdWludDY0X3QgPSB1bnNpZ25lZCBsb25nIChlLmcuIFJIRUwgNi4xL3g4Nl82NCkKKworY29tbWl0IDQzNGJmYzFmNzQ1NzU1MGI2Zjg3ZDViY2Q1MTEyNzZiMjcwYjU5NjQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTm92IDE0IDExOjIyOjUzIDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBmcm9tIE1hcnRpbiBXaWxjazogZml4ZWQgc25tcGQgY3Jhc2hpbmcgd2l0aCAnc2VsZWN0OiBiYWQgZmlsZSBkZXNjcmlwdG9yJy4KKyAgICAKKyAgICBPbiAzMi1iaXQgc3lzdGVtcywgc25tcGQgZGllcyB3aXRoIGFmb3JlbWVudGlvbmVkIG1lc3NhZ2Ugd2hlbiB1c2luZyBmaWxlIGRlc2NyaXB0aW9ucyA+IDMyLCBlLmcuIHdoZW4gaGF2aW5nID4zMiBBZ2VudFggc3ViYWdlbnRzLgorCitjb21taXQgZWQ2NWVjYTZlN2Y5Y2ZhNzM4MGE3OGQ1NmMwMWVkMzE0NzQ1YjE2OQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE5vdiAxMSAxOTowMToyMSAyMDExICswMTAwCisKKyAgICBGcmVlQlNELTk6IEZpeCBmb3IgY29uc3QnaWZ5ZWQgbmxpc3QgYXJndW1lbnRzCisKK2NvbW1pdCBlYWNhNzk4M2UzNjU1YWI2OTZmY2M0NDYxY2EwY2VkYmFjNmNlNjlhCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTm92IDExIDE5OjAwOjEyIDIwMTEgKzAxMDAKKworICAgIE5ldEJTRC02OiBPbmUgbW9yZSBpbnN0YW5jZSBvZiB0aW1lc3BlYyByZXBsYWNpbmcgdGltZXZhbAorCitjb21taXQgOGFkNmM1M2ZkZWM1YWRlYWU0ZTUyZjE3NTFlY2VjNGEzNDViYWIwNQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE5vdiAxMSAxODo1OTowMSAyMDExICswMTAwCisKKyAgICBGaXggYnVpZyAjMzQzNjUyNzogYXJwX25ldGxpbms6IGZpeCBkeWluZyByZWxvYWQgb2YgY2FjaGUKKworY29tbWl0IDM3OGZmZWQwM2JhNzlhODM0NmQ2YzYyNzgxZTJkZGY1Y2U5MmE0NzgKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBOb3YgMTEgMTg6NTU6NDMgMjAxMSArMDEwMAorCisgICAgRml4IGJ1ZyAjMzQzNjUyODogc3dpbnN0X3BrZ2luZm86IHJlY292ZXIgZnJvbSBOVUxMIHJldHVybiBmcm9tIG9wZW5kaXIKKworY29tbWl0IGQ3YWQ4ZjVmOWYzZjY3ZjE2ZjY1YzI1MTVkMTFlMTk0ZDJjZGQxMmMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBOb3YgMTAgMTQ6MDQ6NDEgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogQ3lnd2luOiBNYWtlIGRhdGVfbl90aW1lKCkgcHJvZHVjZSB0aW1lIHpvbmUgaW5mb3JtYXRpb24KKworY29tbWl0IGJhMzVjNTBiMmY0NTliZDljMTFlZDU5Y2M3ZDFiMTYyMTU2NDRmYTMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBOb3YgMTAgMTQ6MTc6MDQgMjAxMSArMDEwMAorCisgICAgUmVwbGFjZSBBQ19UUllfTElOSygpIGJ5IEFDX0xJTktfSUZFTFNFKCkKKyAgICAKKyAgICBOb3RlOiB0aGVzZSBjaGFuZ2VzIGRvIG5vdCBhZmZlY3QgdGhlIGdlbmVyYXRlZCBjb25maWd1cmUgc2NyaXB0LgorCitjb21taXQgZjYxNWJmMjRmNWQwZjIzY2U5MzAxZGE1NTYxODRkNjQ2MDc0MDQ1NgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiA5IDIwOjMyOjQ5IDIwMTEgKzAxMDAKKworICAgIEZpcyBCdWcgIzM0MzQ4MjQ6IFNJR1NFR1Ygd2hlbiByZWFkaW5nIGRpc2sgZGlyZWN0aXZlIGFmdGVyIFNJR0hVUAorCitjb21taXQgYTk0YTE3OWQ5MzQwZjUxZmE3YzIzNDMxNjMwYmMwZmZkNmQ3NTllOAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiA5IDIwOjMwOjUxIDIwMTEgKzAxMDAKKworICAgIEZpeCBidWcgIzM0MzM2MTY6IGRvbnQgdHJlYXQgRGF0ZUFuZFRpbWUgYXMgYSBzdHJpbmcKKworY29tbWl0IGIyOWU0MTY0NTMxZDI1OGZlMzRhNmZlMmI5ZTFlYzYwYzU2Zjk1NDQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIE1vbiBOb3YgNyAwMToyNTo1NyAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCisKK2NvbW1pdCBlMjIxZTY1ZmRjMWM2OGYxOTY4NjUxNzE3ZGNjOWNjZmI2NDE0NzgzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgTm92IDMgMTU6MDU6MDAgMjAxMSArMDEwMAorCisgICAgRml4IHdhcm5pbmdzIGFib3V0IGNvbnZlcnRpbmcgc29ja2FkZHJfaW4gKiBpbnRvIHNvY2thZGRyICouCisgICAgCisgICAgVGhpcyBpcyBhIGZvbGxvdy11cCBmb3IgY29tbWl0IGEwYWYzODUuCisKK2NvbW1pdCAyZTdlOWVkYTBiMGQ2MmE3NjQ1YTlhOGY3MGVmM2ZiNmYzZGQ2OTQxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgTm92IDMgMTE6MTc6NDggMjAxMSArMDEwMAorCisgICAgRml4IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2FybmluZ3MuCisKK2NvbW1pdCAzNDYyZWJjZGQwYjdjMjk4Y2IxNWMzMDk5NzM2ZjRmOTUyMjU3ODQ2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgT2N0IDI4IDE2OjA3OjE1IDIwMTEgKzAyMDAKKworICAgIFJlbW92ZSB0aG9zZSBzdXBlcmZsdW91cyBwYXJlbnRoZXNlcyB0aGF0IHRyaWdnZXIgYSBjbGFuZyB3YXJuaW5nLgorCitjb21taXQgM2U1ZmVkZDNlN2QxZWYzMTY4MzYwNGJmNzNkYzU2ZTk0NGNhZDM0OQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBOb3YgMyAwOTo0NToyNyAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogZml4ZWQgVUNELVNOTVAtTUlCOjpzeXN0ZW1TdGF0cyBhZnRlciAzMCBkYXlzIG9mIHVwdGltZS4KKyAgICAKKyAgICBBZnRlciAzMCBkYXlzLCB2YWx1ZXMgZnJvbSAvcHJvYy9zdGF0IChvbiBMaW51eCkgY2FuIGdldCBiaWdnZXIgdGhhbiAzMmJpdHMgYW5kIHNubXBkIGNhbGN1bGF0aW9ucyBtaWdodCByZW5kZXIgY291bnRlcnMgbGlrZSBzc0NwdVVzZXIgbmVnYXRpdmUgb3IgemVybywgd2hpbGUgdGhlIHJlYWwgdmFsdWUgaXMgaGlnaGVyLiBUaGVyZWZvcmUgdGhlIGNvdW50ZXJzIHNob3VsZCBiZSB0cmFja2VkIGFzIHRoZSBsYXJnZXN0IGludGVnZXIgYXZhaWxhYmxlLgorCitjb21taXQgMGZjODIyMWIyNDk4OGM0YWU2MTgwZWQ0MmI4NmI5ODUyZmQ1ODZhZAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAyIDIyOjU5OjA4IDIwMTEgKzAxMDAKKworICAgIGRza0luZGV4IHdhcyBvZmYgYnkgb25lCisKK2NvbW1pdCBhNWIyODgyOWU2NGQ1ZjNiODdlNGI5YjFlZjhjYzIwNGYzM2E2MWI3CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDIgMjE6MjU6MDcgMjAxMSArMDEwMAorCisgICAgU29sYXJpcyBuZWVkcyAkQVdLIHRvIGdldCBhIHVzYWJsZSBuYXdrCisKK2NvbW1pdCAyODAxYTIxMzlmMjcwMjFlMWFiMTVlMzYyZTJkM2Q2MjRmZmFhNDk0CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gT2N0IDMxIDIyOjU1OjUzIDIwMTEgKzAxMDAKKworICAgIFBhdGNoICMzNDA2MzY0OiBGaXggdW5zdGFibGUgZGF0YSBmb3IgTmV0QlNELgorCitjb21taXQgODIxYTU4ZDExMmQ3YWM0OTUxNDllMjYyZDcwNDQxMmJhMjgwMDQzOAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE9jdCAzMSAyMjo0Mzo1MiAyMDExICswMTAwCisKKyAgICBGaXggaXB2NiBzdGF0aXN0aWNzIGxvb3BpbmcgdG9vIGZhciB3aGVuIHNjYW5uaW5nIGludGVyZmFjZXMuCisgICAgRml4IFRDUCBzZXNzaW9uIHRhYmxlIHJlcGVhdGluZyBkYXRhIGZyb20gZmlyc3QgZW50cnkgZm9yIGFsbC4KKworY29tbWl0IDM0OTU5MWQwM2UxN2E1NWI0M2VhY2M2YTY4N2IwMmZkOGQ0ZTk1MjgKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIE1vbiBPY3QgMzEgMDg6NTk6MzcgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogcGVybDogTWFrZSBpdCBwb3NzaWJsZSB0byBidWlsZCBwZXJsIHN1cHBvcnQgd2l0aG91dCBzdXBwb3J0IGZvciBvcGFxdWUgdHlwZXMuCisKK2NvbW1pdCAxZWM3MTEwZTcyYmNlMTU2MWY3NDY1MTc0NTlkNmYwNDMwMTZiNjBlCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gT2N0IDMwIDE5OjA1OjMwIDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IE1ha2UgdGhlIGFzbjEgdGVzdCBwYXNzIGV2ZW4gaWYgc3VwcG9ydCBmb3Igb3BhcXVlIHR5cGVzIGFyZSByZW1vdmVkLgorCitjb21taXQgNmQyNjkxOGFmNTVhYTM2NjJhNzIwNTQyZGU3N2JiZjM5YjBhM2U5MQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IE9jdCAyOSAwODozNDozMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRGlzYWJsZSB0aGUgc3VwcG9ydCBmb3IgaW50ZWdlcjY0IGluIHBhc3Mgc2NyaXB0cyBpZiBjb21waWxpbmcgd2l0aG91dCBvcGFxdWUtc3BlY2lhbC10eXBlcy4KKworY29tbWl0IDI5YmY2OWQ3MDQyNGYzNTlkOWM4N2YwN2E5NjRhMDk5NDE1NjQ5YTUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBPY3QgMTAgMTM6MDI6MjUgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcHRyYXBkX3NxbDogQXZvaWQgdGhhdCBhIGxpbmtlciBlcnJvciBpcyB0cmlnZ2VyZWQgb24gc3lzdGVtcyB3aGVyZSBteV9wcm9nbmFtZSBpcyBtaXNzaW5nIGluIGxpYm15c3FsY2xpZW50IChlLmcuIEZlZG9yYSAxNSBhbmQgMTYpLgorICAgIAorICAgIFRoaXMgaXMgYSBiYWNrcG9ydCBvZiBjb21taXQgOWY2NTNmNy4KKworY29tbWl0IDJjYzk1MDRiOWJiODYyNWI5NGJlNmNkYTdlNjA5OTNkMDU5Y2Q5MjgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBPY3QgMjYgMDk6MDE6MjMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAzNDI4NTA2OiBGaXggbmV0c25tcF9nZXRob3N0YnlhZGRyKCkKKyAgICAKKyAgICBUaGlzIHBhdGNoIHNob3VsZCBmaXggdGhlIHJlZ3Jlc3Npb25zIGludHJvZHVjZWQgYnkgY29tbWl0IDg1ZDk2YzQgKE1heSAxMywgMjAxMSkuCisKK2NvbW1pdCA5YjQyN2IzNTNmMWNlYjhmZTg3ZTZmYzhlZDNiNmNmYWIzY2U3ZjIwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgT2N0IDI3IDA4OjIwOjAwIDIwMTEgKzAyMDAKKworICAgIE1pbkdXOiBBdm9pZCBjb25mdXNpb24gYmV0d2VlbiBNaW5HVydzIGtpbGwuZXhlIGFuZCB0aGUgU3lzSW50ZXJuYWxzIHBza2lsbC5leGUKKworY29tbWl0IDJjNDVmOTJjZmNiNWIwNWUwNDkyMjZhNWE3ODgzYTBiMTA2MDExYWUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBPY3QgMjYgMTA6NDI6MjkgMjAxMSArMDIwMAorCisgICAgRml4IGNvbXBpbGVyIHdhcm5pbmdzIGFib3V0IHBhc3NpbmcgYSBjb25zdCBwb2ludGVyIHRvIGEgZnVuY3Rpb24gYWNjZXB0aW5nIGEgbm9uLWNvbnN0IHBvaW50ZXIuCisKK2NvbW1pdCAyNzVkMjNlZGZkZWJlMDU3N2IwODQyMWU0YzZjOTM2YWUzOWI3ZmRjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgT2N0IDI2IDA5OjMzOjA5IDIwMTEgKzAyMDAKKworICAgIEZpeCBjb21waWxlciB3YXJuaW5ncyBhYm91dCBzZXQtYnV0LW5vdC11c2VkIHZhcmlhYmxlcworCitjb21taXQgNDQ5NWUxN2MwNzhhYzY5OTdhOWM3ZmExYTg4ZGIwNjQ0ZTkxOTQ5MQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE9jdCAyNiAwOTozMjo0NiAyMDExICswMjAwCisKKyAgICBGaXggY29tcGlsZXIgd2FybmluZ3MgYWJvdXQgY2FzdGluZyBhd2F5IGNvbnN0CisKK2NvbW1pdCAxMzk1MmY2YmVlOWY0MDg4NjdhYjZkMmZkZmRkZTRmMjg0MDc0OTU3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE9jdCAyNiAxNDowNToxNiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBmcm9tIFNpZGRoZXNoIFBveWFyZWthcjogcHJvcGVybHkgY2xlYW4gdXAgb2xkIHJlcXVlc3RzIGluIGEgc3ViYWdlbnQgd2hlbiB3ZSByZWNvbm5lY3QgdG8gbWFzdGVyLgorICAgIAorICAgIEFuIHNubXAgc3ViYWdlbnQgbGlua2VkIGFnYWluc3QgbmV0LXNubXAtbGlicyBtYXkgY3Jhc2ggaWYgaXQgaGFuZGxlcyBhCisgICAgcmVzcG9uc2Ugd2hpY2ggaGFzIG1hZ2ljIHJlZmVycmluZyB0byBhbiBvbGRlciBkaXNjb25uZWN0ZWQgbWFpbiBzZXNzaW9uLiBUaGlzCisgICAgbWF5IGhhcHBlbiB3aGVuIHRoZSBzdWJhZ2VudAorICAgIGF0dGVtcHRzIHRvIGNsZWFuIHVwIG9sZCByZXF1ZXN0cyBvbiByZWNvbm5lY3Rpb24gb2YgdGhlIGRpc2Nvbm5lY3RlZCBtYXN0ZXIKKyAgICBzZXNzaW9uLgorCitjb21taXQgYWUwNTI0NzJiMjI3MjBkMDgzNjllODUxMjdkYjIxNDI0NWRmMmUzZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBPY3QgMjUgMTY6MTU6MTcgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogcGVybDogZml4ZWQgc2VnbWVudGF0aW9uIGZhdWx0IHdoZW4gaGFuZGxlciByZWdpc3RyYXRpb24gZmFpbHMuCisgICAgCisgICAgV2hlbiBuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXIgZmFpbHMsIGl0IGZyZWVzIGl0cyByZWdpbmZvIC0+IG5zYWhyX0RFU1RST1kgKGFuZCBhbnkgb3RoZXIgZnVuY3Rpb24pIG11c3Qgbm90IGRlcmVmZXJlbmNlIGl0LgorCitjb21taXQgYzE5OWJmOTFiNjIzOWYyNmIyYWFiMzRlODU3NWUwZjBkZjljZGU5YgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBPY3QgMjQgMTQ6MjU6MjggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IHhmcywgamZzIGFuZCB2eGZzIGZpbGVzeXN0ZW1zIGFyZSBub3cgcmVjb2duaXplZCBpbiBoclN0b3JhZ2VUYWJsZQorCitjb21taXQgNzQ3ZmRjNzFlNjRkMDllMDgwOTI4ZWJiYjRkMDRjYmRlMzkwNjc5OQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBPY3QgNSAxNTo1Nzo1OSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogTG93ZXJlZCBzZXZlcml0eSBvZiAnZXJyb3IgZmluZGluZyByb3cgaW5kZXggaW4gX2lmWFRhYmxlX2NvbnRhaW5lcl9yb3dfcmVzdG9yZScgbWVzc2FnZS4KKyAgICAKKyAgICBUaGUgbWVzc2FnZSBpcyBzaG93cyB1cCB3aGVuIHNubXBkIGlzIHN0YXJ0ZWQgYW5kIHRoZXJlIGlzIGRpZmZlcmVudCBzZXQgb2YgbmV0d29yayBpbnRlcmZhY2VzIHRoYW4gaXQgd2FzIHdoZW4gc25tcGQgd2FzdCBsYXN0IHN0b3BwZWQuIFRoaXMgaXMgY29tbW9uIG9uIHBwcC1zZXJ2ZXJzIG9yIHZpcnR1YWwgaG9zdHMuCisKK2NvbW1pdCAyNTBmNjk4ZTU5ZWFiOWYxZmZkMzMyZmY1OWZkYjcyZWEwZGYwNmZmCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gT2N0IDIzIDA4OjUxOjIzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBNYWtlIHRoZSB0cmFuc3BvcnQgY29uZmlndXJhdGlvbiBjb2RlIHdvcmsgYWdhaW4KKyAgICAKKyAgICBQcmV2aW91c2x5IHRoZSB0cmFuc3BvcnQgaW5oZXJpdGFuY2UgcHJvY2Vzc2luZyBjb2RlIHJhbiB3aXRoCisgICAgTkVUU05NUF9GRUFUVVJFX0NIRUNLSU5HIHNldC4gSW4gdGhpcyBtb2RlIHRoZSBmaWxlIG5ldC1zbm1wL2ZlYXR1cmUtZGV0YWlscy5oCisgICAgaXMgcmVxdWllcmVkLiBUaGF0IGZpbGUgaXMgY3JlYXRlZCBkdXJpbmcgdGhlIGZpcnN0IG1ha2UgcnVuLCBhbmQgdGhhdCBoYXBwZW5zCisgICAgYWZ0ZXIgY29uZmlndXJlIGlzIHJ1bi4KKyAgICBDaGFuZ2UgdGhpcyB0byB1bmRlZmluZSBORVRTTk1QX01JTklNQUxfQ09ERSwgZWZmZWN0aXZlbHkgdHVybmluZyBvZmYgZmVhdHVyZQorICAgIHN1cHBvcnQgZHVyaW5nIHRyYW5zcG9ydCBjb25maWd1cmF0aW9uIGluIG9yZGVyIHRvIG1ha2UgaXQgd29yayBhdCBhbGwuCisKK2NvbW1pdCA2ZWY2OTA3NjQyMjQ3YzY2M2I5Yjg5NjRiOWZkNDRhMjExZGJjYWE3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgT2N0IDIwIDIwOjMwOjU0IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDM0MDgzOTg6IEZpeCBhIG1lbW9yeSBsZWFrIGluIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMuCisgICAgCisgICAgVGhpcyBtZW1vcnkgbGVhayB3YXMgaW50cm9kdWNlZCB2aWEgY29tbWl0CisgICAgOWJmM2Q5NmQ5NmE4ZWNkNGE1ZmMzNWMzMjZkYzkzNzQ2NzAwMmI2YzogSW5pdGlhbCBIQUwKKyAgICBpbXBsZW1lbnRhdGlvbiBvZiBGaWxlU3lzdGVtIGluZm9ybWF0aW9uIChNYXJjaCA3LCAyMDA4KS4KKworY29tbWl0IGNmODJiODk0YjIyMTdjMjZlZGM2ZjEzNTYzNTFjOTMyNDE1NjA0ZTIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBPY3QgMTUgMTQ6NDU6MDggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAzNDIzOTE1OiBDaGFuZ2UgZGVmYXVsdCBudW1iZXIgb2YgcmV0cmllcyBiYWNrIGZyb20gMCB0byA1CisgICAgCisgICAgVGhpcyBwYXRjaCBmaXhlcyBhIGJ1ZyBpbnRyb2R1Y2VkIHZpYSBjb21taXQgNmNhYzA1MCAoTWF5IDUsIDIwMTEsCisgICAgYWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyB0aGUgZGVmYXVsdCBudW1iZXIgb2YgcmV0cmllcyBpbgorICAgIHNubXBkLmNvbmYpLgorCitjb21taXQgYzExYWRhYTEyOTE1YWJmZWU2MjliYjZjMDI2YzIxZjIxODViMjE2ZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE9jdCAxNyAxMDoyNDo0NiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBXaW4zMjogQXZvaWQgdGhhdCBjb21waWxpbmcgdGhlIGhlYWRlciBmaWxlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4gd2l0aCB0aGUgTWluR1cgZ2NjIGNvbXBpbGVyIHRyaWdnZXJzIHdhcm5pbmdzIGFib3V0ICJwcmFnbWEgY29tbWVudCIuCisKK2NvbW1pdCBiMTdhNzJhNzkzNDgzYWVlNGE1YmIyZjJlMmM3ZjRmZDg2OTgxN2U2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gT2N0IDE3IDEwOjIyOjIwIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IFdpbjMyOiBBdm9pZCB0aGF0IHRoZSBQQUNLQUdFXyogbWFjcm9zIGRlZmluZWQgaW4gPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPiBjYXVzZSB0cm91YmxlIHdoZW4gaW5jbHVkaW5nIHRoaXMgaGVhZGVyIGluIGEgcGFja2FnZSB0aGF0IHVzZXMgdGhlIEdOVSBhdXRvdG9vbHMuCisKK2NvbW1pdCA2NjRkM2FlMTA3ZDc1NDA1MWI4YzQyMjc5ZDQ1OWFhNTdhMWJlMWMzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gT2N0IDEwIDE2OjQ3OjE2IDIwMTEgKzAyMDAKKworICAgIE1pbkdXLCBod19mc3lzOiBVc2UgcHJvcGVyIGZvcm1hdCBzcGVjaWZpZXJzIGluIGEgZGVidWcgc3RhdGVtZW50LgorICAgIAorICAgIFRoaXMgcGF0Y2ggZml4ZXMgYW4gaXNzdWUgaW50cm9kdWNlZCBpbiBjb21taXQgNzZmZjI1ZC4KKworY29tbWl0IDIxMWRjYjQ5MzA2NTYxZTM1YmEzYzIxM2JlN2NmYTI1N2I0MGE4ZTUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBPY3QgMTAgMTU6NTI6NDMgMjAxMSArMDIwMAorCisgICAgQXZvaWQgdGhhdCBnY2MgNC42IGNvbXBsYWlucyBhYm91dCBzZXQgYnV0IG5vdCB1c2VkIHZhcmlhYmxlcworCitjb21taXQgOWY2NTNmNzNlNWFhNzBmMGJlZjExNzQ2MzJlOTU1OTRmODdmNjY5ZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE9jdCAxMCAxMzowMjoyNSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wdHJhcGRfc3FsOiBBdm9pZCB0aGF0IGEgbGlua2VyIGVycm9yIGlzIHRyaWdnZXJlZCBvbiBzeXN0ZW1zIHdoZXJlIG15X3Byb2duYW1lIGlzIG1pc3NpbmcgaW4gbGlibXlzcWxjbGllbnQgKGUuZy4gRmVkb3JhIDE1IGFuZCAxNikuCisKK2NvbW1pdCA0YzgzYjkyMjlhNzQ1NGYzNGY2ZmY3NWY2OWU2N2U0MDMwYzQxOWI1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgT2N0IDcgMTU6NTg6NDUgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogU2V0IHRoZSBycGF0aCBmb3IgbGlicGVybC5zbyBpbiBsaWJuZXRzbm1wbWlicy5zbyBzdWNoIHRoYXQgdGhlIGR5bmFtaWMgbGlua2VyIGNhbiBmaW5kIGxpYnBlcmwuc28gd2l0aG91dCByZXF1aXJpbmcgdGhlIHVzZXIgdG8gbW9kaWZ5IHRoZSBkeW5hbWljIGxpbmtlciBzZXR0aW5ncy4KKyAgICAKKyAgICBUaGlzIGNoYW5nZSBpbiBhZ2VudC9NYWtlZmlsZS5pbiBpcyBuZWNlc3Nhcnkgb24gdGhlIDUuNSBicmFuY2ggYW5kCisgICAgbGF0ZXIgYnV0IG5vdCBvbiB0aGUgNS40IGJyYW5jaC4gVGhhdCBpcyBiZWNhdXNlIHRoZSA1LjQgYnJhbmNoIHVzZXMKKyAgICBhbiBvbGRlciB2ZXJzaW9uIG9mIGxpYnRvb2wgdGhhdCBwcm9wYWdhdGVzIHRoZSBycGF0aCBvZiBkZXBlbmRlbnQKKyAgICBsaWJyYXJpZXMuIFRoaXMgaXMgY2FsbGVkIGludGVyLWxpYnJhcnkgZGVwZW5kZW5jeSB0cmFja2luZyBpbiB0aGUKKyAgICBsaWJ0b29sIG1hbnVhbC4gVGhpcyBmdW5jdGlvbmFsaXR5IGlzIHByZXNlbnQgaW4gbGlidG9vbCB2ZXJzaW9uIDEKKyAgICBidXQgbm90IGluIGxpYnRvb2wgdmVyc2lvbiAyLiBGb3IgbW9yZSBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uIGFib3V0CisgICAgZHluYW1pYyBsaWJyYXJpZXMgYW5kIHJwYXRocywgc2VlIGFsc28gdGhlIGRvY3VtZW50IHdpdGggdGhlIHRpdGxlCisgICAgIlJwYXRoSXNzdWUiIG9uIHRoZSBEZWJpYW4gd2lraSAoaHR0cDovL3dpa2kuZGViaWFuLm9yZy9ScGF0aElzc3VlKS4KKworY29tbWl0IDg5MjVjOTEyZDI2Mzk3NTJhODRiY2ZmZWVmMWI3MGE4MTAyNjQ0OWIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBPY3QgNyAxNDoyMToyOCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBhZ2VudDogSE9TVC1SRVNPVVJDRVMtTUlCOiBBZGQgbWlzc2luZyBicmFjZSBpbiBhIGRlYnVnIHN0YXRlbWVudAorCitjb21taXQgNzZmZjI1ZDliZjk3NTc5ZTcyMTMxMDIwNjVmZDUwOTZmMDQ5YTRjNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIE9jdCA3IDE0OjEzOjE4IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBIT1NULVJFU09VUkNFUy1NSUI6OmhyU3RvcmFnZVRhYmxlOiBmaXggYnVnIGluIGhhbmRsaW5nIGxhcmdlIGZpbGVzeXN0ZW1zLCB3aGVyZSBsYXJnZSBtZWFucyBhYm92ZSA4IFRCICg9IDIqKjMxICogNDA5NiBieXRlcykuCisgICAgCisgICAgVGhpcyBwYXRjaCBmaXhlcyBhIGJ1ZyBpbnRyb2R1Y2VkIGluIGNvbW1pdAorICAgIDcxZDgyOTNmMzg3YTZjZDY2YmIwZGJiMTNjMGY1MDE3NGQyZTY3OGIuCisgICAgRm9yIHRoZSBvcmlnaW5hbCBidWcgcmVwb3J0LCBzZWUgYWxzbworICAgIGh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2Z1bmM9ZGV0YWlsJmF0aWQ9MTEyNjk0JmFpZD0zNDE5ODI1Jmdyb3VwX2lkPTEyNjk0LgorCitjb21taXQgODY2MDMzZGI5OTA0ZmZiMTIwM2YyODNmODM4MDkyZTRjZjY4ZGU2YgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVGh1IE9jdCA2IDA3OjMzOjI3IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBSZW1vdmUgc3B1cmlvdXMgI2VuZGlmIHRoYXQgc2VlbXMgdG8gYmUgdGhlIHJlc3VsdCBvZiBhIG1pc21lcmdlLgorCitjb21taXQgMjBmNGYzMjY3ZWUyMGQ1NTcwNWI3YTQzNzg5ODc5YzEwM2Y5NjYyMAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVGh1IE9jdCA2IDAwOjA4OjU5IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBBZGQgbWlzc2luZyBlbmQgY29tbWVudHMgdG8gZmVhdHVyZSBpZm5kZWZzLgorCitjb21taXQgZTVkZTJjYzU3YmYzMDRmMzMyMGNhZDAwMzRkMmVhMmQ4YWVkYzQzNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE9jdCA1IDA5OjE1OjEwIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGFnZW50OiBMb2cgYSBtb3JlIGRldGFpbGVkIGVycm9yIG1lc3NhZ2UgaWYgZW1iZWRkZWQgcGVybCBpbml0aWFsaXphdGlvbiBmYWlscworCitjb21taXQgNWVlZjk5OTBkZTI4ZjYzMTExZTZjMDkzYmUwZjNjN2FlMmQ1MTNhMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE9jdCA1IDA4OjQ1OjQ5IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHBlcmw6IEFkZCBhZ2VudDo6dXB0aW1lKCkKKworY29tbWl0IDY4MTBlZDQyZjliYzU2MDc1MGQ2ZGJmYjdlNTBiNmUyYWMxMTg5OWMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBTZXAgMzAgMTE6MDE6MjMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogQ3l3aW46IGFnZW50OiBJbXBsZW1lbnQgZ2V0X3VwdGltZSgpIHN1Y2ggdGhhdCBxdWVyeWluZyBIT1NULVJFU09VUkNFUy1NSUI6OmhyU3lzdGVtVXB0aW1lIHJldHVybnMgYSBub24temVybyB2YWx1ZS4KKworY29tbWl0IDk3MTcyYjMxMWQyMGY0NDQxYzdhN2U5MDA5MmI1OWMxZTBkYTk5ZjcKK0F1dGhvcjogVGhvbWFzIEphcm9zY2ggPHRqYXJvc2NoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE9jdCA1IDA4OjQ2OjM5IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IFBBVENIOiAzNDE4NjQ5OiBIT1NULVJFU09VUkNFUy1NSUI6IFVzZSBwY2xvc2UoKSBpbnN0ZWFkIG9mIGZjbG9zZSgpIHRvIGNsb3NlIGEgcGlwZS4KKworY29tbWl0IDY1OTE5MzdhZGI4NTAwMGMyNzA2OWM0YmU4NGNmNDY4ODgzOGViY2QKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBPY3QgMiAxNjoxODowMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogQWRkIGRlcGVuZGVuY2llcyBvbiBARkVBVFVSRVRBUkdTQCB0byBtYWtlIHRoZSBzdWJ0YXJnZXQgd29yayBhcyB3ZWxsLgorCitjb21taXQgYjljODAxMmVjMDM1YmMwODRmMTc1ODc2ZmVjYzM3NTE5NWY5YmU4MQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE9jdCAyIDE0OjAyOjU4IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBBZGQgdGFyZ2V0IHRvIGJ1aWxkIGFnZW50eHRyYXAgZnJvbSB0aGUgdG9wbGV2ZWwKKworY29tbWl0IDk5NTY0N2MwY2ZlMDA0MTIyNjJjYzU3OTdiZGZhZTlkMDBiNzBjNzYKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBPY3QgMiAxNTo0NDozNiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogUmVtb3ZlIHRoZSB1c2Ugb2YgLUwgZmxhZ3MgZm9yIGludGVybmFsIGxpYnJhcmllcyBhcyBpdCBjb25mdXNlcyBsaWJ0b29sLgorCitjb21taXQgOTNkYzEyMzVhMGRiNThmZmQyOTYxN2NmZjAwZGMxMTI2Mzc4MDIwMgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE9jdCAyIDExOjMxOjQ2IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBNYWtlIG1ha2UgYXBwcyB3b3JrIGFnYWluCisgICAgCisgICAgYXBwcyBpbmNsdWRlIHNubXB0cmFwZCBhbmQgdGhhdCByZXF1aXJlIHRoZSBhZ2VudCBsaWJyYXJpZXMgYXMgd2VsbC4KKworY29tbWl0IGJhNDE0ODhlZDQ0Y2QyM2MyNTk2M2Q0ZmM1NmM0NzY4NTNiMmFiNTkKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBPY3QgMiAxMToyOTozMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogV2hlbiB5b3Ugc2F5IG1ha2UgbGlicyB5b3UgZXhwZWN0IGFsbCB0aGUgbGlicyB0byBiZSBidWlsdC4KKyAgICAKKyAgICBUaGlzIGlzIGRlbW9uc3RyYXRlZCBieSB0aGUgc25tcHRyYXBkIHRhcmdldCBhdCB0aGUgdG9wIGxldmVsIHdoaWNoIG9idmlvdXNseQorICAgIGV4cGVjdGVkIGJvdGggbGlicyB0byBiZSBidWlsdCBhbmQgc28gZmFpbGVkIHRvIGNvbXBpbGUgYmVmb3JlIHRoaXMgcGF0Y2guCisKK2NvbW1pdCAzMDU3YzczZTA5MzQ3M2JlNDYyNTRiY2RmYjRjYTc4OGU0MzJkMWI4CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIFNlcCAzMCAwNzozMjo1MiAyMDA4ICswMDAwCisKKyAgICBORVdTOiBidWlsZGluZzogUEFUQ0g6IDIwOTExNTY6IGNvcnJlY3RseSBkZWNsYXJlIGRlcGVuZGVuY2llcyBpbiBNYWtlZmlsZS4KKyAgICAnbWFrZSAtaiA8Tj4nIHNob3VsZCB3b3JrIG5vdy4KKyAgICAKKyAgICBCYWNrcG9ydCB0aGlzIHRvIFY1LTQgYXMgaXQgaXMgbmVlZGVkIGZvciBjb3JyZWN0IG9wZXJhdGlvbiBpbiB0aGUgc2luZ2xlCisgICAgdGhyZWFkZWQgY2FzZSBvZiBtYWtlIG1pYmxpYiBhcyB3ZWxsLgorCitjb21taXQgNmVhZTM0MGZhMmE2NDA4NjU5Mjk4MmNjNTI3MzViYzAxNDg3ZDk3OAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IE9jdCAxIDE5OjMzOjUwIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBTaWxlbmNlIGxpYmJzZCAwLjMuMCBuYWdnaW5nCisgICAgCisgICAgSWYgeW91IGhhdmUgbGliYnNkIDAuMy4wIGluc3RhbGxlZCB0aGVuIHRoZWlyIHZlcnNpb24gb2Ygbmxpc3QuaCB3YXJucyBhbmQKKyAgICB0cmllcyB0byBtYWtlIHlvdSBpbmNsdWRlIGJzZC9ubGlzdC5oIGluc3RlYWQuIFRoZSBwcm9ibGVtIGlzIHRoYXQgd2UgZG9uJ3QKKyAgICBuZWVkIHRoYXQgY29tcGF0aWJpbGl0eSBsaWJyYXJ5IGFzIHdlIGtub3cgaG93IHRvIGRvIGl0IG91cnNlbGYgc28gaXQgYmVjb21lcworICAgIHB1cmUgbmFnZ2luZy4gVGhpcyBwYXRjaCBhZGRzIGEgZGVmaW5lIHRoYXQgY2hhbmdlcyB0aGUgd2FybmluZyBpbnRvIGFuCisgICAgZXJyb3IgYW5kIHRoZW4gZmlndXJlcyBvdXQgdGhhdCB0aGVyZSBpcyBubyB1c2FibGUgbmxpc3QuaCBhbmQgaWdub3JlcyBpdAorICAgIGZvciB0aGUgZnV0dXJlLgorCitjb21taXQgYWMzOGNiNTMxYmVlNTBlZGM4ZDRjODM0ZjMwMDVmNTk5MmM3NzFkOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IFNlcCAyOSAxOTowMzowMiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBwZXJsOiBFbmFibGUgc2VuZGluZyBTTk1QdjIgdHJhcHMgd2l0aCBhbiBlbXB0eSB2YXJiaW5kIGxpc3QKKworY29tbWl0IGE3NWRlMjk3MTUyN2FjMmQyZTgxMjAyNDI5ODYwMmJiMjQxMmYzMzcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBTZXAgMzAgMTA6NDE6NDQgMjAxMSArMDIwMAorCisgICAgcGVybC9TTk1QL1NOTVAueHM6IFVwZGF0ZSBlbWFjcyBtb2RlbGluZQorCitjb21taXQgODQ4ZjYzMDBlZmUzODQ5MmZiNDU0NDUxYTAzMGYwYjdlNmZmOGM5ZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIFNlcCAzMCAxMDo0MTo0NCAyMDExICswMjAwCisKKyAgICBwZXJsL1NOTVAvU05NUC54czogVXBkYXRlIGVtYWNzIG1vZGVsaW5lCisKK2NvbW1pdCBjMTM3NDQ3M2VjZDhlYzllMDMxMDAxMzg2MWVlMThjODNlNWQ2YzViCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBGcmkgU2VwIDMwIDAzOjI5OjM2IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IFByb3RlY3QgdGhlIHVzZSBvZiAkT1NUWVBFIHRvIGVuc3VyZSB0aGF0ICd0ZXN0JyBnZXQgZW5vdWdoIHBhcmFtZXRlcnMuCisKK2NvbW1pdCA3ZTk3YTIwNjMzYTU3ZWFlMzlkMDE1YjIzMzM5NDYzYzMyZjVmODQ4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgU2VwIDI5IDEwOjIyOjA4IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IENvbnZlcnQgc25tcGxpYi90ZXN0X2JpbmFyeV9hcnJheS5jIGludG8gdHdvIHVuaXQgdGVzdHMKKworY29tbWl0IDljMGRkOTgxNzY0NTczNDJmZmZhYTVlNzRkODAyZTMxNDVlZDcwZTcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBTZXAgMjkgMDg6NTY6MTcgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogQWRkIHVuaXQgdGVzdCBmb3IgbmV0c25tcF9yZWdpc3Rlcl9vbGRfYXBpKCkKKworY29tbWl0IDVmZDI2ZTRmYTNlMDAwZWE5YzgxYzM4YWI5NzViNzk0NmVmZTIxNTcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBTZXAgMjggMTc6NDk6NTUgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYWdlbnQ6IEF2b2lkIHRoYXQgbmV0c25tcF9yZWdpc3Rlcl9vbGRfYXBpKCkgZmFpbHVyZSB0cmlnZ2VycyBhIGRvdWJsZSBmcmVlLgorICAgIAorICAgIEZpeGVzIGEgcmVncmVzc2lvbiBpbnRyb2R1Y2VkIHZpYSBjb21taXQKKyAgICBhYTRkNDdjMjYwOWU1MjgxOGM5Y2RmMWE4ZTIyMDVkZTlhMzM1YTBhIChzdm4gcjE5NTE1KS4KKworY29tbWl0IGQyMjUyZDAxNjY5MzgwNzMyNmY3MmI2NjEyMzY0OWRlYTAwYWY5MTYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBTZXAgMjkgMTA6MjA6MDggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogUmVxdWlyZSBhIHNlbWljb2xvbiBhZnRlciBPSygpLCBPS0YoKSBhbmQgUExBTigpCisgICAgCisgICAgQWxzbywgbGV0IE9LRigpIGVtaXQgYSBzaW5nbGUgbGluZSBvZiBvdXRwdXQgc3VjaCB0aGF0IGFsbCBvdXRwdXQgaXQKKyAgICBwcm9kdWNlcyBpcyB2aXNpYmxlIGluIHRoZSBvdXRwdXQgb2YgIm1ha2UgdGVzdCIuCisKK2NvbW1pdCAxNDIxOTI0YjQ4NTIxNDIxOTJjNWJiOWU5M2RkYmZlZDY5ZTkwOGZhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgU2VwIDIxIDIyOjIwOjA4IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEF2b2lkIHdhaXRpbmcgaW5kZWZpbml0ZWx5IGlmIGEgc2Vzc2lvbiBoYXMgdGltZW91dCB6ZXJvCisKK2NvbW1pdCA1ZjI3ZjRmNzRhZTJiZDViYWY1MDNjZjMwNmI0ZjlhMjg0MWE1N2NmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDYgMTA6MzI6MDMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogTWluR1c6IHRlc3Rpbmc6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSB0ZXN0IHJ1bm5lcgorCitjb21taXQgMDk3MDM5NThjYzVlYTg0NTkyOWFlMTllZjllMDgwNGFlY2FhNTEyZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCAyNyAxMjo0Mjo0MSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBBdm9pZCBmYWxzZSBuZWdhdGl2ZSBmb3IgVDExNGFnZW50eGFnZW50eHRyYXBfc2ltcGxlIGNhdXNlZCBieSB0aGUgdGVzdCByZXN1bHQgYmVpbmcgcHJlc2VudCBpbiB0aGUgaGV4IGR1bXAgKCJtb3N0bHlfaGFybWxlc3MiKQorCitjb21taXQgNDM5MzAwMjc5ZjZmMzE0Mzg2MzhkMmYyMjJjMjRjM2M4NDFmYTZhYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCAyNyAxMToxNjozMiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogTWljcm8tb3B0aW1pemUgYWdlbnQgbW9kdWxlIGRlcGVuZGVuY3kgYW5hbHlzaXMKKyAgICAKKyAgICBUaGlzIG1ha2VzIHRoZSBhZ2VudCBtb2R1bGUgZGVwZW5kZW5jeSBhbmFseXNpcyBjYXJyaWVkIG91dCBieSB0aGUKKyAgICBjb25maWd1cmUgc2NyaXB0IHNsaWdodGx5IGZhc3RlciwgZXNwZWNpYWxseSBvbiB0aG9zZSBzeXN0ZW1zIHdoZXJlCisgICAgZm9yaygpIGlzIGV4cGVuc2l2ZSAoQ3lnd2luKS4KKworY29tbWl0IGJiYzY4MDAwNGExMzc2MDM4ZGZkYzQxNzJkYmU3YjllMzExZmJhNjgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBTZXAgMjYgMTA6MTQ6NDUgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogTWluR1c6IHRlc3Rpbmc6IE1ha2UgdGVzdCBUMTMwc25tcHYxdmFjbWdldF9zaW1wbGUgcGFzcworCitjb21taXQgNzBiMDZjZjc4OTIwOGVhYTg5MGJmYmNkNjM4YmRiNzc1ZjgxNzA1NAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCAyMCAwOTo1MDo1NyAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBXaW5kb3dzOiB0ZXN0aW5nOiBwZXJsOiBGaXggYW4gaW5jb3JyZWN0IG1lc3NhZ2UgcHJpbnRlZCB3aGlsZSBydW5uaW5nIHRoZSBQZXJsIG1vZHVsZSByZWdyZXNzaW9uIHRlc3RzCisKK2NvbW1pdCA3MGJjYzhkZTJkMGZjOTJiYmI4NDgxODIzNjMwZmFiOWJjODdhZjc1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgU2VwIDE2IDE2OjE0OjI0IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IE1pbkdXOiB0ZXN0aW5nOiBPYnRhaW4gdGhlIE1TWVMgcGF0aCBmcm9tIHRoZSBlbnZpcm9ubWVudAorCitjb21taXQgNjI2Mjc1ZTJkMWFjYWZhZTcxNDRhMzNlZDMwMWE0MGY1OTZiMzdiMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIFNlcCAxNCAxMzoxNDoxNyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBXaW5kb3dzOiBSZW1vdmUgc3VwZXJmbHVvdXMgbGluayBsaWJyYXJpZXMgZnJvbSBwcm9qZWN0IGZpbGVzICgqLmRzcCkKKworY29tbWl0IDM4ZmMzY2FhOWVlYjM4MDAyNTRiNGY2YWQ2ZjhmNDc2NGMwZjgzZGIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgMjAgMDk6MzQ6MDggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogTWFrZSBuZXRzbm1wX2NhbGxiYWNrX2FjY2VwdCgpIHJldHVybiAtMSAoZmFpbHVyZSkgaW5zdGVhZCBvZiAwIChTVERJTl9GSUxFTk8pCisKK2NvbW1pdCA2YzhjN2U4YWNhOGZjMmVlYjUyMDEwYWUzZTlmZWU2ZGQ4M2VmNzgwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDEzIDA5OjU4OjI2IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFJlbW92ZSBvYnNvbGV0ZSBzbm1wX2dldF9mZF9mb3Jfc2Vzc2lvbigpIGRlY2xhcmF0aW9uCisKK2NvbW1pdCAwODYwZDExZmQ4ZmM1ZGJkYWFhZTIyNjFmYWUyYzA3ZmI5YzJjODJkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgU2VwIDggMTM6NTQ6NTUgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogV2luZG93czogTVNWQzogQXZvaWQgdGhhdCB0aGUgdHlwZWRlZnMgaW4gPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPiBjb25mbGljdCB3aXRoIHRob3NlIGluIDxzdGRpbnQuaD4gZnJvbSB0aGUgbXNpbnR0eXBlcyBwcm9qZWN0CisKK2NvbW1pdCBmOGEwMzZmNjNmZjY4ZjA4MzQzNjEyMGUwYWJkNDc4YjY5MmEyZjYxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgU2VwIDggMTM6MjE6MDYgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogV2luZG93czogTVNWQzogV2hlbiBsaW5raW5nIHdpdGggT3BlblNTTCwgbGluayB3aXRoIHVzZXIzMi5saWIgdG9vCisKK2NvbW1pdCA4MzZhMjNlMTBjYTgxMGMzODk5OTAyZDMyNTg3NjE2YTlkMTIwM2RmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSnVsIDE0IDE4OjM4OjEzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IFdpbmRvd3M6IE1TVkM6IExpbmsgd2l0aCBwcm9wZXIgbGliZWF5MzIgbGlicmFyeQorCitjb21taXQgN2IwN2ZkNmNkZWY0OWVjN2JiMDRiMTY2ZTJhNGZiYjM3YjU4Mjg0MAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCA2IDExOjEwOjM4IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IFJlbW92ZSBhbiBpbmNvcnJlY3QgY29tbWVudCBmcm9tIHNpbXBsZV9ldmFsX3Rvb2xzLnNoCisKK2NvbW1pdCA5OGY2ZDI5ZDk4MWZmOGU2MDc2MDBjNjNkYWRiMjQwNTM1NjI5ODA3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDYgMTA6NDk6MDMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogTWFrZSBJU0RFRklORUQoKSBjaGVjayBmb3IgYW4gZXhhY3QgbWF0Y2ggaW5zdGVhZCBvZiBhIHByZWZpeCBtYXRjaAorCitjb21taXQgNTJjZDAwMzFhMzFmNjkyZjEzMjYzYTk0YzMzNWQwNmJlMTQ1NDgwMworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCA2IDEwOjEyOjU5IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IE1pbkdXOiB0ZXN0aW5nOiBNYWtlIHRob3NlIHJlZ3Jlc3Npb24gdGVzdHMgcGFzcyBmb3Igd2hpY2ggU05NUENPTkZQQVRIIGFuZC9vciBTTk1QX1BFUlNJU1RFTlRfRElSIG1hdHRlcgorCitjb21taXQgZjVjZDg5YmQzMzU2ZGQ3NGUxNTU2YzBiNTA5NjZhNjQzZjE5MjA4NQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCA2IDEwOjEyOjU5IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IE1pbkdXOiB0ZXN0aW5nOiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgdGVzdCBmcmFtZXdvcmsKKworY29tbWl0IGRlZWRkNTJjODM0YTY0NDg4NTJhMDY3ODU1MzZlMTM4NjU5Njk2OTQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgNiAxMDoxMjo1OCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBNaW5HVzogU3VwcG9ydCB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBvZiByZWNlbnQgU2hpbmluZyBMaWdodCBPcGVuU1NMIGJpbmFyeSBkaXN0cmlidXRpb25zCisKK2NvbW1pdCBkNTViZDRlMDU0OWYwM2I2ZmQzMjU2MmMyYWE3ZmUzOTI3MmE5ZWY3CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgU2VwIDI4IDA2OjU1OjE5IDIwMTEgLTA3MDAKKworICAgIHJlbW92ZSB0aGUgdjUuNyBmcm9tIHRoZSBmcm96ZW4gbGlzdAorCitjb21taXQgYWMyYWVkM2M5NGJiMmViYjQ3M2FmMGExZTIwZjA1NjFhZDYyOTk1NgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIFNlcCAyOCAwNjo1NToxMSAyMDExIC0wNzAwCisKKyAgICByZW1vdmUgdGhlIHY1LjcgZnJvbSB0aGUgZnJvemVuIGxpc3QKKworY29tbWl0IDQ2ZWFjMDJlOWEyN2JmNGYzMDY4ZTc5NWNhYjg5MWYwNWE4NDg4NzAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBTZXAgMjYgMjE6NDk6MjcgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEF2b2lkIHRoYXQgc25tcGQgY3Jhc2hlcyBpZiBzdGFydGVkIG9uIGEgc3lzdGVtIHdpdGggYW5vdGhlciBPcGVuU1NMIGxpYnJhcnkgdmVyc2lvbiB0aGFuIHRoZSBvbmUgaXQgaGFzIGJlZW4gYnVpbHQgd2l0aC4KKwkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ2hhbmdlczogVjUuNy4xIC0+IFY1LjcuMi5wcmUyCisKK2NvbW1pdCA4MTAxODVhZTBiMGNkMmFkNGQ0MjRhMWJhNzc1ZWY1Y2VhZjUwZjAzCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgSnVuIDIgMDk6MjQ6MTkgMjAxMiAtMDcwMAorCisgICAgbWFrZSBkZXBlbmQgZm9yIDUuNy4yLnByZTEKKworY29tbWl0IDYyNzE0NzFlMDEyODJmMzY3NTcyNGVhZjEzNThjZWIwZTk1ZGRkNGUKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBKdW4gMiAwODozMjo0MCAyMDEyIC0wNzAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNy4yLnByZTEKKworY29tbWl0IGZjYjc4MmFhODg5MzEzNGM3NDE0YTkyNmQ5MjY4NTk0ZjcyNWI5MTUKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBKdW4gMiAwODozMjoxOCAyMDEyIC0wNzAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS43LjIucHJlMQorCitjb21taXQgZTNiY2Q4N2M3MmZjZWE3NzA2ZTg2OGI1YWNlNzUyOTYwOTNmNzQ5NworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTQ6MDk6NDIgMjAxMiArMDEwMAorCisgICAgRml4IGRpc3QvcmVsZWFzZSBmb3JtYXQKKworY29tbWl0IGQ4MTNjZTJlZWVmYzY4MjI5Y2ZjYWYyMDYwMzI0NGNkZDZkMDlkM2MKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDE0OjA3OjUyIDIwMTIgKzAxMDAKKworICAgIEZpeCBkaXN0L3JlbGVhc2UgZm9ybWF0CisKK2NvbW1pdCBmYTdiZDU4MWUzNzgzNjg1ZGIzOWM5YjRlYWY4NDdiZTVhYzg2ZmQzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMzo1MzoxMCAyMDEyICswMTAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS42LjIucmMyCisKK2NvbW1pdCAwNzM5ZTIzODJkMzExNDZhY2EzMjA1MjQ0Y2Y3MDc4OGI0MGE0MjhkCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMzo1MTo0NSAyMDEyICswMTAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS42LjIucmMyCisKK2NvbW1pdCBkOWExNTQ0NWFhNzRmNTMxNmJmYzcxMWMxNTU4NDY3ODcyYzI5NThjCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMzo1MDoxMiAyMDEyICswMTAwCisKKyAgICBtYWtlIGRlcGVuZCBmb3IgNS42LjIucmMyCisKK2NvbW1pdCBiY2FiZDJjOTU0MmRiZWJkMWQzMTliNDQ5NDQxM2JkY2NhMDY2MTRlCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMzozODozOCAyMDEyICswMTAwCisKKyAgICBSZWxlYXNlIENhbmRpZGF0ZSBmb3IgVjUtNi1wYXRjaGVzCisKK2NvbW1pdCBiNDczODk4YzBjNWFjOWViNDdjN2MwNWEzZjc0NWU0ZmYyYTc2YWFhCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMzozODoyOCAyMDEyICswMTAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNi4yLnJjMgorCitjb21taXQgMTMxNDI5ZTcwNjJmYmFhNjViODJhZmZlZDFmYjkyZGYyYzBjYzgxMworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTM6Mzg6MzggMjAxMiArMDEwMAorCisgICAgUmVsZWFzZSBDYW5kaWRhdGUgZm9yIFY1LTYtcGF0Y2hlcworCitjb21taXQgMWM4MTEwYjMzYjgxMDVjYTYxOTA5NDVhMzVmZTdhZTkwMzI1MmQ2OAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTM6MjE6MzggMjAxMiArMDEwMAorCisgICAgQXZvaWQgcGVybCB2ZXJzaW9uaW5nIHByb2JsZW1zIHdoZW4gc2V0dGluZyB1cCB0aGUgYnVpbGQgZW52aXJvbm1lbnQKKworY29tbWl0IDUwOGVjZTE2ZTZmNmY0OTU2MmRhMjA0NzkyYWUwNjQ0MjY5OTk0ZDEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEzOjIwOjU4IDIwMTIgKzAxMDAKKworICAgIEZpeCBoYW5kbGluZyBvZiBkaXN0L3JlbGVhc2UgbWVyZ2UKKworY29tbWl0IDViOGE4NTQ3YjFhNDdkMmY1YjIwN2Y0OGYyNDk2ZTQyNDFkOTAyYzYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDExOjEwOjQ4IDIwMTIgKzAxMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjUuMi5yYzIKKworY29tbWl0IDZjMzI5MTRiZjI4ZDY5NWRmMzQ5ZGNhMjY5ZTQ4OGI1MDE3MDAzMTYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDExOjA3OjIyIDIwMTIgKzAxMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjUuMi5yYzIKKworY29tbWl0IDlmNWE4MmE1YWZkYmIzZGFlYjJmZDQzN2EzMDlmMGI4ZDM1N2NmNGIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDExOjA1OjM5IDIwMTIgKzAxMDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjUuMi5yYzIKKworY29tbWl0IDM5MjAzZjI5NDc3YTNiZWRmMDEyZDQxMTM1ZDhhYmQ2YmNhZDA4YjEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEwOjU0OjI3IDIwMTIgKzAxMDAKKworICAgIGRvY3VtZW50YXRpb24gdXBkYXRlIGZvciA1LjUuMi5yYzIKKworY29tbWl0IDE3ZTc5ZWYwZmFkNzk2MDljNWJhMmZlYjRlOGI5ZWI1ZDdkYjY4ODYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEwOjQ2OjExIDIwMTIgKzAxMDAKKworICAgIFJlbGVhc2UgQ2FuZGlkYXRlIGZvciBWNS01LXBhdGNoZXMKKworY29tbWl0IDU4MjFiZTViYmI0MDE4ZGVkMjgyZmJiYmQ0ODMwY2YyZWVhZGQ5ZTEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEwOjQ1OjU5IDIwMTIgKzAxMDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS41LjIucmMyCisKK2NvbW1pdCAzZjIxMTFkZTY3MzNhMDRlMTJkOTEwZDMwNmEzNGQ2NzFlMDA4NzYyCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMDo0NjoxMSAyMDEyICswMTAwCisKKyAgICBSZWxlYXNlIENhbmRpZGF0ZSBmb3IgVjUtNS1wYXRjaGVzCisKK2NvbW1pdCBjY2Y4ZmYyYzRkYjYwMTIyZDQxMzAyZTRhZWI3MDBlMGI4NjgxMDVmCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1heSAyOCAxMDoxODo0MyAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSEVTOiAzNTI2NTk5OiBEb24ndCBoYW5nIG9uIHJldHJpZWQgZmFpbGluZyBTTk1QdjMgcmVzcG9uc2VzCisKK2NvbW1pdCBjODFjODQ4Mzk5MDkxMWY0NzQzNWQzMDA1MjU1ZDkxYzM3YWI5MmIyCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gTWF5IDI3IDE0OjA5OjI2IDIwMTIgKzAyMDAKKworICAgIEZpeCBCU0QgdGhhdCBkb3dubm90IGFsd2F5cyBsaWtlIElQX1NFTkRTUkNBRERSIC0gc28gcmV0cnkgd2l0aG91dAorCitjb21taXQgZmZjZTFmMmRjMmY4YjMxYWJkMDFmOTNiMjZkYTc4ZjQ3MjZhMWU2NAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE1heSAyNyAxNDowMzo1OCAyMDEyICswMjAwCisKKyAgICBGaXggT1MgbWlzc2luZyBNU0dfRE9OVFdBSVQgKEFJWCkuIEJhY2twb3J0IGZyb20gNS43CisKK2NvbW1pdCBjNTc1MjE2ODUwMTg1YjU2NDU0ZGFkMDI1M2UzMTY0OTc5ZTEzNTEzCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gTWF5IDI3IDEzOjU2OjAxIDIwMTIgKzAyMDAKKworICAgIEZpeCBtaXNzaW5nIGluY2x1ZGUuIEZpeGVzIFNJR1NFR1Ygb24gRnJlZUJTRDkgeDY0CisKK2NvbW1pdCA1ODA1ODc4NzQ5YzA4MDYyZGViZjBhOWQ3OThkMDhmYjkxNmNhYTJkCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gTWF5IDI3IDA2OjIzOjE5IDIwMTIgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBBZGQgbWlzc2luZyBkZWJ1ZyB0YWcKKworY29tbWl0IGQxYTQyYmJjYzdiMTQ3MzBjOWE2ZDk5YzRmMDQ3MDk3ODQzYTU0OWIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIEZyaSBNYXkgMjUgMDk6MDI6MjcgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IFJ1biBsaWJ0b29sIC0tbW9kZT1maW5pc2ggb24gdGhlIHJpZ2h0IGRpcmVjdG9yeQorCitjb21taXQgMWZiZjMzNzExYTE5ZWFjOTczOWFkMjNmNmY2MjUxZWFjYzQxZjFjNAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBNYXkgMjIgMTQ6NTQ6NDUgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogTGludXg6IFBBVENIOiAzNTI1OTk4OiBEb24ndCB1c2UgYW4gdW5pbml0aWFsaXNlZCB2YWx1ZSBpbiBlcnJvciBtZXNzYWdlCisKK2NvbW1pdCAzMmMxNjg2YjY3ZGM4NWM0YTE4OTU3NjM2MzA2NTYwOWRmZWQ1ZTYxCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIE1heSAyMiAxNDo1Mjo1NiAyMDEyICswMTAwCisKKyAgICBBdHRlbXB0IHRvIG1hcmsgcmVsZWFzZS1jYW5kaWRhdGUgYnJhbmNoZXMgYXMgc3VjaC4KKyAgICBPbWl0IGZpbmFsLXJlbGVhc2Utb25seSBzdGVwcyB3aGVuIHByZXBhcmluZyBwcmVOL3JjTiByZWxlYXNlcworICAgIChSZWxpZXMgb24gYSB0d2VhayB0byB0aGUgTWFrZXJlbGVhc2UgcGVybCBtb2R1bGVzKQorCitjb21taXQgNGM1NjMzZjE2MDNlNGJkMDNlZDA1YzM3ZDc4MmVjODkxMTc1OWM0NworQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUBmcmVlc25tcC5jb20+CitEYXRlOiAgIE1vbiBNYXkgMTQgMTE6NDA6MDYgMjAxMiAtMDQwMAorCisgICAgTkVXUzogc25tcDogQlVHOiAzNTI2NTQ5OiBDVkUtMjAxMi0yMTQxIEFycmF5IGluZGV4IGVycm9yIGxlYWRpbmcgdG8gY3Jhc2gKKworY29tbWl0IDY1ZGQ4M2MyMjU1ZWU1OGVkYmYwZTI1ODYzZTU1YjU4YTQxMTM2NzkKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMjA6MzA6NDIgMjAxMiArMDEwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNi4yLnJjMQorCitjb21taXQgYWM0YmM2NWUyOTA5ZjNiZDg1ZjMyZjA0YjUwNGZhNjVkMmY2NDU1MworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAyMDoyODowNiAyMDEyICswMTAwCisKKyAgICBtYWtlIGRlcGVuZCBmb3IgNS42LjIucmMxCisKK2NvbW1pdCBiNzQ5OTQ4NjQxOTUxMTllZGI2ZTE5Yzg1MTQ3ZmFjMDBiY2I5M2UzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1heSA3IDIwOjEzOjQ2IDIwMTIgKzAxMDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS42LjIucmMxCisKK2NvbW1pdCA5MTM1MDA5MmM0NmU2NmQwNmQ3NDE0M2Y0ODE2NDczZGI0ZDI1MTYwCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1heSA3IDE5OjU2OjMzIDIwMTIgKzAxMDAKKworICAgIE1hcmsgdmVyc2lvbi1zcGVjaWZpYyBjaGFuZ2VzIF9iZWZvcmVfIHB1c2hpbmcgdG8gY2VudHJhbCByZXBvc2l0b3J5CisKK2NvbW1pdCA3MjQxYWNjZDcwYjgyZDBmY2Q0NGQ1YTUyMzhiMmVlOTQ0NTkwMGRiCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1heSA3IDE3OjUzOjE3IDIwMTIgKzAxMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjUuMi5yYzEKKworY29tbWl0IDdjNzk2YTE1YTFkMWJiODVmZWVhOTQwYmQ0ZTM1MTY4Nzc5MjA5MTkKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMTc6NTA6NDkgMjAxMiArMDEwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNS4yLnJjMQorCitjb21taXQgMDdlMjY4YmZiNjRiMGVjNjQ1YjNmN2U4NzI2Njk4NGY5MjE3Y2YxMgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAxNzo0NDozNyAyMDEyICswMTAwCisKKyAgICBtYWtlIGRlcGVuZCBmb3IgNS41LjIucmMxCisKK2NvbW1pdCAxNmVhYWY2YzNiYTE0NTk2Y2E5ZWZhZjRiMTE0ZjFiNzA5ZjQyYjY4CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1heSA3IDE3OjI5OjAzIDIwMTIgKzAxMDAKKworICAgIGRvY3VtZW50YXRpb24gdXBkYXRlIGZvciA1LjUuMi5yYzEKKworY29tbWl0IGM3Mjk0NjllZjEyMTU0OTMwY2Y5ZDE1OTY3ZTE2MTg2ZmI0NDVmMzAKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMTc6Mjc6MjAgMjAxMiArMDEwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjUuMi5yYzEKKworY29tbWl0IDE0MjU3MWQzY2VhMDhmMGMwNzJkMjRjMWQzOWE0M2M3NDQ2ZjhjZTcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMTc6MDE6MDMgMjAxMiArMDEwMAorCisgICAgV2hlbiBidWlsZGluZyBhIG5ldyByZWxlYXNlLCB0aGUgaW5zdGFsbGVkIHZlcnNpb24gb2YgdGhlIHBlcmwKKyAgICBtb2R1bGVzIG1heSB3ZWxsIGJlIGRpZmZlcmVudCB0byB0aGUgdmVyc2lvbiBiZWluZyBidWlsdC4KKyAgICBUaGF0IHNob3VsZCBub3QgYnJlYWsgdGhlIGJ1aWxkLgorCitjb21taXQgZWJhODZiNmY3YWZmMjYxZWUwZTYxMzM0ZGY3MGRlNzE1NmU1YzNjYgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAxNzowMTowMyAyMDEyICswMTAwCisKKyAgICBXaGVuIGJ1aWxkaW5nIGEgbmV3IHJlbGVhc2UsIHRoZSBpbnN0YWxsZWQgdmVyc2lvbiBvZiB0aGUgcGVybAorICAgIG1vZHVsZXMgbWF5IHdlbGwgYmUgZGlmZmVyZW50IHRvIHRoZSB2ZXJzaW9uIGJlaW5nIGJ1aWx0LgorICAgIFRoYXQgc2hvdWxkIG5vdCBicmVhayB0aGUgYnVpbGQuCisKK2NvbW1pdCA1YzBmNjRkNmRiMmI1OTNmN2NjMGVkMmQ0ZjU1YjdjNTkyYjc3NGE4CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXByIDIzIDIyOjI1OjE1IDIwMTIgKzAyMDAKKworICAgIE9ubHkgb3V0cHV0IGNwdSB3YXJuaW5ncyBvbmNlLgorCitjb21taXQgZWU1OGU0ODI3YjlmYTE2ZTY2MzVjYTAwM2U4YTRmMTFkY2I1ZmI3YQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEFwciAyMyAyMjoxNzo0MiAyMDEyICswMjAwCisKKyAgICBGaXggc3BlbGluZyBpbiBlcnJvcm1lc3NhZ2UuCisKK2NvbW1pdCAwM2Y0ODVkZjIyZjIwZTE0OWNmYWU5NGM1N2NiODJmZWVjYjVkNzRiCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXByIDIzIDIyOjEyOjExIDIwMTIgKzAyMDAKKworICAgIE5vdCBhbGwgTGludXhlcyB1c2UgcnBtIChkZWJpYW4vdWJ1bnR1IGNvbWVzIHRvIG1pbmQpCisKK2NvbW1pdCA5MzA4MzgyMjRmNzgxNjk2YmQzNTIyNWYyMjU2OTM0NzQxNmYxYjE2CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXByIDIzIDIyOjEwOjE1IDIwMTIgKzAyMDAKKworICAgIENoZWNrIG5lZWQgZm9yIC1sbSB0byB1c2Ugcm91bmQvZXhwCisKK2NvbW1pdCBhMDYwOWNmMWYzYTY5MTdkMjYzNzI1NzMyMjQ4Y2Q5MzdhNDVhZDk0CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgQXByIDcgMDg6NDA6NDQgMjAxMiArMDIwMAorCisgICAgUmVtb3ZlIGxpbWl0YXRpb24gb24gY29uZmlndXJhdGlvbiBsaW5lIGxlbmd0aC4KKworY29tbWl0IDMwNTk3MzMzOGE2M2FlNTRjNWUwMmE4NjI2ZmJlOWE4MDY0ZGNiN2UKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBBcHIgNyAwMDozMjoxOSAyMDEyICswMjAwCisKKyAgICBSZWR1Y2UgdmFyaWFibGUgc2NvcGVzLgorCitjb21taXQgY2NhYjRlOWQzZWQ0MjRjMzlkMGRjMjdiZTYzZmE3NmM3NDYxZWE4MQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IEFwciA3IDAwOjE1OjIyIDIwMTIgKzAyMDAKKworICAgIEludGVybmFsaXplIHRoZSBuYW1lIGFuZCBsaW5lIG51bWJlciBvZiB0aGUgY3VycmV0IGNvbmZpZ3VyYXRpb24gZmlsZQorCitjb21taXQgY2Y4NzRhZDdiOWRhZjRmY2MwZDQ2Y2RkMDM0NDc0YjQ3ODAwNTM0MQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgRnJpIEFwciA2IDIxOjQ3OjI4IDIwMTIgKzAyMDAKKworICAgIFJlcGxhY2UgI2lmIChBKSBCICNlbHNlIEIgI2VuZGlmIHdpdGggQi4KKworY29tbWl0IGVmOWVhNjQxYmMyOTBlZWM1MDY4NWI2MDUxOWIzMWJlZThiMTRhNjkKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDkgMjE6MDQ6MDYgMjAxMiArMDEwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNi4yLnByZTIKKworY29tbWl0IDM1YWJhMTk1OWRlMTE5ZjFmYjg5MjAzYzM3MTA5YWE2ZjBlMjFjNTcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDkgMjE6MDA6NDAgMjAxMiArMDEwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNi4yLnByZTIKKworY29tbWl0IGU0MWZiYWZmMThhYzkwOTVjZjRhNzM5YTA2ZWMzOWExYTZjY2ZkYzEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDkgMjA6MzU6MzUgMjAxMiArMDEwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjYuMi5wcmUyCisKK2NvbW1pdCAxMzdmZTU4MmQ2Y2M1NjExNDMwZGFiNDZlZjE0NGVmZDg0Y2ZjODAzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgRnJpIEFwciA2IDIwOjQ2OjU2IDIwMTIgKzAxMDAKKworICAgIFJldmVydCBjb21taXQgMWY0YTgyOWIxODI3NWU0OTU2Y2E5MWU1ZWMzNzBkZjAxNWYwNjEzMworICAgIChzbm1wX3N0b3JlX25lZWRlZCgpIEFQSSBpcyBub3QgYXZhaWxhYmxlIGluIDUuWzQ1XS54KQorCitjb21taXQgMmI3ZTY0Mjg4YzAxYThhMDYyMDI2YzUyMWNhMzFhNWU4ODVmMzBjYworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgMiAxNjoxMjoxMiAyMDEyICswMTAwCisKKyAgICBGcmVlQlNELTk6IEZpeCBmb3IgJ2NvbnN0J2lmeWVkIG5saXN0IGFyZ3VtZW50cworICAgIEJhY2twb3J0IG9mIGVkNjVlY2E2ZTdmOWNmYTczODBhNzhkNTZjMDFlZDMxNDc0NWIxNjkgZnJvbSBWNS02LXBhdGNoZXMKKworY29tbWl0IDdlOTVkODBiNjk4MDUxMjU5NjQ1YzA3NGE1M2ZmZDI2NGE2ZmE5MTYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDIgMTY6MDY6NTYgMjAxMiArMDEwMAorCisgICAgRnJlZUJTRC05OiBGaXggZm9yICdjb25zdCdpZnllZCBubGlzdCBhcmd1bWVudHMKKyAgICBCYWNrcG9ydCBvZiBlZDY1ZWNhNmU3ZjljZmE3MzgwYTc4ZDU2YzAxZWQzMTQ3NDViMTY5IGZyb20gVjUtNi1wYXRjaGVzCisKK2NvbW1pdCAxYTliN2I3YzAyZTJkZWVmZTk5NGQ1OTVhN2NjMWRkMmZmYmVlZTFkCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciAyIDE1OjUxOjIwIDIwMTIgKzAxMDAKKworICAgIEZpeCBjb21waWxhdGlvbiBvbiBGcmVlQlNEIDkueCB3aXRoICdyZWNlbnQnIGhlYWRlciBzaHVmZmxpbmcKKyAgICBCYWNrcG9ydCBvZiBjNTNkOGMzNTI1ZjU5MGYyMjEzZDM1YjBkYTk0MTIzODYyZjNlMzY2IGZyb20gVjUtNS1wYXRjaGVzCisgICAgKFBhdGNoICMzMzYzMzA4IC0gb21pdHRpbmcgdHdlYWtzIHRvIGNvbmZpZ3VyZSkKKworY29tbWl0IDNkOWRkYjQxZTI2M2JjMWE3OGY5Zjk0NDBiOGQ0YWQ0Zjg2YzgyZTEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDIgMTA6MzY6MTggMjAxMiArMDEwMAorCisgICAgRml4IHR5cG8KKyAgICBCYWNrcG9ydCBvZiA1YjcwMmIwMjRiNjAxNzZkN2Y1Njk5YjkyZTU1ZGE1MGE4ZGVhZTcxIGZyb20gVjUtNi1wYXRjaGVzCisKK2NvbW1pdCAwZDM1YzYwOTU2NGI2NmExZmZlODE1NTZkMzdhZGYwNTAzYzM4OWNlCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciAyIDEwOjE1OjA4IDIwMTIgKzAxMDAKKworICAgIFByb3ZpZGUgbWlzc2luZyBkZWZpbml0aW9uIG9mIE5FVFNOTVBfUFJJbworICAgICh1c2VkIGluIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3Nfc29sYXJpczIuYykKKworY29tbWl0IGE3OTE0MWE0MTk5NTNkMDEwYTY5ODllOGI4OGY0ZGYxMjczOTRkMzgKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDIgMDk6MTk6MjYgMjAxMiArMDEwMAorCisgICAgSGVhZGVyIGZpZGRsaW5nIGZvciBGcmVlQlNELE9wZW5CU0QsRHJhZ29uZmx5CisgICAgQmFja3BvcnQgb2YgZjdiMGRlMTUxODAwMmM2ZThmOWI5NGVmM2RlYjg4ODJlMWU5MzM4ZSBmcm9tIFY1LTctcGF0Y2hlcworCitjb21taXQgYWRmNzRiZjc1M2QzOTcwMzU3YWZkNjMzODAzMjU2MjQxZDljN2I4NworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgMiAwODoyMDo0NiAyMDEyICswMTAwCisKKyAgICBGaXggSVB2NiBUQ1AgJiBVRFAgdGFibGVzLCAqQlNEIHN1cHBvcnQgKGluY2x1ZGluZyBPcGVuQlNEKQorICAgIEJhY2twb3J0IG9mIGNvbW1pdHMgNWNkMTU3MzYyNTQ3MWMwNTgzZTkwODdhZWM2ODAyYjc3MTU3ZDVhMgorICAgICAgYW5kIDUwZDczZjBkNTZmZTIyYzU5MDUzMGIzZTMwNWQ0MWRjZGFjM2NlMDAgZnJvbSBWNS02LXBhdGNoZXMKKworY29tbWl0IGQ5NTU1YWNiOWY0N2MzYWE4ZmRlNGJjMjBhNDRkN2NhNjE4MWE4YTkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBNYXIgMjUgMTg6NDg6MTIgMjAxMiArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogQXZvaWQgZGFuZ2xpbmcgcG9pbnRlcnMgKGJhc2VkIG9uIHBhdGNoIDM1MDMyNTkpCisKK2NvbW1pdCA4MmE4YjQ3ZWU5NmU1ZDI5YTJiN2FjM2NhMDA3MjJkNzM3ZDViNDc5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWFyIDI5IDIyOjMxOjU2IDIwMTIgKzAyMDAKKworICAgIFJ1bm5pbmcgYXV0b2hlYWRlciAvIGF1dG9jb25mCisKK2NvbW1pdCA5Y2E4ZDkzOWFiMzkzMzA2YTFkMGYxNDZjOWNiNzBlYTBjYjE5ZDQ5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWFyIDI5IDIyOjMwOjM4IDIwMTIgKzAyMDAKKworICAgIFJ1bm5pbmcgYXV0b2hlYWRlciAvIGF1dG9jb25mCisKK2NvbW1pdCBjZWNkNDg2OWRlYjY4ZjNkNGM3MWU3NjhkNWI0MGRkNTc2NDQ2OTI1CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWFyIDI5IDIyOjI5OjMxIDIwMTIgKzAyMDAKKworICAgIFJ1bm5pbmcgYXV0b2hlYWRlciAvIGF1dG9jb25mCisKK2NvbW1pdCBhMWE0NTEzYmQzZTRlNjE0MjAwZjZkYjVhMDJmNjFkNmM4ZWVmYjMyCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgV2VkIE1hciAyOCAwOTo0Nzo0NSAyMDEyICswMTAwCisKKyAgICBEb3h5Z2VuLXN0eWxlIGRvY3VtZW50YXRpb24gZml4ZXMgKGJhY2twb3J0IG9mIGdpdCBjb21taXQgYzA5OTAzYTQyZTlkOTczMzFmZDllNDhlZTgzMWE4NWFmZGY5YzcwYSkKKworY29tbWl0IDliZGJjY2ExMjJjMzdkYTMwNGZjNmFhNjkzOTcyOTQ3NWY5MGY1ZmQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBXZWQgTWFyIDI4IDA5OjMwOjQ5IDIwMTIgKzAxMDAKKworICAgIERveHlnZW4tc3R5bGUgZG9jdW1lbnRhdGlvbiBmaXhlcyAoYmFjay1wb3J0IG9mIEdJVCBjb21taXQgYzA5OTAzYTQyZTlkOTczMzFmZDllNDhlZTgzMWE4NWFmZGY5YzcwYSkKKworY29tbWl0IDFmNGE4MjliMTgyNzVlNDk1NmNhOTFlNWVjMzcwZGYwMTVmMDYxMzMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgTWFyIDI3IDIxOjQxOjI0IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAzNDk1Njk3OiBTdG9yZSBwZXJzaXN0ZW50IHNubXBUYXJnZXQgdGFibGUgY2hhbmdlcworCitjb21taXQgMWY3NWYzNzdkMGRiMDE3NTRjMGMxNjFkYzQ0MzczMDgxYmVlZjUyMAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBNYXIgMjcgMjE6MTQ6MDYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogRnJlZUJTRDogUEFUQ0hFUzogMzQ4OTM4NzogSW5zdGFsbCBGcmVlQlNEIDEwIGhlYWRlciBmaWxlIChwbHVzIG90aGVyIG1pc3NpbmcgdmVyc2lvbnMpCisKK2NvbW1pdCAzZDcyYzllNzhmMmFkODE3YzlkMWQ4Mjk3NzMyN2JiYjIwZDYzYWI5CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIE1hciAyNyAyMTowNjozMSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDM0ODc4Njc6IERvbid0IHNraXAgbWlzc2luZyBpZlhUYWJsZSBlbnRyaWVzIChpZkNvbm5lY3RvclByZXNlbnQgRkFMU0UpCisKK2NvbW1pdCAxMjkwNjU3OGFiMzBjZjc3NmQwODBjMGVmMzAyNWIzMDMzNGQ3NjU1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDI2IDE2OjE3OjQ1IDIwMTIgKzAyMDAKKworICAgIERJU01BTi1QSU5HLU1JQjogRml4IGV2ZW4gbW9yZSBtZW1vcnkgbGVha3MKKworY29tbWl0IGNjZmQ1Y2E2ZmUxMDMxM2Q2MTgxZDI0YmJiMTc5NzgyNWE5N2RhMTAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBNYXIgMjYgMTU6NTE6MTYgMjAxMiArMDIwMAorCisgICAgRElTTUFOLVBJTkctTUlCOiBFbGltaW5hdGUgZHVwbGljYXRlIGNvZGUKKworY29tbWl0IDlmZGEyNjY4NzIyZjA4ZGRiZmRkNjdhMjIzOWQ4YjAyMWRiNjRhODMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBNYXIgMjYgMTU6NDg6NDYgMjAxMiArMDIwMAorCisgICAgRElTTUFOLVBJTkctTUlCOiBXcml0ZSBhIGxvb3AgYXMgYSBsb29wCisKK2NvbW1pdCBjYmMxOGViNzYzYmE2ZGY2OWVmNzA2NjhhNTRkNzViZjM1ZTc5NTAzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDI2IDE1OjI0OjA4IDIwMTIgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IEZpeCBtb3JlIG1lbW9yeSBsZWFrcworCitjb21taXQgYzc3MjUxOTI0NzhhZWMwMThmYjRhZWZhNjA5NDZlMDRhNDA2YzAwYworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE1hciAyNiAxMzo0MzoyNCAyMDEyICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBBdm9pZCByZWFkaW5nIGZyZWVkIG1lbW9yeSB3aGVuIGRlbGV0aW5nIGEgcm93IGZyb20gYSB0YWJsZQorCitjb21taXQgYTZiZTczOTU2NmYzMTBkNzQ0MWZkN2Y1NDk4OWUzOTQ0NmY3YTE0MworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE1hciAyNiAxMzo0MjoyOCAyMDEyICswMjAwCisKKyAgICBFeHRlbmQgRElTTUFOLVBJTkctTUlCIHRlc3QKKworY29tbWl0IDhhOWI1NzI5MTQ1M2NiOGFlYzI4ZTc2NmM1OTQ3MDFlZDE5YzRmYzYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBNYXIgMjYgMjE6MDM6NDEgMjAxMiArMDIwMAorCisgICAgRml4IGZvciBEcmFnb25GbHkgMworCitjb21taXQgZTVjOWEzMmY3OWVhYzJlODU1MjdjOWNmMDUwODdjZGFlOWIzNWE2YworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE1hciAyNiAyMDo1OTo1MyAyMDEyICswMjAwCisKKyAgICBEcmFnb25GbHkgbmVlZHMgX0tFUk5FTF9TVFJVQ1RVUkVTIHRvIGNvbXBpbGUgaXB2NiBjb2RlCisKK2NvbW1pdCBjZDQzYmMwOWEzOWJkOTdmZjVlNzE5YTJjZTIzMmNlNDI0NjAwYTY1CitBdXRob3I6IERhdmlkIEltaG9mZiA8ZGltaG9mZkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBNYXIgMjQgMTU6NDc6MTcgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0ggMzUxMDQ1NDogQWxsb3cgdGhlIHVzZSBvZiAwLjAuMC4wLzAgYXMgYWxpYXMgZm9yIGRlZmF1bHQKKworY29tbWl0IGUyZmMxNWY5ZTVhNmUzZTM2YmU1ZjQ4OTYwMWNiZjZiZjczMTkxN2YKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBNYXIgMjQgMTU6MjE6MzggMjAxMiArMDEwMAorCisgICAgRml4IFRDUCBzdGF0ZSB2YWx1ZXMgZm9yIERyYWdvbkZseQorCitjb21taXQgNDMyZmUzZGRmNTRmMmM5OGY5MzY5NTk0NjljYjliMDE0ZDU5OWYwNgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1hciAyNCAxNToxMDo1MiAyMDEyICswMTAwCisKKyAgICBSZXF1aXJlIHBlcmwgdG8gZG8gcGFzc19wZXJzaXN0IHRlc3QKKworY29tbWl0IDM3ZDI3NzBjZjUwYzk4MDIzZWViYTkwZTI1ZDM3MmJmZjczMTZhZGEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2VyLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1hciAyNCAxNTowNjo0MCAyMDEyICswMTAwCisKKyAgICBGaXggVENQIHN0YXRlIHZhbHVlcyBmb3IgRHJhZ29uRmx5CisKK2NvbW1pdCA4NmE5NDhkODY5MWU4ODFkNTU1OTFkY2FiZGRjMjczOWNlNzJiMzBlCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAbmJhLWxpbnV4LnNiLnN0YXRzYmlibGlvdGVrZXQuZGs+CitEYXRlOiAgIFNhdCBNYXIgMjQgMTU6MDE6MzcgMjAxMiArMDEwMAorCisgICAgUHJvcGVybHkgZmluZCBwYXNzIGhlbHBlcnMgZm9yIHRlc3RpbmcuCisKK2NvbW1pdCBmZTI2YTNjNGYyOWYwNDZiZjY1ZWQ1MmU5ZDk0MDU0YjY3NWZiYzRiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgTWFyIDIyIDA5OjA0OjQyIDIwMTIgKzAxMDAKKworICAgIERJU01BTi1QSU5HLU1JQjogTGltaXQgc291cmNlIGNvZGUgbGluZXMgdG8gODAgY29sdW1ucworCitjb21taXQgNzQ1YmFmY2RjYzljOGU4NDYxNmQ0ZTI3NGRiMmEzODRiZjIzNGRhMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IE1hciAyMiAwODo1NTowNSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBNYWtlIHBpbmcgaW1wbGVtZW50YXRpb24gaW5kZXBlbmRlbnQgb2YgbnRwZCBjbG9jayBqdW1wcworCitjb21taXQgZGE2OTI1ZTY3NjNjYWRiZTAyZjRhOGJiZmU2OGEzNjJlNTM1YWQ1ZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE1hciAyMCAxMDozODozNiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBBZGQgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTU0ZGlzbWFucGluZ21pYl9zaW1wbGUKKworY29tbWl0IGZhNjA2ZGQ3Y2E2YWZmOTMwOGQ0ZThiMDFiYmNkZTE0OGY0NDEyNzEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBNYXIgMjAgMTY6NDk6MjEgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogTWFrZSBwaW5naW5nIGxvY2FsIGludGVyZmFjZSBhZGRyZXNzZXMgd29yaworCitjb21taXQgNjE3YTgzYmE3OTk1NzVjODRjNjZmNmIxYzQ4MGVmNjMzMTYxYTY0YworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE1hciAyMCAxNjoyODo0NiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBGaXggYSBzb2NrZXQgbGVhayB0cmlnZ2VyZWQgYnkgcGluZ2luZyBhIHJlbW90ZSBob3N0CisKK2NvbW1pdCA2MjVmNTVjMjcyZWM2MjgxZTM4ZDhlMzBlYjUzZmQ1MTUxNmIwMGFlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgTWFyIDIyIDA5OjU0OjU1IDIwMTIgKzAxMDAKKworICAgIERJU01BTi1QSU5HLU1JQjogQ29udmVydCBhIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCB2YXJpYWJsZSBpbnRvIGEgc3RhY2sgdmFyaWFibGUKKworY29tbWl0IGI0OGYxOWFkNGI0YWE2OGMzZTE2ZTJhNzJkZjM3YjljMGNkMzZjNGEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBNYXIgMjAgMTY6MjQ6MDcgMjAxMiArMDEwMAorCisgICAgRElTTUFOLVBJTkctTUlCOiBBZGQgbW9yZSBkZWJ1Z2dpbmcgc3RhdGVtZW50cworCitjb21taXQgZDc0Y2IzOTY2MTc1ODkyNTYyZjVlM2E5YjE2ODNhY2JhMmMyMmUwNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE1hciAyMCAxMTo0NToxOCAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBGaXggc2V2ZXJhbCBtZW1vcnkgbGVha3MKKworY29tbWl0IDBiMWE3NzY3NDY3OGNjOWExNWJlM2U3NzAwZDNjZWY2NTBlZDAyYzcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBNYXIgMjAgMTI6MDA6MzAgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogRG8gbm90IHNlbmQgdGhlIGNvbnRlbnRzIG9mIHRoZSBzdGFjayBvdmVyIHRoZSBuZXR3b3JrCisKK2NvbW1pdCAxMzkwMjNjZDNhYjUxNjMxY2MxMGUyODY2ZDcxYWJjZjk5YWU0YzFiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTWFyIDIxIDA4OjU2OjA3IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IERvbid0IGNhbGwgZXhpdCgpIHVwb24gbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZQorCitjb21taXQgMTY5YjZhYWE3YjYxODI3Y2MxYWQwYjNhZWVhZTNhNzIyOWRkMjVkOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE1hciAyMSAwODo1MzoyNiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBGaXggSVB2NiBzb2NrZXQgbGVhayBpbiBlcnJvciBwYXRocworCitjb21taXQgYTBiZTMyYWQwNTNhNzFmYTk2MTM0ZDU1ZTU0MmJiMDdkNGYwMjk3ZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE1hciAyMCAxMTo0Mzo0NiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBBdm9pZCB0aGF0IGhvc3QgbmFtZSByZXNvbHV0aW9uIGZhaWx1cmUgY2F1c2VzIGEgY3Jhc2gKKworY29tbWl0IGJmOWJmZjY0NTU2Nzg3ZDc2NmVlMmVmMmQ1NzhhZmI5MjA3MTlmM2EKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBNYXIgMjEgMDg6NTE6NTUgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogQ29udmVydCBwcmludGYoKSBzdGF0ZW1lbnRzIGludG8gc25tcF9sb2coKSBhbmQgREVCVUdNU0coKS1zdGF0ZW1lbnRzLgorCitjb21taXQgNWQ3NGMwMTI0NTUyM2E5ZDhkYjFlZGEyN2QxZWZhZTJlYmMxMDRmYgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE1hciAyMSAxODo0MDowMiAyMDEyICswMTAwCisKKyAgICBOZXcgTUlCOiBWUlJQVjMtTUlCCisKK2NvbW1pdCA1YjM4ZjA2MmI5OWI2ZWYzNjcwOGUyYzdkZTQ5NjVhMzE5MjYxMmU5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTWFyIDIxIDE4OjM0OjQ4IDIwMTIgKzAxMDAKKworICAgIEZvciBzYWZldHksIHNpemVvZiB0aGUgcmlnaHQgdmFyaWFibGUgaW4gbWVtY3B5CisKK2NvbW1pdCBlNWY4Mjc4MmRhMDVlZmE3YzBlNmRjMmJmNWE0MWVlMTE4NjhmNDY5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTWFyIDIxIDE4OjMzOjIxIDIwMTIgKzAxMDAKKworICAgIEZpeCBmb3IgaHJTV1J1biBkYXRhIGZvciBGcmVlQlNECisKK2NvbW1pdCA4MzI3NTY1ZTgyMzI3MGQxMGE0NTA0NTY4ZWRiZTViNWFlMzIzYTU1CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTWFyIDIxIDE4OjMxOjU0IDIwMTIgKzAxMDAKKworICAgIENsZWFuIHVwIHZhcmlhYmxlcyBmb3IgT3BlbkJTRC9OZXRCU0QKKworY29tbWl0IDE3MGY2ZjAyN2JmNGY5MTc0YjcwNzM1MzBkYTRkMDdmNDAwYmJhNTgKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBNYXIgMjEgMTg6Mjg6NTggMjAxMiArMDEwMAorCisgICAgTW92ZSBkZWNsYXJhdGlvbnMgaW4gZnJvbnQgb2Ygc3RhdGVtZW50cworCitjb21taXQgZGJiNDU3M2I2OWZhZTg1Y2RjOTMxYjI4OTJiNWNlNGU1YjE2YjMyMQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE1hciAyMSAxODoyMzozNiAyMDEyICswMTAwCisKKyAgICBSZXF1aXJlIGtlcm5lbF9uZXRic2QgZm9yIE5ldEJTRDYKKworY29tbWl0IGYxMTY4MWYxNWFhZDdkOWE1MmZhMjk4MTJlY2JiNTA3ZjFiN2ZlMjQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBXZWQgTWFyIDIxIDEyOjM2OjM4IDIwMTIgKzAwMDAKKworICAgIENoZWNrIGZvciBvbGQgdGFyYmFsbHMgKGFuZCB1bnBhY2tlZCBkaXN0cmlidXRpb25zKSBiZWZvcmUgc3RhcnRpbmcuCisgICAgVGhlc2UgY2FuIGNvbmZ1c2Ugc3RlcHMgc3VjaCBhcyAibWFrZSBkZXBlbmRjaGVjayIsIHRoYXQgZG8gYSAnZmluZCcKKyAgICBvbiB0aGUgY3VycmVudCB0cmVlLCBhbmQgd291bGQgZGVzY2VuZCBpbnRvIHN1Y2ggdW5wYWNrZWQgc291cmNlIHRyZWVzLgorCitjb21taXQgNDcwZGNkNGI2YzNmZjExZmYwYTM1MzJhNzM0MGE1NmNmZmQ2OTA5OAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFdlZCBNYXIgMjEgMTI6MzI6MTMgMjAxMiArMDAwMAorCisgICAgRG9uJ3QgcnVuICJtYWtlIGRvY3M7IG1ha2UgbWFuY3AiIGlmIHRoZXJlJ3Mgbm8gTWFrZWZpbGUgcHJlc2VudAorCitjb21taXQgYzlhYzQyMDM0M2UxNmRmMmI3MDY1ZjViZjI3OTBkZjQ0ZTI0N2ZiYQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBNYXIgMjAgMTA6MjY6MTAgMjAxMiArMDAwMAorCisgICAgQWxsb3cgZGlzdHJpYnV0aW9uIGFzIHBhcnQgb2Ygbm9ybWFsIE5ldC1TTk1QIHBhY2thZ2VzLgorCitjb21taXQgNTk5OWY2MGM1NzcyM2YyM2YzYzI1NGFmNTdmZGIxMGFmMzAxYThlYgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE1hciAxOCAxOTowMzowOCAyMDEyICswMTAwCisKKyAgICBSZWdlbmVyYXRlCisKK2NvbW1pdCAyNzVkMjA0MDM2YTYwN2UzZGY1MGU4NDQ3ZDRiYzc1NWU5ZGIwMmZkCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gQXVnIDI4IDIxOjI5OjAzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBNYWtlIGl0IHBvc3NpYmxlIHRvIHVzZSAtLWRpc2FibGUtYXBwbGljYXRpb25zLy0tZGlzYWJsZS1hZ2VudCB0b2dldGhlciB3aXRoIC0tZW5hYmxlLW1pbmltYWxpc3QKKworY29tbWl0IGJkY2NjODc1NzEwMjk1YWFjZjUwZjcxZWIxYzFkMmVlOTdmMzM2ZmUKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIEZyaSBNYXIgMTYgMjA6MTA6NTggMjAxMiArMDEwMAorCisgICAgRG8gbm90IGRlY2xhcmUgdGhlIGxvY2FsIHZhcmlhYmxlcyBmb3Igb3BhcXVlX3NwZWNpYWxfdHlwZXMgdW5sZXNzIHRoYXQgb3B0aW9uIGlzIHNldC4KKworY29tbWl0IGI4MGE2N2RhMDUyYWRjYTFiNWE2NDRkYjgzYTc4MmUxNWMyMjM3YzMKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIEZyaSBNYXIgMTYgMTk6NTA6MDMgMjAxMiArMDEwMAorCisgICAgQ2hlY2sgdGhhdCB0aGUgZGF0YSBleGlzdCBiZWZvcmUgdHJ5aW5nIHRvIHJlYWQgaXQKKworY29tbWl0IGVmYWU4NmJiYTU5NjI0OTFkNDJiNzdiOTM1MTkxYTNlYjI1ZGQ5MzkKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFdlZCBNYXIgMTQgMDE6MDU6MzMgMjAxMiArMDEwMAorCisgICAgUGFydGlhbGx5IHJldmVydCAiTWVyZ2UgcmVtb3RlIGJyYW5jaCAnb3JpZ2luL1Y1LTctcGF0Y2hlcycgaW50byBWNS03LXBhdGNoZXMiCisgICAgCisgICAgQ29tbWl0IGQzNWExODYwMjE3ZTcyM2U0Zjg2NmRkOThlZjY2MjE2NjU5MzRjNGEgYWNjaWRlbnRhbGx5IHJldmVydGVkCisgICAgCisgICAgNGEyZTViY2Q1NmNkMmFmYjM2ZWIxNWQ3NTRlMmZlZTg4OGRkNTBjMCAoaHJoX3N0b3JhZ2UgaXMgYSBwcm9wZXIgcmVwbGFjZW1lbnQgZm9yIGhyX3N0b3JhZ2UpCisgICAgMGRkMWU1NDU1N2QxYmE0OThiNTVkMDE3YjBhOTNlOGNjZjliZDUyMiAoQ0hBTkdFUzogc25tcGQ6IFVEUC1NSUI6IFJlcG9ydCB0aGUgcHJvcGVyIGFkZHJlc3MgaW4gdWRwTG9jYWxBZGRyZXNzKQorICAgIDUxMTZkNDgzNzhlY2YwM2U3MjJmMzAxMGFkNDdiZjIyYTNmYmNiOGMgKFJlZHVjZSBzY29wZSBvZiBwcmVmaXhfdmFsIHN1Y2ggdGhhdCB0aGUgY29tcGlsZXIgZG9lc24ndCB3YXJuIGFib3V0IGFuIHVuc2VkIHZhcmlhYmxlKQorICAgIDEwZjU2NmY0ZDRjYmIzZTIwNTAyM2MyMzY2OTI4OWU0YmZkMDg5Y2IgKHBlcmwvU05NUC9TTk1QLnhzOiBGaXggYSBjb21waWxlciB3YXJuaW5nKQorICAgIAorICAgIGFuZCBwYXJ0IG9mCisgICAgCisgICAgNmU3NGQ2NGY4NWE1OWQ1MGU0NjFkYjRjMzRhYzc2ZjlkZTQ2OGJmYiAoQXZvaWQgdXNpbmcgZ3JlcCBvcHRpb25zIC1xIGFuZCAtdyBiZWNhdXNlIGdyZXAgaW4gU29sYXJpcykKKyAgICAKKyAgICBUaGlzIHJldmVydHMgdGhvc2UgcmV2ZXJ0cy4KKworY29tbWl0IGFhZWRkNTljYzJkYTcwMTUyN2RjMmQyNjFkNGU5Zjg1ZjE2ZTc1MDQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBNYXIgMTEgMjA6NTc6MzggMjAxMiArMDEwMAorCisgICAgQWxsb3cgbWFrZSB0ZXN0IHdoZXJlIHRoZSBzb3VyY2UgcGF0aCBjb250YWlucyB0aGUgc3RyaW5nIE5ldC1TTk1QIHRvIHN1Y2NlZWQuCisKK2NvbW1pdCA0Yjk0ZDc5NjkxOGE0ZWVhZTY4YWIyMWFhNTNkNDQ0YThiNWMyOTIxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgTWFyIDkgMDg6MDQ6NTkgMjAxMiArMDEwMAorCisgICAgVW5icmVhayBjb21waWxhdGlvbiBvbiBGcmVlQlNEIDQKKworY29tbWl0IDEwZmU2YjgzMzI0YWQzN2QxOGI5MzdjYzhjNmRlOTRkZTUzNGQwMzUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWFyIDggMTM6MDQ6MDcgMjAxMiArMDAwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNi4yLnByZTEKKworY29tbWl0IGUxMTIyZWRjMWE1ZmU3OTc2YjA2NTA0NDEzNGQzOWU3ZGI1OTg1ZWEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWFyIDggMTI6NDM6MTkgMjAxMiArMDAwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNi4yLnByZTEKKworY29tbWl0IGE2MTNkM2E4MzQ5MTIyMDZkMWJhNTk3MWU0NDFhM2VhNmIzNmFmMjMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWFyIDggMTI6MzM6MDMgMjAxMiArMDAwMAorCisgICAgbWFrZSBkZXBlbmQgZm9yIDUuNi4yLnByZTEKKworY29tbWl0IDBlZjM0ZTY1MTlkZmNiODJjOTdkZjg0Mjc1NDdjMDhkY2Y4MWU2OWEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWFyIDggMTA6MTE6MzAgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEZpeGVkIHNubXBkICctZCcgb3B0aW9uLgorICAgIAorICAgIE5vdyBpdCBkdW1wcyBwYWNrZXRzIGFnYWluLgorCitjb21taXQgOGU2OTc0MmYxNDNlNGZjMTExOTZlNWIyZWQ2NmM4ZjdmNTNmZDAyZgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBNYXIgNiAwOToyNDoyMSAyMDEyICswMDAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNi4yLnByZTEKKworY29tbWl0IGM0ZTAwYjhjM2UxMDEwY2RjYWI1ZTZjMDJkNjBkNzVkZjljNmRjZjIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgTWFyIDYgMDk6MjQ6MDUgMjAxMiArMDAwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNi4yLnByZTEKKworY29tbWl0IDM5NDkwMTA0YTNhYjU4MjM1YWFjZTJmOWQ4NzFjMjY2ZGM0NDg1ZWUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWFyIDUgMDk6MDY6NTIgMjAxMiArMDAwMAorCisgICAgTWFyayB0aGUgY2hhbmdlcyBtYWtlIGFzIHBhcnQgb2YgdGhlIHJlbGVhc2UgcHJvY2VzcyBhcyBzcGVjaWZpYyB0bworICAgIHRoZSBwYXJ0aWN1bGFyIGJyYW5jaCBiZWluZyByZWxlYXNlZC4gIFZlcnNpb24gdGFncywgY2hhbmdlbG9nIGVudHJpZXMKKyAgICBhbmQgdGhlIGxpa2Ugc2hvdWxkbid0IHByb3BhZ2F0ZSB0byBsYXRlciBicmFuY2hlcy4KKworY29tbWl0IDRhMmU1YmNkNTZjZDJhZmIzNmViMTVkNzU0ZTJmZWU4ODhkZDUwYzAKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBNYXIgNSAyMDo1OTozOCAyMDEyICswMTAwCisKKyAgICBocmhfc3RvcmFnZSBpcyBhIHByb3BlciByZXBsYWNlbWVudCBmb3IgaHJfc3RvcmFnZQorCitjb21taXQgY2U4NTgzMjkzMmNjZDkxNmM0MjMxOTExNGM0MDg4NWE0NjZhOWQwZQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE1hciA1IDIwOjU2OjQwIDIwMTIgKzAxMDAKKworICAgIE1vcmUgZml4ZXMgZm9yIFNvbGFyaXMgc2gKKworY29tbWl0IDBkZDFlNTQ1NTdkMWJhNDk4YjU1ZDAxN2IwYTkzZThjY2Y5YmQ1MjIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBNYXIgNSAxNTowODoyNiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogVURQLU1JQjogUmVwb3J0IHRoZSBwcm9wZXIgYWRkcmVzcyBpbiB1ZHBMb2NhbEFkZHJlc3MgaW5zdGVhZCBvZiAwLjAuMC4wLiBNYWtlcyB0ZXN0IFQxNjBzbm1wbmV0c3RhdCBwYXNzIGFnYWluLiBGaXhlcyBhIGJ1ZyBpbnRyb2R1Y2VkIGluIGNvbW1pdCBjNzZmYjk2ZjY1ZTMzYmEyZmQyMTJhOTIxZThjMzg2MTU1ZWU1YzdhLgorCitjb21taXQgNTE4OTE3ZTlmMzlmN2E5ZDNjM2JmM2E4NjVlOGFjMGUzMDI2ZDYwMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE1hciA1IDE0OjA0OjU0IDIwMTIgKzAxMDAKKworICAgIHNubXBsaWIvc25tcFVEUERvbWFpbi5jOiBGaXggc291cmNlIGNvZGUgaW5kZW50YXRpb24KKworY29tbWl0IDI2NTE5MDljY2NlYWJmY2ZhZGFmOTQyYzAyNDUwZTI4ZmU4MzdkYzkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBOb3YgOSAxMjowNDowNCAyMDEwICswMDAwCisKKyAgICBQYXNzZXMgbm93IG9uIE1pbkdXIHRvby4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTY1MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGU0MWYxMTVlNDAzMDRjOTQxYmExN2Q2N2UyNDcxMDcyMmQ5MDc0MWIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBNYXIgNSAxMzozOToxNyAyMDEyICswMTAwCisKKyAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBBdm9pZCB1c2luZyBncmVwIG9wdGlvbnMgLXcgYW5kIC1xIGJlY2F1c2UgZ3JlcCBpbiBTb2xhcmlzJyBkZWZhdWx0IHBhdGggZG9lc24ndCB1bmRlcnN0YW5kIHRoZXNlLgorCitjb21taXQgNTExNmQ0ODM3OGVjZjAzZTcyMmYzMDEwYWQ0N2JmMjJhM2ZiY2I4YworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE1hciA1IDEwOjQ3OjIwIDIwMTIgKzAxMDAKKworICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYzogUmVkdWNlIHNjb3BlIG9mIHByZWZpeF92YWwgc3VjaCB0aGF0IHRoZSBjb21waWxlciBkb2Vzbid0IHdhcm4gYWJvdXQgYW4gdW5zZWQgdmFyaWFibGUgaWYgaXQgaXNuJ3QgbmVlZGVkLgorCitjb21taXQgNmU3NGQ2NGY4NWE1OWQ1MGU0NjFkYjRjMzRhYzc2ZjlkZTQ2OGJmYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE1hciA1IDA5OjIyOjMxIDIwMTIgKzAxMDAKKworICAgIHRlc3RpbmcvZXZhbF90b29scy5zaDogQXZvaWQgdXNpbmcgZ3JlcCBvcHRpb25zIC1xIGFuZCAtdyBiZWNhdXNlIGdyZXAgaW4gU29sYXJpcycgZGVmYXVsdCBwYXRoIGRvZXNuJ3QgdW5kZXJzdGFuZCB0aGVzZSBvcHRpb25zLgorCitjb21taXQgMTBmNTY2ZjRkNGNiYjNlMjA1MDIzYzIzNjY5Mjg5ZTRiZmQwODljYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE1hciA1IDEwOjQ3OjM5IDIwMTIgKzAxMDAKKworICAgIHBlcmwvU05NUC9TTk1QLnhzOiBGaXggYSBjb21waWxlciB3YXJuaW5nCisKK2NvbW1pdCA0NGFhMjY1ODkxY2Q1NjNmN2Y0MTE0ZWYyNWRjZjdhYWYzYjE0ZTlhCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1hciA1IDA5OjA2OjUyIDIwMTIgKzAwMDAKKworICAgIE1hcmsgdGhlIGNoYW5nZXMgbWFrZSBhcyBwYXJ0IG9mIHRoZSByZWxlYXNlIHByb2Nlc3MgYXMgc3BlY2lmaWMgdG8KKyAgICB0aGUgcGFydGljdWxhciBicmFuY2ggYmVpbmcgcmVsZWFzZWQuICBWZXJzaW9uIHRhZ3MsIGNoYW5nZWxvZyBlbnRyaWVzCisgICAgYW5kIHRoZSBsaWtlIHNob3VsZG4ndCBwcm9wYWdhdGUgdG8gbGF0ZXIgYnJhbmNoZXMuCisKK2NvbW1pdCBkYWU0ZTE2YmU4NjExNzg2MWY2M2QxYTJmOTgxYWQzNjE0MThmNWM2CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1hciA1IDA5OjA2OjUyIDIwMTIgKzAwMDAKKworICAgIE1hcmsgdGhlIGNoYW5nZXMgbWFrZSBhcyBwYXJ0IG9mIHRoZSByZWxlYXNlIHByb2Nlc3MgYXMgc3BlY2lmaWMgdG8KKyAgICB0aGUgcGFydGljdWxhciBicmFuY2ggYmVpbmcgcmVsZWFzZWQuICBWZXJzaW9uIHRhZ3MsIGNoYW5nZWxvZyBlbnRyaWVzCisgICAgYW5kIHRoZSBsaWtlIHNob3VsZG4ndCBwcm9wYWdhdGUgdG8gbGF0ZXIgYnJhbmNoZXMuCisKK2NvbW1pdCAyOGY2MjI2ZjJlMjI4YjhjYTI0ODQ4OTczNWY4NjUwMmIyY2NlMGExCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1hciA1IDA5OjA2OjUyIDIwMTIgKzAwMDAKKworICAgIE1hcmsgdGhlIGNoYW5nZXMgbWFrZSBhcyBwYXJ0IG9mIHRoZSByZWxlYXNlIHByb2Nlc3MgYXMgc3BlY2lmaWMgdG8KKyAgICB0aGUgcGFydGljdWxhciBicmFuY2ggYmVpbmcgcmVsZWFzZWQuICBWZXJzaW9uIHRhZ3MsIGNoYW5nZWxvZyBlbnRyaWVzCisgICAgYW5kIHRoZSBsaWtlIHNob3VsZG4ndCBwcm9wYWdhdGUgdG8gbGF0ZXIgYnJhbmNoZXMuCisKK2NvbW1pdCA0MDAyMmE2OTc5NTgyNTljY2ZiYjNmZWQ0NGViM2M0NzJmNWU4MzdlCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gTWFyIDQgMTA6Mzc6NDEgMjAxMiArMDEwMAorCisgICAgU29sYXJpcyBzaCBkb2VzIG5vdCB1bmRlcnN0YW5kICJ0ZXN0IC1lIgorCitjb21taXQgNzczYWYwYzQyZTA3N2JlYmRhZWNmMWMwY2FmMzkzMjg1YTc2ODhmMQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1hciAzIDE3OjE5OjMwIDIwMTIgKzAxMDAKKworICAgIENsZWFuIHVwIG5zcm9sbHVwIGNvbXBsaWNhdGlvbnMKKworY29tbWl0IGVlNzEwNDljM2UyMWMxZDBlMzQyNDI5NzEzNjY1MmJiZTBlMzlkODUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBNYXIgMyAxNjo0OTo0MSAyMDEyICswMTAwCisKKyAgICBtaWJncm91cC9pY21wLmM6IGFkanVzdCBpZmRlZnMgdG8gbWFrZSBpdCBjb21waWxlIG9uIEJTRCdzCisKK2NvbW1pdCBjZTk2MDAzNjFlNjY1ZGRlMTdhZjlkOGFiMTZkN2NlODVkYzA1NjQzCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWFyIDIgMjE6Mzk6NTUgMjAxMiArMDEwMAorCisgICAgZG90M1N0YXRzVGFibGUgaGFzIGJ1Z3MgOi0oCisKK2NvbW1pdCBkZmZhY2Y2ZmEwNzU1ZTE3MDBjYmFjMjViODQ0MTg1YWJkODA3YTBhCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWFyIDIgMjE6Mzg6MTAgMjAxMiArMDEwMAorCisgICAgcGFzc3BlcnNpc3QgdGVzdCBuZWVkcyAvdXNyL2Jpbi9wZXJsCisKK2NvbW1pdCA4NzI2OTk1YzdhOGFlZjY3NGM0ZjE2NGIxODcxYzM3YmJkY2RhZDUwCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWFyIDIgMjE6MzY6NTggMjAxMiArMDEwMAorCisgICAgZ3JlcCAtdyBmYWlscyB3aXRoIE9wZW5CU0QgYW5kIFNvbGFyaXMgMTAtNjQKKworY29tbWl0IDFlYjQ3NDViMjNjYzNhODM5ODY0ZTdmNmVhMjgzNTViMDU2NmViNjcKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXIgMiAyMTozNTo0OSAyMDEyICswMTAwCisKKyAgICBTb2xhcmlzIG5lZWRzIC91c3IveHBnNC9iaW4vZ3JlcCB0byB1bmRlcnN0YW5kIC1xCisKK2NvbW1pdCA5OTU0YjRiNzQxZmQ4YzYzZDYxMjhiZDA1MjcyOThjOGU0ZTk4OWZjCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWFyIDIgMjE6MzQ6NDUgMjAxMiArMDEwMAorCisgICAgTWFrZSBzdXJlIHdlIGhhdmUgdGhlIHByb3BlciBzcmNkaXIgZm9yIG91dC1vZi1zb3VyY2UgYnVpbGRzCisKK2NvbW1pdCA3ODM2OTAwMmJlMjcxMWYwYWE4NzZiNjRhNGUxMGIwOTBjYzI0MWNkCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWFyIDIgMjE6MzM6MzEgMjAxMiArMDEwMAorCisgICAgTm90IGFsbCBtYWtlIHZlcnNpb25zIGRlZmluZSAkKFJNKQorCitjb21taXQgOTQyNDViMjlhM2NkYTg5NDc1YzZlYWI1ZDk0OTNjNjY1N2ZmMzhlMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1hciAyIDIxOjI0OjI0IDIwMTIgKzAxMDAKKworICAgIE1ha2UgYXV0b2NvbmYgMi42OCBoYXBweQorCitjb21taXQgNDRhY2Q2YzI4NWZiNTYxNGI0Yzk2MTFiMWFiZGVjYTlkZDI4ZTRiYgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1hciAyIDIxOjEyOjQ3IDIwMTIgKzAxMDAKKworICAgIEZpeCBzcGVsbGluZyBvZiBtaWIgbW9kdWxlIGZzeXNfZ2V0ZnNzdGF0cworCitjb21taXQgMWZhMWZlZTM2OTNmNjdiODIwMjIzODA2YjNkNzNhZmQ0YzUwZWMxOAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgRnJpIE1hciAyIDAxOjM3OjIwIDIwMTIgKzAxMDAKKworICAgIFNpbGVuY2UgYSBjbGFuZyB3YXJuaW5nLgorCitjb21taXQgOTMyNjNiOThhNWRiMzQ0Y2YyYzRkNDg5YzQzOTcxZTdiMjljZGIwMworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXIgMSAxMzozNzoyMCAyMDEyICswMDAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS41LjIucHJlMQorCitjb21taXQgNWExNzU0MjhiOTczZDJlYTg1NTNlMjlmZWNmOTRjZjE1NjZhYTg1OAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXIgMSAxMTo0ODoxOCAyMDEyICswMDAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS41LjIucHJlMQorCitjb21taXQgMzY0Mjc2YTFjNWFhNjZjYWEyM2ViNWI3ZjExMWZkZWI1YWY3MWZhNworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXIgMSAxMTo0NToxMCAyMDEyICswMDAwCisKKyAgICBtYWtlIGRlcGVuZCBmb3IgNS41LjIucHJlMQorCitjb21taXQgNzM1OTgzNDAxNzJlZmY3NTcyOWE2ZDU3MTkyYjgxNzFkNWJiZjAwZQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXIgMSAxMDo0Mjo1NiAyMDEyICswMDAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNS4yLnByZTEKKworY29tbWl0IGYzMjE0NDAyNjcyY2ExOTlmZDUzMWU2NjEyMmJmOTZjNGQ5YTRlYjcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWFyIDEgMTA6NDI6MzkgMjAxMiArMDAwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNS4yLnByZTEKKworY29tbWl0IDJlNzRhY2I2ZjE5ZTQ3MjljZWRlMGFiNDNlOTMxOTYxY2IyM2FhZWEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFRodSBNYXIgMSAwOToxODozOSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBCdWcgMzE1Mjg0MTogRG8gbm90IGluc3RhbGwgdGhlIHV0aWxfZnVuY3Mgc3ViaGVhZGVycyB0aGF0IHdlcmUgcmVtb3ZlZCBpbiA1LjcKKworY29tbWl0IGI3MTA5NjQ2Yjk1YTcwNzEzZDFhZDk5MWQ0MWJjY2Q1N2MwYmIzZWIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFRodSBNYXIgMSAwODo0ODo0OCAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBCdWcgMzE1Mjg0MTogSW5zdGFsbCB1dGlsX2Z1bmNzIHN1YmhlYWRlcnMgaW50cm9kdWNlZCBpbiA1LjYKKworY29tbWl0IDQzMmNiYjdhNTUwMWFiOTBkNjZkMGE4M2U3MzFlNzM0M2JjMDRiMzcKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBGZWIgMjUgMTA6MTM6MTUgMjAxMiArMDEwMAorCisgICAgQ29ycmVjdCB0eXBvcworCitjb21taXQgNmE2YzliYmM3NTg0ZjE5NmExMTg1Y2MxOTM1MjA0ZjEyMDY4MTFlZAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgV2VkIEZlYiAyOSAwODo1NTozNSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBCdWcgMzE1Mjg0MTogSW5zdGFsbCB1dGlsX2Z1bmNzIHN1YmhlYWRlcnMKKworY29tbWl0IGQ1MTVlMmE2ZTRjMmExYzRkODQ3MzRjYzdiMmQwYjJmYzVhODk0YWQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRmViIDI4IDE1OjU2OjIxIDIwMTIgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAzNDg3OTE5OiBGaXggY29tcGlsYXRpb24gd2hlbiBjYWNoaW5nIGlzIGRpc2FibGVkCisKK2NvbW1pdCBhZjgzNjhlZDg4OThhNzhkMDg2OGI0N2FmNDZiYzlkYjA3ZDFjNzY0CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEZlYiAyOCAxNTo1MDo1NiAyMDEyICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSEVTOiAzNDE0NzczOiBFbmNvZGUgaW50ZWdlciB2YWx1ZSB1c2luZyBBU05fSU5URUdFUgorCitjb21taXQgMTllMjcxNTgwN2ZlMDZmZDBiYWVkZjg4MTY1MDExYWVlOTMzZTc1NQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBGZWIgMjggMTQ6MDU6MzQgMjAxMiArMDAwMAorCisgICAgQ0hBTkdFUzogbWFuOiBCVUdTOiAzNDkwNzA4OiBDbGFyaWZ5IHVzZSBvZiBjb21tb24gY29tbWFuZC1saW5lIG9wdGlvbnMKKworY29tbWl0IDY1Zjc5NjJmOTMyYzliNzVjNWJiYmIwNDdkMWUyNmFlNjA5NzhlNTMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRmViIDI4IDEyOjIzOjM0IDIwMTIgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBCVUdTOiAzNDg5NjMxOiBGaXggaW5jb3JyZWN0IGhhbmRsaW5nIG9mIFVDRCBtb25pdG9yaW5nIGZsYWcKKworY29tbWl0IGFjMTY2MDUxYjZhMDkyZGQ0YTU5NDMyNmVjODVlMmY2OTliNjI1NDcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRmViIDI4IDExOjU3OjQxIDIwMTIgKzAwMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IEJVR1M6IDM0NzQ1OTA6IERvbid0IG1hdGNoIHVuZGVyc2NvcmVzIHdpdGhpbiB0aGUgc291cmNlIHJvb3QgZmlsZW5hbWUKKworY29tbWl0IDg3OWJmNzA3OWQzNGZhNDZmNmZjZjU0YTAxYzg1MDBiZWFlY2U1OWEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRmViIDI4IDEwOjQ0OjQxIDIwMTIgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBCVUdTOiAzNDYwMzY0OiBGaXggdXNlIG9mIGJsb2NrIGZhY3RvciB3aGVuIGRldGVjdGluZyBlcnJvciBjb25kaXRpb25zCisKK2NvbW1pdCAwMzRmMWM1NzJmNjgzZWE0Mjg1ODMwNzQ0NzFlNWQ1ZDEzYjUxODM3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEZlYiAyOCAxMDoyMjoyMCAyMDEyICswMDAwCisKKyAgICBTa2lwIFNFVC1iYXNlZCB0ZXN0cyB3aGVuIGNvbmZpZ3VyZWQgdXNpbmcgLS1lbmFibGUtcmVhZC1vbmx5CisKK2NvbW1pdCAzNjQyM2UyMTBiZmI2NWVmMTIxYzZhNjZhZWM0MzhjN2MyMzdkM2RmCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEZlYiAyOCAxMDowMzoyNSAyMDEyICswMDAwCisKKyAgICBDSEFOR0VTOiBCVUc6IDM0NTQxNjg6IGNvbmZpZ3VyZTogRml4IGJ1aWxkaW5nIHdpdGggLS1lbmFibGUtcmVhZC1vbmx5CisKK2NvbW1pdCBlZWQwYmNiYzQzZmVhMTgyNTlmMGY2M2IyMDgxYjZkMTA1MzVhMDUyCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEZlYiAyOCAwOToyNzoxMSAyMDEyICswMDAwCisKKyAgICBTa2lwIFNFVC1iYXNlZCBiYWJ5LXN0ZXBzIHdoZW4gY29tcGlsZWQgd2l0aCAtLWRpc2FibGUtc2V0LXN1cHBvcnQuCisgICAgSW5zcGlyZWQgYnkgYnVnICMzNDU0MTY4CisKK2NvbW1pdCBlYzZhMjMwMzBlNWEyMDcyYzE5YzE4YzFkOWMxMjQzODdkYTU2YjdiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDI3IDE4OjQyOjU4IDIwMTIgKzAwMDAKKworICAgIEFkZCAtbHJ0IHRvIE5FVFNOTVBMSUJTIHN1Y2ggdGhhdCBjbG9ja19nZXR0aW1lKCkgY2FuIGJlIGZvdW5kCisKK2NvbW1pdCBmMTMzMjA1MDAyOTRiYjI0MGY2M2M2ZGQ3ZDJlOWEyMjA4ZWI3NDBkCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEZlYiAyNyAxNjo1Mjo1MSAyMDEyICswMDAwCisKKyAgICBTa2lwIFNFVC1iYXNlZCB0ZXN0cyB3aGVuIGNvbXBpbGVkIHVzaW5nIC0tZGlzYWJsZS1zZXQtc3VwcG9ydAorCitjb21taXQgYzQyNzZiNjIzMmMyOTE0NWMwMzk4ODRlNmI1YTZiNmRhNGI5MzgzNworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBGZWIgMjcgMTU6NTQ6NDUgMjAxMiArMDAwMAorCisgICAgT21pdCBTRVQtcmVsYXRlZCBjb2RlIHdoZW4gY29tcGlsaW5nIHdpdGggLS1kaXNhYmxlLXNldC1zdXBwb3J0IChpbnNwaXJlZCBieSBwYXRjaCAjMzQyNDkzMCkKKworY29tbWl0IDAxYzkzMGVkY2MyNTcwMGQ2YjVmYjAzNzZmNTVhMjY0MjVlMTNmYjAKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gRmViIDI3IDE1OjE3OjIyIDIwMTIgKzAwMDAKKworICAgIE9taXQgU0VULXJlbGF0ZWQgY29kZSB3aGVuIGNvbXBpbGluZyB3aXRoIC0tZGlzYWJsZS1zZXQtc3VwcG9ydAorICAgIChpbnNwaXJlZCBieSBwYXRjaCAjMzQyNDkzMCkKKworY29tbWl0IDk0ODRkODMyMDNjNGUyZDgyMDQxNmJlNjY1ZmE4MzNhYTcwNDQ0ZDIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBGZWIgMjQgMTQ6MDA6MzIgMjAxMiArMDEwMAorCisgICAgUmV3b3JrIGNvbW1pdCBiNGExOTUwNWEwNTgxNmU5NGUwMWRlOTdiZjk5YWMzN2ZjZGM2ZDIzLgorCitjb21taXQgMmI3ZjEzNDk1MjI4NjM1ZDgxNmU1OGIyMTc0ZGMxMjRkZDBjZjM5ZgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEZlYiAyNCAwNzo0MzoyMiAyMDEyIC0wODAwCisKKyAgICBzZXQgTUVSR0VfQVVUT0VESVQgYmVmb3JlIG1lcmdpbmcgdG8gYXZvaWQgdGhlIGZ1dHVyZSBnaXQgMS43LjEwIGZvcmNlZCBtc2cKKworY29tbWl0IGUxYjkxMGIwYmU5MzQzNTg2YWU5ZWRiYTZmNDYwNDBhZjMxNWZjZGQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMjMgMTA6Mjc6NTQgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IGluaXRfYWdlbnQoKSArIGluaXRfa21lbSgpOiBSZXR1cm4gYW4gZXJyb3IgdmFsdWUgaW5zdGVhZCBvZiBpbnZva2luZyBleGl0KCkgaWYgYWNjZXNzIHRvIGtlcm5lbCB2aXJ0dWFsIG1lbW9yeSBpcyBkZW5pZWQKKworY29tbWl0IDQ2M2VlZDIxMjBmOWQxOTFiYzIyNjczNDk2YTQ5ZTgxNzQ2NjRlNGIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMjMgMTA6MDM6MzEgMjAxMiArMDEwMAorCisgICAgUmVtb3ZlIG9ic29sZXRlIHN5bWJvbCBORVRTTk1QX0VYSVRfT05fQkFEX0tMUkVBRAorCitjb21taXQgYzM2YWI3MWE0ZTA5NmYxNmNjNWE1NTUzM2YwODBjOWE5NDAwOTkxNAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyMyAwODo1Mzo1NiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBGcmVlQlNEOiBzbm1wZCArIGFwcHM6IFNlbmRpbmcgVURQIHBhY2tldHMgd29ya3MgYWdhaW4gZm9yIG5vbi1yb290IHVzZXJzCisKK2NvbW1pdCBlZGViZGRiYTkzMGY4YjE0NzJmYTBiZDIwZmM0MTNlZjhjZjQ2NGEyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgRmViIDIxIDExOjMxOjQ2IDIwMTIgKzAxMDAKKworICAgIHRlc3RpbmcvUlVOVEVTVFM6IEZpeCBhIGJhc2hpc20KKworY29tbWl0IGI0YTE5NTA1YTA1ODE2ZTk0ZTAxZGU5N2JmOTlhYzM3ZmNkYzZkMjMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgMjAgMTY6NTg6NDcgMjAxMiArMDEwMAorCisgICAgRml4IGNvbXBpbGVyIHdhcm5pbmdzIGFib3V0ICVsZCB2ZXJzdXMgdGltZV90IG9uIHN5c3RlbXMgd2hlcmUgdGltZV90IGlzIGEgc3lub255bSBmb3IgbG9uZyBsb25nIGluc3RlYWQgb2YgbG9uZy4KKworY29tbWl0IGQ4OTc4ZWNjODIxMWJlN2MxZTc5MDVmMWUyMTViYjA2ZGVkMjY2YjYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBGZWIgMjEgMTI6MzI6MjUgMjAxMiArMDEwMAorCisgICAgRml4IHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wU29ja2V0QmFzZURvbWFpbi5jIGZpbGUgaGVhZGVyCisKK2NvbW1pdCBhYTc2NmQxOTZlNTI4N2Y2Y2E3OWI1OGEzNDViMDI0MjYwYWJhMzU0CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDIwIDE3OjA3OjEzIDIwMTIgKzAxMDAKKworICAgIElGLU1JQjogZG8gbm90IHRyaWdnZXIgdW5kZWZpbmVkIGJlaGF2aW9yICg+PiAzMiBvZiBhIDMyLWJpdCB2YXJpYWJsZSkgd2hlbiB1cGRhdGluZyBhIGNvdW50ZXIgYW5kIGlmaV9pcGFja2V0cyBpcyBhIDMyLWJpdCB2YXJpYWJsZQorCitjb21taXQgYzNmYjZkZDllNmI5OWU5NTQyNDkzMTg4OTg3ODcxZmM1MDE3Y2IzYworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyMyAwOTo0NTo0NSAyMDEyICswMTAwCisKKyAgICBGaXggYSBjb21waWxlciB3YXJuaW5nIG9uIHN5c3RlbXMgd2hlcmUgbW9kZV90IGlzIHVuc2lnbmVkCisKK2NvbW1pdCBmOGEzZWYwZDNkNGU1MzAyNzk5MDAxMDEwNDliOGRlOThhNDRhNmZiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTQ6NDg6NTIgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYiArIHNubXBkICsgc25tcHdhbGs6IEF2b2lkIHRoYXQgc3lzdGVtIGNsb2NrIGNoYW5nZXMgKGUuZy4gYnkgbnRwZCkgYWZmZWN0IGNvZGUgdGhhdCBuZWVkcyByZWxhdGl2ZSB0aW1lCisgICAgQ0hBTkdFUzogc25tcGQ6IE1ha2Ugc3VyZSB0aGF0IHRoZSByYW5nZSBvZiB0aGUgU05NUHYzIHZhcmlhYmxlIHNubXBFbmdpbmVUaW1lIGlzIDAuLjIxNDc0ODM2NDcgb24gYWxsIHN1cHBvcnRlZCBzeXN0ZW1zIGluc3RlYWQgb2YgMC4uNDI5NDk2NzIgb24gc29tZSBzeXN0ZW1zIChpLmUuIHdyYXBhcm91bmQgYWZ0ZXIgNDk3IGRheXMpCisgICAgQ0hBTkdFUzogc25tcGxpYjogQWRkIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygpLCBuZXRzbm1wX3NldF9tb25vdG9uaWNfbWFya2VyKCksIG5ldHNubXBfcmVhZHlfbW9ub3RvbmljKCksIG5ldHNubXBfZ2V0X2FnZW50X3J1bnRpbWUoKQorICAgIENIQU5HRVM6IHNubXBsaWI6IERlcHJlY2F0ZSBhdGltZV9kaWZmKCksIGF0aW1lX25ld01hcmtlcigpLCBhdGltZV9yZWFkeSgpLCBhdGltZV9zZXRNYXJrZXIoKSwgbWFya2VyX3R0aWNrcygpLCBuZXRzbm1wX21hcmtlcl91cHRpbWUoKSwgbmV0c25tcF90aW1ldmFsX3VwdGltZSgpLCB0aW1ldmFsX3R0aWNrcygpLCB1YXRpbWVfZGlmZigpLCB1YXRpbWVfaGRpZmYoKSBhbmQgdWF0aW1lX3JlYWR5KCkuCisgICAgQ0hBTkdFUzogc25tcGxpYjogQ2hhbmdlIHRoZSBuYW1lcyBvZiB0aGUgc3RydWN0IHRpbWV2YWwgbWVtYmVycyBvZiBkYXRhIHN0cnVjdHVyZXMgdGhhdCB3ZXJlIHVzZWQgdG8gc3RvcmUgYSB3YWxsIGNsb2NrIHRpbWUgYnV0IHRoYXQgZG8gbm93IGNvbnRhaW4gYSBtb25vdG9uaWMgY2xvY2sgdmFsdWUKKworY29tbWl0IGMxOTc2MGYzMzMzYzkyZmFjNWQ1MGU5NzY4Y2RmOTM5MjE4YmM0ODcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBGZWIgMTUgMDk6NDU6MDMgMjAxMiArMDEwMAorCisgICAgc25tcGxpYi9zbm1wdjMuYzogRml4IHNvdXJjZSBjb2RlIGluZGVudGF0aW9uCisKK2NvbW1pdCBhNmRiMjM5OTQ1ZTE5NWRlNWE5MGZhMTgzNzAwYjI3YTZlY2IyOGQzCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgRmViIDcgMDA6MTE6MTQgMjAxMiArMDEwMAorCisgICAgRml4IHBvc3NpYmxlIG1lbW9yeSBsZWFrIGZyb20gcmVjZW50IGRlY2xhcmF0aW9ucyBwYXRjaAorCitjb21taXQgMGZiYmI5YTllMjkwNmE3YWY5NTY5NTcwNjFkNDg1ODc0NDYyYWVhOQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEZlYiA2IDIwOjQzOjA0IDIwMTIgKzAxMDAKKworICAgIERvIG5vdCBtaXggZGVjbGFyYXRpb25zIGFuZCBzdGF0ZW1lbnRzCisKK2NvbW1pdCBmMzA4ZDViYWZiMDVkNzhlZDQwMzBjNGVjZmYzMjRiNmNiZGE2ODBmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTU6MjU6MzAgMjAxMiArMDEwMAorCisgICAgRml4IHR3byBjb21waWxlciB3YXJuaW5ncyBpbiBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYworCitjb21taXQgNDZmMGZjMWI3ZmMyNmEyMjU3NjNiYzY1Y2NhNTIwYTFjNTlmMDI1MQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEZlYiA2IDIwOjU0OjMyIDIwMTIgKzAxMDAKKworICAgIHNlbmRtc2cgZG9lcyBub3QgbGlrZSBJUF9TRU5EU1JDQUREUiBpZiBhZGRyIGlzIElOQUREUl9BTlkKKworY29tbWl0IGRlYmFjNDk4ZmU4NDEwMTEwMTA3YTJmZTY0ZjhhZmI3NDhlZGFhMDcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gRmViIDYgMTY6NDg6MDkgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogYWRkZWQgT0NGUzIgKE9yYWNsZSBDbHVzdGVyIEZTKSB0byBoclN0b3JhZ2VUYWJsZSBhbmQgaHJGU1RhYmxlCisKK2NvbW1pdCBmYWZjOTljZDg5ZTczZWM3ZTAwYmY3MzYwZDBiNGZhNjE5NDRhNGY0CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTE6MTg6MzQgMjAxMiArMDEwMAorCisgICAgU2ltcGxpZnkgY2FsY3VsYXRlX3RpbWVfZGlmZigpIGFuZCBjYWxjdWxhdGVfc2VjdGltZV9kaWZmKCkKKworY29tbWl0IDdhZjIwMTNkZThiZjFiMzc5YzA3NmRiNGUxMDQ1MDhlMTc4NzRkM2UKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAxNDo1NTo1OCAyMDEyICswMTAwCisKKyAgICBGaXggb3JkZXIgb2YgZmVhdHVyZSAjaWZuZGVmIGFuZCBEb3h5Z2VuIGNvbW1lbnQgYmxvY2sKKworY29tbWl0IGJiZDY3ZjYzNTMwZjVlZjBiZmM5NDhmYzU4ZGZlNmE5M2Y4Zjg2NzkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAxNToyNTozMCAyMDEyICswMTAwCisKKyAgICBGaXggdHdvIGNvbXBpbGVyIHdhcm5pbmdzIGluIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jCisKK2NvbW1pdCA0MmE2NmFlZmYyNWI5ZTllZjYzNWE0MDRhZDJmNTIxMmY5ZThjZjBkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTQ6NDc6NTQgMjAxMiArMDEwMAorCisgICAgUmVuYW1lIHR3byBmdW5jdGlvbiBhcmd1bWVudHMKKworY29tbWl0IDNmZTcyYjNiOTliN2U0YjJiOTgyMzYzZGZjNGYyZDhkMTNmNDA1OTIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAxMzo0OToyMiAyMDEyICswMTAwCisKKyAgICBDb252ZXJ0IHNubXBfc2VsZWN0X2luZm8oKSBkb2N1bWVudGF0aW9uIHRvIERveHlnZW4gZm9ybWF0CisKK2NvbW1pdCBlOWRiMjY2YWU0OGQwNWE3YTZjYjVkNzFiNGJkZWE3YWQ4MDhlZjVlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTE6MTc6NTcgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEFkZCBuZXRzbm1wX2dldF9uZXh0X2FsYXJtX3RpbWUoKQorCitjb21taXQgZDA4MDQ0Y2I5ZTU3MDJmYmY1NDllMTQ0MjVmNDI3OTQyNTlkOGEyMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDA5OjM4OjA3IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBBZGQgbmV0c25tcF9nZXRfYWdlbnRfcnVudGltZSgpCisKK2NvbW1pdCBhMDVjMjdjMjcxMWNiNDE1ODJhM2I0YzMxZTM4YjBlOTM1MzBiNjJkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTQ6NTE6MzMgMjAxMiArMDEwMAorCisgICAgRml4IHNwZWxsaW5nIGluIGEgc291cmNlIGNvZGUgY29tbWVudAorCitjb21taXQgOTEwZDdiMGQ5OTE4MzYwOWI5NTI5YjA0YzNmMjkzMzBlYjY2MTAyMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDE0OjM4OjEyIDIwMTIgKzAxMDAKKworICAgIFJlcGxhY2UgbmV0c25tcF90aW1ldmFsX3VwdGltZSgpIGJ5IG5ldHNubXBfZ2V0X2FnZW50X3VwdGltZSgpCisKK2NvbW1pdCA0M2E4M2Y2YzZhOTZjYzIzMTZiNzBlZWNhY2YxMjdlYjY5MTNjN2E3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTE6MTk6MTUgMjAxMiArMDEwMAorCisgICAgVXNlIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yIGluc3RlYWQgb2YgbWVtY3B5KCkgZm9yIGNvcHlpbmcgc3RydWN0IHRpbWV2YWwKKworY29tbWl0IDJmZTU3OWVmYjFjYjNhNzRmODI4MDNjYTMyMzkyOGY2YjhlNGI1YzAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBGZWIgMyAxNDowNDowMiAyMDEyICswMTAwCisKKyAgICBNYWtlIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYyBidWlsZCBhZ2FpbiBvbiBub24tTGludXggc3lzdGVtcy4KKyAgICAKKyAgICBTZWUgYWxzbyBjb21taXQgMzQ1YTFlNDI1NDgxMmNiOWVkYzFkMjc0NDkxYjc2NjgxYTlkYmExZS4KKworY29tbWl0IDg4MWRlNmFiNzM1NTI3N2E1YzExNmEwMDhmYmU1MTMyOTNiMDUwMzkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBGZWIgMyAxMDowODoyMSAyMDEyICswMTAwCisKKyAgICBGaXggY29tcGlsZXIgd2FybmluZ3MgdHJpZ2dlcmVkIGJ5IHRoZSBSbW9uIE1JQiBpbXBsZW1lbnRhdGlvbgorCitjb21taXQgNDYyOTkzM2MwZDNiM2Y5ZjRiYTU4MzUzNGY3OWEzN2ZiOTYzMzgxNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDIwOjA1OjMxIDIwMTIgKzAwMDAKKworICAgIE1vcmUgY29tcGlsZXIgd2FybmluZyBmaXhlcworCitjb21taXQgZTliNWEzZGVlNmY5YWZhYjhiOTBhMjkzOTIwNDA2MzJiMDc1YWQ3YQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDE2OjU2OjU1IDIwMTIgKzAxMDAKKworICAgIFVzZSBTTk1QX01JTigpIGluc3RlYWQgb2YgbWluKCkKKworY29tbWl0IGFlNDUyYzc3YjQxMTEzOWQ2YjU4MDBmZmNmODhkNDhlOWI0NzkyYTgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAxNToyMzozOCAyMDEyICswMTAwCisKKyAgICBSZXN0b3JlIGNvbW1pdCBkYmI4Nzk1YTdkZjU5NWYwNjAzZjJlYzYxNzA0Nzk5ZjRjNDgyNjY3LgorCitjb21taXQgYzdkMTFmYTAwZjk5OTVkZGI5ZmUzZDQ5OTRhM2U5NzkwZGEyZTE4OQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDE1OjE4OjQwIDIwMTIgKzAxMDAKKworICAgIFJlc3RvcmUgY29tbWl0IGRiYjg3OTVhN2RmNTk1ZjA2MDNmMmVjNjE3MDQ3OTlmNGM0ODI2NjcgcGFydGlhbGx5LgorCitjb21taXQgMDBmZDYyNzIwZWM0NTRmNWE2OTBkZTRmZWJhMDgyMjNjZmIyYzNmOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDE0OjQ4OjQ0IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXB0cmFwZDogQXZvaWQgY3Jhc2ggZHVyaW5nIHNodXRkb3duIGR1ZSB0byBpbnZva2luZyBwZXJsX2Rlc3RydWN0KE5VTEwpCisKK2NvbW1pdCBkOWUyMjlkODFhYmVhZjE5MWVmMmNjYjA3Nzg0Mjg4NWMyMzBkNjIyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMTQ6NDc6NDEgMjAxMiArMDEwMAorCisgICAgUmVtb3ZlIGEgc3VwZXJmbHVvdXMgZGVjbGFyYXRpb24KKworY29tbWl0IDFlMmUyYWY2Y2FlODMwZjM4MWU4N2EyNDRkMDI5ZWI4NmJmM2ZjY2UKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAxMzoyMDozNyAyMDEyICswMTAwCisKKyAgICBwZXJsL1NOTVAvZXhhbXBsZXMvcGluZ21pYi5wbDogQWRkIGVycm9yIGNoZWNraW5nCisKK2NvbW1pdCAyNDFhMTQxZTMxZjE2ODRmYzZjZjcwY2M0YTAwY2NlNjM2ZmQzNTI2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMTE6Mjg6MzcgMjAxMiArMDEwMAorCisgICAgTWFrZSBjb25maWd1cmUtdGltZSBFVlBfTURfQ1RYX2NyZWF0ZSgpIGRldGVjdGlvbiB3b3JrIG9uIHRoZSA1LjQgYnJhbmNoLgorICAgIAorICAgIFNlZSBhbHNvIGNvbW1pdCA0NmVhYzAyZTlhMjdiZjRmMzA2OGU3OTVjYWI4OTFmMDVhODQ4ODcwLgorCitjb21taXQgNmQ5ZDE0ZmVhYWEyZDBmZWM2OGI0ZDE1ODk0NGQzMmNiMDRmZjFiYworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDExOjEyOjAwIDIwMTIgKzAxMDAKKworICAgIFJldmVydCB0aGUgY2hhbmdlcyB0aGF0IGJyZWFrIHRoZSBidWlsZCBvbiB0aGUgNS40IGJyYW5jaCBmcm9tIGNvbW1pdCBkYmI4Nzk1YTdkZjU5NWYwNjAzZjJlYzYxNzA0Nzk5ZjRjNDgyNjY3LgorCitjb21taXQgOGFiZTQ5ZTMwYzk3Yzg5ODNlODNiNDVhMzVjNzE2ZmU5MWY2NmJlYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEZlYiAxIDExOjU2OjU4IDIwMTIgKzAxMDAKKworICAgIEZpeCBzZXZlcmFsIGNvbXBpbGVyIHdhcm5pbmdzIGluIHRoZSBESVNNQU4gTUlCIGltcGxlbWVudGF0aW9ucy4KKworY29tbWl0IGY5ZmIwYTUzMzM3NWUxNGRjMzcwMDI1YTBiMmZiYzc2MWJmMjdiZTYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAwOTo1NjowMiAyMDEyICswMTAwCisKKyAgICBSZXZlcnQgIkhPU1QtUkVTT1VSQ0VTX01JQjogZml4IGEgY29tcGlsZXIgd2FybmluZyIgYmVjYXVzZSBpdCdzIHdyb25nLgorICAgIAorICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgYWE2Yjc5YmMxMjRhN2I3YTg4NWQ3ZTUwMzVhYjA2YWEzZWNlZjYxMy4KKworY29tbWl0IGNhNGE0ZmUyNWVmZDI3MTRmOGYxOTYxYjk3ODU2NjE2NTYzZjQyYzkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAxMDoyMTo0OSAyMDEyICswMTAwCisKKyAgICAuZ2l0aWdub3JlOiBBZGQgcHl0aG9uL2J1aWxkCisKK2NvbW1pdCAxM2FkYTU2NTU4YjQ0ZTI4ZDEzNTVjMGRjZTFkOTIxZjM3NDZkNTQ4CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNTo1Mzo0OSAyMDEyICswMTAwCisKKyAgICBSZXZlcnQgIlJldmVydCAiRml4IGZvcm1hdCBzcGVjaWZpZXJzIHRvIGF2b2lkIHdhcm5pbmdzIiIgLSB0aGVyZSAqaXMqIE5FVFNOTVBfUFJJbyBpbiBWNS02KyBicmFuY2hlcworICAgIAorICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgYWE1MjhiZDIyYzc0OTNjYThkNjdlNjc4ZmJmNjE1Y2EwZjYzZWE2ZC4KKworY29tbWl0IGFhNTI4YmQyMmM3NDkzY2E4ZDY3ZTY3OGZiZjYxNWNhMGY2M2VhNmQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE0OjEzOjE4IDIwMTIgKzAxMDAKKworICAgIFJldmVydCAiRml4IGZvcm1hdCBzcGVjaWZpZXJzIHRvIGF2b2lkIHdhcm5pbmdzIiAtIHRoZXJlIGlzIG5vIE5FVFNOTVBfUFJJbyBpbiBWNS00IG9yIFY1LTUgYnJhbmNoZXMKKyAgICAKKyAgICBUaGlzIHJldmVydHMgY29tbWl0IDM5MGMwMTE0YzhlYzBiZGIyN2IwOGI2Zjc0ZTNmNmVmM2E2Mjk4MWIuCisKK2NvbW1pdCAyZmI5OWJlOWFhODZhNmNhMzQ5Yjg2ZDRlZjhiYzcyNmVkOWYyYTgyCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNDo1ODozNSAyMDEyICswMTAwCisKKyAgICBEb24ndCB0b3VjaCByZWdpbmZvIHdoZW4gcmVnaXN0cmF0aW9uIGZhaWxzIC0gaXQgaGFzIGJlZW4gYWxyZWFkeSBmcmVlZC4KKworY29tbWl0IGU1YzM1NTg5ZTBiZjQxNmJmZDAzNmJkNDY4ZjQyYWFlYWIyNWU3ODgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE0OjU1OjU2IDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCitjb21taXQgMzQ1YTFlNDI1NDgxMmNiOWVkYzFkMjc0NDkxYjc2NjgxYTlkYmExZQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTQ6NTE6MjYgMjAxMiArMDEwMAorCisgICAgRml4ZWQgZXJyb3IgaGFuZGxpbmcgaW4gaW5pdF9pY21wKCkuCisKK2NvbW1pdCBjMzAzNTQ5YTU5ZmE4YzJmMjBhOWQ4YmYxZTk4NWZiYzhhYmRlNmE4CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNTo0NjoyOSAyMDEyICswMTAwCisKKyAgICBSZXdvcmtlZCBfcmVnaXN0ZXJfZXh0ZW5kKCkgZXJyb3IgaGFuZGxpbmcuCisKK2NvbW1pdCA5YzIwZTI3YTcwMjZmYzAzMGRhM2IzMjhiOWEyZTFiNGYzNjY3MGNkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNToyMToyOCAyMDEyICswMTAwCisKKyAgICBEb24ndCB0b3VjaCByZWdpbmZvIHdoZW4gcmVnaXN0cmF0aW9uIGZhaWxzIC0gaXQgaGFzIGJlZW4gYWxyZWFkeSBmcmVlZC4KKworY29tbWl0IDIyZmQwYmZjMmRmMGUxZjYwMjBkYzNjNTBhNzUzZGRmMjhhNDU5OWMKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjIwOjIyIDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCitjb21taXQgNWQ2MWU1N2JhZjU4MGM3ODI1MmMwYWJiMDA5OGMwN2JiMDVhZjE3YworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTU6MTc6MDUgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgdG91Y2ggcmVnaW5mbyB3aGVuIHJlZ2lzdHJhdGlvbiBmYWlscyAtIGl0IGhhcyBiZWVuIGFscmVhZHkgZnJlZWQuCisKK2NvbW1pdCAzYzNlZWFlODBkNzk2ZjI3NTk3YzkwMWU3ZmYyMDQ2Yzc2OWVmNGI4CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNTowODowOSAyMDEyICswMTAwCisKKyAgICBNYXJrIHJvd3JlcV9jdHggYXMgZnJlZWQgc28gbmV4dCBpdGVyYXRpb24gYWxsb2NhdGVzIG5ldyBvbmUgaW5zdGVhZCBvZiByZXVzaW5nIHRoZSBmcmVlZCBvbmUuCisKK2NvbW1pdCBhZjlhYmQ1M2MyMzM3YzkwYTY5MWE3YjA0NGZmM2Y5N2MxMDAzMTYxCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNTowNToxMCAyMDEyICswMTAwCisKKyAgICBEb24ndCB0b3VjaCByZWdpbmZvIHdoZW4gcmVnaXN0cmF0aW9uIGZhaWxzIC0gaXQgaGFzIGJlZW4gYWxyZWFkeSBmcmVlZC4KKworY29tbWl0IGNmOTQ2NWY1NDE4MWU2MmUyMWE5YjEwMjE5MTMxMTA3YTNkMmViZjYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjA0OjA2IDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCitjb21taXQgNzg3MWYyYjA5YjhiNTJmMzRhOWU1Nzc4NDI2NjQ1OTA1MzE2NWJjYgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTU6MDI6NTAgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgdG91Y2ggcmVnaW5mbyB3aGVuIHJlZ2lzdHJhdGlvbiBmYWlscyAtIGl0IGhhcyBiZWVuIGFscmVhZHkgZnJlZWQuCisKK2NvbW1pdCA3YTM3ZjMzZDMxMGM5NTk4NjA3YmMzMjNkOWJkYmY5MWFhZjcyYzk1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNTowMDo1MSAyMDEyICswMTAwCisKKyAgICBEb24ndCB0b3VjaCByZWdpbmZvIHdoZW4gcmVnaXN0cmF0aW9uIGZhaWxzIC0gaXQgaGFzIGJlZW4gYWxyZWFkeSBmcmVlZC4KKworY29tbWl0IDNlNDVmNzAyNjI0OWU0NTM1MGVkYWFjODUzMzc0MjNhYTBlOTVkOGIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE0OjEzOjE4IDIwMTIgKzAxMDAKKworICAgIFJldmVydCAiRml4IGZvcm1hdCBzcGVjaWZpZXJzIHRvIGF2b2lkIHdhcm5pbmdzIiAtIHRoZXJlIGlzIG5vIE5FVFNOTVBfUFJJbyBpbiBWNS00IG9yIFY1LTUgYnJhbmNoZXMKKyAgICAKKyAgICBUaGlzIHJldmVydHMgY29tbWl0IDM5MGMwMTE0YzhlYzBiZGIyN2IwOGI2Zjc0ZTNmNmVmM2E2Mjk4MWIuCisKK2NvbW1pdCA2MTkzNjc2MmU2NDFjMThkYjc1YWE1MTI1YTMzZTc3NmM2NzdhZGM1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxMToxMzozOSAyMDEyICswMTAwCisKKyAgICBGaXhlZCBmcmVlaW5nIHJlZ2luZm8gdHdpY2Ugb24gZXJyb3IgaW4gYSB0ZW1wbGF0ZSBhbmQgYWxsIGl0cyBpbnN0YW5jZXMuCisKK2NvbW1pdCA0OTY0Mzc0MzA0MTVmYmFmZWIxY2NkNDc3NGYxY2EwMGQ2MjdlYTFmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDIwIDExOjA0OjEzIDIwMTIgKzAxMDAKKworICAgIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6IEZpeCBjb21waWxlciB3YXJuaW5ncyBpbnRyb2R1Y2VkIG9uIFY1LjYgYnJhbmNoCisKK2NvbW1pdCA1YjRhMjRjZGNlZTFiYzNkODI2MzNjY2FmZWI5NmZjZTk1MzQ5YzU5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDIwIDA5OjIyOjI3IDIwMTIgKzAxMDAKKworICAgIHVuaXQgdGVzdHM6IGZpeCBhIDY0LWJpdCBjb21waWxlciB3YXJuaW5nCisKK2NvbW1pdCBjYmYxYzkxYmFmNzE5MWJlNWZhMjdkODFiY2Y4NzE0MzMxYTJjMTJmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDIwIDA5OjIwOjQyIDIwMTIgKzAxMDAKKworICAgIFVzZSBzbm1wVGFyZ2V0UGFyYW1UYWJsZV9kaXNwb3NlKCkgdG8gZnJlZSBhIHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdC4KKyAgICAKKyAgICBGaXhlcyBhIGJ1ZyBpbnRyb2R1Y2VkIGluIGNvbW1pdCBkYmYyNmEwNWEwNGVmMjRjNDczNDZlNWFkZGE0OGUzMzg0OThlNzFmLgorCitjb21taXQgYWE2Yjc5YmMxMjRhN2I3YTg4NWQ3ZTUwMzVhYjA2YWEzZWNlZjYxMworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiAyMCAwOToyMDozMSAyMDEyICswMTAwCisKKyAgICBIT1NULVJFU09VUkNFU19NSUI6IGZpeCBhIGNvbXBpbGVyIHdhcm5pbmcKKworY29tbWl0IDNhNzZiNDNlMTFmZmZhZGE2MzJmY2NiODQ4YWI1MDBlODc2YWQ0OGIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTggMTY6MjE6MDUgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogcHl0aG9uOiBBdm9pZCB0aGF0IGFuIFNOTVAgc2V0IHdpdGggVXNlRW51bXMgZW5hYmxlZCBjYXVzZXMgYSBzZWdtZW50YXRpb24gZmF1bHQKKworY29tbWl0IDg0ZGVjOWZhOTJiMGFhMmQ1OGViNzAyMDMzMGY0Zjk4ZTUxNTQzMjEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTggMTQ6Mzg6MjEgMjAxMiArMDEwMAorCisgICAgcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYzogRml4IG1vc3QgY29tcGlsZXIgd2FybmluZ3MKKworY29tbWl0IDM4Y2YyMThjM2YxYTcyNzc4NmUyMjdhNWQzZmIxODZmZDBmMWExNWYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDE0OjUwOjEzIDIwMTIgKzAxMDAKKworICAgIEZpeCBhIHR5cG8KKworY29tbWl0IDQ1NDEyMjI0NDEyMmJmZGI2ZjY3Y2FiMzEyNTZkN2I0NjM3MmU5ZTEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDE0OjMwOjE4IDIwMTIgKzAxMDAKKworICAgIEZyZWUgdG1TdGF0ZVJlZiBvbiBlcnJvcnMuCisKK2NvbW1pdCAwMTE5MDIyZGFhNTljNzNiZmVjMGRhMjM4NmQwNjI4ZjE0ZTZkYWI3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxNDowOToxMiAyMDEyICswMTAwCisKKyAgICBGcmVlIGZpbmdlcnByaW50IHdoZW4gaXQncyBub3QgbmVlZGVkLgorCitjb21taXQgMGU4NGNkMzAzYTA4MjY3ZGVjNzhmNmQ4MWM5YmIwN2UzZDgzYTExZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTM6NDg6MjYgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgNjNkYzg0NmE3OTQ5Y2U2OTdiM2UyOGM1NDNkYzExMDVlNjNhMjI1MAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTM6MDg6MjggMjAxMiArMDEwMAorCisgICAgRnJlZSBjZXJ0aWZpY2F0ZSBmaW5nZXJwcmludC4KKworY29tbWl0IGNlMWYyODRhNjNlYjgxNjQ0YjNlMzI2MDZjYmUzOWI2N2UxZGZmMmEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDE0OjM3OjA5IDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IDdlMjE0MTNjYTZmMmVmZDdhM2FmYjYyYzYyYjY0NDg4MWI4YmQxZTcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDEzOjQ2OjMwIDIwMTIgKzAxMDAKKworICAgIFByb3Blcmx5IGFsbG9jYXRlIGFuZCBmcmVlIGVuZ2luZUlELgorCitjb21taXQgMzRjOTYyODgyNjA3YzM2MzhhMmZhMjVhMmFjNTMxNDkyZDcxYzc4NworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTM6Mzc6MjUgMjAxMiArMDEwMAorCisgICAgRnJlZSBsb2NhbGx5IGFsbG9jYXRlZCB0bVN0YXRlUmVmLgorCitjb21taXQgZjU3YWU1MzFkYzU2NThhYmNkNjViMTYyNzYxNTUyNTIzOGQxNmQyZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTM6MjA6MjQgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgNTM2YmM1NzU1NmMzMTQxNTYxZWE0YTE5NDgxMGIxNjI5MGE2OTFlZQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTM6MTU6NDcgMjAxMiArMDEwMAorCisgICAgQWRkZWQgY2hlY2sgaWYgdGhlIGZ1bmN0aW9uIGFjdHVhbGx5IGRvZXMgc29tZXRoaW5nLgorCitjb21taXQgYTA3NzdkMzA3ZGJjYWYyMTllZTAxODRhMGZiYWI5ZDRlNWQ2YWEwYgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTM6MDE6NDUgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgOGI5N2E3MWM4ZTc5NTk0MjhlYjRkNGU4ZDkwZTkwOTZkNDNmZjA5ZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTI6NTc6MjYgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgMmMxNTA3YzIyMDMwNTQ5YWU2NjBjMGUyMTFmYmRjNWM3NWVjNWM1NworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTI6NTM6NDcgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgNjVmMmI3YmNkNGZlMDM5MDZhYTFhMTE1YWI2MGE4OWI4YWU5MzNkNQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTI6NTE6MzYgMjAxMiArMDEwMAorCisgICAgQ2xvc2Ugb3BlbiBmaWxlcyBvbiBlcnJvci4KKworY29tbWl0IDBlNTJlNGY2NmQ0NDc2NmJlYTM3NDczNTU2Yzc4ZTUyMTliOTU0NjEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDE4IDE1OjQ1OjMzIDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IGRiZjI2YTA1YTA0ZWYyNGM0NzM0NmU1YWRkYTQ4ZTMzODQ5OGU3MWYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDE4IDE1OjQyOjE3IDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IDc0OGRhODRiMWZkNjU0ZTMzOGJjNzAxZThmOWU1ZGEyMjkxODdmMWMKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDE4IDE1OjMyOjA0IDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IGViMjE3MTQ2ZmQ1NDAzNmVhNDIwMmJmZWY3OGJiZjc3NGQ3ZTM4MmQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDE4IDE1OjIzOjEwIDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IDliYTM4ZWVjNjYxMzhlYzFmNjEzZWE4ZDA0ZTE1ODEzMGM3MTIxYmMKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDE4IDE1OjE4OjU1IDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IGQ5ZDkzOGQzMDE4YzI3ZjUzMjc3YmM1ZTU5NTc4NTAwNDkwYzFkMDkKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDE4IDE1OjE2OjM4IDIwMTIgKzAxMDAKKworICAgIENsb3NlIG9wZW4gZmlsZSBvbiBlcnJvci4KKworY29tbWl0IGQ1ZTgxN2Q1YmQ1MThkOWFjNmEwZDYwZTBlMTQxZGQ2NGYyN2FkMTkKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDE4IDE1OjE0OjEyIDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IDJhZTY4ZjA1OWRmOWQ3NGIwNzRkMTJmNTljMTg0NzQ2NmVkNTc2Y2QKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDE4IDE1OjAzOjE3IDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IGEwMGYzZDQ2MTEyMWI1NDVhZWQ3MmFjMTJiMjQzODc5MWRjZmM0YmEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDE4IDE0OjU4OjM5IDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IDU5ODg0YmI0ZDM1YWQxMzc0N2ZmYTY3MjM0MzZkY2E1ODdhOWFiNzcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE3OjA5OjEyIDIwMTIgKzAxMDAKKworICAgIEluIGFib3ZlIGNvZGUsIG9sZW5ndGggaXMgY2hlY2tlZCwgc28gbGV0J3MgY2hlY2sgaXQgYWxzbyBoZXJlLgorCitjb21taXQgYmE1ZDUyOTJiMDQzOTNiMGM3ZDdkN2VkOTYxMjQxOTI5NDE4YzZlNAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTc6MDU6MTQgMjAxMiArMDEwMAorCisgICAgRml4ZWQgZGVyZWZlcmVuY2luZyBOVUxMLgorCitjb21taXQgZGEyZDZhNzAyOGExM2I5ZWRmM2E1Yzg0MzE0ZDBmMWZlZWY3NjcxNAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTY6NDQ6NTYgMjAxMiArMDEwMAorCisgICAgUHJldmVudCBkZXJlZmVyZW5jaW5nIE5VTEwuCisKK2NvbW1pdCBmODgwNTRhOWI2OWI2ZGUyNzRmN2ExNGE1OWI0NzMyM2U1ZTRlNGM2CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNjozNzozNSAyMDEyICswMTAwCisKKyAgICBEb24ndCBkZXJlZmVyZW5jZSBjb250ZXh0IGlmIGl0J3MgTlVMTC4KKworY29tbWl0IDdjNGQ0NTllOGYxZjY1MmNjMjA5OGMzZDRjODFkZTkwYTg0ZWQ3MTAKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE2OjMwOjA5IDIwMTIgKzAxMDAKKworICAgIERvbid0IGRlZmVyZW5jZSBOVUxMLgorCitjb21taXQgZmMxOWI3ZjMzYjU4NzkyN2QyYTAxZTcyZDIzZDIxYjliMTY5NmFiMworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTY6MjU6MjYgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgY2xvc2UgTlVMTCBmaWxlLgorCitjb21taXQgNWU5NWNhNjc5MDA3NmI3ODgwNzJhODAxZWU3YzgyOTY5ZDk5NWJjYgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTY6MTc6MDkgMjAxMiArMDEwMAorCisgICAgUHJldmVudCBkZXJlZmVyZW5jaW5nIE5VTEwgd2hlbiBhIHRyYW5zcG9ydCBkb2VzIG5vdCBoYXZlIGZfZm10YWRkci4KKworY29tbWl0IGVlZDZmNWY5YjlhZTU0ZDJjZWFiNjdhZDg1YWRkZTFmNmE4YTIxZDUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE2OjEzOjEzIDIwMTIgKzAxMDAKKworICAgIFByZXZlbnQgZGVyZWZlcmVuY2luZyBOVUxMLgorCitjb21taXQgNDFjZGU2OGI1ZmE0YjM4ZDgxNDUwY2Y5MWUwODJjZGZhODI1ZTdjZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTY6MTA6MTAgMjAxMiArMDEwMAorCisgICAgQ2hlY2sgaWYgYSByZWdpc3RyYXRpb24gd2FzIHJlYWxseSBmb3VuZC4KKworY29tbWl0IDViNzJhNDA4NTM4NzZhMTg2ZWZjYzAwOTBhNGUzMmMyMzViOWMwNWYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE2OjAzOjU4IDIwMTIgKzAxMDAKKworICAgIERvbid0IGRlcmVmZXJlbmNlIE5VTEwgd2hlbiBkaWZmbGVuIGlzIFNNVVhfTUFYX1BSSU9SSVRZICh3aGljaCBpcyBoaWdobHkgdW5saWtlbHksIGJ1dC4uLikKKworY29tbWl0IGZhNmE5MTJlNDFjNWQwZmQyYTYzNjg5NGU4NmI2NDI2YzA3Mzc1YWIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE1OjM3OjQ0IDIwMTIgKzAxMDAKKworICAgIENoZWNrIGZvciBtaXNzaW5nIHZhbHVlIGluIHNldEV2ZW50LgorCitjb21taXQgNDEwYjcxZGE0MjUzODlmZWNjMjVkMTRmNDlmMjM3NTM1ODE1NzZhZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTU6Mjg6NDEgMjAxMiArMDEwMAorCisgICAgRGVyZWZlcmVuY2UgZXJlZyBvbmx5IGlmIGl0IGlzIG5vdCBOVUxMLgorCitjb21taXQgMTg1MjcyZDFhMGI5MTM3NzQxODZmMWI5MTM1YWVhZjYzN2ViZWQ1MgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTU6MTc6MjEgMjAxMiArMDEwMAorCisgICAgQXMgcGVyIGFib3ZlIGNvZGUsIHRlbXBsYXRlX3YycGR1IGNhbiBiZSBOVUxMLCBzbyBjaGVjayBpdCBiZWZvcmUgZGVyZWZlcmVuY2luZy4KKworY29tbWl0IDQ4ZTVlYWQzZmQyYzJiMzg1ZGY2OTcyYzY3NTI2ZmY2YmRjMzA3NjgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE0OjQyOjIyIDIwMTIgKzAxMDAKKworICAgIFVwZGF0ZWQgbGFzdCBmaXggdG8gbmV3IGVycm9yIHJlcG9ydGluZyBzdHlsZS4KKworY29tbWl0IGYzM2QzMzYxNWQ2ZDg1ZDAwNzM3MjY0NzNjNDE0NmNiY2RmMTFjZWQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE0OjMwOjA3IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIHNpZ3NlZ3Ygd2hlbiBlbXB0eSBjb25maWcgbGluZSBpcyBwYXJzZWQuCisKK2NvbW1pdCBiNWRmMWVlYjQ3ZWQzNTU5YjZmNGQ5ZWNjY2RiMjQyMTI2ZTZjOTkyCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNDoxMTo1OCAyMDEyICswMTAwCisKKyAgICBGaXhlZCAoaGlnaGx5IHRoZW9yZXRpY2FsKSBzaWdzZWd2IHdoZW4gc3AtPnNlY3VyaXR5RW5naW5lSUQgaXMgTlVMTC4KKworY29tbWl0IDZmZWVkNjI5YTcxODk5YzExMzA5Njk1OWQ4NTQ5ZGMxMjAxZThmOWEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDEzOjQzOjM3IDIwMTIgKzAxMDAKKworICAgIEFkZGVkIE5VTEwgYW5kIGxlbiBjaGVjayBqdXN0IGluIGNhc2Ugc29tZW9uZSBwcm92aWRlcyB2YWx1ZSA9IE5VTEwgYW5kIG5vemVybyBsZW4gKC0+IE5VTEwgaXMgdGhlbiBkZXJlZmVyZW5jZWQpLgorCitjb21taXQgMzU1YzVhYjI2NGFmMmE2MDIwYTFkOGE5MjNmODBmMTFiOTQyMjk1ZQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTM6MzY6NDEgMjAxMiArMDEwMAorCisgICAgRXh0ZW5kIHRoZSBOVUxMIGNoZWNrLCBpLmUuIHJldHVybiBpZiB0aGVyZSBpcyBub3RoaW5nIHRvIHJlbW92ZS4KKworY29tbWl0IGRkZDc5NDhhY2FkOTM4Y2Q0Mjk3NDUwNWRkY2E0ZjAzNzIxMTY3MDkKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBKYW4gMTYgMTE6MTE6MjkgMjAxMiAtMDgwMAorCisgICAgdXBkYXRlIHNwYXJ0YSdzIGNvcHlyaWdodAorCitjb21taXQgNDEyNTYwODZhN2E1MDQxNDUzNDE5Y2ZkNmU1NjJjN2I1NWM1NmIwYQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEphbiAxNiAxMDozMjowNCAyMDEyIC0wODAwCisKKyAgICBwdWxsZWQgZnVsbCBjb3B5IG9mIGV4dHJhY3RuZXdzIGZyb20gbWFzdGVyCisKK2NvbW1pdCA2MjVhNzBkYmRmZDk5MDJkYTc5ZWZhMjkzZmU2ZDJhYzhjY2YyYjJlCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSmFuIDE2IDEwOjI0OjE5IDIwMTIgLTA4MDAKKworICAgIHVwZGF0ZSB0byBjaGFuZ2UgdG8gdGhlIG5ld2VyIGxvZyBnZW5lcmF0aW5nL3BhcnNpbmcKKworY29tbWl0IDYyZTMyYjEzMDg5YjI5ZWRjZjI3NmY2MTVkYTY3ZTQ1MDhmZTdiYjUKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBKYW4gMTYgMDk6Mjk6NDIgMjAxMiAtMDgwMAorCisgICAgY29uZmxpY3RpbmcgbWVyZ2UgZnJvbSBtYXN0ZXIgZm9yIGV4dHJhY3RuZXdzCisKK2NvbW1pdCA3MDA4NGRhNjFkMmJjYmQyY2YxZWQ4MWJkYzNiZjY3OTRjMmFmZmI2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDEzIDExOjQ5OjE2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tU0NIRURVTEVSLU1JQjogSGFuZGxlIDMyLWNoYXJhY3RlciBzY2hlZENvbnRleHROYW1lIHZhbHVlcyBjb3JyZWN0bHkuCisgICAgCisgICAgU2VlIGFsc28gY29tbWl0IGIzYzQ5ODI1NDJlMGFiMTUxZmIzODg0NzU0Y2RmYmNiNDcyZGE1MmQuCisKK2NvbW1pdCAwNGJmM2UyODgxNThlZTg4MGVkZjIzN2U0MDA3ZmVlMzdkMjA0NGRkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxMiAxNTozOTozNyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBlbmRsZXNzIGxvb3Agd2hlbiBTU0xfcmVhZCByZXR1cm5zIGVycm9yLgorCitjb21taXQgYzE1MjZmY2NjMDQ3NGMxZGIxOGNhYTlkYmI4MzM4NTNjZGRkZTNjYworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTU6MTM6MjEgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYSB0eXBvLgorCitjb21taXQgYTI3YWExOWRmMjgzMTU2YzAzMmM4MWVhZWU1ZTExNTg1OWQzOGMxNworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTU6MTE6MzIgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgcmVwbGFjZSAncmMnIHZhcmlhYmxlLCBpdCdzIHZhbHVlIGlzIG5lZWRlZCBvdXRzaWRlIHRoZSBsb29wLgorCitjb21taXQgOTg1ZGZmMmIwODc2ZDk0ODNjNDE0ZmNjZWEzZWY2YmM2M2UxNDU2MQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTU6MDE6MzIgMjAxMiArMDEwMAorCisgICAgUmVtb3ZlZCBkdXBsaWNhdGUgY29kZS4KKworY29tbWl0IDJmZDc4MTgzMThlN2E1ZGZlOThmNTJjY2Y3NTBjMmE2M2U4MjVkZWQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDE1OjAwOjIyIDIwMTIgKzAxMDAKKworICAgIFJlbW92ZWQgZHVwbGljYXRlIGNvZGUuCisKK2NvbW1pdCAxNWYyMTEzMGJhMzNkYzlhZmQxNjRlNTJkZmQ3NGM5Y2VjMGU5MjMyCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxMiAxNDo1ODoxNCAyMDEyICswMTAwCisKKyAgICBSZW1vdmVkIGR1cGxpY2F0ZSBjb2RlLgorCitjb21taXQgMmE4YThmMmFiN2NkNzU4MjZjNWQ0MWVjM2NmZDVjZTNlOTYzNGNmMworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTQ6Mzk6MjggMjAxMiArMDEwMAorCisgICAgcmVtb3ZlIGRlYWQgY29kZSwgJ2NwJyBpcyBhbHdheXMgIT0gTlVMTCBoZXJlLgorCitjb21taXQgMzhmZDYzNzhjYzMyNzUxODBmNjNiOGQ5YjlhNDA3MmIzZGFiZjhlNAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTQ6MjU6MDYgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYSB0eXBvLgorCitjb21taXQgZWJkOTJlMTliMTBjMGEzOGUxN2NkZTQwNzg2NGI0NWMyNmUxNzMyNworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTQ6MDc6NDMgMjAxMiArMDEwMAorCisgICAgUmVtb3ZlZCB1bm5lY2Vzc2FyeSBpZiAodmFsdWUpIGNoZWNrIC0gdmFsdWUgaXMgY2hlY2tlZCBmZXcgbGluZXMgYmVmb3JlLgorCitjb21taXQgYzVjYWNmNWNhZjk3OWQwMThlYTZjYWUxYzAzYjhmZGYwYjExOGRmZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTM6NDQ6NDMgMjAxMiArMDEwMAorCisgICAgUHJldmVudCBkb3VibGUgZnJlZSgpLCAnZGlybmFtZScgaXMgYWxyZWFkeSBmcmVlZCBpbnNpZGUgc2VfYWRkX3BhaXJfdG9fbGlzdCgpIGlmIGl0IGZhaWxzLgorCitjb21taXQgYWNkY2ViNTBlYTY2ZDZiMzIzYzc0ZWUwMjFmYjc3ZTgxMGU0ZTdhZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTM6NDM6MTkgMjAxMiArMDEwMAorCisgICAgUHJldmVudCBtZW1vcnkgbGVhayB3aGVuIG1hbGxvYyBmYWlscy4KKworY29tbWl0IDE3MDUzZTM0Y2ZlOWE4YWIzOTVmYjUwZjVjM2YxZGFmYzcyNDdhZWIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDEzOjMyOjU3IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGRvdWJsZSBmY2xvc2UoKS4KKyAgICBMaW51eCBtYW4gcGFnZSBmb3IgZmNsb3NlKDMpIHNheXM6IEluIGVpdGhlciBjYXNlIGFueSBmdXJ0aGVyIGFjY2VzcyAoaW5jbHVkaW5nIGFub3RoZXIgY2FsbCB0byBmY2xvc2UoKSkgdG8gdGhlIHN0cmVhbSByZXN1bHRzIGluIHVuZGVmaW5lZCBiZWhhdmlvci4KKworY29tbWl0IGE2NjQxZWRiOWNiNzRmYzIyMzZiNDJjZTU1NTRmYzMzMjk5NTY1NTIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTEgMTU6MjI6MzQgMjAxMiArMDEwMAorCisgICAgTWluR1c6IFNraXAgdGVzdCBUMDY1IGlmIG5vdCBzdGFydGVkIGZyb20gaW5zaWRlIGFuIE1TWVMgc2hlbGwKKworY29tbWl0IGE4ODNlZjE5ODJmMzAxYjE0ODVkMjI3MzAxNjc0OTI3MzMwZjViNjcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDExIDE1OjE0OjUzIDIwMTIgKzAxMDAKKworICAgIE1vdmVkIGRlYnVnIG9wdXRwdXQgYmVmb3JlIHJldHVybi4KKworY29tbWl0IDQ1NzUxOTY3Mjg3ZDk3NjQwZWZkY2RmOGU3N2U4ZDQ5MDkzOWQ4ZWIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTEgMTQ6MTc6MTggMjAxMiArMDEwMAorCisgICAgQ29udmVydCBzdHJ0b3VsbCgpIHVuaXQgdGVzdCBpbnRvIGEgTmV0LVNOTVAgdW5pdCB0ZXN0CisKK2NvbW1pdCAyYzJmYTQ4MzM2YTRmMWYxNzdjMjk5MWQ2NTE1ZDI5ZjM5NTMzYzQ0CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDExIDEzOjUwOjQ0IDIwMTIgKzAxMDAKKworICAgIENvbnZlcnQgcmVhZF9jb25maWdfcmVhZF9vY3RldF9zdHJpbmdfY29uc3QoKSB1bml0IHRlc3QgaW50byBhIE5ldC1TTk1QIHVuaXQgdGVzdAorCitjb21taXQgMDdjNjY2ZjZjZWEyN2YyYjJhYjliYzA4YWVkMGNiNjEzM2ZlMzc1OAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTEgMTM6MTc6NDUgMjAxMiArMDEwMAorCisgICAgRml4ZWQgY29tbWl0IDczYTUyM2U0NjgyNzdmNmRmMmU5ODQ4OTEzMTNiOGJlOGJjZTE5MjE6CisgICAgRmlkZXggZGVyZWZlcmVuY2luZyBrZXktPmluZm8gd2hlbiBrZXkgaXMga25vd24gdG8gYmUgTlVMTC4KKworY29tbWl0IDNiNjg2NTY2Mjk2ZGQ4N2JjNDJiN2YxMTY5ZGFhY2RiM2M0NWNjNTgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBPY3QgMTggMDY6MjU6NTYgMjAxMCArMDAwMAorCisgICAgV2luMzI6IGJ1aWxkcyBhZ2FpbiB3aXRob3V0IHdhcm5pbmdzIHdpdGggTVNWQyA2LgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTQ4OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGYzYTdkMWIwOTYwOWRhZDY0OWY1OGJiZGI1YjdlMTBkMzliMzk4YzEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBPY3QgMTcgMTE6MDQ6MDYgMjAxMCArMDAwMAorCisgICAgRm9sbG93LXVwIGZvciByMTk0NzY6IGZpeGVkIGEgdHlwby4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk0NzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAyZGU3M2JkMzY1YTM4MWI5YzM1M2NhNTIzMDc2OWVlZmIxYWM3MWVkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDExIDExOjQyOjQyIDIwMTIgKzAxMDAKKworICAgIGxvY2FsL3Bhc3N0ZXN0OiBSZW1vdmUgYW4gaW5jb3JyZWN0IFBBVEg9IHN0YXRlbWVudAorCitjb21taXQgNjk5NTEzZjEyMzhlMGFkY2UxZjFjZWM5OGUwZDE0NzI5M2ZjNTA0NworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE9jdCAxNyAwOToyNTo1MSAyMDEwICswMDAwCisKKyAgICBORVRTTk1QX1JFTU9WRV9DT05TVCgpLXJlbGF0ZWQgY2xlYW51cC4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk0NzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA2MzU4ZGVlNzJmYjM0N2UyNjAwYTBhN2JkMjFmMjMyNzBkM2EwMGY2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDExIDEwOjU4OjE1IDIwMTIgKzAxMDAKKworICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmM6IEFkZCBhIGNvbW1lbnQKKworY29tbWl0IDUzOTZiZmUwMzJjOGNiYzczYzhmZjVkNGIwODVlYmFkYTlmNTk4NDYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTEgMTA6MzA6MTYgMjAxMiArMDEwMAorCisgICAgUmVwbGFjZSBzdHJuY3B5KCkvc3RybmNhdCgpIGJ5IHN0cmxjcHkoKS9zdHJsY2F0KCkKKworY29tbWl0IGZlYjNhZjI4ZGNhZTIyMDE1YWU4NjVhMmU1ZGQ4YzQxNmU5OTkxZDgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTEgMTA6MDI6MDggMjAxMiArMDEwMAorCisgICAgUmVwbGFjZSBzdHJuY3B5KCkvc3RybmNhdCgpIGJ5IHN0cmxjcHkoKS9zdHJsY2F0KCkKKworY29tbWl0IGI3ZTFhYTI1NWJhZTRhMzQ1M2Y5ZWNhNjQ0YTg3NjYzNDM1MWYxMWQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBNYXIgMjAgMTk6MzY6MjggMjAxMCArMDAwMAorCisgICAgQ0hBTkdFUzogbGlic25tcDogY2hhbmdlZCB0aGUgdHlwZSBvZiB0aGUgZm91cnRoIGFyZ3VtZW50IG9mIG5ldHNubXBfc2V0X3Jvd19jb2x1bW4oKSBmcm9tIGNvbnN0IGNoYXIqIHRvIGNvbnN0IHZvaWQqIHN1Y2ggdGhhdCBubyBjYXN0IGlzIG5lY2Vzc2FyeSB3aGVuIHBhc3NpbmcgYW5vdGhlciBkYXRhdHlwZSB0aGVuIGNoYXIqIG9yIGNvbnN0IGNoYXIqLgorICAgIENIQU5HRVM6IFdpbjMyOiBjaGFuZ2VkIGluX2FkZHJfdCBmcm9tIHVfaW50IHRvIHVfbG9uZyBzdWNoIHRoYXQgaXQgbWF0Y2hlcyB0aGUgZGF0YXR5cGUgb2Ygc29ja2FkZHJfaW46OnNpbl9hZGRyLgorICAgIEFsc28sIGZpeGVkIHNldmVyYWwgY29tcGlsZXIgd2FybmluZ3MgKG1vc3RseSBjaGFyICogPD4gdV9jaGFyICogbWlzbWF0Y2hlcykgYW5kIHJlbW92ZWQgc29tZSBjYXN0cy4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxODM0NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICAKKyAgICBDb25mbGljdHM6CisgICAgCWFnZW50L2FnZW50X3JlZ2lzdHJ5LmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5jCisgICAgCWFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYworICAgIAlhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmMKKyAgICAJYXBwcy9zbm1wdHJhcGQuYworICAgIAlzbm1wbGliL3NubXBJUHY2QmFzZURvbWFpbi5jCisgICAgCXNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYworICAgIAlzbm1wbGliL3N5c3RlbS5jCisKK2NvbW1pdCBmNDdhMzc1Mjg0OWRiMDc1ZTZmMjA1M2I4NTk1YjdiNzkyZmI2NDYyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgT2N0IDE1IDEwOjU2OjA5IDIwMTAgKzAwMDAKKworICAgIENIQU5HRVM6IFdpbjMyOiBidWlsZGluZzogQnVpbGRzIG5vdyBjb3JyZWN0bHkgd2l0aCBhIDY0LWJpdCBjb21waWxlci4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTQ1OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDAyYjYwNTZkZjk1ZGE4YjY3MzAzNGUzOWMyYzdjMzg2ZWQwZjM2OWMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTE6NDQ6NTMgMjAxMiArMDEwMAorCisgICAgRml4IGEgY29tcGlsZXIgd2FybmluZyBhYm91dCBjYXN0aW5nIGF3YXkgY29uc3QKKworY29tbWl0IGExOTg2NTgzMmZjNzdmNGMwNDgxNDRkOTFhNDMxYjFlOTRkMzI5ZjIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgT2N0IDE0IDIzOjEyOjA1IDIwMDkgKzAwMDAKKworICAgIENIQU5HRVM6IGFwcHMsIHNubXBsaWI6IFBBVENIOiAyODM1NTc3OiBpZGVudGlmaWVkIGJ5ICJCYXJ0IFZhbiBBc3NjaGUiOiBSZXBsYWNlIFNOTVBfWkVSTyBvZiBhcnJheXMgd2l0aCBhIG1lbXNldC4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxNzc5NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDY3YTNlMmVjY2I5NWY5YzlkMDgwOWVmY2JkZGNkODY2ZWUzMDYyZDUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNiAxNDoyNzoxNSAyMDEwICswMDAwCisKKyAgICBGaXhlZCBhIGNvbXBpbGVyIHdhcm5pbmcgYWJvdXQgZGlzY2FyZGluZyB0aGUgY29uc3QgcXVhbGlmaWVyLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE3OTcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgM2RjZGUyZThhNTk1YTUyN2YwNjE0MmMzYjg1MmRlODQzM2ExY2YyOAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBKYW4gMjQgMTQ6Mjc6NTUgMjAxMCArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUHJldmVudCBnY2MgcGVkLXdhcm5pbmcgZm9yIE5FVFNOTVBfUkVNT1ZFX0NPTlNUCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTgwNTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBjMmUxNTI1YTg1YmRhNTI5OWEzYjlmMjQxNjE0ZjdlNjUwOWFlZWJhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDYgMTM6MzU6MTEgMjAxMCArMDAwMAorCisgICAgQmFja3BvcnQgY29tbWl0IDI5NWY0NzNjODM1NDYyMjFiMmE3MWQ4MTVjNjFlMzNhNjdmOThhZTM6IHJlZmluZSBORVRTTk1QX1JFTU9WRV9DT05TVCgpIGltcGxlbWVudGF0aW9uLgorCitjb21taXQgY2I0MjNiMGFlOWVkMDA1OWFhMTAwZGM0ZTJmZDkzYWQxYjk3ZmFmOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA2IDExOjU3OjUxIDIwMTAgKzAwMDAKKworICAgIEJhY2twb3J0IGNvbW1pdCBlMmZiMDllMDA5M2UyZjY0OGZlMjYzOGRhMmYzYWYxOGZkYjMyYmYwIC0gaW50cm9kdWNlIE5FVFNOTVBfUkVNT1ZFX0NPTlNUKCkuCisgICAgCisgICAgQ29uZmxpY3RzOgorICAgIAlhZ2VudC9zbm1wX3BlcmwuYworICAgIAlzbm1wbGliL3NubXBfc2VydmljZS5jCisKK2NvbW1pdCBhZmMzOTZhYjE2MThhODU5NWEyNTE5ZmJjMjVmN2E0OThlMTc0NDExCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDExIDA4OjQ5OjM0IDIwMTIgKzAxMDAKKworICAgIFVuYnJlYWsgbmV0c25tcF9ta3RlbXAoKSBhbmQgbWFrZV90ZW1wKCkuCisgICAgCisgICAgVGhlc2Ugd2VyZSBicm9rZW4gYnkgY29tbWl0IGJiOGZjYmI4NzQ5OTgwMDBmOTQ1ZjA1OGQxYWE2ZmUxNGU5MjU4OTkuCisgICAgQWxzbyByZXBsYWNlIGEgc3RybmNweSgpIGNhbGwgYnkgYSBjYWxsIHRvIHN0cmxjcHkoKSBhbmQgcmVwbGFjZSB0aGUKKyAgICBtYWtlX3RlbXBmaWxlKCkgaW1wbGVtZW50YXRpb24gYnkgYSBjYWxsIHRvIG5ldHNubXBfbWt0ZW1wKCkuCisKK2NvbW1pdCAyMTAxODVjMTVkMGQ2NWYwZWE5OGI1ZTNjMmUwNzc2ZjYyMjJkMTcwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDExIDA4OjI3OjQzIDIwMTIgKzAxMDAKKworICAgIEZpeCBhIGNyYXNoIGR1cmluZyBzdGFydHVwIG9mIHNubXBkIGludHJvZHVjZWQgYnkgY29tbWl0IDg4NTA2MTY4N2Q5Y2FhMzg0NzA5Nzk2NjdkN2Q4YWQ2NTYzY2VkYWQuCisgICAgCisgICAgQWxzbywgbWFrZSBzdXJlIHRoZXJlIGlzIG9ubHkgYSBzaW5nbGUgY29weSBvZiB0aGUgY2xlYW51cCBjb2RlIGluIGZ1bmN0aW9uCisgICAgbWtkaXJoaWVyKCkuCisKK2NvbW1pdCA4YmI0ZTg2YWJjZjk4ZmYyODc0OGFmMGFmODljOThlNjRkNWNkOTYxCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBXZWQgSmFuIDExIDA3OjQ3OjEyIDIwMTIgKzAxMDAKKworICAgIFJlZHVjZSB0aGUgc2NvcGUgb2YgdGhlIG9sZG1hc2sgdmFyaWFibGUuCisKK2NvbW1pdCA2NjgwMTQ3YjEzOGVjMTE0ZjgxYzVkMTI4YWM5MzUwYzg0NTBkMDgxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgSmFuIDEwIDE4OjQ0OjMxIDIwMTIgKzAwMDAKKworICAgIE1ha2UgdGVzdCBUMDE1aW50NjRfY2xpYiBwYXNzIG9uIDY0LWJpdCBzeXN0ZW1zCisKK2NvbW1pdCAzYWFkMTVhZTU2MGFjODU3ZTczYzkwNzY0ZTkwM2U3Y2EwMmIzMjk1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNTo0MDo1OSAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgZm9yIGxhcmdlIE9JRCBuYW1lcworCitjb21taXQgZmJhMTg4ZWU4MjAxMGIyZjJkOGNhMmU0MjZiYTY1NDQ5OWFiM2QwYQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTU6MzE6MzMgMjAxMiArMDEwMAorCisgICAgZml4ZWQgYnVmZmVyIG92ZXJmbG93IGluIF9fY29uY2F0X29pZF9zdHIKKworY29tbWl0IDIxZDI1ZDg2YjhlNDkwNGQ3OThkYzhjOTZkYWRlOWU1MDQ4NDU3YTgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE1OjI2OjA3IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIHBhcnNpbmcgcG9ydCBudW1iZXJzLgorCitjb21taXQgZDM2OTMxODQxYjJmYzJjZWJjNjM2NGIyOTQ5MTI5YTBhZDQyYWQxZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTU6MDU6NTEgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYSBidWZmZXIgb3ZlcmZsb3cgd2hlbiBsYXJnZSBTdW1GaWxlIGlzIHVzZWQuCisKK2NvbW1pdCAwZWZkZDAyMmRhMDlhZjFiNWUxNjE3MWZhN2EyYjUyM2M1ZDZlYzU5CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNTowMTo1MyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgd2hlbiB0b28gYmlnIHRlbXAgZmlsZSBwYXR0ZXJuIGlzIHVzZWQuCisKK2NvbW1pdCA1NjBiYzZjMDliNzUxNTU2ZWZkNmI0YzQ0OTU3NTFiMTA5YTkzZjkyCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNDo1OToyNCAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3csIGp1c3QgdG8gYmUgc3VyZS4KKworY29tbWl0IDgyOTFkN2M1YjkyYTMxZGQ0ZjU4MmI0OTdkNGIyYTA4NTMzNjdhNTYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjU1OjE2IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdy4KKworY29tbWl0IDg4ZTFmMzRkZTczMDA1NzVmYTZkYWI4NTdlY2RkYjI0MmE4N2RlODAKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjQ4OjU1IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIHRvbyBsb25nIGludGVyZmFjZSBuYW1lcyBhcmUgdXNlZC4KKworY29tbWl0IGJlMTM3NWE5OTI2ZWJlMGNkNWI3OGE0MDQ1YzNiZDExYzgzNjY0YjEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjQ2OjQ5IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIGEgc2Vuc29yIG5hbWUgaXMgdG9vIGxvbmcuCisKK2NvbW1pdCAxY2IyNDYyNTM3MjA2MmIxNGM3MWQ3ZGQ1MWUyMGZlZjc3M2UyNzQzCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNDo0MTowMCAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgd2hlbiBhIENQVSBoYXMgdG9vIGxvbmcgbmFtZS4KKworY29tbWl0IDg0YzgwN2VlMDMyNTFlNTQ4NTZlODNkNjJkMDZlYTA4YjhkZjUyN2EKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjM2OjUwIDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIHRvbyBsb25nIGludGVyZmFjZSBuYW1lcyBhcmUgdXNlZC4KKworY29tbWl0IGMzMTBlMzkwYjVkZDA1ZjI0YmU3ZWIxOTA0Yzc0ZTQxMjU5YzkzZGIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjI0OjU0IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIHRvbyBiaWcgdGVtcCBmaWxlIHBhdHRlcm4gaXMgdXNlZC4KKworY29tbWl0IDQ2MDBkMTE0MzRlODNiODY1M2NmOWY4MTNhM2Q4YjYzMDQ1NWI0MmQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjE3OjA4IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIHBsYXVzaWJsZSBzdHJpbmcgb3ZlcmZsb3cgYmVmb3JlIHBhcnNpbmcgY29tbWFuZCBsaW5lIG9wdGlvbnMuCisKK2NvbW1pdCA4ODUwNjE2ODdkOWNhYTM4NDcwOTc5NjY3ZDdkOGFkNjU2M2NlZGFkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNDoxMTowMiAyMDEyICswMTAwCisKKyAgICBHZXQgcmlkIG9mIChpbnNlY3VyZSkgU05NUF9NQVhQQVRIIGluIG1rZGlyaGllcigpCisKK2NvbW1pdCA4MDE2ODkwYTQ0NWY2YTdlMmE4NzNhMDQ4NzNkNGUyN2I2ZWU2NGUzCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxMzo0ODozNCAyMDEyICswMTAwCisKKyAgICBGaXhlZCB3cm9uZyBpbnRlZ2VyIHNpemUgb24gNjQgYml0IHBsYXRmb3JtLgorCitjb21taXQgYmI4ZmNiYjg3NDk5ODAwMGY5NDVmMDU4ZDFhYTZmZTE0ZTkyNTg5OQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTM6MzE6MzYgMjAxMiArMDEwMAorCisgICAgU2VjdXJlIG1rc3RlbXAoKSB3aXRoIHVtYXNrKCkgLSBvbiBzb21lIGltcGxlbWVudGF0aW9ucyBpdCBkb2VzIG5vdCBzZXQgMDYwMCBwZXJtaXNzaW9ucyBhdXRvbWF0aWNhbGx5LgorCitjb21taXQgMjAyNTIzY2E3MDRiZDcyMmRjMWFjMGUxZTZiMGU0YjRlNTQyNDQ5NQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTM6MTE6NTcgMjAxMiArMDEwMAorCisgICAgRml4ZWQgZGVyZWZlcmVuY2luZyAnYycgYmVmb3JlIE5VTEwgY2hlY2suCisKK2NvbW1pdCA3M2E1MjNlNDY4Mjc3ZjZkZjJlOTg0ODkxMzEzYjhiZThiY2UxOTIxCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxMzowODoyNCAyMDEyICswMTAwCisKKyAgICBGaXhlZCBkZXJlZmVyZW5jaW5nIGtleS0+aW5mbyB3aGVuIGtleSBpcyBrbm93biB0byBiZSBOVUxMLgorCitjb21taXQgMmY0ZTZhY2Q3MTQxODNmMDE1Yjc2MzY1N2Y4ZjA4NDU5MzM1N2UyNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEphbiAxMCAxMDozODoxNiAyMDEyICswMTAwCisKKyAgICAuZ2l0aWdub3JlOiBJZ25vcmUgcGVybC8qLnltbCBmaWxlcworCitjb21taXQgYzM2NWQ4MGMxNmMyZDE3YjE2MDAxMWU4YzFmOWNiOTU4OTU0ZTlkYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEphbiAxMCAwODozNDoxNiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IERvIG5vdCBpbnZva2Ugc2h1dGRvd25fcGVybCgpIGZyb20gaW5zaWRlIHRoZSBTSUdURVJNIGhhbmRsZXIgc2luY2UgdGhhdCBmYWlscyBpZiBTSUdURVJNIGlzIHJlY2VpdmVkIHdoaWxlIGEgUGVybCBoYW5kbGVyIGlzIGFjdGl2ZS4gQmFzZWQgb24gYSBwYXRjaCBwb3N0ZWQgYnkgSm9lbCBBdm5pIDxqYXZuaUBhcnViYW5ldHdvcmtzLmNvbT4KKworY29tbWl0IGQwNTlmYjg3OGIxNDM2NTk5OTUzY2VhNWEwNzc0OTlkZGNkY2JjYjUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAxNzowMzo1NSAyMDEyICswMDAwCisKKyAgICBDSEFOR0VTOiBCVUc6IDM0NDA3NTI6IElGLU1JQjogUmVwb3J0IGludGVyZmFjZSBzcGVlZCBjb3JyZWN0bHkgZm9yIEV0aGVybmV0IGludGVyZmFjZXMgaWYgb3RoZXIgdGhhbiAxMCBNYnBzLCAxMDAgTWJwcywgMSBHYnBzLCAyLjUgR2JwcyBvciAxMCBHYnBzLiBBZGQgc3VwcG9ydCBmb3IgTklDcyBmYXN0ZXIgdGhhbiA2NSBHYnBzLgorCitjb21taXQgYzA5OTAzYTQyZTlkOTczMzFmZDllNDhlZTgzMWE4NWFmZGY5YzcwYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEphbiA5IDEzOjI2OjE3IDIwMTIgKzAxMDAKKworICAgIERveHlnZW4tc3R5bGUgZG9jdW1lbnRhdGlvbiBmaXhlcworCitjb21taXQgZTMyNWVjYmZjZTc3ZjAwYWM1Y2Y2ZmJkOTU3Zjk1NDk1ZjYxYzU5YgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEphbiA5IDEzOjI1OjEwIDIwMTIgKzAxMDAKKworICAgIFN1cHByZXNzIHVuaW50ZXJlc3RpbmcgRG94eWdlbiB3YXJuaW5ncworCitjb21taXQgYmU5MTYxZDNhNTg5OGU4NjM3NjdmOTI2NjEzNDg2MTI2YzJjYmY2NworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDEyOjM1OjM5IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFNpbXBsaWZ5IGltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBtYW5pcHVsYXRpbmcgNjQtYml0IG51bWJlcnMuCisKK2NvbW1pdCA4NmU0YzJiZTA4NTJhMGExM2IwNjAzMDc1NzIwYjMyNjRlYzcwZGRlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMTI6Mjk6MTEgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogTWFrZSBpdCBleHBsaWNpdCB0aGF0IE1BWF9TVUJJRCBpcyBhbiB1bnNpZ25lZCBjb25zdGFudAorCitjb21taXQgMzdlMjcyZDhmN2I3MTgwYmExNDBmYTM4NmE1ZmYwNTg5NjhhMDhhMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDE4OjIxOjQ4IDIwMTIgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBJRi1NSUI6OmlmVHlwZTogUmVwb3J0IHR5cGUgImluZmluaWJhbmQgKDE5OSkiIGZvciBJbmZpbmlCYW5kIGludGVyZmFjZXMgaW5zdGVhZCBvZiB0eXBlICJvdGhlciAoMSkiLgorCitjb21taXQgMjY5OTMyZmEzMmM3Y2Q0Nzk1NzQ4OTY5OGUwOWJlZTMxZjYzYjdhZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDE0OjM0OjQyIDIwMTIgKzAxMDAKKworICAgIEZpeCBhbiBNU1ZDIGNvbXBpbGVyIHdhcm5pbmcKKworY29tbWl0IDBkMWMyMWY5OTkxZDEzMDlkMDU3ZTNlNDA1NmQ1NDdkZjdkNDBlY2YKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAxNjowNjozMSAyMDEyICswMTAwCisKKyAgICBNYWtlIGRlY2xhcmF0aW9uIGFuZCBkZWZpbml0aW9uIG9mIHN0cmxjYXQoKSBjb25zaXN0ZW50LgorCitjb21taXQgMGMzZDRkYmIwYTljZjViMzU5ZjcwYjJmMTk5MTU0OTU1NTRmODQwZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDE1OjIzOjE2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IFdpbjMyOiBzbm1wZDogUmVtb3ZlIGRsbW9kCisKK2NvbW1pdCA4OTNlY2M5N2I1ODc2NjEwNDViZWNiZTA5YTMyMGMxYmNiYzcxYzdjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMTQ6MzY6NTkgMjAxMiArMDEwMAorCisgICAgQWRkIHN0cmxjYXQoKSB0byB0aGUgTVNWQyBidWlsZCBpbmZyYXN0cnVjdHVyZS4KKworY29tbWl0IDNkMTI2NDIyZTYyNTcwMmI5ZDNmYTA2NzZhOTdlYzVjYjIwZDlkMTAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAxNTowMTowNiAyMDEyICswMTAwCisKKyAgICBNYWtlIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oIGNvbnNpc3RlbnQgd2l0aCBpdHMgLmluIGZpbGUKKworY29tbWl0IGFmNTNiNzZjMmZmYTc1MWUzOTU4ZDBmYzVkODI3OWY3OGMyYzFjMjYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAxNDo0Mzo1NSAyMDEyICswMTAwCisKKyAgICBTa2lwIFQwNjZwYXNzX3NpbXBsZSBhbmQgVDA2N3Bhc3NwZXJzaXN0X3NpbXBsZSBvbiBNaW5HVworCitjb21taXQgMzVhOTJlNjkzZDEzM2E1YjExZTllOWI1OTlkYmY0N2VkZWY0OTMzYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDA4OjE2OjM2IDIwMTIgKzAxMDAKKworICAgIFJlbW92ZSBzbm1wbGliL3NubXBEVExTVURQRG9tYWluLmMgYWdhaW4sIHdoaWNoIHdhcyBhZGRlZCBhY2NpZGVudGFsbHkgd2hpbGUgcmVzb2x2aW5nIG1lcmdlIGNvbmZsaWN0cyAoY29tbWl0IDFkNzhmN2Q1YjU4YWVkMmI1MmM0ZDM4NmE3YmE4MGE0NDcxMWJhY2EpCisKK2NvbW1pdCBhOWIwNzNlYTNiNmNlZGY3MTNlMzA1ZTdiMTVmMjhhZTU3YmZkZjFiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSmFuIDUgMTc6NDc6MTEgMjAxMiArMDAwMAorCisgICAgRml4IDY0LWJpdCBjb21waWxlciB3YXJuaW5ncworCitjb21taXQgN2U4OTBkYWQ5NWY1NjYwNjllZTI4MDIxNWE0ZmVhM2YwZTJlMzk4MAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiA1IDE2OjM4OjUwIDIwMTIgKzAxMDAKKworICAgIEF2b2lkIGEgU0lHU0VHViBpZiBjcCA9PSBOVUxMLiBUaGlzIGlzIGEgZm9sbG93LXVwIGZvciBjb21taXQgMDg5YmNiMzYwYWEyNjc5MGFkMmE4Y2VkZGY1ODNiN2JhNWRkZmQ0OC4KKworY29tbWl0IDFmNjIwMGNmZTFiMGIyN2ViYjA5M2ExNjA2YjU5MmY5ZTk2ODRiZTgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBKYW4gNSAxNTo1MzozNCAyMDEyICswMTAwCisKKyAgICBDb252ZXJ0IHN0cm5jcHkoKSBjYWxscyBpbnRyb2R1Y2VkIGluIHY1LjYKKworY29tbWl0IGMzMTI2YjE0MzkyMWZhYmVhYzQ0MjE2NmVjYTViNWI3NDJmZDQyYzAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBKYW4gNSAxNTowMjozOSAyMDEyICswMTAwCisKKyAgICBSZXBsYWNlIG1vc3Qgc3RybmNweSgpIGNhbGxzIGludHJvZHVjZWQgaW4gdjUuNQorCitjb21taXQgYjI0ZWU3YzkwOTY1N2RiNDNiZDhjNWQ4YzAxMDU1Y2EwODgzYzljZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDA4OjQwOjM5IDIwMTIgKzAxMDAKKworICAgIEVsaW1pbmF0ZSBtb3N0IHN0cm5jcHkoKSBhbmQgc3RybmNhdCgpIGNhbGxzCisgICAgCisgICAgVXNpbmcgc3RybmNweSgpIGFuZCBzdHJuY2F0KCkgaXMgZXJyb3IgcHJvbmUgLS0gc2VlIGFsc28KKyAgICBodHRwOi8vd3d3LmdyYXRpc29mdC51cy90b2RkL3BhcGVycy9zdHJsY3B5Lmh0bWwuIEhlbmNlIHJlcGxhY2UKKyAgICBhbGwgaW52b2NhdGlvbnMgb2Ygc3RybmNweSgpIGFuZCBzdHJuY2F0KCkuIFJlcGxhY2UKKyAgICBzdHJuY3B5KGRzdCwgc3JjLCBuKSBjYWxscyBieToKKyAgICAqIHN0cmxjcHkoZHN0LCBzcmMsIG4pIGlmIHRoZSBnb2FsIHdhcyB0byBhdm9pZCBvdXRwdXQgYnVmZmVyIG92ZXJmbG93LgorICAgICogc3ByaW50Zihkc3QsICIlLipzIiwgbiwgc3JjKSB0byBjb3B5IGEgcHJlZml4IG9mIHNyYyB0byBkc3Qgb3IgaWYgc3JjIGlzCisgICAgICAgIG5vdCAnXDAnLXRlcm1pbmF0ZWQuCisgICAgKiBtZW1jcHkoZHN0LCBzcmMsIG4pIGlmIHN0cmxlbihzcmMpID49IG4gYW5kIG4gPCBzaXplIG9mIGRzdC4KKyAgICAqIHN0cmNweShkc3QsIHNyYykgaWYgbiA+IHN0cmxlbihzcmMpIGFuZCBuIDwgc2l6ZSBvZiBkc3QuCisKK2NvbW1pdCA2ZDk1YmM0MTQ5NDcyOTMxMDA1NDc1YzMwYTU0MWZlZDU1MzRkYTM5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSmFuIDUgMTE6MTk6MTYgMjAxMiArMDEwMAorCisgICAgRml4IHdhcm5pbmdzIHRyaWdnZXJlZCBkdXJpbmcgY29tcGlsYXRpb24gb2YgdGhlIFBlcmwgeHMgc291cmNlIGZpbGVzCisKK2NvbW1pdCBiYWQwNjAwZjZlYzk0NGVmODQ1NWUzMjdjZTc4NGI5YjA3ZDI0N2M5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSmFuIDUgMTA6MDA6MTMgMjAxMiArMDEwMAorCisgICAgQWRkIGNvbmZpZ3VyZSB0ZXN0IGZvciBzb2NrYWRkcl91bi5zdW5fcGF0aCBzdWNoIHRoYXQgdGhlIGNvbTJzZWMgdGVzdCBpcyBydW4KKworY29tbWl0IDkyYTMyYWM0ODY2YTVlZGM3ZjM0N2QzNzk0MmJmMDI4ZGUwMjc2MmYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBKYW4gNSAxMDowMDoyOSAyMDEyICswMTAwCisKKyAgICBHZXQgcmlkIG9mIGEgY29tcGlsZXIgd2FybmluZworCitjb21taXQgODNlNGMwZTMwNGY2MTdjY2FjNjYxMGVkZDc0ZDE3MDY3OTdiYmY1MgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiA1IDA5OjE1OjM3IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IEFkZCBhIHRlc3QgZm9yIHNlX3N0b3JlX2xpc3QoKQorCitjb21taXQgNGZhZTU4NTIxMDNlYzM4OTNhZDQ4OGJjMGQ5MDVjYTY5MTQ1OTVlZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiA1IDA5OjE3OjE1IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFNpbXBsaWZ5IHRoZSBzZV9zdG9yZV9lbnVtX2xpc3QoKSBpbXBsZW1lbnRhdGlvbgorCitjb21taXQgYjMyMjJiYjI3NWYyZjIzNDZlMGZkMDQ3OGFmYTJlZmI2MDA3NzNlNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiA1IDA5OjE2OjQ1IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IERlY2xhcmUgInR5cGUiIGFyZ3VtZW50IG9mIHNlX3N0b3JlX2xpc3QoKSAvIHNlX3N0b3JlX3NsaXN0KCkgLyBzZV9zdG9yZV9lbnVtX2xpc3QoKSBjb25zdAorCitjb21taXQgMDIyZjg0MGZiZmNiMGUyNmIwOGYwZTU1NzI4MjMxZjYxMTQ5NTgwMworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDE5OjU1OjU2IDIwMTIgKzAwMDAKKworICAgIEF2b2lkIHRoYXQgVmFsZ3JpbmQgY29tcGxhaW5zIGFib3V0IHNlbmRpbmcgVURQIGRhdGEKKworY29tbWl0IDY3MmE4MDljMjI4ZTk1NTBiOTliODkxMGJlNzVkMGIxNjE5ODU0MDIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAxNzozMzowOSAyMDEyICswMDAwCisKKyAgICBGaXggYSA2NC1iaXQgY29tcGlsZXIgd2FybmluZworCitjb21taXQgMjRmZjI2MGFkODljZTJhYTM2MWE1NWM3YzcyZTkxNjAzMWRlZmUzNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDE3OjExOjI0IDIwMTIgKzAxMDAKKworICAgIENoYW5nZSB0aGUgdHlwZSBvZiB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIHNubXBfc2V0X3Zhcl92YWx1ZSgpIGFuZCBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUoKSBmcm9tIHVfY2hhciogdG8gdm9pZCosIGxpa2Ugb24gbW9yZSByZWNlbnQgYnJhbmNoZXMKKworY29tbWl0IGM2Y2E3MzdmYjQ2ZjkwYTRiZGE1ZDQzNzM0YWFjMzRlODM3YTA1ZjQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBNYXIgMTMgMTk6MDc6MzcgMjAxMCArMDAwMAorCisgICAgQmFja3BvcnQgY29tbWl0IGY1MDRjZTJkNzRhNGJjODhmNjhjYzk1MTVmYTcwNTMzNzNjYjE1YjUuCisgICAgKEZpeGVkIG1vc3QgY29tcGlsZXIgd2FybmluZ3MgdHJpZ2dlcmVkIGJ5IHRoZSBzb3VyY2UgY29kZSBpbiB0aGUgcGVybCBzdWJkaXJlY3RvcnkuIE5vdGU6IHRoZXNlIGNoYW5nZXMgbWF5IGNvbnRhaW4gc29tZSByZWFsIGJ1ZyBmaXhlcy4pCisgICAgCisgICAgQ29uZmxpY3RzOgorICAgIAorICAgIAlwZXJsL0FTTi9BU04ueHMKKyAgICAJcGVybC9PSUQvT0lELnhzCisgICAgCXBlcmwvU05NUC9TTk1QLnhzCisgICAgCXBlcmwvYWdlbnQvYWdlbnQueHMKKworY29tbWl0IGQyMTJkYzk4NGVjMzRlNGQyMzA2MjVlNDZlNThiMGM2MjhhNTBkZjUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAxNjo0Njo0OSAyMDEyICswMTAwCisKKyAgICBTTk1QLnhzIGNvbXBpbGVyIHdhcm5pbmcgZml4ZXMKKworY29tbWl0IGJhY2VlYmIxMGQ4Y2FmNWRiNjNjYzM2OTM1ZmVkNjVlZTkzMTAyOWQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAxNjoyMjo0NCAyMDEyICswMTAwCisKKyAgICBBZGQgZGVjbGFyYXRpb24gZm9yIHNodXRkb3duX3NubXBOb3RpZnlUYWJsZSgpCisKK2NvbW1pdCBmN2Y5NjZhYmQ2ZDI4NDliMTMzMTI1MmFmZTVjNDczZTVjNDBiMzJkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDQgMTQ6MjQ6MzMgMjAxMiArMDEwMAorCisgICAgRml4IGZvcm1hdCBzcGVjaWZpY2F0aW9uIG1pc21hdGNoZXMuCisKK2NvbW1pdCAzMDNjMDE1YmNmZTlhZjBiMTU0ZTk4ODFjN2I0ZjQ0OWUwOGYzMGJiCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTWF5IDYgMjI6MDY6MjMgMjAwOSArMDAwMAorCisgICAgQmFja3BvcnQgY29tbWl0IGQzZWIyYjVjZWQyMmE4NDgwMDUzY2U0M2FjZjk3Mzk3MjkwNTU0MDQKKyAgICAoU3ByaW5rbGUgc29tZSBjb25zdC1uZXNzIHdoZXJlIHJlbGV2YW50IC8gZml4IGZvcm1hdCBzdHJpbmcgbWlzbWF0Y2hlcywKKyAgICBOaWVscyBCYWdnZXNlbiwgTWF5IDIwMDkpCisgICAgCisgICAgQ29uZmxpY3RzOgorICAgIAorICAgIAlhZ2VudC9hZ2VudF9zeXNPUlRhYmxlLmMKKyAgICAJYWdlbnQvaGVscGVycy9pbnN0YW5jZS5jCisgICAgCWFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQ29uZi5jCisgICAgCWluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAorICAgIAlpbmNsdWRlL25ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaAorCitjb21taXQgZDk1YjQwNDA2OTE2YmRhNWI0OGI1YTYxMzFiZWMyN2I4NjZiMGE3OQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE1heSA2IDIxOjU5OjIwIDIwMDkgKzAwMDAKKworICAgIEJhY2twb3J0IGEyYTczMTZjMzEwZjBmY2MzNzI4NjczZmEwNDcwNTFjMjNiNzE5NjAKKyAgICAoVHJpdmlhbCB3YXJuaW5nIGZpeGVzLCBOaWVscyBCYWdnZXNlbiwgTWF5IDIwMDkpLgorICAgIAorICAgIENvbmZsaWN0czoKKyAgICAKKyAgICAJYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9saW51eC5jCisgICAgCWFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYworICAgIAlhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5jCisgICAgCWFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19saW51eC5jCisgICAgCWFnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYworICAgIAlhZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9nbWF0Y2guYworICAgIAlhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5jCisgICAgCWFnZW50L3NubXBkLmMKKyAgICAJc25tcGxpYi9jb250YWluZXJfbGlzdF9zc2xsLmMKKworY29tbWl0IGQ4NmM0N2YwMDNmZGMxOTJiY2U3YjQ2YWM0ZjA2YjA5ZTM4N2MxMmIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDQgMTM6Mjk6MDggMjAxMiArMDEwMAorCisgICAgRml4ZWQgYSB0eXBvCisKK2NvbW1pdCBiZWU0ZDc5Y2Y0ZWI3ZTBhNDUzOTdmNTliNTI5OGRhNjMzYThlMWJhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA0IDEzOjE0OjU3IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIHJlYWRpbmcgcGFzdCBlbmQgb2YgYnVmZmVyLgorCitjb21taXQgM2RjMGUwMGEyZmQ4ZTM0ZmUxYWUzM2VjYWJmMzZlMTQ2NDYwYTMxZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNCAxMjo0MDowNyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgd2hlbiBsYXJnZSAndG9rZW4nIGlzIHVzZWQuCisKK2NvbW1pdCBiM2M0OTgyNTQyZTBhYjE1MWZiMzg4NDc1NGNkZmJjYjQ3MmRhNTJkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA0IDEyOjI4OjUyIDIwMTIgKzAxMDAKKworICAgIEZpeGVkIG9mZi1ieS1vbmUgbWVtc2V0LgorCitjb21taXQgMGY1MzY5NTA0NGRkM2YwYzM1MDc3NTNlM2Y4YzI5ZDk3ZTk2ODcyZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEF1ZyAzIDIxOjM4OjI2IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWIsIHNubXBkLCBwZXJsOiBFbGltaW5hdGUgZGVhZCB2YXJpYWJsZXMKKyAgICAKKyAgICBDb25mbGljdHM6CisgICAgCisgICAgCWFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYworICAgIAlhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0c19saW51eC5jCisgICAgCWFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYworICAgIAlhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcm9jZnNfc3RhdHVzLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2xpbnV4LmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZGF0YV9hY2Nlc3MvZXRoZXJzdGF0c19saW51eC5jCisgICAgCWFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYworICAgIAlhcHBzL3NubXB0bHMuYworICAgIAlhcHBzL3NubXB0cmFwZF9sb2cuYworICAgIAlzbm1wbGliL2Rpcl91dGlscy5jCisgICAgCXNubXBsaWIvc25tcF9jbGllbnQuYworICAgIAlzbm1wbGliL3NubXBfb3BlbnNzbC5jCisgICAgCXNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmMKKworY29tbWl0IDAxNTM4MDVjOTliOTE5NzM2NTkzNWM1ZDExYWU5YzNkNGJmYWEwZjMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAwOTo0ODo0MSAyMDEyICswMTAwCisKKyAgICBGaXggYSBzZXQtYnV0LW5vdC11c2VkIHdhcm5pbmcKKworY29tbWl0IDNmODg4NWZiZWU5NDA3NzQ4ZmMyZjA1NzM3MjhhMTFiYTJiYzAyM2EKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXByIDI4IDA1OjUxOjEzIDIwMDkgKzAwMDAKKworICAgIFJldHVybiBhIHZhbHVlIGZyb20gc3ByaW50X3JlYWxsb2NfdmFsdWUgZXZlbiBpZiBubyBzdWJ0cmVlIGlzIGxvY2F0ZWQuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTc1NzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBiMWVhYWYzMDIzNjlmZDQ1NTJlOGZlZTdiNmE4MDUwOTFlYzBhOWI0CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA0IDExOjM4OjUxIDIwMTIgKzAxMDAKKworICAgIEFkZGVkIGNoZWNrIG9mIGZpbmRfc2VjX21vZCgpIHJldHVybiB2YWx1ZS4KKworY29tbWl0IGFlZTRlODk1ZmUzYmQ1ZjRhNjFlMzQyNzViZmNhMDM2OGI1NjA1NTUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDQgMTE6MzE6MjIgMjAxMiArMDEwMAorCisgICAgQWRkZWQgY2hlY2sgb2Ygc25tcF9zZXNzX3RyYW5zcG9ydCgpIHJldHVybiB2YWx1ZS4KKworY29tbWl0IDVkMWQwYTc0NGFiMzBjOGU2NDVjM2I4NTA2Y2JiZDJjY2ViM2QyNzUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDQgMTE6MDQ6NDggMjAxMiArMDEwMAorCisgICAgQWRkZWQgY2hlY2sgb2YgbmV0c25tcF9leHRyYWN0X2l0ZXJhdG9yX2NvbnRleHQoKSByZXR1cm4gdmFsdWUuCisKK2NvbW1pdCAyOTllYTlhODljM2YxNzU4YTc3NDhiYjliMzQxMWY2MmYyYzcwZjg4CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA0IDEwOjU0OjU1IDIwMTIgKzAxMDAKKworICAgIEFkZGVkIGNoZWNrIG9mIGZvcGVuKCkgcmV0dXJuIHZhbHVlLCBqdXN0IGluIGNhc2Ugb2Ygc29tZSByYWNlLgorCitjb21taXQgOTBmMWFlNjc1NzkxNzQ4MTYzNmVlZjc3MTAwY2FlZWI1M2VkZmUwMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEphbiAzIDEwOjA2OjU2IDIwMTIgKzAxMDAKKworICAgIEFkZCBzdHJsY2F0LmMuIFNvdXJjZTogaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9jZ2kvY3Zzd2ViLmNnaS9zcmMvbGliL2xpYmMvc3RyaW5nL3N0cmxjYXQuYy4KKworY29tbWl0IDA4OWJjYjM2MGFhMjY3OTBhZDJhOGNlZGRmNTgzYjdiYTVkZGZkNDgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDQgMTA6NTA6NTYgMjAxMiArMDEwMAorCisgICAgQWRkZWQgc3RycmNociByZXR1cm4gdmFsdWUgY2hlY2ssIGp1c3QgdG8gYmUgc3VyZS4KKworY29tbWl0IDE5OWEwNTExZjZlYjBlZjNmZjFkOWY5MjJiNzkwYWI2N2RmZGUwMWUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAxMDozMToyNiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogc211eDogc2ltcGxpZnkgc211eF9saXN0X2RldGFjaCgpCisKK2NvbW1pdCBkODgzNTczYWE3M2UwZjVmYzE4OGFjZWRlZTY0NTFmOTVkYWU5MDBjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDQgMTA6MjM6MDYgMjAxMiArMDEwMAorCisgICAgRml4IGEgY29tcGlsZXIgd2FybmluZyBpbnRyb2R1Y2VkIGJ5IGNvbW1pdCBhODA5ZmU1MDc1YzlmMzc0NzE1ZjdkMWE2ODI5NDlhMDczMDE3MmMxLgorCitjb21taXQgN2I3YTNlYjI1MDA1MjdlYWExNjk5Mjg3YTZjYTZmY2M0Y2MyZTA4YQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDA5OjQwOjAyIDIwMTIgKzAxMDAKKworICAgIEZpeCBhIGJ1aWxkIGVycm9yIGNhdXNlZCBieSBjb21taXQgYTgwOWZlNTA3NWM5ZjM3NDcxNWY3ZDFhNjgyOTQ5YTA3MzAxNzJjMS4KKworY29tbWl0IDJiNmMxMTlmZWQ0ODQ4ZGE2NjYzYzExZjBjMmNiZGMyOTkyMWI1YzYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTU6NTE6MTAgMjAxMiArMDEwMAorCisgICAgQ2hlY2sgZm9yIG5ldHNubXBfZHNfZ2V0X2ludCgpIGVycm9ycy4KKworY29tbWl0IDZjZTUzNjBjYWE0YzlkZTUxYWRlNTc4NzllODNmOTZiZDA0YjRjNWEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTU6NDI6MjMgMjAxMiArMDEwMAorCisgICAgQ2hlY2sgZm9yIG1pc3Npbmcgdmlldy4KKworY29tbWl0IGIzYmM1NGJlZDMxNjkwYTg1ZGYyYWNmYmYzMjk2ZGE5M2E5ZTg5YjQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTU6MjM6MTcgMjAxMiArMDEwMAorCisgICAgQ2hlY2sgc29ja2V0KCkgcmVzdWx0LgorICAgIEFsc28gY2xvc2UgdGhlIHNvY2tldCBvbiBlcnJvci4KKworY29tbWl0IDkyMDc1ZjUxY2Q0NWEzOGNhMzg3NjBiM2ZmZTgyZTE2NTU5ZTljMmUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTU6MTg6MjYgMjAxMiArMDEwMAorCisgICAgQ2hlY2sgb3BlbigpIHJlc3VsdC4KKworY29tbWl0IDY2NjVkNWZlMmZjNTY5ZDZmYTg1NGQxZDc4ZTM0N2JiYWM2OWUwNzAKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTQ6MjI6MjIgMjAxMiArMDEwMAorCisgICAgRml4ZWQgbWlzc2luZyBicmVhay4KKworY29tbWl0IGE2NjQ4YzU0NTNlMWVmOGRhYzU3YTM4ZWZjYzAwY2NlNTNiZjllNGYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTQ6MjA6MjcgMjAxMiArMDEwMAorCisgICAgRml4ZWQgbWlzc2luZyBicmVhay4KKworY29tbWl0IGQ2OGRjYWUwZjE4ZDU1NDU3MWFlZjMyMTk0NGE1MjkwNTQ4ZGRlODYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTQ6MTY6MTEgMjAxMiArMDEwMAorCisgICAgQWRkZWQgJ2ZhbGx0aHJvdWdoJyBjb21tZW50IGZvciBDb3Zlcml0eS4KKworY29tbWl0IGZiNmY4MGMwZmUzYmEzNmU1NmY1YjkxMWE0N2UzZjZmMzJiYTI2NmUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTQ6MTQ6MDcgMjAxMiArMDEwMAorCisgICAgRml4ZWQgZXhpdCBjb2RlIG9mIGVuY29kZV9rZXljaGFuZ2Ugd2l0aCB3cm9uZyBhcmd1bWVudHMuCisgICAgQWxzbyBhZGRlZCBhIGNvbW1lbnQgZm9yIENvdmVyaXR5LgorCitjb21taXQgMzEzMGUyNGZkYzIzMjQ2NGRkN2JiMjE2ZjQ2Y2FmYTJlMGU3NzVhNgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNDowOTo1NCAyMDEyICswMTAwCisKKyAgICBBZGRlZCBtaXNzaW5nIGJyZWFrCisKK2NvbW1pdCAxOGMxMjZhOTU2NWNiNGQ2OWQ3NTEzYjk0NGEyMTA1NTg4MDQ1ZDM1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE0OjA3OjI5IDIwMTIgKzAxMDAKKworICAgIEFkZGVkICdmYWxsdGhyb3VnaCcgY29tbWVudCBmb3IgQ292ZXJpdHkuCisKK2NvbW1pdCA2ZDMxYzgyMDcwYTJjNjhmZTNjNTE5ZTlkNTZmYTI3Nzk1NTRkMDFmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE0OjAxOjUzIDIwMTIgKzAxMDAKKworICAgIEFkZGVkICdmYWxsdGhyb3VnaCcgY29tbWVudCBmb3IgQ292ZXJpdHkuCisKK2NvbW1pdCBkYzZmMGUyZTU0OWI0Y2QwNjFlYmMxOTAwODRiMWZjNzdhNTVmNDBmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDEzOjMyOjU5IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIHdyb25nIG9wZXJhdG9yCisKK2NvbW1pdCBkYWIzMjg2N2VkMGI5OTMwMWVmZDdiOGQ4NTJhZDEyODhhMTg0YmUwCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDEzOjMwOjMzIDIwMTIgKzAxMDAKKworICAgIEZpeGVkIFFVSVRGVU4gdXNhZ2UuCisKK2NvbW1pdCBiMWEyYmNmNjQ2MTVlYjY2YmMyNGQ1YmU0OTUwZTQ1MDEyOTYyMDQ1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDEzOjE4OjAzIDIwMTIgKzAxMDAKKworICAgIEZpeGVkIHdyb25nIG9wZXJhdG9yCisKK2NvbW1pdCBiMmIxYzg1MWI5NGZlZDM3YzM4NmVhYTFiZmVhZDVjNzc2OTZlM2VmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDEzOjE0OjUyIDIwMTIgKzAxMDAKKworICAgIEZpeGVkIHdyb25nIG9wZXJhdG9yCisKK2NvbW1pdCBhODA5ZmU1MDc1YzlmMzc0NzE1ZjdkMWE2ODI5NDlhMDczMDE3MmMxCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDEwOjU4OjQ2IDIwMTIgKzAxMDAKKworICAgIEFkZGVkIGNoZWNrIGZvciBmYWlsZWQgcmVnaXN0ZXJfbWliLgorCitjb21taXQgNTk0OWYwNTVjMTZhZTY1MDYxNWFhZTdhMWZlZTNmMmQ3YjE2ZDk0MAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxMDoyOTo1OSAyMDEyICswMTAwCisKKyAgICBNYWtlIE1JQiBmaWxlIHBhcnNpbmcgYW5kIGRldGVjdGlvbiBtb3JlIHN0cmljdCAtIExBQkVMIGlzIHJlcXVpcmVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgTUlCIGZpbGVzLgorCitjb21taXQgZTRiNjczNjgzYzY4YmE4YjNhYmMwNDBiOTEyNWVjMzA0NjQzY2M3YworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIEphbiAxIDIzOjAwOjI0IDIwMTIgKzAxMDAKKworICAgIEFzc3VtZSB0aGF0IGxpYmRsIG1pZ2h0IGJlIGluIEFHRU5UTElCUyBvciBTTk1QTElCUyBzbyBwcmVhZGQgdGhlbS4KKworY29tbWl0IGIxM2MxZTU3YmVkYmE3OWI4MDYxMDNjNzRmMTkyMWQ1M2E3MDZiMzgKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBKYW4gMSAyMjo1NTowNiAyMDEyICswMTAwCisKKyAgICBEbyBub3QgcmVxdWlyZSB1Y2Qtc25tcC9kbG1vZCB1bmxlc3MgaXQgd2lsbCB3b3JrLgorCitjb21taXQgMjdkY2VhMGQ1ZjgwMWRmNDk0YWIyY2I1YzVjMGViZTU0ZWIwZGNkMworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IERlYyAzMSAxNDo0ODoyOSAyMDExICswMTAwCisKKyAgICBBZGp1c3QgcGF0aHMgZm9yIHRlc3QgcmVzdHJ1Y3R1cmUKKworY29tbWl0IDE0YjYwZTg1YTFiNTcwMGU5M2QxMjZlMmYyOTFkNWM0ODVmMzRlMzYKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBEZWMgMzEgMTQ6MTQ6MjkgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IE1ha2UgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGRsbW9kIG1vZHVsZSBmYWlsIHJhdGhlciB0aGFuIGdlbmVyYXRlIGEgZHVtbXkgbW9kdWxlIGlmIHRoZSBkbG9wZW4gZnVuY3Rpb24gaXNuJ3QgYXZhaWxhYmxlLgorCitjb21taXQgOThhOTc1MzhmYzFlOWZmNDZiNjBkNWQ5NjkzNDc0NDQ1NzgzNzhjMAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IERlYyAzMSAxMzozNToxMyAyMDExICswMTAwCisKKyAgICBBZGp1c3QgdGhlIHBhdGhzIHRvIHN1cHBvcnQgdGVzdGluZyBldmVuIGlmIGJ1aWxkZGlyICE9IHNyY2RpcgorCitjb21taXQgODhmMGFmM2NmYjkxNmFlNTg2M2NjMjk4NjA3MWQ0MzVmMjBjMzA2NAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IERlYyAzMSAxMTozNzo1MiAyMDExICswMTAwCisKKyAgICBSZWR1Y2UgdGhlIHNjb3BlIG9mIHRoZSB2YXJpYWJsZXMgJ3AnIGFuZCAnbGVuJy4KKworY29tbWl0IDA4MTVhNzUzNmM3NmY3ZTQ4NDI2Mzg2ODNmNjc0ODk0YTFhOGNlMTQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgRGVjIDI5IDE0OjQyOjU0IDIwMTEgKzAwMDAKKworICAgIFJlcG9ydCBwcm9ibGVtcyB3aXRoIFNldFVuZG8gcHJvY2Vzc2luZworICAgIE1pc3NlZCB3aGVuIGFwcGx5aW5nIHBhdGNoICMzNDQ1NDQwCisKK2NvbW1pdCBlYjJhYjIzNzQyY2E4NmMwYjg5Y2NmZTkxZWI2ZWEzNzRiZjNhY2MxCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IERlYyAyOSAxNDozNzozMSAyMDExICswMDAwCisKKyAgICBDaGVjayBmb3IgdGhlIGV4cGVjdGVkIGVycm9yIChFUElQRSkgb24gY2xvc3VyZS4KKyAgICBNaXNzZWQgd2hlbiBhcHBseWluZyBwYXRjaCAjMzQ0NzQ0NAorCitjb21taXQgYWFjMTBiYzRmMDUzYzAxNGYzODJkNjU5M2ZjMzJhYjk1ZTBiMWE1NworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBEZWMgMjkgMTI6NTk6NTIgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMzQ2Mzc2NzogSGFuZGxlIHBhcnNpbmcgc3ViaWRlbnRpZmllcnMgPiAyXjMxCisKK2NvbW1pdCBiYmMwMmUzNmU5MGMxYWFiNzg5ODU2MmY5NjNmNWNhZGIyNmUxMGJkCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgV2VkIERlYyAyOCAxNzoxNToxNiAyMDExICswMDAwCisKKyAgICBNb3ZlIHBhc3MvcGFzc19wZXJzaXN0IHRlc3RzIHRvIHRoZSBuZXcgbG9jYXRpb24KKworY29tbWl0IDM4OThjMDRmZDZmODk4NjcwNjJmZGZlYmYzNjg1N2FiNjE5YzA0NTAKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBXZWQgRGVjIDI4IDE2OjUzOjI0IDIwMTEgKzAwMDAKKworICAgIEFkZCB0ZXN0cyBmb3IgcGFzcy9wYXNzX3BlcnNpc3QsIHN1cHBsaWVkIGJ5IEJpbGwgRmVubmVyCisKK2NvbW1pdCBkNWVlM2YwYTFhNjNiYjE3NTJjNzRjYmNhNTVhYTNkNDBiZjliZjEzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAyMTo1ODo1MSAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMzQ0NzQ0NDogRml4IFNJR19QSVBFIGhhbmRsaW5nCisgICAgUGF0Y2ggcHJvdmlkZWQgYnkgQmlsbCBGZW5uZXIKKworY29tbWl0IDJhMTdiMzc0MzBjMTg1Mjk5OGMzNTg4ZTU0N2Q3ZWI2MWMwNmRhNzEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDIxOjQ1OjM4IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IGFnZW50eDogUEFUQ0hFUzogMzQ0NTQ0MDogTW9yZSByb2J1c3QgaGFuZGxpbmcgb2YgQWdlbnRYIGVycm9ycworICAgIFBhdGNoIHByb3ZpZGVkIGJ5IEJpbGwgRmVubmVyCisKK2NvbW1pdCBmZTU4YTBlNWY0ZDRlMmUyZWNiY2I0NzM4MmIwOGNiMWU0ZGYzNTJjCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAxODoxNjoyMyAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSEVTOiAzNDU2NzcwOiBIYW5kbGUgKG9ic29sZXRlKSBVSW50ZWdlciB0eXBlIHByb3Blcmx5CisgICAgUGF0Y2ggcHJvdmlkZWQgYnkgQmlsbCBGZW5uZXIKKworY29tbWl0IDFiZThjZjA4YTY3YTkxODU1ZmVlMWVjNGEyZDhlMDg3Yzc4MTI0NTYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDE4OjA0OjEwIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IGFnZW50eDogUEFUQ0hFUzogMzQ0NTQzNzogTG9nIEFnZW50WCBkaXNjb25uZWN0aW9ucworICAgIChpbiBsaW5lIHdpdGggY29ubmVjdGlvbnMpIFBhdGNoIHByb3ZpZGVkIGJ5IEJpbGwgRmVubmVyCisKK2NvbW1pdCAwNjgwMzcyODkxMDdmYWEyYmEzZjVjZDJmYjAwYzE5NDk0YmI5YTA0CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAxNzoyNzo0NiAyMDExICswMDAwCisKKyAgICBIYW5kbGUgYW55IEdFVE5FWFQgcmVxdWVzdCBPSUQsIG5vdCBqdXN0IGEgc2ltcGxlIHdhbGsuCisKK2NvbW1pdCBhNzRmYTUyODk4MzEyM2QzNTVhOGNkY2FhNzdkZDRlYjRiOGM2OTU5CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAxNzowMDoxOCAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBwYXNzOiBQQVRDSEVTOiAzNDkzOTQ6IEJyaW5nIHBhc3NfcGVyc2lzdHRlc3Qgc2NyaXB0IGludG8gbGluZSB3aXRoIHBhc3N0ZXN0KgorICAgIChpLmUuIHVzaW5nIHRoZSBsZWdpdGltYXRlIHN0cnVjdHVyZSBvZiBORVQtU05NUC1QQVNTLU1JQikKKyAgICBQYXRjaCBwcm92aWRlZCBieSBCaWxsIEZlbm5lcgorCitjb21taXQgYmJlNjQ5ZWJmYTYxZWEyMjM5OTE3MGIzNmI5OWRiMzBhMWRlODAxMgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTY6NTQ6MzggMjAxMSArMDAwMAorCisgICAgUmV3b3JrICJwYXNzdGVzdCIgZXhhbXBsZSB0byBmdWxseSB2YWxpZGF0ZSBHRVRORVhUIHJlcXVlc3RzCisgICAgYW5kIHVzZSBhIGxlZ2l0aW1hdGUgc3RydWN0dXJlIGZvciBvdXRwdXQuICBCYWNrcG9ydCBvZiBTVk4KKyAgICByZXZpc2lvbiAxNzYzMiAod2hpY2ggdXBkYXRlZCAncGFzc3Rlc3QucGwnIGJ1dCBtaXNzZWQgJ3Bhc3N0ZXN0JykKKyAgICBDb3JyZWN0IGluIGJyYW5jaGVzIDUuNSBhbmQgYWJvdmUKKworY29tbWl0IDgyZDA2YzcyNDdiMjJjOGIwMWQ0NWJmNTUwNDFkMmYxZTY0MjdkNDkKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDEzOjQ1OjE4IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAzNDQ3NjcxOiBGaXggb3ZlcnJpZGUgaGFuZGxpbmcgb2YgT0lEIHZhbHVlcworICAgIFBhdGNoIHN1cHBsaWVkIGJ5IFBoaWxsaXAgTydEb25uZWxsCisKK2NvbW1pdCBiYTRhOWNlNTFjOTYwMGY5ZmRhMTY4ZjFlNmVmZjMyYTFkYjYzY2I5CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAxMzoyNDoyNiAyMDExICswMDAwCisKKyAgICBUd2VhayAtLWRpc2FibGUtc25tcC1zZXQgY2hhbmdlcworCitjb21taXQgODI3YzhiMjg4MzAxNzFmYWE5YzYxZDUzZWZjYTllYjY2MDA1NjFjMgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTE6MjU6NDMgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogcHl0aG9uOiBQQVRDSEVTOiAzNDMzODQ2OiBGaXggZm9yIHVzZSB3aXRoIHB5dGhvbiAyLjQKKworY29tbWl0IGY5OGE1NGE5OWNhZjdiNDZiMTAwYTkyMGRiOTQyY2JjYTljNDM5MjYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDEwOjEwOjM2IDIwMTEgKzAwMDAKKworICAgIFNraXAgU0VULWJhc2VkIHRlc3RzIHdoZW4gY29uZmlndXJlZCB3aXRoIC0tZGlzYWJsZS1zZXQtc3VwcG9ydAorCitjb21taXQgMjMwZGYxNGY5NGMzNzM2ZmYzNDM3OWE0ZTI4MWVlYTM1M2I0N2Y4MAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgTW9uIERlYyAyNiAyMzozNDoyMyAyMDExICswMTAwCisKKyAgICBEbyBub3QgYXNzaWduIHRtU3RhdGVSZWYgdHdpY2UKKworY29tbWl0IGM5NmIzYjRkODUzMGFkNWUwZWZiMDNmMjRkYWI1ZTVmMWE0NjAwMzEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBEZWMgMjUgMTE6MTg6MjEgMjAxMSArMDEwMAorCisgICAgQ29ycmVjdCB1c2UtYWZ0ZXItZnJlZS4KKworY29tbWl0IGM1OTc4Yzg5Y2RlMjQ0MGY0ZDIwZGFkYmM5ZDFkZDhkYjU2MmQ1NmUKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBEZWMgMjUgMTE6MTU6NDQgMjAxMSArMDEwMAorCisgICAgQ29ycmVjdCBkb3VibGUtZnJlZS4KKyAgICAKKyAgICBuZXRzbm1wX3Rsc3RtQWRkcl9hZGQgdGFrZXMgb3duZXJzaGlwIG9mIGl0J3MgYXJndW1lbnQgc28gY2FsbGluZyBmcmVlIG9uIHRoZQorICAgIGFyZ3VtZW50IG9uIGZhaWx1cmUgaXMgaW5jb3JyZWN0LgorCitjb21taXQgYzEzOWNhMTIzYjQ0YmIzYjliNmJmOTIxZTE2MDljYzQ1ZjYzYTY2MAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFNhdCBEZWMgMjQgMTY6NTU6MzAgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVMgMzQxMDA1OTogRml4IHNwYXJzZWx5IGF1Z21lbnRpbmcgdHJpZ2dlciB0YWJsZXMKKyAgICBQYXRjaCBwcm92aWRlZCBieSBTdGVwaGVuIFR1cm5lcgorCitjb21taXQgYzRhZTAyMWIyZTYzODQ0MzcwODFjNTYyM2YzNjBjODg5NjM5MDE4OAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFNhdCBEZWMgMjQgMTY6Mjk6NTQgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVMgMzQxMDA1MDogU2tpcCBhbHJlYWR5LSdwcm9jZXNzZWQnIHZhcmJpbmRzCisgICAgQmFzZWQgb24gbWliMmMgcGF0Y2ggcHJvdmlkZWQgYnkgU3RlcGhlbiBUdXJuZXIKKworY29tbWl0IGM2YWNjZjhjNjYyNTRmYThjNDg3NjdlZDdkZWM3OTVkZGFmYzUyMmUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBTYXQgRGVjIDI0IDE2OjI3OjExIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTIDM0MTAwNTA6IFNraXAgYWxyZWFkeS0ncHJvY2Vzc2VkJyB2YXJiaW5kcworICAgIFBhdGNoIHByb3ZpZGVkIGJ5IFN0ZXBoZW4gVHVybmVyCisKK2NvbW1pdCBhNjE4MjZhZDhjYTU0NjYxZDFkOTA5NzEyNTAzYmQzYThiMzJlZWQwCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUaHUgRGVjIDIyIDE4OjM1OjQ2IDIwMTEgKzAxMDAKKworICAgIFJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCisgICAgCisgICAgbXlNYXRjaCBpcyB1bnVzZWQgYXMgbm1hdGNoIGlzIHplcm8gYW5kIGFsc28gc2luY2UgcmVnZXhCdWZmZXIgaXMgY3JlYXRlZAorICAgIHdpdGggUkVHX05PU1VCIHNldC4KKworY29tbWl0IGJhNGZjODBmZTJjZmQ1YTVkODkyMzBkOGYzNzAzZTRmZTAxZTYwMTkKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgRGVjIDIyIDE5OjI0OjQwIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IGFnZW50OiBQQVRDSCAzNDAyMzc2OiBmcm9tIExlb25hcmRvIENoaXF1aXR0bzogUmVjb2duaXNlIFJlaXNlckZTCisgICAgQWxzbyBtb3ZlIHZhcmlvdXMgRlNUeXBlIGRlZmluaXRpb25zIHRvIHRoZSBhcHByb3ByaWF0ZSBibG9ja3MKKworY29tbWl0IGI1YWM0YTA0ZGNkNTQ3MGQwOGQwMzMyMWFiY2QxZTk4MjYyMWU2ZTAKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRGVjIDIyIDE0OjM5OjQ2IDIwMTEgKzAxMDAKKworICAgIEZpeGVkIHVudGVybWluYXRlZCBzdHJpbmdzIGFmdGVyIHN0cm5jcHkKKworY29tbWl0IDJiMzdlNGU4ZjI1MGEwZDg4MjExOTlhNzRhYzNmNGU1YjdiN2JhYmEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRGVjIDIyIDE0OjMxOjUxIDIwMTEgKzAxMDAKKworICAgIEZpeGVkIHVudGVybWluYXRlZCBzdHJpbmdzIGFmdGVyIHN0cm5jcHkKKworY29tbWl0IDNkMDgzNDUxNTZjNDE5MzMzZGU5NjlmMTNkMjFmY2VjN2UxOGU5NGQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRGVjIDIyIDE0OjMyOjI5IDIwMTEgKzAxMDAKKworICAgIEZpeGVkIHVudGVybWluYXRlZCBzdHJpbmdzIGFmdGVyIHN0cm5jcHkKKworY29tbWl0IGNkODU5YWQ1MWM0ZjE4ZDViMGZjNjlkZDY2OWZjYjA1MWM3OTg5NjkKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRGVjIDIyIDE0OjM5OjMzIDIwMTEgKzAxMDAKKworICAgIEZpeGVkIHdyb25nIG1lbW1vdmUgc2l6ZQorCitjb21taXQgMzBmZjU4ZDA5ZDRjOWQ1NDM4YmI2MjEwNTRmZDdhZDdhMmE1OTdlNAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBEZWMgMjIgMTQ6MDc6MTkgMjAxMSArMDEwMAorCisgICAgRml4ZWQgd3JvbmcgbGVuZ3RoIG9mIGJ1ZmZlciB3aGVuIHByaW50aW5nIEFTTl9CSVRfU1RSCisKK2NvbW1pdCA2YzE0ODdlMWQzNjBkM2QyNjBhMzljYjFmNWIxNWRhOTc4Mzk1MDUzCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIERlYyAyMSAxNTo0NzozNCAyMDExICswMTAwCisKKyAgICBGaXhlZCBwb3RlbnRpYWwgZnJlZSBvZiB1bmluaXRpYWxpemVkIHBvaW50ZXIgaW4gZXJyb3IgY2FzZXMKKworY29tbWl0IGM3NmZiOTZmNjVlMzNiYTJmZDIxMmE5MjFlOGMzODYxNTVlZTVjN2EKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgRGVjIDIxIDE1OjQ0OjQ2IDIwMTEgKzAxMDAKKworICAgIEZpeGVkIHVuaXRpYWxpemVkIHZhbHVlcyBpbiB1ZHBUYWJsZQorCitjb21taXQgYzQ0NjA4Njc5Yjg5NzUxMTc2ZjI4YTJlNTRkNTI4MmI0NmUyYTA1YworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBEZWMgMjEgMTQ6NTY6MTMgMjAxMSArMDEwMAorCisgICAgVXNlIGNhbGxvYyBpbnN0ZWFkIG9mIG1hbGxvYyBhbmQgbWFudWFsIGNsZWFyaW5nCisKK2NvbW1pdCBhMDVjNWY5NTEzNDYxODI0ZTc5MDNhZTlhZTlhNmMzMzg2ZTMzODc5CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIERlYyAyMSAxNDo0MDo1MCAyMDExICswMTAwCisKKyAgICBGaXhlZCBwcmludGluZyBvZiB1bml0aWFsaXplZCB2YXJpYWJsZSB3aGVuIHNlbnNvcnNfZ2V0X2xhYmVsKCkgZmFpbHMKKworY29tbWl0IGU0YTVlZGM3MjM5M2JkM2RlOWJmMTJiY2ViYTlkODNiYmY3ZGU3MGIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgRGVjIDIxIDE0OjMxOjI1IDIwMTEgKzAxMDAKKworICAgIFJlbW92ZWQgdW51c2VkIHZhcmlhYmxlCisKK2NvbW1pdCBmYWUyZTViODM1YjhkZjFlYWU0N2U0Y2ViYjRlYjQwNGQ3MjgyMzc3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIERlYyAyMSAxMzozMToyMSAyMDExICswMTAwCisKKyAgICBGaXhlZCBkZXJlZmVyZW5jaW5nIHVuaXRpYWxpemVkIGlpZCBpbiBlcnJvciBjYXNlcyBhbmQgd2l0aCBkZWJ1ZyBpbmZvIGVuYWJsZWQuCisKK2NvbW1pdCA5ZDU4ZjgxYTkyMzljZmJjZmM4ZWJjZTM2N2QyMWU5YjNkY2IwMjhiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIERlYyAyMSAxMzozMzozMyAyMDExICswMTAwCisKKyAgICBGaXhlZCBkZXJlZmVyZW5jaW5nIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGluIGVycm9yIGNhc2VzCisKK2NvbW1pdCAwYmM4YzA4ZWRlYWU3YWUwOTVmMTE2MjU4YzIwYWU1NzY3ZDYwNjUyCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIERlYyAyMSAxMzoyMDo1MiAyMDExICswMTAwCisKKyAgICBGaXhlZCByZXR1cm5pbmcgdW5pbml0aWFsaXplZCB2YXJpYWJsZSAnc3RhdHVzJyB3aGVuIHNzID09IE5VTEwKKworY29tbWl0IDczMDRjNTNjZjhhZGVlOGVjY2VmMWE4ZjI2NzU2ZmMwN2YwOTg3MjEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBEZWMgMTggMjM6MzE6NTMgMjAxMSArMDEwMAorCisgICAgT24gc29sYXJpcyAxMCB0ZXN0IGluIC9iaW4vc2ggZG9lc24ndCBzdXBwb3J0IHRoZSAtZSB0ZXN0LiBSZXBsYWNlIGl0IHdpdGggLWYKKworY29tbWl0IDhjZDNiZTYwZDY5M2M5YzM2ZmZiOTdkM2Q5YmNiNDljMWI0YWJlMzUKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBEZWMgMTcgMDg6NTI6MjQgMjAxMSArMDEwMAorCisgICAgQXZvaWQgcmVwZXRpdGlvbiBvZiB0aGUgY29tcGxleCBleHByZXNzaW9uIGRldGVybWluaW5nIGlmIGl0IGlzIHBvc3NpYmxlIHRvIGdldCB0aGUgZGVzdGluYXRpb24gYWRkcmVzcy4KKyAgICAKKyAgICBUaGlzIGFsc28gbWFrZXMgaXQgcG9zc2libGUgdG8gYnVpbGQgb24gcGxhdGZvcm1zIGxpa2UgU29sYXJpcyAxMCB0aGF0IGRlZmluZQorICAgIElQX1JFQ1ZEU1RBRERSIGJ1dCBsYWNrIGVpdGhlciBvZiBtc2doZHIubXNnX2NvbnRyb2wgYW5kIG1zZ2hkci5tc2dfZmxhZ3MuCisKK2NvbW1pdCA5NTNmMmUzZDQyNWVkZTNiODYzYTJlN2NjYjBiNGJjODYyOTI4YjU3CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgTm92IDUgMjI6MTM6MDcgMjAxMSArMDEwMAorCisgICAgTW92ZSB0aGUgdXNlIG9mIF9zZW5kdG8gYW5kIF9yZWN2ZnJvbSBiZWxvdyB0aGVpciBkZWZpbml0aW9ucy4KKworY29tbWl0IDY4YTExNzNjNDZjZjc3NjAxNDI2Y2YzOTFkOWE4NTI3OTRmMjA1N2UKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBOb3YgMjAgMjA6MDU6MTggMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogU2VwYXJhdGUgb3V0IHRoZSBjbWVzZyBidWZmZXIgc2l6ZQorCitjb21taXQgNDYxZGQxNmYzYjI2NDczMjJjZGNlNjM2MzA4MWNjNDRiYTVhNDliNQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IE5vdiAyNiAyMTo1MTowMSAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBNZXJnZSB0b2dldGhlciB0aGUgTGludXggYW5kICpCU0QgdmVyc2lvbiBvZiBzcmMgcG9ydCBzZW5kaW5nLgorCitjb21taXQgN2FjY2I2OWJhYTFmYzBiNmEzNDM5ZDJlNTQ5Yzg2ZGEzNDUzYmFkMgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIERlYyAxMSAxOTozMDozMSAyMDExICswMTAwCisKKyAgICBVc2UgYSBiYXJlIHN0cnVjdCBpb3ZlYyBpbiBpbnN0ZWFkIG9mIGEgb25lIGVsZW1lbnQgYXJyYXkuCisgICAgCisgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyBjaGFuZ2UgaXMgdG8gbWFrZSBfcmVjdmZyb20gbW9yZSBzaW1pbGFyIHRvIF9zZW5kdG8uCisKK2NvbW1pdCAzOTg1MmNkNGM4NWVmMmJmYzc1Y2RlYTI4MjUyNjFlZTkzZTc2OGMyCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDExIDE5OjI5OjIwIDIwMTEgKzAxMDAKKworICAgIEFkZCBjb21tZW50IGRlc2NyaWJpbmcgdGhlIHB1cnBvc2Ugb2YgdGhlIGNhbGwgdG8gZ2V0c29ja25hbWUgYWZ0ZXIgYWxtb3N0IHJlbW92aW5nIGl0LgorCitjb21taXQgMWIyOTJjYTI3ZWFiNWNhYTczZmVhYWE4M2RjOWMxMmFiYzBmMmU3MAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIERlYyAxMSAxOToyNzo1OSAyMDExICswMTAwCisKKyAgICBSZWR1Y2UgdmFyaWFibGUgc2NvcGUuCisKK2NvbW1pdCBiYzg3OTU3MWVjYTk1MjBiYzEzMmY4NDBjM2U2NTlkMzc5MzE0NGQ3CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDExIDE5OjI1OjM2IDIwMTEgKzAxMDAKKworICAgIEludHJvZHVjZSB0ZW1wb3JhcnkgdmFyaWFibGVzIHRvIGVhc2UgdGhlIGV4dHJhY3Rpb24gb2YgdGhlIHNlcnZlciBhZGRyZXNzLgorCitjb21taXQgYjdlZWE2Y2ZmYmQ4NzI5MzJjZTJjMDRmZWZiNmY0M2RlMzM5ZjM3NAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIERlYyAxMSAxOToxODozMyAyMDExICswMTAwCisKKyAgICBSZW5hbWUgdGhlIGNtZXNncHRyIHZhcmlhYmxlIHRvIGNtLgorICAgIAorICAgIFRoZSBwdXJwb3NlIG9mIHRoaXMgaXMgdG8gaW5jcmVhc2UgdGhlIHJlYWRhYmlsaXR5IG9mIHRoZSBjb2RlLgorCitjb21taXQgMGE3NDYxZTcyODgwNWM2MmExY2FiOWQ4N2JmYzc0Yzc5MjdhOWZjYworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIERlYyAxMSAxOToxNToyMiAyMDExICswMTAwCisKKyAgICBGYWN0b3Igb3V0IGEgY29tbW9uIGxvb3AgaW4gcmVjdm1zZyBvcHRpb24gcHJvY2Vzc2luZy4KKworY29tbWl0IGIzYzYyNDhkMDIwMWFiMTYxMDg0MGQ2ZDBlNzQ5YjNiNmM0YWQ3OTIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBEZWMgMTEgMTk6MTM6NDMgMjAxMSArMDEwMAorCisgICAgVW5pZnkgdGhlIHN0cnVjdHVyZSBvZiBMaW51eCBhbmQgQlNEIHJlY3Ztc2cgb3B0aW9uIHBhcnNpbmcgc29tZXdoYXQuCisKK2NvbW1pdCAzNTY0MDBkNjI5MGE0MjNiNTJlYmVlYTVhNWU5NzZmYjE1YmI3M2I0CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDExIDE5OjA0OjU2IDIwMTEgKzAxMDAKKworICAgIFVzZSBDTVNHX0RBVEEgb24gdGhlIHJlc3VsdCBvZiBDTVNHX0ZJUlNUL05FWFRIRFIsIG5vdCBvbiB0aGUgYnVmZmVyLgorCitjb21taXQgM2IzNTE3MDhjNjJkZTQ2YWExYjkwZWQyMzJjZmQ4YzdjNWIwMjIzMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IERlYyA4IDEyOjAwOjMyIDIwMTEgKzAxMDAKKworICAgIFJlbW92ZSBhIGNhc3QKKworY29tbWl0IGRlOTI1MGQ5ZGFlOTcyN2E2Y2M3ZjY0NzY4OGRkZGYxYjg1OTcxMjgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgOCAxMTo1ODowNCAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogTWFrZSBzcHJpbnRfbWliX29pZCgpIHRyZWF0IE9JRCBjb21wb25lbnRzIGFzIHVuc2lnbmVkIGluc3RlYWQgb2Ygc2lnbmVkIGludGVnZXJzCisKK2NvbW1pdCAwZTMzYjNiNmQ1ODU0YTRiYWMxNWQ0ZWE1ZTAxNmM1M2QxNjFkMGNkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDggMTA6MDI6MjggMjAxMSArMDEwMAorCisgICAgRml4IHJlY2VudGx5IGludHJvZHVjZWQgY29tcGlsZXIgd2FybmluZ3MKKworY29tbWl0IGI3ZTUwZDVmOWE2NzU1OTgyZDJhZjMxOTE0NzNjYjM0NjQzYmMwM2YKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgOCAwODozNzoyMiAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBSZWR1Y2Ugb3ZlcmhlYWQgb2YgY29uZmlnIGZpbGUgcGFyc2luZworCitjb21taXQgNzNjOWVlNDJkMjhhZmUyZTEwN2E3ZDY2MTZiNmQwMTE4OTBjMzZlYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IERlYyA4IDA5OjA5OjU5IDIwMTEgKzAxMDAKKworICAgIFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzCisKK2NvbW1pdCAzZGI5Nzk2MmIzN2ViMTJkMjU0ZDYxZTZiZTIzNGIwNmEzOTFjOGJiCitBdXRob3I6IEJpbGwgRmVubmVyIDxmZW5uZXJAZ21haWwuY29tPgorRGF0ZTogICBUaHUgRGVjIDggMDc6NDM6NDUgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIIDM0NTM4Njg6IGZyb20gIkJpbGwgRmVubmVyIDxmZW5uZXJAZ21haWwuY29tPiI6IEZhY3RvciBjb21tb24gY29kZSBpbnRvIHBhc3NfY29tbW9uCisgICAgCisgICAgTW92ZSB0aGUgY29kZSBmb3IgcG9ybWF0dGluZyBhbmQgcHJpbnRpbmcgdmFsdWVzIGZyb20gcGFzcyBhbmQgcGFzc19wZXJzaXN0CisgICAgaW50byBwYXNzX2NvbW1vbi4KKworY29tbWl0IGI2NTY4YzgzZjE3NTZlOWE2NTQzNGVkZWVlYjQwZDIzZGRiYmI2NTIKK0F1dGhvcjogY2NjaGl1IDxjY2NoaXVAc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgRGVjIDcgMTY6MjU6MjcgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogQlVHOiAzNDUyMDY5OiBGaXggc25tcHRyYXBfb2lkIGRlY2xhcmF0aW9uIGluIG1pYjJjIGdlbmVyYXRlZCBjb2RlCisgICAgCisgICAgVGhpcyBidWcgd2FzIGludHJvZHVjZWQgY29uc2lkZXJhYmxlIHRpbWUgYWdvLiBJdCBkaWQgYWxyZWFkeSBleGlzdCBhdCB0aGUKKyAgICB0aW1lIHRoZSA1LjYgYnJhbmNoIHdhcyBjcmVhdGVkIChzZWUgYWxzbyBjb21taXQKKyAgICAwZWMwODhhZmEyN2NmZGE0ZTZlYTc4YWFlN2NmYzU1MDc1NjRlZGRlKS4KKworY29tbWl0IGQ0OTRkYjY0YzIwOGI0ZGM2MjgxMzEzMmY4ODYzYmQ1YzFhMzlkNzcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgMSAxMDozODoxNyAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IEVsaW1pbmF0ZSBhbiB1bnVzZWQgdmFyaWFibGUgKE5vdykKKworY29tbWl0IDI4ZjI1NjFiYzI5MzVkOGUxY2JmNDZkMjgyMDE1ODE3M2U3YTRjZjQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgMSAxMDozNzoxMSAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IE1vdmUgdGhlIG1haW4gbG9vcCBjb2RlIGludG8gYSBuZXcgZnVuY3Rpb24KKworY29tbWl0IDM5NmUxMjJkZGM0MmE5MTZmMDZhMDI4ODRjMGU4YTI1OGVkYmUyMzgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgMSAwOTozMjoxNiAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogTWF0Y2ggZWFjaCBnZXRwd25hbSgpL2dldHB3dWlkKCkgY2FsbCB3aXRoIGFuIGVuZHB3ZW50KCkgY2FsbCBhbmQgZWFjaCBnZXRncmVudCgpIGNhbGwgd2l0aCBhbiBlbmRncmVudCgpIGNhbGwuCisKK2NvbW1pdCAzZWZlZmJjMDAyNDM5OTc4NmY4YjY4YjFlOTNiMGE4ZmRkZGRjN2RhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDEgMTA6NDE6MDEgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcHRyYXBkOiBSZW1vdmUgc3VwZXJmbHVvdXMgY2FzdHMKKworY29tbWl0IDdmMDVkYWE4ZTBlMGY1MzNiMGYxMmEzZTFjZjA3NjQxNTE5OTA5ZDYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgMSAxMTo1ODozMiAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBCVUc6IDM0NDQ5Mzk6IEJVRzogMTc5Njg4Njogc25tcGxpYjogQXZvaWQgdGhhdCBzcHJpbnRfcmVhbGxvY19vY3RldF9zdHJpbmcoKSBlbWJlZHMgdW5wcmludGFibGUgY29udHJvbCBjaGFyYWN0ZXJzIG9yIGJpbmFyeSB6ZXJvZXMgaW4gaXRzIG91dHB1dC4gVGhpcyBiZWhhdmlvciBjb3VsZCBjYXVzZSB0cnVuY2F0ZWQgb3V0cHV0IGluIHNubXB0cmFwZC4KKworY29tbWl0IGRiOGY1NThmZDJmM2I3YzEwOWVhM2ExYzIxMzNiNzViNmY4Y2IyYWQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgMSAxMDowNDo0MSAyMDExICswMTAwCisKKyAgICBDb21waWxlciB3YXJuaW5nIGZpeDogcGFzcyB1bnNpZ25lZCBjaGFycyB0byBpc3ByaW50KCkgaW5zdGVhZCBvZiBzaWduZWQgY2hhcnMuCisKK2NvbW1pdCA4MDBkYzEwMjhlN2UwY2Q4Y2MxNGQ4NGRkMzE3MjNkNDdhYzA3M2RiCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUaHUgRGVjIDEgMTA6MTg6NTggMjAxMSArMDEwMAorCisgICAgUmVkdWNlIHRoZSBzY29wZSBvZiB0aGUgaGludCB2YXJpYWJsZQorCitjb21taXQgODNlYTRhMDgwYzkwYTc0Yjk3NDNkM2YyNGNmMGQ0YjhhMWU4Yzg0OQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE5vdiAyNyAyMToxNjo1MiAyMDExICswMTAwCisKKyAgICBSZWR1Y2UgdGhlIHNjb3BlIG9mIHRoZSB2YXJpYWJsZSBxb3MKKworY29tbWl0IDdiOWUwMzQ0MWMzZGMzYTA3NjcwZWQwMWY1ZDA0NzkxYTgyYzc1MGMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBOb3YgMzAgMTQ6MDQ6MDEgMjAxMSArMDEwMAorCisgICAgUmVtb3ZlICNkZWZpbmUgdmFsKHgpIF9fU1RSSU5HKHgpIGFuZCBjaGFuZ2UgdmFsKHgpIGludG8gX19TVFJJTkcoeCkuCisKK2NvbW1pdCAyZjM3OWIwZTRlY2FkZmE0ZTU0MWUzMDA1YzhmYzgyODE4ODJiNzQxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTm92IDMwIDE1OjU4OjQ3IDIwMTEgKzAxMDAKKworICAgIEZvbGxvdy11cCBmb3IgY29tbWl0IDFhYTcwNGU6IHVuYnJlYWsgdGhlIE1TVkMgYnVpbGQKKworY29tbWl0IDY0ZWYwZjcxMTI3NjE3ODM3MDI3ZmIyY2ZhZjE3NGI5NWJhNzllMGQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBOb3YgMzAgMTQ6MTk6NTAgMjAxMSArMDEwMAorCisgICAgQWRkIFNOTVA6OnJlZ2lzdGVyX2RlYnVnX3Rva2VucygpCisKK2NvbW1pdCA3YmVhZDljYTkxN2M2NzU2NmQ1ZWQ5OGFiNTA3YmJjMDI4MTYyMTdkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTm92IDMwIDE0OjA4OjA4IDIwMTEgKzAxMDAKKworICAgIEFnZW50WCBzdWJhZ2VudDogUmVkdWNlIGNvZGUgZHVwbGljYXRpb24KKworY29tbWl0IDBlZDcxNTQxZjg3ZTdkNzhiYzk5OGVlYmRhMzIxN2M1OWUxZGY4MzAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBOb3YgMzAgMTQ6MDM6MTkgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogQWRkIERveHlnZW4tc3R5bGUgZnVuY3Rpb24gaGVhZGVyIGZvciBuZXRzbm1wX3JlZ2lzdGVyX2RlZmF1bHRfdGFyZ2V0KCkgYW5kIG5ldHNubXBfY2xlYXJfZGVmYXVsdF90YXJnZXQoKS4KKworY29tbWl0IDhjMjk3MmI2MWU0MDE2OWI0N2M1MDk4OGI2YWU5ZThjMjg1Zjg0ZjgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBOb3YgMzAgMTQ6MDI6NTQgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogcGVybDogRml4IHNwZWxsaW5nIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBTTk1QIG1vZHVsZQorCitjb21taXQgNWRmMmJhYzZiZDcxNzc5OTMxMWYwMDFhYzdiNzNkYjg4ZjExYmRkYQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVHVlIE5vdiAyOSAwODo1OTo1OCAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBPbmx5IHRyYW5zZm9ybSB0aGUgYWRkcmVzcyB0byBwcmludGFibGUgZm9ybSB3aGVuIG5lZWRlZC4KKworY29tbWl0IDE3MWU4ZDQ4ZDRhZjA0MDEzY2ZmOGZkMjhmNTM0MWEyYWVmMjFkODgKK0F1dGhvcjogTWlqbyBTYWZyYWRpbiA8c2FmcmFkaW5AbGludXgudm5ldC5pYm0uY29tPgorRGF0ZTogICBUdWUgTm92IDI5IDE2OjQ5OjQ2IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXAtYnJpZGdlLW1pYjogRml4IGluZGV4IGludGVycHJldGF0aW9uLgorICAgIAorICAgIFRoaXMgcGF0Y2ggY29ycmVjdHMgYSB3cm9uZyBkYXRhIGludGVycHJldGF0aW9uLgorICAgIHNubXAtYnJpZGdlLW1pYiBvYnRhaW5zIHRoZSBpZmluZGV4IHZhbHVlIGZyb20gdGhlIHN5c2ZzCisgICAgYXR0cmlidXRlICdpZmluZGV4JyBUaGUgdmFsdWUgZ2l2ZW4gYnkgdGhlIHN5c2ZzIGF0dHJpYnV0ZQorICAgIGlzIGFuIGludGVnZXIsIHdoaWNoIGlzIGhhbmRsZWQgYXMgaGV4IGFuZCBsZWFkcyB0bworICAgIGluY29ycmVjdCBkYXRhIGRpc3BsYXllZCB0byB0aGUgdXNlci4KKyAgICAKKyAgICBlLmcuCisgICAgICAgICQgPiBzbm1wd2FsayBsb2NhbGhvc3QgQlJJREdFLU1JQjo6ZG90MWRCYXNlUG9ydElmSW5kZXguMgorICAgICAgICBCUklER0UtTUlCOjpkb3QxZEJhc2VQb3J0SWZJbmRleC4yID0gSU5URUdFUjogNTQKKyAgICAKKyAgICBhY2NvcmRpbmcgdG8gdGhlIHN5c2ZzIGF0dHJpYnV0ZSB0aGUgdmFsdWUgaXMgMzYKKyAgICAKKyAgICAgICAgJCA+IGNhdCAvc3lzL2NsYXNzL25ldC88ZGV2aWNlPi9pZmluZGV4CisgICAgICAgIDM2CisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogTWlqbyBTYWZyYWRpbiA8c2FmcmFkaW5AbGludXgudm5ldC5pYm0uY29tPgorCitjb21taXQgODJlMzlmYjY3MDZkZjkwZWNmMmZjOWUxMGFkYTJiOTYyZWUxOTZmMworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBOb3YgMjkgMTI6Mjc6NDYgMjAxMSArMDAwMAorCisgICAgRml4IG11bHRpLWxpbmUgY2FzZSB0ZXN0aW5nIG9mIGluY29taW5nIE9JRAorCitjb21taXQgYjE1ZGExYTQ1MTYwNjExMDVhMWVhYzc0NTBjZjY1MGVjNDQyNjZiMgorQXV0aG9yOiBOaWtvbGF5IERlbmV2IDxuZGVuZXZAZ21haWwuY29tPgorRGF0ZTogICBUdWUgTm92IDI5IDA4OjI5OjQ5IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IEZyZWVCU0Q6IFJlc3RvcmUgSVBfUkVDVkRTVEFERFIgZnVuY3Rpb25hbGl0eS4KKworY29tbWl0IDdmNDdmNTJlNDgxYmFhOWFhZmI1Nzg0MjQ0YjBkZDI2NTNlN2RjZmYKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIE1vbiBOb3YgMjggMDg6NTE6MzkgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogVXNlIFNOTVBfQUxMT0NfVFlQRURFRiB0byBhbGxvY2F0ZSB0cmFuc3BvcnRzIGluIG9yZGVyIHRvIGF2b2lkIHRoZSBzZXBhcmF0ZSBjYWxsIHRvIG1lbXNldC4KKworY29tbWl0IGNmODYwMzllMzA4NjIyNWMzMDg1YmI5YWRmMDg4YjhiYTViYTY5NzkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBOb3YgMjIgMTU6MDI6NTggMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogTWluR1c6IHRlc3Rpbmc6IE1ha2UgdW5pdC10ZXN0cy9UMTAycGR1X2J1aWxkX2NsaWIgcGFzcy4KKworY29tbWl0IDFhODdlNzZlMDBlZTNkNWNkMzdhMDdiZmMzZDg0NDkwZDNjMmE0ZWMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBOb3YgMjIgMTQ6NTU6NDIgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogTWluR1c6IHRlc3Rpbmc6IE1ha2UgdW5pdC10ZXN0cy9UMDE0Z2V0aG9zdGJ5YWRkcl9jbGliIHBhc3MKKworY29tbWl0IDg4NjdmZDFkY2ZlNzJiNTlkMDczMjJmZjM4YTY5OWI2NmVjNGYzMjYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBOb3YgMjIgMDk6NDQ6MzggMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogTWFrZSBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoKSByb2J1c3QgYWdhaW5zdCBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcy4KKyAgICAKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBNYWtlIE5FVFNOTVBfTEFSR0VfRkRfWkVSTygpIHVzZSBtZW1zZXQoKSBvbiBVbml4IHN5c3RlbXMgaW5zdGVhZCBvZiBhbiBleHBsaWNpdCBsb29wLgorICAgIENIQU5HRVM6IHNubXBsaWI6IE1ha2Ugc3VyZSB0aGF0IG9uIFVuaXggc3lzdGVtcyBuZXRzbm1wX2xhcmdlX2ZkX2NscigpIGRvZXNuJ3QgdHJ5IHRvIHJlYWQgbWVtb3J5IGl0IGlzbid0IGFsbG93ZWQgdG8gcmVhZCBpZiB0aGUgZmlyc3QgYXJndW1lbnQgZXF1YWxzIC0xIChhIHZhbHVlIHRoYXQgc2hvdWxkbid0IGJlIHBhc3NlZCBieSB0aGUgY2FsbGVyKS4KKyAgICBDSEFOR0VTOiBzbm1wbGliOiBNYWtlIG5ldHNubXBfbGFyZ2VfZmRfaXNfc2V0KCkgcmV0dXJuIGZhbHNlIG9uIFVuaXggc3lzdGVtcyBpZiB0aGUgZmlyc3QgYXJndW1lbnQgZXF1YWxzIC0xIChhIHZhbHVlIHRoYXQgc2hvdWxkbid0IGJlIHBhc3NlZCBieSB0aGUgY2FsbGVyKS4KKyAgICBDSEFOR0VTOiBXaW5kb3dzOiBNYWtlIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZSgpIHNocmluayBiZWhhdmlvciBjb3JyZWN0LgorCitjb21taXQgMjNkYjBjZjA5YjhiMGVhYjM3Yjc0OWVmMGMzYzNmMzA2OTAwMjQ1YworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE5vdiAyMSAyMzowMjo1NyAyMDExICswMTAwCisKKyAgICBGaXggY2FzdGluZyB0dl91c2VjIHRvIGludCB3aGljaCBtYXkgYmUgdG9vIHNob3J0CisKK2NvbW1pdCA4MGVlNDAyMmU1MzRlNjRhYWQ1YTVmMjcxOTI4NDNiNDJhY2I4NWUwCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgTm92IDE5IDA5OjE0OjAyIDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDM0MzkyMzQ6IE1vdmUgbmV0c25tcF9wYXNzX3N0cl90b19lcnJubyB0byBwYXNzX2NvbW1vbiBhbmQgcmVuYW1lIGl0IHRvIG5ldHNubXBfaW50ZXJuYWxfcGFzc19zdHJfdG9fZXJybm8KKworY29tbWl0IDBiYWE5Mjk2YzA3MmJiMzczNTc2MGIwZGQ5OTJmMmQxZDNjYTI3ZmEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBOb3YgMTkgMDk6MDU6MjQgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMzQzOTIzNDogQ29ycmVjdCB0aGUgZGVwZW5kZW5jaWVzIG9mIHVjZC1zbm1wL3Bhc3MgYW5kIHVjZC1zbm1wL3Bhc3NfcGVyc2lzdAorCitjb21taXQgMWFhNzA0ZTRhMjk0NDMwYjI4ZTM5YjZmOWU0NjgzYjhhNDhiY2UwNAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IE5vdiAxOSAwODozNToyMSAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRmFjdG9yIG91dCBhc2MyYmluIGFuZCBiaW4yYXNjLiBBZGQgYSBuZXRzbm1wX2ludGVybmFsXyBwcmVmaXggdG8gdGhlbQorCitjb21taXQgY2RhOGZlOTEwMTNmMTJjYmY2NGEwNzc1YWJiNTU3MjAwMzVhZjkzMQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IE5vdiAxOSAwMDo1NToyNCAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogQ2FsbCBzbm1wX29pZHRyZWVfY29tcGFyZSBpbnN0ZWFkIG9mIHNubXBfb2lkX21pbl9jb21wYXJlCisgICAgQ0hBTkdFUzogc25tcGQ6IFJlbW92ZSBzbm1wX29pZF9taW5fY29tcGFyZSBzaW5jZSBpdCBpcyBpbnRlcm5hbCBhbmQgdW51c2VkCisKK2NvbW1pdCA4NWY4OTNlMmI2MDVlNjdmOWJkMDQ0M2M3NGUyZWQyNjlhYTY4NTY0CitBdXRob3I6IE5pa2kgRGVuZXYgPG5pa2lfZEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBOb3YgMTcgMjI6NDI6MzIgMjAxMSArMDEwMAogCiAgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDMxNzU2NDA6IFVzZSBJUF9SRUNWRFNUQUREUiBzb2Nrb3B0IHdoZXJlIGF2YWlsYWJsZSAoKkJTRCkKICAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxODMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgVGhpcyBodW5rIGZlbGwgb2Ygd2hlbiB0aGUgcmVzdCBvZiB0aGUgcGF0Y2ggd2FzIG1lcmdlZC4KIAotY29tbWl0IGMwNDhmMmNlNDNiZmE4MmU4ZDNhZDhhMmJkMzEyMjkwYzZiYTI3ZjAKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEFwciAxNSAxMzo0MjoxNCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSEVTOiAzMTgzMDAwOiBGaXggY2FsY3VsYXRpb24gb2YgY29tbW9uIE9JRCBwcmVmaXggbGVuZ3RoCi0gICAgQ0hBTkdFUzogc25tcGxpYjogQlVHUzogMzE4Mjk4NTogRml4IGNhbGN1bGF0aW9uIG9mIGNvbW1vbiBPSUQgcHJlZml4IGxlbmd0aAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDE4MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDBlMmQ4ZTgzMzdhZjcyNTdmN2ViNzI3Njc4ZjgwMzRlODRhZTc0Y2UKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEFwciAxNSAxMzo0MjoxNCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSEVTOiAzMTgzMDAwOiBGaXggY2FsY3VsYXRpb24gb2YgY29tbW9uIE9JRCBwcmVmaXggbGVuZ3RoCi0gICAgQ0hBTkdFUzogc25tcGxpYjogQlVHUzogMzE4Mjk4NTogRml4IGNhbGN1bGF0aW9uIG9mIGNvbW1vbiBPSUQgcHJlZml4IGxlbmd0aAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDE4MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDM5MTU5N2NmZmQ5YWJkZTVmZjQ2Yjc0YzViNmM3ZTMyMWFiN2QzYzEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEFwciAxNSAxMzo0MjoxNCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSEVTOiAzMTgzMDAwOiBGaXggY2FsY3VsYXRpb24gb2YgY29tbW9uIE9JRCBwcmVmaXggbGVuZ3RoCi0gICAgQ0hBTkdFUzogc25tcGxpYjogQlVHUzogMzE4Mjk4NTogRml4IGNhbGN1bGF0aW9uIG9mIGNvbW1vbiBPSUQgcHJlZml4IGxlbmd0aAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE4MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDZiM2ZiYmFkOTEzYThkNzVhOGFlNTBhNmQ1MzIwZTFmYWZlMGUxMGQKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEFwciAxNSAxMzo0MjoxNCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSEVTOiAzMTgzMDAwOiBGaXggY2FsY3VsYXRpb24gb2YgY29tbW9uIE9JRCBwcmVmaXggbGVuZ3RoCi0gICAgQ0hBTkdFUzogc25tcGxpYjogQlVHUzogMzE4Mjk4NTogRml4IGNhbGN1bGF0aW9uIG9mIGNvbW1vbiBPSUQgcHJlZml4IGxlbmd0aAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE4MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDBmMWI3ODc1NWY5ZDkyZDM5YjEwYmI2ZjBhYzMyNDkzMjA2YjM2ODQKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEFwciAxNSAxMzoxNzozNyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBMaW51eDogUEFUQ0hFUzogMzIwNTgxMTogT3B0aW9uIHRvIHNraXAgZmQvbG9vcC9yYW0gZGV2aWNlcyBpbiBkaXNrSU9UYWJsZQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE4MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGU0NTc0MzcyZTQ3OGQzN2VmYTM5NzVjYTBmYzcxOGZjZGEzMDYwOGYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEFwciAxNCAyMTozMTowOSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBweXRob246IFBBVENIRVM6IDMxODUwODU6IEZpeCBzZWdmYXVsdCBvbiA2NC1iaXQgc3lzdGVtcwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDE4MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDZjMDZhMjU5NGY2ZTg3YzcyMjUxZmY3OTNlN2Q5MTg3Yjg5MTVmYmMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEFwciAxNCAyMTozMTowOSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBweXRob246IFBBVENIRVM6IDMxODUwODU6IEZpeCBzZWdmYXVsdCBvbiA2NC1iaXQgc3lzdGVtcwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE4MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDI1N2Y0ZDczNzAyZmM0YzdiYTJmN2UxMzIxYTk2NTU5NDZiMGU4MDMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEFwciAxNCAyMTozMTowOSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBweXRob246IFBBVENIRVM6IDMxODUwODU6IEZpeCBzZWdmYXVsdCBvbiA2NC1iaXQgc3lzdGVtcwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE4MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDdlODk5YjVjZjJkYjIxNjRlMGMxZDU4NzA2Yjk1MDJlODY1OTY5NzAKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEFwciAxNCAyMToxMDo1NiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzE3NTMyMzogRml4IGhhbmRsaW5nIG9mICd3aGlsZSAoZmFsc2UpJyBibG9ja3MKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxNzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA2OTY3ZDc4OTk5YjdmNGNiNTI3MDIwNzUwY2QzNTkyN2ZlNGYyZmU3Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBcHIgMTQgMjE6MTA6NTYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMxNzUzMjM6IEZpeCBoYW5kbGluZyBvZiAnd2hpbGUgKGZhbHNlKScgYmxvY2tzCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTc5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNTAyMzlmNjY1MDU4NmJiNGI5OTIwNTQyNDU5MmI3YjUxOTFkNTQwNAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXByIDE0IDIxOjEwOjU2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMTc1MzIzOiBGaXggaGFuZGxpbmcgb2YgJ3doaWxlIChmYWxzZSknIGJsb2NrcwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE3OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDkzYjMyZTI4ZWY1NTE5OTMzZjUwMmRlY2Y5OWM2OGVhODVhMGRlYTUKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEFwciAxNCAyMToxMDo1NiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzE3NTMyMzogRml4IGhhbmRsaW5nIG9mICd3aGlsZSAoZmFsc2UpJyBibG9ja3MKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1ZDVkNmZkNDgxNTI4YWRmN2NhMDFlYzA3OTA4NDljYTczMTk2ZGMyCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBcHIgMTQgMjA6NTI6NTkgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMDQ4ODM6IEZpeCBoYW5kbGluZyBvZiBub24tdGFibGUgb2JqZWN0cyBuYW1lZCBmb29UYWJsZQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDE3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDNhOGRjYTMxNDNjNWNhMTE0NDNmZWIwN2Y3YWY0YmVkODA4YmRkMzIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEFwciAxNCAyMDo1Mjo1OSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzIwNDg4MzogRml4IGhhbmRsaW5nIG9mIG5vbi10YWJsZSBvYmplY3RzIG5hbWVkIGZvb1RhYmxlCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTc4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYjRiYzdiMjdjZGE0OTkzOTFiOWVjYjJjYmU1NDFlMTBjMTUxYWJkNQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXByIDE0IDIwOjUyOjU5IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMjA0ODgzOiBGaXggaGFuZGxpbmcgb2Ygbm9uLXRhYmxlIG9iamVjdHMgbmFtZWQgZm9vVGFibGUKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1OWQ0ZDlkYzJlNDJhMjk5YzU4YjgwYzdjZTg5ODM2ODNiZDJhNzcyCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBcHIgMTQgMjA6NTI6NTkgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMDQ4ODM6IEZpeCBoYW5kbGluZyBvZiBub24tdGFibGUgb2JqZWN0cyBuYW1lZCBmb29UYWJsZQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDZhMjk5NjhjYmRjMDE2NmE0N2E5M2QxYzE0ZDM5YTJlMzlmYTk4ZDIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEFwciAxNCAyMDo0NDozNyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzIxMTQ4NDogU3VwcG9ydCBlbnVtZXJhdGlvbnMgaW4gbm90aWZpY2F0aW9uIHZhcmJpbmRzCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMzQyY2E5ZGI1MzcxY2JhZDdmYTk2YWYzMmFjZWQ3NTBjMmQ3N2RiMQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXByIDE0IDIwOjQ0OjM3IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMjExNDg0OiBTdXBwb3J0IGVudW1lcmF0aW9ucyBpbiBub3RpZmljYXRpb24gdmFyYmluZHMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxNzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjNmE3MWVhZWJlZjZjODMxZGFhMzZmNTdlYzFmZjIzMGYwNTJiMzMwCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBcHIgMTQgMjA6NDQ6MzcgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMTE0ODQ6IFN1cHBvcnQgZW51bWVyYXRpb25zIGluIG5vdGlmaWNhdGlvbiB2YXJiaW5kcwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDUyODdmNWQxNDYzMWQ0MDg0ZWVlMjQwMzE3NDZjNTQyMjUyNjcxMjIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEFwciAxNCAyMDo0NDozNyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzIxMTQ4NDogU3VwcG9ydCBlbnVtZXJhdGlvbnMgaW4gbm90aWZpY2F0aW9uIHZhcmJpbmRzCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZjA4YTE5OTgwNzFiNmQ0ZjRlYzhkOWY1ZmJmOGFlZmU1NjI5Y2U3YQorY29tbWl0IDVjOTEzZTU0NjU2YWUwMDk2YjFmZWI2ZGE5OGI1ZmM5Y2E4MWYyNzYKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBBcHIgMTIgMjA6MDE6NTUgMjAxMSArMDAwMAorRGF0ZTogICBXZWQgTm92IDE2IDIzOjMzOjA3IDIwMTEgKzAxMDAKIAotICAgIEFkZCBtaXNzaW5nIHN5c3RlbSBvaWRzIHRvIG1pYgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDE3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBEZWZpbmUgdGhlIGZ1bGwgTmV0QlNEIGhpZXJhcmNoeSBkb3dud2FyZHMKIAotY29tbWl0IDMzMzFlMDliYmVjNzM0MDM0ZGJkYjc2N2U2NmMwM2UxNGE0NTQ4ZDUKK2NvbW1pdCBiODgxODQxYmQwNDkzZGQ3MWQ2MzI1OWJkZGVkNDQ5YjA2ZjAyYzMyCiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgQXByIDEyIDIwOjAxOjU1IDIwMTEgKzAwMDAKK0RhdGU6ICAgV2VkIE5vdiAxNiAyMzozMDozMyAyMDExICswMTAwCiAKLSAgICBBZGQgbWlzc2luZyBzeXN0ZW0gb2lkcyB0byBtaWIKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxNzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgRml4IHNpemVfdC9pbnQgbWlzbWF0Y2hlcwogCi1jb21taXQgZGQ4ODlkNTZhYmM0YTZhMmI3NmIxZjc0ODllYTU1YjA0NjdiZTE4NAorY29tbWl0IGNhMjk0Y2Y3NWJiYzhlOTBkYmY0NGVlNDA0Nzg5MzVlOTFkYjE0ODcKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBBcHIgMTIgMjA6MDE6NTUgMjAxMSArMDAwMAorRGF0ZTogICBXZWQgTm92IDE2IDIzOjE4OjAzIDIwMTEgKzAxMDAKIAotICAgIEFkZCBtaXNzaW5nIHN5c3RlbSBvaWRzIHRvIG1pYgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcwogCi1jb21taXQgMGExODVhOWQzMDZiNjgxNmEyNmUzNTA4ZGNiMDk4YjkxODYxZGMwYgorY29tbWl0IGNkMzJjMmRmZjA2YjliNDUyY2MxOGQ1NTJkMmYyMjM0MDkyYzgyOWMKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBBcHIgMTIgMjA6MDE6NTUgMjAxMSArMDAwMAorRGF0ZTogICBXZWQgTm92IDE2IDIzOjE3OjA5IDIwMTEgKzAxMDAKIAotICAgIEFkZCBtaXNzaW5nIHN5c3RlbSBvaWRzIHRvIG1pYgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBGaXggZm9ybWF0IHdhcm5pbmcKIAotY29tbWl0IGQ5NDc3MjUxZDE1NGZiYjUyNmY1MzM2N2IwYjZlYmNkMWQyNjc0YWMKK2NvbW1pdCA4ODMxMzZjMmIyZmEwNzM5ZjQzN2E4Y2ZiNjYxNGFjY2M3NmUyNjhlCiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgQXByIDEyIDE5OjUzOjEwIDIwMTEgKzAwMDAKK0RhdGU6ICAgV2VkIE5vdiAxNiAyMzoxNTo1OCAyMDExICswMTAwCiAKLSAgICBGaXggZm9yIGdhcmJhZ2Ugb3V0cHV0IHdoZW4gYWdlbnQgcHJlc2VudHMgbW9yZSBjb2x1bW5zIGluIGJ1bGsKLSAgICByZXNwb25zZSB0aGFuIG91ciBsb2NhbCBNSUIgZmlsZSAgc3BlY2lmaWVkLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDE3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBNb3JlIG5lZWRzIGZvciBORVRTTk1QX1BSSW8gZm9ybWF0IHNwZWNpZmllcgogCi1jb21taXQgNzljNjk4YTE0NzRlMTA4NTVmMjEwYTY5OTg3MDgwOTY3MTJiZTYwOAorY29tbWl0IGI4MDg0YTdjY2M5MDliNmQ2ZGI3YzBlOGU1OTZkNzg2NzFmNTY3OGIKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBBcHIgMTIgMTk6NTM6MTAgMjAxMSArMDAwMAorRGF0ZTogICBXZWQgTm92IDE2IDIzOjE0OjI2IDIwMTEgKzAxMDAKIAotICAgIEZpeCBmb3IgZ2FyYmFnZSBvdXRwdXQgd2hlbiBhZ2VudCBwcmVzZW50cyBtb3JlIGNvbHVtbnMgaW4gYnVsawotICAgIHJlc3BvbnNlIHRoYW4gb3VyIGxvY2FsIE1JQiBmaWxlICBzcGVjaWZpZWQuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIEZpeCB1c2luZyBjaGFyIGFzIGFycmF5IGluZGV4IChjdHlwZS5oKQogCi1jb21taXQgZjM5NGEyNjY2MDRhZjlmM2UxYjUzZWY2ZGEzNzViYWE0YTM5MDFmZQorY29tbWl0IDg0NTI5ZTYzMjBhODlkOTdmMTMxNGFlYmFkODA2MjU1ZDJhMWIxOGMKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBBcHIgMTIgMTk6NTM6MTAgMjAxMSArMDAwMAorRGF0ZTogICBXZWQgTm92IDE2IDIzOjAwOjU3IDIwMTEgKzAxMDAKIAotICAgIEZpeCBmb3IgZ2FyYmFnZSBvdXRwdXQgd2hlbiBhZ2VudCBwcmVzZW50cyBtb3JlIGNvbHVtbnMgaW4gYnVsawotICAgIHJlc3BvbnNlIHRoYW4gb3VyIGxvY2FsIE1JQiBmaWxlICBzcGVjaWZpZWQuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIEZpeCBtaXNzaW5nIGZvcm1hdCBmb3IgRnJlZUJTRCA0CiAKLWNvbW1pdCA1NDc4N2QyNWIyZmJhYWQwNDdhNTRmYzMwZWZlZWNjMmQyODA1Y2U3Citjb21taXQgNGJkMDM1Mjk1NWEyNTUxYmZlMDIzMDhkZDEzNGI5MTI4Yzk4YjllOQogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEFwciAxMiAxOTo1MzoxMCAyMDExICswMDAwCitEYXRlOiAgIFdlZCBOb3YgMTYgMjI6NTk6MzYgMjAxMSArMDEwMAogCi0gICAgRml4IGZvciBnYXJiYWdlIG91dHB1dCB3aGVuIGFnZW50IHByZXNlbnRzIG1vcmUgY29sdW1ucyBpbiBidWxrCi0gICAgcmVzcG9uc2UgdGhhbiBvdXIgbG9jYWwgTUlCIGZpbGUgIHNwZWNpZmllZC4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgRml4IHBhcmFudGhlc2lzIHByb2JsZW0KIAotY29tbWl0IDAwN2U3NmQ2ZGMzOGFjZGZhYjc1NmZlOWJkOGUyM2Q4MjA5NWI0YzYKK2NvbW1pdCBmZTYyNjliMTkwMGNmNDRkYzI3YTE5OWE3NjFkMTVhMDFjM2YzMDkyCiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgQXByIDEyIDE5OjUwOjA4IDIwMTEgKzAwMDAKK0RhdGU6ICAgV2VkIE5vdiAxNiAyMjo1ODozNCAyMDExICswMTAwCiAKLSAgICBGaXggd3JvbmcgbmFtZSBmb3IgY29uZmlnIHRva2VuICdkb05vdFJldGFpbk5vdGlmaWNhdGlvbkxvZ3MnCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTc0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIEZpeCBzaXplX3QvaW50IG1pc21hdGNoZXMKIAotY29tbWl0IGYxZWRjZmQwNDliNzYwYmM1MDEwNGNmZTgyODM4ZWQyYjM2MzI4NjEKK2NvbW1pdCBhNGRiOWY5ZmMxM2QyMWVjZmY0ODhlYjQxMDM3NmVkZGE2YzI4MjMyCiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgQXByIDEyIDE5OjUwOjA4IDIwMTEgKzAwMDAKK0RhdGU6ICAgV2VkIE5vdiAxNiAxMzo0MzozNCAyMDExICswMTAwCiAKLSAgICBGaXggd3JvbmcgbmFtZSBmb3IgY29uZmlnIHRva2VuICdkb05vdFJldGFpbk5vdGlmaWNhdGlvbkxvZ3MnCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTc0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzCiAKLWNvbW1pdCBhZjUwOTI0MDY5YTg4YjViYWRjMDg0MDY1ZTIxYjY5MWYzMWYzMTNkCitjb21taXQgMzkwYzAxMTRjOGVjMGJkYjI3YjA4YjZmNzRlM2Y2ZWYzYTYyOTgxYgogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEFwciAxMiAxOTo1MDowOCAyMDExICswMDAwCitEYXRlOiAgIFdlZCBOb3YgMTYgMTM6Mzc6NDkgMjAxMSArMDEwMAogCi0gICAgRml4IHdyb25nIG5hbWUgZm9yIGNvbmZpZyB0b2tlbiAnZG9Ob3RSZXRhaW5Ob3RpZmljYXRpb25Mb2dzJwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBGaXggZm9ybWF0IHNwZWNpZmllcnMgdG8gYXZvaWQgd2FybmluZ3MKIAotY29tbWl0IDMzYjk0MDVkMTIwMzA0NmE0NTkwNjM0YzU5MmM3MTgxYzEzM2I3ZjIKK2NvbW1pdCAyNWNmYzE5NjJhZTU3NmNjYjE1NThkYTFlM2VmOGI2YzE3ZjYzYzE2CiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgQXByIDEyIDE5OjUwOjA4IDIwMTEgKzAwMDAKK0RhdGU6ICAgV2VkIE5vdiAxNiAxMToyNzo1MyAyMDExICswMTAwCiAKLSAgICBGaXggd3JvbmcgbmFtZSBmb3IgY29uZmlnIHRva2VuICdkb05vdFJldGFpbk5vdGlmaWNhdGlvbkxvZ3MnCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTc0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIFJlYWxseSB1cC10by1kYXRlIG1pYnMKIAotY29tbWl0IDJmYjBiODljMjMyM2RiMzA5YjE2MmQ2MGE5NDNjMWUzYTBhMTdkMDcKK2NvbW1pdCAwZTg2Yzc4MWYzOTg5YmYwMjJjODk5M2ExMTg2MTdiNzRhNzU0MjBjCiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgQXByIDkgMjE6NTk6MTEgMjAxMSArMDAwMAorRGF0ZTogICBXZWQgTm92IDE2IDA5OjE3OjE5IDIwMTEgKzAxMDAKIAotICAgIFJlbW92ZSBib2d1cyAoTGludXgpIGRlZmluZXMKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgbWVtb3J5X2xpbnV4OiBnZXQgU2htZW0gZnJvbSAvcHJvYy9tZW1pbmZvIGZvciAyLjYgKG9yIG5ld2VyKSBrZXJuZWxzCiAKLWNvbW1pdCA0ZjNkYTc2N2IwZjg3Yzk5YzRjMWY1Yjc0MTIwM2Q3ZDY5NmJlZWVhCitjb21taXQgYmYyNjRkMTVkZWQ3YWNiYmYyZTM4NzFiOThmZDFmY2VmNDNkOWVjMwogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IEFwciA5IDIxOjU5OjExIDIwMTEgKzAwMDAKK0RhdGU6ICAgV2VkIE5vdiAxNiAwOToxNjoxNiAyMDExICswMTAwCiAKLSAgICBSZW1vdmUgYm9ndXMgKExpbnV4KSBkZWZpbmVzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTczIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIG1lbW9yeV9saW51eDogY2xvc2Ugc29ja2V0cyBpbiBlcnJvciBzaXR1YXRpb25zCiAKLWNvbW1pdCBjM2RiYmQ5ZmM1N2FjYmNhOTk5MzU2Y2RmOWJlOTU4Y2MxMTczNWVmCitjb21taXQgNTdmZjhhNDBiYWU1ZDliY2FkMTYwODkxNDJhOWNmMzI4YzlmYTFmNQogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IEFwciA5IDIxOjU2OjMzIDIwMTEgKzAwMDAKK0RhdGU6ICAgV2VkIE5vdiAxNiAwOToxNDo1NyAyMDExICswMTAwCiAKLSAgICBIQVZFX1RNX1RNX0dNVE9GRiBpcyBIQVZFX1NUUlVDVF9UTV9UTV9HTVRPRkYKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgZGlzbWFuL3BpbmcsIGRpc21hbi90cmFjZXJvdXRlOiBDbG9zZSBzb2NrZXRzIGluIGVycm9yIHNpdHVhdGlvbnMKIAotY29tbWl0IDE4NDg0OGY2YTUzNjJhNDUwMTk3NGE1Y2YyZTU3NzFkMjg2NGZmNzgKK2NvbW1pdCA4YTI1MDJhMTVjMzIxN2I5NTkzOWEzYzgzNjE2N2QyMzBhYzM1ZjAyCiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgQXByIDkgMjE6NTY6MzMgMjAxMSArMDAwMAorRGF0ZTogICBXZWQgTm92IDE2IDA5OjEzOjUzIDIwMTEgKzAxMDAKIAotICAgIEhBVkVfVE1fVE1fR01UT0ZGIGlzIEhBVkVfU1RSVUNUX1RNX1RNX0dNVE9GRgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE3MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBVcC10by1kYXRlIGxpc3Qgb2YgUkZDcyB3aXQgbWlicwogCi1jb21taXQgYjFjZDIxYTRkNzFjMTdjMTIyMTM0YWMzMjg0OTE3ZjY1MzYzZTRkMgotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IEFwciA5IDIwOjA0OjI5IDIwMTEgKzAwMDAKK2NvbW1pdCBkY2RkNzAyMTExZDhkYTVmNTM4MDRjZmNmMGRmZGFkNzMxNDY4YmRlCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIE5vdiAxNSAxMDo1NzozNCAyMDExICswMDAwCiAKLSAgICBTb2xhcmlzIHN1cHBvcnQgZm9yIFNDVFAtTUlCCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIERvbid0IHRyeSB0byBpbnN0YWxsIGFuIGVtcHR5IGxpc3Qgb2YgbWFuIHBhZ2VzIChNQU4zKQogCi1jb21taXQgY2NlMzA0MTkzMDk4Zjc1NzM4MDdjODJhNzA4YmNiZTAzNDdhN2EyYgotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IEFwciA5IDIwOjA0OjI5IDIwMTEgKzAwMDAKK2NvbW1pdCBiYTYxOTgwNGU1OTc4YThkZjc1NDg0NGVmY2NhNTJiNjliNTAxNWZhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTm92IDE0IDEzOjM0OjIwIDIwMTEgKzAxMDAKIAotICAgIFNvbGFyaXMgc3VwcG9ydCBmb3IgU0NUUC1NSUIKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgTWluR1c6IE1ha2Ugc3VyZSB0aGF0IHRoZSBiYWNrc2xhc2hlcyBpbiB0aGUgcHNraWxsIG1lc3NhZ2UgYXJlIGRpc3BsYXllZC4KIAotY29tbWl0IGM2NjU5Yzk0YWQ5YmE4MDYwZGRlMTg5NDI3NjFjZTg1ZDFhNWNjMTkKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBBcHIgOSAxOTo1MDozMCAyMDExICswMDAwCitjb21taXQgOTIzZWVjYzUwN2Y3NTA0M2I2MGM1ZTY4MDUzYTRmMzk2YWIwYjBkMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE5vdiAxNCAxMjozNjozOCAyMDExICswMTAwCiAKLSAgICBUWiBpcyBvbmUgaG91ciBvZmYgaWYgSEFWRV9UTV9UTV9HTVRPRkYgYW5kIFNZU1YgKHN1Y2ggaXMgTGludXgpCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTY5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIENvbXBpbGVyIHdhcm5pbmcgZml4IGZvciBzeXN0ZW1zIHdoZXJlIHVpbnQ2NF90ID0gdW5zaWduZWQgbG9uZyAoZS5nLiBSSEVMIDYuMS94ODZfNjQpCiAKLWNvbW1pdCA5ZmE2NGYyN2FjNTE5OGU1NGZlZjJkZjU4ZGMwOTRhZjIzN2ZhZjFlCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgQXByIDkgMTk6NTA6MzAgMjAxMSArMDAwMAotCi0gICAgVFogaXMgb25lIGhvdXIgb2ZmIGlmIEhBVkVfVE1fVE1fR01UT0ZGIGFuZCBTWVNWIChzdWNoIGlzIExpbnV4KQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE2OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGE5YTYxOWUwZDE3MzAzYzllZTdkNWE3ZTcxMDZlYTBhZjMzYjllOTYKLUF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgQXByIDEgMDE6MTE6MDcgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogZHRsczogb3ZlcmhhdWwgb2YgZGVidWcKLSAgICAKLSAgICAgIC0gZHJhc3RpYyByZWR1Y3Rpb24gaW4gbnVtYmVyIG9mIG1lc3NhZ2VzIGFuZCBtc2cgY29tcGxleGl0eQotICAgICAgICBmb3IgYmFzaWMgZHRsc3VkcCB0b2tlbgotICAgICAgLSBwcmV2aW91cyBsZXZlbCBvZiBkZXRhaWwgYXZhaWxhYmxlIGJ5IGFkZGluZyA5OmR0bHNkdXAgdG9rZW4KLSAgICAKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNjggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxZmFkOTg3ZWVjMWRlZjdjZDg2YzY1YWMyNzkwMTM3M2U3YTYzZDBiCi1BdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEFwciAxIDAwOjUzOjI5IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IGR0bHM6IGNsZWFuIHVwIGNsb3NlOyBjYXRjaCAnY29ubmVjdCcvJ2Rpc2Nvbm5lY3QnCi0gICAgCi0gICAgICBjb25uZWN0ID0gd2UgZ2V0IHN1Y2Nlc3NmdWxseSBkZWNvZGVkIHNubXAgZGF0YQotICAgICAgZGlzY29ubmVjdCA9IDAgYnl0ZSByZWFkLCBzc2ggc2h1dGRvd24gZmxhZyBzZXQKLSAgICAgIGFkZCBiaW9fY2FjaGUgZmxhZ3MgZm9yIGNvbm5lY3RlZC9kaXNjb25uZWN0ZWQKLSAgICAgIGNoZWNrIGZvciBudWxsIHB0ciBiZWZvcmUgZGVyZWZlcmVuY2luZwotICAgICAgY2xvc2UgaGFuZGxpbmc6Ci0gICAgICAtICBvbmx5IHNlbmQgcXVldWVkIGRhdGEgaWYgd2UgZ290IHRvIGNvbm5lY3RlZCBzdGF0ZQotICAgICAgLSAgc2VyaW91c2x5IHJlZHVjZSB0aW1lb3V0IHRvIHdhaXQgZm9yIGp1bmsgcmVhZC4gaSB0aGluawotICAgICAgICAgd2Ugc2hvdWxkbid0IGV2ZW4gYm90aGVyCi0gICAgICAtIHJldHVybiBlYXJseSBpZiBjYWNoZXAgaXMgTlVMTCwgc28gd2UgZG9uJ3QgaGF2ZSB0byB0ZXN0IGl0Ci0gICAgICAgIHJlcGVhdGVkbHkKLSAgICAgIC0gdXNlIGNvcnJlY3QgbmZkcyB2YWx1ZSBpbiBzZWxlY3QgY2FsbAotICAgIAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE2NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDgwNjMyNmI1OGE5MTY4M2VhMmE2NDJmNmMzMmExOGIwOTg3NjQ1ZGYKLUF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWFyIDMxIDA1OjE3OjQwIDIwMTEgKzAwMDAKLQotICAgIG1ha2UgdHJ1bmsgYW5kIHY1LTYtcGF0Y2hlcyBjbG9zZWx5IGFsaWduZWQKLSAgICAKLSAgICAgIG1vc3RseSBjaGFuZ2VzIGluIGRlYnVnLCBjb29raWUgdHJhY2tpbmcKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNjYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwZDdlN2U0MmVlM2JhMGZhZjIxNTQwMDkwMDQzNGQ2MDI0YzI1MGY4Ci1BdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1hciAzMSAwMzo1MzozMyAyMDExICswMDAwCi0KLSAgICBhZGQgY29va2llIGhhbmRsaW5nOyByZW1vdmUgaWZkZWYnZCBjb2RlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTY1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOTg4OGQ0NDQzODhlM2Y2YjBmNjllYWFhYTIyNThiMzE0YjM3NzA1NwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWFyIDE4IDExOjIzOjI0IDIwMTEgKzAwMDAKLQotICAgIHZlcnNpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTQ3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYTJiNDUzYmRhNzIzNzNkYmJiMTE1ZjdhOWMwNGE2MzVkOTMzOWUwOQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWFyIDE4IDExOjE4OjIyIDIwMTEgKzAwMDAKLQotICAgIHZlcnNpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTQ2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYjVkNTQ5YTJlMTc5Y2IxOGQ1YWIzNDQwMzA1MzEwODQxMTYxZmYxZgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWFyIDE4IDExOjE1OjU1IDIwMTEgKzAwMDAKLQotICAgIG1ha2UgZGVwZW5kCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTQ1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYmRhMjJlMGJjNWQ0ODJjNWMzMDNlMzFiYTVjNDMyYzA5MWZhMGRkOAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWFyIDE4IDEwOjM2OjIyIDIwMTEgKzAwMDAKLQotICAgIGRvY3VtZW50YXRpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTQ0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNzM0NTMyMmUyODEyNTg4YjEzYTRjODFiM2NkYzg3NzI5Y2MzZDhmNwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWFyIDE4IDEwOjMyOjQ5IDIwMTEgKzAwMDAKLQotICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE0MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDRhZWE1ODY2ZjE1Zjk2NWRhNzI2NGI5YzEyM2E3MjhjOWNmYTg3M2QKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXIgMTcgMjE6MDk6MTAgMjAxMSArMDAwMAotCi0gICAgRm9ybWF0dGluZyBib3RjaAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE0MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDBlZjhkY2QwMWQxNTQwYjhmYzc3MTYzODQ1ZjAxZTNlMmQ5YjUxMDEKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXIgMTcgMjE6MDc6MjcgMjAxMSArMDAwMAotCi0gICAgSW5zdGFsbCByZXF1aXJlZCBtaWJzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNzY3OTM2YTM3NWM0YTk3ZmQyMjk1MWRmZDJlYTdiODVhZWFmZDk2YwotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1hciAxNyAyMTowNToyMSAyMDExICswMDAwCi0KLSAgICBOZXcgUkZDIG1pYnMKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNDAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5ZTUwNTZmMTI0ZjE1NDZmNmY1MDZkODYxNjliYzhjZjBmNTA1ZTAyCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBNYXIgMTUgMTI6Mzc6MjAgMjAxMSArMDAwMAotCi0gICAgdmVyc2lvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxMzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA2NjYyOGFhN2UwNDBkNmE4YTNlNjE4ZGNmNzI4NDNlYTBiODFlMTE2Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBNYXIgMTUgMTA6NTc6NTkgMjAxMSArMDAwMAotCi0gICAgdmVyc2lvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxMzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3ZWE1MTc5MDVhODE3ODRjNzhlN2ZjYWU4ZTcyMzQ4NTI0MTY2YWI4Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBNYXIgMTUgMTA6NTY6MDAgMjAxMSArMDAwMAotCi0gICAgbWFrZSBkZXBlbmQKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxMzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA2YjhiNDE2OGY5ZWU4MmE2YjI1YTFhZjdlMDA3Y2QwZTc1NTQ3ZDUzCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBNYXIgMTUgMTA6NDI6MDYgMjAxMSArMDAwMAotCi0gICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTM1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZWM0NGY3Y2U0M2MzNjJiODZlM2ZkMWM4YmE5OWRkNTE0ZGY5ODIzMQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgTWFyIDE1IDEwOjQxOjI3IDIwMTEgKzAwMDAKLQotICAgIHZlcnNpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTM0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYTM3MTYxOTNmZTRjZjJlODJjNGJlMGU5ZThlNmY0ZTY3ZDRkMDZiZAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIE1hciAxNSAxMDozMToxMiAyMDExICswMDAwCi0KLSAgICBTcGVsbGluZyBmaXg6IHJlZ2luZXJhdGVkIC0+IHJlZ2VuZXJhdGVkLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDEzMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGJlZDkyNzJmZjlmYTZmZmI3NTEzYTgyZWM2ZDQyM2U2YTRkZTViMjYKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBNYXIgMTUgMDk6NTk6MzAgMjAxMSArMDAwMAotCi0gICAgRml4ZWQgYSBjb21waWxlciB3YXJuaW5nIHRoYXQgd2FzIGludHJvZHVjZWQgaW4gcjIwMTEzLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDEzMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDY5ZDY4MTViNjU0NGY0N2QzOTI5MTE5MWU5ZGViNWJiYWUxMTM0ZTIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIE1hciAxNCAxNToyMTozNiAyMDExICswMDAwCi0KLSAgICB2ZXJzaW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDEyOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDljYzhjNzJlNjc2ZjBlNDZkNzg0ZDE1ZjFhYjA3MmMxOTJhNTRiZjcKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIE1hciAxNCAxNDoxNDowNyAyMDExICswMDAwCi0KLSAgICB2ZXJzaW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDEyNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGIwNzlhMGEzZDFjZmY0ZjRhMzBhNTZmZmQ1NWJkY2UxZWE1ZGRlZTgKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIE1hciAxNCAxNDoxMToxNCAyMDExICswMDAwCi0KLSAgICBtYWtlIGRlcGVuZAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDEyNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDA2OTdkMGFkYTk3NDc0NjEzMjMzYTY5YjU3MzMwMzMzZTc1YjE4ODYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIE1hciAxNCAxNDowMDo1MiAyMDExICswMDAwCi0KLSAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDEyNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGVkZmNmZTA3NmY3MDdkMGQ3NGZiOGUxYzdmNTY0MmRjOGQ4ODk1MTkKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIE1hciAxNCAxMzo1NzowMCAyMDExICswMDAwCi0KLSAgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxMjQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiNWU5YzhkZDQyNzJiNjdmOTg3NzY0OGQ0NDVhMDc0YzRlNDA1YjI4Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBNYXIgMTQgMTM6NDc6MDUgMjAxMSArMDAwMAotCi0gICAgdmVyc2lvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxMjMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwNWIzNzI4MWQwMGVkMGNhMTI3ODA0MmMwNTAyMTA4NGM3YjlhMzU0Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBNYXIgMTQgMDk6MzE6NTcgMjAxMSArMDAwMAotCi0gICAgRml4IG1haW4gYWdlbnQgc2VsZWN0IGNhbGwgdG8gdXNlIHRoZSByZW5hbWVkIEFQSSByb3V0aW5lLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDEyMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDdhNjFmODMyNTIzZWFiYTYwMzk3ZTdiZDU2NzM2NjdlMDNmZjI4ZWEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIE1hciAxMyAyMDowOTo1MiAyMDExICswMDAwCi0KLSAgICBCcmluZyB0aGUgbmFtaW5nIG9mIHRoZSBsYXJnZV9mZF9zZXQgc2VsZWN0IGNhbGwgaW50bwotICAgIGxpbmUgd2l0aCB0aGUgcmVzdCBvZiB0aGUgQVBJLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDEyMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDZlNWJkYzVjYmE0MzQ3OTIyZjY4Y2ExNWEzN2MzMzIxYWM5ODY1NTIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIE1hciAxMyAyMDowOTo1MiAyMDExICswMDAwCi0KLSAgICBCcmluZyB0aGUgbmFtaW5nIG9mIHRoZSBsYXJnZV9mZF9zZXQgc2VsZWN0IGNhbGwgaW50bwotICAgIGxpbmUgd2l0aCB0aGUgcmVzdCBvZiB0aGUgQVBJLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDEyMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDZkZWIzNjAwY2RlZGJiODAwZDBkNGIxODBiZDRhMGNkODU2MjlmZWMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIE1hciAxMyAyMDowNjoyNCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMzIwMzgwNjogQWRkIHRoZSBmdW5jdGlvbiBuZXRzbm1wX2xhcmdlX3NlbGVjdCgpCi0gICAgKHBsdXMgdHdlYWtzIHRvIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZSkKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxMjAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3MTFlMzNiYWJiMjA4YTkwNjIzZWNmNmI0MjRlZDExYzMzMDlmOTg3Ci1BdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IE1hciAxMiAwNjo1OTo1NiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiByZWFsbG9jK2luaXQgaW5zdGVhZCBvZiBjYWxsb2MKLSAgICAKLSAgICAgaW5zcGlyZWQgYnkgcGF0Y2ggMzE5NTUzMiBmcm9tIFN0ZXBoZW4gSGVtbWluZ2VyCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTE5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMWU3YTZiNDdjOGQ3ZDc3MTcxODlhOTQ2NmQxNzIxZGU4OGE3YTg3NwotQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBNYXIgMTIgMDY6NTk6NTYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogcmVhbGxvYytpbml0IGluc3RlYWQgb2YgY2FsbG9jCi0gICAgCi0gICAgIGluc3BpcmVkIGJ5IHBhdGNoIDMxOTU1MzIgZnJvbSBTdGVwaGVuIEhlbW1pbmdlcgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDExOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDE4ZjEyNWY5ZjNmM2YzY2ZjZjcxZWE3NTI5NDM1M2EwNmNhMWY0MmUKLUF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgTWFyIDEyIDA1OjQ3OjU4IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogb3B0aW1pemF0aW9ucyBmb3IgbGFyZ2Ugcm91dGUgdGFibGVzIGZyb20gU3RlcGhlbiBIZW1taW5nZXIKLSAgICAKLSAgICAgYXBwbGllZCBwYXJ0cyAxLTMgb2YgNCBmcm9tIGhpbSAobXNncyB0byBjb2RlcnMgb24gMi8yOC8xMTsgc3ViamVjdAotICAgICBpcC1mb3J3YXJkLW1pYiBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHM7IHBhcnQgNCBuZWVkcyBtb3JlIHdvcmsKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxMTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhMjRkNzliNzA0NzNiMWRjMjY2NDQ3MGFmZDc5Y2U2MzE4MDQ2NTU4Ci1BdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IE1hciAxMiAwNTo0Nzo1OCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IG9wdGltaXphdGlvbnMgZm9yIGxhcmdlIHJvdXRlIHRhYmxlcyBmcm9tIFN0ZXBoZW4gSGVtbWluZ2VyCi0gICAgCi0gICAgIGFwcGxpZWQgcGFydHMgMS0zIG9mIDQgZnJvbSBoaW0gKG1zZ3MgdG8gY29kZXJzIG9uIDIvMjgvMTE7IHN1YmplY3QKLSAgICAgaXAtZm9yd2FyZC1taWIgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzOyBwYXJ0IDQgbmVlZHMgbW9yZSB3b3JrCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTE4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMDU5OGI3N2UxYzNhYzczMGFjMDdkOTJmNzljMWIwMjQ1Yjc5MzUyZQotQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXIgMTEgMTQ6NDM6MTYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogYWRkIG1vcmUgb3BlbnNzbCBlcnJvciBjYXNlcyB3aGVyZSB3ZSBjaGVjayBmb3IgbG9jYWwgY2VydAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDExNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDUxZGQ2MjNlZTQ2N2UzYjk3ZGFjNGM1Y2NkYmNlNDJjMjcwN2UwMDcKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXIgMTEgMTI6MDE6MjMgMjAxMSArMDAwMAotCi0gICAgTWluR1c6IGRza1RhYmxlOiBSZXBvcnQgemVybyBmb3IgdW5pbXBsZW1lbnRlZCBmaWVsZHMgaW5zdGVhZCBvZiByYW5kb20gZGF0YS4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA4NGMyNDEyZjAwMjJhOTZlYWMyZjI5NDhjYWExODgwMzZhOTQ1MDM2Citjb21taXQgNDM0YmZjMWY3NDU3NTUwYjZmODdkNWJjZDUxMTI3NmIyNzBiNTk2NAogQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXIgMTEgMTE6MTE6MjggMjAxMSArMDAwMAorRGF0ZTogICBNb24gTm92IDE0IDExOjIyOjUzIDIwMTEgKzAxMDAKIAotICAgIENIQU5HRVM6IHNubXBkOiBmaXhlZCByYWNlIGNvbmRpdGlvbiBpbiBoclNXUnVuVGFibGUKLSAgICBUcmVhdCB0aGUgcmVhZHMgZnJvbSAvcHJvYy88cGlkPi8qIGNhcmVmdWx5LCBwcm9jZXNzZXMgY2FuIGV4aXQgaW4gdGhlIG1pZGRsZSBvZiBwcm9jZXNzaW5nLgorICAgIENIQU5HRVM6IHNubXBkOiBmcm9tIE1hcnRpbiBXaWxjazogZml4ZWQgc25tcGQgY3Jhc2hpbmcgd2l0aCAnc2VsZWN0OiBiYWQgZmlsZSBkZXNjcmlwdG9yJy4KICAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxMTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgT24gMzItYml0IHN5c3RlbXMsIHNubXBkIGRpZXMgd2l0aCBhZm9yZW1lbnRpb25lZCBtZXNzYWdlIHdoZW4gdXNpbmcgZmlsZSBkZXNjcmlwdGlvbnMgPiAzMiwgZS5nLiB3aGVuIGhhdmluZyA+MzIgQWdlbnRYIHN1YmFnZW50cy4KIAotY29tbWl0IDJkNDhjY2Y2Y2M5M2MwZTQ0ZWVjNTVlZGY1NTlkOWYxNTIzYzc0ZjkKK2NvbW1pdCBlZDY1ZWNhNmU3ZjljZmE3MzgwYTc4ZDU2YzAxZWQzMTQ3NDViMTY5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTm92IDExIDE5OjAxOjIxIDIwMTEgKzAxMDAKKworICAgIEZyZWVCU0QtOTogRml4IGZvciBjb25zdCdpZnllZCBubGlzdCBhcmd1bWVudHMKKworY29tbWl0IGVhY2E3OTgzZTM2NTVhYjY5NmZjYzQ0NjFjYTBjZWRiYWM2Y2U2OWEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBOb3YgMTEgMTk6MDA6MTIgMjAxMSArMDEwMAorCisgICAgTmV0QlNELTY6IE9uZSBtb3JlIGluc3RhbmNlIG9mIHRpbWVzcGVjIHJlcGxhY2luZyB0aW1ldmFsCisKK2NvbW1pdCA4YWQ2YzUzZmRlYzVhZGVhZTRlNTJmMTc1MWVjZWM0YTM0NWJhYjA1CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTm92IDExIDE4OjU5OjAxIDIwMTEgKzAxMDAKKworICAgIEZpeCBidWlnICMzNDM2NTI3OiBhcnBfbmV0bGluazogZml4IGR5aW5nIHJlbG9hZCBvZiBjYWNoZQorCitjb21taXQgMzc4ZmZlZDAzYmE3OWE4MzQ2ZDZjNjI3ODFlMmRkZjVjZTkyYTQ3OAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE5vdiAxMSAxODo1NTo0MyAyMDExICswMTAwCisKKyAgICBGaXggYnVnICMzNDM2NTI4OiBzd2luc3RfcGtnaW5mbzogcmVjb3ZlciBmcm9tIE5VTEwgcmV0dXJuIGZyb20gb3BlbmRpcgorCitjb21taXQgZDdhZDhmNWY5ZjNmNjdmMTZmNjVjMjUxNWQxMWUxOTRkMmNkZDEyYworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IE5vdiAxMCAxNDowNDo0MSAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBDeWd3aW46IE1ha2UgZGF0ZV9uX3RpbWUoKSBwcm9kdWNlIHRpbWUgem9uZSBpbmZvcm1hdGlvbgorCitjb21taXQgYmEzNWM1MGIyZjQ1OWJkOWMxMWVkNTljYzdkMWIxNjIxNTY0NGZhMworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IE5vdiAxMCAxNDoxNzowNCAyMDExICswMTAwCisKKyAgICBSZXBsYWNlIEFDX1RSWV9MSU5LKCkgYnkgQUNfTElOS19JRkVMU0UoKQorICAgIAorICAgIE5vdGU6IHRoZXNlIGNoYW5nZXMgZG8gbm90IGFmZmVjdCB0aGUgZ2VuZXJhdGVkIGNvbmZpZ3VyZSBzY3JpcHQuCisKK2NvbW1pdCBmNjE1YmYyNGY1ZDBmMjNjZTkzMDFkYTU1NjE4NGQ2NDYwNzQwNDU2CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDkgMjA6MzI6NDkgMjAxMSArMDEwMAorCisgICAgRmlzIEJ1ZyAjMzQzNDgyNDogU0lHU0VHViB3aGVuIHJlYWRpbmcgZGlzayBkaXJlY3RpdmUgYWZ0ZXIgU0lHSFVQCisKK2NvbW1pdCBhOTRhMTc5ZDkzNDBmNTFmYTdjMjM0MzE2MzBiYzBmZmQ2ZDc1OWU4CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDkgMjA6MzA6NTEgMjAxMSArMDEwMAorCisgICAgRml4IGJ1ZyAjMzQzMzYxNjogZG9udCB0cmVhdCBEYXRlQW5kVGltZSBhcyBhIHN0cmluZworCitjb21taXQgYjI5ZTQxNjQ1MzFkMjU4ZmUzNGE2ZmUyYjllMWVjNjBjNTZmOTU0NAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgTW9uIE5vdiA3IDAxOjI1OjU3IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKKworY29tbWl0IGUyMjFlNjVmZGMxYzY4ZjE5Njg2NTE3MTdkY2M5Y2NmYjY0MTQ3ODMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBOb3YgMyAxNTowNTowMCAyMDExICswMTAwCisKKyAgICBGaXggd2FybmluZ3MgYWJvdXQgY29udmVydGluZyBzb2NrYWRkcl9pbiAqIGludG8gc29ja2FkZHIgKi4KKyAgICAKKyAgICBUaGlzIGlzIGEgZm9sbG93LXVwIGZvciBjb21taXQgYTBhZjM4NS4KKworY29tbWl0IDJlN2U5ZWRhMGIwZDYyYTc2NDVhOWE4ZjcwZWYzZmI2ZjNkZDY5NDEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBOb3YgMyAxMToxNzo0OCAyMDExICswMTAwCisKKyAgICBGaXggdW5pbml0aWFsaXplZCB2YXJpYWJsZSB3YXJuaW5ncy4KKworY29tbWl0IDM0NjJlYmNkZDBiN2MyOThjYjE1YzMwOTk3MzZmNGY5NTIyNTc4NDYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBPY3QgMjggMTY6MDc6MTUgMjAxMSArMDIwMAorCisgICAgUmVtb3ZlIHRob3NlIHN1cGVyZmx1b3VzIHBhcmVudGhlc2VzIHRoYXQgdHJpZ2dlciBhIGNsYW5nIHdhcm5pbmcuCisKK2NvbW1pdCAzZTVmZWRkM2U3ZDFlZjMxNjgzNjA0YmY3M2RjNTZlOTQ0Y2FkMzQ5CiBBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1hciAxMSAxMToxMToyOCAyMDExICswMDAwCitEYXRlOiAgIFRodSBOb3YgMyAwOTo0NToyNyAyMDExICswMTAwCiAKLSAgICBDSEFOR0VTOiBzbm1wZDogZml4ZWQgcmFjZSBjb25kaXRpb24gaW4gaHJTV1J1blRhYmxlCi0gICAgVHJlYXQgdGhlIHJlYWRzIGZyb20gL3Byb2MvPHBpZD4vKiBjYXJlZnVseSwgcHJvY2Vzc2VzIGNhbiBleGl0IGluIHRoZSBtaWRkbGUgb2YgcHJvY2Vzc2luZy4KKyAgICBDSEFOR0VTOiBzbm1wZDogZml4ZWQgVUNELVNOTVAtTUlCOjpzeXN0ZW1TdGF0cyBhZnRlciAzMCBkYXlzIG9mIHVwdGltZS4KICAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxMTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgQWZ0ZXIgMzAgZGF5cywgdmFsdWVzIGZyb20gL3Byb2Mvc3RhdCAob24gTGludXgpIGNhbiBnZXQgYmlnZ2VyIHRoYW4gMzJiaXRzIGFuZCBzbm1wZCBjYWxjdWxhdGlvbnMgbWlnaHQgcmVuZGVyIGNvdW50ZXJzIGxpa2Ugc3NDcHVVc2VyIG5lZ2F0aXZlIG9yIHplcm8sIHdoaWxlIHRoZSByZWFsIHZhbHVlIGlzIGhpZ2hlci4gVGhlcmVmb3JlIHRoZSBjb3VudGVycyBzaG91bGQgYmUgdHJhY2tlZCBhcyB0aGUgbGFyZ2VzdCBpbnRlZ2VyIGF2YWlsYWJsZS4KIAotY29tbWl0IGI4MThmY2VkY2MzYjU3YTI4OGE1Mjc0Yjk5M2VkY2JiMGZmYmFkMDcKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXIgMTEgMDg6NDI6MDUgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IEJ1aWxkcyB3aXRoIG1vc3QgcmVjZW50IE1pbkdXIChoYXZpbmcgI2RlZmluZSBsb2NhbHRpbWVfcikuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYzA4MjIxMDVhMzljMTExODE2MjkxODVlZTZkNzM0OGFlY2ZiNWYxOAotQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXIgMTEgMDM6MDg6NTAgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogcmVmaW5lIGNlcnQgZGVidWdnaW5nOyByZW1vdmUgdW51c2VkIGZ1bmN0aW9uCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNWExNjQxZWJhMWM4NWYyNGVhNzQ2MWU3MTg1YzgwNDJkNzY2NTNkYwotQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXIgMTAgMjE6MjE6MzIgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMzIwNTc2NTogaGFuZGxlIHJlY29uZmlnIGZvciBjZXJ0U2VjTmFtZSB0b2tlbgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDExMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGY1YjcxMjdmNDJjNDU0YTJkOTFhMWE5MjNhOWU0ODIyMzU0ZGY2MWIKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXIgMTAgMjA6MDE6MzMgMjAxMSArMDAwMAotCi0gICAgU3BlbGxpbmcgZml4IGluIGEgc291cmNlIGNvZGUgY29tbWVudDogbWVzc2dlcyAtPiBtZXNzYWdlcy4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwYjE5NmRmZDQyZDY2OTBlNGY1YmU3ZWUzZTIwNjRmMDM3Mjc0N2U0Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWFyIDEwIDE5OjU1OjI2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAzMjAzODA2OiBNaW5vciBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gb2YgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKCkuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTEwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYzRlOGJiNzU5Mjg2ZTczMTU1OWYxYjgyYWI3ZmFmYmFmZDJkN2VhMwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1hciAxMCAxOTo0ODo0MyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDMyMDM4MDY6IEF2b2lkIHRoYXQgdGhlIG1haW4gYWdlbnQgcHJvY2Vzc2luZyBsb29wIC0gd2hlbiB1c2luZyBtb3JlIHRoYW4gRkRfU0VUU0laRSBmaWxlIGRlc2NyaXB0b3JzIC0gY2FuIGNhdXNlIG1lbW9yeSBjb3JydXB0aW9uIGJ5IGludm9raW5nIHNlbGVjdCgpLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDEwOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGRiYjBmN2I5NzlmMDc2MjE4NWVlNWVlMTg0YmEzY2YyM2I1YjMxYTEKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXIgMTAgMTk6NDM6MTYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDMyMDM4MDY6IEFkZCB0aGUgZnVuY3Rpb24gbmV0c25tcF9sYXJnZV9zZWxlY3QoKS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMDggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhNzUyYTg2MjZmZjIwZmE1NmM5NTllNjA5NDU1MzBlNTgyYzkyOWVhCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWFyIDEwIDE4OjU3OjI0IDIwMTEgKzAwMDAKLQotICAgIEZpeGVkIHR3byBjb21waWxlciB3YXJuaW5ncyAoYmFja3BvcnRlZCByMjAwOTggZnJvbSB0aGUgdHJ1bmspLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDEwNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGRlNmM1MjJjYmM2MWE3MjhmZjczN2ZlZTFlNGY0NDc5MTMzMDEzZWEKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXIgMTAgMTg6NTU6NTMgMjAxMSArMDAwMAotCi0gICAgQWRkZWQgYSBtaW5pbWFsIHVuaXQgdGVzdCBmb3IgbmV0c25tcF9sYXJnZV9mZF9zZXQuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTA2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNjRmMTc2YTlkYjE2OTkzZWFlMWMxYTMxYzk4ZmQ0YzczNDc0YjE1MwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1hciAxMCAxODo1MjozNCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMzIwMzgwNjogTWFrZSBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoKSBjbGVhciBhbGwgcmVsZXZhbnQgZmlsZSBkZXNjcmlwdG9ycy4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMDUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzYzBmYzM2MGQwZThiYTFmY2YwYzMxODU5ODBlNWJhZjZmYzkzZWY3Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXIgMTAgMTU6NTE6MjcgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMzE3ODM4OTogRml4IGluY29uc2lzdGVudCBoYW5kbGluZyBvZiBUWiBvZmZzZXRzCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTA0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgM2U2OWZhNWEyZmIyYjI0ODZlZjI4MmUzYmEyYzhmZmQ1OGIwYWQ3MQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWFyIDEwIDE1OjUxOjI3IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDMxNzgzODk6IEZpeCBpbmNvbnNpc3RlbnQgaGFuZGxpbmcgb2YgVFogb2Zmc2V0cwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDEwNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGI5YTE0Njk4OThhYTUxNWM2ODk3MjYwOGNiYmYwMWE4MmYyYTk4ODIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1hciAxMCAxNTo1MToyNyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzMTc4Mzg5OiBGaXggaW5jb25zaXN0ZW50IGhhbmRsaW5nIG9mIFRaIG9mZnNldHMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxMDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmOGE4NTIxMDRhZjY3YzZjZmFkODIwNjY1ZWNhMmRjNzNkOWI1MWZmCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXIgMTAgMTU6NTE6MjcgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMzE3ODM4OTogRml4IGluY29uc2lzdGVudCBoYW5kbGluZyBvZiBUWiBvZmZzZXRzCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTA0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZDBlOGU2ZjRkMjExZWI1NWQwNWU2MTk2NTBiZTY1NWRmYTkzOTRlNQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIE1hciA3IDE3OjE5OjQ2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAzMTk1NTM3OiBNaW5vciBiaW5hcnlfYXJyYXkgY29udGFpbmVyIHNvcnQgb3B0aW1pemF0aW9uCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMDc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZWIwM2M0OGUzNTVlMDhhZTU2MjRkNjA1OTQ2NjY1OWI0MGJkOTg1YworY29tbWl0IDBmYzgyMjFiMjQ5ODhjNGFlNjE4MGVkNDJiODZiOTg1MmZkNTg2YWQKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBNYXIgNiAxOTo0NzowNiAyMDExICswMDAwCitEYXRlOiAgIFdlZCBOb3YgMiAyMjo1OTowOCAyMDExICswMTAwCiAKLSAgICBUYWJzIHRvIHNwYWNlcwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDA3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBkc2tJbmRleCB3YXMgb2ZmIGJ5IG9uZQogCi1jb21taXQgNmJkMmIwYmIwMWM3NDI4MzUzNGVkY2ZjMWNiMDg3OTA4NjFlMGQ3NAorY29tbWl0IGE1YjI4ODI5ZTY0ZDVmM2I4N2U0YjliMWVmOGNjMjA0ZjMzYTYxYjcKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBNYXIgNiAxMToyODowNCAyMDExICswMDAwCitEYXRlOiAgIFdlZCBOb3YgMiAyMToyNTowNyAyMDExICswMTAwCiAKLSAgICBDb25maWd1cmUgY2hlY2sgZm9yIGdldGhvc3RuYW1lMgotICAgIFVzZSBnZXRhZGRyaW5mbyBpZiBhdmFpbGFibGUuIE5vdyB3b3JrcyBmb3IgU29sYXJpcyAoYW5kIFdpbmRvd3M/KQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDA3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBTb2xhcmlzIG5lZWRzICRBV0sgdG8gZ2V0IGEgdXNhYmxlIG5hd2sKIAotY29tbWl0IGQ4Njg0MzYyMTVjMGU3MGJkZTNjNDRlNGM5MjZkYWE2YWI4ODAwNzgKK2NvbW1pdCAyODAxYTIxMzlmMjcwMjFlMWFiMTVlMzYyZTJkM2Q2MjRmZmFhNDk0CiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgTWFyIDUgMTI6NTA6NDQgMjAxMSArMDAwMAorRGF0ZTogICBNb24gT2N0IDMxIDIyOjU1OjUzIDIwMTEgKzAxMDAKIAotICAgIENsZWFuIHVwLCBhbmQgY29zb2xpZGF0ZSByZXN1bHQgdGFibGUgcm93IGNyZWF0aW9uIGludG8gYSBuZXcgZnVuY3Rpb24uCi0gICAgU2F2ZXMgMjAwIGxpbmVzIG9mIGNvZGUsIHdpdGggKGhvcGVmdWxseSkgbm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2UKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAwNzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgUGF0Y2ggIzM0MDYzNjQ6IEZpeCB1bnN0YWJsZSBkYXRhIGZvciBOZXRCU0QuCiAKLWNvbW1pdCBjODIxMDJkOWUyYTYyZGI0NjI4YjJjNWRkOWZmYjZkNzA3N2YwMmM1Citjb21taXQgODIxYTU4ZDExMmQ3YWM0OTUxNDllMjYyZDcwNDQxMmJhMjgwMDQzOAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE9jdCAzMSAyMjo0Mzo1MiAyMDExICswMTAwCisKKyAgICBGaXggaXB2NiBzdGF0aXN0aWNzIGxvb3BpbmcgdG9vIGZhciB3aGVuIHNjYW5uaW5nIGludGVyZmFjZXMuCisgICAgRml4IFRDUCBzZXNzaW9uIHRhYmxlIHJlcGVhdGluZyBkYXRhIGZyb20gZmlyc3QgZW50cnkgZm9yIGFsbC4KKworY29tbWl0IDM0OTU5MWQwM2UxN2E1NWI0M2VhY2M2YTY4N2IwMmZkOGQ0ZTk1MjgKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIE1vbiBPY3QgMzEgMDg6NTk6MzcgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogcGVybDogTWFrZSBpdCBwb3NzaWJsZSB0byBidWlsZCBwZXJsIHN1cHBvcnQgd2l0aG91dCBzdXBwb3J0IGZvciBvcGFxdWUgdHlwZXMuCisKK2NvbW1pdCAxZWM3MTEwZTcyYmNlMTU2MWY3NDY1MTc0NTlkNmYwNDMwMTZiNjBlCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gT2N0IDMwIDE5OjA1OjMwIDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IE1ha2UgdGhlIGFzbjEgdGVzdCBwYXNzIGV2ZW4gaWYgc3VwcG9ydCBmb3Igb3BhcXVlIHR5cGVzIGFyZSByZW1vdmVkLgorCitjb21taXQgNmQyNjkxOGFmNTVhYTM2NjJhNzIwNTQyZGU3N2JiZjM5YjBhM2U5MQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IE9jdCAyOSAwODozNDozMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRGlzYWJsZSB0aGUgc3VwcG9ydCBmb3IgaW50ZWdlcjY0IGluIHBhc3Mgc2NyaXB0cyBpZiBjb21waWxpbmcgd2l0aG91dCBvcGFxdWUtc3BlY2lhbC10eXBlcy4KKworY29tbWl0IDI5YmY2OWQ3MDQyNGYzNTlkOWM4N2YwN2E5NjRhMDk5NDE1NjQ5YTUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBPY3QgMTAgMTM6MDI6MjUgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcHRyYXBkX3NxbDogQXZvaWQgdGhhdCBhIGxpbmtlciBlcnJvciBpcyB0cmlnZ2VyZWQgb24gc3lzdGVtcyB3aGVyZSBteV9wcm9nbmFtZSBpcyBtaXNzaW5nIGluIGxpYm15c3FsY2xpZW50IChlLmcuIEZlZG9yYSAxNSBhbmQgMTYpLgorICAgIAorICAgIFRoaXMgaXMgYSBiYWNrcG9ydCBvZiBjb21taXQgOWY2NTNmNy4KKworY29tbWl0IDJjYzk1MDRiOWJiODYyNWI5NGJlNmNkYTdlNjA5OTNkMDU5Y2Q5MjgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBPY3QgMjYgMDk6MDE6MjMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAzNDI4NTA2OiBGaXggbmV0c25tcF9nZXRob3N0YnlhZGRyKCkKKyAgICAKKyAgICBUaGlzIHBhdGNoIHNob3VsZCBmaXggdGhlIHJlZ3Jlc3Npb25zIGludHJvZHVjZWQgYnkgY29tbWl0IDg1ZDk2YzQgKE1heSAxMywgMjAxMSkuCisKK2NvbW1pdCA5YjQyN2IzNTNmMWNlYjhmZTg3ZTZmYzhlZDNiNmNmYWIzY2U3ZjIwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgT2N0IDI3IDA4OjIwOjAwIDIwMTEgKzAyMDAKKworICAgIE1pbkdXOiBBdm9pZCBjb25mdXNpb24gYmV0d2VlbiBNaW5HVydzIGtpbGwuZXhlIGFuZCB0aGUgU3lzSW50ZXJuYWxzIHBza2lsbC5leGUKKworY29tbWl0IDJjNDVmOTJjZmNiNWIwNWUwNDkyMjZhNWE3ODgzYTBiMTA2MDExYWUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBPY3QgMjYgMTA6NDI6MjkgMjAxMSArMDIwMAorCisgICAgRml4IGNvbXBpbGVyIHdhcm5pbmdzIGFib3V0IHBhc3NpbmcgYSBjb25zdCBwb2ludGVyIHRvIGEgZnVuY3Rpb24gYWNjZXB0aW5nIGEgbm9uLWNvbnN0IHBvaW50ZXIuCisKK2NvbW1pdCAyNzVkMjNlZGZkZWJlMDU3N2IwODQyMWU0YzZjOTM2YWUzOWI3ZmRjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgT2N0IDI2IDA5OjMzOjA5IDIwMTEgKzAyMDAKKworICAgIEZpeCBjb21waWxlciB3YXJuaW5ncyBhYm91dCBzZXQtYnV0LW5vdC11c2VkIHZhcmlhYmxlcworCitjb21taXQgNDQ5NWUxN2MwNzhhYzY5OTdhOWM3ZmExYTg4ZGIwNjQ0ZTkxOTQ5MQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE9jdCAyNiAwOTozMjo0NiAyMDExICswMjAwCisKKyAgICBGaXggY29tcGlsZXIgd2FybmluZ3MgYWJvdXQgY2FzdGluZyBhd2F5IGNvbnN0CisKK2NvbW1pdCAxMzk1MmY2YmVlOWY0MDg4NjdhYjZkMmZkZmRkZTRmMjg0MDc0OTU3CiBBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1hciA0IDE1OjA5OjI2IDIwMTEgKzAwMDAKK0RhdGU6ICAgV2VkIE9jdCAyNiAxNDowNToxNiAyMDExICswMjAwCiAKLSAgICBDSEFOR0VTOiBzbm1wZDogZml4ZWQgJ3RydW5jYXRpbmcgaW50ZWdlciB2YWx1ZSA+IDMyIGJpdHMnIGluIFVDRC1TTk1QLU1JQjo6c3lzdGVtU3RhdHMgb24gTGludXgKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBmcm9tIFNpZGRoZXNoIFBveWFyZWthcjogcHJvcGVybHkgY2xlYW4gdXAgb2xkIHJlcXVlc3RzIGluIGEgc3ViYWdlbnQgd2hlbiB3ZSByZWNvbm5lY3QgdG8gbWFzdGVyLgogICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDA2MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBBbiBzbm1wIHN1YmFnZW50IGxpbmtlZCBhZ2FpbnN0IG5ldC1zbm1wLWxpYnMgbWF5IGNyYXNoIGlmIGl0IGhhbmRsZXMgYQorICAgIHJlc3BvbnNlIHdoaWNoIGhhcyBtYWdpYyByZWZlcnJpbmcgdG8gYW4gb2xkZXIgZGlzY29ubmVjdGVkIG1haW4gc2Vzc2lvbi4gVGhpcworICAgIG1heSBoYXBwZW4gd2hlbiB0aGUgc3ViYWdlbnQKKyAgICBhdHRlbXB0cyB0byBjbGVhbiB1cCBvbGQgcmVxdWVzdHMgb24gcmVjb25uZWN0aW9uIG9mIHRoZSBkaXNjb25uZWN0ZWQgbWFzdGVyCisgICAgc2Vzc2lvbi4KIAotY29tbWl0IDQ3NmNjYTgzYTI4MzMzNTc4MGE4NGVjMGI4NzM0NDFmMTE0ODYzZGEKK2NvbW1pdCBhZTA1MjQ3MmIyMjcyMGQwODM2OWU4NTEyN2RiMjE0MjQ1ZGYyZTNmCiBBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1hciA0IDE1OjA5OjI2IDIwMTEgKzAwMDAKK0RhdGU6ICAgVHVlIE9jdCAyNSAxNjoxNToxNyAyMDExICswMjAwCiAKLSAgICBDSEFOR0VTOiBzbm1wZDogZml4ZWQgJ3RydW5jYXRpbmcgaW50ZWdlciB2YWx1ZSA+IDMyIGJpdHMnIGluIFVDRC1TTk1QLU1JQjo6c3lzdGVtU3RhdHMgb24gTGludXgKKyAgICBDSEFOR0VTOiBwZXJsOiBmaXhlZCBzZWdtZW50YXRpb24gZmF1bHQgd2hlbiBoYW5kbGVyIHJlZ2lzdHJhdGlvbiBmYWlscy4KICAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAwNjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgV2hlbiBuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXIgZmFpbHMsIGl0IGZyZWVzIGl0cyByZWdpbmZvIC0+IG5zYWhyX0RFU1RST1kgKGFuZCBhbnkgb3RoZXIgZnVuY3Rpb24pIG11c3Qgbm90IGRlcmVmZXJlbmNlIGl0LgogCi1jb21taXQgMTVhZjBhZGY4MWYyNTU0NjNiOTA4ODU5YjM4M2Y0YTUxNWJlYzM2ZAorY29tbWl0IGMxOTliZjkxYjYyMzlmMjZiMmFhYjM0ZTg1NzVlMGYwZGY5Y2RlOWIKIEF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWFyIDQgMTU6MDk6MjYgMjAxMSArMDAwMAorRGF0ZTogICBNb24gT2N0IDI0IDE0OjI1OjI4IDIwMTEgKzAyMDAKIAotICAgIENIQU5HRVM6IHNubXBkOiBmaXhlZCAndHJ1bmNhdGluZyBpbnRlZ2VyIHZhbHVlID4gMzIgYml0cycgaW4gVUNELVNOTVAtTUlCOjpzeXN0ZW1TdGF0cyBvbiBMaW51eAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDA2MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBDSEFOR0VTOiBzbm1wZDogeGZzLCBqZnMgYW5kIHZ4ZnMgZmlsZXN5c3RlbXMgYXJlIG5vdyByZWNvZ25pemVkIGluIGhyU3RvcmFnZVRhYmxlCiAKLWNvbW1pdCA2NTc5MWVkNjAzNGI0NDk1ZGZmNjdlMGJkNzc1YTJjNTc3ZDEzZjY3Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWFyIDMgMTA6NTY6MjEgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogV2luMzI6IERlcHJlY2F0ZWQgbGlic25tcC5kZWYgLSBhZGQgTkVUU05NUF9JTVBPUlQgdG8gZnVuY3Rpb24gZGVjbGFyYXRpb25zIGluc3RlYWQgdG8gZXhwb3J0IGEgZnVuY3Rpb24gZnJvbSBuZXRzbm1wLmRsbC4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAwNTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1YTRmOWVhYjZiZjIxMWYwYTA5MTdjNTkyY2RlMmU1ZTg0ZDBjNGRjCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWFyIDMgMTA6NTA6MjMgMjAxMSArMDAwMAotCi0gICAgTW92ZWQgYSBzb3VyY2UgY29kZSBjb21tZW50IHN1Y2ggdGhhdCBpdCBpcyBhZ2FpbiBpbW1lZGlhdGVseSBhYm92ZSB0aGUgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGl0IGFwcGxpZXMgdG8uCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMDU1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZTY0ZjUxMGZmYjE3OTYxOTExMjY4YTg0NWQ2OWJiYTdhZGFkYmY4NQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1hciAzIDEwOjQ4OjM0IDIwMTEgKzAwMDAKLQotICAgIEFkZGVkIG1pc3NpbmcgTkVUU05NUF9JTVBPUlQgZGVjbGFyYXRpb25zLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDA1NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDQ2MWQyZDA5MDM4ZTMyMWI1OWQ4MzE5MDVhYzliNzY1YmI0YTNjOGUKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXIgMyAxMDoyNDowMSAyMDExICswMDAwCi0KLSAgICBSZW1vdmVkIHR3byBvYnNvbGV0ZSBXaW4zMiBmaWxlcy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAwNTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyODg2ZDAyYzcyNzY5ZmE5NjlmMGExMTdkYzcyY2I1ZDZiNDBiMmQ1Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWFyIDMgMTA6MDk6MTQgMjAxMSArMDAwMAotCi0gICAgVHJpdmlhbCBjb21tZW50IGZpeDogc25tcElQdjZCYXNlRG9tYWluLmMgY29udGFpbnMgSVB2NiBiYXNlIHRyYW5zcG9ydCBzdXBwb3J0IGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIElQdjQuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMDUyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMmY1NGY1YjM5ZDk2YWE3YjQ4NGQwYzk5NDQzNGJkOTI5YjE3Mjc2MwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgRmViIDI1IDEyOjU1OjA0IDIwMTEgKzAwMDAKLQotICAgIEZpeCB0aGUgY29tbWFuZCB0byBjcmVhdGUgYSBuZXcgU1ZOIHRhZyBsaW5lCi0gICAgCi0gICAgKEhhdmluZyBicm91Z2h0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIDUuNS54IGJyYW5jaAotICAgICBpbnRvIGxpbmUgd2l0aCB0aGUgb3RoZXIgYnJhbmNoZXMsIHRoZSBwcmV2aW91cwotICAgICBjb21tYW5kIGlzIG5vdyB3cm9uZyBmb3IgKmFsbCogYnJhbmNoZXMsIHJhdGhlcgotICAgICB0aGFuIGp1c3QgbW9zdCBvZiB0aGVtISkKLSAgICAKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMTk5OTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhNjkxYzJmNzQ1MWU0MDFmNGZiOGQ3NGJmZjhiZjExNjhmMGE2ZmYxCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBGZWIgMjUgMTI6NTU6MDQgMjAxMSArMDAwMAotCi0gICAgRml4IHRoZSBjb21tYW5kIHRvIGNyZWF0ZSBhIG5ldyBTVk4gdGFnIGxpbmUKLSAgICAKLSAgICAoSGF2aW5nIGJyb3VnaHQgdGhlIHN0cnVjdHVyZSBvZiB0aGUgNS41LnggYnJhbmNoCi0gICAgIGludG8gbGluZSB3aXRoIHRoZSBvdGhlciBicmFuY2hlcywgdGhlIHByZXZpb3VzCi0gICAgIGNvbW1hbmQgaXMgbm93IHdyb25nIGZvciAqYWxsKiBicmFuY2hlcywgcmF0aGVyCi0gICAgIHRoYW4ganVzdCBtb3N0IG9mIHRoZW0hKQotICAgIAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTk5NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGM2Y2U1YThiZWNmM2VlNTIyMTZkMTYwZjVjNzNhMTc5MzVlYWY3OTEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEZlYiAyNSAxMjo1NTowNCAyMDExICswMDAwCi0KLSAgICBGaXggdGhlIGNvbW1hbmQgdG8gY3JlYXRlIGEgbmV3IFNWTiB0YWcgbGluZQotICAgIAotICAgIChIYXZpbmcgYnJvdWdodCB0aGUgc3RydWN0dXJlIG9mIHRoZSA1LjUueCBicmFuY2gKLSAgICAgaW50byBsaW5lIHdpdGggdGhlIG90aGVyIGJyYW5jaGVzLCB0aGUgcHJldmlvdXMKLSAgICAgY29tbWFuZCBpcyBub3cgd3JvbmcgZm9yICphbGwqIGJyYW5jaGVzLCByYXRoZXIKLSAgICAgdGhhbiBqdXN0IG1vc3Qgb2YgdGhlbSEpCi0gICAgCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTk3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYmVhOTAzM2Q2YTU4M2ExZDlmODI3NGFmNGNlMTU2NWRmZmYwZjA5MAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgRmViIDI1IDExOjQ5OjE3IDIwMTEgKzAwMDAKLQotICAgIGRvY3VtZW50YXRpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDE5OTk1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNTIyOWEwNjZmMjM0ZjcwZjViMDg5NGYwZjM2MTdiNGY5ZWQxZmNjMQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgRmViIDI1IDExOjQxOjMxIDIwMTEgKzAwMDAKLQotICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AxOTk5NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGJlMmE5MTg1YjZmNGFkZmM0YzgxZDU0MmFmN2UzYjY1NGY1NTNiMTYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEZlYiAyNSAxMTozOToyNCAyMDExICswMDAwCi0KLSAgICB2ZXJzaW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AxOTk5MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDE1YTQ1NmUxZDJlZDExMmEwNzgzOGNhZjdmMzQ1NjUyMWMxN2ZkZjkKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEZlYiAyNSAxMToxNTo1MiAyMDExICswMDAwCi0KLSAgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMTk5OTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxYzRmZTNhMWI5MWI4Mzc4NjlkODJlM2Q4MTQzZTZiZTU2OWEwOTY2Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBGZWIgMjUgMTE6MTA6MDAgMjAxMSArMDAwMAotCi0gICAgQXZvaWQgYSBwb3NzaWJsZSBjcmFzaCBpZiB0aGUgZW5naW5lSUQgaXMgbm90IGF2YWlsYWJsZSBvciBzZXQuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5OTkxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZDJmZDc3ZDg2MjgwM2UzYWQ1MGYyMTA2NzQzMGE3MWYxZWNlOWQ4ZAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgRmViIDI1IDExOjEwOjAwIDIwMTEgKzAwMDAKLQotICAgIEF2b2lkIGEgcG9zc2libGUgY3Jhc2ggaWYgdGhlIGVuZ2luZUlEIGlzIG5vdCBhdmFpbGFibGUgb3Igc2V0LgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTk5MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDU3NzFjMjI1ZGE5NmI0OTZiOGRiMmY0Nzg0ZTdiODVjNGJiNTIzYzEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEZlYiAyNSAxMToxMDowMCAyMDExICswMDAwCi0KLSAgICBBdm9pZCBhIHBvc3NpYmxlIGNyYXNoIGlmIHRoZSBlbmdpbmVJRCBpcyBub3QgYXZhaWxhYmxlIG9yIHNldC4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5OTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA0MWUyNmFiZGUyYjVkNmY0MGNhZjY4NGE3YTMwOWY3YTYxMWM2MzFmCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBGZWIgMjUgMTE6MTA6MDAgMjAxMSArMDAwMAotCi0gICAgQXZvaWQgYSBwb3NzaWJsZSBjcmFzaCBpZiB0aGUgZW5naW5lSUQgaXMgbm90IGF2YWlsYWJsZSBvciBzZXQuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDE5OTkxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOTg4OTA4MmUzMjUyZTAyY2FmNWNjNGYzYmMxYzRiNGQxYzEzNGM1MgotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEZlYiAyMyAyMTowNDozNCAyMDExICswMDAwCi0KLSAgICBJbmNsdWRlIHJlcXVpcmVkIHByb3RvdHlwZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDMxMzAxNjYyMjZkMDAzNjRkNjA3YmE5ZTg3NDNhYmI3YWE0MmVjYzEKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBGZWIgMjMgMTU6MjM6MzcgMjAxMSArMDAwMAotCi0gICAgdW5zaWduZWQganVnZ2xpbmcgdG8gcmVtb3ZlIHdhcm5pbmdzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNWFhYTRiM2Y2ODkzYWU0MTJlNzRkMGNhZWQyNmY0NzNkYzM4YjQzNQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEZlYiAyMyAxNToyMDoxMSAyMDExICswMDAwCi0KLSAgICBFbmFibGUgKHByb2JhYmx5IGZvcmdvdHRlbikgaXBBZGRyZXNzUHJlZml4VGFibGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1ZGFlYzEyZGU0NDJhMjJmZjI5ODIzNWUxMjUwYmU5OTYxMDNjZDg5Ci1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgRmViIDIzIDA5OjU0OjE2IDIwMTEgKzAwMDAKLQotICAgIExvYWRpbmcgSVB2NiBkYXRhIGlzIGEgbm8tbm8gd2hlbiBJUHY2IG5vdCBlbmFibGVkCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTcyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOGFiNmNlOTVkYjdiY2RhNDQyOTFmMDdlYjgzYTJiYzNiOTFkMjYyYQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEZlYiAyMyAwOTozNjoyMiAyMDExICswMDAwCi0KLSAgICBGaXggYnVnIDMxMTg2MzE6IHNubXB0YWJsZSBzZWdmYXVsdHMgaWYgaW5kZXggY29udGFpbnMgOiBjaGFyYWN0ZXIKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk5NzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5NjVhNzdiOTIzZjE0MDk3YjkxZWRiODliYTM2YmMwYjU2OTA3OGM5Ci1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgRmViIDIzIDA5OjM2OjIyIDIwMTEgKzAwMDAKLQotICAgIEZpeCBidWcgMzExODYzMTogc25tcHRhYmxlIHNlZ2ZhdWx0cyBpZiBpbmRleCBjb250YWlucyA6IGNoYXJhY3RlcgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTk3MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGM1Yjc0MmQ5MzU1ODQzZTg0MTAwYzk3N2E5YWJjMTUxZTJkNzhhZmQKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBGZWIgMjMgMDk6MzY6MjIgMjAxMSArMDAwMAotCi0gICAgRml4IGJ1ZyAzMTE4NjMxOiBzbm1wdGFibGUgc2VnZmF1bHRzIGlmIGluZGV4IGNvbnRhaW5zIDogY2hhcmFjdGVyCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDE5OTcxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgN2E2MTIyM2Y0Y2Y3YTM4OWI4N2ZhY2UyNDdhN2E2NTczNDkwMGM2NgotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEZlYiAyMyAwOTozNjoyMiAyMDExICswMDAwCi0KLSAgICBGaXggYnVnIDMxMTg2MzE6IHNubXB0YWJsZSBzZWdmYXVsdHMgaWYgaW5kZXggY29udGFpbnMgOiBjaGFyYWN0ZXIKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA2Y2NiNTRlOTQ1NzI3OWQ4YzJiMGMwMzBhY2VkMjE1ZTcwMzYwMTBlCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgRmViIDIzIDA5OjMwOjUyIDIwMTEgKzAwMDAKLQotICAgIEZyZWVCU0QgOCBzdXBwb3J0Ci0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZjljNzBkZDE2YmVmZTg3MjhlZjJhYjNmMTAzZGQ4M2U4YzMzZWFjZQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEZlYiAyMyAwOTozMDo1MiAyMDExICswMDAwCi0KLSAgICBGcmVlQlNEIDggc3VwcG9ydAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AxOTk3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDkxYjk1ODgxZWRkYzI1YTg4NWIwYjQ3MTFiNTJiMTEyNzg5OTBlN2EKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBGZWIgMjMgMDk6MzA6NTIgMjAxMSArMDAwMAotCi0gICAgRnJlZUJTRCA4IHN1cHBvcnQKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1ODNlN2IxNDU0YTI3Y2FjODk5MDdkNDQzMjVhMTQzMmZkMGI5YTg4Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgMjIgMTU6MjU6MzUgMjAxMSArMDAwMAotCi0gICAgUmV2ZXJ0IGEgYm9ndXMgY2hhbmdlIHRoYXQgY3JlcHQgaW50byB0aGUgY29kZS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMTk5NjYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwMGVmNTY5ZTAwZDE2NGQ5ZTEwNzBjZDcwNWM2NWU0YTczOTBhMTYyCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgMjIgMDg6NTU6NDggMjAxMSArMDAwMAotCi0gICAgRml4IDUuNS54IGJyYW5jaCBzdHJ1Y3R1cmUgKHBhcnQgMikKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMTk5NjUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3MjdhMmYyMWMzY2M3NGQzYzNiZThhNDcwN2VmMWVjNDlhYjZiZjdjCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gRmViIDIxIDIyOjQwOjA2IDIwMTEgKzAwMDAKLQotICAgIHByb3BlciBwcm9jZXNzIHN0YXR1cyB2YWx1ZXMgZm9yIG5ldGJzZAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk2MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDBkODIwZmNmOTVlNDQ0ZGQ4YTUzMWNjNmY4MmNjN2I4YTY5ODY2YjgKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBGZWIgMjEgMjI6Mzk6MDUgMjAxMSArMDAwMAotCi0gICAgY29uZGl0aW9uYWxpemUgdmFyaWFibGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhNDlkMGQ4MDgyYzE5MTI3MzNhODc3NWE3MzgxN2FkZjRhYjNlYmVmCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gRmViIDIxIDIyOjIwOjA0IDIwMTEgKzAwMDAKLQotICAgIHRjcC1taWIvdWRwLW1pYiBzdXBwb3J0IGZvciB0aGUgKmJzZHMKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NjAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1ZjcyOWQ0ODA5Nzg1YWUwYzc1ZGIyYTgzMWVhOTQ0MTYyMmNmN2Y3Ci1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gRmViIDIxIDIyOjE2OjU2IDIwMTEgKzAwMDAKLQotICAgIHRjcC1taWIvdWRwLW1pYiBzdXBwb3J0IGZvciB0aGUgKmJzZHMKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyYjRmMDcwNmMzYzE0MzMwNjlkNTY2YmNiNDg4OTJmNDUxY2E2MGQ4Ci1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gRmViIDIxIDIyOjA1OjU2IDIwMTEgKzAwMDAKLQotICAgIFByb3Blcmx5IGVuZCBkZWJ1ZyBtZXNzYWdlIHdpdGggbmV3bGluZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk1OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDUzYjM1OTY0OTZiM2Q3ODU4Mjk4MzIwZWYzZTgzZTRhMjZhN2FhM2UKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBGZWIgMjEgMjI6MDQ6MjQgMjAxMSArMDAwMAotCi0gICAgcmVtb3ZlIHZhciB0aGF0IHNoYWRvd3MgdGhlIHVzZWZ1bCBvbmUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1MGQ3M2YwZDU2ZmUyMmM1OTA1MzBiM2UzMDVkNDFkY2RhYzNjZTAwCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gRmViIDIxIDIyOjAyOjMwIDIwMTEgKzAwMDAKLQotICAgIG1ham9yIGZpZGRsaW5nIHRvIGdldCB0aGluZ3Mgd29ya2luZyBmb3Igb3BlbmJzZCB0b28uIFRoaXMgc2hvdWxkIHJlYWxseSBiZSByZXdvcmtlZCB0byB1c2UgdGhlIHRjcC1taWIvdWRwLW1pYi9kYXRhX2FjY2VzcwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk1NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDI3NjA3ZTMxZjc0NTRkYmMxZDcwYTEwNmQwNTMxZjQzNTU5YTMxYmEKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBGZWIgMjEgMjE6NTk6NTAgMjAxMSArMDAwMAotCi0gICAgZml4IHRjcCBzdGF0ZXMgZm9yIGRyYWdvbmZseWJzZAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk1NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDYwZDU0OTU2NmE5MDQ5NDA0MzUzN2Q1OGVjODQ3YWZjNDg3ZDY2ZDAKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBGZWIgMjEgMjE6NTc6NTkgMjAxMSArMDAwMAotCi0gICAgZW5hYmxlIG5ldyB0Y3AvdWRwIG1pYnMgZm9yIHNvbGFyaXMKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA4YTI0MDhjMTZmYWI4M2Q2YjQwMTBlNDc3Y2Y2NjBkYzE4ZmJiMzNiCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gRmViIDIxIDE5OjA4OjAwIDIwMTEgKzAwMDAKLQotICAgIFVwZGF0ZWQgY29tbWVudCBhYm91dCB3aGVyZSBtYWtlcmVsZWFzZSBjb21lcyBmcm9tIChub3cgZ2l0aHViKQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTk1MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDNhYmJjYWEwOTFkYTQxZTQwZjgyMDgxZjYxYjI0YmJmMGNmZDIxOGIKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBGZWIgMjEgMTk6MDg6MDAgMjAxMSArMDAwMAotCi0gICAgVXBkYXRlZCBjb21tZW50IGFib3V0IHdoZXJlIG1ha2VyZWxlYXNlIGNvbWVzIGZyb20gKG5vdyBnaXRodWIpCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTUyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMTllYTg4NjMxZTVmZmY3ZTA0OGRlMzhlZmYzNTJhOWYwMDRkNjJlOQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEZlYiAyMSAxMToxNDowMSAyMDExICswMDAwCi0KLSAgICBCYWNrcG9ydGVkIHIxOTQ1NCBmcm9tIHRoZSB0cnVuayBhbmQgdGhlcmVieSBmaXhlZCB0aGlzIFZhbGdyaW5kIGNvbXBsYWludDoKLSAgICAKLSAgICA9PTYyODc9PSBJbnZhbGlkIHJlYWQgb2Ygc2l6ZSA4Ci0gICAgPT02Mjg3PT0gICAgYXQgMHg0RTZDQ0FFOiBuZXRzbm1wX2RlbGV0ZV90YWJsZV9kYXRhX3NldCAodGFibGVfZGF0YXNldC5jOjE4NikKLSAgICA9PTYyODc9PSAgICBieSAweDUxMjE5NzQ6IHNodXRkb3duX25vdGlmaWNhdGlvbl9sb2cgKG5vdGlmaWNhdGlvbl9sb2cuYzo1NjQpCi0gICAgPT02Mjg3PT0gICAgYnkgMHg1MTk0MURCOiBfc2h1dGRvd25fbWliX21vZHVsZXMgKG1pYl9tb2R1bGVfc2h1dGRvd24uaDozMikKLSAgICA9PTYyODc9PSAgICBieSAweDU0QjE0RjQ6IHNubXBfY2FsbF9jYWxsYmFja3MgKGNhbGxiYWNrLmM6MzQ0KQotICAgID09NjI4Nz09ICAgIGJ5IDB4NTQ4QjU4Qjogc25tcF9zaHV0ZG93biAoc25tcF9hcGkuYzo4NjIpCi0gICAgPT02Mjg3PT0gICAgYnkgMHg0MDRDMDY6IG1haW4gKHNubXBkLmM6MTA2MCkKLSAgICA9PTYyODc9PSAgQWRkcmVzcyAweDY4NmYzMTggaXMgMjQgYnl0ZXMgaW5zaWRlIGEgYmxvY2sgb2Ygc2l6ZSA0MCBmcmVlJ2QKLSAgICA9PTYyODc9PSAgICBhdCAweDRBMDYwRTA6IGZyZWUgKHZnX3JlcGxhY2VfbWFsbG9jLmM6MzY2KQotICAgID09NjI4Nz09ICAgIGJ5IDB4NEU2QUIxNjogbmV0c25tcF90YWJsZV9kYXRhX2RlbGV0ZV90YWJsZSAodGFibGVfZGF0YS5jOjMyMCkKLSAgICA9PTYyODc9PSAgICBieSAweDRFNkNDODQ6IG5ldHNubXBfZGVsZXRlX3RhYmxlX2RhdGFfc2V0ICh0YWJsZV9kYXRhc2V0LmM6MTgwKQotICAgID09NjI4Nz09ICAgIGJ5IDB4NTEyMTk3NDogc2h1dGRvd25fbm90aWZpY2F0aW9uX2xvZyAobm90aWZpY2F0aW9uX2xvZy5jOjU2NCkKLSAgICA9PTYyODc9PSAgICBieSAweDUxOTQxREI6IF9zaHV0ZG93bl9taWJfbW9kdWxlcyAobWliX21vZHVsZV9zaHV0ZG93bi5oOjMyKQotICAgID09NjI4Nz09ICAgIGJ5IDB4NTRCMTRGNDogc25tcF9jYWxsX2NhbGxiYWNrcyAoY2FsbGJhY2suYzozNDQpCi0gICAgPT02Mjg3PT0gICAgYnkgMHg1NDhCNThCOiBzbm1wX3NodXRkb3duIChzbm1wX2FwaS5jOjg2MikKLSAgICA9PTYyODc9PSAgICBieSAweDQwNEMwNjogbWFpbiAoc25tcGQuYzoxMDYwKQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTk0NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGE5NTFjMjBhNjg2NTkyMDk0OWY0NTA0Y2IwNzY5MDZjMjNjYWI0ODUKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBGZWIgMjEgMDc6MTM6MzMgMjAxMSArMDAwMAotCi0gICAgRml4ZWQgYSBNaW5HVy1zcGVjaWZpYyBjb21waWxlciB3YXJuaW5nIChiYWNrcG9ydGVkIHIxOTkyMiBmcm9tIHRydW5rKS4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3MWI2MTVlMzhhNWFmMGMwN2FiOTg5OTRkOTQwNThkZWQxZWYwMDZkCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gRmViIDIwIDA5OjI0OjI5IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDMxODU1Mjg6IHNodXRkb3duX21hc3Rlcl9hZ2VudCBkb2Vzbid0IGNsb3NlIFVEUCBzb2NrZXQKLSAgICAoRml4ZXMgYSBidWcgaW50cm9kdWNlZCBpbiByMTk1MTEuKQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTk0MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDkyYTY5MTllNmE5NzVkNjY4YzdhZjExZjc4OGZiYjM1NTFjZjE4NmIKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBGZWIgMjAgMDk6MjQ6MjkgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMzE4NTUyODogc2h1dGRvd25fbWFzdGVyX2FnZW50IGRvZXNuJ3QgY2xvc2UgVURQIHNvY2tldAotICAgIChGaXhlcyBhIGJ1ZyBpbnRyb2R1Y2VkIGluIHIxOTUxMS4pCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTQyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMzY1NGZjZDBhYTlkNDYwOWJhZmM3ZTg3Nzk1OGY1ZTIzNGUxYjFjOQorY29tbWl0IDc0N2ZkYzcxZTY0ZDA5ZTA4MDkyOGViYmI0ZDA0Y2JkZTM5MDY3OTkKIEF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgRmViIDE3IDExOjI4OjI3IDIwMTEgKzAwMDAKK0RhdGU6ICAgV2VkIE9jdCA1IDE1OjU3OjU5IDIwMTEgKzAyMDAKIAotICAgIEZpeGVkIHNubXAtYnJpZGdlLW1pYiBpbiBzdGFuZGFsb25lIChhZ2VudHgpIHZlcnNpb24uCi0gICAgRG9uJ3QgZGVjbGFyZSBsb2NhbCB2YXJpYWJsZXMgaW5zaWRlIGJsb2NrLiBQYXRjaCBwcm92aWRlZCBieSBKZW5zIE9zdGVya2FtcC4KKyAgICBDSEFOR0VTOiBzbm1wZDogTG93ZXJlZCBzZXZlcml0eSBvZiAnZXJyb3IgZmluZGluZyByb3cgaW5kZXggaW4gX2lmWFRhYmxlX2NvbnRhaW5lcl9yb3dfcmVzdG9yZScgbWVzc2FnZS4KICAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5MzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgVGhlIG1lc3NhZ2UgaXMgc2hvd3MgdXAgd2hlbiBzbm1wZCBpcyBzdGFydGVkIGFuZCB0aGVyZSBpcyBkaWZmZXJlbnQgc2V0IG9mIG5ldHdvcmsgaW50ZXJmYWNlcyB0aGFuIGl0IHdhcyB3aGVuIHNubXBkIHdhc3QgbGFzdCBzdG9wcGVkLiBUaGlzIGlzIGNvbW1vbiBvbiBwcHAtc2VydmVycyBvciB2aXJ0dWFsIGhvc3RzLgogCi1jb21taXQgZGFjYmU2M2MxOGI2MWY3ZTdkZDczNjgxYjc4YmZiZWEzZTIyMWFmOQorY29tbWl0IDI1MGY2OThlNTllYWI5ZjFmZmQzMzJmZjU5ZmRiNzJlYTBkZjA2ZmYKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBPY3QgMjMgMDg6NTE6MjMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IE1ha2UgdGhlIHRyYW5zcG9ydCBjb25maWd1cmF0aW9uIGNvZGUgd29yayBhZ2FpbgorICAgIAorICAgIFByZXZpb3VzbHkgdGhlIHRyYW5zcG9ydCBpbmhlcml0YW5jZSBwcm9jZXNzaW5nIGNvZGUgcmFuIHdpdGgKKyAgICBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTkcgc2V0LiBJbiB0aGlzIG1vZGUgdGhlIGZpbGUgbmV0LXNubXAvZmVhdHVyZS1kZXRhaWxzLmgKKyAgICBpcyByZXF1aWVyZWQuIFRoYXQgZmlsZSBpcyBjcmVhdGVkIGR1cmluZyB0aGUgZmlyc3QgbWFrZSBydW4sIGFuZCB0aGF0IGhhcHBlbnMKKyAgICBhZnRlciBjb25maWd1cmUgaXMgcnVuLgorICAgIENoYW5nZSB0aGlzIHRvIHVuZGVmaW5lIE5FVFNOTVBfTUlOSU1BTF9DT0RFLCBlZmZlY3RpdmVseSB0dXJuaW5nIG9mZiBmZWF0dXJlCisgICAgc3VwcG9ydCBkdXJpbmcgdHJhbnNwb3J0IGNvbmZpZ3VyYXRpb24gaW4gb3JkZXIgdG8gbWFrZSBpdCB3b3JrIGF0IGFsbC4KKworY29tbWl0IDZlZjY5MDc2NDIyNDdjNjYzYjliODk2NGI5ZmQ0NGEyMTFkYmNhYTcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBPY3QgMjAgMjA6MzA6NTQgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMzQwODM5ODogRml4IGEgbWVtb3J5IGxlYWsgaW4gYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy4KKyAgICAKKyAgICBUaGlzIG1lbW9yeSBsZWFrIHdhcyBpbnRyb2R1Y2VkIHZpYSBjb21taXQKKyAgICA5YmYzZDk2ZDk2YThlY2Q0YTVmYzM1YzMyNmRjOTM3NDY3MDAyYjZjOiBJbml0aWFsIEhBTAorICAgIGltcGxlbWVudGF0aW9uIG9mIEZpbGVTeXN0ZW0gaW5mb3JtYXRpb24gKE1hcmNoIDcsIDIwMDgpLgorCitjb21taXQgY2Y4MmI4OTRiMjIxN2MyNmVkYzZmMTM1NjM1MWM5MzI0MTU2MDRlMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IE9jdCAxNSAxNDo0NTowOCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDM0MjM5MTU6IENoYW5nZSBkZWZhdWx0IG51bWJlciBvZiByZXRyaWVzIGJhY2sgZnJvbSAwIHRvIDUKKyAgICAKKyAgICBUaGlzIHBhdGNoIGZpeGVzIGEgYnVnIGludHJvZHVjZWQgdmlhIGNvbW1pdCA2Y2FjMDUwIChNYXkgNSwgMjAxMSwKKyAgICBhZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIHRoZSBkZWZhdWx0IG51bWJlciBvZiByZXRyaWVzIGluCisgICAgc25tcGQuY29uZikuCisKK2NvbW1pdCBjMTFhZGFhMTI5MTVhYmZlZTYyOWJiNmMwMjZjMjFmMjE4NWIyMTZlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gT2N0IDE3IDEwOjI0OjQ2IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IFdpbjMyOiBBdm9pZCB0aGF0IGNvbXBpbGluZyB0aGUgaGVhZGVyIGZpbGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPiB3aXRoIHRoZSBNaW5HVyBnY2MgY29tcGlsZXIgdHJpZ2dlcnMgd2FybmluZ3MgYWJvdXQgInByYWdtYSBjb21tZW50Ii4KKworY29tbWl0IGIxN2E3MmE3OTM0ODNhZWU0YTViYjJmMmUyYzdmNGZkODY5ODE3ZTYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBPY3QgMTcgMTA6MjI6MjAgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogV2luMzI6IEF2b2lkIHRoYXQgdGhlIFBBQ0tBR0VfKiBtYWNyb3MgZGVmaW5lZCBpbiA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNhdXNlIHRyb3VibGUgd2hlbiBpbmNsdWRpbmcgdGhpcyBoZWFkZXIgaW4gYSBwYWNrYWdlIHRoYXQgdXNlcyB0aGUgR05VIGF1dG90b29scy4KKworY29tbWl0IDY2NGQzYWUxMDdkNzU0MDUxYjhjNDIyNzlkNDU5YWE1N2ExYmUxYzMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBPY3QgMTAgMTY6NDc6MTYgMjAxMSArMDIwMAorCisgICAgTWluR1csIGh3X2ZzeXM6IFVzZSBwcm9wZXIgZm9ybWF0IHNwZWNpZmllcnMgaW4gYSBkZWJ1ZyBzdGF0ZW1lbnQuCisgICAgCisgICAgVGhpcyBwYXRjaCBmaXhlcyBhbiBpc3N1ZSBpbnRyb2R1Y2VkIGluIGNvbW1pdCA3NmZmMjVkLgorCitjb21taXQgMjExZGNiNDkzMDY1NjFlMzViYTNjMjEzYmU3Y2ZhMjU3YjQwYThlNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE9jdCAxMCAxNTo1Mjo0MyAyMDExICswMjAwCisKKyAgICBBdm9pZCB0aGF0IGdjYyA0LjYgY29tcGxhaW5zIGFib3V0IHNldCBidXQgbm90IHVzZWQgdmFyaWFibGVzCisKK2NvbW1pdCA5ZjY1M2Y3M2U1YWE3MGYwYmVmMTE3NDYzMmU5NTU5NGY4N2Y2NjlmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gT2N0IDEwIDEzOjAyOjI1IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXB0cmFwZF9zcWw6IEF2b2lkIHRoYXQgYSBsaW5rZXIgZXJyb3IgaXMgdHJpZ2dlcmVkIG9uIHN5c3RlbXMgd2hlcmUgbXlfcHJvZ25hbWUgaXMgbWlzc2luZyBpbiBsaWJteXNxbGNsaWVudCAoZS5nLiBGZWRvcmEgMTUgYW5kIDE2KS4KKworY29tbWl0IDRjODNiOTIyOWE3NDU0ZjM0ZjZmZjc1ZjY5ZTY3ZTQwMzBjNDE5YjUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBPY3QgNyAxNTo1ODo0NSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBTZXQgdGhlIHJwYXRoIGZvciBsaWJwZXJsLnNvIGluIGxpYm5ldHNubXBtaWJzLnNvIHN1Y2ggdGhhdCB0aGUgZHluYW1pYyBsaW5rZXIgY2FuIGZpbmQgbGlicGVybC5zbyB3aXRob3V0IHJlcXVpcmluZyB0aGUgdXNlciB0byBtb2RpZnkgdGhlIGR5bmFtaWMgbGlua2VyIHNldHRpbmdzLgorICAgIAorICAgIFRoaXMgY2hhbmdlIGluIGFnZW50L01ha2VmaWxlLmluIGlzIG5lY2Vzc2FyeSBvbiB0aGUgNS41IGJyYW5jaCBhbmQKKyAgICBsYXRlciBidXQgbm90IG9uIHRoZSA1LjQgYnJhbmNoLiBUaGF0IGlzIGJlY2F1c2UgdGhlIDUuNCBicmFuY2ggdXNlcworICAgIGFuIG9sZGVyIHZlcnNpb24gb2YgbGlidG9vbCB0aGF0IHByb3BhZ2F0ZXMgdGhlIHJwYXRoIG9mIGRlcGVuZGVudAorICAgIGxpYnJhcmllcy4gVGhpcyBpcyBjYWxsZWQgaW50ZXItbGlicmFyeSBkZXBlbmRlbmN5IHRyYWNraW5nIGluIHRoZQorICAgIGxpYnRvb2wgbWFudWFsLiBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgcHJlc2VudCBpbiBsaWJ0b29sIHZlcnNpb24gMQorICAgIGJ1dCBub3QgaW4gbGlidG9vbCB2ZXJzaW9uIDIuIEZvciBtb3JlIGJhY2tncm91bmQgaW5mb3JtYXRpb24gYWJvdXQKKyAgICBkeW5hbWljIGxpYnJhcmllcyBhbmQgcnBhdGhzLCBzZWUgYWxzbyB0aGUgZG9jdW1lbnQgd2l0aCB0aGUgdGl0bGUKKyAgICAiUnBhdGhJc3N1ZSIgb24gdGhlIERlYmlhbiB3aWtpIChodHRwOi8vd2lraS5kZWJpYW4ub3JnL1JwYXRoSXNzdWUpLgorCitjb21taXQgODkyNWM5MTJkMjYzOTc1MmE4NGJjZmZlZWYxYjcwYTgxMDI2NDQ5YgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIE9jdCA3IDE0OjIxOjI4IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGFnZW50OiBIT1NULVJFU09VUkNFUy1NSUI6IEFkZCBtaXNzaW5nIGJyYWNlIGluIGEgZGVidWcgc3RhdGVtZW50CisKK2NvbW1pdCA3NmZmMjVkOWJmOTc1NzllNzIxMzEwMjA2NWZkNTA5NmYwNDlhNGM1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgT2N0IDcgMTQ6MTM6MTggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEhPU1QtUkVTT1VSQ0VTLU1JQjo6aHJTdG9yYWdlVGFibGU6IGZpeCBidWcgaW4gaGFuZGxpbmcgbGFyZ2UgZmlsZXN5c3RlbXMsIHdoZXJlIGxhcmdlIG1lYW5zIGFib3ZlIDggVEIgKD0gMioqMzEgKiA0MDk2IGJ5dGVzKS4KKyAgICAKKyAgICBUaGlzIHBhdGNoIGZpeGVzIGEgYnVnIGludHJvZHVjZWQgaW4gY29tbWl0CisgICAgNzFkODI5M2YzODdhNmNkNjZiYjBkYmIxM2MwZjUwMTc0ZDJlNjc4Yi4KKyAgICBGb3IgdGhlIG9yaWdpbmFsIGJ1ZyByZXBvcnQsIHNlZSBhbHNvCisgICAgaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/ZnVuYz1kZXRhaWwmYXRpZD0xMTI2OTQmYWlkPTM0MTk4MjUmZ3JvdXBfaWQ9MTI2OTQuCisKK2NvbW1pdCA4NjYwMzNkYjk5MDRmZmIxMjAzZjI4M2Y4MzgwOTJlNGNmNjhkZTZiCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUaHUgT2N0IDYgMDc6MzM6MjcgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFJlbW92ZSBzcHVyaW91cyAjZW5kaWYgdGhhdCBzZWVtcyB0byBiZSB0aGUgcmVzdWx0IG9mIGEgbWlzbWVyZ2UuCisKK2NvbW1pdCAyMGY0ZjMyNjdlZTIwZDU1NzA1YjdhNDM3ODk4NzljMTAzZjk2NjIwCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUaHUgT2N0IDYgMDA6MDg6NTkgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IEFkZCBtaXNzaW5nIGVuZCBjb21tZW50cyB0byBmZWF0dXJlIGlmbmRlZnMuCisKK2NvbW1pdCBlNWRlMmNjNTdiZjMwNGYzMzIwY2FkMDAzNGQyZWEyZDhhZWRjNDM2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgT2N0IDUgMDk6MTU6MTAgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYWdlbnQ6IExvZyBhIG1vcmUgZGV0YWlsZWQgZXJyb3IgbWVzc2FnZSBpZiBlbWJlZGRlZCBwZXJsIGluaXRpYWxpemF0aW9uIGZhaWxzCisKK2NvbW1pdCA1ZWVmOTk5MGRlMjhmNjMxMTFlNmMwOTNiZTBmM2M3YWUyZDUxM2ExCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgT2N0IDUgMDg6NDU6NDkgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogcGVybDogQWRkIGFnZW50Ojp1cHRpbWUoKQorCitjb21taXQgNjgxMGVkNDJmOWJjNTYwNzUwZDZkYmZiN2U1MGI2ZTJhYzExODk5YworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIFNlcCAzMCAxMTowMToyMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBDeXdpbjogYWdlbnQ6IEltcGxlbWVudCBnZXRfdXB0aW1lKCkgc3VjaCB0aGF0IHF1ZXJ5aW5nIEhPU1QtUkVTT1VSQ0VTLU1JQjo6aHJTeXN0ZW1VcHRpbWUgcmV0dXJucyBhIG5vbi16ZXJvIHZhbHVlLgorCitjb21taXQgOTcxNzJiMzExZDIwZjQ0NDFjN2E3ZTkwMDkyYjU5YzFlMGRhOTlmNworQXV0aG9yOiBUaG9tYXMgSmFyb3NjaCA8dGphcm9zY2hAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgT2N0IDUgMDg6NDY6MzkgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogUEFUQ0g6IDM0MTg2NDk6IEhPU1QtUkVTT1VSQ0VTLU1JQjogVXNlIHBjbG9zZSgpIGluc3RlYWQgb2YgZmNsb3NlKCkgdG8gY2xvc2UgYSBwaXBlLgorCitjb21taXQgNjU5MTkzN2FkYjg1MDAwYzI3MDY5YzRiZTg0Y2Y0Njg4ODM4ZWJjZAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE9jdCAyIDE2OjE4OjAzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBBZGQgZGVwZW5kZW5jaWVzIG9uIEBGRUFUVVJFVEFSR1NAIHRvIG1ha2UgdGhlIHN1YnRhcmdldCB3b3JrIGFzIHdlbGwuCisKK2NvbW1pdCBiOWM4MDEyZWMwMzViYzA4NGYxNzU4NzZmZWNjMzc1MTk1ZjliZTgxCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gT2N0IDIgMTQ6MDI6NTggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IEFkZCB0YXJnZXQgdG8gYnVpbGQgYWdlbnR4dHJhcCBmcm9tIHRoZSB0b3BsZXZlbAorCitjb21taXQgOTk1NjQ3YzBjZmUwMDQxMjI2MmNjNTc5N2JkZmFlOWQwMGI3MGM3NgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE9jdCAyIDE1OjQ0OjM2IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBSZW1vdmUgdGhlIHVzZSBvZiAtTCBmbGFncyBmb3IgaW50ZXJuYWwgbGlicmFyaWVzIGFzIGl0IGNvbmZ1c2VzIGxpYnRvb2wuCisKK2NvbW1pdCA5M2RjMTIzNWEwZGI1OGZmZDI5NjE3Y2ZmMDBkYzExMjYzNzgwMjAyCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gT2N0IDIgMTE6MzE6NDYgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IE1ha2UgbWFrZSBhcHBzIHdvcmsgYWdhaW4KKyAgICAKKyAgICBhcHBzIGluY2x1ZGUgc25tcHRyYXBkIGFuZCB0aGF0IHJlcXVpcmUgdGhlIGFnZW50IGxpYnJhcmllcyBhcyB3ZWxsLgorCitjb21taXQgYmE0MTQ4OGVkNDRjZDIzYzI1OTYzZDRmYzU2YzQ3Njg1M2IyYWI1OQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE9jdCAyIDExOjI5OjMzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBXaGVuIHlvdSBzYXkgbWFrZSBsaWJzIHlvdSBleHBlY3QgYWxsIHRoZSBsaWJzIHRvIGJlIGJ1aWx0LgorICAgIAorICAgIFRoaXMgaXMgZGVtb25zdHJhdGVkIGJ5IHRoZSBzbm1wdHJhcGQgdGFyZ2V0IGF0IHRoZSB0b3AgbGV2ZWwgd2hpY2ggb2J2aW91c2x5CisgICAgZXhwZWN0ZWQgYm90aCBsaWJzIHRvIGJlIGJ1aWx0IGFuZCBzbyBmYWlsZWQgdG8gY29tcGlsZSBiZWZvcmUgdGhpcyBwYXRjaC4KKworY29tbWl0IDMwNTdjNzNlMDkzNDczYmU0NjI1NGJjZGZiNGNhNzg4ZTQzMmQxYjgKIEF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgRmViIDE2IDE0OjU2OjMzIDIwMTEgKzAwMDAKK0RhdGU6ICAgVHVlIFNlcCAzMCAwNzozMjo1MiAyMDA4ICswMDAwCiAKLSAgICBGaXhlZCBzbm1wLWJyaWRnZS1taWIgd2hlbiB3b3JraW5nIGluIHRoZSBlbWJlZGRlZCBwZXJsLgorICAgIE5FV1M6IGJ1aWxkaW5nOiBQQVRDSDogMjA5MTE1NjogY29ycmVjdGx5IGRlY2xhcmUgZGVwZW5kZW5jaWVzIGluIE1ha2VmaWxlLgorICAgICdtYWtlIC1qIDxOPicgc2hvdWxkIHdvcmsgbm93LgogICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTkzOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBCYWNrcG9ydCB0aGlzIHRvIFY1LTQgYXMgaXQgaXMgbmVlZGVkIGZvciBjb3JyZWN0IG9wZXJhdGlvbiBpbiB0aGUgc2luZ2xlCisgICAgdGhyZWFkZWQgY2FzZSBvZiBtYWtlIG1pYmxpYiBhcyB3ZWxsLgogCi1jb21taXQgYzhkYTM0MWE2NGJkMTk5NTI5YTllNTlhYzM1MjM1NDdjYzJmZTFmNgotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBGZWIgMTYgMTM6MTY6NTcgMjAxMSArMDAwMAorY29tbWl0IDZlYWUzNDBmYTJhNjQwODY1OTI5ODJjYzUyNzM1YmMwMTQ4N2Q5NzgKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBPY3QgMSAxOTozMzo1MCAyMDExICswMjAwCiAKLSAgICBGaXhlZCBHRVRORVhUIHByb2Nlc3NpbmcgaW4gc25tcC1icmlkZ2UtbWliLgorICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBTaWxlbmNlIGxpYmJzZCAwLjMuMCBuYWdnaW5nCiAgICAgCisgICAgSWYgeW91IGhhdmUgbGliYnNkIDAuMy4wIGluc3RhbGxlZCB0aGVuIHRoZWlyIHZlcnNpb24gb2Ygbmxpc3QuaCB3YXJucyBhbmQKKyAgICB0cmllcyB0byBtYWtlIHlvdSBpbmNsdWRlIGJzZC9ubGlzdC5oIGluc3RlYWQuIFRoZSBwcm9ibGVtIGlzIHRoYXQgd2UgZG9uJ3QKKyAgICBuZWVkIHRoYXQgY29tcGF0aWJpbGl0eSBsaWJyYXJ5IGFzIHdlIGtub3cgaG93IHRvIGRvIGl0IG91cnNlbGYgc28gaXQgYmVjb21lcworICAgIHB1cmUgbmFnZ2luZy4gVGhpcyBwYXRjaCBhZGRzIGEgZGVmaW5lIHRoYXQgY2hhbmdlcyB0aGUgd2FybmluZyBpbnRvIGFuCisgICAgZXJyb3IgYW5kIHRoZW4gZmlndXJlcyBvdXQgdGhhdCB0aGVyZSBpcyBubyB1c2FibGUgbmxpc3QuaCBhbmQgaWdub3JlcyBpdAorICAgIGZvciB0aGUgZnV0dXJlLgorCitjb21taXQgYWMzOGNiNTMxYmVlNTBlZGM4ZDRjODM0ZjMwMDVmNTk5MmM3NzFkOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IFNlcCAyOSAxOTowMzowMiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBwZXJsOiBFbmFibGUgc2VuZGluZyBTTk1QdjIgdHJhcHMgd2l0aCBhbiBlbXB0eSB2YXJiaW5kIGxpc3QKKworY29tbWl0IGE3NWRlMjk3MTUyN2FjMmQyZTgxMjAyNDI5ODYwMmJiMjQxMmYzMzcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBTZXAgMzAgMTA6NDE6NDQgMjAxMSArMDIwMAorCisgICAgcGVybC9TTk1QL1NOTVAueHM6IFVwZGF0ZSBlbWFjcyBtb2RlbGluZQorCitjb21taXQgODQ4ZjYzMDBlZmUzODQ5MmZiNDU0NDUxYTAzMGYwYjdlNmZmOGM5ZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIFNlcCAzMCAxMDo0MTo0NCAyMDExICswMjAwCisKKyAgICBwZXJsL1NOTVAvU05NUC54czogVXBkYXRlIGVtYWNzIG1vZGVsaW5lCisKK2NvbW1pdCBjMTM3NDQ3M2VjZDhlYzllMDMxMDAxMzg2MWVlMThjODNlNWQ2YzViCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBGcmkgU2VwIDMwIDAzOjI5OjM2IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IFByb3RlY3QgdGhlIHVzZSBvZiAkT1NUWVBFIHRvIGVuc3VyZSB0aGF0ICd0ZXN0JyBnZXQgZW5vdWdoIHBhcmFtZXRlcnMuCisKK2NvbW1pdCA3ZTk3YTIwNjMzYTU3ZWFlMzlkMDE1YjIzMzM5NDYzYzMyZjVmODQ4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgU2VwIDI5IDEwOjIyOjA4IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IENvbnZlcnQgc25tcGxpYi90ZXN0X2JpbmFyeV9hcnJheS5jIGludG8gdHdvIHVuaXQgdGVzdHMKKworY29tbWl0IDljMGRkOTgxNzY0NTczNDJmZmZhYTVlNzRkODAyZTMxNDVlZDcwZTcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBTZXAgMjkgMDg6NTY6MTcgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogQWRkIHVuaXQgdGVzdCBmb3IgbmV0c25tcF9yZWdpc3Rlcl9vbGRfYXBpKCkKKworY29tbWl0IDVmZDI2ZTRmYTNlMDAwZWE5YzgxYzM4YWI5NzViNzk0NmVmZTIxNTcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBTZXAgMjggMTc6NDk6NTUgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYWdlbnQ6IEF2b2lkIHRoYXQgbmV0c25tcF9yZWdpc3Rlcl9vbGRfYXBpKCkgZmFpbHVyZSB0cmlnZ2VycyBhIGRvdWJsZSBmcmVlLgogICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTkzNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBGaXhlcyBhIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCB2aWEgY29tbWl0CisgICAgYWE0ZDQ3YzI2MDllNTI4MThjOWNkZjFhOGUyMjA1ZGU5YTMzNWEwYSAoc3ZuIHIxOTUxNSkuCiAKLWNvbW1pdCBiY2M2OGY3Mzc4YzI5ZWZjZjgxZGFhMGMyOTk2YzRlZGU4MGU1NWJjCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDE1IDIyOjI0OjA2IDIwMTEgKzAwMDAKK2NvbW1pdCBkMjI1MmQwMTY2OTM4MDczMjZmNzJiNjYxMjM2NDlkZWEwMGFmOTE2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgU2VwIDI5IDEwOjIwOjA4IDIwMTEgKzAyMDAKIAotICAgIFByb3Blcmx5IHNhdmUgZW50cmllcyBmb3IgTmV0QlNEIGFuZCBEcmFnb25GbHkKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBSZXF1aXJlIGEgc2VtaWNvbG9uIGFmdGVyIE9LKCksIE9LRigpIGFuZCBQTEFOKCkKICAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5MzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgQWxzbywgbGV0IE9LRigpIGVtaXQgYSBzaW5nbGUgbGluZSBvZiBvdXRwdXQgc3VjaCB0aGF0IGFsbCBvdXRwdXQgaXQKKyAgICBwcm9kdWNlcyBpcyB2aXNpYmxlIGluIHRoZSBvdXRwdXQgb2YgIm1ha2UgdGVzdCIuCiAKLWNvbW1pdCAxMDA1MGM5NDIwOWIwYTlkZmU0NWFiNzEwYzkyOGI2NTZkOTA2YTNhCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDE1IDIyOjI0OjA2IDIwMTEgKzAwMDAKK2NvbW1pdCAxNDIxOTI0YjQ4NTIxNDIxOTJjNWJiOWU5M2RkYmZlZDY5ZTkwOGZhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgU2VwIDIxIDIyOjIwOjA4IDIwMTEgKzAyMDAKIAotICAgIFByb3Blcmx5IHNhdmUgZW50cmllcyBmb3IgTmV0QlNEIGFuZCBEcmFnb25GbHkKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBBdm9pZCB3YWl0aW5nIGluZGVmaW5pdGVseSBpZiBhIHNlc3Npb24gaGFzIHRpbWVvdXQgemVybworCitjb21taXQgNWYyN2Y0Zjc0YWUyYmQ1YmFmNTAzY2YzMDZiNGY5YTI4NDFhNTdjZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCA2IDEwOjMyOjAzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IE1pbkdXOiB0ZXN0aW5nOiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgdGVzdCBydW5uZXIKKworY29tbWl0IDA5NzAzOTU4Y2M1ZWE4NDU5MjlhZTE5ZWY5ZTA4MDRhZWNhYTUxMmUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgMjcgMTI6NDI6NDEgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogQXZvaWQgZmFsc2UgbmVnYXRpdmUgZm9yIFQxMTRhZ2VudHhhZ2VudHh0cmFwX3NpbXBsZSBjYXVzZWQgYnkgdGhlIHRlc3QgcmVzdWx0IGJlaW5nIHByZXNlbnQgaW4gdGhlIGhleCBkdW1wICgibW9zdGx5X2hhcm1sZXNzIikKKworY29tbWl0IDQzOTMwMDI3OWY2ZjMxNDM4NjM4ZDJmMjIyYzI0YzNjODQxZmE2YWIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgMjcgMTE6MTY6MzIgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IE1pY3JvLW9wdGltaXplIGFnZW50IG1vZHVsZSBkZXBlbmRlbmN5IGFuYWx5c2lzCiAgICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTM2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIFRoaXMgbWFrZXMgdGhlIGFnZW50IG1vZHVsZSBkZXBlbmRlbmN5IGFuYWx5c2lzIGNhcnJpZWQgb3V0IGJ5IHRoZQorICAgIGNvbmZpZ3VyZSBzY3JpcHQgc2xpZ2h0bHkgZmFzdGVyLCBlc3BlY2lhbGx5IG9uIHRob3NlIHN5c3RlbXMgd2hlcmUKKyAgICBmb3JrKCkgaXMgZXhwZW5zaXZlIChDeWd3aW4pLgogCi1jb21taXQgNTQwMjI0OGNkNDZkY2MyMmU4ZTVkMzBhZjc3NzBhYjhmYTAxZGZkYgotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiAxNSAyMjoxODo0MyAyMDExICswMDAwCitjb21taXQgYmJjNjgwMDA0YTEzNzYwMzhkZmRjNDE3MmRiZTdiOWUzMTFmYmE2OAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIFNlcCAyNiAxMDoxNDo0NSAyMDExICswMjAwCiAKLSAgICByZW1vdmUgcmVkdW5kYW50IGluY2x1ZGVzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTM1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIENIQU5HRVM6IE1pbkdXOiB0ZXN0aW5nOiBNYWtlIHRlc3QgVDEzMHNubXB2MXZhY21nZXRfc2ltcGxlIHBhc3MKIAotY29tbWl0IGRmNjQ5Y2NhZjg0M2VkNzZjYmQ4Zjk2NTY0ZjU3MTc2YThhNjFiYTgKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgMTUgMjI6MTg6NDMgMjAxMSArMDAwMAorY29tbWl0IDcwYjA2Y2Y3ODkyMDhlYWE4OTBiZmJjZDYzOGJkYjc3NWY4MTcwNTQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgMjAgMDk6NTA6NTcgMjAxMSArMDAwMAogCi0gICAgcmVtb3ZlIHJlZHVuZGFudCBpbmNsdWRlcwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTkzNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBDSEFOR0VTOiBXaW5kb3dzOiB0ZXN0aW5nOiBwZXJsOiBGaXggYW4gaW5jb3JyZWN0IG1lc3NhZ2UgcHJpbnRlZCB3aGlsZSBydW5uaW5nIHRoZSBQZXJsIG1vZHVsZSByZWdyZXNzaW9uIHRlc3RzCiAKLWNvbW1pdCBiNTY1NWNjMTA3MjFlOWRkYzIzZDhlYTBhNTQwMDdiMWFiMDY4MGUxCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDE1IDIxOjQ4OjA1IDIwMTEgKzAwMDAKK2NvbW1pdCA3MGJjYzhkZTJkMGZjOTJiYmI4NDgxODIzNjMwZmFiOWJjODdhZjc1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgU2VwIDE2IDE2OjE0OjI0IDIwMTEgKzAyMDAKIAotICAgIHJlcnVuIGF1dG9oZWFkZXIvYXV0b2NvbmYKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5MzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgQ0hBTkdFUzogTWluR1c6IHRlc3Rpbmc6IE9idGFpbiB0aGUgTVNZUyBwYXRoIGZyb20gdGhlIGVudmlyb25tZW50CiAKLWNvbW1pdCBjZThlODc0NTg3NzVjMjgwOWVkOGY5MjBjZTgwNDIxYWQ2ZjE0Y2JhCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDE1IDIxOjQ4OjA1IDIwMTEgKzAwMDAKK2NvbW1pdCA2MjYyNzVlMmQxYWNhZmFlNzE0NGEzM2VkMzAxYTQwZjU5NmIzN2IwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgU2VwIDE0IDEzOjE0OjE3IDIwMTEgKzAyMDAKIAotICAgIHJlcnVuIGF1dG9oZWFkZXIvYXV0b2NvbmYKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5MzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgQ0hBTkdFUzogV2luZG93czogUmVtb3ZlIHN1cGVyZmx1b3VzIGxpbmsgbGlicmFyaWVzIGZyb20gcHJvamVjdCBmaWxlcyAoKi5kc3ApCiAKLWNvbW1pdCA5Y2ZiZDhiMTQ0ZDY1OTVlOTg4ZjMzY2E0ODQzODJjNzA4MmJiNmVkCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDE1IDIxOjI2OjMwIDIwMTEgKzAwMDAKK2NvbW1pdCAzOGZjM2NhYTllZWIzODAwMjU0YjRmNmFkNmY4ZjQ3NjRjMGY4M2RiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDIwIDA5OjM0OjA4IDIwMTEgKzAyMDAKIAotICAgIFRvbyBtdWNoIHF1b3RpbmcgaXMgYmFkCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTMxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIENIQU5HRVM6IHNubXBsaWI6IE1ha2UgbmV0c25tcF9jYWxsYmFja19hY2NlcHQoKSByZXR1cm4gLTEgKGZhaWx1cmUpIGluc3RlYWQgb2YgMCAoU1RESU5fRklMRU5PKQogCi1jb21taXQgODhkYzE0NGJjNmJhMmFiMjM3N2Y5ZDcxODJhMWMyYzAzMzc1NDU5ZQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiAxNSAyMToxMTozNyAyMDExICswMDAwCitjb21taXQgNmM4YzdlOGFjYThmYzJlZWI1MjAxMGFlM2U5ZmVlNmRkODNlZjc4MAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCAxMyAwOTo1ODoyNiAyMDExICswMjAwCiAKLSAgICBGaXggSVB2NiBUQ1AgYW5kIFVEUCB0YWJsZXMsICpCU0Qgc3VwcG9ydAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTkzMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBSZW1vdmUgb2Jzb2xldGUgc25tcF9nZXRfZmRfZm9yX3Nlc3Npb24oKSBkZWNsYXJhdGlvbgogCi1jb21taXQgNWNkMTU3MzYyNTQ3MWMwNTgzZTkwODdhZWM2ODAyYjc3MTU3ZDVhMgotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiAxNSAyMToxMTozNyAyMDExICswMDAwCitjb21taXQgMDg2MGQxMWZkOGZjNWRiZGFhYWUyMjYxZmFlMmMwN2ZiOWMyYzgyZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IFNlcCA4IDEzOjU0OjU1IDIwMTEgKzAyMDAKIAotICAgIEZpeCBJUHY2IFRDUCBhbmQgVURQIHRhYmxlcywgKkJTRCBzdXBwb3J0Ci0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTMwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIENIQU5HRVM6IFdpbmRvd3M6IE1TVkM6IEF2b2lkIHRoYXQgdGhlIHR5cGVkZWZzIGluIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4gY29uZmxpY3Qgd2l0aCB0aG9zZSBpbiA8c3RkaW50Lmg+IGZyb20gdGhlIG1zaW50dHlwZXMgcHJvamVjdAogCi1jb21taXQgYjAwNTk1YzdiODcyODc4NmNkODQzZjI2ODc3NzliMTFmMGU2MTk2YgotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiAxNSAyMDo0NTozNCAyMDExICswMDAwCitjb21taXQgZjhhMDM2ZjYzZmY2OGYwODM0MzYxMjBlMGFiZDQ3OGI2OTJhMmY2MQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IFNlcCA4IDEzOjIxOjA2IDIwMTEgKzAyMDAKIAotICAgIEtpbGwgY29tcGlsZXIgd2FybmluZ3MKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5MjkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgQ0hBTkdFUzogV2luZG93czogTVNWQzogV2hlbiBsaW5raW5nIHdpdGggT3BlblNTTCwgbGluayB3aXRoIHVzZXIzMi5saWIgdG9vCiAKLWNvbW1pdCBiNzZhNTRmN2VlNjY0NGE5NjM2ZDk4ZDk2MGZlZmVjYWJiNzRiYzI5Ci1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDE1IDIwOjQ1OjM0IDIwMTEgKzAwMDAKK2NvbW1pdCA4MzZhMjNlMTBjYTgxMGMzODk5OTAyZDMyNTg3NjE2YTlkMTIwM2RmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSnVsIDE0IDE4OjM4OjEzIDIwMTEgKzAyMDAKIAotICAgIEtpbGwgY29tcGlsZXIgd2FybmluZ3MKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5MjkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgQ0hBTkdFUzogV2luZG93czogTVNWQzogTGluayB3aXRoIHByb3BlciBsaWJlYXkzMiBsaWJyYXJ5CiAKLWNvbW1pdCA2NTU1ODkzNWU5YjI3MTg3NTczNjZlOGIzYjEwYTkxNDEyYjk2YWU4Ci1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDE1IDIwOjQ0OjIyIDIwMTEgKzAwMDAKK2NvbW1pdCA3YjA3ZmQ2Y2RlZjQ5ZWM3YmIwNGIxNjZlMmE0ZmJiMzdiNTgyODQwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDYgMTE6MTA6MzggMjAxMSArMDIwMAogCi0gICAgRmlsdGVyIElQdjYgZW50cmllcyBmcm9tIElQdjQgdGFibGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5MjggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgQ0hBTkdFUzogdGVzdGluZzogUmVtb3ZlIGFuIGluY29ycmVjdCBjb21tZW50IGZyb20gc2ltcGxlX2V2YWxfdG9vbHMuc2gKIAotY29tbWl0IGU4OGY5MjIyYzk5ZWJkYjExZTk0YWVmMzk0Yzg0ZDZjZjY3YmM3NTEKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgMTUgMjA6NDQ6MjIgMjAxMSArMDAwMAorY29tbWl0IDk4ZjZkMjlkOTgxZmY4ZTYwNzYwMGM2M2RhZGIyNDA1MzU2Mjk4MDcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgNiAxMDo0OTowMyAyMDExICswMjAwCiAKLSAgICBGaWx0ZXIgSVB2NiBlbnRyaWVzIGZyb20gSVB2NCB0YWJsZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTkyOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBNYWtlIElTREVGSU5FRCgpIGNoZWNrIGZvciBhbiBleGFjdCBtYXRjaCBpbnN0ZWFkIG9mIGEgcHJlZml4IG1hdGNoCiAKLWNvbW1pdCA4ZmRjMjFmYWExZjQxODUxZGY3ZTAwZDBlMDViNTg4M2NjMzIxODJlCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDE1IDIwOjQyOjQ3IDIwMTEgKzAwMDAKK2NvbW1pdCA1MmNkMDAzMWEzMWY2OTJmMTMyNjNhOTRjMzM1ZDA2YmUxNDU0ODAzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDYgMTA6MTI6NTkgMjAxMSArMDIwMAogCi0gICAgUHJvcGVyIHVzZSBvZiBnZXRwcm9jMiBhbmQgZHJhZ29uZmx5IHN1cHBvcnQKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5MjcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgQ0hBTkdFUzogTWluR1c6IHRlc3Rpbmc6IE1ha2UgdGhvc2UgcmVncmVzc2lvbiB0ZXN0cyBwYXNzIGZvciB3aGljaCBTTk1QQ09ORlBBVEggYW5kL29yIFNOTVBfUEVSU0lTVEVOVF9ESVIgbWF0dGVyCiAKLWNvbW1pdCBlZGQ1ZGU2YzdjMDA0ZDExNjRhZTJjNTFkOWI3ZjFiM2I3YzUzMDY3Ci1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDE1IDIwOjQxOjA5IDIwMTEgKzAwMDAKK2NvbW1pdCBmNWNkODliZDMzNTZkZDc0ZTE1NTZjMGI1MDk2NmE2NDNmMTkyMDg1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDYgMTA6MTI6NTkgMjAxMSArMDIwMAogCi0gICAgZ2V0dmZzc3RhdCBpcyBvbmx5IGZvciBOZXRCU0QKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5MjYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgQ0hBTkdFUzogTWluR1c6IHRlc3Rpbmc6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSB0ZXN0IGZyYW1ld29yawogCi1jb21taXQgZDAyZTVkYWYyMzhmMDhiNTA3MDQzMTllZDQ0NDA2MDU4OWRjZWJhMgotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiAxNSAyMDozOTo1MyAyMDExICswMDAwCitjb21taXQgZGVlZGQ1MmM4MzRhNjQ0ODg1MmEwNjc4NTUzNmUxMzg2NTk2OTY5NAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCA2IDEwOjEyOjU4IDIwMTEgKzAyMDAKIAotICAgIERldGVjdCBuZWVkIGZvciAtbGt2bSBpbiBwcm9wZXIgdGltZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTkyNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBDSEFOR0VTOiBNaW5HVzogU3VwcG9ydCB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBvZiByZWNlbnQgU2hpbmluZyBMaWdodCBPcGVuU1NMIGJpbmFyeSBkaXN0cmlidXRpb25zCiAKLWNvbW1pdCA0ZGU4NDg4NDA0MWUyM2FjOGMxYjZkZmMzMzE1M2E2ZmNjYTRlNmQxCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gRmViIDE0IDE0OjM4OjAwIDIwMTEgKzAwMDAKLQotICAgIEZpeGVkIGEgTWluR1ctc3BlY2lmaWMgY29tcGlsZXIgd2FybmluZy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5MjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmNzFlMTZkMzhkZGM5OTAyYmU2MTNkMzc0OThlYWFkNTI1NzU3Y2RjCi1BdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIEZlYiAxMyAxNjoyODoxNiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBNYWtlIGl0IHBvc3NpYmxlIHRvIGJ1aWxkIHN0YXRpYyBhcHBsaWNhdGlvbnMgdXNpbmcgbmV0LXNubXAtY29uZmlnIGFuZCB0aGUgLSpsaWJzIGZsYWdzIG9uY2UgbW9yZS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5MjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxYzRkZWEyNWIwZTUxZjU0MjUxN2Q1MmNkN2JhZDk0MWY4ZDAxZWQ3Ci1BdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIEZlYiAxMyAxNjoyODoxNiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBNYWtlIGl0IHBvc3NpYmxlIHRvIGJ1aWxkIHN0YXRpYyBhcHBsaWNhdGlvbnMgdXNpbmcgbmV0LXNubXAtY29uZmlnIGFuZCB0aGUgLSpsaWJzIGZsYWdzIG9uY2UgbW9yZS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5MjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxM2ZkZjZjNDk2YmE5NDkwODcwMmFjMThmYzA1Zjk3NjJmMGZmMzEzCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBGZWIgMTAgMTU6MTM6NTkgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzE2NTg3ODogQ2F0Y2ggYnVmZmVyIG92ZXJydW4gb24gNjQtYml0IHN5c3RlbXMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk5MjAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlNWQzM2Y5MzA0N2Y3Mzc2MTEwMmI2NDJkZmVhYTkzZWJiMjg0Y2YxCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBGZWIgMTAgMTU6MTM6NTkgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzE2NTg3ODogQ2F0Y2ggYnVmZmVyIG92ZXJydW4gb24gNjQtYml0IHN5c3RlbXMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5MjAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmMzAyNjMxNmM2ODMyYjA1YmQzNjQ5MjhlNGJjNWY5NWE3MTI1MmIxCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBGZWIgMTAgMTU6MTM6NTkgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzE2NTg3ODogQ2F0Y2ggYnVmZmVyIG92ZXJydW4gb24gNjQtYml0IHN5c3RlbXMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5MjAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlZDVmN2MzN2Y4OTk2NGMxZjdkZDE2ZTYyMmNkNjNjNjNiZDMzNTc0Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBGZWIgMTAgMTU6MDY6NDYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDMxNTI0MTI6IEhhbmRsZSAoYW5kIHJlcG9ydCkgcHJvYmxlbXMgcmVhZGluZyAvcHJvYy92bXN0YXQKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk5MTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBkMTI4ZGRkNGFlNTkxOWI5YmY4MmUyNDRhNTcyOTQxMTVjZmQxODU5Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBGZWIgMTAgMTU6MDY6NDYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDMxNTI0MTI6IEhhbmRsZSAoYW5kIHJlcG9ydCkgcHJvYmxlbXMgcmVhZGluZyAvcHJvYy92bXN0YXQKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5MTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwMjcxMzM0MjY1NGVmYzQwOTlmNmE2NTM4MDE4NDZiMzAwYmJmYTg0Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBGZWIgMTAgMTU6MDY6NDYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDMxNTI0MTI6IEhhbmRsZSAoYW5kIHJlcG9ydCkgcHJvYmxlbXMgcmVhZGluZyAvcHJvYy92bXN0YXQKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5MTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3Y2U4ZTIyNTc4N2U0ZDA3MDkyYTYzNGI4MDNmYmE2MzU1Nzg3NjBmCitjb21taXQgZDU1YmQ0ZTA1NDlmMDNiNmZkMzI1NjJjMmFhN2ZlMzkyNzJhOWVmNwogQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiA4IDE3OjQxOjM3IDIwMTEgKzAwMDAKK0RhdGU6ICAgV2VkIFNlcCAyOCAwNjo1NToxOSAyMDExIC0wNzAwCiAKLSAgICBDSEFOR0VTOiBwZXJsOiBwYXRjaCBmcm9tIE1hcnRpbiBCdWNrOiBkb24ndCBhbHdheXMgb3BlbiBzdGRlcnIgYXMgdGhlIGNhbGxzIHRvIHNubXBfbG9nIGFscmVhZHkgZG8gdGhpcyBhbmQgaXQgbWVzc2VzIHVwIHRoZSBhZ2VudCB3aGVuIGVtYmVkZGVkCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5OTE2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIHJlbW92ZSB0aGUgdjUuNyBmcm9tIHRoZSBmcm96ZW4gbGlzdAogCi1jb21taXQgMTE4Y2Q0MmJkYTFkNjBhODFmMGU0NDk1NjMxMTBmYThjMzg4OWUyYworY29tbWl0IGFjMmFlZDNjOTRiYjJlYmI0NzNhZjBhMWUyMGYwNTYxYWQ2Mjk5NTYKIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgOCAxNzo0MTozNyAyMDExICswMDAwCitEYXRlOiAgIFdlZCBTZXAgMjggMDY6NTU6MTEgMjAxMSAtMDcwMAogCi0gICAgQ0hBTkdFUzogcGVybDogcGF0Y2ggZnJvbSBNYXJ0aW4gQnVjazogZG9uJ3QgYWx3YXlzIG9wZW4gc3RkZXJyIGFzIHRoZSBjYWxscyB0byBzbm1wX2xvZyBhbHJlYWR5IGRvIHRoaXMgYW5kIGl0IG1lc3NlcyB1cCB0aGUgYWdlbnQgd2hlbiBlbWJlZGRlZAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTkxNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICByZW1vdmUgdGhlIHY1LjcgZnJvbSB0aGUgZnJvemVuIGxpc3QKIAotY29tbWl0IDk4YTIzZjBjOGYxZDA1MjIxOGQyOTZhZDFmZWQ1NjkyYmIwYzU0NzgKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgOCAxNzo0MTozNyAyMDExICswMDAwCitjb21taXQgNDZlYWMwMmU5YTI3YmY0ZjMwNjhlNzk1Y2FiODkxZjA1YTg0ODg3MAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIFNlcCAyNiAyMTo0OToyNyAyMDExICswMjAwCiAKLSAgICBDSEFOR0VTOiBwZXJsOiBwYXRjaCBmcm9tIE1hcnRpbiBCdWNrOiBkb24ndCBhbHdheXMgb3BlbiBzdGRlcnIgYXMgdGhlIGNhbGxzIHRvIHNubXBfbG9nIGFscmVhZHkgZG8gdGhpcyBhbmQgaXQgbWVzc2VzIHVwIHRoZSBhZ2VudCB3aGVuIGVtYmVkZGVkCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTE2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYjQzZWFiMzIwMzFkN2E1OGZhZDQ4ODgzYWJhNjQ4YjAwMDMzOGRlNQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiA4IDE3OjM3OjAxIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBGaXggYSBzdHJsZW4gY2FsY3VsYXRpb24gYXMgcG9pbnRlZCBvdXQgYnkgS29uc3RhbnRpbiBCYXlkYXJvdgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTkxNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDNjZDI0MjIyMzk3NzIxY2E1NTIwM2I0MTQ1OGRmOWJjM2JiNWI2MzMKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgOCAxNzozNzowMSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogRml4IGEgc3RybGVuIGNhbGN1bGF0aW9uIGFzIHBvaW50ZWQgb3V0IGJ5IEtvbnN0YW50aW4gQmF5ZGFyb3YKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5MTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmZjM5ZmE3NzVmOGY2ZjA0MDdiYzRjN2ZjZjhjMWRlODMwMTk2MDgwCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDggMTc6Mzc6MDEgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IEZpeCBhIHN0cmxlbiBjYWxjdWxhdGlvbiBhcyBwb2ludGVkIG91dCBieSBLb25zdGFudGluIEJheWRhcm92Ci0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTE1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZjBkNmJmMDNkNWZlNmRiZmNlNDQzMGYwYWYyMDQwZjAwY2UxNGU0NQotQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEZlYiAzIDIyOjQyOjI5IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMzE3MTg3ODogVXNpbmcgU05NUHYzIGNvbnRleHQgZG9lcyBub3Qgd29yawotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTItcGF0Y2hlc0AxOTkxMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDFjZjljNDU2YjNjYTQzMTdkMWQ3ZDIyMGFkZWNjZDg0ZDA1MzVkZGIKLUF1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBGZWIgMyAyMjo0MjoyOSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDMxNzE4Nzg6IFVzaW5nIFNOTVB2MyBjb250ZXh0IGRvZXMgbm90IHdvcmsKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk5MTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5ZWQ3YmE0MmZjMjI5NzcyMjlhNmU0MzFiMzA5MDMxZWY4ZjhjY2E0Ci1BdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgRmViIDMgMjI6NDI6MjkgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAzMTcxODc4OiBVc2luZyBTTk1QdjMgY29udGV4dCBkb2VzIG5vdCB3b3JrCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTEwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOWMwN2Q0ODU2MjE0NTgwN2Y3MjE4MGE3YjIxM2NjNTk5ZDhhNmJlNQotQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEZlYiAzIDIyOjQyOjI5IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMzE3MTg3ODogVXNpbmcgU05NUHYzIGNvbnRleHQgZG9lcyBub3Qgd29yawotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTkxMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDY5YzQwNzU1MzBjNjU3YTI4ZmE0NTI4M2U5NjRhM2MxYTEyZjk4MGUKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDEgMTM6MDc6NTUgMjAxMSArMDAwMAotCi0gICAgRG9uJ3QgY2hlY2sgZm9yIDMyLzY0Yml0IHdyYXAgaW4gY2FsY3VsYXRlZCBlbnRyaWVzLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTkwOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDBhNDIwMDNlYjE4ZmMwNTExMDQ4ZDBhYzI2ZTVkZTQyMGI0ZTFkYzQKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDEgMDk6NDE6MjggMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IGZpeGVkIHRoZSBhZ2VudCB3cml0aW5nICdsb29rcyBsaWtlIGEgNjRiaXQgd3JhcCwgYnV0IHByZXYhPW5ldycgaW4gc3lzbG9nIHdoZW4gY29tcHV0aW5nIGlwU3lzdGVtU3RhdHMKLSAgICAKLSAgICBXaXRob3V0IHRoZSBtZW1jcHksIHByZXZfdmFscy0+c3RhdHMgYW5kIG5ld192YWxzLT5zdGF0cyBjb3VsZCBnZXQgZGlmZmVyZW50LAotICAgIHdoaWNoIGNvdWxkIG11Y2ggbXVjaCBsYXRlciAod2hlbiBhIGNvdW50ZXIgZ2V0cyBiaWdnZXIgdGhhbiAzMiBiaXRzKSByZXN1bHQKLSAgICBpbiAncHJldiE9bmV3JyBtZXNzYWdlIGluIHN5c2xvZy4gVHlwaWNhbGx5IHRoaXMgaGFwcGVucyBhZnRlciBsb25nIHRpbWUgb2YKLSAgICB1cHRpbWUgYW5kIGl0IGlzIHZlcnkgaGFyZCB0byByZXByb2R1Y2UuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5OTA3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZmZmYzMwMDJhMGY3NTgwY2I0NDFkZjc2MGJkM2RkNGI1NDkwMTVlNAotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgMSAwOTo0MToyOCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogZml4ZWQgdGhlIGFnZW50IHdyaXRpbmcgJ2xvb2tzIGxpa2UgYSA2NGJpdCB3cmFwLCBidXQgcHJldiE9bmV3JyBpbiBzeXNsb2cgd2hlbiBjb21wdXRpbmcgaXBTeXN0ZW1TdGF0cwotICAgIAotICAgIFdpdGhvdXQgdGhlIG1lbWNweSwgcHJldl92YWxzLT5zdGF0cyBhbmQgbmV3X3ZhbHMtPnN0YXRzIGNvdWxkIGdldCBkaWZmZXJlbnQsCi0gICAgd2hpY2ggY291bGQgbXVjaCBtdWNoIGxhdGVyICh3aGVuIGEgY291bnRlciBnZXRzIGJpZ2dlciB0aGFuIDMyIGJpdHMpIHJlc3VsdAotICAgIGluICdwcmV2IT1uZXcnIG1lc3NhZ2UgaW4gc3lzbG9nLiBUeXBpY2FsbHkgdGhpcyBoYXBwZW5zIGFmdGVyIGxvbmcgdGltZSBvZgotICAgIHVwdGltZSBhbmQgaXQgaXMgdmVyeSBoYXJkIHRvIHJlcHJvZHVjZS4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5MDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwYzk5YWYyNDA0MTZiY2Q2ZDVjNTE1OTZjMzEwZDU3YjBhZmY0YzVjCi1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiAxIDA5OjQxOjI4IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBmaXhlZCB0aGUgYWdlbnQgd3JpdGluZyAnbG9va3MgbGlrZSBhIDY0Yml0IHdyYXAsIGJ1dCBwcmV2IT1uZXcnIGluIHN5c2xvZyB3aGVuIGNvbXB1dGluZyBpcFN5c3RlbVN0YXRzCi0gICAgCi0gICAgV2l0aG91dCB0aGUgbWVtY3B5LCBwcmV2X3ZhbHMtPnN0YXRzIGFuZCBuZXdfdmFscy0+c3RhdHMgY291bGQgZ2V0IGRpZmZlcmVudCwKLSAgICB3aGljaCBjb3VsZCBtdWNoIG11Y2ggbGF0ZXIgKHdoZW4gYSBjb3VudGVyIGdldHMgYmlnZ2VyIHRoYW4gMzIgYml0cykgcmVzdWx0Ci0gICAgaW4gJ3ByZXYhPW5ldycgbWVzc2FnZSBpbiBzeXNsb2cuIFR5cGljYWxseSB0aGlzIGhhcHBlbnMgYWZ0ZXIgbG9uZyB0aW1lIG9mCi0gICAgdXB0aW1lIGFuZCBpdCBpcyB2ZXJ5IGhhcmQgdG8gcmVwcm9kdWNlLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTkwNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDNiMWQzMGM3MzkxMDU1ZDUzNjc1OTdkMGQ3ZGNlNzFhYTJhMjg0Y2QKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBKYW4gMzEgMjI6Mzk6MzggMjAxMSArMDAwMAotCi0gICAgYWRkcHJvdG90eXBlcyBhbmQgcmVtb3ZlIHVudXNlZCB2YXJzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTA1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYTYwODEyODI5ZjJjOTM2OThmMGM0MmE3OTA0OWE1NTEzM2EwNTlhNQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEphbiAzMSAyMjozOTozOCAyMDExICswMDAwCi0KLSAgICBhZGRwcm90b3R5cGVzIGFuZCByZW1vdmUgdW51c2VkIHZhcnMKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5MDUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5MDE2NjQ2MjBjNDk4OGU1ZTlmNGJlNmYxZmRiOTM0ZGE5YjIzODUyCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gSmFuIDMxIDIyOjM3OjU4IDIwMTEgKzAwMDAKLQotICAgIGNvbnN0IGp1Z2dsaW5nIHRvIHJlbW92ZSB3YXJuaW5ncwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTkwNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDllMzI0NjM0YmU3YjBkYzAwODYzNDllYjZjMGY3NTQyODgzZWIxNWQKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBKYW4gMzEgMjI6Mzc6NTggMjAxMSArMDAwMAotCi0gICAgY29uc3QganVnZ2xpbmcgdG8gcmVtb3ZlIHdhcm5pbmdzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTA0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYzIzYWE0ZDkwZDkyZjVjNDk4NmE4ZGNhMGIxODI1MjNkYzU4NTkwYgotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEphbiAzMSAyMjozMDo1NCAyMDExICswMDAwCi0KLSAgICBkaXNraW8gZm9yIGRyYWdvbmZseQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTkwMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDI4NTEzZjEyYTcyYTlhMGRlNGE5NTQ1MDQ3OWFjNTRhNjgxYWQ4YTkKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBKYW4gMzEgMjI6MzA6NTQgMjAxMSArMDAwMAotCi0gICAgZGlza2lvIGZvciBkcmFnb25mbHkKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5MDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwZDRmOGQ2MTE5YjJlYjZmZGY1NjkwOTBjMmEzNGZjOTY0MjRjMGY3Ci1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gSmFuIDMxIDIyOjI4OjMwIDIwMTEgKzAwMDAKLQotICAgIHByb3Blcmx5IG5hbWUgaW5pdGFsaXplciBmdW5jdGlvbiBmb3IgY3B1X2tpbmZvCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTAyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNTk0M2M1OTQ0MTM5M2ViZGNkOWIxY2I2YjgzMmE0MjgwMjRmOTE0NQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEphbiAzMSAyMjoyODozMCAyMDExICswMDAwCi0KLSAgICBwcm9wZXJseSBuYW1lIGluaXRhbGl6ZXIgZnVuY3Rpb24gZm9yIGNwdV9raW5mbwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTkwMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGU2OTY5Yjk5M2IyMDk1MWNjZDgyMzJlYmQ1MTAxYzY2OTRlOTg4N2YKLUF1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBKYW4gMzAgMDE6MDY6MjEgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMzE1MTg5NzogZmQgbGVhayB3LyAvcHJvYy9wYXJ0aXRpb25zCi0gICAgcmVhZCBpbiBkaXNraW8KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0yLXBhdGNoZXNAMTk4OTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1NWVlYTM3MjQxYTU5OTg5OGNlNjFmMzY0YTZhMDdkODU2MjAyZmFkCi1BdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gSmFuIDMwIDAxOjA2OjIxIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDMxNTE4OTc6IGZkIGxlYWsgdy8gL3Byb2MvcGFydGl0aW9ucwotICAgIHJlYWQgaW4gZGlza2lvCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODk5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgN2YyYzdmZmEwMjBlYTU3Zjg1NGEyNzEyOWE2ODNlY2NhM2JkNjljNgotQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIEphbiAzMCAwMTowNjoyMSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzMTUxODk3OiBmZCBsZWFrIHcvIC9wcm9jL3BhcnRpdGlvbnMKLSAgICByZWFkIGluIGRpc2tpbwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg5OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDkwNTEzMDM0MDkzNDFmOGIxNTFhY2QzM2Q1M2NhNzYzYzRlODVkMGUKLUF1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBKYW4gMzAgMDE6MDY6MjEgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMzE1MTg5NzogZmQgbGVhayB3LyAvcHJvYy9wYXJ0aXRpb25zCi0gICAgcmVhZCBpbiBkaXNraW8KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4OTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlNjNkYTc5YjFiNjJiN2IwNjFjMDVjNGU3YTJhZDgzODZiNDc2NjFkCi1BdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgSmFuIDI5IDIzOjM2OjI5IDIwMTEgKzAwMDAKLQotICAgIE5FV1M6IHNubXBkOiBCVUc6IDMxNjY1Njg6IGhyU3lzdGVtUHJvY2Vzc2VzIG1pc3NpbmcgaW4gNS42LzUuNi4xCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODk4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNzkxZDQyMGU0ODc0ZDAzYWNjMjUzNzRmNzllYjJhYTE5ZGI3MmE5YwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDI3IDA5OjM1OjI0IDIwMTEgKzAwMDAKLQotICAgIEFmdGVyIHRlbiB5ZWFycyBpbnRlbnNpdmUgdXNlLCBhbiAiZXhwZXJpbWVudGFsIgotICAgIGZlYXR1cmUgY2FuIHByb2JhYmx5IGJlIHJlbGVhc2VkIGZvciBnZW5lcmFsIHVzZS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4OTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjZWUyNTQyNmI0Y2NjNTliZDNkNTkyYTczMTgyY2FmNzYwMzAxNGQ4Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gMjcgMDk6MzU6MjQgMjAxMSArMDAwMAotCi0gICAgQWZ0ZXIgdGVuIHllYXJzIGludGVuc2l2ZSB1c2UsIGFuICJleHBlcmltZW50YWwiCi0gICAgZmVhdHVyZSBjYW4gcHJvYmFibHkgYmUgcmVsZWFzZWQgZm9yIGdlbmVyYWwgdXNlLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg5NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDA4OTU4ZjY5YWM2YTg0NTBjNzEzM2MwNTJjNDdjOTBiYTM1ZWU5ZWIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiAyNyAwOTozNToyNCAyMDExICswMDAwCi0KLSAgICBBZnRlciB0ZW4geWVhcnMgaW50ZW5zaXZlIHVzZSwgYW4gImV4cGVyaW1lbnRhbCIKLSAgICBmZWF0dXJlIGNhbiBwcm9iYWJseSBiZSByZWxlYXNlZCBmb3IgZ2VuZXJhbCB1c2UuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODk3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOGEwNmY5ZDRkOWIwODkwYTVmOTNhZjAwY2Y4YWU0YTQ1ZGE4M2NmYwotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEphbiAyNiAxNjo1MDo1MiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBtaWIyYzogbWFrZSB0aGUgbWliMmMgZm9yZWFjaCByYW5nZXMgd29yayBhcyBhZHZlcnRpc2VkIGluIHRoZSBjb21tZW50cy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4OTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwY2YxYmE2Y2E1ZDVhZDMyNzhjYWE4ODc5YmM0NmQyNWVkMWQ1NTU0Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSmFuIDI2IDE2OjUwOjUyIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IG1pYjJjOiBtYWtlIHRoZSBtaWIyYyBmb3JlYWNoIHJhbmdlcyB3b3JrIGFzIGFkdmVydGlzZWQgaW4gdGhlIGNvbW1lbnRzLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg5NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDNiYmRlNWYzY2Y4ZGZmOTliZDgwNmYxZmNkYWEzODRlY2ViMTg4NTcKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKYW4gMjYgMTY6NTA6NTIgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogbWliMmM6IG1ha2UgdGhlIG1pYjJjIGZvcmVhY2ggcmFuZ2VzIHdvcmsgYXMgYWR2ZXJ0aXNlZCBpbiB0aGUgY29tbWVudHMuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODk2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgM2U5NzJkZTk3NDI3YjY2NDg1MjI1OGFlY2VjYTJhNGQ5NWNjMzBiNwotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKYW4gMjYgMDk6MTI6MjAgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IGZpeGVkIHJhcmUgcmFjZSBjb25kaXRpb24gd2hlbiBjb3VudGluZyBwcm9jZXNzZXMgZm9yIFVDRC1TTk1QLU1JQjo6cHJUYWJsZQotICAgIAotICAgIFRoZSBYWCBwcm9jZXNzIGNhbiBleGl0IGFmdGVyIGZvcGVuKC9wcm9jL1hYL3N0YXR1cykgYW5kIGJlZm9yZSBmZ2V0cygpIGZyb20gaXQuIHNubXBkIHNob3VsZCBjb250aW51ZSB3aXRoIG90aGVyIHByb2Nlc3NlcyBhbmQgbm90IHRvIHN0b3AuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODkzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYmNlZTAzN2M3MWYwMDZlMmJlM2I0NDZlM2U4MWM1MDlkNDljNjVjZAotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKYW4gMjYgMDk6MTI6MjAgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IGZpeGVkIHJhcmUgcmFjZSBjb25kaXRpb24gd2hlbiBjb3VudGluZyBwcm9jZXNzZXMgZm9yIFVDRC1TTk1QLU1JQjo6cHJUYWJsZQotICAgIAotICAgIFRoZSBYWCBwcm9jZXNzIGNhbiBleGl0IGFmdGVyIGZvcGVuKC9wcm9jL1hYL3N0YXR1cykgYW5kIGJlZm9yZSBmZ2V0cygpIGZyb20gaXQuIHNubXBkIHNob3VsZCBjb250aW51ZSB3aXRoIG90aGVyIHByb2Nlc3NlcyBhbmQgbm90IHRvIHN0b3AuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODkzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMmU1ZjU2NDBkYjk5OTc4M2I4Mzk4MTE2Zjg0NjJhNWIwYTMyNDdlNAotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKYW4gMTkgMTM6NTc6NDcgMjAxMSArMDAwMAotCi0gICAgTWFrZSB1cyBjb21wYXRpYmxlIHdpdGggcnBtLTQuOSwgcnBtR2V0RmlsZXN5c3RlbUxpc3QgZG9lcyBub3QgZXhpc3QgYW55bW9yZSwgc28gdGhlIGNvbmZpZ3VyZSBzY3JpcHQgc2hvdWxkIG5vdCBjaGVjayBpdC4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4OTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA4NDI0ZWZkOTdlMDAyZDUzNGM4MWQ0YmM2ODczMjlkNzIzYTllMThiCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSmFuIDE5IDA2OjMxOjAxIDIwMTEgKzAwMDAKLQotICAgIGRpc2tJT0xBeCByZXF1aXJlcyBleHAgd2hpY2ggbWF5IHJlcXVpcmUgLWxtCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODkxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMzIzMzQwMzg5NzBjNWFmNmExYzE5ODE1MjA0ZDFjZDQ4NDA1MjQ5MwotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEphbiAxOSAwNjoyMDo0NSAyMDExICswMDAwCi0KLSAgICBEZWZpbmUgRFJBR09ORkxZSUQKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4OTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA2YTBjMzUyZTkxY2ZjZTk1ZDRkNGNiYmU1NTU4OTVjMjY2ZGE3NDU2Ci1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSmFuIDE5IDA2OjIwOjQ1IDIwMTEgKzAwMDAKLQotICAgIERlZmluZSBEUkFHT05GTFlJRAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg5MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDViNzAyYjAyNGI2MDE3NmQ3ZjU2OTliOTJlNTVkYTUwYThkZWFlNzEKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTggMjI6MDE6MjQgMjAxMSArMDAwMAotCi0gICAgdHlwbwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg4NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGJjYjU5NzI2ODc0NTAwYmEzNzA0ZjBiNDg3YTAzOTA4MzU4MjJjYTkKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTggMjE6NTQ6MjQgMjAxMSArMDAwMAotCi0gICAgRmluZCBwcm9wZXIgaWYtbWliIGludGVyZmFjZSBmb3IgTmV0QlNECi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODgzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOTdjZTM4NTg2OThiM2JmMGUxMzM4OTk0MGE1OGM3YTNkZjBmZjI2OAotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gMTQgMTI6Mjg6NDAgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IGZyb20gUm9iZXJ0IFN0b3J5OiBmaXhlZCBhZGRpbmcgbmV3IGFkZHJlc3NlcyB0byBpcEFkZHJlc3NUYWJsZQotICAgIAotICAgIExvbmcgdGltZSBhZ28sIHRoZXJlIHdhcyBhIGJ1Z3JlcG9ydFsxXSByZWdhcmRpbmcgaXBBZGRyZXNzVGFibGUgb24KLSAgICBuZXQtc25tcC1jb2RlcnMgbGlzdCBhbmQgcnN0b3J5J3MgZXhwZXJpbWVudGFsIHBhdGNoIHdpdGhvdXQgYW55IGZlZWRiYWNrLgotICAgIE5vdyBJJ3ZlIGdvdCBmZXcgY29tcGxhaW50cyB0aGF0IFNOTVAgU0VUIG9uIGlwQWRkcmVzc1RhYmxlIHByb2R1Y2VzIHRoZQotICAgIHNhbWUgZXJyb3JzIGFuZCBndWVzcyB3aGF0LCB0aGUgcGF0Y2ggZml4ZXMgdGhlbS4KLSAgICAKLSAgICBbMV06IGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvbWFpbGFyY2hpdmUvZm9ydW0ucGhwP3RocmVhZF9uYW1lPTIwMDYwOTIwMTM0OTM1LjM1YjM2ZWQ2JTQwZGV2LmZ1dHoub3JnJmZvcnVtX25hbWU9bmV0LXNubXAtY29kZXJzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODgxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZjFiZGRlYzJjMjc2Y2JhZGMyNzYxYzQzOGQ2ZTljMGRlY2YxMWViZgotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gMTQgMTI6Mjg6NDAgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IGZyb20gUm9iZXJ0IFN0b3J5OiBmaXhlZCBhZGRpbmcgbmV3IGFkZHJlc3NlcyB0byBpcEFkZHJlc3NUYWJsZQotICAgIAotICAgIExvbmcgdGltZSBhZ28sIHRoZXJlIHdhcyBhIGJ1Z3JlcG9ydFsxXSByZWdhcmRpbmcgaXBBZGRyZXNzVGFibGUgb24KLSAgICBuZXQtc25tcC1jb2RlcnMgbGlzdCBhbmQgcnN0b3J5J3MgZXhwZXJpbWVudGFsIHBhdGNoIHdpdGhvdXQgYW55IGZlZWRiYWNrLgotICAgIE5vdyBJJ3ZlIGdvdCBmZXcgY29tcGxhaW50cyB0aGF0IFNOTVAgU0VUIG9uIGlwQWRkcmVzc1RhYmxlIHByb2R1Y2VzIHRoZQotICAgIHNhbWUgZXJyb3JzIGFuZCBndWVzcyB3aGF0LCB0aGUgcGF0Y2ggZml4ZXMgdGhlbS4KLSAgICAKLSAgICBbMV06IGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvbWFpbGFyY2hpdmUvZm9ydW0ucGhwP3RocmVhZF9uYW1lPTIwMDYwOTIwMTM0OTM1LjM1YjM2ZWQ2JTQwZGV2LmZ1dHoub3JnJmZvcnVtX25hbWU9bmV0LXNubXAtY29kZXJzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODgxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNjVmNGZlZDMxMzcxNGM0MmNhY2NiNjdhNWY2NzFkYjYyZWU0NmVmZAotQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gMTQgMDY6MjU6NTkgMjAxMSArMDAwMAotCi0gICAgcmVtb3ZlIGNvbXBsZXRlbHkgdXNlbGVzcyBhbmQgbm9uc2Vuc2ljYWwgY29kZQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGE3MDk2NmEyZjhiMzY0OWVhMWM3MTdiNWU4ODM1ZWU4NTUxMGJmNmUKLUF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDE0IDA2OjI1OjU5IDIwMTEgKzAwMDAKLQotICAgIHJlbW92ZSBjb21wbGV0ZWx5IHVzZWxlc3MgYW5kIG5vbnNlbnNpY2FsIGNvZGUKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4NzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA2NGFhZDhlOTFjYjRlMGMxZjYyYzEyZGU5NmUxYTY0ODY2MGE1NmM1Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gMTMgMTU6NTY6MzcgMjAxMSArMDAwMAotCi0gICAgRW5zdXJlIHJlbGVhc2VzIGFyZSBpbnN0YWxsZWQgdG8gdGhlIGNvcnJlY3QgcGF0aCB3aXRoaW4gdGhlIC90YWdzIFNWTiB0cmVlCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZTc1NDU4ZmU1ZTg0YmEyOTIwOWM0NzdiYmY3NDIzYzkyMDMzZDVhZQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDEzIDE1OjU2OjM3IDIwMTEgKzAwMDAKLQotICAgIEVuc3VyZSByZWxlYXNlcyBhcmUgaW5zdGFsbGVkIHRvIHRoZSBjb3JyZWN0IHBhdGggd2l0aGluIHRoZSAvdGFncyBTVk4gdHJlZQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGU0ZDk2ZGNlYzA5MzM4MjA3MzNmYTU4OWNlZTYyODc1ZWRmNmNkZTMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiAxMyAxNToxNTo1NyAyMDExICswMDAwCi0KLSAgICBSZW1vdmUgQysrIGNvbW1lbnRzCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODY4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNGVjOGI0MzFiNThjNWNkZWQxNjc5NGE0YmU5MmY4ODM3NjkzOTFhOAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDEzIDE1OjE1OjU3IDIwMTEgKzAwMDAKLQotICAgIFJlbW92ZSBDKysgY29tbWVudHMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4NjggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzYmM0ODJhOTEwNGJhNjlkY2IyYmYxZjZmNTczNzQyOTc3Mzc2YzcwCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gMTMgMTM6MTc6NDEgMjAxMSArMDAwMAotCi0gICAgRml4IGJyb2tlbiBwYXRjaAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg2NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGNhN2FlNWMzZjI5MDE0MDY2ZDU1NjYyZjU5ZTMzODI1ZDFmNzNlNDcKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiAxMyAxMjoxNDoxOSAyMDExICswMDAwCi0KLSAgICBDb25maWd1cmUgZml4ZXMgZm9yIERyYWdvbkZseSBzdXBwb3J0Ci0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODYzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYTRkZDFiNGRhZmI4OTcwMDQxYzFmMzhjZjI2ZGEyYTAwNmU0ZGRlMwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDEzIDEyOjE0OjE5IDIwMTEgKzAwMDAKLQotICAgIENvbmZpZ3VyZSBmaXhlcyBmb3IgRHJhZ29uRmx5IHN1cHBvcnQKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4NjMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhNTE0MTE4MDQ3OTUwYTZkYTNlODJjYzVkMDdkNDUzMGNmZWY4Mjg2Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gMTMgMTI6MDQ6NTMgMjAxMSArMDAwMAotCi0gICAgQ29kZSBmaXhlcyBmb3IgRHJhZ29uRmx5IHN1cHBvcnQKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4NjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5ODZiMmRlZGE1NzkyYTI0NGZmZGE1ZTAwNzQxMmJiNWU0M2E2NzNmCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gMTMgMTI6MDQ6NTMgMjAxMSArMDAwMAotCi0gICAgQ29kZSBmaXhlcyBmb3IgRHJhZ29uRmx5IHN1cHBvcnQKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4NjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxOWY5NzA2OTlhYTA2NjM5Mzc4ODYxYjZkNmE1ZTI3ZjRjM2ZjOTY3Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gMTMgMTE6MzM6MTQgMjAxMSArMDAwMAotCi0gICAgRml4IHR5cG8KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4NjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzNmU1ZDZkYjliOWJjZjMxYWQ3NTRkMjA3YWI4YTU4OWIxMjU5ZTQwCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gMTMgMTE6MzM6MTQgMjAxMSArMDAwMAotCi0gICAgRml4IHR5cG8KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4NjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhYmFmMDI1NDExMWFhYzA4NTNkM2VjNDM0N2IwZmZjODQzZGFlYzIyCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSmFuIDEyIDE5OjIwOjIzIDIwMTEgKzAwMDAKLQotICAgIEdldCByaWQgb2YgYSBjb21waWxlciB3YXJuaW5nIGluIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIUGFyYW1ldGVycy91c21ESFBhcmFtZXRlcnMuYy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4NTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiZTgwNGM3YmU4NDc2OTJjYjgwOGMxOWVmYzA2MDNiYjU2NjBmZDViCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSmFuIDEyIDE5OjIwOjIzIDIwMTEgKzAwMDAKLQotICAgIEdldCByaWQgb2YgYSBjb21waWxlciB3YXJuaW5nIGluIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIUGFyYW1ldGVycy91c21ESFBhcmFtZXRlcnMuYy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4NTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA0ZGM2YWE2ODZkYzdmNmJiMzZjMDU0NTMyZWYyNjYyYjI2MmNlNWM1Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSmFuIDEyIDE5OjA0OjM5IDIwMTEgKzAwMDAKLQotICAgIEZpeGVkIGEgY29tcGlsZXIgd2FybmluZyAoZm9ybWF0IHNwZWNpZmljYXRpb24gbWlzbWF0Y2gpIHRoYXQgd2FzIGludHJvZHVjZWQKLSAgICBpbiByMTk4MDggKCJzbm1wZDogUEFUQ0hFUzogMjk3NTI1NDogQXZvaWQgY2FsbGJhY2sgcmUtdXNlIG9mIGNsb3NlZCBzZXNzaW9ucyIpLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg1NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGYyZDczNDU0YmEwNzM0N2I0MWNmZWQ3NzUxZWM2ZjkyMWJkYmQ4MDEKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKYW4gMTIgMTk6MDQ6MzkgMjAxMSArMDAwMAotCi0gICAgRml4ZWQgYSBjb21waWxlciB3YXJuaW5nIChmb3JtYXQgc3BlY2lmaWNhdGlvbiBtaXNtYXRjaCkgdGhhdCB3YXMgaW50cm9kdWNlZAotICAgIGluIHIxOTgwOCAoInNubXBkOiBQQVRDSEVTOiAyOTc1MjU0OiBBdm9pZCBjYWxsYmFjayByZS11c2Ugb2YgY2xvc2VkIHNlc3Npb25zIikuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODU2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZDY2Zjg4ZmY0ZjBhNjY5ZjVjNWRlNzAyN2UxZWIwYzdjZDlhYWZiYwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEphbiAxMiAxOTowNDozOSAyMDExICswMDAwCi0KLSAgICBGaXhlZCBhIGNvbXBpbGVyIHdhcm5pbmcgKGZvcm1hdCBzcGVjaWZpY2F0aW9uIG1pc21hdGNoKSB0aGF0IHdhcyBpbnRyb2R1Y2VkCi0gICAgaW4gcjE5ODA4ICgic25tcGQ6IFBBVENIRVM6IDI5NzUyNTQ6IEF2b2lkIGNhbGxiYWNrIHJlLXVzZSBvZiBjbG9zZWQgc2Vzc2lvbnMiKS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4NTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA4ZjU4ZGFlMmExYjNlNzQ1ZWUxZThiOTQ0ZjdlYTdlNWFlMWM0Y2YwCi1BdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEphbiAxMiAxNTowMzoxMSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wOiBwYXRjaDogMzA5NjcyNTogc3lzT1JUYWJsZSByZWdpc3RhdGlvbiBmb3Igbm90aWZpY2F0aW9uIGxvZyBtaWIKLSAgICAKLSAgICAgIG9yaWdpbmFsIHBhdGNoIGZpeGVkIHNldmVyYWwgaXNzdWVzLCBvdGhlciBwYXJ0cyBhcHBsaWVkIGVhcmxpZXIKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4NTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA4OTA1Yzk4ZGI2ZGU4ODBiM2JjOTkyZWRkOTRlZjcwZmE0ZDUxNzczCi1BdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEphbiAxMiAxNTowMzoxMSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wOiBwYXRjaDogMzA5NjcyNTogc3lzT1JUYWJsZSByZWdpc3RhdGlvbiBmb3Igbm90aWZpY2F0aW9uIGxvZyBtaWIKLSAgICAKLSAgICAgIG9yaWdpbmFsIHBhdGNoIGZpeGVkIHNldmVyYWwgaXNzdWVzLCBvdGhlciBwYXJ0cyBhcHBsaWVkIGVhcmxpZXIKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4NTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxNTk1MzBlYTVmZTNhZDYyM2RiODIxYzhiNzkzY2QwNDY1ZGFiMGIyCi1BdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEphbiAxMiAxNDozNzowOSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBhZ2VudDogTUlCLXNwZWNpZmljIGxlYWstYXQtZXhpdCBmaXhlcy4KLSAgICAKLSAgICAgIGJhY2twb3J0IGFwcGxpY2FibGUgcGFydHMgb2YgcjE5NTMzIGZyb20gdHJ1bmsKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4NTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5NTZjODQ5NTMwZTU5YzA0NTFkOTY0MzI0N2U0MzQ4ZTJhYjA5NTg0Ci1BdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEphbiAxMiAxNDozNzowOSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBhZ2VudDogTUlCLXNwZWNpZmljIGxlYWstYXQtZXhpdCBmaXhlcy4KLSAgICAKLSAgICAgIGJhY2twb3J0IGFwcGxpY2FibGUgcGFydHMgb2YgcjE5NTMzIGZyb20gdHJ1bmsKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4NTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxNjVjOGJhZGRhNjk3MDY3ZGY4ZmFhYzBkYjEyNDU1YjgxMmNjNWE5Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTY6MDQ6MTYgMjAxMSArMDAwMAotCi0gICAgUmVjb2duaXNlIEFnZW50IE9JRCBmb3IgRHJhZ29uRmx5IHN5c3RlbXMgKGFuZCBnZW5lcmFsIHRpZHlpbmcgdXApCi0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgUW46IFNob3VsZCB0aGVzZSBiZSB1cGRhdGVkIHRvIHJlZmVyIHRvIE5ldC1TTk1QIChyYXRoZXIgdGhhbiBVQ0QpPwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg1MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDliNmQyNzZhMmNiYzNmMTg2NGFlOTZhZTFiZDdhYTQzMDY0MmM4NjUKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxNjowNDoxNiAyMDExICswMDAwCi0KLSAgICBSZWNvZ25pc2UgQWdlbnQgT0lEIGZvciBEcmFnb25GbHkgc3lzdGVtcyAoYW5kIGdlbmVyYWwgdGlkeWluZyB1cCkKLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICBRbjogU2hvdWxkIHRoZXNlIGJlIHVwZGF0ZWQgdG8gcmVmZXIgdG8gTmV0LVNOTVAgKHJhdGhlciB0aGFuIFVDRCk/Ci0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODUyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYjJmYWViMGVjZDZjMzBhMDNmOWRlMmRhZjM3MzI1OTEwZDJmZDAwZgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDE2OjAxOjIyIDIwMTEgKzAwMDAKLQotICAgIERlZmluZSBBZ2VudCBPSUQgZm9yIERyYWdvbkZseSBzeXN0ZW1zCi0gICAgKGFuZCBnZW5lcmFsIHRpZHlpbmcgdXApCi0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODUxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZGQwMWRlYmE3ZmVkNTg1NDlmMzQ3ODA5MWE3OTQxMTIwNzVmOTI5ZgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDE2OjAxOjIyIDIwMTEgKzAwMDAKLQotICAgIERlZmluZSBBZ2VudCBPSUQgZm9yIERyYWdvbkZseSBzeXN0ZW1zCi0gICAgKGFuZCBnZW5lcmFsIHRpZHlpbmcgdXApCi0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODUxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYTZlNTM5MDhiZTQ4ZThiMGZlYTVhYTM5NjFkZWQzZDcxODRkYzQ2MQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDE2OjAxOjIyIDIwMTEgKzAwMDAKLQotICAgIERlZmluZSBBZ2VudCBPSUQgZm9yIERyYWdvbkZseSBzeXN0ZW1zCi0gICAgKGFuZCBnZW5lcmFsIHRpZHlpbmcgdXApCi0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODUxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMWNiMWMyMGVjYWEyNTRkMTI0NjFhNmEyYzAzNWY1NWE5MDM0YmM5OAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDE1OjI3OjUwIDIwMTEgKzAwMDAKLQotICAgIE5ldEJTRCBEcmFnb25GbHkgc3VwcG9ydCBmb3IgVURQICYgVENQIHRhYmxlcwotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg1MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDI1MzQ5Y2Y4MzljZmNmMWNjN2U4M2VjZGJlY2E1NzYxY2I5MWVhN2EKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxNToyNzo1MCAyMDExICswMDAwCi0KLSAgICBOZXRCU0QgRHJhZ29uRmx5IHN1cHBvcnQgZm9yIFVEUCAmIFRDUCB0YWJsZXMKLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4NTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhOGJlODA0MTJmYjQ3ZWRlNWEyNWI1YTZhYzYwNmYzMjMzYmZhODljCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTQ6NDE6MjYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogTmV0QlNEOiBEcmFnb25GbHkgc3VwcG9ydAotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg0OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGI0NDNjYmQ4NWE2NWUzNTVmZjAxMDFmZTY4MTQyZDQ5YjhjYzRlNTcKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxNDo0MToyNiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBOZXRCU0Q6IERyYWdvbkZseSBzdXBwb3J0Ci0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODQ5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMDkzMmIwNDkxMGVjNjcwMTEyZTIxNmU2NDc4OWNhMmY0YjViMDc2MQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDE0OjM2OjI1IDIwMTEgKzAwMDAKLQotICAgIE5ldEJTRC9EcmFnb25GbHkgJ3N0cnVjdCBpZm5ldCcgcmVxdWlyZXMgS0VSTkVMLCBidXQgbm90IF9LRVJORUwKLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAgICAgKEkgaG9wZSBJJ3ZlIGdvdCB0aGlzIG9uZSByaWdodCEpCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODQ4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYTUyZjhjM2Y4NTYzMTg5YmQwZDFkZmU0OWQwYzgwOWVmMDhkN2RlMgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDE0OjM2OjI1IDIwMTEgKzAwMDAKLQotICAgIE5ldEJTRC9EcmFnb25GbHkgJ3N0cnVjdCBpZm5ldCcgcmVxdWlyZXMgS0VSTkVMLCBidXQgbm90IF9LRVJORUwKLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAgICAgKEkgaG9wZSBJJ3ZlIGdvdCB0aGlzIG9uZSByaWdodCEpCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODQ4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYzc1ODhlODcxYmZhOTE0MjY5ODQwMjE2OTBhZmRhNzZiMjMxZjVmYgotQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTQ6MTQ6MDcgMjAxMSArMDAwMAotCi0gICAgcmV2ZXJ0IFBBVENIIDMwNTM0MzY6IHRjcENvbm5lY3Rpb25UYWJsZV9kYXRhX2FjY2VzcyBpbnZhbGlkIG1lbW9yeSBhY2Nlc3MKLSAgICAKLSAgICAgIHRoZSBidWcgdGhpcyBpcyBmaXhpbmcgd2FzIGludHJvZHVjZWQgaW4gcjE3NzE5LCBhbmQgZml4ZWQgaW4gcjE3ODYxLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg0NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGNhMjcwYjk1NDk1ZDYzN2JjYTlkMjE2NThjMDI5NWQ1ZTBjYmUzYjYKLUF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDE0OjE0OjA3IDIwMTEgKzAwMDAKLQotICAgIHJldmVydCBQQVRDSCAzMDUzNDM2OiB0Y3BDb25uZWN0aW9uVGFibGVfZGF0YV9hY2Nlc3MgaW52YWxpZCBtZW1vcnkgYWNjZXNzCi0gICAgCi0gICAgICB0aGUgYnVnIHRoaXMgaXMgZml4aW5nIHdhcyBpbnRyb2R1Y2VkIGluIHIxNzcxOSwgYW5kIGZpeGVkIGluIHIxNzg2MS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4NDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhZTk5NzA0ZjVjZDliODVlOTNmZTRhOGRkZjE4ZjE3MDBmNzMwNjJmCi1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxMzozNDoyMiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBmcm9tIEJpbGwgRmVubmVyOiBmaXggc2VuZGluZyBvZiBVRFAgcmVzcG9uc2VzIGZyb20gbXVsdGlob21lZCBhZ2VudHMuCi0gICAgCi0gICAgVHJ5IHRvIHNlbmQgdGhlIHJlc3BvbnNlIGFzIGl0IHdhcyBiZWZvcmUgTmV0LVNOTVAgNS42IChhc3N1bWluZyB0aGUgYXBwcm9wcmlhdGUgcmVxdWVzdCB3YXMgdW5pY2FzdCkgYW5kIG9ubHkgaWYgaXQgZmFpbHMgdHJ5IHRvIHNldCBpZl9pbmRleCAodGhlIHJlcXVlc3QgbXVzdCBiZSBicm9hZGNhc3QpLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg0NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGMzZmUyZjcyMDBmYjAwYmUxZjNjMjMyMDUxOTM4ZWE4Nzg0N2MyNTgKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxMzoyMjoxMCAyMDExICswMDAwCi0KLSAgICBSZWFsbHkgaGFuZGxlIHN5c3RlbXMgd2l0aCAnc3RydWN0IHRpbWVzcGVjIGlmbmV0LmlmX2xhc3RjaGFuZ2UnCi0gICAgKG1pc3NpbmcgZWxlbWVudCBmcm9tIFNWTiByZXZpc2lvbiAxOTg0MSkKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4NDUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmNDgzYzliOTlkZTAzNGU5OGE5MTQ4OWYyYzY1Y2ZhZDlhYzg4MzZmCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTM6MjI6MTAgMjAxMSArMDAwMAotCi0gICAgUmVhbGx5IGhhbmRsZSBzeXN0ZW1zIHdpdGggJ3N0cnVjdCB0aW1lc3BlYyBpZm5ldC5pZl9sYXN0Y2hhbmdlJwotICAgIChtaXNzaW5nIGVsZW1lbnQgZnJvbSBTVk4gcmV2aXNpb24gMTk4NDEpCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODQ1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNWIxMGI0YjBjODQ0NGIwNDMyZTFmY2I1YjMzNWQ4ODViMDFmNDg3MwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDEyOjI0OjEyIDIwMTEgKzAwMDAKLQotICAgIEFkZGl0aW9uYWwgaGVhZGVycyB3aGVuIHRlc3RpbmcgZm9yIElQdjYgaGVhZGVycwotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTg0NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDRhZWJiZmY3MDdiZjBjZDRiNTE3MjQ3NDE0M2FhMWIzMDJjMzFiZWYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxMjoyNDoxMiAyMDExICswMDAwCi0KLSAgICBBZGRpdGlvbmFsIGhlYWRlcnMgd2hlbiB0ZXN0aW5nIGZvciBJUHY2IGhlYWRlcnMKLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4NDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjNDBlZDZlZTM5ODQwZjM3MjlmOTNlZTdmM2M3OTJkZGU5MjI1NzBlCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTI6MjQ6MTIgMjAxMSArMDAwMAotCi0gICAgQWRkaXRpb25hbCBoZWFkZXJzIHdoZW4gdGVzdGluZyBmb3IgSVB2NiBoZWFkZXJzCi0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODQ0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgM2Y0M2ZjZWRmYWIwMTNhZGI2MmJiZGM5MTljNTE5ZDAyM2RmOWNmMgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDEyOjE0OjI1IDIwMTEgKzAwMDAKLQotICAgIE1pc3NpbmcgdHlwZSB1bmRlciBkYXJ3aW4KLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4NDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5NmQxMzFmOWE2NmMzMzRhNTdjYTUwNGEwMjY5NTIzYmQwMTZhOTYwCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTI6MTQ6MjUgMjAxMSArMDAwMAotCi0gICAgTWlzc2luZyB0eXBlIHVuZGVyIGRhcndpbgotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg0MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGYwODkwNTJkNjkwMzZlMzI4N2E1ZjQ1MjViMzg4NTVhMGMxYTY2MzEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxMjoxMDo1NiAyMDExICswMDAwCi0KLSAgICBOZXRCU0Qgc3VwcG9ydCBmb3IgRGlzayBJL08gc3RhdHMKLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4NDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzNTU3ZWY3MGYwY2E4NjE3ZDc4N2I0YmZjMWJmN2FkOTFiZTAyMDJmCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTI6MDE6MjcgMjAxMSArMDAwMAotCi0gICAgSGFuZGxlIHN5c3RlbXMgd2l0aCAnc3RydWN0IHRpbWVzcGVjIGlmbmV0LmlmX2xhc3RjaGFuZ2UnIChyYXRoZXIgdGhhbiBzdHJ1Y3QgdGltZXZhbCkKLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4NDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3OWU4YjNmOTU4YTk3N2Q1ZTljZWI5OTQ4MTU0NDY2NTJjMDg5ZmRiCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTI6MDE6MjcgMjAxMSArMDAwMAotCi0gICAgSGFuZGxlIHN5c3RlbXMgd2l0aCAnc3RydWN0IHRpbWVzcGVjIGlmbmV0LmlmX2xhc3RjaGFuZ2UnIChyYXRoZXIgdGhhbiBzdHJ1Y3QgdGltZXZhbCkKLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4NDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1YWEzYTMzNjIxZGY4OWJmMWY1NTY3ZTFjZDlhNjY3N2FlOWYyMGRiCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTE6Mjc6MDYgMjAxMSArMDAwMAotCi0gICAgUHVsbCBpbiBrZXJuZWxfbmV0YnNkIG1vZHVsZSB3aGVuIHJlcXVpcmVkCi0gICAgW0Jhc2VkIG9uIGZpeCBmcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg0MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGIzMjlkYzlmZmM2YTdkMTRjY2IwMjc3Zjc2M2NmZGE3NTBhNTdlY2EKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxMToyNzowNiAyMDExICswMDAwCi0KLSAgICBQdWxsIGluIGtlcm5lbF9uZXRic2QgbW9kdWxlIHdoZW4gcmVxdWlyZWQKLSAgICBbQmFzZWQgb24gZml4IGZyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODQwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgN2I1N2JkYjUxNTQ3MTYxMjM5NmM1ZjcxMWI5ZmUwNGE2OWRhMGQ1MAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDEwOjM2OjA4IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IE5ldEJTRDogUmV0cmlldmUgTUlCLUlJIG5ldHdvcmsgc3RhdGlzdGljcyB2aWEgc3lzY3RsCi0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODM5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgODNiMWNhYjhiOGRjYmNhZWIxYTY4ZDAzY2IwZTBjNGMxOTY5NjU2MAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDEwOjM2OjA4IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IE5ldEJTRDogUmV0cmlldmUgTUlCLUlJIG5ldHdvcmsgc3RhdGlzdGljcyB2aWEgc3lzY3RsCi0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODM5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZDUyMTIxZDdjOTVhNmVmMmFmZTg2YzJiYmM0MzVmNGU0OWM3ZjI4YgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gSmFuIDEwIDE2OjU2OjExIDIwMTEgKzAwMDAKLQotICAgIEFkZCBzdXBwb3J0IGZvciBkYXJ3aW4KLSAgICAoVGhlIHBhdGNoIGZyb20gdGhlIE5ldEJTRCBhcmNoaXZlIGFwcGVhcnMgdG8gYmUgZXNzZW50aWFsbHkgdGhlCi0gICAgc2FtZSBhcyB0aGUgZXF1aXZhbGVudCBjb2RlIGZyb20gdGhlIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZSkKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4MzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlYTA1ZjM5ZDI3MWUzNmU0YTFkMWYwMThlNjVmZDE4OTIwMjE5ZjhjCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBKYW4gMTAgMTY6NTY6MTEgMjAxMSArMDAwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIGRhcndpbgotICAgIChUaGUgcGF0Y2ggZnJvbSB0aGUgTmV0QlNEIGFyY2hpdmUgYXBwZWFycyB0byBiZSBlc3NlbnRpYWxseSB0aGUKLSAgICBzYW1lIGFzIHRoZSBlcXVpdmFsZW50IGNvZGUgZnJvbSB0aGUgT3BlbkJTRCBwYXRjaCBhcmNoaXZlKQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgzNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDJkOTZiZTcwZWI3Y2I0NmUyODk4Yzk1N2VkODc2NzY3MDZhNmQ2ZGYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEphbiAxMCAxNjo1NjoxMSAyMDExICswMDAwCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgZGFyd2luCi0gICAgKFRoZSBwYXRjaCBmcm9tIHRoZSBOZXRCU0QgYXJjaGl2ZSBhcHBlYXJzIHRvIGJlIGVzc2VudGlhbGx5IHRoZQotICAgIHNhbWUgYXMgdGhlIGVxdWl2YWxlbnQgY29kZSBmcm9tIHRoZSBPcGVuQlNEIHBhdGNoIGFyY2hpdmUpCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODM3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMzBmNjgzNmQwNDRjMzNhNTU5NWI2MmQxNmZmYzU5NmYwYWMyYzkwYQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gSmFuIDEwIDE2OjU0OjAyIDIwMTEgKzAwMDAKLQotICAgIEFkZCBzdXBwb3J0IGZvciBkYXJ3aW4KLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4MzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxYTZhZDE5NzA1MDY5ZmM4Y2I0ZjcwYzMwYzk2MmFmMzhkNTQxZDI2Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBKYW4gMTAgMTY6NTQ6MDIgMjAxMSArMDAwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIGRhcndpbgotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgzNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDc0ZDMwYjYzMTQ2N2FjMTc3OGVjNzEyMzFjNTVhM2NjODU4YTVjNmEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEphbiAxMCAxNjo1NDowMiAyMDExICswMDAwCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgZGFyd2luCi0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODM2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYjRmZDAxYWEwNzRlNGI3NDlhOTZmOWNhNDM5Mjg5ZjM4NGNiODBjMwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gSmFuIDEwIDE0OjU1OjU3IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IE5ldEJTRDogVXBkYXRlIG1lbW9yeSBhbmQgQ1BVIHN0YXRpc3RpY3MgaGFuZGxpbmcKLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjZTg1NGQxOTYzNTgyMWFlYTFhOGNmNWY5MDk1ZTE0MDY4ZjNmYjliCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBKYW4gMTAgMTQ6NTU6NTcgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogTmV0QlNEOiBVcGRhdGUgbWVtb3J5IGFuZCBDUFUgc3RhdGlzdGljcyBoYW5kbGluZwotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgzNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDk4YzM5YjY4NzZkZDUzMGM5YWNlNzZhODZlOTE3MjM2MzFmZWE2OWUKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEphbiAxMCAxNDoyMjo0NCAyMDExICswMDAwCi0KLSAgICBGaXggZGl2aWRlLWJ5LXplcm8gZXJyb3IgaW4gQ1BVIHBlcmZvcm1hbmNlIHN0YXRpc3RpY3MKLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiNjFkZGM0ZmM2ZGNiMzMxYzY5MjFjODI1YjkzYjYwYzhiMjU3ZmI0Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBKYW4gMTAgMTQ6MjI6NDQgMjAxMSArMDAwMAotCi0gICAgRml4IGRpdmlkZS1ieS16ZXJvIGVycm9yIGluIENQVSBwZXJmb3JtYW5jZSBzdGF0aXN0aWNzCi0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODM0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOGE0OWNhZGI1ZTJhOGU0ZjFhM2YyMGJmNzJiOWRiNGEwNGZhMzBjOQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gSmFuIDkgMjI6NTQ6NTAgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogT3BlbkJTRDogVXBkYXRlIFNXUnVuIGNvZGUgdG8gdXNlIGt2bV9nZXRwcm9jMgotICAgIFtGcm9tIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyNzE2MTkzMmEzY2NjMjhmYzI2NDI3Yzc2NDA4Yjg2ZjNiNzA4MDAzCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBKYW4gOSAyMTozMDozOCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBidWlsZDogT3BlbkJTRDogRml4IG9yZGVyIG9mIGhlYWRlcnMgd2hlbiBjaGVja2luZyA8bmV0aW5ldC9pbl9wY2IuaD4KLSAgICBbRnJvbSBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODMyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOGQyOWQ0MGRlNGJhNWYyNTdmNmJmNDZlMmIzOWIxMWIyNzgxYzg4NAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gSmFuIDkgMTk6NDQ6NTcgMjAxMSArMDAwMAotCi0gICAgQW1lbmQgaG93IG11bHRpLUNQVSBzdGF0aXN0aWNzIGFyZSByZXRyZWl2ZWQgdXNpbmcgc3lzY3RsIG9uIE9wZW5CU0Qgc3lzdGVtcwotICAgIChpZiB0aGlzIGJsb2NrIHdhcyBhY3RpdmUsIHdoaWNoIGl0IGlzbid0LCBidXQgdGhhdCdzIG5vdCBpbXBvcnRhbnQgcmlnaHQgbm90KQotICAgIFtCYXNlZCBvbiBPcGVuQlNEIHBhdGNoIGFyY2hpdmUsIGFtZW5kZWQgKHByb2JhYmx5IHdyb25nbHkpIGJ5IERUU10KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA0YWZlYzdmODhhYjg0MGM2YjhiYzBiOTZjNmFhNzc3Y2MzM2NiYjNjCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBKYW4gOSAxOTo0NDo1NyAyMDExICswMDAwCi0KLSAgICBBbWVuZCBob3cgbXVsdGktQ1BVIHN0YXRpc3RpY3MgYXJlIHJldHJlaXZlZCB1c2luZyBzeXNjdGwgb24gT3BlbkJTRCBzeXN0ZW1zCi0gICAgKGlmIHRoaXMgYmxvY2sgd2FzIGFjdGl2ZSwgd2hpY2ggaXQgaXNuJ3QsIGJ1dCB0aGF0J3Mgbm90IGltcG9ydGFudCByaWdodCBub3QpCi0gICAgW0Jhc2VkIG9uIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZSwgYW1lbmRlZCAocHJvYmFibHkgd3JvbmdseSkgYnkgRFRTXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgzMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGUzNzdlODkzMDUxOTRlMTlmZmMzOWQ2ZDg4ZDg0ZDIzNmZhY2E1NTkKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIEphbiA5IDE4OjEzOjUwIDIwMTEgKzAwMDAKLQotICAgIHN5c2N0bCB0YWtlcyBhICdzaXplX3QnIHZhcmlhYmxlIGZvciB0aGUgc2l6ZSBwYXJhbWV0ZXIKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4MzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3N2FmODk5YWVkZWI4NTQxMTIzZmY4ODljMmY5ZjQ1MjY1ZDhkYmFlCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBKYW4gOSAxODoxMzo1MCAyMDExICswMDAwCi0KLSAgICBzeXNjdGwgdGFrZXMgYSAnc2l6ZV90JyB2YXJpYWJsZSBmb3IgdGhlIHNpemUgcGFyYW1ldGVyCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODMwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZDIwOTA2Y2I2ODVkYTI5ZGNlYTcxYjg5M2QyNzIxMTQyMTg2YmQ2ZgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gSmFuIDkgMTg6MTM6NTAgMjAxMSArMDAwMAotCi0gICAgc3lzY3RsIHRha2VzIGEgJ3NpemVfdCcgdmFyaWFibGUgZm9yIHRoZSBzaXplIHBhcmFtZXRlcgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgzMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDkwYzE0MGNlODkzZThhNmMyZmQ5N2NkMzM5NjU0YTM2YzM2ZTY4MmEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIEphbiA5IDE4OjExOjAxIDIwMTEgKzAwMDAKLQotICAgIHN5c2N0bCB0YWtlcyBhICdzaXplX3QnIHZhcmlhYmxlIGZvciB0aGUgc2l6ZSBwYXJhbWV0ZXIKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MjkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyOTRhMmRhOTU2NzlkNjY4MjJmZjM5ZDQ2OTZjZTZmNDAzNWRmZGUzCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBKYW4gOSAxODoxMTowMSAyMDExICswMDAwCi0KLSAgICBzeXNjdGwgdGFrZXMgYSAnc2l6ZV90JyB2YXJpYWJsZSBmb3IgdGhlIHNpemUgcGFyYW1ldGVyCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODI5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMGU1OWMxNGM1Y2YyZjg3ZjUzYWZiOThiMzcwNWJlZGUxNDgyMzYxOAotQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBKYW4gOCAwMDo0NzoyMiAyMDExICswMDAwCi0KLSAgICBVcGRhdGUgYWNjb25maWcuaCB3aXRoIGNoYW5nZXMgZnJvbSByMTk4MTkuCi0gICAgUmVydW4gYXV0b2hlYWRlci4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4MjcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzOWI5YTBhYmNiYmEwY2FmZWE1YTYzMjRlMWM1NzZlNjU4OGExY2Q1Ci1BdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IEphbiA4IDAwOjQ3OjIyIDIwMTEgKzAwMDAKLQotICAgIFVwZGF0ZSBhY2NvbmZpZy5oIHdpdGggY2hhbmdlcyBmcm9tIHIxOTgxOS4KLSAgICBSZXJ1biBhdXRvaGVhZGVyLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgyNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGM2NGEwNjI5ZDNkMzI2M2Q4NmFjNTFlYTE5ODY3MmRkMzA3ZGQ0ZjUKLUF1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgSmFuIDggMDA6NDc6MjIgMjAxMSArMDAwMAotCi0gICAgVXBkYXRlIGFjY29uZmlnLmggd2l0aCBjaGFuZ2VzIGZyb20gcjE5ODE5LgotICAgIFJlcnVuIGF1dG9oZWFkZXIuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODI3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMGM4OTcwZWMyM2MxMDY0YTgxY2ZjNWMzNjJlM2IzNDhhZmIwMjA3MAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMjA6NTY6MjYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogT3BlbkJTRDogU3VwcG9ydCB1cGRhdGluZyB0aGUgcm91dGluZyB0YWJsZQotICAgIFtGcm9tIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4MjYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA4MzRjYzEyOGFmN2ZkNTQyMmE5ZWRhNzNhYTQ4OTg3Nzc0ZjI0MzVkCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAyMDo1NjoyNiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBPcGVuQlNEOiBTdXBwb3J0IHVwZGF0aW5nIHRoZSByb3V0aW5nIHRhYmxlCi0gICAgW0Zyb20gT3BlbkJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgyNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDExNDM3NTRhNGMxODUzY2JjODJlOWMwMjZiZTJkMmM4ZmFlYmJkODgKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDIwOjU2OjI2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IE9wZW5CU0Q6IFN1cHBvcnQgdXBkYXRpbmcgdGhlIHJvdXRpbmcgdGFibGUKLSAgICBbRnJvbSBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODI2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYjJkOGYxMDI2NjZlMjI2ZmYxODZkMWE1M2UwZjU5OGJiNGEzYzg0YwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMjA6Mjk6MzkgMjAxMSArMDAwMAotCi0gICAgU2V0ICduZXh0JyBmaWVsZCBmb3IgdWRwIGVudHJ5IGxpbmtlZCBsaXN0IG9uIE9wZW5CU0Q0Ci0gICAgW0Zyb20gT3BlbkJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIHNldCBpbiA8bmV0LXNubXAvc3lzdGVtL29wZW5ic2QuaD4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4MjUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxYjVjOWMwMDMwZjdhODMwOWZlODg2MDQ0YWRkMTZhMjQ0NjI4YjRlCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAyMDoyOTozOSAyMDExICswMDAwCi0KLSAgICBTZXQgJ25leHQnIGZpZWxkIGZvciB1ZHAgZW50cnkgbGlua2VkIGxpc3Qgb24gT3BlbkJTRDQKLSAgICBbRnJvbSBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgc2V0IGluIDxuZXQtc25tcC9zeXN0ZW0vb3BlbmJzZC5oPgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgyNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDFlMmM2NjQxNzIwZTBiZDQ5NjAzNGE0ZjI1NDNhOTg0YWU1YTUwNDEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDIwOjI5OjM5IDIwMTEgKzAwMDAKLQotICAgIFNldCAnbmV4dCcgZmllbGQgZm9yIHVkcCBlbnRyeSBsaW5rZWQgbGlzdCBvbiBPcGVuQlNENAotICAgIFtGcm9tIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBzZXQgaW4gPG5ldC1zbm1wL3N5c3RlbS9vcGVuYnNkLmg+Ci0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODI1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZWVjYjY5ZjI2YTQ0ZmQ3ZTdjOGYzZWY5NjgyNTQ2ZDYzODBkYjUxOQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMjA6MTI6MjUgMjAxMSArMDAwMAotCi0gICAgVXNlIGEgc3VpdGFibGUgY29uc3RhbnQgZm9yIENXRCBidWZmZXIgc2l6ZQotICAgIFtCYXNlZCBvbiBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODI0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZWNlMDMzMzU1ZjdkNjlhOWRlZjRiOGQyMzA3YmQ1ZGIzMzA4YTI4ZQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMjA6MTI6MjUgMjAxMSArMDAwMAotCi0gICAgVXNlIGEgc3VpdGFibGUgY29uc3RhbnQgZm9yIENXRCBidWZmZXIgc2l6ZQotICAgIFtCYXNlZCBvbiBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODI0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMTQzMzM2MGMwYzNhYjAzZGRmZDE0OTYxNzk2YjFmZDljZDBjZTFiOQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMjA6MTI6MjUgMjAxMSArMDAwMAotCi0gICAgVXNlIGEgc3VpdGFibGUgY29uc3RhbnQgZm9yIENXRCBidWZmZXIgc2l6ZQotICAgIFtCYXNlZCBvbiBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODI0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZDgyOWVkNjUyNTVjZGM2MjBiYzI2MzhlNjhhYjJmN2VmZTU5MzcwNQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMjA6MDc6MTcgMjAxMSArMDAwMAotCi0gICAgTW92ZSBnbG9iYWwgdmFyaWFibGUgaW50byB0aGUgbWV0aG9kIHdoZXJlIGl0J3MgdXNlZC4KLSAgICBbRnJvbSBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODIzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOGEyMzhiNTk4MzU4OWNiYTQ3NGQ4NzU1NzFkZGUyYTUxYThmODI3MwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMjA6MDc6MTcgMjAxMSArMDAwMAotCi0gICAgTW92ZSBnbG9iYWwgdmFyaWFibGUgaW50byB0aGUgbWV0aG9kIHdoZXJlIGl0J3MgdXNlZC4KLSAgICBbRnJvbSBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODIzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOTgzZTVmMmI3ZWE4ZDFiODI2M2M3MGUyZDRiZmJhMmI1NmI5YTVjMAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMjA6MDc6MTcgMjAxMSArMDAwMAotCi0gICAgTW92ZSBnbG9iYWwgdmFyaWFibGUgaW50byB0aGUgbWV0aG9kIHdoZXJlIGl0J3MgdXNlZC4KLSAgICBbRnJvbSBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODIzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMjU0NmVjMmQ0NzRjZGU1NGU4NTNmNDBlZjY4OWJmNDZjNTJlNDdkNAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTY6NDg6NTYgMjAxMSArMDAwMAotCi0gICAgSGFuZGxlIHN5c3RlbXMgd2l0aG91dCBJRk1fVE9LRU4KLSAgICBbRnJvbSBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODIyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNzkxMzIzNjE3NmEwMDEyNDZiMGE3YmQ0MjQ5MDUyMTAyY2VlNzBkYgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTY6NDg6NTYgMjAxMSArMDAwMAotCi0gICAgSGFuZGxlIHN5c3RlbXMgd2l0aG91dCBJRk1fVE9LRU4KLSAgICBbRnJvbSBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODIyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOGU0YmY0YjUzYTEzZGM5N2RmMThkZGQ4MThkMDJhNDNhODBiY2ZhNgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTQ6Mzg6MzcgMjAxMSArMDAwMAotCi0gICAgVXBkYXRlIHJldHJpZXZhbCBvZiBjYWNoZSB1c2FnZSBzdGF0aXN0aWNzIG9uIEZyZWVCU0QKLSAgICBbRnJvbSBGcmVlQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODIxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMzgyODE3NzcxMTVmMjdlMDUwYTY2MzNkM2RkNTgxYTkwYWU3YzZlMwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTQ6Mzg6MzcgMjAxMSArMDAwMAotCi0gICAgVXBkYXRlIHJldHJpZXZhbCBvZiBjYWNoZSB1c2FnZSBzdGF0aXN0aWNzIG9uIEZyZWVCU0QKLSAgICBbRnJvbSBGcmVlQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODIxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMmRiZGM1Y2I2NzYxNTAxYTZiOWUxMmVjOTJkNzc4NDljNTQ3MGQ3MAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTQ6MjA6MzAgMjAxMSArMDAwMAotCi0gICAgSW5jcmVhc2UgbWF4aW11bSBzaXplIG9mIGV4ZWN1dGUgb3V0cHV0IGNhY2hlCi0gICAgW0Zyb20gRnJlZUJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTgxOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDU0OWE3N2Y3MjIwMGQ0NDcwNzM1OWE4ZTQ5ZmY4YzViZDUzYTNmMzAKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDE0OjIwOjMwIDIwMTEgKzAwMDAKLQotICAgIEluY3JlYXNlIG1heGltdW0gc2l6ZSBvZiBleGVjdXRlIG91dHB1dCBjYWNoZQotICAgIFtGcm9tIEZyZWVCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiNTQwZDNjOTk3MTA0NTg5MGJkZGQzZGU1MGY0MGYxNDY4ZjFiMDNjCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxNDoyMDozMCAyMDExICswMDAwCi0KLSAgICBJbmNyZWFzZSBtYXhpbXVtIHNpemUgb2YgZXhlY3V0ZSBvdXRwdXQgY2FjaGUKLSAgICBbRnJvbSBGcmVlQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODE5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgY2M0NTlmNjlmYmE2OGI2MzMyYjlhZDI3YjRiYzgxYTNkZjEzYmMxYQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTQ6MDk6MTUgMjAxMSArMDAwMAotCi0gICAgUmVtb3ZlIGR1cGxpY2F0ZSBpbmNsdWRlIGRpcmVjdGl2ZXMKLSAgICBbRnJvbSBGcmVlQlNEIHBhdGNoZXMgYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3ZjcxNTE2MzJkZWE1YWQ4OTQ1MzBlZTU4NDc2NTY0MjQxZDk1ODA3Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxNDowOToxNSAyMDExICswMDAwCi0KLSAgICBSZW1vdmUgZHVwbGljYXRlIGluY2x1ZGUgZGlyZWN0aXZlcwotICAgIFtGcm9tIEZyZWVCU0QgcGF0Y2hlcyBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgxNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGY4ZDZiNDZjMmMzMmE3MjIxNzE2ZWY1MzNiZmFhZWQ4OTU5MDM4NGUKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDEzOjQ3OjIzIDIwMTEgKzAwMDAKLQotICAgIEhhbmRsZSBzeXN0ZW1zIHdoZXJlIFJURl9MTElORk8gaXMgbm90IGRlZmluZWQKLSAgICBbRnJvbSBGcmVlQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODE2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYmE4MWIxZGZiNDg4ZTU2MDJhZjEzMWE5MjM5YTlhYjhkM2QzNWUxZQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTM6NDc6MjMgMjAxMSArMDAwMAotCi0gICAgSGFuZGxlIHN5c3RlbXMgd2hlcmUgUlRGX0xMSU5GTyBpcyBub3QgZGVmaW5lZAotICAgIFtGcm9tIEZyZWVCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyZmY0NmZlNjk3ZDljM2FmOTEwNjUxNWM0MWI3ZTZhOTgxMjZhYTA5Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxMzo0NzoyMyAyMDExICswMDAwCi0KLSAgICBIYW5kbGUgc3lzdGVtcyB3aGVyZSBSVEZfTExJTkZPIGlzIG5vdCBkZWZpbmVkCi0gICAgW0Zyb20gRnJlZUJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgxNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGYwMjMxMmFhZWJmZjU1ZjA0MDQ3NmExYzcxMDNlOTkxYTExYzZhYTIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDEzOjQwOjQwIDIwMTEgKzAwMDAKLQotICAgIEluY2x1ZGUgemZzIG1vdW50IHBvaW50cyBmb3IgZGlzayByZXBvcnRzIHVuZGVyIEZyZWVCU0QKLSAgICBbRnJvbSBGcmVlQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODE1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgODNiZjQ0NGYwNzZlZDJiOTIxMjIzOTU5NTg2YTRlZTM4MzU5NTYyMwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTM6NDA6NDAgMjAxMSArMDAwMAotCi0gICAgSW5jbHVkZSB6ZnMgbW91bnQgcG9pbnRzIGZvciBkaXNrIHJlcG9ydHMgdW5kZXIgRnJlZUJTRAotICAgIFtGcm9tIEZyZWVCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiZDZjZGNhMjZmOTQ2OTYxMTMwMzM1NmJiZGFlZGQ4MjM3ZDNkMWJhCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxMzo0MDo0MCAyMDExICswMDAwCi0KLSAgICBJbmNsdWRlIHpmcyBtb3VudCBwb2ludHMgZm9yIGRpc2sgcmVwb3J0cyB1bmRlciBGcmVlQlNECi0gICAgW0Zyb20gRnJlZUJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgxNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGUyZDc3MWI3MjdlNjBhZjEwNDVhZjI4NzFhOGY0YTllMDEwN2NjYjUKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDEzOjM0OjUzIDIwMTEgKzAwMDAKLQotICAgIFByb3RlY3QgYWdhaW5zdCBtdWx0aXBsZS1pbmNsdXNpb24KLSAgICBbRnJvbSBGcmVlQlNEIHBhdGNoZXMgYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4MTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA2NWMwZjM5YmVjYTRiMjMyMTFjZDIxN2FkZTdjYTE5NmQ0ZWU5ZWZjCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxMzozNDo1MyAyMDExICswMDAwCi0KLSAgICBQcm90ZWN0IGFnYWluc3QgbXVsdGlwbGUtaW5jbHVzaW9uCi0gICAgW0Zyb20gRnJlZUJTRCBwYXRjaGVzIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOTBhZmNkYWFkOTA4NDQwYWQ4YTAwZGJmN2I3MTEzMmUzZTYzMWU4ZQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTM6MzQ6NTMgMjAxMSArMDAwMAotCi0gICAgUHJvdGVjdCBhZ2FpbnN0IG11bHRpcGxlLWluY2x1c2lvbgotICAgIFtGcm9tIEZyZWVCU0QgcGF0Y2hlcyBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgxNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDM0OWZhY2Q1YWM1NTU2YjlmOWViNmIyZmJiYTljMGVkOGZkYTE2ZTIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDEzOjI0OjMxIDIwMTEgKzAwMDAKLQotICAgIEluY2x1ZGUgPHVuaXN0ZC5oPgotICAgIFtGcm9tIEJTRCBwYXRjaGVzIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNTQ1MTA2N2RmZmEwMWY5OTFlYjJmOTFiYmQ1ZWQ1YjY1NTk4OWExYwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTM6MjQ6MzEgMjAxMSArMDAwMAotCi0gICAgSW5jbHVkZSA8dW5pc3RkLmg+Ci0gICAgW0Zyb20gQlNEIHBhdGNoZXMgYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhOGY0OTJhOWZiZWI0ZjEzMzU3ZTdhNzU5MTA3ZGZmY2M1ZTljNDkxCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxMzoyNDozMSAyMDExICswMDAwCi0KLSAgICBJbmNsdWRlIDx1bmlzdGQuaD4KLSAgICBbRnJvbSBCU0QgcGF0Y2hlcyBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgxMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDY0NTBhOTg0NTE5YjhiYzg3NzI3ZWM3Y2YwOGNlNWI3YzEwZTNjNTAKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDEzOjIxOjQ4IDIwMTEgKzAwMDAKLQotICAgIEF2b2lkIGNhbGxiYWNrIHJlLXVzZSBvZiBjbG9zZWQgc2Vzc2lvbnMuCi0gICAgKFBhcnQgb2YgcGF0Y2ggIzI5NzUyNTQgLSBzZWUgU1ZOIHJldmlzaW9uIDE5ODA4KQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTgxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGZmNDc3NzUxZGRjODZjN2E4ZWY1ODgyZDM4ZDQyZTNhOGRiMTk5YjEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDEzOjIxOjQ4IDIwMTEgKzAwMDAKLQotICAgIEF2b2lkIGNhbGxiYWNrIHJlLXVzZSBvZiBjbG9zZWQgc2Vzc2lvbnMuCi0gICAgKFBhcnQgb2YgcGF0Y2ggIzI5NzUyNTQgLSBzZWUgU1ZOIHJldmlzaW9uIDE5ODA4KQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGNmNjFhMzEyNjM4NzE2YjA5N2U1ODNiZTA5ZmE1MjE3NjNlNDViZWUKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDEzOjIxOjQ4IDIwMTEgKzAwMDAKLQotICAgIEF2b2lkIGNhbGxiYWNrIHJlLXVzZSBvZiBjbG9zZWQgc2Vzc2lvbnMuCi0gICAgKFBhcnQgb2YgcGF0Y2ggIzI5NzUyNTQgLSBzZWUgU1ZOIHJldmlzaW9uIDE5ODA4KQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDljNTQxN2QxNWI0Y2VkY2E5NTQ4M2I0NGE5ZGNmMWIzODEyY2NiNjkKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDEyOjU1OjMxIDIwMTEgKzAwMDAKLQotICAgIEZyZWVCU0QgdXNlcyBhIHNsaWdodGx5IGRpZmZlcmVudCBuYW1pbmcgc2NoZW1lIGZvciBzdHJ1Y3QgaWZyZXEKLSAgICBbRnJvbSBGcmVlQlNEIHBhdGNoZXMgYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4MTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzOGIyOTFiMDk2YTVkMWRkZjZkODAzYTQzMzY0NzVkM2I3YWQ5MjM2Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxMjo1NTozMSAyMDExICswMDAwCi0KLSAgICBGcmVlQlNEIHVzZXMgYSBzbGlnaHRseSBkaWZmZXJlbnQgbmFtaW5nIHNjaGVtZSBmb3Igc3RydWN0IGlmcmVxCi0gICAgW0Zyb20gRnJlZUJTRCBwYXRjaGVzIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNjg1YTdkZDlkNWVlYzk5OGFhN2M1ZWEwNTBjNjk4N2FmNDIyMGYwYgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTI6NTU6MzEgMjAxMSArMDAwMAotCi0gICAgRnJlZUJTRCB1c2VzIGEgc2xpZ2h0bHkgZGlmZmVyZW50IG5hbWluZyBzY2hlbWUgZm9yIHN0cnVjdCBpZnJlcQotICAgIFtGcm9tIEZyZWVCU0QgcGF0Y2hlcyBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGIwZWIxNWEyM2Q5Yzg3YjhhNDExMTRlMzZmODRiYmFhZGE2YTEyY2UKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDEyOjIyOjAzIDIwMTEgKzAwMDAKLQotICAgIEVuc3VyZSBUQ1AgdGFibGUgaW5mb3JtYXRpb24gaXMgbG9hZGVkIGJlZm9yZSBjb3VudGluZyBjb25uZWN0aW9ucwotICAgIFtGcm9tIEZyZWVCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4MTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmNTEyZjgwZDdmZGQ3NmRkMDkyZTcwZWE4ZmMxNzAzYjAxOWU2MmMzCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxMjoyMjowMyAyMDExICswMDAwCi0KLSAgICBFbnN1cmUgVENQIHRhYmxlIGluZm9ybWF0aW9uIGlzIGxvYWRlZCBiZWZvcmUgY291bnRpbmcgY29ubmVjdGlvbnMKLSAgICBbRnJvbSBGcmVlQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODEwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZTVhMjE5MzdiY2ViMTdhNjEwY2I2MzhlNWY1ZmJkMWJiN2I3M2M0MgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTI6MjI6MDMgMjAxMSArMDAwMAotCi0gICAgRW5zdXJlIFRDUCB0YWJsZSBpbmZvcm1hdGlvbiBpcyBsb2FkZWQgYmVmb3JlIGNvdW50aW5nIGNvbm5lY3Rpb25zCi0gICAgW0Zyb20gRnJlZUJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgxMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDRmN2M1MmI1OGMyYjc5NTc4YTA3N2FkZmRiNjNlMjg3MmExMGVlMTEKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gNiAxOTozNTowNiAyMDExICswMDAwCi0KLSAgICBGaXggZG9jdW1lbnRhdGlvbiBidWcgcG9pbnRlZCBvdXQgaW4gY3BhbiBidWcgIzUyNjE4Ci0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODA5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZTNhNTlhZTU2NjliNDYxZTBiMTA3ZTdjMmU5ZmVjMjQxMGVmNzNhYwotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiA2IDE5OjM1OjA2IDIwMTEgKzAwMDAKLQotICAgIEZpeCBkb2N1bWVudGF0aW9uIGJ1ZyBwb2ludGVkIG91dCBpbiBjcGFuIGJ1ZyAjNTI2MTgKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MDkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjZmM5MmVjODQ1MDZiYzE2OTllZGVkNTU4ZjAzNWE5NDAwNWExYmM5Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDYgMTk6MzU6MDYgMjAxMSArMDAwMAotCi0gICAgRml4IGRvY3VtZW50YXRpb24gYnVnIHBvaW50ZWQgb3V0IGluIGNwYW4gYnVnICM1MjYxOAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgwOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDcwZWE5YmI2MTAxMmE3NWJiNmE2MmE4Yzk1Yzg2MWM0ZDdhNmQwM2YKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiA2IDE0OjExOjIyIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAyOTc1MjU0OiBBdm9pZCBjYWxsYmFjayByZS11c2Ugb2YgY2xvc2VkIHNlc3Npb25zCi0gICAgCi0gICAgUW46IFNob3VsZCB0aGlzIGFsc28gYmUgYXBwbGllZCB3aGVuIG1haW4gc2Vzc2lvbiBpcyBOVUxMPwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTgwOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDNjNTA3NTQzMTk2NjRkZGE4ODlmNmJmYjIxNjc5MmRiYzMwMDViNzYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiA2IDE0OjExOjIyIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAyOTc1MjU0OiBBdm9pZCBjYWxsYmFjayByZS11c2Ugb2YgY2xvc2VkIHNlc3Npb25zCi0gICAgCi0gICAgUW46IFNob3VsZCB0aGlzIGFsc28gYmUgYXBwbGllZCB3aGVuIG1haW4gc2Vzc2lvbiBpcyBOVUxMPwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgwOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGZiYmUyYzc1ODY4MTEwY2JiM2FhYWVmODA5ZmRkNTczMjI2ODQ5NTQKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiA2IDE0OjExOjIyIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAyOTc1MjU0OiBBdm9pZCBjYWxsYmFjayByZS11c2Ugb2YgY2xvc2VkIHNlc3Npb25zCi0gICAgCi0gICAgUW46IFNob3VsZCB0aGlzIGFsc28gYmUgYXBwbGllZCB3aGVuIG1haW4gc2Vzc2lvbiBpcyBOVUxMPwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgwOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDk3YjBlOTE1ZGFiYmFlNGU5Yjg3OGQ5YTNjMGUwMTc2MWY0ZWQ5YjYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiA2IDEzOjIxOjM5IDIwMTEgKzAwMDAKLQotICAgIEZpeCBtaXNsZWFkaW5nIGluZGVudGF0aW9uCi0gICAgCi0gICAgUW46IFNob3VsZCB0aGlzIGNhbGwgJ3N1YmFnZW50X3N0YXJ0dXAnIHJhdGhlciB0aGFuICdhZ2VudHhfcmVvcGVuX3Nlc3Npb24nPwotICAgIFFuOiBXaHkgZG9lc24ndCB0aGlzIGF0dGVtcHQgdG8gcmUtb3BlbiB0aGUgc2Vzc2lvbiBpZiBpdCB3YXMgb3JpZ2luYWxseSBOVUxMPwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTgwNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGI3ZGNmODdmYzVlOWVkNGZjNzhhM2RkYTBjNGYxNzI1NTczYjA0MzgKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiA2IDEzOjIxOjM5IDIwMTEgKzAwMDAKLQotICAgIEZpeCBtaXNsZWFkaW5nIGluZGVudGF0aW9uCi0gICAgCi0gICAgUW46IFNob3VsZCB0aGlzIGNhbGwgJ3N1YmFnZW50X3N0YXJ0dXAnIHJhdGhlciB0aGFuICdhZ2VudHhfcmVvcGVuX3Nlc3Npb24nPwotICAgIFFuOiBXaHkgZG9lc24ndCB0aGlzIGF0dGVtcHQgdG8gcmUtb3BlbiB0aGUgc2Vzc2lvbiBpZiBpdCB3YXMgb3JpZ2luYWxseSBOVUxMPwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgwNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGVjY2ViNTFkZmFmMjMwYzg5Y2RiMmNiMmQxMDQzOWUyZTBlMjQxYTYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiA2IDEzOjIxOjM5IDIwMTEgKzAwMDAKLQotICAgIEZpeCBtaXNsZWFkaW5nIGluZGVudGF0aW9uCi0gICAgCi0gICAgUW46IFNob3VsZCB0aGlzIGNhbGwgJ3N1YmFnZW50X3N0YXJ0dXAnIHJhdGhlciB0aGFuICdhZ2VudHhfcmVvcGVuX3Nlc3Npb24nPwotICAgIFFuOiBXaHkgZG9lc24ndCB0aGlzIGF0dGVtcHQgdG8gcmUtb3BlbiB0aGUgc2Vzc2lvbiBpZiBpdCB3YXMgb3JpZ2luYWxseSBOVUxMPwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgwNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGU1NTA5OThjNDIxMWRhZmYzOTRhMmY3NzI1NzVmOWU0NjlkMTg1NGEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiA2IDEyOjQ2OjE5IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAyOTQxODExOiBIYW5kbGUgc3VjY2Vzc2Z1bCByZXF1ZXN0cyB3aXRoIHJlcUlEIDAKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4MDYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA4NmZmNTM1ZTI3NjZiNWY1YWIyMzdlNzAwMmE3ZWMwNzg0ZTlmODA2Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gNiAxMjo0NjoxOSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMjk0MTgxMTogSGFuZGxlIHN1Y2Nlc3NmdWwgcmVxdWVzdHMgd2l0aCByZXFJRCAwCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODA2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYjQyMGUxYjY5YmYyMzEzYjZjZTc1Y2RlZTIwZDYyMjU4NjBhNGNiMQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDYgMTI6NDY6MTkgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDI5NDE4MTE6IEhhbmRsZSBzdWNjZXNzZnVsIHJlcXVlc3RzIHdpdGggcmVxSUQgMAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgwNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDQ4NTI1YTBlZjUzYTg1ZDFmMDI5NDIwNWQ0MWM5ZDkxNzlhMDA3ZGYKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gNiAwOTozODo1MCAyMDExICswMDAwCi0KLSAgICBTcGVsbGluZyBmaXg6IEluaXRpYWx6aWVzIC0+IEluaXRpYWxpemVzLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgwNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGFkZGEzNmRhNzc2NDg2ZDA3MmM0ZGNmOWVhYThlNTdkNzgzODRiYzIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEphbiA1IDE2OjMxOjUwIDIwMTEgKzAwMDAKLQotICAgIFVzZSB0aGUgYXBwcm9wcmlhdGUgQVBJIGNhbGwgZm9yIHJlcG9ydGluZyBjb25maWcgZXJyb3JzLgotICAgICgiRG9uJ3QgYmUgc28gaW1wYXRpZW50LCBEYXZlLi4uLiIpCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODAyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNmZmOGYyMmZkN2I1N2NmMDk0NWQwZjE1YjA0MzNhNDc2YTY3ZDliZAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSmFuIDUgMTY6MzE6NTAgMjAxMSArMDAwMAotCi0gICAgVXNlIHRoZSBhcHByb3ByaWF0ZSBBUEkgY2FsbCBmb3IgcmVwb3J0aW5nIGNvbmZpZyBlcnJvcnMuCi0gICAgKCJEb24ndCBiZSBzbyBpbXBhdGllbnQsIERhdmUuLi4uIikKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjMTJhYjVlZGJkODc2NWQ2MzNmMzI4ZmY0NjhmYzFlOGRjZjZlMmEwCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKYW4gNSAxNDowNjo1MiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUdTOiAzMTM0MzIzOiBGaXggY3Jhc2ggd2hlbiBjb21wYXJpbmcgaW52YWxpZCBPSURzCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODAxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYzkyZjI4NjA0ZDEzYmFmMmFiMGE2YjNkNzEwMDczMGQzMzk0OWYwZgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSmFuIDUgMTQ6MDY6NTIgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogQlVHUzogMzEzNDMyMzogRml4IGNyYXNoIHdoZW4gY29tcGFyaW5nIGludmFsaWQgT0lEcwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTgwMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDlhYjE1ZmM2ZTQyNmU1ZTA4YTMzNzRlYzNkYTdiZTQyODI3YmRjNTIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEphbiA1IDE0OjA2OjUyIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IEJVR1M6IDMxMzQzMjM6IEZpeCBjcmFzaCB3aGVuIGNvbXBhcmluZyBpbnZhbGlkIE9JRHMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwODk4NWI1OTE0NzFiOWI0NzkwOGJmYmI3ZWJjNjNhZDViNzRiMWUyCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKYW4gNSAxNDowNDo1OSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IEJVR1M6IDMxNTEyNTQ6IEZpeCBjcmFzaCB3aXRoIGludmFsaWQgdHJhcGhhbmRsZSBkaXJlY3RpdmUKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MDAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmYmFjOGI3MjZkYmM5YTRkMGY3MzRjNmQ1ZDNiNzc2MmYyN2YyZWRmCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKYW4gNSAxNDowNDo1OSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IEJVR1M6IDMxNTEyNTQ6IEZpeCBjcmFzaCB3aXRoIGludmFsaWQgdHJhcGhhbmRsZSBkaXJlY3RpdmUKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4MDAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyZWYwMmVjMDMzYjkyYTAwMGU4MDFjYzM5NzAyOTgzZGY4N2VmNDEyCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKYW4gNSAxNDowNDo1OSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IEJVR1M6IDMxNTEyNTQ6IEZpeCBjcmFzaCB3aXRoIGludmFsaWQgdHJhcGhhbmRsZSBkaXJlY3RpdmUKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MDAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxYjg2MjhhMmY1YTAwNmU2ZjMyYjEyMGQyMzM0Nzg4ZGY1ODAxMDM4Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDQgMTg6MjQ6NTUgMjAxMSArMDAwMAotCi0gICAgQ29weXJpZ2h0IHVwZGF0ZSBmb3IgMjAxMQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTItcGF0Y2hlc0AxOTc5NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGJjOWJmMDgzOTVmOTg3ZDFkMzlkMTY1MWEyNTg2ZWUwNjcyMjcwODkKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gNCAxODoyNDo1NSAyMDExICswMDAwCi0KLSAgICBDb3B5cmlnaHQgdXBkYXRlIGZvciAyMDExCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5Nzk1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNTc0NTAyYTNjNzFmNWY5NzYwYzIwZTQyYzM4ZDNlOTY3MTZhYTdlYQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiA0IDE4OjI0OjU1IDIwMTEgKzAwMDAKLQotICAgIENvcHlyaWdodCB1cGRhdGUgZm9yIDIwMTEKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk3OTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhN2U2NzU3ZGQ5MjE4ZGRjMGZiNDU5MWViNDk5OTk5OGU5YjBhZmNjCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDQgMTg6MjQ6NTUgMjAxMSArMDAwMAotCi0gICAgQ29weXJpZ2h0IHVwZGF0ZSBmb3IgMjAxMQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTc5NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGRmZmQ2MjFhYjA1ZWUyYWQ0ZjE4OTI1NWFlZmQ0MmJmMmNiNWViNzAKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gNCAxMjoxOToxMyAyMDExICswMDAwCi0KLSAgICBGaXggY29tcGlsZXIgd2FybmluZ3MgdHJpZ2dlcmVkIGJ5IHRoZSBXaW4zMiBNSUItSUkgaW1wbGVtZW50YXRpb24gKGJhY2twb3J0ZWQgcjE5NzkwIGZyb20gdGhlIHRydW5rKS4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk3OTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjNGVjNTQwZjYzYzVlMTg0ZDk0N2I2ZWJhNTExNDgyNTdjNDE2Nzk2Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDQgMTI6MTc6NTEgMjAxMSArMDAwMAotCi0gICAgUmVtb3ZlZCB0d28gdW51c2VkIHZhcmlhYmxlcyBmcm9tIHRoZSBzY3RwLW1pYiBpbXBsZW1lbnRhdGlvbiAoYmFja3BvcnRlZCByMTk3ODAgZnJvbSB0aGUgdHJ1bmspLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTc5MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGUyODY5OTZhNTgxMjQyYmVmZGYwZmNmZTM3ZDllNTAzNTM4ZDIwNGUKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gNCAxMjoxNToyNyAyMDExICswMDAwCi0KLSAgICBGaXhlZCBhIHJlY2VudGx5IGludHJvZHVjZWQgbWlzbWF0Y2ggYmV0d2VlbiBmb3JtYXQgc3BlY2lmaWNhdGlvbiBhbmQgYXJndW1lbnQgbGlzdCBpbiB0aGUgaXAtbWliIGltcGxlbWVudGF0aW9uIChiYWNrcG9ydGVkIHIxOTc3OSBmcm9tIHRoZSB0cnVuaykuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5NzkxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIENIQU5HRVM6IHNubXBkOiBBdm9pZCB0aGF0IHNubXBkIGNyYXNoZXMgaWYgc3RhcnRlZCBvbiBhIHN5c3RlbSB3aXRoIGFub3RoZXIgT3BlblNTTCBsaWJyYXJ5IHZlcnNpb24gdGhhbiB0aGUgb25lIGl0IGhhcyBiZWVuIGJ1aWx0IHdpdGguCiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQ2hhbmdlczogVjUuNiAtPiBWNS42LjEKK0NoYW5nZXM6IFY1LjcucmMzIC0+IFY1LjcuMQogCi0yMDExLTAxLTAzIDIyOjI4ICBoYXJkYWtlcgorMjAxMS0wOS0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiAKLSAgICogTkVXUzoKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWM6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LjEKIAotICAgTkVXUyB1cGRhdGUKIAotMjAxMS0wMS0wMyAyMjoyNiAgaGFyZGFrZXIKKzIwMTEtMDktMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogCi0gICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGU6CisgICAqIENoYW5nZUxvZzogdmVyc2lvbiB1cGRhdGUgZm9yIDUuNy4xLnJjMwogCi0gICBDSEFOR0VTOiBVcGdyYWRlZCBEVExTIHN1cHBvcnQgZnJvbSBhbHBoYSB0byBmdWxsOyBtZW50aW9uIHRoYXQKLSAgIHRzbSBpcyBuZWVkZWQgZm9yIFRMUyB0b28KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotMjAxMS0wMS0wMyAyMjoyNCAgaGFyZGFrZXIKK0NoYW5nZXM6IFY1LjcucmMyIC0+IFY1LjcuMS5yYzMKIAotICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAgIAotICAgICAgZGlzdC9uZXQtc25tcC5zcGVjOgorMjAxMS0wOS0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiAKLSAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAKKyAgICAgIGRpc3QvbmV0LXNubXAuc3BlYzogVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjcuMS5yYzMKIAotMjAxMC0xMi0yOSAwMTo0MSAgaGFyZGFrZXIKKworMjAxMS0wOS0yMiAgRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorCisgICAqIDogY29tbWl0IDA3ZjYxYTAyYTI0MDkwOTZlNWM5NjJjZDIxMTEyNjM5NmFkMDlkMmIgTWVyZ2U6IGVlMGQzYWQKKworIGJkYTMyNGIgQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+IERhdGU6ICAgVGh1CisgU2VwIDIyIDEwOjM5OjU5IDIwMTEgKzAxMDAKKworMjAxMS0wOS0yMiAgRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorCisgICAqIDogY29tbWl0IGM1NWY2MDhmMTZmMTYwZjVlNzlkYzA1N2Y4ODc4ZGVmNDYyOTczZTEgQXV0aG9yOiBEYXZlCisKKyBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPiBEYXRlOiAgIFRodSBTZXAgMjIgMTA6MzU6MjQgMjAxMQorICswMTAwCisKKzIwMTEtMDktMjIgIFN0ZXZlIEZyaWVkbCA8c3RldmVAdW5peHdpei5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza19ody5jOiBDSEFOR0VTOiBzbm1wZDogMzQwOTY5MjoKKworIENhbGN1bGF0ZSBkaXNrIHBlcmNlbnRhZ2UgdXNhZ2UgdmlhIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgdG8KKyBhdm9pZCBpbnRlZ2VyIGFyaXRobWV0aWMgZXJyb3JzLiAgKENvZGUgYmFzZWQgb24gcGF0Y2gsIHJhdGhlciB0aGFuCisgYXBwbGllZCB2ZXJiYXRpbSkKKworMjAxMS0wOS0yMiAgU3RldmUgRnJpZWRsIDxzdGV2ZUB1bml4d2l6Lm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrX2h3LmM6IENIQU5HRVM6IHNubXBkOiAzNDA5NjkyOgorCisgQ2FsY3VsYXRlIGRpc2sgcGVyY2VudGFnZSB1c2FnZSB2aWEgZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpYyB0bworIGF2b2lkIGludGVnZXIgb3ZlcmZsb3cgZXJyb3JzLiAgKENvZGUgYmFzZWQgb24gdGhlIHN1Ym1pdHRlZCBwYXRjaCwKKyByYXRoZXIgdGhhbiBhcHBsaWVkIHZlcmJhdGltKQorCisyMDExLTA5LTIyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBDaGFuZ2VMb2c6IFRoZSBvbmx5IGNoYW5nZSBiZXR3ZWVuIFY1LjcucmMxIGFuZCBWNS43LjEucmMyIGlzIHRoZQorCisgdmVyc2lvbiBudW1iZXIuIE1ha2UgdGhpcyBjbGVhciBpbiB0aGUgQ2hhbmdlTG9nIGZpbGUuCisKKzIwMTEtMDktMjEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIENoYW5nZUxvZzogY2hhbmdlbG9nIHVwZGF0ZQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NoYW5nZXM6IFY1LjcucmMxIC0+IFY1LjcuMS5yYzIKKworMjAxMS0wOS0yMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWM6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LjEucmMyCisKKworMjAxMS0wOS0wNCAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CisKKyAgICogOiBjb21taXQgNGQ2ZGVmZGFlNzJjMzViMTA4MDA3NjE4MDMxM2QyOTEwNTY4NDc1YiBNZXJnZTogZDNhNzU4YworCisgM2I3ZmRjNCBBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPiBEYXRlOiAgIFN1bgorIFNlcCA0IDE0OjQ2OjAyIDIwMTEgKzAyMDAKKworMjAxMS0wOS0wNCAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CisKKyAgICogOiBjb21taXQgYmJlMmMxOWEwMWVjZWMwMjRmNzQxZTJlNTQ3MDFhZTYyMTJmNGMzZSBBdXRob3I6IE1hZ251cworCisgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4gRGF0ZTogICBTdW4gU2VwIDQgMTQ6NDQ6MzggMjAxMQorICswMjAwCisKKzIwMTEtMDktMDQgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorCisgICAqIDogY29tbWl0IGQzYTc1OGNmMzAyNTRiODA3MDZhNDNmMTkxYzE1MjM4YjJjYjczYzkgTWVyZ2U6IGMxMDdjZTAKKworIDIyN2RiZDcgQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4gRGF0ZTogICBTdW4KKyBTZXAgNCAxNDowODozNSAyMDExICswMjAwCisKKzIwMTEtMDktMDQgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorCisgICAqIDogY29tbWl0IDllZmE0NjdhOTcyYmI2ZTFjN2ZiZGFmMmUyNzQyOWQyOWY0YWI4OWUgQXV0aG9yOiBNYWdudXMKKworIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+IERhdGU6ICAgU3VuIFNlcCA0IDE0OjAwOjEyIDIwMTEKKyArMDIwMAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NoYW5nZXM6IFY1LjcucHJlMiAtPiBWNS43LjEucmMxCisKKzIwMTEtMDgtMzAgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9NYWtlZmlsZS5kZXBlbmQsIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZCwgYXBwcy9NYWtlZmlsZS5kZXBlbmQsIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQsIHNubXBsaWIvTWFrZWZpbGUuZGVwZW5kOiBtYWtlCisKKyBkZXBlbmQgZm9yIDUuNy4xLnJjMQorCisyMDExLTA4LTMwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3JlYWRfY29uZmlnLmM6IGZpeCBDKysgY29tbWVudAorCisKKzIwMTEtMDgtMzAgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsIAorICAgICAgZGlzdC9uZXQtc25tcC5zcGVjOiBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNy4xLnJjMQorCisKKzIwMTEtMDgtMzAgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGMxMDdjZTA3ODQwOWQyNjViOWIyMThkNDlmMzgxNWI3OTVkYjFkYzMgTWVyZ2U6IGVhNGIzYjIKKworIDkxNWFhOGQgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUdWUgQXVnIDMwIDE5OjA3OjA3IDIwMTEgLTA3MDAKKworMjAxMS0wOC0zMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgNDIyYjA4MmE5NTkzY2E5YzY1YWFjNDQ5ZTZkMTI4YTllOTdlOTRmYiBBdXRob3I6IFdlcworCisgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBUdWUgQXVnIDMwCisgMTk6MDY6NTYgMjAxMSAtMDcwMAorCisyMDExLTA4LTMwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBlYTRiM2IyM2YzNTA1ODNlNTYyNjMyOGI1MzY3ZTZjNjE3MjU1Zjk1IE1lcmdlOiBiY2YzOGI4CisKKyBiMzRkNWRjIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVHVlIEF1ZyAzMCAxNjozODoyNSAyMDExIC0wNzAwCisKKzIwMTEtMDgtMzAgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDcxYzBkNzY1MDQ5MzcxMDYzMWZhMDhkNWRjNGRhZDUwMWE5YWE3NzEgQXV0aG9yOiBXZXMKKworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgVHVlIEF1ZyAzMAorIDE2OjM3OjQxIDIwMTEgLTA3MDAKKworMjAxMS0wOC0zMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgYjEzZjRkODg4NmI2YTRlNzNiYzA3ZGYyYjkwZDFhNjExNWNmM2RmYyBNZXJnZTogZjdlMjFmMgorCisgNjRlOTc3OCBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFR1ZSBBdWcgMzAgMTE6MDk6MzAgMjAxMSAtMDcwMAorCisyMDExLTA4LTMwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBiNWQyYTQzZjk3YTU5ODU4Yzk0NGViYTIyOTBiNTliOTNjMjMwYTZhIE1lcmdlOiA4NmVmZWUyCisKKyBjZjRjZjdmIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVHVlIEF1ZyAzMCAxMTowOToyOSAyMDExIC0wNzAwCisKKzIwMTEtMDgtMzAgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogTWVyZ2UgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCAnb3JpZ2luL1Y1LTYtcGF0Y2hlcycgaW50bworCisgVjUtNi1wYXRjaGVzCisKKzIwMTEtMDgtMzAgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYXV0by1kZXRlcm1pbmUgcGF0Y2ggYXJndW1lbnRzIGlmCisKKyBwb3NzaWJsZSBmb3IgbnNwYXRjaHRyeQorCisyMDExLTA4LTMwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IG1ha2UgaXQgc28gdGhlIGdpdCBjb21taXQgbGluZSBjYW4KKworIGJlIGN1dC9wYXN0ZSB3aXRob3V0IGxpbmVicmVha3MKKworMjAxMS0wOC0zMCAgUm9uYWxkIFdhaGwgPHJ3YS1jb0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9yZWFkX2NvbmZpZy5jOiBDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzMzk0NTg2OiBmcm9tCisKKyByd2EtY286IGZpbGUgZGVzY3JpcHRvciBsZWFrIGluIHJlYWRfY29uZmlnICgrZml4KSBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0zMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6IGRlc2NyaWJlIHRoYXQgbnNyb2xsdXAgbmVlZHMgdG8gYmUgcnVuIG5vdy4KKworCisyMDExLTA4LTMwICBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CisKKyAgICogOiBjb21taXQgMmI5MmEwYTFlM2EwNjE4YzUxNWViZDkwMjI3MWI5NWMwODkzMWFmYSBNZXJnZTogYTA4NjM0NworCisgODZlZmVlMiBBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4gRGF0ZTogICBUdWUKKyBBdWcgMzAgMTE6Mjg6MTQgMjAxMSArMDEwMAorCisyMDExLTA4LTMwICBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX21udGVudC5jOiBBcHBhcmVudGx5IElSSVggaGFzIGEKKworIGRpZmZlcmVudCBBUEkgZm9yIHN0YXRmcworCisyMDExLTA4LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX3RkYXRhLmM6IGRvbid0IHByb3ZpZGUgYSBmZWF0dXJlIHdoZW4geW91ciBhCisKKyBjaGlsZCBvZiBhbm90aGVyIGZlYXR1cmUKKworMjAxMS0wOC0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBNZXJnZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoICdvcmlnaW4vVjUtNy1wYXRjaGVzJyBpbnRvCisKKyBWNS03LXBhdGNoZXMKKworMjAxMS0wOC0yOCAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CisKKyAgICogYXBwcy9NYWtlZmlsZS5pbjogVXNlIHRoZSBmZWF0dXJlIHRhcmdldCBpbnN0ZWFkIG9mIHRoZSB0YXJnZXQKKworIHdoZW4gYnVpbGRpbmcgdGhlIGZlYXR1cmUgc2V0CisKKzIwMTEtMDgtMjkgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMuaDogdGhlIGlyaXg2IGJ1aWxkIG9ubHkgZGVmaW5lcworCisgaXJpeDYsIG5vdCBpcml4CisKKzIwMTEtMDgtMjkgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19zdHJ1Y3RfbWVtYmVycywgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiByZS1hZGQgc29ja2FkZHJfdW4uc3VuX3BhdGgKKworIGNvbmZpZ3VyZSBjaGVjayAobG9zdCBpbiBwcmV2aW91cyBjb21taXQpCisKKzIwMTEtMDgtMjggIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMuaDogCisKKyBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50ZW50LmMgZG9lc24ndCBidWlsZCBvbiBJUklYIHlldAorCisyMDExLTA4LTI4ICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBhMDg2MzQ3OWQ4MDk2MmM2NTI5NDdkZmRlZTExYmRkMTM2YzBlMDEzIE1lcmdlOiA1MjUwODkzCisKKyBmOTVhYTMxIEF1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgU3VuIEF1ZyAyOCAyMzozNzoyNyAyMDExICswMjAwCisKKzIwMTEtMDgtMjggIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19zdHJ1Y3RfbWVtYmVycywgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCBzbm1wbGliL3NubXBVRFBEb21haW4uYywgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogQ0hBTkdFUzogYnVpbGRpbmc6IGJ1aWxkIGZpeAorCisgZm9yIHN5c3RlbXMgbGFja2luZyBmaWVsZHMgbXNnX2NvbnRyb2wvbXNnX2ZsYWdzIGluIHN0cnVjdCBtc2doZHIKKyAoYmFja3BvcnQpCisKKzIwMTEtMDgtMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pYjJjLWNvbmYuZC9tZmQtaW50ZXJmYWNlLm0yYzogYWRkZWQgcmVxdWlyZWQgZmVhdHVyZXMgZm9yCisKKyBtZmQgaGFuZGxpbmcKKworMjAxMS0wOC0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogLmdpdGlnbm9yZTogYWRkZWQgLmZ0IGFuZCAuZnQuMSBmb3IgZmVhdHVyZSBmaWxlcworCisKKzIwMTEtMDgtMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHBlcmwvYWdlbnQvYWdlbnQueHM6IG5vX3dyaXRlX3N1cHBvcnQgc3VwcG9ydGVkCisKKworMjAxMS0wOC0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmMtY29uZi5kL21mZC1pbnRlcmZhY2UubTJjOiBoYW5kbGUgbm8td3JpdGUtc3VwcG9ydCB3aXRoCisKKyBpZmRlZnMKKworMjAxMS0wOC0yNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgNTI1MDg5MzI3YWJhN2QwMWQ2MzNjNjM0YzZiNmYwNmRlNDJhY2JiOCBNZXJnZTogMWJiMjM0YQorCisgMDRmZDcxYSBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFRodSBBdWcgMjUgMDY6NTc6MjEgMjAxMSAtMDcwMAorCisyMDExLTA4LTI1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBlYThiZWQ3OWU4MWM0MmUzM2NiZjM3Y2E2ZjNjMDNjNTQ5OTg3YjIyIEF1dGhvcjogV2VzCisKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFRodSBBdWcgMjUKKyAwNjo1NjoyMiAyMDExIC0wNzAwCisKKzIwMTEtMDgtMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHB5dGhvbi9uZXRzbm1wL2NsaWVudC5weTogdXNlID4+IHRvIHByaW50IHRvIHN0ZGVycgorCisKKzIwMTEtMDgtMjMgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtcmVtb3ZlOiBDSEFOR0VTOiBidWlsZDogRG8gbm90IGdlbmVyYXRlCisKKyBhbiBvdXRwdXQgZmlsZSBvbiBmYWlsdXJlIG1ha2Ugc3VwcG9zZXMgdGhhdCBubyBvdXRwdXQgaXMgZ2VuZXJhdGVkIGlmIHRoZSBjb21tYW5kIGZhaWxlZC4KKyBDaGFuZ2UgZmVhdHVyZS1yZW1vdmUgdG8gZm9sbG93IHRoYXQgcHJlc3VtcHRpb24uCisKKzIwMTEtMDgtMjEgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtcmVtb3ZlOiBDb3JyZWN0IHR5cG8KKworCisyMDExLTA4LTIzICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCAxYmIyMzRhNmNjMzZlNmE0ZWZiZTNmYjI5YzQ4MDIxMGRjMmI5YzEzIE1lcmdlOiAzNWE5OGMzCisKKyAxZjA4MmEzIEF1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVHVlIEF1ZyAyMyAyMzozODowNyAyMDExICswMjAwCisKKzIwMTEtMDgtMjMgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX3N0cnVjdF9tZW1iZXJzOiBtYWtlIHN1cmUgdGhhdAorCisgX0tFUk5FTCBpcyBkZWZpbmVkIHRvIDEgc28gdGhhdCAiI2lmIF9LRVJORUwiIHdvcmtzIG9uIHN5c3RlbXMgdGhhdAorIG5lZWQgaXQgKGUuZy4gSVJJWCkKKworMjAxMS0wOC0yMyAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgMzVhOThjM2Q3YzVhM2M1ZGYzNTZhZGQ5ZThiODA4Mjg3ODk5YjY5YSBNZXJnZTogMWYzN2Y1NworCisgYTI3Zjc0NCBBdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFR1ZSBBdWcgMjMgMjM6MzA6MjcgMjAxMSArMDIwMAorCisyMDExLTA4LTIzICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCAyNmJiMjQ3MGMxMDZmODM0NDQyYTJhZGJjNzYxMWJmMTY2NTdmYmRmIEF1dGhvcjogVGhvbWFzCisKKyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFR1ZSBBdWcgMjMgMjM6MjI6NDQKKyAyMDExICswMjAwCisKKzIwMTEtMDgtMjIgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogYXV0b3JlY29uZgorCisKKzIwMTEtMDgtMjIgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBjb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmMsIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46IENIQU5HRVM6IGJ1aWxkaW5nOiBidWlsZCBmaXgKKworIGZvciBzeXN0ZW1zIGxhY2tpbmcgZmllbGQgbXNnX2ZsYWdzIGluIHN0cnVjdCBtc2doZHIgKGUuZy4gSVJJWCkKKworMjAxMS0wOC0yMSAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlOiBhdXRvcmVjb25mCisKKworMjAxMS0wOC0yMSAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlOiBhdXRvcmVjb25mCisKKworMjAxMS0wOC0yMSAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlOiBhdXRvcmVjb25mCisKKworMjAxMS0wOC0yMSAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgYjYyY2IwODY0ZjU3N2JhODU1NzNkMGQyNTBkMTJhMzkzODdjMDdiNCBBdXRob3I6IFRob21hcworCisgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBTdW4gQXVnIDIxIDAwOjU1OjMzCisgMjAxMSArMDIwMAorCisyMDExLTA4LTIxICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA3MWI5MGI2ZjIxNzk0NGI0ZmZjMTgzNmU1MTYwZDQwZTMzYjQ0MjNkIEF1dGhvcjogVGhvbWFzCisKKyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFN1biBBdWcgMjEgMDA6NDA6MjgKKyAyMDExICswMjAwCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ2hhbmdlczogVjUuNy5wcmUxIC0+IFY1LjcuMS5wcmUyCisKKzIwMTEtMDgtMTggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9NYWtlZmlsZS5kZXBlbmQsIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZCwgYXBwcy9NYWtlZmlsZS5kZXBlbmQsIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQsIHNubXBsaWIvTWFrZWZpbGUuZGVwZW5kOiBtYWtlCisKKyBkZXBlbmQgZm9yIDUuNy4xLnByZTIKKworMjAxMS0wOC0xOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWM6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LjEucHJlMgorCisKKzIwMTEtMDgtMTggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDAzMDUzNDc5NjA0YmM4M2VmYmVhNTc5YjQ1NjJiMTgzMWNlYTFjYjYgTWVyZ2U6IGY3M2U2MzYKKworIGQ5NGRmMzkgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUaHUgQXVnIDE4IDExOjU3OjQ2IDIwMTEgLTA3MDAKKworMjAxMS0wOC0xOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgMjhiNTQwNzA1MTQ3NTNlOGQ4YWJiNzE4YjIyNGQ2NTdhYjdhOGFiOCBBdXRob3I6IEdhcnJldHQKKworIENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFRodSBBdWcgMTgKKyAxMTo0OTo1NiAyMDExIC0wNzAwCisKKzIwMTEtMDgtMTggIFZsYWRpbWlyIEtvbmRyYXRpZXYgPHd1bGYyMDAxQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrX2h3LmM6IENIQU5HRVM6IGFnZW50OiBQQVRDSCAzMzg5MjI4OgorCisgZnJvbSB3dWxmMjAwMTogaW5jb21wbGV0ZSBjb21taXQgKHBhdGNoIDMzODY2MzM6IGZpeCBpbnRlZ2VyCisgb3ZlcmZsb3cpIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTE4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBtYW4vc25tcC5jb25mLjUuZGVmOiBQYXRjaCBmcm9tIENsYXVzIEtsZWluIG9uIC1jb2RlcnMgZm9yIGZpeGluZworCisgbWFuIHBhZ2UgdHlwb3MKKworMjAxMS0wOC0xOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOiBjaGFuZ2VkIGNsaWVudGFkZHIgc28gaXQgcmVnaXN0ZXJzIGFzIHByZS1taWIKKworIHRvIGJlIHBpY2tlZCB1cCBiZWZvcmUgdGhlIHRyYW5zcG9ydHMgZ2V0IGNyZWF0ZWQKKworMjAxMS0wOC0xNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgYzAyMTMxZTViMzVkMjk2NzU1YmFlYzk5YmQzNjMyMDVhODYzMDdkZCBBdXRob3I6IFdlcworCisgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBXZWQgQXVnIDE3CisgMDk6MzQ6MDAgMjAxMSAtMDcwMAorCisyMDExLTA4LTE3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBzbm1wbGliL3N5c3RlbS5jOiBGaXggdGhlIGxvZyBtZXNzYWdlIHRoYXQgcmVwb3J0cyB0aGF0CisKKyBnZXRob3N0YnlhZGRyKCkgaXMgbWlzc2luZworCisyMDExLTA4LTE3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAxODJlMWRjMGMzZWFjZmE0ZTljY2RiMjg2MDBmZjBmMjM3MDIxMWFlIE1lcmdlOiA0OTliNzk2CisKKyA1MTdiNmIwIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgV2VkIEF1ZworIDE3IDE4OjA5OjMwIDIwMTEgKzAyMDAKKworMjAxMS0wOC0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgNjU4MDU1NmNjN2JkODMzYWY3MzFiNjJjZTFlZDIwMTc1NjRmZTdlYiBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBXZWQgQXVnIDE3IDE4OjA4OjAxIDIwMTEgKzAyMDAKKworMjAxMS0wOC0xNCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgNDk5Yjc5NmNiZDc4MDY1YzMzNTQ3NzkxMzZiZDNkOWQxZjU0OGE1OCBNZXJnZTogMDQxOGZmMAorCisgYTljYjI2NyBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFN1biBBdWcKKyAxNCAwODowMjozOCAyMDExICswMjAwCisKKzIwMTEtMDgtMTQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDNjYjNmMWVkZTM4OGQ4NGUzOTJlMWQ4MTVkNTk5NGE0YmYwZjEwZjkgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgU3VuIEF1ZyAxNCAwNzo1OToyNSAyMDExICswMjAwCisKKzIwMTEtMDgtMTMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHBlcmwvT0lEL09JRC54cywgcGVybC9TTk1QL1NOTVAueHMsIHBlcmwvYWdlbnQvYWdlbnQueHM6IFdpbmRvd3M6CisKKyBNYWtlIHRoZSBQZXJsIGFnZW50IG1vZHVsZSB3b3JrIGFnYWluIHdpdGggdGhlIG9yaWdpbmFsIFNOTVBfRlJFRSgpCisgZGVmaW5pdGlvbi4KKworMjAxMS0wOC0xMyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgMDQxOGZmMGNkYTIxNDExYTQ3ZmE4OTc4YzNlMGQwNDNhMTlkMjRiNiBNZXJnZTogMjZiMGFhMworCisgM2M3M2I0OCBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFNhdCBBdWcKKyAxMyAxODo0MjowNSAyMDExICswMjAwCisKKzIwMTEtMDgtMTMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oOiBSZXZlcnQgdGhlIHR3byBtb3N0IHJlY2VudAorCisgU05NUF9GUkVFKCkgY2hhbmdlcyAoY29tbWl0cworIDQ3YzhlZjFiODljNmNjYjQyNDdkOTYzMzQ3NzkyNTkwOGM2OGMxYTUgYW5kCisgN2Y0MmQwZDkzMzIwNDg0MTUyMjcxNDI3Y2M5ODA4Y2JkYTQ5YmJkMCkuCisKKzIwMTEtMDgtMTMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDI2YjBhYTMwMTBmYTE4MmI2MDM5YThjMmNhZDhjY2I0NTcxNjUyZGUgTWVyZ2U6IDJmM2Q2MDcKKworIDBjOGUxYTkgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBTYXQgQXVnCisgMTMgMTE6NDM6MjAgMjAxMSArMDIwMAorCisyMDExLTA4LTEzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAzZTUwYzNlMDBlOWYzMjFmYjcwOGJjNTc5ZWI0ZGMxYTBmMWU3YzRkIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFNhdCBBdWcgMTMgMTE6MzE6NDAgMjAxMSArMDIwMAorCisyMDExLTA4LTEzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAyZjNkNjA3OWRjMzZhYWQ5NTU5ZDkxYzVjMzI0ZTJjZTUzNTU3M2RkIE1lcmdlOiBlMzJhYTk3CisKKyBmZjE3MzRkIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgU2F0IEF1ZworIDEzIDA5OjA4OjA2IDIwMTEgKzAyMDAKKworMjAxMS0wOC0xMyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgZTE0N2U0Yjk2NzU1MjA3ZGUxY2UzMDk5MGQ2N2I0YjdjNzZkZDQ4MyBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBTYXQgQXVnIDEzIDA4OjM5OjE0IDIwMTEgKzAyMDAKKworMjAxMS0wOC0xMyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogd2luMzIvYnVpbGQucGw6IENIQU5HRVM6IFdpbmRvd3M6IGJ1aWxkaW5nIChidWlsZC5iYXQpOiBJbnN0YWxsCisKKyBuZXRzbm1wLmRsbCBiZWZvcmUgcnVubmluZyB0aGUgUGVybCByZWdyZXNzaW9uIHRlc3RzIHN1Y2ggdGhhdCB0aGUKKyByZWdyZXNzaW9uIHRlc3RzIGFyZSBydW4gd2l0aCB0aGUgY29ycmVjdCB2ZXJzaW9uIG9mIG5ldHNubXAuZGxsLgorCisyMDExLTA4LTEzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB3aW4zMi9NYWtlZmlsZS5pbjogQ0hBTkdFUzogV2luZG93czogcGVybCAoYnVpbGQuYmF0KTogV2hlbgorCisgaW5zdGFsbGluZyBkZXZlbG9wbWVudCBmaWxlcywgaW5zdGFsbCB0aGUgUERCIGZpbGVzIHRvby4KKworMjAxMS0wOC0xMyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogIHBlcmwvU05NUC90L2FzeW5jLnQsIHBlcmwvU05NUC90L2NvbmYudCwgcGVybC9TTk1QL3QvbWliLnQsIAorICAgICAgcGVybC9hZ2VudC90ZXN0LnBsOiBDSEFOR0VTOiB0ZXN0aW5nOiBGaXggUGVybCByZWdyZXNzaW9uIHRlc3QKKworIGZhaWx1cmVzIEFsbCBQZXJsIHJlZ3Jlc3Npb24gdGVzdHMgcGFzcyBub3cgb24gTGludXggYW5kIG9uIFdpbmRvd3MgKE1TVkMpLgorCisyMDExLTA4LTEzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBwZXJsL1NOTVAvdC9hc3luYy50LCBwZXJsL1NOTVAvdC9idWxrd2Fsay50OiBDSEFOR0VTOiB0ZXN0aW5nOgorCisgUGVybCByZWdyZXNzaW9uIHRlc3RzOiBEb24ndCBmYWlsIHNraXBwZWQgdGVzdHMuCisKKzIwMTEtMDgtMTMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHBlcmwvU05NUC9TTk1QLnBtLCBwZXJsL1NOTVAvU05NUC54czogQ0hBTkdFUzogcGVybDogQWRkCisKKyBTTk1QOjpnZXRlbnYoKSBhbmQgU05NUDo6c2V0ZW52KCkuCisKKzIwMTEtMDgtMTMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oLCBzbm1wbGliL3Rvb2xzLmM6IENIQU5HRVM6CisKKyBzbm1wbGliOiBBZGQgbmV0c25tcF9zZXRlbnYoKS4KKworMjAxMS0wOC0xMyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogbG9jYWwvcGFzc19wZXJzaXN0dGVzdDogbG9jYWwvcGFzc19wZXJzaXN0dGVzdDogZG9jdW1lbnQgaG93IHRvCisKKyB1c2Ugb24gV2luZG93cworCisyMDExLTA4LTEzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBsb2NhbC9wYXNzX3BlcnNpc3R0ZXN0OiBTZXQgZXhlY3V0ZSBmbGFnIG9uIGxvY2FsL3Bhc3NfcGVyc2lzdHRlc3QKKworIHN1Y2ggdGhhdCB0aGUgaW5zdHJ1Y3Rpb25zIGluIHRoYXQgZmlsZSB3b3JrCisKKzIwMTEtMDgtMTMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIC5naXRpZ25vcmU6IC5naXRpZ25vcmU6IEZpeCBhIHN1cHByZXNzaW9uIHBhdHRlcm4KKworCisyMDExLTA4LTEyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBlMzJhYTk3NzQyMjMyY2VkM2E3MmY4Yjg0NWFjZTVjZTNkNTNiOGRmIE1lcmdlOiA0YWRmZWM4CisKKyA4NmZiZDMzIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgRnJpIEF1ZyAxMiAwOToxMToxNCAyMDExIC0wNzAwCisKKzIwMTEtMDgtMTIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGE3M2ViNDBlYzI2M2EwZmRmNTNhNzRlNzIwZGRmNDFjNGE3ZWUzZDQgTWVyZ2U6IDc2OTA4OTQKKworIDI5NDBlZTMgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBGcmkgQXVnIDEyIDA5OjExOjEzIDIwMTEgLTA3MDAKKworMjAxMS0wOC0xMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgMWYwYTkyOGEyOTEzY2ZhN2Y1Y2VhYWY0Njk2YzY5ZmJkYzY4NzYyMSBBdXRob3I6IFdlcworCisgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBGcmkgQXVnIDEyCisgMDk6MDk6MTEgMjAxMSAtMDcwMAorCisyMDExLTA4LTExICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA0YWRmZWM4MTIxNmY2YzViZjI1YzlhYzZiMmI3NDc4ZDFiZThlODQyIE1lcmdlOiAyODFiODY5CisKKyAyOTQwZWUzIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVGh1IEF1ZworIDExIDE4OjU3OjI5IDIwMTEgKzAyMDAKKworMjAxMS0wOC0xMSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgMWUxMDAwYTg4MTU5MjFiNWVjMmU3OTk3YjUzNTkyYTU0NGIzZGZjMiBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUaHUgQXVnIDExIDE1OjQ2OjMyIDIwMTEgKzAyMDAKKworMjAxMS0wOC0xMSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgMjgxYjg2OTYxYjEwMjY2ZGRmMzg4Mzk0MmQ0ZGMzYjZiOThkMzIyNyBNZXJnZTogZDhkMjI1YworCisgZjE4MTA5OSBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFRodSBBdWcKKyAxMSAxODo0NjowNiAyMDExICswMjAwCisKKzIwMTEtMDgtMTEgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogTWVyZ2UgVjUtNC1wYXRjaGVzLgorCisKKzIwMTEtMDgtMTAgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uYzogZG9uJ3QgYXNzZXJ0IG9uIGEgZG91YmxlCisKKyBpbml0OyBqdXN0IGRvbid0IGRvIGl0IHR3aWNlCisKKzIwMTEtMDgtMTAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGQ4ZDIyNWNhMzRhOGYyMjc1MjE1M2FjYjc5NDRmOTQzNWY1NjRkMmMgTWVyZ2U6IDA2YjQxODYKKworIDQ3YzhlZjEgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBXZWQgQXVnCisgMTAgMTg6MDU6MjEgMjAxMSArMDIwMAorCisyMDExLTA4LTEwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaDogU05NUF9GUkVFKCk6IGNhc3QgYXJndW1lbnQgdG8KKworICh2b2lkICopIGJlZm9yZSBwYXNzaW5nIGl0IHRvIG5ldHNubXBfZnJlZSgpCisKKzIwMTEtMDgtMDkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDA2YjQxODY1ZWMzMDJjMzkzMWIxMDgzZDNmZGU4OWY5MzQ1ZWMwNmYgTWVyZ2U6IDExNDI2ZmIKKworIGE0ZjZhYzcgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUdWUgQXVnIDkgMDY6NDQ6NDEgMjAxMSAtMDcwMAorCisyMDExLTA4LTA5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCAxMTQyNmZiM2M2ZjMyNzgyMGI5YmI4NmE3NmVjYzllMmMzN2U3OTM0IE1lcmdlOiAwMzQ0ZGY5CisKKyA5YmYwNjgxIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVHVlIEF1ZyA5IDA2OjQ0OjExIDIwMTEgLTA3MDAKKworMjAxMS0wOC0wOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBNZXJnZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoICdvcmlnaW4vVjUtNC1wYXRjaGVzJyBpbnRvCisKKyBWNS00LXBhdGNoZXMKKworMjAxMS0wOC0wOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgOWJmMDY4MTIxOGVkZjQzY2RiNWZjNjhmMTcyMTIzYmM0YTJkMDE4OCBNZXJnZTogZjlkYjYxMQorCisgY2NiMGViNiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFR1ZSBBdWcKKyA5IDA4OjE5OjMzIDIwMTEgKzAyMDAKKworMjAxMS0wOC0wOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgZGU3ZTM0OGVjZTAzZDIzODBjMmE4ODA2ZWJiYWQ1ZDliNTQ4NzY4MiBNZXJnZTogZDUzOGJjYgorCisgY2NiMGViNiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFR1ZSBBdWcKKyA5IDA4OjA3OjIyIDIwMTEgKzAyMDAKKworMjAxMS0wOC0wOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgMDIyMDM5MmQ4OTlhOWNhYjcwMWY3NGFmMTIwMzBiYjFkNGNjNWUyZSBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBGcmkgSnVsIDEgMTM6MDI6MTUgMjAxMSArMDIwMAorCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDSEFOR0VTLCBORVdTOiB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS43LjEucHJlMQorCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIENoYW5nZUxvZzogdmVyc2lvbiB1cGRhdGUgZm9yIDUuNy4xLnByZTEKKworCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9zbm1wZC5jOiBmaXggQysrIGNvbW1lbnRzCisKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvc25tcGQuYzogZml4IEMrKyBjb21tZW50cworCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L3NubXBkLmM6IGZpeCBDKysgY29tbWVudHMKKworCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9zbm1wZC5jOiBmaXggQysrIGNvbW1lbnRzCisKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWMsIHBlcmwvQVNOL0FTTi5wbSwgcGVybC9BbnlEYXRhX1NOTVAvU3RvcmFnZS5wbSwKKyAgICAgICBwZXJsL09JRC9PSUQucG0sIHBlcmwvU05NUC9TTk1QLnBtLCAKKyAgICAgIHBlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci5wbSwgcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG0sIAorICAgICAgcGVybC9hZ2VudC9hZ2VudC5wbSwgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG0sIAorICAgICAgcGVybC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG06IFZlcnNpb24gbnVtYmVyIHVwZGF0ZToKKworIDUuNy4xLnByZTEKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogTWFrZWZpbGUudG9wOiB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS43LjEucHJlMQorCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGNmNGNjZTRjMTg5Y2Y0N2Y0YzQ4OWRiNDNiN2ZhNTEwZjg5MDZhMWEgTWVyZ2U6IGRmOTFhOWYKKworIDkzZTk3ZGMgQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+IERhdGU6ICAgTW9uCisgQXVnIDggMjI6MTU6MjggMjAxMSArMDEwMAorCisyMDExLTA4LTA4ICBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CisKKyAgICogOiBNZXJnZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoICdvcmlnaW4vVjUtNi1wYXRjaGVzJyBpbnRvCisKKyBWNS02LXBhdGNoZXMKKworMjAxMS0wOC0wOCAgRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorCisgICAqIDogTWVyZ2UgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCAnb3JpZ2luL1Y1LTQtcGF0Y2hlcycgaW50bworCisgVjUtNC1wYXRjaGVzCisKKzIwMTEtMDgtMDggIERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KKworICAgKiAgd2luMzIvTWFrZWZpbGUtYXBwcy5pbiwgd2luMzIvZGlzdC9SRUFETUUuYnVpbGQud2luMzIudHh0LCAKKyAgICAgIHdpbjMyL2xpYmFnZW50L01ha2VmaWxlLmluLCB3aW4zMi9saWJuZXRzbm1wdHJhcGQvTWFrZWZpbGUuaW4sIAorICAgICAgd2luMzIvbGlic25tcC9NYWtlZmlsZS5pbiwgd2luMzIvbGlic25tcF9kbGwvTWFrZWZpbGUuaW4sIAorICAgICAgd2luMzIvbmV0c25tcG1pYnMvTWFrZWZpbGUuaW4sIHdpbjMyL3NubXBkL01ha2VmaWxlLmluLCAKKyAgICAgIHdpbjMyL3NubXBuZXRzdGF0L01ha2VmaWxlLmluLCB3aW4zMi9zbm1wdHJhcGQvTWFrZWZpbGUuaW46IERlZmluZQorCisgX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiB0b2tlbiAoYXMgcGVyIEFsZXgnIGJ1aWxkCisgaW5zdHJ1Y3Rpb25zKQorCisyMDExLTA4LTA4ICBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CisKKyAgICogIHdpbjMyL01ha2VmaWxlLWFwcHMuaW4sIHdpbjMyL2xpYmFnZW50L01ha2VmaWxlLmluLCAKKyAgICAgIHdpbjMyL2xpYmhlbHBlcnMvTWFrZWZpbGUuaW4sIHdpbjMyL2xpYm5ldHNubXB0cmFwZC9NYWtlZmlsZS5pbiwgCisgICAgICB3aW4zMi9saWJzbm1wL01ha2VmaWxlLmluLCB3aW4zMi9saWJzbm1wX2RsbC9NYWtlZmlsZS5pbiwgCisgICAgICB3aW4zMi9uZXRzbm1wbWlicy9NYWtlZmlsZS5pbiwgd2luMzIvc25tcGQvTWFrZWZpbGUuaW4sIAorICAgICAgd2luMzIvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4sIHdpbjMyL3NubXB0cmFwZC9NYWtlZmlsZS5pbjogRGVmaW5lCisKKyBfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIHRva2VuIChhcyBwZXIgQWxleCcgYnVpbGQKKyBpbnN0cnVjdGlvbnMpCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogTWVyZ2UgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCAnb3JpZ2luL1Y1LTQtcGF0Y2hlcycgaW50bworCisgVjUtNC1wYXRjaGVzCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGRmMTZkYzIyMjFlOTkzZGQzYzY2NjUwZDVlODcyNTc3ZmZlNmMwMWIgTWVyZ2U6IDcxNGJjODIKKworIDhlNWEyOGQgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBNb24gQXVnIDggMTM6NTY6NDMgMjAxMSAtMDcwMAorCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBmZmEwNWIwNTFhYzNlMmIxOTcxOTVhOTk4OWNjN2E5MWZlOGQ5MjgyIEF1dGhvcjogV2VzCisKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIE1vbiBBdWcgOCAxMzo1NTozOAorIDIwMTEgLTA3MDAKKworMjAxMS0wOC0wOCAgRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorCisgICAqIDogY29tbWl0IDcxNGJjODJmYTAxZTIxYTM2NTU4MjQ5NjNmYTU0ZTliODA0MmZmYjAgTWVyZ2U6IDZmZThmZTUKKworIDNlZjFkYjUgQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+IERhdGU6ICAgTW9uCisgQXVnIDggMjE6MjE6NDYgMjAxMSArMDEwMAorCisyMDExLTA4LTA4ICBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CisKKyAgICogOiBjb21taXQgYjQ1MTYwN2RjYTAxNWMxMTFlOTZmZGZlYjJkZGIwNjYxZmI0ZjcyNCBBdXRob3I6IERhdmUKKworIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+IERhdGU6ICAgTW9uIEF1ZyA4IDIxOjIwOjMyIDIwMTEKKyArMDEwMAorCisyMDExLTA4LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA2ZmU4ZmU1Mjk0YTQ1YmM3ZTRlYTM3NTFhMWFkN2FhNDdiNWNhYmIyIE1lcmdlOiAzNjRmOGZmCisKKyBmNjlhYmUzIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgTW9uIEF1ZworIDggMjI6MDI6MzggMjAxMSArMDIwMAorCisyMDExLTA4LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBjOTQ4MTMwNDRhNGM0YTYwOGU5OGU4MDIyMzA3NWM2ZmFmMDRlZTExIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIE1vbiBBdWcgOCAyMTo1NjoxNSAyMDExICswMjAwCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDM2NGY4ZmZhZWI5MGI0ZWIwMTY1ZmM4NTU2ODhjZDA2MjY2MzI3OTQgTWVyZ2U6IDMyODcyOTUKKworIDdhYmI5MjYgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBNb24gQXVnIDggMTE6MjQ6MjYgMjAxMSAtMDcwMAorCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IE1lcmdlIHJlbW90ZS10cmFja2luZyBicmFuY2ggJ29yaWdpbi9WNS02LXBhdGNoZXMnIGludG8KKworIFY1LTYtcGF0Y2hlcworCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGRpc3BsYXkgdGhlIGJyYW5jaCB3ZSdsbCBjb21taXQgdG8KKworCisyMDExLTA4LTA4ICBWbGFkaW1pciBLb25kcmF0aWV2IDx3dWxmMjAwMUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza19ody5jOiBDSEFOR0VTOiBzbm1wZDogUEFUQ0ggMzM4NjYzMzoKKworIGZyb20gd3VsZjIwMDE6IGZpeCBpbnRlZ2VyIG92ZXJmbG93IGluIGRpc2sgcGVyY2VudCBjYWxjdWxhdGlvbnMgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDg0YTc3NWQwNTU3ZmVhOTc1NzBlNDE3MTVhMzE2NDk3MGI0YzAzYTIgTWVyZ2U6IDZmZmYxYzEKKworIGQzNzNjNGYgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBNb24gQXVnCisgOCAyMDoxMjozMiAyMDExICswMjAwCisKKzIwMTEtMDgtMDggIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvYWdlbnRfdHJhcC5jOiBDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzMzg3MTM5OiBmcm9tCisKKyB5YWJlcmF1bmV5YTogQXZvaWQgc2VnZmF1bHQgaWYgdHJhcHNlc3MgdHJhbnNwb3J0IGVsZW1lbnQgY2FudCBiZQorIHBhcnNlZCBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBuc3NmcGF0Y2hhcHBseTogc3BsaXQgdGhlCisKKyBkaXNwbGF5ZWQgZ2l0IGNvbW1pdCBjb21tYW5kIGludG8gbXVsdGlwbGUgc2VnbWVudHMKKworMjAxMS0wOC0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogYWdlbnQvaGVscGVycy9zY2FsYXJfZ3JvdXAuYzogQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDMzODY5NjE6CisKKyBNYWtlIFNOTVAgR0VUIHdvcmsgaW4gYW4gQWdlbnRYIHN1YmFnZW50IGlmIHdyaXRlIHN1cHBvcnQgaXMKKyBkaXNhYmxlZCB2aWEgTkVUU05NUF9OT19XUklURV9TVVBQT1JUIChNYXJrIFJ1c2spLgorCisyMDExLTA4LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBzbm1wbGliL21pYi5jOiBDSEFOR0VTOiBzbm1wbGliOiBGaXggYSBjcmFzaCB0aGF0IGNvdWxkIGJlCisKKyB0cmlnZ2VyZWQgYnkgY2FsbGluZyBfbWliaW5kZXhfYWRkKCkgd2l0aCB0aGUgc2Vjb25kIGFyZ3VtZW50IG5vdAorIGVxdWFsIHRvIC0xLgorCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA2ZmZmMWMxYWU1MWIwNmM5ZDgwZmFmMTUzNzNhOTYzZDE3M2YxNGU4IE1lcmdlOiA4MzdjNTJlCisKKyA4Y2M5MDA0IEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgTW9uIEF1ZyA4IDEwOjU4OjU5IDIwMTEgLTA3MDAKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgOGNhN2ZmMWU2OTJjYWVjNDE4NmI3ODhjOWFlMmQyN2JlMjEzMjkwZiBBdXRob3I6IFdlcworCisgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBNb24gQXVnIDggMTA6MzM6NTYKKyAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogTWVyZ2UgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCAnb3JpZ2luL1Y1LTQtcGF0Y2hlcycgaW50bworCisgVjUtNC1wYXRjaGVzCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGI4ZjUyOWNiYTI3YzAxMTRiNGNiNzM0MGNmZDQ0OTUwNGZhMDc1MDYgTWVyZ2U6IDA4MjJmMmQKKworIDU1NmU5MzggQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBNb24gQXVnIDggMTA6MDU6MzYgMjAxMSAtMDcwMAorCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGZpeCBmdW5jdGlvbiBuYW1lIHR5cG8KKworCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCAyOTg4MmEwNzhhOTU5YTBmNzhiMDNlMDE5NjhmMWQxN2I3ZjZhMjk5IE1lcmdlOiA1ZTliZDJmCisKKyAwNDA5YzBhIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgTW9uIEF1ZyA4IDEwOjAzOjM0IDIwMTEgLTA3MDAKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBtYW51YWwgbWVyZ2Ugb2YgcHVsbC9wdXNoCisKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBtYWtlIG5zcHVsbC9uc3B1c2ggY2hlY2sgZm9yIGEKKworIGNsZWFuIHJlcG8KKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBuZXcgZnVuY3Rpb24gIm5zbWFrZWFsbCIgdG8gdGVzdAorCisgYnVpbGRpbmcgb24gZXZlcnkgYnJhbmNoCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogZGVmYXVsdCB0byBtZXJnZQorCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogTWVyZ2UgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCAnb3JpZ2luL1Y1LTctcGF0Y2hlcycgaW50bworCisgVjUtNy1wYXRjaGVzCisKKzIwMTEtMDgtMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oOiBDSEFOR0VTOiBXaW5kb3dzOiBBdm9pZCB0aGF0IGlmCisKKyB0aGUgTmV0LVNOTVAgUGVybCBtb2R1bGVzIGhhdmUgYmVlbiBidWlsdCB3aXRoIGFub3RoZXIgdmVyc2lvbiBvZgorIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIHRoYW4gQWN0aXZlUGVybCB0aGF0IHVzaW5nIG9uZSBvZiB0aGVzZSBQZXJsCisgbW9kdWxlcyB0cmlnZ2VycyBhICJGcmVlIHRvIHdyb25nIHBvb2wiIGNyYXNoLiBUaGlzIHJlZ3Jlc3Npb24gd2FzCisgY2F1c2VkIGJ5IGNvbW1pdCAzYjE0YzU5Y2Y4Mjc4ZDQxMDIwN2ZmNDJkZWJkYTI2MzY0MjZhNDY4ICh0aGUKKyBuZXRzbm1wX2ZyZWUoKSBpbnRvIFNOTVBfRlJFRSgpIGNoYW5nZXMgaW4gdGhlICoueHMgZmlsZXMpLgorCisyMDExLTA4LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBlMTA5NTM5OTMwNzAzY2IzMDUyZDUyNDFiMThhYzZmYzA2MmZhYWNhIE1lcmdlOiAwYzliNmNiCisKKyBlNDZiMTcwIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgTW9uIEF1ZworIDggMTg6MzQ6MTEgMjAxMSArMDIwMAorCisyMDExLTA4LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBzbm1wbGliL21pYi5jOiBDSEFOR0VTOiBzbm1wbGliOiBGaXggYSBjcmFzaCB0aGF0IGNvdWxkIGJlCisKKyB0cmlnZ2VyZWQgYnkgY2FsbGluZyBfbWliaW5kZXhfYWRkKCkgd2l0aCB0aGUgc2Vjb25kIGFyZ3VtZW50IG5vdAorIGVxdWFsIHRvIC0xLgorCisyMDExLTA4LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA3ZjQyZDBkOTMzMjA0ODQxNTIyNzE0MjdjYzk4MDhjYmRhNDliYmQwIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIE1vbiBBdWcgOCAwOTo1MDo1MSAyMDExICswMjAwCisKKzIwMTEtMDgtMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDBjOWI2Y2JlOWRiZTJlYzUyMTdhOTViNjc4MWZkN2RjMWY2ZWJkYTcgTWVyZ2U6IGZhNmNlZjUKKworIDk2MzMyMGYgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBNb24gQXVnCisgOCAxODoxNDozNiAyMDExICswMjAwCisKKzIwMTEtMDgtMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGEzYjg2NTRhMjMyYzU2M2JjOTdjYzk5MjVjZDk4NTkwYTMwYzViYzUgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgTW9uIEF1ZyA4IDE3OjI0OjE4IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wNyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgZmE2Y2VmNWNhOTFkZjNhMGIwMzQ1NWI2ODU1OWQyYmVlMjQ4MTAxYyBNZXJnZTogZjVmZTUzNgorCisgOGFkZDBkYSBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFN1biBBdWcKKyA3IDEwOjE4OjU0IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wNyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgYTBkZDNjYWYyNTkyNmU0MzQ2NTcxOGJmNDE3YTQ2NGMyZmIzNjM2NiBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBTdW4gQXVnIDcgMTA6MTc6MDEgMjAxMSArMDIwMAorCisyMDExLTA4LTA1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOiAzMiBpcyB0b28gbGltaXRlZCBmb3IKKworIGJpZ2dlciB0YWJsZXM7IGluY3JlYXNlIHRoZSBtYXggbXNnIGNvdW50IHRvIDEyOAorCisyMDExLTA4LTA1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IG1ha2Ugcm9sbHVwIGFuZCBzeW5jIHN1cHBvcnQKKworIC0tcmViYXNlIGFuZCBjaGFuZ2UgdGhlIGRlZmF1bHQgYmFjayB0byBtZXJnZQorCisyMDExLTA4LTA1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IE1lcmdlIHJlbW90ZS10cmFja2luZyBicmFuY2ggJ29yaWdpbi9WNS00LXBhdGNoZXMnIGludG8KKworIFY1LTQtcGF0Y2hlcworCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBSRUFETUUud2luMzI6IENIQU5HRVM6IFdpbjMyOiBEb2N1bWVudGVkIGhvdyB0byB1c2UgYnVpbGQuYmF0IHdpdGgKKworIE9wZW5TU0wgZW5hYmxlZAorCisyMDExLTA3LTE1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBSRUFETUUud2luMzI6IENIQU5HRVM6IFdpbmRvd3M6IFJlbW92ZSBvdXRkYXRlZCBpbnN0cnVjdGlvbnMgYWJvdXQKKworIGVkaXRpbmcgd2luMzJcbGlic25tcF9kbGxcbGlic25tcC5kZWYgZnJvbSBSRUFETUUud2luMzIKKworMjAxMS0wNy0xNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogUkVBRE1FLndpbjMyOiBDSEFOR0VTOiBXaW4zMjogRG9jdW1lbnQgaG93IHRvIGJ1aWxkIDY0LWJpdAorCisgZXhlY3V0YWJsZXMgZm9yIHRoZSB4NjQvYW1kNjQgYXJjaGl0ZWN0dXJlCisKKzIwMTEtMDgtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGY1ZmU1MzZlOGZkNmM0OGZlMjQzZGVjZDMxZmFjOWNmMWM5MmY0Y2MgTWVyZ2U6IDc4NTBlYTEKKworIDgwOTI4YTggQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBGcmkgQXVnCisgNSAxNToxMzoyNyAyMDExICswMjAwCisKKzIwMTEtMDgtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDgwOTI4YTg5MDljZmFiMzdmMDFiMzlhMDcxYTNlOGFkODU5NTYyMjIgTWVyZ2U6IGYxNmEwOTQKKworIDBkYmM4NjkgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBGcmkgQXVnCisgNSAxMzo1NzozMCAyMDExICswMjAwCisKKzIwMTEtMDgtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDBkYmM4NjlmZWMwN2Q4ZTkwZGJkMWM5NTQ5M2VlN2NiYzYyM2M5NWMgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgRnJpIEF1ZyA1IDEyOjQwOjMxIDIwMTEgKzAyMDAKKworMjAxMS0wOC0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogLmdpdGlnbm9yZTogLmdpdGlnbm9yZTogQWRkCisKKyBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5kZWYgYW5kIHBlcmwvU05NUC90CisKKzIwMTEtMDgtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDg2YzFlMmI5Njc5ZmVjMmNkNzk5YmE3NjAwNWMzZDYwZTlkNDc2MzQgTWVyZ2U6IGJjZDg2MzUKKworIGYxNmEwOTQgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBGcmkgQXVnCisgNSAxMjoyMDo1MCAyMDExICswMjAwCisKKzIwMTEtMDgtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDJmOGQ0ZjU3OTZjYmMxYzdlOTY3YWNkYWE4MDE5YjI0ZjE1MjBhMzYgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgRnJpIEF1ZyA1IDEyOjAyOjUxIDIwMTEgKzAyMDAKKworMjAxMS0wOC0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogc25tcGxpYi9wYXJzZS5jOiBVbmJyZWFrIHRoZSBWNS00LXBhdGNoZXMgLSByZXZlcnQgY29tbWl0CisKKyBkMmM0NzY4YmQyZWZiNDg2NjQ0MzRhODMxNDI1YzJkZGE4NWQ3MTMzIChDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSAorIDMzNjIyMzM6IGZyb20geWFiZXJhdW5leWE6IE11dGUgdW5uZWNlc3NhcnkgY2Fubm90IGZpbmQgbW9kdWxlCisgbm9pc2UpLgorCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jLCBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5oOiAKKworIFVuYnJlYWsgdGhlIFY1LTQtcGF0Y2hlcyBicmFuY2ggLSB3YXMgYnJva2VuIGJ5IGNvbW1pdAorIGJmNzE3OGIwYjIyNTg3ZDQzZDFhODBjMjY5Y2QyMTZiZDU5MzAyMTQgKGFnZW50OiBjaGFuZ2UgdHlwZSBvZgorIHNubXBfZW5hYmxlYXV0aGVudHJhcHMgdG8gbG9uZykKKworMjAxMS0wOC0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaDogVW5icmVhayB0aGUgVjUtNC1wYXRjaGVzCisKKyBicmFuY2ggLSB3YXMgYnJva2VuIGJ5IGNvbW1pdAorIDBlNjg0MmZlMDgwY2VjODUzYjA4Y2QyMzIzMDE1YWJhYmMzODFjZTEgKENIQU5HRVM6IHNubXB0cmFwZDogUEFUQ0gKKyAzMzgzNDQxOiBmcm9tIHNhY2hpbnN1cmVuZHJhbjogRml4IGNyYXNoIG9uIDUuNC40IGR1ZSB0byBhY2Nlc3Mgb2YKKyBmcmVlZCBtZW1vcnkpLgorCisyMDExLTA4LTA1ICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBORVdTOiBtaW5vciBORVdTIHBvbGlzaAorCisKKzIwMTEtMDgtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGJjZDg2MzUwNzEzODIyOTYzZDM3NmVmZjU4MmE5MmY0M2U0MjZkNmMgTWVyZ2U6IDljODEwYTMKKworIDdhMjBmNzEgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBGcmkgQXVnCisgNSAxMDoyODo1NSAyMDExICswMjAwCisKKzIwMTEtMDgtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDNhYTk0OWZiZGZjMWE5NGE4MzQwYWQ4YmFmOGIzMTQ3NTZhMGJiOWQgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgRnJpIEF1ZyA1IDEwOjI2OjE1IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgOWM4MTBhM2IzN2I2ODU3M2M0MDMzN2UyNDZlMmZhZjI5OWI3N2QzMSBNZXJnZTogNzFjYjJlOAorCisgNjEwZDYzZiBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFRodSBBdWcgNCAxMDo0MjowOCAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDk0MzkzMGUxZTEyNDM4NWZkOTQ3MzhiNmRjZGEzN2QyOWRjN2FjN2YgQXV0aG9yOiBXZXMKKworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgVGh1IEF1ZyA0IDEwOjQxOjQxCisgMjAxMSAtMDcwMAorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IE1lcmdlIHJlbW90ZS10cmFja2luZyBicmFuY2ggJ29yaWdpbi9WNS00LXBhdGNoZXMnIGludG8KKworIFY1LTQtcGF0Y2hlcworCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA0ZWRjYjg4ZGFlOGIyZTU5ZGM2ODNlODBkNDE0ZmE3ZWNlYzM2ODg1IE1lcmdlOiA2NWYzZWVmCisKKyAyZGQ5ZWQwIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVGh1IEF1ZyA0IDEwOjI0OjExIDIwMTEgLTA3MDAKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBNZXJnZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoICdvcmlnaW4vVjUtNS1wYXRjaGVzJyBpbnRvCisKKyBWNS01LXBhdGNoZXMKKworMjAxMS0wOC0wNCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgYmM1Y2EwM2EwNGFiMTljNjM0YTM0ZDA2MGIwYjE2Yjc0ODRjYjUyMCBNZXJnZTogODhmZGRiNworCisgOTBjMGU3NSBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFRodSBBdWcKKyA0IDE5OjEzOjA3IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wNCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogc25tcGxpYi9zbm1wX2NsaWVudC5jLCBzbm1wbGliL3NubXB1c20uYzogc25tcHVzbTogRml4IHJlY2VudGx5CisKKyBpbnRyb2R1Y2VkIGNvbXBpbGVyIHdhcm5pbmdzCisKKzIwMTEtMDgtMDQgIFN0dWFydCBIZW5kZXJzb24gPHQwancyZnUwa21nQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X25ldGJzZC5jOiBDSEFOR0VTOiBvcGVuYnNkOgorCisgUEFUQ0ggMzM1NzkzMjogZnJvbSB0MGp3MmZ1MGttZzogQ2xlYW5pbmcgaW4gbWVtb3J5X25ldGJzZC5jIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBWbGFkaW1pciBLb25kcmF0aWV2IDx3dWxmMjAwMUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX2dldGZzc3RhdHMuYzogQ0hBTkdFUzogYWdlbnQ6CisKKyBQQVRDSCAzMzg2MTQ3OiBmcm9tIHd1bGYyMDAxOiBmaXggVUNELVNOTVAtTUlCOjpkc2tVc2VkIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA0NzNkN2U1Y2Q0ZDQxMWJiYTIwZWI4NTM1OWQ4NzI4MDYzMzAxY2JkIE1lcmdlOiBhNGU4YjYyCisKKyA4OGZkZGI3IEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVGh1IEF1ZyA0IDA5OjI4OjIyIDIwMTEgLTA3MDAKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgMjEwMWJiMmQ3YWQ2ZGIwMzhjNzU1YWE5MTkzYzhhY2UwZGJkNGY1OCBBdXRob3I6IFdlcworCisgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBUaHUgQXVnIDQgMDk6Mjg6MDYKKyAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIC5naXRpZ25vcmU6IGlnbm9yZSAqLm9yaWcgYW5kICoucmVqCisKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBoZWxwIG91dHB1dCBkZXNjcmliZXMgcmViYXNlIHZzCisKKyBtZXJnZSBiZXR0ZXIKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgZjEyNmExN2M2YTMwNjM0NTVhNTExOTQwYjAyMzA0N2FiZDliNDhlZSBNZXJnZTogYWQ3NjVmNAorCisgNzdhNDc4NCBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFRodSBBdWcgNCAwOToyNToxNiAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDQ1MmUxNzA3ZjIwOWVjNDVlN2M3ZjJhMzA0MGVmNTk1ZmI5ZDFhZjYgTWVyZ2U6IGRjNzU1YTYKKworIGIzNzJlNWEgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUaHUgQXVnIDQgMDk6MjU6MDMgMjAxMSAtMDcwMAorCisyMDExLTA4LTA0ICBTdHVhcnQgSGVuZGVyc29uIDx0MGp3MmZ1MGttZ0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIE1ha2VmaWxlLmluLCBhY2NvbmZpZy5oLCBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9vcGVuYnNkLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vb3BlbmJzZDQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9vcGVuYnNkNS5oOiBDSEFOR0VTOiBvcGVuYnNkOiBQQVRDSAorICAgICAgMzM1NzkyNzoKKworIGZyb20gdDBqdzJmdTBrbWc6IFJlY29nbmlzZSBvcGVuYnNkNSBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBmaXggd2hlcmUgYXJndW1lbnRzIGFyZSBzZXQKKworCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IHNwbGl0IG5zc2ZwYXRjaGFwcGx5IGludG8gdHdvCisKKyBwYXJ0czogYXBwbHkgYW5kIGNvbW1pdGluZworCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IHBhdGNoIHVzaW5nIC1OCisKKworMjAxMS0wOC0wNCAgRGF2aWQgQXJub2xkIDxkamFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBtYW4vZGVmYXVsdF9zdG9yZS4zLmJvdCwgbWFuL2VuY29kZV9rZXljaGFuZ2UuMS5kZWYsIAorICAgICAgbWFuL2ZpeHByb2MuMS5kZWYsIG1hbi9taWIyYy5jb25mLjUuaW4sIG1hbi9uZXQtc25tcC1jb25maWcuMS5kZWYsCisgICAgICAgbWFuL25ldHNubXBfYWdlbnRfYXBpLjMuZGVmLCBtYW4vbmV0c25tcF9taWJfYXBpLjMuZGVmLCAKKyAgICAgIG1hbi9zbm1wLmNvbmYuNS5kZWYsIG1hbi9zbm1wYnVsa2dldC4xLmRlZiwKKyAgICAgIG1hbi9zbm1wYnVsa3dhbGsuMS5kZWYsICBtYW4vc25tcGNtZC4xLmRlZiwgbWFuL3NubXBjb25mLjEuZGVmLAorICAgICAgbWFuL3NubXBkLjguZGVmLCAgbWFuL3NubXBkLmNvbmYuNS5kZWYsIG1hbi9zbm1wZC5leGFtcGxlcy41LmRlZiwgCisgICAgICBtYW4vc25tcGRlbHRhLjEuZGVmLCBtYW4vc25tcGRmLjEuZGVmLCBtYW4vc25tcGdldC4xLmRlZiwgCisgICAgICBtYW4vc25tcGdldG5leHQuMS5kZWYsIG1hbi9zbm1wbmV0c3RhdC4xLmRlZiwgbWFuL3NubXBzZXQuMS5kZWYsIAorICAgICAgbWFuL3NubXBzdGF0dXMuMS5kZWYsIG1hbi9zbm1wdGFibGUuMS5kZWYsIG1hbi9zbm1wdGVzdC4xLmRlZiwgCisgICAgICBtYW4vc25tcHRyYW5zbGF0ZS4xLmRlZiwgbWFuL3NubXB0cmFwLjEuZGVmLCBtYW4vc25tcHRyYXBkLjguZGVmLCAKKyAgICAgIG1hbi9zbm1wdHJhcGQuY29uZi41LmRlZiwgbWFuL3NubXB1c20uMS5kZWYsIG1hbi9zbm1wdmFjbS4xLmRlZiwgCisgICAgICBtYW4vc25tcHdhbGsuMS5kZWY6IENIQU5HRVM6IG1hbjogUEFUQ0ggMzMxMjg2MTogZnJvbSBkamE6IE1hbgorICAgICAgcGFnZXMKKworIGh5cGhlbi12cy1taW51cyBjbGVhbnVwIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHdpbjMyL2Rpc3QvaW5zdGFsbGVyL25ldC1zbm1wLm5zaTogRGV0ZWN0IChhbmQgcmVqZWN0KSBPcGVuU1NMCisKKyAxLjAuMAorCisyMDExLTA4LTA0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHdpbjMyL2Rpc3QvaW5zdGFsbGVyL25ldC1zbm1wLm5zaTogQ29tbWFuZC1saW5lIG9wdGlvbnMgZm9yIHNpbGVudAorCisgaW5zdGFsbAorCisyMDExLTA4LTA0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHdpbjMyL2Rpc3QvaW5zdGFsbGVyL25ldC1zbm1wLm5zaTogRW5zdXJlIFdpbmRvd3MgcGFja2FnZQorCisgdW5pbnN0YWxscyBjb21wbGV0ZWx5LgorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA4MWM2M2ZiNWM1ZTRhYmI5YzI5YWNhODliZjlkNjk0NDEwMDg2ZTk3IE1lcmdlOiA0YTY5MjBhCisKKyBkYzc1NWE2IEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVGh1IEF1ZyA0IDA4OjMzOjM0IDIwMTEgLTA3MDAKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2NsaWVudC5jOiBhZGRlZCBzcGFjaW5nIHRvIG1hdGNoIHRoZSBsYXRlciBicmFuY2hlcworCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogbWFudWFsIG1lcmdlCisKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2NsaWVudC5jOiByZW1vdmVkIGFjY2lkZW50aWFsbHkgZHVwbGljYXRlZCBjb2RlCisKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBtYW51YWwgbWVyZ2UKKworCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IG1hbnVhbCBtZXJnZQorCisKKzIwMTEtMDgtMDQgIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9wYXJzZS5jOiBDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzMzYyMjMzOiBmcm9tCisKKyB5YWJlcmF1bmV5YTogTXV0ZSB1bm5lY2Vzc2FyeSBjYW5ub3QgZmluZCBtb2R1bGUgbm9pc2UgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMsIGFnZW50L3NubXBfdmFycy5jLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzOiBDSEFOR0VTOiBmcmVlYnNkOiBQQVRDSCAzMzYzMzA4OgorICAgICAgZnJvbQorCisgeWFiZXJhdW5leWE6IEZpeCBjb21waWxhdGlvbiBvbiBGcmVlQlNEIDkueCB3aXRoIHJlY2VudCBoZWFkZXIKKyBzaHVmZmxpbmcgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYWxsb3cgbnNyb2xsdXAgdG8gdGFrZSBhIC0tbWVyZ2UKKworIGZsYWcgZm9yIG1lcmdpbmcgaW5zdGVhZCBvZiByZWJhc2luZworCisyMDExLTA4LTA0ICBTYWNoaW4gU3VyZW5kcmFuIDxzYWNoaW5zdXJlbmRyYW5AdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oLCBzbm1wbGliL3NubXBfY2xpZW50LmMsIAorICAgICAgc25tcGxpYi9zbm1wdXNtLmM6IENIQU5HRVM6IHNubXB0cmFwZDogUEFUQ0ggMzM4MzQ0MTogZnJvbQorCisgc2FjaGluc3VyZW5kcmFuOiBGaXggY3Jhc2ggb24gNS40LjQgZHVlIHRvIGFjY2VzcyBvZiBmcmVlZCBtZW1vcnkgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogTWFrZWZpbGUuaW46IENIQU5HRVM6IGZyZWVic2Q6IFBBVENIIDMzNjMzMjg6IGZyb20geWFiZXJhdW5leWE6CisKKyBBZGQgRnJlZUJTRCA5LnggdG8gc3VwcG9ydGVkIE9TZXMgbGlzdCBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3BhcnNlLmM6IENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENIIDMzNjIyMzM6IGZyb20KKworIHlhYmVyYXVuZXlhOiBNdXRlIHVubmVjZXNzYXJ5IGNhbm5vdCBmaW5kIG1vZHVsZSBub2lzZSBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYywgYWdlbnQvc25tcF92YXJzLmMsIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnM6IENIQU5HRVM6IGZyZWVic2Q6IFBBVENIIDMzNjMzMDg6CisgICAgICBmcm9tCisKKyB5YWJlcmF1bmV5YTogRml4IGNvbXBpbGF0aW9uIG9uIEZyZWVCU0QgOS54IHdpdGggcmVjZW50IGhlYWRlcgorIHNodWZmbGluZyBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhbGxvdyBuc3JvbGx1cCB0byB0YWtlIGEgLS1tZXJnZQorCisgZmxhZyBmb3IgbWVyZ2luZyBpbnN0ZWFkIG9mIHJlYmFzaW5nCisKKzIwMTEtMDgtMDQgIFNhY2hpbiBTdXJlbmRyYW4gPHNhY2hpbnN1cmVuZHJhbkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgsIHNubXBsaWIvc25tcF9jbGllbnQuYywgCisgICAgICBzbm1wbGliL3NubXB1c20uYzogQ0hBTkdFUzogc25tcHRyYXBkOiBQQVRDSCAzMzgzNDQxOiBmcm9tCisKKyBzYWNoaW5zdXJlbmRyYW46IEZpeCBjcmFzaCBvbiA1LjQuNCBkdWUgdG8gYWNjZXNzIG9mIGZyZWVkIG1lbW9yeSBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBNYWtlZmlsZS5pbjogQ0hBTkdFUzogZnJlZWJzZDogUEFUQ0ggMzM2MzMyODogZnJvbSB5YWJlcmF1bmV5YToKKworIEFkZCBGcmVlQlNEIDkueCB0byBzdXBwb3J0ZWQgT1NlcyBsaXN0IFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvcGFyc2UuYzogQ0hBTkdFUzogbGlibmV0c25tcDogUEFUQ0ggMzM2MjIzMzogZnJvbQorCisgeWFiZXJhdW5leWE6IE11dGUgdW5uZWNlc3NhcnkgY2Fubm90IGZpbmQgbW9kdWxlIG5vaXNlIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jLCBhZ2VudC9zbm1wX3ZhcnMuYywgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVyczogQ0hBTkdFUzogZnJlZWJzZDogUEFUQ0ggMzM2MzMwODoKKyAgICAgIGZyb20KKworIHlhYmVyYXVuZXlhOiBGaXggY29tcGlsYXRpb24gb24gRnJlZUJTRCA5Lnggd2l0aCByZWNlbnQgaGVhZGVyCisgc2h1ZmZsaW5nIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGFsbG93IG5zcm9sbHVwIHRvIHRha2UgYSAtLW1lcmdlCisKKyBmbGFnIGZvciBtZXJnaW5nIGluc3RlYWQgb2YgcmViYXNpbmcKKworMjAxMS0wOC0wNCAgU2FjaGluIFN1cmVuZHJhbiA8c2FjaGluc3VyZW5kcmFuQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaCwgc25tcGxpYi9zbm1wX2NsaWVudC5jLCAKKyAgICAgIHNubXBsaWIvc25tcHVzbS5jOiBDSEFOR0VTOiBzbm1wdHJhcGQ6IFBBVENIIDMzODM0NDE6IGZyb20KKworIHNhY2hpbnN1cmVuZHJhbjogRml4IGNyYXNoIG9uIDUuNC40IGR1ZSB0byBhY2Nlc3Mgb2YgZnJlZWQgbWVtb3J5IFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvcGFyc2UuYzogQ0hBTkdFUzogbGlibmV0c25tcDogUEFUQ0ggMzM2MjIzMzogZnJvbQorCisgeWFiZXJhdW5leWE6IE11dGUgdW5uZWNlc3NhcnkgY2Fubm90IGZpbmQgbW9kdWxlIG5vaXNlIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGFsbG93IG5zcm9sbHVwIHRvIHRha2UgYSAtLW1lcmdlCisKKyBmbGFnIGZvciBtZXJnaW5nIGluc3RlYWQgb2YgcmViYXNpbmcKKworMjAxMS0wOC0wNCAgU2FjaGluIFN1cmVuZHJhbiA8c2FjaGluc3VyZW5kcmFuQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaCwgc25tcGxpYi9zbm1wX2NsaWVudC5jLCAKKyAgICAgIHNubXBsaWIvc25tcHVzbS5jOiBDSEFOR0VTOiBzbm1wdHJhcGQ6IFBBVENIIDMzODM0NDE6IGZyb20KKworIHNhY2hpbnN1cmVuZHJhbjogRml4IGNyYXNoIG9uIDUuNC40IGR1ZSB0byBhY2Nlc3Mgb2YgZnJlZWQgbWVtb3J5IFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2N0bC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9tZW1vcnlfZnJlZWJzZC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jLCBzbm1wbGliL2tleXRvb2xzLmMsCisgICAgICBzbm1wbGliL3NjYXBpLmM6CisKKyBDSEFOR0VTOiBidWlsZGluZzogUEFUQ0ggMzM4Mzk1MTogZnJvbSB5YWJlcmF1bmV5YTogRml4IC1XdW51c2VkCisgY29tcGlsZSB3YXJuaW5ncyB3aXRoIEZyZWVCU0QvTmV0QlNEIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2N0bC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9tZW1vcnlfZnJlZWJzZC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jLCBzbm1wbGliL2tleXRvb2xzLmMsCisgICAgICBzbm1wbGliL3NjYXBpLmM6CisKKyBDSEFOR0VTOiBidWlsZGluZzogUEFUQ0ggMzM4Mzk1MTogZnJvbSB5YWJlcmF1bmV5YTogRml4IC1XdW51c2VkCisgY29tcGlsZSB3YXJuaW5ncyB3aXRoIEZyZWVCU0QvTmV0QlNEIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBlODc4YWJiZGIxODA4ZWY4M2UwYTgwNzQ1MzZmYjU0ZTEzMjE5YThiIE1lcmdlOiA0MDNkZTQyCisKKyA4NzhmYmY0IEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVGh1IEF1ZyA0IDA3OjU1OjAwIDIwMTEgLTA3MDAKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgMjUwYWZhMDY4OTJmZDg5N2FjMzFlMzgzNmE3ZmZjOWUyYjRjZjdiOSBNZXJnZTogMmMxNGMxYworCisgM2FmYzVlMCBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFRodSBBdWcgNCAwNzo1MTozMyAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDU3OGNkN2NjZTM1MWFlOGQ5MDRlYzNkODBiZTliYTZkMWQ0OGE3MTIgTWVyZ2U6IDI1OTg4YmUKKworIGYzYmM1NTEgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUaHUgQXVnIDQgMDc6NTA6NTYgMjAxMSAtMDcwMAorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGF1dG9jb25mCisKKworMjAxMS0wOC0wNCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBjb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnM6IENIQU5HRVM6IGJ1aWxkaW5nOiBQQVRDSAorCisgMzM4Mzk0OTogZnJvbSB5YWJlcmF1bmV5YTogRml4IGF1dG9jb25mIHRlc3RzIGZvciBzeXMvbWJ1Zi5oIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IHByb21wdCBmb3IgcGF0Y2ggYW5kIGFuIGFyZWEsIGFuZAorCisgdXNlIHRoZSBwcm9wZXIgQ0hBTkdFUyBsaW5lIGZvcm1hdAorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IFVzZSBmZXRjaCAtLWFsbCBhbmQgcmViYXNlIGFzCisKKyBzdWdnZXN0ZWQgYnkgQmFydCBmb3Igc3BlZWQgaW1wcm92ZW1lbnRzCisKKzIwMTEtMDgtMDQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGQ2YTFhODllNmY2NDg5NTFhOWI4MzE5MzJkM2NjMjMwODIxZjJkMzcgTWVyZ2U6IGRjYjcxMmYKKworIDg3MmUwMTMgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUaHUgQXVnCisgNCAxMjowNjoxOCAyMDExICswMjAwCisKKzIwMTEtMDgtMDQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDQ0OTY5YjRlNTdjMjcxOTRlNWJkMzU3YmM0NTI3NWZlYjg2OTVkMjIgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgRnJpIEp1bCA4IDIwOjUyOjI1IDIwMTEgKzAyMDAKKworMjAxMS0wNy0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvd2luRXh0RExMLmM6IENIQU5HRVM6IFdpbjMyOiB3aW5FeHRETEw6IEludm9rZQorCisgU25tcFV0aWxPaWRGcmVlKCkgYmVmb3JlIFNubXBVdGlsT2lkQ3B5KCkuIEl0J3Mgbm90IGNsZWFyIHlldCB3aHkKKyB0aGUgb3JpZ2luYWwgY29kZSBkaWQgbm90IG1ha2Ugc25tcHdhbGsgdHJpZ2dlciBhIG1lbW9yeSBsZWFrLgorCisyMDExLTA4LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBkY2I3MTJmZmM4NmIzMzU4MzAwMGVmNGFlOWE1MWNlZDI1Y2QxNWJmIE1lcmdlOiBlODVjZmE1CisKKyA5ODYyM2VmIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVGh1IEF1ZworIDQgMTE6MzY6MTcgMjAxMSArMDIwMAorCisyMDExLTA4LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA4YTAxZWM2NDIzZDQwMGM0YTEzY2NhYzY4YTM3OTFkMDIxOGEwODg1IEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFRodSBBdWcgNCAxMToxOToxNyAyMDExICswMjAwCisKKzIwMTEtMDgtMDQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGU4NWNmYTU5OWIyM2I3NmQ5NzkxM2M5NmI1ZDcwM2JmZjZiYTQ5NDQgTWVyZ2U6IGIwNTZlZTYKKworIGUyMWVlZjIgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUaHUgQXVnCisgNCAwODo0NDo0MyAyMDExICswMjAwCisKKzIwMTEtMDgtMDQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYzogQ0hBTkdFUzogYWdlbnQ6CisKKyBBdm9pZCB0aGF0IGEgTUlCIHdhbGsgb24gdGhlIGhvc3QgcmVzb3VyY2VzIE1JQiB0cmlnZ2VycyBhIGNyYXNoIG9uCisgRmVkb3JhIDE1CisKKzIwMTEtMDgtMDQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGIwNTZlZTZlYjUzOTA5YWQwNGYxNmVjMjZkMjY5MGQ3YTA4MzE5MmEgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVGh1IEF1ZyA0IDA3OjU5OjA0IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wMyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogIGFnZW50L2FnZW50X3RyYXAuYywgYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0c19saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9hY2MKKyAgICAgICBlc3MuYywgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcGtnaW5mby5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJvY2ZzX3N0YXR1cy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9kYXRhX2FjY2Vzcy9ldGhlcnN0YXRzX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2FjY2VzcworICAgICAgIC5jLCBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguYywgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5jLCBhZ2VudC9zbm1wX2FnZW50LmMsIAorICAgICAgYXBwcy9zbm1wYnVsa2dldC5jLCBhcHBzL3NubXB0bHMuYywgYXBwcy9zbm1wdHJhcGRfbG9nLmMsIAorICAgICAgcGVybC9TTk1QL1NOTVAueHMsIHNubXBsaWIvY29udGFpbmVyX2l0ZXJhdG9yLmMsIAorICAgICAgc25tcGxpYi9kaXJfdXRpbHMuYywgc25tcGxpYi9zbm1wX2FwaS5jLCBzbm1wbGliL3NubXBfY2xpZW50LmMsIAorICAgICAgc25tcGxpYi9zbm1wX2VudW0uYywgc25tcGxpYi9zbm1wX29wZW5zc2wuYywgc25tcGxpYi9zbm1wdXNtLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4uYzogQ0hBTkdFUzogc25tcGxpYiwgc25tcGQ6CisKKyBwZXJsOiBFbGltaW5hdGUgZGVhZCB2YXJpYWJsZXMKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgYWU4ZTNlY2QyZGY0Y2YzNzYyNTk0NGFkZWQxZGZlNDczNWQ0NGVlYSBNZXJnZTogNzMxODdjZQorCisgOTMzNWUxOSBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFdlZCBBdWcgMyAxNDozNzozNiAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDc5NGY5YTY5ZDdlYjY0MjI2ODIwMGIwYTRiMTk5MTUxZGVmNjZlZDAgQXV0aG9yOiBXZXMKKworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgV2VkIEF1ZyAzIDE0OjM2OjI1CisgMjAxMSAtMDcwMAorCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGFkZGVkIGEgY29tbWVudAorCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYXQgZW5kIG9mIG5zcm9sbHVwIG1lbnRpb24gdGhhdAorCisgbm93IHdvdWxkIGJlIGEgZ29vZCB0aW1lIHRvIHJ1biBuc3N5bmMKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhIG5ldyBuc3N5bmMoKSBmdW5jdGlvbiBmb3IKKworIHB1c2gvcHVsbGluZyBhY3RpdmUgYnJhbmNoZXMKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhZGRlZCBhIGNvbW1lbnQKKworCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGF0IGVuZCBvZiBuc3JvbGx1cCBtZW50aW9uIHRoYXQKKworIG5vdyB3b3VsZCBiZSBhIGdvb2QgdGltZSB0byBydW4gbnNzeW5jCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYSBuZXcgbnNzeW5jKCkgZnVuY3Rpb24gZm9yCisKKyBwdXNoL3B1bGxpbmcgYWN0aXZlIGJyYW5jaGVzCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYXQgZW5kIG9mIG5zcm9sbHVwIG1lbnRpb24gdGhhdAorCisgbm93IHdvdWxkIGJlIGEgZ29vZCB0aW1lIHRvIHJ1biBuc3N5bmMKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhIG5ldyBuc3N5bmMoKSBmdW5jdGlvbiBmb3IKKworIHB1c2gvcHVsbGluZyBhY3RpdmUgYnJhbmNoZXMKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhZGRlZCBhIGNvbW1lbnQKKworCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGF0IGVuZCBvZiBuc3JvbGx1cCBtZW50aW9uIHRoYXQKKworIG5vdyB3b3VsZCBiZSBhIGdvb2QgdGltZSB0byBydW4gbnNzeW5jCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYSBuZXcgbnNzeW5jKCkgZnVuY3Rpb24gZm9yCisKKyBwdXNoL3B1bGxpbmcgYWN0aXZlIGJyYW5jaGVzCisKKzIwMTEtMDgtMDMgIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2lwLW1pYi5oOiBSZWVuYWJsZSBJUC1NSUI6OmlwRGVmYXVsdFJvdXRlclRhYmxlCisgICAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IEEgbmV3IGZ1bmN0aW9uOiBuc3NmcGF0Y2hhcHBseQorCisgdGhhdCBhdXRvLXB1bGxzIGdpdCBjb21tYW5kIGxpbmUgaW5mbyBmcm9tIFNGCisKKzIwMTEtMDgtMDIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLWN0eC1nZXQubTJpOiBhZGRlZCB2YXJpYWJsZXMgbmFtZXMgdG8KKworIHRoZSBnZW5lcmF0ZWQgZXJyb3IgbWVzc2FnZXMuCisKKzIwMTEtMDgtMDIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pYjJjLWNvbmYuZC9tZmQtaW50ZXJhY3RpdmUtc2V0dXAubTJjOiBXb3JkaW5nIGNoYW5nZXMgdG8KKworIGhlbHAgZGVzY3JpYmUgY29udGV4dHMgYmV0dGVyCisKKzIwMTEtMDgtMDIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL01ha2VmaWxlLmluLCBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1nZXQtVTY0Lm0yaTogQWRkZWQKKworIHRoZSBtaXNzaW5nIFU2NCBtMmkgZmlsZQorCisyMDExLTA4LTAzICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9pcC1taWIuaDogUmVlbmFibGUgSVAtTUlCOjppcERlZmF1bHRSb3V0ZXJUYWJsZQorICAgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBBIG5ldyBmdW5jdGlvbjogbnNzZnBhdGNoYXBwbHkKKworIHRoYXQgYXV0by1wdWxscyBnaXQgY29tbWFuZCBsaW5lIGluZm8gZnJvbSBTRgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1jdHgtZ2V0Lm0yaTogYWRkZWQgdmFyaWFibGVzIG5hbWVzIHRvCisKKyB0aGUgZ2VuZXJhdGVkIGVycm9yIG1lc3NhZ2VzLgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyYWN0aXZlLXNldHVwLm0yYzogV29yZGluZyBjaGFuZ2VzIHRvCisKKyBoZWxwIGRlc2NyaWJlIGNvbnRleHRzIGJldHRlcgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9NYWtlZmlsZS5pbiwgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtZ2V0LVU2NC5tMmk6IEFkZGVkCisKKyB0aGUgbWlzc2luZyBVNjQgbTJpIGZpbGUKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBBIG5ldyBmdW5jdGlvbjogbnNzZnBhdGNoYXBwbHkKKworIHRoYXQgYXV0by1wdWxscyBnaXQgY29tbWFuZCBsaW5lIGluZm8gZnJvbSBTRgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1jdHgtZ2V0Lm0yaTogYWRkZWQgdmFyaWFibGVzIG5hbWVzIHRvCisKKyB0aGUgZ2VuZXJhdGVkIGVycm9yIG1lc3NhZ2VzLgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyYWN0aXZlLXNldHVwLm0yYzogV29yZGluZyBjaGFuZ2VzIHRvCisKKyBoZWxwIGRlc2NyaWJlIGNvbnRleHRzIGJldHRlcgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9NYWtlZmlsZS5pbiwgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtZ2V0LVU2NC5tMmk6IEFkZGVkCisKKyB0aGUgbWlzc2luZyBVNjQgbTJpIGZpbGUKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBBIG5ldyBmdW5jdGlvbjogbnNzZnBhdGNoYXBwbHkKKworIHRoYXQgYXV0by1wdWxscyBnaXQgY29tbWFuZCBsaW5lIGluZm8gZnJvbSBTRgorCisyMDExLTA3LTE4ICBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KKworICAgKiBhZ2VudC9hZ2VudF90cmFwLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmM6IGFnZW50OiBjaGFuZ2UKKworIHR5cGUgb2Ygc25tcF9lbmFibGVhdXRoZW50cmFwcyB0byBsb25nIFR5cGUgb2Ygc25tcF9lbmFibGVhdXRoZW50cmFwcyB2YXJpYWJsZSBpcyBjaGFuZ2VkIGZyb20gaW50IHRvIGxvbmcuCisgVGhpcyBmaXhlcyB0aGUgYnVnIHdpdGggd3JpdGluZyB0byBzbm1wRW5hYmxlQXV0aGVuVHJhcHMgaWYgc2VydmVyCisgaXMgY29tcGlsZWQgZm9yIDY0Yml0IChzbm1wc2V0IHJlcG9ydHMgd3JvbmcgbGVuZ3RoKS4gVGhpcyBidWcgd2FzCisgaW50cm9kdWNlZCBhIGxvbmcgdGltZSBhZ28gKGJ5IGZhZWVjZDAgY29tbWl0KS4gIEFjdHVhbGx5IHRoaXMgaXMgYSAnbGVzcyBlZmZvcnQnIHR5cGUgb2YgZml4IGJ1dCBJIHdvbmRlciB3aHkgd2UKKyBuZWVkIGEgbG9uZyB0byBzdG9yZSBhbiBJTlRFR0VSIGluIHRoZSBmaXJzdCBwbGFjZT8gU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+IFNpZ25lZC1vZmYtYnk6IFdlcworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLWN0eC1nZXQubTJpOiBhZGRlZCB2YXJpYWJsZXMgbmFtZXMgdG8KKworIHRoZSBnZW5lcmF0ZWQgZXJyb3IgbWVzc2FnZXMuCisKKzIwMTEtMDgtMDIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pYjJjLWNvbmYuZC9tZmQtaW50ZXJhY3RpdmUtc2V0dXAubTJjOiBXb3JkaW5nIGNoYW5nZXMgdG8KKworIGhlbHAgZGVzY3JpYmUgY29udGV4dHMgYmV0dGVyCisKKzIwMTEtMDgtMDIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL01ha2VmaWxlLmluLCBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1nZXQtVTY0Lm0yaTogQWRkZWQKKworIHRoZSBtaXNzaW5nIFU2NCBtMmkgZmlsZQorCisyMDExLTA4LTAzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA2YWQ3ZTI4ZmY5ZTVlNGViYzEzNThlZTM5Y2M5Nzk2YTQ0YTFiZWU3IE1lcmdlOiBmMjgzMmUzCisKKyAxZTE1NGNlIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgV2VkIEF1ZworIDMgMTk6MTU6MjQgMjAxMSArMDIwMAorCisyMDExLTA4LTAzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA2MWIxNzhmMWVlODk1MmFhMDNhYTNiMWJhNTFmNGE2NjU1ZTQ3ZjAxIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFdlZCBBdWcgMyAxODowOTo0NyAyMDExICswMjAwCisKKzIwMTEtMDgtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvdHlwZXMuaDogV2hpdGVzcGFjZS1vbmx5IGNoYW5nZTogZml4IGluZGVudGF0aW9uCisKKyBvZiBhbiAjaW5jbHVkZSBkaXJlY3RpdmUKKworMjAxMS0wOC0wMiAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogcGVybC9OZXRTTk1QLnhzOiBDSEFOR0VTOiBQZXJsOiBSZW1vdmUgZmlsZSBwZXJsL05ldFNOTVAueHMKKworIGJlY2F1c2UgaXQgYnJlYWtzIHRoZSBXaW5kb3dzIGJ1aWxkLiAgVG8gV2VzOiBpZiB5b3UgY2FuIHRlbGwgbWUgaG93IHRvIHJlcHJvZHVjZSB0aGUgcHJvYmxlbSB5b3Ugb2JzZXJ2ZWQKKyBJJ2xsIHRyeSB0byBmaW5kIGEgcG9ydGFibGUgZml4LiAgVGhpcyByZXZlcnRzIGNvbW1pdCBkNTQ4NzFmNTI5MzY3NWM4MDU4ZWNjZTg4ZmVkNWI2NDZjODM2MzIzICgiQWRkZWQKKyBhIGJvZ3VzIGVtcHR5IC54cyBmaWxlIGZvciBidW5kbGluZyBvbiBuZXdlciBwZXJsIHRoYXQgd2FudHMKKyAic29tZXRoaW5nIiIpLgorCisyMDExLTA4LTAyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAwZjQ4OWIxOTlhZGFiNDhiMTYzM2ViY2FmNWZmNWE3YzIyYzRjYjg5IE1lcmdlOiBmNGVhYTAyCisKKyA3MmE1OWJjIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVHVlIEF1ZworIDIgMTA6MTE6NTMgMjAxMSArMDIwMAorCisyMDExLTA4LTAyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA3ZmNjMGI4MDMyZjhkYTViN2JjMzAwNTlhZjBiYTY1NmVhZTcxMDkxIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIE1vbiBBdWcgMSAxNDoxMToyOCAyMDExICswMjAwCisKKzIwMTEtMDgtMDIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXQKKyAgICAgICBhX2FjY2Vzcy5jOiBGaXggYSBjb21waWxlciB3YXJuaW5nIGluCisKKworIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5jCisKKzIwMTEtMDgtMDEgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIC5naXRpZ25vcmU6IC5naXRpZ25vcmU6IEFkZCBmaWxlIG5hbWVzIGFuZCBwYXR0ZXJucyBmb3Igb3V0cHV0CisKKyBmaWxlcyBnZW5lcmF0ZWQgZHVyaW5nIHRoZSBXaW5kb3dzIGJ1aWxkCisKKzIwMTEtMDctMjkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIC5naXRpZ25vcmU6IC5naXRpZ25vcmU6IFNvcnQgYWxwaGFiZXRpY2FsbHkKKworCisyMDExLTA3LTI5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAuZ2l0aWdub3JlOiAuZ2l0aWdub3JlOiBBZGQgYXBwcy9zc2h0b3NubXAKKworCisyMDExLTA4LTAxICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAgLmdpdGlnbm9yZSwgcGVybC9UcmFwUmVjZWl2ZXIvY29uc3QtYy5pbmMsIAorICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvY29uc3QteHMuaW5jOiBSZW1vdmUgdHdvIGdlbmVyYXRlZCBQZXJsIGZpbGVzLgorCisKKzIwMTEtMDgtMDIgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGY0ZWFhMDJkOWIwNzZhNjdkNzI3MmRlN2VlZjhlOWRmYmYxODliYmYgTWVyZ2U6IDQwMTI1ZDgKKworIGFkYWRjYjkgQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUdWUgQXVnIDIgMDA6NTc6NTEgMjAxMSArMDIwMAorCisyMDExLTA4LTAyICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBkaXN0L25zYi1mdW5jdGlvbnM6IHN1cHByZXNzICJvayIgdGVzdCBvdXRwdXQgaW4gbnNiCisKKworMjAxMS0wOC0wMSAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDQwMTI1ZDg1MzljZDg5Zjk1MmZiYzI0NTg4YzVlODFlOWNkODIxZmUgQXV0aG9yOiBKYW4KKworIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIE1vbiBBdWcgMQorIDEzOjU4OjMzIDIwMTEgKzAyMDAKKworMjAxMS0wOC0wMSAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgNWFjZjBkMmNlYjM5Nzc5NjRlZDM5ZjAwMzA3M2JhNjQxMzhjMmViZCBBdXRob3I6IFRob21hcworCisgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBTdW4gSnVsIDMxIDIzOjU3OjQxCisgMjAxMSArMDIwMAorCisyMDExLTA3LTMxICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBhNzcyMmE4MWY5Y2I3YWE4NjcwZTdjMjM4NjAxMzYyYTMxMDg3YWNjIE1lcmdlOiAyNDJlMTc5CisKKyBhZTlhYzZjIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgU3VuIEp1bAorIDMxIDA5OjExOjQ1IDIwMTEgKzAyMDAKKworMjAxMS0wNy0zMSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogYXBwcy9zc2h0b3NubXAuYzogRml4IGFuIGluY29ycmVjdCBzb3VyY2UgY29kZSBjb21tZW50OiB0aGVyZSBpcworCisgbm8gcmVxdWlyZW1lbnQgaW4gdGhlIEFOU0kgQyBzdGFuZGFyZCB0aGF0IHN0YWNrIHZhcmlhYmxlcyBzaG91bGQgYmUKKyBpbml0aWFsaXplZCB0byB6ZXJvLgorCisyMDExLTA3LTMxICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCAyNDJlMTc5N2IyNjk0YTA2ODk4NTZhZTM2ZDA1ZDM0MTNhYWY4ZDc3IEF1dGhvcjogVGhvbWFzCisKKyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFN1biBKdWwgMzEgMDE6NDQ6MDkKKyAyMDExICswMjAwCisKKzIwMTEtMDctMzAgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc3lzdGVtLmM6IENIQU5HRVM6IGJ1aWxkaW5nOiBidWlsZCBmaXggZm9yIHN5c3RlbXMgbGFja2luZworCisgZ2V0YWRkcmluZm8oKSBhbmQgRUFJX0ZBSUwgKGUuZy4gSFAtVVggMTAuMjAvMTEuMDApCisKKzIwMTEtMDctMzAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDE4ZGY3NTlmMTliOTc1YzQ0OWQwMTBiYjBhMTYyMTE5YmI2ODM2MGQgTWVyZ2U6IDU0YTQ0Y2IKKworIDcwNTA3MTggQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBTYXQgSnVsCisgMzAgMTY6Mzk6MTMgMjAxMSArMDIwMAorCisyMDExLTA3LTMwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA4MmQ3M2ZiMTFiZTNhZTMxZjM5YzlkNjE4ZDUzODhkYzliMTAwNmQ3IEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIEZyaSBKdWwgMjkgMjA6NTE6MjcgMjAxMSArMDIwMAorCisyMDExLTA3LTMwICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgY29uZmlndXJlLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiBhdXRvcmVjb25mCisKKworMjAxMS0wNy0zMCAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGNvbmZpZ3VyZSwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogYXV0b3JlY29uZgorCisKKzIwMTEtMDctMzAgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDEwOWY2Njk0ZDc4OGY0OGViZDlmYzBhMWU5MGM0NWFiYzM3YmVhMjAgQXV0aG9yOiBUaG9tYXMKKworIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgU2F0IEp1bCAzMCAxNDoyMjoxOQorIDIwMTEgKzAyMDAKKworMjAxMS0wNy0zMCAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgN2Q4MTAwZWVkNDU5YTFmZjFhMjBjMDY3MzY0ZmE2Y2I0NzQ5MTMwOSBNZXJnZTogMTE2YzI0ZgorCisgOWU0N2FjNCBBdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFNhdCBKdWwgMzAgMDA6MjA6MDEgMjAxMSArMDIwMAorCisyMDExLTA3LTMwICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBkaXN0L25zYi1mdW5jdGlvbnMsIGRpc3QvbnNiLW5pZ2h0bHksIGRpc3QvbnNiLXBhY2thZ2U6IG1pbm9yIG5zYgorCisgZml4ZXMvZW5oYW5jZW1lbnRzIGZyb20gbXkgb2xkIHN2biB0cmVlCisKKzIwMTEtMDctMjkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDExNmMyNGYwZjdmYjNmOTliYTY0NjczMGY2MWM1NmQxYWUyM2JhNDEgTWVyZ2U6IDk4MmZiN2YKKworIDRmYzBiOGIgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBGcmkgSnVsCisgMjkgMTE6MzE6MjAgMjAxMSArMDIwMAorCisyMDExLTA3LTI5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBjNDgxNzNjMDZhOWVhYWRiZjgxZTZiNDk2MmQ1NWVmMGE1NGRiMjUxIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIEZyaSBKdWwgMjkgMTA6Mjc6MzkgMjAxMSArMDIwMAorCisyMDExLTA3LTI5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBjb25maWd1cmUsIGx0bWFpbi5zaCwgbTQvbGlidG9vbC5tNDogUmVydW4gYXV0b3JlY29uZgorCisKKzIwMTEtMDctMjkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIC5naXRpZ25vcmU6IC5naXRpZ25vcmU6IFNvcnQgYWxwaGFiZXRpY2FsbHkKKworCisyMDExLTA3LTI5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAuZ2l0aWdub3JlOiAuZ2l0aWdub3JlOiBBZGQgYXBwcy9zc2h0b3NubXAKKworCisyMDExLTA3LTI5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocmhfc3RvcmFnZS5jOiBGaXggdHdvIGZpbGVuYW1lcyBpbiBob3N0IG1pYgorCisgc291cmNlIGNvZGUgY29tbWVudHMuCisKKzIwMTEtMDctMjggIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA5ODJmYjdmZDhiYWIyNWM0MzIyYWE2MmM1MDQzNzAzNmNlMjk2ZTNlIE1lcmdlOiAxZWRhNjc1CisKKyAzNDU4MTI4IEF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFRodSBKdWwgMjggMTY6MjQ6MDMgMjAxMSArMDIwMAorCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jOiBGaXggcG90ZW50aWFsCisKKyBzaWdzZWd2IHdoZW4gYW4gaWZUYWJsZSBlbnRyeSBpcyByZW1vdmVkIGFzIHJlc3VsdCBvZiBib3RoCisgaW50ZXJmYWNlX3JlcGxhY2Vfb2xkIGFuZCBpbnRlcmZhY2VfZmFkZW91dCBhdCB0aGUgc2FtZSB0aW1lLgorCisyMDExLTA3LTI4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBhcHBzL3NzaHRvc25tcC5jOiBNYWtlIGFwcHMvc3NodG9zbm1wLmMgYnVpbGQgYWdhaW4gKHdhcyBicm9rZW4gYnkKKworIGNvbW1pdCA2MTIyNDdjZGYxNGMxZTc0NWMzODRjZWZlMWYzZmRlM2U0NDViMzQ3IHRoYXQgY2hhbmdlZAorIE1TR19OT1NJR05BTCBpbnRvIE5FVFNOTVBfTk9TSUdOQUwpCisKKzIwMTEtMDctMjggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDFlZGE2NzUzYjdmZTdkM2IzZjIxN2MwOTI1NGVjMDJkMGVlMWQwY2UgTWVyZ2U6IGRiOGI4NjAKKworIGEyZjllY2UgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUaHUgSnVsCisgMjggMTU6MzI6MjggMjAxMSArMDIwMAorCisyMDExLTA3LTI4ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBjb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczE6IAorCisgQ0hBTkdFUzogc25tcGQ6IFJlc3RvcmUgc3RvcmFnZSB0YWJsZXMgb24gTGludXgKKworMjAxMS0wNy0yOCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9zbm1wZC5jb25mLjUuZGVmOiBEb2N1bWVudCBpbnRlcmZhY2VfcmVwbGFjZV9vbGQgb3B0aW9uLgorCisKKzIwMTEtMDctMjggIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmM6IENIQU5HRVM6CisKKyBzbm1wZDogYWRkZWQgJ2ludGVyZmFjZV9yZXBsYWNlX29sZCcgb3B0aW9uIHRvIHJlbW92ZSBvbGQgZW50cmllcyBpbgorIGlmVGFibGUgd2hlbiBhbiBpbnRlcmZhY2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIGFscmVhZHkgZXhpc2luZyBvbmUKKyBhcHBlYXJzLiAgRS5nLiByZW1vdmUgb2xkIHBwcDAgaW50ZXJmYWNlIHdoZW4gbmV3IHBwcDAgc2hvd3MgdXAuCisKKzIwMTEtMDctMjggIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBtYW4vc25tcGQuY29uZi41LmRlZjogRG9jdW1lbnQgdGhlIGludGVyZmFjZV9mYWRlb3V0IG9wdGlvbi4KKworCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jOiBBbGxvdyBpZlRhYmxlCisKKyBlbnRyaWVzIHRvIGJlIGRlbGV0ZWQgaW1tZWRpYXRlbHkgd2hlbiBhcHByb3ByaWF0ZSBpbnRlcmZhY2UKKyBkaXNhcHBlYXJzIChpLmUuIGludGVyZmFjZV9mYWRlb3V0ID0gMCB3b3JrcyBhcyBleHBlY3RlZCkuCisKKzIwMTEtMDctMjggIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmM6IENIQU5HRVM6CisKKyBzbm1wZDogYWRkZWQgJ2ludGVyZmFjZV9mYWRlb3V0JyBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBzZXQKKyBsaWZldGltZSBvZiBpZlRhYmxlIGVudHJpZXMgb2YgcmVtb3ZlZCBpbnRlcmZhY2VzLiAgUHJldmlvdXMgbGlmZXRpbWUgd2FzIGhhcmRjb2RlZCA1IG1pbnV0ZXMsIG5vdyBpdCdzIGNvbmZpZ3VyYWJsZS4KKworMjAxMS0wNy0yOCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGQ2MmEwZWI5MDcwYjRkOGQ5ZmUyYmNmZGI0ZDUzZDM3ZWY4MTRmOWIgQXV0aG9yOiBKYW4KKworIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFRodSBKdWwgMjgKKyAxNDo0OTowOCAyMDExICswMjAwCisKKzIwMTEtMDctMjggIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmM6IENIQU5HRVM6CisKKyBzbm1wZDogYWRkZWQgJ2ludGVyZmFjZV9yZXBsYWNlX29sZCcgb3B0aW9uIHRvIHJlbW92ZSBvbGQgZW50cmllcyBpbgorIGlmVGFibGUgd2hlbiBhbiBpbnRlcmZhY2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIGFscmVhZHkgZXhpc2luZyBvbmUKKyBhcHBlYXJzLiAgRS5nLiByZW1vdmUgb2xkIHBwcDAgaW50ZXJmYWNlIHdoZW4gbmV3IHBwcDAgc2hvd3MgdXAuCisKKzIwMTEtMDctMjggIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBtYW4vc25tcGQuY29uZi41LmRlZjogRG9jdW1lbnQgdGhlIGludGVyZmFjZV9mYWRlb3V0IG9wdGlvbi4KKworCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jOiBBbGxvdyBpZlRhYmxlCisKKyBlbnRyaWVzIHRvIGJlIGRlbGV0ZWQgaW1tZWRpYXRlbHkgd2hlbiBhcHByb3ByaWF0ZSBpbnRlcmZhY2UKKyBkaXNhcHBlYXJzIChpLmUuIGludGVyZmFjZV9mYWRlb3V0ID0gMCB3b3JrcyBhcyBleHBlY3RlZCkuCisKKzIwMTEtMDctMjggIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmM6IENIQU5HRVM6CisKKyBzbm1wZDogYWRkZWQgJ2ludGVyZmFjZV9mYWRlb3V0JyBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBzZXQKKyBsaWZldGltZSBvZiBpZlRhYmxlIGVudHJpZXMgb2YgcmVtb3ZlZCBpbnRlcmZhY2VzLiAgUHJldmlvdXMgbGlmZXRpbWUgd2FzIGhhcmRjb2RlZCA1IG1pbnV0ZXMsIG5vdyBpdCdzIGNvbmZpZ3VyYWJsZS4KKworMjAxMS0wNy0yOCAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFwcHMvc3NodG9zbm1wLmMsIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaCwgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYzogQ0hBTkdFUzogYnVpbGRpbmc6IGJ1aWxkCisgICAgICBmaXgKKworIGZvciBzeXN0ZW1zIGxhY2tpbmcgTVNHX0RPTlRXQUlUCisKKzIwMTEtMDctMjcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3RjcC5jOiBDSEFOR0VTOiBzbm1wZDogTWFrZQorCisgVENQLU1JQjo6dGNwQ3VyckVzdGFiIHdvcmsgYWdhaW4uIFdhcyBicm9rZW4gaW4gNS43IGJ5IHRoZQorIGludHJvZHVjdGlvbiBvZiB0aGUgImZlYXR1cmVzIiBmZWF0dXJlLgorCisyMDExLTA3LTI3ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgZmI4ODA3NGZiYmMyNjhjN2YwNTA5NDkxNTM1YWVjNWZlY2IwNTY4NCBNZXJnZTogYTc0M2FlNQorCisgMzgyMTI3MyBBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBXZWQgSnVsIDI3IDE0OjQ3OjI1IDIwMTEgKzAyMDAKKworMjAxMS0wNy0yNyAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDMxZmEwN2NkOWZmZGU0NmQ0MWQyYjU4MzhjM2ZjNGQwMTU0OGJmYjUgQXV0aG9yOiBKYW4KKworIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFdlZCBKdWwgMjcKKyAxNDo0NTo0NyAyMDExICswMjAwCisKKzIwMTEtMDctMjcgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9zbm1wZC5jOiBDSEFOR0VTOiBzbm1wZDogcnVuIHNpZ25hbCBoYW5kbGVycyB3aGVuIHNlbGVjdCgpCisKKyBpcyBpbnRlcnJ1cHRlZC4gIFRoaXMgYmVoYXZpb3IgaXMgaW5kaWNhdGVkIGluIGNvbW1lbnQgb24gbGluZSAxMjQ0LCBidXQgaXQgd2FzIG5vdAorIGFjdHVhbGx5IGRvbmUuCisKKzIwMTEtMDctMjYgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDJlOTQ2NmQ3ZjU5ZDY1ZDA1MDI3NzczNWU0ZWQ5ZDMwNzE5ZmY3NTIgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVHVlIEp1bCAyNiAxMzoxMDowNCAyMDExICswMjAwCisKKzIwMTEtMDctMjYgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDc3MDgyOTY3NjBlYWY1YTgwZDg1NDA3NDZjOWMyNDk4MjZmZDFiZmUgTWVyZ2U6IGVhMTFlNWUKKworIGNkNmUzODIgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUdWUgSnVsCisgMjYgMTY6MjE6NDEgMjAxMSArMDIwMAorCisyMDExLTA3LTI2ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmM6IENsYXJpZnkgYW4gSVB2NiBzb3VyY2UgY29kZSBjb21tZW50CisKKworMjAxMS0wNy0yNiAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogYWdlbnQvYWdlbnRfaGFuZGxlci5jLCBtYW4vbmV0c25tcF9oYW5kbGVyLjM6IFNwZWxsaW5nIGZpeDoKKworIGRlZmluZWR5IC0+IGRlZmluZWQKKworMjAxMS0wNy0yNiAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jLCBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zOiBTcGVsbGluZworCisgZml4OiBhbGV2aWF0ZSAtPiBhbGxldmlhdGUKKworMjAxMS0wNy0yNiAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGRkMmM0NzEzMzQ5M2Q1YTAwZGU2YjNjZGJjZmFjN2U5ZDQ0YjZmZmUgTWVyZ2U6IGY5Y2NiYzcKKworIGVhMTFlNWUgQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVHVlIEp1bCAyNiAxNDoyNToyOCAyMDExICswMjAwCisKKzIwMTEtMDctMjYgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBjNWE4NDY0YzQyYTk0YzI1MGVlMmRmYTJhNDczMTA5YTczNDIwM2Q4IEF1dGhvcjogSmFuCisKKyBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBUdWUgSnVsIDI2CisgMTQ6MjQ6NTUgMjAxMSArMDIwMAorCisyMDExLTA3LTI1ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgZjljY2JjNzcyNjY2MTM0ZDFkMTc4YjUwNWFmOWRkY2RkOWVkNDI0NCBBdXRob3I6IEphbgorCisgU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgTW9uIEp1bCAyNQorIDE1OjAyOjE1IDIwMTEgKzAyMDAKKworMjAxMS0wNy0yMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgYjBjMGEzNTVkNWY2MDFhMTFiZTQ5MTRmYmY3MTM3MTZhYmQzMGEyOSBBdXRob3I6IFdlcworCisgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBUdWUgSnVsIDE5CisgMTg6MzY6MTEgMjAxMSAtMDcwMAorCisyMDExLTA3LTIwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBjMTRmYzM4NjE0YmFmMTBkNTE3MTM2ZjA0ODA5MDdiN2YwM2Q4ZDc0IEF1dGhvcjogV2VzCisKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFdlZCBKdWwgMjAKKyAxMzo0NDo1OSAyMDExIC0wNzAwCisKKzIwMTEtMDctMTkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3Rlc3RoYW5kbGVyLmM6IHJlbW92ZSBicm9rZW4gd2hpdGVzcGFjZSBsaW5lcyB0aGF0CisKKyBsZWFkcyB0byByZWFkaW5nIGNvbmZ1c2lvbgorCisyMDExLTA3LTIwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBlYmRkMjE2YzA3NGJmNDFjZDNhMDg0YmQxNDY4OWNmMDFjODg3YjMxIEF1dGhvcjogV2VzCisKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFR1ZSBKdWwgMTkKKyAxODozNjoxMSAyMDExIC0wNzAwCisKKzIwMTEtMDctMTkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIC5naXRpZ25vcmU6IHVwZGF0ZWQgZ2l0aWdub3JlIHRvIGlnbm9yZSBhIG51bWJlciBvZiBhdXRvLWdlbmVyYXRlZAorCisgZmlsZXMKKworMjAxMS0wNy0xOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdGVzdGhhbmRsZXIuYzogcmVtb3ZlIGJyb2tlbiB3aGl0ZXNwYWNlIGxpbmVzIHRoYXQKKworIGxlYWRzIHRvIHJlYWRpbmcgY29uZnVzaW9uCisKKzIwMTEtMDctMTkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGRmNWY3MDA1NWNmOWJlMzNmMDVmYjUwYWJlMmY1YTgxZWFjMDkyYWQgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVHVlIEp1bCAxOSAxMTowNzoxOSAyMDExICswMjAwCisKKzIwMTEtMDctMTkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGY1OTZmMTgyNDJkY2RmZDZjZjQ5Yzg4ZGExZDgzNmMxNmUyNjBjYWMgTWVyZ2U6IDBmMzA5YjQKKworIDcwZGVlNGIgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUdWUgSnVsCisgMTkgMTE6MzM6MjggMjAxMSArMDIwMAorCisyMDExLTA3LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAgYWdlbnQvYWdlbnRfdHJhcC5jLCBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliXzVfNS5jOiBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6CisgICAgICAzMzY5NjgwOgorCisgZnJvbSBJbHlhIFlhbm9rOiBjaGFuZ2Ugc25tcF9lbmFibGVhdXRoZW50cmFwcyBmcm9tIGludCB0byBsb25nIHN1Y2gKKyB0aGF0IG1vZGlmeWluZyB0aGUgY29ycmVzcG9uZGluZyBNSUIgb2JqZWN0IGRvZXMgbm90IG92ZXJ3cml0ZQorIG1lbW9yeSBpbiA2NC1iaXQgYnVpbGRzLgorCisyMDExLTA3LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYzogQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAzMzcwNjQ1OgorCisgZnJvbSBCaWxsIEZlbm5lcjogRml4IEFnZW50WCBzdWJhZ2VudCBmb3VyIGJ5dGUgbGVhaworCisyMDExLTA3LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBUZXN0IGhhcm5lc3M6IGRvCisKKyBub3QgaW52b2tlIElTUlVOTklORygpIG9uIE1pbkdXLgorCisyMDExLTA3LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBUZXN0IGhhcm5lc3M6CisKKyBjbGVhbnVwIC0gcmVtb3ZlIGNvZGUgdGhhdCBiZWNhbWUgc3VwZXJmbHVvdXMuCisKKzIwMTEtMDctMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IE1pbkdXOiBEbyBub3QKKworIGFzc3VtZSB0aGF0IGtpbGwuZXhlIHJlcG9ydHMgdmlhIGl0cyBleGl0IHN0YXR1cyB3aGV0aGVyIHRoZQorIHNpZ25hbGxlZCBwcm9jZXNzIHN0aWxsIGV4aXN0cy4KKworMjAxMS0wNy0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDogQ0hBTkdFUzogdGVzdGluZzoKKworIFJlbW92ZSB0aGUgZnVuY3Rpb24gV0FJVE9SRElFKCkgZnJvbSBzaW1wbGVfZXZhbF90b29scy5zaCBzaW5jZSBpdAorIGlzIG5ldmVyIGludm9rZWQuCisKKzIwMTEtMDctMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IENIQU5HRVM6IHRlc3Rpbmc6CisKKyBTaW1wbGlmeSBXQUlURk9SKCkgaW4gc2ltcGxlX2V2YWxfdG9vbHMuc2guIFRoZSBjb2RlIHRoYXQgaGFuZGxlZAorIGludm9jYXRpb24gb2YgV0FJVEZPUigpIHdpdGggemVybyBvciBvbmUgYXJndW1lbnRzIGhhcyBiZWVuIGRyb3BwZWQKKyBzaW5jZSBXQUlURk9SKCkgaXMgYWx3YXlzIGludm9rZWQgd2l0aCB0d28gYXJndW1lbnRzLgorCisyMDExLTA3LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBUZXN0IGhhcm5lc3M6CisKKyBtaW5vciBzaW1wbGlmaWNhdGlvbi4KKworMjAxMS0wNy0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU5dHJhcGR0cmFwaGFuZGxlX3NpbXBsZTogQ0hBTkdFUzoKKworIHRlc3Rpbmc6IFNraXAgdGVzdCA1OSBpZiBTSUdIVVAgaXMgbm90IHN1cHBvcnRlZC4gTWFrZXMgdGVzdCA1OSBwYXNzCisgb24gTWluR1cuCisKKzIwMTEtMDctMDYgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IE1pbkdXIGZpeAorCisKKzIwMTEtMDctMDYgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IFRlc3QgZnJhbWV3b3JrCisKKyByZWZhY3RvcmluZzogSW50cm9kdWNlIFdBSVRGT1JOT1RDT05EKCkuCisKKzIwMTEtMDctMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IENIQU5HRVM6IHRlc3Rpbmc6CisKKyBNYWtlIFNUT1BQUk9HIHNlbmQgU0lHVEVSTSByZXBlYXRlZGx5LiBUaGlzIGZpeGVzIGEgcmFjZSB3aGVyZQorIFNJR1RFUk0gY291bGQgYmUgc2VudCBiZWZvcmUgdGhlIFNJR1RFUk0gc2lnbmFsIGhhbmRsZXIgd2FzIHNldCB1cCwKKyBlc3BlY2lhbGx5IHdoZW4gcnVubmluZyB0aGUgcmVncmVzc2lvbiB0ZXN0cyB1bmRlciBWYWxncmluZC4KKyBDSEFOR0VTOiB0ZXN0aW5nOiBNYWtlIHRoZSBTTk1QX1ZFUkJPU0U9MSBvdXRwdXQgZXZlbiBtb3JlIHZlcmJvc2UuCisKKzIwMTEtMDctMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IFRlc3QgaGFybmVzcworCisgcmVmYWN0b3Jpbmc6IGludHJvZHVjZSBFQ0hPU0VORFNJR1RFUk0oKSBhbmQgRUNIT1NFTkRTSUdLSUxMKCkKKworMjAxMS0wNy0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDogRml4IGEgYnVnIGluCisKKyB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoIHRoYXQgd2FzIGludHJvZHVjZWQKKyBpbiBjb21taXQgOTM4ZDc1Yy4KKworMjAxMS0wNy0wMSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogLmdpdGlnbm9yZTogLmdpdGlnbm9yZTogSWdub3JlICouZXhlIGZpbGVzIGdlbmVyYXRlZCBieSB0aGUgV2luMzIKKworIGJ1aWxkCisKKzIwMTEtMDctMDQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IENIQU5HRVM6IHRlc3Rpbmc6CisKKyBUZXN0IG9ubHkgb25jZSBkdXJpbmcgYSB0ZXN0IHdoZXRoZXIgdGhlIHNoZWxsIHN1cHBvcnRzIHN1Yi1zZWNvbmQKKyBzbGVlcGluZyBpbnN0ZWFkIG9mIHJlcGVhdGVkbHkuCisKKzIwMTEtMDctMDQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX3J1bjogQ0hBTkdFUzogdGVzdGluZzogQ2hhbmdlZAorCisgZGVmYXVsdCB0aW1lb3V0IGZyb20gMXMgdG8gMTBzIHdoZW4gdGhlIHJlZ3Jlc3Npb24gdGVzdHMgYXJlIHJ1bgorIHVuZGVyIFZhbGdyaW5kCisKKzIwMTEtMDctMDQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IENIQU5HRVM6IHRlc3Rpbmc6CisKKyBBZnRlciBoYXZpbmcgc2VudCBTSUdURVJNIHRvIHNubXBkIG9yIHNubXB0cmFwZCwgd2FpdCB1bnRpbCB0aGUKKyBwcm9jZXNzIGhhcyBzdG9wcGVkIGJlZm9yZSBzZW5kaW5nIFNJR0tJTEwuIFRoaXMgcmFjZSBjb25kaXRpb24gd2FzCisgaGl0IG1vc3QgZWFzaWx5IHdoZW4gcnVubmluZyB0aGUgcmVncmVzc2lvbiB0ZXN0cyB1bmRlciBWYWxncmluZC4KKyBDSEFOR0VTOiB0ZXN0aW5nOiBDaGVjayBQSUQgZmlsZSBleGlzdGVuY2UgYWZ0ZXIgaGF2aW5nIHJlYWQgaXQKKyBpbnN0ZWFkIG9mIGJlZm9yZS4gVGhpcyBmaXhlcyB0aGUgcmFjZSBjb25kaXRpb24gd2hlcmUgdGhlIFBJRCBmaWxlCisgZGlzYXBwZWFyZWQgYWZ0ZXIgdGhlIGV4aXN0ZW5jZSBjaGVjayBhbmQgYmVmb3JlIGl0IHdhcyByZWFkLgorCisyMDExLTA2LTE3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYzogRml4IGEgYnVnIGluIGEgZGVidWcgc3RhdGVtZW50CisKKyBpbnRyb2R1Y2VkIGJ5IHBhdGNoIDMzMTAyNTAgLyByMjA0OTQ6IHVzZSAlbGQgdG8gcHJpbnQgYSB2YWx1ZSBvZgorIHR5cGUgb2lkIGluc3RlYWQgb2YgJWQuICBUaGlzIHBhdGNoIGlzIGEgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyB0byBWNS42IFNWTiBwYXRjaGVzOiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNTExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA1MTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDctMTkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDBmMzA5YjQ5M2MyMWQzYzY5MTQ0ODc1MTRiNDE1NjA3NTRmZmNkZjkgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVHVlIEp1bCAxOSAwODozNzo1MCAyMDExICswMjAwCisKKzIwMTEtMDctMTkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDFiNzQ1NGJjMjgxNTY4NDcwYTEzMDA0NzZkMmVkYjRmNDExZTYwMjkgTWVyZ2U6IDhkOWRjYzgKKworIDY5MGVhN2QgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUdWUgSnVsCisgMTkgMDg6MzE6MjggMjAxMSArMDIwMAorCisyMDExLTA3LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBhcHBzL3NubXB0cmFwZC5jOiBDSEFOR0VTOiBzbm1wdHJhcGQ6IEFkZCBtaXNzaW5nIG5ld2xpbmUKKworIGNoYXJhY3RlciBpbiBhIGxvZyBtZXNzYWdlCisKKzIwMTEtMDctMTkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGFwcHMvc25tcHRyYXBkLmM6IENIQU5HRVM6IHNubXB0cmFwZDogSW52b2tlIHNodXRkb3duX3BlcmwoKSB3aGVuCisKKyBzaHV0dGluZyBkb3duCisKKzIwMTEtMDctMTkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYzogU3BlbGxpbmcgZml4OiBicmFua2V0IC0+IGJyYWNrZXQKKworCisyMDExLTA3LTE3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBjb25maWd1cmUsIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46IFJ1biBhdXRvcmVjb25mLgorCisgRml4ZXMgYnVpbGQgYnJlYWthZ2UgY2F1c2VkIGJ5IHBhdGNoCisgZDU4OGVjODUzYmQwNTMxZjIxMmZjYmY1MWI5NjJiOTZjNjgyOGI1OSAoUlBNIDQuOSBzdXBwb3J0KQorCisyMDExLTA3LTE3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBkNjE3ZDg0ZjgzZmE2OWVkOWZhOWY5OGVmYzRhZmFmODgwZDEyMWYyIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFRodSBKdWwgMTQgMTY6NDM6NDcgMjAxMSArMDIwMAorCisyMDExLTA3LTE0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmM6IENIQU5HRVM6IHNubXBsaWI6IE1ha2UKKworIG5ldHNubXBfaXB2Nl9mbXRhZGRyKCkgc2hvdyB0aGUgSVB2NiBzY29wZSBJRAorCisyMDExLTA3LTE3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5jLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiBDSEFOR0VTOiBXaW4zMjogQWRkIHN1cHBvcnQKKyAgICAgIGZvcgorCisgSVB2NiBhZGRyZXNzIHNjb3BlIElECisKKzIwMTEtMDctMTcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGNvbmZpZ3VyZSwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogUnVuIGF1dG9yZWNvbmYKKworCisyMDExLTA3LTE3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBhNTY3MjFhM2U3NzU0ZTM4OWRhYTdlOGEzZDU3OTI4OTllZGM5ZGUzIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFRodSBKdWwgMTQgMTY6MTg6MzIgMjAxMSArMDIwMAorCisyMDExLTA3LTE1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA4NDRkNGNlODY3YmYzYWJlN2I3NTM2YzVkYmZiYTQwMTkzN2E4ZDRhIE1lcmdlOiBlZWQwMTk4CisKKyA2MTAzNmE4IEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgRnJpIEp1bCAxNSAxNTozMzoxMCAyMDExIC0wNzAwCisKKzIwMTEtMDctMTUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDg1MWJjZjUzZmNkMTNjZGYwYmE5ZjEyZTVkNjAzZTczZjhiYjk2MTEgQXV0aG9yOiBXZXMKKworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgRnJpIEp1bCAxNQorIDE1OjMyOjQ5IDIwMTEgLTA3MDAKKworMjAxMS0wNy0xNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmM6IGZpeCBhIHR5cG8KKworCisyMDExLTA3LTEzICBSb2JlcnQgU3RvcnkgPHJzdG9yeUBsb2NhbGhvc3Q+CisKKyAgICogc25tcGxpYi9wYXJzZS5jOiBDSEFOR0VTOiBzbm1wbGliOiAgdHdlYWsgcGF0Y2ggMzA0NDg4OCB0byByZXN0b3JlCisKKyBwcm9wZXIgbm9uLWVycm9yIHJldHVybiBkdXJpbmcgbWliIGxvYWRpbmcKKworMjAxMS0wNy0xMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBhZGRlZCA1LjcgcGF0Y2hlcyB0byB0aGUgYnJhbmNoIGxpc3QgYW5kIGZpeCB0aGUgcmVsZWFzZSBmaWxlCisKKworMjAxMS0wNy0xMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBhZGRlZCA1LjcgcGF0Y2hlcyB0byB0aGUgYnJhbmNoIGxpc3QKKworCisyMDExLTA3LTExICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBkaXN0L3JlbGVhc2U6IGEgY29weSBvZiB0aGUgcmVsZWFzZSBmaWxlIGFwcGxpZWQgdG8gdGhlIG9sZGVyCisKKyBicmFuY2hlcworCisyMDExLTA3LTExICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGFkZGVkIDUuNyBwYXRjaGVzCisKKworMjAxMS0wNy0xMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgYzQzMTIzMWU4ZjBhMzlkMTk1MGJjNzJjMzJlMzQwMmY5MGZhODAzMCBNZXJnZTogNTZmZWU0MAorCisgYTJhYzI0ZCBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIE1vbiBKdWwgMTEgMTk6MzM6MTcgMjAxMSAtMDcwMAorCisyMDExLTA3LTExICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGFkZGVkIGEgY29weSBvZiB0aGUKKworIHNoZWxsLWZ1bmN0aW9ucyB0byB0aGUgb2xkZXIgYnJhbmNoCisKKzIwMTEtMDctMTEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGRpc3QvcmVsZWFzZTogYSBjb3B5IG9mIHRoZSByZWxlYXNlIGZpbGUgYXBwbGllZCB0byB0aGUgb2xkZXIKKworIGJyYW5jaGVzCisKKzIwMTEtMDctMDEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIENoYW5nZUxvZzogdmVyc2lvbiB1cGRhdGUgZm9yIDUuNworCisKKzIwMTEtMDctMDEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsIAorICAgICAgZGlzdC9uZXQtc25tcC5zcGVjOiBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNworCisKKzIwMTEtMDctMDEgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUTFNCYXNlRG9tYWluLmgsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY0QmFzZURvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5jOiBSZXZlcnQgImZpeCBkdGxzdWRwCisKKyB0cmFuc3BvcnQgYWRkcmVzcyBmb3JtYXQgZnVuY3Rpb24iIFRoaXMgcmV2ZXJ0cyBjb21taXQgMmFiM2E2ZTZmMmZjYzFmZjNlNWYwZmI1ZGM1ZDA1ZTQ5ODgyMGQ4OS4gICAtIGZvciBzb21lIHJlYXNvbiBJIHNhdyAncmMnIGFuZCBteSBicmFpbiBpbnRlcnByZXRlZCBpdCBhcyAgICAncHJlLXJlbGVhc2UnLiBXaGF0IGNhbiBJIHNheSwgaXQgd2FzIGxhdGUuIDotLworCisyMDExLTA3LTAxICBSb2JlcnQgU3RvcnkgPHJzdG9yeUBsb2NhbGhvc3Q+CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVExTQmFzZURvbWFpbi5oLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4uYzogZml4IGR0bHN1ZHAgdHJhbnNwb3J0CisKKyBhZGRyZXNzIGZvcm1hdCBmdW5jdGlvbiAgLSB1cGRhdGUgaXB2NCBmbXRhZGRyIHRvIGhhbmRsZSBzb2NrYWRkciBhbmQgdG8gY2hlY2sgICAgc2l6ZSBiZWZvcmUgYXNzdW1pbmcgZGF0YSBpcyBhZGRyIHBhaXIgIC0gbW92ZSBkdGxzdWRwIGZ1bmN0aW9ucyB0byBleHRyYWN0IGFkZHIocykgdG8gdGxzYmFzZQorCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA1NmZlZTQwMTE4YjIxYTlmNGRjMDJhNmYyNDdmN2RhNmZjNjlhMDA1IE1lcmdlOiBkMzkxOTRiCisKKyA5ZmY0NzE0IEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgV2VkIEp1biAyOSAyMzoxODoxMyAyMDExIC0wNzAwCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGRpc3QvbWFrZXJlbGVhc2UueG1sOiBmaXggdGFnIHB1c2hpbmcKKworCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDogZml4IHRhZyBwdXNoaW5nCisKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6IG1pc2MgcHVibGljYXRpb24gZml4ZXMgZm91bmQgd2hpbGUKKworIHB1Ymxpc2hpbmcKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nOiB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS43LnJjMworCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsIAorICAgICAgZGlzdC9uZXQtc25tcC5zcGVjOiBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNy5yYzMKKworCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDogcmVtb3ZlIHVubmVlZGVkIGNvbW1lbnQKKworCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDogbWlzYyBwdWJsaWNhdGlvbiBmaXhlcyBmb3VuZCB3aGlsZQorCisgcHVibGlzaGluZworCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiByYW4gYXV0b2hlYWRlciB0byBhZGQgdGhlCisKKyBtaXNzaW5nIHRlbXBsYXRlIGlmZGVmcworCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDaGFuZ2VMb2c6IHZlcnNpb24gdXBkYXRlIGZvciA1LjcucmMyCisKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWM6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LnJjMgorCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDY0YjZjNjhhODQ5MzBhYjAxZTNlMTQ2YzQ5ZjNhYjUzODJlZmRhM2UgTWVyZ2U6IDEyN2VlYzIKKworIGQzOTE5NGIgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBXZWQgSnVuIDI5IDE3OjEyOjQ2IDIwMTEgLTA3MDAKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgZGY5Y2Y5YTFlMjkzZDA1YTI0Nzg2Njk0ZjY4YzA1YTJiZTEzYTliMyBBdXRob3I6IFdlcworCisgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBXZWQgSnVuIDI5CisgMTY6MzQ6MTEgMjAxMSAtMDcwMAorCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDogdXNlIGdpdDJjbCB0byBnZW5lcmF0ZSB0aGUgQ2hhbmdlTG9nIGZpbGU7CisKKyBuZWVkcyBtdWNoIG1vcmUgd29yay4KKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6IHVzZSB0aGUgbmV3IHJ1bi1hdXRvY29uZiBzY3JpcHQKKworCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBkaXN0L3J1bi1hdXRvY29uZjogQSBzY3JpcHQgdG8gaW52b2tlIHRoZSBjb3JyZWN0IHZlcnNpb24gb2YgdGhlCisKKyBhdXRvY29uZiB0b29sCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGRpc3QvbWFrZXJlbGVhc2UueG1sOiByZW1haW5pbmcgY29tbWFuZCBsaW5lIGNoYW5nZXMgZm9yIHN2biAtPgorCisgZ2l0CisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGRpc3QvbWFrZXJlbGVhc2UueG1sOiBtYWtlIHRoZSBicmFuY2ggZWNobyBvdXRwdXQgYW5kIHN2biB1cGRhdGUKKworIGNvbnZlcnRlZCB0byBnaXQgZXF1aXZhbGVudHMKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6IHB1bGwgdGhlIGJyYW5jaCBpbmZvIGZyb20gZ2l0CisKKworMjAxMS0wNi0yOSAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9ycG0uYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3aW5zdC5jLCBjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVycywgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczE6IFR3ZWFrIFJQTSBoYW5kbGluZyB0byB3b3JrIHdpdGgKKyAgICAgIGxpYnJhcnkKKworIHZlcnNpb24gNC45CisKKzIwMTEtMDYtMjkgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBkNTg4ZWM4NTNiZDA1MzFmMjEyZmNiZjUxYjk2MmI5NmM2ODI4YjU5IEF1dGhvcjogSmFuCisKKyBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBXZWQgSnVuIDI5CisgMTY6MDc6MDAgMjAxMSArMDIwMAorCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBkaXN0L3JlbGVhc2U6IG5vdGVkIHRoYXQgdGhlIG1hc3RlciBicmFuY2ggaXMgaW4gcmMgc3RhdGUKKworCisyMDExLTA2LTI4ICBXZXMgSGFyZGFrZXIgPG9wZW5zb3VyY2VAaGFyZGFrZXJzLm5ldD4KKworICAgKiA6IGNvbW1pdCA4YjIzYjRjMTM5MjNiOGNhZjRkNGFlZDMyYTQ1MDkzMzkzNGZmNDYxIE1lcmdlOiAxNTM3ODFkCisKKyA0N2Y1MDQ4IEF1dGhvcjogV2VzIEhhcmRha2VyIDxvcGVuc291cmNlQGhhcmRha2Vycy5uZXQ+IERhdGU6ICAgVHVlCisgSnVuIDI4IDEzOjE0OjUyIDIwMTEgLTA3MDAKKworMjAxMS0wNi0yOCAgV2VzIEhhcmRha2VyIDxvcGVuc291cmNlQGhhcmRha2Vycy5uZXQ+CisKKyAgICogOiBjb21taXQgYWY4YjIzNTIzNGY3Mjk0NGE2NDlhNzZmMGQzMGNmZjk1YWMyZTg5NSBBdXRob3I6IFdlcworCisgSGFyZGFrZXIgPG9wZW5zb3VyY2VAaGFyZGFrZXJzLm5ldD4gRGF0ZTogICBUdWUgSnVuIDI4IDEzOjExOjE5IDIwMTEKKyAtMDcwMAorCisyMDExLTA2LTI4ICBXZXMgSGFyZGFrZXIgPG9wZW5zb3VyY2VAaGFyZGFrZXJzLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IHVzZSBnaXQgbWVyZ2Ugd2l0aCB0aGUgLS1sb2cKKworIG9wdGlvbgorCisyMDExLTA2LTI4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAxNTM3ODFkYmZiMmFmYzAwMDNiYTRlNThmZmNjYTUzMDAxZTQ4NmQ2IE1lcmdlOiBiM2U4MGRlCisKKyAzYzVhNDA5IEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVHVlIEp1bgorIDI4IDE5OjQzOjEzIDIwMTEgKzAyMDAKKworMjAxMS0wNi0yOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgOWJjODJlNGNhNDgzN2YwMDA3MmRiYTg2Yjk0OTdhMjcxODY5MDlmOSBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUdWUgSnVuIDI4IDE5OjEzOjM1IDIwMTEgKzAyMDAKKworMjAxMS0wNi0yOCAgV2VzIEhhcmRha2VyIDxvcGVuc291cmNlQGhhcmRha2Vycy5uZXQ+CisKKyAgICogRkFROiBXZSdyZSBub3cgdXNpbmcgZ2l0IQorCisKKzIwMTEtMDYtMjcgIFdlcyBIYXJkYWtlciA8b3BlbnNvdXJjZUBoYXJkYWtlcnMubmV0PgorCisgICAqIDogY29tbWl0IGIzZTgwZGU5YjA3ZDI4MmZmMTFhZjhiMDZhOTFkNjQyNzlkMzI2MWQgTWVyZ2U6IGM0YWQyNzgKKworIDZhNWU1YTYgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPG9wZW5zb3VyY2VAaGFyZGFrZXJzLm5ldD4gRGF0ZTogICBNb24KKyBKdW4gMjcgMjE6MzQ6NTkgMjAxMSAtMDcwMAorCisyMDExLTA2LTI3ICBXZXMgSGFyZGFrZXIgPG9wZW5zb3VyY2VAaGFyZGFrZXJzLm5ldD4KKworICAgKiA6IGNvbW1pdCAzOGZlODE3N2Q1MzMxMzVhNmNjNjgyNzI0ZjE2YTkxMTEzYmNkN2YzIE1lcmdlOiA3ZDkxN2NmCisKKyBkZDU4YmFmIEF1dGhvcjogV2VzIEhhcmRha2VyIDxvcGVuc291cmNlQGhhcmRha2Vycy5uZXQ+IERhdGU6ICAgTW9uCisgSnVuIDI3IDIxOjM0OjU2IDIwMTEgLTA3MDAKKworMjAxMS0wNi0yNyAgV2VzIEhhcmRha2VyIDxvcGVuc291cmNlQGhhcmRha2Vycy5uZXQ+CisKKyAgICogOiBjb21taXQgNWMxNzdmNTE3ZDE2ZjA1NTQ1YjI3OWQxNmYwZTRmZDU2OTZiZTY1MSBNZXJnZTogZjBkNmJmMAorCisgYzJiY2ViYyBBdXRob3I6IFdlcyBIYXJkYWtlciA8b3BlbnNvdXJjZUBoYXJkYWtlcnMubmV0PiBEYXRlOiAgIE1vbgorIEp1biAyNyAyMTozNDo1NSAyMDExIC0wNzAwCisKKzIwMTEtMDYtMjcgIFdlcyBIYXJkYWtlciA8b3BlbnNvdXJjZUBoYXJkYWtlcnMubmV0PgorCisgICAqIDogY29tbWl0IDljOTc2OTU3MmViOGMwM2I2OTU1NmMxYzVhYWI5YjRkNTZjNmQxZDMgQXV0aG9yOiBXZXMKKworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgTW9uIEp1biAyNworIDE0OjExOjE0IDIwMTEgKzAwMDAKKworMjAxMS0wNi0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhZGRlZCBhIGZlYXR1cmUgdG8gbm90IHJvbGwKKworIGJyYW5jaGVzIGN1cnJlbmx5IGluIHJjIHBoYXNlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDUzMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhZGRlZCBhIG5zcm9sbHVwIGZ1bmN0aW9uIGZvcgorCisgcm9sbGluZyBicmFuY2hlcyB1cHdhcmQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA1MzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogY3JlYXRlZCBhbiBuc3BhdGNoYXBwbHkgZnVuY3Rpb24KKworIHRvIGFwcGx5IGEgcHJldmlvdXNseSB0ZXN0ZWQgcGF0Y2ggZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNTMwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGFkZGVkIGEgbnN0cnlwYXRjaCBmdW5jdGlvbiB0bworCisgdGVzdCBwYXRjaCBhcHBsaWNhdGlvbiBhZ2FpbnN0IHZhcmlvdXMgYnJhbmNoZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNTI5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGFkZGVkIHZlcmJvc2Ugb3V0cHV0IGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNTI4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IG1vcmUgcHJlZml4IGNoYW5nZXMgYW5kIGJldHRlcgorCisgc2V0dGluZyBvZiBkZWZhdWx0IHZhbHVlcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA1MjcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogdXNlIG5zIHByZWZpeGVzIGluc3RlYWQgb2YgZ2VuZXJpYworCisgc25tcCBwcmVmaXhlcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA1MjYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MjQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46IAorCisgTWlzc2luZyBjaGVjayBmb3IgcnBtdHMuaCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTIzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZTogVmVyc2lvbiBudW1iZXIgdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUyMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgbWFuL25ldHNubXBfYWdlbnQuMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsIAorICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgCisgICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2RhdGFfbGlzdC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgCisgICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsIAorICAgICAgbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIG1hbi9uZXRzbm1wX2xlYWYuMywgCisgICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX211bHRpcGxleGVyLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCBtYW4vbmV0c25tcF9vbGRfYXBpLjMsIAorICAgICAgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsIAorICAgICAgbWFuL25ldHNubXBfcm93X21lcmdlLjMsIG1hbi9uZXRzbm1wX3NjYWxhci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCBtYW4vbmV0c25tcF9zZXJpYWxpemUuMywgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCBtYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMywgCisgICAgICBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGUuMywgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsIG1hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCBtYW4vbmV0c25tcF91dGlsLjMsCisgICAgICAgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgCisgICAgICBtYW4vbmV0c25tcF93YXRjaGVyLjM6IGRvY3VtZW50YXRpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUyMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkaXN0L25ldC1zbm1wLnNwZWMsIAorICAgICAgc25tcGxpYi9zbm1wX3ZlcnNpb24uYzogVmVyc2lvbiBudW1iZXIgdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUyMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yMyAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogVHdlYWsgUlBNIGhhbmRsaW5nIHRvIHdvcmsKKworIHdpdGggbGlicmFyeSB2ZXJzaW9uIDQuOSBCYXNlZCBvbiBhIHBhdGNoIGJ5IEphbiBTYWZyYW5layBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTE5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTIyICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmM6IFByb3ZpZGUgYSBmcmFtZXdvcmsgZm9yIHJlYWRpbmcKKworIFJQTSBwYWNrYWdlIGluZm9ybWF0aW9uIGZyb20gYSBjYWNoZSBkaXJlY3RvcnkgKHJhdGhlciB0aGFuIHF1ZXJ5aW5nCisgdGhlIFJQTWRiIGRpcmVjdGx5KS4gIE15IGFwb2xvZ2llcyB0byBKZWZmIEpvaG5zb24gZm9yIHRoZSBkZWxheSBpbiBhZGRpbmcgdGhpcworIGZ1bmN0aW9uYWxpdHkuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTE4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTIyICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIENoYW5nZUxvZzogdmVyc2lvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNTE2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTIyICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZTogVmVyc2lvbiBudW1iZXIgdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDUxNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yMiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkaXN0L25ldC1zbm1wLnNwZWMsIAorICAgICAgc25tcGxpYi9zbm1wX3ZlcnNpb24uYzogVmVyc2lvbiBudW1iZXIgdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDUxNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yMSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmM6IFByb3ZpZGUgYQorCisgZnJhbWV3b3JrIGZvciByZWFkaW5nIFJQTSBwYWNrYWdlIGluZm9ybWF0aW9uIGZyb20gYSBjYWNoZSBkaXJlY3RvcnkKKyAocmF0aGVyIHRoYW4gcXVlcnlpbmcgdGhlIFJQTWRiIGRpcmVjdGx5KS4gIE15IGFwb2xvZ2llcyB0byBKZWZmIEpvaG5zb24gZm9yIHRoZSBkZWxheSBpbiBhZGRpbmcgdGhpcworIGZ1bmN0aW9uYWxpdHkuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNTEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTIxICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYzogUHJvdmlkZSBhCisKKyBmcmFtZXdvcmsgZm9yIHJlYWRpbmcgUlBNIHBhY2thZ2UgaW5mb3JtYXRpb24gZnJvbSBhIGNhY2hlIGRpcmVjdG9yeQorIChyYXRoZXIgdGhhbiBxdWVyeWluZyB0aGUgUlBNZGIgZGlyZWN0bHkpLiAgTXkgYXBvbG9naWVzIHRvIEplZmYgSm9obnNvbiBmb3IgdGhlIGRlbGF5IGluIGFkZGluZyB0aGlzCisgZnVuY3Rpb25hbGl0eS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA1MTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjEgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcGtnaW5mby5jOiBQcm92aWRlIGEKKworIGZyYW1ld29yayBmb3IgcmVhZGluZyBSUE0gcGFja2FnZSBpbmZvcm1hdGlvbiBmcm9tIGEgY2FjaGUgZGlyZWN0b3J5CisgKHJhdGhlciB0aGFuIHF1ZXJ5aW5nIHRoZSBSUE1kYiBkaXJlY3RseSkuICBNeSBhcG9sb2dpZXMgdG8gSmVmZiBKb2huc29uIGZvciB0aGUgZGVsYXkgaW4gYWRkaW5nIHRoaXMKKyBmdW5jdGlvbmFsaXR5LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNTEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYzogRm9sbG93LXVwIGZvciByMjA1MTE6IHJlYWxseSB1c2UKKworIHRoZSBwcm9wZXIgZm9ybWF0IHNwZWNpZmljYXRpb24uICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNTEyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYzogRm9sbG93LXVwIGZvciByMjA1MTE6IHJlYWxseSB1c2UKKworIHRoZSBwcm9wZXIgZm9ybWF0IHNwZWNpZmljYXRpb24uICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNTEyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTE3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYzogRml4IGEgYnVnIGluIGEgZGVidWcgc3RhdGVtZW50CisKKyBpbnRyb2R1Y2VkIGJ5IHBhdGNoIDMzMTAyNTAgLyByMjA0OTQ6IHVzZSAlbGQgdG8gcHJpbnQgYSB2YWx1ZSBvZgorIHR5cGUgb2lkIGluc3RlYWQgb2YgJWQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNTExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTE3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYzogRml4IGEgYnVnIGluIGEgZGVidWcgc3RhdGVtZW50CisKKyBpbnRyb2R1Y2VkIGJ5IHBhdGNoIDMzMTAyNTAgLyByMjA0OTQ6IHVzZSAlbGQgdG8gcHJpbnQgYSB2YWx1ZSBvZgorIHR5cGUgb2lkIGluc3RlYWQgb2YgJWQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNTExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTE3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYzogVXNlICVwIHRvIHByaW50IGEgcG9pbnRlciBpbnN0ZWFkCisKKyBvZiAlbGQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUxMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmM6IFVzZSAlcCB0byBwcmludCBhIHBvaW50ZXIgaW5zdGVhZAorCisgb2YgJWxkIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA1MTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMTMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIENIQU5HRVM6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNTA4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTEzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDaGFuZ2VMb2c6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNTA3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTEzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBjb25maWd1cmU6IHJ1biBjb3JyZWN0IHZlcnNpb24gb2YgYXV0b2NvbmYgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA1MDYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMTMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsIAorICAgICAgZGlzdC9uZXQtc25tcC5zcGVjOiBWZXJzaW9uIG51bWJlciB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA1MDUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMTMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZTogcmFuIGF1dG9jb25mIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNTA0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTEwICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgc25tcGxpYi9jZXJ0X3V0aWwuYzogSW5jbHVkZSBzdGRsaWIuaCB0byBtYWtlIGRtYWxsb2MgaGFwcHkKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDUwMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0xMCAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfc2VjdXJpdHlfbW9kdWxlczogRml4IGJ1aWxkIG9mIHNubXB1c20KKworIHdoZW4gYWRkaXRpb25hbCBzZWMgbW9kdWxlcyByZXF1ZXN0ZWQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNTAxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTA5ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgc25tcGxpYi9jZXJ0X3V0aWwuYzogSW5jbHVkZSBzdGTgpYbgpIXgpIbgpYbgpIWHaWIuaCB0byBtYWtlIGRtYWxsb2MgaGFwcHkKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNTAwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTA5ICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jOiBDSEFOR0VTOiBCVUc6IDMxNTE4NDU6IGZpeCBtdWx0aXBsZQorCisgcmVnaXN0cmF0aW9ucyBvZiBzbm1wIHRyYW5zcG9ydCBoYW5kbGVyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0OTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDkgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfdHJhbnNwb3J0LmM6IENIQU5HRVM6IEJVRzogMzE1MTg0NTogZml4IG11bHRpcGxlCisKKyByZWdpc3RyYXRpb25zIG9mIHNubXAgdHJhbnNwb3J0IGhhbmRsZXIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDk5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTA4ICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgsIHNubXBsaWIvc25tcF9hcGkuYywgCisgICAgICBzbm1wbGliL3N5c3RlbS5jOiBtb3JlIGRuc3NlYyB0d2Vha3MgIC0gY3JlYXRlIGFuIGFwcC1nbG9iYWwKKyAgICAgIHZhbGlkYXRvciBjb250ZXh0IGZvciB1c2Ugd2l0aCBhbGwgICAgdmFsaWRhdGlvbiByb3V0aW5lcy4gbWFpbmx5CisgICAgICB1c2VmdWwgZm9yIGxvbmctbGl2ZWQgYXBwcy4gICAtIHVzZSB0aGUgYXBwdHlwZSBhcyB0aGUgdmFsaWRhdG9yCisgICAgICAnc2NvcGUnLCBhbGxvd2luZyAgICBmb3IgYXBwLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb2YgdmFsaWRhdGlvbgorICAgICAgdmlhIGxpYnZhbCdzICAgIGRuc3ZhbC5jb25mIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDk4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTA3ICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaDogYWRkIGEgbWF4IGRlZmluZSBmb3IKKworIGVhY2ggZGVmYXVsdCBzdG9yZSB0eXBlICAgbm90IGFjdHVhbGx5IHVzZWQsIGp1c3QgYSBoZWxwZnVsIHJlbWluZGVyIGZvciB0aG9zZSBhZGRpbmcgICBuZXcgaWRzIHdobyBtaWdodCBub3QgdGhpbmsgdG8gY2hlY2sgTkVUU05NUF9EU19NQVhfU1VCSURTLiAgICAodGhlIGJvb2wgbGlzdCBpcyByYXBpZGx5IGFwcHJvYWNoaW5nIHRoZSBjdXJyZW50IGxpbWl0LikgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDk3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTA3ICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfcnVuOiBtZW50aW9uIGJ1aWxkZGlyIHdoZW4KKworIGNvbXBsYWluaW5nIGFib3V0IG5vdCBiZWluZyBydW4gZnJvbSBzb3VyY2UgdHJlZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0OTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHBlcmwvU05NUC9TTk1QLnhzOiBSZXZlcnRlZCByMjAzNjI6IHRoYXQgcGF0Y2ggbWFrZXMgc2Vuc2Ugb24gdGhlCisKKyB0cnVuayBhbmQgdGhlIDUuNiBicmFuY2ggYnV0IG5vdCBvbiB0aGUgNS41IG5vciBvbiB0aGUgNS40IGJyYW5jaC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0OTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmM6CisKKyBDSEFOR0VTOiBzbm1wZDogcGF0Y2ggMzMxMDI1MDogZnJvbSBmZW5uZXI6IG1pc2MgZml4ZXMgZm9yIGRlYnVnZ2luZworIG91dHB1dCBvZiBhZ2VudHggZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ5NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0wMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmMsCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYzoKKworIENIQU5HRVM6IHNubXBkOiBwYXRjaCAzMzEwMjUwOiBmcm9tIGZlbm5lcjogbWlzYyBmaXhlcyBmb3IgZGVidWdnaW5nCisgb3V0cHV0IG9mIGFnZW50eCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0OTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmM6CisKKyBDSEFOR0VTOiBzbm1wZDogcGF0Y2ggMzMxMDI1MDogZnJvbSBmZW5uZXI6IG1pc2MgZml4ZXMgZm9yIGRlYnVnZ2luZworIG91dHB1dCBvZiBhZ2VudHggZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ5NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0wMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ0hBTkdFUywgTkVXUzogdmVyc2lvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0OTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvTWFrZWZpbGUuZGVwZW5kOiBtYWtlIGRlcGVuZCBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ5MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0wMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlOiBmaXhlZCBhdXRvY29uZiB2ZXJzaW9uIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDkwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTAxICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAKKyAgICAgIGRpc3QvbmV0LXNubXAuc3BlYzogVmVyc2lvbiBudW1iZXIgdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDg5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTAxICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIENIQU5HRVM6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ4NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0wMSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDaGFuZ2VMb2c6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ4NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0wMSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCwgCisgICAgICBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQsIGFwcHMvTWFrZWZpbGUuZGVwZW5kLCAKKyAgICAgIGFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuZGVwZW5kLCBzbm1wbGliL01ha2VmaWxlLmRlcGVuZDogbWFrZQorCisgZGVwZW5kIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0ODUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDEgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogcGVybC9TTk1QL1NOTVAueHM6IFJlaW5zdGF0ZSBhbiAidW51c2VkIiBsYWJlbCB0aGF0IGlzIGFjdHVhbGx5CisKKyBzdGlsbCByZXF1aXJlZC4gIChyZWZlcmVuY2VkIGluIGxpbmUgMjcxMCkgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ4NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0wMSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6IEZpeCB0eXBvIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ4MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0wMSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgbWFuL25ldHNubXBfYWdlbnQuMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsIAorICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgCisgICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2RhdGFfbGlzdC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgCisgICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsIAorICAgICAgbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIG1hbi9uZXRzbm1wX2xlYWYuMywgCisgICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX211bHRpcGxleGVyLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCBtYW4vbmV0c25tcF9vbGRfYXBpLjMsIAorICAgICAgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsIAorICAgICAgbWFuL25ldHNubXBfcm93X21lcmdlLjMsIG1hbi9uZXRzbm1wX3NjYWxhci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCBtYW4vbmV0c25tcF9zZXJpYWxpemUuMywgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCBtYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMywgCisgICAgICBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGUuMywgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsIG1hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCBtYW4vbmV0c25tcF91dGlsLjMsCisgICAgICAgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgCisgICAgICBtYW4vbmV0c25tcF93YXRjaGVyLjM6IGRvY3VtZW50YXRpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ4MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0wMSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkaXN0L25ldC1zbm1wLnNwZWMsIAorICAgICAgc25tcGxpYi9zbm1wX3ZlcnNpb24uYzogVmVyc2lvbiBudW1iZXIgdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ4MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0wMSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDSEFOR0VTOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDEgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDEgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQsIAorICAgICAgYXBwcy9NYWtlZmlsZS5kZXBlbmQsIGFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuZGVwZW5kLCAKKyAgICAgIHNubXBsaWIvTWFrZWZpbGUuZGVwZW5kOiBtYWtlIGRlcGVuZCBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDEgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIG1hbi9uZXRzbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsIAorICAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgCisgICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsIAorICAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsIAorICAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywgCisgICAgICBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywgCisgICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMsIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCBtYW4vbmV0c25tcF9zY2FsYXIuMywgCisgICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsIAorICAgICAgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMywgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywgbWFuL25ldHNubXBfdXRpbC4zLAorICAgICAgIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsIAorICAgICAgbWFuL25ldHNubXBfd2F0Y2hlci4zOiBkb2N1bWVudGF0aW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDEgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIENIQU5HRVMsIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWMsIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTAxICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDogZml4IHhtbCBxdW90aW5nIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDc0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTMxICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgc25tcGxpYi9wYXJzZS5jOiBmaXggbm9uIGV4aXN0ZW50IG1hbGxvYyBtYWNybyB0byB1c2UgY2FsbG9jCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ3MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0zMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgsIHNubXBsaWIvcGFyc2UuYzogQ0hBTkdFUzoKKworIHNubXBsaWI6IEFwcGxpZWQgdGhlIGludGVudCBvZiBwYXRjaCAzMDQ0ODg4IHRvIGFsbG93IGFwcGxpY2F0aW9ucworIHRvIHJlYWQgdGhlIGVycm9yIG1lc3NhZ2VzIG9mIGEgTUlCIHBhcnNpbmcgZmFpbHVyZS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ3MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0zMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmMsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYzogCisKKyBDSEFOR0VTOiBzbm1wZDogUEFUQ0ggMzA2Njg2MjogZnJvbSBmaGV3OiBmaXggdGhlIGFnZW50IGZvcgorIGNvbXBhcmluZyB1bnNpZ25lZCBsYXJnZSBpbmRleGVzIG9mIHRoZSBkaXNrIGFuZCBleHRlbmQgdGFibGVzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ3MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0zMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmMsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYzogCisKKyBDSEFOR0VTOiBzbm1wZDogUEFUQ0ggMzA2Njg2MjogZnJvbSBmaGV3OiBmaXggdGhlIGFnZW50IGZvcgorIGNvbXBhcmluZyB1bnNpZ25lZCBsYXJnZSBpbmRleGVzIG9mIHRoZSBkaXNrIGFuZCBleHRlbmQgdGFibGVzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ3MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0zMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmMsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYzogCisKKyBDSEFOR0VTOiBzbm1wZDogUEFUQ0ggMzA2Njg2MjogZnJvbSBmaGV3OiBmaXggdGhlIGFnZW50IGZvcgorIGNvbXBhcmluZyB1bnNpZ25lZCBsYXJnZSBpbmRleGVzIG9mIHRoZSBkaXNrIGFuZCBleHRlbmQgdGFibGVzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ3MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0zMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmMsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYzogCisKKyBDSEFOR0VTOiBzbm1wZDogUEFUQ0ggMzA2Njg2MjogZnJvbSBmaGV3OiBmaXggdGhlIGFnZW50IGZvcgorIGNvbXBhcmluZyB1bnNpZ25lZCBsYXJnZSBpbmRleGVzIG9mIHRoZSBkaXNrIGFuZCBleHRlbmQgdGFibGVzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQ3MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0zMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmMsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYzogCisKKyBDSEFOR0VTOiBzbm1wZDogUEFUQ0ggMzA2Njg2MjogZnJvbSBmaGV3OiBmaXggdGhlIGFnZW50IGZvcgorIGNvbXBhcmluZyB1bnNpZ25lZCBsYXJnZSBpbmRleGVzIG9mIHRoZSBkaXNrIGFuZCBleHRlbmQgdGFibGVzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDcxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTMxICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOiBDSEFOR0VTOiBzbm1wZDogZml4ZWQgaHJTV1J1blBhdGgKKworIG9mIHN3YXBwZWQtb3V0IHByb2Nlc3NlcyBvbiBMaW51eC4gIGZnZXRzKCkgcmV0dXJucyBOVUxMIGJvdGggd2hlbiAvcHJvYy9QSUQvY21kbGluZSBpcyBlbXB0eSAoPSBzd2FwcGVkCisgb3V0KSBhbmQgd2hlbiB0aGUgcHJvY2VzcyBleGl0ZWQgYWZ0ZXIgZm9wZW4oKSwgc28gY2hlY2sKKyAvcHJvYy9QSUQvc3RhdHVzIGluIGJvdGggY2FzZXMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTMxICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOiBDSEFOR0VTOiBzbm1wZDogZml4ZWQgaHJTV1J1blBhdGgKKworIG9mIHN3YXBwZWQtb3V0IHByb2Nlc3NlcyBvbiBMaW51eC4gIGZnZXRzKCkgcmV0dXJucyBOVUxMIGJvdGggd2hlbiAvcHJvYy9QSUQvY21kbGluZSBpcyBlbXB0eSAoPSBzd2FwcGVkCisgb3V0KSBhbmQgd2hlbiB0aGUgcHJvY2VzcyBleGl0ZWQgYWZ0ZXIgZm9wZW4oKSwgc28gY2hlY2sKKyAvcHJvYy9QSUQvc3RhdHVzIGluIGJvdGggY2FzZXMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTMxICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOiBDSEFOR0VTOiBzbm1wZDogZml4ZWQgaHJTV1J1blBhdGgKKworIG9mIHN3YXBwZWQtb3V0IHByb2Nlc3NlcyBvbiBMaW51eC4gIGZnZXRzKCkgcmV0dXJucyBOVUxMIGJvdGggd2hlbiAvcHJvYy9QSUQvY21kbGluZSBpcyBlbXB0eSAoPSBzd2FwcGVkCisgb3V0KSBhbmQgd2hlbiB0aGUgcHJvY2VzcyBleGl0ZWQgYWZ0ZXIgZm9wZW4oKSwgc28gY2hlY2sKKyAvcHJvYy9QSUQvc3RhdHVzIGluIGJvdGggY2FzZXMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTMxICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOiBDSEFOR0VTOiBzbm1wZDogZml4ZWQgaHJTV1J1blBhdGgKKworIG9mIHN3YXBwZWQtb3V0IHByb2Nlc3NlcyBvbiBMaW51eC4gIGZnZXRzKCkgcmV0dXJucyBOVUxMIGJvdGggd2hlbiAvcHJvYy9QSUQvY21kbGluZSBpcyBlbXB0eSAoPSBzd2FwcGVkCisgb3V0KSBhbmQgd2hlbiB0aGUgcHJvY2VzcyBleGl0ZWQgYWZ0ZXIgZm9wZW4oKSwgc28gY2hlY2sKKyAvcHJvYy9QSUQvc3RhdHVzIGluIGJvdGggY2FzZXMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0NzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGRpc3QvbWFrZXJlbGVhc2UueG1sOiB1cCB0aGUgYW50ZSBhbmQgcnVuIG90aGVyIHRlc3Qgc3VpdGVzCisKKyBiZXNpZGVzIGp1c3QgdGhlIGRlZmF1bHQgc2V0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ2MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wdXNtLmM6IENIQU5HRVM6IHNubXBkOiBwYXRjaCAzMjk5Mzg0OiBmaXggSU5GT1JNcyBzbworCisgdGhleSByZXRyeSBwcm9iaW5nIGZvciBhbiBlbmdpbmVJRC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ2MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wdXNtLmM6IEFwcGxpZWQgKHJvdWdobHkpIHBhdGNoIDMyOTkzNzAgdG8gYXZvaWQKKworIHJld3JpdGluZyBleGlzdGluZyBhdXRoa2V5L3ByaXZrZXkvZXRjcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0NjAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5jLCBhZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jOiBBcHBsaWVkIHRoZSBpbnRlbnQKKyAgICAgIG9mCisKKyBwYXRjaCAzMjk5Mzg2IHdoaWNoIGZpeGVzIGR1cGxpY2F0ZSBlbnRyaWVzIG9uIGEgU0lHSFVQLiAgVG8gYWNoaWV2ZQorIHRoaXMgc29tZSBuZXcgaGVhZGVyX2NvbXBsZXggZnVuY3Rpb25zIG5lZWRlZCB0byBiZSBjcmVhdGVkIHRoYXQKKyBkaWRuJ3QgY2hhbmdlIHRoZSBiZWhhdmlvciBvZiB0aGUgb2xkZXIgb25lcy4gIFRoZSBub3RpZmljYXRpb24gY29kZQorIG5vdyBjYWxscyB0aGVzZSBuZXdlciBmdW5jdGlvbnMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0NTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzogQ0hBTkdFUzogc25tcGQ6IHBhdGNoIDMyOTkzODQ6IGZpeCBJTkZPUk1zIHNvCisKKyB0aGV5IHJldHJ5IHByb2JpbmcgZm9yIGFuIGVuZ2luZUlELiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQ1OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOiBDSEFOR0VTOiBzbm1wZDogcGF0Y2ggMzI5OTM4NDogZml4IElORk9STXMgc28KKworIHRoZXkgcmV0cnkgcHJvYmluZyBmb3IgYW4gZW5naW5lSUQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDU4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6IENIQU5HRVM6IHNubXBkOiBwYXRjaCAzMjk5Mzg0OiBmaXggSU5GT1JNcyBzbworCisgdGhleSByZXRyeSBwcm9iaW5nIGZvciBhbiBlbmdpbmVJRC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzogQ0hBTkdFUzogc25tcGQ6IHBhdGNoIDMyOTkzODQ6IGZpeCBJTkZPUk1zIHNvCisKKyB0aGV5IHJldHJ5IHByb2JpbmcgZm9yIGFuIGVuZ2luZUlELiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ1OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOiBBcHBsaWVkIChyb3VnaGx5KSBwYXRjaCAzMjk5MzcwIHRvIGF2b2lkCisKKyByZXdyaXRpbmcgZXhpc3RpbmcgYXV0aGtleS9wcml2a2V5L2V0Y3MgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQ1NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOiBBcHBsaWVkIChyb3VnaGx5KSBwYXRjaCAzMjk5MzcwIHRvIGF2b2lkCisKKyByZXdyaXRpbmcgZXhpc3RpbmcgYXV0aGtleS9wcml2a2V5L2V0Y3MgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ1NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOiBBcHBsaWVkIChyb3VnaGx5KSBwYXRjaCAzMjk5MzcwIHRvIGF2b2lkCisKKyByZXdyaXRpbmcgZXhpc3RpbmcgYXV0aGtleS9wcml2a2V5L2V0Y3MgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ1NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOiBBcHBsaWVkIChyb3VnaGx5KSBwYXRjaCAzMjk5MzcwIHRvIGF2b2lkCisKKyByZXdyaXRpbmcgZXhpc3RpbmcgYXV0aGtleS9wcml2a2V5L2V0Y3MgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ1NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5oLCBwZXJsL01ha2VmaWxlLlBMOgorCisgTkVXUzogc25tcGQ6IHBhdGNoIDMxMzEzOTc6IGZyb20gdGFrZXZvczogaHVnZSBzcGVlZHVwcyBvZiB0aGUKKyBUQ1AvVURQIFRhYmxlcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0NTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHBlcmwvTmV0U05NUC54czogQWRkZWQgYSBib2d1cyBlbXB0eSAueHMgZmlsZSBmb3IgYnVuZGxpbmcgb24KKworIG5ld2VyIHBlcmwgdGhhdCB3YW50cyAic29tZXRoaW5nIiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0NTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJvY2ZzX3N0YXR1cy5jOiBDSEFOR0VTOgorCisgc25tcGQ6IHBhdGNoIDMzMDY0NzY6IGZyb20gdGlueXB5cmFtaWRzOiBmaXggbWVtb3J5IGxlYWsgaW4gdGhlCisgc3dydW4gY29udGFpbmVyIGxvYWRpbmcgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ1NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcm9jZnNfc3RhdHVzLmM6IENIQU5HRVM6CisKKyBzbm1wZDogcGF0Y2ggMzMwNjQ3NjogZnJvbSB0aW55cHlyYW1pZHM6IGZpeCBtZW1vcnkgbGVhayBpbiB0aGUKKyBzd3J1biBjb250YWluZXIgbG9hZGluZyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0NTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3R1bm5lbC90dW5uZWwuYzogRm9sbG93LXVwIGZvciByMjA0NDk6IHVzZQorCisgTkVUU05NUF9QUklvICJ1IiBmb3IgcHJpbnRpbmcgc3ViaWRzIGluc3RlYWQgb2Ygb25seSBORVRTTk1QX1BSSW8uICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDUzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuYywgCisgICAgICBhZ2VudC9taWJncm91cC90dW5uZWwvdHVubmVsLmM6IEZvbGxvdy11cCBmb3IgcjIwNDQ5OiB1c2UKKworIE5FVFNOTVBfUFJJbyAidSIgZm9yIHByaW50aW5nIHN1YmlkcyBpbnN0ZWFkIG9mIG9ubHkgTkVUU05NUF9QUklvLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDUzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46IENIQU5HRVM6IFdpbjMyOiBNaWNyb3NvZnQKKworIFZpc3VhbCBTdHVkaW86IExpbmsgd2l0aCBnZGkzMi5saWIgaWYgT3BlblNTTCBoYXMgYmVlbiBlbmFibGVkCisgYmVjYXVzZSBnZGkzMi5saWIgaXMgYSBkZXBlbmRlbmN5IG9mIE9wZW5TU0wuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDUxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46IENIQU5HRVM6IFdpbjMyOiBNaWNyb3NvZnQKKworIFZpc3VhbCBTdHVkaW86IExpbmsgd2l0aCBnZGkzMi5saWIgaWYgT3BlblNTTCBoYXMgYmVlbiBlbmFibGVkCisgYmVjYXVzZSBnZGkzMi5saWIgaXMgYSBkZXBlbmRlbmN5IG9mIE9wZW5TU0wuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDUxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46IENIQU5HRVM6IFdpbjMyOiBNaWNyb3NvZnQKKworIFZpc3VhbCBTdHVkaW86IExpbmsgd2l0aCBnZGkzMi5saWIgaWYgT3BlblNTTCBoYXMgYmVlbiBlbmFibGVkCisgYmVjYXVzZSBnZGkzMi5saWIgaXMgYSBkZXBlbmRlbmN5IG9mIE9wZW5TU0wuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0NTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaDogRm9sbG93LXVwIGZvciByMjA0NDg6IHNpbmNlIHRoZQorCisgIm9pZCIgdHlwZWRlZiBoYXMgYmVlbiBjaGFuZ2VkIGJhY2sgZnJvbSB1aW50MzJfdCB0byB1X2xvbmcsIGNoYW5nZQorIE5FVFNOTVBfUFJJbyBmcm9tIE5FVFNOTVBfUFJJMzIgaW50byAibCIuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDUwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmg6IEZvbGxvdy11cCBmb3IgcjIwNDQ4OiBzaW5jZSB0aGUKKworICJvaWQiIHR5cGVkZWYgaGFzIGJlZW4gY2hhbmdlZCBiYWNrIGZyb20gdWludDMyX3QgdG8gdV9sb25nLCBjaGFuZ2UKKyBORVRTTk1QX1BSSW8gZnJvbSBORVRTTk1QX1BSSTMyIGludG8gImwiLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDUwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC90dW5uZWwvdHVubmVsLmM6IENIQU5HRVM6IHNubXBkOiBVc2UgcHJvcGVyIGZvcm1hdAorCisgc3BlY2lmaWVyIGluIGRlYnVnIHN0YXRlbWVudHMgZm9yIHByaW50aW5nIHZhbHVlcyBvZiB0eXBlICdvaWQnLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ0OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdHVubmVsL3R1bm5lbC5jOiBDSEFOR0VTOiBzbm1wZDogVXNlIHByb3BlciBmb3JtYXQKKworIHNwZWNpZmllciBpbiBkZWJ1ZyBzdGF0ZW1lbnRzIGZvciBwcmludGluZyB2YWx1ZXMgb2YgdHlwZSAnb2lkJy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NDkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3R1bm5lbC90dW5uZWwuYzogQ0hBTkdFUzogc25tcGQ6IFVzZSBwcm9wZXIgZm9ybWF0CisKKyBzcGVjaWZpZXIgaW4gZGVidWcgc3RhdGVtZW50cyBmb3IgcHJpbnRpbmcgdmFsdWVzIG9mIHR5cGUgJ29pZCcuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDQ5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuYywgCisgICAgICBhZ2VudC9taWJncm91cC90dW5uZWwvdHVubmVsLmM6IENIQU5HRVM6IHNubXBkOiBVc2UgcHJvcGVyIGZvcm1hdAorCisgc3BlY2lmaWVyIGluIGRlYnVnIHN0YXRlbWVudHMgZm9yIHByaW50aW5nIHZhbHVlcyBvZiB0eXBlICdvaWQnLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDQ5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmg6IHJldmVydCBPSUQgdHlwZWRlZiB0byB1X2xvbmcgYXMKKworIGFncmVlZCB0byBvbiAtY29kZXJzIGFuZCBpbiB0aGUgYWRtaW4gbWVldGluZyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDQ4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmg6IHJldmVydCBPSUQgdHlwZWRlZiB0byB1X2xvbmcgYXMKKworIGFncmVlZCB0byBvbiAtY29kZXJzIGFuZCBpbiB0aGUgYWRtaW4gbWVldGluZyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0NDggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjQgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL3N5c3RlbS5jOiBSZW1lbWJlciB0byByZXR1cm4gaW5mbyBhbHNvIHdpdGhvdXQgRE5TU0VDCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ0NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfY29tbW9uLmM6IEFkZGVkIE5VTEwtY2hlY2tzCisKKyBhZnRlciBtYWxsb2MgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ0NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfY29tbW9uLmM6IEFkZGVkIE5VTEwtY2hlY2tzCisKKyBhZnRlciBtYWxsb2MgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ0NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfY29tbW9uLmM6IEFkZGVkIE5VTEwtY2hlY2tzCisKKyBhZnRlciBtYWxsb2MgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ0NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfY29tbW9uLmM6IEFkZGVkIE5VTEwtY2hlY2tzCisKKyBhZnRlciBtYWxsb2MgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDQ2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTIyICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYzogQ0hBTkdFUzoKKworIGFnZW50OiBCVUc6IDMzMDUxNTc6IEZpeCBpcEFkZHJlc3NQcmVmaXggaGFuZGxpbmcgb2YgSVB2NiBhZGRyZXNzZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQ0NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yMiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmM6IENIQU5HRVM6CisKKyBhZ2VudDogQlVHOiAzMzA1MTU3OiBGaXggaXBBZGRyZXNzUHJlZml4IGhhbmRsaW5nIG9mIElQdjYgYWRkcmVzc2VzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NDUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjIgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYzogQ0hBTkdFUzogcHl0aG9uOiBCVUc6IDMyOTU0MDc6IEZpeAorCisgaGFuZGxpbmcgb2Ygdm9pZCBwb2ludGVyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjIgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYzogQ0hBTkdFUzogcHl0aG9uOiBCVUc6IDMyOTU0MDc6IEZpeAorCisgaGFuZGxpbmcgb2Ygdm9pZCBwb2ludGVyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjIgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYzogQ0hBTkdFUzogcHl0aG9uOiBCVUc6IDMyOTU0MDc6IEZpeAorCisgaGFuZGxpbmcgb2Ygdm9pZCBwb2ludGVyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ0NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yMiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBweXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jOiBDSEFOR0VTOiBweXRob246IEJVRzogMzI5NTQwNzogRml4CisKKyBoYW5kbGluZyBvZiB2b2lkIHBvaW50ZXIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ0NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yMiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaCwgc25tcGxpYi9zbm1wX2FwaS5jOiBDSEFOR0VTOgorCisgc25tcGxpYjogQlVHOiAzMjY0ODUyOiBSZWNvZ25pc2UgbWlzc2luZyByZXBvcnQgdHlwZXMKKyAoc25tcHtVbmF2YWlsYWJsZSxVbmtub3dufUNvbnRleHRzLHNubXBVbmtub3duUERVSGFuZGxlcnMpIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjIgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgsIHNubXBsaWIvc25tcF9hcGkuYzogQ0hBTkdFUzoKKworIHNubXBsaWI6IEJVRzogMzI2NDg1MjogUmVjb2duaXNlIG1pc3NpbmcgcmVwb3J0IHR5cGVzCisgKHNubXB7VW5hdmFpbGFibGUsVW5rbm93bn1Db250ZXh0cyxzbm1wVW5rbm93blBEVUhhbmRsZXJzKSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDQzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTIyICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oLCBzbm1wbGliL3NubXBfYXBpLmM6IENIQU5HRVM6CisKKyBzbm1wbGliOiBCVUc6IDMyNjQ4NTI6IFJlY29nbmlzZSBtaXNzaW5nIHJlcG9ydCB0eXBlcworIChzbm1we1VuYXZhaWxhYmxlLFVua25vd259Q29udGV4dHMsc25tcFVua25vd25QRFVIYW5kbGVycykgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ0MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yMiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaCwgc25tcGxpYi9zbm1wX2FwaS5jOiBDSEFOR0VTOgorCisgc25tcGxpYjogQlVHOiAzMjY0ODUyOiBSZWNvZ25pc2UgbWlzc2luZyByZXBvcnQgdHlwZXMKKyAoc25tcHtVbmF2YWlsYWJsZSxVbmtub3dufUNvbnRleHRzLHNubXBVbmtub3duUERVSGFuZGxlcnMpIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ0MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yMiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaCwgc25tcGxpYi9zbm1wX2FwaS5jOiBDSEFOR0VTOgorCisgc25tcGxpYjogQlVHOiAzMjY0ODUyOiBSZWNvZ25pc2UgbWlzc2luZyByZXBvcnQgdHlwZXMKKyAoc25tcHtVbmF2YWlsYWJsZSxVbmtub3dufUNvbnRleHRzLHNubXBVbmtub3duUERVSGFuZGxlcnMpIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjAgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIvc25tcEFBTDVQVkNEb21haW4uYywgc25tcGxpYi9zbm1wQWxpYXNEb21haW4uYywgCisgICAgICBzbm1wbGliL3NubXBEVExTVURQRG9tYWluLmMsIHNubXBsaWIvc25tcElQWERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvc25tcFNTSERvbWFpbi5jLCBzbm1wbGliL3NubXBTVEREb21haW4uYywgCisgICAgICBzbm1wbGliL3NubXBUQ1BEb21haW4uYywgc25tcGxpYi9zbm1wVENQSVB2NkRvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvc25tcFVEUERvbWFpbi5jLCBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmMsIAorICAgICAgc25tcGxpYi9zbm1wVW5peERvbWFpbi5jOiBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDMyMzQ3NTQ6IEVuc3VyZQorICAgICAgb2xkCisKKyBmX2NyZWF0ZV9mcm9tX3RzdHJpbmcgaG9vayBpcyBpbml0aWFsaXplZCB0byBOVUxMIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjAgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wU1NIRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBTVEREb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVENQSVB2NkRvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVuaXhEb21haW4uYzogQ0hBTkdFUzogc25tcGxpYjogQlVHOgorICAgICAgMzIzNDc1NDoKKworIEVuc3VyZSBvbGQgZl9jcmVhdGVfZnJvbV90c3RyaW5nIGhvb2sgaXMgaW5pdGlhbGl6ZWQgdG8gTlVMTCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDQyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTIwICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFNTSERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wU1RERG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRDUElQdjZEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU1RDUERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmM6IENIQU5HRVM6IHNubXBsaWI6IEJVRzoKKyAgICAgIDMyMzQ3NTQ6CisKKyBFbnN1cmUgb2xkIGZfY3JlYXRlX2Zyb21fdHN0cmluZyBob29rIGlzIGluaXRpYWxpemVkIHRvIE5VTEwgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDQyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTIwICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL3NubXBBQUw1UFZDRG9tYWluLmMsIHNubXBsaWIvc25tcElQWERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvc25tcFNURERvbWFpbi5jLCBzbm1wbGliL3NubXBUQ1BEb21haW4uYywgCisgICAgICBzbm1wbGliL3NubXBUQ1BJUHY2RG9tYWluLmMsIHNubXBsaWIvc25tcFVEUERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYywgc25tcGxpYi9zbm1wVW5peERvbWFpbi5jOiBDSEFOR0VTOgorCisgc25tcGxpYjogQlVHOiAzMjM0NzU0OiBFbnN1cmUgb2xkIGZfY3JlYXRlX2Zyb21fdHN0cmluZyBob29rIGlzCisgaW5pdGlhbGl6ZWQgdG8gTlVMTCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDQyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTE5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhY2NvbmZpZy5oLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiB1c2UgI2lmZGVmCisKKyByYXRoZXIgdGhhbiAjaWYgZm9yIGRlZmluZSBjaGVja3MuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTE5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhY2NvbmZpZy5oLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiB1c2UgI2lmZGVmCisKKyByYXRoZXIgdGhhbiAjaWYgZm9yIGRlZmluZSBjaGVja3MuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTE5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhY2NvbmZpZy5oLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiB1c2UgI2lmZGVmCisKKyByYXRoZXIgdGhhbiAjaWYgZm9yIGRlZmluZSBjaGVja3MuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTE5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhY2NvbmZpZy5oLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiB1c2UgI2lmZGVmCisKKyByYXRoZXIgdGhhbiAjaWYgZm9yIGRlZmluZSBjaGVja3MuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0NDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFjY29uZmlnLmgsIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46IHVzZSAjaWZkZWYKKworIHJhdGhlciB0aGFuICNpZiBmb3IgZGVmaW5lIGNoZWNrcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTkgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWFuL3NubXBfYXBpLjMuZGVmLCBtYW4vc25tcF9zZXNzX2FwaS4zLmRlZjogQ0hBTkdFUzogbWFuOiBCVUc6CisKKyAzMTkwNzI1OiBEb2N1bWVudCBzbm1weyxfc2Vzc31zeW5jaF9yZXNwb25zZSBhbmQgc25tcF9hc3luY19zZW5kIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NDAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTkgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWFuL3Nlc3Npb25fYXBpLjMuZGVmLCBtYW4vc25tcF9zZXNzX2FwaS4zLmRlZjogQ0hBTkdFUzogbWFuOiBCVUc6CisKKyAzMTkwNzI1OiBEb2N1bWVudCBzbm1weyxfc2Vzc31zeW5jaF9yZXNwb25zZSBhbmQgc25tcF9hc3luY19zZW5kIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NDAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTkgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWFuL25ldHNubXBfc2Vzc19hcGkuMy5kZWYsIG1hbi9uZXRzbm1wX3Nlc3Npb25fYXBpLjMuZGVmOiAKKworIENIQU5HRVM6IG1hbjogQlVHOiAzMTkwNzI1OiBEb2N1bWVudCBzbm1weyxfc2Vzc31zeW5jaF9yZXNwb25zZSBhbmQKKyBzbm1wX2FzeW5jX3NlbmQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ0MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xOSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBtYW4vbmV0c25tcF9zZXNzX2FwaS4zLmRlZiwgbWFuL25ldHNubXBfc2Vzc2lvbl9hcGkuMy5kZWY6IAorCisgQ0hBTkdFUzogbWFuOiBCVUc6IDMxOTA3MjU6IERvY3VtZW50IHNubXB7LF9zZXNzfXN5bmNoX3Jlc3BvbnNlIGFuZAorIHNubXBfYXN5bmNfc2VuZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0NDAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTkgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWFuL3NubXBfYXBpLjMuZGVmLCBtYW4vc25tcF9zZXNzX2FwaS4zLmRlZjogQ0hBTkdFUzogbWFuOiBCVUc6CisKKyAzMTkwNzI1OiBEb2N1bWVudCBzbm1weyxfc2Vzc31zeW5jaF9yZXNwb25zZSBhbmQgc25tcF9hc3luY19zZW5kIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NDAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTkgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmM6IENIQU5HRVM6IHNubXBkOiBmaXhlZCByYWNlCisKKyBjb25kaXRpb24gaW4gaHJTV1J1blRhYmxlIFRyZWF0IHRoZSByZWFkcyBmcm9tIC9wcm9jLzxwaWQ+LyoKKyBjYXJlZnVseSwgcHJvY2Vzc2VzIGNhbiBleGl0IGluIHRoZSBtaWRkbGUgb2YgcHJvY2Vzc2luZy4gIChhbHJlYWR5CisgZml4ZWQgaW4gVjUtNS1wYXRjaGVzIGFuZCBWNS00LXBhdGNoZXMgaW4gU1ZOIHJldi4gMjAxMTUsIGR1bm5vIHdoeQorIEkgZGlkIG5vdCBwYXRjaCB0cnVuaykgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQzOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xOSAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYzogQ0hBTkdFUzogc25tcGQ6IGZpeGVkIHJhY2UKKworIGNvbmRpdGlvbiBpbiBoclNXUnVuVGFibGUgVHJlYXQgdGhlIHJlYWRzIGZyb20gL3Byb2MvPHBpZD4vKgorIGNhcmVmdWx5LCBwcm9jZXNzZXMgY2FuIGV4aXQgaW4gdGhlIG1pZGRsZSBvZiBwcm9jZXNzaW5nLiAgKGFscmVhZHkKKyBmaXhlZCBpbiBWNS01LXBhdGNoZXMgYW5kIFY1LTQtcGF0Y2hlcyBpbiBTVk4gcmV2LiAyMDExNSwgZHVubm8gd2h5CisgSSBkaWQgbm90IHBhdGNoIHRydW5rKSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTkgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9rZXl0b29scy5jLCBzbm1wbGliL3NjYXBpLmM6IENIQU5HRVM6IHNubXBsaWI6IEJVRzoKKworIDMxODQ2OTc6IERvbid0IHJlZmVyZW5jZSBpbnRlcm5hbCBNRDUgd2hlbiBpdCdzIGV4cGxpY2l0bHkgZGlzYWJsZWQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQzNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xOSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL2tleXRvb2xzLmMsIHNubXBsaWIvc2NhcGkuYzogQ0hBTkdFUzogc25tcGxpYjogQlVHOgorCisgMzE4NDY5NzogRG9uJ3QgcmVmZXJlbmNlIGludGVybmFsIE1ENSB3aGVuIGl0J3MgZXhwbGljaXRseSBkaXNhYmxlZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTYgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3N5c3RlbS5jOiBtYWtlIHN1cmUgd2UgZ2V0IHRoZSBoaW50IGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDM2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTE1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB0ZXN0aW5nL1JVTlRFU1RTOiBGb2xsb3ctdXAgZm9yIHIyMDQzMjogdGVzdGluZy9SVU5URVNUUyB3aXRob3V0CisKKyBhcmd1bWVudHMgd29ya3MgYWdhaW4gYXMgaXQgc2hvdWxkLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQzNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogdGVzdGluZy9SVU5URVNUUzogRm9sbG93LXVwIGZvciByMjA0MzI6IHRlc3RpbmcvUlVOVEVTVFMgd2l0aG91dAorCisgYXJndW1lbnRzIHdvcmtzIGFnYWluIGFzIGl0IHNob3VsZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQzNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xNCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5jOiBSYW4KKworIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4uYyB0aHJvdWdoIGRvczJ1bml4LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDM0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTE0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNzFjb20yc2VjNl9zaW1wbGU6IEZpeGVkIGEgdHlwbyBpbiBhCisKKyBjb21tZW50LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQzMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xNCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDcxY29tMnNlYzZfc2ltcGxlOiBGaXhlZCBhIHR5cG8gaW4gYQorCisgY29tbWVudC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQzMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xNCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogdGVzdGluZy9SVU5URVNUUzogUlVOVEVTVFMgd29ya3MgYWdhaW4gZm9yIHRlc3RzIHdpdGggYSBmb3VyLWRpZ2l0CisKKyBudW1iZXIuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDMyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTE0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB0ZXN0aW5nL1JVTlRFU1RTOiBSVU5URVNUUyB3b3JrcyBhZ2FpbiBmb3IgdGVzdHMgd2l0aCBhIGZvdXItZGlnaXQKKworIG51bWJlci4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQzMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xNCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zeXN0ZW0uYzogRml4ZWQgYSByZWNlbnRseSBpbnRyb2R1Y2VkIGJ1ZyBpbgorCisgbmV0c25tcF9nZXRhZGRyaW5mbygpLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDMxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTE0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNraW8uYzogRG9jdW1lbnQgdGhhdCB0aGUgdWNkLXNubXAKKworIGRpc2tpbyBjb2RlIHN0aWxsIGhhcyB0byBiZSBtb2RpZmllZCBzdWNoIHRoYXQgZGlza2lvX2ZyZWVfY29uZmlnKCkKKyBnZXRzIGludm9rZWQgdXBvbiBTSUdIVVAuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDMwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTE0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNraW8uYzogRG9jdW1lbnQgdGhhdCB0aGUgdWNkLXNubXAKKworIGRpc2tpbyBjb2RlIHN0aWxsIGhhcyB0byBiZSBtb2RpZmllZCBzdWNoIHRoYXQgZGlza2lvX2ZyZWVfY29uZmlnKCkKKyBnZXRzIGludm9rZWQgdXBvbiBTSUdIVVAuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTMgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3N5c3RlbS5jOiBmaXggY2FzdCBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQyOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMyAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9kYXRhX2EKKyAgICAgICBjY2Vzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2RhdGFfYWNjZXMKKyAgICAgICBzLmM6IFJldmVydCAyMDQyMCAiQ0hBTkdFUzogc25tcGQ6IEZpeGVkIG1lbW9yeSBsZWFrIGluIFRDUC1NSUIKKworIHRhYmxlcyBpbnRyb2R1Y2VkIGJ5IHBhdGNoICMzMDUzNDM2LiIgUmV2ZXJ0IDE5NzA4ICJDSEFOR0VTOiBzbm1wZDoKKyBQQVRDSDogMzA1MzQzNjogZnJvbTogdGFrZXZvczogZml4OiB0Y3BDb25uZWN0aW9uVGFibGVfZGF0YV9hY2Nlc3MKKyBpbnZhbGlkIG1lbW9yeSBhY2Nlc3MiIHRoZSBidWcgMzA1MzQzNiBpcyBmaXhpbmcgd2FzIGludHJvZHVjZWQgaW4gcjE3NzE5LCBhbmQgZml4ZWQgaW4KKyByMTc4NjEuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MjggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTMgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmMsIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9pbmV0LmMsIGFwcHMvc25tcG5ldHN0YXQvcm91dGUuYywgCisgICAgICBhcHBzL3NubXB0cmFwZF9sb2cuYywgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMiwgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIHNubXBsaWIvc3lzdGVtLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY0QmFzZURvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYzogbW9yZSBkbnMgcmVsYXRlZCB0d2Vha3MgIC0KKyAgICAgIGFkZCBuZXRzbm1wX2dldGhvc3RieWFkZHIgIC0gYWx3YXlzIGRlZmluZSBuZXRzbm1wXyogdmVyc2lvbnM7CisgICAgICBsb2dvbmNlIGlmIHVuZGVybHlpbmcgICAgZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZSAgLSB1c2UgbmV3CisgICAgICBmdW5jdGlvbnMgaW4gZGlzbWFuIG1pYnMgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MjcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTMgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYXBwcy9zbm1wbmV0c3RhdC9pbmV0Ni5jLCBzbm1wbGliL3NubXB2My5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYzogdXNlIG5ldyBuZXRzbm1wIGRucworCisgZnVuY3Rpb25zIGluIGFwcHMvc25tcGxpYiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MjYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTMgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgsIHNubXBsaWIvc3lzdGVtLmM6IG1vdmUgRE5TU0VDCisKKyB2YWxpZGF0aW9uIGludG8gcmVzb2x2ZXIgd3JhcHBlciBmdW5jdGlvbnMgICAtIGFsbG93cyBvdGhlciBjb2RlIHRvIGJlbmVmaXQgZnJvbSB2YWxpZGF0aW9uICAgLSBuZXcgbmV0c25tcF9nZXRob3N0YnluYW1lLCBuZXRzbm1wX2dldGFkZHJpbmZvIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQyNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9taWIuYzogRm9sbG93LXVwIGZvciByMjA0MTc6IHJlcGxhY2VkIGEgbWFsbG9jKCkvZnJlZSgpCisKKyBwYWlyIGJ5IGEgY2FsbCB0byByZWFsbG9jKCkuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDI0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL21pYi5jOiBGb2xsb3ctdXAgZm9yIHIyMDQxNzogcmVwbGFjZWQgYSBtYWxsb2MoKS9mcmVlKCkKKworIHBhaXIgYnkgYSBjYWxsIHRvIHJlYWxsb2MoKS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MjQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvbWliLmM6IEZvbGxvdy11cCBmb3IgcjIwNDE3OiByZXBsYWNlZCBhIG1hbGxvYygpL2ZyZWUoKQorCisgcGFpciBieSBhIGNhbGwgdG8gcmVhbGxvYygpLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDI0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9uZXRsaW5rLmM6IEZpeCBmb3IgUkhFTDQKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDIzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmM6IEhlYWRlciBmaWRkbGluZyBmb3IgdGhlCisKKyBiZW5lZml0IG9mIFJIRUw0LCBTb2xhcmlzLCBPcGVuQlNEIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQyMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9kYXRhX2EKKyAgICAgICBjY2Vzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2RhdGFfYWNjZXMKKyAgICAgICBzLmM6IENIQU5HRVM6IHNubXBkOiBGaXhlZCBtZW1vcnkgbGVhayBpbiBUQ1AtTUlCIHRhYmxlcworICAgICAgaW50cm9kdWNlZAorCisgYnkgcGF0Y2ggIzMwNTM0MzYuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDIxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogICAqIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2RhdGFfYQorICAgICAgIGNjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfZGF0YV9hY2NlcworICAgICAgIHMuYzogQ0hBTkdFUzogc25tcGQ6IEZpeGVkIG1lbW9yeSBsZWFrIGluIFRDUC1NSUIgdGFibGVzCisgICAgICBpbnRyb2R1Y2VkCisKKyBieSBwYXRjaCAjMzA1MzQzNi4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQyMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg6IFJldmVydGVkIGFjY2lkZW50YWxseSBjb21taXR0ZWQKKworIGNoYW5nZXMgb2YgcjIwNDEyLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDE5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6IENIQU5HRVM6IHNubXBsaWI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4KKworIHNubXBfZnJlZV9zZXNzaW9uKCkuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDE4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6IENIQU5HRVM6IHNubXBsaWI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4KKworIHNubXBfZnJlZV9zZXNzaW9uKCkuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDE4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6IENIQU5HRVM6IHNubXBsaWI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4KKworIHNubXBfZnJlZV9zZXNzaW9uKCkuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDE4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6IENIQU5HRVM6IHNubXBsaWI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4KKworIHNubXBfZnJlZV9zZXNzaW9uKCkuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvbWliLmM6IENIQU5HRVM6IHNubXBsaWI6IF9taWJpbmRleF9hZGQoKSBubyBsb25nZXIgcmVhZHMKKworIHBhc3QgdGhlIGVuZCBvZiB0aGUgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGFycmF5IF9taWJpbmRleGVzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQxNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9taWIuYzogQ0hBTkdFUzogc25tcGxpYjogX21pYmluZGV4X2FkZCgpIG5vIGxvbmdlciByZWFkcworCisgcGFzdCB0aGUgZW5kIG9mIHRoZSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYXJyYXkgX21pYmluZGV4ZXMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDE3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL21pYi5jOiBDSEFOR0VTOiBzbm1wbGliOiBfbWliaW5kZXhfYWRkKCkgbm8gbG9uZ2VyIHJlYWRzCisKKyBwYXN0IHRoZSBlbmQgb2YgdGhlIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBhcnJheSBfbWliaW5kZXhlcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQxNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9sY2RfdGltZS5jOiBBdm9pZCB0aGF0IE1TVkMgdHJpZ2dlcnMgYSBjb21waWxlciB3YXJuaW5nIG9uCisKKyB0aGUgY29kZSBpbiBzbm1wbGliL2xjZF90aW1lLmMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmM6IEF2b2lkCisKKyByZWFkaW5nIGFuIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2F0LmM6IENIQU5HRVM6IFdpbjMyOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluCisKKyB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNSUItSUkKKyBpcE5ldFRvTWVkaWFUYWJsZS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0MTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2F0LmM6IENIQU5HRVM6IFdpbjMyOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluCisKKyB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNSUItSUkKKyBpcE5ldFRvTWVkaWFUYWJsZS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0MTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2F0LmM6IENIQU5HRVM6IFdpbjMyOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluCisKKyB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNSUItSUkKKyBpcE5ldFRvTWVkaWFUYWJsZS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2F0LmM6IENIQU5HRVM6IFdpbjMyOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluCisKKyB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNSUItSUkKKyBpcE5ldFRvTWVkaWFUYWJsZS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQxNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jOiBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkKKworIGxlYWsgaW4gdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJCisgaWZUYWJsZS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0MTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYzogQ0hBTkdFUzogV2luMzI6IEZpeGVkIGEgbWVtb3J5CisKKyBsZWFrIGluIHRoZSBOZXQtU05NUCAobm9uLXdpbkV4dERMTCkgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1JQi1JSQorIGlmVGFibGUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmM6IENIQU5HRVM6IFdpbjMyOiBGaXhlZCBhIG1lbW9yeQorCisgbGVhayBpbiB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNSUItSUkKKyBpZlRhYmxlLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQxMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jOiBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkKKworIGxlYWsgaW4gdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJCisgaWZUYWJsZS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQxMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmM6IENIQU5HRVM6IFdpbjMyOiBGaXhlZCBhIG1lbW9yeSBsZWFrCisKKyBpbiB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNSUItSUkKKyBpcEFkZHJUYWJsZS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0MTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jOiBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhaworCisgaW4gdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJCisgaXBBZGRyVGFibGUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDEyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYzogQ0hBTkdFUzogV2luMzI6IEZpeGVkIGEgbWVtb3J5IGxlYWsKKworIGluIHRoZSBOZXQtU05NUCAobm9uLXdpbkV4dERMTCkgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1JQi1JSQorIGlwQWRkclRhYmxlLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmMsIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oOiAKKworIENIQU5HRVM6IFdpbjMyOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluIHRoZSBOZXQtU05NUCAobm9uLXdpbkV4dERMTCkKKyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJIGlwQWRkclRhYmxlLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDEyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDaGFuZ2VMb2c6IERvY3VtZW50YXRpb24gLyBzb3VyY2UgY29kZSBjb21tZW50IHNwZWxsaW5nIGZpeDoKKworIGV4aXRlbnQgLT4gZXhpc3RlbnQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDaGFuZ2VMb2csIHNubXBsaWIvbWliLmM6IERvY3VtZW50YXRpb24gLyBzb3VyY2UgY29kZSBjb21tZW50CisKKyBzcGVsbGluZyBmaXg6IGV4aXRlbnQgLT4gZXhpc3RlbnQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDaGFuZ2VMb2csIHNubXBsaWIvbWliLmM6IERvY3VtZW50YXRpb24gLyBzb3VyY2UgY29kZSBjb21tZW50CisKKyBzcGVsbGluZyBmaXg6IGV4aXRlbnQgLT4gZXhpc3RlbnQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDaGFuZ2VMb2csIHNubXBsaWIvbWliLmM6IERvY3VtZW50YXRpb24gLyBzb3VyY2UgY29kZSBjb21tZW50CisKKyBzcGVsbGluZyBmaXg6IGV4aXRlbnQgLT4gZXhpc3RlbnQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4uYzogQ0hBTkdFUzogV2luMzI6IEJ1aWxkCisKKyBzbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmMgb25seSBpZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgaGFzIGJlZW4gZGVmaW5lZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQxMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIE1ha2VmaWxlLmluLCBNYWtlZmlsZS5ydWxlcywgY29uZmlndXJlLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlOiBpbnN0YWxsIHRoZSBidWlsdCBmZWF0dXJlCisKKyBoZWFkZXJzIHRvbyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MDkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTEgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMjVzbm1wdjNnZXRTSEFERVNfc2ltcGxlLCAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAyNnNubXB2M2dldFNIQUFFU19zaW1wbGU6IENIQU5HRVM6CisKKyB0ZXN0aW5nOiBUZXN0cyAwMjUgYW5kIDAyNiBwYXNzIG9uIE1pbkdXIGV2ZW4gaWYgd2luRXh0RExMIGhhcyBiZWVuCisgZW5hYmxlZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQwOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDY1YWdlbnRleHRlbmRfc2ltcGxlOiBUMDY1IHJvYnVzdG5lc3MKKworIGltcHJvdmVtZW50LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDA3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTExICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c192b2lkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza19ody5oOiBDSEFOR0VTOiBzbm1wZDogdWNkX3NubXAgYnVpbGRzCisKKyBhZ2FpbiBvbiBNaW5HVyBhbmQgQ3lnd2luLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDA2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTExICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBNYWtlZmlsZS5pbjogaW5zdGFsbCB0aGUgbmV0LXNubXAtZmVhdHVyZXMuaCBmaWxlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDA1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMTQxc25tcHYyY3NldF9zaW1wbGU6IEltcHJvdmVkIHRlc3QKKworIHJvYnVzdG5lc3MuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb3JlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmM6IENvbXBpbGVyIHdhcm5pbmcgZml4ZXMuICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQwMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi93aW5zZXJ2aWNlLmM6IE1pbkdXOiBhdm9pZCB0aGF0IGdjYyBjb21wbGFpbnMgYWJvdXQgcGFzaW5nCisKKyBhIChjaGFyICopIGFyZ3VtZW50IHdoaWxlICh1bnNpZ25lZCBjaGFyICopIGlzIGV4cGVjdGVkLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQwMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi93aW5zZXJ2aWNlLmM6IE1pbkdXOiBhdm9pZCB0aGF0IGdjYyBjb21wbGFpbnMgYWJvdXQgcGFzaW5nCisKKyBhIChjaGFyICopIGFyZ3VtZW50IHdoaWxlICh1bnNpZ25lZCBjaGFyICopIGlzIGV4cGVjdGVkLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQwMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi93aW5zZXJ2aWNlLmM6IE1pbkdXOiBhdm9pZCB0aGF0IGdjYyBjb21wbGFpbnMgYWJvdXQgcGFzaW5nCisKKyBhIChjaGFyICopIGFyZ3VtZW50IHdoaWxlICh1bnNpZ25lZCBjaGFyICopIGlzIGV4cGVjdGVkLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQwMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi93aW5zZXJ2aWNlLmM6IE1pbkdXOiBhdm9pZCB0aGF0IGdjYyBjb21wbGFpbnMgYWJvdXQgcGFzaW5nCisKKyBhIChjaGFyICopIGFyZ3VtZW50IHdoaWxlICh1bnNpZ25lZCBjaGFyICopIGlzIGV4cGVjdGVkLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDAyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3Rvb2xzLmM6IEF2b2lkIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGlmIHRoZSBsYXN0IGNoYXIKKworIG9mIHRpbWVfc3RyaW5nIGlzIGluIHRoZSByYW5nZSAweDgwLi4weGZlIGFuZCBjaGFyIGlzIGEgc2lnbmVkIHR5cGUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaDogUmV2ZXJ0ZWQgcjIwMzgwIGJlY2F1c2UgaXQgYnJlYWtzCisKKyBhbGwgc3RhdGVtZW50cyB0aGF0IHByaW50IGFuIE9JRCBzdWItSUQgb24gYW55IDY0LWJpdCBwbGF0Zm9ybS4gVGhlCisgZWZmZWN0IG9mIHIyMDM4MCBvbiBiaWcgZW5kaWFuIGFyY2hpdGVjdHVyZXMgd2FzIHRoYXQgYSAiMCIgd291bGQgYmUKKyBwcmludGVkIGluc3RlYWQgb2YgdGhlIE9JRCBzdWItSUQgKGF0IGxlYXN0IHdpdGggdGhlIExQNjQgYW5kIHRoZQorIElMUDY0IG1vZGVscykuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MDAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTAgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIENIQU5HRVMsIE5FV1M6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzg1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDaGFuZ2VMb2c6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzg0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCwgCisgICAgICBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQsIGFwcHMvTWFrZWZpbGUuZGVwZW5kLCAKKyAgICAgIGFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuZGVwZW5kLCBzbm1wbGliL01ha2VmaWxlLmRlcGVuZDogbWFrZQorCisgZGVwZW5kIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM4MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYzogQysrIC0+IEMgY29tbWVudHMKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzgyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBORVdTOiBORVdTIHVwZGF0ZSBmb3IgNS43IGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzgxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmg6IHJldmVydCB0aGUgb2lkIHR5cGVkZWYgcmVzaXppbmcKKworIGZyb20gcjE3ODA5IGJlY2F1c2UgaXQgYnJva2UgYmFja3dhcmRzIGNvbXBhdCwgYXMgcG9pbnRlZCBvdXQgYnkKKyB1c2VycyBvbiB0aGUgLWNvZGVycyBsaXN0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM4MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlOiB1c2UgcHJvcGVyIGF1dG9jb25mIHZlcnNpb24gZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsIAorICAgICAgZGlzdC9uZXQtc25tcC5zcGVjLCBwZXJsL0FTTi9BU04ucG0sIHBlcmwvQW55RGF0YV9TTk1QL1N0b3JhZ2UucG0sCisgICAgICAgcGVybC9PSUQvT0lELnBtLCBwZXJsL1NOTVAvU05NUC5wbSwgCisgICAgICBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIucG0sIHBlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtLCAKKyAgICAgIHBlcmwvYWdlbnQvYWdlbnQucG0sIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLCAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtOiBWZXJzaW9uIG51bWJlciB1cGRhdGUKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzc4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBNYWtlZmlsZS50b3A6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgbWlicy9VQ0QtU05NUC1NSUIudHh0OiBhZGRlZCBhIG1pc3NpbmcgMCBpbiB0aGUgcmV2aXNpb24gZGF0ZQorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDkgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfaW9jdGwuYzogVXNlIHN5bWJvbGljCisKKyBuYW1lZCBmb3IgaWZUeXBlIHZhbHVlcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMzc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA5ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2lvY3RsLmM6IFVzZSBzeW1ib2xpYworCisgbmFtZWQgZm9yIGlmVHlwZSB2YWx1ZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDM3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9pb2N0bC5jOiBVc2Ugc3ltYm9saWMKKworIG5hbWVkIGZvciBpZlR5cGUgdmFsdWVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAzNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDkgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfaW9jdGwuYzogVXNlIHN5bWJvbGljCisKKyBuYW1lZCBmb3IgaWZUeXBlIHZhbHVlcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA5ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2lvY3RsLmM6IFVzZSBzeW1ib2xpYworCisgbmFtZWQgZm9yIGlmVHlwZSB2YWx1ZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA5ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBtaWJzL3JmY21pYnMuZGlmZjogSUFOQSBoYXMgZml4ZWQgdGhlCisKKyBJQU5BLUlQUE0tTUVUUklDUy1SRUdJU1RSWS1NSUIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDM3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWlicy9yZmNtaWJzLmRpZmY6IElBTkEgaGFzIGZpeGVkIHRoZQorCisgSUFOQS1JUFBNLU1FVFJJQ1MtUkVHSVNUUlktTUlCIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWlicy9VQ0QtU05NUC1NSUIudHh0OiBhZGRlZCBhIG5ldyBSRVZJU0lPTiBjbGF1c2UgdG8gbGlzdCB0aGUKKworIGNoYW5nZXMgaW4gdGhlIHRoZSByZWNlbnQgdXBkYXRlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM3MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogTkVXUzogYWRkZWQgcGluZy90cmFjZXJvdXRlIG1pYnMgbm90ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM3MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYzogd2UgYWN0dWFsbHkgd2FudCB0byB1c2UgdGhlIGJhc2UKKworIE9JRCBhcyB0aGUgc3RhcnRpbmcgcG9pbnQsIG5vdCB0aGUgcmVnIE9JRC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM3MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYzogZml4ZWQgdGhlIHByb3h5IHN1cHBvcnQgdG8gZG8gYQorCisgcHJvcGVyIE9JRCBsZXNzIHRoYW4gT0lEIGNvbXBhcmUuICBXZSBhY3R1YWxseSBkb24ndCBjYXJlIGFib3V0IHRoZQorIGxlbmd0aCBvZiB0aGUgb3JpZ2luYWwgcmVxdWVzdCwgb25seSB0aGF0IGl0IHdhcyBiZWZvcmUgdGhlCisgcmVnaXN0ZXJlZCByZWJhc2UgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm94eS5jOiBDSEFOR0VTOiBwYXRjaCAzMTQwODMzOiBmcm9tCisKKyBqc2FmcmFuZWs6IGZpeCBwcm94eSBHRVRORVhUIHJlcXVlc3RzIFdoZW4gT0lEcyByZXF1ZXN0ZWQgYXJlIGJlbG93CisgdGhlIHByb3h5IHJlcXVlc3QgcmVtYXAsIHdlIG5lZWQgdG8gbm90IGluY2x1ZGUgYW55IE9JRHMgdGhhdCBtaWdodAorIGJlIGluIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBvcmlnaW5hbCBPSUQgYW5kIHRoZSByZW1hcHBlZCBPSUQuICBUaGlzCisgcGF0Y2ggZnVkZ2VzIHRoZSByZXF1ZXN0IHNvIHRoYXQgaXQgZml4ZXMgdGhlIHJlcXVlc3QgT0lEIHNvIGl0J3MKKyBqdXN0IGJlZm9yZSB0aGUgcmVtYXBwZWQgcHJveHkgcmFuZ2UuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNjkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9jcHUuaCwgbWlicy9VQ0QtU05NUC1NSUIudHh0OgorICAgICAgTkVXUzoKKworIFBBVENIIDMxNjczMjU6IGZyb20ga3Jpc3p0b2Zvcm86IFVDRC1TTk1QL1N5c3RlbVN0YXRzOiBhZGQgdmFyaWFibGVzCisgdG8gcmVwb3J0IGNwdXN0ZWFsLCBjcHVndWVzdCwgY3B1Z3Vlc3RuaWNlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM2OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5jOiBDSEFOR0VTOiBwYXRjaAorCisgMzE4NDAyNjogZnJvbSBlaXZuYWVzOiBBdm9pZCBjb25zdGFudCByZWZyZXNoIG9mIGludGVyZmFjZQorIHN0YXRpc3RpY3MgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzY3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvc25tcF9hZ2VudC5jLCBhcHBzL3NubXBkZWx0YS5jLCBzbm1wbGliL3NjYXBpLmMsIAorICAgICAgc25tcGxpYi9zbm1wX2FwaS5jLCBzbm1wbGliL3N5c3RlbS5jLCBzbm1wbGliL3Rvb2xzLmM6IEZpeGVkCisgICAgICBzZXZlcmFsCisKKyBjb21waWxlciB3YXJuaW5ncyByZXBvcnRlZCBieSB0aGUgTVNWQyBjb21waWxlci4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM2NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIvZ2V0dGltZW9mZGF5LmM6IFdpbjMyL01TVkM6IEZpeGVkIGEgY29tcGlsZXIgd2FybmluZy4gCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM2NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmM6IENIQU5HRVM6IGFnZW50OiBGaXhlZCBhCisKKyB5ZWFyLTIwMzggYnVnIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBpcFJvdXRlVGFibGUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNjQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDggIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUHJvYmVIaXN0b3J5VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUmVzdWx0c1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUhvcHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVQcm9iZUhpc3RvcnlUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVSZXN1bHRzVGFibGUuYzogRml4CisKKyB3YXJuaW5ncyBhbmQgZGF0YSBmb3JtYXQgZm9yIERhdGVBbmRUaW1lIG9iamVjdHMuICBUaGVzZSBtb2R1bGVzCisgd29yaywgYnV0OiAtIFRoZXkgYXJlIExpbnV4IG9ubHkgLSBSb3dzIG11c3QgYmUgY3JlYXRlZCB3aXRoIHJvd1N0YXR1cyBjcmVhdGVBbmRXYWl0IGJlZm9yZSB0aGV5IGFyZQorIHBvcHVsYXRlZCAtIEFnZW50IG11c3QgcnVuIGFzIHJvb3QgLSBBZ2VudCBpcyBibG9ja2VkIHdoaWxlIHRlc3RzIHJ1biAtIERhdGEgZm9ybWF0IGZvciBJbmV0QWRkcmVzcyBvYmplY3RzIGlzIHdyb25nLiBJdCBpcyBBU0NJSSwgbm90CisgICBiaW5hcnkgKG1ha2luZyBpdCBlYXNpZXIgdG8gdXNlIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgYnV0IC4uLikgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDM2MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOCAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdQcm9iZUhpc3RvcnlUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdSZXN1bHRzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlSG9wc1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVByb2JlSGlzdG9yeVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZS5jOiBGaXgKKworIHdhcm5pbmdzIGFuZCBkYXRhIGZvcm1hdCBmb3IgRGF0ZUFuZFRpbWUgb2JqZWN0cy4gIFRoZXNlIG1vZHVsZXMKKyB3b3JrLCBidXQ6IC0gVGhleSBhcmUgTGludXggb25seSAtIFJvd3MgbXVzdCBiZSBjcmVhdGVkIHdpdGggcm93U3RhdHVzIGNyZWF0ZUFuZFdhaXQgYmVmb3JlIHRoZXkgYXJlCisgcG9wdWxhdGVkIC0gQWdlbnQgbXVzdCBydW4gYXMgcm9vdCAtIEFnZW50IGlzIGJsb2NrZWQgd2hpbGUgdGVzdHMgcnVuIC0gRGF0YSBmb3JtYXQgZm9yIEluZXRBZGRyZXNzIG9iamVjdHMgaXMgd3JvbmcuIEl0IGlzIEFTQ0lJLCBub3QKKyAgIGJpbmFyeSAobWFraW5nIGl0IGVhc2llciB0byB1c2UgZnJvbSB0aGUgY29tbWFuZCBsaW5lLCBidXQgLi4uKSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzYzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA4ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Byb2JlSGlzdG9yeVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Jlc3VsdHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVIb3BzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUHJvYmVIaXN0b3J5VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLmM6IEZpeAorCisgd2FybmluZ3MgYW5kIGRhdGEgZm9ybWF0IGZvciBEYXRlQW5kVGltZSBvYmplY3RzLiAgVGhlc2UgbW9kdWxlcworIHdvcmssIGJ1dDogLSBUaGV5IGFyZSBMaW51eCBvbmx5IC0gUm93cyBtdXN0IGJlIGNyZWF0ZWQgd2l0aCByb3dTdGF0dXMgY3JlYXRlQW5kV2FpdCBiZWZvcmUgdGhleSBhcmUKKyBwb3B1bGF0ZWQgLSBBZ2VudCBtdXN0IHJ1biBhcyByb290IC0gQWdlbnQgaXMgYmxvY2tlZCB3aGlsZSB0ZXN0cyBydW4gLSBEYXRhIGZvcm1hdCBmb3IgSW5ldEFkZHJlc3Mgb2JqZWN0cyBpcyB3cm9uZy4gSXQgaXMgQVNDSUksIG5vdAorICAgYmluYXJ5IChtYWtpbmcgaXQgZWFzaWVyIHRvIHVzZSBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIGJ1dCAuLi4pIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAzNjMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDggIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUHJvYmVIaXN0b3J5VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUmVzdWx0c1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUhvcHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVQcm9iZUhpc3RvcnlUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVSZXN1bHRzVGFibGUuYzogRml4CisKKyB3YXJuaW5ncyBhbmQgZGF0YSBmb3JtYXQgZm9yIERhdGVBbmRUaW1lIG9iamVjdHMuICBUaGVzZSBtb2R1bGVzCisgd29yaywgYnV0OiAtIFRoZXkgYXJlIExpbnV4IG9ubHkgLSBSb3dzIG11c3QgYmUgY3JlYXRlZCB3aXRoIHJvd1N0YXR1cyBjcmVhdGVBbmRXYWl0IGJlZm9yZSB0aGV5IGFyZQorIHBvcHVsYXRlZCAtIEFnZW50IG11c3QgcnVuIGFzIHJvb3QgLSBBZ2VudCBpcyBibG9ja2VkIHdoaWxlIHRlc3RzIHJ1biAtIERhdGEgZm9ybWF0IGZvciBJbmV0QWRkcmVzcyBvYmplY3RzIGlzIHdyb25nLiBJdCBpcyBBU0NJSSwgbm90CisgICBiaW5hcnkgKG1ha2luZyBpdCBlYXNpZXIgdG8gdXNlIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgYnV0IC4uLikgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDM2MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOCAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdQcm9iZUhpc3RvcnlUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdSZXN1bHRzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlSG9wc1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVByb2JlSGlzdG9yeVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZS5jOiBGaXgKKworIHdhcm5pbmdzIGFuZCBkYXRhIGZvcm1hdCBmb3IgRGF0ZUFuZFRpbWUgb2JqZWN0cy4gIFRoZXNlIG1vZHVsZXMKKyB3b3JrLCBidXQ6IC0gVGhleSBhcmUgTGludXggb25seSAtIFJvd3MgbXVzdCBiZSBjcmVhdGVkIHdpdGggcm93U3RhdHVzIGNyZWF0ZUFuZFdhaXQgYmVmb3JlIHRoZXkgYXJlCisgcG9wdWxhdGVkIC0gQWdlbnQgbXVzdCBydW4gYXMgcm9vdCAtIEFnZW50IGlzIGJsb2NrZWQgd2hpbGUgdGVzdHMgcnVuIC0gRGF0YSBmb3JtYXQgZm9yIEluZXRBZGRyZXNzIG9iamVjdHMgaXMgd3JvbmcuIEl0IGlzIEFTQ0lJLCBub3QKKyAgIGJpbmFyeSAobWFraW5nIGl0IGVhc2llciB0byB1c2UgZnJvbSB0aGUgY29tbWFuZCBsaW5lLCBidXQgLi4uKSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNjMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBwZXJsL1NOTVAvU05NUC54czogUmVtb3ZlZCBhbiB1bnVzZWQgbGFiZWwgZnJvbSBwZXJsL1NOTVAvU05NUC54cy4KKyAgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBwZXJsL1NOTVAvU05NUC54czogUmVtb3ZlZCBhbiB1bnVzZWQgbGFiZWwgZnJvbSBwZXJsL1NOTVAvU05NUC54cy4KKyAgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAzNjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBwZXJsL1NOTVAvU05NUC54czogUmVtb3ZlZCBhbiB1bnVzZWQgbGFiZWwgZnJvbSBwZXJsL1NOTVAvU05NUC54cy4KKyAgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzNjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBwZXJsL1NOTVAvU05NUC54czogUmVtb3ZlZCBhbiB1bnVzZWQgbGFiZWwgZnJvbSBwZXJsL1NOTVAvU05NUC54cy4KKyAgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM2MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmMsIGFnZW50L2hlbHBlcnMvb2xkX2FwaS5jLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaDogQ0hBTkdFUzogc25tcGQ6IERlY2xhcmUgdGhlIE9JRAorCisgYXJndW1lbnQgdHlwZSBvZiBNSUIgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBhcyAnY29uc3Qgb2lkIConIGluc3RlYWQKKyBvZiAnb2lkIConIHNpbmNlIHRoZXNlIGZ1bmN0aW9ucyBkbyBub3QgbW9kaWZ5IHRoZSBPSUQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9uZXRsaW5rLmMsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9hcnAuaDogVXNlIHRoZSBjb3JyZWN0IGRhdGEgdHlwZSBmb3IKKworIHRoZSAnY2FjaGUgZXhwaXJlZCcgdmFyaWFibGU6IGNoYXIgaW5zdGVhZCBvZiBpbnQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNjAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmM6IEZpeGVkIGEgY29tcGlsZXIgd2FybmluZyB0aGF0IHdhcworCisgaW50cm9kdWNlZCBpbiByMjAxNTEuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvd2luc2VydmljZS5jOiBXaW4zMjogaW1wcm92ZWQgc291cmNlIGNvZGUgY29uc2lzdGVuY3kgYnkKKworIHVzaW5nIExQQ1RTVFIgaW5zdGVhZCBvZiBMUENTVFIuIE5vdGU6IHRoaXMgZG9lcyBub3QgbWVhbiB0aGF0CisgVW5pY29kZSBidWlsZHMgYXJlIHN1cHBvcnRlZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzNTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvd2luc2VydmljZS5jOiBXaW4zMjogaW1wcm92ZWQgc291cmNlIGNvZGUgY29uc2lzdGVuY3kgYnkKKworIHVzaW5nIExQQ1RTVFIgaW5zdGVhZCBvZiBMUENTVFIuIE5vdGU6IHRoaXMgZG9lcyBub3QgbWVhbiB0aGF0CisgVW5pY29kZSBidWlsZHMgYXJlIHN1cHBvcnRlZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM1OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNyAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9uZXRsaW5rLmM6IEFkZCBmaWxlCisKKyBmb3Jnb3R0ZW4gaW4gcjIwMzUzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM1NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg6IFJldmVydGVkIGEgY2hhbmdlIHRoYXQgd2FzCisKKyBjb21taXR0ZWQgYWNjaWRlbnRhbGx5IGluIHIyMDI3Ni4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzNTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jOiBGaXhlZCB0d28gY29tcGlsZXIKKworIHdhcm5pbmdzLiAgKEJhY2twb3J0ZWQgcjIwMjM2IGZyb20gdGhlIHRydW5rLikgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDM1NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmM6IENvbW1lbnRlZCBvdXQgYW4gdW51c2VkIGZ1bmN0aW9uCisKKyBiZWNhdXNlIHRoZSBjb21waWxlciBjb21wbGFpbmVkIGFib3V0IGl0LiAgKEJhY2twb3J0ZWQgcjIwMjM3IGZyb20KKyB0aGUgdHJ1bmsuKSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzU0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2RhdGFfCisgICAgICAgYWNjZXNzLmMsIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvYXJwLmg6IENIQU5HRVM6IHNubXBkOiBQQVRDSCAzMTI1OTY6CisKKyBmcm9tIGZhYmxlZDgwOiBsaXN0ZW4gZm9yIG5ldGxpbmsgY2hhbmdlIGV2ZW50cyBmb3IgdGhlIGFycC1yZWxhdGVkCisgdGFibGVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM1MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5oOiBORVdTOiBQQVRDSAorCisgMzE5ODc4MTogZnJvbSBmZW5uZXI6IEdldCBkaXNtYW4vcGluZyBhbmQgZGlzbWFuL3RyYWNlcm91dGUgdG8gYXQKKyBsZWFzdCBjb21waWxlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAzNTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuaDogTkVXUzogUEFUQ0gKKworIDMxOTg3ODE6IGZyb20gZmVubmVyOiBHZXQgZGlzbWFuL3BpbmcgYW5kIGRpc21hbi90cmFjZXJvdXRlIHRvIGF0CisgbGVhc3QgY29tcGlsZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzUyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmg6IE5FV1M6IFBBVENICisKKyAzMTk4NzgxOiBmcm9tIGZlbm5lcjogR2V0IGRpc21hbi9waW5nIGFuZCBkaXNtYW4vdHJhY2Vyb3V0ZSB0byBhdAorIGxlYXN0IGNvbXBpbGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDM1MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5oOiBORVdTOiBQQVRDSAorCisgMzE5ODc4MTogZnJvbSBmZW5uZXI6IEdldCBkaXNtYW4vcGluZyBhbmQgZGlzbWFuL3RyYWNlcm91dGUgdG8gYXQKKyBsZWFzdCBjb21waWxlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzNTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3N5c3RlbS5jOiBORVdTOiBzbm1wbGliOiBhZGQgb3B0aW9uYWwgc3VwcG9ydCBmb3IgbG9jYWwKKworIEROU1NFQyB2YWxpZGF0aW9uIG9mIGhvc3RuYW1lcyAgLSBvcHRpb25hbCBhdCBjb25maWd1cmUgdGltZTogLS13aXRoLWxvY2FsLWRuc3NlYy12YWxpZGF0aW9uICAtIHJlcXVpcmVzIEROU1NFQy1Ub29sIHZhbGlkYXRpb24gbGlicmFyaWVzICAtIGluaXRpYWwgc3VwcG9ydCwgZm9yIHN5c3RlbXMgd2l0aCBnZXRhZGRyaW5mby4gc3VwcG9ydCBmb3IKKyAgICBhZGRpdGlvbmFsIHJlc29sdmVyIGludGVyZmFjZXMgY29taW5nIHNvb24uICAgLSBhbHNvIFRPRE86IGZsYWcgZm9yIGlnbm9yaW5nIHZhbGlkYXRvaW4gZXJyb3JzIChsb2cgJiBjb250aW51ZSkgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzUxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA2ICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmg6IG1vdmUgdW51c2VkIChhbmQgdG9vIGdlbmVyaWMpCisKKyB0b2tlbiB3aXRoaW4gVUNEX0NPTVBBVElCTEUgaWZkZWYgICAtIE1BWExBQkVMIGNvbmZsaWN0cyB3aXRoIDxhcnBhL25hbWVzZXIuaD4gICAtIGFkZGVkIE5FVFNOTVBfTUFYTEFCRUwgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzUwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA2ICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L01ha2VmaWxlLmluLCBhcHBzL01ha2VmaWxlLmluLCAKKyAgICAgIGFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzIsIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGUsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogdXBkYXRlIGNvbmZpZ3VyZS9NYWtlZmlsZXMKKworIGZvciBETlNTRUMgbG9jYWwgdmFsaWRhdGlvbiBvcHRpb24gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzQ5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA2ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIENIQU5HRVM6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDM0NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDaGFuZ2VMb2c6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDM0NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQ6IG1ha2UgZGVwZW5kIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDM0NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgbWFuL25ldHNubXBfYWdlbnQuMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsIAorICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgCisgICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2RhdGFfbGlzdC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgCisgICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsIAorICAgICAgbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIG1hbi9uZXRzbm1wX2xlYWYuMywgCisgICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX211bHRpcGxleGVyLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCBtYW4vbmV0c25tcF9vbGRfYXBpLjMsIAorICAgICAgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsIAorICAgICAgbWFuL25ldHNubXBfcm93X21lcmdlLjMsIG1hbi9uZXRzbm1wX3NjYWxhci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCBtYW4vbmV0c25tcF9zZXJpYWxpemUuMywgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCBtYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMywgCisgICAgICBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGUuMywgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsIG1hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCBtYW4vbmV0c25tcF91dGlsLjMsCisgICAgICAgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgCisgICAgICBtYW4vbmV0c25tcF93YXRjaGVyLjM6IGRvY3VtZW50YXRpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDM0NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkaXN0L25ldC1zbm1wLnNwZWMsIAorICAgICAgc25tcGxpYi9zbm1wX3ZlcnNpb24uYzogVmVyc2lvbiBudW1iZXIgdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDM0MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zeXNjdGwuYzogcmVtb3ZlZCB0aGUKKworIGFjY2lkZW50YWwgYnJva2VuIGZlYXR1cmUgcmVxdWlyZSBsaW5lIHRoYXQgZ290IGhhbGYgaW5zZXJ0ZWQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzQyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA2ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIENIQU5HRVM6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDM0MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDaGFuZ2VMb2c6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDMzOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQ6IG1ha2UgZGVwZW5kIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDMzOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgbWFuL25ldHNubXBfYWdlbnQuMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsIAorICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgCisgICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2RhdGFfbGlzdC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgCisgICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsIAorICAgICAgbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIG1hbi9uZXRzbm1wX2xlYWYuMywgCisgICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX211bHRpcGxleGVyLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCBtYW4vbmV0c25tcF9vbGRfYXBpLjMsIAorICAgICAgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsIAorICAgICAgbWFuL25ldHNubXBfcm93X21lcmdlLjMsIG1hbi9uZXRzbm1wX3NjYWxhci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCBtYW4vbmV0c25tcF9zZXJpYWxpemUuMywgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCBtYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMywgCisgICAgICBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGUuMywgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsIG1hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCBtYW4vbmV0c25tcF91dGlsLjMsCisgICAgICAgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgCisgICAgICBtYW4vbmV0c25tcF93YXRjaGVyLjM6IGRvY3VtZW50YXRpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDMzNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkaXN0L25ldC1zbm1wLnNwZWMsIAorICAgICAgc25tcGxpYi9zbm1wX3ZlcnNpb24uYzogVmVyc2lvbiBudW1iZXIgdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDMzNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB3aW4zMi9kaXN0L2luc3RhbGxlci9uZXQtc25tcC5uc2k6IEZpeCBpbmNvbXBsZXRlIHVuaW5zdGFsbAorCisgY29uZmlndXJhdGlvbjogLSBicm9rZW4gcmVtb3ZhbCBvZiBNaWNyb3NvZnQgRExMIC0gcmVtb3ZlIGFzc29ydGVkIG5ldyBNSUJzIGFuZCBoZWFkZXIgZmlsZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDMzNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB3aW4zMi9kaXN0L2luc3RhbGxlci9uZXQtc25tcC5uc2k6IEZpeCBpbmNvbXBsZXRlIHVuaW5zdGFsbAorCisgY29uZmlndXJhdGlvbjogLSBicm9rZW4gcmVtb3ZhbCBvZiBNaWNyb3NvZnQgRExMIC0gcmVtb3ZlIGFzc29ydGVkIG5ldyBNSUJzIGFuZCBoZWFkZXIgZmlsZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDMzNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB3aW4zMi9kaXN0L2luc3RhbGxlci9uZXQtc25tcC5uc2k6IEZpeCBpbmNvbXBsZXRlIHVuaW5zdGFsbAorCisgY29uZmlndXJhdGlvbjogLSBicm9rZW4gcmVtb3ZhbCBvZiBNaWNyb3NvZnQgRExMIC0gcmVtb3ZlIGFzc29ydGVkIG5ldyBNSUJzIGFuZCBoZWFkZXIgZmlsZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDMzNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB3aW4zMi9kaXN0L2luc3RhbGxlci9uZXQtc25tcC5uc2k6IEZpeCBpbmNvbXBsZXRlIHVuaW5zdGFsbAorCisgY29uZmlndXJhdGlvbjogLSBicm9rZW4gcmVtb3ZhbCBvZiBNaWNyb3NvZnQgRExMIC0gcmVtb3ZlIGFzc29ydGVkIG5ldyBNSUJzIGFuZCBoZWFkZXIgZmlsZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzM1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA2ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHdpbjMyL2Rpc3QvaW5zdGFsbGVyL25ldC1zbm1wLm5zaTogRml4IGluY29tcGxldGUgdW5pbnN0YWxsCisKKyBjb25maWd1cmF0aW9uOiAtIGJyb2tlbiByZW1vdmFsIG9mIE1pY3Jvc29mdCBETEwgLSByZW1vdmUgYXNzb3J0ZWQgbmV3IE1JQnMgYW5kIGhlYWRlciBmaWxlcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMzM1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA2ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHdpbjMyL2Rpc3QvYnVpbGQtYmluYXJ5LnBsOiBTdXBwb3J0IFRhci9HWmlwIGNvbW1hbmQgcGF0aHMKKworIGNvbnRhaW5pbmcgc3BhY2VzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAzMzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGw6IFN1cHBvcnQgVGFyL0daaXAgY29tbWFuZCBwYXRocworCisgY29udGFpbmluZyBzcGFjZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDMzNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB3aW4zMi9kaXN0L2J1aWxkLWJpbmFyeS5wbDogU3VwcG9ydCBUYXIvR1ppcCBjb21tYW5kIHBhdGhzCisKKyBjb250YWluaW5nIHNwYWNlcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHdpbjMyL2Rpc3QvYnVpbGQtYmluYXJ5LnBsOiBSZXBvcnQgR1ppcCBjb21tYW5kIGNvcnJlY3RseQorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzMzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA2ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICB3aW4zMi9kaXN0L2J1aWxkLWJpbmFyeS5wbDogUmVwb3J0IEdaaXAgY29tbWFuZCBjb3JyZWN0bHkKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDMzMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGw6IFJlcG9ydCBHWmlwIGNvbW1hbmQgY29ycmVjdGx5CisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMzMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmM6IEZpeCBmb3IgRHJhZ29uRmx5IEJTRCAoZG9lcworICAgICAgbm90CisKKyBkZWZpbmUgSVBfU0VORFNSQ0FERFIpIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzMzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDUgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5jOiBGaXggZm9yIERyYWdvbkZseSBCU0QgKGRvZXMKKyAgICAgIG5vdAorCisgZGVmaW5lIElQX1NFTkRTUkNBRERSKSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDUgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmg6IEZpeCBzcGVsbGluZyBvZgorCisgU09fUkVDVkRTVEFERFIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDMzMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaDogRml4IHNwZWxsaW5nIG9mCisKKyBTT19SRUNWRFNUQUREUiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDUgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaCwgbWFuL3NubXAuY29uZi41LmRlZiwgCisgICAgICBzbm1wbGliL3NubXBfYXBpLmM6IE5FV1M6IGFwcHM6IGFkZCBzbm1wLmNvbmYgdG9rZW5zIGZvciB0aW1lb3V0cworCisgYW5kIHJldHJpZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzMwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3Rvb2xzLmMsIHRlc3RpbmcvVEVTVENPTkYuc2g6IENIQU5HRVM6IE1pbkdXOiBNYWRlCisKKyByZWdyZXNzaW9uIHRlc3Qgb3V0cHV0IGluZGVwZW5kZW50IG9mIHRoZSBOZXQtU05NUCB2YXJpYWJsZXMgZGVmaW5lZAorIGluIHRoZSBXaW5kb3dzIHJlZ2lzdHJ5LiBTb21lIHRlc3RzIHRoYXQgZmFpbGVkIHByZXZpb3VzbHkgYWZ0ZXIgdGhlCisgTmV0LVNOTVAgYmluYXJpZXMgKE1TVkMgYnVpbGQpIGhhZCBiZWVuIGluc3RhbGxlZCBkbyBub3cgcGFzcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzMjkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdG9vbHMuYywgdGVzdGluZy9URVNUQ09ORi5zaDogQ0hBTkdFUzogTWluR1c6IE1hZGUKKworIHJlZ3Jlc3Npb24gdGVzdCBvdXRwdXQgaW5kZXBlbmRlbnQgb2YgdGhlIE5ldC1TTk1QIHZhcmlhYmxlcyBkZWZpbmVkCisgaW4gdGhlIFdpbmRvd3MgcmVnaXN0cnkuIFNvbWUgdGVzdHMgdGhhdCBmYWlsZWQgcHJldmlvdXNseSBhZnRlciB0aGUKKyBOZXQtU05NUCBiaW5hcmllcyAoTVNWQyBidWlsZCkgaGFkIGJlZW4gaW5zdGFsbGVkIGRvIG5vdyBwYXNzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDMyOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi90b29scy5jLCB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9URVNUQ09ORi5zaDogCisKKyBDSEFOR0VTOiBNaW5HVzogTWFkZSByZWdyZXNzaW9uIHRlc3Qgb3V0cHV0IGluZGVwZW5kZW50IG9mIHRoZQorIE5ldC1TTk1QIHZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBXaW5kb3dzIHJlZ2lzdHJ5LiBTb21lIHRlc3RzIHRoYXQKKyBmYWlsZWQgcHJldmlvdXNseSBhZnRlciB0aGUgTmV0LVNOTVAgYmluYXJpZXMgKE1TVkMgYnVpbGQpIGhhZCBiZWVuCisgaW5zdGFsbGVkIGRvIG5vdyBwYXNzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDMyOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi90b29scy5jLCB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9URVNUQ09ORi5zaDogCisKKyBDSEFOR0VTOiBNaW5HVzogTWFkZSByZWdyZXNzaW9uIHRlc3Qgb3V0cHV0IGluZGVwZW5kZW50IG9mIHRoZQorIE5ldC1TTk1QIHZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBXaW5kb3dzIHJlZ2lzdHJ5LiBTb21lIHRlc3RzIHRoYXQKKyBmYWlsZWQgcHJldmlvdXNseSBhZnRlciB0aGUgTmV0LVNOTVAgYmluYXJpZXMgKE1TVkMgYnVpbGQpIGhhZCBiZWVuCisgaW5zdGFsbGVkIGRvIG5vdyBwYXNzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzI5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgd2luMzIvZW5jb2RlX2tleWNoYW5nZS9lbmNvZGVfa2V5Y2hhbmdlLnZjcHJvaiwgCisgICAgICB3aW4zMi9saWJhZ2VudC9saWJhZ2VudC52Y3Byb2osIAorICAgICAgd2luMzIvbGlibmV0c25tcHRyYXBkL2xpYm5ldHNubXB0cmFwZC52Y3Byb2osIAorICAgICAgd2luMzIvbGlic25tcC9saWJzbm1wLnZjcHJvaiwKKyAgICAgIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXBfZGxsLnZjcHJvaiwgCisgICAgICB3aW4zMi9uZXRzbm1wbWlicy9uZXRzbm1wbWlicy52Y3Byb2osIAorICAgICAgd2luMzIvc25tcGJ1bGtnZXQvc25tcGJ1bGtnZXQudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXBidWxrd2Fsay9zbm1wYnVsa3dhbGsudmNwcm9qLCB3aW4zMi9zbm1wZC9zbm1wZC52Y3Byb2osIAorICAgICAgd2luMzIvc25tcGRlbHRhL3NubXBkZWx0YS52Y3Byb2osIHdpbjMyL3NubXBkZi9zbm1wZGYudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXBnZXQvc25tcGdldC52Y3Byb2osCisgICAgICB3aW4zMi9zbm1wZ2V0bmV4dC9zbm1wZ2V0bmV4dC52Y3Byb2osIAorICAgICAgd2luMzIvc25tcG5ldHN0YXQvc25tcG5ldHN0YXQudmNwcm9qLAorICAgICAgd2luMzIvc25tcHNldC9zbm1wc2V0LnZjcHJvaiwgIHdpbjMyL3NubXBzdGF0dXMvc25tcHN0YXR1cy52Y3Byb2osCisgICAgICAgd2luMzIvc25tcHRhYmxlL3NubXB0YWJsZS52Y3Byb2osIHdpbjMyL3NubXB0ZXN0L3NubXB0ZXN0LnZjcHJvaiwKKyAgICAgICB3aW4zMi9zbm1wdHJhbnNsYXRlL3NubXB0cmFuc2xhdGUudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXB0cmFwL3NubXB0cmFwLnZjcHJvaiwgd2luMzIvc25tcHRyYXBkL3NubXB0cmFwZC52Y3Byb2osIAorICAgICAgd2luMzIvc25tcHVzbS9zbm1wdXNtLnZjcHJvaiwgd2luMzIvc25tcHZhY20vc25tcHZhY20udmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXB3YWxrL3NubXB3YWxrLnZjcHJvaiwgd2luMzIvd2luMzIuc2xuLAorICAgICAgd2luMzIvd2luMzJkbGwuc2xuOgorCisgUmVtb3ZlZCBWaXN1YWwgU3R1ZGlvIDIwMDUgc29sdXRpb24gYW5kIHByb2plY3QgZmlsZXMgYWdhaW4gc2luY2UKKyBWaXN1YWwgU3R1ZGlvIDIwMTAgcmVmdXNlcyB0byBsb2FkIHRoZXNlLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzI4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBNYWtlZmlsZS5pbjogY2xlYW4gdGhlIHBlcmwvcHl0aG9uIGZlYXR1cmUgbGVmdG92ZXJzIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzI3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czogZml4IG1pYiBtb2R1bGUgaW52b2NhdGlvbiBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMyNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5jOiBmaXggaWZkZWYKKworIHR5cG8gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzI1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBNYWtlZmlsZS5pbjogZml4IHBlcmwvcHl0aG9uIGZlYXR1cmUgZGVwZW5kZW5jaWVzIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzI0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9hdXRvX25saXN0LmM6IHJldmVydGVkIGF1dG9fbmxpc3QgbWFjcm8gdXNhZ2U7IHRoZSBmdW5jdGlvbgorCisgaXMgdXNlZCBpbiBoZWFkZXJzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMyMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOiBBZGQgYSAtVCBvcHRpb24gdG8gcnVuICdtYWtlIHRlc3QnCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMyMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYXBwcy9NYWtlZmlsZS5pbjogZml4IHRoZSBlbmNvZGVfa2V5Y2hhbmdlIC5mdCBmaWxlbmFtZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMyMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogcGVybC9UcmFwUmVjZWl2ZXIvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgsIHNubXBsaWIvdG9vbHMuYzogCisKKyBmaXggdGhlIGZlYXR1cmVzIHJlcXVpcmVkIGJ5IHRoZSBUcmFwUmVjZWl2ZXIgbW9kdWxlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMyMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIE1ha2VmaWxlLmluOiBBZGQgdGhlIFRyYXBSZWNlaXZlciB0byB0aGUgbGlzdCBvZiBwZXJsIG1vZHVsZXMKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzE5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBwZXJsL1NOTVAvU05NUC54czogdXNlIHRoZSBuZXdlciBOZXQtU05NUCBBUElzLCByYXRoZXIgdGhhbiB0aGUKKworIG9sZGVyIFVDRCBvbmVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMxOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHBlcmwvU05NUC9TTk1QLnhzOiByZW1vdmUgU0VUIGNvZGUgd2hlbiB1bmRlciAtLXJlYWQtb25seSBtb2RlCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMxNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5jOiByZXF1aXJlCisKKyBjaGVja192Yl91aW50IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMxNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogICAqIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGVfc3ViYWdlbgorICAgICAgIHQuYywgYWdlbnQvc25tcF9hZ2VudC5jLCBsb2NhbC9taWIyYy1jb25mLmQvc3ViYWdlbnQubTJjLCAKKyAgICAgIHB5dGhvbi9uZXRzbm1wL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oLCAKKyAgICAgIHNubXBsaWIvc25tcF9sb2dnaW5nLmM6IGxhc3Qgb2YgdGhlIHBlcmwtdXNlZCBmZWF0dXJlIGZ1bmN0aW9ucworICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9SbW9uL2V2ZW50LmMsIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlX3N1YmFnZW4KKyAgICAgICB0LmMsIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jLCBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9zdWJhZ2VudC5tMmMsIHNubXBsaWIvbWliLmMsIHNubXBsaWIvcGFyc2UuYzoKKworIHN0YXJ0ZWQgdGhlIGZpbmFsIHNldCBvZiBmdW5jdGlvbiByZW1vdmFscyBmb3IgZmVhdHVyZXMgcmVxdWlyZWQgYnkKKyBwZXJsL3B5dGhvbiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLXNvdXJjZS1pbmNsdWRlcy5tMmk6IGFkZGVkIHRoZQorCisgbmV0LXNubXAtZmVhdHVyZXMuaCBoZWFkZXIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgcGVybC9PSUQvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgsIAorICAgICAgcGVybC9TTk1QL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oLCAKKyAgICAgIHBlcmwvVHJhcFJlY2VpdmVyL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oLCAKKyAgICAgIHBlcmwvYWdlbnQvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmg6IEFkZGVkIHBlcmwgZmVhdHVyZQorCisgcmVxdWlyZW1lbnRzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIE1ha2VmaWxlLmluLCBNYWtlZmlsZS5ydWxlcywgY29uZmlndXJlLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3BlcmxfcHl0aG9uLCAKKyAgICAgIHBlcmwvQVNOL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oLCAKKyAgICAgIHBlcmwvT0lEL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oLCAKKyAgICAgIHBlcmwvU05NUC9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaCwgCisgICAgICBwZXJsL2FnZW50L25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oLCAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaDogaG9wZWZ1bGx5CisgICAgICB3b3JraW5nCisKKyBydWxlcyB0byBhcHBseSBmZWF0dXJlIHJlcXVpcmVtZW50cyB0byBwZXJsIGFuZCBweXRob24gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfaW9jdGwuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3Nfc29sYXJpczIuYywgCisgICAgICBhZ2VudC9zbm1wX2FnZW50LmM6IG1vcmUgY2hhbmdlcyB0byByZW1vdmUgdW5uZWVkZWQgZnVuY3Rpb25zCisKKyBwcmltYXJpbHkgd2hlbiB3cml0ZSBtb2RlIGlzIHR1cm5lZCBvZmYgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzEwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfbG9nZ2luZy5jOiBjaGFuZ2UgdGhlIHdhbnQgaW52b2NhdGlvbiB0byBvbmx5IGRlZmF1bHQKKworIHRvIGV4Y2x1ZGUgZXh0ZXJuYWwgaG9va3MgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzA5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZpbmQtdW51c2VkLWNvZGU6IHNlYXJjaCB0aHJvdWdoIC54cyBmaWxlcyBmb3IKKworIGZ1bmN0aW9uIGludm9jYXRpb25zIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMwOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvYXV0b19ubGlzdC5jOiBmb3Jnb3QgYSBzZW1pY29sb24gZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9SbW9uL2FsYXJtVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uVGFibGUuYzogaXF1ZXJ5IHBkdQorICAgICAgc2Vzc2lvbnMKKworIGFyZSBvbmx5IG5lZWRlZCBpbiB3cml0ZSBtb2RlLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzA2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhcHBzL01ha2VmaWxlLmluOiBmaXggZmVhdHVyZSBkZXRlY3Rpb24gb2Ygc29tZXRpbWVzLWJ1aWx0CisKKyBhcHBsaWNhdGlvbnMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzA1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9hdXRvX25saXN0LmM6IHVzZSB0aGUgZmVhdHVyZV91bnVzZWQgbWFjcm8gZm9yIG1ha2luZyBhbgorCisgZW1wdHkgZmlsZSBmb3IgY29uc2lzdGVuY3kgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzA0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMsIGFnZW50L21pYmdyb3VwL1Jtb24vYWxhcm1UYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2h3X2ZzeXMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9uZXR3b3JrLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX29wZW5ic2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX3NvbGFyaXMyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zeXNjdGwuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2NvbW1vbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXQKKyAgICAgICBhX2FjY2Vzcy5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jLCBhZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYywKKyAgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUvc25tcFRsc3RtQ2VydFRvVFNOCisgICAgICAgVGFibGUuYywgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9pcXVlcnkuYywgYXBwcy9zbm1wdGxzLmMsIAorICAgICAgc25tcGxpYi9jZXJ0X3V0aWwuYywgc25tcGxpYi9taWIuYywgc25tcGxpYi9zbm1wX29wZW5zc2wuYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYzogQW5vdGhlciBzd2VlcCBmb3IgdW51c2VkCisKKyBmdW5jdGlvbnMgd2hlbiByZWFkX29ubHkgbW9kZSBpcyB0dXJuZWQgb24gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzAzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvaGVscGVycy90YWJsZV90ZGF0YS5jLCBhZ2VudC9taWJncm91cC9SbW9uL2FsYXJtVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNMb2dnaW5nLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFNldFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb25UYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwRXhwcmVzc2lvblRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwT2JqZWN0VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zeXNjdGwuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWJfNV81LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuYworICAgICAgICwgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpCisgICAgICAgZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQWRkclRhYmxlL3NubXBUbHN0bUFkZHJUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1DZXJ0VG9UU05UYWJsZS9zbm1wVGxzdG1DZXJ0VG9UU04KKyAgICAgICBUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1QYXJhbXNUYWJsZS9zbm1wVGxzdG1QYXJhbXNUYWJsZS4KKyAgICAgICBjLCBzbm1wbGliL2NoZWNrX3ZhcmJpbmQuYzogbWFyayBhIHNsZXcgb2YgZnVuY3Rpb25zIGFzIGZlYXR1cmVzCisKKyB0aGF0IGFyZSBvbmx5IG5lZWRlZCB3aXRoIHdyaXRlX3N1cHBvcnQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzAyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZpbmQtdW51c2VkLWNvZGU6IHJ1biBncmVwIHdpdGggLW4gZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF90cmFuc3BvcnQuYywgc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmM6IAorCisgZmVhdHVyaXplIG5ldHNubXBfc29ja2FkZHJfc2l6ZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMDAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYzogcmVtb3ZlIGEKKworIGZlYXR1cmVfcmVxdWlyZSBub3QgYWN0dWFsbHkgbmVlZGVkLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjk5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL2NlcnRfdXRpbC5jLCBzbm1wbGliL2NvbnRhaW5lci5jOiBtYXJrIFNVQkNPTlRBSU5FUl9GSU5ECisKKyBhcyBhIGZlYXR1cmUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjk4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfY2xpZW50LmMsIHNubXBsaWIvc25tcHRzbS5jOiB0aGUgcm93IGNyZWF0aW9uIEFQSSBpcworCisgb25seSB1c2VkIGluIHRoZSBUU00gaW1wbGVtZW50YXRpb24gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjk3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfYXBpLmMsIHNubXBsaWIvc25tcHRzbS5jOiB0aGUgbmV3ZXIgY29udGV4dCBlbmdpbmVJRAorCisgcHJvYmluZyBpcyBvbmx5IG5lZWRlZCBpZmYgVFNNIGlzIGluIHVzZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyOTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvZGlyX3V0aWxzLmM6IGZpeCBhbiBpZmRlZiB0eXBvIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjk1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfb3BlbnNzbC5jOiBtb3ZlZCBmZXRhdXJlIGNoaWxkX29mIHN0YXRlbWVudHMgdG8gdGhlCisKKyB0b3Agb2YgdGhlIGZpbGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjk0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgc25tcGxpYi9jZXJ0X3V0aWwuYywgc25tcGxpYi9jb250YWluZXIuYywgc25tcGxpYi9kaXJfdXRpbHMuYywgCisgICAgICBzbm1wbGliL3NubXBfb3BlbnNzbC5jOiBtYXJrZWQgYSBjb3VwbGUgb2YgcmFyZWx5IHVzZWQgY29udGFpbmVyCisKKyBmdW5jdGlvbnMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyOTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYzogc3BsaXQgb3V0IHRoZSBwcmVmaXhfaW5mbyBmZWF0dXJlCisgICAgICBpbnRvCisKKyBzdWItZmVhdHVyZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjkyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgICogCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfaW50CisgICAgICAgZXJmYWNlLmM6IG1hcmsgdGhlIGFjY2Vzc29yIGZ1bmN0aW9ucyBhcyB1bm5lZWRlZCBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI5MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuYzogZml4IGEgY2hpbGRfb2Ygc3RhdGVtZW50CisKKyB3aXRoIGEgY29weS9wYXN0ZSBlcnJvciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyOTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYzogdGhlIGNvbnRhaW5lciByb3ctcmVtb3ZlIGlzIG9ubHkKKworIG5lZWRlZCBpZiB0aGUgdGRhdGEgcmVtb3ZlX3JvdyBpcyBuZWVkZWQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjg5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvaGVscGVycy90YWJsZV90ZGF0YS5jLCBhZ2VudC9taWJncm91cC9SbW9uL2FsYXJtVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQWRkclRhYmxlL3NubXBUbHN0bUFkZHJUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1DZXJ0VG9UU05UYWJsZS9zbm1wVGxzdG1DZXJ0VG9UU04KKyAgICAgICBUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1QYXJhbXNUYWJsZS9zbm1wVGxzdG1QYXJhbXNUYWJsZS4KKyAgICAgICBjOiBmZWF0dXJlIG1hcmtpbmcgb2YgdW51c2VkIHRkYXRhIGZ1bmN0aW9ucyAgICAKKyAgICAgIHRhYmxlX3RkYXRhX2RlbGV0ZV90YWJsZSAgICAgdGFibGVfdGRhdGFfZXh0cmFjdF90YWJsZSAgICAKKyAgICAgIHRhYmxlX3RkYXRhX3JlbW92ZV9yb3cgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyODggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVFdmVudFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZGF0YV9zZXQuYzogcmVtb3ZhbCBvZiBzb21lIHJhcmVseSB1c2VkCisKKyAJZnVuY3Rpb25zIHRhYmxlX3NldF9tdWx0aV9hZGRfZGVmYXVsdF9yb3cgCXRhYmxlX2RhdGFzZXRfdW5yZWdpc3Rlcl9hdXRvX2RhdGFfdGFibGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjg3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czogQWRkZWQgYSBkZWZpbml0aW9uIHRvIGluY29ycG9yYXRlCisKKyByZWFkX29ubHkvbm90aWZ5X29ubHkgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjg2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYzogYWRkZWQgYSBtaXNzaW5nIGZlYXR1cmUgZGVmaW5pdGlvbgorCisgbGluZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyODUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L01ha2VmaWxlLmluOiBhZGRlZCBiYWNrIGluIG1pc3NpbmcgbWliZ3JvdXAgZmVhdHVyZQorCisgZGVmaW5pdGlvbiBsaXN0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI4NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6IEluY2x1ZGUgdGhlIG9yaWdpbmFsIGJhc2UgZmxhZ3MgdG8KKworIGVuc3VyZSAtLXdpdGgtZGVmYXVsdHMgZ2V0cyBwaWNrZWQgdXAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjgzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czogZml4IHVzYWdlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjgyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czogQWRkZWQgYSAtYiBmbGFnIGZvciBiYXNlIGFyZ3VtZW50cyB0bworCisgc3RhcnQgZnJvbSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyODEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOiBkZWZhdWx0IHRvIGEgbGluZWFyIHNlYWNoIG9mIHNpemUKKworIHRlc3RzLCByYXRoZXIgdGhhbiBleHBvbmVudGlhbCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyODAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgsIHNubXBsaWIvc25tcFVEUERvbWFpbi5jOiAKKworIENIQU5HRVM6IHNubXBsaWI6IEd1YXJkIG5ldHNubXBfdWRwX3JlY3Zmcm9tKCkgZXRjLiBkZWNsYXJhdGlvbnMKKyBjb25zaXN0ZW50bHkuICBDSEFOR0VTOiBXaW4zMjogQnVpbGRzIHdpdGggVmlzdWFsIFN0dWRpbyAyMDEwLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDI3OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wMyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5jOiBDSEFOR0VTOiBzbm1wbGliOgorICAgICAgR3VhcmQKKworIG5ldHNubXBfdWRwX3JlY3Zmcm9tKCkgZXRjLiBkZWNsYXJhdGlvbnMgY29uc2lzdGVudGx5LiAgQ0hBTkdFUzoKKyBXaW4zMjogQnVpbGRzIHdpdGggVmlzdWFsIFN0dWRpbyAyMDEwLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDI3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wMyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5jOiBDSEFOR0VTOiBzbm1wbGliOgorICAgICAgR3VhcmQKKworIG5ldHNubXBfdWRwX3JlY3Zmcm9tKCkgZXRjLiBkZWNsYXJhdGlvbnMgY29uc2lzdGVudGx5LiAgQ0hBTkdFUzoKKyBXaW4zMjogQnVpbGRzIHdpdGggVmlzdWFsIFN0dWRpbyAyMDEwLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjc4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTAzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3dpbnNlcnZpY2UuYzogQ0hBTkdFUzogV2luMzI6IFBBVENIOiAzMjkzODQyOiBFbGltaW5hdGUKKworIHJlZ2lzdHJ5IGFyZ3VtZW50IGxpbWl0IG9mIDEyNyBjaGFyYWN0ZXJzICh0aGlzIGxpbWl0YXRpb24gd2FzCisgcmVwb3J0ZWQgYnkgU3lsdmFpbiBEZXJ5KS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAyNzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvd2luc2VydmljZS5jOiBDSEFOR0VTOiBXaW4zMjogUEFUQ0g6IDMyOTM4NDI6IEVsaW1pbmF0ZQorCisgcmVnaXN0cnkgYXJndW1lbnQgbGltaXQgb2YgMTI3IGNoYXJhY3RlcnMgKHRoaXMgbGltaXRhdGlvbiB3YXMKKyByZXBvcnRlZCBieSBTeWx2YWluIERlcnkpLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDI3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wMyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi93aW5zZXJ2aWNlLmM6IENIQU5HRVM6IFdpbjMyOiBQQVRDSDogMzI5Mzg0MjogRWxpbWluYXRlCisKKyByZWdpc3RyeSBhcmd1bWVudCBsaW1pdCBvZiAxMjcgY2hhcmFjdGVycyAodGhpcyBsaW1pdGF0aW9uIHdhcworIHJlcG9ydGVkIGJ5IFN5bHZhaW4gRGVyeSkuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMjc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTAzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3dpbnNlcnZpY2UuYzogQ0hBTkdFUzogV2luMzI6IFBBVENIOiAzMjkzODQyOiBFbGltaW5hdGUKKworIHJlZ2lzdHJ5IGFyZ3VtZW50IGxpbWl0IG9mIDEyNyBjaGFyYWN0ZXJzICh0aGlzIGxpbWl0YXRpb24gd2FzCisgcmVwb3J0ZWQgYnkgU3lsdmFpbiBEZXJ5KS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiBDSEFOR0VTOiBXaW4zMjogaGVhZGVyIGZpbGUKKworIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4gY2FuIG5vdyBiZSB1c2VkIGluIHRoZSBNaW5HVworIGVudmlyb25tZW50LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDI3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiBDSEFOR0VTOiBXaW4zMjogaGVhZGVyIGZpbGUKKworIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4gY2FuIG5vdyBiZSB1c2VkIGluIHRoZSBNaW5HVworIGVudmlyb25tZW50LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDI3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiBDSEFOR0VTOiBXaW4zMjogaGVhZGVyIGZpbGUKKworIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4gY2FuIG5vdyBiZSB1c2VkIGluIHRoZSBNaW5HVworIGVudmlyb25tZW50LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDI3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiBDSEFOR0VTOiBXaW4zMjogaGVhZGVyIGZpbGUKKworIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4gY2FuIG5vdyBiZSB1c2VkIGluIHRoZSBNaW5HVworIGVudmlyb25tZW50LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTAyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg6IFdpbjMyIERMTCBidWlsZCBmaXhlcy4KKworIChCYWNrcG9ydGVkIHIyMDE4NCBmcm9tIHRydW5rLikgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDI3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oOiBXaW4zMiBETEwgYnVpbGQgZml4ZXMuCisKKyAoQmFja3BvcnRlZCByMjAxODQgZnJvbSB0cnVuay4pIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAyNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvd2luc2VydmljZS5jOiBTcGVsbGluZyBhbmQgZ3JhbW1hciBmaXhlcyBmb3IgdGhlIHNvdXJjZQorCisgY29kZSBjb21tZW50cyBpbiBzbm1wbGliL3dpbnNlcnZpY2UuYy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAyNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvd2luc2VydmljZS5jOiBTcGVsbGluZyBhbmQgZ3JhbW1hciBmaXhlcyBmb3IgdGhlIHNvdXJjZQorCisgY29kZSBjb21tZW50cyBpbiBzbm1wbGliL3dpbnNlcnZpY2UuYy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yOSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi93aW5zZXJ2aWNlLmM6IFNwZWxsaW5nIGFuZCBncmFtbWFyIGZpeGVzIGZvciB0aGUgc291cmNlCisKKyBjb2RlIGNvbW1lbnRzIGluIHNubXBsaWIvd2luc2VydmljZS5jLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDI3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yOSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi93aW5zZXJ2aWNlLmM6IFNwZWxsaW5nIGFuZCBncmFtbWFyIGZpeGVzIGZvciB0aGUgc291cmNlCisKKyBjb2RlIGNvbW1lbnRzIGluIHNubXBsaWIvd2luc2VydmljZS5jLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDI3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogTkVXUzogYWRkZWQgbm90ZSBhYm91dCB0aGUgbmV3IHRpbWluZyBmdW5jdGlvbiBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI3MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6IFVwZGF0ZSB0aGUgbWFudWFsIHBhZ2UgdG8gcmVmbGVjdCB0aGUgbmV3CisKKyB0aW1pbmcgb3B0aW9ucyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdG9vbHMuYzogYmV0dGVyIGRvY3VtZW50YXRpb24gZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb25mLmM6IHVzZSB0aGUKKworIG5ldHNubXBfc3RyaW5nX3RpbWVfdG9fc2VjcygpIGZvciBwYXJzaW5nIGZyZXF1ZW5jaWVzL3RpbWUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QxMDJwZHVfYnVpbGRfY2xpYi5jOiBmaXggcGR1CisKKyBidWlsZGluZyB0ZXN0cyB1bmRlciB2YXJpb3VzIGRpc2FibGVkIG1vZGVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI2OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMTAycGR1X2J1aWxkX2NsaWIuYzogZG9uJ3QgdHJ5IHRvCisKKyBidWlsZCB0aGUgR0VUIHBkdSB1bmRlciBub3RpZnlfb25seSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNjggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oLCBzbm1wbGliL3Rvb2xzLmM6IGZpeCBhIGJ1ZyB3aXRoCisKKyBuby1zdWZmaXggc3RyaW5ncyBhbmQgdXNlIGEgY29uc3QgaW5wdXQgc3RyaW5nIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI2NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogICAqIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDEwbmV0c25tcF9zdHJpbmdfdGltZV90b19zZWNzX2NsaWIuYzoKKworIEEgbmV3IHVuaXQgdGVzdCBmb3IgdGhlIHRpbWUgY29udmVyc2lvbiByb3V0aW5lIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI2NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzogdXNlIHRoZQorCisgbmV0c25tcF9zdHJpbmdfdGltZV90b19zZWNzKCkgZnVuY3Rpb24gZm9yIGNvbXB1dGluZyBpbnRlcnZhbAorIHBlcmlvZHMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjY1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaCwgc25tcGxpYi90b29scy5jOiBBZGRlZCBhCisKKyBuZXRzbm1wX3N0cmluZ190aW1lX3RvX3NlY3MoKSBmdW5jdGlvbnMgdG8gY29udmVydCwgZS5nLiwgMWggdG8gMzYwMCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNjQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzogcmVtb3ZlIGNvZGUgdG8gYnVpbGQvcGFyc2UgR0VUL2V0YyByZXF1ZXN0cworCisgd2hlbiBOT1RJRllfT05MWSBpcyB0dXJuZWQgb24uICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNjMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIE5FV1M6IHVwZGF0ZSB0aGUgTkVXUyB0byByZWZsZWN0IHRoZSBuZXcgLS1lbmFibGUtcmVhZC1vbmx5IGFuZAorCisgLS1lbmFibGUtbm90aWZ5LW9ubHkgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjYyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmM6IG1pbm9yCisKKyBpbXByb3ZlbWVudHMgZm9yIHJvbmx5IHZzIHJ3cml0ZSBoYW5kbGluZyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmM6IHN0aWxsIGVuYWJsZQorCisgUk9OTFkgd2hlbiBSV1JJVEUgaXNuJ3QgcG9zc2libGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjYwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYzogZml4IEdFVCBzdXBwb3J0IHdoZW4gbm9fd3JpdGUgaXMKKworIGVuYWJsZWQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjU5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOiBtYXJrIGEgZnV0dXJlCisKKyBtb2RpZmljYXRpb24gbmVlZCBpbiBhIGNvbW1lbnQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjU4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvaGVscGVycy9vbGRfYXBpLmM6IGZpeCBoYW5kbGluZyBvZiBub193cml0ZSBzdXBwb3J0CisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI1NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYywgYWdlbnQvc25tcF9hZ2VudC5jLCBhZ2VudC9zbm1wZC5jOiAKKworIGRvbid0IG9wZW4gYW55IGxpc3RlbmluZyB0cmFuc3BvcnRzIHdoZW4gbm90aWZ5LW9ubHkgaXMgc3BlY2lmaWVkIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI1NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZTogc2V0IHRoZQorCisgbm8tbGlzdGVuIGFuZCByZWFkLW9ubHkgZmxhZ3Mgd2hlbiAtLWVuYWJsZS1ub3RpZnktb25seSBpcyBzZXQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjU1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiByYW4gYXV0b2hlYWRlciBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI1NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVBYRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVENQSVB2NkRvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5jOiBpbXBsZW1lbnQgdGhlCisKKyBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUIGluIHRoZXNlIHRyYW5zcG9ydHMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjUzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBjb25maWd1cmU6IHJ1biBhdXRvY29uZiBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI1MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGU6IG1vdmUgdGhlIHJlYWQtb25seSBmbGFnCisKKyBkZWZpbml0aW9uIGJlbG93IHRoZSBub3RpZnktb25seSwgc2luY2Ugbm90aWZ5LW9ubHkgbmVlZHMgdG8gaW1wbHkKKyByZWFkLW9ubHkgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjUxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlOiBEZWZpbmVkIGEgbmV3CisKKyAtLWVuYWJsZS1ub3RpZnktb25seSBmbGFnIGZvciBidWlsZGluZyBhIHRvb2xzZXQgdGhhdCBvbmx5IGFsbG93cworIGZvciBub3RpZmljYXRpb25zIHdpdGggbm8gcmVhZC93cml0ZSBzdXBwb3J0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI1MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZTogRGVmaW5lZCBhIG5ldworCisgLS1uby1saXN0ZW4gZmxhZyB0byByZW1vdmUgbGlzdGVuaW5nIHN1cHBvcnQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjQ5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kZWZhdWx0X21vZHVsZXMuaDogdGhlIGRpc21hbiBzY2hlZHVsZSBtaWIgaXMgb25seQorCisgdXNlZnVsIHdoZW4gU0VUcyBhcmUgdHVybmVkIG9uIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI0OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuLmg6IHRoZSBkaXNtYW4gc2NoZWR1bGUgbWliIGlzIG9ubHkgdXNlZnVsCisKKyB3aGVuIFNFVHMgYXJlIHR1cm5lZCBvbiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUKKyAgICAgICBfaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludAorICAgICAgIGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXIKKyAgICAgICBmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2ludAorICAgICAgIGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfaW50ZXJmYQorICAgICAgIGNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYgorICAgICAgIGxlX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9pbnRlcmYKKyAgICAgICBhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9pbnRlcmZhY2UuCisgICAgICAgYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2UuCisgICAgICAgYzogZmluaXNoZWQgbm9fd3JpdGUgc3VwcG9ydCBmb3IgY29tbW9uIGluY2x1ZGVkIHRhYmxlcworICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNDYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jOiBBZGQgYmFjayBpbgorCisgJ25ldHNubXBfc2V0X3Jvd19jb2x1bW4nIHdoZW4gbm9fd3JpdGUgc3VwcG9ydCBpcyBlbmFibGVkIFRoaXMKKyBmdW5jdGlvbiBpcyBhIGdlbmVyaWMgZGF0YSBtYW5pcHVsYXRpb24gZnVuY3Rpb24sIG5vdCBTRVQgc3BlY2lmaWMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjQ1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYzogZG9uJ3QgdXNlIG1hcmtfcm93X2NvbHVtbl93cml0YWJsZQorCisgd2hlbiByZWFkLW9ubHkgc3VwcG9ydCBpcyBlbmFibGVkIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI0NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2FnZW50L25zQ2FjaGUuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNEZWJ1Zy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zTG9nZ2luZy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcF9zY2FsYXJzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYywgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvb3ZlcnJpZGUuYzogZml4IG5vX3dyaXRlIHN1cHBvcnQKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjQzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYzogZml4IG5vX3dyaXRlIHN1cHBvcnQgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYzogRG9uJ3QgZnJlZQorCisgdGhlIGlmWFRhYmxlIHJvdyBmb3VuZCBvbiBsb2FkIGZhaWx1cmUgYXMgd2UgZG9uJ3Qgb3duIGl0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAyNDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYzogRG9uJ3QgZnJlZQorCisgdGhlIGlmWFRhYmxlIHJvdyBmb3VuZCBvbiBsb2FkIGZhaWx1cmUgYXMgd2UgZG9uJ3Qgb3duIGl0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAyNDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYzogRG9uJ3QgZnJlZQorCisgdGhlIGlmWFRhYmxlIHJvdyBmb3VuZCBvbiBsb2FkIGZhaWx1cmUgYXMgd2UgZG9uJ3Qgb3duIGl0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAyNDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYzogRG9uJ3QgZnJlZQorCisgdGhlIGlmWFRhYmxlIHJvdyBmb3VuZCBvbiBsb2FkIGZhaWx1cmUgYXMgd2UgZG9uJ3Qgb3duIGl0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAyNDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYzogRG9uJ3QgZnJlZQorCisgdGhlIGlmWFRhYmxlIHJvdyBmb3VuZCBvbiBsb2FkIGZhaWx1cmUgYXMgd2UgZG9uJ3Qgb3duIGl0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI0MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBnaXQgYmFzaC1zaGVsbCBmdW5jdGlvbnMgdG8gZW5hYmxlCisKKyBicmFuY2ggc3dpdGNoaW5nIGFuZCBleHRlcm5hbCBidWlsZGluZyBUaGVzZSBsb2NhbCBzaGVsbCBmdW5jdGlvbnMKKyAoc25tcGNvbmZpZ3VyZSBhbmQgc25tcG1ha2UpIGxldCB5b3UgY29uZmlndXJlIGFuZCBidWlsZCB0aGUKKyBOZXQtU05NUCBzb3VyY2UgY29kZSBpbiBleHRlcm5hbCBkaXJlY3RvcmllcyB0aGF0IGFyZQorIGF1dG8tY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgZXhpc3RpbmcgYnJhbmNoIG5hbWUgKHdpdGggYW4gb3B0aW9uYWwKKyBzdWZmaXgpLiAgVGhpcyBsZXRzIHlvdSBydW4gJ3NubXBtYWtlJyBmcm9tIHdpdGhpbiB0aGUgc291cmNlCisgZGlyZWN0b3J5IGFuZCBoYXZlIGl0IGFjdHVhbGx5IGV4dGVybmFsbHkga2VlcCB0cmFjayBvZiBtb2RpZmllZAorIGZpbGVzLCBldGMsIHNvIGJ1aWxkaW5nIGluIG11bHRpcGxlIGJyYW5jaGVzIGNhbiBiZSBkb25lIGZyb20gYQorIHNpbmdsZSBnaXQgY2hlY2tvdXQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNDAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOiBjbGVhbiB1cCB0aGUgaXRlcmF0b3JzCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIzOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzogZnJlZSB2YXJiaW5kcyBhZnRlcgorCisgc2VuZGluZyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jOiBDb21tZW50ZWQgb3V0IGFuIHVudXNlZCBmdW5jdGlvbgorCisgYmVjYXVzZSB0aGUgY29tcGlsZXIgY29tcGxhaW5lZCBhYm91dCBpdC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIzNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmM6IEZpeGVkIHR3byBjb21waWxlcgorCisgd2FybmluZ3MuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjMgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmM6IFJlbW92ZSB1bm5lY2Vzc2FyeSBudWxsIGNoZWNrCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIzNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMyAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmM6IE1vdmUgcG9pbnRlciBkZXJlZmVyZW5jZSB0byBhZnRlcgorCisgdGhlIGNoZWNrIGZvciBzdWNjZXNzZnVsIGFsbG9jYXRpb24gb2YgdGhlIHBvaW50ZXIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjM0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIzICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvYWdlbnRfcmVnaXN0cnkuYzogUmVkdWNlIHZhcmlhYmxlIHNjb3BlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjMzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIzICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvYWdlbnRfcmVnaXN0cnkuYzogUmVtb3ZlIGFuIHVudXNlZCB2YXJpYWJsZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIzMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMyAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmM6IFJlZHVjZSB2YXJpYWJsZSBzY29wZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIzMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMyAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmM6IFJlZHVjZSB2YXJpYWJsZSBzY29wZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIzMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2FnZW50X3RyYXAuYzogUmVkdWNlIHZhcmlhYmxlIHNjb3BlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjI5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvYWdlbnRfdHJhcC5jOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjI4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBtYW4vc25tcGQuY29uZi41LmRlZjogbWVudGlvbiB3aGljaCBtb2R1bGUgaXMgcmVxdWlyZWQgd2hlbgorCisgYnVpbGRpbmcgdG8gZ2V0IHRoZSBkZWxpdmVyIHN1cHBvcnQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjI3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOiBkZWxldGVkIGFuIHVubmVlZGVkCisKKyBkZWJ1Z2dpbmcgc3RhdGVtZW50IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIyNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzogcHJvcGVybHkgdXBkYXRlIHRoZSBtYXgKKworIGNvdW50IGluIHRoZSBvdXRnb2luZyBub3RpZmljYXRpb25zIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIyNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzogYmV0dGVyIHBhY2tldCBlc3RpbWF0aW9uCisKKyB0byBlbnN1cmUgd2UgZG9uJ3Qgb3ZlcnJ1bi4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIyNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzogZXN0aW1hdGUgdGhlIHBhY2tldCBzaXplCisKKyBhbmQgYnJlYWsgdGhlIG5vdGlmaWNhdGlvbiB1cCBiYXNlZCBvbiBpdCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMjMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6IHRyYW5zZm9ybSB0aGUKKworIG5vdGlmaWNhdGlvbiBzZW5kaW5nIGludG8gYSBsYXJnZXIgbG9vcCBmb3IgbGF0ZXIgbXVsdGktbm90aWZzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIyMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIE5FV1M6IGZ1cnRoZXIgaW5mb3JtYXRpb24gYWJvdXQgZmVhdHVyZSBtYXJraW5nL3NlbGVjdGlvbgorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIE5FV1M6IG1lbnRpb24gdGhlIG5ldyBkZWxpdmVyeSBieSBub3RpZmljYXRpb25zIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjIwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBORVdTOiBkb2N1bWVudCB0aGUgbWluaW1hbGlzdCBzdXBwb3J0IGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjE5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBtYW4vc25tcGQuY29uZi41LmRlZjogZG9jdW1lbnQgdGhlIG5ldyBkZWxpdmVyQnlOb3RpZnkgY29uZmlnCisKKyB0b2tlbnMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjE4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOiBhbGxvdyBydW4gdGltZQorCisgbW9kaWZpY2F0aW9ucyBvZiB0aGUgT0lEcyB0byB1c2UgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjE3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5oOiBhZGQgY29uZmlnIGZsYWdzIHRvIG5vdAorCisgaW5jbHVkZSB0aGUgcGVyaW9kIGNvbmZpZyBhbmQgbXNnIGNvdW50IHZhbHVlcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6IGluY2x1ZGUgdGhlIHBlcmlvZGljCisKKyBjb3VudCwgdGhlIG1lc3NhZ2UgbnVtYmVyIGFuZCB0aGUgbWF4IG1lc3NhZ2UgbnVtYmVyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIxNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzogZGVsZXRlZCBkZWJ1Z2dpbmcKKworIGNvbW1lbnQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYywgCisgICAgICBtaWJzL05FVC1TTk1QLVBFUklPRElDLU5PVElGWS1NSUIudHh0OiBNb3ZlIHRoZSBub3RpZmljYXRpb24KKworIGRlZmluaXRpb24gdG8gd2l0aGluIHRoZSBzdWItbWliIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIxMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzogZGVsZXRlIGFuIHVudXNlZAorCisgdmFyaWFibGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjEyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5oOiBsb2FkIHRoZSBNSUIgaW50byB0aGUKKworIGRlZmF1bHQgc2V0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWlicy9ORVQtU05NUC1QRVJJT0RJQy1OT1RJRlktTUlCLnR4dDogQSBuZXcgbWliIHRvIGhvbGQgdGhlCisKKyBwZXJpb2RpYyBub3RpZnkgb2JqZWN0cyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6IGZpbGwgb3V0IHRoZSBjb25maWcgZnJlZQorCisgcm91dGluZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMDkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6IHByb3Blcmx5IG1vbml0b3IgdGhlCisKKyB3aG9sZSBjb250YWluZXIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjA4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5oOiBwYXJzZSB0aGUgY29uZiBmaWxlcyBhbmQKKworIGNyZWF0ZSBhbmQgaW5zZXJ0IG9iamVjdHMgaW50byB0aGUgY29udGFpbmVyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIwNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzogZGVmaW5lZCBhIGNvbnRhaW5lciB0bworCisgc3RvcmUgYSBsaXN0IG9mIGRlbGl2ZXIgb2JqZWN0cyBpbiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMDYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5Lmg6IGFkZGVkIGEgbmV4dF9ydW4KKworIHRpbWVzdGFtcCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMDUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6IGFjdHVhbGx5IHNlbmQgYQorCisgbm90aWZpY2F0aW9uIHdpdGggdGhlIHJlc3VsdHMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjA0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOiBtYWtlIHRoZSB3YWxrIG9uIHRoZQorCisgdGVzdCBvYmplY3QgZnVuY3Rpb24uICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6IGNyZWF0ZSBhIG1heCBwYWNrZXQgc2l6ZQorCisgY29uZmlnIHRva2VuIGFuZCBwYXJzZSBpdCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5Lmg6IG1pbmltYWwgc3RhcnRpbmcgdGVzdAorCisgb2JqZWN0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIwMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaDogYWRkZWQgYSBmdW5jdGlvbiB0bworCisgY2FsY3VsYXRlIHRoZSB0aW1lIHVudGlsIHRoZSBuZXh0IHJ1biBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMDAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6IHJlbW92ZSBsZWZ0IGluIHRlbXBsYXRlCisKKyBsaW5lIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE5OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaDogdXNlIGFuIGFsYXJtIGNhbGxiYWNrCisKKyBwcm90b3R5cGUgZm9yIGV4ZWN1dGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTk4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5oOiBiZWdpbm5pbmcgdGVtcGxhdGUgY29kZQorCisgZm9yIGRlbGl2ZXJ5IG9mIGRhdGEgYnkgbm90aWZpY2F0aW9ucyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxOTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6IFJlZHVjZSB2YXJpYWJsZSBzY29wZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE5NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L3NubXBfYWdlbnQuYzogUmVkdWNlIHZhcmlhYmxlIHNjb3BlcyBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE5NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L3NubXBfYWdlbnQuYzogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE5NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xOSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogd2luMzIvbGlic25tcC9saWJzbm1wLnZjcHJvaiwgd2luMzIvd2luMzIuc2xuOiBBZGRlZCBWaXN1YWwgU3R1ZGlvCisKKyAyMDA1IHByb2plY3QgYW5kIHNvbHV0aW9uIGZpbGUgZm9yIGJ1aWxkaW5nIHRoZSBOZXQtU05NUCBsaWJyYXJ5IGFzCisgYSBzdGF0aWMgbGlicmFyeS4gQm90aCB0aGUgV2luMzIgYW5kIHRoZSB4NjQgY29uZmlndXJhdGlvbnMgYXJlCisgaW5jbHVkZWQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxOTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICB3aW4zMi9lbmNvZGVfa2V5Y2hhbmdlL2VuY29kZV9rZXljaGFuZ2UudmNwcm9qLCAKKyAgICAgIHdpbjMyL2xpYmFnZW50L2xpYmFnZW50LnZjcHJvaiwgCisgICAgICB3aW4zMi9saWJuZXRzbm1wdHJhcGQvbGlibmV0c25tcHRyYXBkLnZjcHJvaiwgCisgICAgICB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wX2RsbC52Y3Byb2osIAorICAgICAgd2luMzIvbmV0c25tcG1pYnMvbmV0c25tcG1pYnMudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXBidWxrZ2V0L3NubXBidWxrZ2V0LnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wYnVsa3dhbGsvc25tcGJ1bGt3YWxrLnZjcHJvaiwgd2luMzIvc25tcGQvc25tcGQudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXBkZWx0YS9zbm1wZGVsdGEudmNwcm9qLCB3aW4zMi9zbm1wZGYvc25tcGRmLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wZ2V0L3NubXBnZXQudmNwcm9qLAorICAgICAgd2luMzIvc25tcGdldG5leHQvc25tcGdldG5leHQudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXBuZXRzdGF0L3NubXBuZXRzdGF0LnZjcHJvaiwKKyAgICAgIHdpbjMyL3NubXBzZXQvc25tcHNldC52Y3Byb2osICB3aW4zMi9zbm1wc3RhdHVzL3NubXBzdGF0dXMudmNwcm9qLAorICAgICAgIHdpbjMyL3NubXB0YWJsZS9zbm1wdGFibGUudmNwcm9qLCB3aW4zMi9zbm1wdGVzdC9zbm1wdGVzdC52Y3Byb2osCisgICAgICAgd2luMzIvc25tcHRyYW5zbGF0ZS9zbm1wdHJhbnNsYXRlLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wdHJhcC9zbm1wdHJhcC52Y3Byb2osIHdpbjMyL3NubXB0cmFwZC9zbm1wdHJhcGQudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXB1c20vc25tcHVzbS52Y3Byb2osIHdpbjMyL3NubXB2YWNtL3NubXB2YWNtLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wd2Fsay9zbm1wd2Fsay52Y3Byb2o6IE1vcmUgVmlzdWFsIFN0dWRpbyAyMDA1IHByb2plY3QKKyAgICAgIGZpbGUKKworIGNsZWFudXAuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxOTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTggIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICB3aW4zMi9lbmNvZGVfa2V5Y2hhbmdlL2VuY29kZV9rZXljaGFuZ2UudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXBidWxrZ2V0L3NubXBidWxrZ2V0LnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wYnVsa3dhbGsvc25tcGJ1bGt3YWxrLnZjcHJvaiwgd2luMzIvc25tcGQvc25tcGQudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXBkZWx0YS9zbm1wZGVsdGEudmNwcm9qLCB3aW4zMi9zbm1wZGYvc25tcGRmLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wZ2V0L3NubXBnZXQudmNwcm9qLAorICAgICAgd2luMzIvc25tcGdldG5leHQvc25tcGdldG5leHQudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXBuZXRzdGF0L3NubXBuZXRzdGF0LnZjcHJvaiwKKyAgICAgIHdpbjMyL3NubXBzZXQvc25tcHNldC52Y3Byb2osICB3aW4zMi9zbm1wc3RhdHVzL3NubXBzdGF0dXMudmNwcm9qLAorICAgICAgIHdpbjMyL3NubXB0YWJsZS9zbm1wdGFibGUudmNwcm9qLCB3aW4zMi9zbm1wdGVzdC9zbm1wdGVzdC52Y3Byb2osCisgICAgICAgd2luMzIvc25tcHRyYW5zbGF0ZS9zbm1wdHJhbnNsYXRlLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wdHJhcC9zbm1wdHJhcC52Y3Byb2osIHdpbjMyL3NubXB0cmFwZC9zbm1wdHJhcGQudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXB1c20vc25tcHVzbS52Y3Byb2osIHdpbjMyL3NubXB2YWNtL3NubXB2YWNtLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wd2Fsay9zbm1wd2Fsay52Y3Byb2o6IENsZWFuZWQgdXAgV2luMzIgVlMyMDA1IHByb2plY3QKKworIGZpbGVzIC0gcmVtb3ZlZCBzdXBlcmZsdW91cyBsaWJyYXJ5IHJlZmVyZW5jZXMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxODkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTggIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICB3aW4zMi9lbmNvZGVfa2V5Y2hhbmdlL2VuY29kZV9rZXljaGFuZ2UudmNwcm9qLCAKKyAgICAgIHdpbjMyL2xpYmFnZW50L2xpYmFnZW50LnZjcHJvaiwgCisgICAgICB3aW4zMi9saWJuZXRzbm1wdHJhcGQvbGlibmV0c25tcHRyYXBkLnZjcHJvaiwgCisgICAgICB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wX2RsbC52Y3Byb2osIAorICAgICAgd2luMzIvbmV0c25tcG1pYnMvbmV0c25tcG1pYnMudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXBidWxrZ2V0L3NubXBidWxrZ2V0LnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wYnVsa3dhbGsvc25tcGJ1bGt3YWxrLnZjcHJvaiwgd2luMzIvc25tcGQvc25tcGQudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXBkZWx0YS9zbm1wZGVsdGEudmNwcm9qLCB3aW4zMi9zbm1wZGYvc25tcGRmLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wZ2V0L3NubXBnZXQudmNwcm9qLAorICAgICAgd2luMzIvc25tcGdldG5leHQvc25tcGdldG5leHQudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXBuZXRzdGF0L3NubXBuZXRzdGF0LnZjcHJvaiwKKyAgICAgIHdpbjMyL3NubXBzZXQvc25tcHNldC52Y3Byb2osICB3aW4zMi9zbm1wc3RhdHVzL3NubXBzdGF0dXMudmNwcm9qLAorICAgICAgIHdpbjMyL3NubXB0YWJsZS9zbm1wdGFibGUudmNwcm9qLCB3aW4zMi9zbm1wdGVzdC9zbm1wdGVzdC52Y3Byb2osCisgICAgICAgd2luMzIvc25tcHRyYW5zbGF0ZS9zbm1wdHJhbnNsYXRlLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wdHJhcC9zbm1wdHJhcC52Y3Byb2osIHdpbjMyL3NubXB0cmFwZC9zbm1wdHJhcGQudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXB1c20vc25tcHVzbS52Y3Byb2osIHdpbjMyL3NubXB2YWNtL3NubXB2YWNtLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wd2Fsay9zbm1wd2Fsay52Y3Byb2osIHdpbjMyL3dpbjMyZGxsLnNsbjogQWRkZWQgeDY0CisKKyBjb25maWd1cmF0aW9ucy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE4OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xOCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHdpbjMyL2VuY29kZV9rZXljaGFuZ2UvZW5jb2RlX2tleWNoYW5nZS52Y3Byb2osIAorICAgICAgd2luMzIvbGliYWdlbnQvbGliYWdlbnQudmNwcm9qLCAKKyAgICAgIHdpbjMyL2xpYm5ldHNubXB0cmFwZC9saWJuZXRzbm1wdHJhcGQudmNwcm9qLCAKKyAgICAgIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXBfZGxsLnZjcHJvaiwgCisgICAgICB3aW4zMi9uZXRzbm1wbWlicy9uZXRzbm1wbWlicy52Y3Byb2osIAorICAgICAgd2luMzIvc25tcGJ1bGtnZXQvc25tcGJ1bGtnZXQudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXBidWxrd2Fsay9zbm1wYnVsa3dhbGsudmNwcm9qLCB3aW4zMi9zbm1wZC9zbm1wZC52Y3Byb2osIAorICAgICAgd2luMzIvc25tcGRlbHRhL3NubXBkZWx0YS52Y3Byb2osIHdpbjMyL3NubXBkZi9zbm1wZGYudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXBnZXQvc25tcGdldC52Y3Byb2osCisgICAgICB3aW4zMi9zbm1wZ2V0bmV4dC9zbm1wZ2V0bmV4dC52Y3Byb2osIAorICAgICAgd2luMzIvc25tcG5ldHN0YXQvc25tcG5ldHN0YXQudmNwcm9qLAorICAgICAgd2luMzIvc25tcHNldC9zbm1wc2V0LnZjcHJvaiwgIHdpbjMyL3NubXBzdGF0dXMvc25tcHN0YXR1cy52Y3Byb2osCisgICAgICAgd2luMzIvc25tcHRhYmxlL3NubXB0YWJsZS52Y3Byb2osIHdpbjMyL3NubXB0ZXN0L3NubXB0ZXN0LnZjcHJvaiwKKyAgICAgICB3aW4zMi9zbm1wdHJhbnNsYXRlL3NubXB0cmFuc2xhdGUudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXB0cmFwL3NubXB0cmFwLnZjcHJvaiwgd2luMzIvc25tcHRyYXBkL3NubXB0cmFwZC52Y3Byb2osIAorICAgICAgd2luMzIvc25tcHVzbS9zbm1wdXNtLnZjcHJvaiwgd2luMzIvc25tcHZhY20vc25tcHZhY20udmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXB3YWxrL3NubXB3YWxrLnZjcHJvaiwgd2luMzIvd2luMzJkbGwuc2xuOiBBZGRlZAorCisgd2luMzJkbGwtcmVsYXRlZCBWaXN1YWwgU3R1ZGlvIDIwMDUgcHJvamVjdCBhbmQgc29sdXRpb24gZmlsZXMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxODYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTggIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaDogV2luMzIgRExMIGJ1aWxkIGZpeGVzLiAKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTg0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE3ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcFVEUERvbWFpbi5jOiBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMzE3NTY0MDogVXNlCisKKyBJUF9SRUNWRFNUQUREUiBzb2Nrb3B0IHdoZXJlIGF2YWlsYWJsZSAoKkJTRCkgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE4MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNyAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmM6IENIQU5HRVM6IHNubXBkOgorICAgICAgUEFUQ0hFUzoKKworIDMxNzU2NDA6IFVzZSBJUF9SRUNWRFNUQUREUiBzb2Nrb3B0IHdoZXJlIGF2YWlsYWJsZSAoKkJTRCkgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE4MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNyAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmM6IENIQU5HRVM6IHNubXBkOgorICAgICAgUEFUQ0hFUzoKKworIDMxNzU2NDA6IFVzZSBJUF9SRUNWRFNUQUREUiBzb2Nrb3B0IHdoZXJlIGF2YWlsYWJsZSAoKkJTRCkgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTgzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzogQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzE4MzAwMDogRml4CisKKyBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lEIHByZWZpeCBsZW5ndGggQ0hBTkdFUzogc25tcGxpYjogQlVHUzoKKyAzMTgyOTg1OiBGaXggY2FsY3VsYXRpb24gb2YgY29tbW9uIE9JRCBwcmVmaXggbGVuZ3RoIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxODIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTUgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOiBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSEVTOiAzMTgzMDAwOiBGaXgKKworIGNhbGN1bGF0aW9uIG9mIGNvbW1vbiBPSUQgcHJlZml4IGxlbmd0aCBDSEFOR0VTOiBzbm1wbGliOiBCVUdTOgorIDMxODI5ODU6IEZpeCBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lEIHByZWZpeCBsZW5ndGggZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDE4MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6IENIQU5HRVM6IHNubXBsaWI6IFBBVENIRVM6IDMxODMwMDA6IEZpeAorCisgY2FsY3VsYXRpb24gb2YgY29tbW9uIE9JRCBwcmVmaXggbGVuZ3RoIENIQU5HRVM6IHNubXBsaWI6IEJVR1M6CisgMzE4Mjk4NTogRml4IGNhbGN1bGF0aW9uIG9mIGNvbW1vbiBPSUQgcHJlZml4IGxlbmd0aCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTgyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzogQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzE4MzAwMDogRml4CisKKyBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lEIHByZWZpeCBsZW5ndGggQ0hBTkdFUzogc25tcGxpYjogQlVHUzoKKyAzMTgyOTg1OiBGaXggY2FsY3VsYXRpb24gb2YgY29tbW9uIE9JRCBwcmVmaXggbGVuZ3RoIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxODIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTUgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOiBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSEVTOiAzMTgzMDAwOiBGaXgKKworIGNhbGN1bGF0aW9uIG9mIGNvbW1vbiBPSUQgcHJlZml4IGxlbmd0aCBDSEFOR0VTOiBzbm1wbGliOiBCVUdTOgorIDMxODI5ODU6IEZpeCBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lEIHByZWZpeCBsZW5ndGggZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTgyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNraW8uYywgYXBwcy9zbm1wdHJhcGRfZHMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgsIG1hbi9zbm1wZC5jb25mLjUuZGVmOiBDSEFOR0VTOgorCisgTGludXg6IFBBVENIRVM6IDMyMDU4MTE6IE9wdGlvbiB0byBza2lwIGZkL2xvb3AvcmFtIGRldmljZXMgaW4KKyBkaXNrSU9UYWJsZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTgxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNraW8uYywgYXBwcy9zbm1wdHJhcGRfZHMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgsIG1hbi9zbm1wZC5jb25mLjUuZGVmOiBDSEFOR0VTOgorCisgTGludXg6IFBBVENIRVM6IDMyMDU4MTE6IE9wdGlvbiB0byBza2lwIGZkL2xvb3AvcmFtIGRldmljZXMgaW4KKyBkaXNrSU9UYWJsZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxODEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYzogQ0hBTkdFUzogcHl0aG9uOiBQQVRDSEVTOiAzMTg1MDg1OgorCisgRml4IHNlZ2ZhdWx0IG9uIDY0LWJpdCBzeXN0ZW1zIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxODAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYzogQ0hBTkdFUzogcHl0aG9uOiBQQVRDSEVTOiAzMTg1MDg1OgorCisgRml4IHNlZ2ZhdWx0IG9uIDY0LWJpdCBzeXN0ZW1zIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxODAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYzogQ0hBTkdFUzogcHl0aG9uOiBQQVRDSEVTOiAzMTg1MDg1OgorCisgRml4IHNlZ2ZhdWx0IG9uIDY0LWJpdCBzeXN0ZW1zIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxODAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYzogQ0hBTkdFUzogcHl0aG9uOiBQQVRDSEVTOiAzMTg1MDg1OgorCisgRml4IHNlZ2ZhdWx0IG9uIDY0LWJpdCBzeXN0ZW1zIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE4MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYzogQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMxNzUzMjM6IEZpeCBoYW5kbGluZyBvZgorCisgJ3doaWxlIChmYWxzZSknIGJsb2NrcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTc5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pYjJjOiBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzE3NTMyMzogRml4IGhhbmRsaW5nIG9mCisKKyAnd2hpbGUgKGZhbHNlKScgYmxvY2tzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxNzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmM6IENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMTc1MzIzOiBGaXggaGFuZGxpbmcgb2YKKworICd3aGlsZSAoZmFsc2UpJyBibG9ja3MgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE3OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYzogQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMxNzUzMjM6IEZpeCBoYW5kbGluZyBvZgorCisgJ3doaWxlIChmYWxzZSknIGJsb2NrcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTc5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pYjJjOiBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzE3NTMyMzogRml4IGhhbmRsaW5nIG9mCisKKyAnd2hpbGUgKGZhbHNlKScgYmxvY2tzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE3OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYzogQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMDQ4ODM6IEZpeCBoYW5kbGluZyBvZgorCisgbm9uLXRhYmxlIG9iamVjdHMgbmFtZWQgZm9vVGFibGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDE3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYzogQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMDQ4ODM6IEZpeCBoYW5kbGluZyBvZgorCisgbm9uLXRhYmxlIG9iamVjdHMgbmFtZWQgZm9vVGFibGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDE3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYzogQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMDQ4ODM6IEZpeCBoYW5kbGluZyBvZgorCisgbm9uLXRhYmxlIG9iamVjdHMgbmFtZWQgZm9vVGFibGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYzogQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMDQ4ODM6IEZpeCBoYW5kbGluZyBvZgorCisgbm9uLXRhYmxlIG9iamVjdHMgbmFtZWQgZm9vVGFibGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYzogQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMDQ4ODM6IEZpeCBoYW5kbGluZyBvZgorCisgbm9uLXRhYmxlIG9iamVjdHMgbmFtZWQgZm9vVGFibGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTc4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pYjJjOiBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzIxMTQ4NDogU3VwcG9ydAorCisgZW51bWVyYXRpb25zIGluIG5vdGlmaWNhdGlvbiB2YXJiaW5kcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pYjJjOiBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzIxMTQ4NDogU3VwcG9ydAorCisgZW51bWVyYXRpb25zIGluIG5vdGlmaWNhdGlvbiB2YXJiaW5kcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pYjJjOiBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzIxMTQ4NDogU3VwcG9ydAorCisgZW51bWVyYXRpb25zIGluIG5vdGlmaWNhdGlvbiB2YXJiaW5kcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pYjJjOiBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzIxMTQ4NDogU3VwcG9ydAorCisgZW51bWVyYXRpb25zIGluIG5vdGlmaWNhdGlvbiB2YXJiaW5kcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pYjJjOiBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzIxMTQ4NDogU3VwcG9ydAorCisgZW51bWVyYXRpb25zIGluIG5vdGlmaWNhdGlvbiB2YXJiaW5kcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTIgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1pYnMvVUNELVNOTVAtTUlCLnR4dDogQWRkIG1pc3Npbmcgc3lzdGVtIG9pZHMgdG8gbWliIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDE3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xMiAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWlicy9VQ0QtU05NUC1NSUIudHh0OiBBZGQgbWlzc2luZyBzeXN0ZW0gb2lkcyB0byBtaWIgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTEyICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBtaWJzL1VDRC1TTk1QLU1JQi50eHQ6IEFkZCBtaXNzaW5nIHN5c3RlbSBvaWRzIHRvIG1pYiBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTIgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1pYnMvVUNELVNOTVAtTUlCLnR4dDogQWRkIG1pc3Npbmcgc3lzdGVtIG9pZHMgdG8gbWliIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xMiAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWlicy9VQ0QtU05NUC1NSUIudHh0OiBBZGQgbWlzc2luZyBzeXN0ZW0gb2lkcyB0byBtaWIgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTIgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFwcHMvc25tcHRhYmxlLmM6IEZpeCBmb3IgZ2FyYmFnZSBvdXRwdXQgd2hlbiBhZ2VudCBwcmVzZW50cyBtb3JlCisKKyBjb2x1bW5zIGluIGJ1bGsgcmVzcG9uc2UgdGhhbiBvdXIgbG9jYWwgTUlCIGZpbGUgIHNwZWNpZmllZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTIgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFwcHMvc25tcHRhYmxlLmM6IEZpeCBmb3IgZ2FyYmFnZSBvdXRwdXQgd2hlbiBhZ2VudCBwcmVzZW50cyBtb3JlCisKKyBjb2x1bW5zIGluIGJ1bGsgcmVzcG9uc2UgdGhhbiBvdXIgbG9jYWwgTUlCIGZpbGUgIHNwZWNpZmllZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTIgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFwcHMvc25tcHRhYmxlLmM6IEZpeCBmb3IgZ2FyYmFnZSBvdXRwdXQgd2hlbiBhZ2VudCBwcmVzZW50cyBtb3JlCisKKyBjb2x1bW5zIGluIGJ1bGsgcmVzcG9uc2UgdGhhbiBvdXIgbG9jYWwgTUlCIGZpbGUgIHNwZWNpZmllZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTIgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFwcHMvc25tcHRhYmxlLmM6IEZpeCBmb3IgZ2FyYmFnZSBvdXRwdXQgd2hlbiBhZ2VudCBwcmVzZW50cyBtb3JlCisKKyBjb2x1bW5zIGluIGJ1bGsgcmVzcG9uc2UgdGhhbiBvdXIgbG9jYWwgTUlCIGZpbGUgIHNwZWNpZmllZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTIgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFwcHMvc25tcHRhYmxlLmM6IEZpeCBmb3IgZ2FyYmFnZSBvdXRwdXQgd2hlbiBhZ2VudCBwcmVzZW50cyBtb3JlCisKKyBjb2x1bW5zIGluIGJ1bGsgcmVzcG9uc2UgdGhhbiBvdXIgbG9jYWwgTUlCIGZpbGUgIHNwZWNpZmllZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xMiAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWFuL3NubXB0cmFwZC44LmRlZjogRml4IHdyb25nIG5hbWUgZm9yIGNvbmZpZyB0b2tlbgorCisgJ2RvTm90UmV0YWluTm90aWZpY2F0aW9uTG9ncycgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDE3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xMiAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWFuL3NubXB0cmFwZC44LmRlZjogRml4IHdyb25nIG5hbWUgZm9yIGNvbmZpZyB0b2tlbgorCisgJ2RvTm90UmV0YWluTm90aWZpY2F0aW9uTG9ncycgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDE3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xMiAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWFuL3NubXB0cmFwZC44LmRlZjogRml4IHdyb25nIG5hbWUgZm9yIGNvbmZpZyB0b2tlbgorCisgJ2RvTm90UmV0YWluTm90aWZpY2F0aW9uTG9ncycgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xMiAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWFuL3NubXB0cmFwZC44LmRlZjogRml4IHdyb25nIG5hbWUgZm9yIGNvbmZpZyB0b2tlbgorCisgJ2RvTm90UmV0YWluTm90aWZpY2F0aW9uTG9ncycgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xMiAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWFuL3NubXB0cmFwZC44LmRlZjogRml4IHdyb25nIG5hbWUgZm9yIGNvbmZpZyB0b2tlbgorCisgJ2RvTm90UmV0YWluTm90aWZpY2F0aW9uTG9ncycgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTc0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTA5ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmM6IFJlbW92ZSBib2d1cworCisgKExpbnV4KSBkZWZpbmVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMDkgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QuYzogUmVtb3ZlIGJvZ3VzCisKKyAoTGludXgpIGRlZmluZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE3MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0wOSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5jOiBSZW1vdmUgYm9ndXMKKworIChMaW51eCkgZGVmaW5lcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMDkgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL3NubXAtdGMuYzogSEFWRV9UTV9UTV9HTVRPRkYgaXMgSEFWRV9TVFJVQ1RfVE1fVE1fR01UT0ZGCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMDkgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL3NubXAtdGMuYzogSEFWRV9UTV9UTV9HTVRPRkYgaXMgSEFWRV9TVFJVQ1RfVE1fVE1fR01UT0ZGCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMDkgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL3NubXAtdGMuYzogSEFWRV9UTV9UTV9HTVRPRkYgaXMgSEFWRV9TVFJVQ1RfVE1fVE1fR01UT0ZGCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE3MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0wOSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5oLCBjb25maWd1cmUsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogQmlsbCBGZW5uZXJzIHBhdGNoIHRvIG1ha2UKKworIERJU01BTiBQSU5HIGFuZCBUUkFDRVJPVVRFIE1JQlMgY29tcGlsZSB1bmRlciBMaW51eCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMDkgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmMsIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFycy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIuYzogU29sYXJpcyBzdXBwb3J0IGZvcgorCisgU0NUUC1NSUIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0wOSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuYywgYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5jOiBTb2xhcmlzIHN1cHBvcnQgZm9yCisKKyBTQ1RQLU1JQiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTA5ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5jLCBhZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmM6IFNvbGFyaXMgc3VwcG9ydCBmb3IKKworIFNDVFAtTUlCIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0wOSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wLXRjLmM6IFRaIGlzIG9uZSBob3VyIG9mZiBpZiBIQVZFX1RNX1RNX0dNVE9GRiBhbmQKKworIFNZU1YgKHN1Y2ggaXMgTGludXgpIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNjkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMDkgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcC10Yy5jOiBUWiBpcyBvbmUgaG91ciBvZmYgaWYgSEFWRV9UTV9UTV9HTVRPRkYgYW5kCisKKyBTWVNWIChzdWNoIGlzIExpbnV4KSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTY5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTA5ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXAtdGMuYzogVFogaXMgb25lIGhvdXIgb2ZmIGlmIEhBVkVfVE1fVE1fR01UT0ZGIGFuZAorCisgU1lTViAoc3VjaCBpcyBMaW51eCkgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTY5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTAxICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmM6IENIQU5HRVM6IHNubXBsaWI6IGR0bHM6CisKKyBvdmVyaGF1bCBvZiBkZWJ1ZyAgIC0gZHJhc3RpYyByZWR1Y3Rpb24gaW4gbnVtYmVyIG9mIG1lc3NhZ2VzIGFuZCBtc2cgY29tcGxleGl0eSAgICAgZm9yIGJhc2ljIGR0bHN1ZHAgdG9rZW4gICAtIHByZXZpb3VzIGxldmVsIG9mIGRldGFpbCBhdmFpbGFibGUgYnkgYWRkaW5nIDk6ZHRsc2R1cCB0b2tlbiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTY4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTAxICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmM6IENIQU5HRVM6IHNubXBsaWI6IGR0bHM6CisKKyBvdmVyaGF1bCBvZiBkZWJ1ZyAgIC0gZHJhc3RpYyByZWR1Y3Rpb24gaW4gbnVtYmVyIG9mIG1lc3NhZ2VzIGFuZCBtc2cgY29tcGxleGl0eSAgICAgZm9yIGJhc2ljIGR0bHN1ZHAgdG9rZW4gICAtIHByZXZpb3VzIGxldmVsIG9mIGRldGFpbCBhdmFpbGFibGUgYnkgYWRkaW5nIDk6ZHRsc2R1cCB0b2tlbiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNjggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMDEgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYzogQ0hBTkdFUzogc25tcGxpYjogZHRsczoKKworIGNsZWFuIHVwIGNsb3NlOyBjYXRjaCAnY29ubmVjdCcvJ2Rpc2Nvbm5lY3QnICAgY29ubmVjdCA9IHdlIGdldCBzdWNjZXNzZnVsbHkgZGVjb2RlZCBzbm1wIGRhdGEgICBkaXNjb25uZWN0ID0gMCBieXRlIHJlYWQsIHNzaCBzaHV0ZG93biBmbGFnIHNldCAgIGFkZCBiaW9fY2FjaGUgZmxhZ3MgZm9yIGNvbm5lY3RlZC9kaXNjb25uZWN0ZWQgICBjaGVjayBmb3IgbnVsbCBwdHIgYmVmb3JlIGRlcmVmZXJlbmNpbmcgICBjbG9zZSBoYW5kbGluZzogICAtICBvbmx5IHNlbmQgcXVldWVkIGRhdGEgaWYgd2UgZ290IHRvIGNvbm5lY3RlZCBzdGF0ZSAgIC0gIHNlcmlvdXNseSByZWR1Y2UgdGltZW91dCB0byB3YWl0IGZvciBqdW5rIHJlYWQuIGkgdGhpbmsgICAgICB3ZSBzaG91bGRuJ3QgZXZlbiBib3RoZXIgICAtIHJldHVybiBlYXJseSBpZiBjYWNoZXAgaXMgTlVMTCwgc28gd2UgZG9uJ3QgaGF2ZSB0byB0ZXN0IGl0ICAgICByZXBlYXRlZGx5ICAgLSB1c2UgY29ycmVjdCBuZmRzIHZhbHVlIGluIHNlbGVjdCBjYWxsIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNjcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMDEgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYzogQ0hBTkdFUzogc25tcGxpYjogZHRsczoKKworIGNsZWFuIHVwIGNsb3NlOyBjYXRjaCAnY29ubmVjdCcvJ2Rpc2Nvbm5lY3QnICAgY29ubmVjdCA9IHdlIGdldCBzdWNjZXNzZnVsbHkgZGVjb2RlZCBzbm1wIGRhdGEgICBkaXNjb25uZWN0ID0gMCBieXRlIHJlYWQsIHNzaCBzaHV0ZG93biBmbGFnIHNldCAgIGFkZCBiaW9fY2FjaGUgZmxhZ3MgZm9yIGNvbm5lY3RlZC9kaXNjb25uZWN0ZWQgICBjaGVjayBmb3IgbnVsbCBwdHIgYmVmb3JlIGRlcmVmZXJlbmNpbmcgICBjbG9zZSBoYW5kbGluZzogICAtICBvbmx5IHNlbmQgcXVldWVkIGRhdGEgaWYgd2UgZ290IHRvIGNvbm5lY3RlZCBzdGF0ZSAgIC0gIHNlcmlvdXNseSByZWR1Y2UgdGltZW91dCB0byB3YWl0IGZvciBqdW5rIHJlYWQuIGkgdGhpbmsgICAgICB3ZSBzaG91bGRuJ3QgZXZlbiBib3RoZXIgICAtIHJldHVybiBlYXJseSBpZiBjYWNoZXAgaXMgTlVMTCwgc28gd2UgZG9uJ3QgaGF2ZSB0byB0ZXN0IGl0ICAgICByZXBlYXRlZGx5ICAgLSB1c2UgY29ycmVjdCBuZmRzIHZhbHVlIGluIHNlbGVjdCBjYWxsIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE2NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0zMSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jOiBtYWtlIHRydW5rIGFuZAorCisgdjUtNi1wYXRjaGVzIGNsb3NlbHkgYWxpZ25lZCAgIG1vc3RseSBjaGFuZ2VzIGluIGRlYnVnLCBjb29raWUgdHJhY2tpbmcgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE2NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0zMSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jOiBtYWtlIHRydW5rIGFuZAorCisgdjUtNi1wYXRjaGVzIGNsb3NlbHkgYWxpZ25lZCAgIG1vc3RseSBjaGFuZ2VzIGluIGRlYnVnLCBjb29raWUgdHJhY2tpbmcgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTY2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTMxICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmM6IGFkZCBjb29raWUgaGFuZGxpbmc7CisKKyByZW1vdmUgaWZkZWYnZCBjb2RlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNjUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMjcgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYzogU2ltcGxpZnkgYXJyYXkgcmVzaXppbmcgc29tZXdoYXQKKworIGZ1cnRoZXIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTY0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTI3ICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmM6IERvIG5vdCBhc3NpZ24gbmV3X2RhdGEgaWYgdGhlCisKKyB2YWx1ZSB3b24ndCBiZSB1c2VkLiAgUmVkdWNlIHZhcmlhYmxlIHNjb3Blcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE2MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0yNyAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jOiBJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGNsZWFyIGEKKworIGNodW5rIG9mIG1lbW9yeSBpZiB0aGUgbmV4dCBhY3Rpb24gb24gaXQgaXMgdG8gZmlsbCBpdCBzbyB1c2UgbWFsbG9jCisgaW5zdGVhZCBvZiBjYWxsb2MuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMjcgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYzogQ29udGFpbmVyQmluYXJ5QXJyYXkgcmVhbGx5CisKKyBjYW4ndCBob2xkIGFueXRobmcgYnV0IHBvaW50ZXJzIGFuZCB0aGF0IG1lYW5zIHRoZSBkYXRhX3NpemUgZmllbGQKKyBpcyB1bm5lY2Vzc2FyeSBzbyBJIHJlbW92ZWQgaXQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMjYgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L2h3X21lbS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5jLCBhcHBzL3NubXB0cmFwZC5jLCAKKyAgICAgIHNubXBsaWIvaW50NjQuYywgc25tcGxpYi9zbm1wX29wZW5zc2wuYywgc25tcGxpYi9zbm1wX3NlY21vZC5jLCAKKyAgICAgIHNubXBsaWIvc25tcHYzLmM6IEFkZCBtaXNzaW5nIGluY2x1ZGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNjAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMjYgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYzogVXNlIHRoZSByaWdodCBmZWF0dXJlCisKKyBtYWNybyBpbiBvcmRlciB0byBtYWtlIGJ1aWxkcyB3aXRoIC0tZW5hYmxlLWlwdjYKKyAtLXdpdGgtb3V0LXRyYW5zcG9ydHM9VURQSVB2NiBzdWNjZWVkLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTU5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTI2ICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmM6IFJlbW92ZSBkdXBsaWNhdGUgY29waWVzIG9mCisKKyBmdW5jdGlvbnMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTU4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTI1ICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbmV0LXNubXAtY2VydDogdHdlYWsgZGVidWcgbWVzc2FnZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE1NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0yNSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5jOiBDSEFOR0VTOiBzbm1wbGliOiB1cGRhdGUKKworIGNlcnQgdG9rZW4gaGFuZGxpbmcgIC0gcmVtb3ZlIGRlZlg1MDkgY2VydCB0b2tlbnMgKHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBiZWZvcmUgNS42KSAgLSB3YXJuaW5ncyBmb3Igb3VyL3RoZWlyIHRva2VucywgcmVjb21tZW5kIHVzaW5nIGxvY2FsL3BlZXIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTU2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTI1ICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5jOiBtZXJnZSBuZXRzbm1wX2R0bHN1ZHA2CisgICAgICBpbnRvCisKKyBuZXRzbm1wX2R0bHN1ZHAgICAgdXNlIGFkZHIgc2l6ZSB0byB0ZWxsIHRoZW0gYXBhcnQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTU1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTI1ICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jOiBsb2cgKG9uY2UpIHdhcm5pbmcgd2hlbiBkZXByZWNhdGVkCisKKyBmX2NyZWF0ZV9mcm9tX3RzdHJpbmcgdHJhbnNwb3J0IGZ1bmN0aW9uIHVzZWQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTU0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTI1ICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4uYzogcmVkdWNlIGNhc3Rpbmc7IG1ha2Ugc3VyZSB0bworCisgZnJlZSB0aGUgcmlnaHQgcG9pbnRlciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMjUgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYzogcmVkdWNlIGNhc3RpbmcgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMjQgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jOiBSZXBsYWNlIGEgdmFyaWFibGUgd2l0aCBhCisKKyBjb25zdGFudC4gTWFrZSBvbmUgbW9yZSBvaWQgY29uc3QuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTggIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ0hBTkdFUzogdmVyc2lvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTQ3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE4ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIENoYW5nZUxvZzogdmVyc2lvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTQ2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE4ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9NYWtlZmlsZS5kZXBlbmQsIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZCwgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQsIAorICAgICAgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6IG1ha2UgZGVwZW5kIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE0NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xOCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgbWFuL25ldHNubXBfYWNjZXNzX211bHRpcGxleGVyLjMsIG1hbi9uZXRzbm1wX2FnZW50LjMsIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfaGFuZGxlci5oLjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsIAorICAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuMywgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgCisgICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsIAorICAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsIAorICAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywgCisgICAgICBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywgCisgICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9udWxsX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgCisgICAgICBtYW4vbmV0c25tcF9vbGRfYXBpLjMsIG1hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMsIAorICAgICAgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NjYWxhci4zLCBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgCisgICAgICBtYW4vbmV0c25tcF9zZXJpYWxpemUuMywgbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywgbWFuL25ldHNubXBfc25tcF9wZHUuMywgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMywgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMywgCisgICAgICBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsIG1hbi9uZXRzbm1wX3RhYmxlLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YS4zLCBtYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX3Jvdy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywgCisgICAgICBtYW4vbmV0c25tcF90b29scy5oLjMsIG1hbi9uZXRzbm1wX3V0aWwuMywKKyAgICAgIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCAgbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zLAorICAgICAgbWFuL25ldHNubXBfd2F0Y2hlci4zOiBkb2N1bWVudGF0aW9uCisKKyB1cGRhdGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE0NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xOCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAKKyAgICAgIGRpc3QvbmV0LXNubXAuc3BlYzogVmVyc2lvbiBudW1iZXIgdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE0MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNyAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWFuL3NubXBkZWx0YS4xLmRlZjogRm9ybWF0dGluZyBib3RjaCBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTcgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9zbm1wZGVsdGEuMS5kZWY6IEZvcm1hdHRpbmcgYm90Y2ggZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTcgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1pYnMvTWFrZWZpbGUuaW46IEluc3RhbGwgcmVxdWlyZWQgbWlicyBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTcgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1pYnMvTWFrZWZpbGUuaW46IEluc3RhbGwgcmVxdWlyZWQgbWlicyBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE0MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNyAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWlicy9yZmNsaXN0OiBOZXcgUkZDIG1pYnMgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTQwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE3ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBtaWJzL3JmY2xpc3Q6IE5ldyBSRkMgbWlicyBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE0MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDSEFOR0VTLCBORVdTOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxMzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTUgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxMzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTUgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kLCBhcHBzL01ha2VmaWxlLmRlcGVuZCwgCisgICAgICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6IG1ha2UKKworIGRlcGVuZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTM2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywgCisgICAgICBwZXJsL0FTTi9BU04ucG0sIHBlcmwvQW55RGF0YV9TTk1QL1N0b3JhZ2UucG0sIHBlcmwvT0lEL09JRC5wbSwgCisgICAgICBwZXJsL1NOTVAvU05NUC5wbSwgcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtLCAKKyAgICAgIHBlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtLCBwZXJsL2FnZW50L2FnZW50LnBtLCAKKyAgICAgIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLCAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLCBzbm1wbGliL3NubXBfdmVyc2lvbi5jOgorICAgICAgVmVyc2lvbgorCisgbnVtYmVyIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTM1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIE1ha2VmaWxlLnRvcDogdmVyc2lvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTM0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgc25tcGxpYi9jZXJ0X3V0aWwuYzogU3BlbGxpbmcgZml4OiByZWdpbmVyYXRlZCAtPiByZWdlbmVyYXRlZC4gCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL2NlcnRfdXRpbC5jOiBTcGVsbGluZyBmaXg6IHJlZ2luZXJhdGVkIC0+IHJlZ2VuZXJhdGVkLiAKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTMzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgc25tcGxpYi9jZXJ0X3V0aWwuYzogU2ltcGxpZmllZCByMTk1OTQgKGxlYWstYXQtZXhpdCBmaXgpLiAKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTMyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfb3BlbnNzbC5jOiBGaXhlZCBhIGNvbXBpbGVyIHdhcm5pbmcgdGhhdCB3YXMKKworIGludHJvZHVjZWQgaW4gcjIwMTEzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDEzMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX29wZW5zc2wuYzogRml4ZWQgYSBjb21waWxlciB3YXJuaW5nIHRoYXQgd2FzCisKKyBpbnRyb2R1Y2VkIGluIHIyMDExMy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDEzMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDSEFOR0VTLCBORVdTOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxMjggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxMjcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kLCBhcHBzL01ha2VmaWxlLmRlcGVuZCwgCisgICAgICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6IG1ha2UKKworIGRlcGVuZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTI2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywgCisgICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsIAorICAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgCisgICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsIAorICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsIAorICAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfb2lkX3N0YXNoLjMsIG1hbi9uZXRzbm1wX29sZF9hcGkuMywgCisgICAgICBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywgCisgICAgICBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgbWFuL25ldHNubXBfc2NhbGFyLjMsIAorICAgICAgbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMsIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZS4zLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsIG1hbi9uZXRzbm1wX3V0aWwuMywKKyAgICAgICBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzogZG9jdW1lbnRhdGlvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTI1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywgCisgICAgICBwZXJsL0FTTi9BU04ucG0sIHBlcmwvQW55RGF0YV9TTk1QL1N0b3JhZ2UucG0sIHBlcmwvT0lEL09JRC5wbSwgCisgICAgICBwZXJsL1NOTVAvU05NUC5wbSwgcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtLCAKKyAgICAgIHBlcmwvYWdlbnQvYWdlbnQucG0sIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLCAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLCBzbm1wbGliL3NubXBfdmVyc2lvbi5jOgorICAgICAgVmVyc2lvbgorCisgbnVtYmVyIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTI0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIE1ha2VmaWxlLnRvcDogdmVyc2lvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTIzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L3NubXBkLmM6IEZpeCBtYWluIGFnZW50IHNlbGVjdCBjYWxsIHRvIHVzZSB0aGUgcmVuYW1lZCBBUEkKKworIHJvdXRpbmUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTIyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L3NubXBkLmM6IEZpeCBtYWluIGFnZW50IHNlbGVjdCBjYWxsIHRvIHVzZSB0aGUgcmVuYW1lZCBBUEkKKworIHJvdXRpbmUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxMjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTMgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oLCBzbm1wbGliL2xhcmdlX2ZkX3NldC5jOiAKKworIEJyaW5nIHRoZSBuYW1pbmcgb2YgdGhlIGxhcmdlX2ZkX3NldCBzZWxlY3QgY2FsbCBpbnRvIGxpbmUgd2l0aCB0aGUKKyByZXN0IG9mIHRoZSBBUEkuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTIxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEzICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaCwgc25tcGxpYi9sYXJnZV9mZF9zZXQuYzogCisKKyBCcmluZyB0aGUgbmFtaW5nIG9mIHRoZSBsYXJnZV9mZF9zZXQgc2VsZWN0IGNhbGwgaW50byBsaW5lIHdpdGggdGhlCisgcmVzdCBvZiB0aGUgQVBJLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDEyMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMyAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgsIHNubXBsaWIvbGFyZ2VfZmRfc2V0LmM6IAorCisgQnJpbmcgdGhlIG5hbWluZyBvZiB0aGUgbGFyZ2VfZmRfc2V0IHNlbGVjdCBjYWxsIGludG8gbGluZSB3aXRoIHRoZQorIHJlc3Qgb2YgdGhlIEFQSS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDEyMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMyAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgsIHNubXBsaWIvbGFyZ2VfZmRfc2V0LmM6IAorCisgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDMyMDM4MDY6IEFkZCB0aGUgZnVuY3Rpb24KKyBuZXRzbm1wX2xhcmdlX3NlbGVjdCgpIChwbHVzIHR3ZWFrcyB0byBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUpIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxMjAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTIgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYzogQ0hBTkdFUzogc25tcGxpYjogcmVhbGxvYytpbml0CisKKyBpbnN0ZWFkIG9mIGNhbGxvYyAgaW5zcGlyZWQgYnkgcGF0Y2ggMzE5NTUzMiBmcm9tIFN0ZXBoZW4gSGVtbWluZ2VyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxMTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTIgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYzogQ0hBTkdFUzogc25tcGxpYjogcmVhbGxvYytpbml0CisKKyBpbnN0ZWFkIG9mIGNhbGxvYyAgaW5zcGlyZWQgYnkgcGF0Y2ggMzE5NTUzMiBmcm9tIFN0ZXBoZW4gSGVtbWluZ2VyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTIgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYzogQ0hBTkdFUzogc25tcGxpYjogcmVhbGxvYytpbml0CisKKyBpbnN0ZWFkIG9mIGNhbGxvYyAgaW5zcGlyZWQgYnkgcGF0Y2ggMzE5NTUzMiBmcm9tIFN0ZXBoZW4gSGVtbWluZ2VyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDExOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMiAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9jb21tb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlCisgICAgICAgX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9pbnQKKyAgICAgICBlcmZhY2UuYywgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaDoKKworIENIQU5HRVM6IHNubXBkOiBQQVRDSDogb3B0aW1pemF0aW9ucyBmb3IgbGFyZ2Ugcm91dGUgdGFibGVzIGZyb20KKyBTdGVwaGVuIEhlbW1pbmdlciAgYXBwbGllZCBwYXJ0cyAxLTMgb2YgNCBmcm9tIGhpbSAobXNncyB0byBjb2RlcnMgb24gMi8yOC8xMTsgc3ViamVjdCAgaXAtZm9yd2FyZC1taWIgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzOyBwYXJ0IDQgbmVlZHMgbW9yZSB3b3JrIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxMTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTIgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZQorICAgICAgIF9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfaW50CisgICAgICAgZXJmYWNlLmM6IENIQU5HRVM6IHNubXBkOiBQQVRDSDogb3B0aW1pemF0aW9ucyBmb3IgbGFyZ2Ugcm91dGUKKworIHRhYmxlcyBmcm9tIFN0ZXBoZW4gSGVtbWluZ2VyICBhcHBsaWVkIHBhcnRzIDEtMyBvZiA0IGZyb20gaGltIChtc2dzIHRvIGNvZGVycyBvbiAyLzI4LzExOyBzdWJqZWN0ICBpcC1mb3J3YXJkLW1pYiBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHM7IHBhcnQgNCBuZWVkcyBtb3JlIHdvcmsgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDExOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMiAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9jb21tb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlCisgICAgICAgX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9pbnQKKyAgICAgICBlcmZhY2UuYzogQ0hBTkdFUzogc25tcGQ6IFBBVENIOiBvcHRpbWl6YXRpb25zIGZvciBsYXJnZSByb3V0ZQorCisgdGFibGVzIGZyb20gU3RlcGhlbiBIZW1taW5nZXIgIGFwcGxpZWQgcGFydHMgMS0zIG9mIDQgZnJvbSBoaW0gKG1zZ3MgdG8gY29kZXJzIG9uIDIvMjgvMTE7IHN1YmplY3QgIGlwLWZvcndhcmQtbWliIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50czsgcGFydCA0IG5lZWRzIG1vcmUgd29yayBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxMTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTEgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4uYzogQ0hBTkdFUzogc25tcGxpYjogYWRkIG1vcmUKKworIG9wZW5zc2wgZXJyb3IgY2FzZXMgd2hlcmUgd2UgY2hlY2sgZm9yIGxvY2FsIGNlcnQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDExNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5jOiBDSEFOR0VTOiBzbm1wbGliOiBhZGQgbW9yZQorCisgb3BlbnNzbCBlcnJvciBjYXNlcyB3aGVyZSB3ZSBjaGVjayBmb3IgbG9jYWwgY2VydCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxMTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTEgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYzogTWluR1c6IGRza1RhYmxlOiBSZXBvcnQgemVybyBmb3IKKworIHVuaW1wbGVtZW50ZWQgZmllbGRzIGluc3RlYWQgb2YgcmFuZG9tIGRhdGEuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTE2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTExICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6IE1pbkdXOiBkc2tUYWJsZTogUmVwb3J0IHplcm8gZm9yCisKKyB1bmltcGxlbWVudGVkIGZpZWxkcyBpbnN0ZWFkIG9mIHJhbmRvbSBkYXRhLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTE2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTExICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOiBDSEFOR0VTOiBzbm1wZDogZml4ZWQgcmFjZQorCisgY29uZGl0aW9uIGluIGhyU1dSdW5UYWJsZSBUcmVhdCB0aGUgcmVhZHMgZnJvbSAvcHJvYy88cGlkPi8qCisgY2FyZWZ1bHksIHByb2Nlc3NlcyBjYW4gZXhpdCBpbiB0aGUgbWlkZGxlIG9mIHByb2Nlc3NpbmcuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTE1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTExICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOiBDSEFOR0VTOiBzbm1wZDogZml4ZWQgcmFjZQorCisgY29uZGl0aW9uIGluIGhyU1dSdW5UYWJsZSBUcmVhdCB0aGUgcmVhZHMgZnJvbSAvcHJvYy88cGlkPi8qCisgY2FyZWZ1bHksIHByb2Nlc3NlcyBjYW4gZXhpdCBpbiB0aGUgbWlkZGxlIG9mIHByb2Nlc3NpbmcuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTE1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTExICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb3JlLmM6IENIQU5HRVM6IHNubXBkOiBCdWlsZHMKKworIHdpdGggbW9zdCByZWNlbnQgTWluR1cgKGhhdmluZyAjZGVmaW5lIGxvY2FsdGltZV9yKS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTEgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvcmUuYzogQ0hBTkdFUzogc25tcGQ6IEJ1aWxkcworCisgd2l0aCBtb3N0IHJlY2VudCBNaW5HVyAoaGF2aW5nICNkZWZpbmUgbG9jYWx0aW1lX3IpLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTExICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9jZXJ0X3V0aWwuYywgc25tcGxpYi9zbm1wX29wZW5zc2wuYzogQ0hBTkdFUzogc25tcGxpYjoKKworIHJlZmluZSBjZXJ0IGRlYnVnZ2luZzsgcmVtb3ZlIHVudXNlZCBmdW5jdGlvbiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTExICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9jZXJ0X3V0aWwuYywgc25tcGxpYi9zbm1wX29wZW5zc2wuYzogQ0hBTkdFUzogc25tcGxpYjoKKworIHJlZmluZSBjZXJ0IGRlYnVnZ2luZzsgcmVtb3ZlIHVudXNlZCBmdW5jdGlvbiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxMTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTAgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL2NlcnRfdXRpbC5jOiBDSEFOR0VTOiBzbm1wZDogQlVHOiAzMjA1NzY1OiBoYW5kbGUgcmVjb25maWcKKworIGZvciBjZXJ0U2VjTmFtZSB0b2tlbiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTEyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEwICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9jZXJ0X3V0aWwuYzogQ0hBTkdFUzogc25tcGQ6IEJVRzogMzIwNTc2NTogaGFuZGxlIHJlY29uZmlnCisKKyBmb3IgY2VydFNlY05hbWUgdG9rZW4gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTEyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9zbm1wZC5jOiBTcGVsbGluZyBmaXggaW4gYSBzb3VyY2UgY29kZSBjb21tZW50OiBtZXNzZ2VzIC0+CisKKyBtZXNzYWdlcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L3NubXBkLmM6IFNwZWxsaW5nIGZpeCBpbiBhIHNvdXJjZSBjb2RlIGNvbW1lbnQ6IG1lc3NnZXMgLT4KKworIG1lc3NhZ2VzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL2xhcmdlX2ZkX3NldC5jOiBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMzIwMzgwNjogTWlub3IKKworIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBvZiBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoKS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvbGFyZ2VfZmRfc2V0LmM6IENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAzMjAzODA2OiBNaW5vcgorCisgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIG9mIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZSgpLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTEwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9zbm1wZC5jOiBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDMyMDM4MDY6IEF2b2lkIHRoYXQgdGhlIG1haW4KKworIGFnZW50IHByb2Nlc3NpbmcgbG9vcCAtIHdoZW4gdXNpbmcgbW9yZSB0aGFuIEZEX1NFVFNJWkUgZmlsZQorIGRlc2NyaXB0b3JzIC0gY2FuIGNhdXNlIG1lbW9yeSBjb3JydXB0aW9uIGJ5IGludm9raW5nIHNlbGVjdCgpLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDEwOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvc25tcGQuYzogQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAzMjAzODA2OiBBdm9pZCB0aGF0IHRoZSBtYWluCisKKyBhZ2VudCBwcm9jZXNzaW5nIGxvb3AgLSB3aGVuIHVzaW5nIG1vcmUgdGhhbiBGRF9TRVRTSVpFIGZpbGUKKyBkZXNjcmlwdG9ycyAtIGNhbiBjYXVzZSBtZW1vcnkgY29ycnVwdGlvbiBieSBpbnZva2luZyBzZWxlY3QoKS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDEwOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oLCBzbm1wbGliL2xhcmdlX2ZkX3NldC5jOiAKKworIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAzMjAzODA2OiBBZGQgdGhlIGZ1bmN0aW9uCisgbmV0c25tcF9sYXJnZV9zZWxlY3QoKS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMDggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaCwgc25tcGxpYi9sYXJnZV9mZF9zZXQuYzogCisKKyBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMzIwMzgwNjogQWRkIHRoZSBmdW5jdGlvbgorIG5ldHNubXBfbGFyZ2Vfc2VsZWN0KCkuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxMDggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZS5jOiAKKworIEZpeGVkIHR3byBjb21waWxlciB3YXJuaW5ncyAoYmFja3BvcnRlZCByMjAwOTggZnJvbSB0aGUgdHJ1bmspLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDEwNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvY2xpYl9idWlsZCwgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDlsYXJnZV9mZF9zZXRfY2xpYi5jOiBBZGRlZCBhCisKKyBtaW5pbWFsIHVuaXQgdGVzdCBmb3IgbmV0c25tcF9sYXJnZV9mZF9zZXQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxMDYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L2NsaWJfYnVpbGQsIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA5bGFyZ2VfZmRfc2V0X2NsaWIuYzogQWRkZWQgYQorCisgbWluaW1hbCB1bml0IHRlc3QgZm9yIG5ldHNubXBfbGFyZ2VfZmRfc2V0LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDEwNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9sYXJnZV9mZF9zZXQuYzogQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDMyMDM4MDY6IE1ha2UKKworIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZSgpIGNsZWFyIGFsbCByZWxldmFudCBmaWxlIGRlc2NyaXB0b3JzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTA1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL2xhcmdlX2ZkX3NldC5jOiBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMzIwMzgwNjogTWFrZQorCisgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKCkgY2xlYXIgYWxsIHJlbGV2YW50IGZpbGUgZGVzY3JpcHRvcnMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTA1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEwICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcC10Yy5jOiBDSEFOR0VTOiBzbm1wZDogQlVHOiAzMTc4Mzg5OiBGaXggaW5jb25zaXN0ZW50CisKKyBoYW5kbGluZyBvZiBUWiBvZmZzZXRzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxMDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTAgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wLXRjLmM6IENIQU5HRVM6IHNubXBkOiBCVUc6IDMxNzgzODk6IEZpeCBpbmNvbnNpc3RlbnQKKworIGhhbmRsaW5nIG9mIFRaIG9mZnNldHMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDEwNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXAtdGMuYzogQ0hBTkdFUzogc25tcGQ6IEJVRzogMzE3ODM4OTogRml4IGluY29uc2lzdGVudAorCisgaGFuZGxpbmcgb2YgVFogb2Zmc2V0cyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTA0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEwICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcC10Yy5jOiBDSEFOR0VTOiBzbm1wZDogQlVHOiAzMTc4Mzg5OiBGaXggaW5jb25zaXN0ZW50CisKKyBoYW5kbGluZyBvZiBUWiBvZmZzZXRzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDEwNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXAtdGMuYzogQ0hBTkdFUzogc25tcGQ6IEJVRzogMzE3ODM4OTogRml4IGluY29uc2lzdGVudAorCisgaGFuZGxpbmcgb2YgVFogb2Zmc2V0cyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTA0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhcHBzL01ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMjogbWFrZQorCisgdmFyaWFibGUgbmFtZXMgbWF0Y2ggZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDk5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuYzogCisKKyBGaXhlZCB0d28gY29tcGlsZXIgd2FybmluZ3MuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwOTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTAgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyOiBmaXhlZCBpbnN0YWxsYXRpb24KKworIHZhcmlhYmxlcyBmb3IgdGhlIG9wdGlvbmFsIFNFVCBwcm9ncmFtcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwOTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvcmVtb3ZlLXVubmVlZGVkLW1vZHVsZXM6IGNobW9kIGEreCBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA5NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9yZW1vdmVpZmRlZmNvZGUucGw6IHByaW50IGFuIGVycm9yIGlmIHRoZSBlbmQgb2YKKworIGEgZmlsZSB3YXMgcmVhY2hlZCBhbmQgd2UncmUgbm90IGJhY2sgaW50byB0aGUgc3RhdGUgd2UgY2FuIHdyaXRlOworIG90aGVyd2lzZSBhIGNsb3NpbmcgI2lmZGVmIGlzIG1pc3NpbmcuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwOTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5jOiBmaXggZW5kaWYgY29tbWVudCB0byBtYXRjaAorCisgdGhlIG9wZW5pbmcgaWZkZWYgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDk0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3JlbW92ZWlmZGVmY29kZS5wbDogcmVzZXQgdGhlIGNhbndyaXRlIGZsYWcgZm9yCisKKyBldmVyeSBmaWxlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA5MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9yZW1vdmUtdW5uZWVkZWQtbW9kdWxlczogdGVtcG9yYXJpbHkgbGVhdmUgaW4KKworIGhlYWRlciBmaWxlcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwOTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBjaGFuZ2UgdGhlIHVuaXF1ZSBmaWxlIGNoZWNrIHRvIG9uZSB0aGF0CisKKyBpcyBub3QgaW4gdGhlIG1pYmdyb3VwIGRpcmVjdG9yeSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwOTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3JlYWQtb25seS9UMDE0MXNubXB2MmNzZXRmYWlsX3NpbXBsZTogYSB0ZXN0IGZvcgorCisgZW5zdXJpbmcgdGhlIGFnZW50IHJlamVjdHMgU0VUIHJlcXVlc3RzIHdpdGggLS1lbmFibGUtcmVhZC1vbmx5IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA5MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDE0MXNubXB2MmNzZXRfc2ltcGxlOiBhZGQgYmFjayBpbiB0aGUKKworIHN0b3BhZ2VudCBjb21tYW5kIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA4OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDEwMXBkdV90eXBlX2NsaWIuYywgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QxMDJwZHVfYnVpbGRfY2xpYi5jLCAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDEwM3BkdV9wYXJzZV9jbGliLmM6IHVuaXQgdGVzdHMKKyAgICAgIHdyaXRlbgorCisgZm9yIHRoZSByZWFkLW9ubHkgc3VwcG9ydCBjb252ZXJ0ZWQgdG8gd29yayB3aXRoIG9yIHdpdGhvdXQKKyByZWFkLW9ubHkgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDg4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMTQxc25tcHYyY3NldF9zaW1wbGU6IGRvbid0IHJ1biB0aGUKKworIHNldCB0ZXN0IGlmIG5vX3dyaXRlX3N1cHBvcnQgaXMgdHVybmVkIG9uIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA4NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDMwc25tcHYzdXNlcmNyZWF0aW9uX3NpbXBsZTogc2tpcCBpZgorCisgbm9fd3JpdGVfc3VwcG9ydCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwODYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAxNDFzbm1wdjJjc2V0X3NpbXBsZTogQSBuZXcgdGVzdCB0bworCisgY2hlY2sgd2hldGhlciBTTk1QdjJjIFNFVHMgdG8gc3lzQ29udGFjdCB3b3JrIGFzIGV4cGVjdGVkIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA4NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9TdmFueWNvbmZpZzogYWxsb3cgZm9yIHYyYyBTRVQgc3VwcG9ydAorCisgdGVzdGluZyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwODQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5jOiBBbGxvdyBmb3Igc2luZ2xlIHF1b3RlcyBmb3IgdmFjbQorCisgY29udGV4dCBuYW1lIHF1b3RpbmcgdG9vIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA4MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlOiBmaXggdGhlIGNvbmZpZ3VyZSB0ZXN0cyB0byBpbmNsdWRlIHRoZSB3b3JkIHRlc3QgaW4gdGhlCisKKyB0ZXN0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA4MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyOiBmaXggdGhlIGNvbmZpZ3VyZSB0ZXN0cyB0byBpbmNsdWRlCisKKyB0aGUgd29yZCB0ZXN0IGluIHRoZSB0ZXN0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA4MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9yZW1vdmUtdW5uZWVkZWQtbW9kdWxlczogQWRkZWQgYW4gYW5ub3lpbmdseSBsb25nCisKKyBsaXN0IG9mIGV4Y2VwdGlvbnMgdGhhdCBuZWVkcyB0byBiZSBhdXRvbWF0ZWQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDgwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3JlbW92ZS11bm5lZWRlZC1tb2R1bGVzOiBBIHF1aWNrIHBlcmwgc2NyaXB0IHRvCisKKyByZW1vdmUgdW5uZWVkZWQgY29kZSBtb2R1bGVzIGZyb20gdGhlIG1vZHVsZXMgZGlyZWN0b3J5IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA3OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXQuYywgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQWRkclRhYmxlL3NubXBUbHN0bUFkZHJUYWJsZS5jLCAKKyAgICAgIHNubXBsaWIvY2VydF91dGlsLmMsIHNubXBsaWIvc25tcHVzbS5jLCBzbm1wbGliL3ZhY20uYzogbW9yZQorCisgaW1wcm92ZW1lbnRzIChyZW1vdmVtZW50cykgZm9yIGZlYXR1cml6YXRpb24gYW5kIHJlYWQtb25seSBzdXBwb3J0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmM6IENIQU5HRVM6IHNubXBsaWI6IFBBVENIOgorCisgMzE5NTUzNzogTWlub3IgYmluYXJ5X2FycmF5IGNvbnRhaW5lciBzb3J0IG9wdGltaXphdGlvbiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMDc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYzogQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6CisKKyAzMTk1NTM3OiBNaW5vciBiaW5hcnlfYXJyYXkgY29udGFpbmVyIHNvcnQgb3B0aW1pemF0aW9uIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNiAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jOiBUYWJzIHRvIHNwYWNlcworICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMDc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA2ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmM6IFRhYnMgdG8gc3BhY2VzCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNiAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnM6IENvbmZpZ3VyZSBjaGVjayBmb3IgZ2V0aG9zdG5hbWUyCisKKyBVc2UgZ2V0YWRkcmluZm8gaWYgYXZhaWxhYmxlLiBOb3cgd29ya3MgZm9yIFNvbGFyaXMgKGFuZCBXaW5kb3dzPykgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDA3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNiAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnM6IENvbmZpZ3VyZSBjaGVjayBmb3IgZ2V0aG9zdG5hbWUyCisKKyBVc2UgZ2V0YWRkcmluZm8gaWYgYXZhaWxhYmxlLiBOb3cgd29ya3MgZm9yIFNvbGFyaXMgKGFuZCBXaW5kb3dzPykgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA1ICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYXBwcy9zbm1wdGVzdC5jOiBBZGQgZHJvcHBlZCB8fCdzIGZyb20gcjIwMDcyIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDc0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA1ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cFJlc3VsdHNUYWJsZS5jOiBDbGVhbiB1cCwgYW5kCisKKyBjb3NvbGlkYXRlIHJlc3VsdCB0YWJsZSByb3cgY3JlYXRpb24gaW50byBhIG5ldyBmdW5jdGlvbi4gIFNhdmVzIDIwMAorIGxpbmVzIG9mIGNvZGUsIHdpdGggKGhvcGVmdWxseSkgbm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2UgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDA3MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBSZXN1bHRzVGFibGUuYzogQ2xlYW4gdXAsIGFuZAorCisgY29zb2xpZGF0ZSByZXN1bHQgdGFibGUgcm93IGNyZWF0aW9uIGludG8gYSBuZXcgZnVuY3Rpb24uICBTYXZlcyAyMDAKKyBsaW5lcyBvZiBjb2RlLCB3aXRoIChob3BlZnVsbHkpIG5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA3MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFwcHMvTWFrZWZpbGUuaW4sIGFwcHMvc25tcHRlc3QuYywgY29uZmlndXJlLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMjogZG9uJ3QgYnVpbGQgU0VUIHJlbGF0ZWQgYXBwcyB3aXRoCisKKyAtLWVuYWJsZS1yZWFkLW9ubHkgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDcyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvaGVscGVycy9iYWJ5X3N0ZXBzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3VwZGF0ZXMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpCisgICAgICAgZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYywgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5jLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oLCBzbm1wbGliL3NubXBfY2xpZW50LmM6IGZpeAorCisgaXNzdWVzIHdpdGggY29tYmluaW5nIC0tZW5hYmxlLW1pbmltYWxpc3QgYW5kIC0tZW5hYmxlLXJlYWQtb25seSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmluZC11bnVzZWQtY29kZTogYmV0dGVyIG91dHB1dCBmb3IgZmluZGluZworCisgb2JqZWN0IHN5bWJvbHMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDQgIE1pa2UgQmFlciA8YmFlcm1Ac3VzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3JlbW92ZWlmZGVmY29kZS5wbDogbGFzdCBjb21taXQ6IGNoYW5nZXMgdG8gYWxsb3cKKworIHBhcnNpbmcgb2YgZmVhdHVlcnMgZmlsZXMgdG8gZ2V0IGFsbCBtaW5pbWFsaXN0IHRhZ3Mgd2hpY2ggYXJlIHRoZW4KKyBwcm9jZXNzZWQgZm9yIHJlbW92YWwgdGhpcyBjb21taXQ6IGNoYW5nZWQgY29tbWVudHMvd2hpdGUgc3BhY2UgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDY5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA0ICBNaWtlIEJhZXIgPGJhZXJtQHN1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jOiBhZGRlZCBub193cml0ZSBzdXBwb3J0IHRvIGV4dGVuZC5jCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA2OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNCAgTWlrZSBCYWVyIDxiYWVybUBzdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2hlbHBlcnMvaW5zdGFuY2UuYzogQWRkZWQgbWlzc2luZyAjZW5kaWYgY29tbWVudCBmb3IgcmVtb3ZlCisKKyBpZmRlZiBjb2RlIHN1cHBvcnQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDY3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA0ICBNaWtlIEJhZXIgPGJhZXJtQHN1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9yZW1vdmVpZmRlZmNvZGUucGw6IGFkZGVkIGNoYW5nZXMgdG8gYWxsb3cgY29kZQorCisgcmVtb3ZhbCBpbi1wbGFjZSAoaS5lLiBkb2VzIG5vdCByZXF1aXJlIGNyZWF0aW5nIGEgbmV3IGZpbGUpIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA2NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNCAgTWlrZSBCYWVyIDxiYWVybUBzdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvaWdub3JlLnJlZ2V4cDogYWRkaW5nIGEgaWdub3JlLnJlZ2V4cCBmaWxlIHRoYXQKKworIGNhbiBiZSB1c2VkIHdpdGggcmVtb3ZlaWZkZWZjb2RlLnBsIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA2NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzOiBhZGQgYSBvdXRnb2luZyBsaW5rIHRvIHRoZQorCisgcGFyZW50IG1hcmtpbmcgcGFnZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNjQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtbWFrZWRvY3M6IEFkZGVkIGEgd2lraSBvdXRwdXQgbW9kZQorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNjMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1tYWtlZG9jczogTm90ZSB0aGF0IHRoZSBvcmcgb3V0cHV0IGlzIHRoZQorCisgZGVmYXVsdCBpbiB0aGUgaGVscCBvdXRwdXQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDYyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA0ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2xpbnV4LmM6IENIQU5HRVM6IHNubXBkOiBmaXhlZAorCisgJ3RydW5jYXRpbmcgaW50ZWdlciB2YWx1ZSA+IDMyIGJpdHMnIGluIFVDRC1TTk1QLU1JQjo6c3lzdGVtU3RhdHMgb24KKyBMaW51eCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMDYxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA0ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2xpbnV4LmM6IENIQU5HRVM6IHNubXBkOiBmaXhlZAorCisgJ3RydW5jYXRpbmcgaW50ZWdlciB2YWx1ZSA+IDMyIGJpdHMnIGluIFVDRC1TTk1QLU1JQjo6c3lzdGVtU3RhdHMgb24KKyBMaW51eCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMDYxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA0ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2xpbnV4LmM6IENIQU5HRVM6IHNubXBkOiBmaXhlZAorCisgJ3RydW5jYXRpbmcgaW50ZWdlciB2YWx1ZSA+IDMyIGJpdHMnIGluIFVDRC1TTk1QLU1JQjo6c3lzdGVtU3RhdHMgb24KKyBMaW51eCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMDYxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA0ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2xpbnV4LmM6IENIQU5HRVM6IHNubXBkOiBmaXhlZAorCisgJ3RydW5jYXRpbmcgaW50ZWdlciB2YWx1ZSA+IDMyIGJpdHMnIGluIFVDRC1TTk1QLU1JQjo6c3lzdGVtU3RhdHMgb24KKyBMaW51eCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jLCBhZ2VudC9oZWxwZXJzL3dhdGNoZXIuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmMsIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2RhdAorICAgICAgIGFfYWNjZXNzLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jLAorICAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmMsIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYywgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmMsIHNubXBsaWIvc25tcF9hcGkuYzoKKworIHJlY2xhc3NpZmljYXRpb24gb2YgdGhlIHJlbWFpbmluZyBmZWF0dXJlcyBpbnRvIGEgaGllcmFyY2h5IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA2MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX29wZW5zc2wuYzogZG9uJ3QgZG91YmxlLWRlY2xhcmUgY2VydF91dGlscyBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA1OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jOiB0aGUKKworIGlwYWRkcmVzc19saW51eCB3YXMgaW5jb3JyZWN0bHkgbWFya2VkIGFzIG5lZWRpbmcgY2VydF9maW5nZXJwcmludHMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDU4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jOiBwdXQgdGhlIGFnZW50X3JlZ2lzdHJ5IGZlYXR1cmUgaW4KKworIGxpYm5ldHNubXBhZ2VudC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA1NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wMyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWY6IENIQU5HRVM6IFdpbjMyOiBEZXByZWNhdGVkCisKKyBsaWJzbm1wLmRlZiAtIGFkZCBORVRTTk1QX0lNUE9SVCB0byBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgaW5zdGVhZCB0bworIGV4cG9ydCBhIGZ1bmN0aW9uIGZyb20gbmV0c25tcC5kbGwuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMDU2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTAzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZjogQ0hBTkdFUzogV2luMzI6IERlcHJlY2F0ZWQKKworIGxpYnNubXAuZGVmIC0gYWRkIE5FVFNOTVBfSU1QT1JUIHRvIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBpbnN0ZWFkIHRvCisgZXhwb3J0IGEgZnVuY3Rpb24gZnJvbSBuZXRzbm1wLmRsbC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA1NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wMyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaDogTW92ZWQgYSBzb3VyY2UgY29kZSBjb21tZW50CisKKyBzdWNoIHRoYXQgaXQgaXMgYWdhaW4gaW1tZWRpYXRlbHkgYWJvdmUgdGhlIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBpdAorIGFwcGxpZXMgdG8uICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMDU1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTAzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg6IEFkZGVkIG1pc3NpbmcKKyAgICAgIE5FVFNOTVBfSU1QT1JUCisKKyBkZWNsYXJhdGlvbnMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaDogQWRkZWQgbWlzc2luZworICAgICAgTkVUU05NUF9JTVBPUlQKKworIGRlY2xhcmF0aW9ucy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAwNTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHdpbjMyL2xpYmFnZW50L2xpYmFnZW50LmRlZiwgd2luMzIvbGlidWNkbWlicy9saWJ1Y2RtaWJzLmRlZjogCisKKyBSZW1vdmVkIHR3byBvYnNvbGV0ZSBXaW4zMiBmaWxlcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA1MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wMyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogd2luMzIvbGliYWdlbnQvbGliYWdlbnQuZGVmLCB3aW4zMi9saWJ1Y2RtaWJzL2xpYnVjZG1pYnMuZGVmOiAKKworIFJlbW92ZWQgdHdvIG9ic29sZXRlIFdpbjMyIGZpbGVzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDA1MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wMyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5jOiBUcml2aWFsIGNvbW1lbnQgZml4OgorCisgc25tcElQdjZCYXNlRG9tYWluLmMgY29udGFpbnMgSVB2NiBiYXNlIHRyYW5zcG9ydCBzdXBwb3J0IGZ1bmN0aW9ucworIGluc3RlYWQgb2YgSVB2NC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA1MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wMyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5jOiBUcml2aWFsIGNvbW1lbnQgZml4OgorCisgc25tcElQdjZCYXNlRG9tYWluLmMgY29udGFpbnMgSVB2NiBiYXNlIHRyYW5zcG9ydCBzdXBwb3J0IGZ1bmN0aW9ucworIGluc3RlYWQgb2YgSVB2NC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAwNTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHdpbjMyL2NvbmZpZy5oOiBSZW1vdmVkIGFuIG9ic29sZXRlIGZpbGUuICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA1MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oLCB3aW4zMi9zbm1wc21fc2h1dGRvd24uaCwgCisgICAgICB3aW4zMi9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaDogQnVpbGRzIGFnYWluIHdpdGggVmlzdWFsIFN0dWRpbworCisgYWZ0ZXIgdGhlIGludHJvZHVjdGlvbiBvZiB0aGUgImZlYXR1cmUiIGZlYXR1cmUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNDkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHdpbjMyL3NubXBzbV9pbml0Lmg6IFJlbW92ZWQgYSBtaXNsZWFkaW5nIGNvbW1lbnQuICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA0OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wMiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyOiBDb3JyZWN0IHRoZSBjaGVjayBvZgorCisgd2V0aGVyIHVzbSBzZWN1cml0eSBpcyBlbmFibGVkLiAgUmVnZW5lcmF0ZSBjb25maWd1cmUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDIgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiBSZWdlbmVyYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDQ2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTAyICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogICAqIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2RhdAorICAgICAgIGFfYWNjZXNzLmM6IEFkZCBtaXNzaW5nIGRlcGVuZGVuY2llcyBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA0NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wMiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcHVzbS5jOiBJZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBmcm9tCisKKyBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDQ0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTAyICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9jb250YWluZXIuYzogU3BsaXQgdGhlIGNvbnRhaW5lcl9jb21wYXJlX2Z1bmN0aW9ucyBmZWF0dXJlCisKKyBpbnRvIGNvbnRhaW5lcl9jb21wYXJlX21lbSwgY29udGFpbmVyX2NvbXBhcmVfbG9uZywKKyBjb250YWluZXJfY29tcGFyZV91bG9uZywgY29udGFpbmVyX2NvbXBhcmVfaW50MzIgYW5kCisgY29udGFpbmVyX2NvbXBhcmVfdWludDMyIFVuaWZ5IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGNvbXBhcmUKKyBmdW5jdGlvbnMgZnVydGhlci4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA0MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wMiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvY29udGFpbmVyLmM6IENoYW5nZSB0aGUgc3BlbGxpbmcgb2YgdGhlCisKKyBjb250YWluZXJfY29tcGFyZV9jc3RyaW5nIGZlYXR1cmUgdG8gY29udGFpbmVyX25jb21wYXJlX2NzdHJpbmcgYXMKKyB0aGF0IGlzIHRoZSBmdW5jdGlvbiB0aGF0IGlzIGd1YXJkZWQgYnkgdGhhdCBhdHRyaWJ1dGUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDIgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaDogQWRkIHRoZSBtaXNzaW5nIHJlcGxhY2VtZW50CisKKyBtYWNybyBmb3Igc25tcF9pbml0X3N0YXRpc3RpY3MgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTAyICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg6IHNubXBfaW5jcmVtZW50X3N0YXRpc3RpY19ieQorCisgdGFrZXMgdHdvIGFyZ3VtZW50cyBzbyBsZXQgdGhlIHJlcGxhY2VtZW50IG1hY3JvIHRha2UgdHdvIGFyZ3VtZW50cworIGFzIHdlbGwuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNDAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjcgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jOiBGaXggdHlwbyBpbgorCisgcjE5OTkwIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAzOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1jaGVjazogUmVtb3ZlIGxpbmVzIHN0YXJ0aW5nIHdpdGggI2RlZmluZQorCisgaW4gdGhlIG91dHB1dCBvZiB0aGUgcHJlcHJvY2Vzc29yIFdoZW4gZ2NjIC1FIGlzIGNhbGxlZCB3aXRoIC1nZ2RiMworIChvciAtZEQpIHRoZW4gYWxsIHRoZSBtYWNybyBkZWZpbml0aW9ucyBhcmUgcGFzc2VkIHRocm91Z2ggdGhlCisgcHJlcHJvY2Vzc29yIGFuZCB0aGF0IG1lc3NlcyB1cCBvdXIgcHJvY2Vzc2luZy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAzOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIE1ha2VmaWxlLnJ1bGVzOiBQdXQgdGhlIGdlbmVyYXRlZCBmaWxlIGluIHRoZSBidWlsZCB0cmVlLCBub3QgdGhlCisKKyBzb3VyY2UgdHJlZS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAzNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2FnZW50X3RyYXAuYywgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb3JlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9od19tZW0uYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlCisgICAgICAgX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9pbnQKKyAgICAgICBlcmZhY2UuYywgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2ludGVyCisgICAgICAgZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfaW50ZXJmYQorICAgICAgIGNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYgorICAgICAgIGxlX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGkKKyAgICAgICBmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9pbnRlcmYKKyAgICAgICBhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9pbnRlcmZhY2UuCisgICAgICAgYywgYWdlbnQvbWliZ3JvdXAvdHNtLW1pYi9zbm1wVHNtU3RhdHMvc25tcFRzbVN0YXRzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9zb2xhcmlzMi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2ludGVyZmFjZS4KKyAgICAgICBjOiBtb3ZlZCBhIGJ1bmNoIG9mIGZlYXR1cmVzIGludG8gdGhlIGxpYm5ldHNubXBtaWJzIGZlYXR1cmUgc2V0LgorICAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDM2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvYWdlbnRfaGFuZGxlci5jLCBhZ2VudC9hZ2VudF9pbmRleC5jLCAKKyAgICAgIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmMsIGFnZW50L2FnZW50X3RyYXAuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL2FsbF9oZWxwZXJzLmMsIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGUuYywgYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmMsIGFnZW50L2hlbHBlcnMvdGFibGVfcm93LmMsIAorICAgICAgYWdlbnQvc25tcF9hZ2VudC5jLCBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0cywgc25tcGxpYi9taWIuYzoKKworIGNsYXNzaWZpZWQgbGlibmV0c25tcGFnZW50IGZlYXR1cmVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAzNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6IHJldmVyc2UgdGhlIG9yZGVyIG9mIHRoZSBsaWJyYXJpZXMKKworIChzbm1wbGliIGZpcnN0KSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOiBvdXRwdXQgY2xlYW51cCBhbmQgYWRkZWQgYWdlbnQtbWlicworCisgYW5kIGxvZ2dpbmcgb3B0aW9ucyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOiBhZGQgYSBkZWZhdWx0IHNldCBvZiBhcmd1bWVudHMKKworIGNhbGN1bGF0ZSByZXN1bHRpbmcgc2l6ZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDMyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL2Rpcl91dGlscy5jOiBBZGRlZCBhIG1pc3NpbmcgOyBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAzMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6IHByZWZpeCB0aGUgb3V0cHV0IGZpbGVzIHdpdGggYSBudW1iZXIKKworIHRvIGluZGljYXRlIG9yZGVyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAzMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6IHNhdmUgdGhlIHJlc3VsdHMgb2YgdGhlIHN5c3RlbQorCisgZXhlY3V0aW9ucyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMjkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOiBlbmFibGUgYnVpbGRpbmcgb2YgdGhlIHJlc3VsdGluZworCisgY29tYmluYXRpb25zIEFkZCBhIC1uIGZsYWcgZm9yIGRyeS1ydW5zIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAyOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOiBlbmFibGUgdGhlIC10IHRhZyBmb3IgbGltaXRpbmcgdHlwZXMKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDI3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czogQWRkZWQgYXJndW1lbnQgcGFyc2luZyBhbmQgYXJndW1lbnRzCisKKyBmb3Igc2VsZWN0aW5nIGFuZCBsaXN0aW5nIHR5cGVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAyNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6IGdlbmVyYXRlIGNvbmZpZ3VyZSBzY3JpcHQgYXJndW1lbnRzCisKKyBmcm9tIHNwZWNzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAyNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6IGFkZGVkIGEgYnVuY2ggb2YgbmV3IGZlYXR1cmUgb3B0aW9ucworCisgYW5kIGNsZWFuZWQgdXAgYSBiaXQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDI0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czogYWRkZWQgYSBuZXcgKG5vdCB5ZXQgd29ya2luZykgc2NyaXB0CisKKyB0byB0ZXN0IHNpemluZyBvZiB2YXJpb3VzIGFyZ3VtZW50IHNldHMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDIzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI2ICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYzogU2ltcGxpZnkgdGhlIGNvZGUuIFVuaWZ5IHNvbWUKKworIGRlYnVnIGxvZ3MuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jOiBSZWR1Y2UgdGhlIHNjb3BlIG9mIGEgZmV3CisKKyB2YXJpYWJsZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDIxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI2ICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmM6IFJlbW92ZSBzb21lIHVudXNlZCBpbmNsdWRlcy4gCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAyMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmM6IE1ha2UgaXQgcG9zc2libGUgdG8KKworIGluaXRpYWxpemUvdW5pbml0aWFsaXplIG1vZHVsZXMgd2l0aCA2NCBjaGFyYWN0ZXIgbmFtZXMgYW5kIG5vdAorIHN1ZmZlciB3aWxkIHdyaXRlcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAxOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmM6IENvZGUgcmVzdHJ1Y3R1cmluZyAtIHB1dCB0aGUKKworIG1hbmFnZWQgcm91dGluZXMgYmVmb3JlIHRoZSBtYW5hZ21lbnQgY29kZS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAxOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmMsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmg6IAorCisgQ0hBTkdFUzogbGlibmV0c25tcG1pYnM6IE1ha2UgYWxsIGZ1bmN0aW9ucyBpbiB0aGUgZGxtb2QgbW9kdWxlIHRoYXQKKyBkb24ndCBoYXZlIHRvIGJlIHB1YmxpYyBzdGF0aWMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDE3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI2ICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYzogUmVuYW1lIGRlaW5pdF9kbG1vZCB0bworCisgc2h1dGRvd25fZGxtb2QgYXMgdGhhdCBpcyB3aGF0IGl0IHJlYWxseSBpcyBhYm91dC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAxNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgTWlrZSBCYWVyIDxiYWVybUBzdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmM6IGFkZGluZyBtaW5pbWFsaXN0IGlmZGVmcworCisgdG8gbmV0LXNubXAtdmFjbSBtaWIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDE1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtbWFrZWRvY3M6IHByb3Blcmx5IGhhbmRsZSB0d2luIGNoaWxkcmVuOworCisgYWxzbyBzb3J0IHRoZSBjaGlsZCBsaXN0IGFscGhhYmV0aWNhbGx5LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfbG9nZ2luZy5jOiBJIHN1cHBvc2UgbG9nZ2luZyBzaG91bGQgcHJvYmFibHkgZGVmYXVsdAorCisgdG8gYmVpbmcgYSB3YW50ZWQgb3B0aW9uIDotKSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1tYWtlZG9jczogb3JnLWxpbmsgdGhlIGZpbGVzIGluIHRoZQorCisgb3V0cHV0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIE1ha2VmaWxlLnJ1bGVzLCBhZ2VudC9NYWtlZmlsZS5pbiwgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuaW4sIAorICAgICAgYXBwcy9NYWtlZmlsZS5pbiwgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbiwgCisgICAgICBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtY2hlY2ssIHNubXBsaWIvTWFrZWZpbGUuaW46IG1ha2UgdGhlCisKKyBmZWF0dXJlcy1jaGVjayBzY3JpcHQgdHJhY2sgdGhlIGZ1bGwgc291cmNlIHBhdGggZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtbWFrZWRvY3M6IGNoYW5nZSB0aGUgZnVuY3Rpb24gbmFtZXMgdG8KKworIG1hdGNoIHRoYXQgaXQncyBwcmludGluZyB0byBvcmctbW9kZSBhdCB0aGUgbW9tZW50LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDEwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgc25tcGxpYi9maWxlX3V0aWxzLmMsIHNubXBsaWIvbWliLmMsIHNubXBsaWIvb2lkX3N0YXNoLmMsIAorICAgICAgc25tcGxpYi9zbm1wX2FwaS5jLCBzbm1wbGliL3NubXBfbG9nZ2luZy5jLCBzbm1wbGliL3Rvb2xzLmM6IGxhc3QKKyAgICAgIG9mCisKKyB0aGUgZmVhdHVyZSBjbGFzc2lmaWNhdGlvbiBpbiBsaWJuZXRzbm1wIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAwOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9rZXl0b29scy5jLCBzbm1wbGliL2xjZF90aW1lLmMsIHNubXBsaWIvc2NhcGkuYzogbWFrZSB0aGUKKworIHVzbV9zdXBwb3J0IHV0aWxpdGllcyBzZWxmLWRlY2xhcmUgdGhlbXNlbHZlcyBhcyBjaGlsZHJlbiB0byBtYWtlCisgc3VyZSB0aGV5J3JlIHByb3Blcmx5IGluY2x1ZGVkIGR1cmluZyBkZXBlbmRlbmN5IG9yZGVyaW5nIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAwOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIvY2FsbGJhY2suYywgc25tcGxpYi9jZXJ0X3V0aWwuYywgc25tcGxpYi9jaGVja192YXJiaW5kLmMsIAorICAgICAgc25tcGxpYi9jb250YWluZXIuYywgc25tcGxpYi9kYXRhX2xpc3QuYywgc25tcGxpYi9kZWZhdWx0X3N0b3JlLmMsCisgICAgICAgc25tcGxpYi9mZF9ldmVudF9tYW5hZ2VyLmMsIHNubXBsaWIvZmlsZV91dGlscy5jLCAKKyAgICAgIHNubXBsaWIva2V5dG9vbHMuYywgc25tcGxpYi9zbm1wdXNtLmM6IHN1cGVyc3RydWN0dXJhbGl6YXRpb25pemluZworCisgdGhlIGZlYXR1cmVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAwNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIvcmVhZF9jb25maWcuYywgc25tcGxpYi9zbm1wLXRjLmMsIHNubXBsaWIvc25tcF9jbGllbnQuYywgCisgICAgICBzbm1wbGliL3NubXBfZW51bS5jLCBzbm1wbGliL3NubXBfdHJhbnNwb3J0LmMsIHNubXBsaWIvc3lzdGVtLmMsIAorICAgICAgc25tcGxpYi90ZXh0X3V0aWxzLmMsIHNubXBsaWIvdG9vbHMuYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVuaXhEb21haW4uYywgc25tcGxpYi91Y2RfY29tcGF0LmM6CisKKyBzaWduaWZpY2FudCBwYXJlbnQvY2hpbGQgZmVhdHVyZSBjbGFzc2lmaWNhdGlvbiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMDYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYywgc25tcGxpYi9zbm1wdXNtLmM6IGNsYXNzaWZ5IGEgZmV3IGNvbXBvbmVudHMKKworIGludG8gYSB0b3AtbGV2ZWwgbGlibmV0c25tcCBjb21wb25lbnQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDA1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgc25tcGxpYi9rZXl0b29scy5jLCBzbm1wbGliL2xjZF90aW1lLmMsIHNubXBsaWIvc2NhcGkuYywgCisgICAgICBzbm1wbGliL3NubXB1c20uYzogc3RydWN0dXJpemUgdGhlIHVzbSBmZWF0dXJlcyBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAwNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIvY29udGFpbmVyLmMsIHNubXBsaWIvY29udGFpbmVyX2l0ZXJhdG9yLmMsIAorICAgICAgc25tcGxpYi9jb250YWluZXJfbGlzdF9zc2xsLmMsIHNubXBsaWIvY29udGFpbmVyX251bGwuYywgCisgICAgICBzbm1wbGliL2Rpcl91dGlscy5jOiBzdHJ1Y3R1cmUgdGhlIGNvbnRhaW5lciBmZWF0dXJlcyBpbnRvIGEKKworIGhpZXJhcmNoeSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9sb2dnaW5nLmM6IGdyb3VwIHRoZSBsb2dnaW5nIGhhbmRsZXJzIHVuZGVyIGEgcGFyZW50CisKKyBmZWF0dXJlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAwMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1tYWtlZG9jczogZml4IHRoZSBleHBlY3QgYXJndW1lbnQgY291bnQKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDAxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtbWFrZWRvY3M6IGZpeCB0aGUgbmFtZSBvZiB0aGUgZXhwZWN0ZWQKKworIGlucHV0IGZpbGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDAwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtbWFrZWRvY3M6IGFyZ3VtZW50IHBhcnNpbmcgYW5kIHVzYWdlKCkKKworIG91dHB1dCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5OTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9oZWxwZXJzL3N0YXNoX2NhY2hlLmMsIGFnZW50L2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmMsIHNubXBsaWIvb2lkX3N0YXNoLmM6IC0KKyAgICAgIGFkZGVkIHR3byBvaWRfc3Rhc2ggZnVuY3Rpb25zIGFzIGluZGl2aWR1YWwgZmVhdHVyZXMgLSBjbGVhbmVkIHVwCisgICAgICBzb21lIHdhcm5pbmdzIGluIHRoZSB0YWJsZV9pdGVyYXRvciBjb2RlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTk4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBkaXN0L21ha2VyZWxlYXNlLnhtbDogRml4IHRoZSBjb21tYW5kIHRvIGNyZWF0ZSBhIG5ldyBTVk4gdGFnIGxpbmUKKyAgICAgIChIYXZpbmcgYnJvdWdodCB0aGUgc3RydWN0dXJlIG9mIHRoZSA1LjUueCBicmFuY2ggIGludG8gbGluZSB3aXRoCisgICAgICB0aGUgb3RoZXIgYnJhbmNoZXMsIHRoZSBwcmV2aW91cyAgY29tbWFuZCBpcyBub3cgd3JvbmcgZm9yICphbGwqCisgICAgICBicmFuY2hlcywgcmF0aGVyICB0aGFuIGp1c3QgbW9zdCBvZiB0aGVtISkgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDE5OTk3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBkaXN0L21ha2VyZWxlYXNlLnhtbDogRml4IHRoZSBjb21tYW5kIHRvIGNyZWF0ZSBhIG5ldyBTVk4gdGFnIGxpbmUKKyAgICAgIChIYXZpbmcgYnJvdWdodCB0aGUgc3RydWN0dXJlIG9mIHRoZSA1LjUueCBicmFuY2ggIGludG8gbGluZSB3aXRoCisgICAgICB0aGUgb3RoZXIgYnJhbmNoZXMsIHRoZSBwcmV2aW91cyAgY29tbWFuZCBpcyBub3cgd3JvbmcgZm9yICphbGwqCisgICAgICBicmFuY2hlcywgcmF0aGVyICB0aGFuIGp1c3QgbW9zdCBvZiB0aGVtISkgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTk3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBkaXN0L21ha2VyZWxlYXNlLnhtbDogRml4IHRoZSBjb21tYW5kIHRvIGNyZWF0ZSBhIG5ldyBTVk4gdGFnIGxpbmUKKyAgICAgIChIYXZpbmcgYnJvdWdodCB0aGUgc3RydWN0dXJlIG9mIHRoZSA1LjUueCBicmFuY2ggIGludG8gbGluZSB3aXRoCisgICAgICB0aGUgb3RoZXIgYnJhbmNoZXMsIHRoZSBwcmV2aW91cyAgY29tbWFuZCBpcyBub3cgd3JvbmcgZm9yICphbGwqCisgICAgICBicmFuY2hlcywgcmF0aGVyICB0aGFuIGp1c3QgbW9zdCBvZiB0aGVtISkgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTk3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBkaXN0L21ha2VyZWxlYXNlLnhtbDogRml4IHRoZSBjb21tYW5kIHRvIGNyZWF0ZSBhIG5ldyBTVk4gdGFnIGxpbmUKKyAgICAgIChIYXZpbmcgYnJvdWdodCB0aGUgc3RydWN0dXJlIG9mIHRoZSA1LjUueCBicmFuY2ggIGludG8gbGluZSB3aXRoCisgICAgICB0aGUgb3RoZXIgYnJhbmNoZXMsIHRoZSBwcmV2aW91cyAgY29tbWFuZCBpcyBub3cgd3JvbmcgZm9yICphbGwqCisgICAgICBicmFuY2hlcywgcmF0aGVyICB0aGFuIGp1c3QgbW9zdCBvZiB0aGVtISkgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5OTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIG1hbi9uZXRzbm1wX2FjY2Vzc19tdWx0aXBsZXhlci4zLCBtYW4vbmV0c25tcF9hZ2VudC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2FnZW50X2hhbmRsZXIuaC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywgCisgICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLjMsIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsIAorICAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgCisgICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsIAorICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsIAorICAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbnVsbF9jb250YWluZXIuMywgbWFuL25ldHNubXBfb2lkX3N0YXNoLjMsIAorICAgICAgbWFuL25ldHNubXBfb2xkX2FwaS4zLCBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgCisgICAgICBtYW4vbmV0c25tcF9zY2FsYXIuMywgbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMsIAorICAgICAgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIAorICAgICAgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCBtYW4vbmV0c25tcF90YWJsZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCBtYW4vbmV0c25tcF90YWJsZV9yb3cuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsIAorICAgICAgbWFuL25ldHNubXBfdG9vbHMuaC4zLCBtYW4vbmV0c25tcF91dGlsLjMsCisgICAgICBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywKKyAgICAgIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzogZG9jdW1lbnRhdGlvbgorCisgdXBkYXRlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMTk5OTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWMsIHBlcmwvQVNOL0FTTi5wbSwgcGVybC9BbnlEYXRhX1NOTVAvU3RvcmFnZS5wbSwKKyAgICAgICBwZXJsL09JRC9PSUQucG0sIHBlcmwvU05NUC9TTk1QLnBtLCAKKyAgICAgIHBlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci5wbSwgcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG0sIAorICAgICAgcGVybC9hZ2VudC9hZ2VudC5wbSwgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG0sIAorICAgICAgcGVybC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG06IFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDE5OTk0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIENoYW5nZUxvZzogdmVyc2lvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDE5OTkzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsIAorICAgICAgZGlzdC9uZXQtc25tcC5zcGVjLCBwZXJsL0FTTi9BU04ucG0sIHBlcmwvQW55RGF0YV9TTk1QL1N0b3JhZ2UucG0sCisgICAgICAgcGVybC9PSUQvT0lELnBtLCBwZXJsL1NOTVAvU05NUC5wbSwgCisgICAgICBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIucG0sIHBlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtLCAKKyAgICAgIHBlcmwvYWdlbnQvYWdlbnQucG0sIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLCAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtOiBWZXJzaW9uIG51bWJlciB1cGRhdGUKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AxOTk5MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXB2My5jOiBBdm9pZCBhIHBvc3NpYmxlIGNyYXNoIGlmIHRoZSBlbmdpbmVJRCBpcyBub3QKKworIGF2YWlsYWJsZSBvciBzZXQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5OTkxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcHYzLmM6IEF2b2lkIGEgcG9zc2libGUgY3Jhc2ggaWYgdGhlIGVuZ2luZUlEIGlzIG5vdAorCisgYXZhaWxhYmxlIG9yIHNldC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5OTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wdjMuYzogQXZvaWQgYSBwb3NzaWJsZSBjcmFzaCBpZiB0aGUgZW5naW5lSUQgaXMgbm90CisKKyBhdmFpbGFibGUgb3Igc2V0LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk5MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXB2My5jOiBBdm9pZCBhIHBvc3NpYmxlIGNyYXNoIGlmIHRoZSBlbmdpbmVJRCBpcyBub3QKKworIGF2YWlsYWJsZSBvciBzZXQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5OTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wdjMuYzogQXZvaWQgYSBwb3NzaWJsZSBjcmFzaCBpZiB0aGUgZW5naW5lSUQgaXMgbm90CisKKyBhdmFpbGFibGUgb3Igc2V0LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AxOTk5MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgTWlrZSBCYWVyIDxiYWVybUBzdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFNldFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJCb29sZWFuVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckRlbHRhVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVPYmplY3RzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5oOiBhZGRpbmcgaWZkZWYgY29kZQorCisgZm9yIG1pbmltYWxpc3Qgc3VwcG9ydCBvZiBkaWZmbWFuIG1pYiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5OTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjQgIE1pa2UgQmFlciA8YmFlcm1Ac3VzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N5c3RlbS5jLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N5c3RlbS5oOgorCisgQWRkaW5nIG1pbmltYWxpc3QgaWZkZWZzIHRvIGhvc3QgcmVzb3VyY2UgbWliIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk4OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jLCBzbm1wbGliL2RhdGFfbGlzdC5jOiBtYXJrIHRoZQorCisgZGF0YV9saXN0IGZ1bmN0aW9uIHRoYXQncyBvbmx5IHVzZWQgaW4gc3RhY2hfY2FjaGluZyBhcyBhIGZlYXR1cmUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTg4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmM6IHdob29wcy4gIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTg3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jOiBtb3JlIG1pc3Npbmcgc3Rhc2ggcmVmZXJlbmNlcworICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5ODYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYzogaWZkZWZlZC9mZWF0dXJlZCBvdXQgYSBtaXNzaW5nCisKKyBzdGFzaF9jYWNoZSBzZWN0aW9uIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk4NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jOiBtYWtlIHRoZSBwcmVmaXhfaW5mbyBtb3JlCisKKyBoaWVyYXJjaGljYWwgYW5kIHN1Yi1mZWF0dXJlIHRoZSB1bnVzZWQgb25lIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk4NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9maW5kLXVudXNlZC1jb2RlOiBkbyBpbmNsdWRlIHRoZSBwZXJsL3B5dGhvbiBjb2RlCisKKyB3aGVuIHNlYXJjaGluZyBmb3IgZmlsZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTgzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX3RkYXRhLmM6IG1ha2UgdGhlIHNlbWktdXNlZCB0YWJsZV90ZGF0YQorCisgZnVuY3Rpb25zIGNoaWxkcmVuIG9mIHRhYmxlX3RkYXRhX2FsbCBpbnN0ZWFkIG9mIGp1c3QgdGFibGVfdGRhdGEgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTgyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvaGVscGVycy90YWJsZV90ZGF0YS5jOiBDb3JyZWN0IHR5cG8gZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5ODEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjMgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3BhcnNlLmM6IENvcnJlY3QgdHlwbyBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk4MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMyAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvc25tcF92YXJzLmM6IHByb3BlciBpbmNsdWRlIG9mIHByb3RvdHlwZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk3OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfYWdlbnQsIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfdHJhbnNwb3J0cywgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZTogY29tcGF0IHNvbWUgZmVhdHVyZSBoZWFkZXIKKworIGNoaWNrZW4gYW5kIGVnZyBwcm9ibGVtcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5NzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjMgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L3NubXBfdmFycy5jOiBJbmNsdWRlIHJlcXVpcmVkIHByb3RvdHlwZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjMgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcHVzbS5jOiB1bnNpZ25lZCBqdWdnbGluZyB0byByZW1vdmUgd2FybmluZ3MgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5NzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjMgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZS5jLAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuaCwKKyAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2RhdAorICAgICAgIGFfYWNjZXNzLmMsCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfZGF0YV9hY2Nlc3MuYzoKKworIHVuc2lnbmVkIGp1Z2dsaW5nIHRvIHJlbW92ZSB3YXJuaW5ncyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgICogCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuYywKKyAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlLmgsCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXQKKyAgICAgICBhX2FjY2Vzcy5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2RhdGFfYWNjZXNzLmM6CisKKyB1bnNpZ25lZCBqdWdnbGluZyB0byByZW1vdmUgd2FybmluZ3MgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIuaDogRW5hYmxlIChwcm9iYWJseSBmb3Jnb3R0ZW4pCisKKyBpcEFkZHJlc3NQcmVmaXhUYWJsZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTc0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIuaDogRW5hYmxlIChwcm9iYWJseSBmb3Jnb3R0ZW4pCisKKyBpcEFkZHJlc3NQcmVmaXhUYWJsZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5NzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtY2hlY2ssIAorICAgICAgbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzLAorICAgICAgbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLXJlbW92ZSwgCisgICAgICBsb2NhbC9taW5pbWFsaXN0L2ZpbmQtdW51c2VkLWNvZGUsIAorICAgICAgbG9jYWwvbWluaW1hbGlzdC9yZW1vdmVpZmRlZmNvZGUucGw6IGFkZGVkIG90aGVyIG1pc3NpbmcgJ25ldycKKyAgICAgIGZpbGVzCisKKyBub3QgaW5jbHVkZWQgaW4gdGhlIG1pbmltYWxpc3QgcGF0Y2ggZmlsZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5NzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjMgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fZnJlZWJzZDQuYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fbmV0YnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX29wZW5ic2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9mcmVlYnNkNC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X25ldGJzZC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X29wZW5ic2QuYzogTG9hZGluZworCisgSVB2NiBkYXRhIGlzIGEgbm8tbm8gd2hlbiBJUHY2IG5vdCBlbmFibGVkIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjMgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fZnJlZWJzZDQuYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fbmV0YnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX29wZW5ic2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9mcmVlYnNkNC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X25ldGJzZC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X29wZW5ic2QuYzogTG9hZGluZworCisgSVB2NiBkYXRhIGlzIGEgbm8tbm8gd2hlbiBJUHY2IG5vdCBlbmFibGVkIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk3MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMyAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYXBwcy9zbm1wdGFibGUuYzogRml4IGJ1ZyAzMTE4NjMxOiBzbm1wdGFibGUgc2VnZmF1bHRzIGlmIGluZGV4CisKKyBjb250YWlucyA6IGNoYXJhY3RlciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5OTcxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhcHBzL3NubXB0YWJsZS5jOiBGaXggYnVnIDMxMTg2MzE6IHNubXB0YWJsZSBzZWdmYXVsdHMgaWYgaW5kZXgKKworIGNvbnRhaW5zIDogY2hhcmFjdGVyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5NzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjMgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFwcHMvc25tcHRhYmxlLmM6IEZpeCBidWcgMzExODYzMTogc25tcHRhYmxlIHNlZ2ZhdWx0cyBpZiBpbmRleAorCisgY29udGFpbnMgOiBjaGFyYWN0ZXIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AxOTk3MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMyAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYXBwcy9zbm1wdGFibGUuYzogRml4IGJ1ZyAzMTE4NjMxOiBzbm1wdGFibGUgc2VnZmF1bHRzIGlmIGluZGV4CisKKyBjb250YWlucyA6IGNoYXJhY3RlciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTcxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhcHBzL3NubXB0YWJsZS5jOiBGaXggYnVnIDMxMTg2MzE6IHNubXB0YWJsZSBzZWdmYXVsdHMgaWYgaW5kZXgKKworIGNvbnRhaW5zIDogY2hhcmFjdGVyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk3MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMyAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZnJlZWJzZDguaDogRnJlZUJTRCA4IHN1cHBvcnQgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9mcmVlYnNkOC5oOiBGcmVlQlNEIDggc3VwcG9ydCBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMTk5NzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjMgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2ZyZWVic2Q4Lmg6IEZyZWVCU0QgOCBzdXBwb3J0IGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMyAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZnJlZWJzZDguaDogRnJlZUJTRCA4IHN1cHBvcnQgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5NzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaDogYWRkZWQgbWlzc2luZworCisgbmV0LXNubXAtZmVhdHVyZXMuaCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5NjkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBNYWtlZmlsZS5pbiwgTWFrZWZpbGUucnVsZXMsIE1ha2VmaWxlLnRvcCwgYWdlbnQvTWFrZWZpbGUuaW4sIAorICAgICAgYWdlbnQvYWdlbnRfaGFuZGxlci5jLCBhZ2VudC9hZ2VudF9pbmRleC5jLCAKKyAgICAgIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMsIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmMsIAorICAgICAgYWdlbnQvYWdlbnRfdHJhcC5jLCBhZ2VudC9oZWxwZXJzL2FsbF9oZWxwZXJzLmMsIAorICAgICAgYWdlbnQvaGVscGVycy9iYWJ5X3N0ZXBzLmMsIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvaW5zdGFuY2UuYywgYWdlbnQvaGVscGVycy9tb2RlX2VuZF9jYWxsLmMsIAorICAgICAgYWdlbnQvaGVscGVycy9tdWx0aXBsZXhlci5jLCBhZ2VudC9oZWxwZXJzL29sZF9hcGkuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL3JlYWRfb25seS5jLCBhZ2VudC9oZWxwZXJzL3Jvd19tZXJnZS5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvc2NhbGFyLmMsIGFnZW50L2hlbHBlcnMvc2NhbGFyX2dyb3VwLmMsIAorICAgICAgYWdlbnQvaGVscGVycy9zbm1wX2dldF9zdGF0aXN0aWMuYywgYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlLmMsIAorICAgICAgYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmMsIGFnZW50L2hlbHBlcnMvdGFibGVfcm93LmMsIAorICAgICAgYWdlbnQvaGVscGVycy90YWJsZV90ZGF0YS5jLCBhZ2VudC9oZWxwZXJzL3dhdGNoZXIuYywgCisgICAgICBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5pbiwgYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmMsIGFnZW50L21pYmdyb3VwL2FnZW50L25zQ2FjaGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc0xvZ2dpbmcuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc01vZHVsZVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9jbGllbnQuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRDb25mLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJCb29sZWFuVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckNvbmYuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckRlbHRhVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFcnJvclRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvbkNvbmYuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3RDb25mLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBFeHByZXNzaW9uVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVFdmVudFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvbmYuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb3JlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9pbnRlcmZhYworICAgICAgIGUuYywgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZGF0YV9zZXQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL3NjYWxhcl9pbnQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9raW5mby5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbmxpc3QuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3BlcmZzdGF0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9zeXNjdGwuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvaHdfbWVtLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X2Rhcndpbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9ycG0uYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmMsIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMsCisgICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uYywKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJoX2ZpbGVzeXMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfY29uc3RhbnRzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUKKyAgICAgICAuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlCisgICAgICAgX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9pbnQKKyAgICAgICBlcmZhY2UuYywgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9jb21tb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2NvbW1vbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2RhdGFfCisgICAgICAgYWNjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcgorICAgICAgIGZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfZGF0CisgICAgICAgYV9hY2Nlc3MuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfaW50CisgICAgICAgZXJmYWNlLmMsIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0CisgICAgICAgYV9hY2Nlc3MuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfaW50CisgICAgICAgZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2ludGVyZmEKKyAgICAgICBjZS5jLCBhZ2VudC9taWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlX2ludGVyZmEKKyAgICAgICBjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2SW50ZXJmYWNlVGFibGUvaXB2NkludGVyZmFjZVRhYmxlX2ludGVyZmEKKyAgICAgICBjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWIKKyAgICAgICBsZV9pbnRlcmZhY2UuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXB2Ni5jLCBhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zZXRTZXJpYWxOby5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliXzVfNS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3RjcC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29udGV4dC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlLmMKKyAgICAgICAsIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aQorICAgICAgIGZ5RmlsdGVyVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpCisgICAgICAgZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGkKKyAgICAgICBmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcksKKyAgICAgICBleVRhYmxlX2ludGVyZmFjZS5jLCBhZ2VudC9taWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzXzVfNS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmMsIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzbWlicy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXQuYywgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2NvbW1vbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9zb2xhcmlzMi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9pbnRlcmYKKyAgICAgICBhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9pbnRlcmZhY2UuCisgICAgICAgYywgYWdlbnQvbWliZ3JvdXAvdGVzdGhhbmRsZXIuYywgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQWRkclRhYmxlL3NubXBUbHN0bUFkZHJUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1DZXJ0VG9UU05UYWJsZS9zbm1wVGxzdG1DZXJ0VG9UU04KKyAgICAgICBUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1QYXJhbXNUYWJsZS9zbm1wVGxzdG1QYXJhbXNUYWJsZS4KKyAgICAgICBjLCBhZ2VudC9taWJncm91cC90c20tbWliL3NubXBUc21TdGF0cy9zbm1wVHNtU3RhdHMuYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbVNlbnNvcnMuYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm94eS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9zb2xhcmlzMi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2ludGVyZmFjZS4KKyAgICAgICBjLCBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMsCisgICAgICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmMsICBhZ2VudC9taWJncm91cC93aW5FeHRETEwuYywKKyAgICAgIGFnZW50L3NubXBfYWdlbnQuYywgYWdlbnQvc25tcF92YXJzLmMsICBhZ2VudC9zbm1wZC5jLAorICAgICAgYXBwcy9NYWtlZmlsZS5pbiwgYXBwcy9hZ2VudHh0cmFwLmMsIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbiwgYXBwcy9zbm1wbmV0c3RhdC9tYWluLmMsIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9uZXRzdGF0LmgsIGFwcHMvc25tcG5ldHN0YXQvcm91dGUuYywgCisgICAgICBhcHBzL3NubXB0ZXN0LmMsIGFwcHMvc25tcHRyYW5zbGF0ZS5jLCBhcHBzL3NubXB0cmFwZC5jLCAKKyAgICAgIGFwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmMsIGFwcHMvc25tcHRyYXBkX3NxbC5jLCBjb25maWd1cmUsIAorICAgICAgY29uZmlndXJlLmFjLCBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19hZ2VudCwgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19saWIsIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfc2VjdXJpdHlfbW9kdWxlcywgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc190cmFuc3BvcnRzLAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3BlcmxfcHl0aG9uLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9saWJzbm1wLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcGtzbS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgcGVybC9PSUQvT0lELnhzLCAKKyAgICAgIHBlcmwvU05NUC9TTk1QLnhzLCBwZXJsL2FnZW50L2FnZW50LnhzLCBzbm1wbGliL01ha2VmaWxlLmluLCAKKyAgICAgIHNubXBsaWIvY2FsbGJhY2suYywgc25tcGxpYi9jZXJ0X3V0aWwuYywgc25tcGxpYi9jaGVja192YXJiaW5kLmMsIAorICAgICAgc25tcGxpYi9jb250YWluZXIuYywgc25tcGxpYi9jb250YWluZXJfaXRlcmF0b3IuYywgCisgICAgICBzbm1wbGliL2NvbnRhaW5lcl9saXN0X3NzbGwuYywgc25tcGxpYi9jb250YWluZXJfbnVsbC5jLCAKKyAgICAgIHNubXBsaWIvZGF0YV9saXN0LmMsIHNubXBsaWIvZGVmYXVsdF9zdG9yZS5jLCBzbm1wbGliL2Rpcl91dGlscy5jLAorICAgICAgIHNubXBsaWIvZmRfZXZlbnRfbWFuYWdlci5jLCBzbm1wbGliL2ZpbGVfdXRpbHMuYywKKyAgICAgIHNubXBsaWIvaW50NjQuYywgIHNubXBsaWIva2V5dG9vbHMuYywgc25tcGxpYi9sY2RfdGltZS5jLAorICAgICAgc25tcGxpYi9taWIuYywgIHNubXBsaWIvb2lkX3N0YXNoLmMsIHNubXBsaWIvcGFyc2UuYywKKyAgICAgIHNubXBsaWIvcmVhZF9jb25maWcuYywgIHNubXBsaWIvc2NhcGkuYywgc25tcGxpYi9zbm1wLXRjLmMsCisgICAgICBzbm1wbGliL3NubXBfYXBpLmMsICBzbm1wbGliL3NubXBfY2xpZW50LmMsIHNubXBsaWIvc25tcF9lbnVtLmMsCisgICAgICBzbm1wbGliL3NubXBfbG9nZ2luZy5jLCAgc25tcGxpYi9zbm1wX29wZW5zc2wuYywKKyAgICAgIHNubXBsaWIvc25tcF9wYXJzZV9hcmdzLmMsICBzbm1wbGliL3NubXBfc2VjbW9kLmMsCisgICAgICBzbm1wbGliL3NubXBfdHJhbnNwb3J0LmMsIHNubXBsaWIvc25tcGtzbS5jLCAgc25tcGxpYi9zbm1wdHNtLmMsCisgICAgICBzbm1wbGliL3NubXB1c20uYywgc25tcGxpYi9zbm1wdjMuYywgIHNubXBsaWIvc3lzdGVtLmMsCisgICAgICBzbm1wbGliL3RleHRfdXRpbHMuYywgc25tcGxpYi90b29scy5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wU1NIRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVuaXhEb21haW4uYywgc25tcGxpYi91Y2RfY29tcGF0LmMsIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9TdjNjb25maWcsIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9TdjN1c21jb25maWdiYXNlLCAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3YzdmFjbWNvbmZpZywgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNDlzbm1wdjNpbmZvcm1fc2ltcGxlLCAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA0OXNubXB2M2luZm9ybWF1dGhfc2ltcGxlLCAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1N3RyYXBkYXV0aHRlc3QyX3NpbXBsZSwgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNTd0cmFwZGF1dGh0ZXN0M19zaW1wbGUsIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU3dHJhcGRhdXRodGVzdF9zaW1wbGUsIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDYwdHJhcGRwZXJsX3NpbXBsZSwgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNjFhZ2VudHBlcmxfc2ltcGxlLCAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDExM2FnZW50eHRyYXBfc2ltcGxlLCAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDExNGFnZW50eGFnZW50eHRyYXBfc2ltcGxlOiBORVdTOgorCisgcGFja2FnaW5nOiBFbmFibGUgbWljcm8tYW5kLW1hY3JvLWZlYXR1cmUgbWFuYWdlbWVudCB3aXRoaW4KKyBOZXQtU05NUDsgdGhpcyBhZGRzIGEgbnVtYmVyIG9mIG5ldyBmbGFncyB0byBjb25maWd1cmUKKyAoLS1lbmFibGUtbWluaW1hbGlzdCBhbmQgLS1lbmFibGUtcmVhZC1vbmx5KS4gIFRoZXNlIGNoYW5nZXMgYXJlCisgZGVzaWduZWQgdG8gcmVtb3ZlIG11Y2ggb2YgdGhlIGlubGluZSBjb2RlIHRoYXQgaXNuJ3QgYWx3YXlzCisgbmVjZXNzYXJ5IG9yIGRlc2lyZWQuICBTY3JpcHRzIGV4aXN0IChhbmQgd2lsbCBiZSBpbXByb3ZlZCkgdG8gc3RpcAorIG91dCB1bnVzZWQgY29tcG9uZW50cyBmcm9tIHRoZSBjb2RlIGVudGlyZWx5IHRvIGVuYWJsZSBhIHNob3J0ZXIKKyByZXZpZXcgcHJvY2VzcyBmb3IgdXBncmFkaW5nIHRvIG5ldyByZWxlYXNlcy4gIFRoaXMgd29yayB3YXMgZG9uZSBieQorIFdlcyBIYXJkYWtlciBhbmQgTWljaGFlbCBCYWVyIGZyb20gU1BBUlRBLCBJbmMuIGJ1dCBpcyBiZWluZyBjaGVja2VkCisgaW4gYXMgYSBsYXJnZSBwYXRjaCBzaW5jZSBjb252ZXJ0aW5nIHRoZSBtaWNybyBwYXRjaGVzIGZyb20gZ2l0IHRvCisgc3ZuIHR1cmVuZCBvdXQgdG8gYmUgaW1wb3NzaWJsZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5NjggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIEZBUTogdXNlIHRoZSB3aWtpIFVSTCBpbnN0ZWFkIG9mIHRoZSB0dXRvcmlhbC01IFVSTCBmb3IgdGhlCisKKyBzbm1wdHJhcCB0dXRvcmlhbCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5NjcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjIgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYzogUmV2ZXJ0IGEgYm9ndXMgY2hhbmdlIHRoYXQgY3JlcHQKKworIGludG8gdGhlIGNvZGUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDE5OTY2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIyICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBBR0VOVC50eHQsIENIQU5HRVMsIENPUFlJTkcsIENoYW5nZUxvZywgQ29kaW5nU3R5bGUsIAorICAgICAgRVhBTVBMRS5jb25mLmRlZiwgRkFRLCBJTlNUQUxMLCBNYWtlZmlsZS5hbSwgTWFrZWZpbGUuaW4sIAorICAgICAgTWFrZWZpbGUucnVsZXMsIE1ha2VmaWxlLnRvcCwgTkVXUywgUE9SVElORywgUkVBRE1FLCAKKyAgICAgIFJFQURNRS5QYW5hc29uaWNfQU0zWC50eHQsIFJFQURNRS5hZ2VudC1taWJzLCBSRUFETUUuYWdlbnR4LCAKKyAgICAgIFJFQURNRS5haXgsIFJFQURNRS5ocHV4MTEsIFJFQURNRS5pcml4LCBSRUFETUUua3JiNSwgUkVBRE1FLm9zWCwgCisgICAgICBSRUFETUUuc25tcHYzLCBSRUFETUUuc29sYXJpcywgUkVBRE1FLnNxbCwgUkVBRE1FLnRocmVhZCwgCisgICAgICBSRUFETUUudHJ1NjQsIFJFQURNRS53aW4zMiwgVE9ETywgYWNjb25maWcuaCwgYWNsb2NhbC5tNCwgCisgICAgICBhZ2VudC9NYWtlZmlsZS5kZXBlbmQsIGFnZW50L01ha2VmaWxlLmluLCBhZ2VudC9hZ2VudF9oYW5kbGVyLmMsIAorICAgICAgYWdlbnQvYWdlbnRfaW5kZXguYywgYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYywgCisgICAgICBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jLCBhZ2VudC9hZ2VudF9zeXNPUlRhYmxlLmMsIAorICAgICAgYWdlbnQvYWdlbnRfdHJhcC5jLCBhZ2VudC9hdXRvX25saXN0LmMsIGFnZW50L2F1dG9ubGlzdC5oLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmluLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvYWxsX2hlbHBlcnMuYywgYWdlbnQvaGVscGVycy9iYWJ5X3N0ZXBzLmMsIAorICAgICAgYWdlbnQvaGVscGVycy9idWxrX3RvX25leHQuYywgYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmMsIAorICAgICAgYWdlbnQvaGVscGVycy9kZWJ1Z19oYW5kbGVyLmMsIGFnZW50L2hlbHBlcnMvaW5zdGFuY2UuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL21vZGVfZW5kX2NhbGwuYywgYWdlbnQvaGVscGVycy9tdWx0aXBsZXhlci5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvbnVsbC5jLCBhZ2VudC9oZWxwZXJzL29sZF9hcGkuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL3JlYWRfb25seS5jLCBhZ2VudC9oZWxwZXJzL3Jvd19tZXJnZS5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvc2NhbGFyLmMsIGFnZW50L2hlbHBlcnMvc2NhbGFyX2dyb3VwLmMsIAorICAgICAgYWdlbnQvaGVscGVycy9zZXJpYWxpemUuYywgYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlLmMsIAorICAgICAgYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2dlbmVyaWMuYywgYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfcm93LmMsIGFnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL3dhdGNoZXIuYywgYWdlbnQva2VybmVsLmMsIGFnZW50L2tlcm5lbC5oLCAKKyAgICAgIGFnZW50L20ybS5oLCBhZ2VudC9taWJfbW9kdWxlcy5jLCBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuaW4sIGFnZW50L21pYmdyb3VwL1JFQURNRSwgCisgICAgICBhZ2VudC9taWJncm91cC9SRUFETUUuc211eCwgYWdlbnQvbWliZ3JvdXAvUm1vbi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL1Jtb24vUkVBRE1FLCBhZ2VudC9taWJncm91cC9SbW9uL2FndXRpbC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL1Jtb24vYWd1dGlsLmgsIGFnZW50L21pYmdyb3VwL1Jtb24vYWd1dGlsX2FwaS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL1Jtb24vYWxhcm0uYywgYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL1Jtb24vYWxhcm1UYWJsZS5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmgsICBhZ2VudC9taWJncm91cC9SbW9uL2V2ZW50LmMsCisgICAgICBhZ2VudC9taWJncm91cC9SbW9uL2V2ZW50LmgsICBhZ2VudC9taWJncm91cC9SbW9uL2hpc3RvcnkuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL1Jtb24vaGlzdG9yeS5oLCAgYWdlbnQvbWliZ3JvdXAvUm1vbi9yb3dfYXBpLmgsCisgICAgICBhZ2VudC9taWJncm91cC9SbW9uL3Jvd3MuYywgIGFnZW50L21pYmdyb3VwL1Jtb24vcm93cy5oLAorICAgICAgYWdlbnQvbWliZ3JvdXAvUm1vbi9zdGF0aXN0aWNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvUm1vbi9zdGF0aXN0aWNzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvUm1vbi90ZXN0X2FsYXJtLnNoLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL1Jtb24vdGVzdF9oaXN0LnNoLCBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuaCwgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNDYWNoZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zQ2FjaGUuaCwgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNEZWJ1Zy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zRGVidWcuaCwgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNMb2dnaW5nLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNMb2dnaW5nLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNNb2R1bGVUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zTW9kdWxlVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnRfbWlicy5oLCBhZ2VudC9taWJncm91cC9hZ2VudHguaCwgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9hZ2VudHhfY29uZmlnLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2NsaWVudC5jLCBhZ2VudC9taWJncm91cC9hZ2VudHgvY2xpZW50LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jLCBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uaCwgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGVmYXVsdF9tb2R1bGVzLmgsIGFnZW50L21pYmdyb3VwL2Rpc21hbi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC1taWIuaCwgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Q29uZi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudENvbmYuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0cy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNDb25mLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNDb25mLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlU2NhbGFycy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVTY2FsYXJzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJCb29sZWFuVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckNvbmYuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckNvbmYuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckRlbHRhVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckRlbHRhVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFcnJvclRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXJyb3JUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvbkNvbmYuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uQ29uZi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb25UYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb25UYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdENvbmYuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3RDb25mLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3RUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cFNjYWxhcnMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBTY2FsYXJzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwVmFsdWUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBWYWx1ZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cFZhbHVlVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBWYWx1ZVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwX2VudW0uaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi1taWIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cEVycm9yVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBFcnJvclRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwRXhwcmVzc2lvblRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwRXhwcmVzc2lvblRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwT2JqZWN0VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBPYmplY3RUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cFZhbHVlVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBWYWx1ZVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVFdmVudFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZUV2ZW50VGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZU9iamVjdHNUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAtbWliLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cFJlc3VsdHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBSZXN1bHRzVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vb2xkLWV2ZW50LW1pYi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nLW1pYi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdQcm9iZUhpc3RvcnlUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdQcm9iZUhpc3RvcnlUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdSZXN1bHRzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUmVzdWx0c1RhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29uZi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvbmYuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb3JlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS1taWIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlSG9wc1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUhvcHNUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVQcm9iZUhpc3RvcnlUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVQcm9iZUhpc3RvcnlUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVSZXN1bHRzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZGF0YV9hY2Nlc3MvZG90M3N0YXRzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kYXRhX2FjY2Vzcy9kb3Qzc3RhdHNfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfYWNjCisgICAgICAgZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX2FjYworICAgICAgIGVzcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9nZXQKKyAgICAgICAuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfZ2V0CisgICAgICAgLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX3NldAorICAgICAgIC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9zZXQKKyAgICAgICAuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2VudW1zLmgsCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfaW50ZXJmYWMKKyAgICAgICBlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9pbnRlcmZhYworICAgICAgIGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX29pZHMuaCwKKyAgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2lvY3RsX2ltcF9jb21tb24uaCwgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy5oLCBhZ2VudC9taWJncm91cC9leGFtcGxlcy9NYWtlZmlsZS5kbG1vZCwKKyAgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9kYXRhX3NldC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RhdGFfc2V0LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9leGFtcGxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZXhhbXBsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MuYywgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwuYywgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NvbHVtbnMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9lbnVtcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL3NjYWxhcl9pbnQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9zY2FsYXJfaW50LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMuY21kcywgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy91Y2REZW1vUHVibGljLmNvbmYsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL3dhdGNoZWQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy93YXRjaGVkLmgsIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9rZXJuZGF0YS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfa2VybmRhdGEuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2tpbmZvLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9raW5mby5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfa3N0YXQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2tzdGF0LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbGludXguaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X21hY2guYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X21hY2guaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X25saXN0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9ubGlzdC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbnVsbC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbnVsbC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfcGNwLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9wY3AuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3BlcmZzdGF0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9wZXJmc3RhdC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfcHN0YXQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3BzdGF0LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9zeXNjdGwuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2N0bC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzaW5mby5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzaW5mby5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfZ2V0ZnNzdGF0cy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRjdGwuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50ZW50LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9od19mc3lzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9od19mc3lzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9tbnR0eXBlcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvbW91bnRzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L2h3X21lbS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9od19tZW0uaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2FpeC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9tZW1vcnlfZGFyd2luLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9keW5peC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9tZW1vcnlfZnJlZWJzZC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9tZW1vcnlfaHB1eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9tZW1vcnlfaXJpeC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9tZW1vcnlfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2xpbnV4LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9uZXRic2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X251bGwuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X3NvbGFyaXMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X3dpbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2R1bW15X3NlbnNvcnMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2R1bW15X3NlbnNvcnMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2h3X3NlbnNvcnMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2h3X3NlbnNvcnMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2tzdGF0X3NlbnNvcnMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2tzdGF0X3NlbnNvcnMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2xtc2Vuc29yc192Mi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvbG1zZW5zb3JzX3YyLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2xtc2Vuc29yc192My5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvcGljbGRfc2Vuc29ycy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvcGljbGRfc2Vuc29ycy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmMsIGFnZW50L21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC5oLCBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfZGFyd2luLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfbnVsbC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9ycG0uYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fY3lnd2luLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9kYXJ3aW4uYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2tpbmZvLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9rdm1fcHJvYy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fbmxpc3QuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX251bGwuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19wc2luZm8uYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19zdGF0dXMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2NpbmZvLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcnBzaW5mby5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHN0YXQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuUGVyZlRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuUGVyZlRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5UYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZGV2aWNlLmMsIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZGV2aWNlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9kaXNrLmMsIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZGlzay5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9uZXR3b3JrLmMsCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX25ldHdvcmsuaCwgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfb3RoZXIuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfb3RoZXIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3BhcnRpdGlvbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfcGFydGl0aW9uLmgsCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3ByaW50LmMsICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3ByaW50LmgsCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3Byb2MuYywgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfcHJvYy5oLAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmgsIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMsCisgICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuaCwgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uaCwgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N5c3RlbS5oLAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocmhfZmlsZXN5cy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJoX2ZpbGVzeXMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyaF9zdG9yYWdlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocmhfc3RvcmFnZS5oLCBhZ2VudC9taWJncm91cC9ob3N0X3Jlcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9pb2N0bC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfaW9jdGwuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9vcGVuYnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zb2xhcmlzMi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc3lzY3RsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zeXNjdGwuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9jb25zdGFudHMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGVmcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9pbnRlcmZhY2UuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfY29uc3RhbnRzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2RhdGFfYWNjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2RhdGFfYWNjZXNzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfaW9jdGwuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9pb2N0bC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfbGludXguaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlCisgICAgICAgLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZQorICAgICAgIC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUKKyAgICAgICBfY29uc3RhbnRzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZQorICAgICAgIF9kYXRhX2FjY2Vzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUKKyAgICAgICBfZGF0YV9hY2Nlc3MuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlCisgICAgICAgX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUKKyAgICAgICBfaW50ZXJmYWNlLmgsIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGUuYywKKyAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlLmgsCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9jb24KKyAgICAgICBzdGFudHMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfZGF0CisgICAgICAgYV9hY2Nlc3MuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfZGF0CisgICAgICAgYV9hY2Nlc3MuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfaW50CisgICAgICAgZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludAorICAgICAgIGVyZmFjZS5oLCBhZ2VudC9taWJncm91cC9pcC1taWIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9jb21tb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlcl9jb21tb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlcl9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2NvbW1vbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX3NvbGFyaXMyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwdjZzY29wZXpvbmUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXB2NnNjb3Blem9uZV9jb21tb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXB2NnNjb3Blem9uZV9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zY2FsYXJzX2NvbW1vbi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zY2FsYXJzX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2NvbW1vbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19zb2xhcmlzMi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2NvbnN0CisgICAgICAgYW50cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfZGF0YV8KKyAgICAgICBhY2Nlc3MuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2RhdGFfCisgICAgICAgYWNjZXNzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcgorICAgICAgIGZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2ludGVyCisgICAgICAgZmFjZS5oLCBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuYywKKyAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlLmgsCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9jb24KKyAgICAgICBzdGFudHMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfZGF0CisgICAgICAgYV9hY2Nlc3MuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfZGF0CisgICAgICAgYV9hY2Nlc3MuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfaW50CisgICAgICAgZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2ludAorICAgICAgIGVyZmFjZS5oLCBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfY29uc3RhbnRzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5oLAorICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlLmMsCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZS5oLAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0CisgICAgICAgYV9hY2Nlc3MuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0CisgICAgICAgYV9hY2Nlc3MuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0CisgICAgICAgYV9nZXQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0CisgICAgICAgYV9nZXQuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZW51CisgICAgICAgbXMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfaW50CisgICAgICAgZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2ludAorICAgICAgIGVyZmFjZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9vaWQKKyAgICAgICBzLmgsIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaCwKKyAgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9nZXQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9nZXQuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZW51bXMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9vaWRzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9jb25zdGFuCisgICAgICAgdHMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9kYXRhX2FjCisgICAgICAgY2Vzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2RhdGFfYWMKKyAgICAgICBjZXNzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfaW50ZXJmYQorICAgICAgIGNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfaW50ZXJmYQorICAgICAgIGNlLmgsIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcF9zY2FsYXJzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwX3NjYWxhcnMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlX2NvbnN0YW4KKyAgICAgICB0cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlX2RhdGFfYWMKKyAgICAgICBjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGVfZGF0YV9hYworICAgICAgIGNlc3MuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9pbnRlcmZhCisgICAgICAgY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9pbnRlcmZhCisgICAgICAgY2UuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9zdWJhZ2VuCisgICAgICAgdC5jLCBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2SW50ZXJmYWNlVGFibGUvaXB2NkludGVyZmFjZVRhYmxlX2NvbnN0YW4KKyAgICAgICB0cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2SW50ZXJmYWNlVGFibGUvaXB2NkludGVyZmFjZVRhYmxlX2RhdGFfYWMKKyAgICAgICBjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGVfZGF0YV9hYworICAgICAgIGNlc3MuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZV9pbnRlcmZhCisgICAgICAgY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZV9pbnRlcmZhCisgICAgICAgY2UuaCwgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYgorICAgICAgIGxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYgorICAgICAgIGxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYgorICAgICAgIGxlX2RhdGFfYWNjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYgorICAgICAgIGxlX2RhdGFfYWNjZXNzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYgorICAgICAgIGxlX2VudW1zLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYgorICAgICAgIGxlX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWIKKyAgICAgICBsZV9pbnRlcmZhY2UuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFiCisgICAgICAgbGVfb2lkcy5oLCBhZ2VudC9taWJncm91cC9pcGZ3Y2hhaW5zL1JFQURNRSwgCisgICAgICBhZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmMsIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS5oLCBhZ2VudC9taWJncm91cC9taWJJSS9hdC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2F0LmgsIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmgsIGFnZW50L21pYmdyb3VwL21pYklJL2lmVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5oLCBhZ2VudC9taWJncm91cC9taWJJSS9pcC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmgsIGFnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwQ2lkclJvdXRlVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jb2x1bW5zLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBDaWRyUm91dGVUYWJsZV9lbnVtcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXB2Ni5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9uZXRic2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbmV0YnNkLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvbWliSUlfY29tbW9uLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvbXRhX3NlbmRtYWlsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvbXRhX3NlbmRtYWlsLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvcm91dGVfaGVhZGVycy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3JvdXRlX3dyaXRlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvcm91dGVfd3JpdGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zZXRTZXJpYWxOby5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3NldFNlcmlhbE5vLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmgsIGFnZW50L21pYmdyb3VwL21pYklJL3RjcC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3RjcC5oLCBhZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmgsIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5oLCBhZ2VudC9taWJncm91cC9taWJJSS91ZHBUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3VkcFRhYmxlLmgsIGFnZW50L21pYmdyb3VwL21pYklJL3VwZGF0ZXMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS91cGRhdGVzLmgsIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29udGV4dC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29udGV4dC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmMsCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuaCwgIGFnZW50L21pYmdyb3VwL21pYmRlZnMuaCwKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYmluY2wuaCwgIGFnZW50L21pYmdyb3VwL21pc2MvaXBmd2FjYy5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWlzYy9pcGZ3YWNjLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZGF0YV9hY2Nlc3MvZXRoZXJzdGF0cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHNfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MKKyAgICAgICAuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfYWNjZXNzCisgICAgICAgLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2dldC5jLAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfZ2V0LmgsCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9zZXQuYywKKyAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX3NldC5oLAorICAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZW51bXMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZS5jCisgICAgICAgLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlLmgKKyAgICAgICAsIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfb2lkcy5oLAorICAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9pb2N0bF9pbXBfY29tbW9uLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFycy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5jLCBhZ2VudC9taWJncm91cC9zbXV4LmgsCisgICAgICAgYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmMsIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NtdXgvc25tcF9iZ3AuYywgYWdlbnQvbWliZ3JvdXAvc211eC9zbm1wX2JncC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NtdXgvc25tcF9vc3BmLmMsIGFnZW50L21pYmdyb3VwL3NtdXgvc25tcF9vc3BmLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc211eC9zbm1wX3JpcDIuYywgYWdlbnQvbWliZ3JvdXAvc211eC9zbm1wX3JpcDIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zbXV4X2dhdGVkLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGkKKyAgICAgICBmeUZpbHRlclRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aQorICAgICAgIGZ5RmlsdGVyVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpCisgICAgICAgZnlGaWx0ZXJUYWJsZV9jb25zdGFudHMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpCisgICAgICAgZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGkKKyAgICAgICBmeUZpbHRlclRhYmxlX2RhdGFfYWNjZXNzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aQorICAgICAgIGZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aQorICAgICAgIGZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFBhcmFtZXRlcnMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFBhcmFtZXRlcnMvdXNtREhQYXJhbWV0CisgICAgICAgZXJzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhQYXJhbWV0ZXJzL3VzbURIUGFyYW1ldAorICAgICAgIGVycy5oLAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLCisgICAgICAgZXlUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcksKKyAgICAgICBleVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VySworICAgICAgIGV5VGFibGVfZGF0YV9hY2Nlc3MuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLCisgICAgICAgZXlUYWJsZV9kYXRhX2FjY2Vzcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcksKKyAgICAgICBleVRhYmxlX2RhdGFfZ2V0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VySworICAgICAgIGV5VGFibGVfZGF0YV9nZXQuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLCisgICAgICAgZXlUYWJsZV9kYXRhX3NldC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcksKKyAgICAgICBleVRhYmxlX2RhdGFfc2V0LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VySworICAgICAgIGV5VGFibGVfZG94eWdlbi5jb25mLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcksKKyAgICAgICBleVRhYmxlX2VudW1zLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VySworICAgICAgIGV5VGFibGVfaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VySworICAgICAgIGV5VGFibGVfaW50ZXJmYWNlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VySworICAgICAgIGV5VGFibGVfb2lkcy5oLCBhZ2VudC9taWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My9zbm1wRW5naW5lLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0cy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbUNvbmYuYywgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbUNvbmYuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHMuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0c181XzUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHNfNV81LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYywgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjNtaWJzLmgsIGFnZW50L21pYmdyb3VwL3N0cnVjdC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXQuYywgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnMuYywgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUuYywgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL01ha2VmaWxlLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9jb21tb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fcHJpdmF0ZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9zb2xhcmlzMi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ublRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfY29uc3RhCisgICAgICAgbnRzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2RhdGFfYQorICAgICAgIGNjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2RhdGFfYQorICAgICAgIGNjZXNzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2ludGVyZgorICAgICAgIGFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9pbnRlcmYKKyAgICAgICBhY2UuaCwgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2NvbnN0YW50cy4KKyAgICAgICBoLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2RhdGFfYWNjZXMKKyAgICAgICBzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfZGF0YV9hY2NlcworICAgICAgIHMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9pbnRlcmZhY2UuCisgICAgICAgYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9pbnRlcmZhY2UuCisgICAgICAgaCwgYWdlbnQvbWliZ3JvdXAvdGVzdGhhbmRsZXIuYywgYWdlbnQvbWliZ3JvdXAvdGVzdGhhbmRsZXIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90dW5uZWwuaCwgYWdlbnQvbWliZ3JvdXAvdHVubmVsL3R1bm5lbC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3R1bm5lbC90dW5uZWwuaCwgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suaCwgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmgsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmMsCisgICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9lcnJvcm1pYi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Vycm9ybWliLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXh0ZW5zaWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9maWxlLmMsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2ZpbGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9ocHV4LmMsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2hwdXguaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbVNlbnNvcnMuYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbVNlbnNvcnMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbXNlbnNvcnNNaWIuYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbXNlbnNvcnNNaWIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2FkYXZlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvZ21hdGNoLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9nbWF0Y2guaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnkuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9haXg0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2FpeDQuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2R5bml4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2R5bml4LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2hwdXguYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfaHB1eC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X25ldGJzZDEuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIuYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzLmMsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm9jLmMsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm94eS5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm94eS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2FpeDQuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYnNkaTQuYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYnNkaTQuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2R5bml4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2R5bml4LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2hwdXguYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfaHB1eC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X25ldGJzZDEuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Rfc25tcC5oLCBhZ2VudC9taWJncm91cC91ZHAtbWliLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnQuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9jb21tb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X3ByaXZhdGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9zb2xhcmlzMi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9jb25zdGFudHMuCisgICAgICAgaCwgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9kYXRhX2FjY2VzCisgICAgICAgcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2RhdGFfYWNjZXMKKyAgICAgICBzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfaW50ZXJmYWNlLgorICAgICAgIGMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfaW50ZXJmYWNlLgorICAgICAgIGgsIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYywgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMuaCwgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2V4ZWN1dGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvZXhlY3V0ZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9pcXVlcnkuYywgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL292ZXJyaWRlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL292ZXJyaWRlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC92ZXJzaW9udGFnLCBhZ2VudC9taWJncm91cC93aW5FeHRETEwuYywgCisgICAgICBhZ2VudC9taWJncm91cC93aW5FeHRETEwuaCwgYWdlbnQvb2JqZWN0X21vbml0b3IuYywgCisgICAgICBhZ2VudC9zbm1wX2FnZW50LmMsIGFnZW50L3NubXBfcGVybC5jLCBhZ2VudC9zbm1wX3BlcmwuaCwgCisgICAgICBhZ2VudC9zbm1wX3BlcmwucGwsIGFnZW50L3NubXBfdmFycy5jLCBhZ2VudC9zbm1wZC5jLCAKKyAgICAgIGFnZW50L3NubXBkLmgsIGFwcHMvTWFrZWZpbGUuZGVwZW5kLCBhcHBzL01ha2VmaWxlLmluLCAKKyAgICAgIGFwcHMvZW5jb2RlX2tleWNoYW5nZS5jLCBhcHBzL3NubXBfcGVybF90cmFwZC5wbCwgCisgICAgICBhcHBzL3NubXBidWxrZ2V0LmMsIGFwcHMvc25tcGJ1bGt3YWxrLmMsIGFwcHMvc25tcGRlbHRhLmMsIAorICAgICAgYXBwcy9zbm1wZGYuYywgYXBwcy9zbm1wZ2V0LmMsIGFwcHMvc25tcGdldG5leHQuYywgCisgICAgICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbiwgCisgICAgICBhcHBzL3NubXBuZXRzdGF0L2Zmcy5jLCBhcHBzL3NubXBuZXRzdGF0L2lmLmMsIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9pbmV0LmMsIGFwcHMvc25tcG5ldHN0YXQvaW5ldDYuYywgCisgICAgICBhcHBzL3NubXBuZXRzdGF0L21haW4uYywgYXBwcy9zbm1wbmV0c3RhdC9tYWluLmgsIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9uZXRzdGF0LmgsIGFwcHMvc25tcG5ldHN0YXQvcm91dGUuYywgCisgICAgICBhcHBzL3NubXBuZXRzdGF0L3dpbnN0dWIuYywgYXBwcy9zbm1wbmV0c3RhdC93aW5zdHViLmgsIAorICAgICAgYXBwcy9zbm1wc2V0LmMsIGFwcHMvc25tcHN0YXR1cy5jLCBhcHBzL3NubXB0YWJsZS5jLCAKKyAgICAgIGFwcHMvc25tcHRlc3QuYywgYXBwcy9zbm1wdHJhbnNsYXRlLmMsIGFwcHMvc25tcHRyYXAuYywgCisgICAgICBhcHBzL3NubXB0cmFwZC5jLCBhcHBzL3NubXB0cmFwZF9hdXRoLmMsIGFwcHMvc25tcHRyYXBkX2F1dGguaCwgCisgICAgICBhcHBzL3NubXB0cmFwZF9kcy5oLCBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jLCAKKyAgICAgIGFwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmgsIGFwcHMvc25tcHRyYXBkX2xvZy5jLCAKKyAgICAgIGFwcHMvc25tcHRyYXBkX2xvZy5oLCBhcHBzL3NubXB0cmFwZF9zcWwuYywgYXBwcy9zbm1wdXNtLmMsIAorICAgICAgYXBwcy9zbm1wdmFjbS5jLCBhcHBzL3NubXB3YWxrLmMsIGFwcHMvc3NodG9zbm1wLmMsIGNvbmZpZy5ndWVzcywgCisgICAgICBjb25maWcuc3ViLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19hZ2VudCwgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfbGliLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnMsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMSwgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMSwgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MyLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMywgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2M0LCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19wcm9ncywgY29uZmlndXJlLmQvY29uZmlnX29zX3N0cnVjdF9tZW1iZXJzLAorICAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X2lwdjZfdHlwZXMsIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfbWFudWFsLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3BhdGhzLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3BlcmxfcHl0aG9uLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3R5cGVzLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlLCBkaXN0L01ha2VmaWxlLCAKKyAgICAgIGRpc3QvUkVBRE1FLmJ1aWxkLXNjcmlwdHMsIGRpc3QvUkVMRUFTRS1JTlNUUlVDVElPTlMsIAorICAgICAgZGlzdC9hdXRvY29uZi12ZXJzaW9uLCBkaXN0L2NoYW5nZWxvZ2ZpeCwgZGlzdC9jaGVjay1hcGktY2hhbmdlLCAKKyAgICAgIGRpc3QvY3Zzc2hvdywgZGlzdC9jdnN1cCwgZGlzdC9leHRyYWN0bmV3cywgZGlzdC9maW5kLXJlcXVpcmVzLCAKKyAgICAgIGRpc3QvbWFrZXJlbGVhc2UueG1sLCBkaXN0L25ldC1zbm1wLXNvbGFyaXMtYnVpbGQvREVWRU5WLCAKKyAgICAgIGRpc3QvbmV0LXNubXAtc29sYXJpcy1idWlsZC9SRUFETUUsIAorICAgICAgZGlzdC9uZXQtc25tcC1zb2xhcmlzLWJ1aWxkL2J1aWxkcGFja2FnZS1zb2xhcmlzLCAKKyAgICAgIGRpc3QvbmV0LXNubXAtc29sYXJpcy1idWlsZC9lbGZkZXBlbmQuc2gsIGRpc3QvbmV0LXNubXAuc3BlYywgCisgICAgICBkaXN0L25zYi1jb25maWcsIGRpc3QvbnNiLWZ1bmN0aW9ucywgZGlzdC9uc2ItbmlnaHRseSwgCisgICAgICBkaXN0L25zYi1wYWNrYWdlLCBkaXN0L25zYi1wbGF0Zm9ybSwgZGlzdC9wYXRtZSwgCisgICAgICBkaXN0L3NjaGVtYS1zbm1wdHJhcGQuc3FsLCBkaXN0L3NubXBkLWluaXQuZCwgCisgICAgICBkaXN0L3NubXB0cmFwZC1pbml0LmQsIGRpc3Qvc3ZudXAsIGRvYy9yZmMvYWdlbnR4L3JmYzI3NDEudHh0LCAKKyAgICAgIGRvYy9yZmMvbWlzYy9yZmMzNTEyLnR4dCwgZG9jL3JmYy9taXNjL3JmYzM1ODQudHh0LCAKKyAgICAgIGRvYy9yZmMvc21pVjIvcmZjMjU3OC50eHQsIGRvYy9yZmMvc21pVjIvcmZjMjU3OS5lcnJhdGEsIAorICAgICAgZG9jL3JmYy9zbWlWMi9yZmMyNTc5LnR4dCwgZG9jL3JmYy9zbWlWMi9yZmMyNTgwLnR4dCwgCisgICAgICBkb2MvcmZjL3NubXBWMS9yZmMxMTU1LnR4dCwgZG9jL3JmYy9zbm1wVjEvcmZjMTE1Ny50eHQsIAorICAgICAgZG9jL3JmYy9zbm1wVjEvcmZjMTIxMi50eHQsIGRvYy9yZmMvc25tcFYxL3JmYzEyMTMudHh0LCAKKyAgICAgIGRvYy9yZmMvc25tcFYyL3JmYzE5MDEudHh0LCBkb2MvcmZjL3NubXBWMi9yZmMxOTAyLnR4dCwgCisgICAgICBkb2MvcmZjL3NubXBWMi9yZmMxOTAzLnR4dCwgZG9jL3JmYy9zbm1wVjIvcmZjMTkwNC50eHQsIAorICAgICAgZG9jL3JmYy9zbm1wVjIvcmZjMTkwNS50eHQsIGRvYy9yZmMvc25tcFYyL3JmYzE5MDYudHh0LCAKKyAgICAgIGRvYy9yZmMvc25tcFYyL3JmYzE5MDcudHh0LCBkb2MvcmZjL3NubXBWMi9yZmMxOTA4LnR4dCwgCisgICAgICBkb2MvcmZjL3NubXBWMi9yZmMyMDg5LnR4dCwgZG9jL3JmYy9zbm1wVjMvcmZjMzQxMC5lcnJhdGEsIAorICAgICAgZG9jL3JmYy9zbm1wVjMvcmZjMzQxMC50eHQsIGRvYy9yZmMvc25tcFYzL3JmYzM0MTEudHh0LCAKKyAgICAgIGRvYy9yZmMvc25tcFYzL3JmYzM0MTIudHh0LCBkb2MvcmZjL3NubXBWMy9yZmMzNDEzLmVycmF0YSwgCisgICAgICBkb2MvcmZjL3NubXBWMy9yZmMzNDEzLnR4dCwgZG9jL3JmYy9zbm1wVjMvcmZjMzQxNC5lcnJhdGEsIAorICAgICAgZG9jL3JmYy9zbm1wVjMvcmZjMzQxNC50eHQsIGRvYy9yZmMvc25tcFYzL3JmYzM0MTUuZXJyYXRhLCAKKyAgICAgIGRvYy9yZmMvc25tcFYzL3JmYzM0MTUudHh0LCBkb2MvcmZjL3NubXBWMy9yZmMzNDE2LnR4dCwgCisgICAgICBkb2MvcmZjL3NubXBWMy9yZmMzNDE3LnR4dCwgZG9jL3JmYy9zbm1wVjMvcmZjMzQxOC5lcnJhdGEsIAorICAgICAgZG9jL3JmYy9zbm1wVjMvcmZjMzQxOC50eHQsIGRvdGdkYmluaXQsIGRveHlnZW4uY29uZiwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaW5kZXguaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfc3lzT1JUYWJsZS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2NwdS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvZnN5cy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvbWVtb3J5LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9zZW5zb3JzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oLCBpbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZXMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2JqZWN0X21vbml0b3IuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXRfaGVscGVyLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF90b19uZXh0LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgsIGluY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvYXJwLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwX3NjYWxhcnMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBzdGF0cy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvbmV0LXNubXAtZGF0YS1hY2Nlc3MtaW5jbHVkZXMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3JvdXRlLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9zY29wZXpvbmUuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N3aW5zdC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dydW4uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy90Y3BDb25uLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgsIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9SRUFETUUsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jbXVfY29tcGF0LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9udWxsLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2Rpcl91dGlscy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmlsZV91dGlscy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xpYnNubXAuaCwKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tZDUuaCwgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBBQUw1UFZDRG9tYWluLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBBbGlhc0RvbWFpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcERUTFNVRFBEb21haW4uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wU1NIRG9tYWluLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBTVEREb21haW4uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX29wZW5zc2wuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wa3NtLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RleHRfdXRpbHMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3dpbnBpcGUuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvd2luc2VydmljZS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgsIGluY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oLCBpbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgsIGluY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2FpeC5oLCBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9ic2QuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9ic2RpLmgsIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2JzZGkzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vYnNkaTQuaCwgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vY3lnd2luLmgsCisgICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luNy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjguaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW45LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZHJhZ29uZmx5LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZHluaXguaCwKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2ZyZWVic2QuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9mcmVlYnNkMi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2ZyZWVic2QzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZnJlZWJzZDQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9mcmVlYnNkNS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2ZyZWVic2Q2LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZnJlZWJzZDcuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgsIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2hwdXguaCwKKyAgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9pcml4LmgsCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9rZnJlZWJzZC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgsCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9taW5ndzMyLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbWluZ3czMm1zdmMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9taXBzLmgsIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL25ldGJzZC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL29wZW5ic2QuaCwgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vb3NmNS5oLAorICAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3NvbGFyaXMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zb2xhcmlzMi4zLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc29sYXJpczIuNC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3NvbGFyaXMyLjUuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zb2xhcmlzMi42LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3Vub3MuaCwgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3ZyNS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaCwgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vdWx0cml4NC5oLAorICAgICAgIGluY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCwgaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgsIGluY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvUkVBRE1FLCBpbmNsdWRlL3VjZC1zbm1wL2FnZW50X2luZGV4LmgsIAorICAgICAgaW5jbHVkZS91Y2Qtc25tcC9hZ2VudF9yZWFkX2NvbmZpZy5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvYWdlbnRfcmVnaXN0cnkuaCwgaW5jbHVkZS91Y2Qtc25tcC9hZ2VudF90cmFwLmgsIAorICAgICAgaW5jbHVkZS91Y2Qtc25tcC9hc24xLmgsIGluY2x1ZGUvdWNkLXNubXAvYXV0b19ubGlzdC5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvY2FsbGJhY2suaCwgaW5jbHVkZS91Y2Qtc25tcC9kZWZhdWx0X3N0b3JlLmgsIAorICAgICAgaW5jbHVkZS91Y2Qtc25tcC9kc19hZ2VudC5oLCBpbmNsdWRlL3VjZC1zbm1wL2hlYWRlcl9jb21wbGV4LmgsIAorICAgICAgaW5jbHVkZS91Y2Qtc25tcC9pbnQ2NC5oLCBpbmNsdWRlL3VjZC1zbm1wL2tleXRvb2xzLmgsIAorICAgICAgaW5jbHVkZS91Y2Qtc25tcC9taWIuaCwgaW5jbHVkZS91Y2Qtc25tcC9taWJfbW9kdWxlX2NvbmZpZy5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvbWliaW5jbC5oLCBpbmNsdWRlL3VjZC1zbm1wL3BhcnNlLmgsIAorICAgICAgaW5jbHVkZS91Y2Qtc25tcC9yZWFkX2NvbmZpZy5oLCBpbmNsdWRlL3VjZC1zbm1wL3NjYXBpLmgsIAorICAgICAgaW5jbHVkZS91Y2Qtc25tcC9zbm1wLXRjLmgsIGluY2x1ZGUvdWNkLXNubXAvc25tcC5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvc25tcF9hZ2VudC5oLCBpbmNsdWRlL3VjZC1zbm1wL3NubXBfYWxhcm0uaCwgCisgICAgICBpbmNsdWRlL3VjZC1zbm1wL3NubXBfYXBpLmgsIGluY2x1ZGUvdWNkLXNubXAvc25tcF9jbGllbnQuaCwgCisgICAgICBpbmNsdWRlL3VjZC1zbm1wL3NubXBfZGVidWcuaCwgaW5jbHVkZS91Y2Qtc25tcC9zbm1wX2ltcGwuaCwgCisgICAgICBpbmNsdWRlL3VjZC1zbm1wL3NubXBfbG9nZ2luZy5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvc25tcF9wYXJzZV9hcmdzLmgsIGluY2x1ZGUvdWNkLXNubXAvc25tcF92YXJzLmgsIAorICAgICAgaW5jbHVkZS91Y2Qtc25tcC9zbm1wdXNtLmgsIGluY2x1ZGUvdWNkLXNubXAvc25tcHYzLmgsIAorICAgICAgaW5jbHVkZS91Y2Qtc25tcC9zdHJ1Y3QuaCwgaW5jbHVkZS91Y2Qtc25tcC9zeXN0ZW0uaCwgCisgICAgICBpbmNsdWRlL3VjZC1zbm1wL3Rvb2xzLmgsIGluY2x1ZGUvdWNkLXNubXAvdHJhbnNmb3JtX29pZHMuaCwgCisgICAgICBpbmNsdWRlL3VjZC1zbm1wL3VjZC1zbm1wLWFnZW50LWluY2x1ZGVzLmgsIAorICAgICAgaW5jbHVkZS91Y2Qtc25tcC91Y2Qtc25tcC1jb25maWcuaCwgCisgICAgICBpbmNsdWRlL3VjZC1zbm1wL3VjZC1zbm1wLWluY2x1ZGVzLmgsIAorICAgICAgaW5jbHVkZS91Y2Qtc25tcC91dGlsX2Z1bmNzLmgsIGluY2x1ZGUvdWNkLXNubXAvdmFyX3N0cnVjdC5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvdmVyc2lvbi5oLCBpbnN0YWxsLXNoLCBsb2NhbC9GQVEySFRNTCwgCisgICAgICBsb2NhbC9NYWtlZmlsZS5pbiwgbG9jYWwvUkVBRE1FLm1pYjJjLCBsb2NhbC9WZXJzaW9uLU11bmdlLnBsLCAKKyAgICAgIGxvY2FsL2NvbnZlcnRjb2RlLCBsb2NhbC9maXhwcm9jLCBsb2NhbC9odG1sLWFkZC1oZWFkZXItZm9vdGVyLnBsLAorICAgICAgIGxvY2FsL2h0bWwtdGV4dGZpbGUtZml4LnBsLCBsb2NhbC9pcGYtbW9kLnBsLCBsb2NhbC9taWIyYywgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvZGVmYXVsdC1tZmQtdG9wLm0yYywgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvZGV0YWlscy1lbnVtcy5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2RldGFpbHMtbm9kZS5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2RldGFpbHMtdGFibGUubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLWN0eC1jb3B5Lm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1jdHgtZ2V0Lm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1jdHgtc2V0Lm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1kYXRhLWFsbG9jYXRlLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1kYXRhLWNvbnRleHQubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLWdldC1jaGFyLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1nZXQtZGVjbC1ib3QubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLWdldC1kZWNsLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1nZXQtbG9uZy5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtZ2V0LW9pZC5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtaGVhZGVyLWJvdHRvbS5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtaGVhZGVyLXRvcC5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtc291cmNlLWluY2x1ZGVzLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy10YWJsZS1jb25zdGFudHMubTJjLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLXRhYmxlLWVudW1zLm0yYywgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy10YWJsZS1pbmRleGVzLWZyb20tb2lkLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy10YWJsZS1pbmRleGVzLXNldC5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtdGFibGUtaW5kZXhlcy10by1vaWQubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLXRhYmxlLWluZGV4ZXMtdmFyYmluZC1zZXR1cC5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtdGFibGUtaW5kZXhlcy5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtdGFibGUtb2lkcy5tMmMsIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtdmFsdWUtbWFwLWZ1bmMubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLXZhbHVlLW1hcC1yZXZlcnNlLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy12YWx1ZS1tYXAubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9tMmMtaW50ZXJuYWwtd2FybmluZy5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL20yY19zZXR1cF9lbnVtLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvbTJjX3NldHVwX25vZGUubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9tMmNfc2V0dXBfdGFibGUubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9tMmNfdGFibGVfc2F2ZV9kZWZhdWx0cy5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL21mZC1hY2Nlc3MtY29udGFpbmVyLWNhY2hlZC1kZWZpbmVzLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvbWZkLWFjY2Vzcy11bnNvcnRlZC1leHRlcm5hbC1kZWZpbmVzLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvbWZkLWRhdGEtYWNjZXNzLm0yYywgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvbWZkLWRhdGEtZ2V0Lm0yYywgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvbWZkLWRhdGEtc2V0Lm0yYywgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvbWZkLWRveHlnZW4ubTJjLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9tZmQtaW50ZXJhY3RpdmUtc2V0dXAubTJjLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9tZmQtaW50ZXJmYWNlLm0yYywgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvbWZkLW1ha2VmaWxlLm0ybSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvbWZkLXBlcnNpc3RlbmNlLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvbWZkLXJlYWRtZS5tMmMsIGxvY2FsL21pYjJjLWNvbmYuZC9tZmQtdG9wLm0yYywKKyAgICAgICBsb2NhbC9taWIyYy1jb25mLmQvbm9kZS1nZXQubTJpLCBsb2NhbC9taWIyYy1jb25mLmQvbm9kZS1zZXQubTJpLAorICAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9ub2RlLXN0b3JhZ2UubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9ub2RlLXZhbGlkYXRlLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvbm9kZS12YXJiaW5kLXZhbGlkYXRlLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvcGFyZW50LWRlcGVuZGVuY2llcy5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL3BhcmVudC1zZXQubTJpLAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL3N1YmFnZW50Lm0yYywgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvc3ludGF4LUNPVU5URVI2NC1nZXQubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9zeW50YXgtRGF0ZUFuZFRpbWUtZ2V0Lm0yZCwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvc3ludGF4LURhdGVBbmRUaW1lLWdldC5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL3N5bnRheC1EYXRlQW5kVGltZS1yZWFkbWUubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9zeW50YXgtSW5ldEFkZHJlc3MtZ2V0Lm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvc3ludGF4LUluZXRBZGRyZXNzLXNldC5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL3N5bnRheC1JbmV0QWRkcmVzc1R5cGUtZ2V0Lm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvc3ludGF4LUluZXRBZGRyZXNzVHlwZS1zZXQubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9zeW50YXgtUm93U3RhdHVzLWRlcGVuZGVuY2llcy5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL3N5bnRheC1Sb3dTdGF0dXMtZ2V0Lm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvc3ludGF4LVJvd1N0YXR1cy12YXJiaW5kLXZhbGlkYXRlLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvc3ludGF4LVN0b3JhZ2VUeXBlLWRlcGVuZGVuY2llcy5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL3N5bnRheC1UZXN0QW5kSW5jci1nZXQubTJpLCBsb2NhbC9taWIyYy11cGRhdGUsCisgICAgICAgbG9jYWwvbWliMmMuYWNjZXNzX2Z1bmN0aW9ucy5jb25mLCBsb2NhbC9taWIyYy5hcnJheS11c2VyLmNvbmYsIAorICAgICAgbG9jYWwvbWliMmMuY2hlY2tfdmFsdWVzLmNvbmYsCisgICAgICBsb2NhbC9taWIyYy5jaGVja192YWx1ZXNfbG9jYWwuY29uZiwgCisgICAgICBsb2NhbC9taWIyYy5jb2x1bW5fZGVmaW5lcy5jb25mLCBsb2NhbC9taWIyYy5jb2x1bW5fZW51bXMuY29uZiwgCisgICAgICBsb2NhbC9taWIyYy5jb2x1bW5fc3RvcmFnZS5jb25mLCBsb2NhbC9taWIyYy5jb25mLCAKKyAgICAgIGxvY2FsL21pYjJjLmNvbnRhaW5lci5jb25mLCBsb2NhbC9taWIyYy5jcmVhdGUtZGF0YXNldC5jb25mLCAKKyAgICAgIGxvY2FsL21pYjJjLmVtdWxhdGlvbi5jb25mLCBsb2NhbC9taWIyYy5nZW5odG1sLmNvbmYsIAorICAgICAgbG9jYWwvbWliMmMuaW50X3dhdGNoLmNvbmYsIGxvY2FsL21pYjJjLml0ZXJhdGUuY29uZiwgCisgICAgICBsb2NhbC9taWIyYy5pdGVyYXRlX2FjY2Vzcy5jb25mLCBsb2NhbC9taWIyYy5tZmQuY29uZiwgCisgICAgICBsb2NhbC9taWIyYy5ub3RpZnkuY29uZiwgbG9jYWwvbWliMmMub2xkLWFwaS5jb25mLCAKKyAgICAgIGxvY2FsL21pYjJjLnBlcmwuY29uZiwgbG9jYWwvbWliMmMucmF3LXRhYmxlLmNvbmYsIAorICAgICAgbG9jYWwvbWliMmMucm93LmNvbmYsIGxvY2FsL21pYjJjLnNjYWxhci5jb25mLCAKKyAgICAgIGxvY2FsL21pYjJjLnRhYmxlX2RhdGEuY29uZiwgbG9jYWwvcGFzc19wZXJzaXN0dGVzdCwgCisgICAgICBsb2NhbC9wYXNzdGVzdCwgbG9jYWwvcGFzc3Rlc3QucGwsIGxvY2FsL3NubXAtdWNkLnNoLCAKKyAgICAgIGxvY2FsL3NubXBjaGVjay5kZWYsIGxvY2FsL3NubXBjb25mLCAKKyAgICAgIGxvY2FsL3NubXBjb25mLmRpci9zbm1wLWRhdGEvYXV0aG9wdHMsIAorICAgICAgbG9jYWwvc25tcGNvbmYuZGlyL3NubXAtZGF0YS9kZWJ1Z2dpbmcsIAorICAgICAgbG9jYWwvc25tcGNvbmYuZGlyL3NubXAtZGF0YS9taWJzLCAKKyAgICAgIGxvY2FsL3NubXBjb25mLmRpci9zbm1wLWRhdGEvb3V0cHV0LCAKKyAgICAgIGxvY2FsL3NubXBjb25mLmRpci9zbm1wLWRhdGEvc25tcGNvbmYtY29uZmlnLCAKKyAgICAgIGxvY2FsL3NubXBjb25mLmRpci9zbm1wZC1kYXRhL2FjbCwgCisgICAgICBsb2NhbC9zbm1wY29uZi5kaXIvc25tcGQtZGF0YS9iYXNpY19zZXR1cCwgCisgICAgICBsb2NhbC9zbm1wY29uZi5kaXIvc25tcGQtZGF0YS9leHRlbmRpbmcsIAorICAgICAgbG9jYWwvc25tcGNvbmYuZGlyL3NubXBkLWRhdGEvbW9uaXRvciwgCisgICAgICBsb2NhbC9zbm1wY29uZi5kaXIvc25tcGQtZGF0YS9vcGVyYXRpb24sIAorICAgICAgbG9jYWwvc25tcGNvbmYuZGlyL3NubXBkLWRhdGEvc25tcGNvbmYtY29uZmlnLCAKKyAgICAgIGxvY2FsL3NubXBjb25mLmRpci9zbm1wZC1kYXRhL3N5c3RlbSwgCisgICAgICBsb2NhbC9zbm1wY29uZi5kaXIvc25tcGQtZGF0YS90cmFwc2lua3MsIAorICAgICAgbG9jYWwvc25tcGNvbmYuZGlyL3NubXB0cmFwZC1kYXRhL2F1dGhlbnRpY2F0aW9uLCAKKyAgICAgIGxvY2FsL3NubXBjb25mLmRpci9zbm1wdHJhcGQtZGF0YS9mb3JtYXR0aW5nLCAKKyAgICAgIGxvY2FsL3NubXBjb25mLmRpci9zbm1wdHJhcGQtZGF0YS9sb2dnaW5nLCAKKyAgICAgIGxvY2FsL3NubXBjb25mLmRpci9zbm1wdHJhcGQtZGF0YS9ydW50aW1lLCAKKyAgICAgIGxvY2FsL3NubXBjb25mLmRpci9zbm1wdHJhcGQtZGF0YS9zbm1wY29uZi1jb25maWcsIAorICAgICAgbG9jYWwvc25tcGNvbmYuZGlyL3NubXB0cmFwZC1kYXRhL3RyYXBoYW5kbGUsIGxvY2FsL3NubXBkdW1wLnBsLCAKKyAgICAgIGxvY2FsL3RrbWliLCBsb2NhbC90cmFwdG9lbWFpbCwgbHRtYWluLnNoLCAKKyAgICAgIG00L2FjX2FkZF9zZWFyY2hfcGF0aC5tNCwgbTQvYWNfbXNnX2NhY2hlLm00LCAKKyAgICAgIG00L2FjX21zZ19tb2R1bGVfZGJnLm00LCBtNC9hY19wcm9tcHRfdXNlci5tNCwgbTQvbGlidG9vbC5tNCwgCisgICAgICBtNC9sdG9wdGlvbnMubTQsIG00L2x0c3VnYXIubTQsIG00L2x0dmVyc2lvbi5tNCwKKyAgICAgIG00L2x0fm9ic29sZXRlLm00LCAgbTQvbmV0c25tcF9hcmcubTQsIG00L25ldHNubXBfc2VhcmNoX2xpYnMubTQsCisgICAgICBtYWtlZGVwZW5kLmluLCAgbWFrZWZpbGVpbmRlcGVuZC5wbCwgbWFrZW5vc3lzZGVwZW5kLnBsLAorICAgICAgbWFrZXRhcmdldCwgIG1hbi9NYWtlZmlsZS5pbiwgbWFuL2FkZF9taWJkaXIuMywKKyAgICAgIG1hbi9hZGRfbW9kdWxlX3JlcGxhY2VtZW50LjMsICBtYW4vY29uZmlnX2FwaS4zLmRlZiwKKyAgICAgIG1hbi9kZWZhdWx0X3N0b3JlLjMuYm90LCAgbWFuL2RlZmF1bHRfc3RvcmUuMy50b3AsCisgICAgICBtYW4vZW5jb2RlX2tleWNoYW5nZS4xLmRlZiwgIG1hbi9maXhwcm9jLjEuZGVmLAorICAgICAgbWFuL2dldF9tb2R1bGVfbm9kZS4zLCBtYW4vaW5pdF9taWIuMywgIG1hbi9pbml0X21pYl9pbnRlcm5hbHMuMywKKyAgICAgIG1hbi9tYWtlX2luZGV4LnBsLCBtYW4vbWFuX3NlY3Rpb25zLnR4dCwgIG1hbi9taWIyYy11cGRhdGUuMS5kZWYsCisgICAgICBtYW4vbWliMmMuMS5kZWYsIG1hbi9taWIyYy5jb25mLjUuaW4sICBtYW4vbWliMmMuZXh0cmFjdC5wbCwKKyAgICAgIG1hbi9taWJfYXBpLjMuZGVmLCBtYW4vbmV0LXNubXAtY29uZmlnLjEuZGVmLCAKKyAgICAgIG1hbi9uZXQtc25tcC1jcmVhdGUtdjMtdXNlci4xLmRlZiwgCisgICAgICBtYW4vbmV0c25tcF9hY2Nlc3NfbXVsdGlwbGV4ZXIuMywgbWFuL25ldHNubXBfYWdlbnQuMywgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF9oYW5kbGVyLmguMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsIAorICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgCisgICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci5oLjMsIG1hbi9uZXRzbm1wX2RhdGFfbGlzdC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgCisgICAgICBtYW4vbmV0c25tcF9leGFtcGxlX3NjYWxhcl9pbnQuMywgbWFuL25ldHNubXBfaGFuZGxlci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2xlYWYuMywgbWFuL25ldHNubXBfbGlicmFyeS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsIAorICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsIAorICAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbnVsbF9jb250YWluZXIuMywgbWFuL25ldHNubXBfb2lkX3N0YXNoLjMsIAorICAgICAgbWFuL25ldHNubXBfb2xkX2FwaS4zLCBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgCisgICAgICBtYW4vbmV0c25tcF9zY2FsYXIuMywgbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMsIAorICAgICAgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsIG1hbi9uZXRzbm1wX3NldF9kYXRhLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsIAorICAgICAgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMywgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvdy4zLCBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIAorICAgICAgbWFuL25ldHNubXBfdGRhdGEuMywgbWFuL25ldHNubXBfdG9vbHMuaC4zLCBtYW4vbmV0c25tcF91dGlsLjMsIAorICAgICAgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgCisgICAgICBtYW4vbmV0c25tcF93YXRjaGVyLjMsIG1hbi9wZHVfYXBpLjMuZGVmLCBtYW4vcHJpbnRfZGVzY3JpcHRpb24uMywKKyAgICAgICBtYW4vcHJpbnRfbWliLjMsIG1hbi9wcmludF9vYmppZC4zLCBtYW4vcHJpbnRfdmFsdWUuMywgCisgICAgICBtYW4vcHJpbnRfdmFyaWFibGUuMywgbWFuL3JlYWRfYWxsX21pYnMuMywgbWFuL3JlYWRfbWliLjMsIAorICAgICAgbWFuL3JlYWRfbW9kdWxlLjMsIG1hbi9yZWFkX21vZHVsZV9ub2RlLjMsIG1hbi9yZWFkX29iamlkLjMsIAorICAgICAgbWFuL3Nlc3Npb25fYXBpLjMuZGVmLCBtYW4vc2h1dGRvd25fbWliLjMsIG1hbi9zbm1wLmNvbmYuNS5kZWYsIAorICAgICAgbWFuL3NubXBfYWdlbnRfYXBpLjMuZGVmLCBtYW4vc25tcF9hbGFybS4zLmRlZiwgCisgICAgICBtYW4vc25tcF9hcGlfZXJyc3RyaW5nLjMsIG1hbi9zbm1wX2Nsb3NlLjMsIG1hbi9zbm1wX2NvbmZpZy41LmRlZiwKKyAgICAgICBtYW4vc25tcF9lcnJvci4zLCBtYW4vc25tcF9mcmVlX3BkdS4zLCBtYW4vc25tcF9vcGVuLjMsIAorICAgICAgbWFuL3NubXBfcGVycm9yLjMsIG1hbi9zbm1wX3JlYWQuMywgbWFuL3NubXBfc2VsZWN0X2luZm8uMywgCisgICAgICBtYW4vc25tcF9zZW5kLjMsIG1hbi9zbm1wX3Nlc3NfYXBpLjMuZGVmLCAKKyAgICAgIG1hbi9zbm1wX3Nlc3NfYXN5bmNfc2VuZC4zLCBtYW4vc25tcF9zZXNzX2Nsb3NlLjMsIAorICAgICAgbWFuL3NubXBfc2Vzc19lcnJvci4zLCBtYW4vc25tcF9zZXNzX2luaXQuMywgbWFuL3NubXBfc2Vzc19vcGVuLjMsCisgICAgICAgbWFuL3NubXBfc2Vzc19wZXJyb3IuMywgbWFuL3NubXBfc2Vzc19yZWFkLjMsIAorICAgICAgbWFuL3NubXBfc2Vzc19zZWxlY3RfaW5mby4zLCBtYW4vc25tcF9zZXNzX3NlbmQuMywgCisgICAgICBtYW4vc25tcF9zZXNzX3Nlc3Npb24uMywgbWFuL3NubXBfc2Vzc190aW1lb3V0LjMsIAorICAgICAgbWFuL3NubXBfc2V0X21pYl93YXJuaW5ncy4zLCBtYW4vc25tcF9zZXRfc2F2ZV9kZXNjcmlwdGlvbnMuMywgCisgICAgICBtYW4vc25tcF90aW1lb3V0LjMsIG1hbi9zbm1wX3RyYXBfYXBpLjMuZGVmLAorICAgICAgbWFuL3NubXBidWxrZ2V0LjEuZGVmLCAgbWFuL3NubXBidWxrd2Fsay4xLmRlZiwgbWFuL3NubXBjbWQuMS5kZWYsCisgICAgICBtYW4vc25tcGNvbmYuMS5kZWYsICBtYW4vc25tcGQuOC5kZWYsIG1hbi9zbm1wZC5jb25mLjUuZGVmLAorICAgICAgbWFuL3NubXBkLmV4YW1wbGVzLjUuZGVmLCAgbWFuL3NubXBkLmludGVybmFsLjUuZGVmLAorICAgICAgbWFuL3NubXBkZWx0YS4xLmRlZiwgbWFuL3NubXBkZi4xLmRlZiwgIG1hbi9zbm1wZ2V0LjEuZGVmLAorICAgICAgbWFuL3NubXBnZXRuZXh0LjEuZGVmLCBtYW4vc25tcGluZm9ybS4xLCAgbWFuL3NubXBuZXRzdGF0LjEuZGVmLAorICAgICAgbWFuL3NubXBzZXQuMS5kZWYsIG1hbi9zbm1wc3RhdHVzLjEuZGVmLCAgbWFuL3NubXB0YWJsZS4xLmRlZiwKKyAgICAgIG1hbi9zbm1wdGVzdC4xLmRlZiwgbWFuL3NubXB0cmFuc2xhdGUuMS5kZWYsICBtYW4vc25tcHRyYXAuMS5kZWYsCisgICAgICBtYW4vc25tcHRyYXBkLjguZGVmLCBtYW4vc25tcHRyYXBkLmNvbmYuNS5kZWYsICBtYW4vc25tcHVzbS4xLmRlZiwKKyAgICAgIG1hbi9zbm1wdmFjbS4xLmRlZiwgbWFuL3NubXB3YWxrLjEuZGVmLCAgbWFuL3RrbWliLjEuZGVmLAorICAgICAgbWFuL3RyYXB0b2VtYWlsLjEuZGVmLCBtYW4vdmFyYmluZF9hcGkuMy5kZWYsIAorICAgICAgbWFuL3ZhcmlhYmxlcy41LmRlZiwgbWlicy9BR0VOVFgtTUlCLnR4dCwgCisgICAgICBtaWJzL0RJU01BTi1FVkVOVC1NSUIudHh0LCBtaWJzL0RJU01BTi1FWFBSRVNTSU9OLU1JQi50eHQsIAorICAgICAgbWlicy9ESVNNQU4tTlNMT09LVVAtTUlCLnR4dCwgbWlicy9ESVNNQU4tUElORy1NSUIudHh0LCAKKyAgICAgIG1pYnMvRElTTUFOLVNDSEVEVUxFLU1JQi50eHQsIG1pYnMvRElTTUFOLVNDUklQVC1NSUIudHh0LCAKKyAgICAgIG1pYnMvRElTTUFOLVRSQUNFUk9VVEUtTUlCLnR4dCwgbWlicy9FdGhlckxpa2UtTUlCLnR4dCwgCisgICAgICBtaWJzL0hDTlVNLVRDLnR4dCwgbWlicy9IT1NULVJFU09VUkNFUy1NSUIudHh0LCAKKyAgICAgIG1pYnMvSE9TVC1SRVNPVVJDRVMtVFlQRVMudHh0LCAKKyAgICAgIG1pYnMvSUFOQS1BRERSRVNTLUZBTUlMWS1OVU1CRVJTLU1JQi50eHQsIAorICAgICAgbWlicy9JQU5BLUxBTkdVQUdFLU1JQi50eHQsIG1pYnMvSUFOQS1SVFBST1RPLU1JQi50eHQsIAorICAgICAgbWlicy9JQU5BaWZUeXBlLU1JQi50eHQsIG1pYnMvSUYtSU5WRVJURUQtU1RBQ0stTUlCLnR4dCwgCisgICAgICBtaWJzL0lGLU1JQi50eHQsIG1pYnMvSU5FVC1BRERSRVNTLU1JQi50eHQsIAorICAgICAgbWlicy9JUC1GT1JXQVJELU1JQi50eHQsIG1pYnMvSVAtTUlCLnR4dCwgCisgICAgICBtaWJzL0lQVjYtRkxPVy1MQUJFTC1NSUIudHh0LCBtaWJzL0lQVjYtSUNNUC1NSUIudHh0LCAKKyAgICAgIG1pYnMvSVBWNi1NSUIudHh0LCBtaWJzL0lQVjYtVEMudHh0LCBtaWJzL0lQVjYtVENQLU1JQi50eHQsIAorICAgICAgbWlicy9JUFY2LVVEUC1NSUIudHh0LCBtaWJzL0xNLVNFTlNPUlMtTUlCLnR4dCwgbWlicy9NVEEtTUlCLnR4dCwgCisgICAgICBtaWJzL01ha2VmaWxlLmluLCBtaWJzL01ha2VmaWxlLm1pYiwgbWlicy9ORVQtU05NUC1BR0VOVC1NSUIudHh0LCAKKyAgICAgIG1pYnMvTkVULVNOTVAtRVhBTVBMRVMtTUlCLnR4dCwgbWlicy9ORVQtU05NUC1FWFRFTkQtTUlCLnR4dCwgCisgICAgICBtaWJzL05FVC1TTk1QLU1JQi50eHQsIG1pYnMvTkVULVNOTVAtTU9OSVRPUi1NSUIudHh0LCAKKyAgICAgIG1pYnMvTkVULVNOTVAtUEFTUy1NSUIudHh0LCBtaWJzL05FVC1TTk1QLVNZU1RFTS1NSUIudHh0LCAKKyAgICAgIG1pYnMvTkVULVNOTVAtVEMudHh0LCBtaWJzL05FVC1TTk1QLVZBQ00tTUlCLnR4dCwgCisgICAgICBtaWJzL05FVFdPUkstU0VSVklDRVMtTUlCLnR4dCwgbWlicy9OT1RJRklDQVRJT04tTE9HLU1JQi50eHQsIAorICAgICAgbWlicy9SRUFETUUubWlicywgbWlicy9SRkMtMTIxNS50eHQsIG1pYnMvUkZDMTE1NS1TTUkudHh0LCAKKyAgICAgIG1pYnMvUkZDMTIxMy1NSUIudHh0LCBtaWJzL1JNT04tTUlCLnR4dCwgbWlicy9TQ1RQLU1JQi50eHQsIAorICAgICAgbWlicy9TTVVYLU1JQi50eHQsIG1pYnMvU05NUC1DT01NVU5JVFktTUlCLnR4dCwgCisgICAgICBtaWJzL1NOTVAtRlJBTUVXT1JLLU1JQi50eHQsIG1pYnMvU05NUC1NUEQtTUlCLnR4dCwgCisgICAgICBtaWJzL1NOTVAtTk9USUZJQ0FUSU9OLU1JQi50eHQsIG1pYnMvU05NUC1QUk9YWS1NSUIudHh0LCAKKyAgICAgIG1pYnMvU05NUC1UQVJHRVQtTUlCLnR4dCwgbWlicy9TTk1QLVVTRVItQkFTRUQtU00tTUlCLnR4dCwgCisgICAgICBtaWJzL1NOTVAtVVNNLUFFUy1NSUIudHh0LCBtaWJzL1NOTVAtVVNNLURILU9CSkVDVFMtTUlCLnR4dCwgCisgICAgICBtaWJzL1NOTVAtVklFVy1CQVNFRC1BQ00tTUlCLnR4dCwgbWlicy9TTk1QdjItQ09ORi50eHQsIAorICAgICAgbWlicy9TTk1QdjItTUlCLnR4dCwgbWlicy9TTk1QdjItU01JLnR4dCwgbWlicy9TTk1QdjItVEMudHh0LCAKKyAgICAgIG1pYnMvU05NUHYyLVRNLnR4dCwgbWlicy9UQ1AtTUlCLnR4dCwgCisgICAgICBtaWJzL1RSQU5TUE9SVC1BRERSRVNTLU1JQi50eHQsIG1pYnMvVFVOTkVMLU1JQi50eHQsIAorICAgICAgbWlicy9VQ0QtREVNTy1NSUIuaW5jLCBtaWJzL1VDRC1ERU1PLU1JQi50eHQsIAorICAgICAgbWlicy9VQ0QtRElTS0lPLU1JQi5pbmMsIG1pYnMvVUNELURJU0tJTy1NSUIudHh0LCAKKyAgICAgIG1pYnMvVUNELURMTU9ELU1JQi5pbmMsIG1pYnMvVUNELURMTU9ELU1JQi50eHQsIAorICAgICAgbWlicy9VQ0QtSVBGSUxURVItTUlCLmluYywgbWlicy9VQ0QtSVBGSUxURVItTUlCLnR4dCwgCisgICAgICBtaWJzL1VDRC1JUEZXQUNDLU1JQi5pbmMsIG1pYnMvVUNELUlQRldBQ0MtTUlCLnR4dCwgCisgICAgICBtaWJzL1VDRC1TTk1QLU1JQi1PTEQudHh0LCBtaWJzL1VDRC1TTk1QLU1JQi5pbmMsIAorICAgICAgbWlicy9VQ0QtU05NUC1NSUIudHh0LCBtaWJzL1VEUC1NSUIudHh0LCBtaWJzL2lhbmFsaXN0LCAKKyAgICAgIG1pYnMvbWFrZWh0bWwucGwsIG1pYnMvbWliZmV0Y2gsIG1pYnMvbm9kZW1hcCwgbWlicy9yZmNsaXN0LCAKKyAgICAgIG1pYnMvcmZjbWlicy5kaWZmLCBtaWJzL3NtaXN0cmlwLCBta2luc3RhbGxkaXJzLCAKKyAgICAgIG5ldC1zbm1wLWNvbmZpZy5pbiwgbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIuaW4sIG92L01ha2VmaWxlLmluLCAKKyAgICAgIG92L1JFQURNRSwgb3YvVUNELUNvbXB1dGVyLCBvdi9VQ0QtZmllbGRzLCBvdi9iaXRtYXBzL1VDRC4yMC5tLCAKKyAgICAgIG92L2JpdG1hcHMvVUNELjIwLnAsIG92L2JpdG1hcHMvVUNELjI2Lm0sIG92L2JpdG1hcHMvVUNELjI2LnAsIAorICAgICAgb3YvYml0bWFwcy9VQ0QuMzIubSwgb3YvYml0bWFwcy9VQ0QuMzIucCwgb3YvYml0bWFwcy9VQ0QuMzgubSwgCisgICAgICBvdi9iaXRtYXBzL1VDRC4zOC5wLCBvdi9iaXRtYXBzL1VDRC40NC5tLCBvdi9iaXRtYXBzL1VDRC40NC5wLCAKKyAgICAgIG92L2JpdG1hcHMvVUNELjUwLm0sIG92L2JpdG1hcHMvVUNELjUwLnAsIG92L2JpdG1hcHMvVUNELmZpZWxkcywgCisgICAgICBvdi9vaWRfdG9fc3ltLmluLCBvdi9vaWRfdG9fdHlwZS5pbiwgcGVybC9BU04vQVNOLnBtLCAKKyAgICAgIHBlcmwvQVNOL0FTTi54cywgcGVybC9BU04vQ2hhbmdlcywgcGVybC9BU04vTUFOSUZFU1QsIAorICAgICAgcGVybC9BU04vTWFrZWZpbGUuUEwsIHBlcmwvQVNOL3Rlc3QucGwsIHBlcmwvQW55RGF0YV9TTk1QL0NoYW5nZXMsCisgICAgICAgcGVybC9BbnlEYXRhX1NOTVAvREJEX0FueURhdGEucGF0Y2gsIHBlcmwvQW55RGF0YV9TTk1QL0Zvcm1hdC5wbSwKKyAgICAgICBwZXJsL0FueURhdGFfU05NUC9JTlNUQUxMLCBwZXJsL0FueURhdGFfU05NUC9NQU5JRkVTVCwgCisgICAgICBwZXJsL0FueURhdGFfU05NUC9NYWtlZmlsZS5QTCwgcGVybC9BbnlEYXRhX1NOTVAvUkVBRE1FLCAKKyAgICAgIHBlcmwvQW55RGF0YV9TTk1QL1N0b3JhZ2UucG0sIHBlcmwvQW55RGF0YV9TTk1QL2NvbmZpZ3Mvc2NsaSwgCisgICAgICBwZXJsL0FueURhdGFfU05NUC9jb25maWdzL3VuaXgsIHBlcmwvQW55RGF0YV9TTk1QL25ldHNoLCAKKyAgICAgIHBlcmwvTWFrZWZpbGUuUEwsIHBlcmwvTWFrZWZpbGUubWFrZWZpbGVzLCBwZXJsL01ha2VmaWxlLnN1YnMucGwsIAorICAgICAgcGVybC9PSUQvQ2hhbmdlcywgcGVybC9PSUQvTUFOSUZFU1QsIHBlcmwvT0lEL01ha2VmaWxlLlBMLCAKKyAgICAgIHBlcmwvT0lEL09JRC5wbSwgcGVybC9PSUQvT0lELnhzLCBwZXJsL09JRC9SRUFETUUsIAorICAgICAgcGVybC9PSUQvdGVzdC5wbCwgcGVybC9PSUQvdHlwZW1hcCwgcGVybC9TTk1QL0JVRywgCisgICAgICBwZXJsL1NOTVAvTUFOSUZFU1QsIHBlcmwvU05NUC9NQU5JRkVTVC5TS0lQLAorICAgICAgcGVybC9TTk1QL01ha2VmaWxlLlBMLCAgcGVybC9TTk1QL1JFQURNRSwgcGVybC9TTk1QL1NOTVAucG0sCisgICAgICBwZXJsL1NOTVAvU05NUC54cywgIHBlcmwvU05NUC9UT0RPLCBwZXJsL1NOTVAvZXhhbXBsZXMvYXN5bmMxLnBsLCAKKyAgICAgIHBlcmwvU05NUC9leGFtcGxlcy9hc3luYzIucGwsIHBlcmwvU05NUC9leGFtcGxlcy9idWxrd2Fsay5wbCwgCisgICAgICBwZXJsL1NOTVAvZXhhbXBsZXMvaXBmb3J3YXJkLnBsLCBwZXJsL1NOTVAvZXhhbXBsZXMvbWlidHJlZS5wbCwgCisgICAgICBwZXJsL1NOTVAvZXhhbXBsZXMvbWlid2Fsay5wbCwgcGVybC9TTk1QL2V4YW1wbGVzL3BpbmdtaWIucGwsIAorICAgICAgcGVybC9TTk1QL2V4YW1wbGVzL3RhYmxld2Fsay5wbCwgcGVybC9TTk1QL2V4YW1wbGVzL3Rlc3RsZWFrLnBsLCAKKyAgICAgIHBlcmwvU05NUC9leGFtcGxlcy90cmFwLWV4YW1wbGUucGwsIHBlcmwvU05NUC9oaW50cy9pcml4LnBsLCAKKyAgICAgIHBlcmwvU05NUC9oaW50cy9zb2xhcmlzLnBsLCBwZXJsL1NOTVAvcGVybHNubXAuaCwgCisgICAgICBwZXJsL1NOTVAvdC9SRUFETUUsIHBlcmwvU05NUC90L2FzeW5jLnQsIHBlcmwvU05NUC90L2J1bGt3YWxrLnQsIAorICAgICAgcGVybC9TTk1QL3QvY29uZi50LCBwZXJsL1NOTVAvdC9jb25mdGVzdC5jb25mLCBwZXJsL1NOTVAvdC9nZXQudCwgCisgICAgICBwZXJsL1NOTVAvdC9nZXRuZXh0LnQsIHBlcmwvU05NUC90L21pYi50LCBwZXJsL1NOTVAvdC9taWIudHh0LCAKKyAgICAgIHBlcmwvU05NUC90L21pYmxvYWQudCwgcGVybC9TTk1QL3Qvbm90aWZ5LnQsCisgICAgICBwZXJsL1NOTVAvdC9zZXNzaW9uLnQsICBwZXJsL1NOTVAvdC9zZXQudCwKKyAgICAgIHBlcmwvU05NUC90L3NubXB0ZXN0LmNvbmYsICBwZXJsL1NOTVAvdC9zdGFydGFnZW50LnBsLAorICAgICAgcGVybC9TTk1QL3R5cGVtYXAsICBwZXJsL1RyYXBSZWNlaXZlci9DaGFuZ2VzLAorICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvTUFOSUZFU1QsICBwZXJsL1RyYXBSZWNlaXZlci9NYWtlZmlsZS5QTCwKKyAgICAgIHBlcmwvVHJhcFJlY2VpdmVyL1JFQURNRSwgIHBlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci5wbSwgCisgICAgICBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIueHMsIHBlcmwvVHJhcFJlY2VpdmVyL2NvbnN0LWMuaW5jLCAKKyAgICAgIHBlcmwvVHJhcFJlY2VpdmVyL2NvbnN0LXhzLmluYywgCisgICAgICBwZXJsL1RyYXBSZWNlaXZlci9mYWxsYmFjay9jb25zdC1jLmluYywgCisgICAgICBwZXJsL1RyYXBSZWNlaXZlci9mYWxsYmFjay9jb25zdC14cy5pbmMsIAorICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvcGVybF9zbm1wdHJhcGQuaCwgcGVybC9UcmFwUmVjZWl2ZXIvcHBwb3J0LmgsIAorICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvdC8xLnQsIHBlcmwvVHJhcFJlY2VpdmVyL3R5cGVtYXAsIAorICAgICAgcGVybC9hZ2VudC9DaGFuZ2VzLCBwZXJsL2FnZW50L01BTklGRVNULCBwZXJsL2FnZW50L01ha2VmaWxlLlBMLCAKKyAgICAgIHBlcmwvYWdlbnQvU3VwcG9ydC9NYWtlZmlsZS5QTCwgcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG0sIAorICAgICAgcGVybC9hZ2VudC9hZ2VudC5wbSwgcGVybC9hZ2VudC9hZ2VudC54cywgCisgICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwsIAorICAgICAgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG0sIAorICAgICAgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUueHMsIAorICAgICAgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL2dlbiwgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL3Rlc3QucGwsIAorICAgICAgcGVybC9hZ2VudC9uZXRzbm1wX3JlcXVlc3RfaW5mb1B0ci5wbSwgcGVybC9hZ2VudC90ZXN0LnBsLCAKKyAgICAgIHBlcmwvYWdlbnQvdHlwZW1hcCwgcGVybC9kZWZhdWx0X3N0b3JlL0NoYW5nZXMsIAorICAgICAgcGVybC9kZWZhdWx0X3N0b3JlL01BTklGRVNULCBwZXJsL2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwsIAorICAgICAgcGVybC9kZWZhdWx0X3N0b3JlL1JFQURNRSwgcGVybC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG0sIAorICAgICAgcGVybC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUueHMsIHBlcmwvZGVmYXVsdF9zdG9yZS9nZW4sIAorICAgICAgcGVybC9kZWZhdWx0X3N0b3JlL3Rlc3QucGwsIHBlcmwvZGVmYXVsdF9zdG9yZS90eXBlbWFwLCAKKyAgICAgIHBlcmwvbWFrZS1wZXJsLW1ha2VmaWxlcywgcGVybC9tYW5hZ2VyL0lOU1RBTEwsIAorICAgICAgcGVybC9tYW5hZ2VyL01ha2VmaWxlLlBMLCBwZXJsL21hbmFnZXIvZGlzcGxheXRhYmxlLnBtLCAKKyAgICAgIHBlcmwvbWFuYWdlci9nZXRWYWx1ZXMucG0sIHBlcmwvbWFuYWdlci9tYW5hZ2VyLnBtLCAKKyAgICAgIHBlcmwvbWFuYWdlci9zZXR1cGF1dGgsIHBlcmwvbWFuYWdlci9zZXR1cGRiLCAKKyAgICAgIHBlcmwvbWFuYWdlci9zZXR1cHVzZXIsIHBlcmwvbWFuYWdlci9zbm1wdG9zcWwsIHB5dGhvbi9MSUNFTlNFLCAKKyAgICAgIHB5dGhvbi9SRUFETUUsIHB5dGhvbi9uZXRzbm1wL19faW5pdF9fLnB5LCAKKyAgICAgIHB5dGhvbi9uZXRzbm1wL2NsaWVudC5weSwgcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYywgCisgICAgICBweXRob24vbmV0c25tcC90ZXN0cy9fX2luaXRfXy5weSwgcHl0aG9uL25ldHNubXAvdGVzdHMvc25tcGQuY29uZiwKKyAgICAgICBweXRob24vbmV0c25tcC90ZXN0cy90ZXN0LnB5LCBweXRob24vc2V0dXAucHksIHJlbW92ZS1maWxlcywgCisgICAgICBzZWRzY3JpcHQuaW4sIHNubXBsaWIvTWFrZWZpbGUuZGVwZW5kLCBzbm1wbGliL01ha2VmaWxlLmluLCAKKyAgICAgIHNubXBsaWIvYXNuMS5jLCBzbm1wbGliL2NhbGxiYWNrLmMsIHNubXBsaWIvY2hlY2tfdmFyYmluZC5jLCAKKyAgICAgIHNubXBsaWIvY211X2NvbXBhdC5jLCBzbm1wbGliL2NvbnRhaW5lci5jLCAKKyAgICAgIHNubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jLCBzbm1wbGliL2NvbnRhaW5lcl9pdGVyYXRvci5jLCAKKyAgICAgIHNubXBsaWIvY29udGFpbmVyX2xpc3Rfc3NsbC5jLCBzbm1wbGliL2NvbnRhaW5lcl9udWxsLmMsIAorICAgICAgc25tcGxpYi9kYXRhX2xpc3QuYywgc25tcGxpYi9kZWZhdWx0X3N0b3JlLmMsIHNubXBsaWIvZGlyX3V0aWxzLmMsCisgICAgICAgc25tcGxpYi9mZF9ldmVudF9tYW5hZ2VyLmMsIHNubXBsaWIvZmlsZV91dGlscy5jLAorICAgICAgc25tcGxpYi9nZXRvcHQuYywgIHNubXBsaWIvaW5ldF9udG9wLmMsIHNubXBsaWIvaW5ldF9wdG9uLmMsCisgICAgICBzbm1wbGliL2ludDY0LmMsICBzbm1wbGliL2tleXRvb2xzLmMsIHNubXBsaWIvbGFyZ2VfZmRfc2V0LmMsCisgICAgICBzbm1wbGliL2xjZF90aW1lLmMsICBzbm1wbGliL21kNS5jLCBzbm1wbGliL21pYi5jLAorICAgICAgc25tcGxpYi9tdF9zdXBwb3J0LmMsICBzbm1wbGliL29pZF9zdGFzaC5jLCBzbm1wbGliL3BhcnNlLmMsCisgICAgICBzbm1wbGliL3BrY3MuYywgIHNubXBsaWIvcmVhZF9jb25maWcuYywgc25tcGxpYi9zY2FwaS5jLAorICAgICAgc25tcGxpYi9zbm1wLXRjLmMsICBzbm1wbGliL3NubXAuYywgc25tcGxpYi9zbm1wQUFMNVBWQ0RvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvc25tcEFsaWFzRG9tYWluLmMsIHNubXBsaWIvc25tcENhbGxiYWNrRG9tYWluLmMsIAorICAgICAgc25tcGxpYi9zbm1wRFRMU1VEUERvbWFpbi5jLCBzbm1wbGliL3NubXBJUFhEb21haW4uYywgCisgICAgICBzbm1wbGliL3NubXBTU0hEb21haW4uYywgc25tcGxpYi9zbm1wU1RERG9tYWluLmMsIAorICAgICAgc25tcGxpYi9zbm1wVENQRG9tYWluLmMsIHNubXBsaWIvc25tcFRDUElQdjZEb21haW4uYywgCisgICAgICBzbm1wbGliL3NubXBVRFBEb21haW4uYywgc25tcGxpYi9zbm1wVURQSVB2NkRvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvc25tcFVuaXhEb21haW4uYywgc25tcGxpYi9zbm1wX2FsYXJtLmMsCisgICAgICBzbm1wbGliL3NubXBfYXBpLmMsICBzbm1wbGliL3NubXBfYXV0aC5jLCBzbm1wbGliL3NubXBfY2xpZW50LmMsCisgICAgICBzbm1wbGliL3NubXBfZGVidWcuYywgIHNubXBsaWIvc25tcF9lbnVtLmMsCisgICAgICBzbm1wbGliL3NubXBfbG9nZ2luZy5jLCAgc25tcGxpYi9zbm1wX29wZW5zc2wuYywKKyAgICAgIHNubXBsaWIvc25tcF9wYXJzZV9hcmdzLmMsICBzbm1wbGliL3NubXBfc2VjbW9kLmMsCisgICAgICBzbm1wbGliL3NubXBfc2VydmljZS5jLCAgc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jLAorICAgICAgc25tcGxpYi9zbm1wX3ZlcnNpb24uYywgIHNubXBsaWIvc25tcGtzbS5jLCBzbm1wbGliL3NubXB0c20uYywKKyAgICAgIHNubXBsaWIvc25tcHVzbS5jLCAgc25tcGxpYi9zbm1wdjMuYywgc25tcGxpYi9zbnByaW50Zi5jLAorICAgICAgc25tcGxpYi9zdHJsY3B5LmMsICBzbm1wbGliL3N0cnRva19yLmMsIHNubXBsaWIvc3RydG9sLmMsCisgICAgICBzbm1wbGliL3N0cnRvdWwuYywgIHNubXBsaWIvc3RydG91bGwuYywgc25tcGxpYi9zeXN0ZW0uYywKKyAgICAgIHNubXBsaWIvdGVzdF9iaW5hcnlfYXJyYXkuYywgIHNubXBsaWIvdGV4dF91dGlscy5jLAorICAgICAgc25tcGxpYi90b29scy5jLCBzbm1wbGliL3VjZC1zbm1wLWluY2x1ZGVzLmgsIAorICAgICAgc25tcGxpYi91Y2RfY29tcGF0LmMsIHNubXBsaWIvdmFjbS5jLCBzbm1wbGliL3dpbnBpcGUuYywgCisgICAgICBzbm1wbGliL3dpbnNlcnZpY2UuYywgc25tcGxpYi93aW5zZXJ2aWNlLm1jLAorICAgICAgc25tcGxpYi93aW5zZXJ2aWNlLnJjLCAgc25tcGxpYi93aW5zZXJ2aWNlcmMucmMsIHN0YW1wLWgsCisgICAgICBzdGFtcC1oLmluLCB0ZXN0aW5nL01ha2VmaWxlLmluLCAgdGVzdGluZy9SRUFETUUsCisgICAgICB0ZXN0aW5nL1JVTlRFU1RTLCB0ZXN0aW5nL1QuYywgdGVzdGluZy9UMi5zaCwgCisgICAgICB0ZXN0aW5nL1RFU1RDT05GLnNoLCB0ZXN0aW5nL2RhdGEua2V5Y2hhbmdlLW1kNSwgCisgICAgICB0ZXN0aW5nL2RhdGEua2V5Y2hhbmdlLXNoYTEsIHRlc3RpbmcvZGF0YS5rZXljaGFuZ2Utc2hhMS1kZXMsIAorICAgICAgdGVzdGluZy9kYXRhLmt1bC1tZDUsIHRlc3RpbmcvZGF0YS5rdWwtc2hhMSwgdGVzdGluZy9ldGltZXRlc3QuYywgCisgICAgICB0ZXN0aW5nL2V2YWxfb25lcHJvZ3JhbS5zaCwgdGVzdGluZy9ldmFsX29uZXNjcmlwdC5zaCwgCisgICAgICB0ZXN0aW5nL2V2YWxfc3VpdGUuc2gsIHRlc3RpbmcvZXZhbF90ZXN0bGlzdCwgCisgICAgICB0ZXN0aW5nL2V2YWxfdG9vbHMuc2gsIHRlc3Rpbmcva2V5bWFuYWdldGVzdC5jLAorICAgICAgdGVzdGluZy9taXNjdGVzdC5jLCAgdGVzdGluZy9yZmMxMjEzL1JFQURNRSwgdGVzdGluZy9yZmMxMjEzL3J1biwgCisgICAgICB0ZXN0aW5nL3JmYzEyMTMvc25tcGZ1bi5zaCwgdGVzdGluZy9yZmMxMjEzL3Rlc3RfZnVuLCAKKyAgICAgIHRlc3RpbmcvcmZjMTIxMy90ZXN0bWliMS5zaCwgdGVzdGluZy9yZmMxMjEzL3Rlc3RtaWIyLnNoLCAKKyAgICAgIHRlc3RpbmcvcmZjMTIxMy90ZXN0bWliMy5zaCwgdGVzdGluZy9zY2FwaXRlc3QuYywgCisgICAgICB0ZXN0aW5nL3Rlc3Rfa2V5Y2hhbmdlLnNoLCB0ZXN0aW5nL3Rlc3Rfa3VsLnNoLCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvU3RyYW5zcG9ydCwgdGVzdGluZy90ZXN0cy9TdjFjb25maWcsIAorICAgICAgdGVzdGluZy90ZXN0cy9TdjJjY29uZmlnLCB0ZXN0aW5nL3Rlc3RzL1N2M2NvbmZpZywgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1N2M3VzbWNvbmZpZ2FnZW50LCB0ZXN0aW5nL3Rlc3RzL1N2M3VzbWNvbmZpZ2Jhc2UsIAorICAgICAgdGVzdGluZy90ZXN0cy9TdjN1c21jb25maWd0cmFwZCwgdGVzdGluZy90ZXN0cy9TdjN2YWNtY29uZmlnLCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvU3ZhY21jb25maWcsIHRlc3RpbmcvdGVzdHMvU3Zhbnljb25maWcsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDAwY29uZmlndXJlLCB0ZXN0aW5nL3Rlc3RzL1QwMDFzbm1wdjFnZXQsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDE0c25tcHYyY2dldCwgdGVzdGluZy90ZXN0cy9UMDE1c25tcHYyY2dldG5leHQsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDE2MHNubXB2MmNidWxrZ2V0LCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAxNnNubXB2MmNnZXRmYWlsLCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAxN3NubXB2MmN0b3YxZ2V0ZmFpbCwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMThzbm1wdjF0b3YyY2dldGZhaWwsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDE5c25tcHYyY25vc3VjaCwgdGVzdGluZy90ZXN0cy9UMDIwc25tcHYzZ2V0LCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAyMXNubXB2M2dldG5leHQsIHRlc3RpbmcvdGVzdHMvVDAyMjBzbm1wdjNidWxrZ2V0LAorICAgICAgIHRlc3RpbmcvdGVzdHMvVDAyMnNubXB2M2dldE1ENSwKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAyM3NubXB2M2dldE1ENUFFUywgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMjNzbm1wdjNnZXRNRDVERVMsCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMjRzbm1wdjNnZXRTSEExLCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAyNXNubXB2M2dldFNIQURFUywgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMjZzbm1wdjNnZXRTSEFBRVMsCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMjhzbm1wdjNnZXRmYWlsLCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAzMHNubXB2M3VzZXJjcmVhdGlvbiwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMzVzbm1wdjN0cmFwZHVzZXJtZ210LCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDA0OXNubXB2M2luZm9ybSwKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDA0OXNubXB2M2luZm9ybWF1dGgsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDQ5c25tcHYzaW5mb3JtcHJpdiwgdGVzdGluZy90ZXN0cy9UMDUwc25tcHYzdHJhcCwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwNTFzbm1wdjJjdHJhcCwgdGVzdGluZy90ZXN0cy9UMDUyc25tcHYyY2luZm9ybSwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwNTNhZ2VudHYxdHJhcCwgdGVzdGluZy90ZXN0cy9UMDU0YWdlbnR2MmN0cmFwLCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDA1NWFnZW50djFtaW50cmFwLCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDA1NmFnZW50djJjbWludHJhcCwKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDA1N3RyYXBkYXV0aHRlc3QsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDU3dHJhcGRhdXRodGVzdDIsCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwNTd0cmFwZGF1dGh0ZXN0MywgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwNThhZ2VudGF1dGh0cmFwLAorICAgICAgdGVzdGluZy90ZXN0cy9UMDU5dHJhcGR0cmFwaGFuZGxlLCAgdGVzdGluZy90ZXN0cy9UMDYwdHJhcGRwZXJsLAorICAgICAgdGVzdGluZy90ZXN0cy9UMDYxYWdlbnRwZXJsLCAgdGVzdGluZy90ZXN0cy9UMDY1YWdlbnRleHRlbmQsCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QxMDBhZ2VudGh1cCwgIHRlc3RpbmcvdGVzdHMvVDExMGFnZW50eGdldCwKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDExMWFnZW50eHNldCwgIHRlc3RpbmcvdGVzdHMvVDExMmFnZW50eHNldGZhaWwsCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QxMTNhZ2VudHh0cmFwLCAgdGVzdGluZy90ZXN0cy9UMTE1YWdlbnR4cGVybCwKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDEyMHByb3h5Z2V0LCAgdGVzdGluZy90ZXN0cy9UMTIxcHJveHlzZXQsCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QxMjJwcm94eXNldGZhaWwsICB0ZXN0aW5nL3Rlc3RzL1QxMzBzbm1wdjF2YWNtZ2V0LAorICAgICAgdGVzdGluZy90ZXN0cy9UMTMxc25tcHYyY3ZhY21nZXQsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMTMyc25tcHYzdmFjbWdldCwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QxNDBzbm1wdjF2YWNtZ2V0ZmFpbCwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QxNDFzbm1wdjJjdmFjbWdldGZhaWwsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMTQyc25tcHYzdmFjbWdldGZhaWwsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMTUwc29sYXJpc2hvc3RjcHUsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMTUxc29sYXJpc2hvc3RkaXNrLCB0ZXN0aW5nL3Rlc3RzL1QxNTJob3N0dXB0aW1lLCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDE1M3NvbGFyaXNzd2FwLCB0ZXN0aW5nL3Rlc3RzL1QxNjBzbm1wbmV0c3RhdCwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QyMDBzbm1wdjJjd2Fsa2FsbCwgdGVzdGluZy90ZXN0cy9UMzAwdWRwLCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDMxMHRjcCwgdGVzdGluZy90ZXN0cy9UMzIwdWRwdjYsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMzMwdGNwdjYsIHRlc3RpbmcvdGVzdHMvVDM1MHVuaXgsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMzYwZHRsc3VkcCwgdGVzdGluZy90ZXN0cy9UMzk5YWxpYXMsIAorICAgICAgdGVzdGluZy90ZXN0cy90ZXN0LWxvY2FsaG9zdC5jZXJ0LCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvdGVzdC1sb2NhbGhvc3QucHJpdiwgdGVzdGluZy90ZXN0cy90ZXN0LXVzZXIuY2VydCwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL3Rlc3QtdXNlci5wcml2LCB3aW4zMi9Db25maWd1cmUsIAorICAgICAgd2luMzIvRVhBTVBMRS5jb25mLndpbjMyLCB3aW4zMi9NYWtlZmlsZS1hcHBzLmluLCAKKyAgICAgIHdpbjMyL01ha2VmaWxlLmluLCB3aW4zMi9NZ210QXBpLXdpbkV4dERMTC5oLCAKKyAgICAgIHdpbjMyL1NubXAtd2luRXh0RExMLmgsIHdpbjMyL2FnZW50X21vZHVsZV9kb3RfY29uZi5oLCAKKyAgICAgIHdpbjMyL2FnZW50X21vZHVsZV9pbmNsdWRlcy5oLCB3aW4zMi9hZ2VudF9tb2R1bGVfaW5pdHMuaCwgCisgICAgICB3aW4zMi9idWlsZC5iYXQsIHdpbjMyL2J1aWxkLnBsLCB3aW4zMi9jb25maWcuaCwgCisgICAgICB3aW4zMi9jb25maWcuaC5ib3JsYW5kLCB3aW4zMi9kaXN0L1JFQURNRS5idWlsZC53aW4zMi50eHQsIAorICAgICAgd2luMzIvZGlzdC9SRUFETUUudHh0LCB3aW4zMi9kaXN0L2J1aWxkLWJpbmFyeS5iYXQsIAorICAgICAgd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGwsIAorICAgICAgd2luMzIvZGlzdC9odG1saGVscC9Db25maWd1cmF0aW9uX092ZXJ2aWV3Lmh0bWwsIAorICAgICAgd2luMzIvZGlzdC9odG1saGVscC9EZXZlbG9wZXJfRkFRLmh0bWwsIAorICAgICAgd2luMzIvZGlzdC9odG1saGVscC9GQVEuaHRtbCwgCisgICAgICB3aW4zMi9kaXN0L2h0bWxoZWxwL0hlbHBfQ2F2ZWF0cy5odG1sLCAKKyAgICAgIHdpbjMyL2Rpc3QvaHRtbGhlbHAvSW50cm9kdWN0aW9uLmh0bWwsIAorICAgICAgd2luMzIvZGlzdC9odG1saGVscC9OZXQtU05NUC5oaGMsCisgICAgICB3aW4zMi9kaXN0L2h0bWxoZWxwL05ldC1TTk1QLmhocCwgCisgICAgICB3aW4zMi9kaXN0L2h0bWxoZWxwL3NubXAuY29uZi53aW4zMi5odG1sLCAKKyAgICAgIHdpbjMyL2Rpc3QvaHRtbGhlbHAvc25tcGQuY29uZi53aW4zMi5odG1sLCAKKyAgICAgIHdpbjMyL2Rpc3QvaHRtbGhlbHAvc25tcHRyYXBkLmNvbmYud2luMzIuaHRtbCwgCisgICAgICB3aW4zMi9kaXN0L2luc3RhbGxlci9BZGQyUGF0aC5uc2ksIAorICAgICAgd2luMzIvZGlzdC9pbnN0YWxsZXIvU2V0RW5WYXIubnNpLCAKKyAgICAgIHdpbjMyL2Rpc3QvaW5zdGFsbGVyL25ldC1zbm1wLm5zaSwgd2luMzIvZGlzdC9zY3JpcHRzL2NyZWF0ZS10b2MsIAorICAgICAgd2luMzIvZGlzdC9zY3JpcHRzL21hbmRpcjJodG1sLCAKKyAgICAgIHdpbjMyL2Rpc3Qvc2NyaXB0cy9uZXQtc25tcC1wZXJsLXRlc3QucGwsIAorICAgICAgd2luMzIvZGlzdC9zY3JpcHRzL3BvZGRpcjJodG1sLCB3aW4zMi9kaXN0L3NjcmlwdHMvcmVhZG1lMmh0bWwsIAorICAgICAgd2luMzIvZGlzdC9zY3JpcHRzL3R4dDJodG1sLCB3aW4zMi9kaXN0L3Rvc29jazEuc2gsIAorICAgICAgd2luMzIvZW5jb2RlX2tleWNoYW5nZS9lbmNvZGVfa2V5Y2hhbmdlLmRzcCwgCisgICAgICB3aW4zMi9pbnN0YWxsLW5ldC1zbm1wLmJhdCwgd2luMzIvbGliYWdlbnQvTWFrZWZpbGUuaW4sIAorICAgICAgd2luMzIvbGliYWdlbnQvbGliYWdlbnQuZGVmLCB3aW4zMi9saWJhZ2VudC9saWJhZ2VudC5kc3AsIAorICAgICAgd2luMzIvbGliaGVscGVycy9NYWtlZmlsZS5pbiwgd2luMzIvbGliaGVscGVycy9saWJoZWxwZXJzLmRzcCwgCisgICAgICB3aW4zMi9saWJuZXRzbm1wdHJhcGQvTWFrZWZpbGUuaW4sIAorICAgICAgd2luMzIvbGlibmV0c25tcHRyYXBkL2xpYm5ldHNubXB0cmFwZC5kc3AsIAorICAgICAgd2luMzIvbGlic25tcC9NYWtlZmlsZS5pbiwgd2luMzIvbGlic25tcC9saWJzbm1wLmRzcCwgCisgICAgICB3aW4zMi9saWJzbm1wX2RsbC9NYWtlZmlsZS5pbiwgd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWYsIAorICAgICAgd2luMzIvbGlic25tcF9kbGwvbGlic25tcF9kbGwuZHNwLAorICAgICAgd2luMzIvbGlidWNkbWlicy9saWJ1Y2RtaWJzLmRlZiwgIHdpbjMyL2xvY2FsL01ha2VmaWxlLmluLAorICAgICAgd2luMzIvbG9jYWwvbWliMmMuYmF0LCAgd2luMzIvbG9jYWwvc25tcGNvbmYuYmF0LAorICAgICAgd2luMzIvbG9jYWwvdHJhcHRvZW1haWwuYmF0LCAgd2luMzIvbWliX21vZHVsZV9kb3RfY29uZi5oLAorICAgICAgd2luMzIvbWliX21vZHVsZV9pbmNsdWRlcy5oLCAgd2luMzIvbWliX21vZHVsZV9pbml0cy5oLAorICAgICAgd2luMzIvbWliX21vZHVsZV9zaHV0ZG93bi5oLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaCwgCisgICAgICB3aW4zMi9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgsIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sCisgICAgICB3aW4zMi9uZXRzbm1wbWlicy9NYWtlZmlsZS5pbiwgIHdpbjMyL25ldHNubXBtaWJzL25ldHNubXBtaWJzLmRzcCwKKyAgICAgIHdpbjMyL25tYWtlcGVybC5iYXQsICB3aW4zMi9zbm1wYnVsa2dldC9zbm1wYnVsa2dldC5kc3AsIAorICAgICAgd2luMzIvc25tcGJ1bGt3YWxrL3NubXBidWxrd2Fsay5kc3AsIHdpbjMyL3NubXBkL01ha2VmaWxlLmluLCAKKyAgICAgIHdpbjMyL3NubXBkL3NubXBkLmRzcCwgd2luMzIvc25tcGRlbHRhL3NubXBkZWx0YS5kc3AsIAorICAgICAgd2luMzIvc25tcGRmL3NubXBkZi5kc3AsIHdpbjMyL3NubXBnZXQvc25tcGdldC5kc3AsIAorICAgICAgd2luMzIvc25tcGdldG5leHQvc25tcGdldG5leHQuZHNwLCB3aW4zMi9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbiwgCisgICAgICB3aW4zMi9zbm1wbmV0c3RhdC9zbm1wbmV0c3RhdC5kc3AsIHdpbjMyL3NubXBzZXQvc25tcHNldC5kc3AsIAorICAgICAgd2luMzIvc25tcHNtX2luaXQuaCwgd2luMzIvc25tcHN0YXR1cy9zbm1wc3RhdHVzLmRzcCwgCisgICAgICB3aW4zMi9zbm1wdGFibGUvc25tcHRhYmxlLmRzcCwgd2luMzIvc25tcHRlc3Qvc25tcHRlc3QuZHNwLCAKKyAgICAgIHdpbjMyL3NubXB0cmFuc2xhdGUvc25tcHRyYW5zbGF0ZS5kc3AsCisgICAgICB3aW4zMi9zbm1wdHJhcC9zbm1wdHJhcC5kc3AsICB3aW4zMi9zbm1wdHJhcGQvTWFrZWZpbGUuaW4sCisgICAgICB3aW4zMi9zbm1wdHJhcGQvc25tcHRyYXBkLmRzcCwgIHdpbjMyL3NubXB1c20vc25tcHVzbS5kc3AsCisgICAgICB3aW4zMi9zbm1wdmFjbS9zbm1wdmFjbS5kc3AsICB3aW4zMi9zbm1wd2Fsay9zbm1wd2Fsay5kc3AsCisgICAgICB3aW4zMi93aW4zMi5kc3csIHdpbjMyL3dpbjMyZGxsLmRzdzoKKworIEZpeCA1LjUueCBicmFuY2ggc3RydWN0dXJlIChwYXJ0IDIpIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMTk5NjUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjEgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fa2luZm8uYzogcHJvcGVyIHByb2Nlc3MKKworIHN0YXR1cyB2YWx1ZXMgZm9yIG5ldGJzZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTYyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIxICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2tpbmZvLmM6IHByb3BlciBwcm9jZXNzCisKKyBzdGF0dXMgdmFsdWVzIGZvciBuZXRic2QgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTYyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIxICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NjYXBpLmM6IGNvbmRpdGlvbmFsaXplIHZhcmlhYmxlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk2MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zY2FwaS5jOiBjb25kaXRpb25hbGl6ZSB2YXJpYWJsZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk2MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uLmg6IHRjcC1taWIvdWRwLW1pYgorCisgc3VwcG9ydCBmb3IgdGhlICpic2RzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NjAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjEgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubi5oOiB0Y3AtbWliL3VkcC1taWIKKworIHN1cHBvcnQgZm9yIHRoZSAqYnNkcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5NjAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjEgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9taWJJSS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9mcmVlYnNkNC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9uZXRic2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fb3BlbmJzZC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfZnJlZWJzZDQuYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9uZXRic2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9vcGVuYnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfaW50ZXJmYWNlLgorICAgICAgIGM6IHRjcC1taWIvdWRwLW1pYiBzdXBwb3J0IGZvciB0aGUgKmJzZHMgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTU5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIxICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvbWliSUkuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fZnJlZWJzZDQuYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fbmV0YnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX29wZW5ic2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2ZyZWVic2Q0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbmV0YnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfb3BlbmJzZC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2ludGVyZmFjZS4KKyAgICAgICBjOiB0Y3AtbWliL3VkcC1taWIgc3VwcG9ydCBmb3IgdGhlICpic2RzIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTU5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIxICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgICogCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfZGF0YV9hCisgICAgICAgY2Nlc3MuYzogUHJvcGVybHkgZW5kIGRlYnVnIG1lc3NhZ2Ugd2l0aCBuZXdsaW5lIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk1OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogICAqIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2RhdGFfYQorICAgICAgIGNjZXNzLmM6IFByb3Blcmx5IGVuZCBkZWJ1ZyBtZXNzYWdlIHdpdGggbmV3bGluZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk1OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2xpbnV4LmM6IHJlbW92ZSB2YXIKKworIHRoYXQgc2hhZG93cyB0aGUgdXNlZnVsIG9uZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTU3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIxICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fbGludXguYzogcmVtb3ZlIHZhcgorCisgdGhhdCBzaGFkb3dzIHRoZSB1c2VmdWwgb25lIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk1NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaXB2Ni5jOiBtYWpvciBmaWRkbGluZyB0byBnZXQgdGhpbmdzIHdvcmtpbmcKKworIGZvciBvcGVuYnNkIHRvby4gVGhpcyBzaG91bGQgcmVhbGx5IGJlIHJld29ya2VkIHRvIHVzZSB0aGUKKyB0Y3AtbWliL3VkcC1taWIvZGF0YV9hY2Nlc3MgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk1NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaXB2Ni5jOiBtYWpvciBmaWRkbGluZyB0byBnZXQgdGhpbmdzIHdvcmtpbmcKKworIGZvciBvcGVuYnNkIHRvby4gVGhpcyBzaG91bGQgcmVhbGx5IGJlIHJld29ya2VkIHRvIHVzZSB0aGUKKyB0Y3AtbWliL3VkcC1taWIvZGF0YV9hY2Nlc3MgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTU2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIxICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYzogZml4IHRjcCBzdGF0ZXMgZm9yIGRyYWdvbmZseWJzZAorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTU1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIxICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYzogZml4IHRjcCBzdGF0ZXMgZm9yIGRyYWdvbmZseWJzZAorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5NTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjEgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9taWJJSS5oOiBlbmFibGUgbmV3IHRjcC91ZHAgbWlicyBmb3Igc29sYXJpcworICAgICAgZ2l0LXN2bi1pZDoKKworCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ2hhbmdlczogVjUuNyAtPiBWNS43LjEucHJlMQorCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9zbm1wZC5jOiBmaXggQysrIGNvbW1lbnRzCisKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWMsIHBlcmwvQVNOL0FTTi5wbSwgcGVybC9BbnlEYXRhX1NOTVAvU3RvcmFnZS5wbSwKKyAgICAgICBwZXJsL09JRC9PSUQucG0sIHBlcmwvU05NUC9TTk1QLnBtLCAKKyAgICAgIHBlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci5wbSwgcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG0sIAorICAgICAgcGVybC9hZ2VudC9hZ2VudC5wbSwgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG0sIAorICAgICAgcGVybC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG06IFZlcnNpb24gbnVtYmVyIHVwZGF0ZToKKworIDUuNy4xLnByZTEKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogTWFrZWZpbGUudG9wOiB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS43LjEucHJlMQorCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGNmNGNjZTRjMTg5Y2Y0N2Y0YzQ4OWRiNDNiN2ZhNTEwZjg5MDZhMWEgTWVyZ2U6IGRmOTFhOWYKKworIDkzZTk3ZGMgQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+IERhdGU6ICAgTW9uCisgQXVnIDggMjI6MTU6MjggMjAxMSArMDEwMAorCisyMDExLTA4LTA4ICBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CisKKyAgICogOiBNZXJnZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoICdvcmlnaW4vVjUtNi1wYXRjaGVzJyBpbnRvCisKKyBWNS02LXBhdGNoZXMKKworMjAxMS0wOC0wOCAgRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorCisgICAqICB3aW4zMi9NYWtlZmlsZS1hcHBzLmluLCB3aW4zMi9kaXN0L1JFQURNRS5idWlsZC53aW4zMi50eHQsIAorICAgICAgd2luMzIvbGliYWdlbnQvTWFrZWZpbGUuaW4sIHdpbjMyL2xpYm5ldHNubXB0cmFwZC9NYWtlZmlsZS5pbiwgCisgICAgICB3aW4zMi9saWJzbm1wL01ha2VmaWxlLmluLCB3aW4zMi9saWJzbm1wX2RsbC9NYWtlZmlsZS5pbiwgCisgICAgICB3aW4zMi9uZXRzbm1wbWlicy9NYWtlZmlsZS5pbiwgd2luMzIvc25tcGQvTWFrZWZpbGUuaW4sIAorICAgICAgd2luMzIvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4sIHdpbjMyL3NubXB0cmFwZC9NYWtlZmlsZS5pbjogRGVmaW5lCisKKyBfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIHRva2VuIChhcyBwZXIgQWxleCcgYnVpbGQKKyBpbnN0cnVjdGlvbnMpCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGRmMTZkYzIyMjFlOTkzZGQzYzY2NjUwZDVlODcyNTc3ZmZlNmMwMWIgTWVyZ2U6IDcxNGJjODIKKworIDhlNWEyOGQgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBNb24gQXVnIDggMTM6NTY6NDMgMjAxMSAtMDcwMAorCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBmZmEwNWIwNTFhYzNlMmIxOTcxOTVhOTk4OWNjN2E5MWZlOGQ5MjgyIEF1dGhvcjogV2VzCisKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIE1vbiBBdWcgOCAxMzo1NTozOAorIDIwMTEgLTA3MDAKKworMjAxMS0wOC0wOCAgRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorCisgICAqIDogY29tbWl0IDcxNGJjODJmYTAxZTIxYTM2NTU4MjQ5NjNmYTU0ZTliODA0MmZmYjAgTWVyZ2U6IDZmZThmZTUKKworIDNlZjFkYjUgQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+IERhdGU6ICAgTW9uCisgQXVnIDggMjE6MjE6NDYgMjAxMSArMDEwMAorCisyMDExLTA4LTA4ICBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CisKKyAgICogOiBjb21taXQgYjQ1MTYwN2RjYTAxNWMxMTFlOTZmZGZlYjJkZGIwNjYxZmI0ZjcyNCBBdXRob3I6IERhdmUKKworIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+IERhdGU6ICAgTW9uIEF1ZyA4IDIxOjIwOjMyIDIwMTEKKyArMDEwMAorCisyMDExLTA4LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA2ZmU4ZmU1Mjk0YTQ1YmM3ZTRlYTM3NTFhMWFkN2FhNDdiNWNhYmIyIE1lcmdlOiAzNjRmOGZmCisKKyBmNjlhYmUzIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgTW9uIEF1ZworIDggMjI6MDI6MzggMjAxMSArMDIwMAorCisyMDExLTA4LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBjOTQ4MTMwNDRhNGM0YTYwOGU5OGU4MDIyMzA3NWM2ZmFmMDRlZTExIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIE1vbiBBdWcgOCAyMTo1NjoxNSAyMDExICswMjAwCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDM2NGY4ZmZhZWI5MGI0ZWIwMTY1ZmM4NTU2ODhjZDA2MjY2MzI3OTQgTWVyZ2U6IDMyODcyOTUKKworIDdhYmI5MjYgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBNb24gQXVnIDggMTE6MjQ6MjYgMjAxMSAtMDcwMAorCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IE1lcmdlIHJlbW90ZS10cmFja2luZyBicmFuY2ggJ29yaWdpbi9WNS02LXBhdGNoZXMnIGludG8KKworIFY1LTYtcGF0Y2hlcworCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGRpc3BsYXkgdGhlIGJyYW5jaCB3ZSdsbCBjb21taXQgdG8KKworCisyMDExLTA4LTA4ICBWbGFkaW1pciBLb25kcmF0aWV2IDx3dWxmMjAwMUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza19ody5jOiBDSEFOR0VTOiBzbm1wZDogUEFUQ0ggMzM4NjYzMzoKKworIGZyb20gd3VsZjIwMDE6IGZpeCBpbnRlZ2VyIG92ZXJmbG93IGluIGRpc2sgcGVyY2VudCBjYWxjdWxhdGlvbnMgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDg0YTc3NWQwNTU3ZmVhOTc1NzBlNDE3MTVhMzE2NDk3MGI0YzAzYTIgTWVyZ2U6IDZmZmYxYzEKKworIGQzNzNjNGYgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBNb24gQXVnCisgOCAyMDoxMjozMiAyMDExICswMjAwCisKKzIwMTEtMDgtMDggIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvYWdlbnRfdHJhcC5jOiBDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzMzg3MTM5OiBmcm9tCisKKyB5YWJlcmF1bmV5YTogQXZvaWQgc2VnZmF1bHQgaWYgdHJhcHNlc3MgdHJhbnNwb3J0IGVsZW1lbnQgY2FudCBiZQorIHBhcnNlZCBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBuc3NmcGF0Y2hhcHBseTogc3BsaXQgdGhlCisKKyBkaXNwbGF5ZWQgZ2l0IGNvbW1pdCBjb21tYW5kIGludG8gbXVsdGlwbGUgc2VnbWVudHMKKworMjAxMS0wOC0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogYWdlbnQvaGVscGVycy9zY2FsYXJfZ3JvdXAuYzogQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDMzODY5NjE6CisKKyBNYWtlIFNOTVAgR0VUIHdvcmsgaW4gYW4gQWdlbnRYIHN1YmFnZW50IGlmIHdyaXRlIHN1cHBvcnQgaXMKKyBkaXNhYmxlZCB2aWEgTkVUU05NUF9OT19XUklURV9TVVBQT1JUIChNYXJrIFJ1c2spLgorCisyMDExLTA4LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBzbm1wbGliL21pYi5jOiBDSEFOR0VTOiBzbm1wbGliOiBGaXggYSBjcmFzaCB0aGF0IGNvdWxkIGJlCisKKyB0cmlnZ2VyZWQgYnkgY2FsbGluZyBfbWliaW5kZXhfYWRkKCkgd2l0aCB0aGUgc2Vjb25kIGFyZ3VtZW50IG5vdAorIGVxdWFsIHRvIC0xLgorCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA2ZmZmMWMxYWU1MWIwNmM5ZDgwZmFmMTUzNzNhOTYzZDE3M2YxNGU4IE1lcmdlOiA4MzdjNTJlCisKKyA4Y2M5MDA0IEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgTW9uIEF1ZyA4IDEwOjU4OjU5IDIwMTEgLTA3MDAKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgOGNhN2ZmMWU2OTJjYWVjNDE4NmI3ODhjOWFlMmQyN2JlMjEzMjkwZiBBdXRob3I6IFdlcworCisgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBNb24gQXVnIDggMTA6MzM6NTYKKyAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogTWVyZ2UgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCAnb3JpZ2luL1Y1LTQtcGF0Y2hlcycgaW50bworCisgVjUtNC1wYXRjaGVzCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGI4ZjUyOWNiYTI3YzAxMTRiNGNiNzM0MGNmZDQ0OTUwNGZhMDc1MDYgTWVyZ2U6IDA4MjJmMmQKKworIDU1NmU5MzggQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBNb24gQXVnIDggMTA6MDU6MzYgMjAxMSAtMDcwMAorCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGZpeCBmdW5jdGlvbiBuYW1lIHR5cG8KKworCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCAyOTg4MmEwNzhhOTU5YTBmNzhiMDNlMDE5NjhmMWQxN2I3ZjZhMjk5IE1lcmdlOiA1ZTliZDJmCisKKyAwNDA5YzBhIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgTW9uIEF1ZyA4IDEwOjAzOjM0IDIwMTEgLTA3MDAKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBtYW51YWwgbWVyZ2Ugb2YgcHVsbC9wdXNoCisKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBtYWtlIG5zcHVsbC9uc3B1c2ggY2hlY2sgZm9yIGEKKworIGNsZWFuIHJlcG8KKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBuZXcgZnVuY3Rpb24gIm5zbWFrZWFsbCIgdG8gdGVzdAorCisgYnVpbGRpbmcgb24gZXZlcnkgYnJhbmNoCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogZGVmYXVsdCB0byBtZXJnZQorCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogTWVyZ2UgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCAnb3JpZ2luL1Y1LTctcGF0Y2hlcycgaW50bworCisgVjUtNy1wYXRjaGVzCisKKzIwMTEtMDgtMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oOiBDSEFOR0VTOiBXaW5kb3dzOiBBdm9pZCB0aGF0IGlmCisKKyB0aGUgTmV0LVNOTVAgUGVybCBtb2R1bGVzIGhhdmUgYmVlbiBidWlsdCB3aXRoIGFub3RoZXIgdmVyc2lvbiBvZgorIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIHRoYW4gQWN0aXZlUGVybCB0aGF0IHVzaW5nIG9uZSBvZiB0aGVzZSBQZXJsCisgbW9kdWxlcyB0cmlnZ2VycyBhICJGcmVlIHRvIHdyb25nIHBvb2wiIGNyYXNoLiBUaGlzIHJlZ3Jlc3Npb24gd2FzCisgY2F1c2VkIGJ5IGNvbW1pdCAzYjE0YzU5Y2Y4Mjc4ZDQxMDIwN2ZmNDJkZWJkYTI2MzY0MjZhNDY4ICh0aGUKKyBuZXRzbm1wX2ZyZWUoKSBpbnRvIFNOTVBfRlJFRSgpIGNoYW5nZXMgaW4gdGhlICoueHMgZmlsZXMpLgorCisyMDExLTA4LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBlMTA5NTM5OTMwNzAzY2IzMDUyZDUyNDFiMThhYzZmYzA2MmZhYWNhIE1lcmdlOiAwYzliNmNiCisKKyBlNDZiMTcwIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgTW9uIEF1ZworIDggMTg6MzQ6MTEgMjAxMSArMDIwMAorCisyMDExLTA4LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBzbm1wbGliL21pYi5jOiBDSEFOR0VTOiBzbm1wbGliOiBGaXggYSBjcmFzaCB0aGF0IGNvdWxkIGJlCisKKyB0cmlnZ2VyZWQgYnkgY2FsbGluZyBfbWliaW5kZXhfYWRkKCkgd2l0aCB0aGUgc2Vjb25kIGFyZ3VtZW50IG5vdAorIGVxdWFsIHRvIC0xLgorCisyMDExLTA4LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA3ZjQyZDBkOTMzMjA0ODQxNTIyNzE0MjdjYzk4MDhjYmRhNDliYmQwIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIE1vbiBBdWcgOCAwOTo1MDo1MSAyMDExICswMjAwCisKKzIwMTEtMDgtMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDBjOWI2Y2JlOWRiZTJlYzUyMTdhOTViNjc4MWZkN2RjMWY2ZWJkYTcgTWVyZ2U6IGZhNmNlZjUKKworIDk2MzMyMGYgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBNb24gQXVnCisgOCAxODoxNDozNiAyMDExICswMjAwCisKKzIwMTEtMDgtMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGEzYjg2NTRhMjMyYzU2M2JjOTdjYzk5MjVjZDk4NTkwYTMwYzViYzUgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgTW9uIEF1ZyA4IDE3OjI0OjE4IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wNyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgZmE2Y2VmNWNhOTFkZjNhMGIwMzQ1NWI2ODU1OWQyYmVlMjQ4MTAxYyBNZXJnZTogZjVmZTUzNgorCisgOGFkZDBkYSBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFN1biBBdWcKKyA3IDEwOjE4OjU0IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wNyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgYTBkZDNjYWYyNTkyNmU0MzQ2NTcxOGJmNDE3YTQ2NGMyZmIzNjM2NiBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBTdW4gQXVnIDcgMTA6MTc6MDEgMjAxMSArMDIwMAorCisyMDExLTA4LTA1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOiAzMiBpcyB0b28gbGltaXRlZCBmb3IKKworIGJpZ2dlciB0YWJsZXM7IGluY3JlYXNlIHRoZSBtYXggbXNnIGNvdW50IHRvIDEyOAorCisyMDExLTA4LTA1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IG1ha2Ugcm9sbHVwIGFuZCBzeW5jIHN1cHBvcnQKKworIC0tcmViYXNlIGFuZCBjaGFuZ2UgdGhlIGRlZmF1bHQgYmFjayB0byBtZXJnZQorCisyMDExLTA4LTA1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IE1lcmdlIHJlbW90ZS10cmFja2luZyBicmFuY2ggJ29yaWdpbi9WNS00LXBhdGNoZXMnIGludG8KKworIFY1LTQtcGF0Y2hlcworCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBSRUFETUUud2luMzI6IENIQU5HRVM6IFdpbjMyOiBEb2N1bWVudGVkIGhvdyB0byB1c2UgYnVpbGQuYmF0IHdpdGgKKworIE9wZW5TU0wgZW5hYmxlZAorCisyMDExLTA3LTE1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBSRUFETUUud2luMzI6IENIQU5HRVM6IFdpbmRvd3M6IFJlbW92ZSBvdXRkYXRlZCBpbnN0cnVjdGlvbnMgYWJvdXQKKworIGVkaXRpbmcgd2luMzJcbGlic25tcF9kbGxcbGlic25tcC5kZWYgZnJvbSBSRUFETUUud2luMzIKKworMjAxMS0wNy0xNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogUkVBRE1FLndpbjMyOiBDSEFOR0VTOiBXaW4zMjogRG9jdW1lbnQgaG93IHRvIGJ1aWxkIDY0LWJpdAorCisgZXhlY3V0YWJsZXMgZm9yIHRoZSB4NjQvYW1kNjQgYXJjaGl0ZWN0dXJlCisKKzIwMTEtMDgtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGY1ZmU1MzZlOGZkNmM0OGZlMjQzZGVjZDMxZmFjOWNmMWM5MmY0Y2MgTWVyZ2U6IDc4NTBlYTEKKworIDgwOTI4YTggQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBGcmkgQXVnCisgNSAxNToxMzoyNyAyMDExICswMjAwCisKKzIwMTEtMDgtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDgwOTI4YTg5MDljZmFiMzdmMDFiMzlhMDcxYTNlOGFkODU5NTYyMjIgTWVyZ2U6IGYxNmEwOTQKKworIDBkYmM4NjkgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBGcmkgQXVnCisgNSAxMzo1NzozMCAyMDExICswMjAwCisKKzIwMTEtMDgtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDBkYmM4NjlmZWMwN2Q4ZTkwZGJkMWM5NTQ5M2VlN2NiYzYyM2M5NWMgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgRnJpIEF1ZyA1IDEyOjQwOjMxIDIwMTEgKzAyMDAKKworMjAxMS0wOC0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogLmdpdGlnbm9yZTogLmdpdGlnbm9yZTogQWRkCisKKyBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5kZWYgYW5kIHBlcmwvU05NUC90CisKKzIwMTEtMDgtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDg2YzFlMmI5Njc5ZmVjMmNkNzk5YmE3NjAwNWMzZDYwZTlkNDc2MzQgTWVyZ2U6IGJjZDg2MzUKKworIGYxNmEwOTQgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBGcmkgQXVnCisgNSAxMjoyMDo1MCAyMDExICswMjAwCisKKzIwMTEtMDgtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDJmOGQ0ZjU3OTZjYmMxYzdlOTY3YWNkYWE4MDE5YjI0ZjE1MjBhMzYgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgRnJpIEF1ZyA1IDEyOjAyOjUxIDIwMTEgKzAyMDAKKworMjAxMS0wOC0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogc25tcGxpYi9wYXJzZS5jOiBVbmJyZWFrIHRoZSBWNS00LXBhdGNoZXMgLSByZXZlcnQgY29tbWl0CisKKyBkMmM0NzY4YmQyZWZiNDg2NjQ0MzRhODMxNDI1YzJkZGE4NWQ3MTMzIChDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSAorIDMzNjIyMzM6IGZyb20geWFiZXJhdW5leWE6IE11dGUgdW5uZWNlc3NhcnkgY2Fubm90IGZpbmQgbW9kdWxlCisgbm9pc2UpLgorCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jLCBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5oOiAKKworIFVuYnJlYWsgdGhlIFY1LTQtcGF0Y2hlcyBicmFuY2ggLSB3YXMgYnJva2VuIGJ5IGNvbW1pdAorIGJmNzE3OGIwYjIyNTg3ZDQzZDFhODBjMjY5Y2QyMTZiZDU5MzAyMTQgKGFnZW50OiBjaGFuZ2UgdHlwZSBvZgorIHNubXBfZW5hYmxlYXV0aGVudHJhcHMgdG8gbG9uZykKKworMjAxMS0wOC0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaDogVW5icmVhayB0aGUgVjUtNC1wYXRjaGVzCisKKyBicmFuY2ggLSB3YXMgYnJva2VuIGJ5IGNvbW1pdAorIDBlNjg0MmZlMDgwY2VjODUzYjA4Y2QyMzIzMDE1YWJhYmMzODFjZTEgKENIQU5HRVM6IHNubXB0cmFwZDogUEFUQ0gKKyAzMzgzNDQxOiBmcm9tIHNhY2hpbnN1cmVuZHJhbjogRml4IGNyYXNoIG9uIDUuNC40IGR1ZSB0byBhY2Nlc3Mgb2YKKyBmcmVlZCBtZW1vcnkpLgorCisyMDExLTA4LTA1ICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBORVdTOiBtaW5vciBORVdTIHBvbGlzaAorCisKKzIwMTEtMDgtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGJjZDg2MzUwNzEzODIyOTYzZDM3NmVmZjU4MmE5MmY0M2U0MjZkNmMgTWVyZ2U6IDljODEwYTMKKworIDdhMjBmNzEgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBGcmkgQXVnCisgNSAxMDoyODo1NSAyMDExICswMjAwCisKKzIwMTEtMDgtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDNhYTk0OWZiZGZjMWE5NGE4MzQwYWQ4YmFmOGIzMTQ3NTZhMGJiOWQgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgRnJpIEF1ZyA1IDEwOjI2OjE1IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgOWM4MTBhM2IzN2I2ODU3M2M0MDMzN2UyNDZlMmZhZjI5OWI3N2QzMSBNZXJnZTogNzFjYjJlOAorCisgNjEwZDYzZiBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFRodSBBdWcgNCAxMDo0MjowOCAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDk0MzkzMGUxZTEyNDM4NWZkOTQ3MzhiNmRjZGEzN2QyOWRjN2FjN2YgQXV0aG9yOiBXZXMKKworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgVGh1IEF1ZyA0IDEwOjQxOjQxCisgMjAxMSAtMDcwMAorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IE1lcmdlIHJlbW90ZS10cmFja2luZyBicmFuY2ggJ29yaWdpbi9WNS00LXBhdGNoZXMnIGludG8KKworIFY1LTQtcGF0Y2hlcworCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA0ZWRjYjg4ZGFlOGIyZTU5ZGM2ODNlODBkNDE0ZmE3ZWNlYzM2ODg1IE1lcmdlOiA2NWYzZWVmCisKKyAyZGQ5ZWQwIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVGh1IEF1ZyA0IDEwOjI0OjExIDIwMTEgLTA3MDAKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBNZXJnZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoICdvcmlnaW4vVjUtNS1wYXRjaGVzJyBpbnRvCisKKyBWNS01LXBhdGNoZXMKKworMjAxMS0wOC0wNCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgYmM1Y2EwM2EwNGFiMTljNjM0YTM0ZDA2MGIwYjE2Yjc0ODRjYjUyMCBNZXJnZTogODhmZGRiNworCisgOTBjMGU3NSBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFRodSBBdWcKKyA0IDE5OjEzOjA3IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wNCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogc25tcGxpYi9zbm1wX2NsaWVudC5jLCBzbm1wbGliL3NubXB1c20uYzogc25tcHVzbTogRml4IHJlY2VudGx5CisKKyBpbnRyb2R1Y2VkIGNvbXBpbGVyIHdhcm5pbmdzCisKKzIwMTEtMDgtMDQgIFN0dWFydCBIZW5kZXJzb24gPHQwancyZnUwa21nQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X25ldGJzZC5jOiBDSEFOR0VTOiBvcGVuYnNkOgorCisgUEFUQ0ggMzM1NzkzMjogZnJvbSB0MGp3MmZ1MGttZzogQ2xlYW5pbmcgaW4gbWVtb3J5X25ldGJzZC5jIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBWbGFkaW1pciBLb25kcmF0aWV2IDx3dWxmMjAwMUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX2dldGZzc3RhdHMuYzogQ0hBTkdFUzogYWdlbnQ6CisKKyBQQVRDSCAzMzg2MTQ3OiBmcm9tIHd1bGYyMDAxOiBmaXggVUNELVNOTVAtTUlCOjpkc2tVc2VkIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA0NzNkN2U1Y2Q0ZDQxMWJiYTIwZWI4NTM1OWQ4NzI4MDYzMzAxY2JkIE1lcmdlOiBhNGU4YjYyCisKKyA4OGZkZGI3IEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVGh1IEF1ZyA0IDA5OjI4OjIyIDIwMTEgLTA3MDAKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgMjEwMWJiMmQ3YWQ2ZGIwMzhjNzU1YWE5MTkzYzhhY2UwZGJkNGY1OCBBdXRob3I6IFdlcworCisgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBUaHUgQXVnIDQgMDk6Mjg6MDYKKyAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIC5naXRpZ25vcmU6IGlnbm9yZSAqLm9yaWcgYW5kICoucmVqCisKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBoZWxwIG91dHB1dCBkZXNjcmliZXMgcmViYXNlIHZzCisKKyBtZXJnZSBiZXR0ZXIKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgZjEyNmExN2M2YTMwNjM0NTVhNTExOTQwYjAyMzA0N2FiZDliNDhlZSBNZXJnZTogYWQ3NjVmNAorCisgNzdhNDc4NCBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFRodSBBdWcgNCAwOToyNToxNiAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDQ1MmUxNzA3ZjIwOWVjNDVlN2M3ZjJhMzA0MGVmNTk1ZmI5ZDFhZjYgTWVyZ2U6IGRjNzU1YTYKKworIGIzNzJlNWEgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUaHUgQXVnIDQgMDk6MjU6MDMgMjAxMSAtMDcwMAorCisyMDExLTA4LTA0ICBTdHVhcnQgSGVuZGVyc29uIDx0MGp3MmZ1MGttZ0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIE1ha2VmaWxlLmluLCBhY2NvbmZpZy5oLCBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9vcGVuYnNkLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vb3BlbmJzZDQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9vcGVuYnNkNS5oOiBDSEFOR0VTOiBvcGVuYnNkOiBQQVRDSAorICAgICAgMzM1NzkyNzoKKworIGZyb20gdDBqdzJmdTBrbWc6IFJlY29nbmlzZSBvcGVuYnNkNSBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBmaXggd2hlcmUgYXJndW1lbnRzIGFyZSBzZXQKKworCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IHNwbGl0IG5zc2ZwYXRjaGFwcGx5IGludG8gdHdvCisKKyBwYXJ0czogYXBwbHkgYW5kIGNvbW1pdGluZworCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IHBhdGNoIHVzaW5nIC1OCisKKworMjAxMS0wOC0wNCAgRGF2aWQgQXJub2xkIDxkamFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBtYW4vZGVmYXVsdF9zdG9yZS4zLmJvdCwgbWFuL2VuY29kZV9rZXljaGFuZ2UuMS5kZWYsIAorICAgICAgbWFuL2ZpeHByb2MuMS5kZWYsIG1hbi9taWIyYy5jb25mLjUuaW4sIG1hbi9uZXQtc25tcC1jb25maWcuMS5kZWYsCisgICAgICAgbWFuL25ldHNubXBfYWdlbnRfYXBpLjMuZGVmLCBtYW4vbmV0c25tcF9taWJfYXBpLjMuZGVmLCAKKyAgICAgIG1hbi9zbm1wLmNvbmYuNS5kZWYsIG1hbi9zbm1wYnVsa2dldC4xLmRlZiwKKyAgICAgIG1hbi9zbm1wYnVsa3dhbGsuMS5kZWYsICBtYW4vc25tcGNtZC4xLmRlZiwgbWFuL3NubXBjb25mLjEuZGVmLAorICAgICAgbWFuL3NubXBkLjguZGVmLCAgbWFuL3NubXBkLmNvbmYuNS5kZWYsIG1hbi9zbm1wZC5leGFtcGxlcy41LmRlZiwgCisgICAgICBtYW4vc25tcGRlbHRhLjEuZGVmLCBtYW4vc25tcGRmLjEuZGVmLCBtYW4vc25tcGdldC4xLmRlZiwgCisgICAgICBtYW4vc25tcGdldG5leHQuMS5kZWYsIG1hbi9zbm1wbmV0c3RhdC4xLmRlZiwgbWFuL3NubXBzZXQuMS5kZWYsIAorICAgICAgbWFuL3NubXBzdGF0dXMuMS5kZWYsIG1hbi9zbm1wdGFibGUuMS5kZWYsIG1hbi9zbm1wdGVzdC4xLmRlZiwgCisgICAgICBtYW4vc25tcHRyYW5zbGF0ZS4xLmRlZiwgbWFuL3NubXB0cmFwLjEuZGVmLCBtYW4vc25tcHRyYXBkLjguZGVmLCAKKyAgICAgIG1hbi9zbm1wdHJhcGQuY29uZi41LmRlZiwgbWFuL3NubXB1c20uMS5kZWYsIG1hbi9zbm1wdmFjbS4xLmRlZiwgCisgICAgICBtYW4vc25tcHdhbGsuMS5kZWY6IENIQU5HRVM6IG1hbjogUEFUQ0ggMzMxMjg2MTogZnJvbSBkamE6IE1hbgorICAgICAgcGFnZXMKKworIGh5cGhlbi12cy1taW51cyBjbGVhbnVwIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHdpbjMyL2Rpc3QvaW5zdGFsbGVyL25ldC1zbm1wLm5zaTogRGV0ZWN0IChhbmQgcmVqZWN0KSBPcGVuU1NMCisKKyAxLjAuMAorCisyMDExLTA4LTA0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHdpbjMyL2Rpc3QvaW5zdGFsbGVyL25ldC1zbm1wLm5zaTogQ29tbWFuZC1saW5lIG9wdGlvbnMgZm9yIHNpbGVudAorCisgaW5zdGFsbAorCisyMDExLTA4LTA0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHdpbjMyL2Rpc3QvaW5zdGFsbGVyL25ldC1zbm1wLm5zaTogRW5zdXJlIFdpbmRvd3MgcGFja2FnZQorCisgdW5pbnN0YWxscyBjb21wbGV0ZWx5LgorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA4MWM2M2ZiNWM1ZTRhYmI5YzI5YWNhODliZjlkNjk0NDEwMDg2ZTk3IE1lcmdlOiA0YTY5MjBhCisKKyBkYzc1NWE2IEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVGh1IEF1ZyA0IDA4OjMzOjM0IDIwMTEgLTA3MDAKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2NsaWVudC5jOiBhZGRlZCBzcGFjaW5nIHRvIG1hdGNoIHRoZSBsYXRlciBicmFuY2hlcworCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogbWFudWFsIG1lcmdlCisKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2NsaWVudC5jOiByZW1vdmVkIGFjY2lkZW50aWFsbHkgZHVwbGljYXRlZCBjb2RlCisKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBtYW51YWwgbWVyZ2UKKworCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IG1hbnVhbCBtZXJnZQorCisKKzIwMTEtMDgtMDQgIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9wYXJzZS5jOiBDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzMzYyMjMzOiBmcm9tCisKKyB5YWJlcmF1bmV5YTogTXV0ZSB1bm5lY2Vzc2FyeSBjYW5ub3QgZmluZCBtb2R1bGUgbm9pc2UgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMsIGFnZW50L3NubXBfdmFycy5jLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzOiBDSEFOR0VTOiBmcmVlYnNkOiBQQVRDSCAzMzYzMzA4OgorICAgICAgZnJvbQorCisgeWFiZXJhdW5leWE6IEZpeCBjb21waWxhdGlvbiBvbiBGcmVlQlNEIDkueCB3aXRoIHJlY2VudCBoZWFkZXIKKyBzaHVmZmxpbmcgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYWxsb3cgbnNyb2xsdXAgdG8gdGFrZSBhIC0tbWVyZ2UKKworIGZsYWcgZm9yIG1lcmdpbmcgaW5zdGVhZCBvZiByZWJhc2luZworCisyMDExLTA4LTA0ICBTYWNoaW4gU3VyZW5kcmFuIDxzYWNoaW5zdXJlbmRyYW5AdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oLCBzbm1wbGliL3NubXBfY2xpZW50LmMsIAorICAgICAgc25tcGxpYi9zbm1wdXNtLmM6IENIQU5HRVM6IHNubXB0cmFwZDogUEFUQ0ggMzM4MzQ0MTogZnJvbQorCisgc2FjaGluc3VyZW5kcmFuOiBGaXggY3Jhc2ggb24gNS40LjQgZHVlIHRvIGFjY2VzcyBvZiBmcmVlZCBtZW1vcnkgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogTWFrZWZpbGUuaW46IENIQU5HRVM6IGZyZWVic2Q6IFBBVENIIDMzNjMzMjg6IGZyb20geWFiZXJhdW5leWE6CisKKyBBZGQgRnJlZUJTRCA5LnggdG8gc3VwcG9ydGVkIE9TZXMgbGlzdCBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3BhcnNlLmM6IENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENIIDMzNjIyMzM6IGZyb20KKworIHlhYmVyYXVuZXlhOiBNdXRlIHVubmVjZXNzYXJ5IGNhbm5vdCBmaW5kIG1vZHVsZSBub2lzZSBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYywgYWdlbnQvc25tcF92YXJzLmMsIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnM6IENIQU5HRVM6IGZyZWVic2Q6IFBBVENIIDMzNjMzMDg6CisgICAgICBmcm9tCisKKyB5YWJlcmF1bmV5YTogRml4IGNvbXBpbGF0aW9uIG9uIEZyZWVCU0QgOS54IHdpdGggcmVjZW50IGhlYWRlcgorIHNodWZmbGluZyBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhbGxvdyBuc3JvbGx1cCB0byB0YWtlIGEgLS1tZXJnZQorCisgZmxhZyBmb3IgbWVyZ2luZyBpbnN0ZWFkIG9mIHJlYmFzaW5nCisKKzIwMTEtMDgtMDQgIFNhY2hpbiBTdXJlbmRyYW4gPHNhY2hpbnN1cmVuZHJhbkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgsIHNubXBsaWIvc25tcF9jbGllbnQuYywgCisgICAgICBzbm1wbGliL3NubXB1c20uYzogQ0hBTkdFUzogc25tcHRyYXBkOiBQQVRDSCAzMzgzNDQxOiBmcm9tCisKKyBzYWNoaW5zdXJlbmRyYW46IEZpeCBjcmFzaCBvbiA1LjQuNCBkdWUgdG8gYWNjZXNzIG9mIGZyZWVkIG1lbW9yeSBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBNYWtlZmlsZS5pbjogQ0hBTkdFUzogZnJlZWJzZDogUEFUQ0ggMzM2MzMyODogZnJvbSB5YWJlcmF1bmV5YToKKworIEFkZCBGcmVlQlNEIDkueCB0byBzdXBwb3J0ZWQgT1NlcyBsaXN0IFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvcGFyc2UuYzogQ0hBTkdFUzogbGlibmV0c25tcDogUEFUQ0ggMzM2MjIzMzogZnJvbQorCisgeWFiZXJhdW5leWE6IE11dGUgdW5uZWNlc3NhcnkgY2Fubm90IGZpbmQgbW9kdWxlIG5vaXNlIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jLCBhZ2VudC9zbm1wX3ZhcnMuYywgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVyczogQ0hBTkdFUzogZnJlZWJzZDogUEFUQ0ggMzM2MzMwODoKKyAgICAgIGZyb20KKworIHlhYmVyYXVuZXlhOiBGaXggY29tcGlsYXRpb24gb24gRnJlZUJTRCA5Lnggd2l0aCByZWNlbnQgaGVhZGVyCisgc2h1ZmZsaW5nIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGFsbG93IG5zcm9sbHVwIHRvIHRha2UgYSAtLW1lcmdlCisKKyBmbGFnIGZvciBtZXJnaW5nIGluc3RlYWQgb2YgcmViYXNpbmcKKworMjAxMS0wOC0wNCAgU2FjaGluIFN1cmVuZHJhbiA8c2FjaGluc3VyZW5kcmFuQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaCwgc25tcGxpYi9zbm1wX2NsaWVudC5jLCAKKyAgICAgIHNubXBsaWIvc25tcHVzbS5jOiBDSEFOR0VTOiBzbm1wdHJhcGQ6IFBBVENIIDMzODM0NDE6IGZyb20KKworIHNhY2hpbnN1cmVuZHJhbjogRml4IGNyYXNoIG9uIDUuNC40IGR1ZSB0byBhY2Nlc3Mgb2YgZnJlZWQgbWVtb3J5IFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvcGFyc2UuYzogQ0hBTkdFUzogbGlibmV0c25tcDogUEFUQ0ggMzM2MjIzMzogZnJvbQorCisgeWFiZXJhdW5leWE6IE11dGUgdW5uZWNlc3NhcnkgY2Fubm90IGZpbmQgbW9kdWxlIG5vaXNlIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGFsbG93IG5zcm9sbHVwIHRvIHRha2UgYSAtLW1lcmdlCisKKyBmbGFnIGZvciBtZXJnaW5nIGluc3RlYWQgb2YgcmViYXNpbmcKKworMjAxMS0wOC0wNCAgU2FjaGluIFN1cmVuZHJhbiA8c2FjaGluc3VyZW5kcmFuQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaCwgc25tcGxpYi9zbm1wX2NsaWVudC5jLCAKKyAgICAgIHNubXBsaWIvc25tcHVzbS5jOiBDSEFOR0VTOiBzbm1wdHJhcGQ6IFBBVENIIDMzODM0NDE6IGZyb20KKworIHNhY2hpbnN1cmVuZHJhbjogRml4IGNyYXNoIG9uIDUuNC40IGR1ZSB0byBhY2Nlc3Mgb2YgZnJlZWQgbWVtb3J5IFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2N0bC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9tZW1vcnlfZnJlZWJzZC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jLCBzbm1wbGliL2tleXRvb2xzLmMsCisgICAgICBzbm1wbGliL3NjYXBpLmM6CisKKyBDSEFOR0VTOiBidWlsZGluZzogUEFUQ0ggMzM4Mzk1MTogZnJvbSB5YWJlcmF1bmV5YTogRml4IC1XdW51c2VkCisgY29tcGlsZSB3YXJuaW5ncyB3aXRoIEZyZWVCU0QvTmV0QlNEIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2N0bC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9tZW1vcnlfZnJlZWJzZC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jLCBzbm1wbGliL2tleXRvb2xzLmMsCisgICAgICBzbm1wbGliL3NjYXBpLmM6CisKKyBDSEFOR0VTOiBidWlsZGluZzogUEFUQ0ggMzM4Mzk1MTogZnJvbSB5YWJlcmF1bmV5YTogRml4IC1XdW51c2VkCisgY29tcGlsZSB3YXJuaW5ncyB3aXRoIEZyZWVCU0QvTmV0QlNEIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBlODc4YWJiZGIxODA4ZWY4M2UwYTgwNzQ1MzZmYjU0ZTEzMjE5YThiIE1lcmdlOiA0MDNkZTQyCisKKyA4NzhmYmY0IEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVGh1IEF1ZyA0IDA3OjU1OjAwIDIwMTEgLTA3MDAKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgMjUwYWZhMDY4OTJmZDg5N2FjMzFlMzgzNmE3ZmZjOWUyYjRjZjdiOSBNZXJnZTogMmMxNGMxYworCisgM2FmYzVlMCBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFRodSBBdWcgNCAwNzo1MTozMyAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDU3OGNkN2NjZTM1MWFlOGQ5MDRlYzNkODBiZTliYTZkMWQ0OGE3MTIgTWVyZ2U6IDI1OTg4YmUKKworIGYzYmM1NTEgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUaHUgQXVnIDQgMDc6NTA6NTYgMjAxMSAtMDcwMAorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGF1dG9jb25mCisKKworMjAxMS0wOC0wNCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBjb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnM6IENIQU5HRVM6IGJ1aWxkaW5nOiBQQVRDSAorCisgMzM4Mzk0OTogZnJvbSB5YWJlcmF1bmV5YTogRml4IGF1dG9jb25mIHRlc3RzIGZvciBzeXMvbWJ1Zi5oIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IHByb21wdCBmb3IgcGF0Y2ggYW5kIGFuIGFyZWEsIGFuZAorCisgdXNlIHRoZSBwcm9wZXIgQ0hBTkdFUyBsaW5lIGZvcm1hdAorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IFVzZSBmZXRjaCAtLWFsbCBhbmQgcmViYXNlIGFzCisKKyBzdWdnZXN0ZWQgYnkgQmFydCBmb3Igc3BlZWQgaW1wcm92ZW1lbnRzCisKKzIwMTEtMDgtMDQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGQ2YTFhODllNmY2NDg5NTFhOWI4MzE5MzJkM2NjMjMwODIxZjJkMzcgTWVyZ2U6IGRjYjcxMmYKKworIDg3MmUwMTMgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUaHUgQXVnCisgNCAxMjowNjoxOCAyMDExICswMjAwCisKKzIwMTEtMDgtMDQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDQ0OTY5YjRlNTdjMjcxOTRlNWJkMzU3YmM0NTI3NWZlYjg2OTVkMjIgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgRnJpIEp1bCA4IDIwOjUyOjI1IDIwMTEgKzAyMDAKKworMjAxMS0wNy0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvd2luRXh0RExMLmM6IENIQU5HRVM6IFdpbjMyOiB3aW5FeHRETEw6IEludm9rZQorCisgU25tcFV0aWxPaWRGcmVlKCkgYmVmb3JlIFNubXBVdGlsT2lkQ3B5KCkuIEl0J3Mgbm90IGNsZWFyIHlldCB3aHkKKyB0aGUgb3JpZ2luYWwgY29kZSBkaWQgbm90IG1ha2Ugc25tcHdhbGsgdHJpZ2dlciBhIG1lbW9yeSBsZWFrLgorCisyMDExLTA4LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBkY2I3MTJmZmM4NmIzMzU4MzAwMGVmNGFlOWE1MWNlZDI1Y2QxNWJmIE1lcmdlOiBlODVjZmE1CisKKyA5ODYyM2VmIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVGh1IEF1ZworIDQgMTE6MzY6MTcgMjAxMSArMDIwMAorCisyMDExLTA4LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA4YTAxZWM2NDIzZDQwMGM0YTEzY2NhYzY4YTM3OTFkMDIxOGEwODg1IEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFRodSBBdWcgNCAxMToxOToxNyAyMDExICswMjAwCisKKzIwMTEtMDgtMDQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGU4NWNmYTU5OWIyM2I3NmQ5NzkxM2M5NmI1ZDcwM2JmZjZiYTQ5NDQgTWVyZ2U6IGIwNTZlZTYKKworIGUyMWVlZjIgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUaHUgQXVnCisgNCAwODo0NDo0MyAyMDExICswMjAwCisKKzIwMTEtMDgtMDQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYzogQ0hBTkdFUzogYWdlbnQ6CisKKyBBdm9pZCB0aGF0IGEgTUlCIHdhbGsgb24gdGhlIGhvc3QgcmVzb3VyY2VzIE1JQiB0cmlnZ2VycyBhIGNyYXNoIG9uCisgRmVkb3JhIDE1CisKKzIwMTEtMDgtMDQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGIwNTZlZTZlYjUzOTA5YWQwNGYxNmVjMjZkMjY5MGQ3YTA4MzE5MmEgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVGh1IEF1ZyA0IDA3OjU5OjA0IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wMyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogIGFnZW50L2FnZW50X3RyYXAuYywgYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0c19saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9hY2MKKyAgICAgICBlc3MuYywgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcGtnaW5mby5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJvY2ZzX3N0YXR1cy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9kYXRhX2FjY2Vzcy9ldGhlcnN0YXRzX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2FjY2VzcworICAgICAgIC5jLCBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguYywgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5jLCBhZ2VudC9zbm1wX2FnZW50LmMsIAorICAgICAgYXBwcy9zbm1wYnVsa2dldC5jLCBhcHBzL3NubXB0bHMuYywgYXBwcy9zbm1wdHJhcGRfbG9nLmMsIAorICAgICAgcGVybC9TTk1QL1NOTVAueHMsIHNubXBsaWIvY29udGFpbmVyX2l0ZXJhdG9yLmMsIAorICAgICAgc25tcGxpYi9kaXJfdXRpbHMuYywgc25tcGxpYi9zbm1wX2FwaS5jLCBzbm1wbGliL3NubXBfY2xpZW50LmMsIAorICAgICAgc25tcGxpYi9zbm1wX2VudW0uYywgc25tcGxpYi9zbm1wX29wZW5zc2wuYywgc25tcGxpYi9zbm1wdXNtLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4uYzogQ0hBTkdFUzogc25tcGxpYiwgc25tcGQ6CisKKyBwZXJsOiBFbGltaW5hdGUgZGVhZCB2YXJpYWJsZXMKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgYWU4ZTNlY2QyZGY0Y2YzNzYyNTk0NGFkZWQxZGZlNDczNWQ0NGVlYSBNZXJnZTogNzMxODdjZQorCisgOTMzNWUxOSBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFdlZCBBdWcgMyAxNDozNzozNiAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDc5NGY5YTY5ZDdlYjY0MjI2ODIwMGIwYTRiMTk5MTUxZGVmNjZlZDAgQXV0aG9yOiBXZXMKKworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgV2VkIEF1ZyAzIDE0OjM2OjI1CisgMjAxMSAtMDcwMAorCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGFkZGVkIGEgY29tbWVudAorCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYXQgZW5kIG9mIG5zcm9sbHVwIG1lbnRpb24gdGhhdAorCisgbm93IHdvdWxkIGJlIGEgZ29vZCB0aW1lIHRvIHJ1biBuc3N5bmMKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhIG5ldyBuc3N5bmMoKSBmdW5jdGlvbiBmb3IKKworIHB1c2gvcHVsbGluZyBhY3RpdmUgYnJhbmNoZXMKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhZGRlZCBhIGNvbW1lbnQKKworCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGF0IGVuZCBvZiBuc3JvbGx1cCBtZW50aW9uIHRoYXQKKworIG5vdyB3b3VsZCBiZSBhIGdvb2QgdGltZSB0byBydW4gbnNzeW5jCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYSBuZXcgbnNzeW5jKCkgZnVuY3Rpb24gZm9yCisKKyBwdXNoL3B1bGxpbmcgYWN0aXZlIGJyYW5jaGVzCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYXQgZW5kIG9mIG5zcm9sbHVwIG1lbnRpb24gdGhhdAorCisgbm93IHdvdWxkIGJlIGEgZ29vZCB0aW1lIHRvIHJ1biBuc3N5bmMKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhIG5ldyBuc3N5bmMoKSBmdW5jdGlvbiBmb3IKKworIHB1c2gvcHVsbGluZyBhY3RpdmUgYnJhbmNoZXMKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhZGRlZCBhIGNvbW1lbnQKKworCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGF0IGVuZCBvZiBuc3JvbGx1cCBtZW50aW9uIHRoYXQKKworIG5vdyB3b3VsZCBiZSBhIGdvb2QgdGltZSB0byBydW4gbnNzeW5jCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYSBuZXcgbnNzeW5jKCkgZnVuY3Rpb24gZm9yCisKKyBwdXNoL3B1bGxpbmcgYWN0aXZlIGJyYW5jaGVzCisKKzIwMTEtMDgtMDMgIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2lwLW1pYi5oOiBSZWVuYWJsZSBJUC1NSUI6OmlwRGVmYXVsdFJvdXRlclRhYmxlCisgICAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IEEgbmV3IGZ1bmN0aW9uOiBuc3NmcGF0Y2hhcHBseQorCisgdGhhdCBhdXRvLXB1bGxzIGdpdCBjb21tYW5kIGxpbmUgaW5mbyBmcm9tIFNGCisKKzIwMTEtMDgtMDIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLWN0eC1nZXQubTJpOiBhZGRlZCB2YXJpYWJsZXMgbmFtZXMgdG8KKworIHRoZSBnZW5lcmF0ZWQgZXJyb3IgbWVzc2FnZXMuCisKKzIwMTEtMDgtMDIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pYjJjLWNvbmYuZC9tZmQtaW50ZXJhY3RpdmUtc2V0dXAubTJjOiBXb3JkaW5nIGNoYW5nZXMgdG8KKworIGhlbHAgZGVzY3JpYmUgY29udGV4dHMgYmV0dGVyCisKKzIwMTEtMDgtMDIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL01ha2VmaWxlLmluLCBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1nZXQtVTY0Lm0yaTogQWRkZWQKKworIHRoZSBtaXNzaW5nIFU2NCBtMmkgZmlsZQorCisyMDExLTA4LTAzICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9pcC1taWIuaDogUmVlbmFibGUgSVAtTUlCOjppcERlZmF1bHRSb3V0ZXJUYWJsZQorICAgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBBIG5ldyBmdW5jdGlvbjogbnNzZnBhdGNoYXBwbHkKKworIHRoYXQgYXV0by1wdWxscyBnaXQgY29tbWFuZCBsaW5lIGluZm8gZnJvbSBTRgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1jdHgtZ2V0Lm0yaTogYWRkZWQgdmFyaWFibGVzIG5hbWVzIHRvCisKKyB0aGUgZ2VuZXJhdGVkIGVycm9yIG1lc3NhZ2VzLgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyYWN0aXZlLXNldHVwLm0yYzogV29yZGluZyBjaGFuZ2VzIHRvCisKKyBoZWxwIGRlc2NyaWJlIGNvbnRleHRzIGJldHRlcgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9NYWtlZmlsZS5pbiwgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtZ2V0LVU2NC5tMmk6IEFkZGVkCisKKyB0aGUgbWlzc2luZyBVNjQgbTJpIGZpbGUKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBBIG5ldyBmdW5jdGlvbjogbnNzZnBhdGNoYXBwbHkKKworIHRoYXQgYXV0by1wdWxscyBnaXQgY29tbWFuZCBsaW5lIGluZm8gZnJvbSBTRgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1jdHgtZ2V0Lm0yaTogYWRkZWQgdmFyaWFibGVzIG5hbWVzIHRvCisKKyB0aGUgZ2VuZXJhdGVkIGVycm9yIG1lc3NhZ2VzLgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyYWN0aXZlLXNldHVwLm0yYzogV29yZGluZyBjaGFuZ2VzIHRvCisKKyBoZWxwIGRlc2NyaWJlIGNvbnRleHRzIGJldHRlcgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9NYWtlZmlsZS5pbiwgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtZ2V0LVU2NC5tMmk6IEFkZGVkCisKKyB0aGUgbWlzc2luZyBVNjQgbTJpIGZpbGUKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBBIG5ldyBmdW5jdGlvbjogbnNzZnBhdGNoYXBwbHkKKworIHRoYXQgYXV0by1wdWxscyBnaXQgY29tbWFuZCBsaW5lIGluZm8gZnJvbSBTRgorCisyMDExLTA3LTE4ICBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KKworICAgKiBhZ2VudC9hZ2VudF90cmFwLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmM6IGFnZW50OiBjaGFuZ2UKKworIHR5cGUgb2Ygc25tcF9lbmFibGVhdXRoZW50cmFwcyB0byBsb25nIFR5cGUgb2Ygc25tcF9lbmFibGVhdXRoZW50cmFwcyB2YXJpYWJsZSBpcyBjaGFuZ2VkIGZyb20gaW50IHRvIGxvbmcuCisgVGhpcyBmaXhlcyB0aGUgYnVnIHdpdGggd3JpdGluZyB0byBzbm1wRW5hYmxlQXV0aGVuVHJhcHMgaWYgc2VydmVyCisgaXMgY29tcGlsZWQgZm9yIDY0Yml0IChzbm1wc2V0IHJlcG9ydHMgd3JvbmcgbGVuZ3RoKS4gVGhpcyBidWcgd2FzCisgaW50cm9kdWNlZCBhIGxvbmcgdGltZSBhZ28gKGJ5IGZhZWVjZDAgY29tbWl0KS4gIEFjdHVhbGx5IHRoaXMgaXMgYSAnbGVzcyBlZmZvcnQnIHR5cGUgb2YgZml4IGJ1dCBJIHdvbmRlciB3aHkgd2UKKyBuZWVkIGEgbG9uZyB0byBzdG9yZSBhbiBJTlRFR0VSIGluIHRoZSBmaXJzdCBwbGFjZT8gU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+IFNpZ25lZC1vZmYtYnk6IFdlcworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLWN0eC1nZXQubTJpOiBhZGRlZCB2YXJpYWJsZXMgbmFtZXMgdG8KKworIHRoZSBnZW5lcmF0ZWQgZXJyb3IgbWVzc2FnZXMuCisKKzIwMTEtMDgtMDIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pYjJjLWNvbmYuZC9tZmQtaW50ZXJhY3RpdmUtc2V0dXAubTJjOiBXb3JkaW5nIGNoYW5nZXMgdG8KKworIGhlbHAgZGVzY3JpYmUgY29udGV4dHMgYmV0dGVyCisKKzIwMTEtMDgtMDIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL01ha2VmaWxlLmluLCBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1nZXQtVTY0Lm0yaTogQWRkZWQKKworIHRoZSBtaXNzaW5nIFU2NCBtMmkgZmlsZQorCisyMDExLTA4LTAzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA2YWQ3ZTI4ZmY5ZTVlNGViYzEzNThlZTM5Y2M5Nzk2YTQ0YTFiZWU3IE1lcmdlOiBmMjgzMmUzCisKKyAxZTE1NGNlIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgV2VkIEF1ZworIDMgMTk6MTU6MjQgMjAxMSArMDIwMAorCisyMDExLTA4LTAzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA2MWIxNzhmMWVlODk1MmFhMDNhYTNiMWJhNTFmNGE2NjU1ZTQ3ZjAxIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFdlZCBBdWcgMyAxODowOTo0NyAyMDExICswMjAwCisKKzIwMTEtMDgtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvdHlwZXMuaDogV2hpdGVzcGFjZS1vbmx5IGNoYW5nZTogZml4IGluZGVudGF0aW9uCisKKyBvZiBhbiAjaW5jbHVkZSBkaXJlY3RpdmUKKworMjAxMS0wOC0wMiAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogcGVybC9OZXRTTk1QLnhzOiBDSEFOR0VTOiBQZXJsOiBSZW1vdmUgZmlsZSBwZXJsL05ldFNOTVAueHMKKworIGJlY2F1c2UgaXQgYnJlYWtzIHRoZSBXaW5kb3dzIGJ1aWxkLiAgVG8gV2VzOiBpZiB5b3UgY2FuIHRlbGwgbWUgaG93IHRvIHJlcHJvZHVjZSB0aGUgcHJvYmxlbSB5b3Ugb2JzZXJ2ZWQKKyBJJ2xsIHRyeSB0byBmaW5kIGEgcG9ydGFibGUgZml4LiAgVGhpcyByZXZlcnRzIGNvbW1pdCBkNTQ4NzFmNTI5MzY3NWM4MDU4ZWNjZTg4ZmVkNWI2NDZjODM2MzIzICgiQWRkZWQKKyBhIGJvZ3VzIGVtcHR5IC54cyBmaWxlIGZvciBidW5kbGluZyBvbiBuZXdlciBwZXJsIHRoYXQgd2FudHMKKyAic29tZXRoaW5nIiIpLgorCisyMDExLTA4LTAyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAwZjQ4OWIxOTlhZGFiNDhiMTYzM2ViY2FmNWZmNWE3YzIyYzRjYjg5IE1lcmdlOiBmNGVhYTAyCisKKyA3MmE1OWJjIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVHVlIEF1ZworIDIgMTA6MTE6NTMgMjAxMSArMDIwMAorCisyMDExLTA4LTAyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA3ZmNjMGI4MDMyZjhkYTViN2JjMzAwNTlhZjBiYTY1NmVhZTcxMDkxIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIE1vbiBBdWcgMSAxNDoxMToyOCAyMDExICswMjAwCisKKzIwMTEtMDgtMDIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXQKKyAgICAgICBhX2FjY2Vzcy5jOiBGaXggYSBjb21waWxlciB3YXJuaW5nIGluCisKKworIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5jCisKKzIwMTEtMDgtMDEgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIC5naXRpZ25vcmU6IC5naXRpZ25vcmU6IEFkZCBmaWxlIG5hbWVzIGFuZCBwYXR0ZXJucyBmb3Igb3V0cHV0CisKKyBmaWxlcyBnZW5lcmF0ZWQgZHVyaW5nIHRoZSBXaW5kb3dzIGJ1aWxkCisKKzIwMTEtMDctMjkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIC5naXRpZ25vcmU6IC5naXRpZ25vcmU6IFNvcnQgYWxwaGFiZXRpY2FsbHkKKworCisyMDExLTA3LTI5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAuZ2l0aWdub3JlOiAuZ2l0aWdub3JlOiBBZGQgYXBwcy9zc2h0b3NubXAKKworCisyMDExLTA4LTAxICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAgLmdpdGlnbm9yZSwgcGVybC9UcmFwUmVjZWl2ZXIvY29uc3QtYy5pbmMsIAorICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvY29uc3QteHMuaW5jOiBSZW1vdmUgdHdvIGdlbmVyYXRlZCBQZXJsIGZpbGVzLgorCisKKzIwMTEtMDgtMDIgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGY0ZWFhMDJkOWIwNzZhNjdkNzI3MmRlN2VlZjhlOWRmYmYxODliYmYgTWVyZ2U6IDQwMTI1ZDgKKworIGFkYWRjYjkgQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUdWUgQXVnIDIgMDA6NTc6NTEgMjAxMSArMDIwMAorCisyMDExLTA4LTAyICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBkaXN0L25zYi1mdW5jdGlvbnM6IHN1cHByZXNzICJvayIgdGVzdCBvdXRwdXQgaW4gbnNiCisKKworMjAxMS0wOC0wMSAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDQwMTI1ZDg1MzljZDg5Zjk1MmZiYzI0NTg4YzVlODFlOWNkODIxZmUgQXV0aG9yOiBKYW4KKworIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIE1vbiBBdWcgMQorIDEzOjU4OjMzIDIwMTEgKzAyMDAKKworMjAxMS0wOC0wMSAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgNWFjZjBkMmNlYjM5Nzc5NjRlZDM5ZjAwMzA3M2JhNjQxMzhjMmViZCBBdXRob3I6IFRob21hcworCisgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBTdW4gSnVsIDMxIDIzOjU3OjQxCisgMjAxMSArMDIwMAorCisyMDExLTA3LTMxICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBhNzcyMmE4MWY5Y2I3YWE4NjcwZTdjMjM4NjAxMzYyYTMxMDg3YWNjIE1lcmdlOiAyNDJlMTc5CisKKyBhZTlhYzZjIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgU3VuIEp1bAorIDMxIDA5OjExOjQ1IDIwMTEgKzAyMDAKKworMjAxMS0wNy0zMSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogYXBwcy9zc2h0b3NubXAuYzogRml4IGFuIGluY29ycmVjdCBzb3VyY2UgY29kZSBjb21tZW50OiB0aGVyZSBpcworCisgbm8gcmVxdWlyZW1lbnQgaW4gdGhlIEFOU0kgQyBzdGFuZGFyZCB0aGF0IHN0YWNrIHZhcmlhYmxlcyBzaG91bGQgYmUKKyBpbml0aWFsaXplZCB0byB6ZXJvLgorCisyMDExLTA3LTMxICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCAyNDJlMTc5N2IyNjk0YTA2ODk4NTZhZTM2ZDA1ZDM0MTNhYWY4ZDc3IEF1dGhvcjogVGhvbWFzCisKKyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFN1biBKdWwgMzEgMDE6NDQ6MDkKKyAyMDExICswMjAwCisKKzIwMTEtMDctMzAgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc3lzdGVtLmM6IENIQU5HRVM6IGJ1aWxkaW5nOiBidWlsZCBmaXggZm9yIHN5c3RlbXMgbGFja2luZworCisgZ2V0YWRkcmluZm8oKSBhbmQgRUFJX0ZBSUwgKGUuZy4gSFAtVVggMTAuMjAvMTEuMDApCisKKzIwMTEtMDctMzAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDE4ZGY3NTlmMTliOTc1YzQ0OWQwMTBiYjBhMTYyMTE5YmI2ODM2MGQgTWVyZ2U6IDU0YTQ0Y2IKKworIDcwNTA3MTggQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBTYXQgSnVsCisgMzAgMTY6Mzk6MTMgMjAxMSArMDIwMAorCisyMDExLTA3LTMwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA4MmQ3M2ZiMTFiZTNhZTMxZjM5YzlkNjE4ZDUzODhkYzliMTAwNmQ3IEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIEZyaSBKdWwgMjkgMjA6NTE6MjcgMjAxMSArMDIwMAorCisyMDExLTA3LTMwICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgY29uZmlndXJlLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiBhdXRvcmVjb25mCisKKworMjAxMS0wNy0zMCAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGNvbmZpZ3VyZSwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogYXV0b3JlY29uZgorCisKKzIwMTEtMDctMzAgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDEwOWY2Njk0ZDc4OGY0OGViZDlmYzBhMWU5MGM0NWFiYzM3YmVhMjAgQXV0aG9yOiBUaG9tYXMKKworIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgU2F0IEp1bCAzMCAxNDoyMjoxOQorIDIwMTEgKzAyMDAKKworMjAxMS0wNy0zMCAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgN2Q4MTAwZWVkNDU5YTFmZjFhMjBjMDY3MzY0ZmE2Y2I0NzQ5MTMwOSBNZXJnZTogMTE2YzI0ZgorCisgOWU0N2FjNCBBdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFNhdCBKdWwgMzAgMDA6MjA6MDEgMjAxMSArMDIwMAorCisyMDExLTA3LTMwICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBkaXN0L25zYi1mdW5jdGlvbnMsIGRpc3QvbnNiLW5pZ2h0bHksIGRpc3QvbnNiLXBhY2thZ2U6IG1pbm9yIG5zYgorCisgZml4ZXMvZW5oYW5jZW1lbnRzIGZyb20gbXkgb2xkIHN2biB0cmVlCisKKzIwMTEtMDctMjkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDExNmMyNGYwZjdmYjNmOTliYTY0NjczMGY2MWM1NmQxYWUyM2JhNDEgTWVyZ2U6IDk4MmZiN2YKKworIDRmYzBiOGIgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBGcmkgSnVsCisgMjkgMTE6MzE6MjAgMjAxMSArMDIwMAorCisyMDExLTA3LTI5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBjNDgxNzNjMDZhOWVhYWRiZjgxZTZiNDk2MmQ1NWVmMGE1NGRiMjUxIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIEZyaSBKdWwgMjkgMTA6Mjc6MzkgMjAxMSArMDIwMAorCisyMDExLTA3LTI5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBjb25maWd1cmUsIGx0bWFpbi5zaCwgbTQvbGlidG9vbC5tNDogUmVydW4gYXV0b3JlY29uZgorCisKKzIwMTEtMDctMjkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIC5naXRpZ25vcmU6IC5naXRpZ25vcmU6IFNvcnQgYWxwaGFiZXRpY2FsbHkKKworCisyMDExLTA3LTI5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAuZ2l0aWdub3JlOiAuZ2l0aWdub3JlOiBBZGQgYXBwcy9zc2h0b3NubXAKKworCisyMDExLTA3LTI5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocmhfc3RvcmFnZS5jOiBGaXggdHdvIGZpbGVuYW1lcyBpbiBob3N0IG1pYgorCisgc291cmNlIGNvZGUgY29tbWVudHMuCisKKzIwMTEtMDctMjggIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA5ODJmYjdmZDhiYWIyNWM0MzIyYWE2MmM1MDQzNzAzNmNlMjk2ZTNlIE1lcmdlOiAxZWRhNjc1CisKKyAzNDU4MTI4IEF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFRodSBKdWwgMjggMTY6MjQ6MDMgMjAxMSArMDIwMAorCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jOiBGaXggcG90ZW50aWFsCisKKyBzaWdzZWd2IHdoZW4gYW4gaWZUYWJsZSBlbnRyeSBpcyByZW1vdmVkIGFzIHJlc3VsdCBvZiBib3RoCisgaW50ZXJmYWNlX3JlcGxhY2Vfb2xkIGFuZCBpbnRlcmZhY2VfZmFkZW91dCBhdCB0aGUgc2FtZSB0aW1lLgorCisyMDExLTA3LTI4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBhcHBzL3NzaHRvc25tcC5jOiBNYWtlIGFwcHMvc3NodG9zbm1wLmMgYnVpbGQgYWdhaW4gKHdhcyBicm9rZW4gYnkKKworIGNvbW1pdCA2MTIyNDdjZGYxNGMxZTc0NWMzODRjZWZlMWYzZmRlM2U0NDViMzQ3IHRoYXQgY2hhbmdlZAorIE1TR19OT1NJR05BTCBpbnRvIE5FVFNOTVBfTk9TSUdOQUwpCisKKzIwMTEtMDctMjggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDFlZGE2NzUzYjdmZTdkM2IzZjIxN2MwOTI1NGVjMDJkMGVlMWQwY2UgTWVyZ2U6IGRiOGI4NjAKKworIGEyZjllY2UgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUaHUgSnVsCisgMjggMTU6MzI6MjggMjAxMSArMDIwMAorCisyMDExLTA3LTI4ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBjb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczE6IAorCisgQ0hBTkdFUzogc25tcGQ6IFJlc3RvcmUgc3RvcmFnZSB0YWJsZXMgb24gTGludXgKKworMjAxMS0wNy0yOCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9zbm1wZC5jb25mLjUuZGVmOiBEb2N1bWVudCBpbnRlcmZhY2VfcmVwbGFjZV9vbGQgb3B0aW9uLgorCisKKzIwMTEtMDctMjggIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmM6IENIQU5HRVM6CisKKyBzbm1wZDogYWRkZWQgJ2ludGVyZmFjZV9yZXBsYWNlX29sZCcgb3B0aW9uIHRvIHJlbW92ZSBvbGQgZW50cmllcyBpbgorIGlmVGFibGUgd2hlbiBhbiBpbnRlcmZhY2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIGFscmVhZHkgZXhpc2luZyBvbmUKKyBhcHBlYXJzLiAgRS5nLiByZW1vdmUgb2xkIHBwcDAgaW50ZXJmYWNlIHdoZW4gbmV3IHBwcDAgc2hvd3MgdXAuCisKKzIwMTEtMDctMjggIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBtYW4vc25tcGQuY29uZi41LmRlZjogRG9jdW1lbnQgdGhlIGludGVyZmFjZV9mYWRlb3V0IG9wdGlvbi4KKworCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jOiBBbGxvdyBpZlRhYmxlCisKKyBlbnRyaWVzIHRvIGJlIGRlbGV0ZWQgaW1tZWRpYXRlbHkgd2hlbiBhcHByb3ByaWF0ZSBpbnRlcmZhY2UKKyBkaXNhcHBlYXJzIChpLmUuIGludGVyZmFjZV9mYWRlb3V0ID0gMCB3b3JrcyBhcyBleHBlY3RlZCkuCisKKzIwMTEtMDctMjggIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmM6IENIQU5HRVM6CisKKyBzbm1wZDogYWRkZWQgJ2ludGVyZmFjZV9mYWRlb3V0JyBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBzZXQKKyBsaWZldGltZSBvZiBpZlRhYmxlIGVudHJpZXMgb2YgcmVtb3ZlZCBpbnRlcmZhY2VzLiAgUHJldmlvdXMgbGlmZXRpbWUgd2FzIGhhcmRjb2RlZCA1IG1pbnV0ZXMsIG5vdyBpdCdzIGNvbmZpZ3VyYWJsZS4KKworMjAxMS0wNy0yOCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGQ2MmEwZWI5MDcwYjRkOGQ5ZmUyYmNmZGI0ZDUzZDM3ZWY4MTRmOWIgQXV0aG9yOiBKYW4KKworIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFRodSBKdWwgMjgKKyAxNDo0OTowOCAyMDExICswMjAwCisKKzIwMTEtMDctMjggIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmM6IENIQU5HRVM6CisKKyBzbm1wZDogYWRkZWQgJ2ludGVyZmFjZV9yZXBsYWNlX29sZCcgb3B0aW9uIHRvIHJlbW92ZSBvbGQgZW50cmllcyBpbgorIGlmVGFibGUgd2hlbiBhbiBpbnRlcmZhY2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIGFscmVhZHkgZXhpc2luZyBvbmUKKyBhcHBlYXJzLiAgRS5nLiByZW1vdmUgb2xkIHBwcDAgaW50ZXJmYWNlIHdoZW4gbmV3IHBwcDAgc2hvd3MgdXAuCisKKzIwMTEtMDctMjggIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBtYW4vc25tcGQuY29uZi41LmRlZjogRG9jdW1lbnQgdGhlIGludGVyZmFjZV9mYWRlb3V0IG9wdGlvbi4KKworCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jOiBBbGxvdyBpZlRhYmxlCisKKyBlbnRyaWVzIHRvIGJlIGRlbGV0ZWQgaW1tZWRpYXRlbHkgd2hlbiBhcHByb3ByaWF0ZSBpbnRlcmZhY2UKKyBkaXNhcHBlYXJzIChpLmUuIGludGVyZmFjZV9mYWRlb3V0ID0gMCB3b3JrcyBhcyBleHBlY3RlZCkuCisKKzIwMTEtMDctMjggIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmM6IENIQU5HRVM6CisKKyBzbm1wZDogYWRkZWQgJ2ludGVyZmFjZV9mYWRlb3V0JyBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBzZXQKKyBsaWZldGltZSBvZiBpZlRhYmxlIGVudHJpZXMgb2YgcmVtb3ZlZCBpbnRlcmZhY2VzLiAgUHJldmlvdXMgbGlmZXRpbWUgd2FzIGhhcmRjb2RlZCA1IG1pbnV0ZXMsIG5vdyBpdCdzIGNvbmZpZ3VyYWJsZS4KKworMjAxMS0wNy0yOCAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFwcHMvc3NodG9zbm1wLmMsIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaCwgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYzogQ0hBTkdFUzogYnVpbGRpbmc6IGJ1aWxkCisgICAgICBmaXgKKworIGZvciBzeXN0ZW1zIGxhY2tpbmcgTVNHX0RPTlRXQUlUCisKKzIwMTEtMDctMjcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3RjcC5jOiBDSEFOR0VTOiBzbm1wZDogTWFrZQorCisgVENQLU1JQjo6dGNwQ3VyckVzdGFiIHdvcmsgYWdhaW4uIFdhcyBicm9rZW4gaW4gNS43IGJ5IHRoZQorIGludHJvZHVjdGlvbiBvZiB0aGUgImZlYXR1cmVzIiBmZWF0dXJlLgorCisyMDExLTA3LTI3ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgZmI4ODA3NGZiYmMyNjhjN2YwNTA5NDkxNTM1YWVjNWZlY2IwNTY4NCBNZXJnZTogYTc0M2FlNQorCisgMzgyMTI3MyBBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBXZWQgSnVsIDI3IDE0OjQ3OjI1IDIwMTEgKzAyMDAKKworMjAxMS0wNy0yNyAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDMxZmEwN2NkOWZmZGU0NmQ0MWQyYjU4MzhjM2ZjNGQwMTU0OGJmYjUgQXV0aG9yOiBKYW4KKworIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFdlZCBKdWwgMjcKKyAxNDo0NTo0NyAyMDExICswMjAwCisKKzIwMTEtMDctMjcgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9zbm1wZC5jOiBDSEFOR0VTOiBzbm1wZDogcnVuIHNpZ25hbCBoYW5kbGVycyB3aGVuIHNlbGVjdCgpCisKKyBpcyBpbnRlcnJ1cHRlZC4gIFRoaXMgYmVoYXZpb3IgaXMgaW5kaWNhdGVkIGluIGNvbW1lbnQgb24gbGluZSAxMjQ0LCBidXQgaXQgd2FzIG5vdAorIGFjdHVhbGx5IGRvbmUuCisKKzIwMTEtMDctMjYgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDJlOTQ2NmQ3ZjU5ZDY1ZDA1MDI3NzczNWU0ZWQ5ZDMwNzE5ZmY3NTIgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVHVlIEp1bCAyNiAxMzoxMDowNCAyMDExICswMjAwCisKKzIwMTEtMDctMjYgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDc3MDgyOTY3NjBlYWY1YTgwZDg1NDA3NDZjOWMyNDk4MjZmZDFiZmUgTWVyZ2U6IGVhMTFlNWUKKworIGNkNmUzODIgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUdWUgSnVsCisgMjYgMTY6MjE6NDEgMjAxMSArMDIwMAorCisyMDExLTA3LTI2ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmM6IENsYXJpZnkgYW4gSVB2NiBzb3VyY2UgY29kZSBjb21tZW50CisKKworMjAxMS0wNy0yNiAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogYWdlbnQvYWdlbnRfaGFuZGxlci5jLCBtYW4vbmV0c25tcF9oYW5kbGVyLjM6IFNwZWxsaW5nIGZpeDoKKworIGRlZmluZWR5IC0+IGRlZmluZWQKKworMjAxMS0wNy0yNiAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jLCBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zOiBTcGVsbGluZworCisgZml4OiBhbGV2aWF0ZSAtPiBhbGxldmlhdGUKKworMjAxMS0wNy0yNiAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGRkMmM0NzEzMzQ5M2Q1YTAwZGU2YjNjZGJjZmFjN2U5ZDQ0YjZmZmUgTWVyZ2U6IGY5Y2NiYzcKKworIGVhMTFlNWUgQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVHVlIEp1bCAyNiAxNDoyNToyOCAyMDExICswMjAwCisKKzIwMTEtMDctMjYgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBjNWE4NDY0YzQyYTk0YzI1MGVlMmRmYTJhNDczMTA5YTczNDIwM2Q4IEF1dGhvcjogSmFuCisKKyBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBUdWUgSnVsIDI2CisgMTQ6MjQ6NTUgMjAxMSArMDIwMAorCisyMDExLTA3LTI1ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgZjljY2JjNzcyNjY2MTM0ZDFkMTc4YjUwNWFmOWRkY2RkOWVkNDI0NCBBdXRob3I6IEphbgorCisgU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgTW9uIEp1bCAyNQorIDE1OjAyOjE1IDIwMTEgKzAyMDAKKworMjAxMS0wNy0yMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgYjBjMGEzNTVkNWY2MDFhMTFiZTQ5MTRmYmY3MTM3MTZhYmQzMGEyOSBBdXRob3I6IFdlcworCisgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBUdWUgSnVsIDE5CisgMTg6MzY6MTEgMjAxMSAtMDcwMAorCisyMDExLTA3LTIwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBjMTRmYzM4NjE0YmFmMTBkNTE3MTM2ZjA0ODA5MDdiN2YwM2Q4ZDc0IEF1dGhvcjogV2VzCisKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFdlZCBKdWwgMjAKKyAxMzo0NDo1OSAyMDExIC0wNzAwCisKKzIwMTEtMDctMTkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3Rlc3RoYW5kbGVyLmM6IHJlbW92ZSBicm9rZW4gd2hpdGVzcGFjZSBsaW5lcyB0aGF0CisKKyBsZWFkcyB0byByZWFkaW5nIGNvbmZ1c2lvbgorCisyMDExLTA3LTIwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBlYmRkMjE2YzA3NGJmNDFjZDNhMDg0YmQxNDY4OWNmMDFjODg3YjMxIEF1dGhvcjogV2VzCisKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFR1ZSBKdWwgMTkKKyAxODozNjoxMSAyMDExIC0wNzAwCisKKzIwMTEtMDctMTkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIC5naXRpZ25vcmU6IHVwZGF0ZWQgZ2l0aWdub3JlIHRvIGlnbm9yZSBhIG51bWJlciBvZiBhdXRvLWdlbmVyYXRlZAorCisgZmlsZXMKKworMjAxMS0wNy0xOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdGVzdGhhbmRsZXIuYzogcmVtb3ZlIGJyb2tlbiB3aGl0ZXNwYWNlIGxpbmVzIHRoYXQKKworIGxlYWRzIHRvIHJlYWRpbmcgY29uZnVzaW9uCisKKzIwMTEtMDctMTkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGRmNWY3MDA1NWNmOWJlMzNmMDVmYjUwYWJlMmY1YTgxZWFjMDkyYWQgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVHVlIEp1bCAxOSAxMTowNzoxOSAyMDExICswMjAwCisKKzIwMTEtMDctMTkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGY1OTZmMTgyNDJkY2RmZDZjZjQ5Yzg4ZGExZDgzNmMxNmUyNjBjYWMgTWVyZ2U6IDBmMzA5YjQKKworIDcwZGVlNGIgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUdWUgSnVsCisgMTkgMTE6MzM6MjggMjAxMSArMDIwMAorCisyMDExLTA3LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAgYWdlbnQvYWdlbnRfdHJhcC5jLCBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliXzVfNS5jOiBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6CisgICAgICAzMzY5NjgwOgorCisgZnJvbSBJbHlhIFlhbm9rOiBjaGFuZ2Ugc25tcF9lbmFibGVhdXRoZW50cmFwcyBmcm9tIGludCB0byBsb25nIHN1Y2gKKyB0aGF0IG1vZGlmeWluZyB0aGUgY29ycmVzcG9uZGluZyBNSUIgb2JqZWN0IGRvZXMgbm90IG92ZXJ3cml0ZQorIG1lbW9yeSBpbiA2NC1iaXQgYnVpbGRzLgorCisyMDExLTA3LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYzogQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAzMzcwNjQ1OgorCisgZnJvbSBCaWxsIEZlbm5lcjogRml4IEFnZW50WCBzdWJhZ2VudCBmb3VyIGJ5dGUgbGVhaworCisyMDExLTA3LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBUZXN0IGhhcm5lc3M6IGRvCisKKyBub3QgaW52b2tlIElTUlVOTklORygpIG9uIE1pbkdXLgorCisyMDExLTA3LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBUZXN0IGhhcm5lc3M6CisKKyBjbGVhbnVwIC0gcmVtb3ZlIGNvZGUgdGhhdCBiZWNhbWUgc3VwZXJmbHVvdXMuCisKKzIwMTEtMDctMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IE1pbkdXOiBEbyBub3QKKworIGFzc3VtZSB0aGF0IGtpbGwuZXhlIHJlcG9ydHMgdmlhIGl0cyBleGl0IHN0YXR1cyB3aGV0aGVyIHRoZQorIHNpZ25hbGxlZCBwcm9jZXNzIHN0aWxsIGV4aXN0cy4KKworMjAxMS0wNy0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDogQ0hBTkdFUzogdGVzdGluZzoKKworIFJlbW92ZSB0aGUgZnVuY3Rpb24gV0FJVE9SRElFKCkgZnJvbSBzaW1wbGVfZXZhbF90b29scy5zaCBzaW5jZSBpdAorIGlzIG5ldmVyIGludm9rZWQuCisKKzIwMTEtMDctMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IENIQU5HRVM6IHRlc3Rpbmc6CisKKyBTaW1wbGlmeSBXQUlURk9SKCkgaW4gc2ltcGxlX2V2YWxfdG9vbHMuc2guIFRoZSBjb2RlIHRoYXQgaGFuZGxlZAorIGludm9jYXRpb24gb2YgV0FJVEZPUigpIHdpdGggemVybyBvciBvbmUgYXJndW1lbnRzIGhhcyBiZWVuIGRyb3BwZWQKKyBzaW5jZSBXQUlURk9SKCkgaXMgYWx3YXlzIGludm9rZWQgd2l0aCB0d28gYXJndW1lbnRzLgorCisyMDExLTA3LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBUZXN0IGhhcm5lc3M6CisKKyBtaW5vciBzaW1wbGlmaWNhdGlvbi4KKworMjAxMS0wNy0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU5dHJhcGR0cmFwaGFuZGxlX3NpbXBsZTogQ0hBTkdFUzoKKworIHRlc3Rpbmc6IFNraXAgdGVzdCA1OSBpZiBTSUdIVVAgaXMgbm90IHN1cHBvcnRlZC4gTWFrZXMgdGVzdCA1OSBwYXNzCisgb24gTWluR1cuCisKKzIwMTEtMDctMDYgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IE1pbkdXIGZpeAorCisKKzIwMTEtMDctMDYgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IFRlc3QgZnJhbWV3b3JrCisKKyByZWZhY3RvcmluZzogSW50cm9kdWNlIFdBSVRGT1JOT1RDT05EKCkuCisKKzIwMTEtMDctMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IENIQU5HRVM6IHRlc3Rpbmc6CisKKyBNYWtlIFNUT1BQUk9HIHNlbmQgU0lHVEVSTSByZXBlYXRlZGx5LiBUaGlzIGZpeGVzIGEgcmFjZSB3aGVyZQorIFNJR1RFUk0gY291bGQgYmUgc2VudCBiZWZvcmUgdGhlIFNJR1RFUk0gc2lnbmFsIGhhbmRsZXIgd2FzIHNldCB1cCwKKyBlc3BlY2lhbGx5IHdoZW4gcnVubmluZyB0aGUgcmVncmVzc2lvbiB0ZXN0cyB1bmRlciBWYWxncmluZC4KKyBDSEFOR0VTOiB0ZXN0aW5nOiBNYWtlIHRoZSBTTk1QX1ZFUkJPU0U9MSBvdXRwdXQgZXZlbiBtb3JlIHZlcmJvc2UuCisKKzIwMTEtMDctMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IFRlc3QgaGFybmVzcworCisgcmVmYWN0b3Jpbmc6IGludHJvZHVjZSBFQ0hPU0VORFNJR1RFUk0oKSBhbmQgRUNIT1NFTkRTSUdLSUxMKCkKKworMjAxMS0wNy0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDogRml4IGEgYnVnIGluCisKKyB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoIHRoYXQgd2FzIGludHJvZHVjZWQKKyBpbiBjb21taXQgOTM4ZDc1Yy4KKworMjAxMS0wNy0wMSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogLmdpdGlnbm9yZTogLmdpdGlnbm9yZTogSWdub3JlICouZXhlIGZpbGVzIGdlbmVyYXRlZCBieSB0aGUgV2luMzIKKworIGJ1aWxkCisKKzIwMTEtMDctMDQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IENIQU5HRVM6IHRlc3Rpbmc6CisKKyBUZXN0IG9ubHkgb25jZSBkdXJpbmcgYSB0ZXN0IHdoZXRoZXIgdGhlIHNoZWxsIHN1cHBvcnRzIHN1Yi1zZWNvbmQKKyBzbGVlcGluZyBpbnN0ZWFkIG9mIHJlcGVhdGVkbHkuCisKKzIwMTEtMDctMDQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX3J1bjogQ0hBTkdFUzogdGVzdGluZzogQ2hhbmdlZAorCisgZGVmYXVsdCB0aW1lb3V0IGZyb20gMXMgdG8gMTBzIHdoZW4gdGhlIHJlZ3Jlc3Npb24gdGVzdHMgYXJlIHJ1bgorIHVuZGVyIFZhbGdyaW5kCisKKzIwMTEtMDctMDQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IENIQU5HRVM6IHRlc3Rpbmc6CisKKyBBZnRlciBoYXZpbmcgc2VudCBTSUdURVJNIHRvIHNubXBkIG9yIHNubXB0cmFwZCwgd2FpdCB1bnRpbCB0aGUKKyBwcm9jZXNzIGhhcyBzdG9wcGVkIGJlZm9yZSBzZW5kaW5nIFNJR0tJTEwuIFRoaXMgcmFjZSBjb25kaXRpb24gd2FzCisgaGl0IG1vc3QgZWFzaWx5IHdoZW4gcnVubmluZyB0aGUgcmVncmVzc2lvbiB0ZXN0cyB1bmRlciBWYWxncmluZC4KKyBDSEFOR0VTOiB0ZXN0aW5nOiBDaGVjayBQSUQgZmlsZSBleGlzdGVuY2UgYWZ0ZXIgaGF2aW5nIHJlYWQgaXQKKyBpbnN0ZWFkIG9mIGJlZm9yZS4gVGhpcyBmaXhlcyB0aGUgcmFjZSBjb25kaXRpb24gd2hlcmUgdGhlIFBJRCBmaWxlCisgZGlzYXBwZWFyZWQgYWZ0ZXIgdGhlIGV4aXN0ZW5jZSBjaGVjayBhbmQgYmVmb3JlIGl0IHdhcyByZWFkLgorCisyMDExLTA2LTE3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYzogRml4IGEgYnVnIGluIGEgZGVidWcgc3RhdGVtZW50CisKKyBpbnRyb2R1Y2VkIGJ5IHBhdGNoIDMzMTAyNTAgLyByMjA0OTQ6IHVzZSAlbGQgdG8gcHJpbnQgYSB2YWx1ZSBvZgorIHR5cGUgb2lkIGluc3RlYWQgb2YgJWQuICBUaGlzIHBhdGNoIGlzIGEgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyB0byBWNS42IFNWTiBwYXRjaGVzOiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNTExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA1MTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDctMTkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDBmMzA5YjQ5M2MyMWQzYzY5MTQ0ODc1MTRiNDE1NjA3NTRmZmNkZjkgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVHVlIEp1bCAxOSAwODozNzo1MCAyMDExICswMjAwCisKKzIwMTEtMDctMTkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDFiNzQ1NGJjMjgxNTY4NDcwYTEzMDA0NzZkMmVkYjRmNDExZTYwMjkgTWVyZ2U6IDhkOWRjYzgKKworIDY5MGVhN2QgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUdWUgSnVsCisgMTkgMDg6MzE6MjggMjAxMSArMDIwMAorCisyMDExLTA3LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBhcHBzL3NubXB0cmFwZC5jOiBDSEFOR0VTOiBzbm1wdHJhcGQ6IEFkZCBtaXNzaW5nIG5ld2xpbmUKKworIGNoYXJhY3RlciBpbiBhIGxvZyBtZXNzYWdlCisKKzIwMTEtMDctMTkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGFwcHMvc25tcHRyYXBkLmM6IENIQU5HRVM6IHNubXB0cmFwZDogSW52b2tlIHNodXRkb3duX3BlcmwoKSB3aGVuCisKKyBzaHV0dGluZyBkb3duCisKKzIwMTEtMDctMTkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYzogU3BlbGxpbmcgZml4OiBicmFua2V0IC0+IGJyYWNrZXQKKworCisyMDExLTA3LTE3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBjb25maWd1cmUsIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46IFJ1biBhdXRvcmVjb25mLgorCisgRml4ZXMgYnVpbGQgYnJlYWthZ2UgY2F1c2VkIGJ5IHBhdGNoCisgZDU4OGVjODUzYmQwNTMxZjIxMmZjYmY1MWI5NjJiOTZjNjgyOGI1OSAoUlBNIDQuOSBzdXBwb3J0KQorCisyMDExLTA3LTE3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBkNjE3ZDg0ZjgzZmE2OWVkOWZhOWY5OGVmYzRhZmFmODgwZDEyMWYyIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFRodSBKdWwgMTQgMTY6NDM6NDcgMjAxMSArMDIwMAorCisyMDExLTA3LTE0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmM6IENIQU5HRVM6IHNubXBsaWI6IE1ha2UKKworIG5ldHNubXBfaXB2Nl9mbXRhZGRyKCkgc2hvdyB0aGUgSVB2NiBzY29wZSBJRAorCisyMDExLTA3LTE3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5jLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiBDSEFOR0VTOiBXaW4zMjogQWRkIHN1cHBvcnQKKyAgICAgIGZvcgorCisgSVB2NiBhZGRyZXNzIHNjb3BlIElECisKKzIwMTEtMDctMTcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGNvbmZpZ3VyZSwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogUnVuIGF1dG9yZWNvbmYKKworCisyMDExLTA3LTE3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBhNTY3MjFhM2U3NzU0ZTM4OWRhYTdlOGEzZDU3OTI4OTllZGM5ZGUzIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFRodSBKdWwgMTQgMTY6MTg6MzIgMjAxMSArMDIwMAorCisyMDExLTA3LTE1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA4NDRkNGNlODY3YmYzYWJlN2I3NTM2YzVkYmZiYTQwMTkzN2E4ZDRhIE1lcmdlOiBlZWQwMTk4CisKKyA2MTAzNmE4IEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgRnJpIEp1bCAxNSAxNTozMzoxMCAyMDExIC0wNzAwCisKKzIwMTEtMDctMTUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDg1MWJjZjUzZmNkMTNjZGYwYmE5ZjEyZTVkNjAzZTczZjhiYjk2MTEgQXV0aG9yOiBXZXMKKworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgRnJpIEp1bCAxNQorIDE1OjMyOjQ5IDIwMTEgLTA3MDAKKworMjAxMS0wNy0xNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmM6IGZpeCBhIHR5cG8KKworCisyMDExLTA3LTEzICBSb2JlcnQgU3RvcnkgPHJzdG9yeUBsb2NhbGhvc3Q+CisKKyAgICogc25tcGxpYi9wYXJzZS5jOiBDSEFOR0VTOiBzbm1wbGliOiAgdHdlYWsgcGF0Y2ggMzA0NDg4OCB0byByZXN0b3JlCisKKyBwcm9wZXIgbm9uLWVycm9yIHJldHVybiBkdXJpbmcgbWliIGxvYWRpbmcKKworMjAxMS0wNy0xMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBhZGRlZCA1LjcgcGF0Y2hlcyB0byB0aGUgYnJhbmNoIGxpc3QgYW5kIGZpeCB0aGUgcmVsZWFzZSBmaWxlCisKKworMjAxMS0wNy0xMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBhZGRlZCA1LjcgcGF0Y2hlcyB0byB0aGUgYnJhbmNoIGxpc3QKKworCisyMDExLTA3LTExICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBkaXN0L3JlbGVhc2U6IGEgY29weSBvZiB0aGUgcmVsZWFzZSBmaWxlIGFwcGxpZWQgdG8gdGhlIG9sZGVyCisKKyBicmFuY2hlcworCisyMDExLTA3LTExICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGFkZGVkIDUuNyBwYXRjaGVzCisKKworMjAxMS0wNy0xMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgYzQzMTIzMWU4ZjBhMzlkMTk1MGJjNzJjMzJlMzQwMmY5MGZhODAzMCBNZXJnZTogNTZmZWU0MAorCisgYTJhYzI0ZCBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIE1vbiBKdWwgMTEgMTk6MzM6MTcgMjAxMSAtMDcwMAorCisyMDExLTA3LTExICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGFkZGVkIGEgY29weSBvZiB0aGUKKworIHNoZWxsLWZ1bmN0aW9ucyB0byB0aGUgb2xkZXIgYnJhbmNoCisKKzIwMTEtMDctMTEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGRpc3QvcmVsZWFzZTogYSBjb3B5IG9mIHRoZSByZWxlYXNlIGZpbGUgYXBwbGllZCB0byB0aGUgb2xkZXIKKworIGJyYW5jaGVzCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ2hhbmdlczogVjUuNy5yYzMgLT4gVjUuNworCisyMDExLTA3LTAxICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAKKyAgICAgIGRpc3QvbmV0LXNubXAuc3BlYzogVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjcKKworCisyMDExLTA3LTAxICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVExTQmFzZURvbWFpbi5oLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4uYzogUmV2ZXJ0ICJmaXggZHRsc3VkcAorCisgdHJhbnNwb3J0IGFkZHJlc3MgZm9ybWF0IGZ1bmN0aW9uIiBUaGlzIHJldmVydHMgY29tbWl0IDJhYjNhNmU2ZjJmY2MxZmYzZTVmMGZiNWRjNWQwNWU0OTg4MjBkODkuICAgLSBmb3Igc29tZSByZWFzb24gSSBzYXcgJ3JjJyBhbmQgbXkgYnJhaW4gaW50ZXJwcmV0ZWQgaXQgYXMgICAgJ3ByZS1yZWxlYXNlJy4gV2hhdCBjYW4gSSBzYXksIGl0IHdhcyBsYXRlLiA6LS8KKworMjAxMS0wNy0wMSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAbG9jYWxob3N0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRMU0Jhc2VEb21haW4uaCwgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmM6IGZpeCBkdGxzdWRwIHRyYW5zcG9ydAorCisgYWRkcmVzcyBmb3JtYXQgZnVuY3Rpb24gIC0gdXBkYXRlIGlwdjQgZm10YWRkciB0byBoYW5kbGUgc29ja2FkZHIgYW5kIHRvIGNoZWNrICAgIHNpemUgYmVmb3JlIGFzc3VtaW5nIGRhdGEgaXMgYWRkciBwYWlyICAtIG1vdmUgZHRsc3VkcCBmdW5jdGlvbnMgdG8gZXh0cmFjdCBhZGRyKHMpIHRvIHRsc2Jhc2UKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6IGZpeCB0YWcgcHVzaGluZworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NoYW5nZXM6IFY1LjcucmMyIC0+IFY1LjcucmMzCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsCisJZGlzdC9uZXQtc25tcC5zcGVjOiBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNy5yYzMKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGRpc3QvbWFrZXJlbGVhc2UueG1sOiByZW1vdmUgdW5uZWVkZWQgY29tbWVudAorCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogZGlzdC9tYWtlcmVsZWFzZS54bWw6IG1pc2MgcHVibGljYXRpb24gZml4ZXMgZm91bmQgd2hpbGUKKwlwdWJsaXNoaW5nCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiByYW4gYXV0b2hlYWRlciB0byBhZGQgdGhlCisJbWlzc2luZyB0ZW1wbGF0ZSBpZmRlZnMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDaGFuZ2VzOiBWNS43LnJjMSAtPiBWNS43LnJjMgorCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogZGlzdC9tYWtlcmVsZWFzZS54bWw6IHVzZSB0aGUgbmV3IHJ1bi1hdXRvY29uZiBzY3JpcHQKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGRpc3QvcnVuLWF1dG9jb25mOiBBIHNjcmlwdCB0byBpbnZva2UgdGhlIGNvcnJlY3QgdmVyc2lvbiBvZiB0aGUKKwlhdXRvY29uZiB0b29sCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBkaXN0L21ha2VyZWxlYXNlLnhtbDogcmVtYWluaW5nIGNvbW1hbmQgbGluZSBjaGFuZ2VzIGZvciBzdm4gLT4KKwlnaXQKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGRpc3QvbWFrZXJlbGVhc2UueG1sOiBtYWtlIHRoZSBicmFuY2ggZWNobyBvdXRwdXQgYW5kIHN2biB1cGRhdGUKKwljb252ZXJ0ZWQgdG8gZ2l0IGVxdWl2YWxlbnRzCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBkaXN0L21ha2VyZWxlYXNlLnhtbDogcHVsbCB0aGUgYnJhbmNoIGluZm8gZnJvbSBnaXQKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGRpc3QvcmVsZWFzZTogbm90ZWQgdGhhdCB0aGUgbWFzdGVyIGJyYW5jaCBpcyBpbiByYyBzdGF0ZQorCisyMDExLTA2LTI4ICBXZXMgSGFyZGFrZXIgPG9wZW5zb3VyY2VAaGFyZGFrZXJzLm5ldD4KKworCSogRkFROiBNZW50aW9uIHRoZSBHaXQgd2lraSBwYWdlCisKKzIwMTEtMDYtMjggIFdlcyBIYXJkYWtlciA8b3BlbnNvdXJjZUBoYXJkYWtlcnMubmV0PgorCisJKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IHVzZSBnaXQgbWVyZ2Ugd2l0aCB0aGUgLS1sb2cKKwlvcHRpb24KKworMjAxMS0wNi0yOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKwkqIC5naXRpZ25vcmU6IEFkZCAuZ2l0aWdub3JlCisKKzIwMTEtMDYtMjggIFdlcyBIYXJkYWtlciA8b3BlbnNvdXJjZUBoYXJkYWtlcnMubmV0PgorCisJKiBGQVE6IFdlJ3JlIG5vdyB1c2luZyBnaXQhCisKKzIwMTEtMDYtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IHVzZSByZWJhc2UgdG8gcHV0IGxvY2FsIGNoYW5nZXMgYXQKKwl0aGUgdG9wIG9mIHRoZSByZW1vdGUgYnJhbmNoZXMgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNTMzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhZGRlZCBhIGZlYXR1cmUgdG8gbm90IHJvbGwKKwlicmFuY2hlcyBjdXJyZW5seSBpbiByYyBwaGFzZSBnaXQtc3ZuLWlkOgorCisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA1MzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGFkZGVkIGEgbnNyb2xsdXAgZnVuY3Rpb24gZm9yCisJcm9sbGluZyBicmFuY2hlcyB1cHdhcmQuICBnaXQtc3ZuLWlkOgorCisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA1MzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGNyZWF0ZWQgYW4gbnNwYXRjaGFwcGx5IGZ1bmN0aW9uCisJdG8gYXBwbHkgYSBwcmV2aW91c2x5IHRlc3RlZCBwYXRjaCBnaXQtc3ZuLWlkOgorCisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA1MzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGFkZGVkIGEgbnN0cnlwYXRjaCBmdW5jdGlvbiB0bworCXRlc3QgcGF0Y2ggYXBwbGljYXRpb24gYWdhaW5zdCB2YXJpb3VzIGJyYW5jaGVzIGdpdC1zdm4taWQ6CisKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDUyOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYWRkZWQgdmVyYm9zZSBvdXRwdXQgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNTI4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBtb3JlIHByZWZpeCBjaGFuZ2VzIGFuZCBiZXR0ZXIKKwlzZXR0aW5nIG9mIGRlZmF1bHQgdmFsdWVzIGdpdC1zdm4taWQ6CisKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDUyNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogdXNlIG5zIHByZWZpeGVzIGluc3RlYWQgb2YgZ2VuZXJpYworCXNubXAgcHJlZml4ZXMgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNTI2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBDaGFuZ2VMb2c6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MjQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiAKKwlNaXNzaW5nIGNoZWNrIGZvciBycG10cy5oIGdpdC1zdm4taWQ6CisKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MjMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGNvbmZpZ3VyZTogVmVyc2lvbiBudW1iZXIgdXBkYXRlIGdpdC1zdm4taWQ6CisKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIG1hbi9uZXRzbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsCisJbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLAorCW1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsCisJbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLAorCW1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywKKwltYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsCisJbWFuL25ldHNubXBfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLAorCW1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsCisJbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywKKwltYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywKKwltYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLAorCW1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywKKwltYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMywKKwltYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsCisJbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsCisJbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywKKwltYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsCisJbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsCisJbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMsCisJbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLAorCW1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zLAorCW1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywKKwltYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLAorCW1hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMsIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLAorCW1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCBtYW4vbmV0c25tcF9zY2FsYXIuMywKKwltYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsCisJbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsCisJbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsCisJbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsCisJbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMywgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLAorCW1hbi9uZXRzbm1wX3RhYmxlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsCisJbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywKKwltYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywKKwltYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsCisJbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLAorCW1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywgbWFuL25ldHNubXBfdXRpbC4zLAorCW1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsCisJbWFuL25ldHNubXBfd2F0Y2hlci4zOiBkb2N1bWVudGF0aW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTIxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywKKwlzbm1wbGliL3NubXBfdmVyc2lvbi5jOiBWZXJzaW9uIG51bWJlciB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUyMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yMyAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sCisJaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogVHdlYWsgUlBNIGhhbmRsaW5nIHRvIHdvcmsKKwl3aXRoIGxpYnJhcnkgdmVyc2lvbiA0LjkgQmFzZWQgb24gYSBwYXRjaCBieSBKYW4gU2FmcmFuZWsgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUxOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yMiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYzogUHJvdmlkZSBhIGZyYW1ld29yayBmb3IgcmVhZGluZworCVJQTSBwYWNrYWdlIGluZm9ybWF0aW9uIGZyb20gYSBjYWNoZSBkaXJlY3RvcnkgKHJhdGhlciB0aGFuIHF1ZXJ5aW5nCisJdGhlIFJQTWRiIGRpcmVjdGx5KS4gIE15IGFwb2xvZ2llcyB0byBKZWZmIEpvaG5zb24gZm9yIHRoZSBkZWxheSBpbiBhZGRpbmcgdGhpcworCWZ1bmN0aW9uYWxpdHkuICBnaXQtc3ZuLWlkOgorCisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTE4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTIyICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBDaGFuZ2VMb2c6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA1MTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjIgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGNvbmZpZ3VyZTogVmVyc2lvbiBudW1iZXIgdXBkYXRlIGdpdC1zdm4taWQ6CisKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA1MTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjIgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGlzdC9uZXQtc25tcC5zcGVjLAorCXNubXBsaWIvc25tcF92ZXJzaW9uLmM6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNTE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTIxICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5oLAorCWFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYzogUHJvdmlkZSBhCisJZnJhbWV3b3JrIGZvciByZWFkaW5nIFJQTSBwYWNrYWdlIGluZm9ybWF0aW9uIGZyb20gYSBjYWNoZSBkaXJlY3RvcnkKKwkocmF0aGVyIHRoYW4gcXVlcnlpbmcgdGhlIFJQTWRiIGRpcmVjdGx5KS4gIE15IGFwb2xvZ2llcyB0byBKZWZmIEpvaG5zb24gZm9yIHRoZSBkZWxheSBpbiBhZGRpbmcgdGhpcworCWZ1bmN0aW9uYWxpdHkuICBnaXQtc3ZuLWlkOgorCisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNTEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTIxICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5oLAorCWFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYzogUHJvdmlkZSBhCisJZnJhbWV3b3JrIGZvciByZWFkaW5nIFJQTSBwYWNrYWdlIGluZm9ybWF0aW9uIGZyb20gYSBjYWNoZSBkaXJlY3RvcnkKKwkocmF0aGVyIHRoYW4gcXVlcnlpbmcgdGhlIFJQTWRiIGRpcmVjdGx5KS4gIE15IGFwb2xvZ2llcyB0byBKZWZmIEpvaG5zb24gZm9yIHRoZSBkZWxheSBpbiBhZGRpbmcgdGhpcworCWZ1bmN0aW9uYWxpdHkuICBnaXQtc3ZuLWlkOgorCisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNTEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTIxICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5oLAorCWFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYzogUHJvdmlkZSBhCisJZnJhbWV3b3JrIGZvciByZWFkaW5nIFJQTSBwYWNrYWdlIGluZm9ybWF0aW9uIGZyb20gYSBjYWNoZSBkaXJlY3RvcnkKKwkocmF0aGVyIHRoYW4gcXVlcnlpbmcgdGhlIFJQTWRiIGRpcmVjdGx5KS4gIE15IGFwb2xvZ2llcyB0byBKZWZmIEpvaG5zb24gZm9yIHRoZSBkZWxheSBpbiBhZGRpbmcgdGhpcworCWZ1bmN0aW9uYWxpdHkuICBnaXQtc3ZuLWlkOgorCisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA1MTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMTkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYzogRm9sbG93LXVwIGZvciByMjA1MTE6IHJlYWxseSB1c2UKKwl0aGUgcHJvcGVyIGZvcm1hdCBzcGVjaWZpY2F0aW9uLiAgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDUxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0xOSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jOiBGb2xsb3ctdXAgZm9yIHIyMDUxMTogcmVhbGx5IHVzZQorCXRoZSBwcm9wZXIgZm9ybWF0IHNwZWNpZmljYXRpb24uICBnaXQtc3ZuLWlkOgorCisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNTEyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTE3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmM6IEZpeCBhIGJ1ZyBpbiBhIGRlYnVnIHN0YXRlbWVudAorCWludHJvZHVjZWQgYnkgcGF0Y2ggMzMxMDI1MCAvIHIyMDQ5NDogdXNlICVsZCB0byBwcmludCBhIHZhbHVlIG9mCisJdHlwZSBvaWQgaW5zdGVhZCBvZiAlZC4gIGdpdC1zdm4taWQ6CisKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA1MTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMTcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYzogRml4IGEgYnVnIGluIGEgZGVidWcgc3RhdGVtZW50CisJaW50cm9kdWNlZCBieSBwYXRjaCAzMzEwMjUwIC8gcjIwNDk0OiB1c2UgJWxkIHRvIHByaW50IGEgdmFsdWUgb2YKKwl0eXBlIG9pZCBpbnN0ZWFkIG9mICVkLiAgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDUxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jOiBVc2UgJXAgdG8gcHJpbnQgYSBwb2ludGVyIGluc3RlYWQKKwlvZiAlbGQgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUxMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jOiBVc2UgJXAgdG8gcHJpbnQgYSBwb2ludGVyIGluc3RlYWQKKwlvZiAlbGQgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDUxMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDaGFuZ2VzOiBWNS43LnByZTIgLT4gVjUuNy5yYzEKKworMjAxMS0wNi0xMyAxNjoxMSAgaGFyZGFrZXIKIAogICAgKiBjb25maWd1cmU6CiAKLSAgIGF1dG9jb25mIHVzaW5nIHRoZSByaWdodCB2ZXJzaW9uCisgICBydW4gY29ycmVjdCB2ZXJzaW9uIG9mIGF1dG9jb25mCiAKLTIwMTAtMTItMjkgMDE6NDAgIGhhcmRha2VyCisyMDExLTA2LTEzIDE2OjEwICBoYXJkYWtlcgogCiAgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsICAgCiAgICAgICBkaXN0L25ldC1zbm1wLnNwZWM6CiAKICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQogCisyMDExLTA2LTEzIDE2OjA0ICBoYXJkYWtlcgorCisgICAqIGNvbmZpZ3VyZToKKworICAgcmFuIGF1dG9jb25mCisKKzIwMTEtMDYtMTAgMDY6MDMgIG5iYQorCisgICAqIGNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX3NlY3VyaXR5X21vZHVsZXM6CisKKyAgIEZpeCBidWlsZCBvZiBzbm1wdXNtIHdoZW4gYWRkaXRpb25hbCBzZWMgbW9kdWxlcyByZXF1ZXN0ZWQKKworMjAxMS0wNi0wOSAyMToxMyAgbmJhCisKKyAgICogc25tcGxpYi9jZXJ0X3V0aWwuYzoKKworICAgSW5jbHVkZSBzdGTgpYbgpIXgpIbgpYbgpIWHaWIuaCB0byBtYWtlIGRtYWxsb2MgaGFwcHkKKworMjAxMS0wNi0wOSAxNDozNSAgcnN0b3J5CisKKyAgICogc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jOgorCisgICBDSEFOR0VTOiBCVUc6IDMxNTE4NDU6IGZpeCBtdWx0aXBsZSByZWdpc3RyYXRpb25zIG9mIHNubXAKKyAgIHRyYW5zcG9ydCBoYW5kbGVyCisKKzIwMTEtMDYtMDggMTY6MzQgIHJzdG9yeQorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oLCBzbm1wbGliL3NubXBfYXBpLmMsICAgCisgICAgICBzbm1wbGliL3N5c3RlbS5jOgorCisgICBtb3JlIGRuc3NlYyB0d2Vha3MKKyAgIAorICAgLSBjcmVhdGUgYW4gYXBwLWdsb2JhbCB2YWxpZGF0b3IgY29udGV4dCBmb3IgdXNlIHdpdGggYWxsCisgICB2YWxpZGF0aW9uIHJvdXRpbmVzLiBtYWlubHkgdXNlZnVsIGZvciBsb25nLWxpdmVkIGFwcHMuCisgICAtIHVzZSB0aGUgYXBwdHlwZSBhcyB0aGUgdmFsaWRhdG9yICdzY29wZScsIGFsbG93aW5nCisgICBmb3IgYXBwLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb2YgdmFsaWRhdGlvbiB2aWEgbGlidmFsJ3MKKyAgIGRuc3ZhbC5jb25mCisKKzIwMTEtMDYtMDcgMTY6NDggIHJzdG9yeQorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmg6CisKKyAgIGFkZCBhIG1heCBkZWZpbmUgZm9yIGVhY2ggZGVmYXVsdCBzdG9yZSB0eXBlCisgICAKKyAgIG5vdCBhY3R1YWxseSB1c2VkLCBqdXN0IGEgaGVscGZ1bCByZW1pbmRlciBmb3IgdGhvc2UgYWRkaW5nCisgICBuZXcgaWRzIHdobyBtaWdodCBub3QgdGhpbmsgdG8gY2hlY2sgTkVUU05NUF9EU19NQVhfU1VCSURTLgorICAgKHRoZSBib29sIGxpc3QgaXMgcmFwaWRseSBhcHByb2FjaGluZyB0aGUgY3VycmVudCBsaW1pdC4pCisKKzIwMTEtMDYtMDcgMTY6NDYgIHJzdG9yeQorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX3J1bjoKKworICAgbWVudGlvbiBidWlsZGRpciB3aGVuIGNvbXBsYWluaW5nIGFib3V0IG5vdCBiZWluZyBydW4gZnJvbSBzb3VyY2UKKyAgIHRyZWUKKworMjAxMS0wNi0wMSAyMjoyNCAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IHBhdGNoIDMzMTAyNTA6IGZyb20gZmVubmVyOiBtaXNjIGZpeGVzIGZvcgorICAgZGVidWdnaW5nIG91dHB1dCBvZiBhZ2VudHgKKworCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ2hhbmdlczogVjUuNiAtPiBWNS43LnByZTIKKworMjAxMS0wNS0xMCAwMDoyMCAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZCwgYXBwcy9NYWtlZmlsZS5kZXBlbmQsICAgCisgICAgICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6CisKKyAgIG1ha2UgZGVwZW5kCisKKzIwMTEtMDUtMTAgMDA6MjAgIGhhcmRha2VyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2xpbnV4LmM6CisKKyAgIEMrKyAtPiBDIGNvbW1lbnRzCisKKzIwMTEtMDUtMTAgMDA6MTcgIGhhcmRha2VyCisKKyAgICogTkVXUzoKKworICAgTkVXUyB1cGRhdGUgZm9yIDUuNworCisyMDExLTA1LTA5IDIzOjE0ICBoYXJkYWtlcgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaDoKKworICAgcmV2ZXJ0IHRoZSBvaWQgdHlwZWRlZiByZXNpemluZyBmcm9tIHIxNzgwOSBiZWNhdXNlIGl0IGJyb2tlCisgICBiYWNrd2FyZHMgY29tcGF0LCBhcyBwb2ludGVkIG91dCBieSB1c2VycyBvbiB0aGUgLWNvZGVycyBsaXN0CisKKzIwMTEtMDUtMDkgMjI6NTEgIGhhcmRha2VyCisKKyAgICogY29uZmlndXJlOgorCisgICB1c2UgcHJvcGVyIGF1dG9jb25mIHZlcnNpb24KKworMjAxMS0wNS0wOSAyMjozOCAgaGFyZGFrZXIKKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAgIAorICAgICAgZGlzdC9uZXQtc25tcC5zcGVjLCBwZXJsL0FTTi9BU04ucG0sICAgCisgICAgICBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLCBwZXJsL09JRC9PSUQucG0sIHBlcmwvU05NUC9TTk1QLnBtLCAKKyAgICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtLAorICAgICAgcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG0sICAgIHBlcmwvYWdlbnQvYWdlbnQucG0sCisgICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwgICAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtOgorCisgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKKworMjAxMS0wNS0wOSAyMjozOCAgaGFyZGFrZXIKKworICAgKiBNYWtlZmlsZS50b3A6CisKKyAgIHZlcnNpb24gdXBkYXRlCisKKzIwMTEtMDUtMDkgMjI6MTAgIGhhcmRha2VyCisKKyAgICogbWlicy9VQ0QtU05NUC1NSUIudHh0OgorCisgICBhZGRlZCBhIG1pc3NpbmcgMCBpbiB0aGUgcmV2aXNpb24gZGF0ZQorCisyMDExLTA1LTA5IDIwOjUyICBuYmEKKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2lvY3RsLmM6CisKKyAgIFVzZSBzeW1ib2xpYyBuYW1lZCBmb3IgaWZUeXBlIHZhbHVlcworCisyMDExLTA1LTA5IDIwOjQzICBuYmEKKworICAgKiBtaWJzL3JmY21pYnMuZGlmZjoKKworICAgSUFOQSBoYXMgZml4ZWQgdGhlIElBTkEtSVBQTS1NRVRSSUNTLVJFR0lTVFJZLU1JQgorCisyMDExLTA1LTA5IDE1OjI0ICBoYXJkYWtlcgorCisgICAqIG1pYnMvVUNELVNOTVAtTUlCLnR4dDoKKworICAgYWRkZWQgYSBuZXcgUkVWSVNJT04gY2xhdXNlIHRvIGxpc3QgdGhlIGNoYW5nZXMgaW4gdGhlIHRoZSByZWNlbnQKKyAgIHVwZGF0ZQorCisyMDExLTA1LTA5IDE0OjE5ICBoYXJkYWtlcgorCisgICAqIE5FV1M6CisKKyAgIGFkZGVkIHBpbmcvdHJhY2Vyb3V0ZSBtaWJzIG5vdGUKKworMjAxMS0wNS0wOSAxNDoxOSAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm94eS5jOgorCisgICB3ZSBhY3R1YWxseSB3YW50IHRvIHVzZSB0aGUgYmFzZSBPSUQgYXMgdGhlIHN0YXJ0aW5nIHBvaW50LCBub3QKKyAgIHRoZSByZWcgT0lELgorCisyMDExLTA1LTA5IDE0OjE4ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmM6CisKKyAgIGZpeGVkIHRoZSBwcm94eSBzdXBwb3J0IHRvIGRvIGEgcHJvcGVyIE9JRCBsZXNzIHRoYW4gT0lEIGNvbXBhcmUuCisgICBXZSBhY3R1YWxseSBkb24ndCBjYXJlIGFib3V0IHRoZSBsZW5ndGggb2YgdGhlIG9yaWdpbmFsIHJlcXVlc3QsCisgICBvbmx5CisgICB0aGF0IGl0IHdhcyBiZWZvcmUgdGhlIHJlZ2lzdGVyZWQgcmViYXNlCisKKzIwMTEtMDUtMDkgMTQ6MTggIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYzoKKworICAgQ0hBTkdFUzogcGF0Y2ggMzE0MDgzMzogZnJvbSBqc2FmcmFuZWs6IGZpeCBwcm94eSBHRVRORVhUCisgICByZXF1ZXN0cworICAgV2hlbiBPSURzIHJlcXVlc3RlZCBhcmUgYmVsb3cgdGhlIHByb3h5IHJlcXVlc3QgcmVtYXAsIHdlIG5lZWQgdG8KKyAgIG5vdAorICAgaW5jbHVkZSBhbnkgT0lEcyB0aGF0IG1pZ2h0IGJlIGluIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBvcmlnaW5hbAorICAgT0lECisgICBhbmQgdGhlIHJlbWFwcGVkIE9JRC4gVGhpcyBwYXRjaCBmdWRnZXMgdGhlIHJlcXVlc3Qgc28gdGhhdCBpdAorICAgZml4ZXMKKyAgIHRoZSByZXF1ZXN0IE9JRCBzbyBpdCdzIGp1c3QgYmVmb3JlIHRoZSByZW1hcHBlZCBwcm94eSByYW5nZS4KKworMjAxMS0wNS0wOSAxNDoxOCAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvY3B1LmgsIG1pYnMvVUNELVNOTVAtTUlCLnR4dDoKKworICAgTkVXUzogUEFUQ0ggMzE2NzMyNTogZnJvbSBrcmlzenRvZm9ybzogVUNELVNOTVAvU3lzdGVtU3RhdHM6IGFkZAorICAgdmFyaWFibGVzCisgICB0byByZXBvcnQgY3B1c3RlYWwsIGNwdWd1ZXN0LCBjcHVndWVzdG5pY2UKKworMjAxMS0wNS0wOSAxNDoxNyAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmM6CisKKyAgIENIQU5HRVM6IHBhdGNoIDMxODQwMjY6IGZyb20gZWl2bmFlczogQXZvaWQgY29uc3RhbnQgcmVmcmVzaCBvZgorICAgaW50ZXJmYWNlIHN0YXRpc3RpY3MKKworMjAxMS0wNS0wOSAxMDo0NCAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvc25tcF9hZ2VudC5jLCBhcHBzL3NubXBkZWx0YS5jLCBzbm1wbGliL3NjYXBpLmMsICAgCisgICAgICBzbm1wbGliL3NubXBfYXBpLmMsIHNubXBsaWIvc3lzdGVtLmMsIHNubXBsaWIvdG9vbHMuYzoKKworICAgRml4ZWQgc2V2ZXJhbCBjb21waWxlciB3YXJuaW5ncyByZXBvcnRlZCBieSB0aGUgTVNWQyBjb21waWxlci4KKworMjAxMS0wNS0wOSAxMDozNSAgYnZhc3NjaGUKKworICAgKiBzbm1wbGliL2dldHRpbWVvZmRheS5jOgorCisgICBXaW4zMi9NU1ZDOiBGaXhlZCBhIGNvbXBpbGVyIHdhcm5pbmcuCisKKzIwMTEtMDUtMDkgMTA6MzMgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmM6CisKKyAgIENIQU5HRVM6IGFnZW50OiBGaXhlZCBhIHllYXItMjAzOCBidWcgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mCisgICBpcFJvdXRlVGFibGUuCisKKzIwMTEtMDUtMDggMjA6MDEgIG5iYQorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Byb2JlSGlzdG9yeVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUmVzdWx0c1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUhvcHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVByb2JlSGlzdG9yeVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLmM6CisKKyAgIEZpeCB3YXJuaW5ncyBhbmQgZGF0YSBmb3JtYXQgZm9yIERhdGVBbmRUaW1lIG9iamVjdHMuCisgICBUaGVzZSBtb2R1bGVzIHdvcmssIGJ1dDoKKyAgIC0gVGhleSBhcmUgTGludXggb25seQorICAgLSBSb3dzIG11c3QgYmUgY3JlYXRlZCB3aXRoIHJvd1N0YXR1cyBjcmVhdGVBbmRXYWl0IGJlZm9yZSB0aGV5CisgICBhcmUgcG9wdWxhdGVkCisgICAtIEFnZW50IG11c3QgcnVuIGFzIHJvb3QKKyAgIC0gQWdlbnQgaXMgYmxvY2tlZCB3aGlsZSB0ZXN0cyBydW4KKyAgIC0gRGF0YSBmb3JtYXQgZm9yIEluZXRBZGRyZXNzIG9iamVjdHMgaXMgd3JvbmcuIEl0IGlzIEFTQ0lJLCBub3QKKyAgIGJpbmFyeQorICAgKG1ha2luZyBpdCBlYXNpZXIgdG8gdXNlIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgYnV0IC4uLikKKworMjAxMS0wNS0wNyAxNToyMiAgYnZhc3NjaGUKKworICAgKiBwZXJsL1NOTVAvU05NUC54czoKKworICAgUmVtb3ZlZCBhbiB1bnVzZWQgbGFiZWwgZnJvbSBwZXJsL1NOTVAvU05NUC54cy4KKworMjAxMS0wNS0wNyAxNDo0OCAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvYWdlbnRfcmVnaXN0cnkuYywgYWdlbnQvaGVscGVycy9vbGRfYXBpLmMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaDoKKworICAgQ0hBTkdFUzogc25tcGQ6IERlY2xhcmUgdGhlIE9JRCBhcmd1bWVudCB0eXBlIG9mIE1JQiByZWdpc3RyYXRpb24KKyAgIGZ1bmN0aW9ucyBhcyAnY29uc3Qgb2lkIConIGluc3RlYWQgb2YgJ29pZCAqJyBzaW5jZSB0aGVzZQorICAgZnVuY3Rpb25zIGRvIG5vdCBtb2RpZnkgdGhlIE9JRC4KKworMjAxMS0wNS0wNyAxNDo0NCAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9uZXRsaW5rLmMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2FycC5oOgorCisgICBVc2UgdGhlIGNvcnJlY3QgZGF0YSB0eXBlIGZvciB0aGUgJ2NhY2hlIGV4cGlyZWQnIHZhcmlhYmxlOiBjaGFyCisgICBpbnN0ZWFkIG9mIGludC4KKworMjAxMS0wNS0wNyAxNDo0MyAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jOgorCisgICBGaXhlZCBhIGNvbXBpbGVyIHdhcm5pbmcgdGhhdCB3YXMgaW50cm9kdWNlZCBpbiByMjAxNTEuCisKKzIwMTEtMDUtMDcgMTM6MTUgIGJ2YXNzY2hlCisKKyAgICogc25tcGxpYi93aW5zZXJ2aWNlLmM6CisKKyAgIFdpbjMyOiBpbXByb3ZlZCBzb3VyY2UgY29kZSBjb25zaXN0ZW5jeSBieSB1c2luZyBMUENUU1RSIGluc3RlYWQKKyAgIG9mIExQQ1NUUi4gTm90ZTogdGhpcyBkb2VzIG5vdCBtZWFuIHRoYXQgVW5pY29kZSBidWlsZHMgYXJlCisgICBzdXBwb3J0ZWQuCisKKzIwMTEtMDUtMDcgMTM6MTQgIG5iYQorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbmV0bGluay5jOgorCisgICBBZGQgZmlsZSBmb3Jnb3R0ZW4gaW4gcjIwMzUzCisKKzIwMTEtMDUtMDYgMjM6MzIgIGhhcmRha2VyCisKKyAgICogIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycC5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9jb21tb24uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuaCwgIAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvYXJwLmg6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSCAzMTI1OTY6IGZyb20gZmFibGVkODA6IGxpc3RlbiBmb3IgbmV0bGluaworICAgY2hhbmdlIGV2ZW50cyBmb3IgdGhlIGFycC1yZWxhdGVkIHRhYmxlcworCisyMDExLTA1LTA2IDE4OjM2ICByc3RvcnkKKworICAgKiBzbm1wbGliL3N5c3RlbS5jOgorCisgICBORVdTOiBzbm1wbGliOiBhZGQgb3B0aW9uYWwgc3VwcG9ydCBmb3IgbG9jYWwgRE5TU0VDIHZhbGlkYXRpb24KKyAgIG9mIGhvc3RuYW1lcworICAgCisgICAtIG9wdGlvbmFsIGF0IGNvbmZpZ3VyZSB0aW1lOiAtLXdpdGgtbG9jYWwtZG5zc2VjLXZhbGlkYXRpb24KKyAgIC0gcmVxdWlyZXMgRE5TU0VDLVRvb2wgdmFsaWRhdGlvbiBsaWJyYXJpZXMKKyAgIC0gaW5pdGlhbCBzdXBwb3J0LCBmb3Igc3lzdGVtcyB3aXRoIGdldGFkZHJpbmZvLiBzdXBwb3J0IGZvcgorICAgYWRkaXRpb25hbAorICAgcmVzb2x2ZXIgaW50ZXJmYWNlcyBjb21pbmcgc29vbi4KKyAgIC0gYWxzbyBUT0RPOiBmbGFnIGZvciBpZ25vcmluZyB2YWxpZGF0b2luIGVycm9ycyAobG9nICYgY29udGludWUpCisKKzIwMTEtMDUtMDYgMTg6MzYgIHJzdG9yeQorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oOgorCisgICBtb3ZlIHVudXNlZCAoYW5kIHRvbyBnZW5lcmljKSB0b2tlbiB3aXRoaW4gVUNEX0NPTVBBVElCTEUgaWZkZWYKKyAgIAorICAgLSBNQVhMQUJFTCBjb25mbGljdHMgd2l0aCA8YXJwYS9uYW1lc2VyLmg+CisgICAtIGFkZGVkIE5FVFNOTVBfTUFYTEFCRUwKKworMjAxMS0wNS0wNiAxODozNiAgcnN0b3J5CisKKyAgICogIGFnZW50L01ha2VmaWxlLmluLCBhcHBzL01ha2VmaWxlLmluLCAgIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbiwgY29uZmlndXJlLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MyLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGUsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICB1cGRhdGUgY29uZmlndXJlL01ha2VmaWxlcyBmb3IgRE5TU0VDIGxvY2FsIHZhbGlkYXRpb24gb3B0aW9uCisKKzIwMTEtMDUtMDYgMTQ6MzggIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zeXNjdGwuYzoKKworICAgcmVtb3ZlZCB0aGUgYWNjaWRlbnRhbCBicm9rZW4gZmVhdHVyZSByZXF1aXJlIGxpbmUgdGhhdCBnb3QgaGFsZgorICAgaW5zZXJ0ZWQKKworMjAxMS0wNS0wNiAxMzo1MCAgZHRzMTIKKworICAgKiB3aW4zMi9kaXN0L2luc3RhbGxlci9uZXQtc25tcC5uc2k6CisKKyAgIEZpeCBpbmNvbXBsZXRlIHVuaW5zdGFsbCBjb25maWd1cmF0aW9uOgorICAgLSBicm9rZW4gcmVtb3ZhbCBvZiBNaWNyb3NvZnQgRExMCisgICAtIHJlbW92ZSBhc3NvcnRlZCBuZXcgTUlCcyBhbmQgaGVhZGVyIGZpbGVzCisKKzIwMTEtMDUtMDYgMTI6NTggIGR0czEyCisKKyAgICogd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGw6CisKKyAgIFN1cHBvcnQgVGFyL0daaXAgY29tbWFuZCBwYXRocyBjb250YWluaW5nIHNwYWNlcworCisyMDExLTA1LTA2IDEyOjU3ICBkdHMxMgorCisgICAqIHdpbjMyL2Rpc3QvYnVpbGQtYmluYXJ5LnBsOgorCisgICBSZXBvcnQgR1ppcCBjb21tYW5kIGNvcnJlY3RseQorCisyMDExLTA1LTA1IDIxOjQ4ICBuYmEKKworICAgKiAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmMsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5jOgorCisgICBGaXggZm9yIERyYWdvbkZseSBCU0QgKGRvZXMgbm90IGRlZmluZSBJUF9TRU5EU1JDQUREUikKKworMjAxMS0wNS0wNSAyMDoyOSAgbmJhCisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oOgorCisgICBGaXggc3BlbGxpbmcgb2YgU09fUkVDVkRTVEFERFIKKworMjAxMS0wNS0wNSAxODo1NCAgcnN0b3J5CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgsIG1hbi9zbm1wLmNvbmYuNS5kZWYsICAgCisgICAgICBzbm1wbGliL3NubXBfYXBpLmM6CisKKyAgIE5FV1M6IGFwcHM6IGFkZCBzbm1wLmNvbmYgdG9rZW5zIGZvciB0aW1lb3V0cyBhbmQgcmV0cmllcworCisyMDExLTA1LTA1IDA2OjA3ICBidmFzc2NoZQorCisgICAqIHNubXBsaWIvdG9vbHMuYywgdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfVEVTVENPTkYuc2g6CisKKyAgIENIQU5HRVM6IE1pbkdXOiBNYWRlIHJlZ3Jlc3Npb24gdGVzdCBvdXRwdXQgaW5kZXBlbmRlbnQgb2YgdGhlCisgICBOZXQtU05NUCB2YXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeS4gU29tZSB0ZXN0cworICAgdGhhdCBmYWlsZWQgcHJldmlvdXNseSBhZnRlciB0aGUgTmV0LVNOTVAgYmluYXJpZXMgKE1TVkMgYnVpbGQpCisgICBoYWQgYmVlbiBpbnN0YWxsZWQgZG8gbm93IHBhc3MuCisKKzIwMTEtMDUtMDUgMDU6NTcgIGJ2YXNzY2hlCisKKyAgICogIHdpbjMyL2VuY29kZV9rZXljaGFuZ2UvZW5jb2RlX2tleWNoYW5nZS52Y3Byb2osICAgCisgICAgICB3aW4zMi9saWJhZ2VudC9saWJhZ2VudC52Y3Byb2osICAgCisgICAgICB3aW4zMi9saWJuZXRzbm1wdHJhcGQvbGlibmV0c25tcHRyYXBkLnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL2xpYnNubXAvbGlic25tcC52Y3Byb2osICAgCisgICAgICB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wX2RsbC52Y3Byb2osICAgCisgICAgICB3aW4zMi9uZXRzbm1wbWlicy9uZXRzbm1wbWlicy52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wYnVsa2dldC9zbm1wYnVsa2dldC52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wYnVsa3dhbGsvc25tcGJ1bGt3YWxrLnZjcHJvaiwgd2luMzIvc25tcGQvc25tcGQudmNwcm9qLCAKKyAgICAgICAgd2luMzIvc25tcGRlbHRhL3NubXBkZWx0YS52Y3Byb2osIHdpbjMyL3NubXBkZi9zbm1wZGYudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcGdldC9zbm1wZ2V0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBnZXRuZXh0L3NubXBnZXRuZXh0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBuZXRzdGF0L3NubXBuZXRzdGF0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBzZXQvc25tcHNldC52Y3Byb2osIHdpbjMyL3NubXBzdGF0dXMvc25tcHN0YXR1cy52Y3Byb2osIAorICAgICAgICB3aW4zMi9zbm1wdGFibGUvc25tcHRhYmxlLnZjcHJvaiwKKyAgICAgIHdpbjMyL3NubXB0ZXN0L3NubXB0ZXN0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXB0cmFuc2xhdGUvc25tcHRyYW5zbGF0ZS52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wdHJhcC9zbm1wdHJhcC52Y3Byb2osIHdpbjMyL3NubXB0cmFwZC9zbm1wdHJhcGQudmNwcm9qLCAKKyAgICAgICAgd2luMzIvc25tcHVzbS9zbm1wdXNtLnZjcHJvaiwgd2luMzIvc25tcHZhY20vc25tcHZhY20udmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcHdhbGsvc25tcHdhbGsudmNwcm9qLCB3aW4zMi93aW4zMi5zbG4sICAgCisgICAgICB3aW4zMi93aW4zMmRsbC5zbG46CisKKyAgIFJlbW92ZWQgVmlzdWFsIFN0dWRpbyAyMDA1IHNvbHV0aW9uIGFuZCBwcm9qZWN0IGZpbGVzIGFnYWluIHNpbmNlCisgICBWaXN1YWwgU3R1ZGlvIDIwMTAgcmVmdXNlcyB0byBsb2FkIHRoZXNlLgorCisyMDExLTA1LTA0IDIzOjQzICBoYXJkYWtlcgorCisgICAqIE1ha2VmaWxlLmluOgorCisgICBjbGVhbiB0aGUgcGVybC9weXRob24gZmVhdHVyZSBsZWZ0b3ZlcnMKKworMjAxMS0wNS0wNCAyMzo0MiAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czoKKworICAgZml4IG1pYiBtb2R1bGUgaW52b2NhdGlvbgorCisyMDExLTA1LTA0IDIwOjU3ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYzoKKworICAgZml4IGlmZGVmIHR5cG8KKworMjAxMS0wNS0wNCAyMDo1NiAgaGFyZGFrZXIKKworICAgKiBNYWtlZmlsZS5pbjoKKworICAgZml4IHBlcmwvcHl0aG9uIGZlYXR1cmUgZGVwZW5kZW5jaWVzCisKKzIwMTEtMDUtMDQgMjA6NTYgIGhhcmRha2VyCisKKyAgICogYWdlbnQvYXV0b19ubGlzdC5jOgorCisgICByZXZlcnRlZCBhdXRvX25saXN0IG1hY3JvIHVzYWdlOyB0aGUgZnVuY3Rpb24gaXMgdXNlZCBpbiBoZWFkZXJzCisKKzIwMTEtMDUtMDQgMjA6NTYgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6CisKKyAgIEFkZCBhIC1UIG9wdGlvbiB0byBydW4gJ21ha2UgdGVzdCcKKworMjAxMS0wNS0wNCAyMDo1NiAgaGFyZGFrZXIKKworICAgKiBhcHBzL01ha2VmaWxlLmluOgorCisgICBmaXggdGhlIGVuY29kZV9rZXljaGFuZ2UgLmZ0IGZpbGVuYW1lCisKKzIwMTEtMDUtMDQgMTY6MjAgIGhhcmRha2VyCisKKyAgICogcGVybC9UcmFwUmVjZWl2ZXIvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgsIHNubXBsaWIvdG9vbHMuYzoKKworICAgZml4IHRoZSBmZWF0dXJlcyByZXF1aXJlZCBieSB0aGUgVHJhcFJlY2VpdmVyIG1vZHVsZQorCisyMDExLTA1LTA0IDE2OjIwICBoYXJkYWtlcgorCisgICAqIE1ha2VmaWxlLmluOgorCisgICBBZGQgdGhlIFRyYXBSZWNlaXZlciB0byB0aGUgbGlzdCBvZiBwZXJsIG1vZHVsZXMKKworMjAxMS0wNS0wNCAxNDo0MiAgaGFyZGFrZXIKKworICAgKiBwZXJsL1NOTVAvU05NUC54czoKKworICAgdXNlIHRoZSBuZXdlciBOZXQtU05NUCBBUElzLCByYXRoZXIgdGhhbiB0aGUgb2xkZXIgVUNEIG9uZXMKKworMjAxMS0wNS0wNCAxNDo0MSAgaGFyZGFrZXIKKworICAgKiBwZXJsL1NOTVAvU05NUC54czoKKworICAgcmVtb3ZlIFNFVCBjb2RlIHdoZW4gdW5kZXIgLS1yZWFkLW9ubHkgbW9kZQorCisyMDExLTA1LTA0IDE0OjQxICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuYzoKKworICAgcmVxdWlyZSBjaGVja192Yl91aW50CisKKzIwMTEtMDUtMDQgMTQ6NDEgIGhhcmRha2VyCisKKyAgICogCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9zdWJhZ2VudC5jLAorICAgICAgICAgYWdlbnQvc25tcF9hZ2VudC5jLCBsb2NhbC9taWIyYy1jb25mLmQvc3ViYWdlbnQubTJjLCAgIAorICAgICAgcHl0aG9uL25ldHNubXAvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgsICAgCisgICAgICBzbm1wbGliL3NubXBfbG9nZ2luZy5jOgorCisgICBsYXN0IG9mIHRoZSBwZXJsLXVzZWQgZmVhdHVyZSBmdW5jdGlvbnMKKworMjAxMS0wNS0wNCAxNDo0MCAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvUm1vbi9ldmVudC5jLCBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlX3N1YmFnZW50LmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguYywgYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYywgICAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9zdWJhZ2VudC5tMmMsIHNubXBsaWIvbWliLmMsIHNubXBsaWIvcGFyc2UuYzoKKworICAgc3RhcnRlZCB0aGUgZmluYWwgc2V0IG9mIGZ1bmN0aW9uIHJlbW92YWxzIGZvciBmZWF0dXJlcyByZXF1aXJlZAorICAgYnkgcGVybC9weXRob24KKworMjAxMS0wNS0wNCAxNDozOSAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1zb3VyY2UtaW5jbHVkZXMubTJpOgorCisgICBhZGRlZCB0aGUgbmV0LXNubXAtZmVhdHVyZXMuaCBoZWFkZXIKKworMjAxMS0wNS0wNCAxNDozOSAgaGFyZGFrZXIKKworICAgKiAgcGVybC9PSUQvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgsICAgCisgICAgICBwZXJsL1NOTVAvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgsICAgCisgICAgICBwZXJsL1RyYXBSZWNlaXZlci9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaCwgICAKKyAgICAgIHBlcmwvYWdlbnQvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmg6CisKKyAgIEFkZGVkIHBlcmwgZmVhdHVyZSByZXF1aXJlbWVudHMKKworMjAxMS0wNS0wNCAxNDozOSAgaGFyZGFrZXIKKworICAgKiAgTWFrZWZpbGUuaW4sIE1ha2VmaWxlLnJ1bGVzLCBjb25maWd1cmUsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wZXJsX3B5dGhvbiwgICAKKyAgICAgIHBlcmwvQVNOL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oLCAgIAorICAgICAgcGVybC9PSUQvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgsICAgCisgICAgICBwZXJsL1NOTVAvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgsICAgCisgICAgICBwZXJsL2FnZW50L25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oLCAgIAorICAgICAgcGVybC9kZWZhdWx0X3N0b3JlL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oOgorCisgICBob3BlZnVsbHkgd29ya2luZyBydWxlcyB0byBhcHBseSBmZWF0dXJlIHJlcXVpcmVtZW50cyB0byBwZXJsIGFuZAorICAgcHl0aG9uCisKKzIwMTEtMDUtMDQgMTQ6MzggIGhhcmRha2VyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfaW9jdGwuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX3NvbGFyaXMyLmMsICAgCisgICAgICBhZ2VudC9zbm1wX2FnZW50LmM6CisKKyAgIG1vcmUgY2hhbmdlcyB0byByZW1vdmUgdW5uZWVkZWQgZnVuY3Rpb25zIHByaW1hcmlseSB3aGVuIHdyaXRlCisgICBtb2RlIGlzIHR1cm5lZCBvZmYKKworMjAxMS0wNS0wNCAxNDozNyAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3NubXBfbG9nZ2luZy5jOgorCisgICBjaGFuZ2UgdGhlIHdhbnQgaW52b2NhdGlvbiB0byBvbmx5IGRlZmF1bHQgdG8gZXhjbHVkZSBleHRlcm5hbAorICAgaG9va3MKKworMjAxMS0wNS0wNCAxNDozNyAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZpbmQtdW51c2VkLWNvZGU6CisKKyAgIHNlYXJjaCB0aHJvdWdoIC54cyBmaWxlcyBmb3IgZnVuY3Rpb24gaW52b2NhdGlvbnMKKworMjAxMS0wNS0wNCAxNDozNyAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9hdXRvX25saXN0LmM6CisKKyAgIGZvcmdvdCBhIHNlbWljb2xvbgorCisyMDExLTA1LTA0IDE0OjM3ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9SbW9uL2FsYXJtVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uVGFibGUuYzoKKworICAgaXF1ZXJ5IHBkdSBzZXNzaW9ucyBhcmUgb25seSBuZWVkZWQgaW4gd3JpdGUgbW9kZS4KKworMjAxMS0wNS0wNCAxNDozNiAgaGFyZGFrZXIKKworICAgKiBhcHBzL01ha2VmaWxlLmluOgorCisgICBmaXggZmVhdHVyZSBkZXRlY3Rpb24gb2Ygc29tZXRpbWVzLWJ1aWx0IGFwcGxpY2F0aW9ucworCisyMDExLTA1LTA0IDE0OjM2ICBoYXJkYWtlcgorCisgICAqIGFnZW50L2F1dG9fbmxpc3QuYzoKKworICAgdXNlIHRoZSBmZWF0dXJlX3VudXNlZCBtYWNybyBmb3IgbWFraW5nIGFuIGVtcHR5IGZpbGUgZm9yCisgICBjb25zaXN0ZW5jeQorCisyMDExLTA1LTA0IDE0OjM2ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYywgYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmMsICAKKyAgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvaHdfZnN5cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9uZXR3b3JrLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX29wZW5ic2QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc29sYXJpczIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc3lzY3RsLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2NvbW1vbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1DZXJ0VG9UU05UYWJsZS9zbm1wVGxzdG1DZXJ0VG9UU05UYWJsZS5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5jLCBhcHBzL3NubXB0bHMuYywgICAKKyAgICAgIHNubXBsaWIvY2VydF91dGlsLmMsIHNubXBsaWIvbWliLmMsIHNubXBsaWIvc25tcF9vcGVuc3NsLmMsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYzoKKworICAgQW5vdGhlciBzd2VlcCBmb3IgdW51c2VkIGZ1bmN0aW9ucyB3aGVuIHJlYWRfb25seSBtb2RlIGlzIHR1cm5lZAorICAgb24KKworMjAxMS0wNS0wNCAxNDozNCAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvaGVscGVycy90YWJsZV90ZGF0YS5jLCBhZ2VudC9taWJncm91cC9SbW9uL2FsYXJtVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jLCBhZ2VudC9taWJncm91cC9hZ2VudC9uc0xvZ2dpbmcuYywgIAorICAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJEZWx0YVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBFeHByZXNzaW9uVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cE9iamVjdFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc3lzY3RsLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWJfNV81LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQWRkclRhYmxlL3NubXBUbHN0bUFkZHJUYWJsZS5jLCAKKyAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1DZXJ0VG9UU05UYWJsZS9zbm1wVGxzdG1DZXJ0VG9UU05UYWJsZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1QYXJhbXNUYWJsZS9zbm1wVGxzdG1QYXJhbXNUYWJsZS5jLAorICAgICAgICAgc25tcGxpYi9jaGVja192YXJiaW5kLmM6CisKKyAgIG1hcmsgYSBzbGV3IG9mIGZ1bmN0aW9ucyBhcyBmZWF0dXJlcyB0aGF0IGFyZSBvbmx5IG5lZWRlZCB3aXRoCisgICB3cml0ZV9zdXBwb3J0CisKKzIwMTEtMDUtMDQgMTQ6MzIgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9maW5kLXVudXNlZC1jb2RlOgorCisgICBydW4gZ3JlcCB3aXRoIC1uCisKKzIwMTEtMDUtMDQgMTQ6MzIgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jLCBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYzoKKworICAgZmVhdHVyaXplIG5ldHNubXBfc29ja2FkZHJfc2l6ZQorCisyMDExLTA1LTA0IDE0OjMyICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYzoKKworICAgcmVtb3ZlIGEgZmVhdHVyZV9yZXF1aXJlIG5vdCBhY3R1YWxseSBuZWVkZWQuCisKKzIwMTEtMDUtMDQgMTQ6MzEgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi9jZXJ0X3V0aWwuYywgc25tcGxpYi9jb250YWluZXIuYzoKKworICAgbWFyayBTVUJDT05UQUlORVJfRklORCBhcyBhIGZlYXR1cmUKKworMjAxMS0wNS0wNCAxNDozMSAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3NubXBfY2xpZW50LmMsIHNubXBsaWIvc25tcHRzbS5jOgorCisgICB0aGUgcm93IGNyZWF0aW9uIEFQSSBpcyBvbmx5IHVzZWQgaW4gdGhlIFRTTSBpbXBsZW1lbnRhdGlvbgorCisyMDExLTA1LTA0IDE0OjMxICBoYXJkYWtlcgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYywgc25tcGxpYi9zbm1wdHNtLmM6CisKKyAgIHRoZSBuZXdlciBjb250ZXh0IGVuZ2luZUlEIHByb2JpbmcgaXMgb25seSBuZWVkZWQgaWZmIFRTTSBpcyBpbgorICAgdXNlCisKKzIwMTEtMDUtMDQgMTQ6MzAgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi9kaXJfdXRpbHMuYzoKKworICAgZml4IGFuIGlmZGVmIHR5cG8KKworMjAxMS0wNS0wNCAxNDozMCAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3NubXBfb3BlbnNzbC5jOgorCisgICBtb3ZlZCBmZXRhdXJlIGNoaWxkX29mIHN0YXRlbWVudHMgdG8gdGhlIHRvcCBvZiB0aGUgZmlsZQorCisyMDExLTA1LTA0IDE0OjMwICBoYXJkYWtlcgorCisgICAqICBzbm1wbGliL2NlcnRfdXRpbC5jLCBzbm1wbGliL2NvbnRhaW5lci5jLCBzbm1wbGliL2Rpcl91dGlscy5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wX29wZW5zc2wuYzoKKworICAgbWFya2VkIGEgY291cGxlIG9mIHJhcmVseSB1c2VkIGNvbnRhaW5lciBmdW5jdGlvbnMuCisKKzIwMTEtMDUtMDQgMTQ6MjkgIGhhcmRha2VyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYzoKKworICAgc3BsaXQgb3V0IHRoZSBwcmVmaXhfaW5mbyBmZWF0dXJlIGludG8gc3ViLWZlYXR1cmVzCisKKzIwMTEtMDUtMDQgMTQ6MjkgIGhhcmRha2VyCisKKyAgICogCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfaW50ZXJmYWNlLmM6CisKKyAgIG1hcmsgdGhlIGFjY2Vzc29yIGZ1bmN0aW9ucyBhcyB1bm5lZWRlZAorCisyMDExLTA1LTA0IDE0OjI5ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmM6CisKKyAgIGZpeCBhIGNoaWxkX29mIHN0YXRlbWVudCB3aXRoIGEgY29weS9wYXN0ZSBlcnJvcgorCisyMDExLTA1LTA0IDE0OjI4ICBoYXJkYWtlcgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYzoKKworICAgdGhlIGNvbnRhaW5lciByb3ctcmVtb3ZlIGlzIG9ubHkgbmVlZGVkIGlmIHRoZSB0ZGF0YSByZW1vdmVfcm93CisgICBpcyBuZWVkZWQKKworMjAxMS0wNS0wNCAxNDoyOCAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvaGVscGVycy90YWJsZV90ZGF0YS5jLCBhZ2VudC9taWJncm91cC9SbW9uL2FsYXJtVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1BZGRyVGFibGUvc25tcFRsc3RtQWRkclRhYmxlLmMsIAorICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bVBhcmFtc1RhYmxlL3NubXBUbHN0bVBhcmFtc1RhYmxlLmM6CisKKyAgIGZlYXR1cmUgbWFya2luZyBvZiB1bnVzZWQgdGRhdGEgZnVuY3Rpb25zCisgICB0YWJsZV90ZGF0YV9kZWxldGVfdGFibGUKKyAgIHRhYmxlX3RkYXRhX2V4dHJhY3RfdGFibGUKKyAgIHRhYmxlX3RkYXRhX3JlbW92ZV9yb3cKKworMjAxMS0wNS0wNCAxNDoyNyAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZUV2ZW50VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RhdGFfc2V0LmM6CisKKyAgIHJlbW92YWwgb2Ygc29tZSByYXJlbHkgdXNlZCBmdW5jdGlvbnMKKyAgIHRhYmxlX3NldF9tdWx0aV9hZGRfZGVmYXVsdF9yb3cKKyAgIHRhYmxlX2RhdGFzZXRfdW5yZWdpc3Rlcl9hdXRvX2RhdGFfdGFibGUKKworMjAxMS0wNS0wNCAxNDoyNyAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czoKKworICAgQWRkZWQgYSBkZWZpbml0aW9uIHRvIGluY29ycG9yYXRlIHJlYWRfb25seS9ub3RpZnlfb25seQorCisyMDExLTA1LTA0IDE0OjI3ICBoYXJkYWtlcgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5jOgorCisgICBhZGRlZCBhIG1pc3NpbmcgZmVhdHVyZSBkZWZpbml0aW9uIGxpbmUKKworMjAxMS0wNS0wNCAxNDoyNiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9NYWtlZmlsZS5pbjoKKworICAgYWRkZWQgYmFjayBpbiBtaXNzaW5nIG1pYmdyb3VwIGZlYXR1cmUgZGVmaW5pdGlvbiBsaXN0CisKKzIwMTEtMDUtMDQgMTQ6MjYgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6CisKKyAgIEluY2x1ZGUgdGhlIG9yaWdpbmFsIGJhc2UgZmxhZ3MgdG8gZW5zdXJlIC0td2l0aC1kZWZhdWx0cyBnZXRzCisgICBwaWNrZWQgdXAKKworMjAxMS0wNS0wNCAxNDoyNiAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czoKKworICAgZml4IHVzYWdlCisKKzIwMTEtMDUtMDQgMTQ6MjYgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6CisKKyAgIEFkZGVkIGEgLWIgZmxhZyBmb3IgYmFzZSBhcmd1bWVudHMgdG8gc3RhcnQgZnJvbQorCisyMDExLTA1LTA0IDE0OjI1ICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOgorCisgICBkZWZhdWx0IHRvIGEgbGluZWFyIHNlYWNoIG9mIHNpemUgdGVzdHMsIHJhdGhlciB0aGFuIGV4cG9uZW50aWFsCisKKzIwMTEtMDUtMDMgMTg6NTUgIGJ2YXNzY2hlCisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaCwgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4uYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogR3VhcmQgbmV0c25tcF91ZHBfcmVjdmZyb20oKSBldGMuIGRlY2xhcmF0aW9ucworICAgY29uc2lzdGVudGx5LgorICAgQ0hBTkdFUzogV2luMzI6IEJ1aWxkcyB3aXRoIFZpc3VhbCBTdHVkaW8gMjAxMC4KKworMjAxMS0wNS0wMyAxNToyOSAgYnZhc3NjaGUKKworICAgKiBzbm1wbGliL3dpbnNlcnZpY2UuYzoKKworICAgQ0hBTkdFUzogV2luMzI6IFBBVENIOiAzMjkzODQyOiBFbGltaW5hdGUgcmVnaXN0cnkgYXJndW1lbnQgbGltaXQKKyAgIG9mIDEyNyBjaGFyYWN0ZXJzICh0aGlzIGxpbWl0YXRpb24gd2FzIHJlcG9ydGVkIGJ5IFN5bHZhaW4gRGVyeSkuCisKKzIwMTEtMDUtMDIgMTE6MjIgIGJ2YXNzY2hlCisKKyAgICogIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIENIQU5HRVM6IFdpbjMyOiBoZWFkZXIgZmlsZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNhbiBub3cKKyAgIGJlIHVzZWQgaW4gdGhlIE1pbkdXIGVudmlyb25tZW50LgorCisyMDExLTA0LTI5IDExOjE3ICBidmFzc2NoZQorCisgICAqIHNubXBsaWIvd2luc2VydmljZS5jOgorCisgICBTcGVsbGluZyBhbmQgZ3JhbW1hciBmaXhlcyBmb3IgdGhlIHNvdXJjZSBjb2RlIGNvbW1lbnRzIGluCisgICBzbm1wbGliL3dpbnNlcnZpY2UuYy4KKworMjAxMS0wNC0yOSAwMDoyMyAgaGFyZGFrZXIKKworICAgKiBORVdTOgorCisgICBhZGRlZCBub3RlIGFib3V0IHRoZSBuZXcgdGltaW5nIGZ1bmN0aW9uCisKKzIwMTEtMDQtMjkgMDA6MTQgIGhhcmRha2VyCisKKyAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6CisKKyAgIFVwZGF0ZSB0aGUgbWFudWFsIHBhZ2UgdG8gcmVmbGVjdCB0aGUgbmV3IHRpbWluZyBvcHRpb25zCisKKzIwMTEtMDQtMjkgMDA6MTQgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi90b29scy5jOgorCisgICBiZXR0ZXIgZG9jdW1lbnRhdGlvbgorCisyMDExLTA0LTI5IDAwOjE0ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29uZi5jOgorCisgICB1c2UgdGhlIG5ldHNubXBfc3RyaW5nX3RpbWVfdG9fc2VjcygpIGZvciBwYXJzaW5nCisgICBmcmVxdWVuY2llcy90aW1lCisKKzIwMTEtMDQtMjkgMDA6MTMgIGhhcmRha2VyCisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMTAycGR1X2J1aWxkX2NsaWIuYzoKKworICAgZml4IHBkdSBidWlsZGluZyB0ZXN0cyB1bmRlciB2YXJpb3VzIGRpc2FibGVkIG1vZGVzCisKKzIwMTEtMDQtMjkgMDA6MTMgIGhhcmRha2VyCisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMTAycGR1X2J1aWxkX2NsaWIuYzoKKworICAgZG9uJ3QgdHJ5IHRvIGJ1aWxkIHRoZSBHRVQgcGR1IHVuZGVyIG5vdGlmeV9vbmx5CisKKzIwMTEtMDQtMjkgMDA6MTIgIGhhcmRha2VyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgsIHNubXBsaWIvdG9vbHMuYzoKKworICAgZml4IGEgYnVnIHdpdGggbm8tc3VmZml4IHN0cmluZ3MgYW5kIHVzZSBhIGNvbnN0IGlucHV0IHN0cmluZworCisyMDExLTA0LTI5IDAwOjEyICBoYXJkYWtlcgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAxMG5ldHNubXBfc3RyaW5nX3RpbWVfdG9fc2Vjc19jbGliLmM6CisKKyAgIEEgbmV3IHVuaXQgdGVzdCBmb3IgdGhlIHRpbWUgY29udmVyc2lvbiByb3V0aW5lCisKKzIwMTEtMDQtMjkgMDA6MTIgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzoKKworICAgdXNlIHRoZSBuZXRzbm1wX3N0cmluZ190aW1lX3RvX3NlY3MoKSBmdW5jdGlvbiBmb3IgY29tcHV0aW5nCisgICBpbnRlcnZhbCBwZXJpb2RzCisKKzIwMTEtMDQtMjkgMDA6MTEgIGhhcmRha2VyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgsIHNubXBsaWIvdG9vbHMuYzoKKworICAgQWRkZWQgYSBuZXRzbm1wX3N0cmluZ190aW1lX3RvX3NlY3MoKSBmdW5jdGlvbnMgdG8gY29udmVydCwgZS5nLiwKKyAgIDFoIHRvIDM2MDAKKworMjAxMS0wNC0yOSAwMDoxMSAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CisKKyAgIHJlbW92ZSBjb2RlIHRvIGJ1aWxkL3BhcnNlIEdFVC9ldGMgcmVxdWVzdHMgd2hlbiBOT1RJRllfT05MWSBpcworICAgdHVybmVkIG9uLgorCisyMDExLTA0LTI3IDIxOjMzICBoYXJkYWtlcgorCisgICAqIE5FV1M6CisKKyAgIHVwZGF0ZSB0aGUgTkVXUyB0byByZWZsZWN0IHRoZSBuZXcgLS1lbmFibGUtcmVhZC1vbmx5IGFuZAorICAgLS1lbmFibGUtbm90aWZ5LW9ubHkKKworMjAxMS0wNC0yNyAyMTozMyAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9pbnRlcmZhY2UuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYzoKKworICAgbWlub3IgaW1wcm92ZW1lbnRzIGZvciByb25seSB2cyByd3JpdGUgaGFuZGxpbmcKKworMjAxMS0wNC0yNyAyMTozMiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5jOgorCisgICBzdGlsbCBlbmFibGUgUk9OTFkgd2hlbiBSV1JJVEUgaXNuJ3QgcG9zc2libGUKKworMjAxMS0wNC0yNyAyMTozMiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYzoKKworICAgZml4IEdFVCBzdXBwb3J0IHdoZW4gbm9fd3JpdGUgaXMgZW5hYmxlZAorCisyMDExLTA0LTI3IDIxOjMyICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6CisKKyAgIG1hcmsgYSBmdXR1cmUgbW9kaWZpY2F0aW9uIG5lZWQgaW4gYSBjb21tZW50CisKKzIwMTEtMDQtMjcgMjE6MzEgIGhhcmRha2VyCisKKyAgICogYWdlbnQvaGVscGVycy9vbGRfYXBpLmM6CisKKyAgIGZpeCBoYW5kbGluZyBvZiBub193cml0ZSBzdXBwb3J0CisKKzIwMTEtMDQtMjcgMjE6MzEgIGhhcmRha2VyCisKKyAgICogYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYywgYWdlbnQvc25tcF9hZ2VudC5jLCBhZ2VudC9zbm1wZC5jOgorCisgICBkb24ndCBvcGVuIGFueSBsaXN0ZW5pbmcgdHJhbnNwb3J0cyB3aGVuIG5vdGlmeS1vbmx5IGlzIHNwZWNpZmllZAorCisyMDExLTA0LTI3IDIxOjMxICBoYXJkYWtlcgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGU6CisKKyAgIHNldCB0aGUgbm8tbGlzdGVuIGFuZCByZWFkLW9ubHkgZmxhZ3Mgd2hlbiAtLWVuYWJsZS1ub3RpZnktb25seQorICAgaXMgc2V0CisKKzIwMTEtMDQtMjcgMjE6MzAgIGhhcmRha2VyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgcmFuIGF1dG9oZWFkZXIKKworMjAxMS0wNC0yNyAyMTozMCAgaGFyZGFrZXIKKworICAgKiAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmMsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVBYRG9tYWluLmMsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFNTSERvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVENQSVB2NkRvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmM6CisKKyAgIGltcGxlbWVudCB0aGUgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCBpbiB0aGVzZSB0cmFuc3BvcnRzCisKKzIwMTEtMDQtMjcgMjE6MzAgIGhhcmRha2VyCisKKyAgICogY29uZmlndXJlOgorCisgICBydW4gYXV0b2NvbmYKKworMjAxMS0wNC0yNyAyMToyOSAgaGFyZGFrZXIKKworICAgKiBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZToKKworICAgbW92ZSB0aGUgcmVhZC1vbmx5IGZsYWcgZGVmaW5pdGlvbiBiZWxvdyB0aGUgbm90aWZ5LW9ubHksIHNpbmNlCisgICBub3RpZnktb25seSBuZWVkcyB0byBpbXBseSByZWFkLW9ubHkKKworMjAxMS0wNC0yNyAyMToyOSAgaGFyZGFrZXIKKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlOgorCisgICBEZWZpbmVkIGEgbmV3IC0tZW5hYmxlLW5vdGlmeS1vbmx5IGZsYWcgZm9yIGJ1aWxkaW5nIGEgdG9vbHNldAorICAgdGhhdCBvbmx5IGFsbG93cyBmb3Igbm90aWZpY2F0aW9ucyB3aXRoIG5vIHJlYWQvd3JpdGUgc3VwcG9ydAorCisyMDExLTA0LTI3IDIxOjI5ICBoYXJkYWtlcgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGU6CisKKyAgIERlZmluZWQgYSBuZXcgLS1uby1saXN0ZW4gZmxhZyB0byByZW1vdmUgbGlzdGVuaW5nIHN1cHBvcnQKKworMjAxMS0wNC0yNyAyMToyOCAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9kZWZhdWx0X21vZHVsZXMuaDoKKworICAgdGhlIGRpc21hbiBzY2hlZHVsZSBtaWIgaXMgb25seSB1c2VmdWwgd2hlbiBTRVRzIGFyZSB0dXJuZWQgb24KKworMjAxMS0wNC0yNyAyMToyOCAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9kaXNtYW4uaDoKKworICAgdGhlIGRpc21hbiBzY2hlZHVsZSBtaWIgaXMgb25seSB1c2VmdWwgd2hlbiBTRVRzIGFyZSB0dXJuZWQgb24KKworMjAxMS0wNC0yNyAyMToyOCAgaGFyZGFrZXIKKworICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuYywgIAorICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuYywgCisgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2ludGVyZmFjZS5jOgorCisgICBmaW5pc2hlZCBub193cml0ZSBzdXBwb3J0IGZvciBjb21tb24gaW5jbHVkZWQgdGFibGVzCisKKzIwMTEtMDQtMjcgMjE6MjcgIGhhcmRha2VyCisKKyAgICogYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmM6CisKKyAgIEFkZCBiYWNrIGluICduZXRzbm1wX3NldF9yb3dfY29sdW1uJyB3aGVuIG5vX3dyaXRlIHN1cHBvcnQgaXMKKyAgIGVuYWJsZWQKKyAgIFRoaXMgZnVuY3Rpb24gaXMgYSBnZW5lcmljIGRhdGEgbWFuaXB1bGF0aW9uIGZ1bmN0aW9uLCBub3QgU0VUCisgICBzcGVjaWZpYworCisyMDExLTA0LTI3IDIxOjI3ICBoYXJkYWtlcgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jOgorCisgICBkb24ndCB1c2UgbWFya19yb3dfY29sdW1uX3dyaXRhYmxlIHdoZW4gcmVhZC1vbmx5IHN1cHBvcnQgaXMKKyAgIGVuYWJsZWQKKworMjAxMS0wNC0yNyAyMToyNiAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNDYWNoZS5jLCBhZ2VudC9taWJncm91cC9hZ2VudC9uc0RlYnVnLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc0xvZ2dpbmcuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcF9zY2FsYXJzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jLCBhZ2VudC9taWJncm91cC9taWJJSS91ZHBUYWJsZS5jLCAKKyAgICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9vdmVycmlkZS5jOgorCisgICBmaXggbm9fd3JpdGUgc3VwcG9ydAorCisyMDExLTA0LTI3IDIxOjI2ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jOgorCisgICBmaXggbm9fd3JpdGUgc3VwcG9ydAorCisyMDExLTA0LTI3IDIxOjE2ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYzoKKworICAgRG9uJ3QgZnJlZSB0aGUgaWZYVGFibGUgcm93IGZvdW5kIG9uIGxvYWQgZmFpbHVyZSBhcyB3ZSBkb24ndCBvd24KKyAgIGl0CisKKzIwMTEtMDQtMjYgMTg6MTYgIGhhcmRha2VyCisKKyAgICogbG9jYWwvZ2l0dG9vbHMsIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczoKKworICAgZ2l0IGJhc2gtc2hlbGwgZnVuY3Rpb25zIHRvIGVuYWJsZSBicmFuY2ggc3dpdGNoaW5nIGFuZCBleHRlcm5hbAorICAgYnVpbGRpbmcKKyAgIFRoZXNlIGxvY2FsIHNoZWxsIGZ1bmN0aW9ucyAoc25tcGNvbmZpZ3VyZSBhbmQgc25tcG1ha2UpIGxldCB5b3UKKyAgIGNvbmZpZ3VyZSBhbmQgYnVpbGQgdGhlIE5ldC1TTk1QIHNvdXJjZSBjb2RlIGluIGV4dGVybmFsCisgICBkaXJlY3RvcmllcworICAgdGhhdCBhcmUgYXV0by1jYWxjdWxhdGVkIGJhc2VkIG9uIHRoZSBleGlzdGluZyBicmFuY2ggbmFtZSAod2l0aAorICAgYW4KKyAgIG9wdGlvbmFsIHN1ZmZpeCkuIFRoaXMgbGV0cyB5b3UgcnVuICdzbm1wbWFrZScgZnJvbSB3aXRoaW4gdGhlCisgICBzb3VyY2UKKyAgIGRpcmVjdG9yeSBhbmQgaGF2ZSBpdCBhY3R1YWxseSBleHRlcm5hbGx5IGtlZXAgdHJhY2sgb2YgbW9kaWZpZWQKKyAgIGZpbGVzLCBldGMsIHNvIGJ1aWxkaW5nIGluIG11bHRpcGxlIGJyYW5jaGVzIGNhbiBiZSBkb25lIGZyb20gYQorICAgc2luZ2xlCisgICBnaXQgY2hlY2tvdXQuCisKKzIwMTEtMDQtMjUgMjA6NTcgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzoKKworICAgY2xlYW4gdXAgdGhlIGl0ZXJhdG9ycworCisyMDExLTA0LTI1IDIwOjU3ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6CisKKyAgIGZyZWUgdmFyYmluZHMgYWZ0ZXIgc2VuZGluZworCisyMDExLTA0LTI1IDE4OjQ4ICBidmFzc2NoZQorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jOgorCisgICBDb21tZW50ZWQgb3V0IGFuIHVudXNlZCBmdW5jdGlvbiBiZWNhdXNlIHRoZSBjb21waWxlciBjb21wbGFpbmVkCisgICBhYm91dCBpdC4KKworMjAxMS0wNC0yNSAxODo0NiAgYnZhc3NjaGUKKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYzoKKworICAgRml4ZWQgdHdvIGNvbXBpbGVyIHdhcm5pbmdzLgorCisyMDExLTA0LTIzIDE0OjMxICBtYWdmcgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5jOgorCisgICBSZW1vdmUgdW5uZWNlc3NhcnkgbnVsbCBjaGVjaworCisyMDExLTA0LTIzIDE0OjA1ICBtYWdmcgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmM6CisKKyAgIE1vdmUgcG9pbnRlciBkZXJlZmVyZW5jZSB0byBhZnRlciB0aGUgY2hlY2sgZm9yIHN1Y2Nlc3NmdWwKKyAgIGFsbG9jYXRpb24gb2YgdGhlIHBvaW50ZXIKKworMjAxMS0wNC0yMyAwODoyMCAgbWFnZnIKKworICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jOgorCisgICBSZWR1Y2UgdmFyaWFibGUgc2NvcGUKKworMjAxMS0wNC0yMyAwODoxNiAgbWFnZnIKKworICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jOgorCisgICBSZW1vdmUgYW4gdW51c2VkIHZhcmlhYmxlCisKKzIwMTEtMDQtMjMgMDg6MDYgIG1hZ2ZyCisKKyAgICogYWdlbnQvYWdlbnRfcmVnaXN0cnkuYzoKKworICAgUmVkdWNlIHZhcmlhYmxlIHNjb3BlCisKKzIwMTEtMDQtMjMgMDc6NTUgIG1hZ2ZyCisKKyAgICogYWdlbnQvYWdlbnRfcmVnaXN0cnkuYzoKKworICAgUmVkdWNlIHZhcmlhYmxlIHNjb3BlCisKKzIwMTEtMDQtMjIgMTk6MzUgIG1hZ2ZyCisKKyAgICogYWdlbnQvYWdlbnRfdHJhcC5jOgorCisgICBSZWR1Y2UgdmFyaWFibGUgc2NvcGUKKworMjAxMS0wNC0yMiAxOTozMCAgbWFnZnIKKworICAgKiBhZ2VudC9hZ2VudF90cmFwLmM6CisKKyAgIFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKKworMjAxMS0wNC0yMiAxNzoyOSAgaGFyZGFrZXIKKworICAgKiBtYW4vc25tcGQuY29uZi41LmRlZjoKKworICAgbWVudGlvbiB3aGljaCBtb2R1bGUgaXMgcmVxdWlyZWQgd2hlbiBidWlsZGluZyB0byBnZXQgdGhlIGRlbGl2ZXIKKyAgIHN1cHBvcnQKKworMjAxMS0wNC0yMiAxNjozMyAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOgorCisgICBkZWxldGVkIGFuIHVubmVlZGVkIGRlYnVnZ2luZyBzdGF0ZW1lbnQKKworMjAxMS0wNC0yMiAxNjozMyAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOgorCisgICBwcm9wZXJseSB1cGRhdGUgdGhlIG1heCBjb3VudCBpbiB0aGUgb3V0Z29pbmcgbm90aWZpY2F0aW9ucworCisyMDExLTA0LTIyIDE2OjMyICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6CisKKyAgIGJldHRlciBwYWNrZXQgZXN0aW1hdGlvbiB0byBlbnN1cmUgd2UgZG9uJ3Qgb3ZlcnJ1bi4KKworMjAxMS0wNC0yMiAxNjozMiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOgorCisgICBlc3RpbWF0ZSB0aGUgcGFja2V0IHNpemUgYW5kIGJyZWFrIHRoZSBub3RpZmljYXRpb24gdXAgYmFzZWQgb24KKyAgIGl0CisKKzIwMTEtMDQtMjIgMTY6MzEgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzoKKworICAgdHJhbnNmb3JtIHRoZSBub3RpZmljYXRpb24gc2VuZGluZyBpbnRvIGEgbGFyZ2VyIGxvb3AgZm9yIGxhdGVyCisgICBtdWx0aS1ub3RpZnMKKworMjAxMS0wNC0yMiAxNjozMSAgaGFyZGFrZXIKKworICAgKiBORVdTOgorCisgICBmdXJ0aGVyIGluZm9ybWF0aW9uIGFib3V0IGZlYXR1cmUgbWFya2luZy9zZWxlY3Rpb24KKworMjAxMS0wNC0yMiAxNjozMSAgaGFyZGFrZXIKKworICAgKiBORVdTOgorCisgICBtZW50aW9uIHRoZSBuZXcgZGVsaXZlcnkgYnkgbm90aWZpY2F0aW9ucworCisyMDExLTA0LTIyIDE2OjMxICBoYXJkYWtlcgorCisgICAqIE5FV1M6CisKKyAgIGRvY3VtZW50IHRoZSBtaW5pbWFsaXN0IHN1cHBvcnQKKworMjAxMS0wNC0yMiAxNjozMCAgaGFyZGFrZXIKKworICAgKiBtYW4vc25tcGQuY29uZi41LmRlZjoKKworICAgZG9jdW1lbnQgdGhlIG5ldyBkZWxpdmVyQnlOb3RpZnkgY29uZmlnIHRva2VucworCisyMDExLTA0LTIyIDE2OjMwICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6CisKKyAgIGFsbG93IHJ1biB0aW1lIG1vZGlmaWNhdGlvbnMgb2YgdGhlIE9JRHMgdG8gdXNlCisKKzIwMTEtMDQtMjIgMTY6MzAgIGhhcmRha2VyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5oOgorCisgICBhZGQgY29uZmlnIGZsYWdzIHRvIG5vdCBpbmNsdWRlIHRoZSBwZXJpb2QgY29uZmlnIGFuZCBtc2cgY291bnQKKyAgIHZhbHVlcworCisyMDExLTA0LTIyIDE2OjI5ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6CisKKyAgIGluY2x1ZGUgdGhlIHBlcmlvZGljIGNvdW50LCB0aGUgbWVzc2FnZSBudW1iZXIgYW5kIHRoZSBtYXgKKyAgIG1lc3NhZ2UgbnVtYmVyCisKKzIwMTEtMDQtMjIgMTY6MjkgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzoKKworICAgZGVsZXRlZCBkZWJ1Z2dpbmcgY29tbWVudAorCisyMDExLTA0LTIyIDE2OjI5ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jLCAgIAorICAgICAgbWlicy9ORVQtU05NUC1QRVJJT0RJQy1OT1RJRlktTUlCLnR4dDoKKworICAgTW92ZSB0aGUgbm90aWZpY2F0aW9uIGRlZmluaXRpb24gdG8gd2l0aGluIHRoZSBzdWItbWliCisKKzIwMTEtMDQtMjIgMTY6MjggIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzoKKworICAgZGVsZXRlIGFuIHVudXNlZCB2YXJpYWJsZQorCisyMDExLTA0LTIyIDE2OjI4ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5Lmg6CisKKyAgIGxvYWQgdGhlIE1JQiBpbnRvIHRoZSBkZWZhdWx0IHNldAorCisyMDExLTA0LTIyIDE2OjI4ICBoYXJkYWtlcgorCisgICAqIG1pYnMvTkVULVNOTVAtUEVSSU9ESUMtTk9USUZZLU1JQi50eHQ6CisKKyAgIEEgbmV3IG1pYiB0byBob2xkIHRoZSBwZXJpb2RpYyBub3RpZnkgb2JqZWN0cworCisyMDExLTA0LTIyIDE2OjI4ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6CisKKyAgIGZpbGwgb3V0IHRoZSBjb25maWcgZnJlZSByb3V0aW5lCisKKzIwMTEtMDQtMjIgMTY6MjcgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzoKKworICAgcHJvcGVybHkgbW9uaXRvciB0aGUgd2hvbGUgY29udGFpbmVyCisKKzIwMTEtMDQtMjIgMTY6MjcgIGhhcmRha2VyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5oOgorCisgICBwYXJzZSB0aGUgY29uZiBmaWxlcyBhbmQgY3JlYXRlIGFuZCBpbnNlcnQgb2JqZWN0cyBpbnRvIHRoZQorICAgY29udGFpbmVyCisKKzIwMTEtMDQtMjIgMTY6MjcgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzoKKworICAgZGVmaW5lZCBhIGNvbnRhaW5lciB0byBzdG9yZSBhIGxpc3Qgb2YgZGVsaXZlciBvYmplY3RzIGluCisKKzIwMTEtMDQtMjIgMTY6MjcgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaDoKKworICAgYWRkZWQgYSBuZXh0X3J1biB0aW1lc3RhbXAKKworMjAxMS0wNC0yMiAxNjoyNiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOgorCisgICBhY3R1YWxseSBzZW5kIGEgbm90aWZpY2F0aW9uIHdpdGggdGhlIHJlc3VsdHMKKworMjAxMS0wNC0yMiAxNjoyNiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOgorCisgICBtYWtlIHRoZSB3YWxrIG9uIHRoZSB0ZXN0IG9iamVjdCBmdW5jdGlvbi4KKworMjAxMS0wNC0yMiAxNjoyNiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOgorCisgICBjcmVhdGUgYSBtYXggcGFja2V0IHNpemUgY29uZmlnIHRva2VuIGFuZCBwYXJzZSBpdAorCisyMDExLTA0LTIyIDE2OjI1ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaDoKKworICAgbWluaW1hbCBzdGFydGluZyB0ZXN0IG9iamVjdAorCisyMDExLTA0LTIyIDE2OjI1ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaDoKKworICAgYWRkZWQgYSBmdW5jdGlvbiB0byBjYWxjdWxhdGUgdGhlIHRpbWUgdW50aWwgdGhlIG5leHQgcnVuCisKKzIwMTEtMDQtMjIgMTY6MjUgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzoKKworICAgcmVtb3ZlIGxlZnQgaW4gdGVtcGxhdGUgbGluZQorCisyMDExLTA0LTIyIDE2OjI1ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaDoKKworICAgdXNlIGFuIGFsYXJtIGNhbGxiYWNrIHByb3RvdHlwZSBmb3IgZXhlY3V0ZQorCisyMDExLTA0LTIyIDE2OjI0ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9kZWxpdmVyLCBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jLCAKKyAgICAgICAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaDoKKworICAgYmVnaW5uaW5nIHRlbXBsYXRlIGNvZGUgZm9yIGRlbGl2ZXJ5IG9mIGRhdGEgYnkgbm90aWZpY2F0aW9ucworCisyMDExLTA0LTIyIDA5OjEzICBtYWdmcgorCisgICAqIGFnZW50L3NubXBfYWdlbnQuYzoKKworICAgUmVkdWNlIHZhcmlhYmxlIHNjb3BlCisKKzIwMTEtMDQtMjIgMDk6MDcgIG1hZ2ZyCisKKyAgICogYWdlbnQvc25tcF9hZ2VudC5jOgorCisgICBSZWR1Y2UgdmFyaWFibGUgc2NvcGVzCisKKzIwMTEtMDQtMjIgMDk6MDMgIG1hZ2ZyCisKKyAgICogYWdlbnQvc25tcF9hZ2VudC5jOgorCisgICBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCisKKzIwMTEtMDQtMTkgMDg6MzggIGJ2YXNzY2hlCisKKyAgICogd2luMzIvbGlic25tcC9saWJzbm1wLnZjcHJvaiwgd2luMzIvd2luMzIuc2xuOgorCisgICBBZGRlZCBWaXN1YWwgU3R1ZGlvIDIwMDUgcHJvamVjdCBhbmQgc29sdXRpb24gZmlsZSBmb3IgYnVpbGRpbmcKKyAgIHRoZSBOZXQtU05NUCBsaWJyYXJ5IGFzIGEgc3RhdGljIGxpYnJhcnkuIEJvdGggdGhlIFdpbjMyIGFuZCB0aGUKKyAgIHg2NCBjb25maWd1cmF0aW9ucyBhcmUgaW5jbHVkZWQuCisKKzIwMTEtMDQtMTkgMDc6NTcgIGJ2YXNzY2hlCisKKyAgICogd2luMzIvbGlic25tcDoKKworICAgVXBkYXRlZCBTdWJ2ZXJzaW9uIGlnbm9yZSBsaXN0LgorCisyMDExLTA0LTE5IDA3OjM5ICBidmFzc2NoZQorCisgICAqICB3aW4zMi9lbmNvZGVfa2V5Y2hhbmdlL2VuY29kZV9rZXljaGFuZ2UudmNwcm9qLCAgIAorICAgICAgd2luMzIvbGliYWdlbnQvbGliYWdlbnQudmNwcm9qLCAgIAorICAgICAgd2luMzIvbGlibmV0c25tcHRyYXBkL2xpYm5ldHNubXB0cmFwZC52Y3Byb2osICAgCisgICAgICB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wX2RsbC52Y3Byb2osICAgCisgICAgICB3aW4zMi9uZXRzbm1wbWlicy9uZXRzbm1wbWlicy52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wYnVsa2dldC9zbm1wYnVsa2dldC52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wYnVsa3dhbGsvc25tcGJ1bGt3YWxrLnZjcHJvaiwgd2luMzIvc25tcGQvc25tcGQudmNwcm9qLCAKKyAgICAgICAgd2luMzIvc25tcGRlbHRhL3NubXBkZWx0YS52Y3Byb2osIHdpbjMyL3NubXBkZi9zbm1wZGYudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcGdldC9zbm1wZ2V0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBnZXRuZXh0L3NubXBnZXRuZXh0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBuZXRzdGF0L3NubXBuZXRzdGF0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBzZXQvc25tcHNldC52Y3Byb2osIHdpbjMyL3NubXBzdGF0dXMvc25tcHN0YXR1cy52Y3Byb2osIAorICAgICAgICB3aW4zMi9zbm1wdGFibGUvc25tcHRhYmxlLnZjcHJvaiwKKyAgICAgIHdpbjMyL3NubXB0ZXN0L3NubXB0ZXN0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXB0cmFuc2xhdGUvc25tcHRyYW5zbGF0ZS52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wdHJhcC9zbm1wdHJhcC52Y3Byb2osIHdpbjMyL3NubXB0cmFwZC9zbm1wdHJhcGQudmNwcm9qLCAKKyAgICAgICAgd2luMzIvc25tcHVzbS9zbm1wdXNtLnZjcHJvaiwgd2luMzIvc25tcHZhY20vc25tcHZhY20udmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcHdhbGsvc25tcHdhbGsudmNwcm9qOgorCisgICBNb3JlIFZpc3VhbCBTdHVkaW8gMjAwNSBwcm9qZWN0IGZpbGUgY2xlYW51cC4KKworMjAxMS0wNC0xOSAwNjo1NyAgYnZhc3NjaGUKKworICAgKiB3aW4zMi9iaW46CisKKyAgIFVwZGF0ZWQgU3VidmVyc2lvbiBpZ25vcmUgbGlzdC4KKworMjAxMS0wNC0xOCAxNTozNCAgYnZhc3NjaGUKKworICAgKiAgd2luMzIvZW5jb2RlX2tleWNoYW5nZS9lbmNvZGVfa2V5Y2hhbmdlLnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBidWxrZ2V0L3NubXBidWxrZ2V0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBidWxrd2Fsay9zbm1wYnVsa3dhbGsudmNwcm9qLCB3aW4zMi9zbm1wZC9zbm1wZC52Y3Byb2osIAorICAgICAgICB3aW4zMi9zbm1wZGVsdGEvc25tcGRlbHRhLnZjcHJvaiwgd2luMzIvc25tcGRmL3NubXBkZi52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wZ2V0L3NubXBnZXQudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcGdldG5leHQvc25tcGdldG5leHQudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcG5ldHN0YXQvc25tcG5ldHN0YXQudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcHNldC9zbm1wc2V0LnZjcHJvaiwgd2luMzIvc25tcHN0YXR1cy9zbm1wc3RhdHVzLnZjcHJvaiwgCisgICAgICAgIHdpbjMyL3NubXB0YWJsZS9zbm1wdGFibGUudmNwcm9qLAorICAgICAgd2luMzIvc25tcHRlc3Qvc25tcHRlc3QudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcHRyYW5zbGF0ZS9zbm1wdHJhbnNsYXRlLnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXB0cmFwL3NubXB0cmFwLnZjcHJvaiwgd2luMzIvc25tcHRyYXBkL3NubXB0cmFwZC52Y3Byb2osIAorICAgICAgICB3aW4zMi9zbm1wdXNtL3NubXB1c20udmNwcm9qLCB3aW4zMi9zbm1wdmFjbS9zbm1wdmFjbS52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wd2Fsay9zbm1wd2Fsay52Y3Byb2o6CisKKyAgIENsZWFuZWQgdXAgV2luMzIgVlMyMDA1IHByb2plY3QgZmlsZXMgLSByZW1vdmVkIHN1cGVyZmx1b3VzCisgICBsaWJyYXJ5IHJlZmVyZW5jZXMuCisKKzIwMTEtMDQtMTggMTU6MjUgIGJ2YXNzY2hlCisKKyAgICogIHdpbjMyL2VuY29kZV9rZXljaGFuZ2UvZW5jb2RlX2tleWNoYW5nZS52Y3Byb2osICAgCisgICAgICB3aW4zMi9saWJhZ2VudC9saWJhZ2VudC52Y3Byb2osICAgCisgICAgICB3aW4zMi9saWJuZXRzbm1wdHJhcGQvbGlibmV0c25tcHRyYXBkLnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXBfZGxsLnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL25ldHNubXBtaWJzL25ldHNubXBtaWJzLnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBidWxrZ2V0L3NubXBidWxrZ2V0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBidWxrd2Fsay9zbm1wYnVsa3dhbGsudmNwcm9qLCB3aW4zMi9zbm1wZC9zbm1wZC52Y3Byb2osIAorICAgICAgICB3aW4zMi9zbm1wZGVsdGEvc25tcGRlbHRhLnZjcHJvaiwgd2luMzIvc25tcGRmL3NubXBkZi52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wZ2V0L3NubXBnZXQudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcGdldG5leHQvc25tcGdldG5leHQudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcG5ldHN0YXQvc25tcG5ldHN0YXQudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcHNldC9zbm1wc2V0LnZjcHJvaiwgd2luMzIvc25tcHN0YXR1cy9zbm1wc3RhdHVzLnZjcHJvaiwgCisgICAgICAgIHdpbjMyL3NubXB0YWJsZS9zbm1wdGFibGUudmNwcm9qLAorICAgICAgd2luMzIvc25tcHRlc3Qvc25tcHRlc3QudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcHRyYW5zbGF0ZS9zbm1wdHJhbnNsYXRlLnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXB0cmFwL3NubXB0cmFwLnZjcHJvaiwgd2luMzIvc25tcHRyYXBkL3NubXB0cmFwZC52Y3Byb2osIAorICAgICAgICB3aW4zMi9zbm1wdXNtL3NubXB1c20udmNwcm9qLCB3aW4zMi9zbm1wdmFjbS9zbm1wdmFjbS52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wd2Fsay9zbm1wd2Fsay52Y3Byb2osIHdpbjMyL3dpbjMyZGxsLnNsbjoKKworICAgQWRkZWQgeDY0IGNvbmZpZ3VyYXRpb25zLgorCisyMDExLTA0LTE4IDE1OjE0ICBidmFzc2NoZQorCisgICAqIHdpbjMyL2xpYjoKKworICAgQW5vdGhlciBXaW4zMi1yZWxhdGVkIFN1YnZlcnNpb24gaWdub3JlIGxpc3QgdXBkYXRlLgorCisyMDExLTA0LTE4IDE1OjEzICBidmFzc2NoZQorCisgICAqICB3aW4zMi9lbmNvZGVfa2V5Y2hhbmdlL2VuY29kZV9rZXljaGFuZ2UudmNwcm9qLCAgIAorICAgICAgd2luMzIvbGliYWdlbnQvbGliYWdlbnQudmNwcm9qLCAgIAorICAgICAgd2luMzIvbGlibmV0c25tcHRyYXBkL2xpYm5ldHNubXB0cmFwZC52Y3Byb2osICAgCisgICAgICB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wX2RsbC52Y3Byb2osICAgCisgICAgICB3aW4zMi9uZXRzbm1wbWlicy9uZXRzbm1wbWlicy52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wYnVsa2dldC9zbm1wYnVsa2dldC52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wYnVsa3dhbGsvc25tcGJ1bGt3YWxrLnZjcHJvaiwgd2luMzIvc25tcGQvc25tcGQudmNwcm9qLCAKKyAgICAgICAgd2luMzIvc25tcGRlbHRhL3NubXBkZWx0YS52Y3Byb2osIHdpbjMyL3NubXBkZi9zbm1wZGYudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcGdldC9zbm1wZ2V0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBnZXRuZXh0L3NubXBnZXRuZXh0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBuZXRzdGF0L3NubXBuZXRzdGF0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBzZXQvc25tcHNldC52Y3Byb2osIHdpbjMyL3NubXBzdGF0dXMvc25tcHN0YXR1cy52Y3Byb2osIAorICAgICAgICB3aW4zMi9zbm1wdGFibGUvc25tcHRhYmxlLnZjcHJvaiwKKyAgICAgIHdpbjMyL3NubXB0ZXN0L3NubXB0ZXN0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXB0cmFuc2xhdGUvc25tcHRyYW5zbGF0ZS52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wdHJhcC9zbm1wdHJhcC52Y3Byb2osIHdpbjMyL3NubXB0cmFwZC9zbm1wdHJhcGQudmNwcm9qLCAKKyAgICAgICAgd2luMzIvc25tcHVzbS9zbm1wdXNtLnZjcHJvaiwgd2luMzIvc25tcHZhY20vc25tcHZhY20udmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcHdhbGsvc25tcHdhbGsudmNwcm9qLCB3aW4zMi93aW4zMmRsbC5zbG46CisKKyAgIEFkZGVkIHdpbjMyZGxsLXJlbGF0ZWQgVmlzdWFsIFN0dWRpbyAyMDA1IHByb2plY3QgYW5kIHNvbHV0aW9uCisgICBmaWxlcy4KKworMjAxMS0wNC0xOCAxMzozNyAgYnZhc3NjaGUKKworICAgKiAgd2luMzIsIHdpbjMyL2VuY29kZV9rZXljaGFuZ2UsIHdpbjMyL2xpYiwgd2luMzIvbGliYWdlbnQsICAgCisgICAgICB3aW4zMi9saWJuZXRzbm1wdHJhcGQsIHdpbjMyL2xpYnNubXAsIHdpbjMyL2xpYnNubXBfZGxsLCAgIAorICAgICAgd2luMzIvbGlidWNkbWlicywgd2luMzIvbmV0LXNubXAsIHdpbjMyL25ldHNubXBtaWJzLCAgIAorICAgICAgd2luMzIvc25tcGJ1bGtnZXQsIHdpbjMyL3NubXBidWxrd2Fsaywgd2luMzIvc25tcGQsICAgCisgICAgICB3aW4zMi9zbm1wZGVsdGEsIHdpbjMyL3NubXBkZiwgd2luMzIvc25tcGdldCwgd2luMzIvc25tcGdldG5leHQsICAKKyAgICAgICB3aW4zMi9zbm1wbmV0c3RhdCwgd2luMzIvc25tcHNldCwgd2luMzIvc25tcHN0YXR1cywgICAKKyAgICAgIHdpbjMyL3NubXB0YWJsZSwgd2luMzIvc25tcHRlc3QsIHdpbjMyL3NubXB0cmFuc2xhdGUsICAgCisgICAgICB3aW4zMi9zbm1wdHJhcCwgd2luMzIvc25tcHRyYXBkLCB3aW4zMi9zbm1wdXNtLCB3aW4zMi9zbm1wdmFjbSwgICAKKyAgICAgIHdpbjMyL3NubXB3YWxrOgorCisgICBBZGRlZCAqLnZjcHJvai4qLnVzZXIgYW5kIHg2NCB0byB0aGUgd2luMzIgU3VidmVyc2lvbiBpZ25vcmUKKyAgIGxpc3RzLiBSYW4gdGhlc2UgdGhyb3VnaCBMQ19BTEw9QyBzb3J0IC1mdSB0b28uCisKKzIwMTEtMDQtMTggMTI6MTAgIGJ2YXNzY2hlCisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaDoKKworICAgV2luMzIgRExMIGJ1aWxkIGZpeGVzLgorCisyMDExLTA0LTE3IDIwOjU2ICBkdHMxMgorCisgICAqICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmMsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAzMTc1NjQwOiBVc2UgSVBfUkVDVkRTVEFERFIgc29ja29wdAorICAgd2hlcmUgYXZhaWxhYmxlICgqQlNEKQorCisyMDExLTA0LTE1IDEzOjQyICBkdHMxMgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzE4MzAwMDogRml4IGNhbGN1bGF0aW9uIG9mIGNvbW1vbiBPSUQKKyAgIHByZWZpeCBsZW5ndGgKKyAgIENIQU5HRVM6IHNubXBsaWI6IEJVR1M6IDMxODI5ODU6IEZpeCBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lECisgICBwcmVmaXggbGVuZ3RoCisKKzIwMTEtMDQtMTUgMTM6MTcgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jLCBhcHBzL3NubXB0cmFwZF9kcy5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oLCBtYW4vc25tcGQuY29uZi41LmRlZjoKKworICAgQ0hBTkdFUzogTGludXg6IFBBVENIRVM6IDMyMDU4MTE6IE9wdGlvbiB0byBza2lwIGZkL2xvb3AvcmFtCisgICBkZXZpY2VzIGluIGRpc2tJT1RhYmxlCisKKzIwMTEtMDQtMTQgMjE6MzEgIGR0czEyCisKKyAgICogcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYzoKKworICAgQ0hBTkdFUzogcHl0aG9uOiBQQVRDSEVTOiAzMTg1MDg1OiBGaXggc2VnZmF1bHQgb24gNjQtYml0IHN5c3RlbXMKKworMjAxMS0wNC0xNCAyMToxMCAgZHRzMTIKKworICAgKiBsb2NhbC9taWIyYzoKKworICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMxNzUzMjM6IEZpeCBoYW5kbGluZyBvZiAnd2hpbGUgKGZhbHNlKScKKyAgIGJsb2NrcworCisyMDExLTA0LTE0IDIwOjUyICBkdHMxMgorCisgICAqIGxvY2FsL21pYjJjOgorCisgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzIwNDg4MzogRml4IGhhbmRsaW5nIG9mIG5vbi10YWJsZQorICAgb2JqZWN0cyBuYW1lZCBmb29UYWJsZQorCisyMDExLTA0LTE0IDIwOjQ0ICBkdHMxMgorCisgICAqIGxvY2FsL21pYjJjOgorCisgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzIxMTQ4NDogU3VwcG9ydCBlbnVtZXJhdGlvbnMgaW4KKyAgIG5vdGlmaWNhdGlvbiB2YXJiaW5kcworCisyMDExLTA0LTEyIDIwOjAxICBuYmEKKworICAgKiBtaWJzL1VDRC1TTk1QLU1JQi50eHQ6CisKKyAgIEFkZCBtaXNzaW5nIHN5c3RlbSBvaWRzIHRvIG1pYgorCisyMDExLTA0LTEyIDE5OjUzICBuYmEKKworICAgKiBhcHBzL3NubXB0YWJsZS5jOgorCisgICBGaXggZm9yIGdhcmJhZ2Ugb3V0cHV0IHdoZW4gYWdlbnQgcHJlc2VudHMgbW9yZSBjb2x1bW5zIGluIGJ1bGsKKyAgIHJlc3BvbnNlIHRoYW4gb3VyIGxvY2FsIE1JQiBmaWxlIHNwZWNpZmllZC4KKworMjAxMS0wNC0xMiAxOTo1MCAgbmJhCisKKyAgICogbWFuL3NubXB0cmFwZC44LmRlZjoKKworICAgRml4IHdyb25nIG5hbWUgZm9yIGNvbmZpZyB0b2tlbiAnZG9Ob3RSZXRhaW5Ob3RpZmljYXRpb25Mb2dzJworCisyMDExLTA0LTA5IDIxOjU5ICBuYmEKKworICAgKiBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmM6CisKKyAgIFJlbW92ZSBib2d1cyAoTGludXgpIGRlZmluZXMKKworMjAxMS0wNC0wOSAyMTo1NiAgbmJhCisKKyAgICogc25tcGxpYi9zbm1wLXRjLmM6CisKKyAgIEhBVkVfVE1fVE1fR01UT0ZGIGlzIEhBVkVfU1RSVUNUX1RNX1RNX0dNVE9GRgorCisyMDExLTA0LTA5IDIwOjA4ICBuYmEKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmgsIGNvbmZpZ3VyZSwgCisgICAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIEJpbGwgRmVubmVycyBwYXRjaCB0byBtYWtlIERJU01BTiBQSU5HIGFuZCBUUkFDRVJPVVRFIE1JQlMKKyAgIGNvbXBpbGUgdW5kZXIgTGludXgKKworMjAxMS0wNC0wOSAyMDowNCAgbmJhCisKKyAgICogIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuYywgYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmM6CisKKyAgIFNvbGFyaXMgc3VwcG9ydCBmb3IgU0NUUC1NSUIKKworMjAxMS0wNC0wOSAxOTo1MCAgbmJhCisKKyAgICogc25tcGxpYi9zbm1wLXRjLmM6CisKKyAgIFRaIGlzIG9uZSBob3VyIG9mZiBpZiBIQVZFX1RNX1RNX0dNVE9GRiBhbmQgU1lTViAoc3VjaCBpcyBMaW51eCkKKworMjAxMS0wNC0wMSAwMToxMSAgcnN0b3J5CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IGR0bHM6IG92ZXJoYXVsIG9mIGRlYnVnCisgICAKKyAgIC0gZHJhc3RpYyByZWR1Y3Rpb24gaW4gbnVtYmVyIG9mIG1lc3NhZ2VzIGFuZCBtc2cgY29tcGxleGl0eQorICAgZm9yIGJhc2ljIGR0bHN1ZHAgdG9rZW4KKyAgIC0gcHJldmlvdXMgbGV2ZWwgb2YgZGV0YWlsIGF2YWlsYWJsZSBieSBhZGRpbmcgOTpkdGxzZHVwIHRva2VuCisKKzIwMTEtMDQtMDEgMDA6NTMgIHJzdG9yeQorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBkdGxzOiBjbGVhbiB1cCBjbG9zZTsgY2F0Y2gKKyAgICdjb25uZWN0Jy8nZGlzY29ubmVjdCcKKyAgIAorICAgY29ubmVjdCA9IHdlIGdldCBzdWNjZXNzZnVsbHkgZGVjb2RlZCBzbm1wIGRhdGEKKyAgIGRpc2Nvbm5lY3QgPSAwIGJ5dGUgcmVhZCwgc3NoIHNodXRkb3duIGZsYWcgc2V0CisgICBhZGQgYmlvX2NhY2hlIGZsYWdzIGZvciBjb25uZWN0ZWQvZGlzY29ubmVjdGVkCisgICBjaGVjayBmb3IgbnVsbCBwdHIgYmVmb3JlIGRlcmVmZXJlbmNpbmcKKyAgIGNsb3NlIGhhbmRsaW5nOgorICAgLSBvbmx5IHNlbmQgcXVldWVkIGRhdGEgaWYgd2UgZ290IHRvIGNvbm5lY3RlZCBzdGF0ZQorICAgLSBzZXJpb3VzbHkgcmVkdWNlIHRpbWVvdXQgdG8gd2FpdCBmb3IganVuayByZWFkLiBpIHRoaW5rCisgICB3ZSBzaG91bGRuJ3QgZXZlbiBib3RoZXIKKyAgIC0gcmV0dXJuIGVhcmx5IGlmIGNhY2hlcCBpcyBOVUxMLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHRlc3QgaXQKKyAgIHJlcGVhdGVkbHkKKyAgIC0gdXNlIGNvcnJlY3QgbmZkcyB2YWx1ZSBpbiBzZWxlY3QgY2FsbAorCisyMDExLTAzLTMxIDA1OjE3ICByc3RvcnkKKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYzoKKworICAgbWFrZSB0cnVuayBhbmQgdjUtNi1wYXRjaGVzIGNsb3NlbHkgYWxpZ25lZAorICAgCisgICBtb3N0bHkgY2hhbmdlcyBpbiBkZWJ1ZywgY29va2llIHRyYWNraW5nCisKKzIwMTEtMDMtMjcgMTE6MDggIG1hZ2ZyCisKKyAgICogc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmM6CisKKyAgIFNpbXBsaWZ5IGFycmF5IHJlc2l6aW5nIHNvbWV3aGF0IGZ1cnRoZXIKKworMjAxMS0wMy0yNyAxMDoyMSAgbWFnZnIKKworICAgKiBzbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYzoKKworICAgRG8gbm90IGFzc2lnbiBuZXdfZGF0YSBpZiB0aGUgdmFsdWUgd29uJ3QgYmUgdXNlZC4KKyAgIFJlZHVjZSB2YXJpYWJsZSBzY29wZXMuCisKKzIwMTEtMDMtMjcgMTA6MTQgIG1hZ2ZyCisKKyAgICogc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmM6CisKKyAgIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY2xlYXIgYSBjaHVuayBvZiBtZW1vcnkgaWYgdGhlIG5leHQgYWN0aW9uCisgICBvbiBpdCBpcyB0bworICAgZmlsbCBpdCBzbyB1c2UgbWFsbG9jIGluc3RlYWQgb2YgY2FsbG9jLgorCisyMDExLTAzLTI3IDEwOjA5ICBtYWdmcgorCisgICAqIHNubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jOgorCisgICBDb250YWluZXJCaW5hcnlBcnJheSByZWFsbHkgY2FuJ3QgaG9sZCBhbnl0aG5nIGJ1dCBwb2ludGVycyBhbmQKKyAgIHRoYXQgbWVhbnMgdGhlCisgICBkYXRhX3NpemUgZmllbGQgaXMgdW5uZWNlc3Nhcnkgc28gSSByZW1vdmVkIGl0LgorCisyMDExLTAzLTI2IDE5OjU1ICBtYWdmcgorCisgICAqICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvaHdfbWVtLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYywgYXBwcy9zbm1wdHJhcGQuYywgICAKKyAgICAgIHNubXBsaWIvaW50NjQuYywgc25tcGxpYi9zbm1wX29wZW5zc2wuYywgc25tcGxpYi9zbm1wX3NlY21vZC5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wdjMuYzoKKworICAgQWRkIG1pc3NpbmcgaW5jbHVkZQorCisyMDExLTAzLTI2IDA4OjA3ICBtYWdmcgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jOgorCisgICBVc2UgdGhlIHJpZ2h0IGZlYXR1cmUgbWFjcm8gaW4gb3JkZXIgdG8gbWFrZSBidWlsZHMgd2l0aAorICAgLS1lbmFibGUtaXB2NiAtLXdpdGgtb3V0LXRyYW5zcG9ydHM9VURQSVB2NiBzdWNjZWVkLgorCisyMDExLTAzLTI2IDA4OjAyICBtYWdmcgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jOgorCisgICBSZW1vdmUgZHVwbGljYXRlIGNvcGllcyBvZiBmdW5jdGlvbnMKKworMjAxMS0wMy0yNSAyMDozNSAgcnN0b3J5CisKKyAgICogbG9jYWwvbmV0LXNubXAtY2VydDoKKworICAgdHdlYWsgZGVidWcgbWVzc2FnZQorCisyMDExLTAzLTI1IDIwOjMyICByc3RvcnkKKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4uYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogdXBkYXRlIGNlcnQgdG9rZW4gaGFuZGxpbmcKKyAgIAorICAgLSByZW1vdmUgZGVmWDUwOSBjZXJ0IHRva2VucyAoc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkIGJlZm9yZQorICAgNS42KQorICAgLSB3YXJuaW5ncyBmb3Igb3VyL3RoZWlyIHRva2VucywgcmVjb21tZW5kIHVzaW5nIGxvY2FsL3BlZXIKKworMjAxMS0wMy0yNSAyMDozMSAgcnN0b3J5CisKKyAgICogIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmM6CisKKyAgIG1lcmdlIG5ldHNubXBfZHRsc3VkcDYgaW50byBuZXRzbm1wX2R0bHN1ZHAKKyAgIAorICAgdXNlIGFkZHIgc2l6ZSB0byB0ZWxsIHRoZW0gYXBhcnQKKworMjAxMS0wMy0yNSAyMDozMSAgcnN0b3J5CisKKyAgICogc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jOgorCisgICBsb2cgKG9uY2UpIHdhcm5pbmcgd2hlbiBkZXByZWNhdGVkIGZfY3JlYXRlX2Zyb21fdHN0cmluZworICAgdHJhbnNwb3J0IGZ1bmN0aW9uIHVzZWQKKworMjAxMS0wMy0yNSAyMDozMCAgcnN0b3J5CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4uYzoKKworICAgcmVkdWNlIGNhc3Rpbmc7IG1ha2Ugc3VyZSB0byBmcmVlIHRoZSByaWdodCBwb2ludGVyCisKKzIwMTEtMDMtMjUgMjA6MjkgIHJzdG9yeQorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5jOgorCisgICByZWR1Y2UgY2FzdGluZworCisyMDExLTAzLTI0IDA2OjE5ICBtYWdmcgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmM6CisKKyAgIFJlcGxhY2UgYSB2YXJpYWJsZSB3aXRoIGEgY29uc3RhbnQuIE1ha2Ugb25lIG1vcmUgb2lkIGNvbnN0LgorCisyMDExLTAzLTE3IDIxOjA5ICBuYmEKKworICAgKiBtYW4vc25tcGRlbHRhLjEuZGVmOgorCisgICBGb3JtYXR0aW5nIGJvdGNoCisKKzIwMTEtMDMtMTcgMjE6MDcgIG5iYQorCisgICAqIG1pYnMvTWFrZWZpbGUuaW46CisKKyAgIEluc3RhbGwgcmVxdWlyZWQgbWlicworCisyMDExLTAzLTE3IDIxOjA1ICBuYmEKKworICAgKiBtaWJzL3JmY2xpc3Q6CisKKyAgIE5ldyBSRkMgbWlicworCisyMDExLTAzLTE1IDEwOjMxICBidmFzc2NoZQorCisgICAqIHNubXBsaWIvY2VydF91dGlsLmM6CisKKyAgIFNwZWxsaW5nIGZpeDogcmVnaW5lcmF0ZWQgLT4gcmVnZW5lcmF0ZWQuCisKKzIwMTEtMDMtMTUgMTA6MTkgIGJ2YXNzY2hlCisKKyAgICogc25tcGxpYi9jZXJ0X3V0aWwuYzoKKworICAgU2ltcGxpZmllZCByMTk1OTQgKGxlYWstYXQtZXhpdCBmaXgpLgorCisyMDExLTAzLTE1IDA5OjU5ICBidmFzc2NoZQorCisgICAqIHNubXBsaWIvc25tcF9vcGVuc3NsLmM6CisKKyAgIEZpeGVkIGEgY29tcGlsZXIgd2FybmluZyB0aGF0IHdhcyBpbnRyb2R1Y2VkIGluIHIyMDExMy4KKworMjAxMS0wMy0xNCAwOTozMSAgZHRzMTIKKworICAgKiBhZ2VudC9zbm1wZC5jOgorCisgICBGaXggbWFpbiBhZ2VudCBzZWxlY3QgY2FsbCB0byB1c2UgdGhlIHJlbmFtZWQgQVBJIHJvdXRpbmUuCisKKzIwMTEtMDMtMTMgMjA6MDkgIGR0czEyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oLCBzbm1wbGliL2xhcmdlX2ZkX3NldC5jOgorCisgICBCcmluZyB0aGUgbmFtaW5nIG9mIHRoZSBsYXJnZV9mZF9zZXQgc2VsZWN0IGNhbGwgaW50bworICAgbGluZSB3aXRoIHRoZSByZXN0IG9mIHRoZSBBUEkuCisKKzIwMTEtMDMtMTIgMDY6NTkgIHJzdG9yeQorCisgICAqIHNubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiByZWFsbG9jK2luaXQgaW5zdGVhZCBvZiBjYWxsb2MKKyAgIAorICAgaW5zcGlyZWQgYnkgcGF0Y2ggMzE5NTUzMiBmcm9tIFN0ZXBoZW4gSGVtbWluZ2VyCisKKzIwMTEtMDMtMTIgMDU6NDcgIHJzdG9yeQorCisgICAqICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9jb21tb24uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IG9wdGltaXphdGlvbnMgZm9yIGxhcmdlIHJvdXRlIHRhYmxlcyBmcm9tCisgICBTdGVwaGVuIEhlbW1pbmdlcgorICAgCisgICBhcHBsaWVkIHBhcnRzIDEtMyBvZiA0IGZyb20gaGltIChtc2dzIHRvIGNvZGVycyBvbiAyLzI4LzExOworICAgc3ViamVjdAorICAgaXAtZm9yd2FyZC1taWIgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzOyBwYXJ0IDQgbmVlZHMgbW9yZSB3b3JrCisKKzIwMTEtMDMtMTEgMTQ6NDMgIHJzdG9yeQorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBhZGQgbW9yZSBvcGVuc3NsIGVycm9yIGNhc2VzIHdoZXJlIHdlIGNoZWNrIGZvcgorICAgbG9jYWwgY2VydAorCisyMDExLTAzLTExIDEyOjAxICBidmFzc2NoZQorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYzoKKworICAgTWluR1c6IGRza1RhYmxlOiBSZXBvcnQgemVybyBmb3IgdW5pbXBsZW1lbnRlZCBmaWVsZHMgaW5zdGVhZCBvZgorICAgcmFuZG9tIGRhdGEuCisKKzIwMTEtMDMtMTEgMDg6NDIgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogQnVpbGRzIHdpdGggbW9zdCByZWNlbnQgTWluR1cgKGhhdmluZyAjZGVmaW5lCisgICBsb2NhbHRpbWVfcikuCisKKzIwMTEtMDMtMTEgMDM6MDggIHJzdG9yeQorCisgICAqIHNubXBsaWIvY2VydF91dGlsLmMsIHNubXBsaWIvc25tcF9vcGVuc3NsLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IHJlZmluZSBjZXJ0IGRlYnVnZ2luZzsgcmVtb3ZlIHVudXNlZCBmdW5jdGlvbgorCisyMDExLTAzLTEwIDIxOjIxICByc3RvcnkKKworICAgKiBzbm1wbGliL2NlcnRfdXRpbC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzMjA1NzY1OiBoYW5kbGUgcmVjb25maWcgZm9yIGNlcnRTZWNOYW1lCisgICB0b2tlbgorCisyMDExLTAzLTEwIDIwOjAxICBidmFzc2NoZQorCisgICAqIGFnZW50L3NubXBkLmM6CisKKyAgIFNwZWxsaW5nIGZpeCBpbiBhIHNvdXJjZSBjb2RlIGNvbW1lbnQ6IG1lc3NnZXMgLT4gbWVzc2FnZXMuCisKKzIwMTEtMDMtMTAgMTk6NTUgIGJ2YXNzY2hlCisKKyAgICogc25tcGxpYi9sYXJnZV9mZF9zZXQuYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDMyMDM4MDY6IE1pbm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbgorICAgb2YgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKCkuCisKKzIwMTEtMDMtMTAgMTk6NDggIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvc25tcGQuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAzMjAzODA2OiBBdm9pZCB0aGF0IHRoZSBtYWluIGFnZW50CisgICBwcm9jZXNzaW5nIGxvb3AgLSB3aGVuIHVzaW5nIG1vcmUgdGhhbiBGRF9TRVRTSVpFIGZpbGUKKyAgIGRlc2NyaXB0b3JzIC0gY2FuIGNhdXNlIG1lbW9yeSBjb3JydXB0aW9uIGJ5IGludm9raW5nIHNlbGVjdCgpLgorCisyMDExLTAzLTEwIDE5OjQzICBidmFzc2NoZQorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaCwgc25tcGxpYi9sYXJnZV9mZF9zZXQuYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDMyMDM4MDY6IEFkZCB0aGUgZnVuY3Rpb24KKyAgIG5ldHNubXBfbGFyZ2Vfc2VsZWN0KCkuCisKKzIwMTEtMDMtMTAgMTg6NTUgIGJ2YXNzY2hlCisKKyAgICogIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvY2xpYl9idWlsZCwgICAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwOWxhcmdlX2ZkX3NldF9jbGliLmM6CisKKyAgIEFkZGVkIGEgbWluaW1hbCB1bml0IHRlc3QgZm9yIG5ldHNubXBfbGFyZ2VfZmRfc2V0LgorCisyMDExLTAzLTEwIDE4OjUyICBidmFzc2NoZQorCisgICAqIHNubXBsaWIvbGFyZ2VfZmRfc2V0LmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAzMjAzODA2OiBNYWtlCisgICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoKSBjbGVhciBhbGwgcmVsZXZhbnQgZmlsZQorICAgZGVzY3JpcHRvcnMuCisKKzIwMTEtMDMtMTAgMTU6NTEgIGR0czEyCisKKyAgICogc25tcGxpYi9zbm1wLXRjLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDMxNzgzODk6IEZpeCBpbmNvbnNpc3RlbnQgaGFuZGxpbmcgb2YgVFoKKyAgIG9mZnNldHMKKworMjAxMS0wMy0xMCAxNTo0MCAgZHRzMTIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZSwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZToKKworICAgSWdub3JlIG9iamVjdCBmaWxlcyBhbmQgbGlicmFyaWVzCisKKzIwMTEtMDMtMTAgMTU6MDUgIGR0czEyCisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzOgorCisgICBJZ25vcmUgb2JqZWN0IGZpbGVzIGFuZCBsaWJyYXJpZXMKKworMjAxMS0wMy0xMCAxNDozMiAgaGFyZGFrZXIKKworICAgKiBhcHBzL01ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMjoKKworICAgbWFrZSB2YXJpYWJsZSBuYW1lcyBtYXRjaAorCisyMDExLTAzLTEwIDE0OjI4ICBidmFzc2NoZQorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZS5jOgorCisgICBGaXhlZCB0d28gY29tcGlsZXIgd2FybmluZ3MuCisKKzIwMTEtMDMtMTAgMTQ6MjQgIGhhcmRha2VyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczI6CisKKyAgIGZpeGVkIGluc3RhbGxhdGlvbiB2YXJpYWJsZXMgZm9yIHRoZSBvcHRpb25hbCBTRVQgcHJvZ3JhbXMKKworMjAxMS0wMy0wOCAwMDo1MyAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3JlbW92ZS11bm5lZWRlZC1tb2R1bGVzOgorCisgICBjaG1vZCBhK3gKKworMjAxMS0wMy0wOCAwMDoxNSAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3JlbW92ZWlmZGVmY29kZS5wbDoKKworICAgcHJpbnQgYW4gZXJyb3IgaWYgdGhlIGVuZCBvZiBhIGZpbGUgd2FzIHJlYWNoZWQgYW5kIHdlJ3JlIG5vdAorICAgYmFjaworICAgaW50byB0aGUgc3RhdGUgd2UgY2FuIHdyaXRlOyBvdGhlcndpc2UgYSBjbG9zaW5nICNpZmRlZiBpcworICAgbWlzc2luZy4KKworMjAxMS0wMy0wOCAwMDoxNSAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVuaXhEb21haW4uYzoKKworICAgZml4IGVuZGlmIGNvbW1lbnQgdG8gbWF0Y2ggdGhlIG9wZW5pbmcgaWZkZWYKKworMjAxMS0wMy0wOCAwMDoxNSAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3JlbW92ZWlmZGVmY29kZS5wbDoKKworICAgcmVzZXQgdGhlIGNhbndyaXRlIGZsYWcgZm9yIGV2ZXJ5IGZpbGUKKworMjAxMS0wMy0wOCAwMDoxNSAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3JlbW92ZS11bm5lZWRlZC1tb2R1bGVzOgorCisgICB0ZW1wb3JhcmlseSBsZWF2ZSBpbiBoZWFkZXIgZmlsZXMKKworMjAxMS0wMy0wOCAwMDoxNCAgaGFyZGFrZXIKKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKKworICAgY2hhbmdlIHRoZSB1bmlxdWUgZmlsZSBjaGVjayB0byBvbmUgdGhhdCBpcyBub3QgaW4gdGhlIG1pYmdyb3VwCisgICBkaXJlY3RvcnkKKworMjAxMS0wMy0wOCAwMDoxNCAgaGFyZGFrZXIKKworICAgKiAgdGVzdGluZy9mdWxsdGVzdHMvcmVhZC1vbmx5LCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvcmVhZC1vbmx5L1QwMTQxc25tcHYyY3NldGZhaWxfc2ltcGxlOgorCisgICBhIHRlc3QgZm9yIGVuc3VyaW5nIHRoZSBhZ2VudCByZWplY3RzIFNFVCByZXF1ZXN0cyB3aXRoCisgICAtLWVuYWJsZS1yZWFkLW9ubHkKKworMjAxMS0wMy0wOCAwMDoxNCAgaGFyZGFrZXIKKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMTQxc25tcHYyY3NldF9zaW1wbGU6CisKKyAgIGFkZCBiYWNrIGluIHRoZSBzdG9wYWdlbnQgY29tbWFuZAorCisyMDExLTAzLTA4IDAwOjE0ICBoYXJkYWtlcgorCisgICAqICB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QxMDFwZHVfdHlwZV9jbGliLmMsICAgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QxMDJwZHVfYnVpbGRfY2xpYi5jLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMTAzcGR1X3BhcnNlX2NsaWIuYzoKKworICAgdW5pdCB0ZXN0cyB3cml0ZW4gZm9yIHRoZSByZWFkLW9ubHkgc3VwcG9ydCBjb252ZXJ0ZWQgdG8gd29yaworICAgd2l0aCBvciB3aXRob3V0IHJlYWQtb25seQorCisyMDExLTAzLTA4IDAwOjEzICBoYXJkYWtlcgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAxNDFzbm1wdjJjc2V0X3NpbXBsZToKKworICAgZG9uJ3QgcnVuIHRoZSBzZXQgdGVzdCBpZiBub193cml0ZV9zdXBwb3J0IGlzIHR1cm5lZCBvbgorCisyMDExLTAzLTA4IDAwOjEzICBoYXJkYWtlcgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAzMHNubXB2M3VzZXJjcmVhdGlvbl9zaW1wbGU6CisKKyAgIHNraXAgaWYgbm9fd3JpdGVfc3VwcG9ydAorCisyMDExLTAzLTA4IDAwOjEzICBoYXJkYWtlcgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAxNDFzbm1wdjJjc2V0X3NpbXBsZToKKworICAgQSBuZXcgdGVzdCB0byBjaGVjayB3aGV0aGVyIFNOTVB2MmMgU0VUcyB0byBzeXNDb250YWN0IHdvcmsgYXMKKyAgIGV4cGVjdGVkCisKKzIwMTEtMDMtMDggMDA6MTMgIGhhcmRha2VyCisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9TdmFueWNvbmZpZzoKKworICAgYWxsb3cgZm9yIHYyYyBTRVQgc3VwcG9ydCB0ZXN0aW5nCisKKzIwMTEtMDMtMDggMDA6MTIgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb25mLmM6CisKKyAgIEFsbG93IGZvciBzaW5nbGUgcXVvdGVzIGZvciB2YWNtIGNvbnRleHQgbmFtZSBxdW90aW5nIHRvbworCisyMDExLTAzLTA3IDE5OjE5ICBoYXJkYWtlcgorCisgICAqIGNvbmZpZ3VyZToKKworICAgZml4IHRoZSBjb25maWd1cmUgdGVzdHMgdG8gaW5jbHVkZSB0aGUgd29yZCB0ZXN0IGluIHRoZSB0ZXN0CisKKzIwMTEtMDMtMDcgMTk6MTggIGhhcmRha2VyCisKKyAgICogY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyOgorCisgICBmaXggdGhlIGNvbmZpZ3VyZSB0ZXN0cyB0byBpbmNsdWRlIHRoZSB3b3JkIHRlc3QgaW4gdGhlIHRlc3QKKworMjAxMS0wMy0wNyAxOToxOCAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3JlbW92ZS11bm5lZWRlZC1tb2R1bGVzOgorCisgICBBZGRlZCBhbiBhbm5veWluZ2x5IGxvbmcgbGlzdCBvZiBleGNlcHRpb25zIHRoYXQgbmVlZHMgdG8gYmUKKyAgIGF1dG9tYXRlZAorCisyMDExLTAzLTA3IDE5OjE4ICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvcmVtb3ZlLXVubmVlZGVkLW1vZHVsZXM6CisKKyAgIEEgcXVpY2sgcGVybCBzY3JpcHQgdG8gcmVtb3ZlIHVubmVlZGVkIGNvZGUgbW9kdWxlcyBmcm9tIHRoZQorICAgbW9kdWxlcyBkaXJlY3RvcnkKKworMjAxMS0wMy0wNyAxOToxOCAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUFkZHJUYWJsZS9zbm1wVGxzdG1BZGRyVGFibGUuYywgCisgICAgICAgIHNubXBsaWIvY2VydF91dGlsLmMsIHNubXBsaWIvc25tcHVzbS5jLCBzbm1wbGliL3ZhY20uYzoKKworICAgbW9yZSBpbXByb3ZlbWVudHMgKHJlbW92ZW1lbnRzKSBmb3IgZmVhdHVyaXphdGlvbiBhbmQgcmVhZC1vbmx5CisgICBzdXBwb3J0CisKKzIwMTEtMDMtMDcgMTc6MTkgIGJ2YXNzY2hlCisKKyAgICogc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAzMTk1NTM3OiBNaW5vciBiaW5hcnlfYXJyYXkgY29udGFpbmVyCisgICBzb3J0IG9wdGltaXphdGlvbgorCisyMDExLTAzLTA2IDE5OjQ3ICBuYmEKKworICAgKiBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYzoKKworICAgVGFicyB0byBzcGFjZXMKKworMjAxMS0wMy0wNiAxMToyOCAgbmJhCisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9uczoKKworICAgQ29uZmlndXJlIGNoZWNrIGZvciBnZXRob3N0bmFtZTIKKyAgIFVzZSBnZXRhZGRyaW5mbyBpZiBhdmFpbGFibGUuIE5vdyB3b3JrcyBmb3IgU29sYXJpcyAoYW5kCisgICBXaW5kb3dzPykKKworMjAxMS0wMy0wNSAxOToxNiAgbWFnZnIKKworICAgKiBhcHBzL3NubXB0ZXN0LmM6CisKKyAgIEFkZCBkcm9wcGVkIHx8J3MgZnJvbSByMjAwNzIKKworMjAxMS0wMy0wNSAxMjo1MCAgbmJhCisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwUmVzdWx0c1RhYmxlLmM6CisKKyAgIENsZWFuIHVwLCBhbmQgY29zb2xpZGF0ZSByZXN1bHQgdGFibGUgcm93IGNyZWF0aW9uIGludG8gYSBuZXcKKyAgIGZ1bmN0aW9uLgorICAgU2F2ZXMgMjAwIGxpbmVzIG9mIGNvZGUsIHdpdGggKGhvcGVmdWxseSkgbm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2UKKworMjAxMS0wMy0wNSAwNjoxNyAgaGFyZGFrZXIKKworICAgKiAgYXBwcy9NYWtlZmlsZS5pbiwgYXBwcy9zbm1wdGVzdC5jLCBjb25maWd1cmUsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczI6CisKKyAgIGRvbid0IGJ1aWxkIFNFVCByZWxhdGVkIGFwcHMgd2l0aCAtLWVuYWJsZS1yZWFkLW9ubHkKKworMjAxMS0wMy0wNSAwNjoxNiAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvaGVscGVycy9iYWJ5X3N0ZXBzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jLCBhZ2VudC9taWJncm91cC9taWJJSS91cGRhdGVzLmMsICAKKyAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0LmMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oLCBzbm1wbGliL3NubXBfY2xpZW50LmM6CisKKyAgIGZpeCBpc3N1ZXMgd2l0aCBjb21iaW5pbmcgLS1lbmFibGUtbWluaW1hbGlzdCBhbmQKKyAgIC0tZW5hYmxlLXJlYWQtb25seQorCisyMDExLTAzLTA1IDA2OjE2ICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmluZC11bnVzZWQtY29kZToKKworICAgYmV0dGVyIG91dHB1dCBmb3IgZmluZGluZyBvYmplY3Qgc3ltYm9scy4KKworMjAxMS0wMy0wNCAyMTo1NiAgYmFlcm0KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3JlbW92ZWlmZGVmY29kZS5wbDoKKworICAgbGFzdCBjb21taXQ6IGNoYW5nZXMgdG8gYWxsb3cgcGFyc2luZyBvZiBmZWF0dWVycyBmaWxlcyB0byBnZXQKKyAgIGFsbCBtaW5pbWFsaXN0IHRhZ3Mgd2hpY2ggYXJlIHRoZW4gcHJvY2Vzc2VkIGZvciByZW1vdmFsCisgICAKKyAgIHRoaXMgY29tbWl0OiBjaGFuZ2VkIGNvbW1lbnRzL3doaXRlIHNwYWNlCisKKzIwMTEtMDMtMDQgMTk6MjcgIGJhZXJtCisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmM6CisKKyAgIGFkZGVkIG5vX3dyaXRlIHN1cHBvcnQgdG8gZXh0ZW5kLmMKKworMjAxMS0wMy0wNCAxOToyNiAgYmFlcm0KKworICAgKiBhZ2VudC9oZWxwZXJzL2luc3RhbmNlLmM6CisKKyAgIEFkZGVkIG1pc3NpbmcgI2VuZGlmIGNvbW1lbnQgZm9yIHJlbW92ZSBpZmRlZiBjb2RlIHN1cHBvcnQKKworMjAxMS0wMy0wNCAxOToyNCAgYmFlcm0KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3JlbW92ZWlmZGVmY29kZS5wbDoKKworICAgYWRkZWQgY2hhbmdlcyB0byBhbGxvdyBjb2RlIHJlbW92YWwgaW4tcGxhY2UKKyAgIChpLmUuIGRvZXMgbm90IHJlcXVpcmUgY3JlYXRpbmcgYSBuZXcgZmlsZSkKKworMjAxMS0wMy0wNCAxOToyMyAgYmFlcm0KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2lnbm9yZS5yZWdleHA6CisKKyAgIGFkZGluZyBhIGlnbm9yZS5yZWdleHAgZmlsZSB0aGF0IGNhbiBiZSB1c2VkIHdpdGgKKyAgIHJlbW92ZWlmZGVmY29kZS5wbAorCisyMDExLTAzLTA0IDE5OjIwICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1tYWtlZG9jczoKKworICAgYWRkIGEgb3V0Z29pbmcgbGluayB0byB0aGUgcGFyZW50IG1hcmtpbmcgcGFnZQorCisyMDExLTAzLTA0IDE5OjE5ICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1tYWtlZG9jczoKKworICAgQWRkZWQgYSB3aWtpIG91dHB1dCBtb2RlCisKKzIwMTEtMDMtMDQgMTk6MTkgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzOgorCisgICBOb3RlIHRoYXQgdGhlIG9yZyBvdXRwdXQgaXMgdGhlIGRlZmF1bHQgaW4gdGhlIGhlbHAgb3V0cHV0CisKKzIwMTEtMDMtMDQgMTU6MDkgIGpzYWZyYW5laworCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogZml4ZWQgJ3RydW5jYXRpbmcgaW50ZWdlciB2YWx1ZSA+IDMyIGJpdHMnIGluCisgICBVQ0QtU05NUC1NSUI6OnN5c3RlbVN0YXRzIG9uIExpbnV4CisKKzIwMTEtMDMtMDQgMTQ6NDkgIGhhcmRha2VyCisKKyAgICogIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMsIGFnZW50L2hlbHBlcnMvd2F0Y2hlci5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jLCBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYywgCisgICAgICAgIGFnZW50L21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfZGF0YV9hY2Nlc3MuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmMsIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9pcXVlcnkuYywgc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICByZWNsYXNzaWZpY2F0aW9uIG9mIHRoZSByZW1haW5pbmcgZmVhdHVyZXMgaW50byBhIGhpZXJhcmNoeQorCisyMDExLTAzLTA0IDE0OjQ5ICBoYXJkYWtlcgorCisgICAqIHNubXBsaWIvc25tcF9vcGVuc3NsLmM6CisKKyAgIGRvbid0IGRvdWJsZS1kZWNsYXJlIGNlcnRfdXRpbHMKKworMjAxMS0wMy0wNCAxNDo0OSAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmM6CisKKyAgIHRoZSBpcGFkZHJlc3NfbGludXggd2FzIGluY29ycmVjdGx5IG1hcmtlZCBhcyBuZWVkaW5nCisgICBjZXJ0X2ZpbmdlcnByaW50cworCisyMDExLTAzLTA0IDE0OjQ4ICBoYXJkYWtlcgorCisgICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmM6CisKKyAgIHB1dCB0aGUgYWdlbnRfcmVnaXN0cnkgZmVhdHVyZSBpbiBsaWJuZXRzbm1wYWdlbnQuCisKKzIwMTEtMDMtMDMgMTA6NTYgIGJ2YXNzY2hlCisKKyAgICogd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWY6CisKKyAgIENIQU5HRVM6IFdpbjMyOiBEZXByZWNhdGVkIGxpYnNubXAuZGVmIC0gYWRkIE5FVFNOTVBfSU1QT1JUIHRvCisgICBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgaW5zdGVhZCB0byBleHBvcnQgYSBmdW5jdGlvbiBmcm9tCisgICBuZXRzbm1wLmRsbC4KKworMjAxMS0wMy0wMyAxMDo0OCAgYnZhc3NjaGUKKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaDoKKworICAgQWRkZWQgbWlzc2luZyBORVRTTk1QX0lNUE9SVCBkZWNsYXJhdGlvbnMuCisKKzIwMTEtMDMtMDMgMTA6MjQgIGJ2YXNzY2hlCisKKyAgICogd2luMzIvbGliYWdlbnQvbGliYWdlbnQuZGVmLCB3aW4zMi9saWJ1Y2RtaWJzL2xpYnVjZG1pYnMuZGVmOgorCisgICBSZW1vdmVkIHR3byBvYnNvbGV0ZSBXaW4zMiBmaWxlcy4KKworMjAxMS0wMy0wMyAxMDowOSAgYnZhc3NjaGUKKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmM6CisKKyAgIFRyaXZpYWwgY29tbWVudCBmaXg6IHNubXBJUHY2QmFzZURvbWFpbi5jIGNvbnRhaW5zIElQdjYgYmFzZQorICAgdHJhbnNwb3J0IHN1cHBvcnQgZnVuY3Rpb25zIGluc3RlYWQgb2YgSVB2NC4KKworMjAxMS0wMy0wMiAxOToxMCAgYnZhc3NjaGUKKworICAgKiBzbm1wbGliOgorCisgICBBZGRlZCBzbm1wc21fc2h1dGRvd24uaCB0byB0aGUgU3VidmVyc2lvbiBpZ25vcmUgbGlzdCBiZWNhdXNlCisgICBpdCdzIGEgZ2VuZXJhdGVkIGZpbGUuCisKKzIwMTEtMDMtMDIgMTU6NTggIGJ2YXNzY2hlCisKKyAgICogd2luMzIvY29uZmlnLmg6CisKKyAgIFJlbW92ZWQgYW4gb2Jzb2xldGUgZmlsZS4KKworMjAxMS0wMy0wMiAxNTo1MiAgYnZhc3NjaGUKKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgsIHdpbjMyL3NubXBzbV9zaHV0ZG93bi5oLCAgCisgICAgICAgd2luMzIvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmg6CisKKyAgIEJ1aWxkcyBhZ2FpbiB3aXRoIFZpc3VhbCBTdHVkaW8gYWZ0ZXIgdGhlIGludHJvZHVjdGlvbiBvZiB0aGUKKyAgICJmZWF0dXJlIiBmZWF0dXJlLgorCisyMDExLTAzLTAyIDE1OjQ4ICBidmFzc2NoZQorCisgICAqIHdpbjMyL3NubXBzbV9pbml0Lmg6CisKKyAgIFJlbW92ZWQgYSBtaXNsZWFkaW5nIGNvbW1lbnQuCisKKzIwMTEtMDMtMDIgMDg6NDAgIG1hZ2ZyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczI6CisKKyAgIENvcnJlY3QgdGhlIGNoZWNrIG9mIHdldGhlciB1c20gc2VjdXJpdHkgaXMgZW5hYmxlZC4KKyAgIFJlZ2VuZXJhdGUgY29uZmlndXJlLgorCisyMDExLTAzLTAyIDA4OjM5ICBtYWdmcgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIFJlZ2VuZXJhdGUKKworMjAxMS0wMy0wMiAwODoyMSAgbWFnZnIKKworICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXRhX2FjY2Vzcy5jOgorCisgICBBZGQgbWlzc2luZyBkZXBlbmRlbmNpZXMKKworMjAxMS0wMy0wMiAwNzoxOSAgbWFnZnIKKworICAgKiBzbm1wbGliL3NubXB1c20uYzoKKworICAgSWdub3JlIHRoZSByZXR1cm4gdmFsdWUgZnJvbSBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMKKworMjAxMS0wMy0wMiAwNzoxOSAgbWFnZnIKKworICAgKiBzbm1wbGliL2NvbnRhaW5lci5jOgorCisgICBTcGxpdCB0aGUgY29udGFpbmVyX2NvbXBhcmVfZnVuY3Rpb25zIGZlYXR1cmUgaW50bworICAgY29udGFpbmVyX2NvbXBhcmVfbWVtLAorICAgY29udGFpbmVyX2NvbXBhcmVfbG9uZywgY29udGFpbmVyX2NvbXBhcmVfdWxvbmcsCisgICBjb250YWluZXJfY29tcGFyZV9pbnQzMiBhbmQKKyAgIGNvbnRhaW5lcl9jb21wYXJlX3VpbnQzMgorICAgVW5pZnkgdGhlIHN0cnVjdHVyZSBvZiB0aGUgY29tcGFyZSBmdW5jdGlvbnMgZnVydGhlci4KKworMjAxMS0wMy0wMiAwNzoxOSAgbWFnZnIKKworICAgKiBzbm1wbGliL2NvbnRhaW5lci5jOgorCisgICBDaGFuZ2UgdGhlIHNwZWxsaW5nIG9mIHRoZSBjb250YWluZXJfY29tcGFyZV9jc3RyaW5nIGZlYXR1cmUgdG8KKyAgIGNvbnRhaW5lcl9uY29tcGFyZV9jc3RyaW5nIGFzIHRoYXQgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgaXMKKyAgIGd1YXJkZWQgYnkgdGhhdAorICAgYXR0cmlidXRlLgorCisyMDExLTAzLTAyIDA3OjE3ICBtYWdmcgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oOgorCisgICBBZGQgdGhlIG1pc3NpbmcgcmVwbGFjZW1lbnQgbWFjcm8gZm9yIHNubXBfaW5pdF9zdGF0aXN0aWNzCisKKzIwMTEtMDMtMDIgMDc6MTYgIG1hZ2ZyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg6CisKKyAgIHNubXBfaW5jcmVtZW50X3N0YXRpc3RpY19ieSB0YWtlcyB0d28gYXJndW1lbnRzIHNvIGxldCB0aGUKKyAgIHJlcGxhY2VtZW50IG1hY3JvCisgICB0YWtlIHR3byBhcmd1bWVudHMgYXMgd2VsbC4KKworMjAxMS0wMi0yNyAxMzo1NSAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmM6CisKKyAgIEZpeCB0eXBvIGluIHIxOTk5MAorCisyMDExLTAyLTI2IDEwOjUzICBtYWdmcgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1jaGVjazoKKworICAgUmVtb3ZlIGxpbmVzIHN0YXJ0aW5nIHdpdGggI2RlZmluZSBpbiB0aGUgb3V0cHV0IG9mIHRoZQorICAgcHJlcHJvY2Vzc29yCisgICBXaGVuIGdjYyAtRSBpcyBjYWxsZWQgd2l0aCAtZ2dkYjMgKG9yIC1kRCkgdGhlbiBhbGwgdGhlIG1hY3JvCisgICBkZWZpbml0aW9ucyBhcmUKKyAgIHBhc3NlZCB0aHJvdWdoIHRoZSBwcmVwcm9jZXNzb3IgYW5kIHRoYXQgbWVzc2VzIHVwIG91cgorICAgcHJvY2Vzc2luZy4KKworMjAxMS0wMi0yNiAxMDo1MiAgbWFnZnIKKworICAgKiBNYWtlZmlsZS5ydWxlczoKKworICAgUHV0IHRoZSBnZW5lcmF0ZWQgZmlsZSBpbiB0aGUgYnVpbGQgdHJlZSwgbm90IHRoZSBzb3VyY2UgdHJlZS4KKworMjAxMS0wMi0yNiAwMToyMyAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvYWdlbnRfdHJhcC5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvcmUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9od19tZW0uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2NvbW1vbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmMsICAKKyAgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmMsIAorICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL3RzbS1taWIvc25tcFRzbVN0YXRzL3NubXBUc21TdGF0cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfc29sYXJpczIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2ludGVyZmFjZS5jOgorCisgICBtb3ZlZCBhIGJ1bmNoIG9mIGZlYXR1cmVzIGludG8gdGhlIGxpYm5ldHNubXBtaWJzIGZlYXR1cmUgc2V0LgorCisyMDExLTAyLTI2IDAxOjIyICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9hZ2VudF9oYW5kbGVyLmMsIGFnZW50L2FnZW50X2luZGV4LmMsICAgCisgICAgICBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jLCBhZ2VudC9hZ2VudF90cmFwLmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL2FsbF9oZWxwZXJzLmMsIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy90YWJsZS5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2FycmF5LmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYywgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmMsIGFnZW50L2hlbHBlcnMvdGFibGVfcm93LmMsICAgCisgICAgICBhZ2VudC9zbm1wX2FnZW50LmMsIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzLCBzbm1wbGliL21pYi5jOgorCisgICBjbGFzc2lmaWVkIGxpYm5ldHNubXBhZ2VudCBmZWF0dXJlcworCisyMDExLTAyLTI2IDAxOjIxICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOgorCisgICByZXZlcnNlIHRoZSBvcmRlciBvZiB0aGUgbGlicmFyaWVzIChzbm1wbGliIGZpcnN0KQorCisyMDExLTAyLTI2IDAxOjIxICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOgorCisgICBvdXRwdXQgY2xlYW51cCBhbmQgYWRkZWQgYWdlbnQtbWlicyBhbmQgbG9nZ2luZyBvcHRpb25zCisKKzIwMTEtMDItMjYgMDE6MjEgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6CisKKyAgIGFkZCBhIGRlZmF1bHQgc2V0IG9mIGFyZ3VtZW50cworICAgY2FsY3VsYXRlIHJlc3VsdGluZyBzaXplcworCisyMDExLTAyLTI2IDAxOjIxICBoYXJkYWtlcgorCisgICAqIHNubXBsaWIvZGlyX3V0aWxzLmM6CisKKyAgIEFkZGVkIGEgbWlzc2luZyA7CisKKzIwMTEtMDItMjYgMDE6MjAgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6CisKKyAgIHByZWZpeCB0aGUgb3V0cHV0IGZpbGVzIHdpdGggYSBudW1iZXIgdG8gaW5kaWNhdGUgb3JkZXIKKworMjAxMS0wMi0yNiAwMToyMCAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czoKKworICAgc2F2ZSB0aGUgcmVzdWx0cyBvZiB0aGUgc3lzdGVtIGV4ZWN1dGlvbnMKKworMjAxMS0wMi0yNiAwMToyMCAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czoKKworICAgZW5hYmxlIGJ1aWxkaW5nIG9mIHRoZSByZXN1bHRpbmcgY29tYmluYXRpb25zCisgICBBZGQgYSAtbiBmbGFnIGZvciBkcnktcnVucworCisyMDExLTAyLTI2IDAxOjIwICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOgorCisgICBlbmFibGUgdGhlIC10IHRhZyBmb3IgbGltaXRpbmcgdHlwZXMKKworMjAxMS0wMi0yNiAwMToxOSAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czoKKworICAgQWRkZWQgYXJndW1lbnQgcGFyc2luZyBhbmQgYXJndW1lbnRzIGZvciBzZWxlY3RpbmcgYW5kIGxpc3RpbmcKKyAgIHR5cGVzCisKKzIwMTEtMDItMjYgMDE6MTkgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6CisKKyAgIGdlbmVyYXRlIGNvbmZpZ3VyZSBzY3JpcHQgYXJndW1lbnRzIGZyb20gc3BlY3MKKworMjAxMS0wMi0yNiAwMToxOSAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czoKKworICAgYWRkZWQgYSBidW5jaCBvZiBuZXcgZmVhdHVyZSBvcHRpb25zIGFuZCBjbGVhbmVkIHVwIGEgYml0CisKKzIwMTEtMDItMjYgMDE6MTkgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6CisKKyAgIGFkZGVkIGEgbmV3IChub3QgeWV0IHdvcmtpbmcpIHNjcmlwdCB0byB0ZXN0IHNpemluZyBvZiB2YXJpb3VzCisgICBhcmd1bWVudCBzZXRzCisKKzIwMTEtMDItMjYgMDA6MjYgIG1hZ2ZyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYzoKKworICAgU2ltcGxpZnkgdGhlIGNvZGUuIFVuaWZ5IHNvbWUgZGVidWcgbG9ncy4KKworMjAxMS0wMi0yNiAwMDoxOSAgbWFnZnIKKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jOgorCisgICBSZWR1Y2UgdGhlIHNjb3BlIG9mIGEgZmV3IHZhcmlhYmxlcworCisyMDExLTAyLTI2IDAwOjE2ICBtYWdmcgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmM6CisKKyAgIFJlbW92ZSBzb21lIHVudXNlZCBpbmNsdWRlcy4KKworMjAxMS0wMi0yNiAwMDoxNSAgbWFnZnIKKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jOgorCisgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGluaXRpYWxpemUvdW5pbml0aWFsaXplIG1vZHVsZXMgd2l0aCA2NAorICAgY2hhcmFjdGVyIG5hbWVzIGFuZCBub3Qgc3VmZmVyIHdpbGQgd3JpdGVzLgorCisyMDExLTAyLTI2IDAwOjEyICBtYWdmcgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmM6CisKKyAgIENvZGUgcmVzdHJ1Y3R1cmluZyAtIHB1dCB0aGUgbWFuYWdlZCByb3V0aW5lcyBiZWZvcmUgdGhlCisgICBtYW5hZ21lbnQgY29kZS4KKworMjAxMS0wMi0yNiAwMDoxMSAgbWFnZnIKKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5oOgorCisgICBDSEFOR0VTOiBsaWJuZXRzbm1wbWliczogTWFrZSBhbGwgZnVuY3Rpb25zIGluIHRoZSBkbG1vZCBtb2R1bGUKKyAgIHRoYXQgZG9uJ3QgaGF2ZSB0byBiZSBwdWJsaWMgc3RhdGljCisKKzIwMTEtMDItMjYgMDA6MDcgIG1hZ2ZyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYzoKKworICAgUmVuYW1lIGRlaW5pdF9kbG1vZCB0byBzaHV0ZG93bl9kbG1vZCBhcyB0aGF0IGlzIHdoYXQgaXQgcmVhbGx5CisgICBpcyBhYm91dC4KKworMjAxMS0wMi0yNSAxODoyNCAgYmFlcm0KKworICAgKiBhZ2VudC9taWJncm91cC9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5jOgorCisgICBhZGRpbmcgbWluaW1hbGlzdCBpZmRlZnMgdG8gbmV0LXNubXAtdmFjbSBtaWIKKworMjAxMS0wMi0yNSAxNjowOSAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtbWFrZWRvY3M6CisKKyAgIHByb3Blcmx5IGhhbmRsZSB0d2luIGNoaWxkcmVuOyBhbHNvIHNvcnQgdGhlIGNoaWxkIGxpc3QKKyAgIGFscGhhYmV0aWNhbGx5LgorCisyMDExLTAyLTI1IDE2OjA5ICBoYXJkYWtlcgorCisgICAqIHNubXBsaWIvc25tcF9sb2dnaW5nLmM6CisKKyAgIEkgc3VwcG9zZSBsb2dnaW5nIHNob3VsZCBwcm9iYWJseSBkZWZhdWx0IHRvIGJlaW5nIGEgd2FudGVkCisgICBvcHRpb24gOi0pCisKKzIwMTEtMDItMjUgMTY6MDkgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzOgorCisgICBvcmctbGluayB0aGUgZmlsZXMgaW4gdGhlIG91dHB1dAorCisyMDExLTAyLTI1IDE2OjA4ICBoYXJkYWtlcgorCisgICAqICBNYWtlZmlsZS5ydWxlcywgYWdlbnQvTWFrZWZpbGUuaW4sIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmluLCAgIAorICAgICAgYXBwcy9NYWtlZmlsZS5pbiwgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbiwgICAKKyAgICAgIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1jaGVjaywgc25tcGxpYi9NYWtlZmlsZS5pbjoKKworICAgbWFrZSB0aGUgZmVhdHVyZXMtY2hlY2sgc2NyaXB0IHRyYWNrIHRoZSBmdWxsIHNvdXJjZSBwYXRoCisKKzIwMTEtMDItMjUgMTY6MDggIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzOgorCisgICBjaGFuZ2UgdGhlIGZ1bmN0aW9uIG5hbWVzIHRvIG1hdGNoIHRoYXQgaXQncyBwcmludGluZyB0byBvcmctbW9kZQorICAgYXQgdGhlIG1vbWVudC4KKworMjAxMS0wMi0yNSAxNjowOCAgaGFyZGFrZXIKKworICAgKiAgc25tcGxpYi9maWxlX3V0aWxzLmMsIHNubXBsaWIvbWliLmMsIHNubXBsaWIvb2lkX3N0YXNoLmMsICAgCisgICAgICBzbm1wbGliL3NubXBfYXBpLmMsIHNubXBsaWIvc25tcF9sb2dnaW5nLmMsIHNubXBsaWIvdG9vbHMuYzoKKworICAgbGFzdCBvZiB0aGUgZmVhdHVyZSBjbGFzc2lmaWNhdGlvbiBpbiBsaWJuZXRzbm1wCisKKzIwMTEtMDItMjUgMTY6MDcgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi9rZXl0b29scy5jLCBzbm1wbGliL2xjZF90aW1lLmMsIHNubXBsaWIvc2NhcGkuYzoKKworICAgbWFrZSB0aGUgdXNtX3N1cHBvcnQgdXRpbGl0aWVzIHNlbGYtZGVjbGFyZSB0aGVtc2VsdmVzIGFzCisgICBjaGlsZHJlbiB0bworICAgbWFrZSBzdXJlIHRoZXkncmUgcHJvcGVybHkgaW5jbHVkZWQgZHVyaW5nIGRlcGVuZGVuY3kgb3JkZXJpbmcKKworMjAxMS0wMi0yNSAxNjowNyAgaGFyZGFrZXIKKworICAgKiAgc25tcGxpYi9jYWxsYmFjay5jLCBzbm1wbGliL2NlcnRfdXRpbC5jLCBzbm1wbGliL2NoZWNrX3ZhcmJpbmQuYywgCisgICAgICAgIHNubXBsaWIvY29udGFpbmVyLmMsIHNubXBsaWIvZGF0YV9saXN0LmMsICAgCisgICAgICBzbm1wbGliL2RlZmF1bHRfc3RvcmUuYywgc25tcGxpYi9mZF9ldmVudF9tYW5hZ2VyLmMsICAgCisgICAgICBzbm1wbGliL2ZpbGVfdXRpbHMuYywgc25tcGxpYi9rZXl0b29scy5jLCBzbm1wbGliL3NubXB1c20uYzoKKworICAgc3VwZXJzdHJ1Y3R1cmFsaXphdGlvbml6aW5nIHRoZSBmZWF0dXJlcworCisyMDExLTAyLTI1IDE2OjA3ICBoYXJkYWtlcgorCisgICAqICBzbm1wbGliL3JlYWRfY29uZmlnLmMsIHNubXBsaWIvc25tcC10Yy5jLCBzbm1wbGliL3NubXBfY2xpZW50LmMsICAKKyAgICAgICBzbm1wbGliL3NubXBfZW51bS5jLCBzbm1wbGliL3NubXBfdHJhbnNwb3J0LmMsIHNubXBsaWIvc3lzdGVtLmMsIAorICAgICAgICBzbm1wbGliL3RleHRfdXRpbHMuYywgc25tcGxpYi90b29scy5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmMsIHNubXBsaWIvdWNkX2NvbXBhdC5jOgorCisgICBzaWduaWZpY2FudCBwYXJlbnQvY2hpbGQgZmVhdHVyZSBjbGFzc2lmaWNhdGlvbgorCisyMDExLTAyLTI1IDE2OjA2ICBoYXJkYWtlcgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYywgc25tcGxpYi9zbm1wdXNtLmM6CisKKyAgIGNsYXNzaWZ5IGEgZmV3IGNvbXBvbmVudHMgaW50byBhIHRvcC1sZXZlbCBsaWJuZXRzbm1wIGNvbXBvbmVudAorCisyMDExLTAyLTI1IDE2OjA2ICBoYXJkYWtlcgorCisgICAqICBzbm1wbGliL2tleXRvb2xzLmMsIHNubXBsaWIvbGNkX3RpbWUuYywgc25tcGxpYi9zY2FwaS5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wdXNtLmM6CisKKyAgIHN0cnVjdHVyaXplIHRoZSB1c20gZmVhdHVyZXMKKworMjAxMS0wMi0yNSAxNjowNiAgaGFyZGFrZXIKKworICAgKiAgc25tcGxpYi9jb250YWluZXIuYywgc25tcGxpYi9jb250YWluZXJfaXRlcmF0b3IuYywgICAKKyAgICAgIHNubXBsaWIvY29udGFpbmVyX2xpc3Rfc3NsbC5jLCBzbm1wbGliL2NvbnRhaW5lcl9udWxsLmMsICAgCisgICAgICBzbm1wbGliL2Rpcl91dGlscy5jOgorCisgICBzdHJ1Y3R1cmUgdGhlIGNvbnRhaW5lciBmZWF0dXJlcyBpbnRvIGEgaGllcmFyY2h5CisKKzIwMTEtMDItMjUgMTY6MDUgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi9zbm1wX2xvZ2dpbmcuYzoKKworICAgZ3JvdXAgdGhlIGxvZ2dpbmcgaGFuZGxlcnMgdW5kZXIgYSBwYXJlbnQgZmVhdHVyZQorCisyMDExLTAyLTI1IDE2OjA1ICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1tYWtlZG9jczoKKworICAgZml4IHRoZSBleHBlY3QgYXJndW1lbnQgY291bnQKKworMjAxMS0wMi0yNSAxNjowNSAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtbWFrZWRvY3M6CisKKyAgIGZpeCB0aGUgbmFtZSBvZiB0aGUgZXhwZWN0ZWQgaW5wdXQgZmlsZQorCisyMDExLTAyLTI1IDE2OjA1ICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1tYWtlZG9jczoKKworICAgYXJndW1lbnQgcGFyc2luZyBhbmQgdXNhZ2UoKSBvdXRwdXQKKworMjAxMS0wMi0yNSAxNjowNCAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jLCBhZ2VudC9oZWxwZXJzL3N0YXNoX3RvX25leHQuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBDaWRyUm91dGVUYWJsZS5jLCBzbm1wbGliL29pZF9zdGFzaC5jOgorCisgICAtIGFkZGVkIHR3byBvaWRfc3Rhc2ggZnVuY3Rpb25zIGFzIGluZGl2aWR1YWwgZmVhdHVyZXMKKyAgIC0gY2xlYW5lZCB1cCBzb21lIHdhcm5pbmdzIGluIHRoZSB0YWJsZV9pdGVyYXRvciBjb2RlCisKKzIwMTEtMDItMjUgMTI6NTUgIGR0czEyCisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6CisKKyAgIEZpeCB0aGUgY29tbWFuZCB0byBjcmVhdGUgYSBuZXcgU1ZOIHRhZyBsaW5lCisgICAKKyAgIChIYXZpbmcgYnJvdWdodCB0aGUgc3RydWN0dXJlIG9mIHRoZSA1LjUueCBicmFuY2gKKyAgIGludG8gbGluZSB3aXRoIHRoZSBvdGhlciBicmFuY2hlcywgdGhlIHByZXZpb3VzCisgICBjb21tYW5kIGlzIG5vdyB3cm9uZyBmb3IgKmFsbCogYnJhbmNoZXMsIHJhdGhlcgorICAgdGhhbiBqdXN0IG1vc3Qgb2YgdGhlbSEpCisKKzIwMTEtMDItMjUgMTE6MTAgIGR0czEyCisKKyAgICogc25tcGxpYi9zbm1wdjMuYzoKKworICAgQXZvaWQgYSBwb3NzaWJsZSBjcmFzaCBpZiB0aGUgZW5naW5lSUQgaXMgbm90IGF2YWlsYWJsZSBvciBzZXQuCisKKzIwMTEtMDItMjUgMDA6NDAgIGJhZXJtCisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckRlbHRhVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5oOgorCisgICBhZGRpbmcgaWZkZWYgY29kZSBmb3IgbWluaW1hbGlzdCBzdXBwb3J0IG9mIGRpZmZtYW4gbWliCisKKzIwMTEtMDItMjQgMTk6MjEgIGJhZXJtCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N5c3RlbS5jLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N5c3RlbS5oOgorCisgICBBZGRpbmcgbWluaW1hbGlzdCBpZmRlZnMgdG8gaG9zdCByZXNvdXJjZSBtaWIKKworMjAxMS0wMi0yNCAwNTo0NiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmMsIHNubXBsaWIvZGF0YV9saXN0LmM6CisKKyAgIG1hcmsgdGhlIGRhdGFfbGlzdCBmdW5jdGlvbiB0aGF0J3Mgb25seSB1c2VkIGluIHN0YWNoX2NhY2hpbmcgYXMKKyAgIGEgZmVhdHVyZQorCisyMDExLTAyLTI0IDA1OjQ2ICBoYXJkYWtlcgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYzoKKworICAgd2hvb3BzLgorCisyMDExLTAyLTI0IDA1OjQ2ICBoYXJkYWtlcgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYzoKKworICAgbW9yZSBtaXNzaW5nIHN0YXNoIHJlZmVyZW5jZXMKKworMjAxMS0wMi0yNCAwNTo0NSAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmM6CisKKyAgIGlmZGVmZWQvZmVhdHVyZWQgb3V0IGEgbWlzc2luZyBzdGFzaF9jYWNoZSBzZWN0aW9uCisKKzIwMTEtMDItMjQgMDU6NDUgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jOgorCisgICBtYWtlIHRoZSBwcmVmaXhfaW5mbyBtb3JlIGhpZXJhcmNoaWNhbCBhbmQgc3ViLWZlYXR1cmUgdGhlIHVudXNlZAorICAgb25lCisKKzIwMTEtMDItMjQgMDU6NDUgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9maW5kLXVudXNlZC1jb2RlOgorCisgICBkbyBpbmNsdWRlIHRoZSBwZXJsL3B5dGhvbiBjb2RlIHdoZW4gc2VhcmNoaW5nIGZvciBmaWxlcworCisyMDExLTAyLTI0IDA1OjQ1ICBoYXJkYWtlcgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYzoKKworICAgbWFrZSB0aGUgc2VtaS11c2VkIHRhYmxlX3RkYXRhIGZ1bmN0aW9ucyBjaGlsZHJlbiBvZgorICAgdGFibGVfdGRhdGFfYWxsCisgICBpbnN0ZWFkIG9mIGp1c3QgdGFibGVfdGRhdGEKKworMjAxMS0wMi0yMyAyMjowMCAgbWFnZnIKKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX3RkYXRhLmM6CisKKyAgIENvcnJlY3QgdHlwbworCisyMDExLTAyLTIzIDIxOjU0ICBtYWdmcgorCisgICAqIHNubXBsaWIvcGFyc2UuYzoKKworICAgQ29ycmVjdCB0eXBvCisKKzIwMTEtMDItMjMgMjE6MTAgIG5iYQorCisgICAqIGFnZW50L3NubXBfdmFycy5jOgorCisgICBwcm9wZXIgaW5jbHVkZSBvZiBwcm90b3R5cGUKKworMjAxMS0wMi0yMyAyMTowNyAgaGFyZGFrZXIKKworICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19hZ2VudCwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX3RyYW5zcG9ydHMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZToKKworICAgY29tcGF0IHNvbWUgZmVhdHVyZSBoZWFkZXIgY2hpY2tlbiBhbmQgZWdnIHByb2JsZW1zCisKKzIwMTEtMDItMjMgMTU6MjcgIG5iYQorCisgICAqIHNubXBsaWIvc25tcHVzbS5jOgorCisgICB1bnNpZ25lZCBqdWdnbGluZyB0byByZW1vdmUgd2FybmluZ3MKKworMjAxMS0wMi0yMyAxNToyMyAgbmJhCisKKyAgICogIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZS5oLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5jOgorCisgICB1bnNpZ25lZCBqdWdnbGluZyB0byByZW1vdmUgd2FybmluZ3MKKworMjAxMS0wMi0yMyAxNToyMCAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliLmg6CisKKyAgIEVuYWJsZSAocHJvYmFibHkgZm9yZ290dGVuKSBpcEFkZHJlc3NQcmVmaXhUYWJsZQorCisyMDExLTAyLTIzIDE0OjMwICBoYXJkYWtlcgorCisgICAqICBsb2NhbC9taW5pbWFsaXN0LCBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtY2hlY2ssICAgCisgICAgICBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtbWFrZWRvY3MsICAgCisgICAgICBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtcmVtb3ZlLCAgIAorICAgICAgbG9jYWwvbWluaW1hbGlzdC9maW5kLXVudXNlZC1jb2RlLCAgIAorICAgICAgbG9jYWwvbWluaW1hbGlzdC9yZW1vdmVpZmRlZmNvZGUucGw6CisKKyAgIGFkZGVkIG90aGVyIG1pc3NpbmcgJ25ldycgZmlsZXMgbm90IGluY2x1ZGVkIGluIHRoZSBtaW5pbWFsaXN0CisgICBwYXRjaCBmaWxlCisKKzIwMTEtMDItMjMgMDk6NTQgIG5iYQorCisgICAqICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fZnJlZWJzZDQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9uZXRic2QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9vcGVuYnNkLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9mcmVlYnNkNC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbmV0YnNkLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9vcGVuYnNkLmM6CisKKyAgIExvYWRpbmcgSVB2NiBkYXRhIGlzIGEgbm8tbm8gd2hlbiBJUHY2IG5vdCBlbmFibGVkCisKKzIwMTEtMDItMjMgMDk6MzYgIG5iYQorCisgICAqIGFwcHMvc25tcHRhYmxlLmM6CisKKyAgIEZpeCBidWcgMzExODYzMTogc25tcHRhYmxlIHNlZ2ZhdWx0cyBpZiBpbmRleCBjb250YWlucyA6CisgICBjaGFyYWN0ZXIKKworMjAxMS0wMi0yMyAwOTozMCAgbmJhCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZnJlZWJzZDguaDoKKworICAgRnJlZUJTRCA4IHN1cHBvcnQKKworMjAxMS0wMi0yMyAwMTo0OCAgaGFyZGFrZXIKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg6CisKKyAgIGFkZGVkIG1pc3NpbmcgbmV0LXNubXAtZmVhdHVyZXMuaAorCisyMDExLTAyLTIzIDAwOjAxICBoYXJkYWtlcgorCisgICAqICBNYWtlZmlsZS5pbiwgTWFrZWZpbGUucnVsZXMsIE1ha2VmaWxlLnRvcCwgYWdlbnQvTWFrZWZpbGUuaW4sICAgCisgICAgICBhZ2VudC9hZ2VudF9oYW5kbGVyLmMsIGFnZW50L2FnZW50X2luZGV4LmMsICAgCisgICAgICBhZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jLCBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jLCAgIAorICAgICAgYWdlbnQvYWdlbnRfdHJhcC5jLCBhZ2VudC9oZWxwZXJzL2FsbF9oZWxwZXJzLmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL2JhYnlfc3RlcHMuYywgYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL2luc3RhbmNlLmMsIGFnZW50L2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy9tdWx0aXBsZXhlci5jLCBhZ2VudC9oZWxwZXJzL29sZF9hcGkuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvcmVhZF9vbmx5LmMsIGFnZW50L2hlbHBlcnMvcm93X21lcmdlLmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL3NjYWxhci5jLCBhZ2VudC9oZWxwZXJzL3NjYWxhcl9ncm91cC5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy9zbm1wX2dldF9zdGF0aXN0aWMuYywgYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jLCAgCisgICAgICAgYWdlbnQvaGVscGVycy9zdGFzaF90b19uZXh0LmMsIGFnZW50L2hlbHBlcnMvdGFibGUuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfYXJyYXkuYywgYWdlbnQvaGVscGVycy90YWJsZV9jb250YWluZXIuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYywgYWdlbnQvaGVscGVycy90YWJsZV9yb3cuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYywgYWdlbnQvaGVscGVycy93YXRjaGVyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5pbiwgYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNDYWNoZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNMb2dnaW5nLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc01vZHVsZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2NsaWVudC5jLCBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Q29uZi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFNldFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckNvbmYuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXJyb3JUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvbkNvbmYuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb25UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0Q29uZi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cEV4cHJlc3Npb25UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVFdmVudFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb25mLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb3JlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RhdGFfc2V0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL3NjYWxhcl9pbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfa2luZm8uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbmxpc3QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfcGVyZnN0YXQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvaHdfbWVtLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X2Rhcndpbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcGtnaW5mby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcnBtLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMsIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmMsIAorICAgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9jb25zdGFudHMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2NvbW1vbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfZGF0YV9hY2Nlc3MuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmMsICAKKyAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuYywgIAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcF9zY2FsYXJzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcHY2LmMsIGFnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5jLCAKKyAgICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc2V0U2VyaWFsTm8uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliXzVfNS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jLCBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb25mLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbnRleHQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VyS2V5VGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0c181XzUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzXzVfNS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYywgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuaCwgCisgICAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2M21pYnMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9jb21tb24uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX3NvbGFyaXMyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC90ZXN0aGFuZGxlci5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUFkZHJUYWJsZS9zbm1wVGxzdG1BZGRyVGFibGUuYywgCisgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtUGFyYW1zVGFibGUvc25tcFRsc3RtUGFyYW1zVGFibGUuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL3RzbS1taWIvc25tcFRzbVN0YXRzL3NubXBUc21TdGF0cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtU2Vuc29ycy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm9jLmMsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmMsICAKKyAgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9jb21tb24uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9zb2xhcmlzMi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMsIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9pcXVlcnkuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL3dpbkV4dERMTC5jLCBhZ2VudC9zbm1wX2FnZW50LmMsICAgCisgICAgICBhZ2VudC9zbm1wX3ZhcnMuYywgYWdlbnQvc25tcGQuYywgYXBwcy9NYWtlZmlsZS5pbiwgICAKKyAgICAgIGFwcHMvYWdlbnR4dHJhcC5jLCBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmluLCAgIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9tYWluLmMsIGFwcHMvc25tcG5ldHN0YXQvbmV0c3RhdC5oLCAgIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9yb3V0ZS5jLCBhcHBzL3NubXB0ZXN0LmMsIGFwcHMvc25tcHRyYW5zbGF0ZS5jLCAgCisgICAgICAgYXBwcy9zbm1wdHJhcGQuYywgYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYywgICAKKyAgICAgIGFwcHMvc25tcHRyYXBkX3NxbC5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2FnZW50LCBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19saWIsIAorICAgICAgICBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19zZWN1cml0eV9tb2R1bGVzLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfdHJhbnNwb3J0cywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMiwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3BlcmxfcHl0aG9uLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGUsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9saWJzbm1wLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBrc20uaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgcGVybC9PSUQvT0lELnhzLCAgIAorICAgICAgcGVybC9TTk1QL1NOTVAueHMsIHBlcmwvYWdlbnQvYWdlbnQueHMsIHNubXBsaWIvTWFrZWZpbGUuaW4sICAgCisgICAgICBzbm1wbGliL2NhbGxiYWNrLmMsIHNubXBsaWIvY2VydF91dGlsLmMsIHNubXBsaWIvY2hlY2tfdmFyYmluZC5jLCAKKyAgICAgICAgc25tcGxpYi9jb250YWluZXIuYywgc25tcGxpYi9jb250YWluZXJfaXRlcmF0b3IuYywgICAKKyAgICAgIHNubXBsaWIvY29udGFpbmVyX2xpc3Rfc3NsbC5jLCBzbm1wbGliL2NvbnRhaW5lcl9udWxsLmMsICAgCisgICAgICBzbm1wbGliL2RhdGFfbGlzdC5jLCBzbm1wbGliL2RlZmF1bHRfc3RvcmUuYywgICAKKyAgICAgIHNubXBsaWIvZGlyX3V0aWxzLmMsIHNubXBsaWIvZmRfZXZlbnRfbWFuYWdlci5jLCAgIAorICAgICAgc25tcGxpYi9maWxlX3V0aWxzLmMsIHNubXBsaWIvaW50NjQuYywgc25tcGxpYi9rZXl0b29scy5jLCAgIAorICAgICAgc25tcGxpYi9sY2RfdGltZS5jLCBzbm1wbGliL21pYi5jLCBzbm1wbGliL29pZF9zdGFzaC5jLCAgIAorICAgICAgc25tcGxpYi9wYXJzZS5jLCBzbm1wbGliL3JlYWRfY29uZmlnLmMsIHNubXBsaWIvc2NhcGkuYywgICAKKyAgICAgIHNubXBsaWIvc25tcC10Yy5jLCBzbm1wbGliL3NubXBfYXBpLmMsIHNubXBsaWIvc25tcF9jbGllbnQuYywgICAKKyAgICAgIHNubXBsaWIvc25tcF9lbnVtLmMsIHNubXBsaWIvc25tcF9sb2dnaW5nLmMsICAgCisgICAgICBzbm1wbGliL3NubXBfb3BlbnNzbC5jLCBzbm1wbGliL3NubXBfcGFyc2VfYXJncy5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wX3NlY21vZC5jLCBzbm1wbGliL3NubXBfdHJhbnNwb3J0LmMsICAgCisgICAgICBzbm1wbGliL3NubXBrc20uYywgc25tcGxpYi9zbm1wdHNtLmMsIHNubXBsaWIvc25tcHVzbS5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wdjMuYywgc25tcGxpYi9zeXN0ZW0uYywgc25tcGxpYi90ZXh0X3V0aWxzLmMsICAgCisgICAgICBzbm1wbGliL3Rvb2xzLmMsIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5jLCBzbm1wbGliL3VjZF9jb21wYXQuYywgICAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3YzY29uZmlnLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9TdjN1c21jb25maWdiYXNlLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9TdjN2YWNtY29uZmlnLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDQ5c25tcHYzaW5mb3JtX3NpbXBsZSwgICAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA0OXNubXB2M2luZm9ybWF1dGhfc2ltcGxlLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU3dHJhcGRhdXRodGVzdDJfc2ltcGxlLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU3dHJhcGRhdXRodGVzdDNfc2ltcGxlLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU3dHJhcGRhdXRodGVzdF9zaW1wbGUsICAgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNjB0cmFwZHBlcmxfc2ltcGxlLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDYxYWdlbnRwZXJsX3NpbXBsZSwgICAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDExM2FnZW50eHRyYXBfc2ltcGxlLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTE0YWdlbnR4YWdlbnR4dHJhcF9zaW1wbGU6CisKKyAgIE5FV1M6IHBhY2thZ2luZzogRW5hYmxlIG1pY3JvLWFuZC1tYWNyby1mZWF0dXJlIG1hbmFnZW1lbnQgd2l0aGluCisgICBOZXQtU05NUDsgdGhpcyBhZGRzIGEgbnVtYmVyIG9mIG5ldyBmbGFncyB0byBjb25maWd1cmUKKyAgICgtLWVuYWJsZS1taW5pbWFsaXN0IGFuZCAtLWVuYWJsZS1yZWFkLW9ubHkpLiBUaGVzZSBjaGFuZ2VzIGFyZQorICAgZGVzaWduZWQgdG8gcmVtb3ZlIG11Y2ggb2YgdGhlIGlubGluZSBjb2RlIHRoYXQgaXNuJ3QgYWx3YXlzCisgICBuZWNlc3Nhcnkgb3IgZGVzaXJlZC4gU2NyaXB0cyBleGlzdCAoYW5kIHdpbGwgYmUgaW1wcm92ZWQpIHRvCisgICBzdGlwIG91dCB1bnVzZWQgY29tcG9uZW50cyBmcm9tIHRoZSBjb2RlIGVudGlyZWx5IHRvIGVuYWJsZSBhCisgICBzaG9ydGVyIHJldmlldyBwcm9jZXNzIGZvciB1cGdyYWRpbmcgdG8gbmV3IHJlbGVhc2VzLiBUaGlzIHdvcmsKKyAgIHdhcyBkb25lIGJ5IFdlcyBIYXJkYWtlciBhbmQgTWljaGFlbCBCYWVyIGZyb20gU1BBUlRBLCBJbmMuIGJ1dAorICAgaXMgYmVpbmcgY2hlY2tlZCBpbiBhcyBhIGxhcmdlIHBhdGNoIHNpbmNlIGNvbnZlcnRpbmcgdGhlIG1pY3JvCisgICBwYXRjaGVzIGZyb20gZ2l0IHRvIHN2biB0dXJlbmQgb3V0IHRvIGJlIGltcG9zc2libGUKKworMjAxMS0wMi0yMiAyMzo1NSAgaGFyZGFrZXIKKworICAgKiBGQVE6CisKKyAgIHVzZSB0aGUgd2lraSBVUkwgaW5zdGVhZCBvZiB0aGUgdHV0b3JpYWwtNSBVUkwgZm9yIHRoZSBzbm1wdHJhcAorICAgdHV0b3JpYWwKKworMjAxMS0wMi0yMSAyMjo0MCAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9raW5mby5jOgorCisgICBwcm9wZXIgcHJvY2VzcyBzdGF0dXMgdmFsdWVzIGZvciBuZXRic2QKKworMjAxMS0wMi0yMSAyMjozOSAgbmJhCisKKyAgICogc25tcGxpYi9zY2FwaS5jOgorCisgICBjb25kaXRpb25hbGl6ZSB2YXJpYWJsZQorCisyMDExLTAyLTIxIDIyOjIwICBuYmEKKworICAgKiBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm4uaDoKKworICAgdGNwLW1pYi91ZHAtbWliIHN1cHBvcnQgZm9yIHRoZSAqYnNkcworCisyMDExLTAyLTIxIDIyOjE2ICBuYmEKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvbWliSUkuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9mcmVlYnNkNC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX25ldGJzZC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX29wZW5ic2QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9mcmVlYnNkNC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbmV0YnNkLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9vcGVuYnNkLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2UuYzoKKworICAgdGNwLW1pYi91ZHAtbWliIHN1cHBvcnQgZm9yIHRoZSAqYnNkcworCisyMDExLTAyLTIxIDIyOjA1ICBuYmEKKworICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9kYXRhX2FjY2Vzcy5jOgorCisgICBQcm9wZXJseSBlbmQgZGVidWcgbWVzc2FnZSB3aXRoIG5ld2xpbmUKKworMjAxMS0wMi0yMSAyMjowNCAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2xpbnV4LmM6CisKKyAgIHJlbW92ZSB2YXIgdGhhdCBzaGFkb3dzIHRoZSB1c2VmdWwgb25lCisKKzIwMTEtMDItMjEgMjI6MDIgIG5iYQorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYzoKKworICAgbWFqb3IgZmlkZGxpbmcgdG8gZ2V0IHRoaW5ncyB3b3JraW5nIGZvciBvcGVuYnNkIHRvby4gVGhpcyBzaG91bGQKKyAgIHJlYWxseSBiZSByZXdvcmtlZCB0byB1c2UgdGhlIHRjcC1taWIvdWRwLW1pYi9kYXRhX2FjY2VzcworCisyMDExLTAyLTIxIDIxOjU5ICBuYmEKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jOgorCisgICBmaXggdGNwIHN0YXRlcyBmb3IgZHJhZ29uZmx5YnNkCisKKzIwMTEtMDItMjEgMjE6NTcgIG5iYQorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJLmg6CisKKyAgIGVuYWJsZSBuZXcgdGNwL3VkcCBtaWJzIGZvciBzb2xhcmlzCisKKzIwMTEtMDItMjEgMjE6NTMgIG1hZ2ZyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjMuYzoKKworICAgRG8gbm90IHVzZSBjOTkKKworMjAxMS0wMi0yMSAxOTowOCAgaGFyZGFrZXIKKworICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDoKKworICAgVXBkYXRlZCBjb21tZW50IGFib3V0IHdoZXJlIG1ha2VyZWxlYXNlIGNvbWVzIGZyb20gKG5vdyBnaXRodWIpCisKKzIwMTEtMDItMjAgMDk6MjQgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvc25tcF9hZ2VudC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzMTg1NTI4OiBzaHV0ZG93bl9tYXN0ZXJfYWdlbnQgZG9lc24ndCBjbG9zZQorICAgVURQIHNvY2tldAorICAgKEZpeGVzIGEgYnVnIGludHJvZHVjZWQgaW4gcjE5NTExLikKKworMjAxMS0wMi0xOCAxNDo0MyAganNhZnJhbmVrCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19nZXRmc3N0YXRzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50Y3RsLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50ZW50LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2h3X2ZzeXMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJoX3N0b3JhZ2UuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvZnN5cy5oLCBtYW4vc25tcGQuY29uZi41LmRlZjoKKworICAgQ0hBTkdFUzogc25tcGQ6IHJld29ya2VkIGhyU3RvcmFnZVRhYmxlIHRvIHN1cHBvcnQgbGFyZ2UKKyAgIGZpbGVzeXN0ZW1zLgorICAgCisgICBUaGUgaHJTdG9yYWdlQWxsb2NhdGlvblVuaXRzIGRvZXMgbm90IHJlcG9ydCByZWFsIGFsbG9jYXRpb24gdW5pdAorICAgc2l6ZSwKKyAgIGJ1dCBzb21lIGNhbGN1bGF0ZWQgdmFsdWUgc28gaHJTdG9yYWdlQWxsb2NhdGlvblVuaXRzICoKKyAgIGhyU3RvcmFnZVNpemUKKyAgIGdpdmVzIHJlYWwgc2l6ZSBvZiB0aGUgZmlsZXN5c3RlbS4KKyAgIAorICAgVGhpcyBjYWxjdWxhdGlvbiBoYXBwZW5zIG9ubHkgd2hlbiBoclN0b3JhZ2VTaXplIGlzIHRvbyBzbWFsbAorICAgKDMyYml0cykKKyAgIGZvciBmaWxlc3lzdGVtIHNpemUsIGUuZy4gZmlsZXN5c3RlbXMgbGFyZ2VyIHRoYW4gOFRCIHdpdGggNDA5NgorICAgYnl0ZXMKKyAgIGJsb2NrIHNpemUuCisgICAKKyAgIFRoaXMgY2FsY3VsYXRpb24gY2FuIGJlIHR1cm5lZCBvZmYgYnkgJ3JlYWxTdG9yYWdlVW5pdHMnIGNvbmZpZworICAgb3B0aW9uLgorCisyMDExLTAyLTE4IDE0OjI5ICBqc2FmcmFuZWsKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX21udGVudC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9tbnR0eXBlcy5oOgorCisgICBBZGQgSkZTIGFuZCBYRlMgdG8gbGlzdCBvZiBrbm93biBmaWxlc3VzdGVtcworCisyMDExLTAyLTE3IDExOjI4ICBqc2FmcmFuZWsKKworICAgKiBsb2NhbC9zbm1wLWJyaWRnZS1taWI6CisKKyAgIEZpeGVkIHNubXAtYnJpZGdlLW1pYiBpbiBzdGFuZGFsb25lIChhZ2VudHgpIHZlcnNpb24uCisgICBEb24ndCBkZWNsYXJlIGxvY2FsIHZhcmlhYmxlcyBpbnNpZGUgYmxvY2suIFBhdGNoIHByb3ZpZGVkIGJ5CisgICBKZW5zIE9zdGVya2FtcC4KKworMjAxMS0wMi0xNiAxNDo1NiAganNhZnJhbmVrCisKKyAgICogbG9jYWwvc25tcC1icmlkZ2UtbWliOgorCisgICBGaXhlZCBzbm1wLWJyaWRnZS1taWIgd2hlbiB3b3JraW5nIGluIHRoZSBlbWJlZGRlZCBwZXJsLgorCisyMDExLTAyLTE2IDEzOjE2ICBqc2FmcmFuZWsKKworICAgKiBsb2NhbC9zbm1wLWJyaWRnZS1taWI6CisKKyAgIEZpeGVkIEdFVE5FWFQgcHJvY2Vzc2luZyBpbiBzbm1wLWJyaWRnZS1taWIuCisKKzIwMTEtMDItMTUgMjI6MjQgIG5iYQorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3VkcFRhYmxlLmM6CisKKyAgIFByb3Blcmx5IHNhdmUgZW50cmllcyBmb3IgTmV0QlNEIGFuZCBEcmFnb25GbHkKKworMjAxMS0wMi0xNSAyMjoxOCAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmM6CisKKyAgIHJlbW92ZSByZWR1bmRhbnQgaW5jbHVkZXMKKworMjAxMS0wMi0xNSAyMTo0NiAgbmJhCisKKyAgICogY29uZmlndXJlOgorCisgICByZXJ1biBhdXRvaGVhZGVyL2F1dG9jb25mCisKKzIwMTEtMDItMTUgMjE6MzMgIG5iYQorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oOgorCisgICBpbmNsdWRlIHN5cy90eXBlcy5oIGJlZm9yZSBzeXMvc29ja2V0LmgKKworMjAxMS0wMi0xNSAyMToyNiAgbmJhCisKKyAgICogbTQvbmV0c25tcF9zZWFyY2hfbGlicy5tNDoKKworICAgVG9vIG11Y2ggcXVvdGluZyBpcyBiYWQKKworMjAxMS0wMi0xNSAyMToxMSAgbmJhCisKKyAgICogIGFnZW50L21pYmdyb3VwL21pYklJLmgsIGFnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwdjYuaDoKKworICAgRml4IElQdjYgVENQIGFuZCBVRFAgdGFibGVzLCAqQlNEIHN1cHBvcnQKKworMjAxMS0wMi0xNSAyMDo0NSAgbmJhCisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdENvbmYuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cFZhbHVlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwUmVzdWx0c1RhYmxlLmM6CisKKyAgIEtpbGwgY29tcGlsZXIgd2FybmluZ3MKKworMjAxMS0wMi0xNSAyMDo0NCAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYzoKKworICAgRmlsdGVyIElQdjYgZW50cmllcyBmcm9tIElQdjQgdGFibGUKKworMjAxMS0wMi0xNSAyMDo0MiAgbmJhCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fa2luZm8uYzoKKworICAgUHJvcGVyIHVzZSBvZiBnZXRwcm9jMiBhbmQgZHJhZ29uZmx5IHN1cHBvcnQKKworMjAxMS0wMi0xNSAyMDo0MSAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX2dldGZzc3RhdHMuYzoKKworICAgZ2V0dmZzc3RhdCBpcyBvbmx5IGZvciBOZXRCU0QKKworMjAxMS0wMi0xNSAyMDozOSAgbmJhCisKKyAgICogY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMxLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczI6CisKKyAgIERldGVjdCBuZWVkIGZvciAtbGt2bSBpbiBwcm9wZXIgdGltZQorCisyMDExLTAyLTE1IDE5OjQyICBoYXJkYWtlcgorCisgICAqIHNubXBsaWIvc25tcF9sb2dnaW5nLmM6CisKKyAgIHJlbW92ZSB0aGUgc3RhdGVtZW50IGFib3V0IGVuYWJsaW5nIHN0ZGVyciBieSBkZWZhdWx0LgorCisyMDExLTAyLTE1IDE5OjQyICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jOgorCisgICByZW1vdmUgMyBmdW5jdGlvbnMgdGhhdCBhcyBmYXIgYXMgSSBjYW4gdGVsbCBoYXZlIHBvc3NpYmx5IG5ldmVyCisgICBiZWVuIHVzZWQKKworMjAxMS0wMi0xNCAxNDozOCAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9zbm1wZC5jOgorCisgICBGaXhlZCBhIE1pbkdXLXNwZWNpZmljIGNvbXBpbGVyIHdhcm5pbmcuCisKKzIwMTEtMDItMTMgMTY6MjggIG1hZ2ZyCisKKyAgICogbmV0LXNubXAtY29uZmlnLmluOgorCisgICBDSEFOR0VTOiBNYWtlIGl0IHBvc3NpYmxlIHRvIGJ1aWxkIHN0YXRpYyBhcHBsaWNhdGlvbnMgdXNpbmcKKyAgIG5ldC1zbm1wLWNvbmZpZyBhbmQgdGhlIC0qbGlicyBmbGFncyBvbmNlIG1vcmUuCisKKzIwMTEtMDItMTAgMTU6MTMgIGR0czEyCisKKyAgICogc25tcGxpYi9taWIuYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzE2NTg3ODogQ2F0Y2ggYnVmZmVyIG92ZXJydW4gb24KKyAgIDY0LWJpdCBzeXN0ZW1zCisKKzIwMTEtMDItMTAgMTU6MDYgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMzE1MjQxMjogSGFuZGxlIChhbmQgcmVwb3J0KSBwcm9ibGVtcworICAgcmVhZGluZyAvcHJvYy92bXN0YXQKKworMjAxMS0wMi0wOSAwNzozNCAgYnZhc3NjaGUKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg6CisKKyAgIEJ1aWxkaW5nIERMTCBhbmQgUGVybCBtb2R1bGVzIHdpdGggd2luMzIvYnVpbGQuYmF0IHdvcmtzIGFnYWluLgorCisyMDExLTAyLTA4IDE5OjM4ICBoYXJkYWtlcgorCisgICAqIGFnZW50L2hlbHBlcnMvaW5zdGFuY2UuYywgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oOgorCisgICBSZW1vdmUgdGhlIGZ1bmN0aW9ucyBtYXJrZWQgYXMgZGVwcmVjYXRlZCBhbmQgc2FmZSBmb3IgcmVtb3ZhbCBpbgorICAgNS42LgorCisyMDExLTAyLTA4IDE3OjQxICBoYXJkYWtlcgorCisgICAqIHBlcmwvU05NUC9TTk1QLnhzLCBwZXJsL2FnZW50L2FnZW50LnBtOgorCisgICBDSEFOR0VTOiBwZXJsOiBwYXRjaCBmcm9tIE1hcnRpbiBCdWNrOiBkb24ndCBhbHdheXMgb3BlbiBzdGRlcnIKKyAgIGFzIHRoZSBjYWxscyB0byBzbm1wX2xvZyBhbHJlYWR5IGRvIHRoaXMgYW5kIGl0IG1lc3NlcyB1cCB0aGUKKyAgIGFnZW50IHdoZW4gZW1iZWRkZWQKKworMjAxMS0wMi0wOCAxNzozNyAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBGaXggYSBzdHJsZW4gY2FsY3VsYXRpb24gYXMgcG9pbnRlZCBvdXQgYnkKKyAgIEtvbnN0YW50aW4gQmF5ZGFyb3YKKworMjAxMS0wMi0wNyAyMDowNyAgaGFyZGFrZXIKKworICAgKiBtYW4vc25tcC5jb25mLjUuZGVmOgorCisgICBkb2N1bWVudCB0aGUgMyBuZXcgU1NIIGNvbmZpZyB0b2tlbnMKKworMjAxMS0wMi0wNyAyMDowNyAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFNTSERvbWFpbi5jOgorCisgICBDSEFOR0VTOiBsaWJuZXRzbm1wOiBtYWRlIHRoZSBTU0ggdHJhbnNwb3J0IGNvbmZpZ3VyYWJsZSBhcyBpdAorICAgc2hvdWxkIGJlLgorCisyMDExLTAyLTA3IDIwOjA3ICBoYXJkYWtlcgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmg6CisKKyAgIEFkZGVkIGRlZmF1bHRfc3RvcmUgc3RyaW5ncyBmb3Igc3NoOiB1c2VybmFtZSwgcHVia2V5LCBwcml2a2V5CisKKzIwMTEtMDItMDYgMDY6MzQgIG1hZ2ZyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jOgorCisgICBTaW1wbGlmeSB0aGUgY29udHJvbCBmbG93IHRvIGFsbG93IGZvciBtb3JlIG9wdGltaXphdGlvbi4KKworMjAxMS0wMi0wMyAyMjo0MiAgdGFuZGVycworCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAzMTcxODc4OiBVc2luZyBTTk1QdjMgY29udGV4dCBkb2VzIG5vdAorICAgd29yaworCisyMDExLTAyLTAyIDA3OjA5ICBtYWdmcgorCisgICAqIGFnZW50L3NubXBkLmM6CisKKyAgIEluY2x1ZGUgdGhlIFVTSU5HXyB2YXJpYWJsZXMgZnJvbSB0aGUgYWdlbnQgbGlicmFyeSBhcyB3ZWxsLCBpbgorICAgcGFydGljdWxhciB0aGUKKyAgIFVTSU5HX0FHRU5UWF8qIHZhcmlhYmxlcy4KKworMjAxMS0wMi0wMSAxMzowNyAganNhZnJhbmVrCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2NvbW1vbi5jOgorCisgICBEb24ndCBjaGVjayBmb3IgMzIvNjRiaXQgd3JhcCBpbiBjYWxjdWxhdGVkIGVudHJpZXMuCisKKzIwMTEtMDItMDEgMDk6NDEgIGpzYWZyYW5laworCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19jb21tb24uYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IGZpeGVkIHRoZSBhZ2VudCB3cml0aW5nICdsb29rcyBsaWtlIGEgNjRiaXQgd3JhcCwKKyAgIGJ1dCBwcmV2IT1uZXcnIGluIHN5c2xvZyB3aGVuIGNvbXB1dGluZyBpcFN5c3RlbVN0YXRzCisgICAKKyAgIFdpdGhvdXQgdGhlIG1lbWNweSwgcHJldl92YWxzLT5zdGF0cyBhbmQgbmV3X3ZhbHMtPnN0YXRzIGNvdWxkCisgICBnZXQgZGlmZmVyZW50LAorICAgd2hpY2ggY291bGQgbXVjaCBtdWNoIGxhdGVyICh3aGVuIGEgY291bnRlciBnZXRzIGJpZ2dlciB0aGFuIDMyCisgICBiaXRzKSByZXN1bHQKKyAgIGluICdwcmV2IT1uZXcnIG1lc3NhZ2UgaW4gc3lzbG9nLiBUeXBpY2FsbHkgdGhpcyBoYXBwZW5zIGFmdGVyCisgICBsb25nIHRpbWUgb2YKKyAgIHVwdGltZSBhbmQgaXQgaXMgdmVyeSBoYXJkIHRvIHJlcHJvZHVjZS4KKworMjAxMS0wMi0wMSAwNzoxOSAgbWFnZnIKKworICAgKiBhZ2VudC9zbm1wZC5jOgorCisgICBSZW1vdmUgc29tZSB1bnVzZWQgaW5jbHVkZXMKKworMjAxMS0wMS0zMSAyMjozOSAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmM6CisKKyAgIGFkZHByb3RvdHlwZXMgYW5kIHJlbW92ZSB1bnVzZWQgdmFycworCisyMDExLTAxLTMxIDIyOjM3ICBuYmEKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvbi5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3QuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cFZhbHVlVGFibGUuYywgICAKKyAgICAgIGFwcHMvc25tcG5ldHN0YXQvaW5ldDYuYzoKKworICAgY29uc3QganVnZ2xpbmcgdG8gcmVtb3ZlIHdhcm5pbmdzCisKKzIwMTEtMDEtMzEgMjI6MzAgIG5iYQorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jOgorCisgICBkaXNraW8gZm9yIGRyYWdvbmZseQorCisyMDExLTAxLTMxIDIyOjI4ICBuYmEKKworICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2tpbmZvLmM6CisKKyAgIHByb3Blcmx5IG5hbWUgaW5pdGFsaXplciBmdW5jdGlvbiBmb3IgY3B1X2tpbmZvCisKKzIwMTEtMDEtMzAgMTU6MjEgIG1hZ2ZyCisKKyAgICogYXBwcy9hZ2VudHh0cmFwLmM6CisKKyAgIFJlZHVjZSB0aGUgbnVtYmVyIG9mIHVzZWQgaW5jbHVkZSBmaWxlcy4KKworMjAxMS0wMS0zMCAwOTozNSAgbWFnZnIKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmg6CisKKyAgIENIQU5HRVM6IHNubXBkOiBBZGQgbWlzc2luZyBmdW5jdGlvbiBkZWNsYXJhdGlvbgorCisyMDExLTAxLTMwIDAxOjA2ICB0YW5kZXJzCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDMxNTE4OTc6IGZkIGxlYWsgdy8gL3Byb2MvcGFydGl0aW9ucworICAgcmVhZCBpbiBkaXNraW8KKworMjAxMS0wMS0yOSAyMzozNiAgdGFuZGVycworCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmM6CisKKyAgIE5FV1M6IHNubXBkOiBCVUc6IDMxNjY1Njg6IGhyU3lzdGVtUHJvY2Vzc2VzIG1pc3NpbmcgaW4gNS42LzUuNi4xCisKKzIwMTEtMDEtMjcgMDk6MzUgIGR0czEyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgsIHNubXBsaWIvc25tcF9hcGkuYzoKKworICAgQWZ0ZXIgdGVuIHllYXJzIGludGVuc2l2ZSB1c2UsIGFuICJleHBlcmltZW50YWwiCisgICBmZWF0dXJlIGNhbiBwcm9iYWJseSBiZSByZWxlYXNlZCBmb3IgZ2VuZXJhbCB1c2UuCisKKzIwMTEtMDEtMjYgMTY6NTAgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWliMmM6CisKKyAgIENIQU5HRVM6IG1pYjJjOiBtYWtlIHRoZSBtaWIyYyBmb3JlYWNoIHJhbmdlcyB3b3JrIGFzIGFkdmVydGlzZWQKKyAgIGluIHRoZSBjb21tZW50cy4KKworMjAxMS0wMS0yNiAxNjo0OSAgaGFyZGFrZXIKKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMjdzbm1wdjNEZWZhdWx0c19zaW1wbGU6CisKKyAgIGEgdGVzdCB0byBlbnN1cmUgdjMvVVNNIHNubXAuY29uZiBzZXR0aW5ncyB3b3JrCisKKzIwMTEtMDEtMjYgMTY6NDkgIGhhcmRha2VyCisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6CisKKyAgIHJlbW92ZSB0ZXN0b3B0cworCisyMDExLTAxLTI2IDA5OjEyICBqc2FmcmFuZWsKKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm9jLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBmaXhlZCByYXJlIHJhY2UgY29uZGl0aW9uIHdoZW4gY291bnRpbmcgcHJvY2Vzc2VzCisgICBmb3IgVUNELVNOTVAtTUlCOjpwclRhYmxlCisgICAKKyAgIFRoZSBYWCBwcm9jZXNzIGNhbiBleGl0IGFmdGVyIGZvcGVuKC9wcm9jL1hYL3N0YXR1cykgYW5kIGJlZm9yZQorICAgZmdldHMoKSBmcm9tIGl0LiBzbm1wZCBzaG91bGQgY29udGludWUgd2l0aCBvdGhlciBwcm9jZXNzZXMgYW5kCisgICBub3QgdG8gc3RvcC4KKworMjAxMS0wMS0xOSAxMzo1NyAganNhZnJhbmVrCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczE6CisKKyAgIE1ha2UgdXMgY29tcGF0aWJsZSB3aXRoIHJwbS00LjksIHJwbUdldEZpbGVzeXN0ZW1MaXN0IGRvZXMgbm90CisgICBleGlzdCBhbnltb3JlLCBzbyB0aGUgY29uZmlndXJlIHNjcmlwdCBzaG91bGQgbm90IGNoZWNrIGl0LgorCisyMDExLTAxLTE5IDA2OjMxICBuYmEKKworICAgKiBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczE6CisKKyAgIGRpc2tJT0xBeCByZXF1aXJlcyBleHAgd2hpY2ggbWF5IHJlcXVpcmUgLWxtCisKKzIwMTEtMDEtMTggMjI6MzkgIG5iYQorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIGF1dG9oZWFkZXIKKworMjAxMS0wMS0xOCAyMjozNyAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oOgorCisgICBGaW5kIHByb3BlciBpZi1taWIgaW50ZXJmYWNlIGZvciBOZXRCU0QKKworMjAxMS0wMS0xOCAyMjozNiAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOgorCisgICB0eXBvCisKKzIwMTEtMDEtMTggMjI6MzUgIG5iYQorCisgICAqIGFjY29uZmlnLmg6CisKKyAgIGRlZmluZSBkcmFnb25mbHlpZAorCisyMDExLTAxLTE0IDEzOjI0ICBqc2FmcmFuZWsKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2RhdGFfYWNjZXNzLmM6CisKKyAgIEFkZCBJUHY2IHN1cHBvcnQgZm9yIGNyZWF0aW5nIHJvd3MgaW4gaXBBZGRyZXNzdGFibGUuCisgICAKKyAgIFVzaW5nIFNOTVAgU0VULCBpdCBpcyBub3cgcG9zc2libGUgdG8gY3JlYXRlIGFuZCBkZXN0cm95IElQdjYKKyAgIGFkZHJlc3NlcyBvbiBhbiBpbnRlcmZhY2UuCisKKzIwMTEtMDEtMTQgMTI6MjggIGpzYWZyYW5laworCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogZnJvbSBSb2JlcnQgU3Rvcnk6IGZpeGVkIGFkZGluZyBuZXcgYWRkcmVzc2VzIHRvCisgICBpcEFkZHJlc3NUYWJsZQorICAgCisgICBMb25nIHRpbWUgYWdvLCB0aGVyZSB3YXMgYSBidWdyZXBvcnRbMV0gcmVnYXJkaW5nIGlwQWRkcmVzc1RhYmxlCisgICBvbgorICAgbmV0LXNubXAtY29kZXJzIGxpc3QgYW5kIHJzdG9yeSdzIGV4cGVyaW1lbnRhbCBwYXRjaCB3aXRob3V0IGFueQorICAgZmVlZGJhY2suCisgICBOb3cgSSd2ZSBnb3QgZmV3IGNvbXBsYWludHMgdGhhdCBTTk1QIFNFVCBvbiBpcEFkZHJlc3NUYWJsZQorICAgcHJvZHVjZXMgdGhlCisgICBzYW1lIGVycm9ycyBhbmQgZ3Vlc3Mgd2hhdCwgdGhlIHBhdGNoIGZpeGVzIHRoZW0uCisgICAKKyAgIFsxXToKKyAgIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvbWFpbGFyY2hpdmUvZm9ydW0ucGhwP3RocmVhZF9uYW1lPTIwMDYwOTIwMTM0OTM1LjM1YjM2ZWQ2JTQwZGV2LmZ1dHoub3JnJmZvcnVtX25hbWU9bmV0LXNubXAtY29kZXJzCisKKzIwMTEtMDEtMTQgMDY6MjUgIHJzdG9yeQorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jOgorCisgICByZW1vdmUgY29tcGxldGVseSB1c2VsZXNzIGFuZCBub25zZW5zaWNhbCBjb2RlCisKKzIwMTEtMDEtMTMgMTc6MjQgIHJzdG9yeQorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jOgorCisgICBhbGxvY2F0ZSBzcGFjZSBmb3IgYXJyYXkgTlVMTCB0ZXJtaW5hdGlvbgorCisyMDExLTAxLTEzIDE1OjU2ICBkdHMxMgorCisgICAqIGRpc3QvbWFrZXJlbGVhc2UueG1sOgorCisgICBFbnN1cmUgcmVsZWFzZXMgYXJlIGluc3RhbGxlZCB0byB0aGUgY29ycmVjdCBwYXRoIHdpdGhpbiB0aGUKKyAgIC90YWdzIFNWTiB0cmVlCisKKzIwMTEtMDEtMTMgMTU6MTUgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX25ldGJzZC5jOgorCisgICBSZW1vdmUgQysrIGNvbW1lbnRzCisKKzIwMTEtMDEtMTMgMTM6MTcgIGR0czEyCisKKyAgICogYWdlbnQvYXV0b19ubGlzdC5jOgorCisgICBGaXggYnJva2VuIHBhdGNoCisKKzIwMTEtMDEtMTMgMTI6MTQgIGR0czEyCisKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczE6CisKKyAgIENvbmZpZ3VyZSBmaXhlcyBmb3IgRHJhZ29uRmx5IHN1cHBvcnQKKworMjAxMS0wMS0xMyAxMjowNCAgZHRzMTIKKworICAgKiAgYWdlbnQvYXV0b19ubGlzdC5jLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYywgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZHJhZ29uZmx5Lmg6CisKKyAgIENvZGUgZml4ZXMgZm9yIERyYWdvbkZseSBzdXBwb3J0CisKKzIwMTEtMDEtMTMgMTE6MzMgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9uZXRic2QuYzoKKworICAgRml4IHR5cG8KKworMjAxMS0wMS0xMiAyMToyMyAgcnN0b3J5CisKKyAgICogYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jOgorCisgICBtZXJnZSBkdXBsaWNhdGVkIHNodXRkb3duIGZ1bmN0aW9ucworCisyMDExLTAxLTEyIDIwOjExICBidmFzc2NoZQorCisgICAqICBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmg6CisKKyAgIFJlaW1wbGVtZW50IG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IyKCkgYnkgYWRkaW5nIHRoZSBmbGFnCisgICBORVRTTk1QX0lURVJBVE9SX09XTlNfSUlORk8gZm9yCisgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8uIFJlbW92ZQorICAgbmV0c25tcF9nZXRfdGFibGVfaXRlcmF0b3JfaGFuZGxlcjIoKSBiZWNhdXNlIGl0IGlzIG5vdworICAgc3VwZXJmbHVvdXMuCisKKzIwMTEtMDEtMTIgMTk6MjIgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvc25tcF92YXJzLmM6CisKKyAgIEF2b2lkIHRoYXQgdGhlIGNvbXBpbGVyIGNvbXBsYWlucyBhYm91dCBhIG1pc3NpbmcgZGVjbGFyYXRpb24gZm9yCisgICBuZXRzbm1wX2NlcnRzX2FnZW50X2luaXQoKS4KKworMjAxMS0wMS0xMiAxOToyMCAgYnZhc3NjaGUKKworICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIUGFyYW1ldGVycy91c21ESFBhcmFtZXRlcnMuYzoKKworICAgR2V0IHJpZCBvZiBhIGNvbXBpbGVyIHdhcm5pbmcgaW4KKyAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIUGFyYW1ldGVycy91c21ESFBhcmFtZXRlcnMuYy4KKworMjAxMS0wMS0xMiAxOTowNCAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYzoKKworICAgRml4ZWQgYSBjb21waWxlciB3YXJuaW5nIChmb3JtYXQgc3BlY2lmaWNhdGlvbiBtaXNtYXRjaCkgdGhhdCB3YXMKKyAgIGludHJvZHVjZWQKKyAgIGluIHIxOTgwOCAoInNubXBkOiBQQVRDSEVTOiAyOTc1MjU0OiBBdm9pZCBjYWxsYmFjayByZS11c2Ugb2YKKyAgIGNsb3NlZCBzZXNzaW9ucyIpLgorCisyMDExLTAxLTEyIDE1OjAzICByc3RvcnkKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jOgorCisgICBDSEFOR0VTOiBzbm1wOiBwYXRjaDogMzA5NjcyNTogc3lzT1JUYWJsZSByZWdpc3RhdGlvbiBmb3IKKyAgIG5vdGlmaWNhdGlvbiBsb2cgbWliCisgICAKKyAgIG9yaWdpbmFsIHBhdGNoIGZpeGVkIHNldmVyYWwgaXNzdWVzLCBvdGhlciBwYXJ0cyBhcHBsaWVkIGVhcmxpZXIKKworMjAxMS0wMS0xMSAxNzoyNyAgcnN0b3J5CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0Lmg6CisKKyAgIGRvIG5vdCBpbmNsdWRlIGlwdjYgc3RydWN0IGlmIGlwdjYgaXMgbm90IGVuYWJsZWQKKworMjAxMS0wMS0xMSAxNjowNCAgZHRzMTIKKworICAgKiBvdi9VQ0QtZmllbGRzLCBvdi9vaWRfdG9fc3ltLmluLCBvdi9vaWRfdG9fdHlwZS5pbjoKKworICAgUmVjb2duaXNlIEFnZW50IE9JRCBmb3IgRHJhZ29uRmx5IHN5c3RlbXMgKGFuZCBnZW5lcmFsIHRpZHlpbmcKKyAgIHVwKQorICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCisgICAKKyAgIFFuOiBTaG91bGQgdGhlc2UgYmUgdXBkYXRlZCB0byByZWZlciB0byBOZXQtU05NUCAocmF0aGVyIHRoYW4KKyAgIFVDRCk/CisKKzIwMTEtMDEtMTEgMTY6MDEgIGR0czEyCisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIG1pYnMvTkVULVNOTVAtVEMudHh0LCAgIAorICAgICAgbWlicy9VQ0QtU05NUC1NSUIudHh0LCBzZWRzY3JpcHQuaW46CisKKyAgIERlZmluZSBBZ2VudCBPSUQgZm9yIERyYWdvbkZseSBzeXN0ZW1zCisgICAoYW5kIGdlbmVyYWwgdGlkeWluZyB1cCkKKyAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQorCisyMDExLTAxLTExIDE1OjI3ICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3VkcFRhYmxlLmM6CisKKyAgIE5ldEJTRCBEcmFnb25GbHkgc3VwcG9ydCBmb3IgVURQICYgVENQIHRhYmxlcworICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMTEgMTQ6NDEgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9raW5mby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9raW5mby5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9lcnJvcm1pYi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIuYzoKKworICAgQ0hBTkdFUzogTmV0QlNEOiBEcmFnb25GbHkgc3VwcG9ydAorICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMTEgMTQ6MzYgIGR0czEyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnM6CisKKyAgIE5ldEJTRC9EcmFnb25GbHkgJ3N0cnVjdCBpZm5ldCcgcmVxdWlyZXMgS0VSTkVMLCBidXQgbm90IF9LRVJORUwKKyAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQorICAgKEkgaG9wZSBJJ3ZlIGdvdCB0aGlzIG9uZSByaWdodCEpCisKKzIwMTEtMDEtMTEgMTM6MzQgIGpzYWZyYW5laworCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBmcm9tIEJpbGwgRmVubmVyOiBmaXggc2VuZGluZyBvZiBVRFAgcmVzcG9uc2VzCisgICBmcm9tIG11bHRpaG9tZWQgYWdlbnRzLgorICAgCisgICBUcnkgdG8gc2VuZCB0aGUgcmVzcG9uc2UgYXMgaXQgd2FzIGJlZm9yZSBOZXQtU05NUCA1LjYgKGFzc3VtaW5nCisgICB0aGUgYXBwcm9wcmlhdGUgcmVxdWVzdCB3YXMgdW5pY2FzdCkgYW5kIG9ubHkgaWYgaXQgZmFpbHMgdHJ5IHRvCisgICBzZXQgaWZfaW5kZXggKHRoZSByZXF1ZXN0IG11c3QgYmUgYnJvYWRjYXN0KS4KKworMjAxMS0wMS0xMSAxMzoyMiAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmM6CisKKyAgIFJlYWxseSBoYW5kbGUgc3lzdGVtcyB3aXRoICdzdHJ1Y3QgdGltZXNwZWMgaWZuZXQuaWZfbGFzdGNoYW5nZScKKyAgIChtaXNzaW5nIGVsZW1lbnQgZnJvbSBTVk4gcmV2aXNpb24gMTk4NDEpCisKKzIwMTEtMDEtMTEgMTI6MjQgIGR0czEyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVyczoKKworICAgQWRkaXRpb25hbCBoZWFkZXJzIHdoZW4gdGVzdGluZyBmb3IgSVB2NiBoZWFkZXJzCisgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KKworMjAxMS0wMS0xMSAxMjoxNCAgZHRzMTIKKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYzoKKworICAgTWlzc2luZyB0eXBlIHVuZGVyIGRhcndpbgorICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMTEgMTI6MTAgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmM6CisKKyAgIE5ldEJTRCBzdXBwb3J0IGZvciBEaXNrIEkvTyBzdGF0cworICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMTEgMTI6MDEgIGR0czEyCisKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX3N0cnVjdF9tZW1iZXJzLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgSGFuZGxlIHN5c3RlbXMgd2l0aCAnc3RydWN0IHRpbWVzcGVjIGlmbmV0LmlmX2xhc3RjaGFuZ2UnIChyYXRoZXIKKyAgIHRoYW4gc3RydWN0IHRpbWV2YWwpCisgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KKworMjAxMS0wMS0xMSAxMToyNyAgZHRzMTIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5oLCBhZ2VudC9taWJncm91cC9taWJJSS9pcC5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmgsIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5oOgorCisgICBQdWxsIGluIGtlcm5lbF9uZXRic2QgbW9kdWxlIHdoZW4gcmVxdWlyZWQKKyAgIFtCYXNlZCBvbiBmaXggZnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KKworMjAxMS0wMS0xMSAxMDozNiAgZHRzMTIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jLCBhZ2VudC9taWJncm91cC9taWJJSS9pcC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX25ldGJzZC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX25ldGJzZC5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvbWliSUlfY29tbW9uLmgsIGFnZW50L21pYmdyb3VwL21pYklJL3RjcC5jLCAgCisgICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmMsIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL25ldGJzZC5oOgorCisgICBDSEFOR0VTOiBOZXRCU0Q6IFJldHJpZXZlIE1JQi1JSSBuZXR3b3JrIHN0YXRpc3RpY3MgdmlhIHN5c2N0bAorICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMTEgMDc6MDQgIG5iYQorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYzoKKworICAgRml4IGZvciBwY2lfbG9va3VwX25hbWUgYW5kIFJIRUw0CisKKzIwMTEtMDEtMTAgMTY6NTYgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvcm91dGVfd3JpdGUuYzoKKworICAgQWRkIHN1cHBvcnQgZm9yIGRhcndpbgorICAgKFRoZSBwYXRjaCBmcm9tIHRoZSBOZXRCU0QgYXJjaGl2ZSBhcHBlYXJzIHRvIGJlIGVzc2VudGlhbGx5IHRoZQorICAgc2FtZSBhcyB0aGUgZXF1aXZhbGVudCBjb2RlIGZyb20gdGhlIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZSkKKworMjAxMS0wMS0xMCAxNjo1NCAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX25ldHdvcmsuYzoKKworICAgQWRkIHN1cHBvcnQgZm9yIGRhcndpbgorICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMTAgMTQ6NTUgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X25ldGJzZC5jOgorCisgICBDSEFOR0VTOiBOZXRCU0Q6IFVwZGF0ZSBtZW1vcnkgYW5kIENQVSBzdGF0aXN0aWNzIGhhbmRsaW5nCisgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KKworMjAxMS0wMS0xMCAxNDoyMiAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuYzoKKworICAgRml4IGRpdmlkZS1ieS16ZXJvIGVycm9yIGluIENQVSBwZXJmb3JtYW5jZSBzdGF0aXN0aWNzCisgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KKworMjAxMS0wMS0wOSAyMjo1NCAgZHRzMTIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9raW5mby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jLCBjb25maWd1cmUsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczI6CisKKyAgIENIQU5HRVM6IE9wZW5CU0Q6IFVwZGF0ZSBTV1J1biBjb2RlIHRvIHVzZSBrdm1fZ2V0cHJvYzIKKyAgIFtGcm9tIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZV0KKworMjAxMS0wMS0wOSAyMTozMCAgZHRzMTIKKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzOgorCisgICBDSEFOR0VTOiBidWlsZDogT3BlbkJTRDogRml4IG9yZGVyIG9mIGhlYWRlcnMgd2hlbiBjaGVja2luZworICAgPG5ldGluZXQvaW5fcGNiLmg+CisgICBbRnJvbSBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMDkgMTk6NDQgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9zeXNjdGwuYzoKKworICAgQW1lbmQgaG93IG11bHRpLUNQVSBzdGF0aXN0aWNzIGFyZSByZXRyZWl2ZWQgdXNpbmcgc3lzY3RsIG9uCisgICBPcGVuQlNEIHN5c3RlbXMKKyAgIChpZiB0aGlzIGJsb2NrIHdhcyBhY3RpdmUsIHdoaWNoIGl0IGlzbid0LCBidXQgdGhhdCdzIG5vdAorICAgaW1wb3J0YW50IHJpZ2h0IG5vdCkKKyAgIFtCYXNlZCBvbiBPcGVuQlNEIHBhdGNoIGFyY2hpdmUsIGFtZW5kZWQgKHByb2JhYmx5IHdyb25nbHkpIGJ5CisgICBEVFNdCisKKzIwMTEtMDEtMDkgMTg6MTMgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNraW8uYywgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5jLCAKKyAgICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2JzZGk0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5jOgorCisgICBzeXNjdGwgdGFrZXMgYSAnc2l6ZV90JyB2YXJpYWJsZSBmb3IgdGhlIHNpemUgcGFyYW1ldGVyCisKKzIwMTEtMDEtMDkgMTg6MTEgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbmxpc3QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X25ldGJzZC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9raW5mby5jOgorCisgICBzeXNjdGwgdGFrZXMgYSAnc2l6ZV90JyB2YXJpYWJsZSBmb3IgdGhlIHNpemUgcGFyYW1ldGVyCisKKzIwMTEtMDEtMDggMDg6MzAgIG1hZ2ZyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19zZWN1cml0eV9tb2R1bGVzOgorCisgICBDSEFOR0VTOiBidWlsZGluZzogRml4IC0td2l0aC1zZWN1cml0eS1tb2R1bGVzIGhhbmRsaW5nCisgICBBbGxvdyByZXBlYXRlZCBtb2R1bGVzICh0c20sdHNtKSBhcyB3ZWxsIGFzIGRlZmFpbHQgbW9kdWxlcyAodXNtKQorICAgTW92ZSB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgZmlsZXMgYWZ0ZXIgdGhlIGNoZWNraW5nCisKKzIwMTEtMDEtMDggMDA6NDcgIG1hZ2ZyCisKKyAgICogYWNjb25maWcuaCwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgVXBkYXRlIGFjY29uZmlnLmggd2l0aCBjaGFuZ2VzIGZyb20gcjE5ODE5LgorICAgUmVydW4gYXV0b2hlYWRlci4KKworMjAxMS0wMS0wNyAyMDo1NiAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV93cml0ZS5jOgorCisgICBDSEFOR0VTOiBPcGVuQlNEOiBTdXBwb3J0IHVwZGF0aW5nIHRoZSByb3V0aW5nIHRhYmxlCisgICBbRnJvbSBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMDcgMjA6MjkgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuYzoKKworICAgU2V0ICduZXh0JyBmaWVsZCBmb3IgdWRwIGVudHJ5IGxpbmtlZCBsaXN0IG9uIE9wZW5CU0Q0CisgICBbRnJvbSBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCisgICAKKyAgIFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIHNldCBpbiA8bmV0LXNubXAvc3lzdGVtL29wZW5ic2QuaD4KKworMjAxMS0wMS0wNyAyMDoxMiAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9tdGFfc2VuZG1haWwuYzoKKworICAgVXNlIGEgc3VpdGFibGUgY29uc3RhbnQgZm9yIENXRCBidWZmZXIgc2l6ZQorICAgW0Jhc2VkIG9uIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZV0KKworMjAxMS0wMS0wNyAyMDowNyAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmM6CisKKyAgIE1vdmUgZ2xvYmFsIHZhcmlhYmxlIGludG8gdGhlIG1ldGhvZCB3aGVyZSBpdCdzIHVzZWQuCisgICBbRnJvbSBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMDcgMTY6NDggIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zeXNjdGwuYzoKKworICAgSGFuZGxlIHN5c3RlbXMgd2l0aG91dCBJRk1fVE9LRU4KKyAgIFtGcm9tIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZV0KKworMjAxMS0wMS0wNyAxNDozOCAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2ZyZWVic2QuYzoKKworICAgVXBkYXRlIHJldHJpZXZhbCBvZiBjYWNoZSB1c2FnZSBzdGF0aXN0aWNzIG9uIEZyZWVCU0QKKyAgIFtGcm9tIEZyZWVCU0QgcGF0Y2ggYXJjaGl2ZV0KKworMjAxMS0wMS0wNyAxNDoyMCAgZHRzMTIKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBJbmNyZWFzZSBtYXhpbXVtIHNpemUgb2YgZXhlY3V0ZSBvdXRwdXQgY2FjaGUKKyAgIFtGcm9tIEZyZWVCU0QgcGF0Y2ggYXJjaGl2ZV0KKworMjAxMS0wMS0wNyAxNDowOSAgZHRzMTIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmM6CisKKyAgIFJlbW92ZSBkdXBsaWNhdGUgaW5jbHVkZSBkaXJlY3RpdmVzCisgICBbRnJvbSBGcmVlQlNEIHBhdGNoZXMgYXJjaGl2ZV0KKworMjAxMS0wMS0wNyAxMzo0NyAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9hdC5jOgorCisgICBIYW5kbGUgc3lzdGVtcyB3aGVyZSBSVEZfTExJTkZPIGlzIG5vdCBkZWZpbmVkCisgICBbRnJvbSBGcmVlQlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMDcgMTM6NDAgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jOgorCisgICBJbmNsdWRlIHpmcyBtb3VudCBwb2ludHMgZm9yIGRpc2sgcmVwb3J0cyB1bmRlciBGcmVlQlNECisgICBbRnJvbSBGcmVlQlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMDcgMTM6MzQgIGR0czEyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oOgorCisgICBQcm90ZWN0IGFnYWluc3QgbXVsdGlwbGUtaW5jbHVzaW9uCisgICBbRnJvbSBGcmVlQlNEIHBhdGNoZXMgYXJjaGl2ZV0KKworMjAxMS0wMS0wNyAxMzoyNCAgZHRzMTIKKworICAgKiAgc25tcGxpYi9jYWxsYmFjay5jLCBzbm1wbGliL2RlZmF1bHRfc3RvcmUuYywgc25tcGxpYi9rZXl0b29scy5jLCAgCisgICAgICAgc25tcGxpYi9sY2RfdGltZS5jLCBzbm1wbGliL21pYi5jLCBzbm1wbGliL3BhcnNlLmMsICAgCisgICAgICBzbm1wbGliL3NjYXBpLmMsIHNubXBsaWIvc25tcF9hdXRoLmMsIHNubXBsaWIvc25tcF9kZWJ1Zy5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wX2xvZ2dpbmcuYywgc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wdXNtLmMsIHNubXBsaWIvdG9vbHMuYzoKKworICAgSW5jbHVkZSA8dW5pc3RkLmg+CisgICBbRnJvbSBCU0QgcGF0Y2hlcyBhcmNoaXZlXQorCisyMDExLTAxLTA3IDEzOjIxICBkdHMxMgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzoKKworICAgQXZvaWQgY2FsbGJhY2sgcmUtdXNlIG9mIGNsb3NlZCBzZXNzaW9ucy4KKyAgIChQYXJ0IG9mIHBhdGNoICMyOTc1MjU0IC0gc2VlIFNWTiByZXZpc2lvbiAxOTgwOCkKKworMjAxMS0wMS0wNyAxMjo1NSAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2lvY3RsLmM6CisKKyAgIEZyZWVCU0QgdXNlcyBhIHNsaWdodGx5IGRpZmZlcmVudCBuYW1pbmcgc2NoZW1lIGZvciBzdHJ1Y3QgaWZyZXEKKyAgIFtGcm9tIEZyZWVCU0QgcGF0Y2hlcyBhcmNoaXZlXQorCisyMDExLTAxLTA3IDEyOjIyICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmM6CisKKyAgIEVuc3VyZSBUQ1AgdGFibGUgaW5mb3JtYXRpb24gaXMgbG9hZGVkIGJlZm9yZSBjb3VudGluZworICAgY29ubmVjdGlvbnMKKyAgIFtGcm9tIEZyZWVCU0QgcGF0Y2ggYXJjaGl2ZV0KKworMjAxMS0wMS0wNiAxOTozNSAgaGFyZGFrZXIKKworICAgKiBwZXJsL2FnZW50L2FnZW50LnBtOgorCisgICBGaXggZG9jdW1lbnRhdGlvbiBidWcgcG9pbnRlZCBvdXQgaW4gY3BhbiBidWcgIzUyNjE4CisKKzIwMTEtMDEtMDYgMTQ6MTEgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAyOTc1MjU0OiBBdm9pZCBjYWxsYmFjayByZS11c2Ugb2YgY2xvc2VkCisgICBzZXNzaW9ucworICAgCisgICBRbjogU2hvdWxkIHRoaXMgYWxzbyBiZSBhcHBsaWVkIHdoZW4gbWFpbiBzZXNzaW9uIGlzIE5VTEw/CisKKzIwMTEtMDEtMDYgMTM6MjEgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmM6CisKKyAgIEZpeCBtaXNsZWFkaW5nIGluZGVudGF0aW9uCisgICAKKyAgIFFuOiBTaG91bGQgdGhpcyBjYWxsICdzdWJhZ2VudF9zdGFydHVwJyByYXRoZXIgdGhhbgorICAgJ2FnZW50eF9yZW9wZW5fc2Vzc2lvbic/CisgICBRbjogV2h5IGRvZXNuJ3QgdGhpcyBhdHRlbXB0IHRvIHJlLW9wZW4gdGhlIHNlc3Npb24gaWYgaXQgd2FzCisgICBvcmlnaW5hbGx5IE5VTEw/CisKKzIwMTEtMDEtMDYgMTI6NDYgIGR0czEyCisKKyAgICogYWdlbnQvc25tcF9hZ2VudC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMjk0MTgxMTogSGFuZGxlIHN1Y2Nlc3NmdWwgcmVxdWVzdHMgd2l0aAorICAgcmVxSUQgMAorCisyMDExLTAxLTA2IDA5OjM4ICBidmFzc2NoZQorCisgICAqICBhZ2VudC9taWJncm91cC9hZ2VudC9uc01vZHVsZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUuYzoKKworICAgU3BlbGxpbmcgZml4OiBJbml0aWFsemllcyAtPiBJbml0aWFsaXplcy4KKworMjAxMS0wMS0wNiAwOTozNSAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jLCBhZ2VudC9taWJncm91cC9hZ2VudC9uc0NhY2hlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc0RlYnVnLmMsIGFnZW50L21pYmdyb3VwL2FnZW50L25zTG9nZ2luZy5jLCAKKyAgICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNNb2R1bGVUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwQ2lkclJvdXRlVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3VkcFRhYmxlLmMsIAorICAgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbnRleHQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oOgorCisgICBDSEFOR0VTOiBhZ2VudDogQWRkZWQgbmV0c25tcF9nZXRfdGFibGVfaXRlcmF0b3IyKCkuCisgICBDSEFOR0VTOiBhZ2VudDogQWRkZWQgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcjIoKS4KKyAgIENIQU5HRVM6IGFnZW50OiBBZGRlZCBuZXRzbm1wX2hhbmRsZXJfb3duc19pdGVyYXRvcl9pbmZvKCkuCisgICBDSEFOR0VTOiBhZ2VudDogRml4ZWQgbGVhay1hdC1leGl0IHRyaWdnZXJlZCBieSBzbm1wTm90aWZ5VGFibGUuCisgICBDSEFOR0VTOiBhZ2VudDogRml4ZWQgbGVhay1hdC1leGl0IHRyaWdnZXJlZCBieQorICAgc25tcFRhcmdldEFkZHJUYWJsZS4KKyAgIEFsc28sIHJlc3RvcmVkIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IG9mCisgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yKCkuCisKKzIwMTEtMDEtMDYgMDQ6NDUgIHJzdG9yeQorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oOgorCisgICBpbmNsdWRlIHN5cy9zb2NrZXQuaCBpZiBhdmFpbGFibGUKKworMjAxMS0wMS0wNSAxNDowNiAgZHRzMTIKKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IEJVR1M6IDMxMzQzMjM6IEZpeCBjcmFzaCB3aGVuIGNvbXBhcmluZyBpbnZhbGlkCisgICBPSURzCisKKzIwMTEtMDEtMDUgMTQ6MDQgIGR0czEyCisKKyAgICogYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYzoKKworICAgQ0hBTkdFUzogc25tcHRyYXBkOiBCVUdTOiAzMTUxMjU0OiBGaXggY3Jhc2ggd2l0aCBpbnZhbGlkCisgICB0cmFwaGFuZGxlIGRpcmVjdGl2ZQorCisyMDExLTAxLTA1IDA5OjU1ICBkdHMxMgorCisgICAqIGFwcHMvc25tcHdhbGsuYzoKKworICAgRXhwYW5kIHRhYiBjaGFyYWN0ZXJzCisKKzIwMTEtMDEtMDQgMjI6MDYgIG1hZ2ZyCisKKyAgICogc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBDaGVjayB0aGF0IHRoZSBhcmd1bWVudCB0bworICAgbmV0c25tcF90cmFuc3BvcnRfY29weSBpcyBub24tTlVMTAorCisyMDExLTAxLTA0IDE4OjI0ICBoYXJkYWtlcgorCisgICAqIENPUFlJTkc6CisKKyAgIENvcHlyaWdodCB1cGRhdGUgZm9yIDIwMTEKKworMjAxMS0wMS0wNCAxMjowMSAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYzoKKworICAgRml4IGNvbXBpbGVyIHdhcm5pbmdzIHRyaWdnZXJlZCBieSB0aGUgV2luMzIgTUlCLUlJCisgICBpbXBsZW1lbnRhdGlvbi4KKworMjAxMS0wMS0wMyAxOTo0OCAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFycy5jOgorCisgICBSZW1vdmVkIHR3byB1bnVzZWQgdmFyaWFibGVzLgorCisyMDExLTAxLTAzIDE5OjQ3ICBidmFzc2NoZQorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYzoKKworICAgRml4ZWQgYSByZWNlbnRseSBpbnRyb2R1Y2VkIG1pc21hdGNoIGJldHdlZW4gZm9ybWF0IHNwZWNpZmljYXRpb24KKyAgIGFuZCBhcmd1bWVudCBsaXN0LgorCisyMDExLTAxLTAzIDE5OjQ3ICBidmFzc2NoZQorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5jOgorCisgICBHZXQgcmlkIG9mIHJlY2VudGx5IGludHJvZHVjZWQgY29tcGlsZXIgd2FybmluZ3MgYnkgYWRkaW5nIHR3bworICAgI2luY2x1ZGUgZGlyZWN0aXZlcyBhbmQgY29tbWVudGluZyBvdXQgdHdvIHVudXNlZCBmdW5jdGlvbnMuCisKKzIwMTEtMDEtMDIgMDU6NDggIHJzdG9yeQorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmM6CisKKyAgIGRvbid0IGZyZWUgY2FsbGVycyBwdHIKKworMjAxMS0wMS0wMiAwNTo0OCAgcnN0b3J5CisKKyAgICogIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmMsIGFnZW50L2hlbHBlcnMvdGFibGUuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5jLCBhZ2VudC9zbm1wX2FnZW50LmMsICAgCisgICAgICBhcHBzL3NubXBuZXRzdGF0L2lmLmMsIHNubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jLCAgIAorICAgICAgc25tcGxpYi9rZXl0b29scy5jLCBzbm1wbGliL21pYi5jLCBzbm1wbGliL3NubXBfYXBpLmMsICAgCisgICAgICBzbm1wbGliL3NubXB2My5jLCBzbm1wbGliL3Rvb2xzLmMsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmMsICAgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9zbm1wdjMvVDA0MGtleW1hbmFnZXRlc3RfY2FwcC5jOgorCisgICBjbGVhbiB1cCBTTk1QX0ZSRUUgdXNhZ2UKKworMjAxMS0wMS0wMiAwNTo0NyAgcnN0b3J5CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5jOgorCisgICBmaXggY3V0LW4tcGFzdGUgZXJyb3IgaW4gZGVidWcgdG9rZW4KKworMjAxMS0wMS0wMiAwNTo0NyAgcnN0b3J5CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmg6CisKKyAgIGZpeCBmdW5jdGlvbiBuYW1lIGluIHByb3RvdHlwZQorCisyMDExLTAxLTAyIDA1OjQ2ICByc3RvcnkKKworICAgKiBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYzoKKworICAgZml4IGNvbXBpbGVyIHdhcm5pbmcKKworMjAxMS0wMS0wMiAwNTo0NiAgcnN0b3J5CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oLCBzbm1wbGliL2NvbnRhaW5lci5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiByZW1vdmUgaW5saW5lIHZlcnNpb25zIG9mIGNvbnRhaW5lciBmdW5jcworCisyMDExLTAxLTAyIDA1OjQ2ICByc3RvcnkKKworICAgKiBzbm1wbGliL2NlcnRfdXRpbC5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBkb250IHJldHVybiBlbXB0eSBhcnJheQorCisyMDExLTAxLTAyIDA1OjQ2ICByc3RvcnkKKworICAgKiBtYW4vc25tcGQuY29uZi41LmRlZiwgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmM6CisKKyAgIGZpeCB0eXBvcy9ncmFtbWFyIGluIG1hbiBwYWdlcy9jb21tZW50cyAobm8gY29kZSBjaGFuZ2VzKQorCisyMDExLTAxLTAyIDA1OjQ1ICByc3RvcnkKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5jLCBweXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmM6CisKKyAgIE5FV1M6IHNubXBsaWI6IGFkZCBuZXcgdHJhbnNwb3J0IGNvbmZpZyB0b2tlbnMKKyAgIGxvY2FsQ2VydC9wZWVyQ2VydCwKKyAgIGRlcHJlY2F0ZSBvdXJfaWRlbnRpdHksIHRoZWlyX2lkZW50aXR5CisKKzIwMTEtMDEtMDIgMDU6NDUgIHJzdG9yeQorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oLCBtYW4vc25tcGNtZC4xLmRlZiwgICAKKyAgICAgIG1hbi9zbm1wZC5jb25mLjUuZGVmLCBzbm1wbGliL2NlcnRfdXRpbC5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmM6CisKKyAgIE5FV1M6IHNubXBsaWI6IGludHJvZHVjZSBuZXcgbG9jYWxDZXJ0L3BlZXJDZXJ0LCBkZXByZWNhdGUKKyAgIHNlcnZlckNlcnQsIGNsaWVudENlcnQsIGRlZlg1MDlTZXJ2ZXJQdWIsIGRlZlg1MDlDbGllbnRQdWIKKworMjAxMS0wMS0wMiAwNTo0NCAgcnN0b3J5CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVExTQmFzZURvbWFpbi5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgsICAgCisgICAgICBzbm1wbGliL3NubXBfdHJhbnNwb3J0LmMsIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jLCAKKyAgICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY0QmFzZURvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUQ1BJUHY2RG9tYWluLmMsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU1RDUERvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmMsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYzoKKworICAgTkVXUzogc25tcGxpYjogYWRkIElQdjYgc3VwcG9ydCB0byBEVExTVURQIHRyYW5zcG9ydAorICAgQ0hBTkdFUzogc25tcGxpYjogdXNlIG5ldyBuZXRzbm1wX3NvY2thZGRyX3N0b3JhZ2UgaW4KKyAgIG5ldHNubXBfYWRkcl9wYWlyCisgICBDSEFOR0VTOiBzbm1wbGliOiBhZGQgYmFzZV90cmFuc3BvcnQgcHRyIGZvciB0dW5uZWxlZCB0cmFuc3BvcnRzCisKKzIwMTEtMDEtMDIgMDU6NDIgIHJzdG9yeQorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IHNraXAgbm9uLUFGX0lORVQgaW50ZXJmYWNlcyB3aGVuIGxvYWRpbmcgaXB2NAorICAgYWRkcnMKKwogMjAxMC0xMi0yOSAwMTozNyAgaGFyZGFrZXIKIAogICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYzoKQEAgLTkzOTcsMzcgKzMxMjE4LDYgQEAKIAogICAgTkVXUzogc25tcGQ6IFBhdGNoIGZyb20gTmllbHMgdG8gZml4IFZBQ00gcGVyc2lzdGFudCBzdG9yYWdlLgogCi0yMDEwLTEyLTIxIDE2OjMzICBoYXJkYWtlcgotCi0gICAqIENIQU5HRVM6Ci0KLSAgIGZpeGVkIHRoZSBORVdTIGZpbGUgdG8gbWVudGlvbiA1LjYuMSBpbnN0ZWFkIG9mIDUuNwotCi0yMDEwLTEyLTIxIDE2OjMyICBoYXJkYWtlcgotCi0gICAqIE5FV1M6Ci0KLSAgIGZpeGVkIHRoZSBORVdTIGZpbGUgdG8gbWVudGlvbiA1LjYuMSBpbnN0ZWFkIG9mIDUuNwotCi0yMDEwLTEyLTIxIDE1OjUwICBoYXJkYWtlcgotCi0gICAqIENIQU5HRVM6Ci0KLSAgIHZlcnNpb24gdXBkYXRlCi0KLTIwMTAtMTItMjEgMTU6MDggIGhhcmRha2VyCi0KLSAgICogY29uZmlndXJlOgotCi0gICBmaXhlZCBhdXRvY29uZiB2ZXJzaW9uCi0KLTIwMTAtMTItMjEgMTU6MDcgIGhhcmRha2VyCi0KLSAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgICAKLSAgICAgIGRpc3QvbmV0LXNubXAuc3BlYzoKLQotICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCi0KIDIwMTAtMTItMjEgMTE6MjkgIGR0czEyCiAKICAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6CkBAIC05NDYxLDEyICszMTI1MSw2IEBACiAgICBDSEFOR0VTOiBzbm1wZDogUGF0Y2ggZnJvbSBDbGF1cyBLbGVpbiB0byBmaXggZW5naW5laWQgZ2VuZXJhdGlvbgogICAgb24gb3V0Z29pbmcgdjMgdHJhcHMgZnJvbSB0aGUgYWdlbnQKIAotMjAxMC0xMi0xMCAwNToxOSAgaGFyZGFrZXIKLQotICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDoKLQotICAgZml4IG1ha2UgdGVzdCBvcHRpb25zCi0KIDIwMTAtMTItMDggMTM6MTcgIGpzYWZyYW5lawogCiAgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYzoKQEAgLTk0ODAsMjUgKzMxMjY0LDYgQEAKICAgIHRoZSBsb2FkaW5nCiAgICBvZiB0aGUgbGlzdCBhIGJpdC4KIAotMjAxMC0xMi0wOCAwNjoxNyAgaGFyZGFrZXIKLQotICAgKiBDSEFOR0VTLCBDaGFuZ2VMb2c6Ci0KLSAgIHVwZGF0ZSBmb3IgNS42LjEucHJlMgotCi0yMDEwLTEyLTA4IDA2OjAxICBoYXJkYWtlcgotCi0gICAqIGNvbmZpZ3VyZToKLQotICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCi0KLTIwMTAtMTItMDYgMjM6MjcgIGhhcmRha2VyCi0KLSAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgICAKLSAgICAgIGRpc3QvbmV0LXNubXAuc3BlYzoKLQotICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCi0KIDIwMTAtMTItMDYgMjM6MjMgIGhhcmRha2VyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kYXRhX2FjY2Vzcy9kb3Qzc3RhdHNfbGludXguYzoKQEAgLTk1MjcsMTggKzMxMjkyLDE3IEBACiAgICBmaXggY29udGV4dEVuZ2luZUlEcyBmb3Igb3V0Z29pbmcgaW5mb3JtcyBmcm9tIHNubXBpbmZvcm0gdG8gYmUKICAgIHRoZSBsb2NhbCBlbmdpbmVJRAogCi0yMDEwLTEyLTAxIDE0OjMwICBoYXJkYWtlcgorMjAxMC0xMi0wMSAyMToxOCAgbmJhCiAKLSAgICogY29uZmlndXJlOgorICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmM6CiAKLSAgIGdlbmVyYXRlIHdpdGggdGhlIHByb3BlciBhdXRvY29uZgorICAgRml4IGNvbmZsaWN0aW5nIGRlY2xhcmF0aW9ucwogCi0yMDEwLTEyLTAxIDAxOjA2ICBoYXJkYWtlcgorMjAxMC0xMi0wMSAwMToyMyAgaGFyZGFrZXIKIAotICAgKiAgYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQsICAgCi0gICAgICBhcHBzL01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6CisgICAqIGFnZW50L3NubXBfdmFycy5jOgogCi0gICBtYWtlIGRlcGVuZAorICAgUGF0Y2ggZnJvbSBtYWdmciB0byBmaXggYnVpbGRpbmcgd2l0aG91dCBvcGVuc3NsCiAKIDIwMTAtMTItMDEgMDE6MDYgIGhhcmRha2VyCiAKQEAgLTk1NDYsMjMgKzMxMzEwLDEyIEBACiAKICAgIHVzZSBuZXRzbm1wX2Fzc2VydCBpbnN0ZWFkIG9mIGFzc2VydAogCi0yMDEwLTEyLTAxIDAwOjQ2ICBoYXJkYWtlcgorMjAxMC0xMS0zMCAyMzo0MyAgaGFyZGFrZXIKIAotICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAgIAotICAgICAgZGlzdC9uZXQtc25tcC5zcGVjLCBwZXJsL0FTTi9BU04ucG0sICAgCi0gICAgICBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLCBwZXJsL09JRC9PSUQucG0sIHBlcmwvU05NUC9TTk1QLnBtLCAKLSAgICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtLAotICAgICAgcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG0sICAgIHBlcmwvYWdlbnQvYWdlbnQucG0sCi0gICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwgICAKLSAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtOgorICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYzoKIAotICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCi0KLTIwMTAtMTItMDEgMDA6NDYgIGhhcmRha2VyCi0KLSAgICogTWFrZWZpbGUudG9wOgotCi0gICB2ZXJzaW9uIHVwZGF0ZQorICAgaW1wbGVtZW50IERUTFMgY29va2llcyBzZW1pLXByb3Blcmx5IChzdGF0ZSBpcyBzdGlsbCBzYXZlZCwgd2hpY2gKKyAgIHN0aWxsIG5lZWRzIHRvIGNoYW5nZSkKIAogMjAxMC0xMS0zMCAyMzoyNyAgaGFyZGFrZXIKIApAQCAtOTU4Nyw2ICszMTM0MCwxNCBAQAogICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAzMDUzNDM2OiBmcm9tOiB0YWtldm9zOiBmaXg6CiAgICB0Y3BMaXN0ZW5lclRhYmxlX2RhdGFfYWNjZXNzIGludmFsaWQgbWVtb3J5IGFjY2VzcwogCisyMDEwLTExLTMwIDIyOjE4ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMsIGNvbmZpZ3VyZSwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19zdHJ1Y3RfbWVtYmVycywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIHJldmVydGVkIDE5NzAxIChldGh0b29sKSBhcyBpdCBicm9rZSB0aGluZ3MKKwogMjAxMC0xMS0zMCAyMTowOCAgbmJhCiAKICAgICogYXBwcy9zbm1wdGxzLmMsIGFwcHMvc25tcHRyYXBkX3NxbC5jOgpAQCAtOTYwNSw2ICszMTM2NiwxMyBAQAogCiAgICBlcnJvciBjaGVjayB0aGUgcmlnaHQgcG9pbnRlciBhZnRlciBhdHRlbXB0aW5nIGFsbG9jYXRpb24KIAorMjAxMC0xMS0zMCAwNTo1OCAgaGFyZGFrZXIKKworICAgKiBhcHBzL3NubXB3YWxrLmM6CisKKyAgIE5FV1M6IGFwcHM6IFBBVENIIDMwNTQ4MTc6IGZyb20gbmlnaHRjb2Rpbmc6IEFkZHMgcGVyLXZhcmlhYmxlCisgICB0aW1lZCBvdXRwdXQgc3VwcG9ydCB0byBzbm1wd2FsayB1c2luZyAtQ1QKKwogMjAxMC0xMS0zMCAwNTo1NiAgaGFyZGFrZXIKIAogICAgKiAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jLCBjb25maWd1cmUsICAgCkBAIC05NjE0LDYgKzMxMzgyLDE1IEBACiAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDMwNTcwOTA6IGZyb20gc2hlbW1pbmdlcjogbWFrZSBldGh0b29sCiAgICBzdXBwb3J0IG9uIGxpbnV4IHVzZSB0aGUgaGlnaCBzcGVlZCBzdHJ1Y3QgaW5mbyBmb3IgMTAwRysuCiAKKzIwMTAtMTEtMzAgMDU6NDcgIGhhcmRha2VyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYywgY29uZmlndXJlLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgTkVXUzogc25tcGQ6IFBBVENIIDMwNTcwOTM6IGZyb20gc2hlbW1pbmdlcjogYWxsb3cgbGludXggdG8gdXNlCisgICBsaWJwY2kgZm9yIGNyZWF0aW5nIHVzZWZ1bCBpZkRlc2NyIHN0cmluZ3MKKwogMjAxMC0xMS0zMCAwNDo1OCAgaGFyZGFrZXIKIAogICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfbGludXguYzoKQEAgLTk2NDQsMTggKzMxNDIxLDYgQEAKICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IGVuZm9yY2UgbWF4IGxlbmd0aCBvbiBUTFMgc2VjTmFtZSBtYXBzCiAgICBDSEFOR0VTOiBzbm1wZDogYWRkIHByaW9yaXR5IHRvIHNlY25hbWUgZGVidWdnaW5nCiAKLTIwMTAtMTEtMzAgMDQ6MDQgIHJzdG9yeQotCi0gICAqICBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmMsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFycy5jOgotCi0gICBDSEFOR0VTOiBhZ2VudDogZG9uJ3Qgc2Vjb25kLWd1ZXNzIGNhY2hlIGhhbmRsZXIKLSAgIAotICAgKHdhdmVzIGhhbmQpIHRoaXMgaXMgbm90IHRoZSBmdW5jdGlvbiB5b3UgYXJlIGxvb2tpbmcgZm9yLgotICAgCi0gICBuZXRzbm1wX2NhY2hlX2lzX3ZhbGlkKCkgaXMgbm90IG1lYW50IGZvciBtaWIgbW9kdWxlcwotCiAyMDEwLTExLTI5IDIyOjIwICByc3RvcnkKIAogICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4uYzoKQEAgLTk2NjMsNyArMzE0MjgsNyBAQAogICAgQ0hBTkdFUzogc25tcGQ6IGFkZCBkZWJ1ZyBmb3Igc3NsIGNpcGhlcnMsIGNsYXJpZnkgZmluZ2VycHJpbnQKICAgIG1hdGNoIGRlYnVnCiAKLTIwMTAtMTEtMjkgMjI6MTQgIHJzdG9yeQorMjAxMC0xMS0yOSAyMjoxOCAgcnN0b3J5CiAKICAgICogYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmM6CiAKQEAgLTk2ODAsMjEgKzMxNDQ1LDI0IEBACiAgICBjaGFuZ2VzIHRvIGEKICAgIHBhdGNoIGFuZCB0aGVuIGNvbW1pdCBpdCB3aXRob3V0IHRlc3RpbmcgOi0oCiAKLTIwMTAtMTEtMTggMTA6NTUgIGJ2YXNzY2hlCisyMDEwLTExLTE4IDExOjA0ICBidmFzc2NoZQogCi0gICAqICAuLCBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRMU0Jhc2VEb21haW4uaCwgICAKLSAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5jOgotCi0gICBDb21waWxlciB3YXJuaW5nIGZpeGVzIGZvciB0aGUgVExTIHRyYW5zcG9ydCBjb2RlOiBiYWNrcG9ydGVkCi0gICByMTk1NDYgZnJvbSB0aGUgdHJ1bmsuCi0KLTIwMTAtMTEtMTggMTA6NTMgIGJ2YXNzY2hlCi0KLSAgICogCisgICAqICAuLCAgIAogICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZS5jOgogCi0gICBGaXhlZCB3aGF0IHdhcyBicm9rZW4gYnkgcjE5Njg1OiBkaXZpZGluZyB0aGUgcmV0dXJuIHZhbHVlIG9mCi0gICBzbm1wX2xvZygpIGRvZXMgbm90IG1ha2Ugc2Vuc2UuCisgICBBcHBsaWVkIHIxOTY4OCBvbiB0aGUgdHJ1bmsgdG9vIChmb2xsb3ctdXAgZm9yIHIxOTY4NSkuCisKKzIwMTAtMTEtMTggMDM6NDkgIHJzdG9yeQorCisgICAqICBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFycy5jOgorCisgICBDSEFOR0VTOiBhZ2VudDogZG9uJ3Qgc2Vjb25kLWd1ZXNzIGNhY2hlIGhhbmRsZXIKKyAgIAorICAgKHdhdmVzIGhhbmQpIHRoaXMgaXMgbm90IHRoZSBmdW5jdGlvbiB5b3UgYXJlIGxvb2tpbmcgZm9yLgorICAgCisgICBuZXRzbm1wX2NhY2hlX2lzX3ZhbGlkKCkgaXMgbm90IG1lYW50IGZvciBtaWIgbW9kdWxlcwogCiAyMDEwLTExLTE3IDE5OjU5ICBuYmEKIApAQCAtOTczMywyOCArMzE1MDEsNiBAQAogCiAgICBDSEFOR0VTOiBzbm1wZDogZml4IGRvdWJsZSBmcmVlIGluIFRMUyBlcnJvciBoYW5kbGluZwogCi0yMDEwLTExLTE2IDEyOjQzICBidmFzc2NoZQotCi0gICAqIHdpbjMyL01ha2VmaWxlLWFwcHMuaW46Ci0KLSAgIEZvbGxvdy11cCBmb3IgcjE5NDIyLgotCi0yMDEwLTExLTE2IDEyOjM4ICBidmFzc2NoZQotCi0gICAqIHdpbjMyL21pYl9tb2R1bGVfc2h1dGRvd24uaDoKLQotICAgQ0hBTkdFUzogV2luMzI6IHNodXRkb3duX3NubXBOb3RpZnlGaWx0ZXJUYWJsZSgpIGFuZAotICAgc2h1dGRvd25fd2luRXh0RExMKCkgYXJlIG5vdyBpbnZva2VkIHdoZW4gdGhlIE5ldC1TTk1QIHNlcnZpY2UgaXMKLSAgIHN0b3BwZWQuCi0gICAoUGFydGlhbGx5IGJhY2twb3J0ZWQgcjE5NTE1IGZyb20gdGhlIHRydW5rLikKLQotMjAxMC0xMS0xNiAxMDo0MSAgYnZhc3NjaGUKLQotICAgKiAgdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfVEVTVENPTkYuc2gsICAgCi0gICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOgotCi0gICBCYWNrcG9ydGVkIHRlc3QgaW5mcmFzdHJ1Y3R1cmUgY2hhbmdlcyBmcm9tIHRoZSB0cnVuay4KLQogMjAxMC0xMS0xNiAxMDozOSAgYnZhc3NjaGUKIAogICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNjVhZ2VudGV4dGVuZF9zaW1wbGU6CkBAIC05NzcxLDM5ICszMTUxNyw2IEBACiAgICBzdWNoIGluZm9ybWF0aW9uIChOVURfTk9BUlApLCBlLmcuIHR1bm5lbHMuIFJlcG9ydGVkIGJ5IFN0ZXBoZW4KICAgIEhlbW1pbmdlci4gU2VlIGFsc28gcGF0Y2ggIzMxMDcwMDMuCiAKLTIwMTAtMTEtMTYgMDg6NDkgIGJ2YXNzY2hlCi0KLSAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zOgotCi0gICBNaW5HVzogQmFja3BvcnRlZCByMTk2NTIgZnJvbSB0aGUgdHJ1bmsuCi0KLTIwMTAtMTEtMTYgMDg6MDEgIGJ2YXNzY2hlCi0KLSAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucywgICAKLSAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19wcm9nczoKLQotICAgQ0hBTkdFUzogTWluR1c6IGNvbmZpZ3VyZTogRGV0ZWN0aW9uIG9mIHRoZSBmdW5jdGlvbnMKLSAgIGdhaV9zdHJlcnJvcigpLCBnZXRhZGRyaW5mbygpLCBnZXRob3N0bmFtZSgpIGFuZCBnZXRob3N0bmFtZSgpCi0gICBkb2VzIG5vdyBzdWNjZWVkLgotICAgKEJhY2twb3J0ZWQgcjE5NjQ2IGZyb20gdGhlIHRydW5rLikKLQotMjAxMC0xMS0xNiAwNzo1NSAgYnZhc3NjaGUKLQotICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYzoKLQotICAgQ0hBTkdFUzogYWdlbnQ6IGNvbTJzZWM2IGRpcmVjdGl2ZTogSWYgY29uZmlndXJlIGhhcyBub3QgZm91bmQKLSAgIGdldGFkZHJpbmZvKCksIG5vbi1udW1lcmljIElQdjYgYWRkcmVzc2VzIGRvIG5vdyB0cmlnZ2VyIGFuIGVycm9yCi0gICBtZXNzYWdlLgotICAgKEJhY2twb3J0ZWQgcjE5NjUwLikKLQotMjAxMC0xMS0xNiAwNzo1MSAgYnZhc3NjaGUKLQotICAgKiBpbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaCwgc25tcGxpYi9zbm1wX2RlYnVnLmM6Ci0KLSAgIENIQU5HRVM6IHNubXBsaWI6IENoYW5nZWQgdGhlIGFyZ3VtZW50IHR5cGUgb2YKLSAgIGRlYnVnX3JlZ2lzdGVyX3Rva2VucygpIGZyb20gY2hhciAqIGludG8gY29uc3QgY2hhciAqLgotICAgKEJhY2twb3J0ZWQgcjE5NjY1IGFuZCByMTk2NjYgZnJvbSB0aGUgdHJ1bmsuKQotCiAyMDEwLTExLTE1IDE0OjE1ICBidmFzc2NoZQogCiAgICAqIHNubXBsaWIvYXNuMS5jOgpAQCAtOTgxMywxOCArMzE1MjYsMzggQEAKICAgIGFzbl9idWlsZF9zaWduZWRfaW50NjQoKS4gTW9zdCBidXQgbm90IGFsbCBvZiB0aGVzZSBidWdzIHdlcmUKICAgIHNwZWNpZmljIHRvIDY0LWJpdCBzeXN0ZW1zLiBGaXhlcyBidWcgIzMwOTMxOTkuCiAKLTIwMTAtMTEtMTUgMTQ6MDkgIGJ2YXNzY2hlCisyMDEwLTExLTE1IDEzOjMyICBidmFzc2NoZQogCi0gICAqICB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDdpbmV0X3B0b25fY2xpYi5jLCAgIAotICAgICAgdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA4YXNuMV9jbGliLmM6CisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwOGFzbjFfY2xpYi5jOgogCi0gICBDb3BpZWQgdHdvIHVuaXQtdGVzdHMgZnJvbSB0aGUgdHJ1bmsuCisgICBBdm9pZCB0cmlnZ2VyaW5nIHRydW5jYXRpb24gd2FybmluZ3MuCiAKLTIwMTAtMTEtMTUgMTQ6MDkgIGJ2YXNzY2hlCisyMDEwLTExLTE1IDEzOjE2ICBidmFzc2NoZQogCi0gICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvY2xpYl9idWlsZDoKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA4YXNuMV9jbGliLmM6CiAKLSAgIE1lcmdlZCByZWNlbnQgY2xpYl9idWlsZCBjaGFuZ2VzIGZyb20gdGhlIHRydW5rLgorICAgUmVzdHJpY3RlZCBhbGwgY29uc3RhbnRzIHRvIDMyIGJpdHMuCisKKzIwMTAtMTEtMTUgMTI6MzUgIGJ2YXNzY2hlCisKKyAgICogc25tcGxpYi9zbm1wX2RlYnVnLmM6CisKKyAgIEZvbGxvdy11cCBmb3IgcjE5NjY1LgorCisyMDEwLTExLTE1IDEyOjMzICBidmFzc2NoZQorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oLCBzbm1wbGliL3NubXBfZGVidWcuYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogQ2hhbmdlZCB0aGUgYXJndW1lbnQgdHlwZSBvZgorICAgZGVidWdfcmVnaXN0ZXJfdG9rZW5zKCkgZnJvbSBjaGFyICogaW50byBjb25zdCBjaGFyICouCisKKzIwMTAtMTEtMTUgMTA6NTYgIGJ2YXNzY2hlCisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA4YXNuMV9jbGliLmM6CisKKyAgIEFkZGVkIHVuaXQgdGVzdCBmb3IgQVNOLjEgZW5jb2RpbmcgYW5kIGRlY29kaW5nIChvbmx5IDMyLWJpdCBhbmQKKyAgIDY0LWJpdAorICAgaW50ZWdlcnMgc28gZmFyKS4KIAogMjAxMC0xMS0xMSAyMjo0OCAgbmJhCiAKQEAgLTk4NDEsNiArMzE1NzQsMzAgQEAKICAgIENsZWFudXA6IFJlbW92ZWQgc3VwZXJmbHVvdXMgcmVmZXJlbmNlcyB0byB0aGUgUE9TSVggdGhyZWFkcwogICAgbGlicmFyeS4KIAorMjAxMC0xMS0xMSAwODoyMCAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmg6CisKKyAgIEZvbGxvdy11cCBmb3IgcjE5NjYwOiBVc2UgcGlkX3QgY29uc2lzdGVudGx5LgorCisyMDEwLTExLTEwIDE2OjM2ICBidmFzc2NoZQorCisgICAqICBhZ2VudC9taWJncm91cC9zdHJ1Y3QuaCwgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmMsICAKKyAgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMsIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvdHlwZXMuaDoKKworICAgQ0hBTkdFUzogYWdlbnQ6IEludHJvZHVjZWQgbmV0c25tcF9waWRfdC4KKyAgIENIQU5HRVM6IFdpbjMyOiBFbGltaW5hdGVkIGNhc3RzIGJldHdlZW4gaW50IGFuZCBIQU5ETEUgaW4KKyAgIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYyBhbmQKKyAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jLgorCisyMDEwLTExLTEwIDE1OjQ5ICBidmFzc2NoZQorCisgICAqICB3aW4zMi9saWJzbm1wL01ha2VmaWxlLmluLCB3aW4zMi9saWJzbm1wL2xpYnNubXAuZHNwLCAgIAorICAgICAgd2luMzIvbGlic25tcF9kbGwvTWFrZWZpbGUuaW4sIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXBfZGxsLmRzcDoKKworICAgRm9sbG93LXVwIGZvciByMTk2MDY6IGNtdV9jb21wYXQgcmVtb3ZhbC4KKwogMjAxMC0xMS0xMCAxMjozMSAgYnZhc3NjaGUKIAogICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19wcm9nczoKQEAgLTk4NjYsNyArMzE2MjMsMTMgQEAKIAogICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxNjBzbm1wbmV0c3RhdF9zaW1wbGU6CiAKLSAgIEJhY2twb3J0ZWQgcjE5NjUzLgorICAgUGFzc2VzIG5vdyBvbiBNaW5HVyB0b28uCisKKzIwMTAtMTEtMDkgMTE6MzEgIGJ2YXNzY2hlCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zOgorCisgICBGb2xsb3ctdXAgZm9yIHIxOTY0Ni4KIAogMjAxMC0xMS0wOSAxMTozMCAgYnZhc3NjaGUKIApAQCAtOTg3NSwxMyArMzE2MzgsNDggQEAKICAgIENIQU5HRVM6IE1pbkdXOiB0ZXN0aW5nOiBJZiB0aGUgYWdlbnQgaGFzIGJlZW4gYXNrZWQgdG8gc3RvcCwKICAgIHdhaXQgdW50aWwgdGhlIHNubXBkIHByb2Nlc3MgZGlzYXBwZWFyZWQgYmVmb3JlIHByb2NlZWRpbmcuCiAKLTIwMTAtMTEtMDggMTU6MzkgIGJ2YXNzY2hlCisyMDEwLTExLTA5IDEwOjAyICBidmFzc2NoZQorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5jOgorCisgICBDSEFOR0VTOiBhZ2VudDogY29tMnNlYzYgZGlyZWN0aXZlOiBJZiBjb25maWd1cmUgaGFzIG5vdCBmb3VuZAorICAgZ2V0YWRkcmluZm8oKSwgbm9uLW51bWVyaWMgSVB2NiBhZGRyZXNzZXMgZG8gbm93IHRyaWdnZXIgYW4gZXJyb3IKKyAgIG1lc3NhZ2UuCisKKzIwMTAtMTEtMDggMTU6MzYgIGJ2YXNzY2hlCiAKICAgICogdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDcxY29tMnNlYzZfc2ltcGxlOgogCiAgICBDSEFOR0VTOiB0ZXN0aW5nOiBUZXN0IDcxIChjb20yc2VjNl9zaW1wbGUpIGRvZXMgbm93IHN1Y2NlZWQgZXZlbgogICAgaWYgSVB2NiBETlMgcmVzb2x1dGlvbiBpcyBub3QgYXZhaWxhYmxlLgotICAgKEJhY2twb3J0ZWQgcjE5NjQ4LikKKworMjAxMC0xMS0wOCAxNTowMiAgYnZhc3NjaGUKKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L2NsaWJfYnVpbGQ6CisKKyAgIE1pbkdXLCB0ZXN0aW5nOiBjbGliIHRlc3RzIGJ1aWxkIGFnYWluIHdpdGhvdXQgd2FybmluZ3MuCisKKzIwMTAtMTEtMDggMTQ6NTIgIGJ2YXNzY2hlCisKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19wcm9nczoKKworICAgQ0hBTkdFUzogTWluR1c6IGNvbmZpZ3VyZTogRGV0ZWN0aW9uIG9mIHRoZSBmdW5jdGlvbnMKKyAgIGdhaV9zdHJlcnJvcigpLCBnZXRhZGRyaW5mbygpLCBnZXRob3N0YnluYW1lKCkgYW5kIGdldGhvc3RuYW1lKCkKKyAgIGRvZXMgbm93IHN1Y2NlZWQuCisKKzIwMTAtMTEtMDggMTQ6NDggIGJ2YXNzY2hlCisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA3aW5ldF9wdG9uX2NsaWIuYzoKKworICAgQ0hBTkdFUzogdGVzdGluZzogQWRkZWQgaW5ldF9udG9wKCkgYW5kIGluZXRfcHRvbigpIHVuaXQgdGVzdC4KKworMjAxMC0xMS0wOCAxNDo0NyAgYnZhc3NjaGUKKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L2NsaWJfYnVpbGQ6CisKKyAgIHRlc3Rpbmc6IGNsaWJfYnVpbGQ6IEFkZGVkICNpbmNsdWRlIGRpcmVjdGl2ZXMgKDxhcnBhL2luZXQuaD4gYW5kCisgICA8bmV0aW5ldC9pcDYuaD4pLgogCiAyMDEwLTExLTA4IDA4OjQ2ICBidmFzc2NoZQogCkBAIC05ODg5LDYgKzMxNjg3LDIxIEBACiAKICAgIFdpbjMyOiBhZ2VudDogZWxpbWluYXRlZCBjYXN0cyBmcm9tL3RvIGludCBmb3IgdGhyZWFkIGhhbmRsZXMuCiAKKzIwMTAtMTEtMDggMDc6NTggIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmM6CisKKyAgIFJlbW92ZWQgTkVUU05NUF9TVEFUSUNfSU5MSU5FIGZyb20gdGhlIGRlY2xhcmF0aW9uIG9mCisgICBfYnVpbGRfY2FjaGVfbmFtZSAtIGF0IGxlYXN0IGdjYyBpcyBiZXR0ZXIgdGhhbiBhIGh1bWFuIGF0CisgICBkZWNpZGluZyB3aGljaCBmdW5jdGlvbnMgc2hvdWxkIGJlIGlubGluZWQgYW5kIHdoaWNoIG9uZXMgbm90LgorCisyMDEwLTExLTA4IDA3OjU2ICBidmFzc2NoZQorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5jOgorCisgICBuZXRzbm1wX3RhYmxlX2RhdGFfY2xvbmVfcm93KCk6IEFkZGVkIG1pc3NpbmcgZnJlZSgpIHN0YXRlbWVudCBpbgorICAgYW4gZXJyb3IgcGF0aC4KKwogMjAxMC0xMS0wNyAyMToxNSAgZHRzMTIKIAogICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuYzoKQEAgLTk5MzcsNDAgKzMxNzUwLDI5IEBACiAKICAgIE1hZGUgc3VyZSB0aGF0IHJwbUdldFBhdGgoKSBjYW4gYmUgZm91bmQgYnkgY29uZmlndXJlLgogCi0yMDEwLTExLTA1IDE0OjU4ICBidmFzc2NoZQorMjAxMC0xMS0wNSAxNDo1MCAgYnZhc3NjaGUKIAotICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMjoKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczE6CiAKLSAgIFJlbW92ZWQgbW9yZSBjb2RlIHRoYXQgd2FzIGFjY2lkZW50aWFsbHkgaW5zZXJ0ZWQgYnkgdGhlIHBhdGNoCi0gICB0b29sLgorICAgUmVtb3ZlZCBzdXBlcmZsdW91cyAtSS91c3IvaW5jbHVkZS9ycG0uCiAKLTIwMTAtMTEtMDUgMTQ6NTcgIGJ2YXNzY2hlCi0KLSAgICogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKLQotICAgUmV2ZXJ0ZWQgcjE5NjIyLgotCi0yMDEwLTExLTA1IDE0OjUyICBidmFzc2NoZQotCi0gICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMSwgICAKLSAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMjoKLQotICAgQ2xlYW5lZCB1cCByMTk2MjQ6IHJlbW92ZWQgZ2FyYmFnZSBhZGRlZCBieSB0aGUgcGF0Y2ggdG9vbC4KLQotMjAxMC0xMS0wNSAxMzo1NSAgYnZhc3NjaGUKKzIwMTAtMTEtMDUgMTI6MTggIGJ2YXNzY2hlCiAKICAgICogIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgICAKICAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGlicywgICAKICAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMSwgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyOgogCi0gICBDSEFOR0VTOiBhZ2VudDogRml4ZWQgb3JkZXIgb2YgcnBtbGliIGRldGVjdGlvbiBhbmQgYWdlbnQgbW9kdWxlCi0gICBjb25maWd1cmF0aW9uIChiYWNrcG9ydGVkIHIxOTYyMSBmcm9tIHRydW5rKS4KKyAgIENIQU5HRVM6IGFnZW50OiBGaW5kIG91dCB3aGV0aGVyIGxpYnJwbSBpcyBhdmFpbGFibGUgYmVmb3JlCisgICBjb25maWd1cmluZyB0aGUgYWdlbnQgbW9kdWxlcyBiZWNhdXNlIGhvc3QvZGF0YS9hY2Nlc3Mvc3dpbnN0CisgICBuZWVkcyBzeW1ib2wgSEFWRV9MSUJSUE0uIEFzIGEgcmVzdWx0LCBjb25maWd1cmUgaGFzIHRvIGJlIHJ1bgorICAgb25seSBvbmNlIGluc3RlYWQgb2YgdHdpY2UgdG8gZW5hYmxlIHRoZSBoclNXSW5zdGFsbGVkIHRhYmxlIG9uCisgICBzeXN0ZW1zIHRoYXQgaGF2ZSBsaWJycG0uCiAKLTIwMTAtMTEtMDUgMTM6MzcgIGJ2YXNzY2hlCisyMDEwLTExLTA1IDEyOjExICBidmFzc2NoZQogCi0gICAqIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisgICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cEVycm9yVGFibGUuYzoKIAotICAgUmVnZW5lcmF0ZWQgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbi4KKyAgIFN1cHByZXNzIGEgY29tcGlsZXIgd2FybmluZy4KIAogMjAxMC0xMS0wNSAxMDowMCAgYnZhc3NjaGUKIApAQCAtOTk4OCwxMiArMzE3OTAsMzUgQEAKICAgIENIQU5HRVM6IGFnZW50OiBob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9ycG06IExvZyBhbiBlcnJvciBtZXNzYWdlCiAgICBpZiBycG1kYk9wZW4oKSBmYWlscy4KIAorMjAxMC0xMS0wNSAwODo1MCAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmMsIGFnZW50L21pYmdyb3VwL1Jtb24vZXZlbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL1Jtb24vaGlzdG9yeS5jLCBhZ2VudC9taWJncm91cC9SbW9uL3Jvd19hcGkuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL1Jtb24vcm93cy5jLCBhZ2VudC9taWJncm91cC9SbW9uL3N0YXRpc3RpY3MuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cEV4cHJlc3Npb25UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwT2JqZWN0VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cFZhbHVlVGFibGUuYzoKKworICAgUm1vbiAvIGRpc21hbiBjb21waWxlciB3YXJuaW5nIGZpeGVzLgorCiAyMDEwLTExLTA1IDA4OjQ4ICBidmFzc2NoZQogCiAgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oOgogCiAgICBDSEFOR0VTOiBzbm1wbGliOiBBZGRlZCBtYWNybyBuZXRzbm1wX3N0YXRpY19hc3NlcnQoKS4KIAorMjAxMC0xMS0wNSAwODo0MCAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYzoKKworICAgRm9sbG93LXVwIGZvciByMTk1NjYuCisKKzIwMTAtMTEtMDUgMDg6MzcgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuaDoKKworICAgUmVtb3ZlZCBhIChoYXJtbGVzcyA/KSBjaXJjdWxhciByZWZlcmVuY2UuCisKIDIwMTAtMTEtMDQgMTM6MDkgIGR0czEyCiAKICAgICogZGlzdC9uZXQtc25tcC5zcGVjOgpAQCAtMTAwMDEsMjAgKzMxODI2LDI0IEBACiAgICBDSEFOR0VTOiBMaW51eDogUEFUQ0hFUzogMzA4MzAyNzogRml4IFJQTSBzcGVjIGZpbGUgdG8gc3VwcG9ydAogICAgQ2VudE9TCiAKLTIwMTAtMTEtMDQgMTI6NDUgIGJ2YXNzY2hlCi0KLSAgICogYWdlbnQvc25tcGQuYzoKLQotICAgUmV2ZXJ0ZWQgcjE5NjAxIGFuZCB0aGVyZWJ5IHJlZW5hYmxlZCB0aGUgaW52b2NhdGlvbiBvZgotICAgc2h1dGRvd25fbWFzdGVyX2FnZW50KCkgYW5kIHNodXRkb3duX2FnZW50KCkgZHVyaW5nCi0gICBzbm1wX3NodXRkb3duKCkuCi0KIDIwMTAtMTEtMDMgMTM6MjIgIHJzdG9yeQogCiAgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3Rscy9UMjAwVGxzSXB2Nl9zaW1wbGU6CiAKICAgIHNraXAgdGxzaXB2NiB0ZXN0IGlmIG5vdCB0bHN0Y3AvdGNwaXB2NiBkb21haW5zCiAKKzIwMTAtMTEtMDEgMjM6MDMgIG1hZ2ZyCisKKyAgICogIGFjY29uZmlnLmgsIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jbXVfY29tcGF0LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGlic25tcC5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaCwgc25tcGxpYi9NYWtlZmlsZS5pbiwgICAKKyAgICAgIHNubXBsaWIvY211X2NvbXBhdC5jLCBzbm1wbGliL21pYi5jLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg6CisKKyAgIE5FV1M6IHNubXBsaWI6IFJlbW92ZSB0aGUgc3VwcG9ydCBmb3IgQ01VIGNvbXBhdGliaWxpdHkgc2luY2UKKyAgIHRoZXJlIGlzIG5vIHdheSB0byBlbmFibGUgaXQgYW5kIG5vYm9keSBoYXZlIG1pc3NlZCBpdC4KKwogMjAxMC0xMS0wMSAxNjo1MCAgZHRzMTIKIAogICAgKiBtYW4vdmFyaWFibGVzLjUuZGVmOgpAQCAtMTAwMjgsODAgKzMxODU3LDYgQEAKIAogICAgRG9jdW1lbnQgLUNmIGluIHRoZSB0d28gbWFuIHBhZ2VzIHNlcGFyYXRlbHkuCiAKLTIwMTAtMTEtMDEgMTY6MzAgIGR0czEyCi0KLSAgICogIG1hbi9uZXRzbm1wX3Nlc3Npb25fYXBpLjMuZGVmLCBtYW4vc25tcGJ1bGt3YWxrLjEuZGVmLCAgIAotICAgICAgbWFuL3NubXBnZXQuMS5kZWYsIG1hbi9zbm1wZ2V0bmV4dC4xLmRlZiwgbWFuL3NubXBzZXQuMS5kZWYsICAgCi0gICAgICBtYW4vc25tcHRyYXAuMS5kZWYsIG1hbi9zbm1wdHJhcGQuOC5kZWYsIG1hbi9zbm1wd2Fsay4xLmRlZjoKLQotICAgUmVtb3ZlIENNVSBjb3B5cmlnaHQgbm90aWNlIGZyb20gbWFuIHBhZ2VzIHRoYXQKLSAgIHdlcmUgbm90IGluaGVyaXRlZCBmcm9tIENNVS1TTk1QCi0gICAoYW5kIHF1YWxpZnkgdGhlIGNvcHlyaWdodCBmb3IgdGhvc2UgdGhhdCB3ZXJlKS4KLQotMjAxMC0xMS0wMSAxNjoyMyAgYnZhc3NjaGUKLQotICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlLmM6Ci0KLSAgIFBhcnRpYWxseSByZXZlcnRlZCByMTk0ODUgYmVjYXVzZSBpdCB0cmlnZ2VyZWQgZG91YmxlIGZyZWVzCi0gICBkdXJpbmcgc25tcGQgZXhpdCAodGhpcyBjaGFuZ2UgaXMgYWxyZWFkeSBwcmVzZW50IG9uIHRoZSB0cnVuaykuCi0gICBBbiBleGFtcGxlOgotICAgCi0gICA9PTE4NzA5PT0gSW52YWxpZCByZWFkIG9mIHNpemUgOAotICAgPT0xODcwOT09IGF0IDB4NEU3NkQ1NDogbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlCi0gICAodGFibGUuYzoxMDA4KQotICAgPT0xODcwOT09IGJ5IDB4NTBEQkVCMjogc2h1dGRvd25fc3lzT1JUYWJsZSAoc3lzT1JUYWJsZS5jOjI4NikKLSAgID09MTg3MDk9PSBieSAweDUxOEUzN0M6IF9zaHV0ZG93bl9taWJfbW9kdWxlcwotICAgKG1pYl9tb2R1bGVfc2h1dGRvd24uaDozKQotICAgPT0xODcwOT09IGJ5IDB4NjAzQ0E3Qzogc25tcF9jYWxsX2NhbGxiYWNrcyAoY2FsbGJhY2suYzozMzgpCi0gICA9PTE4NzA5PT0gYnkgMHg2MDBFQUU0OiBzbm1wX3NodXRkb3duIChzbm1wX2FwaS5jOjg5OCkKLSAgID09MTg3MDk9PSBieSAweDQwNTE3RjogbWFpbiAoc25tcGQuYzoxMDY2KQotICAgPT0xODcwOT09IEFkZHJlc3MgMHg3MzIyOTYwIGlzIDAgYnl0ZXMgaW5zaWRlIGEgYmxvY2sgb2Ygc2l6ZSAzMgotICAgZnJlZSdkCi0gICA9PTE4NzA5PT0gYXQgMHg0QzI2NDk2OiBmcmVlICh2Z19yZXBsYWNlX21hbGxvYy5jOjM2NikKLSAgID09MTg3MDk9PSBieSAweDRFNzY3Qzc6Ci0gICBuZXRzbm1wX2ZyZWVfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAodGFibGUuYzo3NCkKLSAgID09MTg3MDk9PSBieSAweDRFNDQxNkI6IG5ldHNubXBfaGFuZGxlcl9mcmVlCi0gICAoYWdlbnRfaGFuZGxlci5jOjY4NSkKLSAgID09MTg3MDk9PSBieSAweDRFNDQxNEY6IG5ldHNubXBfaGFuZGxlcl9mcmVlCi0gICAoYWdlbnRfaGFuZGxlci5jOjY4MCkKLSAgID09MTg3MDk9PSBieSAweDRFNDQyQUY6IG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZQotICAgKGFnZW50X2hhbmRsZXIuYzo3NDIpCi0gICA9PTE4NzA5PT0gYnkgMHg0RTQ2RjdDOiBuZXRzbm1wX3N1YnRyZWVfZnJlZQotICAgKGFnZW50X3JlZ2lzdHJ5LmM6NDY4KQotICAgPT0xODcwOT09IGJ5IDB4NEU0ODZCOTogdW5yZWdpc3Rlcl9taWJfY29udGV4dAotICAgKGFnZW50X3JlZ2lzdHJ5LmM6MTc0NSkKLSAgID09MTg3MDk9PSBieSAweDRFNDMwRkM6IG5ldHNubXBfdW5yZWdpc3Rlcl9oYW5kbGVyCi0gICAoYWdlbnRfaGFuZGxlci5jOjMyNikKLSAgID09MTg3MDk9PSBieSAweDRFNzY4OTE6IG5ldHNubXBfdW5yZWdpc3Rlcl90YWJsZSAodGFibGUuYzoxMzcpCi0gICA9PTE4NzA5PT0gYnkgMHg0RTdCMTI0OiBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV91bnJlZ2lzdGVyCi0gICAodGFibGVfY29udGFpbmVyLmM6MzM0KQotICAgPT0xODcwOT09IGJ5IDB4NTBEQkU5MDogc2h1dGRvd25fc3lzT1JUYWJsZSAoc3lzT1JUYWJsZS5jOjI4MykKLSAgID09MTg3MDk9PSBieSAweDUxOEUzN0M6IF9zaHV0ZG93bl9taWJfbW9kdWxlcwotICAgKG1pYl9tb2R1bGVfc2h1dGRvd24uaDozKQotCi0yMDEwLTExLTAxIDE1OjI3ICBidmFzc2NoZQotCi0gICAqIGFnZW50L3NubXBkLmM6Ci0KLSAgIFBhcnRpYWxseSByZXZlcnRlZCByMTk1MTE6IGRpc2FibGVkIGludm9jYXRpb24gb2YKLSAgIHNodXRkb3duX21hc3Rlcl9hZ2VudCgpIGFuZCBzaHV0ZG93bl9hZ2VudCgpIGR1cmluZwotICAgc25tcF9zaHV0ZG93bigpIGFnYWluLgotCi0yMDEwLTExLTAxIDEzOjU1ICBkdHMxMgotCi0gICAqIG1hbi90a21pYi4xLmRlZjoKLQotICAgU3VwcHJlc3MgZm9yY2luZyBvZiAiQmVya2VsZXkgRGlzdHJpYnV0aW9uIiBmb290ZXIKLSAgIChBbGxvd3MgTmV0LVNOTVAgdmVyc2lvbiBpbmZvcm1hdGlvbiB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIG1hbgotICAgcGFnZSkKLQotMjAxMC0xMS0wMSAxMzo0MiAgZHRzMTIKLQotICAgKiBtYW4vc25tcHRhYmxlLjEuZGVmLCBtYW4vc25tcHRlc3QuMS5kZWY6Ci0KLSAgIFVwZGF0ZSBtYW4gcGFnZSBkYXRlc3RhbXBzIHRvIG1hdGNoIHRoZSBsYXRlc3QgKG5vbi10cml2aWFsKQotICAgY29udGVudCBjaGFuZ2UuCi0KIDIwMTAtMTAtMjkgMjI6MzEgIHJzdG9yeQogCiAgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jOgpAQCAtMTAxMDksMTcgKzMxODY0LDE3NyBAQAogICAgbnVsbCBvdXQgYmlvIHBvaW50ZXJzIGFmdGVyIGJlaW5nIGZyZWVkOyBiYWlsIG9uIGNvbm5lY3Rpb24KICAgIHdpdGggbm8gc3NsIHBvaW50ZXIKIAorMjAxMC0xMC0yOSAxNDozNSAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXSW5zdGFsbGVkVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmM6CisKKyAgIFJldmVydGVkIGluY29ycmVjdCBjaGFuZ2VzIGZyb20gcjE5NTc1LgorCisyMDEwLTEwLTI5IDE0OjIxICBidmFzc2NoZQorCisgICAqIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jOgorCisgICBGaXhlZCBhIGJ1ZyB0aGF0IHdhcyBpbnRyb2R1Y2VkIGluIHIxOTUxNS4KKworMjAxMC0xMC0yOSAxNDowMCAgYnZhc3NjaGUKKworICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9pbnRlcmZhY2UuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuYywgIAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5jLCAgCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcktleVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2UuYzoKKworICAgUmV2ZXJ0ZWQgdGhlIGluY29ycmVjdCBjaGFuZ2VzIGZyb20gcjE5NTkzLgorCisyMDEwLTEwLTI5IDEzOjM4ICBidmFzc2NoZQorCisgICAqIHNubXBsaWIvY2VydF91dGlsLmM6CisKKyAgIFJlZHVjZWQgbnVtYmVyIG9mIGxlYWstYXQtZXhpdCBjb21wbGFpbnRzIHRyaWdnZXJlZCBieQorICAgc25tcGxpYi9jZXJ0X3V0aWwuYy4KKworMjAxMC0xMC0yOSAxMzozNyAgYnZhc3NjaGUKKworICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9pbnRlcmZhY2UuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuYywgIAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5jLCAgCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcktleVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2ludGVyZmFjZS5jOgorCisgICBNb3JlIGxlYWstYXQtZXhpdCBmaXhlcy4KKworMjAxMC0xMC0yOSAxMzozNSAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmg6CisKKyAgIE1vcmUgbGVhay1hdC1leGl0IGZpeGVzLgorCiAyMDEwLTEwLTI5IDEyOjE4ICBidmFzc2NoZQogCiAgICAqIHNubXBsaWIvY2VydF91dGlsLmMsIHNubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jOgogCiAgICBTcGVsbGluZyBmaXggaW4gbG9nIHRleHRzOiBjb250YWludGVyIC0+IGNvbnRhaW5lci4KIAotMjAxMC0xMC0yOSAxMTozNCAgYnZhc3NjaGUKKzIwMTAtMTAtMjkgMDk6NTggIGJ2YXNzY2hlCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jOgogCi0gICBCYWNrcG9ydGVkIHIxOTU4OCBhbmQgcjE5NTg5IGZyb20gdGhlIHRydW5rLgorICAgUmFuIGZpbGx1cF9lbnRyeV9pbmZvKCkgdGhyb3VnaCBpbmRlbnQuCisKKzIwMTAtMTAtMjkgMDk6NTYgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jOgorCisgICBOZXRsaW5rIElQdjYgcHJlZml4IHByb2Nlc3Npbmc6IEFkZGVkIG1vcmUgZGVidWcgc3RhdGVtZW50cy4KKworMjAxMC0xMC0yOSAwOTo1NCAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlLmM6CisKKyAgIE1hZGUgYXJndW1lbnQgY2hlY2tpbmcgb2YgbmV0c25tcF9oYW5kbGVyX293bnNfdGFibGVfaW5mbygpIG1vcmUKKyAgIHN0cmljdC4KKworMjAxMC0xMC0yOSAwOTo1MiAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFNldFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c1RhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJCb29sZWFuVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZFRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5QZXJmVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5oOgorCisgICBNb3JlIE1JQi1zcGVjaWZpYyBsZWFrLWF0LWV4aXQgZml4ZXMuCiAKIDIwMTAtMTAtMjkgMDc6NTYgIGJ2YXNzY2hlCiAKQEAgLTEwMTc4LDYgKzMyMDkzLDM4IEBACiAgICBVbnRhbmdsZSBwaWNsIGZyb20ga3N0YXQgYWNjZXNzIHNvIGl0IGNvbXBpbGVzIG9uIHg4NiBTb2xyYWlzCiAgICAxMC9PcGVuU29sYXJpcwogCisyMDEwLTEwLTI4IDE1OjE1ICBidmFzc2NoZQorCisgICAqICBhZ2VudC9oZWxwZXJzL2luc3RhbmNlLmMsIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXSW5zdGFsbGVkVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmMsICAKKyAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUFkZHJUYWJsZS9zbm1wVGxzdG1BZGRyVGFibGUuYywgCisgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtUGFyYW1zVGFibGUvc25tcFRsc3RtUGFyYW1zVGFibGUuYzoKKworICAgTW9yZSBsZWFrLWF0LWV4aXQgZml4ZXMuCisKKzIwMTAtMTAtMjggMTU6MTMgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvaGVscGVycy93YXRjaGVyLmMsIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oOgorCisgICBDSEFOR0VTOiBhZ2VudDogQWRkZWQgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlMigpLAorICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcjIoKSwgbmV0c25tcF9jbG9uZV93YXRjaGVyX2luZm8oKQorICAgYW5kIG5ldHNubXBfb3duc193YXRjaGVyX2luZm8oKS4gU2VlIGFsc28gdGhlIERveHlnZW4gY29tbWVudHMKKyAgIGZvciBtb3JlIGluZm8uCisKIDIwMTAtMTAtMjggMTQ6MDIgIGR0czEyCiAKICAgICogbG9jYWwvbWliMmMuY2hlY2tfdmFsdWVzLmNvbmY6CkBAIC0xMDE5OSw2ICszMjE0NiwxMyBAQAogICAgRml4ZWQgYSBjb21waWxlciB3YXJuaW5nIChtaXNtYXRjaCBiZXR3ZWVuIGZvcm1hdCBzcGVjaWZpY2F0aW9uCiAgICBhbmQgYXJndW1lbnQpIHRoYXQgd2FzIGludHJvZHVjZWQgaW4gcjY1NjIuCiAKKzIwMTAtMTAtMjggMTE6NDMgIGJ2YXNzY2hlCisKKyAgICogIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmM6CisKKyAgIEdldCByaWQgb2YgcmVjZW50bHkgaW50cm9kdWNlZCBtZW1kdXAoKSBjb21waWxlciB3YXJuaW5ncy4KKwogMjAxMC0xMC0yOCAxMTo0MSAgYnZhc3NjaGUKIAogICAgKiBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuYzoKQEAgLTEwMjEyLDYgKzMyMTY2LDIzIEBACiAgICBSZXZlcnRlZCByMTk1NjUgYmVjYXVzZSBpdCBjYXVzZWQgZ2NjIHRvIHJlcG9ydCBtb3JlIHdhcm5pbmdzCiAgICBpbnN0ZWFkIG9mIGxlc3MuCiAKKzIwMTAtMTAtMjggMTE6MTggIGJ2YXNzY2hlCisKKyAgICogCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYzoKKworICAgRml4ZWQgYSBjb21waWxlciB3YXJuaW5nIHRoYXQgd2FzIGludHJvZHVjZWQgaW4gcjE5NTY2LgorCisyMDEwLTEwLTI4IDEwOjQwICBidmFzc2NoZQorCisgICAqICBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgsIHNubXBsaWIvY2FsbGJhY2suYzoKKworICAgUGFydGlhbGx5IHJldmVydGVkIHIxOTUxNTogcmVtb3ZlZCB0aGUgbmV3bHkgaW50cm9kdWNlZCBmdW5jdGlvbnMKKyAgIGFuZCBkYXRhIG1lbWJlcnMgYWdhaW4sIGJ1dCB3aXRob3V0IHJlaW50cm9kdWNpbmcgdGhlCisgICBsZWFrLWF0LWV4aXQuCisKIDIwMTAtMTAtMjggMTA6MzIgIGJ2YXNzY2hlCiAKICAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgsIHNubXBsaWIvdG9vbHMuYzoKQEAgLTEwMjI2LDYgKzMyMTk3LDEzIEBACiAKICAgIEZpeGVkIHlldCBhbm90aGVyIGNyYXNoIGluIG5ldHNubXBfY2FjaGVfcmVtb3ZlKCkuCiAKKzIwMTAtMTAtMjggMDg6NDQgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvc25tcGQuYzoKKworICAgTWFkZSBpdCBlYXNpZXIgdG8gZW5hYmxlIHRoZSBtZW1vcnkgbGVhayBjaGVja2VyIGJ1aWx0LWluIGluCisgICBNU1ZDJ3MgQyBydW50aW1lIGxpYnJhcnkuCisKIDIwMTAtMTAtMjcgMjA6MzcgIG5iYQogCiAgICAqIGFnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1BZGRyVGFibGUvc25tcFRsc3RtQWRkclRhYmxlLmM6CkBAIC0xMDM0NCwxMSArMzIzMjIsMTQgQEAKICAgIENIQU5HRVM6IGFnZW50OiBQQVRDSDogMjk1OTgxMTogZnJvbSBKYW4gU2FmcmFuZWs6IFJlaW1wbGVtZW50CiAgICBMaW51eCBOZXRsaW5rIElQdjYgcHJlZml4IGxpc3RlbmVyLgogCi0yMDEwLTEwLTI1IDA3OjQyICBidmFzc2NoZQorMjAxMC0xMC0yNSAwNzoxNSAgYnZhc3NjaGUKIAotICAgKiBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUTFNCYXNlRG9tYWluLmgsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4uYzoKIAotICAgUmVnZW5lcmF0ZWQgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbi4KKyAgIEF2b2lkIHRoYXQgdGhlIGNvbXBpbGVyIGNvbXBsYWlucyBhYm91dCBjYXN0aW5nIGF3YXkgdGhlICdjb25zdCcKKyAgIGF0dHJpYnV0ZSBmb3IgdGhlIGZpcnN0IGFyZ3VtZW50IG9mIHNzbGN0eF9jbGllbnRfc2V0dXAoKSBhbmQKKyAgIHNzbGN0eF9zZXJ2ZXJfc2V0dXAoKS4KIAogMjAxMC0xMC0yNSAwNjoyOCAgbmJhCiAKQEAgLTEwMzk1LDYgKzMyMzc2LDE0IEBACiAKICAgIGNvbnN0LWp1Z2dsaW5nIC0gd2UgZG9udCBsaWtlIHdhcm5pbmdzCiAKKzIwMTAtMTAtMjMgMTE6NTYgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmM6CisKKyAgIFJlZW5hYmxlZCBjYWNoZSByZW1vdmFsIGFuZCBmcmVlaW5nIC8gbW92ZWQgY2FjaGUgcmVmY291bnQKKyAgIGluY3JlbWVudGluZyB0byBuZXRzbm1wX2NhY2hlX293bnNfY2FjaGUoKSAvIGNvbnZlcnRlZCB0YWJzIHRvCisgICBzcGFjZXMuCisKIDIwMTAtMTAtMjMgMTE6MDQgIGJ2YXNzY2hlCiAKICAgICogYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmM6CkBAIC0xMDQwOCwyMSArMzIzOTcsMjAxIEBACiAgICBDSEFOR0VTOiBhZ2VudDogUmVtb3ZpbmcgdGhlIGxhc3QgY2FjaGUgdmlhCiAgICBuZXRzbm1wX2NhY2hlX3JlbW92ZSgpIGRvZXMgbm8gbG9uZ2VyIHRyaWdnZXIgYSBjcmFzaC4KIAotMjAxMC0xMC0yMiAwOToyMCAgYnZhc3NjaGUKKzIwMTAtMTAtMjMgMTA6NTcgIGJ2YXNzY2hlCisKKyAgICogCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDZzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2NhZ2VudGxpYi5jOgorCisgICBUMDA2c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9jYWdlbnRsaWI6IEludHJvZHVjZWQKKyAgIG5ldHNubXBfY2FjaGVfY3JlYXRlKCkuCisKKzIwMTAtMTAtMjIgMTU6MjQgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmM6CisKKyAgIERpc2FibGVkIGNhY2hlIGRlYWxsb2NhdGlvbiBiZWNhdXNlIGl0IG1ha2VzIHR3byB1bml0IHRlc3RzIGZhaWwKKyAgIC0gdG8gYmUgYW5hbHl6ZWQgZnVydGhlci4KKworMjAxMC0xMC0yMiAxNTowMyAgYnZhc3NjaGUKKworICAgKiAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwNnNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fY2FnZW50bGliLmM6CisKKyAgIEJ1aWxkcyBhZ2Fpbi4KKworMjAxMC0xMC0yMiAxNDo0OSAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZS5jLCAgCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZS5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGUuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlLmM6CisKKyAgIENIQU5HRVM6IGFnZW50OiBNSUItc3BlY2lmaWMgbGVhay1hdC1leGl0IGZpeGVzLgorCisyMDEwLTEwLTIyIDE0OjQyICBidmFzc2NoZQorCisgICAqICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9kYXRhX3NldC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZGF0YV9zZXQuaDoKKworICAgQ0hBTkdFUzogYWdlbnQ6IGV4YW1wbGUgTUlCOiBBZGRlZCBzaHV0ZG93biBmdW5jdGlvbiB0aGF0IGZyZWVzCisgICBhbGwgbWVtb3J5IG93bmVkIGJ5IHRoaXMgTUlCIGltcGxlbWVudGF0aW9uLgorCisyMDEwLTEwLTIyIDE0OjQwICBidmFzc2NoZQorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmM6CisKKyAgIENIQU5HRVM6IGFnZW50OiBBdXRvbWF0aWNhbGx5IGZyZWUgdGhlIHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUKKyAgIGFsbG9jYXRlZCBieSBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9oYW5kbGVyX2dldCgpLgorCisyMDEwLTEwLTIyIDE0OjM4ICBidmFzc2NoZQorCisgICAqICBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oOgorCisgICBDSEFOR0VTOiBhZ2VudDogQ291bnQgdGhlIG51bWJlciBvZiB1c2VycyBvZiBhIG5ldHNubXBfY2FjaGUgZGF0YQorICAgc3RydWN0dXJlIGluc3RlYWQgb2YgZHVwbGljYXRpbmcgaXQuCisKKzIwMTAtMTAtMjIgMTQ6MzYgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvaGVscGVycy9iYWJ5X3N0ZXBzLmMsIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oOgorCisgICBDSEFOR0VTOiBhZ2VudDogQWRkZWQgcmVmZXJlbmNlIGNvdW50IGluIHRoZQorICAgbmV0c25tcF9iYWJ5X3N0ZXBzX21vZGVzIGRhdGEgc3RydWN0dXJlIGFuZCBtYWRlIHN1cmUgdGhhdCB0aGlzCisgICBkYXRhIHN0cnVjdHVyZSBpcyBhdXRvbWF0aWNhbGx5IGZyZWVkIHdoZW4gdGhlIGhhbmRsZXIgdGhhdCBvd25zCisgICBpdCBpcyB1bnJlZ2lzdGVyZWQuCisKKzIwMTAtMTAtMjIgMTQ6MzQgIGJ2YXNzY2hlCisKKyAgICogIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0Lmg6CisKKyAgIENIQU5HRVM6IGFnZW50OiBBZGRlZCBuZXRzbm1wX3VucmVnaXN0ZXJfYXV0b19kYXRhX3RhYmxlKCkuCisKKzIwMTAtMTAtMjIgMDg6NTEgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvYWdlbnRfcmVnaXN0cnkuYzoKKworICAgRm9sbG93LXVwIGZvciByMTk1MTE6IG1hZGUgc3VyZSB0aGF0IGNsZWFuX3N1YnRyZWUoKSBkZWFsbG9jYXRlcworICAgYWxsIGNvbnRleHQgY2FjaGUgbm9kZXMuCisKKzIwMTAtMTAtMjIgMDg6NDkgIGJ2YXNzY2hlCiAKICAgICogYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmM6CiAKICAgIENIQU5HRVM6IGFnZW50OiBuZXRzbm1wX2NhY2hlX2ZyZWUoKTogQSBtb3JlIGRldGFpbGVkIG1lc3NhZ2UgaXMKICAgIG5vdyBsb2dnZWQgd2hlbiBhdHRlbXB0aW5nIHRvIGZyZWUgYSBjYWNoZSB0aGF0IGlzIHN0aWxsIGluIHRoZQogICAgY2FjaGUgbGlzdC4KLSAgIChCYWNrcG9ydGVkIHIxOTUyNC4pCiAKLTIwMTAtMTAtMjIgMDk6MTkgIGJ2YXNzY2hlCisyMDEwLTEwLTIyIDA2OjM5ICBidmFzc2NoZQogCi0gICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmM6CisgICAqIGx0bWFpbi5zaDoKIAotICAgQmFja3BvcnRlZCByMTk1MjU6IG1hZGUgc3VyZSB0aGF0IGNsZWFuX3N1YnRyZWUoKSBkZWFsbG9jYXRlcyBhbGwKLSAgIGNvbnRleHQgY2FjaGUgbm9kZXMuCisgICBSZXZlcnRlZCBsdG1haW4uc2ggY2hhbmdlcyBmcm9tIHIxOTUyMi4KKworMjAxMC0xMC0yMiAwNjozNCAgYnZhc3NjaGUKKworICAgKiBjb25maWd1cmUsIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIGx0bWFpbi5zaDoKKworICAgUmVnZW5lcmF0ZWQgYXV0b2NvbmYvYXV0b21ha2UvbGlidG9vbC1nZW5lcmF0ZWQgZmlsZXMgYnkgcnVubmluZworICAgYXV0b3JlY29uZiAtZi4KKworMjAxMC0xMC0yMSAwNzo1MSAgYnZhc3NjaGUKKworICAgKiBsdG1haW4uc2g6CisKKyAgIFJlYXBwbGllZCByMTg3MjYrcjE4NzY2OiBtYWtlIGxpYnRvb2wgc3VwcG9ydCAtZnN0YWNrLXByb3RlY3RvciouCisgICBTZWUgYWxzbworICAgaHR0cDovL2Jsb2cuZ21hbmUub3JnL2dtYW5lLmNvbXAuZ251LmxpYnRvb2wuYnVncy9tb250aD0yMDEwMDYwMQorICAgZm9yIHRoZSBjb25maXJtYXRpb24gdGhhdCB0aGlzIGlzIGEgbGlidG9vbCBidWcuCisKKzIwMTAtMTAtMjAgMjA6MTYgIGJ2YXNzY2hlCisKKyAgICogc25tcGxpYi90b29scy5jOgorCisgICBBdm9pZCB0aGF0IG5ldHNubXBfY2hlY2tfZGVmaW5lZG5lc3MoKSB0cmlnZ2VycyBhIGJ1aWxkIGZhaWx1cmUKKyAgIHdoZW4gY29tcGlsZWQgYWdhaW5zdCBvbGQgVmFsZ3JpbmQgaGVhZGVycy4gTm90ZTogdGhlIGludHJvZHVjZWQKKyAgIGNoZWNrIGlzIHN0cmljdGVyIHRoYW4gbmVjZXNzYXJ5IC0gVkFMR1JJTkRfUFJJTlRGX0JBQ0tUUkFDRSgpCisgICB3YXMgaW50cm9kdWNlZCBpbiBWYWxncmluZCAzLjUuMCBvciBiZWZvcmUgKG5vdCBzdXJlIHdoaWNoCisgICB2ZXJzaW9uKS4KKworMjAxMC0xMC0yMCAxNzoxMyAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3Rvb2xzLmM6CisKKyAgIGFkZGVkIGEgY29tbWVudCBpbiBjb2RlIG5vdGUgdGhhdCB0aGlzIHJlcXVpcmVzIGEgZmFpcmx5IHJlY2VudAorICAgdmFsZ3JpbmQKKworMjAxMC0xMC0yMCAxNzowMCAgaGFyZGFrZXIKKworICAgKiBjb25maWd1cmU6CisKKyAgIHJlcmFuIGF1dG9jb25mIGFmdGVyIHVwZGF0aW5nIGxpYnRvb2wKKworMjAxMC0xMC0yMCAxNjo1OSAgaGFyZGFrZXIKKworICAgKiAgY29uZmlnLmd1ZXNzLCBjb25maWcuc3ViLCBpbnN0YWxsLXNoLCBsdG1haW4uc2gsIG00L2xpYnRvb2wubTQsICAgCisgICAgICBtNC9sdG9wdGlvbnMubTQsIG00L2x0dmVyc2lvbi5tNCwgbTQvbHR+b2Jzb2xldGUubTQ6CisKKyAgIHVwZGF0ZSB0byBsaWJ0b29sIDIuNAorCisyMDEwLTEwLTIwIDE2OjU5ICBoYXJkYWtlcgorCisgICAqIGNvbmZpZ3VyZSwgZGlzdC9hdXRvY29uZi12ZXJzaW9uOgorCisgICB1cGRhdGVkIHRvIGF1dG9jb25mIDIuNjgKKworMjAxMC0xMC0yMCAxNDoyNiAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmMsIGFnZW50L2hlbHBlcnMvb2xkX2FwaS5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jLCBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgsIHNubXBsaWIvY2FsbGJhY2suYywgICAKKyAgICAgIHdpbjMyL21pYl9tb2R1bGVfc2h1dGRvd24uaDoKKworICAgQ0hBTkdFUzogYWdlbnQ6IEFkZGVkIHRoZSBmdW5jdGlvbnMgbmV0c25tcF9kdXBsaWNhdGVfdmFyaWFibGUoKQorICAgYW5kIG5ldHNubXBfY2FjaGVfaGFuZGxlcl9vd25zX2NhY2hlKCkuCisgICBDSEFOR0VTOiBhZ2VudDogTWVtb3J5IGFsbG9jYXRlZCBieSBuZXRzbm1wX3JlZ2lzdGVyX29sZF9hcGkoKQorICAgZm9yIHN0b3JpbmcgU05NUCB2YXJpYWJsZXMgaXMgbm93IGZyZWVkIHdoZW4gdGhlIGFzc29jaWF0ZWQKKyAgIGhhbmRsZXIgaXMgdW5yZWdpc3RlcmVkLgorICAgQ0hBTkdFUzogYWdlbnQ6IENhbGxiYWNrIGZ1bmN0aW9uIGRhdGEgZGVhbGxvY2F0aW9uIGRvZXMgbm8KKyAgIGxvbmdlciBmcmVlIHRoZSBtZW1vcnkgYWxsb2NhdGVkIGZvciB0aGUgQWdlbnRYIHNlc3Npb24gLSB0aGUKKyAgIG1lbW9yeSB0aGF0IHdhcyBhbGxvY2F0ZWQgZm9yIEFnZW50WCBzZXNzaW9ucyBpcyBub3cgZGVhbGxvY2F0ZWQKKyAgIGp1c3QgYXMgdGhhdCBmb3IgYW55IG90aGVyIHNlc3Npb24uIFRoaXMgZml4ZXMgYSBsZWFrLWF0LWV4aXQuCisgICBDSEFOR0VTOiBhZ2VudDogTm90aWZ5IGZpbHRlciB0YWJsZTogQ2FsbGJhY2sgZnVuY3Rpb24gZGF0YQorICAgZGVhbGxvY2F0aW9uIGRvZXMgbm8gbG9uZ2VyIGZyZWUgdGhlIGRhdGEgaW4KKyAgICogICAgICpzbm1wTm90aWZ5RmlsdGVyVGFibGVfaWZfY3R4LmNvbnRhaW5lciAtIHRoaXMgaXMgbm93IGRvbmUgYnkgIAorICAgICAgIHNodXRkb3duX3NubXBOb3RpZnlGaWx0ZXJUYWJsZSgpLiAgICBDSEFOR0VTOiBXaW4zMjoKKyAgICAgIHNodXRkb3duX3NubXBOb3RpZnlGaWx0ZXJUYWJsZSgpIGFuZAorCisgICBzaHV0ZG93bl93aW5FeHRETEwoKSBhcmUgbm93IGludm9rZWQgd2hlbiB0aGUgTmV0LVNOTVAgc2VydmljZSBpcworICAgc3RvcHBlZC4KKworMjAxMC0xMC0yMCAxMzo0NyAgYnZhc3NjaGUKKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDV0YWJsZV9kYXRhc2V0X2NhZ2VudGxpYi5jOgorCisgICBVbml0LXRlc3RpbmcsIFQwMDV0YWJsZV9kYXRhc2V0X2NhZ2VudGxpYjogYWRkZWQgaW5pdF9hZ2VudCgpIGFuZAorICAgc2h1dGRvd25fYWdlbnQoKSBjYWxscy4KIAogMjAxMC0xMC0yMCAxMzoxMiAgbmJhCiAKQEAgLTEwNDMwLDYgKzMyNTk5LDEyIEBACiAKICAgIEZpeCBub24tQU5TSSBmdW5jdGlvbiBoZWFkaW5nCiAKKzIwMTAtMTAtMjAgMTI6NTEgIHJzdG9yeQorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2xpbnV4LmM6CisKKyAgIGZpeCBpcENpZHJSb3V0ZVRhYmxlIChtYXNrKSBmb3IgbGl0dGxlIGVuZGlhbiBzeXN0ZW1zCisKIDIwMTAtMTAtMjAgMTA6MzQgIGJ2YXNzY2hlCiAKICAgICogIGFnZW50L2FnZW50X2hhbmRsZXIuYywgYWdlbnQvYWdlbnRfcmVnaXN0cnkuYywgICAKQEAgLTEwNDUwLDYgKzMyNjI1LDI3IEBACiAgICBpcyBmb3IgdGhpcyBjaGFuZ2UgdGhhdCBpdCB3YXMgbmVjZXNzYXJ5IHRvIGludHJvZHVjZSB0aGUgbmV3CiAgICBmdW5jdGlvbiBzbm1wX3Nlc3Nfc2Vzc2lvbl9sb29rdXAoKS4KIAorMjAxMC0xMC0xOSAyMzo0OSAgbWFnZnIKKworICAgKiAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDE2c25tcHYyY2dldGZhaWxfc2ltcGxlLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDUxc25tcHYyY3RyYXBfc2ltcGxlLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDUyc25tcHYyY2luZm9ybV9zaW1wbGUsICAgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxNDFzbm1wdjJjdmFjbWdldGZhaWxfc2ltcGxlOgorCisgICBDSEFOR0VTOiB0ZXN0aW5nOiBBZGQgbWlzc2luZyBwcmVjb25kaXRpb25zCisKKzIwMTAtMTAtMTkgMjI6MTEgIGhhcmRha2VyCisKKyAgICogZGlzdC9wYXRtZToKKworICAgZG9uJ3QgZGVmYXVsdCB0byBhcHBseWluZyB0byA1LjIKKworMjAxMC0xMC0xOSAyMjoxMCAgaGFyZGFrZXIKKworICAgKiBkaXN0L3BhdG1lOgorCisgICBhZGRlZCB0aGUgNS42IGJyYW5jaAorCiAyMDEwLTEwLTE5IDIxOjEzICBuYmEKIAogICAgKiBzbm1wbGliL3BhcnNlLmM6CkBAIC0xMDUyMiwxMSArMzI3MTgsNTcgQEAKICAgIHJlZGVmaW5pdGlvbiBvZiB0aGUgbWFsbG9jKCkgbWFjcm8gZHVyaW5nIGJ1aWxkaW5nIHRoZSBOZXQtU05NUAogICAgc291cmNlIGNvZGUuCiAKLTIwMTAtMTAtMTggMTA6MzUgIGJ2YXNzY2hlCisyMDEwLTEwLTE5IDA3OjA0ICBtYWdmcgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlZmF1bHRfbW9kdWxlcy5oOgorCisgICBDSEFOR0VTOiBhZ2VudDogRmFjdG9yIG91dCBjb21tb24gY29uZmlnX2FkZF9taWIgc3RhdG1lbnRzCisKKzIwMTAtMTAtMTggMTQ6MjIgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmM6CisKKyAgIE1hcmsgdGhlIHByb3BlciBoYW5kbGVyIHRoYXQgb3ducyB0aGUgdGFibGUgcmVnaXN0cmF0aW9uCisgICBpbmZvcm1hdGlvbi4KKworMjAxMC0xMC0xOCAxMDo1NCAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvaGVscGVycy90YWJsZS5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckRlbHRhVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaDoKKworICAgQ0hBTkdFUzogYWdlbnQ6IEFkZGVkIGZ1bmN0aW9ucyBuZXRzbm1wX2hhbmRsZXJfb3duc190YWJyZXEoKSwKKyAgIG5ldHNubXBfcmVnaXN0cmF0aW9uX293bnNfdGFicmVxKCksIG5ldHNubXBfaXRlcmF0b3JfY2xvbmUoKS4KKyAgIEV4cG9ydGVkIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fY2xvbmUoKS4KKyAgIENIQU5HRVM6IGFnZW50OiBNb2RpZmllZCBuZXRzbm1wX2l0ZXJhdG9yX2RlbGV0ZV90YWJsZSgpIHN1Y2gKKyAgIHRoYXQgaXQgZnJlZXMgdGhlIHRhYmxlIHJlZ2lzdHJhdGlvbiBpbmZvcm1hdGlvbiBzdG9yZWQgaW4gYQorICAgdGFibGUgaXRlcmF0b3IgdG9vLgorICAgQ0hBTkdFUzogYWdlbnQ6IE1vZGlmaWVkIG5ldHNubXBfZ2V0X3RhYmxlX2l0ZXJhdG9yX2hhbmRsZXIoKQorICAgc3VjaCB0aGF0IHRoZSB0YWJsZSBpdGVyYXRvciBwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbiBpcyBmcmVlZAorICAgd2hlbiB0aGUgYXNzb2NpYXRlZCBoYW5kbGVyIGlzIGZyZWVkLgorICAgCisgICBSZXN0b3JlZCB0aGUgYmVoYXZpb3Igb2YgbmV0c25tcF9nZXRfdGFibGVfaGFuZGxlcigpIHRvIHRoYXQgb2YKKyAgIHIxOTQ0OSwgdGhhdCBpcywgbm90IHNldHRpbmcgdXAgdGhlIGRhdGFfZnJlZSBwb2ludGVyIGJlY2F1c2Ugbm90CisgICBhbGwgY2FsbGVycyBvZiBuZXRzbm1wX2dldF90YWJsZV9oYW5kbGVyKCkgZXhwZWN0IHRoYXQgdGFibGUKKyAgIHJlZ2lzdHJhdGlvbiBpbmZvcm1hdGlvbiBpcyBmcmVlZCB3aGVuIHRoZSBhc3NvY2lhdGVkIGhhbmRsZXIgaXMKKyAgIGZyZWVkLgorCisyMDEwLTEwLTE4IDEwOjM0ICBidmFzc2NoZQogCiAgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmM6CiAKLSAgIEJhY2twb3J0ZWQgcjE5NDkxIHRvIHRoZSBWNS42IGJyYW5jaCAoY29tcGlsZXIgd2FybmluZyBmaXgpLgorICAgRml4ZWQgYSBjb21waWxlciB3YXJuaW5nIGFib3V0IGNhc3RpbmcgYXdheSBjb25zdG5lc3MuCiAKIDIwMTAtMTAtMTggMDg6NTIgIGJ2YXNzY2hlCiAKQEAgLTEwNjI5LDYgKzMyODcxLDE0IEBACiAgICBDSEFOR0VTOiB0ZXN0aW5nOiBJdCBpcyBhZ2FpbiBwb3NzaWJsZSB0byBydW4gYW4gaW5kaXZpZHVhbCB0ZXN0CiAgICB2aWEgdGhlIHNjcmlwdCB0ZXN0aW5nL1JVTlRFU1RTLgogCisyMDEwLTEwLTE3IDE0OjI4ICBidmFzc2NoZQorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oLCBzbm1wbGliL3Rvb2xzLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IEFkZGVkIHRoZSBmdW5jdGlvbiBuZXRzbm1wX2NoZWNrX2RlZmluZWRuZXNzKCksCisgICB3aGljaCBoZWxwcyB0byBmaW5kIHRoZSBjYXVzZSBvZiB1bmRlZmluZWQgdmFsdWUgZXJyb3JzIGFzCisgICByZXBvcnRlZCBieSBWYWxncmluZC4KKwogMjAxMC0xMC0xNyAxNDoyNCAgYnZhc3NjaGUKIAogICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuaDoKQEAgLTEwNjM2LDYgKzMyODg2LDEzIEBACiAgICBSZW1vdmVkIGFuIG9ic29sZXRlIGRlY2xhcmF0aW9uOiB0aGUgZnVuY3Rpb24gYWdlbnR4X2J1aWxkKCkgaGFzCiAgICBiZWVuIHJlbW92ZWQgYSBsb25nIHRpbWUgYWdvLgogCisyMDEwLTEwLTE3IDE0OjA1ICBidmFzc2NoZQorCisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgQWRkZWQgY29uZmlndXJlIHRlc3QgZm9yIHRoZSBWYWxncmluZCBoZWFkZXIgZmlsZXMuCisKIDIwMTAtMTAtMTcgMTI6MDEgIGJ2YXNzY2hlCiAKICAgICogc25tcGxpYi9zbm1wX29wZW5zc2wuYzoKQEAgLTEwNjUxLDcgKzMyOTA4LDggQEAKIAogMjAxMC0xMC0xNyAwOTozNiAgYnZhc3NjaGUKIAotICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUTFNCYXNlRG9tYWluLmgsICAgCisgICAqICBhZ2VudC9oZWxwZXJzL3NjYWxhcl9ncm91cC5jLCBhZ2VudC9oZWxwZXJzL3dhdGNoZXIuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVExTQmFzZURvbWFpbi5oLCAgIAogICAgICAgc25tcGxpYi9zbm1wX29wZW5zc2wuYywgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmM6CiAKICAgIEZpeGVkIGEgZmV3IGNvbXBpbGVyIHdhcm5pbmdzIGJ5IGluc2VydGluZyBhcHByb3ByaWF0ZSBjYXN0cy4KQEAgLTEwNjY0LDYgKzMyOTIyLDU2IEBACiAKICAgIE5FVFNOTVBfUkVNT1ZFX0NPTlNUKCktcmVsYXRlZCBjbGVhbnVwLgogCisyMDEwLTEwLTE3IDAxOjQxICBtYWdmcgorCisgICAqICBhZ2VudC9taWJncm91cC9kZWZhdWx0X21vZHVsZXMuaCwgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5oLCAgIAorICAgICAgYWdlbnQvc25tcGQuYzoKKworICAgTkVXUzogc25tcGQ6IFJlbW92ZSB1dGlsX2Z1bmNzL0V4aXQgZnJvbSB0aGUgcmVxdWlyZW1lbnQgc2V0cyBvZgorICAgdXRpbF9mdW5jcyBhbmQgZGVmYXVsdF9tb2R1bGVzLgorICAgTkVXUzogc25tcGQ6IE5ldmVyIHVzZSBFeGl0IHRvIHRlcm1pbmF0ZSB0aGUgYWdlbnQuCisKKzIwMTAtMTAtMTYgMjI6MzIgIG1hZ2ZyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2RlZmF1bHRfbW9kdWxlcy5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmgsIGFnZW50L3NubXBkLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBNYWtlIHRoZSBzZXR0aW5nIG9mIHRoZSBhcmd2cmVzdGFydCogdmFyaWFibGVzCisgICBvcHRpb25hbCBvbiBVU0lOR19VVElMX0ZVTkNTX1JFU1RBUlRfTU9EVUxFLgorICAgTkVXUzogc25tcGQ6IFJlbW92ZSB1dGlsX2Z1bmNzL3Jlc3RhcnQgZnJvbSB0aGUgcmVxdWlyZW1lbnQgc2V0cworICAgb2YgdXRpbF9mdW5jcyBhbmQgZGVmYXVsdF9tb2R1bGVzLgorICAgQ0hBTkdFUzogc25tcGQ6IEFkZCB1dGlsX2Z1bmNzL3Jlc3RhcnQgdG8gdGhlIHJlcXVpcmVtZW50IHNldCBvZgorICAgdWNkLXNubXAvdmVyc2lvbmluZm8uCisKKzIwMTAtMTAtMTYgMjI6MDUgIG1hZ2ZyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmg6CisKKyAgIENIQU5HRVM6IHNubXBkOiBFeHRlbmQgdGhlIGRvY3VtZW50YXRpb24gZm9yIGRhdGFfY2xvbmUgYW5kCisgICBkYXRhX2ZyZWUKKworMjAxMC0xMC0xNiAyMjowMyAgbWFnZnIKKworICAgKiBhZ2VudC9oZWxwZXJzL3dhdGNoZXIuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IE1ha2UgaXQgcG9zc2libGUgdG8gY29weSB3YXRjaGVkIGRhdGEgaXRlbXMKKyAgIHdpdGhvdXQgbWVtb3J5IGxlYWtzLgorCisyMDEwLTEwLTE2IDIyOjAxICBtYWdmcgorCisgICAqIGFnZW50L2hlbHBlcnMvd2F0Y2hlci5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBjbXAKKworMjAxMC0xMC0xNiAxOTo0NCAgbWFnZnIKKworICAgKiBhZ2VudC9oZWxwZXJzL3NjYWxhcl9ncm91cC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogRG8gbm90IGxlYWsgdGhlIGxpbWl0cyBvZiBzY2FsYXJfZ3JvdXAgb2JqZWN0cyBvbgorICAgc2h1dGRvd24uCisKIDIwMTAtMTAtMTYgMDg6MzcgIGJ2YXNzY2hlCiAKICAgICogIGFnZW50L2FnZW50X2hhbmRsZXIuYywgY29uZmlndXJlLCAgIApAQCAtMTA2NzEsMTAgKzMyOTc5LDI2IEBACiAKICAgIFNwZWxsaW5nIGZpeDogZHVscGljYXRlIC0+IGR1cGxpY2F0ZS4KIAorMjAxMC0xMC0xNiAwODozNCAgYnZhc3NjaGUKKworICAgKiAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwNnNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fY2FnZW50bGliLmM6CisKKyAgIEFkZGVkIG1vcmUgdGVzdCBjb2RlLgorCisyMDEwLTEwLTE2IDA4OjMzICBidmFzc2NoZQorCisgICAqICBhZ2VudC9hZ2VudF9oYW5kbGVyLmMsIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy90YWJsZS5jOgorCisgICBGb2xsb3ctdXAgZm9yIHIxOTQ2NTogaGFuZGxlIG91dC1vZi1tZW1vcnkgcHJvcGVybHkgLyByZW1vdmVkIGEKKyAgIGR1cGxpY2F0ZSBmdW5jdGlvbi4KKwogMjAxMC0xMC0xNSAxOToxNyAgYnZhc3NjaGUKIAogICAgKiAgdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9jYWdlbnRsaWJfYnVpbGQsICAgCiAgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L2NhZ2VudGxpYl9ydW4sICAgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L2NsaWJfYnVpbGQsICAgCiAgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDV0YWJsZV9kYXRhc2V0X2NhZ2VudGxpYi5jLCAgIAogICAgICAgdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA1dGFibGVfZGF0YXNldF9jbGliLmMsICAgCiAgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDZzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2NhZ2VudGxpYi5jLApAQCAtMTA2ODQsMzYgKzMzMDA4LDMyIEBACiAgICBDSEFOR0VTOiB0ZXN0aW5nOiBJbnRyb2R1Y2VkIG5ldyB0ZXN0IHR5cGUgbmV4dCB0byBjYXBwIGFuZCBjbGliOgogICAgY2FnZW50bGliLgogCisyMDEwLTEwLTE1IDE4OjU2ICBidmFzc2NoZQorCisgICAqICBhZ2VudC9hZ2VudF9oYW5kbGVyLmMsIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA2c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9jbGliLmM6CisKKyAgIE5FV1M6IHNubXBsaWI6IEFkZGVkIG5ldHNubXBfbWliX2hhbmRsZXIuZGF0YV9jbG9uZSwgYSBmdW5jdGlvbgorICAgcG9pbnRlciB0aGF0IGRlZmluZXMgaG93IHRvIGNsb25lIG5ldHNubXBfbWliX2hhbmRsZXIubXl2b2lkLgorICAgTXVzdCBiZSBkZWZpbmVkIGlmIGFuZCBvbmx5IGlmIGRhdGFfZnJlZSBpcyBzZXQuIFRoZSBmdW5jdGlvbgorICAgbmV0c25tcF9oYW5kbGVyX2R1cCgpIGRvZXMgbm93IGNsb25lIE1JQiBoYW5kbGVyIHByaXZhdGUgZGF0YSBpZgorICAgZGF0YV9jbG9uZSgpIGlzIHNldC4gUHJldmlvdXNseSBhZnRlciBkdXBsaWNhdGluZyBhIE1JQiBoYW5kbGVyCisgICBhbmQgdW5yZWdpc3RlcmluZyBvbmUgb2YgdGhlIHR3byBNSUIgaGFuZGxlcnMsIHRoZSBwcml2YXRlIGRhdGEKKyAgIHBvaW50ZXIgKG15dm9pZCkgb2YgdGhlIG90aGVyIGJlY2FtZSBhIGRhbmdsaW5nIHBvaW50ZXIuIE5vdGU6CisgICBhZGRpdGlvbiBvZiBuZXRzbm1wX21pYl9oYW5kbGVyLmRhdGFfY2xvbmUgaXMgYW4gQUJJIGNoYW5nZS4KKyAgIENIQU5HRVM6IHRlc3Rpbmc6IGFkZGVkIG1vcmUgdGVzdCBjYXNlcyB0byB0aGUgaGFuZGxlcgorICAgcmVnaXN0cmF0aW9uIHRlc3QuCisKIDIwMTAtMTAtMTUgMTg6MzIgIGJ2YXNzY2hlCiAKICAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5jOgogCiAgICBGaXhlZCBhIGNvbXBpbGVyIHdhcm5pbmcuCiAKLTIwMTAtMTAtMTUgMTI6NTQgIGJ2YXNzY2hlCi0KLSAgICogIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvY2xpYl9idWlsZCwgICAKLSAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwNXRhYmxlX2RhdGFzZXRfY2xpYi5jOgotCi0gICBDSEFOR0VTOiB0ZXN0aW5nOiBVbml0IHRlc3RzIGNhbiBub3cgaW52b2tlIGZ1bmN0aW9ucyBmcm9tCi0gICBsaWJhZ2VudC4KLSAgIENIQU5HRVM6IHRlc3Rpbmc6IEFkZGVkIHVuaXQgdGVzdCBmb3IgdGFibGVfZGF0YXNldC4KLSAgIChCYWNrcG9ydGVkIGZyb20gcjE5NDUwIGZyb20gdGhlIHRydW5rLikKLQotMjAxMC0xMC0xNSAxMjo1MyAgYnZhc3NjaGUKLQotICAgKiAgYWdlbnQvaGVscGVycy90YWJsZS5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYywgICAKLSAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jLCAgIAotICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgsICAgCi0gICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaDoKLQotICAgQ0hBTkdFUzogc25tcGxpYjogQWRkZWQgZnVuY3Rpb24gbmV0c25tcF9kZWxldGVfdGFibGVfZGF0YV9zZXQoKS4KLSAgIENIQU5HRVM6IHNubXBsaWI6IEFkZGVkIGRlY2xhcmF0aW9uIGZvciB0aGUgZnVuY3Rpb24KLSAgIG5ldHNubXBfdGFibGVfZGF0YV9kZWxldGVfdGFibGUoKSBpbiBhIHB1YmxpYyBhZ2VudCBoZWFkZXIgZmlsZS4KLSAgIENIQU5HRVM6IHNubXBsaWI6IEZpeGVkIG1lbW9yeSBsZWFrIGluCi0gICBuZXRzbm1wX3RhYmxlX2RhdGFfZGVsZXRlX3RhYmxlKCkuCi0gICAoQmFja3BvcnRlZCByMTk0NTAgYW5kIHIxOTQ1NCBmcm9tIHRydW5rLikKLQogMjAxMC0xMC0xNSAxMjozMCAgYnZhc3NjaGUKIAogICAgKiAgYWdlbnQvYWdlbnRfaGFuZGxlci5jLCAgIApAQCAtMTA3NDgsNiArMzMwNjgsMzAgQEAKICAgIENIQU5HRVM6IFdpbjMyOiBidWlsZGluZzogQnVpbGRzIG5vdyBjb3JyZWN0bHkgd2l0aCBhIDY0LWJpdAogICAgY29tcGlsZXIuCiAKKzIwMTAtMTAtMTUgMDk6NDUgIGJ2YXNzY2hlCisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBzbm1wX3NodXRkb3duKCk6IGFkZGVkIGNhbGwgdG8KKyAgIG5ldHNubXBfY2VydHNfc2h1dGRvd24oKS4KKworMjAxMC0xMC0xNSAwNjo0NSAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYzoKKworICAgRm9sbG93LXVwIGZvciByMTk0NTA6IGxldCBuZXRzbm1wX2RlbGV0ZV90YWJsZV9kYXRhX3NldCgpIGZyZWUKKyAgIGFsbCB0YWJsZV9kYXRhc2V0LXJlbGF0ZWQgbWVtb3J5LgorCisyMDEwLTEwLTE0IDIzOjE1ICBtYWdmcgorCisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2FnZW50LCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfdHJhbnNwb3J0cywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnM6CisKKyAgIENIQU5HRVM6IGJ1aWxkaW5nOiBNYWtlIGl0IHBvc3NpYmxlIHRvIHJlZ2VuZXJhdGUgdXNpbmcgYXV0b2NvbmYKKyAgIDIuNjguCisKIDIwMTAtMTAtMTQgMjM6MDEgIG1hZ2ZyCiAKICAgICogIHNubXBsaWIvc25tcF9sb2dnaW5nLmMsIHNubXBsaWIvc25tcF90cmFuc3BvcnQuYywgICAKQEAgLTEwNzU1LDEyICszMzA5OSwyNSBAQAogCiAgICBDSEFOR0VTOiBzbm1wbGliOiBCZSBjb25zdCBjb3JyZWN0IG92ZXIgY2FsbHMgdG8gc3RyKiBmdW5jdGlvbnMuCiAKLTIwMTAtMTAtMTQgMjI6NTcgIG1hZ2ZyCisyMDEwLTEwLTE0IDE1OjE5ICBidmFzc2NoZQogCi0gICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvY2xpYl9idWlsZDoKKyAgICogIGFnZW50L2hlbHBlcnMvdGFibGUuYywgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgsICAgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L2NsaWJfYnVpbGQsICAgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDV0YWJsZV9kYXRhc2V0X2NsaWIuYzoKIAotICAgQ0hBTkdFUzogdGVzdGluZzogR2VuZXJhdGUgYSBub3JtYWwgI2xpbmUgZGlyZWN0aXZlIGFzIHBlciBDOTkKLSAgIGluc3RlYWQgb2YgdGhlIGNvbXBpbGVyLXNwZWNpZmljICM8bj4tZGlyZWN0aXZlLgorICAgQ0hBTkdFUzogc25tcGxpYjogQWRkZWQgZnVuY3Rpb24gbmV0c25tcF9kZWxldGVfdGFibGVfZGF0YV9zZXQoKS4KKyAgIENIQU5HRVM6IHNubXBsaWI6IEFkZGVkIGRlY2xhcmF0aW9uIGZvciB0aGUgZnVuY3Rpb24KKyAgIG5ldHNubXBfdGFibGVfZGF0YV9kZWxldGVfdGFibGUoKSBpbiBhIHB1YmxpYyBhZ2VudCBoZWFkZXIgZmlsZS4KKyAgIENIQU5HRVM6IHNubXBsaWI6IEZpeGVkIG1lbW9yeSBsZWFrIGluCisgICBuZXRzbm1wX3RhYmxlX2RhdGFfZGVsZXRlX3RhYmxlKCkuCisgICBDSEFOR0VTOiBzbm1wbGliOiBGaXhlZCBtZW1vcnkgbGVhayB0cmlnZ2VyZWQgYnkgdW5yZWdpc3RlcmluZyBhCisgICB0YWJsZSBoYW5kbGVyLgorICAgQ0hBTkdFUzogdGVzdGluZzogVW5pdCB0ZXN0cyBjYW4gbm93IGludm9rZSBmdW5jdGlvbnMgZnJvbQorICAgbGliYWdlbnQuCisgICBDSEFOR0VTOiB0ZXN0aW5nOiBBZGRlZCB1bml0IHRlc3QgZm9yIHRhYmxlX2RhdGFzZXQuCiAKIDIwMTAtMTAtMTQgMTQ6MDUgIGJ2YXNzY2hlCiAKQEAgLTEwODIxLDEyICszMzE3OCw2MCBAQAogICAgTWFkZSBzdXJlIHRoYXQgdGhlIHZhcmlhYmxlICRTTk1QX0JBU0VESVIgaXMgYXZhaWxhYmxlIGluIHRoZQogICAgVDAwMGNvbmZpZ3VyZSB0ZXN0LgogCisyMDEwLTEwLTE0IDA2OjE5ICBtYWdmcgorCisgICAqIGNvbmZpZ3VyZSwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgUmVnZW5lcmF0ZWQKKwogMjAxMC0xMC0xNCAwNTozNiAgbmJhCiAKICAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1TZW5zb3JzLmM6CiAKICAgIFF1ZWxsIHdhcm5pbmdzCiAKKzIwMTAtMTAtMTQgMDM6NTAgIHJzdG9yeQorCisgICAqICBjb25maWd1cmUuZC9jb25maWdfb3NfbGlicywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4uaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjEwLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW43LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW44LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW45LmgsIHNubXBsaWIvc25tcF9vcGVuc3NsLmM6CisKKyAgIHRlc3QgZm9yIG9wZW5zc2wgc2hhIDIyNC8yNTYvMzg1LzUxMiBzdXBwb3J0IGluc3RlYWQgb2YKKyAgIGhhcmRjb2RpbmcKKworMjAxMC0xMC0xNCAwMzo1MCAgcnN0b3J5CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDoKKworICAgYWRkIE9VVFBVVEVOVlZBUlMgdG8gc2F2ZSBpbXBvcnRhbnQgZW52aXJvbm1lbnQgdmFyaWFibGVzOyB3aGVuCisgICBTTk1QX1ZFUkJPU0UKKyAgIGlzIHNldCwgc2F2ZSBlbnYgdmFycyBhbmQgY29tbWFuZCB0byBpbmRpdmlkdWFsIGludm9rZWQgZmlsZSBmb3IKKyAgIGVhY2ggdGVzdDsKKyAgIHNhdmUgZW52IHZhcnMgYW5kIGNvbW1hbmQgZm9yIGVhY2ggU1RBUlRQUk9HCisKKzIwMTAtMTAtMTQgMDM6NTAgIHJzdG9yeQorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX1RFU1RDT05GLnNoOgorCisgICBDSEFOR0VTOiB0ZXN0aW5nOiBhdXRvLWNyZWF0ZSB1c2VyIHNwZWNpZmllZCBTTk1QX1RNUERJUiBhbmQKKyAgIFNOTVBfVE1QX1BFUlNJU1RFTlRESVIgdG9vOyBkZWZhdWx0IFNOTVBfVE1QX1BFUlNJU1RFTkRJUiBiYXNlZAorICAgb24gU05NUF9UTVBESVIKKyAgIGZvciB1c2VyIHNwZWNpZmllZCBTTk1QX1RNUERJUgorCisyMDEwLTEwLTE0IDAzOjQ5ICByc3RvcnkKKworICAgKiAgYWNjb25maWcuaCwgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2M0LCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luMTAuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjguaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjkuaDoKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IGNoZWNrIGZvciAvZGV2L2ttZW0gaW5zdGVhZCBvZiBhc3N1bWluZyBpdAorICAgZXhpc3RzIGFuZCBoYXJkY29kaW5nIHdoZW4gaXQgaXMgbm90IHRoZXJlCisKIDIwMTAtMTAtMTQgMDM6MjggIHJzdG9yeQogCiAgICAqICBzbm1wbGliL3NubXB0c20uYywgc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmMsICAgCkBAIC0xMDg3MSw3ICszMzI3NiwxNCBAQAogCiAgICBjaGVjayBmb3IgbnVsbCBiZWZvcmUgZGVyZWYKIAotMjAxMC0xMC0xMyAxNjo1NSAgaGFyZGFrZXIKKzIwMTAtMTAtMTMgMjA6MTIgIG1hZ2ZyCisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9jbGliX2J1aWxkOgorCisgICBDSEFOR0VTOiB0ZXN0aW5nOiBHZW5lcmF0ZSBhIG5vcm1hbCAjbGluZSBkaXJlY3RpdmUgYXMgcGVyIEM5OQorICAgaW5zdGVhZCBvZiB0aGUgY29tcGlsZXItc3BlY2lmaWMgIzxuPi1kaXJlY3RpdmUuCisKKzIwMTAtMTAtMTMgMTY6NTMgIGhhcmRha2VyCiAKICAgICogZGlzdC9hdXRvY29uZi12ZXJzaW9uLCB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMDBjb25maWd1cmU6CiAKQEAgLTEwODk1LDggKzMzMzA3LDkgQEAKIAogMjAxMC0xMC0xMyAxMTo1MyAgYnZhc3NjaGUKIAotICAgKiAgd2luMzIvbGlic25tcF9kbGwvTWFrZWZpbGUuaW4sIHdpbjMyL3NubXBkL01ha2VmaWxlLmluLCAgIAotICAgICAgd2luMzIvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4sIHdpbjMyL3NubXB0cmFwZC9NYWtlZmlsZS5pbjoKKyAgICogIHdpbjMyL01ha2VmaWxlLWFwcHMuaW4sIHdpbjMyL2xpYnNubXBfZGxsL01ha2VmaWxlLmluLCAgIAorICAgICAgd2luMzIvc25tcGQvTWFrZWZpbGUuaW4sIHdpbjMyL3NubXBuZXRzdGF0L01ha2VmaWxlLmluLCAgIAorICAgICAgd2luMzIvc25tcHRyYXBkL01ha2VmaWxlLmluOgogCiAgICBDSEFOR0VTOiBXaW4zMjogYnVpbGRpbmc6IGJhdGNoIGJ1aWxkIHdpdGggT3BlblNTTCBlbmFibGVkIGFuZAogICAgd2l0aCByZWNlbnQgT3BlblNTTCBkZXZlbG9wbWVudCBmaWxlcyB3b3JrcyBhZ2Fpbi4KQEAgLTExMDU1LDEyICszMzQ2OCw2IEBACiAgICBzdXBwb3J0IHRoZSAtRSBmbGFnIHRvIGdyZXAsIHVzZSBhdXRvY29uZiB0byBmaW5kIHRoZSByaWdodCBlZ3JlcAogICAgYXQgYWxsIHRpbWVzLgogCi0yMDEwLTEwLTExIDE0OjExICBoYXJkYWtlcgotCi0gICAqIC46Ci0KLSAgIGNyZWF0ZSBwYXRjaCBicmFuY2ggY29weQotCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIENoYW5nZXM6IFY1LjYuUkMzIC0+IFY1LjYKQEAgLTI0MjgxLDcgKzQ2Njg4LDcgQEAKIAogICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfY29tbW9uLmM6CiAKLSAgIENIQU5HRVM6IHNubXBkOiBmcm9tICJNYXJjdXMgUsO8Y2tlcnQiOiBmaXggcG9zc2libGUgY3Jhc2ggd2hlbgorICAgQ0hBTkdFUzogc25tcGQ6IGZyb20gIk1hcmN1cyBS4KWG4KSF4KSG4KWG4KSFnmNrZXJ0IjogZml4IHBvc3NpYmxlIGNyYXNoIHdoZW4KICAgIDY0LWJpdCBjb3VudGVycyBpbiBpcFN5c3RlbVN0YXRzVGFibGUgZ2V0IGJpZ2dlciB0aGFuIDJeMzIKIAogMjAwOS0wOC0wMyAxOToyNyAgbWFnZnIKQEAgLTM3ODc0LDcgKzYwMjgxLDcgQEAKIAogICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfY29tbW9uLmM6CiAKLSAgIENIQU5HRVM6IHNubXBkOiBmcm9tICJNYXJjdXMgUsO8Y2tlcnQiOiBmaXggcG9zc2libGUgY3Jhc2ggd2hlbgorICAgQ0hBTkdFUzogc25tcGQ6IGZyb20gIk1hcmN1cyBS4KWG4KSF4KSG4KWG4KSFnmNrZXJ0IjogZml4IHBvc3NpYmxlIGNyYXNoIHdoZW4KICAgIDY0LWJpdCBjb3VudGVycyBpbiBpcFN5c3RlbVN0YXRzVGFibGUgZ2V0IGJpZ2dlciB0aGFuIDJeMzIKIAogMjAwOS0wOC0wMyAxOToyNyAgbWFnZnIKQEAgLTQwMzM0LDE0ICs2Mjc0MSwxNCBAQAogICAgKiBzbm1wbGliL3NubXBVRFBEb21haW4uYzoKIAogICAgRml4IHNyYy9kc3QgY29uZnVzaW9uCi0gICBQYXRjaCBwcm92aWRlZCBieSBLcnp5c3p0b2YgT2zEmWR6a2kKKyAgIFBhdGNoIHByb3ZpZGVkIGJ5IEtyenlzenRvZiBPbOClhuCkheCkh5lkemtpCiAKIDIwMDktMDEtMjggMDk6MjkgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmM6CiAKICAgIENIQU5HRVM6IEZpeCB0d28gYnVncyB3aXRoIHNtdXggcGFzc3dvcmQgc3VwcG9ydC4KLSAgIFBhdGNoIHN1cHBsaWVkIGJ5IEtyenlzenRvZiBPbMSZZHpraQorICAgUGF0Y2ggc3VwcGxpZWQgYnkgS3J6eXN6dG9mIE9s4KWG4KSF4KSHmWR6a2kKIAogMjAwOS0wMS0yMyAxNDo1MyAganNhZnJhbmVrCiAKQEAgLTU0MjU0LDcgKzc2NjYxLDcgQEAKIAogICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmM6CiAKLSAgIEhhbmRsZSBmdWxsLWxlbmd0aCBJUHY2IGFkZHJlc3Nlcy4gIEZpeCBzdXBwbGllZCBieSBSYWRlayBWb2vDoWwKKyAgIEhhbmRsZSBmdWxsLWxlbmd0aCBJUHY2IGFkZHJlc3Nlcy4gIEZpeCBzdXBwbGllZCBieSBSYWRlayBWb2vgpYbgpIXgpIbgpYbgpIWBbAogCiAyMDA2LTAxLTMwIDAxOjUyICBkdHMxMgogCkBAIC01NDMwMSw3ICs3NjcwOCw3IEBACiAsIHNubXBsaWIvc25tcF9hcGkuYywgcGVybC9TTk1QL1NOTVAucG06CiAKICAgIEhhbmRsZSBub24taW5jcmVhc2luZyBPSURzIGR1cmluZyBhIChwZXJsKSBidWxrd2Fsay4KLSAgIFBhdGNoICMxMzY0NjUwIGZyb20gT2xlIEJqw7hybiBIZXNzZW4KKyAgIFBhdGNoICMxMzY0NjUwIGZyb20gT2xlIEJq4KWG4KSF4KSG4KWG4KSFmnJuIEhlc3NlbgogCiAyMDA2LTAxLTI3IDAzOjA3ICBkdHMxMgogCkBAIC03MDA0MCw3ICs5MjQ0Nyw3IEBACiAKICAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jOgogCi0gICBmaXggZmxvYXQgY2FsYyBpbiB2YXJfZXh0ZW5zaWJsZV9kaXNrIHBlciBIYXJhbGQgU3RyYd9iZXJnZXIgPGhzQHN5c2xvZy5hdD4KKyAgIGZpeCBmbG9hdCBjYWxjIGluIHZhcl9leHRlbnNpYmxlX2Rpc2sgcGVyIEhhcmFsZCBTdHJh4KWG4KSGg2JlcmdlciA8aHNAc3lzbG9nLmF0PgogCiAyMDA0LTA4LTMxIDE0OjAyICBoYXJkYWtlcgogCkBAIC03MjYyNyw3ICs5NTAzNCw3IEBACiAgICAqIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlOgogCiAgICBGaXggaGFuZGxpbmcgb2YgLS1lbmFibGUtbG9jYWwtc211eCBvcHRpb24KLSAgIChQYXRjaCAjOTQ5ODA4IGZyb20gRXJpayDEbmdn5XJkKQorICAgKFBhdGNoICM5NDk4MDggZnJvbSBFcmlrIOClhuCkheCkh25nZ+ClhuCkhotyZCkKIAogMjAwNC0wNi0xOCAwNjo0NiAgZHRzMTIKIApAQCAtMTAzNTkzLDcgKzEyNjAwMCw3IEBACiAgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvOiBocl9zd3J1bi5jIChWNC0yLXBhdGNoZXMuNSksIGhyX3N3cnVuLmMKIDoKIAotICAgRml4IExpbnV4IGZpbGUgZGVzY3JpcHRvciBsZWFrIChyZXBvcnRlZCBieSBPbGl2ZXIgRuRuZ2VyKQorICAgRml4IExpbnV4IGZpbGUgZGVzY3JpcHRvciBsZWFrIChyZXBvcnRlZCBieSBPbGl2ZXIgRuClhuCkhopuZ2VyKQogICAgCiAyMDAxLTAzLTE0IDA1OjIyICBqYnBuCiAKQEAgLTEwODExOCw3ICsxMzA1MjUsNyBAQAogCiAgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeS5jOgogCi0gICAtIChtZW1vcnkuYyk6IFBhdGNoIGZyb20gUmFnbmFyIEtq+HJzdGFkOgorICAgLSAobWVtb3J5LmMpOiBQYXRjaCBmcm9tIFJhZ25hciBLauClhuCkhuCkkHJzdGFkOgogICAgICAtIGZpeGVkIGxpbnV4IHByb2JsZW06IHdyb25nIHBhcmFtcyBnZXR0aW5nIHJldHVybmVkLgogICAgCiAyMDAwLTA1LTI1IDA1OjM4ICBtc2xpZmNhawpAQCAtMTA5ODk4LDcgKzEzMjMwNSw3IEBACiAKICAgIC0gKGNvbmZpZ3VyZSogdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmMpOgogICAgICAtIFByb3ZpZGUgbWlzc2luZyAnZ2V0cGFnZXNpemUnIHJvdXRpbmUgZm9yIFNvbGFyaXMgMi40Ci0gICAgICAgKFRoYW5rcyB0byBSYWduYXIgS2r4cnN0YWQpCisgICAgICAgKFRoYW5rcyB0byBSYWduYXIgS2rgpYbgpIbgpJByc3RhZCkKICAgIAogMjAwMC0wMi0xNiAyMDoxNyAgbXNsaWZjYWsKIApAQCAtMTE3MjI2LDcgKzEzOTYzMyw3IEBACiAgICAgIGxvYWRhdmUuYywgbWVtb3J5X3NvbGFyaXMyLmMsIHBhc3MuYywgcGFzc19wZXJzaXN0LmMsIHByb2MuYywKICAgICAgdmVyc2lvbmluZm8uYywgYWxhcm0uYywgZXZlbnQuYywgTWFrZWZpbGUuaW4sIHBhcnNlLmMsIHNubXAuYywKICAgICAgc25tcF9kZWJ1Zy5jLCBzbm1wX2xvZ2dpbmcuYywgc25tcF9sb2dnaW5nLmgpOiBQYXRjaCBmcm9tIFJhZ25hcgotICAgICBLavhyc3RhZDoKKyAgICAgS2rgpYbgpIbgpJByc3RhZDoKICAgICAgLSBkbyBmaWxlLCBzdGRlcnIsIGFuZCBzeXNsb2cgc3VwcG9ydC4KICAgIAogMTk5OS0wNy0xNSAwODo0NSAgaGFyZGFrZXIKQEAgLTExNzM2OSw3ICsxMzk3NzYsNyBAQAogCiAgICAqIGFnZW50L3NubXBkLmM6CiAKLSAgIC0gKHNubXBkLmMpOiBQYXRjaCBmcm9tIFJhZ25hciBLavhyc3RhZDoKKyAgIC0gKHNubXBkLmMpOiBQYXRjaCBmcm9tIFJhZ25hciBLauClhuCkhuCkkHJzdGFkOgogICAgICAtIEFkZCBvcHRpb25zIGZvciBzd2l0Y2hpbmcgdG8gYSBnaXZlbiB1aWQgYW5kIGdpZC4KICAgIAogMTk5OS0wNy0wOCAxNToxNiAgaGFyZGFrZXIKQEAgLTEzNDEzOCw3ICsxNTY1NDUsNyBAQAogCiAgICAqIHNubXBsaWIvbWliLmM6CiAKLSAgIEZpeCBhIEMgcHJlY2VkZW5jZSBib3RjaC11cCwgdGhhbmtzIHRvIEZhYnLtY2lvIExhcyBDYXNhcyA8RmFicmljaW9AYXRhbi5jb20uYnI+CisgICBGaXggYSBDIHByZWNlZGVuY2UgYm90Y2gtdXAsIHRoYW5rcyB0byBGYWJy4KWrgIGMY2lvIExhcyBDYXNhcyA8RmFicmljaW9AYXRhbi5jb20uYnI+CiAgICAKIDIwMDMtMDItMjYgMTQ6MTQgIG5iYQogCkBAIC0xNTA5MjEsNyArMTczMzI4LDcgQEAKIAogICAgKiBhZ2VudC9taWJncm91cC9ob3N0LzogaHJfc3dydW4uYyAoVjQtMi1wYXRjaGVzLjUpLCBocl9zd3J1bi5jOgogCi0gICBGaXggTGludXggZmlsZSBkZXNjcmlwdG9yIGxlYWsgKHJlcG9ydGVkIGJ5IE9saXZlciBG5G5nZXIpCisgICBGaXggTGludXggZmlsZSBkZXNjcmlwdG9yIGxlYWsgKHJlcG9ydGVkIGJ5IE9saXZlciBG4KWG4KSGim5nZXIpCiAgICAKIDIwMDEtMDMtMTQgMDU6MjIgIGpicG4KIApAQCAtMTU1MTY2LDcgKzE3NzU3Myw3IEBACiAKICAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOgogCi0gICBGaXggTGludXggZmlsZSBkZXNjcmlwdG9yIGxlYWsgKHJlcG9ydGVkIGJ5IE9saXZlciBG5G5nZXIpCisgICBGaXggTGludXggZmlsZSBkZXNjcmlwdG9yIGxlYWsgKHJlcG9ydGVkIGJ5IE9saXZlciBG4KWG4KSGim5nZXIpCiAgICAKIDIwMDEtMDMtMTMgMTM6MjAgIGhhcmRha2VyCiAKQEAgLTE1ODQxMiw3ICsxODA4MTksNyBAQAogCQogMjAwMC0wNS0yNSAxMDowNyAgaGFyZGFrZXIKIAotCS0gKG1lbW9yeS5jKTogUGF0Y2ggZnJvbSBSYWduYXIgS2r4cnN0YWQ6CisJLSAobWVtb3J5LmMpOiBQYXRjaCBmcm9tIFJhZ25hciBLauClhuCkhuCkkHJzdGFkOgogCSAgLSBmaXhlZCBsaW51eCBwcm9ibGVtOiB3cm9uZyBwYXJhbXMgZ2V0dGluZyByZXR1cm5lZC4KIAkKIDIwMDAtMDUtMjUgMDU6MzggIG1zbGlmY2FrCkBAIC0xNTk2MDEsNyArMTgyMDA4LDcgQEAKIAogCS0gKGNvbmZpZ3VyZSogdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmMpOgogCSAgLSBQcm92aWRlIG1pc3NpbmcgJ2dldHBhZ2VzaXplJyByb3V0aW5lIGZvciBTb2xhcmlzIDIuNAotCSAgICAoVGhhbmtzIHRvIFJhZ25hciBLavhyc3RhZCkKKwkgICAgKFRoYW5rcyB0byBSYWduYXIgS2rgpYbgpIbgpJByc3RhZCkKIAkKIDIwMDAtMDItMTYgMjA6MTcgIG1zbGlmY2FrCiAKQEAgLTE2NDkzNSw3ICsxODczNDIsNyBAQAogICAgIC0gKHNubXBkZWx0YS5jLCBpbnQ2NC5jLCBpbnQ2NC5oKTogbWluaW1hbCBjNjQgc3VwcG9ydCBmb3Igc25tcGRlbHRhLiBVbnRlc3RlZC4KIAogaGFyZGFrZXIgIDggSnVsIDk5IDE2OjAyOjU4Ci0gICAgLSAoc25tcGQuYyk6IFBhdGNoIGZyb20gUmFnbmFyIEtq+HJzdGFkOgorICAgIC0gKHNubXBkLmMpOiBQYXRjaCBmcm9tIFJhZ25hciBLauClhuCkhuCkkHJzdGFkOgogICAgICAgLSBBZGQgb3B0aW9ucyBmb3Igc3dpdGNoaW5nIHRvIGEgZ2l2ZW4gdWlkIGFuZCBnaWQuCiAKIGRhdmVzICA5IEp1bCA5OSAwMTo0OTo0OQpAQCAtMTY0OTgyLDcgKzE4NzM4OSw3IEBACiAgICAgICBsb2FkYXZlLmMsIG1lbW9yeV9zb2xhcmlzMi5jLCBwYXNzLmMsIHBhc3NfcGVyc2lzdC5jLCBwcm9jLmMsCiAgICAgICB2ZXJzaW9uaW5mby5jLCBhbGFybS5jLCBldmVudC5jLCBNYWtlZmlsZS5pbiwgcGFyc2UuYywgc25tcC5jLAogICAgICAgc25tcF9kZWJ1Zy5jLCBzbm1wX2xvZ2dpbmcuYywgc25tcF9sb2dnaW5nLmgpOiBQYXRjaCBmcm9tIFJhZ25hcgotICAgICAgS2r4cnN0YWQ6CisgICAgICBLauClhuCkhuCkkHJzdGFkOgogICAgICAgLSBkbyBmaWxlLCBzdGRlcnIsIGFuZCBzeXNsb2cgc3VwcG9ydC4KIAogaGFyZGFrZXIgMjAgSnVsIDk5IDE3OjA2OjUzCmRpZmYgLS1naXQgYS9GQVEgYi9GQVEKaW5kZXggYTJiZDY4YS4uZDI1OTRjZSAxMDA2NDQKLS0tIGEvRkFRCisrKyBiL0ZBUQpAQCAtMSw3ICsxLDcgQEAKICAgICAgIEZyZXF1ZW50bHkgQXNrZWQgUXVlc3Rpb25zIChGQVEpIGZvciB0aGUgVUNEL05ldC1TTk1QIHBhY2thZ2UKICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAkJICAgICAgIEZBUSBBdXRob3I6IERhdmUgU2hpZWxkCi0JCQlOZXQtU05NUCBWZXJzaW9uOiA1LjYuMgorCQkJTmV0LVNOTVAgVmVyc2lvbjogNS43LjIKIAkgICAgTmV0LVNOTVAvVUNELVNOTVAgUHJvamVjdCBMZWFkZXI6IFdlcyBIYXJkYWtlcgogCSAgICAgRW1haWw6IG5ldC1zbm1wLWNvZGVyc0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKIApAQCAtMTMxNCw3ICsxMzE0LDcgQEAKICAgY292ZXJlZCBpbiB0aGUgQUdFTlQgYW5kIENPRElORyBzZWN0aW9ucy4KIAogICBZb3Ugc2hvdWxkIGFsc28gcmVhZCB0aGUgc25tcHRyYXAgdHV0b3JpYWwgYXQKLQlodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy90dXRvcmlhbC01L2NvbW1hbmRzL3NubXB0cmFwLmh0bWwKKyAgICAgICAgaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvd2lraS9pbmRleC5waHAvVFVUOnNubXB0cmFwCiAgIHdoaWNoIHdpbGwgaGVscCB5b3UgdW5kZXJzdGFuZCBldmVyeXRoaW5nIHlvdSBuZWVkIHRvIGtub3cgYWJvdXQgdHJhcHMuCiAKIApAQCAtMTM1MSw3ICsxMzUxLDcgQEAKICAgICAgICAgZm9yd2FyZCBkZWZhdWx0ICAgICAgICAgICAgICAgICAgMTAuMC4wLjIKIAogICBUaGVyZSdzIGEgdHV0b3JpYWwgd2l0aCBtb3JlIGRldGFpbHMgb24gdGhlIHdlYiBzaXRlIGF0Ci0JaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvdHV0b3JpYWwtNS9jb21tYW5kcy9zbm1wdHJhcC5odG1sCisgICAgICAgIGh0dHA6Ly93d3cubmV0LXNubXAub3JnL3dpa2kvaW5kZXgucGhwL1RVVDpzbm1wdHJhcAogCiAKIApkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgppbmRleCBjYmNmOGY3Li43ZGNjZjI0IDEwMDY0NAotLS0gYS9NYWtlZmlsZS5pbgorKysgYi9NYWtlZmlsZS5pbgpAQCAtNyw2ICs3LDcgQEAKIFZQQVRICQk9IEBzcmNkaXJACiAKIFNVQkRJUlMJCT0gc25tcGxpYiBATUFJTlNVQlNACitGVFNVQkRJUlMJPSBARlRNQUlOU1VCU0Agc25tcGxpYgogVEVTVERJUlMJPSB0ZXN0aW5nCiAKIENQUAkJPSBAQ1BQQCAJCQkJCSAgICAgICAgXApAQCAtMTQsNyArMTUsNyBAQAogCQktRERPTlRfSU5DX1NUUlVDVFMgLURCSU5ESVI9JChiaW5kaXIpIAkJICAgICAgICBcCiAJCSQoRVhUUkFDUFBGTEFHUykKIAotSU5TVEFMTEhFQURFUlM9dmVyc2lvbi5oCitJTlNUQUxMSEVBREVSUz12ZXJzaW9uLmggbmV0LXNubXAtZmVhdHVyZXMuaAogSU5DTFVERVNVQkRJUj1zeXN0ZW0KIElOQ0xVREVTVUJESVJIRUFERVJTPSBhaXguaCBic2QuaCBic2RpMy5oIGJzZGk0LmggYnNkaS5oIGN5Z3dpbi5oIFwKIAlkYXJ3aW4uaCBkYXJ3aW43LmggZGFyd2luOC5oIGRhcndpbjkuaCBkYXJ3aW4xMC5oIGRyYWdvbmZseS5oIGR5bml4LmggXApAQCAtMjgsNiArMjksNyBAQAogSU5DTFVERVNVQkRJUjI9bWFjaGluZQogSU5DTFVERVNVQkRJUkhFQURFUlMyPWdlbmVyaWMuaAogSU5TVEFMTEJVSUxUSEVBREVSUz1pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCitJTlNUQUxMQlVJTFRJTkNMVURFSEVBREVSUz1ARkVBVFVSRUhFQURFUlNACiBJTlNUQUxMQklOU0NSSVBUUz1uZXQtc25tcC1jb25maWcgbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIKIElOU1RBTExVQ0RIRUFERVJTPXVjZC1zbm1wLWNvbmZpZy5oIHZlcnNpb24uaCBtaWJfbW9kdWxlX2NvbmZpZy5oCiAKQEAgLTQ0LDEzICs0NiwyMCBAQAogIyBwZXJsIHNwZWNpZmljCiAjCiAjIHllcywgb3JkZXIgbWF0dGVycyBoZXJlLiAgZGVmYXVsdF9zdG9yZSBtdXN0IG9jY3VyIGJlZm9yZSBhbnl0aGluZyBlbHNlCi1QRVJMTU9EVUxFUz1kZWZhdWx0X3N0b3JlIFNOTVAgQVNOIE9JRCBhZ2VudAorUEVSTE1PRFVMRVM9ZGVmYXVsdF9zdG9yZSBTTk1QIEFTTiBPSUQgYWdlbnQgVHJhcFJlY2VpdmVyCitQRVJMTU9EVUxFRlRTPXBlcmwvZGVmYXVsdF9zdG9yZS9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuZnQgXAorCXBlcmwvU05NUC9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuZnQgXAorCXBlcmwvQVNOL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5mdCBcCisJcGVybC9PSUQvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmZ0IFwKKwlwZXJsL2FnZW50L25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5mdCBcCisJcGVybC9UcmFwUmVjZWl2ZXIvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmZ0CiBQRVJMQVJHUz1AUEVSTEFSR1NACiAKICMKICMgcHl0aG9uIHNwZWNpZmljCiAjCiBQWVRIT05BUkdTPUBQWVRIT05BUkdTQAorUFlUSE9OTU9EVUxFRlRTPXB5dGhvbi9uZXRzbm1wL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5mdAogCiAjCiAjIGxpYnRvb2wKQEAgLTU4LDkgKzY3LDE0IEBACiBMSUJUT09MX0RFUFMgPSBATElCVE9PTF9ERVBTQAogCiAjCisjIGZlYXR1cmUgY2hlY2tzIGZvciBvcHRpb25hbCBjb21wb25lbnRzCisjCitGVE9USEVSVEFSR1M9QFBFUkxGRUFUVVJFU0AgQFBZVEhPTkZFQVRVUkVTQAorCisjCiAjIHRhcmdldHMKICMKLWFsbDogICAgc2Vkc2NyaXB0IEVYQU1QTEUuY29uZiBzdGFuZGFyZGFsbCBuZXQtc25tcC1jb25maWcteCBuZXQtc25tcC1jcmVhdGUtdjMtdXNlciBAUEVSTFRBUkdTQCBAUFlUSE9OVEFSR1NACithbGw6ICAgIHNlZHNjcmlwdCBFWEFNUExFLmNvbmYgIEBGRUFUVVJFVEFSR1NAIHN0YW5kYXJkYWxsIG5ldC1zbm1wLWNvbmZpZy14IG5ldC1zbm1wLWNyZWF0ZS12My11c2VyIEBQRVJMVEFSR1NAIEBQWVRIT05UQVJHU0AKIAogc3RhcnQtZmxhZzoKIAlAdG91Y2ggYnVpbGQtaW4tcHJvZ3Jlc3MtZmxhZwpAQCAtNzIsMjMgKzg2LDIzIEBACiAJJChTSEVMTCkgLi9jb25maWcuc3RhdHVzIC0tcmVjaGVjawogCiAKLXNubXBsaWI6Citzbm1wbGliOiBARkVBVFVSRVRBUkdTQAogCUAoY2Qgc25tcGxpYjsgJChNQUtFKSApCiAKLWFnZW50OgorYWdlbnQ6IEBGRUFUVVJFVEFSR1NACiAJQChjZCBzbm1wbGliOyAkKE1BS0UpICkKIAlAKGNkIGFnZW50OyAkKE1BS0UpICkKIAotYXBwczoKK2FwcHM6IEBGRUFUVVJFVEFSR1NACiAJQChjZCBzbm1wbGliOyAkKE1BS0UpICkKIAlAKGNkIGFnZW50OyAkKE1BS0UpIGxpYnMpCiAJQChjZCBhcHBzOyAkKE1BS0UpICkKIAotc25tcGdldCBzbm1wYnVsa2dldCBzbm1wd2FsayBzbm1wYnVsa3dhbGsgc25tcHRyYW5zbGF0ZSBzbm1wc3RhdHVzIHNubXBkZWx0YSBzbm1wdGFibGUgc25tcHRlc3Qgc25tcHNldCBzbm1wdXNtIHNubXB2YWNtIHNubXBnZXRuZXh0IGVuY29kZV9rZXljaGFuZ2Ugc25tcGRmIHNubXB0cmFwIHNubXB0bHM6Citzbm1wZ2V0IHNubXBidWxrZ2V0IHNubXB3YWxrIHNubXBidWxrd2FsayBzbm1wdHJhbnNsYXRlIHNubXBzdGF0dXMgc25tcGRlbHRhIHNubXB0YWJsZSBzbm1wdGVzdCBzbm1wc2V0IHNubXB1c20gc25tcHZhY20gc25tcGdldG5leHQgZW5jb2RlX2tleWNoYW5nZSBzbm1wZGYgc25tcHRyYXAgc25tcHRsczogQEZFQVRVUkVUQVJHU0AKIAlAKGNkIHNubXBsaWI7ICQoTUFLRSkgKQogCUAoY2QgYXBwczsgJChNQUtFKSAkQCApCiAKLWFnZW50eHRyYXAgc25tcHRyYXBkOgorYWdlbnR4dHJhcCBzbm1wdHJhcGQ6IEBGRUFUVVJFVEFSR1NACiAJQChjZCBzbm1wbGliOyAkKE1BS0UpICkKIAlAKGNkIGFnZW50OyAkKE1BS0UpIGxpYnMpCiAJQChjZCBhcHBzOyAkKE1BS0UpICRAICkKQEAgLTE0OSw3ICsxNjMsNyBAQAogZGlzdGFsbDogJHtzcmNkaXJ9L2NvbmZpZ3VyZSAke3NyY2Rpcn0vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCAKIAogT1RIRVJDTEVBTlRBUkdFVFM9RVhBTVBMRS5jb25mIHNlZHNjcmlwdAotT1RIRVJDTEVBTlRPRE9TPXBlcmxjbGVhbiBAUFlUSE9OQ0xFQU5UQVJHU0AKK09USEVSQ0xFQU5UT0RPUz1wZXJsY2xlYW4gQFBZVEhPTkNMRUFOVEFSR1NAIGNsZWFuZmVhdHVyZXMgcGVybGNsZWFuZmVhdHVyZXMgcHl0aG9uY2xlYW5mZWF0dXJlcwogCiAjCiAjIHBlcmwgc3BlY2lmaWMgYnVpbGQgcnVsZXMKQEAgLTE5MCwxMyArMjA0LDIxIEBACiAJQGlmIHRlc3QgLWYgcGVybC9NYWtlZmlsZTsgdGhlbiBcCiAJICAgKCBjZCBwZXJsIDsgJChNQUtFKSBjbGVhbiApIDsgXAogCWZpCisKIHBlcmxyZWFsY2xlYW46CiAJQGlmIHRlc3QgLWYgcGVybC9NYWtlZmlsZTsgdGhlbiBcCiAJICAgKCBjZCBwZXJsIDsgJChNQUtFKSByZWFsY2xlYW4gKSA7IFwKIAlmaQogCisuaC5mdDoKKwkkKEZFQVRVUkVDSEVDSykgLS1mZWF0dXJlLWdsb2JhbCAkKHRvcF9idWlsZGRpcikvaW5jbHVkZS9uZXQtc25tcC9mZWF0dXJlLWRldGFpbHMuaCBgZGlybmFtZSAkPGAgJDwgJEAgJChDQykgLUkgJCh0b3BfYnVpbGRkaXIpL2luY2x1ZGUgLUkgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlIC1FICQoQ1BQRkxBR1MpICQoQ0ZMQUdTKSAtYwogCi0jCitwZXJsZmVhdHVyZXM6ICQoUEVSTE1PRFVMRUZUUykKKworcGVybGNsZWFuZmVhdHVyZXM6CisJJChSTSkgJChQRVJMTU9EVUxFRlRTKQorCisKICMgcHl0aG9uIHNwZWNpZmljIGJ1aWxkIHJ1bGVzCiAjCiBQWU1BS0U9JChQWVRIT04pIHNldHVwLnB5ICQoUFlUSE9OQVJHUykKQEAgLTIyNCw2ICsyNDYsMTAgQEAKIHB5dGhvbmNsZWFuOgogCUAoZGlyPWBwd2RgOyBjZCBweXRob247ICQoUFlNQUtFKSBjbGVhbiAtLWJhc2VkaXI9JCRkaXIpCiAKK3B5dGhvbmZlYXR1cmVzOiAkKFBZVEhPTk1PRFVMRUZUUykKKworcHl0aG9uY2xlYW5mZWF0dXJlczoKKwkkKFJNKSAkKFBZVEhPTk1PRFVMRUZUUykKIAogIwogIyBtYWtlIGRpc3RjbGVhbiBjb21wbGV0ZWx5IHJlbW92ZXMgYWxsIHRyYWNlcyBvZiBidWlsZGluZyBpbmNsdWRpbmcKQEAgLTI0OCw3ICsyNzQsOCBAQAogCXJtIC1mIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAkJXAogCQlpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAkJXAogCQlpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmggXAotCQlzbm1wbGliL3NubXBzbV9pbml0LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCQlpbmNsdWRlL25ldC1zbm1wL2ZlYXR1cmUtZGV0YWlscy5oICAgICAgICAgICAgICAgICAgXAorCQlzbm1wbGliL3NubXBzbV9pbml0Lmggc25tcGxpYi9zbm1wc21fc2h1dGRvd24uaCAgICAgXAogICAgICAgICAgICAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wX3RyYW5zcG9ydF9pbml0cy5oICAgICAgICAgICBcCiAJCWFnZW50L21pYmdyb3VwL2FnZW50X21vZHVsZV9pbmNsdWRlcy5oIAlcCiAJCWFnZW50L21pYmdyb3VwL2FnZW50X21vZHVsZV9pbml0cy5oIAlcCkBAIC0yNTcsNyArMjg0LDggQEAKIAkJYWdlbnQvbWliZ3JvdXAvbWliX21vZHVsZV9pbmNsdWRlcy5oIAlcCiAJCWFnZW50L21pYmdyb3VwL21pYl9tb2R1bGVfaW5pdHMuaCAJXAogCQlhZ2VudC9taWJncm91cC9taWJfbW9kdWxlX3NodXRkb3duLmggCVwKLQkJYWdlbnQvbWliZ3JvdXAvbWliX21vZHVsZV9kb3RfY29uZi5oCisJCWFnZW50L21pYmdyb3VwL21pYl9tb2R1bGVfZG90X2NvbmYuaCAgICBcCisJCWxvY2FsL3NubXBjb25mCiAJcm0gLXJmIG1rCiAJcm0gLWYgKi5jb3JlCiAKQEAgLTQyOSwzICs0NTcsNCBAQAogCXNubXBnZXQgc25tcGJ1bGtnZXQgc25tcHdhbGsgc25tcGJ1bGt3YWxrIHNubXB0cmFuc2xhdGUgc25tcHN0YXR1cyBcCiAJc25tcGRlbHRhIHNubXB0YWJsZSBzbm1wdGVzdCBzbm1wc2V0IHNubXB1c20gc25tcHZhY20gc25tcGdldG5leHQgXAogCWVuY29kZV9rZXljaGFuZ2Ugc25tcGRmIHNubXB0cmFwIHNubXB0cmFwZAorLlBIT05ZOiBwZXJsZmVhdHVyZXMgcHl0aG9uZmVhdHVyZXMKZGlmZiAtLWdpdCBhL01ha2VmaWxlLnJ1bGVzIGIvTWFrZWZpbGUucnVsZXMKaW5kZXggNjU2ODdlZi4uOWU5ZTkwMCAxMDA2NDQKLS0tIGEvTWFrZWZpbGUucnVsZXMKKysrIGIvTWFrZWZpbGUucnVsZXMKQEAgLTE0LDYgKzE0LDYyIEBACiAKIG9ianM6ICR7T0JKU30gJHtMT0JKU30KIAorIyBmZWF0dXJlcyByZXF1aXJlIHRoYXQgc3ViZGlycyBiZSBtYWRlICpmaXJzdCogdG8gZ2V0IGRlcGVuZGVuY3kKKyMgY29sbGVjdGlvbiBwcm9jZXNzZWQgaW4gdGhlIHJpZ2h0IG9yZGVyCisuUEhPTlk6IGZlYXR1cmVzIGZ0b2JqcyBmdHN1YmRpcnMKK2ZlYXR1cmVzOiAkKEZUT1RIRVJUQVJHUykgZnRzdWJkaXJzIGZ0b2JqcyAkKEZFQVRVUkVGSUxFKQorZnRvYmpzOiAkKEZUT0JKUykKKyQoRkVBVFVSRUZJTEUpOiAkKEZUT0JKUykgJCh0b3BfYnVpbGRkaXIpL2luY2x1ZGUvbmV0LXNubXAvZmVhdHVyZS1kZXRhaWxzLmgKKwljYXQgJChGVE9CSlMpID4gJChGRUFUVVJFRklMRSkuaW4KKwkkKEZFQVRVUkVQUk9DRVNTKSAkKEZFQVRVUkVGSUxFKSAkKHRvcF9idWlsZGRpcikvaW5jbHVkZS9uZXQtc25tcC9mZWF0dXJlLWRldGFpbHMuaCBARkVBVFVSRV9SRU1PVkVfRkxBR1NAIEBGRUFUVVJFX0FERF9GTEFHU0AKK2Z0c3ViZGlyczoKKwlAaWYgdGVzdCAiJChGVFNVQkRJUlMpIiAhPSAiIjsgdGhlbiBcCisJICAgIFNVQkRJUlM9IiQoRlRTVUJESVJTKSIgOyAgICAgICAgXAorICAgICAgICBlbHNlIAkJCSAJICAgIFwKKyAgICAgICAgICAgIFNVQkRJUlM9IiQoU1VCRElSUykiIDsgICAgICAgICAgXAorICAgICAgICBmaSA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJaWYgdGVzdCAiJCRTVUJESVJTIiAhPSAiIjsgdGhlbiBcCisJCWl0PSIkJFNVQkRJUlMiIDsgXAorCQlmb3IgaSBpbiAkJGl0IDsgZG8gXAorCQkJZWNobyAibWFraW5nIGZlYXR1cmVzIGluIGBwd2RgLyQkaSI7IFwKKwkJCSggY2QgJCRpIDsgJChNQUtFKSBmZWF0dXJlcyApIDsgXAorCQkJaWYgdGVzdCAkJD8gIT0gMCA7IHRoZW4gXAorCQkJCWV4aXQgMSA7IFwKKwkJCWZpICBcCisJCWRvbmUgXAorCWZpCisKKy5QSE9OWTogY2xlYW5mZWF0dXJlcyBjbGVhbmZlYXR1cmVzc3ViZGlycworY2xlYW5mZWF0dXJlczogY2xlYW5mZWF0dXJlc3N1YmRpcnMKKwkgICAgICAgcm0gLWYgJChGVE9CSlMpCisJICAgICAgIHJtIC1mICQoRkVBVFVSRUZJTEUpCisJICAgICAgIHJtIC1mICQodG9wX2J1aWxkZGlyKS9pbmNsdWRlL25ldC1zbm1wL2ZlYXR1cmUtZGV0YWlscy5oCisKK2NsZWFuZmVhdHVyZXNzdWJkaXJzOgorCUBpZiB0ZXN0ICIkKEZUU1VCRElSUykiICE9ICIiOyB0aGVuIFwKKwkgICAgU1VCRElSUz0iJChGVFNVQkRJUlMpIiA7ICAgICAgICBcCisgICAgICAgIGVsc2UgCQkJIAkgICAgXAorICAgICAgICAgICAgU1VCRElSUz0iJChTVUJESVJTKSIgOyAgICAgICAgICBcCisgICAgICAgIGZpIDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwlpZiB0ZXN0ICIkJFNVQkRJUlMiICE9ICIiOyB0aGVuIFwKKwkJaXQ9IiQkU1VCRElSUyIgOyBcCisJCWZvciBpIGluICQkaXQgOyBkbyBcCisJCQllY2hvICJtYWtpbmcgY2xlYW5mZWF0dXJlcyBpbiBgcHdkYC8kJGkiOyBcCisJCQkoIGNkICQkaSA7ICQoTUFLRSkgY2xlYW5mZWF0dXJlcyApIDsgXAorCQkJaWYgdGVzdCAkJD8gIT0gMCA7IHRoZW4gXAorCQkJCWV4aXQgMSA7IFwKKwkJCWZpICBcCisJCWRvbmUgXAorCWZpCisKKyMgZmVhdHVyZS1jaGVjayBkZWZpbml0aW9ucworLlNVRkZJWEVTOiAuZnQKKy5jLmZ0OgorCUB0ZXN0IC1mICQodG9wX2J1aWxkZGlyKS9pbmNsdWRlL25ldC1zbm1wL2ZlYXR1cmUtZGV0YWlscy5oIHx8IFwKKwkgICAgZWNobyAiLyogR2VuZXJhdGVkIGJ5IG1ha2UuIERvIG5vdCBtb2RpZnkgZGlyZWN0bHkgKi8iIFwKKwkJPiAkKHRvcF9idWlsZGRpcikvaW5jbHVkZS9uZXQtc25tcC9mZWF0dXJlLWRldGFpbHMuaAorCSQoRkVBVFVSRUNIRUNLKSAtLWZlYXR1cmUtZ2xvYmFsICQodG9wX2J1aWxkZGlyKS9pbmNsdWRlL25ldC1zbm1wL2ZlYXR1cmUtZGV0YWlscy5oICQobXlzdWJkaXIpICQ8ICRAICQoQ0MpIC1FICQoQ1BQRkxBR1MpICQoQ0ZMQUdTKSAtYworCiBzdWJkaXJzOgogCUBpZiB0ZXN0ICIkKFNVQkRJUlMpIiAhPSAiIjsgdGhlbiBcCiAJCWl0PSIkKFNVQkRJUlMpIiA7IFwKQEAgLTQyLDYgKzk4LDcgQEAKICMgaGVhZGVycwogIwogIyBzZXQgSU5TVEFMTEhFQURFUlMgdG8gYSBsaXN0IG9mIHRoaW5ncyB0byBpbnN0YWxsIGluIGVhY2ggbWFrZWZpbGUuCisjIHNldCBJTlNUQUxMQlVJTFRJTkNMVURFSEVBREVSUyBhIGxpc3QgYnVpbHQgYW5kIHBsYWNlZCBpbnRvIGluY2x1ZGUvbmV0LXNubXAvCiAjIHNldCBJTlNUQUxMQlVJTFRIRUFERVJTIHRvIGEgbGlzdCBvZiB0aGluZ3MgdG8gaW5zdGFsbCBmcm9tIGJ1aWxkZGlyCiAjIHNldCBJTlNUQUxMU1VCRElSSEVBREVSUyBhbmQgSU5TVEFMTFNVQkRJUiB0byBzdWJkaXJlY3RvcnkgaGVhZGVycwogIyBzZXQgSU5TVEFMTFNVQkRJUkhFQURFUlMyIGFuZCBJTlNUQUxMU1VCRElSMiB0byBtb3JlIHN1YmRpcmVjdG9yeSBoZWFkZXJzCkBAIC01MCw2ICsxMDcsMTYgQEAKIGluc3RhbGxoZWFkZXJzOiBpbnN0YWxsbG9jYWxoZWFkZXJzIEBpbnN0YWxsdWNkaGVhZGVyc0AgaW5zdGFsbHN1YmRpcmhlYWRlcnMKIAogaW5zdGFsbGxvY2FsaGVhZGVyczoKKwlAaWYgdGVzdCAiJChJTlNUQUxMQlVJTFRJTkNMVURFSEVBREVSUykiICE9ICIiIDsgdGhlbiBcCisJCWVjaG8gY3JlYXRpbmcgZGlyZWN0b3J5ICQoSU5TVEFMTF9QUkVGSVgpJChpbmNsdWRlZGlyKSA7IFwKKwkJaXQ9IiQoSU5TVEFMTEJVSUxUSU5DTFVERUhFQURFUlMpIiA7IFwKKwkJJChTSEVMTCkgJCh0b3Bfc3JjZGlyKS9ta2luc3RhbGxkaXJzICQoSU5TVEFMTF9QUkVGSVgpJChpbmNsdWRlZGlyKS9saWJyYXJ5IDsgXAorCQkkKFNIRUxMKSAkKHRvcF9zcmNkaXIpL21raW5zdGFsbGRpcnMgJChJTlNUQUxMX1BSRUZJWCkkKGluY2x1ZGVkaXIpL2FnZW50IDsgXAorCQlmb3IgaSBpbiAkJGl0IDsgZG8gXAorCQkJJChJTlNUQUxMX0RBVEEpIGluY2x1ZGUvbmV0LXNubXAvJCRpICQoSU5TVEFMTF9QUkVGSVgpJChpbmNsdWRlZGlyKS8kJGkgOyBcCisJCQllY2hvICJpbnN0YWxsaW5nICQkaSBpbiAkKElOU1RBTExfUFJFRklYKSQoaW5jbHVkZWRpcikvJCRpIiA7IFwKKwkJZG9uZSBcCisJZmkKIAlAaWYgdGVzdCAiJChJTlNUQUxMSEVBREVSUykiICE9ICIiIDsgdGhlbiBcCiAJCWVjaG8gY3JlYXRpbmcgZGlyZWN0b3J5ICQoSU5TVEFMTF9QUkVGSVgpJChpbmNsdWRlZGlyKSA7IFwKIAkJaXQ9IiQoSU5TVEFMTEhFQURFUlMpIiA7IFwKQEAgLTMyNyw3ICszOTQsNyBAQAogIyBjbGVhbmluZyB0YXJnZXRzCiAjCiBjbGVhbjogY2xlYW5zdWJkaXJzICQoT1RIRVJDTEVBTlRPRE9TKQotCSQoTElCVE9PTENMRUFOKSAke09CSlN9ICR7TE9CSlN9IGNvcmUgJChTVEFOREFSRENMRUFOVEFSR0VUUykgJChPVEhFUkNMRUFOVEFSR0VUUykKKwkkKExJQlRPT0xDTEVBTikgJHtPQkpTfSAke0xPQkpTfSAgJHtGVE9CSlN9IGNvcmUgJChTVEFOREFSRENMRUFOVEFSR0VUUykgJChPVEhFUkNMRUFOVEFSR0VUUykKIAogY2xlYW5zdWJkaXJzOgogCUBpZiB0ZXN0ICIkKFNVQkRJUlMpIiAhPSAiIjsgdGhlbiBcCkBAIC00MDQsNSArNDcxLDUgQEAKIC5QSE9OWTogY2xlYW4gY2xlYW5zdWJkaXJzIGxpbnQgXAogCWluc3RhbGwgaW5zdGFsbHByb2dzIGluc3RhbGxoZWFkZXJzIGluc3RhbGxsaWJzIFwKIAlpbnN0YWxsYmluIGluc3RhbGxzYmluIGluc3RhbGxzdWJkaXJzIFwKLQlhbGwgc3ViZGlycyBzdGFuZGFyZGFsbCBvYmpzIFwKKwlhbGwgc3ViZGlycyBzdGFuZGFyZGFsbCBvYmpzIGZlYXR1cmVzIFwKIAlkZXBlbmQgbm9zeXNkZXBlbmQgZGlzdGRlcGVuZCBkZXBlbmRkaXJzIG5vc3lzZGVwZW5kZGlycyBkaXN0ZGVwZW5kZGlycwpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudG9wIGIvTWFrZWZpbGUudG9wCmluZGV4IDMzNGZiYjguLjlhYmQ1ZGUgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLnRvcAorKysgYi9NYWtlZmlsZS50b3AKQEAgLTM2LDYgKzM2LDggQEAKIElOU1RBTEwJCT0gJChMSUJUT09MKSAtLW1vZGU9aW5zdGFsbCBASU5TVEFMTEAKIFVOSU5TVEFMTAk9ICQoTElCVE9PTCkgLS1tb2RlPXVuaW5zdGFsbCBybSAtZgogTElCVE9PTENMRUFOCT0gJChMSUJUT09MKSAtLW1vZGU9Y2xlYW4gcm0gLWYKK0ZFQVRVUkVDSEVDSwk9ICQodG9wX3NyY2RpcikvbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLWNoZWNrCitGRUFUVVJFUFJPQ0VTUwk9ICQodG9wX3NyY2RpcikvbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLXJlbW92ZQogSU5TVEFMTF9EQVRBICAgID0gQElOU1RBTExfREFUQUAKIFNFRAkJPSBAU0VEQAogTE5fUwkJPSBATE5fU0AKQEAgLTc3LDE0ICs3OSwxNCBAQAogIyA1LjMgd2FzIGF0IDEwLCA1LjQgaXMgYXQgMTUsIC4uLiAgVGhpcyBsZWF2ZXMgc29tZSByb29tIGZvciBuZWVkZWQKICMgY2hhbmdlcyBmb3IgcGFzdCByZWxlYXNlcyBpZiBhYnNvbHV0ZWx5IG5lY2Vzc2FyeS4KICMKLUxJQkNVUlJFTlQgID0gMjUKK0xJQkNVUlJFTlQgID0gMzAKIExJQkFHRSAgICAgID0gMAogTElCUkVWSVNJT04gPSAyCiAKIExJQl9MRF9DTUQgICAgICA9ICQoTElCVE9PTCkgLS1tb2RlPWxpbmsgJChMSU5LQ0MpICQoQ0ZMQUdTKSAtcnBhdGggJChsaWJkaXIpIC12ZXJzaW9uLWluZm8gJChMSUJDVVJSRU5UKTokKExJQlJFVklTSU9OKTokKExJQkFHRSkgLW8KIExJQl9FWFRFTlNJT04gICA9IGxhCiBMSUJfVkVSU0lPTiAgICAgPQotTElCX0xEQ09ORklHX0NNRCA9ICQoTElCVE9PTCkgLS1tb2RlPWZpbmlzaCAkKGxpYmRpcikKK0xJQl9MRENPTkZJR19DTUQgPSAkKExJQlRPT0wpIC0tbW9kZT1maW5pc2ggJChJTlNUQUxMX1BSRUZJWCkkKGxpYmRpcikKIExJTksJCT0gJChMSUJUT09MKSAtLW1vZGU9bGluayAkKExJTktDQykKICMgUkFOTElCIAk9IEBSQU5MSUJACiBSQU5MSUIJCT0gOgpkaWZmIC0tZ2l0IGEvTkVXUyBiL05FV1MKaW5kZXggYmFhY2UyMS4uYTY3ZGE4YiAxMDA2NDQKLS0tIGEvTkVXUworKysgYi9ORVdTCkBAIC0zLDMwICszLDExMCBAQAogdGhhdCBoYXZlIGJlZW4gZml4ZWQvYXBwbGllZCwgYW5kIHRoZSBDaGFuZ2VMb2cgZmlsZSBmb3IgYSBjb21wcmVoZW5zaXZlCiBsaXN0aW5nIG9mIGFsbCBjaGFuZ2VzIG1hZGUgdG8gdGhlIGNvZGUuCiAKLSo1LjYuMioKKyo1LjcuMioKKyAgICBzbm1wOgorICAgICAgLSBCVUc6IDM1MjY1NDk6IENWRS0yMDEyLTIxNDEgQXJyYXkgaW5kZXggZXJyb3IgbGVhZGluZyB0byBjcmFzaAogCiAgICAgc25tcGQ6Ci0gICAgICAtIFtQQVRDSCAzMTk4NzgxXTogRml4IGNvbXBpbGF0aW9uIG9mIGRpc21hbi97cGluZyx0cmFjZXJvdXRlfSBtb2R1bGVzCi0gICAgICAtIFtCVUcgMzE2NjU2OF06IEZpeCBtaXNzaW5nIGhyU3lzdGVtUHJvY2Vzc2VzIHZhbHVlcwotICAgICAgLSBbQlVHIDM1MjY1NDldOiBDVkUtMjAxMi0yMTQxIEFycmF5IGluZGV4IGVycm9yIGxlYWRpbmcgdG8gY3Jhc2gKLSAgICAgIC0gW0JVRyAzNTMyMDkwXTogRml4IGhpZ2ggaWZJbmRleCB2YWx1ZXMgY3Jhc2hpbmcgaHJEZXZpY2VEZXNjcgotICAgICAgICAgICAgICBOb3RlIHRoYXQgdGhpcyB3aWxsIGFmZmVjdCB0aGUgaW5kZXhpbmcgb2YgKmFsbCogZW50cmllcyBpbgotICAgICAgICAgICAgICB0aGUgaHJEZXZpY2VUYWJsZS4gIEFzc3VtcHRpb25zIGFzIHRvIHdoYXQgaW5kZXggYSBnaXZlbiBkZXZpY2UKLSAgICAgICAgICAgICAgd2lsbCB1c2UsIGFyZSBubyBsb25nZXIgdmFsaWQuCisgICAgICAtIEJVRzogMzUzMjA5MDogRml4IGhpZ2ggaWZJbmRleCB2YWx1ZXMgY3Jhc2hpbmcgaHJEZXZpY2VEZXNjcgogCiAgICAgYnVpbGRpbmc6Ci0gICAgICAtIFtQQVRDSCAyMDkxMTU2XTogRml4IHBhcmFsbGVsIGJ1aWxkcyAodXNpbmcgJ21ha2UgLWogPE4+JykKKyAgICAgIC0gUEFUQ0g6IDIwOTExNTY6IGNvcnJlY3RseSBkZWNsYXJlIGRlcGVuZGVuY2llcyBpbiBNYWtlZmlsZS4gJ21ha2UKKyAgICAgICAgLWogPE4+JyBzaG91bGQgd29yayBub3cuIEJhY2twb3J0IHRoaXMgdG8gVjUtNCBhcyBpdCBpcyBuZWVkZWQgZm9yCisgICAgICAgIGNvcnJlY3Qgb3BlcmF0aW9uIGluIHRoZSBzaW5nbGUgdGhyZWFkZWQgY2FzZSBvZiBtYWtlIG1pYmxpYiBhcworICAgICAgICB3ZWxsLgogCi0qNS42LjEqCisgICAgTWFueSBvdGhlciBtaXNjZWxsYW5lb3VzIG1pbm9yIGJ1ZyBmaXhlcwogCi0gICAgR2VuZXJhbDoKLSAgICAgIC0gVGhlIERUTFMgYW5kIFRMUyB0cmFuc3BvcnRzIGFuZCB0aGUgVFNNIHNlY3VyaXR5IG1vZGVsIGFyZSBubwotICAgICAgICBsb25nZXIgImJldGEiICh0aGV5J3ZlIHVuZGVyZ29uZSByaWdvcm91cyBpbnRlcm9wZXJhYmlsaXR5IHRlc3RpbmcpLgotICAgICAgLSBNYW55IEJ1ZyBGaXhlcyAoc2VlIHRoZSBDSEFOR0VTIGFuZCBDaGFuZ2VMb2cgZmlsZXMgZm9yIGZ1bGwgZGV0YWlscykKKyo1LjcuMSoKIAotICAgIHNubXBkOgotICAgICAgLSBbUEFUQ0ggMzE0MTQ2Ml06IEZpeCBtdWx0aS1vcGJqZWN0IEFnZW50WCBzdWJhZ2VudCByZXF1ZXN0cwotICAgICAgLSBGaXggVkFDTSBwZXJzaXN0YW50IHN0b3JhZ2UuCisgIGxpYm5ldHNubXA6CisgICAgICAtIEZpeGVkIHRoZSBtaWItcGFyc2luZy1idWcgaW50cm9kdWNlZCBzaG9ydGx5IGJlZm9yZSA1LjcKKworICBhZ2VudDoKKyAgICAgIC0gZml4ZWQgcm91bmRpbmcgZXJyb3JzIGZvciBkaXNrIHBlcmNlbnRhZ2UgY2FsY3VsYXRpb25zCisKKyAgb3BlbmJzZDoKKyAgICAgIC0gYmV0dGVyIHN1cHBvcnQgZm9yIHJlY2VudCBvcGVuYnNkIHJlbGVhc2VzCisKKyAgZmVhdHVyZXM6CisgICAgICAtIGJ1ZyBmaXhlcyB3aXRoIG1pbmltYWxpc3Qgc3VwcG9ydCBhZnRlciBhZGRpdGlvbmFsIHVzZXIgZmVlZGJhY2sKKworICBNYW55IG90aGVyIG1pc2NlbGxhbmVvdXMgbWlub3IgYnVnIGZpeGVzCisKKyo1LjcqCisKKyAgc25tcGQ6CisgICAgICAtIERlbGl2ZXJ5IG9mIGRhdGEgdmlhIHJlZ3VsYXJpbHkgc2NoZWR1bGVkIG5vdGlmaWNhdGlvbnMuCisgICAgICAgIChzZWUgIkRhdGEgRGVsaXZlcnkgdmlhIE5vdGZpY2F0aW9ucyIgaW4gc25tcGQuY29uZikKKyAgICAgIC0gTWFueSB0aW1lLWJhc2VkIGNvbmZpZyBvcHRpb25zIGNhbiB0YWtlIChtKWlucywgKGgpb3VycywgLi4uIGFyZ3VtZW50cworICAgICAgICAoc2VlIHRoZSBzbm1wZC5jb25mIG1hbnVhbCBwYWdlKQorICAgICAgLSBUaGUgUElORyBhbmQgVFJBQ0VST1VURSBNSUJzIG5vdyBjb21waWxlIGFuZCB3b3JrLWlzaCBvbiBsaW51eAorICAgICAgICBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy93aWtpL2luZGV4LnBocC9ESVNNQU4KKyAgICAgIC0gTWliIGhhbmRsZXJzIGNhbiBub3cgaW1wbGVtZW50IGEgZGF0YV9jbG9uZSBmdW5jdGlvbiBmb3IKKyAgICAgICAgY2xvbmluZyB0aGUgbXl2b2lkIHN0cnVjdHVyZSB2YXJpYWJsZSB0byBhdm9pZCBkYW5nbGluZyBwb2ludGVycworICAgICAgLSBGaXhlZCBwZXJzaXN0ZW50IHN0b3JhZ2Ugb2YgVkFDTSBNSUIgY29uZmlndXJhdGlvbgorICAgICAgLSBNdWx0aS1ob21lZCBhZ2VudHMgc2VuZCBVRFAgcmVzcG9uc2VzIGZyb20gdGhlIHByb3BlciBJUCBhZGRyZXNzCisgICAgICAtIFRoZSBoclN0b3JhZ2VUYWJsZSBpbXBsZW1lbnRhdGlvbiBub3cgc3VwcG9ydHMgbGFyZ2UgZmlsZXN5c3RlbXMgYmV0dGVyCisgICAgICAtIG9wdGltaXphdGlvbnMgZm9yIGxhcmdlIHJvdXRlIHRhYmxlcworICAgICAgLSBBZGRlZCBhIGRlbGl2ZXJ5QnlOb3RpZnkgY29uZmlnIHRva2VuIGZvciByZWd1bGFyIGRhdGEgZGVsaXZlcnkKKyAgICAgICAgKHNlZSB0aGUgc25tcGQuY29uZiBtYW51YWwgcGFnZSBhbmQgdGhlIE5FVC1TTk1QLVBFUklPRElDLU5PVElGWS1NSUIpCisgICAgICAtIFtQQVRDSCAzMTQxNDYyXTogZml4IGFnZW50eCBzdWJhZ2VudCBpc3N1ZXMgd2l0aCBtdWx0aXBsZS1vYmplY3QgcmVxdWVzdHMKKyAgICAgIC0gW1BBVENIIDMwNTcwOTNdOiBsaW51eCB1c2VzIGxpYnBjaSBmb3IgY3JlYXRpbmcgdXNlZnVsIGlmRGVzY3Igc3RyaW5ncworICAgICAgLSBbUEFUQ0ggMzEzMTM5N106IGh1Z2Ugc3BlZWR1cHMgb2YgdGhlIFRDUC9VRFAgVGFibGVzCisKKyAgbGlibmV0c25tcDoKKyAgICAgIC0gUmVtb3ZlZCB0aGUgb2xkZXIgQ01VIGNvbXBhdGliaWxpdHkgc3VwcG9ydAorICAgICAgLSBUaGUgU1NIIHRyYW5zcG9ydCBpcyBub3cgY29uZmlndXJhYmxlCisKKyAgVExTL0RUTFMgc3VwcG9ydDoKKyAgICAgIC0gVGhlIFNOTVAgb3ZlciBEVExTIHRyYW5zcG9ydCBub3cgcHJvcGVybHkgc3VwcG9ydHMgSVB2NgorICAgICAgLSBJbnRyb2R1Y2VkIG5ldyBjb25maWd1cmF0aW9uIHRva2VuczogbG9jYWxDZXJ0L3BlZXJDZXJ0CisgICAgICAgIChkZXByZWNhdGluZyBzZXJ2ZXJDZXJ0LCBjbGllbnRDZXJ0LCBkZWZYNTA5U2VydmVyUHViLCBkZWZYNTA5Q2xpZW50UHViKQorICAgICAgLSBWYXJpb3VzIGZpeGVzIGZvciB0aGUgVExTL0RUTFMgdHJhbnNwb3J0cworCisgIGFwcHM6CisgICAgICAtIEFkZGVkIGEgcGVyLXZhcmlhYmxlIHRpbWVkIG91dHB1dCBzdXBwb3J0IHRvIHNubXB3YWxrIHVzaW5nIC1DVAorICAgICAgLSBzbm1waW5mb3JtIG5vdyBjb3JyZWN0bHkgdXNlcyB0aGUgbG9jYWwgZW5naW5lSUQgZm9yIGluZm9ybXMKKyAgICAgIC0gQSBudW1iZXIgb2YgbWliMmMgYnVnIGZpeGVzCisgICAgICAtIE5ldyBzbm1wLmNvbmYgdG9rZW5zIGZvciB0aW1lb3V0cyBhbmQgcmV0cmllcworCisgIGJ1aWxkaW5nOgorICAgICAgLSBOZXcgZmxhZ3MgdG8gcmVkdWNlIHRoZSBhbW91bnQgb2YgY29tcGlsZWQgY29kZSB0byBiYXJlIG1pbmltdW1zLgorICAgICAgICBUaGlzIGlzIHByb3ZpZGVkIGJ5IGEgbmV3IGdlbmVyaWMgZmVhdHVyZSBtYXJraW5nL3NlbGVjdGlvbiBtZWNoYW5pc20uCisgICAgICAgIGh0dHA6Ly93d3cubmV0LXNubXAub3JnL3dpa2kvaW5kZXgucGhwL0ZlYXR1cmVfTWFya2luZ19hbmRfU2VsZWN0aW9uCisgICAgICAtIEl0J3Mgbm93IHBvc3NpYmxlIHRvIGJ1aWxkIHdpdGhvdXQgU05NUHYzL1VTTQorICAgICAgICAoZS5nLiwgaWYgeW91IG9ubHkgd2FudCBUTFMvRFRMUyB3aXRoIFNOTVB2My9UU00pCisgICAgICAtIEl0J3MgcG9zc2libGUgdG8gYnVpbGQgdGhlIHN1aXRlIHdpdGggbm8gU0VUIHN1cHBvcnQKKyAgICAgICAgY29uZmlndXJlIHVzaW5nIC0tZW5hYmxlLXJlYWQtb25seQorICAgICAgLSBJdCdzIHBvc3NpYmxlIHRvIGJ1aWxkIHRoZSBhZ2VudCBhcyBhIG5vdGlmeS1vbmx5IGFnZW50CisgICAgICAgIGNvbmZpZ3VyZSB1c2luZyAtLWVuYWJsZS1ub3RpZnktb25seQorICAgICAgLSBBZGRlZCBhIHNjcmlwdCB0byB0ZXN0IG1lbW9yeSB1c2FnZSB3aXRoIHZhcmlvdXMgY29uZmlnIG9wdGlvbnMKKyAgICAgICAgKHNlZSB0aGUgbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHMgc2NyaXB0KQorICAgICAgLSBOZXQtU05NUCBjYW4gbm93IGJlIGJ1aWx0IHRvIHBlcmZvcm0gbG9jYWwgRE5TU0VDIHZhbGlkYXRpb24KKyAgICAgICAgKGluc3RhbGwgRE5TU0VDLVRvb2xzJyBsaWJ2YWwgYW5kIHVzZSAtLXdpdGgtbG9jYWwtZG5zc2VjLXZhbGlkYXRpb24pCisKKyAgdGVzdGluZzoKKyAgICAgIC0gYSBudW1iZXIgb2YgbmV3IEFQSSB1bml0LXRlc3RzIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgc3VpdGUKKyAgICAgICAgKHRvIHJ1biB0aGUgdGVzdHM6IGNkIHRlc3RpbmcgJiYgLi9SVU5GVUxMVEVTVFMgLWcgdW5pdC10ZXN0cykKKyAgICAgIC0gVGhlIHVuaXQgdGVzdHMgY2FuIGJlIG1vcmUgZWFzaWx5IHJ1biB1bmRlciB2YWxncmluZAorICAgICAgICAoU2VlIGh0dHA6Ly9iaXQubHkvanNnUm52IGZvciBkZXRhaWxzKQorCisgIG9wZW5ic2Q6CisgICAgICAtIFN1cHBvcnQgZm9yIHVwZGF0aW5nIHRoZSByb3V0aW5nIHRhYmxlIHZpYSBTTk1QCisKKyAgd2luMzI6CisgICAgICAtIFRoZSB0ZXN0aW5nIHN1aXRlIHdvcmtzIGJldHRlciB1bmRlciB3aW4zMiBlbnZpcm9ubWVudHMKKyAgICAgIC0gTWFueSBidWlsZGluZyBmaXhlcyBmb3IgdGhlIHdpbjMyIGVudmlyb25tZW50KHMpCisKKyAgc29sYXJpczoKKyAgICAgIC0gTmV0LVNOTVAgbm93IHN1cHBvcnRzIHRoZSBTQ1RQLU1JQgorCisgIERyYWdvbkZseUJTRCwgRnJlZUJTRDg6CisgICAgICAtIE5ldC1TTk1QIHNob3VsZCBub3cgd29yayBvbiBEcmFnb25GbHlCU0QgYW5kIEZyZWVCU0Q4CisKKyAgQW5kIG9mIGNvdXJzZToKKyAgICAgIC0gTWFueSBvdGhlciBidWcgZml4ZXMuICBTZWUgdGhlIENIQU5HRVMgYW5kIENoYW5nZUxvZyBmb3IgZGV0YWlscy4KIAogKjUuNioKIApkaWZmIC0tZ2l0IGEvUkVBRE1FIGIvUkVBRE1FCmluZGV4IDI4YjY2NmIuLmRkMDNhMDggMTAwNjQ0Ci0tLSBhL1JFQURNRQorKysgYi9SRUFETUUKQEAgLTEsNCArMSw0IEBACi0JICAgICAgIFJFQURNRSBmaWxlIGZvciBuZXQtc25tcCBWZXJzaW9uOiA1LjYuMgorCSAgICAgICBSRUFETUUgZmlsZSBmb3IgbmV0LXNubXAgVmVyc2lvbjogNS43LjIKIAogRElTQ0xBSU1FUgogCkBAIC0zNTIsNiArMzUyLDggQEAKICAgICBBbmRlcnMgUGVyc3NvbiA8YXBlcnNzb25AdXNlcnMuc291cmNlZm9yZ2UubmV0PgogICAgIFJvamVyIDxyb2plckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiAgICAgQmFydCBWYW4gQXNzY2hlIDxiYXJ0LnZhbmFzc2NoZUBnbWFpbC5jb20+CisgICAgUGFibG8gQ2FyYm9uaSA8cGNhcmJvbmlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorICAgIEJpbGwgRmVubmVyIDxmZW5uZXJAZ21haWwuY29tPgogCiAgIFdlJ3ZlIHByb2JhYmx5IGZvcmdvdHRlbiBwZW9wbGUgb24gdGhpcyBsaXN0LiAgTGV0IHVzIGtub3cgaWYgeW91J3ZlCiAgIGNvbnRyaWJ1dGVkIGNvZGUgYW5kIHdlJ3ZlIGxlZnQgeW91IG91dC4KZGlmZiAtLWdpdCBhL1JFQURNRS53aW4zMiBiL1JFQURNRS53aW4zMgppbmRleCBhOGI2YmYwLi5lNDkyNDNiIDEwMDY0NAotLS0gYS9SRUFETUUud2luMzIKKysrIGIvUkVBRE1FLndpbjMyCkBAIC00LDEyICs0LDExIEBACiAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAotVGhpcyBndWlkZSBkZXNjcmliZXMgYnVpbGRpbmcgd2l0aCBNaWNyb3NvZnQgVmlzdWFsIEMrKyA2LjAgYW5kIGhpZ2hlciwgd2l0aAotdGhlIGdjYyBjb21waWxlciBmcm9tIE1pbkdXIC8gTVNZUywgYW5kIHdpdGggdGhlIGdjYyBjb21waWxlciBmcm9tIEN5Z3dpbi4KLUFzIGRldmVsb3BlcnMgYnVpbGQgd2l0aCBvdGhlciBXaW4zMiBlbnZpcm9ubWVudHMsIHRoZWlyIG5vdGVzIHdpbGwgYmUgCi1pbmNsdWRlZCBoZXJlLgorVGhpcyBndWlkZSBkZXNjcmliZXMgaG93IHRvIGJ1aWxkIE5ldC1TTk1QIHdpdGggTWljcm9zb2Z0IFZpc3VhbCBDKyssIHRoZQorTWluR1cgZ2NjIGNvbXBpbGVyIG9yIHRoZSBDeWd3aW4gZ2NjIGNvbXBpbGVyLiAgQXMgZGV2ZWxvcGVycyBidWlsZCB3aXRoIG90aGVyCitXaW4zMiBlbnZpcm9ubWVudHMsIHRoZWlyIG5vdGVzIHdpbGwgYmUgaW5jbHVkZWQgaGVyZS4KIAotVGhlIHJlbWFpbmRlciBvZiB0aGlzIGd1aWRlIGhhcyB0aGUgZm9sbG93aW5nIHNlY3Rpb25zIDoKK1RoZSBzZWN0aW9ucyBpbiB0aGlzIGd1aWRlIGFyZToKIAogQ3VycmVudCBTdGF0dXMgZm9yIFdpbjMyIHBsYXRmb3JtcwogSW50ZXJhY3Rpb25zIHdpdGggT3RoZXIgVmVuZG9yJ3MgUHJvZHVjdHMKQEAgLTM5LDEzICszOCwxNCBAQAogCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICoKLSogU3RhdHVzIGFzIG9mIDIxLVNlcC0yMDEwIGZvciBXaW4zMiBwbGF0Zm9ybXMKKyogTmV0LVNOTVAgc3RhdHVzIGZvciBXaW4zMiBwbGF0Zm9ybXMKICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCiBBbGwgYXBwbGljYXRpb25zIGJ1aWxkIHdpdGggTWljcm9zb2Z0IFZpc3VhbCBDKysgNi4wLCBNaWNyb3NvZnQgRGV2ZWxvcG1lbnQKIEVudmlyb25tZW50IDIwMDMgKE1TVkMgNy4wLzcuMSksIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDIwMDUsIE1pY3Jvc29mdAotVmlzdWFsIFN0dWRpbyAyMDA4LCBnY2MgdW5kZXIgQ3lnd2luIGFuZCBnY2MgdW5kZXIgTWluR1cuICAKK1Zpc3VhbCBTdHVkaW8gMjAwOCwgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gMjAxMCwgZ2NjIHVuZGVyIEN5Z3dpbiBhbmQgZ2NjCit1bmRlciBNaW5HVy4KIAogICAtICBBbGwgb2YgdGhlIGFwcGxpY2F0aW9ucyB3b3JrIChzbm1wd2Fsaywgc25tcGdldCwgc25tcHNldCwgc25tcHRyYXAsIC4uLikuCiAgIC0gIFRoZSBzeXN0ZW0sIHNubXAsIGlwLCB0Y3AsIHVkcCBhbmQgaWNtcCBNSUItZ3JvdXBzIHdvcmsgKHJlcXVpcmVzIHRoZQpAQCAtODAsNiArODAsMTEgQEAKICAgLSAgQm90aCBidWlsZGluZyB2aWEgdGhlIGludGVyYWN0aXZlIGRldmVsb3BtZW50IGVudmlyb25tZW50IGFuZCB2aWEgdGhlCiAgICAgIGNvbW1hbmQgbGluZSAobm1ha2UpIGlzIHN1cHBvcnRlZC4KIAorICAtICBXaXRoIFZpc3VhbCBTdHVkaW8gMjAwNSBhbmQgbGF0ZXIsIHRoZSBOZXQtU05NUCBzb3VyY2UgY29kZSBjYW4gYmUKKyAgICAgY29tcGlsZWQgaW50byBlaXRoZXIgMzItYml0IG9yIDY0LWJpdCBleGVjdXRhYmxlcyAodGhlIGFtZDY0L3g2NAorICAgICBhcmNoaXRlY3R1cmUpLiBQcmV2aW91cyBWaXN1YWwgU3R1ZGlvIHZlcnNpb25zIHN1cHBvcnQgMzItYml0IGV4ZWN1dGFibGVzCisgICAgIG9ubHkuCisKIAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqCkBAIC00NzMsOCArNDc4LDggQEAKIHRoZSBEZWJ1ZyBhbmQgUmVsZWFzZSB2ZXJzaW9ucyBvZiBhbiBhcHBsaWNhdGlvbiBjYW4gYmUgYnVpbHQgYW5kIHRlc3RlZAogc2VwYXJhdGVseS4KIAotVkMrKyA2LjAsIDcuMSwgOC4wICgyMDA1KSBhbmQgOS4wICgyMDA4KSBoYXZlIGJlZW4gdGVzdGVkLiAgQnVpbGRpbmcgd2l0aAotZWFybGllciBNaWNyb3NvZnQgY29tcGlsZXIgdmVyc2lvbnMgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4KK1ZDKysgNi4wLCA3LjEsIDguMCAoMjAwNSksIDkuMCAoMjAwOCkgYW5kIDEwLjAgKDIwMTApIGhhdmUgYmVlbiB0ZXN0ZWQuCitCdWlsZGluZyB3aXRoIGVhcmxpZXIgTWljcm9zb2Z0IGNvbXBpbGVyIHZlcnNpb25zIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuCiAKIE5vdGU6IGlmIHlvdSB3YW50IHRvIGRpc3RyaWJ1dGUgdGhlIGdlbmVyYXRlZCBleGVjdXRhYmxlLCB5b3Ugd2lsbCBhbHNvIG5lZWQKIHRvIGRpc3RyaWJ1dGUgdGhlIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFJlZGlzdHJpYnV0YWJsZSBQYWNrYWdlLiBDaGVjayB0aGUKQEAgLTUzMiwxMiArNTM3LDIyIEBACiAKIDEuICBPcGVuIGEgY29tbWFuZCBwcm9tcHQKIAotMi4gIEluaXRpYWxpemUgdGhlIFZpc3VhbCBTdHVkaW8gYnVpbGQgZW52aXJvbm1lbnQgYnkgcnVubmluZyBWQ1ZBUlMzMi5iYXQKKzIuICBXaGVuIGJ1aWxkaW5nIHdpdGggT3BlblNTTCwgc2V0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgSU5DTFVERSBhbmQgTElCCisgICAgc3VjaCB0aGF0IHRoZXNlIHBvaW50IGF0IHRoZSBwcm9wZXIgT3BlblNTTCBkaXJlY3Rvcmllcy4gQW4gZXhhbXBsZToKKworICAgIHNldCBJTkNMVURFPUM6XE9wZW5TU0wtV2luMzJcaW5jbHVkZQorICAgIHNldCBMSUI9QzpcT3BlblNTTC1XaW4zMlxsaWJcVkNcc3RhdGljCisKKzMuICBJbml0aWFsaXplIHRoZSBWaXN1YWwgU3R1ZGlvIGJ1aWxkIGVudmlyb25tZW50IGJ5IHJ1bm5pbmcgdmN2YXJzYWxsLmJhdAogICAgIHdoaWNoIGNhbiBiZSBmb3VuZCBpbiB0aGUgYmluIGZvbGRlciBvZiB5b3VyIFZpc3VhbCBTdHVkaW8gaW5zdGFsbCBmb2xkZXIuCisgICAgSWYgeW91IHdhbnQgdG8gZ2VuZXJhdGUgNjQtYml0IGJpbmFyaWVzIGluc3RlYWQgb2YgMzItYml0IGJpbmFyaWVzLCBydW4KKyAgICB2Y3ZhcnNhbGwuYmF0IHdpdGggdGhlIGFtZDY0IGFyZ3VtZW50LiBTZWUgYWxzbyAiSG93IHRvOiBFbmFibGUgYSA2NC1CaXQKKyAgICBWaXN1YWwgQysrIFRvb2xzZXQgYXQgdGhlIENvbW1hbmQgTGluZSIgZm9yIG1vcmUgaW5mb3JtYXRpb24KKyAgICAoaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3g0ZDJjMDlzJTI4dj12cy44MCUyOS5hc3B4KS4KIAotMy4gIFJ1biB3aW4zMlxidWlsZC5iYXQKKzQuICBSdW4gd2luMzJcYnVpbGQuYmF0CiAKLTQuICBUaGUgZm9sbG93aW5nIHNjcmVlbiB3aWxsIGFwcGVhcjoKKzUuICBUaGUgZm9sbG93aW5nIHNjcmVlbiB3aWxsIGFwcGVhcjoKIAogICAgIE5ldC1TTk1QIGJ1aWxkIGFuZCBpbnN0YWxsIG9wdGlvbnMKICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC01NjYsNyArNTgxLDcgQEAKIAogICAgIFNlbGVjdCBvcHRpb24gdG8gc2V0IC8gdG9nZ2xlOiAgCiAKLTUuICBUb2dnbGUgdGhlIG9wdGlvbnMgb24gYW5kIG9mZiBhcyBkZXNpcmVkIGJ5IHR5cGluZyB0aGUgbGluZSBudW1iZXIgCis2LiAgVG9nZ2xlIHRoZSBvcHRpb25zIG9uIGFuZCBvZmYgYXMgZGVzaXJlZCBieSB0eXBpbmcgdGhlIGxpbmUgbnVtYmVyIAogICAgIGZvbGxvd2VkIGJ5IDxlbnRlcj4uICAKIAogICAgIFRvIGNvbXBpbGUgd2l0aCBPcGVuU1NMLCB0aGUgT3BlblNTTCBsaWJyYXJ5IGFuZCBoZWFkZXIgZmlsZXMgbXVzdCAKQEAgLTU4Niw3ICs2MDEsNyBAQAogCiAgICAgV2hlbiB5b3UgYXJlIHJlYWR5IHRvIGJ1aWxkLCB0eXBlIGYgPGVudGVyPgogCi02LiAgQnVpbGRpbmcgd2lsbCBiZWdpbi4gIEZvbGxvd2luZyBpcyBhIHNhbXBsZSBzY3JlZW4gc2hvdCBvZiBhIHF1aWV0IGJ1aWxkOgorNy4gIEJ1aWxkaW5nIHdpbGwgYmVnaW4uICBGb2xsb3dpbmcgaXMgYSBzYW1wbGUgc2NyZWVuIHNob3Qgb2YgYSBxdWlldCBidWlsZDoKIAogICAgIEJ1aWxkaW5nLi4uCiAgICAgCkBAIC02MDgsNyArNjIzLDcgQEAKICAgICAKICAgICBEb25lIQogCi03LiAgSWYgdGhlIGZvbGRlciB0aGF0IE5ldC1TTk1QIHdhcyBpbnN0YWxsZWQgdG8gaXMgZXZlciBjaGFuZ2VkLCBtb2RpZnkgdGhlIAorOC4gIElmIHRoZSBmb2xkZXIgdGhhdCBOZXQtU05NUCB3YXMgaW5zdGFsbGVkIHRvIGlzIGV2ZXIgY2hhbmdlZCwgbW9kaWZ5IHRoZSAKICAgICBzeXN0ZW0gZW52aXJvbm1lbnQgdmFyaWFibGVzIG9yIHJlZ2lzdHJ5IGtleXMgYXMgZXhwbGFpbmVkIGluIHRoZSAKICAgICAnQ29uZmlndXJhdGlvbl9PdmVydmlldy5odG1sJyBmaWxlIGxvY2F0ZWQgaW4gd2luMzIvZGlzdC9odG1saGVscC4KIApAQCAtNzI4LDEwICs3NDMsMTIgQEAKIDUuIEJ1aWxkIHRoZSBhZ2VudCBhbmQgdGhlIGFwcGxpY2F0aW9ucwogCiAgICBhLiBPcGVuIHdpbjMyLmRzdyAoc3RhdGljIGJ1aWxkKSBvciB3aW4zMmRsbC5kc3cgKGR5bmFtaWMgYnVpbGQpLgotICAgYi4gQ2xpY2sgIkJ1aWxkLT5CYXRjaCBCdWlsZC4uLiIgIAotICAgYy4gU2VsZWN0IHRoZSBwcm9qZWN0cyBhbmQgY29uZmlndXJhdGlvbnMgeW91IHdhbnQgdG8gYnVpbGQuCi0gICBkLiBDbGljayAiUmVCdWlsZCBBbGwiLgotICAgZS4gV2hlbiBidWlsZGluZyBpcyBkb25lLCBWaWV3IHRoZSBPdXRwdXQgd2luZG93LCBjbGlwIGFuZAorICAgYi4gSWYgeW91IHdhbnQgdG8gZ2VuZXJhdGUgNjQtYml0IGJpbmFyaWVzIGluc3RlYWQgb2YgMzItYml0IGJpbmFyaWVzLAorICAgICAgc2VsZWN0ICJCdWlsZC9Db25maWd1cmF0aW9uIE1hbmFnZXIiIGFuZCBhZGQgdGhlICJ4NjQiIHBsYXRmb3JtLgorICAgYy4gU2VsZWN0ICJCdWlsZC9CYXRjaCBCdWlsZC4uLiIgIAorICAgZC4gU2VsZWN0IHRoZSBwcm9qZWN0cyBhbmQgY29uZmlndXJhdGlvbnMgeW91IHdhbnQgdG8gYnVpbGQuCisgICBlLiBDbGljayAiUmVCdWlsZCBBbGwiLgorICAgZi4gV2hlbiBidWlsZGluZyBpcyBkb25lLCBWaWV3IHRoZSBPdXRwdXQgd2luZG93LCBjbGlwIGFuZAogICAgICAgc2F2ZSB0byBhIHRleHQgZmlsZSBpZiB0aGVyZSBpcyBzb21lIGluZm9ybWF0aW9uIHRvIHNoYXJlLgogCiA2LiAgSWYgdGhlIFBlcmwgbW9kdWxlcyBhcmUgcmVxdWlyZWQsIGNvbnRpbnVlIHdpdGggdGhlIG5leHQgc2VjdGlvbjoKQEAgLTkxOCwxNiArOTM1LDEwIEBACiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAogVGhlIGRlZmF1bHQgYnVpbGQgY29uZmlndXJhdGlvbiBzdXBwb3J0cyBTTk1QIG92ZXIgSVB2NC1iYXNlZCB0cmFuc3BvcnRzLgotSG93ZXZlciwgV2luZG93cyBYUCBhbmQgV2luZG93cyAyMDAwIGluY2x1ZGUgYW4gSVB2Ni1jYXBhYmxlIHN0YWNrLCB3aGljaAorSG93ZXZlciBXaW5kb3dzIDIwMDAgYW5kIGxhdGVyIGluY2x1ZGUgYW4gSVB2Ni1jYXBhYmxlIHN0YWNrIHdoaWNoCiBjYW4gYmUgdXNlZCB0byBwcm92aWRlIFNOTVAgb3ZlciBJUHY2LiAgVG8gZW5hYmxlIElQdjYsIHRoZSBNaWNyb3NvZnQgUFNESyAKLWlzIHJlcXVpcmVkIGFuZCB0aGUgZm9sbG93aW5nIGNoYW5nZXMgdG8gdGhlIE5ldC1TTk1QIHdpbjMyIFZpc3VhbCBDKysgCi1jb25maWd1cmF0aW9uIGFyZSBuZWVkZWQ6Ci0KLVByb2plY3QgY2hhbmdlcwotPT09PT09PT09PT09PT09Ci0KLSAxLiBFZGl0IHRoZSB3aW4zMlxuZXQtc25tcFxuZXQtc25tcC1jb25maWcuaCBoZWFkZXIgZmlsZS4gIENoYW5nZQotICAgIHRoZSBzaW5nbGUgSU5FVDYgbGluZSBmcm9tOgoraXMgcmVxdWlyZWQgYW5kIE5FVFNOTVBfRU5BQkxFX0lQVjYgaGFzIHRvIGJlIGVuYWJsZWQgaW4KK3dpbjMyXG5ldC1zbm1wXG5ldC1zbm1wLWNvbmZpZy5oLiBDaGFuZ2UgdGhlIGZvbGxvd2luZyBzaW5nbGUgbGluZSBmcm9tOgogCiAgICAgICAgIC8qICN1bmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2ICovCiAKQEAgLTkzNSwyMCArOTQ2LDcgQEAKIAogICAgICAgIAkjZGVmaW5lIE5FVFNOTVBfRU5BQkxFX0lQVjYgMQogCi0gMi4gRWRpdCB0aGUgd2luMzJcbGlic25tcF9kbGxcbGlic25tcC5kZWYgZmlsZS4gIEFsbCB0aGUgSVB2NiBmdW5jdGlvbnMgd2lsbAotICAgIGJlIGNvbW1lbnRlZCBvdXQgYW5kIHdpbGwgbmVlZCB0byBiZSBlbmFibGVkIGJ5IHJlbW92aW5nICc7SVB2NicgZnJvbSB0aGUKLSAgICBiZWdpbm5pbmcgb2YgZWFjaCBsaW5lLiAgCi0KLSAgICBGb3IgZXhhbXBsZSwgY2hhbmdlOgotCi0KLSAgICAgICAgO0lQdjYgICAgICAgIG5ldHNubXBfdWRwNl9wYXJzZV9zZWN1cml0eQotCi0gICAgdG86Ci0KLSAgICAgICAgICAgICAgICBuZXRzbm1wX3VkcDZfcGFyc2Vfc2VjdXJpdHkKLQotIDMuIENvbnRpbnVlIHdpdGggdGhlIHNlY3Rpb24gJ01pY3Jvc29mdCBWaXN1YWwgQysrIC0gQnVpbGRpbmciCitOZXh0LCBjb250aW51ZSB3aXRoIHRoZSBzZWN0aW9uICdNaWNyb3NvZnQgVmlzdWFsIEMrKyAtIEJ1aWxkaW5nIgogCiAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMTAyNyw5ICsxMDI1LDcgQEAKIGZvciBXaW5kb3dzIGJhc2VkIHN5c3RlbXMuIFRoZSBjeWd3aW4xLmRsbCBwcm92aWRlcyBhIFBPU0lYIGVtdWxhdGlvbiBsYXllciAKIHRoYXQgc2ltcGxpZmllcyBwb3J0aW5nIFVuaXggLyBMaW51eCBhcHBsaWNhdGlvbnMgdG8gV2luZG93cy4gVGhlIEN5Z3dpbiBkbGxzCiBhcmUgcmVxdWlyZWQgaWYgYW4gYXBwbGljYXRpb24gaXMgdG8gYmUgZGlzdHJpYnV0ZWQuIFRoZSBkZXBlbmRlbmN5IG9uIHRoZSAKLUN5Z3dpbiBkbGxzIGNhbiBiZSBlbGltaW5hdGVkIHdpdGggdGhlIC0tbW5vLWN5Z3dpbiBjb21waWxlciBmbGFnLCB3aGljaCB1c2VzCi1NaW5HVyB0byBjb21waWxlIGEgbmF0aXZlIFdpbmRvd3MgYmluYXJ5LCBidXQgdGhlIGJlbmVmaXQgb2YgdGhlIFBPU0lYIGVtdWxhdGlvbgotaXMgbG9zdC4gVGhlIEN5Z3dpbiB0b29sIGNoYWluIGFuZCBkb2N1bWVudGF0aW9uIGNhbiBiZSBmb3VuZCBhdDoKK1RoZSBDeWd3aW4gdG9vbCBjaGFpbiBhbmQgZG9jdW1lbnRhdGlvbiBjYW4gYmUgZm91bmQgYXQ6CiAKIGh0dHA6Ly9zb3VyY2VzLnJlZGhhdC5jb20vY3lnd2luLwogCkBAIC0xMDU5LDYgKzEwNTUsNyBAQAogQXMgYW4gZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb25maWd1cmUgb3B0aW9ucyBjcmVhdGUgYSB3b3JraW5nIHNldCBvZgogcHJvZ3JhbXM6CiAKK0VOVl9TRVBBUkFUT1I9IjoiIFwKIC4vY29uZmlndXJlIFwKIAktLXdpdGgtbWliLW1vZHVsZXM9Imhvc3QgYWdlbnR4IGRpc21hbi9ldmVudC1taWIgZXhhbXBsZXMvZXhhbXBsZSIgXAogCS0td2l0aC1vdXQtbWliLW1vZHVsZXM9aG9zdC9ocl9uZXR3b3JrIFwKZGlmZiAtLWdpdCBhL2FjY29uZmlnLmggYi9hY2NvbmZpZy5oCmluZGV4IGYzZjdiZmUuLjEyZjg1YzYgMTAwNjQ0Ci0tLSBhL2FjY29uZmlnLmgKKysrIGIvYWNjb25maWcuaApAQCAtMjcsMTUgKzI3LDYgQEAKICAqLwogI2lmbmRlZiBORVRTTk1QX05PX0FVVE9DT05GX0RFRklOSVRJT05TCiAKLQotI2lmIGRlZmluZWQgKFdJTjMyKSB8fCBkZWZpbmVkIChtaW5ndzMyKSB8fCBkZWZpbmVkIChjeWd3aW4pCi0jZGVmaW5lIEVOVl9TRVBBUkFUT1IgIjsiCi0jZGVmaW5lIEVOVl9TRVBBUkFUT1JfQ0hBUiAnOycKLSNlbHNlCi0jZGVmaW5lIEVOVl9TRVBBUkFUT1IgIjoiCi0jZGVmaW5lIEVOVl9TRVBBUkFUT1JfQ0hBUiAnOicKLSNlbmRpZgotCiAvKiBkZWZpbml0aW9ucyBhZGRlZCBieSBjb25maWd1cmUgb24tdGhlLWZseSAqLwogQFRPUEAKIEBCT1RUT01ACkBAIC00OTQsMTEgKzQ4NSw4IEBACiAgICBhbmQgYXJlIG5vdCB1c2luZyB0aGUgVUMtRGF2aXMgU05NUCBsaWJyYXJ5LiAqLwogI2RlZmluZSBVQ0RfU05NUF9MSUJSQVJZIDEKIAotLyogYWRkIGluIHJlY2VudCBDTVUgbGlicmFyeSBleHRlbnNpb25zIChub3QgY29tcGxldGUpICovCi0jdW5kZWYgQ01VX0NPTVBBVElCTEUKLQogLyogZmluYWwgY29uY2x1c2lvbiBvbiBubGlzdCB1c2FnZSAqLwotI2lmIGRlZmluZWQoSEFWRV9OTElTVCkgJiYgZGVmaW5lZChIQVZFX1NUUlVDVF9OTElTVF9OX1ZBTFVFKSAmJiAhZGVmaW5lZChORVRTTk1QX0RPTlRfVVNFX05MSVNUKSAmJiAhZGVmaW5lZChORVRTTk1QX05PX0tNRU1fVVNBR0UpCisjaWYgZGVmaW5lZChIQVZFX05MSVNUKSAmJiBkZWZpbmVkKEhBVkVfU1RSVUNUX05MSVNUX05fVkFMVUUpICYmICFkZWZpbmVkKE5FVFNOTVBfRE9OVF9VU0VfTkxJU1QpICYmIGRlZmluZWQoSEFWRV9LTUVNKSAmJiAhZGVmaW5lZChORVRTTk1QX05PX0tNRU1fVVNBR0UpCiAjZGVmaW5lIE5FVFNOTVBfQ0FOX1VTRV9OTElTVAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2FnZW50L01ha2VmaWxlLmRlcGVuZCBiL2FnZW50L01ha2VmaWxlLmRlcGVuZAppbmRleCAyN2RiMjVhLi5jZjcyY2JmIDEwMDY0NAotLS0gYS9hZ2VudC9NYWtlZmlsZS5kZXBlbmQKKysrIGIvYWdlbnQvTWFrZWZpbGUuZGVwZW5kCkBAIC00LDcgKzQsNyBAQAogLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAogLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50X2hhbmRsZXIubG86ICAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIApAQCAtMzEsNyArMzEsNiBAQAogLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC0xMTIsNyArMTExLDggQEAKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAotLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCAKKy4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50X2luZGV4LmxvOiAgLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCkBAIC0xMzksNyArMTM5LDYgQEAKIC4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTIyMyw3ICsyMjIsNyBAQAogLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9pbmRleC5oIHNubXBkLmgKIC4vYWdlbnRfaW5kZXgubG86IG1pYmdyb3VwL3N0cnVjdC5oIC4uL2FnZW50L21pYmdyb3VwL21pYl9tb2R1bGVfaW5jbHVkZXMuaAogLi9hZ2VudF9pbmRleC5sbzogbWliZ3JvdXAvZXhhbXBsZXMvZXhhbXBsZS5oIG1pYmdyb3VwL3Rlc3RoYW5kbGVyLmgKLS4vYWdlbnRfaW5kZXgubG86IG1pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5oIG1pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5oCisuL2FnZW50X2luZGV4LmxvOiBtaWJncm91cC9ob3N0L2hyaF9zdG9yYWdlLmggbWliZ3JvdXAvaG9zdC9ocmhfZmlsZXN5cy5oCiAuL2FnZW50X2luZGV4LmxvOiBtaWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5oCiAuL2FnZW50X2luZGV4LmxvOiBtaWJncm91cC9ob3N0L2hyU1dSdW5UYWJsZS5oIG1pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmgKIC4vYWdlbnRfaW5kZXgubG86IG1pYmdyb3VwL2hvc3QvaHJfZGV2aWNlLmggbWliZ3JvdXAvaG9zdC9ocl9vdGhlci5oCkBAIC0yNzAsNyArMjY5LDcgQEAKIC4vYWdlbnRfaW5kZXgubG86IG1pYmdyb3VwL21pYklJL2F0LmggbWliZ3JvdXAvbWliSUkvdGNwLmgKIC4vYWdlbnRfaW5kZXgubG86IG1pYmdyb3VwL21pYklJL2ljbXAuaCBtaWJncm91cC9taWJJSS91ZHAuaAogLi9hZ2VudF9pbmRleC5sbzogbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmggbWliZ3JvdXAvbWliSUkvc2V0U2VyaWFsTm8uaAotLi9hZ2VudF9pbmRleC5sbzogbWliZ3JvdXAvbWliSUkvaXB2Ni5oIG1pYmdyb3VwL3VjZC1zbm1wL2Rpc2suaAorLi9hZ2VudF9pbmRleC5sbzogbWliZ3JvdXAvbWliSUkvaXB2Ni5oIG1pYmdyb3VwL3VjZC1zbm1wL2Rpc2tfaHcuaAogLi9hZ2VudF9pbmRleC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvbWliZGVmcy5oIG1pYmdyb3VwL3VjZC1zbm1wL3Byb2MuaAogLi9hZ2VudF9pbmRleC5sbzogbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uaCBtaWJncm91cC91Y2Qtc25tcC9wYXNzLmgKIC4vYWdlbnRfaW5kZXgubG86IG1pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5oCkBAIC0yOTQsNiArMjkzLDcgQEAKIC4vYWdlbnRfaW5kZXgubG86IG1pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZFRhYmxlLmgKIC4vYWdlbnRfaW5kZXgubG86IG1pYmdyb3VwL3V0aWxpdGllcy9vdmVycmlkZS5oCiAuL2FnZW50X2luZGV4LmxvOiBtaWJncm91cC9oYXJkd2FyZS9tZW1vcnkvaHdfbWVtLmgKKy4vYWdlbnRfaW5kZXgubG86IG1pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvaHdfZnN5cy5oCiAuL2FnZW50X2luZGV4LmxvOiBtaWJncm91cC9oYXJkd2FyZS9jcHUvY3B1LmgKIC4vYWdlbnRfaW5kZXgubG86IG1pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbGludXguaAogLi9hZ2VudF9pbmRleC5sbzogbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmggbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuaApAQCAtMzk0LDYgKzM5NCw3IEBACiAuL2FnZW50X2luZGV4LmxvOiAuLi9hZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuaAogLi9hZ2VudF9pbmRleC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2NsaWVudC5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCkBAIC00MjAsNyArNDIxLDYgQEAKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTUwMywxMiArNTAzLDEyIEBACiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9zdHJ1Y3QuaCBzbm1wZC5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9hZ2VudC9taWJncm91cC9hZ2VudF9tb2R1bGVfaW5jbHVkZXMuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvc211eC9zbXV4LmggbWliZ3JvdXAvc25tcHYzL3VzbUNvbmYuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9taWJJSS92YWNtX2NvbmYuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvc211eC9zbXV4LmggbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9zbm1wdjMvdXNtQ29uZi5oIG1pYmdyb3VwL21pYklJL3ZhY21fY29uZi5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9hZ2VudC9taWJncm91cC9taWJfbW9kdWxlX2luY2x1ZGVzLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2V4YW1wbGVzL2V4YW1wbGUuaCBtaWJncm91cC90ZXN0aGFuZGxlci5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuaCBtaWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaG9zdC9ocmhfc3RvcmFnZS5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2hvc3QvaHJTV1J1blRhYmxlLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmggbWliZ3JvdXAvaG9zdC9ocl9kZXZpY2UuaApAQCAtNTYwLDggKzU2MCw4IEBACiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9taWJJSS90Y3AuaCBtaWJncm91cC9taWJJSS9pY21wLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL21pYklJL3VkcC5oIG1pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9taWJJSS9zZXRTZXJpYWxOby5oIG1pYmdyb3VwL21pYklJL2lwdjYuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdWNkLXNubXAvZGlzay5oIC4uL2FnZW50L21pYmdyb3VwL21pYmRlZnMuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC91Y2Qtc25tcC9kaXNrX2h3LmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2FnZW50L21pYmdyb3VwL21pYmRlZnMuaCBtaWJncm91cC91Y2Qtc25tcC9wcm9jLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmgKQEAgLTU4Niw2ICs1ODYsNyBAQAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdXRpbGl0aWVzL292ZXJyaWRlLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9od19tZW0uaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9od19mc3lzLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHUuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9saW51eC5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9taWJJSS92YXJfcm91dGUuaCBtaWJncm91cC9taWJJSS90Y3BUYWJsZS5oCkBAIC02ODcsNiArNjg4LDcgQEAKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2FnZW50L21pYmdyb3VwL2FnZW50X21vZHVsZV9kb3RfY29uZi5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9hZ2VudC9taWJncm91cC9taWJfbW9kdWxlX2RvdF9jb25mLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKQEAgLTcxMyw3ICs3MTUsNiBAQAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtNzk3LDcgKzc5OCw3IEBACiAuL2FnZW50X3JlZ2lzdHJ5LmxvOiBtaWJncm91cC9zdHJ1Y3QuaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vYWdlbnQvbWliZ3JvdXAvbWliX21vZHVsZV9pbmNsdWRlcy5oCiAuL2FnZW50X3JlZ2lzdHJ5LmxvOiBtaWJncm91cC9leGFtcGxlcy9leGFtcGxlLmggbWliZ3JvdXAvdGVzdGhhbmRsZXIuaAotLi9hZ2VudF9yZWdpc3RyeS5sbzogbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmggbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmgKKy4vYWdlbnRfcmVnaXN0cnkubG86IG1pYmdyb3VwL2hvc3QvaHJoX3N0b3JhZ2UuaCBtaWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IG1pYmdyb3VwL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IG1pYmdyb3VwL2hvc3QvaHJTV1J1blRhYmxlLmggbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogbWliZ3JvdXAvaG9zdC9ocl9kZXZpY2UuaCBtaWJncm91cC9ob3N0L2hyX290aGVyLmgKQEAgLTg0Niw3ICs4NDcsNyBAQAogLi9hZ2VudF9yZWdpc3RyeS5sbzogbWliZ3JvdXAvbWliSUkvYXQuaCBtaWJncm91cC9taWJJSS90Y3AuaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogbWliZ3JvdXAvbWliSUkvaWNtcC5oIG1pYmdyb3VwL21pYklJL3VkcC5oCiAuL2FnZW50X3JlZ2lzdHJ5LmxvOiBtaWJncm91cC9taWJJSS92YWNtX3ZhcnMuaCBtaWJncm91cC9taWJJSS9zZXRTZXJpYWxOby5oCi0uL2FnZW50X3JlZ2lzdHJ5LmxvOiBtaWJncm91cC9taWJJSS9pcHY2LmggbWliZ3JvdXAvdWNkLXNubXAvZGlzay5oCisuL2FnZW50X3JlZ2lzdHJ5LmxvOiBtaWJncm91cC9taWJJSS9pcHY2LmggbWliZ3JvdXAvdWNkLXNubXAvZGlza19ody5oCiAuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9hZ2VudC9taWJncm91cC9taWJkZWZzLmggbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5oCiAuL2FnZW50X3JlZ2lzdHJ5LmxvOiBtaWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5oIG1pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmgKQEAgLTg3MCw2ICs4NzEsNyBAQAogLi9hZ2VudF9yZWdpc3RyeS5sbzogbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogbWliZ3JvdXAvdXRpbGl0aWVzL292ZXJyaWRlLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IG1pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9od19tZW0uaAorLi9hZ2VudF9yZWdpc3RyeS5sbzogbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9od19mc3lzLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IG1pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHUuaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9saW51eC5oCiAuL2FnZW50X3JlZ2lzdHJ5LmxvOiBtaWJncm91cC9taWJJSS92YXJfcm91dGUuaCBtaWJncm91cC9taWJJSS90Y3BUYWJsZS5oCkBAIC05OTYsMTMgKzk5OCwxMyBAQAogLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTA3OSw3ICsxMDgxLDggQEAKIC4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAogLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3N5c09SVGFibGUuaAogLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaAotLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oIAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKQEAgLTExMDUsNyArMTEwOCw2IEBACiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTEyMTgsMTMgKzEyMjAsMTMgQEAKIC4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTI5NywxMSArMTI5OSwxMCBAQAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oIG0ybS5oCi0uL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9zdHJ1Y3QuaCAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVzLmgKIC4vbWliX21vZHVsZXMubG86IC4uL2FnZW50L21pYmdyb3VwL21pYl9tb2R1bGVfaW5jbHVkZXMuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZXhhbXBsZXMvZXhhbXBsZS5oIG1pYmdyb3VwL3Rlc3RoYW5kbGVyLmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5oIG1pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9ob3N0L2hyaF9zdG9yYWdlLmggbWliZ3JvdXAvaG9zdC9ocmhfZmlsZXN5cy5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9ob3N0L2hyU1dSdW5UYWJsZS5oIG1pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2hvc3QvaHJfZGV2aWNlLmggbWliZ3JvdXAvaG9zdC9ocl9vdGhlci5oCkBAIC0xMzQ4LDcgKzEzNDksNyBAQAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvbWliSUkvYXQuaCBtaWJncm91cC9taWJJSS90Y3AuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvbWliSUkvaWNtcC5oIG1pYmdyb3VwL21pYklJL3VkcC5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9taWJJSS92YWNtX3ZhcnMuaCBtaWJncm91cC9taWJJSS9zZXRTZXJpYWxOby5oCi0uL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9taWJJSS9pcHY2LmggbWliZ3JvdXAvdWNkLXNubXAvZGlzay5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9taWJJSS9pcHY2LmggbWliZ3JvdXAvdWNkLXNubXAvZGlza19ody5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9hZ2VudC9taWJncm91cC9taWJkZWZzLmggbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5oIG1pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmgKQEAgLTEzNzIsNiArMTM3Myw3IEBACiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRUYWJsZS5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC91dGlsaXRpZXMvb3ZlcnJpZGUuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L2h3X21lbS5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9oYXJkd2FyZS9mc3lzL2h3X2ZzeXMuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdS5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2xpbnV4LmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5oIG1pYmdyb3VwL21pYklJL3RjcFRhYmxlLmgKQEAgLTEzODMsNiArMTM4NSw3IEBACiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmgKKy4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfY29uc3RhbnRzLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuaApAQCAtMTQ5NywxMyArMTUwMCwxMyBAQAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNTc5LDYgKzE1ODIsNyBAQAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vYmplY3RfbW9uaXRvci5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaCAKIC4vc25tcF9hZ2VudC5sbzogIC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCkBAIC0xNjA1LDcgKzE2MDksNiBAQAogLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC0xNjg5LDggKzE2OTIsMTAgQEAKIC4vc25tcF9hZ2VudC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5oCiAuL3NubXBfYWdlbnQubG86IC4uL2FnZW50L21pYmdyb3VwL3NtdXgvc211eC5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi9zbm1wZC5sbzogIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCkBAIC0xNzEzLDcgKzE3MTgsNiBAQAogLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaApAQCAtMTc5MywxNzcgKzE3OTcsNyBAQAogLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oIG0ybS5oIHNubXBkLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3N0cnVjdC5oIC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZXMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdXRpbF9mdW5jcy5oIG1pYmdyb3VwL3V0aWxfZnVuY3MvRXhpdC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC91dGlsX2Z1bmNzL3Jlc3RhcnQuaCBtaWJncm91cC9zdHJ1Y3QuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCi0uL3NubXBkLmxvOiAuLi9hZ2VudC9taWJncm91cC9taWJfbW9kdWxlX2luY2x1ZGVzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2V4YW1wbGVzL2V4YW1wbGUuaCBtaWJncm91cC90ZXN0aGFuZGxlci5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuaCBtaWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaG9zdC9oclNXSW5zdGFsbGVkVGFibGUuaCBtaWJncm91cC9ob3N0L2hyU1dSdW5UYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9ob3N0L2hyX3N5c3RlbS5oIG1pYmdyb3VwL2hvc3QvaHJfZGV2aWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2hvc3QvaHJfb3RoZXIuaCBtaWJncm91cC9ob3N0L2hyX3Byb2MuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaG9zdC9ocl9uZXR3b3JrLmggbWliZ3JvdXAvaG9zdC9ocl9wcmludC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9ob3N0L2hyX2Rpc2suaCBtaWJncm91cC9ob3N0L2hyX3BhcnRpdGlvbi5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9leGFtcGxlcy9zY2FsYXJfaW50LmggbWliZ3JvdXAvZXhhbXBsZXMvd2F0Y2hlZC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9leGFtcGxlcy9kYXRhX3NldC5oIG1pYmdyb3VwL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdHNtLW1pYi9zbm1wVHNtQ29uZmlndXJhdGlvblVzZVByZWZpeC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9SbW9uL3Jvd3MuaCBtaWJncm91cC9SbW9uL2FndXRpbC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9SbW9uL3N0YXRpc3RpY3MuaCBtaWJncm91cC9SbW9uL2FsYXJtVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvUm1vbi9oaXN0b3J5LmggbWliZ3JvdXAvUm1vbi9ldmVudC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtU2Vzc2lvbi9zbm1wVGxzdG1TZXNzaW9uLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1BZGRyVGFibGUvc25tcFRsc3RtQWRkclRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1DZXJ0VG9UU05UYWJsZS9zbm1wVGxzdG1DZXJ0VG9UU05UYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtUGFyYW1zVGFibGUvc25tcFRsc3RtUGFyYW1zVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdHNtLW1pYi9zbm1wVHNtU3RhdHMvc25tcFRzbVN0YXRzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVTY2FsYXJzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJEZWx0YVRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJCb29sZWFuVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckNvbmYuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmgKLS4vc25tcGQubG86IC4uL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFNldFRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudENvbmYuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c0NvbmYuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0c181XzUuaCBtaWJncm91cC9zbm1wdjMvdXNtU3RhdHNfNV81LmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3NubXB2My9zbm1wRW5naW5lLmggbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvbWliSUkvc25tcF9taWJfNV81LmggbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmggbWliZ3JvdXAvbWliSUkvYXQuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvbWliSUkvaXAuaCBtaWJncm91cC9taWJJSS92YXJfcm91dGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvbWliSUkvcm91dGVfd3JpdGUuaCBtaWJncm91cC9taWJJSS9hdC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS90Y3AuaCBtaWJncm91cC9taWJJSS9pY21wLmggbWliZ3JvdXAvbWliSUkvdWRwLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oIG1pYmdyb3VwL21pYklJL3NldFNlcmlhbE5vLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL21pYklJL2lwdjYuaCBtaWJncm91cC91Y2Qtc25tcC9kaXNrLmgKLS4vc25tcGQubG86IC4uL2FnZW50L21pYmdyb3VwL21pYmRlZnMuaCBtaWJncm91cC91Y2Qtc25tcC9wcm9jLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmggbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuaCBtaWJncm91cC91Y2Qtc25tcC9sb2FkYXZlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2FnZW50L2V4dGVuZC5oIG1pYmdyb3VwL3VjZC1zbm1wL2Vycm9ybWliLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3VjZC1zbm1wL2ZpbGUuaCBtaWJncm91cC91Y2Qtc25tcC9kbG1vZC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC91Y2Qtc25tcC9wcm94eS5oIG1pYmdyb3VwL3VjZC1zbm1wL2xvZ21hdGNoLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3VjZC1zbm1wL21lbW9yeS5oIG1pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvYWdlbnQvbnNNb2R1bGVUYWJsZS5oIG1pYmdyb3VwL2FnZW50L25zRGVidWcuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvYWdlbnQvbnNDYWNoZS5oIG1pYmdyb3VwL2FnZW50L25zTG9nZ2luZy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb3JlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvbmYuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdXRpbGl0aWVzL292ZXJyaWRlLmggbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L2h3X21lbS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9oYXJkd2FyZS9jcHUvY3B1LmggbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9saW51eC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS92YXJfcm91dGUuaCBtaWJncm91cC9taWJJSS90Y3BUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS91ZHBUYWJsZS5oIG1pYmdyb3VwL21pYklJL3ZhY21fY29udGV4dC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9jb25zdGFudHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2RhdGFfYWNjZXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9jb25zdGFudHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9pbnRlcmZhY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5oCi0uL3NubXBkLmxvOiAuLi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9jb25zdGFudHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2RhdGFfYWNjZXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfY29uc3RhbnRzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2NvbnN0YW50cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfaW50ZXJmYWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfZGF0YV9hY2Nlc3MuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlci5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfb2lkcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZW51bXMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfYWNjZXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhX2dldC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvYXJwLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfY29uc3RhbnRzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXJmYWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9kYXRhX2FjY2Vzcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwc3RhdHMuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9jb25zdGFudHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfaW50ZXJmYWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3Njb3Blem9uZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfb2lkcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZW51bXMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGFfYWNjZXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfb2lkcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZW51bXMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9kYXRhX2dldC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGUuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9yb3V0ZS5oCi0uL3NubXBkLmxvOiAuLi9hZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV9oZWFkZXJzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9jb25zdGFudHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2RhdGFfYWNjZXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZV9jb25zdGFudHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2RhdGFfYWNjZXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3RjcENvbm4uaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2NvbnN0YW50cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfaW50ZXJmYWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfZGF0YV9hY2Nlc3MuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfY29uc3RhbnRzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2ludGVyZmFjZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9kYXRhX2FjY2Vzcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9jb25zdGFudHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfaW50ZXJmYWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2RhdGFfYWNjZXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaCBtaWJncm91cC9zbXV4L3NtdXguaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlcy5oIG1pYmdyb3VwL3NtdXgvc211eC5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaCAKIC4vc25tcF9wZXJsLmxvOiAgLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCkBAIC0xOTkxLDEzICsxODI1LDEzIEBACiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMjA5NywxMyArMTkzMSwxMyBAQAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTIxODMsMTEgKzIwMTcsMTEgQEAKIC4vc25tcF92YXJzLmxvOiAuLi9hZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5oCiAuL3NubXBfdmFycy5sbzogLi4vYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmgKIC4vc25tcF92YXJzLmxvOiAuLi9hZ2VudC9taWJncm91cC9hZ2VudF9tb2R1bGVfaW5jbHVkZXMuaAotLi9zbm1wX3ZhcnMubG86IG1pYmdyb3VwL3NtdXgvc211eC5oIG1pYmdyb3VwL3NubXB2My91c21Db25mLmgKLS4vc25tcF92YXJzLmxvOiBtaWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmggbWliZ3JvdXAvbWliSUkvdmFjbV9jb25mLmgKKy4vc25tcF92YXJzLmxvOiBtaWJncm91cC9zbXV4L3NtdXguaCBtaWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmgKKy4vc25tcF92YXJzLmxvOiBtaWJncm91cC9zbm1wdjMvdXNtQ29uZi5oIG1pYmdyb3VwL21pYklJL3ZhY21fY29uZi5oCiAuL3NubXBfdmFycy5sbzogLi4vYWdlbnQvbWliZ3JvdXAvbWliX21vZHVsZV9pbmNsdWRlcy5oCiAuL3NubXBfdmFycy5sbzogbWliZ3JvdXAvZXhhbXBsZXMvZXhhbXBsZS5oIG1pYmdyb3VwL3Rlc3RoYW5kbGVyLmgKLS4vc25tcF92YXJzLmxvOiBtaWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuaCBtaWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuaAorLi9zbm1wX3ZhcnMubG86IG1pYmdyb3VwL2hvc3QvaHJoX3N0b3JhZ2UuaCBtaWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmgKIC4vc25tcF92YXJzLmxvOiBtaWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5oCiAuL3NubXBfdmFycy5sbzogbWliZ3JvdXAvaG9zdC9oclNXUnVuVGFibGUuaCBtaWJncm91cC9ob3N0L2hyX3N5c3RlbS5oCiAuL3NubXBfdmFycy5sbzogbWliZ3JvdXAvaG9zdC9ocl9kZXZpY2UuaCBtaWJncm91cC9ob3N0L2hyX290aGVyLmgKQEAgLTIyMzQsNyArMjA2OCw3IEBACiAuL3NubXBfdmFycy5sbzogbWliZ3JvdXAvbWliSUkvYXQuaCBtaWJncm91cC9taWJJSS90Y3AuaAogLi9zbm1wX3ZhcnMubG86IG1pYmdyb3VwL21pYklJL2ljbXAuaCBtaWJncm91cC9taWJJSS91ZHAuaAogLi9zbm1wX3ZhcnMubG86IG1pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oIG1pYmdyb3VwL21pYklJL3NldFNlcmlhbE5vLmgKLS4vc25tcF92YXJzLmxvOiBtaWJncm91cC9taWJJSS9pcHY2LmggbWliZ3JvdXAvdWNkLXNubXAvZGlzay5oCisuL3NubXBfdmFycy5sbzogbWliZ3JvdXAvbWliSUkvaXB2Ni5oIG1pYmdyb3VwL3VjZC1zbm1wL2Rpc2tfaHcuaAogLi9zbm1wX3ZhcnMubG86IC4uL2FnZW50L21pYmdyb3VwL21pYmRlZnMuaCBtaWJncm91cC91Y2Qtc25tcC9wcm9jLmgKIC4vc25tcF92YXJzLmxvOiBtaWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5oIG1pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuaAogLi9zbm1wX3ZhcnMubG86IG1pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5oIG1pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuaApAQCAtMjI1Niw3ICsyMDkwLDggQEAKIC4vc25tcF92YXJzLmxvOiBtaWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb25mLmgKIC4vc25tcF92YXJzLmxvOiBtaWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRUYWJsZS5oCiAuL3NubXBfdmFycy5sbzogbWliZ3JvdXAvdXRpbGl0aWVzL292ZXJyaWRlLmgKLS4vc25tcF92YXJzLmxvOiBtaWJncm91cC9oYXJkd2FyZS9tZW1vcnkvaHdfbWVtLmggbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdS5oCisuL3NubXBfdmFycy5sbzogbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L2h3X21lbS5oCisuL3NubXBfdmFycy5sbzogbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9od19mc3lzLmggbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdS5oCiAuL3NubXBfdmFycy5sbzogbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9saW51eC5oIG1pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5oCiAuL3NubXBfdmFycy5sbzogbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuaCBtaWJncm91cC9taWJJSS91ZHBUYWJsZS5oCiAuL3NubXBfdmFycy5sbzogbWliZ3JvdXAvbWliSUkvdmFjbV9jb250ZXh0LmggbWliZ3JvdXAvaXAtbWliL2lwX3NjYWxhcnMuaApAQCAtMjM1NCw2ICsyMTg5LDcgQEAKIC4vc25tcF92YXJzLmxvOiBtaWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmggc25tcF9wZXJsLmgKIC4vc25tcF92YXJzLmxvOiAuLi9hZ2VudC9taWJncm91cC9hZ2VudF9tb2R1bGVfaW5pdHMuaAogLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKQEAgLTIzODAsNyArMjIxNiw2IEBACiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTI0NjIsNiArMjI5Nyw3IEBACiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oCiAuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKQEAgLTI0ODgsNyArMjMyNCw2IEBACiAuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMjU5NSwxMyArMjQzMCwxMyBAQAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0yNjc2LDYgKzI1MTEsNyBAQAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTI3MDIsNyArMjUzOCw2IEBACiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMjgwOSwxMyArMjY0NCwxMyBAQAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTI4OTAsNiArMjcyNSw3IEBACiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCkBAIC0yOTE2LDcgKzI3NTIsNiBAQAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC0yOTk3LDYgKzI4MzIsNyBAQAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0zMDIzLDcgKzI4NTksNiBAQAogLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTMxMzAsMTMgKzI5NjUsMTMgQEAKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTMyMzcsMTMgKzMwNzIsMTMgQEAKIC4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zMzQ0LDEzICszMTc5LDEzIEBACiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMzQ1MiwxMyArMzI4NywxMyBAQAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zNTMzLDYgKzMzNjgsNyBAQAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIApAQCAtMzU1OSw3ICszMzk1LDYgQEAKIC4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTM2NjYsMTMgKzM1MDEsMTMgQEAKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMzc3MywxMyArMzYwOCwxMyBAQAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zODgwLDEzICszNzE1LDEzIEBACiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTM5NjEsNiArMzc5Niw3IEBACiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL2hlbHBlcnMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hlbHBlcnMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaGVscGVycy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTM5ODcsNyArMzgyMyw2IEBACiAuL2hlbHBlcnMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2hlbHBlcnMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2hlbHBlcnMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9oZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC00MDY4LDYgKzM5MDMsNyBAQAogLi9oZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKQEAgLTQwOTQsNyArMzkzMCw2IEBACiAuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTQxNzQsOSArNDAwOSwxMCBAQAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCi0uL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3Rhc2hfY2FjaGUuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX3RvX25leHQuaAorLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmgKIC4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC00MjAzLDcgKzQwMzksNiBAQAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTQyODYsNiArNDEyMSw3IEBACiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF90b19uZXh0LmgKIC4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmgKIC4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCkBAIC00MzEyLDcgKzQxNDgsNiBAQAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC00MzkzLDYgKzQyMjgsNyBAQAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvdGFibGUubG86ICAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIApAQCAtNDQxOSw3ICs0MjU1LDYgQEAKIC4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtNDUwMCw2ICs0MzM1LDcgQEAKIC4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTQ1MjYsNyArNDM2Miw2IEBACiAuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC00NjA3LDYgKzQ0NDIsNyBAQAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCkBAIC00NjMzLDcgKzQ0NjksNiBAQAogLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTQ3MTQsNiArNDU0OSw3IEBACiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC00NzQwLDcgKzQ1NzYsNiBAQAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTQ4MjEsNiArNDY1Niw3IEBACiAuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTQ4NDcsNyArNDY4Myw2IEBACiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTQ5MjksNiArNDc2NCw3IEBACiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oCiAuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCkBAIC00OTU1LDcgKzQ3OTEsNiBAQAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtNTAzNiw2ICs0ODcxLDcgQEAKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCkBAIC01MDYyLDcgKzQ4OTgsNiBAQAogLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC01MTQzLDYgKzQ5NzgsNyBAQAogLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIApAQCAtNTE2OSw3ICs1MDA1LDYgQEAKIC4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC01Mjc2LDEzICs1MTExLDEzIEBACiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTUzNTksNiArNTE5NCw3IEBACiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmgKIC4vbWliZ3JvdXAva2VybmVsX3N1bm9zNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC01Mzg1LDcgKzUyMjEsNiBAQAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtNTQ2Nyw2ICs1MzAyLDcgQEAKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIuaAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKQEAgLTU0OTMsNyArNTMyOSw2IEBACiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTU1NzMsMTQgKzU0MDgsMTEgQEAKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiBtaWJncm91cC9zdHJ1Y3QuaCAuL21pYmdyb3VwL3V0aWxfZnVuY3MuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiBtaWJncm91cC91dGlsX2Z1bmNzL0V4aXQuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiBtaWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKLS4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKLS4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogbWliZ3JvdXAvdXRpbF9mdW5jcy9yZXN0YXJ0LmgKLS4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogbWliZ3JvdXAvdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4vbWliZ3JvdXAvc3RydWN0LmggLi9taWJncm91cC91dGlsX2Z1bmNzLmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi9taWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi9taWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaAorLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuL21pYmdyb3VwL3V0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuL21pYmdyb3VwL3V0aWxpdGllcy9leGVjdXRlLmgKLS4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi9taWJncm91cC91Y2Qtc25tcC9lcnJvcm1pYi5oCi0uL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2FnZW50L21pYmdyb3VwL21pYmRlZnMuaAogLi9taWJncm91cC93aW5FeHRETEwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vbWliZ3JvdXAvd2luRXh0RExMLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliZ3JvdXAvd2luRXh0RExMLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKZGlmZiAtLWdpdCBhL2FnZW50L01ha2VmaWxlLmluIGIvYWdlbnQvTWFrZWZpbGUuaW4KaW5kZXggZmE1MTBhOS4uNzQ4YjAxYyAxMDA2NDQKLS0tIGEvYWdlbnQvTWFrZWZpbGUuaW4KKysrIGIvYWdlbnQvTWFrZWZpbGUuaW4KQEAgLTMsNiArMyw3IEBACiAjCiAKIHRvcF9idWlsZGRpcgk9IC4uCitteXN1YmRpcj1hZ2VudAogCiAjIHVzZSBHTlUgdnBhdGgsIGlmIGF2YWlsYWJsZSwgdG8gb25seSBzZXQgYSBwYXRoIGZvciBzb3VyY2UgYW5kIGhlYWRlcnMKICMgVlBBVEggd2lsbCBwaWNrIHVwIG9iamVjdHMgdG9vLCB3aGljaCBpcyBiYWQgaWYgeW91IGFyZSBzaGFyaW5nIGEKQEAgLTE2LDYgKzE3LDcgQEAKICMgd2hhdCB0byBpbnN0YWxsCiAjCiBTVUJESVJTPWhlbHBlcnMgbWliZ3JvdXAKK0ZUU1VCRElSUz1taWJncm91cCBoZWxwZXJzCiAKIElOU1RBTExTQklOUFJPR1M9IEBTTk1QREAKIElOU1RBTExMSUJTCT0gbGlibmV0c25tcGFnZW50LiQoTElCX0VYVEVOU0lPTikkKExJQl9WRVJTSU9OKQpAQCAtNzYsOCArNzgsNyBAQAogCiBJTkNMVURFTUlCR1JPVVBESVI9YWdlbnQvbWliZ3JvdXAKIElOQ0xVREVNSUJHUk9VUERJUkhFQURFUlM9c3RydWN0LmggdXRpbF9mdW5jcy5oIHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCBcCi0JdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oIFwKLQl1dGlsX2Z1bmNzL0V4aXQuaCB1dGlsX2Z1bmNzL3Jlc3RhcnQuaAorCXV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaAogCiBPVEhFUklOU1RBTEw9aW5zdGFsbG1pYmdyb3VwaGVhZGVycyBARU1CRURQRVJMSU5TVEFMTEAKIE9USEVSVU5JTlNUQUxMPUBFTUJFRFBFUkxVTklOU1RBTExACkBAIC0xMTYsOSArMTE3LDEwIEBACiAKIExBR0VOVExJQlMJPSBATEFHRU5UTElCU0AKIExNSUJMSUJTCT0gQExNSUJMSUJTQAorVkFMX0xJQlMJPSBAVkFMX0xJQlNACiBQRVJMTERPUFRTX0ZPUl9BUFBTID0gQFBFUkxMRE9QVFNfRk9SX0FQUFNACiBQRVJMTERPUFRTX0ZPUl9MSUJTID0gQFBFUkxMRE9QVFNfRk9SX0xJQlNACi1MSUJTCQk9ICQoVVNFTElCUykgQEFHRU5UTElCU0AgJChQRVJMTERPUFRTX0ZPUl9BUFBTKQorTElCUwkJPSAkKFVTRUxJQlMpIEBBR0VOVExJQlNAICQoUEVSTExET1BUU19GT1JfQVBQUykgJChWQUxfTElCUykKIE9VUl9BR0VOVF9MSUJTCT0gJChBR0VOVExJQikgJChNSUJMSUIpICQoTElCUykgQERMTElCU0AKIENQUEZMQUdTCT0gJChUT1BfSU5DTFVERVMpIC1JLiAkKEFHRU5UX0lOQ0xVREVTKSAkKE1JQkdST1VQX0lOQ0xVREVTKSBcCiAJCSAgJChTTk1QTElCX0lOQ0xVREVTKSBAQ1BQRkxBR1NAIApAQCAtMTMwLDI1ICsxMzIsMTcgQEAKIAogIyBsaWJuZXRzbm1wbWlicyBvYmplY3RzLgogQG1pYmdyb3VwX2xpc3RfbG9ACitAbWliZ3JvdXBfbGlzdF9mdEAKIEBtaWJncm91cF9saXN0X29ACiBAYWdlbnRncm91cF9saXN0X2xvQAorQGFnZW50Z3JvdXBfbGlzdF9mdEAKIEBhZ2VudGdyb3VwX2xpc3Rfb0AKK0ZUTUlCT0JKUwk9ICQobWliZ3JvdXBfbGlzdF9mdCkgbWliX21vZHVsZXMuZnQgYXV0b19ubGlzdC5mdAogTE1JQk9CSlMJPSAkKG1pYmdyb3VwX2xpc3RfbG8pIG1pYl9tb2R1bGVzLmxvIGF1dG9fbmxpc3QubG8KIE1JQk9CSlMJCT0gJChtaWJncm91cF9saXN0X28pIG1pYl9tb2R1bGVzLm8gYXV0b19ubGlzdC5vCiAKICMgbGlibmV0c25tcGFnZW50IG9iamVjdHMKIExJQkFHRU5UT0JKUz0gXAotCWFnZW50X2hhbmRsZXIubyBcCi0JYWdlbnRfaW5kZXgubyBcCi0JYWdlbnRfcmVhZF9jb25maWcubyBcCi0JYWdlbnRfcmVnaXN0cnkubyBcCi0JYWdlbnRfc3lzT1JUYWJsZS5vIFwKLQlhZ2VudF90cmFwLm8gXAotCWtlcm5lbC5vIFwKLQlzbm1wX2FnZW50Lm8gXAotCXNubXBfdmFycy5vIFwKLQkkKGFnZW50Z3JvdXBfbGlzdF9vKSBcCi0JQE9USEVSQUdFTlRMSUJPQkpTQCBcCiAJaGVscGVycy9hbGxfaGVscGVycy5vIFwKIAloZWxwZXJzL2JhYnlfc3RlcHMubyBcCiAJaGVscGVycy9idWxrX3RvX25leHQubyBcCkBAIC0xNzUsMjAgKzE2OSwyMCBAQAogCWhlbHBlcnMvdGFibGVfaXRlcmF0b3IubyBcCiAJaGVscGVycy90YWJsZV9yb3cubyBcCiAJaGVscGVycy90YWJsZV90ZGF0YS5vIFwKLQloZWxwZXJzL3dhdGNoZXIubworCWhlbHBlcnMvd2F0Y2hlci5vIFwKKwlhZ2VudF9oYW5kbGVyLm8gXAorCWFnZW50X2luZGV4Lm8gXAorCWFnZW50X3JlYWRfY29uZmlnLm8gXAorCWFnZW50X3JlZ2lzdHJ5Lm8gXAorCWFnZW50X3N5c09SVGFibGUubyBcCisJYWdlbnRfdHJhcC5vIFwKKwlrZXJuZWwubyBcCisJc25tcF9hZ2VudC5vIFwKKwlzbm1wX3ZhcnMubyBcCisJJChhZ2VudGdyb3VwX2xpc3RfbykgXAorCUBPVEhFUkFHRU5UTElCT0JKU0AKIAogTExJQkFHRU5UT0JKUz0gXAotCWFnZW50X2hhbmRsZXIubG8gXAotCWFnZW50X2luZGV4LmxvIFwKLQlhZ2VudF9yZWFkX2NvbmZpZy5sbyBcCi0JYWdlbnRfcmVnaXN0cnkubG8gXAotCWFnZW50X3N5c09SVGFibGUubG8gXAotCWFnZW50X3RyYXAubG8gXAotCWtlcm5lbC5sbyBcCi0Jc25tcF9hZ2VudC5sbyBcCi0Jc25tcF92YXJzLmxvIFwKLQkkKGFnZW50Z3JvdXBfbGlzdF9sbykgXAotCUBPVEhFUkFHRU5UTElCTE9CSlNAIFwKIAloZWxwZXJzL2FsbF9oZWxwZXJzLmxvIFwKIAloZWxwZXJzL2JhYnlfc3RlcHMubG8gXAogCWhlbHBlcnMvYnVsa190b19uZXh0LmxvIFwKQEAgLTIxNSwxOCArMjA5LDcyIEBACiAJaGVscGVycy90YWJsZV9pdGVyYXRvci5sbyBcCiAJaGVscGVycy90YWJsZV9yb3cubG8gXAogCWhlbHBlcnMvdGFibGVfdGRhdGEubG8gXAotCWhlbHBlcnMvd2F0Y2hlci5sbworCWhlbHBlcnMvd2F0Y2hlci5sbyBcCisJYWdlbnRfaGFuZGxlci5sbyBcCisJYWdlbnRfaW5kZXgubG8gXAorCWFnZW50X3JlYWRfY29uZmlnLmxvIFwKKwlhZ2VudF9yZWdpc3RyeS5sbyBcCisJYWdlbnRfc3lzT1JUYWJsZS5sbyBcCisJYWdlbnRfdHJhcC5sbyBcCisJa2VybmVsLmxvIFwKKwlzbm1wX2FnZW50LmxvIFwKKwlzbm1wX3ZhcnMubG8gXAorCSQoYWdlbnRncm91cF9saXN0X2xvKSBcCisJQE9USEVSQUdFTlRMSUJMT0JKU0AKKworTExJQkFHRU5URlRTPSBcCisJaGVscGVycy9hbGxfaGVscGVycy5mdCBcCisJaGVscGVycy9iYWJ5X3N0ZXBzLmZ0IFwKKwloZWxwZXJzL2J1bGtfdG9fbmV4dC5mdCBcCisJaGVscGVycy9jYWNoZV9oYW5kbGVyLmZ0IFwKKwloZWxwZXJzL2RlYnVnX2hhbmRsZXIuZnQgXAorCWhlbHBlcnMvaW5zdGFuY2UuZnQgXAorCWhlbHBlcnMvbW9kZV9lbmRfY2FsbC5mdCBcCisJaGVscGVycy9tdWx0aXBsZXhlci5mdCBcCisJaGVscGVycy9udWxsLmZ0IFwKKwloZWxwZXJzL29sZF9hcGkuZnQgXAorCWhlbHBlcnMvcmVhZF9vbmx5LmZ0IFwKKwloZWxwZXJzL3Jvd19tZXJnZS5mdCBcCisJaGVscGVycy9zY2FsYXIuZnQgXAorCWhlbHBlcnMvc2NhbGFyX2dyb3VwLmZ0IFwKKwloZWxwZXJzL3NlcmlhbGl6ZS5mdCBcCisJaGVscGVycy9zbm1wX2dldF9zdGF0aXN0aWMuZnQgXAorCWhlbHBlcnMvc3Rhc2hfY2FjaGUuZnQgXAorCWhlbHBlcnMvc3Rhc2hfdG9fbmV4dC5mdCBcCisJaGVscGVycy90YWJsZS5mdCBcCisJaGVscGVycy90YWJsZV9hcnJheS5mdCBcCisJaGVscGVycy90YWJsZV9jb250YWluZXIuZnQgXAorCWhlbHBlcnMvdGFibGVfZGF0YS5mdCBcCisJaGVscGVycy90YWJsZV9kYXRhc2V0LmZ0IFwKKwloZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmZ0IFwKKwloZWxwZXJzL3RhYmxlX3Jvdy5mdCBcCisJaGVscGVycy90YWJsZV90ZGF0YS5mdCBcCisJaGVscGVycy93YXRjaGVyLmZ0IFwKKwlhZ2VudF9oYW5kbGVyLmZ0IFwKKwlhZ2VudF9pbmRleC5mdCBcCisJYWdlbnRfcmVhZF9jb25maWcuZnQgXAorCWFnZW50X3JlZ2lzdHJ5LmZ0IFwKKwlhZ2VudF9zeXNPUlRhYmxlLmZ0IFwKKwlhZ2VudF90cmFwLmZ0IFwKKwlrZXJuZWwuZnQgXAorCXNubXBfYWdlbnQuZnQgXAorCXNubXBfdmFycy5mdCBcCisJJChhZ2VudGdyb3VwX2xpc3RfZnQpIFwKKwlAT1RIRVJBR0VOVExJQkxGVFNACiAKICMgVGhlIGFnZW50IG9iamVjdHMuCiBBR0VOVE9CSlM9c25tcGQubyBAb3RoZXJfYWdlbnRvYmpzQAogTEFHRU5UT0JKUz1zbm1wZC5sbyBAb3RoZXJfbGFnZW50b2Jqc0AKK0ZUQUdFTlRPQkpTPXNubXBkLmZ0IEBvdGhlcl9mdGFnZW50b2Jqc0AKIAogIwogIyBEZWZpbmUgT0JKUyBhbmQgTE9CSlMgZm9yIGNsZWFuIHRhcmdldCAoanVzdCB0aGlzIGRpcmVjdG9yeSkKICMKIE9CSlMJCT0gJChMSUJBR0VOVE9CSlMpICAkKEFHRU5UT0JKUykgIG1pYl9tb2R1bGVzLm8gIGF1dG9fbmxpc3QubwogTE9CSlMJCT0gJChMTElCQUdFTlRPQkpTKSAkKExBR0VOVE9CSlMpIG1pYl9tb2R1bGVzLmxvIGF1dG9fbmxpc3QubG8KK0ZUT0JKUwkJPSAkKExMSUJBR0VOVEZUUykgJChGVEFHRU5UT0JKUykgbWliX21vZHVsZXMuZnQgYXV0b19ubGlzdC5mdAogCitGRUFUVVJFRklMRSAgICAgPSAkKHRvcF9idWlsZGRpcikvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9mZWF0dXJlcy5oCiAKIGFsbDogYWdlbnRsaWIgc3ViZGlycyBtaWJsaWIgJChJTlNUQUxMQklOUFJPR1MpICQoSU5TVEFMTFNCSU5QUk9HUykKIApkaWZmIC0tZ2l0IGEvYWdlbnQvYWdlbnRfaGFuZGxlci5jIGIvYWdlbnQvYWdlbnRfaGFuZGxlci5jCmluZGV4IGNhNmFlNGMuLjU5ZTk2MTMgMTAwNjQ0Ci0tLSBhL2FnZW50L2FnZW50X2hhbmRsZXIuYworKysgYi9hZ2VudC9hZ2VudF9oYW5kbGVyLmMKQEAgLTksNiArOSw3IEBACiAgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogCkBAIC0yMSw2ICsyMiw5IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGFnZW50X2hhbmRsZXIsIGxpYm5ldHNubXBhZ2VudCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGhhbmRsZXJfbWFya19yZXF1ZXN0c19hc19kZWxlZ2F0ZWQsIGFnZW50X2hhbmRsZXIpCiAKIHN0YXRpYyBuZXRzbm1wX21pYl9oYW5kbGVyICpfY2xvbmVfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICppdCk7CiAKQEAgLTU3Niw2ICs1ODAsNyBAQAogICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7ICAgIC8qIGxlZ2FsICovCiAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKICAgICBjYXNlIE1PREVfU0VUX0FDVElPTjoKQEAgLTU5MCw2ICs1OTUsNyBAQAogICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICBkZWZhdWx0OgogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidW5rbm93biBtb2RlIGluIG5ldHNubXBfY2FsbF9oYW5kbGVycyEgYnVnIVxuIik7CkBAIC02NDEsNiArNjQ3LDggQEAKICAqCiAgKiAgQHJldHVybiBSZXR1cm5zIFNOTVBFUlJfU1VDQ0VTUyBvciBTTk1QX0VSUl8qIGVycm9yIGNvZGUuCiAgKi8KK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihuZXRzbm1wX2NhbGxfbmV4dF9oYW5kbGVyX29uZV9yZXF1ZXN0LG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX05FVFNOTVBfQ0FMTF9ORVhUX0hBTkRMRVJfT05FX1JFUVVFU1QKIE5FVFNOTVBfSU5MSU5FIGludAogbmV0c25tcF9jYWxsX25leHRfaGFuZGxlcl9vbmVfcmVxdWVzdChuZXRzbm1wX21pYl9oYW5kbGVyICpjdXJyZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLApAQCAtNjYyLDYgKzY3MCw3IEBACiAgICAgcmVxdWVzdHMtPm5leHQgPSByZXF1ZXN0OwogICAgIHJldHVybiByZXQ7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ORVRTTk1QX0NBTExfTkVYVF9IQU5ETEVSX09ORV9SRVFVRVNUICovCiAKIC8qKiBEZWFsbG9jYXRlcyByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gaGFuZGxlci4KICAqICBUaGUgaGFuZGxlciBpcyByZW1vdmVkIGZyb20gY2hhaW4gYW5kIHRoZW4gZnJlZWQuCkBAIC03MDQsMjcgKzcxMyw0MSBAQAogewogICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKmggPSBOVUxMOwogCi0gICAgaWYgKGhhbmRsZXIgPT0gTlVMTCkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgaWYgKCFoYW5kbGVyKQorICAgICAgICBnb3RvIGVycjsKIAogICAgIGggPSBfY2xvbmVfaGFuZGxlcihoYW5kbGVyKTsKKyAgICBpZiAoIWgpCisgICAgICAgIGdvdG8gZXJyOwogCi0gICAgaWYgKGggIT0gTlVMTCkgeworICAgIC8qCisgICAgICogUHJvdmlkaW5nIGEgY2xvbmUgZnVuY3Rpb24gd2l0aG91dCBhIGZyZWUgZnVuY3Rpb24gaXMgYXNraW5nIGZvcgorICAgICAqIG1lbW9yeSBsZWFrcywgYW5kIHByb3ZpZGluZyBhIGZyZWUgZnVuY3Rpb24gd2l0aG91dCBjbG9uZSBmdW5jdGlvbgorICAgICAqIGlzIGFza2luZyBmb3IgbWVtb3J5IGNvcnJ1cHRpb24uIEhlbmNlIHRoZSBsb2cgc3RhdGVtZW50IGJlbG93LgorICAgICAqLworICAgIGlmICghIWhhbmRsZXItPmRhdGFfY2xvbmUgIT0gISFoYW5kbGVyLT5kYXRhX2ZyZWUpCisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJkYXRhX2Nsb25lIC8gZGF0YV9mcmVlIGluY29uc2lzdGVudCAoJXMpXG4iLAorICAgICAgICAgICAgICAgICBoYW5kbGVyLT5oYW5kbGVyX25hbWUpOworICAgIGlmIChoYW5kbGVyLT5teXZvaWQgJiYgaGFuZGxlci0+ZGF0YV9jbG9uZSkgeworICAgICAgICBoLT5teXZvaWQgPSBoYW5kbGVyLT5kYXRhX2Nsb25lKGhhbmRsZXItPm15dm9pZCk7CisgICAgICAgIGlmICghaC0+bXl2b2lkKQorICAgICAgICAgICAgZ290byBlcnI7CisgICAgfSBlbHNlCiAgICAgICAgIGgtPm15dm9pZCA9IGhhbmRsZXItPm15dm9pZDsKLSAgICAgICAgaC0+ZGF0YV9mcmVlID0gaGFuZGxlci0+ZGF0YV9mcmVlOworICAgIGgtPmRhdGFfY2xvbmUgPSBoYW5kbGVyLT5kYXRhX2Nsb25lOworICAgIGgtPmRhdGFfZnJlZSA9IGhhbmRsZXItPmRhdGFfZnJlZTsKIAotICAgICAgICBpZiAoaGFuZGxlci0+bmV4dCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBoLT5uZXh0ID0gbmV0c25tcF9oYW5kbGVyX2R1cChoYW5kbGVyLT5uZXh0KTsKLSAgICAgICAgICAgIGlmIChoLT5uZXh0ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfZnJlZShoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGgtPm5leHQtPnByZXYgPSBoOwotICAgICAgICB9Ci0gICAgICAgIGgtPnByZXYgPSBOVUxMOwotICAgICAgICByZXR1cm4gaDsKKyAgICBpZiAoaGFuZGxlci0+bmV4dCAhPSBOVUxMKSB7CisgICAgICAgIGgtPm5leHQgPSBuZXRzbm1wX2hhbmRsZXJfZHVwKGhhbmRsZXItPm5leHQpOworICAgICAgICBpZiAoIWgtPm5leHQpCisgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgaC0+bmV4dC0+cHJldiA9IGg7CiAgICAgfQorICAgIGgtPnByZXYgPSBOVUxMOworICAgIHJldHVybiBoOworCitlcnI6CisgICAgbmV0c25tcF9oYW5kbGVyX2ZyZWUoaCk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTg5NCw5ICs5MTcsMTAgQEAKIH0KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSEFORExFUl9NQVJLX1JFUVVFU1RTX0FTX0RFTEVHQVRFRAogLyoqIFNldHMgYSBsaXN0IG9mIHJlcXVlc3RzIGFzIGRlbGVnYXRlZCBvciBub3QgZGVsZWdhdGVkLgogICogIFN3ZWVwcyB0aHJvdWdoIGdpdmVuIGNoYWluIG9mIHJlcXVlc3RzIGFuZCBzZXRzICdkZWxlZ2F0ZWQnCi0gKiAgZmxhZyBhY2NvcmRpbmdseSB0byB0aGUgaXNkZWxlZ2F0ZWQgcGFyYW1ldGVyLgorICogIGZsYWcgYWNjb3JkaW5nbHkgdG8gdGhlIGlzZGVsZWdhZGVkIHBhcmFtZXRlci4KICAqCiAgKiAgQHBhcmFtIHJlcXVlc3RzIFJlcXVlc3QgbGlzdC4KICAqICBAcGFyYW0gaXNkZWxlZ2F0ZWQgTmV3IHZhbHVlIG9mIHRoZSAnZGVsZWdhdGVkJyBmbGFnLgpAQCAtOTEwLDYgKzkzNCw3IEBACiAgICAgICAgIHJlcXVlc3RzID0gcmVxdWVzdHMtPm5leHQ7CiAgICAgfQogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSEFORExFUl9NQVJLX1JFUVVFU1RTX0FTX0RFTEVHQVRFRCAqLwogCiAvKiogQWRkcyBkYXRhIGZyb20gbm9kZSBsaXN0IHRvIHRoZSByZXF1ZXN0IGluZm9ybWF0aW9uIHN0cnVjdHVyZS4KICAqICBEYXRhIGluIHRoZSByZXF1ZXN0IGNhbiBiZSBsYXRlciBleHRyYWN0ZWQgYW5kIHVzZWQgYnkgc3VibW9kdWxlcy4KQEAgLTEyNDcsNiArMTI3Miw3IEBACiAgICAgc2VfYWRkX3BhaXJfdG9fc2xpc3QoImFnZW50X21vZGUiLCBzdHJkdXAoIkdFVCIpLCBNT0RFX0dFVCk7CiAgICAgc2VfYWRkX3BhaXJfdG9fc2xpc3QoImFnZW50X21vZGUiLCBzdHJkdXAoIkdFVE5FWFQiKSwgTU9ERV9HRVRORVhUKTsKICAgICBzZV9hZGRfcGFpcl90b19zbGlzdCgiYWdlbnRfbW9kZSIsIHN0cmR1cCgiR0VUQlVMSyIpLCBNT0RFX0dFVEJVTEspOworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBzZV9hZGRfcGFpcl90b19zbGlzdCgiYWdlbnRfbW9kZSIsIHN0cmR1cCgiU0VUX0JFR0lOIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgTU9ERV9TRVRfQkVHSU4pOwogICAgIHNlX2FkZF9wYWlyX3RvX3NsaXN0KCJhZ2VudF9tb2RlIiwgc3RyZHVwKCJTRVRfUkVTRVJWRTEiKSwKQEAgLTEyODcsNiArMTMxMyw3IEBACiAgICAgc2VfYWRkX3BhaXJfdG9fc2xpc3QoImJhYnlzdGVwX21vZGUiLCBzdHJkdXAoInBvc3RfcmVxdWVzdCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIE1PREVfQlNURVBfUE9TVF9SRVFVRVNUKTsKICAgICBzZV9hZGRfcGFpcl90b19zbGlzdCgiYmFieXN0ZXBfbW9kZSIsIHN0cmR1cCgib3JpZ2luYWwiKSwgMHhmZmZmKTsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIC8qCiAgICAgICogeHh4LXJrczogaG1tbS4uIHdpbGwgdGhpcyB3b3JrIGZvciBtb2RlcyB3aGljaCBhcmUgb3InZCB0b2dldGhlcj8KZGlmZiAtLWdpdCBhL2FnZW50L2FnZW50X2luZGV4LmMgYi9hZ2VudC9hZ2VudF9pbmRleC5jCmluZGV4IGE2YzViNDQuLjBhZWM4NWEgMTAwNjQ0Ci0tLSBhL2FnZW50L2FnZW50X2luZGV4LmMKKysrIGIvYWdlbnQvYWdlbnRfaW5kZXguYwpAQCAtOCw2ICs4LDcgQEAKIAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxzaWduYWwuaD4KICNpZiBIQVZFX1NUUklOR19ICiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC00OCw2ICs0OSwxMCBAQAogI2luY2x1ZGUgImFnZW50eC9jbGllbnQuaCIKICNlbmRpZgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoYWdlbnRfaW5kZXhfYWxsLCBsaWJuZXRzbm1wYWdlbnQpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZW1vdmVfaW5kZXgsIGFnZW50X2luZGV4X2FsbCkKKwogICAgICAgICAvKgogICAgICAgICAgKiBJbml0aWFsIHN1cHBvcnQgZm9yIGluZGV4IGFsbG9jYXRpb24KICAgICAgICAgICovCkBAIC00NTEsMTIgKzQ1NiwxNiBAQAogICAgICAgICAgKiBSZWxlYXNlIGFuIGFsbG9jYXRlZCBpbmRleCwKICAgICAgICAgICogICB0byBhbGxvdyBpdCB0byBiZSB1c2VkIGVsc2V3aGVyZQogICAgICAgICAgKi8KK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZWxlYXNlX2luZGV4LG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFTEVBU0VfSU5ERVgKIGludAogcmVsZWFzZV9pbmRleChuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXJiaW5kKQogewogICAgIHJldHVybiAodW5yZWdpc3Rlcl9pbmRleCh2YXJiaW5kLCBUUlVFLCBOVUxMKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUxFQVNFX0lOREVYICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRU1PVkVfSU5ERVgKICAgICAgICAgLyoKICAgICAgICAgICogQ29tcGxldGVseSByZW1vdmUgYW4gYWxsb2NhdGVkIGluZGV4LAogICAgICAgICAgKiAgIGR1ZSB0byBlcnJvcnMgaW4gdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLgpAQCAtNDY2LDYgKzQ3NSw3IEBACiB7CiAgICAgcmV0dXJuICh1bnJlZ2lzdGVyX2luZGV4KHZhcmJpbmQsIEZBTFNFLCBzcykpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVNT1ZFX0lOREVYICovCiAKIHZvaWQKIHVucmVnaXN0ZXJfaW5kZXhfYnlfc2Vzc2lvbihuZXRzbm1wX3Nlc3Npb24gKiBzcykKQEAgLTU4OSw2ICs1OTksOCBAQAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodW5yZWdpc3Rlcl9pbmRleGVzLG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VOUkVHSVNURVJfSU5ERVhFUwogaW50CiB1bnJlZ2lzdGVyX3N0cmluZ19pbmRleChvaWQgKiBuYW1lLCBzaXplX3QgbmFtZV9sZW4sIGNoYXIgKmNwKQogewpAQCAtNjI4LDYgKzY0MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2xlbiAqIHNpemVvZihvaWQpKTsKICAgICByZXR1cm4gKHVucmVnaXN0ZXJfaW5kZXgoJnZhcmJpbmQsIEZBTFNFLCBtYWluX3Nlc3Npb24pKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VOUkVHSVNURVJfSU5ERVhFUyAqLwogCiB2b2lkCiBkdW1wX2lkeF9yZWdpc3RyeSh2b2lkKQpAQCAtNjkzLDYgKzcwNiw4IEBACiAgICAgfQogfQogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY291bnRfaW5kZXhlcywgbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVU5VU0VECiB1bnNpZ25lZCBsb25nCiBjb3VudF9pbmRleGVzKG9pZCAqIG5hbWUsIHNpemVfdCBuYW1lbGVuLCBpbnQgaW5jbHVkZV91bmFsbG9jYXRlZCkKIHsKQEAgLTcxMiw3ICs3MjcsNyBAQAogICAgIH0KICAgICByZXR1cm4gbjsKIH0KLQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVU5VU0VEICovCiAKICNpZmRlZiBURVNUSU5HCiBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgdmFyYmluZDsKZGlmZiAtLWdpdCBhL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmMgYi9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jCmluZGV4IDYxZDY2NjcuLmY5ZWYxYWYgMTAwNjQ0Ci0tLSBhL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmMKKysrIGIvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYwpAQCAtMyw2ICszLDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2lmIEhBVkVfU1lTX1BBUkFNX0gKICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KQEAgLTEwNiwxNyArMTA3LDE4IEBACiAjaW5jbHVkZSAiYWdlbnRfbW9kdWxlX2luY2x1ZGVzLmgiCiAjaW5jbHVkZSAibWliX21vZHVsZV9pbmNsdWRlcy5oIgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoYWdlbnRfcmVhZF9jb25maWdfYWxsLCBsaWJuZXRzbm1wYWdlbnQpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzbm1wZF91bnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyLCBhZ2VudF9yZWFkX2NvbmZpZ19hbGwpCisKICNpZmRlZiBIQVZFX1VOSVNURF9ICiB2b2lkCiBzbm1wZF9zZXRfYWdlbnRfdXNlcihjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0cikKIHsKLSNpZiBkZWZpbmVkKEhBVkVfR0VUUFdOQU0pICYmIGRlZmluZWQoSEFWRV9QV0RfSCkKLSAgICBzdHJ1Y3QgcGFzc3dkICAqaW5mbzsKLSNlbmRpZgotCiAgICAgaWYgKGNwdHJbMF0gPT0gJyMnKSB7CiAgICAgICAgIGNoYXIgICAgICAgICAgICplY3A7CiAgICAgICAgIGludCAgICAgICAgICAgICB1aWQ7CisKICAgICAgICAgdWlkID0gc3RydG91bChjcHRyICsgMSwgJmVjcCwgMTApOwogICAgICAgICBpZiAoKmVjcCAhPSAwKSB7CiAgICAgICAgICAgICBjb25maWdfcGVycm9yKCJCYWQgbnVtYmVyIik7CkBAIC0xMjQsNDcgKzEyNiw1MSBAQAogCSAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCiAJCQkgICAgICAgTkVUU05NUF9EU19BR0VOVF9VU0VSSUQsIHVpZCk7CiAJfQotICAgIH0KICNpZiBkZWZpbmVkKEhBVkVfR0VUUFdOQU0pICYmIGRlZmluZWQoSEFWRV9QV0RfSCkKLSAgICBlbHNlIGlmICgoaW5mbyA9IGdldHB3bmFtKGNwdHIpKSAhPSBOVUxMKSB7Ci0gICAgICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKLQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfVVNFUklELCBpbmZvLT5wd191aWQpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGNvbmZpZ19wZXJyb3IoIlVzZXIgbm90IGZvdW5kIGluIHBhc3N3ZCBkYXRhYmFzZSIpOwotICAgIH0KLSAgICBlbmRwd2VudCgpOworICAgICAgICBzdHJ1Y3QgcGFzc3dkICAqaW5mbzsKKworICAgICAgICBpbmZvID0gZ2V0cHduYW0oY3B0cik7CisgICAgICAgIGlmIChpbmZvKQorICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfVVNFUklELCBpbmZvLT5wd191aWQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25maWdfcGVycm9yKCJVc2VyIG5vdCBmb3VuZCBpbiBwYXNzd2QgZGF0YWJhc2UiKTsKKyAgICAgICAgZW5kcHdlbnQoKTsKICNlbmRpZgorICAgIH0KIH0KIAogdm9pZAogc25tcGRfc2V0X2FnZW50X2dyb3VwKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQogewotI2lmIGRlZmluZWQoSEFWRV9HRVRHUk5BTSkgJiYgZGVmaW5lZChIQVZFX0dSUF9IKQotICAgIHN0cnVjdCBncm91cCAgICppbmZvOwotI2VuZGlmCi0KICAgICBpZiAoY3B0clswXSA9PSAnIycpIHsKICAgICAgICAgY2hhciAgICAgICAgICAgKmVjcDsKICAgICAgICAgaW50ICAgICAgICAgICAgIGdpZCA9IHN0cnRvdWwoY3B0ciArIDEsICZlY3AsIDEwKTsKKwogICAgICAgICBpZiAoKmVjcCAhPSAwKSB7CiAgICAgICAgICAgICBjb25maWdfcGVycm9yKCJCYWQgbnVtYmVyIik7CiAJfSBlbHNlIHsKICAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKIAkJCSAgICAgICBORVRTTk1QX0RTX0FHRU5UX0dST1VQSUQsIGdpZCk7CiAJfQotICAgIH0KICNpZiBkZWZpbmVkKEhBVkVfR0VUR1JOQU0pICYmIGRlZmluZWQoSEFWRV9HUlBfSCkKLSAgICBlbHNlIGlmICgoaW5mbyA9IGdldGdybmFtKGNwdHIpKSAhPSBOVUxMKSB7Ci0gICAgICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKLQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfR1JPVVBJRCwgaW5mby0+Z3JfZ2lkKTsKICAgICB9IGVsc2UgewotICAgICAgICBjb25maWdfcGVycm9yKCJHcm91cCBub3QgZm91bmQgaW4gZ3JvdXAgZGF0YWJhc2UiKTsKLSAgICB9Ci0gICAgZW5kcHdlbnQoKTsKKyAgICAgICAgc3RydWN0IGdyb3VwICAgKmluZm87CisKKyAgICAgICAgaW5mbyA9IGdldGdybmFtKGNwdHIpOworICAgICAgICBpZiAoaW5mbykKKyAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX0dST1VQSUQsIGluZm8tPmdyX2dpZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIkdyb3VwIG5vdCBmb3VuZCBpbiBncm91cCBkYXRhYmFzZSIpOworICAgICAgICBlbmRncmVudCgpOwogI2VuZGlmCisgICAgfQogfQogI2VuZGlmCiAKKyNpZm5kZWYgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVAogdm9pZAogc25tcGRfc2V0X2FnZW50X2FkZHJlc3MoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmNwdHIpCiB7CkBAIC0xOTEsNiArMTk3LDcgQEAKICAgICBuZXRzbm1wX2RzX3NldF9zdHJpbmcoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCiAJCQkgIE5FVFNOTVBfRFNfQUdFTlRfUE9SVFMsIGJ1Zik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLwogCiB2b2lkCiBpbml0X2FnZW50X3JlYWRfY29uZmlnKGNvbnN0IGNoYXIgKmFwcCkKQEAgLTI0OCw5ICsyNTUsMTEgQEAKICAgICByZWdpc3Rlcl9hcHBfY29uZmlnX2hhbmRsZXIoImFnZW50Z3JvdXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wZF9zZXRfYWdlbnRfZ3JvdXAsIE5VTEwsICJncm91cGlkIik7CiAjZW5kaWYKKyNpZm5kZWYgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVAogICAgIHJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlcigiYWdlbnRhZGRyZXNzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcGRfc2V0X2FnZW50X2FkZHJlc3MsIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTTk1QIGJpbmQgYWRkcmVzcyIpOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KICAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZyhBU05fQk9PTEVBTiwgYXBwLCAicXVpdCIsIAogCQkJICAgICAgIE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCiAJCQkgICAgICAgTkVUU05NUF9EU19BR0VOVF9RVUlUX0lNTUVESUFURUxZKTsKQEAgLTMwNiwxMSArMzE1LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VyLCBoZWxwKTsKIH0KIAorI2lmZGVmIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX1NOTVBEX1VOUkVHSVNURVJfQ09ORklHX0hBTkRMRVIKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHVucmVnaXN0ZXJfYXBwX2NvbmZpZ19oYW5kbGVyKQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX1NOTVBEX1VOUkVHSVNURVJfQ09ORklHX0hBTkRMRVIgKi8KKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOTVBEX1VOUkVHSVNURVJfQ09ORklHX0hBTkRMRVIKIHZvaWQKIHNubXBkX3VucmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoY29uc3QgY2hhciAqdG9rZW4pCiB7CiAgICAgdW5yZWdpc3Rlcl9hcHBfY29uZmlnX2hhbmRsZXIodG9rZW4pOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05NUERfVU5SRUdJU1RFUl9DT05GSUdfSEFORExFUiAqLwogCiAvKgogICogdGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlIGJ5IG1pYi1tb2R1bGVzIHRvIHN0b3JlIHBlcm1lbmFudApkaWZmIC0tZ2l0IGEvYWdlbnQvYWdlbnRfcmVnaXN0cnkuYyBiL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmMKaW5kZXggYmIzODViYy4uZWEyODhhNiAxMDA2NDQKLS0tIGEvYWdlbnQvYWdlbnRfcmVnaXN0cnkuYworKysgYi9hZ2VudC9hZ2VudF9yZWdpc3RyeS5jCkBAIC0yMiw2ICsyMiw4IEBACiAjZGVmaW5lIElOX1NOTVBfVkFSU19DCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgorCiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjaWYgSEFWRV9TVFJJTkdfSAogI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtNjUsNiArNjcsMTAgQEAKICNpbmNsdWRlICJhZ2VudHgvY2xpZW50LmgiCiAjZW5kaWYKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGFnZW50X3JlZ2lzdHJ5X2FsbCwgbGlibmV0c25tcGFnZW50KQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodW5yZWdpc3Rlcl9taWJfdGFibGVfcm93LCBhZ2VudF9yZWdpc3RyeV9hbGwpCisKIC8qKiBAZGVmZ3JvdXAgYWdlbnRfbG9va3VwX2NhY2hlIExvb2t1cCBjYWNoZSwgc3RvcmluZyB0aGUgcmVnaXN0ZXJlZCBPSURzLgogICogICAgIE1haW50YWluIHRoZSBjYWNoZSB1c2VkIGZvciBsb2NhdGluZyBzdWItdHJlZXMgYW5kIE9JRHMuCiAgKiAgIEBpbmdyb3VwIGFnZW50X3JlZ2lzdHJ5CkBAIC0yMTQsNyArMjIwLDcgQEAKICAqICBAc2VlIHNubXBfb2lkX2NvbXBhcmUoKQogICovCiBORVRTTk1QX1NUQVRJQ19JTkxJTkUgbG9va3VwX2NhY2hlICoKLWxvb2t1cF9jYWNoZV9maW5kKGNvbnN0IGNoYXIgKmNvbnRleHQsIG9pZCAqbmFtZSwgc2l6ZV90IG5hbWVfbGVuLAorbG9va3VwX2NhY2hlX2ZpbmQoY29uc3QgY2hhciAqY29udGV4dCwgY29uc3Qgb2lkICpuYW1lLCBzaXplX3QgbmFtZV9sZW4sCiAgICAgICAgICAgICAgICAgICBpbnQgKnJldGNtcCkgewogICAgIGxvb2t1cF9jYWNoZV9jb250ZXh0ICpjcHRyOwogICAgIGxvb2t1cF9jYWNoZSAqcmV0ID0gTlVMTDsKQEAgLTU0OSw2ICs1NTUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwdHItPm9pZF9vZmYpOwogfQogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobmV0c25tcF9zdWJ0cmVlX2NvbXBhcmUsbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTkVUU05NUF9TVUJUUkVFX0NPTVBBUkUKIC8qKiBDb21wYXJlcyBPSURzIG9mIGdpdmVuIHN1YnRyZWVzLgogICoKICAqICBAcGFyYW0gYXAsYnAgUG9pbnRlcnMgdG8gdGhlIHN1YnRyZWVzIHRvIGJlIGNvbXBhcmVkLgpAQCAtNTYyLDYgKzU3MCw3IEBACiB7CiAgICAgcmV0dXJuIHNubXBfb2lkX2NvbXBhcmUoYXAtPm5hbWVfYSwgYXAtPm5hbWVsZW4sIGJwLT5uYW1lX2EsIGJwLT5uYW1lbGVuKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX05FVFNOTVBfU1VCVFJFRV9DT01QQVJFICovCiAKIC8qKiBKb2lucyB0aGUgZ2l2ZW4gc3VidHJlZSB3aXRoIHRoZSBjdXJyZW50IHRyZWUuCiAgKiAgVHJlZXMgYXJlIGpvaW5lZCBhbmQgdGhlIG9uZSBzdXBwbGllZCBhcyBwYXJhbWV0ZXIgaXMgZnJlZWQuCkBAIC03NDIsOSArNzUxLDggQEAKIGludAogbmV0c25tcF9zdWJ0cmVlX2xvYWQobmV0c25tcF9zdWJ0cmVlICpuZXdfc3ViLCBjb25zdCBjaGFyICpjb250ZXh0X25hbWUpCiB7Ci0gICAgbmV0c25tcF9zdWJ0cmVlICp0cmVlMSwgKnRyZWUyLCAqbmV3MjsKKyAgICBuZXRzbm1wX3N1YnRyZWUgKnRyZWUxLCAqdHJlZTI7CiAgICAgbmV0c25tcF9zdWJ0cmVlICpwcmV2LCAqbmV4dDsKLSAgICBpbnQgICAgICAgICAgICAgcmVzLCByYyA9IDA7CiAKICAgICBpZiAobmV3X3N1YiA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBNSUJfUkVHSVNURVJFRF9PSzsgICAgICAgLyogRGVnZW5lcmF0ZSBjYXNlICovCkBAIC03ODYsNyArNzk0LDcgQEAKICAgICAvKiAgSGFuZGxlIG5ldyBzdWJ0cmVlcyB0aGF0IHN0YXJ0IGluIHZpcmdpbiB0ZXJyaXRvcnkuICAqLwogCiAgICAgaWYgKHRyZWUxID09IE5VTEwpIHsKLQluZXcyID0gTlVMTDsKKyAgICAgICAgbmV0c25tcF9zdWJ0cmVlICpuZXcyID0gTlVMTDsKIAkvKiAgSXMgdGhlcmUgYW55IG92ZXJsYXAgd2l0aCBsYXRlciBzdWJ0cmVlcz8gICovCiAJaWYgKHRyZWUyICYmIHNubXBfb2lkX2NvbXBhcmUobmV3X3N1Yi0+ZW5kX2EsIG5ld19zdWItPmVuZF9sZW4sCiAJCQkJICAgICAgdHJlZTItPnN0YXJ0X2EsIHRyZWUyLT5zdGFydF9sZW4pID4gMCkgewpAQCAtODQ1LDEwICs4NTMsOCBAQAogCSAgICBJZiB0aGUgbmV3IHN1YnRyZWUgZXh0ZW5kcyBiZXlvbmQgdGhpcyBleGlzdGluZyByZWdpb24sCiAJICAgICAgICAgICAgc3BsaXQgaXQsIGFuZCByZWN1cnNlIHRvIG1lcmdlIHRoZSB0d28gcGFydHMuICAqLwogCi0JcmMgPSBzbm1wX29pZF9jb21wYXJlKG5ld19zdWItPmVuZF9hLCBuZXdfc3ViLT5lbmRfbGVuLCAKLQkJCSAgICAgIHRyZWUxLT5lbmRfYSwgdHJlZTEtPmVuZF9sZW4pOwotCi0gICAgICAgIHN3aXRjaCAocmMpIHsKKwlzd2l0Y2ggKHNubXBfb2lkX2NvbXBhcmUobmV3X3N1Yi0+ZW5kX2EsIG5ld19zdWItPmVuZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmVlMS0+ZW5kX2EsIHRyZWUxLT5lbmRfbGVuKSkgewogCiAJY2FzZSAtMToKIAkgICAgLyogIEV4aXN0aW5nIHN1YnRyZWUgY29udGFpbnMgbmV3IG9uZS4gICovCkBAIC05MTksMTUgKzkyNSwxOCBAQAogCiAJY2FzZSAgMToKIAkgICAgLyogIE5ldyBzdWJ0cmVlIGNvbnRhaW5zIHRoZSBleGlzdGluZyBvbmUuICAqLwotCSAgICBuZXcyID0gbmV0c25tcF9zdWJ0cmVlX3NwbGl0KG5ld19zdWIsIHRyZWUxLT5lbmRfYSx0cmVlMS0+ZW5kX2xlbik7Ci0JICAgIHJlcyA9IG5ldHNubXBfc3VidHJlZV9sb2FkKG5ld19zdWIsIGNvbnRleHRfbmFtZSk7Ci0JICAgIGlmIChyZXMgIT0gTUlCX1JFR0lTVEVSRURfT0spIHsKLSAgICAgICAgICAgICAgICBuZXRzbm1wX3JlbW92ZV9zdWJ0cmVlKG5ldzIpOwotCQluZXRzbm1wX3N1YnRyZWVfZnJlZShuZXcyKTsKLQkJcmV0dXJuIHJlczsKLQkgICAgfQotCSAgICByZXR1cm4gbmV0c25tcF9zdWJ0cmVlX2xvYWQobmV3MiwgY29udGV4dF9uYW1lKTsKLQl9CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbmV0c25tcF9zdWJ0cmVlICpuZXcyID0KKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zdWJ0cmVlX3NwbGl0KG5ld19zdWIsIHRyZWUxLT5lbmRfYSx0cmVlMS0+ZW5kX2xlbik7CisgICAgICAgICAgICAgICAgaW50IHJlcyA9IG5ldHNubXBfc3VidHJlZV9sb2FkKG5ld19zdWIsIGNvbnRleHRfbmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSBNSUJfUkVHSVNURVJFRF9PSykgeworICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlbW92ZV9zdWJ0cmVlKG5ldzIpOworICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3N1YnRyZWVfZnJlZShuZXcyKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldHNubXBfc3VidHJlZV9sb2FkKG5ldzIsIGNvbnRleHRfbmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CkBAIC05NTUsNyArOTY0LDcgQEAKIH0KIAogbmV0c25tcF9zdWJ0cmVlICoKLW5ldHNubXBfc3VidHJlZV9maW5kX3ByZXYob2lkICpuYW1lLCBzaXplX3QgbGVuLCBuZXRzbm1wX3N1YnRyZWUgKnN1YnRyZWUsCituZXRzbm1wX3N1YnRyZWVfZmluZF9wcmV2KGNvbnN0IG9pZCAqbmFtZSwgc2l6ZV90IGxlbiwgbmV0c25tcF9zdWJ0cmVlICpzdWJ0cmVlLAogCQkJICBjb25zdCBjaGFyICpjb250ZXh0X25hbWUpCiB7CiAgICAgbG9va3VwX2NhY2hlICpsb29rdXBfY2FjaGUgPSBOVUxMOwpAQCAtMTAyNiw3ICsxMDM1LDcgQEAKIH0KIAogbmV0c25tcF9zdWJ0cmVlICoKLW5ldHNubXBfc3VidHJlZV9maW5kX25leHQob2lkICpuYW1lLCBzaXplX3QgbGVuLAorbmV0c25tcF9zdWJ0cmVlX2ZpbmRfbmV4dChjb25zdCBvaWQgKm5hbWUsIHNpemVfdCBsZW4sCiAJCQkgIG5ldHNubXBfc3VidHJlZSAqc3VidHJlZSwgY29uc3QgY2hhciAqY29udGV4dF9uYW1lKQogewogICAgIG5ldHNubXBfc3VidHJlZSAqbXlwdHIgPSBOVUxMOwpAQCAtMTA0OSw3ICsxMDU4LDcgQEAKIH0KIAogbmV0c25tcF9zdWJ0cmVlICoKLW5ldHNubXBfc3VidHJlZV9maW5kKG9pZCAqbmFtZSwgc2l6ZV90IGxlbiwgbmV0c25tcF9zdWJ0cmVlICpzdWJ0cmVlLCAKK25ldHNubXBfc3VidHJlZV9maW5kKGNvbnN0IG9pZCAqbmFtZSwgc2l6ZV90IGxlbiwgbmV0c25tcF9zdWJ0cmVlICpzdWJ0cmVlLCAKIAkJICAgICBjb25zdCBjaGFyICpjb250ZXh0X25hbWUpCiB7CiAgICAgbmV0c25tcF9zdWJ0cmVlICpteXB0cjsKQEAgLTExMTcsNyArMTEyNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICBpbnQgcGVyZm9ybV9jYWxsYmFjaykKIHsKICAgICBuZXRzbm1wX3N1YnRyZWUgKnN1YnRyZWUsICpzdWIyOwotICAgIGludCAgICAgICAgICAgICByZXMsIGk7CisgICAgaW50ICAgICAgICAgICAgIHJlczsKICAgICBzdHJ1Y3QgcmVnaXN0ZXJfcGFyYW1ldGVycyByZWdfcGFybXM7CiAgICAgaW50IG9sZF9sb29rdXBfY2FjaGVfdmFsID0gbmV0c25tcF9nZXRfbG9va3VwX2NhY2hlX3NpemUoKTsKIApAQCAtMTE5OCw2ICsxMjA3LDcgQEAKIAlyZXN0IG9mIHRoZSByYW5nZS4gICovCiAKICAgICBpZiAocmVzID09IE1JQl9SRUdJU1RFUkVEX09LICYmIHJhbmdlX3N1YmlkICE9IDApIHsKKyAgICAgICAgaW50IGk7CiAJZm9yIChpID0gbWlibG9jW3JhbmdlX3N1YmlkIC0gMV0gKyAxOyBpIDw9IChpbnQpcmFuZ2VfdWJvdW5kOyBpKyspIHsKIAkgICAgc3ViMiA9IG5ldHNubXBfc3VidHJlZV9kZWVwY29weShzdWJ0cmVlKTsKIApAQCAtMTM5Myw3ICsxNDAzLDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgSWYgcmFuZ2Vfc3ViaWQgaXMgemVybywgdGhlbiB0aGlzIHBhcmFtZXRlciBpcyBpZ25vcmVkLgogICoKICAqICBAcGFyYW0gc3MgCi0gKiAgQHBhcmFtIGNvbnRleHQgCisgKiAgQHBhcmFtIGNvbnRleHQKICAqICBAcGFyYW0gdGltZW91dCAKICAqICBAcGFyYW0gZmxhZ3MgCiAgKgpAQCAtMTQwNiwxMCArMTQxNiwxMCBAQAogICovCiBpbnQKIHJlZ2lzdGVyX21pYl9jb250ZXh0KGNvbnN0IGNoYXIgKm1vZHVsZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmFyaWFibGUgKnZhciwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB2YXJpYWJsZSAqdmFyLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHZhcnNpemUsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtdmFycywKLSAgICAgICAgICAgICAgICAgICAgIG9pZCAqIG1pYmxvYywKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG1pYmxvYywKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBtaWJsb2NsZW4sCiAgICAgICAgICAgICAgICAgICAgICBpbnQgcHJpb3JpdHksCiAgICAgICAgICAgICAgICAgICAgICBpbnQgcmFuZ2Vfc3ViaWQsCkBAIC0xNDcxLDEwICsxNDgxLDEwIEBACiAgKi8KIGludAogcmVnaXN0ZXJfbWliX3JhbmdlKGNvbnN0IGNoYXIgKm1vZHVsZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgc3RydWN0IHZhcmlhYmxlICp2YXIsCisgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHZhcmlhYmxlICp2YXIsCiAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHZhcnNpemUsCiAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bXZhcnMsCi0gICAgICAgICAgICAgICAgICAgb2lkICogbWlibG9jLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG1pYmxvYywKICAgICAgICAgICAgICAgICAgICBzaXplX3QgbWlibG9jbGVuLAogICAgICAgICAgICAgICAgICAgIGludCBwcmlvcml0eSwKICAgICAgICAgICAgICAgICAgICBpbnQgcmFuZ2Vfc3ViaWQsIG9pZCByYW5nZV91Ym91bmQsIG5ldHNubXBfc2Vzc2lvbiAqIHNzKQpAQCAtMTUyMCwxMCArMTUzMCwxMCBAQAogICovCiBpbnQKIHJlZ2lzdGVyX21pYl9wcmlvcml0eShjb25zdCBjaGFyICptb2R1bGVOYW1lLAotICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2YXJpYWJsZSAqdmFyLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB2YXJpYWJsZSAqdmFyLAogICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB2YXJzaXplLAogICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBudW12YXJzLAotICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIG1pYmxvYywgc2l6ZV90IG1pYmxvY2xlbiwgaW50IHByaW9yaXR5KQorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG1pYmxvYywgc2l6ZV90IG1pYmxvY2xlbiwgaW50IHByaW9yaXR5KQogewogICAgIHJldHVybiByZWdpc3Rlcl9taWJfcmFuZ2UobW9kdWxlTmFtZSwgdmFyLCB2YXJzaXplLCBudW12YXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlibG9jLCBtaWJsb2NsZW4sIHByaW9yaXR5LCAwLCAwLCBOVUxMKTsKQEAgLTE1NjAsOSArMTU3MCw5IEBACiAgKi8KIGludAogcmVnaXN0ZXJfbWliKGNvbnN0IGNoYXIgKm1vZHVsZU5hbWUsCi0gICAgICAgICAgICAgc3RydWN0IHZhcmlhYmxlICp2YXIsCisgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHZhcmlhYmxlICp2YXIsCiAgICAgICAgICAgICAgc2l6ZV90IHZhcnNpemUsCi0gICAgICAgICAgICAgc2l6ZV90IG51bXZhcnMsIG9pZCAqIG1pYmxvYywgc2l6ZV90IG1pYmxvY2xlbikKKyAgICAgICAgICAgICBzaXplX3QgbnVtdmFycywgY29uc3Qgb2lkICogbWlibG9jLCBzaXplX3QgbWlibG9jbGVuKQogewogICAgIHJldHVybiByZWdpc3Rlcl9taWJfcHJpb3JpdHkobW9kdWxlTmFtZSwgdmFyLCB2YXJzaXplLCBudW12YXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlibG9jLCBtaWJsb2NsZW4sIERFRkFVTFRfTUlCX1BSSU9SSVRZKTsKQEAgLTE3NjQsNiArMTc3NCw3IEBACiAgICAgcmV0dXJuIE1JQl9VTlJFR0lTVEVSRURfT0s7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VTlJFR0lTVEVSX01JQl9UQUJMRV9ST1cKIGludAogbmV0c25tcF91bnJlZ2lzdGVyX21pYl90YWJsZV9yb3cob2lkICogbmFtZSwgc2l6ZV90IGxlbiwgaW50IHByaW9yaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZhcl9zdWJpZCwgb2lkIHJhbmdlX3Vib3VuZCwKQEAgLTE4NDIsNiArMTg1Myw3IEBACiAKICAgICByZXR1cm4gMDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VOUkVHSVNURVJfTUlCX1RBQkxFX1JPVyAqLwogCiAvKioKICAqIFVucmVnaXN0ZXJzIGEgbW9kdWxlIHJlZ2lzdGVyZWQgYWdhaW5zdCBhIGdpdmVuIE9JRCAob3IgcmFuZ2UpIGluIHRoZSBkZWZhdWx0IGNvbnRleHQuIApAQCAtMjE0MCw5ICsyMTUyLDEwIEBACiAgICAgcmV0dXJuIDE7CiB9CiAKLQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGdldF9zZXNzaW9uX2Zvcl9vaWQsbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfR0VUX1NFU1NJT05fRk9SX09JRAogbmV0c25tcF9zZXNzaW9uICoKLWdldF9zZXNzaW9uX2Zvcl9vaWQob2lkICpuYW1lLCBzaXplX3QgbGVuLCBjb25zdCBjaGFyICpjb250ZXh0X25hbWUpCitnZXRfc2Vzc2lvbl9mb3Jfb2lkKGNvbnN0IG9pZCAqbmFtZSwgc2l6ZV90IGxlbiwgY29uc3QgY2hhciAqY29udGV4dF9uYW1lKQogewogICAgIG5ldHNubXBfc3VidHJlZSAqbXlwdHI7CiAKQEAgLTIxNjAsNiArMjE3Myw3IEBACiAgICAgICAgIHJldHVybiBteXB0ci0+c2Vzc2lvbjsKICAgICB9CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9HRVRfU0VTU0lPTl9GT1JfT0lEICovCiAKIHZvaWQKIHNldHVwX3RyZWUodm9pZCkKQEAgLTIyOTUsMTUgKzIzMDksOSBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHMgIT0gTlVMTCkgewotICAgICAgICBTTk1QX0ZSRUUocyk7Ci0gICAgfQotICAgIGlmIChlICE9IE5VTEwpIHsKLSAgICAgICAgU05NUF9GUkVFKGUpOwotICAgIH0KLSAgICBpZiAodiAhPSBOVUxMKSB7Ci0gICAgICAgIFNOTVBfRlJFRSh2KTsKLSAgICB9CisgICAgU05NUF9GUkVFKHMpOworICAgIFNOTVBfRlJFRShlKTsKKyAgICBTTk1QX0ZSRUUodik7CiAKICAgICBkdW1wX2lkeF9yZWdpc3RyeSgpOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvYWdlbnRfdHJhcC5jIGIvYWdlbnQvYWdlbnRfdHJhcC5jCmluZGV4IDRjN2E0ZDkuLmRmYTlkY2YgMTAwNjQ0Ci0tLSBhL2FnZW50L2FnZW50X3RyYXAuYworKysgYi9hZ2VudC9hZ2VudF90cmFwLmMKQEAgLTE4LDYgKzE4LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2lmIEhBVkVfVU5JU1REX0gKICNpbmNsdWRlIDx1bmlzdGQuaD4KQEAgLTY0LDYgKzY1LDE0IEBACiAjaW5jbHVkZSAiYWdlbnR4L3Byb3RvY29sLmgiCiAjZW5kaWYKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGFnZW50X3RyYXBfYWxsLCBsaWJuZXRzbm1wYWdlbnQpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0cmFwX3ZhcnNfd2l0aF9jb250ZXh0LCBhZ2VudF90cmFwX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZW1vdmVfdHJhcF9zZXNzaW9uLCBhZ2VudF90cmFwX2FsbCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNlbmRfdjN0cmFwLG5ldHNubXBfdW51c2VkKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNlbmRfdHJhcF9wZHUsbmV0c25tcF91bnVzZWQpCisKIHN0cnVjdCB0cmFwX3NpbmsgewogICAgIG5ldHNubXBfc2Vzc2lvbiAqc2VzcDsKICAgICBzdHJ1Y3QgdHJhcF9zaW5rICpuZXh0OwpAQCAtMTc1LDYgKzE4NCw3IEBACiAgICAgcmV0dXJuIDE7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRU1PVkVfVFJBUF9TRVNTSU9OCiBpbnQKIHJlbW92ZV90cmFwX3Nlc3Npb24obmV0c25tcF9zZXNzaW9uICogc3MpCiB7CkBAIC0yMDcsNiArMjE3LDcgQEAKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRU1PVkVfVFJBUF9TRVNTSU9OICovCiAKICNpZiAhZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU05NUFYxKSB8fCAhZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU05NUFYyQykKIHN0YXRpYyBpbnQKQEAgLTg5Myw4ICs5MDQsNiBAQAogewogICAgIG5ldHNubXBfcGR1ICAgICpwZHU7CiAgICAgaW50ICAgICAgICAgICAgcmVzdWx0OwotICAgIGludCAgICAgICAgICAgIGxlbjsKLQogCiAgICAgaWYgKCFzZXNzIHx8ICF0ZW1wbGF0ZV9wZHUpCiAgICAgICAgIHJldHVybjsKQEAgLTkyOCw3ICs5MzcsNyBAQAogICAgICAgICAgICAgICAgIChzZXNzLT5zZWN1cml0eUVuZ2luZUlETGVuID09IDApKSB7CiAgICAgICAgICAgICB1X2NoYXIgICAgICAgICAgdG1wW1NQUklOVF9NQVhfTEVOXTsKIAotICAgICAgICAgICAgbGVuID0gc25tcHYzX2dldF9lbmdpbmVJRCh0bXAsIHNpemVvZih0bXApKTsKKyAgICAgICAgICAgIGludCBsZW4gPSBzbm1wdjNfZ2V0X2VuZ2luZUlEKHRtcCwgc2l6ZW9mKHRtcCkpOwogICAgICAgICAgICAgbWVtZHVwKCZwZHUtPnNlY3VyaXR5RW5naW5lSUQsIHRtcCwgbGVuKTsKICAgICAgICAgICAgIHBkdS0+c2VjdXJpdHlFbmdpbmVJRExlbiA9IGxlbjsKICAgICAgICAgfQpAQCAtOTU2LDYgKzk2NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0lEX0xFTkdUSCh0cmFwX3ZlcnNpb25faWQpLCB2YXJzKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RSQVBfVkFSU19XSVRIX0NPTlRFWFQKIC8qIFNlbmQgYSB0cmFwIHVuZGVyIGEgY29udGV4dCAqLwogdm9pZCBzZW5kX3RyYXBfdmFyc193aXRoX2NvbnRleHQoaW50IHRyYXAsIGludCBzcGVjaWZpYywgCiAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFycywgY29uc3QgY2hhciAqY29udGV4dCkKQEAgLTk3MCw2ICs5ODAsNyBAQAogCQkJCQkJCQkgIGNvbnRleHQsIDApOwogICAgIAkKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RSQVBfVkFSU19XSVRIX0NPTlRFWFQgKi8KIAogLyoqCiAgKiBTZW5kcyBhbiBTTk1QdjEgdHJhcCAob3IgdGhlIFNOTVB2MiBlcXVpdmFsZW50KSB0byB0aGUgbGlzdCBvZiAgCkBAIC0xMDQxLDE4ICsxMDUyLDIyIEBACiAgKgogICogQHNlZSBzZW5kX3YydHJhcAogICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU0VORF9WM1RSQVAKIHZvaWQgc2VuZF92M3RyYXAobmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJzLCBjb25zdCBjaGFyICpjb250ZXh0KQogewogICAgIG5ldHNubXBfc2VuZF90cmFwcygtMSwgLTEsIAogICAgICAgICAgICAgICAgICAgICAgICB0cmFwX3ZlcnNpb25faWQsIE9JRF9MRU5HVEgodHJhcF92ZXJzaW9uX2lkKSwKICAgICAgICAgICAgICAgICAgICAgICAgdmFycywgY29udGV4dCwgMCk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TRU5EX1YzVFJBUCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU0VORF9UUkFQX1BEVQogdm9pZAogc2VuZF90cmFwX3BkdShuZXRzbm1wX3BkdSAqcGR1KQogewogICAgIHNlbmRfdHJhcF92YXJzKC0xLCAtMSwgcGR1LT52YXJpYWJsZXMpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU0VORF9UUkFQX1BEVSAqLwogCiAKIApkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQgYi9hZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZAppbmRleCA4YmFmNmNjLi4xMDIzYzY2NSAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQKKysrIGIvYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQKQEAgLTQsNyArNCw3IEBACiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIApAQCAtMzEsNyArMzEsNiBAQAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMTE0LDYgKzExMyw3IEBACiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2JhYnlfc3RlcHMubG86ICAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIApAQCAtMTQwLDcgKzE0MCw2IEBACiAuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTI0NywxMyArMjQ2LDEzIEBACiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMzI4LDYgKzMyNyw3IEBACiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCkBAIC0zNTQsNyArMzU0LDYgQEAKIC4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtNDYxLDEzICs0NjAsMTMgQEAKIC4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTU0Miw2ICs1NDEsNyBAQAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2luc3RhbmNlLmxvOiAgLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCkBAIC01NjgsNyArNTY4LDYgQEAKIC4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTY0OSw2ICs2NDgsNyBAQAogLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKQEAgLTY3NSw3ICs2NzUsNiBAQAogLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC03ODIsMTMgKzc4MSwxMyBAQAogLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC04ODksMTMgKzg4OCwxMyBAQAogLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtOTk2LDEzICs5OTUsMTMgQEAKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTExMDQsMTMgKzExMDMsMTMgQEAKIC4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMTg1LDYgKzExODQsNyBAQAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9yb3dfbWVyZ2UubG86ICAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCkBAIC0xMjExLDcgKzEyMTEsNiBAQAogLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTEzMTgsMTMgKzEzMTcsMTMgQEAKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNDI1LDEzICsxNDI0LDEzIEBACiAuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTUzMiwxMyArMTUzMSwxMyBAQAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE2MTMsNiArMTYxMiw3IEBACiAuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xNjM5LDcgKzE2MzksNiBAQAogLi9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTE3MjAsNiArMTcxOSw3IEBACiAuL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKQEAgLTE3NDYsNyArMTc0Niw2IEBACiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC0xODI2LDkgKzE4MjUsMTAgQEAKIC4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAotLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX3RvX25leHQuaAorLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oCiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIApAQCAtMTg1NSw3ICsxODU1LDYgQEAKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMTkzOCw2ICsxOTM3LDcgQEAKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF90b19uZXh0LmgKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oCiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCkBAIC0xOTY0LDcgKzE5NjQsNiBAQAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMjA0NSw2ICsyMDQ0LDcgQEAKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oIAogLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCkBAIC0yMDcxLDcgKzIwNzEsNiBAQAogLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMjE1Miw2ICsyMTUxLDcgQEAKIC4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIApAQCAtMjE3OCw3ICsyMTc4LDYgQEAKIC4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC0yMjU5LDYgKzIyNTgsNyBAQAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi90YWJsZV9kYXRhLmxvOiAgLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKQEAgLTIyODUsNyArMjI4NSw2IEBACiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTIzNjYsNiArMjM2NSw3IEBACiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKQEAgLTIzOTIsNyArMjM5Miw2IEBACiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTI0NzMsNiArMjQ3Miw3IEBACiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIApAQCAtMjQ5OSw3ICsyNDk5LDYgQEAKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTI1ODEsNiArMjU4MCw3IEBACiAuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmgKIC4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3RhYmxlX3Jvdy5sbzogIC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKQEAgLTI2MDcsNyArMjYwNyw2IEBACiAuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMjY4OCw2ICsyNjg3LDcgQEAKIC4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIApAQCAtMjcxNCw3ICsyNzE0LDYgQEAKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTI3OTUsNiArMjc5NCw3IEBACiAuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaCAKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKQEAgLTI4MjEsNyArMjgyMSw2IEBACiAuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvYWxsX2hlbHBlcnMuYyBiL2FnZW50L2hlbHBlcnMvYWxsX2hlbHBlcnMuYwppbmRleCAxZWQxMDhhLi5lMWUxYjc4IDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL2FsbF9oZWxwZXJzLmMKKysrIGIvYWdlbnQvaGVscGVycy9hbGxfaGVscGVycy5jCkBAIC0yLDYgKzIsNyBAQAogICogIEB7ICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtMTIsNiArMTMsOSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobWliX2hlbHBlcnMsIGxpYm5ldHNubXBhZ2VudCkKKworCiAvKiogY2FsbCB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgZm9yIGFsbCBoYW5kbGVycyB3aXRoIGluaXRfIHJvdXRpbmVzLiAqLwogdm9pZAogbmV0c25tcF9pbml0X2hlbHBlcnModm9pZCkKQEAgLTIwLDggKzI0LDE2IEBACiAgICAgbmV0c25tcF9pbml0X3NlcmlhbGl6ZSgpOwogICAgIG5ldHNubXBfaW5pdF9yZWFkX29ubHlfaGVscGVyKCk7CiAgICAgbmV0c25tcF9pbml0X2J1bGtfdG9fbmV4dF9oZWxwZXIoKTsKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBU0VUCiAgICAgbmV0c25tcF9pbml0X3RhYmxlX2RhdGFzZXQoKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFTRVQgKi8KKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JPV19NRVJHRQorICAgIG5ldHNubXBfaW5pdF9yb3dfbWVyZ2UoKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JPV19NRVJHRSAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVNIX0NBQ0hFCiAgICAgbmV0c25tcF9pbml0X3N0YXNoX2NhY2hlX2hlbHBlcigpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBU0hfQ0FDSEUgKi8KIH0KIAogLyoqIEBkZWZncm91cCB1dGlsaXRpZXMgdXRpbGl0eV9oYW5kbGVycwpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9iYWJ5X3N0ZXBzLmMgYi9hZ2VudC9oZWxwZXJzL2JhYnlfc3RlcHMuYwppbmRleCA4NTE1ZGVhLi5kNzlhY2JjIDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL2JhYnlfc3RlcHMuYworKysgYi9hZ2VudC9oZWxwZXJzL2JhYnlfc3RlcHMuYwpAQCAtMyw5ICszLDE5IEBACiAgKiAkSWQkCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAorbmV0c25tcF9mZWF0dXJlX3Byb3ZpZGUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihiYWJ5X3N0ZXBzLCBtaWJfaGVscGVycykKKworI2lmZGVmIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX0JBQllfU1RFUFMKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3JlcXVlc3RzX2Vycm9yKQorI2VuZGlmCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9CQUJZX1NURVBTCisKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmg+CiAKICNkZWZpbmUgQkFCWV9TVEVQU19QRVJfTU9ERV9NQVggICAgIDQKQEAgLTE0LDYgKzI0LDcgQEAKIHN0YXRpYyB1X3Nob3J0IGdldF9tb2RlX21hcFtCQUJZX1NURVBTX1BFUl9NT0RFX01BWF0gPSB7CiAgICAgTU9ERV9CU1RFUF9QUkVfUkVRVUVTVCwgTU9ERV9CU1RFUF9PQkpFQ1RfTE9PS1VQLCBCU1RFUF9VU0VfT1JJR0lOQUwsIE1PREVfQlNURVBfUE9TVF9SRVFVRVNUIH07CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBzdGF0aWMgdV9zaG9ydCBzZXRfbW9kZV9tYXBbU05NUF9NU0dfSU5URVJOQUxfU0VUX01BWF1bQkFCWV9TVEVQU19QRVJfTU9ERV9NQVhdID0gewogICAgIC8qUjEqLwogICAgIHsgTU9ERV9CU1RFUF9QUkVfUkVRVUVTVCwgTU9ERV9CU1RFUF9PQkpFQ1RfTE9PS1VQLCBNT0RFX0JTVEVQX1JPV19DUkVBVEUsCkBAIC0zMyw2ICs0NCw3IEBACiAgICAgeyBNT0RFX0JTVEVQX1VORE9fQ09NTUlULCBNT0RFX0JTVEVQX1VORE9fU0VULCBNT0RFX0JTVEVQX1VORE9fQ0xFQU5VUCwKICAgICAgIE1PREVfQlNURVBfUE9TVF9SRVFVRVNUfQogfTsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogc3RhdGljIGludAogX2JhYnlfc3RlcHNfaGVscGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCkBAIC01MSw2ICs2MywyMCBAQAogICogIEB7CiAgKi8KIAorc3RhdGljIG5ldHNubXBfYmFieV9zdGVwc19tb2RlcyAqCituZXRzbm1wX2JhYnlfc3RlcHNfbW9kZXNfcmVmKG5ldHNubXBfYmFieV9zdGVwc19tb2RlcyAqbWQpCit7CisgICAgbWQtPnJlZmNudCsrOworICAgIHJldHVybiBtZDsKK30KKworc3RhdGljIHZvaWQKK25ldHNubXBfYmFieV9zdGVwc19tb2Rlc19kZXJlZihuZXRzbm1wX2JhYnlfc3RlcHNfbW9kZXMgKm1kKQoreworICAgIGlmICgtLW1kLT5yZWZjbnQgPT0gMCkKKwlmcmVlKG1kKTsKK30KKwogLyoqIHJldHVybnMgYSBiYWJ5X3N0ZXBzIGhhbmRsZXIgdGhhdCBjYW4gYmUgaW5qZWN0ZWQgaW50byBhIGdpdmVuCiAgKiAgaGFuZGxlciBjaGFpbi4KICAqLwpAQCAtNzEsNyArOTcsMTAgQEAKICAgICAgICAgbWggPSBOVUxMOwogICAgIH0KICAgICBlbHNlIHsKKwltZC0+cmVmY250ID0gMTsKICAgICAgICAgbWgtPm15dm9pZCA9IG1kOworCW1oLT5kYXRhX2Nsb25lID0gKHZvaWQgKigqKSh2b2lkICopKW5ldHNubXBfYmFieV9zdGVwc19tb2Rlc19yZWY7CisJbWgtPmRhdGFfZnJlZSA9ICh2b2lkICgqKSh2b2lkICopKW5ldHNubXBfYmFieV9zdGVwc19tb2Rlc19kZXJlZjsKICAgICAgICAgaWYgKDAgPT0gbW9kZXMpCiAgICAgICAgICAgICBtb2RlcyA9IEJBQllfU1RFUF9BTEw7CiAgICAgICAgIG1kLT5yZWdpc3RlcmVkID0gbW9kZXM7CkBAIC0xMDQsNiArMTMzLDcgQEAKIAogICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgewogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgICAgIC8qCiAgICAgICAgICAqIGNsZWFyIGNvbXBsZXRlZCBtb2RlcwpAQCAtMTIxLDYgKzE1MSw3IEBACiAgICAgY2FzZSBNT0RFX1NFVF9VTkRPOgogICAgICAgICBtb2RlX21hcF9wdHIgPSBzZXRfbW9kZV9tYXBbcmVxaW5mby0+bW9kZV07CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAgICAgCiAgICAgZGVmYXVsdDoKICAgICAgICAgLyoKQEAgLTIyMiw2ICsyNTMsNyBAQAogICAgICAgICBpZiAoQlNURVBfVVNFX09SSUdJTkFMICE9IG1vZGVfbWFwX3B0cltpXSkgewogICAgICAgICAgICAgdV9pbnQgICAgbW9kZV9mbGFnOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIHNraXAgdW5kbyBjb21taXQgaWYgY29tbWl0IHdhc24ndCBoaXQsIGFuZAogICAgICAgICAgICAgICogdW5kb19jbGVhbnVwIGlmIHVuZG9fc2V0dXAgd2Fzbid0IGhpdC4KQEAgLTI0MCw2ICsyNzIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICBza2lwcGluZyB1bmRvIGNsZWFudXAgKG5vIHVuZG8gc2V0dXApXG4iKSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUgPSBtb2RlX21hcF9wdHJbaV07CiAgICAgICAgICAgICBtb2RlX2ZsYWcgPSBuZXRzbm1wX2JhYnlfc3RlcF9tb2RlMmZsYWcoIG1vZGVfbWFwX3B0cltpXSApOwpAQCAtMjkzLDcgKzMyNiwxMCBAQAogICAgICAgICAgKiBpbiBjb21taXQsIGZyZWUgb3IgdW5kby4pCiAgICAgICAgICAqLwogICAgICAgICBpZiAoTU9ERV9JU19HRVQoc2F2ZV9tb2RlKQotICAgICAgICAgICAgfHwgKHNhdmVfbW9kZSA8IFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9DT01NSVQpKSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorICAgICAgICAgICAgfHwgKHNhdmVfbW9kZSA8IFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9DT01NSVQpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgICAgICAgICApIHsKICAgICAgICAgICAgIHJjID0gbmV0c25tcF9jaGVja19yZXF1ZXN0c19lcnJvcihyZXF1ZXN0cyk7CiAgICAgICAgICAgICBpZihyYykgewogICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJiYWJ5X3N0ZXBzIiwgIiAgIEVSUk9SOnJlcXVlc3QgZXJyb3JcbiIpKTsKQEAgLTMxNSwxMiArMzUxLDE1IEBACiAgKiAgaGFuZGxlciBhcyBhIHJ1bi10aW1lIGluamVjdGFibGUgaGFuZGxlciBmb3IgY29uZmlndXJhdGlvbiBmaWxlCiAgKiAgdXNlLgogICovCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobmV0c25tcF9iYWJ5X3N0ZXBzX2hhbmRsZXJfaW5pdCxuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ORVRTTk1QX0JBQllfU1RFUFNfSEFORExFUl9JTklUCiB2b2lkCiBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9pbml0KHZvaWQpCiB7CiAgICAgbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyX2J5X25hbWUoImJhYnlfc3RlcHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYmFieV9zdGVwc19oYW5kbGVyX2dldChCQUJZX1NURVBfQUxMKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ORVRTTk1QX0JBQllfU1RFUFNfSEFORExFUl9JTklUICovCiAKIC8qKiBAfSAqLwogCkBAIC0zOTEsNiArNDMwLDcgQEAKICAgICAgICAgICAgIG1ldGhvZCA9IGFjY2Vzc19tZXRob2RzLT5nZXRfdmFsdWVzOwogICAgICAgICBicmVhazsKICAgICAgICAgCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9CU1RFUF9DSEVDS19WQUxVRToKICAgICAgICAgaWYoIGFjY2Vzc19tZXRob2RzLT5vYmplY3Rfc3ludGF4X2NoZWNrcyApCiAgICAgICAgICAgICBtZXRob2QgPSBhY2Nlc3NfbWV0aG9kcy0+b2JqZWN0X3N5bnRheF9jaGVja3M7CkBAIC00NDAsNiArNDgwLDcgQEAKICAgICAgICAgaWYoIGFjY2Vzc19tZXRob2RzLT51bmRvX2NsZWFudXAgKQogICAgICAgICAgICAgbWV0aG9kID0gYWNjZXNzX21ldGhvZHMtPnVuZG9fY2xlYW51cDsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgIAogICAgIGNhc2UgTU9ERV9CU1RFUF9QT1NUX1JFUVVFU1Q6CiAgICAgICAgIGlmKCBhY2Nlc3NfbWV0aG9kcy0+cG9zdF9yZXF1ZXN0ICkKQEAgLTQ4NCw2ICs1MjUsNyBAQAogICAgIHN3aXRjaCggbW9kZSApIHsKICAgICAgICAgY2FzZSBNT0RFX0JTVEVQX09CSkVDVF9MT09LVVA6CiAgICAgICAgICAgICByZXR1cm4gQkFCWV9TVEVQX09CSkVDVF9MT09LVVA7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICBjYXNlIE1PREVfQlNURVBfU0VUX1ZBTFVFOgogICAgICAgICAgICAgcmV0dXJuIEJBQllfU1RFUF9TRVRfVkFMVUU7CiAgICAgICAgIGNhc2UgTU9ERV9CU1RFUF9JUlJFVkVSU0lCTEVfQ09NTUlUOgpAQCAtNTA4LDYgKzU1MCw3IEBACiAgICAgICAgICAgICByZXR1cm4gQkFCWV9TVEVQX0NPTU1JVDsKICAgICAgICAgY2FzZSBNT0RFX0JTVEVQX1VORE9fQ09NTUlUOgogICAgICAgICAgICAgcmV0dXJuIEJBQllfU1RFUF9VTkRPX0NPTU1JVDsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIG5ldHNubXBfYXNzZXJ0KCJ1bmtub3duIGZsYWciKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTE2LDMgKzU1OSw3IEBACiB9CiAvKiogIEB9ICovCiAKKyNlbHNlICAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0JBQllfU1RFUFMgKi8KK25ldHNubXBfZmVhdHVyZV91bnVzZWQoYmFieV9zdGVwcyk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9CQUJZX1NURVBTICovCisKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jIGIvYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmMKaW5kZXggNmJiMzJhMC4uNTIwYTRjZiAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmMKKysrIGIvYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmMKQEAgLTksNiArOSw3IEBACiAgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2lmIEhBVkVfU1RSSU5HX0gKICNpbmNsdWRlIDxzdHJpbmcuaD4KQEAgLTIxLDYgKzIyLDExIEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjYWNoZV9oYW5kbGVyLCBtaWJfaGVscGVycykKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNhY2hlX2ZpbmRfYnlfb2lkLCBjYWNoZV9oYW5kbGVyKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNhY2hlX2dldF9oZWFkLCBjYWNoZV9oYW5kbGVyKQorCiBzdGF0aWMgbmV0c25tcF9jYWNoZSAgKmNhY2hlX2hlYWQgPSBOVUxMOwogc3RhdGljIGludCAgICAgICAgICAgICBjYWNoZV9vdXRzdGFuZGluZ192YWxpZCA9IDA7CiBzdGF0aWMgaW50ICAgICAgICAgICAgIF9jYWNoZV9sb2FkKCBuZXRzbm1wX2NhY2hlICpjYWNoZSApOwpAQCAtNzksNiArODUsMTQgQEAKICAqICB0aGUgY2FjaGUgd2hlbiBpdCBleHBpcmVzLiBUaGlzIGlzIHVzZWZ1bCBmb3Iga2VlcGluZyB0aGUgY2FjaGUgZnJlc2gsCiAgKiAgZXZlbiBpbiB0aGUgYWJzZW5jZSBvZiBpbmNvbWluZyBzbm1wIHJlcXVlc3RzLgogICoKKyAqICBJZiBORVRTTk1QX0NBQ0hFX1JFU0VUX1RJTUVSX09OX1VTRSBpcyBzZXQsIHRoZSBleHBpcnkgdGltZXIgd2lsbCBiZQorICogIHJlc2V0IG9uIGVhY2ggY2FjaGUgYWNjZXNzLiBJbiBwcmFjdGljZSB0aGUgJ3RpbWVvdXQnIGJlY29tZXMgYSB0aW1lcgorICogIHdoaWNoIHRyaWdnZXJzIHdoZW4gdGhlIGNhY2hlIGlzIG5vIGxvbmdlciBuZWVkZWQuIFRoaXMgaXMgdXNlZnVsCisgKiAgaWYgdGhlIGNhY2hlIGlzIGF1dG9tYXRpY2FsbHkga2VwdCBzeW5jaHJvbml6ZWQ6IGUuZy4gYnkgcmVjZWl2aW5nCisgKiAgY2hhbmdlIG5vdGlmaWNhdGlvbnMgZnJvbSBOZXRsaW5rLCBpbm90aWZ5IG9yIHNpbWlsYXIuIFRoaXMgc2hvdWxkCisgKiAgbm90IGJlIHVzZWQgaWYgY2FjaGUgaXMgbm90IHN5bmNocm9uaXplZCBhdXRvbWF0aWNhbGx5IGFzIGl0IHdvdWxkCisgKiAgcmVzdWx0IGluIHN0YWxlIGNhY2hlIGluZm9ybWF0aW9uIHdoZW4gaWYgcG9sbGluZyBoYXBwZW5zIHRvbyBmYXN0LgorICoKICAqCiAgKiAgSGVyZSBhcmUgc29tZSBzdWdnZXN0aW9ucyBmb3Igc29tZSBjb21tb24gc2l0dWF0aW9ucy4KICAqCkBAIC0xMTAsMTIgKzEyNCwyMCBAQAogICogICAgICAgICAgTkVUU05NUF9DQUNIRV9ET05UX0FVVE9fUkVMRUFTRQogICogICAgICAgICAgTkVUU05NUF9DQUNIRV9BVVRPX1JFTE9BRAogICoKKyAqICBEeW5hbWljYWxseSB1cGRhdGVkLCB1bmxvYWRlZCBhZnRlciB0aW1lb3V0OgorICogICAgICBJZiB0aGUgY2FjaGUgaXMga2VwdCB1cCB0byBkYXRlIGR5bmFtaWNhbGx5IGJ5IGxpc3RlbmluZyBmb3IKKyAqICAgICAgY2hhbmdlIG5vdGlmaWNhdGlvbnMgc29tZWhvdywgYnV0IGl0IHNob3VsZCBub3QgYmUgaW4gbWVtb3J5CisgKiAgICAgIGlmIGl0J3Mgbm90IG5lZWRlZC4gU2V0IHRoZSBmb2xsb3dpbmcgZmxhZzoKKyAqCisgKiAgICAgICAgICBORVRTTk1QX0NBQ0hFX1JFU0VUX1RJTUVSX09OX1VTRQorICoKICAqICBAewogICovCiAKIHN0YXRpYyB2b2lkCiBfY2FjaGVfZnJlZSggbmV0c25tcF9jYWNoZSAqY2FjaGUgKTsKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NBQ0hFX0dFVF9IRUFECiAvKiogZ2V0IGNhY2hlIGhlYWQKICAqIEBpbnRlcm5hbAogICogdW5hZHZlcnRpc2VkIGZ1bmN0aW9uIHRvIGdldCBjYWNoZSBoZWFkLiBZb3UgcmVhbGx5IHNob3VsZCBub3QKQEAgLTEyNiw3ICsxNDgsOSBAQAogewogICAgIHJldHVybiBjYWNoZV9oZWFkOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0FDSEVfR0VUX0hFQUQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NBQ0hFX0ZJTkRfQllfT0lECiAvKiogZmluZCBleGlzdGluZyBjYWNoZQogICovCiBuZXRzbm1wX2NhY2hlICoKQEAgLTE0Miw2ICsxNjYsNyBAQAogICAgIAogICAgIHJldHVybiBOVUxMOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0FDSEVfRklORF9CWV9PSUQgKi8KIAogLyoqIHJldHVybnMgYSBjYWNoZQogICovCkBAIC0xODYsNiArMjExLDIyIEBACiAgICAgcmV0dXJuIGNhY2hlOwogfQogCitzdGF0aWMgbmV0c25tcF9jYWNoZSAqCituZXRzbm1wX2NhY2hlX3JlZihuZXRzbm1wX2NhY2hlICpjYWNoZSkKK3sKKyAgICBjYWNoZS0+cmVmY250Kys7CisgICAgcmV0dXJuIGNhY2hlOworfQorCitzdGF0aWMgdm9pZAorbmV0c25tcF9jYWNoZV9kZXJlZihuZXRzbm1wX2NhY2hlICpjYWNoZSkKK3sKKyAgICBpZiAoLS1jYWNoZS0+cmVmY250ID09IDApIHsKKyAgICAgICAgbmV0c25tcF9jYWNoZV9yZW1vdmUoY2FjaGUpOworICAgICAgICBuZXRzbm1wX2NhY2hlX2ZyZWUoY2FjaGUpOworICAgIH0KK30KKwogLyoqIGZyZWVzIGEgY2FjaGUKICAqLwogaW50CkBAIC0yMDUsOCArMjQ2LDggQEAKICAgICAgICAgICAgIHNwcmludF9yZWFsbG9jX29iamlkKCh1X2NoYXIgKiopICZidWYsICZidWZfbGVuLCAmb3V0X2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIHBvcy0+cm9vdG9pZCwgcG9zLT5yb290b2lkX2xlbik7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywKLQkJICAgICAibm90IGZyZWVpbmcgY2FjaGUgd2l0aCByb290IE9JRCAlcyAoc3RpbGwgaW4gbGlzdClcbiIsCi0JCSAgICAgYnVmKTsKKyAgICAgICAgICAgICAgICAgICAgICJub3QgZnJlZWluZyBjYWNoZSB3aXRoIHJvb3QgT0lEICVzIChzdGlsbCBpbiBsaXN0KVxuIiwKKyAgICAgICAgICAgICAgICAgICAgIGJ1Zik7CiAgICAgICAgICAgICBmcmVlKGJ1Zik7CiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOwogICAgICAgICB9CkBAIC0yMTgsNiArMjU5LDkgQEAKICAgICBpZiAoY2FjaGUtPnZhbGlkKQogICAgICAgICBfY2FjaGVfZnJlZShjYWNoZSk7CiAKKyAgICBpZiAoY2FjaGUtPnRpbWVzdGFtcE0pCisJZnJlZShjYWNoZS0+dGltZXN0YW1wTSk7CisKICAgICBpZiAoY2FjaGUtPnJvb3RvaWQpCiAgICAgICAgIGZyZWUoY2FjaGUtPnJvb3RvaWQpOwogCkBAIC0zNTMsNiArMzk3LDE3IEBACiAgICAgcmV0dXJuIHJldDsKIH0KIAorLyoqIE1ha2VzIHN1cmUgdGhhdCBtZW1vcnkgYWxsb2NhdGVkIGZvciB0aGUgY2FjaGUgaXMgZnJlZWQgd2hlbiB0aGUgaGFuZGxlcgorICogIGlzIHVucmVnaXN0ZXJlZC4KKyAqLwordm9pZCBuZXRzbm1wX2NhY2hlX2hhbmRsZXJfb3duc19jYWNoZShuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyKQoreworICAgIG5ldHNubXBfYXNzZXJ0KGhhbmRsZXItPm15dm9pZCk7CisgICAgKChuZXRzbm1wX2NhY2hlICopaGFuZGxlci0+bXl2b2lkKS0+cmVmY250Kys7CisgICAgaGFuZGxlci0+ZGF0YV9jbG9uZSA9ICh2b2lkICooKikodm9pZCAqKSluZXRzbm1wX2NhY2hlX3JlZjsKKyAgICBoYW5kbGVyLT5kYXRhX2ZyZWUgPSAodm9pZCgqKSh2b2lkKikpbmV0c25tcF9jYWNoZV9kZXJlZjsKK30KKwogLyoqIHJldHVybnMgYSBjYWNoZSBoYW5kbGVyIHRoYXQgY2FuIGJlIGluamVjdGVkIGludG8gYSBnaXZlbiBoYW5kbGVyIGNoYWluLiAgCiAgKi8KIG5ldHNubXBfbWliX2hhbmRsZXIgKgpAQCAtMzY4LDEyICs0MjMsMTUgQEAKICAgICAgICAgY2FjaGUgPSBuZXRzbm1wX2NhY2hlX2NyZWF0ZSh0aW1lb3V0LCBsb2FkX2hvb2ssIGZyZWVfaG9vaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290b2lkLCByb290b2lkX2xlbik7CiAgICAgICAgIHJldC0+bXl2b2lkID0gKHZvaWQgKikgY2FjaGU7CisgICAgICAgIG5ldHNubXBfY2FjaGVfaGFuZGxlcl9vd25zX2NhY2hlKHJldCk7CiAgICAgfQogICAgIHJldHVybiByZXQ7CiB9CiAKIC8qKiBmdW5jdGlvbmFsbHkgdGhlIHNhbWUgYXMgY2FsbGluZyBuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXIoKSBidXQgYWxzbwogICogaW5qZWN0cyBhIGNhY2hlIGhhbmRsZXIgYXQgdGhlIHNhbWUgdGltZSBmb3IgeW91LiAqLworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG5ldHNubXBfY2FjaGVfaGFuZGxlcl9yZWdpc3RlcixuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ORVRTTk1QX0NBQ0hFX0hBTkRMRVJfUkVHSVNURVIKIGludAogbmV0c25tcF9jYWNoZV9oYW5kbGVyX3JlZ2lzdGVyKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKiByZWdpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY2FjaGUqIGNhY2hlKQpAQCAtMzg0LDkgKzQ0MiwxMiBAQAogICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CiAgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfaGFuZGxlcihyZWdpbmZvKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX05FVFNOTVBfQ0FDSEVfSEFORExFUl9SRUdJU1RFUiAqLwogCiAvKiogZnVuY3Rpb25hbGx5IHRoZSBzYW1lIGFzIGNhbGxpbmcgbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyKCkgYnV0IGFsc28KICAqIGluamVjdHMgYSBjYWNoZSBoYW5kbGVyIGF0IHRoZSBzYW1lIHRpbWUgZm9yIHlvdS4gKi8KK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihuZXRzbm1wX3JlZ2lzdGVyX2NhY2hlX2hhbmRsZXIsbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTkVUU05NUF9SRUdJU1RFUl9DQUNIRV9IQU5ETEVSCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfY2FjaGVfaGFuZGxlcihuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICogcmVnaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGltZW91dCwgTmV0c25tcENhY2hlTG9hZCAqIGxvYWRfaG9vaywKQEAgLTQwMCw4ICs0NjEsOSBAQAogICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CiAgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfaGFuZGxlcihyZWdpbmZvKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX05FVFNOTVBfUkVHSVNURVJfQ0FDSEVfSEFORExFUiAqLwogCi1ORVRTTk1QX1NUQVRJQ19JTkxJTkUgY2hhciAqCitzdGF0aWMgY2hhciAqCiBfYnVpbGRfY2FjaGVfbmFtZShjb25zdCBjaGFyICpuYW1lKQogewogICAgIGNoYXIgKmR1cCA9IChjaGFyKiltYWxsb2Moc3RybGVuKG5hbWUpICsgc3RybGVuKENBQ0hFX05BTUUpICsgMik7CkBAIC00NDEsMTEgKzUwMywxNCBAQAogfQogCiAvKiogRXh0cmFjdCB0aGUgY2FjaGUgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gcmVxdWVzdCAoUERVKSAqLworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG5ldHNubXBfZXh0cmFjdF9jYWNoZV9pbmZvLG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX05FVFNOTVBfRVhUUkFDVF9DQUNIRV9JTkZPCiBuZXRzbm1wX2NhY2hlICAqCiBuZXRzbm1wX2V4dHJhY3RfY2FjaGVfaW5mbyhuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqIHJlcWluZm8pCiB7CiAgICAgcmV0dXJuIG5ldHNubXBfY2FjaGVfcmVxaW5mb19leHRyYWN0KHJlcWluZm8sIENBQ0hFX05BTUUpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTkVUU05NUF9FWFRSQUNUX0NBQ0hFX0lORk8gKi8KIAogCiAvKiogQ2hlY2sgaWYgdGhlIGNhY2hlIHRpbWVvdXQgaGFzIHBhc3NlZC4gU2V0cyBhbmQgcmV0dXJuIHRoZSBleHBpcmVkIGZsYWcuICovCkBAIC00NTQsMTEgKzUxOSwxMyBAQAogewogICAgIGlmKE5VTEwgPT0gY2FjaGUpCiAgICAgICAgIHJldHVybiAwOwotICAgIAotICAgIGlmKCFjYWNoZS0+dmFsaWQgfHwgKE5VTEwgPT0gY2FjaGUtPnRpbWVzdGFtcCkgfHwgKC0xID09IGNhY2hlLT50aW1lb3V0KSkKKyAgICBpZiAoY2FjaGUtPmV4cGlyZWQpCisgICAgICAgIHJldHVybiAxOworICAgIGlmKCFjYWNoZS0+dmFsaWQgfHwgKE5VTEwgPT0gY2FjaGUtPnRpbWVzdGFtcE0pIHx8ICgtMSA9PSBjYWNoZS0+dGltZW91dCkpCiAgICAgICAgIGNhY2hlLT5leHBpcmVkID0gMTsKICAgICBlbHNlCi0gICAgICAgIGNhY2hlLT5leHBpcmVkID0gYXRpbWVfcmVhZHkoY2FjaGUtPnRpbWVzdGFtcCwgMTAwMCAqIGNhY2hlLT50aW1lb3V0KTsKKyAgICAgICAgY2FjaGUtPmV4cGlyZWQgPSBuZXRzbm1wX3JlYWR5X21vbm90b25pYyhjYWNoZS0+dGltZXN0YW1wTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDAwICogY2FjaGUtPnRpbWVvdXQpOwogICAgIAogICAgIHJldHVybiBjYWNoZS0+ZXhwaXJlZDsKIH0KQEAgLTQ5MiwxMSArNTU5LDE0IEBACiAvKiogSXMgdGhlIGNhY2hlIHZhbGlkIGZvciBhIGdpdmVuIHJlcXVlc3Q/CiAgKiBmb3IgYmFja3dhcmRzIGNvbXBhdGFiaWxpdHkuIG5ldHNubXBfY2FjaGVfaXNfdmFsaWQoKSBpcyBwcmVmZXJyZWQuCiAgKi8KK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihuZXRzbm1wX2lzX2NhY2hlX3ZhbGlkLG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX05FVFNOTVBfSVNfQ0FDSEVfVkFMSUQKIGludAogbmV0c25tcF9pc19jYWNoZV92YWxpZChuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqIHJlcWluZm8pCiB7CiAgICAgcmV0dXJuIG5ldHNubXBfY2FjaGVfaXNfdmFsaWQocmVxaW5mbywgQ0FDSEVfTkFNRSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ORVRTTk1QX0lTX0NBQ0hFX1ZBTElEICovCiAKIC8qKiBJbXBsZW1lbnRzIHRoZSBjYWNoZSBoYW5kbGVyICovCiBpbnQKQEAgLTUyNiw3ICs1OTYsNyBAQAogICAgICAgICAgICAgICAgICAgICJjYWNoZSBub3QgZm91bmQsIGRpc2FibGVkIG9yIGhhZCBubyBsb2FkIG1ldGhvZFxuIikpOwogICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKICAgICB9Ci0gICAgc25wcmludGYoYWRkcnN0ciwgc2l6ZW9mKGFkZHJzdHIpLCAiJXAiLCBjYWNoZSk7CisgICAgc25wcmludGYoYWRkcnN0cixzaXplb2YoYWRkcnN0ciksICIlbGQiLCAobG9uZyBpbnQpY2FjaGUpOwogICAgIERFQlVHTVNHVEwoKCJoZWxwZXI6Y2FjaGVfaGFuZGxlciIsICJ1c2luZyBjYWNoZSAlczogIiwgYWRkcnN0cikpOwogICAgIERFQlVHTVNHT0lEKCgiaGVscGVyOmNhY2hlX2hhbmRsZXIiLCBjYWNoZS0+cm9vdG9pZCwgY2FjaGUtPnJvb3RvaWRfbGVuKSk7CiAgICAgREVCVUdNU0coKCJoZWxwZXI6Y2FjaGVfaGFuZGxlciIsICJcbiIpKTsKQEAgLTU0Niw3ICs2MTYsOSBAQAogICAgIGNhc2UgTU9ERV9HRVQ6CiAgICAgY2FzZSBNT0RFX0dFVE5FWFQ6CiAgICAgY2FzZSBNT0RFX0dFVEJVTEs6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgICAgIC8qCiAgICAgICAgICAqIG9ubHkgdG91Y2ggY2FjaGUgb25jZSBwZXIgcGR1IHJlcXVlc3QsIHRvIHByZXZlbnQgYSBjYWNoZQpAQCAtNTY4LDYgKzY0MCw3IEBACiAgICAgICAgIC8qKiBuZXh0IGhhbmRsZXIgY2FsbGVkIGF1dG9tYXRpY2FsbHkgLSAnQVVUT19ORVhUJyAqLwogICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgogICAgIGNhc2UgTU9ERV9TRVRfRlJFRToKICAgICBjYXNlIE1PREVfU0VUX0FDVElPTjoKQEAgLTU4OSw2ICs2NjIsNyBAQAogICAgICAgICB9CiAgICAgICAgIC8qKiBuZXh0IGhhbmRsZXIgY2FsbGVkIGF1dG9tYXRpY2FsbHkgLSAnQVVUT19ORVhUJyAqLwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAiY2FjaGVfaGFuZGxlcjogVW5yZWNvZ25pc2VkIG1vZGUgKCVkKVxuIiwKQEAgLTU5Niw2ICs2NzAsOCBAQAogICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yX2FsbChyZXF1ZXN0cywgU05NUF9FUlJfR0VORVJSKTsKICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKICAgICB9CisgICAgaWYgKGNhY2hlLT5mbGFncyAmIE5FVFNOTVBfQ0FDSEVfUkVTRVRfVElNRVJfT05fVVNFKQorICAgICAgICBuZXRzbm1wX3NldF9tb25vdG9uaWNfbWFya2VyKCZjYWNoZS0+dGltZXN0YW1wTSk7CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CiAKQEAgLTY0MCwxMCArNzE2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCByZWxlYXNlX2NhY2hlZF9yZXNvdXJjZXMsIE5VTEwpOwogICAgICAgICBjYWNoZV9vdXRzdGFuZGluZ192YWxpZCA9IDE7CiAgICAgfQotICAgIGlmIChjYWNoZS0+dGltZXN0YW1wKQotICAgICAgICBhdGltZV9zZXRNYXJrZXIoY2FjaGUtPnRpbWVzdGFtcCk7Ci0gICAgZWxzZQotICAgICAgICBjYWNoZS0+dGltZXN0YW1wID0gYXRpbWVfbmV3TWFya2VyKCk7CisgICAgbmV0c25tcF9zZXRfbW9ub3RvbmljX21hcmtlcigmY2FjaGUtPnRpbWVzdGFtcE0pOwogICAgIERFQlVHTVNHVCgoImhlbHBlcjpjYWNoZV9oYW5kbGVyIiwgIiBsb2FkZWQgKCVkKVxuIiwgY2FjaGUtPnRpbWVvdXQpKTsKIAogICAgIHJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL2luc3RhbmNlLmMgYi9hZ2VudC9oZWxwZXJzL2luc3RhbmNlLmMKaW5kZXggNjU4YTk2YS4uYTE4N2Q1OCAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9pbnN0YW5jZS5jCisrKyBiL2FnZW50L2hlbHBlcnMvaW5zdGFuY2UuYwpAQCAtOSw2ICs5LDcgQEAKICAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgpAQCAtMjYsNyArMjcsMTEgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaD4KIAorbmV0c25tcF9mZWF0dXJlX3Byb3ZpZGUoaW5zdGFuY2UpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaW5zdGFuY2UsIG1pYl9oZWxwZXJzKQorCiB0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX251bV9maWxlX2luc3RhbmNlX3MgeworICAgIGludCAgIHJlZmNudDsKICAgICBjaGFyICpmaWxlX25hbWU7CiAgICAgRklMRSAqZmlsZXA7CiAgICAgdV9jaGFyIHR5cGU7CkBAIC0zOSw2ICs0NCwyMiBAQAogICogIEB7CiAgKi8KIAorc3RhdGljIG5ldHNubXBfbnVtX2ZpbGVfaW5zdGFuY2UgKgorbmV0c25tcF9udW1fZmlsZV9pbnN0YW5jZV9yZWYobmV0c25tcF9udW1fZmlsZV9pbnN0YW5jZSAqbmZpKQoreworICAgIG5maS0+cmVmY250Kys7CisgICAgcmV0dXJuIG5maTsKK30KKworc3RhdGljIHZvaWQKK25ldHNubXBfbnVtX2ZpbGVfaW5zdGFuY2VfZGVyZWYobmV0c25tcF9udW1fZmlsZV9pbnN0YW5jZSAqbmZpKQoreworICAgIGlmICgtLW5maS0+cmVmY250ID09IDApIHsKKwlmcmVlKG5maS0+ZmlsZV9uYW1lKTsKKwlmcmVlKG5maSk7CisgICAgfQorfQorCiAvKioKICAqIENyZWF0ZXMgYW4gaW5zdGFuY2UgaGVscGVyIGhhbmRsZXIsIGNhbGxzIG5ldHNubXBfY3JlYXRlX2hhbmRsZXIsIHdoaWNoCiAgKiB0aGVuIGNvdWxkIGJlIHJlZ2lzdGVyZWQsIHVzaW5nIG5ldHNubXBfcmVnaXN0ZXJfaGFuZGxlcigpLgpAQCAtMTExLDcgKzEzMiw3IEBACiBnZXRfcmVnKGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgIGNvbnN0IGNoYXIgKm91cm5hbWUsCiAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKLSAgICAgICAgdm9pZCAqaXQsCisgICAgICAgIG5ldHNubXBfbnVtX2ZpbGVfaW5zdGFuY2UgKml0LAogICAgICAgICBpbnQgbW9kZXMsCiAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc2NhbGFyaCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyLAogICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkKQEAgLTEyNiw3ICsxNDcsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnX29pZCwgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2Rlcyk7CiAgICAgICAgIG15aGFuZGxlciA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXIob3VybmFtZSwgc2NhbGFyaCk7Ci0gICAgICAgIG15aGFuZGxlci0+bXl2b2lkID0gKHZvaWQgKikgaXQ7CisgICAgICAgIG15aGFuZGxlci0+bXl2b2lkID0gaXQ7CisJbXloYW5kbGVyLT5kYXRhX2Nsb25lID0gKHZvaWQqKCopKHZvaWQqKSluZXRzbm1wX251bV9maWxlX2luc3RhbmNlX3JlZjsKKwlteWhhbmRsZXItPmRhdGFfZnJlZSA9ICh2b2lkKCopKHZvaWQqKSluZXRzbm1wX251bV9maWxlX2luc3RhbmNlX2RlcmVmOwogICAgICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKG15cmVnLCBteWhhbmRsZXIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG15cmVnID0KQEAgLTEzNCw3ICsxNTcsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxhcmgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfb2lkLCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVzKTsKLSAgICAgICAgbXlyZWctPmhhbmRsZXItPm15dm9pZCA9ICh2b2lkICopIGl0OworICAgICAgICBteXJlZy0+aGFuZGxlci0+bXl2b2lkID0gaXQ7CisJbXlyZWctPmhhbmRsZXItPmRhdGFfY2xvbmUKKwkgICAgPSAodm9pZCAqKCopKHZvaWQgKikpbmV0c25tcF9udW1fZmlsZV9pbnN0YW5jZV9yZWY7CisJbXlyZWctPmhhbmRsZXItPmRhdGFfZnJlZQorCSAgICA9ICh2b2lkICgqKSh2b2lkICopKW5ldHNubXBfbnVtX2ZpbGVfaW5zdGFuY2VfZGVyZWY7CiAgICAgfQogICAgIGlmIChjb250ZXh0TmFtZSkKICAgICAgICAgbXlyZWctPmNvbnRleHROYW1lID0gc3RyZHVwKGNvbnRleHROYW1lKTsKQEAgLTE0Miw2ICsxNjksOCBAQAogfQogCiAvKiBXYXRjaGVkICdsb25nJyBpbnN0YW5jZXMgYXJlIHdyaXRhYmxlIG9uIGJvdGggMzItYml0IGFuZCA2NC1iaXQgc3lzdGVtcyAgKi8KK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZWFkX29ubHlfdWxvbmdfaW5zdGFuY2UsaW5zdGFuY2UpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVBRF9PTkxZX1VMT05HX0lOU1RBTkNFCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X3Vsb25nX2luc3RhbmNlKGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLApAQCAtMTQ5LDI4ICsxNzgsMzQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlMigKICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAogICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBIQU5ETEVSX0NBTl9ST05MWSksCiAgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCiAgICAgICAgICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKHVfbG9uZyksCiAgICAgICAgICAgICAgICAgICAgQVNOX1VOU0lHTkVELCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFQURfT05MWV9VTE9OR19JTlNUQU5DRSAqLwogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodWxvbmdfaW5zdGFuY2UsaW5zdGFuY2UpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVUxPTkdfSU5TVEFOQ0UKIGludAogbmV0c25tcF9yZWdpc3Rlcl91bG9uZ19pbnN0YW5jZShjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlMigKICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAogICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBIQU5ETEVSX0NBTl9SV1JJVEUpLAogICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAogICAgICAgICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZih1X2xvbmcpLAogICAgICAgICAgICAgICAgICAgIEFTTl9VTlNJR05FRCwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VTE9OR19JTlNUQU5DRSAqLwogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVhZF9vbmx5X2NvdW50ZXIzMl9pbnN0YW5jZSxpbnN0YW5jZSkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUFEX09OTFlfQ09VTlRFUjMyX0lOU1RBTkNFCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2NvdW50ZXIzMl9pbnN0YW5jZShjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsCkBAIC0xNzksMTQgKzIxNCwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyKQogewotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZTIoCiAgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKICAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgSEFORExFUl9DQU5fUk9OTFkpLAogICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAogICAgICAgICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZih1X2xvbmcpLAogICAgICAgICAgICAgICAgICAgIEFTTl9DT1VOVEVSLCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFQURfT05MWV9DT1VOVEVSMzJfSU5TVEFOQ0UgKi8KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlYWRfb25seV9sb25nX2luc3RhbmNlLGluc3RhbmNlKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFQURfT05MWV9MT05HX0lOU1RBTkNFCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2xvbmdfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKQEAgLTE5NCwyNiArMjMyLDMyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgKml0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlMigKICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAogICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBIQU5ETEVSX0NBTl9ST05MWSksCiAgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCiAgICAgICAgICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKGxvbmcpLCBBU05fSU5URUdFUiwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUFEX09OTFlfTE9OR19JTlNUQU5DRSAqLwogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobG9uZ19pbnN0YW5jZSxpbnN0YW5jZSkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT05HX0lOU1RBTkNFCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfbG9uZ19pbnN0YW5jZShjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKQogewotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZTIoCiAgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKICAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgSEFORExFUl9DQU5fUldSSVRFKSwKICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YobG9uZyksIEFTTl9JTlRFR0VSLCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPTkdfSU5TVEFOQ0UgKi8KIAogLyogV2F0Y2hlZCAnaW50JyBpbnN0YW5jZXMgYXJlIG9ubHkgd3JpdGFibGUgb24gMzItYml0IHN5c3RlbXMgICovCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVhZF9vbmx5X3VpbnRfaW5zdGFuY2UsaW5zdGFuY2UpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVBRF9PTkxZX1VJTlRfSU5TVEFOQ0UKIGludAogbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfdWludF9pbnN0YW5jZShjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLApAQCAtMjIxLDQyICsyNjUsNTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICppdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKQogewotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZTIoCiAgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKICAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgSEFORExFUl9DQU5fUk9OTFkpLAogICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAogICAgICAgICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZih1bnNpZ25lZCBpbnQpLAogICAgICAgICAgICAgICAgICAgIEFTTl9VTlNJR05FRCwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUFEX09OTFlfVUlOVF9JTlNUQU5DRSAqLwogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodWludF9pbnN0YW5jZSxpbnN0YW5jZSkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VSU5UX0lOU1RBTkNFCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfdWludF9pbnN0YW5jZShjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlMigKICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAogICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBIQU5ETEVSX0NBTl9SV1JJVEUpLAogICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAogICAgICAgICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZih1bnNpZ25lZCBpbnQpLAogICAgICAgICAgICAgICAgICAgIEFTTl9VTlNJR05FRCwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VSU5UX0lOU1RBTkNFICovCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZWFkX29ubHlfaW50X2luc3RhbmNlLGluc3RhbmNlKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFQURfT05MWV9JTlRfSU5TVEFOQ0UKIGludAogbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfaW50X2luc3RhbmNlKGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKQogewotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZTIoCiAgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKICAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgSEFORExFUl9DQU5fUk9OTFkpLAogICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAogICAgICAgICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZihpbnQpLCBBU05fSU5URUdFUiwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUFEX09OTFlfSU5UX0lOU1RBTkNFICovCiAKICAgLyoKICAgICogQ29tcGF0aWJpbGl0eSB3aXRoIGVhcmxpZXIgKGluY29uc2lzdGVudGx5IG5hbWVkKSByb3V0aW5lCiAgICAqLworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlZ2lzdGVyX3JlYWRfb25seV9pbnRfaW5zdGFuY2UsbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfUkVBRF9PTkxZX0lOVF9JTlNUQU5DRQogaW50CiByZWdpc3Rlcl9yZWFkX29ubHlfaW50X2luc3RhbmNlKGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKQEAgLTI2NiwxMSArMzE5LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19vaWQsIHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdCwgc3ViaGFuZGxlcik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9SRUFEX09OTFlfSU5UX0lOU1RBTkNFICovCiAKIC8qCiAgKiBDb250ZXh0IHJlZ2lzdHJhdGlvbnMKICAqLwogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVnaXN0ZXJfcmVhZF9vbmx5X3Vsb25nX2luc3RhbmNlX2NvbnRleHQsaW5zdGFuY2UpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfUkVBRF9PTkxZX1VMT05HX0lOU1RBTkNFX0NPTlRFWFQKIGludAogbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfdWxvbmdfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLApAQCAtMjg1LDExICszNDEsMTQgQEAKICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgSEFORExFUl9DQU5fUk9OTFkpOwogICAgIGlmIChteXJlZyAmJiBjb250ZXh0TmFtZSkKICAgICAgIG15cmVnLT5jb250ZXh0TmFtZSA9IHN0cmR1cChjb250ZXh0TmFtZSk7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlMigKICAgICAgICAgbXlyZWcsIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZih1X2xvbmcpLCBBU05fVU5TSUdORUQsIFdBVENIRVJfRklYRURfU0laRSkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfUkVBRF9PTkxZX1VMT05HX0lOU1RBTkNFX0NPTlRFWFQgKi8KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlZ2lzdGVyX3Vsb25nX2luc3RhbmNlX2NvbnRleHQsaW5zdGFuY2UpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfVUxPTkdfSU5TVEFOQ0VfQ09OVEVYVAogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3Vsb25nX2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCkBAIC0zMDIsMTEgKzM2MSwxNCBAQAogICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBIQU5ETEVSX0NBTl9SV1JJVEUpOwogICAgIGlmIChteXJlZyAmJiBjb250ZXh0TmFtZSkKICAgICAgIG15cmVnLT5jb250ZXh0TmFtZSA9IHN0cmR1cChjb250ZXh0TmFtZSk7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlMigKICAgICAgICAgbXlyZWcsIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZih1X2xvbmcpLCBBU05fVU5TSUdORUQsIFdBVENIRVJfRklYRURfU0laRSkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfVUxPTkdfSU5TVEFOQ0VfQ09OVEVYVCAqLwogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVnaXN0ZXJfcmVhZF9vbmx5X2NvdW50ZXIzMl9pbnN0YW5jZV9jb250ZXh0LGluc3RhbmNlKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX1JFQURfT05MWV9DT1VOVEVSMzJfSU5TVEFOQ0VfQ09OVEVYVAogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9jb3VudGVyMzJfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKQEAgLTMyMSwxMSArMzgzLDE0IEBACiAgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JPTkxZKTsKICAgICBpZiAobXlyZWcgJiYgY29udGV4dE5hbWUpCiAgICAgICBteXJlZy0+Y29udGV4dE5hbWUgPSBzdHJkdXAoY29udGV4dE5hbWUpOwotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZTIoCiAgICAgICAgIG15cmVnLCBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCiAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YodV9sb25nKSwgQVNOX0NPVU5URVIsIFdBVENIRVJfRklYRURfU0laRSkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfUkVBRF9PTkxZX0NPVU5URVIzMl9JTlNUQU5DRV9DT05URVhUICovCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZWdpc3Rlcl9yZWFkX29ubHlfbG9uZ19pbnN0YW5jZV9jb250ZXh0LGluc3RhbmNlKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX1JFQURfT05MWV9MT05HX0lOU1RBTkNFX0NPTlRFWFQKIGludAogbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfbG9uZ19pbnN0YW5jZV9jb250ZXh0KGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKQEAgLTM0MCwxMSArNDA1LDE0IEBACiAgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JPTkxZKTsKICAgICBpZiAobXlyZWcgJiYgY29udGV4dE5hbWUpCiAgICAgICBteXJlZy0+Y29udGV4dE5hbWUgPSBzdHJkdXAoY29udGV4dE5hbWUpOwotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZTIoCiAgICAgICAgIG15cmVnLCBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCiAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YobG9uZyksIEFTTl9JTlRFR0VSLCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX1JFQURfT05MWV9MT05HX0lOU1RBTkNFX0NPTlRFWFQgKi8KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlZ2lzdGVyX2xvbmdfaW5zdGFuY2VfY29udGV4dCxpbnN0YW5jZSkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9MT05HX0lOU1RBTkNFX0NPTlRFWFQKIGludAogbmV0c25tcF9yZWdpc3Rlcl9sb25nX2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKQEAgLTM1NywxMSArNDI1LDE0IEBACiAgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JXUklURSk7CiAgICAgaWYgKG15cmVnICYmIGNvbnRleHROYW1lKQogICAgICAgbXlyZWctPmNvbnRleHROYW1lID0gc3RyZHVwKGNvbnRleHROYW1lKTsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UyKAogICAgICAgICBteXJlZywgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAogICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKGxvbmcpLCBBU05fSU5URUdFUiwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9MT05HX0lOU1RBTkNFX0NPTlRFWFQgKi8KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlZ2lzdGVyX2ludF9pbnN0YW5jZV9jb250ZXh0LGluc3RhbmNlKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX0lOVF9JTlNUQU5DRV9DT05URVhUCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfaW50X2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKQEAgLTM3NSwxMSArNDQ2LDE0IEBACiAgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JXUklURSk7CiAgICAgaWYgKG15cmVnICYmIGNvbnRleHROYW1lKQogICAgICAgbXlyZWctPmNvbnRleHROYW1lID0gc3RyZHVwKGNvbnRleHROYW1lKTsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UyKAogICAgICAgICBteXJlZywgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAogICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKGludCksIEFTTl9JTlRFR0VSLCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX0lOVF9JTlNUQU5DRV9DT05URVhUICovCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZWdpc3Rlcl9yZWFkX29ubHlfaW50X2luc3RhbmNlX2NvbnRleHQsaW5zdGFuY2UpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfUkVBRF9PTkxZX0lOVF9JTlNUQU5DRV9DT05URVhUCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9pbnN0YW5jZV9jb250ZXh0KGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLApAQCAtMzkzLDE0ICs0NjcsMTcgQEAKICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgSEFORExFUl9DQU5fUk9OTFkpOwogICAgIGlmIChteXJlZyAmJiBjb250ZXh0TmFtZSkKICAgICAgIG15cmVnLT5jb250ZXh0TmFtZSA9IHN0cmR1cChjb250ZXh0TmFtZSk7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlMigKICAgICAgICAgbXlyZWcsIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZihpbnQpLCBBU05fSU5URUdFUiwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9SRUFEX09OTFlfSU5UX0lOU1RBTkNFX0NPTlRFWFQgKi8KIAogLyoKICAqIENvbXBhdGliaWxpdHkgd2l0aCBlYXJsaWVyIChpbmNvbnNpc3RlbnRseSBuYW1lZCkgcm91dGluZQogICovCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVhZF9vbmx5X2ludF9pbnN0YW5jZV9jb250ZXh0LGluc3RhbmNlKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFQURfT05MWV9JTlRfSU5TVEFOQ0VfQ09OVEVYVAogaW50CiByZWdpc3Rlcl9yZWFkX29ubHlfaW50X2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCkBAIC00MTMsNyArNDkwLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LCBzdWJoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0TmFtZSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUFEX09OTFlfSU5UX0lOU1RBTkNFX0NPTlRFWFQgKi8KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlZ2lzdGVyX251bV9maWxlX2luc3RhbmNlLGluc3RhbmNlKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX05VTV9GSUxFX0lOU1RBTkNFCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfbnVtX2ZpbGVfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLApAQCAtNDM4LDExICs1MTgsMTIgQEAKICAgICAgICAgcmV0dXJuIE1JQl9SRUdJU1RSQVRJT05fRkFJTEVEOwogICAgIH0KIAorICAgIG5maS0+cmVmY250ID0gMTsKICAgICBteXJlZyA9IGdldF9yZWcobmFtZSwgImZpbGVfbnVtX2hhbmRsZXIiLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgbmZpLAogICAgICAgICAgICAgICAgICAgICBtb2RlLCBuZXRzbm1wX2luc3RhbmNlX251bV9maWxlX2hhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgIHN1YmhhbmRsZXIsIGNvbnRleHROYW1lKTsKICAgICBpZiAoTlVMTCA9PSBteXJlZykgewotICAgICAgICBmcmVlKG5maSk7IC8qIFNOTVBfRlJFRSBvdmVya2lsbCBvbiBsb2NhbCB2YXIgKi8KKyAgICAgICAgbmV0c25tcF9udW1fZmlsZV9pbnN0YW5jZV9kZXJlZihuZmkpOwogICAgICAgICByZXR1cm4gTUlCX1JFR0lTVFJBVElPTl9GQUlMRUQ7CiAgICAgfQogCkBAIC00NTMsNyArNTM0LDEwIEBACiAKICAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9pbnN0YW5jZShteXJlZyk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9OVU1fRklMRV9JTlNUQU5DRSAqLwogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVnaXN0ZXJfaW50X2luc3RhbmNlLGluc3RhbmNlKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX0lOVF9JTlNUQU5DRQogLyoqCiAgKiBUaGlzIGZ1bmN0aW9uIHJlZ2lzdGVycyBhbiBpbnQgaGVscGVyIGhhbmRsZXIgdG8gYSBzcGVjaWZpZWQgT0lELgogICoKQEAgLTQ3NywxMiArNTYxLDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlMigKICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAogICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBIQU5ETEVSX0NBTl9SV1JJVEUpLAogICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAogICAgICAgICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZihpbnQpLCBBU05fSU5URUdFUiwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9JTlRfSU5TVEFOQ0UgKi8KIAogI2lmZGVmIEhBVkVfRE1BTExPQ19ICiBzdGF0aWMgdm9pZCBmcmVlX3dyYXBwZXIodm9pZCAqIHApCkBAIC00OTMsMjkwICs1NzgsNiBAQAogI2RlZmluZSBmcmVlX3dyYXBwZXIgZnJlZQogI2VuZGlmCiAKLSNpZm5kZWYgTkVUU05NUF9OT19ERVBSRUNBVEVEX0ZVTkNUSU9OUwotCi0vKioKLSAqIFxkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgdW51c2VkIGFuZCBzY2hlZHVsZWQgZm9yIHJlbW92YWwgaW4gTmV0LVNOTVAgNS42Ci0gKi8KLWludAotbmV0c25tcF9pbnN0YW5jZV91bG9uZ19oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCi17Ci0KLSAgICB1X2xvbmcgICAgICAgICAqaXQgPSAodV9sb25nICopIGhhbmRsZXItPm15dm9pZDsKLSAgICB1X2xvbmcgICAgICAgICAqaXRfc2F2ZTsKLQotICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX2luc3RhbmNlX3Vsb25nX2hhbmRsZXIiLCAiR290IHJlcXVlc3Q6ICAlZFxuIiwKLSAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKSk7Ci0KLSAgICBzd2l0Y2ggKHJlcWluZm8tPm1vZGUpIHsKLSAgICAgICAgLyoKLSAgICAgICAgICogZGF0YSByZXF1ZXN0cyAKLSAgICAgICAgICovCi0gICAgY2FzZSBNT0RFX0dFVDoKLSAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3RzLT5yZXF1ZXN0dmIsIEFTTl9VTlNJR05FRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgaXQsIHNpemVvZigqaXQpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgLyoKLSAgICAgICAgICogU0VUIHJlcXVlc3RzLiAgU2hvdWxkIG9ubHkgZ2V0IGhlcmUgaWYgcmVnaXN0ZXJlZCBSV1JJVEUgCi0gICAgICAgICAqLwotICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6Ci0gICAgICAgIGlmIChyZXF1ZXN0cy0+cmVxdWVzdHZiLT50eXBlICE9IEFTTl9VTlNJR05FRCkKLSAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX1dST05HVFlQRSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKLSAgICAgICAgLyoKLSAgICAgICAgICogc3RvcmUgb2xkIGluZm8gZm9yIHVuZG8gbGF0ZXIgCi0gICAgICAgICAqLwotICAgICAgICBtZW1kdXAoKHVfY2hhciAqKikgJiBpdF9zYXZlLCAodV9jaGFyICopIGl0LCBzaXplb2YodV9sb25nKSk7Ci0gICAgICAgIGlmIChpdF9zYXZlID09IE5VTEwpIHsKLSAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEUpOwotICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci0gICAgICAgIH0KLSAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2FkZF9saXN0X2RhdGEocmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2RhdGFfbGlzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSU5TVEFOQ0VfSEFORExFUl9OQU1FLCBpdF9zYXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZyZWVfd3JhcHBlcikpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgotICAgICAgICAvKgotICAgICAgICAgKiB1cGRhdGUgY3VycmVudCAKLSAgICAgICAgICovCi0gICAgICAgIERFQlVHTVNHVEwoKCJ0ZXN0aGFuZGxlciIsICJ1cGRhdGVkIHVfbG9uZyAlbHUgLT4gJWx1XG4iLCAqaXQsCi0gICAgICAgICAgICAgICAgICAgICoocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXIpKSk7Ci0gICAgICAgICppdCA9ICoocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXIpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKLSAgICAgICAgKml0ID0KLSAgICAgICAgICAgICooKHVfbG9uZyAqKSBuZXRzbm1wX3JlcXVlc3RfZ2V0X2xpc3RfZGF0YShyZXF1ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlNUQU5DRV9IQU5ETEVSX05BTUUpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKLSAgICBjYXNlIE1PREVfU0VUX0ZSRUU6Ci0gICAgICAgIC8qCi0gICAgICAgICAqIG5vdGhpbmcgdG8gZG8gCi0gICAgICAgICAqLwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBpZiAoaGFuZGxlci0+bmV4dCAmJiBoYW5kbGVyLT5uZXh0LT5hY2Nlc3NfbWV0aG9kKQotICAgICAgICByZXR1cm4gbmV0c25tcF9jYWxsX25leHRfaGFuZGxlcihoYW5kbGVyLCByZWdpbmZvLCByZXFpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cyk7Ci0KLSAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLX0KLQotLyoqCi0gKiBcZGVwcmVjYXRlZCBUaGlzIGZ1bmN0aW9uIGlzIHVudXNlZCBhbmQgc2NoZWR1bGVkIGZvciByZW1vdmFsIGluIE5ldC1TTk1QIDUuNgotICovCi1pbnQKLW5ldHNubXBfaW5zdGFuY2VfY291bnRlcjMyX2hhbmRsZXIobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKLXsKLQotICAgIHVfbG9uZyAgICAgICAgICppdCA9ICh1X2xvbmcgKikgaGFuZGxlci0+bXl2b2lkOwotCi0gICAgREVCVUdNU0dUTCgoIm5ldHNubXBfaW5zdGFuY2VfY291bnRlcjMyX2hhbmRsZXIiLAotICAgICAgICAgICAgICAgICJHb3QgcmVxdWVzdDogICVkXG4iLCByZXFpbmZvLT5tb2RlKSk7Ci0KLSAgICBzd2l0Y2ggKHJlcWluZm8tPm1vZGUpIHsKLSAgICAgICAgLyoKLSAgICAgICAgICogZGF0YSByZXF1ZXN0cyAKLSAgICAgICAgICovCi0gICAgY2FzZSBNT0RFX0dFVDoKLSAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3RzLT5yZXF1ZXN0dmIsIEFTTl9DT1VOVEVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSBpdCwgc2l6ZW9mKCppdCkpOwotICAgICAgICBicmVhazsKLQotICAgICAgICAvKgotICAgICAgICAgKiBTRVQgcmVxdWVzdHMuICBTaG91bGQgb25seSBnZXQgaGVyZSBpZiByZWdpc3RlcmVkIFJXUklURSAKLSAgICAgICAgICovCi0gICAgZGVmYXVsdDoKLSAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKLSAgICAgICAgICAgICAgICAgIm5ldHNubXBfaW5zdGFuY2VfY291bnRlcjMyX2hhbmRsZXI6IGlsbGVnYWwgbW9kZVxuIik7Ci0gICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsIFNOTVBfRVJSX0dFTkVSUik7Ci0gICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotICAgIH0KLSAgICBpZiAoaGFuZGxlci0+bmV4dCAmJiBoYW5kbGVyLT5uZXh0LT5hY2Nlc3NfbWV0aG9kKQotICAgICAgICByZXR1cm4gbmV0c25tcF9jYWxsX25leHRfaGFuZGxlcihoYW5kbGVyLCByZWdpbmZvLCByZXFpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cyk7Ci0gICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci19Ci0KLS8qKgotICogXGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyB1bnVzZWQgYW5kIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBOZXQtU05NUCA1LjYKLSAqLwotaW50Ci1uZXRzbm1wX2luc3RhbmNlX2xvbmdfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQotewotCi0gICAgbG9uZyAgICAgICAgICAgKml0ID0gKGxvbmcgKikgaGFuZGxlci0+bXl2b2lkOwotICAgIGxvbmcgICAgICAgICAgICppdF9zYXZlOwotCi0gICAgREVCVUdNU0dUTCgoIm5ldHNubXBfaW5zdGFuY2VfbG9uZ19oYW5kbGVyIiwgIkdvdCByZXF1ZXN0OiAgJWRcbiIsCi0gICAgICAgICAgICAgICAgcmVxaW5mby0+bW9kZSkpOwotCi0gICAgc3dpdGNoIChyZXFpbmZvLT5tb2RlKSB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIGRhdGEgcmVxdWVzdHMgCi0gICAgICAgICAqLwotICAgIGNhc2UgTU9ERV9HRVQ6Ci0gICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0cy0+cmVxdWVzdHZiLCBBU05fSU5URUdFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgaXQsIHNpemVvZigqaXQpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgLyoKLSAgICAgICAgICogU0VUIHJlcXVlc3RzLiAgU2hvdWxkIG9ubHkgZ2V0IGhlcmUgaWYgcmVnaXN0ZXJlZCBSV1JJVEUgCi0gICAgICAgICAqLwotICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6Ci0gICAgICAgIGlmIChyZXF1ZXN0cy0+cmVxdWVzdHZiLT50eXBlICE9IEFTTl9JTlRFR0VSKQotICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfV1JPTkdUWVBFKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgotICAgICAgICAvKgotICAgICAgICAgKiBzdG9yZSBvbGQgaW5mbyBmb3IgdW5kbyBsYXRlciAKLSAgICAgICAgICovCi0gICAgICAgIG1lbWR1cCgodV9jaGFyICoqKSAmIGl0X3NhdmUsICh1X2NoYXIgKikgaXQsIHNpemVvZihsb25nKSk7Ci0gICAgICAgIGlmIChpdF9zYXZlID09IE5VTEwpIHsKLSAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEUpOwotICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci0gICAgICAgIH0KLSAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2FkZF9saXN0X2RhdGEocmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2RhdGFfbGlzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSU5TVEFOQ0VfSEFORExFUl9OQU1FLCBpdF9zYXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZyZWVfd3JhcHBlcikpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgotICAgICAgICAvKgotICAgICAgICAgKiB1cGRhdGUgY3VycmVudCAKLSAgICAgICAgICovCi0gICAgICAgIERFQlVHTVNHVEwoKCJ0ZXN0aGFuZGxlciIsICJ1cGRhdGVkIHVfbG9uZyAlbHUgLT4gJWx1XG4iLCAqaXQsCi0gICAgICAgICAgICAgICAgICAgICoocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXIpKSk7Ci0gICAgICAgICppdCA9ICoocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXIpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKLSAgICAgICAgKml0ID0KLSAgICAgICAgICAgICooKHVfbG9uZyAqKSBuZXRzbm1wX3JlcXVlc3RfZ2V0X2xpc3RfZGF0YShyZXF1ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlNUQU5DRV9IQU5ETEVSX05BTUUpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKLSAgICBjYXNlIE1PREVfU0VUX0ZSRUU6Ci0gICAgICAgIC8qCi0gICAgICAgICAqIG5vdGhpbmcgdG8gZG8gCi0gICAgICAgICAqLwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgaWYgKGhhbmRsZXItPm5leHQgJiYgaGFuZGxlci0+bmV4dC0+YWNjZXNzX21ldGhvZCkKLSAgICAgICAgcmV0dXJuIG5ldHNubXBfY2FsbF9uZXh0X2hhbmRsZXIoaGFuZGxlciwgcmVnaW5mbywgcmVxaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdHMpOwotICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfQotCi0vKioKLSAqIFxkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgdW51c2VkIGFuZCBzY2hlZHVsZWQgZm9yIHJlbW92YWwgaW4gTmV0LVNOTVAgNS42Ci0gKi8KLWludAotbmV0c25tcF9pbnN0YW5jZV9pbnRfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQotewotCi0gICAgaW50ICppdCA9IChpbnQgKikgaGFuZGxlci0+bXl2b2lkOwotICAgIGludCAqaXRfc2F2ZTsKLSAgICBsb25nIHRtcF9pdDsKLSAgICAKLSAgICBERUJVR01TR1RMKCgibmV0c25tcF9pbnN0YW5jZV9pbnRfaGFuZGxlciIsICJHb3QgcmVxdWVzdDogICVkXG4iLAotICAgICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUpKTsKLQotICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgewotICAgICAgICAvKgotICAgICAgICAgKiBkYXRhIHJlcXVlc3RzIAotICAgICAgICAgKi8KLSAgICBjYXNlIE1PREVfR0VUOgotCS8qCi0JICogVXNlIGEgbG9uZyBoZXJlLCBvdGhlcndpc2Ugb24gNjQgYml0IHVzZSBvZiBhbiBpbnQgd291bGQgZmFpbAotCSAqLwotCXRtcF9pdCA9ICppdDsKLSAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3RzLT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSAmdG1wX2l0LCBzaXplb2YodG1wX2l0KSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgICAgIC8qCi0gICAgICAgICAqIFNFVCByZXF1ZXN0cy4gIFNob3VsZCBvbmx5IGdldCBoZXJlIGlmIHJlZ2lzdGVyZWQgUldSSVRFIAotICAgICAgICAgKi8KLSAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgotICAgICAgICBpZiAocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dHlwZSAhPSBBU05fSU5URUdFUikKLSAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX1dST05HVFlQRSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKLSAgICAgICAgLyoKLSAgICAgICAgICogc3RvcmUgb2xkIGluZm8gZm9yIHVuZG8gbGF0ZXIgCi0gICAgICAgICAqLwotICAgICAgICBtZW1kdXAoKHVfY2hhciAqKikgJiBpdF9zYXZlLCAodV9jaGFyICopIGl0LCBzaXplb2YoaW50KSk7Ci0gICAgICAgIGlmIChpdF9zYXZlID09IE5VTEwpIHsKLSAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEUpOwotICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci0gICAgICAgIH0KLSAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2FkZF9saXN0X2RhdGEocmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2RhdGFfbGlzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSU5TVEFOQ0VfSEFORExFUl9OQU1FLCBpdF9zYXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZyZWVfd3JhcHBlcikpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgotICAgICAgICAvKgotICAgICAgICAgKiB1cGRhdGUgY3VycmVudCAKLSAgICAgICAgICovCi0gICAgICAgIERFQlVHTVNHVEwoKCJ0ZXN0aGFuZGxlciIsICJ1cGRhdGVkIGludCAlZCAtPiAlbGRcbiIsICppdCwKLSAgICAgICAgICAgICAgICAgICAgKihyZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcikpKTsKLSAgICAgICAgKml0ID0gKGludCkgKihyZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBNT0RFX1NFVF9VTkRPOgotICAgICAgICAqaXQgPQotICAgICAgICAgICAgKigodV9pbnQgKikgbmV0c25tcF9yZXF1ZXN0X2dldF9saXN0X2RhdGEocmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlNUQU5DRV9IQU5ETEVSX05BTUUpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKLSAgICBjYXNlIE1PREVfU0VUX0ZSRUU6Ci0gICAgICAgIC8qCi0gICAgICAgICAqIG5vdGhpbmcgdG8gZG8gCi0gICAgICAgICAqLwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgaWYgKGhhbmRsZXItPm5leHQgJiYgaGFuZGxlci0+bmV4dC0+YWNjZXNzX21ldGhvZCkKLSAgICAgICAgcmV0dXJuIG5ldHNubXBfY2FsbF9uZXh0X2hhbmRsZXIoaGFuZGxlciwgcmVnaW5mbywgcmVxaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdHMpOwotICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfQotCi0jZW5kaWYgLyogTkVUU05NUF9OT19ERVBSRUNBVEVEX0ZVTkNUSU9OUyAqLwotCiBpbnQKIG5ldHNubXBfaW5zdGFuY2VfbnVtX2ZpbGVfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCkBAIC03ODQsNyArNTg1LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQogewogICAgIG5ldHNubXBfbnVtX2ZpbGVfaW5zdGFuY2UgKm5maTsKLSAgICB1X2xvbmcgaXQsICppdF9zYXZlOworICAgIHVfbG9uZyBpdDsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCisgICAgdV9sb25nICppdF9zYXZlOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIGludCByYzsKIAogICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaGFuZGxlcik7CkBAIC04MjYsNiArNjMwLDcgQEAKICAgICAgICAgLyoKICAgICAgICAgICogU0VUIHJlcXVlc3RzLiAgU2hvdWxkIG9ubHkgZ2V0IGhlcmUgaWYgcmVnaXN0ZXJlZCBSV1JJVEUgCiAgICAgICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgICAgICBuZXRzbm1wX2Fzc2VydChOVUxMID09IG5maS0+ZmlsZXApOwogICAgICAgICBpZiAocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dHlwZSAhPSBuZmktPnR5cGUpCkBAIC04OTgsNiArNzAzLDEyIEBACiAgICAgICAgICAgICBuZmktPmZpbGVwID0gTlVMTDsKICAgICAgICAgfQogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICBkZWZhdWx0OgorICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAibmV0c25tcF9pbnN0YW5jZV9udW1fZmlsZV9oYW5kbGVyOiBpbGxlZ2FsIG1vZGVcbiIpOworICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLCBTTk1QX0VSUl9HRU5FUlIpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKICAgICB9CiAKICAgICBpZiAoaGFuZGxlci0+bmV4dCAmJiBoYW5kbGVyLT5uZXh0LT5hY2Nlc3NfbWV0aG9kKQpAQCAtOTA2LDkzICs3MTcsNiBAQAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQogCi0jaWZuZGVmIE5FVFNOTVBfTk9fREVQUkVDQVRFRF9GVU5DVElPTlMKLQotLyoqCi0gKiBcZGVwcmVjYXRlZCBUaGlzIGZ1bmN0aW9uIGlzIHVudXNlZCBhbmQgc2NoZWR1bGVkIGZvciByZW1vdmFsIGluIE5ldC1TTk1QIDUuNgotICovCi1pbnQKLW5ldHNubXBfaW5zdGFuY2VfdWludF9oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCi17Ci0KLSAgICB1bnNpZ25lZCBpbnQgKml0ID0gKHVuc2lnbmVkIGludCAqKSBoYW5kbGVyLT5teXZvaWQ7Ci0gICAgdW5zaWduZWQgaW50ICppdF9zYXZlOwotICAgIHVuc2lnbmVkIGxvbmcgdG1wX2l0OwotICAgIAotICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX2luc3RhbmNlX3VpbnRfaGFuZGxlciIsICJHb3QgcmVxdWVzdDogICVkXG4iLAotICAgICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUpKTsKLQotICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgewotICAgICAgICAvKgotICAgICAgICAgKiBkYXRhIHJlcXVlc3RzIAotICAgICAgICAgKi8KLSAgICBjYXNlIE1PREVfR0VUOgotCS8qCi0JICogVXNlIGEgbG9uZyBoZXJlLCBvdGhlcndpc2Ugb24gNjQgYml0IHVzZSBvZiBhbiBpbnQgd291bGQgZmFpbAotCSAqLwotCXRtcF9pdCA9ICppdDsKLSAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3RzLT5yZXF1ZXN0dmIsIEFTTl9VTlNJR05FRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgJnRtcF9pdCwgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgLyoKLSAgICAgICAgICogU0VUIHJlcXVlc3RzLiAgU2hvdWxkIG9ubHkgZ2V0IGhlcmUgaWYgcmVnaXN0ZXJlZCBSV1JJVEUgCi0gICAgICAgICAqLwotICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6Ci0gICAgICAgIGlmIChyZXF1ZXN0cy0+cmVxdWVzdHZiLT50eXBlICE9IEFTTl9VTlNJR05FRCkKLSAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX1dST05HVFlQRSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKLSAgICAgICAgLyoKLSAgICAgICAgICogc3RvcmUgb2xkIGluZm8gZm9yIHVuZG8gbGF0ZXIgCi0gICAgICAgICAqLwotICAgICAgICBtZW1kdXAoKHVfY2hhciAqKikgJiBpdF9zYXZlLCAodV9jaGFyICopIGl0LCBzaXplb2YodV9pbnQpKTsKLSAgICAgICAgaWYgKGl0X3NhdmUgPT0gTlVMTCkgewotICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRSk7Ci0gICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLSAgICAgICAgfQotICAgICAgICBuZXRzbm1wX3JlcXVlc3RfYWRkX2xpc3RfZGF0YShyZXF1ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfZGF0YV9saXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJTlNUQU5DRV9IQU5ETEVSX05BTUUsIGl0X3NhdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZnJlZV93cmFwcGVyKSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046Ci0gICAgICAgIC8qCi0gICAgICAgICAqIHVwZGF0ZSBjdXJyZW50IAotICAgICAgICAgKi8KLSAgICAgICAgREVCVUdNU0dUTCgoInRlc3RoYW5kbGVyIiwgInVwZGF0ZWQgdWludCAlZCAtPiAlbGRcbiIsICppdCwKLSAgICAgICAgICAgICAgICAgICAgKihyZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcikpKTsKLSAgICAgICAgKml0ID0gKHVuc2lnbmVkIGludCkgKihyZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBNT0RFX1NFVF9VTkRPOgotICAgICAgICAqaXQgPQotICAgICAgICAgICAgKigodV9pbnQgKikgbmV0c25tcF9yZXF1ZXN0X2dldF9saXN0X2RhdGEocmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlNUQU5DRV9IQU5ETEVSX05BTUUpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKLSAgICBjYXNlIE1PREVfU0VUX0ZSRUU6Ci0gICAgICAgIC8qCi0gICAgICAgICAqIG5vdGhpbmcgdG8gZG8gCi0gICAgICAgICAqLwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgaWYgKGhhbmRsZXItPm5leHQgJiYgaGFuZGxlci0+bmV4dC0+YWNjZXNzX21ldGhvZCkKLSAgICAgICAgcmV0dXJuIG5ldHNubXBfY2FsbF9uZXh0X2hhbmRsZXIoaGFuZGxlciwgcmVnaW5mbywgcmVxaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdHMpOwotICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfQotCi0jZW5kaWYgLyogTkVUU05NUF9OT19ERVBSRUNBVEVEX0ZVTkNUSU9OUyAqLwotCiBpbnQKIG5ldHNubXBfaW5zdGFuY2VfaGVscGVyX2hhbmRsZXIobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKQEAgLTEwMjUsNiArNzQ5LDcgQEAKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CiAgICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046CkBAIC0xMDQwLDYgKzc2NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cyk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICBjYXNlIE1PREVfR0VUTkVYVDoKICAgICAgICAgaWYgKGNtcCA8IDAgfHwgKGNtcCA9PSAwICYmIHJlcXVlc3RzLT5pbmNsdXNpdmUpKSB7CkBAIC0xMDY1LDYgKzc5MSwxMSBAQAogICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgIm5ldHNubXBfaW5zdGFuY2VfaGVscGVyX2hhbmRsZXI6IGlsbGVnYWwgbW9kZVxuIik7CisgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsIFNOTVBfRVJSX0dFTkVSUik7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogICAgIH0KICAgICAvKgogICAgICAqIGdvdCBoZXJlIG9ubHkgaWYgaWxsZWdhbCBtb2RlIGZvdW5kIApkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9tb2RlX2VuZF9jYWxsLmMgYi9hZ2VudC9oZWxwZXJzL21vZGVfZW5kX2NhbGwuYwppbmRleCBkN2RkMzAyLi4wYmZjYzY5IDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL21vZGVfZW5kX2NhbGwuYworKysgYi9hZ2VudC9oZWxwZXJzL21vZGVfZW5kX2NhbGwuYwpAQCAtOSwxMiArOSwxNyBAQAogICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmg+CiAKK25ldHNubXBfZmVhdHVyZV9wcm92aWRlKG1vZGVfZW5kX2NhbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobW9kZV9lbmRfY2FsbCwgbWliX2hlbHBlcnMpCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NT0RFX0VORF9DQUxMCiAvKiogQGRlZmdyb3VwIG1vZGVfZW5kX2NhbGwgbW9kZV9lbmRfY2FsbAogICogIEF0IHRoZSBlbmQgb2YgYSBzZXJpZXMgb2YgcmVxdWVzdHMsIGNhbGwgYW5vdGhlciBoYW5kbGVyIGhvb2suCiAgKiAgSGFuZGxlcnMgdGhhdCB3YW50IHRvIGxvb3AgdGhyb3VnaCBhIHNlcmllcyBvZiByZXF1ZXN0cyBhbmQgdGhlbgpAQCAtMTEzLDUgKzExOCwxMCBAQAogICAgIAogICAgIHJldHVybiByZXQyOwogfQorI2Vsc2UKK25ldHNubXBfZmVhdHVyZV91bnVzZWQobW9kZV9lbmRfY2FsbCk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NT0RFX0VORF9DQUxMICovCisKKwogLyoqICBAfSAqLwogCmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL211bHRpcGxleGVyLmMgYi9hZ2VudC9oZWxwZXJzL211bHRpcGxleGVyLmMKaW5kZXggZTU0M2Y1Ny4uMmE3YTY2NCAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9tdWx0aXBsZXhlci5jCisrKyBiL2FnZW50L2hlbHBlcnMvbXVsdGlwbGV4ZXIuYwpAQCAtODQsNiArODQsNyBAQAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKICAgICBjYXNlIE1PREVfU0VUX0FDVElPTjoKQEAgLTEwMCw2ICsxMDEsNyBAQAogICAgICAgICAvKgogICAgICAgICAgKiBYWFg6IHByb2Nlc3MgU0VUcyBzcGVjaWFsbHksIGFuZCBwb3NzaWJseSBvdGhlcnMgCiAgICAgICAgICAqLworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ1bnN1cHBvcnRlZCBtb2RlIGZvciBtdWx0aXBsZXhlcjogJWRcbiIsCiAgICAgICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9vbGRfYXBpLmMgYi9hZ2VudC9oZWxwZXJzL29sZF9hcGkuYwppbmRleCBhNDJlOTA0Li4zOTdiZGM3IDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL29sZF9hcGkuYworKysgYi9hZ2VudC9oZWxwZXJzL29sZF9hcGkuYwpAQCAtMTMsNiArMTMsOCBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmg+CiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKwogI2RlZmluZSBNSUJfQ0xJRU5UU19BUkVfRVZJTCAxCiAKICNpZmRlZiBIQVZFX0RNQUxMT0NfSApAQCAtNDksNiArNTEsMTkgQEAKICAgICByZXR1cm4gbmV0c25tcF9jcmVhdGVfaGFuZGxlcigib2xkX2FwaSIsIG5ldHNubXBfb2xkX2FwaV9oZWxwZXIpOwogfQogCitzdHJ1Y3QgdmFyaWFibGUgKgorbmV0c25tcF9kdXBsaWNhdGVfdmFyaWFibGUoY29uc3Qgc3RydWN0IHZhcmlhYmxlICp2YXIpCit7CisgICAgc3RydWN0IHZhcmlhYmxlICp2YXIyID0gTlVMTDsKKyAgICAKKyAgICBpZiAodmFyKSB7CisgICAgICAgIGNvbnN0IGludCB2YXJzaXplID0gb2Zmc2V0b2Yoc3RydWN0IHZhcmlhYmxlLCBuYW1lKSArIHZhci0+bmFtZWxlbiAqIHNpemVvZih2YXItPm5hbWVbMF0pOworICAgICAgICB2YXIyID0gbWFsbG9jKHZhcnNpemUpOworICAgICAgICBpZiAodmFyMikKKyAgICAgICAgICAgIG1lbWNweSh2YXIyLCB2YXIsIHZhcnNpemUpOworICAgIH0KKyAgICByZXR1cm4gdmFyMjsKK30KIAogLyoqIFJlZ2lzdGVycyBhbiBvbGQgQVBJIHNldCBpbnRvIHRoZSBtaWIgdHJlZS4gIEZ1bmN0aW9uYWxseSB0aGlzCiAgKiBtaW1pY3MgdGhlIG9sZCByZWdpc3Rlcl9taWJfY29udGV4dCgpIGZ1bmN0aW9uIChhbmQgaW4gZmFjdCB0aGUgbmV3CkBAIC01NiwxMCArNzEsMTAgQEAKICAqLwogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX29sZF9hcGkoY29uc3QgY2hhciAqbW9kdWxlTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmFyaWFibGUgKnZhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdmFyaWFibGUgKnZhciwKICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdmFyc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtdmFycywKLSAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiBtaWJsb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogbWlibG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBtaWJsb2NsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHByaW9yaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCByYW5nZV9zdWJpZCwKQEAgLTgwLDkgKzk1LDggQEAKICAgICAgICAgaWYgKHJlZ2luZm8gPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAKLSAgICAgICAgbWVtZHVwKCh1X2NoYXIgKiopICZ2cCwKLSAgICAgICAgICAgICAgICh2b2lkICopIChzdHJ1Y3QgdmFyaWFibGUgKikgKChjaGFyICopIHZhciArIHZhcnNpemUgKiBpKSwKLSAgICAgICAgICAgICAgIHZhcnNpemUpOworCXZwID0gbmV0c25tcF9kdXBsaWNhdGVfdmFyaWFibGUoKGNvbnN0IHN0cnVjdCB2YXJpYWJsZSAqKQorCQkJCQkoKGNvbnN0IGNoYXIgKikgdmFyICsgdmFyc2l6ZSAqIGkpKTsKIAogICAgICAgICByZWdpbmZvLT5oYW5kbGVyID0gZ2V0X29sZF9hcGlfaGFuZGxlcigpOwogICAgICAgICByZWdpbmZvLT5oYW5kbGVyTmFtZSA9IHN0cmR1cChtb2R1bGVOYW1lKTsKQEAgLTEwMCw2ICsxMTQsOSBAQAogICAgICAgICBtZW1jcHkocmVnaW5mby0+cm9vdG9pZCArIG1pYmxvY2xlbiwgdnAtPm5hbWUsIHZwLT5uYW1lbGVuCiAgICAgICAgICAgICAgICAqIHNpemVvZihvaWQpKTsKICAgICAgICAgcmVnaW5mby0+aGFuZGxlci0+bXl2b2lkID0gKHZvaWQgKikgdnA7CisgICAgICAgIHJlZ2luZm8tPmhhbmRsZXItPmRhdGFfY2xvbmUKKwkgICAgPSAodm9pZCAqKCopKHZvaWQgKikpbmV0c25tcF9kdXBsaWNhdGVfdmFyaWFibGU7CisgICAgICAgIHJlZ2luZm8tPmhhbmRsZXItPmRhdGFfZnJlZSA9IGZyZWU7CiAKICAgICAgICAgcmVnaW5mby0+cHJpb3JpdHkgPSBwcmlvcml0eTsKICAgICAgICAgcmVnaW5mby0+cmFuZ2Vfc3ViaWQgPSByYW5nZV9zdWJpZDsKQEAgLTExNCw3ICsxMzEsNyBAQAogICAgICAgICAgKi8KICAgICAgICAgaWYgKG5ldHNubXBfcmVnaXN0ZXJfaGFuZGxlcihyZWdpbmZvKSAhPSBNSUJfUkVHSVNURVJFRF9PSykgewogICAgICAgICAgICAgLyoqIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZShyZWdpbmZvKTsgYWxyZWFkeSBmcmVlZCAqLwotICAgICAgICAgICAgU05NUF9GUkVFKHZwKTsKKyAgICAgICAgICAgIC8qIFNOTVBfRlJFRSh2cCk7IGFscmVhZHkgZnJlZWQgKi8KICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwpAQCAtMTIzLDcgKzE0MCw3IEBACiAvKiogcmVnaXN0ZXJzIGEgcm93IHdpdGhpbiBhIG1pYiB0YWJsZSAqLwogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX21pYl90YWJsZV9yb3coY29uc3QgY2hhciAqbW9kdWxlTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmFyaWFibGUgKnZhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdmFyaWFibGUgKnZhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdmFyc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtdmFycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiBtaWJsb2MsCkBAIC0xMzcsOCArMTU0LDggQEAKICAgICBvaWQgICAgICAgICAgICAgdWJvdW5kID0gMDsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBudW12YXJzOyBpKyspIHsKLSAgICAgICAgc3RydWN0IHZhcmlhYmxlICp2ciA9Ci0gICAgICAgICAgICAoc3RydWN0IHZhcmlhYmxlICopICgoY2hhciAqKSB2YXIgKyAoaSAqIHZhcnNpemUpKTsKKyAgICAgICAgY29uc3Qgc3RydWN0IHZhcmlhYmxlICp2ciA9CisgICAgICAgICAgICAoY29uc3Qgc3RydWN0IHZhcmlhYmxlICopICgoY29uc3QgY2hhciAqKSB2YXIgKyAoaSAqIHZhcnNpemUpKTsKICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcjsKICAgICAgICAgaWYgKCB2YXJfc3ViaWQgPiAoaW50KW1pYmxvY2xlbiApIHsKICAgICAgICAgICAgIGJyZWFrOyAgICAvKiBkb2Vzbid0IG1ha2Ugc2Vuc2UgKi8KQEAgLTE3OSwxNCArMTk2LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICByLT5yb290b2lkX2xlbikpOwogICAgICAgICBERUJVR01TRygoIm5ldHNubXBfcmVnaXN0ZXJfbWliX3RhYmxlX3JvdyIsICIoJWQpXG4iLAogICAgICAgICAgICAgICAgICAgICAgKHZhcl9zdWJpZCAtIHZyLT5uYW1lbGVuKSkpOwotICAgICAgICByLT5oYW5kbGVyLT5teXZvaWQgPSAodm9pZCAqKSBtYWxsb2ModmFyc2l6ZSk7CisgICAgICAgIHItPmhhbmRsZXItPm15dm9pZCA9IG5ldHNubXBfZHVwbGljYXRlX3ZhcmlhYmxlKHZyKTsKKyAgICAgICAgci0+aGFuZGxlci0+ZGF0YV9jbG9uZSA9ICh2b2lkICooKikodm9pZCAqKSluZXRzbm1wX2R1cGxpY2F0ZV92YXJpYWJsZTsKKyAgICAgICAgci0+aGFuZGxlci0+ZGF0YV9mcmVlID0gZnJlZTsKIAogICAgICAgICBpZiAoci0+aGFuZGxlci0+bXl2b2lkID09IE5VTEwpIHsKICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZShyKTsKICAgICAgICAgICAgIHJjID0gTUlCX1JFR0lTVFJBVElPTl9GQUlMRUQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBtZW1jcHkoKGNoYXIgKikgci0+aGFuZGxlci0+bXl2b2lkLCB2ciwgdmFyc2l6ZSk7CiAKICAgICAgICAgci0+Y29udGV4dE5hbWUgPSAoY29udGV4dCkgPyBzdHJkdXAoY29udGV4dCkgOiBOVUxMOwogCkBAIC0yNTYsMTMgKzI3NCwxMyBAQAogICAgIGludCAgICAgICAgICAgICBzdGF0dXM7CiAKICAgICBzdHJ1Y3QgdmFyaWFibGUgKnZwOwotICAgIFdyaXRlTWV0aG9kICAgICp3cml0ZV9tZXRob2QgPSBOVUxMOwotICAgIHNpemVfdCAgICAgICAgICBsZW47Ci0gICAgdV9jaGFyICAgICAgICAgKmFjY2VzcyA9IE5VTEw7CiAgICAgbmV0c25tcF9vbGRfYXBpX2NhY2hlICpjYWNoZXB0cjsKICAgICBuZXRzbm1wX2FnZW50X3Nlc3Npb24gKm9sZGFzcCA9IE5VTEw7Ci0gICAgb2lkICAgICAgICAgICAgIHRtcF9uYW1lW01BWF9PSURfTEVOXTsKKyAgICB1X2NoYXIgICAgICAgICAqYWNjZXNzID0gTlVMTDsKKyAgICBXcml0ZU1ldGhvZCAgICAqd3JpdGVfbWV0aG9kID0gTlVMTDsKKyAgICBzaXplX3QgICAgICAgICAgbGVuOwogICAgIHNpemVfdCAgICAgICAgICB0bXBfbGVuOworICAgIG9pZCAgICAgICAgICAgICB0bXBfbmFtZVtNQVhfT0lEX0xFTl07CiAKICAgICB2cCA9IChzdHJ1Y3QgdmFyaWFibGUgKikgaGFuZGxlci0+bXl2b2lkOwogCkBAIC0yOTMsNyArMzExLDkgQEAKICAgICAgICAgc3dpdGNoIChyZXFpbmZvLT5tb2RlKSB7CiAgICAgICAgIGNhc2UgTU9ERV9HRVQ6CiAgICAgICAgIGNhc2UgTU9ERV9HRVRORVhUOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogQWN0dWFsbHkgY2FsbCB0aGUgb2xkIG1pYi1tb2R1bGUgZnVuY3Rpb24gCiAgICAgICAgICAgICAgKi8KQEAgLTMyNCw3ICszNDQsOSBAQAogICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICogcmVzdWx0IHJldHVybmVkIAogICAgICAgICAgICAgICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgICAgICAgICBpZiAocmVxaW5mby0+bW9kZSAhPSBNT0RFX1NFVF9SRVNFUlZFMSkKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0cy0+cmVxdWVzdHZiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3ZwLT50eXBlLCBhY2Nlc3MsIGxlbik7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMzQ5LDcgKzM3MSw5IEBACiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogQUFBOiBmYWxsIHRocm91Z2ggZm9yIGV2ZXJ5dGhpbmcgdGhhdCBpcyBhIHNldCAoc2VlIEJCQikgCiAgICAgICAgICAgICAgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICAgICBpZiAocmVxaW5mby0+bW9kZSAhPSBNT0RFX1NFVF9SRVNFUlZFMSkKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhY2hlcHRyID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX29sZF9hcGlfY2FjaGUpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9yZWFkX29ubHkuYyBiL2FnZW50L2hlbHBlcnMvcmVhZF9vbmx5LmMKaW5kZXggYjg1Y2ZiNS4uMGIwNmQ0ZiAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9yZWFkX29ubHkuYworKysgYi9hZ2VudC9oZWxwZXJzL3JlYWRfb25seS5jCkBAIC00NCw2ICs0NCw3IEBACiAKICAgICBzd2l0Y2ggKHJlcWluZm8tPm1vZGUpIHsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CiAgICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046CkBAIC01Miw2ICs1Myw3IEBACiAgICAgY2FzZSBNT0RFX1NFVF9VTkRPOgogICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yX2FsbChyZXF1ZXN0cywgU05NUF9FUlJfTk9UV1JJVEFCTEUpOwogICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9UV1JJVEFCTEU7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICBjYXNlIE1PREVfR0VUOgogICAgIGNhc2UgTU9ERV9HRVRORVhUOgpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9yb3dfbWVyZ2UuYyBiL2FnZW50L2hlbHBlcnMvcm93X21lcmdlLmMKaW5kZXggOTNkMzUzMi4uNGE4ZTQ3NiAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9yb3dfbWVyZ2UuYworKysgYi9hZ2VudC9oZWxwZXJzL3Jvd19tZXJnZS5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CkBAIC0xMSw2ICsxMiwxMiBAQAogI2luY2x1ZGUgPHN0cmluZ3MuaD4KICNlbmRpZgogCituZXRzbm1wX2ZlYXR1cmVfcHJvdmlkZShyb3dfbWVyZ2UpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yocm93X21lcmdlLCByb3dfbWVyZ2VfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJvd19tZXJnZV9hbGwsIG1pYl9oZWxwZXJzKQorCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ST1dfTUVSR0UKIC8qKiBAZGVmZ3JvdXAgcm93X21lcmdlIHJvd19tZXJnZQogICogIENhbGxzIHN1YiBoYW5kbGVycyB3aXRoIHJlcXVlc3QgZm9yIG9uZSByb3cgYXQgYSB0aW1lLgogICogIEBpbmdyb3VwIHV0aWxpdGllcwpAQCAtMzgsNiArNDUsOCBAQAogCiAvKiogZnVuY3Rpb25hbGx5IHRoZSBzYW1lIGFzIGNhbGxpbmcgbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyKCkgYnV0IGFsc28KICAqIGluamVjdHMgYSByb3dfbWVyZ2UgaGFuZGxlciBhdCB0aGUgc2FtZSB0aW1lIGZvciB5b3UuICovCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVnaXN0ZXJfcm93X21lcmdlLCByb3dfbWVyZ2VfYWxsKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX1JPV19NRVJHRQogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3Jvd19tZXJnZShuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvKQogewpAQCAtNDUsNiArNTQsNyBAQAogCQkgICAgbmV0c25tcF9nZXRfcm93X21lcmdlX2hhbmRsZXIocmVnaW5mby0+cm9vdG9pZF9sZW4rMSkpOwogICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXIocmVnaW5mbyk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9ST1dfTUVSR0UgKi8KIAogc3RhdGljIHZvaWQKIF9ybV9zdGF0dXNfZnJlZSh2b2lkICptZW0pCkBAIC0zNjIsNSArMzcyLDEwIEBACiAgICAgbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyX2J5X25hbWUoInJvd19tZXJnZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9nZXRfcm93X21lcmdlX2hhbmRsZXIoLTEpKTsKIH0KKyNlbHNlIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUk9XX01FUkdFICovCituZXRzbm1wX2ZlYXR1cmVfdW51c2VkKHJvd19tZXJnZSk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ST1dfTUVSR0UgKi8KKworCiAvKiogIEB9ICovCiAKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvc2NhbGFyLmMgYi9hZ2VudC9oZWxwZXJzL3NjYWxhci5jCmluZGV4IGI3MzRjMDQuLjdhNGM5ZTAgMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvc2NhbGFyLmMKKysrIGIvYWdlbnQvaGVscGVycy9zY2FsYXIuYwpAQCAtMTYyLDYgKzE2Miw3IEBACiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgogICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgpAQCAtMTgwLDYgKzE4MSw3IEBACiAgICAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgY2FzZSBNT0RFX0dFVE5FWFQ6CiAgICAgICAgIHJlZ2luZm8tPnJvb3RvaWRbcmVnaW5mby0+cm9vdG9pZF9sZW4rK10gPSAwOwpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9zY2FsYXJfZ3JvdXAuYyBiL2FnZW50L2hlbHBlcnMvc2NhbGFyX2dyb3VwLmMKaW5kZXggMDljZWUxYS4uNmI3ZjA5OCAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9zY2FsYXJfZ3JvdXAuYworKysgYi9hZ2VudC9oZWxwZXJzL3NjYWxhcl9ncm91cC5jCkBAIC0xNSw2ICsxNSwxNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2luc3RhbmNlLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmg+CiAKK3N0YXRpYyBuZXRzbm1wX3NjYWxhcl9ncm91cCoKK2Nsb25lX3NjYWxhcl9ncm91cChuZXRzbm1wX3NjYWxhcl9ncm91cCogc3JjKQoreworICBuZXRzbm1wX3NjYWxhcl9ncm91cCAqdCA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9zY2FsYXJfZ3JvdXApOworICBpZih0ICE9IE5VTEwpIHsKKyAgICB0LT5sYm91bmQgPSBzcmMtPmxib3VuZDsKKyAgICB0LT51Ym91bmQgPSBzcmMtPnVib3VuZDsKKyAgfQorICByZXR1cm4gdDsKK30KKwogLyoqIEBkZWZncm91cCBzY2FsYXJfZ3JvdXBfZ3JvdXAgc2NhbGFyX2dyb3VwCiAgKiAgUHJvY2VzcyBncm91cHMgb2Ygc2NhbGFycy4KICAqICBAaW5ncm91cCBsZWFmCkBAIC0zOCw2ICs0OSw4IEBACiAJICAgIHNncm91cC0+bGJvdW5kID0gZmlyc3Q7CiAJICAgIHNncm91cC0+dWJvdW5kID0gbGFzdDsKICAgICAgICAgICAgIHJldC0+bXl2b2lkID0gKHZvaWQgKilzZ3JvdXA7CisgICAgICAgICAgICByZXQtPmRhdGFfZnJlZSA9IGZyZWU7CisgICAgICAgICAgICByZXQtPmRhdGFfY2xvbmUgPSAodm9pZCAqKCopKHZvaWQgKikpY2xvbmVfc2NhbGFyX2dyb3VwOwogCX0KICAgICB9CiAgICAgcmV0dXJuIHJldDsKQEAgLTk2LDEyICsxMDksMTQgQEAKICAgICAgICAgcmV0ID0gU05NUF9OT1NVQ0hPQkpFQ1Q7CiAgICAgICAgIC8qIEZhbGx0aHJvdWdoICovCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgogICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgogICAgIGNhc2UgTU9ERV9TRVRfQ09NTUlUOgogICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKICAgICBjYXNlIE1PREVfU0VUX0ZSRUU6CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgIGlmIChjbXAgIT0gMCB8fAogICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+bmFtZV9sZW5ndGggPD0gcmVnaW5mby0+cm9vdG9pZF9sZW4pIHsKIAkgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvc25tcF9nZXRfc3RhdGlzdGljLmMgYi9hZ2VudC9oZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5jCmluZGV4IGI5ZGFjNzYuLmVmYWMyYWMgMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvc25tcF9nZXRfc3RhdGlzdGljLmMKKysrIGIvYWdlbnQvaGVscGVycy9zbm1wX2dldF9zdGF0aXN0aWMuYwpAQCAtMSw5ICsxLDE5IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaD4KIAorbmV0c25tcF9mZWF0dXJlX3Byb3ZpZGUoaGVscGVyX3N0YXRpc3RpY3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaGVscGVyX3N0YXRpc3RpY3MsIG1pYl9oZWxwZXJzKQorCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfSEVMUEVSX1NUQVRJU1RJQ1MKKy8qIGlmIHdlJ3JlIG5vdCBuZWVkZWQsIHRoZW4gbmVpdGhlciBpcyB0aGlzICovCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzdGF0aXN0aWNzKQorI2VuZGlmCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9IRUxQRVJfU1RBVElTVElDUwogc3RhdGljIGludAogbmV0c25tcF9nZXRfc3RhdGlzdGljX2hlbHBlcl9oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKQEAgLTQ2LDMgKzU2LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZ2V0X3N0YXRpc3RpY19oYW5kbGVyKGJlZ2luIC0gc3RhcnQpKTsKICAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXJfZ3JvdXAocmVnaW5mbywgc3RhcnQsIHN0YXJ0ICsgKGVuZCAtIGJlZ2luKSk7CiB9CisjZWxzZSAvKiAhTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9IRUxQRVJfR0VUX1NUQVRJU1RJQ1MgKi8KK25ldHNubXBfZmVhdHVyZV91bnVzZWQoaGVscGVyX3N0YXRpc3RpY3MpOworI2VuZGlmIC8qICFORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0hFTFBFUl9HRVRfU1RBVElTVElDUyAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jIGIvYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jCmluZGV4IGM5OTgzNjMuLjVkYTE3OTYgMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvc3Rhc2hfY2FjaGUuYworKysgYi9hZ2VudC9oZWxwZXJzL3N0YXNoX2NhY2hlLmMKQEAgLTEsMjQgKzEsMjUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCi0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3Rhc2hfY2FjaGUuaD4KK25ldHNubXBfZmVhdHVyZV9wcm92aWRlKHN0YXNoX2NhY2hlKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHN0YXNoX2NhY2hlLCBtaWJfaGVscGVycykKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9TVEFTSF9DQUNIRQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUob2lkX3N0YXNoKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUob2lkX3N0YXNoX2l0ZXJhdGUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShvaWRfc3Rhc2hfZ2V0X2RhdGEpCisjZW5kaWYKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVNIX0NBQ0hFCiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3Rhc2hfdG9fbmV4dC5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3Rhc2hfY2FjaGUuaD4KKwogZXh0ZXJuIE5ldHNubXBDYWNoZUxvYWQgX25ldHNubXBfc3Rhc2hfY2FjaGVfbG9hZDsKIGV4dGVybiBOZXRzbm1wQ2FjaGVGcmVlIF9uZXRzbm1wX3N0YXNoX2NhY2hlX2ZyZWU7CiAgCi0jaWZkZWYgSEFWRV9ETUFMTE9DX0gKLXN0YXRpYyB2b2lkIGZyZWVfd3JhcHBlcih2b2lkICogcCkKLXsKLSAgICBmcmVlKHApOwotfQotI2Vsc2UKLSNkZWZpbmUgZnJlZV93cmFwcGVyIGZyZWUKLSNlbmRpZgotCiAvKiogQGRlZmdyb3VwIHN0YXNoX2NhY2hlIHN0YXNoX2NhY2hlCiAgKiAgQXV0b21hdGljYWxseSBjYWNoZXMgZGF0YSBmb3IgY2VydGFpbiBoYW5kbGVycy4KICAqICBUaGlzIGhhbmRsZXIgY2FjaGVzIGRhdGEgaW4gYW4gb3B0aW1pemVkIHdheSB3aGljaCBtYXkgYWxsZXZpYXRlCkBAIC03MSw3ICs3Miw3IEBACiAgICAgfQogCiAgICAgaGFuZGxlci0+bXl2b2lkID0gY2luZm87Ci0gICAgaGFuZGxlci0+ZGF0YV9mcmVlID0gJmZyZWVfd3JhcHBlcjsKKyAgICBuZXRzbm1wX2NhY2hlX2hhbmRsZXJfb3duc19jYWNoZShoYW5kbGVyKTsKIAogICAgIHJldHVybiBoYW5kbGVyOwogfQpAQCAtMjQ2LDMgKzI0Nyw2IEBACiB9CiAvKiogIEB9ICovCiAKKyNlbHNlIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBU0hfQ0FDSEUgKi8KK25ldHNubXBfZmVhdHVyZV91bnVzZWQoc3Rhc2hfY2FjaGUpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBU0hfQ0FDSEUgKi8KZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5jIGIvYWdlbnQvaGVscGVycy9zdGFzaF90b19uZXh0LmMKaW5kZXggZjY3OWUwNC4uZDdiYWZmZCAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9zdGFzaF90b19uZXh0LmMKKysrIGIvYWdlbnQvaGVscGVycy9zdGFzaF90b19uZXh0LmMKQEAgLTEsOCArMSwxOCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKK25ldHNubXBfZmVhdHVyZV9wcm92aWRlKHN0YXNoX3RvX25leHQpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc3Rhc2hfdG9fbmV4dCwgbWliX2hlbHBlcnMpCisKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9TVEFTSF9UT19ORVhUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShvaWRfc3Rhc2gpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShvaWRfc3Rhc2hfYWRkX2RhdGEpCisjZW5kaWYKKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVNIX1RPX05FWFQKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zdGFzaF90b19uZXh0Lmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oPgpAQCAtMTE0LDMgKzEyNCw2IEBACiB9CiAvKiogIEB9ICovCiAKKyNlbHNlICAvKiAhIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBU0hfVE9fTkVYVCAqLworbmV0c25tcF9mZWF0dXJlX3VudXNlZChzdGFzaF90b19uZXh0KTsKKyNlbmRpZiAvKiAhIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBU0hfVE9fTkVYVCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy90YWJsZS5jIGIvYWdlbnQvaGVscGVycy90YWJsZS5jCmluZGV4IDllYjAxMzIuLjg4MmU4NGMgMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvdGFibGUuYworKysgYi9hZ2VudC9oZWxwZXJzL3RhYmxlLmMKQEAgLTIxLDExICsyMSwxNiBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlLmg+CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShvaWRfc3Rhc2gpCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAjaWYgSEFWRV9TVFJJTkdfSAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2Vsc2UKQEAgLTM0LDYgKzM5LDEzIEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0Lmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9hbGwsIG1pYl9oZWxwZXJzKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfYnVpbGRfcmVzdWx0LCB0YWJsZV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfZ2V0X29yX2NyZWF0ZV9yb3dfc3Rhc2gsIHRhYmxlX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZWdpc3RyYXRpb25fb3duc190YWJsZV9pbmZvLCB0YWJsZV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfc3BhcnNlLCB0YWJsZV9hbGwpCisKIHN0YXRpYyB2b2lkICAgICB0YWJsZV9oZWxwZXJfY2xlYW51cChuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhdHVzKTsKQEAgLTEwNSw2ICsxMTcsMzEgQEAKICAgICByZXR1cm4gcmV0OwogfQogCisvKiogQ29uZmlndXJlcyBhIGhhbmRsZXIgc3VjaCB0aGF0IHRhYmxlIHJlZ2lzdHJhdGlvbiBpbmZvcm1hdGlvbiBpcyBmcmVlZCBieQorICogIG5ldHNubXBfaGFuZGxlcl9mcmVlKCkuIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBoYW5kbGVyLT5teXZvaWQgcG9pbnRzIHRvCisgKiAgYW4gb2JqZWN0IG9mIHR5cGUgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mby4KKyAqLwordm9pZCBuZXRzbm1wX2hhbmRsZXJfb3duc190YWJsZV9pbmZvKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIpCit7CisgICAgbmV0c25tcF9hc3NlcnQoaGFuZGxlcik7CisgICAgbmV0c25tcF9hc3NlcnQoaGFuZGxlci0+bXl2b2lkKTsKKyAgICBoYW5kbGVyLT5kYXRhX2Nsb25lCisJPSAodm9pZCAqKCopKHZvaWQgKikpIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fY2xvbmU7CisgICAgaGFuZGxlci0+ZGF0YV9mcmVlCisJPSAodm9pZCAoKikodm9pZCAqKSkgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlOworfQorCisvKiogQ29uZmlndXJlcyBhIGhhbmRsZXIgc3VjaCB0aGF0IHRhYmxlIHJlZ2lzdHJhdGlvbiBpbmZvcm1hdGlvbiBpcyBmcmVlZCBieQorICogIG5ldHNubXBfaGFuZGxlcl9mcmVlKCkuIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiByZWctPmhhbmRsZXItPm15dm9pZAorICogIHBvaW50cyB0byBhbiBvYmplY3Qgb2YgdHlwZSBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvLgorICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNUUkFUSU9OX09XTlNfVEFCTEVfSU5GTwordm9pZCBuZXRzbm1wX3JlZ2lzdHJhdGlvbl9vd25zX3RhYmxlX2luZm8obmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnKQoreworICAgIGlmIChyZWcpCisgICAgICAgIG5ldHNubXBfaGFuZGxlcl9vd25zX3RhYmxlX2luZm8ocmVnLT5oYW5kbGVyKTsKK30KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVFJBVElPTl9PV05TX1RBQkxFX0lORk8gKi8KIAogLyoqIGNyZWF0ZXMgYSB0YWJsZSBoYW5kbGVyIGdpdmVuIHRoZSBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvIG9iamVjdCwKICAqICBpbnNlcnRzIGl0IGludG8gdGhlIHJlcXVlc3QgY2hhaW4gYW5kIHRoZW4gY2FsbHMKQEAgLTEyNiw3ICsxNjMsNiBAQAogewogICAgIC8qIExvY2F0ZSAidGhpcyIgcmVnaW5mbyAqLwogICAgIC8qIFNOTVBfRlJFRShyZWdpbmZvLT5teXZvaWQpOyAqLwotICAgIC8qIHJlZ2luZm8tPm15dm9pZCA9IE5VTEw7ICovCiAgICAgcmV0dXJuIG5ldHNubXBfdW5yZWdpc3Rlcl9oYW5kbGVyKHJlZ2luZm8pOwogfQogCkBAIC0yMTIsMTUgKzI0OCwyMCBAQAogICAgICAqIGluIHRoZSBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mby4gCiAgICAgICovCiAgICAgaWYgKG5ldHNubXBfYWdlbnRfZ2V0X2xpc3RfZGF0YShyZXFpbmZvLCBoYW5kbGVyLT5uZXh0LT5oYW5kbGVyX25hbWUpKSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICBpZiAoTU9ERV9JU19TRVQocmVxaW5mby0+bW9kZSkpIHsKICAgICAgICAgICAgIHJldHVybiBuZXRzbm1wX2NhbGxfbmV4dF9oYW5kbGVyKGhhbmRsZXIsIHJlZ2luZm8sIHJlcWluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cyk7CiAgICAgICAgIH0gZWxzZSB7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAvKiogWFhYLXJrczogbWVtb3J5IGxlYWsuIGFkZCBjbGVhbnVwIGhhbmRsZXI/ICovCiAgICAgICAgICAgICBuZXRzbm1wX2ZyZWVfYWdlbnRfZGF0YV9zZXRzKHJlcWluZm8pOworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgfQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBpZiAoIE1PREVfSVNfU0VUKHJlcWluZm8tPm1vZGUpICYmCiAgICAgICAgICAocmVxaW5mby0+bW9kZSAhPSBNT0RFX1NFVF9SRVNFUlZFMSkpIHsKICAgICAgICAgLyoKQEAgLTIzNiw2ICsyNzcsNyBAQAogICAgICAgICAgICAgbmVlZF9wcm9jZXNzaW5nID0gMTsKICAgICB9CiAgICAgZWxzZSB7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgIC8qCiAgICAgICAgICAqIGZvciBHRVRTLCBvbmx5IGNvbnRpbnVlIGlmIHdlIGhhdmUgYXQgbGVhc3Qgb25lIHZhbGlkIHJlcXVlc3QuCiAgICAgICAgICAqIGZvciBSRVNFUlZFMSwgb25seSBjb250aW51ZSBpZiB3ZSBoYXZlIGluZGV4ZXMgZm9yIGFsbCByZXF1ZXN0cy4KQEAgLTI3MSw2ICszMTMsNyBAQAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgaWYgKHJlcWluZm8tPm1vZGUgPT0gTU9ERV9TRVRfUkVTRVJWRTEpIHsKICAgICAgICAgICAgIERFQlVHSUYoImhlbHBlcjp0YWJsZTpzZXQiKSB7CiAgICAgICAgICAgICAgICAgdV9jaGFyICAgICAgICAgKmJ1ZiA9IE5VTEw7CkBAIC0yOTgsNiArMzQxLDcgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgICAgICAvKgogICAgICAgICAgKiBjaGVjayB0byBtYWtlIHN1cmUgaXRzIGluIHRhYmxlIHJhbmdlIApAQCAtMzUzLDEwICszOTcsMTMgQEAKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiAgUmVqZWN0IHJlcXVlc3RzIG9mIHRoZSBmb3JtICdteVRhYmxlLk4nICAgKE4gIT0gMSkKICAgICAgICAgICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgICAgIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfU0VUX1JFU0VSVkUxKQogICAgICAgICAgICAgICAgIHRhYmxlX2hlbHBlcl9jbGVhbnVwKHJlcWluZm8sIHJlcXVlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfTk9UV1JJVEFCTEUpOwotICAgICAgICAgICAgZWxzZSBpZiAocmVxaW5mby0+bW9kZSA9PSBNT0RFX0dFVCkKKyAgICAgICAgICAgIGVsc2UKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICAgICAgICAgIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfR0VUKQogICAgICAgICAgICAgICAgIHRhYmxlX2hlbHBlcl9jbGVhbnVwKHJlcWluZm8sIHJlcXVlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9OT1NVQ0hPQkpFQ1QpOwogICAgICAgICAgICAgY29udGludWU7CkBAIC00MjgsMTAgKzQ3NSwxMiBAQAogICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICogIFJlamVjdCByZXF1ZXN0cyBvZiB0aGUgZm9ybSAnbXlFbnRyeS5OJyAgIChpbnZhbGlkIE4pCiAgICAgICAgICAgICAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAgICAgICAgIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfU0VUX1JFU0VSVkUxKQogICAgICAgICAgICAgICAgICAgICB0YWJsZV9oZWxwZXJfY2xlYW51cChyZXFpbmZvLCByZXF1ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9OT1RXUklUQUJMRSk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVxaW5mby0+bW9kZSA9PSBNT0RFX0dFVCkKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgICAgICAgICAgICAgdGFibGVfaGVscGVyX2NsZWFudXAocmVxaW5mbywgcmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9OT1NVQ0hPQkpFQ1QpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNDk5LDggKzU0OCwxMCBAQAogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBpZiAocmVxaW5mby0+bW9kZSA9PSBNT0RFX0dFVCApIHsKICAgICAgICAgICAgICAgICB0YWJsZV9oZWxwZXJfY2xlYW51cChyZXFpbmZvLCByZXF1ZXN0LCBTTk1QX05PU1VDSE9CSkVDVCk7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAgICAgfSBlbHNlIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfU0VUX1JFU0VSVkUxICkgewogICAgICAgICAgICAgICAgIHRhYmxlX2hlbHBlcl9jbGVhbnVwKHJlcWluZm8sIHJlcXVlc3QsIFNOTVBfRVJSX05PVFdSSVRBQkxFKTsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC02MjMsNiArNjc0LDcgQEAKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJoZWxwZXI6dGFibGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgaW5kZXgoZXMpIGZvciB0YWJsZSAtIHNraXBwaW5nXG4iKSk7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICAgICBpZiAoIE1PREVfSVNfU0VUKHJlcWluZm8tPm1vZGUpICkgewogICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICogbm8gcG9pbnQgaW4gY29udGludWluZyB3aXRob3V0IGluZGV4ZXMgZm9yIHNldC4KQEAgLTYzNSw2ICs2ODcsNyBAQAogICAgICAgICAgICAgICAgIG5lZWRfcHJvY2Vzc2luZyA9IDA7IC8qIGRvbid0IGNhbGwgbmV4dCBoYW5kbGVyICovCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICAgICB0YWJsZV9oZWxwZXJfY2xlYW51cChyZXFpbmZvLCByZXF1ZXN0LCBTTk1QX05PU1VDSElOU1RBTkNFKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC02NDMsNyArNjk2LDkgQEAKICAgICAgICAgKytuZWVkX3Byb2Nlc3Npbmc7CiAKICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZm9yIGVhY2ggcmVxdWVzdCAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICB9CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICAvKgogICAgICAqIGJhaWwgaWYgdGhlcmUgaXMgbm90aGluZyBmb3Igb3VyIGNoaWxkIGhhbmRsZXJzCkBAIC03NTYsNiArODExLDcgQEAKIAogLyoqIGNyZWF0ZSBzcGFyc2UgdGFibGUgaGFuZGxlcgogICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfU1BBUlNFCiBuZXRzbm1wX21pYl9oYW5kbGVyICoKIG5ldHNubXBfc3BhcnNlX3RhYmxlX2hhbmRsZXJfZ2V0KHZvaWQpCiB7CkBAIC04MDIsOCArODU4LDEwIEBACiAgICAgLyoqIGJvdGggaGFuZGxlcnMgbm93IGluIHJlZ2luZm8sIHNvIG5vdGhpbmcgdG8gZG8gb24gZXJyb3IgKi8KICAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyKHJlZ2luZm8pOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfU1BBUlNFICovCiAKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0JVSUxEX1JFU1VMVAogLyoqIEJ1aWxkcyB0aGUgcmVzdWx0IHRvIGJlIHJldHVybmVkIHRvIHRoZSBhZ2VudCBnaXZlbiB0aGUgdGFibGUgaW5mb3JtYXRpb24uCiAgKiAgVXNlIHRoaXMgZnVuY3Rpb24gdG8gcmV0dXJuIHJlc3VsdHMgZnJvbSBsb3dlbCBsZXZlbCBoYW5kbGVycyB0bwogICogIHRoZSBhZ2VudC4gIEl0IHRha2VzIGNhcmUgb2YgYnVpbGRpbmcgdGhlIHByb3BlciByZXN1bHRpbmcgb2lkCkBAIC04MzcsNyArODk1LDYgQEAKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfQogCi0KIC8qKiBnaXZlbiBhIHJlZ2lzdHJhdGlvbiBpbmZvIG9iamVjdCwgYSByZXF1ZXN0IG9iamVjdCBhbmQgdGhlIHRhYmxlCiAgKiAgaW5mbyBvYmplY3QgaXQgYnVpbGRzIHRoZSByZXF1ZXN0LT5yZXF1ZXN0dmItPm5hbWUgb2lkIGZyb20gdGhlCiAgKiAgaW5kZXggdmFsdWVzIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm91bmQgaW4gdGhlIHRhYmxlX2luZm8KQEAgLTg3NCw2ICs5MzEsNyBAQAogCiAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0JVSUxEX1JFU1VMVCAqLwogCiAvKiogZ2l2ZW4gYSByZWdpc3RyYXRpb24gaW5mbyBvYmplY3QsIGEgcmVxdWVzdCBvYmplY3QgYW5kIHRoZSB0YWJsZQogICogIGluZm8gb2JqZWN0IGl0IGJ1aWxkcyB0aGUgcmVxdWVzdC0+cmVxdWVzdHZiLT5uYW1lIG9pZCBmcm9tIHRoZQpAQCAtOTkyLDYgKzEwNTAsMjIgQEAKICAgICByZXR1cm4gMDsKIH0KIAorbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqCituZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2Nsb25lKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRyaSkKK3sKKyAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICpjb3B5OworICAgIGNvcHkgPSBtYWxsb2Moc2l6ZW9mKCpjb3B5KSk7CisgICAgaWYgKGNvcHkpIHsKKyAgICAgICAgKmNvcHkgPSAqdHJpOworICAgICAgICBjb3B5LT5pbmRleGVzID0gc25tcF9jbG9uZV92YXJiaW5kKHRyaS0+aW5kZXhlcyk7CisgICAgICAgIGlmICghY29weS0+aW5kZXhlcykgeworICAgICAgICAgICAgZnJlZShjb3B5KTsKKyAgICAgICAgICAgIGNvcHkgPSBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBjb3B5OworfQorCiB2b2lkCiBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdHJpKQogewpAQCAtMTE1MCw2ICsxMjI0LDcgQEAKICAgICB2YV9lbmQoZGVidWdhcmdzKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIHN0YXRpYyB2b2lkCiBfcm93X3N0YXNoX2RhdGFfbGlzdF9mcmVlKHZvaWQgKnB0cikgewogICAgIG5ldHNubXBfb2lkX3N0YXNoX25vZGUgKip0bXAgPSAobmV0c25tcF9vaWRfc3Rhc2hfbm9kZSAqKilwdHI7CkBAIC0xMTU3LDYgKzEyMzIsNyBAQAogICAgIGZyZWUocHRyKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0dFVF9PUl9DUkVBVEVfUk9XX1NUQVNICiAvKiogcmV0dXJucyBhIHJvdy13aWRlIHBsYWNlIHRvIHN0b3JlIGRhdGEgaW4uCiAgICAgQHRvZG8gVGhpcyBmdW5jdGlvbiB3aWxsIGxpa2VseSBjaGFuZ2UgdG8gYWRkIGZyZWUgcG9pbnRlciBmdW5jdGlvbnMuICovCiBuZXRzbm1wX29pZF9zdGFzaF9ub2RlICoqCkBAIC0xMTgzLDYgKzEyNTksOCBAQAogICAgIH0KICAgICByZXR1cm4gc3Rhc2hwOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfR0VUX09SX0NSRUFURV9ST1dfU1RBU0ggKi8KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogLyoKICAqIGFkdmFuY2UgdGhlIHRhYmxlIGluZm8gY29sbnVtIHRvIHRoZSBuZXh0IGNvbHVtbiwgb3IgMCBpZiB0aGVyZSBhcmUgbm8gbW9yZQpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jIGIvYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jCmluZGV4IGI5OTg5MjkuLjdjOThhYWUgMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvdGFibGVfYXJyYXkuYworKysgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX2FycmF5LmMKQEAgLTQsNiArNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CkBAIC0yMCw2ICsyMSwxNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfYXJyYXlfYWxsLCBtaWJfaGVscGVycykKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2FycmF5X3JlZ2lzdGVyLHRhYmxlX2FycmF5X2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9hcnJheV9maW5kX3RhYmxlX2FycmF5X2hhbmRsZXIsdGFibGVfYXJyYXlfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2FycmF5X2V4dHJhY3RfYXJyYXlfY29udGV4dCx0YWJsZV9hcnJheV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfYXJyYXlfY2hlY2tfcm93X3N0YXR1cyx0YWJsZV9hcnJheV9hbGwpCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9DT05UQUlORVIKKwogLyoKICAqIHNubXAuaDojZGVmaW5lIFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9CRUdJTiAgICAgICAgLTEgCiAgKiBzbm1wLmg6I2RlZmluZSBTTk1QX01TR19JTlRFUk5BTF9TRVRfUkVTRVJWRTEgICAgIDAgCkBAIC0xOTQsNiArMjA0LDcgQEAKICAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl90YWJsZShyZWdpbmZvLCB0YWJyZWcpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfQVJSQVlfUkVHSVNURVIKIGludAogbmV0c25tcF90YWJsZV9hcnJheV9yZWdpc3RlcihuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJyZWcsCkBAIC0yMDcsOCArMjE4LDEwIEBACiAgICAgcmV0dXJuIG5ldHNubXBfdGFibGVfY29udGFpbmVyX3JlZ2lzdGVyKHJlZ2luZm8sIHRhYnJlZywgY2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lciwgZ3JvdXBfcm93cyk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9BUlJBWV9SRUdJU1RFUiAqLwogCiAvKiogZmluZCB0aGUgaGFuZGxlciBmb3IgdGhlIHRhYmxlX2FycmF5IGhlbHBlci4gKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9BUlJBWV9GSU5EX1RBQkxFX0FSUkFZX0hBTkRMRVIKIG5ldHNubXBfbWliX2hhbmRsZXIgKgogbmV0c25tcF9maW5kX3RhYmxlX2FycmF5X2hhbmRsZXIobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbykKIHsKQEAgLTIyNCwxNSArMjM3LDE5IEBACiAKICAgICByZXR1cm4gbWg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9BUlJBWV9GSU5EX1RBQkxFX0FSUkFZX0hBTkRMRVIgKi8KIAogLyoqIGZpbmQgdGhlIGNvbnRleHQgZGF0YSB1c2VkIGJ5IHRoZSB0YWJsZV9hcnJheSBoZWxwZXIgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9BUlJBWV9FWFRSQUNUX0FSUkFZX0NPTlRFWFQKIG5ldHNubXBfY29udGFpbmVyICAgICAgKgogbmV0c25tcF9leHRyYWN0X2FycmF5X2NvbnRleHQobmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3QpCiB7CiAgICAgcmV0dXJuIChuZXRzbm1wX2NvbnRhaW5lciopbmV0c25tcF9yZXF1ZXN0X2dldF9saXN0X2RhdGEocmVxdWVzdCwgVEFCTEVfQVJSQVlfTkFNRSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9BUlJBWV9FWFRSQUNUX0FSUkFZX0NPTlRFWFQgKi8KIAogLyoqIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIHZhbGlkYXRlIFJvd1N0YXR1cyB0cmFuc2l0aW9ucy4gKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9BUlJBWV9DSEVDS19ST1dfU1RBVFVTCiBpbnQKIG5ldHNubXBfdGFibGVfYXJyYXlfY2hlY2tfcm93X3N0YXR1cyhuZXRzbm1wX3RhYmxlX2FycmF5X2NhbGxiYWNrcyAqY2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2dyb3VwICphZywKQEAgLTMxMSw2ICszMjgsNyBAQAogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9BUlJBWV9DSEVDS19ST1dfU1RBVFVTICovCiAKIC8qKiBAfSAqLwogCkBAIC0zNDUsMzcgKzM2MywxMyBAQAogLyoKICAqIGNvbnRleHQgaW5mbyBmb3IgU0VUIHJlcXVlc3RzCiAgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiB0eXBlZGVmIHN0cnVjdCBzZXRfY29udGV4dF9zIHsKICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYWd0cmVxX2luZm87CiAgICAgdGFibGVfY29udGFpbmVyX2RhdGEgKnRhZDsKICAgICBpbnQgICAgICAgICAgICAgc3RhdHVzOwogfSBzZXRfY29udGV4dDsKLQotc3RhdGljIHZvaWQKLXJlbGVhc2VfbmV0c25tcF9yZXF1ZXN0X2dyb3VwKG5ldHNubXBfaW5kZXggKmcsIHZvaWQgKnYpCi17Ci0gICAgbmV0c25tcF9yZXF1ZXN0X2dyb3VwX2l0ZW0gKnRtcDsKLSAgICBuZXRzbm1wX3JlcXVlc3RfZ3JvdXAgKmdyb3VwID0gKG5ldHNubXBfcmVxdWVzdF9ncm91cCAqKSBnOwotCi0gICAgaWYgKCFnKQotICAgICAgICByZXR1cm47Ci0gICAgd2hpbGUgKGdyb3VwLT5saXN0KSB7Ci0gICAgICAgIHRtcCA9IGdyb3VwLT5saXN0OwotICAgICAgICBncm91cC0+bGlzdCA9IHRtcC0+bmV4dDsKLSAgICAgICAgZnJlZSh0bXApOwotICAgIH0KLQotICAgIGZyZWUoZ3JvdXApOwotfQotCi1zdGF0aWMgdm9pZAotcmVsZWFzZV9uZXRzbm1wX3JlcXVlc3RfZ3JvdXBzKHZvaWQgKnZwKQotewotICAgIG5ldHNubXBfY29udGFpbmVyICpjID0gKG5ldHNubXBfY29udGFpbmVyKil2cDsKLSAgICBDT05UQUlORVJfRk9SX0VBQ0goYywgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jKikKLSAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZV9uZXRzbm1wX3JlcXVlc3RfZ3JvdXAsIE5VTEwpOwotICAgIENPTlRBSU5FUl9GUkVFKGMpOwotfQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiB2b2lkCiBidWlsZF9uZXdfb2lkKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCkBAIC02MDAsMTAgKzU5NCwxMiBAQAogICAgICAgICByb3cgPSBnLT5leGlzdGluZ19yb3cgPSAobmV0c25tcF9pbmRleCopQ09OVEFJTkVSX0ZJTkQodGFkLT50YWJsZSwgJmluZGV4KTsKICAgICAgICAgaWYgKCFnLT5leGlzdGluZ19yb3cpIHsKICAgICAgICAgICAgIGlmICghdGFkLT5jYi0+Y3JlYXRlX3JvdykgeworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgICAgICAgICBpZihNT0RFX0lTX1NFVChhZ3RyZXFfaW5mby0+bW9kZSkpCiAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IoYWd0cmVxX2luZm8sIGN1cnJlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfTk9UV1JJVEFCTEUpOwogICAgICAgICAgICAgICAgIGVsc2UKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihhZ3RyZXFfaW5mbywgY3VycmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX05PU1VDSElOU1RBTkNFKTsKICAgICAgICAgICAgICAgICBmcmVlKGcpOwpAQCAtNjMyLDYgKzYyOCwzMyBAQAogICAgIH0gLyoqIGZvciggY3VycmVudCAuLi4gKSAqLwogfQogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorc3RhdGljIHZvaWQKK3JlbGVhc2VfbmV0c25tcF9yZXF1ZXN0X2dyb3VwKG5ldHNubXBfaW5kZXggKmcsIHZvaWQgKnYpCit7CisgICAgbmV0c25tcF9yZXF1ZXN0X2dyb3VwX2l0ZW0gKnRtcDsKKyAgICBuZXRzbm1wX3JlcXVlc3RfZ3JvdXAgKmdyb3VwID0gKG5ldHNubXBfcmVxdWVzdF9ncm91cCAqKSBnOworCisgICAgaWYgKCFnKQorICAgICAgICByZXR1cm47CisgICAgd2hpbGUgKGdyb3VwLT5saXN0KSB7CisgICAgICAgIHRtcCA9IGdyb3VwLT5saXN0OworICAgICAgICBncm91cC0+bGlzdCA9IHRtcC0+bmV4dDsKKyAgICAgICAgZnJlZSh0bXApOworICAgIH0KKworICAgIGZyZWUoZ3JvdXApOworfQorCitzdGF0aWMgdm9pZAorcmVsZWFzZV9uZXRzbm1wX3JlcXVlc3RfZ3JvdXBzKHZvaWQgKnZwKQoreworICAgIG5ldHNubXBfY29udGFpbmVyICpjID0gKG5ldHNubXBfY29udGFpbmVyKil2cDsKKyAgICBDT05UQUlORVJfRk9SX0VBQ0goYywgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jKikKKyAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZV9uZXRzbm1wX3JlcXVlc3RfZ3JvdXAsIE5VTEwpOworICAgIENPTlRBSU5FUl9GUkVFKGMpOworfQorCiBzdGF0aWMgdm9pZAogcHJvY2Vzc19zZXRfZ3JvdXAobmV0c25tcF9pbmRleCAqbywgdm9pZCAqYykKIHsKQEAgLTgyNSw2ICs4NDgsNyBAQAogCiAgICAgcmV0dXJuIGNvbnRleHQuc3RhdHVzOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC04NjAsNiArODg0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgbW9kZV9uYW1lW2FndHJlcV9pbmZvLT5tb2RlXSkpOwogICAgIH0KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBpZiAoTU9ERV9JU19TRVQoYWd0cmVxX2luZm8tPm1vZGUpKSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIG5ldHNubXBfbXV0ZXhfbG9jaygmdGFkLT5sb2NrKTsKQEAgLTg3MCw2ICs4OTUsNyBAQAogICAgICAgICAgKiBuZXRzbm1wX211dGV4X3VubG9jaygmdGFkLT5sb2NrKTsKICAgICAgICAgICovCiAgICAgfSBlbHNlCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgIHJjID0gcHJvY2Vzc19nZXRfcmVxdWVzdHMocmVnaW5mbywgYWd0cmVxX2luZm8sIHJlcXVlc3RzLCB0YWQpOwogCiAgICAgaWYgKHJjICE9IFNOTVBfRVJSX05PRVJST1IpIHsKQEAgLTg4OSw0ICs5MTUsNSBAQAogICAgIAogICAgIHJldHVybiByYzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0NPTlRBSU5FUiAqLwogLyoqIEBlbmRjb25kICovCmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5jIGIvYWdlbnQvaGVscGVycy90YWJsZV9jb250YWluZXIuYwppbmRleCA4MmM3ZjI5Li4wOGU5NzQxIDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5jCisrKyBiL2FnZW50L2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmMKQEAgLTQsNiArNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CkBAIC0yMCw2ICsyMSwxNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oPgogCituZXRzbm1wX2ZlYXR1cmVfcHJvdmlkZSh0YWJsZV9jb250YWluZXIpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfY29udGFpbmVyLCB0YWJsZV9jb250YWluZXJfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2NvbnRhaW5lcl9yZXBsYWNlX3JvdywgdGFibGVfY29udGFpbmVyX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9jb250YWluZXJfZXh0cmFjdCwgdGFibGVfY29udGFpbmVyX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9jb250YWluZXJfbWFuYWdlbWVudCwgdGFibGVfY29udGFpbmVyX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9jb250YWluZXJfcm93X3JlbW92ZSwgdGFibGVfY29udGFpbmVyX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9jb250YWluZXJfcm93X2luc2VydCwgdGFibGVfY29udGFpbmVyX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9jb250YWluZXJfYWxsLCBtaWJfaGVscGVycykKKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0NPTlRBSU5FUgorCiAvKgogICogc25tcC5oOiNkZWZpbmUgU05NUF9NU0dfSU5URVJOQUxfU0VUX0JFR0lOICAgICAgICAtMSAKICAqIHNubXAuaDojZGVmaW5lIFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9SRVNFUlZFMSAgICAgMCAKQEAgLTM1LDYgKzQ3LDkgQEAKICAqLwogdHlwZWRlZiBzdHJ1Y3QgY29udGFpbmVyX3RhYmxlX2RhdGFfcyB7CiAKKyAgICAvKiogTnVtYmVyIG9mIGhhbmRsZXJzIHdob3NlIG15dm9pZCBwb2ludGVyIHBvaW50cyB0byB0aGlzIHN0cnVjdHVyZS4gKi8KKyAgICBpbnQgcmVmY250OworCiAgICAvKiogcmVnaXN0cmF0aW9uIGluZm8gZm9yIHRoZSB0YWJsZSAqLwogICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRibHJlZ19pbmZvOwogCkBAIC0xNjAsNiArMTc1LDcgQEAKICAqCiAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9DT05UQUlORVJfTUFOQUdFTUVOVAogY29udGFpbmVyX3RhYmxlX2RhdGEgKgogbmV0c25tcF90Y29udGFpbmVyX2NyZWF0ZV90YWJsZSggY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIGxvbmcgZmxhZ3MgKQpAQCAtMjA0LDYgKzIyMCw3IEBACiAgICAgU05NUF9GUkVFKHRhYmxlKTsKICAgICByZXR1cm47CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9DT05UQUlORVJfTUFOQUdFTUVOVCAqLwogCiAgICAgLyoKICAgICAgKiBUaGUgdmFyaW91cyBzdGFuZGFsb25lIHJvdyBvcGVyYXRpb24gcm91dGluZXMKQEAgLTIzMCw2ICsyNDcsNyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfQ09OVEFJTkVSX1JFUExBQ0VfUk9XCiBpbnQKIG5ldHNubXBfdGNvbnRhaW5lcl9yZXBsYWNlX3JvdyggY29udGFpbmVyX3RhYmxlX2RhdGEgKnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2luZGV4ICpvbGRfcm93LCBuZXRzbm1wX2luZGV4ICpuZXdfcm93ICkKQEAgLTI0MCw2ICsyNTgsNyBAQAogICAgIG5ldHNubXBfdGNvbnRhaW5lcl9hZGRfcm93KCAgICB0YWJsZSwgbmV3X3JvdyApOwogICAgIHJldHVybiAwOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfQ09OVEFJTkVSX1JFUExBQ0VfUk9XICovCiAKICAgICAvKiBuZXRzbm1wX3Rjb250YWluZXJfcmVtb3ZlX2RlbGV0ZV9yb3coKSB3aWxsIGJlIHRhYmxlLXNwZWNpZmljIHRvbyAqLwogCkBAIC0yNTAsNiArMjY5LDIwIEBACiAgKgogICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogCitzdGF0aWMgY29udGFpbmVyX3RhYmxlX2RhdGEgKgorbmV0c25tcF9jb250YWluZXJfdGFibGVfZGF0YV9jbG9uZShjb250YWluZXJfdGFibGVfZGF0YSAqdGFkKQoreworICAgICsrdGFkLT5yZWZjbnQ7CisgICAgcmV0dXJuIHRhZDsKK30KKworc3RhdGljIHZvaWQKK25ldHNubXBfY29udGFpbmVyX3RhYmxlX2RhdGFfZnJlZShjb250YWluZXJfdGFibGVfZGF0YSAqdGFkKQoreworICAgIGlmICgtLXRhZC0+cmVmY250ID09IDApCisJZnJlZSh0YWQpOworfQorCiAvKiogcmV0dXJucyBhIG5ldHNubXBfbWliX2hhbmRsZXIgb2JqZWN0IGZvciB0aGUgdGFibGVfY29udGFpbmVyIGhlbHBlciAqLwogbmV0c25tcF9taWJfaGFuZGxlciAqCiBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9oYW5kbGVyX2dldChuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJyZWcsCkBAIC0yNzQsNiArMzA3LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgdGFkLT5yZWZjbnQgPSAxOwogICAgIHRhZC0+dGJscmVnX2luZm8gPSB0YWJyZWc7ICAvKiB3ZSBuZWVkIGl0IHRvbywgYnV0IGl0IHJlYWxseSBpcyBub3Qgb3VycyAqLwogICAgIGlmKGtleV90eXBlKQogICAgICAgICB0YWQtPmtleV90eXBlID0ga2V5X3R5cGU7CkBAIC0yOTAsNiArMzI0LDggQEAKICAgICAgICAgY29udGFpbmVyLT5uY29tcGFyZSA9IG5ldHNubXBfbmNvbXBhcmVfbmV0c25tcF9pbmRleDsKICAgICAKICAgICBoYW5kbGVyLT5teXZvaWQgPSAodm9pZCopdGFkOworICAgIGhhbmRsZXItPmRhdGFfY2xvbmUgPSAodm9pZCAqKCopKHZvaWQgKikpbmV0c25tcF9jb250YWluZXJfdGFibGVfZGF0YV9jbG9uZTsKKyAgICBoYW5kbGVyLT5kYXRhX2ZyZWUgPSAodm9pZCAoKikodm9pZCAqKSluZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9kYXRhX2ZyZWU7CiAgICAgaGFuZGxlci0+ZmxhZ3MgfD0gTUlCX0hBTkRMRVJfQVVUT19ORVhUOwogICAgIAogICAgIHJldHVybiBoYW5kbGVyOwpAQCAtMzI4LDE5ICszNjQsMjMgQEAKICAgICBpZiAodGFkKSB7CiAgICAgICAgIENPTlRBSU5FUl9GUkVFKCB0YWQtPnRhYmxlICk7CiAgICAgICAgIHRhZC0+dGFibGUgPSBOVUxMOwotICAgICAgICBmcmVlKHRhZCk7Ci0gICAgICAgIHJlZ2luZm8tPmhhbmRsZXItPm15dm9pZCA9IE5VTEw7CisJLyoKKwkgKiBOb3RlOiBkb24ndCBmcmVlIHRoZSBtZW1vcnkgdGFkIHBvaW50cyBhdCBoZXJlIC0gdGhhdCBpcyBkb25lCisJICogYnkgbmV0c25tcF9jb250YWluZXJfdGFibGVfZGF0YV9mcmVlKCkuCisJICovCiAgICAgfQogICAgIHJldHVybiBuZXRzbm1wX3VucmVnaXN0ZXJfdGFibGUoIHJlZ2luZm8gKTsKIH0KIAogLyoqIHJldHJpZXZlIHRoZSBjb250YWluZXIgdXNlZCBieSB0aGUgdGFibGVfY29udGFpbmVyIGhlbHBlciAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0NPTlRBSU5FUl9FWFRSQUNUCiBuZXRzbm1wX2NvbnRhaW5lcioKIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2NvbnRhaW5lcl9leHRyYWN0KG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0KQogewogICAgIHJldHVybiAobmV0c25tcF9jb250YWluZXIgKikKICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9nZXRfbGlzdF9kYXRhKHJlcXVlc3QsIFRBQkxFX0NPTlRBSU5FUl9DT05UQUlORVIpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfQ09OVEFJTkVSX0VYVFJBQ1QgKi8KIAogI2lmbmRlZiBORVRTTk1QX1VTRV9JTkxJTkUKIC8qKiBmaW5kIHRoZSBjb250ZXh0IGRhdGEgdXNlZCBieSB0aGUgdGFibGVfY29udGFpbmVyIGhlbHBlciAqLwpAQCAtMzY1LDYgKzQwNSw3IEBACiB9CiAjZW5kaWYgLyogaW5saW5lICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9DT05UQUlORVJfUk9XX0lOU0VSVAogLyoqIGluc2VydHMgYSBuZXdseSBjcmVhdGVkIHRhYmxlX2NvbnRhaW5lciBlbnRyeSBpbnRvIGEgcmVxdWVzdCBsaXN0ICovCiB2b2lkCiBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfaW5zZXJ0KG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0LApAQCAtNDMyLDcgKzQ3Myw5IEBACiAgICAgICAgIH0KICAgICB9CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9DT05UQUlORVJfUk9XX0lOU0VSVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfQ09OVEFJTkVSX1JPV19SRU1PVkUKIC8qKiByZW1vdmVzIGEgdGFibGVfY29udGFpbmVyIGVudHJ5IGZyb20gYSByZXF1ZXN0IGxpc3QgKi8KIHZvaWQKIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19yZW1vdmUobmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3QsCkBAIC00OTksNiArNTQyLDcgQEAKICAgICAgICAgfQogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0NPTlRBSU5FUl9ST1dfUkVNT1ZFICovCiAKIC8qKiBAY29uZCAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTYxMCwxMSArNjU0LDE1IEBACiAgICAgICAgICAgICAgKiBub3QgcmVzdWx0cyBmb3VuZC4gRm9yIGEgZ2V0LCB0aGF0IGlzIGFuIGVycm9yCiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ0YWJsZV9jb250YWluZXIiLCAibm8gcm93IGZvdW5kXG4iKSk7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAgICAgaWYoKGFndHJlcV9pbmZvLT5tb2RlICE9IE1PREVfU0VUX1JFU0VSVkUxKSB8fCAvKiBnZXQgKi8KICAgICAgICAgICAgICAgIChyZWdpbmZvLT5tb2RlcyAmIEhBTkRMRVJfQ0FOX05PVF9DUkVBVEUpKSB7IC8qIG5vIGNyZWF0ZSAqLworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IoYWd0cmVxX2luZm8sIHJlcXVlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX05PU1VDSElOU1RBTkNFKTsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICAgICB9CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgIH0KICAgICB9IC8qKiBHRVQvU0VUICovCiAgICAgCkBAIC02NzYsNyArNzI0LDExIEBACiAgICAgICogcmVnaXN0cmF0aW9uLgogICAgICAqLwogICAgIG9sZG1vZGUgPSBhZ3RyZXFfaW5mby0+bW9kZTsKLSAgICBpZihNT0RFX0lTX0dFVChvbGRtb2RlKSB8fCAoTU9ERV9TRVRfUkVTRVJWRTEgPT0gb2xkbW9kZSkpIHsKKyAgICBpZihNT0RFX0lTX0dFVChvbGRtb2RlKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKKyAgICAgICB8fCAoTU9ERV9TRVRfUkVTRVJWRTEgPT0gb2xkbW9kZSkKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICAgICAgKSB7CiAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpjdXJyX3JlcXVlc3Q7CiAgICAgICAgIC8qCiAgICAgICAgICAqIExvb3AgdGhyb3VnaCBlYWNoIG9mIHRoZSByZXF1ZXN0cywgYW5kCkBAIC04MTYsNCArODY4LDkgQEAKICAqCiAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKKyNlbHNlIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfQ09OVEFJTkVSICovCituZXRzbm1wX2ZlYXR1cmVfdW51c2VkKHRhYmxlX2NvbnRhaW5lcik7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9DT05UQUlORVIgKi8KIC8qKiBAfSAqLworCisKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5jIGIvYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmMKaW5kZXggODhkZjViMS4uNzVkZGMxZCAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmMKKysrIGIvYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KQEAgLTE0LDYgKzE1LDI3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGUuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2RhdGFfYWxsLCBtaWJfaGVscGVycykKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2RhdGEsIHRhYmxlX2RhdGFfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlZ2lzdGVyX3JlYWRfb25seV90YWJsZV9kYXRhLCB0YWJsZV9kYXRhX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihleHRyYWN0X3RhYmxlX3Jvd19kYXRhLCB0YWJsZV9kYXRhX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpbnNlcnRfdGFibGVfcm93LCB0YWJsZV9kYXRhX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9kYXRhX2RlbGV0ZV90YWJsZSwgdGFibGVfZGF0YV9hbGwpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9kYXRhX2V4dHJhcywgdGFibGVfZGF0YV9hbGwpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9kYXRhX2NyZWF0ZV90YWJsZSwgdGFibGVfZGF0YV9leHRyYXMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfZGF0YV9jcmVhdGVfcm93LCB0YWJsZV9kYXRhX2V4dHJhcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9kYXRhX2NvcHlfcm93LCB0YWJsZV9kYXRhX2V4dHJhcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9kYXRhX3JlbW92ZV9kZWxldGVfcm93LCB0YWJsZV9kYXRhX2V4dHJhcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9kYXRhX3VucmVnaXN0ZXIsIHRhYmxlX2RhdGFfZXh0cmFzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2RhdGFfcm93X2NvdW50LCB0YWJsZV9kYXRhX2V4dHJhcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9kYXRhX3Jvd19vcGVyYXRpb25zLCB0YWJsZV9kYXRhX2V4dHJhcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9kYXRhX3Jvd19maXJzdCwgdGFibGVfZGF0YV9leHRyYXMpCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBCisKIC8qKiBAZGVmZ3JvdXAgdGFibGVfZGF0YSB0YWJsZV9kYXRhCiAgKiAgSGVscHMgeW91IGltcGxlbWVudCBhIHRhYmxlIHdpdGggZGF0YW1hdHRlZCBzdG9yYWdlLgogICogIEBpbmdyb3VwIHRhYmxlCkBAIC05MSw2ICsxMTMsNyBAQAogICAgICAgICBuZXdyb3ctPmluZGV4X29pZCA9CiAgICAgICAgICAgICBzbm1wX2R1cGxpY2F0ZV9vYmppZChyb3ctPmluZGV4X29pZCwgcm93LT5pbmRleF9vaWRfbGVuKTsKICAgICAgICAgaWYgKCFuZXdyb3ctPmluZGV4X29pZCkgeworICAgICAgICAgICAgZnJlZShuZXdyb3ctPmluZGV4ZXMpOwogICAgICAgICAgICAgZnJlZShuZXdyb3cpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KQEAgLTI4OCwxMiArMzExLDE1IEBACiAgICAgICogR2VuZXJpYyBBUEkgLSBtb3N0bHkgcmVuYW1lZCB3cmFwcGVycwogICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFfQ1JFQVRFX1RBQkxFCiBuZXRzbm1wX3RhYmxlX2RhdGEgKgogbmV0c25tcF90YWJsZV9kYXRhX2NyZWF0ZV90YWJsZShjb25zdCBjaGFyICpuYW1lLCBsb25nIGZsYWdzKQogewogICAgIHJldHVybiBuZXRzbm1wX2NyZWF0ZV90YWJsZV9kYXRhKCBuYW1lICk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBX0NSRUFURV9UQUJMRSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQV9ERUxFVEVfVEFCTEUKIHZvaWQKIG5ldHNubXBfdGFibGVfZGF0YV9kZWxldGVfdGFibGUoIG5ldHNubXBfdGFibGVfZGF0YSAqdGFibGUgKQogewpAQCAtMzEzLDE0ICszMzksMTMgQEAKICAgICB9CiAgICAgdGFibGUtPmZpcnN0X3JvdyA9IE5VTEw7CiAKLSAgICBpZiAodGFibGUtPm5hbWUpIHsKLSAgICAgICAgU05NUF9GUkVFKHRhYmxlLT5uYW1lKTsKLSAgICAgICAgdGFibGUtPm5hbWUgPSBOVUxMOwotICAgIH0KKyAgICBTTk1QX0ZSRUUodGFibGUtPm5hbWUpOwogICAgIFNOTVBfRlJFRSh0YWJsZSk7CiAgICAgcmV0dXJuOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQV9ERUxFVEVfVEFCTEUgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFfQ1JFQVRFX1JPVwogbmV0c25tcF90YWJsZV9yb3cgKgogbmV0c25tcF90YWJsZV9kYXRhX2NyZWF0ZV9yb3coIHZvaWQqIGVudHJ5ICkKIHsKQEAgLTMyOSw5ICszNTQsMTEgQEAKICAgICAgICAgcm93LT5kYXRhID0gZW50cnk7CiAgICAgcmV0dXJuIHJvdzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFfQ1JFQVRFX1JPVyAqLwogCiAgICAgLyogbmV0c25tcF90YWJsZV9kYXRhX2Nsb25lX3JvdygpIGRlZmluZWQgYWJvdmUgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFfQ09QWV9ST1cKIGludAogbmV0c25tcF90YWJsZV9kYXRhX2NvcHlfcm93KCBuZXRzbm1wX3RhYmxlX3JvdyAgKm9sZF9yb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdGFibGVfcm93ICAqbmV3X3JvdyApCkBAIC0zNDksNiArMzc2LDcgQEAKICAgICAvKiBYWFggLSBEb2Vzbid0IGNvcHkgdGFibGUtc3BlY2lmaWMgcm93IHN0cnVjdHVyZSAqLwogICAgIHJldHVybiAwOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQV9DT1BZX1JPVyAqLwogCiAgICAgLyoKICAgICAgKiBuZXRzbm1wX3RhYmxlX2RhdGFfZGVsZXRlX3JvdygpCkBAIC0zNTgsMTIgKzM4NiwxNCBAQAogICAgICAqICAgICBhbGwgZGVmaW5lZCBhYm92ZQogICAgICAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQV9SRU1PVkVfREVMRVRFX1JPVwogdm9pZCAqCiBuZXRzbm1wX3RhYmxlX2RhdGFfcmVtb3ZlX2RlbGV0ZV9yb3cobmV0c25tcF90YWJsZV9kYXRhICp0YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RhYmxlX3JvdyAqcm93KQogewogICAgIHJldHVybiBuZXRzbm1wX3RhYmxlX2RhdGFfcmVtb3ZlX2FuZF9kZWxldGVfcm93KHRhYmxlLCByb3cpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQV9SRU1PVkVfREVMRVRFX1JPVyAqLwogCiAKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTQwNSw2ICs0MzUsOCBAQAogICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlKHJlZ2luZm8sIHRhYmxlX2luZm8pOwogfQogCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9SRUFEX09OTFlfVEFCTEVfREFUQQogLyoqIHJlZ2lzdGVycyBhIGhhbmRsZXIgYXMgYSByZWFkLW9ubHkgZGF0YSB0YWJsZQogICogIElmIHRhYmxlX2luZm8gIT0gTlVMTCwgaXQgcmVnaXN0ZXJzIGl0IGFzIGEgbm9ybWFsIHRhYmxlIHRvby4gKi8KIGludApAQCAtNDE1LDEzICs0NDcsMTYgQEAKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIG5ldHNubXBfZ2V0X3JlYWRfb25seV9oYW5kbGVyKCkpOwogICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2RhdGEocmVnaW5mbywgdGFibGUsIHRhYmxlX2luZm8pOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfUkVBRF9PTkxZX1RBQkxFX0RBVEEgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFfVU5SRUdJU1RFUgogaW50CiBuZXRzbm1wX3VucmVnaXN0ZXJfdGFibGVfZGF0YShuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvKQogewogICAgIC8qIGZyZWUgdGFibGU7ICovCiAgICAgcmV0dXJuIG5ldHNubXBfdW5yZWdpc3Rlcl90YWJsZShyZWdpbmZvKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFfVU5SRUdJU1RFUiAqLwogCiAvKgogICogVGhlIGhlbHBlciBoYW5kbGVyIHRoYXQgdGFrZXMgY2FyZSBvZiBwYXNzaW5nIGEgc3BlY2lmaWMgcm93IG9mCkBAIC00NTQsNyArNDg5LDkgQEAKICAgICAgICAgc3dpdGNoIChyZXFpbmZvLT5tb2RlKSB7CiAgICAgICAgIGNhc2UgTU9ERV9HRVQ6CiAgICAgICAgIGNhc2UgTU9ERV9HRVRORVhUOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9hZGRfbGlzdF9kYXRhKHJlcXVlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2RhdGFfbGlzdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBQkxFX0RBVEFfVEFCTEUsIHRhYmxlLCBOVUxMKSk7CkBAIC01MjgsOSArNTY1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICAgICAgICAgKiBlcXVhbCBtYXRjaCwgcmV0dXJuIHRoZSBuZXh0IHJvdyAKICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJvdykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdyA9IHJvdy0+bmV4dDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJvdyA9IHJvdy0+bmV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8qCkBAIC02MDcsNiArNjQyLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgICAgICAgICAgdmFsaWRfcmVxdWVzdCA9IDE7CiAgICAgICAgICAgICBpZiAoTlVMTCAhPQpAQCAtNjMxLDYgKzY2Nyw3IEBACiAgICAgICAgIGNhc2UgTU9ERV9TRVRfRlJFRToKICAgICAgICAgY2FzZSBNT0RFX1NFVF9VTkRPOgogICAgICAgICAgICAgdmFsaWRfcmVxdWVzdCA9IDE7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICAgICAgfQogICAgIH0KQEAgLTY3Myw2ICs3MTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFCTEVfREFUQV9ST1cpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRVhUUkFDVF9UQUJMRV9ST1dfREFUQQogLyoqIGV4dHJhY3RzIHRoZSBkYXRhIGZyb20gdGhlIHJvdyBiZWluZyBhY2Nlc3NlZCBwYXNzZWQgZnJvbSB0aGUKICAqIHRhYmxlX2RhdGEgaGVscGVyICovCiB2b2lkICAgICAgICAgICAqCkBAIC02ODUsNyArNzIzLDkgQEAKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBOVUxMOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRVhUUkFDVF9UQUJMRV9ST1dfREFUQSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5TRVJUX1RBQkxFX1JPVwogLyoqIGluc2VydHMgYSBuZXdseSBjcmVhdGVkIHRhYmxlX2RhdGEgcm93IGludG8gYSByZXF1ZXN0ICovCiB2b2lkCiBuZXRzbm1wX2luc2VydF90YWJsZV9yb3cobmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3QsCkBAIC03NTAsNiArNzkwLDcgQEAKICAgICAgICAgfQogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lOU0VSVF9UQUJMRV9ST1cgKi8KIAogLyogYnVpbGRzIGEgcmVzdWx0IGdpdmVuIGEgcm93LCBhIHZhcmJpbmQgdG8gc2V0IGFuZCB0aGUgZGF0YSAqLwogaW50CkBAIC04NjEsMTEgKzkwMiwxMyBAQAogICAgICAqIEdlbmVyaWMgQVBJIC0gbW9zdGx5IHJlbmFtZWQgd3JhcHBlcnMKICAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBX1JPV19GSVJTVAogbmV0c25tcF90YWJsZV9yb3cgKgogbmV0c25tcF90YWJsZV9kYXRhX3Jvd19maXJzdChuZXRzbm1wX3RhYmxlX2RhdGEgKnRhYmxlKQogewogICAgIHJldHVybiBuZXRzbm1wX3RhYmxlX2RhdGFfZ2V0X2ZpcnN0X3Jvdyh0YWJsZSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBX1JPV19GSVJTVCAqLwogCiBuZXRzbm1wX3RhYmxlX3JvdyAqCiBuZXRzbm1wX3RhYmxlX2RhdGFfcm93X2dldCggIG5ldHNubXBfdGFibGVfZGF0YSAqdGFibGUsCkBAIC05MzAsMTEgKzk3MywxMyBAQAogICAgIHJldHVybiBuZXRzbm1wX3RhYmxlX2RhdGFfcm93X25leHRfYnlvaWQodGFibGUsIGluc3RhbmNlLCBsZW4pOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQV9ST1dfQ09VTlQKIGludAogbmV0c25tcF90YWJsZV9kYXRhX3Jvd19jb3VudChuZXRzbm1wX3RhYmxlX2RhdGEgKnRhYmxlKQogewogICAgIHJldHVybiBuZXRzbm1wX3RhYmxlX2RhdGFfbnVtX3Jvd3ModGFibGUpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQV9ST1dfQ09VTlQgKi8KIAogCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC05NDQsNiArOTg5LDcgQEAKICAqCiAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBX1JPV19PUEVSQVRJT05TCiB2b2lkICoKIG5ldHNubXBfdGFibGVfZGF0YV9lbnRyeV9maXJzdChuZXRzbm1wX3RhYmxlX2RhdGEgKnRhYmxlKQogewpAQCAtMTAwMyw2ICsxMDQ5LDcgQEAKICAgICAgICAgbmV0c25tcF90YWJsZV9kYXRhX3Jvd19uZXh0X2J5b2lkKHRhYmxlLCBpbnN0YW5jZSwgbGVuKTsKICAgICByZXR1cm4gKHJvdyA/IHJvdy0+ZGF0YSA6IE5VTEwgKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFfUk9XX09QRVJBVElPTlMgKi8KIAogICAgIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgKiBHZW5lcmljIEFQSSAtIG1vc3RseSByZW5hbWVkIHdyYXBwZXJzCkBAIC0xMDE0LDUgKzEwNjEsOSBAQAogICoKICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIAorI2Vsc2UgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBICovCituZXRzbm1wX2ZlYXR1cmVfdW51c2VkKHRhYmxlX2RhdGEpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQSAqLworCiAvKiogQH0gCiAgKi8KZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jIGIvYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMKaW5kZXggMjI3Y2RlZi4uZDk5Mzk5MyAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMKKysrIGIvYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMKQEAgLTEsNSArMSw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC0xMSw2ICsxMywzNCBAQAogI2luY2x1ZGUgPHN0cmluZ3MuaD4KICNlbmRpZgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfZGF0YXNldF9hbGwsIG1pYl9oZWxwZXJzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2RhdGFzZXQsIHRhYmxlX2RhdGFzZXRfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2RhdGFzZXRfcmVtb3ZlX3JvdywgdGFibGVfZGF0YXNldF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfZGF0YV9zZXRfY29sdW1uLCB0YWJsZV9kYXRhc2V0X2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9kYXRhc2V0X2dldF9uZXdyb3csIHRhYmxlX2RhdGFzZXRfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX3NldF9hZGRfaW5kZXhlcywgdGFibGVfZGF0YXNldF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoZGVsZXRlX3RhYmxlX2RhdGFfc2V0LCB0YWJsZV9kYXRhc2V0X2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9zZXRfbXVsdGlfYWRkX2RlZmF1bHRfcm93LCB0YWJsZV9kYXRhc2V0X2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9kYXRhc2V0X3VucmVnaXN0ZXJfYXV0b19kYXRhX3RhYmxlLCB0YWJsZV9kYXRhc2V0X2FsbCkKKworI2lmZGVmIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX1RBQkxFX0RBVEFTRVQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2dldF9vcl9jcmVhdGVfcm93X3N0YXNoKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfZGF0YV9kZWxldGVfdGFibGUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV9kYXRhKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUob2lkX3N0YXNoX2dldF9kYXRhKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUob2lkX3N0YXNoX2FkZF9kYXRhKQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX1RBQkxFX0RBVEFTRVQgKi8KKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFTRVQKKworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKG9pZF9zdGFzaCkKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKKyNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX01JQl9MT0FESU5HCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShtaWJfdG9fYXNuX3R5cGUpCisjZW5kaWYgLyogTkVUU05NUF9ESVNBQkxFX01JQl9MT0FESU5HICovCisKIHN0YXRpYyBuZXRzbm1wX2RhdGFfbGlzdCAqYXV0b190YWJsZXM7CiAKIHR5cGVkZWYgc3RydWN0IGRhdGFfc2V0X3RhYmxlc19zIHsKQEAgLTEzNCw2ICsxNjQsNyBAQAogfQogCiAvKiogcmVtb3ZlcyBhIHJvdyBmcm9tIHRoZSB0YWJsZSwgYnV0IGRvZXNuJ3QgZGVsZXRlL2ZyZWUgdGhlIGNvbHVtbiB2YWx1ZXMgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBU0VUX1JFTU9WRV9ST1cKIE5FVFNOTVBfSU5MSU5FIHZvaWQKIG5ldHNubXBfdGFibGVfZGF0YXNldF9yZW1vdmVfcm93KG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9yb3cgKnJvdykKQEAgLTE0Myw2ICsxNzQsNyBAQAogCiAgICAgbmV0c25tcF90YWJsZV9kYXRhX3JlbW92ZV9hbmRfZGVsZXRlX3Jvdyh0YWJsZS0+dGFibGUsIHJvdyk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBU0VUX1JFTU9WRV9ST1cgKi8KIAogLyoqIHJlbW92ZXMgYSByb3cgZnJvbSB0aGUgdGFibGUgYW5kIHRoZW4gZGVsZXRlcyBpdCAoYW5kIGFsbCBpdHMgZGF0YSkgKi8KIE5FVFNOTVBfSU5MSU5FIHZvaWQKQEAgLTE3Miw2ICsyMDQsNyBAQAogICAgIHJldHVybiB0YWJsZV9zZXQ7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ERUxFVEVfVEFCTEVfREFUQV9TRVQKIHZvaWQgbmV0c25tcF9kZWxldGVfdGFibGVfZGF0YV9zZXQobmV0c25tcF90YWJsZV9kYXRhX3NldCAqdGFibGVfc2V0KQogewogICAgIG5ldHNubXBfdGFibGVfZGF0YV9zZXRfc3RvcmFnZSAqcHRyLCAqbmV4dDsKQEAgLTE5MCw2ICsyMjMsNyBAQAogICAgIG5ldHNubXBfdGFibGVfZGF0YV9kZWxldGVfdGFibGUodGFibGVfc2V0LT50YWJsZSk7CiAgICAgZnJlZSh0YWJsZV9zZXQpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfREVMRVRFX1RBQkxFX0RBVEFfU0VUICovCiAKIC8qKiBjbG9uZXMgYSBkYXRhc2V0IHJvdywgaW5jbHVkaW5nIGFsbCBkYXRhLiAqLwogbmV0c25tcF90YWJsZV9yb3cgKgpAQCAtMjUwLDkgKzI4NCwxMCBAQAogICAgIGZvciAoOyBkZWZyb3c7IGRlZnJvdyA9IGRlZnJvdy0+bmV4dCkgewogICAgICAgICBuZXRzbm1wX3NldF9yb3dfY29sdW1uKHJvdywgZGVmcm93LT5jb2x1bW4sIGRlZnJvdy0+dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZyb3ctPmRhdGEudm9pZHAsIGRlZnJvdy0+ZGF0YV9sZW4pOworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgaWYgKGRlZnJvdy0+d3JpdGFibGUpCiAgICAgICAgICAgICBuZXRzbm1wX21hcmtfcm93X2NvbHVtbl93cml0YWJsZShyb3csIGRlZnJvdy0+Y29sdW1uLCAxKTsKLQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB9CiAgICAgcmV0dXJuIHJvdzsKIH0KQEAgLTMyOCw2ICszNjMsNyBAQAogICogIHRoaXMgaXMgYSB3cmFwcGVyIGFyb3VuZCBjYWxsaW5nIG5ldHNubXBfdGFibGVfc2V0X2FkZF9kZWZhdWx0X3JvdwogICogIHJlcGVhdGVkbHkgZm9yIHlvdS4KICAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX1NFVF9NVUxUSV9BRERfREVGQVVMVF9ST1cKIHZvaWQKIG5ldHNubXBfdGFibGVfc2V0X211bHRpX2FkZF9kZWZhdWx0X3JvdyhuZXRzbm1wX3RhYmxlX2RhdGFfc2V0ICp0c2V0LCAuLi4pCiB7CkBAIC0zNTAsNyArMzg2LDcgQEAKIAogICAgIHZhX2VuZChkZWJ1Z2FyZ3MpOwogfQotCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9TRVRfTVVMVElfQUREX0RFRkFVTFRfUk9XICovCiAKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAqCkBAIC0zOTAsNiArNDI2LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9kYXRhX3NldCAqZGF0YV9zZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm8pCiB7CisgICAgaW50IHJldDsKKwogICAgIGlmIChOVUxMID09IHRhYmxlX2luZm8pIHsKICAgICAgICAgLyoKICAgICAgICAgICogYWxsb2NhdGUgdGhlIHRhYmxlIGlmIG9uZSB3YXNuJ3QgYWxsb2NhdGVkIApAQCAtNDI3LDggKzQ2NSwxMSBAQAogCiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9nZXRfdGFibGVfZGF0YV9zZXRfaGFuZGxlcihkYXRhX3NldCkpOwotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2RhdGEocmVnaW5mbywgZGF0YV9zZXQtPnRhYmxlLAorICAgIHJldCA9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfZGF0YShyZWdpbmZvLCBkYXRhX3NldC0+dGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9pbmZvKTsKKyAgICBpZiAocmV0ID09IFNOTVBFUlJfU1VDQ0VTUyAmJiByZWdpbmZvLT5oYW5kbGVyKQorICAgICAgICBuZXRzbm1wX2hhbmRsZXJfb3duc190YWJsZV9pbmZvKHJlZ2luZm8tPmhhbmRsZXItPm5leHQpOworICAgIHJldHVybiByZXQ7CiB9CiAKIG5ld3Jvd19zdGFzaCAgICoKQEAgLTQ4OSw2ICs1MzAsNyBAQAogICAgICAgICByb3cgPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfcm93KHJlcXVlc3QpOwogICAgICAgICB0YWJsZV9pbmZvID0gbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdCk7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIGlmIChNT0RFX0lTX1NFVChyZXFpbmZvLT5tb2RlKSkgewogCiAgICAgICAgICAgICAvKgpAQCAtNTU3LDEyICs1OTksMTcgQEAKICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlID09IE1PREVfU0VUX1JFU0VSVkUyKQogICAgICAgICAgICAgICAgIHJvdyA9IG5ld3JvdzsKICAgICAgICAgfQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgICAgIGlmIChyb3cpCiAgICAgICAgICAgICBkYXRhID0gKG5ldHNubXBfdGFibGVfZGF0YV9zZXRfc3RvcmFnZSAqKSByb3ctPmRhdGE7CiAKICAgICAgICAgaWYgKCFyb3cgfHwgIXRhYmxlX2luZm8gfHwgIWRhdGEpIHsKLSAgICAgICAgICAgIGlmICghTU9ERV9JU19TRVQocmVxaW5mby0+bW9kZSkgfHwgIXRhYmxlX2luZm8pIHsKKyAgICAgICAgICAgIGlmICghdGFibGVfaW5mbworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKKyAgICAgICAgICAgICAgICB8fCAhTU9ERV9JU19TRVQocmVxaW5mby0+bW9kZSkKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9OT1NVQ0hJTlNUQU5DRSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC01OTMsNiArNjQwLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgICAgICAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgICAgICAgICAvKgpAQCAtODA5LDYgKzg1NywxMiBAQAogCQluZXdyb3cgPSBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICAidGFibGVfZGF0YXNldDogdW5rbm93biBtb2RlIHBhc3NlZCBpbnRvIHRoZSBoYW5kbGVyXG4iKTsKKyAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTgyOSw2ICs4ODMsNyBAQAogLyoqCiAgKiBleHRyYWN0cyBhIG5ldHNubXBfdGFibGVfZGF0YV9zZXQgcG9pbnRlciBmcm9tIGEgZ2l2ZW4gcmVxdWVzdAogICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQV9TRVRfQ09MVU1OCiBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0X3N0b3JhZ2UgKgogbmV0c25tcF9leHRyYWN0X3RhYmxlX2RhdGFfc2V0X2NvbHVtbihuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY29sdW1uKQpAQCAtODQwLDcgKzg5NSw3IEBACiAgICAgfQogICAgIHJldHVybiBkYXRhOwogfQotCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBX1NFVF9DT0xVTU4gKi8KIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICoKQEAgLTg2OCw5ICs5MjMsMjMgQEAKICAgICBpZiAoIXJlZ2lzdHJhdGlvbl9uYW1lKSB7CiAgICAgICAgIHJlZ2lzdHJhdGlvbl9uYW1lID0gdGFibGVfc2V0LT50YWJsZS0+bmFtZTsKICAgICB9Ci0gICAgbmV0c25tcF9hZGRfbGlzdF9kYXRhKCZhdXRvX3RhYmxlcywgbmV0c25tcF9jcmVhdGVfZGF0YV9saXN0KHJlZ2lzdHJhdGlvbl9uYW1lLCB0YWJsZXMsIE5VTEwpKTsgICAgIC8qIFhYWCAqLworICAgIG5ldHNubXBfYWRkX2xpc3RfZGF0YSgmYXV0b190YWJsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2RhdGFfbGlzdChyZWdpc3RyYXRpb25fbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlcywgZnJlZSkpOyAgICAgLyogWFhYICovCiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBU0VUX1VOUkVHSVNURVJfQVVUT19EQVRBX1RBQkxFCisvKiogVW5kbyB0aGUgZWZmZWN0IG9mIG5ldHNubXBfcmVnaXN0ZXJfYXV0b19kYXRhX3RhYmxlKCkuCisgKi8KK3ZvaWQKK25ldHNubXBfdW5yZWdpc3Rlcl9hdXRvX2RhdGFfdGFibGUobmV0c25tcF90YWJsZV9kYXRhX3NldCAqdGFibGVfc2V0LAorCQkJCSAgIGNoYXIgKnJlZ2lzdHJhdGlvbl9uYW1lKQoreworICAgIG5ldHNubXBfcmVtb3ZlX2xpc3Rfbm9kZSgmYXV0b190YWJsZXMsIHJlZ2lzdHJhdGlvbl9uYW1lCisJCQkgICAgID8gcmVnaXN0cmF0aW9uX25hbWUgOiB0YWJsZV9zZXQtPnRhYmxlLT5uYW1lKTsKK30KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFTRVRfVU5SRUdJU1RFUl9BVVRPX0RBVEFfVEFCTEUgKi8KKwogI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfTUlCX0xPQURJTkcKIHN0YXRpYyB2b2lkCiBfdGFibGVfc2V0X2FkZF9pbmRleGVzKG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKnRhYmxlX3NldCwgc3RydWN0IHRyZWUgKnRwKQpAQCAtMTEzMyw4ICsxMjAyLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICJhZGRpbmcgZGF0YSBhdCBjb2x1bW4gJWQgb2YgdHlwZSAlZFxuIiwgZHItPmNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgZHItPnR5cGUpKTsKICAgICAgICAgbmV0c25tcF9zZXRfcm93X2NvbHVtbihyb3csIGRyLT5jb2x1bW4sIGRyLT50eXBlLCBidWYsIGJ1Zl9zaXplKTsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIGlmIChkci0+d3JpdGFibGUpCiAgICAgICAgICAgICBuZXRzbm1wX21hcmtfcm93X2NvbHVtbl93cml0YWJsZShyb3csIGRyLT5jb2x1bW4sIDEpOyAgICAgICAvKiBtYWtlIHdyaXRhYmxlICovCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KICAgICByYyA9IG5ldHNubXBfdGFibGVfZGF0YV9hZGRfcm93KHRhYmxlcy0+dGFibGVfc2V0LT50YWJsZSwgcm93KTsKICAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IHJjKSB7CkBAIC0xMTQ3LDYgKzEyMTgsNyBAQAogfQogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBuZXRzbm1wX29pZF9zdGFzaF9ub2RlICoqCiBuZXRzbm1wX3RhYmxlX2RhdGFzZXRfZ2V0X29yX2NyZWF0ZV9zdGFzaChuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKmRhdGF0YWJsZSwKQEAgLTExNzcsNiArMTI0OSw3IEBACiAgICAgcmV0dXJuIHN0YXNocDsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFTRVRfR0VUX05FV1JPVwogbmV0c25tcF90YWJsZV9yb3cgKgogbmV0c25tcF90YWJsZV9kYXRhc2V0X2dldF9uZXdyb3cobmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKQEAgLTEyMDAsNiArMTI3Myw4IEBACiAKICAgICByZXR1cm4gbmV3cm93c3Rhc2gtPm5ld3JvdzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFTRVRfR0VUX05FV1JPVyAqLworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgKgpAQCAtMTI0OCw2ICsxMzIzLDcgQEAKICAgICByZXR1cm4gc3RhcnQ7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAvKioKICAqIG1hcmtzIGEgZ2l2ZW4gY29sdW1uIGluIGEgcm93IGFzIHdyaXRhYmxlIG9yIG5vdC4KICAqLwpAQCAtMTI4MSw2ICsxMzU3LDcgQEAKICAgICB9CiAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogLyoqCiAgKiBTZXRzIGEgZ2l2ZW4gY29sdW1uIGluIGEgcm93IHdpdGggZGF0YSBnaXZlbiBhIHR5cGUsIHZhbHVlLApAQCAtMTM1NSw2ICsxNDMyLDcgQEAKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfQogCisKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAqCiAgKiBEYXRhIFNldCBBUEk6IEluZGV4IG9wZXJhdGlvbnMKQEAgLTEzNzIsNiArMTQ1MCw3IEBACiAKIC8qKiBhZGRzIG11bHRpcGxlIGluZGV4ZXMgdG8gYSB0YWJsZV9kYXRhc2V0IGhlbHBlciBvYmplY3QuCiAgKiAgVG8gZW5kIHRoZSBsaXN0LCB1c2UgYSAwIGFmdGVyIHRoZSBsaXN0IG9mIEFTTiBpbmRleCB0eXBlcy4gKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9TRVRfQUREX0lOREVYRVMKIHZvaWQKIG5ldHNubXBfdGFibGVfc2V0X2FkZF9pbmRleGVzKG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKnRzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pCkBAIC0xMzg3LDYgKzE0NjYsMTAgQEAKIAogICAgIHZhX2VuZChkZWJ1Z2FyZ3MpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfU0VUX0FERF9JTkRFWEVTICovCiAKKyNlbHNlIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQVNFVCAqLworbmV0c25tcF9mZWF0dXJlX3VudXNlZCh0YWJsZV9kYXRhc2V0KTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFTRVQgKi8KIC8qKiBAfSAKICAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jIGIvYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jCmluZGV4IDg3Yzc0MTIuLjhlZDVjZDAgMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYworKysgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmMKQEAgLTg0LDYgKzg0LDcgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTk5LDYgKzEwMCwxOCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9pdGVyYXRvcl9hbGwsIG1pYl9oZWxwZXJzKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfaXRlcmF0b3JfaW5zZXJ0X2NvbnRleHQsIHRhYmxlX2l0ZXJhdG9yX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9pdGVyYXRvcl9jcmVhdGVfdGFibGUsIHRhYmxlX2l0ZXJhdG9yX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9pdGVyYXRvcl9yb3dfZmlyc3QsIHRhYmxlX2l0ZXJhdG9yX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9pdGVyYXRvcl9yb3dfY291bnQsIHRhYmxlX2l0ZXJhdG9yX2FsbCkKKworI2lmZGVmIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX1NUQVNIX0NBQ0hFCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShkYXRhX2xpc3RfZ2V0X2xpc3Rfbm9kZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKG9pZF9zdGFzaF9hZGRfZGF0YSkKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9TVEFTSF9DQUNIRSAqLworCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgKgogICogSXRlcmF0b3IgQVBJOiBUYWJsZSBtYWludGVuYW5jZQpAQCAtMTE3LDYgKzEzMCw3IEBACiAgICAgICoKICAgICAgKiBUaW1lIHdpbGwgc2hvdyB3aGV0aGVyIHRoaXMgaXMgYSBzZW5zaWJsZSBhcHByb2FjaCBvciBub3QuCiAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfSVRFUkFUT1JfQ1JFQVRFX1RBQkxFCiBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKgogbmV0c25tcF9pdGVyYXRvcl9jcmVhdGVfdGFibGUoIE5ldHNubXBfRmlyc3RfRGF0YV9Qb2ludCAqZmlyc3REUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05leHRfRGF0YV9Qb2ludCAgKm5leHREUCwKQEAgLTEzNyw3ICsxNTEsOSBAQAogCiAgICAgcmV0dXJuIGlpbmZvOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfSVRFUkFUT1JfQ1JFQVRFX1RBQkxFICovCiAKKy8qKiBGcmVlIHRoZSBtZW1vcnkgdGhhdCB3YXMgYWxsb2NhdGVkIGZvciBhIHRhYmxlIGl0ZXJhdG9yLiAqLwogdm9pZAogbmV0c25tcF9pdGVyYXRvcl9kZWxldGVfdGFibGUoIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqaWluZm8gKQogewpAQCAtMTQ4LDYgKzE2NCw3IEBACiAgICAgICAgIHNubXBfZnJlZV92YXJiaW5kKCBpaW5mby0+aW5kZXhlcyApOwogICAgICAgICBpaW5mby0+aW5kZXhlcyA9IE5VTEw7CiAgICAgfQorICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZShpaW5mby0+dGFibGVfcmVnaW5mbyk7CiAgICAgU05NUF9GUkVFKCBpaW5mbyApOwogfQogCkBAIC0xNjUsNyArMTgyLDM3IEBACiAgKgogICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogCi0vKiogcmV0dXJucyBhIG5ldHNubXBfbWliX2hhbmRsZXIgb2JqZWN0IGZvciB0aGUgdGFibGVfaXRlcmF0b3IgaGVscGVyICovCitzdGF0aWMgbmV0c25tcF9pdGVyYXRvcl9pbmZvICoKK25ldHNubXBfaXRlcmF0b3JfcmVmKG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqaWluZm8pCit7CisgICAgaWluZm8tPnJlZmNudCsrOworICAgIHJldHVybiBpaW5mbzsKK30KKworc3RhdGljIHZvaWQKK25ldHNubXBfaXRlcmF0b3JfZGVyZWYobmV0c25tcF9pdGVyYXRvcl9pbmZvICppaW5mbykKK3sKKyAgICBpZiAoLS1paW5mby0+cmVmY250ID09IDApCisgICAgICAgIG5ldHNubXBfaXRlcmF0b3JfZGVsZXRlX3RhYmxlKGlpbmZvKTsKK30KKwordm9pZCBuZXRzbm1wX2hhbmRsZXJfb3duc19pdGVyYXRvcl9pbmZvKG5ldHNubXBfbWliX2hhbmRsZXIgKmgpCit7CisgICAgbmV0c25tcF9hc3NlcnQoaCk7CisgICAgbmV0c25tcF9hc3NlcnQoaC0+bXl2b2lkKTsKKyAgICAoKG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqKShoLT5teXZvaWQpKS0+cmVmY250Kys7CisgICAgaC0+ZGF0YV9jbG9uZSA9ICh2b2lkICooKikodm9pZCAqKSluZXRzbm1wX2l0ZXJhdG9yX3JlZjsKKyAgICBoLT5kYXRhX2ZyZWUgID0gKHZvaWQoKikodm9pZCAqKSluZXRzbm1wX2l0ZXJhdG9yX2RlcmVmOworfQorCisvKioKKyAqIFJldHVybnMgYSBuZXRzbm1wX21pYl9oYW5kbGVyIG9iamVjdCBmb3IgdGhlIHRhYmxlX2l0ZXJhdG9yIGhlbHBlci4KKyAqCisgKiBUaGUgY2FsbGVyIHJlbWFpbnMgdGhlIG93bmVyIG9mIHRoZSBpdGVyYXRvciBpbmZvcm1hdGlvbiBvYmplY3QgaWYKKyAqIHRoZSBmbGFnIE5FVFNOTVBfSEFORExFUl9PV05TX0lJTkZPIGhhcyBub3QgYmVlbiBzZXQsIGFuZCB0aGUgY3JlYXRlZAorICogaGFuZGxlciBiZWNvbWVzIHRoZSBvd25lciBvZiB0aGUgaXRlcmF0b3IgaW5mb3JtYXRpb24gaWYgdGhlIGZsYWcKKyAqIE5FVFNOTVBfSEFORExFUl9PV05TX0lJTkZPIGhhcyBiZWVuIHNldC4KKyAqLwogbmV0c25tcF9taWJfaGFuZGxlciAqCiBuZXRzbm1wX2dldF90YWJsZV9pdGVyYXRvcl9oYW5kbGVyKG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqaWluZm8pCiB7CkBAIC0xODIsNiArMjI5LDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBtZS0+bXl2b2lkID0gaWluZm87CisgICAgaWYgKGlpbmZvLT5mbGFncyAmIE5FVFNOTVBfSEFORExFUl9PV05TX0lJTkZPKQorICAgICAgICBuZXRzbm1wX2hhbmRsZXJfb3duc19pdGVyYXRvcl9pbmZvKG1lKTsKICAgICByZXR1cm4gbWU7CiB9CiAKQEAgLTE5NSw3ICsyNDQsMTEgQEAKICAqCiAgKiBAcGFyYW0gcmVnaW5mbyBpcyBhIHBvaW50ZXIgdG8gYSBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uIHN0cnVjdAogICoKLSAqIEBwYXJhbSBpaW5mbyBpcyBhIHBvaW50ZXIgdG8gYSBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gc3RydWN0CisgKiBAcGFyYW0gaWluZm8gQSBwb2ludGVyIHRvIGEgbmV0c25tcF9pdGVyYXRvcl9pbmZvIHN0cnVjdC4gSWYgdGhlIGZsYWcKKyAqIE5FVFNOTVBfSEFORExFUl9PV05TX0lJTkZPIGlzIG5vdCBzZXQgaW4gaWluZm8tPmZsYWdzLCB0aGUgY2FsbGVyIHJlbWFpbnMKKyAqIHRoZSBvd25lciBvZiB0aGlzIHN0cnVjdHVyZS4gQW5kIGlmIHRoZSBmbGFnIE5FVFNOTVBfSEFORExFUl9PV05TX0lJTkZPIGlzCisgKiBzZXQgaW4gaWluZm8tPmZsYWdzLCBvd25lcnNoaXAgb2YgdGhpcyBkYXRhIHN0cnVjdHVyZSBpcyBwYXNzZWQgdG8gdGhlCisgKiBoYW5kbGVyLgogICoKICAqIEByZXR1cm4gTUlCX1JFR0lTVEVSRURfT0sgaXMgcmV0dXJuZWQgaWYgdGhlIHJlZ2lzdHJhdGlvbiB3YXMgYSBzdWNjZXNzLgogICoJRmFpbHVyZXMgYXJlIE1JQl9SRUdJU1RSQVRJT05fRkFJTEVELCBNSUJfRFVQTElDQVRFX1JFR0lTVFJBVElPTi4KQEAgLTIwNiw3ICsyNTksOSBAQAogbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcihuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKmlpbmZvKQogeworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVNIX0NBQ0hFCiAgICAgcmVnaW5mby0+bW9kZXMgfD0gSEFORExFUl9DQU5fU1RBU0g7CisjZW5kaWYgIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBU0hfQ0FDSEUgKi8KICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2dldF90YWJsZV9pdGVyYXRvcl9oYW5kbGVyKGlpbmZvKSk7CiAgICAgaWYgKCFpaW5mbykKQEAgLTIzNyw2ICsyOTIsNyBAQAogICAgIHJldHVybiBuZXRzbm1wX3JlcXVlc3RfZ2V0X2xpc3RfZGF0YShyZXF1ZXN0LCBUQUJMRV9JVEVSQVRPUl9OQU1FKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0lURVJBVE9SX0lOU0VSVF9DT05URVhUCiAvKiogaW5zZXJ0cyB0YWJsZV9pdGVyYXRvciBzcGVjaWZpYyBkYXRhIGZvciBhIG5ld2x5CiAgKiAgY3JlYXRlZCByb3cgaW50byBhIHJlcXVlc3QgKi8KIE5FVFNOTVBfSU5MSU5FIHZvaWQKQEAgLTMwMSw2ICszNTcsNyBAQAogICAgICAgICB9CiAgICAgfQogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfSVRFUkFUT1JfSU5TRVJUX0NPTlRFWFQgKi8KIAogI2RlZmluZSBUSV9SRVFVRVNUX0NBQ0hFICJ0aV9jYWNoZSIKIApAQCAtNDAzLDEyICs0NjAsMTQgQEAKICAgICB2b2lkICAgICAgICAgICAqY2FsbGJhY2tfZGF0YV9jb250ZXh0ID0gTlVMTDsKICAgICB0aV9jYWNoZV9pbmZvICAqdGlfaW5mbyA9IE5VTEw7CiAgICAgaW50ICAgICAgICAgICAgIHJlcXVlc3RfY291bnQgPSAwOworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVNIX0NBQ0hFCiAgICAgbmV0c25tcF9vaWRfc3Rhc2hfbm9kZSAqKmNpbmZvID0gTlVMTDsKICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKm9sZF9pbmRleGVzID0gTlVMTCwgKnZiOwogICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX3JlZ19pbmZvID0gTlVMTDsKICAgICBpbnQgaTsKICAgICBuZXRzbm1wX2RhdGFfbGlzdCAgICAqbGRhdGEgPSBOVUxMOwotICAgIAorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBU0hfQ0FDSEUgKi8KKwogICAgIGlpbmZvID0gKG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqKSBoYW5kbGVyLT5teXZvaWQ7CiAgICAgaWYgKCFpaW5mbyB8fCAhcmVnaW5mbyB8fCAhcmVxaW5mbykKICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKQEAgLTQzNCw2ICs0OTMsNyBAQAogCiAgICAgLyogcHJlbGltaW5hcnkgYW5hbHlzaXMgKi8KICAgICBzd2l0Y2ggKHJlcWluZm8tPm1vZGUpIHsKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVEFTSF9DQUNIRQogICAgIGNhc2UgTU9ERV9HRVRfU1RBU0g6CiAgICAgICAgIGNpbmZvID0gbmV0c25tcF9leHRyYWN0X3N0YXNoX2NhY2hlKHJlcWluZm8pOwogICAgICAgICB0YWJsZV9yZWdfaW5mbyA9IG5ldHNubXBfZmluZF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyhyZWdpbmZvKTsKQEAgLTQ1Miw2ICs1MTIsNyBAQAogICAgICAgICAvKiByZW1lbWJlciB0aGUgaW5kZXhlcyB0aGF0IHdlcmUgb3JpZ2luYWxseSBwYXJzZWQuICovCiAgICAgICAgIG9sZF9pbmRleGVzID0gdGFibGVfaW5mby0+aW5kZXhlczsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVEFTSF9DQUNIRSAqLwogCiAgICAgY2FzZSBNT0RFX0dFVE5FWFQ6CiAgICAgICAgIGZvcihyZXF1ZXN0ID0gcmVxdWVzdHMgOyByZXF1ZXN0OyByZXF1ZXN0ID0gcmVxdWVzdC0+bmV4dCkgewpAQCAtNTA1LDggKzU2NiwxMSBAQAogICAgICAqLwogICAgIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfR0VUIHx8CiAgICAgICAgIHJlcWluZm8tPm1vZGUgPT0gTU9ERV9HRVRORVhUIHx8Ci0gICAgICAgIHJlcWluZm8tPm1vZGUgPT0gTU9ERV9HRVRfU1RBU0ggfHwKLSAgICAgICAgcmVxaW5mby0+bW9kZSA9PSBNT0RFX1NFVF9SRVNFUlZFMSkgeworICAgICAgICByZXFpbmZvLT5tb2RlID09IE1PREVfR0VUX1NUQVNICisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorICAgICAgICB8fCByZXFpbmZvLT5tb2RlID09IE1PREVfU0VUX1JFU0VSVkUxCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgICAgICkgewogICAgICAgICAvKgogICAgICAgICAgKiBDb3VudCB0aGUgbnVtYmVyIG9mIHJlcXVlc3QgaW4gdGhlIGxpc3QsCiAgICAgICAgICAqICAgc28gdGhhdCB3ZSdsbCBrbm93IHdoZW4gd2UncmUgZmluaXNoZWQKQEAgLTU5NSw3ICs2NTksOSBAQAogCiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaChyZXFpbmZvLT5tb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgTU9ERV9HRVQ6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAgICAgICAgICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgLyogbG9va2luZyBmb3IgZXhhY3QgbWF0Y2hlcyAqLwogICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRfb2lkX25vYWxsb2MobXluYW1lLCBNQVhfT0lEX0xFTiwgJm15bmFtZV9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvaWQsIGNvbG9pZF9sZW4sIGluZGV4X3NlYXJjaCk7CkBAIC02MzAsNiArNjk2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBU0hfQ0FDSEUKICAgICAgICAgICAgICAgICAgICAgY2FzZSBNT0RFX0dFVF9TVEFTSDoKICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNvbGxlY3QgZGF0YSBmb3IgZWFjaCBjb2x1bW4gZm9yIGV2ZXJ5IHJvdyAqLwogICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRfb2lkX25vYWxsb2MobXluYW1lLCBNQVhfT0lEX0xFTiwgJm15bmFtZV9sZW4sCkBAIC02ODEsNiArNzQ4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUgPSBNT0RFX0dFVF9TVEFTSDsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmICAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVNIX0NBQ0hFICovCiAKICAgICAgICAgICAgICAgICAgICAgY2FzZSBNT0RFX0dFVE5FWFQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsb29raW5nIGZvciAibmV4dCIgbWF0Y2hlcyAqLwpAQCAtNzIwLDEyICs3ODgsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAgICAgICAgICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgogICAgICAgICAgICAgICAgICAgICBjYXNlIE1PREVfU0VUX0ZSRUU6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBNT0RFX1NFVF9DT01NSVQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuZWVkZWQgcHJvY2Vzc2luZyBhbHJlYWR5IGRvbmUgaW4gUkVTRVJWRTEgKi8KICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLApAQCAtNzg4LDggKzg1OCwxMSBAQAogICAgIH0KIAogICAgIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfR0VUIHx8Ci0gICAgICAgIHJlcWluZm8tPm1vZGUgPT0gTU9ERV9HRVRORVhUIHx8Ci0gICAgICAgIHJlcWluZm8tPm1vZGUgPT0gTU9ERV9TRVRfUkVTRVJWRTEpIHsKKyAgICAgICAgcmVxaW5mby0+bW9kZSA9PSBNT0RFX0dFVE5FWFQKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCisgICAgICAgIHx8IHJlcWluZm8tPm1vZGUgPT0gTU9ERV9TRVRfUkVTRVJWRTEKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICAgICAgKSB7CiAgICAgICAgIC8qIHBlciByZXF1ZXN0IGxhc3QgbWludXRlIHByb2Nlc3NpbmcgKi8KICAgICAgICAgZm9yKHJlcXVlc3QgPSByZXF1ZXN0cyA7IHJlcXVlc3Q7IHJlcXVlc3QgPSByZXF1ZXN0LT5uZXh0KSB7CiAgICAgICAgICAgICBpZiAocmVxdWVzdC0+cHJvY2Vzc2VkKQpAQCAtODI1LDcgKzg5OCw5IEBACiAgICAgICAgICAgICAgICAgLyogRkFMTCBUSFJPVUdIICovCiAKICAgICAgICAgICAgIGNhc2UgTU9ERV9HRVQ6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgICAgICAgICBpZiAodGlfaW5mby0+ZGF0YV9jb250ZXh0KQogICAgICAgICAgICAgICAgICAgICAvKiB3ZSBkb24ndCBhZGQgYSBmcmVlIHBvaW50ZXIsIHNpbmNlIGl0J3MgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIFRJX1JFUVVFU1RfQ0FDSEUgaW5zdGVhZCAqLwpAQCAtODQ4LDEwICs5MjMsMTIgQEAKICAgICAgICAgaWYgKHJlcWluZm8tPm1vZGUgPT0gTU9ERV9HRVRORVhUKSB7CiAgICAgICAgICAgICByZXFpbmZvLT5tb2RlID0gTU9ERV9HRVQ7CiAgICAgICAgIH0KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVEFTSF9DQUNIRQogICAgIH0gZWxzZSBpZiAocmVxaW5mby0+bW9kZSA9PSBNT0RFX0dFVF9TVEFTSCkgewogICAgICAgICBuZXRzbm1wX2ZyZWVfcmVxdWVzdF9kYXRhX3NldHMocmVxdG1wKTsKICAgICAgICAgU05NUF9GUkVFKHJlcXRtcCk7CiAgICAgICAgIHRhYmxlX2luZm8tPmluZGV4ZXMgPSBvbGRfaW5kZXhlczsKKyNlbmRpZiAgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVEFTSF9DQUNIRSAqLwogICAgIH0KIAogCkBAIC04ODIsNiArOTU5LDcgQEAKICAqCiAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9JVEVSQVRPUl9ST1dfRklSU1QKIHZvaWQgKgogbmV0c25tcF9pdGVyYXRvcl9yb3dfZmlyc3QoIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqaWluZm8gKSB7CiAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2cDEsICp2cDI7CkBAIC05MDAsNiArOTc4LDcgQEAKICAgICBzbm1wX2ZyZWVfdmFyYmluZCggdnAxICk7CiAgICAgcmV0dXJuIGN0eDI7ICAvKiBvciAqY3R4MiA/PyAqLwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfSVRFUkFUT1JfUk9XX0ZJUlNUICovCiAKIHZvaWQgKgogbmV0c25tcF9pdGVyYXRvcl9yb3dfZ2V0KCBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKmlpbmZvLCB2b2lkICpyb3cgKQpAQCAtMTEwOCw2ICsxMTg3LDcgQEAKICAgICByZXR1cm4gKCB2cDIgPyBjdHgyIDogTlVMTCApOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfSVRFUkFUT1JfUk9XX0NPVU5UCiBpbnQKIG5ldHNubXBfaXRlcmF0b3Jfcm93X2NvdW50KCBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKmlpbmZvICkKIHsKQEAgLTExNDMsNiArMTIyMyw3IEBACiAgICAgc25tcF9mcmVlX3ZhcmJpbmQoIHZwMSApOwogICAgIHJldHVybiBpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfSVRFUkFUT1JfUk9XX0NPVU5UICovCiAKIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy90YWJsZV9yb3cuYyBiL2FnZW50L2hlbHBlcnMvdGFibGVfcm93LmMKaW5kZXggYmJjNDg0Zi4uMmEzM2YyMyAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy90YWJsZV9yb3cuYworKysgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX3Jvdy5jCkBAIC04LDYgKzgsNyBAQAogI2RlZmluZSBUQUJMRV9ST1dfREFUQSAgInRhYmxlX3JvdyIKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpZiBIQVZFX1NUUklOR19ICiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC0yMyw2ICsyNCwxMSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfcm93X2FsbCwgbWliX2hlbHBlcnMpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9yb3dfZXh0cmFjdCwgdGFibGVfcm93X2FsbCkKKworCiAvKgogICogc25tcC5oOiNkZWZpbmUgU05NUF9NU0dfSU5URVJOQUxfU0VUX0JFR0lOICAgICAgICAtMSAKICAqIHNubXAuaDojZGVmaW5lIFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9SRVNFUlZFMSAgICAgMCAKQEAgLTE1NCwxMSArMTYwLDEzIEBACiAKIAogLyoqIHJldHVybiB0aGUgcm93IGRhdGEgc3RydWN0dXJlIHN1cHBsaWVkIHRvIHRoZSB0YWJsZV9yb3cgaGVscGVyICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfUk9XX0VYVFJBQ1QKIHZvaWQgKgogbmV0c25tcF90YWJsZV9yb3dfZXh0cmFjdChuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdCkKIHsKICAgICByZXR1cm4gbmV0c25tcF9yZXF1ZXN0X2dldF9saXN0X2RhdGEocmVxdWVzdCwgVEFCTEVfUk9XX0RBVEEpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfUk9XX0VYVFJBQ1QgKi8KIC8qKiBAY29uZCAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy90YWJsZV90ZGF0YS5jIGIvYWdlbnQvaGVscGVycy90YWJsZV90ZGF0YS5jCmluZGV4IGRlYTUyMTkuLjViZGIyNmEgMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYworKysgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX3RkYXRhLmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KQEAgLTE5LDYgKzIwLDIyIEBACiAjaW5jbHVkZSA8ZG1hbGxvYy5oPgogI2VuZGlmCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV90ZGF0YV9hbGwsIG1pYl9oZWxwZXJzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX3RkYXRhLCB0YWJsZV90ZGF0YV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfdGRhdGFfZGVsZXRlX3RhYmxlLCB0YWJsZV90ZGF0YV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfdGRhdGFfZXh0cmFjdF90YWJsZSwgdGFibGVfdGRhdGFfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX3RkYXRhX3JlbW92ZV9yb3csIHRhYmxlX3RkYXRhX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV90ZGF0YV9pbnNlcnRfcm93LCB0YWJsZV90ZGF0YV9hbGwpCisKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9UQUJMRV9UREFUQQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfY29udGFpbmVyX3Jvd19pbnNlcnQpCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfVEFCTEVfVERBVEFfUkVNT1ZFX1JPVworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfY29udGFpbmVyX3Jvd19yZW1vdmUpCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfVEFCTEVfVERBVEFfUkVNT1ZFX1JPVyAqLworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX1RBQkxFX1REQVRBICovCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9UREFUQQorCiAvKiogQGRlZmdyb3VwIHRkYXRhIHRkYXRhCiAgKiAgSW1wbGVtZW50IGEgdGFibGUgd2l0aCBkYXRhbWF0dGVkIHN0b3JhZ2UuCiAgKiAgQGluZ3JvdXAgdGFibGUKQEAgLTcyLDYgKzg5LDcgQEAKICAgICByZXR1cm4gdGFibGU7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9UREFUQV9ERUxFVEVfVEFCTEUKIC8qKiBjcmVhdGVzIGFuZCByZXR1cm5zIGEgJ3RkYXRhJyB0YWJsZSBkYXRhIHN0cnVjdHVyZSAqLwogdm9pZAogbmV0c25tcF90ZGF0YV9kZWxldGVfdGFibGUobmV0c25tcF90ZGF0YSAqdGFibGUpCkBAIC04Nyw2ICsxMDUsNyBAQAogICAgIFNOTVBfRlJFRSh0YWJsZSk7CiAgICAgcmV0dXJuOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfVERBVEFfREVMRVRFX1RBQkxFICovCiAKIC8qKiBjcmVhdGVzIGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byBuZXcgcm93IGRhdGEgc3RydWN0dXJlICovCiBuZXRzbm1wX3RkYXRhX3JvdyAqCkBAIC05Nyw2ICsxMTYsOCBAQAogfQogCiAvKiogY2xvbmVzIGEgJ3RkYXRhJyByb3cuIERPRVMgTk9UIENMT05FIFRIRSBUQUJMRS1TUEVDSUZJQyBFTlRSWSBEQVRBLiAqLworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRkYXRhX2Nsb25lX3JvdywgdGFibGVfdGRhdGFfYWxsKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1REQVRBX0NMT05FX1JPVwogbmV0c25tcF90ZGF0YV9yb3cgKgogbmV0c25tcF90ZGF0YV9jbG9uZV9yb3cobmV0c25tcF90ZGF0YV9yb3cgKnJvdykKIHsKQEAgLTEzMCw5ICsxNTEsMTIgQEAKIAogICAgIHJldHVybiBuZXdyb3c7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UREFUQV9DTE9ORV9ST1cgKi8KIAogLyoqIGNvcHkgdGhlIGNvbnRlbnRzIG9mIGEgJ3RkYXRhJyByb3cuCiAgICAgRE9FUyBOT1QgQ09QWSBUSEUgVEFCTEUtU1BFQ0lGSUMgRU5UUlkgREFUQS4gKi8KK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0ZGF0YV9jb3B5X3JvdywgdGFibGVfdGRhdGFfYWxsKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1REQVRBX0NPUFlfUk9XCiBpbnQKIG5ldHNubXBfdGRhdGFfY29weV9yb3cobmV0c25tcF90ZGF0YV9yb3cgKmRzdF9yb3csIG5ldHNubXBfdGRhdGFfcm93ICpzcmNfcm93KQogewpAQCAtMTU2LDYgKzE4MCw3IEBACiAKICAgICByZXR1cm4gMDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1REQVRBX0NPUFlfUk9XICovCiAKIC8qKiBkZWxldGVzIHRoZSBtZW1vcnkgdXNlZCBieSB0aGUgc3BlY2lmaWVkIHJvdwogICogIHJldHVybnMgdGhlIHRhYmxlLXNwZWNpZmljIGVudHJ5IGRhdGEKQEAgLTIzMiw2ICsyNTcsOCBAQAogfQogCiAvKiogc3dhcHMgb3V0IG9yaWdyb3cgd2l0aCBuZXdyb3cuICBUaGlzIGRvZXMgKm5vdCogZGVsZXRlL2ZyZWUgYW55dGhpbmchICovCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGRhdGFfcmVwbGFjZV9yb3csIHRhYmxlX3RkYXRhX2FsbCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UREFUQV9SRVBMQUNFX1JPVwogdm9pZAogbmV0c25tcF90ZGF0YV9yZXBsYWNlX3JvdyhuZXRzbm1wX3RkYXRhICp0YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RkYXRhX3JvdyAqb3JpZ3JvdywKQEAgLTI0MCw2ICsyNjcsNyBAQAogICAgIG5ldHNubXBfdGRhdGFfcmVtb3ZlX3Jvdyh0YWJsZSwgb3JpZ3Jvdyk7CiAgICAgbmV0c25tcF90ZGF0YV9hZGRfcm93KHRhYmxlLCBuZXdyb3cpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVERBVEFfUkVQTEFDRV9ST1cgKi8KIAogLyoqCiAgKiByZW1vdmVzIGEgcm93IGZyb20gdGhlIGdpdmVuIHRhYmxlIGFuZCByZXR1cm5zIGl0IChubyBmcmVlJ3MgY2FsbGVkKQpAQCAtMzM0LDcgKzM2Miw5IEBACiAgICAgICAgIG5lZWRfcHJvY2Vzc2luZyA9IDA7IC8qIG9ubHkgbmVlZCBwcm9jZXNzaW5nIGlmIHNvbWUgdmFycyBmb3VuZCAqLwogICAgICAgICAvKiogRmFsbCB0aHJvdWdoICovCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgICAgICBmb3IgKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdCA9IHJlcXVlc3QtPm5leHQpIHsKICAgICAgICAgICAgIGlmIChyZXF1ZXN0LT5wcm9jZXNzZWQpCkBAIC0zODEsMTMgKzQxMSwxNyBAQAogICAgICAgICAgICAgICAgICAgdGFibGUtPmNvbnRhaW5lciwgVEFCTEVfQ09OVEFJTkVSX0tFWV9ORVRTTk1QX0lOREVYKTsKIH0KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRkYXRhX3VucmVnaXN0ZXIsIHRhYmxlX3RkYXRhX2FsbCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UREFUQV9VTlJFR0lTVEVSCiBpbnQKIG5ldHNubXBfdGRhdGFfdW5yZWdpc3RlcihuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWdpbmZvKQogewogICAgIC8qIGZyZWUgdGFibGU7ICovCiAgICAgcmV0dXJuIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3VucmVnaXN0ZXIocmVnaW5mbyk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UREFUQV9VTlJFR0lTVEVSICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9UREFUQV9FWFRSQUNUX1RBQkxFCiAvKiogZXh0cmFjdHMgdGhlIHRkYXRhIHRhYmxlIGZyb20gdGhlIHJlcXVlc3Qgc3RydWN0dXJlICovCiBuZXRzbm1wX3RkYXRhICoKIG5ldHNubXBfdGRhdGFfZXh0cmFjdF90YWJsZShuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdCkKQEAgLTM5NSw4ICs0MjksMTEgQEAKICAgICByZXR1cm4gKG5ldHNubXBfdGRhdGEgKikgbmV0c25tcF9yZXF1ZXN0X2dldF9saXN0X2RhdGEocmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFCTEVfVERBVEFfVEFCTEUpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfVERBVEFfRVhUUkFDVF9UQUJMRSAqLwogCiAvKiogZXh0cmFjdHMgdGhlIHRkYXRhIGNvbnRhaW5lciBmcm9tIHRoZSByZXF1ZXN0IHN0cnVjdHVyZSAqLworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRkYXRhX2V4dHJhY3RfY29udGFpbmVyLCB0YWJsZV90ZGF0YV9hbGwpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVERBVEFfRVhUUkFDVF9DT05UQUlORVIKIG5ldHNubXBfY29udGFpbmVyICoKIG5ldHNubXBfdGRhdGFfZXh0cmFjdF9jb250YWluZXIobmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3QpCiB7CkBAIC00MDQsNiArNDQxLDcgQEAKICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2dldF9saXN0X2RhdGEocmVxdWVzdCwgVEFCTEVfVERBVEFfVEFCTEUpOwogICAgIHJldHVybiAoIHRkYXRhID8gdGRhdGEtPmNvbnRhaW5lciA6IE5VTEwgKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1REQVRBX0VYVFJBQ1RfQ09OVEFJTkVSICovCiAKIC8qKiBleHRyYWN0cyB0aGUgdGRhdGEgcm93IGJlaW5nIGFjY2Vzc2VkIGZyb20gdGhlIHJlcXVlc3Qgc3RydWN0dXJlICovCiBuZXRzbm1wX3RkYXRhX3JvdyAqCkBAIC00MjUsNiArNDYzLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9UREFUQV9JTlNFUlRfUk9XCiAvKiogaW5zZXJ0cyBhIG5ld2x5IGNyZWF0ZWQgdGRhdGEgcm93IGludG8gYSByZXF1ZXN0ICovCiBORVRTTk1QX0lOTElORSB2b2lkCiBuZXRzbm1wX2luc2VydF90ZGF0YV9yb3cobmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3QsCkBAIC00MzIsNyArNDcxLDkgQEAKIHsKICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfaW5zZXJ0KHJlcXVlc3QsIChuZXRzbm1wX2luZGV4ICopcm93KTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX1REQVRBX0lOU0VSVF9ST1cgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX1REQVRBX1JFTU9WRV9ST1cKIC8qKiBpbnNlcnRzIGEgbmV3bHkgY3JlYXRlZCB0ZGF0YSByb3cgaW50byBhIHJlcXVlc3QgKi8KIE5FVFNOTVBfSU5MSU5FIHZvaWQKIG5ldHNubXBfcmVtb3ZlX3RkYXRhX3JvdyhuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdCwKQEAgLTQ0MCw2ICs0ODEsNyBAQAogewogICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19yZW1vdmUocmVxdWVzdCwgKG5ldHNubXBfaW5kZXggKilyb3cpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfVERBVEFfUkVNT1ZFX1JPVyAqLwogCiAKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTUzNyw2ICs1NzksOCBAQAogICAgIHJldHVybiAobmV0c25tcF90ZGF0YV9yb3cqKUNPTlRBSU5FUl9ORVhUKCB0YWJsZS0+Y29udGFpbmVyLCAmaW5kZXggKTsKIH0KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRkYXRhX3Jvd19jb3VudCwgdGFibGVfdGRhdGFfYWxsKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1REQVRBX1JPV19DT1VOVAogaW50CiBuZXRzbm1wX3RkYXRhX3Jvd19jb3VudChuZXRzbm1wX3RkYXRhICp0YWJsZSkKIHsKQEAgLTU0NCw2ICs1ODgsNyBAQAogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gQ09OVEFJTkVSX1NJWkUoIHRhYmxlLT5jb250YWluZXIgKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1REQVRBX1JPV19DT1VOVCAqLwogCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgKgpAQCAtNTUzLDYgKzU5OCw4IEBACiAKIAogLyoqIGNvbXBhcmUgYSByb3cgd2l0aCB0aGUgZ2l2ZW4gaW5kZXggdmFsdWVzICovCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGRhdGFfY29tcGFyZV9pZHgsIHRhYmxlX3RkYXRhX2FsbCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UREFUQV9DT01QQVJFX0lEWAogaW50CiBuZXRzbm1wX3RkYXRhX2NvbXBhcmVfaWR4KG5ldHNubXBfdGRhdGFfcm93ICAgICAqcm93LAogICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKmluZGV4ZXMpCkBAIC01NjQsNiArNjExLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICBpbmRleGVzKTsKICAgICByZXR1cm4gbmV0c25tcF90ZGF0YV9jb21wYXJlX29pZChyb3csIHNlYXJjaGZvciwgc2VhcmNoZm9yX2xlbik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UREFUQV9DT01QQVJFX0lEWCAqLwogCiAvKiogY29tcGFyZSBhIHJvdyB3aXRoIHRoZSBnaXZlbiBpbmRleCBPSUQgKi8KIGludApAQCAtNTk1LDYgKzY0MywxMCBAQAogICAgIHJldHVybiBzbm1wX29pZHRyZWVfY29tcGFyZSggaW5kZXgtPm9pZHMsIGluZGV4LT5sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXJldG8sICAgY29tcGFyZXRvX2xlbik7CiB9CisjZWxzZSAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX1REQVRBICovCituZXRzbm1wX2ZlYXR1cmVfdW51c2VkKHRhYmxlX3RkYXRhKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX1REQVRBICovCisKIAogLyoqIEB9IAogICovCmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL3dhdGNoZXIuYyBiL2FnZW50L2hlbHBlcnMvd2F0Y2hlci5jCmluZGV4IGRlNTk2ODAuLjliMzkzM2IgMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvd2F0Y2hlci5jCisrKyBiL2FnZW50L2hlbHBlcnMvd2F0Y2hlci5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CkBAIC0xOSw2ICsyMCwxOSBAQAogI2RlZmluZSBmcmVlX3dyYXBwZXIgZnJlZQogI2VuZGlmCiAKK25ldHNubXBfZmVhdHVyZV9wcm92aWRlKHdhdGNoZXJfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHdhdGNoZXJfYWxsLCBtaWJfaGVscGVycykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih3YXRjaGVyX2NyZWF0ZV9pbmZvNiwgd2F0Y2hlcl9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yod2F0Y2hlcl9yZWdpc3Rlcl90aW1lc3RhbXAsIHdhdGNoZXJfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHdhdGNoZXJfdWxvbmdfc2NhbGFyLCB3YXRjaGVyX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih3YXRjaGVyX3JlYWRfb25seV91bG9uZ19zY2FsYXIsIHdhdGNoZXJfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHdhdGNoZXJfcmVhZF9vbmx5X2ludF9zY2FsYXIsIHdhdGNoZXJfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHdhdGNoZXJfbG9uZ19zY2FsYXIsIHdhdGNoZXJfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHdhdGNoZXJfcmVhZF9vbmx5X2xvbmdfc2NhbGFyLCB3YXRjaGVyX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih3YXRjaGVyX2ludF9zY2FsYXIsIHdhdGNoZXJfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlYWRfb25seV9jb3VudGVyMzJfc2NhbGFyLCB3YXRjaGVyX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih3YXRjaGVyX3NwaW5sb2NrLCB3YXRjaGVyX2FsbCkKKwogLyoqIEBkZWZncm91cCB3YXRjaGVyIHdhdGNoZXIKICAqICBXYXRjaCBhIHNwZWNpZmllZCB2YXJpYWJsZSBhbmQgcHJvY2VzcyBpdCBhcyBhbiBpbnN0YW5jZSBvciBzY2FsYXIgb2JqZWN0CiAgKiAgQGluZ3JvdXAgbGVhZgpAQCAtNTEsNiArNjUsNyBAQAogICAgIHJldHVybiB3aW5mbzsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1dBVENIRVJfQ1JFQVRFX0lORk82CiBuZXRzbm1wX3dhdGNoZXJfaW5mbyAqCiBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm82KHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCB1X2NoYXIgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLCBzaXplX3QgbWF4X3NpemUsIHNpemVfdCogc2l6ZV9wKQpAQCAtNjEsNiArNzYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3ApOwogICAgIHJldHVybiB3aW5mbzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1dBVENIRVJfQ1JFQVRFX0lORk82ICovCiAKIG5ldHNubXBfd2F0Y2hlcl9pbmZvICoKIG5ldHNubXBfaW5pdF93YXRjaGVyX2luZm8obmV0c25tcF93YXRjaGVyX2luZm8gKndpbmZvLApAQCAtODIsNiArOTgsMTEgQEAKICAgICByZXR1cm4gd2luZm87CiB9CiAKKy8qKgorICogUmVnaXN0ZXIgYSB3YXRjaGVkIHNjYWxhci4gVGhlIGNhbGxlciByZW1haW5zIHRoZSBvd25lciBvZiB3YXRjaGluZm8uCisgKgorICogQHNlZSBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UyKCkKKyAqLwogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3dhdGNoZXJfaW5mbyAgICAgICAgICp3YXRjaGluZm8pCkBAIC05NSw2ICsxMTYsMzAgQEAKICAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9pbnN0YW5jZShyZWdpbmZvKTsKIH0KIAorLyoqCisgKiBSZWdpc3RlciBhIHdhdGNoZWQgc2NhbGFyLiBPd25lcnNoaXAgb2Ygd2F0Y2hpbmZvIGlzIHRyYW5zZmVycmVkIHRvIHRoZSBoYW5kbGVyLgorICoKKyAqIEBzZWUgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKCkKKyAqLworaW50CituZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UyKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisJCQkJICAgbmV0c25tcF93YXRjaGVyX2luZm8gICAgICAgICAqd2F0Y2hpbmZvKQoreworICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKndoYW5kbGVyOworCisgICAgd2hhbmRsZXIgICAgICAgICA9IG5ldHNubXBfZ2V0X3dhdGNoZXJfaGFuZGxlcigpOworICAgIHdoYW5kbGVyLT5teXZvaWQgPSAodm9pZCAqKXdhdGNoaW5mbzsKKyAgICBuZXRzbm1wX293bnNfd2F0Y2hlcl9pbmZvKHdoYW5kbGVyKTsKKworICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgd2hhbmRsZXIpOworICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX2luc3RhbmNlKHJlZ2luZm8pOworfQorCisvKioKKyAqIFJlZ2lzdGVyIGEgd2F0Y2hlZCBzY2FsYXIuIFRoZSBjYWxsZXIgcmVtYWlucyB0aGUgb3duZXIgb2Ygd2F0Y2hpbmZvLgorICoKKyAqIEBzZWUgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcjIoKQorICovCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3dhdGNoZXJfaW5mbyAgICAgICAgICp3YXRjaGluZm8pCkBAIC0xMDgsNiArMTUzLDM0IEBACiAgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyKHJlZ2luZm8pOwogfQogCisvKioKKyAqIFJlZ2lzdGVyIGEgd2F0Y2hlZCBzY2FsYXIuIE93bmVyc2hpcCBvZiB3YXRjaGluZm8gaXMgdHJhbnNmZXJyZWQgdG8gdGhlIGhhbmRsZXIuCisgKgorICogQHNlZSBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKCkKKyAqLworaW50CituZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyMihuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfd2F0Y2hlcl9pbmZvICAgICAgICAgKndhdGNoaW5mbykKK3sKKyAgICBuZXRzbm1wX21pYl9oYW5kbGVyICp3aGFuZGxlcjsKKworICAgIHdoYW5kbGVyICAgICAgICAgPSBuZXRzbm1wX2dldF93YXRjaGVyX2hhbmRsZXIoKTsKKyAgICB3aGFuZGxlci0+bXl2b2lkID0gKHZvaWQgKil3YXRjaGluZm87CisgICAgbmV0c25tcF9vd25zX3dhdGNoZXJfaW5mbyh3aGFuZGxlcik7CisKKyAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIHdoYW5kbGVyKTsKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXIocmVnaW5mbyk7Cit9CisKK3ZvaWQKK25ldHNubXBfb3duc193YXRjaGVyX2luZm8obmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlcikKK3sKKyAgICBuZXRzbm1wX2Fzc2VydChoYW5kbGVyKTsKKyAgICBuZXRzbm1wX2Fzc2VydChoYW5kbGVyLT5teXZvaWQpOworICAgIGhhbmRsZXItPmRhdGFfY2xvbmUgPSAodm9pZCAqKCopKHZvaWQgKikpbmV0c25tcF9jbG9uZV93YXRjaGVyX2luZm87CisgICAgaGFuZGxlci0+ZGF0YV9mcmVlID0gZnJlZTsKK30KKwogLyoqIEBjb25kICovCiAKIE5FVFNOTVBfU1RBVElDX0lOTElORSBzaXplX3QKQEAgLTE5MSw2ICsyNjQsNyBAQAogICAgICAgICAvKgogICAgICAgICAgKiBTRVQgcmVxdWVzdHMuICBTaG91bGQgb25seSBnZXQgaGVyZSBpZiByZWdpc3RlcmVkIFJXUklURSAKICAgICAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgICAgIGlmIChyZXF1ZXN0cy0+cmVxdWVzdHZiLT50eXBlICE9IHdpbmZvLT50eXBlKSB7CiAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLCBTTk1QX0VSUl9XUk9OR1RZUEUpOwpAQCAtMjQ2LDYgKzMyMCwxMiBAQAogCiAgICAgY2FzZSBNT0RFX1NFVF9DT01NSVQ6CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCisgICAgZGVmYXVsdDoKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIndhdGNoZXIgaGFuZGxlciBjYWxsZWQgd2l0aCBhbiB1bmtub3duIG1vZGU6ICVkXG4iLAorICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKIAogICAgIH0KIApAQCAtMjg0LDYgKzM2NCw3IEBACiAgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyKHJlZ2luZm8pOyAgIC8qIFhYWCAtIG9yIGluc3RhbmNlPyAqLwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfV0FUQ0hFUl9SRUdJU1RFUl9USU1FU1RBTVAKIGludAogbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3RpbWVzdGFtcChuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJfdCB0aW1lc3RhbXApCkBAIC0yOTQsNiArMzc1LDcgQEAKIAogICAgIHJldHVybiBuZXRzbm1wX3dhdGNoZWRfdGltZXN0YW1wX3JlZ2lzdGVyKHdoYW5kbGVyLCByZWdpbmZvLCB0aW1lc3RhbXApOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfV0FUQ0hFUl9SRUdJU1RFUl9USU1FU1RBTVAgKi8KIAogCiBpbnQKQEAgLTMzMSwxMSArNDEzLDEzIEBACiAgICAgICAgICAqIFRpbWVzdGFtcHMgYXJlIGluaGVyZW50bHkgUmVhZC1Pbmx5LAogICAgICAgICAgKiAgc28gZG9uJ3QgbmVlZCB0byBzdXBwb3J0IFNFVCByZXF1ZXN0cy4KICAgICAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfTk9UV1JJVEFCTEUpOwogICAgICAgICBoYW5kbGVyLT5mbGFncyB8PSBNSUJfSEFORExFUl9BVVRPX05FWFRfT1ZFUlJJREVfT05DRTsKICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PVFdSSVRBQkxFOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KIAogICAgIC8qIG5leHQgaGFuZGxlciBjYWxsZWQgYXV0b21hdGljYWxseSAtICdBVVRPX05FWFQnICovCkBAIC0zNDksNiArNDMzLDggQEAKICAgICAgKgogICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9XQVRDSEVSX1NQSU5MT0NLCisKIG5ldHNubXBfbWliX2hhbmRsZXIgKgogbmV0c25tcF9nZXRfd2F0Y2hlZF9zcGlubG9ja19oYW5kbGVyKHZvaWQpCiB7CkBAIC0zNzQsNyArNDYwLDcgQEAKICAgICB3aW5mbyAgICAgICAgICAgID0gbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKCh2b2lkICopc3BpbmxvY2ssCiAJCSAgICAgICAgICAgc2l6ZW9mKGludCksIEFTTl9JTlRFR0VSLCBXQVRDSEVSX0ZJWEVEX1NJWkUpOwogICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgd2hhbmRsZXIpOwotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKHJlZ2luZm8sIHdpbmZvKTsKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcjIocmVnaW5mbywgd2luZm8pOwogfQogCiAKQEAgLTM5OCw2ICs0ODQsNyBAQAogICAgICAgICAvKgogICAgICAgICAgKiBFbnN1cmUgdGhlIGFzc2lnbmVkIHZhbHVlIG1hdGNoZXMgdGhlIGN1cnJlbnQgb25lCiAgICAgICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgICAgICBmb3IgKHJlcXVlc3Q9cmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgewogICAgICAgICAgICAgaWYgKHJlcXVlc3QtPnByb2Nlc3NlZCkKQEAgLTQxOCwxMSArNTA1LDEzIEBACiAgICAgY2FzZSBNT0RFX1NFVF9DT01NSVQ6CiAJKCpzcGlubG9jaykrKzsKIAlicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB9CiAKICAgICAvKiBuZXh0IGhhbmRsZXIgY2FsbGVkIGF1dG9tYXRpY2FsbHkgLSAnQVVUT19ORVhUJyAqLwogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfV0FUQ0hFUl9TUElOTE9DSyAqLwogCiAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAqCkBAIC00MzEsMTE4ICs1MjAsMTQyIEBACiAgICAgICoKICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCituZXRzbm1wX3dhdGNoZXJfaW5mbyAqCituZXRzbm1wX2Nsb25lX3dhdGNoZXJfaW5mbyhuZXRzbm1wX3dhdGNoZXJfaW5mbyAqd2luZm8pCit7CisgICAgbmV0c25tcF93YXRjaGVyX2luZm8gKmNvcHkgPSBtYWxsb2Moc2l6ZW9mKCpjb3B5KSk7CisgICAgaWYgKGNvcHkpCisJKmNvcHkgPSAqd2luZm87CisgICAgcmV0dXJuIGNvcHk7Cit9CisKK3N0YXRpYyBpbnQKK3JlZ2lzdGVyX3NjYWxhcl93YXRjaGVyKGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCB1X2NoYXIgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlciwgaW50IG1vZGUpCit7CisgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbyA9IE5VTEw7CisgICAgbmV0c25tcF9taWJfaGFuZGxlciAqd2hhbmRsZXIgPSBOVUxMOworICAgIG5ldHNubXBfd2F0Y2hlcl9pbmZvKiB3YXRjaGluZm8gPQorICAgICAgICBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oZGF0YSwgc2l6ZSwgdHlwZSwgV0FUQ0hFUl9GSVhFRF9TSVpFKTsKKyAgICBpZiAod2F0Y2hpbmZvKQorICAgICAgICB3aGFuZGxlciA9IG5ldHNubXBfZ2V0X3dhdGNoZXJfaGFuZGxlcigpOworICAgIGlmICh3YXRjaGluZm8gJiYgd2hhbmRsZXIpIHsKKyAgICAgICAgd2hhbmRsZXItPm15dm9pZCA9IHdhdGNoaW5mbzsKKwluZXRzbm1wX293bnNfd2F0Y2hlcl9pbmZvKHdoYW5kbGVyKTsKKyAgICAgICAgcmVnaW5mbyA9CisgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgbW9kZSk7CisgICAgfQorICAgIGlmICh3YXRjaGluZm8gJiYgd2hhbmRsZXIgJiYgcmVnaW5mbykgeworICAgICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIHdoYW5kbGVyKTsKKyAgICAgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyKHJlZ2luZm8pOworICAgIH0KKyAgICBpZiAod2hhbmRsZXIpCisgICAgICAgIG5ldHNubXBfaGFuZGxlcl9mcmVlKHdoYW5kbGVyKTsKKyAgICBlbHNlIGlmICh3YXRjaGluZm8pCisgICAgICAgIGZyZWUod2F0Y2hpbmZvKTsKKyAgICByZXR1cm4gU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRTsKK30KKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1dBVENIRVJfVUxPTkdfU0NBTEFSCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfdWxvbmdfc2NhbGFyKGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcigKLSAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAotICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgcmVnX29pZCwgcmVnX29pZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFICksCi0gICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCi0gICAgICAgICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKCB1X2xvbmcgKSwKLSAgICAgICAgICAgICAgICAgICBBU05fVU5TSUdORUQsIFdBVENIRVJfRklYRURfU0laRSApKTsKKyAgICByZXR1cm4gcmVnaXN0ZXJfc2NhbGFyX3dhdGNoZXIoCisgICAgICAgIG5hbWUsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLAorICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YoIHVfbG9uZyApLAorICAgICAgICBBU05fVU5TSUdORUQsIHN1YmhhbmRsZXIsIEhBTkRMRVJfQ0FOX1JXUklURSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9XQVRDSEVSX1VMT05HX1NDQUxBUiAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfV0FUQ0hFUl9SRUFEX09OTFlfVUxPTkdfU0NBTEFSCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X3Vsb25nX3NjYWxhcihjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIoCi0gICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKLSAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgIHJlZ19vaWQsIHJlZ19vaWRfbGVuLAotICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZICksCi0gICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCi0gICAgICAgICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKCB1X2xvbmcgKSwKLSAgICAgICAgICAgICAgICAgICBBU05fVU5TSUdORUQsIFdBVENIRVJfRklYRURfU0laRSApKTsKKyAgICByZXR1cm4gcmVnaXN0ZXJfc2NhbGFyX3dhdGNoZXIoCisgICAgICAgIG5hbWUsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLAorICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YoIHVfbG9uZyApLAorICAgICAgICBBU05fVU5TSUdORUQsIHN1YmhhbmRsZXIsIEhBTkRMRVJfQ0FOX1JPTkxZKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1dBVENIRVJfUkVBRF9PTkxZX1VMT05HX1NDQUxBUiAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfV0FUQ0hFUl9MT05HX1NDQUxBUgogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX2xvbmdfc2NhbGFyKGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICogaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIoCi0gICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKLSAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgIHJlZ19vaWQsIHJlZ19vaWRfbGVuLAotICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSApLAotICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAotICAgICAgICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZiggbG9uZyApLAotICAgICAgICAgICAgICAgICAgIEFTTl9JTlRFR0VSLCBXQVRDSEVSX0ZJWEVEX1NJWkUgKSk7CisgICAgcmV0dXJuIHJlZ2lzdGVyX3NjYWxhcl93YXRjaGVyKAorICAgICAgICBuYW1lLCByZWdfb2lkLCByZWdfb2lkX2xlbiwKKyAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKCBsb25nICksCisgICAgICAgIEFTTl9JTlRFR0VSLCBzdWJoYW5kbGVyLCBIQU5ETEVSX0NBTl9SV1JJVEUpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfV0FUQ0hFUl9MT05HX1NDQUxBUiAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfV0FUQ0hFUl9SRUFEX09OTFlfTE9OR19TQ0FMQVIKIGludAogbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfbG9uZ19zY2FsYXIoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcigKLSAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAotICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgcmVnX29pZCwgcmVnX29pZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkgKSwKLSAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKLSAgICAgICAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YoIGxvbmcgKSwKLSAgICAgICAgICAgICAgICAgICBBU05fSU5URUdFUiwgV0FUQ0hFUl9GSVhFRF9TSVpFICkpOworICAgIHJldHVybiByZWdpc3Rlcl9zY2FsYXJfd2F0Y2hlcigKKyAgICAgICAgbmFtZSwgcmVnX29pZCwgcmVnX29pZF9sZW4sCisgICAgICAgICh2b2lkICopaXQsIHNpemVvZiggbG9uZyApLAorICAgICAgICBBU05fSU5URUdFUiwgc3ViaGFuZGxlciwgSEFORExFUl9DQU5fUk9OTFkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfV0FUQ0hFUl9SRUFEX09OTFlfTE9OR19TQ0FMQVIgKi8KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfV0FUQ0hFUl9JTlRfU0NBTEFSCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfaW50X3NjYWxhcihjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICogaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIoCi0gICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKLSAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgIHJlZ19vaWQsIHJlZ19vaWRfbGVuLAotICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSApLAotICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAotICAgICAgICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZiggaW50ICksCi0gICAgICAgICAgICAgICAgICAgQVNOX0lOVEVHRVIsIFdBVENIRVJfRklYRURfU0laRSApKTsKKyAgICByZXR1cm4gcmVnaXN0ZXJfc2NhbGFyX3dhdGNoZXIoCisgICAgICAgIG5hbWUsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLAorICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YoIGludCApLAorICAgICAgICBBU05fSU5URUdFUiwgc3ViaGFuZGxlciwgSEFORExFUl9DQU5fUldSSVRFKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1dBVENIRVJfSU5UX1NDQUxBUiAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfV0FUQ0hFUl9SRUFEX09OTFlfSU5UX1NDQUxBUgogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9pbnRfc2NhbGFyKGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcigKLSAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAotICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgcmVnX29pZCwgcmVnX29pZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkgKSwKLSAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKLSAgICAgICAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YoIGludCApLAotICAgICAgICAgICAgICAgICAgIEFTTl9JTlRFR0VSLCBXQVRDSEVSX0ZJWEVEX1NJWkUgKSk7CisgICAgcmV0dXJuIHJlZ2lzdGVyX3NjYWxhcl93YXRjaGVyKAorICAgICAgICBuYW1lLCByZWdfb2lkLCByZWdfb2lkX2xlbiwKKyAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKCBpbnQgKSwKKyAgICAgICAgQVNOX0lOVEVHRVIsIHN1YmhhbmRsZXIsIEhBTkRMRVJfQ0FOX1JPTkxZKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1dBVENIRVJfUkVBRF9PTkxZX0lOVF9TQ0FMQVIgKi8KIAotCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVBRF9PTkxZX0NPVU5URVIzMl9TQ0FMQVIKIGludAogbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfY291bnRlcjMyX3NjYWxhcihjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIoCi0gICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKLSAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgIHJlZ19vaWQsIHJlZ19vaWRfbGVuLAotICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZICksCi0gICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCi0gICAgICAgICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKCB1X2xvbmcgKSwKLSAgICAgICAgICAgICAgICAgICBBU05fQ09VTlRFUiwgV0FUQ0hFUl9GSVhFRF9TSVpFICkpOworICAgIHJldHVybiByZWdpc3Rlcl9zY2FsYXJfd2F0Y2hlcigKKyAgICAgICAgbmFtZSwgcmVnX29pZCwgcmVnX29pZF9sZW4sCisgICAgICAgICh2b2lkICopaXQsIHNpemVvZiggdV9sb25nICksCisgICAgICAgIEFTTl9DT1VOVEVSLCBzdWJoYW5kbGVyLCBIQU5ETEVSX0NBTl9ST05MWSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUFEX09OTFlfQ09VTlRFUjMyX1NDQUxBUiAqLwogLyoqICBAfSAqLwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQgYi9hZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQKaW5kZXggMTczNjY3MC4uY2VlNzI2ZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kCisrKyBiL2FnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZApAQCAtNCw3ICs0LDYgQEAKIC4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIApAQCAtMzEsMTMgKzMwLDEzIEBACiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTExNSw2ICsxMTQsNyBAQAogLi9oZWFkZXJfY29tcGxleC5sbzogaGVhZGVyX2NvbXBsZXguaAogLi9rZXJuZWxfc3Vub3M1LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCkBAIC0xNDEsNyArMTQxLDYgQEAKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTIyMyw2ICsyMjIsNyBAQAogLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi90ZXN0aGFuZGxlci5sbzogdGVzdGhhbmRsZXIuaAogLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdXRpbF9mdW5jcy5sbzogIC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCkBAIC0yNDksNyArMjQ5LDYgQEAKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMzI5LDEzICszMjgsMTQgQEAKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaCBzdHJ1Y3QuaAotLi91dGlsX2Z1bmNzLmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9FeGl0LmggdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCi0uL3V0aWxfZnVuY3MubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIHV0aWxfZnVuY3MvcmVzdGFydC5oCisuL3V0aWxfZnVuY3MubG86IHV0aWxfZnVuY3MuaCB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKKy4vdXRpbF9mdW5jcy5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKIC4vdXRpbF9mdW5jcy5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oIHV0aWxpdGllcy9leGVjdXRlLmgKLS4vdXRpbF9mdW5jcy5sbzogdWNkLXNubXAvZXJyb3JtaWIuaCBtaWJkZWZzLmgKIC4vd2luRXh0RExMLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3dpbkV4dERMTC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3dpbkV4dERMTC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKQEAgLTM2Miw3ICszNjIsNiBAQAogLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTQ0Niw2ICs0NDUsNyBAQAogLi9hZ2VudC9leHRlbmQubG86IGFnZW50L2V4dGVuZC5oIHV0aWxpdGllcy9leGVjdXRlLmggc3RydWN0LmgKIC4vYWdlbnQvZXh0ZW5kLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCBtaWJkZWZzLmgKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCkBAIC00NzIsNyArNDcyLDYgQEAKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtNTgwLDEzICs1NzksMTMgQEAKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTY2Miw2ICs2NjEsNyBAQAogLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL2FnZW50L25zRGVidWcubG86ICBhZ2VudC9uc0RlYnVnLmgKIC4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIApAQCAtNjg4LDcgKzY4OCw2IEBACiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtNzcwLDYgKzc2OSw3IEBACiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9hZ2VudC9uc0xvZ2dpbmcubG86ICBhZ2VudC9uc0xvZ2dpbmcuaAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtNzk2LDcgKzc5Niw2IEBACiAuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTg3OCw2ICs4NzcsNyBAQAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4vYWdlbnQvbnNNb2R1bGVUYWJsZS5oCiAuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtOTA0LDcgKzkwNCw2IEBACiAuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtOTg2LDYgKzk4NSw3IEBACiAuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmgKIC4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTAxMiw3ICsxMDEyLDYgQEAKIC4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTEwOTQsNiArMTA5Myw3IEBACiAuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmgKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTEyMCw3ICsxMTIwLDYgQEAKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTEyMDMsNiArMTIwMiw3IEBACiAuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9hZ2VudC9zbm1wZC5oIGFnZW50eC9hZ2VudHhfY29uZmlnLmgKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IGFnZW50eC9wcm90b2NvbC5oCiAuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIApAQCAtMTIyOSw3ICsxMjI5LDYgQEAKIC4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMTMxMiw2ICsxMzExLDcgQEAKIC4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9pbmRleC5oCiAuL2FnZW50eC9jbGllbnQubG86IGFnZW50eC9wcm90b2NvbC5oIGFnZW50eC9jbGllbnQuaCBhZ2VudHgvc3ViYWdlbnQuaAogLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTMzOCw3ICsxMzM4LDYgQEAKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMTQyNCw2ICsxNDIzLDcgQEAKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9zeXNPUlRhYmxlLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi9hZ2VudHgvbWFzdGVyLmgKIC4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCkBAIC0xNDUwLDcgKzE0NTAsNiBAQAogLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC0xNTU5LDEzICsxNTU4LDEzIEBACiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTYwNCw2ICsxNjAzLDcgQEAKIC4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogYWdlbnR4L3Byb3RvY29sLmgKIC4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIApAQCAtMTYzMCw3ICsxNjMwLDYgQEAKIC4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC0xNzE2LDcgKzE3MTUsMTE2IEBACiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmgKIC4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3N5c09SVGFibGUuaAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4vYWdlbnR4L3N1YmFnZW50LmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaAogLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xNzQzLDcgKzE4NTEsNiBAQAogLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMTgyNSw2ICsxOTMyLDcgQEAKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuaAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xODUxLDcgKzE5NTksNiBAQAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMTkzNiw2ICsyMDQzLDcgQEAKIC4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuaAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmgKIC4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTE5NjIsNyArMjA3MCw2IEBACiAuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTIwNzEsMTMgKzIxNzgsMTMgQEAKIC4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMjE4MSwxMyArMjI4OCwxMyBAQAogLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTIyOTEsMTMgKzIzOTgsMTMgQEAKIC4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTIzNzUsNiArMjQ4Miw3IEBACiAuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0yNDAxLDcgKzI1MDksNiBAQAogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC0yNTE1LDEzICsyNjIyLDEzIEBACiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0yNjI1LDEzICsyNzMyLDEzIEBACiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTI3MzIsMTMgKzI4MzksMTMgQEAKIC4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTI4NDAsMTMgKzI5NDcsMTMgQEAKIC4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTI5NDgsMTMgKzMwNTUsMTMgQEAKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zMDMxLDYgKzMxMzgsNyBAQAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2VudW1zLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMzA1Nyw3ICszMTY1LDYgQEAKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTMxNDMsNiArMzI1MCw3IEBACiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMzE2OSw3ICszMjc3LDYgQEAKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTMyNDIsMTMgKzMzNDksMTMgQEAKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMzMxNCwxMyArMzQyMSwxMyBAQAogLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTMzOTYsNiArMzUwMyw3IEBACiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IG5vdGlmaWNhdGlvbi5oCiAuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0zNDIyLDcgKzM1MzAsNiBAQAogLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC0zNTI5LDEzICszNjM2LDEzIEBACiAuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zNjM4LDEzICszNzQ1LDEzIEBACiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zNzQ2LDEzICszODUzLDEzIEBACiAuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTM4MjMsMTMgKzM5MzAsMTMgQEAKIC4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zODc1LDYgKzM5ODIsNyBAQAogLi9ob3N0L2hyX2Rpc2subG86IC4vaG9zdC9ocl9kaXNrLmggCiAuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCiAuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKQEAgLTM5MDEsNyArNDAwOSw2IEBACiAuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMzk4NSw2ICs0MDkyLDcgQEAKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiBob3N0X3Jlcy5oIC4vaG9zdC9ocl9maWxlc3lzLmggLi9ob3N0L2hyX3N0b3JhZ2UuaAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4vaG9zdC9ocl9kaXNrLmggCiAuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIApAQCAtNDAxMSw3ICs0MTE5LDYgQEAKIC4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtNDEyMiwxMyArNDIyOSwxMyBAQAogLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNDIwNyw2ICs0MzE0LDcgQEAKIC4vaG9zdC9ocmhfc3RvcmFnZS5sbzogaG9zdF9yZXMuaCAuL2hvc3QvaHJoX2ZpbGVzeXMuaCAuL2hvc3QvaHJoX3N0b3JhZ2UuaAogLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuL2hvc3QvaHJfZGlzay5oIAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCkBAIC00MjMzLDcgKzQzNDEsNiBAQAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTQzNDMsMTMgKzQ0NTAsMTMgQEAKIC4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTQ0MjEsMTMgKzQ1MjgsMTMgQEAKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNDUwMCwxMyArNDYwNywxMyBAQAogLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNDU0OSw5ICs0NjU2LDkgQEAKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKLS4vaG9zdC9ocl9wcmludC5sbzogLi9ob3N0L2hyX3ByaW50Lmggc3RydWN0LmggdXRpbF9mdW5jcy5oIHV0aWxfZnVuY3MvRXhpdC5oCisuL2hvc3QvaHJfcHJpbnQubG86IC4vaG9zdC9ocl9wcmludC5oIHN0cnVjdC5oIHV0aWxfZnVuY3MuaAogLi9ob3N0L2hyX3ByaW50LmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKLS4vaG9zdC9ocl9wcmludC5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggdXRpbF9mdW5jcy9yZXN0YXJ0LmgKKy4vaG9zdC9ocl9wcmludC5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKIC4vaG9zdC9ocl9wcmludC5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCiAuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaApAQCAtNDU4MCwxMyArNDY4NywxMyBAQAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTQ2OTIsMTMgKzQ3OTksMTMgQEAKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC00ODAyLDEzICs0OTA5LDEzIEBACiAuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTQ4ODUsNiArNDk5Miw3IEBACiAuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N3aW5zdC5oCiAuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmgKIC4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9ob3N0L2hyX3N3aW5zdC5sbzogICBob3N0X3Jlcy5oCiAuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaApAQCAtNDkxMiw3ICs1MDIwLDYgQEAKIC4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTQ5ODYsMTMgKzUwOTMsMTMgQEAKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTUwNjksMTMgKzUxNzYsMTMgQEAKIC4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC01MTc5LDEzICs1Mjg2LDEzIEBACiAuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTUyNjIsNiArNTM2OSw3IEBACiAuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmgKIC4vaG9zdC9oclNXUnVuVGFibGUubG86IC4vaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5oIC4vaG9zdC9oclNXUnVuVGFibGUuaAogLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIApAQCAtNTI4OCw3ICs1Mzk2LDYgQEAKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTUzNzEsNiArNTQ3OCw3IEBACiAuL2hvc3QvaHJfc3lzdGVtLmxvOiBob3N0X3Jlcy5oIC4vaG9zdC9ocl9zeXN0ZW0uaAogLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hdXRvX25saXN0LmgKIC4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtNTM5Nyw3ICs1NTA1LDYgQEAKIC4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTU1MDgsMTMgKzU2MTUsMTMgQEAKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNTYyMCwxMyArNTcyNywxMyBAQAogLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNTcwNSw2ICs1ODEyLDcgQEAKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAogLi9taWJJSS9pY21wLmxvOiB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmggLi9taWJJSS9pY21wLmgKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogIC4uLy4uL2FnZW50L2tlcm5lbC5oCiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKQEAgLTU3MzIsNyArNTg0MCw2IEBACiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTU4MTksNiArNTkyNiw3IEBACiAuL21pYklJL2ludGVyZmFjZXMubG86IC4vbWliSUkvaW50ZXJmYWNlcy5oIHN0cnVjdC5oCiAuL21pYklJL2ludGVyZmFjZXMubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAogLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvaXBBZGRyLmxvOiAgLi4vLi4vYWdlbnQva2VybmVsLmgKIC4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKQEAgLTU4NDYsNyArNTk1NCw2IEBACiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtNTk1OSwxMyArNjA2NiwxMyBAQAogLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC02MDczLDEzICs2MTgwLDEzIEBACiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTYxNTYsNiArNjI2Myw3IEBACiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9lbnVtcy5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4vbWliSUkvcm91dGVfaGVhZGVycy5oIAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCkBAIC02MTgzLDcgKzYyOTEsNiBAQAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC02Mjk2LDEzICs2NDAzLDEzIEBACiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC02MzQyLDYgKzY0NDksNyBAQAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfZW51bXMuaAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWliSUkvaXB2Ni5sbzogIC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTYzNjgsNyArNjQ3Niw2IEBACiAuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTY0NTIsNiArNjU1OSw3IEBACiAuL21pYklJL2lwdjYubG86IC4uLy4uL2FnZW50L2tlcm5lbC5oIC4vbWliSUkvaXB2Ni5oIC4vbWliSUkvdmFyX3JvdXRlLmgKIC4vbWliSUkvaXB2Ni5sbzogLi9taWJJSS9yb3V0ZV93cml0ZS5oIC4vbWliSUkvYXQuaCAuL21pYklJL2ludGVyZmFjZXMuaAogLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTY0NzgsNyArNjU4Niw2IEBACiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtNjU4NiwxMyArNjY5MywxMyBAQAogLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNjY5NCwxMyArNjgwMSwxMyBAQAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTY4MDIsMTMgKzY5MDksMTMgQEAKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNjg4NSw2ICs2OTkyLDcgQEAKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4vbWliSUkvaXAuaCAuL21pYklJL3Zhcl9yb3V0ZS5oCiAuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuL21pYklJL3JvdXRlX3dyaXRlLmggLi9taWJJSS9hdC5oCiAuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTY5MTEsNyArNzAxOSw2IEBACiAuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC02OTkzLDYgKzcxMDAsNyBAQAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi9taWJJSS9zZXRTZXJpYWxOby5oCiAuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtNzAxOSw3ICs3MTI3LDYgQEAKIC4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC03MTAzLDYgKzcyMTAsNyBAQAogLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKIC4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuL21pYklJL3NubXBfbWliXzVfNS5oIC4vbWliSUkvdXBkYXRlcy5oCiAuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCkBAIC03MTI5LDcgKzcyMzcsNiBAQAogLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtNzIzOSwxMyArNzM0NiwxMyBAQAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNzMyNCw2ICs3NDMxLDcgQEAKIC4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuL21pYklJL3N5c09SVGFibGUuaAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKQEAgLTczNTAsNyArNzQ1OCw2IEBACiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTc0MzIsMTIgKzc1MzksMTIgQEAKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oCi0uL21pYklJL3N5c3RlbV9taWIubG86IHV0aWxfZnVuY3MuaCB1dGlsX2Z1bmNzL0V4aXQuaAotLi9taWJJSS9zeXN0ZW1fbWliLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggdXRpbF9mdW5jcy9yZXN0YXJ0LmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogc3RydWN0LmggdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCisuL21pYklJL3N5c3RlbV9taWIubG86IHV0aWxfZnVuY3MuaCB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggc3RydWN0LmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCiAuL21pYklJL3N5c3RlbV9taWIubG86IC4vbWliSUkvc3lzdGVtX21pYi5oIC4vbWliSUkvdXBkYXRlcy5oCiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJJSS90Y3AubG86IC4vbWliSUkvbWliSUlfY29tbW9uLmggCiAuL21pYklJL3RjcC5sbzogIC4uLy4uL2FnZW50L2tlcm5lbC5oCiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCkBAIC03NDY2LDcgKzc1NzMsNiBAQAogLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTc1NTIsNiArNzY1OCw3IEBACiAuL21pYklJL3RjcC5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oIC4vbWliSUkvdGNwLmgKIC4vbWliSUkvdGNwLmxvOiAuL21pYklJL3RjcFRhYmxlLmgKIC4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJJSS90Y3BUYWJsZS5sbzogLi9taWJJSS9taWJJSV9jb21tb24uaCAKIC4vbWliSUkvdGNwVGFibGUubG86ICAuLi8uLi9hZ2VudC9rZXJuZWwuaAogLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCkBAIC03NTgwLDcgKzc2ODcsNiBAQAogLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtNzY5MSwxMyArNzc5NywxMyBAQAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTc4MDUsMTMgKzc5MTEsMTMgQEAKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNzkxNCwxMyArODAyMCwxMyBAQAogLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtODAyMSwxMyArODEyNywxMyBAQAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTgxMzAsMTMgKzgyMzYsMTMgQEAKIC4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC04MjM4LDEzICs4MzQ0LDEzIEBACiAuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtODMyMiw2ICs4NDI4LDcgQEAKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4vbWliSUkvdmFjbV92YXJzLmggdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCiAuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJJSS92YXJfcm91dGUubG86IC4vbWliSUkvcm91dGVfaGVhZGVycy5oIAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaApAQCAtODM0OSw3ICs4NDU2LDYgQEAKIC4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC04NDYxLDEzICs4NTY3LDEzIEBACiAuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtODU0Myw2ICs4NjQ5LDcgQEAKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL21pc2MvaXBmd2FjYy5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggLi9taXNjL2lwZndhY2MuaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtODU2OSw3ICs4Njc2LDYgQEAKIC4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtODY1Myw2ICs4NzU5LDcgQEAKIC4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC04Njc5LDcgKzg3ODYsNiBAQAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtODc2Miw2ICs4ODY4LDcgQEAKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IGhlYWRlcl9jb21wbGV4LmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtODc4OCw3ICs4ODk1LDYgQEAKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtODkwOSwxMyArOTAxNSwxMyBAQAogLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC05MDE3LDEzICs5MTIzLDEzIEBACiAuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC05MDk5LDYgKzkyMDUsNyBAQAogLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL1Jtb24vYWxhcm0ubG86IC4vUm1vbi9hbGFybS5oIC4vUm1vbi9hZ3V0aWxfYXBpLmggLi9SbW9uL3Jvd19hcGkuaAogLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCkBAIC05MTI1LDcgKzkyMzIsNiBAQAogLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTkyMDYsNyArOTMxMiw4IEBACiAuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vUm1vbi9hbGFybVRhYmxlLmxvOiB1dGlsaXRpZXMvaXF1ZXJ5LmggLi9SbW9uL2FsYXJtVGFibGUuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oIAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vUm1vbi9ldmVudC5sbzogIC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCkBAIC05MjMzLDcgKzkzNDAsNiBAQAogLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC05MzQxLDEzICs5NDQ3LDEzIEBACiAuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtOTQ0OSwxMyArOTU1NSwxMyBAQAogLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTk1NTcsMTMgKzk2NjMsMTMgQEAKIC4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC05NjY2LDEzICs5NzcyLDEzIEBACiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTk3NzUsMTMgKzk4ODEsMTMgQEAKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC05ODg0LDEzICs5OTkwLDEzIEBACiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTk5OTMsMTMgKzEwMDk5LDEzIEBACiAuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTAxMDIsMTMgKzEwMjA4LDEzIEBACiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTEwMjExLDEzICsxMDMxNywxMyBAQAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTEwMzIwLDEzICsxMDQyNiwxMyBAQAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTA0MjksMTMgKzEwNTM1LDEzIEBACiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMDUzOCwxMyArMTA2NDQsMTMgQEAKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTA2NDcsMTMgKzEwNzUzLDEzIEBACiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTA3NTUsMTMgKzEwODYxLDEzIEBACiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMDg2MywxMyArMTA5NjksMTMgQEAKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTA5NzEsMTMgKzExMDc3LDEzIEBACiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTExMDU0LDYgKzExMTYwLDcgQEAKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IGtlcm5lbF9zdW5vczUuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xMTA4MCw3ICsxMTE4Nyw2IEBACiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC0xMTE5NiwxMyArMTEzMDIsMTMgQEAKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMTI4MCwxMCArMTEzODYsOCBAQAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24uaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9FeGl0LmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IHV0aWxfZnVuY3MvcmVzdGFydC5oIHN0cnVjdC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogdXRpbF9mdW5jcy5oIHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIHN0cnVjdC5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCkBAIC0xMTMxMiwxMyArMTE0MTYsMTMgQEAKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTExNDI0LDEzICsxMTUyOCwxMyBAQAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTE1MDgsMTMgKzExNjEyLDEyIEBACiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24uaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9FeGl0LmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IHV0aWxfZnVuY3MvcmVzdGFydC5oIHN0cnVjdC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IHV0aWxfZnVuY3MuaCB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggc3RydWN0LmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IGtlcm5lbF9zdW5vczUuaAogLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc211eC9zbXV4LmxvOiAgLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIApAQCAtMTE1NDEsNyArMTE2NDQsNiBAQAogLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTExNjQ5LDEzICsxMTc1MSwxMyBAQAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTE3NTcsMTMgKzExODU5LDEzIEBACiAuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTExODY1LDEzICsxMTk2NywxMyBAQAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMTk0Nyw2ICsxMjA0OSw3IEBACiAuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oIHNtdXguaAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi9zbXV4L3NubXBfcmlwMi5oCiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTExOTczLDcgKzEyMDc2LDYgQEAKIC4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTEyMDU3LDYgKzEyMTU5LDcgQEAKIC4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKIC4vc25tcHYzL3NubXBFbmdpbmUubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCAuL3NubXB2My9zbm1wRW5naW5lLmgKIC4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTIwODMsNyArMTIxODYsNiBAQAogLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMTIxOTMsMTMgKzEyMjk1LDEzIEBACiAuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMjMwMywxMyArMTI0MDUsMTMgQEAKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTIzODQsNiArMTI0ODYsNyBAQAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTI0MTAsNyArMTI1MTMsNiBAQAogLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC0xMjUyMCwxMyArMTI2MjIsMTMgQEAKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMjYwNCw2ICsxMjcwNiw3IEBACiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAogLi9zbm1wdjMvdXNtU3RhdHMubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCAuL3NubXB2My91c21TdGF0cy5oCiAuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCkBAIC0xMjYzMCw3ICsxMjczMyw2IEBACiAuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC0xMjczOCwxMyArMTI4NDAsMTMgQEAKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTI4NDcsMTMgKzEyOTQ5LDEzIEBACiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMjkyOSw2ICsxMzAzMSw3IEBACiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmgKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCkBAIC0xMjk1NSw3ICsxMzA1OCw2IEBACiAuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTEzMDM4LDYgKzEzMTQwLDcgQEAKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5oCiAuL3RhcmdldC90YXJnZXQubG86IC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5oIHRhcmdldC5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTEzMDY0LDcgKzEzMTY3LDYgQEAKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTEzMTcyLDEzICsxMzI3NCwxMyBAQAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTMyODAsMTMgKzEzMzgyLDEzIEBACiAuL3RzbS1taWIvc25tcFRzbUNvbmZpZ3VyYXRpb25Vc2VQcmVmaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdHNtLW1pYi9zbm1wVHNtQ29uZmlndXJhdGlvblVzZVByZWZpeC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdHNtLW1pYi9zbm1wVHNtQ29uZmlndXJhdGlvblVzZVByZWZpeC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3RzbS1taWIvc25tcFRzbUNvbmZpZ3VyYXRpb25Vc2VQcmVmaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RzbS1taWIvc25tcFRzbUNvbmZpZ3VyYXRpb25Vc2VQcmVmaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdHNtLW1pYi9zbm1wVHNtQ29uZmlndXJhdGlvblVzZVByZWZpeC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi90c20tbWliL3NubXBUc21Db25maWd1cmF0aW9uVXNlUHJlZml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vdHNtLW1pYi9zbm1wVHNtQ29uZmlndXJhdGlvblVzZVByZWZpeC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdHNtLW1pYi9zbm1wVHNtQ29uZmlndXJhdGlvblVzZVByZWZpeC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdHNtLW1pYi9zbm1wVHNtQ29uZmlndXJhdGlvblVzZVByZWZpeC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RzbS1taWIvc25tcFRzbUNvbmZpZ3VyYXRpb25Vc2VQcmVmaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90c20tbWliL3NubXBUc21Db25maWd1cmF0aW9uVXNlUHJlZml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdHNtLW1pYi9zbm1wVHNtQ29uZmlndXJhdGlvblVzZVByZWZpeC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi90c20tbWliL3NubXBUc21Db25maWd1cmF0aW9uVXNlUHJlZml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMzM4OCwxMyArMTM0OTAsMTMgQEAKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTEzNTA0LDEzICsxMzYwNiwxMyBAQAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTM1ODYsNyArMTM2ODgsNyBAQAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oIHN0cnVjdC5oCiAuL3VjZC1zbm1wL2Rpc2subG86IC4vdWNkLXNubXAvZGlzay5oIG1pYmRlZnMuaAotLi91Y2Qtc25tcC9kaXNrLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCAuL3VjZC1zbm1wL2Vycm9ybWliLmgKKy4vdWNkLXNubXAvZGlzay5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKIC4vdWNkLXNubXAvZGlza19ody5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91Y2Qtc25tcC9kaXNrX2h3LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvZGlza19ody5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCkBAIC0xMzYxNCwxMyArMTM3MTYsMTMgQEAKIC4vdWNkLXNubXAvZGlza19ody5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi91Y2Qtc25tcC9kaXNrX2h3LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9kaXNrX2h3LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdWNkLXNubXAvZGlza19ody5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvZGlza19ody5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91Y2Qtc25tcC9kaXNrX2h3LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3VjZC1zbm1wL2Rpc2tfaHcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi91Y2Qtc25tcC9kaXNrX2h3LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9kaXNrX2h3LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91Y2Qtc25tcC9kaXNrX2h3LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvZGlza19ody5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL2Rpc2tfaHcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91Y2Qtc25tcC9kaXNrX2h3LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL2Rpc2tfaHcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTEzNjk2LDcgKzEzNzk4LDcgQEAKIC4vdWNkLXNubXAvZGlza19ody5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi91Y2Qtc25tcC9kaXNrX2h3LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2ZzeXMuaCBzdHJ1Y3QuaAogLi91Y2Qtc25tcC9kaXNrX2h3LmxvOiAuL3VjZC1zbm1wL2Rpc2suaCBtaWJkZWZzLmgKLS4vdWNkLXNubXAvZGlza19ody5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggLi91Y2Qtc25tcC9lcnJvcm1pYi5oCisuL3VjZC1zbm1wL2Rpc2tfaHcubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaApAQCAtMTM3MjQsMTMgKzEzODI2LDEzIEBACiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTM4MDYsNiArMTM5MDgsNyBAQAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vdWNkLXNubXAvZGlza2lvLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCAuL3VjZC1zbm1wL2Rpc2tpby5oCiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCkBAIC0xMzgzMiw3ICsxMzkzNSw2IEBACiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC0xMzkxMiwxMCArMTQwMTQsNiBAQAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCi0uL3VjZC1zbm1wL2RsbW9kLmxvOiBzdHJ1Y3QuaCB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9FeGl0LmgKLS4vdWNkLXNubXAvZGxtb2QubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggdXRpbF9mdW5jcy9yZXN0YXJ0LmgKLS4vdWNkLXNubXAvZGxtb2QubG86IHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi91Y2Qtc25tcC9kbG1vZC5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKQEAgLTEzOTQ0LDEzICsxNDA0MiwxMyBAQAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNDAyOCw2ICsxNDEyNiw3IEBACiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuL3VjZC1zbm1wL2Vycm9ybWliLmggbWliZGVmcy5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTE0MDU0LDcgKzE0MTUzLDYgQEAKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMTQxMzcsMTAgKzE0MjM1LDkgQEAKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hdXRvX25saXN0LmgKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiBzdHJ1Y3QuaCAuL3VjZC1zbm1wL2V4dGVuc2libGUuaCBtaWJkZWZzLmgKLS4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5oIHV0aWxfZnVuY3MvRXhpdC5oCisuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKLS4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogdXRpbF9mdW5jcy9yZXN0YXJ0LmgKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IHV0aWxpdGllcy9leGVjdXRlLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaApAQCAtMTQxNzAsMTMgKzE0MjY3LDEzIEBACiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNDI3OSwxMyArMTQzNzYsMTMgQEAKIC4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE0MzYxLDYgKzE0NDU4LDcgQEAKIC4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuL3VjZC1zbm1wL2hwdXguaCBtaWJkZWZzLmgKIC4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xNDM4Nyw3ICsxNDQ4NSw2IEBACiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMTQ0OTYsMTMgKzE0NTkzLDEzIEBACiAuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTQ2MDYsMTMgKzE0NzAzLDEzIEBACiAuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNDcxOCwxMyArMTQ4MTUsMTMgQEAKIC4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTQ4MjgsMTMgKzE0OTI1LDEzIEBACiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTQ5MzcsMTMgKzE1MDM0LDEzIEBACiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE1MDQ3LDEzICsxNTE0NCwxMyBAQAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE1MTU3LDEzICsxNTI1NCwxMyBAQAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE1MjM4LDEwICsxNTMzNSw4IEBACiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaAotLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IHV0aWxfZnVuY3MuaCB1dGlsX2Z1bmNzL0V4aXQuaAotLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAotLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCi0uL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogdXRpbF9mdW5jcy9yZXN0YXJ0Lmggc3RydWN0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggc3RydWN0LmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuL3VjZC1zbm1wL21lbW9yeS5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIuaCBtaWJkZWZzLmgKQEAgLTE1MjcyLDEzICsxNTM2NywxMyBAQAogLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNTM4MiwxMyArMTU0NzcsMTMgQEAKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTU0OTIsMTMgKzE1NTg3LDEzIEBACiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTU1NzcsNiArMTU2NzIsNyBAQAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4vdWNkLXNubXAvbWVtb3J5LmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5oIG1pYmRlZnMuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKQEAgLTE1NjAzLDcgKzE1Njk5LDYgQEAKIC4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMTU2ODUsOSArMTU3ODAsOCBAQAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL3VjZC1zbm1wL3Bhc3MubG86IHN0cnVjdC5oIC4vdWNkLXNubXAvcGFzcy5oIG1pYmRlZnMuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmggLi91Y2Qtc25tcC9leHRlbnNpYmxlLmgKLS4vdWNkLXNubXAvcGFzcy5sbzogdXRpbF9mdW5jcy5oIHV0aWxfZnVuY3MvRXhpdC5oCi0uL3VjZC1zbm1wL3Bhc3MubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAotLi91Y2Qtc25tcC9wYXNzLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCB1dGlsX2Z1bmNzL3Jlc3RhcnQuaAorLi91Y2Qtc25tcC9wYXNzLmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL3VjZC1zbm1wL3Bhc3MubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCiAuL3VjZC1zbm1wL3Bhc3MubG86IHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCkBAIC0xNTcxNiwxMyArMTU4MTAsMTMgQEAKIC4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTU3OTcsMTIgKzE1ODkxLDEyIEBACiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmgKLS4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IHV0aWxfZnVuY3MvRXhpdC5oIHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAotLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKLS4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IHV0aWxfZnVuY3MvcmVzdGFydC5oIHN0cnVjdC5oCisuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKKy4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIHN0cnVjdC5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgKIC4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4vdWNkLXNubXAvcGFzc19jb21tb24uaAogLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTE1ODI5LDcgKzE1OTIzLDYgQEAKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC0xNTkxMSwxMiArMTYwMDQsMTEgQEAKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogc3RydWN0LmggLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuaCBtaWJkZWZzLmgKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmggLi91Y2Qtc25tcC9leHRlbnNpYmxlLmgKLS4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9FeGl0LmgKLS4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKLS4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiB1dGlsX2Z1bmNzL3Jlc3RhcnQuaAogLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKQEAgLTE1OTQzLDcgKzE2MDM1LDYgQEAKIC4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMTYwMjMsMTMgKzE2MTE0LDEyIEBACiAuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKLS4vdWNkLXNubXAvcHJvYy5sbzogc3RydWN0LmggLi91Y2Qtc25tcC9wcm9jLmggbWliZGVmcy5oCi0uL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dydW4uaAotLi91Y2Qtc25tcC9wcm9jLmxvOiAuL3VjZC1zbm1wL2Vycm9ybWliLmggdXRpbF9mdW5jcy5oIHV0aWxfZnVuY3MvRXhpdC5oCisuL3VjZC1zbm1wL3Byb2MubG86IHN0cnVjdC5oIC4vdWNkLXNubXAvcHJvYy5oIG1pYmRlZnMuaCB1dGlsX2Z1bmNzLmgKIC4vdWNkLXNubXAvcHJvYy5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCi0uL3VjZC1zbm1wL3Byb2MubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIHV0aWxfZnVuY3MvcmVzdGFydC5oCisuL3VjZC1zbm1wL3Byb2MubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCiAuL3VjZC1zbm1wL3Byb2MubG86IHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaCAuLi8uLi9hZ2VudC9rZXJuZWwuaAogLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIApAQCAtMTYwNTYsNyArMTYxNDYsNiBAQAogLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMTYxMzgsNiArMTYyMjcsNyBAQAogLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi91Y2Qtc25tcC9wcm94eS5sbzogLi91Y2Qtc25tcC9wcm94eS5oCiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTE2MTY0LDcgKzE2MjU0LDYgQEAKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTE2MjQ1LDEwICsxNjMzNCw4IEBACiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiBzdHJ1Y3QuaCAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmggbWliZGVmcy5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9FeGl0LmgKLS4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAotLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKLS4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IHV0aWxfZnVuY3MvcmVzdGFydC5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmggdXRpbF9mdW5jcy9yZXN0YXJ0LmgKKy4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IHV0aWxfZnVuY3MuaCB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKQEAgLTE2Mjc3LDEzICsxNjM2NCwxMyBAQAogLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNjM4NiwxMyArMTY0NzMsMTMgQEAKIC4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNjQ5NiwxMyArMTY1ODMsMTMgQEAKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNjYwNiwxMyArMTY2OTMsMTMgQEAKIC4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTY3MTYsMTMgKzE2ODAzLDEzIEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTY4MjUsMTMgKzE2OTEyLDEzIEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTY5MzYsMTMgKzE3MDIzLDEzIEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE3MDE5LDYgKzE3MTA2LDcgQEAKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IG1pYmRlZnMuaCB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4vdWNkLXNubXAvdm1zdGF0LmggLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTcwNDUsNyArMTcxMzMsNiBAQAogLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTE3MTU2LDEzICsxNzI0MywxMyBAQAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNzI2NiwxMyArMTczNTMsMTMgQEAKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNzM3NSwxMyArMTc0NjIsMTMgQEAKIC4vdXRpbF9mdW5jcy9FeGl0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3V0aWxfZnVuY3MvRXhpdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdXRpbF9mdW5jcy9FeGl0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdXRpbF9mdW5jcy9FeGl0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91dGlsX2Z1bmNzL0V4aXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdXRpbF9mdW5jcy9FeGl0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3V0aWxfZnVuY3MvRXhpdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3V0aWxfZnVuY3MvRXhpdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdXRpbF9mdW5jcy9FeGl0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91dGlsX2Z1bmNzL0V4aXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91dGlsX2Z1bmNzL0V4aXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91dGlsX2Z1bmNzL0V4aXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91dGlsX2Z1bmNzL0V4aXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdXRpbF9mdW5jcy9FeGl0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNzQxMSwxMyArMTc0OTgsMTMgQEAKIC4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTc0NTAsMTMgKzE3NTM3LDEzIEBACiAuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNzU1OCwxMyArMTc2NDUsMTMgQEAKIC4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNzY2NiwxMyArMTc3NTMsMTMgQEAKIC4vdXRpbF9mdW5jcy9yZXN0YXJ0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3V0aWxfZnVuY3MvcmVzdGFydC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdXRpbF9mdW5jcy9yZXN0YXJ0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdXRpbF9mdW5jcy9yZXN0YXJ0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91dGlsX2Z1bmNzL3Jlc3RhcnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdXRpbF9mdW5jcy9yZXN0YXJ0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3V0aWxfZnVuY3MvcmVzdGFydC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3V0aWxfZnVuY3MvcmVzdGFydC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdXRpbF9mdW5jcy9yZXN0YXJ0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91dGlsX2Z1bmNzL3Jlc3RhcnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91dGlsX2Z1bmNzL3Jlc3RhcnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91dGlsX2Z1bmNzL3Jlc3RhcnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91dGlsX2Z1bmNzL3Jlc3RhcnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdXRpbF9mdW5jcy9yZXN0YXJ0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNzczNiwxMyArMTc4MjMsMTMgQEAKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTc4MTYsOCArMTc5MDMsMTAgQEAKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAotLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogdWNkLXNubXAvZXJyb3JtaWIuaCBtaWJkZWZzLmggc3RydWN0LmgKKy4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4vdWNkLXNubXAvZXJyb3JtaWIuaCBtaWJkZWZzLmggLi91dGlsaXRpZXMvZXhlY3V0ZS5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiBzdHJ1Y3QuaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKQEAgLTE3ODQ0LDcgKzE3OTMzLDYgQEAKIC4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMTc5NTIsMTMgKzE4MDQwLDEzIEBACiAuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuaW4gYi9hZ2VudC9taWJncm91cC9NYWtlZmlsZS5pbgppbmRleCBmNjQxYWI3Li4yMzQxYWI0IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9NYWtlZmlsZS5pbgorKysgYi9hZ2VudC9taWJncm91cC9NYWtlZmlsZS5pbgpAQCAtMSw0ICsxLDYgQEAKIHRvcF9idWlsZGRpcj0uLi8uLgorbXlzdWJkaXI9YWdlbnQvbWliZ3JvdXAKKwogIyBjdXJyZW50bHkgYXNzdW1lcyBnY2M6ICAgIChYWFg6IGZpeCB2aWEgY29uZmlndXJlIHRlc3RzKQogRExGTEFHUz0tZlBJQyAtc2hhcmVkCiAKQEAgLTE2LDYgKzE4LDggQEAKIAogT1RIRVJDTEVBTlRBUkdFVFM9QGRsbGNsZWFuc0AKIAorRkVBVFVSRUZJTEU9Li4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9mZWF0dXJlcy1taWJncm91cHMuaAorCiAjIE5lZWQgYSBzcGVjaWFsIC5jIC0+IC5vIGRlZmluaXRpb24gaGVyZSB0byBtYWtlIHN1cmUgd2UgcGxhY2UgdGhlCiAjIG9iamVjdCBmaWxlcyBpbiB0aGUgc3ViIGRpcmVjdG9yeS4KIApAQCAtMjUsMTAgKzI5LDEyIEBACiBAbWliX21vZHVsZV9saXN0X29ACiBAbWliX21vZHVsZV9saXN0X2xvQAogQG1pYl9tb2R1bGVfbGlzdF9jQAorQG1pYl9tb2R1bGVfbGlzdF9mdEAKIAotT0JKUyAgPSAkKG1pYl9tb2R1bGVfbGlzdF9vKQotTE9CSlMgPSAkKG1pYl9tb2R1bGVfbGlzdF9sbykKLVNSQ1MgID0gJChtaWJfbW9kdWxlX2xpc3RfYykKK09CSlMgICA9ICQobWliX21vZHVsZV9saXN0X28pCitMT0JKUyAgPSAkKG1pYl9tb2R1bGVfbGlzdF9sbykKK1NSQ1MgICA9ICQobWliX21vZHVsZV9saXN0X2MpCitGVE9CSlMgPSAkKG1pYl9tb2R1bGVfbGlzdF9mdCkKIAogYWxsOiBzdGFuZGFyZGFsbCAkKExPQkpTKQogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9SbW9uL2FsYXJtVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL1Jtb24vYWxhcm1UYWJsZS5jCmluZGV4IGM5YzJhZWEuLjYxODE2MjggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL1Jtb24vYWxhcm1UYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL1Jtb24vYWxhcm1UYWJsZS5jCkBAIC0xMCwxMSArMTAsMjIgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAidXRpbGl0aWVzL2lxdWVyeS5oIgogI2luY2x1ZGUgImFsYXJtVGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXF1ZXJ5KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocXVlcnlfc2V0X2RlZmF1bHRfc2Vzc2lvbikKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YV9leHRyYWN0X3RhYmxlKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhX2luc2VydF9yb3cpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpcXVlcnlfcGR1X3Nlc3Npb24pCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKIC8qKiBJbml0aWFsaXplcyB0aGUgYWxhcm1UYWJsZSBtb2R1bGUgKi8KIHZvaWQKIGluaXRfYWxhcm1UYWJsZSh2b2lkKQpAQCAtNjYsNyArNzcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGFsYXJtZWRfdmFyX2xlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyBzYW1wbGVfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyB0aGVfdGhyZXNob2xkLCBjaGFyICphbGFybV9kZXNjcik7CisgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgdGhlX3RocmVzaG9sZCwgY29uc3QgY2hhciAqYWxhcm1fZGVzY3IpOwogCiAjZGVmaW5lIEFMQVJNX1NUUjFfTEVOCTMyCiB0eXBlZGVmIGVudW0gewpAQCAtMTgwLDggKzE5MSw4IEBACiAgICAgICAgIHJldHVybiA7CiAgICAgfQogCi0gICAgREVCVUdNU0dUTCgoInJtb246YWxhcm1UYWJsZSIsICJhbGFybUluZGV4LiVkIGxhc3QgdmFsdWUgKCVkKVxuIiwgZW50cnktPmFsYXJtSW5kZXgsIGVudHJ5LT5sYXN0X2Fic192YWx1ZSkpOwotICAgIERFQlVHTVNHVEwoKCJybW9uOmFsYXJtVGFibGUiLCAiYWxhcm1JbmRleC4lZCBuZXdfdmFsdWUgKCVkKVxuIiwgZW50cnktPmFsYXJtSW5kZXgsIG5ld192YWx1ZSkpOworICAgIERFQlVHTVNHVEwoKCJybW9uOmFsYXJtVGFibGUiLCAiYWxhcm1JbmRleC4lbGQgbGFzdCB2YWx1ZSAoJWxkKVxuIiwgZW50cnktPmFsYXJtSW5kZXgsIGVudHJ5LT5sYXN0X2Fic192YWx1ZSkpOworICAgIERFQlVHTVNHVEwoKCJybW9uOmFsYXJtVGFibGUiLCAiYWxhcm1JbmRleC4lbGQgbmV3X3ZhbHVlICglbGQpXG4iLCBlbnRyeS0+YWxhcm1JbmRleCwgbmV3X3ZhbHVlKSk7CiAKICAgICBlbnRyeS0+YWxhcm1WYWx1ZSA9IChTQU1QTEVfVFlQRV9BQlNPTFVURSA9PSBlbnRyeS0+YWxhcm1TYW1wbGVUeXBlKSA/CiAgICAgICAgIG5ld192YWx1ZSA6IG5ld192YWx1ZSAtIGVudHJ5LT5sYXN0X2Fic192YWx1ZTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL1Jtb24vZXZlbnQuYyBiL2FnZW50L21pYmdyb3VwL1Jtb24vZXZlbnQuYwppbmRleCA4ZDJkNGExLi5iYjg3YmZlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9SbW9uL2V2ZW50LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9ldmVudC5jCkBAIC0xOSw2ICsxOSw3IEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2lmIEhBVkVfU1RETElCX0gKICNpbmNsdWRlIDxzdGRsaWIuaD4KQEAgLTQ5LDYgKzUwLDggQEAKICNpbmNsdWRlICJhZ3V0aWxfYXBpLmgiCiAjaW5jbHVkZSAicm93X2FwaS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzbnByaW50X29iamlkKQorCiAvKgogICogRmlsZSBzY29wZSBkZWZpbml0aW9ucyBzZWN0aW9uIAogICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9SbW9uL3Jvd19hcGkuaCBiL2FnZW50L21pYmdyb3VwL1Jtb24vcm93X2FwaS5oCmluZGV4IDJkM2M4MzIuLjlmNTc2YmUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL1Jtb24vcm93X2FwaS5oCisrKyBiL2FnZW50L21pYmdyb3VwL1Jtb24vcm93X2FwaS5oCkBAIC03OSw3ICs3OSw3IEBACiAgKiBBcGkgcHJvdG90eXBlcyAKICAqLwogdm9pZCAgICAgICAgICAgIFJPV0FQSV9pbml0X3RhYmxlKFRBQkxFX0RFRklOVElPTl9UICogdGFibGVfcHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgbWF4X251bWJlcl9vZl9lbnRyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVOVFJZX0NBTExCQUNLX1QgKiBDbGJrQ3JlYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVOVFJZX0NBTExCQUNLX1QgKiBDbGJrQ2xvbmUsCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9SbW9uL3Jvd3MuYyBiL2FnZW50L21pYmdyb3VwL1Jtb24vcm93cy5jCmluZGV4IDkyNGE5M2IuLmFjMjZlMzAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL1Jtb24vcm93cy5jCisrKyBiL2FnZW50L21pYmdyb3VwL1Jtb24vcm93cy5jCkBAIC0yNTUsNyArMjU1LDcgQEAKIAogdm9pZAogUk9XQVBJX2luaXRfdGFibGUoVEFCTEVfREVGSU5USU9OX1QgKiB0YWJsZV9wdHIsCi0gICAgICAgICAgICAgICAgICBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgIHVfbG9uZyBtYXhfbnVtYmVyX29mX2VudHJpZXMsCiAgICAgICAgICAgICAgICAgICBFTlRSWV9DQUxMQkFDS19UICogQ2xia0NyZWF0ZSwKICAgICAgICAgICAgICAgICAgIEVOVFJZX0NBTExCQUNLX1QgKiBDbGJrQ2xvbmUsCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYyBiL2FnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jCmluZGV4IDIzOWVlYjMuLjQ4Mzc5YTIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jCkBAIC0xLDUgKzEsNiBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oPgpAQCAtMTUsNiArMTYsMTIgQEAKICNkZWZpbmUgU0hFTExDT01NQU5EIDMKICNlbmRpZgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShleHRyYWN0X3RhYmxlX3Jvd19kYXRhKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfZGF0YV9kZWxldGVfdGFibGUpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaW5zZXJ0X3RhYmxlX3JvdykKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogb2lkICBuc19leHRlbmRfb2lkW10gICAgPSB7IDEsIDMsIDYsIDEsIDQsIDEsIDgwNzIsIDEsIDMsIDIgfTsKIG9pZCAgZXh0ZW5kX2NvdW50X29pZFtdID0geyAxLCAzLCA2LCAxLCA0LCAxLCA4MDcyLCAxLCAzLCAyLCAxIH07CiBvaWQgIGV4dGVuZF9jb25maWdfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDQsIDEsIDgwNzIsIDEsIDMsIDIsIDIgfTsKQEAgLTI3LDcgKzM0LDcgQEAKICAgICBzaXplX3QgICAgICAgICAgICAgIG9pZF9sZW47CiAgICAgbG9uZyAgICAgICAgICAgICAgICBudW1fZW50cmllczsKICAgICBuZXRzbm1wX2V4dGVuZCAgICAgKmVoZWFkOwotICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgICAgKnJlZ1szXTsKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICAgICpyZWdbNF07CiAgICAgc3RydWN0IGV4dGVuZF9yZWdpc3RyYXRpb25fYmxvY2tfcyAqbmV4dDsKIH0gZXh0ZW5kX3JlZ2lzdHJhdGlvbl9ibG9jazsKIGV4dGVuZF9yZWdpc3RyYXRpb25fYmxvY2sgKmVyZWdfaGVhZCA9IE5VTEw7CkBAIC01MCw2ICs1Nyw3IEBACiBXcml0ZU1ldGhvZCBmaXhFeGVjMkVycm9yOwogRmluZFZhck1ldGhvZCB2YXJfZXh0ZW5zaWJsZV9vbGQ7CiBvaWQgIG9sZF9leHRlbnNpYmxlX3ZhcmlhYmxlc19vaWRbXSA9IHsgTkVUU05NUF9VQ0RBVklTX01JQiwgTkVUU05NUF9TSEVMTE1JQk5VTSwgMSB9OworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIHN0cnVjdCB2YXJpYWJsZTIgb2xkX2V4dGVuc2libGVfdmFyaWFibGVzW10gPSB7CiAgICAge01JQklOREVYLCAgICAgQVNOX0lOVEVHRVIsICAgTkVUU05NUF9PTERBUElfUk9OTFksCiAgICAgIHZhcl9leHRlbnNpYmxlX29sZCwgMSwge01JQklOREVYfX0sCkBAIC02Niw2ICs3NCwyNCBAQAogICAgIHtFUlJPUkZJWENNRCwgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAogICAgICB2YXJfZXh0ZW5zaWJsZV9vbGQsIDEsIHtFUlJPUkZJWENNRH19CiB9OworI2Vsc2UgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworc3RydWN0IHZhcmlhYmxlMiBvbGRfZXh0ZW5zaWJsZV92YXJpYWJsZXNbXSA9IHsKKyAgICB7TUlCSU5ERVgsICAgICBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V4dGVuc2libGVfb2xkLCAxLCB7TUlCSU5ERVh9fSwKKyAgICB7RVJST1JOQU1FLCAgICBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V4dGVuc2libGVfb2xkLCAxLCB7RVJST1JOQU1FfX0sCisgICAge1NIRUxMQ09NTUFORCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9leHRlbnNpYmxlX29sZCwgMSwge1NIRUxMQ09NTUFORH19LAorICAgIHtFUlJPUkZMQUcsICAgIEFTTl9JTlRFR0VSLCAgIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXh0ZW5zaWJsZV9vbGQsIDEsIHtFUlJPUkZMQUd9fSwKKyAgICB7RVJST1JNU0csICAgICBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V4dGVuc2libGVfb2xkLCAxLCB7RVJST1JNU0d9fSwKKyAgICB7RVJST1JGSVgsICAgICBBU05fSU5URUdFUiwgIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXh0ZW5zaWJsZV9vbGQsIDEsIHtFUlJPUkZJWH19LAorICAgIHtFUlJPUkZJWENNRCwgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXh0ZW5zaWJsZV9vbGQsIDEsIHtFUlJPUkZJWENNRH19Cit9OworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICNlbmRpZgogCiAKQEAgLTk3LDcgKzEyMyw4IEBACiAgICAgbmV0c25tcF90YWJsZV9kYXRhICAgICAgICAgICAgICAgICpkaW5mbzsKICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICAgKnRpbmZvOwogICAgIG5ldHNubXBfd2F0Y2hlcl9pbmZvICAgICAgICAgICAgICAqd2luZm87Ci0gICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAgICpyZWc7CisgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAgICpyZWcgPSBOVUxMOworICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmM7CiAKICAgICBmb3IgKCBlcHRyPWVyZWdfaGVhZDsgZXB0cjsgZXB0cj1lcHRyLT5uZXh0ICkgewogICAgICAgICBpZiAoIXNubXBfb2lkX2NvbXBhcmUoIGJhc2UsIGxlbiwgZXB0ci0+cm9vdF9vaWQsIGVwdHItPm9pZF9sZW4pKQpAQCAtMTA1LDYgKzEzMiw4IEBACiAgICAgfQogICAgIGlmICghZXB0cikgewogICAgICAgICBlcHRyID0gU05NUF9NQUxMT0NfVFlQRURFRiggZXh0ZW5kX3JlZ2lzdHJhdGlvbl9ibG9jayApOworICAgICAgICBpZiAoIWVwdHIpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgZXB0ci0+cm9vdF9vaWQgPSBzbm1wX2R1cGxpY2F0ZV9vYmppZCggYmFzZSwgbGVuICk7CiAgICAgICAgIGVwdHItPm9pZF9sZW4gID0gbGVuOwogICAgICAgICBlcHRyLT5udW1fZW50cmllcyA9IDA7CkBAIC0xMjUsMTAgKzE1NCwyMCBAQAogICAgIHRpbmZvLT5taW5fY29sdW1uID0gQ09MVU1OX0VYVENGR19GSVJTVF9DT0xVTU47CiAgICAgdGluZm8tPm1heF9jb2x1bW4gPSBDT0xVTU5fRVhUQ0ZHX0xBU1RfQ09MVU1OOwogICAgIG9pZF9idWZbbGVuXSA9IDI7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIHJlZyAgID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCiAgICAgICAgICAgICAgICAgIm5zRXh0ZW5kQ29uZmlnVGFibGUiLCBoYW5kbGVfbnNFeHRlbmRDb25maWdUYWJsZSwgCiAgICAgICAgICAgICAgICAgb2lkX2J1ZiwgbGVuKzEsIEhBTkRMRVJfQ0FOX1JXUklURSk7Ci0gICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9kYXRhKCByZWcsIGRpbmZvLCB0aW5mbyApOworI2Vsc2UgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgIHJlZyAgID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgICAgICAgIm5zRXh0ZW5kQ29uZmlnVGFibGUiLCBoYW5kbGVfbnNFeHRlbmRDb25maWdUYWJsZSwgCisgICAgICAgICAgICAgICAgb2lkX2J1ZiwgbGVuKzEsIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgcmMgPSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2RhdGEoIHJlZywgZGluZm8sIHRpbmZvICk7CisgICAgaWYgKHJjICE9IFNOTVBFUlJfU1VDQ0VTUykgeworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorICAgIG5ldHNubXBfaGFuZGxlcl9vd25zX3RhYmxlX2luZm8ocmVnLT5oYW5kbGVyLT5uZXh0KTsKICAgICBlcHRyLT5yZWdbMF0gPSByZWc7CiAKICAgICAgICAgLyoKQEAgLTE0NSw3ICsxODQsMTAgQEAKICAgICByZWcgICA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAogICAgICAgICAgICAgICAgICJuc0V4dGVuZE91dDFUYWJsZSIsIGhhbmRsZV9uc0V4dGVuZE91dHB1dDFUYWJsZSwgCiAgICAgICAgICAgICAgICAgb2lkX2J1ZiwgbGVuKzEsIEhBTkRMRVJfQ0FOX1JPTkxZKTsKLSAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2RhdGEoIHJlZywgZGluZm8sIHRpbmZvICk7CisgICAgcmMgPSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2RhdGEoIHJlZywgZGluZm8sIHRpbmZvICk7CisgICAgaWYgKHJjICE9IFNOTVBFUlJfU1VDQ0VTUykKKyAgICAgICAgZ290byBiYWlsOworICAgIG5ldHNubXBfaGFuZGxlcl9vd25zX3RhYmxlX2luZm8ocmVnLT5oYW5kbGVyLT5uZXh0KTsKICAgICBlcHRyLT5yZWdbMV0gPSByZWc7CiAKICAgICAgICAgLyoKQEAgLTE2NCw3ICsyMDYsMTAgQEAKICAgICByZWcgICA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAogICAgICAgICAgICAgICAgICJuc0V4dGVuZE91dDJUYWJsZSIsIGhhbmRsZV9uc0V4dGVuZE91dHB1dDJUYWJsZSwgCiAgICAgICAgICAgICAgICAgb2lkX2J1ZiwgbGVuKzEsIEhBTkRMRVJfQ0FOX1JPTkxZKTsKLSAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlKCByZWcsIHRpbmZvICk7CisgICAgcmMgPSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlKCByZWcsIHRpbmZvICk7CisgICAgaWYgKHJjICE9IFNOTVBFUlJfU1VDQ0VTUykKKyAgICAgICAgZ290byBiYWlsOworICAgIG5ldHNubXBfaGFuZGxlcl9vd25zX3RhYmxlX2luZm8ocmVnLT5oYW5kbGVyLT5uZXh0KTsKICAgICBlcHRyLT5yZWdbMl0gPSByZWc7CiAKICAgICAgICAgLyoKQEAgLTE3Nyw5ICsyMjIsNDQgQEAKICAgICB3aW5mbyA9IG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKICAgICAgICAgICAgICAgICAmKGVwdHItPm51bV9lbnRyaWVzKSwgc2l6ZW9mKGVwdHItPm51bV9lbnRyaWVzKSwKICAgICAgICAgICAgICAgICBBU05fSU5URUdFUiwgV0FUQ0hFUl9GSVhFRF9TSVpFKTsKLSAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKCByZWcsIHdpbmZvICk7CisgICAgcmMgPSBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyMiggcmVnLCB3aW5mbyApOworICAgIGlmIChyYyAhPSBTTk1QRVJSX1NVQ0NFU1MpCisgICAgICAgIGdvdG8gYmFpbDsKKyAgICBlcHRyLT5yZWdbM10gPSByZWc7CiAKICAgICByZXR1cm4gZXB0cjsKKworYmFpbDoKKyAgICBpZiAoZXB0ci0+cmVnWzNdKQorICAgICAgICBuZXRzbm1wX3VucmVnaXN0ZXJfaGFuZGxlcihlcHRyLT5yZWdbM10pOworICAgIGlmIChlcHRyLT5yZWdbMl0pCisgICAgICAgIG5ldHNubXBfdW5yZWdpc3Rlcl9oYW5kbGVyKGVwdHItPnJlZ1syXSk7CisgICAgaWYgKGVwdHItPnJlZ1sxXSkKKyAgICAgICAgbmV0c25tcF91bnJlZ2lzdGVyX2hhbmRsZXIoZXB0ci0+cmVnWzFdKTsKKyAgICBpZiAoZXB0ci0+cmVnWzBdKQorICAgICAgICBuZXRzbm1wX3VucmVnaXN0ZXJfaGFuZGxlcihlcHRyLT5yZWdbMF0pOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgdm9pZAorX3VucmVnaXN0ZXJfZXh0ZW5kKGV4dGVuZF9yZWdpc3RyYXRpb25fYmxvY2sgKmVwdHIpCit7CisgICAgZXh0ZW5kX3JlZ2lzdHJhdGlvbl9ibG9jayAqcHJldjsKKworICAgIG5ldHNubXBfYXNzZXJ0KGVwdHIpOworICAgIGZvciAocHJldiA9IGVyZWdfaGVhZDsgcHJldiAmJiBwcmV2LT5uZXh0ICE9IGVwdHI7IHByZXYgPSBwcmV2LT5uZXh0KQorCTsKKyAgICBpZiAocHJldikgeworICAgICAgICBuZXRzbm1wX2Fzc2VydChlcHRyID09IHByZXYtPm5leHQpOworCXByZXYtPm5leHQgPSBlcHRyLT5uZXh0OworICAgIH0gZWxzZSB7CisgICAgICAgIG5ldHNubXBfYXNzZXJ0KGVwdHIgPT0gZXJlZ19oZWFkKTsKKwllcmVnX2hlYWQgPSBlcHRyLT5uZXh0OworICAgIH0KKworICAgIG5ldHNubXBfdGFibGVfZGF0YV9kZWxldGVfdGFibGUoZXB0ci0+ZGluZm8pOworICAgIGZyZWUoZXB0ci0+cm9vdF9vaWQpOworICAgIGZyZWUoZXB0cik7CiB9CiAKIGludApAQCAtMTkzLDYgKzI3Myw3IEBACiAgICAgICAgIG5ldHNubXBfdW5yZWdpc3Rlcl9oYW5kbGVyKCBlcHRyLT5yZWdbMF0gKTsKICAgICAgICAgbmV0c25tcF91bnJlZ2lzdGVyX2hhbmRsZXIoIGVwdHItPnJlZ1sxXSApOwogICAgICAgICBuZXRzbm1wX3VucmVnaXN0ZXJfaGFuZGxlciggZXB0ci0+cmVnWzJdICk7CisgICAgICAgIG5ldHNubXBfdW5yZWdpc3Rlcl9oYW5kbGVyKCBlcHRyLT5yZWdbM10gKTsKICAgICAgICAgU05NUF9GUkVFKGVwdHIpOwogICAgIH0KICAgICBlcmVnX2hlYWQgPSBOVUxMOwpAQCAtMjI0LDYgKzMwNSwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5kX2NsZWFyX2NhbGxiYWNrLCBOVUxMKTsKIH0KIAordm9pZAorc2h1dGRvd25fZXh0ZW5kKHZvaWQpCit7CisjaWZuZGVmIFVTSU5HX1VDRF9TTk1QX0VYVEVOU0lCTEVfTU9EVUxFCisgICAgZnJlZShjb21wYXRhYmlsaXR5X2VudHJpZXMpOworICAgIGNvbXBhdGFiaWxpdHlfZW50cmllcyA9IE5VTEw7CisjZW5kaWYKKyAgICB3aGlsZSAoZXJlZ19oZWFkKQorCV91bnJlZ2lzdGVyX2V4dGVuZChlcmVnX2hlYWQpOworfQorCiAgICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqCiAgICAgICAgICAqCiAgICAgICAgICAqICBDYWNoZWQtZGF0YSBob29rcwpAQCAtNDY1LDYgKzU1NywxMCBAQAogICAgIH0KIAogICAgIGVwdHIgICAgICA9IF9yZWdpc3Rlcl9leHRlbmQoIG9pZF9idWYsIG9pZF9sZW4gKTsKKyAgICBpZiAoIWVwdHIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkZhaWxlZCB0byByZWdpc3RlciBleHRlbmQgZW50cnkgJyVzJyAtIHBvc3NpYmx5IGR1cGxpY2F0ZSBuYW1lLlxuIiwgZXhlY19uYW1lICk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgZXh0ZW5zaW9uID0gX25ld19leHRlbnNpb24oIGV4ZWNfbmFtZSwgZmxhZ3MsIGVwdHIgKTsKICAgICBpZiAoZXh0ZW5zaW9uKSB7CiAgICAgICAgIGV4dGVuc2lvbi0+Y29tbWFuZCAgPSBzdHJkdXAoIGV4ZWNfY29tbWFuZCApOwpAQCAtNjI3LDYgKzcyMyw3IEBACiAgICAgICAgICAqCiAgICAgICAgICAqKioqKioqKioqLwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIFZhbGlkYXRlIHRoZSBuZXcgYXNzaWdubWVudHMKQEAgLTk1Miw2ICsxMDQ5LDcgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovIAogCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3QsIFNOTVBfRVJSX0dFTkVSUik7CkBAIC05NTksNiArMTA1Nyw3IEBACiAgICAgICAgIH0KICAgICB9CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgLyoKICAgICAgKiBJZiB3ZSdyZSBtYXJraW5nIGEgZ2l2ZW4gcm93IGFzIGFjdGl2ZSwKICAgICAgKiAgdGhlbiB3ZSBuZWVkIHRvIGNoZWNrIHRoYXQgaXQncyByZWFkeS4KQEAgLTk4Myw3ICsxMDgyLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KIApAQCAtMTQ3MSw2ICsxNTcxLDcgQEAKICAgICBpZHggPSBuYW1lW25hbWVfbGVuLTFdIC0xOwogICAgIGV4dGVuID0gJmNvbXBhdGFiaWxpdHlfZW50cmllc1sgaWR4IF07CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgc3dpdGNoIChhY3Rpb24pIHsKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgICAgICBpZiAodmFyX3ZhbF90eXBlICE9IEFTTl9JTlRFR0VSKSB7CkBAIC0xNDkxLDYgKzE1OTIsNyBAQAogICAgIGNhc2UgTU9ERV9TRVRfQ09NTUlUOgogICAgICAgICBuZXRzbm1wX2NhY2hlX2NoZWNrX2FuZF9yZWxvYWQoIGV4dGVuLT5lZml4X2VudHJ5LT5jYWNoZSApOwogICAgIH0KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBVU0lOR19VQ0RfU05NUF9FWFRFTlNJQkxFX01PRFVMRSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmggYi9hZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuaAppbmRleCA0YjE4MWY5Li44Yjc2Y2Q0IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuaAorKysgYi9hZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuaApAQCAtMjgsNiArMjgsNyBAQAogfSBuZXRzbm1wX2V4dGVuZDsKIAogdm9pZCAgICAgICAgICAgICAgICAgaW5pdF9leHRlbmQodm9pZCk7Cit2b2lkICAgICAgICAgICAgICAgICBzaHV0ZG93bl9leHRlbmQodm9pZCk7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBoYW5kbGVfbnNFeHRlbmRDb25maWdUYWJsZTsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIGhhbmRsZV9uc0V4dGVuZE91dHB1dDFUYWJsZTsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIGhhbmRsZV9uc0V4dGVuZE91dHB1dDJUYWJsZTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2FnZW50L25zQ2FjaGUuYyBiL2FnZW50L21pYmdyb3VwL2FnZW50L25zQ2FjaGUuYwppbmRleCA1ODE1ZTkwLi5kMzIyNjNiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9hZ2VudC9uc0NhY2hlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNDYWNoZS5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3NjYWxhci5oPgpAQCAtMTIsNiArMTMsOSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaD4KICNpbmNsdWRlICJhZ2VudC9uc0NhY2hlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNhY2hlX2dldF9oZWFkKQorCisKIC8qCiAgKiB1c2UgdW5hZHZlcnRpc2VkIGZ1bmN0aW9uIHRvIGdldCBjYWNoZSBoZWFkLiBZb3UgcmVhbGx5IHNob3VsZCBub3QKICAqIGRvIHRoaXMsIHNpbmNlIHRoZSBpbnRlcm5hbCBzdG9yYWdlIG1lY2hhbmlzbSBtaWdodCBjaGFuZ2UuCkBAIC0xMDIsNyArMTA2LDcgQEAKICAgICAvKgogICAgICAqIC4uLi4gYW5kIHJlZ2lzdGVyIHRoZSB0YWJsZSB3aXRoIHRoZSBhZ2VudC4KICAgICAgKi8KLSAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yKAorICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IyKAogICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKICAgICAgICAgICAgICJ0ekNhY2hlVGFibGUiLCBoYW5kbGVfbnNDYWNoZVRhYmxlLAogICAgICAgICAgICAgbnNDYWNoZVRhYmxlX29pZCwgT0lEX0xFTkdUSChuc0NhY2hlVGFibGVfb2lkKSwKQEAgLTEzNyw2ICsxNDEsNyBAQAogCWJyZWFrOwogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKIAlmb3IgKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7CiAgICAgICAgICAgICBpZiAoIHJlcXVlc3QtPnN0YXR1cyAhPSAwICkgewpAQCAtMTU4LDYgKzE2Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX0NBQ0hFX1RJTUVPVVQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXIpOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgfQogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CkBAIC0xODcsNiArMTkzLDcgQEAKIAlicmVhazsKIAogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAJZm9yIChyZXF1ZXN0ID0gcmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgewogICAgICAgICAgICAgaWYgKCByZXF1ZXN0LT5zdGF0dXMgIT0gMCApIHsKQEAgLTIxMSw2ICsyMTgsNyBAQAogCW5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX05PX0NBQ0hJTkcsIGVuYWJsZWQpOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgfQogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CkBAIC0yOTUsOSArMzAzLDEwIEBACiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCQl9CiAJCXN0YXR1cyA9IChjYWNoZV9lbnRyeS0+ZW5hYmxlZCA/Ci0JICAgICAgICAgICAgICAgICAgIChjYWNoZV9lbnRyeS0+dGltZXN0YW1wID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCFhdGltZV9yZWFkeShjYWNoZV9lbnRyeS0+dGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwMCpjYWNoZV9lbnRyeS0+dGltZW91dCkgPworCSAgICAgICAgICAgICAgICAgICAoY2FjaGVfZW50cnktPnRpbWVzdGFtcE0gPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FjaGVfZW50cnktPnRpbWVvdXQgPj0gMCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIW5ldHNubXBfcmVhZHlfbW9ub3RvbmljKGNhY2hlX2VudHJ5LT50aW1lc3RhbXBNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMDAqY2FjaGVfZW50cnktPnRpbWVvdXQpID8KIAkgICAgICAgICAgICAgICAgICAgICAgICBOU0NBQ0hFX1NUQVRVU19BQ1RJVkU6CiAJICAgICAgICAgICAgICAgICAgICAgICAgTlNDQUNIRV9TVEFUVVNfRVhQSVJFRCkgOgogCSAgICAgICAgICAgICAgICAgICAgICBOU0NBQ0hFX1NUQVRVU19FTVBUWSkgOgpAQCAtMzE0LDYgKzMyMyw3IEBACiAJYnJlYWs7CiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgICAgICBmb3IgKHJlcXVlc3Q9cmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgewogICAgICAgICAgICAgaWYgKHJlcXVlc3QtPnByb2Nlc3NlZCAhPSAwKQpAQCAtNDA0LDE0ICs0MTQsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCQkgICAgY2FzZSBOU0NBQ0hFX1NUQVRVU19FTVBUWToKICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlX2VudHJ5LT5mcmVlX2NhY2hlKGNhY2hlX2VudHJ5LCBjYWNoZV9lbnRyeS0+bWFnaWMpOwotICAgICAgICAgICAgICAgICAgICAgICAgZnJlZShjYWNoZV9lbnRyeS0+dGltZXN0YW1wKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlX2VudHJ5LT50aW1lc3RhbXAgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICAgICAgZnJlZShjYWNoZV9lbnRyeS0+dGltZXN0YW1wTSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZV9lbnRyeS0+dGltZXN0YW1wTSA9IE5VTEw7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIAkJfQogCSAgICAgICAgYnJlYWs7CiAJICAgIH0KIAl9CiAJYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNEZWJ1Zy5jIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNEZWJ1Zy5jCmluZGV4IDUzNGQxOGMuLjg5YTkwYjAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2FnZW50L25zRGVidWcuYworKysgYi9hZ2VudC9taWJncm91cC9hZ2VudC9uc0RlYnVnLmMKQEAgLTkxLDcgKzkxLDcgQEAKICAgICAvKgogICAgICAqIC4uLi4gYW5kIHJlZ2lzdGVyIHRoZSB0YWJsZSB3aXRoIHRoZSBhZ2VudC4KICAgICAgKi8KLSAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yKAorICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IyKAogICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKICAgICAgICAgICAgICJ0ekRlYnVnVGFibGUiLCBoYW5kbGVfbnNEZWJ1Z1RhYmxlLAogICAgICAgICAgICAgbnNEZWJ1Z1Rva2VuVGFibGVfb2lkLCBPSURfTEVOR1RIKG5zRGVidWdUb2tlblRhYmxlX29pZCksCkBAIC0xMjQsNiArMTI0LDcgQEAKIAlicmVhazsKIAogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAJZm9yIChyZXF1ZXN0ID0gcmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgewogICAgICAgICAgICAgaWYgKHJlcXVlc3QtPnByb2Nlc3NlZCAhPSAwKQpAQCAtMTQ5LDYgKzE1MCw3IEBACiAJICAgIGVuYWJsZWQgPSAwOwogCXNubXBfc2V0X2RvX2RlYnVnZ2luZyggZW5hYmxlZCApOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgfQogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CkBAIC0xNzksNiArMTgxLDcgQEAKIAlicmVhazsKIAogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAJZm9yIChyZXF1ZXN0ID0gcmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgewogICAgICAgICAgICAgaWYgKHJlcXVlc3QtPnByb2Nlc3NlZCAhPSAwKQpAQCAtMjA0LDYgKzIwNyw3IEBACiAJICAgIGVuYWJsZWQgPSAwOwogCXNubXBfc2V0X2RvX2RlYnVnZ2luZyggZW5hYmxlZCApOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgfQogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CkBAIC0yMzUsNiArMjM5LDcgQEAKIAlicmVhazsKIAogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAJZm9yIChyZXF1ZXN0ID0gcmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgewogICAgICAgICAgICAgaWYgKHJlcXVlc3QtPnByb2Nlc3NlZCAhPSAwKQpAQCAtMjYxLDYgKzI2Niw3IEBACiAJbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsCiAJICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9EVU1QX1BBQ0tFVCwgZW5hYmxlZCk7CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB9CiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKQEAgLTM0NSw2ICszNTEsNyBAQAogCWJyZWFrOwogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKIAlmb3IgKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7CiAgICAgICAgICAgICBpZiAocmVxdWVzdC0+cHJvY2Vzc2VkICE9IDApCkBAIC00NTEsNiArNDU4LDcgQEAKIAkgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB9CiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2FnZW50L25zTG9nZ2luZy5jIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNMb2dnaW5nLmMKaW5kZXggMzQ0ZTUzYS4uN2YyMGJkYiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNMb2dnaW5nLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNMb2dnaW5nLmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc2NhbGFyLmg+CkBAIC0xMiw2ICsxMywxMSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmg+CiAjaW5jbHVkZSAiYWdlbnQvbnNMb2dnaW5nLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGxvZ2dpbmdfZXh0ZXJuYWwpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfaXRlcmF0b3JfaW5zZXJ0X2NvbnRleHQpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKIC8qCiAgKiBPSUQgYW5kIGNvbHVtbnMgZm9yIHRoZSBsb2dnaW5nIHRhYmxlLgogICovCkBAIC01OCw3ICs2NCw3IEBACiAgICAgLyoKICAgICAgKiAuLi4uIGFuZCByZWdpc3RlciB0aGUgdGFibGUgd2l0aCB0aGUgYWdlbnQuCiAgICAgICovCi0gICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcigKKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yMigKICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCiAgICAgICAgICAgICAidHpMb2dnaW5nVGFibGUiLCBoYW5kbGVfbnNMb2dnaW5nVGFibGUsCiAgICAgICAgICAgICBuc0xvZ2dpbmdUYWJsZV9vaWQsIE9JRF9MRU5HVEgobnNMb2dnaW5nVGFibGVfb2lkKSwKQEAgLTE4Niw2ICsxOTIsNyBAQAogCWJyZWFrOwogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICAgICAgZm9yIChyZXF1ZXN0PXJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0PXJlcXVlc3QtPm5leHQpIHsKICAgICAgICAgICAgIGlmICggcmVxdWVzdC0+c3RhdHVzICE9IDAgKSB7CkBAIC00NTgsNiArNDY1LDcgQEAKIAkgICAgfQogCX0KIAlicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgfQogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9hZ2VudC9uc01vZHVsZVRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9hZ2VudC9uc01vZHVsZVRhYmxlLmMKaW5kZXggMWQ3NjNmMy4uODRiZDhmYSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNNb2R1bGVUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2FnZW50L25zTW9kdWxlVGFibGUuYwpAQCAtNCwxMCArNCwxMyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJuc01vZHVsZVRhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2RhdGFzZXQpCisKIHZvaWQKIG5zTW9kdWxlVGFibGVfZnJlZSh2b2lkICpjb250ZXh0LCBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKmRvbnRfY2FyZSkKIHsKQEAgLTcyLDcgKzc1LDcgQEAKICAgICAgKi8KICAgICBERUJVR01TR1RMKCgiaW5pdGlhbGl6ZV90YWJsZV9uc01vZHVsZVRhYmxlIiwKICAgICAgICAgICAgICAgICAiUmVnaXN0ZXJpbmcgdGFibGUgbnNNb2R1bGVUYWJsZSBhcyBhIHRhYmxlIGl0ZXJhdG9yXG4iKSk7Ci0gICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcihteV9oYW5kbGVyLCBpaW5mbyk7CisgICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcjIobXlfaGFuZGxlciwgaWluZm8pOwogfQogCiAvKiogSW5pdGlhbGl6ZXMgdGhlIG5zTW9kdWxlVGFibGUgbW9kdWxlICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5jCmluZGV4IDQ5Y2IwNzkuLjc1ZmU3YmUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5jCkBAIC0zLDYgKzMsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtMTAsNiArMTEsOCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAibnNUcmFuc2FjdGlvblRhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2RhdGFzZXQpCisKIC8qKiBJbml0aWFsaXplIHRoZSBuc1RyYW5zYWN0aW9uVGFibGUgdGFibGUgYnkgZGVmaW5pbmcgaXQncyBjb250ZW50cwogICAgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQgKi8KIHZvaWQKQEAgLTYxLDcgKzY0LDcgQEAKICAgICAgKi8KICAgICBERUJVR01TR1RMKCgiaW5pdGlhbGl6ZV90YWJsZV9uc1RyYW5zYWN0aW9uVGFibGUiLAogICAgICAgICAgICAgICAgICJSZWdpc3RlcmluZyB0YWJsZSBuc1RyYW5zYWN0aW9uVGFibGUgYXMgYSB0YWJsZSBpdGVyYXRvclxuIikpOwotICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IobXlfaGFuZGxlciwgaWluZm8pOworICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IyKG15X2hhbmRsZXIsIGlpbmZvKTsKIH0KIAogLyoqIEluaXRpYWxpemVzIHRoZSBuc1RyYW5zYWN0aW9uVGFibGUgbW9kdWxlICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUuYwppbmRleCA0MTBiMDAyLi43OWZhOTdkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmMKQEAgLTQsMTEgKzQsMTggQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdmFjbS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAibnNWYWNtQWNjZXNzVGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfc3RvcmFnZXR5cGUpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV9pdGVyYXRvcl9pbnNlcnRfY29udGV4dCkKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogLyoqIEluaXRpYWxpemVzIHRoZSBuc1ZhY21BY2Nlc3NUYWJsZSBtb2R1bGUgKi8KIHZvaWQKIGluaXRfcmVnaXN0ZXJfbnNWYWNtX2NvbnRleHQoY29uc3QgY2hhciAqY29udGV4dCkKQEAgLTIyLDEwICsyOSwxNyBAQAogICAgIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAgICAgICAgICAgKmlpbmZvOwogICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCiAgICAgICAgICJuc1ZhY21BY2Nlc3NUYWJsZSIsIG5zVmFjbUFjY2Vzc1RhYmxlX2hhbmRsZXIsCiAgICAgICAgIG5zVmFjbUFjY2Vzc1RhYmxlX29pZCwgT0lEX0xFTkdUSChuc1ZhY21BY2Nlc3NUYWJsZV9vaWQpLAogICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUpOworI2Vsc2UgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAibnNWYWNtQWNjZXNzVGFibGUiLCBuc1ZhY21BY2Nlc3NUYWJsZV9oYW5kbGVyLAorICAgICAgICBuc1ZhY21BY2Nlc3NUYWJsZV9vaWQsIE9JRF9MRU5HVEgobnNWYWNtQWNjZXNzVGFibGVfb2lkKSwKKyAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIHRhYmxlX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8pOwogICAgIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKHRhYmxlX2luZm8sCkBAIC00Niw3ICs2MCw3IEBACiAgICAgaWYgKCBjb250ZXh0ICYmIGNvbnRleHRbMF0gKQogICAgICAgICByZWctPmNvbnRleHROYW1lID0gc3RyZHVwKGNvbnRleHQpOwogCi0gICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcihyZWcsIGlpbmZvKTsKKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yMihyZWcsIGlpbmZvKTsKIH0KIAogdm9pZApAQCAtMTg5LDYgKzIwMyw3IEBACiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIC8qCiAgICAgICAgICAqIFdyaXRlLXN1cHBvcnQKICAgICAgICAgICovCkBAIC0zMzQsNiArMzQ5LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2FnZW50eF9jb25maWcuYyBiL2FnZW50L21pYmdyb3VwL2FnZW50eC9hZ2VudHhfY29uZmlnLmMKaW5kZXggZWVjODI3MS4uYjU5MGM3YSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2FnZW50eF9jb25maWcuYworKysgYi9hZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5jCkBAIC0yLDYgKzIsNyBAQAogICogIEFnZW50WCBDb25maWd1cmF0aW9uCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KQEAgLTIwLDYgKzIxLDkgQEAKICNpbmNsdWRlICJhZ2VudHgvYWdlbnR4X2NvbmZpZy5oIgogI2luY2x1ZGUgImFnZW50eC9wcm90b2NvbC5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh1c2VyX2luZm9ybWF0aW9uKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoc3RyaW5nX3RpbWVfdG9fc2VjcykKKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgogICogQ29tbW9uIG1hc3RlciBhbmQgc3ViLWFnZW50CkBAIC0xMTYsOCArMTIwLDEyIEBACiB2b2lkCiBhZ2VudHhfcGFyc2VfYWdlbnR4X3RpbWVvdXQoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmNwdHIpCiB7Ci0gICAgaW50IHggPSBhdG9pKGNwdHIpOworICAgIGludCB4ID0gbmV0c25tcF9zdHJpbmdfdGltZV90b19zZWNzKGNwdHIpOwogICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvY29uZmlnL3RpbWVvdXQiLCAiJXNcbiIsIGNwdHIpKTsKKyAgICBpZiAoeCA9PSAtMSkgeworICAgICAgICBjb25maWdfcGVycm9yKCJJbnZhbGlkIHRpbWVvdXQgdmFsdWUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BR0VOVF9BR0VOVFhfVElNRU9VVCwgeCAqIE9ORV9TRUMpOwogfQpAQCAtMTUyLDExICsxNjAsMTQgQEAKICAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigiOmFnZW50eCIsIHRva2VuLCBwYXJzZXIsIHJlbGVhc2VyLCBoZWxwKTsKIH0KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGFnZW50eF91bnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyLCBuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9BR0VOVFhfVU5SRUdJU1RFUl9DT05GSUdfSEFORExFUgogdm9pZAogYWdlbnR4X3VucmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoY29uc3QgY2hhciAqdG9rZW4pCiB7CiAgICAgdW5yZWdpc3Rlcl9jb25maWdfaGFuZGxlcigiOmFnZW50eCIsIHRva2VuKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0FHRU5UWF9VTlJFR0lTVEVSX0NPTkZJR19IQU5ETEVSICovCiAKIHZvaWQKIGFnZW50eF9jb25maWdfaW5pdCh2b2lkKQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2NsaWVudC5jIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2NsaWVudC5jCmluZGV4IDU4OTg3ZTMuLmQzNmZlMmQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2FnZW50eC9jbGllbnQuYworKysgYi9hZ2VudC9taWJncm91cC9hZ2VudHgvY2xpZW50LmMKQEAgLTMsNiArMyw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGVycm5vLmg+CkBAIC00MSw2ICs0Miw4IEBACiAjaW5jbHVkZSAiYWdlbnR4L2NsaWVudC5oIgogI2luY2x1ZGUgImFnZW50eC9zdWJhZ2VudC5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzZXRfYWdlbnRfdXB0aW1lKQorCiAgICAgICAgIC8qCiAgICAgICAgICAqIEFnZW50WCBoYW5kbGluZyB1dGlsaXR5IHJvdXRpbmVzCiAgICAgICAgICAqCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmMgYi9hZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmMKaW5kZXggMWZmYzA0My4uYzQyYTQyYSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jCisrKyBiL2FnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYwpAQCAtMTQsNiArMTQsNyBAQAogCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2lmIEhBVkVfSU9fSAogI2luY2x1ZGUgPGlvLmg+CiAjZW5kaWYKQEAgLTUwLDYgKzUxLDEwIEBACiAjaW5jbHVkZSAiYWdlbnR4L3Byb3RvY29sLmgiCiAjaW5jbHVkZSAiYWdlbnR4L21hc3Rlcl9hZG1pbi5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShoYW5kbGVyX21hcmtfcmVxdWVzdHNfYXNfZGVsZWdhdGVkKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodW5peF9zb2NrZXRfcGF0aHMpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShmcmVlX2FnZW50X3NubXBfc2Vzc2lvbl9ieV9zZXNzaW9uKQorCiB2b2lkCiByZWFsX2luaXRfbWFzdGVyKHZvaWQpCiB7CkBAIC00NjAsNiArNDY1LDcgQEAKICAgICAgICAgcGR1ID0gc25tcF9wZHVfY3JlYXRlKEFHRU5UWF9NU0dfR0VUTkVYVCk7CiAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgICAgIHBkdSA9IHNubXBfcGR1X2NyZWF0ZShBR0VOVFhfTVNHX1RFU1RTRVQpOwogICAgICAgICBicmVhazsKQEAgLTQ4Myw2ICs0ODksNyBAQAogICAgIGNhc2UgTU9ERV9TRVRfRlJFRToKICAgICAgICAgcGR1ID0gc25tcF9wZHVfY3JlYXRlKEFHRU5UWF9NU0dfQ0xFQU5VUFNFVCk7CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jCmluZGV4IDhkYWU5ZjEuLjY0YWE0OTEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYworKysgYi9hZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmMKQEAgLTIsNiArMiw3IEBACiAgKiAgQWdlbnRYIEFkbWluaXN0cmF0aXZlIHJlcXVlc3QgaGFuZGxpbmcKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpZmRlZiBIQVZFX1NUUklOR19ICkBAIC00MSw2ICs0MiwxMSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2FnZW50X3N5c09SVGFibGUuaD4KICNpbmNsdWRlICJtYXN0ZXIuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodW5yZWdpc3Rlcl9taWJfdGFibGVfcm93KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodHJhcF92YXJzX3dpdGhfY29udGV4dCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNhbGN1bGF0ZV9zZWN0aW1lX2RpZmYpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShhbGxvY2F0ZV9nbG9iYWxjYWNoZWlkKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocmVtb3ZlX2luZGV4KQogCiBuZXRzbm1wX3Nlc3Npb24gKgogZmluZF9hZ2VudHhfc2Vzc2lvbihuZXRzbm1wX3Nlc3Npb24gKiBzZXNzaW9uLCBpbnQgc2Vzc2lkKQpAQCAtOTcsNyArMTAzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lX2xlbmd0aCk7CiAgICAgc3AtPnNlY3VyaXR5QXV0aFByb3RvTGVuID0gcGR1LT52YXJpYWJsZXMtPm5hbWVfbGVuZ3RoOwogICAgIHNwLT5zZWN1cml0eU5hbWUgPSBzdHJkdXAoKGNoYXIgKikgcGR1LT52YXJpYWJsZXMtPnZhbC5zdHJpbmcpOwotICAgIHNwLT5lbmdpbmVUaW1lID0gKG5ldHNubXBfZ2V0X2FnZW50X3J1bnRpbWUoKSArIDUwKSAvIDEwMDsKKyAgICBzcC0+ZW5naW5lVGltZSA9ICh1aW50MzJfdCkoKG5ldHNubXBfZ2V0X2FnZW50X3J1bnRpbWUoKSArIDUwKSAvIDEwMCkgJiAweDdmZmZmZmZmTDsKIAogICAgIHNwLT5zdWJzZXNzaW9uID0gc2Vzc2lvbjsgICAvKiBsaW5rIGJhY2sgdG8gaGVhZCAqLwogICAgIHNwLT5mbGFncyB8PSBTTk1QX0ZMQUdTX1NVQlNFU1NJT047CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYyBiL2FnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jCmluZGV4IDFjMDBkYjEuLmIzZGEzMjEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jCkBAIC0yLDYgKzIsNyBAQAogICogIEFnZW50WCBzdWItYWdlbnQKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpZmRlZiBIQVZFX1NURExJQl9ICkBAIC00NCw2ICs0NSwxMSBAQAogCiAjaW5jbHVkZSAic3ViYWdlbnQuaCIKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGFnZW50eF9zdWJhZ2VudCwgYWdlbnR4X2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihhZ2VudHhfZW5hYmxlX3N1YmFnZW50LCBhZ2VudHhfc3ViYWdlbnQpCisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHJlbW92ZV90cmFwX3Nlc3Npb24pCisKICNpZmRlZiBVU0lOR19BR0VOVFhfU1VCQUdFTlRfTU9EVUxFCiAKIHN0YXRpYyBTTk1QQ2FsbGJhY2sgc3ViYWdlbnRfcmVnaXN0ZXJfcGluZ19hbGFybTsKQEAgLTUzLDEwICs1OSwxMiBAQAogaW50ICAgICAgICAgICAgIGhhbmRsZV9zdWJhZ2VudF9yZXNwb25zZShpbnQgb3AsIG5ldHNubXBfc2Vzc2lvbiAqIHNlc3Npb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXFpZCwgbmV0c25tcF9wZHUgKnBkdSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqbWFnaWMpOworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIGludCAgICAgICAgICAgICBoYW5kbGVfc3ViYWdlbnRfc2V0X3Jlc3BvbnNlKGludCBvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2Vzc2lvbiAqIHNlc3Npb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVxaWQsIG5ldHNubXBfcGR1ICpwZHUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICptYWdpYyk7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogdm9pZCAgICAgICAgICAgIHN1YmFnZW50X3N0YXJ0dXBfY2FsbGJhY2sodW5zaWduZWQgaW50IGNsaWVudHJlZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsaWVudGFyZyk7CiBpbnQgICAgICAgICAgICAgc3ViYWdlbnRfb3Blbl9tYXN0ZXJfc2Vzc2lvbih2b2lkKTsKQEAgLTE1NiwxMiArMTY0LDE1IEBACiAgICAgcmV0dXJuIHJjOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQUdFTlRYX0VOQUJMRV9TVUJBR0VOVAogdm9pZAogbmV0c25tcF9lbmFibGVfc3ViYWdlbnQodm9pZCkgewogICAgIG5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgTkVUU05NUF9EU19BR0VOVF9ST0xFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VCX0FHRU5UKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0FHRU5UWF9FTkFCTEVfU1VCQUdFTlQgKi8KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIHN0cnVjdCBhZ2VudF9uZXRzbm1wX3NldF9pbmZvICoKIHNhdmVfc2V0X3ZhcnMobmV0c25tcF9zZXNzaW9uICogc3MsIG5ldHNubXBfcGR1ICpwZHUpCiB7CkBAIC0yMzAsNiArMjQxLDcgQEAKICAgICAgICAgcHJldiA9IHB0cjsKICAgICB9CiB9CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiBzdGF0aWMgdm9pZAogc2VuZF9hZ2VudHhfZXJyb3IobmV0c25tcF9zZXNzaW9uICpzZXNzaW9uLCBuZXRzbm1wX3BkdSAqcGR1LCBpbnQgZXJyc3RhdCwgaW50IGVycmluZGV4KQpAQCAtMzkzLDYgKzQwNSw3IEBACiAgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvc3ViYWdlbnQiLCAiICAtPiByZXNwb25zZVxuIikpOwogICAgICAgICByZXR1cm4gMTsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIEFHRU5UWF9NU0dfVEVTVFNFVDoKICAgICAgICAgLyoKICAgICAgICAgICogWFhYV1dXIHdlIGhhdmUgdG8gbWFwIHRoaXMgdHdpY2UgdG8gYm90aCBSRVNFUlZFMSBhbmQgUkVTRVJWRTIgCkBAIC00NzAsNiArNDgzLDcgQEAKICAgICAgICAgbXljYWxsYmFjayA9IGhhbmRsZV9zdWJhZ2VudF9zZXRfcmVzcG9uc2U7CiAgICAgICAgIHJldG1hZ2ljID0gYXNpOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovIAogCiAgICAgZGVmYXVsdDoKICAgICAgICAgU05NUF9GUkVFKHNtYWdpYyk7CkBAIC01NDEsMTEgKzU1NSwxMyBAQAogICAgICAgICAgICAgICAgICh1bnNpZ25lZClwZHUtPnJlcWlkLCAodW5zaWduZWQpcGR1LT50cmFuc2lkLAogICAgICAgICAgICAgICAgICh1bnNpZ25lZClwZHUtPnNlc3NpZCkpOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGlmIChwZHUtPmNvbW1hbmQgPT0gU05NUF9NU0dfSU5URVJOQUxfU0VUX0ZSRUUgfHwKICAgICAgICAgcGR1LT5jb21tYW5kID09IFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9VTkRPIHx8CiAgICAgICAgIHBkdS0+Y29tbWFuZCA9PSBTTk1QX01TR19JTlRFUk5BTF9TRVRfQ09NTUlUKSB7CiAgICAgICAgIGZyZWVfc2V0X3ZhcnMoc21hZ2ljLT5zZXNzaW9uLCBwZHUpOwogICAgIH0KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICBpZiAoc21hZ2ljLT5vcmlnaW5hbF9jb21tYW5kID09IEFHRU5UWF9NU0dfR0VUTkVYVCkgewogICAgICAgICBERUJVR01TR1RMKCgiYWdlbnR4L3N1YmFnZW50IiwKQEAgLTYwNyw2ICs2MjMsNyBAQAogICAgIHJldHVybiAxOwogfQogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogaW50CiBoYW5kbGVfc3ViYWdlbnRfc2V0X3Jlc3BvbnNlKGludCBvcCwgbmV0c25tcF9zZXNzaW9uICogc2Vzc2lvbiwgaW50IHJlcWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3BkdSAqcGR1LCB2b2lkICptYWdpYykKQEAgLTY2OCw3ICs2ODUsNyBAQAogICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvc3ViYWdlbnQiLCAiICBGSU5JU0hFRFxuIikpOwogICAgIHJldHVybiAxOwogfQotCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAKIGludApAQCAtNjc3LDcgKzY5NCw3IEBACiB7CiAgICAgc3RydWN0IHJlZ2lzdGVyX3BhcmFtZXRlcnMgKnJlZ19wYXJtcyA9CiAgICAgICAgIChzdHJ1Y3QgcmVnaXN0ZXJfcGFyYW1ldGVycyAqKSBzZXJ2ZXJhcmc7Ci0gICAgbmV0c25tcF9zZXNzaW9uICphZ2VudHhfc3MgPSAobmV0c25tcF9zZXNzaW9uICopIGNsaWVudGFyZzsKKyAgICBuZXRzbm1wX3Nlc3Npb24gKmFnZW50eF9zcyA9ICoobmV0c25tcF9zZXNzaW9uICoqKWNsaWVudGFyZzsKIAogICAgIGlmIChtaW5vcklEID09IFNOTVBEX0NBTExCQUNLX1JFR0lTVEVSX09JRCkKICAgICAgICAgcmV0dXJuIGFnZW50eF9yZWdpc3RlcihhZ2VudHhfc3MsCkBAIC03MDMsNyArNzIwLDcgQEAKIHsKICAgICBjb25zdCBzdHJ1Y3QgcmVnaXN0ZXJfc3lzT1JfcGFyYW1ldGVycyAqcmVnX3Bhcm1zID0KICAgICAgICAgKGNvbnN0IHN0cnVjdCByZWdpc3Rlcl9zeXNPUl9wYXJhbWV0ZXJzICopIHNlcnZlcmFyZzsKLSAgICBuZXRzbm1wX3Nlc3Npb24gKmFnZW50eF9zcyA9IChuZXRzbm1wX3Nlc3Npb24gKikgY2xpZW50YXJnOworICAgIG5ldHNubXBfc2Vzc2lvbiAqYWdlbnR4X3NzID0gKihuZXRzbm1wX3Nlc3Npb24gKiopY2xpZW50YXJnOwogCiAgICAgaWYgKG1pbm9ySUQgPT0gU05NUERfQ0FMTEJBQ0tfUkVHX1NZU09SKQogICAgICAgICByZXR1cm4gYWdlbnR4X2FkZF9hZ2VudGNhcHMoYWdlbnR4X3NzLApAQCAtNzE5LDcgKzczNiw3IEBACiBzdGF0aWMgaW50CiBzdWJhZ2VudF9zaHV0ZG93bihpbnQgbWFqb3JJRCwgaW50IG1pbm9ySUQsIHZvaWQgKnNlcnZlcmFyZywgdm9pZCAqY2xpZW50YXJnKQogewotICAgIG5ldHNubXBfc2Vzc2lvbiAqdGhlc2Vzc2lvbiA9IChuZXRzbm1wX3Nlc3Npb24gKiljbGllbnRhcmc7CisgICAgbmV0c25tcF9zZXNzaW9uICp0aGVzZXNzaW9uID0gKihuZXRzbm1wX3Nlc3Npb24gKiopY2xpZW50YXJnOwogICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvc3ViYWdlbnQiLCAic2h1dHRpbmcgZG93biBzZXNzaW9uLi4uLlxuIikpOwogICAgIGlmICh0aGVzZXNzaW9uID09IE5VTEwpIHsKIAlERUJVR01TR1RMKCgiYWdlbnR4L3N1YmFnZW50IiwgIkVtcHR5IHNlc3Npb24gdG8gc2h1dGRvd25cbiIpKTsKQEAgLTc0NywyMiArNzY0LDI5IEBACiB2b2lkCiBhZ2VudHhfcmVnaXN0ZXJfY2FsbGJhY2tzKG5ldHNubXBfc2Vzc2lvbiAqIHMpCiB7CisgICAgbmV0c25tcF9zZXNzaW9uICpzZXNzX3A7CisKICAgICBERUJVR01TR1RMKCgiYWdlbnR4L3N1YmFnZW50IiwKICAgICAgICAgICAgICAgICAicmVnaXN0ZXJpbmcgY2FsbGJhY2tzIGZvciBzZXNzaW9uICVwXG4iLCBzKSk7CisgICAgbWVtZHVwKCh1X2NoYXIgKiopJnNlc3NfcCwgJnMsIHNpemVvZihzKSk7CisgICAgbmV0c25tcF9hc3NlcnQoc2Vzc19wKTsKKyAgICBzLT5teXZvaWQgPSBzZXNzX3A7CisgICAgaWYgKCFzZXNzX3ApCisgICAgICAgIHJldHVybjsKICAgICBzbm1wX3JlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfTElCUkFSWSwgU05NUF9DQUxMQkFDS19TSFVURE9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmFnZW50X3NodXRkb3duLCBzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmFnZW50X3NodXRkb3duLCBzZXNzX3ApOwogICAgIHNubXBfcmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1JFR0lTVEVSX09JRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50eF9yZWdpc3RyYXRpb25fY2FsbGJhY2ssIHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnR4X3JlZ2lzdHJhdGlvbl9jYWxsYmFjaywgc2Vzc19wKTsKICAgICBzbm1wX3JlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19VTlJFR0lTVEVSX09JRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50eF9yZWdpc3RyYXRpb25fY2FsbGJhY2ssIHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnR4X3JlZ2lzdHJhdGlvbl9jYWxsYmFjaywgc2Vzc19wKTsKICAgICBzbm1wX3JlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19SRUdfU1lTT1IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudHhfc3lzT1JfY2FsbGJhY2ssIHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnR4X3N5c09SX2NhbGxiYWNrLCBzZXNzX3ApOwogICAgIHNubXBfcmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1VOUkVHX1NZU09SLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnR4X3N5c09SX2NhbGxiYWNrLCBzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50eF9zeXNPUl9jYWxsYmFjaywgc2Vzc19wKTsKIH0KIAogLyoKQEAgLTc3NSwxOSArNzk5LDIwIEBACiAgICAgREVCVUdNU0dUTCgoImFnZW50eC9zdWJhZ2VudCIsCiAgICAgICAgICAgICAgICAgInVucmVnaXN0ZXJpbmcgY2FsbGJhY2tzIGZvciBzZXNzaW9uICVwXG4iLCBzcykpOwogICAgIHNubXBfdW5yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0xJQlJBUlksIFNOTVBfQ0FMTEJBQ0tfU0hVVERPV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmFnZW50X3NodXRkb3duLCBzcywgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmFnZW50X3NodXRkb3duLCBzcy0+bXl2b2lkLCAxKTsKICAgICBzbm1wX3VucmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUkVHSVNURVJfT0lELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudHhfcmVnaXN0cmF0aW9uX2NhbGxiYWNrLCBzcywgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50eF9yZWdpc3RyYXRpb25fY2FsbGJhY2ssIHNzLT5teXZvaWQsIDEpOwogICAgIHNubXBfdW5yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19VTlJFR0lTVEVSX09JRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnR4X3JlZ2lzdHJhdGlvbl9jYWxsYmFjaywgc3MsIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudHhfcmVnaXN0cmF0aW9uX2NhbGxiYWNrLCBzcy0+bXl2b2lkLCAxKTsKICAgICBzbm1wX3VucmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUkVHX1NZU09SLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudHhfc3lzT1JfY2FsbGJhY2ssIHNzLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnR4X3N5c09SX2NhbGxiYWNrLCBzcy0+bXl2b2lkLCAxKTsKICAgICBzbm1wX3VucmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfVU5SRUdfU1lTT1IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50eF9zeXNPUl9jYWxsYmFjaywgc3MsIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudHhfc3lzT1JfY2FsbGJhY2ssIHNzLT5teXZvaWQsIDEpOworICAgIFNOTVBfRlJFRShzcy0+bXl2b2lkKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2RlZmF1bHRfbW9kdWxlcy5oIGIvYWdlbnQvbWliZ3JvdXAvZGVmYXVsdF9tb2R1bGVzLmgKaW5kZXggMWQ3NjdhZS4uZmM1ZjI2YSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGVmYXVsdF9tb2R1bGVzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGVmYXVsdF9tb2R1bGVzLmgKQEAgLTUsNiArNSwxMyBAQAogLyogdGhlc2UgZ28gaW50byBib3RoIHRoZSBtaW5pIGFnZW50IGFuZCB0aGUgZnVsbCBhZ2VudCAqLwogY29uZmlnX3JlcXVpcmUoc25tcHYzbWlicykKIAorLyogdmVyeSBmZXcgZGVmYXVsdCBtaWJzICovCitjb25maWdfYWRkX21pYihTTk1QdjItTUlCKQorY29uZmlnX2FkZF9taWIoSUYtTUlCKQorY29uZmlnX2FkZF9taWIoSVAtTUlCKQorY29uZmlnX2FkZF9taWIoVENQLU1JQikKK2NvbmZpZ19hZGRfbWliKFVEUC1NSUIpCisKICNpZmRlZiBORVRTTk1QX01JTklfQUdFTlQKIAogLyogbGltaXQgdGhlIG1pYklJIG1vZHVsZXMgdG8gdGhlIGJhcmUgbWluaW11bSAqLwpAQCAtMTMsMTUgKzIwLDYgQEAKIGNvbmZpZ19yZXF1aXJlKG1pYklJL3N5c09SVGFibGUpCiBjb25maWdfcmVxdWlyZShtaWJJSS92YWNtX3ZhcnMpCiBjb25maWdfcmVxdWlyZShtaWJJSS92YWNtX2NvbmYpCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL0V4aXQpCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL3Jlc3RhcnQpCi0KLS8qIHZlcnkgZmV3IGRlZmF1bHQgbWlicyAqLwotY29uZmlnX2FkZF9taWIoU05NUHYyLU1JQikKLWNvbmZpZ19hZGRfbWliKElGLU1JQikKLWNvbmZpZ19hZGRfbWliKElQLU1JQikKLWNvbmZpZ19hZGRfbWliKFRDUC1NSUIpCi1jb25maWdfYWRkX21pYihVRFAtTUlCKQogCiAjZWxzZSAvKiAhTkVUU05NUF9NSU5JX0FHRU5UID09IHRoZSBmdWxsIHNoYWJhbmcgKi8KIApAQCAtMzMsMjIgKzMxLDIxIEBACiBjb25maWdfcmVxdWlyZShhZ2VudF9taWJzKQogY29uZmlnX3JlcXVpcmUoYWdlbnR4KQogY29uZmlnX3JlcXVpcmUoZGlzbWFuL2V2ZW50KQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIGNvbmZpZ19yZXF1aXJlKGRpc21hbi9zY2hlZHVsZSkKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiBjb25maWdfcmVxdWlyZSh1dGlsaXRpZXMpCiAKIC8qIGRlZmF1bHQgTUlCcyB0byBhdXRvLWluY2x1ZGUgZm9yIHBhcnNpbmcgKi8KIC8qIE5PVEU6IHdlIGNvbnNpZGVyIHRoZXNlIE1JQnMgdXNlcnMgd2lsbCBsaWtlbHkgd2FudCB0byBsb2FkIGJ5CiAgICBkZWZhdWx0LCBldmVuIGlmIHRoZXkncmUgbm90IHN1cHBvcnRpbmcgaXQgaW4gdGhlIGFnZW50IChpZSwgdGhlCiAgICBjb21tYW5kIGxpbmUgdG9vbHMgbmVlZCB0byBsb2FkIHRoZW0gYW55d2F5KSAqLwotY29uZmlnX2FkZF9taWIoU05NUHYyLU1JQikKLWNvbmZpZ19hZGRfbWliKElGLU1JQikKLWNvbmZpZ19hZGRfbWliKElQLU1JQikKLWNvbmZpZ19hZGRfbWliKFRDUC1NSUIpCi1jb25maWdfYWRkX21pYihVRFAtTUlCKQogY29uZmlnX2FkZF9taWIoSE9TVC1SRVNPVVJDRVMtTUlCKQogY29uZmlnX2FkZF9taWIoTk9USUZJQ0FUSU9OLUxPRy1NSUIpCiBjb25maWdfYWRkX21pYihESVNNQU4tRVZFTlQtTUlCKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIGNvbmZpZ19hZGRfbWliKERJU01BTi1TQ0hFRFVMRS1NSUIpCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAvKiBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgZXh0cmEgbW9kdWxlcyAqLwogLyogdGhlc2Ugc3ltYm9scyBhcmUgc2V0IGluIHRoZSBob3N0IHNwZWNpZmljIG5ldC1zbm1wL3N5c3RlbS88b3M+LmggZmlsZXMgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmMgYi9hZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4OTg3OWEKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jCkBAIC0wLDAgKzEsNDc1IEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlIDxsaW1pdHMuaD4KKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY29udGFpbmVyX2ZpZm8pCisKKyNpbmNsdWRlICJkZWxpdmVyQnlOb3RpZnkuaCIKKworLyogd2Ugc2hvdWxkIG5ldmVyIHNwbGl0IGJleW9uZCB0aGlzICovCisjZGVmaW5lIE1BWF9NRVNTQUdFX0NPVU5UIDEyOAorI2RlZmluZSBCQVNFX1BBQ0tFVF9TSVpFIDEwMCAvKiBzaG91bGQgYmUgZW5vdWdoIHRvIHN0b3JlIFNOTVB2MyBtc2cgaGVhZGVycyAqLworCisvKiBpZiB2IGlzICFOVUxMLCB0aGVuIGVzdGltYXRlIGl0J3MgbGlrZWx5IHNpemUgKi8KKyNkZWZpbmUgRVNUSU1BVEVfVkFSX1NJWkUodikgKHY/KHYtPm5hbWVfbGVuZ3RoICsgdi0+dmFsX2xlbiArIDgpOjApCisKK3ZvaWQgcGFyc2VfZGVsaXZlcl9jb25maWcoY29uc3QgY2hhciAqLCBjaGFyICopOwordm9pZCBwYXJzZV9kZWxpdmVyX21heHNpemVfY29uZmlnKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKK3ZvaWQgcGFyc2VfZGF0YV9ub3RpZmljYXRpb25fb2lkX2NvbmZpZyhjb25zdCBjaGFyICosIGNoYXIgKik7Cit2b2lkIHBhcnNlX3BlcmlvZGljX3RpbWVfb2lkX2NvbmZpZyhjb25zdCBjaGFyICosIGNoYXIgKik7Cit2b2lkIHBhcnNlX21lc3NhZ2VfbnVtYmVyX29pZF9jb25maWcoY29uc3QgY2hhciAqLCBjaGFyICopOwordm9pZCBwYXJzZV9tYXhfbWVzc2FnZV9udW1iZXJfb2lkX2NvbmZpZyhjb25zdCBjaGFyICosIGNoYXIgKik7Cit2b2lkIGZyZWVfZGVsaXZlcl9jb25maWcodm9pZCk7CisKK3N0YXRpYyB2b2lkIF9zY2hlZHVsZV9uZXh0X2V4ZWN1dGVfdGltZSh2b2lkKTsKKworb2lkICAgIGRhdGFfbm90aWZpY2F0aW9uX29pZFtNQVhfT0lEX0xFTl0KKyAgICAgICA9IHsgMSwgMywgNiwgMSwgNCwgMSwgODA3MiwgMywgMSwgNSwgNCwgMCwgMSB9Oworc2l6ZV90IGRhdGFfbm90aWZpY2F0aW9uX29pZF9sZW4gPSAxMzsKKworb2lkICAgIG5ldHNubXBfcGVyaW9kaWNfdGltZV9vaWRbTUFYX09JRF9MRU5dCisgICAgICAgPSB7IDEsIDMsIDYsIDEsIDQsIDEsIDgwNzIsIDMsIDEsIDUsIDMsIDEsIDAgfTsKK3NpemVfdCBuZXRzbm1wX3BlcmlvZGljX3RpbWVfb2lkX2xlbiA9IDEzOworCitvaWQgICAgbmV0c25tcF9tZXNzYWdlX251bWJlcl9vaWRbTUFYX09JRF9MRU5dCisgICAgICAgPSB7IDEsIDMsIDYsIDEsIDQsIDEsIDgwNzIsIDMsIDEsIDUsIDMsIDIsIDAgfTsKK3NpemVfdCBuZXRzbm1wX21lc3NhZ2VfbnVtYmVyX29pZF9sZW4gPSAxMzsKKworb2lkICAgIG5ldHNubXBfbWF4X21lc3NhZ2VfbnVtYmVyX29pZFtNQVhfT0lEX0xFTl0KKyAgICAgICA9IHsgMSwgMywgNiwgMSwgNCwgMSwgODA3MiwgMywgMSwgNSwgMywgMywgMCB9Oworc2l6ZV90IG5ldHNubXBfbWF4X21lc3NhZ2VfbnVtYmVyX29pZF9sZW4gPSAxMzsKKworb2lkIG9iamlkX3NubXB0cmFwW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDEsIDEsIDQsIDEsIDAgfTsKKworI2RlZmluZSBERUZBVUxUX01BWF9ERUxJVkVSX1NJWkUgLTE7CitzdGF0aWMgaW50IGRlZmF1bHRfbWF4X3NpemU7Cit1bnNpZ25lZCBpbnQgYWxhcm1fcmVnOworc3RhdGljIG5ldHNubXBfY29udGFpbmVyICpkZWxpdmVyX2NvbnRhaW5lcjsKKworc3RhdGljIGludAorX2RlbGl2ZXJfY29tcGFyZShkZWxpdmVyX2J5X25vdGlmeSAqbGhzLCBkZWxpdmVyX2J5X25vdGlmeSAqcmhzKSB7CisgICAgLyogc29ydCBieSB0aGUgbmV4dF9ydW4gdGltZSAqLworICAgIGlmIChsaHMtPm5leHRfcnVuIDwgcmhzLT5uZXh0X3J1bikKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIDE7Cit9CisKKy8qKiBJbml0aWFsaXplcyB0aGUgbXRlVHJpZ2dlciBtb2R1bGUgKi8KK3ZvaWQKK2luaXRfZGVsaXZlckJ5Tm90aWZ5KHZvaWQpCit7CisgICAgLyogcmVnaXN0ZXIgdGhlIGNvbmZpZyB0b2tlbnMgKi8KKyAgICBzbm1wZF9yZWdpc3Rlcl9jb25maWdfaGFuZGxlcigiZGVsaXZlckJ5Tm90aWZ5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGFyc2VfZGVsaXZlcl9jb25maWcsICZmcmVlX2RlbGl2ZXJfY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJbLXBdIFstbV0gWy1zIG1heHNpemVdIEZSRVFVRU5DWSBPSUQiKTsKKworICAgIHNubXBkX3JlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJkZWxpdmVyQnlOb3RpZnlNYXhQYWNrZXRTaXplIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGFyc2VfZGVsaXZlcl9tYXhzaXplX2NvbmZpZywgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2l6ZUluQnl0ZXMiKTsKKworICAgIHNubXBkX3JlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJkZWxpdmVyQnlOb3RpZnlPaWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwYXJzZV9kYXRhX25vdGlmaWNhdGlvbl9vaWRfY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIC8qIFhYWDogcmVzZXQgdG8gZGVmYXVsdCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPSUQiKTsKKworICAgIHNubXBkX3JlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJkZWxpdmVyQnlOb3RpZnlGcmVxdWVuY3lPaWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwYXJzZV9wZXJpb2RpY190aW1lX29pZF9jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgLyogWFhYOiByZXNldCB0byBkZWZhdWx0ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9JRCIpOworCisgICAgc25tcGRfcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoImRlbGl2ZXJCeU5vdGlmeU1lc3NhZ2VOdW1iZXJPaWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwYXJzZV9tZXNzYWdlX251bWJlcl9vaWRfY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIC8qIFhYWDogcmVzZXQgdG8gZGVmYXVsdCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPSUQiKTsKKworICAgIHNubXBkX3JlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJkZWxpdmVyQnlOb3RpZnlNYXhNZXNzYWdlTnVtYmVyT2lkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGFyc2VfbWF4X21lc3NhZ2VfbnVtYmVyX29pZF9jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgLyogWFhYOiByZXNldCB0byBkZWZhdWx0ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9JRCIpOworCisgICAgLyogY3JlYXRlIHRoZSBjb250YWluZXIgdG8gc3RvcmUgdGhlIGNvbmZpZyBvYmplY3RzKi8KKyAgICBkZWxpdmVyX2NvbnRhaW5lciA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImRlbGl2ZXJCeU5vdGlmeTpmaWZvIik7CisgICAgaWYgKE5VTEwgPT0gZGVsaXZlcl9jb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImRlbGl2ZXJCeU5vdGlmeTogZmFpbGVkIHRvIGluaXRpYWxpemUgb3VyIGRhdGEgY29udGFpbmVyXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBkZWxpdmVyX2NvbnRhaW5lci0+Y29udGFpbmVyX25hbWUgPSBzdHJkdXAoImRlbGl2ZXJCeU5vdGlmeSIpOworICAgIGRlbGl2ZXJfY29udGFpbmVyLT5jb21wYXJlID0gKG5ldHNubXBfY29udGFpbmVyX2NvbXBhcmUgKikgX2RlbGl2ZXJfY29tcGFyZTsKKworICAgIC8qIHNldCB0aGUgZGVmYXVsdHMgKi8KKyAgICBkZWZhdWx0X21heF9zaXplID0gREVGQVVMVF9NQVhfREVMSVZFUl9TSVpFOworCisgICAgYWxhcm1fcmVnID0gMDsKK30KKwordm9pZAorX3BhcnNlX2NvbmZpZ19vaWQoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmxpbmUsCisgICAgICAgICAgICAgICAgICBvaWQgKm9pZF9zdG9yZSwgc2l6ZV90ICpvaWRfc3RvcmVfbGVuKSB7CisgICAgc2l6ZV90IHRtcF9sZW4gPSBNQVhfT0lEX0xFTjsKKyAgICAvKiBwYXJzZSB0aGUgT0lEIGdpdmVuICovCisKKyAgICBpZiAoIXNubXBfcGFyc2Vfb2lkKGxpbmUsIG9pZF9zdG9yZSwgJnRtcF9sZW4pKSB7CisgICAgICAgIGNoYXIgYnVmW1NQUklOVF9NQVhfTEVOXTsKKyAgICAgICAgc25wcmludGYoYnVmLCBTUFJJTlRfTUFYX0xFTi0xLCAidW5rbm93biAlcyBPSUQ6ICVzIiwgdG9rZW4sIGxpbmUpOworICAgICAgICBjb25maWdfcGVycm9yKGJ1Zik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAqb2lkX3N0b3JlX2xlbiA9IHRtcF9sZW47Cit9CisKK3ZvaWQKK3BhcnNlX2RhdGFfbm90aWZpY2F0aW9uX29pZF9jb25maWcoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmxpbmUpIHsKKyAgICBfcGFyc2VfY29uZmlnX29pZCh0b2tlbiwgbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICBkYXRhX25vdGlmaWNhdGlvbl9vaWQsICZkYXRhX25vdGlmaWNhdGlvbl9vaWRfbGVuKTsKK30KKwordm9pZAorcGFyc2VfcGVyaW9kaWNfdGltZV9vaWRfY29uZmlnKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpsaW5lKSB7CisgICAgX3BhcnNlX2NvbmZpZ19vaWQodG9rZW4sIGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9wZXJpb2RpY190aW1lX29pZCwgJm5ldHNubXBfcGVyaW9kaWNfdGltZV9vaWRfbGVuKTsKK30KKwordm9pZAorcGFyc2VfbWVzc2FnZV9udW1iZXJfb2lkX2NvbmZpZyhjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqbGluZSkgeworICAgIF9wYXJzZV9jb25maWdfb2lkKHRva2VuLCBsaW5lLAorICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbWVzc2FnZV9udW1iZXJfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICZuZXRzbm1wX21lc3NhZ2VfbnVtYmVyX29pZF9sZW4pOworfQorCit2b2lkCitwYXJzZV9tYXhfbWVzc2FnZV9udW1iZXJfb2lkX2NvbmZpZyhjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqbGluZSkgeworICAgIF9wYXJzZV9jb25maWdfb2lkKHRva2VuLCBsaW5lLAorICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbWF4X21lc3NhZ2VfbnVtYmVyX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAmbmV0c25tcF9tYXhfbWVzc2FnZV9udW1iZXJfb2lkX2xlbik7Cit9CisKK3ZvaWQKK3BhcnNlX2RlbGl2ZXJfY29uZmlnKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpsaW5lKSB7CisgICAgY29uc3QgY2hhciAqY3AgPSBsaW5lOworICAgIGNoYXIgYnVmW1NQUklOVF9NQVhfTEVOXTsKKyAgICBzaXplX3QgYnVmX2xlbiA9IFNQUklOVF9NQVhfTEVOOworICAgIGludCBtYXhfc2l6ZSA9IERFRkFVTFRfTUFYX0RFTElWRVJfU0laRTsKKyAgICBpbnQgZnJlcXVlbmN5OworICAgIG9pZCB0YXJnZXRfb2lkW01BWF9PSURfTEVOXTsKKyAgICBzaXplX3QgdGFyZ2V0X29pZF9sZW4gPSBNQVhfT0lEX0xFTjsKKyAgICBkZWxpdmVyX2J5X25vdGlmeSAqbmV3X25vdGlmeSA9IE5VTEw7CisgICAgaW50IGZsYWdzID0gMDsKKworICAgIHdoaWxlKGNwICYmICpjcCA9PSAnLScpIHsKKyAgICAgICAgc3dpdGNoICgqKGNwKzEpKSB7CisgICAgICAgIGNhc2UgJ3MnOgorICAgICAgICAgICAgY3AgPSBza2lwX3Rva2VuX2NvbnN0KGNwKTsKKyAgICAgICAgICAgIGlmICghY3ApIHsKKyAgICAgICAgICAgICAgICBjb25maWdfcGVycm9yKCJubyBhcmd1bWVudCBnaXZlbiB0byAtcyIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1heF9zaXplID0gYXRvaShjcCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlICdwJzoKKyAgICAgICAgICAgIGZsYWdzID0gZmxhZ3MgfCBORVRTTk1QX0RFTElWRVJfTk9fUEVSSU9EX09JRDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgJ20nOgorICAgICAgICAgICAgZmxhZ3MgPSBmbGFncyB8IE5FVFNOTVBfREVMSVZFUl9OT19NU0dfQ09VTlRTOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoInVua25vd24gZmxhZyIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNwID0gc2tpcF90b2tlbl9jb25zdChjcCk7CisgICAgfQorCisgICAgaWYgKCFjcCkgeworICAgICAgICBjb25maWdfcGVycm9yKCJubyBmcmVxdWVuY3kgZ2l2ZW4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb3B5X253b3JkKGNwLCBidWYsIGJ1Zl9sZW4pOworICAgIGZyZXF1ZW5jeSA9IG5ldHNubXBfc3RyaW5nX3RpbWVfdG9fc2VjcyhidWYpOworICAgIGNwID0gc2tpcF90b2tlbl9jb25zdChjcCk7CisKKyAgICBpZiAoZnJlcXVlbmN5IDw9IDApIHsKKyAgICAgICAgY29uZmlnX3BlcnJvcigiaWxsZWdhbCBmcmVxdWVuY3kgZ2l2ZW4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghY3ApIHsKKyAgICAgICAgY29uZmlnX3BlcnJvcigibm8gT0lEIGdpdmVuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKiBwYXJzZSB0aGUgT0lEIGdpdmVuICovCisgICAgaWYgKCFzbm1wX3BhcnNlX29pZChjcCwgdGFyZ2V0X29pZCwgJnRhcmdldF9vaWRfbGVuKSkgeworICAgICAgICBjb25maWdfcGVycm9yKCJ1bmtub3duIGRlbGl2ZXJCeU5vdGlmeSBPSUQiKTsKKyAgICAgICAgREVCVUdNU0dUTCgoImRlbGl2ZXJCeU5vdGlmeSIsICJUaGUgT0lEIHdpdGggdGhlIHByb2JsZW06ICVzXG4iLCBjcCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyogc2V0IHVwIHRoZSBvYmplY3QgdG8gc3RvcmUgYWxsIHRoZSBkYXRhICovCisgICAgbmV3X25vdGlmeSA9IFNOTVBfTUFMTE9DX1RZUEVERUYoZGVsaXZlcl9ieV9ub3RpZnkpOworICAgIG5ld19ub3RpZnktPmZyZXF1ZW5jeSA9IGZyZXF1ZW5jeTsKKyAgICBuZXdfbm90aWZ5LT5tYXhfcGFja2V0X3NpemUgPSBtYXhfc2l6ZTsKKyAgICBuZXdfbm90aWZ5LT5sYXN0X3J1biA9IHRpbWUoTlVMTCk7CisgICAgbmV3X25vdGlmeS0+bmV4dF9ydW4gPSBuZXdfbm90aWZ5LT5sYXN0X3J1biArIGZyZXF1ZW5jeTsKKyAgICBuZXdfbm90aWZ5LT5mbGFncyA9IGZsYWdzOworCisgICAgbmV3X25vdGlmeS0+dGFyZ2V0ID0gbWFsbG9jKHRhcmdldF9vaWRfbGVuICogc2l6ZW9mKG9pZCkpOworICAgIG5ld19ub3RpZnktPnRhcmdldF9sZW4gPSB0YXJnZXRfb2lkX2xlbjsKKyAgICBtZW1jcHkobmV3X25vdGlmeS0+dGFyZ2V0LCB0YXJnZXRfb2lkLCB0YXJnZXRfb2lkX2xlbipzaXplb2Yob2lkKSk7CisKKyAgICAvKiBYWFg6IG5lZWQgdG8gZG8gdGhlIHdob2xlIGNvbnRhaW5lciAqLworICAgIHNubXBfYWxhcm1fcmVnaXN0ZXIoY2FsY3VsYXRlX3RpbWVfdW50aWxfbmV4dF9ydW4obmV3X25vdGlmeSwgTlVMTCksIDAsIAorICAgICAgICAgICAgICAgICAgICAgICAgJmRlbGl2ZXJfZXhlY3V0ZSwgTlVMTCk7CisKKyAgICAvKiBhZGQgaXQgdG8gdGhlIGNvbnRhaW5lciAqLworICAgIENPTlRBSU5FUl9JTlNFUlQoZGVsaXZlcl9jb250YWluZXIsIG5ld19ub3RpZnkpOworICAgIF9zY2hlZHVsZV9uZXh0X2V4ZWN1dGVfdGltZSgpOworfQorCit2b2lkCitwYXJzZV9kZWxpdmVyX21heHNpemVfY29uZmlnKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpsaW5lKSB7CisgICAgZGVmYXVsdF9tYXhfc2l6ZSA9IGF0b2kobGluZSk7Cit9CisKK3N0YXRpYyB2b2lkCitfZnJlZV9kZWxpdmVyX29iaihkZWxpdmVyX2J5X25vdGlmeSAqb2JqLCB2b2lkICpjb250ZXh0KSB7CisgICAgbmV0c25tcF9hc3NlcnRfb3JfcmV0dXJuKG9iaiAhPSBOVUxMLCApOworICAgIFNOTVBfRlJFRShvYmotPnRhcmdldCk7CisgICAgU05NUF9GUkVFKG9iaik7Cit9CisKK3ZvaWQKK2ZyZWVfZGVsaXZlcl9jb25maWcodm9pZCkgeworICAgIGRlZmF1bHRfbWF4X3NpemUgPSBERUZBVUxUX01BWF9ERUxJVkVSX1NJWkU7CisgICAgQ09OVEFJTkVSX0NMRUFSKGRlbGl2ZXJfY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMgKikgX2ZyZWVfZGVsaXZlcl9vYmosIE5VTEwpOworICAgIGlmIChhbGFybV9yZWcpIHsKKyAgICAgICAgc25tcF9hbGFybV91bnJlZ2lzdGVyKGFsYXJtX3JlZyk7CisgICAgICAgIGFsYXJtX3JlZyA9IDA7CisgICAgfQorfQorCit2b2lkCitkZWxpdmVyX2V4ZWN1dGUodW5zaWduZWQgaW50IGNsaWVudHJlZywgdm9pZCAqY2xpZW50YXJnKSB7CisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJzLCAqd2Fsa2VyLCAqZGVsaXZlcl9ub3RpZmljYXRpb24sICp2YXJ0bXA7CisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICpyZWFkeV9mb3JfZGVsaXZlcnlbTUFYX01FU1NBR0VfQ09VTlRdOworICAgIG5ldHNubXBfc2Vzc2lvbiAqc2VzczsKKyAgICBpbnQgcmMsIGk7CisgICAgZGVsaXZlcl9ieV9ub3RpZnkgKm9iajsKKyAgICBuZXRzbm1wX2l0ZXJhdG9yICppdGVyYXRvcjsKKyAgICB0aW1lX3QgICAgICAgICAgICBub3cgPSB0aW1lKE5VTEwpOworICAgIHVfbG9uZyAgICAgICAgICAgIG1lc3NhZ2VfY291bnQsIG1heF9tZXNzYWdlX2NvdW50LCB0bXBfbG9uZzsKKyAgICB1X2xvbmcgICAgICAgICAgICptYXhfbWVzc2FnZV9jb3VudF9wdHJzW01BWF9NRVNTQUdFX0NPVU5UXTsKKyAgICBzaXplX3QgICAgICAgICAgICBlc3RpbWF0ZWRfcGt0X3NpemU7CisKKyAgICBERUJVR01TR1RMKCgiZGVsaXZlckJ5Tm90aWZ5IiwgIlN0YXJ0aW5nIHRoZSBleGVjdXRlIHJvdXRpbmVcbiIpKTsKKworICAgIC8qIFhYWDogbmVlZCB0byBkbyB0aGUgd2hvbGUgY29udGFpbmVyICovCisgICAgaXRlcmF0b3IgPSBDT05UQUlORVJfSVRFUkFUT1IoZGVsaXZlcl9jb250YWluZXIpOworICAgIG5ldHNubXBfYXNzZXJ0X29yX3JldHVybihpdGVyYXRvciAhPSBOVUxMLCk7CisKKyAgICBzZXNzID0gbmV0c25tcF9xdWVyeV9nZXRfZGVmYXVsdF9zZXNzaW9uKCk7CisKKyAgICBmb3Iob2JqID0gSVRFUkFUT1JfRklSU1QoaXRlcmF0b3IpOyBvYmo7CisgICAgICAgIG9iaiA9IElURVJBVE9SX05FWFQoaXRlcmF0b3IpKSB7CisKKyAgICAgICAgLyogY2hlY2sgaWYgd2UgbmVlZCB0byBydW4gdGhpcyBvbmUgeWV0ICovCisgICAgICAgIGlmIChvYmotPm5leHRfcnVuID4gbm93KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgbWF4X21lc3NhZ2VfY291bnQgPSAxOworICAgICAgICBtZXNzYWdlX2NvdW50ID0gMDsKKworICAgICAgICAvKiBmaWxsIHRoZSB2YXJiaW5kIGxpc3Qgd2l0aCB0aGUgdGFyZ2V0IG9iamVjdCAqLworICAgICAgICB2YXJzID0gU05NUF9NQUxMT0NfVFlQRURFRiggbmV0c25tcF92YXJpYWJsZV9saXN0ICk7CisgICAgICAgIHNubXBfc2V0X3Zhcl9vYmppZCggdmFycywgb2JqLT50YXJnZXQsIG9iai0+dGFyZ2V0X2xlbiApOworICAgICAgICB2YXJzLT50eXBlID0gQVNOX05VTEw7CisKKyAgICAgICAgLyogd2FsayB0aGUgT0lEIHRyZWUgZm9yIHRoZSBkYXRhICovCisgICAgICAgIHJjID0gbmV0c25tcF9xdWVyeV93YWxrKHZhcnMsIHNlc3MpOworICAgICAgICBpZiAocmMgIT0gU05NUF9FUlJfTk9FUlJPUikgeworICAgICAgICAgICAgLyogWFhYOiBkaXNhYmxlPyBhbmQgcmVzZXQgdGhlIG5leHQgcXVlcnkgdGltZSBwb2ludCEgKi8KKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJkZWxpdmVyQnlOb3RpZnk6IGZhaWxlZCB0byBpc3N1ZSB0aGUgcXVlcnkiKTsKKyAgICAgICAgICAgIElURVJBVE9SX1JFTEVBU0UoaXRlcmF0b3IpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgd2Fsa2VyID0gdmFyczsKKworICAgICAgICB3aGlsZSAod2Fsa2VyKSB7CisKKyAgICAgICAgICAgIC8qIFNldCB1cCB0aGUgbm90aWZpY2F0aW9uIGl0c2VsZiAqLworICAgICAgICAgICAgZGVsaXZlcl9ub3RpZmljYXRpb24gPSBOVUxMOworICAgICAgICAgICAgZXN0aW1hdGVkX3BrdF9zaXplID0gQkFTRV9QQUNLRVRfU0laRTsKKworICAgICAgICAgICAgLyogYWRkIGluIHRoZSBub3RpZmljYXRpb24gdHlwZSAqLworICAgICAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmZGVsaXZlcl9ub3RpZmljYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamlkX3NubXB0cmFwLCBPSURfTEVOR1RIKG9iamlkX3NubXB0cmFwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX09CSkVDVF9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9ub3RpZmljYXRpb25fb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX25vdGlmaWNhdGlvbl9vaWRfbGVuICogc2l6ZW9mKG9pZCkpOworICAgICAgICAgICAgZXN0aW1hdGVkX3BrdF9zaXplICs9IEVTVElNQVRFX1ZBUl9TSVpFKGRlbGl2ZXJfbm90aWZpY2F0aW9uKTsKKworICAgICAgICAgICAgLyogYWRkIGluIHRoZSBjdXJyZW50IG1lc3NhZ2UgbnVtYmVyIGluIHRoaXMgc2VxdWVuY2UgKi8KKyAgICAgICAgICAgIGlmICghKG9iai0+ZmxhZ3MgJiBORVRTTk1QX0RFTElWRVJfTk9fUEVSSU9EX09JRCkpIHsKKyAgICAgICAgICAgICAgICB0bXBfbG9uZyA9IG9iai0+ZnJlcXVlbmN5OworICAgICAgICAgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJmRlbGl2ZXJfbm90aWZpY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9wZXJpb2RpY190aW1lX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcGVyaW9kaWNfdGltZV9vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX1VOU0lHTkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHZvaWQgKikgJnRtcF9sb25nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRtcF9sb25nKSk7CisgICAgICAgICAgICAgICAgZXN0aW1hdGVkX3BrdF9zaXplICs9IEVTVElNQVRFX1ZBUl9TSVpFKGRlbGl2ZXJfbm90aWZpY2F0aW9uKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogYWRkIGluIHRoZSBjdXJyZW50IG1lc3NhZ2UgbnVtYmVyIGluIHRoaXMgc2VxdWVuY2UgKi8KKyAgICAgICAgICAgIG1lc3NhZ2VfY291bnQrKzsKKyAgICAgICAgICAgIGlmIChtZXNzYWdlX2NvdW50ID4gTUFYX01FU1NBR0VfQ09VTlQpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZGVsaXZlcnkgY29uc3RydWN0IGdyZXcgdG9vIGxhcmdlLi4uICBnaXZpbmcgdXBcbiIpOworICAgICAgICAgICAgICAgIC8qIFhYWDogZGlzYWJsZSBpdCAqLworICAgICAgICAgICAgICAgIC8qIFhYWDogc2VuZCBhIG5vdGlmaWNhdGlvbiBhYm91dCBpdD8gKi8KKyAgICAgICAgICAgICAgICBJVEVSQVRPUl9SRUxFQVNFKGl0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIHN0b3JlIHRoaXMgZm9yIGxhdGVyIHVwZGF0aW5nIGFuZCBzZW5kaW5nICovCisgICAgICAgICAgICByZWFkeV9mb3JfZGVsaXZlcnlbbWVzc2FnZV9jb3VudC0xXSA9IGRlbGl2ZXJfbm90aWZpY2F0aW9uOworCisgICAgICAgICAgICBpZiAoIShvYmotPmZsYWdzICYgTkVUU05NUF9ERUxJVkVSX05PX01TR19DT1VOVFMpKSB7CisgICAgICAgICAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmZGVsaXZlcl9ub3RpZmljYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX21lc3NhZ2VfbnVtYmVyX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbWVzc2FnZV9udW1iZXJfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTl9VTlNJR05FRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCB2b2lkICopICZtZXNzYWdlX2NvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG1lc3NhZ2VfY291bnQpKTsKKyAgICAgICAgICAgICAgICBlc3RpbWF0ZWRfcGt0X3NpemUgKz0gRVNUSU1BVEVfVkFSX1NJWkUoZGVsaXZlcl9ub3RpZmljYXRpb24pOworCisgICAgICAgICAgICAgICAgLyogYWRkIGluIHRoZSBtYXggbWVzc2FnZSBudW1iZXIgY291bnQgZm9yIHRoaXMgc2VxdWVuY2UgKi8KKyAgICAgICAgICAgICAgICB2YXJ0bXAgPSBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZkZWxpdmVyX25vdGlmaWNhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbWF4X21lc3NhZ2VfbnVtYmVyX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbWF4X21lc3NhZ2VfbnVtYmVyX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU05fVU5TSUdORUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3Qgdm9pZCAqKSAmbWF4X21lc3NhZ2VfY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobWF4X21lc3NhZ2VfY291bnQpKTsKKyAgICAgICAgICAgICAgICBlc3RpbWF0ZWRfcGt0X3NpemUgKz0gRVNUSU1BVEVfVkFSX1NJWkUoZGVsaXZlcl9ub3RpZmljYXRpb24pOworCisgICAgICAgICAgICAgICAgLyogd2UnbGwgbmVlZCB0byB1cGRhdGUgdGhpcyBjb3VudGVyIGxhdGVyICovCisgICAgICAgICAgICAgICAgbWF4X21lc3NhZ2VfY291bnRfcHRyc1ttZXNzYWdlX2NvdW50LTFdID0KKyAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXJ0bXAtPnZhbC5pbnRlZ2VyOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBqdXN0IHRvIGJlIHN1cmUgKi8KKyAgICAgICAgICAgICAgICBtYXhfbWVzc2FnZV9jb3VudF9wdHJzW21lc3NhZ2VfY291bnQtMV0gPSBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvKiBjb3B5IGluIHRoZSBjb2xsZWN0ZWQgZGF0YSAqLworICAgICAgICAgICAgd2hpbGUod2Fsa2VyKSB7CisgICAgICAgICAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmZGVsaXZlcl9ub3RpZmljYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWxrZXItPm5hbWUsIHdhbGtlci0+bmFtZV9sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWxrZXItPnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWxrZXItPnZhbC5zdHJpbmcsIHdhbGtlci0+dmFsX2xlbik7CisKKyAgICAgICAgICAgICAgICAvKiA4IGJ5dGUgcGFkZGluZyBmb3IgQVNOIGVuY29kaW5ncyBhbiBhIGZldyBleHRyYSBPSUQgYnl0ZXMgKi8KKyAgICAgICAgICAgICAgICBlc3RpbWF0ZWRfcGt0X3NpemUgKz0gRVNUSU1BVEVfVkFSX1NJWkUod2Fsa2VyKTsKKworICAgICAgICAgICAgICAgIHdhbGtlciA9IHdhbGtlci0+bmV4dF92YXJpYWJsZTsKKworICAgICAgICAgICAgICAgIC8qIGlmIHRoZSBjdXJyZW50IHNpemUgUExVUyB0aGUgbmV4dCBvbmUgKHdoaWNoIGlzIG5vdworICAgICAgICAgICAgICAgICAgIGluICd3YWxrZXInKSBpcyBncmVhdGVyIHRoYW4gdGhlIGxpbWV0IHRoZW4gd2Ugc3RvcCBoZXJlICovCisgICAgICAgICAgICAgICAgaWYgKG9iai0+bWF4X3BhY2tldF9zaXplID4gMCAmJgorICAgICAgICAgICAgICAgICAgICBlc3RpbWF0ZWRfcGt0X3NpemUgKworICAgICAgICAgICAgICAgICAgICBFU1RJTUFURV9WQVJfU0laRSh3YWxrZXIpID49CisgICAgICAgICAgICAgICAgICAgIG9iai0+bWF4X3BhY2tldF9zaXplKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogc2VuZCBvdXQgdGhlIG5vdGlmaWNhdGlvbiAqLworICAgICAgICAgICAgc2VuZF92MnRyYXAoZGVsaXZlcl9ub3RpZmljYXRpb24pOworICAgICAgICB9CisKKyAgICAgICAgZm9yKGkgPSAwOyBpIDwgbWVzc2FnZV9jb3VudDsgaSsrKSB7CisgICAgICAgICAgICAvKiB1cGRhdGUgdGhlIG1heCBjb3VudCBwb2ludGVyICovCisgICAgICAgICAgICBpZiAobWF4X21lc3NhZ2VfY291bnRfcHRyc1tpXSkKKyAgICAgICAgICAgICAgICAqKG1heF9tZXNzYWdlX2NvdW50X3B0cnNbaV0pID0gbWVzc2FnZV9jb3VudDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgc2VuZF92MnRyYXAocmVhZHlfZm9yX2RlbGl2ZXJ5W2ldKTsKKyAgICAgICAgICAgIHNubXBfZnJlZV92YXJiaW5kKHJlYWR5X2Zvcl9kZWxpdmVyeVtpXSk7CisgICAgICAgIH0KKworICAgICAgICBzbm1wX2ZyZWVfdmFyYmluZCh2YXJzKTsKKworICAgICAgICAvKiByZWNvcmQgdGhpcyBhcyB0aGUgdGltZSBwcm9jZXNzZWQgKi8KKyAgICAgICAgLyogWFhYOiB0aGlzIG1heSBjcmVlcCBieSBhIGZldyBzZWNvbmRzIHdoZW4gcHJvY2Vzc2luZyBhbmQgbWF5YmUgd2Ugd2FudAorICAgICAgICAgICB0byBkbyB0aGUgdGltZSBzdGFtcCBhdCB0aGUgYmVnaW5uaW5nPyAqLworICAgICAgICBvYmotPmxhc3RfcnVuID0gdGltZShOVUxMKTsKKyAgICB9CisgICAgSVRFUkFUT1JfUkVMRUFTRShpdGVyYXRvcik7CisKKyAgICAvKiBjYWxjdWxhdGUgdGhlIG5leHQgdGltZSB0byBzbGVlcCBmb3IgKi8KKyAgICBfc2NoZWR1bGVfbmV4dF9leGVjdXRlX3RpbWUoKTsKK30KKworaW50CitjYWxjdWxhdGVfdGltZV91bnRpbF9uZXh0X3J1bihkZWxpdmVyX2J5X25vdGlmeSAqaXQsIHRpbWVfdCAqbm93KSB7CisgICAgdGltZV90ICAgICAgICAgIGxvY2FsX25vdzsKKworICAgIC8qIGlmIHdlIHdlcmVuJ3QgcGFzc2VkIGEgdmFsaWQgdGltZSwgZmFrZSBpdCAqLworICAgIGlmIChOVUxMID09IG5vdykgeworICAgICAgICBub3cgPSAmbG9jYWxfbm93OworICAgICAgICB0aW1lKCZsb2NhbF9ub3cpOworICAgIH0KKworICAgIG5ldHNubXBfYXNzZXJ0X29yX3JldHVybihpdC0+bGFzdF9ydW4gIT0gMCwgLTEpOworCisgICAgLyogc2V0IHRoZSB0aW1lc3RhbXAgZm9yIHRoZSBuZXh0IHJ1biAqLworICAgIGl0LT5uZXh0X3J1biA9IGl0LT5sYXN0X3J1biArIGl0LT5mcmVxdWVuY3k7CisKKyAgICAvKiBob3cgbG9uZyB1bnRpbCB0aGUgbmV4dCBydW4/ICovCisgICAgcmV0dXJuIGl0LT5uZXh0X3J1biAtICpub3c7Cit9CisKK3N0YXRpYyB2b2lkCitfc2NoZWR1bGVfbmV4dF9leGVjdXRlX3RpbWUodm9pZCkgeworICAgIHRpbWVfdCAgICAgICAgICAgICBsb2NhbF9ub3cgPSB0aW1lKE5VTEwpOworICAgIGludCAgICAgICAgICAgICAgICBzbGVlcF9mb3IgPSBJTlRfTUFYOworICAgIGludCAgICAgICAgICAgICAgICBuZXh0X3RpbWU7CisgICAgbmV0c25tcF9pdGVyYXRvciAgKml0ZXJhdG9yOworICAgIGRlbGl2ZXJfYnlfbm90aWZ5ICpvYmo7CisKKyAgICBERUJVR01TR1RMKCgiZGVsaXZlckJ5Tm90aWZ5IiwgIkNhbGN1bGF0aW5nIHNjaGVkdWxpbmcgbmVlZGVkXG4iKSk7CisKKyAgICBpZiAoYWxhcm1fcmVnKSB7CisgICAgICAgIHNubXBfYWxhcm1fdW5yZWdpc3RlcihhbGFybV9yZWcpOworICAgICAgICBhbGFybV9yZWcgPSAwOworICAgIH0KKworICAgIGl0ZXJhdG9yID0gQ09OVEFJTkVSX0lURVJBVE9SKGRlbGl2ZXJfY29udGFpbmVyKTsKKyAgICBpZiAoTlVMTCA9PSBpdGVyYXRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yKG9iaiA9IElURVJBVE9SX0ZJUlNUKGl0ZXJhdG9yKTsgb2JqOworICAgICAgICBvYmogPSBJVEVSQVRPUl9ORVhUKGl0ZXJhdG9yKSkgeworICAgICAgICBuZXh0X3RpbWUgPSBjYWxjdWxhdGVfdGltZV91bnRpbF9uZXh0X3J1bihvYmosICZsb2NhbF9ub3cpOworICAgICAgICBERUJVR01TR1RMKCgiZGVsaXZlckJ5Tm90aWZ5IiwgIiAgb2JqOiAlZCAobGFzdD0lZCwgbmV4dF9ydW49JWQpXG4iLCBuZXh0X3RpbWUsIG9iai0+bGFzdF9ydW4sIG9iai0+bmV4dF9ydW4pKTsKKyAgICAgICAgaWYgKG5leHRfdGltZSA8IHNsZWVwX2ZvcikKKyAgICAgICAgICAgIHNsZWVwX2ZvciA9IG5leHRfdGltZTsKKyAgICB9CisKKyAgICBpZiAoc2xlZXBfZm9yICE9IElOVF9NQVgpIHsKKyAgICAgICAgaWYgKHNsZWVwX2ZvciA8IDEpCisgICAgICAgICAgICBzbGVlcF9mb3IgPSAxOyAvKiBnaXZlIGF0IGxlYXN0IGEgc21hbGwgcGF1c2UgKi8KKyAgICAgICAgREVCVUdNU0dUTCgoImRlbGl2ZXJCeU5vdGlmeSIsICJOZXh0IGV4ZWN1dGlvbiBpbiAlZCAobWF4ID0gJWQpIHNlY29uZHNcbiIsCisgICAgICAgICAgICAgICAgICAgIHNsZWVwX2ZvciwgSU5UX01BWCkpOworICAgICAgICBhbGFybV9yZWcgPSBzbm1wX2FsYXJtX3JlZ2lzdGVyKHNsZWVwX2ZvciwgMCwgJmRlbGl2ZXJfZXhlY3V0ZSwgTlVMTCk7CisgICAgfQorCisgICAgSVRFUkFUT1JfUkVMRUFTRShpdGVyYXRvcik7Cit9CisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmggYi9hZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5MmMzNjYKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5oCkBAIC0wLDAgKzEsNDAgQEAKKyNpZm5kZWYgREVMSVZFUkJZTk9USUZZX0gKKyNkZWZpbmUgREVMSVZFUkJZTk9USUZZX0ggMQorCisjaWYgVElNRV9XSVRIX1NZU19USU1FCisjIGluY2x1ZGUgPHN5cy90aW1lLmg+CisjIGluY2x1ZGUgPHRpbWUuaD4KKyNlbHNlCisjIGlmIEhBVkVfU1lTX1RJTUVfSAorIyAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyMgZWxzZQorIyAgaW5jbHVkZSA8dGltZS5oPgorIyBlbmRpZgorI2VuZGlmCisKK2NvbmZpZ19hZGRfbWliKE5FVC1TTk1QLVBFUklPRElDLU5PVElGWS1NSUIpCisKK3ZvaWQgaW5pdF9kZWxpdmVyQnlOb3RpZnkodm9pZCk7CisKK3ZvaWQgcGFyc2VfZGVsaXZlcl9jb25maWcoY29uc3QgY2hhciAqLCBjaGFyICopOwordm9pZCBmcmVlX2RlbGl2ZXJfY29uZmlnKHZvaWQpOworCitTTk1QQWxhcm1DYWxsYmFjayBkZWxpdmVyX2V4ZWN1dGU7CisKKyNkZWZpbmUgTkVUU05NUF9ERUxJVkVSX05PX1BFUklPRF9PSUQgICAweDAxCisjZGVmaW5lIE5FVFNOTVBfREVMSVZFUl9OT19NU0dfQ09VTlRTICAgMHgwMgorCisvKiBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzICovCit0eXBlZGVmIHN0cnVjdCBkZWxpdmVyX2J5X25vdGlmeV9zIHsKKyAgIGludCAgICAgZnJlcXVlbmN5OworICAgaW50ICAgICBsYXN0X3J1bjsKKyAgIGludCAgICAgbmV4dF9ydW47CisgICBvaWQgICAgKnRhcmdldDsKKyAgIHNpemVfdCAgdGFyZ2V0X2xlbjsKKyAgIGludCAgICAgbWF4X3BhY2tldF9zaXplOworICAgaW50ICAgICBmbGFnczsKK30gZGVsaXZlcl9ieV9ub3RpZnk7CisKK2ludCBjYWxjdWxhdGVfdGltZV91bnRpbF9uZXh0X3J1bihkZWxpdmVyX2J5X25vdGlmeSAqaXQsIHRpbWVfdCAqbm93KTsKKworI2VuZGlmIC8qIGRlbGl2ZXJCeU5vdGlmeV9oICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4uaCBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi5oCmluZGV4IDgwZjNlMWYuLjZiN2NkZDUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi5oCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi5oCkBAIC0zLDcgKzMsMTAgQEAKICAqLwogY29uZmlnX3JlcXVpcmUoZGlzbWFuL2V2ZW50LW1pYikKIGNvbmZpZ19yZXF1aXJlKGRpc21hbi9leHByZXNzaW9uLW1pYikKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCisvKiB0aGUgc2NoZWR1bGUgbWliIGlzIGFsbCBhYm91dCB3cml0aW5nIChTRVRzKSAqLyAKIGNvbmZpZ19yZXF1aXJlKGRpc21hbi9zY2hlZHVsZSkKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAvKiBjb25maWdfcmVxdWlyZShkaXNtYW4vbnNsb29rdXAtbWliKSAgICovCiAvKiBjb25maWdfcmVxdWlyZShkaXNtYW4vcGluZy1taWIpICAgICAgICovCiAvKiBjb25maWdfcmVxdWlyZShkaXNtYW4vdHJhY2Vyb3V0ZS1taWIpICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnQuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudC5jCmluZGV4IDA1MzYwZDMuLmJjNGZmMGIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudC5jCkBAIC00LDEyICs0LDE3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgImRpc21hbi9ldmVudC9tdGVFdmVudC5oIgogI2luY2x1ZGUgImRpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmgiCiAjaW5jbHVkZSAiZGlzbWFuL2V2ZW50L210ZU9iamVjdHMuaCIKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGRpc21hbl9kZWJ1Z2dpbmcsIGxpYm5ldHNubXBtaWJzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG10ZWV2ZW50LCBsaWJuZXRzbm1wbWlicykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihtdGVldmVudF9yZW1vdmVlbnRyeSwgbXRlZXZlbnQpCisKIG5ldHNubXBfdGRhdGEgKmV2ZW50X3RhYmxlX2RhdGE7CiAKICAgICAvKgpAQCAtMTE5LDYgKzEyNCw3IEBACiAgICAgICoKICAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0RJU01BTl9ERUJVR0dJTkcKIHZvaWQKIF9tdGVFdmVudF9kdW1wKHZvaWQpCiB7CkBAIC0xNDAsNyArMTQ2LDcgQEAKICAgICB9CiAgICAgREVCVUdNU0dUTCgoImRpc21hbjpldmVudDpkdW1wIiwgIkV2ZW50VGFibGUgJWQgZW50cmllc1xuIiwgaSkpOwogfQotCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ESVNNQU5fREVCVUdHSU5HICovCiAKIC8qCiAgKiBDcmVhdGUgYSBuZXcgcm93IGluIHRoZSBldmVudCB0YWJsZSAKQEAgLTE5Niw2ICsyMDIsNyBAQAogfQogCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NVEVFVkVOVF9SRU1PVkVFTlRSWQogLyoKICAqIFJlbW92ZSBhIHJvdyBmcm9tIHRoZSBldmVudCB0YWJsZSAKICAqLwpAQCAtMjA4LDkgKzIxNSw5IEBACiAgICAgICAgIHJldHVybjsgICAgICAgICAgICAgICAgIC8qIE5vdGhpbmcgdG8gcmVtb3ZlICovCiAgICAgZW50cnkgPSAoc3RydWN0IG10ZUV2ZW50ICopCiAgICAgICAgIG5ldHNubXBfdGRhdGFfcmVtb3ZlX2FuZF9kZWxldGVfcm93KGV2ZW50X3RhYmxlX2RhdGEsIHJvdyk7Ci0gICAgaWYgKGVudHJ5KQotICAgICAgICBTTk1QX0ZSRUUoZW50cnkpOworICAgIFNOTVBfRlJFRShlbnRyeSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NVEVFVkVOVF9SRU1PVkVFTlRSWSAqLwogCiAgICAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICoKQEAgLTIyMiwxMCArMjI5LDEyIEBACiBfbXRlRXZlbnRfZmlyZV9ub3RpZnkoIHN0cnVjdCBtdGVFdmVudCAgICAqZXZlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtdGVUcmlnZ2VyICAqdHJpZ2dlciwKICAgICAgICAgICAgICAgICAgICAgICAgb2lkICpzdWZmaXgsIHNpemVfdCBzZnhfbGVuICk7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogaW50CiBfbXRlRXZlbnRfZmlyZV9zZXQoICAgIHN0cnVjdCBtdGVFdmVudCAgICAqZXZlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtdGVUcmlnZ2VyICAqdHJpZ2dlciwKICAgICAgICAgICAgICAgICAgICAgICAgb2lkICpzdWZmaXgsIHNpemVfdCBzZnhfbGVuICk7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIGludAogbXRlRXZlbnRfZmlyZSggY2hhciAqb3duZXIsIGNoYXIgKmV2ZW50LCAgICAgIC8qIEV2ZW50IHRvIGludm9rZSAgICAqLwpAQCAtMjYxLDExICsyNzAsMTMgQEAKICAgICAgICAgX210ZUV2ZW50X2ZpcmVfbm90aWZ5KCBlbnRyeSwgdHJpZ2dlciwgc3VmZml4LCBzX2xlbiApOwogICAgICAgICBmaXJlZCA9IDE7CiAgICAgfQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBpZiAoZW50cnktPm10ZUV2ZW50QWN0aW9ucyAmIE1URV9FVkVOVF9TRVQpIHsKICAgICAgICAgREVCVUdNU0dUTCgoImRpc21hbjpldmVudDpmaXJlIiwgIkZpcmluZyBzZXQgZXZlbnRcbiIpKTsKICAgICAgICAgX210ZUV2ZW50X2ZpcmVfc2V0KCBlbnRyeSwgdHJpZ2dlciwgc3VmZml4LCBzX2xlbiApOwogICAgICAgICBmaXJlZCA9IDE7CiAgICAgfQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgaWYgKCFmaXJlZCkKICAgICAgICAgREVCVUdNU0dUTCgoImRpc21hbjpldmVudDpmaXJlIiwgIk1hdGNoZWQgZXZlbnQgaXMgZW1wdHlcbiIpKTsKQEAgLTQzNCw2ICs0NDUsNyBAQAogfQogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBpbnQKIF9tdGVFdmVudF9maXJlX3NldCggc3RydWN0IG10ZUV2ZW50ICAgKmVudHJ5LCAgICAgIC8qIFRoZSBldmVudCB0byBmaXJlICovCiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtdGVUcmlnZ2VyICp0cmlnZ2VyLCAgICAvKiBUcmlnZ2VyIHRoYXQgZmlyZWQgKi8KQEAgLTQ3Nyw0ICs0ODksNCBAQAogCiAgICAgLyogWFhYIC0gTmVlZCB0byBjaGVjayByZXN1bHQgKi8KIH0KLQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Q29uZi5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Q29uZi5jCmluZGV4IDcyZTNhZTMuLjI0MTkyYTYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudENvbmYuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRDb25mLmMKQEAgLTQsNiArNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oPgpAQCAtMTEsNiArMTIsNyBAQAogI2luY2x1ZGUgImRpc21hbi9ldmVudC9tdGVFdmVudC5oIgogI2luY2x1ZGUgImRpc21hbi9ldmVudC9tdGVFdmVudENvbmYuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXF1ZXJ5KQogCiAvKiogSW5pdGlhbGl6ZXMgdGhlIG10ZUV2ZW50c0NvbmYgbW9kdWxlICovCiB2b2lkCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYwppbmRleCA5MzRhMWM1Li43ZDJjOTRhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMKQEAgLTcsMTEgKzcsMTkgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAiZGlzbWFuL2V2ZW50L210ZUV2ZW50LmgiCiAjaW5jbHVkZSAiZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGEpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl9vaWQpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKK3N0YXRpYyBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogCiAvKiBJbml0aWFsaXplcyB0aGUgbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZSBtb2R1bGUgKi8KIHZvaWQKQEAgLTIwLDcgKzI4LDYgQEAKICAgICBzdGF0aWMgb2lkICBtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlX29pZFtdICAgPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDg4LCAxLCA0LCAzIH07CiAgICAgc2l6ZV90ICAgICAgbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZV9vaWRfbGVuID0gT0lEX0xFTkdUSChtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlX29pZCk7CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnOwotICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKICAgICAvKgogICAgICAqIEVuc3VyZSB0aGUgKGNvbWJpbmVkKSB0YWJsZSBjb250YWluZXIgaXMgYXZhaWxhYmxlLi4uCkBAIC0zMCwxMSArMzcsMTkgQEAKICAgICAvKgogICAgICAqIC4uLiB0aGVuIHNldCB1cCB0aGUgTUlCIGludGVyZmFjZSB0byB0aGUgbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZSBzbGljZQogICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICByZWcgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibXRlRXZlbnROb3RpZmljYXRpb25UYWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGVfaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZV9vaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGVfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFKTsKKyNlbHNlIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICByZWcgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibXRlRXZlbnROb3RpZmljYXRpb25UYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGVfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGVfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIHRhYmxlX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8pOwogICAgIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKHRhYmxlX2luZm8sCkBAIC01Miw2ICs2NywxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudF90YWJsZV9kYXRhKSk7CiB9CiAKK3ZvaWQKK3NodXRkb3duX210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUodm9pZCkKK3sKKyAgICBpZiAodGFibGVfaW5mbykgeworCW5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSh0YWJsZV9pbmZvKTsKKwl0YWJsZV9pbmZvID0gTlVMTDsKKyAgICB9Cit9CiAKIAogLyoqIGhhbmRsZXMgcmVxdWVzdHMgZm9yIHRoZSBtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlIHRhYmxlICovCkBAIC0xMDksNiArMTMyLDggQEAKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAorCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAvKgogICAgICAgICAgKiBXcml0ZS1zdXBwb3J0CiAgICAgICAgICAqLwpAQCAtMjM1LDYgKzI2MCw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmggYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5oCmluZGV4IGJlMmJjYzYuLmFiZDYxMTAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuaApAQCAtOSw2ICs5LDcgQEAKICAqIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAKICAqLwogdm9pZCAgICAgICAgICAgIGluaXRfbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBzaHV0ZG93bl9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlKHZvaWQpOwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZV9oYW5kbGVyOwogCiAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFNldFRhYmxlLmMKaW5kZXggOTc3ODNjMS4uZWU2OTZmMSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5jCkBAIC03LDExICs3LDIwIEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgImRpc21hbi9ldmVudC9tdGVFdmVudC5oIgogI2luY2x1ZGUgImRpc21hbi9ldmVudC9tdGVFdmVudFNldFRhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfb2lkKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHJ1dGh2YWx1ZSkKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKworc3RhdGljIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKIC8qIEluaXRpYWxpemVzIHRoZSBtdGVFdmVudFNldFRhYmxlIG1vZHVsZSAqLwogdm9pZApAQCAtMjAsNyArMjksNiBAQAogICAgIHN0YXRpYyBvaWQgIG10ZUV2ZW50U2V0VGFibGVfb2lkW10gICA9IHsgMSwgMywgNiwgMSwgMiwgMSwgODgsIDEsIDQsIDQgfTsKICAgICBzaXplX3QgICAgICBtdGVFdmVudFNldFRhYmxlX29pZF9sZW4gPSBPSURfTEVOR1RIKG10ZUV2ZW50U2V0VGFibGVfb2lkKTsKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWc7Ci0gICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAogICAgIC8qCiAgICAgICogRW5zdXJlIHRoZSAoY29tYmluZWQpIHRhYmxlIGNvbnRhaW5lciBpcyBhdmFpbGFibGUuLi4KQEAgLTMwLDExICszOCwxOSBAQAogICAgIC8qCiAgICAgICogLi4uIHRoZW4gc2V0IHVwIHRoZSBNSUIgaW50ZXJmYWNlIHRvIHRoZSBtdGVFdmVudFNldFRhYmxlIHNsaWNlCiAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJtdGVFdmVudFNldFRhYmxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlRXZlbnRTZXRUYWJsZV9oYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVFdmVudFNldFRhYmxlX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlRXZlbnRTZXRUYWJsZV9vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUpOworI2Vsc2UgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJtdGVFdmVudFNldFRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlRXZlbnRTZXRUYWJsZV9oYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVFdmVudFNldFRhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlRXZlbnRTZXRUYWJsZV9vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSk7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgdGFibGVfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyk7CiAgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGFibGVfaW5mbywKQEAgLTUyLDYgKzY4LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X3RhYmxlX2RhdGEpKTsKIH0KIAordm9pZAorc2h1dGRvd25fbXRlRXZlbnRTZXRUYWJsZSh2b2lkKQoreworICAgIGlmICh0YWJsZV9pbmZvKSB7CisJbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCXRhYmxlX2luZm8gPSBOVUxMOworICAgIH0KK30KKwogCiAvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlIG10ZUV2ZW50U2V0VGFibGUgdGFibGUgKi8KIGludApAQCAtMTIzLDYgKzE0OCw3IEBACiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIC8qCiAgICAgICAgICAqIFdyaXRlLXN1cHBvcnQKICAgICAgICAgICovCkBAIC0yNzgsNiArMzA0LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFNldFRhYmxlLmgKaW5kZXggYjhjYjEyNC4uNzFlYzA5YSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5oCkBAIC05LDYgKzksNyBAQAogICogZnVuY3Rpb24gZGVjbGFyYXRpb25zIAogICovCiB2b2lkICAgICAgICAgICAgaW5pdF9tdGVFdmVudFNldFRhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX210ZUV2ZW50U2V0VGFibGUodm9pZCk7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBtdGVFdmVudFNldFRhYmxlX2hhbmRsZXI7CiAKIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuYwppbmRleCAyYzIxZTY3Li5jNWI1MzRlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmMKQEAgLTcsMTIgKzcsMjQgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAidXRpbGl0aWVzL2lxdWVyeS5oIgogI2luY2x1ZGUgImRpc21hbi9ldmVudC9tdGVFdmVudC5oIgogI2luY2x1ZGUgImRpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGlxdWVyeSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGlxdWVyeV9wZHVfc2Vzc2lvbikKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUobXRlZXZlbnRfcmVtb3ZlZW50cnkpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl90cnV0aHZhbHVlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGFfaW5zZXJ0X3JvdykKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKworc3RhdGljIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKIC8qIEluaXRpYWxpemVzIHRoZSBtdGVFdmVudFRhYmxlIG1vZHVsZSAqLwogdm9pZApAQCAtMjEsNyArMzMsNiBAQAogICAgIHN0YXRpYyBvaWQgIG10ZUV2ZW50VGFibGVfb2lkW10gICA9IHsgMSwgMywgNiwgMSwgMiwgMSwgODgsIDEsIDQsIDIgfTsKICAgICBzaXplX3QgICAgICBtdGVFdmVudFRhYmxlX29pZF9sZW4gPSBPSURfTEVOR1RIKG10ZUV2ZW50VGFibGVfb2lkKTsKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWc7Ci0gICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAogICAgIC8qCiAgICAgICogRW5zdXJlIHRoZSAoY29tYmluZWQpIHRhYmxlIGNvbnRhaW5lciBpcyBhdmFpbGFibGUuLi4KQEAgLTMxLDExICs0MiwxOSBAQAogICAgIC8qCiAgICAgICogLi4uIHRoZW4gc2V0IHVwIHRoZSBNSUIgaW50ZXJmYWNlIHRvIHRoZSBtdGVFdmVudFRhYmxlIHNsaWNlCiAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJtdGVFdmVudFRhYmxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlRXZlbnRUYWJsZV9oYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVFdmVudFRhYmxlX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlRXZlbnRUYWJsZV9vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUpOworI2Vsc2UgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJtdGVFdmVudFRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlRXZlbnRUYWJsZV9oYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVFdmVudFRhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlRXZlbnRUYWJsZV9vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSk7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgdGFibGVfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyk7CiAgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGFibGVfaW5mbywKQEAgLTUzLDYgKzcyLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X3RhYmxlX2RhdGEpKTsKIH0KIAordm9pZAorc2h1dGRvd25fbXRlRXZlbnRUYWJsZSh2b2lkKQoreworICAgIGlmICh0YWJsZV9pbmZvKSB7CisJbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCXRhYmxlX2luZm8gPSBOVUxMOworICAgIH0KK30KIAogLyoqIGhhbmRsZXMgcmVxdWVzdHMgZm9yIHRoZSBtdGVFdmVudFRhYmxlIHRhYmxlICovCiBpbnQKQEAgLTExMSw2ICsxMzgsOCBAQAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCisKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIC8qCiAgICAgICAgICAqIFdyaXRlLXN1cHBvcnQKICAgICAgICAgICovCkBAIC0zMzgsNiArMzY3LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKICAgICB9CiAgICAgREVCVUdNU0dUTCgoImRpc21hbjpldmVudDptaWIiLCAiVGFibGUgaGFuZGxlciwgZG9uZVxuIikpOwogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmgKaW5kZXggYTdkNzU2MC4uYWRjMWMzMCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5oCkBAIC05LDYgKzksNyBAQAogICogZnVuY3Rpb24gZGVjbGFyYXRpb25zIAogICovCiB2b2lkICAgICAgICAgICAgaW5pdF9tdGVFdmVudFRhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX210ZUV2ZW50VGFibGUodm9pZCk7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBtdGVFdmVudFRhYmxlX2hhbmRsZXI7CiAKIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0cy5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHMuYwppbmRleCAxMjNhZjdmLi5jZjk1MGMxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0cy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzLmMKQEAgLTIzNiw4ICsyMzYsNyBAQAogICAgICAgICByZXR1cm47ICAgICAgICAgICAgICAgICAvKiBOb3RoaW5nIHRvIHJlbW92ZSAqLwogICAgIGVudHJ5ID0gKHN0cnVjdCBtdGVPYmplY3QgKikKICAgICAgICAgbmV0c25tcF90ZGF0YV9yZW1vdmVfYW5kX2RlbGV0ZV9yb3cob2JqZWN0c190YWJsZV9kYXRhLCByb3cpOwotICAgIGlmIChlbnRyeSkKLSAgICAgICAgU05NUF9GUkVFKGVudHJ5KTsKKyAgICBTTk1QX0ZSRUUoZW50cnkpOwogfQogCiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzVGFibGUuYwppbmRleCA1ODQzZjU4Li5mN2Y2ZTAyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c1RhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5jCkBAIC03LDExICs3LDIxIEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgImRpc21hbi9ldmVudC9tdGVPYmplY3RzLmgiCiAjaW5jbHVkZSAiZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YSkKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl9vaWQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl90cnV0aHZhbHVlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGFfaW5zZXJ0X3JvdykKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKworc3RhdGljIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CisKIC8qKiBJbml0aWFsaXplcyB0aGUgbXRlT2JqZWN0c1RhYmxlIG1vZHVsZSAqLwogdm9pZAogaW5pdF9tdGVPYmplY3RzVGFibGUodm9pZCkKQEAgLTIwLDcgKzMwLDYgQEAKICAgICBzdGF0aWMgb2lkIG10ZU9iamVjdHNUYWJsZV9vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgODgsIDEsIDMsIDEgfTsKICAgICBzaXplX3QgICAgIG10ZU9iamVjdHNUYWJsZV9vaWRfbGVuID0gT0lEX0xFTkdUSChtdGVPYmplY3RzVGFibGVfb2lkKTsKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWc7Ci0gICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAogICAgIC8qCiAgICAgICogRW5zdXJlIHRoZSBvYmplY3QgdGFibGUgY29udGFpbmVyIGlzIGF2YWlsYWJsZS4uLgpAQCAtMzAsMTEgKzM5LDE5IEBACiAgICAgLyoKICAgICAgKiAuLi4gdGhlbiBzZXQgdXAgdGhlIE1JQiBpbnRlcmZhY2UgdG8gdGhpcyB0YWJsZQogICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICByZWcgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibXRlT2JqZWN0c1RhYmxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlT2JqZWN0c1RhYmxlX2hhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZU9iamVjdHNUYWJsZV9vaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZU9iamVjdHNUYWJsZV9vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUpOworI2Vsc2UgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJtdGVPYmplY3RzVGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVPYmplY3RzVGFibGVfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlT2JqZWN0c1RhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlT2JqZWN0c1RhYmxlX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICB0YWJsZV9pbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvKTsKICAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YWJsZV9pbmZvLApAQCAtNTAsNiArNjcsMTUgQEAKICAgICBuZXRzbm1wX3RkYXRhX3JlZ2lzdGVyKHJlZywgb2JqZWN0c190YWJsZV9kYXRhLCB0YWJsZV9pbmZvKTsKIH0KIAordm9pZAorc2h1dGRvd25fbXRlT2JqZWN0c1RhYmxlKHZvaWQpCit7CisgICAgaWYgKHRhYmxlX2luZm8pIHsKKwluZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CisJdGFibGVfaW5mbyA9IE5VTEw7CisgICAgfQorfQorCiAKIC8qKiBoYW5kbGVzIHJlcXVlc3RzIGZvciB0aGUgbXRlT2JqZWN0c1RhYmxlIHRhYmxlICovCiBpbnQKQEAgLTEwNSw2ICsxMzEsNyBAQAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAvKgogICAgICAgICAgKiBXcml0ZS1zdXBwb3J0CiAgICAgICAgICAqLwpAQCAtMzE0LDYgKzM0MSw3IEBACiAgICAgICAgIHNubXBfc3RvcmVfbmVlZGVkKE5VTEwpOwogCiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8gCiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5oCmluZGV4IDE0YmZiMjYuLmY1Y2Q3YmMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c1RhYmxlLmgKQEAgLTksNiArOSw3IEBACiAgKiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgCiAgKi8KIHZvaWQgICAgICAgICAgICBpbml0X210ZU9iamVjdHNUYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBzaHV0ZG93bl9tdGVPYmplY3RzVGFibGUodm9pZCk7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBtdGVPYmplY3RzVGFibGVfaGFuZGxlcjsKIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5jCmluZGV4IGYwZDQ1OTIuLjdmY2ExYjAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuYwpAQCAtNCwxMSArNCwxNiBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJkaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5oIgogI2luY2x1ZGUgImRpc21hbi9ldmVudC9tdGVFdmVudC5oIgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoZGlzbWFuX2RlYnVnZ2luZywgbGlibmV0c25tcG1pYnMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobXRldHJpZ2dlciwgbGlibmV0c25tcG1pYnMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobXRldHJpZ2dlcl9yZW1vdmVlbnRyeSwgbXRldHJpZ2dlcikKKwogbmV0c25tcF90ZGF0YSAqdHJpZ2dlcl90YWJsZV9kYXRhOwogCiBvaWQgICAgX3N5c1VwVGltZV9pbnN0YW5jZVtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAxLCAzLCAwIH07CkBAIC01Myw2ICs1OCw3IEBACiAgICAgICoKICAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0RJU01BTl9ERUJVR0dJTkcKIHZvaWQKIF9tdGVUcmlnZ2VyX2R1bXAodm9pZCkKIHsKQEAgLTc0LDcgKzgwLDcgQEAKICAgICB9CiAgICAgREVCVUdNU0dUTCgoImRpc21hbjpldmVudDpkdW1wIiwgIlRyaWdnZXJUYWJsZSAlZCBlbnRyaWVzXG4iLCBpKSk7CiB9Ci0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0RJU01BTl9ERUJVR0dJTkcgKi8KIAogLyoKICAqIENyZWF0ZSBhIG5ldyByb3cgaW4gdGhlIHRyaWdnZXIgdGFibGUgCkBAIC0xNDIsNiArMTQ4LDcgQEAKICAgICByZXR1cm4gcm93OwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTVRFVFJJR0dFUl9SRU1PVkVFTlRSWQogLyoKICAqIFJlbW92ZSBhIHJvdyBmcm9tIHRoZSB0cmlnZ2VyIHRhYmxlIAogICovCkBAIC0xNTksNiArMTY2LDcgQEAKICAgICAgICAgU05NUF9GUkVFKGVudHJ5KTsKICAgICB9CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NVEVUUklHR0VSX1JFTU9WRUVOVFJZICovCiAKICAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJCb29sZWFuVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMKaW5kZXggYWQ0NjlkNy4uZWQxZWMzMCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJCb29sZWFuVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jCkBAIC03LDExICs3LDE5IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgImRpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmgiCiAjaW5jbHVkZSAiZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJCb29sZWFuVGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGEpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl90cnV0aHZhbHVlKQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCitzdGF0aWMgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAogLyoqIEluaXRpYWxpemVzIHRoZSBtdGVUcmlnZ2VyQm9vbGVhblRhYmxlIG1vZHVsZSAqLwogdm9pZApAQCAtMjAsNyArMjgsNiBAQAogICAgIHN0YXRpYyBvaWQgbXRlVEJvb2xUYWJsZV9vaWRbXSAgICA9IHsgMSwgMywgNiwgMSwgMiwgMSwgODgsIDEsIDIsIDUgfTsKICAgICBzaXplX3QgICAgIG10ZVRCb29sVGFibGVfb2lkX2xlbiAgPSBPSURfTEVOR1RIKG10ZVRCb29sVGFibGVfb2lkKTsKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWc7Ci0gICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAogICAgIC8qCiAgICAgICogRW5zdXJlIHRoZSAoY29tYmluZWQpIHRhYmxlIGNvbnRhaW5lciBpcyBhdmFpbGFibGUuLi4KQEAgLTMwLDExICszNywxOSBAQAogICAgIC8qCiAgICAgICogLi4uIHRoZW4gc2V0IHVwIHRoZSBNSUIgaW50ZXJmYWNlIHRvIHRoZSBtdGVUcmlnZ2VyQm9vbGVhblRhYmxlIHNsaWNlCiAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJtdGVUcmlnZ2VyQm9vbGVhblRhYmxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlckJvb2xlYW5UYWJsZV9oYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVUQm9vbFRhYmxlX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVEJvb2xUYWJsZV9vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUpOworI2Vsc2UgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJtdGVUcmlnZ2VyQm9vbGVhblRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlckJvb2xlYW5UYWJsZV9oYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVUQm9vbFRhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVEJvb2xUYWJsZV9vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUpOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIHRhYmxlX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8pOwogICAgIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKHRhYmxlX2luZm8sCkBAIC01MSw2ICs2NiwxNCBAQAogICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXZlbnQ6aW5pdCIsICJUcmlnZ2VyIEJvb2wgVGFibGVcbiIpKTsKIH0KIAordm9pZAorc2h1dGRvd25fbXRlVHJpZ2dlckJvb2xlYW5UYWJsZSh2b2lkKQoreworICAgIGlmICh0YWJsZV9pbmZvKSB7CisJbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCXRhYmxlX2luZm8gPSBOVUxMOworICAgIH0KK30KIAogLyoqIGhhbmRsZXMgcmVxdWVzdHMgZm9yIHRoZSBtdGVUcmlnZ2VyQm9vbGVhblRhYmxlIHRhYmxlICovCiBpbnQKQEAgLTEyOCw2ICsxNTEsNyBAQAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAvKgogICAgICAgICAgKiBXcml0ZS1zdXBwb3J0CiAgICAgICAgICAqLwpAQCAtMjg1LDYgKzMwOSw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmggYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5oCmluZGV4IGQyZDJkY2IuLmYyZGRkNzcgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJCb29sZWFuVGFibGUuaApAQCAtOSw2ICs5LDcgQEAKICAqIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAKICAqLwogdm9pZCAgICAgICAgICAgIGluaXRfbXRlVHJpZ2dlckJvb2xlYW5UYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBzaHV0ZG93bl9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlKHZvaWQpOwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgbXRlVHJpZ2dlckJvb2xlYW5UYWJsZV9oYW5kbGVyOwogCiAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJDb25mLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckNvbmYuYwppbmRleCAzY2U5MTA2Li5lN2JiNjliIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckNvbmYuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckNvbmYuYwpAQCAtNCw2ICs0LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmg+CkBAIC0xNCw2ICsxNSw3IEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpcXVlcnkpCiAKIC8qKiBJbml0aWFsaXplcyB0aGUgbXRlVHJpZ2dlckNvbmYgbW9kdWxlICovCiB2b2lkCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckRlbHRhVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5jCmluZGV4IGUwOTI5ODIuLmMyYzJlOGUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5jCkBAIC03LDExICs3LDE3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgImRpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmgiCiAjaW5jbHVkZSAiZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJEZWx0YVRhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX29pZCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3RydXRodmFsdWUpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIC8qKiBJbml0aWFsaXplcyB0aGUgbXRlVHJpZ2dlckRlbHRhVGFibGUgbW9kdWxlICovCiB2b2lkCkBAIC0yMSw2ICsyNyw3IEBACiAgICAgc2l6ZV90ICAgICAgbXRlVERlbHRhVGFibGVfb2lkX2xlbiA9IE9JRF9MRU5HVEgobXRlVERlbHRhVGFibGVfb2lkKTsKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWc7CiAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKKyAgICBpbnQgICAgICAgICByYzsKIAogICAgIC8qCiAgICAgICogRW5zdXJlIHRoZSAoY29tYmluZWQpIHRhYmxlIGNvbnRhaW5lciBpcyBhdmFpbGFibGUuLi4KQEAgLTMwLDExICszNywxOSBAQAogICAgIC8qCiAgICAgICogLi4uIHRoZW4gc2V0IHVwIHRoZSBNSUIgaW50ZXJmYWNlIHRvIHRoZSBtdGVUcmlnZ2VyRGVsdGFUYWJsZSBzbGljZQogICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICByZWcgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibXRlVHJpZ2dlckRlbHRhVGFibGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyRGVsdGFUYWJsZV9oYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVURGVsdGFUYWJsZV9vaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVREZWx0YVRhYmxlX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSk7CisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oIm10ZVRyaWdnZXJEZWx0YVRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlckRlbHRhVGFibGVfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVERlbHRhVGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVURGVsdGFUYWJsZV9vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSk7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgdGFibGVfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyk7CiAgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGFibGVfaW5mbywKQEAgLTQ3LDcgKzYyLDEwIEBACiAgICAgdGFibGVfaW5mby0+bWF4X2NvbHVtbiA9IENPTFVNTl9NVEVUUklHR0VSREVMVEFESVNDT05USU5VSVRZSURUWVBFOwogCiAgICAgLyogUmVnaXN0ZXIgdGhpcyB1c2luZyB0aGUgKGNvbW1vbikgdHJpZ2dlcl90YWJsZV9kYXRhIGNvbnRhaW5lciAqLwotICAgIG5ldHNubXBfdGRhdGFfcmVnaXN0ZXIocmVnLCB0cmlnZ2VyX3RhYmxlX2RhdGEsIHRhYmxlX2luZm8pOworICAgIHJjID0gbmV0c25tcF90ZGF0YV9yZWdpc3RlcihyZWcsIHRyaWdnZXJfdGFibGVfZGF0YSwgdGFibGVfaW5mbyk7CisgICAgaWYgKHJjICE9IFNOTVBFUlJfU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuOworICAgIG5ldHNubXBfaGFuZGxlcl9vd25zX3RhYmxlX2luZm8ocmVnLT5oYW5kbGVyLT5uZXh0KTsKICAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV2ZW50OmluaXQiLCAiVHJpZ2dlciBEZWx0YSBUYWJsZVxuIikpOwogfQogCkBAIC0xMDksNiArMTI3LDcgQEAKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgLyoKICAgICAgICAgICogV3JpdGUtc3VwcG9ydAogICAgICAgICAgKi8KQEAgLTI0OCw2ICsyNjcsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMKaW5kZXggMjUwMjZlZS4uMjJiNjgzZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuYwpAQCAtNywxMSArNywxOCBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJkaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5oIgogI2luY2x1ZGUgImRpc21hbi9ldmVudC9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGEpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKK3N0YXRpYyBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogCiAvKiBJbml0aWFsaXplcyB0aGUgbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlIG1vZHVsZSAqLwogdm9pZApAQCAtMjAsNyArMjcsNyBAQAogICAgIHN0YXRpYyBvaWQgbXRlVEV4aXN0VGFibGVfb2lkW10gICA9IHsgMSwgMywgNiwgMSwgMiwgMSwgODgsIDEsIDIsIDQgfTsKICAgICBzaXplX3QgICAgIG10ZVRFeGlzdFRhYmxlX29pZF9sZW4gPSBPSURfTEVOR1RIKG10ZVRFeGlzdFRhYmxlX29pZCk7CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnOwotICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CisgICAgaW50ICAgICAgICByYzsKIAogICAgIC8qCiAgICAgICogRW5zdXJlIHRoZSAoY29tYmluZWQpIHRhYmxlIGNvbnRhaW5lciBpcyBhdmFpbGFibGUuLi4KQEAgLTMwLDExICszNywxOSBAQAogICAgIC8qCiAgICAgICogLi4uIHRoZW4gc2V0IHVwIHRoZSBNSUIgaW50ZXJmYWNlIHRvIHRoZSBtdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUgc2xpY2UKICAgICAgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oIm10ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZV9oYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVURXhpc3RUYWJsZV9vaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVRFeGlzdFRhYmxlX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSk7CisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oIm10ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZV9oYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVURXhpc3RUYWJsZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVRFeGlzdFRhYmxlX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICB0YWJsZV9pbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvKTsKICAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YWJsZV9pbmZvLApAQCAtNDcsNyArNjIsMTEgQEAKICAgICB0YWJsZV9pbmZvLT5tYXhfY29sdW1uID0gQ09MVU1OX01URVRSSUdHRVJFWElTVEVOQ0VFVkVOVDsKIAogICAgIC8qIFJlZ2lzdGVyIHRoaXMgdXNpbmcgdGhlIChjb21tb24pIHRyaWdnZXJfdGFibGVfZGF0YSBjb250YWluZXIgKi8KLSAgICBuZXRzbm1wX3RkYXRhX3JlZ2lzdGVyKHJlZywgdHJpZ2dlcl90YWJsZV9kYXRhLCB0YWJsZV9pbmZvKTsKKyAgICByYyA9IG5ldHNubXBfdGRhdGFfcmVnaXN0ZXIocmVnLCB0cmlnZ2VyX3RhYmxlX2RhdGEsIHRhYmxlX2luZm8pOworICAgIGlmIChyYyAhPSBTTk1QRVJSX1NVQ0NFU1MpCisgICAgICAgIHJldHVybjsKKworICAgIG5ldHNubXBfaGFuZGxlcl9vd25zX3RhYmxlX2luZm8ocmVnLT5oYW5kbGVyLT5uZXh0KTsKICAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV2ZW50OmluaXQiLCAiVHJpZ2dlciBFeGlzdCBUYWJsZVxuIikpOwogfQogCkBAIC0xMjMsNiArMTQyLDcgQEAKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgLyoKICAgICAgICAgICogV3JpdGUtc3VwcG9ydAogICAgICAgICAgKi8KQEAgLTI2NCw2ICsyODQsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRhYmxlLmMKaW5kZXggMTQ1ZjA3OS4uODhjMmY4YiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuYwpAQCAtNywxMiArNywyNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgInV0aWxpdGllcy9pcXVlcnkuaCIKICNpbmNsdWRlICJkaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5oIgogI2luY2x1ZGUgImRpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXF1ZXJ5KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGEpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXF1ZXJ5X3BkdV9zZXNzaW9uKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl9vaWQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl91aW50KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUobXRldHJpZ2dlcl9yZW1vdmVlbnRyeSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3RydXRodmFsdWUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YV9pbnNlcnRfcm93KQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCitzdGF0aWMgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAogLyoqIEluaXRpYWxpemVzIHRoZSBtdGVUcmlnZ2VyVGFibGUgbW9kdWxlICovCiB2b2lkCkBAIC0yMSw3ICszNiw2IEBACiAgICAgc3RhdGljIG9pZCAgbXRlVHJpZ2dlclRhYmxlX29pZFtdICAgPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDg4LCAxLCAyLCAyIH07CiAgICAgc2l6ZV90ICAgICAgbXRlVHJpZ2dlclRhYmxlX29pZF9sZW4gPSBPSURfTEVOR1RIKG10ZVRyaWdnZXJUYWJsZV9vaWQpOwogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZzsKLSAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogCiAgICAgLyoKICAgICAgKiBFbnN1cmUgdGhlIChjb21iaW5lZCkgdGFibGUgY29udGFpbmVyIGlzIGF2YWlsYWJsZS4uLgpAQCAtMzEsMTEgKzQ1LDE5IEBACiAgICAgLyoKICAgICAgKiAuLi4gdGhlbiBzZXQgdXAgdGhlIE1JQiBpbnRlcmZhY2UgdG8gdGhlIG10ZVRyaWdnZXJUYWJsZSBzbGljZQogICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICByZWcgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibXRlVHJpZ2dlclRhYmxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlclRhYmxlX2hhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJUYWJsZV9vaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJUYWJsZV9vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUpOworI2Vsc2UgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJtdGVUcmlnZ2VyVGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyVGFibGVfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlclRhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlclRhYmxlX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICB0YWJsZV9pbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvKTsKICAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YWJsZV9pbmZvLApAQCAtNTIsNiArNzQsMTUgQEAKICAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV2ZW50OmluaXQiLCAiVHJpZ2dlciBUYWJsZVxuIikpOwogfQogCit2b2lkCitzaHV0ZG93bl9tdGVUcmlnZ2VyVGFibGUodm9pZCkKK3sKKyAgICBpZiAodGFibGVfaW5mbykgeworCW5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSh0YWJsZV9pbmZvKTsKKwl0YWJsZV9pbmZvID0gTlVMTDsKKyAgICB9Cit9CisKIAogLyoqIGhhbmRsZXMgcmVxdWVzdHMgZm9yIHRoZSBtdGVUcmlnZ2VyVGFibGUgdGFibGUgKi8KIGludApAQCAtMTUyLDYgKzE4Myw3IEBACiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIC8qCiAgICAgICAgICAqIFdyaXRlLXN1cHBvcnQKICAgICAgICAgICovCkBAIC00NjgsNiArNTAwLDkgQEAKICAgICAgICAgc25tcF9zdG9yZV9uZWVkZWQoTlVMTCk7CiAKICAgICAgICAgYnJlYWs7CisKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRhYmxlLmggYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRhYmxlLmgKaW5kZXggZTM4MjYxMi4uYzVjMzkzYSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuaApAQCAtMTEsNiArMTEsNyBAQAogICogZnVuY3Rpb24gZGVjbGFyYXRpb25zIAogICovCiB2b2lkICAgICAgICAgICAgaW5pdF9tdGVUcmlnZ2VyVGFibGUodm9pZCk7Cit2b2lkICAgICAgICAgICAgc2h1dGRvd25fbXRlVHJpZ2dlclRhYmxlKHZvaWQpOwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgbXRlVHJpZ2dlclRhYmxlX2hhbmRsZXI7CiAKIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMKaW5kZXggMWY2NjQ5ZS4uNWFlZDBjOCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYwpAQCAtNywxMSArNywxOCBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJkaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5oIgogI2luY2x1ZGUgImRpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGEpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKK3N0YXRpYyBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogCiAvKiogSW5pdGlhbGl6ZXMgdGhlIG10ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSBtb2R1bGUgKi8KIHZvaWQKQEAgLTIwLDcgKzI3LDYgQEAKICAgICBzdGF0aWMgb2lkIG10ZVRUaHJlc2hUYWJsZV9vaWRbXSAgID0geyAxLCAzLCA2LCAxLCAyLCAxLCA4OCwgMSwgMiwgNiB9OwogICAgIHNpemVfdCAgICAgbXRlVFRocmVzaFRhYmxlX29pZF9sZW4gPSBPSURfTEVOR1RIKG10ZVRUaHJlc2hUYWJsZV9vaWQpOwogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZzsKLSAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogCiAgICAgLyoKICAgICAgKiBFbnN1cmUgdGhlIChjb21iaW5lZCkgdGFibGUgY29udGFpbmVyIGlzIGF2YWlsYWJsZS4uLgpAQCAtMzAsMTEgKzM2LDE5IEBACiAgICAgLyoKICAgICAgKiAuLi4gdGhlbiBzZXQgdXAgdGhlIE1JQiBpbnRlcmZhY2UgdG8gdGhlIG10ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSBzbGljZQogICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICByZWcgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlX2hhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVRUaHJlc2hUYWJsZV9vaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVRUaHJlc2hUYWJsZV9vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUpOworI2Vsc2UgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJtdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyVGhyZXNob2xkVGFibGVfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVFRocmVzaFRhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVFRocmVzaFRhYmxlX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICB0YWJsZV9pbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvKTsKICAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YWJsZV9pbmZvLApAQCAtNTEsNiArNjUsMTUgQEAKICAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV2ZW50OmluaXQiLCAiVHJpZ2dlciBUaHJlc2hvbGQgVGFibGVcbiIpKTsKIH0KIAordm9pZAorc2h1dGRvd25fbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlKHZvaWQpCit7CisgICAgaWYgKHRhYmxlX2luZm8pIHsKKwluZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CisJdGFibGVfaW5mbyA9IE5VTEw7CisgICAgfQorfQorCiAKIC8qKiBoYW5kbGVzIHJlcXVlc3RzIGZvciB0aGUgbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlIHRhYmxlICovCiBpbnQKQEAgLTE2NSw2ICsxODgsNyBAQAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAvKgogICAgICAgICAgKiBXcml0ZS1zdXBwb3J0CiAgICAgICAgICAqLwpAQCAtMzU4LDYgKzM4Miw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5oCmluZGV4IDI4MmNjNjcuLjgwZjVmMmEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmgKQEAgLTksNiArOSw3IEBACiAgKiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgCiAgKi8KIHZvaWQgICAgICAgICAgICBpbml0X210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBzaHV0ZG93bl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUodm9pZCk7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBtdGVUcmlnZ2VyVGhyZXNob2xkVGFibGVfaGFuZGxlcjsKIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEVycm9yVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEVycm9yVGFibGUuYwppbmRleCBkYmMyMjE3Li5hNzU5ZTJkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFcnJvclRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXJyb3JUYWJsZS5jCkBAIC03LDExICs3LDE0IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgImRpc21hbi9leHByL2V4cEV4cHJlc3Npb24uaCIKICNpbmNsdWRlICJkaXNtYW4vZXhwci9leHBFcnJvclRhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhKQorCiAvKiBJbml0aWFsaXplcyB0aGUgZXhwRXhwcmVzc2lvbkVycm9yVGFibGUgbW9kdWxlICovCiB2b2lkCiBpbml0X2V4cEVycm9yVGFibGUodm9pZCkKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb25Db25mLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uQ29uZi5jCmluZGV4IDBhNWYzZmQuLjVjMDhjNzIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb25Db25mLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvbkNvbmYuYwpAQCAtNCw2ICs0LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTE0LDYgKzE1LDggQEAKICNpbmNsdWRlICJkaXNtYW4vZXhwci9leHBPYmplY3QuaCIKICNpbmNsdWRlICJkaXNtYW4vZXhwci9leHBFeHByZXNzaW9uQ29uZi5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpcXVlcnkpCisKIC8qIEluaXRpYWxpemVzIHRoZSBleHBFeHByZXNzaW9uQ29uZiBtb2R1bGUgKi8KIHZvaWQKIGluaXRfZXhwRXhwcmVzc2lvbkNvbmYodm9pZCkKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb25UYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvblRhYmxlLmMKaW5kZXggOTA2YjVlNS4uNzlhYTcxNSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvblRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvblRhYmxlLmMKQEAgLTcsMTIgKzcsMjEgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAidXRpbGl0aWVzL2lxdWVyeS5oIgogI2luY2x1ZGUgImRpc21hbi9leHByL2V4cEV4cHJlc3Npb24uaCIKICNpbmNsdWRlICJkaXNtYW4vZXhwci9leHBFeHByZXNzaW9uVGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXF1ZXJ5KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGEpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YV9pbnNlcnRfcm93KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXF1ZXJ5X3BkdV9zZXNzaW9uKQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAvKiBJbml0aWFsaXplcyB0aGUgZXhwRXhwcmVzc2lvblRhYmxlIG1vZHVsZSAqLwogdm9pZAogaW5pdF9leHBFeHByZXNzaW9uVGFibGUodm9pZCkKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdENvbmYuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdENvbmYuYwppbmRleCBjNzVjOTM0Li42NDA2OWQ5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3RDb25mLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0Q29uZi5jCkBAIC00LDEyICs0LDE1IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgInV0aWxpdGllcy9pcXVlcnkuaCIKICNpbmNsdWRlICJkaXNtYW4vZXhwci9leHBPYmplY3QuaCIKICNpbmNsdWRlICJkaXNtYW4vZXhwci9leHBPYmplY3RDb25mLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGlxdWVyeSkKKwogLyogSW5pdGlhbGl6ZXMgdGhlIGV4cE9iamVjdENvbmYgbW9kdWxlICovCiB2b2lkCiBpbml0X2V4cE9iamVjdENvbmYodm9pZCkKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3RUYWJsZS5jCmluZGV4IDljNDljMGQuLmFkZGE0MzggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdFRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0VGFibGUuYwpAQCAtNywxMSArNywxOCBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJkaXNtYW4vZXhwci9leHBPYmplY3QuaCIKICNpbmNsdWRlICJkaXNtYW4vZXhwci9leHBPYmplY3RUYWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YSkKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl9vaWQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl90cnV0aHZhbHVlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGFfaW5zZXJ0X3JvdykKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogLyogSW5pdGlhbGl6ZXMgdGhlIGV4cE9iamVjdFRhYmxlIG1vZHVsZSAqLwogdm9pZApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwRXJyb3JUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwRXJyb3JUYWJsZS5jCmluZGV4IGM2MDVlOWEuLjFmZWIzZWUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cEVycm9yVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBFcnJvclRhYmxlLmMKQEAgLTEzOSw0ICsxMzksNiBAQAogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPmV4cEVycm9ySW5zdGFuY2VMZW4gKiBzaXplb2Yob2lkKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+ZXhwRXJyb3JJbnN0YW5jZTsKICAgICB9CisKKyAgICByZXR1cm4gTlVMTDsKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cEV4cHJlc3Npb25UYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwRXhwcmVzc2lvblRhYmxlLmMKaW5kZXggNTNjYTUyYS4uY2UzYjBkYiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwRXhwcmVzc2lvblRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwRXhwcmVzc2lvblRhYmxlLmMKQEAgLTIxLDYgKzIxLDcgQEAKICAqIFRoaXMgc2hvdWxkIGFsd2F5cyBiZSBpbmNsdWRlZCBmaXJzdCBiZWZvcmUgYW55dGhpbmcgZWxzZSAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaWYgSEFWRV9TVERMSUJfSAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2VuZGlmCkBAIC00NSw2ICs0NiwxMCBAQAogI2luY2x1ZGUgImV4cE9iamVjdFRhYmxlLmgiCiAjaW5jbHVkZSAiZXhwVmFsdWVUYWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0ZG9tYWluX3N1cHBvcnQpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaGVhZGVyX2NvbXBsZXhfZmluZF9lbnRyeSkKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogLyoKICAqIGV4cEV4cHJlc3Npb25UYWJsZV92YXJpYWJsZXNfb2lkOgpAQCAtMzE4LDkgKzMyMyw3IEBACiAgICAgY2hhciAgICAgICAgICAgKmNwdHI7CiAgICAgc2l6ZV90ICAgICAgICAgIHRtcGludDsKICAgICBzdHJ1Y3QgZXhwRXhwcmVzc2lvblRhYmxlX2RhdGEgKlN0b3JhZ2VUbXA7Ci0gICAgc3RydWN0IGV4cE9iamVjdFRhYmxlX2RhdGEgKk9iamVjdFN0b3JhZ2VUbXA7Ci0gICAgc3RydWN0IGV4cFZhbHVlVGFibGVfZGF0YSAqVmFsdWVTdG9yYWdlVG1wOwotICAgIHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqaGNpbmRleCwgKmhjX29iamVjdCwgKmhjX3ZhbHVlOworICAgIHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqaGNpbmRleDsKIAogICAgIERFQlVHTVNHVEwoKCJleHBFeHByZXNzaW9uVGFibGUiLCAic3RvcmluZyBkYXRhLi4uICAiKSk7CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cE9iamVjdFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBPYmplY3RUYWJsZS5jCmluZGV4IGY2MWFjMWYuLmU1NmYyNWEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cE9iamVjdFRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwT2JqZWN0VGFibGUuYwpAQCAtMjIsNiArMjIsNyBAQAogICogVGhpcyBzaG91bGQgYWx3YXlzIGJlIGluY2x1ZGVkIGZpcnN0IGJlZm9yZSBhbnl0aGluZyBlbHNlIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpZiBIQVZFX1NURExJQl9ICiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjZW5kaWYKQEAgLTM0LDYgKzM1LDkgQEAKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNlbmRpZgogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaGVhZGVyX2NvbXBsZXhfZmluZF9lbnRyeSkKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogLyoKICAqIG1pbmltYWwgaW5jbHVkZSBkaXJlY3RpdmVzIApAQCAtMjE3LDcgKzIyMSw2IEBACiBwYXJzZV9leHBPYmplY3RUYWJsZShjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqbGluZSkKIHsKICAgICBzaXplX3QgICAgICAgICAgdG1waW50OwotICAgIG9pZCAgICAgICAgICAgICp0bXBvaWQgPSBOVUxMOwogICAgIHN0cnVjdCBleHBPYmplY3RUYWJsZV9kYXRhICpTdG9yYWdlVG1wID0KICAgICAgICAgU05NUF9NQUxMT0NfU1RSVUNUKGV4cE9iamVjdFRhYmxlX2RhdGEpOwogCkBAIC00MDQsNiArNDA3LDcgQEAKICAgICAgICAgfQogICAgIH0KICAgICBERUJVR01TR1RMKCgiZXhwT2JqZWN0VGFibGUiLCAic3RvcmFnZSBkb25lXG4iKSk7CisgICAgcmV0dXJuIDA7CiB9CiAKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwVmFsdWVUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwVmFsdWVUYWJsZS5jCmluZGV4IGQzYzAyOTUuLjZiMzE1YzYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cFZhbHVlVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBWYWx1ZVRhYmxlLmMKQEAgLTI0NSw3ICsyNDUsNiBAQAogICAgIGNoYXIgICAgICAgICAgICpyZXN1bHQsICpyZXN1bHRiYWs7CiAgICAgY2hhciAgICAgICAgICAgKnRlbXAsICp0ZW1wYmFrOwogICAgIGNoYXIgICAgICAgICAgICBpbnRjaGFyWzEwXTsKLSAgICBpbnQgICAgICAgICAgICAgZG9sbGFyMSwgZG9sbGFyMjsKICAgICBpbnQgICAgICAgICAgICAgaSA9IDAsIGosIGssIGw7CiAgICAgbG9uZyAgICAgICAgICAgIHZhbHVlOwogICAgIHVuc2lnbmVkIGxvbmcgICByZXN1bHRfdV9sb25nOwpAQCAtMzIyLDcgKzMyMSw2IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzdHJ1Y3QgdmFyaWFibGVfbGlzdCAqdmFyczsKICAgICAgICAgICAgIGludCAgICAgICAgICAgICBzdGF0dXM7Ci0gICAgICAgICAgICBpbnQgICAgICAgICAgICAgY291bnQgPSAxOwogCiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogSW5pdGlhbGl6ZSB0aGUgU05NUCBsaWJyYXJ5CkBAIC0zNjksNyArMzY3LDcgQEAKIAogICAgICAgICAgICAgICAgIHZhcnMgPSByZXNwb25zZS0+dmFyaWFibGVzOwogICAgICAgICAgICAgICAgIHZhbHVlID0gKih2YXJzLT52YWwuaW50ZWdlcik7Ci0gICAgICAgICAgICAgICAgc3ByaW50ZihpbnRjaGFyLCAiJXUiLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgc3ByaW50ZihpbnRjaGFyLCAiJWx1IiwgdmFsdWUpOwogICAgICAgICAgICAgICAgIGZvciAoayA9IDE7IGsgPD0gc3RybGVuKGludGNoYXIpOyBrKyspIHsKICAgICAgICAgICAgICAgICAgICAgKnJlc3VsdCA9IGludGNoYXJbayAtIDFdOwogICAgICAgICAgICAgICAgICAgICByZXN1bHQrKzsKQEAgLTQzMywxNSArNDMxLDExIEBACiAKIAogdm9pZAotYnVpbGRfdmFsdWV0YWJsZSgpCitidWlsZF92YWx1ZXRhYmxlKHZvaWQpCiB7CiAgICAgc3RydWN0IGV4cEV4cHJlc3Npb25UYWJsZV9kYXRhICpleHBzdG9yYWdlOwogICAgIHN0cnVjdCBleHBPYmplY3RUYWJsZV9kYXRhICpvYmpzdG9yYWdlLCAqb2JqZm91bmQgPSBOVUxMOwogICAgIHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqaGNpbmRleCwgKm9iamVjdF9oY2luZGV4OwotICAgIGNoYXIgICAgICAgICAgICpvd25lcjsKLSAgICBzaXplX3QgICAgICAgICAgb3duZXJfbGVuOwotICAgIGNoYXIgICAgICAgICAgICpuYW1lOwotICAgIHNpemVfdCAgICAgICAgICBuYW1lX2xlbjsKICAgICBjaGFyICAgICAgICAgICAqZXhwcmVzc2lvbjsKICAgICBvaWQgICAgICAgICAgICAqaW5kZXg7CiAgICAgaW50ICAgICAgICAgICAgIGkgPSAwLCBqLCBsOwpAQCAtNTI1LDkgKzUxOSw3IEBACiAgICAgICAgICAgICBvaWQgICAgICAgICAgICAqbmV4dF9PSUQ7CiAgICAgICAgICAgICBzaXplX3QgICAgICAgICAgbmV4dF9PSURfbGVuOwogICAgICAgICAgICAgdGFnZ2V0T0lEX2xlbiA9IG9iamZvdW5kLT5leHBPYmplY3RJRExlbjsKLSAgICAgICAgICAgIHN0cnVjdCB2YXJpYWJsZV9saXN0ICp2YXJzOwogICAgICAgICAgICAgaW50ICAgICAgICAgICAgIHN0YXR1czsKLSAgICAgICAgICAgIGludCAgICAgICAgICAgICBjb3VudCA9IDE7CiAgICAgICAgICAgICBzdHJ1Y3Qgc25tcF9zZXNzaW9uICpzczsKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBJbml0aWFsaXplIHRoZSBTTk1QIGxpYnJhcnkKQEAgLTYzOSwxMiArNjMxLDcgQEAKICAgICAgICAgICAgICAgICAgIGludCBleGFjdCwgc2l6ZV90ICp2YXJfbGVuLCBXcml0ZU1ldGhvZCAqKiB3cml0ZV9tZXRob2QpCiB7CiAKLSAgICBzdGF0aWMgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJzOwotICAgIHNpemVfdCAgICAgICAgICBuZXdsZW4gPQotICAgICAgICAqbGVuZ3RoIC0gKHNpemVvZihleHBWYWx1ZVRhYmxlX3ZhcmlhYmxlc19vaWQpIC8gc2l6ZW9mKG9pZCkgKwotICAgICAgICAgICAgICAgICAgIDMgLSAxKTsKICAgICBzdHJ1Y3QgZXhwVmFsdWVUYWJsZV9kYXRhICpTdG9yYWdlVG1wID0gTlVMTDsKLSAgICB1bnNpZ25lZCBpbnQgICAgY291bnRlcjMyOwogCiAKIApAQCAtNzE5LDYgKzcwNiw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEVSUk9SX01TRygiIik7CisJcmV0dXJuIE5VTEw7CiAgICAgfQogfQogCkBAIC03ODgsNiArNzc2LDcgQEAKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXR1cm4gKGEgLyBiKTsKICAgICB9CisgICAgcmV0dXJuIDA7CiB9CiAKIHVuc2lnbmVkIGxvbmcKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jCmluZGV4IDNlMDc4NmYuLjQ4YWRkNjggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYwpAQCAtNCwxMCArNCwxNCBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2RhdGFzZXQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV9zZXRfbXVsdGlfYWRkX2RlZmF1bHRfcm93KQorCiBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0ICptdGVFdmVudE5vdGlmX3RhYmxlX3NldDsKIAogCkBAIC02MSwxMiArNjUsMjEgQEAKICAgICAgKiBub3RlOiBpZiB5b3UgZG9uJ3QgbmVlZCBhIHN1YmhhbmRsZXIgdG8gZGVhbCB3aXRoIGFueSBhc3BlY3RzCiAgICAgICogb2YgdGhlIHJlcXVlc3QsIGNoYW5nZSBtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlX2hhbmRsZXIgdG8gIk5VTEwiIAogICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2RhdGFfc2V0KG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIm10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGVfaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFKSwgbXRlRXZlbnROb3RpZl90YWJsZV9zZXQsIE5VTEwpOworI2Vsc2UgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfZGF0YV9zZXQobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgibXRlRXZlbnROb3RpZmljYXRpb25UYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZV9oYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGVfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSksIG10ZUV2ZW50Tm90aWZfdGFibGVfc2V0LCBOVUxMKTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiB9CiAKIC8qKiBJbml0aWFsaXplcyB0aGUgbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZSBtb2R1bGUgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVFdmVudFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlRXZlbnRUYWJsZS5jCmluZGV4IGI0YmQ3YTEuLjIyYmFkNzMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVFdmVudFRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZUV2ZW50VGFibGUuYwpAQCAtNCw2ICs0LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAibXRlVHJpZ2dlclRhYmxlLmgiCkBAIC0xMSw2ICsxMiw5IEBACiAjaW5jbHVkZSAibXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5oIgogI2luY2x1ZGUgIm10ZU9iamVjdHNUYWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV9kYXRhc2V0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfc2V0X211bHRpX2FkZF9kZWZhdWx0X3JvdykKKwogc3RhdGljIG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKnRhYmxlX3NldCA9IE5VTEw7CiAKIC8qKiBJbml0aWFsaXplIHRoZSBtdGVFdmVudFRhYmxlIHRhYmxlIGJ5IGRlZmluaW5nIGl0cyBjb250ZW50cyBhbmQgaG93IGl0J3Mgc3RydWN0dXJlZCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZU9iamVjdHNUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZU9iamVjdHNUYWJsZS5jCmluZGV4IDc4NmVlZTMuLmMzZjMzMWQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVPYmplY3RzVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmMKQEAgLTgsNiArOCw3IEBACiAgKiBUaGlzIHNob3VsZCBhbHdheXMgYmUgaW5jbHVkZWQgZmlyc3QgYmVmb3JlIGFueXRoaW5nIGVsc2UgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2lmIEhBVkVfU1RETElCX0gKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNlbmRpZgpAQCAtMTcsNiArMTgsOSBAQAogI2luY2x1ZGUgPHN0cmluZ3MuaD4KICNlbmRpZgogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaGVhZGVyX2NvbXBsZXhfZmluZF9lbnRyeSkKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogLyoKICAqIG1pbmltYWwgaW5jbHVkZSBkaXJlY3RpdmVzIApAQCAtNDgsNiArNTIsNyBAQAogICovCiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIHN0cnVjdCB2YXJpYWJsZTIgbXRlT2JqZWN0c1RhYmxlX3ZhcmlhYmxlc1tdID0gewogICAgIC8qCiAgICAgICogbWFnaWMgbnVtYmVyICAgICAgICAsIHZhcmlhYmxlIHR5cGUgLCByby9ydyAsIGNhbGxiYWNrIGZuICAsIEwsIG9pZHN1ZmZpeCAKQEAgLTYzLDYgKzY4LDI0IEBACiAgICAgIHZhcl9tdGVPYmplY3RzVGFibGUsIDIsIHsxLCA1fX0sCiAKIH07CisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCitzdHJ1Y3QgdmFyaWFibGUyIG10ZU9iamVjdHNUYWJsZV92YXJpYWJsZXNbXSA9IHsKKyAgICAvKgorICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCisgICAgICovCisjZGVmaW5lICAgTVRFT0JKRUNUU0lEICAgICAgICAgIDUKKyAgICB7TVRFT0JKRUNUU0lELCBBU05fT0JKRUNUX0lELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZU9iamVjdHNUYWJsZSwgMiwgezEsIDN9fSwKKyNkZWZpbmUgICBNVEVPQkpFQ1RTSURXSUxEQ0FSRCAgNgorICAgIHtNVEVPQkpFQ1RTSURXSUxEQ0FSRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlT2JqZWN0c1RhYmxlLCAyLCB7MSwgNH19LAorI2RlZmluZSAgIE1URU9CSkVDVFNFTlRSWVNUQVRVUyAgNworICAgIHtNVEVPQkpFQ1RTRU5UUllTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZU9iamVjdHNUYWJsZSwgMiwgezEsIDV9fSwKKworfTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKIC8qCiAgKiAoTCA9IGxlbmd0aCBvZiB0aGUgb2lkc3VmZml4KSAKICAqLwpAQCAtMzAyLDYgKzMyNSwxMCBAQAogCiAgICAgREVCVUdNU0dUTCgoIm10ZU9iamVjdHNUYWJsZSIsCiAgICAgICAgICAgICAgICAgInZhcl9tdGVPYmplY3RzVGFibGU6IEVudGVyaW5nLi4uICBcbiIpKTsKKworCS8qIHNldCBkZWZhdWx0IHZhbHVlICovCisJKndyaXRlX21ldGhvZCA9IE5VTEw7CisKICAgICAvKgogICAgICAqIHRoaXMgYXNzdW1lcyB5b3UgaGF2ZSByZWdpc3RlcmVkIGFsbCB5b3VyIGRhdGEgcHJvcGVybHkKICAgICAgKi8KQEAgLTMyMCwxNyArMzQ3LDIzIEBACiAKIAogICAgIGNhc2UgTVRFT0JKRUNUU0lEOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZU9iamVjdHNJRDsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gKFN0b3JhZ2VUbXAtPm10ZU9iamVjdHNJRExlbikgKiBzaXplb2Yob2lkKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlT2JqZWN0c0lEOwogCiAgICAgY2FzZSBNVEVPQkpFQ1RTSURXSUxEQ0FSRDoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVPYmplY3RzSURXaWxkY2FyZDsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKFN0b3JhZ2VUbXAtPm10ZU9iamVjdHNJRFdpbGRjYXJkKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBTdG9yYWdlVG1wLT5tdGVPYmplY3RzSURXaWxkY2FyZDsKIAogICAgIGNhc2UgTVRFT0JKRUNUU0VOVFJZU1RBVFVTOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZU9iamVjdHNFbnRyeVN0YXR1czsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKFN0b3JhZ2VUbXAtPm10ZU9iamVjdHNFbnRyeVN0YXR1cyk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgU3RvcmFnZVRtcC0+bXRlT2JqZWN0c0VudHJ5U3RhdHVzOwogCkBAIC0zNDMsNiArMzc2LDcgQEAKIAogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAKIGludAogd3JpdGVfbXRlT2JqZWN0c0lEKGludCBhY3Rpb24sCkBAIC03ODksNiArODIzLDkgQEAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KIAorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKworCiB2b2lkCiBtdGVfYWRkX29iamVjdHMobmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFycywKICAgICAgICAgICAgICAgICBzdHJ1Y3QgbXRlVHJpZ2dlclRhYmxlX2RhdGEgKml0ZW0sIGNvbnN0IGNoYXIgKm93bmVyLApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZU9iamVjdHNUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZU9iamVjdHNUYWJsZS5oCmluZGV4IGQzYzNjNTAuLjRkNDRjODcgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVPYmplY3RzVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmgKQEAgLTU5LDExICs1OSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogb2lkbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvaWRuYW1lX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpc3dpbGQpOworCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlT2JqZWN0c0lEOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlT2JqZWN0c0lEV2lsZGNhcmQ7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVPYmplY3RzRW50cnlTdGF0dXM7Ci0KLSAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZU9iamVjdHNFbnRyeVN0YXR1czsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIAogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUuYwppbmRleCBmYmE0OTgwLi41YjE3OTI3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMKQEAgLTQ4LDYgKzQ4LDcgQEAKICAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBzdHJ1Y3QgdmFyaWFibGUyIG10ZVRyaWdnZXJCb29sZWFuVGFibGVfdmFyaWFibGVzW10gPSB7CiAgICAgLyoKICAgICAgKiBtYWdpYyBudW1iZXIgICAgICAgICwgdmFyaWFibGUgdHlwZSAsIHJvL3J3ICwgY2FsbGJhY2sgZm4gICwgTCwgb2lkc3VmZml4IApAQCAtNzMsOCArNzQsMzYgQEAKICNkZWZpbmUgICBNVEVUUklHR0VSQk9PTEVBTkVWRU5UICA5CiAgICAge01URVRSSUdHRVJCT09MRUFORVZFTlQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJCb29sZWFuVGFibGUsIDIsIHsxLCA3fX0sCi0KIH07CisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCitzdHJ1Y3QgdmFyaWFibGUyIG10ZVRyaWdnZXJCb29sZWFuVGFibGVfdmFyaWFibGVzW10gPSB7CisgICAgLyoKKyAgICAgKiBtYWdpYyBudW1iZXIgICAgICAgICwgdmFyaWFibGUgdHlwZSAsIHJvL3J3ICwgY2FsbGJhY2sgZm4gICwgTCwgb2lkc3VmZml4IAorICAgICAqLworI2RlZmluZSAgIE1URVRSSUdHRVJCT09MRUFOQ09NUEFSSVNPTiAgMworICAgIHtNVEVUUklHR0VSQk9PTEVBTkNPTVBBUklTT04sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJCb29sZWFuVGFibGUsIDIsIHsxLCAxfX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUkJPT0xFQU5WQUxVRSAgNAorICAgIHtNVEVUUklHR0VSQk9PTEVBTlZBTFVFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLCAyLCB7MSwgMn19LAorI2RlZmluZSAgIE1URVRSSUdHRVJCT09MRUFOU1RBUlRVUCAgNQorICAgIHtNVEVUUklHR0VSQk9PTEVBTlNUQVJUVVAsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJCb29sZWFuVGFibGUsIDIsIHsxLCAzfX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUkJPT0xFQU5PQkpFQ1RTT1dORVIgIDYKKyAgICB7TVRFVFJJR0dFUkJPT0xFQU5PQkpFQ1RTT1dORVIsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlckJvb2xlYW5UYWJsZSwgMiwgezEsIDR9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSQk9PTEVBTk9CSkVDVFMgIDcKKyAgICB7TVRFVFJJR0dFUkJPT0xFQU5PQkpFQ1RTLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJCb29sZWFuVGFibGUsIDIsIHsxLCA1fX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUkJPT0xFQU5FVkVOVE9XTkVSICA4CisgICAge01URVRSSUdHRVJCT09MRUFORVZFTlRPV05FUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLCAyLCB7MSwgNn19LAorI2RlZmluZSAgIE1URVRSSUdHRVJCT09MRUFORVZFTlQgIDkKKyAgICB7TVRFVFJJR0dFUkJPT0xFQU5FVkVOVCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLCAyLCB7MSwgN319LAorfTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKIC8qCiAgKiAoTCA9IGxlbmd0aCBvZiB0aGUgb2lkc3VmZml4KSAKICAqLwpAQCAtMTI2LDYgKzE1NSwxMCBAQAogCiAgICAgREVCVUdNU0dUTCgoIm10ZVRyaWdnZXJCb29sZWFuVGFibGUiLAogICAgICAgICAgICAgICAgICJ2YXJfbXRlVHJpZ2dlckJvb2xlYW5UYWJsZTogRW50ZXJpbmcuLi4gIFxuIikpOworCisJLyogc2V0IGRlZmF1bHQgdmFsdWUgKi8KKwkqd3JpdGVfbWV0aG9kID0gTlVMTDsKKwogICAgIC8qCiAgICAgICogdGhpcyBhc3N1bWVzIHlvdSBoYXZlIHJlZ2lzdGVyZWQgYWxsIHlvdXIgZGF0YSBwcm9wZXJseQogICAgICAqLwpAQCAtMTQ0LDM3ICsxNzcsNTEgQEAKIAogCiAgICAgY2FzZSBNVEVUUklHR0VSQk9PTEVBTkNPTVBBUklTT046CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlckJvb2xlYW5Db21wYXJpc29uOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YoU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckJvb2xlYW5Db21wYXJpc29uKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyQm9vbGVhbkNvbXBhcmlzb247CiAKICAgICBjYXNlIE1URVRSSUdHRVJCT09MRUFOVkFMVUU6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlckJvb2xlYW5WYWx1ZTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJCb29sZWFuVmFsdWUpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJCb29sZWFuVmFsdWU7CiAKICAgICBjYXNlIE1URVRSSUdHRVJCT09MRUFOU1RBUlRVUDoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyQm9vbGVhblN0YXJ0dXA7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyQm9vbGVhblN0YXJ0dXApOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJCb29sZWFuU3RhcnR1cDsKIAogICAgIGNhc2UgTVRFVFJJR0dFUkJPT0xFQU5PQkpFQ1RTT1dORVI6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlckJvb2xlYW5PYmplY3RzT3duZXI7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJCb29sZWFuT2JqZWN0c093bmVyTGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyQm9vbGVhbk9iamVjdHNPd25lcjsKIAogICAgIGNhc2UgTVRFVFJJR0dFUkJPT0xFQU5PQkpFQ1RTOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJCb29sZWFuT2JqZWN0czsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckJvb2xlYW5PYmplY3RzTGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyQm9vbGVhbk9iamVjdHM7CiAKICAgICBjYXNlIE1URVRSSUdHRVJCT09MRUFORVZFTlRPV05FUjoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyQm9vbGVhbkV2ZW50T3duZXI7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJCb29sZWFuRXZlbnRPd25lckxlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckJvb2xlYW5FdmVudE93bmVyOwogCiAgICAgY2FzZSBNVEVUUklHR0VSQk9PTEVBTkVWRU5UOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJCb29sZWFuRXZlbnQ7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJCb29sZWFuRXZlbnRMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJCb29sZWFuRXZlbnQ7CiAKQEAgLTE4Nyw2ICsyMzQsNyBAQAogCiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIAogaW50CiB3cml0ZV9tdGVUcmlnZ2VyQm9vbGVhbkNvbXBhcmlzb24oaW50IGFjdGlvbiwKQEAgLTgwMCwzICs4NDgsNSBAQAogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KKworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmggYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5oCmluZGV4IGY2ODU1ODYuLjY0MTNkYTUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUuaApAQCAtMzEsNiArMzEsNyBAQAogICAgICB2b2lkICAgICAgICAgICAgaW5pdF9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlKHZvaWQpOwogICAgICBGaW5kVmFyTWV0aG9kICAgdmFyX210ZVRyaWdnZXJCb29sZWFuVGFibGU7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyQm9vbGVhbkNvbXBhcmlzb247CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyQm9vbGVhblZhbHVlOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlckJvb2xlYW5TdGFydHVwOwpAQCAtMzgsNiArMzksNyBAQAogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlckJvb2xlYW5PYmplY3RzOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlckJvb2xlYW5FdmVudE93bmVyOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlckJvb2xlYW5FdmVudDsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIAogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5jCmluZGV4IDMyZGIwYjguLmI1ZDIyNDQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5jCkBAIC00OCw2ICs0OCw3IEBACiAgKi8KIAogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogc3RydWN0IHZhcmlhYmxlMiBtdGVUcmlnZ2VyRGVsdGFUYWJsZV92YXJpYWJsZXNbXSA9IHsKICAgICAvKgogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCkBAIC02MSw4ICs2MiwyNCBAQAogI2RlZmluZSAgIE1URVRSSUdHRVJERUxUQURJU0NPTlRJTlVJVFlJRFRZUEUgIDUKICAgICB7TVRFVFJJR0dFUkRFTFRBRElTQ09OVElOVUlUWUlEVFlQRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJEZWx0YVRhYmxlLCAyLCB7MSwgM319LAotCiB9OworI2Vsc2UgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworc3RydWN0IHZhcmlhYmxlMiBtdGVUcmlnZ2VyRGVsdGFUYWJsZV92YXJpYWJsZXNbXSA9IHsKKyAgICAvKgorICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCisgICAgICovCisjZGVmaW5lICAgTVRFVFJJR0dFUkRFTFRBRElTQ09OVElOVUlUWUlEICAzCisgICAge01URVRSSUdHRVJERUxUQURJU0NPTlRJTlVJVFlJRCwgQVNOX09CSkVDVF9JRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyRGVsdGFUYWJsZSwgMiwgezEsIDF9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSREVMVEFESVNDT05USU5VSVRZSURXSUxEQ0FSRCAgNAorICAgIHtNVEVUUklHR0VSREVMVEFESVNDT05USU5VSVRZSURXSUxEQ0FSRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlckRlbHRhVGFibGUsIDIsIHsxLCAyfX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUkRFTFRBRElTQ09OVElOVUlUWUlEVFlQRSAgNQorICAgIHtNVEVUUklHR0VSREVMVEFESVNDT05USU5VSVRZSURUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyRGVsdGFUYWJsZSwgMiwgezEsIDN9fSwKK307CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAvKgogICogKEwgPSBsZW5ndGggb2YgdGhlIG9pZHN1ZmZpeCkgCiAgKi8KQEAgLTExNCw2ICsxMzEsMTAgQEAKIAogICAgIERFQlVHTVNHVEwoKCJtdGVUcmlnZ2VyRGVsdGFUYWJsZSIsCiAgICAgICAgICAgICAgICAgInZhcl9tdGVUcmlnZ2VyRGVsdGFUYWJsZTogRW50ZXJpbmcuLi4gIFxuIikpOworCisgICAgLyogc2V0IGRlZmF1bHQgdmFsdWUgKi8KKwkqd3JpdGVfbWV0aG9kID0gTlVMTDsKKwogICAgIC8qCiAgICAgICogdGhpcyBhc3N1bWVzIHlvdSBoYXZlIHJlZ2lzdGVyZWQgYWxsIHlvdXIgZGF0YSBwcm9wZXJseQogICAgICAqLwpAQCAtMTI5LDI0ICsxNTAsMjkgQEAKIAogCiAgICAgY2FzZSBNVEVUUklHR0VSREVMVEFESVNDT05USU5VSVRZSUQ6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlckRlbHRhRGlzY29udGludWl0eUlEOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPQogICAgICAgICAgICAgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckRlbHRhRGlzY29udGludWl0eUlETGVuICogc2l6ZW9mKG9pZCk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJEZWx0YURpc2NvbnRpbnVpdHlJRDsKIAogICAgIGNhc2UgTVRFVFJJR0dFUkRFTFRBRElTQ09OVElOVUlUWUlEV0lMRENBUkQ6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlckRlbHRhRGlzY29udGludWl0eUlEV2lsZGNhcmQ7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9CiAgICAgICAgICAgICBzaXplb2YoU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckRlbHRhRGlzY29udGludWl0eUlEV2lsZGNhcmQpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIFN0b3JhZ2VUbXAtPgogICAgICAgICAgICAgbXRlVHJpZ2dlckRlbHRhRGlzY29udGludWl0eUlEV2lsZGNhcmQ7CiAKICAgICBjYXNlIE1URVRSSUdHRVJERUxUQURJU0NPTlRJTlVJVFlJRFRZUEU6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlckRlbHRhRGlzY29udGludWl0eUlEVHlwZTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJEZWx0YURpc2NvbnRpbnVpdHlJRFR5cGUpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJEZWx0YURpc2NvbnRpbnVpdHlJRFR5cGU7CiAKLQogICAgIGRlZmF1bHQ6CiAgICAgICAgIEVSUk9SX01TRygiIik7CiAgICAgfQpAQCAtMTU1LDcgKzE4MSw3IEBACiAKIAogCi0KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBpbnQKIHdyaXRlX210ZVRyaWdnZXJEZWx0YURpc2NvbnRpbnVpdHlJRChpbnQgYWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciAqIHZhcl92YWwsCkBAIC00MTQsMyArNDQwLDQgQEAKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmggYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUuaAppbmRleCAwZThhMTdlLi5mYTQ4NzJhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUuaApAQCAtMzAsOCArMzAsMTAgQEAKICAgICAgdm9pZCAgICAgICAgICAgIGluaXRfbXRlVHJpZ2dlckRlbHRhVGFibGUodm9pZCk7CiAgICAgIEZpbmRWYXJNZXRob2QgICB2YXJfbXRlVHJpZ2dlckRlbHRhVGFibGU7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyRGVsdGFEaXNjb250aW51aXR5SUQ7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyRGVsdGFEaXNjb250aW51aXR5SURXaWxkY2FyZDsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJEZWx0YURpc2NvbnRpbnVpdHlJRFR5cGU7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9NSUJHUk9VUF9NVEVUUklHR0VSREVMVEFUQUJMRV9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMKaW5kZXggNDhmMWZjZC4uZmRmZGFmMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuYwpAQCAtNDgsNiArNDgsNyBAQAogICovCiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIHN0cnVjdCB2YXJpYWJsZTIgbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlX3ZhcmlhYmxlc1tdID0gewogICAgIC8qCiAgICAgICogbWFnaWMgbnVtYmVyICAgICAgICAsIHZhcmlhYmxlIHR5cGUgLCByby9ydyAsIGNhbGxiYWNrIGZuICAsIEwsIG9pZHN1ZmZpeCAKQEAgLTcwLDggKzcxLDMzIEBACiAjZGVmaW5lICAgTVRFVFJJR0dFUkVYSVNURU5DRUVWRU5UICA4CiAgICAge01URVRSSUdHRVJFWElTVEVOQ0VFVkVOVCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLCAyLCB7MSwgNn19LAotCiB9OworI2Vsc2UgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworc3RydWN0IHZhcmlhYmxlMiBtdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGVfdmFyaWFibGVzW10gPSB7CisgICAgLyoKKyAgICAgKiBtYWdpYyBudW1iZXIgICAgICAgICwgdmFyaWFibGUgdHlwZSAsIHJvL3J3ICwgY2FsbGJhY2sgZm4gICwgTCwgb2lkc3VmZml4IAorICAgICAqLworI2RlZmluZSAgIE1URVRSSUdHRVJFWElTVEVOQ0VURVNUICAzCisgICAge01URVRSSUdHRVJFWElTVEVOQ0VURVNULCBBU05fQklUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUsIDIsIHsxLCAxfX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUkVYSVNURU5DRVNUQVJUVVAgIDQKKyAgICB7TVRFVFJJR0dFUkVYSVNURU5DRVNUQVJUVVAsIEFTTl9CSVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZSwgMiwgezEsIDJ9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSRVhJU1RFTkNFT0JKRUNUU09XTkVSICA1CisgICAge01URVRSSUdHRVJFWElTVEVOQ0VPQkpFQ1RTT1dORVIsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLCAyLCB7MSwgM319LAorI2RlZmluZSAgIE1URVRSSUdHRVJFWElTVEVOQ0VPQkpFQ1RTICA2CisgICAge01URVRSSUdHRVJFWElTVEVOQ0VPQkpFQ1RTLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZSwgMiwgezEsIDR9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSRVhJU1RFTkNFRVZFTlRPV05FUiAgNworICAgIHtNVEVUUklHR0VSRVhJU1RFTkNFRVZFTlRPV05FUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUsIDIsIHsxLCA1fX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUkVYSVNURU5DRUVWRU5UICA4CisgICAge01URVRSSUdHRVJFWElTVEVOQ0VFVkVOVCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUsIDIsIHsxLCA2fX0sCit9OworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogLyoKICAqIChMID0gbGVuZ3RoIG9mIHRoZSBvaWRzdWZmaXgpIAogICovCkBAIC0xMzEsNiArMTU3LDEwIEBACiAKICAgICBERUJVR01TR1RMKCgibXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlIiwKICAgICAgICAgICAgICAgICAidmFyX210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZTogRW50ZXJpbmcuLi4gIFxuIikpOworCisJLyogc2V0IGRlZmF1bHQgdmFsdWUgKi8KKwkqd3JpdGVfbWV0aG9kID0gTlVMTDsKKwogICAgIC8qCiAgICAgICogdGhpcyBhc3N1bWVzIHlvdSBoYXZlIHJlZ2lzdGVyZWQgYWxsIHlvdXIgZGF0YSBwcm9wZXJseQogICAgICAqLwpAQCAtMTQ5LDMyICsxNzksNDQgQEAKIAogCiAgICAgY2FzZSBNVEVUUklHR0VSRVhJU1RFTkNFVEVTVDoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyRXhpc3RlbmNlVGVzdDsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckV4aXN0ZW5jZVRlc3RMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJFeGlzdGVuY2VUZXN0OwogCiAgICAgY2FzZSBNVEVUUklHR0VSRVhJU1RFTkNFU1RBUlRVUDoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyRXhpc3RlbmNlU3RhcnR1cDsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckV4aXN0ZW5jZVN0YXJ0dXBMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJFeGlzdGVuY2VTdGFydHVwOwogCiAgICAgY2FzZSBNVEVUUklHR0VSRVhJU1RFTkNFT0JKRUNUU09XTkVSOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJFeGlzdGVuY2VPYmplY3RzT3duZXI7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJFeGlzdGVuY2VPYmplY3RzT3duZXJMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJFeGlzdGVuY2VPYmplY3RzT3duZXI7CiAKICAgICBjYXNlIE1URVRSSUdHRVJFWElTVEVOQ0VPQkpFQ1RTOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJFeGlzdGVuY2VPYmplY3RzOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyRXhpc3RlbmNlT2JqZWN0c0xlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckV4aXN0ZW5jZU9iamVjdHM7CiAKICAgICBjYXNlIE1URVRSSUdHRVJFWElTVEVOQ0VFVkVOVE9XTkVSOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJFeGlzdGVuY2VFdmVudE93bmVyOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyRXhpc3RlbmNlRXZlbnRPd25lckxlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckV4aXN0ZW5jZUV2ZW50T3duZXI7CiAKICAgICBjYXNlIE1URVRSSUdHRVJFWElTVEVOQ0VFVkVOVDoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyRXhpc3RlbmNlRXZlbnQ7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJFeGlzdGVuY2VFdmVudExlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckV4aXN0ZW5jZUV2ZW50OwogCkBAIC0xODcsNiArMjI5LDcgQEAKIAogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAKIGludAogd3JpdGVfbXRlVHJpZ2dlckV4aXN0ZW5jZVRlc3QoaW50IGFjdGlvbiwKQEAgLTczNSwzICs3NzgsNSBAQAogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KKworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuaAppbmRleCA0MGRiZDRlLi43NWM2NDI3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5oCkBAIC0yOSwxMSArMjksMTMgQEAKICAgICAgdm9pZCAgICAgICAgICAgIGluaXRfbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlKHZvaWQpOwogICAgICBGaW5kVmFyTWV0aG9kICAgdmFyX210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZTsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJFeGlzdGVuY2VUZXN0OwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlckV4aXN0ZW5jZVN0YXJ0dXA7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyRXhpc3RlbmNlT2JqZWN0c093bmVyOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlckV4aXN0ZW5jZU9iamVjdHM7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyRXhpc3RlbmNlRXZlbnRPd25lcjsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJFeGlzdGVuY2VFdmVudDsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX01JQkdST1VQX01URVRSSUdHRVJFWElTVEVOQ0VUQUJMRV9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmMKaW5kZXggYzI2MGQxMi4uYTIzMDZmNyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuYwpAQCAtOCw2ICs4LDcgQEAKICAqIFRoaXMgc2hvdWxkIGFsd2F5cyBiZSBpbmNsdWRlZCBmaXJzdCBiZWZvcmUgYW55dGhpbmcgZWxzZSAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaWYgSEFWRV9TVERMSUJfSAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2VuZGlmCkBAIC0yMCw2ICsyMSwxMyBAQAogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2VuZGlmCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKG1pYl9zbnByaW50X3ZhcmlhYmxlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGRvbWFpbl9zdXBwb3J0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdWludCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHN0cmluZ190aW1lX3RvX3NlY3MpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaGVhZGVyX2NvbXBsZXhfZmluZF9lbnRyeSkKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogLyoKICAqIG1pbmltYWwgaW5jbHVkZSBkaXJlY3RpdmVzIApAQCAtNzgsNiArODYsNyBAQAogICovCiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIHN0cnVjdCB2YXJpYWJsZTIgbXRlVHJpZ2dlclRhYmxlX3ZhcmlhYmxlc1tdID0gewogICAgIC8qCiAgICAgICogbWFnaWMgbnVtYmVyICAgICAgICAsIHZhcmlhYmxlIHR5cGUgLCByby9ydyAsIGNhbGxiYWNrIGZuICAsIEwsIG9pZHN1ZmZpeCAKQEAgLTEyMSw4ICsxMzAsNTQgQEAKICNkZWZpbmUgICBNVEVUUklHR0VSRU5UUllTVEFUVVMgIDE3CiAgICAge01URVRSSUdHRVJFTlRSWVNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwgezEsIDE1fX0sCi0KIH07CisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCitzdHJ1Y3QgdmFyaWFibGUyIG10ZVRyaWdnZXJUYWJsZV92YXJpYWJsZXNbXSA9IHsKKyAgICAvKgorICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCisgICAgICovCisjZGVmaW5lICAgTVRFVFJJR0dFUkNPTU1FTlQgICAgIDUKKyAgICB7TVRFVFJJR0dFUkNPTU1FTlQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLCB7MSwgM319LAorI2RlZmluZSAgIE1URVRSSUdHRVJURVNUICAgICAgICA2CisgICAge01URVRSSUdHRVJURVNULCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwgezEsIDR9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSU0FNUExFVFlQRSAgNworICAgIHtNVEVUUklHR0VSU0FNUExFVFlQRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLCB7MSwgNX19LAorI2RlZmluZSAgIE1URVRSSUdHRVJWQUxVRUlEICAgICA4CisgICAge01URVRSSUdHRVJWQUxVRUlELCBBU05fT0JKRUNUX0lELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwgezEsIDZ9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSVkFMVUVJRFdJTERDQVJEICA5CisgICAge01URVRSSUdHRVJWQUxVRUlEV0lMRENBUkQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwgezEsIDd9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSVEFSR0VUVEFHICAgMTAKKyAgICB7TVRFVFJJR0dFUlRBUkdFVFRBRywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsIHsxLCA4fX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUkNPTlRFWFROQU1FICAxMQorICAgIHtNVEVUUklHR0VSQ09OVEVYVE5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLCB7MSwgOX19LAorI2RlZmluZSAgIE1URVRSSUdHRVJDT05URVhUTkFNRVdJTERDQVJEICAxMgorICAgIHtNVEVUUklHR0VSQ09OVEVYVE5BTUVXSUxEQ0FSRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLCB7MSwgMTB9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSRlJFUVVFTkNZICAgMTMKKyAgICB7TVRFVFJJR0dFUkZSRVFVRU5DWSwgQVNOX1VOU0lHTkVELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwgezEsIDExfX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUk9CSkVDVFNPV05FUiAgMTQKKyAgICB7TVRFVFJJR0dFUk9CSkVDVFNPV05FUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsIHsxLCAxMn19LAorI2RlZmluZSAgIE1URVRSSUdHRVJPQkpFQ1RTICAgICAxNQorICAgIHtNVEVUUklHR0VST0JKRUNUUywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsIHsxLCAxM319LAorI2RlZmluZSAgIE1URVRSSUdHRVJFTkFCTEVEICAgICAxNgorICAgIHtNVEVUUklHR0VSRU5BQkxFRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLCB7MSwgMTR9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSRU5UUllTVEFUVVMgIDE3CisgICAge01URVRSSUdHRVJFTlRSWVNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLCB7MSwgMTV9fSwKK307CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAvKgogICogKEwgPSBsZW5ndGggb2YgdGhlIG9pZHN1ZmZpeCkgCiAgKi8KQEAgLTQwNCw4ICs0NTksMTcgQEAKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJ3InOgogICAgICAgICAgICAgaWYgKGNwKSB7CisgICAgICAgICAgICAgICAgaW50IGZyZXE7CiAgICAgICAgICAgICAgICAgY3AgPSBjb3B5X253b3JkKGNwLCBidWYsIHNpemVvZihidWYpKTsKLSAgICAgICAgICAgICAgICBTdG9yYWdlTmV3LT5tdGVUcmlnZ2VyRnJlcXVlbmN5ID0gc3RydG91bChidWYsIE5VTEwsIDApOworICAgICAgICAgICAgICAgIGZyZXEgPSBuZXRzbm1wX3N0cmluZ190aW1lX3RvX3NlY3MoYnVmKTsKKyAgICAgICAgICAgICAgICBpZiAoZnJlcSA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICBjb25maWdfcGVycm9yKCJJbnZhbGlkIC1yIHZhbHVlXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICogWFhYOiBmcmVlIFN0b3JhZ2VOZXcgCisgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFN0b3JhZ2VOZXctPm10ZVRyaWdnZXJGcmVxdWVuY3kgPSAodW5zaWdlbmQgbG9uZykgZnJlcTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiTm8gcGFyYW1ldGVyIGFmdGVyIC1yIGdpdmVuXG4iKTsKICAgICAgICAgICAgICAgICAvKgpAQCAtNTk0LDcgKzY1OCw3IEBACiAKICAgICBERUJVR01TR1RMKCgibXRlVHJpZ2dlclRhYmxlIiwgImFkZGVkIHNpbXBsZSBtb25pdG9yOiAlc1xuIiwKICAgICAgICAgICAgICAgICBTdG9yYWdlTmV3LT5tdGVUcmlnZ2VyTmFtZSkpOwotfQorfSAvKiBwYXJzZV9zaW1wbGVfbW9uaXRvciAqLwogCiAKIC8qCkBAIC0xMDc3LDkgKzExNDEsNyBAQAogICAgICAgICBtdGVfZW5hYmxlX3RyaWdnZXIoU3RvcmFnZVRtcCk7CiAKICAgICBERUJVR01TR1RMKCgibXRlVHJpZ2dlclRhYmxlIiwgImRvbmUuXG4iKSk7Ci19Ci0KLQorfSAvKiBwYXJzZV9tdGVUcmlnZ2VyVGFibGUgKi8KIAogCiAvKgpAQCAtMTQzMCwxNCArMTQ5MiwyMCBAQAogCiAgICAgREVCVUdNU0dUTCgoIm10ZVRyaWdnZXJUYWJsZSIsCiAgICAgICAgICAgICAgICAgInZhcl9tdGVUcmlnZ2VyVGFibGU6IEVudGVyaW5nLi4uICBcbiIpKTsKKworCS8qIHNldCBkZWZhdWx0IHZhbHVlICovCisJKndyaXRlX21ldGhvZCA9IE5VTEw7CisKICAgICAvKgogICAgICAqIHRoaXMgYXNzdW1lcyB5b3UgaGF2ZSByZWdpc3RlcmVkIGFsbCB5b3VyIGRhdGEgcHJvcGVybHkKICAgICAgKi8KICAgICBpZiAoKFN0b3JhZ2VUbXAgPQogICAgICAgICAgaGVhZGVyX2NvbXBsZXgobXRlVHJpZ2dlclRhYmxlU3RvcmFnZSwgdnAsIG5hbWUsIGxlbmd0aCwgZXhhY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICB2YXJfbGVuLCB3cml0ZV9tZXRob2QpKSA9PSBOVUxMKSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICBpZiAodnAtPm1hZ2ljID09IE1URVRSSUdHRVJFTlRSWVNUQVRVUykKICAgICAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyRW50cnlTdGF0dXM7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTE0NDksNjcgKzE1MTcsOTMgQEAKIAogCiAgICAgY2FzZSBNVEVUUklHR0VSQ09NTUVOVDoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyQ29tbWVudDsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckNvbW1lbnRMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJDb21tZW50OwogCiAgICAgY2FzZSBNVEVUUklHR0VSVEVTVDoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyVGVzdDsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRlc3RMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUZXN0OwogCiAgICAgY2FzZSBNVEVUUklHR0VSU0FNUExFVFlQRToKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyU2FtcGxlVHlwZTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJTYW1wbGVUeXBlKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyU2FtcGxlVHlwZTsKIAogICAgIGNhc2UgTVRFVFJJR0dFUlZBTFVFSUQ6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlclZhbHVlSUQ7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJWYWx1ZUlETGVuICogc2l6ZW9mKG9pZCk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJWYWx1ZUlEOwogCiAgICAgY2FzZSBNVEVUUklHR0VSVkFMVUVJRFdJTERDQVJEOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJWYWx1ZUlEV2lsZGNhcmQ7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVmFsdWVJRFdpbGRjYXJkKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVmFsdWVJRFdpbGRjYXJkOwogCiAgICAgY2FzZSBNVEVUUklHR0VSVEFSR0VUVEFHOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJUYXJnZXRUYWc7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUYXJnZXRUYWdMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUYXJnZXRUYWc7CiAKICAgICBjYXNlIE1URVRSSUdHRVJDT05URVhUTkFNRToKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyQ29udGV4dE5hbWU7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJDb250ZXh0TmFtZUxlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckNvbnRleHROYW1lOwogCiAgICAgY2FzZSBNVEVUUklHR0VSQ09OVEVYVE5BTUVXSUxEQ0FSRDoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyQ29udGV4dE5hbWVXaWxkY2FyZDsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJDb250ZXh0TmFtZVdpbGRjYXJkKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyQ29udGV4dE5hbWVXaWxkY2FyZDsKIAogICAgIGNhc2UgTVRFVFJJR0dFUkZSRVFVRU5DWToKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyRnJlcXVlbmN5OworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YoU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckZyZXF1ZW5jeSk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckZyZXF1ZW5jeTsKIAogICAgIGNhc2UgTVRFVFJJR0dFUk9CSkVDVFNPV05FUjoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyT2JqZWN0c093bmVyOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyT2JqZWN0c093bmVyTGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyT2JqZWN0c093bmVyOwogCiAgICAgY2FzZSBNVEVUUklHR0VST0JKRUNUUzoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyT2JqZWN0czsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+bXRlVHJpZ2dlck9iamVjdHNMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJPYmplY3RzOwogCiAgICAgY2FzZSBNVEVUUklHR0VSRU5BQkxFRDoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyRW5hYmxlZDsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJFbmFibGVkKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyRW5hYmxlZDsKIAogICAgIGNhc2UgTVRFVFJJR0dFUkVOVFJZU1RBVFVTOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJFbnRyeVN0YXR1czsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJFbnRyeVN0YXR1cyk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckVudHJ5U3RhdHVzOwogCkBAIC0xNTIyLDcgKzE2MTYsNyBAQAogCiAKIAotCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogaW50CiB3cml0ZV9tdGVUcmlnZ2VyQ29tbWVudChpbnQgYWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyICogdmFyX3ZhbCwKQEAgLTE2MTAsNyArMTcwNCw3IEBACiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLX0KK30gLyogd3JpdGVfbXRlVHJpZ2dlckNvbW1lbnQgKi8KIAogCiAKQEAgLTE2OTgsNyArMTc5Miw3IEBACiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLX0KK30gLyogd3JpdGVfbXRlVHJpZ2dlclRlc3QgKi8KIAogCiAKQEAgLTE3ODEsNyArMTg3NSw3IEBACiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLX0KK30gLyogd3JpdGVfbXRlVHJpZ2dlclNhbXBsZVR5cGUgKi8KIAogCiAKQEAgLTE4NzYsNyArMTk3MCw3IEBACiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLX0KK30gLyogd3JpdGVfbXRlVHJpZ2dlclZhbHVlSUQgKi8KIAogCiAKQEAgLTE5NjAsNyArMjA1NCw3IEBACiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLX0KK30gLyogd3JpdGVfbXRlVHJpZ2dlclZhbHVlSURXaWxkY2FyZCAqLwogCiAKIApAQCAtMjA1MCw3ICsyMTQ0LDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfQorfSAvKiB3cml0ZV9tdGVUcmlnZ2VyVGFyZ2V0VGFnICovCiAKIAogCkBAIC0yMTQwLDcgKzIyMzQsNyBAQAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci19Cit9IC8qIHdyaXRlX210ZVRyaWdnZXJDb250ZXh0TmFtZSAqLwogCiAKIApAQCAtMjIyNCw3ICsyMzE4LDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfQorfSAvKiB3cml0ZV9tdGVUcmlnZ2VyQ29udGV4dE5hbWVXaWxkY2FyZCAqLwogCiAKIApAQCAtMjMxMSw3ICsyNDA1LDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfQorfSAvKiB3cml0ZV9tdGVUcmlnZ2VyRnJlcXVlbmN5ICovCiAKIAogCkBAIC0yNDAxLDcgKzI0OTUsNyBAQAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci19Cit9IC8qIHdyaXRlX210ZVRyaWdnZXJPYmplY3RzT3duZXIgKi8KIAogCiAKQEAgLTI0OTEsNyArMjU4NSw3IEBACiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLX0KK30gLyogd3JpdGVfbXRlVHJpZ2dlck9iamVjdHMgKi8KIAogCiAKQEAgLTI1ODAsMTAgKzI2NzQsNyBAQAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci19Ci0KLQotCit9IC8qIHdyaXRlX210ZVRyaWdnZXJFbmFibGVkICovCiAKIAogCkBAIC0yOTExLDcgKzMwMDIsMTEgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfQorfSAvKiB3cml0ZV9tdGVUcmlnZ2VyRW50cnlTdGF0dXMgKi8KKworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKworCiAKIC8qCiAgKiBzZW5kIHRyYXAgCkBAIC0zMDA2LDcgKzMxMDEsOCBAQAogCiAgICAgc2VuZF92MnRyYXAodmFyX2xpc3QpOwogICAgIHNubXBfZnJlZV92YXJiaW5kKHZhcl9saXN0KTsKLX0KK30gLyogc2VuZF9tdGVfdHJhcCAqLworCiAKIHZvaWQKIGxhc3Rfc3RhdGVfY2xlYW4odm9pZCAqZGF0YSkKQEAgLTMwMTYsNiArMzExMiw3IEBACiAgICAgU05NUF9GUkVFKGNsZWFubWUpOwogfQogCisKIC8qCiAgKiByZXRyaWV2ZXMgcmVxdWVzdGVkIGluZm8gaW4gcGR1IGZyb20gdGhlIGN1cnJlbnQgdGFyZ2V0IAogICovCkBAIC0zMTA2LDcgKzMyMDMsNyBAQAogICAgIGJ1ZltzaXplb2YoYnVmKSAtIDFdID0gJ1wwJzsKICAgICBERUJVR01TR1RMKCgibXRlVHJpZ2dlclRhYmxlIiwgImdvdCBhIHZhcmlhYmxlczogJXNcbiIsIGJ1ZikpOwogICAgIHJldHVybiByZXNwb25zZTsKLX0KK30gLyogbXRlX2dldF9yZXNwb25zZSAqLwogCiAKIC8qCkBAIC0zMTM3LDcgKzMyMzQsNiBAQAogfQogCiAKLQogLyoKICAqIFJldHVybiAwIGlmIHRoZSBkaXNjb250aW51aXR5IG9iamVjdCB3YXMgY2hlY2tlZCBhbmQgbm8gZGlzY29udGludWl0eSBoYXMKICAqIG9jY3VycmVkLCAxIGlmIHRoZSBkaXNjb250aW51aXR5IG9iamVjdCB3YXMgY2hlY2tlZCBhbmQgYSBkaXNjb250aW51aXR5CkBAIC0zMjY4LDcgKzMzNjQsNyBAQAogICAgICAqLwogICAgIERFQlVHTVNHVEwoKCJtdGVfZGlzY28iLCAibm8gZGlzY29udGludWl0eVxuIikpOwogICAgIHJldHVybiAwOwotfQorfSAvKiBtdGVfZGlzY29udGludWl0eV9vY2N1cnJlZCAqLwogCiAKIHZvaWQKQEAgLTM2NzYsNyArMzc3Miw4IEBACiAgICAgfQogCiAgICAgaXRlbS0+c3RhcnRlZCA9IE1URV9TVEFSVEVEOwotfQorfSAvKiBtdGVfcnVuX3RyaWdnZXIgKi8KKwogCiAKIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmggYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmgKaW5kZXggMTg5MTRkZC4uYzQyNzYwMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuaApAQCAtMjI5LDcgKzIyOSw3IEBACiAgICAgIG5ldHNubXBfcGR1ICAgICptdGVfZ2V0X3Jlc3BvbnNlKHN0cnVjdCBtdGVUcmlnZ2VyVGFibGVfZGF0YSAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3BkdSAqKTsKIAotCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlckNvbW1lbnQ7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyVGVzdDsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJTYW1wbGVUeXBlOwpAQCAtMjQzLDggKzI0Myw3IEBACiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyT2JqZWN0czsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJFbmFibGVkOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlckVudHJ5U3RhdHVzOwotCi0gICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyRW50cnlTdGF0dXM7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgIHZvaWQgICAgICAgICAgICBtdGVfZW5hYmxlX3RyaWdnZXIoc3RydWN0IG10ZVRyaWdnZXJUYWJsZV9kYXRhICppdGVtKTsKICAgICAgdm9pZCAgICAgICAgICAgIG10ZV9kaXNhYmxlX3RyaWdnZXIoc3RydWN0IG10ZVRyaWdnZXJUYWJsZV9kYXRhCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMKaW5kZXggYzk5ZTE3NS4uOTNjMDJiMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYwpAQCAtNDgsNiArNDgsNyBAQAogICovCiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIHN0cnVjdCB2YXJpYWJsZTIgbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlX3ZhcmlhYmxlc1tdID0gewogICAgIC8qCiAgICAgICogbWFnaWMgbnVtYmVyICAgICAgICAsIHZhcmlhYmxlIHR5cGUgLCByby9ydyAsIGNhbGxiYWNrIGZuICAsIEwsIG9pZHN1ZmZpeCAKQEAgLTk3LDEzICs5OCw2NSBAQAogI2RlZmluZSAgIE1URVRSSUdHRVJUSFJFU0hPTERERUxUQUZBTExJTkdFVkVOVCAgMTcKICAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBRkFMTElOR0VWRU5ULCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUsIDIsIHsxLCAxNX19LAotCiB9OworI2Vsc2UgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworc3RydWN0IHZhcmlhYmxlMiBtdGVUcmlnZ2VyVGhyZXNob2xkVGFibGVfdmFyaWFibGVzW10gPSB7CisgICAgLyoKKyAgICAgKiBtYWdpYyBudW1iZXIgICAgICAgICwgdmFyaWFibGUgdHlwZSAsIHJvL3J3ICwgY2FsbGJhY2sgZm4gICwgTCwgb2lkc3VmZml4IAorICAgICAqLworI2RlZmluZSAgIE1URVRSSUdHRVJUSFJFU0hPTERTVEFSVFVQICAzCisgICAge01URVRSSUdHRVJUSFJFU0hPTERTVEFSVFVQLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUsIDIsIHsxLCAxfX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUlRIUkVTSE9MRFJJU0lORyAgNAorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xEUklTSU5HLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUsIDIsIHsxLCAyfX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUlRIUkVTSE9MREZBTExJTkcgIDUKKyAgICB7TVRFVFJJR0dFUlRIUkVTSE9MREZBTExJTkcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDN9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFSSVNJTkcgIDYKKyAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBUklTSU5HLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUsIDIsIHsxLCA0fX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBRkFMTElORyAgNworICAgIHtNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFGQUxMSU5HLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUsIDIsIHsxLCA1fX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUlRIUkVTSE9MRE9CSkVDVFNPV05FUiAgOAorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xET0JKRUNUU09XTkVSLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDZ9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xET0JKRUNUUyAgOQorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xET0JKRUNUUywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUsIDIsIHsxLCA3fX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUlRIUkVTSE9MRFJJU0lOR0VWRU5UT1dORVIgIDEwCisgICAge01URVRSSUdHRVJUSFJFU0hPTERSSVNJTkdFVkVOVE9XTkVSLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDh9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xEUklTSU5HRVZFTlQgIDExCisgICAge01URVRSSUdHRVJUSFJFU0hPTERSSVNJTkdFVkVOVCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUsIDIsIHsxLCA5fX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUlRIUkVTSE9MREZBTExJTkdFVkVOVE9XTkVSICAxMgorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xERkFMTElOR0VWRU5UT1dORVIsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLCAyLCB7MSwgMTB9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xERkFMTElOR0VWRU5UICAxMworICAgIHtNVEVUUklHR0VSVEhSRVNIT0xERkFMTElOR0VWRU5ULCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDExfX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBUklTSU5HRVZFTlRPV05FUiAgMTQKKyAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBUklTSU5HRVZFTlRPV05FUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUsIDIsIHsxLCAxMn19LAorI2RlZmluZSAgIE1URVRSSUdHRVJUSFJFU0hPTERERUxUQVJJU0lOR0VWRU5UICAxNQorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFSSVNJTkdFVkVOVCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUsIDIsIHsxLCAxM319LAorI2RlZmluZSAgIE1URVRSSUdHRVJUSFJFU0hPTERERUxUQUZBTExJTkdFVkVOVE9XTkVSICAxNgorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFGQUxMSU5HRVZFTlRPV05FUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUsIDIsIHsxLCAxNH19LAorI2RlZmluZSAgIE1URVRSSUdHRVJUSFJFU0hPTERERUxUQUZBTExJTkdFVkVOVCAgMTcKKyAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBRkFMTElOR0VWRU5ULCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDE1fX0sCit9OworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKworCiAvKgogICogKEwgPSBsZW5ndGggb2YgdGhlIG9pZHN1ZmZpeCkgCiAgKi8KIAotCiAvKgogICogZ2xvYmFsIHN0b3JhZ2Ugb2Ygb3VyIGRhdGEsIHNhdmVkIGluIGFuZCBjb25maWd1cmVkIGJ5IGhlYWRlcl9jb21wbGV4KCkgCiAgKi8KQEAgLTE1MSw2ICsyMDQsMTAgQEAKIAogICAgIERFQlVHTVNHVEwoKCJtdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUiLAogICAgICAgICAgICAgICAgICJ2YXJfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlOiBFbnRlcmluZy4uLiAgXG4iKSk7CisKKwkvKiBzZXQgZGVmYXVsdCB2YWx1ZSAqLworCSp3cml0ZV9tZXRob2QgPSBOVUxMOworCiAgICAgLyoKICAgICAgKiB0aGlzIGFzc3VtZXMgeW91IGhhdmUgcmVnaXN0ZXJlZCBhbGwgeW91ciBkYXRhIHByb3Blcmx5CiAgICAgICovCkBAIC0xNzAsODAgKzIyNywxMTAgQEAKIAogCiAgICAgY2FzZSBNVEVUUklHR0VSVEhSRVNIT0xEU1RBUlRVUDoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyVGhyZXNob2xkU3RhcnR1cDsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGRTdGFydHVwKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkU3RhcnR1cDsKIAogICAgIGNhc2UgTVRFVFJJR0dFUlRIUkVTSE9MRFJJU0lORzoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyVGhyZXNob2xkUmlzaW5nOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YoU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZFJpc2luZyk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZFJpc2luZzsKIAogICAgIGNhc2UgTVRFVFJJR0dFUlRIUkVTSE9MREZBTExJTkc6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlclRocmVzaG9sZEZhbGxpbmc7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkRmFsbGluZyk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZEZhbGxpbmc7CiAKICAgICBjYXNlIE1URVRSSUdHRVJUSFJFU0hPTERERUxUQVJJU0lORzoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFSaXNpbmc7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFSaXNpbmcpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGREZWx0YVJpc2luZzsKIAogICAgIGNhc2UgTVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBRkFMTElORzoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFGYWxsaW5nOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YoU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZERlbHRhRmFsbGluZyk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZERlbHRhRmFsbGluZzsKIAogICAgIGNhc2UgTVRFVFJJR0dFUlRIUkVTSE9MRE9CSkVDVFNPV05FUjoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyVGhyZXNob2xkT2JqZWN0c093bmVyOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkT2JqZWN0c093bmVyTGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkT2JqZWN0c093bmVyOwogCiAgICAgY2FzZSBNVEVUUklHR0VSVEhSRVNIT0xET0JKRUNUUzoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyVGhyZXNob2xkT2JqZWN0czsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZE9iamVjdHNMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGRPYmplY3RzOwogCiAgICAgY2FzZSBNVEVUUklHR0VSVEhSRVNIT0xEUklTSU5HRVZFTlRPV05FUjoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyVGhyZXNob2xkUmlzaW5nRXZlbnRPd25lcjsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZFJpc2luZ0V2ZW50T3duZXJMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGRSaXNpbmdFdmVudE93bmVyOwogCiAgICAgY2FzZSBNVEVUUklHR0VSVEhSRVNIT0xEUklTSU5HRVZFTlQ6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlclRocmVzaG9sZFJpc2luZ0V2ZW50OworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkUmlzaW5nRXZlbnRMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGRSaXNpbmdFdmVudDsKIAogICAgIGNhc2UgTVRFVFJJR0dFUlRIUkVTSE9MREZBTExJTkdFVkVOVE9XTkVSOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJUaHJlc2hvbGRGYWxsaW5nRXZlbnRPd25lcjsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZEZhbGxpbmdFdmVudE93bmVyTGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkRmFsbGluZ0V2ZW50T3duZXI7CiAKICAgICBjYXNlIE1URVRSSUdHRVJUSFJFU0hPTERGQUxMSU5HRVZFTlQ6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlclRocmVzaG9sZEZhbGxpbmdFdmVudDsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZEZhbGxpbmdFdmVudExlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZEZhbGxpbmdFdmVudDsKIAogICAgIGNhc2UgTVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBUklTSU5HRVZFTlRPV05FUjoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFSaXNpbmdFdmVudE93bmVyOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFSaXNpbmdFdmVudE93bmVyTGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT4KICAgICAgICAgICAgIG10ZVRyaWdnZXJUaHJlc2hvbGREZWx0YVJpc2luZ0V2ZW50T3duZXI7CiAKICAgICBjYXNlIE1URVRSSUdHRVJUSFJFU0hPTERERUxUQVJJU0lOR0VWRU5UOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJUaHJlc2hvbGREZWx0YVJpc2luZ0V2ZW50OworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFSaXNpbmdFdmVudExlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZERlbHRhUmlzaW5nRXZlbnQ7CiAKICAgICBjYXNlIE1URVRSSUdHRVJUSFJFU0hPTERERUxUQUZBTExJTkdFVkVOVE9XTkVSOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJUaHJlc2hvbGREZWx0YUZhbGxpbmdFdmVudE93bmVyOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPQogICAgICAgICAgICAgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZERlbHRhRmFsbGluZ0V2ZW50T3duZXJMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPgogICAgICAgICAgICAgbXRlVHJpZ2dlclRocmVzaG9sZERlbHRhRmFsbGluZ0V2ZW50T3duZXI7CiAKICAgICBjYXNlIE1URVRSSUdHRVJUSFJFU0hPTERERUxUQUZBTExJTkdFVkVOVDoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFGYWxsaW5nRXZlbnQ7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGREZWx0YUZhbGxpbmdFdmVudExlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZERlbHRhRmFsbGluZ0V2ZW50OwogCkBAIC0yNTYsNyArMzQzLDcgQEAKIAogCiAKLQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgCiBpbnQKIHdyaXRlX210ZVRyaWdnZXJUaHJlc2hvbGRTdGFydHVwKGludCBhY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgKiB2YXJfdmFsLApAQCAtMTYwOSwzICsxNjk2LDUgQEAKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CisKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmggYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmgKaW5kZXggN2FhNmNlYy4uOGYzMzAxMSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuaApAQCAtMjcsNiArMjcsNyBAQAogICAgICB2b2lkICAgICAgICAgICAgaW5pdF9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUodm9pZCk7CiAgICAgIEZpbmRWYXJNZXRob2QgICB2YXJfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlclRocmVzaG9sZFN0YXJ0dXA7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyVGhyZXNob2xkUmlzaW5nOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlclRocmVzaG9sZEZhbGxpbmc7CkBAIC00Miw1ICs0Myw2IEBACiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFSaXNpbmdFdmVudDsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJUaHJlc2hvbGREZWx0YUZhbGxpbmdFdmVudE93bmVyOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlclRocmVzaG9sZERlbHRhRmFsbGluZ0V2ZW50OworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfTUlCR1JPVVBfTVRFVFJJR0dFUlRIUkVTSE9MRFRBQkxFX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmMKaW5kZXggM2NkOTYyNC4uMzA0ODk5OSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmMKQEAgLTE2LDkgKzE2LDE0IEBACiAgKiBUaGlzIHNob3VsZCBhbHdheXMgYmUgaW5jbHVkZWQgZmlyc3QgYmVmb3JlIGFueXRoaW5nIGVsc2UgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGhlYWRlcl9jb21wbGV4X2ZpbmRfZW50cnkpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKICNpbmNsdWRlIDxhcnBhL2luZXQuaD4KICNpbmNsdWRlIDxuZXRkYi5oPgogCkBAIC00Niw2ICs1MSw3IEBACiAgICAgeyAxLCAzLCA2LCAxLCAyLCAxLCA4MiwgMSwgMyB9OwogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBzdHJ1Y3QgdmFyaWFibGUyIGxvb2t1cEN0bFRhYmxlX3ZhcmlhYmxlc1tdID0gewogICAgIC8qCiAgICAgICogbWFnaWMgbnVtYmVyICAgICAgICAsIHZhcmlhYmxlIHR5cGUgLCByby9ydyAsIGNhbGxiYWNrIGZuICAsIEwsIG9pZHN1ZmZpeApAQCAtNjMsNiArNjksMjUgQEAKICAgICB7Q09MVU1OX0xPT0tVUENUTFJPV1NUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX2xvb2t1cEN0bFRhYmxlLCAyLCB7MSwgOH19CiB9OworI2Vsc2UgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworc3RydWN0IHZhcmlhYmxlMiBsb29rdXBDdGxUYWJsZV92YXJpYWJsZXNbXSA9IHsKKyAgICAvKgorICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXgKKyAgICAgKi8KKyAgICB7Q09MVU1OX0xPT0tVUENUTFRBUkdFVEFERFJFU1NUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9sb29rdXBDdGxUYWJsZSwgMiwgezEsIDN9fSwKKyAgICB7Q09MVU1OX0xPT0tVUENUTFRBUkdFVEFERFJFU1MsICAgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9sb29rdXBDdGxUYWJsZSwgMiwgezEsIDR9fSwKKyAgICB7Q09MVU1OX0xPT0tVUENUTE9QRVJTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xvb2t1cEN0bFRhYmxlLCAyLCB7MSwgNX19LAorICAgIHtDT0xVTU5fTE9PS1VQQ1RMVElNRSwgICAgICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbG9va3VwQ3RsVGFibGUsIDIsIHsxLCA2fX0sCisgICAge0NPTFVNTl9MT09LVVBDVExSQywgICAgICAgICBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9sb29rdXBDdGxUYWJsZSwgMiwgezEsIDd9fSwKKyAgICB7Q09MVU1OX0xPT0tVUENUTFJPV1NUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbG9va3VwQ3RsVGFibGUsIDIsIHsxLCA4fX0KK307CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAKIC8qCkBAIC0zNzMsNiArMzk4LDcgQEAKICAgICAgICAgICAgICAgICAgICBpbnQgZXhhY3QsIHNpemVfdCAqdmFyX2xlbiwgV3JpdGVNZXRob2QgKiogd3JpdGVfbWV0aG9kKQogewogICAgIHN0cnVjdCBsb29rdXBUYWJsZV9kYXRhICpTdG9yYWdlVG1wID0gTlVMTDsKKyAgICAgICAgKndyaXRlX21ldGhvZCA9IE5VTEw7CiAKICAgICAvKgogICAgICAqIHRoaXMgYXNzdW1lcyB5b3UgaGF2ZSByZWdpc3RlcmVkIGFsbCB5b3VyIGRhdGEgcHJvcGVybHkKQEAgLTM5MCwxMiArNDE2LDE2IEBACiAgICAgICovCiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKICAgICBjYXNlIENPTFVNTl9MT09LVVBDVExUQVJHRVRBRERSRVNTVFlQRToKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9sb29rdXBDdGxUYXJnZXRBZGRyZXNzVHlwZTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKFN0b3JhZ2VUbXAtPmxvb2t1cEN0bFRhcmdldEFkZHJlc3NUeXBlKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBTdG9yYWdlVG1wLT5sb29rdXBDdGxUYXJnZXRBZGRyZXNzVHlwZTsKIAogICAgIGNhc2UgQ09MVU1OX0xPT0tVUENUTFRBUkdFVEFERFJFU1M6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbG9va3VwQ3RsVGFyZ2V0QWRkcmVzczsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gKFN0b3JhZ2VUbXAtPmxvb2t1cEN0bFRhcmdldEFkZHJlc3NMZW4pOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5sb29rdXBDdGxUYXJnZXRBZGRyZXNzOwogCkBAIC00MTIsNyArNDQyLDkgQEAKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBTdG9yYWdlVG1wLT5sb29rdXBDdGxSYzsKIAogICAgIGNhc2UgQ09MVU1OX0xPT0tVUENUTFJPV1NUQVRVUzoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9sb29rdXBDdGxSb3dTdGF0dXM7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihTdG9yYWdlVG1wLT5sb29rdXBDdGxSb3dTdGF0dXMpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIFN0b3JhZ2VUbXAtPmxvb2t1cEN0bFJvd1N0YXR1czsKIApAQCAtNTA1LDkgKzUzNyw5IEBACiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBnZXR0aW1lb2ZkYXkoJnRwc3RhcnQsIE5VTEwpOwotICAgICAgICBsb29rdXAgPSBnZXRob3N0YnlhZGRyKCZhZGRyX2luLCBzaXplb2YoYWRkcl9pbiksIEFGX0lORVQpOwotICAgICAgICBnZXR0aW1lb2ZkYXkoJnRwZW5kLCBOVUxMKTsKKyAgICAgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZ0cHN0YXJ0KTsKKyAgICAgICAgbG9va3VwID0gbmV0c25tcF9nZXRob3N0YnlhZGRyKCZhZGRyX2luLCBzaXplb2YoYWRkcl9pbiksIEFGX0lORVQpOworICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnRwZW5kKTsKICAgICAgICAgdGltZXVzZSA9IDEwMDAwMDAgKiAodHBlbmQudHZfc2VjIC0gdHBzdGFydC50dl9zZWMpICsKICAgICAgICAgICAgIHRwZW5kLnR2X3VzZWMgLSB0cHN0YXJ0LnR2X3VzZWM7CiAgICAgICAgIHRpbWV1c2UgLz0gMTAwMDsKQEAgLTU1NSw5ICs1ODcsOSBAQAogICAgICAgICBzdHJ1Y3QgYWRkcmluZm8gaGludHMgPSB7IDAsIEFGX0lORVQ2LCBTT0NLX0RHUkFNIH07CiAjZW5kaWYKIAotICAgICAgICBnZXR0aW1lb2ZkYXkoJnRwc3RhcnQsIE5VTEwpOwotICAgICAgICBsb29rdXAgPSBnZXRob3N0YnluYW1lKGFkZHJlc3MpOwotICAgICAgICBnZXR0aW1lb2ZkYXkoJnRwZW5kLCBOVUxMKTsKKyAgICAgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZ0cHN0YXJ0KTsKKyAgICAgICAgbG9va3VwID0gbmV0c25tcF9nZXRob3N0YnluYW1lKGFkZHJlc3MpOworICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnRwZW5kKTsKICAgICAgICAgdGltZXVzZTQgPSAxMDAwMDAwICogKHRwZW5kLnR2X3NlYyAtIHRwc3RhcnQudHZfc2VjKSArCiAgICAgICAgICAgICB0cGVuZC50dl91c2VjIC0gdHBzdGFydC50dl91c2VjOwogICAgICAgICBpZiAobG9va3VwID09IE5VTEwpIHsKQEAgLTU4NCw2ICs2MTYsNyBAQAogICAgICAgICAgICAgICAgICAgICB0ZW1wID0gYWRkX3Jlc3VsdChpdGVtLCBuLCBJTkVUQUREUkVTU1RZUEVfVU5LTk9XTiwgIiIsIDApOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImxvb2t1cEN0bFRhYmxlIiwgIkFkZGluZyAlZCAlc1xuIiwgbiwgYnVmKSk7CiAKICAgICAgICAgICAgICAgICBpZiAobiA9PSAxKQogICAgICAgICAgICAgICAgICAgICBpdGVtLT5SZXN1bHRzVGFibGUgPSB0ZW1wOwpAQCAtNTk2LDkgKzYyOSw5IEBACiAgICAgICAgIH0KIAogI2lmIEhBVkVfR0VUQUREUklORk8KLSAgICAgICAgZ2V0dGltZW9mZGF5KCZ0cHN0YXJ0LCBOVUxMKTsKLSAgICAgICAgcmVzID0gZ2V0YWRkcmluZm8oYWRkcmVzcywgTlVMTCwgJmhpbnRzLCAmYWlzKTsKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZ0cGVuZCwgTlVMTCk7CisgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmdHBzdGFydCk7CisgICAgICAgIHJlcyA9IG5ldHNubXBfZ2V0YWRkcmluZm8oYWRkcmVzcywgTlVMTCwgJmhpbnRzLCAmYWlzKTsKKyAgICAgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZ0cGVuZCk7CiAgICAgICAgIHRpbWV1c2U2ID0gMTAwMDAwMCAqICh0cGVuZC50dl9zZWMgLSB0cHN0YXJ0LnR2X3NlYykgKwogICAgICAgICAgICAgdHBlbmQudHZfdXNlYyAtIHRwc3RhcnQudHZfdXNlYzsKIApAQCAtNjE2LDE0ICs2NDksMTQgQEAKICAgICAgICAgICAgICAgICBzd2l0Y2ggKGFpcC0+YWlfZmFtaWx5KSB7CiAgICAgICAgICAgICAgICAgY2FzZSBBRl9JTkVUOgogICAgICAgICAgICAgICAgICAgICBpbmV0X250b3AoYWlwLT5haV9mYW1pbHksCi0gICAgICAgICAgICAgICAgICAgICAgICAmKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilhaXAtPmFpX2FkZHIpLT5zaW5fYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilhaXAtPmFpX2FkZHIpLT5zaW5fYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwogICAgICAgICAgICAgICAgICAgICBidWZsZW4gPSBzdHJsZW4oYnVmKTsKICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IGFkZF9yZXN1bHQoaXRlbSwgbiwgSU5FVEFERFJFU1NUWVBFX0lQVjQsIGJ1ZiwgYnVmbGVuKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBBRl9JTkVUNjoKICAgICAgICAgICAgICAgICAgICAgaW5ldF9udG9wKGFpcC0+YWlfZmFtaWx5LAotICAgICAgICAgICAgICAgICAgICAgICAgJigoc3RydWN0IHNvY2thZGRyX2luNiAqKWFpcC0+YWlfYWRkciktPnNpbjZfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopYWlwLT5haV9hZGRyKS0+c2luNl9hZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCBzaXplb2YoYnVmKSk7CiAgICAgICAgICAgICAgICAgICAgIGJ1ZmxlbiA9IHN0cmxlbihidWYpOwogICAgICAgICAgICAgICAgICAgICB0ZW1wID0gYWRkX3Jlc3VsdChpdGVtLCBuLCBJTkVUQUREUkVTU1RZUEVfSVBWNiwgYnVmLCBidWZsZW4pOwpAQCAtNjQ2LDkgKzY3OSw5IEBACiAgICAgICAgICAgICBmcmVlYWRkcmluZm8oYWlzKTsKICAgICAgICAgfQogI2VsaWYgSEFWRV9HRVRIT1NUQllOQU1FMgotICAgICAgICBnZXR0aW1lb2ZkYXkoJnRwc3RhcnQsIE5VTEwpOworICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnRwc3RhcnQpOwogICAgICAgICBsb29rdXAgPSBnZXRob3N0YnluYW1lMihhZGRyZXNzLCBBRl9JTkVUNik7Ci0gICAgICAgIGdldHRpbWVvZmRheSgmdHBlbmQsIE5VTEwpOworICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnRwZW5kKTsKICAgICAgICAgdGltZXVzZTYgPSAxMDAwMDAwICogKHRwZW5kLnR2X3NlYyAtIHRwc3RhcnQudHZfc2VjKSArCiAgICAgICAgICAgICB0cGVuZC50dl91c2VjIC0gdHBzdGFydC50dl91c2VjOwogCkBAIC03MTUsOSArNzQ4LDkgQEAKICAgICAgICAgZWxzZQogICAgICAgICAgICAgREVCVUdNU0dUTCgoImxvb2t1cEN0bFRhYmxlIiwgImVycm9yISBcbiIpKTsKIAotICAgICAgICBnZXR0aW1lb2ZkYXkoJnRwc3RhcnQsIE5VTEwpOwotICAgICAgICBsb29rdXAgPSBnZXRob3N0YnlhZGRyKCZhZGRyX2luNiwgc2l6ZW9mKGFkZHJfaW42KSwgQUZfSU5FVDYpOwotICAgICAgICBnZXR0aW1lb2ZkYXkoJnRwZW5kLCBOVUxMKTsKKyAgICAgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZ0cHN0YXJ0KTsKKyAgICAgICAgbG9va3VwID0gbmV0c25tcF9nZXRob3N0YnlhZGRyKCZhZGRyX2luNiwgc2l6ZW9mKGFkZHJfaW42KSwgQUZfSU5FVDYpOworICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnRwZW5kKTsKICAgICAgICAgdGltZXVzZSA9IDEwMDAwMDAgKiAodHBlbmQudHZfc2VjIC0gdHBzdGFydC50dl9zZWMpICsKICAgICAgICAgICAgIHRwZW5kLnR2X3VzZWMgLSB0cHN0YXJ0LnR2X3VzZWM7CiAgICAgICAgIHRpbWV1c2UgLz0gMTAwMDsKQEAgLTg5Miw2ICs5MjUsNyBAQAogfQogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBpbnQKIHdyaXRlX2xvb2t1cEN0bFRhcmdldEFkZHJlc3NUeXBlKGludCBhY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgKiB2YXJfdmFsLApAQCAtMTM3OCwzICsxNDEyLDQgQEAKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmggYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuaAppbmRleCA3YTcyOWFiLi4wODViMjViIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuaApAQCAtNjQsMTIgKzY0LDEzIEBACiB2b2lkICAgICAgICAgICAgcGFyc2VfbG9va3VwQ3RsVGFibGUoY29uc3QgY2hhciAqLCBjaGFyICopOwogU05NUENhbGxiYWNrICAgIHN0b3JlX2xvb2t1cEN0bFRhYmxlOwogCi0KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUIAogV3JpdGVNZXRob2QgICAgIHdyaXRlX2xvb2t1cEN0bFRhcmdldEFkZHJlc3NUeXBlOwogV3JpdGVNZXRob2QgICAgIHdyaXRlX2xvb2t1cEN0bFRhcmdldEFkZHJlc3M7CiBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbG9va3VwQ3RsUm93U3RhdHVzOwogCiBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbG9va3VwQ3RsUm93U3RhdHVzOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogLyoKICAqIGNvbHVtbiBudW1iZXIgZGVmaW5pdGlvbnMgZm9yIHRhYmxlIGxvb2t1cEN0bFRhYmxlIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYwppbmRleCBkYjQ3M2JlLi5iOWFkZDhmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYwpAQCAtNTUsNiArNTUsNyBAQAogc3RhdGljIF9faW5saW5lX18gaW50IGlwdjZfYWRkcl9hbnkoc3RydWN0IGluNl9hZGRyICopOwogc3RhdGljIGNoYXIgICAgKnByX2FkZHIoc3RydWN0IGluNl9hZGRyICosIGludCk7CiBzdGF0aWMgY2hhciAgICAqcHJfYWRkcl9uKHN0cnVjdCBpbjZfYWRkciAqKTsKK3ZvaWQgcGluZ0N0bFRhYmxlX2NsZWFuZXIoc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICp0aGVzdHVmZik7CiAKIC8qCiAgKnBpbmdDdGxUYWJsZV92YXJpYWJsZXNfb2lkOgpAQCAtNjQsNiArNjUsNyBAQAogCiBvaWQgICAgICAgICAgICAgcGluZ0N0bFRhYmxlX3ZhcmlhYmxlc19vaWRbXSA9CiAgICAgeyAxLCAzLCA2LCAxLCAyLCAxLCA4MCwgMSwgMiB9Oworc3RhdGljIGNvbnN0IGludCBwaW5nQ3RsVGFibGVfdmFyaWFibGVzX29pZF9sZW4gPSBzaXplb2YocGluZ0N0bFRhYmxlX3ZhcmlhYmxlc19vaWQpL3NpemVvZihwaW5nQ3RsVGFibGVfdmFyaWFibGVzX29pZFswXSk7CiAKIC8qIHRyYXAgKi8KIG9pZCAgICAgICAgICAgICBwaW5nUHJvYmVGYWlsZWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgODAsIDAsIDEgfTsKQEAgLTE1NywxNCArMTU5LDI0IEBACiAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICJkb25lLlxuIikpOwogfQogCit2b2lkIHNodXRkb3duX3BpbmdDdGxUYWJsZSh2b2lkKQoreworICAgIHNubXBfdW5yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0xJQlJBUlksIFNOTVBfQ0FMTEJBQ0tfU1RPUkVfREFUQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVfcGluZ0N0bFRhYmxlLCBOVUxMLCAxKTsKKyAgICBzbm1wZF91bnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJwaW5nQ3RsVGFibGUiKTsKKyAgICB1bnJlZ2lzdGVyX21pYihwaW5nQ3RsVGFibGVfdmFyaWFibGVzX29pZCwgcGluZ0N0bFRhYmxlX3ZhcmlhYmxlc19vaWRfbGVuKTsKKyAgICBwaW5nQ3RsVGFibGVfY2xlYW5lcihwaW5nQ3RsVGFibGVTdG9yYWdlKTsKKyAgICBwaW5nQ3RsVGFibGVTdG9yYWdlID0gTlVMTDsKK30KKwogc3RydWN0IHBpbmdDdGxUYWJsZV9kYXRhICoKIGNyZWF0ZV9waW5nQ3RsVGFibGVfZGF0YSh2b2lkKQogewogICAgIHN0cnVjdCBwaW5nQ3RsVGFibGVfZGF0YSAqU3RvcmFnZU5ldyA9IE5VTEw7CisKICAgICBTdG9yYWdlTmV3ID0gU05NUF9NQUxMT0NfU1RSVUNUKHBpbmdDdGxUYWJsZV9kYXRhKTsKLSAgICBpZiAoU3RvcmFnZU5ldyA9PSBOVUxMKSB7Ci0gICAgICAgIGV4aXQoMSk7Ci0gICAgfQorICAgIGlmIChTdG9yYWdlTmV3ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIFN0b3JhZ2VOZXctPnBpbmdDdGxUYXJnZXRBZGRyZXNzVHlwZSA9IDE7CiAgICAgU3RvcmFnZU5ldy0+cGluZ0N0bFRhcmdldEFkZHJlc3MgPSBzdHJkdXAoIiIpOwogICAgIFN0b3JhZ2VOZXctPnBpbmdDdGxUYXJnZXRBZGRyZXNzTGVuID0gMDsKQEAgLTE3MiwxOSArMTg0LDE3IEBACiAgICAgU3RvcmFnZU5ldy0+cGluZ0N0bFRpbWVPdXQgPSAzOwogICAgIFN0b3JhZ2VOZXctPnBpbmdDdGxQcm9iZUNvdW50ID0gMTsKICAgICBTdG9yYWdlTmV3LT5waW5nQ3RsQWRtaW5TdGF0dXMgPSAyOwotICAgIFN0b3JhZ2VOZXctPnBpbmdDdGxEYXRhRmlsbCA9IChjaGFyICopIG1hbGxvYyhzdHJsZW4oIjAwIikgKyAxKTsKKyAgICBTdG9yYWdlTmV3LT5waW5nQ3RsRGF0YUZpbGwgPSBzdHJkdXAoIjAwIik7CiAgICAgaWYgKFN0b3JhZ2VOZXctPnBpbmdDdGxEYXRhRmlsbCA9PSBOVUxMKSB7Ci0gICAgICAgIGV4aXQoMSk7CisgICAgICAgIGZyZWUoU3RvcmFnZU5ldyk7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBtZW1jcHkoU3RvcmFnZU5ldy0+cGluZ0N0bERhdGFGaWxsLCAiMDAiLCBzdHJsZW4oIjAwIikgKyAxKTsKLSAgICBTdG9yYWdlTmV3LT5waW5nQ3RsRGF0YUZpbGxbc3RybGVuKCIwMCIpXSA9ICdcMCc7CiAgICAgU3RvcmFnZU5ldy0+cGluZ0N0bERhdGFGaWxsTGVuID0gc3RybGVuKFN0b3JhZ2VOZXctPnBpbmdDdGxEYXRhRmlsbCk7CiAgICAgU3RvcmFnZU5ldy0+cGluZ0N0bEZyZXF1ZW5jeSA9IDA7CiAgICAgU3RvcmFnZU5ldy0+cGluZ0N0bE1heFJvd3MgPSA1MDsKICAgICBTdG9yYWdlTmV3LT5waW5nQ3RsU3RvcmFnZVR5cGUgPSAxOwogICAgIFN0b3JhZ2VOZXctPnBpbmdDdGxUcmFwR2VuZXJhdGlvbiA9IHN0cmR1cCgiIik7CiAgICAgU3RvcmFnZU5ldy0+cGluZ0N0bFRyYXBHZW5lcmF0aW9uTGVuID0gMDsKLSAgICBTdG9yYWdlTmV3LT5waW5nQ3RsVHJhcEdlbmVyYXRpb25MZW4gPSAwOwogICAgIFN0b3JhZ2VOZXctPnBpbmdDdGxUcmFwUHJvYmVGYWlsdXJlRmlsdGVyID0gMTsKICAgICBTdG9yYWdlTmV3LT5waW5nQ3RsVHJhcFRlc3RGYWlsdXJlRmlsdGVyID0gMTsKICAgICBTdG9yYWdlTmV3LT5waW5nQ3RsVHlwZSA9IGNhbGxvYygxLCBzaXplb2Yob2lkKSAqIHNpemVvZigyKSk7ICAgICAgIC8qIDAuMCAqLwpAQCAtMjA1LDYgKzIxNSwyMCBAQAogICAgIHJldHVybiBTdG9yYWdlTmV3OwogfQogCitzdGF0aWMgdm9pZCBmcmVlX3BpbmdDdGxUYWJsZV9kYXRhKHN0cnVjdCBwaW5nQ3RsVGFibGVfZGF0YSAqU3RvcmFnZURlbCkKK3sKKyAgICBuZXRzbm1wX2Fzc2VydChTdG9yYWdlRGVsKTsKKyAgICBmcmVlKFN0b3JhZ2VEZWwtPnBpbmdDdGxPd25lckluZGV4KTsKKyAgICBmcmVlKFN0b3JhZ2VEZWwtPnBpbmdDdGxUZXN0TmFtZSk7CisgICAgZnJlZShTdG9yYWdlRGVsLT5waW5nQ3RsVGFyZ2V0QWRkcmVzcyk7CisgICAgZnJlZShTdG9yYWdlRGVsLT5waW5nQ3RsRGF0YUZpbGwpOworICAgIGZyZWUoU3RvcmFnZURlbC0+cGluZ0N0bFRyYXBHZW5lcmF0aW9uKTsKKyAgICBmcmVlKFN0b3JhZ2VEZWwtPnBpbmdDdGxUeXBlKTsKKyAgICBmcmVlKFN0b3JhZ2VEZWwtPnBpbmdDdGxEZXNjcik7CisgICAgZnJlZShTdG9yYWdlRGVsLT5waW5nQ3RsU291cmNlQWRkcmVzcyk7CisgICAgZnJlZShTdG9yYWdlRGVsKTsKK30KKwogLyoKICAqIHBpbmdDdGxUYWJsZV9hZGQoKTogYWRkcyBhIHN0cnVjdHVyZSBub2RlIHRvIG91ciBkYXRhIHNldCAKICAqLwpAQCAtMjIxLDE1ICsyNDUsMTYgQEAKICAgICAgKi8KIAogCi0gICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXgsIHRoZWRhdGEtPnBpbmdDdGxPd25lckluZGV4TGVuKTsgICAgICAgLyogcGluZ0N0bE93bmVySW5kZXggKi8KLSAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWUsIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZUxlbik7ICAgLyogcGluZ0N0bE9wZXJhdGlvbk5hbWUgKi8KLQotCisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxPd25lckluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOworICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWVMZW4pOwogICAgIGhlYWRlcl9jb21wbGV4X2FkZF9kYXRhKCZwaW5nQ3RsVGFibGVTdG9yYWdlLCB2YXJzLCB0aGVkYXRhKTsKIAogICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAicmVnaXN0ZXJlZCBhbiBlbnRyeVxuIikpOwotICAgIHZhcnMgPSBOVUxMOwotICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiZG9uZS5cbiIpKTsKKwogICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CiB9CiAKQEAgLTIzNywxMiArMjYyLDE2IEBACiBwaW5nUmVzdWx0c1RhYmxlX2FkZChzdHJ1Y3QgcGluZ0N0bFRhYmxlX2RhdGEgKnRoZWRhdGEpCiB7CiAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJzX2xpc3QgPSBOVUxMOwotICAgIHN0cnVjdCBwaW5nUmVzdWx0c1RhYmxlX2RhdGEgKnAgPSBOVUxMOworICAgIHN0cnVjdCBwaW5nUmVzdWx0c1RhYmxlX2RhdGEgKnA7CisKICAgICBwID0gdGhlZGF0YS0+cGluZ1Jlc3VsdHM7CiAgICAgaWYgKHRoZWRhdGEtPnBpbmdSZXN1bHRzICE9IE5VTEwpIHsKIAotICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzX2xpc3QsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHAtPnBpbmdDdGxPd25lckluZGV4LCBwLT5waW5nQ3RsT3duZXJJbmRleExlbik7ICAvKiBwaW5nQ3RsT3duZXJJbmRleCAqLwotICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzX2xpc3QsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHAtPnBpbmdDdGxUZXN0TmFtZSwgcC0+cGluZ0N0bFRlc3ROYW1lTGVuKTsgICAgICAvKiBwaW5nQ3RsT3BlcmF0aW9uTmFtZSAqLworICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzX2xpc3QsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC0+cGluZ0N0bE93bmVySW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC0+cGluZ0N0bE93bmVySW5kZXhMZW4pOworICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzX2xpc3QsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC0+cGluZ0N0bFRlc3ROYW1lLCBwLT5waW5nQ3RsVGVzdE5hbWVMZW4pOwogCiAgICAgICAgIC8qCiAgICAgICAgICAqIFhYWDogZmlsbCBpbiBkZWZhdWx0IHJvdyB2YWx1ZXMgaGVyZSBpbnRvIFN0b3JhZ2VOZXcgCkBAIC0yNjIsOCArMjkxLDYgQEAKIAogICAgIH0KIAotICAgIERFQlVHTVNHVEwoKCJwaW5nUmVzdWx0c1RhYmxlIiwgImRvbmUuXG4iKSk7Ci0gICAgdmFyc19saXN0ID0gTlVMTDsKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfQogCkBAIC0yNzIsMTEgKzI5OSwxOCBAQAogcGluZ1Byb2JlSGlzdG9yeVRhYmxlX2FkZChzdHJ1Y3QgcGluZ1Byb2JlSGlzdG9yeVRhYmxlX2RhdGEgKnRoZWRhdGEpCiB7CiAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJzX2xpc3Q7CisKICAgICB2YXJzX2xpc3QgPSBOVUxMOwogICAgIGlmICh0aGVkYXRhICE9IE5VTEwpIHsKLSAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFyc19saXN0LCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSB0aGVkYXRhLT5waW5nQ3RsT3duZXJJbmRleCwgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOyAgICAgIC8qIHBpbmdDdGxPd25lckluZGV4ICovCi0gICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnNfbGlzdCwgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgdGhlZGF0YS0+cGluZ0N0bFRlc3ROYW1lLCB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWVMZW4pOyAgLyogcGluZ0N0bFRlc3ROYW1lICovCi0gICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnNfbGlzdCwgTlVMTCwgMCwgQVNOX1VOU0lHTkVELCAoY2hhciAqKSAmdGhlZGF0YS0+cGluZ1Byb2JlSGlzdG9yeUluZGV4LCBzaXplb2YodGhlZGF0YS0+cGluZ1Byb2JlSGlzdG9yeUluZGV4KSk7IC8qIHBpbmdQcm9iZUhpc3RvcnlJbmRleCAqLworICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzX2xpc3QsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOworICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzX2xpc3QsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YS0+cGluZ0N0bFRlc3ROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZUxlbik7CisgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnNfbGlzdCwgTlVMTCwgMCwgQVNOX1VOU0lHTkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0aGVkYXRhLT5waW5nUHJvYmVIaXN0b3J5SW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRoZWRhdGEtPnBpbmdQcm9iZUhpc3RvcnlJbmRleCkpOwogCiAgICAgICAgIC8qCiAgICAgICAgICAqIFhYWDogZmlsbCBpbiBkZWZhdWx0IHJvdyB2YWx1ZXMgaGVyZSBpbnRvIFN0b3JhZ2VOZXcgCkBAIC0yOTUsNTYgKzMyOSw0MyBAQAogICAgICAgICBERUJVR01TR1RMKCgicGluZ1Byb2JlSGlzdG9yeVRhYmxlIiwgIm91dCBmaW5pc2hlZFxuIikpOwogICAgIH0KICAgICAKLSAgICB2YXJzX2xpc3QgPSBOVUxMOwotICAgIERFQlVHTVNHVEwoKCJwaW5nUHJvYmVIaXN0b3J5VGFibGUiLCAiZG9uZS5cbiIpKTsKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfQogCiBpbnQKIHBpbmdQcm9iZUhpc3RvcnlUYWJsZV9hZGRhbGwoc3RydWN0IHBpbmdDdGxUYWJsZV9kYXRhICp0aGVkYXRhKQogewotICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyc19saXN0ID0gTlVMTDsKLSAgICBzdHJ1Y3QgcGluZ1Byb2JlSGlzdG9yeVRhYmxlX2RhdGEgKnAgPSBOVUxMOwotICAgIHAgPSB0aGVkYXRhLT5waW5nUHJvYmVIaXM7Ci0gICAgaWYgKHRoZWRhdGEtPnBpbmdQcm9iZUhpcyAhPSBOVUxMKQotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzX2xpc3QsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHAtPnBpbmdDdGxPd25lckluZGV4LCBwLT5waW5nQ3RsT3duZXJJbmRleExlbik7ICAgICAgLyogcGluZ0N0bE93bmVySW5kZXggKi8KLSAgICAgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnNfbGlzdCwgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgcC0+cGluZ0N0bFRlc3ROYW1lLCBwLT5waW5nQ3RsVGVzdE5hbWVMZW4pOyAgLyogcGluZ0N0bFRlc3ROYW1lICovCi0gICAgICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzX2xpc3QsIE5VTEwsIDAsIEFTTl9VTlNJR05FRCwgKGNoYXIgKikgJnAtPnBpbmdQcm9iZUhpc3RvcnlJbmRleCwgc2l6ZW9mKHAtPnBpbmdQcm9iZUhpc3RvcnlJbmRleCkpOyAvKiBwaW5nUHJvYmVIaXN0b3J5SW5kZXggKi8KKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcnNfbGlzdDsKKyAgICBzdHJ1Y3QgcGluZ1Byb2JlSGlzdG9yeVRhYmxlX2RhdGEgKnA7CiAKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBYWFg6IGZpbGwgaW4gZGVmYXVsdCByb3cgdmFsdWVzIGhlcmUgaW50byBTdG9yYWdlTmV3IAotICAgICAgICAgICAgICogCi0gICAgICAgICAgICAgKi8KKyAgICBmb3IgKHAgPSB0aGVkYXRhLT5waW5nUHJvYmVIaXM7IHA7IHAgPSBwLT5uZXh0KSB7CisgICAgICAgIHZhcnNfbGlzdCA9IE5VTEw7CisgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnNfbGlzdCwgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLT5waW5nQ3RsT3duZXJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLT5waW5nQ3RsT3duZXJJbmRleExlbik7CisgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnNfbGlzdCwgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLT5waW5nQ3RsVGVzdE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC0+cGluZ0N0bFRlc3ROYW1lTGVuKTsKKyAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFyc19saXN0LCBOVUxMLCAwLCBBU05fVU5TSUdORUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnAtPnBpbmdQcm9iZUhpc3RvcnlJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YocC0+cGluZ1Byb2JlSGlzdG9yeUluZGV4KSk7CisgICAgICAgIGhlYWRlcl9jb21wbGV4X2FkZF9kYXRhKCZwaW5nUHJvYmVIaXN0b3J5VGFibGVTdG9yYWdlLCB2YXJzX2xpc3QsIHApOworICAgIH0KIAotCi0gICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ1Byb2JlSGlzdG9yeVRhYmxlIiwgImFkZGluZyBkYXRhLi4uICAiKSk7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogYWRkIHRoZSBpbmRleCB2YXJpYWJsZXMgdG8gdGhlIHZhcmJpbmQgbGlzdCwgd2hpY2ggaXMgCi0gICAgICAgICAgICAgKiB1c2VkIGJ5IGhlYWRlcl9jb21wbGV4IHRvIGluZGV4IHRoZSBkYXRhIAotICAgICAgICAgICAgICovCi0KLSAgICAgICAgICAgIGhlYWRlcl9jb21wbGV4X2FkZF9kYXRhKCZwaW5nUHJvYmVIaXN0b3J5VGFibGVTdG9yYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyc19saXN0LCBwKTsKLQotCi0gICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ1Byb2JlSGlzdG9yeVRhYmxlIiwgIm91dCBmaW5pc2hlZFxuIikpOwotICAgICAgICAgICAgdmFyc19saXN0ID0gTlVMTDsKLSAgICAgICAgICAgIHAgPSBwLT5uZXh0OwotICAgICAgICB9IHdoaWxlIChwICE9IE5VTEwpOwotCi0gICAgREVCVUdNU0dUTCgoInBpbmdQcm9iZUhpc3RvcnlUYWJsZSIsICJkb25lLlxuIikpOwogICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CiB9CiAKIHZvaWQKIHBpbmdDdGxUYWJsZV9jbGVhbmVyKHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqdGhlc3R1ZmYpCiB7Ci0gICAgc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICpoY2lwdHI7CisgICAgc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICpoY2lwdHIsICpuZXh0OworICAgIHN0cnVjdCBwaW5nQ3RsVGFibGVfZGF0YSAqU3RvcmFnZURlbDsKIAogICAgIERFQlVHTVNHVEwoKCJwaW5nUHJvYmVIaXN0b3J5VGFibGUiLCAiY2xlYW5lcm91dCAgIikpOwotICAgIGZvciAoaGNpcHRyID0gdGhlc3R1ZmY7IGhjaXB0ciAhPSBOVUxMOyBoY2lwdHIgPSBoY2lwdHItPm5leHQpIHsKLSAgICAgICAgaGVhZGVyX2NvbXBsZXhfZXh0cmFjdF9lbnRyeSgmcGluZ0N0bFRhYmxlU3RvcmFnZSwgaGNpcHRyKTsKKyAgICBmb3IgKGhjaXB0ciA9IHRoZXN0dWZmOyBoY2lwdHI7IGhjaXB0ciA9IG5leHQpIHsKKyAgICAgICAgbmV4dCA9IGhjaXB0ci0+bmV4dDsKKyAgICAgICAgU3RvcmFnZURlbCA9IGhlYWRlcl9jb21wbGV4X2V4dHJhY3RfZW50cnkoJnBpbmdDdGxUYWJsZVN0b3JhZ2UsIGhjaXB0cik7CisgICAgICAgIGZyZWVfcGluZ0N0bFRhYmxlX2RhdGEoU3RvcmFnZURlbCk7CiAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nUHJvYmVIaXN0b3J5VGFibGUiLCAiY2xlYW5lciAgIikpOwogICAgIH0KIH0KQEAgLTg0MiwxMCArODYzLDE1IEBACiAgICAgc2l6ZV90ICAgICAgICAgIG5ld29pZF9sZW47CiAgICAgdW5zaWduZWQgbG9uZyAgIGNvdW50ID0gMDsKIAotICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHRoZWRhdGEtPnBpbmdDdGxPd25lckluZGV4LCB0aGVkYXRhLT5waW5nQ3RsT3duZXJJbmRleExlbik7ICAgICAgIC8qIHBpbmdDdGxPd25lckluZGV4ICovCi0gICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgdGhlZGF0YS0+cGluZ0N0bFRlc3ROYW1lLCB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWVMZW4pOyAgIC8qIHBpbmdDdGxPcGVyYXRpb25OYW1lICovCisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxPd25lckluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOworICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWVMZW4pOwogCiAgICAgaGVhZGVyX2NvbXBsZXhfZ2VuZXJhdGVfb2lkKG5ld29pZCwgJm5ld29pZF9sZW4sIE5VTEwsIDAsIHZhcnMpOworICAgIHNubXBfZnJlZV92YXJiaW5kKHZhcnMpOwogCiAgICAgZm9yIChoY2lwdHIyID0gcGluZ1Byb2JlSGlzdG9yeVRhYmxlU3RvcmFnZTsgaGNpcHRyMiAhPSBOVUxMOwogICAgICAgICAgaGNpcHRyMiA9IGhjaXB0cjItPm5leHQpIHsKQEAgLTg2MywxNyArODg5LDIxIEBACiB7CiAgICAgc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICpoY2lwdHIyID0gTlVMTDsKICAgICBzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKmhjaWxhc3QgPSBOVUxMOwotICAgIHN0cnVjdCBwaW5nUHJvYmVIaXN0b3J5VGFibGVfZGF0YSAqU3RvcmFnZVRtcCA9IE5VTEw7CisgICAgc3RydWN0IHBpbmdQcm9iZUhpc3RvcnlUYWJsZV9kYXRhICpTdG9yYWdlVG1wLCAqU3RvcmFnZURlbDsKICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcnMgPSBOVUxMOwogICAgIG9pZCAgICAgICAgICAgICBuZXdvaWRbTUFYX09JRF9MRU5dOwogICAgIHNpemVfdCAgICAgICAgICBuZXdvaWRfbGVuOwogICAgIHRpbWVfdCAgICAgICAgICBsYXN0X3RpbWUgPSAyMTQ3NDgzNjQ3OwogICAgIHRpbWVfdCAgICAgICAgICB0cDsKIAotICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHRoZWRhdGEtPnBpbmdDdGxPd25lckluZGV4LCB0aGVkYXRhLT5waW5nQ3RsT3duZXJJbmRleExlbik7ICAgICAgIC8qIHBpbmdDdGxPd25lckluZGV4ICovCi0gICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgdGhlZGF0YS0+cGluZ0N0bFRlc3ROYW1lLCB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWVMZW4pOyAgIC8qIHBpbmdDdGxPcGVyYXRpb25OYW1lICovCi0KKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsT3duZXJJbmRleExlbik7CisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZUxlbik7CiAgICAgaGVhZGVyX2NvbXBsZXhfZ2VuZXJhdGVfb2lkKG5ld29pZCwgJm5ld29pZF9sZW4sIE5VTEwsIDAsIHZhcnMpOworICAgIHNubXBfZnJlZV92YXJiaW5kKHZhcnMpOwogCiAgICAgZm9yIChoY2lsYXN0ID0gaGNpcHRyMiA9IHBpbmdQcm9iZUhpc3RvcnlUYWJsZVN0b3JhZ2U7IGhjaXB0cjIgIT0gTlVMTDsKICAgICAgICAgIGhjaXB0cjIgPSBoY2lwdHIyLT5uZXh0KSB7CkBAIC04OTMsNyArOTIzLDI1IEBACiAKICAgICAgICAgfQogICAgIH0KLSAgICBoZWFkZXJfY29tcGxleF9leHRyYWN0X2VudHJ5KCZwaW5nUHJvYmVIaXN0b3J5VGFibGVTdG9yYWdlLCBoY2lsYXN0KTsKKyAgICBTdG9yYWdlRGVsID0KKyAgICAgICAgaGVhZGVyX2NvbXBsZXhfZXh0cmFjdF9lbnRyeSgmcGluZ1Byb2JlSGlzdG9yeVRhYmxlU3RvcmFnZSwgaGNpbGFzdCk7CisgICAgZm9yIChoY2lwdHIyID0gcGluZ0N0bFRhYmxlU3RvcmFnZTsgaGNpcHRyMjsgaGNpcHRyMiA9IGhjaXB0cjItPm5leHQpIHsKKyAgICAgICAgc3RydWN0IHBpbmdDdGxUYWJsZV9kYXRhICp0bXA7CisKKyAgICAgICAgdG1wID0gaGNpcHRyMi0+ZGF0YTsKKyAgICAgICAgaWYgKHRtcC0+cGluZ1Byb2JlSGlzID09IFN0b3JhZ2VEZWwpIHsKKyAgICAgICAgICAgIHRtcC0+cGluZ1Byb2JlSGlzID0gdG1wLT5waW5nUHJvYmVIaXMtPm5leHQ7CisgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ1Byb2JlSGlzdG9yeVRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJkZWxldGluZyB0aGUgbGFzdCBvbmUgc3VjY2VlZGVkIVxuIikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgCX0KKyAgICB9CisgICAgaWYgKFN0b3JhZ2VEZWwpIHsKKyAgICAgICAgZnJlZShTdG9yYWdlRGVsLT5waW5nUHJvYmVIaXN0b3J5VGltZSk7CisgICAgICAgIGZyZWUoU3RvcmFnZURlbC0+cGluZ0N0bFRlc3ROYW1lKTsKKyAgICAgICAgZnJlZShTdG9yYWdlRGVsLT5waW5nQ3RsT3duZXJJbmRleCk7CisgICAgICAgIGZyZWUoU3RvcmFnZURlbCk7CisgICAgfQogICAgIERFQlVHTVNHVEwoKCJwaW5nUHJvYmVIaXN0b3J5VGFibGUiLAogICAgICAgICAgICAgICAgICJkZWxldGUgdGhlIGxhc3Qgb25lIHN1Y2Nlc3MhXG4iKSk7CiB9CkBAIC05NjksOCArMTAxNywxMCBAQAogewogICAgIGNoYXIgICAgICAgICAgICpwdHI7CiAKLSAgICBpZiAoKHB0ciA9IHNvY2tfbnRvcF9ob3N0KHNhLCBzYWxlbikpID09IE5VTEwpCi0gICAgICAgIHByaW50Zigic29ja19udG9wX2hvc3QgZXJyb3IiKTsgLyogaW5ldF9udG9wKCkgc2V0cyBlcnJubyAqLworICAgIGlmICgocHRyID0gc29ja19udG9wX2hvc3Qoc2EsIHNhbGVuKSkgPT0gTlVMTCkgeworICAgICAgICAvKiBpbmV0X250b3AoKSBzZXRzIGVycm5vICovCisgICAgICAgIHNubXBfbG9nX3BlcnJvcigicGluZ0N0bFRhYmxlOiBzb2NrX250b3BfaG9zdCgpIik7CisgICAgfQogICAgIHJldHVybiAocHRyKTsKIH0KIApAQCAtMTAyMyw3ICsxMDczLDcgQEAKICAgICBoaW50cy5haV9mYW1pbHkgPSBmYW1pbHk7ICAgLyogQUZfVU5TUEVDLCBBRl9JTkVULCBBRl9JTkVUNiwgZXRjLiAqLwogICAgIGhpbnRzLmFpX3NvY2t0eXBlID0gc29ja3R5cGU7ICAgICAgIC8qIDAsIFNPQ0tfU1RSRUFNLCBTT0NLX0RHUkFNLCBldGMuICovCiAKLSAgICBpZiAoKG4gPSBnZXRhZGRyaW5mbyhob3N0LCBzZXJ2LCAmaGludHMsICZyZXMpKSAhPSAwKQorICAgIGlmICgobiA9IG5ldHNubXBfZ2V0YWRkcmluZm8oaG9zdCwgc2VydiwgJmhpbnRzLCAmcmVzKSkgIT0gMCkKICAgICAgICAgcmV0dXJuIChOVUxMKTsKIAogICAgIHJldHVybiAocmVzKTsgICAgICAgICAgICAgICAvKiByZXR1cm4gcG9pbnRlciB0byBmaXJzdCBvbiBsaW5rZWQgbGlzdCAqLwpAQCAtMTA1MSwxNyArMTEwMSwxOCBAQAogICAgIGhpbnRzLmFpX2ZhbWlseSA9IGZhbWlseTsgICAvKiAwLCBBRl9JTkVULCBBRl9JTkVUNiwgZXRjLiAqLwogICAgIGhpbnRzLmFpX3NvY2t0eXBlID0gc29ja3R5cGU7ICAgICAgIC8qIDAsIFNPQ0tfU1RSRUFNLCBTT0NLX0RHUkFNLCBldGMuICovCiAKLSAgICBpZiAoKG4gPSBnZXRhZGRyaW5mbyhob3N0LCBzZXJ2LCAmaGludHMsICZyZXMpKSAhPSAwKQorICAgIGlmICgobiA9IG5ldHNubXBfZ2V0YWRkcmluZm8oaG9zdCwgc2VydiwgJmhpbnRzLCAmcmVzKSkgIT0gMCkgewogI2lmIEhBVkVfR0FJX1NUUkVSUk9SCi0gICAgICAgIHByaW50ZigiaG9zdF9zZXJ2IGVycm9yIGZvciAlcywgJXM6ICVzIiwKLSAgICAgICAgICAgICAgIChob3N0ID09IE5VTEwpID8gIihubyBob3N0bmFtZSkiIDogaG9zdCwKLSAgICAgICAgICAgICAgIChzZXJ2ID09IE5VTEwpID8gIihubyBzZXJ2aWNlIG5hbWUpIiA6IHNlcnYsCi0gICAgICAgICAgICAgICBnYWlfc3RyZXJyb3IobikpOworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiaG9zdF9zZXJ2IGVycm9yIGZvciAlcywgJXM6ICVzIiwKKyAgICAgICAgICAgICAgICAgKGhvc3QgPT0gTlVMTCkgPyAiKG5vIGhvc3RuYW1lKSIgOiBob3N0LAorICAgICAgICAgICAgICAgICAoc2VydiA9PSBOVUxMKSA/ICIobm8gc2VydmljZSBuYW1lKSIgOiBzZXJ2LAorICAgICAgICAgICAgICAgICBnYWlfc3RyZXJyb3IobikpOwogI2Vsc2UKLSAgICAgICAgcHJpbnRmKCJob3N0X3NlcnYgZXJyb3IgZm9yICVzLCAlcyIsCi0gICAgICAgICAgICAgICAoaG9zdCA9PSBOVUxMKSA/ICIobm8gaG9zdG5hbWUpIiA6IGhvc3QsCi0gICAgICAgICAgICAgICAoc2VydiA9PSBOVUxMKSA/ICIobm8gc2VydmljZSBuYW1lKSIgOiBzZXJ2KTsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImhvc3Rfc2VydiBlcnJvciBmb3IgJXMsICVzIiwKKyAgICAgICAgICAgICAgICAgKGhvc3QgPT0gTlVMTCkgPyAiKG5vIGhvc3RuYW1lKSIgOiBob3N0LAorICAgICAgICAgICAgICAgICAoc2VydiA9PSBOVUxMKSA/ICIobm8gc2VydmljZSBuYW1lKSIgOiBzZXJ2KTsKICNlbmRpZgorICAgIH0KIAogICAgIHJldHVybiAocmVzKTsgICAgICAgICAgICAgICAvKiByZXR1cm4gcG9pbnRlciB0byBmaXJzdCBvbiBsaW5rZWQgbGlzdCAqLwogfQpAQCAtMTEwNSwxMyArMTE1NiwxNiBAQAogICAgIG9pZCAgICAgICAgICAgICBwaW5nUmVzdWx0c1NlbmRQcm9iZXNbXSA9CiAgICAgICAgIHsgMSwgMywgNiwgMSwgMiwgMSwgODAsIDEsIDMsIDEsIDggfTsKIAotICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIGl0ZW0tPnBpbmdDdGxPd25lckluZGV4LCBpdGVtLT5waW5nQ3RsT3duZXJJbmRleExlbik7ICAgICAvKiBwaW5nQ3RsT3duZXJJbmRleCAqLwotICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZSwgaXRlbS0+cGluZ0N0bFRlc3ROYW1lTGVuKTsgLyogcGluZ0N0bE9wZXJhdGlvbk5hbWUgKi8KLSAgICBTdG9yYWdlVG1wID0gU05NUF9NQUxMT0NfU1RSVUNUKHBpbmdSZXN1bHRzVGFibGVfZGF0YSk7Ci0gICAgaWYgKChTdG9yYWdlVG1wID0KLSAgICAgICAgIChzdHJ1Y3QgcGluZ1Jlc3VsdHNUYWJsZV9kYXRhICopCi0gICAgICAgICBoZWFkZXJfY29tcGxleF9nZXQocGluZ1Jlc3VsdHNUYWJsZVN0b3JhZ2UsIHZhcnMpKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gOworICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsT3duZXJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tPnBpbmdDdGxPd25lckluZGV4TGVuKTsKKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bFRlc3ROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bFRlc3ROYW1lTGVuKTsKKyAgICBTdG9yYWdlVG1wID0gaGVhZGVyX2NvbXBsZXhfZ2V0KHBpbmdSZXN1bHRzVGFibGVTdG9yYWdlLCB2YXJzKTsKKyAgICBzbm1wX2ZyZWVfdmFyYmluZCh2YXJzKTsKKyAgICBpZiAoIVN0b3JhZ2VUbXApCisgICAgICAgIHJldHVybjsKIAogICAgIC8qCiAgICAgICogc25tcFRyYXAgb2lkIApAQCAtMTIzNywxNCArMTI5MSwxNiBAQAogICAgIC8qIHN0cnVjdCBwaW5nUHJvYmVIaXN0b3J5VGFibGVfZGF0YSAqIGN1cnJlbnQ9TlVMTDsgKi8KICAgICBzdHJ1Y3QgcGluZ1Byb2JlSGlzdG9yeVRhYmxlX2RhdGEgY3VycmVudF92YXI7CiAgICAgaW50ICAgICAgICAgICAgIHNvY2tmZDsKKyAgICBpbnQgICAgICAgICAgICAgc2VsZWN0X3Jlc3VsdDsKICAgICBpbnQgICAgICAgICAgICAgY3VycmVudF9wcm9iZV90ZW1wOwogICAgIGludCAgICAgICAgICAgICBzdWNjZXNzX3Byb2JlID0gMDsKICAgICBpbnQgICAgICAgICAgICAgZmFpbF9wcm9iZSA9IDA7CiAgICAgaW50ICAgICAgICAgICAgIGZsYWc7Ci0gICAgdW5zaWduZWQgbG9uZyAgKnN1bXJ0dDsKKyAgICB1bnNpZ25lZCBsb25nICAgc3VtcnR0OwogICAgIHN0cnVjdCB0aW1ldmFsICB0djsKIAotICAgIHN1bXJ0dCA9ICh1bnNpZ25lZCBsb25nICopIG1hbGxvYyhzaXplb2YodW5zaWduZWQgbG9uZykpOworICAgIG1lbXNldChzZW5kYnVmLCAwLCBzaXplb2Yoc2VuZGJ1ZikpOworCiAgICAgc29ja2ZkID0gc29ja2V0KHByLT5zYXNlbmQtPnNhX2ZhbWlseSwgU09DS19SQVcsIHByLT5pY21wcHJvdG8pOwogICAgIGlmIChzb2NrZmQgPCAwKSB7CiAJc25tcF9sb2dfcGVycm9yKCJwaW5nQ3RsVGFibGU6IGZhaWxlZCB0byBjcmVhdGUgc29ja2V0Iik7CkBAIC0xMjYzLDI5ICsxMzE5LDI5IEBACiAgICAgICAgICgqcHItPmZzZW5kKSAoZGF0YWxlbiwgcGlkLCBuc2VudCwgc29ja2ZkLCBzZW5kYnVmKTsKICAgICAgICAgbnNlbnQrKzsKICAgICAgICAgbGVuID0gcHItPnNhbGVuOwotICAgICAgICBpZiAocmVhZGFibGVfdGltZW8oc29ja2ZkLCBpdGVtLT5waW5nQ3RsVGltZU91dCkgPT0gMCkgewotICAgICAgICAgICAgLyogcHJpbnRmKCJzb2NrZXQgdGltZW91dCFcbiIpOyAqLwotICAgICAgICAgICAgbiA9IC0xOwotICAgICAgICAgICAgZmFpbF9wcm9iZSA9IGZhaWxfcHJvYmUgKyAxOwotICAgICAgICAgICAgZmxhZyA9IDE7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBuID0gcmVjdmZyb20oc29ja2ZkLCByZWN2YnVmLCBzaXplb2YocmVjdmJ1ZiksIDAsIHByLT5zYXJlY3YsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJmxlbik7Ci0gICAgICAgICAgICBzdWNjZXNzX3Byb2JlID0gc3VjY2Vzc19wcm9iZSArIDE7Ci0gICAgICAgICAgICBmbGFnID0gMDsKLSAgICAgICAgfQorICAgICAgICBzZWxlY3RfcmVzdWx0ID0gcmVhZGFibGVfdGltZW8oc29ja2ZkLCBpdGVtLT5waW5nQ3RsVGltZU91dCk7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGlmIChzZWxlY3RfcmVzdWx0ID09IDApIHsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgInNvY2tldCB0aW1lb3V0XG4iKSk7CisgICAgICAgICAgICAgICAgbiA9IC0xOworICAgICAgICAgICAgICAgIGZhaWxfcHJvYmUgPSBmYWlsX3Byb2JlICsgMTsKKyAgICAgICAgICAgICAgICBmbGFnID0gMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbiA9IHJlY3Zmcm9tKHNvY2tmZCwgcmVjdmJ1Ziwgc2l6ZW9mKHJlY3ZidWYpLCAwLCBwci0+c2FyZWN2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGVuKTsKKyAgICAgICAgICAgICAgICBzdWNjZXNzX3Byb2JlID0gc3VjY2Vzc19wcm9iZSArIDE7CisgICAgICAgICAgICAgICAgZmxhZyA9IDA7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZ0dmFsLCBOVUxMKTsKKyAgICAgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmdHZhbCk7CiAKLSAgICAgICAgdGltZSgmdGltZXApOworICAgICAgICAgICAgdGltZSgmdGltZXApOwogCi0gICAgICAgICgqcHItPmZwcm9jKSAocmVjdmJ1ZiwgbiwgJnR2YWwsIHRpbWVwLCBpdGVtLCBhaSwgZGF0YWxlbiwgbWlucnR0LAotICAgICAgICAgICAgICAgICAgICAgIG1heHJ0dCwgc3VtcnR0LCBhdmVyYWdlcnR0LCBjdXJyZW50X3Byb2JlX3RlbXAsCi0gICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc19wcm9iZSwgZmFpbF9wcm9iZSwgZmxhZywgJmN1cnJlbnRfdmFyLCBwaWQpOwotICAgICAgICBpZiAoY3VycmVudF9wcm9iZV90ZW1wID49IGl0ZW0tPnBpbmdDdGxQcm9iZUNvdW50KSB7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUoc3VtcnR0KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICAgICAgKCpwci0+ZnByb2MpIChyZWN2YnVmLCBuLCAmdHZhbCwgdGltZXAsIGl0ZW0sIGFpLCBkYXRhbGVuLCBtaW5ydHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1heHJ0dCwgJnN1bXJ0dCwgYXZlcmFnZXJ0dCwgY3VycmVudF9wcm9iZV90ZW1wLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzX3Byb2JlLCBmYWlsX3Byb2JlLCBmbGFnLCAmY3VycmVudF92YXIsIHBpZCk7CisgICAgICAgICAgICBzZWxlY3RfcmVzdWx0ID0gcmVhZGFibGVfdGltZW8oc29ja2ZkLCAwKTsKKyAgICAgICAgfSB3aGlsZSAoc2VsZWN0X3Jlc3VsdCA+IDApOwogICAgIH0KICAgICBjbG9zZShzb2NrZmQpOwogfQpAQCAtMTMyMCw5ICsxMzc2LDExIEBACiAgICAgc3RhdGljIGludCAgICAgIHByb2JlRmFpbGVkID0gMDsKICAgICBzdGF0aWMgaW50ICAgICAgdGVzdEZhaWxlZCA9IDA7CiAgICAgc3RhdGljIGludCAgICAgIHNlcmllcyA9IDA7Ci0KICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcnMgPSBOVUxMOwogICAgIHN0cnVjdCBwaW5nUmVzdWx0c1RhYmxlX2RhdGEgKlN0b3JhZ2VOZXcgPSBOVUxMOworCisgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICJwcm9jX3Y0KGZsYWcgPSAlZClcbiIsIGZsYWcpKTsKKwogICAgIGlmIChmbGFnID09IDApIHsKICAgICAgICAgc2VyaWVzID0gMDsKICAgICAgICAgaXAgPSAoc3RydWN0IGlwICopIHB0cjsgLyogc3RhcnQgb2YgSVAgaGVhZGVyICovCkBAIC0xMzMwLDE0ICsxMzg4LDIwIEBACiAKICAgICAgICAgaWNtcCA9IChzdHJ1Y3QgaWNtcCAqKSAocHRyICsgaGxlbjEpOyAgIC8qIHN0YXJ0IG9mIElDTVAgaGVhZGVyICovCiAgICAgICAgIGlmICgoaWNtcGxlbiA9IGxlbiAtIGhsZW4xKSA8IDgpCi0gICAgICAgICAgICBwcmludGYoImljbXBsZW4gKCVkKSA8IDgiLCBpY21wbGVuKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiaWNtcGxlbiAoJWQpIDwgOCIsIGljbXBsZW4pKTsKKworICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIklDTVAgdHlwZSA9ICVkICglc2EgcmVwbHkpXG4iLAorICAgICAgICAgICAgICAgICAgICBpY21wLT5pY21wX3R5cGUsCisgICAgICAgICAgICAgICAgICAgIGljbXAtPmljbXBfdHlwZSA9PSBJQ01QX0VDSE9SRVBMWSA/ICIiIDogIm5vdCBhICIpKTsKIAogICAgICAgICBpZiAoaWNtcC0+aWNtcF90eXBlID09IElDTVBfRUNIT1JFUExZKSB7Ci0gICAgICAgICAgICBpZiAoaWNtcC0+aWNtcF9pZCAhPSBwaWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7ICAgICAgICAgLyogbm90IGEgcmVzcG9uc2UgdG8gb3VyIEVDSE9fUkVRVUVTVCAqLwotICAgICAgICAgICAgaWYgKGljbXBsZW4gPCAxNikKLSAgICAgICAgICAgICAgICBwcmludGYoImljbXBsZW4gKCVkKSA8IDE2IiwgaWNtcGxlbik7CisgICAgICAgICAgICBpZiAoaWNtcC0+aWNtcF9pZCAhPSBwaWQpIHsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIm5vdCBhIHJlc3BvbnNlIHRvIG91ciBFQ0hPX1JFUVVFU1RcbiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgaWYgKGljbXBsZW4gPCAxNikKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgImljbXBsZW4gKCVkKSA8IDE2IiwgaWNtcGxlbikpOwogCiAgICAgICAgICAgICB0dnNlbmQgPSAoc3RydWN0IHRpbWV2YWwgKikgaWNtcC0+aWNtcF9kYXRhOwogCkBAIC0xMzQ1LDE0ICsxNDA5LDE5IEBACiAgICAgICAgICAgICAgICAgcm91bmRfZG91YmxlKCgxMDAwMDAwICogKHR2cmVjdi0+dHZfc2VjIC0gdHZzZW5kLT50dl9zZWMpICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR2cmVjdi0+dHZfdXNlYyAtIHR2c2VuZC0+dHZfdXNlYykgLyAxMDAwKTsKIAotICAgICAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgaXRlbS0+cGluZ0N0bE93bmVySW5kZXgsIGl0ZW0tPnBpbmdDdGxPd25lckluZGV4TGVuKTsgICAgIC8qIHBpbmdDdGxPd25lckluZGV4ICovCi0gICAgICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSBpdGVtLT5waW5nQ3RsVGVzdE5hbWUsIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZUxlbik7IC8qIHBpbmdDdGxUZXN0TmFtZSAqLworICAgICAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bE93bmVySW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tPnBpbmdDdGxPd25lckluZGV4TGVuKTsKKyAgICAgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bFRlc3ROYW1lTGVuKTsKIAotCi0gICAgICAgICAgICBpZiAoKFN0b3JhZ2VOZXcgPQotICAgICAgICAgICAgICAgICBoZWFkZXJfY29tcGxleF9nZXQocGluZ1Jlc3VsdHNUYWJsZVN0b3JhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJzKSkgPT0gTlVMTCkKKyAgICAgICAgICAgIFN0b3JhZ2VOZXcgPSBoZWFkZXJfY29tcGxleF9nZXQocGluZ1Jlc3VsdHNUYWJsZVN0b3JhZ2UsIHZhcnMpOworICAgICAgICAgICAgc25tcF9mcmVlX3ZhcmJpbmQodmFycyk7CisgICAgICAgICAgICBpZiAoIVN0b3JhZ2VOZXcpIHsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIlN0b3JhZ2VOZXcgPT0gTlVMTFxuIikpOwogICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT1NVQ0hOQU1FOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoY3VycmVudF9wcm9iZSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgKmF2ZXJhZ2VydHQgPSBydHQ7CkBAIC0xMzYwLDcgKzE0MjksNiBAQAogICAgICAgICAgICAgICAgICptYXhydHQgPSBydHQ7CiAgICAgICAgICAgICAgICAgKnN1bXJ0dCA9IHJ0dDsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCJlbHNlXG4iKTsKICAgICAgICAgICAgICAgICBpZiAocnR0IDwgKm1pbnJ0dCkKICAgICAgICAgICAgICAgICAgICAgKm1pbnJ0dCA9IHJ0dDsKICAgICAgICAgICAgICAgICBpZiAocnR0ID4gKm1heHJ0dCkKQEAgLTEzODQsNiArMTQ1Miw3IEBACiAgICAgICAgICAgICAgICAgU3RvcmFnZU5ldy0+cGluZ1Jlc3VsdHNSdHRTdW1PZlNxdWFyZXMgKyBydHQgKiBydHQ7CiAKIAkgICAgU3RvcmFnZU5ldy0+cGluZ1Jlc3VsdHNMYXN0R29vZFByb2JlX3RpbWUgPSB0aW1lcDsKKyAgICAgICAgICAgIGZyZWUoU3RvcmFnZU5ldy0+cGluZ1Jlc3VsdHNMYXN0R29vZFByb2JlKTsKICAgICAgICAgICAgIG1lbWR1cCgmU3RvcmFnZU5ldy0+cGluZ1Jlc3VsdHNMYXN0R29vZFByb2JlLAogCQlkYXRlX25fdGltZSgmdGltZXAsCiAJCSAgICAmU3RvcmFnZU5ldy0+cGluZ1Jlc3VsdHNMYXN0R29vZFByb2JlTGVuKSwgMTEpOwpAQCAtMTQyNSw1MiArMTQ5NCwzOSBAQAogCiAgICAgICAgICAgICBpZiAoU3RvcmFnZU5ldy0+cGluZ1Jlc3VsdHNTZW5kUHJvYmVzID09IDEpCiAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ1Byb2JlSGlzID0gdGVtcDsKLSAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIChjdXJyZW50X3RlbXApLT5uZXh0ID0gdGVtcDsKLSAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY3VycmVudF90ZW1wID0gdGVtcDsKIAotICAgICAgICAgICAgaWYgKFN0b3JhZ2VOZXctPnBpbmdSZXN1bHRzU2VuZFByb2JlcyA+PQotICAgICAgICAgICAgICAgIGl0ZW0tPnBpbmdDdGxQcm9iZUNvdW50KSB7CisgICAgICAgICAgICBpZiAoU3RvcmFnZU5ldy0+cGluZ1Jlc3VsdHNTZW5kUHJvYmVzID49IGl0ZW0tPnBpbmdDdGxQcm9iZUNvdW50KQogICAgICAgICAgICAgICAgIGN1cnJlbnRfdGVtcC0+bmV4dCA9IE5VTEw7Ci0gICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChpdGVtLT5waW5nUHJvYmVIaXMgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGlmIChwaW5nUHJvYmVIaXN0b3J5VGFibGVfY291bnQoaXRlbSkgPAotICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsTWF4Um93cykgewotICAgICAgICAgICAgICAgICAgICBpZiAocGluZ1Byb2JlSGlzdG9yeVRhYmxlX2FkZChjdXJyZW50X3RlbXApICE9Ci0gICAgICAgICAgICAgICAgICAgICAgICBTTk1QRVJSX1NVQ0NFU1MpCi0gICAgICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ1Byb2JlSGlzdG9yeVRhYmxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWdpc3RlcmVkIGFuIGVudHJ5IGVycm9yXG4iKSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAocGluZ1Byb2JlSGlzdG9yeVRhYmxlX2NvdW50KGl0ZW0pID49IGl0ZW0tPnBpbmdDdGxNYXhSb3dzKQogICAgICAgICAgICAgICAgICAgICBwaW5nUHJvYmVIaXN0b3J5VGFibGVfZGVsTGFzdChpdGVtKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBpbmdQcm9iZUhpc3RvcnlUYWJsZV9hZGQoY3VycmVudF90ZW1wKSAhPQotICAgICAgICAgICAgICAgICAgICAgICAgU05NUEVSUl9TVUNDRVNTKQotICAgICAgICAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdQcm9iZUhpc3RvcnlUYWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVnaXN0ZXJlZCBhbiBlbnRyeSBlcnJvclxuIikpOwotCi0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChwaW5nUHJvYmVIaXN0b3J5VGFibGVfYWRkKGN1cnJlbnRfdGVtcCkgIT0gU05NUEVSUl9TVUNDRVNTKQorICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ1Byb2JlSGlzdG9yeVRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBhZGQgYSByb3dcbiIpKTsKIAkgICAgfQogICAgICAgICB9Ci0gICAgfQotCi0gICAgZWxzZSBpZiAoZmxhZyA9PSAxKQotICAgIHsKLQotCisgICAgfSBlbHNlIGlmIChmbGFnID09IDEpIHsKICAgICAgICAgaWYgKHNlcmllcyA9PSAwKQogICAgICAgICAgICAgcHJvYmVGYWlsZWQgPSAxOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwcm9iZUZhaWxlZCA9IHByb2JlRmFpbGVkICsgMTsKICAgICAgICAgc2VyaWVzID0gMTsKICAgICAgICAgdGVzdEZhaWxlZCA9IHRlc3RGYWlsZWQgKyAxOwotICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSBpdGVtLT5waW5nQ3RsT3duZXJJbmRleCwgaXRlbS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOyAvKiAgcGluZ0N0bE93bmVySW5kZXggKi8KLSAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgaXRlbS0+cGluZ0N0bFRlc3ROYW1lLCBpdGVtLT5waW5nQ3RsVGVzdE5hbWVMZW4pOyAgICAgLyogcGluZ0N0bFRlc3ROYW1lICovCisgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bE93bmVySW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOworICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsVGVzdE5hbWVMZW4pOwogCi0KLSAgICAgICAgaWYgKChTdG9yYWdlTmV3ID0KLSAgICAgICAgICAgICBoZWFkZXJfY29tcGxleF9nZXQocGluZ1Jlc3VsdHNUYWJsZVN0b3JhZ2UsIHZhcnMpKSA9PSBOVUxMKQorICAgICAgICBTdG9yYWdlTmV3ID0gaGVhZGVyX2NvbXBsZXhfZ2V0KHBpbmdSZXN1bHRzVGFibGVTdG9yYWdlLCB2YXJzKTsKKyAgICAgICAgc25tcF9mcmVlX3ZhcmJpbmQodmFycyk7CisgICAgICAgIGlmICghU3RvcmFnZU5ldykKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT1NVQ0hOQU1FOwogCiAgICAgICAgIGlmIChjdXJyZW50X3Byb2JlID09IDEpIHsKQEAgLTE1OTksNyArMTY1NSw3IEBACiAgICAgaWNtcC0+aWNtcF9jb2RlID0gMDsKICAgICBpY21wLT5pY21wX2lkID0gcGlkOwogICAgIGljbXAtPmljbXBfc2VxID0gbnNlbnQ7Ci0gICAgZ2V0dGltZW9mZGF5KChzdHJ1Y3QgdGltZXZhbCAqKSBpY21wLT5pY21wX2RhdGEsIE5VTEwpOworICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygoc3RydWN0IHRpbWV2YWwgKikgaWNtcC0+aWNtcF9kYXRhKTsKIAogICAgIGxlbiA9IDggKyBkYXRhbGVuOyAgICAgICAgICAvKiBjaGVja3N1bSBJQ01QIGhlYWRlciBhbmQgZGF0YSAqLwogICAgIGljbXAtPmljbXBfY2tzdW0gPSAwOwpAQCAtMTYxNywxMiArMTY3MywxNSBAQAogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFycyA9IE5VTEw7CiAgICAgc3RydWN0IHBpbmdSZXN1bHRzVGFibGVfZGF0YSAqU3RvcmFnZU5ldyA9IE5VTEw7CiAKLSAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSBpdGVtLT5waW5nQ3RsT3duZXJJbmRleCwgaXRlbS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOyAgICAgLyogcGluZ0N0bE93bmVySW5kZXggICovCi0gICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgaXRlbS0+cGluZ0N0bFRlc3ROYW1lLCBpdGVtLT5waW5nQ3RsVGVzdE5hbWVMZW4pOyAvKiBwaW5nQ3RsVGVzdE5hbWUgICovCisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tPnBpbmdDdGxPd25lckluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOworICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsVGVzdE5hbWUsIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZUxlbik7CiAKLQotICAgIGlmICgoU3RvcmFnZU5ldyA9Ci0gICAgICAgICBoZWFkZXJfY29tcGxleF9nZXQocGluZ1Jlc3VsdHNUYWJsZVN0b3JhZ2UsIHZhcnMpKSA9PSBOVUxMKQorICAgIFN0b3JhZ2VOZXcgPSBoZWFkZXJfY29tcGxleF9nZXQocGluZ1Jlc3VsdHNUYWJsZVN0b3JhZ2UsIHZhcnMpOworICAgIHNubXBfZnJlZV92YXJiaW5kKHZhcnMpOworICAgIGlmICghU3RvcmFnZU5ldykKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RvcmFnZU5ldy0+cGluZ1Jlc3VsdHNTZW5kUHJvYmVzID0gMDsKQEAgLTE2NTAsMzQgKzE3MDksNDEgQEAKIAogICAgICAgICBhaSA9IGhvc3Rfc2Vydihob3N0LCBOVUxMLCAwLCAwKTsKIAotICAgICAgICBwcmludGYoIlBJTkcgJXMgKCVzKTogJWQgZGF0YSBieXRlc1xuIiwgYWktPmFpX2Nhbm9ubmFtZSwKLSAgICAgICAgICAgICAgIHNvY2tfbnRvcF9ob3N0KGFpLT5haV9hZGRyLCBhaS0+YWlfYWRkcmxlbiksIGRhdGFsZW4pOworICAgICAgICBpZiAoYWkpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiUElORyAlcyAoJXMpOiAlZCBkYXRhIGJ5dGVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgYWktPmFpX2Nhbm9ubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tfbnRvcF9ob3N0KGFpLT5haV9hZGRyLCBhaS0+YWlfYWRkcmxlbiksIGRhdGFsZW4pKTsKIAotICAgICAgICAvKgotICAgICAgICAgKiA0aW5pdGlhbGl6ZSBhY2NvcmRpbmcgdG8gcHJvdG9jb2wgCi0gICAgICAgICAqLwotICAgICAgICBpZiAoYWktPmFpX2ZhbWlseSA9PSBBRl9JTkVUKSB7Ci0gICAgICAgICAgICBwciA9ICZwcm90b192NDsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiA0aW5pdGlhbGl6ZSBhY2NvcmRpbmcgdG8gcHJvdG9jb2wgCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmIChhaS0+YWlfZmFtaWx5ID09IEFGX0lORVQpIHsKKyAgICAgICAgICAgICAgICBwciA9ICZwcm90b192NDsKICNpZmRlZglJUFY2Ci0gICAgICAgIH0gZWxzZSBpZiAoYWktPmFpX2ZhbWlseSA9PSBBRl9JTkVUNikgewotICAgICAgICAgICAgcHIgPSAmcHJvdG9fdjY7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGFpLT5haV9mYW1pbHkgPT0gQUZfSU5FVDYpIHsKKyAgICAgICAgICAgICAgICBwciA9ICZwcm90b192NjsKIAotICAgICAgICAgICAgaWYgKElONl9JU19BRERSX1Y0TUFQUEVEKCYoKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWktPmFpX2FkZHIpLT5zaW42X2FkZHIpKSkKLSAgICAgICAgICAgICAgICBwcmludGYoImNhbm5vdCBwaW5nIElQdjQtbWFwcGVkIElQdjYgYWRkcmVzcyIpOworICAgICAgICAgICAgICAgIGlmIChJTjZfSVNfQUREUl9WNE1BUFBFRCgmKCgoc3RydWN0IHNvY2thZGRyX2luNiAqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhaS0+YWlfYWRkciktPnNpbjZfYWRkcikpKQorICAgICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY2Fubm90IHBpbmcgSVB2NC1tYXBwZWQgSVB2NiBhZGRyZXNzIik7CiAjZW5kaWYKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBwcmludGYoInVua25vd24gYWRkcmVzcyBmYW1pbHkgJWQiLCBhaS0+YWlfZmFtaWx5KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInVua25vd24gYWRkcmVzcyBmYW1pbHkgJWQiLCBhaS0+YWlfZmFtaWx5KTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICBwci0+c2FzZW5kID0gYWktPmFpX2FkZHI7Ci0gICAgICAgIHByLT5zYXJlY3YgPSBjYWxsb2MoMSwgYWktPmFpX2FkZHJsZW4pOwotICAgICAgICBwci0+c2FsZW4gPSBhaS0+YWlfYWRkcmxlbjsKLSAgICAgICAgcmVhZGxvb3AoaXRlbSwgYWksIGRhdGFsZW4sIG1pbnJ0dCwgbWF4cnR0LCBhdmVyYWdlcnR0LCBwaWQpOworICAgICAgICAgICAgcHItPnNhc2VuZCA9IGFpLT5haV9hZGRyOworICAgICAgICAgICAgcHItPnNhcmVjdiA9IGNhbGxvYygxLCBhaS0+YWlfYWRkcmxlbik7CisgICAgICAgICAgICBwci0+c2FsZW4gPSBhaS0+YWlfYWRkcmxlbjsKKyAgICAgICAgICAgIHJlYWRsb29wKGl0ZW0sIGFpLCBkYXRhbGVuLCBtaW5ydHQsIG1heHJ0dCwgYXZlcmFnZXJ0dCwgcGlkKTsKKyAgICAgICAgICAgIGZyZWUocHItPnNhcmVjdik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiUElORzogbmFtZSByZXNvbHV0aW9uIGZvciAlcyBmYWlsZWQuXG4iLCBob3N0KTsKKyAgICAgICAgfQogCiAgICAgICAgIFNOTVBfRlJFRShtaW5ydHQpOwogICAgICAgICBTTk1QX0ZSRUUobWF4cnR0KTsKICAgICAgICAgU05NUF9GUkVFKGF2ZXJhZ2VydHQpOwotICAgICAgICBTTk1QX0ZSRUUoYWkpOworICAgICAgICBmcmVlYWRkcmluZm8oYWkpOwogICAgIH0KIAogICAgIGVsc2UgaWYgKGl0ZW0tPnBpbmdDdGxUYXJnZXRBZGRyZXNzVHlwZSA9PSAyKSB7CkBAIC0xNzUzLDEzICsxODE5LDExIEBACiAgICAgICAgIGhvc3RuYW1lID0gdGFyZ2V0OwogCiAgICAgICAgIGlmIChpcHY2X2FkZHJfYW55KCZzb3VyY2Uuc2luNl9hZGRyKSkgewotCiAgICAgICAgICAgICBzb2NrbGVuX3QgICAgICAgYWxlbjsKICAgICAgICAgICAgIGludCAgICAgICAgICAgICBwcm9iZV9mZCA9IHNvY2tldChBRl9JTkVUNiwgU09DS19ER1JBTSwgMCk7CiAKICAgICAgICAgICAgIGlmIChwcm9iZV9mZCA8IDApIHsKLSAgICAgICAgICAgICAgICBwcmludGYoImVycm9yIVxuIik7Ci0gICAgICAgICAgICAgICAgcGVycm9yKCJzb2NrZXQiKTsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZ19wZXJyb3IoInBpbmdDdGxUYWJsZTogSVB2NiBkYXRhZ3JhbSBzb2NrZXQgY3JlYXRpb24iKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZGV2aWNlKSB7CkBAIC0xNzc4LDYgKzE4NDIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlvY3RsKHByb2JlX2ZkLCBTSU9DR0lGSU5ERVgsICZpZnIpIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicGluZzogdW5rbm93biBpZmFjZSAlc1xuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2UocHJvYmVfZmQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0aG9wLnNpbjZfc2NvcGVfaWQgPSBpZnIuaWZyX2lmaW5kZXg7CkBAIC0xNzkwLDEyICsxODU1LDE0IEBACiAgICAgICAgICAgICAgICAgKHByb2JlX2ZkLCAoc3RydWN0IHNvY2thZGRyICopICZmaXJzdGhvcCwKICAgICAgICAgICAgICAgICAgc2l6ZW9mKGZpcnN0aG9wKSkgPT0gLTEpIHsKICAgICAgICAgICAgICAgICBwZXJyb3IoImNvbm5lY3QiKTsKKyAgICAgICAgICAgICAgICBjbG9zZShwcm9iZV9mZCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYWxlbiA9IHNpemVvZihzb3VyY2UpOwogICAgICAgICAgICAgaWYgKGdldHNvY2tuYW1lKHByb2JlX2ZkLCAoc3RydWN0IHNvY2thZGRyICopICZzb3VyY2UsICZhbGVuKQogICAgICAgICAgICAgICAgID09IC0xKSB7CiAgICAgICAgICAgICAgICAgcGVycm9yKCJnZXRzb2NrbmFtZSIpOworICAgICAgICAgICAgICAgIGNsb3NlKHByb2JlX2ZkKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzb3VyY2Uuc2luNl9wb3J0ID0gMDsKQEAgLTE5MDgsMTUgKzE5NzUsMTYgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHByaW50ZigiUElORyAlcyglcykgIiwgaG9zdG5hbWUsCi0gICAgICAgICAgICAgICBwcl9hZGRyKCZ3aGVyZXRvLnNpbjZfYWRkciwgb3B0aW9ucykpOworICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIlBJTkcgJXMoJXMpICIsIGhvc3RuYW1lLAorICAgICAgICAgICAgICAgICAgICBwcl9hZGRyKCZ3aGVyZXRvLnNpbjZfYWRkciwgb3B0aW9ucykpKTsKICAgICAgICAgaWYgKGZsb3dsYWJlbCkKLSAgICAgICAgICAgIHByaW50ZigiLCBmbG93IDB4JTA1eCwgIiwgKHVuc2lnbmVkKSBudG9obChmbG93bGFiZWwpKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiLCBmbG93IDB4JTA1eCwgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCkgbnRvaGwoZmxvd2xhYmVsKSkpOwogICAgICAgICBpZiAoZGV2aWNlIHx8IChvcHRpb25zICYgRl9OVU1FUklDKSkgewotICAgICAgICAgICAgcHJpbnRmKCJmcm9tICVzICVzOiAiLAotICAgICAgICAgICAgICAgICAgIHByX2FkZHJfbigmc291cmNlLnNpbjZfYWRkciksIGRldmljZSA/IDogIiIpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICJmcm9tICVzICVzOiAiLAorICAgICAgICAgICAgICAgICAgICAgICAgcHJfYWRkcl9uKCZzb3VyY2Uuc2luNl9hZGRyKSwgZGV2aWNlID8gOiAiIikpOwogICAgICAgICB9Ci0gICAgICAgIHByaW50ZigiJWQgZGF0YSBieXRlc1xuIiwgZGF0YWxlbik7CisgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiJWQgZGF0YSBieXRlc1xuIiwgZGF0YWxlbikpOwogCiAgICAgICAgIHNldHVwKGljbXBfc29jaywgb3B0aW9ucywgdWlkLCB0aW1lb3V0LCBwcmVsb2FkLCBpbnRlcnZhbCwgZGF0YWxlbiwKICAgICAgICAgICAgICAgKGNoYXIgKikgb3V0cGFjaywgJmlkZW50LCAmc3RhcnRfdGltZSwgJnNjcmVlbl93aWR0aCwKQEAgLTE5NDIsMTggKzIwMTAsMjAgQEAKICAgICBjaGFyICAgICAgICAgICAqaG9zdCA9IE5VTEw7CiAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJzID0gTlVMTDsKIAotICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIGl0ZW0tPnBpbmdDdGxPd25lckluZGV4LCBpdGVtLT5waW5nQ3RsT3duZXJJbmRleExlbik7ICAgICAvKiBwaW5nQ3RsT3duZXJJbmRleCAgKi8KLSAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSBpdGVtLT5waW5nQ3RsVGVzdE5hbWUsIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZUxlbik7IC8qIHBpbmdDdGxUZXN0TmFtZSAgKi8KKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bE93bmVySW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsT3duZXJJbmRleExlbik7CisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZSwgaXRlbS0+cGluZ0N0bFRlc3ROYW1lTGVuKTsKIAotCi0gICAgaWYgKChTdG9yYWdlTmV3ID0KLSAgICAgICAgIGhlYWRlcl9jb21wbGV4X2dldChwaW5nUmVzdWx0c1RhYmxlU3RvcmFnZSwgdmFycykpICE9IE5VTEwpIHsKKyAgICBTdG9yYWdlTmV3ID0gaGVhZGVyX2NvbXBsZXhfZ2V0KHBpbmdSZXN1bHRzVGFibGVTdG9yYWdlLCB2YXJzKTsKKyAgICBzbm1wX2ZyZWVfdmFyYmluZCh2YXJzKTsKKyAgICBpZiAoU3RvcmFnZU5ldykgewogICAgICAgICBTdG9yYWdlTmV3LT5waW5nUmVzdWx0c1NlbmRQcm9iZXMgPSAwOwogICAgICAgICBTdG9yYWdlTmV3LT5waW5nUmVzdWx0c1Byb2JlUmVzcG9uc2VzID0gMDsKICAgICAgICAgcmV0dXJuOwotCiAgICAgfQotICAgIGFpID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgYWRkcmluZm8pKTsKKwogICAgIGhvc3QgPSBpdGVtLT5waW5nQ3RsVGFyZ2V0QWRkcmVzczsKICAgICBhaSA9IGhvc3Rfc2Vydihob3N0LCBOVUxMLCAwLCAwKTsKICAgICBTdG9yYWdlVG1wID0gU05NUF9NQUxMT0NfU1RSVUNUKHBpbmdSZXN1bHRzVGFibGVfZGF0YSk7CkBAIC0xOTc2LDI2ICsyMDQ2LDE0IEBACiAKICAgICBpZiAoaXRlbS0+cGluZ0N0bFRhcmdldEFkZHJlc3NUeXBlID09IDEKICAgICAgICAgfHwgaXRlbS0+cGluZ0N0bFRhcmdldEFkZHJlc3NUeXBlID09IDE2KSB7Ci0gICAgICAgIGlmIChhaSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBTdG9yYWdlVG1wLT5waW5nUmVzdWx0c0lwVGFyZ2V0QWRkcmVzc1R5cGUgPSAwOwotICAgICAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3MgPSBzdHJkdXAoIiIpOwotICAgICAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3NMZW4gPSAwOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3NUeXBlID0gMTsKLSAgICAgICAgICAgIFN0b3JhZ2VUbXAtPnBpbmdSZXN1bHRzSXBUYXJnZXRBZGRyZXNzID0KLSAgICAgICAgICAgICAgICAoY2hhciAqKQotICAgICAgICAgICAgICAgIG1hbGxvYyhzdHJsZW4oc29ja19udG9wX2hvc3QoYWktPmFpX2FkZHIsIGFpLT5haV9hZGRybGVuKSkKLSAgICAgICAgICAgICAgICAgICAgICAgKyAxKTsKLSAgICAgICAgICAgIFN0b3JhZ2VUbXAtPnBpbmdSZXN1bHRzSXBUYXJnZXRBZGRyZXNzID0KLSAgICAgICAgICAgICAgICBzdHJkdXAoc29ja19udG9wX2hvc3QoYWktPmFpX2FkZHIsIGFpLT5haV9hZGRybGVuKSk7Ci0gICAgICAgICAgICBTdG9yYWdlVG1wLT4KLSAgICAgICAgICAgICAgICBwaW5nUmVzdWx0c0lwVGFyZ2V0QWRkcmVzc1tzdHJsZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc29ja19udG9wX2hvc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFpLT5haV9hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWktPmFpX2FkZHJsZW4pKV0gPSAnXDAnOwotICAgICAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3NMZW4gPQotICAgICAgICAgICAgICAgIHN0cmxlbihzb2NrX250b3BfaG9zdChhaS0+YWlfYWRkciwgYWktPmFpX2FkZHJsZW4pKTsKLSAgICAgICAgfQorICAgICAgICBjb25zdCBjaGFyKiBzdHI7CisKKyAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3NUeXBlID0gYWkgPyAxIDogMDsKKyAgICAgICAgc3RyID0gYWkgPyBzb2NrX250b3BfaG9zdChhaS0+YWlfYWRkciwgYWktPmFpX2FkZHJsZW4pIDogTlVMTDsKKyAgICAgICAgaWYgKCFzdHIpCisgICAgICAgICAgICBzdHIgPSAiIjsKKyAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3MgPSBzdHJkdXAoc3RyKTsKKyAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3NMZW4gPSBzdHJsZW4oc3RyKTsKICAgICB9CiAgICAgaWYgKGl0ZW0tPnBpbmdDdGxUYXJnZXRBZGRyZXNzVHlwZSA9PSAyKSB7CiAKQEAgLTIwMTAsMTAgKzIwNjgsNyBAQAogCiAgICAgICAgIGlmIChpbmV0X3B0b24oQUZfSU5FVDYsIGhvc3QsICZ0by0+c2luNl9hZGRyKSA+IDApIHsKICAgICAgICAgICAgIFN0b3JhZ2VUbXAtPnBpbmdSZXN1bHRzSXBUYXJnZXRBZGRyZXNzVHlwZSA9IDI7Ci0gICAgICAgICAgICBTdG9yYWdlVG1wLT5waW5nUmVzdWx0c0lwVGFyZ2V0QWRkcmVzcyA9Ci0gICAgICAgICAgICAgICAgKGNoYXIgKikgbWFsbG9jKHN0cmxlbihob3N0KSArIDEpOwogICAgICAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3MgPSBzdHJkdXAoaG9zdCk7Ci0gICAgICAgICAgICBTdG9yYWdlVG1wLT5waW5nUmVzdWx0c0lwVGFyZ2V0QWRkcmVzc1tzdHJsZW4oaG9zdCldID0gJ1wwJzsKICAgICAgICAgICAgIFN0b3JhZ2VUbXAtPnBpbmdSZXN1bHRzSXBUYXJnZXRBZGRyZXNzTGVuID0gc3RybGVuKGhvc3QpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaHAgPSBnZXRob3N0YnluYW1lMihob3N0LCBBRl9JTkVUNik7CkBAIC0yMDIyLDEzICsyMDc3LDggQEAKICAgICAgICAgICAgICAgICBtZW1tb3ZlKChjYWRkcl90KSAmIHRvLT5zaW42X2FkZHIsIGhwLT5oX2FkZHIsIDE2KTsKICAgICAgICAgICAgICAgICBob3N0bmFtZSA9IGluZXRfbnRvcChBRl9JTkVUNiwgJnRvLT5zaW42X2FkZHIsIHBhLCA2NCk7CiAgICAgICAgICAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3NUeXBlID0gMjsKLSAgICAgICAgICAgICAgICBTdG9yYWdlVG1wLT5waW5nUmVzdWx0c0lwVGFyZ2V0QWRkcmVzcyA9Ci0gICAgICAgICAgICAgICAgICAgIChjaGFyICopIG1hbGxvYyhzdHJsZW4oaG9zdG5hbWUpICsgMSk7CiAgICAgICAgICAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3MgPSBzdHJkdXAoaG9zdG5hbWUpOwotICAgICAgICAgICAgICAgIFN0b3JhZ2VUbXAtPnBpbmdSZXN1bHRzSXBUYXJnZXRBZGRyZXNzW3N0cmxlbihob3N0bmFtZSldID0KLSAgICAgICAgICAgICAgICAgICAgJ1wwJzsKLSAgICAgICAgICAgICAgICBTdG9yYWdlVG1wLT5waW5nUmVzdWx0c0lwVGFyZ2V0QWRkcmVzc0xlbiA9Ci0gICAgICAgICAgICAgICAgICAgIHN0cmxlbihob3N0bmFtZSk7CisgICAgICAgICAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3NMZW4gPSBzdHJsZW4oaG9zdG5hbWUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAodm9pZCkgZnByaW50ZihzdGRlcnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRyYWNlcm91dGU6IHVua25vd24gaG9zdCAlc1xuIiwgaG9zdCk7CkBAIC0yMDU3LDggKzIxMDcsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIFNOTVBfRlJFRShhaSk7Ci0KKyAgICBmcmVlYWRkcmluZm8oYWkpOwogfQogCiAKQEAgLTIwNjgsMTIgKzIxMTcsMTYgQEAKICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcnMgPSBOVUxMOwogICAgIHN0cnVjdCBwaW5nUmVzdWx0c1RhYmxlX2RhdGEgKlN0b3JhZ2VUbXAgPSBOVUxMOwogCi0gICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXgsIHRoZWRhdGEtPnBpbmdDdGxPd25lckluZGV4TGVuKTsgICAgICAgLyogcGluZ0N0bE93bmVySW5kZXggKi8KLSAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWUsIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZUxlbik7ICAgLyogcGluZ0N0bFRlc3ROYW1lICovCisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxPd25lckluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOworICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWVMZW4pOwogCi0KLSAgICBpZiAoKFN0b3JhZ2VUbXAgPQotICAgICAgICAgaGVhZGVyX2NvbXBsZXhfZ2V0KHBpbmdSZXN1bHRzVGFibGVTdG9yYWdlLCB2YXJzKSkgPT0gTlVMTCkKKyAgICBTdG9yYWdlVG1wID0gaGVhZGVyX2NvbXBsZXhfZ2V0KHBpbmdSZXN1bHRzVGFibGVTdG9yYWdlLCB2YXJzKTsKKyAgICBzbm1wX2ZyZWVfdmFyYmluZCh2YXJzKTsKKyAgICBpZiAoIVN0b3JhZ2VUbXApCiAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT1NVQ0hOQU1FOwogICAgIFN0b3JhZ2VUbXAtPnBpbmdSZXN1bHRzT3BlclN0YXR1cyA9IHZhbDsKIApAQCAtMjA4NSwxOSArMjEzOCwyMyBAQAogaW50CiBwaW5nUmVzdWx0c1RhYmxlX2RlbChzdHJ1Y3QgcGluZ0N0bFRhYmxlX2RhdGEgKnRoZWRhdGEpCiB7Ci0gICAgc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICpoY2lwdHIyID0gTlVMTDsKKyAgICBzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKmhjaXB0cjIsICpuZXh0OwogICAgIHN0cnVjdCBwaW5nUmVzdWx0c1RhYmxlX2RhdGEgKlN0b3JhZ2VEZWwgPSBOVUxMOwogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFycyA9IE5VTEw7CiAgICAgb2lkICAgICAgICAgICAgIG5ld29pZFtNQVhfT0lEX0xFTl07CiAgICAgc2l6ZV90ICAgICAgICAgIG5ld29pZF9sZW47CiAKLSAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSB0aGVkYXRhLT5waW5nQ3RsT3duZXJJbmRleCwgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOyAgICAgICAvKiBwaW5nQ3RsT3duZXJJbmRleCAqLwotICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZSwgdGhlZGF0YS0+cGluZ0N0bFRlc3ROYW1lTGVuKTsgICAvKiBwaW5nQ3RsT3BlcmF0aW9uTmFtZSAqLwotCisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxPd25lckluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOworICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWVMZW4pOwogICAgIGhlYWRlcl9jb21wbGV4X2dlbmVyYXRlX29pZChuZXdvaWQsICZuZXdvaWRfbGVuLCBOVUxMLCAwLCB2YXJzKTsKKyAgICBzbm1wX2ZyZWVfdmFyYmluZCh2YXJzKTsKIAotICAgIGZvciAoaGNpcHRyMiA9IHBpbmdSZXN1bHRzVGFibGVTdG9yYWdlOyBoY2lwdHIyICE9IE5VTEw7Ci0gICAgICAgICBoY2lwdHIyID0gaGNpcHRyMi0+bmV4dCkgeworICAgIGZvciAoaGNpcHRyMiA9IHBpbmdSZXN1bHRzVGFibGVTdG9yYWdlOyBoY2lwdHIyOyBoY2lwdHIyID0gbmV4dCkgeworICAgICAgICBuZXh0ID0gaGNpcHRyMi0+bmV4dDsKICAgICAgICAgaWYgKHNubXBfb2lkX2NvbXBhcmUobmV3b2lkLCBuZXdvaWRfbGVuLCBoY2lwdHIyLT5uYW1lLCBuZXdvaWRfbGVuKQogICAgICAgICAgICAgPT0gMCkgewogICAgICAgICAgICAgU3RvcmFnZURlbCA9CkBAIC0yMTIxLDE5ICsyMTc4LDIzIEBACiBpbnQKIHBpbmdQcm9iZUhpc3RvcnlUYWJsZV9kZWwoc3RydWN0IHBpbmdDdGxUYWJsZV9kYXRhICp0aGVkYXRhKQogewotICAgIHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqaGNpcHRyMiA9IE5VTEw7CisgICAgc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICpoY2lwdHIyLCAqbmV4dDsKICAgICBzdHJ1Y3QgcGluZ1Byb2JlSGlzdG9yeVRhYmxlX2RhdGEgKlN0b3JhZ2VEZWwgPSBOVUxMOwogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFycyA9IE5VTEw7CiAgICAgb2lkICAgICAgICAgICAgIG5ld29pZFtNQVhfT0lEX0xFTl07CiAgICAgc2l6ZV90ICAgICAgICAgIG5ld29pZF9sZW47CiAKLSAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSB0aGVkYXRhLT5waW5nQ3RsT3duZXJJbmRleCwgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOyAgICAgICAvKiBwaW5nQ3RsT3duZXJJbmRleCAqLwotICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZSwgdGhlZGF0YS0+cGluZ0N0bFRlc3ROYW1lTGVuKTsgICAvKiBwaW5nQ3RsT3BlcmF0aW9uTmFtZSAqLwotCisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxPd25lckluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOworICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWVMZW4pOwogICAgIGhlYWRlcl9jb21wbGV4X2dlbmVyYXRlX29pZChuZXdvaWQsICZuZXdvaWRfbGVuLCBOVUxMLCAwLCB2YXJzKTsKKyAgICBzbm1wX2ZyZWVfdmFyYmluZCh2YXJzKTsKIAotICAgIGZvciAoaGNpcHRyMiA9IHBpbmdQcm9iZUhpc3RvcnlUYWJsZVN0b3JhZ2U7IGhjaXB0cjIgIT0gTlVMTDsKLSAgICAgICAgIGhjaXB0cjIgPSBoY2lwdHIyLT5uZXh0KSB7CisgICAgZm9yIChoY2lwdHIyID0gcGluZ1Byb2JlSGlzdG9yeVRhYmxlU3RvcmFnZTsgaGNpcHRyMjsgaGNpcHRyMiA9IG5leHQpIHsKKyAgICAgICAgbmV4dCA9IGhjaXB0cjItPm5leHQ7CiAgICAgICAgIGlmIChzbm1wX29pZF9jb21wYXJlKG5ld29pZCwgbmV3b2lkX2xlbiwgaGNpcHRyMi0+bmFtZSwgbmV3b2lkX2xlbikKICAgICAgICAgICAgID09IDApIHsKICAgICAgICAgICAgIFN0b3JhZ2VEZWwgPQpAQCAtNDAwNywxNCArNDA2OCwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdmFyX3ZhbF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciAqIHN0YXRQLCBvaWQgKiBuYW1lLCBzaXplX3QgbmFtZV9sZW4pCiB7Ci0gICAgc3RydWN0IHBpbmdDdGxUYWJsZV9kYXRhICpTdG9yYWdlVG1wID0gTlVMTDsKKyAgICBzdHJ1Y3QgcGluZ0N0bFRhYmxlX2RhdGEgKlN0b3JhZ2VUbXA7CiAgICAgc3RhdGljIHN0cnVjdCBwaW5nQ3RsVGFibGVfZGF0YSAqU3RvcmFnZU5ldywgKlN0b3JhZ2VEZWw7CiAgICAgc2l6ZV90ICAgICAgICAgIG5ld2xlbiA9CiAgICAgICAgIG5hbWVfbGVuIC0gKHNpemVvZihwaW5nQ3RsVGFibGVfdmFyaWFibGVzX29pZCkgLyBzaXplb2Yob2lkKSArCiAgICAgICAgICAgICAgICAgICAgIDMgLSAxKTsKICAgICBzdGF0aWMgaW50ICAgICAgb2xkX3ZhbHVlOwogICAgIGludCAgICAgICAgICAgICBzZXRfdmFsdWU7Ci0gICAgc3RhdGljIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFycywgKnZwOwogICAgIHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqaGNpcHRyID0gTlVMTDsKIAogICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLApAQCAtNDExMyw2ICs0MTczLDggQEAKICAgICAgICAgICogbWVtb3J5IHJlc2V2ZXJhdGlvbiwgZmluYWwgcHJlcGFyYXRpb24uLi4gCiAgICAgICAgICAqLwogICAgICAgICBpZiAoU3RvcmFnZVRtcCA9PSBOVUxMKSB7CisgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcnMsICp2cDsKKwogICAgICAgICAgICAgaWYgKHNldF92YWx1ZSA9PSBSU19ERVNUUk9ZKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiAgICAgICAgICAgICB9CkBAIC00MTMyLDE1ICs0MTk0LDE0IEBACiAgICAgICAgICAgICAgICAgIChuYW1lCiAgICAgICAgICAgICAgICAgICBbc2l6ZW9mKHBpbmdDdGxUYWJsZV92YXJpYWJsZXNfb2lkKSAvIHNpemVvZihvaWQpICsKICAgICAgICAgICAgICAgICAgICAyXSksIG5ld2xlbiwgdmFycykgIT0gU05NUEVSUl9TVUNDRVNTKSB7Ci0gICAgICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICAgKiBYWFg6IGZyZWUsIHplcm8gdmFycyAKLSAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAvKiBzbm1wX2ZyZWVfdmFyYmluZCh2YXJzKTsgKi8KKyAgICAgICAgICAgICAgICBzbm1wX2ZyZWVfdmFyYmluZCh2YXJzKTsKICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfSU5DT05TSVNURU5UTkFNRTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHZwID0gdmFyczsKIAogICAgICAgICAgICAgU3RvcmFnZU5ldyA9IGNyZWF0ZV9waW5nQ3RsVGFibGVfZGF0YSgpOworICAgICAgICAgICAgaWYgKCFTdG9yYWdlTmV3KQorICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAgICAgICAgICAgICBpZiAodnAtPnZhbF9sZW4gPD0gMzIpIHsKICAgICAgICAgICAgICAgICBTdG9yYWdlTmV3LT5waW5nQ3RsT3duZXJJbmRleCA9IG1hbGxvYyh2cC0+dmFsX2xlbiArIDEpOwogICAgICAgICAgICAgICAgIG1lbWNweShTdG9yYWdlTmV3LT5waW5nQ3RsT3duZXJJbmRleCwgdnAtPnZhbC5zdHJpbmcsCkBAIC00MTc3LDEwICs0MjM4LDcgQEAKICAgICAgICAgICAgIFN0b3JhZ2VOZXctPnBpbmdDdGxSb3dTdGF0dXMgPSBzZXRfdmFsdWU7CiAKIAotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIFhYWDogZnJlZSwgemVybyB2YXJzLCBubyBsb25nZXIgbmVlZGVkPyAKLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgLyogc25tcF9mcmVlX3ZhcmJpbmQodmFycyk7ICovCisgICAgICAgICAgICBzbm1wX2ZyZWVfdmFyYmluZCh2YXJzKTsKICAgICAgICAgfQogCiAKQEAgLTQxOTEsMTIgKzQyNDksMTcgQEAKIAogICAgIGNhc2UgRlJFRToKICAgICAgICAgLyoKLSAgICAgICAgICogWFhYOiBmcmVlLCB6ZXJvIHZhcnMgCi0gICAgICAgICAqLwotCi0gICAgICAgIC8qCiAgICAgICAgICAqIFJlbGVhc2UgYW55IHJlc291cmNlcyB0aGF0IGhhdmUgYmVlbiBhbGxvY2F0ZWQgCiAgICAgICAgICAqLworCisgICAgICAgIGlmIChzZXRfdmFsdWUgPT0gUlNfREVTVFJPWSAmJiBTdG9yYWdlTmV3KQorICAgICAgICAgICAgZnJlZV9waW5nQ3RsVGFibGVfZGF0YShTdG9yYWdlTmV3KTsKKyAgICAgICAgU3RvcmFnZU5ldyA9IE5VTEw7CisKKyAgICAgICAgaWYgKFN0b3JhZ2VEZWwpIHsKKyAgICAgICAgICAgIGZyZWVfcGluZ0N0bFRhYmxlX2RhdGEoU3RvcmFnZURlbCk7CisgICAgICAgICAgICBTdG9yYWdlRGVsID0gTlVMTDsKKyAgICAgICAgfQogICAgICAgICBicmVhazsKIAogCkBAIC00MjY3LDEwICs0MzMwLDggQEAKICAgICAgICAgICAgICAgICBoZWFkZXJfY29tcGxleF9maW5kX2VudHJ5KHBpbmdDdGxUYWJsZVN0b3JhZ2UsIFN0b3JhZ2VOZXcpOwogICAgICAgICAgICAgU3RvcmFnZURlbCA9CiAgICAgICAgICAgICAgICAgaGVhZGVyX2NvbXBsZXhfZXh0cmFjdF9lbnRyeSgmcGluZ0N0bFRhYmxlU3RvcmFnZSwgaGNpcHRyKTsKLQotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIFhYWDogZnJlZSBpdCAKLSAgICAgICAgICAgICAqLworICAgICAgICAgICAgZnJlZV9waW5nQ3RsVGFibGVfZGF0YShTdG9yYWdlRGVsKTsKKyAgICAgICAgICAgIFN0b3JhZ2VEZWwgPSBOVUxMOwogICAgICAgICB9IGVsc2UgaWYgKFN0b3JhZ2VEZWwgIT0gTlVMTCkgewogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIHJvdyBkZWxldGlvbiwgc28gYWRkIGl0IGFnYWluIApAQCAtNDI3OCw2ICs0MzM5LDcgQEAKICAgICAgICAgICAgIHBpbmdDdGxUYWJsZV9hZGQoU3RvcmFnZURlbCk7CiAgICAgICAgICAgICBwaW5nUmVzdWx0c1RhYmxlX2FkZChTdG9yYWdlRGVsKTsKICAgICAgICAgICAgIHBpbmdQcm9iZUhpc3RvcnlUYWJsZV9hZGRhbGwoU3RvcmFnZURlbCk7CisgICAgICAgICAgICBTdG9yYWdlRGVsID0gTlVMTDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFN0b3JhZ2VUbXAtPnBpbmdDdGxSb3dTdGF0dXMgPSBvbGRfdmFsdWU7CiAgICAgICAgIH0KQEAgLTQyOTksMzcgKzQzNjEsOCBAQAogICAgICAgICB9CiAKICAgICAgICAgaWYgKFN0b3JhZ2VEZWwgIT0gTlVMTCkgewotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIGlmKHN0cmxlbihTdG9yYWdlRGVsLT5waW5nQ3RsT3duZXJJbmRleCkhPTApCi0gICAgICAgICAgICAgKiBTTk1QX0ZSRUUoU3RvcmFnZURlbC0+cGluZ0N0bE93bmVySW5kZXgpOwotICAgICAgICAgICAgICogcHJpbnRmKCJDT01NSVQxIFxuIik7Ci0gICAgICAgICAgICAgKiBpZihzdHJsZW4oU3RvcmFnZURlbC0+cGluZ0N0bFRlc3ROYW1lKSE9MCkKLSAgICAgICAgICAgICAqIFNOTVBfRlJFRShTdG9yYWdlRGVsLT5waW5nQ3RsVGVzdE5hbWUpOwotICAgICAgICAgICAgICogcHJpbnRmKCJDT01NSVQyIFxuIik7Ci0gICAgICAgICAgICAgKiBpZihzdHJsZW4oU3RvcmFnZURlbC0+cGluZ0N0bFRhcmdldEFkZHJlc3MpIT0wKQotICAgICAgICAgICAgICogU05NUF9GUkVFKFN0b3JhZ2VEZWwtPnBpbmdDdGxUYXJnZXRBZGRyZXNzKTsKLSAgICAgICAgICAgICAqIHByaW50ZigiQ09NTUlUMyBcbiIpOwotICAgICAgICAgICAgICogaWYoc3RybGVuKFN0b3JhZ2VEZWwtPnBpbmdDdGxEYXRhRmlsbCkhPTApCi0gICAgICAgICAgICAgKiBTTk1QX0ZSRUUoU3RvcmFnZURlbC0+cGluZ0N0bERhdGFGaWxsKTsKLSAgICAgICAgICAgICAqIHByaW50ZigiQ09NTUlUNCBcbiIpOwotICAgICAgICAgICAgICogaWYoc3RybGVuKFN0b3JhZ2VEZWwtPnBpbmdDdGxUcmFwR2VuZXJhdGlvbikhPTApCi0gICAgICAgICAgICAgKiBTTk1QX0ZSRUUoU3RvcmFnZURlbC0+cGluZ0N0bFRyYXBHZW5lcmF0aW9uKTsKLSAgICAgICAgICAgICAqIHByaW50ZigiQ09NTUlUNSBcbiIpOwotICAgICAgICAgICAgICogaWYoU3RvcmFnZURlbC0+cGluZ0N0bFR5cGVMZW4hPTApCi0gICAgICAgICAgICAgKiBTTk1QX0ZSRUUoU3RvcmFnZURlbC0+cGluZ0N0bFR5cGUpOwotICAgICAgICAgICAgICogcHJpbnRmKCJDT01NSVQ2IFxuIik7Ci0gICAgICAgICAgICAgKiBpZihzdHJsZW4oU3RvcmFnZURlbC0+cGluZ0N0bERlc2NyKSE9MCkKLSAgICAgICAgICAgICAqIFNOTVBfRlJFRShTdG9yYWdlRGVsLT5waW5nQ3RsRGVzY3IpOwotICAgICAgICAgICAgICogcHJpbnRmKCJDT01NSVQ3IFxuIik7Ci0gICAgICAgICAgICAgKiBpZihzdHJsZW4oU3RvcmFnZURlbC0+cGluZ0N0bFNvdXJjZUFkZHJlc3MpIT0wKQotICAgICAgICAgICAgICogU05NUF9GUkVFKFN0b3JhZ2VEZWwtPnBpbmdDdGxTb3VyY2VBZGRyZXNzKTsKLSAgICAgICAgICAgICAqIHByaW50ZigiQ09NTUlUOCBcbiIpOwotICAgICAgICAgICAgICovCisgICAgICAgICAgICBmcmVlX3BpbmdDdGxUYWJsZV9kYXRhKFN0b3JhZ2VEZWwpOwogICAgICAgICAgICAgU3RvcmFnZURlbCA9IE5VTEw7Ci0gICAgICAgICAgICAvKiBTdG9yYWdlRGVsID0gMDsgKi8KLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBYWFg6IGZyZWUgaXQsIGl0cyBkZWFkIAotICAgICAgICAgICAgICovCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoU3RvcmFnZVRtcAogICAgICAgICAgICAgICAgICYmIFN0b3JhZ2VUbXAtPnBpbmdDdGxSb3dTdGF0dXMgPT0gUlNfQ1JFQVRFQU5ER08pIHsKQEAgLTQ1MDIsMTQgKzQ1MzUsMTMgQEAKICAgICAgKiBDaGVjayB0aGF0IHBhY2tldHMgPCByYXRlKnRpbWUgKyBwcmVsb2FkIAogICAgICAqLwogICAgIGlmICgoKmN1cl90aW1lKS50dl9zZWMgPT0gMCkgewotCi0gICAgICAgIGdldHRpbWVvZmRheShjdXJfdGltZSwgTlVMTCk7CisgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jayhjdXJfdGltZSk7CiAgICAgICAgIHRva2VucyA9IGludGVydmFsICogKHByZWxvYWQgLSAxKTsKICAgICB9IGVsc2UgewogICAgICAgICBsb25nICAgICAgICAgICAgbnRva2VuczsKICAgICAgICAgc3RydWN0IHRpbWV2YWwgIHR2OwogCi0gICAgICAgIGdldHRpbWVvZmRheSgmdHYsIE5VTEwpOworICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnR2KTsKICAgICAgICAgbnRva2VucyA9ICh0di50dl9zZWMgLSAoKmN1cl90aW1lKS50dl9zZWMpICogMTAwMCArCiAgICAgICAgICAgICAodHYudHZfdXNlYyAtICgqY3VyX3RpbWUpLnR2X3VzZWMpIC8gMTAwMDsKICAgICAgICAgaWYgKCFpbnRlcnZhbCkgewpAQCAtNDczNCw3ICs0NzY2LDcgQEAKIAogICAgICppZGVudCA9IGdldHBpZCgpICYgMHhGRkZGOwogCi0gICAgZ2V0dGltZW9mZGF5KHN0YXJ0X3RpbWUsIE5VTEwpOworICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jayhzdGFydF90aW1lKTsKIAogI2lmIDAKICAgICBpZiAoKmRlYWRsaW5lKSB7CkBAIC00ODE4LDExICs0ODUwLDExIEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAobnBhY2tldHMgJiYgbnJlY2VpdmVkID49IG5wYWNrZXRzKSB7Ci0gICAgICAgICAgICBwcmludGYoIm5wYWNrZXRzLG5yZWNlaXZlZD0lbGRcbiIsIG5yZWNlaXZlZCk7CisgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIm5wYWNrZXRzLG5yZWNlaXZlZD0lbGRcbiIsIG5yZWNlaXZlZCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlYWRsaW5lICYmIG5lcnJvcnMpIHsKLSAgICAgICAgICAgIHByaW50ZigiZGVhZGxpbmVcbiIpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICJkZWFkbGluZVxuIikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtNDgzNyw3ICs0ODY5LDcgQEAKICAgICAgICAgICogU2VuZCBwcm9iZXMgc2NoZWR1bGVkIHRvIHRoaXMgdGltZS4gCiAgICAgICAgICAqLwogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBwcmludGYoInBpbmdlclxuIik7CisgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgInBpbmdlclxuIikpOwogICAgICAgICAgICAgbmV4dCA9CiAgICAgICAgICAgICAgICAgcGluZ2VyKGljbXBfc29jaywgcHJlbG9hZCwgY21zZ2xlbiwgY21zZ2J1Ziwgd2hlcmV0bywKICAgICAgICAgICAgICAgICAgICAgICAgJnJ0dF9hZGRlbmQsIHVpZCwgb3B0aW9ucywgaW50ZXJ2YWwsIGRhdGFsZW4sCkBAIC00ODQ1LDExICs0ODc3LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgIGRlYWRsaW5lLCAmYWNrZWQsICZucGFja2V0cywgJm5yZWNlaXZlZCwKICAgICAgICAgICAgICAgICAgICAgICAgJm50cmFuc21pdHRlZCwgJm5lcnJvcnMsICZjb25maXJtX2ZsYWcsICZjb25maXJtLAogICAgICAgICAgICAgICAgICAgICAgICAmcGlwZXNpemUsICZjdXJfdGltZSk7Ci0gICAgICAgICAgICBwcmludGYoIjE6bmV4dD0lZFxuIiwgbmV4dCk7CisgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIjE6bmV4dD0lZFxuIiwgbmV4dCkpOwogICAgICAgICAgICAgbmV4dCA9CiAgICAgICAgICAgICAgICAgc2NoZWR1bGVfZXhpdChuZXh0LCBkZWFkbGluZSwgJm5wYWNrZXRzLCAmbnJlY2VpdmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm50cmFuc21pdHRlZCwgJnRtYXgpOwotICAgICAgICAgICAgcHJpbnRmKCIyOm5leHQ9JWRcbiIsIG5leHQpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICIyOm5leHQ9JWRcbiIsIG5leHQpKTsKICAgICAgICAgfSB3aGlsZSAobmV4dCA8PSAwKTsKIAogICAgICAgICAvKgpAQCAtNDkzOCw4ICs0OTcwLDYgQEAKICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBpbmdQcm9iZUhpc3RvcnlUYWJsZV9kYXRhICp0ZW1wID0gTlVMTDsKICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJzID0gTlVMTDsKIAotCi0KICAgICAgICAgICAgICAgICAgICAgaWYgKHNlcmllcyA9PSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgcHJvYmVGYWlsZWQgPSAxOwogICAgICAgICAgICAgICAgICAgICBlbHNlCkBAIC00OTQ3LDEzICs0OTc3LDE3IEBACiAgICAgICAgICAgICAgICAgICAgIHNlcmllcyA9IDE7CiAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQgPSB0ZXN0RmFpbGVkICsgMTsKIAotICAgICAgICAgICAgICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSBpdGVtLT5waW5nQ3RsT3duZXJJbmRleCwgaXRlbS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOyAgICAgLyogIHBpbmdDdGxPd25lckluZGV4ICAqLwotICAgICAgICAgICAgICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSBpdGVtLT5waW5nQ3RsVGVzdE5hbWUsIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZUxlbik7IC8qICBwaW5nQ3RsVGVzdE5hbWUgICovCisgICAgICAgICAgICAgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bE93bmVySW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOworICAgICAgICAgICAgICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsVGVzdE5hbWVMZW4pOwogCi0KLSAgICAgICAgICAgICAgICAgICAgaWYgKChTdG9yYWdlTmV3ID0KLSAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfY29tcGxleF9nZXQocGluZ1Jlc3VsdHNUYWJsZVN0b3JhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcnMpKSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBTdG9yYWdlTmV3ID0gaGVhZGVyX2NvbXBsZXhfZ2V0KHBpbmdSZXN1bHRzVGFibGVTdG9yYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcnMpOworICAgICAgICAgICAgICAgICAgICBzbm1wX2ZyZWVfdmFyYmluZCh2YXJzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFTdG9yYWdlTmV3KQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICAgICAgICAgIFN0b3JhZ2VOZXctPnBpbmdSZXN1bHRzU2VuZFByb2JlcyA9CkBAIC01MDQ2LDcgKzUwODAsNyBAQAogICAgICAgICAgICAgICAgICAgICBub3Rfb3VycyA9IDE7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwcmludGYoImNjPj0wLGVsc2VcbiIpOworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiY2M+PTAsZWxzZVxuIikpOwogI2lmZGVmIFNPX1RJTUVTVEFNUAogICAgICAgICAgICAgICAgIGZvciAoYyA9IENNU0dfRklSU1RIRFIoJm1zZyk7IGM7IGMgPSBDTVNHX05YVEhEUigmbXNnLCBjKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoYy0+Y21zZ19sZXZlbCAhPSBTT0xfU09DS0VUIHx8CkBAIC01MDYxLDcgKzUwOTUsNyBAQAogICAgICAgICAgICAgICAgIGlmICgob3B0aW9ucyAmIEZfTEFURU5DWSkgfHwgcmVjdl90aW1lcCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgob3B0aW9ucyAmIEZfTEFURU5DWSkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgIGlvY3RsKGljbXBfc29jaywgU0lPQ0dTVEFNUCwgJnJlY3ZfdGltZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBnZXR0aW1lb2ZkYXkoJnJlY3ZfdGltZSwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnJlY3ZfdGltZSk7CiAgICAgICAgICAgICAgICAgICAgIHJlY3ZfdGltZXAgPSAmcmVjdl90aW1lOwogICAgICAgICAgICAgICAgIH0KIApAQCAtNTE2MSwxOSArNTE5NSwxNCBAQAogICAgICAgICBzdHJ1Y3QgdGltZXZhbCAgdG1wX3R2OwogICAgICAgICBtZW1jcHkoJnRtcF90diwgcHRyLCBzaXplb2YodG1wX3R2KSk7CiAKLSAgICAgIHJlc3RhbXA6CiAgICAgICAgIHR2c3ViKHR2LCAmdG1wX3R2KTsKICAgICAgICAgdHJpcHRpbWUgPSB0di0+dHZfc2VjICogMTAwMDAwMCArIHR2LT50dl91c2VjOwogICAgICAgICBpZiAodHJpcHRpbWUgPCAwKSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwKLSAgICAgICAgICAgICAgICAgICAgIldhcm5pbmc6IHRpbWUgb2YgZGF5IGdvZXMgYmFjayAoJWxkdXMpLCB0YWtpbmcgY291bnRlcm1lYXN1cmVzLlxuIiwKLSAgICAgICAgICAgICAgICAgICAgdHJpcHRpbWUpOworICAgICAgICAgICAgc25tcF9sb2coTE9HX0lORk8sCisgICAgICAgICAgICAgICAgICAgICAiV2FybmluZzogaW52YWxpZCB0aW1lc3RhbXAgaW4gSUNNUCByZXNwb25zZS5cbiIpOwogICAgICAgICAgICAgdHJpcHRpbWUgPSAwOwotICAgICAgICAgICAgaWYgKCEob3B0aW9ucyAmIEZfTEFURU5DWSkpIHsKLSAgICAgICAgICAgICAgICBnZXR0aW1lb2ZkYXkodHYsIE5VTEwpOworICAgICAgICAgICAgaWYgKCEob3B0aW9ucyAmIEZfTEFURU5DWSkpCiAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBGX0xBVEVOQ1k7Ci0gICAgICAgICAgICAgICAgZ290byByZXN0YW1wOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmICghY3NmYWlsZWQpIHsKICAgICAgICAgICAgICgqdHN1bSkgKz0gdHJpcHRpbWU7CkBAIC01MjE1LDMyICs1MjQ0LDM0IEBACiAgICAgfSBlbHNlIHsKICAgICAgICAgaW50ICAgICAgICAgICAgIGk7CiAgICAgICAgIF9fdTggICAgICAgICAgICpjcCwgKmRwOwotICAgICAgICBwcmludGYoIiVkIGJ5dGVzIGZyb20gJXM6IGljbXBfc2VxPSV1IiwgY2MsIGZyb20sIHNlcSk7CisKKyAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICIlZCBieXRlcyBmcm9tICVzOiBpY21wX3NlcT0ldSIsIGNjLCBmcm9tLAorICAgICAgICAgICAgICAgICAgICBzZXEpKTsKIAogICAgICAgICBpZiAoaG9wcyA+PSAwKQotICAgICAgICAgICAgcHJpbnRmKCIgdHRsPSVkIiwgaG9wcyk7CisgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIiB0dGw9JWQiLCBob3BzKSk7CiAKICAgICAgICAgaWYgKGNjIDwgZGF0YWxlbiArIDgpIHsKLSAgICAgICAgICAgIHByaW50ZigiICh0cnVuY2F0ZWQpXG4iKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiICh0cnVuY2F0ZWQpXG4iKSk7CiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQogICAgICAgICBpZiAodGltaW5nKSB7CiAgICAgICAgICAgICBpZiAodHJpcHRpbWUgPj0gMTAwMDAwKQotICAgICAgICAgICAgICAgIHByaW50ZigiIHRpbWU9JWxkIG1zIiwgdHJpcHRpbWUgLyAxMDAwKTsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIiB0aW1lPSVsZCBtcyIsIHRyaXB0aW1lIC8gMTAwMCkpOwogICAgICAgICAgICAgZWxzZSBpZiAodHJpcHRpbWUgPj0gMTAwMDApCi0gICAgICAgICAgICAgICAgcHJpbnRmKCIgdGltZT0lbGQuJTAxbGQgbXMiLCB0cmlwdGltZSAvIDEwMDAsCi0gICAgICAgICAgICAgICAgICAgICAgICh0cmlwdGltZSAlIDEwMDApIC8gMTAwKTsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIiB0aW1lPSVsZC4lMDFsZCBtcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpcHRpbWUgLyAxMDAwLCAodHJpcHRpbWUgJSAxMDAwKSAvIDEwMCkpOwogICAgICAgICAgICAgZWxzZSBpZiAodHJpcHRpbWUgPj0gMTAwMCkKLSAgICAgICAgICAgICAgICBwcmludGYoIiB0aW1lPSVsZC4lMDJsZCBtcyIsIHRyaXB0aW1lIC8gMTAwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgKHRyaXB0aW1lICUgMTAwMCkgLyAxMCk7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICIgdGltZT0lbGQuJTAybGQgbXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaXB0aW1lIC8gMTAwMCwgKHRyaXB0aW1lICUgMTAwMCkgLyAxMCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHByaW50ZigiIHRpbWU9JWxkLiUwM2xkIG1zIiwgdHJpcHRpbWUgLyAxMDAwLAotICAgICAgICAgICAgICAgICAgICAgICB0cmlwdGltZSAlIDEwMDApOworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiIHRpbWU9JWxkLiUwM2xkIG1zIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlwdGltZSAvIDEwMDAsIHRyaXB0aW1lICUgMTAwMCkpOwogICAgICAgICB9CiAgICAgICAgIGlmIChkdXBmbGFnKQotICAgICAgICAgICAgcHJpbnRmKCIgKERVUCEpIik7CisgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIiAoRFVQISkiKSk7CiAgICAgICAgIGlmIChjc2ZhaWxlZCkKLSAgICAgICAgICAgIHByaW50ZigiIChCQUQgQ0hFQ0tTVU0hKSIpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICIgKEJBRCBDSEVDS1NVTSEpIikpOwogCiAgICAgICAgIC8qCiAgICAgICAgICAqIGNoZWNrIHRoZSBkYXRhIApAQCAtNTI0OSwxMyArNTI4MCwxNCBAQAogICAgICAgICBkcCA9ICh1X2NoYXIgKikmb3V0cGFja1s4ICsgc2l6ZW9mKHN0cnVjdCB0aW1ldmFsKV07CiAgICAgICAgIGZvciAoaSA9IHNpemVvZihzdHJ1Y3QgdGltZXZhbCk7IGkgPCBkYXRhbGVuOyArK2ksICsrY3AsICsrZHApIHsKICAgICAgICAgICAgIGlmICgqY3AgIT0gKmRwKSB7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCJcbndyb25nIGRhdGEgYnl0ZSAjJWQgc2hvdWxkIGJlIDB4JXggYnV0IHdhcyAweCV4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgaSwgKmRwLCAqY3ApOworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbndyb25nIGRhdGEgYnl0ZSAjJWQgc2hvdWxkIGJlIDB4JXggYnV0IHdhcyAweCV4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLCAqZHAsICpjcCkpOwogICAgICAgICAgICAgICAgIGNwID0gKHVfY2hhciAqKSBwdHIgKyBzaXplb2Yoc3RydWN0IHRpbWV2YWwpOwogICAgICAgICAgICAgICAgIGZvciAoaSA9IHNpemVvZihzdHJ1Y3QgdGltZXZhbCk7IGkgPCBkYXRhbGVuOyArK2ksICsrY3ApIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKChpICUgMzIpID09IHNpemVvZihzdHJ1Y3QgdGltZXZhbCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIlxuIyVkXHQiLCBpKTsKLSAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIleCAiLCAqY3ApOworICAgICAgICAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICJcbiMlZFx0IiwgaSkpOworICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIiV4ICIsICpjcCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTUyNjMsMTIgKzUyOTUsMTYgQEAKICAgICB9CiAKIAotICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIGl0ZW0tPnBpbmdDdGxPd25lckluZGV4LCBpdGVtLT5waW5nQ3RsT3duZXJJbmRleExlbik7ICAgICAvKiAgcGluZ0N0bE93bmVySW5kZXggICovCi0gICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgaXRlbS0+cGluZ0N0bFRlc3ROYW1lLCBpdGVtLT5waW5nQ3RsVGVzdE5hbWVMZW4pOyAvKiAgcGluZ0N0bFRlc3ROYW1lICAqLworICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsT3duZXJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tPnBpbmdDdGxPd25lckluZGV4TGVuKTsKKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bFRlc3ROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bFRlc3ROYW1lTGVuKTsKIAotCi0gICAgaWYgKChTdG9yYWdlTmV3ID0KLSAgICAgICAgIGhlYWRlcl9jb21wbGV4X2dldChwaW5nUmVzdWx0c1RhYmxlU3RvcmFnZSwgdmFycykpID09IE5VTEwpCisgICAgU3RvcmFnZU5ldyA9IGhlYWRlcl9jb21wbGV4X2dldChwaW5nUmVzdWx0c1RhYmxlU3RvcmFnZSwgdmFycyk7CisgICAgc25tcF9mcmVlX3ZhcmJpbmQodmFycyk7CisgICAgaWYgKCFTdG9yYWdlTmV3KQogICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9TVUNITkFNRTsKIAogCkBAIC01MjgzLDYgKzUzMTksNyBAQAogICAgIFN0b3JhZ2VOZXctPnBpbmdSZXN1bHRzUnR0U3VtT2ZTcXVhcmVzID0gKnRzdW0yOwogCiAgICAgU3RvcmFnZU5ldy0+cGluZ1Jlc3VsdHNMYXN0R29vZFByb2JlX3RpbWUgPSB0aW1lcDsKKyAgICBmcmVlKFN0b3JhZ2VOZXctPnBpbmdSZXN1bHRzTGFzdEdvb2RQcm9iZSk7CiAgICAgbWVtZHVwKCZTdG9yYWdlTmV3LT5waW5nUmVzdWx0c0xhc3RHb29kUHJvYmUsCiAJZGF0ZV9uX3RpbWUoJnRpbWVwLCAmU3RvcmFnZU5ldy0+cGluZ1Jlc3VsdHNMYXN0R29vZFByb2JlTGVuKSwgMTEpOwogCkBAIC01MzkwLDIwICs1NDI3LDIxIEBACiAKICAgICBwdXRjaGFyKCdcbicpOwogICAgIGZmbHVzaChzdGRvdXQpOwotICAgIHByaW50ZigiLS0tICVzIHBpbmcgc3RhdGlzdGljcyAtLS1cbiIsIGhvc3RuYW1lKTsKKyAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIi0tLSAlcyBwaW5nIHN0YXRpc3RpY3MgLS0tXG4iLCBob3N0bmFtZSkpOwogCiAgICAgaWYgKCpucmVwZWF0cykKLSAgICAgICAgcHJpbnRmKCIsICslbGQgZHVwbGljYXRlcyIsICpucmVwZWF0cyk7CisgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiLCArJWxkIGR1cGxpY2F0ZXMiLCAqbnJlcGVhdHMpKTsKICAgICBpZiAoKm5jaGVja3N1bSkKLSAgICAgICAgcHJpbnRmKCIsICslbGQgY29ycnVwdGVkIiwgKm5jaGVja3N1bSk7CisgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiLCArJWxkIGNvcnJ1cHRlZCIsICpuY2hlY2tzdW0pKTsKICAgICBpZiAoKm5lcnJvcnMpCi0gICAgICAgIHByaW50ZigiLCArJWxkIGVycm9ycyIsICpuZXJyb3JzKTsKKyAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICIsICslbGQgZXJyb3JzIiwgKm5lcnJvcnMpKTsKICAgICBpZiAoKm50cmFuc21pdHRlZCkgewotICAgICAgICBwcmludGYoIiwgJWQlJSBsb3NzIiwKLSAgICAgICAgICAgICAgIChpbnQpICgoKChsb25nIGxvbmcpICgoKm50cmFuc21pdHRlZCkgLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqbnJlY2VpdmVkKSkpICogMTAwKSAvCi0gICAgICAgICAgICAgICAgICAgICAgKCpudHJhbnNtaXR0ZWQpKSk7Ci0gICAgICAgIHByaW50ZigiLCB0aW1lICVsZG1zIiwgMTAwMCAqIHR2LnR2X3NlYyArIHR2LnR2X3VzZWMgLyAxMDAwKTsKKyAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICIsICVkJSUgbG9zcyIsCisgICAgICAgICAgICAgICAgICAgIChpbnQpICgoKChsb25nIGxvbmcpICgoKm50cmFuc21pdHRlZCkgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCpucmVjZWl2ZWQpKSkgKiAxMDApIC8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgqbnRyYW5zbWl0dGVkKSkpKTsKKyAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICIsIHRpbWUgJWxkbXMiLAorICAgICAgICAgICAgICAgICAgICAxMDAwICogdHYudHZfc2VjICsgdHYudHZfdXNlYyAvIDEwMDApKTsKICAgICB9CiAgICAgcHV0Y2hhcignXG4nKTsKIApAQCAtNTQxNCwyMSArNTQ1MiwyMyBAQAogICAgICAgICAoKnRzdW0yKSAvPSAoKm5yZWNlaXZlZCkgKyAoKm5yZXBlYXRzKTsKICAgICAgICAgdG1kZXYgPSBsbHNxcnQoKCp0c3VtMikgLSAoKnRzdW0pICogKCp0c3VtKSk7CiAKLSAgICAgICAgcHJpbnRmCi0gICAgICAgICAgICAoInJ0dCBtaW4vYXZnL21heC9tZGV2ID0gJWxkLiUwM2xkLyVsdS4lMDNsZC8lbGQuJTAzbGQvJWxkLiUwM2xkIG1zIiwKLSAgICAgICAgICAgICAoKnRtaW4pIC8gMTAwMCwgKCp0bWluKSAlIDEwMDAsCi0gICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpICgoKnRzdW0pIC8gMTAwMCksIChsb25nKSAoKCp0c3VtKSAlIDEwMDApLAotICAgICAgICAgICAgICgqdG1heCkgLyAxMDAwLCAoKnRtYXgpICUgMTAwMCwgdG1kZXYgLyAxMDAwLCB0bWRldiAlIDEwMDApOworICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgInJ0dCBtaW4vYXZnL21heC9tZGV2ID0gJWxkLiUwM2xkLyVsdS4lMDNsZCIKKyAgICAgICAgICAgICAgICAgICAgIi8lbGQuJTAzbGQvJWxkLiUwM2xkIG1zIiwKKyAgICAgICAgICAgICAgICAgICAgKCp0bWluKSAvIDEwMDAsICgqdG1pbikgJSAxMDAwLAorICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykgKCgqdHN1bSkgLyAxMDAwKSwgKGxvbmcpICgoKnRzdW0pICUgMTAwMCksCisgICAgICAgICAgICAgICAgICAgICgqdG1heCkgLyAxMDAwLCAoKnRtYXgpICUgMTAwMCwgdG1kZXYgLyAxMDAwLAorICAgICAgICAgICAgICAgICAgICB0bWRldiAlIDEwMDApKTsKICAgICB9CiAgICAgaWYgKCgqcGlwZXNpemUpID4gMSkKLSAgICAgICAgcHJpbnRmKCIsIHBpcGUgJWQiLCAqcGlwZXNpemUpOworICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIiwgcGlwZSAlZCIsICpwaXBlc2l6ZSkpOwogICAgIGlmICgoKm50cmFuc21pdHRlZCkgPiAxCiAgICAgICAgICYmICghaW50ZXJ2YWwgfHwgKG9wdGlvbnMgJiAoRl9GTE9PRCB8IEZfQURBUFRJVkUpKSkpIHsKICAgICAgICAgaW50ICAgICAgICAgICAgIGlwZyA9CiAgICAgICAgICAgICAoMTAwMDAwMCAqIChsb25nIGxvbmcpIHR2LnR2X3NlYyArCiAgICAgICAgICAgICAgdHYudHZfdXNlYykgLyAoKCpudHJhbnNtaXR0ZWQpIC0gMSk7Ci0gICAgICAgIHByaW50ZigiLCBpcGcvZXdtYSAlZC4lMDNkLyVkLiUwM2QgbXMiLCBpcGcgLyAxMDAwLCBpcGcgJSAxMDAwLAotICAgICAgICAgICAgICAgKCpydHQpIC8gODAwMCwgKCgqcnR0KSAvIDgpICUgMTAwMCk7CisgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiLCBpcGcvZXdtYSAlZC4lMDNkLyVkLiUwM2QgbXMiLAorICAgICAgICAgICAgICAgICAgICBpcGcgLyAxMDAwLCBpcGcgJSAxMDAwLAorICAgICAgICAgICAgICAgICAgICAoKnJ0dCkgLyA4MDAwLCAoKCpydHQpIC8gOCkgJSAxMDAwKSk7CiAgICAgfQogICAgIHB1dGNoYXIoJ1xuJyk7CiAgICAgcmV0dXJuOwpAQCAtNTQ1MSwxOSArNTQ5MSwxOSBAQAogICAgICAgICAgICAgKCgobG9uZyBsb25nKSAoKCpudHJhbnNtaXR0ZWQpIC0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqbnJlY2VpdmVkKSkpICogMTAwKSAvICgqbnRyYW5zbWl0dGVkKTsKIAotICAgIGZwcmludGYoc3RkZXJyLCAiXHIlbGQvJWxkIHBhY2tldHMsICVkJSUgbG9zcyIsICpudHJhbnNtaXR0ZWQsCi0gICAgICAgICAgICAqbnJlY2VpdmVkLCBsb3NzKTsKKyAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIlxuJWxkLyVsZCBwYWNrZXRzLCAlZCUlIGxvc3MiLCAqbnRyYW5zbWl0dGVkLAorICAgICAgICAgICAgICAgICpucmVjZWl2ZWQsIGxvc3MpKTsKIAogICAgIGlmICgoKm5yZWNlaXZlZCkgJiYgdGltaW5nKSB7CiAgICAgICAgIHRhdmcgPSAoKnRzdW0pIC8gKCgqbnJlY2VpdmVkKSArICgqbnJlcGVhdHMpKTsKIAotICAgICAgICBmcHJpbnRmKHN0ZGVyciwKLSAgICAgICAgICAgICAgICAiLCBtaW4vYXZnL2V3bWEvbWF4ID0gJWxkLiUwM2xkLyVsdS4lMDNsZC8lZC4lMDNkLyVsZC4lMDNsZCBtcyIsCi0gICAgICAgICAgICAgICAgKCp0bWluKSAvIDEwMDAsICgqdG1pbikgJSAxMDAwLCB0YXZnIC8gMTAwMCwgdGF2ZyAlIDEwMDAsCi0gICAgICAgICAgICAgICAgKCpydHQpIC8gODAwMCwgKCgqcnR0KSAvIDgpICUgMTAwMCwgKCp0bWF4KSAvIDEwMDAsCi0gICAgICAgICAgICAgICAgKCp0bWF4KSAlIDEwMDApOworICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIiwgbWluL2F2Zy9ld21hL21heCA9ICVsZC4lMDNsZC8lbHUuJTAzbGQiCisgICAgICAgICAgICAgICAgICAgICIvJWQuJTAzZC8lbGQuJTAzbGQgbXMiLAorICAgICAgICAgICAgICAgICAgICAoKnRtaW4pIC8gMTAwMCwgKCp0bWluKSAlIDEwMDAsIHRhdmcgLyAxMDAwLCB0YXZnICUgMTAwMCwKKyAgICAgICAgICAgICAgICAgICAgKCpydHQpIC8gODAwMCwgKCgqcnR0KSAvIDgpICUgMTAwMCwgKCp0bWF4KSAvIDEwMDAsCisgICAgICAgICAgICAgICAgICAgICgqdG1heCkgJSAxMDAwKSk7CiAgICAgfQotICAgIGZwcmludGYoc3RkZXJyLCAiXG4iKTsKKyAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIlxuIikpOwogfQogCiAKQEAgLTU1MjEsMTIgKzU1NjEsMTAgQEAKICAgICAgICAgaWYgKG9wdGlvbnMgJiBGX0ZMT09EKQogICAgICAgICAgICAgd3JpdGUoU1RET1VUX0ZJTEVOTywgIkUiLCAxKTsKICAgICAgICAgZWxzZSBpZiAoZS0+ZWVfZXJybm8gIT0gRU1TR1NJWkUpCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInBpbmc6IGxvY2FsIGVycm9yOiAlc1xuIiwKLSAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZS0+ZWVfZXJybm8pKTsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJwaW5nOiBsb2NhbCBlcnJvcjogJXNcbiIsIHN0cmVycm9yKGUtPmVlX2Vycm5vKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLAotICAgICAgICAgICAgICAgICAgICAicGluZzogbG9jYWwgZXJyb3I6IE1lc3NhZ2UgdG9vIGxvbmcsIG10dT0ldVxuIiwKLSAgICAgICAgICAgICAgICAgICAgZS0+ZWVfaW5mbyk7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAicGluZzogbG9jYWwgZXJyb3I6IE1lc3NhZ2UgdG9vIGxvbmcsIG10dT0ldVxuIiwKKyAgICAgICAgICAgICAgICAgICAgIGUtPmVlX2luZm8pOwogICAgICAgICAoKm5lcnJvcnMpKys7CiAgICAgfSBlbHNlIGlmIChlLT5lZV9vcmlnaW4gPT0gU09fRUVfT1JJR0lOX0lDTVA2KSB7CiAgICAgICAgIGlmIChyZXMgPCBzaXplb2YoaWNtcGgpIHx8CkBAIC01NjQ4LDcgKzU2ODYsNyBAQAogICAgIGljbXBoID0gKHN0cnVjdCBpY21wNl9oZHIgKikgYnVmOwogICAgIGlmIChjYyA8IDgpIHsKICAgICAgICAgaWYgKG9wdGlvbnMgJiBGX1ZFUkJPU0UpCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInBpbmc6IHBhY2tldCB0b28gc2hvcnQgKCVkIGJ5dGVzKVxuIiwgY2MpOworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInBpbmc6IHBhY2tldCB0b28gc2hvcnQgKCVkIGJ5dGVzKVxuIiwgY2MpOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAgICAgaWYgKGljbXBoLT5pY21wNl90eXBlID09IElDTVA2X0VDSE9fUkVQTFkpIHsKQEAgLTU3MDEsMTYgKzU3MzksMTcgQEAKICAgICAgICAgICAgICAgICB3cml0ZShTVERPVVRfRklMRU5PLCAiXGJFIiwgMik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBwcmludGYoIkZyb20gJXM6IGljbXBfc2VxPSV1ICIsCi0gICAgICAgICAgICAgICAgICAgcHJfYWRkcigmZnJvbS0+c2luNl9hZGRyLCBvcHRpb25zKSwKLSAgICAgICAgICAgICAgICAgICBpY21waDEtPmljbXA2X3NlcSk7CisgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIkZyb20gJXM6IGljbXBfc2VxPSV1ICIsCisgICAgICAgICAgICAgICAgICAgICAgICBwcl9hZGRyKCZmcm9tLT5zaW42X2FkZHIsIG9wdGlvbnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgaWNtcGgxLT5pY21wNl9zZXEpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBXZSd2ZSBnb3Qgc29tZXRoaW5nIG90aGVyIHRoYW4gYW4gRUNIT1JFUExZIAogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBpZiAoIShvcHRpb25zICYgRl9WRVJCT1NFKSB8fCB1aWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICBwcmludGYoIkZyb20gJXM6ICIsIHByX2FkZHIoJmZyb20tPnNpbjZfYWRkciwgb3B0aW9ucykpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICJGcm9tICVzOiAiLAorICAgICAgICAgICAgICAgICAgICAgICAgcHJfYWRkcigmZnJvbS0+c2luNl9hZGRyLCBvcHRpb25zKSkpOwogICAgICAgICB9CiAgICAgICAgIC8qIHByX2ljbXBoKGljbXBoLT5pY21wNl90eXBlLCBpY21waC0+aWNtcDZfY29kZSwgbnRvaGwoaWNtcGgtPmljbXA2X210dSkpOyAqLwogICAgIH0KQEAgLTU3NzUsOCArNTgxNCw4IEBACiAgICAgc3RydWN0IGhvc3RlbnQgKmhwID0gTlVMTDsKIAogICAgIGlmICghKG9wdGlvbnMgJiBGX05VTUVSSUMpKQotICAgICAgICBocCA9IGdldGhvc3RieWFkZHIoKF9fdTggKikgYWRkciwgc2l6ZW9mKHN0cnVjdCBpbjZfYWRkciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBBRl9JTkVUNik7CisgICAgICAgIGhwID0gbmV0c25tcF9nZXRob3N0YnlhZGRyKChfX3U4ICopIGFkZHIsIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBRl9JTkVUNik7CiAKICAgICByZXR1cm4gaHAgPyBocC0+aF9uYW1lIDogcHJfYWRkcl9uKGFkZHIpOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmggYi9hZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuaAppbmRleCBlYThkYTMxLi5jYTY5ZDEzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuaApAQCAtMjA2LDYgKzIwNiw3IEBACiAgKiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgCiAgKi8KIHZvaWQgICAgICAgICAgICBpbml0X3BpbmdDdGxUYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBzaHV0ZG93bl9waW5nQ3RsVGFibGUodm9pZCk7CiBGaW5kVmFyTWV0aG9kICAgdmFyX3BpbmdDdGxUYWJsZTsKIHZvaWQgICAgICAgICAgICBwYXJzZV9waW5nQ3RsVGFibGUoY29uc3QgY2hhciAqLCBjaGFyICopOwogU05NUENhbGxiYWNrICAgIHN0b3JlX3BpbmdDdGxUYWJsZTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvbmYuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvbmYuYwppbmRleCA0ZmI5ODUwLi4wY2JkYmM2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb25mLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29uZi5jCkBAIC00LDEyICs0LDE2IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPGN0eXBlLmg+CiAjaW5jbHVkZSAiZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5oIgogI2luY2x1ZGUgImRpc21hbi9zY2hlZHVsZS9zY2hlZENvbmYuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXF1ZXJ5KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoc3RyaW5nX3RpbWVfdG9fc2VjcykKKwogc3RhdGljIGludCBzY2hlZEVudHJpZXM7CiAKIC8qKiBJbml0aWFsaXplcyB0aGUgc2NoZWRDb25mIG1vZHVsZSAqLwpAQCAtNTEsNyArNTUsNyBAQAogewogICAgIG5ldHNubXBfdGRhdGFfcm93ICAgICAgICpyb3c7CiAgICAgc3RydWN0IHNjaGVkVGFibGVfZW50cnkgKmVudHJ5OwotICAgIGNoYXIgICBidWZbMjRdOworICAgIGNoYXIgICBidWZbMjRdLCB0bXBidWZbU1BSSU5UX01BWF9MRU5dOwogICAgIGxvbmcgICBmcmVxdWVuY3k7CiAgICAgbG9uZyAgIHZhbHVlOwogICAgIHNpemVfdCB0bXBpbnQ7CkBAIC02NSw3ICs2OSwxMyBAQAogICAgIC8qCiAgICAgICogIFBhcnNlIHRoZSBjb25maWd1cmUgZGlyZWN0aXZlIGxpbmUKICAgICAgKi8KLSAgICBsaW5lID0gcmVhZF9jb25maWdfcmVhZF9kYXRhKEFTTl9JTlRFR0VSLCAgIGxpbmUsICZmcmVxdWVuY3ksICZ0bXBpbnQpOworICAgIGxpbmUgPSBjb3B5X253b3JkKGxpbmUsIHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZikpOworICAgIGZyZXF1ZW5jeSA9IG5ldHNubXBfc3RyaW5nX3RpbWVfdG9fc2Vjcyh0bXBidWYpOworICAgIGlmIChmcmVxdWVuY3kgPT0gLTEpIHsKKyAgICAgICAgY29uZmlnX3BlcnJvcigiSWxsZWdhbCBmcmVxdWVuY3kgc3BlY2lmaWVkIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBsaW5lID0gcmVhZF9jb25maWdfcmVhZF9kYXRhKEFTTl9PQkpFQ1RfSUQsIGxpbmUsICZ2YXJfcHRyLCAgICZ2YXJfbGVuKTsKICAgICBpZiAodmFyX2xlbiA9PSAwKSB7CiAgICAgICAgIGNvbmZpZ19wZXJyb3IoImludmFsaWQgc3BlY2lmaWNhdGlvbiBmb3Igc2NoZWRWYXJpYWJsZSIpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5jCmluZGV4IGM5MTQ3NjkuLmMzZGIzNGYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvcmUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb3JlLmMKQEAgLTQsMTEgKzQsMTYgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAiZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5oIgogI2luY2x1ZGUgInV0aWxpdGllcy9pcXVlcnkuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXF1ZXJ5KQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc2NoZWRfbmV4dHJvd3RpbWUsIG5ldHNubXBfdW51c2VkKQorCiBuZXRzbm1wX3RkYXRhICpzY2hlZHVsZV90YWJsZTsKIAogCkBAIC0yOTcsMTUgKzMwMiwxNCBAQAogICAgICAgICAgICAgIGVudHJ5LT5zY2hlZE5leHRSdW4gPSBub3cgKyBlbnRyeS0+c2NoZWRJbnRlcnZhbDsKICAgICAgICAgfQogICAgICAgICBERUJVR01TR1RMKCgiZGlzbWFuOnNjaGVkdWxlOnRpbWUiLCAicGVyaW9kaWM6ICglbGQpICVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c2NoZWROZXh0UnVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RpbWUoJmVudHJ5LT5zY2hlZE5leHRSdW4pKSk7CisgICAgICAgICAgICAgICAgICAgIChsb25nKSBlbnRyeS0+c2NoZWROZXh0UnVuLCBjdGltZSgmZW50cnktPnNjaGVkTmV4dFJ1bikpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNDSEVEX1RZUEVfT05FU0hPVDoKICAgICAgICAgaWYgKCBlbnRyeS0+c2NoZWRMYXN0UnVuICkgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoImRpc21hbjpzY2hlZHVsZTp0aW1lIiwgIm9uZS1zaG90OiBleHBpcmVkICglbGQpICVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c2NoZWROZXh0UnVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RpbWUoJmVudHJ5LT5zY2hlZE5leHRSdW4pKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykgZW50cnktPnNjaGVkTmV4dFJ1biwKKyAgICAgICAgICAgICAgICAgICAgICAgIGN0aW1lKCZlbnRyeS0+c2NoZWROZXh0UnVuKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8qIEZhbGx0aHJvdWdoICovCkBAIC0zNDIsOCArMzQ2LDggQEAKICAgICAgICAgICogICAgdGhlIGZpcnN0IHNwZWNpZmllZCBkYXkgKGluIHRoYXQgbW9udGgpCiAgICAgICAgICAqLwogCi0gICAgICAgIGxvY2FsdGltZV9yKCAmbm93LCAmbm93X3RtICk7Ci0gICAgICAgIGxvY2FsdGltZV9yKCAmbm93LCAmbmV4dF90bSApOworICAgICAgICAodm9pZCkgbG9jYWx0aW1lX3IoICZub3csICZub3dfdG0gKTsKKyAgICAgICAgKHZvaWQpIGxvY2FsdGltZV9yKCAmbm93LCAmbmV4dF90bSApOwogCiAgICAgICAgIG5leHRfdG0udG1fbW9uPS0xOwogICAgICAgICBuZXh0X3RtLnRtX21kYXk9LTE7CkBAIC00MjAsOCArNDI0LDcgQEAKICAgICAgICAgICovCiAgICAgICAgIGVudHJ5LT5zY2hlZE5leHRSdW4gPSBta3RpbWUoICZuZXh0X3RtICk7CiAgICAgICAgIERFQlVHTVNHVEwoKCJkaXNtYW46c2NoZWR1bGU6dGltZSIsICJjYWxlbmRhcjogKCVsZCkgJXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zY2hlZE5leHRSdW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjdGltZSgmZW50cnktPnNjaGVkTmV4dFJ1bikpKTsKKyAgICAgICAgICAgICAgICAgICAgKGxvbmcpIGVudHJ5LT5zY2hlZE5leHRSdW4sIGN0aW1lKCZlbnRyeS0+c2NoZWROZXh0UnVuKSkpOwogICAgICAgICByZXR1cm47CiAKICAgICBkZWZhdWx0OgpAQCAtNDM1LDExICs0MzgsMTMgQEAKICAgICByZXR1cm47CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TQ0hFRF9ORVhUUk9XVElNRQogdm9pZAogc2NoZWRfbmV4dFJvd1RpbWUoIG5ldHNubXBfdGRhdGFfcm93ICpyb3cgKQogewogICAgIHNjaGVkX25leHRUaW1lKChzdHJ1Y3Qgc2NoZWRUYWJsZV9lbnRyeSAqKSByb3ctPmRhdGEgKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NDSEVEX05FWFRST1dUSU1FICovCiAKIC8qCiAgKiBjcmVhdGUgYSBuZXcgcm93IGluIHRoZSB0YWJsZSAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRUYWJsZS5jCmluZGV4IGQ4ODYzZmQuLmJiYTQ4ZmQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZFRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuYwpAQCAtNywxMiArNywyNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJ1dGlsaXRpZXMvaXF1ZXJ5LmgiCiAjaW5jbHVkZSAiZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5oIgogI2luY2x1ZGUgImRpc21hbi9zY2hlZHVsZS9zY2hlZFRhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGlxdWVyeSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGlxdWVyeV9wZHVfc2Vzc2lvbikKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZGF0ZV9uX3RpbWUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl91aW50KQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfb2lkKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHJ1dGh2YWx1ZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhX2luc2VydF9yb3cpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKK3N0YXRpYyBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOworCiAvKiogSW5pdGlhbGl6ZXMgdGhlIHNjaGVkVGFibGUgbW9kdWxlICovCiB2b2lkCiBpbml0X3NjaGVkVGFibGUodm9pZCkKQEAgLTIwLDcgKzM1LDYgQEAKICAgICBzdGF0aWMgb2lkICAgICAgc2NoZWRUYWJsZV9vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgNjMsIDEsIDIgfTsKICAgICBzaXplX3QgICAgICAgICAgc2NoZWRUYWJsZV9vaWRfbGVuID0gT0lEX0xFTkdUSChzY2hlZFRhYmxlX29pZCk7CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnOwotICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKICAgICBERUJVR01TR1RMKCgiZGlzbWFuOnNjaGVkdWxlOmluaXQiLCAiSW5pdGlhbGl6aW5nIHRhYmxlXG4iKSk7CiAgICAgLyoKQEAgLTQ4LDYgKzYyLDE0IEBACiAgICAgbmV0c25tcF90ZGF0YV9yZWdpc3RlcihyZWcsIHNjaGVkdWxlX3RhYmxlLCB0YWJsZV9pbmZvKTsKIH0KIAordm9pZAorc2h1dGRvd25fc2NoZWRUYWJsZSh2b2lkKQoreworICAgIGlmICh0YWJsZV9pbmZvKSB7CisJbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCXRhYmxlX2luZm8gPSBOVUxMOworICAgIH0KK30KIAogLyoqIGhhbmRsZXMgcmVxdWVzdHMgZm9yIHRoZSBzY2hlZFRhYmxlIHRhYmxlICovCiBpbnQKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZFRhYmxlLmggYi9hZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRUYWJsZS5oCmluZGV4IGVmZDFmMmUuLjUyMDMzYmEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZFRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuaApAQCAtOCw2ICs4LDcgQEAKICAqIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAKICAqLwogdm9pZCAgICAgICAgICAgIGluaXRfc2NoZWRUYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBzaHV0ZG93bl9zY2hlZFRhYmxlKHZvaWQpOwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgc2NoZWRUYWJsZV9oYW5kbGVyOwogCiAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYwppbmRleCA2Y2M5NTcxLi4wNDE0M2ViIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYwpAQCAtMTgsMTAgKzE4LDE1IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAjaW5jbHVkZSA8bWF0aC5oPgogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaGVhZGVyX2NvbXBsZXhfZmluZF9lbnRyeSkKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogI2luY2x1ZGUgInRyYWNlUm91dGVDdGxUYWJsZS5oIgogI2luY2x1ZGUgInRyYWNlUm91dGVSZXN1bHRzVGFibGUuaCIKICNpbmNsdWRlICJ0cmFjZVJvdXRlUHJvYmVIaXN0b3J5VGFibGUuaCIKQEAgLTE2OTUsOCArMTcwMCw2IEBACiAgICAgICAgICAqIEJhY2sgb3V0IGFueSBjaGFuZ2VzIG1hZGUgaW4gdGhlIEFDVElPTiBjYXNlIAogICAgICAgICAgKi8KICAgICAgICAgU05NUF9GUkVFKFN0b3JhZ2VUbXAtPnRyYWNlUm91dGVDdGxUYXJnZXRBZGRyZXNzKTsKLSAgICAgICAgU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZUN0bFRhcmdldEFkZHJlc3MgPSBOVUxMOwotCiAgICAgICAgIFN0b3JhZ2VUbXAtPnRyYWNlUm91dGVDdGxUYXJnZXRBZGRyZXNzID0gdG1wdmFyOwogICAgICAgICBTdG9yYWdlVG1wLT50cmFjZVJvdXRlQ3RsVGFyZ2V0QWRkcmVzc0xlbiA9IHRtcGxlbjsKICAgICAgICAgYnJlYWs7CkBAIC0yNDY5LDcgKzI0NzIsNiBAQAogICAgICAgICAgKiBCYWNrIG91dCBhbnkgY2hhbmdlcyBtYWRlIGluIHRoZSBBQ1RJT04gY2FzZSAKICAgICAgICAgICovCiAgICAgICAgIFNOTVBfRlJFRShTdG9yYWdlVG1wLT50cmFjZVJvdXRlQ3RsU291cmNlQWRkcmVzcyk7Ci0gICAgICAgIFN0b3JhZ2VUbXAtPnRyYWNlUm91dGVDdGxTb3VyY2VBZGRyZXNzID0gTlVMTDsKICAgICAgICAgU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZUN0bFNvdXJjZUFkZHJlc3MgPSB0bXB2YXI7CiAgICAgICAgIFN0b3JhZ2VUbXAtPnRyYWNlUm91dGVDdGxTb3VyY2VBZGRyZXNzTGVuID0gdG1wbGVuOwogICAgICAgICBicmVhazsKQEAgLTI2NTEsNyArMjY1Myw2IEBACiAgICAgICAgICAqIEJhY2sgb3V0IGFueSBjaGFuZ2VzIG1hZGUgaW4gdGhlIEFDVElPTiBjYXNlIAogICAgICAgICAgKi8KICAgICAgICAgU05NUF9GUkVFKFN0b3JhZ2VUbXAtPnRyYWNlUm91dGVDdGxNaXNjT3B0aW9ucyk7Ci0gICAgICAgIFN0b3JhZ2VUbXAtPnRyYWNlUm91dGVDdGxNaXNjT3B0aW9ucyA9IE5VTEw7CiAgICAgICAgIFN0b3JhZ2VUbXAtPnRyYWNlUm91dGVDdGxNaXNjT3B0aW9ucyA9IHRtcHZhcjsKICAgICAgICAgU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZUN0bE1pc2NPcHRpb25zTGVuID0gdG1wbGVuOwogICAgICAgICBicmVhazsKQEAgLTMzMDEsNyArMzMwMiw2IEBACiAgICAgICAgICAqIEJhY2sgb3V0IGFueSBjaGFuZ2VzIG1hZGUgaW4gdGhlIEFDVElPTiBjYXNlIAogICAgICAgICAgKi8KICAgICAgICAgU05NUF9GUkVFKFN0b3JhZ2VUbXAtPnRyYWNlUm91dGVDdGxEZXNjcik7Ci0gICAgICAgIFN0b3JhZ2VUbXAtPnRyYWNlUm91dGVDdGxEZXNjciA9IE5VTEw7CiAgICAgICAgIFN0b3JhZ2VUbXAtPnRyYWNlUm91dGVDdGxEZXNjciA9IHRtcHZhcjsKICAgICAgICAgU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZUN0bERlc2NyTGVuID0gdG1wbGVuOwogICAgICAgICBicmVhazsKQEAgLTM0ODQsNyArMzQ4NCw2IEBACiAgICAgICAgICAqIEJhY2sgb3V0IGFueSBjaGFuZ2VzIG1hZGUgaW4gdGhlIEFDVElPTiBjYXNlIAogICAgICAgICAgKi8KICAgICAgICAgU05NUF9GUkVFKFN0b3JhZ2VUbXAtPnRyYWNlUm91dGVDdGxUcmFwR2VuZXJhdGlvbik7Ci0gICAgICAgIFN0b3JhZ2VUbXAtPnRyYWNlUm91dGVDdGxUcmFwR2VuZXJhdGlvbiA9IE5VTEw7CiAgICAgICAgIFN0b3JhZ2VUbXAtPnRyYWNlUm91dGVDdGxUcmFwR2VuZXJhdGlvbiA9IHRtcHZhcjsKICAgICAgICAgU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZUN0bFRyYXBHZW5lcmF0aW9uTGVuID0gdG1wbGVuOwogICAgICAgICBicmVhazsKQEAgLTM2NjAsNyArMzY1OSw2IEBACiAgICAgICAgICAqIEJhY2sgb3V0IGFueSBjaGFuZ2VzIG1hZGUgaW4gdGhlIEFDVElPTiBjYXNlIAogICAgICAgICAgKi8KICAgICAgICAgU05NUF9GUkVFKFN0b3JhZ2VUbXAtPnRyYWNlUm91dGVDdGxUeXBlKTsKLSAgICAgICAgU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZUN0bFR5cGUgPSBOVUxMOwogICAgICAgICBTdG9yYWdlVG1wLT50cmFjZVJvdXRlQ3RsVHlwZSA9IHRtcHZhcjsKICAgICAgICAgU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZUN0bFR5cGVMZW4gPSB0bXBsZW47CiAgICAgICAgIGJyZWFrOwpAQCAtNTk3NSw3ICs1OTczLDcgQEAKICAgICAgICAgcmV0dXJuIChoaSk7CiAgICAgfQogCi0gICAgaHAgPSBnZXRob3N0YnluYW1lKGhvc3RuYW1lKTsKKyAgICBocCA9IG5ldHNubXBfZ2V0aG9zdGJ5bmFtZShob3N0bmFtZSk7CiAgICAgaWYgKGhwID09IE5VTEwpIHsKICAgICAgICAgRnByaW50ZihzdGRlcnIsICIlczogdW5rbm93biBob3N0ICVzXG4iLCAidHJhY2Vyb3V0ZSIsIGhvc3RuYW1lKTsKICAgICAgICAgcHJpbnRmKCJocD1OVUxMXG4iKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVSZXN1bHRzVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVSZXN1bHRzVGFibGUuYwppbmRleCAxOWU3M2I2Li5hYmE2Y2YxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZS5jCkBAIC0xOCw2ICsxOCw4IEBACiAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKICNpZiBIQVZFX1NURExJQl9ICiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjZW5kaWYKQEAgLTQwLDYgKzQyLDggQEAKICNpbmNsdWRlICJ0cmFjZVJvdXRlSG9wc1RhYmxlLmgiCiAjaW5jbHVkZSAiaGVhZGVyX2NvbXBsZXguaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfZGF0YXNldCkKKwogLyoKICAqdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZV92YXJpYWJsZXNfb2lkOgogICoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZGF0YV9hY2Nlc3MvZG90M3N0YXRzX2xpbnV4LmMgYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0c19saW51eC5jCmluZGV4IGVmODM0NTAuLjZlYjY5ZjcgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZGF0YV9hY2Nlc3MvZG90M3N0YXRzX2xpbnV4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kYXRhX2FjY2Vzcy9kb3Qzc3RhdHNfbGludXguYwpAQCAtMzksNyArMzksOCBAQAogICAgIGZvciAocCA9IGFkZHJzOyBwOyBwID0gcC0+aWZhX25leHQpIHsKIAogICAgICAgICBpZiAoIWxpc3RfaGVhZCkgewotICAgICAgICAgICAgaWYgKCAobGlzdF9oZWFkID0gKHN0cnVjdCBpZm5hbWUgKikgbWFsbG9jIChzaXplb2Yoc3RydWN0IGlmbmFtZSkpKSA8IDApIHsKKyAgICAgICAgICAgIGxpc3RfaGVhZCA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IGlmbmFtZSkpOworICAgICAgICAgICAgaWYgKCFsaXN0X2hlYWQpIHsKICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlOmludGVyZmFjZV9uYW1lX2xpc3RfZ2V0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkXG4iKSk7CiAgICAgICAgICAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJhY2Nlc3M6ZG90M1N0YXRzVGFibGUsaW50ZXJmYWNlX25hbWVfbGlzdF9nZXQsIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZFxuIik7CkBAIC01OSw3ICs2MCw4IEBACiAgICAgICAgIGlmIChuYW1lcHRyMSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmICggKG5hbWVwdHIyLT5pZm5fbmV4dCA9IChzdHJ1Y3QgaWZuYW1lICopIG1hbGxvYyAoc2l6ZW9mKHN0cnVjdCBpZm5hbWUpKSkgPCAwKSB7CisgICAgICAgIG5hbWVwdHIyLT5pZm5fbmV4dCA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IGlmbmFtZSkpOworICAgICAgICBpZiAoIW5hbWVwdHIyLT5pZm5fbmV4dCkgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2Vzczpkb3QzU3RhdHNUYWJsZTppbnRlcmZhY2VfbmFtZV9saXN0X2dldCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkXG4iKSk7CiAgICAgICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2Vzczpkb3QzU3RhdHNUYWJsZSxpbnRlcmZhY2VfbmFtZV9saXN0X2dldCwgbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkXG4iKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfaW50ZXJmYWNlLmMgYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2ludGVyZmFjZS5jCmluZGV4IDc0MzQyNGEuLmUwNzQxZjMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9pbnRlcmZhY2UuYwpAQCAtMzEsNiArMzEsNyBAQAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKIC8qCkBAIC00Niw2ICs0NywxMCBAQAogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX2FsbF9yZXF1ZXN0c19lcnJvcikKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9leGFtcGxlcy9kYXRhX3NldC5jIGIvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZGF0YV9zZXQuYwppbmRleCBkYWVkOGYzLi5jYzZhMDRhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9leGFtcGxlcy9kYXRhX3NldC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RhdGFfc2V0LmMKQEAgLTY1LDggKzY1LDE4IEBACiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfc2V0X211bHRpX2FkZF9kZWZhdWx0X3JvdykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHVucmVnaXN0ZXJfYXV0b19kYXRhX3RhYmxlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZGVsZXRlX3RhYmxlX2RhdGFfc2V0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfZGF0YXNldCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3NldF9tdWx0aV9hZGRfZGVmYXVsdF9yb3cpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV9kYXRhc2V0X3VucmVnaXN0ZXJfYXV0b19kYXRhX3RhYmxlKQorCitzdGF0aWMgbmV0c25tcF90YWJsZV9kYXRhX3NldCAqdGFibGVfc2V0OworCiAvKgogICogb3VyIGluaXRpYWxpemF0aW9uIHJvdXRpbmUsIGF1dG9tYXRpY2FsbHkgY2FsbGVkIGJ5IHRoZSBhZ2VudCAKICAqLwpAQCAtNzYsNyArODYsNiBAQAogdm9pZAogaW5pdF9kYXRhX3NldCh2b2lkKQogewotICAgIG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKnRhYmxlX3NldDsKICAgICBuZXRzbm1wX3RhYmxlX3JvdyAqcm93OwogCiAgICAgLyoKQEAgLTIwNCwzICsyMTMsMTEgQEAKIAogICAgIERFQlVHTVNHVEwoKCJleGFtcGxlX2RhdGFfc2V0IiwgIkRvbmUgaW5pdGlhbGl6aW5nLlxuIikpOwogfQorCit2b2lkCitzaHV0ZG93bl9kYXRhX3NldCh2b2lkKQoreworICAgIG5ldHNubXBfdW5yZWdpc3Rlcl9hdXRvX2RhdGFfdGFibGUodGFibGVfc2V0LCBOVUxMKTsKKyAgICBuZXRzbm1wX2RlbGV0ZV90YWJsZV9kYXRhX3NldCh0YWJsZV9zZXQpOworICAgIHRhYmxlX3NldCA9IE5VTEw7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9leGFtcGxlcy9kYXRhX3NldC5oIGIvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZGF0YV9zZXQuaAppbmRleCBlNTZmNjAwLi5jOWNmOGIyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9leGFtcGxlcy9kYXRhX3NldC5oCisrKyBiL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RhdGFfc2V0LmgKQEAgLTYsNiArNiw3IEBACiAjZW5kaWYKIAogdm9pZCAgICAgICAgICAgIGluaXRfZGF0YV9zZXQodm9pZCk7Cit2b2lkICAgICAgICAgICAgc2h1dGRvd25fZGF0YV9zZXQodm9pZCk7CiAKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmMgYi9hZ2VudC9taWJncm91cC9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmMKaW5kZXggNDVlZjk5My4uZWE1OTUwMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UuYwpAQCAtMTcyLDYgKzE3Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoZGVsYXlfdGltZSkpOwogICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgICAgICAvKgogICAgICAgICAgKiBjaGVjayB0eXBlIApAQCAtMjQ3LDYgKzI0OCw3IEBACiAgICAgICAgICAqIHdlIGRvbid0IGhhdmUgYW55dGhpbmcgdG8gYWN0dWFsbHkgZG8gaGVyZSAKICAgICAgICAgICovCiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KIAogICAgIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUuYwppbmRleCAzYTFhNDI4Li5mMmFhMGM3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmMKQEAgLTQsMTIgKzQsMTcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAibmV0U25tcEhvc3RzVGFibGUuaCIKICNpbmNsdWRlICJuZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5oIgogI2luY2x1ZGUgIm5ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShvaWRfc3Rhc2gpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShvaWRfc3Rhc2hfZ2V0X2RhdGEpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShvaWRfc3Rhc2hfYWRkX2RhdGEpCisKIHN0YXRpYyBuZXRzbm1wX29pZF9zdGFzaF9ub2RlICp1bmRvU3RvcmFnZSA9IE5VTEw7CiBzdGF0aWMgbmV0c25tcF9vaWRfc3Rhc2hfbm9kZSAqY29tbWl0U3RvcmFnZSA9IE5VTEw7CiAKQEAgLTkyLDcgKzk3LDcgQEAKICAgICAgKi8KICAgICBERUJVR01TR1RMKCgiaW5pdGlhbGl6ZV90YWJsZV9uZXRTbm1wSG9zdHNUYWJsZSIsCiAgICAgICAgICAgICAgICAgIlJlZ2lzdGVyaW5nIHRhYmxlIG5ldFNubXBIb3N0c1RhYmxlIGFzIGEgdGFibGUgaXRlcmF0b3JcbiIpKTsKLSAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yKG15X2hhbmRsZXIsIGlpbmZvKTsKKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yMihteV9oYW5kbGVyLCBpaW5mbyk7CiB9CiAKIC8qKiBJbml0aWFsaXplcyB0aGUgbmV0U25tcEhvc3RzVGFibGUgbW9kdWxlICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5jIGIvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMuYwppbmRleCA0Y2I5MzM5Li4yNWE3MzMwIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmMKQEAgLTE0LDExICsxNCwxNCBAQAogICogc3RhbmRhcmQgaGVhZGVycyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJuZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5oIgogI2luY2x1ZGUgIm5ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmgiCiAjaW5jbHVkZSAibmV0U25tcEhvc3RzVGFibGVfZW51bXMuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfc3RvcmFnZV90cmFuc2l0aW9uKQorCiAvKiogRGVjaWRlcyBpZiBhbiBpbmNvbWluZyB2YWx1ZSBmb3IgdGhlIG5ldFNubXBIb3N0QWRkcmVzc1R5cGUgbWliIG5vZGUgaXMgbGVnYWwuCiAgKiAgQHBhcmFtIHR5cGUgICAgVGhlIGluY29taW5nIGRhdGEgdHlwZS4KICAqICBAcGFyYW0gdmFsICAgICBUaGUgdmFsdWUgdG8gYmUgY2hlY2tlZC4KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL3NjYWxhcl9pbnQuYyBiL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL3NjYWxhcl9pbnQuYwppbmRleCA0MzgwZmNlLi5kYjRkMjk1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9leGFtcGxlcy9zY2FsYXJfaW50LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvc2NhbGFyX2ludC5jCkBAIC0yMywxMyArMjMsMjAgQEAKICAqIHN0YXJ0IGJlIGluY2x1ZGluZyB0aGUgYXBwcm9wcmlhdGUgaGVhZGVyIGZpbGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKIC8qCisgKiBpZiAtLWVuYWJsZS1taW5pbWFsaXN0IGhhcyBiZWVuIHR1cm5lZCBvbiwgd2UgbmVlZCB0byByZWdpc3RlcgorICogdGhlIHN1cHBvcnQgd2UgbmVlZCBzbyB0aGUgbmVlZGVkIGZ1bmN0aW9ucyBhcmVuJ3QgcmVtb3ZlZCBhdCBjb21waWxlIHRpbWUKKyAqLworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUobG9uZ19pbnN0YW5jZSkKKworLyoKICAqIFRoZW4sIHdlIGRlY2xhcmUgdGhlIHZhcmlhYmxlcyB3ZSB3YW50IHRvIGJlIGFjY2Vzc2VkIAogICovCi1zdGF0aWMgbG9uZyAgICAgIGV4YW1wbGUxID0gNDI7ICAvKiBkZWZhdWx0IHZhbHVlICovCitzdGF0aWMgbG9uZyAgICAgZXhhbXBsZTEgPSA0MjsgIC8qIGRlZmF1bHQgdmFsdWUgKi8KIAogLyoKICAqIG91ciBpbml0aWFsaXphdGlvbiByb3V0aW5lLCBhdXRvbWF0aWNhbGx5IGNhbGxlZCBieSB0aGUgYWdlbnQgCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1LmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1LmMKaW5kZXggMmI2ODY4ZS4uMjc3MjAwMSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHUuYwpAQCAtMSw4ICsxLDE2IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvY3B1Lmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihoYXJkd2FyZV9jcHUsIGxpYm5ldHNubXBtaWJzKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaGFyZHdhcmVfY3B1X2NvcHlfc3RhdHMsIGhhcmR3YXJlX2NwdSkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihoYXJkd2FyZV9jcHVfbG9hZCwgaGFyZHdhcmVfY3B1KQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGhhcmR3YXJlX2NwdV9nZXRfY2FjaGUsIGhhcmR3YXJlX2NwdSkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihoYXJkd2FyZV9jcHVfZ2V0X2J5TmFtZSwgaGFyZHdhcmVfY3B1KQorCiBleHRlcm4gTmV0c25tcENhY2hlTG9hZCBuZXRzbm1wX2NwdV9hcmNoX2xvYWQ7CiBzdGF0aWMgdm9pZCBfY3B1X3VwZGF0ZV9zdGF0cyggdW5zaWduZWQgaW50LCB2b2lkKiApOwogCkBAIC0xMDcsMTQgKzExNSwxNCBAQAogICAgICAgICAgICAgcmV0dXJuIGNwdTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoY3B1KQotICAgICAgICBTTk1QX0ZSRUUoY3B1KTsgLyoganVzdCBpbiBjYXNlICovCisgICAgU05NUF9GUkVFKGNwdSk7IC8qIGp1c3QgaW4gY2FzZSAqLwogICAgIHJldHVybiBOVUxMOyAgLyogU2hvdWxkbid0IGhhcHBlbiEgKi8KIH0KIAogICAgIC8qCiAgICAgICogV29yayB3aXRoIGEgbGlzdCBvZiBDUFUgZW50cmllcywgaW5kZXhlZCBieSBuYW1lCiAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSEFSRFdBUkVfQ1BVX0dFVF9CWU5BTUUKIG5ldHNubXBfY3B1X2luZm8gKm5ldHNubXBfY3B1X2dldF9ieU5hbWUoIGNoYXIgKm5hbWUsIGludCBjcmVhdGUgKSB7CiAgICAgbmV0c25tcF9jcHVfaW5mbyAqY3B1OwogCkBAIC0xNTIsMTEgKzE2MCwxNSBAQAogICAgIH0KICAgICByZXR1cm4gY3B1OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSEFSRFdBUkVfQ1BVX0dFVF9CWU5BTUUgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0hBUkRXQVJFX0NQVV9HRVRfQ0FDSEUKIG5ldHNubXBfY2FjaGUgKm5ldHNubXBfY3B1X2dldF9jYWNoZSggdm9pZCApIHsKICAgICByZXR1cm4gX2NwdV9jYWNoZTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0hBUkRXQVJFX0NQVV9HRVRfQ0FDSEUgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0hBUkRXQVJFX0NQVV9MT0FECiBpbnQgbmV0c25tcF9jcHVfbG9hZCggdm9pZCApIHsKICAgICAgICAgLyoKICAgICAgICAgICogSWYgd2UncmUgYXV0b21hdGljYWxseSB1cGRhdGluZyB0aGUgc3RhdHMgcmVndWxhcmx5LApAQCAtMTY1LDYgKzE3Nyw3IEBACiAgICAgcmV0dXJuICggX2NwdUF1dG9VcGRhdGUgPyAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBuZXRzbm1wX2NhY2hlX2NoZWNrX2FuZF9yZWxvYWQoIF9jcHVfY2FjaGUgKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9IQVJEV0FSRV9DUFVfTE9BRCAqLwogCiAgICAgLyoKICAgICAgKiBDYWxsIHRoZSBzeXN0ZW0tc3BlY2lmaWMgbG9hZCByb3V0aW5lIHJlZ3VsYXJseSwKQEAgLTIyMCwxMCArMjMzLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHUtPndhaXRfdGlja3MgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1LT5rZXJuX3RpY2tzICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdS0+aW50cnB0X3RpY2tzICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdS0+c2lycV90aWNrczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdS0+c2lycV90aWNrcyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHUtPnN0ZWFsX3RpY2tzICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdS0+Z3Vlc3RfdGlja3MgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1LT5ndWVzdG5pY2VfdGlja3M7CiAgICAgfQogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSEFSRFdBUkVfQ1BVX0NPUFlfU1RBVFMKIHZvaWQgX2NwdV9jb3B5X3N0YXRzKCBuZXRzbm1wX2NwdV9pbmZvICpjcHUgKQogewogICAgIG5ldHNubXBfY3B1X2luZm8gKmNwdTI7CkBAIC0yNDMsNiArMjYwLDkgQEAKICAgICBjcHUyLT5rZXJuX3RpY2tzID0gY3B1LT5rZXJuX3RpY2tzOwogICAgIGNwdTItPmludHJwdF90aWNrcyA9IGNwdS0+aW50cnB0X3RpY2tzOwogICAgIGNwdTItPnNpcnFfdGlja3MgPSBjcHUtPnNpcnFfdGlja3M7CisgICAgY3B1Mi0+c3RlYWxfdGlja3MgPSBjcHUtPnN0ZWFsX3RpY2tzOworICAgIGNwdTItPmd1ZXN0X3RpY2tzID0gY3B1LT5ndWVzdF90aWNrczsKKyAgICBjcHUyLT5ndWVzdG5pY2VfdGlja3MgPSBjcHUtPmd1ZXN0bmljZV90aWNrczsKIAogICAgIGNwdTItPm5JbnRlcnJ1cHRzICA9IGNwdS0+bkludGVycnVwdHM7CiAgICAgY3B1Mi0+bkN0eFN3aXRjaGVzID0gY3B1LT5uQ3R4U3dpdGNoZXM7CkBAIC0yNTEsMyArMjcxLDQgQEAKICAgICBjcHUyLT5wYWdlSW4gICAgID0gY3B1LT5wYWdlSW47CiAgICAgY3B1Mi0+cGFnZU91dCAgICA9IGNwdS0+cGFnZU91dDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0hBUkRXQVJFX0NQVV9DT1BZX1NUQVRTICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2tpbmZvLmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2tpbmZvLmMKaW5kZXggZmFjYmM3Yi4uMzdjZjg0NyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9raW5mby5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfa2luZm8uYwpAQCAtMiw2ICsyLDcgQEAKICAqICBEcmFnb25GbHkga2luZm8gaW50ZXJmYWNlCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9jcHUuaD4KQEAgLTEzLDYgKzE0LDcgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGhhcmR3YXJlX2NwdV9jb3B5X3N0YXRzKQogdm9pZCBfY3B1X2NvcHlfc3RhdHMoIG5ldHNubXBfY3B1X2luZm8gKmNwdSApOwogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbGludXguYyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbGludXguYwppbmRleCA4MTYzNGI1Li44YTA4MWNkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2xpbnV4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9saW51eC5jCkBAIC05OSwxMSArOTksMTIgQEAKICAgICBzdGF0aWMgY2hhciAqYnVmZiAgPSBOVUxMOwogICAgIHN0YXRpYyBpbnQgICBic2l6ZSA9IDA7CiAgICAgc3RhdGljIGludCAgIGZpcnN0ID0gMTsKLSAgICBzdGF0aWMgaW50ICAgaGFzX2NwdV8yNiA9IDE7CisgICAgc3RhdGljIGludCAgIG51bV9jcHVsaW5lX2VsZW0gPSAwOwogICAgIGludCAgICAgICAgICBieXRlc19yZWFkLCBzdGF0ZmQsIGk7CiAgICAgY2hhciAgICAgICAgKmIxLCAqYjI7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGN1c2VsbCA9IDAsIGNpY2VsbCA9IDAsIGNzeXNsbCA9IDAsIGNpZGVsbCA9IDAsCi0gICAgICAgICAgICAgICAgICAgICAgIGNpb3dsbCA9IDAsIGNpcnFsbCA9IDAsIGNzb2Z0bGwgPSAwOworICAgICAgICAgICAgICAgICAgICAgICBjaW93bGwgPSAwLCBjaXJxbGwgPSAwLCBjc29mdGxsID0gMCwgY3N0ZWFsbGwgPSAwLAorICAgICAgICAgICAgICAgICAgICAgICBjZ3Vlc3RsbCA9IDAsIGNndWVzdF9uaWNlbGwgPSAwOwogICAgIG5ldHNubXBfY3B1X2luZm8qIGNwdTsKIAogICAgIGlmICgoc3RhdGZkID0gb3BlbihTVEFUX0ZJTEUsIE9fUkRPTkxZLCAwKSkgPT0gLTEpIHsKQEAgLTE1NiwxOCArMTU3LDI5IEBACiAgICAgICAgICAgICBiMSA9IGIyKzU7IC8qIFNraXAgImNwdU4gIiAqLwogICAgICAgICB9CiAKLQlpZiAoIWhhc19jcHVfMjYgfHwKLSAgICAgICAgICAgIHNzY2FuZihiMSwgIiVsbHUgJWxsdSAlbGx1ICVsbHUgJWxsdSAlbGx1ICVsbHUiLCAmY3VzZWxsLAotICAgICAgICAgICAgICAgICAgICZjaWNlbGwsICZjc3lzbGwsICZjaWRlbGwsICZjaW93bGwsICZjaXJxbGwsICZjc29mdGxsKSAhPSA3KSB7Ci0JICAgIGhhc19jcHVfMjYgPSAwOwotCSAgICBzc2NhbmYoYjEsICIlbGx1ICVsbHUgJWxsdSAlbGx1IiwgJmN1c2VsbCwgJmNpY2VsbCwgJmNzeXNsbCwKLSAgICAgICAgICAgICAgICAgICAmY2lkZWxsKTsKKyAgICAgICAgbnVtX2NwdWxpbmVfZWxlbSA9IHNzY2FuZihiMSwgIiVsbHUgJWxsdSAlbGx1ICVsbHUgJWxsdSAlbGx1ICVsbHUgJWxsdSAlbGx1ICVsbHUiLAorICAgICAgICAgJmN1c2VsbCwgJmNpY2VsbCwgJmNzeXNsbCwgJmNpZGVsbCwgJmNpb3dsbCwgJmNpcnFsbCwgJmNzb2Z0bGwsICZjc3RlYWxsbCwgJmNndWVzdGxsLCAmY2d1ZXN0X25pY2VsbCk7CisgICAgICAgIERFQlVHTVNHVEwoKCJjcHUiLCAiL3Byb2Mvc3RhdCBjcHUgbGluZSBudW1iZXIgb2YgZWxlbWVudHM6ICVpXG4iLCBudW1fY3B1bGluZV9lbGVtKSk7CiAKLQl9IGVsc2UgeworICAgICAgICAvKiBrZXJuZWwgMi42LjMzIGFuZCBhYm92ZSAqLworICAgICAgICBpZiAobnVtX2NwdWxpbmVfZWxlbSA9PSAxMCkgeworICAgICAgICAgICAgY3B1LT5ndWVzdG5pY2VfdGlja3MgPSAodW5zaWduZWQgbG9uZyBsb25nKWNndWVzdF9uaWNlbGw7CisgICAgICAgIH0KKyAgICAgICAgLyoga2VybmVsIDIuNi4yNCBhbmQgYWJvdmUgKi8KKyAgICAgICAgaWYgKG51bV9jcHVsaW5lX2VsZW0gPj0gOSkgeworICAgICAgICAgICAgY3B1LT5ndWVzdF90aWNrcyA9ICh1bnNpZ25lZCBsb25nIGxvbmcpY2d1ZXN0bGw7CisgICAgICAgIH0KKyAgICAgICAgLyoga2VybmVsIDIuNi4xMSBhbmQgYWJvdmUgKi8KKyAgICAgICAgaWYgKG51bV9jcHVsaW5lX2VsZW0gPj0gOCkgeworICAgICAgICAgICAgY3B1LT5zdGVhbF90aWNrcyA9ICh1bnNpZ25lZCBsb25nIGxvbmcpY3N0ZWFsbGw7CisgICAgICAgIH0KKyAgICAgICAgLyoga2VybmVsIDIuNiAqLworICAgICAgICBpZiAobnVtX2NwdWxpbmVfZWxlbSA+PSA1KSB7CiAgICAgICAgICAgICBjcHUtPndhaXRfdGlja3MgICA9ICh1bnNpZ25lZCBsb25nIGxvbmcpY2lvd2xsOwogICAgICAgICAgICAgY3B1LT5pbnRycHRfdGlja3MgPSAodW5zaWduZWQgbG9uZyBsb25nKWNpcnFsbDsKICAgICAgICAgICAgIGNwdS0+c2lycV90aWNrcyAgID0gKHVuc2lnbmVkIGxvbmcgbG9uZyljc29mdGxsOwotIAl9CisgICAgICAgIH0KKyAgICAgICAgLyogcmVzdCAqLwogICAgICAgICBjcHUtPnVzZXJfdGlja3MgPSAodW5zaWduZWQgbG9uZyBsb25nKWN1c2VsbDsKICAgICAgICAgY3B1LT5uaWNlX3RpY2tzID0gKHVuc2lnbmVkIGxvbmcgbG9uZyljaWNlbGw7CiAgICAgICAgIGNwdS0+c3lzX3RpY2tzICA9ICh1bnNpZ25lZCBsb25nIGxvbmcpY3N5c2xsOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9tYWNoLmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X21hY2guYwppbmRleCBkNTI3YjNkLi43ZjA5MGM5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X21hY2guYworKysgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X21hY2guYwpAQCAtMTA4LDYgKzEwOCw3IEBACiAgICAgY3B1MC0+cGFnZUluID0gdm1zdGF0LnBhZ2VpbnM7CiAgICAgY3B1MC0+cGFnZU91dCA9IHZtc3RhdC5wYWdlb3V0czsKIAkvKiBub3QgaW1wbGVtZW50ZWQ6IHN3YXBJbiwgc3dhcE91dCwgbkludGVycnVwdHMsIG5DdHhTd2l0Y2hlcyAqLworICAgIHJldHVybiAxOwogfQogCiAgCSAgCSAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbmxpc3QuYyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbmxpc3QuYwppbmRleCBhOWViMWUyLi45NzQwMjhhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X25saXN0LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9ubGlzdC5jCkBAIC0zLDYgKzMsNyBAQAogICogICAgIGUuZy4gRnJlZUJTRAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvY3B1Lmg+CkBAIC0zMSw2ICszMiw3IEBACiAjZGVmaW5lIENQVV9TWU1CT0wgICJjcF90aW1lIgogI2RlZmluZSBNRU1fU1lNQk9MICAiY250IgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShoYXJkd2FyZV9jcHVfY29weV9zdGF0cykKIHZvaWQgX2NwdV9jb3B5X3N0YXRzKCBuZXRzbm1wX2NwdV9pbmZvICpjcHUgKTsKIAogICAgIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3BlcmZzdGF0LmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3BlcmZzdGF0LmMKaW5kZXggNDdkNTZjNi4uNWY1ODE5MCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9wZXJmc3RhdC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfcGVyZnN0YXQuYwpAQCAtMyw2ICszLDcgQEAKICAqICAgICBlLmcuIEFJWAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvY3B1Lmg+CkBAIC0xNCw2ICsxNSw3IEBACiAjaW5jbHVkZSA8c3lzL3Byb3Rvc3cuaD4KICNpbmNsdWRlIDxsaWJwZXJmc3RhdC5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShoYXJkd2FyZV9jcHVfY29weV9zdGF0cykKIHZvaWQgX2NwdV9jb3B5X3N0YXRzKCBuZXRzbm1wX2NwdV9pbmZvICpjcHUgKTsKIAogICAgIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2N0bC5jIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9zeXNjdGwuYwppbmRleCAxMjM4ZDNmLi5iNWJmYmVkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2N0bC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmMKQEAgLTMsNiArMyw3IEBACiAgKiAgICAgZS5nLiBCU0QvT1MsIE5ldEJTRCwgT3BlbkJTRCwgbGF0ZXIgRGFyd2luIHJlbGVhc2VzCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9jcHUuaD4KQEAgLTMwLDYgKzMxLDggQEAKICNpbmNsdWRlIDx2bS92bV9leHRlcm4uaD4KICNlbmRpZgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShoYXJkd2FyZV9jcHVfY29weV9zdGF0cykKKwogdm9pZCBfY3B1X2NvcHlfc3RhdHMoIG5ldHNubXBfY3B1X2luZm8gKmNwdSApOwogCiAgICAgLyoKQEAgLTg3LDExICs5MCw4IEBACiAjZGVmaW5lIE5FVFNOTVBfS0VSTl9DUFUgIEtFUk5fQ1BUSU1FCiAKICNlbGlmIGRlZmluZWQoX19GcmVlQlNEX18pCi0jZGVmaW5lIE5FVFNOTVBfS0VSTl9DUFUgIDAgICAgLyogZHVtbXkgdmFsdWUgLSBzeXNjdGxuYW1ldG9taWIoMikgc2hvdWxkIGJlIHVzZWQgKi8KLSNpZiBkZWZpbmVkKEhBVkVfS0VSTl9DUF9USU1FUykKICNkZWZpbmUgTkVUU05NUF9LRVJOX01DUFUgMSAgICAvKiBFbmFibGUgc3VwcG9ydCBmb3IgbXVsdGktY3B1IHN0YXRzLiBWYWxpZCBmb3IgRnJlZUJTRCA+PTYuNCwgPj03LjEsID49OC4wIGFuZCBiZXlvbmQgKi8KICNkZWZpbmUgTkVUU05NUF9LRVJOX01DUFVfVFlQRSBORVRTTk1QX0NQVV9TVEFUUwotI2VuZGlmCiAKICNlbHNlCiAjZXJyb3IgIk5vIENQVSBzdGF0aXN0aWNzIHN5c2N0bCB0b2tlbiIKQEAgLTE1NCw5ICsxNTQsNiBAQAogICAgICAqIExvYWQgdGhlIGxhdGVzdCBDUFUgdXNhZ2Ugc3RhdGlzdGljcwogICAgICAqLwogaW50IG5ldHNubXBfY3B1X2FyY2hfbG9hZCggbmV0c25tcF9jYWNoZSAqY2FjaGUsIHZvaWQgKm1hZ2ljICkgewotI2lmZGVmIE5FVFNOTVBfS0VSTl9NQ1BVCi0gICAgaW50ICAgICAgICAgICAgICAgICAgICAgaTsKLSNlbmRpZgogCiAgICAgLyoKICAgICAgKiBTdHJpY3RseSBzcGVha2luZywgQlNEaSBvdWdodCB0byB1c2UKQEAgLTE2NiwxNCArMTYzLDE5IEBACiAgICAgICogRG9uJ3QgZmlnaHQgaXQsIERhdmUgLSBnbyB3aXRoIHRoZSBmbG93Li4uLgogICAgICAqLwogICAgIE5FVFNOTVBfQ1BVX1NUQVRTIGNwdV9zdGF0c1tDUFVTVEFURVNdOworICAgIHNpemVfdCAgICAgICAgIGNwdV9zaXplICA9IHNpemVvZihjcHVfc3RhdHMpOwogI2lmICFkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX05ldEJTRF9fKQogICAgIGludCAgICAgICAgICAgIGNwdV9taWJbXSA9IHsgQ1RMX0tFUk4sIE5FVFNOTVBfS0VSTl9DUFUgfTsKICNlbmRpZgorI2lmZGVmIF9fRnJlZUJTRF9fCisgICAgc3RhdGljIGludCAgICAgY3BfdGltZXMgPSAtMTsKKyNlbmRpZgogI2lmZGVmIEtFUk5fQ1BUSU1FMgogICAgIGludCAgICAgICAgICAgIG1jcHVfbWliW10gPSB7IENUTF9LRVJOLCBLRVJOX0NQVElNRTIsIDAgfTsKICNlbmRpZgotICAgIHNpemVfdCAgICAgICAgIGNwdV9zaXplICA9IHNpemVvZihjcHVfc3RhdHMpOwogI2lmZGVmIE5FVFNOTVBfS0VSTl9NQ1BVIAorICAgIGludCAgICAgICAgICAgIGk7CisgICAgaW50ICAgICAgICAgICAgYWN0X2NwdSA9IGNwdV9udW07CiAgICAgTkVUU05NUF9LRVJOX01DUFVfVFlQRSAqbWNwdV9zdGF0czsKICAgICBzaXplX3QgICAgICAgICBtY3B1X3NpemU7CiAjZW5kaWYKQEAgLTE4Miw3ICsxODQsNyBAQAogICAgIHNpemVfdCAgICAgICAgIG1lbV9zaXplICA9IHNpemVvZihORVRTTk1QX1ZNX1NUQVRTX1RZUEUpOwogICAgIG5ldHNubXBfY3B1X2luZm8gKmNwdSA9IG5ldHNubXBfY3B1X2dldF9ieUlkeCggLTEsIDAgKTsKIAotI2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fTmV0QlNEX18pKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19OZXRCU0RfXykKICAgICBzeXNjdGxieW5hbWUoImtlcm4uY3BfdGltZSIsIGNwdV9zdGF0cywgJmNwdV9zaXplLCBOVUxMLCAwKTsKICNlbHNlCiAgICAgc3lzY3RsKGNwdV9taWIsIDIsICBjcHVfc3RhdHMsICZjcHVfc2l6ZSwgTlVMTCwgMCk7CkBAIC0yMTIsMjQgKzIxNCwzNiBAQAogI2VuZGlmCiAKICNpZmRlZiBORVRTTk1QX0tFUk5fTUNQVQotI2lmIGRlZmluZWQoSEFWRV9LRVJOX0NQX1RJTUVTKQotICAgIHN5c2N0bGJ5bmFtZSgia2Vybi5jcF90aW1lcyIsIE5VTEwsICZtY3B1X3NpemUsIE5VTEwsIDApOworI2lmIGRlZmluZWQoS0VSTl9DUFRJTUUyKQorICAgIG1jcHVfc2l6ZSAgPSBjcHVfbnVtKnNpemVvZihjcHVfc3RhdHMpOwogICAgIG1jcHVfc3RhdHMgPSBtYWxsb2MobWNwdV9zaXplKTsKLSAgICBzeXNjdGxieW5hbWUoImtlcm4uY3BfdGltZXMiLCBtY3B1X3N0YXRzLCAmbWNwdV9zaXplLCBOVUxMLCAwKTsKLSNlbGlmIGRlZmluZWQoS0VSTl9DUFRJTUUyKQotICAgIG1jcHVfc2l6ZSAgPSBzaXplb2YoY3B1X3N0YXRzKTsKLSAgICBtY3B1X3N0YXRzID0gbWFsbG9jKG1jcHVfc2l6ZSk7Ci0jZWxzZQorI2VsaWYgZGVmaW5lZChfX05ldEJTRF9fKQogICAgIG1jcHVfc2l6ZSAgPSBjcHVfbnVtKnNpemVvZihjcHVfc3RhdHMpOwogICAgIG1jcHVfc3RhdHMgPSBtYWxsb2MobWNwdV9zaXplKTsKICAgICBzeXNjdGxieW5hbWUoImtlcm4uY3BfdGltZSIsIG1jcHVfc3RhdHMsICZtY3B1X3NpemUsIE5VTEwsIDApOworI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyAgICBpZiAoY3BfdGltZXMgPT0gLTEpIHsKKwlpbnQgcmV0ID0gc3lzY3RsYnluYW1lKCJrZXJuLmNwX3RpbWVzIiwgTlVMTCwgJm1jcHVfc2l6ZSwgTlVMTCwgMCk7CisJY3BfdGltZXMgPSByZXQgPT0gLTEgPyAwIDogMTsKKyAgICB9CisgICAgaWYgKGNwX3RpbWVzKSB7CisJc3lzY3RsYnluYW1lKCJrZXJuLmNwX3RpbWVzIiwgTlVMTCwgJm1jcHVfc2l6ZSwgTlVMTCwgMCk7CisJbWNwdV9zdGF0cyA9IG1hbGxvYyhtY3B1X3NpemUpOworCXN5c2N0bGJ5bmFtZSgia2Vybi5jcF90aW1lcyIsIG1jcHVfc3RhdHMsICZtY3B1X3NpemUsIE5VTEwsIDApOworICAgIH0KKyAgICBlbHNlIHsKKwltY3B1X3NpemUgID0gc2l6ZW9mKGNwdV9zdGF0cyk7CisJbWNwdV9zdGF0cyA9IG1hbGxvYyhtY3B1X3NpemUpOworCXN5c2N0bGJ5bmFtZSgia2Vybi5jcF90aW1lIiwgbWNwdV9zdGF0cywgJm1jcHVfc2l6ZSwgTlVMTCwgMCk7CisJYWN0X2NwdSA9IDE7CisgICAgfQogI2VuZGlmCi0gICAgZm9yICggaSA9IDA7IGkgPCBjcHVfbnVtOyBpKysgKSB7CisgICAgZm9yICggaSA9IDA7IGkgPCBhY3RfY3B1OyBpKysgKSB7CiAgICAgICAgIGNwdSA9IG5ldHNubXBfY3B1X2dldF9ieUlkeCggaSwgMCApOwogICAgICAgICAvKiBYWFggLSBwZXItQ1BVIHN0YXRpc3RpY3MgLSBtY3B1X21pYltpXS4/Pz8gKi8KICNpZmRlZiBLRVJOX0NQVElNRTIKIAltY3B1X21pYlsyXSA9IGk7Ci0Jc3lzY3RsKG1jcHVfbWliLCAzLCBtY3B1X3N0YXRzLCAmbWNwdV9zaXplLCBOVUxMLCAwKTsKKwlzeXNjdGwobWNwdV9taWIsIDMsIG1jcHVfc3RhdHMraSpDUFVTVEFURVMsICZtY3B1X3NpemUsIE5VTEwsIDApOwogI2VuZGlmCiAJLyogQWxtb3N0IGNvcHkgJiBwYXN0ZSBvZiBwcmV2aW91cyBjcHUgc3RhdHMgc3R1ZmYgOikgKi8KIAljcHUtPnVzZXJfdGlja3MgPSBtY3B1X3N0YXRzWyhpKkNQVVNUQVRFUykrQ1BfVVNFUl07CkBAIC0yNDUsNyArMjU5LDcgQEAKIAkgICAgICogICBYWFggLSBEbyB0aGVzZSByZWFsbHkgYmVsb25nIGhlcmUgPwogCSAgICAgKi8KIAotCS8qIFRoZXJlJ3Mgbm8gcmVhbGx5IG5lZWQgdG8gZXhlY3V0ZSBhbm90aGVyIHN5c2N0bCgpCisJLyogVGhlcmUncyBubyByZWFsIG5lZWQgdG8gZXhlY3V0ZSBhbm90aGVyIHN5c2N0bCgpCiAJICoKIAkgKiBzeXNjdGwobWVtX21pYiwgMiwgJm1lbV9zdGF0cywgJm1lbV9zaXplLCBOVUxMLCAwKTsKIAkgKi8KQEAgLTI2MSwxMCArMjc1LDEwIEBACiAjZW5kaWYKICAgICB9CiAgICAgZnJlZShtY3B1X3N0YXRzKTsKLSNlbHNlCisjZWxzZQkvKiBORVRTTk1QX0tFUk5fTUNQVSAqLwogICAgICAgICAvKiBDb3B5ICJvdmVyYWxsIiBmaWd1cmVzIHRvIGNwdTAgZW50cnkgKi8KICAgICBfY3B1X2NvcHlfc3RhdHMoIGNwdSApOwotI2VuZGlmCisjZW5kaWYgIC8qIE5FVFNOTVBfS0VSTl9NQ1BVICovCiAKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMuaCBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMuaAppbmRleCBlMzBhNWE2Li44Y2JmNDM5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy5oCkBAIC0zLDYgKzMsOCBAQAogY29uZmlnX3JlcXVpcmUoaGFyZHdhcmUvZnN5cy9mc3lzX21udGN0bCkKICNlbGlmIGRlZmluZWQoSEFWRV9HRVRWRlNTVEFUKSB8fCBkZWZpbmVkKEhBVkVfR0VURlNTVEFUKQogY29uZmlnX3JlcXVpcmUoaGFyZHdhcmUvZnN5cy9mc3lzX2dldGZzc3RhdHMpCi0jZWxzZQorI2VsaWYgZGVmaW5lZChIQVZFX0dFVE1OVEVOVCkgJiYgIWRlZmluZWQoaXJpeDYpCiBjb25maWdfcmVxdWlyZShoYXJkd2FyZS9mc3lzL2ZzeXNfbW50ZW50KQorI2Vsc2UKK2NvbmZpZ19yZXF1aXJlKGhhcmR3YXJlL2ZzeXMvZnN5c192b2lkKQogI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfZ2V0ZnNzdGF0cy5jIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX2dldGZzc3RhdHMuYwppbmRleCBiOWE4ZmU2Li5iODYwNzJmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfZ2V0ZnNzdGF0cy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19nZXRmc3N0YXRzLmMKQEAgLTE4Miw2ICsxODIsOCBAQAogICAgICAgICBpZiAoICBzdGF0c1tpXS5OU0ZTX0ZMQUdTICYgTU5UX1JPT1RGUyApIHsKICAgICAgICAgICAgIGVudHJ5LT5mbGFncyB8PSBORVRTTk1QX0ZTX0ZMQUdfQk9PVEFCTEU7CiAgICAgICAgIH0KLSAgICAgICAgCisgICAgICAgIG5ldHNubXBfZnN5c19jYWxjdWxhdGUzMihlbnRyeSk7CiAgICAgfQorCisgICAgZnJlZShzdGF0cyk7CiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50Y3RsLmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50Y3RsLmMKaW5kZXggMDc5MTU0Yy4uZDY3MThkZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX21udGN0bC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRjdGwuYwpAQCAtMTcwLDYgKzE3MCw3IEBACiAgICAgICAgIGVudHJ5LT5hdmFpbCA9ICBzdGF0X2J1Zi5mX2JhdmFpbDsKICAgICAgICAgZW50cnktPmludW1zX3RvdGFsID0gc3RhdF9idWYuZl9maWxlczsKICAgICAgICAgZW50cnktPmludW1zX2F2YWlsID0gc3RhdF9idWYuZl9mZnJlZTsKKyAgICAgICAgbmV0c25tcF9mc3lzX2NhbGN1bGF0ZTMyKGVudHJ5KTsKICAgICB9CiAgICAgZnJlZShhaXhtbnQpOwogICAgIGFpeG1udCAgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX21udGVudC5jIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX21udGVudC5jCmluZGV4IDQ2ZTI3MDkuLjUxMzBhMGQ2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50ZW50LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX21udGVudC5jCkBAIC0yNTQsNiArMjU0LDcgQEAKICAgICAgICAgICAgIGVudHJ5LT5hdmFpbCA9ICBzdGF0X2J1Zi5mX2JhdmFpbDsKICAgICAgICAgZW50cnktPmludW1zX3RvdGFsID0gc3RhdF9idWYuZl9maWxlczsKICAgICAgICAgZW50cnktPmludW1zX2F2YWlsID0gc3RhdF9idWYuZl9mZnJlZTsKKyAgICAgICAgbmV0c25tcF9mc3lzX2NhbGN1bGF0ZTMyKGVudHJ5KTsKICAgICB9CiAgICAgZmNsb3NlKCBmcCApOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX3ZvaWQuYyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c192b2lkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VkYzM0NAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c192b2lkLmMKQEAgLTAsMCArMSwyNCBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9mc3lzLmg+CisKK2ludAorX2ZzeXNfcmVtb3RlKCBjaGFyICpkZXZpY2UsIGludCB0eXBlICkKK3sKKyAgICByZXR1cm4gMDsKK30KKworaW50CitfZnN5c190eXBlKCBjaGFyICp0eXBlbmFtZSApCit7CisgICAgcmV0dXJuIE5FVFNOTVBfRlNfVFlQRV9VTktOT1dOOworfQorCit2b2lkCituZXRzbm1wX2ZzeXNfYXJjaF9pbml0KCB2b2lkICkKK3sgfQorCit2b2lkCituZXRzbm1wX2ZzeXNfYXJjaF9sb2FkKCB2b2lkICkKK3sgfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9od19mc3lzLmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2h3X2ZzeXMuYwppbmRleCAwNDhlZTY2Li5hNmNkOTRkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2h3X2ZzeXMuYworKysgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2h3X2ZzeXMuYwpAQCAtMSw4ICsxLDEzIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvZnN5cy5oPgorI2lmZGVmIEhBVkVfSU5UVFlQRVNfSAorI2luY2x1ZGUgPGludHR5cGVzLmg+CisjZW5kaWYKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGh3X2ZzeXNfZ2V0X2NvbnRhaW5lciwgbmV0c25tcF91bnVzZWQpCiAKIGV4dGVybiB2b2lkICAgICAgICAgICAgIG5ldHNubXBfZnN5c19hcmNoX2xvYWQoIHZvaWQgKTsKIGV4dGVybiB2b2lkICAgICAgICAgICAgIG5ldHNubXBfZnN5c19hcmNoX2luaXQoIHZvaWQgKTsKQEAgLTU5LDEwICs2NCwxMiBAQAogICAgIF9mc3lzX2ZyZWUoKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0hXX0ZTWVNfR0VUX0NPTlRBSU5FUgogLyoKICAqICBSZXR1cm4gdGhlIG1haW4gZnN5cyBjb250YWluZXIKICAqLwogbmV0c25tcF9jb250YWluZXIgKm5ldHNubXBfZnN5c19nZXRfY29udGFpbmVyKCB2b2lkICkgeyByZXR1cm4gX2ZzeXNfY29udGFpbmVyOyB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9IV19GU1lTX0dFVF9DT05UQUlORVIgKi8KIAogLyoKICAqICBSZXR1cm4gdGhlIG1haW4gZnN5cyBjYWNoZSBjb250cm9sIHN0cnVjdHVyZSAoaWYgZGVmaW5lZCkKQEAgLTIzNiw3ICsyNDMsNyBAQAogICAgICAgICBzcC0+aWR4Lm9pZHNbMF0gPSArK19mc3lzX2lkeDsKICAgICB9CiAKLSAgICBERUJVR01TR1RMKCgiZnN5czpuZXciLCAiQ3JlYXRlIGZpbGVzeXN0ZW0gZW50cnkgKGluZGV4ID0gJWRcbiIsIF9mc3lzX2lkeCkpOworICAgIERFQlVHTVNHVEwoKCJmc3lzOm5ldyIsICJDcmVhdGUgZmlsZXN5c3RlbSBlbnRyeSAoaW5kZXggPSAlZClcbiIsIF9mc3lzX2lkeCkpOwogICAgIENPTlRBSU5FUl9JTlNFUlQoIF9mc3lzX2NvbnRhaW5lciwgc3AgKTsKICAgICByZXR1cm4gc3A7CiB9CkBAIC0yNDcsNyArMjU0LDcgQEAKICAqICAgIChhdHRlbXB0aW5nIHRvIGF2b2lkIDMyLWJpdCBvdmVyZmxvdyEpCiAgKi8KIHVuc2lnbmVkIGxvbmcgbG9uZwotX2ZzeXNfdG9fSyggaW50IHNpemUsIGludCB1bml0cyApCitfZnN5c190b19LKCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9uZyBsb25nIHVuaXRzICkKIHsKICAgICBpbnQgZmFjdG9yID0gMTsKIApAQCAtMzA5LDMgKzMxNiwzNCBAQAogICAgIHJldHVybiAoaW50KXY7CiB9CiAKKyNpZm5kZWYgSU5UMzJfTUFYCisjZGVmaW5lIElOVDMyX01BWCAweDdmZmZmZmZmCisjZW5kaWYKKworI2lmbmRlZiBQUkl1NjQKKyNkZWZpbmUgUFJJdTY0ICJsbHUiCisjZW5kaWYKKworLyogcmVjYWxjdWxhdGUgZi0+c2l6ZV8zMiwgdXNlZF8zMiwgYXZhaWxfMzIgYW5kIHVuaXRzXzMyIGZyb20gZi0+c2l6ZSAmIGNvbXAuKi8KK3ZvaWQKK25ldHNubXBfZnN5c19jYWxjdWxhdGUzMihuZXRzbm1wX2ZzeXNfaW5mbyAqZikKK3sKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgcyA9IGYtPnNpemU7CisgICAgdW5zaWduZWQgc2hpZnQgPSAwOworCisgICAgd2hpbGUgKHMgPiBJTlQzMl9NQVgpIHsKKyAgICAgICAgcyA9IHMgPj4gMTsKKyAgICAgICAgc2hpZnQrKzsKKyAgICB9CisKKyAgICBmLT5zaXplXzMyID0gczsKKyAgICBmLT51bml0c18zMiA9IGYtPnVuaXRzIDw8IHNoaWZ0OworICAgIGYtPmF2YWlsXzMyID0gZi0+YXZhaWwgPj4gc2hpZnQ7CisgICAgZi0+dXNlZF8zMiA9IGYtPnVzZWQgPj4gc2hpZnQ7CisKKyAgICBERUJVR01TR1RMKCgiZnN5cyIsICJSZXN1bHRzIG9mIDMyLWJpdCBjb252ZXJzaW9uOiBzaXplICUiIFBSSXU2NCAiIC0+ICVsdTsiCisJCSIgdW5pdHMgJSIgUFJJdTY0ICIgLT4gJWx1OyBhdmFpbCAlIiBQUkl1NjQgIiAtPiAlbHU7IgorICAgICAgICAgICAgICAgICIgdXNlZCAlIiBQUkl1NjQgIiAtPiAlbHVcbiIsCisJCSh1aW50NjRfdClmLT5zaXplLCBmLT5zaXplXzMyLCAodWludDY0X3QpZi0+dW5pdHMsIGYtPnVuaXRzXzMyLAorCQkodWludDY0X3QpZi0+YXZhaWwsIGYtPmF2YWlsXzMyLCAodWludDY0X3QpZi0+dXNlZCwgZi0+dXNlZF8zMikpOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5LmggYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkuaAppbmRleCBjMzM0NTBhLi43ZTRlODhlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkuaAorKysgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkuaApAQCAtMyw3ICszLDcgQEAKICNpZiBkZWZpbmVkKGxpbnV4KQogY29uZmlnX3JlcXVpcmUoaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9saW51eCkKIAotI2VsaWYgKGRlZmluZWQoZGFyd2luNykgfHwgZGVmaW5lZChkYXJ3aW44KSB8fCBkZWZpbmVkKGRhcndpbjkpKQorI2VsaWYgKGRlZmluZWQoZGFyd2luKSkKIGNvbmZpZ19yZXF1aXJlKGhhcmR3YXJlL21lbW9yeS9tZW1vcnlfZGFyd2luKQogCiAjZWxpZiAoZGVmaW5lZChmcmVlYnNkMikgfHwgZGVmaW5lZChmcmVlYnNkMykgfHwgZGVmaW5lZChmcmVlYnNkNCkgIHx8IGRlZmluZWQoZnJlZWJzZDUpfHwgZGVmaW5lZChmcmVlYnNkNikpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvaHdfbWVtLmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvaHdfbWVtLmMKaW5kZXggYjE4YTliOC4uYmFkYzc3NSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L2h3X21lbS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9od19tZW0uYwpAQCAtMyw2ICszLDEyIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9tZW1vcnkuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihoYXJkd2FyZV9tZW1vcnksIG5ldHNubXBfdW51c2VkKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobWVtb3J5X2dldF9jYWNoZSwgaGFyZHdhcmVfbWVtb3J5KQorCiBleHRlcm4gTmV0c25tcENhY2hlTG9hZCBuZXRzbm1wX21lbV9hcmNoX2xvYWQ7CiAKIG5ldHNubXBfbWVtb3J5X2luZm8gKl9tZW1faGVhZCAgPSBOVUxMOwpAQCAtODcsOSArOTMsMTEgQEAKIAogCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NRU1PUllfR0VUX0NBQ0hFCiBuZXRzbm1wX2NhY2hlICpuZXRzbm1wX21lbW9yeV9nZXRfY2FjaGUoIHZvaWQgKSB7CiAgICAgcmV0dXJuIF9tZW1fY2FjaGU7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NRU1PUllfR0VUX0NBQ0hFICovCiAKIGludCBuZXRzbm1wX21lbW9yeV9sb2FkKCB2b2lkICkgewogICAgICByZXR1cm4gbmV0c25tcF9jYWNoZV9jaGVja19hbmRfcmVsb2FkKCBfbWVtX2NhY2hlICk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2Rhcndpbi5jIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9kYXJ3aW4uYwppbmRleCA0OTE0ZjBjLi41YTU1OTc0IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2Rhcndpbi5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9tZW1vcnlfZGFyd2luLmMKQEAgLTUsMTAgKzUsMTQgQEAKIAogI2luY2x1ZGUgPGRpcmVudC5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPG1hY2gvbWFjaF9ob3N0Lmg+CisKICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KIAorI2luY2x1ZGUgPG1hY2gvbWFjaC5oPgorI2luY2x1ZGUgPG1hY2gvbWFjaF90aW1lLmg+CisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDxJT0tpdC9wcy9JT1Bvd2VyU291cmNlcy5oPgogCiAvKgogICogUmV0YWluZWQgZnJvbSBVQ0QgaW1wbGVtZW50YXRpb24KQEAgLTQ0LDggKzQ4LDcgQEAKICAgICAgbWFjaF9wb3J0ID0gbWFjaF9ob3N0X3NlbGYoKTsKICAgICAgZXJyb3IgPSBob3N0X3Byb2Nlc3Nvcl9zZXRzKG1hY2hfcG9ydCwgJnBzZXRzLCAmcGNudCk7CiAgICAgIGlmIChlcnJvciAhPSBLRVJOX1NVQ0NFU1MpIHsKLSAgICAgICAgc25wcmludGYoZXJybXNnLCBzaXplb2YoZXJybXNnKSwgIkVycm9yIGluIGhvc3RfcHJvY2Vzc29yX3NldHMoKTogJXNcbiIsIG1hY2hfZXJyb3Jfc3RyaW5nKGVycm9yKSk7Ci0gICAgICAgIHNubXBfbG9nX3BlcnJvcihlcnJtc2cpOworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiRXJyb3IgaW4gaG9zdF9wcm9jZXNzb3Jfc2V0cygpOiAlc1xuIiwgbWFjaF9lcnJvcl9zdHJpbmcoZXJyb3IpKTsKICAgICAgICAgcmV0dXJuKDApOwogICAgICB9CiAKQEAgLTc1LDcgKzc4LDcgQEAKICAgICAgICAgICAgIGZvciAoYWRkcmVzcyA9IDA7OyBhZGRyZXNzICs9IHNpemUpIHsKICAgICAgICAgICAgICAgICAvKiBHZXQgbWVtb3J5IHJlZ2lvbi4gKi8KICAgICAgICAgICAgICAgICBjb3VudCA9IFZNX1JFR0lPTl9FWFRFTkRFRF9JTkZPX0NPVU5UOyAKLSAgICAgICAgICAgICAgICBpZiAodm1fcmVnaW9uKHRhc2tzW2pdLCAmYWRkcmVzcywgJnNpemUsIFZNX1JFR0lPTl9FWFRFTkRFRF9JTkZPLCAodm1fcmVnaW9uX2V4dGVuZGVkX2luZm9fdCkmaW5mbywgJmNvdW50LCAmb2JqZWN0X25hbWUpICE9IEtFUk5fU1VDQ0VTUykgeworICAgICAgICAgICAgICAgIGlmICh2bV9yZWdpb24odGFza3Nbal0sICZhZGRyZXNzLCAmc2l6ZSwgVk1fUkVHSU9OX0VYVEVOREVEX0lORk8sICZpbmZvLCAmY291bnQsICZvYmplY3RfbmFtZSkgIT0gS0VSTl9TVUNDRVNTKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIE5vIG1vcmUgbWVtb3J5IHJlZ2lvbnMuICovCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvbG1zZW5zb3JzX3YzLmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2xtc2Vuc29yc192My5jCmluZGV4IDYwYWY5ZTYuLmUzNGRhMTkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvbG1zZW5zb3JzX3YzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjMuYwpAQCAtMjYsOSArMjYsOSBAQAogCWludCAgICAgICAgICAgICBhID0gMDsKIAogICAgICAgICB3aGlsZSAoKGRhdGEgPSBzZW5zb3JzX2dldF9mZWF0dXJlcyggY2hpcCwgJmEpKSkgewotICAgICAgICAgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaDpkZXRhaWwiLCAiZ2V0X2ZlYXR1cmVzICglcywgJWQpXG4iLCBkYXRhLT5uYW1lLCBkYXRhLT5udW1iZXIpKTsKIAkgICAgaW50ICAgICAgICAgICAgIGIgPSAwOwotIAorCisgICAgICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICJnZXRfZmVhdHVyZXMgKCVzLCAlZClcbiIsIGRhdGEtPm5hbWUsIGRhdGEtPm51bWJlcikpOwogCiAgICAgICAgICAgICB3aGlsZSAoKGRhdGEyID0gc2Vuc29yc19nZXRfYWxsX3N1YmZlYXR1cmVzKCBjaGlwLCBkYXRhLCAmYikpKSB7CiAgICAgICAgICAgICAgICAgY2hhciAgICAgICAgICAgKmxhYmVsID0gTlVMTDsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmMgYi9hZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5jCmluZGV4IGVlNDI1NDQuLmQzNGQ5MDYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXguYwpAQCAtMTgsNiArMTgsMTMgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgImhlYWRlcl9jb21wbGV4LmgiCiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaGVhZGVyX2NvbXBsZXhfYWxsLCBsaWJuZXRzbm1wbWlicykKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGhlYWRlcl9jb21wbGV4X2ZyZWVfYWxsLCBoZWFkZXJfY29tcGxleF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaGVhZGVyX2NvbXBsZXhfZmluZF9lbnRyeSwgaGVhZGVyX2NvbXBsZXhfYWxsKQorCiBpbnQKIGhlYWRlcl9jb21wbGV4X2dlbmVyYXRlX3Zhcm9pZChuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXIpCiB7CkBAIC0zMzcsOCArMzQ0LDkgQEAKIH0KIAogc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICoKLWhlYWRlcl9jb21wbGV4X2FkZF9kYXRhKHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqKnRoZWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXIsIHZvaWQgKmRhdGEpCitoZWFkZXJfY29tcGxleF9tYXliZV9hZGRfZGF0YShzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKip0aGVkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyLCB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRvbnRfYWxsb3dfZHVwbGljYXRlcykKIHsKICAgICBvaWQgICAgICAgICAgICAgbmV3b2lkW01BWF9PSURfTEVOXTsKICAgICBzaXplX3QgICAgICAgICAgbmV3b2lkX2xlbjsKQEAgLTM0OSw3ICszNTcsOCBAQAogCiAgICAgaGVhZGVyX2NvbXBsZXhfZ2VuZXJhdGVfb2lkKG5ld29pZCwgJm5ld29pZF9sZW4sIE5VTEwsIDAsIHZhcik7CiAgICAgcmV0ID0KLSAgICAgICAgaGVhZGVyX2NvbXBsZXhfYWRkX2RhdGFfYnlfb2lkKHRoZWRhdGEsIG5ld29pZCwgbmV3b2lkX2xlbiwgZGF0YSk7CisgICAgICAgIGhlYWRlcl9jb21wbGV4X21heWJlX2FkZF9kYXRhX2J5X29pZCh0aGVkYXRhLCBuZXdvaWQsIG5ld29pZF9sZW4sIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb250X2FsbG93X2R1cGxpY2F0ZXMpOwogICAgIC8qCiAgICAgICogZnJlZSB0aGUgdmFyaWFibGUgbGlzdCwgYnV0IG5vdCB0aGUgZW5jbG9zZWQgZGF0YSEgIGl0J3Mgbm90IG91cnMhIAogICAgICAqLwpAQCAtMzU4LDM0ICszNjcsMjEgQEAKIH0KIAogc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICoKLWhlYWRlcl9jb21wbGV4X2FkZF9kYXRhX2J5X29pZChzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKip0aGVkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIG5ld29pZCwgc2l6ZV90IG5ld29pZF9sZW4sIHZvaWQgKmRhdGEpCitoZWFkZXJfY29tcGxleF9hZGRfZGF0YShzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKip0aGVkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyLCB2b2lkICpkYXRhKQogewotICAgIHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqaGNpcHRybiwgKmhjaXB0cnAsICpvdXJzZWxmOwotICAgIGludCByYzsKKyAgICByZXR1cm4KKyAgICAgICAgaGVhZGVyX2NvbXBsZXhfbWF5YmVfYWRkX2RhdGEodGhlZGF0YSwgdmFyLCBkYXRhLCAwKTsKK30KIAotICAgIGlmICh0aGVkYXRhID09IE5VTEwgfHwgbmV3b2lkID09IE5VTEwgfHwgZGF0YSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGZvciAoaGNpcHRybiA9ICp0aGVkYXRhLCBoY2lwdHJwID0gTlVMTDsKLSAgICAgICAgIGhjaXB0cm4gIT0gTlVMTDsgaGNpcHRycCA9IGhjaXB0cm4sIGhjaXB0cm4gPSBoY2lwdHJuLT5uZXh0KSB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIFhYWDogY2hlY2sgZm9yID09IGFuZCBlcnJvciAob3ZlcmxhcHBpbmcgdGFibGUgZW50cmllcykgCi0gICAgICAgICAqIDgvMjAwNSBya3MgT2ssIEkgYWRkZWQgZHVwbGljYXRlIGVudHJ5IGNoZWNrLCBidXQgb25seSBsb2cKLSAgICAgICAgICogICAgICAgICAgICB3YXJuaW5nIGFuZCBjb250aW51ZSwgYmVjYXVzZSBpdCBzZWVtcyB0aGF0IG5vYm9keQotICAgICAgICAgKiAgICAgICAgICAgIHRoYXQgY2FsbHMgdGhpcyBmdWNudGlvbiBkb2VzIGVycm9yIGNoZWNraW5nIS4KLSAgICAgICAgICovCi0gICAgICAgIHJjID0gc25tcF9vaWRfY29tcGFyZShoY2lwdHJuLT5uYW1lLCBoY2lwdHJuLT5uYW1lbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3b2lkLCBuZXdvaWRfbGVuKTsKLSAgICAgICAgaWYgKHJjID4gMCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBlbHNlIGlmICgwID09IHJjKSB7Ci0gICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgImhlYWRlcl9jb21wbGV4X2FkZF9kYXRhX2J5X29pZCB3aXRoICIKLSAgICAgICAgICAgICAgICAgICAgICJkdXBsaWNhdGUgaW5kZXguXG4iKTsKLSAgICAgICAgICAgIC8qKiB1bmNvbW1lbnQgbnVsbCByZXR1cm4gd2hlbiBjYWxsZXJzIGRvIGVycm9yIGNoZWNraW5nICovCi0gICAgICAgICAgICAvKiogcmV0dXJuIE5VTEw7ICovCi0gICAgICAgIH0KLSAgICB9CitzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKgorX2hlYWRlcl9jb21wbGV4X2FkZF9iZXR3ZWVuKHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqKnRoZWRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICpoY2lwdHJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqaGNpcHRybiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiBuZXdvaWQsIHNpemVfdCBuZXdvaWRfbGVuLCB2b2lkICpkYXRhKQoreworICAgIHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqb3Vyc2VsZjsKIAogICAgIC8qCiAgICAgICogbnB0ciBzaG91bGQgbm93IHBvaW50IHRvIHRoZSBzcG90IHRoYXQgd2UgbmVlZCB0byBhZGQgb3Vyc2VsdmVzCkBAIC00MjksNiArNDI1LDUwIEBACiAgICAgcmV0dXJuIGhjaXB0cnA7CiB9CiAKKworc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICoKK2hlYWRlcl9jb21wbGV4X21heWJlX2FkZF9kYXRhX2J5X29pZChzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKip0aGVkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIG5ld29pZCwgc2l6ZV90IG5ld29pZF9sZW4sIHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRvbnRfYWxsb3dfZHVwbGljYXRlcykKK3sKKyAgICBzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKmhjaXB0cm4sICpoY2lwdHJwOworICAgIGludCByYzsKKworICAgIGlmICh0aGVkYXRhID09IE5VTEwgfHwgbmV3b2lkID09IE5VTEwgfHwgZGF0YSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGZvciAoaGNpcHRybiA9ICp0aGVkYXRhLCBoY2lwdHJwID0gTlVMTDsKKyAgICAgICAgIGhjaXB0cm4gIT0gTlVMTDsgaGNpcHRycCA9IGhjaXB0cm4sIGhjaXB0cm4gPSBoY2lwdHJuLT5uZXh0KSB7CisgICAgICAgIC8qCisgICAgICAgICAqIFhYWDogY2hlY2sgZm9yID09IGFuZCBlcnJvciAob3ZlcmxhcHBpbmcgdGFibGUgZW50cmllcykgCisgICAgICAgICAqIDgvMjAwNSBya3MgT2ssIEkgYWRkZWQgZHVwbGljYXRlIGVudHJ5IGNoZWNrLCBidXQgb25seSBsb2cKKyAgICAgICAgICogICAgICAgICAgICB3YXJuaW5nIGFuZCBjb250aW51ZSwgYmVjYXVzZSBpdCBzZWVtcyB0aGF0IG5vYm9keQorICAgICAgICAgKiAgICAgICAgICAgIHRoYXQgY2FsbHMgdGhpcyBmdWNudGlvbiBkb2VzIGVycm9yIGNoZWNraW5nIS4KKyAgICAgICAgICovCisgICAgICAgIHJjID0gc25tcF9vaWRfY29tcGFyZShoY2lwdHJuLT5uYW1lLCBoY2lwdHJuLT5uYW1lbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3b2lkLCBuZXdvaWRfbGVuKTsKKyAgICAgICAgaWYgKHJjID4gMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBlbHNlIGlmICgwID09IHJjKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgImhlYWRlcl9jb21wbGV4X2FkZF9kYXRhX2J5X29pZCB3aXRoICIKKyAgICAgICAgICAgICAgICAgICAgICJkdXBsaWNhdGUgaW5kZXguXG4iKTsKKyAgICAgICAgICAgIGlmIChkb250X2FsbG93X2R1cGxpY2F0ZXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gX2hlYWRlcl9jb21wbGV4X2FkZF9iZXR3ZWVuKHRoZWRhdGEsIGhjaXB0cnAsIGhjaXB0cm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdvaWQsIG5ld29pZF9sZW4sIGRhdGEpOworfQorCitzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKgoraGVhZGVyX2NvbXBsZXhfYWRkX2RhdGFfYnlfb2lkKHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqKnRoZWRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogbmV3b2lkLCBzaXplX3QgbmV3b2lkX2xlbiwgdm9pZCAqZGF0YSkKK3sKKyAgICByZXR1cm4gaGVhZGVyX2NvbXBsZXhfbWF5YmVfYWRkX2RhdGFfYnlfb2lkKHRoZWRhdGEsIG5ld29pZCwgbmV3b2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsIDApOworfQorCiAvKgogICogZXh0cmFjdHMgYW4gZW50cnkgZnJvbSB0aGUgc3RvcmFnZSBzcGFjZSAocmVtb3ZpbmcgaXQgZnJvbSBmdXR1cmUKICAqIGFjY2Vzc2VzKSBhbmQgcmV0dXJucyB0aGUgZGF0YSBzdG9yZWQgdGhlcmUKQEAgLTQ4NSw2ICs1MjUsNyBAQAogLyoKICAqIGNvbXBsZXRlbHkgd2lwZSBvdXQgYWxsIGVudHJpZXMgaW4gb3VyIGRhdGEgc3RvcmUgCiAgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9IRUFERVJfQ09NUExFWF9GUkVFX0FMTAogdm9pZAogaGVhZGVyX2NvbXBsZXhfZnJlZV9hbGwoc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICp0aGVzdHVmZiwKICAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbXBsZXhDbGVhbmVyICogY2xlYW5lcikKQEAgLTQ5Niw3ICs1MzcsOSBAQAogICAgICAgICBoZWFkZXJfY29tcGxleF9mcmVlX2VudHJ5KGhjaXB0ciwgY2xlYW5lcik7CiAgICAgfQogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSEVBREVSX0NPTVBMRVhfRlJFRV9BTEwgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0hFQURFUl9DT01QTEVYX0ZJTkRfRU5UUlkKIHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqCiBoZWFkZXJfY29tcGxleF9maW5kX2VudHJ5KHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqdGhlc3R1ZmYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnRoZWVudHJ5KQpAQCAtNTA3LDYgKzU1MCw3IEBACiAgICAgICAgICBoY2lwdHIgPSBoY2lwdHItPm5leHQpOwogICAgIHJldHVybiBoY2lwdHI7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9IRUFERVJfQ09NUExFWF9GSU5EX0VOVFJZICovCiAKICNpZmRlZiBURVNUSU5HCiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmggYi9hZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5oCmluZGV4IDIwMjhjZWUuLjJhMTcyOGEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXguaApAQCAtNTcsNiArNTcsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKip0aGVkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB2YXIsIHZvaWQgKmRhdGEpOworc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICpoZWFkZXJfY29tcGxleF9tYXliZV9hZGRfZGF0YShzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKip0aGVkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkb250X2FsbG93X2R1cGxpY2F0ZXMpOwogCiAvKgogICogTm90ZTogbmV3b2lkIGlzIGNvcGllZC9jbG9uZWQgZm9yIHlvdSAKQEAgLTY4LDUgKzcyLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhKTsKK3N0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqaGVhZGVyX2NvbXBsZXhfbWF5YmVfYWRkX2RhdGFfYnlfb2lkKHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqKnRoZWRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiBuZXdvaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbmV3b2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZG9udF9hbGxvd19kdXBsaWNhdGVzKTsKIAogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfTUlCR1JPVVBfSEVBREVSX0NPTVBMRVhfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmMKaW5kZXggYmI1NTE4MS4uM2VmMDVlOSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuYworKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5jCkBAIC03LDYgKzcsNyBAQAogICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3N3aW5zdC5oPgpAQCAtMTQsNiArMTUsMTAgQEAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNvZnR3YXJlX2luc3RhbGxlZCwgbGlibmV0c25tcG1pYnMpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzd2luc3RfZW50cnlfcmVtb3ZlLCBuZXRzbm1wX3VudXNlZCkKKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIApAQCAtMTgxLDYgKzE4Niw3IEBACiAvKgogICogcmVtb3ZlIGEgcm93IGZyb20gdGhlIHRhYmxlIAogICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1dJTlNUX0VOVFJZX1JFTU9WRQogdm9pZAogbmV0c25tcF9zd2luc3RfZW50cnlfcmVtb3ZlKG5ldHNubXBfY29udGFpbmVyICogY29udGFpbmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc3dpbnN0X2VudHJ5ICplbnRyeSkKQEAgLTE5MCw2ICsxOTYsNyBAQAogICAgICAgICByZXR1cm47ICAgICAgICAgICAgICAgICAvKiBOb3RoaW5nIHRvIHJlbW92ZSAqLwogICAgIENPTlRBSU5FUl9SRU1PVkUoY29udGFpbmVyLCBlbnRyeSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TV0lOU1RfRU5UUllfUkVNT1ZFICovCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5oIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuaAppbmRleCAwYzgwNTYxLi5iZGEzZTQ3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5oCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmgKQEAgLTE0LDcgKzE0LDYgQEAKIC8qCiAgKiBhbGwgcGxhdGZvcm1zIHVzZSB0aGlzIGdlbmVyaWMgY29kZQogICovCi1jb25maWdfcmVxdWlyZShob3N0L2RhdGFfYWNjZXNzL3N3aW5zdCkKIGNvbmZpZ19leGNsdWRlKGhvc3QvaHJfc3dpbnN0KQogCiAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfZGFyd2luLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9kYXJ3aW4uYwppbmRleCBiYmY1YTJmLi43YTQ3MzcyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9kYXJ3aW4uYworKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9kYXJ3aW4uYwpAQCAtNyw2ICs3LDcgQEAKICAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oPgpAQCAtMjYsNiArMjcsOSBAQAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjaW5jbHVkZSA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+CiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNvbnRhaW5lcl9kaXJlY3RvcnkpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShkYXRlX25fdGltZSkKKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIHN0YXRpYyBpbnQgX2FkZF9hcHBsaWNhdGlvbnNfaW5fZGlyKG5ldHNubXBfY29udGFpbmVyICosIGNvbnN0IGNoYXIqIHBhdGgpOwpAQCAtMTI1LDcgKzEyOSw4IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgIF9kdW1wX2ZsYWdzKHVfbG9uZyBmbGFncykKK3N0YXRpYyB2b2lkCitfZHVtcF9mbGFncyh1X2xvbmcgZmxhZ3MpCiB7CiAgICAgc3RhdGljIHN0cnVjdCB7CiAgICAgICAgIGNvbnN0IGNoYXIqbmFtZTsKQEAgLTI1MSw2ICsyNTYsOCBAQAogICAgICAgICAgICAgcmMgPSAtMTsKICAgICAgICAgICAgIFNOTVBfQ0ZSZWxlYXNlKHByb2ROYW1lKTsKICAgICAgICAgICAgIFNOTVBfQ0ZSZWxlYXNlKHZlcnNpb24pOworICAgICAgICAgICAgQ0ZSZWxlYXNlKGN1cnJlbnRQYXRoKTsKKyAgICAgICAgICAgIENGUmVsZWFzZShjdXJyZW50VVJMKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTI4MSw3ICsyODgsNyBAQAogICAgIHJldHVybiByYzsKIH0KIAotaW50CitzdGF0aWMgaW50CiBfY2hlY2tfYnVuZGxlZF9hcHAoQ0ZVUkxSZWYgY3VycmVudFVSTCwgQ0ZTdHJpbmdSZWYgKnByb2ROYW1lLAogICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmICp2ZXJzaW9uLCBjb25zdCBjaGFyKiBmaWxlKQogewpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcGtnaW5mby5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcGtnaW5mby5jCmluZGV4IGJjOGVlMmUuLjczMDFiZmMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYworKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmMKQEAgLTMsNiArMyw3IEBACiAgKiAgICAgaHJTV0luc3RhbGxlZFRhYmxlIGRhdGEgYWNjZXNzOgogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KQEAgLTM3LDYgKzM4LDggQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9zd2luc3QuaD4KIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZGF0ZV9uX3RpbWUpCisKICAgIC8qCiAgICAgKiBMb2NhdGlvbiBvZiBwYWNrYWdlIGRpcmVjdG9yeS4KICAgICAqIFVzZWQgZm9yOgpAQCAtMTA1LDYgKzEwOCw5IEBACiAgICAgd2hpbGUgKChkcCA9IHJlYWRkaXIoZCkpICE9IE5VTEwpIHsKICAgICAgICAgaWYgKCAnLicgPT0gZHAtPmRfbmFtZVswXSApCiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgc25wcmludGYoIGJ1ZiwgQlVGU0laLCAiJXMvJXMiLCBwa2dfZGlyZWN0b3J5LCBkcC0+ZF9uYW1lICk7CisgICAgICAgIGlmIChzdGF0KCBidWYsICZzdGF0X2J1ZiApIDwgMCkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBlbnRyeSA9IG5ldHNubXBfc3dpbnN0X2VudHJ5X2NyZWF0ZSggaSsrICk7CiAgICAgICAgIGlmIChOVUxMID09IGVudHJ5KQogICAgICAgICAgICAgY29udGludWU7ICAgLyogZXJyb3IgYWxyZWFkeSBsb2dnZWQgYnkgZnVuY3Rpb24gKi8KQEAgLTEzMiw4ICsxMzgsNiBAQAogICAgICAgICAvKiBubyBpbmZvcm1hdGlvbiBhYm91dCBPL1MgdnMgYXBwbGljYXRpb24gcGFja2FnZXMgPz8/ICovCiAjZW5kaWYKIAotICAgICAgICBzbnByaW50ZiggYnVmLCBCVUZTSVosICIlcy8lcyIsIHBrZ19kaXJlY3RvcnksIGRwLT5kX25hbWUgKTsKLSAgICAgICAgc3RhdCggYnVmLCAmc3RhdF9idWYgKTsKICAgICAgICAgaW5zdGFsbF90aW1lID0gc3RhdF9idWYuc3RfbXRpbWU7CiAgICAgICAgIGNwID0gZGF0ZV9uX3RpbWUoICZpbnN0YWxsX3RpbWUsICZkYXRlX2xlbiApOwogICAgICAgICBtZW1jcHkoIGVudHJ5LT5zd0RhdGUsIGNwLCBkYXRlX2xlbiApOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcnBtLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9ycG0uYwppbmRleCBkYWU4ZjZhLi43MTU5NWJlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9ycG0uYworKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9ycG0uYwpAQCAtMyw2ICszLDcgQEAKICAqICAgICBoclNXSW5zdGFsbGVkVGFibGUgZGF0YSBhY2Nlc3M6CiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpZmRlZiBIQVZFX1NURExJQl9ICkBAIC00Myw2ICs0NCw4IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dpbnN0Lmg+CiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGRhdGVfbl90aW1lKQorCiAgICAvKgogICAgICogTG9jYXRpb24gb2YgUlBNIHBhY2thZ2UgZGlyZWN0b3J5LgogICAgICogVXNlZCBmb3I6CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmMKaW5kZXggODEyMDMwZi4uZDE4ZWE1ZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uYwpAQCAtOSwxMSArOSwxNiBAQAogICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dydW4uaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNvZnR3YXJlX3J1bm5pbmcsIGxpYm5ldHNubXBtaWJzKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc3dydW5fbWF4X3Byb2Nlc3Nlcywgc29mdHdhcmVfcnVubmluZykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzd3J1bl9jb3VudF9wcm9jZXNzZXNfYnlfbmFtZSwgc29mdHdhcmVfcnVubmluZykKIAogLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qCkBAIC03NiwxMiArODEsMTUgQEAKICAgICByZXR1cm4gKCBzd3J1bl9jb250YWluZXIgPyBDT05UQUlORVJfU0laRShzd3J1bl9jb250YWluZXIpIDogMCApOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1dSVU5fTUFYX1BST0NFU1NFUwogaW50CiBzd3J1bl9tYXhfcHJvY2Vzc2VzKCB2b2lkICkKIHsKICAgICByZXR1cm4gX3N3cnVuX21heDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NXUlVOX01BWF9QUk9DRVNTRVMgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NXUlVOX0NPVU5UX1BST0NFU1NFU19CWV9OQU1FCiBpbnQKIHN3cnVuX2NvdW50X3Byb2Nlc3Nlc19ieV9uYW1lKCBjaGFyICpuYW1lICkKIHsKQEAgLTEwMiw3ICsxMTAsNyBAQAogCiAgICAgcmV0dXJuIGk7CiB9Ci0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NXUlVOX0NPVU5UX1BST0NFU1NFU19CWV9OQU1FICovCiAKIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9kYXJ3aW4uYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fZGFyd2luLmMKaW5kZXggYmJlZmM0ZS4uM2IwMGZlMyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9kYXJ3aW4uYworKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2Rhcndpbi5jCkBAIC0xMjAsNyArMTIwLDcgQEAKICAgICAgICAgICogc2tpcCBlbXB0eSBuYW1lcy4KICAgICAgICAgICogcF9zdGF0ID0gKFNJREx8U1JVTnxTU0xFRVB8U1NUT1B8U1pPTUIpCiAgICAgICAgICAqLwotICAgICAgICBpZiAoKE5VTEwgPT0gcHJvY2Vzc2VzW2ldLmtwX3Byb2MucF9jb21tKSB8fAorICAgICAgICBpZiAoKCdcMCcgPT0gcHJvY2Vzc2VzW2ldLmtwX3Byb2MucF9jb21tWzBdKSB8fAogICAgICAgICAgICAgKDAgPT0gcHJvY2Vzc2VzW2ldLmtwX3Byb2MucF9waWQpKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICIgc2tpcHBpbmcgcF9jb21tICclcycsIHBpZCAlNWQsIHBfcHN0YXQgJWRcbiIsCkBAIC0xOTMsNyArMTkzLDcgQEAKICAgICAgICAgICAgIH0gYXQsIG5zOwogICAgICAgICAgICAgYXQudXEgPSB0YXNraW5mby5wdGluZm8ucHRpX3RvdGFsX3VzZXIgKwogICAgICAgICAgICAgICAgICAgICB0YXNraW5mby5wdGluZm8ucHRpX3RvdGFsX3N5c3RlbTsKLSAgICAgICAgICAgIG5zLnV3ID0gQWJzb2x1dGVUb05hbm9zZWNvbmRzKCBhdC51dyApOworICAgICAgICAgICAgbnMgPSBhdDsKICAgICAgICAgICAgIG5zLnVxID0gbnMudXEgLyAxMDAwMDAwMExMOyAvKiBuYW5vIHRvIGRlY2kgKi8KICAgICAgICAgICAgIGlmICh0YXNrX21lbSA+IElOVDMyX01BWCkgewogICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzd3J1bjpsb2FkOmFyY2giLCBTV1JVTklOREVOVCAibWVtIG92ZXJmbG93XG4iKSk7CkBAIC0yMTAsNyArMjEwLDcgQEAKICAgICBmcmVlKHByb2Nlc3Nlcyk7CiAKICAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoIiwiIGxvYWRlZCAlZCBlbnRyaWVzXG4iLAotICAgICAgICAgICAgICAgIENPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKKyAgICAgICAgICAgICAgICAoaW50KUNPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtMzg2LDggKzM4Niw4IEBACiAgICAgICAgICAgICBicmVhazsgLyogRW5kIG9mIGV4ZWNfcGF0aCByZWFjaGVkLiAqLwogICAgIH0KICAgICBpZiAoY3AgIT0gZXhlY19wYXRoICsgbGVuKSB7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJzd3J1bjpsb2FkOmFyY2g6X2NuIiwiIE9GRiBCWSAlZFxuIiwKLSAgICAgICAgICAgICAgICAgICAgKGV4ZWNfcGF0aCArIGxlbikgLSBjcCkpOworICAgICAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoOl9jbiIsICIgT0ZGIEJZICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAoaW50KSgoZXhlY19wYXRoICsgbGVuKSAtIGNwKSkpOwogICAgICAgICBuZXRzbm1wX2Fzc2VydCggY3AgPT0gZXhlY19wYXRoICsgbGVuICk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXSW5zdGFsbGVkVGFibGUuYwppbmRleCA2Zjk0MGJmLi5hZDhhZWUzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmMKQEAgLTIzLDYgKzIzLDggQEAKIAogI2RlZmluZSBNWVRBQkxFICJoclNXSW5zdGFsbGVkVGFibGUiCiAKK3N0YXRpYyBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOworCiBzdGF0aWMgdm9pZCBfY2FjaGVfZnJlZShuZXRzbm1wX2NhY2hlICogY2FjaGUsIHZvaWQgKm1hZ2ljKTsKIHN0YXRpYyBpbnQgX2NhY2hlX2xvYWQobmV0c25tcF9jYWNoZSAqIGNhY2hlLCB2b2lkICptYWdpYyk7CiAKQEAgLTM2LDYgKzM4LDE1IEBACiAgICAgaW5pdGlhbGl6ZV90YWJsZV9oclNXSW5zdGFsbGVkVGFibGUoKTsKIH0KIAordm9pZAorc2h1dGRvd25faHJTV0luc3RhbGxlZFRhYmxlKHZvaWQpCit7CisgICAgaWYgKHRhYmxlX2luZm8pIHsKKwluZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CisJdGFibGVfaW5mbyA9IE5VTEw7CisgICAgfQorfQorCiAvKiogSW5pdGlhbGl6ZSB0aGUgaHJTV0luc3RhbGxlZFRhYmxlIHRhYmxlIGJ5IGRlZmluaW5nIGl0cyBjb250ZW50cyBhbmQgaG93IGl0J3Mgc3RydWN0dXJlZCAqLwogdm9pZAogaW5pdGlhbGl6ZV90YWJsZV9oclNXSW5zdGFsbGVkVGFibGUodm9pZCkKQEAgLTQ4LDcgKzU5LDYgQEAKICAgICBuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyID0gTlVMTDsKICAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyID0gTlVMTDsKICAgICBuZXRzbm1wX2NhY2hlICpjYWNoZSA9IE5VTEw7Ci0gICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbyA9IE5VTEw7CiAKICAgICBERUJVR01TR1RMKCgiaHJTV0luc3RhbGxlZCIsICJpbml0aWFsaXplXG4iKSk7CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmggYi9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5oCmluZGV4IDJhMWRhMjMuLjQ4ZjE3ZTggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXSW5zdGFsbGVkVGFibGUuaApAQCAtMTEsNiArMTEsNyBAQAogICogZnVuY3Rpb24gZGVjbGFyYXRpb25zIAogICovCiB2b2lkICAgICAgICAgICAgaW5pdF9oclNXSW5zdGFsbGVkVGFibGUodm9pZCk7Cit2b2lkICAgICAgICAgICAgc2h1dGRvd25faHJTV0luc3RhbGxlZFRhYmxlKHZvaWQpOwogdm9pZCAgICAgICAgICAgIGluaXRpYWxpemVfdGFibGVfaHJTV0luc3RhbGxlZFRhYmxlKHZvaWQpOwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgaHJTV0luc3RhbGxlZFRhYmxlX2hhbmRsZXI7CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuUGVyZlRhYmxlLmMKaW5kZXggMGJmNDcxYi4uNDNiNDRkMSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuUGVyZlRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuUGVyZlRhYmxlLmMKQEAgLTMyLDggKzMyLDE1IEBACiAgICAgaW5pdGlhbGl6ZV90YWJsZV9oclNXUnVuUGVyZlRhYmxlKCk7CiB9CiAKK3ZvaWQKK3NodXRkb3duX2hyU1dSdW5QZXJmVGFibGUodm9pZCkKK3sKKyAgICBzaHV0ZG93bl90YWJsZV9oclNXUnVuUGVyZlRhYmxlKCk7Cit9CisKIGV4dGVybiBvaWQgICAgICBoclNXUnVuVGFibGVfb2lkW107CiBleHRlcm4gc2l6ZV90ICAgaHJTV1J1blRhYmxlX29pZF9sZW47CitzdGF0aWMgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAogLyoqIEluaXRpYWxpemUgdGhlIGhyU1dSdW5QZXJmVGFibGUgdGFibGUgYnkgZGVmaW5pbmcgaXRzIGNvbnRlbnRzIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkICovCiB2b2lkCkBAIC00NSw3ICs1Miw2IEBACiAgICAgICAgIE9JRF9MRU5HVEgoaHJTV1J1blBlcmZUYWJsZV9vaWQpOwogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZzsKICAgICBuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyID0gTlVMTDsKLSAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvID0gTlVMTDsKIAogICAgIHJlZyA9CiAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJoclNXUnVuUGVyZlRhYmxlIiwKQEAgLTEyOCw2ICsxMzQsMTUgQEAKICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9mcmVlKHJlZyk7CiB9CiAKK3ZvaWQKK3NodXRkb3duX3RhYmxlX2hyU1dSdW5QZXJmVGFibGUodm9pZCkKK3sKKyAgICBpZiAodGFibGVfaW5mbykgeworCW5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSh0YWJsZV9pbmZvKTsKKwl0YWJsZV9pbmZvID0gTlVMTDsKKyAgICB9Cit9CisKIC8qKiBoYW5kbGVzIHJlcXVlc3RzIGZvciB0aGUgaHJTV1J1blBlcmZUYWJsZSB0YWJsZSAqLwogaW50CiBoclNXUnVuUGVyZlRhYmxlX2hhbmRsZXIobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuUGVyZlRhYmxlLmgKaW5kZXggYjc5MzYyNy4uNDUzZmRhMyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuUGVyZlRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuUGVyZlRhYmxlLmgKQEAgLTIxLDcgKzIxLDkgQEAKICAqIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAKICAqLwogdm9pZCAgICAgICAgICAgIGluaXRfaHJTV1J1blBlcmZUYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBzaHV0ZG93bl9oclNXUnVuUGVyZlRhYmxlKHZvaWQpOwogdm9pZCAgICAgICAgICAgIGluaXRpYWxpemVfdGFibGVfaHJTV1J1blBlcmZUYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBzaHV0ZG93bl90YWJsZV9oclNXUnVuUGVyZlRhYmxlKHZvaWQpOwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgaHJTV1J1blBlcmZUYWJsZV9oYW5kbGVyOwogCiAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blRhYmxlLmMKaW5kZXggOWQ5Mjg0MS4uMDNhZDI1NiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5UYWJsZS5jCkBAIC0yNiw2ICsyNiw4IEBACiAKICNkZWZpbmUgTVlUQUJMRSAiaHJTV1J1blRhYmxlIgogCitzdGF0aWMgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKKwogLyoqIEluaXRpYWxpemVzIHRoZSBoclNXUnVuVGFibGUgbW9kdWxlICovCiB2b2lkCiBpbml0X2hyU1dSdW5UYWJsZSh2b2lkKQpAQCAtMzYsNiArMzgsMTUgQEAKICAgICBpbml0aWFsaXplX3RhYmxlX2hyU1dSdW5UYWJsZSgpOwogfQogCit2b2lkCitzaHV0ZG93bl9oclNXUnVuVGFibGUodm9pZCkKK3sKKyAgICBpZiAodGFibGVfaW5mbykgeworCW5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSh0YWJsZV9pbmZvKTsKKwl0YWJsZV9pbmZvID0gTlVMTDsKKyAgICB9Cit9CisKIG9pZCAgICAgIGhyU1dSdW5UYWJsZV9vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMjUsIDQsIDIgfTsKIHNpemVfdCAgIGhyU1dSdW5UYWJsZV9vaWRfbGVuID0gT0lEX0xFTkdUSChoclNXUnVuVGFibGVfb2lkKTsKIApAQCAtNDUsMTMgKzU2LDE1IEBACiB7CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnOwogICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIgPSBOVUxMOwotICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm8gPSBOVUxMOwotCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogI2lmZGVmIE5FVFNOTVBfSU5DTFVERV9IUlNXUlVOX1dSSVRFX1NVUFBPUlQKICMgIGRlZmluZSBTV1JVTl9BQ0NFU1NfTEVWRUwgSEFORExFUl9DQU5fUldSSVRFCiAjZWxzZQogIyAgZGVmaW5lIFNXUlVOX0FDQ0VTU19MRVZFTCBIQU5ETEVSX0NBTl9ST05MWQogI2VuZGlmCisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovIAorIyAgZGVmaW5lIFNXUlVOX0FDQ0VTU19MRVZFTCBIQU5ETEVSX0NBTl9ST05MWQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICByZWcgPQogICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbihNWVRBQkxFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoclNXUnVuVGFibGVfaGFuZGxlciwKQEAgLTIxNyw2ICsyMzAsNyBAQAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogI2lmZGVmIE5FVFNOTVBfSU5DTFVERV9IUlNXUlVOX1dSSVRFX1NVUFBPUlQKICAgICAgICAgLyoKICAgICAgICAgICogV3JpdGUtc3VwcG9ydApAQCAtMzI5LDYgKzM0Myw3IEBACiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAjZW5kaWYgLyogTkVUU05NUF9JTkNMVURFX0hSU1dSVU5fV1JJVEVfU1VQUE9SVCAqLworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5UYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuVGFibGUuaAppbmRleCA2Y2E0OTg5Li5kZTgwZmMwIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5UYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blRhYmxlLmgKQEAgLTIyLDYgKzIyLDcgQEAKICAqIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAKICAqLwogdm9pZCAgICAgICAgICAgIGluaXRfaHJTV1J1blRhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX2hyU1dSdW5UYWJsZSh2b2lkKTsKIHZvaWQgICAgICAgICAgICBpbml0aWFsaXplX3RhYmxlX2hyU1dSdW5UYWJsZSh2b2lkKTsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIGhyU1dSdW5UYWJsZV9oYW5kbGVyOwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jCmluZGV4IDYwYTE2MjkuLmIyM2QzMjIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jCkBAIC0xNCw2ICsxNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2hhcmR3YXJlL21lbW9yeS5oPgpAQCAtNjMsNiArNjQsMTAgQEAKICNpbmNsdWRlIDxzeXMvc3RhdGZzLmg+CiAjZW5kaWYKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoc2VfZmluZF9mcmVlX3ZhbHVlX2luX3NsaXN0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZGF0ZV9uX3RpbWUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjdGltZV90b190aW1ldCkKKwogI2lmIGRlZmluZWQoYnNkaTQpIHx8IGRlZmluZWQoZnJlZWJzZDMpIHx8IGRlZmluZWQoZnJlZWJzZDQpIHx8IGRlZmluZWQoZnJlZWJzZDUpIHx8IGRlZmluZWQoZGFyd2luKQogI2lmIEhBVkVfR0VURlNTVEFUICYmIGRlZmluZWQoTUZTTkFNRUxFTikKICNkZWZpbmUgTU9VTlRfTkZTCSJuZnMiCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyX25ldHdvcmsuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfbmV0d29yay5jCmluZGV4IDQ4ZDc0N2QuLjZjY2U1OGMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfbmV0d29yay5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfbmV0d29yay5jCkBAIC00LDYgKzQsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaD4KQEAgLTIyLDYgKzIzLDkgQEAKICNpbmNsdWRlICJtaWJJSS9pbnRlcmZhY2VzLmgiCiAjaW5jbHVkZSAiaHJfbmV0d29yay5oIgogCisjaWYgIWRlZmluZWQoIHNvbGFyaXMyICkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGludGVyZmFjZV9sZWdhY3kpCisjZW5kaWYgLyogIXNvbGFyaXMyICovCiAKICAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKgogCSAqCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyX3BhcnRpdGlvbi5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wYXJ0aXRpb24uYwppbmRleCBhYmU3NjkyLi4zYjlhYmQ2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ob3N0L2hyX3BhcnRpdGlvbi5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfcGFydGl0aW9uLmMKQEAgLTQ3LDYgKzQ3LDEwIEBACiAjaWZkZWYgTkVUU05NUF9DQU5fR0VUX0RJU0tfTEFCRUwKIHN0YXRpYyBjaGFyICAgICBIUlBfc2F2ZWRMYWJlbFsxMDI0XTsKICNlbmRpZgorI2lmZGVmIGRhcndpbgorZXh0ZXJuIGludAorR2V0X0hSX0Rpc2tfTGFiZWwoY2hhciAqc3RyaW5nLCBzaXplX3Qgc3RyX2xlbiwgY29uc3QgY2hhciAqZGV2ZnVsbCk7CisjZW5kaWYKIAogc3RhdGljIGludCAgICAgIEhSUF9EaXNrSW5kZXg7CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX3N3aW5zdC5jCmluZGV4IGMwM2FlNDQuLjI1NTgyYmQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYwpAQCAtNCw2ICs0LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2lmIEhBVkVfU1lTX1BBUkFNX0gKICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KQEAgLTcxLDYgKzcyLDggQEAKIAogI2RlZmluZSBIUlNXSU5TVF9NT05PVE9OSUNBTExZX0lOQ1JFQVNJTkcKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZGF0ZV9uX3RpbWUpCisKICAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKgogCSAqCiAJICogIEtlcm5lbCAmIGludGVyZmFjZSBpbmZvcm1hdGlvbiwKQEAgLTUxMiw5ICs1MTUsMTIgQEAKICAgICAgICAgICAgICAgICBzbnByaW50ZihzdHJpbmcsIHNpemVvZihzdHJpbmcpLCAiJXMvJXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN3aS0+c3dpX2RpcmVjdG9yeSwgc3dpLT5zd2lfbmFtZSk7CiAgICAgICAgICAgICAgICAgc3RyaW5nWyBzaXplb2Yoc3RyaW5nKS0xIF0gPSAwOwotICAgICAgICAgICAgICAgIHN0YXQoc3RyaW5nLCAmc3RhdF9idWYpOwotICAgICAgICAgICAgICAgIHJldCA9IGRhdGVfbl90aW1lKCZzdGF0X2J1Zi5zdF9tdGltZSwgdmFyX2xlbik7CisgICAgICAgICAgICAgICAgaWYgKHN0YXQoc3RyaW5nLCAmc3RhdF9idWYpID49IDApCisgICAgICAgICAgICAgICAgICAgIHJldCA9IGRhdGVfbl90aW1lKCZzdGF0X2J1Zi5zdF9tdGltZSwgdmFyX2xlbik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICAgICAgIH0gZWxzZSB7CitlcnI6CiAjaWYgTkVUU05NUF9OT19EVU1NWV9WQUxVRVMKICAgICAgICAgICAgICAgICByZXQgPSBOVUxMOwogI2Vsc2UKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYwppbmRleCBkZGExZDNmLi5mNDBlOTk3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jCkBAIC01MjQsNiArNTI0LDEyIEBACiAgICAgaWYgKChjcCA9IGdldF9wcm9jX2ZpbGVfbGluZSgiL3Byb2MvJWQvc3RhdCIsIHBpZCwgYnVmLCBidWZsZW4pKSA9PSBOVUxMICkKIAlyZXR1cm4gTlVMTDsKICAgICBmb3IgKGkgPSAwOyAqY3AgJiYgaSA8IHNraXA7ICsraSkgeworICAgICAgICAvKgorICAgICAgICAgKiBUaGUgc2Vjb25kIGZpZWxkIGlzICdjb21tJyBhbmQgY2FuIGNvbnRhaW4gc3BhY2VzLiBIZW5jZSBza2lwIHRvCisgICAgICAgICAqIHRoZSBjbG9zaW5nIHBhcmVudGhlc2lzLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKGkgPT0gMSAmJiAqY3AgPT0gJygnKQorICAgICAgICAgICAgY3AgPSBzdHJyY2hyKGNwLCAnKScpOwogCWNwID0gc2tpcF90b19uZXh0X2ZpZWxkKGNwKTsKICAgICB9CiAgICAgcmV0dXJuIGNwOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmMKaW5kZXggN2I3ZTc5Zi4uOWZlYTRmNCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uYworKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX3N5c3RlbS5jCkBAIC0xNSw2ICsxNSw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaWYgSEFWRV9TVFJJTkdfSAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2Vsc2UKQEAgLTc3LDYgKzc4LDggQEAKICNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CiAjZW5kaWYKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZGF0ZV9uX3RpbWUpCisKICNpZiAhZGVmaW5lZChVVE1QX0ZJTEUpICYmIGRlZmluZWQoX1BBVEhfVVRNUCkKICNkZWZpbmUgVVRNUF9GSUxFIF9QQVRIX1VUTVAKICNlbmRpZgpAQCAtOTgsMTEgKzEwMSwxNiBAQAogI2lmIGRlZmluZWQoc29sYXJpczIpCiBzdGF0aWMgc3RydWN0IG9wZW5wcm9taW8gKiBvcF9tYWxsb2Moc2l6ZV90IHNpemUpOwogc3RhdGljIHZvaWQgb3BfZnJlZShzdHJ1Y3Qgb3BlbnByb21pbyAqb3ApOworCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogc3RhdGljIGludCBzZXRfc29sYXJpc19ib290Y29tbWFuZF9wYXJhbWV0ZXIoaW50IGFjdGlvbiwgdV9jaGFyICogdmFyX3ZhbCwgdV9jaGFyIHZhcl92YWxfdHlwZSwgc2l6ZV90IHZhcl92YWxfbGVuLCB1X2NoYXIgKiBzdGF0UCwgb2lkICogbmFtZSwgc2l6ZV90IG5hbWVfbGVuKTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKIHN0YXRpYyBpbnQgc2V0X3NvbGFyaXNfZWVwcm9tX3BhcmFtZXRlcihjb25zdCBjaGFyICprZXksIGNvbnN0IGNoYXIgKnZhbHVlLCBzaXplX3QgdmFsdWVfbGVuKTsKIHN0YXRpYyBpbnQgZ2V0X3NvbGFyaXNfZWVwcm9tX3BhcmFtZXRlcihjb25zdCBjaGFyICpwYXJhbWV0ZXIsIGNoYXIgKm91dHB1dCk7CiBzdGF0aWMgbG9uZyAgICAgZ2V0X21heF9zb2xhcmlzX3Byb2Nlc3Nlcyh2b2lkKTsKICNlbmRpZgorCiBzdGF0aWMgaW50ICAgICAgZ2V0X2xvYWRfZGV2KHZvaWQpOwogc3RhdGljIGludCAgICAgIGNvdW50X3VzZXJzKHZvaWQpOwogZXh0ZXJuIGludCAgICAgIGNvdW50X3Byb2Nlc3Nlcyh2b2lkKTsKQEAgLTEyMyw2ICsxMzEsNyBAQAogI2RlZmluZQlIUlNZU19NQVhQUk9DUwkJNwogCiAjaWYgZGVmaW5lZChzb2xhcmlzMikKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBzdHJ1Y3QgdmFyaWFibGUyIGhyc3lzdGVtX3ZhcmlhYmxlc1tdID0gewogICAgIHtIUlNZU19VUFRJTUUsIEFTTl9USU1FVElDS1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAogICAgICB2YXJfaHJzeXMsIDEsIHsxfX0sCkBAIC0xMzksNiArMTQ4LDI0IEBACiAgICAge0hSU1lTX01BWFBST0NTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCiAgICAgIHZhcl9ocnN5cywgMSwgezd9fQogfTsKKyNlbHNlIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KK3N0cnVjdCB2YXJpYWJsZTIgaHJzeXN0ZW1fdmFyaWFibGVzW10gPSB7CisgICAge0hSU1lTX1VQVElNRSwgQVNOX1RJTUVUSUNLUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN5cywgMSwgezF9fSwKKyAgICB7SFJTWVNfREFURSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN5cywgMSwgezJ9fSwKKyAgICB7SFJTWVNfTE9BRF9ERVYsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3lzLCAxLCB7M319LAorICAgIHtIUlNZU19MT0FEX1BBUkFNLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3lzLCAxLCB7NH19LAorICAgIHtIUlNZU19VU0VSUywgQVNOX0dBVUdFLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3lzLCAxLCB7NX19LAorICAgIHtIUlNZU19QUk9DUywgQVNOX0dBVUdFLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3lzLCAxLCB7Nn19LAorICAgIHtIUlNZU19NQVhQUk9DUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzeXMsIDEsIHs3fX0KK307CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogI2Vsc2UKIHN0cnVjdCB2YXJpYWJsZTIgaHJzeXN0ZW1fdmFyaWFibGVzW10gPSB7CiAgICAge0hSU1lTX1VQVElNRSwgQVNOX1RJTUVUSUNLUywgTkVUU05NUF9PTERBUElfUk9OTFksCkBAIC0xNTcsNiArMTg0LDcgQEAKICAgICAgdmFyX2hyc3lzLCAxLCB7N319CiB9OwogI2VuZGlmCisKIG9pZCAgICAgICAgICAgICBocnN5c3RlbV92YXJpYWJsZXNfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDI1LCAxIH07CiAKIApAQCAtMjUzLDcgKzI4MSw5IEBACiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47CiAgICAgY2FzZSBIUlNZU19EQVRFOgogI2lmIGRlZmluZWQoSEFWRV9NS1RJTUUpICYmIGRlZmluZWQoSEFWRV9TVElNRSkKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUIAogICAgICAgICAqd3JpdGVfbWV0aG9kPW5zX3NldF90aW1lOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICNlbmRpZgogICAgICAgICB0aW1lKCZub3cpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBkYXRlX25fdGltZSgmbm93LCB2YXJfbGVuKTsKQEAgLTI2OSw3ICsyOTksOSBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICNlbGlmIGRlZmluZWQoc29sYXJpczIpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kPXNldF9zb2xhcmlzX2Jvb3Rjb21tYW5kX3BhcmFtZXRlcjsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgIGlmICggZ2V0X3NvbGFyaXNfZWVwcm9tX3BhcmFtZXRlcigiYm9vdC1jb21tYW5kIixib290cGFyYW0pICkgewogICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwidW5hYmxlIHRvIGxvb2t1cCBib290LWNvbW1hbmQgZnJvbSBlZXByb21cbiIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zNTksNiArMzkxLDcgQEAKICAgICBmcmVlKG9wKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIHN0YXRpYyBpbnQKIHNldF9zb2xhcmlzX2Jvb3Rjb21tYW5kX3BhcmFtZXRlcihpbnQgYWN0aW9uLAogICAgICAgICAgICAgdV9jaGFyICogdmFyX3ZhbCwKQEAgLTQyMyw2ICs0NTYsNyBAQAogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIHN0YXRpYyBpbnQgc2V0X3NvbGFyaXNfZWVwcm9tX3BhcmFtZXRlcihjb25zdCBjaGFyICprZXksIGNvbnN0IGNoYXIgKnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB2YXJfdmFsX2xlbikgewpAQCAtNTAyLDYgKzUzNiw3IEBACiAjZW5kaWYKIAogI2lmIGRlZmluZWQoSEFWRV9NS1RJTUUpICYmIGRlZmluZWQoSEFWRV9TVElNRSkKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBpbnQKIG5zX3NldF90aW1lKGludCBhY3Rpb24sCiAgICAgICAgICAgICB1X2NoYXIgKiB2YXJfdmFsLApAQCAtNTk1LDYgKzYzMCw3IEBACiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICNlbmRpZgogCiAgICAgICAgICAgICAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmggYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX3N5c3RlbS5oCmluZGV4IDVlMTJjMGQuLmZlZmZhNjAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uaApAQCAtOSw3ICs5LDkgQEAKIGV4dGVybiBGaW5kVmFyTWV0aG9kIHZhcl9ocnN5czsKIAogI2lmIGRlZmluZWQoSEFWRV9NS1RJTUUpICYmIGRlZmluZWQoSEFWRV9TVElNRSkKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBpbnQgbnNfc2V0X3RpbWUoaW50IGFjdGlvbiwgdV9jaGFyICogdmFyX3ZhbCwgdV9jaGFyIHZhcl92YWxfdHlwZSwgc2l6ZV90IHZhcl92YWxfbGVuLCB1X2NoYXIgKiBzdGF0UCwgb2lkICogbmFtZSwgc2l6ZV90IG5hbWVfbGVuKTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAjZW5kaWYKIAogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfTUlCR1JPVVBfSFJTWVNURU1fSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocmhfZmlsZXN5cy5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocmhfZmlsZXN5cy5jCmluZGV4IGVjMzQzZWQuLjRhYWI2YTAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJoX2ZpbGVzeXMuYworKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmMKQEAgLTE0LDYgKzE0LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvbWVtb3J5Lmg+CkBAIC02MCw2ICs2MSw4IEBACiAjaW5jbHVkZSA8c3lzL3N0YXRmcy5oPgogI2VuZGlmCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGRhdGVfbl90aW1lKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY3RpbWVfdG9fdGltZXQpCiAKICNkZWZpbmUgSFJGU19NT05PVE9OSUNBTExZX0lOQ1JFQVNJTkcKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocmhfc3RvcmFnZS5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocmhfc3RvcmFnZS5jCmluZGV4IGM0NThkNGQuLmNhMmY4NTQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJoX3N0b3JhZ2UuYworKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyaF9zdG9yYWdlLmMKQEAgLTEzMCw2ICsxMzAsMTAgQEAKIAkJCSAgICAgICBORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAogCQkJICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfU0tJUE5GU0lOSE9TVFJFU09VUkNFUyk7CiAKKyAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZyhBU05fQk9PTEVBTiwgYXBwbmFtZSwgInJlYWxTdG9yYWdlVW5pdHMiLAorICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCisgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BR0VOVF9SRUFMU1RPUkFHRVVOSVRTKTsKKwogICAgIHNubXBkX3JlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJzdG9yYWdlVXNlTkZTIiwgcGFyc2Vfc3RvcmFnZV9jb25maWcsIE5VTEwsCiAJIjEgfCAyXHRcdCgxID0gZW5hYmxlLCAyID0gZGlzYWJsZSkiKTsKIH0KQEAgLTQxNCwyNyArNDE4LDM5IEBACiAgICAgICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBtZW0tPmRlc2NyOwogICAgICAgICB9CiAgICAgY2FzZSBIUlNUT1JFX1VOSVRTOgotICAgICAgICBpZiAoc3RvcmVfaWR4ID4gTkVUU05NUF9NRU1fVFlQRV9NQVgpCi0gICAgICAgICAgICBsb25nX3JldHVybiA9IEhSRlNfZW50cnktPnVuaXRzOwotICAgICAgICBlbHNlIHsKKyAgICAgICAgaWYgKHN0b3JlX2lkeCA+IE5FVFNOTVBfTUVNX1RZUEVfTUFYKSB7CisgICAgICAgICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAorICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX1JFQUxTVE9SQUdFVU5JVFMpKQorICAgICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gSFJGU19lbnRyeS0+dW5pdHMgJiAweGZmZmZmZmZmOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gSFJGU19lbnRyeS0+dW5pdHNfMzI7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoICFtZW0gfHwgbWVtLT51bml0cyA9PSAtMSApCiAgICAgICAgICAgICAgICAgZ290byB0cnlfbmV4dDsKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gbWVtLT51bml0czsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwogICAgIGNhc2UgSFJTVE9SRV9TSVpFOgotICAgICAgICBpZiAoc3RvcmVfaWR4ID4gTkVUU05NUF9NRU1fVFlQRV9NQVgpCi0gICAgICAgICAgICBsb25nX3JldHVybiA9IEhSRlNfZW50cnktPnNpemU7Ci0gICAgICAgIGVsc2UgeworICAgICAgICBpZiAoc3RvcmVfaWR4ID4gTkVUU05NUF9NRU1fVFlQRV9NQVgpIHsKKyAgICAgICAgICAgIGlmIChuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCisgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfUkVBTFNUT1JBR0VVTklUUykpCisgICAgICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSBIUkZTX2VudHJ5LT5zaXplICYgMHhmZmZmZmZmZjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsb25nX3JldHVybiA9IEhSRlNfZW50cnktPnNpemVfMzI7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoICFtZW0gfHwgbWVtLT5zaXplID09IC0xICkKICAgICAgICAgICAgICAgICBnb3RvIHRyeV9uZXh0OwogICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSBtZW0tPnNpemU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKICAgICBjYXNlIEhSU1RPUkVfVVNFRDoKLSAgICAgICAgaWYgKHN0b3JlX2lkeCA+IE5FVFNOTVBfTUVNX1RZUEVfTUFYKQotICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSBIUkZTX2VudHJ5LT51c2VkOwotICAgICAgICBlbHNlIHsKKyAgICAgICAgaWYgKHN0b3JlX2lkeCA+IE5FVFNOTVBfTUVNX1RZUEVfTUFYKSB7CisgICAgICAgICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAorICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX1JFQUxTVE9SQUdFVU5JVFMpKQorICAgICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gSFJGU19lbnRyeS0+dXNlZCAmIDB4ZmZmZmZmZmY7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSBIUkZTX2VudHJ5LT51c2VkXzMyOworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKCAhbWVtIHx8IG1lbS0+c2l6ZSA9PSAtMSB8fCBtZW0tPmZyZWUgPT0gLTEgKQogICAgICAgICAgICAgICAgIGdvdG8gdHJ5X25leHQ7CiAgICAgICAgICAgICBsb25nX3JldHVybiA9IG1lbS0+c2l6ZSAtIG1lbS0+ZnJlZTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuYwppbmRleCA1ZjVjN2ZmLi44Y2I3M2U4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5jCkBAIC00LDE1ICs0LDI1IEBACiAgKiAkSWQkCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+Ci0jaW5jbHVkZSAibWliSUkvbWliSUlfY29tbW9uLmgiCi0jaW5jbHVkZSAiaWYtbWliL2lmVGFibGUvaWZUYWJsZV9jb25zdGFudHMuaCIKLSNpbmNsdWRlICJpZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmgiCiAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmg+CiAKKyNpbmNsdWRlICJtaWJJSS9taWJJSV9jb21tb24uaCIKKyNpbmNsdWRlICJpZi1taWIvaWZUYWJsZS9pZlRhYmxlLmgiCisjaW5jbHVkZSAiaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oIgorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaW50ZXJmYWNlX2FsbCwgbGlibmV0c25tcG1pYnMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaW50ZXJmYWNlLCBpbnRlcmZhY2VfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGludGVyZmFjZV9hY2Nlc3NfZW50cnlfc2V0X2FkbWluX3N0YXR1cywgaW50ZXJmYWNlX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpbnRlcmZhY2VfbGVnYWN5LCBpbnRlcmZhY2VfYWxsKQorCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfSU5URVJGQUNFX0FDQ0VTU19FTlRSWV9TRVRfQURNSU5fU1RBVFVTCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpbnRlcmZhY2VfYXJjaF9zZXRfYWRtaW5fc3RhdHVzKQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX0lOVEVSRkFDRV9BQ0NFU1NfRU5UUllfU0VUX0FETUlOX1NUQVRVUyAqLwogCiAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyoKQEAgLTMzNyw2ICszNDcsNyBAQAogICAgIGZyZWUoZW50cnkpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5URVJGQUNFX0xFR0FDWQogLyoKICAqIEJsZWNoIC0gYmFja3dhcmRzIGNvbXBhdGlibGUgbWliSUkvaW50ZXJmYWNlcyBzdHlsZSBpbnRlcmZhY2UKICAqIGZ1bmN0aW9ucywgc28gd2UgZG9uJ3QgaGF2ZSB0byB1cGRhdGUgb2xkZXIgbW9kdWxlcyB0byB1c2UKQEAgLTM0NiwzMyArMzU3LDMzIEBACiAgICAgISBkZWZpbmVkKCBORVRTTk1QX05PX0JBQ0tXQVJEU19DT01QQVRBQklMSVRZICkKIAogc3RhdGljIG5ldHNubXBfaXRlcmF0b3IgKml0ID0gTlVMTDsKLXN0YXRpYyBuZXRzbm1wX2NvbnRhaW5lciAqYyA9IE5VTEw7Ci1zdGF0aWMgbmV0c25tcF9pbnRlcmZhY2VfZW50cnkgKmUgPSBOVUxMOworc3RhdGljIGlmVGFibGVfcm93cmVxX2N0eCAqcm93ID0gTlVMTDsKIAogLyoqCi0gKiAKKyAqIFNldHVwIGFuIGl0ZXJhdG9yIGZvciBzY2FubmluZyB0aGUgaW50ZXJmYWNlcyB1c2luZyB0aGUgY2FjaGVkIGVudHJ5CisgKiBmcm9tIGlmLW1pYi9pZlRhYmxlLgogICovCiB2b2lkCiBJbnRlcmZhY2VfU2Nhbl9Jbml0KHZvaWQpCiB7Ci0gICAgLyoKLSAgICAgKiBpZlRhYmxlIGNvbnRhaW5lciBzaG91bGRuJ3QgY2hhbmdlLCBzbyB3ZSBzaG91bGRuJyBoYXZlIHRvCi0gICAgICogcmUtZmV0Y2ggaXQgZXZlcnkgdGltZS4KLSAgICAgKi8KLSAgICBpZiAoTlVMTCAhPSBjKQotICAgICAgICBuZXRzbm1wX2FjY2Vzc19pbnRlcmZhY2VfY29udGFpbmVyX2ZyZWUoYywgMCk7Ci0KLSAgICBjID0gbmV0c25tcF9hY2Nlc3NfaW50ZXJmYWNlX2NvbnRhaW5lcl9sb2FkKE5VTEwsIDApOworICAgIG5ldHNubXBfY29udGFpbmVyICpjb250ID0gTlVMTDsKKyAgICBuZXRzbm1wX2NhY2hlICpjYWNoZSAgICA9IE5VTEw7IAogICAgIAotICAgIGlmIChOVUxMICE9IGMpIHsKKyAgICBjYWNoZSA9IG5ldHNubXBfY2FjaGVfZmluZF9ieV9vaWQoaWZUYWJsZV9vaWQsIGlmVGFibGVfb2lkX3NpemUpOworICAgIGlmIChOVUxMICE9IGNhY2hlKSB7CisgICAgICAgIG5ldHNubXBfY2FjaGVfY2hlY2tfYW5kX3JlbG9hZChjYWNoZSk7CisgICAgICAgIGNvbnQgPSAobmV0c25tcF9jb250YWluZXIqKSBjYWNoZS0+bWFnaWM7CisgICAgfQorICAgIAorICAgIGlmIChOVUxMICE9IGNvbnQpIHsKICAgICAgICAgaWYgKE5VTEwgIT0gaXQpCiAgICAgICAgICAgICBJVEVSQVRPUl9SRUxFQVNFKGl0KTsKICAgICAKLSAgICAgICAgaXQgPSBDT05UQUlORVJfSVRFUkFUT1IoYyk7CisgICAgICAgIGl0ID0gQ09OVEFJTkVSX0lURVJBVE9SKGNvbnQpOwogICAgIH0KICAgIAogICAgIGlmIChOVUxMICE9IGl0KQotICAgICAgICBlID0gKG5ldHNubXBfaW50ZXJmYWNlX2VudHJ5KilJVEVSQVRPUl9GSVJTVChpdCk7CisgICAgICAgIHJvdyA9IChpZlRhYmxlX3Jvd3JlcV9jdHgqKUlURVJBVE9SX0ZJUlNUKGl0KTsKIH0KIAogaW50CkBAIC0zOTQsOSArNDA1LDEyIEBACiBJbnRlcmZhY2VfU2Nhbl9OZXh0SW50KGludCAqaW5kZXgsIGNoYXIgKm5hbWUsIG5ldHNubXBfaW50ZXJmYWNlX2VudHJ5ICoqZW50cnksCiAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRjKQogewotICAgIGlmIChOVUxMID09IGUpCi0gICAgICAgIHJldHVybiAwOworICAgIG5ldHNubXBfaW50ZXJmYWNlX2VudHJ5KiBlID0gTlVMTDsKIAorICAgIGlmIChOVUxMID09IHJvdykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgZSA9IHJvdy0+ZGF0YS5pZmVudHJ5OwogICAgIGlmKGluZGV4KQogICAgICAgICAqaW5kZXggPSBlLT5pbmRleDsKIApAQCAtNDA2LDEzICs0MjAsMTQgQEAKICAgICBpZiAoZW50cnkpCiAgICAgICAgICplbnRyeSA9IGU7CiAKLSAgICBlID0gKG5ldHNubXBfaW50ZXJmYWNlX2VudHJ5KilJVEVSQVRPUl9ORVhUKGl0KTsKKyAgICByb3cgPSAoaWZUYWJsZV9yb3dyZXFfY3R4KikgSVRFUkFUT1JfTkVYVChpdCk7CiAKICAgICByZXR1cm4gMTsKIH0KICNlbmRpZiAvKiBORVRTTk1QX05PX0JBQ0tXQVJEU19DT01QQVRBQklMSVRZICovCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTlRFUkZBQ0VfTEVHQUNZICovCiAKLQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lOVEVSRkFDRV9BQ0NFU1NfRU5UUllfU0VUX0FETUlOX1NUQVRVUwogLyoqCiAgKgogICogQHJldHZhbCAwICAgOiBzdWNjZXNzCkBAIC00NDEsNiArNDU2LDcgQEAKICAgICByZXR1cm4gcmM7CiB9CiAjZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lOVEVSRkFDRV9BQ0NFU1NfRU5UUllfU0VUX0FETUlOX1NUQVRVUyAqLwogCiAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyoKQEAgLTY4MSw4ICs2OTcsNyBAQAogICAgICAgICgwID09IHN0cmNtcChsaHMtPmRlc2NyLCByaHMtPmRlc2NyKSkpCiAgICAgICAgIDsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKE5VTEwgIT0gbGhzLT5kZXNjcikKLSAgICAgICAgICAgIFNOTVBfRlJFRShsaHMtPmRlc2NyKTsKKyAgICAgICAgU05NUF9GUkVFKGxocy0+ZGVzY3IpOwogICAgICAgICBpZiAocmhzLT5kZXNjcikgewogICAgICAgICAgICAgbGhzLT5kZXNjciA9IHN0cmR1cChyaHMtPmRlc2NyKTsKICAgICAgICAgICAgIGlmKE5VTEwgPT0gbGhzLT5kZXNjcikKQEAgLTcxMCw4ICs3MjUsNyBAQAogICAgICAgICBpZihyaHMtPnBhZGRyX2xlbikKICAgICAgICAgICAgIG1lbWNweShsaHMtPnBhZGRyLHJocy0+cGFkZHIscmhzLT5wYWRkcl9sZW4pOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChOVUxMICE9IGxocy0+cGFkZHIpCi0gICAgICAgICAgICBTTk1QX0ZSRUUobGhzLT5wYWRkcik7CisgICAgICAgIFNOTVBfRlJFRShsaHMtPnBhZGRyKTsKICAgICAgICAgaWYgKHJocy0+cGFkZHIpIHsKICAgICAgICAgICAgIGxocy0+cGFkZHIgPSAoY2hhciopbWFsbG9jKHJocy0+cGFkZHJfbGVuKTsKICAgICAgICAgICAgIGlmKE5VTEwgPT0gbGhzLT5wYWRkcikKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfaW9jdGwuYyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfaW9jdGwuYwppbmRleCA1YmZiZjlhLi5kYjJjMjQ1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2lvY3RsLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9pb2N0bC5jCkBAIC00LDYgKzQsNyBAQAogICogJElkJAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgIm1pYklJL21pYklJX2NvbW1vbi5oIgogI2luY2x1ZGUgImlmLW1pYi9pZlRhYmxlL2lmVGFibGVfY29uc3RhbnRzLmgiCkBAIC0xMyw2ICsxNCw4IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmg+CiAjaW5jbHVkZSAiaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaW50ZXJmYWNlX2lvY3RsX2ZsYWdzX3NldCwgaW50ZXJmYWNlX2FsbCkKKwogI2lmZGVmIEhBVkVfTkVUX0lGX0gKICNpbmNsdWRlIDxuZXQvaWYuaD4KICNlbmRpZgpAQCAtMjgyLDYgKzI4NSw3IEBACiAgICAgcmV0dXJuIHJjOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5URVJGQUNFX0lPQ1RMX0ZMQUdTX1NFVAogLyoqCiAgKiBpbnRlcmZhY2UgZW50cnkgZmxhZ3MgaW9jdGwgd3JhcHBlcgogICoKQEAgLTM0OSw2ICszNTMsNyBAQAogCiAgICAgcmV0dXJuIDA7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTlRFUkZBQ0VfSU9DVExfRkxBR1NfU0VUICovCiAjZW5kaWYgLyogU0lPQ0dJRkZMQUdTICovCiAKICNpZmRlZiBTSU9DR0lGTVRVCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMgYi9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMKaW5kZXggZGYwOTczNy4uZjE5NmZjOCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYwpAQCAtNCwxNCArNCw1NiBAQAogICogJElkJAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShmZF9ldmVudF9tYW5hZ2VyKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZGVsZXRlX3ByZWZpeF9pbmZvKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY3JlYXRlX3ByZWZpeF9pbmZvKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGludGVyZmFjZV9hcmNoX3NldF9hZG1pbl9zdGF0dXMsIGludGVyZmFjZV9hbGwpCisKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9JTlRFUkZBQ0VfQVJDSF9TRVRfQURNSU5fU1RBVFVTCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpbnRlcmZhY2VfaW9jdGxfZmxhZ3Nfc2V0KQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX0lOVEVSRkFDRV9BUkNIX1NFVF9BRE1JTl9TVEFUVVMgKi8KKworI2lmZGVmIEhBVkVfUENJX0xPT0tVUF9OQU1FCisjaW5jbHVkZSA8cGNpL3BjaS5oPgorI2luY2x1ZGUgPHNldGptcC5oPgorc3RhdGljIHN0cnVjdCBwY2lfYWNjZXNzICpwY2lfYWNjZXNzOworCisvKiBBdm9pZCBsZXR0aW5nIGxpYnBjaSBjYWxsIGV4aXQoMSkgd2hlbiBubyBQQ0kgYnVzIGlzIGF2YWlsYWJsZS4gKi8KK3N0YXRpYyBpbnQgZG9fbG9uZ2ptcCA9MDsKK3N0YXRpYyBqbXBfYnVmIGVycl9idWY7CitzdGF0aWMgdm9pZAorbmV0c25tcF9wY2lfZXJyb3IoY2hhciAqbXNnLCAuLi4pCit7CisgICAgdmFfbGlzdCBhcmdzOworICAgIGNoYXIgKmJ1ZjsKKyAgICBpbnQgYnVmbGVuOworCisgICAgdmFfc3RhcnQoYXJncywgbXNnKTsKKyAgICBidWZsZW4gPSBzdHJsZW4oInBjaWxpYjogIikrc3RybGVuKG1zZykrMjsKKyAgICBidWYgPSBtYWxsb2MoYnVmbGVuKTsKKyAgICBzbnByaW50ZihidWYsIGJ1ZmxlbiwgInBjaWxpYjogJXNcbiIsIG1zZyk7CisgICAgc25tcF92bG9nKExPR19FUlIsIGJ1ZiwgYXJncyk7CisgICAgZnJlZShidWYpOworICAgIHZhX2VuZChhcmdzKTsKKyAgICBpZiAoZG9fbG9uZ2ptcCkKKwlsb25nam1wKGVycl9idWYsIDEpOworICAgIGVsc2UKKwlleGl0KDEpOworfQorI2VuZGlmCisKICNpZmRlZiBIQVZFX0xJTlVYX0VUSFRPT0xfSAogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaWZuZGVmIEhBVkVfUENJX0xPT0tVUF9OQU1FCiB0eXBlZGVmIF9fdTY0IHU2NDsgICAgICAgICAvKiBoYWNrLCBzbyB3ZSBtYXkgaW5jbHVkZSBrZXJuZWwncyBldGh0b29sLmggKi8KIHR5cGVkZWYgX191MzIgdTMyOyAgICAgICAgIC8qIGRpdHRvICovCiB0eXBlZGVmIF9fdTE2IHUxNjsgICAgICAgICAvKiBkaXR0byAqLwogdHlwZWRlZiBfX3U4IHU4OyAgICAgICAgICAgLyogZGl0dG8gKi8KKyNlbmRpZgorCiAjaW5jbHVkZSA8bGludXgvZXRodG9vbC5oPgogI2VuZGlmIC8qIEhBVkVfTElOVVhfRVRIVE9PTF9IICovCiAKQEAgLTM0LDcgKzc2LDYgQEAKIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDxlcnJuby5oPgogCkBAIC0xMjcsNiArMTY4LDI2IEBACiAgICAgbGlzdF9pbmZvLmxpc3RfaGVhZCA9ICZwcmVmaXhfaGVhZF9saXN0OwogICAgIG5ldHNubXBfcHJlZml4X2xpc3RlbigpOwogI2VuZGlmCisKKyNpZmRlZiBIQVZFX1BDSV9MT09LVVBfTkFNRQorICAgIHBjaV9hY2Nlc3MgPSBwY2lfYWxsb2MoKTsKKyAgICBpZiAoIXBjaV9hY2Nlc3MpIHsKKwlzbm1wX2xvZyhMT0dfRVJSLCAicGNpbGliOiBwY2lfYWxsb2MgZmFpbGVkXG4iKTsKKwlyZXR1cm47CisgICAgfQorCisgICAgcGNpX2FjY2Vzcy0+ZXJyb3IgPSBuZXRzbm1wX3BjaV9lcnJvcjsKKworICAgIGRvX2xvbmdqbXAgPSAxOworICAgIGlmIChzZXRqbXAoZXJyX2J1ZikpIHsKKyAgICAgICAgcGNpX2NsZWFudXAocGNpX2FjY2Vzcyk7CisJc25tcF9sb2coTE9HX0VSUiwgInBjaWxpYjogcGNpX2luaXQgZmFpbGVkXG4iKTsKKyAgICAgICAgcGNpX2FjY2VzcyA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKHBjaV9hY2Nlc3MpCisJcGNpX2luaXQocGNpX2FjY2Vzcyk7CisgICAgZG9fbG9uZ2ptcCA9IDA7CisjZW5kaWYKIH0KIAogLyoKQEAgLTI1Niw2ICszMTcsNjkgQEAKICAgICB9CiB9CiAKKyNpZmRlZiBIQVZFX1BDSV9MT09LVVBfTkFNRQorCisvKiBHZXQgdmFsdWUgZnJvbSBzeXNmcyBmaWxlICovCitzdGF0aWMgaW50IHN5c2ZzX2dldF9pZChjb25zdCBjaGFyICpwYXRoLCB1bnNpZ25lZCBzaG9ydCAqaWQpCit7CisgICAgRklMRSAqZmluOworICAgIGludCBuOworCisgICAgaWYgKCEoZmluID0gZm9wZW4ocGF0aCwgInIiKSkpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppbnRlcmZhY2UiLAorICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIG9wZW4gJXNcbiIsIHBhdGgpKTsKKwlyZXR1cm4gMDsKKyAgICB9CisKKyAgICBuID0gZnNjYW5mKGZpbiwgIiVoeCIsIGlkKTsKKyAgICBmY2xvc2UoZmluKTsKKworICAgIHJldHVybiBuID09IDE7Cit9CisKKy8qIEdldCBpbnRlcmZhY2UgZGVzY3JpcHRpb24gZm9yIFBDSSBkZXZpY2UKKyAqIGJ5IHVzaW5nIHN5c2ZzIHRvIGZpbmQgdmVuZG9yIGFuZCBkZXZpY2UKKyAqIHRoZW4gbG9va3VwIG5hbWUgKC1scGNpKQorICoKKyAqIEZvciBzb2Z0d2FyZSBpbnRlcmZhY2VzIHRoZXJlIGlzIG5vIFBDSSBpbmZvcm1hdGlvbgorICogc28gZGVzY3JpcHRpb24gd2lsbCBub3QgYmUgc2V0LgorICovCitzdGF0aWMgdm9pZAorX2FyY2hfaW50ZXJmYWNlX2Rlc2NyaXB0aW9uX2dldChuZXRzbm1wX2ludGVyZmFjZV9lbnRyeSAqZW50cnkpCit7CisgICAgY29uc3QgY2hhciAqZGVzY3I7CisgICAgY2hhciBidWZbMjU2XTsKKyAgICB1bnNpZ25lZCBzaG9ydCB2ZW5kb3JfaWQsIGRldmljZV9pZDsKKworICAgIGlmICghcGNpX2FjY2VzcykKKwlyZXR1cm47CisKKyAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLAorCSAgICAgIi9zeXMvY2xhc3MvbmV0LyVzL2RldmljZS92ZW5kb3IiLCBlbnRyeS0+bmFtZSk7CisKKyAgICBpZiAoIXN5c2ZzX2dldF9pZChidWYsICZ2ZW5kb3JfaWQpKQorCXJldHVybjsKKworICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCisJICAgICAiL3N5cy9jbGFzcy9uZXQvJXMvZGV2aWNlL2RldmljZSIsIGVudHJ5LT5uYW1lKTsKKworICAgIGlmICghc3lzZnNfZ2V0X2lkKGJ1ZiwgJmRldmljZV9pZCkpCisJcmV0dXJuOworCisgICAgZGVzY3IgPSBwY2lfbG9va3VwX25hbWUocGNpX2FjY2VzcywgYnVmLCBzaXplb2YoYnVmKSwKKwkJCSAgICBQQ0lfTE9PS1VQX1ZFTkRPUiB8IFBDSV9MT09LVVBfREVWSUNFLAorCQkJICAgIHZlbmRvcl9pZCwgZGV2aWNlX2lkLCAwLCAwKTsKKyAgICBpZiAoZGVzY3IpIHsKKwlmcmVlKGVudHJ5LT5kZXNjcik7CisJZW50cnktPmRlc2NyID0gc3RyZHVwKGRlc2NyKTsKKyAgICB9IGVsc2UgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmludGVyZmFjZSIsCisgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgcGNpX2xvb2t1cF9uYW1lIHZlbmRvcj0lI2h4IGRldmljZT0lI2h4XG4iLAorCQkgICAgdmVuZG9yX2lkLCBkZXZpY2VfaWQpKTsKKyAgICB9Cit9CisjZW5kaWYKKwogCiAjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgogLyoqCkBAIC02MTMsOSArNzM3LDkgQEAKICAgICAgICAgfQogICAgICAgICBlbnRyeS0+bnNfZmxhZ3MgPSBmbGFnczsgLyogaW5pdGlhbCBmbGFnczsgd2UnbGwgc2V0IG1vcmUgbGF0ZXIgKi8KIAotICAgICAgICAvKgotICAgICAgICAgKiB4eHgtcmtzOiBnZXQgZGVzY3IgYnkgbGlua2luZyBtZW0gZnJvbSAvcHJvYy9wY2kgYW5kIC9wcm9jL2lvbWVtCi0gICAgICAgICAqLworI2lmZGVmIEhBVkVfUENJX0xPT0tVUF9OQU1FCisJX2FyY2hfaW50ZXJmYWNlX2Rlc2NyaXB0aW9uX2dldChlbnRyeSk7CisjZW5kaWYKIAogCiAgICAgICAgIC8qCkBAIC03NzksNiArOTAzLDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lOVEVSRkFDRV9BUkNIX1NFVF9BRE1JTl9TVEFUVVMKIGludAogbmV0c25tcF9hcmNoX3NldF9hZG1pbl9zdGF0dXMobmV0c25tcF9pbnRlcmZhY2VfZW50cnkgKiBlbnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpZkFkbWluU3RhdHVzX3ZhbCkKQEAgLTc5NSw2ICs5MjAsNyBAQAogICAgIHJldHVybiBuZXRzbm1wX2FjY2Vzc19pbnRlcmZhY2VfaW9jdGxfZmxhZ3Nfc2V0KC0xLCBlbnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRkZfVVAsIGFuZF9jb21wbGVtZW50KTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lOVEVSRkFDRV9BUkNIX1NFVF9BRE1JTl9TVEFUVVMgKi8KIAogI2lmZGVmIEhBVkVfTElOVVhfRVRIVE9PTF9ICiAvKioKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfb3BlbmJzZC5jIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9vcGVuYnNkLmMKaW5kZXggMjA0NTY4Yi4uODM0MGRjNiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9vcGVuYnNkLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9vcGVuYnNkLmMKQEAgLTQsMTAgKzQsMTMgQEAKICAqICRJZCQKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJtaWJJSS9taWJJSV9jb21tb24uaCIKICNpbmNsdWRlICJpZi1taWIvaWZUYWJsZS9pZlRhYmxlX2NvbnN0YW50cy5oIgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaW50ZXJmYWNlX2FyY2hfc2V0X2FkbWluX3N0YXR1cywgaW50ZXJmYWNlX2FsbCkKKwogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKICNpZiBIQVZFX1NZU19JT0NUTF9ICkBAIC0zODYsNiArMzg5LDcgQEAKICAgICByZXR1cm4gKnNwZWVkOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5URVJGQUNFX0FSQ0hfU0VUX0FETUlOX1NUQVRVUwogaW50CiBuZXRzbm1wX2FyY2hfc2V0X2FkbWluX3N0YXR1cyhuZXRzbm1wX2ludGVyZmFjZV9lbnRyeSAqIGVudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlmQWRtaW5TdGF0dXNfdmFsKQpAQCAtMzk5LDQgKzQwMyw1IEBACiAKICAgICByZXR1cm4gLTQ7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTlRFUkZBQ0VfQVJDSF9TRVRfQURNSU5fU1RBVFVTICovCiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc29sYXJpczIuYyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc29sYXJpczIuYwppbmRleCAyYjBmYzRjLi44YWE0N2Y4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX3NvbGFyaXMyLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zb2xhcmlzMi5jCkBAIC0yLDYgKzIsNyBAQAogICogIEludGVyZmFjZSBNSUIgYXJjaGl0ZWN0dXJlIHN1cHBvcnQgZm9yIFNvbGFyaXMKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJpZi1taWIvaWZUYWJsZS9pZlRhYmxlX2NvbnN0YW50cy5oIgogI2luY2x1ZGUgImtlcm5lbF9zdW5vczUuaCIKQEAgLTE2LDYgKzE3LDggQEAKICNpbmNsdWRlIDxzdHJpbmdzLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpbnRlcmZhY2VfYXJjaF9zZXRfYWRtaW5fc3RhdHVzLCBpbnRlcmZhY2VfYWxsKQorCiBzdGF0aWMgaW50IF9zZXRfaXBfZmxhZ3NfdjQobmV0c25tcF9pbnRlcmZhY2VfZW50cnkgKiwgbWliMl9pZkVudHJ5X3QgKik7CiBzdGF0aWMgaW50IF9tYXRjaF9pZm5hbWVfdjRhZGRyKHZvaWQgKmlmbmFtZSwgdm9pZCAqaXBhZGRyKTsKIHN0YXRpYyBpbnQgX2dldF92NGFkZHIobWliMl9pZkVudHJ5X3QgKmlmZSwgbWliMl9pcEFkZHJFbnRyeV90ICplKTsKQEAgLTM0NSw2ICszNDgsNyBAQAogfQogI2VuZGlmIC8qIFNPTEFSSVNfSEFWRV9JUFY2X01JQl9TVVBQT1JUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTlRFUkZBQ0VfQVJDSF9TRVRfQURNSU5fU1RBVFVTCiBpbnQKIG5ldHNubXBfYXJjaF9zZXRfYWRtaW5fc3RhdHVzKG5ldHNubXBfaW50ZXJmYWNlX2VudHJ5ICogZW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaWZBZG1pblN0YXR1c192YWwpCkBAIC0zNTYsMyArMzYwLDQgQEAKICAgICAgKi8KICAgICByZXR1cm4gKC0xKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lOVEVSRkFDRV9BUkNIX1NFVF9BRE1JTl9TVEFUVVMgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc3lzY3RsLmMgYi9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX3N5c2N0bC5jCmluZGV4IDcyNTYwYTQuLjFkZWZmODIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc3lzY3RsLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zeXNjdGwuYwpAQCAtNiw2ICs2LDcgQEAKICAqICRJZCQKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJtaWJJSS9taWJJSV9jb21tb24uaCIKICNpbmNsdWRlICJpZi1taWIvaWZUYWJsZS9pZlRhYmxlX2NvbnN0YW50cy5oIgpAQCAtMjksNiArMzAsOCBAQAogI2luY2x1ZGUgPG5ldC9pZl90eXBlcy5oPgogI2luY2x1ZGUgPG5ldC9pZl9tZWRpYS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaW50ZXJmYWNlX2FyY2hfc2V0X2FkbWluX3N0YXR1cywgaW50ZXJmYWNlX2FsbCkKKwogLyoKICAqIGFjY291bnQgZm9yIG1pbm9yIGRpZmZlcmVuY2VzIGJldHdlZW4gRnJlZUJTRCBhbmQgT3BlbkJTRC4KICAqIElmIHRoaXMgZ2V0cyB1bnJ1bHksIHNwbGl0IHN0dWZmIG91dCBpbnRvIHRoZSByZXNwZWN0aXZlCkBAIC01NjAsNiArNTYzLDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lOVEVSRkFDRV9BUkNIX1NFVF9BRE1JTl9TVEFUVVMKIGludAogbmV0c25tcF9hcmNoX3NldF9hZG1pbl9zdGF0dXMobmV0c25tcF9pbnRlcmZhY2VfZW50cnkgKiBlbnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpZkFkbWluU3RhdHVzX3ZhbCkKQEAgLTU3NCwzICs1NzgsNCBAQAogCiAgICAgcmV0dXJuIC00OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5URVJGQUNFX0FSQ0hfU0VUX0FETUlOX1NUQVRVUyAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5jCmluZGV4IDgwODI5Y2MuLmQ5YjcyNTIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmMKQEAgLTE0LDkgKzE0LDE0IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaW50ZXJmYWNlX2FjY2Vzc19lbnRyeV9zZXRfYWRtaW5fc3RhdHVzKQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAvKgogICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKICAqLwpAQCAtMTc4Myw2ICsxNzg4LDkgQEAKIAogCiAvKiogQH0gKi8KKworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqCkBAIC0yMzI5LDYgKzIzMzcsOCBAQAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpZlRhYmxlX2NoZWNrX2RlcGVuZGVuY2llcyAqLwogCiAKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKIHN0YXRpYyBpbnQKIF9pZl9udW1iZXJfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmggYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmgKaW5kZXggNDUyYjg2My4uZTkwNjM0ZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuaApAQCAtNDUxLDYgKzQ1MSw3IEBACiAKIAogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIC8qCiAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAqIFNFVCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMKQEAgLTY2Niw3ICs2NjcsNyBAQAogCiAKICAgICBpbnQgICAgICAgICAgICAgaWZUYWJsZV9jaGVja19kZXBlbmRlbmNpZXMoaWZUYWJsZV9yb3dyZXFfY3R4ICogY3R4KTsKLQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIC8qCiAgICAgICogRFVNTVkgbWFya2VycywgaWdub3JlCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmMgYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmMKaW5kZXggZmFmMzdkNi4uYjhhMDliNSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYwpAQCAtOCw5ICs4LDEyIEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjb250YWluZXJfbGlua2VkX2xpc3QpCisKIC8qCiAgKiBpbmNsdWRlIG91ciBwYXJlbnQgaGVhZGVyIAogICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9pbnRlcmZhY2UuYwppbmRleCA0OWRlMzU2Li40MWQzOGVlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmMKQEAgLTMwLDYgKzMwLDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTQ3LDYgKzQ4LDIxIEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaWZUYWJsZV9leHRlcm5hbF9hY2Nlc3MsIGxpYm5ldHNubXBtaWJzKQorCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyb3dfbWVyZ2UpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShiYWJ5X3N0ZXBzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlmdGFibGVfY29udGFpbmVyX2dldCwgaWZUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaWZ4dGFibGVfc2h1dGRvd25faW50ZXJmYWNlLCBuZXRzbm1wX3VudXNlZCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpZlhUYWJsZV9jb250YWluZXJfc2l6ZSwgaWZYVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlmWFRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQsIGlmWFRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpZlhUYWJsZV9yZWdpc3RyYXRpb25fZ2V0LCBpZlhUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaWZYVGFibGVfY29udGFpbmVyX2dldCwgaWZYVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlmdGFibGVfY29udGFpbmVyX3NpemUsIGlmVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlmdGFibGVfcmVnaXN0cmF0aW9uX3NldCwgaWZUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaWZ0YWJsZV9yZWdpc3RyYXRpb25fZ2V0LCBpZlRhYmxlX2V4dGVybmFsX2FjY2VzcykKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqCkBAIC04MiwxOSArOTgsMjMgQEAKIHN0YXRpYyB2b2lkICAgICBfaWZUYWJsZV9jb250YWluZXJfc2h1dGRvd24oaWZUYWJsZV9pbnRlcmZhY2VfY3R4ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZfY3R4KTsKIAotCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZUQUJMRV9DT05UQUlORVJfR0VUCiBuZXRzbm1wX2NvbnRhaW5lciAqCiBpZlRhYmxlX2NvbnRhaW5lcl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gaWZUYWJsZV9pZl9jdHguY29udGFpbmVyOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZUQUJMRV9DT05UQUlORVJfR0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JRlRBQkxFX1JFR0lTVFJBVElPTl9HRVQKIGlmVGFibGVfcmVnaXN0cmF0aW9uICoKIGlmVGFibGVfcmVnaXN0cmF0aW9uX2dldCh2b2lkKQogewogICAgIHJldHVybiBpZlRhYmxlX2lmX2N0eC51c2VyX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lGVEFCTEVfUkVHSVNUUkFUSU9OX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZUQUJMRV9SRUdJU1RSQVRJT05fU0VUCiBpZlRhYmxlX3JlZ2lzdHJhdGlvbiAqCiBpZlRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQoaWZUYWJsZV9yZWdpc3RyYXRpb24gKiBuZXdyZWcpCiB7CkBAIC0xMDIsMTIgKzEyMiwxNSBAQAogICAgIGlmVGFibGVfaWZfY3R4LnVzZXJfY3R4ID0gbmV3cmVnOwogICAgIHJldHVybiBvbGQ7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JRlRBQkxFX1JFR0lTVFJBVElPTl9TRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lGVEFCTEVfQ09OVEFJTkVSX1NJWkUKIGludAogaWZUYWJsZV9jb250YWluZXJfc2l6ZSh2b2lkKQogewogICAgIHJldHVybiBDT05UQUlORVJfU0laRShpZlRhYmxlX2lmX2N0eC5jb250YWluZXIpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZUQUJMRV9DT05UQUlORVJfU0laRSAqLwogCiB1X2ludAogaWZUYWJsZV9kaXJ0eV9nZXQodm9pZCkKQEAgLTE0NSw3ICsxNjgsNyBAQAogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaWZUYWJsZV9wb3N0X3JlcXVlc3Q7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pZlRhYmxlX29iamVjdF9sb29rdXA7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pZlRhYmxlX2dldF92YWx1ZXM7Ci0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lmVGFibGVfY2hlY2tfb2JqZWN0czsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lmVGFibGVfdW5kb19zZXR1cDsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lmVGFibGVfc2V0X3ZhbHVlczsKQEAgLTE2MCw3ICsxODMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb2x1bW4pOwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiBpZlRhYmxlX2RhdGEgICAqaWZUYWJsZV9hbGxvY2F0ZV9kYXRhKHZvaWQpOwogCkBAIC0yNTAsNyArMjczLDcgQEAKICAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCA9IF9tZmRfaWZUYWJsZV9wb3N0X3JlcXVlc3Q7CiAKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAgICAgLyoKICAgICAgKiBSRVFVSVJFRCB3cmFwcGVycyBmb3Igc2V0IHJlcXVlc3QgaGFuZGxpbmcKICAgICAgKi8KQEAgLTI3Myw3ICsyOTYsNyBAQAogICAgICAqLwogICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+Y29uc2lzdGVuY3lfY2hlY2tzID0KICAgICAgICAgX21mZF9pZlRhYmxlX2NoZWNrX2RlcGVuZGVuY2llczsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICAgICoKQEAgLTI4NiwxMSArMzA5LDE0IEBACiAgICAgcmVnaW5mbyA9CiAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fY3JlYXRlKCJpZlRhYmxlIiwgaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZUYWJsZV9vaWQsIGlmVGFibGVfb2lkX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX0JBQllfU1RFUAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSEFORExFUl9DQU5fUldSSVRFCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX0JBQllfU1RFUCB8CisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUKKyNlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLworICAgICAgICAgICAgKTsKKwogICAgIGlmIChOVUxMID09IHJlZ2luZm8pIHsKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIHJlZ2lzdGVyaW5nIHRhYmxlIGlmVGFibGVcbiIpOwogICAgICAgICByZXR1cm47CkBAIC0zMDgsNyArMzM0LDcgQEAKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUE9TVF9SRVFVRVNUOwogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5zZXRfdmFsdWVzKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1NFVF9WQUxVRVM7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+aXJyZXZlcnNpYmxlX2NvbW1pdCkKQEAgLTMzMSw3ICszNTcsNyBAQAogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NPTU1JVDsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NvbW1pdCkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX0NPTU1JVDsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOwpAQCAtMzczLDcgKzM5OSw3IEBACiAgICAgICovCiAgICAgewogICAgICAgICBjb25zdCBvaWQgICAgICAgaWZ0bGNfb2lkW10gPSB7IElGVEFCTEVfTEFTVF9DSEFOR0UgfTsKLSAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcihuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbgorICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyMihuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiaWZUYWJsZUxhc3RDaGFuZ2VkIiwgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZ0bGNfb2lkLCBPSURfTEVOR1RIKGlmdGxjX29pZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKSwKQEAgLTEwMzksOCArMTA2NSw4IEBACiAKIAogCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogU0VUIHByb2Nlc3NpbmcKQEAgLTE4MTgsNyArMTg0NCw3IEBACiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9pZlRhYmxlX2lycmV2ZXJzaWJsZV9jb21taXQgKi8KLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtMTk2NCw2ICsxOTkwLDcgQEAKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2lmVGFibGVfY29udGFpbmVyX3NodXRkb3duICovCiAKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lGVEFCTEVfRVhURVJOQUxfQUNDRVNTCiBpZlRhYmxlX3Jvd3JlcV9jdHggKgogaWZUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgoaWZUYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KQogewpAQCAtMTk4OSwzICsyMDE2LDQgQEAKIAogICAgIHJldHVybiByb3dyZXFfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZUQUJMRV9FWFRFUk5BTF9BQ0NFU1MgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmMKaW5kZXggMjNmNzEzNy4uYmIzZTczNiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmMKQEAgLTE0LDYgKzE0LDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTI5LDYgKzMwLDkgQEAKIAogI2luY2x1ZGUgImlmWFRhYmxlX2ludGVyZmFjZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpZlRhYmxlX2NvbnRhaW5lcl9nZXQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpZlRhYmxlX2NvbnRhaW5lcl9zaXplKQorCiAvKgogICogbm90IHN1cmUgaWYgd2Ugd2FudCB0byBzdXBwb3J0IHNldCBmb3IgcHJvbWlzY3VvdXMgbW9kZSwgYmVjYXVzZQogICogMSkgY2FyZWZ1bCB0aG91Z2h0IHNob3VsZCBnbyBpbnRvIGFueSBzZXR0YWJsZSBvYmplY3QgdGhhdCBwZXJmb3JtcwpAQCAtMTU3Miw2ICsxNTc2LDcgQEAKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaWZDb3VudGVyRGlzY29udGludWl0eVRpbWVfZ2V0ICovCiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIAogLyoqIEB9ICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMjUzMCw1ICsyNTM1LDcgQEAKICAgICByZXR1cm4gcmM7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlmWFRhYmxlX2NoZWNrX2RlcGVuZGVuY2llcyAqLwogCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAvKiogQH0gKi8KIC8qKiBAeyAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmggYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuaAppbmRleCBmOWIyNWQ0Li5iYTIyZjk3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuaApAQCAtMjE4LDcgKzIxOCw3IEBACiAgICAgICogT0lEOiAuMS4zLjYuMS4yLjEuMzEuMS4xLCBsZW5ndGg6IDkKICAgICAgKi8KIAotCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGludCAgICAgICAgICAgICBpZlhUYWJsZV91bmRvX3NldHVwKGlmWFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KTsKICAgICBpbnQgICAgICAgICAgICAgaWZYVGFibGVfdW5kb19jbGVhbnVwKGlmWFRhYmxlX3Jvd3JlcV9jdHggKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CkBAIC00MzgsNyArNDM4LDcgQEAKIAogCiAgICAgaW50ICAgICAgICAgICAgIGlmWFRhYmxlX2NoZWNrX2RlcGVuZGVuY2llcyhpZlhUYWJsZV9yb3dyZXFfY3R4ICogY3R4KTsKLQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIC8qCiAgICAgICogRFVNTVkgbWFya2VycywgaWdub3JlCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfY29uc3RhbnRzLmggYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfY29uc3RhbnRzLmgKaW5kZXggNzI4ZWY1Ny4uNjdlMTk5NiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2NvbnN0YW50cy5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9jb25zdGFudHMuaApAQCAtNjcsNyArNjcsMTEgQEAKICAgICAgKiBUT0RPOjQwNTpyOiBSZXZpZXcgSUZYVEFCTEVfU0VUVEFCTEVfQ09MUyBtYWNyby4KICAgICAgKiBPUiB0b2dldGhlciBhbGwgdGhlIHdyaXRhYmxlIGNvbHMuCiAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogI2RlZmluZSBJRlhUQUJMRV9TRVRUQUJMRV9DT0xTIChDT0xVTU5fSUZMSU5LVVBET1dOVFJBUEVOQUJMRV9GTEFHIHwgQ09MVU1OX0lGQUxJQVNfRkxBRykKKyNlbHNlIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyNkZWZpbmUgSUZYVEFCTEVfU0VUVEFCTEVfQ09MUyAwCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLyAKICAgICAvKgogICAgICAqIE5PVEVTIG9uIGVudW1zCiAgICAgICogPT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYwppbmRleCAxNTA3NGVhLi42ODI4YWIyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5jCkBAIC0zMCw2ICszMCw4IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTQ4LDYgKzUwLDE2IEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaWZYVGFibGVfZXh0ZXJuYWxfYWNjZXNzLCBsaWJuZXRzbm1wbWlicykKKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2FjaGVfZmluZF9ieV9vaWQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShiYWJ5X3N0ZXBzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioKQEAgLTgxLDE5ICs5MywyMyBAQAogc3RhdGljIHZvaWQgICAgIF9pZlhUYWJsZV9jb250YWluZXJfc2h1dGRvd24oaWZYVGFibGVfaW50ZXJmYWNlX2N0eCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZl9jdHgpOwogCi0KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JRlhUQUJMRV9DT05UQUlORVJfR0VUCiBuZXRzbm1wX2NvbnRhaW5lciAqCiBpZlhUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIGlmWFRhYmxlX2lmX2N0eC5jb250YWluZXI7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JRlhUQUJMRV9DT05UQUlORVJfR0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JRlhUQUJMRV9SRUdJU1RSQVRJT05fR0VUCiBpZlhUYWJsZV9yZWdpc3RyYXRpb24gKgogaWZYVGFibGVfcmVnaXN0cmF0aW9uX2dldCh2b2lkKQogewogICAgIHJldHVybiBpZlhUYWJsZV9pZl9jdHgudXNlcl9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JRlhUQUJMRV9SRUdJU1RSQVRJT05fR0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JRlhUQUJMRV9SRUdJU1RSQVRJT05fU0VUCiBpZlhUYWJsZV9yZWdpc3RyYXRpb24gKgogaWZYVGFibGVfcmVnaXN0cmF0aW9uX3NldChpZlhUYWJsZV9yZWdpc3RyYXRpb24gKiBuZXdyZWcpCiB7CkBAIC0xMDEsMTIgKzExNywxNSBAQAogICAgIGlmWFRhYmxlX2lmX2N0eC51c2VyX2N0eCA9IG5ld3JlZzsKICAgICByZXR1cm4gb2xkOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZYVEFCTEVfUkVHSVNUUkFUSU9OX1NFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZYVEFCTEVfQ09OVEFJTkVSX1NJWkUKIGludAogaWZYVGFibGVfY29udGFpbmVyX3NpemUodm9pZCkKIHsKICAgICByZXR1cm4gQ09OVEFJTkVSX1NJWkUoaWZYVGFibGVfaWZfY3R4LmNvbnRhaW5lcik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JRlhUQUJMRV9DT05UQUlORVJfU0laRSAqLwogCiB1X2ludAogaWZYVGFibGVfZGlydHlfZ2V0KHZvaWQpCkBAIC0xMzAsNyArMTQ5LDcgQEAKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lmWFRhYmxlX3Bvc3RfcmVxdWVzdDsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lmWFRhYmxlX29iamVjdF9sb29rdXA7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pZlhUYWJsZV9nZXRfdmFsdWVzOwotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pZlhUYWJsZV9jaGVja19vYmplY3RzOwogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaWZYVGFibGVfdW5kb19zZXR1cDsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lmWFRhYmxlX3NldF92YWx1ZXM7CkBAIC0xNDUsNyArMTY0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyLCBpbnQgY29sdW1uKTsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogaWZYVGFibGVfZGF0YSAgKmlmWFRhYmxlX2FsbG9jYXRlX2RhdGEodm9pZCk7CiAKQEAgLTIyMyw3ICsyNDIsNyBAQAogICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0ID0gX21mZF9pZlhUYWJsZV9wb3N0X3JlcXVlc3Q7CiAKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAgICAgLyoKICAgICAgKiBSRVFVSVJFRCB3cmFwcGVycyBmb3Igc2V0IHJlcXVlc3QgaGFuZGxpbmcKICAgICAgKi8KQEAgLTI0Niw3ICsyNjUsNyBAQAogICAgICAqLwogICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+Y29uc2lzdGVuY3lfY2hlY2tzID0KICAgICAgICAgX21mZF9pZlhUYWJsZV9jaGVja19kZXBlbmRlbmNpZXM7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAqCkBAIC0yNjAsMTEgKzI3OSwxNCBAQAogICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2NyZWF0ZSgiaWZYVGFibGUiLCBoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlhUYWJsZV9vaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmWFRhYmxlX29pZF9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9CQUJZX1NURVAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEhBTkRMRVJfQ0FOX1JXUklURQotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9CQUJZX1NURVAgfAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFCisjZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWQorI2VuZGlmICAgICAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLworICAgICAgICAgICAgKTsKKwogICAgIGlmIChOVUxMID09IHJlZ2luZm8pIHsKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIHJlZ2lzdGVyaW5nIHRhYmxlIGlmWFRhYmxlXG4iKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjgyLDcgKzMwNCw3IEBACiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0KQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BPU1RfUkVRVUVTVDsKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+c2V0X3ZhbHVlcykKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9TRVRfVkFMVUVTOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmlycmV2ZXJzaWJsZV9jb21taXQpCkBAIC0zMDUsNyArMzI3LDcgQEAKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DT01NSVQ7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DT01NSVQ7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICBoYW5kbGVyID0gbmV0c25tcF9iYWJ5X3N0ZXBzX2hhbmRsZXJfZ2V0KG1mZF9tb2Rlcyk7CiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKQEAgLTM1Miw2ICszNzQsNyBAQAogICogQGludGVybmFsCiAgKiBTaHV0ZG93biB0aGUgdGFibGUgaWZYVGFibGUKICAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lGWFRBQkxFX1NIVVRET1dOX0lOVEVSRkFDRQogdm9pZAogX2lmWFRhYmxlX3NodXRkb3duX2ludGVyZmFjZShpZlhUYWJsZV9yZWdpc3RyYXRpb24gKiByZWdfcHRyKQogewpAQCAtMzYwLDYgKzM4Myw3IEBACiAgICAgICovCiAgICAgX2lmWFRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bigmaWZYVGFibGVfaWZfY3R4KTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lGWFRBQkxFX1NIVVRET1dOX0lOVEVSRkFDRSAqLwogCiB2b2lkCiBpZlhUYWJsZV92YWxpZF9jb2x1bW5zX3NldChuZXRzbm1wX2NvbHVtbl9pbmZvICp2YykKQEAgLTkxMiw3ICs5MzYsNyBAQAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2lmWFRhYmxlX2dldF92YWx1ZXMgKi8KIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBTRVQgcHJvY2Vzc2luZwpAQCAtMTE5Myw3ICsxMjE3LDYgQEAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9pZlhUYWJsZV9jaGVja19vYmplY3RzICovCiAKLQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgogICogU0VUOiBjaGVjayBkZXBlbmRlbmNpZXMKQEAgLTE3MDksNyArMTczMiw4IEBACiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9pZlhUYWJsZV9pcnJldmVyc2libGVfY29tbWl0ICovCi0jZW5kaWYKKworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtMTc5OCwxMyArMTgyMiwxNyBAQAogdm9pZAogaWZYVGFibGVfY29udGFpbmVyX2luaXRfcGVyc2lzdGVuY2UobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcikKIHsKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqKmNvbnRhaW5lcl9wOwogICAgIGludCAgICAgICAgICAgICByYzsKIAogICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKE5VTEwsIHJvd190b2tlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaWZYVGFibGVfY29udGFpbmVyX3Jvd19yZXN0b3JlLCBOVUxMLCBOVUxMKTsKKyAgICBuZXRzbm1wX2Fzc2VydChjb250YWluZXIpOworICAgIG1lbWR1cCgodV9jaGFyICoqKSZjb250YWluZXJfcCwgJmNvbnRhaW5lciwgc2l6ZW9mKGNvbnRhaW5lcikpOworICAgIG5ldHNubXBfYXNzZXJ0KGNvbnRhaW5lcl9wKTsKICAgICByYyA9IHNubXBfcmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19MSUJSQVJZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0NBTExCQUNLX1NUT1JFX0RBVEEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9pZlhUYWJsZV9jb250YWluZXJfc2F2ZV9yb3dzLCBjb250YWluZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaWZYVGFibGVfY29udGFpbmVyX3NhdmVfcm93cywgY29udGFpbmVyX3ApOwogCiAgICAgaWYgKHJjICE9IFNOTVBfRVJSX05PRVJST1IpCiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciByZWdpc3RlcmluZyBmb3IgU1RPUkVfREFUQSBjYWxsYmFjayAiCkBAIC0xODI3LDcgKzE4NTUsNyBAQAogICAgIC8qCiAgICAgICogc2F2ZSBhbGwgcm93cwogICAgICAqLwotICAgIENPTlRBSU5FUl9GT1JfRUFDSCgobmV0c25tcF9jb250YWluZXIgKikgY2xpZW50YXJnLAorICAgIENPTlRBSU5FUl9GT1JfRUFDSCgqKG5ldHNubXBfY29udGFpbmVyICoqKWNsaWVudGFyZywKICAgICAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jICopCiAgICAgICAgICAgICAgICAgICAgICAgIF9pZlhUYWJsZV9jb250YWluZXJfcm93X3NhdmUsIHR5cGUpOwogCkBAIC0yMTQ0LDYgKzIxNzIsNyBAQAogfQogCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JRlhUQUJMRV9FWFRFUk5BTF9BQ0NFU1MKIGlmWFRhYmxlX3Jvd3JlcV9jdHggKgogaWZYVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4KGlmWFRhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpCiB7CkBAIC0yMTY5LDMgKzIxOTgsNCBAQAogCiAgICAgcmV0dXJuIHJvd3JlcV9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JRlhUQUJMRV9FWFRFUk5BTF9BQ0NFU1MgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlLmggYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZS5oCmluZGV4IGEyYjRlZTQuLjc5NmI1YTAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGUuaApAQCAtMjIsNiArMjIsOCBAQAogI2lmIGRlZmluZWQoIGxpbnV4ICkKIGNvbmZpZ19yZXF1aXJlKGlwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2xpbnV4KQogY29uZmlnX3JlcXVpcmUoaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfaW9jdGwpCisjZWxpZiBkZWZpbmVkKCBmcmVlYnNkNyApIHx8IGRlZmluZWQoIG5ldGJzZDUgKSB8fCBkZWZpbmVkKCBvcGVuYnNkNCApIHx8IGRlZmluZWQoIGRyYWdvbmZseSApIHx8IGRlZmluZWQoIGRhcndpbiApCitjb25maWdfcmVxdWlyZShpcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9zeXNjdGwpCiAjZWxzZQogY29uZmlnX2Vycm9yKHRoZSByb3V0ZSBkYXRhIGFjY2VzcyBsaWJyYXJ5IGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudC4pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2NvbW1vbi5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMKaW5kZXggZTI5MDFmOS4uODRjMTgxMCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMKQEAgLTI0Miw4ICsyNDIsNyBAQAogICAgIGxocy0+cnRfcHJvdG8gPSByaHMtPnJ0X3Byb3RvOwogCiAjaWZkZWYgVVNJTkdfSVBfRk9SV0FSRF9NSUJfSVBDSURSUk9VVEVUQUJMRV9JUENJRFJST1VURVRBQkxFX01PRFVMRQotICAgIGlmIChOVUxMICE9IGxocy0+cnRfaW5mbykKLSAgICAgICAgU05NUF9GUkVFKGxocy0+cnRfaW5mbyk7CisgICAgU05NUF9GUkVFKGxocy0+cnRfaW5mbyk7CiAgICAgaWYgKE5VTEwgIT0gcmhzLT5ydF9pbmZvKQogICAgICAgICBzbm1wX2Nsb25lX21lbSgodm9pZCAqKikgJmxocy0+cnRfaW5mbywgcmhzLT5ydF9pbmZvLAogICAgICAgICAgICAgICAgICAgICAgICByaHMtPnJ0X2luZm9fbGVuICogc2l6ZW9mKG9pZCkpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfbGludXguYyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2xpbnV4LmMKaW5kZXggZjhkNzhhOS4uMGY4MGZlOCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9saW51eC5jCkBAIC03Miw3ICs3Miw3IEBACiAgICAgd2hpbGUgKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgaW4pKSB7CiAgICAgICAgIGNoYXIgICAgICAgICAgICBydGVudF9uYW1lWzMyXTsKICAgICAgICAgaW50ICAgICAgICAgICAgIHJlZmNudCwgcmM7Ci0gICAgICAgIHVpbnQzMl90ICAgICAgICBkZXN0LCBuZXh0aG9wLCBtYXNrLCB0bXBfbWFzazsKKyAgICAgICAgdWludDMyX3QgICAgICAgIGRlc3QsIG5leHRob3AsIG1hc2s7CiAgICAgICAgIHVuc2lnbmVkICAgICAgICBmbGFncywgdXNlOwogCiAgICAgICAgIGVudHJ5ID0gbmV0c25tcF9hY2Nlc3Nfcm91dGVfZW50cnlfY3JlYXRlKCk7CkBAIC04OSw3ICs4OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAqIFhYWDogZml4IHR5cGUgb2YgdGhlIGFyZ3MgCiAgICAgICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgICAgICAmZmxhZ3MsICZyZWZjbnQsICZ1c2UsICZlbnRyeS0+cnRfbWV0cmljMSwKLSAgICAgICAgICAgICAgICAgICAgJnRtcF9tYXNrKTsKKyAgICAgICAgICAgICAgICAgICAgJm1hc2spOwogICAgICAgICBERUJVR01TR1RMKCgiOTphY2Nlc3M6cm91dGU6Y29udGFpbmVyIiwgImxpbmUgfCVzfFxuIiwgbGluZSkpOwogICAgICAgICBpZiAoOCAhPSByYykgewogICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKQEAgLTEyMSwxMCArMTIxLDggQEAKICAgICAgICAgICovCiAgICAgICAgIGVudHJ5LT5uc19ydF9pbmRleCA9ICsrKCppbmRleCk7CiAKLSAgICAgICAgbWFzayA9IGh0b25sKHRtcF9tYXNrKTsKLQogI2lmZGVmIFVTSU5HX0lQX0ZPUldBUkRfTUlCX0lQQ0lEUlJPVVRFVEFCTEVfSVBDSURSUk9VVEVUQUJMRV9NT0RVTEUKLSAgICAgICAgZW50cnktPnJ0X21hc2sgPSBtYXNrOworICAgICAgICBtZW1jcHkoJmVudHJ5LT5ydF9tYXNrLCAmbWFzaywgNCk7CiAgICAgICAgIC8qKiBlbnRyeS0+cnRfdG9zID0gWFhYOyAqLwogICAgICAgICAvKiogcnQgaW5mbyA/PyAqLwogI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9zeXNjdGwuYyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX3N5c2N0bC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0ZjkyNmIKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9zeXNjdGwuYwpAQCAtMCwwICsxLDQzNiBAQAorLyoKKyAqICBJbnRlcmZhY2UgTUlCIGFyY2hpdGVjdHVyZSBzdXBwb3J0CisgKgorICogJElkJAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlICJtaWJJSS9taWJJSV9jb21tb24uaCIKKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvcm91dGUuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MuaD4KKyNpbmNsdWRlIDxuZXQvaWZfZGwuaD4KKworI2luY2x1ZGUgImlwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX3N5c2N0bC5oIgorI2luY2x1ZGUgImlwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfY29uc3RhbnRzLmgiCisjaW5jbHVkZSAiaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9pb2N0bC5oIgorCitzdGF0aWMgaW50IF9sb2FkX2lwdjQobmV0c25tcF9jb250YWluZXIqLCBpbnQqKTsKK3N0YXRpYyBpbnQgX2xvYWRfaXB2NihuZXRzbm1wX2NvbnRhaW5lciosIGludCopOworc3RhdGljIGludCBfY3JlYXRlX2lwdjQobmV0c25tcF9yb3V0ZV9lbnRyeSAqKTsKK3N0YXRpYyBpbnQgX2NyZWF0ZV9pcHY2KG5ldHNubXBfcm91dGVfZW50cnkgKik7CitzdGF0aWMgaW50IF9kZWxldGVfaXB2NChuZXRzbm1wX3JvdXRlX2VudHJ5ICopOworc3RhdGljIGludCBfZGVsZXRlX2lwdjYobmV0c25tcF9yb3V0ZV9lbnRyeSAqKTsKKworI2lmICFkZWZpbmVkKFNBX1NJWkUpICYmICFkZWZpbmVkKFJUX1JPVU5EVVApCisjZGVmaW5lIFJUX1JPVU5EVVAoYSkgIFwKKyAgICAgICAgKChhKSA+IDAgPyAoMSArICgoKGEpIC0gMSkgfCAoc2l6ZW9mKGxvbmcpIC0gMSkpKSA6IHNpemVvZihsb25nKSkKKyNlbmRpZgorI2lmbmRlZiBTQV9TSVpFCisjZGVmaW5lIFNBX1NJWkUoeCkgUlRfUk9VTkRVUCgoKHN0cnVjdCBzb2NrYWRkciAqKSh4KSktPnNhX2xlbikKKyNlbmRpZgorCisvKiogYXJjaCBzcGVjaWZpYyBsb2FkCisgKiBAaW50ZXJuYWwKKyAqCisgKiBAcmV0dmFsICAwIHN1Y2Nlc3MKKyAqIEByZXR2YWwgLTEgbm8gY29udGFpbmVyIHNwZWNpZmllZAorICogQHJldHZhbCAtMiBjb3VsZCBub3QgYWNjZXNzIGRhdGEgc291cmNlCisgKi8KK2ludAorbmV0c25tcF9hY2Nlc3Nfcm91dGVfY29udGFpbmVyX2FyY2hfbG9hZChuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLAorCQkJCQkgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICBpbnQgY291bnQsIGVycjsKKworICAgIGVyciA9IDA7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOnJvdXRlOmNvbnRhaW5lciIsICJyb3V0ZV9jb250YWluZXJfYXJjaF9sb2FkXG4iKSk7CisKKyAgICBpZiAoY29udGFpbmVyID09IE5VTEwpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIm5vIGNvbnRhaW5lciBzcGVjaWZpZWQvZm91bmQgZm9yIGFjY2Vzc19yb3V0ZVxuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBlcnIgPSBfbG9hZF9pcHY0KGNvbnRhaW5lciwgJmNvdW50KTsKKyAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgTkVUU05NUF9MT0dPTkNFKChMT0dfRVJSLCAiX2xvYWRfaXB2NCBmYWlsZWQgJWRcbiIsIGVycikpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBpZiAoZXJyICE9IDAgfHwgbG9hZF9mbGFncyAmIE5FVFNOTVBfQUNDRVNTX1JPVVRFX0xPQURfSVBWNF9PTkxZKQorCXJldHVybiBlcnI7CisKKyAgICBlcnIgPSBfbG9hZF9pcHY2KGNvbnRhaW5lciwgJmNvdW50KTsKKyAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgTkVUU05NUF9MT0dPTkNFKChMT0dfRVJSLCAiX2xvYWRfaXB2NiBmYWlsZWQgJWRcbiIsIGVycikpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKK291dDoKKyAgICByZXR1cm4gKGVyciA9PSAwID8gMCA6IC0zKTsKK30KKworLyoqIGFyY2ggc3BlY2lmaWMgbmV3IHJvdXRlIGVudHJ5IGNyZWF0aW9uCisgKiBAaW50ZXJuYWwKKyAqCisgKiBAcmV0dmFsICAwIHN1Y2Nlc3MKKyAqIEByZXR2YWwgLTEgaW52YWxpZCBlbnRyeSBzcGVjaWZpZWQKKyAqIEByZXR2YWwgLTIgY291bGQgbm90IGNyZWF0ZSByb3V0ZSBlbnRyeQorICovCitpbnQKK25ldHNubXBfYXJjaF9yb3V0ZV9jcmVhdGUobmV0c25tcF9yb3V0ZV9lbnRyeSAqZW50cnkpCit7CisgICAgaW50IGVycjsKKworICAgIGlmIChOVUxMID09IGVudHJ5KQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBzd2l0Y2ggKGVudHJ5LT5ydF9kZXN0X3R5cGUpIHsKKyAgICBjYXNlIElORVRBRERSRVNTVFlQRV9JUFY0OgorICAgICAgICBlcnIgPSBfY3JlYXRlX2lwdjQoZW50cnkpOworICAgICAgICBicmVhazsKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgY2FzZSBJTkVUQUREUkVTU1RZUEVfSVBWNjoKKyAgICAgICAgZXJyID0gX2NyZWF0ZV9pcHY2KGVudHJ5KTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICBkZWZhdWx0OgorICAgICAgICBlcnIgPSAwOworICAgIH0KKworICAgIHJldHVybiAoZXJyID09IDAgPyAwIDogLTIpOworfQorCisvKiogYXJjaCBzcGVjaWZpYyBuZXcgcm91dGUgZW50cnkgZGVsZXRpb24KKyAqIEBpbnRlcm5hbAorICoKKyAqIEByZXR2YWwgIDAgc3VjY2VzcworICogQHJldHZhbCAtMSBpbnZhbGlkIGVudHJ5IHNwZWNpZmllZAorICogQHJldHZhbCAtMiBjb3VsZCBub3QgZGVsZXRlIHJvdXRlIGVudHJ5CisgKi8KK2ludAorbmV0c25tcF9hcmNoX3JvdXRlX2RlbGV0ZShuZXRzbm1wX3JvdXRlX2VudHJ5ICplbnRyeSkKK3sKKyAgICBpbnQgZXJyOworCisgICAgREVCVUdNU0dUTCgoImFjY2Vzczpyb3V0ZTpjb250YWluZXIiLAorICAgICAgICAgICAgICAgICJyb3V0ZV9jb250YWluZXJfYXJjaF9kZWxldGVcbiIpKTsKKworICAgIGlmIChOVUxMID09IGVudHJ5KQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBzd2l0Y2ggKGVudHJ5LT5ydF9kZXN0X3R5cGUpIHsKKyAgICBjYXNlIElORVRBRERSRVNTVFlQRV9JUFY0OgorICAgICAgICBlcnIgPSBfZGVsZXRlX2lwdjQoZW50cnkpOworICAgICAgICBicmVhazsKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgY2FzZSBJTkVUQUREUkVTU1RZUEVfSVBWNjoKKyAgICAgICAgZXJyID0gX2RlbGV0ZV9pcHY2KGVudHJ5KTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICBkZWZhdWx0OgorICAgICAgICBlcnIgPSAwOworICAgIH0KKworICAgIHJldHVybiAoZXJyID09IDAgPyAwIDogLTIpOworfQorCisjaWYgZGVmaW5lZChmcmVlYnNkNCkgfHwgZGVmaW5lZChuZXRic2Q0KSB8fCBkZWZpbmVkKG9wZW5ic2QpIHx8IGRlZmluZWQoZGFyd2luKQorc3RhdGljIGludAorX3R5cGVfZnJvbV9mbGFncyhpbnQgZmxhZ3MpCit7CisgICAgaWYgKGZsYWdzICYgUlRGX1VQKSB7CisgICAgICAgIGlmIChmbGFncyAmIFJURl9CTEFDS0hPTEUpCisgICAgICAgICAgICByZXR1cm4gSU5FVENJRFJST1VURVRZUEVfUkVKRUNUOworI2lmZGVmIFJURl9MT0NBTAorICAgICAgICBlbHNlIGlmIChmbGFncyAmIFJURl9MT0NBTCkKKyAgICAgICAgICAgIHJldHVybiBJTkVUQ0lEUlJPVVRFVFlQRV9MT0NBTDsKKyNlbmRpZgorICAgICAgICBlbHNlIGlmIChmbGFncyAmIFJURl9HQVRFV0FZKQorICAgICAgICAgICAgcmV0dXJuIElORVRDSURSUk9VVEVUWVBFX1JFTU9URTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIElORVRDSURSUk9VVEVUWVBFX09USEVSOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworCitzdGF0aWMgaW50CitfbG9hZF9yb3V0aW5nX3RhYmxlX2Zyb21fc3lzY3RsKG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIsIGludCAqaW5kZXgsCisgICAgaW50IGZhbWlseSkKK3sKKyAgICBjaGFyICpidWYsICpsaW0sICpuZXh0OworICAgIGludCBtaWJbNl07CisgICAgc2l6ZV90IG5lZWRlZDsKKyAgICBpbnQgZXJyOworICAgIHVfY2hhciBkZXN0X2xlbiwgZGVzdF90eXBlOworICAgIHN0cnVjdCBydF9tc2doZHIgKnJ0bTsKKworICAgIGJ1ZiA9IE5VTEw7CisgICAgZXJyID0gMDsKKworICAgIGlmIChmYW1pbHkgPT0gQUZfSU5FVCkgeworICAgICAgICBkZXN0X2xlbiA9IDQ7CisgICAgICAgIGRlc3RfdHlwZSA9IElORVRBRERSRVNTVFlQRV9JUFY0OworICAgIH0gZWxzZSBpZiAoZmFtaWx5ID09IEFGX0lORVQ2KSB7CisgICAgICAgIGRlc3RfbGVuID0gMTY7CisgICAgICAgIGRlc3RfdHlwZSA9IElORVRBRERSRVNTVFlQRV9JUFY2OworICAgIH0gZWxzZSB7CisgICAgICAgIGVyciA9IEVJTlZBTDsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgbWliWzBdID0gQ1RMX05FVDsKKyAgICBtaWJbMV0gPSBQRl9ST1VURTsKKyAgICBtaWJbMl0gPSAwOworICAgIG1pYlszXSA9IGZhbWlseTsKKyAgICBtaWJbNF0gPSBORVRfUlRfRFVNUDsKKyAgICBtaWJbNV0gPSAwOworCisgICAgaWYgKHN5c2N0bChtaWIsIChzaXplb2YobWliKSAvIHNpemVvZihtaWJbMF0pKSwgTlVMTCwgJm5lZWRlZCwgTlVMTCwKKyAgICAgICAgMCkgPT0gLTEpIHsKKyAgICAgICAgZXJyID0gZXJybm87CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGlmICgoYnVmID0gbWFsbG9jKG5lZWRlZCkpID09IE5VTEwpIHsKKyAgICAgICAgZXJyID0gRU5PTUVNOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBpZiAoc3lzY3RsKG1pYiwgKHNpemVvZihtaWIpIC8gc2l6ZW9mKG1pYlswXSkpLCBidWYsICZuZWVkZWQsIE5VTEwsCisgICAgICAgIDApID09IC0xKSB7CisgICAgICAgIGVyciA9IGVycm5vOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBsaW0gPSBidWYgKyBuZWVkZWQ7CisKKyAgICBmb3IgKG5leHQgPSBidWY7IG5leHQgPCBsaW07IG5leHQgKz0gcnRtLT5ydG1fbXNnbGVuKSB7ICAgIAorCXN0cnVjdCBzb2NrYWRkciAqaWZfbmFtZSA9IE5VTEwsICppZl9hZGRyID0gTlVMTDsKKwlzdHJ1Y3Qgc29ja2FkZHIgKmRlc3Rfc2EgPSBOVUxMLCAqZ2F0ZXdheV9zYSA9IE5VTEwsICpuZXRtYXNrX3NhID0gTlVMTDsKKwluZXRzbm1wX3JvdXRlX2VudHJ5ICplbnRyeTsKKwljaGFyICphZGRyX3B0cjsKKworICAgICAgICBydG0gPSAoc3RydWN0IHJ0X21zZ2hkciopbmV4dDsKKworICAgICAgICAvKiAKKyAgICAgICAgICogU29tZSBjb2RlIGluIG5ldHN0YXQgY2hlY2tzIGZvciB0aGlzICgibmV0bWFza3MgZG9uZSIgY2FzZSkuCisgICAgICAgICAqIEZpbHRlciB0aGlzIG91dCAoSSBkb24ndCBrbm93IHdoeSBpdCBzaG91bGQgZXhpc3QpLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKHJ0bS0+cnRtX2FkZHJzID09IFJUQV9EU1QpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBlbnRyeSA9IG5ldHNubXBfYWNjZXNzX3JvdXRlX2VudHJ5X2NyZWF0ZSgpOworICAgICAgICBpZiAoZW50cnkgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMzsKKyAgICAgICAgbWVtc2V0KGVudHJ5LT5ydF9kZXN0LCAwLCBkZXN0X2xlbik7CisgICAgICAgIGVudHJ5LT5ydF9tYXNrID0gMDsKKyAgICAgICAgbWVtc2V0KGVudHJ5LT5ydF9uZXh0aG9wLCAwLCBkZXN0X2xlbik7CisKKyAgICAgICAgYWRkcl9wdHIgPSAoY2hhciAqKShydG0gKyAxKTsKKworCWlmIChydG0tPnJ0bV9hZGRycyAmICBSVEFfRFNUKSB7CisJICAgIGRlc3Rfc2EgPSAoc3RydWN0IHNvY2thZGRyICopYWRkcl9wdHI7CisJICAgIGFkZHJfcHRyICs9IFNBX1NJWkUoZGVzdF9zYSk7CisJfQorCWlmIChydG0tPnJ0bV9hZGRycyAmICBSVEFfR0FURVdBWSkgeworCSAgICBnYXRld2F5X3NhID0gKHN0cnVjdCBzb2NrYWRkciAqKWFkZHJfcHRyOworCSAgICBhZGRyX3B0ciArPSBTQV9TSVpFKGdhdGV3YXlfc2EpOworCX0KKwlpZiAocnRtLT5ydG1fYWRkcnMgJiAgUlRBX05FVE1BU0spIHsKKwkgICAgbmV0bWFza19zYSA9IChzdHJ1Y3Qgc29ja2FkZHIgKilhZGRyX3B0cjsKKwkgICAgYWRkcl9wdHIgKz0gU0FfU0laRShuZXRtYXNrX3NhKTsKKwl9CisJaWYgKHJ0bS0+cnRtX2FkZHJzICYgIFJUQV9JRlApIHsKKwkgICAgaWZfbmFtZSA9IChzdHJ1Y3Qgc29ja2FkZHIgKilhZGRyX3B0cjsKKwkgICAgYWRkcl9wdHIgKz0gU0FfU0laRShpZl9uYW1lKTsKKwl9CisJaWYgKHJ0bS0+cnRtX2FkZHJzICYgIFJUQV9JRkEpIHsKKwkgICAgaWZfYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKilhZGRyX3B0cjsKKwkgICAgYWRkcl9wdHIgKz0gU0FfU0laRShpZl9hZGRyKTsKKwl9CisKKyAgICAgICAgZW50cnktPmlmX2luZGV4ID0gcnRtLT5ydG1faW5kZXg7CisKKyAgICAgICAgLyogYXJiaXRyYXJ5IGluZGV4ICovCisgICAgICAgIGVudHJ5LT5uc19ydF9pbmRleCA9ICsrKCppbmRleCk7CisKKyAgICAgICAgLyogY29weSBkZXN0ICYgbmV4dCBob3AgKi8KKyAgICAgICAgZW50cnktPnJ0X2Rlc3RfdHlwZSA9IGRlc3RfdHlwZTsKKyAgICAgICAgZW50cnktPnJ0X2Rlc3RfbGVuID0gZGVzdF9sZW47CisgICAgICAgIGlmIChydG0tPnJ0bV9hZGRycyAmIFJUQV9EU1QpIHsKKyAgICAgICAgICAgIGlmIChmYW1pbHkgPT0gQUZfSU5FVCkKKyAgICAgICAgICAgICAgICBtZW1jcHkoZW50cnktPnJ0X2Rlc3QsCisgICAgICAgICAgICAgICAgICAgICYoKHN0cnVjdCBzb2NrYWRkcl9pbiopZGVzdF9zYSktPnNpbl9hZGRyLCBkZXN0X2xlbik7CisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorICAgICAgICAgICAgaWYgKGZhbWlseSA9PSBBRl9JTkVUNikKKyAgICAgICAgICAgICAgICBtZW1jcHkoZW50cnktPnJ0X2Rlc3QsCisgICAgICAgICAgICAgICAgICAgICYoKHN0cnVjdCBzb2NrYWRkcl9pbjYqKWRlc3Rfc2EpLT5zaW42X2FkZHIsIGRlc3RfbGVuKTsKKyNlbmRpZgorICAgICAgICB9CisKKyAgICAgICAgZW50cnktPnJ0X25leHRob3BfdHlwZSA9IGRlc3RfdHlwZTsKKyAgICAgICAgZW50cnktPnJ0X25leHRob3BfbGVuID0gZGVzdF9sZW47CisgICAgICAgIGlmIChydG0tPnJ0bV9hZGRycyAmIFJUQV9HQVRFV0FZKSB7CisgICAgICAgICAgICBpZiAoZmFtaWx5ID09IEFGX0lORVQpCisgICAgICAgICAgICAgICAgbWVtY3B5KGVudHJ5LT5ydF9uZXh0aG9wLAorICAgICAgICAgICAgICAgICAgICAmKChzdHJ1Y3Qgc29ja2FkZHJfaW4qKWdhdGV3YXlfc2EpLT5zaW5fYWRkciwgZGVzdF9sZW4pOworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyAgICAgICAgICAgIGlmIChmYW1pbHkgPT0gQUZfSU5FVDYpCisgICAgICAgICAgICAgICAgbWVtY3B5KGVudHJ5LT5ydF9uZXh0aG9wLAorICAgICAgICAgICAgICAgICAgICAmKChzdHJ1Y3Qgc29ja2FkZHJfaW42KilnYXRld2F5X3NhKS0+c2luNl9hZGRyLCBkZXN0X2xlbik7CisjZW5kaWYKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChmYW1pbHkgPT0gQUZfSU5FVCkKKyAgICAgICAgICAgICAgICBtZW1jcHkoZW50cnktPnJ0X25leHRob3AsCisgICAgICAgICAgICAgICAgICAgICYoKHN0cnVjdCBzb2NrYWRkcl9pbiopaWZfYWRkciktPnNpbl9hZGRyLCBkZXN0X2xlbik7CisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorICAgICAgICAgICAgaWYgKGZhbWlseSA9PSBBRl9JTkVUNikKKyAgICAgICAgICAgICAgICBtZW1jcHkoZW50cnktPnJ0X25leHRob3AsCisgICAgICAgICAgICAgICAgICAgICYoKHN0cnVjdCBzb2NrYWRkcl9pbjYqKWlmX2FkZHIpLT5zaW42X2FkZHIsIGRlc3RfbGVuKTsKKyNlbmRpZgorICAgICAgICB9CisKKyAgICAgICAgaWYgKGZhbWlseSA9PSBBRl9JTkVUKSB7CisJICAgIGlmIChuZXRtYXNrX3NhKSB7CisgICAgICAgICAgICAvKiBjb3VudCBiaXRzIGluIG1hc2sgKi8KKwkJZW50cnktPnJ0X3BmeF9sZW4gPSBuZXRzbm1wX2lwYWRkcmVzc19pcHY0X3ByZWZpeF9sZW4oCisJCQkoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKW5ldG1hc2tfc2EpLT5zaW5fYWRkci5zX2FkZHIpOworCQltZW1jcHkoJmVudHJ5LT5ydF9tYXNrLCAmKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKiluZXRtYXNrX3NhKS0+c2luX2FkZHIsIDQpOworCSAgICB9CisJICAgIGVsc2UgeworCQllbnRyeS0+cnRfcGZ4X2xlbiA9IDMyOworCSAgICB9CisgICAgICAgIH0KKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgICAgIGlmIChmYW1pbHkgPT0gQUZfSU5FVDYpIHsKKwkgICAgaWYgKG5ldG1hc2tfc2EpIHsKKyAgICAgICAgICAgIC8qIGNvdW50IGJpdHMgaW4gbWFzayAqLworCQllbnRyeS0+cnRfcGZ4X2xlbiA9IG5ldHNubXBfaXBhZGRyZXNzX2lwdjZfcHJlZml4X2xlbigKKwkJCSgoc3RydWN0IHNvY2thZGRyX2luNiAqKW5ldG1hc2tfc2EpLT5zaW42X2FkZHIpOworCQltZW1jcHkoJmVudHJ5LT5ydF9tYXNrLCAmKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopbmV0bWFza19zYSktPnNpbjZfYWRkciwgMTYpOworCSAgICB9CisJICAgIGVsc2UgeworCQllbnRyeS0+cnRfcGZ4X2xlbiA9IDEyODsKKwkgICAgfQorICAgICAgICB9CisjZW5kaWYKKworI2lmZGVmIFVTSU5HX0lQX0ZPUldBUkRfTUlCX0lORVRDSURSUk9VVEVUQUJMRV9JTkVUQ0lEUlJPVVRFVEFCTEVfTU9EVUxFCisgICAgICAgIC8qCisgICAgaW5ldENpZHJSb3V0ZVBvbGljeSBPQkpFQ1QtVFlQRSAKKyAgICAgICAgU1lOVEFYICAgICBPQkpFQ1QgSURFTlRJRklFUiAKKyAgICAgICAgTUFYLUFDQ0VTUyBub3QtYWNjZXNzaWJsZSAKKyAgICAgICAgU1RBVFVTICAgICBjdXJyZW50IAorICAgICAgICBERVNDUklQVElPTiAKKyAgICAgICAgICAgICAgICJUaGlzIG9iamVjdCBpcyBhbiBvcGFxdWUgb2JqZWN0IHdpdGhvdXQgYW55IGRlZmluZWQgCisgICAgICAgICAgICAgICAgc2VtYW50aWNzLiAgSXRzIHB1cnBvc2UgaXMgdG8gc2VydmUgYXMgYW4gYWRkaXRpb25hbCAKKyAgICAgICAgICAgICAgICBpbmRleCB3aGljaCBtYXkgZGVsaW5lYXRlIGJldHdlZW4gbXVsdGlwbGUgZW50cmllcyB0byAKKyAgICAgICAgICAgICAgICB0aGUgc2FtZSBkZXN0aW5hdGlvbi4gIFRoZSB2YWx1ZSB7IDAgMCB9IHNoYWxsIGJlIHVzZWQgCisgICAgICAgICAgICAgICAgYXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMgb2JqZWN0LiIKKyAgICAgICAgKi8KKwllbnRyeS0+cnRfcG9saWN5ID0gY2FsbG9jKDMsIHNpemVvZihvaWQpKTsKKwllbnRyeS0+cnRfcG9saWN5WzJdID0gZW50cnktPmlmX2luZGV4OworCWVudHJ5LT5ydF9wb2xpY3lfbGVuID0gc2l6ZW9mKG9pZCkqMzsKKyNlbmRpZgorCisgICAgICAgIGVudHJ5LT5ydF90eXBlID0gX3R5cGVfZnJvbV9mbGFncyhydG0tPnJ0bV9mbGFncyk7CisJZW50cnktPnJ0X2FnZSA9IHJ0bS0+cnRtX3JteC5ybXhfZXhwaXJlOworCWVudHJ5LT5ydF9uZXh0aG9wX2FzID0gMDsKKwkvKiBlbnRyeS0+cnRfbWV0cmljMSA9IHJ0bS0+cnRtX3JteC5ybXhfaG9wY291bnQ7ICovCisKKyAgICAgICAgaWYgKHJ0bS0+cnRtX2ZsYWdzICYgUlRGX0RZTkFNSUMpCisgICAgICAgICAgICBlbnRyeS0+cnRfcHJvdG8gPSBJQU5BSVBST1VURVBST1RPQ09MX0lDTVA7CisgICAgICAgIGVsc2UgaWYgKHJ0bS0+cnRtX2ZsYWdzICYgUlRGX1NUQVRJQykKKyAgICAgICAgICAgIGVudHJ5LT5ydF9wcm90byA9IElBTkFJUFJPVVRFUFJPVE9DT0xfTkVUTUdNVDsKKyNpZmRlZiBSVEZfTE9DQUwKKyAgICAgICAgZWxzZSBpZiAocnRtLT5ydG1fZmxhZ3MgJiBSVEZfTE9DQUwpCisgICAgICAgICAgICBlbnRyeS0+cnRfcHJvdG8gPSBJQU5BSVBST1VURVBST1RPQ09MX0xPQ0FMOworI2VuZGlmCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVudHJ5LT5ydF9wcm90byA9IElBTkFJUFJPVVRFUFJPVE9DT0xfT1RIRVI7CisKKyAgICAgICAgaWYgKENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSkgPCAwKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOnJvdXRlOmNvbnRhaW5lciIsCisgICAgICAgICAgICAgICAgImVycm9yIHdpdGggcm91dGVfZW50cnk6IGluc2VydCBpbnRvIGNvbnRhaW5lciBmYWlsZWQuXG4iKSk7CisgICAgICAgICAgICBuZXRzbm1wX2FjY2Vzc19yb3V0ZV9lbnRyeV9mcmVlKGVudHJ5KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgfQorCitvdXQ6CisgICAgZnJlZShidWYpOworCisgICAgcmV0dXJuIGVycjsKK30KKworLyoqCisgKiBuZXRzbm1wX2FjY2Vzc19yb3V0ZV9jb250YWluZXJfYXJjaF9sb2FkKiBmdW5jdGlvbnMuCisgKi8KK3N0YXRpYyBpbnQKK19sb2FkX2lwdjQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgaW50ICppbmRleCkKK3sKKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6cm91dGU6Y29udGFpbmVyIiwKKyAgICAgICAgICAgICAgICAicm91dGVfY29udGFpbmVyX2FyY2hfbG9hZCBpcHY0XG4iKSk7CisgICAgcmV0dXJuIF9sb2FkX3JvdXRpbmdfdGFibGVfZnJvbV9zeXNjdGwoY29udGFpbmVyLCBpbmRleCwgQUZfSU5FVCk7Cit9CisKK3N0YXRpYyBpbnQKK19sb2FkX2lwdjYobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgaW50ICppbmRleCkKK3sKKworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOnJvdXRlOmNvbnRhaW5lciIsCisgICAgICAgICAgICAgICAgInJvdXRlX2NvbnRhaW5lcl9hcmNoX2xvYWQgaXB2NlxuIikpOworICAgIHJldHVybiBfbG9hZF9yb3V0aW5nX3RhYmxlX2Zyb21fc3lzY3RsKGNvbnRhaW5lciwgaW5kZXgsIEFGX0lORVQ2KTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworLyoqCisgKiBuZXRzbm1wX2FjY2Vzc19yb3V0ZV9jcmVhdGUqIGZ1bmN0aW9ucy4KKyAqCisgKiBUT0RPOiBhZGQgbG9naWMgc2ltaWxhciB0byBuZXdyb3V0ZSguLikgaW4gc2Jpbi9yb3V0ZS9yb3V0ZS5jIC4KKyAqLworc3RhdGljIGludAorX2NyZWF0ZV9pcHY0KG5ldHNubXBfcm91dGVfZW50cnkgKmVudHJ5KQoreworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK19jcmVhdGVfaXB2NihuZXRzbm1wX3JvdXRlX2VudHJ5ICplbnRyeSkKK3sKKworICAgIHJldHVybiAwOworfQorCisvKioKKyAqIG5ldHNubXBfYWNjZXNzX3JvdXRlX2RlbGV0ZSogZnVuY3Rpb25zLgorICoKKyAqIFRPRE86IGFkZCBsb2dpYyBzaW1pbGFyIHRvIG5ld3JvdXRlKC4uKSBpbiBzYmluL3JvdXRlL3JvdXRlLmMgLgorICovCitzdGF0aWMgaW50CitfZGVsZXRlX2lwdjQobmV0c25tcF9yb3V0ZV9lbnRyeSAqZW50cnkpCit7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorX2RlbGV0ZV9pcHY2KG5ldHNubXBfcm91dGVfZW50cnkgKmVudHJ5KQoreworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKworI2VuZGlmCisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYgLyogZGVmaW5lZChmcmVlYnNkNykgfHwgZGVmaW5lZChuZXRic2QpIHx8IGRlZmluZWQob3BlbmJzZCkgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX3N5c2N0bC5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfc3lzY3RsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjVlY2NjNwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX3N5c2N0bC5oCkBAIC0wLDAgKzEsOSBAQAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNpbmNsdWRlIDxuZXQvaWYuaD4KKyNpbmNsdWRlIDxuZXQvcm91dGUuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxpZmFkZHJzLmg+CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlLmMKaW5kZXggOGRlZjFkOS4uMGYwMTNlYSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUuYwpAQCAtMTQsNiArMTQsNyBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtMjYsNiArMjcsOSBAQAogCiAjaW5jbHVkZSAiaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpbmV0Q2lkclJvdXRlVGFibGVfY29udGFpbmVyX2dldCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGluZXRDaWRyUm91dGVUYWJsZV9jb250YWluZXJfc2l6ZSkKKwogY29uc3Qgb2lkICAgICAgIGluZXRDaWRyUm91dGVUYWJsZV9vaWRbXSA9IHsgSU5FVENJRFJST1VURVRBQkxFX09JRCB9OwogY29uc3QgaW50ICAgICAgIGluZXRDaWRyUm91dGVUYWJsZV9vaWRfc2l6ZSA9CiBPSURfTEVOR1RIKGluZXRDaWRyUm91dGVUYWJsZV9vaWQpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMKaW5kZXggNTU5YzBjYS4uMGRiYTlkMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jCkBAIC0zMCw2ICszMCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC00Niw2ICs0NywxNiBAQAogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGluZXRDaWRyUm91dGVUYWJsZV9leHRlcm5hbF9hY2Nlc3MsIGxpYm5ldHNubXBtaWJzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2NvbnRhaW5lcl9yb3dfaW5zZXJ0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaW5ldENpZHJSb3V0ZVRhYmxlX2NvbnRhaW5lcl9zaXplLCBpbmV0Q2lkclJvdXRlVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGluZXRDaWRyUm91dGVUYWJsZV9yZWdpc3RyYXRpb25fc2V0LCBpbmV0Q2lkclJvdXRlVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGluZXRDaWRyUm91dGVUYWJsZV9yZWdpc3RyYXRpb25fZ2V0LCBpbmV0Q2lkclJvdXRlVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGluZXRDaWRyUm91dGVUYWJsZV9jb250YWluZXJfZ2V0LCBpbmV0Q2lkclJvdXRlVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqCkBAIC04MiwxOSArOTMsMjMgQEAKICAgICAgICAgICAgICAgICBfaW5ldENpZHJSb3V0ZVRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihpbmV0Q2lkclJvdXRlVGFibGVfaW50ZXJmYWNlX2N0eCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZfY3R4KTsKIAotCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5FVENJRFJST1VURVRBQkxFX0NPTlRBSU5FUl9HRVQKIG5ldHNubXBfY29udGFpbmVyICoKIGluZXRDaWRyUm91dGVUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIGluZXRDaWRyUm91dGVUYWJsZV9pZl9jdHguY29udGFpbmVyOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5FVENJRFJST1VURVRBQkxFX0NPTlRBSU5FUl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lORVRDSURSUk9VVEVUQUJMRV9SRUdJU1RSQVRJT05fR0VUCiBpbmV0Q2lkclJvdXRlVGFibGVfcmVnaXN0cmF0aW9uICoKIGluZXRDaWRyUm91dGVUYWJsZV9yZWdpc3RyYXRpb25fZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIGluZXRDaWRyUm91dGVUYWJsZV9pZl9jdHgudXNlcl9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTkVUQ0lEUlJPVVRFVEFCTEVfUkVHSVNUUkFUSU9OX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5FVENJRFJST1VURVRBQkxFX1JFR0lTVFJBVElPTl9TRVQKIGluZXRDaWRyUm91dGVUYWJsZV9yZWdpc3RyYXRpb24gKgogaW5ldENpZHJSb3V0ZVRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQoaW5ldENpZHJSb3V0ZVRhYmxlX3JlZ2lzdHJhdGlvbiAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdyZWcpCkBAIC0xMDQsMTIgKzExOSwxNSBAQAogICAgIGluZXRDaWRyUm91dGVUYWJsZV9pZl9jdHgudXNlcl9jdHggPSBuZXdyZWc7CiAgICAgcmV0dXJuIG9sZDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lORVRDSURSUk9VVEVUQUJMRV9SRUdJU1RSQVRJT05fU0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTkVUQ0lEUlJPVVRFVEFCTEVfQ09OVEFJTkVSX1NJWkUKIGludAogaW5ldENpZHJSb3V0ZVRhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpCiB7CiAgICAgcmV0dXJuIENPTlRBSU5FUl9TSVpFKGluZXRDaWRyUm91dGVUYWJsZV9pZl9jdHguY29udGFpbmVyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lORVRDSURSUk9VVEVUQUJMRV9DT05UQUlORVJfU0laRSAqLwogCiB1X2ludAogaW5ldENpZHJSb3V0ZVRhYmxlX2RpcnR5X2dldCh2b2lkKQpAQCAtMTQwLDcgKzE1OCw3IEBACiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pbmV0Q2lkclJvdXRlVGFibGVfcG9zdF9yZXF1ZXN0Owogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaW5ldENpZHJSb3V0ZVRhYmxlX29iamVjdF9sb29rdXA7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pbmV0Q2lkclJvdXRlVGFibGVfZ2V0X3ZhbHVlczsKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaW5ldENpZHJSb3V0ZVRhYmxlX2NoZWNrX29iamVjdHM7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pbmV0Q2lkclJvdXRlVGFibGVfdW5kb19zZXR1cDsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2luZXRDaWRyUm91dGVUYWJsZV9zZXRfdmFsdWVzOwpAQCAtMTUwLDcgKzE2OCw3IEBACiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pbmV0Q2lkclJvdXRlVGFibGVfdW5kb19jb21taXQ7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pbmV0Q2lkclJvdXRlVGFibGVfaXJyZXZlcnNpYmxlX2NvbW1pdDsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2luZXRDaWRyUm91dGVUYWJsZV9jaGVja19kZXBlbmRlbmNpZXM7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKIE5FVFNOTVBfU1RBVElDX0lOTElORSBpbnQKICAgICAgICAgICAgICAgICBfaW5ldENpZHJSb3V0ZVRhYmxlX2NoZWNrX2luZGV4ZXMoaW5ldENpZHJSb3V0ZVRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KTsKQEAgLTIzNyw3ICsyNTUsNyBAQAogICAgICAgICBfbWZkX2luZXRDaWRyUm91dGVUYWJsZV9wb3N0X3JlcXVlc3Q7CiAKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAgICAgLyoKICAgICAgKiBSRVFVSVJFRCB3cmFwcGVycyBmb3Igc2V0IHJlcXVlc3QgaGFuZGxpbmcKICAgICAgKi8KQEAgLTI2Miw3ICsyODAsNyBAQAogICAgICAqLwogICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+Y29uc2lzdGVuY3lfY2hlY2tzID0KICAgICAgICAgX21mZF9pbmV0Q2lkclJvdXRlVGFibGVfY2hlY2tfZGVwZW5kZW5jaWVzOwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICAgKgpAQCAtMjk4LDcgKzMxNiw3IEBACiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0KQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BPU1RfUkVRVUVTVDsKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+c2V0X3ZhbHVlcykKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9TRVRfVkFMVUVTOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmlycmV2ZXJzaWJsZV9jb21taXQpCkBAIC0zMjEsNyArMzM5LDcgQEAKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DT01NSVQ7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DT01NSVQ7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICBoYW5kbGVyID0gbmV0c25tcF9iYWJ5X3N0ZXBzX2hhbmRsZXJfZ2V0KG1mZF9tb2Rlcyk7CiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKQEAgLTEzMDgsNyArMTMyNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2N0eCwgcm93cmVxX2N0eCk7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9pbmV0Q2lkclJvdXRlVGFibGVfY2hlY2tfaW5kZXhlcyAqLwogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIFNFVCBwcm9jZXNzaW5nCkBAIC0yMTkyLDcgKzIyMTAsNyBAQAogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaW5ldENpZHJSb3V0ZVRhYmxlX2lycmV2ZXJzaWJsZV9jb21taXQgKi8KLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtMjMyOCw5ICsyMzQ2LDkgQEAKIAogICAgIGlmX2N0eC0+Y29udGFpbmVyLT5jb250YWluZXJfbmFtZSA9IHN0cmR1cCgiaW5ldENpZHJSb3V0ZVRhYmxlIik7CiAKLSAgICAvKiBzZXQgYWxsb3cgZHVwbGljYXRlcyB0aGlzIG1ha2VzIGluc2VydCBPKDEpICovCi0gICAgbmV0c25tcF9iaW5hcnlfYXJyYXlfb3B0aW9uc19zZXQoaWZfY3R4LT5jb250YWluZXIsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEFJTkVSX0tFWV9BTExPV19EVVBMSUNBVEVTKTsKKyAgIC8qIHNldCBhbGxvdyBkdXBsaWNhdGVzIHRoaXMgbWFrZXMgaW5zZXJ0IE8oMSkgKi8KKyAgIG5ldHNubXBfYmluYXJ5X2FycmF5X29wdGlvbnNfc2V0KGlmX2N0eC0+Y29udGFpbmVyLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEFJTkVSX0tFWV9BTExPV19EVVBMSUNBVEVTKTsKIAogICAgIGlmIChOVUxMICE9IGlmX2N0eC0+Y2FjaGUpCiAgICAgICAgIGlmX2N0eC0+Y2FjaGUtPm1hZ2ljID0gKHZvaWQgKikgaWZfY3R4LT5jb250YWluZXI7CkBAIC0yMzUzLDYgKzIzNzEsNyBAQAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaW5ldENpZHJSb3V0ZVRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTkVUQ0lEUlJPVVRFVEFCTEVfRVhURVJOQUxfQUNDRVNTCiBpbmV0Q2lkclJvdXRlVGFibGVfcm93cmVxX2N0eCAqCiBpbmV0Q2lkclJvdXRlVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4KGluZXRDaWRyUm91dGVUYWJsZV9taWJfaW5kZXggKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWJfaWR4KQpAQCAtMjM4MCwzICsyMzk5LDQgQEAKIAogICAgIHJldHVybiByb3dyZXFfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5FVENJRFJST1VURVRBQkxFX0VYVEVSTkFMX0FDQ0VTUyAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jCmluZGV4IGM0NWZkZDIuLjVlODU1ZDQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMKQEAgLTMwLDYgKzMwLDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTQ2LDYgKzQ3LDE3IEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBDaWRyUm91dGVUYWJsZV9leHRlcm5hbF9hY2Nlc3MsIGxpYm5ldHNubXBtaWJzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2NvbnRhaW5lcl9yb3dfaW5zZXJ0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKQorCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcENpZHJSb3V0ZVRhYmxlX2NvbnRhaW5lcl9zaXplLCBpcENpZHJSb3V0ZVRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcENpZHJSb3V0ZVRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQsIGlwQ2lkclJvdXRlVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwQ2lkclJvdXRlVGFibGVfcmVnaXN0cmF0aW9uX2dldCwgaXBDaWRyUm91dGVUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBDaWRyUm91dGVUYWJsZV9jb250YWluZXJfZ2V0LCBpcENpZHJSb3V0ZVRhYmxlX2V4dGVybmFsX2FjY2VzcykKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKgpAQCAtODEsMTkgKzkzLDIzIEBACiAgICAgICAgICAgICAgICAgX2lwQ2lkclJvdXRlVGFibGVfY29udGFpbmVyX3NodXRkb3duKGlwQ2lkclJvdXRlVGFibGVfaW50ZXJmYWNlX2N0eCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmX2N0eCk7CiAKLQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQ0lEUlJPVVRFVEFCTEVfQ09OVEFJTkVSX0dFVAogbmV0c25tcF9jb250YWluZXIgKgogaXBDaWRyUm91dGVUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIGlwQ2lkclJvdXRlVGFibGVfaWZfY3R4LmNvbnRhaW5lcjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQ0lEUlJPVVRFVEFCTEVfQ09OVEFJTkVSX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBDSURSUk9VVEVUQUJMRV9SRUdJU1RSQVRJT05fR0VUCiBpcENpZHJSb3V0ZVRhYmxlX3JlZ2lzdHJhdGlvbiAqCiBpcENpZHJSb3V0ZVRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gaXBDaWRyUm91dGVUYWJsZV9pZl9jdHgudXNlcl9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUENJRFJST1VURVRBQkxFX1JFR0lTVFJBVElPTl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQ0lEUlJPVVRFVEFCTEVfUkVHSVNUUkFUSU9OX1NFVAogaXBDaWRyUm91dGVUYWJsZV9yZWdpc3RyYXRpb24gKgogaXBDaWRyUm91dGVUYWJsZV9yZWdpc3RyYXRpb25fc2V0KGlwQ2lkclJvdXRlVGFibGVfcmVnaXN0cmF0aW9uICogbmV3cmVnKQogewpAQCAtMTAxLDEyICsxMTcsMTUgQEAKICAgICBpcENpZHJSb3V0ZVRhYmxlX2lmX2N0eC51c2VyX2N0eCA9IG5ld3JlZzsKICAgICByZXR1cm4gb2xkOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBDSURSUk9VVEVUQUJMRV9SRUdJU1RSQVRJT05fU0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUENJRFJST1VURVRBQkxFX0NPTlRBSU5FUl9TSVpFCiBpbnQKIGlwQ2lkclJvdXRlVGFibGVfY29udGFpbmVyX3NpemUodm9pZCkKIHsKICAgICByZXR1cm4gQ09OVEFJTkVSX1NJWkUoaXBDaWRyUm91dGVUYWJsZV9pZl9jdHguY29udGFpbmVyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQ0lEUlJPVVRFVEFCTEVfQ09OVEFJTkVSX1NJWkUgKi8KIAogdV9pbnQKIGlwQ2lkclJvdXRlVGFibGVfZGlydHlfZ2V0KHZvaWQpCkBAIC0xMzAsNyArMTQ5LDcgQEAKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lwQ2lkclJvdXRlVGFibGVfcG9zdF9yZXF1ZXN0Owogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaXBDaWRyUm91dGVUYWJsZV9vYmplY3RfbG9va3VwOwogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaXBDaWRyUm91dGVUYWJsZV9nZXRfdmFsdWVzOwotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrX29iamVjdHM7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcENpZHJSb3V0ZVRhYmxlX3VuZG9fc2V0dXA7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcENpZHJSb3V0ZVRhYmxlX3NldF92YWx1ZXM7CkBAIC0xNDQsNyArMTYzLDcgQEAKICAgICAgICAgICAgICAgICBfaXBDaWRyUm91dGVUYWJsZV91bmRvX2NvbHVtbihpcENpZHJSb3V0ZVRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29sdW1uKTsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogTkVUU05NUF9TVEFUSUNfSU5MSU5FIGludAogICAgICAgICAgICAgICAgIF9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrX2luZGV4ZXMoaXBDaWRyUm91dGVUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCk7CkBAIC0yMjcsNyArMjQ2LDcgQEAKICAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCA9IF9tZmRfaXBDaWRyUm91dGVUYWJsZV9wb3N0X3JlcXVlc3Q7CiAKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAgICAgLyoKICAgICAgKiBSRVFVSVJFRCB3cmFwcGVycyBmb3Igc2V0IHJlcXVlc3QgaGFuZGxpbmcKICAgICAgKi8KQEAgLTI0NSw3ICsyNjQsNyBAQAogICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQgPSBfbWZkX2lwQ2lkclJvdXRlVGFibGVfdW5kb19jb21taXQ7CiAgICAgYWNjZXNzX211bHRpcGxleGVyLT5pcnJldmVyc2libGVfY29tbWl0ID0KICAgICAgICAgX21mZF9pcENpZHJSb3V0ZVRhYmxlX2lycmV2ZXJzaWJsZV9jb21taXQ7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAqCkBAIC0yNzgsNyArMjk3LDcgQEAKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUE9TVF9SRVFVRVNUOwogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5zZXRfdmFsdWVzKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1NFVF9WQUxVRVM7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+aXJyZXZlcnNpYmxlX2NvbW1pdCkKQEAgLTMwMSw3ICszMjAsNyBAQAogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NPTU1JVDsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NvbW1pdCkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX0NPTU1JVDsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOwpAQCAtMTE1MSw3ICsxMTcwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2N0eCwgcm93cmVxX2N0eCk7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrX2luZGV4ZXMgKi8KIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBTRVQgcHJvY2Vzc2luZwpAQCAtMjE0NSw3ICsyMTY0LDcgQEAKIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2lwQ2lkclJvdXRlVGFibGVfaXJyZXZlcnNpYmxlX2NvbW1pdCAqLwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0yMzA0LDYgKzIzMjMsNyBAQAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaXBDaWRyUm91dGVUYWJsZV9jb250YWluZXJfc2h1dGRvd24gKi8KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBDSURSUk9VVEVUQUJMRV9FWFRFUk5BTF9BQ0NFU1MKIGlwQ2lkclJvdXRlVGFibGVfcm93cmVxX2N0eCAqCiBpcENpZHJSb3V0ZVRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleChpcENpZHJSb3V0ZVRhYmxlX21pYl9pbmRleCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWJfaWR4KQpAQCAtMjMzMSwzICsyMzUxLDQgQEAKIAogICAgIHJldHVybiByb3dyZXFfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBDSURSUk9VVEVUQUJMRV9FWFRFUk5BTF9BQ0NFU1MgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnAuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnAuaAppbmRleCBlOWMzNzFiLi42NDhjYjI4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycC5oCkBAIC0xOCw4ICsxOCwxMiBAQAogICogICAgYmUgaGFuZGxlZCBpbiB0aGUgKl9ocHV4LmggaGVhZGVyIGZpbGUuCiAgKi8KIGNvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfY29tbW9uKQotI2lmIGRlZmluZWQoIGxpbnV4ICkKKyNpZiBkZWZpbmVkKCBIQVZFX0xJTlVYX1JUTkVUTElOS19IICkKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbmV0bGluaykKKyNlbGlmIGRlZmluZWQoIGxpbnV4ICkKIGNvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXgpCisjZWxpZiBkZWZpbmVkKCBmcmVlYnNkNyApIHx8IGRlZmluZWQgKCBuZXRic2Q1ICkgfHwgZGVmaW5lZCggb3BlbmJzZDQgKSB8fCBkZWZpbmVkKCBkcmFnb25mbHkgKSB8fCBkZWZpbmVkKCBkYXJ3aW4gKQorY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL2FycF9zeXNjdGwpCiAjZWxzZQogLyoKICAqIGNvdWxkbid0IGRldGVybWluZSB0aGUgY29ycmVjdCBmaWxlIQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9jb21tb24uYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfY29tbW9uLmMKaW5kZXggNWM3ZDZkNS4uMjk1ODcxOSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9jb21tb24uYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2NvbW1vbi5jCkBAIC0xMSwxMDIgKzExLDYgQEAKIAogLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qCi0gKiBsb2NhbCBzdGF0aWMgcHJvdG90eXBlcwotICovCi1zdGF0aWMgdm9pZCBfYWNjZXNzX2FycF9lbnRyeV9yZWxlYXNlKG5ldHNubXBfYXJwX2VudHJ5ICogZW50cnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVudXNlZCk7Ci0KLS8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKgotICogZXh0ZXJuYWwgcGVyLWFyY2hpdGVjdHVyZSBmdW5jdGlvbnMgcHJvdG90eXBlcwotICoKLSAqIFRoZXNlIHNob3VsZG4ndCBiZSBjYWxsZWQgYnkgdGhlIGdlbmVyYWwgcHVibGljLCBzbyB0aGV5IGFyZW4ndCBpbgotICogdGhlIGhlYWRlciBmaWxlLgotICovCi1leHRlcm4gaW50Ci1uZXRzbm1wX2FjY2Vzc19hcnBfY29udGFpbmVyX2FyY2hfbG9hZChuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgbG9hZF9mbGFncyk7Ci0KLQotLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qCi0gKiBjb250YWluZXIgZnVuY3Rpb25zCi0gKi8KLS8qKgotICovCi1uZXRzbm1wX2NvbnRhaW5lciAqCi1uZXRzbm1wX2FjY2Vzc19hcnBfY29udGFpbmVyX2luaXQodV9pbnQgZmxhZ3MpCi17Ci0gICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcjE7Ci0KLSAgICBERUJVR01TR1RMKCgiYWNjZXNzOmFycDpjb250YWluZXIiLCAiaW5pdFxuIikpOwotCi0gICAgLyoKLSAgICAgKiBjcmVhdGUgdGhlIGNvbnRhaW5lcnMuIG9uZSBpbmRleGVkIGJ5IGlmSW5kZXgsIHRoZSBvdGhlcgotICAgICAqIGluZGV4ZWQgYnkgaWZOYW1lLgotICAgICAqLwotICAgIGNvbnRhaW5lcjEgPSBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJhY2Nlc3NfYXJwOnRhYmxlX2NvbnRhaW5lciIpOwotICAgIGlmIChOVUxMID09IGNvbnRhaW5lcjEpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBjb250YWluZXIxOwotfQotCi0vKioKLSAqIEByZXR2YWwgTlVMTCAgZXJyb3IKLSAqIEByZXR2YWwgIU5VTEwgcG9pbnRlciB0byBjb250YWluZXIKLSAqLwotbmV0c25tcF9jb250YWluZXIqCi1uZXRzbm1wX2FjY2Vzc19hcnBfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgdV9pbnQgbG9hZF9mbGFncykKLXsKLSAgICBpbnQgcmM7Ci0KLSAgICBERUJVR01TR1RMKCgiYWNjZXNzOmFycDpjb250YWluZXIiLCAibG9hZFxuIikpOwotCi0gICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7Ci0gICAgICAgIGNvbnRhaW5lciA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImFjY2VzczphcnA6dGFibGVfY29udGFpbmVyIik7Ci0gICAgICAgIGlmIChjb250YWluZXIpCi0gICAgICAgICAgICBjb250YWluZXItPmNvbnRhaW5lcl9uYW1lID0gc3RyZHVwKCJhcnAiKTsKLSAgICB9Ci0gICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7Ci0gICAgICAgIHNubXBfbG9nKExPR19FUlIsICJubyBjb250YWluZXIgc3BlY2lmaWVkL2ZvdW5kIGZvciBhY2Nlc3NfYXJwXG4iKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgcmMgPSAgbmV0c25tcF9hY2Nlc3NfYXJwX2NvbnRhaW5lcl9hcmNoX2xvYWQoY29udGFpbmVyLCBsb2FkX2ZsYWdzKTsKLSAgICBpZiAoMCAhPSByYykgewotICAgICAgICBuZXRzbm1wX2FjY2Vzc19hcnBfY29udGFpbmVyX2ZyZWUoY29udGFpbmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9BQ0NFU1NfQVJQX0ZSRUVfTk9GTEFHUyk7Ci0gICAgICAgIGNvbnRhaW5lciA9IE5VTEw7Ci0gICAgfQotCi0gICAgcmV0dXJuIGNvbnRhaW5lcjsKLX0KLQotdm9pZAotbmV0c25tcF9hY2Nlc3NfYXJwX2NvbnRhaW5lcl9mcmVlKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIHVfaW50IGZyZWVfZmxhZ3MpCi17Ci0gICAgREVCVUdNU0dUTCgoImFjY2VzczphcnA6Y29udGFpbmVyIiwgImZyZWVcbiIpKTsKLQotICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgewotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiaW52YWxpZCBjb250YWluZXIgZm9yIG5ldHNubXBfYWNjZXNzX2FycF9mcmVlXG4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmKCEgKGZyZWVfZmxhZ3MgJiBORVRTTk1QX0FDQ0VTU19BUlBfRlJFRV9ET05UX0NMRUFSKSkgewotICAgICAgICAvKgotICAgICAgICAgKiBmcmVlIGFsbCBpdGVtcy4KLSAgICAgICAgICovCi0gICAgICAgIENPTlRBSU5FUl9DTEVBUihjb250YWluZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMqKV9hY2Nlc3NfYXJwX2VudHJ5X3JlbGVhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICB9Ci0KLSAgICBpZighIChmcmVlX2ZsYWdzICYgTkVUU05NUF9BQ0NFU1NfQVJQX0ZSRUVfS0VFUF9DT05UQUlORVIpKQotICAgICAgICBDT05UQUlORVJfRlJFRShjb250YWluZXIpOwotfQotCi0vKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLyoKICAqIGFycF9lbnRyeSBmdW5jdGlvbnMKICAqLwogLyoqCkBAIC0xNDAsMTQgKzQ0LDYgQEAKICAqLwogCiAvKioKLSAqLwotdm9pZAotX2FjY2Vzc19hcnBfZW50cnlfcmVsZWFzZShuZXRzbm1wX2FycF9lbnRyeSAqIGVudHJ5LCB2b2lkICpjb250ZXh0KQotewotICAgIG5ldHNubXBfYWNjZXNzX2FycF9lbnRyeV9mcmVlKGVudHJ5KTsKLX0KLQotLyoqCiAgKiBVcGRhdGUgZ2l2ZW4gZW50cnkgd2l0aCBuZXcgZGF0YS4gQ2FsY3VsYXRlIG5ldyBhcnBfbGFzdF91cGRhdGVkLCBpZiBhbnkKICAqIGZpZWxkIGlzIGNoYW5nZWQuCiAgKi8KQEAgLTE1Niw2ICs1Miw3IEBACiB7CiAgICAgaW50IG1vZGlmaWVkID0gMDsKIAorICAgIGVudHJ5LT5nZW5lcmF0aW9uID0gbmV3X2RhdGEtPmdlbmVyYXRpb247CiAgICAgaWYgKGVudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbiAhPSBuZXdfZGF0YS0+YXJwX2lwYWRkcmVzc19sZW4KICAgICAgICAgICAgIHx8IG1lbWNtcChlbnRyeS0+YXJwX2lwYWRkcmVzcywgbmV3X2RhdGEtPmFycF9pcGFkZHJlc3MsIGVudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbikgIT0gMCApIHsKICAgICAgICAgbW9kaWZpZWQgPSAxOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jCmluZGV4IDRkZGFmZmQuLmEyZmE0OWEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2xpbnV4LmMKQEAgLTE0LDY4ICsxNCw3NCBAQAogI2luY2x1ZGUgPGFycGEvaW5ldC5oPgogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CiAjaW5jbHVkZSA8YXNtL3R5cGVzLmg+Ci0jaWZkZWYgSEFWRV9MSU5VWF9SVE5FVExJTktfSAotI2luY2x1ZGUgPGxpbnV4L3J0bmV0bGluay5oPgotI2VuZGlmCi0jaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgotI2RlZmluZSBOSVA2KGFkZHIpIFwKLSAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNlswXSksIFwKLSAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNlsxXSksIFwKLSAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNlsyXSksIFwKLSAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNlszXSksIFwKLSAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNls0XSksIFwKLSAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNls1XSksIFwKLSAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNls2XSksIFwKLSAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNls3XSkKLSNkZWZpbmUgTklQNl9GTVQgIiUwNHg6JTA0eDolMDR4OiUwNHg6JTA0eDolMDR4OiUwNHg6JTA0eCIKLSNlbmRpZgogCi1pbnQgX2xvYWRfdjQobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgaW50IGlkeF9vZmZzZXQpOwotI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKLXN0YXRpYyBpbnQgX2xvYWRfdjYobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgaW50IGlkeF9vZmZzZXQpOwotI2VuZGlmCi0jaWZkZWYgSEFWRV9MSU5VWF9SVE5FVExJTktfSAotaW50IGdldF90cmFuc2xhdGlvbl90YWJsZV9pbmZvIChpbnQgc2QsIGludCAqc3RhdHVzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmZiwgc2l6ZV90IHNpemUpOwotaW50IGZpbGx1cF9lbnRyeV9pbmZvKG5ldHNubXBfYXJwX2VudHJ5ICplbnRyeSwKLSAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgbmxtc2doZHIgKm5sbXApOwotI2VuZGlmCi0vKioKLSAqLwotaW50Ci1uZXRzbm1wX2FjY2Vzc19hcnBfY29udGFpbmVyX2FyY2hfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyKQorc3RhdGljIGludCBfbG9hZF92NChuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2Vzcyk7CisKK25ldHNubXBfYXJwX2FjY2VzcyAqCituZXRzbm1wX2FjY2Vzc19hcnBfY3JlYXRlKHVfaW50IGluaXRfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBBY2Nlc3NBcnBVcGRhdGUgKnVwZGF0ZV9ob29rLAorICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wQWNjZXNzQXJwR0MgKmdjX2hvb2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqY2FjaGVfdGltZW91dCwgaW50ICpjYWNoZV9mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqY2FjaGVfZXhwaXJlZCkKIHsKLSAgICBpbnQgcmMgPSAwLCBpZHhfb2Zmc2V0ID0gMDsKKyAgICBuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2VzczsKIAotICAgIHJjID0gX2xvYWRfdjQoY29udGFpbmVyLCBpZHhfb2Zmc2V0KTsKLSAgICBpZihyYyA8IDApIHsKLSAgICAgICAgdV9pbnQgZmxhZ3MgPSBORVRTTk1QX0FDQ0VTU19BUlBfRlJFRV9LRUVQX0NPTlRBSU5FUjsKLSAgICAgICAgbmV0c25tcF9hY2Nlc3NfYXJwX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lciwgZmxhZ3MpOworICAgIGFjY2VzcyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9hcnBfYWNjZXNzKTsKKyAgICBpZiAoTlVMTCA9PSBhY2Nlc3MpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwibWFsbG9jIGVycm9yIGluIG5ldHNubXBfYWNjZXNzX2FycF9jcmVhdGVcbiIpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSNpZiBkZWZpbmVkIChORVRTTk1QX0VOQUJMRV9JUFY2KQotICAgIGlkeF9vZmZzZXQgPSAocmMgPCAwKSA/IDAgOiByYzsKKyAgICBhY2Nlc3MtPmFyY2hfbWFnaWMgPSBOVUxMOworICAgIGFjY2Vzcy0+bWFnaWMgPSBOVUxMOworICAgIGFjY2Vzcy0+dXBkYXRlX2hvb2sgPSB1cGRhdGVfaG9vazsKKyAgICBhY2Nlc3MtPmdjX2hvb2sgPSBnY19ob29rOworICAgIGFjY2Vzcy0+c3luY2hyb25pemVkID0gMDsKIAotICAgIHJjID0gX2xvYWRfdjYoY29udGFpbmVyLCBpZHhfb2Zmc2V0KTsKLSAgICBpZihyYyA8IDApIHsKLSAgICAgICAgdV9pbnQgZmxhZ3MgPSBORVRTTk1QX0FDQ0VTU19BUlBfRlJFRV9LRUVQX0NPTlRBSU5FUjsKLSAgICAgICAgbmV0c25tcF9hY2Nlc3NfYXJwX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lciwgZmxhZ3MpOwotICAgIH0KLSNlbmRpZgorICAgIGlmIChjYWNoZV90aW1lb3V0ICE9IE5VTEwpCisgICAgICAgICpjYWNoZV90aW1lb3V0ID0gNTsKKyAgICBpZiAoY2FjaGVfZmxhZ3MgIT0gTlVMTCkKKyAgICAgICAgKmNhY2hlX2ZsYWdzIHw9IE5FVFNOTVBfQ0FDSEVfRE9OVF9GUkVFX0JFRk9SRV9MT0FECisgICAgICAgICAgICAgICAgICAgICAgICB8IE5FVFNOTVBfQ0FDSEVfQVVUT19SRUxPQUQ7CisgICAgYWNjZXNzLT5jYWNoZV9leHBpcmVkID0gY2FjaGVfZXhwaXJlZDsKIAotICAgIC8qCi0gICAgICogcmV0dXJuIG5vIGVycm9ycyAoMCkgaWYgd2UgZm91bmQgYW55IGludGVyZmFjZXMKLSAgICAgKi8KLSAgICBpZihyYyA+IDApCi0gICAgICAgIHJjID0gMDsKKyAgICByZXR1cm4gYWNjZXNzOworfQorCitpbnQgbmV0c25tcF9hY2Nlc3NfYXJwX2RlbGV0ZShuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2VzcykKK3sKKyAgICBpZiAoTlVMTCA9PSBhY2Nlc3MpCisgICAgICAgIHJldHVybiAwOworCisgICAgbmV0c25tcF9hY2Nlc3NfYXJwX3VubG9hZChhY2Nlc3MpOworICAgIGZyZWUoYWNjZXNzKTsKKworICAgIHJldHVybiAwOworfQorCitpbnQgbmV0c25tcF9hY2Nlc3NfYXJwX2xvYWQobmV0c25tcF9hcnBfYWNjZXNzICphY2Nlc3MpCit7CisgICAgaW50IHJjID0gMDsKKworICAgIGFjY2Vzcy0+Z2VuZXJhdGlvbisrOworICAgIHJjID1fbG9hZF92NChhY2Nlc3MpOworICAgIGFjY2Vzcy0+Z2NfaG9vayhhY2Nlc3MpOworICAgIGFjY2Vzcy0+c3luY2hyb25pemVkID0gKHJjID09IDApOwogCiAgICAgcmV0dXJuIHJjOwogfQogCitpbnQgbmV0c25tcF9hY2Nlc3NfYXJwX3VubG9hZChuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2VzcykKK3sKKyAgICBhY2Nlc3MtPnN5bmNocm9uaXplZCA9IDA7CisKKyAgICByZXR1cm4gMDsKK30KKwogLyoqCiAgKi8KLWludAotX2xvYWRfdjQobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgaW50IGlkeF9vZmZzZXQpCitzdGF0aWMgaW50CitfbG9hZF92NChuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2VzcykKIHsKICAgICBGSUxFICAgICAgICAgICAqaW47CiAgICAgY2hhciAgICAgICAgICAgIGxpbmVbMTI4XTsKQEAgLTg1LDcgKzkxLDcgQEAKICAgICBjaGFyICAgICAgICAgICAqYXJwX3Rva2VuOwogICAgIGludCAgICAgICAgICAgICBpOwogCi0gICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBjb250YWluZXIpOworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gYWNjZXNzKTsKIAogI2RlZmluZSBQUk9DRklMRSAiL3Byb2MvbmV0L2FycCIKICAgICBpZiAoIShpbiA9IGZvcGVuKFBST0NGSUxFLCAiciIpKSkgewpAQCAtMTMyLDYgKzEzOCw3IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIGxvb2sgdXAgaWZJbmRleAogICAgICAgICAgKi8KKyAgICAgICAgZW50cnktPmdlbmVyYXRpb24gPSBhY2Nlc3MtPmdlbmVyYXRpb247CiAgICAgICAgIGVudHJ5LT5pZl9pbmRleCA9IG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9pbmRleF9maW5kKGlmbmFtZSk7CiAgICAgICAgIGlmKDAgPT0gZW50cnktPmlmX2luZGV4KSB7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJjb3VsZG4ndCBmaW5kIGlmSW5kZXggZm9yICclcycsIHNraXBwaW5nXG4iLApAQCAtMTQ0LDcgKzE1MSw3IEBACiAgICAgICAgICAqIG5vdyB0aGF0IHdlJ3ZlIHBhc3NlZCBhbGwgdGhlIHBvc3NpYmxlICdjb250aW51ZScsIGFzc2lnbgogICAgICAgICAgKiBpbmRleCBvZmZzZXQuCiAgICAgICAgICAqLwotICAgICAgICBlbnRyeS0+bnNfYXJwX2luZGV4ID0gKytpZHhfb2Zmc2V0OworICAgICAgICAvKiBlbnRyeS0+bnNfYXJwX2luZGV4ID0gKytpZHhfb2Zmc2V0OyAqLwogCiAgICAgICAgIC8qCiAgICAgICAgICAqIHBhcnNlIGlwIGFkZHIKQEAgLTE5OSwyNDkgKzIwNiw5IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIGFkZCBlbnRyeSB0byBjb250YWluZXIKICAgICAgICAgICovCi0gICAgICAgIGlmIChDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpIDwgMCkKLSAgICAgICAgewotICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczphcnA6Y29udGFpbmVyIiwiZXJyb3Igd2l0aCBhcnBfZW50cnk6IGluc2VydCBpbnRvIGNvbnRhaW5lciBmYWlsZWQuXG4iKSk7Ci0gICAgICAgICAgICBuZXRzbm1wX2FjY2Vzc19hcnBfZW50cnlfZnJlZShlbnRyeSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAgICAgICBhY2Nlc3MtPnVwZGF0ZV9ob29rKGFjY2VzcywgZW50cnkpOwogICAgIH0KIAogICAgIGZjbG9zZShpbik7Ci0gICAgaWYoIHJjIDwgMCApCi0gICAgICAgIHJldHVybiByYzsKLQotICAgIHJldHVybiBpZHhfb2Zmc2V0OwotfQotCi0jaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikKLXN0YXRpYyBpbnQKLV9sb2FkX3Y2KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIGludCBpZHhfb2Zmc2V0KQotewotICAgIGNoYXIgICAgICAgICAgICAgIGJ1ZmZlclsxNjM4NF07Ci0jaWYgZGVmaW5lZChIQVZFX0xJTlVYX1JUTkVUTElOS19IKQotICAgIHN0cnVjdCBubG1zZ2hkciAgICpubG1wOwotI2VuZGlmCi0gICAgaW50ICAgICAgICAgICAgICAgc2QgPSAwOwotICAgIGludCAgICAgICAgICAgICAgIHN0YXR1cyA9IDA7Ci0gICAgaW50ICAgICAgICAgICAgICAgcmMgPSAwOwotICAgIGludCAgICAgICAgICAgICAgIGxlbiwgcmVxX2xlbjsKLSAgICBuZXRzbm1wX2FycF9lbnRyeSAqZW50cnk7Ci0KLSAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGNvbnRhaW5lcik7Ci0jaWYgZGVmaW5lZChIQVZFX0xJTlVYX1JUTkVUTElOS19IKQotICAgIGlmKChzZCA9IHNvY2tldCAoUEZfTkVUTElOSywgU09DS19ER1JBTSwgTkVUTElOS19ST1VURSkpIDwgMCkgewotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJVbmFibGUgdG8gY3JlYXRlIG5ldGxpbmsgc29ja2V0XG4iKTsKLSAgICAgICAgcmV0dXJuIC0yOwotICAgIH0KLQotICAgIGlmKGdldF90cmFuc2xhdGlvbl90YWJsZV9pbmZvIChzZCwgJnN0YXR1cywgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkgPCAwKSB7Ci0gICAgICAgc25tcF9sb2coTE9HX0VSUiwiVW5hYmxlIHRvIGZldGNoIHRyYW5zbGF0aW9uIHRhYmxlIGluZm9cbiIpOwotICAgICAgIGNsb3NlKHNkKTsKLSAgICAgICByZXR1cm4gLTI7Ci0gICAgfQotCi0gICAgZm9yIChubG1wID0gKHN0cnVjdCBubG1zZ2hkciAqKWJ1ZmZlcjsgc3RhdHVzID4gc2l6ZW9mKCpubG1wKTsgKSB7Ci0gICAgICAgICBsZW4gPSBubG1wLT5ubG1zZ19sZW47Ci0gICAgICAgICByZXFfbGVuID0gbGVuIC0gc2l6ZW9mKCpubG1wKTsKLSAgICAgICAgIGlmIChyZXFfbGVuIDwgMCB8fCBsZW4gPiBzdGF0dXMpIHsKLSAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJpbnZhbGlkIGxlbmd0aFxuIik7Ci0gICAgICAgICAgICAgcmV0dXJuIC0yOwotICAgICAgICAgfQotICAgICAgICAgaWYgKCFOTE1TR19PSyAobmxtcCwgc3RhdHVzKSkgewotICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsIk5MTVNHIG5vdCBPS1xuIik7Ci0gICAgICAgICAgICAgcmV0dXJuIC0yOwotICAgICAgICAgfQotICAgICAgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19hcnBfZW50cnlfY3JlYXRlKCk7Ci0gICAgICAgICBpZihOVUxMID09IGVudHJ5KSB7Ci0gICAgICAgICAgICByYyA9IC0zOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbnRyeS0+bnNfYXJwX2luZGV4ID0gKytpZHhfb2Zmc2V0OwotICAgICAgICAgaWYoZmlsbHVwX2VudHJ5X2luZm8gKGVudHJ5LCBubG1wKSA8IDApIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6YXJwOmxvYWRfdjYiLCAic2tpcHBpbmcgbmV0bGluayBtZXNzYWdlIHRoYXQiCi0gICAgICAgICAgICAgICAgICAgICAgICAiIGRpZCBub3QgY29udGFpbiB2YWxpZCBBUlAgaW5mb3JtYXRpb25cbiIpKTsKLSAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2FycF9lbnRyeV9mcmVlKGVudHJ5KTsKLSAgICAgICAgICAgIHN0YXR1cyAtPSBOTE1TR19BTElHTihsZW4pOwotICAgICAgICAgICAgbmxtcCA9IChzdHJ1Y3Qgbmxtc2doZHIqKSgoY2hhciopbmxtcCArIE5MTVNHX0FMSUdOKGxlbikpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICB9Ci0gICAgICAgICBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpOwotICAgICAgICAgc3RhdHVzIC09IE5MTVNHX0FMSUdOKGxlbik7Ci0gICAgICAgICBubG1wID0gKHN0cnVjdCBubG1zZ2hkciopKChjaGFyKilubG1wICsgTkxNU0dfQUxJR04obGVuKSk7Ci0gICAgfQotCi0gICAgY2xvc2Uoc2QpOwotI2VuZGlmCi0gICAgaWYocmM8MCkgewotICAgICAgICByZXR1cm4gcmM7Ci0gICAgfQotCi0gICAgcmV0dXJuIGlkeF9vZmZzZXQ7Ci19Ci0jaWYgZGVmaW5lZChIQVZFX0xJTlVYX1JUTkVUTElOS19IKQotaW50IAotZ2V0X3RyYW5zbGF0aW9uX3RhYmxlX2luZm8gKGludCBzZCwgaW50ICpzdGF0dXMsIGNoYXIgKmJ1ZmYsIHNpemVfdCBzaXplKQotewotICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgc3RydWN0IG5sbXNnaGRyIG47Ci0gICAgICAgICAgICAgICAgc3RydWN0IG5kbXNnIHI7Ci0gICAgICAgICAgICAgICAgY2hhciAgIGJ1ZlsxMDI0XTsKLSAgICB9IHJlcTsKLSAgICBzdHJ1Y3QgcnRhdHRyICAgKnJ0YTsKLQotICAgIG1lbXNldCgmcmVxLCAwLCBzaXplb2YocmVxKSk7Ci0gICAgcmVxLm4ubmxtc2dfbGVuID0gTkxNU0dfTEVOR1RIIChzaXplb2Yoc3RydWN0IG5kbXNnKSk7Ci0gICAgcmVxLm4ubmxtc2dfZmxhZ3MgPSBOTE1fRl9SRVFVRVNUIHwgTkxNX0ZfUk9PVDsKLSAgICByZXEubi5ubG1zZ190eXBlID0gUlRNX0dFVE5FSUdIOwotCi0gICAgcmVxLnIubmRtX2ZhbWlseSA9IEFGX0lORVQ2OwotICAgIHJ0YSA9IChzdHJ1Y3QgcnRhdHRyICopKCgoY2hhciAqKSZyZXEpICsgTkxNU0dfQUxJR04ocmVxLm4ubmxtc2dfbGVuKSk7Ci0gICAgcnRhLT5ydGFfbGVuID0gUlRBX0xFTkdUSCgxNik7Ci0KLSAgICBpZihzZW5kKHNkLCAmcmVxLCByZXEubi5ubG1zZ19sZW4sIDApIDwgMCkgewotICAgICAgIHNubXBfbG9nKExPR19FUlIsIlNlbmRpbmcgcmVxdWVzdCBmYWlsZWRcbiIpOwotICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYoKCpzdGF0dXMgPSByZWN2KHNkLCBidWZmLCBzaXplLCAwKSkgPCAwKSB7Ci0gICAgICAgc25tcF9sb2coTE9HX0VSUiwiUmVjaWV2aW5nIHJlcXVlc3QgZmFpbGVkXG4iKTsKLSAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmKCpzdGF0dXMgPT0gMCkgewotICAgICAgIHNubXBfbG9nKExPR19FUlIsIkVuZCBvZiBmaWxlXG4iKTsKLSAgICAgICByZXR1cm4gLTE7Ci0gICAgfQogICAgIHJldHVybiAwOwogfQotCi1pbnQKLWZpbGx1cF9lbnRyeV9pbmZvKG5ldHNubXBfYXJwX2VudHJ5ICplbnRyeSwgc3RydWN0IG5sbXNnaGRyICpubG1wKQotewotICAgIHN0cnVjdCBuZG1zZyAgICpydG1wOwotICAgIHN0cnVjdCBpbjZfYWRkciAqaW42cDsKLSAgICBzdHJ1Y3QgcnRhdHRyICAqdGJbTkRBX01BWCArIDFdLCAqcnRhOwotICAgIHNpemVfdCAgICAgICAgICBpbl9sZW4sIG91dF9sZW47Ci0gICAgdW5zaWduZWQgaW50ICAgIGk7Ci0gICAgaW50ICAgICAgICAgICAgIGxlbmd0aDsKLSAgICBjaGFyICAgICAgICAgICAgYWRkcls0MF07Ci0gICAgdV9jaGFyICAgICAgICAgKmJ1ZjsKLSAgICB1X2NoYXIgICAgICAgICAqaHdhZGRyOwotCi0gICAgcnRtcCA9IChzdHJ1Y3QgbmRtc2cgKikgTkxNU0dfREFUQShubG1wKTsKLSAgICBpZiAobmxtcC0+bmxtc2dfdHlwZSAhPSBSVE1fTkVXTkVJR0gpIHsKLSAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIldyb25nIG5ldGxpbmsgbWVzc2FnZSB0eXBlICVkXG4iLCBubG1wLT5ubG1zZ190eXBlKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIGlmIChydG1wLT5uZG1fc3RhdGUgIT0gTlVEX05PQVJQKSB7Ci0gICAgICAgIG1lbXNldCh0YiwgMCwgc2l6ZW9mKHN0cnVjdCBydGF0dHIgKikgKiAoTkRBX01BWCArIDEpKTsKLSAgICAgICAgbGVuZ3RoID0gbmxtcC0+bmxtc2dfbGVuIC0gTkxNU0dfTEVOR1RIKHNpemVvZigqcnRtcCkpOwotICAgICAgICBpZiAobGVuZ3RoIDwgMCkgewotICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIm5ldGxpbmsgbWVzc2FnZSBsZW5ndGggJWQgPCAlZCBpcyBpbnZhbGlkXG4iLAotICAgICAgICAgICAgICAgICAgICAgbmxtcC0+bmxtc2dfbGVuLCAoaW50KU5MTVNHX0xFTkdUSChzaXplb2YoKnJ0bXApKSk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgLyoKLSAgICAgICAgICogdGhpcyBpcyB3aGF0IHRoZSBrZXJuZWwtcmVtb3ZlZCBOREFfUlRBIGRlZmluZSBkaWQgCi0gICAgICAgICAqLwotICAgICAgICBydGEgPSAoKHN0cnVjdCBydGF0dHIgKikgKCgoY2hhciAqKSAocnRtcCkpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTE1TR19BTElHTihzaXplb2Yoc3RydWN0IG5kbXNnKSkpKTsKLSAgICAgICAgd2hpbGUgKFJUQV9PSyhydGEsIGxlbmd0aCkpIHsKLSAgICAgICAgICAgIGlmIChydGEtPnJ0YV90eXBlIDw9IE5EQV9NQVgpCi0gICAgICAgICAgICAgICAgdGJbcnRhLT5ydGFfdHlwZV0gPSBydGE7Ci0gICAgICAgICAgICBydGEgPSBSVEFfTkVYVChydGEsIGxlbmd0aCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGxlbmd0aCkgewotICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIlJlY2VpdmVkIHVuZXZlbiBudW1iZXIgb2YgbmV0bGluayIKLSAgICAgICAgICAgICAgICAgICAgICAgICIgbWVzc2FnZXMgLSAlZCBieXRlcyByZW1haW5pbmdcbiIsIGxlbmd0aCk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgLyoKLSAgICAgICAgICogRmlsbCB1cCB0aGUgaW5kZXgKLSAgICAgICAgICovCi0gICAgICAgIGVudHJ5LT5pZl9pbmRleCA9IHJ0bXAtPm5kbV9pZmluZGV4OwotICAgICAgICAvKgotICAgICAgICAgKiBGaWxsIHVwIGlwIGFkZHJlc3MgCi0gICAgICAgICAqLwotICAgICAgICBpZiAodGJbTkRBX0RTVF0pIHsKLSAgICAgICAgICAgIG1lbXNldCgmYWRkciwgJ1wwJywgc2l6ZW9mKGFkZHIpKTsKLSAgICAgICAgICAgIGluNnAgPSAoc3RydWN0IGluNl9hZGRyICopIFJUQV9EQVRBKHRiW05EQV9EU1RdKTsKLSAgICAgICAgICAgIHNwcmludGYoYWRkciwgTklQNl9GTVQsIE5JUDYoKmluNnApKTsKLSAgICAgICAgICAgIGluX2xlbiA9IGVudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbiA9Ci0gICAgICAgICAgICAgICAgc2l6ZW9mKGVudHJ5LT5hcnBfaXBhZGRyZXNzKTsKLSAgICAgICAgICAgIG5ldHNubXBfYXNzZXJ0KDE2ID09IGluX2xlbik7Ci0gICAgICAgICAgICBvdXRfbGVuID0gMDsKLSAgICAgICAgICAgIGJ1ZiA9IGVudHJ5LT5hcnBfaXBhZGRyZXNzOwotICAgICAgICAgICAgaWYgKDEgIT0gbmV0c25tcF9oZXhfdG9fYmluYXJ5KCZidWYsICZpbl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dF9sZW4sIDAsIGFkZHIsICI6IikpIHsKLSAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3IgcGFyc2luZyAnJXMnLCBza2lwcGluZ1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+YXJwX2lwYWRkcmVzcyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbmV0c25tcF9hc3NlcnQoMTYgPT0gb3V0X2xlbik7Ci0gICAgICAgICAgICBlbnRyeS0+YXJwX2lwYWRkcmVzc19sZW4gPSBvdXRfbGVuOwotICAgICAgICB9Ci0gICAgICAgIGlmICh0YltOREFfTExBRERSXSkgewotICAgICAgICAgICAgbWVtc2V0KCZhZGRyLCAnXDAnLCBzaXplb2YoYWRkcikpOwotICAgICAgICAgICAgaHdhZGRyID0gUlRBX0RBVEEodGJbTkRBX0xMQUREUl0pOwotICAgICAgICAgICAgZW50cnktPmFycF9waHlzYWRkcmVzc19sZW4gPSBSVEFfUEFZTE9BRCh0YltOREFfTExBRERSXSk7Ci0gICAgICAgICAgICBidWYgPSBlbnRyeS0+YXJwX3BoeXNhZGRyZXNzOwotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGVudHJ5LT5hcnBfcGh5c2FkZHJlc3NfbGVuOyBpKyspCi0gICAgICAgICAgICAgICAgZW50cnktPmFycF9waHlzYWRkcmVzc1tpXSA9IGh3YWRkcltpXTsKLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRjaCAocnRtcC0+bmRtX3N0YXRlKSB7Ci0gICAgICAgIGNhc2UgTlVEX0lOQ09NUExFVEU6Ci0gICAgICAgICAgICBlbnRyeS0+YXJwX3N0YXRlID0gSU5FVE5FVFRPTUVESUFTVEFURV9JTkNPTVBMRVRFOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTlVEX1JFQUNIQUJMRToKLSAgICAgICAgY2FzZSBOVURfUEVSTUFORU5UOgotICAgICAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfUkVBQ0hBQkxFOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTlVEX1NUQUxFOgotICAgICAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfU1RBTEU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOVURfREVMQVk6Ci0gICAgICAgICAgICBlbnRyeS0+YXJwX3N0YXRlID0gSU5FVE5FVFRPTUVESUFTVEFURV9ERUxBWTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5VRF9QUk9CRToKLSAgICAgICAgICAgIGVudHJ5LT5hcnBfc3RhdGUgPSBJTkVUTkVUVE9NRURJQVNUQVRFX1BST0JFOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTlVEX0ZBSUxFRDoKLSAgICAgICAgICAgIGVudHJ5LT5hcnBfc3RhdGUgPSBJTkVUTkVUVE9NRURJQVNUQVRFX0lOVkFMSUQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOVURfTk9ORToKLSAgICAgICAgICAgIGVudHJ5LT5hcnBfc3RhdGUgPSBJTkVUTkVUVE9NRURJQVNUQVRFX1VOS05PV047Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJVbnJlY29nbml6ZWQgQVJQIGVudHJ5IHN0YXRlICVkIiwgcnRtcC0+bmRtX3N0YXRlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgc3dpdGNoIChydG1wLT5uZG1fc3RhdGUpIHsKLSAgICAgICAgY2FzZSBOVURfSU5DT01QTEVURToKLSAgICAgICAgY2FzZSBOVURfRkFJTEVEOgotICAgICAgICBjYXNlIE5VRF9OT05FOgotICAgICAgICAgICAgZW50cnktPmFycF90eXBlID0gSU5FVE5FVFRPTUVESUFUWVBFX0lOVkFMSUQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOVURfUkVBQ0hBQkxFOgotICAgICAgICBjYXNlIE5VRF9TVEFMRToKLSAgICAgICAgY2FzZSBOVURfREVMQVk6Ci0gICAgICAgIGNhc2UgTlVEX1BST0JFOgotICAgICAgICAgICAgZW50cnktPmFycF90eXBlID0gSU5FVE5FVFRPTUVESUFUWVBFX0RZTkFNSUM7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOVURfUEVSTUFORU5UOgotICAgICAgICAgICAgZW50cnktPmFycF90eXBlID0gSU5FVE5FVFRPTUVESUFUWVBFX1NUQVRJQzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgZW50cnktPmFycF90eXBlID0gSU5FVE5FVFRPTUVESUFUWVBFX0xPQ0FMOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gLTE7ICAgICAgICAgICAgICAvKiBjb3VsZCBub3QgY3JlYXRlIGRhdGEgZm9yIHRoaXMgaW50ZXJmYWNlICovCi0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9uZXRsaW5rLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX25ldGxpbmsuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDU5YzIzCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9uZXRsaW5rLmMKQEAgLTAsMCArMSwzMDQgQEAKKy8qCisgKiAgSW50ZXJmYWNlIE1JQiBhcmNoaXRlY3R1cmUgc3VwcG9ydAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvYXJwLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmg+CisKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvcnRuZXRsaW5rLmg+CisKKworc3RhdGljIGludCBmaWxsdXBfZW50cnlfaW5mbyhuZXRzbm1wX2FycF9lbnRyeSAqZW50cnksIHN0cnVjdCBubG1zZ2hkciAqaCk7CitzdGF0aWMgdm9pZCBuZXRzbm1wX2FjY2Vzc19hcnBfcmVhZF9uZXRsaW5rKGludCBmZCwgdm9pZCAqZGF0YSk7CisKKy8qKgorICovCituZXRzbm1wX2FycF9hY2Nlc3MgKgorbmV0c25tcF9hY2Nlc3NfYXJwX2NyZWF0ZSh1X2ludCBpbml0X2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wQWNjZXNzQXJwVXBkYXRlICp1cGRhdGVfaG9vaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcEFjY2Vzc0FycEdDICpnY19ob29rLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmNhY2hlX3RpbWVvdXQsIGludCAqY2FjaGVfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNhY2hlX2V4cGlyZWQpCit7CisgICAgbmV0c25tcF9hcnBfYWNjZXNzICphY2Nlc3M7CisKKyAgICBhY2Nlc3MgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfYXJwX2FjY2Vzcyk7CisgICAgaWYgKE5VTEwgPT0gYWNjZXNzKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsIm1hbGxvYyBlcnJvciBpbiBuZXRzbm1wX2FjY2Vzc19hcnBfY3JlYXRlXG4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgYWNjZXNzLT5hcmNoX21hZ2ljID0gTlVMTDsKKyAgICBhY2Nlc3MtPm1hZ2ljID0gTlVMTDsKKyAgICBhY2Nlc3MtPnVwZGF0ZV9ob29rID0gdXBkYXRlX2hvb2s7CisgICAgYWNjZXNzLT5nY19ob29rID0gZ2NfaG9vazsKKyAgICBhY2Nlc3MtPnN5bmNocm9uaXplZCA9IDA7CisKKyAgICBpZiAoY2FjaGVfdGltZW91dCAhPSBOVUxMKQorICAgICAgICAqY2FjaGVfdGltZW91dCA9IDU7CisgICAgaWYgKGNhY2hlX2ZsYWdzICE9IE5VTEwpCisgICAgICAgICpjYWNoZV9mbGFncyB8PSBORVRTTk1QX0NBQ0hFX1JFU0VUX1RJTUVSX09OX1VTRSB8IE5FVFNOTVBfQ0FDSEVfRE9OVF9GUkVFX0JFRk9SRV9MT0FEOworICAgIGFjY2Vzcy0+Y2FjaGVfZXhwaXJlZCA9IGNhY2hlX2V4cGlyZWQ7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOm5ldGxpbms6YXJwIiwgImNyZWF0ZSBhcnAgY2FjaGVcbiIpKTsKKworICAgIHJldHVybiBhY2Nlc3M7Cit9CisKK2ludCBuZXRzbm1wX2FjY2Vzc19hcnBfZGVsZXRlKG5ldHNubXBfYXJwX2FjY2VzcyAqYWNjZXNzKQoreworICAgIGlmIChOVUxMID09IGFjY2VzcykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBuZXRzbm1wX2FjY2Vzc19hcnBfdW5sb2FkKGFjY2Vzcyk7CisgICAgZnJlZShhY2Nlc3MpOworCisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBuZXRzbm1wX2FjY2Vzc19hcnBfbG9hZChuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2VzcykKK3sKKyAgICBpbnQgciwgZmQgPSAodWludHB0cl90KSBhY2Nlc3MtPmFyY2hfbWFnaWM7CisgICAgc3RydWN0IHsKKyAgICAgICAgc3RydWN0IG5sbXNnaGRyIG47CisgICAgICAgIHN0cnVjdCBuZG1zZyByOworICAgIH0gcmVxOworCisgICAgaWYgKGFjY2Vzcy0+c3luY2hyb25pemVkKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChmZCA9PSAwKSB7CisgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9ubCBzYTsKKworICAgICAgICBmZCA9IHNvY2tldChQRl9ORVRMSU5LLCBTT0NLX0RHUkFNLCBORVRMSU5LX1JPVVRFKTsKKyAgICAgICAgaWYgKGZkIDwgMCkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwibmV0c25tcF9hY2Nlc3NfYXJwX2xvYWQ6IG5ldGxpbmsgc29ja2V0IGNyZWF0ZSBlcnJvclxuIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgYWNjZXNzLT5hcmNoX21hZ2ljID0gKHZvaWQgKikodWludHB0cl90KWZkOworCisgICAgICAgIG1lbXNldCgmc2EsIDAsIHNpemVvZihzYSkpOworICAgICAgICBzYS5ubF9mYW1pbHkgPSBBRl9ORVRMSU5LOworICAgICAgICBzYS5ubF9ncm91cHMgPSBSVE1HUlBfTkVJR0g7CisgICAgICAgIGlmIChiaW5kKGZkLCAoc3RydWN0IHNvY2thZGRyKikgJnNhLCBzaXplb2Yoc2EpKSA8IDApIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsIm5ldHNubXBfYWNjZXNzX2FycF9sb2FkOiBuZXRsaW5rIGJpbmQgZmFpbGVkXG4iKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyZWdpc3Rlcl9yZWFkZmQoZmQsIG5ldHNubXBfYWNjZXNzX2FycF9yZWFkX25ldGxpbmssIGFjY2VzcykgIT0gMCkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwibmV0c25tcF9hY2Nlc3NfYXJwX2xvYWQ6IGVycm9yIHJlZ2lzdGVyaW5nIG5ldGxpbmsgc29ja2V0XG4iKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6bmV0bGluazphcnAiLCAic3luY2hyb25pemluZyBhcnAgdGFibGVcbiIpKTsKKworICAgIGFjY2Vzcy0+Z2VuZXJhdGlvbisrOworCisgICAgbWVtc2V0KCZyZXEsIDAsIHNpemVvZihyZXEpKTsKKyAgICByZXEubi5ubG1zZ19sZW4gPSBzaXplb2YocmVxKTsKKyAgICByZXEubi5ubG1zZ19mbGFncyA9IE5MTV9GX1JFUVVFU1QgfCBOTE1fRl9ST09UOworICAgIHJlcS5uLm5sbXNnX3R5cGUgPSBSVE1fR0VUTkVJR0g7CisgICAgcmVxLnIubmRtX2ZhbWlseSA9IEFGX1VOU1BFQzsKKworICAgIHIgPSBzZW5kKGZkLCAmcmVxLCByZXEubi5ubG1zZ19sZW4sIDApOworICAgIGlmIChyIDwgMCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJuZXRzbm1wX2FjY2Vzc19hcnBfcmVmcmVzaDogc2VuZCBmYWlsZWRcbiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgd2hpbGUgKCFhY2Nlc3MtPnN5bmNocm9uaXplZCkKKyAgICAgICAgbmV0c25tcF9hY2Nlc3NfYXJwX3JlYWRfbmV0bGluayhmZCwgYWNjZXNzKTsKKyAgICBhY2Nlc3MtPmdjX2hvb2soYWNjZXNzKTsKKworICAgIHJldHVybiAwOworfQorCitpbnQgbmV0c25tcF9hY2Nlc3NfYXJwX3VubG9hZChuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2VzcykKK3sKKyAgICBpbnQgZmQ7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOm5ldGxpbms6YXJwIiwgInVubG9hZCBhcnAgY2FjaGVcbiIpKTsKKworICAgIGZkID0gKHVpbnRwdHJfdCkgYWNjZXNzLT5hcmNoX21hZ2ljOworICAgIGlmIChmZCA+IDApIHsKKyAgICAgICAgIHVucmVnaXN0ZXJfcmVhZGZkKGZkKTsKKyAgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgIGFjY2Vzcy0+YXJjaF9tYWdpYyA9IE5VTEw7CisJIGFjY2Vzcy0+c3luY2hyb25pemVkID0gMDsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIG5ldHNubXBfYWNjZXNzX2FycF9yZWFkX25ldGxpbmsoaW50IGZkLCB2b2lkICpkYXRhKQoreworICAgIG5ldHNubXBfYXJwX2FjY2VzcyAqYWNjZXNzID0gKG5ldHNubXBfYXJwX2FjY2VzcyAqKSBkYXRhOworICAgIG5ldHNubXBfYXJwX2VudHJ5ICplbnRyeTsKKyAgICBjaGFyIGJ1ZlsxNjM4NF07CisgICAgc3RydWN0IG5sbXNnaGRyICpoOworICAgIGludCByLCBsZW47CisKKyAgICBkbyB7CisgICAgICAgIHIgPSByZWN2KGZkLCBidWYsIHNpemVvZihidWYpLCBNU0dfRE9OVFdBSVQpOworICAgICAgICBpZiAociA8IDApIHsKKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4pCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJuZXRsaW5rIGJ1ZmZlciBvdmVycnVuXG4iKTsKKyAgICAgICAgICAgIGFjY2Vzcy0+c3luY2hyb25pemVkID0gMDsKKyAgICAgICAgICAgIGlmIChhY2Nlc3MtPmNhY2hlX2V4cGlyZWQgIT0gTlVMTCkKKwkJKmFjY2Vzcy0+Y2FjaGVfZXhwaXJlZCA9IDE7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IHdoaWxlICgwKTsKKyAgICBsZW4gPSByOworCisgICAgZm9yIChoID0gKHN0cnVjdCBubG1zZ2hkciAqKSBidWY7IE5MTVNHX09LKGgsIGxlbik7IGggPSBOTE1TR19ORVhUKGgsIGxlbikpIHsKKyAgICAgICAgIGlmIChoLT5ubG1zZ190eXBlID09IE5MTVNHX0RPTkUpIHsKKyAgICAgICAgICAgICBhY2Nlc3MtPnN5bmNocm9uaXplZCA9IDE7CisgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICB9CisKKyAgICAgICAgIGVudHJ5ID0gbmV0c25tcF9hY2Nlc3NfYXJwX2VudHJ5X2NyZWF0ZSgpOworICAgICAgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6bmV0bGluazphcnAiLCAiYXJwIG5ldGxpbmsgbm90aWZpY2F0aW9uXG4iKSk7CisgICAgCisgICAgICAgICBlbnRyeS0+Z2VuZXJhdGlvbiA9IGFjY2Vzcy0+Z2VuZXJhdGlvbjsKKyAgICAgICAgIHIgPSBmaWxsdXBfZW50cnlfaW5mbyAoZW50cnksIGgpOworICAgICAgICAgaWYgKHIgPiAwKSB7CisgICAgICAgICAgICAgYWNjZXNzLT51cGRhdGVfaG9vayhhY2Nlc3MsIGVudHJ5KTsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgaWYgKHIgPCAwKSB7CisgICAgICAgICAgICAgICAgIE5FVFNOTVBfTE9HT05DRSgoTE9HX0VSUiwgImZpbGxpbmcgZW50cnkgaW5mbyBmYWlsZWRcbiIpKTsKKyAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpuZXRsaW5rOmFycCIsICJmaWxsaW5nIGVudHJ5IGluZm8gZmFpbGVkXG4iKSk7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2FycF9lbnRyeV9mcmVlKGVudHJ5KTsKKyAgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK2ZpbGx1cF9lbnRyeV9pbmZvKG5ldHNubXBfYXJwX2VudHJ5ICplbnRyeSwgc3RydWN0IG5sbXNnaGRyICpubG1wKQoreworICAgIHN0cnVjdCBuZG1zZyAgICpydG1wOworICAgIHN0cnVjdCBydGF0dHIgICp0YltOREFfTUFYICsgMV0sICpydGE7CisgICAgaW50ICAgICAgICAgICAgIGxlbmd0aDsKKworICAgIHJ0bXAgPSAoc3RydWN0IG5kbXNnICopIE5MTVNHX0RBVEEobmxtcCk7CisgICAgc3dpdGNoIChubG1wLT5ubG1zZ190eXBlKSB7CisgICAgY2FzZSBSVE1fTkVXTkVJR0g6CisgICAgICAgIGlmIChydG1wLT5uZG1fc3RhdGUgPT0gTlVEX0ZBSUxFRCkKKyAgICAgICAgICAgIGVudHJ5LT5mbGFncyA9IE5FVFNOTVBfQUNDRVNTX0FSUF9FTlRSWV9GTEFHX0RFTEVURTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZW50cnktPmZsYWdzID0gMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSVE1fREVMTkVJR0g6CisgICAgICAgIGVudHJ5LT5mbGFncyA9IE5FVFNOTVBfQUNDRVNTX0FSUF9FTlRSWV9GTEFHX0RFTEVURTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSVE1fR0VUTkVJR0g6CisgICAgICAgIHJldHVybiAwOworICAgIGRlZmF1bHQ6CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6bmV0bGluazphcnAiLAorICAgICAgICAgICAgICAgICAgICAiV3JvbmcgTmV0bGluayBtZXNzYWdlIHR5cGUgJWRcbiIsIG5sbXAtPm5sbXNnX3R5cGUpKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChydG1wLT5uZG1fc3RhdGUgPT0gTlVEX05PQVJQKSB7CisgICAgICAgIC8qIE5VRF9OT0FSUCBpcyBmb3IgYnJvYWRjYXN0IGFkZHJlc3NlcyBhbmQgc2ltaWxhciwKKyAgICAgICAgICogZHJvcCB0aGVtIHNpbGVudGx5ICovCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG1lbXNldCh0YiwgMCwgc2l6ZW9mKHN0cnVjdCBydGF0dHIgKikgKiAoTkRBX01BWCArIDEpKTsKKyAgICBsZW5ndGggPSBubG1wLT5ubG1zZ19sZW4gLSBOTE1TR19MRU5HVEgoc2l6ZW9mKCpydG1wKSk7CisgICAgcnRhID0gKChzdHJ1Y3QgcnRhdHRyICopICgoKGNoYXIgKikgKHJ0bXApKSArIE5MTVNHX0FMSUdOKHNpemVvZihzdHJ1Y3QgbmRtc2cpKSkpOworICAgIHdoaWxlIChSVEFfT0socnRhLCBsZW5ndGgpKSB7CisgICAgICAgIGlmIChydGEtPnJ0YV90eXBlIDw9IE5EQV9NQVgpCisgICAgICAgICAgICB0YltydGEtPnJ0YV90eXBlXSA9IHJ0YTsKKyAgICAgICAgcnRhID0gUlRBX05FWFQocnRhLCBsZW5ndGgpOworICAgIH0KKworICAgIC8qCisgICAgICogRmlsbCB1cCB0aGUgaW5kZXggYW5kIGFkZHJlc3NlcworICAgICAqLworICAgIGVudHJ5LT5pZl9pbmRleCA9IHJ0bXAtPm5kbV9pZmluZGV4OworICAgIGlmICh0YltOREFfRFNUXSkgeworICAgICAgICBlbnRyeS0+YXJwX2lwYWRkcmVzc19sZW4gPSBSVEFfUEFZTE9BRCh0YltOREFfRFNUXSk7CisgICAgICAgIGlmIChlbnRyeS0+YXJwX2lwYWRkcmVzc19sZW4gPiBzaXplb2YoZW50cnktPmFycF9pcGFkZHJlc3MpKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibmV0bGluayBpcCBhZGRyZXNzIGxlbmd0aCAlZCBpcyB0b28gbG9uZ1xuIiwKKyAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgbWVtY3B5KGVudHJ5LT5hcnBfaXBhZGRyZXNzLCBSVEFfREFUQSh0YltOREFfRFNUXSksCisgICAgICAgZW50cnktPmFycF9pcGFkZHJlc3NfbGVuKTsKKyAgICB9CisgICAgaWYgKHRiW05EQV9MTEFERFJdKSB7CisgICAgICAgIGVudHJ5LT5hcnBfcGh5c2FkZHJlc3NfbGVuID0gUlRBX1BBWUxPQUQodGJbTkRBX0xMQUREUl0pOworICAgICAgICBpZiAoZW50cnktPmFycF9waHlzYWRkcmVzc19sZW4gPiBzaXplb2YoZW50cnktPmFycF9waHlzYWRkcmVzcykpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJuZXRsaW5rIGh3IGFkZHJlc3MgbGVuZ3RoICVkIGlzIHRvbyBsb25nXG4iLAorICAgICAgICAgICAgICAgICAgICAgZW50cnktPmFycF9waHlzYWRkcmVzc19sZW4pOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIG1lbWNweShlbnRyeS0+YXJwX3BoeXNhZGRyZXNzLCBSVEFfREFUQSh0YltOREFfTExBRERSXSksCisgICAgICAgICAgICAgICBlbnRyeS0+YXJwX3BoeXNhZGRyZXNzX2xlbik7CisgICAgfQorCisgICAgc3dpdGNoIChydG1wLT5uZG1fc3RhdGUpIHsKKyAgICBjYXNlIE5VRF9JTkNPTVBMRVRFOgorICAgICAgICBlbnRyeS0+YXJwX3N0YXRlID0gSU5FVE5FVFRPTUVESUFTVEFURV9JTkNPTVBMRVRFOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5VRF9SRUFDSEFCTEU6CisgICAgY2FzZSBOVURfUEVSTUFORU5UOgorICAgICAgICBlbnRyeS0+YXJwX3N0YXRlID0gSU5FVE5FVFRPTUVESUFTVEFURV9SRUFDSEFCTEU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTlVEX1NUQUxFOgorICAgICAgICBlbnRyeS0+YXJwX3N0YXRlID0gSU5FVE5FVFRPTUVESUFTVEFURV9TVEFMRTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOVURfREVMQVk6CisgICAgICAgIGVudHJ5LT5hcnBfc3RhdGUgPSBJTkVUTkVUVE9NRURJQVNUQVRFX0RFTEFZOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5VRF9QUk9CRToKKyAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfUFJPQkU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTlVEX0ZBSUxFRDoKKyAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfSU5WQUxJRDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOVURfTk9ORToKKyAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfVU5LTk9XTjsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIlVucmVjb2duaXplZCBBUlAgZW50cnkgc3RhdGUgJWQiLCBydG1wLT5uZG1fc3RhdGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHJ0bXAtPm5kbV9zdGF0ZSkgeworICAgIGNhc2UgTlVEX0lOQ09NUExFVEU6CisgICAgY2FzZSBOVURfRkFJTEVEOgorICAgIGNhc2UgTlVEX05PTkU6CisgICAgICAgIGVudHJ5LT5hcnBfdHlwZSA9IElORVRORVRUT01FRElBVFlQRV9JTlZBTElEOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5VRF9SRUFDSEFCTEU6CisgICAgY2FzZSBOVURfU1RBTEU6CisgICAgY2FzZSBOVURfREVMQVk6CisgICAgY2FzZSBOVURfUFJPQkU6CisgICAgICAgIGVudHJ5LT5hcnBfdHlwZSA9IElORVRORVRUT01FRElBVFlQRV9EWU5BTUlDOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5VRF9QRVJNQU5FTlQ6CisgICAgICAgIGVudHJ5LT5hcnBfdHlwZSA9IElORVRORVRUT01FRElBVFlQRV9TVEFUSUM7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGVudHJ5LT5hcnBfdHlwZSA9IElORVRORVRUT01FRElBVFlQRV9MT0NBTDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX3N5c2N0bC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9zeXNjdGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODE2NjY0Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9zeXNjdGwuYwpAQCAtMCwwICsxLDMyOCBAQAorLyoKKyAqICBJbnRlcmZhY2UgTUlCIGFyY2hpdGVjdHVyZSBzdXBwb3J0CisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9hcnAuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaD4KKworI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CisjaW5jbHVkZSA8bmV0L2lmLmg+CisjaW5jbHVkZSA8bmV0L2lmX2RsLmg+CisjaW5jbHVkZSA8bmV0L2lmX3R5cGVzLmg+CisjaW5jbHVkZSA8bmV0L3JvdXRlLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorCisjaWYgIWRlZmluZWQoU0FfU0laRSkgJiYgIWRlZmluZWQoUlRfUk9VTkRVUCkKKyNkZWZpbmUgUlRfUk9VTkRVUChhKSAgXAorCSgoYSkgPiAwID8gKDEgKyAoKChhKSAtIDEpIHwgKHNpemVvZihsb25nKSAtIDEpKSkgOiBzaXplb2YobG9uZykpCisjZW5kaWYKKworc3RhdGljIGludCBfbG9hZF9hcnBfdGFibGVfZnJvbV9zeXNjdGwobmV0c25tcF9hcnBfYWNjZXNzICopOworc3RhdGljIGludCBfbG9hZF9uZHBfdGFibGVfZnJvbV9zeXNjdGwobmV0c25tcF9hcnBfYWNjZXNzICopOworCituZXRzbm1wX2FycF9hY2Nlc3MgKgorbmV0c25tcF9hY2Nlc3NfYXJwX2NyZWF0ZSh1X2ludCBpbml0X2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wQWNjZXNzQXJwVXBkYXRlICp1cGRhdGVfaG9vaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcEFjY2Vzc0FycEdDICpnY19ob29rLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmNhY2hlX3RpbWVvdXQsIGludCAqY2FjaGVfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNhY2hlX2V4cGlyZWQpCit7CisgICAgbmV0c25tcF9hcnBfYWNjZXNzICphY2Nlc3M7CisKKyAgICBhY2Nlc3MgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfYXJwX2FjY2Vzcyk7CisgICAgaWYgKE5VTEwgPT0gYWNjZXNzKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJtYWxsb2MgZXJyb3IgaW4gbmV0c25tcF9hY2Nlc3NfYXJwX2NyZWF0ZVxuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGFjY2Vzcy0+YXJjaF9tYWdpYyA9IE5VTEw7CisgICAgYWNjZXNzLT5tYWdpYyA9IE5VTEw7CisgICAgYWNjZXNzLT51cGRhdGVfaG9vayA9IHVwZGF0ZV9ob29rOworICAgIGFjY2Vzcy0+Z2NfaG9vayA9IGdjX2hvb2s7CisgICAgYWNjZXNzLT5zeW5jaHJvbml6ZWQgPSAwOworCisgICAgaWYgKGNhY2hlX3RpbWVvdXQgIT0gTlVMTCkKKyAgICAgICAgKmNhY2hlX3RpbWVvdXQgPSA1OworICAgIGlmIChjYWNoZV9mbGFncyAhPSBOVUxMKQorICAgICAgICAqY2FjaGVfZmxhZ3MgfD0gTkVUU05NUF9DQUNIRV9ET05UX0ZSRUVfQkVGT1JFX0xPQUQKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgTkVUU05NUF9DQUNIRV9BVVRPX1JFTE9BRDsKKyAgICBhY2Nlc3MtPmNhY2hlX2V4cGlyZWQgPSBjYWNoZV9leHBpcmVkOworCisgICAgcmV0dXJuIGFjY2VzczsKK30KKworaW50IG5ldHNubXBfYWNjZXNzX2FycF9kZWxldGUobmV0c25tcF9hcnBfYWNjZXNzICphY2Nlc3MpCit7CisgICAgaWYgKE5VTEwgPT0gYWNjZXNzKQorICAgICAgICByZXR1cm4gMDsKKworICAgIG5ldHNubXBfYWNjZXNzX2FycF91bmxvYWQoYWNjZXNzKTsKKyAgICBmcmVlKGFjY2Vzcyk7CisKKyAgICByZXR1cm4gMDsKK30KKworaW50IG5ldHNubXBfYWNjZXNzX2FycF9sb2FkKG5ldHNubXBfYXJwX2FjY2VzcyAqYWNjZXNzKQoreworICAgIGludCBlcnIgPSAwOworCisgICAgYWNjZXNzLT5nZW5lcmF0aW9uKys7CisgICAgREVCVUdNU0dUTCgoImFjY2Vzczpyb3V0ZTpjb250YWluZXIiLAorICAgICAgICAgICAgICAgICJyb3V0ZV9jb250YWluZXJfYXJjaF9sb2FkIGlwdjRcbiIpKTsKKyAgICBlcnIgPSBfbG9hZF9hcnBfdGFibGVfZnJvbV9zeXNjdGwoYWNjZXNzKTsKKyAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgTkVUU05NUF9MT0dPTkNFKChMT0dfRVJSLAorICAgICAgICAgICAgIm5ldHNubXBfYWNjZXNzX2FycF9pcHY0IGZhaWxlZCAlZFxuIiwgZXJyKSk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKyAgICBhY2Nlc3MtPmdjX2hvb2soYWNjZXNzKTsKKyAgICBhY2Nlc3MtPnN5bmNocm9uaXplZCA9IChlcnIgPT0gMCk7CisKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgREVCVUdNU0dUTCgoImFjY2Vzczpyb3V0ZTpjb250YWluZXIiLAorICAgICAgICAgICAgICAgICJyb3V0ZV9jb250YWluZXJfYXJjaF9sb2FkIGlwdjZcbiIpKTsKKyAgICBlcnIgPSBfbG9hZF9uZHBfdGFibGVfZnJvbV9zeXNjdGwoYWNjZXNzKTsKKyAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgTkVUU05NUF9MT0dPTkNFKChMT0dfRVJSLAorICAgICAgICAgICAgIm5ldHNubXBfYWNjZXNzX2FycF9pcHY2IGZhaWxlZCAlZFxuIiwgZXJyKSk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKyAgICBhY2Nlc3MtPmdjX2hvb2soYWNjZXNzKTsKKyAgICBhY2Nlc3MtPnN5bmNocm9uaXplZCA9IChlcnIgPT0gMCk7CisjZW5kaWYKKworb3V0OgorICAgIHJldHVybiAoZXJyID09IDAgPyAwIDogLTEpOworfQorCitpbnQgbmV0c25tcF9hY2Nlc3NfYXJwX3VubG9hZChuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2VzcykKK3sKKyAgICBhY2Nlc3MtPnN5bmNocm9uaXplZCA9IDA7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorX2xvYWRfYXJwX3RhYmxlX2Zyb21fc3lzY3RsKG5ldHNubXBfYXJwX2FjY2VzcyAqYWNjZXNzKQoreworICAgIG5ldHNubXBfYXJwX2VudHJ5ICplbnRyeTsKKyAgICBzdHJ1Y3QgcnRfbXNnaGRyICpydG07CisgICAgc3RydWN0IHNvY2thZGRyX2luYXJwICpzaW4yOworICAgIHN0cnVjdCBzb2NrYWRkcl9kbCAqc2RsOworICAgIGNoYXIgKmJ1ZiwgKmxpbSwgKm5ld2J1ZiwgKm5leHQ7CisgICAgaW50IG1pYls2XTsKKyAgICBzaXplX3QgbmVlZGVkOworICAgIGludCBlcnIsIHN0OworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBhY2Nlc3MpOworCisgICAgbWliWzBdID0gQ1RMX05FVDsKKyAgICBtaWJbMV0gPSBQRl9ST1VURTsKKyAgICBtaWJbMl0gPSAwOworICAgIG1pYlszXSA9IEFGX0lORVQ7CisgICAgbWliWzRdID0gTkVUX1JUX0ZMQUdTOworICAgIG1pYls1XSA9IFJURl9MTElORk87CisKKyAgICBlcnIgPSAwOworICAgIGJ1ZiA9IG5ld2J1ZiA9IE5VTEw7CisKKyAgICAvKiBUaGUgZm9sbG93aW5nIGxvZ2ljIHdhcyBhZGFwdGVkIGZyb20gc2VhcmNoKC4uKSBpbiB1c3Iuc2Jpbi9hcnAvYXJwLmMgKi8KKworICAgIGlmIChzeXNjdGwobWliLCA2LCBOVUxMLCAmbmVlZGVkLCBOVUxMLCAwKSA8IDApIHsKKyAgICAgICAgZXJyID0gZXJybm87CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIC8qIEVtcHR5IGFycCB0YWJsZS4gKi8KKyAgICBpZiAobmVlZGVkID09IDApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgZm9yICg7OykgeworICAgICAgICBuZXdidWYgPSByZWFsbG9jKGJ1ZiwgbmVlZGVkKTsKKyAgICAgICAgaWYgKG5ld2J1ZiA9PSBOVUxMKSB7CisgICAgICAgICAgICBlcnIgPSBFTk9NRU07CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgICAgICBidWYgPSBuZXdidWY7CisgICAgICAgIHN0ID0gc3lzY3RsKG1pYiwgNiwgYnVmLCAmbmVlZGVkLCBOVUxMLCAwKTsKKyAgICAgICAgaWYgKHN0ID09IDAgfHwgZXJybm8gIT0gRU5PTUVNKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5lZWRlZCArPSBuZWVkZWQgLyA4OyAvKiBYWFg6IHdoeSA4PyAqLworICAgIH0KKyAgICBpZiAoc3QgPT0gLTEpIHsKKyAgICAgICAgZXJyID0gZXJybm87CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGxpbSA9IGJ1ZiArIG5lZWRlZDsKKyAgICBmb3IgKG5leHQgPSBidWY7IG5leHQgPCBsaW07IG5leHQgKz0gcnRtLT5ydG1fbXNnbGVuKSB7CisKKyAgICAgICAgcnRtID0gKHN0cnVjdCBydF9tc2doZHIgKiluZXh0OworICAgICAgICBzaW4yID0gKHN0cnVjdCBzb2NrYWRkcl9pbmFycCopKHJ0bSArIDEpOworI2lmZGVmIFNBX1NJWkUKKyAgICAgICAgc2RsID0gKHN0cnVjdCBzb2NrYWRkcl9kbCopKChjaGFyICopc2luMiArIFNBX1NJWkUoc2luMikpOworI2Vsc2UKKwlzZGwgPSAoc3RydWN0IHNvY2thZGRyX2RsKikodm9pZCAqKShSVF9ST1VORFVQKHNpbjItPnNpbl9sZW4pICsgKGNoYXIgKikodm9pZCAqKXNpbjIpOworI2VuZGlmCisKKyAgICAgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19hcnBfZW50cnlfY3JlYXRlKCk7CisgICAgICAgIGlmIChOVUxMID09IGVudHJ5KSB7CisgICAgICAgICAgICBlcnIgPSBFTk9NRU07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGVudHJ5LT5nZW5lcmF0aW9uID0gYWNjZXNzLT5nZW5lcmF0aW9uOworICAgICAgICBlbnRyeS0+aWZfaW5kZXggPSBydG0tPnJ0bV9pbmRleDsKKworICAgICAgICBlbnRyeS0+YXJwX2lwYWRkcmVzc19sZW4gPSA0OworCisgICAgICAgIG1lbWNweShlbnRyeS0+YXJwX2lwYWRkcmVzcywgJnNpbjItPnNpbl9hZGRyLnNfYWRkciwKKyAgICAgICAgICAgIGVudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbik7CisKKyAgICAgICAgLyogSFcgQWRkcmVzcyAqLworICAgICAgICBlbnRyeS0+YXJwX3BoeXNhZGRyZXNzX2xlbiA9IDY7CisgICAgICAgIGlmICgwIDwgc2RsLT5zZGxfYWxlbikgeworICAgICAgICAgICAgbWVtY3B5KGVudHJ5LT5hcnBfcGh5c2FkZHJlc3MsIExMQUREUihzZGwpLCBzZGwtPnNkbF9hbGVuKTsKKyAgICAgICAgICAgIC8qIFByb2Nlc3Mgc3RhdHVzICovCisgICAgICAgICAgICAvKiBYWFg6IHNldHRpbmcgdGhpcyB2YWx1ZSBmb3IgYWxsIHN0YXRlcyBpcyB3cm9uZy4gKi8KKyAgICAgICAgICAgIGVudHJ5LT5hcnBfc3RhdGUgPSBJTkVUTkVUVE9NRURJQVNUQVRFX1JFQUNIQUJMRTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVudHJ5LT5hcnBfcGh5c2FkZHJlc3NbMF0gPSAnXDAnOworICAgICAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfSU5DT01QTEVURTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFByb2Nlc3MgdHlwZSAqLworICAgICAgICAvKiBYWFg6IG1vcmUgc3RhdGVzIHNob3VsZCBiZSBoYW5kbGVkIGhlcmUsIHByb2JhYmx5Li4gKi8KKyAgICAgICAgaWYgKHJ0bS0+cnRtX3JteC5ybXhfZXhwaXJlID09IDApCisgICAgICAgICAgICBlbnRyeS0+YXJwX3R5cGUgPSBJTkVUTkVUVE9NRURJQVRZUEVfU1RBVElDOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlbnRyeS0+YXJwX3R5cGUgPSBJTkVUTkVUVE9NRURJQVRZUEVfRFlOQU1JQzsKKworICAgICAgICBhY2Nlc3MtPnVwZGF0ZV9ob29rKGFjY2VzcywgZW50cnkpOworCisgICAgfQorCitvdXQ6CisgICAgZnJlZShidWYpOworICAgIHJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQKK19sb2FkX25kcF90YWJsZV9mcm9tX3N5c2N0bChuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2VzcykKK3sKKyNpZiAxCisgICAgbmV0c25tcF9hcnBfZW50cnkgKmVudHJ5OworICAgIHN0cnVjdCBydF9tc2doZHIgKnJ0bTsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW4yOworICAgIHN0cnVjdCBzb2NrYWRkcl9kbCAqc2RsOworICAgIHNpemVfdCBuZWVkZWQ7CisgICAgaW50IGVyciwgbWliWzZdLCBzdDsKKyAgICBjaGFyICpidWYsICpsaW0sICpuZXdidWYsICpuZXh0OworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBhY2Nlc3MpOworCisgICAgbWliWzBdID0gQ1RMX05FVDsKKyAgICBtaWJbMV0gPSBQRl9ST1VURTsKKyAgICBtaWJbMl0gPSAwOworICAgIG1pYlszXSA9IEFGX0lORVQ2OworICAgIG1pYls0XSA9IE5FVF9SVF9GTEFHUzsKKyAgICBtaWJbNV0gPSBSVEZfTExJTkZPOworCisgICAgZXJyID0gMDsKKyAgICBidWYgPSBuZXdidWYgPSBOVUxMOworCisgICAgaWYgKHN5c2N0bChtaWIsIDYsIE5VTEwsICZuZWVkZWQsIE5VTEwsIDApIDwgMCkgeworICAgICAgICBlcnIgPSBlcnJubzsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgLyogRW1wdHkgYXJwIHRhYmxlLiAqLworICAgIGlmIChuZWVkZWQgPT0gMCkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIG5ld2J1ZiA9IHJlYWxsb2MoYnVmLCBuZWVkZWQpOworICAgICAgICBpZiAobmV3YnVmID09IE5VTEwpIHsKKyAgICAgICAgICAgIGVyciA9IEVOT01FTTsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisgICAgICAgIGJ1ZiA9IG5ld2J1ZjsKKyAgICAgICAgc3QgPSBzeXNjdGwobWliLCA2LCBidWYsICZuZWVkZWQsIE5VTEwsIDApOworICAgICAgICBpZiAoc3QgPT0gMCB8fCBlcnJubyAhPSBFTk9NRU0pCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbmVlZGVkICs9IG5lZWRlZCAvIDg7IC8qIFhYWDogd2h5IDg/ICovCisgICAgfQorICAgIGlmIChzdCA9PSAtMSkgeworICAgICAgICBlcnIgPSBlcnJubzsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgbGltID0gYnVmICsgbmVlZGVkOworICAgIGZvciAobmV4dCA9IGJ1ZjsgbmV4dCA8IGxpbTsgbmV4dCArPSBydG0tPnJ0bV9tc2dsZW4pIHsKKworICAgICAgICBydG0gPSAoc3RydWN0IHJ0X21zZ2hkciAqKW5leHQ7CisgICAgICAgIHNpbjIgPSAoc3RydWN0IHNvY2thZGRyX2luNiopKHJ0bSArIDEpOworI2lmZGVmIFNBX1NJWkUKKyAgICAgICAgc2RsID0gKHN0cnVjdCBzb2NrYWRkcl9kbCopKChjaGFyICopc2luMiArIFNBX1NJWkUoc2luMikpOworI2Vsc2UKKwlzZGwgPSAoc3RydWN0IHNvY2thZGRyX2RsKikodm9pZCAqKShSVF9ST1VORFVQKHNpbjItPnNpbjZfbGVuKSArIChjaGFyICopKHZvaWQgKilzaW4yKTsKKyNlbmRpZgorCisgICAgICAgIGlmICghKHJ0bS0+cnRtX2ZsYWdzICYgUlRGX0hPU1QpIHx8CisgICAgICAgICAgICBJTjZfSVNfQUREUl9NVUxUSUNBU1QoJnNpbjItPnNpbjZfYWRkcikpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBlbnRyeSA9IG5ldHNubXBfYWNjZXNzX2FycF9lbnRyeV9jcmVhdGUoKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gZW50cnkpIHsKKyAgICAgICAgICAgIGVyciA9IEVOT01FTTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZW50cnktPmdlbmVyYXRpb24gPSBhY2Nlc3MtPmdlbmVyYXRpb247CisgICAgICAgIGVudHJ5LT5pZl9pbmRleCA9IHJ0bS0+cnRtX2luZGV4OworCisgICAgICAgIGVudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbiA9IDE2OworCisgICAgICAgIG1lbWNweShlbnRyeS0+YXJwX2lwYWRkcmVzcywgJnNpbjItPnNpbjZfYWRkci5zNl9hZGRyLAorICAgICAgICAgICAgZW50cnktPmFycF9pcGFkZHJlc3NfbGVuKTsKKworICAgICAgICAvKiBIVyBBZGRyZXNzICovCisgICAgICAgIGVudHJ5LT5hcnBfcGh5c2FkZHJlc3NfbGVuID0gc2RsLT5zZGxfYWxlbjsKKyAgICAgICAgaWYgKDAgPCBzZGwtPnNkbF9hbGVuKSB7CisgICAgICAgICAgICBtZW1jcHkoZW50cnktPmFycF9waHlzYWRkcmVzcywgTExBRERSKHNkbCksIHNkbC0+c2RsX2FsZW4pOworICAgICAgICAgICAgLyogUHJvY2VzcyBzdGF0dXMgKi8KKyAgICAgICAgICAgIC8qIFhYWDogc2V0dGluZyB0aGlzIHZhbHVlIGZvciBhbGwgc3RhdGVzIGlzIHdyb25nLiAqLworICAgICAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfUkVBQ0hBQkxFOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW50cnktPmFycF9waHlzYWRkcmVzc1swXSA9ICdcMCc7CisgICAgICAgICAgICBlbnRyeS0+YXJwX3N0YXRlID0gSU5FVE5FVFRPTUVESUFTVEFURV9JTkNPTVBMRVRFOworICAgICAgICB9CisKKyAgICAgICAgLyogUHJvY2VzcyB0eXBlICovCisgICAgICAgIC8qIFhYWDogbW9yZSBzdGF0ZXMgc2hvdWxkIGJlIGhhbmRsZWQgaGVyZSwgcHJvYmFibHkuLiAqLworICAgICAgICBpZiAocnRtLT5ydG1fcm14LnJteF9leHBpcmUgPT0gMCkKKyAgICAgICAgICAgIGVudHJ5LT5hcnBfdHlwZSA9IElORVRORVRUT01FRElBVFlQRV9TVEFUSUM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVudHJ5LT5hcnBfdHlwZSA9IElORVRORVRUT01FRElBVFlQRV9EWU5BTUlDOworCisgICAgICAgIGFjY2Vzcy0+dXBkYXRlX2hvb2soYWNjZXNzLCBlbnRyeSk7CisKKyAgICB9CisKK291dDoKKyAgICBmcmVlKGJ1Zik7CisgICAgcmV0dXJuIGVycjsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlci5oCmluZGV4IGE0ZGZiYjEuLjQ5Yjk5MjcgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXIuaApAQCAtMjAsNiArMjAsOCBAQAogY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXJfY29tbW9uKQogI2lmIGRlZmluZWQoIGxpbnV4ICkKIGNvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyX2xpbnV4KQorI2VsaWYgZGVmaW5lZCggZnJlZWJzZDQgKSB8fCBkZWZpbmVkKCBuZXRic2Q1ICkgfHwgZGVmaW5lZCggb3BlbmJzZCApIHx8IGRlZmluZWQoIGRyYWdvbmZseSApIHx8IGRlZmluZWQoIGRhcndpbiApCitjb25maWdfcmVxdWlyZShpcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlcl9zeXNjdGwpCiAjZWxzZQogLyoKICAqIGNvdWxkbid0IGRldGVybWluZSB0aGUgY29ycmVjdCBmaWxlIQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXJfc3lzY3RsLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlcl9zeXNjdGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTk0ZjU4Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXJfc3lzY3RsLmMKQEAgLTAsMCArMSwyMzAgQEAKKy8qCisgKiAgSW50ZXJmYWNlIE1JQiBhcmNoaXRlY3R1cmUgc3VwcG9ydAorICoKKyAqICRJZDokCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyLmg+CisKKyNpbmNsdWRlICJpcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuaCIKKworI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CisjaW5jbHVkZSA8bmV0L3JvdXRlLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpZiAhZGVmaW5lZChTQV9TSVpFKSAmJiAhZGVmaW5lZChSVF9ST1VORFVQKQorI2RlZmluZSBSVF9ST1VORFVQKGEpICBcCisgICAgICAgICgoYSkgPiAwID8gKDEgKyAoKChhKSAtIDEpIHwgKHNpemVvZihsb25nKSAtIDEpKSkgOiBzaXplb2YobG9uZykpCisjZW5kaWYKKworLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qCisgKiBsb2NhbCBzdGF0aWMgcHJvdG90eXBlcworICovCitzdGF0aWMgaW50IF9sb2FkX2RlZmF1bHRyb3V0ZXJfZnJvbV9zeXNjdGwobmV0c25tcF9jb250YWluZXIgKiwgaW50KTsKKworc3RhdGljIGludCBpZHhfb2Zmc2V0OworCisvKgorICogaW5pdGlhbGl6ZSBhcmNoIHNwZWNpZmljIHN0b3JhZ2UKKyAqCisgKiBAcmV0dmFsICAwOiBzdWNjZXNzCisgKiBAcmV0dmFsIDwwOiBlcnJvcgorICovCitpbnQKK25ldHNubXBfYXJjaF9kZWZhdWx0cm91dGVyX2VudHJ5X2luaXQobmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5ICplbnRyeSkKK3sKKyAgICAvKgorICAgICAqIGluaXQKKyAgICAgKi8KKyAgICByZXR1cm4gMDsKK30KKworLyoqCisgKgorICogQHJldHZhbCAgMCBubyBlcnJvcnMKKyAqIEByZXR2YWwgITAgZXJyb3JzCisgKi8KK2ludAorbmV0c25tcF9hcmNoX2RlZmF1bHRyb3V0ZXJfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGxvYWRfZmxhZ3MpCit7CisgICAgaW50IGVycjsKKworICAgIGVyciA9IDA7CisgICAgaWR4X29mZnNldCA9IDA7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRlZmF1bHRyb3V0ZXI6ZW50cnk6YXJjaCIsICJsb2FkXG4iKSk7CisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAibmV0c25tcF9hcmNoX2RlZmF1bHRyb3V0ZXJfY29udGFpbmVyX2xvYWQ6IGNvbnRhaW5lciBpbnZhbGlkXG4iKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgZXJyID0gX2xvYWRfZGVmYXVsdHJvdXRlcl9mcm9tX3N5c2N0bChjb250YWluZXIsIEFGX0lORVQpOworICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICB1X2ludCBmbGFncyA9IE5FVFNOTVBfQUNDRVNTX0RFRkFVTFRST1VURVJfRlJFRV9LRUVQX0NPTlRBSU5FUjsKKyAgICAgICAgbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9jb250YWluZXJfZnJlZShjb250YWluZXIsIGZsYWdzKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorICAgIGVyciA9IF9sb2FkX2RlZmF1bHRyb3V0ZXJfZnJvbV9zeXNjdGwoY29udGFpbmVyLCBBRl9JTkVUNik7CisgICAgaWYgKGVyciAhPSAwKSB7CisgICAgICAgIHVfaW50IGZsYWdzID0gTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9GUkVFX0tFRVBfQ09OVEFJTkVSOworICAgICAgICBuZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lciwgZmxhZ3MpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisjZW5kaWYKKworb3V0OgorICAgIHJldHVybiBlcnI7Cit9CisKKy8qKgorICoKKyAqIEByZXR2YWwgIDAgbm8gZXJyb3JzCisgKiBAcmV0dmFsICEwIGVycm9ycworICovCitzdGF0aWMgaW50CitfbG9hZF9kZWZhdWx0cm91dGVyX2Zyb21fc3lzY3RsKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIGludCBmYW1pbHkpCit7CisgICAgbmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5ICplbnRyeTsKKyAgICBzdHJ1Y3QgcnRfbXNnaGRyICpydG07CisgICAgc3RydWN0IHNvY2thZGRyICpkc3Rfc2EsICpnd19zYTsKKyAgICBjaGFyICpidWYsICpsaW0sICpuZXdidWYsICpuZXh0OworICAgIGNoYXIgYWRkcmVzc1tORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0JVRl9TSVpFICsgMV07CisgICAgaW50IG1pYls2XTsKKyAgICBzaXplX3QgYWRkcmVzc19sZW4sIG5lZWRlZDsKKyAgICBpbnQgYWRkcmVzc190eXBlLCBlcnIsIHByZWZlcmVuY2UsIHN0OworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBjb250YWluZXIpOworCisgICAgbWliWzBdID0gQ1RMX05FVDsKKyAgICBtaWJbMV0gPSBQRl9ST1VURTsKKyAgICBtaWJbMl0gPSAwOworICAgIG1pYlszXSA9IGZhbWlseTsKKyAgICBtaWJbNF0gPSBORVRfUlRfRFVNUDsKKyAgICBtaWJbNV0gPSAwOworCisgICAgZXJyID0gMDsKKworICAgIGJ1ZiA9IG5ld2J1ZiA9IE5VTEw7CisKKyAgICBpZiAoZmFtaWx5ID09IEFGX0lORVQpIHsKKyAgICAgICAgYWRkcmVzc19sZW4gPSA0OworICAgICAgICBhZGRyZXNzX3R5cGUgPSBJTkVUQUREUkVTU1RZUEVfSVBWNDsKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgfSBlbHNlIGlmIChmYW1pbHkgPT0gQUZfSU5FVDYpIHsKKyAgICAgICAgYWRkcmVzc19sZW4gPSAxNjsKKyAgICAgICAgYWRkcmVzc190eXBlID0gSU5FVEFERFJFU1NUWVBFX0lQVjY7CisjZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAgICBlcnIgPSBFSU5WQUw7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGlmIChzeXNjdGwobWliLCA2LCBOVUxMLCAmbmVlZGVkLCBOVUxMLCAwKSA8IDApIHsKKyAgICAgICAgZXJyID0gZXJybm87CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIC8qIEVtcHR5IGFycCB0YWJsZS4gKi8KKyAgICBpZiAobmVlZGVkID09IDApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgZm9yICg7OykgeworICAgICAgICBuZXdidWYgPSByZWFsbG9jKGJ1ZiwgbmVlZGVkKTsKKyAgICAgICAgaWYgKG5ld2J1ZiA9PSBOVUxMKSB7CisgICAgICAgICAgICBlcnIgPSBFTk9NRU07CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgICAgICBidWYgPSBuZXdidWY7CisgICAgICAgIHN0ID0gc3lzY3RsKG1pYiwgc2l6ZW9mKG1pYikgLyBzaXplb2YobWliWzBdKSwgYnVmLCAmbmVlZGVkLCBOVUxMLCAwKTsKKyAgICAgICAgaWYgKHN0ID09IDAgfHwgZXJybm8gIT0gRU5PTUVNKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5lZWRlZCArPSBuZWVkZWQgLyA4OyAvKiBYWFg6IHdoeSA4PyAqLworICAgIH0KKyAgICBpZiAoc3QgPT0gLTEpIHsKKyAgICAgICAgZXJyID0gZXJybm87CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGxpbSA9IGJ1ZiArIG5lZWRlZDsKKyAgICBmb3IgKG5leHQgPSBidWY7IG5leHQgPCBsaW07IG5leHQgKz0gcnRtLT5ydG1fbXNnbGVuKSB7CisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorCXN0cnVjdCBpbjZfYWRkciBpbjZhZGRyX2FueSA9IElONkFERFJfQU5ZX0lOSVQ7CisjZW5kaWYKKworICAgICAgICBydG0gPSAoc3RydWN0IHJ0X21zZ2hkciAqKW5leHQ7CisKKyAgICAgICAgaWYgKCEocnRtLT5ydG1fYWRkcnMgJiBSVEFfR0FURVdBWSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBkc3Rfc2EgPSAoc3RydWN0IHNvY2thZGRyKikocnRtICsgMSk7CisjaWZkZWYgU0FfU0laRQorICAgICAgICBnd19zYSA9IChzdHJ1Y3Qgc29ja2FkZHIqKShTQV9TSVpFKGRzdF9zYSkgKyAoY2hhciopZHN0X3NhKTsKKyNlbHNlCisgICAgICAgIGd3X3NhID0gKHN0cnVjdCBzb2NrYWRkciopKFJUX1JPVU5EVVAoZHN0X3NhLT5zYV9sZW4pICsgKGNoYXIqKWRzdF9zYSk7CisjZW5kaWYKKworICAgICAgICBzd2l0Y2ggKGZhbWlseSkgeworICAgICAgICBjYXNlIEFGX0lORVQ6CisgICAgICAgICAgICBpZiAoKChzdHJ1Y3Qgc29ja2FkZHJfaW4qKWRzdF9zYSktPnNpbl9hZGRyLnNfYWRkciAhPSBJTkFERFJfQU5ZKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCSAgICBtZW1jcHkoYWRkcmVzcywgJigoc3RydWN0IHNvY2thZGRyX2luKilnd19zYSktPnNpbl9hZGRyLnNfYWRkciwKKwkgICAgICAgICAgIGFkZHJlc3NfbGVuKTsKKyAgICAgICAgICAgIGJyZWFrOworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyAgICAgICAgY2FzZSBBRl9JTkVUNjoKKyAgICAgICAgICAgIGlmIChtZW1jbXAoKChzdHJ1Y3Qgc29ja2FkZHJfaW42Kilkc3Rfc2EpLT5zaW42X2FkZHIuczZfYWRkciwKKwkJCSZpbjZhZGRyX2FueSwgc2l6ZW9mIGluNmFkZHJfYW55KSAhPSAwKQorCQljb250aW51ZTsgLyogWFhYOiBuZWVkIHRvIGRldGVybWluZSBxdWFsaWZ5aW5nIGNyaXRlcmlhIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAqIGRlZmF1bHQgZ2F0ZXdheXMgaW4gSVB2Ni4gKi8KKyAgICAgICAgICAgIG1lbWNweShhZGRyZXNzLCAmKChzdHJ1Y3Qgc29ja2FkZHJfaW42Kilkc3Rfc2EpLT5zaW42X2FkZHIuczZfYWRkciwKKwkJICAgYWRkcmVzc19sZW4pOworICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X2NyZWF0ZSgpOworICAgICAgICBpZiAoTlVMTCA9PSBlbnRyeSkgeworICAgICAgICAgICAgZXJyID0gRU5PTUVNOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvKiBYWFg6IHRoaXMgaXMgd3JvbmcgKGhhcmRjb2RpbmcgdGhlIHJvdXRlciBwcmVmZXJlbmNlIHRvIG1lZGl1bSkuICovCisgICAgICAgIHByZWZlcmVuY2UgPSAwOworCisgICAgICAgIGVudHJ5LT5uc19kcl9pbmRleCAgICA9ICsraWR4X29mZnNldDsKKyAgICAgICAgZW50cnktPmRyX2FkZHJlc3N0eXBlID0gYWRkcmVzc190eXBlOworICAgICAgICBlbnRyeS0+ZHJfYWRkcmVzc19sZW4gPSBhZGRyZXNzX2xlbjsKKyAgICAgICAgbWVtY3B5KGVudHJ5LT5kcl9hZGRyZXNzLCBhZGRyZXNzLCBzaXplb2YoYWRkcmVzcykpOworICAgICAgICBlbnRyeS0+ZHJfaWZfaW5kZXggPSBydG0tPnJ0bV9pbmRleDsKKyAgICAgICAgZW50cnktPmRyX2xpZmV0aW1lICAgID0gcnRtLT5ydG1fcm14LnJteF9leHBpcmU7CisgICAgICAgIGVudHJ5LT5kcl9wcmVmZXJlbmNlICA9IHByZWZlcmVuY2U7CisKKyAgICAgICAgaWYgKENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSkgPCAwKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmFycDpjb250YWluZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgImVycm9yIHdpdGggZGVmYXVsdHJvdXRlcl9lbnRyeTogIgorICAgICAgICAgICAgICAgICAgICAgICAgImluc2VydCBpbnRvIGNvbnRhaW5lciBmYWlsZWQuXG4iKSk7CisgICAgICAgICAgICBuZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X2ZyZWUoZW50cnkpOworICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKyAgICB9CisKK291dDoKKyAgICBmcmVlKGJ1Zik7CisgICAgcmV0dXJuIGVycjsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MuaAppbmRleCA5Y2Y4MTgxLi5kNzljN2MyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oCkBAIC0yMiw2ICsyMiw4IEBACiBjb25maWdfcmVxdWlyZShpcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4KQogI2VsaWYgZGVmaW5lZCggc29sYXJpczIgKQogY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19zb2xhcmlzMikKKyNlbGlmIGRlZmluZWQoIGZyZWVic2Q3ICkgfHwgZGVmaW5lZCggbmV0YnNkNSApIHx8IGRlZmluZWQoIG9wZW5ic2Q0ICkgfHwgZGVmaW5lZCggZHJhZ29uZmx5ICkgfHwgZGVmaW5lZCggZGFyd2luICkKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3Nfc3lzY3RsKQogI2Vsc2UKIGNvbmZpZ19lcnJvcih0aGUgaXBhZGRyZXNzIGRhdGEgYWNjZXNzIGxpYnJhcnkgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGlzIGVudmlyb25tZW50LikKICNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24uYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMKaW5kZXggYjlmM2M2Ny4uMDBiYzgyNSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24uYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2NvbW1vbi5jCkBAIC0xMiw2ICsxMiwxOSBAQAogCiAjaW5jbHVkZSAiaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2NvbnN0YW50cy5oIgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwYWRkcmVzc19jb21tb24sIGxpYm5ldHNubXBtaWJzKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBhZGRyZXNzX2NvbW1vbl9jb3B5X3V0aWxpdGllcywgaXBhZGRyZXNzX2NvbW1vbikKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcGFkZHJlc3NfZW50cnlfY29weSwgaXBhZGRyZXNzX2NvbW1vbikKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcGFkZHJlc3NfZW50cnlfdXBkYXRlLCBpcGFkZHJlc3NfY29tbW9uKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwYWRkcmVzc19wcmVmaXhfY29weSwgaXBhZGRyZXNzX2NvbW1vbl9jb3B5X3V0aWxpdGllcykKKworI2lmZGVmIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX0lQQUREUkVTU19FTlRSWV9DT1BZCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpcGFkZHJlc3NfYXJjaF9lbnRyeV9jb3B5KQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX0lQQUREUkVTU19FTlRSWV9DT1BZICovCisKIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKgogICogbG9jYWwgc3RhdGljIHByb3RvdHlwZXMKQEAgLTI0Nyw2ICsyNjAsNyBAQAogICAgIHJldHVybiByYzsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU19FTlRSWV9VUERBVEUKIC8qKgogICogdXBkYXRlIGFuIG9sZCBpcGFkZHJlc3NfZW50cnkgZnJvbSBhIG5ldyBvbmUKICAqCkBAIC0zMjksNyArMzQzLDkgQEAKIAogICAgIHJldHVybiBjaGFuZ2VkOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTX0VOVFJZX1VQREFURSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTX0VOVFJZX0NPUFkKIC8qKgogICogY29weSBhbiAgaXBhZGRyZXNzX2VudHJ5CiAgKgpAQCAtMzYxLDEyICszNzcsMTQgQEAKICAgICAKICAgICByZXR1cm4gMDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU19FTlRSWV9DT1BZICovCiAKIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKgogICogVXRpbGl0eSByb3V0aW5lcwogICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NfUFJFRklYX0NPUFkKIC8qKgogICogY29weSB0aGUgcHJlZml4IHBvcnRpb24gb2YgYW4gaXAgYWRkcmVzcwogICovCkBAIC0zOTIsNiArNDEwLDcgQEAKIAogICAgIHJldHVybiBwZnhfbGVuOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTX1BSRUZJWF9DT1BZICovCiAKIAogLyoqCkBAIC00MjIsNiArNDQxLDI3IEBACiAgICAgcmV0dXJuIGxlbjsKIH0KIAoraW50CituZXRzbm1wX2lwYWRkcmVzc19pcHY2X3ByZWZpeF9sZW4oc3RydWN0IGluNl9hZGRyIG1hc2spCit7CisgICAgaW50IGksIGxlbiA9IDA7CisgICAgdW5zaWduZWQgY2hhciAqbXAgPSAodW5zaWduZWQgY2hhciAqKSZtYXNrLnM2X2FkZHI7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykKKwlpZiAobXBbaV0gPT0gMHhGRikgbGVuICs9IDg7CisJZWxzZSBicmVhazsKKworICAgIGlmIChpID09IDE2KQorCXJldHVybiBsZW47CisKKyAgICB3aGlsZSgweDgwICYgbXBbaV0pIHsKKyAgICAgICAgKytsZW47CisgICAgICAgIG1wW2ldIDw8PSAxOworICAgIH0KKworICAgIHJldHVybiBsZW47Cit9CisKIAogLyoqCiAgKi8KQEAgLTQ1NCw2ICs0OTQsNyBAQAogICAgIHJldHVybiBtZW1jbXAobGgtPmlhX2FkZHJlc3MsIHJoLT5pYV9hZGRyZXNzLCBsaC0+aWFfYWRkcmVzc19sZW4pOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTX0NPTU1PTl9DT1BZX1VUSUxJVElFUwogaW50CiBuZXRzbm1wX2lwYWRkcmVzc19mbGFnc19jb3B5KHVfbG9uZyAqaXBBZGRyZXNzUHJlZml4QWR2UHJlZmVycmVkTGlmZXRpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqaXBBZGRyZXNzUHJlZml4QWR2VmFsaWRMaWZldGltZSwKQEAgLTQ5OCw0ICs1MzksNSBAQAogICAgIH0KICAgICByZXR1cm4gMDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU19DT01NT05fQ09QWV9VVElMSVRJRVMgKi8KIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5jCmluZGV4IGYyODFiYjYuLjYwMjVmMDUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmMKQEAgLTQsNiArNCw3IEBACiAgKiAkSWQkCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAibWliSUkvbWliSUlfY29tbW9uLmgiCiAKQEAgLTIwLDYgKzIxLDggQEAKIAogI2luY2x1ZGUgImlwYWRkcmVzc19pb2N0bC5oIgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBhZHJlc3NfaW9jdGxfZW50cnlfY29weSwgaXBhZGRyZXNzX2NvbW1vbikKKwogc3RhdGljIHZvaWQgX3ByaW50X2ZsYWdzKHNob3J0IGZsYWdzKTsKIAogI2RlZmluZSBMSVNUX1RPS0VOICJpb2N0bF9leHRyYXMiCkBAIC04Niw2ICs4OSw3IEBACiAgICAgbmV0c25tcF9yZW1vdmVfbGlzdF9ub2RlKCZlbnRyeS0+YXJjaF9kYXRhLCBMSVNUX1RPS0VOKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU19JT0NUTF9FTlRSWV9DT1BZCiAvKioKICAqIGNvcHkgaW9jdGwgZXh0cmFzCiAgKgpAQCAtMTIyLDYgKzEyNiw3IEBACiAKICAgICByZXR1cm4gcmM7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NfSU9DVExfRU5UUllfQ09QWSAqLwogCiAvKioKICAqIGxvYWQgaXB2NCBhZGRyZXNzIHZpYSBpb2N0bApAQCAtMTU5LDYgKzE2NCwxNCBAQAogCiAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsCiAgICAgICAgICAgICAgICAgICAgICIgaW50ZXJmYWNlICVkLCAlc1xuIiwgaSwgaWZycC0+aWZyX25hbWUpKTsKKworICAgICAgICBpZiAoQUZfSU5FVCAhPSBpZnJwLT5pZnJfYWRkci5zYV9mYW1pbHkpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsCisgICAgICAgICAgICAgICAgICAgICAgICAiIHNraXBwaW5nICVzOyBub24gQUZfSU5FVCBmYW1pbHkgJWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBpZnJwLT5pZnJfbmFtZSwgaWZycC0+aWZyX2FkZHIuc2FfZmFtaWx5KSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIC8qCiAgICAgICAgICAqLwogICAgICAgICBlbnRyeSA9IG5ldHNubXBfYWNjZXNzX2lwYWRkcmVzc19lbnRyeV9jcmVhdGUoKTsKQEAgLTE4Myw3ICsxOTYsNiBAQAogICAgICAgICAvKgogICAgICAgICAgKiBzZXQgaW5kZXhlcwogICAgICAgICAgKi8KLSAgICAgICAgbmV0c25tcF9hc3NlcnQoQUZfSU5FVCA9PSBpZnJwLT5pZnJfYWRkci5zYV9mYW1pbHkpOwogICAgICAgICBzaSA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikgJmlmcnAtPmlmcl9hZGRyOwogICAgICAgICBlbnRyeS0+aWFfYWRkcmVzc19sZW4gPSBzaXplb2Yoc2ktPnNpbl9hZGRyLnNfYWRkcik7CiAgICAgICAgIGlwdmFsID0gc2ktPnNpbl9hZGRyLnNfYWRkcjsKQEAgLTU0NSw2ICs1NTcsOTEgQEAKICAgICByZXR1cm4gMDsKIH0KIAorCisvKioKKyAqIEFkZC9yZW1vdmUgSVB2NiBhZGRyZXNzIHVzaW5nIGlvY3RsLgorICogQHJldHZhbCAgMCA6IG5vIGVycm9yCisgKiBAcmV0dmFsIC0xIDogYmFkIHBhcmFtZXRlcgorICogQHJldHZhbCAtMiA6IGNvdWxkbid0IGNyZWF0ZSBzb2NrZXQKKyAqIEByZXR2YWwgLTMgOiBpb2N0bCBmYWlsZWQKKyAqLworaW50CitfbmV0c25tcF9pb2N0bF9pcGFkZHJlc3NfdjYobmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKiBlbnRyeSwgaW50IG9wZXJhdGlvbikKK3sKKyNpZmRlZiBsaW51eAorICAgIC8qCisgICAgICogRnJvbSBsaW51eC9pcHY2LmguIEl0IGNhbm5vdCBiZSBpbmNsdWRlZCBiZWNhdXNlIGl0IGNvbGxpZGVzCisgICAgICogd2l0aCBuZXRpbmV0L2luLmgKKyAgICAgKi8KKyAgICBzdHJ1Y3QgaW42X2lmcmVxIHsKKyAgICAgICAgICAgIHN0cnVjdCBpbjZfYWRkciBpZnI2X2FkZHI7CisgICAgICAgICAgICB1aW50MzJfdCAgICAgICAgaWZyNl9wcmVmaXhsZW47CisgICAgICAgICAgICBpbnQgICAgICAgICAgICAgaWZyNl9pZmluZGV4OworICAgIH07CisKKyAgICBzdHJ1Y3QgaW42X2lmcmVxICAgICAgICAgICAgICAgaWZycTsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmMsIGZkID0gLTE7CisKKyAgICBERUJVR01TR1QoKCJhY2Nlc3M6aXBhZGRyZXNzOnNldCIsICJfbmV0c25tcF9pb2N0bF9pcGFkZHJlc3Nfc2V0X3Y2IHN0YXJ0ZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IGVudHJ5KQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBuZXRzbm1wX2Fzc2VydCgxNiA9PSBlbnRyeS0+aWFfYWRkcmVzc19sZW4pOworCisgICAgZmQgPSBzb2NrZXQoQUZfSU5FVDYsIFNPQ0tfREdSQU0sIDApOworICAgIGlmKGZkIDwgMCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJjb3VsZG4ndCBjcmVhdGUgc29ja2V0XG4iKTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKyAgICBtZW1zZXQoJmlmcnEsIDAsIHNpemVvZihpZnJxKSk7CisgICAgaWZycS5pZnI2X2lmaW5kZXggPSBlbnRyeS0+aWZfaW5kZXg7CisgICAgaWZycS5pZnI2X3ByZWZpeGxlbiA9IDY0OworCisgICAgbWVtY3B5KCZpZnJxLmlmcjZfYWRkciwgZW50cnktPmlhX2FkZHJlc3MsCisgICAgICAgICAgIGVudHJ5LT5pYV9hZGRyZXNzX2xlbik7CisKKyAgICByYyA9IGlvY3RsKGZkLCBvcGVyYXRpb24sICZpZnJxKTsKKyAgICBjbG9zZShmZCk7CisgICAgaWYocmMgPCAwKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsImVycm9yIHNldHRpbmcgYWRkcmVzczogJXMoJWQpXG4iLCBzdHJlcnJvcihlcnJubyksIGVycm5vKTsKKyAgICAgICAgcmV0dXJuIC0zOworICAgIH0KKyAgICBERUJVR01TR1QoKCJhY2Nlc3M6aXBhZGRyZXNzOnNldCIsICJfbmV0c25tcF9pb2N0bF9pcGFkZHJlc3Nfc2V0X3Y2IGZpbmlzaGVkXG4iKSk7CisgICAgcmV0dXJuIDA7CisjZWxzZQorICAgIC8qIHdlIGRvbid0IHN1cHBvcnQgaXB2NiBvbiB0aGlzIHBsYXRmb3JtICh5ZXQpICovCisgICAgcmV0dXJuIC0zOworI2VuZGlmCisKK30KKworLyoqCisgKgorICogQHJldHZhbCAgMCA6IG5vIGVycm9yCisgKiBAcmV0dmFsIC0xIDogYmFkIHBhcmFtZXRlcgorICogQHJldHZhbCAtMiA6IGNvdWxkbid0IGNyZWF0ZSBzb2NrZXQKKyAqIEByZXR2YWwgLTMgOiBpb2N0bCBmYWlsZWQKKyAqLworaW50CitfbmV0c25tcF9pb2N0bF9pcGFkZHJlc3Nfc2V0X3Y2KG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICogZW50cnkpCit7CisgICAgcmV0dXJuIF9uZXRzbm1wX2lvY3RsX2lwYWRkcmVzc192NihlbnRyeSwgU0lPQ1NJRkFERFIpOworfQorCisvKioKKyAqCisgKiBAcmV0dmFsICAwIDogbm8gZXJyb3IKKyAqIEByZXR2YWwgLTEgOiBiYWQgcGFyYW1ldGVyCisgKiBAcmV0dmFsIC0yIDogY291bGRuJ3QgY3JlYXRlIHNvY2tldAorICogQHJldHZhbCAtMyA6IGlvY3RsIGZhaWxlZAorICovCitpbnQKK19uZXRzbm1wX2lvY3RsX2lwYWRkcmVzc19kZWxldGVfdjYobmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKiBlbnRyeSkKK3sKKyAgICByZXR1cm4gX25ldHNubXBfaW9jdGxfaXBhZGRyZXNzX3Y2KGVudHJ5LCBTSU9DRElGQUREUik7Cit9CisKIC8qKgogICogZ2V0IHRoZSBpbnRlcmZhY2UgY291bnQgYW5kIHBvcHVsYXRlIHRoZSBpZmNfYnVmCiAgKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5oCmluZGV4IGZjNmU3NzEuLmYyYjc4NDcgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuaAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmgKQEAgLTIyLDYgKzIyLDExIEBACiBfbmV0c25tcF9pb2N0bF9pcGFkZHJlc3NfcmVtb3ZlX3Y0KG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICogZW50cnkpOwogCiBpbnQKK19uZXRzbm1wX2lvY3RsX2lwYWRkcmVzc19zZXRfdjYobmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKiBlbnRyeSk7CitpbnQKK19uZXRzbm1wX2lvY3RsX2lwYWRkcmVzc19yZW1vdmVfdjYobmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKiBlbnRyeSk7CisKK2ludAogbmV0c25tcF9hY2Nlc3NfaXBhZGRyZXNzX2lvY3RsX2dldF9pbnRlcmZhY2VfY291bnQoaW50IHNkLCBzdHJ1Y3QgaWZjb25mICogaWZjKTsKIAogc3RydWN0IGFkZHJlc3NfZmxhZ19pbmZvCkBAIC01MCw2ICs1NSw4IEBACiAKIGludAogX25ldHNubXBfaW9jdGxfaXBhZGRyZXNzX2RlbGV0ZV92NChuZXRzbm1wX2lwYWRkcmVzc19lbnRyeSAqIGVudHJ5KTsKK2ludAorX25ldHNubXBfaW9jdGxfaXBhZGRyZXNzX2RlbGV0ZV92NihuZXRzbm1wX2lwYWRkcmVzc19lbnRyeSAqIGVudHJ5KTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmMKaW5kZXggOGIzNGU4Ni4uZjFjZWYwYSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYwpAQCAtNCw2ICs0LDcgQEAKICAqICRJZCQKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJtaWJJSS9taWJJSV9jb21tb24uaCIKIApAQCAtMTgsNiArMTksMTUgQEAKICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShwcmVmaXhfaW5mbykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGZpbmRfcHJlZml4X2luZm8pCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcGFkZHJlc3NfYXJjaF9lbnRyeV9jb3B5LCBpcGFkZHJlc3NfY29tbW9uKQorCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfSVBBRERSRVNTX0FSQ0hfRU5UUllfQ09QWQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXBhZGRyZXNzX2lvY3RsX2VudHJ5X2NvcHkpCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfSVBBRERSRVNTX0FSQ0hfRU5UUllfQ09QWSAqLworCiAjaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikKICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgogI2luY2x1ZGUgPGFzbS90eXBlcy5oPgpAQCAtODMsNiArOTMsNyBAQAogICAgICAqLwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTX0FSQ0hfRU5UUllfQ09QWQogLyoKICAqIGNvcHkgYXJjaCBzcGVjaWZpYyBzdG9yYWdlCiAgKi8KQEAgLTEwNiw2ICsxMTcsNyBAQAogCiAgICAgcmV0dXJuIHJjOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTX0FSQ0hfRU5UUllfQ09QWSAqLwogCiAvKgogICogY3JlYXRlIGEgbmV3IGVudHJ5CkBAIC0xMTYsMTIgKzEyOCwxNCBAQAogICAgIGlmIChOVUxMID09IGVudHJ5KQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBpZiAoNCAhPSBlbnRyeS0+aWFfYWRkcmVzc19sZW4pIHsKLSAgICAgICAgREVCVUdNU0dUKCgiYWNjZXNzOmlwYWRkcmVzczpjcmVhdGUiLCAib25seSBpcHY0IHN1cHBvcnRlZFxuIikpOworICAgIGlmICg0ID09IGVudHJ5LT5pYV9hZGRyZXNzX2xlbikgeworICAgICAgICByZXR1cm4gX25ldHNubXBfaW9jdGxfaXBhZGRyZXNzX3NldF92NChlbnRyeSk7CisgICAgfSBlbHNlIGlmICgxNiA9PSBlbnRyeS0+aWFfYWRkcmVzc19sZW4pIHsKKyAgICAgICAgcmV0dXJuIF9uZXRzbm1wX2lvY3RsX2lwYWRkcmVzc19zZXRfdjYoZW50cnkpOworICAgIH0gZWxzZSB7CisgICAgICAgIERFQlVHTVNHVCgoImFjY2VzczppcGFkZHJlc3M6Y3JlYXRlIiwgIndyb25nIGxlbmd0aCBvZiBJUCBhZGRyZXNzXG4iKSk7CiAgICAgICAgIHJldHVybiAtMjsKICAgICB9Ci0KLSAgICByZXR1cm4gX25ldHNubXBfaW9jdGxfaXBhZGRyZXNzX3NldF92NChlbnRyeSk7CiB9CiAKIC8qCkBAIC0xMzMsMTIgKzE0NywxNCBAQAogICAgIGlmIChOVUxMID09IGVudHJ5KQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBpZiAoNCAhPSBlbnRyeS0+aWFfYWRkcmVzc19sZW4pIHsKKyAgICBpZiAoNCA9PSBlbnRyeS0+aWFfYWRkcmVzc19sZW4pIHsKKyAgICAgICAgcmV0dXJuIF9uZXRzbm1wX2lvY3RsX2lwYWRkcmVzc19kZWxldGVfdjQoZW50cnkpOworICAgIH0gZWxzZSBpZiAoMTYgPT0gZW50cnktPmlhX2FkZHJlc3NfbGVuKSB7CisgICAgICAgIHJldHVybiBfbmV0c25tcF9pb2N0bF9pcGFkZHJlc3NfZGVsZXRlX3Y2KGVudHJ5KTsKKyAgICB9IGVsc2UgewogICAgICAgICBERUJVR01TR1QoKCJhY2Nlc3M6aXBhZGRyZXNzOmNyZWF0ZSIsICJvbmx5IGlwdjQgc3VwcG9ydGVkXG4iKSk7CiAgICAgICAgIHJldHVybiAtMjsKICAgICB9Ci0KLSAgICByZXR1cm4gX25ldHNubXBfaW9jdGxfaXBhZGRyZXNzX2RlbGV0ZV92NChlbnRyeSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19zb2xhcmlzMi5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19zb2xhcmlzMi5jCmluZGV4IDM5NzkwMzcuLmUyNDg1ZTMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3Nfc29sYXJpczIuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX3NvbGFyaXMyLmMKQEAgLTMsNiArMyw3IEBACiAgKgogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KQEAgLTE0LDYgKzE1LDggQEAKICNpbmNsdWRlICJrZXJuZWxfc3Vub3M1LmgiCiAjaW5jbHVkZSAibWliSUkvbWliSUlfY29tbW9uLmgiCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcGFkZHJlc3NfYXJjaF9lbnRyeV9jb3B5LCBpcGFkZHJlc3NfY29tbW9uKQorCiBzdGF0aWMgaW50IF9sb2FkX3Y0KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIGludCBpZHhfb2Zmc2V0KTsKICNpZiBkZWZpbmVkKCBORVRTTk1QX0VOQUJMRV9JUFY2ICkKIHN0YXRpYyBpbnQgX2xvYWRfdjYobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgaW50IGlkeF9vZmZzZXQpOwpAQCAtNDMsNiArNDYsNyBAQAogICAgICAqLwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTX0FSQ0hfRU5UUllfQ09QWQogLyoKICAqIGNvcHkgYXJjaCBzcGVjaWZpYyBzdG9yYWdlCiAgKi8KQEAgLTU1LDYgKzU5LDcgQEAKICAgICAgKi8KICAgICByZXR1cm4gMDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU19BUkNIX0VOVFJZX0NPUFkgKi8KIAogLyoKICAqIGNyZWF0ZSBhIG5ldyBlbnRyeQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19zeXNjdGwuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3Nfc3lzY3RsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Q5MjFhNgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3Nfc3lzY3RsLmMKQEAgLTAsMCArMSwyNzIgQEAKKy8qCisgKiAgSW50ZXJmYWNlIE1JQiBhcmNoaXRlY3R1cmUgc3VwcG9ydAorICoKKyAqICRJZCQKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlICJtaWJJSS9taWJJSV9jb21tb24uaCIKKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmg+CisKKyNpbmNsdWRlICJpcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfY29uc3RhbnRzLmgiCisjaW5jbHVkZSAiaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2NvbnN0YW50cy5oIgorI2luY2x1ZGUgIm1pYmdyb3VwL3V0aWxfZnVuY3MuaCIKKworI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHByZWZpeF9pbmZvKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZmluZF9wcmVmaXhfaW5mbykKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwYWRkcmVzc19hcmNoX2VudHJ5X2NvcHksIGlwYWRkcmVzc19jb21tb24pCisKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9JUEFERFJFU1NfQVJDSF9FTlRSWV9DT1BZCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpcGFkZHJlc3NfaW9jdGxfZW50cnlfY29weSkKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9JUEFERFJFU1NfQVJDSF9FTlRSWV9DT1BZICovCisKKyNpbmNsdWRlICJpcGFkZHJlc3NfaW9jdGwuaCIKKyNpZmRlZiBTVVBQT1JUX1BSRUZJWF9GTEFHUworZXh0ZXJuIHByZWZpeF9jYnggKnByZWZpeF9oZWFkX2xpc3Q7CisjZW5kaWYKKworI2RlZmluZSBST1VORFVQKGEpIFwKKyAgKChhKSA+IDAgPyAoMSArICgoKGEpIC0gMSkgfCAoc2l6ZW9mKGxvbmcpIC0gMSkpKSA6IHNpemVvZihsb25nKSkKKworLyoKKyAqIGluaXRpYWxpemUgYXJjaCBzcGVjaWZpYyBzdG9yYWdlCisgKgorICogQHJldHZhbCAgMDogc3VjY2VzcworICogQHJldHZhbCA8MDogZXJyb3IKKyAqLworaW50CituZXRzbm1wX2FyY2hfaXBhZGRyZXNzX2VudHJ5X2luaXQobmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKmVudHJ5KQoreworICAgIC8qCisgICAgICogaW5pdCBpcHY0IHN0dWZmCisgICAgICovCisgICAgLy9pZiAoTlVMTCA9PSBuZXRzbm1wX2lvY3RsX2lwYWRkcmVzc19lbnRyeV9pbml0KGVudHJ5KSkKKyAgICAvLyAgICByZXR1cm4gLTE7CisKKyAgICAvKgorICAgICAqIGluaXQgaXB2NiBzdHVmZgorICAgICAqICAgc28gZmFyLCB3ZSBjYW4ganVzdCBzaGFyZSB0aGUgaXB2NCBzdHVmZiwgc28gbm90aGluZyB0byBkbworICAgICAqLworICAgIAorICAgIHJldHVybiAwOworfQorCisvKgorICogY2xlYW51cCBhcmNoIHNwZWNpZmljIHN0b3JhZ2UKKyAqLwordm9pZAorbmV0c25tcF9hcmNoX2lwYWRkcmVzc19lbnRyeV9jbGVhbnVwKG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICplbnRyeSkKK3sKKyAgICAvKgorICAgICAqIGNsZWFudXAgaXB2NCBzdHVmZgorICAgICAqLworICAgIC8vbmV0c25tcF9pb2N0bF9pcGFkZHJlc3NfZW50cnlfY2xlYW51cChlbnRyeSk7CisKKyAgICAvKgorICAgICAqIGNsZWFudXAgaXB2NiBzdHVmZgorICAgICAqICAgc28gZmFyLCB3ZSBjYW4ganVzdCBzaGFyZSB0aGUgaXB2NCBzdHVmZiwgc28gbm90aGluZyB0byBkbworICAgICAqLworfQorCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTX0FSQ0hfRU5UUllfQ09QWQorLyoKKyAqIGNvcHkgYXJjaCBzcGVjaWZpYyBzdG9yYWdlCisgKi8KK2ludAorbmV0c25tcF9hcmNoX2lwYWRkcmVzc19lbnRyeV9jb3B5KG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICpsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKnJocykKK3sKKyAgICBpbnQgcmM7CisKKyAgICByYyA9IDA7CisKKyAgICAvKgorICAgICAqIGNvcHkgaXB2NCBzdHVmZgorICAgICAqLworICAgIC8vcmMgPSBuZXRzbm1wX2lvY3RsX2lwYWRkcmVzc19lbnRyeV9jb3B5KGxocywgcmhzKTsKKyAgICBpZiAocmMpCisgICAgICAgIHJldHVybiByYzsKKworICAgIC8qCisgICAgICogY29weSBpcHY2IHN0dWZmCisgICAgICogICBzbyBmYXIsIHdlIGNhbiBqdXN0IHNoYXJlIHRoZSBpcHY0IHN0dWZmLCBzbyBub3RoaW5nIHRvIGRvCisgICAgICovCisKKyAgICByZXR1cm4gcmM7Cit9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NfQVJDSF9FTlRSWV9DT1BZICovCisKKy8qCisgKiBjcmVhdGUgYSBuZXcgZW50cnkKKyAqLworaW50CituZXRzbm1wX2FyY2hfaXBhZGRyZXNzX2NyZWF0ZShuZXRzbm1wX2lwYWRkcmVzc19lbnRyeSAqZW50cnkpCit7CisgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmICg0ID09IGVudHJ5LT5pYV9hZGRyZXNzX2xlbikgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfSBlbHNlIGlmICgxNiA9PSBlbnRyeS0+aWFfYWRkcmVzc19sZW4pIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSB7CisgICAgICAgIERFQlVHTVNHVCgoImFjY2VzczppcGFkZHJlc3M6Y3JlYXRlIiwgIndyb25nIGxlbmd0aCBvZiBJUCBhZGRyZXNzXG4iKSk7CisgICAgICAgIHJldHVybiAtMjsKKyAgICB9Cit9CisKKy8qCisgKiBjcmVhdGUgYSBuZXcgZW50cnkKKyAqLworaW50CituZXRzbm1wX2FyY2hfaXBhZGRyZXNzX2RlbGV0ZShuZXRzbm1wX2lwYWRkcmVzc19lbnRyeSAqZW50cnkpCit7CisgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmICg0ID09IGVudHJ5LT5pYV9hZGRyZXNzX2xlbikgeworICAgICAgICByZXR1cm4gLTI7CisgICAgfSBlbHNlIGlmICgxNiA9PSBlbnRyeS0+aWFfYWRkcmVzc19sZW4pIHsKKyAgICAgICAgcmV0dXJuIC0zOworICAgIH0gZWxzZSB7CisgICAgICAgIERFQlVHTVNHVCgoImFjY2VzczppcGFkZHJlc3M6Y3JlYXRlIiwgIm9ubHkgaXB2NCBzdXBwb3J0ZWRcbiIpKTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KK30KKworLyoqCisgKgorICogQHJldHZhbCAgMCBubyBlcnJvcnMKKyAqIEByZXR2YWwgITAgZXJyb3JzCisgKi8KK2ludAorbmV0c25tcF9hcmNoX2lwYWRkcmVzc19jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBsb2FkX2ZsYWdzKQoreworICAgIG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICplbnRyeSA9IE5VTEw7CisgICAgdV9jaGFyICppZl9saXN0ID0gTlVMTCwgKmNwOworICAgIHNpemVfdCBpZl9saXN0X3NpemUgPSAwOworICAgIGludCBzeXNjdGxfb2lkW10gPSB7IENUTF9ORVQsIFBGX1JPVVRFLCAwLCAwLCBORVRfUlRfSUZMSVNULCAwIH07CisgICAgc3RydWN0IGlmYV9tc2doZHIgKmlmYTsKKyAgICBzdHJ1Y3Qgc29ja2FkZHIgKmE7CisgICAgaW50IGFtYXNrOworICAgIGludCByYyA9IDA7CisgICAgaW50IGlkeF9vZmZzZXQgPSAwOworCisgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyOnN5c2N0bCIsCisgICAgICAgICAgICAgICAgImxvYWQgKGZsYWdzICV1KVxuIiwgbG9hZF9mbGFncykpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJubyBjb250YWluZXIgc3BlY2lmaWVkL2ZvdW5kIGZvciBpbnRlcmZhY2VcbiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKHN5c2N0bChzeXNjdGxfb2lkLCBzaXplb2Yoc3lzY3RsX29pZCkvc2l6ZW9mKGludCksIDAsCisgICAgICAgICAgICAgICAmaWZfbGlzdF9zaXplLCAwLCAwKSA9PSAtMSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGQgbm90IGdldCBpbnRlcmZhY2UgaW5mbyAoc2l6ZSlcbiIpOworICAgICAgICByZXR1cm4gLTI7CisgICAgfQorCisgICAgaWZfbGlzdCA9ICh1X2NoYXIqKW1hbGxvYyhpZl9saXN0X3NpemUpOworICAgIGlmIChpZl9saXN0ID09IE5VTEwpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGludGVyZmFjZSBpbmZvICIKKyAgICAgICAgICAgICAgICAgIiglenUgYnl0ZXMpXG4iLCBpZl9saXN0X3NpemUpOworICAgICAgICByZXR1cm4gLTM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyOnN5c2N0bCIsCisgICAgICAgICAgICAgICAgICAgICJhbGxvY2F0ZWQgJXp1IGJ5dGVzIGZvciBpZl9saXN0XG4iLCBpZl9saXN0X3NpemUpKTsKKyAgICB9CisKKyAgICBpZiAoc3lzY3RsKHN5c2N0bF9vaWQsIHNpemVvZihzeXNjdGxfb2lkKS9zaXplb2YoaW50KSwgaWZfbGlzdCwKKyAgICAgICAgICAgICAgICZpZl9saXN0X3NpemUsIDAsIDApID09IC0xKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZCBub3QgZ2V0IGludGVyZmFjZSBpbmZvXG4iKTsKKyAgICAgICAgZnJlZShpZl9saXN0KTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKworICAgIC8qIHBhc3MgMjogd2FsayBhZGRyZXNzZXMgKi8KKyAgICBmb3IgKGNwID0gaWZfbGlzdDsgY3AgPCBpZl9saXN0ICsgaWZfbGlzdF9zaXplOyBjcCArPSBpZmEtPmlmYW1fbXNnbGVuKSB7CisgICAgICAgIGlmYSA9IChzdHJ1Y3QgaWZhX21zZ2hkciAqKSBjcDsKKyAgICAgICAgaW50IHJ0YXg7CisKKyAgICAgICAgaWYgKGlmYS0+aWZhbV90eXBlICE9IFJUTV9ORVdBRERSKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyOnN5c2N0bCIsCisgICAgICAgICAgICAgICAgICAgICJyZWNlaXZlZCAweCV4IGluIFJUTV9ORVdBRERSIGZvciBpZmluZGV4ICV1XG4iLAorICAgICAgICAgICAgICAgICAgICBpZmEtPmlmYW1fYWRkcnMsIGlmYS0+aWZhbV9pbmRleCkpOworCisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9hY2Nlc3NfaXBhZGRyZXNzX2VudHJ5X2NyZWF0ZSgpOworICAgICAgICBpZiAoZW50cnkgPT0gTlVMTCkgeworICAgICAgICAgICAgcmMgPSAtMzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgYSA9IChzdHJ1Y3Qgc29ja2FkZHIgKikgKGlmYSArIDEpOworICAgICAgICBlbnRyeS0+aWFfc3RhdHVzID0gSVBBRERSRVNTU1RBVFVTVENfVU5LTk9XTjsKKyAgICAgICAgZW50cnktPmlhX29yaWdpbiA9IElQQUREUkVTU09SSUdJTlRDX09USEVSOworCWVudHJ5LT5pYV9hZGRyZXNzX2xlbiA9IDA7CisgICAgICAgIGZvciAoYW1hc2sgPSBpZmEtPmlmYW1fYWRkcnMsIHJ0YXggPSAwOyBhbWFzayAhPSAwOyBhbWFzayA+Pj0gMSwgcnRheCsrKSB7CisgICAgICAgICAgICBpZiAoKGFtYXNrICYgMSkgIT0gMCkgeworICAgICAgICAgICAgICAgIGVudHJ5LT5uc19pYV9pbmRleCA9ICsraWR4X29mZnNldDsKKyAgICAgICAgICAgICAgICBlbnRyeS0+aWZfaW5kZXggPSBpZmEtPmlmYW1faW5kZXg7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyOnN5c2N0bCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVkOiBhPSVwLCBzYV9sZW49JWQsIHNhX2ZhbWlseT0weCV4XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpZW50cnktPmlmX2luZGV4LCBhLCBhLT5zYV9sZW4sIGEtPnNhX2ZhbWlseSkpOworCisgICAgICAgICAgICAgICAgaWYgKGEtPnNhX2ZhbWlseSA9PSBBRl9JTkVUIHx8IGEtPnNhX2ZhbWlseSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqYTQgPSAoc3RydWN0IHNvY2thZGRyX2luICopYTsKKwkJICAgIGNoYXIgc3RyWzEyOF07CisJCSAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXI6c3lzY3RsIiwKKwkJICAgICAgICAgICAgICAgICJJUHY0IGFkZHIgJXNcbiIsIGluZXRfbnRvcChBRl9JTkVULCAmYTQtPnNpbl9hZGRyLnNfYWRkciwgc3RyLCAxMjgpKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChydGF4ID09IFJUQVhfSUZBKSB7CisJCQllbnRyeS0+aWFfYWRkcmVzc19sZW4gPSA0OworICAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KGVudHJ5LT5pYV9hZGRyZXNzLCAmYTQtPnNpbl9hZGRyLnNfYWRkciwgZW50cnktPmlhX2FkZHJlc3NfbGVuKTsKKwkJICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocnRheCA9PSBSVEFYX05FVE1BU0spCisgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+aWFfcHJlZml4X2xlbiA9IG5ldHNubXBfaXBhZGRyZXNzX2lwdjRfcHJlZml4X2xlbihhNC0+c2luX2FkZHIuc19hZGRyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoYS0+c2FfZmFtaWx5ID09IEFGX0lORVQ2KSB7CisgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgKmE2ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhOworCQkgICAgY2hhciBzdHJbMTI4XTsKKwkJICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lcjpzeXNjdGwiLAorCQkgICAgICAgICAgICAgICAgIklQdjYgYWRkciAlc1xuIiwgaW5ldF9udG9wKEFGX0lORVQ2LCAmYTYtPnNpbjZfYWRkci5zNl9hZGRyLCBzdHIsIDEyOCkpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJ0YXggPT0gUlRBWF9JRkEpIHsKKwkJCWVudHJ5LT5pYV9hZGRyZXNzX2xlbiA9IDE2OworICAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KGVudHJ5LT5pYV9hZGRyZXNzLCAmYTYtPnNpbjZfYWRkciwgZW50cnktPmlhX2FkZHJlc3NfbGVuKTsKKwkJICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocnRheCA9PSBSVEFYX05FVE1BU0spIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5pYV9wcmVmaXhfbGVuID0gbmV0c25tcF9pcGFkZHJlc3NfaXB2Nl9wcmVmaXhfbGVuKGE2LT5zaW42X2FkZHIpOworCQkJREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyOnN5c2N0bCIsCisJCQkgICAgICAgICAgICAicHJlZml4X2xlbj0lZFxuIiwgZW50cnktPmlhX3ByZWZpeF9sZW4pKTsKKwkJICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYSA9IChzdHJ1Y3Qgc29ja2FkZHIgKikgKCAoKGNoYXIgKikgYSkgKyBST1VORFVQKGEtPnNhX2xlbikgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCWlmIChlbnRyeS0+aWFfYWRkcmVzc19sZW4gPT0gMCkgeworCSAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXI6c3lzY3RsIiwKKwkgICAgICAgICAgICAgICAgImVudHJ5IHNraXBwZWRcbiIpKTsKKwkgICAgbmV0c25tcF9hY2Nlc3NfaXBhZGRyZXNzX2VudHJ5X2ZyZWUoZW50cnkpOworCX0KKwllbHNlIGlmIChDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpIDwgMCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyIiwiZXJyb3Igd2l0aCBpcGFkZHJlc3NfZW50cnk6IGluc2VydCBpbnRvIGNvbnRhaW5lciBmYWlsZWQuXG4iKSk7CisgICAgICAgICAgICBuZXRzbm1wX2FjY2Vzc19pcGFkZHJlc3NfZW50cnlfZnJlZShlbnRyeSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChpZl9saXN0ICE9IE5VTEwpCisgICAgICAgIGZyZWUoaWZfbGlzdCk7CisKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zY2FsYXJzX2NvbW1vbi5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3NjYWxhcnNfY29tbW9uLmgKaW5kZXggMmYwYTYzYS4uZWJlYTIxZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3NjYWxhcnNfY29tbW9uLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3NjYWxhcnNfY29tbW9uLmgKQEAgLTE5LDYgKzE5LDggQEAKICAqLwogI2lmIGRlZmluZWQoIGxpbnV4ICkKIGNvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9zY2FsYXJzX2xpbnV4KQorI2VsaWYgZGVmaW5lZCggZnJlZWJzZDQgKSB8fCBkZWZpbmVkKCBuZXRic2Q1ICkgfHwgZGVmaW5lZCggb3BlbmJzZDQgKSB8fCBkZWZpbmVkKCBkcmFnb25mbHkgKSB8fCBkZWZpbmVkKCBkYXJ3aW4gKQorY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL3NjYWxhcnNfc3lzY3RsKQogI2Vsc2UKIC8qCiAgKiBjb3VsZG4ndCBkZXRlcm1pbmUgdGhlIGNvcnJlY3QgZmlsZSEKQEAgLTI2LDQgKzI4LDMgQEAKICAqLwogY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL3NjYWxhcnMtdW5rbm93bi1hcmNoKQogI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zY2FsYXJzX2xpbnV4LmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc2NhbGFyc19saW51eC5jCmluZGV4IDZiYTM1NmIuLjg1ZTkxMmEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zY2FsYXJzX2xpbnV4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3NjYWxhcnNfbGludXguYwpAQCAtNSwxMSArNSwxNiBAQAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBfc2NhbGFycy5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyZWdpc3Rlcl9udW1fZmlsZV9pbnN0YW5jZSkKKwogc3RhdGljIGNvbnN0IGNoYXIgaXBmd19uYW1lW10gPSAiL3Byb2Mvc3lzL25ldC9pcHY0L2NvbmYvYWxsL2ZvcndhcmRpbmciOworc3RhdGljIGNvbnN0IGNoYXIgaXB0dGxfbmFtZVtdID0gIi9wcm9jL3N5cy9uZXQvaXB2NC9pcF9kZWZhdWx0X3R0bCI7CiBzdGF0aWMgY29uc3QgY2hhciBpcGZ3Nl9uYW1lW10gPSAiL3Byb2Mvc3lzL25ldC9pcHY2L2NvbmYvYWxsL2ZvcndhcmRpbmciOworc3RhdGljIGNvbnN0IGNoYXIgaXBob3A2X25hbWVbXSA9ICIvcHJvYy9zeXMvbmV0L2lwdjYvY29uZi9hbGwvaG9wX2xpbWl0IjsKIAogaW50CiBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcEZvcndhcmRpbmdfZ2V0KHVfbG9uZyAqdmFsdWUpCkBAIC04MCw2ICs4NSw3MCBAQAogfQogCiBpbnQKK25ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwRGVmYXVsdFRUTF9nZXQodV9sb25nICp2YWx1ZSkKK3sKKyAgICBGSUxFICpmaWxlcDsKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoTlVMTCA9PSB2YWx1ZSkKKyAgICAgICAgcmV0dXJuIC0xOworCisKKyAgICBmaWxlcCA9IGZvcGVuKGlwdHRsX25hbWUsICJyIik7CisgICAgaWYgKE5VTEwgPT0gZmlsZXApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcERlZmF1bHRUVEwiLCAiY291bGQgbm90IG9wZW4gJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIGlwdHRsX25hbWUpKTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKworICAgIHJjID0gZnNjYW5mKGZpbGVwLCAiJWx1IiwgdmFsdWUpOworICAgIGZjbG9zZShmaWxlcCk7CisgICAgaWYgKDEgIT0gcmMpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcERlZmF1bHRUVEwiLCAiY291bGQgbm90IHJlYWQgJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIGlwdHRsX25hbWUpKTsKKyAgICAgICAgcmV0dXJuIC0zOworICAgIH0KKworICAgIGlmICgoMCA9PSAqdmFsdWUpIHx8ICgyNTUgPCAqdmFsdWUpKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBEZWZhdWx0VFRMIiwgInVuZXhwZWN0ZWQgdmFsdWUgJWxkIGluICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAqdmFsdWUsIGlwdHRsX25hbWUpKTsKKyAgICAgICAgcmV0dXJuIC00OworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitpbnQKK25ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwRGVmYXVsdFRUTF9zZXQodV9sb25nIHZhbHVlKQoreworICAgIEZJTEUgKmZpbGVwOworICAgIGludCByYzsKKworICAgIGlmICh2YWx1ZSA9PSAwIHx8IHZhbHVlID4gMjU1KSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBEZWZhdWx0VFRMIiwgImJhZCB2YWx1ZSAlbGQgZm9yICVzXG4iLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZSwgaXB0dGxfbmFtZSkpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdWQUxVRTsKKyAgICB9CisKKyAgICBmaWxlcCA9IGZvcGVuKGlwdHRsX25hbWUsICJ3Iik7CisgICAgaWYgKE5VTEwgPT0gZmlsZXApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcERlZmF1bHRUVEwiLCAiY291bGQgbm90IG9wZW4gJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIGlwdHRsX25hbWUpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEU7CisgICAgfQorCisgICAgcmMgPSBmcHJpbnRmKGZpbGVwLCAiJWxkIiwgdmFsdWUpOworICAgIGZjbG9zZShmaWxlcCk7CisgICAgaWYgKDEgIT0gcmMpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcERlZmF1bHRUVEwiLCAiY291bGQgbm90IHdyaXRlICVzXG4iLAorICAgICAgICAgICAgICAgICAgICBpcHR0bF9uYW1lKSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2ludAogbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXB2NklwRm9yd2FyZGluZ19nZXQodV9sb25nICp2YWx1ZSkKIHsKICAgICBGSUxFICpmaWxlcDsKQEAgLTE0NiwzICsyMTUsODAgQEAKIAogICAgIHJldHVybiAwOwogfQorCitpbnQKK25ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwdjZJcERlZmF1bHRIb3BMaW1pdF9nZXQodV9sb25nICp2YWx1ZSkKK3sKKyAgICBGSUxFICpmaWxlcDsKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoTlVMTCA9PSB2YWx1ZSkKKyAgICAgICAgcmV0dXJuIC0xOworCisKKyAgICBmaWxlcCA9IGZvcGVuKGlwaG9wNl9uYW1lLCAiciIpOworICAgIGlmIChOVUxMID09IGZpbGVwKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBEZWZhdWx0SG9wTGltaXQiLCAiY291bGQgbm90IG9wZW4gJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIGlwaG9wNl9uYW1lKSk7CisgICAgICAgIHJldHVybiAtMjsKKyAgICB9CisKKyAgICByYyA9IGZzY2FuZihmaWxlcCwgIiVsdSIsIHZhbHVlKTsKKyAgICBmY2xvc2UoZmlsZXApOworICAgIGlmICgxICE9IHJjKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBEZWZhdWx0SG9wTGltaXQiLCAiY291bGQgbm90IHJlYWQgJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIGlwaG9wNl9uYW1lKSk7CisgICAgICAgIHJldHVybiAtMzsKKyAgICB9CisKKyAgICBpZiAoKDAgPT0gKnZhbHVlKSB8fCAoMjU1IDwgKnZhbHVlKSkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwRGVmYXVsdEhvcExpbWl0IiwgInVuZXhwZWN0ZWQgdmFsdWUgJWxkIGluICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAqdmFsdWUsIGlwaG9wNl9uYW1lKSk7CisgICAgICAgIHJldHVybiAtNDsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworaW50CituZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcHY2SXBEZWZhdWx0SG9wTGltaXRfc2V0KHVfbG9uZyB2YWx1ZSkKK3sKKyAgICBGSUxFICpmaWxlcDsKKyAgICBpbnQgcmM7CisKKyAgICBpZiAodmFsdWUgPT0gMCB8fCB2YWx1ZSA+IDI1NSkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwRGVmYXVsdEhvcExpbWl0IiwgImJhZCB2YWx1ZSAlbGQgZm9yICVzXG4iLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZSwgaXBob3A2X25hbWUpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVkFMVUU7CisgICAgfQorCisgICAgZmlsZXAgPSBmb3BlbihpcGhvcDZfbmFtZSwgInciKTsKKyAgICBpZiAoTlVMTCA9PSBmaWxlcCkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwRGVmYXVsdEhvcExpbWl0IiwgImNvdWxkIG5vdCBvcGVuICVzXG4iLAorICAgICAgICAgICAgICAgICAgICBpcGhvcDZfbmFtZSkpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRTsKKyAgICB9CisKKyAgICByYyA9IGZwcmludGYoZmlsZXAsICIlbGQiLCB2YWx1ZSk7CisgICAgZmNsb3NlKGZpbGVwKTsKKyAgICBpZiAoMSAhPSByYykgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwRGVmYXVsdEhvcExpbWl0IiwgImNvdWxkIG5vdCB3cml0ZSAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgaXBob3A2X25hbWUpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZAorbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfcmVnaXN0ZXJfaGFuZGxlcnModm9pZCkKK3sKKyAgICBzdGF0aWMgb2lkIGlwUmVhc21UaW1lb3V0X29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA0LCAxMywgMCB9OworCisgICAgbmV0c25tcF9yZWdpc3Rlcl9udW1fZmlsZV9pbnN0YW5jZQorICAgICAgICAoImlwUmVhc21UaW1lb3V0IiwKKyAgICAgICAgIGlwUmVhc21UaW1lb3V0X29pZCwgT0lEX0xFTkdUSChpcFJlYXNtVGltZW91dF9vaWQpLAorICAgICAgICAgIi9wcm9jL3N5cy9uZXQvaXB2NC9pcGZyYWdfdGltZSIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgSEFORExFUl9DQU5fUk9OTFksIE5VTEwsIE5VTEwpOworCit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc2NhbGFyc19zeXNjdGwuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zY2FsYXJzX3N5c2N0bC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2OWM3NDMKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc2NhbGFyc19zeXNjdGwuYwpAQCAtMCwwICsxLDI5MSBAQAorLyoKKyAqICBJUC1NSUIgYXJjaGl0ZWN0dXJlIHN1cHBvcnQKKyAqCisgKiAkSWQkCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pcF9zY2FsYXJzLmg+CisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvcHJvdG9zdy5oPgorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2luX3N5c3RtLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pcC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKy8qIFhYWDogdGhlIHZhbHVlcyBwYXNzZWQgdG8gbmV0c25tcF9hcmNoX2lwX3NjYWxhcnMoLi4pIG1heSBvciBtYXkgbm90IGJlCisgKiBwb3J0YWJsZSB0byB0aGUgb3RoZXIgQlNEcyAtLSBpdCBzZWVtcyB0byBiZSBwb3J0YWJsZSBiYWNrIHRvIEZyZWVCU0QgNC54CisgKiAoRGFyd2luIDEwLjguMCkgYXQgbGVhc3QuCisgKi8KKworc3RhdGljIGludAorbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfc3lzY3RsKGNvbnN0IGNoYXIgKmFjY2Vzc19tb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1pYltdLCBzaXplX3QgbWliX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKm9sZF92YWx1ZSwgdV9sb25nICpuZXdfdmFsdWUpCit7CisgICAgaW50IG5ld2ludCwgb2xkaW50OworICAgIHNpemVfdCBuZWVkZWQ7CisgICAgaW50IHJjOworCisgICAgbmVlZGVkID0gc2l6ZW9mKG9sZGludCk7CisgICAgaWYgKG5ld192YWx1ZSkKKyAgICAgICAgbmV3aW50ID0gKm5ld192YWx1ZTsKKworICAgIHJjID0gc3lzY3RsKG1pYiwgbWliX2xlbiwgJm9sZGludCwgJm5lZWRlZCwKKyAgICAgICAgICAgICAgICBuZXdfdmFsdWUgPyAmbmV3aW50IDogTlVMTCwgKG5ld192YWx1ZSA/IHNpemVvZihuZXdpbnQpIDogMCkpOworICAgIGlmIChyYyA9PSAtMSkgeworICAgICAgICBERUJVR01TR1RMKChhY2Nlc3NfbW9kdWxlLCAic3lzY3RsICVzIGZhaWxlZCAtICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAobmV3X3ZhbHVlID09IE5VTEwgPyAiZ2V0IiA6ICJzZXQiKSwKKyAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKSk7CisgICAgfQorICAgICpvbGRfdmFsdWUgPSBvbGRpbnQ7CisgICAgcmV0dXJuIHJjOworfQorCitpbnQgaXBEZWZhdWx0VFRMX21pYltdID0geworICAgIENUTF9ORVQsCisgICAgUEZfSU5FVCwKKyAgICBJUFBST1RPX0lQLAorICAgIElQQ1RMX0RFRlRUTAorfTsKKworaW50IGlwRm9yd2FyZGluZ19taWJbXSA9IHsKKyAgICBDVExfTkVULAorICAgIFBGX0lORVQsCisgICAgSVBQUk9UT19JUCwKKyAgICBJUENUTF9GT1JXQVJESU5HCit9OworCitpbnQgaXB2NklwRGVmYXVsdEhvcExpbWl0X21pYltdID0geworICAgIENUTF9ORVQsCisgICAgUEZfSU5FVDYsCisgICAgSVBQUk9UT19JUCwKKyAgICBJUFY2Q1RMX0RFRkhMSU0KK307CisKK2ludCBpcHY2SXBGb3J3YXJkaW5nX21pYltdID0geworICAgIENUTF9ORVQsCisgICAgUEZfSU5FVDYsCisgICAgSVBQUk9UT19JUCwKKyAgICBJUFY2Q1RMX0ZPUldBUkRJTkcKK307CisKKyNkZWZpbmUgTUlCX0xFTihhKQkJKHNpemVvZihhKSAvIHNpemVvZigqYSkpCisKKyNkZWZpbmUgSVBERUZBVUxUVFRMX0xFTglNSUJfTEVOKGlwRGVmYXVsdFRUTF9taWIpCisjZGVmaW5lIElQRk9SV0FSRElOR19MRU4JTUlCX0xFTihpcEZvcndhcmRpbmdfbWliKQorI2RlZmluZSBJUFY2SVBERUZBVUxUSE9QTElNSVRfTEVOCU1JQl9MRU4oaXB2NklwRGVmYXVsdEhvcExpbWl0X21pYikKKyNkZWZpbmUgSVBWNklQRk9SV0FSRElOR19MRU4JTUlCX0xFTihpcHY2SXBGb3J3YXJkaW5nX21pYikKKworaW50CituZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcERlZmF1bHRUVExfZ2V0KHVfbG9uZyAqdmFsdWUpCit7CisgICAgaW50IHJjOworCisgICAgaWYgKE5VTEwgPT0gdmFsdWUpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJjID0gbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfc3lzY3RsKCJhY2Nlc3M6aXBEZWZhdWx0VFRMIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcERlZmF1bHRUVExfbWliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQREVGQVVMVFRUTF9MRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUsIE5VTEwpOworICAgIGlmIChyYyAhPSAwKQorICAgICAgICByZXR1cm4gLTI7CisKKyAgICByZXR1cm4gMDsKK30KKworaW50CituZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcERlZmF1bHRUVExfc2V0KHVfbG9uZyB2YWx1ZSkKK3sKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoMSA9PSB2YWx1ZSkKKyAgICAgICAgOworICAgIGVsc2UgaWYgKDIgPT0gdmFsdWUpCisgICAgICAgIHZhbHVlID0gMDsKKyAgICBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcERlZmF1bHRUVEwiLCAiYmFkIHZhbHVlICVsZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVkFMVUU7CisgICAgfQorCisgICAgcmMgPSBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19zeXNjdGwoImFjY2VzczppcEZvcndhcmRpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRm9yd2FyZGluZ19taWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBGT1JXQVJESU5HX0xFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAmdmFsdWUpOworICAgIGlmIChyYyAhPSAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gMDsKK30KKworaW50CituZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcEZvcndhcmRpbmdfZ2V0KHVfbG9uZyAqdmFsdWUpCit7CisgICAgaW50IHJjOworCisgICAgaWYgKE5VTEwgPT0gdmFsdWUpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJjID0gbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfc3lzY3RsKCJhY2Nlc3M6aXBGb3J3YXJkaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcEZvcndhcmRpbmdfbWliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQRk9SV0FSRElOR19MRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUsIE5VTEwpOworICAgIGlmIChyYyAhPSAwKQorICAgICAgICByZXR1cm4gLTI7CisKKyAgICAvKiBPbiBGcmVlQlNEIDcuMiBhdCBsZWFzdCwgdGhlIHZhbHVlIHBhc3NlZCB0byB0aGUgc3lzY3RsIGNhbiBiZSBjb2VyY2VkCisgICAgICogaW50byBhIG5vbi16ZXJvIHZhbHVlOyBjb252ZXJ0IGl0IGludG8gYSB2YWx1ZSB0aGF0J3Mgc2FuZSBwZXIgdGhlCisgICAgICogSVAtTUlCIGRlZmluaXRpb24uCisgICAgICovCisgICAgaWYgKCp2YWx1ZSAhPSAwKQorICAgICAgICAqdmFsdWUgPSAxOworCisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXBGb3J3YXJkaW5nX3NldCh1X2xvbmcgdmFsdWUpCit7CisgICAgaW50IHJjOworCisgICAgaWYgKDEgPT0gdmFsdWUpCisgICAgICAgIDsKKyAgICBlbHNlIGlmICgyID09IHZhbHVlKQorICAgICAgICB2YWx1ZSA9IDA7CisgICAgZWxzZSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBGb3J3YXJkaW5nIiwgImJhZCB2YWx1ZSAlbGRcbiIsCisgICAgICAgICAgICAgICAgICAgIHZhbHVlKSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1ZBTFVFOworICAgIH0KKworICAgIHJjID0gbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfc3lzY3RsKCJhY2Nlc3M6aXBGb3J3YXJkaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcEZvcndhcmRpbmdfbWliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQRk9SV0FSRElOR19MRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgJnZhbHVlKTsKKyAgICBpZiAocmMgIT0gMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXB2NklwRGVmYXVsdEhvcExpbWl0X2dldCh1X2xvbmcgKnZhbHVlKQoreworICAgIGludCByYzsKKworICAgIGlmIChOVUxMID09IHZhbHVlKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByYyA9IG5ldHNubXBfYXJjaF9pcF9zY2FsYXJzX3N5c2N0bCgiYWNjZXNzOmlwdjZJcERlZmF1bHRIb3BMaW1pdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXB2NklwRGVmYXVsdEhvcExpbWl0X21pYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUFY2SVBERUZBVUxUSE9QTElNSVRfTEVOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLCBOVUxMKTsKKyAgICBpZiAocmMgIT0gMCkKKyAgICAgICAgcmV0dXJuIC0yOworCisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXB2NklwRGVmYXVsdEhvcExpbWl0X3NldCh1X2xvbmcgdmFsdWUpCit7CisgICAgaW50IHJjOworCisgICAgaWYgKDEgPT0gdmFsdWUpCisgICAgICAgIDsKKyAgICBlbHNlIGlmICgyID09IHZhbHVlKQorICAgICAgICB2YWx1ZSA9IDA7CisgICAgZWxzZSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXB2NklwRGVmYXVsdEhvcExpbWl0IiwgImJhZCB2YWx1ZSAlbGRcbiIsCisgICAgICAgICAgICAgICAgICAgIHZhbHVlKSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1ZBTFVFOworICAgIH0KKworICAgIHJjID0gbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfc3lzY3RsKCJhY2Nlc3M6aXBGb3J3YXJkaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2SXBEZWZhdWx0SG9wTGltaXRfbWliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQVjZJUERFRkFVTFRIT1BMSU1JVF9MRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgJnZhbHVlKTsKKyAgICBpZiAocmMgIT0gMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXB2NklwRm9yd2FyZGluZ19nZXQodV9sb25nICp2YWx1ZSkKK3sKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoTlVMTCA9PSB2YWx1ZSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmMgPSBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19zeXNjdGwoImFjY2VzczppcHY2SXBGb3J3YXJkaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2SXBGb3J3YXJkaW5nX21pYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUFY2SVBGT1JXQVJESU5HX0xFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSwgTlVMTCk7CisgICAgaWYgKHJjICE9IDApCisgICAgICAgIHJldHVybiAtMjsKKworICAgIC8qIE9uIEZyZWVCU0QgNy4yIGF0IGxlYXN0LCB0aGUgdmFsdWUgcGFzc2VkIHRvIHRoZSBzeXNjdGwgY2FuIGJlIGNvZXJjZWQKKyAgICAgKiBpbnRvIGEgbm9uLXplcm8gdmFsdWU7IGNvbnZlcnQgaXQgaW50byBhIHZhbHVlIHRoYXQncyBzYW5lIHBlciB0aGUKKyAgICAgKiBJUC1NSUIgZGVmaW5pdGlvbi4KKyAgICAgKi8KKyAgICBpZiAoKnZhbHVlICE9IDApCisgICAgICAgICp2YWx1ZSA9IDE7CisKKyAgICByZXR1cm4gMDsKK30KKworaW50CituZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcHY2SXBGb3J3YXJkaW5nX3NldCh1X2xvbmcgdmFsdWUpCit7CisgICAgaW50IHJjOworCisgICAgaWYgKDEgPT0gdmFsdWUpCisgICAgICAgIDsKKyAgICBlbHNlIGlmICgyID09IHZhbHVlKQorICAgICAgICB2YWx1ZSA9IDA7CisgICAgZWxzZSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBGb3J3YXJkaW5nIiwgImJhZCB2YWx1ZSAlbGRcbiIsCisgICAgICAgICAgICAgICAgICAgIHZhbHVlKSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1ZBTFVFOworICAgIH0KKworICAgIHJjID0gbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfc3lzY3RsKCJhY2Nlc3M6aXB2NklwRm9yd2FyZGluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXB2NklwRm9yd2FyZGluZ19taWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBWNklQRk9SV0FSRElOR19MRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgJnZhbHVlKTsKKyAgICBpZiAocmMgIT0gMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBsb25nIGlwUmVhc21UaW1lb3V0X3ZhbDsKKwordm9pZAorbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfcmVnaXN0ZXJfaGFuZGxlcnModm9pZCkKK3sKKyAgICBzdGF0aWMgb2lkIGlwUmVhc21UaW1lb3V0X29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA0LCAxMywgMCB9OworCisgICAgLyogCisgICAgICogVGhpcyB2YWx1ZSBpcyBzdGF0aWMgYXQgY29tcGlsZSB0aW1lIG9uIEZyZWVCU0Q7IGl0IHJlYWxseSBzaG91bGQgYmUgYQorICAgICAqIHByb2JlZCB2aWEgZWl0aGVyIHN5c2N0bCBvciBzeXNjb25mIGF0IHJ1bnRpbWUgYXMgdGhlIGNvbXBpbGVkIHZhbHVlIGFuZAorICAgICAqIHRoZSBydW50aW1lIHZhbHVlIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCBjYW4gdmFyeS4KKyAgICAgKgorICAgICAqIFBsZWFzZSByZWZlciB0byBzeXMvcHJvdG9zdy5oIGZvciBtb3JlIGRldGFpbHMgb24gd2hhdCB0aGlzIHZhbHVlIGlzIChpbgorICAgICAqIHBhcnRpY3VsYXIgUFJfU0xPV0haKS4KKyAgICAgKi8KKyAgICBpcFJlYXNtVGltZW91dF92YWwgPSBJUEZSQUdUVEwgLyBQUl9TTE9XSFo7CisKKyAgICBuZXRzbm1wX3JlZ2lzdGVyX2xvbmdfaW5zdGFuY2UoImlwUmVhc21UaW1lb3V0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBSZWFzbVRpbWVvdXRfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPSURfTEVOR1RIKGlwUmVhc21UaW1lb3V0X29pZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpcFJlYXNtVGltZW91dF92YWwsIE5VTEwpOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHMuaAppbmRleCAyODgxMGUzLi41MTQ4MDdhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHMuaAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHMuaApAQCAtMjIsNiArMjIsOCBAQAogY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2xpbnV4KQogI2VsaWYgZGVmaW5lZCggc29sYXJpczIgKQogY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX3NvbGFyaXMyKQorI2VsaWYgZGVmaW5lZCggZnJlZWJzZDcgKSB8fCBkZWZpbmVkKCBuZXRic2Q1ICkgfHwgZGVmaW5lZCggb3BlbmJzZDQgKSB8fCBkZWZpbmVkKCBkcmFnb25mbHkgKSB8fCBkZWZpbmVkKCBkYXJ3aW4gKQorY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX3N5c2N0bCkKICNlbHNlCiBjb25maWdfZXJyb3IodGhlIHN5c3RlbXN0YXRzIGRhdGEgYWNjZXNzIGxpYnJhcnkgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGlzIGVudmlyb25tZW50LikKICNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX3N5c2N0bC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX3N5c2N0bC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzZTgwM2EKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfc3lzY3RsLmMKQEAgLTAsMCArMSw3OTEgQEAKKy8qCisgKiAgaXBTeXN0ZW1TdGF0c1RhYmxlIGFuZCBpcElmU3RhdHNUYWJsZSBpbnRlcmZhY2UgTUlCIGFyY2hpdGVjdHVyZSBzdXBwb3J0CisgKgorICogJElkJAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBzdGF0cy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzLmg+CisKKyNpbmNsdWRlICIuLi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlLmgiCisKKyNpZiBkZWZpbmVkKE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMKSAmJiAhZGVmaW5lZChfS0VSTkVMKQorI2RlZmluZSBfS0VSTkVMIDEKKyNkZWZpbmUgX0lfREVGSU5FRF9LRVJORUwKKyNlbmRpZgorI2lmIE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMX1NUUlVDVFVSRVMKKyNkZWZpbmUgX0tFUk5FTF9TVFJVQ1RVUkVTCisjZW5kaWYKKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGRpcmVudC5oPgorI2luY2x1ZGUgPGN0eXBlLmg+CisKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CisjaW5jbHVkZSA8c3lzL3Byb3Rvc3cuaD4KKworI2luY2x1ZGUgPG5ldC9pZi5oPgorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2luX3N5c3RtLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pcC5oPgorI2luY2x1ZGUgPG5ldGluZXQvaXBfaWNtcC5oPgorI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+CisjaWYgSEFWRV9ORVRJTkVUNl9JUDZfVkFSX0gKKyNpbmNsdWRlIDxuZXRpbmV0Ni9pcDZfdmFyLmg+CisjZW5kaWYKKyNpZm5kZWYgZnJlZWJzZDcKKyNpbmNsdWRlIDxuZXRpbmV0Ni9pbjZfdmFyLmg+CisjZW5kaWYKKworI2lmZGVmIGRhcndpbgorCisvKiBUaGlzIHN0cnVjdCBpcyBpbiBuZXRpbmV0Ni9pcDZfdmFyLmggd2hpY2ggQXBwbGUgZm9yIG9ic2N1cmUgcmVhc29ucworICogZG8gbm90IGRpc3RyaWJ1dGUgYXMgcGFydCBvZiAvdXNyL2luY2x1ZGUgOi0oCisgKi8KKworc3RydWN0CWlwNnN0YXQgeworCXVfcXVhZF90IGlwNnNfdG90YWw7CQkvKiB0b3RhbCBwYWNrZXRzIHJlY2VpdmVkICovCisJdV9xdWFkX3QgaXA2c190b29zaG9ydDsJCS8qIHBhY2tldCB0b28gc2hvcnQgKi8KKwl1X3F1YWRfdCBpcDZzX3Rvb3NtYWxsOwkJLyogbm90IGVub3VnaCBkYXRhICovCisJdV9xdWFkX3QgaXA2c19mcmFnbWVudHM7CS8qIGZyYWdtZW50cyByZWNlaXZlZCAqLworCXVfcXVhZF90IGlwNnNfZnJhZ2Ryb3BwZWQ7CS8qIGZyYWdzIGRyb3BwZWQoZHVwcywgb3V0IG9mIHNwYWNlKSAqLworCXVfcXVhZF90IGlwNnNfZnJhZ3RpbWVvdXQ7CS8qIGZyYWdtZW50cyB0aW1lZCBvdXQgKi8KKwl1X3F1YWRfdCBpcDZzX2ZyYWdvdmVyZmxvdzsJLyogZnJhZ21lbnRzIHRoYXQgZXhjZWVkZWQgbGltaXQgKi8KKwl1X3F1YWRfdCBpcDZzX2ZvcndhcmQ7CQkvKiBwYWNrZXRzIGZvcndhcmRlZCAqLworCXVfcXVhZF90IGlwNnNfY2FudGZvcndhcmQ7CS8qIHBhY2tldHMgcmN2ZCBmb3IgdW5yZWFjaGFibGUgZGVzdCAqLworCXVfcXVhZF90IGlwNnNfcmVkaXJlY3RzZW50OwkvKiBwYWNrZXRzIGZvcndhcmRlZCBvbiBzYW1lIG5ldCAqLworCXVfcXVhZF90IGlwNnNfZGVsaXZlcmVkOwkvKiBkYXRhZ3JhbXMgZGVsaXZlcmVkIHRvIHVwcGVyIGxldmVsKi8KKwl1X3F1YWRfdCBpcDZzX2xvY2Fsb3V0OwkJLyogdG90YWwgaXAgcGFja2V0cyBnZW5lcmF0ZWQgaGVyZSAqLworCXVfcXVhZF90IGlwNnNfb2Ryb3BwZWQ7CQkvKiBsb3N0IHBhY2tldHMgZHVlIHRvIG5vYnVmcywgZXRjLiAqLworCXVfcXVhZF90IGlwNnNfcmVhc3NlbWJsZWQ7CS8qIHRvdGFsIHBhY2tldHMgcmVhc3NlbWJsZWQgb2sgKi8KKwl1X3F1YWRfdCBpcDZzX2ZyYWdtZW50ZWQ7CS8qIGRhdGFncmFtcyBzdWNlc3NmdWxseSBmcmFnbWVudGVkICovCisJdV9xdWFkX3QgaXA2c19vZnJhZ21lbnRzOwkvKiBvdXRwdXQgZnJhZ21lbnRzIGNyZWF0ZWQgKi8KKwl1X3F1YWRfdCBpcDZzX2NhbnRmcmFnOwkJLyogZG9uJ3QgZnJhZ21lbnQgZmxhZyB3YXMgc2V0LCBldGMuICovCisJdV9xdWFkX3QgaXA2c19iYWRvcHRpb25zOwkvKiBlcnJvciBpbiBvcHRpb24gcHJvY2Vzc2luZyAqLworCXVfcXVhZF90IGlwNnNfbm9yb3V0ZTsJCS8qIHBhY2tldHMgZGlzY2FyZGVkIGR1ZSB0byBubyByb3V0ZSAqLworCXVfcXVhZF90IGlwNnNfYmFkdmVyczsJCS8qIGlwNiB2ZXJzaW9uICE9IDYgKi8KKwl1X3F1YWRfdCBpcDZzX3Jhd291dDsJCS8qIHRvdGFsIHJhdyBpcCBwYWNrZXRzIGdlbmVyYXRlZCAqLworCXVfcXVhZF90IGlwNnNfYmFkc2NvcGU7CQkvKiBzY29wZSBlcnJvciAqLworCXVfcXVhZF90IGlwNnNfbm90bWVtYmVyOwkvKiBkb24ndCBqb2luIHRoaXMgbXVsdGljYXN0IGdyb3VwICovCisJdV9xdWFkX3QgaXA2c19ueHRoaXN0WzI1Nl07CS8qIG5leHQgaGVhZGVyIGhpc3RvcnkgKi8KKwl1X3F1YWRfdCBpcDZzX20xOwkJLyogb25lIG1idWYgKi8KKwl1X3F1YWRfdCBpcDZzX20ybVszMl07CQkvKiB0d28gb3IgbW9yZSBtYnVmICovCisJdV9xdWFkX3QgaXA2c19tZXh0MTsJCS8qIG9uZSBleHQgbWJ1ZiAqLworCXVfcXVhZF90IGlwNnNfbWV4dDJtOwkJLyogdHdvIG9yIG1vcmUgZXh0IG1idWYgKi8KKwl1X3F1YWRfdCBpcDZzX2V4dGhkcnRvb2xvbmc7CS8qIGV4dCBoZHIgYXJlIG5vdCBjb250aW51b3VzICovCisJdV9xdWFkX3QgaXA2c19ub2dpZjsJCS8qIG5vIG1hdGNoIGdpZiBmb3VuZCAqLworCXVfcXVhZF90IGlwNnNfdG9vbWFueWhkcjsJLyogZGlzY2FyZGVkIGR1ZSB0byB0b28gbWFueSBoZWFkZXJzICovCisKKwkvKgorCSAqIHN0YXRpc3RpY3MgZm9yIGltcHJvdmVtZW50IG9mIHRoZSBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24KKwkgKiBhbGdvcml0aG06CisJICogWFhYOiBoYXJkY29kZWQgMTYgPSAjIG9mIGlwNiBtdWx0aWNhc3Qgc2NvcGUgdHlwZXMgKyAxCisJICovCisJLyogbnVtYmVyIG9mIHRpbWVzIHRoYXQgYWRkcmVzcyBzZWxlY3Rpb24gZmFpbHMgKi8KKwl1X3F1YWRfdCBpcDZzX3NvdXJjZXNfbm9uZTsKKwkvKiBudW1iZXIgb2YgdGltZXMgdGhhdCBhbiBhZGRyZXNzIG9uIHRoZSBvdXRnb2luZyBJL0YgaXMgY2hvc2VuICovCisJdV9xdWFkX3QgaXA2c19zb3VyY2VzX3NhbWVpZlsxNl07CisJLyogbnVtYmVyIG9mIHRpbWVzIHRoYXQgYW4gYWRkcmVzcyBvbiBhIG5vbi1vdXRnb2luZyBJL0YgaXMgY2hvc2VuICovCisJdV9xdWFkX3QgaXA2c19zb3VyY2VzX290aGVyaWZbMTZdOworCS8qCisJICogbnVtYmVyIG9mIHRpbWVzIHRoYXQgYW4gYWRkcmVzcyB0aGF0IGhhcyB0aGUgc2FtZSBzY29wZQorCSAqIGZyb20gdGhlIGRlc3RpbmF0aW9uIGlzIGNob3Nlbi4KKwkgKi8KKwl1X3F1YWRfdCBpcDZzX3NvdXJjZXNfc2FtZXNjb3BlWzE2XTsKKwkvKgorCSAqIG51bWJlciBvZiB0aW1lcyB0aGF0IGFuIGFkZHJlc3MgdGhhdCBoYXMgYSBkaWZmZXJlbnQgc2NvcGUKKwkgKiBmcm9tIHRoZSBkZXN0aW5hdGlvbiBpcyBjaG9zZW4uCisJICovCisJdV9xdWFkX3QgaXA2c19zb3VyY2VzX290aGVyc2NvcGVbMTZdOworCS8qIG51bWJlciBvZiB0aW1lcyB0aGF0IGFuIGRlcHJlY2F0ZWQgYWRkcmVzcyBpcyBjaG9zZW4gKi8KKwl1X3F1YWRfdCBpcDZzX3NvdXJjZXNfZGVwcmVjYXRlZFsxNl07CisKKwl1X3F1YWRfdCBpcDZzX2ZvcndhcmRfY2FjaGVoaXQ7CisJdV9xdWFkX3QgaXA2c19mb3J3YXJkX2NhY2hlbWlzczsKK307CisKKyNlbmRpZiAvKiBkYXJ3aW4qLworCitzdGF0aWMgaW50IF9zeXN0ZW1zdGF0c192NChuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLCB1X2ludCBsb2FkX2ZsYWdzKTsKKworI2lmIGRlZmluZWQgKE5FVFNOTVBfRU5BQkxFX0lQVjYpCitzdGF0aWMgaW50IF9zeXN0ZW1zdGF0c192NihuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLCB1X2ludCBsb2FkX2ZsYWdzKTsKKyNlbmRpZgorCitzdGF0aWMgaW50IG5jcHVzOworCit2b2lkCituZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19hcmNoX2luaXQodm9pZCkKK3sKKyAgICBpbnQgICAgbmNwdV9taWJbXSAgPSB7IENUTF9IVywgSFdfTkNQVSB9OworICAgIHNpemVfdCBzaXogPSBzaXplb2YobmNwdXMpOworICAgIGlmIChzeXNjdGwobmNwdV9taWIsIDIsICZuY3B1cywgJnNpeiwgTlVMTCwgMCkgPCAwKSB7CisJc25tcF9sb2dfcGVycm9yKCJody5uY3B1Iik7CisgICAgICAgIG5jcHVzID0gMTsKKyAgICB9Cit9CisKKy8qCisgKgorICogQHJldHZhbCAgMCBzdWNjZXNzCisgKiBAcmV0dmFsIC0xIG5vIGNvbnRhaW5lciBzcGVjaWZpZWQKKyAqIEByZXR2YWwgLTIgY291bGQgbm90IG9wZW4gZmlsZQorICogQHJldHZhbCAtMyBjb3VsZCBub3QgY3JlYXRlIGVudHJ5IChwcm9iYWJseSBtYWxsb2MpCisgKiBAcmV0dmFsIC00IGZpbGUgZm9ybWF0IGVycm9yCisgKi8KK2ludAorbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfY29udGFpbmVyX2FyY2hfbG9hZChuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICBpbnQgcmMxOworI2lmIGRlZmluZWQgKE5FVFNOTVBfRU5BQkxFX0lQVjYpCisgICAgaW50IHJjMjsKKyNlbmRpZgorCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJubyBjb250YWluZXIgc3BlY2lmaWVkL2ZvdW5kIGZvciBhY2Nlc3Nfc3lzdGVtc3RhdHNfXG4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICAKKyAgICAvKgorICAgICAqIGxvYWQgdjQgYW5kIHY2IHN0YXRzLiBFdmVuIGlmIG9uZSBmYWlscywgdHJ5IHRoZSBvdGhlci4KKyAgICAgKiBJZiB0aGV5IGhhdmUgdGhlIHNhbWUgcmMsIHJldHVybiBpdC4gaWYgdGhlIGRpZmZlciwgcmV0dXJuCisgICAgICogdGhlIHNtYWxsZXIgb25lLiBObyBsb2cgbWVzc2FnZXMsIHNpbmNlIGVhY2ggaW5kaXZpZHVhbCBmdW5jdGlvbgorICAgICAqIHdvdWxkIGhhdmUgbG9nZ2VkIGl0cyBvd24gbWVzc2FnZS4KKyAgICAgKi8KKyAgICByYzEgPSBfc3lzdGVtc3RhdHNfdjQoY29udGFpbmVyLCBsb2FkX2ZsYWdzKTsKKyNpZiBkZWZpbmVkIChORVRTTk1QX0VOQUJMRV9JUFY2KQorICAgIHJjMiA9IF9zeXN0ZW1zdGF0c192Nihjb250YWluZXIsIGxvYWRfZmxhZ3MpOworICAgIGlmICgocmMxID09IHJjMikgfHwgKHJjMSA8IHJjMikpCisgICAgICAgIHJldHVybiByYzE7CisgICAgICAgIAorICAgIHJldHVybiByYzI7CisjZWxzZQorICAgIHJldHVybiByYzE7CisjZW5kaWYKK30KKworLyoKKyAqIEJhc2VkIG9uIGxvYWRfZmxhZ3MsIGxvYWQgaXBTeXN0ZW1TdGF0c1RhYmxlIG9yIGlwSWZTdGF0c1RhYmxlIGZvciBpcHY0IGVudHJpZXMuIAorICovCisjaWZkZWYgX19OZXRCU0RfXworCitzdGF0aWMgaW50Citfc3lzdGVtc3RhdHNfdjQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICBuZXRzbm1wX3N5c3RlbXN0YXRzX2VudHJ5ICplbnRyeSA9IE5VTEw7CisgICAgdWludDY0X3QgaXBzdGF0W0lQX05TVEFUU107CisgICAgc2l6ZV90IGxlbiA9IHNpemVvZihpcHN0YXQpOworCisgICAgaWYgKHN5c2N0bGJ5bmFtZSgibmV0LmluZXQuaXAuc3RhdHMiLCAmaXBzdGF0LCAmbGVuLCBOVUxMLCAwKSA8IDApIHsKKwlORVRTTk1QX0xPR09OQ0UoKExPR19FUlIsICJDYW5ub3Qgc3lzY3RsYnluYW1lIG5ldC5pbmV0LmlwLnN0YXRzXG4iKSk7CisJcmV0dXJuIC0yOworICAgIH0KKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHM6Y29udGFpbmVyOmFyY2giLCAibG9hZCB2NCAoZmxhZ3MgJXgpXG4iLAorICAgICAgICAgICAgICAgIGxvYWRfZmxhZ3MpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KGNvbnRhaW5lciAhPSBOVUxMKTsgLyogbG9hZCBmdW5jdGlvbiBzaG91bGRhIGNoZWNrZWQgdGhpcyAqLworCisgICAgaWYgKGxvYWRfZmxhZ3MgJiBORVRTTk1QX0FDQ0VTU19TWVNURU1TVEFUU19MT0FEX0lGVEFCTEUpIHsKKyAgICAgICAgLyogd2UgZG8gbm90IHN1cHBvcnQgaXBJZlN0YXRzVGFibGUgZm9yIGlwdjQgKi8KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19lbnRyeV9jcmVhdGUoMSwgMCwKKwkJImlwU3lzdGVtU3RhdHNUYWJsZS5pcHY0Iik7CisgICAgaWYoTlVMTCA9PSBlbnRyeSkgeworCXNubXBfbG9nKExPR19FUlIsICJzeXN0ZW1zdGF0c192NDogY2Fubm90IGNyZWF0ZSBlbnRyeVxuIik7CisJbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfY29udGFpbmVyX2ZyZWUoY29udGFpbmVyLAorCQkJCQkJICBORVRTTk1QX0FDQ0VTU19TWVNURU1TVEFUU19GUkVFX05PRkxBR1MpOworCXJldHVybiAtMzsKKyAgICB9CisKKyAgICAvKgorICAgICAqIE9LIC0gd2UndmUgbm93IGdvdCAob3IgY3JlYXRlZCkgdGhlIGRhdGEgc3RydWN0dXJlIGZvcgorICAgICAqICAgICAgdGhpcyBzeXN0ZW1zdGF0cywgaW5jbHVkaW5nIGFueSAic3RhdGljIiBpbmZvcm1hdGlvbi4KKyAgICAgKiBOb3cgcGFyc2UgdGhlIHJlc3Qgb2YgdGhlIGxpbmUgKGkuZS4gc3RhcnRpbmcgZnJvbSAnc3RhdHMnKQorICAgICAqICAgICAgdG8gZXh0cmFjdCB0aGUgcmVsZXZhbnQgc3RhdGlzdGljcywgYW5kIHBvcHVsYXRlCisgICAgICogICAgICBkYXRhIHN0cnVjdHVyZSBhY2NvcmRpbmdseS4KKyAgICAgKi8KKworICAgIGVudHJ5LT5zdGF0cy5IQ0luUmVjZWl2ZXMubG93ID0gaXBzdGF0W0lQX1NUQVRfVE9UQUxdICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENJblJlY2VpdmVzLmhpZ2ggPSBpcHN0YXRbSVBfU1RBVF9UT1RBTF0gPj4gMzI7CisgICAgZW50cnktPnN0YXRzLkluSGRyRXJyb3JzID0gaXBzdGF0W0lQX1NUQVRfQkFEU1VNXQorCQkgICAgKyBpcHN0YXRbSVBfU1RBVF9UT09TSE9SVF0gKyBpcHN0YXRbSVBfU1RBVF9UT09TTUFMTF0KKwkgICAgICAgICAgICArIGlwc3RhdFtJUF9TVEFUX0JBREhMRU5dICsgaXBzdGF0W0lQX1NUQVRfQkFETEVOXTsKKyAgICBlbnRyeS0+c3RhdHMuSW5BZGRyRXJyb3JzID0gaXBzdGF0W0lQX1NUQVRfQ0FOVEZPUldBUkRdOworICAgIGVudHJ5LT5zdGF0cy5IQ091dEZvcndEYXRhZ3JhbXMubG93ID0gaXBzdGF0W0lQX1NUQVRfRk9SV0FSRF0gJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dEZvcndEYXRhZ3JhbXMuaGlnaCA9IGlwc3RhdFtJUF9TVEFUX0ZPUldBUkRdID4+IDMyOworICAgIGVudHJ5LT5zdGF0cy5JblVua25vd25Qcm90b3MgPSBpcHN0YXRbSVBfU1RBVF9OT1BST1RPXTsKKyAgICBlbnRyeS0+c3RhdHMuSW5EaXNjYXJkcyA9IGlwc3RhdFtJUF9TVEFUX0ZSQUdEUk9QUEVEXTsKKyAgICBlbnRyeS0+c3RhdHMuSENJbkRlbGl2ZXJzLmxvdyA9IGlwc3RhdFtJUF9TVEFUX0RFTElWRVJFRF0gJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ0luRGVsaXZlcnMuaGlnaCA9IGlwc3RhdFtJUF9TVEFUX0RFTElWRVJFRF0gPj4gMzI7CisgICAgZW50cnktPnN0YXRzLkhDT3V0UmVxdWVzdHMubG93ID0gaXBzdGF0W0lQX1NUQVRfTE9DQUxPVVRdICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRSZXF1ZXN0cy5oaWdoID0gaXBzdGF0W0lQX1NUQVRfTE9DQUxPVVRdID4+IDMyOworICAgIGVudHJ5LT5zdGF0cy5IQ091dERpc2NhcmRzLmxvdyA9IGlwc3RhdFtJUF9TVEFUX09EUk9QUEVEXSAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RGlzY2FyZHMuaGlnaCA9IGlwc3RhdFtJUF9TVEFUX09EUk9QUEVEXSA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXROb1JvdXRlcy5sb3cgPSBpcHN0YXRbSVBfU1RBVF9OT0dJRl0gJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dE5vUm91dGVzLmhpZ2ggPSBpcHN0YXRbSVBfU1RBVF9OT0dJRl0gPj4gMzI7CisgICAgLyogZW50cnktPnN0YXRzLiA9IHNjYW5fdmFsc1sxMl07IC8gKiBSZWFzbVRpbWVvdXQgKi8KKyAgICBlbnRyeS0+c3RhdHMuUmVhc21SZXFkcyA9IGlwc3RhdFtJUF9TVEFUX0ZSQUdNRU5UU107CisgICAgZW50cnktPnN0YXRzLlJlYXNtT0tzID0gaXBzdGF0W0lQX1NUQVRfUkVBU1NFTUJMRURdOworICAgIGVudHJ5LT5zdGF0cy5SZWFzbUZhaWxzID0gaXBzdGF0W0lQX1NUQVRfRlJBR0RST1BQRURdCisJCSAgICArIGlwc3RhdFtJUF9TVEFUX0ZSQUdUSU1FT1VUXTsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnT0tzLmxvdyA9IGlwc3RhdFtJUF9TVEFUX0ZSQUdNRU5UU10gJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdPS3MuaGlnaCA9IGlwc3RhdFtJUF9TVEFUX0ZSQUdNRU5UU10gPj4gMzI7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0ZhaWxzLmxvdyA9IGlwc3RhdFtJUF9TVEFUX0NBTlRGUkFHXSAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0ZhaWxzLmhpZ2ggPSBpcHN0YXRbSVBfU1RBVF9DQU5URlJBR10gPj4gMzI7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0NyZWF0ZXMubG93ID0gaXBzdGF0W0lQX1NUQVRfT0ZSQUdNRU5UU10gJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdDcmVhdGVzLmhpZ2ggPSBpcHN0YXRbSVBfU1RBVF9PRlJBR01FTlRTXSA+PiAzMjsKKworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTlJFQ0VJVkVTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTkhEUkVSUk9SU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5BRERSRVJST1JTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZPUldEQVRBR1JBTVNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOVU5LTk9XTlBST1RPU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5ESVNDQVJEU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkRFTElWRVJTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVFJFUVVFU1RTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVERJU0NBUkRTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE5PUk9VVEVTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTVJFUURTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTU9LU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfUkVBU01GQUlMU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHT0tTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdGQUlMU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHQ1JFQVRFU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfRElTQ09OVElOVUlUWVRJTUVdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFRlJFU0hSQVRFXSA9IDE7CisKKyAgICAvKgorICAgICAqIGFkZCB0byBjb250YWluZXIKKyAgICAgKi8KKyAgICBpZiAoQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVudHJ5KSA8IDApCisgICAgeworCXNubXBfbG9nKExPR19FUlIsICJlcnJvciB3aXRoIHN5c3RlbXN0YXRzX3Y0OiBpbnNlcnQgaW50byBjb250YWluZXIgZmFpbGVkLlxuIik7CisJbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfZW50cnlfZnJlZShlbnRyeSk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKworI2lmIGRlZmluZWQgKE5FVFNOTVBfRU5BQkxFX0lQVjYpCisKK3N0YXRpYyBpbnQKK19zeXN0ZW1zdGF0c192Nl9sb2FkX3N5c3RlbXN0YXRzKG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIsIHVfaW50IGxvYWRfZmxhZ3MpCit7CisgICAgbmV0c25tcF9zeXN0ZW1zdGF0c19lbnRyeSAqZW50cnkgPSBOVUxMOworICAgIHVpbnQ2NF90IGlwc3RhdFtJUDZfTlNUQVRTXTsKKyAgICBzaXplX3QgbGVuID0gc2l6ZW9mKGlwc3RhdCk7CisKKyAgICBpZiAoc3lzY3RsYnluYW1lKCJuZXQuaW5ldDYuaXA2LnN0YXRzIiwgJmlwc3RhdCwgJmxlbiwgTlVMTCwgMCkgPCAwKSB7CisJTkVUU05NUF9MT0dPTkNFKChMT0dfRVJSLCAiQ2Fubm90IHN5c2N0bGJ5bmFtZSBuZXQuaW5ldDYuaXA2LnN0YXRzXG4iKSk7CisJcmV0dXJuIC0yOworICAgIH0KKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHM6Y29udGFpbmVyOmFyY2giLCAibG9hZCB2NiAoZmxhZ3MgJXgpXG4iLAorICAgICAgICAgICAgICAgIGxvYWRfZmxhZ3MpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KGNvbnRhaW5lciAhPSBOVUxMKTsgLyogbG9hZCBmdW5jdGlvbiBzaG91bGRhIGNoZWNrZWQgdGhpcyAqLworCisgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19lbnRyeV9jcmVhdGUoMiwgMCwKKwkJImlwU3lzdGVtU3RhdHNUYWJsZS5pcHY2Iik7CisgICAgaWYoTlVMTCA9PSBlbnRyeSkgeworCXNubXBfbG9nKExPR19FUlIsICJzeXN0ZW1zdGF0c192Nl9sb2FkX3N5c3RlbXN0YXRzOiBjYW5ub3QgY3JlYXRlIGVudHJ5XG4iKTsKKwluZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19jb250YWluZXJfZnJlZShjb250YWluZXIsCisJCQkJCQkgIE5FVFNOTVBfQUNDRVNTX1NZU1RFTVNUQVRTX0ZSRUVfTk9GTEFHUyk7CisJcmV0dXJuIC0zOworICAgIH0KKworICAgIC8qCisgICAgICogT0sgLSB3ZSd2ZSBub3cgZ290IChvciBjcmVhdGVkKSB0aGUgZGF0YSBzdHJ1Y3R1cmUgZm9yCisgICAgICogICAgICB0aGlzIHN5c3RlbXN0YXRzLCBpbmNsdWRpbmcgYW55ICJzdGF0aWMiIGluZm9ybWF0aW9uLgorICAgICAqLworCisgICAgZW50cnktPnN0YXRzLkhDSW5SZWNlaXZlcy5sb3cgPSBpcHN0YXRbSVA2X1NUQVRfVE9UQUxdICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENJblJlY2VpdmVzLmhpZ2ggPSBpcHN0YXRbSVA2X1NUQVRfVE9UQUxdID4+IDMyOworICAgIGVudHJ5LT5zdGF0cy5JbkhkckVycm9ycyA9IGlwc3RhdFtJUDZfU1RBVF9CQURPUFRJT05TXQorCQkgICAgKyBpcHN0YXRbSVA2X1NUQVRfVE9PU0hPUlRdICsgaXBzdGF0W0lQNl9TVEFUX1RPT1NNQUxMXQorCQkgICAgKyBpcHN0YXRbSVA2X1NUQVRfVE9PTUFOWUhEUl0gKyBpcHN0YXRbSVA2X1NUQVRfRVhUSERSVE9PTE9OR107CisgICAgZW50cnktPnN0YXRzLkluQWRkckVycm9ycyA9IGlwc3RhdFtJUDZfU1RBVF9DQU5URk9SV0FSRF07CisgICAgZW50cnktPnN0YXRzLkhDT3V0Rm9yd0RhdGFncmFtcy5sb3cgPSBpcHN0YXRbSVA2X1NUQVRfRk9SV0FSRF0gJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dEZvcndEYXRhZ3JhbXMuaGlnaCA9IGlwc3RhdFtJUDZfU1RBVF9GT1JXQVJEXSA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuSW5EaXNjYXJkcyA9IGlwc3RhdFtJUDZfU1RBVF9GUkFHRFJPUFBFRF07CisgICAgZW50cnktPnN0YXRzLkhDSW5EZWxpdmVycy5sb3cgPSBpcHN0YXRbSVA2X1NUQVRfREVMSVZFUkVEXSAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDSW5EZWxpdmVycy5oaWdoID0gaXBzdGF0W0lQNl9TVEFUX0RFTElWRVJFRF0gPj4gMzI7CisgICAgZW50cnktPnN0YXRzLkhDT3V0UmVxdWVzdHMubG93ID0gaXBzdGF0W0lQNl9TVEFUX0xPQ0FMT1VUXSAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0UmVxdWVzdHMuaGlnaCA9IGlwc3RhdFtJUDZfU1RBVF9MT0NBTE9VVF0gPj4gMzI7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RGlzY2FyZHMubG93ID0gaXBzdGF0W0lQNl9TVEFUX09EUk9QUEVEXSAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RGlzY2FyZHMuaGlnaCA9IGlwc3RhdFtJUDZfU1RBVF9PRFJPUFBFRF0gPj4gMzI7CisgICAgZW50cnktPnN0YXRzLkhDT3V0Tm9Sb3V0ZXMubG93ID0gaXBzdGF0W0lQNl9TVEFUX05PR0lGXSAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0Tm9Sb3V0ZXMuaGlnaCA9IGlwc3RhdFtJUDZfU1RBVF9OT0dJRl0gPj4gMzI7CisgICAgLyogZW50cnktPnN0YXRzLiA9IHNjYW5fdmFsc1sxMl07IC8gKiBSZWFzbVRpbWVvdXQgKi8KKyAgICBlbnRyeS0+c3RhdHMuUmVhc21SZXFkcyA9IGlwc3RhdFtJUDZfU1RBVF9GUkFHTUVOVFNdOworICAgIGVudHJ5LT5zdGF0cy5SZWFzbU9LcyA9IGlwc3RhdFtJUDZfU1RBVF9SRUFTU0VNQkxFRF07CisgICAgZW50cnktPnN0YXRzLlJlYXNtRmFpbHMgPSBpcHN0YXRbSVA2X1NUQVRfRlJBR0RST1BQRURdCisJCSAgICArIGlwc3RhdFtJUDZfU1RBVF9GUkFHVElNRU9VVF07CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ09Lcy5sb3cgPSBpcHN0YXRbSVA2X1NUQVRfRlJBR01FTlRTXSAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ09Lcy5oaWdoID0gaXBzdGF0W0lQNl9TVEFUX0ZSQUdNRU5UU10gPj4gMzI7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0ZhaWxzLmxvdyA9IGlwc3RhdFtJUDZfU1RBVF9DQU5URlJBR10gJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdGYWlscy5oaWdoID0gaXBzdGF0W0lQNl9TVEFUX0NBTlRGUkFHXSA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnQ3JlYXRlcy5sb3cgPSBpcHN0YXRbSVA2X1NUQVRfT0ZSQUdNRU5UU10gJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdDcmVhdGVzLmhpZ2ggPSBpcHN0YXRbSVA2X1NUQVRfT0ZSQUdNRU5UU10gPj4gMzI7CisKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5SRUNFSVZFU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5IRFJFUlJPUlNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOQUREUkVSUk9SU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGT1JXREFUQUdSQU1TXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTkRJU0NBUkRTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOREVMSVZFUlNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUUkVRVUVTVFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURElTQ0FSRFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUTk9ST1VURVNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNUkVRRFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNT0tTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTUZBSUxTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdPS1NdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR0ZBSUxTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdDUkVBVEVTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9ESVNDT05USU5VSVRZVElNRV0gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfUkVGUkVTSFJBVEVdID0gMTsKKworICAgIC8qCisgICAgICogYWRkIHRvIGNvbnRhaW5lcgorICAgICAqLworICAgIGlmIChDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpIDwgMCkKKyAgICB7CisJc25tcF9sb2coTE9HX0VSUiwgInN5c3RlbXN0YXRzX3Y2X2xvYWRfc3lzdGVtc3RhdHM6IGNhbm5vdCBpbnNlcnQgZW50cnlcbiIpOworCURFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHM6Y29udGFpbmVyIiwiZXJyb3Igd2l0aCBzeXN0ZW1zdGF0c19lbnRyeTogaW5zZXJ0IGludG8gY29udGFpbmVyIGZhaWxlZC5cbiIpKTsKKwluZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19lbnRyeV9mcmVlKGVudHJ5KTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworCisvKgorICogbG9hZCBpcElmU3RhdHNUYWJsZSBmb3IgaXB2NiBlbnRyaWVzCisgKi8KK3N0YXRpYyBpbnQgCitfc3lzdGVtc3RhdHNfdjZfbG9hZF9pZnN0YXRzKG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIsIHVfaW50IGxvYWRfZmxhZ3MpCit7CisgICAgc3RydWN0IGlmX25hbWVpbmRleCAqaWZzID0gaWZfbmFtZWluZGV4KCk7CisgICAgaW50IGl4OworICAgIGludCByYyA9IDA7CisKKyAgICBmb3IgKGl4ID0gMDsgaWZzW2l4XS5pZl9pbmRleDsgaXgrKykgeworCXN0cnVjdCBpbjZfaWZzdGF0ICppZnM2OworCXN0cnVjdCBpbjZfaWZyZXEgaWZyOworCWludCBzOworCisJbWVtc2V0KCZpZnIsIDAsIHNpemVvZihpZnIpKTsKKwlzdHJuY3B5KGlmci5pZnJfbmFtZSwgaWZzW2l4XS5pZl9uYW1lLCBzaXplb2YoaWZyLmlmcl9uYW1lKS0xKTsKKwlpZiAoKHMgPSBzb2NrZXQoQUZfSU5FVDYsIFNPQ0tfREdSQU0sIDApKSA8IDApIHsKKwkgICAgcmMgPSAtMTsKKwkgICAgYnJlYWs7CisJfQorCWlmIChpb2N0bChzLCBTSU9DR0lGU1RBVF9JTjYsIChjYWRkcl90KSZpZnIpIDwgMCkgeworCSAgICByYyA9IC0yOworCSAgICBjbG9zZShzKTsKKwkgICAgYnJlYWs7CisJfQorCWNsb3NlKHMpOworCWlmczYgPSAmaWZyLmlmcl9pZnJ1LmlmcnVfc3RhdDsKKyAgICB9CisgICAgaWZfZnJlZW5hbWVpbmRleChpZnMpOworICAgIHJldHVybiByYzsKK30KKyNlbmRpZgorCisjZWxzZQorCitzdGF0aWMgaW50Citfc3lzdGVtc3RhdHNfdjQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICBuZXRzbm1wX3N5c3RlbXN0YXRzX2VudHJ5ICplbnRyeSA9IE5VTEw7CisjaWZkZWYgX19EcmFnb25GbHlfXworICAgIHNpemVfdCBsZW4gPSBuY3B1cypzaXplb2Yoc3RydWN0IGlwX3N0YXRzKTsKKyAgICBzdHJ1Y3QgaXBfc3RhdHMgKmlwc3RhdCA9IG1hbGxvYyhsZW4pOworICAgIGludCBjOworI2Vsc2UKKyAgICBzaXplX3QgbGVuID0gc2l6ZW9mKHN0cnVjdCBpcHN0YXQpOworICAgIHN0cnVjdCBpcHN0YXQgKmlwc3RhdCA9IG1hbGxvYyhsZW4pOworI2VuZGlmCisgICAgaW50IG1pYltdID0geyBDVExfTkVULCBQRl9JTkVULCBJUFBST1RPX0lQLCBJUENUTF9TVEFUUyB9OworCisgICAgaWYgKHN5c2N0bChtaWIsIHNpemVvZihtaWIpIC8gc2l6ZW9mKG1pYlswXSksIGlwc3RhdCwgJmxlbiwgTlVMTCwgMCkgPT0gLTEpIHsKKwlzbm1wX2xvZ19wZXJyb3IoIkNhbm5vdCBzeXNjdGxieW5hbWUgbmV0LmluZXQuaXAuc3RhdHMiKTsKKwlmcmVlKGlwc3RhdCk7CisJcmV0dXJuIC0yOworICAgIH0KKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHM6Y29udGFpbmVyOmFyY2giLCAibG9hZCB2NCAoZmxhZ3MgJXgpXG4iLAorICAgICAgICAgICAgICAgIGxvYWRfZmxhZ3MpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KGNvbnRhaW5lciAhPSBOVUxMKTsgLyogbG9hZCBmdW5jdGlvbiBzaG91bGRhIGNoZWNrZWQgdGhpcyAqLworCisgICAgaWYgKGxvYWRfZmxhZ3MgJiBORVRTTk1QX0FDQ0VTU19TWVNURU1TVEFUU19MT0FEX0lGVEFCTEUpIHsKKyAgICAgICAgLyogd2UgZG8gbm90IHN1cHBvcnQgaXBJZlN0YXRzVGFibGUgZm9yIGlwdjQgKi8KKwlmcmVlKGlwc3RhdCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGVudHJ5ID0gbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfZW50cnlfY3JlYXRlKDEsIDAsCisJCSJpcFN5c3RlbVN0YXRzVGFibGUuaXB2NCIpOworICAgIGlmKE5VTEwgPT0gZW50cnkpIHsKKwluZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19jb250YWluZXJfZnJlZShjb250YWluZXIsCisJCQkJCQkgIE5FVFNOTVBfQUNDRVNTX1NZU1RFTVNUQVRTX0ZSRUVfTk9GTEFHUyk7CisJZnJlZShpcHN0YXQpOworCXJldHVybiAtMzsKKyAgICB9CisKKyAgICAvKgorICAgICAqIE9LIC0gd2UndmUgbm93IGdvdCAob3IgY3JlYXRlZCkgdGhlIGRhdGEgc3RydWN0dXJlIGZvcgorICAgICAqICAgICAgdGhpcyBzeXN0ZW1zdGF0cywgaW5jbHVkaW5nIGFueSAic3RhdGljIiBpbmZvcm1hdGlvbi4KKyAgICAgKiBOb3cgcGFyc2UgdGhlIHJlc3Qgb2YgdGhlIGxpbmUgKGkuZS4gc3RhcnRpbmcgZnJvbSAnc3RhdHMnKQorICAgICAqICAgICAgdG8gZXh0cmFjdCB0aGUgcmVsZXZhbnQgc3RhdGlzdGljcywgYW5kIHBvcHVsYXRlCisgICAgICogICAgICBkYXRhIHN0cnVjdHVyZSBhY2NvcmRpbmdseS4KKyAgICAgKi8KKworI2lmZGVmIGRyYWdvbmZseQorICAgIGZvciAoYyA9IDE7IGMgPCBuY3B1czsgYysrKSB7CisJaW50IGksIG4gPSBzaXplb2Yoc3RydWN0IGlwX3N0YXRzKS9zaXplb2YodV9sb25nKTsKKwl1X2xvbmcgKnVwID0gKHVfbG9uZyAqKWlwc3RhdDsKKwl1X2xvbmcgKmNwID0gKHVfbG9uZyAqKShpcHN0YXQrYyk7CisJZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworCSAgICAqdXAgKz0gKmNwOworCSAgICB1cCsrOworCSAgICBjcCsrOworCX0KKyAgICB9CisjZW5kaWYKKyAgICBlbnRyeS0+c3RhdHMuSENJblJlY2VpdmVzLmxvdyA9IGlwc3RhdC0+aXBzX3RvdGFsICYgMHhmZmZmZmZmZjsKKyNpZm5kZWYgZGFyd2luCisgICAgZW50cnktPnN0YXRzLkhDSW5SZWNlaXZlcy5oaWdoID0gaXBzdGF0LT5pcHNfdG90YWwgPj4gMzI7CisjZW5kaWYKKyAgICBlbnRyeS0+c3RhdHMuSW5IZHJFcnJvcnMgPSBpcHN0YXQtPmlwc19iYWRzdW0gKyBpcHN0YXQtPmlwc190b29zaG9ydAorCQkgICAgICAgICAgICArIGlwc3RhdC0+aXBzX3Rvb3NtYWxsICsgaXBzdGF0LT5pcHNfYmFkaGxlbgorCQkJICAgICsgaXBzdGF0LT5pcHNfYmFkbGVuOworICAgIGVudHJ5LT5zdGF0cy5JbkFkZHJFcnJvcnMgPSBpcHN0YXQtPmlwc19jYW50Zm9yd2FyZDsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGb3J3RGF0YWdyYW1zLmxvdyA9IGlwc3RhdC0+aXBzX2ZvcndhcmQgJiAweGZmZmZmZmZmOworI2lmbmRlZiBkYXJ3aW4KKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGb3J3RGF0YWdyYW1zLmhpZ2ggPSBpcHN0YXQtPmlwc19mb3J3YXJkID4+IDMyOworI2VuZGlmCisgICAgZW50cnktPnN0YXRzLkluVW5rbm93blByb3RvcyA9IGlwc3RhdC0+aXBzX25vcHJvdG87CisgICAgZW50cnktPnN0YXRzLkluRGlzY2FyZHMgPSBpcHN0YXQtPmlwc19mcmFnZHJvcHBlZDsKKyAgICBlbnRyeS0+c3RhdHMuSENJbkRlbGl2ZXJzLmxvdyA9IGlwc3RhdC0+aXBzX2RlbGl2ZXJlZCAmIDB4ZmZmZmZmZmY7CisjaWZuZGVmIGRhcndpbgorICAgIGVudHJ5LT5zdGF0cy5IQ0luRGVsaXZlcnMuaGlnaCA9IGlwc3RhdC0+aXBzX2RlbGl2ZXJlZCA+PiAzMjsKKyNlbmRpZgorICAgIGVudHJ5LT5zdGF0cy5IQ091dFJlcXVlc3RzLmxvdyA9IGlwc3RhdC0+aXBzX2xvY2Fsb3V0ICYgMHhmZmZmZmZmZjsKKyNpZm5kZWYgZGFyd2luCisgICAgZW50cnktPnN0YXRzLkhDT3V0UmVxdWVzdHMuaGlnaCA9IGlwc3RhdC0+aXBzX2xvY2Fsb3V0ID4+IDMyOworI2VuZGlmCisgICAgZW50cnktPnN0YXRzLkhDT3V0RGlzY2FyZHMubG93ID0gaXBzdGF0LT5pcHNfb2Ryb3BwZWQgJiAweGZmZmZmZmZmOworI2lmbmRlZiBkYXJ3aW4KKyAgICBlbnRyeS0+c3RhdHMuSENPdXREaXNjYXJkcy5oaWdoID0gaXBzdGF0LT5pcHNfb2Ryb3BwZWQgPj4gMzI7CisjZW5kaWYKKyAgICBlbnRyeS0+c3RhdHMuSENPdXROb1JvdXRlcy5sb3cgPSBpcHN0YXQtPmlwc19ub2dpZiAmIDB4ZmZmZmZmZmY7CisjaWZuZGVmIGRhcndpbgorICAgIGVudHJ5LT5zdGF0cy5IQ091dE5vUm91dGVzLmhpZ2ggPSBpcHN0YXQtPmlwc19ub2dpZiA+PiAzMjsKKyNlbmRpZgorICAgIC8qIGVudHJ5LT5zdGF0cy4gPSBzY2FuX3ZhbHNbMTJdOyAvICogUmVhc21UaW1lb3V0ICovCisgICAgZW50cnktPnN0YXRzLlJlYXNtUmVxZHMgPSBpcHN0YXQtPmlwc19mcmFnbWVudHM7CisgICAgZW50cnktPnN0YXRzLlJlYXNtT0tzID0gaXBzdGF0LT5pcHNfcmVhc3NlbWJsZWQ7CisgICAgZW50cnktPnN0YXRzLlJlYXNtRmFpbHMgPSBpcHN0YXQtPmlwc19mcmFnZHJvcHBlZCArIGlwc3RhdC0+aXBzX2ZyYWd0aW1lb3V0OworICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdPS3MubG93ID0gaXBzdGF0LT5pcHNfZnJhZ21lbnRzICYgMHhmZmZmZmZmZjsKKyNpZm5kZWYgZGFyd2luCisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ09Lcy5oaWdoID0gaXBzdGF0LT5pcHNfZnJhZ21lbnRzID4+IDMyOworI2VuZGlmCisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0ZhaWxzLmxvdyA9IGlwc3RhdC0+aXBzX2NhbnRmcmFnICYgMHhmZmZmZmZmZjsKKyNpZm5kZWYgZGFyd2luCisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0ZhaWxzLmhpZ2ggPSBpcHN0YXQtPmlwc19jYW50ZnJhZyA+PiAzMjsKKyNlbmRpZgorICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdDcmVhdGVzLmxvdyA9IGlwc3RhdC0+aXBzX29mcmFnbWVudHMgJiAweGZmZmZmZmZmOworI2lmbmRlZiBkYXJ3aW4KKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnQ3JlYXRlcy5oaWdoID0gaXBzdGF0LT5pcHNfb2ZyYWdtZW50cyA+PiAzMjsKKyNlbmRpZgorCisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOUkVDRUlWRVNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOSERSRVJST1JTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTkFERFJFUlJPUlNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURk9SV0RBVEFHUkFNU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5VTktOT1dOUFJPVE9TXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTkRJU0NBUkRTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOREVMSVZFUlNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUUkVRVUVTVFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURElTQ0FSRFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUTk9ST1VURVNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNUkVRRFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNT0tTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTUZBSUxTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdPS1NdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR0ZBSUxTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdDUkVBVEVTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9ESVNDT05USU5VSVRZVElNRV0gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfUkVGUkVTSFJBVEVdID0gMTsKKworICAgIC8qCisgICAgICogYWRkIHRvIGNvbnRhaW5lcgorICAgICAqLworICAgIGlmIChDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpIDwgMCkKKyAgICB7CisJREVCVUdNU0dUTCgoImFjY2VzczpzeXN0ZW1zdGF0czpjb250YWluZXIiLCJlcnJvciB3aXRoIHN5c3RlbXN0YXRzX2VudHJ5OiBpbnNlcnQgaW50byBjb250YWluZXIgZmFpbGVkLlxuIikpOworCW5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2ZyZWUoZW50cnkpOworICAgIH0KKworICAgIGZyZWUoaXBzdGF0KTsKKyAgICByZXR1cm4gMDsKK30KKworCisjaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikKKworLyoKKyAqIGxvYWQgaXBTeXN0ZW1TdGF0c1RhYmxlIGZvciBpcHY2IGVudHJpZXMKKyAqLworc3RhdGljIGludCAKK19zeXN0ZW1zdGF0c192Nl9sb2FkX3N5c3RlbXN0YXRzKG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIsIHVfaW50IGxvYWRfZmxhZ3MpCit7CisgICAgc3RydWN0IGlwNnN0YXQgaXA2c3RhdDsKKyAgICBpbnQgbWliW10gPSB7IENUTF9ORVQsIEFGX0lORVQ2LCBJUFBST1RPX0lQVjYsIElQVjZDVExfU1RBVFMgfTsKKyAgICBzaXplX3QgbGVuID0gc2l6ZW9mKGlwNnN0YXQpOworICAgIG5ldHNubXBfc3lzdGVtc3RhdHNfZW50cnkgKmVudHJ5ID0gTlVMTDsKKworICAgIGlmIChzeXNjdGwobWliLCBzaXplb2YobWliKSAvIHNpemVvZihtaWJbMF0pLCAmaXA2c3RhdCwgJmxlbiwgTlVMTCwgMCkgPT0gLTEpIHsKKyAgCU5FVFNOTVBfTE9HT05DRSgoTE9HX0VSUiwgIkNhbm5vdCBzeXNjdGwoQ1RMX05FVCwgQUZfSU5FVDYsIElQUFJPVE9fSVBWNiwgSVBWNkNUTF9TVEFUUylcbiIpKTsKKwlyZXR1cm4gLTE7CisgICAgfQorICAgIAorICAgIGVudHJ5ID0gbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfZW50cnlfY3JlYXRlKDIsIDAsCisgICAgICAgICAgICAiaXBTeXN0ZW1TdGF0c1RhYmxlLmlwdjYiKTsKKyAgICBpZihOVUxMID09IGVudHJ5KQorICAgICAgICByZXR1cm4gLTM7CisgICAgCisgICAgZW50cnktPnN0YXRzLkhDSW5SZWNlaXZlcy5sb3cgPSBpcDZzdGF0LmlwNnNfdG90YWwgJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ0luUmVjZWl2ZXMuaGlnaCA9IGlwNnN0YXQuaXA2c190b3RhbCA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5SRUNFSVZFU10gPSAxOworICAgIC8qCisgICAgZW50cnktPnN0YXRzLkhDSW5PY3RldHMubG93ID0gc2Nhbl92YWwgJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ0luT2N0ZXRzLmhpZ2ggPSBzY2FuX3ZhbCAgPj4gMzI7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOT0NURVRTXSA9IDE7CisgICAgKi8KKyAgICBlbnRyeS0+c3RhdHMuSW5IZHJFcnJvcnMgPSBpcDZzdGF0LmlwNnNfYmFkb3B0aW9ucyArIGlwNnN0YXQuaXA2c190b29zaG9ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGlwNnN0YXQuaXA2c190b29zbWFsbCArIGlwNnN0YXQuaXA2c19iYWR2ZXJzCisJCQkgICAgICsgaXA2c3RhdC5pcDZzX3Rvb21hbnloZHI7CisjaWYgSEFWRV9TVFJVQ1RfSVA2U1RBVF9JUDZTX0VYVEhEUlRPT0xPTkcKKyAgICBlbnRyeS0+c3RhdHMuSW5IZHJFcnJvcnMgKz0gaXA2c3RhdC5pcDZzX2V4dGhkcnRvb2xvbmc7CisjZW5kaWYKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOSERSRVJST1JTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLkhDSW5Ob1JvdXRlcy5sb3cgPSBpcDZzdGF0LmlwNnNfY2FudGZvcndhcmQgJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ0luTm9Sb3V0ZXMuaGlnaCA9IGlwNnN0YXQuaXA2c19jYW50Zm9yd2FyZCA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5OT1JPVVRFU10gPSAxOworICAgIC8qCisgICAgZW50cnktPnN0YXRzLmluQWRkckVycm9ycyA9IDA7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTkFERFJFUlJPUlNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSW5Vbmtub3duUHJvdG9zID0gc2Nhbl92YWw7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTlVOS05PV05QUk9UT1NdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSW5UcnVuY2F0ZWRQa3RzID0gc2Nhbl92YWwgICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOVFJVTkNBVEVEUEtUU10gPSAxOworICAgICovCisgICAgZW50cnktPnN0YXRzLkhDSW5Gb3J3RGF0YWdyYW1zLmxvdyA9IGlwNnN0YXQuaXA2c19mb3J3YXJkICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENJbkZvcndEYXRhZ3JhbXMuaGlnaCA9IGlwNnN0YXQuaXA2c19mb3J3YXJkID4+IDMyOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkZPUldEQVRBR1JBTVNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuUmVhc21SZXFkcyA9IGlwNnN0YXQuaXA2c19mcmFnbWVudHM7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTVJFUURTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLlJlYXNtT0tzID0gaXA2c3RhdC5pcDZzX3JlYXNzZW1ibGVkOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfUkVBU01PS1NdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuUmVhc21GYWlscyA9IGlwNnN0YXQuaXA2c19mcmFnZHJvcHBlZCArIGlwNnN0YXQuaXA2c19mcmFndGltZW91dDsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNRkFJTFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSW5EaXNjYXJkcyA9IGlwNnN0YXQuaXA2c19mcmFnZHJvcHBlZDsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lORElTQ0FSRFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSENJbkRlbGl2ZXJzLmxvdyA9IGlwNnN0YXQuaXA2c19kZWxpdmVyZWQgICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENJbkRlbGl2ZXJzLmhpZ2ggPSBpcDZzdGF0LmlwNnNfZGVsaXZlcmVkID4+IDMyOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkRFTElWRVJTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLkhDT3V0UmVxdWVzdHMubG93ID0gaXA2c3RhdC5pcDZzX2xvY2Fsb3V0ICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRSZXF1ZXN0cy5oaWdoID0gaXA2c3RhdC5pcDZzX2xvY2Fsb3V0ID4+IDMyOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRSRVFVRVNUU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5IQ091dE5vUm91dGVzLmxvdyA9IGlwNnN0YXQuaXA2c19ub3JvdXRlICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXROb1JvdXRlcy5oaWdoID0gaXA2c3RhdC5pcDZzX25vcm91dGUgPj4gMzI7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE5PUk9VVEVTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLkhDT3V0Rm9yd0RhdGFncmFtcy5sb3cgPSBpcDZzdGF0LmlwNnNfZm9yd2FyZCAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0Rm9yd0RhdGFncmFtcy5oaWdoID0gaXA2c3RhdC5pcDZzX2ZvcndhcmQgPj4gMzI7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZPUldEQVRBR1JBTVNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXREaXNjYXJkcy5sb3cgPSBpcDZzdGF0LmlwNnNfb2Ryb3BwZWQgJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dERpc2NhcmRzLmhpZ2ggPSBpcDZzdGF0LmlwNnNfb2Ryb3BwZWQgPj4gMzI7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVERJU0NBUkRTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ1JlcWRzLmxvdyA9IChpcDZzdGF0LmlwNnNfZnJhZ21lbnRlZCArIGlwNnN0YXQuaXA2c19jYW50ZnJhZykgJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdSZXFkcy5oaWdoID0gKGlwNnN0YXQuaXA2c19mcmFnbWVudGVkICsgaXA2c3RhdC5pcDZzX2NhbnRmcmFnKSA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR1JFUURTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ09Lcy5sb3cgPSBpcDZzdGF0LmlwNnNfZnJhZ21lbnRlZCAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ09Lcy5oaWdoID0gaXA2c3RhdC5pcDZzX2ZyYWdtZW50ZWQgPj4gMzI7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdPS1NdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnRmFpbHMubG93ID0gaXA2c3RhdC5pcDZzX2NhbnRmcmFnICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnRmFpbHMuaGlnaCA9IGlwNnN0YXQuaXA2c19jYW50ZnJhZyA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR0ZBSUxTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0NyZWF0ZXMubG93ID0gaXA2c3RhdC5pcDZzX29mcmFnbWVudHMgJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdDcmVhdGVzLmhpZ2ggPSBpcDZzdGF0LmlwNnNfb2ZyYWdtZW50cyA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR0NSRUFURVNdID0gMTsKKyAgICAvKgorICAgIGVudHJ5LT5zdGF0cy5IQ091dFRyYW5zbWl0cy5sb3cgPSBzY2FuX3ZhbCAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0VHJhbnNtaXRzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUVFJBTlNNSVRTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLkhDT3V0TWNhc3RPY3RldHMubG93ID0gc2Nhbl92YWwgJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dE1jYXN0T2N0ZXRzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUTUNBU1RPQ1RFVFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSENJbk1jYXN0UGt0cy5sb3cgPSBzY2FuX3ZhbCAgJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ0luTWNhc3RQa3RzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5NQ0FTVFBLVFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSENJbk1jYXN0T2N0ZXRzLmxvdyA9IHNjYW5fdmFsICAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDSW5NY2FzdE9jdGV0cy5oaWdoID0gc2Nhbl92YWwgPj4gMzI7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOTUNBU1RPQ1RFVFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRNY2FzdFBrdHMubG93ID0gc2Nhbl92YWwgJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dE1jYXN0UGt0cy5oaWdoID0gc2Nhbl92YWwgPj4gMzI7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE1DQVNUUEtUU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5IQ091dE9jdGV0cy5sb3cgPSBzY2FuX3ZhbCAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0T2N0ZXRzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUT0NURVRTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLkhDSW5CY2FzdFBrdHMubG93ID0gc2Nhbl92YWwgICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENJbkJjYXN0UGt0cy5oaWdoID0gc2Nhbl92YWwgPj4gMzI7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOQkNBU1RQS1RTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLkhDT3V0QmNhc3RQa3RzLmxvdyA9IHNjYW5fdmFsICAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0QmNhc3RQa3RzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUQkNBU1RQS1RTXSA9IDE7CisgICAgKi8KKworICAgIC8qCisgICAgICogYWRkIHRvIGNvbnRhaW5lcgorICAgICAqLworICAgIGlmIChDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpIDwgMCkgeworCURFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHM6Y29udGFpbmVyIiwiZXJyb3Igd2l0aCBzeXN0ZW1zdGF0c19lbnRyeTogaW5zZXJ0IGludG8gY29udGFpbmVyIGZhaWxlZC5cbiIpKTsKKwluZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19lbnRyeV9mcmVlKGVudHJ5KTsKKyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KKworI2RlZmluZSBERVZfU05NUDZfRElSTkFNRSAgICIvcHJvYy9uZXQvZGV2X3NubXA2IgorI2RlZmluZSBJRklOREVYX0xJTkUgICAgICAgICJpZkluZGV4IgorI2RlZmluZSBERVZfRklMRU5BTUVfTEVOICAgIDY0CisKKy8qCisgKiBsb2FkIGlwSWZTdGF0c1RhYmxlIGZvciBpcHY2IGVudHJpZXMKKyAqLworc3RhdGljIGludCAKK19zeXN0ZW1zdGF0c192Nl9sb2FkX2lmc3RhdHMobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICBESVIgICAgICAgICAgICAqZGV2X3NubXA2X2RpcjsKKyAgICBzdHJ1Y3QgZGlyZW50ICAqZGV2X3NubXA2X2VudHJ5OworICAgIGNoYXIgICAgICAgICAgIGRldl9maWxlbmFtZVtERVZfRklMRU5BTUVfTEVOXTsKKyAgICBGSUxFICAgICAgICAgICAqZGV2aW47CisgICAgY2hhciAgICAgICAgICAgbGluZVsxMDI0XTsKKyAgICBjaGFyICAgICAgICAgICAqc3RhcnQgPSBsaW5lOworICAgIGludCAgICAgICAgICAgIHJjOworICAgIGNoYXIgICAgICAgICAgICpzY2FuX3N0cjsKKyAgICB1aW50bWF4X3QgICAgICAgc2Nhbl92YWw7CisgICAgbmV0c25tcF9zeXN0ZW1zdGF0c19lbnRyeSAqZW50cnkgPSBOVUxMOworICAgICAgICAgICAgCisgICAgLyoKKyAgICAgKiB0cnkgdG8gb3BlbiAvcHJvYy9uZXQvZGV2X3NubXA2IGRpcmVjdG9yeS4gSWYgd2UgY2FuJ3QsIHRoYXQnIG9rIC0KKyAgICAgKiBtYXliZSBpdCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBjdXJyZW50IHJ1bm5pbmcga2VybmVsLgorICAgICAqLworICAgIGlmICgoZGV2X3NubXA2X2RpciA9IG9wZW5kaXIoREVWX1NOTVA2X0RJUk5BTUUpKSA9PSBOVUxMKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aWZzdGF0cyIsCisgICAgICAgICJGYWlsZWQgdG8gbG9hZCBJUHY2IElmU3RhdHMgVGFibGUgKGxpbnV4KVxuIikpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgCisgICAgLyoKKyAgICAgKiBSZWFkIGVhY2ggcGVyIGludGVyZmFjZSBzdGF0aXN0aWNzIHByb2MgZmlsZQorICAgICAqLworICAgIHJjID0gMDsKKyAgICB3aGlsZSAoKGRldl9zbm1wNl9lbnRyeSA9IHJlYWRkaXIoZGV2X3NubXA2X2RpcikpICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKGRldl9zbm1wNl9lbnRyeS0+ZF9uYW1lWzBdID09ICcuJykKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgIAorICAgICAgICBpZiAoc25wcmludGYoZGV2X2ZpbGVuYW1lLCBERVZfRklMRU5BTUVfTEVOLCAiJXMvJXMiLCBERVZfU05NUDZfRElSTkFNRSwKKyAgICAgICAgICAgICAgICBkZXZfc25tcDZfZW50cnktPmRfbmFtZSkgPiBERVZfRklMRU5BTUVfTEVOKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiSW50ZXJmYWNlIG5hbWUgJXMgaXMgdG9vIGxvbmdcbiIsCisgICAgICAgICAgICAgICAgICAgIGRldl9zbm1wNl9lbnRyeS0+ZF9uYW1lKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChOVUxMID09IChkZXZpbiA9IGZvcGVuKGRldl9maWxlbmFtZSwgInIiKSkpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJGYWlsZWQgdG8gb3BlbiAlc1xuIiwgZGV2X2ZpbGVuYW1lKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgCisgICAgICAgIC8qCisgICAgICAgICAqIElmIGEgc3RhdCBmaWxlIG5hbWUgaXMgbWFkZSBvZiBkaWdpdHMsIHRoZSBuYW1lIGlzIGludGVyZmFjZSBpbmRleC4KKyAgICAgICAgICogSWYgaXQgaXMgYW4gaW50ZXJmYWNlIG5hbWUsIHRoZSBmaWxlIGluY2x1ZGVzIGEgbGluZSBsYWJlbGVkIGlmSW5kZXguCisgICAgICAgICAqLworICAgICAgICBpZiAoaXNkaWdpdChkZXZfc25tcDZfZW50cnktPmRfbmFtZVswXSkpIHsKKyAgICAgICAgICAgIHNjYW5fdmFsID0gc3RydG91bGwoZGV2X3NubXA2X2VudHJ5LT5kX25hbWUsIE5VTEwsIDApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKE5VTEwgPT0gKHN0YXJ0ID0gZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBkZXZpbikpKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIiVzIGRvZXNuJ3QgaW5jbHVkZSBhbnkgbGluZXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBkZXZfZmlsZW5hbWUpOworICAgICAgICAgICAgICAgIGZjbG9zZShkZXZpbik7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICBpZiAoMCAhPSBzdHJuY21wKHN0YXJ0LCBJRklOREVYX0xJTkUsIDcpKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIiVzIGRvZXNuJ3QgaW5jbHVkZSBpZkluZGV4IGxpbmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgZGV2X2ZpbGVuYW1lKTsKKyAgICAgICAgICAgICAgICBmY2xvc2UoZGV2aW4pOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzY2FuX3N0ciA9IHN0cnJjaHIobGluZSwgJyAnKTsKKyAgICAgICAgICAgIGlmIChOVUxMID09IHNjYW5fc3RyKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIiVzIGlzIHdyb25nIGZvcm1hdCIsIGRldl9maWxlbmFtZSk7CisgICAgICAgICAgICAgICAgZmNsb3NlKGRldmluKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNjYW5fdmFsID0gc3RydG91bGwoc2Nhbl9zdHIsIE5VTEwsIDApOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBlbnRyeSA9IG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2NyZWF0ZSgyLCBzY2FuX3ZhbCwKKyAgICAgICAgICAgICAgICAiaXBJZlN0YXRzVGFibGUuaXB2NiIpOworICAgICAgICBpZihOVUxMID09IGVudHJ5KSB7CisgICAgICAgICAgICBmY2xvc2UoZGV2aW4pOworICAgICAgICAgICAgY2xvc2VkaXIoZGV2X3NubXA2X2Rpcik7CisgICAgICAgICAgICByZXR1cm4gLTM7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIF9zeXN0ZW1zdGF0c192Nl9sb2FkX2ZpbGUoZW50cnksIGRldmluKTsKKyAgICAgICAgQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVudHJ5KTsKKyAgICAgICAgZmNsb3NlKGRldmluKTsKKyAgICB9CisgICAgY2xvc2VkaXIoZGV2X3NubXA2X2Rpcik7CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYgLyogTkVUU05NUF9FTkFCTEVfSVBWNiAqLworI2VuZGlmCisKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisvKgorICogQmFzZWQgb24gbG9hZF9mbGFncywgbG9hZCBpcFN5c3RlbVN0YXRzVGFibGUgb3IgaXBJZlN0YXRzVGFibGUgZm9yIGlwdjYgZW50cmllcy4gCisgKi8KK3N0YXRpYyBpbnQKK19zeXN0ZW1zdGF0c192NihuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLCB1X2ludCBsb2FkX2ZsYWdzKQoreworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHM6Y29udGFpbmVyOmFyY2giLCAibG9hZCB2NiAoZmxhZ3MgJXUpXG4iLAorICAgICAgICAgICAgICAgIGxvYWRfZmxhZ3MpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KGNvbnRhaW5lciAhPSBOVUxMKTsgLyogbG9hZCBmdW5jdGlvbiBzaG91bGRhIGNoZWNrZWQgdGhpcyAqLworCisgICAgaWYgKGxvYWRfZmxhZ3MgJiBORVRTTk1QX0FDQ0VTU19TWVNURU1TVEFUU19MT0FEX0lGVEFCTEUpIHsKKyAgICAgICAgLyogbG9hZCBpcElmU3RhdHNUYWJsZSAqLworICAgICAgICByZXR1cm4gX3N5c3RlbXN0YXRzX3Y2X2xvYWRfaWZzdGF0cyhjb250YWluZXIsIGxvYWRfZmxhZ3MpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIGxvYWQgaXBTeXN0ZW1TdGF0c1RhYmxlICovCisgICAgICAgIHJldHVybiBfc3lzdGVtc3RhdHNfdjZfbG9hZF9zeXN0ZW1zdGF0cyhjb250YWluZXIsIGxvYWRfZmxhZ3MpOworICAgIH0KK30KKyNlbmRpZiAvKiBORVRTTk1QX0VOQUJMRV9JUFY2ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlLmgKaW5kZXggODVhODczOC4uNzNhZmFlNiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuaApAQCAtMTU1LDkgKzE1NSw2IEBACiAgICAgICAgIGludCAgICAgICAgICAgICBpbmV0TmV0VG9NZWRpYVJvd1N0YXR1cywKICAgICAgICAgICAgIGluZXROZXRUb01lZGlhUm93U3RhdHVzX3VuZG87CiAKLSAgICAgICAgLyogZmxhZywgaWYgdGhlIHJvdyB3YXMgcHJlc2VudCBpbiBsYXN0IHJlYWQgZnJvbSBvcGVyYXRpbmcgc3lzdGVtICovCi0gICAgICAgIGludCB2YWxpZDsKLQogICAgICAgICAvKgogICAgICAgICAgKiBzdG9yYWdlIGZvciBmdXR1cmUgZXhwYW5zaW9uCiAgICAgICAgICAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9kYXRhX2FjY2Vzcy5jCmluZGV4IDhmZGRiNzAuLjFlYzhjYzYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfZGF0YV9hY2Nlc3MuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTgsNiArOCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC0xOSw2ICsyMCw5IEBACiAKICNpbmNsdWRlICJpbmV0TmV0VG9NZWRpYVRhYmxlX2RhdGFfYWNjZXNzLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNvbnRhaW5lcl9saWZvKQorc3RhdGljIG5ldHNubXBfYXJwX2FjY2VzcyAqIGFycF9hY2Nlc3MgPSBOVUxMOworCiAvKiogQGluZ3JvdXAgaW50ZXJmYWNlIAogICogQGFkZHRvZ3JvdXAgZGF0YV9hY2Nlc3MgZGF0YV9hY2Nlc3M6IFJvdXRpbmVzIHRvIGFjY2VzcyBkYXRhCiAgKgpAQCAtNzEsNiArNzUsMTIzIEBACiAgKi8KIAogLyoqCisgKiBjaGVjayBlbnRyeSBmb3IgdXBkYXRlCisgKi8KK3N0YXRpYyB2b2lkCitfYWRkX29yX3VwZGF0ZV9hcnBfZW50cnkobmV0c25tcF9hcnBfZW50cnkgKmFycF9lbnRyeSwKKyAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcikKK3sKKyAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHgsICpvbGQ7CisgICAgaW50ICAgICAgICAgICAgIGluZXRBZGRyZXNzVHlwZTsKKworICAgIERFQlVHVFJBQ0U7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGFycF9lbnRyeSk7CisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBjb250YWluZXIpOworCisgICAgLyoKKyAgICAgKiBjb252ZXJ0IHRoZSBhZGRyIGxlbiB0byBhbiBpbmV0QWRkcmVzc1R5cGUKKyAgICAgKi8KKyAgICBzd2l0Y2ggKGFycF9lbnRyeS0+YXJwX2lwYWRkcmVzc19sZW4pIHsKKyAgICBjYXNlIDQ6CisgICAgICAgIGluZXRBZGRyZXNzVHlwZSA9IElORVRBRERSRVNTVFlQRV9JUFY0OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgMTY6CisgICAgICAgIGluZXRBZGRyZXNzVHlwZSA9IElORVRBRERSRVNTVFlQRV9JUFY2OworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJpbmV0TmV0VG9NZWRpYVRhYmxlOl9hZGRfb3JfdXBkYXRlX2FycGVudHJ5OiB1bnN1cHBvcnRlZCBhZGRyZXNzIHR5cGUsIGxlbiA9ICVkXG4iLCBhcnBfZW50cnktPmFycF9pcGFkZHJlc3NfbGVuKTsKKyAgICAgICAgbmV0c25tcF9hY2Nlc3NfYXJwX2VudHJ5X2ZyZWUoYXJwX2VudHJ5KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qCisgICAgICogYWxsb2NhdGUgYW4gcm93IGNvbnRleHQgYW5kIHNldCB0aGUgaW5kZXgoZXMpLCB0aGVuIHRyeSB0byBmaW5kIGl0IGluCisgICAgICogdGhlIGNhY2hlLgorICAgICAqLworICAgIHJvd3JlcV9jdHggPSBpbmV0TmV0VG9NZWRpYVRhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHgoYXJwX2VudHJ5LCBOVUxMKTsKKyAgICBpZiAoKE5VTEwgIT0gcm93cmVxX2N0eCkgJiYKKyAgICAgICAgKE1GRF9TVUNDRVNTID09IGluZXROZXRUb01lZGlhVGFibGVfaW5kZXhlc19zZXQKKyAgICAgICAgIChyb3dyZXFfY3R4LCByb3dyZXFfY3R4LT5kYXRhLT5pZl9pbmRleCwgaW5ldEFkZHJlc3NUeXBlLAorICAgICAgICAgIChjaGFyICopIHJvd3JlcV9jdHgtPmRhdGEtPmFycF9pcGFkZHJlc3MsCisgICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+YXJwX2lwYWRkcmVzc19sZW4pKSkgeworCisgICAgICAgIC8qIHRyeSB0byBmaW5kIG9sZCBlbnRyeSAqLworICAgICAgICBvbGQgPSAoaW5ldE5ldFRvTWVkaWFUYWJsZV9yb3dyZXFfY3R4KilDT05UQUlORVJfRklORChjb250YWluZXIsIHJvd3JlcV9jdHgpOworICAgICAgICBpZiAoYXJwX2VudHJ5LT5mbGFncyAmIE5FVFNOTVBfQUNDRVNTX0FSUF9FTlRSWV9GTEFHX0RFTEVURSkgeworICAgICAgICAgICAgLyogZGVsZXRlIGV4aXN0aW5nIGVudHJ5ICovCisgICAgICAgICAgICBpZiAob2xkICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBDT05UQUlORVJfUkVNT1ZFKGNvbnRhaW5lciwgb2xkKTsKKyAgICAgICAgICAgICAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChvbGQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7CisgICAgICAgIH0gZWxzZSBpZiAob2xkICE9IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIHRoZSBlbnRyeSBpcyBhbHJlYWR5IHRoZXJlLCB1cGRhdGUgaXQgKi8KKyAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2FycF9lbnRyeV91cGRhdGUob2xkLT5kYXRhLCBhcnBfZW50cnkpOworICAgICAgICAgICAgLyogZGVsZXRlIHRoZSBhdXhpbGlhcnkgY29udGV4dCB3ZSB1c2VkIHRvIGZpbmQgdGhlIGVudHJ5CisgICAgICAgICAgICAgKiAodGhpcyBkZWxldGVzIGFsc28gYXJwX2VudHJ5KSAqLworICAgICAgICAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBjcmVhdGUgbmV3IGVudHJ5IGFuZCBhZGQgaXQgdG8gdGhlIGNhY2hlKi8KKyAgICAgICAgICAgIHJvd3JlcV9jdHgtPmluZXROZXRUb01lZGlhUm93U3RhdHVzID0gUk9XU1RBVFVTX0FDVElWRTsKKyAgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPmFycF9sYXN0X3VwZGF0ZWQgPSBuZXRzbm1wX2dldF9hZ2VudF91cHRpbWUoKTsKKyAgICAgICAgICAgIENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCByb3dyZXFfY3R4KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChyb3dyZXFfY3R4KSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3Igc2V0dGluZyBpbmRleCB3aGlsZSBsb2FkaW5nICIKKyAgICAgICAgICAgICAgICAgICAgICJpbmV0TmV0VG9NZWRpYVRhYmxlIGNhY2hlLlxuIik7CisgICAgICAgICAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBuZXRzbm1wX2FjY2Vzc19hcnBfZW50cnlfZnJlZShhcnBfZW50cnkpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgIF9hcnBfaG9va191cGRhdGUobmV0c25tcF9hcnBfYWNjZXNzICphY2Nlc3MsIG5ldHNubXBfYXJwX2VudHJ5ICplbnRyeSkKK3sKKyAgICBfYWRkX29yX3VwZGF0ZV9hcnBfZW50cnkoZW50cnksIGFjY2Vzcy0+bWFnaWMpOworfQorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdW5zaWduZWQgZ2VuZXJhdGlvbjsKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqdG9fZGVsZXRlOworfSBfY29sbGVjdF9jdHg7CisKKy8qKgorICogUHV0IGFsbCBlbnRyaWVzIHdpdGggb3V0ZGF0ZWQgZ2VuZXJhdGlvbiB0byBkZWxldGlvbiBsaXN0LgorICovCitzdGF0aWMgdm9pZAorX2NvbGxlY3RfaW52YWxpZF9hcnBfY3R4KGluZXROZXRUb01lZGlhVGFibGVfcm93cmVxX2N0eCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgIF9jb2xsZWN0X2N0eCAqY2N0eCkKK3sKKyAgICBpZiAoY3R4LT5kYXRhLT5nZW5lcmF0aW9uICE9IGNjdHgtPmdlbmVyYXRpb24pCisgICAgICAgIENPTlRBSU5FUl9JTlNFUlQoY2N0eC0+dG9fZGVsZXRlLCBjdHgpOworfQorCitzdGF0aWMgdm9pZCBfYXJwX2hvb2tfZ2MobmV0c25tcF9hcnBfYWNjZXNzICphY2Nlc3MpCit7CisgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciA9IGFjY2Vzcy0+bWFnaWM7CisgICAgX2NvbGxlY3RfY3R4IGNjdHg7CisKKyAgICBjY3R4LnRvX2RlbGV0ZSA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImxpZm8iKTsKKyAgICBjY3R4LmdlbmVyYXRpb24gPSBhY2Nlc3MtPmdlbmVyYXRpb247CisKKyAgICBDT05UQUlORVJfRk9SX0VBQ0goY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMgKikgX2NvbGxlY3RfaW52YWxpZF9hcnBfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAmY2N0eCk7CisKKyAgICB3aGlsZSAoQ09OVEFJTkVSX1NJWkUoY2N0eC50b19kZWxldGUpKSB7CisgICAgICAgIGluZXROZXRUb01lZGlhVGFibGVfcm93cmVxX2N0eCAqY3R4ID0gKGluZXROZXRUb01lZGlhVGFibGVfcm93cmVxX2N0eCopQ09OVEFJTkVSX0ZJUlNUKGNjdHgudG9fZGVsZXRlKTsKKyAgICAgICAgQ09OVEFJTkVSX1JFTU9WRShjb250YWluZXIsIGN0eCk7CisgICAgICAgIGluZXROZXRUb01lZGlhVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KGN0eCk7CisgICAgICAgIENPTlRBSU5FUl9SRU1PVkUoY2N0eC50b19kZWxldGUsIE5VTEwpOworICAgIH0KKyAgICBDT05UQUlORVJfRlJFRShjY3R4LnRvX2RlbGV0ZSk7Cit9CisKKy8qKgogICogY29udGFpbmVyIGluaXRpYWxpemF0aW9uCiAgKgogICogQHBhcmFtIGNvbnRhaW5lcl9wdHJfcHRyIEEgcG9pbnRlciB0byBhIGNvbnRhaW5lciBwb2ludGVyLiBJZiB5b3UKQEAgLTEyMCwxMDQgKzI0MSwxOSBAQAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLyoKLSAgICAgKiBUT0RPOjM0NTpBOiBTZXQgdXAgaW5ldE5ldFRvTWVkaWFUYWJsZSBjYWNoZSBwcm9wZXJ0aWVzLgotICAgICAqCi0gICAgICogQWxzbyBmb3IgYWR2YW5jZWQgdXNlcnMsIHlvdSBjYW4gc2V0IHBhcmFtZXRlcnMgZm9yIHRoZQotICAgICAqIGNhY2hlLiBEbyBub3QgY2hhbmdlIHRoZSBtYWdpYyBwb2ludGVyLCBhcyBpdCBpcyB1c2VkCi0gICAgICogYnkgdGhlIE1GRCBoZWxwZXIuIFRvIGNvbXBsZXRlbHkgZGlzYWJsZSBjYWNoaW5nLCBzZXQKLSAgICAgKiBjYWNoZS0+ZW5hYmxlZCB0byAwLgotICAgICAqLwotICAgIGNhY2hlLT50aW1lb3V0ID0gSU5FVE5FVFRPTUVESUFUQUJMRV9DQUNIRV9USU1FT1VUOyAvKiBzZWNvbmRzICovCi0KLSAgICAvKiBXZSB3YW50IHRvIG1hbnVhbGx5IGRlbGV0ZSBlbnRyaWVzIGluIHRoZSBjYWNoZSB0byBrZWVwIExhc3RVcGRhdGVkCi0gICAgICogdGltZXN0YW1wLiAqLwotICAgIGNhY2hlLT5mbGFncyB8PSBORVRTTk1QX0NBQ0hFX0RPTlRfRlJFRV9CRUZPUkVfTE9BRAotICAgICAgICAgICAgICAgICAgICB8IE5FVFNOTVBfQ0FDSEVfQVVUT19SRUxPQUQ7Ci19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluZXROZXRUb01lZGlhVGFibGVfY29udGFpbmVyX2luaXQgKi8KLQotLyoqCi0gKiBQdXQgYWxsIGVudHJpZXMgd2l0aCB2YWxpZCAhPTEgdG8gdGhlIGxpc3QgdG8gZGVsZXRlLgotICovCi1zdGF0aWMgdm9pZAotX2NvbGxlY3RfaW52YWxpZF9hcnBfY3R4KGluZXROZXRUb01lZGlhVGFibGVfcm93cmVxX2N0eCAqY3R4LAotICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqdG9fZGVsZXRlKQotewotICAgIGlmIChjdHgtPnZhbGlkKQotICAgICAgICAgICAgY3R4LT52YWxpZCA9IDA7Ci0gICAgZWxzZQotICAgICAgICBDT05UQUlORVJfSU5TRVJUKHRvX2RlbGV0ZSwgY3R4KTsKLX0KLQotLyoqCi0gKiBjaGVjayBlbnRyeSBmb3IgdXBkYXRlCi0gKi8KLXN0YXRpYyB2b2lkCi1fYWRkX29yX3VwZGF0ZV9hcnBfZW50cnkobmV0c25tcF9hcnBfZW50cnkgKmFycF9lbnRyeSwKLSAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcikKLXsKLSAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHgsICpvbGQ7Ci0gICAgaW50ICAgICAgICAgICAgIGluZXRBZGRyZXNzVHlwZTsKLQotICAgIERFQlVHVFJBQ0U7Ci0KLSAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGFycF9lbnRyeSk7Ci0gICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBjb250YWluZXIpOwotCi0gICAgLyoKLSAgICAgKiBjb252ZXJ0IHRoZSBhZGRyIGxlbiB0byBhbiBpbmV0QWRkcmVzc1R5cGUKLSAgICAgKi8KLSAgICBzd2l0Y2ggKGFycF9lbnRyeS0+YXJwX2lwYWRkcmVzc19sZW4pIHsKLSAgICBjYXNlIDQ6Ci0gICAgICAgIGluZXRBZGRyZXNzVHlwZSA9IElORVRBRERSRVNTVFlQRV9JUFY0OwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgMTY6Ci0gICAgICAgIGluZXRBZGRyZXNzVHlwZSA9IElORVRBRERSRVNTVFlQRV9JUFY2OwotICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIG5ldHNubXBfYWNjZXNzX2FycF9lbnRyeV9mcmVlKGFycF9lbnRyeSk7Ci0gICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ1bnN1cHBvcnRlZCBhZGRyZXNzIHR5cGVcbiIpOworICAgIGFycF9hY2Nlc3MgPSBuZXRzbm1wX2FjY2Vzc19hcnBfY3JlYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9BQ0NFU1NfQVJQX0NSRUFURV9OT0ZMQUdTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgX2FycF9ob29rX3VwZGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hcnBfaG9va19nYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZjYWNoZS0+dGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZjYWNoZS0+ZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2FjaGUtPmV4cGlyZWQpOworICAgIGlmIChhcnBfYWNjZXNzID09IE5VTEwpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgInVuYWJsZSB0byBjcmVhdGUgYXJwIGFjY2VzcyBpbiBpbmV0TmV0VG9NZWRpYVRhYmxlX2NvbnRhaW5lcl9pbml0XG4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIC8qCi0gICAgICogYWxsb2NhdGUgYW4gcm93IGNvbnRleHQgYW5kIHNldCB0aGUgaW5kZXgoZXMpLCB0aGVuIHRyeSB0byBmaW5kIGl0IGluCi0gICAgICogdGhlIGNhY2hlLgotICAgICAqLwotICAgIHJvd3JlcV9jdHggPSBpbmV0TmV0VG9NZWRpYVRhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHgoYXJwX2VudHJ5LCBOVUxMKTsKLSAgICBpZiAoKE5VTEwgIT0gcm93cmVxX2N0eCkgJiYKLSAgICAgICAgKE1GRF9TVUNDRVNTID09IGluZXROZXRUb01lZGlhVGFibGVfaW5kZXhlc19zZXQKLSAgICAgICAgIChyb3dyZXFfY3R4LCByb3dyZXFfY3R4LT5kYXRhLT5pZl9pbmRleCwgaW5ldEFkZHJlc3NUeXBlLAotICAgICAgICAgIChjaGFyICopIHJvd3JlcV9jdHgtPmRhdGEtPmFycF9pcGFkZHJlc3MsCi0gICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+YXJwX2lwYWRkcmVzc19sZW4pKSkgewotCi0gICAgICAgIC8qIHRyeSB0byBmaW5kIG9sZCBlbnRyeSAqLwotICAgICAgICBvbGQgPSAoaW5ldE5ldFRvTWVkaWFUYWJsZV9yb3dyZXFfY3R4KilDT05UQUlORVJfRklORChjb250YWluZXIsIHJvd3JlcV9jdHgpOwotICAgICAgICBpZiAob2xkICE9IE5VTEwpIHsKLSAgICAgICAgICAgIC8qIHRoZSBlbnRyeSBpcyBhbHJlYWR5IHRoZXJlLCB1cGRhdGUgaXQgKi8KLSAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2FycF9lbnRyeV91cGRhdGUob2xkLT5kYXRhLCBhcnBfZW50cnkpOwotICAgICAgICAgICAgb2xkLT52YWxpZCA9IDE7IC8qIGRvIG5vdCBkZWxldGUgaXQgaW4gZm9sbG93aW5nIHN3ZWVwICovCi0gICAgICAgICAgICAvKiBkZWxldGUgdGhlIGF1eGlsaWFyeSBjb250ZXh0IHdlIHVzZWQgdG8gZmluZCB0aGUgZW50cnkKLSAgICAgICAgICAgICAqICh0aGlzIGRlbGV0ZXMgYWxzbyBhcnBfZW50cnkpICovCi0gICAgICAgICAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qIGNyZWF0ZSBuZXcgZW50cnkgYW5kIGFkZCBpdCB0byB0aGUgY2FjaGUqLwotICAgICAgICAgICAgcm93cmVxX2N0eC0+aW5ldE5ldFRvTWVkaWFSb3dTdGF0dXMgPSBST1dTVEFUVVNfQUNUSVZFOwotICAgICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+YXJwX2xhc3RfdXBkYXRlZCA9IG5ldHNubXBfZ2V0X2FnZW50X3VwdGltZSgpOwotICAgICAgICAgICAgcm93cmVxX2N0eC0+dmFsaWQgPSAxOyAvKiBkbyBub3QgZGVsZXRlIGl0IGluIGZvbGxvd2luZyBzd2VlcCAqLwotICAgICAgICAgICAgQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIHJvd3JlcV9jdHgpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHJvd3JlcV9jdHgpIHsKLSAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBzZXR0aW5nIGluZGV4IHdoaWxlIGxvYWRpbmcgIgotICAgICAgICAgICAgICAgICAgICAgImluZXROZXRUb01lZGlhVGFibGUgY2FjaGUuXG4iKTsKLSAgICAgICAgICAgIGluZXROZXRUb01lZGlhVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2FycF9lbnRyeV9mcmVlKGFycF9lbnRyeSk7Ci0gICAgfQotfQorfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbmV0TmV0VG9NZWRpYVRhYmxlX2NvbnRhaW5lcl9pbml0ICovCiAKIC8qKgogICogY29udGFpbmVyIHNodXRkb3duCkBAIC0yNDAsMTIgKzI3NiwxNiBAQAogewogICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmluZXROZXRUb01lZGlhVGFibGU6aW5ldE5ldFRvTWVkaWFUYWJsZV9jb250YWluZXJfc2h1dGRvd24iLCAiY2FsbGVkXG4iKSk7CiAKKyAgICBpZiAoTlVMTCAhPSBhcnBfYWNjZXNzKSB7CisgICAgICAgIG5ldHNubXBfYWNjZXNzX2FycF9kZWxldGUoYXJwX2FjY2Vzcyk7CisgICAgICAgIGFycF9hY2Nlc3MgPSBOVUxMOworICAgIH0KKwogICAgIGlmIChOVUxMID09IGNvbnRhaW5lcl9wdHIpIHsKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKICAgICAgICAgICAgICAgICAgImJhZCBwYXJhbXMgdG8gaW5ldE5ldFRvTWVkaWFUYWJsZV9jb250YWluZXJfc2h1dGRvd25cbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluZXROZXRUb01lZGlhVGFibGVfY29udGFpbmVyX3NodXRkb3duICovCiAKIC8qKgpAQCAtMjg0LDU0ICszMjQsMTEgQEAKIGludAogaW5ldE5ldFRvTWVkaWFUYWJsZV9jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyKQogewotICAgIG5ldHNubXBfY29udGFpbmVyICphcnBfY29udGFpbmVyOwotICAgIG5ldHNubXBfY29udGFpbmVyICp0b19kZWxldGUgPSBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJsaWZvIik7Ci0KICAgICBERUJVR01TR1RMKCgidmVyYm9zZTppbmV0TmV0VG9NZWRpYVRhYmxlOmluZXROZXRUb01lZGlhVGFibGVfY2FjaGVfbG9hZCIsICJjYWxsZWRcbiIpKTsKIAotICAgIC8qCi0gICAgICogVE9ETzozNTE6TTogfC0+IExvYWQvdXBkYXRlIGRhdGEgaW4gdGhlIGluZXROZXRUb01lZGlhVGFibGUgY29udGFpbmVyLgotICAgICAqIGxvb3Agb3ZlciB5b3VyIGluZXROZXRUb01lZGlhVGFibGUgZGF0YSwgYWxsb2NhdGUgYSByb3dyZXEgY29udGV4dCwKLSAgICAgKiBzZXQgdGhlIGluZGV4KGVzKSBbYW5kIGRhdGEsIG9wdGlvbmFsbHldIGFuZCBpbnNlcnQgaW50bwotICAgICAqIHRoZSBjb250YWluZXIuCi0gICAgICovCi0gICAgYXJwX2NvbnRhaW5lciA9Ci0gICAgICAgIG5ldHNubXBfYWNjZXNzX2FycF9jb250YWluZXJfbG9hZChOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9BQ0NFU1NfQVJQX0xPQURfTk9GTEFHUyk7Ci0gICAgaWYgKE5VTEwgPT0gYXJwX2NvbnRhaW5lcikKLSAgICAgICAgcmV0dXJuIE1GRF9SRVNPVVJDRV9VTkFWQUlMQUJMRTsgICAgICAgIC8qIG1zZyBhbHJlYWR5IGxvZ2dlZCAqLwotCi0gICAgLyoKLSAgICAgKiB3ZSBqdXN0IGdvdCBhIGZyZXNoIGNvcHkgb2YgZGF0YS4gc25hcmYgZGF0YQotICAgICAqLwotICAgIENPTlRBSU5FUl9GT1JfRUFDSChhcnBfY29udGFpbmVyLAotICAgICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMgKikgX2FkZF9vcl91cGRhdGVfYXJwX2VudHJ5LAotICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOwotCi0gICAgLyoKLSAgICAgKiBEZWxldGUgYWxsIGNhY2hlZCBlbnRyaWVzLCB3aGljaCB3ZXJlIG5vdCBwcm92aWRlZCBieQotICAgICAqIG5ldHNubXBfYWNjZXNzX2FycF9jb250YWluZXJfbG9hZAotICAgICAqLwotICAgIENPTlRBSU5FUl9GT1JfRUFDSChjb250YWluZXIsCi0gICAgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqKSBfY29sbGVjdF9pbnZhbGlkX2FycF9jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgIHRvX2RlbGV0ZSk7Ci0gICAgd2hpbGUgKENPTlRBSU5FUl9TSVpFKHRvX2RlbGV0ZSkpIHsKLSAgICAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9yb3dyZXFfY3R4ICpjdHggPSAoaW5ldE5ldFRvTWVkaWFUYWJsZV9yb3dyZXFfY3R4KilDT05UQUlORVJfRklSU1QodG9fZGVsZXRlKTsKLSAgICAgICAgQ09OVEFJTkVSX1JFTU9WRShjb250YWluZXIsIGN0eCk7Ci0gICAgICAgIGluZXROZXRUb01lZGlhVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KGN0eCk7Ci0gICAgICAgIENPTlRBSU5FUl9SRU1PVkUodG9fZGVsZXRlLCBOVUxMKTsKLSAgICB9Ci0gICAgQ09OVEFJTkVSX0ZSRUUodG9fZGVsZXRlKTsKLQotICAgIC8qCi0gICAgICogZnJlZSB0aGUgY29udGFpbmVyLiB3ZSd2ZSBlaXRoZXIgY2xhaW1lZCBlYWNoIGVudHJ5LCBvciByZWxlYXNlZCBpdCwKLSAgICAgKiBzbyB0aGUgYWNjZXNzIGZ1bmN0aW9uIGRvZXNuJ3QgbmVlZCB0byBjbGVhciB0aGUgY29udGFpbmVyLgotICAgICAqLwotICAgIG5ldHNubXBfYWNjZXNzX2FycF9jb250YWluZXJfZnJlZShhcnBfY29udGFpbmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0FDQ0VTU19BUlBfRlJFRV9ET05UX0NMRUFSKTsKLQotICAgIERFQlVHTVNHVCgoInZlcmJvc2U6aW5ldE5ldFRvTWVkaWFUYWJsZTppbmV0TmV0VG9NZWRpYVRhYmxlX2NhY2hlX2xvYWQiLAotICAgICAgICAgICAgICAgIiUiIE5FVFNOTVBfUFJJeiAidSByZWNvcmRzXG4iLCBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisgICAgYXJwX2FjY2Vzcy0+bWFnaWMgPSBjb250YWluZXI7CisgICAgaWYgKG5ldHNubXBfYWNjZXNzX2FycF9sb2FkKGFycF9hY2Nlc3MpIDwgMCkKKyAgICAgICAgcmV0dXJuIE1GRF9FUlJPUjsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5ldE5ldFRvTWVkaWFUYWJsZV9jb250YWluZXJfbG9hZCAqLwpAQCAtMzU0LDYgKzM1MSwxMSBAQAogewogICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmluZXROZXRUb01lZGlhVGFibGU6aW5ldE5ldFRvTWVkaWFUYWJsZV9jb250YWluZXJfZnJlZSIsICJjYWxsZWRcbiIpKTsKIAorICAgIGlmIChOVUxMICE9IGFycF9hY2Nlc3MpIHsKKyAgICAgICAgbmV0c25tcF9hY2Nlc3NfYXJwX3VubG9hZChhcnBfYWNjZXNzKTsKKyAgICAgICAgYXJwX2FjY2Vzcy0+bWFnaWMgPSBOVUxMOworICAgIH0KKwogICAgIC8qCiAgICAgICogVE9ETzozODA6TTogRnJlZSBpbmV0TmV0VG9NZWRpYVRhYmxlIGNvbnRhaW5lciBkYXRhLgogICAgICAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXJmYWNlLmMKaW5kZXggNjJlMzY0Zi4uYzE4Njg5YSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2ludGVyZmFjZS5jCkBAIC0zMCw2ICszMCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC00Niw2ICs0NywxOSBAQAogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGluZXROZXRUb01lZGlhVGFibGVfZXh0ZXJuYWxfYWNjZXNzLCBsaWJuZXRzbm1wbWlicykKKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2NvbnRhaW5lcl9yb3dfaW5zZXJ0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKQorCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpbmV0TmV0VG9NZWRpYVRhYmxlX2NvbnRhaW5lcl9zaXplLCBpbmV0TmV0VG9NZWRpYVRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpbmV0TmV0VG9NZWRpYVRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQsIGluZXROZXRUb01lZGlhVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGluZXROZXRUb01lZGlhVGFibGVfcmVnaXN0cmF0aW9uX2dldCwgaW5ldE5ldFRvTWVkaWFUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaW5ldE5ldFRvTWVkaWFUYWJsZV9jb250YWluZXJfZ2V0LCBpbmV0TmV0VG9NZWRpYVRhYmxlX2V4dGVybmFsX2FjY2VzcykKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqCkBAIC04MiwxOSArOTYsMjMgQEAKICAgICAgICAgICAgICAgICBfaW5ldE5ldFRvTWVkaWFUYWJsZV9jb250YWluZXJfc2h1dGRvd24oaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcmZhY2VfY3R4ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZfY3R4KTsKIAotCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5FVE5FVFRPTUVESUFUQUJMRV9DT05UQUlORVJfR0VUCiBuZXRzbm1wX2NvbnRhaW5lciAqCiBpbmV0TmV0VG9NZWRpYVRhYmxlX2NvbnRhaW5lcl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gaW5ldE5ldFRvTWVkaWFUYWJsZV9pZl9jdHguY29udGFpbmVyOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5FVE5FVFRPTUVESUFUQUJMRV9DT05UQUlORVJfR0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTkVUTkVUVE9NRURJQVRBQkxFX1JFR0lTVFJBVElPTl9HRVQKIGluZXROZXRUb01lZGlhVGFibGVfcmVnaXN0cmF0aW9uICoKIGluZXROZXRUb01lZGlhVGFibGVfcmVnaXN0cmF0aW9uX2dldCh2b2lkKQogewogICAgIHJldHVybiBpbmV0TmV0VG9NZWRpYVRhYmxlX2lmX2N0eC51c2VyX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lORVRORVRUT01FRElBVEFCTEVfUkVHSVNUUkFUSU9OX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5FVE5FVFRPTUVESUFUQUJMRV9SRUdJU1RSQVRJT05fU0VUCiBpbmV0TmV0VG9NZWRpYVRhYmxlX3JlZ2lzdHJhdGlvbiAqCiBpbmV0TmV0VG9NZWRpYVRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQoaW5ldE5ldFRvTWVkaWFUYWJsZV9yZWdpc3RyYXRpb24gKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3JlZykKQEAgLTEwNCwxMiArMTIyLDE1IEBACiAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9pZl9jdHgudXNlcl9jdHggPSBuZXdyZWc7CiAgICAgcmV0dXJuIG9sZDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lORVRORVRUT01FRElBVEFCTEVfUkVHSVNUUkFUSU9OX1NFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5FVE5FVFRPTUVESUFUQUJMRV9DT05UQUlORVJfU0laRQogaW50CiBpbmV0TmV0VG9NZWRpYVRhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpCiB7CiAgICAgcmV0dXJuIENPTlRBSU5FUl9TSVpFKGluZXROZXRUb01lZGlhVGFibGVfaWZfY3R4LmNvbnRhaW5lcik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTkVUTkVUVE9NRURJQVRBQkxFX0NPTlRBSU5FUl9TSVpFICovCiAKIHVfaW50CiBpbmV0TmV0VG9NZWRpYVRhYmxlX2RpcnR5X2dldCh2b2lkKQpAQCAtMTMzLDcgKzE1NCw3IEBACiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pbmV0TmV0VG9NZWRpYVRhYmxlX3Bvc3RfcmVxdWVzdDsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2luZXROZXRUb01lZGlhVGFibGVfb2JqZWN0X2xvb2t1cDsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2luZXROZXRUb01lZGlhVGFibGVfZ2V0X3ZhbHVlczsKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaW5ldE5ldFRvTWVkaWFUYWJsZV9jaGVja19vYmplY3RzOwogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaW5ldE5ldFRvTWVkaWFUYWJsZV91bmRvX3NldHVwOwogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaW5ldE5ldFRvTWVkaWFUYWJsZV9zZXRfdmFsdWVzOwpAQCAtMTQ5LDcgKzE3MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciwgaW50IGNvbHVtbik7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKIE5FVFNOTVBfU1RBVElDX0lOTElORSBpbnQKICAgICAgICAgICAgICAgICBfaW5ldE5ldFRvTWVkaWFUYWJsZV9jaGVja19pbmRleGVzKGluZXROZXRUb01lZGlhVGFibGVfcm93cmVxX2N0eCAqCkBAIC0yMzIsNyArMjUzLDcgQEAKICAgICAgICAgX21mZF9pbmV0TmV0VG9NZWRpYVRhYmxlX3Bvc3RfcmVxdWVzdDsKIAogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKICAgICAvKgogICAgICAqIFJFUVVJUkVEIHdyYXBwZXJzIGZvciBzZXQgcmVxdWVzdCBoYW5kbGluZwogICAgICAqLwpAQCAtMjU3LDcgKzI3OCw3IEBACiAgICAgICovCiAgICAgYWNjZXNzX211bHRpcGxleGVyLT5jb25zaXN0ZW5jeV9jaGVja3MgPQogICAgICAgICBfbWZkX2luZXROZXRUb01lZGlhVGFibGVfY2hlY2tfZGVwZW5kZW5jaWVzOwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICAgKgpAQCAtMjkzLDcgKzMxNCw3IEBACiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0KQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BPU1RfUkVRVUVTVDsKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+c2V0X3ZhbHVlcykKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9TRVRfVkFMVUVTOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmlycmV2ZXJzaWJsZV9jb21taXQpCkBAIC0zMTYsNyArMzM3LDcgQEAKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DT01NSVQ7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DT01NSVQ7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICBoYW5kbGVyID0gbmV0c25tcF9iYWJ5X3N0ZXBzX2hhbmRsZXJfZ2V0KG1mZF9tb2Rlcyk7CiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKQEAgLTEwOTcsNyArMTExOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9jdHgsIHJvd3JlcV9jdHgpOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaW5ldE5ldFRvTWVkaWFUYWJsZV9jaGVja19pbmRleGVzICovCiAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogU0VUIHByb2Nlc3NpbmcKQEAgLTE4MjEsNyArMTg0Miw3IEBACiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9pbmV0TmV0VG9NZWRpYVRhYmxlX2lycmV2ZXJzaWJsZV9jb21taXQgKi8KLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtMTk4MCw2ICsyMDAxLDcgQEAKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2luZXROZXRUb01lZGlhVGFibGVfY29udGFpbmVyX3NodXRkb3duICovCiAKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lORVRORVRUT01FRElBVEFCTEVfRVhURVJOQUxfQUNDRVNTCiBpbmV0TmV0VG9NZWRpYVRhYmxlX3Jvd3JlcV9jdHggKgogaW5ldE5ldFRvTWVkaWFUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgoaW5ldE5ldFRvTWVkaWFUYWJsZV9taWJfaW5kZXggKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWliX2lkeCkKQEAgLTIwMDcsMyArMjAyOSw0IEBACiAKICAgICByZXR1cm4gcm93cmVxX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lORVRORVRUT01FRElBVEFCTEVfRVhURVJOQUxfQUNDRVNTICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfZGF0YV9hY2Nlc3MuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXRhX2FjY2Vzcy5jCmluZGV4IDRmYjY5MDUuLjQ0Mzc4MjkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXRhX2FjY2Vzcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXRhX2FjY2Vzcy5jCkBAIC04LDYgKzgsNyBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtMjEsNiArMjIsMTAgQEAKIAogI2luY2x1ZGUgImlwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpcEFkZHJlc3NUYWJsZV9jb250YWluZXJfZ2V0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXBhZGRyZXNzX2NvbW1vbl9jb3B5X3V0aWxpdGllcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGlwYWRkcmVzc19wcmVmaXhfY29weSkKKwogLyoqIEBpbmdyb3VwIGludGVyZmFjZSAKICAqIEBhZGR0b2dyb3VwIGRhdGFfYWNjZXNzIGRhdGFfYWNjZXNzOiBSb3V0aW5lcyB0byBhY2Nlc3MgZGF0YQogICoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9pbnRlcmZhY2UuYwppbmRleCA5NDI0MjVkLi5lMTRhMzM3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2ludGVyZmFjZS5jCkBAIC0zMCw2ICszMCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC00Niw2ICs0NywxNiBAQAogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX2FsbF9yZXF1ZXN0c19lcnJvcikKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwYWRkcmVzc3ByZWZpeHRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleCwgaXBhZGRyZXNzcHJlZml4dGFibGVfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwYWRkcmVzc3ByZWZpeHRhYmxlX2NvbnRhaW5lcl9nZXQsIGlwYWRkcmVzc3ByZWZpeHRhYmxlX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcEFkZHJlc3NQcmVmaXhUYWJsZV9yZWdpc3RyYXRpb25fZ2V0LCBpcGFkZHJlc3NwcmVmaXh0YWJsZV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBBZGRyZXNzUHJlZml4VGFibGVfcmVnaXN0cmF0aW9uX3NldCwgaXBhZGRyZXNzcHJlZml4dGFibGVfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwQWRkcmVzc1ByZWZpeFRhYmxlX2NvbnRhaW5lcl9zaXplLCBpcGFkZHJlc3NwcmVmaXh0YWJsZV9hbGwpCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKgpAQCAtODEsMTggKzkyLDIzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGlmX2N0eCk7CiAKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU1BSRUZJWFRBQkxFX0NPTlRBSU5FUl9HRVQKIG5ldHNubXBfY29udGFpbmVyICoKIGlwQWRkcmVzc1ByZWZpeFRhYmxlX2NvbnRhaW5lcl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gaXBBZGRyZXNzUHJlZml4VGFibGVfaWZfY3R4LmNvbnRhaW5lcjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU1BSRUZJWFRBQkxFX0NPTlRBSU5FUl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU1BSRUZJWFRBQkxFX1JFR0lTVFJBVElPTl9HRVQKIGlwQWRkcmVzc1ByZWZpeFRhYmxlX3JlZ2lzdHJhdGlvbiAqCiBpcEFkZHJlc3NQcmVmaXhUYWJsZV9yZWdpc3RyYXRpb25fZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIGlwQWRkcmVzc1ByZWZpeFRhYmxlX2lmX2N0eC51c2VyX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU1BSRUZJWFRBQkxFX1JFR0lTVFJBVElPTl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU1BSRUZJWFRBQkxFX1JFR0lTVFJBVElPTl9TRVQKIGlwQWRkcmVzc1ByZWZpeFRhYmxlX3JlZ2lzdHJhdGlvbiAqCiBpcEFkZHJlc3NQcmVmaXhUYWJsZV9yZWdpc3RyYXRpb25fc2V0KGlwQWRkcmVzc1ByZWZpeFRhYmxlX3JlZ2lzdHJhdGlvbiAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3JlZykKQEAgLTEwMiwxMiArMTE4LDE1IEBACiAgICAgaXBBZGRyZXNzUHJlZml4VGFibGVfaWZfY3R4LnVzZXJfY3R4ID0gbmV3cmVnOwogICAgIHJldHVybiBvbGQ7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NQUkVGSVhUQUJMRV9SRUdJU1RSQVRJT05fU0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NQUkVGSVhUQUJMRV9DT05UQUlORVJfU0laRQogaW50CiBpcEFkZHJlc3NQcmVmaXhUYWJsZV9jb250YWluZXJfc2l6ZSh2b2lkKQogewogICAgIHJldHVybiBDT05UQUlORVJfU0laRShpcEFkZHJlc3NQcmVmaXhUYWJsZV9pZl9jdHguY29udGFpbmVyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU1BSRUZJWFRBQkxFX0NPTlRBSU5FUl9TSVpFICovCiAKIC8qCiAgKiBtZmQgbXVsdGlwbGV4ZXIgbW9kZXMKQEAgLTIyOSw3ICsyNDgsOCBAQAogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9QT1NUX1JFUVVFU1Q7CiAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQorICAgIC8qIFhYWCAtIGFyZSB0aGVzZSBhY3R1YWxseSBuZWNlc3Nhcnk/ICovCiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+c2V0X3ZhbHVlcykKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9TRVRfVkFMVUVTOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmlycmV2ZXJzaWJsZV9jb21taXQpCkBAIC0yNTIsNyArMjcyLDcgQEAKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DT01NSVQ7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DT01NSVQ7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICBoYW5kbGVyID0gbmV0c25tcF9iYWJ5X3N0ZXBzX2hhbmRsZXJfZ2V0KG1mZF9tb2Rlcyk7CiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKQEAgLTg0OSw3ICs4NjksNyBAQAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2lwQWRkcmVzc1ByZWZpeFRhYmxlX2dldF92YWx1ZXMgKi8KIAogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIFNFVCBwcm9jZXNzaW5nCkBAIC0xMDE0LDYgKzEwMzQsNyBAQAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaXBBZGRyZXNzUHJlZml4VGFibGVfY29udGFpbmVyX3NodXRkb3duICovCiAKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU1BSRUZJWFRBQkxFX1JPV19GSU5EX0JZX01JQl9JTkRFWAogaXBBZGRyZXNzUHJlZml4VGFibGVfcm93cmVxX2N0eCAqCiBpcEFkZHJlc3NQcmVmaXhUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgoaXBBZGRyZXNzUHJlZml4VGFibGVfbWliX2luZGV4ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWJfaWR4KQpAQCAtMTA0MSwzICsxMDYyLDQgQEAKIAogICAgIHJldHVybiByb3dyZXFfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTUFJFRklYVEFCTEVfUk9XX0ZJTkRfQllfTUlCX0lOREVYICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5jCmluZGV4IGVjNDhmY2EuLmRlZmY0ZTkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5jCkBAIC0xNCw2ICsxNCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC0yOCw2ICsyOSwxMCBAQAogCiAjaW5jbHVkZSAiaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3N0b3JhZ2VfdHJhbnNpdGlvbikKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGlwYWRkcmVzc19lbnRyeV9jb3B5KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXBhZGRyZXNzX3ByZWZpeF9jb3B5KQorCiBjb25zdCBvaWQgICAgICAgaXBBZGRyZXNzVGFibGVfb2lkW10gPSB7IElQQUREUkVTU1RBQkxFX09JRCB9OwogY29uc3QgaW50ICAgICAgIGlwQWRkcmVzc1RhYmxlX29pZF9zaXplID0gT0lEX0xFTkdUSChpcEFkZHJlc3NUYWJsZV9vaWQpOwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfZGF0YV9hY2Nlc3MuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5jCmluZGV4IGNhMWFlNDcuLmQ4MGIzZTcgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5jCkBAIC04LDYgKzgsNyBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtMjIsNiArMjMsOCBAQAogI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgogI2luY2x1ZGUgPGVycm5vLmg+CiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNvbnRhaW5lcl9saWZvKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXBhZGRyZXNzX2VudHJ5X3VwZGF0ZSkKIAogLyoqIEBpbmdyb3VwIGludGVyZmFjZSAKICAqIEBhZGR0b2dyb3VwIGRhdGFfYWNjZXNzIGRhdGFfYWNjZXNzOiBSb3V0aW5lcyB0byBhY2Nlc3MgZGF0YQpAQCAtNjczLDkgKzY3Niw5IEBACiAgICAgICogVE9ETzo0MzA6TTogfC0+IFZhbGlkYXRlIHBvdGVudGlhbCBpcEFkZHJlc3NUYWJsZSBpbmRleC4KICAgICAgKgogICAgICAqCi0gICAgICogeHh4LXJrczogd2Ugb25seSBwbGFuIGlwdjQgc3VwcG9ydCBpbml0aWFsbHkKICAgICAgKi8KLSAgICBpZiAoKDQgIT0gcm93cmVxX2N0eC0+dGJsX2lkeC5pcEFkZHJlc3NBZGRyX2xlbikpIHsKKyAgICBpZiAoKDQgIT0gcm93cmVxX2N0eC0+dGJsX2lkeC5pcEFkZHJlc3NBZGRyX2xlbikKKyAgICAgICAgICAgICYmICgxNiAhPSByb3dyZXFfY3R4LT50YmxfaWR4LmlwQWRkcmVzc0FkZHJfbGVuKSkgewogICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgImludmFsaWQgaW5kZXggZm9yIGEgbmV3IHJvdyBpbiB0aGUgIgogICAgICAgICAgICAgICAgICAiaXBBZGRyZXNzVGFibGUgdGFibGUuXG4iKTsKICAgICAgICAgLyoKQEAgLTY5MiwxNSArNjk1LDkgQEAKICAgICAgICAgICAgIHJldHVybiBNRkRfQ0FOTk9UX0NSRUFURV9OT1c7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5pYV9hZGRyZXNzWzBdID0KLSAgICAgICAgICAgIHJvd3JlcV9jdHgtPnRibF9pZHguaXBBZGRyZXNzQWRkclswXTsKLSAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+aWFfYWRkcmVzc1sxXSA9Ci0gICAgICAgICAgICByb3dyZXFfY3R4LT50YmxfaWR4LmlwQWRkcmVzc0FkZHJbMV07Ci0gICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPmlhX2FkZHJlc3NbMl0gPQotICAgICAgICAgICAgcm93cmVxX2N0eC0+dGJsX2lkeC5pcEFkZHJlc3NBZGRyWzJdOwotICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5pYV9hZGRyZXNzWzNdID0KLSAgICAgICAgICAgIHJvd3JlcV9jdHgtPnRibF9pZHguaXBBZGRyZXNzQWRkclszXTsKLSAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+aWFfYWRkcmVzc19sZW4gPSA0OworICAgICAgICBtZW1jcHkocm93cmVxX2N0eC0+ZGF0YS0+aWFfYWRkcmVzcywgcm93cmVxX2N0eC0+dGJsX2lkeC5pcEFkZHJlc3NBZGRyLAorICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgtPnRibF9pZHguaXBBZGRyZXNzQWRkcl9sZW4pOworICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5pYV9hZGRyZXNzX2xlbiA9IHJvd3JlcV9jdHgtPnRibF9pZHguaXBBZGRyZXNzQWRkcl9sZW47CiAgICAgfQogCiAgICAgcmV0dXJuIHJjOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2ludGVyZmFjZS5jCmluZGV4IDk4YzNhZDAuLjQ4NzcwYjAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmMKQEAgLTMwLDYgKzMwLDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTQ2LDYgKzQ3LDE5IEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBBZGRyZXNzVGFibGVfZXh0ZXJuYWxfYWNjZXNzLCBsaWJuZXRzbm1wbWlicykKKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2NvbnRhaW5lcl9yb3dfaW5zZXJ0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKQorCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcEFkZHJlc3NUYWJsZV9jb250YWluZXJfc2l6ZSwgaXBBZGRyZXNzVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwQWRkcmVzc1RhYmxlX3JlZ2lzdHJhdGlvbl9zZXQsIGlwQWRkcmVzc1RhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcEFkZHJlc3NUYWJsZV9yZWdpc3RyYXRpb25fZ2V0LCBpcEFkZHJlc3NUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBBZGRyZXNzVGFibGVfY29udGFpbmVyX2dldCwgaXBBZGRyZXNzVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioKQEAgLTgwLDE5ICs5NCwyMyBAQAogc3RhdGljIHZvaWQKICAgICAgICAgICAgICAgICBfaXBBZGRyZXNzVGFibGVfY29udGFpbmVyX3NodXRkb3duKGlwQWRkcmVzc1RhYmxlX2ludGVyZmFjZV9jdHggKiBpZl9jdHgpOwogCi0KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NUQUJMRV9DT05UQUlORVJfR0VUCiBuZXRzbm1wX2NvbnRhaW5lciAqCiBpcEFkZHJlc3NUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIGlwQWRkcmVzc1RhYmxlX2lmX2N0eC5jb250YWluZXI7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NUQUJMRV9DT05UQUlORVJfR0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NUQUJMRV9SRUdJU1RSQVRJT05fR0VUCiBpcEFkZHJlc3NUYWJsZV9yZWdpc3RyYXRpb24gKgogaXBBZGRyZXNzVGFibGVfcmVnaXN0cmF0aW9uX2dldCh2b2lkKQogewogICAgIHJldHVybiBpcEFkZHJlc3NUYWJsZV9pZl9jdHgudXNlcl9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NUQUJMRV9SRUdJU1RSQVRJT05fR0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NUQUJMRV9SRUdJU1RSQVRJT05fU0VUCiBpcEFkZHJlc3NUYWJsZV9yZWdpc3RyYXRpb24gKgogaXBBZGRyZXNzVGFibGVfcmVnaXN0cmF0aW9uX3NldChpcEFkZHJlc3NUYWJsZV9yZWdpc3RyYXRpb24gKiBuZXdyZWcpCiB7CkBAIC0xMDAsMTIgKzExOCwxNSBAQAogICAgIGlwQWRkcmVzc1RhYmxlX2lmX2N0eC51c2VyX2N0eCA9IG5ld3JlZzsKICAgICByZXR1cm4gb2xkOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTVEFCTEVfUkVHSVNUUkFUSU9OX1NFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTVEFCTEVfQ09OVEFJTkVSX1NJWkUKIGludAogaXBBZGRyZXNzVGFibGVfY29udGFpbmVyX3NpemUodm9pZCkKIHsKICAgICByZXR1cm4gQ09OVEFJTkVSX1NJWkUoaXBBZGRyZXNzVGFibGVfaWZfY3R4LmNvbnRhaW5lcik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NUQUJMRV9DT05UQUlORVJfU0laRSAqLwogCiB1X2ludAogaXBBZGRyZXNzVGFibGVfZGlydHlfZ2V0KHZvaWQpCkBAIC0xMjksNyArMTUwLDcgQEAKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lwQWRkcmVzc1RhYmxlX3Bvc3RfcmVxdWVzdDsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lwQWRkcmVzc1RhYmxlX29iamVjdF9sb29rdXA7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcEFkZHJlc3NUYWJsZV9nZXRfdmFsdWVzOwotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcEFkZHJlc3NUYWJsZV9jaGVja19vYmplY3RzOwogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaXBBZGRyZXNzVGFibGVfdW5kb19zZXR1cDsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lwQWRkcmVzc1RhYmxlX3NldF92YWx1ZXM7CkBAIC0xNDQsNyArMTY1LDcgQEAKICAgICAgICAgICAgICAgICBfaXBBZGRyZXNzVGFibGVfdW5kb19jb2x1bW4oaXBBZGRyZXNzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbHVtbik7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKIE5FVFNOTVBfU1RBVElDX0lOTElORSBpbnQKICAgICAgICAgICAgICAgICBfaXBBZGRyZXNzVGFibGVfY2hlY2tfaW5kZXhlcyhpcEFkZHJlc3NUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCk7CkBAIC0yMjIsNyArMjQzLDcgQEAKICAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCA9IF9tZmRfaXBBZGRyZXNzVGFibGVfcG9zdF9yZXF1ZXN0OwogCiAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogICAgIC8qCiAgICAgICogUkVRVUlSRUQgd3JhcHBlcnMgZm9yIHNldCByZXF1ZXN0IGhhbmRsaW5nCiAgICAgICovCkBAIC0yNDYsNyArMjY3LDcgQEAKICAgICAgKi8KICAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPmNvbnNpc3RlbmN5X2NoZWNrcyA9CiAgICAgICAgIF9tZmRfaXBBZGRyZXNzVGFibGVfY2hlY2tfZGVwZW5kZW5jaWVzOwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICAgKgpAQCAtMjgyLDcgKzMwMyw3IEBACiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0KQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BPU1RfUkVRVUVTVDsKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+c2V0X3ZhbHVlcykKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9TRVRfVkFMVUVTOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmlycmV2ZXJzaWJsZV9jb21taXQpCkBAIC0zMDUsNyArMzI2LDcgQEAKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DT01NSVQ7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DT01NSVQ7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICBoYW5kbGVyID0gbmV0c25tcF9iYWJ5X3N0ZXBzX2hhbmRsZXJfZ2V0KG1mZF9tb2Rlcyk7CiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKQEAgLTEwNjEsNyArMTA4Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaXBBZGRyZXNzVGFibGVfY2hlY2tfaW5kZXhlcyAqLwogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIFNFVCBwcm9jZXNzaW5nCkBAIC0xODkzLDcgKzE5MTQsNyBAQAogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaXBBZGRyZXNzVGFibGVfaXJyZXZlcnNpYmxlX2NvbW1pdCAqLwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0yMDQyLDYgKzIwNjMsNyBAQAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaXBBZGRyZXNzVGFibGVfY29udGFpbmVyX3NodXRkb3duICovCiAKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU1RBQkxFX0VYVEVSTkFMX0FDQ0VTUwogaXBBZGRyZXNzVGFibGVfcm93cmVxX2N0eCAqCiBpcEFkZHJlc3NUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgoaXBBZGRyZXNzVGFibGVfbWliX2luZGV4ICogbWliX2lkeCkKIHsKQEAgLTIwNjcsMyArMjA4OSw0IEBACiAKICAgICByZXR1cm4gcm93cmVxX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU1RBQkxFX0VYVEVSTkFMX0FDQ0VTUyAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfYWNjZXNzLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9hY2Nlc3MuYwppbmRleCBiMzU0YzNkLi43ZDdkY2ZlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9hY2Nlc3MuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9hY2Nlc3MuYwpAQCAtOCw2ICs4LDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTE5LDYgKzIwLDggQEAKIAogI2luY2x1ZGUgImlwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfYWNjZXNzLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNvbnRhaW5lcl9saWZvKQorCiAvKiogQGluZ3JvdXAgaW50ZXJmYWNlCiAgKiBAYWRkdG9ncm91cCBkYXRhX2FjY2VzcyBkYXRhX2FjY2VzczogUm91dGluZXMgdG8gYWNjZXNzIGRhdGEKICAqCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlLmMKaW5kZXggNTJjYTQ0Zi4uNDBhZDcyYiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9pbnRlcmZhY2UuYwpAQCAtMzAsNiArMzAsNyBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtNDYsNiArNDcsMTAgQEAKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHJvd19tZXJnZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGJhYnlfc3RlcHMpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19hbGxfcmVxdWVzdHNfZXJyb3IpCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKgpAQCAtMjI3LDcgKzIzMiw3IEBACiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0KQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BPU1RfUkVRVUVTVDsKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAgICAgLyogWFhYIC0gYXJlIHRoZXNlIGFjdHVhbGx5IG5lY2Vzc2FyeT8gKi8KICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5zZXRfdmFsdWVzKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1NFVF9WQUxVRVM7CkBAIC0yNTEsNyArMjU2LDcgQEAKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DT01NSVQ7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DT01NSVQ7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICBoYW5kbGVyID0gbmV0c25tcF9iYWJ5X3N0ZXBzX2hhbmRsZXJfZ2V0KG1mZF9tb2Rlcyk7CiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuYwppbmRleCAzZmQxZDA5Li41NTlkMWMxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5jCkBAIC0zMCw2ICszMCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC00Niw2ICs0NywxOCBAQAogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwSWZTdGF0c1RhYmxlX2V4dGVybmFsX2FjY2VzcywgbGlibmV0c25tcG1pYnMpCisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHJvd19tZXJnZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGJhYnlfc3RlcHMpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19hbGxfcmVxdWVzdHNfZXJyb3IpCisKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaXplLCBpcElmU3RhdHNUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uX3NldCwgaXBJZlN0YXRzVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbl9nZXQsIGlwSWZTdGF0c1RhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcElmU3RhdHNUYWJsZV9jb250YWluZXJfZ2V0LCBpcElmU3RhdHNUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKgpAQCAtODAsMTkgKzkzLDIzIEBACiBzdGF0aWMgdm9pZCAgICAKIF9pcElmU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24oaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlX2N0eCAqIGlmX2N0eCk7CiAKLQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQSUZTVEFUU1RBQkxFX0NPTlRBSU5FUl9HRVQKIG5ldHNubXBfY29udGFpbmVyICoKIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gaXBJZlN0YXRzVGFibGVfaWZfY3R4LmNvbnRhaW5lcjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQSUZTVEFUU1RBQkxFX0NPTlRBSU5FUl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQSUZTVEFUU1RBQkxFX1JFR0lTVFJBVElPTl9HRVQKIGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqCiBpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb25fZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIGlwSWZTdGF0c1RhYmxlX2lmX2N0eC51c2VyX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQSUZTVEFUU1RBQkxFX1JFR0lTVFJBVElPTl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQSUZTVEFUU1RBQkxFX1JFR0lTVFJBVElPTl9TRVQKIGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqCiBpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb25fc2V0KGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqIG5ld3JlZykKIHsKQEAgLTEwMCwxMiArMTE3LDE1IEBACiAgICAgaXBJZlN0YXRzVGFibGVfaWZfY3R4LnVzZXJfY3R4ID0gbmV3cmVnOwogICAgIHJldHVybiBvbGQ7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUElGU1RBVFNUQUJMRV9SRUdJU1RSQVRJT05fU0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUElGU1RBVFNUQUJMRV9DT05UQUlORVJfU0laRQogaW50CiBpcElmU3RhdHNUYWJsZV9jb250YWluZXJfc2l6ZSh2b2lkKQogewogICAgIHJldHVybiBDT05UQUlORVJfU0laRShpcElmU3RhdHNUYWJsZV9pZl9jdHguY29udGFpbmVyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQSUZTVEFUU1RBQkxFX0NPTlRBSU5FUl9TSVpFICovCiAKIC8qCiAgKiBpcElmU3RhdHNUYWJsZUxhc3RDaGFuZ2VkLCB3aGljaCBpcyB0aGUgbGFzdCB0aW1lIHRoYXQgYSByb3cgaW4KQEAgLTIyNyw2ICsyNDcsMTMgQEAKICAgICAgKi8KICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5vYmplY3RfbG9va3VwKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX09CSkVDVF9MT09LVVA7CisKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wcmVfcmVxdWVzdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9QUkVfUkVRVUVTVDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUE9TVF9SRVFVRVNUOworCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnNldF92YWx1ZXMpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfU0VUX1ZBTFVFUzsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5pcnJldmVyc2libGVfY29tbWl0KQpAQCAtMjM0LDExICsyNjEsNiBAQAogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPm9iamVjdF9zeW50YXhfY2hlY2tzKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NIRUNLX09CSkVDVDsKIAotICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnByZV9yZXF1ZXN0KQotICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BSRV9SRVFVRVNUOwotICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCkKLSAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9QT1NUX1JFUVVFU1Q7Ci0KICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX3NldHVwKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fU0VUVVA7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jbGVhbnVwKQpAQCAtMjU0LDYgKzI3Niw3IEBACiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfQ09NTUlUOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fY29tbWl0KQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fQ09NTUlUOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOwpAQCAtMjk1LDcgKzMxOCw3IEBACiAgICAgICovCiAgICAgewogICAgICAgICBvaWQgICAgIGxjX29pZFtdID0geyBJUElGU1RBVFNUQUJMRUxBU1RDSEFOR0VfT0lEIH07Ci0gICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KKyAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcjIobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KICAgICAgICAgICAgICAgICAoImlwSWZTdGF0c1RhYmxlTGFzdENoYW5nZWQiLCBOVUxMLAogICAgICAgICAgICAgICAgICBsY19vaWQsIE9JRF9MRU5HVEgobGNfb2lkKSwKICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpLApAQCAtMTM2OCw2ICsxMzkxLDcgQEAKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2lwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUElGU1RBVFNUQUJMRV9FWFRFUk5BTF9BQ0NFU1MKIGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgogaXBJZlN0YXRzVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4KGlwSWZTdGF0c1RhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpCiB7CkBAIC0xMzkzLDMgKzE0MTcsNCBAQAogCiAgICAgcmV0dXJuIHJvd3JlcV9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUElGU1RBVFNUQUJMRV9FWFRFUk5BTF9BQ0NFU1MgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfaW50ZXJmYWNlLmMKaW5kZXggMDk3Y2ViYi4uZTFjYTJjYiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfaW50ZXJmYWNlLmMKQEAgLTMwLDYgKzMwLDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTQ2LDYgKzQ3LDE4IEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBTeXN0ZW1TdGF0c1RhYmxlX2V4dGVybmFsX2FjY2VzcywgbGlibmV0c25tcG1pYnMpCisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHJvd19tZXJnZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGJhYnlfc3RlcHMpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19hbGxfcmVxdWVzdHNfZXJyb3IpCisKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwU3lzdGVtU3RhdHNUYWJsZV9jb250YWluZXJfc2l6ZSwgaXBTeXN0ZW1TdGF0c1RhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcFN5c3RlbVN0YXRzVGFibGVfcmVnaXN0cmF0aW9uX3NldCwgaXBTeXN0ZW1TdGF0c1RhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcFN5c3RlbVN0YXRzVGFibGVfcmVnaXN0cmF0aW9uX2dldCwgaXBTeXN0ZW1TdGF0c1RhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcFN5c3RlbVN0YXRzVGFibGVfY29udGFpbmVyX2dldCwgaXBTeXN0ZW1TdGF0c1RhYmxlX2V4dGVybmFsX2FjY2VzcykKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqCkBAIC04MCwxOSArOTMsMjMgQEAKICAgICAgICAgICAgICAgICBfaXBTeXN0ZW1TdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihpcFN5c3RlbVN0YXRzVGFibGVfaW50ZXJmYWNlX2N0eCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZfY3R4KTsKIAotCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBTWVNURU1TVEFUU1RBQkxFX0NPTlRBSU5FUl9HRVQKIG5ldHNubXBfY29udGFpbmVyICoKIGlwU3lzdGVtU3RhdHNUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIGlwU3lzdGVtU3RhdHNUYWJsZV9pZl9jdHguY29udGFpbmVyOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBTWVNURU1TVEFUU1RBQkxFX0NPTlRBSU5FUl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQU1lTVEVNU1RBVFNUQUJMRV9SRUdJU1RSQVRJT05fR0VUCiBpcFN5c3RlbVN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKIGlwU3lzdGVtU3RhdHNUYWJsZV9yZWdpc3RyYXRpb25fZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIGlwU3lzdGVtU3RhdHNUYWJsZV9pZl9jdHgudXNlcl9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUFNZU1RFTVNUQVRTVEFCTEVfUkVHSVNUUkFUSU9OX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBTWVNURU1TVEFUU1RBQkxFX1JFR0lTVFJBVElPTl9TRVQKIGlwU3lzdGVtU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgogaXBTeXN0ZW1TdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbl9zZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdyZWcpCkBAIC0xMDIsMTIgKzExOSwxNSBAQAogICAgIGlwU3lzdGVtU3RhdHNUYWJsZV9pZl9jdHgudXNlcl9jdHggPSBuZXdyZWc7CiAgICAgcmV0dXJuIG9sZDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQU1lTVEVNU1RBVFNUQUJMRV9SRUdJU1RSQVRJT05fU0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUFNZU1RFTVNUQVRTVEFCTEVfQ09OVEFJTkVSX1NJWkUKIGludAogaXBTeXN0ZW1TdGF0c1RhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpCiB7CiAgICAgcmV0dXJuIENPTlRBSU5FUl9TSVpFKGlwU3lzdGVtU3RhdHNUYWJsZV9pZl9jdHguY29udGFpbmVyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQU1lTVEVNU1RBVFNUQUJMRV9DT05UQUlORVJfU0laRSAqLwogCiAvKgogICogbWZkIG11bHRpcGxleGVyIG1vZGVzCkBAIC0yMjAsNyArMjQwLDggQEAKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUE9TVF9SRVFVRVNUOwogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKKyAgICAvKiBYWFggLSBhcmUgdGhlc2UgYWN0dWFsbHkgbmVjZXNzYXJ5PyAqLwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnNldF92YWx1ZXMpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfU0VUX1ZBTFVFUzsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5pcnJldmVyc2libGVfY29tbWl0KQpAQCAtMjQzLDcgKzI2NCw3IEBACiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfQ09NTUlUOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fY29tbWl0KQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fQ09NTUlUOwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiAgICAgaGFuZGxlciA9IG5ldHNubXBfYmFieV9zdGVwc19oYW5kbGVyX2dldChtZmRfbW9kZXMpOwogICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CkBAIC0xMTc1LDcgKzExOTYsNyBAQAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2lwU3lzdGVtU3RhdHNUYWJsZV9nZXRfdmFsdWVzICovCiAKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBTRVQgcHJvY2Vzc2luZwpAQCAtMTMzOSw2ICsxMzYwLDcgQEAKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2lwU3lzdGVtU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24gKi8KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBTWVNURU1TVEFUU1RBQkxFX0VYVEVSTkFMX0FDQ0VTUwogaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgogaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleChpcFN5c3RlbVN0YXRzVGFibGVfbWliX2luZGV4ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWliX2lkeCkKQEAgLTEzNjYsMyArMTM4OCw0IEBACiAKICAgICByZXR1cm4gcm93cmVxX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQU1lTVEVNU1RBVFNUQUJMRV9FWFRFUk5BTF9BQ0NFU1MgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcF9zY2FsYXJzLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5jCmluZGV4IDdmNjA4N2QuLmM4Y2M4OGEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcF9zY2FsYXJzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwX3NjYWxhcnMuYwpAQCAtNCw2ICs0LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTExLDI3ICsxMiwzMyBAQAogCiAjaW5jbHVkZSAiaXBfc2NhbGFycy5oIgogCi1pbnQKK3N0YXRpYyBpbnQKIGhhbmRsZV9pcEZvcndhcmRpbmcobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCiAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cyk7CiAKLWludAorc3RhdGljIGludAogaGFuZGxlX2lwRGVmYXVsdFRUTChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKTsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cyk7CiAKLWludAorc3RhdGljIGludAogaGFuZGxlX2lwdjZJcEZvcndhcmRpbmcobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cyk7CiAKLWludCBpcEFkZHJlc3NTcGluTG9ja1ZhbHVlOworc3RhdGljIGludAoraGFuZGxlX2lwdjZJcERlZmF1bHRIb3BMaW1pdChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKTsKIAotaW50CitzdGF0aWMgaW50IGlwQWRkcmVzc1NwaW5Mb2NrVmFsdWU7CisKK3N0YXRpYyBpbnQKIGhhbmRsZV9pcEFkZHJlc3NTcGluTG9jayhuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCkBAIC00MiwyNiArNDksMjQgQEAKIGluaXRfaXBfc2NhbGFycyh2b2lkKQogewogICAgIHN0YXRpYyBvaWQgCSAgICBpcEZvcndhcmRpbmdfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDQsIDEgfTsKLSAgICBzdGF0aWMgb2lkIAkgICAgaXBEZWZhdWx0VFRMX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA0LCAyLCAwIH07Ci0gICAgc3RhdGljIG9pZCAgICAgIGlwUmVhc21UaW1lb3V0X29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA0LCAxMywgMCB9OworICAgIHN0YXRpYyBvaWQgCSAgICBpcERlZmF1bHRUVExfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDQsIDIgfTsKICAgICBzdGF0aWMgb2lkICAgICAgaXB2NklwRm9yd2FyZGluZ19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgNCwgMjUgfTsKLSAgICBzdGF0aWMgb2lkICAgICAgaXB2NklwRGVmYXVsdEhvcExpbWl0X29pZFtdID0KLSAgICAgICAgeyAxLCAzLCA2LCAxLCAyLCAxLCA0LCAyNiwgMCB9OworICAgIHN0YXRpYyBvaWQgICAgICBpcHY2SXBEZWZhdWx0SG9wTGltaXRfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDQsIDI2IH07CiAgICAgc3RhdGljIG9pZCAgICAgIGlwQWRkcmVzc1NwaW5Mb2NrX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA0LCAzMyB9OwogCiAgICAgREVCVUdNU0dUTCgoImlwX3NjYWxhciIsICJJbml0aWFsaXppbmdcbiIpKTsKIAotICAgIG5ldHNubXBfcmVnaXN0ZXJfbnVtX2ZpbGVfaW5zdGFuY2UKLSAgICAgICAgKCJpcFJlYXNtVGltZW91dCIsCi0gICAgICAgICBpcFJlYXNtVGltZW91dF9vaWQsIE9JRF9MRU5HVEgoaXBSZWFzbVRpbWVvdXRfb2lkKSwKLSAgICAgICAgICIvcHJvYy9zeXMvbmV0L2lwdjQvaXBmcmFnX3RpbWUiLCBBU05fSU5URUdFUiwKLSAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZLCBOVUxMLCBOVUxMKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgIG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyKG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiaXBGb3J3YXJkaW5nIiwgaGFuZGxlX2lwRm9yd2FyZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRm9yd2FyZGluZ19vaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPSURfTEVOR1RIKGlwRm9yd2FyZGluZ19vaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhcihuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImlwRGVmYXVsdFRUTCIsIGhhbmRsZV9pcERlZmF1bHRUVEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcERlZmF1bHRUVExfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0lEX0xFTkdUSChpcERlZmF1bHRUVExfb2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSkpOwogCiAgICAgbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXIobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImlwdjZJcEZvcndhcmRpbmciLCBoYW5kbGVfaXB2NklwRm9yd2FyZGluZywKQEAgLTcwLDYgKzc1LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSkpOwogCiAgICAgbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXIobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImlwdjZJcERlZmF1bHRIb3BMaW1pdCIsIGhhbmRsZV9pcHY2SXBEZWZhdWx0SG9wTGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwdjZJcERlZmF1bHRIb3BMaW1pdF9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9JRF9MRU5HVEgoaXB2NklwRGVmYXVsdEhvcExpbWl0X29pZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSkpOworCisgICAgbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXIobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImlwQWRkcmVzc1NwaW5Mb2NrIiwgaGFuZGxlX2lwQWRkcmVzc1NwaW5Mb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcEFkZHJlc3NTcGluTG9ja19vaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9JRF9MRU5HVEgoaXBBZGRyZXNzU3BpbkxvY2tfb2lkKSwKQEAgLTc4LDIxICs4OSw5IEBACiAgICAgLyogSW5pdGlhbGl6ZSBzcGluIGxvY2sgd2l0aCByYW5kb20gdmFsdWUgKi8KICAgICBpcEFkZHJlc3NTcGluTG9ja1ZhbHVlID0gKGludCkgcmFuZG9tKCk7CiAKLSAgICBuZXRzbm1wX3JlZ2lzdGVyX251bV9maWxlX2luc3RhbmNlCi0gICAgICAgICgiaXB2NklwRGVmYXVsdEhvcExpbWl0IiwKLSAgICAgICAgIGlwdjZJcERlZmF1bHRIb3BMaW1pdF9vaWQsIE9JRF9MRU5HVEgoaXB2NklwRGVmYXVsdEhvcExpbWl0X29pZCksCi0gICAgICAgICAiL3Byb2Mvc3lzL25ldC9pcHY2L2NvbmYvZGVmYXVsdC9ob3BfbGltaXQiLCBBU05fSU5URUdFUiwKLSAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSwgTlVMTCwgTlVMTCk7Ci0KLSAgICAgbmV0c25tcF9yZWdpc3Rlcl9udW1fZmlsZV9pbnN0YW5jZQotICAgICAgICAoImlwRGVmYXVsdFRUTCIsCi0gICAgICAgICBpcERlZmF1bHRUVExfb2lkLCBPSURfTEVOR1RIKGlwRGVmYXVsdFRUTF9vaWQpLAotICAgICAgICAgIi9wcm9jL3N5cy9uZXQvaXB2NC9pcF9kZWZhdWx0X3R0bCIsIEFTTl9JTlRFR0VSLAotICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFLCBOVUxMLCBOVUxMKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogfQogCi1pbnQKK3N0YXRpYyBpbnQKIGhhbmRsZV9pcEZvcndhcmRpbmcobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gICAqcmVxaW5mbywKQEAgLTEyMiw2ICsxMjEsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIC8qCiAgICAgICAgICAqIFNFVCBSRVFVRVNUCiAgICAgICAgICAqCkBAIC0xODAsNiArMTgwLDcgQEAKICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywgU05NUF9FUlJfVU5ET0ZBSUxFRCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgLyogd2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBzbyB0aGlzIGlzIGEgcmVhbGx5IGJhZCBlcnJvciAqLwpAQCAtMTkxLDcgKzE5MiwxMDcgQEAKIH0KIAogCi1pbnQKK3N0YXRpYyBpbnQKK2hhbmRsZV9pcERlZmF1bHRUVEwobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gICAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gICAgICAgICAqcmVxdWVzdHMpCit7CisgICAgaW50ICAgICAgcmM7CisgICAgdV9sb25nICAgdmFsdWU7CisKKyAgICAvKiBXZSBhcmUgbmV2ZXIgY2FsbGVkIGZvciBhIEdFVE5FWFQgaWYgaXQncyByZWdpc3RlcmVkIGFzIGEKKyAgICAgICAiaW5zdGFuY2UiLCBhcyBpdCdzICJtYWdpY2FsbHkiIGhhbmRsZWQgZm9yIHVzLiAgKi8KKworICAgIC8qIGEgaW5zdGFuY2UgaGFuZGxlciBhbHNvIG9ubHkgaGFuZHMgdXMgb25lIHJlcXVlc3QgYXQgYSB0aW1lLCBzbworICAgICAgIHdlIGRvbid0IG5lZWQgdG8gbG9vcCBvdmVyIGEgbGlzdCBvZiByZXF1ZXN0czsgd2UnbGwgb25seSBnZXQgb25lLiAqLworCisgICAgc3dpdGNoKHJlcWluZm8tPm1vZGUpIHsKKworICAgICAgICBjYXNlIE1PREVfR0VUOgorICAgICAgICAgICAgcmMgPSBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcERlZmF1bHRUVExfZ2V0KCZ2YWx1ZSk7CisgICAgICAgICAgICBpZiAocmMgIT0gMCkgeworICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfTk9TVUNISU5TVEFOQ0UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3RzLT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikmdmFsdWUsIHNpemVvZih2YWx1ZSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCisgICAgICAgIC8qCisgICAgICAgICAqIFNFVCBSRVFVRVNUCisgICAgICAgICAqCisgICAgICAgICAqIG11bHRpcGxlIHN0YXRlcyBpbiB0aGUgdHJhbnNhY3Rpb24uICBTZWU6CisgICAgICAgICAqIGh0dHA6Ly93d3cubmV0LXNubXAub3JnL3R1dG9yaWFsLTUvdG9vbGtpdC9taWJfbW9kdWxlL3NldC1hY3Rpb25zLmpwZworICAgICAgICAgKi8KKyAgICAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogc3RvcmUgb2xkIGluZm8gZm9yIHVuZG8gbGF0ZXIKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgcmMgPSBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcERlZmF1bHRUVExfZ2V0KCZ2YWx1ZSk7CisgICAgICAgICAgICBpZiAocmMgPCAwKSB7CisgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX05PQ1JFQVRJT04pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB1X2xvbmcgKnZhbHVlX3NhdmU7CisgICAgICAgICAgICAgICAgbWVtZHVwKCh1X2NoYXIgKiopICYgdmFsdWVfc2F2ZSwgKHVfY2hhciAqKSAmdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih2YWx1ZSkpOworICAgICAgICAgICAgICAgIGlmICggTlVMTCA9PSB2YWx1ZV9zYXZlICkKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywgU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfYWRkX2xpc3RfZGF0YShyZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfZGF0YV9saXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiaXB0dGwiLCB2YWx1ZV9zYXZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlKSk7CisJICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgTU9ERV9TRVRfRlJFRToKKyAgICAgICAgICAgIC8qIFhYWDogZnJlZSByZXNvdXJjZXMgYWxsb2NhdGVkIGluIFJFU0VSVkUxIGFuZC9vcgorICAgICAgICAgICAgICAgUkVTRVJWRTIuICBTb21ldGhpbmcgZmFpbGVkIHNvbWV3aGVyZSwgYW5kIHRoZSBzdGF0ZXMKKyAgICAgICAgICAgICAgIGJlbG93IHdvbid0IGJlIGNhbGxlZC4gKi8KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgorICAgICAgICAgICAgLyogWFhYOiBwZXJmb3JtIHRoZSB2YWx1ZSBjaGFuZ2UgaGVyZSAqLworICAgICAgICAgICAgdmFsdWUgPSAgKihyZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcik7CisgICAgICAgICAgICByYyA9IG5ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwRGVmYXVsdFRUTF9zZXQodmFsdWUpOworICAgICAgICAgICAgaWYgKCAwICE9IHJjICkgeworICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsIHJjKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgTU9ERV9TRVRfQ09NTUlUOgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9VTkRPOgorICAgICAgICAgICAgIHZhbHVlID0KKyAgICAgICAgICAgICAgICAgKigodV9sb25nICopIG5ldHNubXBfcmVxdWVzdF9nZXRfbGlzdF9kYXRhKHJlcXVlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlwdHRsIikpOworICAgICAgICAgICAgIHJjID0gbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXBEZWZhdWx0VFRMX3NldCh2YWx1ZSk7CisgICAgICAgICAgICAgaWYgKCAwICE9IHJjICkgeworICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLCBTTk1QX0VSUl9VTkRPRkFJTEVEKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAvKiB3ZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIHNvIHRoaXMgaXMgYSByZWFsbHkgYmFkIGVycm9yICovCisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidW5rbm93biBtb2RlICglZCkgaW4gaGFuZGxlX2lwRGVmYXVsdFRUTFxuIiwgcmVxaW5mby0+bW9kZSApOworICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICB9CisKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KKworCitzdGF0aWMgaW50CiBoYW5kbGVfaXB2NklwRm9yd2FyZGluZyhuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLApAQCAtMjI0LDYgKzMyNSw3IEBACiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIC8qCiAgICAgICAgICAqIFNFVCBSRVFVRVNUCiAgICAgICAgICAqCkBAIC0yNTMsNyArMzU1LDcgQEAKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9hZGRfbGlzdF9kYXRhKHJlcXVlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2RhdGFfbGlzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiaXBmdyIsIHZhbHVlX3NhdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJpcDZmdyIsIHZhbHVlX3NhdmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjc2LDEyICszNzgsMTMgQEAKICAgICBjYXNlIE1PREVfU0VUX1VORE86CiAgICAgICAgIHZhbHVlID0KICAgICAgICAgICAgICooKHVfbG9uZyAqKSBuZXRzbm1wX3JlcXVlc3RfZ2V0X2xpc3RfZGF0YShyZXF1ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXBmdyIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXA2ZnciKSk7CiAgICAgICAgIHJjID0gbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXB2NklwRm9yd2FyZGluZ19zZXQodmFsdWUpOwogICAgICAgICBpZiAoIDAgIT0gcmMgKSB7CiAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLCBTTk1QX0VSUl9VTkRPRkFJTEVEKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICBkZWZhdWx0OgogICAgICAgICAvKgpAQCAtMjk1LDcgKzM5OCw4IEBACiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CiAKLWludAorCitzdGF0aWMgaW50CiBoYW5kbGVfaXBBZGRyZXNzU3BpbkxvY2sobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gICAqcmVxaW5mbywKQEAgLTMxNyw2ICs0MjEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihpcEFkZHJlc3NTcGluTG9ja1ZhbHVlKSk7CiAgICAgICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgLyoKICAgICAgICAgICogU0VUIFJFUVVFU1QKICAgICAgICAgICoKQEAgLTM1Miw2ICs0NTcsNyBAQAogCiAgICAgICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKICAgICAgICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIC8qIHdlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgc28gdGhpcyBpcyBhIHJlYWxseSBiYWQgZXJyb3IgKi8KQEAgLTM2MSwzICs0NjcsMTIzIEBACiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KKworCitzdGF0aWMgaW50CitoYW5kbGVfaXB2NklwRGVmYXVsdEhvcExpbWl0KG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgdV9sb25nICAgICAgICAgIHZhbHVlOworICAgIGludCAgICAgICAgICAgICByYzsKKyAgICAvKgorICAgICAqIFdlIGFyZSBuZXZlciBjYWxsZWQgZm9yIGEgR0VUTkVYVCBpZiBpdCdzIHJlZ2lzdGVyZWQgYXMgYQorICAgICAqICJpbnN0YW5jZSIsIGFzIGl0J3MgIm1hZ2ljYWxseSIgaGFuZGxlZCBmb3IgdXMuICAKKyAgICAgKi8KKworICAgIC8qCisgICAgICogYSBpbnN0YW5jZSBoYW5kbGVyIGFsc28gb25seSBoYW5kcyB1cyBvbmUgcmVxdWVzdCBhdCBhIHRpbWUsIHNvCisgICAgICogd2UgZG9uJ3QgbmVlZCB0byBsb29wIG92ZXIgYSBsaXN0IG9mIHJlcXVlc3RzOyB3ZSdsbCBvbmx5IGdldCBvbmUuIAorICAgICAqLworCisgICAgc3dpdGNoIChyZXFpbmZvLT5tb2RlKSB7CisKKyAgICBjYXNlIE1PREVfR0VUOgorCisgICAgICAgIHJjID0gbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXB2NklwRGVmYXVsdEhvcExpbWl0X2dldCgmdmFsdWUpOworICAgICAgICBpZiAocmMgIT0gMCkgeworICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX05PU1VDSElOU1RBTkNFKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0cy0+cmVxdWVzdHZiLCBBU05fSU5URUdFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikmdmFsdWUsIHNpemVvZih2YWx1ZSkpOworICAgICAgICB9CisKKyAgICAgICAgYnJlYWs7CisKKyNpZmRlZiBOT1RZRVQKKyAgICAgICAgLyoKKyAgICAgICAgICogU0VUIFJFUVVFU1QKKyAgICAgICAgICoKKyAgICAgICAgICogbXVsdGlwbGUgc3RhdGVzIGluIHRoZSB0cmFuc2FjdGlvbi4gIFNlZToKKyAgICAgICAgICogaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvdHV0b3JpYWwtNS90b29sa2l0L21pYl9tb2R1bGUvc2V0LWFjdGlvbnMuanBnCisgICAgICAgICAqLworICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CisgICAgICAgIC8qCisgICAgICAgICAqIG9yIHlvdSBjb3VsZCB1c2UgbmV0c25tcF9jaGVja192Yl90eXBlX2FuZF9zaXplIGluc3RlYWQgCisgICAgICAgICAqLworICAgICAgICByYyA9IG5ldHNubXBfY2hlY2tfdmJfdHlwZShyZXF1ZXN0cy0+cmVxdWVzdHZiLCBBU05fSU5URUdFUik7CisgICAgICAgIGlmIChyYyAhPSBTTk1QX0VSUl9OT0VSUk9SKSB7CisgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLCByYyk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgorICAgICAgICAvKgorICAgICAgICAgKiBYWFggbWFsbG9jICJ1bmRvIiBzdG9yYWdlIGJ1ZmZlciAKKyAgICAgICAgICovCisgICAgICAgIGlmICggLyogWFhYIGlmIG1hbGxvYywgb3Igd2hhdGV2ZXIsIGZhaWxlZDogKi8gKSB7CisgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgTU9ERV9TRVRfRlJFRToKKyAgICAgICAgLyoKKyAgICAgICAgICogWFhYOiBmcmVlIHJlc291cmNlcyBhbGxvY2F0ZWQgaW4gUkVTRVJWRTEgYW5kL29yCisgICAgICAgICAqIFJFU0VSVkUyLiAgU29tZXRoaW5nIGZhaWxlZCBzb21ld2hlcmUsIGFuZCB0aGUgc3RhdGVzCisgICAgICAgICAqIGJlbG93IHdvbid0IGJlIGNhbGxlZC4gCisgICAgICAgICAqLworICAgICAgICBicmVhazsKKworICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgorICAgICAgICAvKgorICAgICAgICAgKiBYWFg6IHBlcmZvcm0gdGhlIHZhbHVlIGNoYW5nZSBoZXJlIAorICAgICAgICAgKi8KKyAgICAgICAgaWYgKCAvKiBYWFg6IGVycm9yPyAqLyApIHsKKyAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsIC8qIHNvbWUgZXJyb3IgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgTU9ERV9TRVRfQ09NTUlUOgorICAgICAgICAvKgorICAgICAgICAgKiBYWFg6IGRlbGV0ZSB0ZW1wb3Jhcnkgc3RvcmFnZSAKKyAgICAgICAgICovCisgICAgICAgIGlmICggLyogWFhYOiBlcnJvcj8gKi8gKSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogdHJ5IF9yZWFsbHlfcmVhbGx5XyBoYXJkIHRvIG5ldmVyIGdldCB0byB0aGlzIHBvaW50IAorICAgICAgICAgICAgICovCisgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9DT01NSVRGQUlMRUQpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBNT0RFX1NFVF9VTkRPOgorICAgICAgICAvKgorICAgICAgICAgKiBYWFg6IFVORE8gYW5kIHJldHVybiB0byBwcmV2aW91cyB2YWx1ZSBmb3IgdGhlIG9iamVjdCAKKyAgICAgICAgICovCisgICAgICAgIGlmICggLyogWFhYOiBlcnJvcj8gKi8gKSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogdHJ5IF9yZWFsbHlfcmVhbGx5XyBoYXJkIHRvIG5ldmVyIGdldCB0byB0aGlzIHBvaW50IAorICAgICAgICAgICAgICovCisgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9VTkRPRkFJTEVEKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyNlbmRpZgorCisgICAgZGVmYXVsdDoKKyAgICAgICAgLyoKKyAgICAgICAgICogd2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBzbyB0aGlzIGlzIGEgcmVhbGx5IGJhZCBlcnJvciAKKyAgICAgICAgICovCisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJ1bmtub3duIG1vZGUgKCVkKSBpbiBoYW5kbGVfaXB2NklwRGVmYXVsdEhvcExpbWl0XG4iLAorICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICB9CisKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGVfaW50ZXJmYWNlLmMKaW5kZXggZjFlNzg0NC4uYTg1MWEzMCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGVfaW50ZXJmYWNlLmMKQEAgLTMwLDYgKzMwLDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTQ4LDYgKzQ5LDEwIEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyb3dfbWVyZ2UpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShiYWJ5X3N0ZXBzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioKQEAgLTM0Nyw3ICszNTIsNyBAQAogICAgICAqLwogICAgIHsKICAgICAgICAgb2lkICAgICAgICAgICAgIGxjX29pZFtdID0geyBJUFY0SU5URVJGQUNFVEFCTEVMQVNUQ0hBTkdFX09JRCB9OwotICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uCisgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIyKG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJpcHY0VGFibGVMYXN0Q2hhbmdlZCIsIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxjX29pZCwgT0lEX0xFTkdUSChsY19vaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSksCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9zdWJhZ2VudC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGVfc3ViYWdlbnQuYwppbmRleCAzYzg1YTU0Li4zNWIyZTk2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9zdWJhZ2VudC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlX3N1YmFnZW50LmMKQEAgLTYsOSArNiwxNCBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYWdlbnR4X2VuYWJsZV9zdWJhZ2VudCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGFnZW50X2NoZWNrX2FuZF9wcm9jZXNzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZW5hYmxlX3N0ZGVycmxvZykKKwogLyoKICAqIGluY2x1ZGUgb3VyIHBhcmVudCBoZWFkZXIgCiAgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2SW50ZXJmYWNlVGFibGUvaXB2NkludGVyZmFjZVRhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGVfaW50ZXJmYWNlLmMKaW5kZXggYWE4ZmMzZi4uY2JkNTMzYyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGVfaW50ZXJmYWNlLmMKQEAgLTMwLDYgKzMwLDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTQ4LDYgKzQ5LDEwIEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyb3dfbWVyZ2UpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShiYWJ5X3N0ZXBzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioKQEAgLTM0NSw3ICszNTAsNyBAQAogICAgICAqLwogICAgIHsKICAgICAgICAgb2lkICAgICAgICAgICAgIGxjX29pZFtdID0geyBJUFY2SU5URVJGQUNFVEFCTEVMQVNUQ0hBTkdFX09JRCB9OwotICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uCisgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIyKG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJpcHY2VGFibGVMYXN0Q2hhbmdlZCIsIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxjX29pZCwgT0lEX0xFTkdUSChsY19vaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSksCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlLmMKaW5kZXggYTZlOTUyZS4uZWYyMDg4YiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuYwpAQCAtMzAsNiArMzAsNyBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtNDYsNiArNDcsMTkgQEAKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9leHRlcm5hbF9hY2Nlc3MsIGxpYm5ldHNubXBtaWJzKQorCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyb3dfbWVyZ2UpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShiYWJ5X3N0ZXBzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfY29udGFpbmVyX3Jvd19pbnNlcnQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19hbGxfcmVxdWVzdHNfZXJyb3IpCisKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9zaXplLCBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uX3NldCwgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQsIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfZ2V0LCBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKgpAQCAtODQsMTkgKzk4LDIzIEBACiBzdGF0aWMgdm9pZAogX2NhY2hlX2ZyZWUobmV0c25tcF9jYWNoZSAqIGNhY2hlLCB2b2lkICptYWdpYyk7CiAKLQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX0NPTlRBSU5FUl9HRVQKIG5ldHNubXBfY29udGFpbmVyICoKIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4LmNvbnRhaW5lcjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX0NPTlRBSU5FUl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX1JFR0lTVFJBVElPTl9HRVQKIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbiAqCiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWdpc3RyYXRpb25fZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2lmX2N0eC51c2VyX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX1JFR0lTVFJBVElPTl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX1JFR0lTVFJBVElPTl9TRVQKIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbiAqCiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWdpc3RyYXRpb25fc2V0CiAgICAgKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbiAqIG5ld3JlZykKQEAgLTEwNiwxMiArMTI0LDE1IEBACiAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4LnVzZXJfY3R4ID0gbmV3cmVnOwogICAgIHJldHVybiBvbGQ7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9SRUdJU1RSQVRJT05fU0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9DT05UQUlORVJfU0laRQogaW50CiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfc2l6ZSh2b2lkKQogewogICAgIHJldHVybiBDT05UQUlORVJfU0laRShpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pZl9jdHguY29udGFpbmVyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX0NPTlRBSU5FUl9TSVpFICovCiAKIC8qCiAgKiBtZmQgbXVsdGlwbGV4ZXIgbW9kZXMKQEAgLTIyNCw2ICsyNDUsMTMgQEAKICAgICAgKi8KICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5vYmplY3RfbG9va3VwKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX09CSkVDVF9MT09LVVA7CisKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wcmVfcmVxdWVzdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9QUkVfUkVRVUVTVDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUE9TVF9SRVFVRVNUOworCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnNldF92YWx1ZXMpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfU0VUX1ZBTFVFUzsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5pcnJldmVyc2libGVfY29tbWl0KQpAQCAtMjMxLDExICsyNTksNiBAQAogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPm9iamVjdF9zeW50YXhfY2hlY2tzKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NIRUNLX09CSkVDVDsKIAotICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnByZV9yZXF1ZXN0KQotICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BSRV9SRVFVRVNUOwotICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCkKLSAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9QT1NUX1JFUVVFU1Q7Ci0KICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX3NldHVwKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fU0VUVVA7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jbGVhbnVwKQpAQCAtMjUxLDYgKzI3NCw3IEBACiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfQ09NTUlUOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fY29tbWl0KQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fQ09NTUlUOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOwpAQCAtMTA1Nyw2ICsxMDgxLDcgQEAKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9FWFRFUk5BTF9BQ0NFU1MKIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKgogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4CiAgICAgKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpCkBAIC0xMDg0LDYgKzExMDksNyBAQAogCiAgICAgcmV0dXJuIHJvd3JlcV9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9FWFRFUk5BTF9BQ0NFU1MgKi8KIAogc3RhdGljIGludAogX2NhY2hlX2xvYWQobmV0c25tcF9jYWNoZSAqIGNhY2hlLCB2b2lkICp2bWFnaWMpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkuaAppbmRleCAxYjk0YTU5Li44NmMwNWQ3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS5oCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJLmgKQEAgLTI1LDE1ICsyNSwxNiBAQAogCiAvKgogICogdGhlc2UgbmV3IG1vZHVsZSByZS1yZXdyaXRlcyBoYXZlIG9ubHkgYmVlbiBpbXBsZW1lbnRlZCBmb3IKLSAqIGxpbnV4LgorICogTGludXggYW5kICpCU0QuCiAgKi8KLSNpZiBkZWZpbmVkKCBsaW51eCApCisjaWYgZGVmaW5lZChsaW51eCkKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYiBpcC1mb3J3YXJkLW1pYiB0Y3AtbWliIHVkcC1taWIpCisjZWxpZiBkZWZpbmVkKGRyYWdvbmZseSkgfHwgZGVmaW5lZChmcmVlYnNkNykgfHwgXAorICAgIGRlZmluZWQobmV0YnNkNSkgfHwgZGVmaW5lZChvcGVuYnNkNCkgfHwgZGVmaW5lZCggZGFyd2luICkKIGNvbmZpZ19yZXF1aXJlKGlwLW1pYiBpcC1mb3J3YXJkLW1pYiB0Y3AtbWliIHVkcC1taWIpCiAjZWxpZiBkZWZpbmVkKHNvbGFyaXMyKQogY29uZmlnX3JlcXVpcmUodGNwLW1pYiB1ZHAtbWliKQotI2VsaWYgZGVmaW5lZChmcmVlYnNkNCkgfHwgZGVmaW5lZChkcmFnb25mbHkpCi1jb25maWdfcmVxdWlyZSh0Y3AtbWliIHVkcC1taWIpCi0jZWxpZiBkZWZpbmVkKG9wZW5ic2Q0KQorI2VsaWYgZGVmaW5lZChmcmVlYnNkNCkKIGNvbmZpZ19yZXF1aXJlKHRjcC1taWIgdWRwLW1pYikKICNlbGlmIGRlZmluZWQobmV0YnNkMSkKIGNvbmZpZ19yZXF1aXJlKHRjcC1taWIgdWRwLW1pYikKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYwppbmRleCAxMGY3MzFjLi44YmQwNzkwIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jCkBAIC03MSw2ICs3MSw4NyBAQAogCSAqKioqKioqKioqKioqKioqKioqKiovCiAKIAorI2lmZGVmIGhwdXgxMQorI2RlZmluZSBJQ01QX1NUQVRfU1RSVUNUVVJFCWludAorI2VuZGlmCisKKyNpZmRlZiBsaW51eAorI2RlZmluZSBJQ01QX1NUQVRfU1RSVUNUVVJFCXN0cnVjdCBpY21wX21pYgorI2RlZmluZSBVU0VTX1NOTVBfREVTSUdORURfSUNNUFNUQVQKKyN1bmRlZiBJQ01QU1RBVF9TWU1CT0wKKyNlbmRpZgorCisjaWZkZWYgc29sYXJpczIKKyNkZWZpbmUgSUNNUF9TVEFUX1NUUlVDVFVSRQltaWIyX2ljbXBfdAorI2RlZmluZSBVU0VTX1NOTVBfREVTSUdORURfSUNNUFNUQVQKKyN1bmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisjaW5jbHVkZSAia2VybmVsX21pYi5oIgorc3RhdGljIGludAorc29sYXJpc19yZWFkX2ljbXBfc3RhdChJQ01QX1NUQVRfU1RSVUNUVVJFICopOworc3RhdGljIGludAorc29sYXJpc19yZWFkX2ljbXBfbXNnX3N0YXQoSUNNUF9TVEFUX1NUUlVDVFVSRSAqLCBzdHJ1Y3QgaWNtcDRfbXNnX21pYiAqLCBpbnQgKik7CisjZW5kaWYKKworI2lmZGVmIE5FVEJTRF9TVEFUU19WSUFfU1lTQ1RMCisjZGVmaW5lIElDTVBfU1RBVF9TVFJVQ1RVUkUgICAgIHN0cnVjdCBpY21wX21pYgorI2RlZmluZSBVU0VTX1NOTVBfREVTSUdORURfSUNNUFNUQVQKKyN1bmRlZiBJQ01QX05TVEFUUworI2VuZGlmCisKKyNpZmRlZiBIQVZFX0lQSExQQVBJX0gKKyNpbmNsdWRlIDxpcGhscGFwaS5oPgorI2RlZmluZSBJQ01QX1NUQVRfU1RSVUNUVVJFIE1JQl9JQ01QCisjZW5kaWYKKworI2lmIChkZWZpbmVkKE5FVFNOTVBfQ0FOX1VTRV9TWVNDVEwpICYmIGRlZmluZWQoSUNNUENUTF9TVEFUUykpCisjZGVmaW5lIElDTVBfU1RBVF9TVFJVQ1RVUkUJc3RydWN0IGljbXBfbWliCisjZGVmaW5lIFVTRVNfU05NUF9ERVNJR05FRF9JQ01QU1RBVAorI3VuZGVmIElDTVBTVEFUX1NZTUJPTAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NZU19JQ01QSVBTVEFUU19ICisvKiBvciAjaWZkZWYJCUhBVkVfU1lTX1RDUElQU1RBVFNfSCAgPz8/ICovCisjZGVmaW5lIElDTVBfU1RBVF9TVFJVQ1RVUkUJc3RydWN0IGtuYQorI2RlZmluZSBVU0VTX1RSQURJVElPTkFMX0lDTVBTVEFUCisjZW5kaWYKKworI2lmICFkZWZpbmVkKElDTVBfU1RBVF9TVFJVQ1RVUkUpCisjZGVmaW5lIElDTVBfU1RBVF9TVFJVQ1RVUkUJc3RydWN0IGljbXBzdGF0CisjZGVmaW5lIFVTRVNfVFJBRElUSU9OQUxfSUNNUFNUQVQKKyNlbmRpZgorCitJQ01QX1NUQVRfU1RSVUNUVVJFIGljbXBzdGF0OworCisvKiBJZiB0aGV5IGp1c3QgYWxsIGFncmVlZCAuLi4gKi8KKworI2lmbmRlZiBJQ01QX0RFU1RfVU5SRUFDSAorI2RlZmluZSBJQ01QX0RFU1RfVU5SRUFDSCBJQ01QX1VOUkVBQ0gKKyNlbmRpZgorI2lmbmRlZiBJQ01QX1NPVVJDRV9RVUVOQ0gKKyNkZWZpbmUgSUNNUF9TT1VSQ0VfUVVFTkNIIElDTVBfU09VUkNFUVVFTkNICisjZW5kaWYKKyNpZm5kZWYgSUNNUF9USU1FX0VYQ0VFREVECisjZGVmaW5lIElDTVBfVElNRV9FWENFRURFRCBJQ01QX1RJTVhDRUVECisjZW5kaWYKKyNpZm5kZWYgSUNNUF9QQVJBTUVURVJQUk9CCisjZGVmaW5lIElDTVBfUEFSQU1FVEVSUFJPQiBJQ01QX1BBUkFNUFJPQgorI2VuZGlmCisjaWZuZGVmIElDTVBfVElNRVNUQU1QCisjZGVmaW5lIElDTVBfVElNRVNUQU1QIElDTVBfVFNUQU1QCisjZW5kaWYKKyNpZm5kZWYgSUNNUF9USU1FU1RBTVBSRVBMWQorI2RlZmluZSBJQ01QX1RJTUVTVEFNUFJFUExZIElDTVBfVFNUQU1QUkVQTFkKKyNlbmRpZgorI2lmbmRlZiBJQ01QX0FERFJFU1MKKyNkZWZpbmUgSUNNUF9BRERSRVNTIElDTVBfTUFTS1JFUQorI2VuZGlmCisjaWZuZGVmIElDTVBfQUREUkVTU1JFUExZCisjZGVmaW5lIElDTVBfQUREUkVTU1JFUExZIElDTVBfTUFTS1JFUExZCisjZW5kaWYKKyNpZm5kZWYgTUxEX0xJU1RFTkVSX1JFRFVDVElPTgorI2RlZmluZSBNTERfTElTVEVORVJfUkVEVUNUSU9OIE1MRF9MSVNURU5FUl9ET05FCisjZW5kaWYKKwogLyoKICAqIERlZmluZSB0aGUgT0lEIHBvaW50ZXIgdG8gdGhlIHRvcCBvZiB0aGUgbWliIHRyZWUgdGhhdCB3ZSdyZQogICogcmVnaXN0ZXJpbmcgdW5kZXJuZWF0aCAKQEAgLTg0LDcgKzE2NSw3IEBACiBleHRlcm4gaW50ICAgICAgaXBfbW9kdWxlX2NvdW50OwogI2VuZGlmCiAKLSNpZmRlZiBsaW51eAorI2lmZGVmIFVTRVNfU05NUF9ERVNJR05FRF9JQ01QU1RBVAogc3RydWN0IGljbXBfc3RhdHNfdGFibGVfZW50cnkgewogCXVpbnQzMl90IGlwVmVyOwogICAgICAgICB1aW50MzJfdCBpY21wU3RhdHNJbk1zZ3M7CkBAIC0xMjAsNTQgKzIwMSw4MCBAQAogaWNtcF9zdGF0c19sb2FkKG5ldHNubXBfY2FjaGUgKmNhY2hlLCB2b2lkICp2bWFnaWMpCiB7CiAKLQkvKgotICAgICAgICAgKiBub3RlIGRvbid0IGJvdGhlciB1c2luZyB0aGUgcGFzc2VkIGluIGNhY2hlCi0JICogYW5kIHZtYWdpYyBwb2ludGVycy4gIFRoZXkgYXJlIHVzZWxlc3MgYXMgdGhleSAKLQkgKiBjdXJyZW50bHkgcG9pbnQgdG8gdGhlIGljbXAgc3lzdGVtIHN0YXRzIGNhY2hlCQotCSAqIHNpbmNlIEkgc2VlIGxpdHRsZSBwb2ludCBpbiByZWdpc3RlcmluZyBhbm90aGVyCi0JICogY2FjaGUgZm9yIHRoaXMgdGFibGUuICBJdHMgbm90IHJlYWxseSBuZWVkZWQKLQkgKi8KKyAgICAvKgorICAgICAqIG5vdGUgZG9uJ3QgYm90aGVyIHVzaW5nIHRoZSBwYXNzZWQgaW4gY2FjaGUKKyAgICAgKiBhbmQgdm1hZ2ljIHBvaW50ZXJzLiAgVGhleSBhcmUgdXNlbGVzcyBhcyB0aGV5IAorICAgICAqIGN1cnJlbnRseSBwb2ludCB0byB0aGUgaWNtcCBzeXN0ZW0gc3RhdHMgY2FjaGUJCisgICAgICogc2luY2UgSSBzZWUgbGl0dGxlIHBvaW50IGluIHJlZ2lzdGVyaW5nIGFub3RoZXIKKyAgICAgKiBjYWNoZSBmb3IgdGhpcyB0YWJsZS4gIEl0cyBub3QgcmVhbGx5IG5lZWRlZAorICAgICAqLwogCi0JaW50IGk7Ci0Jc3RydWN0IGljbXBfbWliIHY0aWNtcDsKLQlzdHJ1Y3QgaWNtcDZfbWliIHY2aWNtcDsKLQlmb3IoaT0wO2k8MjtpKyspIHsKLQkJc3dpdGNoKGkpIHsKLQkJCWNhc2UgMDoKLQkJCQlsaW51eF9yZWFkX2ljbXBfc3RhdCgmdjRpY21wKTsKLQkJCQlpY21wX3N0YXRzX3RhYmxlW2ldLmljbXBTdGF0c0luTXNncyA9IHY0aWNtcC5pY21wSW5Nc2dzOwotCQkJCWljbXBfc3RhdHNfdGFibGVbaV0uaWNtcFN0YXRzSW5FcnJvcnMgPSB2NGljbXAuaWNtcEluRXJyb3JzOwotCQkJCWljbXBfc3RhdHNfdGFibGVbaV0uaWNtcFN0YXRzT3V0TXNncyA9IHY0aWNtcC5pY21wT3V0TXNnczsKLQkJCQlpY21wX3N0YXRzX3RhYmxlW2ldLmljbXBTdGF0c091dEVycm9ycyA9IHY0aWNtcC5pY21wT3V0RXJyb3JzOwotCQkJCWJyZWFrOwotCQkJZGVmYXVsdDoKLQkJCQltZW1zZXQoJmljbXBfc3RhdHNfdGFibGVbaV0sMCwKLQkJCQkJc2l6ZW9mKHN0cnVjdCBpY21wX3N0YXRzX3RhYmxlX2VudHJ5KSk7Ci0JCQkJbGludXhfcmVhZF9pY21wNl9zdGF0KCZ2NmljbXApOwotCQkJCWljbXBfc3RhdHNfdGFibGVbaV0uaWNtcFN0YXRzSW5Nc2dzID0gdjZpY21wLmljbXA2SW5Nc2dzOwotCQkJCWljbXBfc3RhdHNfdGFibGVbaV0uaWNtcFN0YXRzSW5FcnJvcnMgPSB2NmljbXAuaWNtcDZJbkVycm9yczsKLQkJCQlpY21wX3N0YXRzX3RhYmxlW2ldLmljbXBTdGF0c091dE1zZ3MgPSB2NmljbXAuaWNtcDZPdXRNc2dzOwotCQkJCWljbXBfc3RhdHNfdGFibGVbaV0uaWNtcFN0YXRzT3V0RXJyb3JzID0gdjZpY21wLmljbXA2T3V0RGVzdFVucmVhY2hzICsKLQkJCQkJdjZpY21wLmljbXA2T3V0UGt0VG9vQmlncyArICB2NmljbXAuaWNtcDZPdXRUaW1lRXhjZHMgKwotCQkJCQl2NmljbXAuaWNtcDZPdXRQYXJtUHJvYmxlbXM7Ci0JCQkJYnJlYWs7Ci0JCX0KLQkJaWNtcF9zdGF0c190YWJsZVtpXS5pcFZlcj1pKzE7Ci0JfQorICAgIGludCBpOworICAgIElDTVBfU1RBVF9TVFJVQ1RVUkUgdjRpY21wOworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyAgICBzdHJ1Y3QgaWNtcDZfbWliIHY2aWNtcDsKKyNlbmRpZgorICAgIGZvcihpID0gMDsgaSA8IDI7IGkrKykgeworICAgICAgICBzd2l0Y2goaSkgeworICAgICAgICBjYXNlIDA6CisjaWZkZWYgbGludXgKKyAgICAgICAgICAgIGxpbnV4X3JlYWRfaWNtcF9zdGF0KCZ2NGljbXApOworI2VsaWYgZGVmaW5lZChORVRCU0RfU1RBVFNfVklBX1NZU0NUTCkKKwkgICAgbmV0YnNkX3JlYWRfaWNtcF9zdGF0KCZ2NGljbXApOworI2VsaWYgKGRlZmluZWQoTkVUU05NUF9DQU5fVVNFX1NZU0NUTCkgJiYgZGVmaW5lZChJQ01QQ1RMX1NUQVRTKSkKKwkgICAgc3lzY3RsX3JlYWRfaWNtcF9zdGF0KCZ2NGljbXApOworI2VsaWYgZGVmaW5lZChzb2xhcmlzMikKKwkgICAgc29sYXJpc19yZWFkX2ljbXBfc3RhdCgmdjRpY21wKTsKKyNlbHNlCisJICAgIHJldHVybiAtMTsKKyNlbmRpZgorICAgICAgICAgICAgaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNJbk1zZ3MgPSB2NGljbXAuaWNtcEluTXNnczsKKyAgICAgICAgICAgIGljbXBfc3RhdHNfdGFibGVbaV0uaWNtcFN0YXRzSW5FcnJvcnMgPSB2NGljbXAuaWNtcEluRXJyb3JzOworICAgICAgICAgICAgaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNPdXRNc2dzID0gdjRpY21wLmljbXBPdXRNc2dzOworICAgICAgICAgICAgaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNPdXRFcnJvcnMgPSB2NGljbXAuaWNtcE91dEVycm9yczsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE6CisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorICAgICAgICAgICAgbWVtc2V0KCZpY21wX3N0YXRzX3RhYmxlW2ldLDAsCisgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgaWNtcF9zdGF0c190YWJsZV9lbnRyeSkpOworI2lmZGVmIGxpbnV4CisgICAgICAgICAgICBsaW51eF9yZWFkX2ljbXA2X3N0YXQoJnY2aWNtcCk7CisjZWxpZiBkZWZpbmVkKE5FVEJTRF9TVEFUU19WSUFfU1lTQ1RMKQorCSAgICBuZXRic2RfcmVhZF9pY21wNl9zdGF0KCZ2NmljbXApOworI2VsaWYgKGRlZmluZWQoTkVUU05NUF9DQU5fVVNFX1NZU0NUTCkgJiYgZGVmaW5lZChJQ01QQ1RMX1NUQVRTKSkKKwkgICAgc3lzY3RsX3JlYWRfaWNtcDZfc3RhdCgmdjZpY21wKTsKKyNlbGlmIGRlZmluZWQoc29sYXJpczIpCisJICAgIC8qIHNvbGFyaXNfcmVhZF9pY21wNl9zdGF0KCZ2NmljbXApKi8KKwkgICAgcmV0dXJuIC0xOworI2Vsc2UKKwkgICAgcmV0dXJuIC0xOworI2VuZGlmCisgICAgICAgICAgICBpY21wX3N0YXRzX3RhYmxlW2ldLmljbXBTdGF0c0luTXNncyA9IHY2aWNtcC5pY21wNkluTXNnczsKKyAgICAgICAgICAgIGljbXBfc3RhdHNfdGFibGVbaV0uaWNtcFN0YXRzSW5FcnJvcnMgPSB2NmljbXAuaWNtcDZJbkVycm9yczsKKyAgICAgICAgICAgIGljbXBfc3RhdHNfdGFibGVbaV0uaWNtcFN0YXRzT3V0TXNncyA9IHY2aWNtcC5pY21wNk91dE1zZ3M7CisgICAgICAgICAgICBpY21wX3N0YXRzX3RhYmxlW2ldLmljbXBTdGF0c091dEVycm9ycyA9CisgICAgICAgICAgICAgICAgICAgICAgICB2NmljbXAuaWNtcDZPdXREZXN0VW5yZWFjaHMgKworICAgICAgICAgICAgICAgICAgICAgICAgdjZpY21wLmljbXA2T3V0UGt0VG9vQmlncyArICB2NmljbXAuaWNtcDZPdXRUaW1lRXhjZHMgKworICAgICAgICAgICAgICAgICAgICAgICAgdjZpY21wLmljbXA2T3V0UGFybVByb2JsZW1zOworI2VuZGlmCS8qIE5FVFNOTVBfRU5BQkxFX0lQVjYgKi8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGljbXBfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSBpICsgMTsKKyAgICB9CiAKLQlyZXR1cm4gMDsKKyAgICByZXR1cm4gMDsKIH0KIAogaW50CiBpY21wX21zZ19zdGF0c19sb2FkKG5ldHNubXBfY2FjaGUgKmNhY2hlLCB2b2lkICp2bWFnaWMpCiB7Ci0gICAgc3RydWN0IGljbXBfbWliIHY0aWNtcDsKKyAgICBJQ01QX1NUQVRfU1RSVUNUVVJFIHY0aWNtcDsKICAgICBzdHJ1Y3QgaWNtcDRfbXNnX21pYiB2NGljbXBtc2c7CiAjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgogICAgIHN0cnVjdCBpY21wNl9taWIgdjZpY21wOwogICAgIHN0cnVjdCBpY21wNl9tc2dfbWliIHY2aWNtcG1zZzsKICNlbmRpZgotICAgIGludCBpLCBqLCBrLCBmbGFnLCBpbmM7CisgICAgaW50IGksIGssIGZsYWcsIGluYzsKIAogICAgIG1lbXNldCgmaWNtcF9tc2dfc3RhdHNfdGFibGUsIDAsIHNpemVvZihpY21wX21zZ19zdGF0c190YWJsZSkpOwogCkBAIC0xNzUsNyArMjgyLDE3IEBACiAgICAgZmxhZyA9IDA7CiAgICAgayA9IDA7CiAgICAgaW5jID0gMDsKKyNpZmRlZiBsaW51eAogICAgIGxpbnV4X3JlYWRfaWNtcF9tc2dfc3RhdCgmdjRpY21wLCAmdjRpY21wbXNnLCAmZmxhZyk7CisjZWxpZiBkZWZpbmVkKE5FVEJTRF9TVEFUU19WSUFfU1lTQ1RMKQorICAgIG5ldGJzZF9yZWFkX2ljbXBfbXNnX3N0YXQoJnY0aWNtcCwgJnY0aWNtcG1zZywgJmZsYWcpOworI2VsaWYgKGRlZmluZWQoTkVUU05NUF9DQU5fVVNFX1NZU0NUTCkgJiYgZGVmaW5lZChJQ01QQ1RMX1NUQVRTKSkKKyAgICBzeXNjdGxfcmVhZF9pY21wX21zZ19zdGF0KCZ2NGljbXAsICZ2NGljbXBtc2csICZmbGFnKTsKKyNlbGlmIGRlZmluZWQoc29sYXJpczIpCisgICAgc29sYXJpc19yZWFkX2ljbXBfbXNnX3N0YXQoJnY0aWNtcCwgJnY0aWNtcG1zZywgJmZsYWcpOworI2Vsc2UKKyAgICByZXR1cm4gLTE7CisjZW5kaWYKICAgICBpZiAoZmxhZykgewogICAgICAgICB3aGlsZSAoMjU0ICE9IGspIHsKICAgICAgICAgICAgIGlmICh2NGljbXBtc2cudmFsc1trXS5JblR5cGUpIHsKQEAgLTIwMiw3MCArMzE5LDk3IEBACiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QX0VDSE9SRVBMWTsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjRpY21wLmljbXBJbkVjaG9SZXBzOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjRpY21wLmljbXBPdXRFY2hvUmVwczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDE7CiAgICAgICAgIGkrKzsKIAogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUF9ERVNUX1VOUkVBQ0g7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY0aWNtcC5pY21wSW5EZXN0VW5yZWFjaHM7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NGljbXAuaWNtcE91dERlc3RVbnJlYWNoczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDE7CiAgICAgICAgIGkrKzsKIAogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUF9TT1VSQ0VfUVVFTkNIOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluU3JjUXVlbmNoczsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcC5pY21wT3V0U3JjUXVlbmNoczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDE7CiAgICAgICAgIGkrKzsKIAogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUF9SRURJUkVDVDsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjRpY21wLmljbXBJblJlZGlyZWN0czsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcC5pY21wT3V0UmVkaXJlY3RzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMTsKICAgICAgICAgaSsrOwogCiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QX0VDSE87CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY0aWNtcC5pY21wSW5FY2hvczsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcC5pY21wT3V0RWNob3M7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAxOwogICAgICAgICBpKys7CiAKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVBfVElNRV9FWENFRURFRDsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjRpY21wLmljbXBJblRpbWVFeGNkczsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcC5pY21wT3V0VGltZUV4Y2RzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMTsKICAgICAgICAgaSsrOwogCiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QX1BBUkFNRVRFUlBST0I7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY0aWNtcC5pY21wSW5QYXJtUHJvYnM7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NGljbXAuaWNtcE91dFBhcm1Qcm9iczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDE7CiAgICAgICAgIGkrKzsKIAogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUF9USU1FU1RBTVA7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY0aWNtcC5pY21wSW5UaW1lc3RhbXBzOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjRpY21wLmljbXBPdXRUaW1lc3RhbXBzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMTsKICAgICAgICAgaSsrOwogCiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QX1RJTUVTVEFNUFJFUExZOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluVGltZXN0YW1wUmVwczsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcC5pY21wT3V0VGltZXN0YW1wUmVwczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDE7CiAgICAgICAgIGkrKzsKIAogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUF9BRERSRVNTOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluQWRkck1hc2tzOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjRpY21wLmljbXBPdXRBZGRyTWFza3M7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAxOwogICAgICAgICBpKys7CiAKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVBfQUREUkVTU1JFUExZOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluQWRkck1hc2tSZXBzOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjRpY21wLmljbXBPdXRBZGRyTWFza1JlcHM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAxOwogICAgICAgICBpKys7Ci0KLSAgICAgICAgLyogc2V0IHRoZSBJUCB2ZXJzaW9uIGFuZCBkZWZhdWx0IGZsYWdzICovCi0gICAgICAgIGZvciAoaiA9IDA7IGogPCBJQ01QX01TR19TVEFUU19JUFY0X0NPVU5UOyBqKyspIHsKLSAgICAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2pdLmlwVmVyID0gMTsKLSAgICAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2pdLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKLSAgICAgICAgfQogICAgIH0KIAogI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKICAgICBmbGFnID0gMDsKICAgICBrID0gMDsKICAgICBpbmMgPSAwOworI2lmZGVmIGxpbnV4CiAgICAgbGludXhfcmVhZF9pY21wNl9tc2dfc3RhdCgmdjZpY21wLCAmdjZpY21wbXNnLCAmZmxhZyk7CisjZWxpZiBkZWZpbmVkKE5FVEJTRF9TVEFUU19WSUFfU1lTQ1RMKQorICAgIG5ldGJzZF9yZWFkX2ljbXA2X21zZ19zdGF0KCZ2NmljbXAsICZ2NmljbXBtc2csICZmbGFnKTsKKyNlbGlmIChkZWZpbmVkKE5FVFNOTVBfQ0FOX1VTRV9TWVNDVEwpICYmIGRlZmluZWQoSUNNUENUTF9TVEFUUykpCisgICAgc3lzY3RsX3JlYWRfaWNtcDZfbXNnX3N0YXQoJnY2aWNtcCwgJnY2aWNtcG1zZywgJmZsYWcpOworI2VsaWYgZGVmaW5lZChzb2xhcmlzMikKKyAgICAvKiBzb2xhcmlzX3JlYWRfaWNtcDZfbXNnX3N0YXQoJnY2aWNtcCwgJnY2aWNtcG1zZywgJmZsYWcpOyAqLworICAgIHJldHVybiAtMTsKKyNlbHNlCisgICAgcmV0dXJuIC0xOworI2VuZGlmCiAgICAgaWYgKGZsYWcpIHsKICAgICAgICAgd2hpbGUgKDI1NCAhPSBrKSB7CiAgICAgICAgICAgICBpZiAodjZpY21wbXNnLnZhbHNba10uSW5UeXBlKSB7CkBAIC0yOTIsODAgKzQzNiwxMDEgQEAKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVA2X0RTVF9VTlJFQUNIOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJbkRlc3RVbnJlYWNoczsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY2aWNtcC5pY21wNk91dERlc3RVbnJlYWNoczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAyOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CiAgICAgICAgIGkrKzsKIAogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUDZfUEFDS0VUX1RPT19CSUc7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluUGt0VG9vQmlnczsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY2aWNtcC5pY21wNk91dFBrdFRvb0JpZ3M7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMjsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOwogICAgICAgICBpKys7CiAKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVA2X1RJTUVfRVhDRUVERUQ7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluVGltZUV4Y2RzOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjZpY21wLmljbXA2T3V0VGltZUV4Y2RzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDI7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKICAgICAgICAgaSsrOwogCiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QNl9QQVJBTV9QUk9COwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJblBhcm1Qcm9ibGVtczsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY2aWNtcC5pY21wNk91dFBhcm1Qcm9ibGVtczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAyOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CiAgICAgICAgIGkrKzsKIAogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUDZfRUNIT19SRVFVRVNUOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJbkVjaG9zOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gMDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAyOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTjsKICAgICAgICAgaSsrOwogCiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QNl9FQ0hPX1JFUExZOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJbkVjaG9SZXBsaWVzOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjZpY21wLmljbXA2T3V0RWNob1JlcGxpZXM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMjsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOwogICAgICAgICBpKys7CiAKICNpZmRlZiBNTERfTElTVEVORVJfUVVFUlkKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IE1MRF9MSVNURU5FUl9RVUVSWTsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjZpY21wLmljbXA2SW5Hcm91cE1lbWJRdWVyaWVzOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gMDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAyOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTjsKICAgICAgICAgaSsrOworCiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBNTERfTElTVEVORVJfUkVQT1JUOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJbkdyb3VwTWVtYlJlc3BvbnNlczsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY2aWNtcC5pY21wNk91dEdyb3VwTWVtYlJlc3BvbnNlczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAyOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CiAgICAgICAgIGkrKzsKIAogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gTUxEX0xJU1RFTkVSX1JFRFVDVElPTjsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjZpY21wLmljbXA2SW5Hcm91cE1lbWJSZWR1Y3Rpb25zOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjZpY21wLmljbXA2T3V0R3JvdXBNZW1iUmVkdWN0aW9uczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAyOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CiAgICAgICAgIGkrKzsKICNlbmRpZgogCiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBORF9ST1VURVJfU09MSUNJVDsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjZpY21wLmljbXA2SW5Sb3V0ZXJTb2xpY2l0czsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY2aWNtcC5pY21wNk91dFJvdXRlclNvbGljaXRzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDI7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKICAgICAgICAgaSsrOwogCiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBORF9ST1VURVJfQURWRVJUOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJblJvdXRlckFkdmVydGlzZW1lbnRzOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gMDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAyOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTjsKICAgICAgICAgaSsrOwogCiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBORF9ORUlHSEJPUl9TT0xJQ0lUOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJbk5laWdoYm9yU29saWNpdHM7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NmljbXAuaWNtcDZPdXROZWlnaGJvclNvbGljaXRzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDI7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKICAgICAgICAgaSsrOwogCiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBORF9ORUlHSEJPUl9BRFZFUlQ7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluTmVpZ2hib3JBZHZlcnRpc2VtZW50czsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY2aWNtcC5pY21wNk91dE5laWdoYm9yQWR2ZXJ0aXNlbWVudHM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMjsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOwogICAgICAgICBpKys7CiAKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IE5EX1JFRElSRUNUOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJblJlZGlyZWN0czsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY2aWNtcC5pY21wNk91dFJlZGlyZWN0czsKLQotICAgICAgICBmb3IgKGogPSAwOyBqIDwgSUNNUF9NU0dfU1RBVFNfSVBWNl9DT1VOVDsgaisrKSB7Ci0gICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtJQ01QX01TR19TVEFUU19JUFY0X0NPVU5UICsgal0uaXBWZXIgPSAyOwotICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbSUNNUF9NU0dfU1RBVFNfSVBWNF9DT1VOVCArIGpdLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKLSAgICAgICAgfQorICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDI7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKICAgICB9CiAjZW5kaWYgLyogTkVUU05NUF9FTkFCTEVfSVBWNiAqLwogICAgIHJldHVybiAwOwpAQCAtMzc3LDI1ICs1NDIsMjUgQEAKICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKmRhdGEpCiB7Ci0JaW50IGkgPSAoaW50KShpbnRwdHJfdCkoKmxvb3BfY29udGV4dCk7Ci0JbmV0c25tcF92YXJpYWJsZV9saXN0ICppZHggPSBpbmRleDsKKyAgICBpbnQgaSA9IChpbnQpKGludHB0cl90KSgqbG9vcF9jb250ZXh0KTsKKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKmlkeCA9IGluZGV4OwogCi0JaWYoaSA+IDEpCi0JCXJldHVybiBOVUxMOworICAgIGlmKGkgPiAxKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogCi0JLyoKLQkgKnNldCBJUCB2ZXJzaW9uCi0JICovCi0Jc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKGlkeCwgQVNOX0lOVEVHRVIsICh1X2NoYXIgKikmaWNtcF9zdGF0c190YWJsZVtpXS5pcFZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVpbnQzMl90KSk7Ci0JaWR4ID0gaWR4LT5uZXh0X3ZhcmlhYmxlOworICAgIC8qCisgICAgICpzZXQgSVAgdmVyc2lvbgorICAgICAqLworICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShpZHgsIEFTTl9JTlRFR0VSLCAodV9jaGFyICopJmljbXBfc3RhdHNfdGFibGVbaV0uaXBWZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVpbnQzMl90KSk7CisgICAgaWR4ID0gaWR4LT5uZXh0X3ZhcmlhYmxlOwogCi0JKmRhdGFfY29udGV4dCA9ICZpY21wX3N0YXRzX3RhYmxlW2ldOworICAgICpkYXRhX2NvbnRleHQgPSAmaWNtcF9zdGF0c190YWJsZVtpXTsKIAotCSpsb29wX2NvbnRleHQgPSAodm9pZCAqKShpbnRwdHJfdCkoKytpKTsKLQkKLQlyZXR1cm4gaW5kZXg7CisgICAgKmxvb3BfY29udGV4dCA9ICh2b2lkICopKGludHB0cl90KSgrK2kpOworICAgIAorICAgIHJldHVybiBpbmRleDsKIH0KIAogCkBAIC00MDUsMTAgKzU3MCw5IEBACiAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKmluZGV4LAogICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvICpkYXRhKQogewotCi0gICAgICAgICpsb29wX2NvbnRleHQgPSBOVUxMOwotICAgICAgICAqZGF0YV9jb250ZXh0ID0gTlVMTDsKLSAgICAgICAgcmV0dXJuIGljbXBfc3RhdHNfbmV4dF9lbnRyeShsb29wX2NvbnRleHQsIGRhdGFfY29udGV4dCwgaW5kZXgsIGRhdGEpOworICAgICpsb29wX2NvbnRleHQgPSBOVUxMOworICAgICpkYXRhX2NvbnRleHQgPSBOVUxMOworICAgIHJldHVybiBpY21wX3N0YXRzX25leHRfZW50cnkobG9vcF9jb250ZXh0LCBkYXRhX2NvbnRleHQsIGluZGV4LCBkYXRhKTsKIH0KIAogbmV0c25tcF92YXJpYWJsZV9saXN0ICoKQEAgLTQ1NiwxMyArNjIwLDEzIEBACiB2b2lkCiBpbml0X2ljbXAodm9pZCkKIHsKLSNpZmRlZiBsaW51eAotICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnRhYmxlX3JlZ2luZm8gPSBOVUxMOworI2lmZGVmIFVTRVNfU05NUF9ERVNJR05FRF9JQ01QU1RBVAogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKm1zZ19zdGF0c19yZWdpbmZvID0gTlVMTDsKLSAgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKmlpbmZvID0gTlVMTDsKLSAgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKm1zZ19zdGF0c19paW5mbyA9IE5VTEw7Ci0gICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbyA9IE5VTEw7Ci0gICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqbXNnX3N0YXRzX3RhYmxlX2luZm8gPSBOVUxMOworICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnRhYmxlX3JlZ2luZm8gPSBOVUxMOworICAgIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqaWluZm87CisgICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvICptc2dfc3RhdHNfaWluZm87CisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKKyAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICptc2dfc3RhdHNfdGFibGVfaW5mbzsKICNlbmRpZgogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnNjYWxhcl9yZWdpbmZvID0gTlVMTDsKICAgICBpbnQgICAgICAgICAgICAgICAgICAgIHJjOwpAQCAtNDczLDE0ICs2MzcsOSBAQAogICAgIERFQlVHTVNHVEwoKCJtaWJJSS9pY21wIiwgIkluaXRpYWxpc2luZyBJQ01QIGdyb3VwXG4iKSk7CiAgICAgc2NhbGFyX3JlZ2luZm8gPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigiaWNtcCIsIGljbXBfaGFuZGxlciwKIAkJICAgIGljbXBfb2lkLCBPSURfTEVOR1RIKGljbXBfb2lkKSwgSEFORExFUl9DQU5fUk9OTFkpOwotICAgIGlmICghc2NhbGFyX3JlZ2luZm8pCi0gICAgICAgIHJldHVybjsKLQogICAgIHJjID0gbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXJfZ3JvdXAoc2NhbGFyX3JlZ2luZm8sIElDTVBJTk1TR1MsIElDTVBPVVRBRERSTUFTS1JFUFMpOwotICAgIGlmIChyYyAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKKyAgICBpZiAocmMgIT0gU05NUEVSUl9TVUNDRVNTKQogICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgLyoKICAgICAgKiAuLi4uIHdpdGggYSBsb2NhbCBjYWNoZQogICAgICAqICAgIChleGNlcHQgZm9yIEhQLVVYIDExLCB3aGljaCBleHRyYWN0cyBvYmplY3RzIGluZGl2aWR1YWxseSkKQEAgLTQ5MSwyNSArNjUwLDIyIEBACiAJCQkgICAJCWljbXBfbG9hZCwgaWNtcF9mcmVlLAogCQkJCQlpY21wX29pZCwgT0lEX0xFTkdUSChpY21wX29pZCkpKTsKICAgICBpZiAocmMgIT0gU05NUEVSUl9TVUNDRVNTKQotICAgICAgICBnb3RvIGJhaWw7CisJZ290byBiYWlsOwogI2VuZGlmCi0jaWZkZWYgbGludXgKKyNpZmRlZiBVU0VTX1NOTVBfREVTSUdORURfSUNNUFNUQVQKIAogICAgIC8qIHJlZ2lzdGVyIGljbXBTdGF0c1RhYmxlICovCi0KICAgICB0YWJsZV9pbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvKTsKICAgICBpZiAoIXRhYmxlX2luZm8pCiAgICAgICAgIGdvdG8gYmFpbDsKLQogICAgIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKHRhYmxlX2luZm8sIEFTTl9JTlRFR0VSLCAwKTsKICAgICB0YWJsZV9pbmZvLT5taW5fY29sdW1uID0gSUNNUF9TVEFUX0lOTVNHOwogICAgIHRhYmxlX2luZm8tPm1heF9jb2x1bW4gPSBJQ01QX1NUQVRfT1VURVJSOwogCiAKICAgICBpaW5mbyAgICAgID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX2l0ZXJhdG9yX2luZm8pOwotICAgIGlmICghaWluZm8pIAorICAgIGlmICghaWluZm8pCiAgICAgICAgIGdvdG8gYmFpbDsKLQogICAgIGlpbmZvLT5nZXRfZmlyc3RfZGF0YV9wb2ludCA9IGljbXBfc3RhdHNfZmlyc3RfZW50cnk7CiAgICAgaWluZm8tPmdldF9uZXh0X2RhdGFfcG9pbnQgID0gaWNtcF9zdGF0c19uZXh0X2VudHJ5OwogICAgIGlpbmZvLT50YWJsZV9yZWdpbmZvICAgICAgICA9IHRhYmxlX2luZm87CkBAIC01MTcsMjAgKzY3MywyMSBAQAogICAgIHRhYmxlX3JlZ2luZm8gPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigiaWNtcFN0YXRzVGFibGUiLAogCQlpY21wX3N0YXRzX3RhYmxlX2hhbmRsZXIsIGljbXBfc3RhdHNfdGJsX29pZCwKIAkJT0lEX0xFTkdUSChpY21wX3N0YXRzX3RibF9vaWQpLCBIQU5ETEVSX0NBTl9ST05MWSk7Ci0gICAgaWYgKCF0YWJsZV9yZWdpbmZvKQotICAgICAgICBnb3RvIGJhaWw7CiAKLSAgICByYyA9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IodGFibGVfcmVnaW5mbywgaWluZm8pOworICAgIHJjID0gbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcjIodGFibGVfcmVnaW5mbywgaWluZm8pOwogICAgIGlmIChyYyAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKICAgICAgICAgdGFibGVfcmVnaW5mbyA9IE5VTEw7CiAgICAgICAgIGdvdG8gYmFpbDsKICAgICB9CisgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlciggdGFibGVfcmVnaW5mbywKKyAgICAgICAgICAgIG5ldHNubXBfZ2V0X2NhY2hlX2hhbmRsZXIoSUNNUF9TVEFUU19DQUNIRV9USU1FT1VULAorICAgICAgICAgICAgICAgICAgICAgICAgaWNtcF9sb2FkLCBpY21wX2ZyZWUsCisgICAgICAgICAgICAgICAgICAgICAgICBpY21wX3N0YXRzX3RibF9vaWQsIE9JRF9MRU5HVEgoaWNtcF9zdGF0c190Ymxfb2lkKSkpOwogCiAgICAgLyogcmVnaXN0ZXIgaWNtcE1zZ1N0YXRzVGFibGUgKi8KICAgICBtc2dfc3RhdHNfdGFibGVfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyk7CiAgICAgaWYgKCFtc2dfc3RhdHNfdGFibGVfaW5mbykKICAgICAgICAgZ290byBiYWlsOwotCiAgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXMobXNnX3N0YXRzX3RhYmxlX2luZm8sIEFTTl9JTlRFR0VSLCBBU05fSU5URUdFUiwgMCk7CiAgICAgbXNnX3N0YXRzX3RhYmxlX2luZm8tPm1pbl9jb2x1bW4gPSBJQ01QX01TR19TVEFUX0lOX1BLVFM7CiAgICAgbXNnX3N0YXRzX3RhYmxlX2luZm8tPm1heF9jb2x1bW4gPSBJQ01QX01TR19TVEFUX09VVF9QS1RTOwpAQCAtNTM4LDcgKzY5NSw2IEBACiAgICAgbXNnX3N0YXRzX2lpbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX2l0ZXJhdG9yX2luZm8pOwogICAgIGlmICghbXNnX3N0YXRzX2lpbmZvKQogICAgICAgICBnb3RvIGJhaWw7Ci0KICAgICBtc2dfc3RhdHNfaWluZm8tPmdldF9maXJzdF9kYXRhX3BvaW50ID0gaWNtcF9tc2dfc3RhdHNfZmlyc3RfZW50cnk7CiAgICAgbXNnX3N0YXRzX2lpbmZvLT5nZXRfbmV4dF9kYXRhX3BvaW50ICA9IGljbXBfbXNnX3N0YXRzX25leHRfZW50cnk7CiAgICAgbXNnX3N0YXRzX2lpbmZvLT50YWJsZV9yZWdpbmZvICAgICAgICA9IG1zZ19zdGF0c190YWJsZV9pbmZvOwpAQCAtNTQ2LDI2ICs3MDIsMTggQEAKICAgICBtc2dfc3RhdHNfcmVnaW5mbyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJpY21wTXNnU3RhdHNUYWJsZSIsCiAgICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZV9oYW5kbGVyLCBpY21wX21zZ19zdGF0c190Ymxfb2lkLAogICAgICAgICAgICAgT0lEX0xFTkdUSChpY21wX21zZ19zdGF0c190Ymxfb2lkKSwgSEFORExFUl9DQU5fUk9OTFkpOwotICAgIGlmICghbXNnX3N0YXRzX3JlZ2luZm8pCi0gICAgICAgIGdvdG8gYmFpbDsKIAotICAgIHJjID0gbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcihtc2dfc3RhdHNfcmVnaW5mbywgbXNnX3N0YXRzX2lpbmZvKTsKKyAgICByYyA9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IyKG1zZ19zdGF0c19yZWdpbmZvLCBtc2dfc3RhdHNfaWluZm8pOwogICAgIGlmIChyYyAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKICAgICAgICAgbXNnX3N0YXRzX3JlZ2luZm8gPSBOVUxMOwogICAgICAgICBnb3RvIGJhaWw7CiAgICAgfQotICAgIAorCiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlciggbXNnX3N0YXRzX3JlZ2luZm8sCiAgICAgICAgICAgICBuZXRzbm1wX2dldF9jYWNoZV9oYW5kbGVyKElDTVBfU1RBVFNfQ0FDSEVfVElNRU9VVCwKICAgICAgICAgICAgICAgICBpY21wX2xvYWQsIGljbXBfZnJlZSwKICAgICAgICAgICAgICAgICBpY21wX21zZ19zdGF0c190Ymxfb2lkLCBPSURfTEVOR1RIKGljbXBfbXNnX3N0YXRzX3RibF9vaWQpKSk7Ci0jaWZuZGVmIGhwdXgxMQotICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIoIHRhYmxlX3JlZ2luZm8sCi0JCSAgICBuZXRzbm1wX2dldF9jYWNoZV9oYW5kbGVyKElDTVBfU1RBVFNfQ0FDSEVfVElNRU9VVCwKLQkJCSAgIAkJaWNtcF9sb2FkLCBpY21wX2ZyZWUsCi0JCQkJCWljbXBfc3RhdHNfdGJsX29pZCwgT0lEX0xFTkdUSChpY21wX3N0YXRzX3RibF9vaWQpKSk7Ci0jZW5kaWYgLyogISBocHV4MTEgKi8KLSNlbmRpZiAvKiBsaW51eCAqLworI2VuZGlmIC8qIFVTRVNfU05NUF9ERVNJR05FRF9JQ01QU1RBVCAqLwogCiAjaWZkZWYgVVNJTkdfTUlCSUlfSVBfTU9EVUxFCiAgICAgaWYgKCsraXBfbW9kdWxlX2NvdW50ID09IDIpCkBAIC01ODYsNyArNzM0LDcgQEAKICNpZm5kZWYgaHB1eDExCiBiYWlsOgogI2VuZGlmCi0jaWZkZWYgbGludXgKKyNpZmRlZiBVU0VTX1NOTVBfREVTSUdORURfSUNNUFNUQVQKICAgICBpZiAobXNnX3N0YXRzX3JlZ2luZm8pCiAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZShtc2dfc3RhdHNfcmVnaW5mbyk7CiAgICAgaWYgKHRhYmxlX3JlZ2luZm8pCkBAIC02MDMsNDggKzc1MSw2IEBACiAJICoKIAkgKioqKioqKioqKioqKioqKioqKioqLwogCi0jaWZkZWYgaHB1eDExCi0jZGVmaW5lIElDTVBfU1RBVF9TVFJVQ1RVUkUJaW50Ci0jZW5kaWYKLQotI2lmZGVmIGxpbnV4Ci0jZGVmaW5lIElDTVBfU1RBVF9TVFJVQ1RVUkUJc3RydWN0IGljbXBfbWliCi0jZGVmaW5lIFVTRVNfU05NUF9ERVNJR05FRF9JQ01QU1RBVAotI3VuZGVmIElDTVBTVEFUX1NZTUJPTAotI2VuZGlmCi0KLSNpZmRlZiBzb2xhcmlzMgotI2RlZmluZSBJQ01QX1NUQVRfU1RSVUNUVVJFCW1pYjJfaWNtcF90Ci0jZGVmaW5lIFVTRVNfU05NUF9ERVNJR05FRF9JQ01QU1RBVAotI2VuZGlmCi0KLSNpZmRlZiBORVRCU0RfU1RBVFNfVklBX1NZU0NUTAotI2RlZmluZSBJQ01QX1NUQVRfU1RSVUNUVVJFICAgICBzdHJ1Y3QgaWNtcF9taWIKLSNkZWZpbmUgVVNFU19TTk1QX0RFU0lHTkVEX0lDTVBTVEFUCi0jdW5kZWYgSUNNUF9OU1RBVFMKLSNlbmRpZgotCi0jaWZkZWYgSEFWRV9JUEhMUEFQSV9ICi0jaW5jbHVkZSA8aXBobHBhcGkuaD4KLSNkZWZpbmUgSUNNUF9TVEFUX1NUUlVDVFVSRSBNSUJfSUNNUAotI2VuZGlmCi0KLS8qID8/ICNpZiAoZGVmaW5lZChORVRTTk1QX0NBTl9VU0VfU1lTQ1RMKSAmJiBkZWZpbmVkKElDTVBDVExfU1RBVFMpKSA/PyAqLwotCi0jaWZkZWYgSEFWRV9TWVNfSUNNUElQU1RBVFNfSAotLyogb3IgI2lmZGVmCQlIQVZFX1NZU19UQ1BJUFNUQVRTX0ggID8/PyAqLwotI2RlZmluZSBJQ01QX1NUQVRfU1RSVUNUVVJFCXN0cnVjdCBrbmEKLSNkZWZpbmUgVVNFU19UUkFESVRJT05BTF9JQ01QU1RBVAotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChJQ01QX1NUQVRfU1RSVUNUVVJFKQotI2RlZmluZSBJQ01QX1NUQVRfU1RSVUNUVVJFCXN0cnVjdCBpY21wc3RhdAotI2RlZmluZSBVU0VTX1RSQURJVElPTkFMX0lDTVBTVEFUCi0jZW5kaWYKLQotSUNNUF9TVEFUX1NUUlVDVFVSRSBpY21wc3RhdDsKLQotCiAgICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioKIAkgKgogCSAqICBTeXN0ZW0gaW5kZXBlbmRlbnQgaGFuZGxlcgpAQCAtMTAyMyw2ICsxMTI5LDcgQEAKIAogICAgIGNhc2UgTU9ERV9HRVRORVhUOgogICAgIGNhc2UgTU9ERV9HRVRCVUxLOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CiAgICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046CkBAIC0xMDMyLDYgKzExMzksNyBAQAogICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIm1pYklJL2ljbXA6IFVuc3VwcG9ydGVkIG1vZGUgKCVkKVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKTsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAibWliSUkvaWNtcDogVW5yZWNvZ25pc2VkIG1vZGUgKCVkKVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKTsKQEAgLTEwNDIsNyArMTE1MCw3IEBACiB9CiAKIAotI2lmZGVmIGxpbnV4CisjaWZkZWYgVVNFU19TTk1QX0RFU0lHTkVEX0lDTVBTVEFUCiBpbnQKIGljbXBfc3RhdHNfdGFibGVfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICAqaGFuZGxlciwKICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKQEAgLTEwODksNiArMTE5Nyw3IEBACiAJCQlicmVhazsKIAkJY2FzZSBNT0RFX0dFVE5FWFQ6CiAJCWNhc2UgTU9ERV9HRVRCVUxLOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIAkJY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKIAkJY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKIAkJY2FzZSBNT0RFX1NFVF9BQ1RJT046CkBAIC0xMDk4LDYgKzEyMDcsNyBAQAogCQkJc25tcF9sb2coTE9HX1dBUk5JTkcsICJtaWJJSS9pY21wU3RhdHNUYWJsZTogVW5zdXBwb3J0ZWQgbW9kZSAoJWQpXG4iLAogCQkJCXJlcWluZm8tPm1vZGUpOwogCQkJYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCQlkZWZhdWx0OgogCQkJc25tcF9sb2coTE9HX1dBUk5JTkcsICJtaWJJSS9pY21wU3RhdHNUYWJsZTogVW5yZWNvZ25pc2VkIG1vZGUgKCVkKVxuIiwKIAkJCQlyZXFpbmZvLT5tb2RlKTsKQEAgLTExNTQsNiArMTI2NCw3IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBNT0RFX0dFVE5FWFQ6CiAgICAgICAgIGNhc2UgTU9ERV9HRVRCVUxLOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKICAgICAgICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046CkBAIC0xMTYzLDYgKzEyNzQsNyBAQAogICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJtaWJJSS9pY21wU3RhdHNUYWJsZTogVW5zdXBwb3J0ZWQgbW9kZSAoJWQpXG4iLAogICAgICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKTsKICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAibWliSUkvaWNtcFN0YXRzVGFibGU6IFVucmVjb2duaXNlZCBtb2RlICglZClcbiIsCiAgICAgICAgICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUpOwpAQCAtMTE3Miw3ICsxMjg0LDcgQEAKIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQotI2VuZGlmCQkvKiBsaW51eCAqLworI2VuZGlmCQkvKiBVU0VTX1NOTVBfREVTSUdORURfSUNNUFNUQVQgKi8KIAogICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqCiAJICoKQEAgLTEzMjIsOCArMTQzNCwyNCBAQAogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9pY21wIiwgIkxvYWRlZCBJQ01QIEdyb3VwIChzb2xhcmlzKVxuIikpOwogICAgIH0KKyAgICBpY21wX3N0YXRzX2xvYWQoY2FjaGUsIHZtYWdpYyk7CisgICAgaWNtcF9tc2dfc3RhdHNfbG9hZChjYWNoZSwgdm1hZ2ljKTsKICAgICByZXR1cm4gcmV0X3ZhbHVlOwogfQorCitzdGF0aWMgaW50Citzb2xhcmlzX3JlYWRfaWNtcF9zdGF0KElDTVBfU1RBVF9TVFJVQ1RVUkUgKm1pYikKK3sKKyAgICAqbWliID0gaWNtcHN0YXQ7CisgICAgcmV0dXJuIDA7Cit9CitzdGF0aWMgaW50Citzb2xhcmlzX3JlYWRfaWNtcF9tc2dfc3RhdChJQ01QX1NUQVRfU1RSVUNUVVJFICptaWIsIHN0cnVjdCBpY21wNF9tc2dfbWliICptc2dfbWliLCBpbnQgKmZsYWcpCit7CisgICAgKm1pYiA9IGljbXBzdGF0OworICAgICpmbGFnID0gMDsKKyAgICByZXR1cm4gMDsKK30KICNlbGlmIGRlZmluZWQoTkVUQlNEX1NUQVRTX1ZJQV9TWVNDVEwpCiBpbnQKIGljbXBfbG9hZChuZXRzbm1wX2NhY2hlICpjYWNoZSwgdm9pZCAqdm1hZ2ljKQpAQCAtMTMzNyw2ICsxNDY1LDggQEAKICAgICB9IGVsc2UgewogCURFQlVHTVNHVEwoKCJtaWJJSS9pY21wIiwgIkxvYWRlZCBJQ01QIEdyb3VwIChuZXRic2QpXG4iKSk7CiAgICAgfQorICAgIGljbXBfc3RhdHNfbG9hZChjYWNoZSwgdm1hZ2ljKTsKKyAgICBpY21wX21zZ19zdGF0c19sb2FkKGNhY2hlLCB2bWFnaWMpOwogICAgIHJldHVybiByZXRfdmFsdWU7CiB9CiAjZWxpZiBkZWZpbmVkIChXSU4zMikgfHwgZGVmaW5lZCAoY3lnd2luKQpAQCAtMTM3NiwxNyArMTUwNiwxNiBAQAogaWNtcF9sb2FkKG5ldHNubXBfY2FjaGUgKmNhY2hlLCB2b2lkICp2bWFnaWMpCiB7CiAgICAgbG9uZyAgICAgICAgICAgIHJldF92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBpbnQgICAgICBzbmFtZVs0XSA9Ci0gICAgICAgIHsgQ1RMX05FVCwgUEZfSU5FVCwgSVBQUk9UT19JQ01QLCBJQ01QQ1RMX1NUQVRTIH07Ci0gICAgc2l6ZV90ICAgICAgICAgIGxlbiA9IHNpemVvZihpY21wc3RhdCk7CiAKLSAgICByZXRfdmFsdWUgPSBzeXNjdGwoc25hbWUsIDQsICZpY21wc3RhdCwgJmxlbiwgMCwgMCk7CisgICAgcmV0X3ZhbHVlID0gc3lzY3RsX3JlYWRfaWNtcF9zdGF0KCZpY21wc3RhdCk7CiAKICAgICBpZiAoIHJldF92YWx1ZSA8IDAgKSB7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9pY21wIiwgIkZhaWxlZCB0byBsb2FkIElDTVAgR3JvdXAgKHN5c2N0bClcbiIpKTsKKwlERUJVR01TR1RMKCgibWliSUkvaWNtcCIsICJGYWlsZWQgdG8gbG9hZCBJQ01QIEdyb3VwIChuZXRic2QpXG4iKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgREVCVUdNU0dUTCgoIm1pYklJL2ljbXAiLCAiTG9hZGVkIElDTVAgR3JvdXAgKHN5c2N0bClcbiIpKTsKKwlERUJVR01TR1RMKCgibWliSUkvaWNtcCIsICJMb2FkZWQgSUNNUCBHcm91cCAobmV0YnNkKVxuIikpOwogICAgIH0KKyAgICBpY21wX3N0YXRzX2xvYWQoY2FjaGUsIHZtYWdpYyk7CisgICAgaWNtcF9tc2dfc3RhdHNfbG9hZChjYWNoZSwgdm1hZ2ljKTsKICAgICByZXR1cm4gcmV0X3ZhbHVlOwogfQogI2VsaWYgZGVmaW5lZChIQVZFX1NZU19UQ1BJUFNUQVRTX0gpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9pY21wLmggYi9hZ2VudC9taWJncm91cC9taWJJSS9pY21wLmgKaW5kZXggOTMwNzY1NC4uNzM1MzNjZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5oCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL2ljbXAuaApAQCAtNSwxMCArNSwyNCBAQAogI2lmbmRlZiBfTUlCR1JPVVBfSUNNUF9ICiAjZGVmaW5lIF9NSUJHUk9VUF9JQ01QX0gKIAotY29uZmlnX2FyY2hfcmVxdWlyZShzb2xhcmlzMiwgICAgICAgIGtlcm5lbF9zdW5vczUpCitjb25maWdfYXJjaF9yZXF1aXJlKHNvbGFyaXMyLCAga2VybmVsX3N1bm9zNSkKIGNvbmZpZ19hcmNoX3JlcXVpcmUobGludXgsICAgICBtaWJJSS9rZXJuZWxfbGludXgpCitjb25maWdfYXJjaF9yZXF1aXJlKGZyZWVic2Q0LCAgbWliSUkva2VybmVsX3N5c2N0bCkKK2NvbmZpZ19hcmNoX3JlcXVpcmUoZnJlZWJzZDUsICBtaWJJSS9rZXJuZWxfc3lzY3RsKQorY29uZmlnX2FyY2hfcmVxdWlyZShmcmVlYnNkNiwgIG1pYklJL2tlcm5lbF9zeXNjdGwpCitjb25maWdfYXJjaF9yZXF1aXJlKGZyZWVic2Q3LCAgbWliSUkva2VybmVsX3N5c2N0bCkKK2NvbmZpZ19hcmNoX3JlcXVpcmUoZnJlZWJzZDgsICBtaWJJSS9rZXJuZWxfc3lzY3RsKQorY29uZmlnX2FyY2hfcmVxdWlyZShmcmVlYnNkOSwgIG1pYklJL2tlcm5lbF9zeXNjdGwpCitjb25maWdfYXJjaF9yZXF1aXJlKGZyZWVic2QxMCwgbWliSUkva2VybmVsX3N5c2N0bCkKIGNvbmZpZ19hcmNoX3JlcXVpcmUobmV0YnNkLCAgICBtaWJJSS9rZXJuZWxfbmV0YnNkKQogY29uZmlnX2FyY2hfcmVxdWlyZShuZXRic2RlbGYsIG1pYklJL2tlcm5lbF9uZXRic2QpCitjb25maWdfYXJjaF9yZXF1aXJlKG9wZW5ic2Q0LCAgbWliSUkva2VybmVsX3N5c2N0bCkKK2NvbmZpZ19hcmNoX3JlcXVpcmUob3BlbmJzZDUsICBtaWJJSS9rZXJuZWxfc3lzY3RsKQorY29uZmlnX2FyY2hfcmVxdWlyZShkcmFnb25mbHkyLCBtaWJJSS9rZXJuZWxfc3lzY3RsKQorY29uZmlnX2FyY2hfcmVxdWlyZShkcmFnb25mbHkzLCBtaWJJSS9rZXJuZWxfc3lzY3RsKQorY29uZmlnX2FyY2hfcmVxdWlyZShkYXJ3aW4xMCwgIG1pYklJL2tlcm5lbF9zeXNjdGwpCitjb25maWdfYXJjaF9yZXF1aXJlKGRhcndpbjExLCAgbWliSUkva2VybmVsX3N5c2N0bCkKK2NvbmZpZ19hcmNoX3JlcXVpcmUoZGFyd2luMTIsICBtaWJJSS9rZXJuZWxfc3lzY3RsKQogCiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oPgogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMKaW5kZXggNDY3NjU3YS4uOWRmZjRhYSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYwpAQCAtMTUsNiArMTUsOSBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgorCituZXRzbm1wX2ZlYXR1cmVfcHJvdmlkZShpbnRlcmZhY2VfbGVnYWN5KQogCiAjaWYgZGVmaW5lZChORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTCkgJiYgIWRlZmluZWQoX0tFUk5FTCkgJiYgIWRlZmluZWQoTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUxfTEFURSkKICNkZWZpbmUgX0tFUk5FTCAxCkBAIC0yMjAsNiArMjIzLDcgQEAKICAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCA1fX0sCiAgICAge05FVFNOTVBfSUZQSFlTQUREUkVTUywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCiAgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgNn19LAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICNpZiBkZWZpbmVkIChXSU4zMikgfHwgZGVmaW5lZCAoY3lnd2luKQogICAgIHtORVRTTk1QX0lGQURNSU5TVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgN319LApAQCAtMjI3LDYgKzIzMSwxMCBAQAogICAgIHtORVRTTk1QX0lGQURNSU5TVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKICAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCA3fX0sCiAjZW5kaWYKKyNlbHNlICAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAge05FVFNOTVBfSUZBRE1JTlNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDd9fSwKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAge05FVFNOTVBfSUZPUEVSU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCiAgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgOH19LAogICAgIHtORVRTTk1QX0lGTEFTVENIQU5HRSwgQVNOX1RJTUVUSUNLUywgTkVUU05NUF9PTERBUElfUk9OTFksCkBAIC0xNTE5LDcgKzE1MjcsNyBAQAogCiAjaWZkZWYgbGludXgKICAgICAvKiAgZGlzYWxsb3cgcmVsb2FkaW5nIG9mIHN0cnVjdHVyZXMgdG9vIG9mdGVuICovCi0gICAgZ2V0dGltZW9mZGF5ICggJmV0LCAoIHN0cnVjdCB0aW1lem9uZSAqICkgMCApOyAgLyogIGdldCB0aW1lLW9mLWRheSAqLworICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmZXQpOwogICAgIGlmICggZXQudHZfc2VjIDwgTGFzdExvYWQgKyBNSU5MT0FERlJFUSApIHsgICAgIC8qICBvbmx5IHJlbG9hZCBzbyBvZnRlbiAqLwogICAgICAgaWZuZXRhZGRyID0gaWZuZXRhZGRyX2xpc3Q7ICAgICAgICAgICAgICAgICAgIC8qICBpbml0aWFsaXplIHBvaW50ZXIgKi8KICAgICAgIHJldHVybjsKQEAgLTE4OTYsNiArMTkwNCwxMCBAQAogI2lmZGVmIGxpbnV4CiAgICAgICAgIHN0cmxjYXQoc2F2ZU5hbWUsIGlmbmV0LmlmX3VuaXQsIHNpemVvZihzYXZlTmFtZSkpOwogI2Vsc2UKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTgorICAgICAgICAvKiB0aGlzIGV4aXN0cyBoZXJlIGp1c3Qgc28gd2UgZG9uJ3QgY29weSBpZmRlZiBsb2dpYyBlbHNld2hlcmUgKi8KKyAgICAgICAgbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoc3RyaW5nX2FwcGVuZF9pbnQpOworI2VuZGlmCiAgICAgICAgIHN0cmluZ19hcHBlbmRfaW50KGNwLCBpZm5ldC5pZl91bml0KTsKICNlbmRpZgogICAgICAgICBpZiAoMSB8fCBzdHJjbXAoc2F2ZU5hbWUsICJsbzAiKSAhPSAwKSB7ICAgICAgICAvKiBYWFggKi8KQEAgLTIwNDcsNiArMjA1OSwxMCBAQAogCiAgICAgICAgIHNhdmVOYW1lW3NpemVvZihzYXZlTmFtZSkgLSAxXSA9ICdcMCc7CiAgICAgICAgIGNwID0gc3RyY2hyKHNhdmVOYW1lLCAnXDAnKTsKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTgorICAgICAgICAvKiB0aGlzIGV4aXN0cyBoZXJlIGp1c3Qgc28gd2UgZG9uJ3QgY29weSBpZmRlZiBsb2dpYyBlbHNld2hlcmUgKi8KKyAgICAgICAgbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoc3RyaW5nX2FwcGVuZF9pbnQpOworI2VuZGlmCiAgICAgICAgIHN0cmluZ19hcHBlbmRfaW50KGNwLCBpZm5ldC5pZl91bml0KTsKICNlbmRpZgogICAgICAgICBpZiAoMSB8fCBzdHJjbXAoc2F2ZU5hbWUsICJsbzAiKSAhPSAwKSB7ICAgICAgICAvKiBYWFggKi8KQEAgLTI2NTMsNyArMjY2OSw5IEBACiAjZWxpZiBkZWZpbmVkKEhBVkVfSVBITFBBUElfSCkgIC8qIFdJTjMyIGN5Z3dpbiAqLwogI2luY2x1ZGUgPGlwaGxwYXBpLmg+CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBXcml0ZU1ldGhvZCAgICAgd3JpdGVJZkVudHJ5OworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIGxvbmcgICAgICAgICAgICBhZG1pbl9zdGF0dXMgPSAwOwogbG9uZyAgICAgICAgICAgIG9sZGFkbWluX3N0YXR1cyA9IDA7CiAKQEAgLTI3OTgsNyArMjgxNiw5IEBACiAgICAgY2FzZSBORVRTTk1QX0lGQURNSU5TVEFUVVM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZSb3cuZHdBZG1pblN0YXR1czsKICAgICAgICAgYWRtaW5fc3RhdHVzID0gbG9uZ19yZXR1cm47CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVJZkVudHJ5OworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKICAgICBjYXNlIE5FVFNOTVBfSUZPUEVSU1RBVFVTOgogICAgICAgICBsb25nX3JldHVybiA9CkBAIC0yODU0LDYgKzI4NzQsNyBAQAogfQogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBpbnQKIHdyaXRlSWZFbnRyeShpbnQgYWN0aW9uLAogICAgICAgICAgICAgIHVfY2hhciAqIHZhcl92YWwsCkBAIC0yOTI1LDQgKzI5NDYsNSBAQAogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZW5kIG9mIHdyaXRlSWZFbnRyeSAqLworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8gCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFdJTjMyIGN5Z3dpbiAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL2lwLmMKaW5kZXggMjQ4MmE5MS4uZjM5ZDMyMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9pcC5jCkBAIC02NzcsNiArNjc3LDcgQEAKIAogICAgIGNhc2UgTU9ERV9HRVRORVhUOgogICAgIGNhc2UgTU9ERV9HRVRCVUxLOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogCQkvKiBYWFggLSBXaW5kb3dzIGN1cnJlbnRseSBzdXBwb3J0cyBzZXR0aW5nIHRoaXMgKi8KICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgpAQCAtNjg3LDYgKzY4OCw3IEBACiAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAibWliSUkvaXA6IFVuc3VwcG9ydGVkIG1vZGUgKCVkKVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKTsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAibWliSUkvaXA6IFVucmVjb2duaXNlZCBtb2RlICglZClcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxaW5mby0+bW9kZSk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jCmluZGV4IDMzMjY2MjYuLmE0ZDU3N2UgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jCkBAIC0xNSw2ICsxNSw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpZiBkZWZpbmVkKE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMKSAmJiAhZGVmaW5lZChfS0VSTkVMKQogI2RlZmluZSBfS0VSTkVMIDEKQEAgLTEyMCw2ICsxMjEsOCBAQAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRpZgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpbnRlcmZhY2VfbGVnYWN5KQorCiAgICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioKIAkgKgogCSAqICBLZXJuZWwgJiBpbnRlcmZhY2UgaW5mb3JtYXRpb24sCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmMKaW5kZXggMTcyZjI4NC4uYzlhZDZlNyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBDaWRyUm91dGVUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL2lwQ2lkclJvdXRlVGFibGUuYwpAQCAtNCw2ICs0LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlICJyb3V0ZV9oZWFkZXJzLmgiCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgpAQCAtMTMsNiArMTQsMTEgQEAKIAogI2luY2x1ZGUgInZhcl9yb3V0ZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShvaWRfc3Rhc2gpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShnZXRfcm91dGVzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUob2lkX3N0YXNoX2dldF9kYXRhKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUob2lkX3N0YXNoX2FkZF9kYXRhKQorCiBzdGF0aWMgbmV0c25tcF9vaWRfc3Rhc2hfbm9kZSAqdW5kb1N0b3JhZ2U7CiAKIHN0cnVjdCB1bmRvSW5mbyB7CkBAIC05OSw3ICsxMDUsNyBAQAogICAgICAqLwogICAgIERFQlVHTVNHVEwoKCJpbml0aWFsaXplX3RhYmxlX2lwQ2lkclJvdXRlVGFibGUiLAogICAgICAgICAgICAgICAgICJSZWdpc3RlcmluZyB0YWJsZSBpcENpZHJSb3V0ZVRhYmxlIGFzIGEgdGFibGUgaXRlcmF0b3JcbiIpKTsKLSAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yKG15X2hhbmRsZXIsIGlpbmZvKTsKKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yMihteV9oYW5kbGVyLCBpaW5mbyk7CiB9CiAKIC8qKiBJbml0aWFsaXplcyB0aGUgaXBDaWRyUm91dGVUYWJsZSBtb2R1bGUgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYwppbmRleCAzM2EzZGI3Li45OWQ1MGU4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9pcHY2LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXB2Ni5jCkBAIC00LDYgKzQsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2lmIGRlZmluZWQoTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUwpICYmICFkZWZpbmVkKF9LRVJORUwpCiAjZGVmaW5lIF9LRVJORUwgMQogI2RlZmluZSBfSV9ERUZJTkVEX0tFUk5FTApAQCAtMTQzLDYgKzE0NCw4IEBACiAjaW5jbHVkZSAiaXB2Ni5oIgogI2luY2x1ZGUgImludGVyZmFjZXMuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUobGludXhfcmVhZF9pcDZfc3RhdCkKKwogI2lmIGRlZmluZWQobmV0YnNkMSkgJiYgIWRlZmluZWQob3BlbmJzZDQpCiAjZGVmaW5lIGlucF9scG9ydCBpbjZwX2xwb3J0CiAjZGVmaW5lIGlucF9mcG9ydCBpbjZwX2Zwb3J0CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguYyBiL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5jCmluZGV4IDM5NzM2NWMuLjRlNDI5NDQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5jCkBAIC00LDYgKzQsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtNDUsNyArNDYsMTEgQEAKICNkZWZpbmUgSUNNUDZfU1RBVFNfUFJFRklYX0xFTgk1CiAjZGVmaW5lIFVEUDZfU1RBVFNfUFJFRklYX0xFTiAgIDQKIAotaW50CituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobGludXhfaXA2X3N0YXRfYWxsLCBsaWJuZXRzbm1wbWlicykKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGxpbnV4X3JlYWRfaXA2X3N0YXQsIGxpbnV4X2lwNl9zdGF0X2FsbCkKKworc3RhdGljIGludAogZGVjb2RlX2ljbXBfbXNnKGNoYXIgKmxpbmUsIGNoYXIgKmRhdGEsIHN0cnVjdCBpY21wNF9tc2dfbWliICptc2cpCiB7CiAgICAgY2hhciAqdG9rZW4sICpzYXZlcHRyLCAqbGluZXB0ciwgKnNhdmVwdHIxLCAqZGF0YXB0ciwgKmRlbGltID0gTlVMTDsKQEAgLTEwMyw3ICsxMDgsNyBAQAogICAgIHJldHVybiAwOwogfQogCi1pbnQKK3N0YXRpYyBpbnQKIGxpbnV4X3JlYWRfbWliSUlfc3RhdHModm9pZCkKIHsKICAgICBGSUxFICAgICAgICAgICAqaW4gPSBmb3BlbigiL3Byb2MvbmV0L3NubXAiLCAiciIpOwpAQCAtMjM4LDYgKzI0Myw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MSU5VWF9SRUFEX0lQNl9TVEFUCiBpbnQgbGludXhfcmVhZF9pcDZfc3RhdCggc3RydWN0IGlwNl9taWIgKmlwNnN0YXQpCiB7CiAjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgpAQCAtMzQ2LDYgKzM1Miw3IEBACiAgICAgbWVtY3B5KChjaGFyICopIGlwNnN0YXQsIChjaGFyICopICZjYWNoZWRfaXA2X21pYiwgc2l6ZW9mKCppcDZzdGF0KSk7CiAgICAgcmV0dXJuIDA7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MSU5VWF9SRUFEX0lQNl9TVEFUICovCiAKIGludAogbGludXhfcmVhZF9pY21wX21zZ19zdGF0KHN0cnVjdCBpY21wX21pYiAqaWNtcHN0YXQsCkBAIC0zNzksNyArMzg2LDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAotaW50CitzdGF0aWMgaW50CiBsaW51eF9yZWFkX2ljbXA2X3BhcnNlKHN0cnVjdCBpY21wNl9taWIgKmljbXA2c3RhdCwKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGljbXA2X21zZ19taWIgKmljbXA2bXNnc3RhdCwKICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpzdXBwb3J0KQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmggYi9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguaAppbmRleCA2YmY1ZDQ3Li5iM2M1OGQzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguaAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguaApAQCAtNiwxNjEgKzYsNyBAQAogI2lmbmRlZiBfTUlCR1JPVVBfS0VSTkVMX0xJTlVYX0gKICNkZWZpbmUgX01JQkdST1VQX0tFUk5FTF9MSU5VWF9ICiAKLXN0cnVjdCBpcF9taWIgewotICAgIHVuc2lnbmVkIGxvbmcgICBpcEZvcndhcmRpbmc7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwRGVmYXVsdFRUTDsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBJblJlY2VpdmVzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEluSGRyRXJyb3JzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEluQWRkckVycm9yczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBGb3J3RGF0YWdyYW1zOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEluVW5rbm93blByb3RvczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBJbkRpc2NhcmRzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEluRGVsaXZlcnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwT3V0UmVxdWVzdHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwT3V0RGlzY2FyZHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwT3V0Tm9Sb3V0ZXM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwUmVhc21UaW1lb3V0OwotICAgIHVuc2lnbmVkIGxvbmcgICBpcFJlYXNtUmVxZHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwUmVhc21PS3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwUmVhc21GYWlsczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBGcmFnT0tzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEZyYWdGYWlsczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBGcmFnQ3JlYXRlczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBSb3V0aW5nRGlzY2FyZHM7Ci19OwotCi1zdHJ1Y3QgaXA2X21pYiB7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZJblJlY2VpdmVzOwotICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5IZHJFcnJvcnM7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZJblRvb0JpZ0Vycm9yczsKLSAgICB1bnNpZ25lZCBsb25nIGlwNkluTm9Sb3V0ZXM7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZJbkFkZHJFcnJvcnM7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZJblVua25vd25Qcm90b3M7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZJblRydW5jYXRlZFBrdHM7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZJbkRpc2NhcmRzOwotICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5EZWxpdmVyczsKLSAgICB1bnNpZ25lZCBsb25nIGlwNk91dEZvcndEYXRhZ3JhbXM7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZPdXRSZXF1ZXN0czsKLSAgICB1bnNpZ25lZCBsb25nIGlwNk91dERpc2NhcmRzOwotICAgIHVuc2lnbmVkIGxvbmcgaXA2T3V0Tm9Sb3V0ZXM7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZSZWFzbVRpbWVvdXQ7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZSZWFzbVJlcWRzOwotICAgIHVuc2lnbmVkIGxvbmcgaXA2UmVhc21PS3M7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZSZWFzbUZhaWxzOwotICAgIHVuc2lnbmVkIGxvbmcgaXA2RnJhZ09LczsKLSAgICB1bnNpZ25lZCBsb25nIGlwNkZyYWdGYWlsczsKLSAgICB1bnNpZ25lZCBsb25nIGlwNkZyYWdDcmVhdGVzOwotICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5NY2FzdFBrdHM7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZPdXRNY2FzdFBrdHM7Ci19OwotCi1zdHJ1Y3QgaWNtcF9taWIgewotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5Nc2dzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5FcnJvcnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJbkRlc3RVbnJlYWNoczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluVGltZUV4Y2RzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5QYXJtUHJvYnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJblNyY1F1ZW5jaHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJblJlZGlyZWN0czsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluRWNob3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJbkVjaG9SZXBzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5UaW1lc3RhbXBzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5UaW1lc3RhbXBSZXBzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5BZGRyTWFza3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJbkFkZHJNYXNrUmVwczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dE1zZ3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRFcnJvcnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXREZXN0VW5yZWFjaHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRUaW1lRXhjZHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRQYXJtUHJvYnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRTcmNRdWVuY2hzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0UmVkaXJlY3RzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0RWNob3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRFY2hvUmVwczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dFRpbWVzdGFtcHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRUaW1lc3RhbXBSZXBzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0QWRkck1hc2tzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0QWRkck1hc2tSZXBzOwotfTsKLQotc3RydWN0IGljbXA2X21pYiB7Ci0gICAgdW5zaWduZWQgbG9uZyBpY21wNkluTXNnczsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5FcnJvcnM7Ci0gICAgdW5zaWduZWQgbG9uZyBpY21wNkluRGVzdFVucmVhY2hzOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJblBrdFRvb0JpZ3M7Ci0gICAgdW5zaWduZWQgbG9uZyBpY21wNkluVGltZUV4Y2RzOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJblBhcm1Qcm9ibGVtczsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5FY2hvczsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5FY2hvUmVwbGllczsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5Hcm91cE1lbWJRdWVyaWVzOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbkdyb3VwTWVtYlJlc3BvbnNlczsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5Hcm91cE1lbWJSZWR1Y3Rpb25zOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJblJvdXRlclNvbGljaXRzOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJblJvdXRlckFkdmVydGlzZW1lbnRzOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbk5laWdoYm9yU29saWNpdHM7Ci0gICAgdW5zaWduZWQgbG9uZyBpY21wNkluTmVpZ2hib3JBZHZlcnRpc2VtZW50czsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5SZWRpcmVjdHM7Ci0gICAgdW5zaWduZWQgbG9uZyBpY21wNk91dE1zZ3M7Ci0gICAgdW5zaWduZWQgbG9uZyBpY21wNk91dERlc3RVbnJlYWNoczsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0UGt0VG9vQmlnczsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0VGltZUV4Y2RzOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRQYXJtUHJvYmxlbXM7Ci0gICAgdW5zaWduZWQgbG9uZyBpY21wNk91dEVjaG9SZXBsaWVzOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRSb3V0ZXJTb2xpY2l0czsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0TmVpZ2hib3JTb2xpY2l0czsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0TmVpZ2hib3JBZHZlcnRpc2VtZW50czsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0UmVkaXJlY3RzOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRHcm91cE1lbWJSZXNwb25zZXM7Ci0gICAgdW5zaWduZWQgbG9uZyBpY21wNk91dEdyb3VwTWVtYlJlZHVjdGlvbnM7Ci19OwotCi1zdHJ1Y3QgaWNtcF9tc2dfbWliIHsKLSAgICB1bnNpZ25lZCBsb25nIEluVHlwZTsKLSAgICB1bnNpZ25lZCBsb25nIE91dFR5cGU7Ci19OwotCi0vKiBMZXRzIHVzZSB3cmFwcGVyIHN0cnVjdHVyZXMgZm9yIGZ1dHVyZSBleHBhbnNpb24gKi8KLXN0cnVjdCBpY21wNF9tc2dfbWliIHsKLSAgICBzdHJ1Y3QgaWNtcF9tc2dfbWliIHZhbHNbMjU1XTsKLX07Ci0KLXN0cnVjdCBpY21wNl9tc2dfbWliIHsKLSAgICBzdHJ1Y3QgaWNtcF9tc2dfbWliIHZhbHNbMjU1XTsKLX07Ci0KLXN0cnVjdCB1ZHBfbWliIHsKLSAgICB1bnNpZ25lZCBsb25nICAgdWRwSW5EYXRhZ3JhbXM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHVkcE5vUG9ydHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHVkcEluRXJyb3JzOwotICAgIHVuc2lnbmVkIGxvbmcgICB1ZHBPdXREYXRhZ3JhbXM7Ci19OwotCi1zdHJ1Y3QgdWRwNl9taWIgewotICAgIHVuc2lnbmVkIGxvbmcgdWRwNkluRGF0YWdyYW1zOwotICAgIHVuc2lnbmVkIGxvbmcgdWRwNk5vUG9ydHM7Ci0gICAgdW5zaWduZWQgbG9uZyB1ZHA2SW5FcnJvcnM7Ci0gICAgdW5zaWduZWQgbG9uZyB1ZHA2T3V0RGF0YWdyYW1zOwotfTsKLQotc3RydWN0IHRjcF9taWIgewotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BSdG9BbGdvcml0aG07Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcFJ0b01pbjsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwUnRvTWF4OwotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BNYXhDb25uOwotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BBY3RpdmVPcGVuczsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwUGFzc2l2ZU9wZW5zOwotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BBdHRlbXB0RmFpbHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcEVzdGFiUmVzZXRzOwotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BDdXJyRXN0YWI7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcEluU2VnczsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwT3V0U2VnczsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwUmV0cmFuc1NlZ3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcEluRXJyczsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwT3V0UnN0czsKLSAgICBzaG9ydCAgICAgICAgICAgdGNwSW5FcnJzVmFsaWQ7Ci0gICAgc2hvcnQgICAgICAgICAgIHRjcE91dFJzdHNWYWxpZDsKLX07Ci0KKyNpbmNsdWRlICJrZXJuZWxfbWliLmgiCiAKIGludCAgICAgICAgICAgICBsaW51eF9yZWFkX2lwX3N0YXQoc3RydWN0IGlwX21pYiAqKTsKIGludCAgICAgICAgICAgICBsaW51eF9yZWFkX2lwNl9zdGF0KHN0cnVjdCBpcDZfbWliICopOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX21pYi5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX21pYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2ZTdmYjEKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbWliLmgKQEAgLTAsMCArMSwxNjMgQEAKKy8qCisgKiAgTUlCIHN0YXRpc3RpY3MgZ2F0aGVyaW5nIHN0cnVjdHVyZXMKKyAqLworCisjaWZuZGVmIF9NSUJHUk9VUF9LRVJORUxfTUlCX0gKKyNkZWZpbmUgX01JQkdST1VQX0tFUk5FTF9NSUJfSAorCitzdHJ1Y3QgaXBfbWliIHsKKyAgICB1bnNpZ25lZCBsb25nICAgaXBGb3J3YXJkaW5nOworICAgIHVuc2lnbmVkIGxvbmcgICBpcERlZmF1bHRUVEw7CisgICAgdW5zaWduZWQgbG9uZyAgIGlwSW5SZWNlaXZlczsKKyAgICB1bnNpZ25lZCBsb25nICAgaXBJbkhkckVycm9yczsKKyAgICB1bnNpZ25lZCBsb25nICAgaXBJbkFkZHJFcnJvcnM7CisgICAgdW5zaWduZWQgbG9uZyAgIGlwRm9yd0RhdGFncmFtczsKKyAgICB1bnNpZ25lZCBsb25nICAgaXBJblVua25vd25Qcm90b3M7CisgICAgdW5zaWduZWQgbG9uZyAgIGlwSW5EaXNjYXJkczsKKyAgICB1bnNpZ25lZCBsb25nICAgaXBJbkRlbGl2ZXJzOworICAgIHVuc2lnbmVkIGxvbmcgICBpcE91dFJlcXVlc3RzOworICAgIHVuc2lnbmVkIGxvbmcgICBpcE91dERpc2NhcmRzOworICAgIHVuc2lnbmVkIGxvbmcgICBpcE91dE5vUm91dGVzOworICAgIHVuc2lnbmVkIGxvbmcgICBpcFJlYXNtVGltZW91dDsKKyAgICB1bnNpZ25lZCBsb25nICAgaXBSZWFzbVJlcWRzOworICAgIHVuc2lnbmVkIGxvbmcgICBpcFJlYXNtT0tzOworICAgIHVuc2lnbmVkIGxvbmcgICBpcFJlYXNtRmFpbHM7CisgICAgdW5zaWduZWQgbG9uZyAgIGlwRnJhZ09LczsKKyAgICB1bnNpZ25lZCBsb25nICAgaXBGcmFnRmFpbHM7CisgICAgdW5zaWduZWQgbG9uZyAgIGlwRnJhZ0NyZWF0ZXM7CisgICAgdW5zaWduZWQgbG9uZyAgIGlwUm91dGluZ0Rpc2NhcmRzOworfTsKKworc3RydWN0IGlwNl9taWIgeworICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5SZWNlaXZlczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkluSGRyRXJyb3JzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5Ub29CaWdFcnJvcnM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZJbk5vUm91dGVzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5BZGRyRXJyb3JzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5Vbmtub3duUHJvdG9zOworICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5UcnVuY2F0ZWRQa3RzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5EaXNjYXJkczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkluRGVsaXZlcnM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZPdXRGb3J3RGF0YWdyYW1zOworICAgIHVuc2lnbmVkIGxvbmcgaXA2T3V0UmVxdWVzdHM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZPdXREaXNjYXJkczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNk91dE5vUm91dGVzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2UmVhc21UaW1lb3V0OworICAgIHVuc2lnbmVkIGxvbmcgaXA2UmVhc21SZXFkczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNlJlYXNtT0tzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2UmVhc21GYWlsczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkZyYWdPS3M7CisgICAgdW5zaWduZWQgbG9uZyBpcDZGcmFnRmFpbHM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZGcmFnQ3JlYXRlczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkluTWNhc3RQa3RzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2T3V0TWNhc3RQa3RzOworfTsKKworc3RydWN0IGljbXBfbWliIHsKKyAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluTXNnczsKKyAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluRXJyb3JzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5EZXN0VW5yZWFjaHM7CisgICAgdW5zaWduZWQgbG9uZyAgIGljbXBJblRpbWVFeGNkczsKKyAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluUGFybVByb2JzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5TcmNRdWVuY2hzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5SZWRpcmVjdHM7CisgICAgdW5zaWduZWQgbG9uZyAgIGljbXBJbkVjaG9zOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5FY2hvUmVwczsKKyAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluVGltZXN0YW1wczsKKyAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluVGltZXN0YW1wUmVwczsKKyAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluQWRkck1hc2tzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5BZGRyTWFza1JlcHM7CisgICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRNc2dzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0RXJyb3JzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0RGVzdFVucmVhY2hzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0VGltZUV4Y2RzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0UGFybVByb2JzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0U3JjUXVlbmNoczsKKyAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dFJlZGlyZWN0czsKKyAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dEVjaG9zOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0RWNob1JlcHM7CisgICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRUaW1lc3RhbXBzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0VGltZXN0YW1wUmVwczsKKyAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dEFkZHJNYXNrczsKKyAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dEFkZHJNYXNrUmVwczsKK307CisKK3N0cnVjdCBpY21wNl9taWIgeworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbk1zZ3M7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluRXJyb3JzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbkRlc3RVbnJlYWNoczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5Qa3RUb29CaWdzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJblRpbWVFeGNkczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5QYXJtUHJvYmxlbXM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluRWNob3M7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluRWNob1JlcGxpZXM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluR3JvdXBNZW1iUXVlcmllczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5Hcm91cE1lbWJSZXNwb25zZXM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluR3JvdXBNZW1iUmVkdWN0aW9uczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5Sb3V0ZXJTb2xpY2l0czsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5Sb3V0ZXJBZHZlcnRpc2VtZW50czsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5OZWlnaGJvclNvbGljaXRzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbk5laWdoYm9yQWR2ZXJ0aXNlbWVudHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluUmVkaXJlY3RzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRNc2dzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXREZXN0VW5yZWFjaHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNk91dFBrdFRvb0JpZ3M7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNk91dFRpbWVFeGNkczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0UGFybVByb2JsZW1zOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRFY2hvUmVwbGllczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0Um91dGVyU29saWNpdHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNk91dE5laWdoYm9yU29saWNpdHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNk91dE5laWdoYm9yQWR2ZXJ0aXNlbWVudHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNk91dFJlZGlyZWN0czsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0R3JvdXBNZW1iUmVzcG9uc2VzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRHcm91cE1lbWJSZWR1Y3Rpb25zOworfTsKKworc3RydWN0IGljbXBfbXNnX21pYiB7CisgICAgdW5zaWduZWQgbG9uZyBJblR5cGU7CisgICAgdW5zaWduZWQgbG9uZyBPdXRUeXBlOworfTsKKworLyogTGV0cyB1c2Ugd3JhcHBlciBzdHJ1Y3R1cmVzIGZvciBmdXR1cmUgZXhwYW5zaW9uICovCitzdHJ1Y3QgaWNtcDRfbXNnX21pYiB7CisgICAgc3RydWN0IGljbXBfbXNnX21pYiB2YWxzWzI1NV07Cit9OworCitzdHJ1Y3QgaWNtcDZfbXNnX21pYiB7CisgICAgc3RydWN0IGljbXBfbXNnX21pYiB2YWxzWzI1NV07Cit9OworCitzdHJ1Y3QgdWRwX21pYiB7CisgICAgdW5zaWduZWQgbG9uZyAgIHVkcEluRGF0YWdyYW1zOworICAgIHVuc2lnbmVkIGxvbmcgICB1ZHBOb1BvcnRzOworICAgIHVuc2lnbmVkIGxvbmcgICB1ZHBJbkVycm9yczsKKyAgICB1bnNpZ25lZCBsb25nICAgdWRwT3V0RGF0YWdyYW1zOworfTsKKworc3RydWN0IHVkcDZfbWliIHsKKyAgICB1bnNpZ25lZCBsb25nIHVkcDZJbkRhdGFncmFtczsKKyAgICB1bnNpZ25lZCBsb25nIHVkcDZOb1BvcnRzOworICAgIHVuc2lnbmVkIGxvbmcgdWRwNkluRXJyb3JzOworICAgIHVuc2lnbmVkIGxvbmcgdWRwNk91dERhdGFncmFtczsKK307CisKK3N0cnVjdCB0Y3BfbWliIHsKKyAgICB1bnNpZ25lZCBsb25nICAgdGNwUnRvQWxnb3JpdGhtOworICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BSdG9NaW47CisgICAgdW5zaWduZWQgbG9uZyAgIHRjcFJ0b01heDsKKyAgICB1bnNpZ25lZCBsb25nICAgdGNwTWF4Q29ubjsKKyAgICB1bnNpZ25lZCBsb25nICAgdGNwQWN0aXZlT3BlbnM7CisgICAgdW5zaWduZWQgbG9uZyAgIHRjcFBhc3NpdmVPcGVuczsKKyAgICB1bnNpZ25lZCBsb25nICAgdGNwQXR0ZW1wdEZhaWxzOworICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BFc3RhYlJlc2V0czsKKyAgICB1bnNpZ25lZCBsb25nICAgdGNwQ3VyckVzdGFiOworICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BJblNlZ3M7CisgICAgdW5zaWduZWQgbG9uZyAgIHRjcE91dFNlZ3M7CisgICAgdW5zaWduZWQgbG9uZyAgIHRjcFJldHJhbnNTZWdzOworICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BJbkVycnM7CisgICAgdW5zaWduZWQgbG9uZyAgIHRjcE91dFJzdHM7CisgICAgc2hvcnQgICAgICAgICAgIHRjcEluRXJyc1ZhbGlkOworICAgIHNob3J0ICAgICAgICAgICB0Y3BPdXRSc3RzVmFsaWQ7Cit9OworCisjZW5kaWYgIC8qIF9NSUJHUk9VUF9LRVJORUxfTUlCX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9uZXRic2QuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9uZXRic2QuYwppbmRleCA5M2YzOGI3Li5hN2NhNzc5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbmV0YnNkLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX25ldGJzZC5jCkBAIC0xNSw2ICsxNSw3IEBACiAjaW5jbHVkZSA8bmV0aW5ldC9pcF9pY21wLmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KICNpbmNsdWRlIDxuZXRpbmV0L2ljbXBfdmFyLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pY21wNi5oPgogI2luY2x1ZGUgPG5ldGluZXQvdGNwLmg+CiAjaW5jbHVkZSA8bmV0aW5ldC90Y3BfdGltZXIuaD4KICNpbmNsdWRlIDxuZXRpbmV0L3RjcF92YXIuaD4KQEAgLTM4LDggKzM5LDEwIEBACiAKICAgICAodm9pZCltZW1zZXQobWliLCAwLCBzaXplb2YoKm1pYikpOwogCi0gICAgaWYgKC0xID09IHN5c2N0bGJ5bmFtZSgibmV0LmluZXQuaWNtcC5zdGF0cyIsIGljbXBzdGF0LCAmc2l6ZSwgTlVMTCwgMCkpCisgICAgaWYgKC0xID09IHN5c2N0bGJ5bmFtZSgibmV0LmluZXQuaWNtcC5zdGF0cyIsIGljbXBzdGF0LCAmc2l6ZSwgTlVMTCwgMCkpIHsKKwlzbm1wX3BlcnJvcigibmV0YnNkX3JlYWRfaWNtcF9zdGF0OiBuZXQuaW5ldC5pY21wLnN0YXRzIik7CiAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAKICAgICBtaWItPmljbXBJbk1zZ3MgPSBpY21wc3RhdFtJQ01QX1NUQVRfQkFEQ09ERV0KICAgICAgICAgKyBpY21wc3RhdFtJQ01QX1NUQVRfVE9PU0hPUlRdCkBAIC04Niw2ICs4OSwxMDMgQEAKICAgICByZXR1cm4gMDsKIH0KIAorCitpbnQKK25ldGJzZF9yZWFkX2ljbXA2X3N0YXQoc3RydWN0IGljbXA2X21pYiAqbWliKQoreworICAgIHVpbnQ2NF90IGljbXBzdGF0W0lDTVA2X05TVEFUU107CisgICAgc2l6ZV90ICAgc2l6ZSA9IHNpemVvZihpY21wc3RhdCk7CisgICAgaW50ICAgICAgaTsKKworICAgICh2b2lkKW1lbXNldChtaWIsIDAsIHNpemVvZigqbWliKSk7CisKKyAgICBpZiAoLTEgPT0gc3lzY3RsYnluYW1lKCJuZXQuaW5ldDYuaWNtcDYuc3RhdHMiLCBpY21wc3RhdCwgJnNpemUsIE5VTEwsIDApKSB7CisJc25tcF9wZXJyb3IoIm5ldGJzZF9yZWFkX2ljbXA2X3N0YXQ6IG5ldC5pbmV0Ni5pY21wNi5zdGF0cyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgbWliLT5pY21wNkluTXNncyA9IGljbXBzdGF0W0lDTVA2X1NUQVRfQkFEQ09ERV0KKyAgICAgICAgICAgICsgaWNtcHN0YXRbSUNNUF9TVEFUX1RPT1NIT1JUXQorCSAgICArIGljbXBzdGF0W0lDTVBfU1RBVF9DSEVDS1NVTV0KKyAgICAgICAgICAgICsgaWNtcHN0YXRbSUNNUF9TVEFUX0JBRExFTl07CisgICAgZm9yIChpID0gMDsgaSA8PSBJQ01QNl9NQVhUWVBFOyBpKyspCisgICAgICAgIG1pYi0+aWNtcDZJbk1zZ3MgICs9IGljbXBzdGF0W0lDTVA2X1NUQVRfSU5ISVNUICsgaV07CisgICAgbWliLT5pY21wNkluRXJyb3JzID0gaWNtcHN0YXRbSUNNUDZfU1RBVF9CQURDT0RFXQorICAgICAgICArIGljbXBzdGF0W0lDTVA2X1NUQVRfVE9PU0hPUlRdCisgICAgICAgICsgaWNtcHN0YXRbSUNNUDZfU1RBVF9DSEVDS1NVTV0KKyAgICAgICAgKyBpY21wc3RhdFtJQ01QNl9TVEFUX0JBRExFTl07CisgICAgbWliLT5pY21wNkluRGVzdFVucmVhY2hzID0gaWNtcHN0YXRbSUNNUDZfU1RBVF9JTkhJU1QgKyBJQ01QNl9EU1RfVU5SRUFDSF07CisgICAgbWliLT5pY21wNkluUGt0VG9vQmlncyA9IGljbXBzdGF0W0lDTVA2X1NUQVRfSU5ISVNUICsgSUNNUDZfUEFDS0VUX1RPT19CSUddOworICAgIG1pYi0+aWNtcDZJblRpbWVFeGNkcyA9IGljbXBzdGF0W0lDTVA2X1NUQVRfSU5ISVNUICsgSUNNUDZfVElNRV9FWENFRURFRF07CisgICAgbWliLT5pY21wNkluUGFybVByb2JsZW1zID0gaWNtcHN0YXRbSUNNUDZfU1RBVF9JTkhJU1QgKyBJQ01QNl9QQVJBTV9QUk9CXTsKKyAgICBtaWItPmljbXA2SW5FY2hvcyA9IGljbXBzdGF0W0lDTVA2X1NUQVRfSU5ISVNUICsgSUNNUDZfRUNIT19SRVFVRVNUXTsKKyAgICBtaWItPmljbXA2SW5FY2hvUmVwbGllcyA9IGljbXBzdGF0W0lDTVA2X1NUQVRfSU5ISVNUICsgSUNNUDZfRUNIT19SRVBMWV07CisgICAgbWliLT5pY21wNkluR3JvdXBNZW1iUXVlcmllcyA9IGljbXBzdGF0W0lDTVA2X1NUQVRfSU5ISVNUICsgTUxEX0xJU1RFTkVSX1FVRVJZXTsKKyAgICBtaWItPmljbXA2SW5Hcm91cE1lbWJSZXNwb25zZXMgPSBpY21wc3RhdFtJQ01QNl9TVEFUX0lOSElTVCArIE1MRF9MSVNURU5FUl9SRVBPUlRdOworICAgIG1pYi0+aWNtcDZJblJvdXRlclNvbGljaXRzID0gaWNtcHN0YXRbSUNNUDZfU1RBVF9JTkhJU1QgKyBORF9ST1VURVJfU09MSUNJVF07CisgICAgbWliLT5pY21wNkluUm91dGVyQWR2ZXJ0aXNlbWVudHMgPSBpY21wc3RhdFtJQ01QNl9TVEFUX0lOSElTVCArIE5EX1JPVVRFUl9BRFZFUlRdOworICAgIG1pYi0+aWNtcDZJbk5laWdoYm9yU29saWNpdHMgPSBpY21wc3RhdFtJQ01QNl9TVEFUX0lOSElTVCArIE5EX05FSUdIQk9SX1NPTElDSVRdOworICAgIG1pYi0+aWNtcDZJbk5laWdoYm9yQWR2ZXJ0aXNlbWVudHMgPSBpY21wc3RhdFtJQ01QNl9TVEFUX0lOSElTVCArIE5EX05FSUdIQk9SX0FEVkVSVF07CisgICAgbWliLT5pY21wNkluUmVkaXJlY3RzID0gaWNtcHN0YXRbSUNNUDZfU1RBVF9JTkhJU1QgKyBORF9SRURJUkVDVF07CisKKyAgICBtaWItPmljbXA2T3V0TXNncyA9IGljbXBzdGF0W0lDTVA2X1NUQVRfQkFEQ09ERV0KKyAgICAgICAgKyBpY21wc3RhdFtJQ01QNl9TVEFUX1RPT1NIT1JUXQorICAgICAgICArIGljbXBzdGF0W0lDTVA2X1NUQVRfQ0hFQ0tTVU1dCisgICAgICAgICsgaWNtcHN0YXRbSUNNUDZfU1RBVF9CQURMRU5dOworICAgIGZvciAoaSA9IDA7IGkgPD0gSUNNUDZfTUFYVFlQRTsgaSsrKQorICAgICAgICBtaWItPmljbXA2T3V0TXNncyArPSBpY21wc3RhdFtJQ01QNl9TVEFUX09VVEhJU1QgKyBpXTsKKyAgICBtaWItPmljbXA2T3V0RGVzdFVucmVhY2hzID0gaWNtcHN0YXRbSUNNUDZfU1RBVF9PVVRISVNUICsgSUNNUDZfRFNUX1VOUkVBQ0hdOworICAgIG1pYi0+aWNtcDZPdXRQa3RUb29CaWdzID0gIGljbXBzdGF0W0lDTVA2X1NUQVRfT1VUSElTVCArIElDTVA2X1BBQ0tFVF9UT09fQklHXTsKKyAgICBtaWItPmljbXA2T3V0VGltZUV4Y2RzID0gaWNtcHN0YXRbSUNNUDZfU1RBVF9PVVRISVNUICsgSUNNUDZfVElNRV9FWENFRURFRF07CisgICAgbWliLT5pY21wNk91dFBhcm1Qcm9ibGVtcyA9IGljbXBzdGF0W0lDTVA2X1NUQVRfT1VUSElTVCArIElDTVA2X1BBUkFNX1BST0JdOworICAgIG1pYi0+aWNtcDZPdXRFY2hvUmVwbGllcyA9IGljbXBzdGF0W0lDTVA2X1NUQVRfT1VUSElTVCArIElDTVA2X0VDSE9fUkVQTFldOworICAgIG1pYi0+aWNtcDZPdXRSb3V0ZXJTb2xpY2l0cyA9ICBpY21wc3RhdFtJQ01QNl9TVEFUX09VVEhJU1QgKyBORF9ST1VURVJfU09MSUNJVF07CisgICAgbWliLT5pY21wNk91dE5laWdoYm9yU29saWNpdHMgPSAgaWNtcHN0YXRbSUNNUDZfU1RBVF9PVVRISVNUICsgTkRfTkVJR0hCT1JfU09MSUNJVF07CisgICAgbWliLT5pY21wNk91dE5laWdoYm9yQWR2ZXJ0aXNlbWVudHMgPSAgaWNtcHN0YXRbSUNNUDZfU1RBVF9PVVRISVNUICsgTkRfTkVJR0hCT1JfQURWRVJUXTsKKyAgICBtaWItPmljbXA2T3V0UmVkaXJlY3RzID0gaWNtcHN0YXRbSUNNUDZfU1RBVF9PVVRISVNUICsgTkRfUkVESVJFQ1RdOworICAgIG1pYi0+aWNtcDZPdXRHcm91cE1lbWJSZXNwb25zZXMgPSAgaWNtcHN0YXRbSUNNUDZfU1RBVF9PVVRISVNUICsgTUxEX0xJU1RFTkVSX1JFUE9SVF07CisgICAgbWliLT5pY21wNk91dEdyb3VwTWVtYlJlZHVjdGlvbnMgPSAgaWNtcHN0YXRbSUNNUDZfU1RBVF9PVVRISVNUICsgTUxEX0xJU1RFTkVSX0RPTkVdOworCisgICAgcmV0dXJuIDA7Cit9CisKKworaW50CituZXRic2RfcmVhZF9pY21wX21zZ19zdGF0KHN0cnVjdCBpY21wX21pYiAqbWliLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWNtcDRfbXNnX21pYiAqbXNnbWliLAorCQkJICBpbnQgKmZsYWcpCit7CisgICAgbmV0YnNkX3JlYWRfaWNtcF9zdGF0KG1pYik7CisgICAgKmZsYWcgPSAwOworICAgIHJldHVybiAwOworfQorCisKK2ludAorbmV0YnNkX3JlYWRfaWNtcDZfbXNnX3N0YXQoc3RydWN0IGljbXA2X21pYiAqbWliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGljbXA2X21zZ19taWIgKm1zZ21pYiwKKwkJCSAgIGludCAqc3VwcG9ydCkKK3sKKyAgICB1aW50NjRfdCBpY21wc3RhdFtJQ01QNl9OU1RBVFNdOworICAgIHNpemVfdCAgIHNpemUgPSBzaXplb2YoaWNtcHN0YXQpOworICAgIGludCAgICAgIGk7CisKKyAgICBuZXRic2RfcmVhZF9pY21wNl9zdGF0KG1pYik7CisKKyAgICBpZiAoLTEgPT0gc3lzY3RsYnluYW1lKCJuZXQuaW5ldDYuaWNtcDYuc3RhdHMiLCBpY21wc3RhdCwgJnNpemUsIE5VTEwsIDApKSB7CisJc25tcF9wZXJyb3IoIm5ldGJzZF9yZWFkX2ljbXA2X3N0YXQ6IG5ldC5pbmV0Ni5pY21wNi5zdGF0cyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKSB7CisJbXNnbWliLT52YWxzW2ldLkluVHlwZSA9IGljbXBzdGF0W0lDTVA2X1NUQVRfSU5ISVNUK2ldOworCW1zZ21pYi0+dmFsc1tpXS5PdXRUeXBlID0gaWNtcHN0YXRbSUNNUDZfU1RBVF9PVVRISVNUK2ldOworICAgIH0KKyAgICAqc3VwcG9ydCA9IDE7CisgICAgcmV0dXJuIDA7Cit9CisKKwogaW50CiBuZXRic2RfcmVhZF9pcF9zdGF0KHN0cnVjdCBpcF9taWIgKm1pYikKIHsKQEAgLTk3LDggKzE5NywxMCBAQAogCiAgICAgKHZvaWQpbWVtc2V0KG1pYiwgMCwgc2l6ZW9mKCptaWIpKTsKIAotICAgIGlmICgtMSA9PSBzeXNjdGxieW5hbWUoIm5ldC5pbmV0LmlwLnN0YXRzIiwgaXBzdGF0LCAmc2l6ZSwgTlVMTCwgMCkpCisgICAgaWYgKC0xID09IHN5c2N0bGJ5bmFtZSgibmV0LmluZXQuaXAuc3RhdHMiLCBpcHN0YXQsICZzaXplLCBOVUxMLCAwKSkgeworCXNubXBfcGVycm9yKCJuZXRic2RfcmVhZF9pcF9zdGF0OiBuZXQuaW5ldC5pcC5zdGF0cyIpOwogICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCiAgICAgbWliLT5pcEZvcndhcmRpbmcgPSAwOwogICAgIGxlbiA9IHNpemVvZiBpOwpAQCAtMTM4LDYgKzI0MCw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKwogaW50CiBuZXRic2RfcmVhZF90Y3Bfc3RhdChzdHJ1Y3QgdGNwX21pYiAqbWliKQogewpAQCAtMTQ2LDggKzI0OSwxMCBAQAogCiAgICAgKHZvaWQpbWVtc2V0KG1pYiwgMCwgc2l6ZW9mKCptaWIpKTsKIAotICAgIGlmICgtMSA9PSBzeXNjdGxieW5hbWUoIm5ldC5pbmV0LnRjcC5zdGF0cyIsIHRjcHN0YXQsICZzaXplLCBOVUxMLCAwKSkKKyAgICBpZiAoLTEgPT0gc3lzY3RsYnluYW1lKCJuZXQuaW5ldC50Y3Auc3RhdHMiLCB0Y3BzdGF0LCAmc2l6ZSwgTlVMTCwgMCkpIHsKKwlzbm1wX3BlcnJvcigibmV0YnNkX3JlYWRfdGNwX3N0YXQ6IG5ldC5pbmV0LnRjcC5zdGF0cyIpOwogICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCiAgICAgbWliLT50Y3BSdG9BbGdvcml0aG0gPSA0OyAvKiBBc3N1bWUgVmFuIEphY29ic2VuJ3MgYWxnb3JpdGhtICovCiAgICAgbWliLT50Y3BSdG9NaW4gPSBUQ1BUVl9NSU47CkBAIC0xNzQsNiArMjc5LDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAorCiBpbnQKIG5ldGJzZF9yZWFkX3VkcF9zdGF0KHN0cnVjdCB1ZHBfbWliICptaWIpCiB7CkBAIC0xODIsMTQgKzI4OCwxNiBAQAogCiAgICAgKHZvaWQpbWVtc2V0KG1pYiwgMCwgc2l6ZW9mKCptaWIpKTsKIAotICAgIGlmICgtMSA9PSBzeXNjdGxieW5hbWUoIm5ldC5pbmV0LnVkcC5zdGF0cyIsIHVkcHN0YXQsICZzaXplLCBOVUxMLCAwKSkKKyAgICBpZiAoLTEgPT0gc3lzY3RsYnluYW1lKCJuZXQuaW5ldC51ZHAuc3RhdHMiLCB1ZHBzdGF0LCAmc2l6ZSwgTlVMTCwgMCkpIHsKKwlzbm1wX3BlcnJvcigibmV0YnNkX3JlYWRfdWRwX3N0YXQ6IG5ldC5pbmV0LnVkcC5zdGF0cyIpOwogICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCiAgICAgbWliLT51ZHBJbkRhdGFncmFtcyA9IHVkcHN0YXRbVURQX1NUQVRfSVBBQ0tFVFNdOwogICAgIG1pYi0+dWRwTm9Qb3J0cyA9IHVkcHN0YXRbVURQX1NUQVRfTk9QT1JUXTsKICAgICBtaWItPnVkcE91dERhdGFncmFtcyA9IHVkcHN0YXRbVURQX1NUQVRfT1BBQ0tFVFNdOwogICAgIG1pYi0+dWRwSW5FcnJvcnMgPSB1ZHBzdGF0W1VEUF9TVEFUX0hEUk9QU10KLSAgICAgICAgKyB1ZHBzdGF0W1VEUF9TVEFUX0JBRFNVTV0gLyogKyB1ZHBzdGF0W1VEUF9TVEFUX0RJU0NBUkRdIC8qIEZJWE1FICovCisgICAgICAgICsgdWRwc3RhdFtVRFBfU1RBVF9CQURTVU1dIC8qICsgdWRwc3RhdFtVRFBfU1RBVF9ESVNDQVJEXSAqLy8qIEZJWE1FICovCiAgICAgICAgICsgdWRwc3RhdFtVRFBfU1RBVF9GVUxMU09DS10gKyB1ZHBzdGF0W1VEUF9TVEFUX0JBRExFTl07CiAKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9uZXRic2QuaCBiL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9uZXRic2QuaAppbmRleCA5MDAwNjgyLi5hY2NiOWE3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbmV0YnNkLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX25ldGJzZC5oCkBAIC0zLDg1ICszLDE2IEBACiAKICNpZiBkZWZpbmVkKE5FVEJTRF9TVEFUU19WSUFfU1lTQ1RMKQogCi1zdHJ1Y3QgaWNtcF9taWIgewotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5Nc2dzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5FcnJvcnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJbkRlc3RVbnJlYWNoczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluVGltZUV4Y2RzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5QYXJtUHJvYnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJblNyY1F1ZW5jaHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJblJlZGlyZWN0czsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluRWNob3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJbkVjaG9SZXBzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5UaW1lc3RhbXBzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5UaW1lc3RhbXBSZXBzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5BZGRyTWFza3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJbkFkZHJNYXNrUmVwczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dE1zZ3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRFcnJvcnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXREZXN0VW5yZWFjaHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRUaW1lRXhjZHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRQYXJtUHJvYnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRTcmNRdWVuY2hzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0UmVkaXJlY3RzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0RWNob3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRFY2hvUmVwczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dFRpbWVzdGFtcHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRUaW1lc3RhbXBSZXBzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0QWRkck1hc2tzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0QWRkck1hc2tSZXBzOwotfTsKLQotc3RydWN0IGlwX21pYiB7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwRm9yd2FyZGluZzsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBEZWZhdWx0VFRMOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEluUmVjZWl2ZXM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwSW5IZHJFcnJvcnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwSW5BZGRyRXJyb3JzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEZvcndEYXRhZ3JhbXM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwSW5Vbmtub3duUHJvdG9zOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEluRGlzY2FyZHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwSW5EZWxpdmVyczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBPdXRSZXF1ZXN0czsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBPdXREaXNjYXJkczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBPdXROb1JvdXRlczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBSZWFzbVRpbWVvdXQ7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwUmVhc21SZXFkczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBSZWFzbU9LczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBSZWFzbUZhaWxzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEZyYWdPS3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwRnJhZ0ZhaWxzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEZyYWdDcmVhdGVzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcFJvdXRpbmdEaXNjYXJkczsKLX07Ci0KLXN0cnVjdCB0Y3BfbWliIHsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwUnRvQWxnb3JpdGhtOwotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BSdG9NaW47Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcFJ0b01heDsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwTWF4Q29ubjsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwQWN0aXZlT3BlbnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcFBhc3NpdmVPcGVuczsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwQXR0ZW1wdEZhaWxzOwotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BFc3RhYlJlc2V0czsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwQ3VyckVzdGFiOwotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BJblNlZ3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcE91dFNlZ3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcFJldHJhbnNTZWdzOwotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BJbkVycnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcE91dFJzdHM7Ci0gICAgc2hvcnQgICAgICAgICAgIHRjcEluRXJyc1ZhbGlkOwotICAgIHNob3J0ICAgICAgICAgICB0Y3BPdXRSc3RzVmFsaWQ7Ci19OwotCi1zdHJ1Y3QgdWRwX21pYiB7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHVkcEluRGF0YWdyYW1zOwotICAgIHVuc2lnbmVkIGxvbmcgICB1ZHBOb1BvcnRzOwotICAgIHVuc2lnbmVkIGxvbmcgICB1ZHBJbkVycm9yczsKLSAgICB1bnNpZ25lZCBsb25nICAgdWRwT3V0RGF0YWdyYW1zOwotfTsKKyNpbmNsdWRlICJrZXJuZWxfbWliLmgiCiAKIGludCAgICAgIG5ldGJzZF9yZWFkX2ljbXBfc3RhdChzdHJ1Y3QgaWNtcF9taWIgKik7CitpbnQgICAgICBuZXRic2RfcmVhZF9pY21wNl9zdGF0KHN0cnVjdCBpY21wNl9taWIgKik7CitpbnQgICAgICBuZXRic2RfcmVhZF9pY21wX21zZ19zdGF0KHN0cnVjdCBpY21wX21pYiAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWNtcDRfbXNnX21pYiAqLAorCQkgCQkgIGludCAqZmxhZyk7CitpbnQgICAgICBuZXRic2RfcmVhZF9pY21wNl9tc2dfc3RhdChzdHJ1Y3QgaWNtcDZfbWliICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWNtcDZfbXNnX21pYiAqLAorCQkJCSAgICBpbnQgKnN1cHBvcnQpOwogaW50ICAgICAgbmV0YnNkX3JlYWRfaXBfc3RhdChzdHJ1Y3QgaXBfbWliICopOwogaW50ICAgICAgbmV0YnNkX3JlYWRfdGNwX3N0YXQoc3RydWN0IHRjcF9taWIgKik7CiBpbnQgICAgICBuZXRic2RfcmVhZF91ZHBfc3RhdChzdHJ1Y3QgdWRwX21pYiAqKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9zeXNjdGwuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9zeXNjdGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWZiMTgxCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX3N5c2N0bC5jCkBAIC0wLDAgKzEsMTc0IEBACisvKgorICogc3lzY3RsIGludGVyZmFjZSBmb3IgaWNtcCBzdGF0cyBmb3Igb3RoZXJzIHRoYW4gTmV0QlNECisgKi8KKworI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNpbmNsdWRlIDxzeXMvcHJvdG9zdy5oPgorCisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2luY2x1ZGUgPG5ldGluZXQvaW5fc3lzdG0uaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2lwLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pcF9pY21wLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2ljbXBfdmFyLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pY21wNi5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSAia2VybmVsX3N5c2N0bC5oIgorCisjaWYgZGVmaW5lZChORVRTTk1QX0NBTl9VU0VfU1lTQ1RMKQorCitpbnQKK3N5c2N0bF9yZWFkX2ljbXBfc3RhdChzdHJ1Y3QgaWNtcF9taWIgKm1pYikKK3sKKyAgICBzdHJ1Y3QgaWNtcHN0YXQgaWNtcHN0YXQ7CisgICAgc2l6ZV90ICAgc2l6ZSA9IHNpemVvZihpY21wc3RhdCk7CisgICAgaW50ICAgICAgaTsKKyAgICBzdGF0aWMgaW50ICAgICAgc25hbWVbNF0gPQorICAgICAgICB7IENUTF9ORVQsIFBGX0lORVQsIElQUFJPVE9fSUNNUCwgSUNNUENUTF9TVEFUUyB9OworCisgICAgKHZvaWQpbWVtc2V0KG1pYiwgMCwgc2l6ZW9mKCptaWIpKTsKKworICAgIGlmICgtMSA9PSBzeXNjdGwoc25hbWUsIDQsICZpY21wc3RhdCwgJnNpemUsIE5VTEwsIDApKSB7CisJc25tcF9wZXJyb3IoInN5c2N0bF9yZWFkX2ljbXBfc3RhdDogbmV0LmluZXQuaWNtcC5zdGF0cyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgbWliLT5pY21wSW5Nc2dzID0gaWNtcHN0YXQuaWNwc19iYWRjb2RlCisgICAgICAgICsgaWNtcHN0YXQuaWNwc190b29zaG9ydAorICAgICAgICArIGljbXBzdGF0LmljcHNfY2hlY2tzdW0KKyAgICAgICAgKyBpY21wc3RhdC5pY3BzX2JhZGxlbjsKKyAgICBtaWItPmljbXBJbkVycm9ycyA9IG1pYi0+aWNtcEluTXNnczsKKyAgICBmb3IgKGkgPSAwOyBpIDw9IElDTVBfTUFYVFlQRTsgaSsrKQorICAgICAgICBtaWItPmljbXBJbk1zZ3MgICs9IGljbXBzdGF0LmljcHNfaW5oaXN0W2ldOworICAgIG1pYi0+aWNtcEluRGVzdFVucmVhY2hzID0gaWNtcHN0YXQuaWNwc19pbmhpc3RbSUNNUF9VTlJFQUNIXTsKKyAgICBtaWItPmljbXBJblRpbWVFeGNkcyA9IGljbXBzdGF0LmljcHNfaW5oaXN0W0lDTVBfVElNWENFRURdOworICAgIG1pYi0+aWNtcEluUGFybVByb2JzID0gaWNtcHN0YXQuaWNwc19pbmhpc3RbSUNNUF9QQVJBTVBST0JdOworICAgIG1pYi0+aWNtcEluU3JjUXVlbmNocyA9IGljbXBzdGF0LmljcHNfaW5oaXN0W0lDTVBfU09VUkNFUVVFTkNIXTsKKyAgICBtaWItPmljbXBJblJlZGlyZWN0cyA9IGljbXBzdGF0LmljcHNfaW5oaXN0W0lDTVBfUkVESVJFQ1RdOworICAgIG1pYi0+aWNtcEluRWNob3MgPSBpY21wc3RhdC5pY3BzX2luaGlzdFtJQ01QX0VDSE9dOworICAgIG1pYi0+aWNtcEluRWNob1JlcHMgPSBpY21wc3RhdC5pY3BzX2luaGlzdFtJQ01QX0VDSE9SRVBMWV07CisgICAgbWliLT5pY21wSW5UaW1lc3RhbXBzID0gaWNtcHN0YXQuaWNwc19pbmhpc3RbSUNNUF9UU1RBTVBdOworICAgIG1pYi0+aWNtcEluVGltZXN0YW1wUmVwcyA9IGljbXBzdGF0LmljcHNfaW5oaXN0W0lDTVBfVFNUQU1QUkVQTFldOworICAgIG1pYi0+aWNtcEluQWRkck1hc2tzID0gaWNtcHN0YXQuaWNwc19pbmhpc3RbSUNNUF9NQVNLUkVRXTsKKyAgICBtaWItPmljbXBJbkFkZHJNYXNrUmVwcyA9IGljbXBzdGF0LmljcHNfaW5oaXN0W0lDTVBfTUFTS1JFUExZXTsKKyAgICBtaWItPmljbXBPdXRNc2dzID0gaWNtcHN0YXQuaWNwc19vbGRzaG9ydCArIGljbXBzdGF0LmljcHNfb2xkaWNtcDsKKyAgICBmb3IgKGkgPSAwOyBpIDw9IElDTVBfTUFYVFlQRTsgaSsrKQorICAgICAgICBtaWItPmljbXBPdXRNc2dzICs9IGljbXBzdGF0LmljcHNfb3V0aGlzdFtpXTsKKyAgICBtaWItPmljbXBPdXRFcnJvcnMgPSBpY21wc3RhdC5pY3BzX29sZHNob3J0ICsgaWNtcHN0YXQuaWNwc19vbGRpY21wOworICAgIG1pYi0+aWNtcE91dERlc3RVbnJlYWNocyA9IGljbXBzdGF0LmljcHNfb3V0aGlzdFtJQ01QX1VOUkVBQ0hdOworICAgIG1pYi0+aWNtcE91dFRpbWVFeGNkcyA9IGljbXBzdGF0LmljcHNfb3V0aGlzdFtJQ01QX1RJTVhDRUVEXTsKKyAgICBtaWItPmljbXBPdXRQYXJtUHJvYnMgPSBpY21wc3RhdC5pY3BzX291dGhpc3RbSUNNUF9QQVJBTVBST0JdOworICAgIG1pYi0+aWNtcE91dFNyY1F1ZW5jaHMgPSBpY21wc3RhdC5pY3BzX291dGhpc3RbSUNNUF9TT1VSQ0VRVUVOQ0hdOworICAgIG1pYi0+aWNtcE91dFJlZGlyZWN0cyA9IGljbXBzdGF0LmljcHNfb3V0aGlzdFtJQ01QX1JFRElSRUNUXTsKKyAgICBtaWItPmljbXBPdXRFY2hvcyA9IGljbXBzdGF0LmljcHNfb3V0aGlzdFtJQ01QX0VDSE9dOworICAgIG1pYi0+aWNtcE91dEVjaG9SZXBzID0gaWNtcHN0YXQuaWNwc19vdXRoaXN0W0lDTVBfRUNIT1JFUExZXTsKKyAgICBtaWItPmljbXBPdXRUaW1lc3RhbXBzID0gaWNtcHN0YXQuaWNwc19vdXRoaXN0W0lDTVBfVFNUQU1QXTsKKyAgICBtaWItPmljbXBPdXRUaW1lc3RhbXBSZXBzID0gaWNtcHN0YXQuaWNwc19vdXRoaXN0W0lDTVBfVFNUQU1QUkVQTFldOworICAgIG1pYi0+aWNtcE91dEFkZHJNYXNrcyA9IGljbXBzdGF0LmljcHNfb3V0aGlzdFtJQ01QX01BU0tSRVFdOworICAgIG1pYi0+aWNtcE91dEFkZHJNYXNrUmVwcyA9IGljbXBzdGF0LmljcHNfb3V0aGlzdFtJQ01QX01BU0tSRVBMWV07CisKKyAgICByZXR1cm4gMDsKK30KKworCitpbnQKK3N5c2N0bF9yZWFkX2ljbXA2X3N0YXQoc3RydWN0IGljbXA2X21pYiAqbWliKQoreworICAgIHN0cnVjdCBpY21wNnN0YXQgaWNtcHN0YXQ7CisgICAgc2l6ZV90ICAgc2l6ZSA9IHNpemVvZihpY21wc3RhdCk7CisgICAgaW50ICAgICAgaTsKKyAgICBzdGF0aWMgaW50ICAgICAgc25hbWVbNF0gPQorICAgICAgICB7IENUTF9ORVQsIFBGX0lORVQ2LCBJUFBST1RPX0lDTVBWNiwgSUNNUFY2Q1RMX1NUQVRTIH07CisKKyAgICAodm9pZCltZW1zZXQobWliLCAwLCBzaXplb2YoKm1pYikpOworCisgICAgaWYgKC0xID09IHN5c2N0bChzbmFtZSwgNCwgJmljbXBzdGF0LCAmc2l6ZSwgTlVMTCwgMCkpIHsKKwlzbm1wX3BlcnJvcigic3lzY3RsX3JlYWRfaWNtcDZfc3RhdDogbmV0LmluZXQ2LmljbXA2LnN0YXRzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBtaWItPmljbXA2SW5Nc2dzID0gaWNtcHN0YXQuaWNwNnNfYmFkY29kZQorICAgICAgICAgICAgKyBpY21wc3RhdC5pY3A2c190b29zaG9ydAorCSAgICArIGljbXBzdGF0LmljcDZzX2NoZWNrc3VtCisgICAgICAgICAgICArIGljbXBzdGF0LmljcDZzX2JhZGxlbjsKKyAgICBtaWItPmljbXA2SW5FcnJvcnMgPSBtaWItPmljbXA2SW5Nc2dzOworICAgIGZvciAoaSA9IDA7IGkgPD0gSUNNUDZfTUFYVFlQRTsgaSsrKQorICAgICAgICBtaWItPmljbXA2SW5Nc2dzICArPSBpY21wc3RhdC5pY3A2c19pbmhpc3RbaV07CisgICAgbWliLT5pY21wNkluRGVzdFVucmVhY2hzID0gaWNtcHN0YXQuaWNwNnNfaW5oaXN0W0lDTVA2X0RTVF9VTlJFQUNIXTsKKyAgICBtaWItPmljbXA2SW5Qa3RUb29CaWdzID0gaWNtcHN0YXQuaWNwNnNfaW5oaXN0W0lDTVA2X1BBQ0tFVF9UT09fQklHXTsKKyAgICBtaWItPmljbXA2SW5UaW1lRXhjZHMgPSBpY21wc3RhdC5pY3A2c19pbmhpc3RbSUNNUDZfVElNRV9FWENFRURFRF07CisgICAgbWliLT5pY21wNkluUGFybVByb2JsZW1zID0gaWNtcHN0YXQuaWNwNnNfaW5oaXN0W0lDTVA2X1BBUkFNX1BST0JdOworICAgIG1pYi0+aWNtcDZJbkVjaG9zID0gaWNtcHN0YXQuaWNwNnNfaW5oaXN0W0lDTVA2X0VDSE9fUkVRVUVTVF07CisgICAgbWliLT5pY21wNkluRWNob1JlcGxpZXMgPSBpY21wc3RhdC5pY3A2c19pbmhpc3RbSUNNUDZfRUNIT19SRVBMWV07CisgICAgbWliLT5pY21wNkluR3JvdXBNZW1iUXVlcmllcyA9IGljbXBzdGF0LmljcDZzX2luaGlzdFtNTERfTElTVEVORVJfUVVFUlldOworICAgIG1pYi0+aWNtcDZJbkdyb3VwTWVtYlJlc3BvbnNlcyA9IGljbXBzdGF0LmljcDZzX2luaGlzdFtNTERfTElTVEVORVJfUkVQT1JUXTsKKyAgICBtaWItPmljbXA2SW5Sb3V0ZXJTb2xpY2l0cyA9IGljbXBzdGF0LmljcDZzX2luaGlzdFtORF9ST1VURVJfU09MSUNJVF07CisgICAgbWliLT5pY21wNkluUm91dGVyQWR2ZXJ0aXNlbWVudHMgPSBpY21wc3RhdC5pY3A2c19pbmhpc3RbTkRfUk9VVEVSX0FEVkVSVF07CisgICAgbWliLT5pY21wNkluTmVpZ2hib3JTb2xpY2l0cyA9IGljbXBzdGF0LmljcDZzX2luaGlzdFtORF9ORUlHSEJPUl9TT0xJQ0lUXTsKKyAgICBtaWItPmljbXA2SW5OZWlnaGJvckFkdmVydGlzZW1lbnRzID0gaWNtcHN0YXQuaWNwNnNfaW5oaXN0W05EX05FSUdIQk9SX0FEVkVSVF07CisgICAgbWliLT5pY21wNkluUmVkaXJlY3RzID0gaWNtcHN0YXQuaWNwNnNfaW5oaXN0W05EX1JFRElSRUNUXTsKKworICAgIG1pYi0+aWNtcDZPdXRNc2dzID0gaWNtcHN0YXQuaWNwNnNfY2FudGVycm9yCisgICAgICAgICsgaWNtcHN0YXQuaWNwNnNfdG9vZnJlcTsKKyAgICBmb3IgKGkgPSAwOyBpIDw9IElDTVA2X01BWFRZUEU7IGkrKykKKyAgICAgICAgbWliLT5pY21wNk91dE1zZ3MgKz0gaWNtcHN0YXQuaWNwNnNfb3V0aGlzdFtpXTsKKyAgICBtaWItPmljbXA2T3V0RGVzdFVucmVhY2hzID0gaWNtcHN0YXQuaWNwNnNfb3V0aGlzdFtJQ01QNl9EU1RfVU5SRUFDSF07CisgICAgbWliLT5pY21wNk91dFBrdFRvb0JpZ3MgPSAgaWNtcHN0YXQuaWNwNnNfb3V0aGlzdFtJQ01QNl9QQUNLRVRfVE9PX0JJR107CisgICAgbWliLT5pY21wNk91dFRpbWVFeGNkcyA9IGljbXBzdGF0LmljcDZzX291dGhpc3RbSUNNUDZfVElNRV9FWENFRURFRF07CisgICAgbWliLT5pY21wNk91dFBhcm1Qcm9ibGVtcyA9IGljbXBzdGF0LmljcDZzX291dGhpc3RbSUNNUDZfUEFSQU1fUFJPQl07CisgICAgbWliLT5pY21wNk91dEVjaG9SZXBsaWVzID0gaWNtcHN0YXQuaWNwNnNfb3V0aGlzdFtJQ01QNl9FQ0hPX1JFUExZXTsKKyAgICBtaWItPmljbXA2T3V0Um91dGVyU29saWNpdHMgPSAgaWNtcHN0YXQuaWNwNnNfb3V0aGlzdFtORF9ST1VURVJfU09MSUNJVF07CisgICAgbWliLT5pY21wNk91dE5laWdoYm9yU29saWNpdHMgPSAgaWNtcHN0YXQuaWNwNnNfb3V0aGlzdFtORF9ORUlHSEJPUl9TT0xJQ0lUXTsKKyAgICBtaWItPmljbXA2T3V0TmVpZ2hib3JBZHZlcnRpc2VtZW50cyA9ICBpY21wc3RhdC5pY3A2c19vdXRoaXN0W05EX05FSUdIQk9SX0FEVkVSVF07CisgICAgbWliLT5pY21wNk91dFJlZGlyZWN0cyA9IGljbXBzdGF0LmljcDZzX291dGhpc3RbTkRfUkVESVJFQ1RdOworICAgIG1pYi0+aWNtcDZPdXRHcm91cE1lbWJSZXNwb25zZXMgPSAgaWNtcHN0YXQuaWNwNnNfb3V0aGlzdFtNTERfTElTVEVORVJfUkVQT1JUXTsKKyAgICBtaWItPmljbXA2T3V0R3JvdXBNZW1iUmVkdWN0aW9ucyA9ICBpY21wc3RhdC5pY3A2c19vdXRoaXN0W01MRF9MSVNURU5FUl9ET05FXTsKKworICAgIHJldHVybiAwOworfQorCisKK2ludAorc3lzY3RsX3JlYWRfaWNtcF9tc2dfc3RhdChzdHJ1Y3QgaWNtcF9taWIgKm1pYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGljbXA0X21zZ19taWIgKm1zZ21pYiwKKwkJCSAgaW50ICpmbGFnKQoreworICAgIHN5c2N0bF9yZWFkX2ljbXBfc3RhdChtaWIpOworICAgICpmbGFnID0gMDsKKyAgICByZXR1cm4gMDsKK30KKworCitpbnQKK3N5c2N0bF9yZWFkX2ljbXA2X21zZ19zdGF0KHN0cnVjdCBpY21wNl9taWIgKm1pYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpY21wNl9tc2dfbWliICptc2dtaWIsCisJCQkgICBpbnQgKnN1cHBvcnQpCit7CisgICAgc3RydWN0IGljbXA2c3RhdCBpY21wc3RhdDsKKyAgICBzaXplX3QgICBzaXplID0gc2l6ZW9mKGljbXBzdGF0KTsKKyAgICBpbnQgICAgICBpOworICAgIHN0YXRpYyBpbnQgICAgICBzbmFtZVs0XSA9CisgICAgICAgIHsgQ1RMX05FVCwgUEZfSU5FVDYsIElQUFJPVE9fSUNNUFY2LCBJQ01QVjZDVExfU1RBVFMgfTsKKworICAgIHN5c2N0bF9yZWFkX2ljbXA2X3N0YXQobWliKTsKKworICAgIGlmICgtMSA9PSBzeXNjdGwoc25hbWUsIDQsICZpY21wc3RhdCwgJnNpemUsIE5VTEwsIDApKSB7CisJc25tcF9wZXJyb3IoInN5c2N0bF9yZWFkX2ljbXA2X3N0YXQ6IG5ldC5pbmV0Ni5pY21wNi5zdGF0cyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKSB7CisJbXNnbWliLT52YWxzW2ldLkluVHlwZSA9IGljbXBzdGF0LmljcDZzX2luaGlzdFtpXTsKKwltc2dtaWItPnZhbHNbaV0uT3V0VHlwZSA9IGljbXBzdGF0LmljcDZzX291dGhpc3RbaV07CisgICAgfQorICAgICpzdXBwb3J0ID0gMTsKKyAgICByZXR1cm4gMDsKK30KKworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9zeXNjdGwuaCBiL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9zeXNjdGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDg0OTczCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX3N5c2N0bC5oCkBAIC0wLDAgKzEsMTkgQEAKKyNpZm5kZWYgX01JQkdST1VQX0tFUk5FTF9TWVNDVExfSAorI2RlZmluZSBfTUlCR1JPVVBfS0VSTkVMX1NZU0NUTF9ICisKKyNpZiBkZWZpbmVkKE5FVFNOTVBfQ0FOX1VTRV9TWVNDVEwpCisKKyNpbmNsdWRlICJrZXJuZWxfbWliLmgiCisKK2ludCAgICAgIHN5c2N0bF9yZWFkX2ljbXBfc3RhdChzdHJ1Y3QgaWNtcF9taWIgKik7CitpbnQgICAgICBzeXNjdGxfcmVhZF9pY21wNl9zdGF0KHN0cnVjdCBpY21wNl9taWIgKik7CitpbnQgICAgICBzeXNjdGxfcmVhZF9pY21wX21zZ19zdGF0KHN0cnVjdCBpY21wX21pYiAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWNtcDRfbXNnX21pYiAqLAorCQkgCQkgIGludCAqZmxhZyk7CitpbnQgICAgICBzeXNjdGxfcmVhZF9pY21wNl9tc2dfc3RhdChzdHJ1Y3QgaWNtcDZfbWliICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWNtcDZfbXNnX21pYiAqLAorCQkJCSAgICBpbnQgKnN1cHBvcnQpOworCisjZW5kaWYgLyogTkVUU05NUF9DQU5fVVNFX1NZU0NUTCAqLworCisjZW5kaWYgLyogX01JQkdST1VQX0tFUk5FTF9TWVNDVExfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvbWliSUlfY29tbW9uLmggYi9hZ2VudC9taWJncm91cC9taWJJSS9taWJJSV9jb21tb24uaAppbmRleCAxNjBhYjgyLi44N2VmOWQxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9taWJJSV9jb21tb24uaAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9taWJJSV9jb21tb24uaApAQCAtODgsNyArODgsNiBAQAogI2luY2x1ZGUgPGRtYWxsb2MuaD4KICNlbmRpZgogCi0KICNpZmRlZiBzb2xhcmlzMgogI2luY2x1ZGUgImtlcm5lbF9zdW5vczUuaCIKICNlbHNlCkBAIC0xMDAsNiArOTksMTAgQEAKICNpZmRlZiBORVRCU0RfU1RBVFNfVklBX1NZU0NUTAogI2luY2x1ZGUgImtlcm5lbF9uZXRic2QuaCIKICNlbmRpZgorI2lmIGRlZmluZWQoTkVUU05NUF9DQU5fVVNFX1NZU0NUTCkgLyogJiYgZGVmaW5lZChJQ01QQ1RMX1NUQVRTKSAqLworI2luY2x1ZGUgImtlcm5lbF9zeXNjdGwuaCIKKyNlbmRpZgorCiAJLyogb3IgTUlCX3h4eENPVU5URVJfU1lNQk9MIHx8IGhwdXgxMSAqLwogI2lmZGVmIGhwdXgKICNpbmNsdWRlIDxzeXMvbWliLmg+CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9zZXRTZXJpYWxOby5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc2V0U2VyaWFsTm8uYwppbmRleCA5MGEwYWJhLi44NWE0MDk4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9zZXRTZXJpYWxOby5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3NldFNlcmlhbE5vLmMKQEAgLTIsOSArMiwxMyBAQAogICogIFRoaXMgZmlsZSBpbXBsZW1lbnRzIHRoZSBzbm1wU2V0U2VyaWFsTm8gVGVzdEFuZEluY3IgY291bnRlcgogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHdhdGNoZXJfc3BpbmxvY2spCisKKwogI2luY2x1ZGUgInNldFNlcmlhbE5vLmgiCiAKIC8qCkBAIC02MCwxMyArNjQsMjEgQEAKICAgICAvKgogICAgICAqIFJlZ2lzdGVyICdzZXRzZXJpYWxubycgYXMgYSB3YXRjaGVkIHNwaW5sb2NrIG9iamVjdAogICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc3BpbmxvY2soCiAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJzbm1wU2V0U2VyaWFsTm8iLCBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfc2VyaWFsX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0lEX0xFTkdUSChzZXRfc2VyaWFsX29pZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2V0c2VyaWFsbm8gKTsKLQorI2Vsc2UgIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc3BpbmxvY2soCisgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJzbm1wU2V0U2VyaWFsTm8iLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfc2VyaWFsX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0lEX0xFTkdUSChzZXRfc2VyaWFsX29pZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZXRzZXJpYWxubyApOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICBERUJVR01TR1RMKCgic2NhbGFyX2ludCIsICJEb25lIGluaXRhbGl6aW5nIGV4YW1wbGUgc2NhbGFyIGludFxuIikpOwogfQogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuYwppbmRleCAwYTIzYzllLi4xZWJlNjRjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oPgpAQCAtNiw2ICs3LDEwIEBACiAjaW5jbHVkZSAic25tcF9taWIuaCIKICNpbmNsdWRlICJ1cGRhdGVzLmgiCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl90cnV0aHZhbHVlKQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiBzdGF0aWMgY29uc3Qgb2lkIHNubXBfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDExIH07CiAKIGV4dGVybiBsb25nIHNubXBfZW5hYmxlYXV0aGVudHJhcHM7CkBAIC0zMCwxMSArMzUsMTMgQEAKICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAogICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQogeworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBpZiAocmVxaW5mby0+bW9kZSA9PSBNT0RFX1NFVF9SRVNFUlZFMSkgewogICAgICAgICBpbnQgcmVzID0gbmV0c25tcF9jaGVja192Yl90cnV0aHZhbHVlKHJlcXVlc3RzLT5yZXF1ZXN0dmIpOwogICAgICAgICBpZiAocmVzICE9IFNOTVBfRVJSX05PRVJST1IpCiAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yKHJlcXVlc3RzLCByZXMpOwogICAgIH0KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWJfNV81LmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuYwppbmRleCAyZWZmZmViLi5jNjNlZmI2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmg+CkBAIC04LDYgKzksMTEgQEAKICNpbmNsdWRlICJzbm1wX21pYl81XzUuaCIKICNpbmNsdWRlICJ1cGRhdGVzLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGhlbHBlcl9zdGF0aXN0aWNzKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3RydXRodmFsdWUpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKICNkZWZpbmUgU05NUF9PSUQgMSwgMywgNiwgMSwgMiwgMSwgMTEKIAogc3RhdGljIG9pZCBzbm1wX29pZFtdID0geyBTTk1QX09JRCB9OwpAQCAtMzQsMTEgKzQwLDEzIEBACiAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKIHsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgaWYgKHJlcWluZm8tPm1vZGUgPT0gTU9ERV9TRVRfUkVTRVJWRTEpIHsKICAgICAgICAgaW50IHJlcyA9IG5ldHNubXBfY2hlY2tfdmJfdHJ1dGh2YWx1ZShyZXF1ZXN0cy0+cmVxdWVzdHZiKTsKICAgICAgICAgaWYgKHJlcyAhPSBTTk1QX0VSUl9OT0VSUk9SKQogICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcihyZXF1ZXN0cywgcmVzKTsKICAgICB9CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQogCkBAIC05MSwxMSArOTksMjAgQEAKICAgICAgICAgb2lkIHNubXBFbmFibGVBdXRoZW5UcmFwc19vaWRbXSA9IHsgU05NUF9PSUQsIDMwLCAwIH07CiAJc3RhdGljIG5ldHNubXBfd2F0Y2hlcl9pbmZvIGVuYWJsZWF1dGhlbl9pbmZvOwogICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWcgPQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3VwZGF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKICAgICAgICAgICAgICAgICAibWliSUkvc25tcEVuYWJsZUF1dGhlblRyYXBzIiwKICAgICAgICAgICAgICAgICBzbm1wRW5hYmxlQXV0aGVuVHJhcHNfb2lkLAogICAgICAgICAgICAgICAgIE9JRF9MRU5HVEgoc25tcEVuYWJsZUF1dGhlblRyYXBzX29pZCksCiAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFLCAmc25tcF9lbmFibGVhdXRoZW50cmFwc3NldCk7CisjZWxzZSAgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfdXBkYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgICAgICJtaWJJSS9zbm1wRW5hYmxlQXV0aGVuVHJhcHMiLAorICAgICAgICAgICAgICAgIHNubXBFbmFibGVBdXRoZW5UcmFwc19vaWQsCisgICAgICAgICAgICAgICAgT0lEX0xFTkdUSChzbm1wRW5hYmxlQXV0aGVuVHJhcHNfb2lkKSwKKyAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSwgJnNubXBfZW5hYmxlYXV0aGVudHJhcHNzZXQpOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogICAgICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZywgbmV0c25tcF9nZXRfdHJ1dGh2YWx1ZSgpKTsKICAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAogICAgICAgICAgICAgcmVnLApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5jCmluZGV4IDU2NzQ3OGEuLmVkMjY5MTkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmMKQEAgLTgsNiArOCwxMSBAQAogCiAjaW5jbHVkZSAic3lzT1JUYWJsZS5oIgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfY29udGFpbmVyKQorCisKIC8qKiBUeXBpY2FsIGRhdGEgc3RydWN0dXJlIGZvciBhIHJvdyBlbnRyeSAqLwogdHlwZWRlZiBzdHJ1Y3Qgc3lzT1JUYWJsZV9lbnRyeV9zIHsKICAgICBuZXRzbm1wX2luZGV4ICAgICAgICAgICAgb2lkX2luZGV4OwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jCmluZGV4IDliNWJmNTYuLjY1YjBiN2MgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmMKQEAgLTE0LDYgKzE0LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2lmIEhBVkVfU1RETElCX0gKICNpbmNsdWRlIDxzdGRsaWIuaD4KQEAgLTQ0LDYgKzQ1LDggQEAKICNpbmNsdWRlICJzeXN0ZW1fbWliLmgiCiAjaW5jbHVkZSAidXBkYXRlcy5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh3YXRjaGVyX3JlYWRfb25seV9pbnRfc2NhbGFyKQorCiAgICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioKIAkgKgogCSAqICBLZXJuZWwgJiBpbnRlcmZhY2UgaW5mb3JtYXRpb24sCkBAIC04MSwyOSArODQsMjMgQEAKIAkgKioqKioqKioqKioqKioqKioqKioqLwogCiBzdGF0aWMgdm9pZAotc3lzdGVtX3BhcnNlX2NvbmZpZ19zeXNkZXNjcihjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0cikKK3N5c3RlbV9wYXJzZV9jb25maWdfc3RyaW5nMihjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyKiB2YWx1ZSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgaWYgKHN0cmxlbihjcHRyKSA+PSBzaXplb2YodmVyc2lvbl9kZXNjcikpIHsKLQluZXRzbm1wX2NvbmZpZ19lcnJvcigic3lzZGVzY3IgdG9rZW4gdG9vIGxvbmcgKG11c3QgYmUgPCAlbHUpOlxuXHQlcyIsCi0JCQkgICAgICh1bnNpZ25lZCBsb25nKXNpemVvZih2ZXJzaW9uX2Rlc2NyKSwgY3B0cik7Ci0gICAgfSBlbHNlIGlmIChzdHJjbXAoY3B0ciwgIlwiXCIiKSA9PSAwKSB7Ci0gICAgICAgIHZlcnNpb25fZGVzY3JbMF0gPSAnXDAnOworICAgIGlmIChzdHJsZW4oY3B0cikgPCBzaXplKSB7CisgICAgICAgIHN0cmNweSh2YWx1ZSwgY3B0cik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgc3RyY3B5KHZlcnNpb25fZGVzY3IsIGNwdHIpOworICAgICAgICBuZXRzbm1wX2NvbmZpZ19lcnJvcigiJXMgdG9rZW4gdG9vIGxvbmcgKG11c3QgYmUgPCAlbHUpOlxuXHQlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLCAodW5zaWduZWQgbG9uZylzaXplLCBjcHRyKTsKICAgICB9CiB9CiAKLU5FVFNOTVBfU1RBVElDX0lOTElORSB2b2lkCitzdGF0aWMgdm9pZAogc3lzdGVtX3BhcnNlX2NvbmZpZ19zdHJpbmcoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmNwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLCBjaGFyKiB2YWx1ZSwgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIGd1YXJkKQogewotICAgIGlmIChzdHJsZW4oY3B0cikgPj0gc2l6ZSkgewotCW5ldHNubXBfY29uZmlnX2Vycm9yKCIlcyB0b2tlbiB0b28gbG9uZyAobXVzdCBiZSA8ICVsdSk6XG5cdCVzIiwKLQkJCSAgICAgdG9rZW4sICh1bnNpZ25lZCBsb25nKXNpemUsIGNwdHIpOwotICAgIH0KLQotICAgIGlmICgqdG9rZW4gPT0gJ3AnICYmIHN0cmNhc2VjbXAodG9rZW4gKyAxLCBuYW1lKSA9PSAwKSB7CisgICAgaWYgKCp0b2tlbiA9PSAncCcpIHsKICAgICAgICAgaWYgKCpndWFyZCA8IDApIHsKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBUaGlzIGlzIGJvZ3VzIChhbmQgc2hvdWxkbid0IGhhcHBlbiBhbnl3YXkpIC0tIHRoZSB2YWx1ZSBpcwpAQCAtMTEzLDcgKzExMCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAiaWdub3JpbmcgYXR0ZW1wdGVkIG92ZXJyaWRlIG9mIHJlYWQtb25seSAlcy4wXG4iLCBuYW1lKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICsrKCpndWFyZCk7CisgICAgICAgICAgICAqZ3VhcmQgPSAxOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCpndWFyZCA+IDApIHsKQEAgLTEzMCwxMSArMTI3LDE0IEBACiAgICAgICAgICpndWFyZCA9IC0xOwogICAgIH0KIAotICAgIGlmIChzdHJjbXAoY3B0ciwgIlwiXCIiKSA9PSAwKSB7Ci0gICAgICAgICp2YWx1ZSA9ICdcMCc7Ci0gICAgfSBlbHNlIGlmIChzdHJsZW4oY3B0cikgPCBzaXplKSB7Ci0gICAgICAgIHN0cmNweSh2YWx1ZSwgY3B0cik7Ci0gICAgfQorICAgIHN5c3RlbV9wYXJzZV9jb25maWdfc3RyaW5nMih0b2tlbiwgY3B0ciwgdmFsdWUsIHNpemUpOworfQorCitzdGF0aWMgdm9pZAorc3lzdGVtX3BhcnNlX2NvbmZpZ19zeXNkZXNjcihjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0cikKK3sKKyAgICBzeXN0ZW1fcGFyc2VfY29uZmlnX3N0cmluZzIodG9rZW4sIGNwdHIsIHZlcnNpb25fZGVzY3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih2ZXJzaW9uX2Rlc2NyKSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNzUsNyArMTc1LDggQEAKICAgICAgICAgc3lzT2JqZWN0SURCeXRlTGVuZ3RoID0gdmVyc2lvbl9zeXNvaWRfbGVuICAqIHNpemVvZihvaWQpOwogICAgICAgICBtZW1jcHkoc3lzT2JqZWN0SUQsIHZlcnNpb25fc3lzb2lkLCBzeXNPYmplY3RJREJ5dGVMZW5ndGgpOwogICAgIH0gZWxzZQotICAgICAgICBzeXNPYmplY3RJREJ5dGVMZW5ndGggPSBzeXNPYmplY3RJRExlbmd0aCAqIHNpemVvZihvaWQpOworCisJCXN5c09iamVjdElEQnl0ZUxlbmd0aCA9IHN5c09iamVjdElETGVuZ3RoICogc2l6ZW9mKG9pZCk7CiB9CiAKIApAQCAtMzUzLDE3ICszNTQsMjggQEAKICAgICB7CiAgICAgICAgIGNvbnN0IG9pZCBzeXNDb250YWN0X29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAxLCA0IH07CiAgICAgICAgIHN0YXRpYyBuZXRzbm1wX3dhdGNoZXJfaW5mbyBzeXNDb250YWN0X3dpbmZvOworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKKyAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcigKKyAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3VwZGF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICAgICAgICAibWliSUkvc3lzQ29udGFjdCIsIHN5c0NvbnRhY3Rfb2lkLCBPSURfTEVOR1RIKHN5c0NvbnRhY3Rfb2lkKSwgCisgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFLCAmc3lzQ29udGFjdFNldCksCisgICAgICAgICAgICBuZXRzbm1wX2luaXRfd2F0Y2hlcl9pbmZvKAorICAgICAgICAgICAgICAgICZzeXNDb250YWN0X3dpbmZvLCBzeXNDb250YWN0LCBTWVNfU1RSSU5HX0xFTiAtIDEsCisgICAgICAgICAgICAgICAgQVNOX09DVEVUX1NUUiwgV0FUQ0hFUl9NQVhfU0laRSB8IFdBVENIRVJfU0laRV9TVFJMRU4pKTsKKyNlbHNlICAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIoCiAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV91cGRhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCiAgICAgICAgICAgICAgICAgIm1pYklJL3N5c0NvbnRhY3QiLCBzeXNDb250YWN0X29pZCwgT0lEX0xFTkdUSChzeXNDb250YWN0X29pZCksCi0gICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFLCAmc3lzQ29udGFjdFNldCksCisgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFksICZzeXNDb250YWN0U2V0KSwKICAgICAgICAgICAgIG5ldHNubXBfaW5pdF93YXRjaGVyX2luZm8oCi0JCSZzeXNDb250YWN0X3dpbmZvLCBzeXNDb250YWN0LCBTWVNfU1RSSU5HX0xFTiAtIDEsCi0JCUFTTl9PQ1RFVF9TVFIsIFdBVENIRVJfTUFYX1NJWkUgfCBXQVRDSEVSX1NJWkVfU1RSTEVOKSk7CisgICAgICAgICAgICAgICAgJnN5c0NvbnRhY3Rfd2luZm8sIHN5c0NvbnRhY3QsIFNZU19TVFJJTkdfTEVOIC0gMSwKKyAgICAgICAgICAgICAgICBBU05fT0NURVRfU1RSLCBXQVRDSEVSX01BWF9TSVpFIHwgV0FUQ0hFUl9TSVpFX1NUUkxFTikpOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB9CiAgICAgewogICAgICAgICBjb25zdCBvaWQgc3lzTmFtZV9vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMSwgNSB9OwogICAgICAgICBzdGF0aWMgbmV0c25tcF93YXRjaGVyX2luZm8gc3lzTmFtZV93aW5mbzsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIoCiAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV91cGRhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCiAgICAgICAgICAgICAgICAgIm1pYklJL3N5c05hbWUiLCBzeXNOYW1lX29pZCwgT0lEX0xFTkdUSChzeXNOYW1lX29pZCksCkBAIC0zNzEsMTAgKzM4MywyMCBAQAogICAgICAgICAgICAgbmV0c25tcF9pbml0X3dhdGNoZXJfaW5mbygKICAgICAgICAgICAgICAgICAmc3lzTmFtZV93aW5mbywgc3lzTmFtZSwgU1lTX1NUUklOR19MRU4gLSAxLCBBU05fT0NURVRfU1RSLAogICAgICAgICAgICAgICAgIFdBVENIRVJfTUFYX1NJWkUgfCBXQVRDSEVSX1NJWkVfU1RSTEVOKSk7CisjZWxzZSAgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKAorICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfdXBkYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgICAgICJtaWJJSS9zeXNOYW1lIiwgc3lzTmFtZV9vaWQsIE9JRF9MRU5HVEgoc3lzTmFtZV9vaWQpLAorICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZLCAmc3lzTmFtZVNldCksCisgICAgICAgICAgICBuZXRzbm1wX2luaXRfd2F0Y2hlcl9pbmZvKAorICAgICAgICAgICAgICAgICZzeXNOYW1lX3dpbmZvLCBzeXNOYW1lLCBTWVNfU1RSSU5HX0xFTiAtIDEsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgV0FUQ0hFUl9NQVhfU0laRSB8IFdBVENIRVJfU0laRV9TVFJMRU4pKTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgfQogICAgIHsKICAgICAgICAgY29uc3Qgb2lkIHN5c0xvY2F0aW9uX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAxLCA2IH07CiAgICAgICAgIHN0YXRpYyBuZXRzbm1wX3dhdGNoZXJfaW5mbyBzeXNMb2NhdGlvbl93aW5mbzsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIoCiAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV91cGRhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCiAgICAgICAgICAgICAgICAgIm1pYklJL3N5c0xvY2F0aW9uIiwgc3lzTG9jYXRpb25fb2lkLApAQCAtMzgzLDYgKzQwNSwxNiBAQAogICAgICAgICAgICAgbmV0c25tcF9pbml0X3dhdGNoZXJfaW5mbygKIAkJJnN5c0xvY2F0aW9uX3dpbmZvLCBzeXNMb2NhdGlvbiwgU1lTX1NUUklOR19MRU4gLSAxLAogCQlBU05fT0NURVRfU1RSLCBXQVRDSEVSX01BWF9TSVpFIHwgV0FUQ0hFUl9TSVpFX1NUUkxFTikpOworI2Vsc2UgIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcigKKyAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3VwZGF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICAgICAgICAibWliSUkvc3lzTG9jYXRpb24iLCBzeXNMb2NhdGlvbl9vaWQsCisgICAgICAgICAgICAgICAgT0lEX0xFTkdUSChzeXNMb2NhdGlvbl9vaWQpLAorICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZLCAmc3lzTG9jYXRpb25TZXQpLAorICAgICAgICAgICAgbmV0c25tcF9pbml0X3dhdGNoZXJfaW5mbygKKwkJJnN5c0xvY2F0aW9uX3dpbmZvLCBzeXNMb2NhdGlvbiwgU1lTX1NUUklOR19MRU4gLSAxLAorCQlBU05fT0NURVRfU1RSLCBXQVRDSEVSX01BWF9TSVpFIHwgV0FUQ0hFUl9TSVpFX1NUUkxFTikpOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB9CiAgICAgewogICAgICAgICBjb25zdCBvaWQgc3lzU2VydmljZXNfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDEsIDcgfTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3RjcC5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmMKaW5kZXggMmJlOTQ4MS4uM2M3OWZhZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmMKQEAgLTUsNiArNSw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSAibWliSUlfY29tbW9uLmgiCiAKICNpZiBIQVZFX1NURExJQl9ICkBAIC05MSw3ICs5Miw5IEBACiBpbnQgIGh6ID0gMTAwMDsKICNlbmRpZgogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVENQX0NPVU5UX0NPTk5FQ1RJT05TCiBleHRlcm4gaW50IFRDUF9Db3VudF9Db25uZWN0aW9ucyggdm9pZCApOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVENQX0NPVU5UX0NPTk5FQ1RJT05TICovCiAgICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioKIAkgKgogCSAqICBJbml0aWFsaXNhdGlvbiAmIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBmdW5jdGlvbnMKQEAgLTM3MCwxMSArMzczLDE0IEBACiAgICAgICAgIHJldF92YWx1ZSA9IHRjcHN0YXQudGNwc19kcm9wczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUQ1BDVVJSRVNUQUI6Ci0jaWZkZWYgVVNJTkdfTUlCSUlfVENQVEFCTEVfTU9EVUxFCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX0NIRUNLSU5HCisgICAgICAgIG5ldHNubXBfZmVhdHVyZV93YW50KHRjcF9jb3VudF9jb25uZWN0aW9ucykKKyNlbmRpZgorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RDUF9DT1VOVF9DT05ORUNUSU9OUwogICAgICAgICByZXRfdmFsdWUgPSBUQ1BfQ291bnRfQ29ubmVjdGlvbnMoKTsKICNlbHNlCiAgICAgICAgIHJldF92YWx1ZSA9IDA7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RDUF9DT1VOVF9DT05ORUNUSU9OUyAqLwogICAgICAgICB0eXBlID0gQVNOX0dBVUdFOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRDUElOU0VHUzoKQEAgLTU0OSw2ICs1NTUsNyBAQAogCiAgICAgY2FzZSBNT0RFX0dFVE5FWFQ6CiAgICAgY2FzZSBNT0RFX0dFVEJVTEs6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKICAgICBjYXNlIE1PREVfU0VUX0FDVElPTjoKQEAgLTU1OCw2ICs1NjUsNyBAQAogICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIm1pYklJL3RjcDogVW5zdXBwb3J0ZWQgbW9kZSAoJWQpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUpOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgZGVmYXVsdDoKICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJtaWJJSS90Y3A6IFVucmVjb2duaXNlZCBtb2RlICglZClcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxaW5mby0+bW9kZSk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYwppbmRleCA5ZjY4ODlmLi4xMzVhYjgzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmMKQEAgLTE1LDYgKzE1LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlICJtaWJJSV9jb21tb24uaCIKIAogI2lmIEhBVkVfTkVUSU5FVF9UQ1BfSApAQCAtNDIsNiArNDMsMTAgQEAKICNpbmNsdWRlICJ0Y3AuaCIKICNpbmNsdWRlICJ0Y3BUYWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGNwdGFibGVfYWxsLCBsaWJuZXRzbm1wbWlicykKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRjcF9jb3VudF9jb25uZWN0aW9ucywgdGNwdGFibGVfYWxsKQorCiAjaWZkZWYgaHB1eDExCiAjZGVmaW5lCVRDUFRBQkxFX0VOVFJZX1RZUEUJbWliX3RjcENvbm5FbnQgCiAjZGVmaW5lCVRDUFRBQkxFX1NUQVRFCQlTdGF0ZSAKQEAgLTE0Miw3ICsxNDcsNyBAQAogICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAgICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvICAgICAgICAgICAqaWluZm87CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnaW5mbzsKLSAgICBpbnQgcmM7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmM7CiAKICAgICBERUJVR01TR1RMKCgibWliSUkvdGNwVGFibGUiLCAiSW5pdGlhbGlzaW5nIFRDUCBUYWJsZVxuIikpOwogICAgIC8qCkBAIC0xODIsNyArMTg3LDcgQEAKICAgICAgICAgICAgIHRjcFRhYmxlX2hhbmRsZXIsCiAgICAgICAgICAgICB0Y3BUYWJsZV9vaWQsIE9JRF9MRU5HVEgodGNwVGFibGVfb2lkKSwKICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKSwKLSAgICByYyA9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IocmVnaW5mbywgaWluZm8pOworICAgIHJjID0gbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcjIocmVnaW5mbywgaWluZm8pOwogICAgIGlmIChyYyAhPSBTTk1QRVJSX1NVQ0NFU1MpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjczLDEyICsyNzgsMTQgQEAKIAogICAgIGNhc2UgTU9ERV9HRVRORVhUOgogICAgIGNhc2UgTU9ERV9HRVRCVUxLOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CiAgICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046CiAgICAgY2FzZSBNT0RFX1NFVF9DT01NSVQ6CiAgICAgY2FzZSBNT0RFX1NFVF9GUkVFOgogICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAibWliSUkvdGNwVGFibGU6IFVuc3VwcG9ydGVkIG1vZGUgKCVkKVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0yOTEsMTEgKzI5OCwxMyBAQAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVENQX0NPVU5UX0NPTk5FQ1RJT05TCiBpbnQKIFRDUF9Db3VudF9Db25uZWN0aW9ucyggdm9pZCApIHsKICAgICB0Y3BUYWJsZV9sb2FkKE5VTEwsIE5VTEwpOwogICAgIHJldHVybiB0Y3BfZXN0YWI7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BfQ09VTlRfQ09OTkVDVElPTlMgKi8KIAogCS8qCiAJICogVHdvIGZvcm1zIG9mIGl0ZXJhdGlvbiBob29rIHJvdXRpbmVzOgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS91ZHAuYwppbmRleCBjOWY4YTRmLi4xZGRjYmM1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS91ZHAuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS91ZHAuYwpAQCAtMzI5LDYgKzMyOSw3IEBACiAKICAgICBjYXNlIE1PREVfR0VUTkVYVDoKICAgICBjYXNlIE1PREVfR0VUQlVMSzoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgogICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgpAQCAtMzM4LDYgKzMzOSw3IEBACiAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAibWliSUkvdWRwOiBVbnN1cHBvcnRlZCBtb2RlICglZClcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxaW5mby0+bW9kZSk7CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICBkZWZhdWx0OgogICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIm1pYklJL3VkcDogVW5yZWNvZ25pc2VkIG1vZGUgKCVkKVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3VkcFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS91ZHBUYWJsZS5jCmluZGV4IGY0NjFmMDIuLjJjODg3NDkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3VkcFRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuYwpAQCAtMTI5LDcgKzEyOSw3IEBACiAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKICAgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gICAgICAgICAgICppaW5mbzsKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWdpbmZvOwotICAgIGludCByYzsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYzsKIAogICAgIERFQlVHTVNHVEwoKCJtaWJJSS91ZHBUYWJsZSIsICJJbml0aWFsaXNpbmcgVURQIFRhYmxlXG4iKSk7CiAgICAgLyoKQEAgLTE2OCw3ICsxNjgsNyBAQAogICAgICAgICAgICAgdWRwVGFibGVfaGFuZGxlciwKICAgICAgICAgICAgIHVkcFRhYmxlX29pZCwgT0lEX0xFTkdUSCh1ZHBUYWJsZV9vaWQpLAogICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpLAotICAgIHJjID0gbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcihyZWdpbmZvLCBpaW5mbyk7CisgICAgcmMgPSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yMihyZWdpbmZvLCBpaW5mbyk7CiAgICAgaWYgKHJjICE9IFNOTVBFUlJfU1VDQ0VTUykKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMzksMTIgKzIzOSwxNCBAQAogCiAgICAgY2FzZSBNT0RFX0dFVE5FWFQ6CiAgICAgY2FzZSBNT0RFX0dFVEJVTEs6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKICAgICBjYXNlIE1PREVfU0VUX0FDVElPTjoKICAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKICAgICBjYXNlIE1PREVfU0VUX0ZSRUU6CiAgICAgY2FzZSBNT0RFX1NFVF9VTkRPOgorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJtaWJJSS91ZHBUYWJsZTogVW5zdXBwb3J0ZWQgbW9kZSAoJWQpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3VwZGF0ZXMuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3VwZGF0ZXMuYwppbmRleCA4N2JlZDg5Li45MzhlYTI5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS91cGRhdGVzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdXBkYXRlcy5jCkBAIC04LDYgKzgsNyBAQAogICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCiAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCiB7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGludCAqc2V0ID0gKGludCopaGFuZGxlci0+bXl2b2lkOwogCiAgICAgaWYgKHJlcWluZm8tPm1vZGUgPT0gTU9ERV9TRVRfUkVTRVJWRTEgJiYgKnNldCA8IDApCkBAIC0xNiw2ICsxNyw3IEBACiAgICAgICAgICpzZXQgPSAxOwogICAgICAgICBzbm1wX3N0b3JlX25lZWRlZChyZWdpbmZvLT5oYW5kbGVyTmFtZSk7CiAgICAgfQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5jCmluZGV4IDMzN2E1ZmMuLmYyZmFmODYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5jCkBAIC0yNTEsNyArMjUxLDcgQEAKICAgICAgICAgcmV0dXJuIFBBUlNFX0ZBSUw7CiAgICAgfQogCi0gICAgaWYgKHN0cmNtcCgqY29udGV4dCwgIlwiXCIiKSA9PSAwKQorICAgIGlmIChzdHJjbXAoKmNvbnRleHQsICJcIlwiIikgPT0gMCB8fCBzdHJjbXAoKmNvbnRleHQsICJcJ1wnIikgPT0gMCkKICAgICAgICAgKipjb250ZXh0ID0gMDsKICAgICBpZiAoc3RyY2FzZWNtcChtb2RlbCwgImFueSIpID09IDApCiAgICAgICAgICppbW9kZWwgPSBTTk1QX1NFQ19NT0RFTF9BTlk7CkBAIC0xMjAxLDkgKzEyMDEsMTEgQEAKICAgICBjYXNlIFNOTVBfTVNHX0dFVEJVTEs6CiAgICAgICAgIHZpZXd0eXBlID0gVkFDTV9WSUVXX1JFQUQ7CiAgICAgICAgIGJyZWFrOworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIFNOTVBfTVNHX1NFVDoKICAgICAgICAgdmlld3R5cGUgPSBWQUNNX1ZJRVdfV1JJVEU7CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICBjYXNlIFNOTVBfTVNHX1RSQVA6CiAgICAgY2FzZSBTTk1QX01TR19UUkFQMjoKICAgICBjYXNlIFNOTVBfTVNHX0lORk9STToKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29udGV4dC5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb250ZXh0LmMKaW5kZXggYzQ3NDE4MC4uOGY0M2NkMyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb250ZXh0LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb250ZXh0LmMKQEAgLTEwNSw3ICsxMDUsNyBAQAogICAgIGlpbmZvLT5nZXRfZmlyc3RfZGF0YV9wb2ludCA9IGdldF9maXJzdF9jb250ZXh0OwogICAgIGlpbmZvLT5nZXRfbmV4dF9kYXRhX3BvaW50ID0gZ2V0X25leHRfY29udGV4dDsKICAgICBpaW5mby0+dGFibGVfcmVnaW5mbyA9IHRhYmxlX2luZm87Ci0gICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcihteV9oYW5kbGVyLCBpaW5mbyk7CisgICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcjIobXlfaGFuZGxlciwgaWluZm8pOwogfQogCiAvKgpAQCAtMTQ5LDcgKzE0OSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKGNvbnRleHRfcHRyLT5jb250ZXh0X25hbWUpKTsKIAogICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGdldG5leHQgYWxyZWFkeSBoYXZlIGJlZW4KQEAgLTE1OSw4ICsxNTgsNiBAQAogICAgICAgICAgICAgICAgICAgICAgInZhY21fY29udGV4dCB0YWJsZSBhY2Nlc3NlZCBhcyBtb2RlPSVkLiAgV2UncmUgaW1wcm9wZXJseSByZWdpc3RlcmVkISIsCiAgICAgICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKTsKICAgICAgICAgICAgIGJyZWFrOwotCi0KICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYwppbmRleCAzYWQ1MWQ0Li44NWNlZjk0IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYwpAQCAtMTU2LDYgKzE1Niw3IEBACiAgICAgICovCiAKICAgICBzd2l0Y2ggKHZwLT5tYWdpYykgeworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgCiAgICAgY2FzZSBTRUNVUklUWUdST1VQOgogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfdmFjbUdyb3VwTmFtZTsKICAgICAgICAgYnJlYWs7CkBAIC0xNjUsMTAgKzE2NiwxMyBAQAogICAgIGNhc2UgU0VDVVJJVFlTVEFUVVM6CiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV92YWNtU2VjdXJpdHlUb0dyb3VwU3RhdHVzOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovIAogICAgIGRlZmF1bHQ6CiAgICAgICAgICp3cml0ZV9tZXRob2QgPSBOVUxMOwogICAgIH0KIAorCSp2YXJfbGVuID0gMDsgLyogYXNzdW1lIDAgbGVuZ3RoIHVudGlsIGZvdW5kICovCisKICAgICBpZiAobWVtY21wKG5hbWUsIHZwLT5uYW1lLCBzaXplb2Yob2lkKSAqIHZwLT5uYW1lbGVuKSAhPSAwKSB7CiAgICAgICAgIG1lbWNweShuYW1lLCB2cC0+bmFtZSwgc2l6ZW9mKG9pZCkgKiB2cC0+bmFtZWxlbik7CiAgICAgICAgICpsZW5ndGggPSB2cC0+bmFtZWxlbjsKQEAgLTI1Miw2ICsyNTYsNyBAQAogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KKwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0yNzgsNiArMjgzLDcgQEAKICAgICAgKi8KIAogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAKICAgICBjYXNlIEFDQ0VTU01BVENIOgogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfdmFjbUFjY2Vzc0NvbnRleHRNYXRjaDsKICAgICAgICAgYnJlYWs7CkBAIC0yOTYsMTAgKzMwMiwxMyBAQAogICAgIGNhc2UgQUNDRVNTU1RBVFVTOgogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfdmFjbUFjY2Vzc1N0YXR1czsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLyAKICAgICBkZWZhdWx0OgogICAgICAgICAqd3JpdGVfbWV0aG9kID0gTlVMTDsKICAgICB9CiAKKwkqdmFyX2xlbiA9IDA7IC8qIGFzc3VtZSAwIGxlbmd0aCB1bnRpbCBmb3VuZCAqLworCiAgICAgaWYgKG1lbWNtcChuYW1lLCB2cC0+bmFtZSwgc2l6ZW9mKG9pZCkgKiB2cC0+bmFtZWxlbikgIT0gMCkgewogICAgICAgICBtZW1jcHkobmFtZSwgdnAtPm5hbWUsIHNpemVvZihvaWQpICogdnAtPm5hbWVsZW4pOwogICAgICAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW47CkBAIC00NjksNiArNDc4LDcgQEAKICAgICAgICAgbG9uZ19yZXR1cm4gPSBncC0+c3RhdHVzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwogICAgIH0KKwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC00OTUsNiArNTA1LDcgQEAKICAgICAgKi8KIAogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAKICAgICBjYXNlIFZJRVdNQVNLOgogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfdmFjbVZpZXdNYXNrOwogICAgICAgICBicmVhazsKQEAgLTUwNywxMSArNTE4LDEzIEBACiAgICAgY2FzZSBWSUVXU1RBVFVTOgogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfdmFjbVZpZXdTdGF0dXM7CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8gCiAgICAgZGVmYXVsdDoKICAgICAgICAgKndyaXRlX21ldGhvZCA9IE5VTEw7CiAgICAgfQogCiAgICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZ19yZXR1cm4pOworCiAgICAgaWYgKHZwLT5tYWdpYyAhPSBWQUNNVklFV1NQSU5MT0NLKSB7CiAgICAgICAgIGlmIChtZW1jbXAobmFtZSwgdnAtPm5hbWUsIHNpemVvZihvaWQpICogdnAtPm5hbWVsZW4pICE9IDApIHsKICAgICAgICAgICAgIG1lbWNweShuYW1lLCB2cC0+bmFtZSwgc2l6ZW9mKG9pZCkgKiB2cC0+bmFtZWxlbik7CkBAIC02MjMsNyArNjM2LDkgQEAKIAogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7CiAgICAgY2FzZSBWQUNNVklFV1NQSU5MT0NLOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX3ZhY21WaWV3U3BpbkxvY2s7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICBsb25nX3JldHVybiA9IHZhY21WaWV3U3BpbkxvY2s7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47CiAKQEAgLTY1MSwzNCArNjY2LDExIEBACiAgICAgICAgIGxvbmdfcmV0dXJuID0gZ3AtPnZpZXdTdGF0dXM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47CiAgICAgfQorCiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLW9pZCAgICAgICAgICAgICoKLXNlYzJncm91cF9nZW5lcmF0ZV9PSUQob2lkICogcHJlZml4LCBzaXplX3QgcHJlZml4TGVuLAotICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmFjbV9ncm91cEVudHJ5ICogZ2VwdHIsIHNpemVfdCAqIGxlbmd0aCkKLXsKLSAgICBvaWQgICAgICAgICAgICAqaW5kZXhPaWQ7Ci0gICAgaW50ICAgICAgICAgICAgIGksIHNlY3VyaXR5TmFtZUxlbjsKLQotICAgIHNlY3VyaXR5TmFtZUxlbiA9IHN0cmxlbihnZXB0ci0+c2VjdXJpdHlOYW1lKTsKLQotICAgICpsZW5ndGggPSAyICsgc2VjdXJpdHlOYW1lTGVuICsgcHJlZml4TGVuOwotICAgIGluZGV4T2lkID0gKG9pZCAqKSBtYWxsb2MoKmxlbmd0aCAqIHNpemVvZihvaWQpKTsKLSAgICBpZiAoaW5kZXhPaWQpIHsKLSAgICAgICAgbWVtbW92ZShpbmRleE9pZCwgcHJlZml4LCBwcmVmaXhMZW4gKiBzaXplb2Yob2lkKSk7Ci0KLSAgICAgICAgaW5kZXhPaWRbcHJlZml4TGVuXSA9IGdlcHRyLT5zZWN1cml0eU1vZGVsOwotCi0gICAgICAgIGluZGV4T2lkW3ByZWZpeExlbiArIDFdID0gc2VjdXJpdHlOYW1lTGVuOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2VjdXJpdHlOYW1lTGVuOyBpKyspCi0gICAgICAgICAgICBpbmRleE9pZFtwcmVmaXhMZW4gKyAyICsgaV0gPSAob2lkKSBnZXB0ci0+c2VjdXJpdHlOYW1lW2ldOwotCi0gICAgfQotICAgIHJldHVybiBpbmRleE9pZDsKLQotfQotCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAKIGludAogc2VjMmdyb3VwX3BhcnNlX29pZChvaWQgKiBvaWRJbmRleCwgc2l6ZV90IG9pZExlbiwKICAgICAgICAgICAgICAgICAgICAgaW50ICptb2RlbCwgdW5zaWduZWQgY2hhciAqKm5hbWUsIHNpemVfdCAqIG5hbWVMZW4pCkBAIC05ODEsNDAgKzk3Myw2IEBACiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CiAKLW9pZCAgICAgICAgICAgICoKLWFjY2Vzc19nZW5lcmF0ZV9PSUQob2lkICogcHJlZml4LCBzaXplX3QgcHJlZml4TGVuLAotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmFjbV9hY2Nlc3NFbnRyeSAqIGFwdHIsIHNpemVfdCAqIGxlbmd0aCkKLXsKLSAgICBvaWQgICAgICAgICAgICAqaW5kZXhPaWQ7Ci0gICAgaW50ICAgICAgICAgICAgIGksIGdyb3VwTmFtZUxlbiwgY29udGV4dFByZWZpeExlbjsKLQotICAgIGdyb3VwTmFtZUxlbiA9IHN0cmxlbihhcHRyLT5ncm91cE5hbWUpOwotICAgIGNvbnRleHRQcmVmaXhMZW4gPSBzdHJsZW4oYXB0ci0+Y29udGV4dFByZWZpeCk7Ci0KLSAgICAqbGVuZ3RoID0gNCArIGdyb3VwTmFtZUxlbiArIGNvbnRleHRQcmVmaXhMZW4gKyBwcmVmaXhMZW47Ci0gICAgaW5kZXhPaWQgPSAob2lkICopIG1hbGxvYygqbGVuZ3RoICogc2l6ZW9mKG9pZCkpOwotICAgIGlmIChpbmRleE9pZCkgewotICAgICAgICBtZW1tb3ZlKGluZGV4T2lkLCBwcmVmaXgsIHByZWZpeExlbiAqIHNpemVvZihvaWQpKTsKLQotICAgICAgICBpbmRleE9pZFtwcmVmaXhMZW5dID0gZ3JvdXBOYW1lTGVuOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZ3JvdXBOYW1lTGVuOyBpKyspCi0gICAgICAgICAgICBpbmRleE9pZFtncm91cE5hbWVMZW4gKyAxICsgaV0gPSAob2lkKSBhcHRyLT5ncm91cE5hbWVbaV07Ci0KLSAgICAgICAgaW5kZXhPaWRbcHJlZml4TGVuICsgZ3JvdXBOYW1lTGVuICsgMV0gPSBjb250ZXh0UHJlZml4TGVuOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY29udGV4dFByZWZpeExlbjsgaSsrKQotICAgICAgICAgICAgaW5kZXhPaWRbcHJlZml4TGVuICsgZ3JvdXBOYW1lTGVuICsgMiArIGldID0KLSAgICAgICAgICAgICAgICAob2lkKSBhcHRyLT5jb250ZXh0UHJlZml4W2ldOwotCi0gICAgICAgIGluZGV4T2lkW3ByZWZpeExlbiArIGdyb3VwTmFtZUxlbiArIGNvbnRleHRQcmVmaXhMZW4gKyAzXSA9Ci0gICAgICAgICAgICBhcHRyLT5zZWN1cml0eU1vZGVsOwotICAgICAgICBpbmRleE9pZFtwcmVmaXhMZW4gKyBncm91cE5hbWVMZW4gKyBjb250ZXh0UHJlZml4TGVuICsgNF0gPQotICAgICAgICAgICAgYXB0ci0+c2VjdXJpdHlMZXZlbDsKLQotICAgIH0KLSAgICByZXR1cm4gaW5kZXhPaWQ7Ci0KLX0KLQogaW50CiBhY2Nlc3NfcGFyc2Vfb2lkKG9pZCAqIG9pZEluZGV4LCBzaXplX3Qgb2lkTGVuLAogICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqZ3JvdXBOYW1lLCBzaXplX3QgKiBncm91cE5hbWVMZW4sCkBAIC0xNTUwLDM1ICsxNTA4LDYgQEAKICAgICByZXR1cm4gMDsKIH0KIAotb2lkICAgICAgICAgICAgKgotdmlld19nZW5lcmF0ZV9PSUQob2lkICogcHJlZml4LCBzaXplX3QgcHJlZml4TGVuLAotICAgICAgICAgICAgICAgICAgc3RydWN0IHZhY21fdmlld0VudHJ5ICogdnB0ciwgc2l6ZV90ICogbGVuZ3RoKQotewotICAgIG9pZCAgICAgICAgICAgICppbmRleE9pZDsKLSAgICBpbnQgICAgICAgICAgICAgaSwgdmlld05hbWVMZW4sIHZpZXdTdWJ0cmVlTGVuOwotCi0gICAgdmlld05hbWVMZW4gPSBzdHJsZW4odnB0ci0+dmlld05hbWUpOwotICAgIHZpZXdTdWJ0cmVlTGVuID0gdnB0ci0+dmlld1N1YnRyZWVMZW47Ci0KLSAgICAqbGVuZ3RoID0gMiArIHZpZXdOYW1lTGVuICsgdmlld1N1YnRyZWVMZW4gKyBwcmVmaXhMZW47Ci0gICAgaW5kZXhPaWQgPSAob2lkICopIG1hbGxvYygqbGVuZ3RoICogc2l6ZW9mKG9pZCkpOwotICAgIGlmIChpbmRleE9pZCkgewotICAgICAgICBtZW1tb3ZlKGluZGV4T2lkLCBwcmVmaXgsIHByZWZpeExlbiAqIHNpemVvZihvaWQpKTsKLQotICAgICAgICBpbmRleE9pZFtwcmVmaXhMZW5dID0gdmlld05hbWVMZW47Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCB2aWV3TmFtZUxlbjsgaSsrKQotICAgICAgICAgICAgaW5kZXhPaWRbdmlld05hbWVMZW4gKyAxICsgaV0gPSAob2lkKSB2cHRyLT52aWV3TmFtZVtpXTsKLQotICAgICAgICBpbmRleE9pZFtwcmVmaXhMZW4gKyB2aWV3TmFtZUxlbiArIDFdID0gdmlld1N1YnRyZWVMZW47Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCB2aWV3U3VidHJlZUxlbjsgaSsrKQotICAgICAgICAgICAgaW5kZXhPaWRbcHJlZml4TGVuICsgdmlld05hbWVMZW4gKyAyICsgaV0gPQotICAgICAgICAgICAgICAgIChvaWQpIHZwdHItPnZpZXdTdWJ0cmVlW2ldOwotCi0gICAgfQotICAgIHJldHVybiBpbmRleE9pZDsKLQotfQotCiBzdHJ1Y3QgdmFjbV92aWV3RW50cnkgKgogdmlld19wYXJzZV92aWV3RW50cnkob2lkICogbmFtZSwgc2l6ZV90IG5hbWVfbGVuKQogewpAQCAtMTkxMSwzICsxODQwLDQgQEAKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLyAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmgKaW5kZXggODg4YzFiOC4uNDcxZjc1OSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmgKQEAgLTE5LDYgKzE5LDcgQEAKICAgICAgZXh0ZXJuIEZpbmRWYXJNZXRob2QgdmFyX3ZhY21fYWNjZXNzOwogICAgICBleHRlcm4gRmluZFZhck1ldGhvZCB2YXJfdmFjbV92aWV3OwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX3ZhY21Hcm91cE5hbWU7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV92YWNtU2VjdXJpdHlUb0dyb3VwU3RhdHVzOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfdmFjbVNlY3VyaXR5VG9Hcm91cFN0b3JhZ2VUeXBlOwpAQCAtMzYsNyArMzcsNiBAQAogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfdmFjbVZpZXdTdG9yYWdlVHlwZTsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX3ZhY21WaWV3VHlwZTsKIAotCiAgICAgIG9pZCAgICAgICAgICAgICphY2Nlc3NfZ2VuZXJhdGVfT0lEKG9pZCAqIHByZWZpeCwgc2l6ZV90IHByZWZpeExlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZhY21fYWNjZXNzRW50cnkgKmFwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqIGxlbmd0aCk7CkBAIC02Nyw3ICs2Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKiBzdWJ0cmVlTGVuKTsKICAgICAgc3RydWN0IHZhY21fdmlld0VudHJ5ICp2aWV3X3BhcnNlX3ZpZXdFbnRyeShvaWQgKiBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBuYW1lX2xlbik7Ci0KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovIAogCiAKICNkZWZpbmUgT0lEX1NOTVBWQUNNTUlCCQlTTk1QX09JRF9TTk1QTU9EVUxFUywgMTYKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmMKaW5kZXggZTYyODZkYy4uNTJmY2Q4NiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmMKQEAgLTQ2LDYgKzQ2LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgInJvdXRlX2hlYWRlcnMuaCIKICNkZWZpbmUgQ0FDSEVfVElNRSAoMTIwKSAgICAgICAgLyogU2Vjb25kcyAqLwpAQCAtNjIsNiArNjMsOCBAQAogI2luY2x1ZGUgImludGVyZmFjZXMuaCIKICNpbmNsdWRlICJzdHJ1Y3QuaCIKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGdldF9yb3V0ZXMsIGxpYm5ldHNubXBtaWJzKQorCiAjaWZuZGVmICBNSU4KICNkZWZpbmUgIE1JTihhLGIpICAgICAgICAgICAgICAgICAgICAgKCgoYSkgPCAoYikpID8gKGEpIDogKGIpKQogI2VuZGlmCkBAIC0zMTcsMTIgKzMyMCwxNCBAQAogCiBzdGF0aWMgdm9pZCAgICAgUm91dGVfU2Nhbl9SZWxvYWQodm9pZCk7CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9HRVRfUk9VVEVTCiBSVEVOVFJZICoqbmV0c25tcF9nZXRfcm91dGVzKHNpemVfdCAqc2l6ZSkgewogICAgIFJvdXRlX1NjYW5fUmVsb2FkKCk7CiAgICAgaWYgKHNpemUpCiAgICAgICAgICpzaXplID0gcnRzaXplOwogICAgIHJldHVybiBydGhlYWQ7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9HRVRfUk9VVEVTICovCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGhwdXgxMSAqLwogCiAjaWYgIShkZWZpbmVkKGxpbnV4KSB8fCBkZWZpbmVkKHNvbGFyaXMyKSB8fCBkZWZpbmVkKGhwdXgxMSkpICYmIGRlZmluZWQoUlRIT1NUX1NZTUJPTCkgJiYgZGVmaW5lZChSVE5FVF9TWU1CT0wpCkBAIC05MjMsNiArOTI4LDEwIEBACiAjZW5kaWYKICAgICAgICAgICAgIG5hbWVbc2l6ZW9mKG5hbWUpIC0gMV0gPSAnXDAnOwogI2Vsc2UKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTgorICAgICAgICAgICAgLyogdGhpcyBleGlzdHMgaGVyZSBqdXN0IHNvIHdlIGRvbid0IGNvcHkgaWZkZWYgbG9naWMgZWxzZXdoZXJlICovCisgICAgICAgICAgICBuZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzdHJpbmdfYXBwZW5kX2ludCk7CisjZW5kaWYKICAgICAgICAgICAgIGlmICghTkVUU05NUF9LTE9PS1VQKGlmbmV0LmlmX25hbWUsIG5hbWUsIHNpemVvZiBuYW1lKSkgewogICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS92YXJfcm91dGUiLCAia2xvb2t1cCBmYWlsZWRcbiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC05MzEsNiArOTQwLDkgQEAKICAgICAgICAgICAgIGNwID0gKGNoYXIgKikgc3RyY2hyKG5hbWUsICdcMCcpOwogICAgICAgICAgICAgc3RyaW5nX2FwcGVuZF9pbnQoY3AsIGlmbmV0LmlmX3VuaXQpOwogI2VuZGlmCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX0NIRUNLSU4KKyAgICAgICAgICAgIG5ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGludGVyZmFjZV9sZWdhY3kpCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX0NIRUNLSU4gKi8KICAgICAgICAgICAgIEludGVyZmFjZV9TY2FuX0luaXQoKTsKICAgICAgICAgICAgIHJ0LnJ0X3VuaXQgPSAwOwogICAgICAgICAgICAgd2hpbGUgKEludGVyZmFjZV9TY2FuX05leHQKQEAgLTEwMzUsMTAgKzEwNDcsMTAgQEAKICAgICBjaGFyICAgICAgICAgICAgbmFtZVsxNl0sIHRlbXBbMTZdOwogICAgIGludCAgICAgICAgICAgICBoYXNoc2l6ZTsKICNlbmRpZgotICAgIHN0YXRpYyBpbnQgICAgICBUaW1lX09mX0xhc3RfUmVsb2FkID0gMDsKKyAgICBzdGF0aWMgdGltZV90ICAgVGltZV9PZl9MYXN0X1JlbG9hZDsKICAgICBzdHJ1Y3QgdGltZXZhbCAgbm93OwogCi0gICAgZ2V0dGltZW9mZGF5KCZub3csIChzdHJ1Y3QgdGltZXpvbmUgKikgMCk7CisgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZub3cpOwogICAgIGlmIChUaW1lX09mX0xhc3RfUmVsb2FkICsgQ0FDSEVfVElNRSA+IG5vdy50dl9zZWMpCiAgICAgICAgIHJldHVybjsKICAgICBUaW1lX09mX0xhc3RfUmVsb2FkID0gbm93LnR2X3NlYzsKQEAgLTEwODAsNiArMTA5MiwxMSBAQAogICAgIH0KIAogI2Vsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBydGVudHJ5IGlzIGEgQlNEIDQuMyBjb21wYXQgKi8KKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTgorICAgIC8qIHRoaXMgZXhpc3RzIGhlcmUganVzdCBzbyB3ZSBkb24ndCBjb3B5IGlmZGVmIGxvZ2ljIGVsc2V3aGVyZSAqLworICAgIG5ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHN0cmluZ19hcHBlbmRfaW50KTsKKyAgICBuZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpbnRlcmZhY2VfbGVnYWN5KQorI2VuZGlmCiAgICAgZm9yICh0YWJsZSA9IDA7IHRhYmxlIDwgTlVNX1JPVVRFX1NZTUJPTFM7IHRhYmxlKyspIHsKICAgICAgICAgYXV0b19ubGlzdChSVEhBU0hTSVpFX1NZTUJPTCwgKGNoYXIgKikgJmhhc2hzaXplLAogICAgICAgICAgICAgICAgICAgIHNpemVvZihoYXNoc2l6ZSkpOwpAQCAtMTE2NCw2ICsxMTgxLDggQEAKICNlbHNlCiAKICNpZiBIQVZFX1NZU19NQlVGX0gKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHN0cmluZ19hcHBlbmRfaW50KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaW50ZXJmYWNlX2xlZ2FjeSkKIHN0YXRpYyB2b2lkCiBSb3V0ZV9TY2FuX1JlbG9hZCh2b2lkKQogewpAQCAtMTE3NCwxMSArMTE5MywxMSBAQAogICAgIGludCAgICAgICAgICAgICBpLCB0YWJsZTsKICAgICByZWdpc3RlciBjaGFyICAqY3A7CiAgICAgY2hhciAgICAgICAgICAgIG5hbWVbMTZdLCB0ZW1wWzE2XTsKLSAgICBzdGF0aWMgaW50ICAgICAgVGltZV9PZl9MYXN0X1JlbG9hZCA9IDA7CisgICAgc3RhdGljIHRpbWVfdCAgIFRpbWVfT2ZfTGFzdF9SZWxvYWQ7CiAgICAgc3RydWN0IHRpbWV2YWwgIG5vdzsKICAgICBpbnQgICAgICAgICAgICAgaGFzaHNpemU7CiAKLSAgICBnZXR0aW1lb2ZkYXkoJm5vdywgKHN0cnVjdCB0aW1lem9uZSAqKSAwKTsKKyAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJm5vdyk7CiAgICAgaWYgKFRpbWVfT2ZfTGFzdF9SZWxvYWQgKyBDQUNIRV9USU1FID4gbm93LnR2X3NlYykKICAgICAgICAgcmV0dXJuOwogICAgIFRpbWVfT2ZfTGFzdF9SZWxvYWQgPSBub3cudHZfc2VjOwpAQCAtMTI5MCwxMCArMTMwOSwxMCBAQAogICAgIGNoYXIgICAgICAgICAgICBsaW5lWzI1Nl07CiAgICAgc3RydWN0IHJ0ZW50cnkgKnJ0OwogICAgIGNoYXIgICAgICAgICAgICBuYW1lWzE2XTsKLSAgICBzdGF0aWMgaW50ICAgICAgVGltZV9PZl9MYXN0X1JlbG9hZCA9IDA7CisgICAgc3RhdGljIHRpbWVfdCAgIFRpbWVfT2ZfTGFzdF9SZWxvYWQ7CiAgICAgc3RydWN0IHRpbWV2YWwgIG5vdzsKIAotICAgIGdldHRpbWVvZmRheSgmbm93LCAoc3RydWN0IHRpbWV6b25lICopIDApOworICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmbm93KTsKICAgICBpZiAoVGltZV9PZl9MYXN0X1JlbG9hZCArIENBQ0hFX1RJTUUgPiBub3cudHZfc2VjKQogICAgICAgICByZXR1cm47CiAgICAgVGltZV9PZl9MYXN0X1JlbG9hZCA9IG5vdy50dl9zZWM7CkBAIC0xNDc3LDcgKzE0OTYsNyBAQAogICAgIERXT1JEICAgICAgICAgICBkd0FjdHVhbFNpemUgPSAwOwogICAgIHN0YXRpYyBQTUlCX0lQRk9SV0FSRFRBQkxFIHBJcFJ0clRhYmxlID0gTlVMTDsKICAgICBzdHJ1Y3QgdGltZXZhbCAgbm93OwotICAgIHN0YXRpYyBsb25nICAgICBUaW1lX09mX0xhc3RfUmVsb2FkID0gMDsKKyAgICBzdGF0aWMgdGltZV90ICAgIFRpbWVfT2ZfTGFzdF9SZWxvYWQ7CiAgICAgc3RhdGljIGluX2FkZHJfdCBhZGRyX3JldDsKIAogCkBAIC0xNDk0LDcgKzE1MTMsNyBAQAogICAgICAgICAgKi8KICAgICAgICAgcm91dGVfcm93ID0gKFBNSUJfSVBGT1JXQVJEUk9XKSBtYWxsb2Moc2l6ZW9mKE1JQl9JUEZPUldBUkRST1cpKTsKICAgICB9Ci0gICAgZ2V0dGltZW9mZGF5KCZub3csIChzdHJ1Y3QgdGltZXpvbmUgKikgMCk7CisgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZub3cpOwogICAgIGlmICgocnRzaXplIDw9IDEpIHx8IChUaW1lX09mX0xhc3RfUmVsb2FkICsgNSA8PSBub3cudHZfc2VjKSkKICAgICAgICAgU2F2ZV9WYWxpZCA9IDA7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jIGIvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jCmluZGV4IGJkNmE4MjEuLmExMmEzMzggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuYworKysgYi9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2lmIEhBVkVfTkVUSU5FVF9JTl9ICkBAIC0xOSw2ICsyMCwxMiBAQAogI2luY2x1ZGUgIm5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaCIKICNpbmNsdWRlICJub3RpZmljYXRpb25fbG9nLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHJlZ2lzdGVyX3Vsb25nX2luc3RhbmNlX2NvbnRleHQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyZWdpc3Rlcl9yZWFkX29ubHlfY291bnRlcjMyX2luc3RhbmNlX2NvbnRleHQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShkZWxldGVfdGFibGVfZGF0YV9zZXQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV9kYXRhc2V0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZGF0ZV9uX3RpbWUpCisKIC8qCiAgKiBjb2x1bW4gbnVtYmVyIGRlZmluaXRpb25zIGZvciB0YWJsZSBubG1Mb2dUYWJsZQogICovCkBAIC00NjcsOCArNDc0LDEwIEBACiAgICAgICogY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZ2V0IHNldCB0byBhIHZhbHVlIGFuZCB0aHVzCiAgICAgICogbm90aWZpY2F0aW9ucyBtdXN0IGJlIHBvc3NpYmx5IGRlbGV0ZWQgZnJvbSBvdXIgYXJjaGl2ZXMuCiAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfU0VUX0NPTU1JVCkKICAgICAgICAgY2hlY2tfbG9nX3NpemUoMCwgTlVMTCk7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuYwppbmRleCAwMDg4ZTBjLi5iMTJjZGM4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmMKQEAgLTIzLDEyICsyMywxNiBAQAogLyoKICAqIG1pbmltYWwgaW5jbHVkZSBkaXJlY3RpdmVzIAogICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKICNpbmNsdWRlICJoZWFkZXJfY29tcGxleC5oIgogI2luY2x1ZGUgInNubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuaCIKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGhlYWRlcl9jb21wbGV4X2ZpbmRfZW50cnkpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIC8qCiAgKiBzbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlX3ZhcmlhYmxlc19vaWQ6CkBAIC0xMzEsNyArMTM1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp0aGVkYXRhKQogewogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFycyA9IE5VTEw7Ci0KKyAgICBpbnQgcmV0VmFsOwogCiAgICAgREVCVUdNU0dUTCgoInNubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUiLCAiYWRkaW5nIGRhdGEuLi4gICIpKTsKICAgICAvKgpAQCAtMTQzLDEzICsxNDcsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgdGhlZGF0YS0+c25tcFRhcmdldFBhcmFtc05hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5zbm1wVGFyZ2V0UGFyYW1zTmFtZUxlbik7CiAKLSAgICBoZWFkZXJfY29tcGxleF9hZGRfZGF0YSgmc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZVN0b3JhZ2UsIHZhcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YSk7Ci0gICAgREVCVUdNU0dUTCgoInNubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUiLCAicmVnaXN0ZXJlZCBhbiBlbnRyeVxuIikpOworICAgIGlmIChoZWFkZXJfY29tcGxleF9tYXliZV9hZGRfZGF0YSgmc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZVN0b3JhZ2UsIHZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEsIDEpICE9IE5VTEwpeworICAgICAgIERFQlVHTVNHVEwoKCJzbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlIiwgInJlZ2lzdGVyZWQgYW4gZW50cnlcbiIpKTsKKyAgICAgICByZXRWYWwgPSBTTk1QRVJSX1NVQ0NFU1M7CisgICAgfWVsc2V7CisgICAgICAgcmV0VmFsID0gU05NUEVSUl9HRU5FUlI7ICAJCisgICAgfQogCiAKICAgICBERUJVR01TR1RMKCgic25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZSIsICJkb25lLlxuIikpOwotICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CisgICAgcmV0dXJuIHJldFZhbDsKIH0KIAogCkBAIC0yMDAsNyArMjA4LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU3RvcmFnZVRtcC0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVJvd1N0YXR1cywgJnRtcGludCk7CiAKLSAgICBzbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlX2FkZChTdG9yYWdlVG1wKTsKKyAgICBpZiAoc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZV9hZGQoU3RvcmFnZVRtcCkgIT0gU05NUEVSUl9TVUNDRVNTKXsKKyAgICAgICAgU05NUF9GUkVFKFN0b3JhZ2VUbXAtPnNubXBUYXJnZXRQYXJhbXNOYW1lKTsKKyAgICAgICAgU05NUF9GUkVFKFN0b3JhZ2VUbXAtPnNubXBOb3RpZnlGaWx0ZXJQcm9maWxlTmFtZSk7CisgICAgICAgIFNOTVBfRlJFRShTdG9yYWdlVG1wKTsKKyAgICB9CiAKICAgICBERUJVR01TR1RMKCgic25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZSIsICJkb25lLlxuIikpOwogfQpAQCAtMjE4LDcgKzIzMCw2IEBACiB7CiAgICAgY2hhciAgICAgICAgICAgIGxpbmVbU05NUF9NQVhCVUZdOwogICAgIGNoYXIgICAgICAgICAgICpjcHRyOwotICAgIHNpemVfdCAgICAgICAgICB0bXBpbnQ7CiAgICAgc3RydWN0IHNubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGVfZGF0YSAqU3RvcmFnZVRtcDsKICAgICBzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKmhjaW5kZXg7CiAKQEAgLTI1MiwxMiArMjYzLDEyIEBACiAgICAgICAgICAgICAgICAgcmVhZF9jb25maWdfc3RvcmVfZGF0YShBU05fSU5URUdFUiwgY3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTdG9yYWdlVG1wLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBOb3RpZnlGaWx0ZXJQcm9maWxlU3RvclR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdG1waW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogICAgICAgICAgICAgY3B0ciA9CiAgICAgICAgICAgICAgICAgcmVhZF9jb25maWdfc3RvcmVfZGF0YShBU05fSU5URUdFUiwgY3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTdG9yYWdlVG1wLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBOb3RpZnlGaWx0ZXJQcm9maWxlUm93U3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRtcGludCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKIAogICAgICAgICAgICAgc25tcGRfc3RvcmVfY29uZmlnKGxpbmUpOwogICAgICAgICB9CkBAIC0zMDEsNiArMzEyLDcgQEAKICAgICB9CiAKICAgICBzd2l0Y2ggKHZwLT5tYWdpYykgeworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIFNOTVBOT1RJRllGSUxURVJQUk9GSUxFTkFNRToKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlTmFtZTsKICAgICAgICAgYnJlYWs7CkBAIC0zMTIsNyArMzI0LDcgQEAKICAgICBjYXNlIFNOTVBOT1RJRllGSUxURVJQUk9GSUxFUk9XU1RBVFVTOgogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfc25tcE5vdGlmeUZpbHRlclByb2ZpbGVSb3dTdGF0dXM7CiAgICAgICAgIGJyZWFrOwotCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIGRlZmF1bHQ6CiAgICAgICAgICp3cml0ZV9tZXRob2QgPSBOVUxMOwogICAgIH0KQEAgLTM0Miw2ICszNTQsNyBAQAogICAgIGRlZmF1bHQ6CiAgICAgICAgIEVSUk9SX01TRygiIik7CiAgICAgfQorCiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTM0OSw2ICszNjIsOCBAQAogCiBzdGF0aWMgc3RydWN0IHNubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGVfZGF0YSAqU3RvcmFnZU5ldzsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgCisKIGludAogd3JpdGVfc25tcE5vdGlmeUZpbHRlclByb2ZpbGVOYW1lKGludCBhY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyICogdmFyX3ZhbCwKQEAgLTc5Miw2ICs4MDcsOCBAQAogfQogCiAKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovIAorCiAKIGNoYXIgICAgICAgICAgICoKIGdldF9GaWx0ZXJQcm9maWxlTmFtZShjb25zdCBjaGFyICpwYXJhbU5hbWUsIHNpemVfdCBwYXJhbU5hbWVfbGVuLApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmgKaW5kZXggOTczNGNiZS4uNjE2YmNkYyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5oCkBAIC01NSw5ICs1NSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICopOwogICAgICBTTk1QQ2FsbGJhY2sgICAgc3RvcmVfc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZTsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgCiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZU5hbWU7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVN0b3JUeXBlOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfc25tcE5vdGlmeUZpbHRlclByb2ZpbGVSb3dTdGF0dXM7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgIGNoYXIgICAgICAgICAgICpnZXRfRmlsdGVyUHJvZmlsZU5hbWUoY29uc3QgY2hhciAqcGFyYW1OYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYXJhbU5hbWVfbGVuLApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jCmluZGV4IGY2MjdlZDYuLjVjMzY5ZDcgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmMKQEAgLTgsNiArOCw3IEBACiAgKiBUaGlzIHNob3VsZCBhbHdheXMgYmUgaW5jbHVkZWQgZmlyc3QgYmVmb3JlIGFueXRoaW5nIGVsc2UgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaWYgSEFWRV9TVERMSUJfSApAQCAtNDEsNiArNDIsMTAgQEAKICMgICBpbmNsdWRlICJub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmgiCiAjZW5kaWYKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGhlYWRlcl9jb21wbGV4X2ZpbmRfZW50cnkpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKIFNOTVBDYWxsYmFjayAgICBzdG9yZV9zbm1wTm90aWZ5VGFibGU7CiAKIC8qCkBAIC01NywxMSArNjIsNiBAQAogc3RhdGljIG9pZCBzbm1wTm90aWZ5RnVsbENvbXBsaWFuY2VbXSA9CiAgICAgeyBTTk1QX09JRF9TTk1QTU9EVUxFUywgMTMsIDMsIDEsIDMgfTsgLyogU05NUC1OT1RJRklDQVRJT04tTUlCOjpzbm1wTm90aWZ5RnVsbENvbXBsaWFuY2UgKi8KIAotdm9pZCBzaHV0ZG93bl9zbm1wTm90aWZ5VGFibGUodm9pZCkKLXsKLSAgICBVTlJFR0lTVEVSX1NZU09SX0VOVFJZKHNubXBOb3RpZnlGdWxsQ29tcGxpYW5jZSk7Ci19Ci0KIAogLyoKICAqIHZhcmlhYmxlMiBzbm1wTm90aWZ5VGFibGVfdmFyaWFibGVzOgpAQCAtMjg1LDcgKzI4NSw3IEBACiAgICAgc3RydWN0IHRhcmdldEFkZHJUYWJsZV9zdHJ1Y3QgKnB0cjsKICAgICBzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKnBwdHI7CiAgICAgc3RydWN0IHNubXBOb3RpZnlUYWJsZV9kYXRhICpucHRyOwotICAgIGludCAgICAgICAgICAgICBjb25maXJtLCBpOworICAgIGludCAgICAgICAgICAgICBjb25maXJtLCBpLCBidWZMZW47CiAgICAgY2hhciAgICAgICAgICAgIGJ1ZltTTk1QX01BWEJVRl9TTUFMTF07CiAgICAgbmV0c25tcF90cmFuc3BvcnQgKnQgPSBOVUxMOwogICAgIHN0cnVjdCBhZ2VudF9hZGRfdHJhcF9hcmdzICphcmdzID0KQEAgLTMwMiw4ICszMDIsOSBAQAogICAgICAqIFhYWDogU1RBUlQgbW92ZSB0YXJnZXQgY3JlYXRpb24gdG8gdGFyZ2V0IGNvZGUgCiAgICAgICovCiAgICAgZm9yIChpID0gMDsgaSA8IE1BWF9FTlRSSUVTOyBpKyspIHsKLSAgICAgICAgc3ByaW50ZihidWYsICJpbnRlcm5hbCVkIiwgaSk7Ci0gICAgICAgIGlmIChnZXRfYWRkckZvck5hbWUoYnVmKSA9PSBOVUxMICYmIGdldF9wYXJhbUVudHJ5KGJ1ZikgPT0gTlVMTCkKKyAgICAgICAgYnVmTGVuID0gc3ByaW50ZihidWYsICJpbnRlcm5hbCVkIiwgaSk7CisgICAgICAgIGlmIChnZXRfYWRkckZvck5hbWUyKGJ1ZiwgYnVmTGVuKSA9PSBOVUxMICYmCisgICAgICAgICAgICBnZXRfcGFyYW1FbnRyeShidWYpID09IE5VTEwpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgaWYgKGkgPT0gTUFYX0VOVFJJRVMpIHsKQEAgLTMyNSw3ICszMjYsOCBAQAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgcHRyID0gc25tcFRhcmdldEFkZHJUYWJsZV9jcmVhdGUoKTsKLSAgICBwdHItPm5hbWUgPSBzdHJkdXAoYnVmKTsKKyAgICBtZW1kdXAoKHVfY2hhcioqKSZwdHItPm5hbWVEYXRhLCBidWYsIGJ1Zkxlbik7CisgICAgcHRyLT5uYW1lTGVuID0gYnVmTGVuOwogICAgIG1lbWNweShwdHItPnREb21haW4sIHQtPmRvbWFpbiwgdC0+ZG9tYWluX2xlbmd0aCAqIHNpemVvZihvaWQpKTsKICAgICBwdHItPnREb21haW5MZW4gPSB0LT5kb21haW5fbGVuZ3RoOwogICAgIHB0ci0+dEFkZHJlc3NMZW4gPSB0LT5yZW1vdGVfbGVuZ3RoOwpAQCAtMzM0LDggKzMzNiw4IEBACiAgICAgcHRyLT50aW1lb3V0ID0gc3MtPnRpbWVvdXQgLyAxMDAwMDsKICAgICBwdHItPnJldHJ5Q291bnQgPSBzcy0+cmV0cmllczsKICAgICBTTk1QX0ZSRUUocHRyLT50YWdMaXN0KTsKLSAgICBwdHItPnRhZ0xpc3QgPSBzdHJkdXAocHRyLT5uYW1lKTsKLSAgICBwdHItPnBhcmFtcyA9IHN0cmR1cChwdHItPm5hbWUpOworICAgIHB0ci0+dGFnTGlzdCA9IHN0cmR1cChidWYpOyAvKiBzdHJkdXAgb2sgc2luY2UgYnVmIGNvbnRhaW5zICdpbnRlcm5hbCVkJyAqLworICAgIHB0ci0+cGFyYW1zID0gc3RyZHVwKGJ1Zik7CiAgICAgcHRyLT5zdG9yYWdlVHlwZSA9IFNUX1JFQURPTkxZOwogICAgIHB0ci0+cm93U3RhdHVzID0gUlNfQUNUSVZFOwogICAgIHB0ci0+c2VzcyA9IHNzOwpAQCAtNDIwLDE4ICs0MjIsMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzZXJ2ZXJhcmcsIHZvaWQgKmNsaWVudGFyZykKIHsKICAgICBzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKmhwdHIsICpuaHB0cjsKLSAgICBzdHJ1Y3Qgc25tcE5vdGlmeVRhYmxlX2RhdGEgKm5wdHI7CiAKICAgICBmb3IgKGhwdHIgPSBzbm1wTm90aWZ5VGFibGVTdG9yYWdlOyBocHRyOyBocHRyID0gbmhwdHIpIHsKLSAgICAgICAgbnB0ciA9IChzdHJ1Y3Qgc25tcE5vdGlmeVRhYmxlX2RhdGEgKikgaHB0ci0+ZGF0YTsKKyAgICAgICAgc3RydWN0IHNubXBOb3RpZnlUYWJsZV9kYXRhICpucHRyID0gaHB0ci0+ZGF0YTsKICAgICAgICAgbmhwdHIgPSBocHRyLT5uZXh0OwogICAgICAgICBpZiAobnB0ci0+c25tcE5vdGlmeVN0b3JhZ2VUeXBlID09IFNUX1JFQURPTkxZKSB7CiAgICAgICAgICAgICBoZWFkZXJfY29tcGxleF9leHRyYWN0X2VudHJ5KCZzbm1wTm90aWZ5VGFibGVTdG9yYWdlLCBocHRyKTsKLSAgICAgICAgICAgIFNOTVBfRlJFRShucHRyLT5zbm1wTm90aWZ5TmFtZSk7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUobnB0ci0+c25tcE5vdGlmeVRhZyk7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUobnB0cik7CisgICAgICAgICAgICBmcmVlKG5wdHItPnNubXBOb3RpZnlOYW1lKTsKKyAgICAgICAgICAgIGZyZWUobnB0ci0+c25tcE5vdGlmeVRhZyk7CisgICAgICAgICAgICBmcmVlKG5wdHIpOwogICAgICAgICB9CiAgICAgfQorICAgIHNubXBOb3RpZnlUYWJsZVN0b3JhZ2UgPSBOVUxMOwogICAgIHJldHVybiAoMCk7CiB9CiAKQEAgLTQ5MSw2ICs0OTMsMzcgQEAKICAgICBERUJVR01TR1RMKCgic25tcE5vdGlmeVRhYmxlIiwgImRvbmUuXG4iKSk7CiB9CiAKK3ZvaWQKK3NodXRkb3duX3NubXBOb3RpZnlUYWJsZSh2b2lkKQoreworICAgIERFQlVHTVNHVEwoKCJzbm1wTm90aWZ5VGFibGUiLCAic2h1dHRpbmcgZG93biAuLi4gIikpOworCisgICAgbm90aWZ5VGFibGVfdW5yZWdpc3Rlcl9ub3RpZmljYXRpb25zKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1BSRV9VUERBVEVfQ09ORklHLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKworICAgIHNubXBfdW5yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19QUkVfVVBEQVRFX0NPTkZJRywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZ5VGFibGVfdW5yZWdpc3Rlcl9ub3RpZmljYXRpb25zLCBOVUxMLCBGQUxTRSk7CisgICAgc25tcF91bnJlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1JFR0lTVEVSX05PVElGSUNBVElPTlMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmeVRhYmxlX3JlZ2lzdGVyX25vdGlmaWNhdGlvbnMsIE5VTEwsIEZBTFNFKTsKKyAgICBzbm1wX3VucmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfU0VORF9UUkFQMiwgc2VuZF9ub3RpZmljYXRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBGQUxTRSk7CisjaWZuZGVmIERJU0FCTEVfU05NUFYxCisgICAgc25tcF91bnJlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1NFTkRfVFJBUDEsIHNlbmRfbm90aWZpY2F0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgRkFMU0UpOworI2VuZGlmCisgICAgc25tcF91bnJlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfTElCUkFSWSwgU05NUF9DQUxMQkFDS19TVE9SRV9EQVRBLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZV9zbm1wTm90aWZ5VGFibGUsIE5VTEwsIEZBTFNFKTsKKworICAgIFVOUkVHSVNURVJfU1lTT1JfRU5UUlkoc25tcE5vdGlmeUZ1bGxDb21wbGlhbmNlKTsKKworICAgIERFQlVHTVNHVEwoKCJzbm1wTm90aWZ5VGFibGUiLCAiZG9uZS5cbiIpKTsKK30KIAogLyoKICAqIHNubXBOb3RpZnlUYWJsZV9hZGQoKTogYWRkcyBhIHN0cnVjdHVyZSBub2RlIHRvIG91ciBkYXRhIHNldCAKQEAgLTQ5OSw3ICs1MzIsNyBAQAogc25tcE5vdGlmeVRhYmxlX2FkZChzdHJ1Y3Qgc25tcE5vdGlmeVRhYmxlX2RhdGEgKnRoZWRhdGEpCiB7CiAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJzID0gTlVMTDsKLQorICAgIGludCByZXRWYWw7CQogCiAgICAgREVCVUdNU0dUTCgoInNubXBOb3RpZnlUYWJsZSIsICJhZGRpbmcgZGF0YS4uLiAgIikpOwogICAgIC8qCkBAIC01MTIsMTIgKzU0NSwxNyBAQAogCiAKIAotICAgIGhlYWRlcl9jb21wbGV4X2FkZF9kYXRhKCZzbm1wTm90aWZ5VGFibGVTdG9yYWdlLCB2YXJzLCB0aGVkYXRhKTsKLSAgICBERUJVR01TR1RMKCgic25tcE5vdGlmeVRhYmxlIiwgInJlZ2lzdGVyZWQgYW4gZW50cnlcbiIpKTsKKyAgICBpZiAoaGVhZGVyX2NvbXBsZXhfbWF5YmVfYWRkX2RhdGEoJnNubXBOb3RpZnlUYWJsZVN0b3JhZ2UsIHZhcnMsIHRoZWRhdGEsIDEpCisgICAgICAgICE9IE5VTEwpeworICAgIAlERUJVR01TR1RMKCgic25tcE5vdGlmeVRhYmxlIiwgInJlZ2lzdGVyZWQgYW4gZW50cnlcbiIpKTsKKwlyZXRWYWwgPSBTTk1QRVJSX1NVQ0NFU1M7CisgICAgfWVsc2V7CisgICAgICAgIHJldFZhbCA9IFNOTVBFUlJfR0VORVJSOyAKKyAgICB9CQogCiAKICAgICBERUJVR01TR1RMKCgic25tcE5vdGlmeVRhYmxlIiwgImRvbmUuXG4iKSk7Ci0gICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKKyAgICByZXR1cm4gcmV0VmFsOwogfQogCiAKQEAgLTU3OCw3ICs2MTYsMTEgQEAKICAgICAgICAgU3RvcmFnZVRtcC0+c25tcE5vdGlmeVJvd1N0YXR1cyA9IFJTX0FDVElWRTsKIAogCi0gICAgc25tcE5vdGlmeVRhYmxlX2FkZChTdG9yYWdlVG1wKTsKKyAgICBpZiAoc25tcE5vdGlmeVRhYmxlX2FkZChTdG9yYWdlVG1wKSAhPSBTTk1QRVJSX1NVQ0NFU1MpeworICAgICAgICBTTk1QX0ZSRUUoU3RvcmFnZVRtcC0+c25tcE5vdGlmeU5hbWUpOworICAgICAgICBTTk1QX0ZSRUUoU3RvcmFnZVRtcC0+c25tcE5vdGlmeVRhZyk7CisgICAgICAgIFNOTVBfRlJFRShTdG9yYWdlVG1wKTsKKyAgICB9CiAKIAogICAgIERFQlVHTVNHVEwoKCJzbm1wTm90aWZ5VGFibGUiLCAiZG9uZS5cbiIpKTsKQEAgLTY3OSw2ICs3MjEsNyBAQAogICAgIH0KIAogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgU05NUE5PVElGWVRBRzoKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX3NubXBOb3RpZnlUYWc7CiAgICAgICAgIGJyZWFrOwpAQCAtNjkxLDYgKzczNCw3IEBACiAgICAgY2FzZSBTTk1QTk9USUZZUk9XU1RBVFVTOgogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfc25tcE5vdGlmeVJvd1N0YXR1czsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIGRlZmF1bHQ6CiAgICAgICAgICp3cml0ZV9tZXRob2QgPSBOVUxMOwogICAgIH0KQEAgLTY5OSw2ICs3NDMsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyNpZm5kZWYgTkVUU05NUF9OT19SRUFEX1NVUFBPUlQKICAgICBzd2l0Y2ggKHZwLT5tYWdpYykgewogICAgIGNhc2UgU05NUE5PVElGWVRBRzoKICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5zbm1wTm90aWZ5VGFnTGVuOwpAQCAtNzE5LDYgKzc2NCw3IEBACiAgICAgZGVmYXVsdDoKICAgICAgICAgRVJST1JfTVNHKCIiKTsKICAgICB9CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fUkVBRF9TVVBQT1JUICovIAogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC03NDcsNiArNzkzLDggQEAKIAogc3RhdGljIHN0cnVjdCBzbm1wTm90aWZ5VGFibGVfZGF0YSAqU3RvcmFnZU5ldzsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgCisKIGludAogd3JpdGVfc25tcE5vdGlmeVRhZyhpbnQgYWN0aW9uLAogICAgICAgICAgICAgICAgICAgICB1X2NoYXIgKiB2YXJfdmFsLApAQCAtMTE3MywzICsxMjIxLDQgQEAKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5oCmluZGV4IDlhOTM2NDUuLjE4YmYxYmQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmgKQEAgLTY0LDEwICs2NCwxMiBAQAogICAgICBpbnQgICAgICAgICAgICAgc25tcE5vdGlmeVRhYmxlX2FkZChzdHJ1Y3Qgc25tcE5vdGlmeVRhYmxlX2RhdGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnRoZWRhdGEpOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfc25tcE5vdGlmeVRhZzsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX3NubXBOb3RpZnlUeXBlOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfc25tcE5vdGlmeVN0b3JhZ2VUeXBlOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfc25tcE5vdGlmeVJvd1N0YXR1czsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIAogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9kYXRhX2FjY2Vzcy9ldGhlcnN0YXRzX2xpbnV4LmMgYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9kYXRhX2FjY2Vzcy9ldGhlcnN0YXRzX2xpbnV4LmMKaW5kZXggZDRiNmU2OS4uYTZhNDJjMyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZGF0YV9hY2Nlc3MvZXRoZXJzdGF0c19saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHNfbGludXguYwpAQCAtMzgsNyArMzgsOCBAQAogICAgIGZvciAocCA9IGFkZHJzOyBwOyBwID0gcC0+aWZhX25leHQpIHsKIAogICAgICAgICBpZiAoIWxpc3RfaGVhZCkgewotICAgICAgICAgICAgaWYgKCAobGlzdF9oZWFkID0gKHN0cnVjdCBpZm5hbWUgKikgbWFsbG9jIChzaXplb2Yoc3RydWN0IGlmbmFtZSkpKSA8IDApIHsKKyAgICAgICAgICAgIGxpc3RfaGVhZCA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IGlmbmFtZSkpOworICAgICAgICAgICAgaWYgKCFsaXN0X2hlYWQpIHsKICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZTppbnRlcmZhY2VfbmFtZV9saXN0X2dldCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZFxuIikpOwogICAgICAgICAgICAgICAgIHNubXBfbG9nIChMT0dfRVJSLCAiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZSxpbnRlcmZhY2VfbmFtZV9saXN0X2dldCwgbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkXG4iKTsKQEAgLTU3LDcgKzU4LDggQEAKICAgICAgICAgaWYgKG5hbWVwdHIxKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKCAobmFtZXB0cjItPmlmbl9uZXh0ID0gKHN0cnVjdCBpZm5hbWUgKikgbWFsbG9jIChzaXplb2Yoc3RydWN0IGlmbmFtZSkpKSA8IDApIHsKKyAgICAgICAgbmFtZXB0cjItPmlmbl9uZXh0ID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgaWZuYW1lKSk7CisgICAgICAgIGlmICghbmFtZXB0cjItPmlmbl9uZXh0KSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZTppbnRlcmZhY2VfbmFtZV9saXN0X2dldCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkXG4iKSk7CiAgICAgICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2VzczpldGhlclN0YXRzVGFibGUsaW50ZXJmYWNlX25hbWVfbGlzdF9nZXQsIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZFxuIik7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuYwppbmRleCAzOGU5MmFmLi4yMjFjNjA4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlLmMKQEAgLTMwLDYgKzMwLDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTQ2LDYgKzQ3LDE0IEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyb3dfbWVyZ2UpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShiYWJ5X3N0ZXBzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfY29udGFpbmVyX3Jvd19pbnNlcnQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19hbGxfcmVxdWVzdHNfZXJyb3IpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmMKaW5kZXggYzAzYWVmNC4uZDYwMjNlNSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5jCkBAIC0xMyw2ICsxMyw3IEBACiAgKiBjb250ZW50IG9mIHRoZSBzY3RwQXNzb2NMb2NhbEFkZHJUYWJsZSAKICAqLwogc3RhdGljIG5ldHNubXBfY29udGFpbmVyICpzY3RwQXNzb2NMb2NhbEFkZHJUYWJsZV9jb250YWluZXI7CitzdGF0aWMgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAogLyoqIEluaXRpYWxpemVzIHRoZSBzY3RwQXNzb2NMb2NhbEFkZHJUYWJsZSBtb2R1bGUgKi8KIHZvaWQKQEAgLTI3LDggKzI4LDcgQEAKIHZvaWQKIHNodXRkb3duX3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlKHZvaWQpCiB7Ci0gICAgc2N0cEFzc29jTG9jYWxBZGRyVGFibGVfY29udGFpbmVyX2NsZWFyCi0gICAgICAgIChzY3RwQXNzb2NMb2NhbEFkZHJUYWJsZV9jb250YWluZXIpOworICAgIHNodXRkb3duX3RhYmxlX3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlKCk7CiB9CiAKIC8qKiBJbml0aWFsaXplIHRoZSBzY3RwQXNzb2NMb2NhbEFkZHJUYWJsZSB0YWJsZSBieSBkZWZpbmluZyBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQgKi8KQEAgLTQyLDcgKzQyLDYgQEAKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWcgPSBOVUxMOwogICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIgPSBOVUxMOwogICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIgPSBOVUxMOwotICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm8gPSBOVUxMOwogCiAgICAgcmVnID0KICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oInNjdHBBc3NvY0xvY2FsQWRkclRhYmxlIiwKQEAgLTEzMiw2ICsxMzEsMTcgQEAKICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9mcmVlKHJlZyk7CiB9CiAKK3ZvaWQKK3NodXRkb3duX3RhYmxlX3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlKHZvaWQpCit7CisgICAgaWYgKHRhYmxlX2luZm8pIHsKKyAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCXRhYmxlX2luZm8gPSBOVUxMOworICAgIH0KKyAgICBzY3RwQXNzb2NMb2NhbEFkZHJUYWJsZV9jb250YWluZXJfY2xlYXIKKyAgICAgICAgKHNjdHBBc3NvY0xvY2FsQWRkclRhYmxlX2NvbnRhaW5lcik7Cit9CisKIC8qKiBoYW5kbGVzIHJlcXVlc3RzIGZvciB0aGUgc2N0cEFzc29jTG9jYWxBZGRyVGFibGUgdGFibGUgKi8KIGludAogc2N0cEFzc29jTG9jYWxBZGRyVGFibGVfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLApAQCAtMjY0LDggKzI3NCw3IEBACiB2b2lkCiBzY3RwQXNzb2NMb2NhbEFkZHJUYWJsZV9lbnRyeV9mcmVlKHNjdHBBc3NvY0xvY2FsQWRkclRhYmxlX2VudHJ5ICogZW50cnkpCiB7Ci0gICAgaWYgKGVudHJ5ICE9IE5VTEwpCi0gICAgICAgIFNOTVBfRlJFRShlbnRyeSk7CisgICAgU05NUF9GUkVFKGVudHJ5KTsKIH0KIAogbmV0c25tcF9jb250YWluZXIgKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmgKaW5kZXggYzJjYzA1NS4uZWZmMDgwZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5oCkBAIC0xMyw2ICsxMyw3IEBACiB2b2lkICAgICAgICAgICAgaW5pdF9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZSh2b2lkKTsKIHZvaWQgICAgICAgICAgICBzaHV0ZG93bl9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZSh2b2lkKTsKIHZvaWQgICAgICAgICAgICBpbml0aWFsaXplX3RhYmxlX3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX3RhYmxlX3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlKHZvaWQpOwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgc2N0cEFzc29jTG9jYWxBZGRyVGFibGVfaGFuZGxlcjsKIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmMKaW5kZXggYWQxNGE0Ni4uMzhjYThhMyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmMKQEAgLTEzLDYgKzEzLDcgQEAKICAqIGNvbnRlbnQgb2YgdGhlIHNjdHBBc3NvY1JlbUFkZHJUYWJsZSAKICAqLwogc3RhdGljIG5ldHNubXBfY29udGFpbmVyICpzY3RwQXNzb2NSZW1BZGRyVGFibGVfY29udGFpbmVyOworc3RhdGljIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKIC8qKiBJbml0aWFsaXplcyB0aGUgc2N0cEFzc29jUmVtQWRkclRhYmxlIG1vZHVsZSAqLwogdm9pZApAQCAtMjcsNyArMjgsNyBAQAogdm9pZAogc2h1dGRvd25fc2N0cEFzc29jUmVtQWRkclRhYmxlKHZvaWQpCiB7Ci0gICAgc2N0cEFzc29jUmVtQWRkclRhYmxlX2NvbnRhaW5lcl9jbGVhcihzY3RwQXNzb2NSZW1BZGRyVGFibGVfY29udGFpbmVyKTsKKyAgICBzaHV0ZG93bl90YWJsZV9zY3RwQXNzb2NSZW1BZGRyVGFibGUoKTsKIH0KIAogLyoqIEluaXRpYWxpemUgdGhlIHNjdHBBc3NvY1JlbUFkZHJUYWJsZSB0YWJsZSBieSBkZWZpbmluZyBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQgKi8KQEAgLTQxLDcgKzQyLDYgQEAKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWcgPSBOVUxMOwogICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIgPSBOVUxMOwogICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIgPSBOVUxMOwotICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm8gPSBOVUxMOwogCiAgICAgcmVnID0KICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oInNjdHBBc3NvY1JlbUFkZHJUYWJsZSIsCkBAIC0xMzAsNiArMTMwLDE2IEBACiAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZShyZWcpOwogfQogCit2b2lkCitzaHV0ZG93bl90YWJsZV9zY3RwQXNzb2NSZW1BZGRyVGFibGUodm9pZCkKK3sKKyAgICBpZiAodGFibGVfaW5mbykgeworICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CisJdGFibGVfaW5mbyA9IE5VTEw7CisgICAgfQorICAgIHNjdHBBc3NvY1JlbUFkZHJUYWJsZV9jb250YWluZXJfY2xlYXIoc2N0cEFzc29jUmVtQWRkclRhYmxlX2NvbnRhaW5lcik7Cit9CisKIAogLyoqIGhhbmRsZXMgcmVxdWVzdHMgZm9yIHRoZSBzY3RwQXNzb2NSZW1BZGRyVGFibGUgdGFibGUgKi8KIGludApAQCAtMzA5LDggKzMxOSw3IEBACiB2b2lkCiBzY3RwQXNzb2NSZW1BZGRyVGFibGVfZW50cnlfZnJlZShzY3RwQXNzb2NSZW1BZGRyVGFibGVfZW50cnkgKiBlbnRyeSkKIHsKLSAgICBpZiAoZW50cnkgIT0gTlVMTCkKLSAgICAgICAgU05NUF9GUkVFKGVudHJ5KTsKKyAgICBTTk1QX0ZSRUUoZW50cnkpOwogfQogCiBuZXRzbm1wX2NvbnRhaW5lciAqCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5oCmluZGV4IGNjNjVjN2UuLjUwNjg1NjEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5oCkBAIC0xMyw2ICsxMyw3IEBACiB2b2lkICAgICAgICAgICAgaW5pdF9zY3RwQXNzb2NSZW1BZGRyVGFibGUodm9pZCk7CiB2b2lkICAgICAgICAgICAgc2h1dGRvd25fc2N0cEFzc29jUmVtQWRkclRhYmxlKHZvaWQpOwogdm9pZCAgICAgICAgICAgIGluaXRpYWxpemVfdGFibGVfc2N0cEFzc29jUmVtQWRkclRhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX3RhYmxlX3NjdHBBc3NvY1JlbUFkZHJUYWJsZSh2b2lkKTsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIHNjdHBBc3NvY1JlbUFkZHJUYWJsZV9oYW5kbGVyOwogCiAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmMKaW5kZXggZjNhNjhhMy4uOTkxOTA3NSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5jCkBAIC0xNiw2ICsxNiw3IEBACiAgKiBjb250ZW50IG9mIHRoZSBzY3RwQXNzb2NUYWJsZSAKICAqLwogc3RhdGljIG5ldHNubXBfY29udGFpbmVyICpzY3RwQXNzb2NUYWJsZV9jb250YWluZXI7CitzdGF0aWMgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAogLyoqIEluaXRpYWxpemVzIHRoZSBzY3RwQXNzb2NUYWJsZSBtb2R1bGUgKi8KIHZvaWQKQEAgLTMwLDcgKzMxLDcgQEAKIHZvaWQKIHNodXRkb3duX3NjdHBBc3NvY1RhYmxlKHZvaWQpCiB7Ci0gICAgc2N0cEFzc29jVGFibGVfY29udGFpbmVyX2NsZWFyKHNjdHBBc3NvY1RhYmxlX2NvbnRhaW5lcik7CisgICAgc2h1dGRvd25fdGFibGVfc2N0cEFzc29jVGFibGUoKTsKIH0KIAogLyoqIEluaXRpYWxpemUgdGhlIHNjdHBBc3NvY1RhYmxlIHRhYmxlIGJ5IGRlZmluaW5nIGl0cyBjb250ZW50cyBhbmQgaG93IGl0J3Mgc3RydWN0dXJlZCAqLwpAQCAtNDMsNyArNDQsNiBAQAogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZyA9IE5VTEw7CiAgICAgbmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciA9IE5VTEw7CiAgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciA9IE5VTEw7Ci0gICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbyA9IE5VTEw7CiAgICAgbmV0c25tcF9jYWNoZSAgKmNhY2hlID0gTlVMTDsKIAogICAgIHJlZyA9CkBAIC0xMjAsNiArMTIwLDggQEAKICAgICAgICAgZ290byBiYWlsOwogICAgIH0KIAorICAgIG5ldHNubXBfY2FjaGVfaGFuZGxlcl9vd25zX2NhY2hlKGhhbmRsZXIpOworCiAgICAgaWYgKFNOTVBFUlJfU1VDQ0VTUyAhPSBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZywgaGFuZGxlcikpIHsKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKICAgICAgICAgICAgICAgICAgImVycm9yIGluamVjdGluZyBjYWNoZSBoYW5kbGVyIGZvciBzY3RwQXNzb2NUYWJsZVxuIik7CkBAIC0xNjUsNiArMTY3LDE3IEBACiAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZShyZWcpOwogfQogCit2b2lkCitzaHV0ZG93bl90YWJsZV9zY3RwQXNzb2NUYWJsZSh2b2lkKQoreworICAgIGlmICh0YWJsZV9pbmZvKSB7CisJbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCXRhYmxlX2luZm8gPSBOVUxMOworICAgIH0KKyAgICBpZiAoc2N0cEFzc29jVGFibGVfY29udGFpbmVyKQorCXNjdHBBc3NvY1RhYmxlX2NvbnRhaW5lcl9jbGVhcihzY3RwQXNzb2NUYWJsZV9jb250YWluZXIpOworfQorCiAKIC8qKiBoYW5kbGVzIHJlcXVlc3RzIGZvciB0aGUgc2N0cEFzc29jVGFibGUgdGFibGUgKi8KIGludApAQCAtNDk0LDggKzUwNyw3IEBACiB2b2lkCiBzY3RwQXNzb2NUYWJsZV9lbnRyeV9mcmVlKHNjdHBBc3NvY1RhYmxlX2VudHJ5ICogZW50cnkpCiB7Ci0gICAgaWYgKGVudHJ5ICE9IE5VTEwpCi0gICAgICAgIFNOTVBfRlJFRShlbnRyeSk7CisgICAgU05NUF9GUkVFKGVudHJ5KTsKIH0KIAogbmV0c25tcF9jb250YWluZXIgKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmgKaW5kZXggYTZhOWYzYy4uYzYyNTdiMCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5oCkBAIC0xMyw2ICsxMyw3IEBACiB2b2lkICAgICAgICAgICAgaW5pdF9zY3RwQXNzb2NUYWJsZSh2b2lkKTsKIHZvaWQgICAgICAgICAgICBzaHV0ZG93bl9zY3RwQXNzb2NUYWJsZSh2b2lkKTsKIHZvaWQgICAgICAgICAgICBpbml0aWFsaXplX3RhYmxlX3NjdHBBc3NvY1RhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX3RhYmxlX3NjdHBBc3NvY1RhYmxlKHZvaWQpOwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgc2N0cEFzc29jVGFibGVfaGFuZGxlcjsKIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmMKaW5kZXggN2EyYjBiMi4uMWE2ZmQzNSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmMKQEAgLTEwLDYgKzEwLDcgQEAKICNpbmNsdWRlICJzY3RwTG9va3VwTG9jYWxQb3J0VGFibGUuaCIKIAogc3RhdGljIG5ldHNubXBfY29udGFpbmVyICpzY3RwTG9va3VwTG9jYWxQb3J0VGFibGVfY29udGFpbmVyOworc3RhdGljIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKIC8qKiBJbml0aWFsaXplcyB0aGUgc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlIG1vZHVsZSAqLwogdm9pZApAQCAtMjQsOCArMjUsNyBAQAogdm9pZAogc2h1dGRvd25fc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlKHZvaWQpCiB7Ci0gICAgc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlX2NvbnRhaW5lcl9jbGVhcgotICAgICAgICAoc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlX2NvbnRhaW5lcik7CisgICAgc2h1dGRvd25fdGFibGVfc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlKCk7CiB9CiAKIC8qKiBJbml0aWFsaXplIHRoZSBzY3RwTG9va3VwTG9jYWxQb3J0VGFibGUgdGFibGUgYnkgZGVmaW5pbmcgaXRzIGNvbnRlbnRzIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkICovCkBAIC0zOSw3ICszOSw2IEBACiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnID0gTlVMTDsKICAgICBuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyID0gTlVMTDsKICAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyID0gTlVMTDsKLSAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvID0gTlVMTDsKIAogICAgIHJlZyA9CiAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJzY3RwTG9va3VwTG9jYWxQb3J0VGFibGUiLApAQCAtMTI3LDYgKzEyNiwxNiBAQAogICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2ZyZWUocmVnKTsKIH0KIAordm9pZAorc2h1dGRvd25fdGFibGVfc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlKHZvaWQpCit7CisgICAgaWYgKHRhYmxlX2luZm8pIHsKKwluZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CisJdGFibGVfaW5mbyA9IE5VTEw7CisgICAgfQorICAgIHNjdHBMb29rdXBMb2NhbFBvcnRUYWJsZV9jb250YWluZXJfY2xlYXIKKyAgICAgICAgKHNjdHBMb29rdXBMb2NhbFBvcnRUYWJsZV9jb250YWluZXIpOworfQogCiAvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlIHNjdHBMb29rdXBMb2NhbFBvcnRUYWJsZSB0YWJsZSAqLwogaW50CkBAIC0yNDksOCArMjU4LDcgQEAKIHZvaWQKIHNjdHBMb29rdXBMb2NhbFBvcnRUYWJsZV9lbnRyeV9mcmVlKHNjdHBMb29rdXBMb2NhbFBvcnRUYWJsZV9lbnRyeSAqIGVudHJ5KQogewotICAgIGlmIChlbnRyeSAhPSBOVUxMKQotICAgICAgICBTTk1QX0ZSRUUoZW50cnkpOworICAgIFNOTVBfRlJFRShlbnRyeSk7CiB9CiAKIG5ldHNubXBfY29udGFpbmVyICoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmgKaW5kZXggOWRhNmNkOS4uMjI2YzE2OCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmgKQEAgLTEzLDYgKzEzLDcgQEAKIHZvaWQgICAgICAgICAgICBpbml0X3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZSh2b2lkKTsKIHZvaWQgICAgICAgICAgICBzaHV0ZG93bl9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUodm9pZCk7CiB2b2lkICAgICAgICAgICAgaW5pdGlhbGl6ZV90YWJsZV9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUodm9pZCk7Cit2b2lkICAgICAgICAgICAgc2h1dGRvd25fdGFibGVfc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlKHZvaWQpOwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlX2hhbmRsZXI7CiAKIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUuYwppbmRleCAzMzcwZjUyLi5hZTJlYzkxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmMKQEAgLTEwLDYgKzEwLDcgQEAKICNpbmNsdWRlICJzY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5oIgogCiBzdGF0aWMgbmV0c25tcF9jb250YWluZXIgKnNjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlX2NvbnRhaW5lcjsKK3N0YXRpYyBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogCiAvKiogSW5pdGlhbGl6ZXMgdGhlIHNjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlIG1vZHVsZSAqLwogdm9pZApAQCAtMjQsOCArMjUsNyBAQAogdm9pZAogc2h1dGRvd25fc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUodm9pZCkKIHsKLSAgICBzY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZV9jb250YWluZXJfY2xlYXIKLSAgICAgICAgKHNjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlX2NvbnRhaW5lcik7CisgICAgc2h1dGRvd25fdGFibGVfc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUoKTsKIH0KIAogLyoqIEluaXRpYWxpemUgdGhlIHNjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlIHRhYmxlIGJ5IGRlZmluaW5nIGl0cyBjb250ZW50cyBhbmQgaG93IGl0J3Mgc3RydWN0dXJlZCAqLwpAQCAtMzksNyArMzksNiBAQAogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZyA9IE5VTEw7CiAgICAgbmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciA9IE5VTEw7CiAgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciA9IE5VTEw7Ci0gICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbyA9IE5VTEw7CiAKICAgICByZWcgPQogICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigic2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUiLApAQCAtMTI5LDYgKzEyOCwxNyBAQAogICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2ZyZWUocmVnKTsKIH0KIAordm9pZAorc2h1dGRvd25fdGFibGVfc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUodm9pZCkKK3sKKyAgICBpZiAodGFibGVfaW5mbykgeworICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CisJdGFibGVfaW5mbyA9IE5VTEw7CisgICAgfQorICAgIHNjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlX2NvbnRhaW5lcl9jbGVhcgorICAgICAgICAoc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGVfY29udGFpbmVyKTsKK30KKwogLyoqIGhhbmRsZXMgcmVxdWVzdHMgZm9yIHRoZSBzY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZSB0YWJsZSAqLwogaW50CiBzY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZV9oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCkBAIC0yNTMsOCArMjYzLDcgQEAKIHNjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlX2VudHJ5X2ZyZWUoc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGVfZW50cnkgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeSkKIHsKLSAgICBpZiAoZW50cnkgIT0gTlVMTCkKLSAgICAgICAgU05NUF9GUkVFKGVudHJ5KTsKKyAgICBTTk1QX0ZSRUUoZW50cnkpOwogfQogCiBuZXRzbm1wX2NvbnRhaW5lciAqCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUuaAppbmRleCA0ODRjYjU4Li41YmQzYzQ4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmgKQEAgLTEzLDYgKzEzLDcgQEAKIHZvaWQgICAgICAgICAgICBpbml0X3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlKHZvaWQpOwogdm9pZCAgICAgICAgICAgIHNodXRkb3duX3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlKHZvaWQpOwogdm9pZCAgICAgICAgICAgIGluaXRpYWxpemVfdGFibGVfc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUodm9pZCk7Cit2b2lkICAgICAgICAgICAgc2h1dGRvd25fdGFibGVfc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUodm9pZCk7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBzY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZV9oYW5kbGVyOwogCiAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUuYwppbmRleCAyNTQyZWE2Li4zNjhkZDUxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUuYwpAQCAtMTAsNiArMTAsNyBAQAogI2luY2x1ZGUgInNjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5oIgogCiBzdGF0aWMgbmV0c25tcF9jb250YWluZXIgKnNjdHBMb29rdXBSZW1JUEFkZHJUYWJsZV9jb250YWluZXI7CitzdGF0aWMgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAogLyoqIEluaXRpYWxpemVzIHRoZSBzY3RwTG9va3VwUmVtSVBBZGRyVGFibGUgbW9kdWxlICovCiB2b2lkCkBAIC0yNCw4ICsyNSw3IEBACiB2b2lkCiBzaHV0ZG93bl9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUodm9pZCkKIHsKLSAgICBzY3RwTG9va3VwUmVtSVBBZGRyVGFibGVfY29udGFpbmVyX2NsZWFyCi0gICAgICAgIChzY3RwTG9va3VwUmVtSVBBZGRyVGFibGVfY29udGFpbmVyKTsKKyAgICBzaHV0ZG93bl90YWJsZV9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUoKTsKIH0KIAogLyoqIEluaXRpYWxpemUgdGhlIHNjdHBMb29rdXBSZW1JUEFkZHJUYWJsZSB0YWJsZSBieSBkZWZpbmluZyBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQgKi8KQEAgLTM5LDcgKzM5LDYgQEAKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWcgPSBOVUxMOwogICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIgPSBOVUxMOwogICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIgPSBOVUxMOwotICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm8gPSBOVUxMOwogCiAgICAgcmVnID0KICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oInNjdHBMb29rdXBSZW1JUEFkZHJUYWJsZSIsCkBAIC0xMjMsNiArMTIyLDE3IEBACiAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZShyZWcpOwogfQogCit2b2lkCitzaHV0ZG93bl90YWJsZV9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUodm9pZCkKK3sKKyAgICBpZiAodGFibGVfaW5mbykgeworICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CisJdGFibGVfaW5mbyA9IE5VTEw7CisgICAgfQorICAgIHNjdHBMb29rdXBSZW1JUEFkZHJUYWJsZV9jb250YWluZXJfY2xlYXIKKyAgICAgICAgKHNjdHBMb29rdXBSZW1JUEFkZHJUYWJsZV9jb250YWluZXIpOworfQorCiAvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlIHNjdHBMb29rdXBSZW1JUEFkZHJUYWJsZSB0YWJsZSAqLwogaW50CiBzY3RwTG9va3VwUmVtSVBBZGRyVGFibGVfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLApAQCAtMjUzLDggKzI2Myw3IEBACiB2b2lkCiBzY3RwTG9va3VwUmVtSVBBZGRyVGFibGVfZW50cnlfZnJlZShzY3RwTG9va3VwUmVtSVBBZGRyVGFibGVfZW50cnkgKiBlbnRyeSkKIHsKLSAgICBpZiAoZW50cnkgIT0gTlVMTCkKLSAgICAgICAgU05NUF9GUkVFKGVudHJ5KTsKKyAgICBTTk1QX0ZSRUUoZW50cnkpOwogfQogCiBuZXRzbm1wX2NvbnRhaW5lciAqCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5oCmluZGV4IGUzMTVkNmQuLmI3NDUxNGMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5oCkBAIC0xMyw2ICsxMyw3IEBACiB2b2lkICAgICAgICAgICAgaW5pdF9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUodm9pZCk7CiB2b2lkICAgICAgICAgICAgc2h1dGRvd25fc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlKHZvaWQpOwogdm9pZCAgICAgICAgICAgIGluaXRpYWxpemVfdGFibGVfc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX3RhYmxlX3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZSh2b2lkKTsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIHNjdHBMb29rdXBSZW1JUEFkZHJUYWJsZV9oYW5kbGVyOwogCiAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5jCmluZGV4IGE3Njc0ZTQuLmM4YTg4NzQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmMKQEAgLTEwLDYgKzEwLDcgQEAKICNpbmNsdWRlICJzY3RwTG9va3VwUmVtUG9ydFRhYmxlLmgiCiAKIHN0YXRpYyBuZXRzbm1wX2NvbnRhaW5lciAqc2N0cExvb2t1cFJlbVBvcnRUYWJsZV9jb250YWluZXI7CitzdGF0aWMgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAogLyoqIEluaXRpYWxpemVzIHRoZSBzY3RwTG9va3VwUmVtUG9ydFRhYmxlIG1vZHVsZSAqLwogdm9pZApAQCAtMjQsOCArMjUsNyBAQAogdm9pZAogc2h1dGRvd25fc2N0cExvb2t1cFJlbVBvcnRUYWJsZSh2b2lkKQogewotICAgIHNjdHBMb29rdXBSZW1Qb3J0VGFibGVfY29udGFpbmVyX2NsZWFyCi0gICAgICAgIChzY3RwTG9va3VwUmVtUG9ydFRhYmxlX2NvbnRhaW5lcik7CisgICAgc2h1dGRvd25fdGFibGVfc2N0cExvb2t1cFJlbVBvcnRUYWJsZSgpOwogfQogCiAvKiogSW5pdGlhbGl6ZSB0aGUgc2N0cExvb2t1cFJlbVBvcnRUYWJsZSB0YWJsZSBieSBkZWZpbmluZyBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQgKi8KQEAgLTM5LDcgKzM5LDYgQEAKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWcgPSBOVUxMOwogICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIgPSBOVUxMOwogICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIgPSBOVUxMOwotICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm8gPSBOVUxMOwogCiAgICAgcmVnID0KICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oInNjdHBMb29rdXBSZW1Qb3J0VGFibGUiLApAQCAtMTIyLDYgKzEyMSwxNyBAQAogICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2ZyZWUocmVnKTsKIH0KIAordm9pZAorc2h1dGRvd25fdGFibGVfc2N0cExvb2t1cFJlbVBvcnRUYWJsZSh2b2lkKQoreworICAgIGlmICh0YWJsZV9pbmZvKSB7CisJbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCXRhYmxlX2luZm8gPSBOVUxMOworICAgIH0KKyAgICBzY3RwTG9va3VwUmVtUG9ydFRhYmxlX2NvbnRhaW5lcl9jbGVhcgorICAgICAgICAoc2N0cExvb2t1cFJlbVBvcnRUYWJsZV9jb250YWluZXIpOworfQorCiAvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlIHNjdHBMb29rdXBSZW1Qb3J0VGFibGUgdGFibGUgKi8KIGludAogc2N0cExvb2t1cFJlbVBvcnRUYWJsZV9oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCkBAIC0yNDMsOCArMjUzLDcgQEAKIHZvaWQKIHNjdHBMb29rdXBSZW1Qb3J0VGFibGVfZW50cnlfZnJlZShzY3RwTG9va3VwUmVtUG9ydFRhYmxlX2VudHJ5ICogZW50cnkpCiB7Ci0gICAgaWYgKGVudHJ5ICE9IE5VTEwpCi0gICAgICAgIFNOTVBfRlJFRShlbnRyeSk7CisgICAgU05NUF9GUkVFKGVudHJ5KTsKIH0KIAogbmV0c25tcF9jb250YWluZXIgKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5oCmluZGV4IDk2ZDQ5Y2UuLmIyYWM4MTEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmgKQEAgLTEzLDYgKzEzLDcgQEAKIHZvaWQgICAgICAgICAgICBpbml0X3NjdHBMb29rdXBSZW1Qb3J0VGFibGUodm9pZCk7CiB2b2lkICAgICAgICAgICAgc2h1dGRvd25fc2N0cExvb2t1cFJlbVBvcnRUYWJsZSh2b2lkKTsKIHZvaWQgICAgICAgICAgICBpbml0aWFsaXplX3RhYmxlX3NjdHBMb29rdXBSZW1Qb3J0VGFibGUodm9pZCk7Cit2b2lkICAgICAgICAgICAgc2h1dGRvd25fdGFibGVfc2N0cExvb2t1cFJlbVBvcnRUYWJsZSh2b2lkKTsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIHNjdHBMb29rdXBSZW1Qb3J0VGFibGVfaGFuZGxlcjsKIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUuYwppbmRleCA2YmMwZGU2Li5kOTk2NmZjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5jCkBAIC0xMCw2ICsxMCw3IEBACiAjaW5jbHVkZSAic2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5oIgogCiBzdGF0aWMgbmV0c25tcF9jb250YWluZXIgKnNjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGVfY29udGFpbmVyOworc3RhdGljIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKIC8qKiBJbml0aWFsaXplcyB0aGUgc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZSBtb2R1bGUgKi8KIHZvaWQKQEAgLTI0LDggKzI1LDcgQEAKIHZvaWQKIHNodXRkb3duX3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUodm9pZCkKIHsKLSAgICBzY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlX2NvbnRhaW5lcl9jbGVhcgotICAgICAgICAoc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZV9jb250YWluZXIpOworICAgIHNodXRkb3duX3RhYmxlX3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUoKTsKIH0KIAogLyoqIEluaXRpYWxpemUgdGhlIHNjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUgdGFibGUgYnkgZGVmaW5pbmcgaXRzIGNvbnRlbnRzIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkICovCkBAIC0zOSw3ICszOSw2IEBACiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnID0gTlVMTDsKICAgICBuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyID0gTlVMTDsKICAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyID0gTlVMTDsKLSAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvID0gTlVMTDsKIAogICAgIHJlZyA9CiAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJzY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlIiwKQEAgLTEyNCw2ICsxMjMsMTcgQEAKICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9mcmVlKHJlZyk7CiB9CiAKK3ZvaWQKK3NodXRkb3duX3RhYmxlX3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUodm9pZCkKK3sKKyAgICBpZiAodGFibGVfaW5mbykgeworICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CisJdGFibGVfaW5mbyA9IE5VTEw7CisgICAgfQorICAgIHNjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGVfY29udGFpbmVyX2NsZWFyCisgICAgICAgIChzY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlX2NvbnRhaW5lcik7Cit9CisKIC8qKiBoYW5kbGVzIHJlcXVlc3RzIGZvciB0aGUgc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZSB0YWJsZSAqLwogaW50CiBzY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlX2hhbmRsZXIobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKQEAgLTI1OCw4ICsyNjgsNyBAQAogc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZV9lbnRyeV9mcmVlKHNjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGVfZW50cnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGVudHJ5KQogewotICAgIGlmIChlbnRyeSAhPSBOVUxMKQotICAgICAgICBTTk1QX0ZSRUUoZW50cnkpOworICAgIFNOTVBfRlJFRShlbnRyeSk7CiB9CiAKIG5ldHNubXBfY29udGFpbmVyICoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUuaAppbmRleCBhYWE1YTBiLi5mM2JlY2RjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5oCkBAIC0xMyw2ICsxMyw3IEBACiB2b2lkICAgICAgICAgICAgaW5pdF9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlKHZvaWQpOwogdm9pZCAgICAgICAgICAgIHNodXRkb3duX3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUodm9pZCk7CiB2b2lkICAgICAgICAgICAgaW5pdGlhbGl6ZV90YWJsZV9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX3RhYmxlX3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUodm9pZCk7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBzY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlX2hhbmRsZXI7CiAKIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24uYwppbmRleCAyMzc2Nzk1Li5iMjhlYTAzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTEyLDYgKzEzLDggQEAKICNpbmNsdWRlICJzY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmgiCiAjaW5jbHVkZSAic2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNvbnRhaW5lcl9saWZvKQorCiBzdGF0aWMgdm9pZAogc2N0cEFzc29jVGFibGVfY29sbGVjdF9pbnZhbGlkKHZvaWQgKndoYXQsIHZvaWQgKm1hZ2ljKQogewpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5jCmluZGV4IDE1ODY1NTQuLjhlNjI4NjAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmMKQEAgLTI4MSw2ICsyODEsOCBAQAogICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOwogICAgIH0KIAorICAgIG5ldHNubXBfZ2V0X3BpZF9mcm9tX2lub2RlX2luaXQoKTsKKwogICAgIC8qCiAgICAgICogaWdub3JlIHRoZSBoZWFkZXIuIAogICAgICAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmMgYi9hZ2VudC9taWJncm91cC9zbXV4L3NtdXguYwppbmRleCA2OTg3MTdjLi40NTk4YzJiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbXV4L3NtdXguYworKysgYi9hZ2VudC9taWJncm91cC9zbXV4L3NtdXguYwpAQCAtNCw2ICs0LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxjdHlwZS5oPgogCkBAIC02OCw2ICs2OSw4IEBACiAjaW5jbHVkZSAibWliZGVmcy5oIgogI2luY2x1ZGUgInNubXBkLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHNucHJpbnRfb2JqaWQpCisKIGxvbmcgICAgICAgICAgICBzbXV4X2xvbmc7CiB1X2xvbmcgICAgICAgICAgc211eF91bG9uZzsKIHN0cnVjdCBzb2NrYWRkcl9pbiBzbXV4X3NhOwpAQCAtNDE0LDcgKzQxNyw3IEBACiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHNlbmR0byhycHRyLT5zcl9mZCwgYnVmLCBsZW4sIDAsIE5VTEwsIDApIDwgMCkgeworICAgICAgICBpZiAoc2VuZHRvKHJwdHItPnNyX2ZkLCAodm9pZCAqKSBidWYsIGxlbiwgMCwgTlVMTCwgMCkgPCAwKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgic211eCIsICJbdmFyX3NtdXhfd3JpdGVdIHNlbmQgZmFpbGVkXG4iKSk7CiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOwogICAgICAgICB9CkBAIC00MjMsNyArNDI2LDcgQEAKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBwZWVrIGF0IHdoYXQncyByZWNlaXZlZCAKICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKChsZW4gPSByZWN2ZnJvbShycHRyLT5zcl9mZCwgYnVmLAorICAgICAgICAgICAgaWYgKChsZW4gPSByZWN2ZnJvbShycHRyLT5zcl9mZCwgKHZvaWQgKikgYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNVVhNQVhQS1RTSVpFLCBNU0dfUEVFSywgTlVMTCwgTlVMTCkpIDw9IDApIHsKICAgICAgICAgICAgICAgICBpZiAoKGxlbiA9PSAtMSkgJiYgKChlcnJubyA9PSBFSU5UUikgfHwgKGVycm5vID09IEVBR0FJTikpKQogICAgICAgICAgICAgICAgIHsKQEAgLTQ2Myw3ICs0NjYsNyBAQAogICAgICAgICAgICAgZG8KICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGxlbiA9IHRtcF9sZW47Ci0gICAgICAgICAgICAgICBsZW4gPSByZWN2ZnJvbShycHRyLT5zcl9mZCwgYnVmLCBsZW4sIDAsIE5VTEwsIE5VTEwpOworICAgICAgICAgICAgICAgbGVuID0gcmVjdmZyb20ocnB0ci0+c3JfZmQsICh2b2lkICopIGJ1ZiwgbGVuLCAwLCBOVUxMLCBOVUxMKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHdoaWxlKChsZW4gPT0gLTEpICYmICgoZXJybm8gPT0gRUlOVFIpIHx8IChlcnJubyA9PSBFQUdBSU4pKSk7CiAKQEAgLTU0Nyw3ICs1NTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIlt2YXJfc211eF93cml0ZV0gZW50ZXJpbmcgRlJFRSAtIHNlbmRpbmcgQ29tbWl0IFxuIikpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKChzZW5kdG8ocnB0ci0+c3JfZmQsIHNvdXQsIDMsIDAsIE5VTEwsIDApKSA8IDApIHsKKyAgICAgICAgaWYgKChzZW5kdG8ocnB0ci0+c3JfZmQsICh2b2lkICopIHNvdXQsIDMsIDAsIE5VTEwsIDApKSA8IDApIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbXV4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICJbdmFyX3NtdXhfd3JpdGVdIHNlbmQgcm9sbGJhY2svY29tbWl0IGZhaWxlZFxuIikpOwogICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS5jCmluZGV4IDViNTZmMWYuLmQxYzU3NWYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGUuYwpAQCAtMTQsNiArMTQsNyBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtMjYsNiArMjcsOCBAQAogCiAjaW5jbHVkZSAic25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19zdG9yYWdlX3RyYW5zaXRpb24pCisKIGNvbnN0IG9pZCAgICAgICBzbm1wTm90aWZ5RmlsdGVyVGFibGVfb2lkW10gPQogICAgIHsgU05NUE5PVElGWUZJTFRFUlRBQkxFX09JRCB9OwogY29uc3QgaW50ICAgICAgIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9vaWRfc2l6ZSA9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3MuYwppbmRleCA5NGQ4Njg3Li45NDJhODY1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTgsNiArOCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdmFjbS5oPgpAQCAtMjAsNiArMjEsOCBAQAogCiAjaW5jbHVkZSAic25tcE5vdGlmeUZpbHRlclRhYmxlX2RhdGFfYWNjZXNzLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9jb250YWluZXJfZ2V0KQorCiAvKiogQGluZ3JvdXAgaW50ZXJmYWNlIAogICogQGFkZHRvZ3JvdXAgZGF0YV9hY2Nlc3MgZGF0YV9hY2Nlc3M6IFJvdXRpbmVzIHRvIGFjY2VzcyBkYXRhCiAgKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmMgYi9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYwppbmRleCBhZjRhZDM3Li5lZDNiZWFhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYwpAQCAtMzAsNiArMzAsNyBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtNDYsNiArNDcsMjIgQEAKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzbm1wTm90aWZ5RmlsdGVyVGFibGVfZXh0ZXJuYWxfYWNjZXNzLCBsaWJuZXRzbm1wbWlicykKKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2NvbnRhaW5lcl9yb3dfaW5zZXJ0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzbm1wTm90aWZ5RmlsdGVyVGFibGVfY29udGFpbmVyX3NpemUsIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc25tcE5vdGlmeUZpbHRlclRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQsIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc25tcE5vdGlmeUZpbHRlclRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQsIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc25tcE5vdGlmeUZpbHRlclRhYmxlX2NvbnRhaW5lcl9nZXQsIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKgpAQCAtOTYsMTkgKzExMywyMyBAQAogICAgIF9zbm1wTm90aWZ5RmlsdGVyVGFibGVfY29udGFpbmVyX3NodXRkb3duCiAgICAgKHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2VfY3R4ICogaWZfY3R4KTsKIAotCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05NUE5PVElGWUZJTFRFUlRBQkxFX0NPTlRBSU5FUl9HRVQKIG5ldHNubXBfY29udGFpbmVyICoKIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9pZl9jdHguY29udGFpbmVyOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05NUE5PVElGWUZJTFRFUlRBQkxFX0NPTlRBSU5FUl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOTVBOT1RJRllGSUxURVJUQUJMRV9SRUdJU1RSQVRJT05fR0VUCiBzbm1wTm90aWZ5RmlsdGVyVGFibGVfcmVnaXN0cmF0aW9uICoKIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9yZWdpc3RyYXRpb25fZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9pZl9jdHgudXNlcl9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QTk9USUZZRklMVEVSVEFCTEVfUkVHSVNUUkFUSU9OX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05NUE5PVElGWUZJTFRFUlRBQkxFX1JFR0lTVFJBVElPTl9TRVQKIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9yZWdpc3RyYXRpb24gKgogc25tcE5vdGlmeUZpbHRlclRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQoc25tcE5vdGlmeUZpbHRlclRhYmxlX3JlZ2lzdHJhdGlvbiAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdyZWcpCkBAIC0xMTgsMTIgKzEzOSwxNSBAQAogICAgIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9pZl9jdHgudXNlcl9jdHggPSBuZXdyZWc7CiAgICAgcmV0dXJuIG9sZDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOTVBOT1RJRllGSUxURVJUQUJMRV9SRUdJU1RSQVRJT05fU0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QTk9USUZZRklMVEVSVEFCTEVfQ09OVEFJTkVSX1NJWkUKIGludAogc25tcE5vdGlmeUZpbHRlclRhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpCiB7CiAgICAgcmV0dXJuIENPTlRBSU5FUl9TSVpFKHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9pZl9jdHguY29udGFpbmVyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOTVBOT1RJRllGSUxURVJUQUJMRV9DT05UQUlORVJfU0laRSAqLwogCiB1X2ludAogc25tcE5vdGlmeUZpbHRlclRhYmxlX2RpcnR5X2dldCh2b2lkKQpAQCAtMjYxLDcgKzI4NSw3IEBACiAgICAgICAgIF9tZmRfc25tcE5vdGlmeUZpbHRlclRhYmxlX3Bvc3RfcmVxdWVzdDsKIAogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKICAgICAvKgogICAgICAqIFJFUVVJUkVEIHdyYXBwZXJzIGZvciBzZXQgcmVxdWVzdCBoYW5kbGluZwogICAgICAqLwpAQCAtMjg3LDcgKzMxMSw3IEBACiAgICAgICovCiAgICAgYWNjZXNzX211bHRpcGxleGVyLT5jb25zaXN0ZW5jeV9jaGVja3MgPQogICAgICAgICBfbWZkX3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9jaGVja19kZXBlbmRlbmNpZXM7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAqCkBAIC0zMDMsOCArMzI3LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcE5vdGlmeUZpbHRlclRhYmxlX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcE5vdGlmeUZpbHRlclRhYmxlX29pZF9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9CQUJZX1NURVAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEhBTkRMRVJfQ0FOX1JXUklURQorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBIQU5ETEVSX0NBTl9SV1JJVEUKICNlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICBpZiAoTlVMTCA9PSByZWdpbmZvKSB7CkBAIC0zMjUsNyArMzQ5LDcgQEAKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUE9TVF9SRVFVRVNUOwogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5zZXRfdmFsdWVzKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1NFVF9WQUxVRVM7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+aXJyZXZlcnNpYmxlX2NvbW1pdCkKQEAgLTM0OCw3ICszNzIsNyBAQAogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NPTU1JVDsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NvbW1pdCkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX0NPTU1JVDsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOwpAQCAtMTA4Myw3ICsxMTA3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfY3R4LCByb3dyZXFfY3R4KTsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9jaGVja19pbmRleGVzICovCiAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogU0VUIHByb2Nlc3NpbmcKQEAgLTE4MzksNyArMTg2Myw3IEBACiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9zbm1wTm90aWZ5RmlsdGVyVGFibGVfaXJyZXZlcnNpYmxlX2NvbW1pdCAqLwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0yMDE0LDE1ICsyMDM4LDE4IEBACiBzbm1wTm90aWZ5RmlsdGVyVGFibGVfY29udGFpbmVyX2luaXRfcGVyc2lzdGVuY2UobmV0c25tcF9jb250YWluZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY29udGFpbmVyKQogeworICAgIG5ldHNubXBfY29udGFpbmVyICoqY29udGFpbmVyX3A7CiAgICAgaW50ICAgICAgICAgICAgIHJjOwogCiAgICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoTlVMTCwgcm93X3Rva2VuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zbm1wTm90aWZ5RmlsdGVyVGFibGVfY29udGFpbmVyX3Jvd19yZXN0b3JlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOworICAgIG1lbWR1cCgodV9jaGFyICoqKSZjb250YWluZXJfcCwgJmNvbnRhaW5lciwgc2l6ZW9mKGNvbnRhaW5lcikpOworICAgIG5ldHNubXBfYXNzZXJ0KGNvbnRhaW5lcl9wKTsKICAgICByYyA9IHNubXBfcmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19MSUJSQVJZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0NBTExCQUNLX1NUT1JFX0RBVEEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zbm1wTm90aWZ5RmlsdGVyVGFibGVfY29udGFpbmVyX3NhdmVfcm93cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyX3ApOwogCiAgICAgaWYgKHJjICE9IFNOTVBfRVJSX05PRVJST1IpCiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciByZWdpc3RlcmluZyBmb3IgU1RPUkVfREFUQSBjYWxsYmFjayAiCkBAIC0yMDQwLDcgKzIwNjcsNyBAQAogICAgICAgICAiI1xuIiAiIyBzbm1wTm90aWZ5RmlsdGVyVGFibGUgcGVyc2lzdGVudCBkYXRhXG4iICIjIjsKICAgICBjaGFyICAgICAgICAgICAqdHlwZSA9IG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfQVBQVFlQRSk7Ci0gICAgbmV0c25tcF9jb250YWluZXIgKmMgPSAobmV0c25tcF9jb250YWluZXIgKikgY2xpZW50YXJnOworICAgIG5ldHNubXBfY29udGFpbmVyICpjID0gKihuZXRzbm1wX2NvbnRhaW5lciAqKiljbGllbnRhcmc7CiAKICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6c25tcE5vdGlmeUZpbHRlclRhYmxlOiIKICAgICAgICAgICAgICAgICAiX3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9jb250YWluZXJfc2F2ZV9yb3dzIiwKQEAgLTI0MDYsNiArMjQzMyw3IEBACiB9CiAKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOTVBOT1RJRllGSUxURVJUQUJMRV9FWFRFUk5BTF9BQ0NFU1MKIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9yb3dyZXFfY3R4ICoKIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgoc25tcE5vdGlmeUZpbHRlclRhYmxlX21pYl9pbmRleAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIG1pYl9pZHgpCkBAIC0yNDMzLDMgKzI0NjEsNCBAQAogCiAgICAgcmV0dXJuIHJvd3JlcV9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QTk9USUZZRklMVEVSVEFCTEVfRVhURVJOQUxfQUNDRVNTICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLZXlUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcktleVRhYmxlX2ludGVyZmFjZS5jCmluZGV4IGJlYTY3ZWQuLjA0MjMxZjkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcktleVRhYmxlX2ludGVyZmFjZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcktleVRhYmxlX2ludGVyZmFjZS5jCkBAIC0zMCw2ICszMCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC00Niw2ICs0NywxMCBAQAogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX2FsbF9yZXF1ZXN0c19lcnJvcikKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5jIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuYwppbmRleCA4N2Y0ZDkxLi5lNzU2Nzg4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wRW5naW5lLmMKQEAgLTMsNiArMyw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaD4KQEAgLTEwLDkgKzExLDE0IEBACiAjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogI2luY2x1ZGUgInNubXBFbmdpbmUuaCIKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNubXBlbmdpbmVfYWxsLCBsaWJuZXRzbm1wbWlicykKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlZ2lzdGVyX3NubXBFbmdpbmVfc2NhbGFyc19jb250ZXh0LCBzbm1wZW5naW5lX2FsbCkKKwogc3RydWN0IHZhcmlhYmxlMiBzbm1wRW5naW5lX3ZhcmlhYmxlc1tdID0gewogICAgIHtTTk1QRU5HSU5FSUQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAogICAgICB2YXJfc25tcEVuZ2luZSwgMSwgezF9fSwKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUIAogI2lmZGVmIE5FVFNOTVBfRU5BQkxFX1RFU1RJTkdfQ09ERQogICAgIHtTTk1QRU5HSU5FQk9PVFMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9zbm1wRW5naW5lLCAxLCB7Mn19LApAQCAtMjQsNiArMzAsMTIgQEAKICAgICB7U05NUEVOR0lORVRJTUUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKICAgICAgdmFyX3NubXBFbmdpbmUsIDEsIHszfX0sCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5FVFNOTVBfRU5BQkxFX1RFU1RJTkdfQ09ERSAqLworI2Vsc2UgIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8gCisgICAge1NOTVBFTkdJTkVCT09UUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfc25tcEVuZ2luZSwgMSwgezJ9fSwKKyAgICB7U05NUEVOR0lORVRJTUUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3NubXBFbmdpbmUsIDEsIHszfX0sCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLyAKICAgICB7U05NUEVOR0lORU1BWE1FU1NBR0VTSVpFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCiAgICAgIHZhcl9zbm1wRW5naW5lLCAxLCB7NH19LAogfTsKQEAgLTQxLDYgKzUzLDcgQEAKICAgICAgICAgICAgICAgICAgc25tcEVuZ2luZV92YXJpYWJsZXNfb2lkKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX1NOTVBFTkdJTkVfU0NBTEFSU19DT05URVhUCiB2b2lkCiByZWdpc3Rlcl9zbm1wRW5naW5lX3NjYWxhcnNfY29udGV4dChjb25zdCBjaGFyICpjb250ZXh0TmFtZSkKIHsKQEAgLTUzLDYgKzY2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBERUZBVUxUX01JQl9QUklPUklUWSwgMCwgMCwgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0TmFtZSwgLTEsIDApOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfU05NUEVOR0lORV9TQ0FMQVJTX0NPTlRFWFQgKi8KIAogdm9pZAogaW5pdF9zbm1wRW5naW5lKHZvaWQpCkBAIC02MiwxMiArNzYsMTQgQEAKICAgICByZWdpc3Rlcl9zbm1wRW5naW5lX3NjYWxhcnMoKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICNpZmRlZiBORVRTTk1QX0VOQUJMRV9URVNUSU5HX0NPREUKIGludCAgICAgICAgICAgICB3cml0ZV9lbmdpbmVCb290cyhpbnQsIHVfY2hhciAqLCB1X2NoYXIsIHNpemVfdCwgdV9jaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICosIHNpemVfdCk7CiBpbnQgICAgICAgICAgICAgd3JpdGVfZW5naW5lVGltZShpbnQsIHVfY2hhciAqLCB1X2NoYXIsIHNpemVfdCwgdV9jaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiwgc2l6ZV90KTsKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFICovCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIHVfY2hhciAgICAgICAgICoKIHZhcl9zbm1wRW5naW5lKHN0cnVjdCB2YXJpYWJsZSAqdnAsCkBAIC0xMDEsMTYgKzExNywyMCBAQAogICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGNoYXIgKikgZW5naW5lSUQ7CiAKICAgICBjYXNlIFNOTVBFTkdJTkVCT09UUzoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAjaWZkZWYgTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9lbmdpbmVCb290czsKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFICovCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICBsb25nX3JldCA9IHNubXB2M19sb2NhbF9zbm1wRW5naW5lQm9vdHMoKTsKICAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBjaGFyICopICZsb25nX3JldDsKIAogICAgIGNhc2UgU05NUEVOR0lORVRJTUU6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogI2lmZGVmIE5FVFNOTVBfRU5BQkxFX1RFU1RJTkdfQ09ERQogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfZW5naW5lVGltZTsKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFICovCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICBsb25nX3JldCA9IHNubXB2M19sb2NhbF9zbm1wRW5naW5lVGltZSgpOwogICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGNoYXIgKikgJmxvbmdfcmV0OwogCkBAIC0xMjUsNiArMTQ1LDggQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogI2lmZGVmIE5FVFNOTVBfRU5BQkxFX1RFU1RJTkdfQ09ERQogLyoKICAqIHdyaXRlX2VuZ2luZUJvb3RzKCk6CkBAIC0yMjEsMyArMjQzLDQgQEAKIH0KIAogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBORVRTTk1QX0VOQUJMRV9URVNUSU5HX0NPREUgKi8KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmMgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5jCmluZGV4IGZhMjNkZDUuLmE3ZmMyY2UgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0c181XzUuYwpAQCAtNCw2ICs0LDggQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KKwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmg+CkBAIC0xNiw2ICsxOCw4IEBACiAjZGVmaW5lIHNubXBNUERNSUJPYmplY3RzIHNubXBNUERNSUIsIDIKICNkZWZpbmUgc25tcE1QRE1JQkNvbXBsaWFuY2VzIHNubXBNUERNSUIsIDMsIDEKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaGVscGVyX3N0YXRpc3RpY3MpCisKIHN0YXRpYyBvaWQgc25tcE1QRFN0YXRzW10gPSB7IHNubXBNUERNSUJPYmplY3RzLCAxIH07CiAKIHN0YXRpYyBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uKiBzbm1wTVBEU3RhdHNfcmVnID0gTlVMTDsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0cy5jIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmMKaW5kZXggMWFhNDEwNS4uNzE4ZTA3MSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmMKQEAgLTcxLDUgKzcxLDYgQEAKICAgICAgICAgbG9uZ19yZXQgPSBzbm1wX2dldF9zdGF0aXN0aWModG1hZ2ljICsgU1RBVF9VU01fU1RBVFNfU1RBUlQpOwogICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGNoYXIgKikgJmxvbmdfcmV0OwogICAgIH0KKwogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzXzVfNS5jIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzXzVfNS5jCmluZGV4IGI1NmYxOWIuLmJjZDA0ZTEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0c181XzUuYworKysgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHNfNV81LmMKQEAgLTQsNiArNCw4IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oPgpAQCAtMjAsNiArMjIsOCBAQAogc3RhdGljIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24qIHVzbVN0YXRzX3JlZyA9IE5VTEw7CiBzdGF0aWMgb2lkIHVzbU1JQkNvbXBsaWFuY2VbXSA9IHsgdXNtTUlCQ29tcGxpYW5jZXMsIDEgfTsKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaGVscGVyX3N0YXRpc3RpY3MpCisKIHZvaWQKIGluaXRfdXNtU3RhdHNfNV81KHZvaWQpCiB7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5jIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYwppbmRleCAxM2MwNTk1Li40MWM1MjVhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmMKQEAgLTMsNiArMyw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAKICNpZiBIQVZFX1NUUklOR19ICkBAIC0xNyw3ICsxOCwxMiBAQAogI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCIKICNpbmNsdWRlICJ1c21Vc2VyLmgiCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUIAogaW50IHVzbVN0YXR1c0NoZWNrKHN0cnVjdCB1c21Vc2VyICp1cHRyKTsKKyNlbmRpZiAgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodXNtdXNlcl9hbGwsIGxpYm5ldHNubXBtaWJzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGluaXRfcmVnaXN0ZXJfdXNtdXNlcl9jb250ZXh0LCB1c211c2VyX2FsbCkKIAogc3RydWN0IHZhcmlhYmxlNCB1c21Vc2VyX3ZhcmlhYmxlc1tdID0gewogICAgIHtVU01VU0VSU1BJTkxPQ0ssIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCkBAIC02NCw2ICs3MCw3IEBACiAgICAgICAgICAgICAgICAgIHVzbVVzZXJfdmFyaWFibGVzX29pZCk7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTklUX1JFR0lTVEVSX1VTTVVTRVJfQ09OVEVYVAogdm9pZAogaW5pdF9yZWdpc3Rlcl91c21Vc2VyX2NvbnRleHQoY29uc3QgY2hhciAqY29udGV4dE5hbWUpIHsKICAgICByZWdpc3Rlcl9taWJfY29udGV4dCgic25tcHYzL3VzbVVzZXIiLApAQCAtNzUsNiArODIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIERFRkFVTFRfTUlCX1BSSU9SSVRZLCAwLCAwLCBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHROYW1lLCAtMSwgMCk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTklUX1JFR0lTVEVSX1VTTVVTRVJfQ09OVEVYVCAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi1vLSoqKioqKgogICogdXNtX2dlbmVyYXRlX09JRApAQCAtMzAzLDggKzMxMSwxMSBAQAogICAgIGlmICghdnAgfHwgIW5hbWUgfHwgIWxlbmd0aCB8fCAhdmFyX2xlbikKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAqd3JpdGVfbWV0aG9kID0gKFdyaXRlTWV0aG9kKikwOyAgICAvKiBhc3N1bWUgaXQgaXNudCB3cml0YWJsZSBmb3IgdGhlIHRpbWUgYmVpbmcgKi8KLSAgICAqdmFyX2xlbiA9IHNpemVvZihsb25nX3JldCk7ICAgICAgICAvKiBhc3N1bWUgYW4gaW50ZWdlciBhbmQgY2hhbmdlIGxhdGVyIGlmIG5vdCAqLworICAgIC8qIGFzc3VtZSBpdCBpc250IHdyaXRhYmxlIGZvciB0aGUgdGltZSBiZWluZyAqLworICAgICp3cml0ZV9tZXRob2QgPSAoV3JpdGVNZXRob2QqKTA7ICAgIAorCisgICAgLyogYXNzdW1lIGFuIGludGVnZXIgYW5kIGNoYW5nZSBsYXRlciBpZiBub3QgKi8KKyAgICAqdmFyX2xlbiA9IHNpemVvZihsb25nX3JldCk7CiAKICAgICBpZiAodnAtPm1hZ2ljICE9IFVTTVVTRVJTUElOTE9DSykgewogICAgICAgICBvaWQgICAgICAgICAgICAgbmV3bmFtZVtNQVhfT0lEX0xFTl07CkBAIC0zNzQsNiArMzg1LDcgQEAKICAgICAgICAgICAgIGluZGV4T2lkID0gdXNtX2dlbmVyYXRlX09JRCh2cC0+bmFtZSwgdnAtPm5hbWVsZW4sIHVwdHIsICZsZW4pOwogICAgICAgICAgICAgKmxlbmd0aCA9IGxlbjsKICAgICAgICAgICAgIG1lbW1vdmUobmFtZSwgaW5kZXhPaWQsIGxlbiAqIHNpemVvZihvaWQpKTsKKwogICAgICAgICAgICAgREVCVUdNU0dUTCgoInVzbVVzZXIiLCAiRm91bmQgdXNlcjogJXMgLSAiLCB1cHRyLT5uYW1lKSk7CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgKGludCkgdXB0ci0+ZW5naW5lSURMZW47IGkrKykgewogICAgICAgICAgICAgICAgIERFQlVHTVNHKCgidXNtVXNlciIsICIgJXgiLCB1cHRyLT5lbmdpbmVJRFtpXSkpOwpAQCAtMzkwLDYgKzQwMiw3IEBACiAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVuZGlmIC0tIHZwLT5tYWdpYyAhPSBVU01VU0VSU1BJTkxPQ0sgKi8KIAogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAKICAgICBjYXNlIFVTTVVTRVJTUElOTE9DSzoKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX3VzbVVzZXJTcGluTG9jazsKICAgICAgICAgbG9uZ19yZXQgPSB1c21Vc2VyU3BpbkxvY2s7CkBAIC00ODUsMTUgKzQ5OCwyMSBAQAogICAgICAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBjaGFyICopICZsb25nX3JldDsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGRlZmF1bHQ6CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wZCIsICJ1bmtub3duIHN1Yi1pZCAlZCBpbiB2YXJfdXNtVXNlclxuIiwKICAgICAgICAgICAgICAgICAgICAgdnAtPm1hZ2ljKSk7CisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovIAorICAgIGRlZmF1bHQ6CisgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wZCIsICJubyB3cml0ZSBzdXBwb3J0IGZvciB2YXJfdXNtVXNlclxuIikpOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8gCiAgICAgfQogICAgIHJldHVybiBOVUxMOwogCiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVuZCB2YXJfdXNtVXNlcigpICovCiAKKworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgCisKIC8qCiAgKiB3cml0ZV91c21Vc2VyU3BpbkxvY2soKTogY2FsbGVkIHdoZW4gYSBzZXQgaXMgcGVyZm9ybWVkIG9uIHRoZQogICogdXNtVXNlclNwaW5Mb2NrIG9iamVjdCAKQEAgLTc0Nyw3ICs3NjYsNiBAQAogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gQ09NTUlUKSB7CiAgICAgICAgIFNOTVBfRlJFRShvcHRyKTsKLSAgICAgICAgb3B0ciA9IE5VTEw7CiAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gRlJFRSB8fCBhY3Rpb24gPT0gVU5ETykgewogICAgICAgICBpZiAoKHVwdHIgPSB1c21fcGFyc2VfdXNlcihuYW1lLCBuYW1lX2xlbikpICE9IE5VTEwpIHsKICAgICAgICAgICAgIGlmIChyZXNldE9uRmFpbCkgewpAQCAtODkwLDcgKzkwOCw2IEBACiAgICAgICAgIHVwdHItPmF1dGhLZXlMZW4gPSBidWZsZW47CiAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gQ09NTUlUKSB7CiAgICAgICAgIFNOTVBfRlJFRShvbGRrZXkpOwotICAgICAgICBvbGRrZXkgPSBOVUxMOwogICAgIH0gZWxzZSBpZiAoYWN0aW9uID09IFVORE8pIHsKICAgICAgICAgaWYgKCh1cHRyID0gdXNtX3BhcnNlX3VzZXIobmFtZSwgbmFtZV9sZW4pKSAhPSBOVUxMICYmIHJlc2V0T25GYWlsKSB7CiAgICAgICAgICAgICBTTk1QX0ZSRUUodXB0ci0+YXV0aEtleSk7CkBAIC0xMDE1LDcgKzEwMzIsNiBAQAogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gQ09NTUlUKSB7CiAgICAgICAgIFNOTVBfRlJFRShvcHRyKTsKLSAgICAgICAgb3B0ciA9IE5VTEw7CiAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gRlJFRSB8fCBhY3Rpb24gPT0gVU5ETykgewogICAgICAgICBpZiAoKHVwdHIgPSB1c21fcGFyc2VfdXNlcihuYW1lLCBuYW1lX2xlbikpICE9IE5VTEwpIHsKICAgICAgICAgICAgIGlmIChyZXNldE9uRmFpbCkgewpAQCAtMTE0MCw3ICsxMTU2LDYgQEAKICAgICAgICAgdXB0ci0+cHJpdktleUxlbiA9IGJ1ZmxlbjsKICAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PSBDT01NSVQpIHsKICAgICAgICAgU05NUF9GUkVFKG9sZGtleSk7Ci0gICAgICAgIG9sZGtleSA9IE5VTEw7CiAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gVU5ETykgewogICAgICAgICBpZiAoKHVwdHIgPSB1c21fcGFyc2VfdXNlcihuYW1lLCBuYW1lX2xlbikpICE9IE5VTEwgJiYgcmVzZXRPbkZhaWwpIHsKICAgICAgICAgICAgIFNOTVBfRlJFRSh1cHRyLT5wcml2S2V5KTsKQEAgLTEyNzYsNiArMTI5MSw3IEBACiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVuZCB3cml0ZV91c21Vc2VyU3RvcmFnZVR5cGUoKSAqLwogCisKIC8qCiAgKiBSZXR1cm4gMSBpZiBlbm91Z2ggb2JqZWN0cyBoYXZlIGJlZW4gc2V0IHVwIHRvIHRyYW5zaXRpb24gcm93U3RhdHVzIHRvCiAgKiBub3RJblNlcnZpY2UoMikgb3IgYWN0aXZlKDEpLiAgCkBAIC0xNDgyLDcgKzE0OTgsOSBAQAogICAgIH0KIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfQorfSAgLyogd3JpdGVfdXNtVXNlclN0YXR1cyAqLworCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLyAKIAogI2lmIDAKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuaCBiL2FnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmgKaW5kZXggMmFmZWNiNC4uNTNkMTQxMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuaAorKysgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5oCkBAIC01NCw2ICs1NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqIGVuZ2luZUlETGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqbmFtZSwgc2l6ZV90ICogbmFtZUxlbik7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUIAogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfdXNtVXNlclNwaW5Mb2NrOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfdXNtVXNlckNsb25lRnJvbTsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX3VzbVVzZXJBdXRoUHJvdG9jb2w7CkBAIC02Myw1ICs2NCw2IEBACiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV91c21Vc2VyUHVibGljOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfdXNtVXNlclN0b3JhZ2VUeXBlOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfdXNtVXNlclN0YXR1czsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovIAogCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9NSUJHUk9VUF9VU01VU0VSX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXB2M21pYnMuaCBiL2FnZW50L21pYmdyb3VwL3NubXB2M21pYnMuaAppbmRleCBhNTYyMWU1Li4wY2NhOWEzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbm1wdjNtaWJzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzbWlicy5oCkBAIC04LDcgKzgsOSBAQAogCiBjb25maWdfcmVxdWlyZShzbm1wdjMvc25tcEVuZ2luZSkKIGNvbmZpZ192ZXJzaW9uX3JlcXVpcmUoKHNubXB2My9zbm1wTVBEU3RhdHMsIDUuNSwgc25tcHYzL3NubXBNUERTdGF0c181XzUpKQorI2lmZGVmIE5FVFNOTVBfU0VDTU9EX1VTTQogY29uZmlnX3ZlcnNpb25fcmVxdWlyZSgoc25tcHYzL3VzbVN0YXRzLCA1LjUsIHNubXB2My91c21TdGF0c181XzUpKQogY29uZmlnX3JlcXVpcmUoc25tcHYzL3VzbUNvbmYpCiBjb25maWdfcmVxdWlyZShzbm1wdjMvdXNtVXNlcikKKyNlbmRpZiAvKiBORVRTTk1QX1NFQ01PRF9VU00gKi8KICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU05NUFYzTUlCU19IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zdHJ1Y3QuaCBiL2FnZW50L21pYmdyb3VwL3N0cnVjdC5oCmluZGV4IDA4NzgwY2MuLmQwMjVlZDAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3N0cnVjdC5oCisrKyBiL2FnZW50L21pYmdyb3VwL3N0cnVjdC5oCkBAIC0xOCw3ICsxOCw4IEBACiAgICAgc3RydWN0IGV4dGVuc2libGUgKm5leHQ7CiAgICAgb2lkICAgICAgICAgICAgIG1pYm9pZFtNSUJNQVhdOwogICAgIHNpemVfdCAgICAgICAgICBtaWJsZW47Ci0gICAgaW50ICAgICAgICAgICAgIHBpZDsKKyAgICBpbnQgICAgICAgICAgICAgbWlicHJpb3JpdHk7CisgICAgbmV0c25tcF9waWRfdCAgIHBpZDsKICNpZiBkZWZpbmVkKFdJTjMyKQogICAgIEhBTkRMRSAgICAgICAgICB0aWQ7ICAgICAgICAgICAgICAgIC8qIFdJTjMyIHRocmVhZCAqLwogI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5jIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuYwppbmRleCA3ZGMxYjJhLi5iMWViMDBhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmMKQEAgLTI1LDEzICsyNSwxNyBAQAogI2RlZmluZSBzbm1wVGFyZ2V0QWRkck9JRExlbiAxMSAvKlRoaXMgaXMgYmFzZStjb2x1bW4sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBpLmUuIGV2ZXJ5dGhpbmcgYnV0IGluZGV4ICovCiAKLW9pZCAgICAgICAgICAgICBzbm1wVGFyZ2V0QWRkck9JRFtzbm1wVGFyZ2V0QWRkck9JRExlbl0gPQorc3RhdGljIG9pZCAgICAgIHNubXBUYXJnZXRBZGRyT0lEW3NubXBUYXJnZXRBZGRyT0lETGVuXSA9CiAgICAgeyAxLCAzLCA2LCAxLCA2LCAzLCAxMiwgMSwgMiwgMSwgMCB9OwogCiBzdGF0aWMgdW5zaWduZWQgbG9uZyBzbm1wVGFyZ2V0U3BpbkxvY2sgPSAwOwogc3RhdGljIHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICphQWRkclRhYmxlID0gTlVMTDsKIAogCitzdGF0aWMgaW50CitzdG9yZV9zbm1wVGFyZ2V0QWRkckVudHJ5KGludCBtYWpvcklELCBpbnQgbWlub3JJRCwgdm9pZCAqc2VydmVyYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnRhcmcpOworCiAvKgogICogVXRpbGl0eSByb3V0aW5lcyAKICAqLwpAQCAtNDIsMTEgKzQ2LDEyIEBACiB9CiAKIHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICoKLWdldF9hZGRyRm9yTmFtZShjaGFyICpuYW1lKQorZ2V0X2FkZHJGb3JOYW1lMihjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBjaGFyIG5hbWVMZW4pCiB7CiAgICAgc3RydWN0IHRhcmdldEFkZHJUYWJsZV9zdHJ1Y3QgKnB0cjsKICAgICBmb3IgKHB0ciA9IGFBZGRyVGFibGU7IHB0ciAhPSBOVUxMOyBwdHIgPSBwdHItPm5leHQpIHsKLSAgICAgICAgaWYgKHB0ci0+bmFtZSAmJiBzdHJjbXAocHRyLT5uYW1lLCBuYW1lKSA9PSAwKQorICAgICAgICBpZiAocHRyLT5uYW1lTGVuID09IG5hbWVMZW4gJiYKKyAgICAgICAgICAgIG1lbWNtcChwdHItPm5hbWVEYXRhLCBuYW1lLCBuYW1lTGVuKSA9PSAwKQogICAgICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CiAgICAgcmV0dXJuIE5VTEw7CkBAIC02NCw3ICs2OSw4IEBACiAgICAgbmV3RW50cnkgPSBtYWxsb2Moc2l6ZW9mKCpuZXdFbnRyeSkpOwogCiAgICAgaWYgKG5ld0VudHJ5KSB7Ci0gICAgICAgIG5ld0VudHJ5LT5uYW1lID0gTlVMTDsKKyAgICAgICAgbmV3RW50cnktPm5hbWVEYXRhID0gTlVMTDsKKyAgICAgICAgbmV3RW50cnktPm5hbWVMZW4gPSAwOwogCiAgICAgICAgIG5ld0VudHJ5LT50RG9tYWluTGVuID0gMDsKICAgICAgICAgbmV3RW50cnktPnRBZGRyZXNzID0gTlVMTDsKQEAgLTkyLDExICs5OCwxMSBAQAogdm9pZAogc25tcFRhcmdldEFkZHJUYWJsZV9kaXNwb3NlKHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICpyZWFwZWQpCiB7Ci0gICAgaWYgKHJlYXBlZC0+c2VzcyAhPSBOVUxMKSB7CisgICAgaWYgKHJlYXBlZC0+c2VzcykKICAgICAgICAgc25tcF9jbG9zZShyZWFwZWQtPnNlc3MpOwotICAgIH0KLSAgICBTTk1QX0ZSRUUocmVhcGVkLT5uYW1lKTsKLSAgICBTTk1QX0ZSRUUocmVhcGVkLT50QWRkcmVzcyk7CisgICAgZWxzZQorICAgICAgICBTTk1QX0ZSRUUocmVhcGVkLT50QWRkcmVzcyk7CisgICAgU05NUF9GUkVFKHJlYXBlZC0+bmFtZURhdGEpOwogICAgIFNOTVBfRlJFRShyZWFwZWQtPnRhZ0xpc3QpOwogICAgIFNOTVBfRlJFRShyZWFwZWQtPnBhcmFtcyk7CiAKQEAgLTExNiw4ICsxMjIsNiBAQAogewogICAgIHN0YXRpYyBzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdCAqY3Vycl9zdHJ1Y3QsICpwcmV2X3N0cnVjdDsKICAgICBpbnQgICAgICAgICAgICAgaTsKLSAgICBzaXplX3QgICAgICAgICAgbmV3T0lETGVuID0gMCwgY3Vyck9JRExlbiA9IDA7Ci0gICAgb2lkICAgICAgICAgICAgIG5ld09JRFsxMjhdLCBjdXJyT0lEWzEyOF07CiAKICAgICAvKgogICAgICAqIGlmIHRoZSBsaXN0IGlzIGVtcHR5LCBhZGQgdGhlIG5ldyBlbnRyeSB0byB0aGUgdG9wIApAQCAtMTI3LDIzICsxMzEsMTkgQEAKICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8qCi0gICAgICAgICAqIGdldCB0aGUgJ09JRCcgdmFsdWUgb2YgdGhlIG5ldyBlbnRyeSAKLSAgICAgICAgICovCi0gICAgICAgIG5ld09JRExlbiA9IHN0cmxlbihuZXdFbnRyeS0+bmFtZSk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCAoaW50KSBuZXdPSURMZW47IGkrKykgewotICAgICAgICAgICAgbmV3T0lEW2ldID0gbmV3RW50cnktPm5hbWVbaV07Ci0gICAgICAgIH0KLQotICAgICAgICAvKgogICAgICAgICAgKiBzZWFyY2ggdGhyb3VnaCB0aGUgbGlzdCBmb3IgYW4gZXF1YWwgb3IgZ3JlYXRlciBPSUQgdmFsdWUgCiAgICAgICAgICAqLwogICAgICAgICB3aGlsZSAoY3Vycl9zdHJ1Y3QgIT0gTlVMTCkgewotICAgICAgICAgICAgY3Vyck9JRExlbiA9IHN0cmxlbihjdXJyX3N0cnVjdC0+bmFtZSk7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgKGludCkgY3Vyck9JRExlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgY3Vyck9JRFtpXSA9IGN1cnJfc3RydWN0LT5uYW1lW2ldOworICAgICAgICAgICAgaSA9IG1lbWNtcChuZXdFbnRyeS0+bmFtZURhdGEsIGN1cnJfc3RydWN0LT5uYW1lRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgbmV3RW50cnktPm5hbWVMZW4gPCBjdXJyX3N0cnVjdC0+bmFtZUxlbiA/CisgICAgICAgICAgICAgICAgICAgICAgIG5ld0VudHJ5LT5uYW1lTGVuIDogY3Vycl9zdHJ1Y3QtPm5hbWVMZW4pOworICAgICAgICAgICAgaWYgKGkgPT0gMCkgeworICAgICAgICAgICAgICAgIGlmIChuZXdFbnRyeS0+bmFtZUxlbiA8IGN1cnJfc3RydWN0LT5uYW1lTGVuKQorICAgICAgICAgICAgICAgICAgICBpID0gLTE7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAobmV3RW50cnktPm5hbWVMZW4gPiBjdXJyX3N0cnVjdC0+bmFtZUxlbikKKyAgICAgICAgICAgICAgICAgICAgaSA9IDE7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGkgPSBzbm1wX29pZF9jb21wYXJlKG5ld09JRCwgbmV3T0lETGVuLCBjdXJyT0lELCBjdXJyT0lETGVuKTsKICAgICAgICAgICAgIGlmIChpID09IDApIHsgICAgICAgLyogRXhhY3QgbWF0Y2gsIG92ZXJ3cml0ZSB3aXRoIG5ldyBzdHJ1Y3QgKi8KICAgICAgICAgICAgICAgICBuZXdFbnRyeS0+bmV4dCA9IGN1cnJfc3RydWN0LT5uZXh0OwogICAgICAgICAgICAgICAgIC8qCkBAIC0yMzMsMTAgKzIzMywxMCBAQAogCiAgICAgZm9yICh0ZW1wX3N0cnVjdCA9IGFBZGRyVGFibGU7IHRlbXBfc3RydWN0ICE9IE5VTEw7CiAgICAgICAgICB0ZW1wX3N0cnVjdCA9IHRlbXBfc3RydWN0LT5uZXh0KSB7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCAoaW50KSBzdHJsZW4odGVtcF9zdHJ1Y3QtPm5hbWUpOyBpKyspIHsKLSAgICAgICAgICAgIG5ld051bVtiYXNlTmFtZUxlbiArIGldID0gdGVtcF9zdHJ1Y3QtPm5hbWVbaV07CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0ZW1wX3N0cnVjdC0+bmFtZUxlbjsgaSsrKSB7CisgICAgICAgICAgICBuZXdOdW1bYmFzZU5hbWVMZW4gKyBpXSA9ICh1bnNpZ25lZCBjaGFyKXRlbXBfc3RydWN0LT5uYW1lRGF0YVtpXTsKICAgICAgICAgfQotICAgICAgICBteU9JRExlbiA9IGJhc2VOYW1lTGVuICsgc3RybGVuKHRlbXBfc3RydWN0LT5uYW1lKTsKKyAgICAgICAgbXlPSURMZW4gPSBiYXNlTmFtZUxlbiArIHRlbXBfc3RydWN0LT5uYW1lTGVuOwogICAgICAgICBpID0gc25tcF9vaWRfY29tcGFyZShuYW1lLCAqbGVuZ3RoLCBuZXdOdW0sIG15T0lETGVuKTsKICAgICAgICAgLyoKICAgICAgICAgICogQXNzdW1lcyB0aGF0IHRoZSBsaW5rZWQgbGlzdCBzb3J0ZWQgYnkgT0lELCBsb3cgdG8gaGlnaCAKQEAgLTI3NCw3ICsyNzQsNyBAQAogICogZm9yIHRoZSBzbm1wVGFyZ2V0QWRkckVudHJ5IG1pYiAKICAqLwogCi1zdHJ1Y3QgdmFyaWFibGUyIHNubXBUYXJnZXRBZGRyRW50cnlfdmFyaWFibGVzW10gPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IHZhcmlhYmxlMiBzbm1wVGFyZ2V0QWRkckVudHJ5X3ZhcmlhYmxlc1tdID0gewogICAgIHtTTk1QVEFSR0VUQUREUlRET01BSU4sIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX3NubXBUYXJnZXRBZGRyRW50cnksIDEsIHtTTk1QVEFSR0VUQUREUlRET01BSU5DT0xVTU59fSwKICAgICB7U05NUFRBUkdFVEFERFJUQUREUkVTUywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLApAQCAtMjk0LDE3ICsyOTQsMTcgQEAKIAogfTsKIAotc3RydWN0IHZhcmlhYmxlMiBzbm1wVGFyZ2V0U3BpbkxvY2tfdmFyW10gPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IHZhcmlhYmxlMiBzbm1wVGFyZ2V0U3BpbkxvY2tfdmFyW10gPSB7CiAgICAge1NOTVBUQVJHRVRTUElOTE9DSywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX3RhcmdldFNwaW5Mb2NrLCAxLCB7MX19CiB9OwogCi1zdGF0aWMgb2lkICAgICAgc25tcFRhcmdldFNwaW5Mb2NrX29pZFtdID0geyAxLCAzLCA2LCAxLCA2LCAzLCAxMiwgMSB9Oworc3RhdGljIGNvbnN0IG9pZCBzbm1wVGFyZ2V0U3BpbkxvY2tfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDEyLCAxIH07CiAKIC8qCiAgKiBub3cgbG9hZCB0aGlzIG1pYiBpbnRvIHRoZSBhZ2VudHMgbWliIHRhYmxlIAogICovCi1vaWQgICAgICAgICAgICAgc25tcFRhcmdldEFkZHJFbnRyeV92YXJpYWJsZXNfb2lkW10gPQorc3RhdGljIGNvbnN0IG9pZCBzbm1wVGFyZ2V0QWRkckVudHJ5X3ZhcmlhYmxlc19vaWRbXSA9CiAgICAgeyAxLCAzLCA2LCAxLCA2LCAzLCAxMiwgMSwgMiwgMSB9OwogCiAKQEAgLTMyMSw3ICszMjEsNyBAQAogCiAgICAgc25tcGRfcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInRhcmdldEFkZHIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBkX3BhcnNlX2NvbmZpZ190YXJnZXRBZGRyLAotCQkJCSAgKHZvaWQgKCopKHZvaWQpKTAsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICgqKSh2b2lkKSkwLCBOVUxMKTsKIAogICAgIC8qCiAgICAgICogd2UgbmVlZCB0byBiZSBjYWxsZWQgYmFjayBsYXRlciAKQEAgLTMzMSwzMCArMzMxLDIxIEBACiAKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5pdF9zbm1wVGFyZ2V0QWRkckVudHJ5ICovCiAKLQotaW50Ci1zbm1wVGFyZ2V0QWRkcl9hZGROYW1lKHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICplbnRyeSwgY2hhciAqY3B0cikKK3ZvaWQKK3NodXRkb3duX3NubXBUYXJnZXRBZGRyRW50cnkodm9pZCkKIHsKLSAgICBzaXplX3QgICAgICAgICAgbGVuOwotICAgIGlmIChjcHRyID09IE5VTEwpIHsKLSAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRBZGRyRW50cnkiLAotICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldEFkZHJFbnRyeTogbm8gbmFtZSBpbiBjb25maWcgc3RyaW5nXG4iKSk7Ci0gICAgICAgIHJldHVybiAoMCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbGVuID0gc3RybGVuKGNwdHIpOwotICAgICAgICAvKgotICAgICAgICAgKiBzcGVjIGNoZWNrIGZvciBzdHJpbmcgMS0zMiAKLSAgICAgICAgICovCi0gICAgICAgIGlmIChsZW4gPCAxIHx8IGxlbiA+IDMyKSB7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldEFkZHJFbnRyeTogbmFtZSBvdXQgb2YgcmFuZ2UgaW4gY29uZmlnIHN0cmluZ1xuIikpOwotICAgICAgICAgICAgcmV0dXJuICgwKTsKLSAgICAgICAgfQotICAgICAgICBlbnRyeS0+bmFtZSA9IHN0cmR1cChjcHRyKTsKLSAgICB9Ci0gICAgcmV0dXJuICgxKTsKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYWRkTmFtZSAqLworICAgIHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICpwdHI7CisgICAgc3RydWN0IHRhcmdldEFkZHJUYWJsZV9zdHJ1Y3QgKm5leHQ7CiAKKyAgICBmb3IgKHB0ciA9IGFBZGRyVGFibGU7IHB0cjsgcHRyID0gbmV4dCkgeworICAgICAgICBuZXh0ID0gcHRyLT5uZXh0OworICAgICAgICBzbm1wVGFyZ2V0QWRkclRhYmxlX2Rpc3Bvc2UocHRyKTsKKyAgICB9CisgICAgYUFkZHJUYWJsZSA9IE5VTEw7CisKKyAgICBzbm1wX3VucmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19MSUJSQVJZLCBTTk1QX0NBTExCQUNLX1NUT1JFX0RBVEEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlX3NubXBUYXJnZXRBZGRyRW50cnksIE5VTEwsIEZBTFNFKTsKK30KIAogaW50CiBzbm1wVGFyZ2V0QWRkcl9hZGRURG9tYWluKHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICplbnRyeSwgY2hhciAqY3B0cikKQEAgLTUzOCw3ICs1MjksNyBAQAogICAgICAgICAgICAgIChlbnRyeS0+c3RvcmFnZVR5cGUgIT0gU05NUF9TVE9SQUdFX05PTlZPTEFUSUxFKSAmJgogICAgICAgICAgICAgIChlbnRyeS0+c3RvcmFnZVR5cGUgIT0gU05NUF9TVE9SQUdFX1BFUk1BTkVOVCkgJiYKICAgICAgICAgICAgICAoZW50cnktPnN0b3JhZ2VUeXBlICE9IFNOTVBfU1RPUkFHRV9SRUFET05MWSkpIHsKLQlERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsCisgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwKICAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRBZGRyRW50cnk6IHN0b3JhZ2UgdHlwZSBub3QgYSB2YWxpZCAiCiAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSBvZiBvdGhlciglZCksIHZvbGF0aWxlKCVkKSwgbm9udm9sYXRpbGUoJWQpLCAiCiAgICAgICAgICAgICAgICAgICAgICJwZXJtYW5lbnQoJWQpLCBvciByZWFkb25seSglZCkgaW4gY29uZmlnIHN0cmluZy5cbiIsCkBAIC01ODcsMjQgKzU3OCw0MiBAQAogdm9pZAogc25tcGRfcGFyc2VfY29uZmlnX3RhcmdldEFkZHIoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmNoYXJfcHRyKQogewotICAgIGNoYXIgICAgICAgICAgICpjcHRyID0gY2hhcl9wdHIsIGJ1ZmZbMTAyNF07CisgICAgY29uc3QgY2hhciAgICAgKmNwdHIgPSBjaGFyX3B0cjsKKyAgICBjaGFyICAgICAgICAgICAgYnVmZlsxMDI0XSwgKmJwdHI7CiAgICAgc3RydWN0IHRhcmdldEFkZHJUYWJsZV9zdHJ1Y3QgKm5ld0VudHJ5OwogICAgIGludCAgICAgICAgICAgICBpOworICAgIHNpemVfdCAgICAgICAgICBidWZsOwogCiAgICAgbmV3RW50cnkgPSBzbm1wVGFyZ2V0QWRkclRhYmxlX2NyZWF0ZSgpOwogCi0gICAgY3B0ciA9IGNvcHlfbndvcmQoY3B0ciwgYnVmZiwgc2l6ZW9mKGJ1ZmYpKTsKLSAgICBpZiAoc25tcFRhcmdldEFkZHJfYWRkTmFtZShuZXdFbnRyeSwgYnVmZikgPT0gMCkgeworICAgIGNwdHIgPSBza2lwX3doaXRlX2NvbnN0KGNwdHIpOworICAgIGlmIChjcHRyID09IE5VTEwpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRBZGRyRW50cnkiLAorICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldEFkZHJFbnRyeTogbm8gbmFtZSBpbiBjb25maWcgc3RyaW5nXG4iKSk7CiAgICAgICAgIHNubXBUYXJnZXRBZGRyVGFibGVfZGlzcG9zZShuZXdFbnRyeSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY3B0ciA9IGNvcHlfbndvcmQoY3B0ciwgYnVmZiwgc2l6ZW9mKGJ1ZmYpKTsKKworICAgIGJ1ZmwgPSAwOworICAgIGNwdHIgPSByZWFkX2NvbmZpZ19yZWFkX29jdGV0X3N0cmluZ19jb25zdChjcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyKiopJm5ld0VudHJ5LT5uYW1lRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ1ZmwpOworICAgIGlmIChidWZsIDwgMSB8fCBidWZsID4gMzIpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRBZGRyRW50cnkiLAorICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldEFkZHJFbnRyeTogbmFtZSBvdXQgb2YgcmFuZ2UgaW4gY29uZmlnICIKKyAgICAgICAgICAgICAgICAgICAgInN0cmluZ1xuIikpOworICAgICAgICBzbm1wVGFyZ2V0QWRkclRhYmxlX2Rpc3Bvc2UobmV3RW50cnkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG5ld0VudHJ5LT5uYW1lTGVuID0gYnVmbDsKKworICAgIGNwdHIgPSBjb3B5X253b3JkX2NvbnN0KGNwdHIsIGJ1ZmYsIHNpemVvZihidWZmKSk7CiAgICAgaWYgKHNubXBUYXJnZXRBZGRyX2FkZFREb21haW4obmV3RW50cnksIGJ1ZmYpID09IDApIHsKICAgICAgICAgc25tcFRhcmdldEFkZHJUYWJsZV9kaXNwb3NlKG5ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjcHRyID0KLSAgICAgICAgcmVhZF9jb25maWdfcmVhZF9vY3RldF9zdHJpbmcoY3B0ciwKKyAgICAgICAgcmVhZF9jb25maWdfcmVhZF9vY3RldF9zdHJpbmdfY29uc3QoY3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKikgJiBuZXdFbnRyeS0+dEFkZHJlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdFbnRyeS0+dEFkZHJlc3NMZW4pOwogICAgIGlmICghY3B0ciB8fCAhKG5ld0VudHJ5LT50QWRkcmVzcykpIHsKQEAgLTYxMyw1MCArNjIyLDUyIEBACiAgICAgICAgIHNubXBUYXJnZXRBZGRyVGFibGVfZGlzcG9zZShuZXdFbnRyeSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY3B0ciA9IGNvcHlfbndvcmQoY3B0ciwgYnVmZiwgc2l6ZW9mKGJ1ZmYpKTsKKyAgICBjcHRyID0gY29weV9ud29yZF9jb25zdChjcHRyLCBidWZmLCBzaXplb2YoYnVmZikpOwogICAgIGlmIChzbm1wVGFyZ2V0QWRkcl9hZGRUaW1lb3V0KG5ld0VudHJ5LCBidWZmKSA9PSAwKSB7CiAgICAgICAgIHNubXBUYXJnZXRBZGRyVGFibGVfZGlzcG9zZShuZXdFbnRyeSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY3B0ciA9IGNvcHlfbndvcmQoY3B0ciwgYnVmZiwgc2l6ZW9mKGJ1ZmYpKTsKKyAgICBjcHRyID0gY29weV9ud29yZF9jb25zdChjcHRyLCBidWZmLCBzaXplb2YoYnVmZikpOwogICAgIGlmIChzbm1wVGFyZ2V0QWRkcl9hZGRSZXRyeUNvdW50KG5ld0VudHJ5LCBidWZmKSA9PSAwKSB7CiAgICAgICAgIHNubXBUYXJnZXRBZGRyVGFibGVfZGlzcG9zZShuZXdFbnRyeSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY3B0ciA9IGNvcHlfbndvcmQoY3B0ciwgYnVmZiwgc2l6ZW9mKGJ1ZmYpKTsKKyAgICBjcHRyID0gY29weV9ud29yZF9jb25zdChjcHRyLCBidWZmLCBzaXplb2YoYnVmZikpOwogICAgIGlmIChzbm1wVGFyZ2V0QWRkcl9hZGRUYWdMaXN0KG5ld0VudHJ5LCBidWZmKSA9PSAwKSB7CiAgICAgICAgIHNubXBUYXJnZXRBZGRyVGFibGVfZGlzcG9zZShuZXdFbnRyeSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY3B0ciA9IGNvcHlfbndvcmQoY3B0ciwgYnVmZiwgc2l6ZW9mKGJ1ZmYpKTsKKyAgICBjcHRyID0gY29weV9ud29yZF9jb25zdChjcHRyLCBidWZmLCBzaXplb2YoYnVmZikpOwogICAgIGlmIChzbm1wVGFyZ2V0QWRkcl9hZGRQYXJhbXMobmV3RW50cnksIGJ1ZmYpID09IDApIHsKICAgICAgICAgc25tcFRhcmdldEFkZHJUYWJsZV9kaXNwb3NlKG5ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjcHRyID0gY29weV9ud29yZChjcHRyLCBidWZmLCBzaXplb2YoYnVmZikpOworICAgIGNwdHIgPSBjb3B5X253b3JkX2NvbnN0KGNwdHIsIGJ1ZmYsIHNpemVvZihidWZmKSk7CiAgICAgaWYgKHNubXBUYXJnZXRBZGRyX2FkZFN0b3JhZ2VUeXBlKG5ld0VudHJ5LCBidWZmKSA9PSAwKSB7CiAgICAgICAgIHNubXBUYXJnZXRBZGRyVGFibGVfZGlzcG9zZShuZXdFbnRyeSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY3B0ciA9IGNvcHlfbndvcmQoY3B0ciwgYnVmZiwgc2l6ZW9mKGJ1ZmYpKTsKKyAgICBjcHRyID0gY29weV9ud29yZF9jb25zdChjcHRyLCBidWZmLCBzaXplb2YoYnVmZikpOwogICAgIGlmIChzbm1wVGFyZ2V0QWRkcl9hZGRSb3dTdGF0dXMobmV3RW50cnksIGJ1ZmYpID09IDApIHsKICAgICAgICAgc25tcFRhcmdldEFkZHJUYWJsZV9kaXNwb3NlKG5ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBzbnByaW50ZihidWZmLCBzaXplb2YoYnVmZiksICJzbm1wX3BhcnNlX2NvbmZpZ190YXJnZXRBZGRyLCByZWFkOiAlc1xuIiwKLSAgICAgICAgICAgIG5ld0VudHJ5LT5uYW1lKTsKLSAgICBidWZmWyBzaXplb2YoYnVmZiktMSBdID0gMDsKKyAgICBicHRyID0gYnVmZjsKKyAgICBicHRyICs9IHNwcmludGYoYnB0ciwgInNubXBfcGFyc2VfY29uZmlnX3RhcmdldEFkZHIsIHJlYWQ6ICIpOworICAgIGJwdHIgPSByZWFkX2NvbmZpZ19zYXZlX29jdGV0X3N0cmluZyhicHRyLCAodV9jaGFyKiluZXdFbnRyeS0+bmFtZURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0VudHJ5LT5uYW1lTGVuKTsKKyAgICAqYnB0cisrID0gJ1xuJzsKICAgICBmb3IgKGkgPSAwOyBpIDwgbmV3RW50cnktPnREb21haW5MZW47IGkrKykgewotICAgICAgICBzbnByaW50ZigmYnVmZltzdHJsZW4oYnVmZildLCBzaXplb2YoYnVmZiktc3RybGVuKGJ1ZmYpLTEsCi0gICAgICAgICAgICAgICAgICIuJWQiLCAoaW50KSBuZXdFbnRyeS0+dERvbWFpbltpXSk7Ci0gICAgICAgIGJ1ZmZbIHNpemVvZihidWZmKS0xIF0gPSAwOworICAgICAgICBicHRyICs9IHNucHJpbnRmKGJwdHIsIGJ1ZmYgKyBzaXplb2YoYnVmZikgLSBicHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICIuJWQiLCAoaW50KSBuZXdFbnRyeS0+dERvbWFpbltpXSk7CiAgICAgfQotICAgIHNucHJpbnRmKCZidWZmW3N0cmxlbihidWZmKV0sIHNpemVvZihidWZmKS1zdHJsZW4oYnVmZiktMSwKLSAgICAgICAgICAgICIgJXMgJWQgJWQgJXMgJXMgJWQgJWRcbiIsCi0gICAgICAgICAgICBuZXdFbnRyeS0+dEFkZHJlc3MsIG5ld0VudHJ5LT50aW1lb3V0LCBuZXdFbnRyeS0+cmV0cnlDb3VudCwKLSAgICAgICAgICAgIG5ld0VudHJ5LT50YWdMaXN0LCBuZXdFbnRyeS0+cGFyYW1zLCBuZXdFbnRyeS0+c3RvcmFnZVR5cGUsCi0gICAgICAgICAgICBuZXdFbnRyeS0+cm93U3RhdHVzKTsKLSAgICBidWZmWyBzaXplb2YoYnVmZiktMSBdID0gMDsKKyAgICBicHRyICs9IHNucHJpbnRmKGJwdHIsIGJ1ZmYgKyBzaXplb2YoYnVmZikgLSBicHRyLAorICAgICAgICAgICAgICAgICAgICAgIiAlcyAlZCAlZCAlcyAlcyAlZCAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgIG5ld0VudHJ5LT50QWRkcmVzcywgbmV3RW50cnktPnRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICBuZXdFbnRyeS0+cmV0cnlDb3VudCwgbmV3RW50cnktPnRhZ0xpc3QsCisgICAgICAgICAgICAgICAgICAgICBuZXdFbnRyeS0+cGFyYW1zLCBuZXdFbnRyeS0+c3RvcmFnZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICBuZXdFbnRyeS0+cm93U3RhdHVzKTsKKyAgICBidWZmWyBzaXplb2YoYnVmZikgLSAxIF0gPSAwOwogICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwgIiVzIiwgYnVmZikpOwogCiAgICAgc25tcFRhcmdldEFkZHJUYWJsZV9hZGRUb0xpc3QobmV3RW50cnksICZhQWRkclRhYmxlKTsKQEAgLTY3Myw1MyArNjg0LDQ4IEBACiAgKiBmb3IgdGhpcyBNSUIgdGFibGUuIEl0IHdyaXRlcyBvdXQgYWxsIHRoZSBub24tdm9sYXRpbGUgcm93cyAKICAqIHRvIHBlcm1hbmVudCBzdG9yYWdlIG9uIGEgc2h1dGRvd24gIAogICovCi1pbnQKK3N0YXRpYyBpbnQKIHN0b3JlX3NubXBUYXJnZXRBZGRyRW50cnkoaW50IG1ham9ySUQsIGludCBtaW5vcklELCB2b2lkICpzZXJ2ZXJhcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsaWVudGFyZykKIHsKLSAgICBzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdCAqY3Vycl9zdHJ1Y3Q7Ci0gICAgY2hhciAgICAgICAgICAgIGxpbmVbMTAyNF07CisgICAgY29uc3Qgc3RydWN0IHRhcmdldEFkZHJUYWJsZV9zdHJ1Y3QgKmN1cnJfc3RydWN0OworICAgIGNoYXIgICAgICAgICAgICBsaW5lWzEwMjRdLCAqY3VyLCAqZXAgPSBsaW5lICsgc2l6ZW9mKGxpbmUpOwogICAgIGludCAgICAgICAgICAgICBpOwogCi0gICAgaWYgKChjdXJyX3N0cnVjdCA9IGFBZGRyVGFibGUpICE9IE5VTEwpIHsKLSAgICAgICAgd2hpbGUgKGN1cnJfc3RydWN0ICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGlmICgoY3Vycl9zdHJ1Y3QtPnN0b3JhZ2VUeXBlID09IFNOTVBfU1RPUkFHRV9OT05WT0xBVElMRSB8fAotICAgICAgICAgICAgICAgICBjdXJyX3N0cnVjdC0+c3RvcmFnZVR5cGUgPT0gU05NUF9TVE9SQUdFX1BFUk1BTkVOVCkKLSAgICAgICAgICAgICAgICAmJgotICAgICAgICAgICAgICAgIChjdXJyX3N0cnVjdC0+cm93U3RhdHVzID09IFNOTVBfUk9XX0FDVElWRSB8fAotICAgICAgICAgICAgICAgICBjdXJyX3N0cnVjdC0+cm93U3RhdHVzID09IFNOTVBfUk9XX05PVElOU0VSVklDRSkpIHsKLSAgICAgICAgICAgICAgICBzbnByaW50ZihsaW5lLCBzaXplb2YobGluZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAidGFyZ2V0QWRkciAlcyAiLCBjdXJyX3N0cnVjdC0+bmFtZSk7Ci0gICAgICAgICAgICAgICAgbGluZVsgc2l6ZW9mKGxpbmUpLTEgXSA9IDA7Ci0gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGN1cnJfc3RydWN0LT50RG9tYWluTGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgc25wcmludGYoJmxpbmVbc3RybGVuKGxpbmUpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobGluZSktc3RybGVuKGxpbmUpLTEsICIuJWkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpIGN1cnJfc3RydWN0LT50RG9tYWluW2ldKTsKLSAgICAgICAgICAgICAgICAgICAgbGluZVsgc2l6ZW9mKGxpbmUpLTEgXSA9IDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0cmxjYXQobGluZSwgIiAiLCBzaXplb2YobGluZSkpOwotICAgICAgICAgICAgICAgIHJlYWRfY29uZmlnX3NhdmVfb2N0ZXRfc3RyaW5nKCZsaW5lW3N0cmxlbihsaW5lKV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vycl9zdHJ1Y3QtPnRBZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJfc3RydWN0LT50QWRkcmVzc0xlbik7Ci0KLSAgICAgICAgICAgICAgICBzbnByaW50ZigmbGluZVtzdHJsZW4obGluZSldLCBzaXplb2YobGluZSktc3RybGVuKGxpbmUpLTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAiICVpICVpIFwiJXNcIiAlcyAlaSAlaSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBjdXJyX3N0cnVjdC0+dGltZW91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJfc3RydWN0LT5yZXRyeUNvdW50LCBjdXJyX3N0cnVjdC0+dGFnTGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJfc3RydWN0LT5wYXJhbXMsIGN1cnJfc3RydWN0LT5zdG9yYWdlVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJfc3RydWN0LT5yb3dTdGF0dXMpOwotICAgICAgICAgICAgICAgIGxpbmVbIHNpemVvZihsaW5lKS0xIF0gPSAwOwotCi0gICAgICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICAgKiBzdG9yZSB0byBmaWxlIAotICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIHNubXBkX3N0b3JlX2NvbmZpZyhsaW5lKTsKKyAgICBjdXJyX3N0cnVjdCA9IGFBZGRyVGFibGU7CisgICAgd2hpbGUgKGN1cnJfc3RydWN0ICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKChjdXJyX3N0cnVjdC0+c3RvcmFnZVR5cGUgPT0gU05NUF9TVE9SQUdFX05PTlZPTEFUSUxFIHx8CisgICAgICAgICAgICAgY3Vycl9zdHJ1Y3QtPnN0b3JhZ2VUeXBlID09IFNOTVBfU1RPUkFHRV9QRVJNQU5FTlQpICYmCisgICAgICAgICAgICAoY3Vycl9zdHJ1Y3QtPnJvd1N0YXR1cyA9PSBTTk1QX1JPV19BQ1RJVkUgfHwKKyAgICAgICAgICAgICBjdXJyX3N0cnVjdC0+cm93U3RhdHVzID09IFNOTVBfUk9XX05PVElOU0VSVklDRSkpIHsKKyAgICAgICAgICAgIGN1ciA9IGxpbmUgKyBzbnByaW50ZihsaW5lLCBzaXplb2YobGluZSksICJ0YXJnZXRBZGRyICIpOworICAgICAgICAgICAgY3VyID0gcmVhZF9jb25maWdfc2F2ZV9vY3RldF9zdHJpbmcoCisgICAgICAgICAgICAgICAgY3VyLCAodV9jaGFyKiljdXJyX3N0cnVjdC0+bmFtZURhdGEsIGN1cnJfc3RydWN0LT5uYW1lTGVuKTsKKyAgICAgICAgICAgICpjdXIrKyA9ICcgJzsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjdXJyX3N0cnVjdC0+dERvbWFpbkxlbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgY3VyICs9IHNucHJpbnRmKGN1ciwgZXAgLSBjdXIsICIuJWkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSBjdXJyX3N0cnVjdC0+dERvbWFpbltpXSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjdXJyX3N0cnVjdCA9IGN1cnJfc3RydWN0LT5uZXh0OwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CisgICAgICAgICAgICAqY3VyKysgPSAnICc7CisgICAgICAgICAgICBjdXIgPSByZWFkX2NvbmZpZ19zYXZlX29jdGV0X3N0cmluZygKKyAgICAgICAgICAgICAgICBjdXIsIGN1cnJfc3RydWN0LT50QWRkcmVzcywgY3Vycl9zdHJ1Y3QtPnRBZGRyZXNzTGVuKTsKKyAgICAgICAgICAgIGN1ciArPSBzbnByaW50ZihjdXIsIGVwIC0gY3VyLCAiICVpICVpIFwiJXNcIiAlcyAlaSAlaSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vycl9zdHJ1Y3QtPnRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vycl9zdHJ1Y3QtPnJldHJ5Q291bnQsIGN1cnJfc3RydWN0LT50YWdMaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJfc3RydWN0LT5wYXJhbXMsIGN1cnJfc3RydWN0LT5zdG9yYWdlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyX3N0cnVjdC0+cm93U3RhdHVzKTsKKyAgICAgICAgICAgIGxpbmVbIHNpemVvZihsaW5lKS0xIF0gPSAwOwogCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogc3RvcmUgdG8gZmlsZQorICAgICAgICAgICAgICovCisgICAgICAgICAgICBzbm1wZF9zdG9yZV9jb25maWcobGluZSk7CisgICAgICAgIH0KKworICAgICAgICBjdXJyX3N0cnVjdCA9IGN1cnJfc3RydWN0LT5uZXh0OworICAgIH0KKworICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBzdG9yZV9zbm1wVGFyZ2V0QWRkckVudHJ5ICAqLwogCiAKQEAgLTc1Myw2ICs3NTksNyBAQAogICAgICAqLwogCiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBTTk1QVEFSR0VUQUREUlRET01BSU46CiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9zbm1wVGFyZ2V0QWRkclREb21haW47CiAgICAgICAgIGJyZWFrOwpAQCAtNzc3LDExICs3ODQsMTMgQEAKICAgICBjYXNlIFNOTVBUQVJHRVRBRERSUk9XU1RBVFVTOgogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfc25tcFRhcmdldEFkZHJSb3dTdGF0dXM7CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgZGVmYXVsdDoKICAgICAgICAgKndyaXRlX21ldGhvZCA9IE5VTEw7CiAgICAgfQogCi0gICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZ19yZXQpOyAgICAgICAgLyogYXNzdW1lIGFuIGludGVnZXIgYW5kIGNoYW5nZSBsYXRlciBpZiBub3QgKi8KKyAgICAvKiBhc3N1bWUgYW4gaW50ZWdlciBhbmQgY2hhbmdlIGxhdGVyIGlmIG5vdCAqLworICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmdfcmV0KTsKIAogICAgIC8qCiAgICAgICogbG9vayBmb3IgT0lEIGluIGN1cnJlbnQgdGFibGUgCkBAIC04NTMsMTAgKzg2MiwxMiBAQAogICAgICAgICAgICAgICAgICAgICAidW5rbm93biBzdWItaWQgJWQgaW4gdmFyX3NubXBUYXJnZXRBZGRyRW50cnlcbiIsCiAgICAgICAgICAgICAgICAgICAgIHZwLT5tYWdpYykpOwogICAgIH0KKwogICAgIHJldHVybiBOVUxMOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB2YXJfc25tcFRhcmdldEFkZHJFbnRyeSAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBpbnQKIHdyaXRlX3NubXBUYXJnZXRBZGRyVERvbWFpbihpbnQgYWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciAqIHZhcl92YWwsCkBAIC05MjEsNiArOTMyLDggQEAKICAgICAgICAgICAgICAgICB0YXJnZXQtPnJvd1N0YXR1cyA9IFNOTVBfUk9XX05PVElOU0VSVklDRTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoYWN0aW9uID09IENPTU1JVCkgeworICAgICAgICBzbm1wX3N0b3JlX25lZWRlZChOVUxMKTsKICAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PSBGUkVFIHx8IGFjdGlvbiA9PSBVTkRPKSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIFRyeSB0byB1bmRvIHRoZSBTRVQgaGVyZSAoYWJub3JtYWwgdXNhZ2Ugb2YgRlJFRSBjbGF1c2UpICAKQEAgLTEwMDgsNiArMTAyMSw3IEBACiAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gQ09NTUlUKSB7CiAgICAgICAgIFNOTVBfRlJFRShvbGRfYWRkcik7CiAgICAgICAgIG9sZF9hZGRyID0gTlVMTDsKKyAgICAgICAgc25tcF9zdG9yZV9uZWVkZWQoTlVMTCk7CiAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gRlJFRSB8fCBhY3Rpb24gPT0gVU5ETykgewogICAgICAgICAvKgogICAgICAgICAgKiBUcnkgdG8gdW5kbyB0aGUgU0VUIGhlcmUgKGFibm9ybWFsIHVzYWdlIG9mIEZSRUUgY2xhdXNlKSAgCkBAIC0xMTAzLDYgKzExMTcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpKSAhPSBOVUxMKSB7CiAgICAgICAgICAgICB0ZW1wX3N0cnVjdC0+dGltZW91dCA9IGxvbmdfcmV0OwogICAgICAgICB9CisgICAgICAgIHNubXBfc3RvcmVfbmVlZGVkKE5VTEwpOwogICAgIH0KIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwpAQCAtMTE2MCw2ICsxMTc1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKSkgIT0gTlVMTCkgewogICAgICAgICAgICAgdGFyZ2V0LT5yZXRyeUNvdW50ID0gbG9uZ19yZXQ7CiAgICAgICAgIH0KKyAgICAgICAgc25tcF9zdG9yZV9uZWVkZWQoTlVMTCk7CiAgICAgfQogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CkBAIC0xMjUwLDYgKzEyNjYsNyBAQAogICAgIH0gZWxzZSBpZiAoYWN0aW9uID09IENPTU1JVCkgewogICAgICAgICBTTk1QX0ZSRUUob2xkX3RsaXN0KTsKICAgICAgICAgb2xkX3RsaXN0ID0gTlVMTDsKKyAgICAgICAgc25tcF9zdG9yZV9uZWVkZWQoTlVMTCk7CiAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gRlJFRSB8fCBhY3Rpb24gPT0gVU5ETykgewogICAgICAgICBzbm1wVGFyZ2V0QWRkck9JRFtzbm1wVGFyZ2V0QWRkck9JRExlbiAtIDFdID0KICAgICAgICAgICAgIFNOTVBUQVJHRVRBRERSVEFHTElTVENPTFVNTjsKQEAgLTEzMjcsNiArMTM0NCw3IEBACiAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gQ09NTUlUKSB7CiAgICAgICAgIFNOTVBfRlJFRShvbGRfcGFyYW1zKTsKICAgICAgICAgb2xkX3BhcmFtcyA9IE5VTEw7CisgICAgICAgIHNubXBfc3RvcmVfbmVlZGVkKE5VTEwpOwogICAgIH0gZWxzZSBpZiAoYWN0aW9uID09IEZSRUUgfHwgYWN0aW9uID09IFVORE8pIHsKICAgICAgICAgLyoKICAgICAgICAgICogVHJ5IHRvIHVuZG8gdGhlIFNFVCBoZXJlIChhYm5vcm1hbCB1c2FnZSBvZiBGUkVFIGNsYXVzZSkgIApAQCAtMTQxMyw2ICsxNDMxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKSkgIT0gTlVMTCkgewogICAgICAgICAgICAgdGFyZ2V0LT5zdG9yYWdlVHlwZSA9IGxvbmdfcmV0OwogICAgICAgICB9CisgICAgICAgIHNubXBfc3RvcmVfbmVlZGVkKE5VTEwpOwogICAgIH0KIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwpAQCAtMTQ0MSwxOCArMTQ2MCwxOCBAQAogICAgICAgICB0ZW1wX3N0cnVjdCA9IHNubXBUYXJnZXRBZGRyVGFibGVfY3JlYXRlKCk7CiAgICAgICAgIGlmICghdGVtcF9zdHJ1Y3QpCiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOwotICAgICAgICB0ZW1wX3N0cnVjdC0+bmFtZSA9IChjaGFyICopIG1hbGxvYyhuZXdOYW1lTGVuICsgMSk7Ci0gICAgICAgIGlmICh0ZW1wX3N0cnVjdC0+bmFtZSA9PSBOVUxMKSB7CisgICAgICAgIHRlbXBfc3RydWN0LT5uYW1lRGF0YSA9IChjaGFyICopIG1hbGxvYyhuZXdOYW1lTGVuKTsKKyAgICAgICAgaWYgKHRlbXBfc3RydWN0LT5uYW1lRGF0YSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBTTk1QX0ZSRUUodGVtcF9zdHJ1Y3QtPnRhZ0xpc3QpOwogICAgICAgICAgICAgU05NUF9GUkVFKHRlbXBfc3RydWN0KTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKKyAgICAgICAgdGVtcF9zdHJ1Y3QtPm5hbWVMZW4gPSBuZXdOYW1lTGVuOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgKGludCkgbmV3TmFtZUxlbjsgaSsrKSB7Ci0gICAgICAgICAgICB0ZW1wX3N0cnVjdC0+bmFtZVtpXSA9IChjaGFyKSBuYW1lW2kgKyBzbm1wVGFyZ2V0QWRkck9JRExlbl07CisgICAgICAgICAgICB0ZW1wX3N0cnVjdC0+bmFtZURhdGFbaV0gPSAoY2hhcikgbmFtZVtpICsgc25tcFRhcmdldEFkZHJPSURMZW5dOwogICAgICAgICB9CiAKLSAgICAgICAgdGVtcF9zdHJ1Y3QtPm5hbWVbbmV3TmFtZUxlbl0gPSAnXDAnOwogICAgICAgICB0ZW1wX3N0cnVjdC0+cm93U3RhdHVzID0gU05NUF9ST1dfTk9UUkVBRFk7CiAKICAgICAgICAgc25tcFRhcmdldEFkZHJUYWJsZV9hZGRUb0xpc3QodGVtcF9zdHJ1Y3QsICZhQWRkclRhYmxlKTsKQEAgLTE2NDgsNiArMTY2Nyw3IEBACiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CiAKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIAogdV9jaGFyICAgICAgICAgKgpAQCAtMTY1OSwxMiArMTY3OSwyMCBAQAogewogICAgIGlmIChoZWFkZXJfZ2VuZXJpYyh2cCwgbmFtZSwgbGVuZ3RoLCBleGFjdCwgdmFyX2xlbiwgd3JpdGVfbWV0aG9kKSA9PQogICAgICAgICBNQVRDSF9GQUlMRUQpIHsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV90YXJnZXRTcGluTG9jazsKKyNlbHNlCisJCSp3cml0ZV9tZXRob2QgPSBOVUxMOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmICh2cC0+bWFnaWMgPT0gU05NUFRBUkdFVFNQSU5MT0NLKSB7Ci0gICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV90YXJnZXRTcGluTG9jazsKICAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YodW5zaWduZWQgbG9uZyk7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfdGFyZ2V0U3BpbkxvY2s7CisjZWxzZQorCQkqd3JpdGVfbWV0aG9kID0gTlVMTDsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgKHNubXBUYXJnZXRTcGluTG9jayk7CiAgICAgfQogICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuaCBiL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmgKaW5kZXggN2VkODM4Zi4uMGI3MGFmNSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuaAorKysgYi9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5oCkBAIC00Niw3ICs0Niw4IEBACiAgICAgICogc3RydWN0dXJlIGRlZmluaXRpb25zIAogICAgICAqLwogICAgICBzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdCB7Ci0gICAgICAgICBjaGFyICAgICAgICAgICAqbmFtZTsKKyAgICAgICAgIGNoYXIgICAgICAgICAgICpuYW1lRGF0YTsKKyAgICAgICAgIHVuc2lnbmVkIGNoYXIgICBuYW1lTGVuOwogICAgICAgICAgb2lkICAgICAgICAgICAgIHREb21haW5bTUFYX09JRF9MRU5dOwogICAgICAgICAgaW50ICAgICAgICAgICAgIHREb21haW5MZW47CiAgICAgICAgICB1bnNpZ25lZCBjaGFyICAqdEFkZHJlc3M7CkBAIC02NywxOSArNjgsMTkgQEAKICAqLwogCiAgICAgIHZvaWQgICAgICAgICAgICBpbml0X3NubXBUYXJnZXRBZGRyRW50cnkodm9pZCk7Ci0gICAgIGludCAgICAgICAgICAgICBzdG9yZV9zbm1wVGFyZ2V0QWRkckVudHJ5KGludCBtYWpvcklELCBpbnQgbWlub3JJRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc2VydmVyYXJnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnRhcmcpOworICAgICB2b2lkICAgICAgICAgICAgc2h1dGRvd25fc25tcFRhcmdldEFkZHJFbnRyeSh2b2lkKTsKICAgICAgRmluZFZhck1ldGhvZCAgIHZhcl9zbm1wVGFyZ2V0QWRkckVudHJ5OwogCiAgICAgIHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICpnZXRfYWRkclRhYmxlKHZvaWQpOwotICAgICBzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdCAqZ2V0X2FkZHJGb3JOYW1lKGNoYXIgKm5hbWUpOworICAgICBzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdCAqZ2V0X2FkZHJGb3JOYW1lMihjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG5hbWVMZW4pOwogICAgICBzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdCAqc25tcFRhcmdldEFkZHJUYWJsZV9jcmVhdGUodm9pZCk7CiAgICAgIHZvaWQgICAgICAgICAgICBzbm1wVGFyZ2V0QWRkclRhYmxlX2FkZChzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5ld0VudHJ5KTsKIAogICAgICB2b2lkICAgICAgICAgICAgc25tcGRfcGFyc2VfY29uZmlnX3RhcmdldEFkZHIoY29uc3QgY2hhciAqLCBjaGFyICopOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfc25tcFRhcmdldEFkZHJURG9tYWluOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfc25tcFRhcmdldEFkZHJUQWRkcmVzczsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX3NubXBUYXJnZXRBZGRyVGltZW91dDsKQEAgLTg5LDcgKzkwLDggQEAKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX3NubXBUYXJnZXRBZGRyU3RvcmFnZVR5cGU7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9zbm1wVGFyZ2V0QWRkclJvd1N0YXR1czsKIAotICAgICBGaW5kVmFyTWV0aG9kICAgdmFyX3RhcmdldFNwaW5Mb2NrOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfdGFyZ2V0U3BpbkxvY2s7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgICBGaW5kVmFyTWV0aG9kICAgdmFyX3RhcmdldFNwaW5Mb2NrOwogCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9NSUJHUk9VUF9TTk1QVEFSR0VUQUREUkVOVFJZX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuYyBiL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuYwppbmRleCBlNTE1Mzc5Li40ZTFmNGUyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5jCkBAIC0yOTIsNiArMjkyLDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZV9zbm1wVGFyZ2V0UGFyYW1zRW50cnksIE5VTEwpOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgaW5pdF9zbm1wVGFyZ2V0UGFybXNFbnRyeSAgKi8KIAordm9pZAorc2h1dGRvd25fc25tcFRhcmdldFBhcmFtc0VudHJ5KHZvaWQpCit7CisgICAgd2hpbGUgKGFQVGFibGUpCisJc25tcFRhcmdldFBhcmFtVGFibGVfcmVtRnJvbUxpc3QoYVBUYWJsZSwgJmFQVGFibGUpOworfQorCiAKIGludAogc25tcFRhcmdldFBhcmFtc19hZGRQYXJhbU5hbWUoc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0ICplbnRyeSwKQEAgLTYwOCw2ICs2MTUsNyBAQAogICAgIHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCAqdGVtcF9zdHJ1Y3Q7CiAKICAgICBzd2l0Y2ggKHZwLT5tYWdpYykgeworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIFNOTVBUQVJHRVRQQVJBTVNNUE1PREVMOgogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfc25tcFRhcmdldFBhcmFtc01QTW9kZWw7CiAgICAgICAgIGJyZWFrOwpAQCAtNjI2LDExICs2MzQsMTMgQEAKICAgICBjYXNlIFNOTVBUQVJHRVRQQVJBTVNST1dTVEFUVVM6CiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9zbm1wVGFyZ2V0UGFyYW1zUm93U3RhdHVzOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgZGVmYXVsdDoKICAgICAgICAgKndyaXRlX21ldGhvZCA9IE5VTEw7CiAgICAgfQogCi0gICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZ19yZXQpOyAgICAgICAgLyogYXNzdW1lIGFuIGludGVnZXIgYW5kIGNoYW5nZSBsYXRlciBpZiBub3QgKi8KKyAgICAvKiBhc3N1bWUgYW4gaW50ZWdlciBhbmQgY2hhbmdlIGxhdGVyIGlmIG5vdCAqLworICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmdfcmV0KTsKIAogICAgIC8qCiAgICAgICogbG9vayBmb3IgT0lEIGluIGN1cnJlbnQgdGFibGUgCkBAIC03MDMsOSArNzEzLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICJ1bmtub3duIHN1Yi1pZCAlZCBpbiB2YXJfc25tcFRhcmdldFBhcmFtc0VudHJ5XG4iLAogICAgICAgICAgICAgICAgICAgICB2cC0+bWFnaWMpKTsKICAgICB9CisKICAgICByZXR1cm4gTlVMTDsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdmFyX3NubXBUYXJnZXRQYXJhbXNFbnRyeSAqLwogCisKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAvKgogICogQXNzaWduIGEgdmFsdWUgdG8gdGhlIG1wTW9kZWwgdmFyaWFibGUuICAKICAqLwpAQCAtMTM3OCw2ICsxMzkxLDkgQEAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KIAorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKworCiBzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKgogZ2V0X3BhcmFtRW50cnkoY2hhciAqbmFtZSkKIHsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuaCBiL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuaAppbmRleCA4Mjg2YTY0Li5iZDMwNTgyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5oCkBAIC0xLDcyICsxLDc1IEBACiAKLS8qCi0gKiBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSBtaWIyYyBhbmQgaXMgaW50ZW5kZWQgZm9yIHVzZSBhcyBhIG1pYiBtb2R1bGUKLSAqIGZvciB0aGUgdWNkLXNubXAgc25tcGQgYWdlbnQuIEVkaXRlZCBieSBNaWNoYWVsIEJhZXIKLSAqIAotICogbGFzdCBjaGFuZ2VkIDIvMi85OS4KLSAqLwotCi0jaWZuZGVmIF9NSUJHUk9VUF9TTk1QVEFSR0VUUEFSQU1TRU5UUllfSAotI2RlZmluZSBfTUlCR1JPVVBfU05NUFRBUkdFVFBBUkFNU0VOVFJZX0gKLQotICAgIC8qCi0gICAgICogTWFnaWMgbnVtYmVyIGRlZmluaXRpb25zOiAKLSAgICAgKi8KLSNkZWZpbmUgICBTTk1QVEFSR0VUUEFSQU1TTVBNT0RFTCAgICAgICAgMQotI2RlZmluZSAgIFNOTVBUQVJHRVRQQVJBTVNTRUNVUklUWU1PREVMICAyCi0jZGVmaW5lICAgU05NUFRBUkdFVFBBUkFNU1NFQ1VSSVRZTkFNRSAgIDMKLSNkZWZpbmUgICBTTk1QVEFSR0VUUEFSQU1TU0VDVVJJVFlMRVZFTCAgNAotI2RlZmluZSAgIFNOTVBUQVJHRVRQQVJBTVNTVE9SQUdFVFlQRSAgICA1Ci0jZGVmaW5lICAgU05NUFRBUkdFVFBBUkFNU1JPV1NUQVRVUyAgICAgIDYKLSNkZWZpbmUgICBTTk1QVEFSR0VUUEFSQU1TTVBNT0RFTENPTFVNTiAgICAgICAgMgotI2RlZmluZSAgIFNOTVBUQVJHRVRQQVJBTVNTRUNVUklUWU1PREVMQ09MVU1OICAzCi0jZGVmaW5lICAgU05NUFRBUkdFVFBBUkFNU1NFQ1VSSVRZTkFNRUNPTFVNTiAgIDQKLSNkZWZpbmUgICBTTk1QVEFSR0VUUEFSQU1TU0VDVVJJVFlMRVZFTENPTFVNTiAgNQotI2RlZmluZSAgIFNOTVBUQVJHRVRQQVJBTVNTVE9SQUdFVFlQRUNPTFVNTiAgICA2Ci0jZGVmaW5lICAgU05NUFRBUkdFVFBBUkFNU1JPV1NUQVRVU0NPTFVNTiAgICAgIDcKLSAgICAvKgotICAgICAqIHN0cnVjdHVyZSBkZWZpbml0aW9ucyAKLSAgICAgKi8KLSAgICAgc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0IHsKLSAgICAgICAgIGNoYXIgICAgICAgICAgICpwYXJhbU5hbWU7Ci0gICAgICAgICBpbnQgICAgICAgICAgICAgbXBNb2RlbDsKLSAgICAgICAgIGludCAgICAgICAgICAgICBzZWNNb2RlbDsKLSAgICAgICAgIGNoYXIgICAgICAgICAgICpzZWNOYW1lOwotICAgICAgICAgaW50ICAgICAgICAgICAgIHNlY0xldmVsOwotICAgICAgICAgaW50ICAgICAgICAgICAgIHN0b3JhZ2VUeXBlOwotICAgICAgICAgaW50ICAgICAgICAgICAgIHJvd1N0YXR1czsKLSAgICAgICAgIHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCAqbmV4dDsKLSAgICAgICAgIHRpbWVfdCAgICAgICAgICB1cGRhdGVUaW1lOwotICAgICB9OwotCi0vKgotICogdXRpbGl0eSBmdW5jdGlvbnMgCi0gKi8KLSAgICAgc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0ICpnZXRfcGFyYW1FbnRyeShjaGFyICpuYW1lKTsKLSAgICAgdm9pZCAgICAgICAgICAgIHNubXBUYXJnZXRQYXJhbVRhYmxlX2FkZChzdHJ1Y3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZXdFbnRyeSk7Ci0gICAgIHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCAqc25tcFRhcmdldFBhcmFtVGFibGVfY3JlYXRlKHZvaWQpOwotICAgICB2b2lkIHNubXBUYXJnZXRQYXJhbVRhYmxlX2Rpc3Bvc2Uoc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0ICopOwotCi0vKgotICogZnVuY3Rpb24gZGVmaW5pdGlvbnMgCi0gKi8KLQotICAgICB2b2lkICAgICAgICAgICAgaW5pdF9zbm1wVGFyZ2V0UGFyYW1zRW50cnkodm9pZCk7Ci0gICAgIGludCAgICAgICAgICAgICBzdG9yZV9zbm1wVGFyZ2V0UGFyYW1zRW50cnkoaW50IG1ham9ySUQsIGludCBtaW5vcklELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnNlcnZlcmFyZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnRhcmcpOwotICAgICBleHRlcm4gRmluZFZhck1ldGhvZCB2YXJfc25tcFRhcmdldFBhcmFtc0VudHJ5OwotCi0gICAgIHZvaWQgICAgICAgICAgICBzbm1wZF9wYXJzZV9jb25maWdfdGFyZ2V0UGFyYW1zKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKLQorICAvKgorICAgKiBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSBtaWIyYyBhbmQgaXMgaW50ZW5kZWQgZm9yIHVzZSBhcyBhIG1pYiBtb2R1bGUKKyAgICogZm9yIHRoZSB1Y2Qtc25tcCBzbm1wZCBhZ2VudC4gRWRpdGVkIGJ5IE1pY2hhZWwgQmFlcgorICAgKiAKKyAgICogbGFzdCBjaGFuZ2VkIDIvMi85OS4KKyAgICovCisgCisgICNpZm5kZWYgX01JQkdST1VQX1NOTVBUQVJHRVRQQVJBTVNFTlRSWV9ICisgICNkZWZpbmUgX01JQkdST1VQX1NOTVBUQVJHRVRQQVJBTVNFTlRSWV9ICisgCisgICAgICAvKgorICAgICAgICogTWFnaWMgbnVtYmVyIGRlZmluaXRpb25zOiAKKyAgICAgICAqLworICAjZGVmaW5lICAgU05NUFRBUkdFVFBBUkFNU01QTU9ERUwgICAgICAgIDEKKyAgI2RlZmluZSAgIFNOTVBUQVJHRVRQQVJBTVNTRUNVUklUWU1PREVMICAyCisgICNkZWZpbmUgICBTTk1QVEFSR0VUUEFSQU1TU0VDVVJJVFlOQU1FICAgMworICAjZGVmaW5lICAgU05NUFRBUkdFVFBBUkFNU1NFQ1VSSVRZTEVWRUwgIDQKKyAgI2RlZmluZSAgIFNOTVBUQVJHRVRQQVJBTVNTVE9SQUdFVFlQRSAgICA1CisgICNkZWZpbmUgICBTTk1QVEFSR0VUUEFSQU1TUk9XU1RBVFVTICAgICAgNgorICAjZGVmaW5lICAgU05NUFRBUkdFVFBBUkFNU01QTU9ERUxDT0xVTU4gICAgICAgIDIKKyAgI2RlZmluZSAgIFNOTVBUQVJHRVRQQVJBTVNTRUNVUklUWU1PREVMQ09MVU1OICAzCisgICNkZWZpbmUgICBTTk1QVEFSR0VUUEFSQU1TU0VDVVJJVFlOQU1FQ09MVU1OICAgNAorICAjZGVmaW5lICAgU05NUFRBUkdFVFBBUkFNU1NFQ1VSSVRZTEVWRUxDT0xVTU4gIDUKKyAgI2RlZmluZSAgIFNOTVBUQVJHRVRQQVJBTVNTVE9SQUdFVFlQRUNPTFVNTiAgICA2CisgICNkZWZpbmUgICBTTk1QVEFSR0VUUEFSQU1TUk9XU1RBVFVTQ09MVU1OICAgICAgNworICAgICAgLyoKKyAgICAgICAqIHN0cnVjdHVyZSBkZWZpbml0aW9ucyAKKyAgICAgICAqLworICAgICAgIHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCB7CisgICAgICAgICAgIGNoYXIgICAgICAgICAgICpwYXJhbU5hbWU7CisgICAgICAgICAgIGludCAgICAgICAgICAgICBtcE1vZGVsOworICAgICAgICAgICBpbnQgICAgICAgICAgICAgc2VjTW9kZWw7CisgICAgICAgICAgIGNoYXIgICAgICAgICAgICpzZWNOYW1lOworICAgICAgICAgICBpbnQgICAgICAgICAgICAgc2VjTGV2ZWw7CisgICAgICAgICAgIGludCAgICAgICAgICAgICBzdG9yYWdlVHlwZTsKKyAgICAgICAgICAgaW50ICAgICAgICAgICAgIHJvd1N0YXR1czsKKyAgICAgICAgICAgc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0ICpuZXh0OworICAgICAgICAgICB0aW1lX3QgICAgICAgICAgdXBkYXRlVGltZTsKKyAgICAgICB9OworIAorICAvKgorICAgKiB1dGlsaXR5IGZ1bmN0aW9ucyAKKyAgICovCisgICAgICAgc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0ICpnZXRfcGFyYW1FbnRyeShjaGFyICpuYW1lKTsKKyAgICAgICB2b2lkICAgICAgICAgICAgc25tcFRhcmdldFBhcmFtVGFibGVfYWRkKHN0cnVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZXdFbnRyeSk7CisgICAgICAgc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0ICpzbm1wVGFyZ2V0UGFyYW1UYWJsZV9jcmVhdGUodm9pZCk7CisgICAgICAgdm9pZCBzbm1wVGFyZ2V0UGFyYW1UYWJsZV9kaXNwb3NlKHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCAqKTsKKyAKKyAgLyoKKyAgICogZnVuY3Rpb24gZGVmaW5pdGlvbnMgCisgICAqLworIAorICAgICAgIHZvaWQgICAgICAgICAgICBpbml0X3NubXBUYXJnZXRQYXJhbXNFbnRyeSh2b2lkKTsKKyAgICAgICB2b2lkICAgICAgICAgICAgc2h1dGRvd25fc25tcFRhcmdldFBhcmFtc0VudHJ5KHZvaWQpOworICAgICAgIGludCAgICAgICAgICAgICBzdG9yZV9zbm1wVGFyZ2V0UGFyYW1zRW50cnkoaW50IG1ham9ySUQsIGludCBtaW5vcklELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc2VydmVyYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xpZW50YXJnKTsKKyAgICAgICBleHRlcm4gRmluZFZhck1ldGhvZCB2YXJfc25tcFRhcmdldFBhcmFtc0VudHJ5OworIAorICAgICAgIHZvaWQgICAgICAgICAgICBzbm1wZF9wYXJzZV9jb25maWdfdGFyZ2V0UGFyYW1zKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKKyAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9zbm1wVGFyZ2V0UGFyYW1zTVBNb2RlbDsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX3NubXBUYXJnZXRQYXJhbXNTZWNNb2RlbDsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX3NubXBUYXJnZXRQYXJhbXNTZWNOYW1lOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfc25tcFRhcmdldFBhcmFtc1NlY0xldmVsOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfc25tcFRhcmdldFBhcmFtc1N0b3JhZ2VUeXBlOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfc25tcFRhcmdldFBhcmFtc1Jvd1N0YXR1czsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIAogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfTUlCR1JPVVBfU05NUFRBUkdFVFBBUkFNU0VOVFJZX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXQuYyBiL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXQuYwppbmRleCA1ODc4M2FkLi41NjE5ZTM1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpZiBIQVZFX1NUUklOR19ICiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC0yNSw2ICsyNiwxMCBAQAogI2luY2x1ZGUgInNubXBUYXJnZXRQYXJhbXNFbnRyeS5oIgogI2luY2x1ZGUgInRhcmdldC5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0ZG9tYWluX3N1cHBvcnQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0ZG9tYWluX3RyYW5zcG9ydF9vaWQpCituZXRzbm1wX2ZlYXR1cmVfd2FudChuZXRzbm1wX3Rsc3RtQWRkcl9nZXRfc2VydmVySWQpCisKICNkZWZpbmUgTUFYX1RBR1MgMTI4CiAKIG5ldHNubXBfc2Vzc2lvbiAqCkBAIC02Niw3ICs3MSw3IEBACiAgICAgICAgICAgICAodGFyZ2FkZHJzLT50RG9tYWluLCB0YXJnYWRkcnMtPnREb21haW5MZW4sIE5VTEwsIE5VTEwpID09IDApIHsKICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCiAgICAgICAgICAgICAgICAgICAgICAidW5zdXBwb3J0ZWQgZG9tYWluIGZvciB0YXJnZXQgYWRkcmVzcyB0YWJsZSBlbnRyeSAlc1xuIiwKLSAgICAgICAgICAgICAgICAgICAgIHRhcmdhZGRycy0+bmFtZSk7CisgICAgICAgICAgICAgICAgICAgICB0YXJnYWRkcnMtPm5hbWVEYXRhKTsKICAgICAgICAgfQogCiAgICAgICAgIC8qCkBAIC0xOTEsNyArMTk2LDggQEAKICNpZiBkZWZpbmVkKE5FVFNOTVBfVFJBTlNQT1JUX0RUTFNVRFBfRE9NQUlOKSB8fCBkZWZpbmVkKE5FVFNOTVBfVFJBTlNQT1JUX1RMU1RDUF9ET01BSU4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0bHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jZXJ0ICpjZXJ0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAgKnNlcnZlcl9pZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAgICpzZXJ2ZXJfaWQgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyCSAgICAgIGJ1ZlszM107CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInRhcmdldF9zZXNzaW9ucyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIGxvb2tpbmcgdXAgb3VyIGlkOiAlc1xuIiwKQEAgLTIwNSwyNSArMjExLDI5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgidGFyZ2V0X3Nlc3Npb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgZm91bmQgZmluZ2VycHJpbnQ6ICVzXG4iLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnQtPmZpbmdlcnByaW50KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LT5mX2NvbmZpZyh0LCAib3VyX2lkZW50aXR5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQtPmZfY29uZmlnKHQsICJsb2NhbENlcnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydC0+ZmluZ2VycHJpbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweShidWYsIHRhcmdhZGRycy0+bmFtZURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnYWRkcnMtPm5hbWVMZW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZbdGFyZ2FkZHJzLT5uYW1lTGVuXSA9ICdcMCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ0YXJnZXRfc2Vzc2lvbnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICBsb29raW5nIHVwIHRoZWlyIGlkOiAlc1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2FkZHJzLT5uYW1lKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY2VydF9maW5kKE5TX0NFUlRfUkVNT1RFX1BFRVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU19DRVJUS0VZX1RBUkdFVF9BRERSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2FkZHJzLT5uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjZXJ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgidGFyZ2V0X3Nlc3Npb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgZm91bmQgZmluZ2VycHJpbnQ6ICVzXG4iLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnQtPmZpbmdlcnByaW50KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LT5mX2NvbmZpZyh0LCAidGhlaXJfaWRlbnRpdHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC0+Zl9jb25maWcodCwgInBlZXJDZXJ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnQtPmZpbmdlcnByaW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQgPSBuZXRzbm1wX3Rsc3RtQWRkcl9nZXRfc2VydmVySWQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnYWRkcnMtPm5hbWUpOworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RMU1RNQUREUl9HRVRfU0VSVkVSSUQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2lkID0gbmV0c25tcF90bHN0bUFkZHJfZ2V0X3NlcnZlcklkKGJ1Zik7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UTFNUTUFERFJfR0VUX1NFUlZFUklEICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXJ2ZXJfaWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ0YXJnZXRfc2Vzc2lvbnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICBmb3VuZCBzZXJ2ZXJJZDogJXNcbiIsIApAQCAtMjQ2LDcgKzI1Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnN1cHBvcnRlZCBtcE1vZGVsL3NlY01vZGVsIGNvbWJvICVkLyVkIGZvciB0YXJnZXQgJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLT5tcE1vZGVsLCBwYXJhbS0+c2VjTW9kZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdhZGRycy0+bmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdhZGRycy0+bmFtZURhdGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBYWFg6IG1lbWxlYWsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5jIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5jCmluZGV4IDhhMmYwZDEuLjAxMDk5NzQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnMuYworKysgYi9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmMKQEAgLTQ0LDYgKzQ0LDcgQEAKIAogfQogCisKIGludAogZ2V0X3Vua25vd25fY29udGV4dF9jb3VudChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5oIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5oCmluZGV4IGM0ODVjNGMuLjM1NWYzOTEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnMuaAorKysgYi9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmgKQEAgLTUsNSArNSw2IEBACiBjb25maWdfZXhjbHVkZSh0YXJnZXQvdGFyZ2V0X2NvdW50ZXJzKQogCiB2b2lkICAgICAgICAgICAgaW5pdF90YXJnZXRfY291bnRlcnModm9pZCk7CisKIE5ldHNubXBfTm9kZV9IYW5kbGVyIGdldF91bmF2YWlsYWJsZV9jb250ZXh0X2NvdW50OwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgZ2V0X3Vua25vd25fY29udGV4dF9jb3VudDsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmMgYi9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5jCmluZGV4IDdiZTdkZTMuLmEzMjIwN2IgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUuYwpAQCAtMSw1ICsxLDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKICNpZiBIQVZFX1NUUklOR19ICiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjZWxzZQpAQCAtMTMsNiArMTUsOCBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmg+CiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGhlbHBlcl9zdGF0aXN0aWNzKQorCiB2b2lkCiBpbml0X3RhcmdldF9jb3VudGVyc181XzUodm9pZCkKIHsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubi5oIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uLmgKaW5kZXggMGYzOWE3Zi4uMGMxM2EwZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uLmgKQEAgLTIzLDcgKzIzLDcgQEAKIGNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlKQogI2VsaWYgZGVmaW5lZCggc29sYXJpczIgKQogY29uZmlnX3JlcXVpcmUodGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX3NvbGFyaXMyKQotI2VsaWYgZGVmaW5lZChmcmVlYnNkNCkgfHwgZGVmaW5lZChkcmFnb25mbHkpCisjZWxpZiBkZWZpbmVkKGZyZWVic2Q0KSB8fCBkZWZpbmVkKGRyYWdvbmZseSkgfHwgZGVmaW5lZChkYXJ3aW4pCiBjb25maWdfcmVxdWlyZSh0Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fZnJlZWJzZDQpCiAjZWxpZiBkZWZpbmVkKG9wZW5ic2Q0KQogY29uZmlnX3JlcXVpcmUodGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX29wZW5ic2QpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fY29tbW9uLmMgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fY29tbW9uLmMKaW5kZXggZTlmMmI4Zi4uYmJhMDFmZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2NvbW1vbi5jCisrKyBiL2FnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9jb21tb24uYwpAQCAtMTY0LDYgKzE2NCwxMyBAQAogICAgIGZyZWUoZW50cnkpOwogfQogCisjaWZkZWYgVENQQ09OTl9ERUxFVEVfU1VQUE9SVEVECisKKy8qIFhYWCBUT0RPOiB0aGVzZSBhcmUgY3VycmVudGx5IHVuc3VwcG9ydGVkIGV2ZXJ5d2hlcmU7IHRvIGVuYWJsZSB0aGUKKyAgIGZ1bmN0aW9ucyBmaXJzdCBpbXBsZW1lbnQgbmV0c25tcF9hcmNoX3RjcGNvbm5fZW50cnlfZGVsZXRlIGluIHRoZQorICAgdGNwQ29ubl97T1N9LmMgZmlsZSBhbmQgdGhlbiBkZWZpbmUgVENQQ09OTl9ERUxFVEVfU1VQUE9SVEVEIGluIHRoZQorICAgdGNwQ29ubl97T1N9LmggZmlsZSAod2hpY2ggbWF5IG5lZWQgdG8gYmUgY3JlYXRlZCBmaXJzdCkuICovCisKIC8qKgogICogdXBkYXRlIHVuZGVybHlpbmcgZGF0YSBzdG9yZSAoa2VybmVsKSBmb3IgZW50cnkKICAqCkBAIC0xOTMsNiArMjAwLDcgQEAKICAgICAKICAgICByZXR1cm4gcmM7CiB9CisjZW5kaWYgLyogVENQQ09OTl9ERUxFVEVfU1VQUE9SVEVEICovCiAKIC8qKgogICogdXBkYXRlIGFuIG9sZCB0Y3Bjb25uX2VudHJ5IGZyb20gYSBuZXcgb25lCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fbGludXguYyBiL2FnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9saW51eC5jCmluZGV4IDJiZjU4OGEuLjVmOTNiZTAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9saW51eC5jCkBAIC01Niw2ICs1Niw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKyNpZmRlZiBUQ1BDT05OX0RFTEVURV9TVVBQT1JURUQKIC8qCiAgKiBkZWxldGUgYW4gZW50cnkKICAqLwpAQCAtNjcsNyArNjgsNyBAQAogICAgIC8qKiB4eHgtcmtzOjkgdGNwQ29ubiBkZWxldGUgbm90IGltcGxlbWVudGVkICovCiAgICAgcmV0dXJuIC0xOwogfQotCisjZW5kaWYgLyogVENQQ09OTl9ERUxFVEVfU1VQUE9SVEVEICovCiAKIC8qKgogICoKQEAgLTgzLDYgKzg0LDkgQEAKICAgICBERUJVR01TR1RMKCgiYWNjZXNzOnRjcGNvbm46Y29udGFpbmVyIiwKICAgICAgICAgICAgICAgICAidGNwY29ubl9jb250YWluZXJfYXJjaF9sb2FkIChmbGFncyAleClcbiIsIGxvYWRfZmxhZ3MpKTsKIAorICAgIC8qIFNldHVwIHRoZSBwaWRfZnJvbV9pbm9kZSB0YWJsZSwgYW5kIGZpbGwgaXQuKi8KKyAgICBuZXRzbm1wX2dldF9waWRfZnJvbV9pbm9kZV9pbml0KCk7CisKICAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIm5vIGNvbnRhaW5lciBzcGVjaWZpZWQvZm91bmQgZm9yIGFjY2Vzc190Y3Bjb25uXG4iKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTg0LDcgKzE4OCw3IEBACiAgICAgICAgIGVudHJ5LT5ybXRfcG9ydCA9ICh1bnNpZ25lZCBzaG9ydCkgcmVtb3RlX3BvcnQ7CiAgICAgICAgIGVudHJ5LT50Y3BDb25uU3RhdGUgPSBzdGF0ZTsKICAgICAgICAgZW50cnktPnBpZCA9IG5ldHNubXBfZ2V0X3BpZF9mcm9tX2lub2RlKGlub2RlKTsKLSAgICAgICAgCisKICAgICAgICAgLyoqIHRoZSBhZGRyIHN0cmluZyBtYXkgbmVlZCB3b3JrICovCiAgICAgICAgIGJ1Zl9sZW4gPSBzdHJsZW4obG9jYWxfYWRkcik7CiAgICAgICAgIGlmICgoOCAhPSBidWZfbGVuKSB8fApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX3NvbGFyaXMyLmMgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fc29sYXJpczIuYwppbmRleCA5NTlkNzA4Li44ODkyOTlhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fc29sYXJpczIuYworKysgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fc29sYXJpczIuYwpAQCAtMzksNiArMzksNyBAQAogICAgIHJldHVybiAwOwogfQogCisjaWZkZWYgVENQQ09OTl9ERUxFVEVfU1VQUE9SVEVECiBpbnQgCiBuZXRzbm1wX2FyY2hfdGNwY29ubl9lbnRyeV9kZWxldGUobmV0c25tcF90Y3Bjb25uX2VudHJ5ICplcCkKIHsKQEAgLTQ3LDYgKzQ4LDcgQEAKICAgICAgKi8KICAgICByZXR1cm4gKC0xKTsKIH0KKyNlbmRpZiAvKiBUQ1BDT05OX0RFTEVURV9TVVBQT1JURUQgKi8KIAogaW50IAogbmV0c25tcF9hcmNoX3RjcGNvbm5fY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIsIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2ludGVyZmFjZS5jCmluZGV4IGQxYzJmYjMuLmQwYjI3ZTUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfaW50ZXJmYWNlLmMKQEAgLTMwLDYgKzMwLDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTQ2LDYgKzQ3LDE4IEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGNwQ29ubmVjdGlvblRhYmxlX2V4dGVybmFsX2FjY2VzcywgbGlibmV0c25tcG1pYnMpCisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHJvd19tZXJnZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGJhYnlfc3RlcHMpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19hbGxfcmVxdWVzdHNfZXJyb3IpCisKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRjcENvbm5lY3Rpb25UYWJsZV9jb250YWluZXJfc2l6ZSwgdGNwQ29ubmVjdGlvblRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0Y3BDb25uZWN0aW9uVGFibGVfcmVnaXN0cmF0aW9uX3NldCwgdGNwQ29ubmVjdGlvblRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0Y3BDb25uZWN0aW9uVGFibGVfcmVnaXN0cmF0aW9uX2dldCwgdGNwQ29ubmVjdGlvblRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0Y3BDb25uZWN0aW9uVGFibGVfY29udGFpbmVyX2dldCwgdGNwQ29ubmVjdGlvblRhYmxlX2V4dGVybmFsX2FjY2VzcykKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqCkBAIC04MiwxOSArOTUsMjMgQEAKICAgICAgICAgICAgICAgICBfdGNwQ29ubmVjdGlvblRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bih0Y3BDb25uZWN0aW9uVGFibGVfaW50ZXJmYWNlX2N0eCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZfY3R4KTsKIAotCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVENQQ09OTkVDVElPTlRBQkxFX0NPTlRBSU5FUl9HRVQKIG5ldHNubXBfY29udGFpbmVyICoKIHRjcENvbm5lY3Rpb25UYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIHRjcENvbm5lY3Rpb25UYWJsZV9pZl9jdHguY29udGFpbmVyOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVENQQ09OTkVDVElPTlRBQkxFX0NPTlRBSU5FUl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RDUENPTk5FQ1RJT05UQUJMRV9SRUdJU1RSQVRJT05fR0VUCiB0Y3BDb25uZWN0aW9uVGFibGVfcmVnaXN0cmF0aW9uICoKIHRjcENvbm5lY3Rpb25UYWJsZV9yZWdpc3RyYXRpb25fZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIHRjcENvbm5lY3Rpb25UYWJsZV9pZl9jdHgudXNlcl9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BDT05ORUNUSU9OVEFCTEVfUkVHSVNUUkFUSU9OX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVENQQ09OTkVDVElPTlRBQkxFX1JFR0lTVFJBVElPTl9TRVQKIHRjcENvbm5lY3Rpb25UYWJsZV9yZWdpc3RyYXRpb24gKgogdGNwQ29ubmVjdGlvblRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQodGNwQ29ubmVjdGlvblRhYmxlX3JlZ2lzdHJhdGlvbiAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdyZWcpCkBAIC0xMDQsMTIgKzEyMSwxNSBAQAogICAgIHRjcENvbm5lY3Rpb25UYWJsZV9pZl9jdHgudXNlcl9jdHggPSBuZXdyZWc7CiAgICAgcmV0dXJuIG9sZDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RDUENPTk5FQ1RJT05UQUJMRV9SRUdJU1RSQVRJT05fU0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BDT05ORUNUSU9OVEFCTEVfQ09OVEFJTkVSX1NJWkUKIGludAogdGNwQ29ubmVjdGlvblRhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpCiB7CiAgICAgcmV0dXJuIENPTlRBSU5FUl9TSVpFKHRjcENvbm5lY3Rpb25UYWJsZV9pZl9jdHguY29udGFpbmVyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RDUENPTk5FQ1RJT05UQUJMRV9DT05UQUlORVJfU0laRSAqLwogCiB1X2ludAogdGNwQ29ubmVjdGlvblRhYmxlX2RpcnR5X2dldCh2b2lkKQpAQCAtMTMzLDcgKzE1Myw3IEBACiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF90Y3BDb25uZWN0aW9uVGFibGVfcG9zdF9yZXF1ZXN0Owogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfdGNwQ29ubmVjdGlvblRhYmxlX29iamVjdF9sb29rdXA7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF90Y3BDb25uZWN0aW9uVGFibGVfZ2V0X3ZhbHVlczsKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfdGNwQ29ubmVjdGlvblRhYmxlX2NoZWNrX29iamVjdHM7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF90Y3BDb25uZWN0aW9uVGFibGVfdW5kb19zZXR1cDsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX3RjcENvbm5lY3Rpb25UYWJsZV9zZXRfdmFsdWVzOwpAQCAtMTQ4LDcgKzE2OCw3IEBACiAgICAgICAgICAgICAgICAgX3RjcENvbm5lY3Rpb25UYWJsZV91bmRvX2NvbHVtbih0Y3BDb25uZWN0aW9uVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyLCBpbnQgY29sdW1uKTsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogLyoqCiAgKiBAaW50ZXJuYWwKQEAgLTIzMiw4ICsyNTIsNyBAQAogICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0ID0KICAgICAgICAgX21mZF90Y3BDb25uZWN0aW9uVGFibGVfcG9zdF9yZXF1ZXN0OwogCi0KLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogICAgIC8qCiAgICAgICogUkVRVUlSRUQgd3JhcHBlcnMgZm9yIHNldCByZXF1ZXN0IGhhbmRsaW5nCiAgICAgICovCkBAIC0yNTgsNyArMjc3LDcgQEAKICAgICAgKi8KICAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPmNvbnNpc3RlbmN5X2NoZWNrcyA9CiAgICAgICAgIF9tZmRfdGNwQ29ubmVjdGlvblRhYmxlX2NoZWNrX2RlcGVuZGVuY2llczsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICAgICoKQEAgLTI3Myw3ICsyOTIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3BDb25uZWN0aW9uVGFibGVfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3BDb25uZWN0aW9uVGFibGVfb2lkX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX0JBQllfU1RFUAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEhBTkRMRVJfQ0FOX1JXUklURQogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwpAQCAtMjk0LDcgKzMxMyw3IEBACiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0KQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BPU1RfUkVRVUVTVDsKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+c2V0X3ZhbHVlcykKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9TRVRfVkFMVUVTOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmlycmV2ZXJzaWJsZV9jb21taXQpCkBAIC0zMTcsNyArMzM2LDcgQEAKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DT01NSVQ7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DT01NSVQ7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICBoYW5kbGVyID0gbmV0c25tcF9iYWJ5X3N0ZXBzX2hhbmRsZXJfZ2V0KG1mZF9tb2Rlcyk7CiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKQEAgLTk5MCw3ICsxMDA5LDcgQEAKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF90Y3BDb25uZWN0aW9uVGFibGVfZ2V0X3ZhbHVlcyAqLwogCiAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogU0VUIHByb2Nlc3NpbmcKQEAgLTE2MTgsNyArMTYzNyw3IEBACiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF90Y3BDb25uZWN0aW9uVGFibGVfaXJyZXZlcnNpYmxlX2NvbW1pdCAqLwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0xNzc1LDYgKzE3OTQsNyBAQAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfdGNwQ29ubmVjdGlvblRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BDT05ORUNUSU9OVEFCTEVfRVhURVJOQUxfQUNDRVNTCiB0Y3BDb25uZWN0aW9uVGFibGVfcm93cmVxX2N0eCAqCiB0Y3BDb25uZWN0aW9uVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4KHRjcENvbm5lY3Rpb25UYWJsZV9taWJfaW5kZXggKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWJfaWR4KQpAQCAtMTgwMiwzICsxODIyLDQgQEAKIAogICAgIHJldHVybiByb3dyZXFfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVENQQ09OTkVDVElPTlRBQkxFX0VYVEVSTkFMX0FDQ0VTUyAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfaW50ZXJmYWNlLmMgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9pbnRlcmZhY2UuYwppbmRleCBhNWM5NTEwLi4yZTQxMzgwIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9pbnRlcmZhY2UuYwpAQCAtMzAsNiArMzAsNyBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtNDYsNiArNDcsMTggQEAKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0Y3BMaXN0ZW5lclRhYmxlX2V4dGVybmFsX2FjY2VzcywgbGlibmV0c25tcG1pYnMpCisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHJvd19tZXJnZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGJhYnlfc3RlcHMpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19hbGxfcmVxdWVzdHNfZXJyb3IpCisKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRjcExpc3RlbmVyVGFibGVfY29udGFpbmVyX3NpemUsIHRjcExpc3RlbmVyVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRjcExpc3RlbmVyVGFibGVfcmVnaXN0cmF0aW9uX3NldCwgdGNwTGlzdGVuZXJUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGNwTGlzdGVuZXJUYWJsZV9yZWdpc3RyYXRpb25fZ2V0LCB0Y3BMaXN0ZW5lclRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0Y3BMaXN0ZW5lclRhYmxlX2NvbnRhaW5lcl9nZXQsIHRjcExpc3RlbmVyVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioKQEAgLTc5LDE5ICs5MiwyMyBAQAogICAgICAgICAgICAgICAgIF90Y3BMaXN0ZW5lclRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bih0Y3BMaXN0ZW5lclRhYmxlX2ludGVyZmFjZV9jdHggKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZl9jdHgpOwogCi0KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BMSVNURU5FUlRBQkxFX0NPTlRBSU5FUl9HRVQKIG5ldHNubXBfY29udGFpbmVyICoKIHRjcExpc3RlbmVyVGFibGVfY29udGFpbmVyX2dldCh2b2lkKQogewogICAgIHJldHVybiB0Y3BMaXN0ZW5lclRhYmxlX2lmX2N0eC5jb250YWluZXI7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BMSVNURU5FUlRBQkxFX0NPTlRBSU5FUl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RDUExJU1RFTkVSVEFCTEVfUkVHSVNUUkFUSU9OX0dFVAogdGNwTGlzdGVuZXJUYWJsZV9yZWdpc3RyYXRpb24gKgogdGNwTGlzdGVuZXJUYWJsZV9yZWdpc3RyYXRpb25fZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIHRjcExpc3RlbmVyVGFibGVfaWZfY3R4LnVzZXJfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVENQTElTVEVORVJUQUJMRV9SRUdJU1RSQVRJT05fR0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BMSVNURU5FUlRBQkxFX1JFR0lTVFJBVElPTl9TRVQKIHRjcExpc3RlbmVyVGFibGVfcmVnaXN0cmF0aW9uICoKIHRjcExpc3RlbmVyVGFibGVfcmVnaXN0cmF0aW9uX3NldCh0Y3BMaXN0ZW5lclRhYmxlX3JlZ2lzdHJhdGlvbiAqIG5ld3JlZykKIHsKQEAgLTk5LDEyICsxMTYsMTUgQEAKICAgICB0Y3BMaXN0ZW5lclRhYmxlX2lmX2N0eC51c2VyX2N0eCA9IG5ld3JlZzsKICAgICByZXR1cm4gb2xkOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVENQTElTVEVORVJUQUJMRV9SRUdJU1RSQVRJT05fU0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BMSVNURU5FUlRBQkxFX0NPTlRBSU5FUl9TSVpFCiBpbnQKIHRjcExpc3RlbmVyVGFibGVfY29udGFpbmVyX3NpemUodm9pZCkKIHsKICAgICByZXR1cm4gQ09OVEFJTkVSX1NJWkUodGNwTGlzdGVuZXJUYWJsZV9pZl9jdHguY29udGFpbmVyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RDUExJU1RFTkVSVEFCTEVfQ09OVEFJTkVSX1NJWkUgKi8KIAogLyoKICAqIG1mZCBtdWx0aXBsZXhlciBtb2RlcwpAQCAtMjIwLDcgKzI0MCw4IEBACiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0KQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BPU1RfUkVRVUVTVDsKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCisgICAgLyogWFhYIC0gYXJlIHRoZXNlIGFjdHVhbGx5IG5lY2Vzc2FyeT8gKi8KICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5zZXRfdmFsdWVzKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1NFVF9WQUxVRVM7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+aXJyZXZlcnNpYmxlX2NvbW1pdCkKQEAgLTI0Myw3ICsyNjQsNyBAQAogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NPTU1JVDsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NvbW1pdCkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX0NPTU1JVDsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOwpAQCAtOTU3LDYgKzk3OCw3IEBACiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF90Y3BMaXN0ZW5lclRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BMSVNURU5FUlRBQkxFX0VYVEVSTkFMX0FDQ0VTUwogdGNwTGlzdGVuZXJUYWJsZV9yb3dyZXFfY3R4ICoKIHRjcExpc3RlbmVyVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4KHRjcExpc3RlbmVyVGFibGVfbWliX2luZGV4ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pYl9pZHgpCkBAIC05ODQsMyArMTAwNiw0IEBACiAKICAgICByZXR1cm4gcm93cmVxX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RDUExJU1RFTkVSVEFCTEVfRVhURVJOQUxfQUNDRVNTICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90ZXN0aGFuZGxlci5jIGIvYWdlbnQvbWliZ3JvdXAvdGVzdGhhbmRsZXIuYwppbmRleCAxOTNjYTE3Li44OTUxMzE5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90ZXN0aGFuZGxlci5jCisrKyBiL2FnZW50L21pYmdyb3VwL3Rlc3RoYW5kbGVyLmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2lmZGVmIEhBVkVfU1RETElCX0gKICNpbmNsdWRlIDxzdGRsaWIuaD4KQEAgLTksNiArMTAsMTEgQEAKICNpbmNsdWRlIDxzdHJpbmdzLmg+CiAjZW5kaWYKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodWxvbmdfaW5zdGFuY2UpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyZWdpc3Rlcl9yZWFkX29ubHlfdGFibGVfZGF0YSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2J1aWxkX3Jlc3VsdCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2RhdGFzZXQpCisKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTMyOSw2ICszMzUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSAmIGFjY2Vzc2VzLCBzaXplb2YoYWNjZXNzZXMpKTsKICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICAgICAgaWYgKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnR5cGUgIT0gQVNOX1VOU0lHTkVEKQogICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywKQEAgLTM3Miw2ICszNzksNyBAQAogICAgICAgICAgKiBub3RoaW5nIHRvIGRvIAogICAgICAgICAgKi8KICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgfQogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQWRkclRhYmxlL3NubXBUbHN0bUFkZHJUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUFkZHJUYWJsZS9zbm1wVGxzdG1BZGRyVGFibGUuYwppbmRleCBlZGE2NGYzLi41NDkzZmY5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQWRkclRhYmxlL3NubXBUbHN0bUFkZHJUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1BZGRyVGFibGUvc25tcFRsc3RtQWRkclRhYmxlLmMKQEAgLTQsNiArNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG9wZW5zc2wvc3NsLmg+CkBAIC0xMiw2ICsxMywxNyBAQAogI2luY2x1ZGUgInRsc3RtLW1pYi5oIgogI2luY2x1ZGUgInNubXBUbHN0bUFkZHJUYWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRsc3RtYWRkcl9jb250YWluZXIpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YV9kZWxldGVfdGFibGUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YV9leHRyYWN0X3RhYmxlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGFfcmVtb3ZlX3JvdykKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl9zdG9yYWdldHlwZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGFfaW5zZXJ0X3JvdykKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogLyoqIFhYWCAtIG1vdmUgdGhlc2UgdG8gdGFibGVfZGF0YSBoZWFkZXI/ICovCiAjZGVmaW5lIEZBVEVfTkVXTFlfQ1JFQVRFRCAgICAxCiAjZGVmaW5lIEZBVEVfTk9fQ0hBTkdFICAgICAgICAwCkBAIC0xOTgsNyArMjEwLDcgQEAKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBjcmVhdGUgaGFuZGxlciBmb3Igc25tcFRsc3RtQWRkclRhYmxlTGFzdENoYW5nZWRcbiIpOwogICAgIGVsc2UKLSAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcihyZWcsIHdhdGNoZXIpOworICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyMihyZWcsIHdhdGNoZXIpOwogCiAgICAgLyoKICAgICAgKiBJbml0aWFsaXNlIHRoZSBjb250ZW50cyBvZiB0aGUgdGFibGUgaGVyZSAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1DZXJ0VG9UU05UYWJsZS9zbm1wVGxzdG1DZXJ0VG9UU05UYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlLmMKaW5kZXggM2Y3OTE5Ny4uODRkMWFmYiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlLmMKQEAgLTQsNiArNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG9wZW5zc2wvc3NsLmg+CkBAIC0xMiw2ICsxMywxOSBAQAogI2luY2x1ZGUgInRsc3RtLW1pYi5oIgogI2luY2x1ZGUgInNubXBUbHN0bUNlcnRUb1RTTlRhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2VydF9maW5nZXJwcmludHMpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YV9kZWxldGVfdGFibGUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YV9leHRyYWN0X3RhYmxlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGFfcmVtb3ZlX3JvdykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRsc19maW5nZXJwcmludF9idWlsZCkKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl9zdG9yYWdldHlwZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfcm93c3RhdHVzX3dpdGhfc3RvcmFnZXR5cGUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YV9pbnNlcnRfcm93KQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAvKiogWFhYIC0gbW92ZSB0aGVzZSB0byB0YWJsZV9kYXRhIGhlYWRlcj8gKi8KICNkZWZpbmUgRkFURV9ORVdMWV9DUkVBVEVEICAgIDEKICNkZWZpbmUgRkFURV9OT19DSEFOR0UgICAgICAgIDAKQEAgLTIwNSw3ICsyMTksNyBAQAogICAgIGVsc2UgewogICAgICAgICBpZiAoTlVMTCAhPSBjb250ZXh0TmFtZSkKICAgICAgICAgICAgIHJlZy0+Y29udGV4dE5hbWUgPSBzdHJkdXAoY29udGV4dE5hbWUpOwotICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKHJlZywgd2F0Y2hlcik7CisgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIyKHJlZywgd2F0Y2hlcik7CiAgICAgfQogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1QYXJhbXNUYWJsZS9zbm1wVGxzdG1QYXJhbXNUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bVBhcmFtc1RhYmxlL3NubXBUbHN0bVBhcmFtc1RhYmxlLmMKaW5kZXggYTgzNTUzMy4uY2Q1NDQ1MiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bVBhcmFtc1RhYmxlL3NubXBUbHN0bVBhcmFtc1RhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bVBhcmFtc1RhYmxlL3NubXBUbHN0bVBhcmFtc1RhYmxlLmMKQEAgLTQsNiArNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC0xNCw2ICsxNSwyMCBAQAogCiAjaW5jbHVkZSAic25tcFRsc3RtUGFyYW1zVGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGEpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0bHN0bXBhcmFtc19maW5kKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGxzdG1wYXJhbXNfZXh0ZXJuYWwpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjZXJ0X2ZpbmdlcnByaW50cykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhX2RlbGV0ZV90YWJsZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhX2V4dHJhY3RfdGFibGUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YV9yZW1vdmVfcm93KQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3N0b3JhZ2V0eXBlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl9yb3dzdGF0dXNfd2l0aF9zdG9yYWdldHlwZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhX2luc2VydF9yb3cpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKIC8qKiBYWFggLSBtb3ZlIHRoZXNlIHRvIHRhYmxlX2RhdGEgaGVhZGVyPyAqLwogI2RlZmluZSBGQVRFX05FV0xZX0NSRUFURUQgICAgMQogI2RlZmluZSBGQVRFX05PX0NIQU5HRSAgICAgICAgMApAQCAtMTY3LDcgKzE4Miw3IEBACiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCiAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgY3JlYXRlIGhhbmRsZXIgZm9yIHNubXBUbHN0bVBhcmFtc1RhYmxlTGFzdENoYW5nZWRcbiIpOwogICAgIGVsc2UKLSAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcihyZWcsIHdhdGNoZXIpOworICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyMihyZWcsIHdhdGNoZXIpOwogCiAgICAgLyoKICAgICAgKiBJbml0aWFsaXNlIHRoZSBjb250ZW50cyBvZiB0aGUgdGFibGUgaGVyZQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdHNtLW1pYi9zbm1wVHNtU3RhdHMvc25tcFRzbVN0YXRzLmMgYi9hZ2VudC9taWJncm91cC90c20tbWliL3NubXBUc21TdGF0cy9zbm1wVHNtU3RhdHMuYwppbmRleCA2ZTFiNzk2Li5hNTY3ZDJlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90c20tbWliL3NubXBUc21TdGF0cy9zbm1wVHNtU3RhdHMuYworKysgYi9hZ2VudC9taWJncm91cC90c20tbWliL3NubXBUc21TdGF0cy9zbm1wVHNtU3RhdHMuYwpAQCAtMyw2ICszLDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oPgpAQCAtMTAsNiArMTEsMTAgQEAKIAogc3RhdGljIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24qIF9teXJlZyA9IE5VTEw7CiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGhlbHBlcl9zdGF0aXN0aWNzKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc2h1dGRvd25fc25tcHRzbXNlc3Npb24sIG5ldHNubXBfdW51c2VkKQorCiAvKiogSW5pdGlhbGl6ZXMgdGhlIHNubXBUc21TdGF0cyBtb2R1bGUgKi8KIHZvaWQKIGluaXRfc25tcFRzbVN0YXRzKHZvaWQpCkBAIC0zNiw2ICs0MSw3IEBACiAgICAgfQogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU0hVVERPV05fU05NUFRTTVNFU1NJT04KIHZvaWQKIHNodXRkb3duX3NubXBUc21TZXNzaW9uKHZvaWQpCiB7CkBAIC00NCwzICs1MCw0IEBACiAgICAgICAgIF9teXJlZyA9IE5VTEw7CiAgICAgfQogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU0hVVERPV05fU05NUFRTTVNFU1NJT04gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYwppbmRleCAzMjRmYmM0Li4xMTQ3ZWVmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jCkBAIC01NjgsNyArNTY4LDYgQEAKICAgRklMRSAgICAgICAgICAgKm1udGZwOwogI2VsaWYgSEFWRV9GU1RBQl9ICiAgIHN0cnVjdCBmc3RhYiAgICpmc3RhYjsKLSAgc3RydWN0IHN0YXQgICAgIHN0YXQxOwogI2VsaWYgSEFWRV9TVEFURlMKICAgc3RydWN0IHN0YXRmcyAgIHN0YXRmOwogI2VuZGlmCkBAIC02MjIsNyArNjIxLDYgQEAKICAgICBzdHJsY3B5KGRldmljZSwgbW50dGFiLm1udF9zcGVjaWFsLCBzaXplb2YoZGV2aWNlKSk7CiAjZW5kaWYgLyogSEFWRV9TRVRNTlRFTlQgKi8KICNlbGlmIEhBVkVfRlNUQUJfSAotICBzdGF0KHBhdGgsICZzdGF0MSk7CiAgIHNldGZzZW50KCk7CiAgIGlmICgoZnN0YWIgPSBnZXRmc2ZpbGUocGF0aCkpKQogICAgIHN0cmxjcHkoZGV2aWNlLCBmc3RhYi0+ZnNfc3BlYywgc2l6ZW9mKGRldmljZSkpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza19ody5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza19ody5jCmluZGV4IDkzZWNkZTMuLmVhMzc2MTAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tfaHcuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrX2h3LmMKQEAgLTMwNSw4ICszMDUsMTEgQEAKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsOwogICAgIHN0YXRpYyBsb25nICAgICBsb25nX3JldDsKICAgICBzdGF0aWMgY2hhciAgICAgZXJybXNnWzMwMF07CisgICAgbmV0c25tcF9jYWNoZSAgKmNhY2hlOwogCi0gICAgbmV0c25tcF9mc3lzX2xvYWQoIE5VTEwsIE5VTEwgKTsgIC8qIFVwZGF0ZSB0aGUgZnN5cyBIL1cgbW9kdWxlICovCisgICAgLyogVXBkYXRlIHRoZSBmc3lzIEgvVyBtb2R1bGUgKi8KKyAgICBjYWNoZSA9IG5ldHNubXBfZnN5c19nZXRfY2FjaGUoKTsKKyAgICBuZXRzbm1wX2NhY2hlX2NoZWNrX2FuZF9yZWxvYWQoY2FjaGUpOwogCiB0cnlBZ2FpbjoKICAgICBpZiAoaGVhZGVyX3NpbXBsZV90YWJsZQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza19ody5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza19ody5oCmluZGV4IDE0N2I5OGYuLmZmNDJlZDkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tfaHcuaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrX2h3LmgKQEAgLTgsNiArOCw3IEBACiB2b2lkICAgICAgICAgICAgaW5pdF9kaXNrX2h3KHZvaWQpOwogCiBjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUpCitjb25maWdfcmVxdWlyZShoYXJkd2FyZS9mc3lzKQogCiAgICAgIGV4dGVybiBGaW5kVmFyTWV0aG9kIHZhcl9leHRlbnNpYmxlX2Rpc2s7CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jCmluZGV4IDU3YmY4N2UuLjBiNzExZmIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYwpAQCAtMyw2ICszLDcgQEAKICAqCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KICNpZiBIQVZFX1NURExJQl9ICkBAIC0xNCwxNyArMTUsMTAgQEAKICNlbHNlCiAjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2VuZGlmCi0jaWYgSEFWRV9VTklTVERfSAotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2VuZGlmCi0jaW5jbHVkZSA8Y3R5cGUuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAotI2luY2x1ZGUgInN0cnVjdC5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKLQogI2lmIGRlZmluZWQoV0lOMzIpCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2Vsc2UKQEAgLTMyLDczICsyNiwzMyBAQAogI2VuZGlmCiAjaW5jbHVkZSAiZGxtb2QuaCIKIAorI2lmbmRlZiBTTk1QRExNT0RQQVRICisjZGVmaW5lIFNOTVBETE1PRFBBVEggIi91c3IvbG9jYWwvbGliL3NubXAvZGxtb2QiCisjZW5kaWYKKworc3RydWN0IGRsbW9kIHsKKyAgc3RydWN0IGRsbW9kICAgKm5leHQ7CisgIGludCAgICAgICAgICAgICBpbmRleDsKKyAgY2hhciAgICAgICAgICAgIG5hbWVbNjQgKyAxXTsKKyAgY2hhciAgICAgICAgICAgIHBhdGhbMjU1ICsgMV07CisgIGNoYXIgICAgICAgICAgICBlcnJvclsyNTUgKyAxXTsKKyAgdm9pZCAgICAgICAgICAgKmhhbmRsZTsKKyAgaW50ICAgICAgICAgICAgIHN0YXR1czsKK307CisKKyNkZWZpbmUgRExNT0RfTE9BREVECQkxCisjZGVmaW5lIERMTU9EX1VOTE9BREVECQkyCisjZGVmaW5lIERMTU9EX0VSUk9SCQkzCisjZGVmaW5lIERMTU9EX0xPQUQJCTQKKyNkZWZpbmUgRExNT0RfVU5MT0FECQk1CisjZGVmaW5lIERMTU9EX0NSRUFURQkJNgorI2RlZmluZSBETE1PRF9ERUxFVEUJCTcKKwogc3RhdGljIHN0cnVjdCBkbG1vZCAqZGxtb2RzOwogc3RhdGljIHVuc2lnbmVkIGludCBkbG1vZF9uZXh0X2luZGV4ID0gMTsKIHN0YXRpYyBjaGFyICAgICBkbG1vZF9wYXRoWzEwMjRdOwogCi1zdGF0aWMgdm9pZCAgICAgZGxtb2RfcGFyc2VfY29uZmlnKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKLXN0YXRpYyB2b2lkICAgICBkbG1vZF9mcmVlX2NvbmZpZyh2b2lkKTsKLQotLyoKLSAqIHRoaXMgdmFyaWFibGUgZGVmaW5lcyBmdW5jdGlvbiBjYWxsYmFja3MgYW5kIHR5cGUgcmV0dXJuCi0gKiBpbmZvcm1hdGlvbiBmb3IgdGhlIGRsbW9kIG1pYgotICovCi1zdGF0aWMgc3RydWN0IHZhcmlhYmxlNCBkbG1vZF92YXJpYWJsZXNbXSA9IHsKLSAgICB7RExNT0RORVhUSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKLSAgICAgdmFyX2RsbW9kLCAxLCB7MX19LAotICAgIHtETE1PRE5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKLSAgICAgdmFyX2RsbW9kRW50cnksIDMsIHsyLCAxLCAyfX0sCi0gICAge0RMTU9EUEFUSCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAotICAgICB2YXJfZGxtb2RFbnRyeSwgMywgezIsIDEsIDN9fSwKLSAgICB7RExNT0RFUlJPUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCi0gICAgIHZhcl9kbG1vZEVudHJ5LCAzLCB7MiwgMSwgNH19LAotICAgIHtETE1PRFNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKLSAgICAgdmFyX2RsbW9kRW50cnksIDMsIHsyLCAxLCA1fX0sCi19OwotCi1zdGF0aWMgb2lkICAgICAgZGxtb2RfdmFyaWFibGVzX29pZFtdID0geyAxLCAzLCA2LCAxLCA0LCAxLCAyMDIxLCAxMywgMTQgfTsKLXN0YXRpYyBpbnQgICAgICBkbG1vZF92YXJpYWJsZXNfb2lkX2xlbiA9IDk7Ci0KLXZvaWQKLWluaXRfZGxtb2Qodm9pZCkKLXsKLSAgICBSRUdJU1RFUl9NSUIoImRsbW9kIiwgZGxtb2RfdmFyaWFibGVzLCB2YXJpYWJsZTQsIGRsbW9kX3ZhcmlhYmxlc19vaWQpOwotCi0gICAgLyoKLSAgICAgKiBUT0RPOiBSRUdJU1RFUl9TWVNPUl9FTlRSWSAKLSAgICAgKi8KLQotICAgIERFQlVHTVNHVEwoKCJkbG1vZCIsICJyZWdpc3RlciBtaWJcbiIpKTsKLQotICAgIHNubXBkX3JlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJkbG1vZCIsIGRsbW9kX3BhcnNlX2NvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbG1vZF9mcmVlX2NvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlLW5hbWUgbW9kdWxlLXBhdGgiKTsKLQotICAgIHsKLSAgICAgICAgY29uc3QgY2hhciAqIGNvbnN0IHAgPSBnZXRlbnYoIlNOTVBETE1PRFBBVEgiKTsKLSAgICAgICAgc3RybGNweShkbG1vZF9wYXRoLCBTTk1QRExNT0RQQVRILCBzaXplb2YoZGxtb2RfcGF0aCkpOwotICAgICAgICBpZiAocCkgewotICAgICAgICAgICAgaWYgKHBbMF0gPT0gRU5WX1NFUEFSQVRPUl9DSEFSKSB7Ci0gICAgICAgICAgICAgICAgaW50IGxlbiA9IHN0cmxlbihkbG1vZF9wYXRoKTsKLSAgICAgICAgICAgICAgICBpZiAobGVuID49IDEgJiYgZGxtb2RfcGF0aFtsZW4gLSAxXSAhPSBFTlZfU0VQQVJBVE9SX0NIQVIpCi0gICAgICAgICAgICAgICAgICAgIHN0cmxjYXQoZGxtb2RfcGF0aCwgRU5WX1NFUEFSQVRPUiwgc2l6ZW9mKGRsbW9kX3BhdGgpKTsKLSAgICAgICAgICAgICAgICBzdHJsY2F0KGRsbW9kX3BhdGgsIHAgKyAxLCBzaXplb2YoZGxtb2RfcGF0aCkpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgc3RybGNweShkbG1vZF9wYXRoLCBwLCBzaXplb2YoZGxtb2RfcGF0aCkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgREVCVUdNU0dUTCgoImRsbW9kIiwgImRsbW9kX3BhdGg6ICVzXG4iLCBkbG1vZF9wYXRoKSk7Ci19Ci0KLXZvaWQKLWRlaW5pdF9kbG1vZCh2b2lkKQotewotICAgIHVucmVnaXN0ZXJfbWliKGRsbW9kX3ZhcmlhYmxlc19vaWQsIGRsbW9kX3ZhcmlhYmxlc19vaWRfbGVuKTsKLSAgICBzbm1wZF91bnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJkbG1vZCIpOwotfQotCi1zdHJ1Y3QgZGxtb2QgICAqCitzdGF0aWMgc3RydWN0IGRsbW9kICAgKgogZGxtb2RfY3JlYXRlX21vZHVsZSh2b2lkKQogewogICAgIHN0cnVjdCBkbG1vZCAgKipwZGxtb2QsICpkbG07CkBAIC0xMTgsNyArNzIsNyBAQAogICAgIHJldHVybiBkbG07CiB9CiAKLXZvaWQKK3N0YXRpYyB2b2lkCiBkbG1vZF9kZWxldGVfbW9kdWxlKHN0cnVjdCBkbG1vZCAqZGxtKQogewogICAgIHN0cnVjdCBkbG1vZCAgKipwZGxtb2Q7CkBAIC0yMjUsMTQgKzE3OSw5IEBACiAjZW5kaWYKIH0KIAotdm9pZAorc3RhdGljIHZvaWQKIGRsbW9kX2xvYWRfbW9kdWxlKHN0cnVjdCBkbG1vZCAqZGxtKQogewotICAgIGNoYXIgICAgICAgICAgICBzeW1faW5pdFs2NF07Ci0gICAgY2hhciAgICAgICAgICAgKnAsIHRtcF9wYXRoWzI1NV07Ci0gICAgZGxfZnVuY3Rpb25fcHRyIGRsX2luaXQ7Ci0gICAgY2hhciAgICAgICAgICAgKnN0OwotCiAgICAgREVCVUdNU0dUTCgoImRsbW9kIiwgImRsbW9kX2xvYWRfbW9kdWxlICVzOiAlc1xuIiwgZGxtLT5uYW1lLAogICAgICAgICAgICAgICAgIGRsbS0+cGF0aCkpOwogCkBAIC0yNDksNiArMTk4LDggQEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CisgICAgICAgIGNoYXIgKnN0LCAqcCwgdG1wX3BhdGhbMjU1XTsKKwogICAgICAgICBmb3IgKHAgPSBzdHJ0b2tfcihkbG1vZF9wYXRoLCBFTlZfU0VQQVJBVE9SLCAmc3QpOyBwOwogICAgICAgICAgICAgIHAgPSBzdHJ0b2tfcihOVUxMLCBFTlZfU0VQQVJBVE9SLCAmc3QpKSB7CiAgICAgICAgICAgICBzbnByaW50Zih0bXBfcGF0aCwgc2l6ZW9mKHRtcF9wYXRoKSwgIiVzLyVzLiVzIiwgcCwgZGxtLT5wYXRoLApAQCAtMjY1LDI1ICsyMTYsMzAgQEAKICAgICAgICAgaWYgKGRsbS0+c3RhdHVzID09IERMTU9EX0VSUk9SKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBzbnByaW50ZihzeW1faW5pdCwgc2l6ZW9mKHN5bV9pbml0KSwgImluaXRfJXMiLCBkbG0tPm5hbWUpOwotICAgIGRsX2luaXQgPSBkbG1vZF9kbHN5bShkbG0tPmhhbmRsZSwgc3ltX2luaXQpOwotICAgIGlmIChkbF9pbml0ID09IE5VTEwpIHsKLSAgICAgICAgZGxtb2RfZGxjbG9zZShkbG0tPmhhbmRsZSk7Ci0gICAgICAgIHNucHJpbnRmKGRsbS0+ZXJyb3IsIHNpemVvZihkbG0tPmVycm9yKSwKLSAgICAgICAgICAgICAgICAgImRsc3ltIGZhaWxlZDogY2FuJ3QgZmluZCBcJyVzXCciLCBzeW1faW5pdCk7Ci0gICAgICAgIGRsbS0+c3RhdHVzID0gRExNT0RfRVJST1I7Ci0gICAgICAgIHJldHVybjsKKyAgICB7CisgICAgICAgIGNoYXIgc3ltX2luaXRbNjQgKyBzaXplb2YoImluaXRfIildOworICAgICAgICBkbF9mdW5jdGlvbl9wdHIgZGxfaW5pdDsKKworICAgICAgICBzbnByaW50ZihzeW1faW5pdCwgc2l6ZW9mKHN5bV9pbml0KSwgImluaXRfJXMiLCBkbG0tPm5hbWUpOworICAgICAgICBkbF9pbml0ID0gZGxtb2RfZGxzeW0oZGxtLT5oYW5kbGUsIHN5bV9pbml0KTsKKyAgICAgICAgaWYgKGRsX2luaXQgPT0gTlVMTCkgeworICAgICAgICAgICAgZGxtb2RfZGxjbG9zZShkbG0tPmhhbmRsZSk7CisgICAgICAgICAgICBzbnByaW50ZihkbG0tPmVycm9yLCBzaXplb2YoZGxtLT5lcnJvciksCisgICAgICAgICAgICAgICAgICAgICAiZGxzeW0gZmFpbGVkOiBjYW4ndCBmaW5kIFwnJXNcJyIsIHN5bV9pbml0KTsKKyAgICAgICAgICAgIGRsbS0+c3RhdHVzID0gRExNT0RfRVJST1I7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZGxfaW5pdCgpOwogICAgIH0KIAotICAgIGRsX2luaXQoKTsKICAgICBkbG0tPmVycm9yWzBdID0gJ1wwJzsKICAgICBkbG0tPnN0YXR1cyA9IERMTU9EX0xPQURFRDsKIH0KIAotdm9pZAorc3RhdGljIHZvaWQKIGRsbW9kX3VubG9hZF9tb2R1bGUoc3RydWN0IGRsbW9kICpkbG0pCiB7Ci0gICAgY2hhciAgICAgICAgICAgIHN5bV9kZWluaXRbNjRdOworICAgIGNoYXIgICAgICAgICAgICBzeW1fZGVpbml0WzY0ICsgc2l6ZW9mKCJzaHV0ZG93bl8iKV07CiAgICAgZGxfZnVuY3Rpb25fcHRyIGRsX2RlaW5pdDsKIAogICAgIGlmICghZGxtIHx8IGRsbS0+c3RhdHVzICE9IERMTU9EX0xPQURFRCkKQEAgLTI5MSwyNSArMjQ3LDIyIEBACiAKICAgICBzbnByaW50ZihzeW1fZGVpbml0LCBzaXplb2Yoc3ltX2RlaW5pdCksICJkZWluaXRfJXMiLCBkbG0tPm5hbWUpOwogICAgIGRsX2RlaW5pdCA9IGRsbW9kX2Rsc3ltKGRsbS0+aGFuZGxlLCBzeW1fZGVpbml0KTsKLSAgICBpZiAoZGxfZGVpbml0KSB7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJkbG1vZCIsICJDYWxsaW5nIGRlaW5pdF8lcygpXG4iLCBkbG0tPm5hbWUpKTsKLSAgICAgICAgZGxfZGVpbml0KCk7Ci0gICAgfSBlbHNlIHsKKyAgICBpZiAoIWRsX2RlaW5pdCkgewogICAgICAgICBzbnByaW50ZihzeW1fZGVpbml0LCBzaXplb2Yoc3ltX2RlaW5pdCksICJzaHV0ZG93bl8lcyIsIGRsbS0+bmFtZSk7CiAgICAgICAgIGRsX2RlaW5pdCA9IGRsbW9kX2Rsc3ltKGRsbS0+aGFuZGxlLCBzeW1fZGVpbml0KTsKLSAgICAgICAgaWYgKGRsX2RlaW5pdCkgewotICAgICAgICAgICAgREVCVUdNU0dUTCgoImRsbW9kIiwgIkNhbGxpbmcgc2h1dGRvd25fJXMoKVxuIiwgZGxtLT5uYW1lKSk7Ci0gICAgICAgICAgICBkbF9kZWluaXQoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJkbG1vZCIsICJObyBkZXN0cnVjdG9yIGZvciAlc1xuIiwgZGxtLT5uYW1lKSk7Ci0gICAgICAgIH0KKyAgICB9CisgICAgaWYgKGRsX2RlaW5pdCkgeworICAgICAgICBERUJVR01TR1RMKCgiZGxtb2QiLCAiQ2FsbGluZyAlcygpXG4iLCBzeW1fZGVpbml0KSk7CisgICAgICAgIGRsX2RlaW5pdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJkbG1vZCIsICJObyBkZXN0cnVjdG9yIGZvciAlc1xuIiwgZGxtLT5uYW1lKSk7CiAgICAgfQogICAgIGRsbW9kX2RsY2xvc2UoZGxtLT5oYW5kbGUpOwogICAgIGRsbS0+c3RhdHVzID0gRExNT0RfVU5MT0FERUQ7CiAgICAgREVCVUdNU0dUTCgoImRsbW9kIiwgIk1vZHVsZSAlcyB1bmxvYWRlZFxuIiwgZGxtLT5uYW1lKSk7CiB9CiAKLXN0cnVjdCBkbG1vZCAgICoKK3N0YXRpYyBzdHJ1Y3QgZGxtb2QgICAqCiBkbG1vZF9nZXRfYnlfaW5kZXgoaW50IGlpbmRleCkKIHsKICAgICBzdHJ1Y3QgZGxtb2QgICAqZGxtb2Q7CkBAIC0zMjEsNiArMjc0LDEwIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qCisgKiBGdW5jdGlvbnMgdG8gcGFyc2UgY29uZmlnIGxpbmVzCisgKi8KKwogc3RhdGljIHZvaWQKIGRsbW9kX3BhcnNlX2NvbmZpZyhjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0cikKIHsKQEAgLTMzMyw3ICsyOTAsNyBAQAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8qCi0gICAgICogcmVtb3ZlIGNvbW1lbnRzIAorICAgICAqIHJlbW92ZSBjb21tZW50cwogICAgICAqLwogICAgICooY3B0ciArIHN0cmNzcG4oY3B0ciwgIiM7XHJcbiIpKSA9ICdcMCc7CiAKQEAgLTM0Miw3ICsyOTksNyBAQAogICAgICAgICByZXR1cm47CiAKICAgICAvKgotICAgICAqIGR5bmFtaWMgbW9kdWxlIG5hbWUgCisgICAgICogZHluYW1pYyBtb2R1bGUgbmFtZQogICAgICAqLwogICAgIGRsbV9uYW1lID0gc3RydG9rX3IoY3B0ciwgIlx0ICIsICZzdCk7CiAgICAgaWYgKGRsbV9uYW1lID09IE5VTEwpIHsKQEAgLTM1Myw3ICszMTAsNyBAQAogICAgIHN0cmxjcHkoZGxtLT5uYW1lLCBkbG1fbmFtZSwgc2l6ZW9mKGRsbS0+bmFtZSkpOwogCiAgICAgLyoKLSAgICAgKiBkeW5hbWljIG1vZHVsZSBwYXRoIAorICAgICAqIGR5bmFtaWMgbW9kdWxlIHBhdGgKICAgICAgKi8KICAgICBkbG1fcGF0aCA9IHN0cnRva19yKE5VTEwsICJcdCAiLCAmc3QpOwogICAgIGlmIChkbG1fcGF0aCkKQEAgLTM4MSwxMyArMzM4LDIzIEBACiAgICAgZGxtb2RzID0gTlVMTDsKIH0KIAorLyoKKyAqIEZ1bmN0aW9ucyB0byBoYW5kbGUgU05NUCBtYW5hZ2VtZW50CisgKi8KKworI2RlZmluZSBETE1PRE5FWFRJTkRFWCAJCTEKKyNkZWZpbmUgRExNT0RJTkRFWCAgICAgCQkyCisjZGVmaW5lIERMTU9ETkFNRSAgICAgIAkJMworI2RlZmluZSBETE1PRFBBVEggICAgICAJCTQKKyNkZWZpbmUgRExNT0RFUlJPUiAgICAgCQk1CisjZGVmaW5lIERMTU9EU1RBVFVTICAgIAkJNgogCiAvKgogICogaGVhZGVyX2RsbW9kKC4uLgogICogQXJndW1lbnRzOgogICogdnAgICAgIElOICAgICAgLSBwb2ludGVyIHRvIHZhcmlhYmxlIGVudHJ5IHRoYXQgcG9pbnRzIGhlcmUKICAqIG5hbWUgICAgSU4vT1VUICAtIElOL25hbWUgcmVxdWVzdGVkLCBPVVQvbmFtZSBmb3VuZAotICogbGVuZ3RoICBJTi9PVVQgIC0gbGVuZ3RoIG9mIElOL09VVCBvaWQncyAKKyAqIGxlbmd0aCAgSU4vT1VUICAtIGxlbmd0aCBvZiBJTi9PVVQgb2lkJ3MKICAqIGV4YWN0ICAgSU4gICAgICAtIFRSVUUgaWYgYW4gZXhhY3QgbWF0Y2ggd2FzIHJlcXVlc3RlZAogICogdmFyX2xlbiBPVVQgICAgIC0gbGVuZ3RoIG9mIHZhcmlhYmxlIG9yIDAgaWYgZnVuY3Rpb24gcmV0dXJuZWQKICAqIHdyaXRlX21ldGhvZApAQCAtNDE5LDcgKzM4Niw3IEBACiB9CiAKIAotdV9jaGFyICAgICAgICAgKgorc3RhdGljIHVfY2hhciAgICAgICAgICoKIHZhcl9kbG1vZChzdHJ1Y3QgdmFyaWFibGUgKiB2cCwKICAgICAgICAgICBvaWQgKiBuYW1lLAogICAgICAgICAgIHNpemVfdCAqIGxlbmd0aCwKQEAgLTQyNyw3ICszOTQsNyBAQAogewogCiAgICAgLyoKLSAgICAgKiB2YXJpYWJsZXMgd2UgbWF5IHVzZSBsYXRlciAKKyAgICAgKiB2YXJpYWJsZXMgd2UgbWF5IHVzZSBsYXRlcgogICAgICAqLwogCiAgICAgKndyaXRlX21ldGhvZCA9IDA7ICAgICAgICAgLyogYXNzdW1lIGl0IGlzbid0IHdyaXRhYmxlIGZvciB0aGUgdGltZSBiZWluZyAqLwpAQCAtNDM4LDcgKzQwNSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyoKLSAgICAgKiB0aGlzIGlzIHdoZXJlIHdlIGRvIHRoZSB2YWx1ZSBhc3NpZ25tZW50cyBmb3IgdGhlIG1pYiByZXN1bHRzLiAKKyAgICAgKiB0aGlzIGlzIHdoZXJlIHdlIGRvIHRoZSB2YWx1ZSBhc3NpZ25tZW50cyBmb3IgdGhlIG1pYiByZXN1bHRzLgogICAgICAqLwogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7CiAgICAgY2FzZSBETE1PRE5FWFRJTkRFWDoKQEAgLTQ1MiwxNiArNDE5LDEyNyBAQAogfQogCiAKK3N0YXRpYyBpbnQKK3dyaXRlX2RsbW9kTmFtZShpbnQgYWN0aW9uLAorICAgICAgICAgICAgICAgIHVfY2hhciAqIHZhcl92YWwsCisgICAgICAgICAgICAgICAgdV9jaGFyIHZhcl92YWxfdHlwZSwKKyAgICAgICAgICAgICAgICBzaXplX3QgdmFyX3ZhbF9sZW4sCisgICAgICAgICAgICAgICAgdV9jaGFyICogc3RhdFAsIG9pZCAqIG5hbWUsIHNpemVfdCBuYW1lX2xlbikKK3sKKyAgICBzdGF0aWMgc3RydWN0IGRsbW9kICpkbG07CisKKyAgICBpZiAodmFyX3ZhbF90eXBlICE9IEFTTl9PQ1RFVF9TVFIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIndyaXRlIHRvIGRsbW9kTmFtZSBub3QgQVNOX09DVEVUX1NUUlxuIik7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1RZUEU7CisgICAgfQorICAgIGlmICh2YXJfdmFsX2xlbiA+IHNpemVvZihkbG0tPm5hbWUpLTEpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIndyaXRlIHRvIGRsbW9kTmFtZTogYmFkIGxlbmd0aDogdG9vIGxvbmdcbiIpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdMRU5HVEg7CisgICAgfQorICAgIGlmIChhY3Rpb24gPT0gQ09NTUlUKSB7CisgICAgICAgIGRsbSA9IGRsbW9kX2dldF9ieV9pbmRleChuYW1lWzEyXSk7CisgICAgICAgIGlmICghZGxtIHx8IGRsbS0+c3RhdHVzID09IERMTU9EX0xPQURFRCkKKyAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFOworICAgICAgICBzdHJuY3B5KGRsbS0+bmFtZSwgKGNvbnN0IGNoYXIgKikgdmFyX3ZhbCwgdmFyX3ZhbF9sZW4pOworICAgICAgICBkbG0tPm5hbWVbdmFyX3ZhbF9sZW5dID0gMDsKKyAgICB9CisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CisKK3N0YXRpYyBpbnQKK3dyaXRlX2RsbW9kUGF0aChpbnQgYWN0aW9uLAorICAgICAgICAgICAgICAgIHVfY2hhciAqIHZhcl92YWwsCisgICAgICAgICAgICAgICAgdV9jaGFyIHZhcl92YWxfdHlwZSwKKyAgICAgICAgICAgICAgICBzaXplX3QgdmFyX3ZhbF9sZW4sCisgICAgICAgICAgICAgICAgdV9jaGFyICogc3RhdFAsIG9pZCAqIG5hbWUsIHNpemVfdCBuYW1lX2xlbikKK3sKKyAgICBzdGF0aWMgc3RydWN0IGRsbW9kICpkbG07CisKKyAgICBpZiAodmFyX3ZhbF90eXBlICE9IEFTTl9PQ1RFVF9TVFIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIndyaXRlIHRvIGRsbW9kUGF0aCBub3QgQVNOX09DVEVUX1NUUlxuIik7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1RZUEU7CisgICAgfQorICAgIGlmICh2YXJfdmFsX2xlbiA+IHNpemVvZihkbG0tPnBhdGgpLTEpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIndyaXRlIHRvIGRsbW9kUGF0aDogYmFkIGxlbmd0aDogdG9vIGxvbmdcbiIpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdMRU5HVEg7CisgICAgfQorICAgIGlmIChhY3Rpb24gPT0gQ09NTUlUKSB7CisgICAgICAgIGRsbSA9IGRsbW9kX2dldF9ieV9pbmRleChuYW1lWzEyXSk7CisgICAgICAgIGlmICghZGxtIHx8IGRsbS0+c3RhdHVzID09IERMTU9EX0xPQURFRCkKKyAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFOworICAgICAgICBzdHJuY3B5KGRsbS0+cGF0aCwgKGNvbnN0IGNoYXIgKikgdmFyX3ZhbCwgdmFyX3ZhbF9sZW4pOworICAgICAgICBkbG0tPnBhdGhbdmFyX3ZhbF9sZW5dID0gMDsKKyAgICB9CisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CisKK3N0YXRpYyBpbnQKK3dyaXRlX2RsbW9kU3RhdHVzKGludCBhY3Rpb24sCisgICAgICAgICAgICAgICAgICB1X2NoYXIgKiB2YXJfdmFsLAorICAgICAgICAgICAgICAgICAgdV9jaGFyIHZhcl92YWxfdHlwZSwKKyAgICAgICAgICAgICAgICAgIHNpemVfdCB2YXJfdmFsX2xlbiwKKyAgICAgICAgICAgICAgICAgIHVfY2hhciAqIHN0YXRQLCBvaWQgKiBuYW1lLCBzaXplX3QgbmFtZV9sZW4pCit7CisgICAgLyoKKyAgICAgKiB2YXJpYWJsZXMgd2UgbWF5IHVzZSBsYXRlcgorICAgICAqLworICAgIHN0cnVjdCBkbG1vZCAgICpkbG07CisKKyAgICBpZiAodmFyX3ZhbF90eXBlICE9IEFTTl9JTlRFR0VSKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ3cml0ZSB0byBkbG1vZFN0YXR1cyBub3QgQVNOX0lOVEVHRVJcbiIpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdUWVBFOworICAgIH0KKyAgICBpZiAodmFyX3ZhbF9sZW4gPiBzaXplb2YobG9uZykpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIndyaXRlIHRvIGRsbW9kU3RhdHVzOiBiYWQgbGVuZ3RoXG4iKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HTEVOR1RIOworICAgIH0KKyAgICBpZiAoYWN0aW9uID09IENPTU1JVCkgeworICAgICAgICAvKgorICAgICAgICAgKiBvYmplY3QgaWRlbnRpZmllciBpbiBmb3JtIC4xLjMuNi4xLjQuMS4yMDIxLjEzLjE0LjIuMS40LngKKyAgICAgICAgICogd2hlcmUgWCBpcyBpbmRleCB3aXRoIG9mZnNldCAxMgorICAgICAgICAgKi8KKworICAgICAgICBkbG0gPSBkbG1vZF9nZXRfYnlfaW5kZXgobmFtZVsxMl0pOworICAgICAgICBzd2l0Y2ggKCooKGxvbmcgKikgdmFyX3ZhbCkpIHsKKyAgICAgICAgY2FzZSBETE1PRF9DUkVBVEU6CisgICAgICAgICAgICBpZiAoZGxtIHx8IChuYW1lWzEyXSAhPSBkbG1vZF9uZXh0X2luZGV4KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRTsKKyAgICAgICAgICAgIGRsbSA9IGRsbW9kX2NyZWF0ZV9tb2R1bGUoKTsKKyAgICAgICAgICAgIGlmICghZGxtKQorICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRExNT0RfTE9BRDoKKyAgICAgICAgICAgIGlmICghZGxtIHx8IGRsbS0+c3RhdHVzID09IERMTU9EX0xPQURFRCkKKyAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRTsKKyAgICAgICAgICAgIGRsbW9kX2xvYWRfbW9kdWxlKGRsbSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBETE1PRF9VTkxPQUQ6CisgICAgICAgICAgICBpZiAoIWRsbSB8fCBkbG0tPnN0YXR1cyAhPSBETE1PRF9MT0FERUQpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEU7CisgICAgICAgICAgICBkbG1vZF91bmxvYWRfbW9kdWxlKGRsbSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBETE1PRF9ERUxFVEU6CisgICAgICAgICAgICBpZiAoIWRsbSB8fCBkbG0tPnN0YXR1cyA9PSBETE1PRF9MT0FERUQpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEU7CisgICAgICAgICAgICBkbG1vZF9kZWxldGVfbW9kdWxlKGRsbSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1ZBTFVFOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCiAvKgogICogaGVhZGVyX2RsbW9kRW50cnkoLi4uCiAgKiBBcmd1bWVudHM6CiAgKiB2cCAgICAgSU4gICAgICAtIHBvaW50ZXIgdG8gdmFyaWFibGUgZW50cnkgdGhhdCBwb2ludHMgaGVyZQogICogbmFtZSAgICBJTi9PVVQgIC0gSU4vbmFtZSByZXF1ZXN0ZWQsIE9VVC9uYW1lIGZvdW5kCi0gKiBsZW5ndGggIElOL09VVCAgLSBsZW5ndGggb2YgSU4vT1VUIG9pZCdzIAorICogbGVuZ3RoICBJTi9PVVQgIC0gbGVuZ3RoIG9mIElOL09VVCBvaWQncwogICogZXhhY3QgICBJTiAgICAgIC0gVFJVRSBpZiBhbiBleGFjdCBtYXRjaCB3YXMgcmVxdWVzdGVkCiAgKiB2YXJfbGVuIE9VVCAgICAgLSBsZW5ndGggb2YgdmFyaWFibGUgb3IgMCBpZiBmdW5jdGlvbiByZXR1cm5lZAogICogd3JpdGVfbWV0aG9kCi0gKiAKKyAqCiAgKi8KIAogCkBAIC01MDksMTQgKzU4NywxNCBAQAogICAgIHJldHVybiBkbG07CiB9CiAKLXVfY2hhciAgICAgICAgICoKK3N0YXRpYyB1X2NoYXIgICAgICAgICAqCiB2YXJfZGxtb2RFbnRyeShzdHJ1Y3QgdmFyaWFibGUgKiB2cCwKICAgICAgICAgICAgICAgIG9pZCAqIG5hbWUsCiAgICAgICAgICAgICAgICBzaXplX3QgKiBsZW5ndGgsCiAgICAgICAgICAgICAgICBpbnQgZXhhY3QsIHNpemVfdCAqIHZhcl9sZW4sIFdyaXRlTWV0aG9kICoqIHdyaXRlX21ldGhvZCkKIHsKICAgICAvKgotICAgICAqIHZhcmlhYmxlcyB3ZSBtYXkgdXNlIGxhdGVyIAorICAgICAqIHZhcmlhYmxlcyB3ZSBtYXkgdXNlIGxhdGVyCiAgICAgICovCiAgICAgc3RydWN0IGRsbW9kICAgKmRsbTsKIApAQCAtNTI4LDcgKzYwNiw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyoKLSAgICAgKiB0aGlzIGlzIHdoZXJlIHdlIGRvIHRoZSB2YWx1ZSBhc3NpZ25tZW50cyBmb3IgdGhlIG1pYiByZXN1bHRzLiAKKyAgICAgKiB0aGlzIGlzIHdoZXJlIHdlIGRvIHRoZSB2YWx1ZSBhc3NpZ25tZW50cyBmb3IgdGhlIG1pYiByZXN1bHRzLgogICAgICAqLwogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7CiAgICAgY2FzZSBETE1PRE5BTUU6CkBAIC01NTMsMTEzICs2MzEsNjYgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotaW50Ci13cml0ZV9kbG1vZE5hbWUoaW50IGFjdGlvbiwKLSAgICAgICAgICAgICAgICB1X2NoYXIgKiB2YXJfdmFsLAotICAgICAgICAgICAgICAgIHVfY2hhciB2YXJfdmFsX3R5cGUsCi0gICAgICAgICAgICAgICAgc2l6ZV90IHZhcl92YWxfbGVuLAotICAgICAgICAgICAgICAgIHVfY2hhciAqIHN0YXRQLCBvaWQgKiBuYW1lLCBzaXplX3QgbmFtZV9sZW4pCisvKgorICogdGhpcyB2YXJpYWJsZSBkZWZpbmVzIGZ1bmN0aW9uIGNhbGxiYWNrcyBhbmQgdHlwZSByZXR1cm4KKyAqIGluZm9ybWF0aW9uIGZvciB0aGUgZGxtb2QgbWliCisgKi8KK3N0YXRpYyBzdHJ1Y3QgdmFyaWFibGU0IGRsbW9kX3ZhcmlhYmxlc1tdID0geworICAgIHtETE1PRE5FWFRJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZGxtb2QsIDEsIHsxfX0sCisgICAge0RMTU9ETkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZGxtb2RFbnRyeSwgMywgezIsIDEsIDJ9fSwKKyAgICB7RExNT0RQQVRILCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9kbG1vZEVudHJ5LCAzLCB7MiwgMSwgM319LAorICAgIHtETE1PREVSUk9SLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2RsbW9kRW50cnksIDMsIHsyLCAxLCA0fX0sCisgICAge0RMTU9EU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZGxtb2RFbnRyeSwgMywgezIsIDEsIDV9fSwKK307CisKK3N0YXRpYyBvaWQgZGxtb2RfdmFyaWFibGVzX29pZFtdID0geyAxLCAzLCA2LCAxLCA0LCAxLCAyMDIxLCAxMywgMTQgfTsKKwordm9pZAoraW5pdF9kbG1vZCh2b2lkKQogewotICAgIHN0YXRpYyBzdHJ1Y3QgZGxtb2QgKmRsbTsKKyAgICBSRUdJU1RFUl9NSUIoImRsbW9kIiwgZGxtb2RfdmFyaWFibGVzLCB2YXJpYWJsZTQsIGRsbW9kX3ZhcmlhYmxlc19vaWQpOwogCi0gICAgaWYgKHZhcl92YWxfdHlwZSAhPSBBU05fT0NURVRfU1RSKSB7Ci0gICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ3cml0ZSB0byBkbG1vZE5hbWUgbm90IEFTTl9PQ1RFVF9TVFJcbiIpOwotICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdUWVBFOwotICAgIH0KLSAgICBpZiAodmFyX3ZhbF9sZW4gPiBzaXplb2YoZGxtLT5uYW1lKS0xKSB7Ci0gICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ3cml0ZSB0byBkbG1vZE5hbWU6IGJhZCBsZW5ndGg6IHRvbyBsb25nXG4iKTsKLSAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HTEVOR1RIOwotICAgIH0KLSAgICBpZiAoYWN0aW9uID09IENPTU1JVCkgewotICAgICAgICBkbG0gPSBkbG1vZF9nZXRfYnlfaW5kZXgobmFtZVsxMl0pOwotICAgICAgICBpZiAoIWRsbSB8fCBkbG0tPnN0YXR1cyA9PSBETE1PRF9MT0FERUQpCi0gICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRTsKLSAgICAgICAgbWVtY3B5KGRsbS0+bmFtZSwgdmFyX3ZhbCwgdmFyX3ZhbF9sZW4pOwotICAgICAgICBkbG0tPm5hbWVbdmFyX3ZhbF9sZW5dID0gMDsKLSAgICB9Ci0gICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci19Ci0KLWludAotd3JpdGVfZGxtb2RQYXRoKGludCBhY3Rpb24sCi0gICAgICAgICAgICAgICAgdV9jaGFyICogdmFyX3ZhbCwKLSAgICAgICAgICAgICAgICB1X2NoYXIgdmFyX3ZhbF90eXBlLAotICAgICAgICAgICAgICAgIHNpemVfdCB2YXJfdmFsX2xlbiwKLSAgICAgICAgICAgICAgICB1X2NoYXIgKiBzdGF0UCwgb2lkICogbmFtZSwgc2l6ZV90IG5hbWVfbGVuKQotewotICAgIHN0YXRpYyBzdHJ1Y3QgZGxtb2QgKmRsbTsKLQotICAgIGlmICh2YXJfdmFsX3R5cGUgIT0gQVNOX09DVEVUX1NUUikgewotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAid3JpdGUgdG8gZGxtb2RQYXRoIG5vdCBBU05fT0NURVRfU1RSXG4iKTsKLSAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVFlQRTsKLSAgICB9Ci0gICAgaWYgKHZhcl92YWxfbGVuID4gc2l6ZW9mKGRsbS0+cGF0aCktMSkgewotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAid3JpdGUgdG8gZGxtb2RQYXRoOiBiYWQgbGVuZ3RoOiB0b28gbG9uZ1xuIik7Ci0gICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR0xFTkdUSDsKLSAgICB9Ci0gICAgaWYgKGFjdGlvbiA9PSBDT01NSVQpIHsKLSAgICAgICAgZGxtID0gZGxtb2RfZ2V0X2J5X2luZGV4KG5hbWVbMTJdKTsKLSAgICAgICAgaWYgKCFkbG0gfHwgZGxtLT5zdGF0dXMgPT0gRExNT0RfTE9BREVEKQotICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEU7Ci0gICAgICAgIG1lbWNweShkbG0tPnBhdGgsIHZhcl92YWwsIHZhcl92YWxfbGVuKTsKLSAgICAgICAgZGxtLT5wYXRoW3Zhcl92YWxfbGVuXSA9IDA7Ci0gICAgfQotICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfQotCi1pbnQKLXdyaXRlX2RsbW9kU3RhdHVzKGludCBhY3Rpb24sCi0gICAgICAgICAgICAgICAgICB1X2NoYXIgKiB2YXJfdmFsLAotICAgICAgICAgICAgICAgICAgdV9jaGFyIHZhcl92YWxfdHlwZSwKLSAgICAgICAgICAgICAgICAgIHNpemVfdCB2YXJfdmFsX2xlbiwKLSAgICAgICAgICAgICAgICAgIHVfY2hhciAqIHN0YXRQLCBvaWQgKiBuYW1lLCBzaXplX3QgbmFtZV9sZW4pCi17CiAgICAgLyoKLSAgICAgKiB2YXJpYWJsZXMgd2UgbWF5IHVzZSBsYXRlciAKKyAgICAgKiBUT0RPOiBSRUdJU1RFUl9TWVNPUl9FTlRSWQogICAgICAqLwotICAgIHN0cnVjdCBkbG1vZCAgICpkbG07CiAKLSAgICBpZiAodmFyX3ZhbF90eXBlICE9IEFTTl9JTlRFR0VSKSB7Ci0gICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ3cml0ZSB0byBkbG1vZFN0YXR1cyBub3QgQVNOX0lOVEVHRVJcbiIpOwotICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdUWVBFOwotICAgIH0KLSAgICBpZiAodmFyX3ZhbF9sZW4gPiBzaXplb2YobG9uZykpIHsKLSAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIndyaXRlIHRvIGRsbW9kU3RhdHVzOiBiYWQgbGVuZ3RoXG4iKTsKLSAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HTEVOR1RIOwotICAgIH0KLSAgICBpZiAoYWN0aW9uID09IENPTU1JVCkgewotICAgICAgICAvKgotICAgICAgICAgKiBvYmplY3QgaWRlbnRpZmllciBpbiBmb3JtIC4xLjMuNi4xLjQuMS4yMDIxLjEzLjE0LjIuMS40LnggCi0gICAgICAgICAqIHdoZXJlIFggaXMgaW5kZXggd2l0aCBvZmZzZXQgMTIgCi0gICAgICAgICAqLworICAgIERFQlVHTVNHVEwoKCJkbG1vZCIsICJyZWdpc3RlciBtaWJcbiIpKTsKIAotICAgICAgICBkbG0gPSBkbG1vZF9nZXRfYnlfaW5kZXgobmFtZVsxMl0pOwotICAgICAgICBzd2l0Y2ggKCooKGxvbmcgKikgdmFyX3ZhbCkpIHsKLSAgICAgICAgY2FzZSBETE1PRF9DUkVBVEU6Ci0gICAgICAgICAgICBpZiAoZGxtIHx8IChuYW1lWzEyXSAhPSBkbG1vZF9uZXh0X2luZGV4KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRTsKLSAgICAgICAgICAgIGRsbSA9IGRsbW9kX2NyZWF0ZV9tb2R1bGUoKTsKLSAgICAgICAgICAgIGlmICghZGxtKQotICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRExNT0RfTE9BRDoKLSAgICAgICAgICAgIGlmICghZGxtIHx8IGRsbS0+c3RhdHVzID09IERMTU9EX0xPQURFRCkKLSAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRTsKLSAgICAgICAgICAgIGRsbW9kX2xvYWRfbW9kdWxlKGRsbSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBETE1PRF9VTkxPQUQ6Ci0gICAgICAgICAgICBpZiAoIWRsbSB8fCBkbG0tPnN0YXR1cyAhPSBETE1PRF9MT0FERUQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEU7Ci0gICAgICAgICAgICBkbG1vZF91bmxvYWRfbW9kdWxlKGRsbSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBETE1PRF9ERUxFVEU6Ci0gICAgICAgICAgICBpZiAoIWRsbSB8fCBkbG0tPnN0YXR1cyA9PSBETE1PRF9MT0FERUQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEU7Ci0gICAgICAgICAgICBkbG1vZF9kZWxldGVfbW9kdWxlKGRsbSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1ZBTFVFOworICAgIHNubXBkX3JlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJkbG1vZCIsIGRsbW9kX3BhcnNlX2NvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbG1vZF9mcmVlX2NvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlLW5hbWUgbW9kdWxlLXBhdGgiKTsKKworICAgIHsKKyAgICAgICAgY29uc3QgY2hhciAqIGNvbnN0IHAgPSBnZXRlbnYoIlNOTVBETE1PRFBBVEgiKTsKKyAgICAgICAgc3RybmNweShkbG1vZF9wYXRoLCBTTk1QRExNT0RQQVRILCBzaXplb2YoZGxtb2RfcGF0aCkpOworICAgICAgICBkbG1vZF9wYXRoWyBzaXplb2YoZGxtb2RfcGF0aCkgLSAxIF0gPSAwOworICAgICAgICBpZiAocCkgeworICAgICAgICAgICAgaWYgKHBbMF0gPT0gJzonKSB7CisgICAgICAgICAgICAgICAgaW50IGxlbiA9IHN0cmxlbihkbG1vZF9wYXRoKTsKKyAgICAgICAgICAgICAgICBpZiAoZGxtb2RfcGF0aFtsZW4gLSAxXSAhPSAnOicpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RybmNhdChkbG1vZF9wYXRoLCAiOiIsIHNpemVvZihkbG1vZF9wYXRoKSAtIGxlbiAtIDEpOworICAgICAgICAgICAgICAgICAgICBsZW4rKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3RybmNhdChkbG1vZF9wYXRoLCBwICsgMSwgICBzaXplb2YoZGxtb2RfcGF0aCkgLSBsZW4pOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgc3RybmNweShkbG1vZF9wYXRoLCBwLCBzaXplb2YoZGxtb2RfcGF0aCkpOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworCisgICAgZGxtb2RfcGF0aFsgc2l6ZW9mKGRsbW9kX3BhdGgpLTEgXSA9IDA7CisgICAgREVCVUdNU0dUTCgoImRsbW9kIiwgImRsbW9kX3BhdGg6ICVzXG4iLCBkbG1vZF9wYXRoKSk7Cit9CisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHNubXBkX3VucmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIpCisKK3ZvaWQKK3NodXRkb3duX2RsbW9kKHZvaWQpCit7CisgICAgc25tcGRfdW5yZWdpc3Rlcl9jb25maWdfaGFuZGxlcigiZGxtb2QiKTsKKyAgICB1bnJlZ2lzdGVyX21pYihkbG1vZF92YXJpYWJsZXNfb2lkLCBPSURfTEVOR1RIKGRsbW9kX3ZhcmlhYmxlc19vaWQpKTsKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5oCmluZGV4IDRmYmZiOWUuLjk1OTJiZGQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuaApAQCAtMyw2MSArMywxNiBAQAogICoKICAqLwogCi0jaWZuZGVmIF9NSUJHUk9VUF9ETE1PRF9ICi0jZGVmaW5lIF9NSUJHUk9VUF9ETE1PRF9ICisjaWZuZGVmIE1JQkdST1VQX0RMTU9EX0gKKyNkZWZpbmUgTUlCR1JPVVBfRExNT0RfSAogCi0vKgotICogVE9ETyAjaW5jbHVkZSAibWliZGVmcy5oIgotICovCiAjaWYgKCFkZWZpbmVkKEhBVkVfRExGQ05fSCkgfHwgIWRlZmluZWQoSEFWRV9ETE9QRU4pKSAmJiAhZGVmaW5lZChXSU4zMikKIGNvbmZpZ19lcnJvcihEeW5hbWljIG1vZHVsZXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtKQogI2VuZGlmCiAKIGNvbmZpZ19hZGRfbWliKFVDRC1ETE1PRC1NSUIpCi0jaWZuZGVmIFNOTVBETE1PRFBBVEgKLSNkZWZpbmUgU05NUERMTU9EUEFUSCAiL3Vzci9sb2NhbC9saWIvc25tcC9kbG1vZCIKLSNlbmRpZgotICAgICBzdHJ1Y3QgZGxtb2QgewotICAgICAgICAgc3RydWN0IGRsbW9kICAgKm5leHQ7Ci0gICAgICAgICBpbnQgICAgICAgICAgICAgaW5kZXg7Ci0gICAgICAgICBjaGFyICAgICAgICAgICAgbmFtZVs2NCArIDFdOwotICAgICAgICAgY2hhciAgICAgICAgICAgIHBhdGhbMjU1ICsgMV07Ci0gICAgICAgICBjaGFyICAgICAgICAgICAgZXJyb3JbMjU1ICsgMV07Ci0gICAgICAgICB2b2lkICAgICAgICAgICAqaGFuZGxlOwotICAgICAgICAgaW50ICAgICAgICAgICAgIHN0YXR1czsKLSAgICAgfTsKIAotICAgICB2b2lkICAgICAgICAgICAgZGxtb2RfbG9hZF9tb2R1bGUoc3RydWN0IGRsbW9kICopOwotICAgICB2b2lkICAgICAgICAgICAgZGxtb2RfdW5sb2FkX21vZHVsZShzdHJ1Y3QgZGxtb2QgKik7Ci0gICAgIHN0cnVjdCBkbG1vZCAgICpkbG1vZF9jcmVhdGVfbW9kdWxlKHZvaWQpOwotICAgICB2b2lkICAgICAgICAgICAgZGxtb2RfZGVsZXRlX21vZHVsZShzdHJ1Y3QgZGxtb2QgKik7Ci0gICAgIHN0cnVjdCBkbG1vZCAgICpkbG1vZF9nZXRfYnlfaW5kZXgoaW50KTsKK3ZvaWQgaW5pdF9kbG1vZCh2b2lkKTsKK3ZvaWQgc2h1dGRvd25fZGxtb2Qodm9pZCk7CiAKLSAgICAgdm9pZCAgICAgICAgICAgIGRsbW9kX2luaXQodm9pZCk7Ci0gICAgIHZvaWQgICAgICAgICAgICBkbG1vZF9kZWluaXQodm9pZCk7Ci0KLSAgICAgZXh0ZXJuIHZvaWQgICAgIGluaXRfZGxtb2Qodm9pZCk7Ci0gICAgIGV4dGVybiB2b2lkICAgICBkZWluaXRfZGxtb2Qodm9pZCk7Ci0KLSAgICAgZXh0ZXJuIEZpbmRWYXJNZXRob2QgdmFyX2RsbW9kOwotICAgICBleHRlcm4gRmluZFZhck1ldGhvZCB2YXJfZGxtb2RFbnRyeTsKLSAgICAgZXh0ZXJuIFdyaXRlTWV0aG9kIHdyaXRlX2RsbW9kTmFtZTsKLSAgICAgZXh0ZXJuIFdyaXRlTWV0aG9kIHdyaXRlX2RsbW9kUGF0aDsKLSAgICAgZXh0ZXJuIFdyaXRlTWV0aG9kIHdyaXRlX2RsbW9kU3RhdHVzOwotCi0jZGVmaW5lIERMTU9ETkVYVElOREVYIAkJMQotI2RlZmluZSBETE1PRElOREVYICAgICAJCTIKLSNkZWZpbmUgRExNT0ROQU1FICAgICAgCQkzCi0jZGVmaW5lIERMTU9EUEFUSCAgICAgIAkJNAotI2RlZmluZSBETE1PREVSUk9SICAgICAJCTUKLSNkZWZpbmUgRExNT0RTVEFUVVMgICAgCQk2Ci0KLSNkZWZpbmUgRExNT0RfTE9BREVECQkxCi0jZGVmaW5lIERMTU9EX1VOTE9BREVECQkyCi0jZGVmaW5lIERMTU9EX0VSUk9SCQkzCi0jZGVmaW5lIERMTU9EX0xPQUQJCTQKLSNkZWZpbmUJRExNT0RfVU5MT0FECQk1Ci0jZGVmaW5lIERMTU9EX0NSRUFURQkJNgotI2RlZmluZSBETE1PRF9ERUxFVEUJCTcKLQotI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfTUlCR1JPVVBfRExNT0RfSCAqLworI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBNSUJHUk9VUF9ETE1PRF9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9leHRlbnNpYmxlLmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9leHRlbnNpYmxlLmMKaW5kZXggMzdhNWVlYi4uMTRiMDg0YSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXh0ZW5zaWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaWYgSEFWRV9TVERMSUJfSAogI2luY2x1ZGUgPHN0ZGxpYi5oPgpAQCAtMTA5LDYgKzExMCw5IEBACiAjaW5jbHVkZSAidXRpbGl0aWVzL2V4ZWN1dGUuaCIKICNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZ2V0X2V4dGVuX2luc3RhbmNlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocGFyc2VfbWlib2lkKQorCiBleHRlcm4gc3RydWN0IG15cHJvYyAqcHJvY3dhdGNoOyAgICAgICAgLyogbW92ZWQgdG8gcHJvYy5jICovCiBleHRlcm4gaW50ICAgICAgbnVtcHJvY3M7ICAgICAgIC8qIGRpdHRvICovCiBleHRlcm4gc3RydWN0IGV4dGVuc2libGUgKmV4dGVuczsgICAgICAgLyogSW4gZXhlYy5jICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbVNlbnNvcnMuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtU2Vuc29ycy5jCmluZGV4IDYwNWVlMTYuLjA1YzYwYjcgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtU2Vuc29ycy5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtU2Vuc29ycy5jCkBAIC02Niw2ICs2Niw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC03Niw2ICs3Nyw5IEBACiAjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgiCiAjaW5jbHVkZSA8dGltZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV9jb250YWluZXIpCisKKwogLyoKICAqIExvYWQgcmVxdWlyZWQgZHJpdmVycyBhbmQgbGlicmFyaWVzLgogICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzLmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzLmMKaW5kZXggZGM3ODU5Yi4uNGFhZTcyOCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaWYgSEFWRV9TVERMSUJfSAogI2luY2x1ZGUgPHN0ZGxpYi5oPgpAQCAtMzYsNiArMzcsOSBAQAogI2luY2x1ZGUgImV4dGVuc2libGUuaCIKICNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGdldF9leHRlbl9pbnN0YW5jZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHBhcnNlX21pYm9pZCkKKwogc3RydWN0IGV4dGVuc2libGUgKnBhc3N0aHJ1cyA9IE5VTEw7CiBpbnQgICAgICAgICAgICAgbnVtcGFzc3RocnVzID0gMDsKIApAQCAtMTEzLDYgKzExNyw3IEBACiAgICAgaWYgKCpwcGFzcyA9PSBOVUxMKQogICAgICAgICByZXR1cm47CiAgICAgKCpwcGFzcyktPnR5cGUgPSBQQVNTVEhSVTsKKyAgICAoKnBwYXNzKS0+bWlicHJpb3JpdHkgPSBwcmlvcml0eTsKIAogICAgICgqcHBhc3MpLT5taWJsZW4gPSBwYXJzZV9taWJvaWQoY3B0ciwgKCpwcGFzcyktPm1pYm9pZCk7CiAgICAgd2hpbGUgKGlzZGlnaXQoKHVuc2lnbmVkIGNoYXIpKCpjcHRyKSkgfHwgKmNwdHIgPT0gJy4nKQpAQCAtMTMyLDkgKzEzNywxMCBAQAogICAgIHN0cmxjcHkoKCpwcGFzcyktPm5hbWUsICgqcHBhc3MpLT5jb21tYW5kLCBzaXplb2YoKCpwcGFzcyktPm5hbWUpKTsKICAgICAoKnBwYXNzKS0+bmV4dCA9IE5VTEw7CiAKLSAgICByZWdpc3Rlcl9taWJfcHJpb3JpdHkoInBhc3MiLCAoc3RydWN0IHZhcmlhYmxlICopIGV4dGVuc2libGVfcGFzc3RocnVfdmFyaWFibGVzLAotCQkJICBzaXplb2Yoc3RydWN0IHZhcmlhYmxlMiksCi0JCQkgIDEsICgqcHBhc3MpLT5taWJvaWQsICgqcHBhc3MpLT5taWJsZW4sIHByaW9yaXR5KTsKKyAgICByZWdpc3Rlcl9taWJfcHJpb3JpdHkoInBhc3MiLAorICAgICAgICAgICAgICAgICAoc3RydWN0IHZhcmlhYmxlICopIGV4dGVuc2libGVfcGFzc3RocnVfdmFyaWFibGVzLAorICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IHZhcmlhYmxlMiksIDEsICgqcHBhc3MpLT5taWJvaWQsCisgICAgICAgICAgICAgICAgICgqcHBhc3MpLT5taWJsZW4sICgqcHBhc3MpLT5taWJwcmlvcml0eSk7CiAKICAgICAvKgogICAgICAqIGFyZ2dnZyAtLSBwYXN0aHJ1cyBtdXN0IGJlIHNvcnRlZCAKQEAgLTE3MCw3ICsxNzYsNyBAQAogICAgIGZvciAoZXRtcCA9IHBhc3N0aHJ1czsgZXRtcCAhPSBOVUxMOykgewogICAgICAgICBldG1wMiA9IGV0bXA7CiAgICAgICAgIGV0bXAgPSBldG1wLT5uZXh0OwotICAgICAgICB1bnJlZ2lzdGVyX21pYihldG1wMi0+bWlib2lkLCBldG1wMi0+bWlibGVuKTsKKyAgICAgICAgdW5yZWdpc3Rlcl9taWJfcHJpb3JpdHkoZXRtcDItPm1pYm9pZCwgZXRtcDItPm1pYmxlbiwgZXRtcDItPm1pYnByaW9yaXR5KTsKICAgICAgICAgZnJlZShldG1wMik7CiAgICAgfQogICAgIHBhc3N0aHJ1cyA9IE5VTEw7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jCmluZGV4IGJkOWI2MDMuLmNjNDQyMzIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpZiBIQVZFX0lPX0gKICNpbmNsdWRlIDxpby5oPgpAQCAtNDEsMTIgKzQyLDE1IEBACiAjaW5jbHVkZSAiZXh0ZW5zaWJsZS5oIgogI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZ2V0X2V4dGVuX2luc3RhbmNlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocGFyc2VfbWlib2lkKQorCiBzdHJ1Y3QgZXh0ZW5zaWJsZSAqcGVyc2lzdHBhc3N0aHJ1cyA9IE5VTEw7CiBpbnQgICAgICAgICAgICAgbnVtcGVyc2lzdHBhc3N0aHJ1cyA9IDA7CiBzdHJ1Y3QgcGVyc2lzdF9waXBlX3R5cGUgewogICAgIEZJTEUgICAgICAgICAgICpmSW4sICpmT3V0OwogICAgIGludCAgICAgICAgICAgICBmZEluLCBmZE91dDsKLSAgICBpbnQgICAgICAgICAgICAgcGlkOworICAgIG5ldHNubXBfcGlkX3QgICBwaWQ7CiB9ICAgICAgICAgICAgICAqcGVyc2lzdF9waXBlcyA9IChzdHJ1Y3QgcGVyc2lzdF9waXBlX3R5cGUgKikgTlVMTDsKIHN0YXRpYyB1bnNpZ25lZCBwaXBlX2NoZWNrX2FsYXJtX2lkOwogc3RhdGljIGludCAgICAgIGluaXRfcGVyc2lzdF9waXBlcyh2b2lkKTsKQEAgLTE0Myw2ICsxNDcsNyBAQAogICAgIGlmICgqcHBhc3MgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuOwogICAgICgqcHBhc3MpLT50eXBlID0gUEFTU1RIUlVfUEVSU0lTVDsKKyAgICAoKnBwYXNzKS0+bWlicHJpb3JpdHkgPSBwcmlvcml0eTsKIAogICAgICgqcHBhc3MpLT5taWJsZW4gPSBwYXJzZV9taWJvaWQoY3B0ciwgKCpwcGFzcyktPm1pYm9pZCk7CiAgICAgd2hpbGUgKGlzZGlnaXQoKHVuc2lnbmVkIGNoYXIpKCpjcHRyKSkgfHwgKmNwdHIgPT0gJy4nKQpAQCAtMTY1LDcgKzE3MCw3IEBACiAgICAgcmVnaXN0ZXJfbWliX3ByaW9yaXR5KCJwYXNzX3BlcnNpc3QiLAogICAgICAgICAgICAgICAgICAoc3RydWN0IHZhcmlhYmxlICopIGV4dGVuc2libGVfcGVyc2lzdF9wYXNzdGhydV92YXJpYWJsZXMsCiAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgdmFyaWFibGUyKSwgMSwgKCpwcGFzcyktPm1pYm9pZCwKLSAgICAgICAgICAgICAgICAgKCpwcGFzcyktPm1pYmxlbiwgcHJpb3JpdHkpOworICAgICAgICAgICAgICAgICAoKnBwYXNzKS0+bWlibGVuLCAoKnBwYXNzKS0+bWlicHJpb3JpdHkpOwogCiAgICAgLyoKICAgICAgKiBhcmdnZ2cgLS0gcGFzdGhydXMgbXVzdCBiZSBzb3J0ZWQgCkBAIC0yMDAsNyArMjA1LDcgQEAKICAgICBmb3IgKGV0bXAgPSBwZXJzaXN0cGFzc3RocnVzOyBldG1wICE9IE5VTEw7KSB7CiAgICAgICAgIGV0bXAyID0gZXRtcDsKICAgICAgICAgZXRtcCA9IGV0bXAtPm5leHQ7Ci0gICAgICAgIHVucmVnaXN0ZXJfbWliKGV0bXAyLT5taWJvaWQsIGV0bXAyLT5taWJsZW4pOworICAgICAgICB1bnJlZ2lzdGVyX21pYl9wcmlvcml0eShldG1wMi0+bWlib2lkLCBldG1wMi0+bWlibGVuLCBldG1wMi0+bWlicHJpb3JpdHkpOwogICAgICAgICBmcmVlKGV0bXAyKTsKICAgICB9CiAgICAgcGVyc2lzdHBhc3N0aHJ1cyA9IE5VTEw7CkBAIC00MjYsNyArNDMxLDcgQEAKICAgICAgICAgZm9yIChpID0gMDsgaSA8PSBudW1wZXJzaXN0cGFzc3RocnVzOyBpKyspIHsKICAgICAgICAgICAgIHBlcnNpc3RfcGlwZXNbaV0uZkluID0gcGVyc2lzdF9waXBlc1tpXS5mT3V0ID0gKEZJTEUgKikgMDsKICAgICAgICAgICAgIHBlcnNpc3RfcGlwZXNbaV0uZmRJbiA9IHBlcnNpc3RfcGlwZXNbaV0uZmRPdXQgPSAtMTsKLSAgICAgICAgICAgIHBlcnNpc3RfcGlwZXNbaV0ucGlkID0gLTE7CisgICAgICAgICAgICBwZXJzaXN0X3BpcGVzW2ldLnBpZCA9IE5FVFNOTVBfTk9fU1VDSF9QUk9DRVNTOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBwZXJzaXN0X3BpcGVzID8gMSA6IDA7CkBAIC00NDAsNyArNDQ1LDcgQEAKICAqLwogc3RhdGljIGludCBwcm9jZXNzX3N0b3BwZWQoaW50IGlkeCkKIHsKLSAgICBpZiAocGVyc2lzdF9waXBlc1tpZHhdLnBpZCAhPSAtMSkgeworICAgIGlmIChwZXJzaXN0X3BpcGVzW2lkeF0ucGlkICE9IE5FVFNOTVBfTk9fU1VDSF9QUk9DRVNTKSB7CiAjaWYgSEFWRV9TWVNfV0FJVF9ICiAgICAgICAgIHJldHVybiB3YWl0cGlkKHBlcnNpc3RfcGlwZXNbaWR4XS5waWQsIE5VTEwsIFdOT0hBTkcpID4gMDsKICNlbmRpZgpAQCAtNTA3LDE0ICs1MTIsMTUgQEAKICAgICAvKgogICAgICAqIE9wZW4gaWYgaXQncyBub3QgYWxyZWFkeSBvcGVuIAogICAgICAqLwotICAgIGlmIChwZXJzaXN0X3BpcGVzW2lpbmRleF0ucGlkID09IC0xKSB7Ci0gICAgICAgIGludCAgICAgICAgICAgICBmZEluLCBmZE91dCwgcGlkOworICAgIGlmIChwZXJzaXN0X3BpcGVzW2lpbmRleF0ucGlkID09IE5FVFNOTVBfTk9fU1VDSF9QUk9DRVNTKSB7CisgICAgICAgIGludCAgICAgICAgICAgICBmZEluLCBmZE91dDsKKyAgICAgICAgbmV0c25tcF9waWRfdCAgIHBpZDsKIAogICAgICAgICAvKgogICAgICAgICAgKiBEaWQgd2UgZmFpbD8gCiAgICAgICAgICAqLwogICAgICAgICBpZiAoKDAgPT0gZ2V0X2V4ZWNfcGlwZXMoY29tbWFuZCwgJmZkSW4sICZmZE91dCwgJnBpZCkpIHx8Ci0gICAgICAgICAgICAocGlkID09IC0xKSkgeworICAgICAgICAgICAgKHBpZCA9PSBORVRTTk1QX05PX1NVQ0hfUFJPQ0VTUykpIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ1Y2Qtc25tcC9wYXNzX3BlcnNpc3QiLAogICAgICAgICAgICAgICAgICAgICAgICAgIm9wZW5fcGVyc2lzdF9waXBlOiBwaWQgPT0gLTFcbiIpKTsKICAgICAgICAgICAgIHJlY3Vyc2UgPSAwOwpAQCAtNTkxLDcgKzU5Nyw3IEBACiAgICAgLyoKICAgICAgKiBEb24ndCB3cml0ZSB0byBhIG5vbi1leGlzdGFudCBwcm9jZXNzIAogICAgICAqLwotICAgIGlmIChwZXJzaXN0X3BpcGVzW2lpbmRleF0ucGlkID09IC0xKSB7CisgICAgaWYgKHBlcnNpc3RfcGlwZXNbaWluZGV4XS5waWQgPT0gTkVUU05NUF9OT19TVUNIX1BST0NFU1MpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInVjZC1zbm1wL3Bhc3NfcGVyc2lzdCIsCiAgICAgICAgICAgICAgICAgICAgICJ3cml0ZV9wZXJzaXN0X3BpcGU6IG5vdCB3cml0aW5nICVzLCBwcm9jZXNzIGlzIG5vbi1leGlzdGVudCIsCiAgICAgICAgICAgICAgICAgICAgIGRhdGEpKTsKQEAgLTcwOSwxNiArNzE1LDE2IEBACiAJdW5saW5rKGZpZm9fb3V0X3BhdGgpOwogI2VuZGlmCiAKLSAgICBpZiAocGVyc2lzdF9waXBlc1tpaW5kZXhdLnBpZCAhPSAtMSkgeworICAgIGlmIChwZXJzaXN0X3BpcGVzW2lpbmRleF0ucGlkICE9IE5FVFNOTVBfTk9fU1VDSF9QUk9DRVNTKSB7CiAjaWYgSEFWRV9TWVNfV0FJVF9ICiAgICAgICAgIHdhaXRwaWQocGVyc2lzdF9waXBlc1tpaW5kZXhdLnBpZCwgTlVMTCwgMCk7CiAjZW5kaWYKICNpZiBkZWZpbmVkKFdJTjMyKSAmJiAhZGVmaW5lZCAobWluZ3czMikgJiYgIWRlZmluZWQgKEhBVkVfU0lHTkFMKQotICAgICAgICBpZiAoIUNsb3NlSGFuZGxlKChIQU5ETEUpcGVyc2lzdF9waXBlc1tpaW5kZXhdLnBpZCkpIHsKKyAgICAgICAgaWYgKCFDbG9zZUhhbmRsZShwZXJzaXN0X3BpcGVzW2lpbmRleF0ucGlkKSkgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoInVjZC1zbm1wL3Bhc3NfcGVyc2lzdCIsImNsb3NlX3BlcnNpc3RfcGlwZSBwaWQ6IGNsb3NlIGVycm9yXG4iKSk7CiAgICAgICAgIH0KICNlbmRpZgotICAgICAgICBwZXJzaXN0X3BpcGVzW2lpbmRleF0ucGlkID0gLTE7CisgICAgICAgIHBlcnNpc3RfcGlwZXNbaWluZGV4XS5waWQgPSBORVRTTk1QX05PX1NVQ0hfUFJPQ0VTUzsKICAgICB9CiAKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYwppbmRleCA3MDBhY2YyLi5lOTBjMmU4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm9jLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpZmRlZiBzb2xhcmlzMgogI2RlZmluZSBfS01FTVVTRVIgICAgICAgICAgICAgICAvKiBOZWVkZWQgYnkgPHN5cy91c2VyLmg+ICovCkBAIC0zNTksNiArMzYwLDcgQEAKIH0KIAogI2lmZGVmIFVTSU5HX0hPU1RfREFUQV9BQ0NFU1NfU1dSVU5fTU9EVUxFCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzd3J1bl9jb3VudF9wcm9jZXNzZXNfYnlfbmFtZSkKIGludAogc2hfY291bnRfcHJvY3MoY2hhciAqcHJvY25hbWUpCiB7CkBAIC04MTIsNiArODE0LDcgQEAKIH0KICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX1NMQVNIX1BST0NfTUVUSE9EXyAqLwogI2Vsc2UKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGZpbmRfZmllbGQpCiBpbnQKIHNoX2NvdW50X3Byb2NzKGNoYXIgKnByb2NuYW1lKQogewpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmMKaW5kZXggOWEwZTM1Ni4uMDE3ZmQ1YyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm94eS5jCkBAIC05LDYgKzksNyBAQAogICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpZiBIQVZFX1NUUklOR19ICkBAIC0yMyw2ICsyNCw5IEBACiAKICNpbmNsdWRlICJwcm94eS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShoYW5kbGVyX21hcmtfcmVxdWVzdHNfYXNfZGVsZWdhdGVkKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocmVxdWVzdF9zZXRfZXJyb3JfaWR4KQorCiBzdGF0aWMgc3RydWN0IHNpbXBsZV9wcm94eSAqcHJveGllcyA9IE5VTEw7CiAKIG9pZCAgICAgICAgICAgICB0ZXN0b2lkW10gPSB7IDEsIDMsIDYsIDEsIDQsIDEsIDIwMjEsIDg4ODgsIDEgfTsKQEAgLTM1Niw2ICszNjAsNyBAQAogICAgICAgICBwZHUgPSBzbm1wX3BkdV9jcmVhdGUocmVxaW5mby0+bW9kZSk7CiAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgogICAgICAgICBwZHUgPSBzbm1wX3BkdV9jcmVhdGUoU05NUF9NU0dfU0VUKTsKICAgICAgICAgYnJlYWs7CkBAIC0zODMsNiArMzg4LDcgQEAKICAgICAgICAgICogIE5vdGhpbmcgdG8gZG8gaW4gdGhpcyBwYXNzCiAgICAgICAgICAqLwogICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICBkZWZhdWx0OgogICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgInVuc3VwcG9ydGVkIG1vZGUgZm9yIHByb3h5IGNhbGxlZCAoJWQpXG4iLApAQCAtNDAzLDcgKzQwOSwzMyBAQAogICAgICAgICBvdXJuYW1lID0gcmVxdWVzdC0+cmVxdWVzdHZiLT5uYW1lOwogICAgICAgICBvdXJsZW5ndGggPSByZXF1ZXN0LT5yZXF1ZXN0dmItPm5hbWVfbGVuZ3RoOwogCi0gICAgICAgIGlmIChzcC0+YmFzZV9sZW4gPiAwKSB7CisgICAgICAgIGlmIChzcC0+YmFzZV9sZW4gJiYKKyAgICAgICAgICAgIHJlcWluZm8tPm1vZGUgPT0gTU9ERV9HRVRORVhUICYmCisgICAgICAgICAgICAoc25tcF9vaWRfY29tcGFyZShvdXJuYW1lLCBvdXJsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcC0+YmFzZSwgc3AtPmJhc2VfbGVuKSA8IDApKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCggInByb3h5IiwgInJlcXVlc3QgaXMgb3V0IG9mIHJlZ2lzdGVyZWQgcmFuZ2VcbiIpKTsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBDcmVhdGUgR0VUTkVYVCByZXF1ZXN0IHdpdGggYW4gT0lEIHNvIHRoZQorICAgICAgICAgICAgICogbWFzdGVyIHJldHVybnMgdGhlIGZpcnN0IE9JRCBpbiB0aGUgcmVnaXN0ZXJlZCByYW5nZS4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgbWVtY3B5KG91cm5hbWUsIHNwLT5iYXNlLCBzcC0+YmFzZV9sZW4gKiBzaXplb2Yob2lkKSk7CisgICAgICAgICAgICBvdXJsZW5ndGggPSBzcC0+YmFzZV9sZW47CisgICAgICAgICAgICBpZiAob3VybmFtZVtvdXJsZW5ndGgtMV0gPD0gMSkgeworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogVGhlIHJlZ2lzdGVyZWQgcmFuZ2UgZW5kcyB3aXRoIHgueS56LjEKKyAgICAgICAgICAgICAgICAgKiAtPiBhc2sgZm9yIHRoZSBuZXh0IG9mIHgueS56CisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgb3VybGVuZ3RoLS07CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogVGhlIHJlZ2lzdGVyZWQgcmFuZ2UgZW5kcyB3aXRoIHgueS56LkEKKyAgICAgICAgICAgICAgICAgKiAtPiBhc2sgZm9yIHRoZSBuZXh0IG9mIHgueS56LkEtMS5NQVhfU1VCSUQKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBvdXJuYW1lW291cmxlbmd0aC0xXS0tOworICAgICAgICAgICAgICAgIG91cm5hbWVbb3VybGVuZ3RoXSA9IE1BWF9TVUJJRDsKKyAgICAgICAgICAgICAgICBvdXJsZW5ndGgrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChzcC0+YmFzZV9sZW4gPiAwKSB7CiAgICAgICAgICAgICBpZiAoKG91cmxlbmd0aCAtIHNwLT5uYW1lX2xlbiArIHNwLT5iYXNlX2xlbikgPiBNQVhfT0lEX0xFTikgewogICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICogdG9vIGxhcmdlIApAQCAtNTI5LDYgKzU2MSw3IEBACiAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX21hcmtfcmVxdWVzdHNfYXNfZGVsZWdhdGVkKHJlcXVlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVFVRVNUX0lTX05PVF9ERUxFR0FURUQpOwogICAgICAgICAgICAgfQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIAkgICAgZWxzZSBpZiAoY2FjaGUtPnJlcWluZm8tPm1vZGUgPT0gTU9ERV9TRVRfQUNUSU9OKSB7CiAJCS8qCiAJCSAqIEluIG9yZGVyIGZvciBuZXRzbm1wX3dyYXBfdXBfcmVxdWVzdCB0byBjb25zaWRlciB0aGUKQEAgLTU0NSw2ICs1NzgsNyBAQAogCQluZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yX2lkeChyZXF1ZXN0cywgcGR1LT5lcnJzdGF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZHUtPmVycmluZGV4KTsKIAkgICAgfQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgICAgIGVsc2UgewogCQluZXRzbm1wX2hhbmRsZXJfbWFya19yZXF1ZXN0c19hc19kZWxlZ2F0ZWQoIHJlcXVlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVRVUVTVF9JU19OT1RfREVMRUdBVEVEKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5jCmluZGV4IGY0MjkzMmEuLmY3YThjNjMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaWYgVElNRV9XSVRIX1NZU19USU1FCkBAIC0yMyw3ICsyNCwxMiBAQAogCiAjaW5jbHVkZSAic3RydWN0LmgiCiAjaW5jbHVkZSAidmVyc2lvbmluZm8uaCIKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvcmVzdGFydC5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIgLyogY2xlYXJfY2FjaGUgKi8KKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2xlYXJfY2FjaGUpCisKIAogdm9pZAogaW5pdF92ZXJzaW9uaW5mbyh2b2lkKQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uaCBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmgKaW5kZXggZDk5MTE0Ny4uMDA3NDI0ZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5oCkBAIC0yOCw1ICsyOCw4IEBACiAjZGVmaW5lIFZFUlNBVkVQRVJTSVNURU5UIDEzCiAjZGVmaW5lIFZFUkRFQlVHR0lORyAyMAogCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9yZXN0YXJ0KQogY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKKwogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfTUlCR1JPVVBfVkVSU0lPTklORk9fSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0LmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuYwppbmRleCBlYWRiZjVhLi5kNTJhNWI2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuYwpAQCAtMjAsNyArMjAsNyBAQAogICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigidm1zdGF0Iiwgdm1zdGF0X2hhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtc3RhdF9vaWQsIE9JRF9MRU5HVEgodm1zdGF0X29pZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKSwKLSAgICAgICAgTUlCSU5ERVgsIFJBV1NXQVBPVVQpOworICAgICAgICBNSUJJTkRFWCwgQ1BVUkFXR1VFU1ROSUNFKTsKIH0KIAogCkBAIC0zOCw2ICszOCw3IEBACiAgICAgc3dpdGNoIChyZXFpbmZvLT5tb2RlKSB7CiAgICAgY2FzZSBNT0RFX0dFVDoKICAgICAgICAgb2JqID0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+bmFtZVsgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+bmFtZV9sZW5ndGgtMiBdOworCiAgICAgICAgIHN3aXRjaCAob2JqKSB7CiAgICAgICAgIGNhc2UgTUlCSU5ERVg6ICAgICAgICAgICAgIC8qIGR1bW15IHZhbHVlICovCiAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIocmVxdWVzdHMtPnJlcXVlc3R2YiwgQVNOX0lOVEVHRVIsIDEpOwpAQCAtMTEyLDYgKzExMywxOCBAQAogICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF9pbnRlZ2VyKHJlcXVlc3RzLT5yZXF1ZXN0dmIsIEFTTl9DT1VOVEVSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8tPnNpcnFfdGlja3MgJiAweGZmZmZmZmZmKTsKICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDUFVSQVdTVEVBTDoKKyAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcihyZXF1ZXN0cy0+cmVxdWVzdHZiLCBBU05fQ09VTlRFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLT5zdGVhbF90aWNrcyAmIDB4ZmZmZmZmZmYpOworICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENQVVJBV0dVRVNUOgorICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF9pbnRlZ2VyKHJlcXVlc3RzLT5yZXF1ZXN0dmIsIEFTTl9DT1VOVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8tPmd1ZXN0X3RpY2tzICYgMHhmZmZmZmZmZik7CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1BVUkFXR1VFU1ROSUNFOgorICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF9pbnRlZ2VyKHJlcXVlc3RzLT5yZXF1ZXN0dmIsIEFTTl9DT1VOVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8tPmd1ZXN0bmljZV90aWNrcyAmIDB4ZmZmZmZmZmYpOworICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIC8qCiAgICAgICAgICAqICAnQ29va2VkJyBDUFUgc3RhdGlzdGljcwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0LmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuaAppbmRleCBiOGQ1MjAyLi5lZWRiNWI0IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuaApAQCAtMzYsNSArMzYsOCBAQAogI2RlZmluZSBDUFVSQVdTT0ZUSVJRIDYxCiAjZGVmaW5lIFJBV1NXQVBJTiA2MgogI2RlZmluZSBSQVdTV0FQT1VUIDYzCisjZGVmaW5lIENQVVJBV1NURUFMIDY0CisjZGVmaW5lIENQVVJBV0dVRVNUIDY1CisjZGVmaW5lIENQVVJBV0dVRVNUTklDRSA2NgogCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9NSUJHUk9VUF9WTVNUQVRfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2xpbnV4LmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbGludXguYwppbmRleCA3NTM4YTE0Li5kNmVmZjUwIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbGludXguYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaWYgSEFWRV9MSU1JVFNfSAogI2luY2x1ZGUgPGxpbWl0cy5oPgpAQCAtMTExLDYgKzExMiw5IEBACiAjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogI2luY2x1ZGUgInZtc3RhdC5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShoYXJkd2FyZV9jcHVfbG9hZCkKKworCiBGaW5kVmFyTWV0aG9kIHZhcl9leHRlbnNpYmxlX3Ztc3RhdDsKIAogc3RhdGljIGludCBoYXNfdm1zdGF0ID0gMTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50LmggYi9hZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludC5oCmluZGV4IDFlZGI2ZDYuLmQ5ZGVjMWQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50LmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnQuaApAQCAtMjMsNyArMjMsNyBAQAogY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUpCiAjZWxpZiBkZWZpbmVkKCBzb2xhcmlzMiApCiBjb25maWdfcmVxdWlyZSh1ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9zb2xhcmlzMikKLSNlbGlmIGRlZmluZWQoZnJlZWJzZDQpIHx8IGRlZmluZWQoZHJhZ29uZmx5KQorI2VsaWYgZGVmaW5lZChmcmVlYnNkNCkgfHwgZGVmaW5lZChkcmFnb25mbHkpIHx8IGRlZmluZWQoZGFyd2luKQogY29uZmlnX3JlcXVpcmUodWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfZnJlZWJzZDQpCiAjZWxpZiBkZWZpbmVkKG9wZW5ic2Q0KQogY29uZmlnX3JlcXVpcmUodWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfb3BlbmJzZCkKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2NvbW1vbi5jIGIvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfY29tbW9uLmMKaW5kZXggYmNiMDAyZS4uNjNmODU0OSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfY29tbW9uLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfY29tbW9uLmMKQEAgLTQsNiArNCw3IEBACiAgKiAkSWQkCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAidWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfY29uc3RhbnRzLmgiCiAKQEAgLTEzLDYgKzE0LDEwIEBACiAKICNpbmNsdWRlICJ1ZHBfZW5kcG9pbnRfcHJpdmF0ZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodWRwX2VuZHBvaW50X2NvbW1vbiwgbGlibmV0c25tcG1pYnMpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1ZHBfZW5kcG9pbnRfZW50cnlfY3JlYXRlLCB1ZHBfZW5kcG9pbnRfY29tbW9uKQorCiAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyoKICAqIGxvY2FsIHN0YXRpYyB2YXJzCkBAIC0yNCwxMSArMjksNiBAQAogICogaW5pdGlhbGl6YXRpb24KICAqLwogCi12b2lkCi1uZXRzbm1wX2FjY2Vzc191ZHBfZW5kcG9pbnRfaW5pdCh2b2lkKQotewotfQotCiAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyoKICAqIGNvbnRhaW5lciBmdW5jdGlvbnMKQEAgLTEyMCw2ICsxMjAsNyBAQAogICovCiAvKioKICAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VEUF9FTkRQT0lOVF9FTlRSWV9DUkVBVEUKIG5ldHNubXBfdWRwX2VuZHBvaW50X2VudHJ5ICoKIG5ldHNubXBfYWNjZXNzX3VkcF9lbmRwb2ludF9lbnRyeV9jcmVhdGUodm9pZCkKIHsKQEAgLTEzNiw2ICsxMzcsNyBAQAogCiAgICAgcmV0dXJuIGVudHJ5OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVURQX0VORFBPSU5UX0VOVFJZX0NSRUFURSAqLwogCiAvKioKICAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbGludXguYyBiL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2xpbnV4LmMKaW5kZXggNDNiMzIzMC4uNmVkYmRjMSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9saW51eC5jCkBAIC00LDYgKzQsNyBAQAogICogJElkJAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KQEAgLTE5LDYgKzIwLDEwIEBACiAKICNpbmNsdWRlIDxmY250bC5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0ZXh0X3V0aWxzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVkcF9lbmRwb2ludF9hbGwsIGxpYm5ldHNubXBtaWJzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVkcF9lbmRwb2ludF93cml0YWJsZSwgdWRwX2VuZHBvaW50X2FsbCkKKwogc3RhdGljIGludCBfbG9hZDQobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgdV9pbnQgZmxhZ3MpOwogI2lmIGRlZmluZWQgKE5FVFNOTVBfRU5BQkxFX0lQVjYpCiBzdGF0aWMgaW50IF9sb2FkNihuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2ludCBmbGFncyk7CkBAIC0zMCw2ICszNSw3IEBACiAgKiBAcmV0dmFsICAwOiBzdWNjZXNzCiAgKiBAcmV0dmFsIDwwOiBlcnJvcgogICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVURQX0VORFBPSU5UX1dSSVRBQkxFCiBpbnQKIG5ldHNubXBfYXJjaF91ZHBfZW5kcG9pbnRfZW50cnlfaW5pdChuZXRzbm1wX3VkcF9lbmRwb2ludF9lbnRyeSAqZW50cnkpCiB7CkBAIC03MSw2ICs3Nyw3IEBACiAgICAgLyoqIHh4eC1ya3M6OSB1ZHBfZW5kcG9pbnQgZGVsZXRlIG5vdCBpbXBsZW1lbnRlZCAqLwogICAgIHJldHVybiAtMTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VEUF9FTkRQT0lOVF9XUklUQUJMRSAqLwogCiAKIC8qKgpAQCAtODQsNiArOTEsOSBAQAogewogICAgIGludCByYyA9IDA7CiAKKyAgICAvKiBTZXR1cCB0aGUgcGlkX2Zyb21faW5vZGUgdGFibGUsIGFuZCBmaWxsIGl0LiovCisgICAgbmV0c25tcF9nZXRfcGlkX2Zyb21faW5vZGVfaW5pdCgpOworCiAgICAgcmMgPSBfbG9hZDQoY29udGFpbmVyLCBsb2FkX2ZsYWdzKTsKICAgICBpZihyYyA8IDApIHsKICAgICAgICAgdV9pbnQgZmxhZ3MgPSBORVRTTk1QX0FDQ0VTU19VRFBfRU5EUE9JTlRfRlJFRV9LRUVQX0NPTlRBSU5FUjsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X3NvbGFyaXMyLmMgYi9hZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9zb2xhcmlzMi5jCmluZGV4IGY0YjY5ZGYuLmY1MjI0NGEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X3NvbGFyaXMyLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfc29sYXJpczIuYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgpAQCAtMTAsMTEgKzExLDE2IEBACiAKICNpbmNsdWRlICJrZXJuZWxfc3Vub3M1LmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKG5ldHNubXBfYWNjZXNzX3VkcF9lbmRwb2ludF9lbnRyeV9jcmVhdGUpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodWRwX2VuZHBvaW50X2FsbCwgbGlibmV0c25tcG1pYnMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodWRwX2VuZHBvaW50X3dyaXRhYmxlLCB1ZHBfZW5kcG9pbnRfYWxsKQorCiBzdGF0aWMgaW50IF9sb2FkX3VkcF9lbmRwb2ludF90YWJsZV92NChuZXRzbm1wX2NvbnRhaW5lciAqLCBpbnQpOwogI2lmIGRlZmluZWQoTkVUU05NUF9FTkFCTEVfSVBWNikgJiYgZGVmaW5lZChTT0xBUklTX0hBVkVfSVBWNl9NSUJfU1VQUE9SVCkKIHN0YXRpYyBpbnQgX2xvYWRfdWRwX2VuZHBvaW50X3RhYmxlX3Y2KG5ldHNubXBfY29udGFpbmVyICosIGludCk7CiAjZW5kaWYKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VEUF9FTkRQT0lOVF9XUklUQUJMRQogaW50IAogbmV0c25tcF9hcmNoX3VkcF9lbmRwb2ludF9lbnRyeV9pbml0KG5ldHNubXBfdWRwX2VuZHBvaW50X2VudHJ5ICplcCkKIHsKQEAgLTQ4LDYgKzU0LDcgQEAKICAgICAgKi8KICAgICByZXR1cm4gKC0xKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VEUF9FTkRQT0lOVF9XUklUQUJMRSAqLwogCiBpbnQgCiBuZXRzbm1wX2FyY2hfdWRwX2VuZHBvaW50X2NvbnRhaW5lcl9sb2FkKG5ldHNubXBfY29udGFpbmVyICogY29udGFpbmVyLCAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfaW50ZXJmYWNlLmMKaW5kZXggMWI2ZGM2Ny4uNjBkMzdlOSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfaW50ZXJmYWNlLmMKQEAgLTMwLDYgKzMwLDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTQ2LDYgKzQ3LDE4IEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodWRwRW5kcG9pbnRUYWJsZV9leHRlcm5hbF9hY2Nlc3MsIGxpYm5ldHNubXBtaWJzKQorCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyb3dfbWVyZ2UpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShiYWJ5X3N0ZXBzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKQorCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1ZHBFbmRwb2ludFRhYmxlX2NvbnRhaW5lcl9zaXplLCB1ZHBFbmRwb2ludFRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1ZHBFbmRwb2ludFRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQsIHVkcEVuZHBvaW50VGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVkcEVuZHBvaW50VGFibGVfcmVnaXN0cmF0aW9uX2dldCwgdWRwRW5kcG9pbnRUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodWRwRW5kcG9pbnRUYWJsZV9jb250YWluZXJfZ2V0LCB1ZHBFbmRwb2ludFRhYmxlX2V4dGVybmFsX2FjY2VzcykKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqCkBAIC03OSwxOSArOTIsMjMgQEAKICAgICAgICAgICAgICAgICBfdWRwRW5kcG9pbnRUYWJsZV9jb250YWluZXJfc2h1dGRvd24odWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2VfY3R4ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZfY3R4KTsKIAotCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVURQRU5EUE9JTlRUQUJMRV9DT05UQUlORVJfR0VUCiBuZXRzbm1wX2NvbnRhaW5lciAqCiB1ZHBFbmRwb2ludFRhYmxlX2NvbnRhaW5lcl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gdWRwRW5kcG9pbnRUYWJsZV9pZl9jdHguY29udGFpbmVyOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVURQRU5EUE9JTlRUQUJMRV9DT05UQUlORVJfR0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VRFBFTkRQT0lOVFRBQkxFX1JFR0lTVFJBVElPTl9HRVQKIHVkcEVuZHBvaW50VGFibGVfcmVnaXN0cmF0aW9uICoKIHVkcEVuZHBvaW50VGFibGVfcmVnaXN0cmF0aW9uX2dldCh2b2lkKQogewogICAgIHJldHVybiB1ZHBFbmRwb2ludFRhYmxlX2lmX2N0eC51c2VyX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VEUEVORFBPSU5UVEFCTEVfUkVHSVNUUkFUSU9OX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVURQRU5EUE9JTlRUQUJMRV9SRUdJU1RSQVRJT05fU0VUCiB1ZHBFbmRwb2ludFRhYmxlX3JlZ2lzdHJhdGlvbiAqCiB1ZHBFbmRwb2ludFRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQodWRwRW5kcG9pbnRUYWJsZV9yZWdpc3RyYXRpb24gKiBuZXdyZWcpCiB7CkBAIC05OSwxMiArMTE2LDE1IEBACiAgICAgdWRwRW5kcG9pbnRUYWJsZV9pZl9jdHgudXNlcl9jdHggPSBuZXdyZWc7CiAgICAgcmV0dXJuIG9sZDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VEUEVORFBPSU5UVEFCTEVfUkVHSVNUUkFUSU9OX1NFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVURQRU5EUE9JTlRUQUJMRV9DT05UQUlORVJfU0laRQogaW50CiB1ZHBFbmRwb2ludFRhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpCiB7CiAgICAgcmV0dXJuIENPTlRBSU5FUl9TSVpFKHVkcEVuZHBvaW50VGFibGVfaWZfY3R4LmNvbnRhaW5lcik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VRFBFTkRQT0lOVFRBQkxFX0NPTlRBSU5FUl9TSVpFICovCiAKIC8qCiAgKiBtZmQgbXVsdGlwbGV4ZXIgbW9kZXMKQEAgLTIyOCw3ICsyNDgsOCBAQAogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9QT1NUX1JFUVVFU1Q7CiAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQorICAgIC8qIFhYWCAtIGFyZSB0aGVzZSBhY3R1YWxseSBuZWNlc3Nhcnk/ICovCiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+c2V0X3ZhbHVlcykKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9TRVRfVkFMVUVTOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmlycmV2ZXJzaWJsZV9jb21taXQpCkBAIC0yNTEsNyArMjcyLDcgQEAKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DT01NSVQ7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DT01NSVQ7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICBoYW5kbGVyID0gbmV0c25tcF9iYWJ5X3N0ZXBzX2hhbmRsZXJfZ2V0KG1mZF9tb2Rlcyk7CiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKQEAgLTEwNDcsNiArMTA2OCw3IEBACiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF91ZHBFbmRwb2ludFRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VRFBFTkRQT0lOVFRBQkxFX0VYVEVSTkFMX0FDQ0VTUwogdWRwRW5kcG9pbnRUYWJsZV9yb3dyZXFfY3R4ICoKIHVkcEVuZHBvaW50VGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4KHVkcEVuZHBvaW50VGFibGVfbWliX2luZGV4ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pYl9pZHgpCkBAIC0xMDc0LDMgKzEwOTYsNCBAQAogCiAgICAgcmV0dXJuIHJvd3JlcV9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VRFBFTkRQT0lOVFRBQkxFX0VYVEVSTkFMX0FDQ0VTUyAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jCmluZGV4IGEyYTFjYmIuLjRjMzRjMzIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYworKysgYi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMKQEAgLTksNiArOSw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpZiBIQVZFX0lPX0gKQEAgLTk2LDYgKzk3LDI0IEBACiAjZGVmaW5lIHNldFBlcnJvcnN0YXR1cyh4KSBzbm1wX2xvZ19wZXJyb3IoeCkKICNlbmRpZgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodXRpbF9mdW5jcywgbGlibmV0c25tcG1pYnMpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzaGVsbF9jb21tYW5kLCB1dGlsX2Z1bmNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGdldF9leHRlbl9pbnN0YW5jZSwgdXRpbF9mdW5jcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjbGVhcl9jYWNoZSwgdXRpbF9mdW5jcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihmaW5kX2ZpZWxkLCB1dGlsX2Z1bmNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHBhcnNlX21pYm9pZCwgdXRpbF9mdW5jcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzdHJpbmdfYXBwZW5kX2ludCwgdXRpbF9mdW5jcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpbnRlcm5hbF9taWJfdGFibGUsIHV0aWxfZnVuY3MpCisKKyNpZiBkZWZpbmVkKEhBVkVfTElOVVhfUlRORVRMSU5LX0gpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocHJlZml4X2luZm9fYWxsLCB1dGlsX2Z1bmNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHByZWZpeF9pbmZvLCBwcmVmaXhfaW5mb19hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodXBkYXRlX3ByZWZpeF9pbmZvLCBwcmVmaXhfaW5mb19hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoZGVsZXRlX3ByZWZpeF9pbmZvLCBwcmVmaXhfaW5mb19hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoZmluZF9wcmVmaXhfaW5mbywgcHJlZml4X2luZm9fYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNyZWF0ZV9wcmVmaXhfaW5mbywgcHJlZml4X2luZm9fYWxsKQorI2VuZGlmIC8qIEhBVkVfTElOVVhfUlRORVRMSU5LX0ggKi8KIAogI2lmZGVmIE5FVFNOTVBfRVhDQUNIRVRJTUUKIHN0YXRpYyBsb25nICAgICBjYWNoZXRpbWU7CkBAIC0xMTAsNiArMTI5LDcgQEAKICAgICByZXR1cm4gbmV0c25tcF9ta3RlbXAoKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NIRUxMX0NPTU1BTkQKIGludAogc2hlbGxfY29tbWFuZChzdHJ1Y3QgZXh0ZW5zaWJsZSAqZXgpCiB7CkBAIC0xNDMsNiArMTYzLDcgQEAKICNlbmRpZgogICAgIHJldHVybiAoZXgtPnJlc3VsdCk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TSEVMTF9DT01NQU5EICovCiAKICNkZWZpbmUgTUFYT1VUUFVUIDMwMAogCkBAIC0xNjksNiArMTkwLDcgQEAKICAgICByZXR1cm4gKGV4LT5yZXN1bHQpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfR0VUX0VYVEVOX0lOU1RBTkNFCiBzdHJ1Y3QgZXh0ZW5zaWJsZSAqCiBnZXRfZXh0ZW5faW5zdGFuY2Uoc3RydWN0IGV4dGVuc2libGUgKmV4dGVuLCBzaXplX3QgaW5zdCkKIHsKQEAgLTE4MCw2ICsyMDIsNyBAQAogICAgICAgICBleHRlbiA9IGV4dGVuLT5uZXh0OwogICAgIHJldHVybiAoZXh0ZW4pOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfR0VUX0VYVEVOX0lOU1RBTkNFICovCiAKIHZvaWQKIHdhaXRfb25fZXhlYyhzdHJ1Y3QgZXh0ZW5zaWJsZSAqZXgpCkBAIC0xODgsNyArMjExLDcgQEAKICAgaW50IHJjOwogICBpZiAoZXgtPnRpZCAhPSAwICYmIGV4LT5waWQgIT0gMCkgewogICAgIEhBTkRMRSBoVGhyZWFkID0gZXgtPnRpZDsKLSAgICBIQU5ETEUgaFByb2Nlc3MgPSAoSEFORExFKSBleC0+cGlkOworICAgIEhBTkRMRSBoUHJvY2VzcyA9IGV4LT5waWQ7CiAgICAgcmMgPSBXYWl0Rm9yU2luZ2xlT2JqZWN0KGhQcm9jZXNzLCBORVRTTk1QX1RJTUVPVVRfV0FJVEZPUlNJTkdMRU9CSkVDVCk7CiAgICAgREVCVUdNU0dUKCgiZXhlYzp3YWl0X29uX2V4ZWMiLCJXYWl0Rm9yU2luZ2xlT2JqZWN0IHJjPSglZClcbiIscmMgKSk7CiAgICAgcmMgPSBDbG9zZUhhbmRsZSggaFRocmVhZCApOwpAQCAtMzQ1LDcgKzM2OCw3IEBACiAgICAgfQogICAgIAogICAgIC8qIFNldCBnbG9iYWwgY2hpbGQgcHJvY2VzcyBoYW5kbGUgKi8KLSAgICBleC0+cGlkID0gKGludClwaS5oUHJvY2VzczsKKyAgICBleC0+cGlkID0gcGkuaFByb2Nlc3M7CiAgICAgZXgtPnRpZCA9IHBpLmhUaHJlYWQ7CiAKICAgICAvKiBDbG9zZSBwaXBlIGhhbmRsZXMgdG8gbWFrZSBzdXJlIHRoYXQgbm8gaGFuZGxlcyB0byB0aGUgd3JpdGUgZW5kIG9mIHRoZQpAQCAtMzcxLDcgKzM5NCw3IEBACiAgICAgcmV0dXJuIC0xOwogfQogaW50Ci1nZXRfZXhlY19waXBlcyhjaGFyICpjbWQsIGludCAqZmRJbiwgaW50ICpmZE91dCwgaW50ICpwaWQpCitnZXRfZXhlY19waXBlcyhjaGFyICpjbWQsIGludCAqZmRJbiwgaW50ICpmZE91dCwgbmV0c25tcF9waWRfdCAqcGlkKQogewogLyogCUFsZXhhbmRlciBQcsO2bWVsLCBhbGV4YW5kZXJAcHJvZW1lbC5kZSAwOC8yNC8yMDA2CiAJVGhlIGZvbGxvd2luZyBjb2RlLCBpcyB0ZXN0ZWQgb24gcGljb3R1eCByZXYuIDEuMDEuCkBAIC02MDQsNyArNjI3LDcgQEAKICAgICBERUJVR01TR1RMKCgidXRpbF9mdW5jcyIsImNoaWxkIGR3UHJvY2Vzc0lkICh0YXNrIG1hbmFnZXIpOiAlZFxuIiwoaW50KXBpLmR3UHJvY2Vzc0lkKSk7CiAKICAgICAvKiBTZXQgZ2xvYmFsIGNoaWxkIHByb2Nlc3MgaGFuZGxlICovCi0gICAgKnBpZCA9IChpbnQpcGkuaFByb2Nlc3M7CisgICAgKnBpZCA9IHBpLmhQcm9jZXNzOwogCiAgICAgLyogQ2xlYW51cCAqLwogICAgIGlmICghQ2xvc2VIYW5kbGUocGkuaFRocmVhZCkpCkBAIC02MzMsNiArNjU2LDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NMRUFSX0NBQ0hFCiBpbnQKIGNsZWFyX2NhY2hlKGludCBhY3Rpb24sCiAgICAgICAgICAgICB1X2NoYXIgKiB2YXJfdmFsLApAQCAtNjU1LDYgKzY3OSw3IEBACiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0xFQVJfQ0FDSEUgKi8KIAogdm9pZAogcHJpbnRfbWliX29pZChvaWQgbmFtZVtdLCBzaXplX3QgbGVuKQpAQCAtNjk1LDYgKzcyMCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZV9tZXRob2QsIG1heCkpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRklORF9GSUVMRAogY2hhciAgICAgICAgICAgKgogZmluZF9maWVsZChjaGFyICpwdHIsIGludCBmaWVsZCkKIHsKQEAgLTczNSw3ICs3NjEsOSBAQAogICAgIH0KICAgICByZXR1cm4gKE5VTEwpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRklORF9GSUVMRCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUEFSU0VfTUlCT0lECiBpbnQKIHBhcnNlX21pYm9pZChjb25zdCBjaGFyICpidWYsIG9pZCAqIG9pZG91dCkKIHsKQEAgLTc1OSw3ICs3ODcsOSBAQAogICAgICAqLwogICAgIHJldHVybiBpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUEFSU0VfTUlCT0lEICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVFJJTkdfQVBQRU5EX0lOVAogdm9pZAogc3RyaW5nX2FwcGVuZF9pbnQoY2hhciAqcywgaW50IHZhbCkKIHsKQEAgLTc3NCwxMyArODA0LDE2IEBACiAgICAgc3RyY3B5KHMsIHRleHRWYWwpOwogICAgIHJldHVybjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUUklOR19BUFBFTkRfSU5UICovCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTlRFUk5BTF9NSUJfVEFCTEUKIAogc3RydWN0IGludGVybmFsX21pYl90YWJsZSB7CiAgICAgaW50ICAgICAgICAgICAgIG1heF9zaXplOyAgIC8qIFNpemUgb2YgdGhlIGN1cnJlbnQgZGF0YSB0YWJsZSAqLwogICAgIGludCAgICAgICAgICAgICBuZXh0X2luZGV4OyAvKiBJbmRleCBvZiB0aGUgbmV4dCBmcmVlIGVudHJ5ICovCiAgICAgaW50ICAgICAgICAgICAgIGN1cnJlbnRfaW5kZXg7ICAgICAgLyogSW5kZXggb2YgdGhlICdjdXJyZW50JyBlbnRyeSAqLwogICAgIGludCAgICAgICAgICAgICBjYWNoZV90aW1lb3V0OwotICAgIG1hcmtlcl90ICAgICAgICBjYWNoZV9tYXJrZXI7CisgICAgbWFya2VyX3QgICAgICAgIGNhY2hlX21hcmtlck07CiAgICAgUkVMT0FEICAgICAgICAgKnJlbG9hZDsgICAgIC8qIFJvdXRpbmUgdG8gcmVhZCBpbiB0aGUgZGF0YSAqLwogICAgIENPTVBBUkUgICAgICAgICpjb21wYXJlOyAgICAvKiBSb3V0aW5lIHRvIGNvbXBhcmUgdHdvIGVudHJpZXMgKi8KICAgICBpbnQgICAgICAgICAgICAgZGF0YV9zaXplOyAgLyogU2l6ZSBvZiBhbiBpbmRpdmlkdWFsIGVudHJ5ICovCkBAIC04MDEsNyArODM0LDcgQEAKICAgICB0LT5uZXh0X2luZGV4ID0gMTsgICAgICAgICAgLyogRG9uJ3QgdXNlIGluZGV4IDAgKi8KICAgICB0LT5jdXJyZW50X2luZGV4ID0gMTsKICAgICB0LT5jYWNoZV90aW1lb3V0ID0gdGltZW91dDsKLSAgICB0LT5jYWNoZV9tYXJrZXIgPSBOVUxMOworICAgIHQtPmNhY2hlX21hcmtlck0gPSBOVUxMOwogICAgIHQtPnJlbG9hZCA9IHJlbG9hZDsKICAgICB0LT5jb21wYXJlID0gY29tcGFyZTsKICAgICB0LT5kYXRhX3NpemUgPSBzaXplOwpAQCAtODIzLDggKzg1Niw5IEBACiAgICAgICogSWYgdGhlIHNhdmVkIGRhdGEgaXMgZmFpcmx5IHJlY2VudCwKICAgICAgKiAgICB3ZSBkb24ndCBuZWVkIHRvIHJlbG9hZCBpdAogICAgICAqLwotICAgIGlmICh0YWJsZS0+Y2FjaGVfbWFya2VyICYmCi0gICAgICAgICEoYXRpbWVfcmVhZHkodGFibGUtPmNhY2hlX21hcmtlciwgdGFibGUtPmNhY2hlX3RpbWVvdXQgKiAxMDAwKSkpCisgICAgaWYgKHRhYmxlLT5jYWNoZV9tYXJrZXJNICYmCisgICAgICAgICEobmV0c25tcF9yZWFkeV9tb25vdG9uaWModGFibGUtPmNhY2hlX21hcmtlck0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUtPmNhY2hlX3RpbWVvdXQgKiAxMDAwKSkpCiAgICAgICAgIHJldHVybiAxOwogCiAKQEAgLTgzNCwxNSArODY4LDEyIEBACiAgICAgICogTi5COiAgVXBkYXRlIHRoZSBjYWNoZSBtYXJrZXIgKmJlZm9yZSogY2FsbGluZwogICAgICAqICAgdGhpcyByb3V0aW5lLCB0byBhdm9pZCBwcm9ibGVtcyB3aXRoIHJlY3Vyc2lvbgogICAgICAqLwotICAgIGlmICghdGFibGUtPmNhY2hlX21hcmtlcikKLSAgICAgICAgdGFibGUtPmNhY2hlX21hcmtlciA9IGF0aW1lX25ld01hcmtlcigpOwotICAgIGVsc2UKLSAgICAgICAgYXRpbWVfc2V0TWFya2VyKHRhYmxlLT5jYWNoZV9tYXJrZXIpOworICAgIG5ldHNubXBfc2V0X21vbm90b25pY19tYXJrZXIoJnRhYmxlLT5jYWNoZV9tYXJrZXJNKTsKIAogICAgIHRhYmxlLT5uZXh0X2luZGV4ID0gMTsKICAgICBpZiAodGFibGUtPnJlbG9hZCgobWliX3RhYmxlX3QpIHRhYmxlKSA8IDApIHsKLSAgICAgICAgZnJlZSh0YWJsZS0+Y2FjaGVfbWFya2VyKTsKLSAgICAgICAgdGFibGUtPmNhY2hlX21hcmtlciA9IE5VTEw7CisgICAgICAgIGZyZWUodGFibGUtPmNhY2hlX21hcmtlck0pOworICAgICAgICB0YWJsZS0+Y2FjaGVfbWFya2VyTSA9IE5VTEw7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICB0YWJsZS0+Y3VycmVudF9pbmRleCA9IDE7CkBAIC05NTIsOCArOTgzLDExIEBACiAgICAgKm1heF9pZHggPSB0YWJsZS0+bmV4dF9pbmRleCAtIDE7CiAgICAgcmV0dXJuIHRhYmxlLT5kYXRhOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5URVJOQUxfTUlCX1RBQkxFICovCiAKICNpZiBkZWZpbmVkKEhBVkVfTElOVVhfUlRORVRMSU5LX0gpCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DUkVBVEVfUFJFRklYX0lORk8KIHByZWZpeF9jYnggKm5ldF9zbm1wX2NyZWF0ZV9wcmVmaXhfaW5mbyh1bnNpZ25lZCBsb25nIE9uTGlua0ZsYWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBBdXRvbm9tb3VzRmxhZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICppbjZwdHIpCkBAIC05NzQsNyArMTAwOCw5IEBACiAKICAgIHJldHVybiBub2RlOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ1JFQVRFX1BSRUZJWF9JTkZPICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9GSU5EX1BSRUZJWF9JTkZPCiBpbnQgbmV0X3NubXBfZmluZF9wcmVmaXhfaW5mbyhwcmVmaXhfY2J4ICoqaGVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmFkZHJlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhfY2J4ICpub2RlX3RvX2ZpbmQpCkBAIC05OTUsNyArMTAzMSw5IEBACiAgICAgfSBlbHNlCiAgICAgICAgcmV0dXJuIDA7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9GSU5EX1BSRUZJWF9JTkZPICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VUERBVEVfUFJFRklYX0lORk8KIGludCBuZXRfc25tcF91cGRhdGVfcHJlZml4X2luZm8ocHJlZml4X2NieCAqKmhlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeF9jYnggKm5vZGVfdG9fdXBkYXRlKQogewpAQCAtMTAxMCw2ICsxMDQ4LDcgQEAKICAgICB9IGVsc2UKICAgICAgICByZXR1cm4gMDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VQREFURV9QUkVGSVhfSU5GTyAqLwogCiBpbnQgbmV0X3NubXBfc2VhcmNoX3VwZGF0ZV9wcmVmaXhfaW5mbyhwcmVmaXhfY2J4ICoqaGVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeF9jYnggKm5vZGVfdG9fdXNlLApAQCAtMTA1OCw2ICsxMDk3LDcgQEAKICAgICB9CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ERUxFVEVfUFJFRklYX0lORk8KIGludCBuZXRfc25tcF9kZWxldGVfcHJlZml4X2luZm8ocHJlZml4X2NieCAqKmhlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmFkZHJlc3MpCiB7CkBAIC0xMDgzLDUgKzExMjMsNyBAQAogICAgIH0KICAgICByZXR1cm4gMDsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfREVMRVRFX1BSRUZJWF9JTkZPICovCiAKKyNlbmRpZiAvKiBIQVZFX0xJTlVYX1JUTkVUTElOS19IICovCisgICAgICAgICAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaCBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaAppbmRleCBkMTZiNmM0Li43ZjU5NzgwIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5oCkBAIC00LDE1ICs0LDE0IEBACiAjaWZuZGVmIF9NSUJHUk9VUF9VVElMX0ZVTkNTX0gKICNkZWZpbmUgX01JQkdST1VQX1VUSUxfRlVOQ1NfSAogCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL0V4aXQpCiBjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQogY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlKQotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9yZXN0YXJ0KQogCi0jaW5jbHVkZSAidXRpbF9mdW5jcy9FeGl0LmgiCisjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCiAjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MvcmVzdGFydC5oIgogCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewpAQCAtMzcsNyArMzYsMTEgQEAKIGludCAgICAgICAgICAgICBleGVjX2NvbW1hbmQoc3RydWN0IGV4dGVuc2libGUgKik7CiBzdHJ1Y3QgZXh0ZW5zaWJsZSAqZ2V0X2V4dGVuX2luc3RhbmNlKHN0cnVjdCBleHRlbnNpYmxlICosIHNpemVfdCk7CiBpbnQgICAgICAgICAgICAgZ2V0X2V4ZWNfb3V0cHV0KHN0cnVjdCBleHRlbnNpYmxlICopOwotaW50ICAgICAgICAgICAgIGdldF9leGVjX3BpcGVzKGNoYXIgKmNtZCwgaW50ICpmZEluLCBpbnQgKmZkT3V0LCBpbnQgKnBpZCk7CisjaWYgZGVmaW5lZChXSU4zMikgJiYgIWRlZmluZWQoY3lnd2luKQoraW50ICAgICAgICAgICAgIGdldF9leGVjX3BpcGVzKGNoYXIgKmNtZCwgaW50ICpmZEluLCBpbnQgKmZkT3V0LCBIQU5ETEUgKnBpZCk7CisjZWxzZQoraW50ICAgICAgICAgICAgIGdldF9leGVjX3BpcGVzKGNoYXIgKmNtZCwgaW50ICpmZEluLCBpbnQgKmZkT3V0LCBwaWRfdCAqcGlkKTsKKyNlbmRpZgogV3JpdGVNZXRob2QgICAgIGNsZWFyX2NhY2hlOwogdm9pZCAgICAgICAgICAgIHByaW50X21pYl9vaWQob2lkICosIHNpemVfdCk7CiB2b2lkICAgICAgICAgICAgc3ByaW50X21pYl9vaWQoY2hhciAqLCBjb25zdCBvaWQgKiwgc2l6ZV90KTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmMgYi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5jCmluZGV4IDFjOTQxYjMuLjhlMTU3YWUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuYwpAQCAtMjIsMjkgKzIyLDEwNiBAQAogIyBkZWZpbmUgU09DS0VUX1RZUEVfMSAgICAgICJzb2NrZXQ6WyIKICMgZGVmaW5lIFNPQ0tFVF9UWVBFXzIgICAgICAiWzAwMDBdOiIKIAotcGlkX3QKLW5ldHNubXBfZ2V0X3BpZF9mcm9tX2lub2RlKGlubzY0X3QgaW5vZGUpCisvKiBEZWZpbml0aW9uIG9mIGEgc2ltcGxlIG9wZW4gYWRkcmVzc2luZyBoYXNoIHRhYmxlLiovCisvKiBXaGVuIGlub2RlID09IDAgdGhlbiB0aGUgZW50cnkgaXMgZW1wdHkuKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBpbm82NF90IGlub2RlOworICAgIHBpZF90ICAgcGlkOworfSBpbm9kZV9waWRfZW50X3Q7CisKKyNkZWZpbmUgSU5PREVfUElEX1RBQkxFX01BWF9DT0xMSVNJT05TIDEwMDAKKyNkZWZpbmUgSU5PREVfUElEX1RBQkxFX0xFTkdUSCAyMDAwMAorI2RlZmluZSBJTk9ERV9QSURfVEFCTEVfU0laRSAoSU5PREVfUElEX1RBQkxFX0xFTkdUSCAqIHNpemVvZiAoaW5vZGVfcGlkX2VudF90KSkKK3N0YXRpYyBpbm9kZV9waWRfZW50X3QgIGlub2RlX3BpZF90YWJsZVtJTk9ERV9QSURfVEFCTEVfTEVOR1RIXTsKKworc3RhdGljIHVpbnQzMl90CitfaGFzaCh1aW50NjRfdCBrZXkpCit7CisgICAga2V5ID0gKH5rZXkpICsgKGtleSA8PCAxOCk7CisgICAga2V5ID0ga2V5IF4gKGtleSA+PiAzMSk7CisgICAga2V5ID0ga2V5ICogMjE7CisgICAga2V5ID0ga2V5IF4gKGtleSA+PiAxMSk7CisgICAga2V5ID0ga2V5ICsgKGtleSA8PCA2KTsKKyAgICBrZXkgPSBrZXkgXiAoa2V5ID4+IDIyKTsKKyAgICByZXR1cm4ga2V5OworfQorCitzdGF0aWMgdm9pZAorX2NsZWFyKHZvaWQpCit7CisgICAgLyogQ2xlYXIgdGhlIGlub2RlL3BpZCBoYXNoIHRhYmxlLiovCisgICAgbWVtc2V0KGlub2RlX3BpZF90YWJsZSwgMCwgSU5PREVfUElEX1RBQkxFX1NJWkUpOworfQorCitzdGF0aWMgdm9pZAorX3NldChpbm82NF90IGlub2RlLCBwaWRfdCBwaWQpCit7CisgICAgdWludDMyX3QgICAgICAgIGhhc2ggPSBfaGFzaChpbm9kZSk7CisgICAgdWludDMyX3QgICAgICAgIGk7CisgICAgaW5vZGVfcGlkX2VudF90ICplbnRyeTsKKworICAgIC8qIFdlIHdpbGwgdHJ5IGZvciBhIG1heGltdW0gbnVtYmVyIG9mIGNvbGxpc2lvbnMuKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgSU5PREVfUElEX1RBQkxFX01BWF9DT0xMSVNJT05TOyBpKyspIHsKKyAgICAgICAgZW50cnkgPSAmaW5vZGVfcGlkX3RhYmxlWyhoYXNoICsgaSkgJSBJTk9ERV9QSURfVEFCTEVfTEVOR1RIXTsKKworICAgICAgICAvKiBDaGVjayBpZiB0aGlzIGVudHJ5IGlzIGVtcHR5LCBvciB0aGUgYWN0dWFsIGlub2RlIHdlIHdlcmUgbG9va2luZyBmb3IuKi8KKyAgICAgICAgLyogVGhlIHNlY29uZCBwYXJ0IHNob3VsZCBuZXZlciBoYXBwZW4sIGJ1dCBpdCBpcyBoZXJlIGZvciBjb21wbGV0ZW5lc3MuKi8KKyAgICAgICAgaWYgKGVudHJ5LT5pbm9kZSA9PSAwIHx8IGVudHJ5LT5pbm9kZSA9PSBpbm9kZSkgeworICAgICAgICAgICAgZW50cnktPmlub2RlID0gaW5vZGU7CisgICAgICAgICAgICBlbnRyeS0+cGlkID0gcGlkOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgLyogV2Ugd2lsbCBzaWxlbnRseSBmYWlsIHRvIGluc2VydCB0aGUgaW5vZGUgaWYgd2UgZ2V0IHRvbyBtYW55IGNvbGxpc2lvbnMuKi8KKyAgICAvKiB0aGUgX2dldCBmdW5jdGlvbiB3aWxsIHJldHVybiBhIHplcm8gcGlkLiovCit9CisKK3N0YXRpYyBwaWRfdCBfZ2V0KGlubzY0X3QgaW5vZGUpCit7CisgICAgdWludDMyX3QgICAgICAgIGhhc2ggPSBfaGFzaChpbm9kZSk7CisgICAgdWludDMyX3QgICAgICAgIGk7CisgICAgaW5vZGVfcGlkX2VudF90ICplbnRyeTsKKworICAgIC8qIFdlIHdpbGwgdHJ5IGZvciBhIG1heGltdW0gbnVtYmVyIG9mIGNvbGxpc2lvbnMuKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgSU5PREVfUElEX1RBQkxFX01BWF9DT0xMSVNJT05TOyBpKyspIHsKKyAgICAgICAgZW50cnkgPSAmaW5vZGVfcGlkX3RhYmxlWyhoYXNoICsgaSkgJSBJTk9ERV9QSURfVEFCTEVfTEVOR1RIXTsKKworICAgICAgICAvKiBDaGVjayBpZiB0aGlzIGVudHJ5IGlzIGVtcHR5LCBvciB0aGUgYWN0dWFsIGlub2RlIHdlIHdlcmUgbG9va2luZyBmb3IuKi8KKyAgICAgICAgLyogSWYgdGhlIGVudHJ5IGlzIGVtcHR5IGl0IG1lYW5zIHRoZSBpbm9kZSBpcyBub3QgaW4gdGhlIHRhYmxlIGFuZCB3ZSovCisgICAgICAgIC8qIHNob3VsZCByZXR1cm4gMCwgdGhlIGVudHJ5IHdpbGwgYWxzbyBoYXZlIGEgemVybyBwaWQuKi8KKyAgICAgICAgaWYgKGVudHJ5LT5pbm9kZSA9PSAwIHx8IGVudHJ5LT5pbm9kZSA9PSBpbm9kZSkgeworICAgICAgICAgICAgcmV0dXJuIGVudHJ5LT5waWQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBXZSBjb3VsZCBub3QgZmluZCB0aGUgcGlkLiovCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQKK25ldHNubXBfZ2V0X3BpZF9mcm9tX2lub2RlX2luaXQodm9pZCkKIHsKICAgICBESVIgICAgICAgICAgICAqcHJvY2RpcnMgPSBOVUxMLCAqcGlkZGlycyA9IE5VTEw7CiAgICAgY2hhciAgICAgICAgICAgIHBhdGhfbmFtZVtQQVRIX01BWCArIDFdOwogICAgIGNoYXIgICAgICAgICAgICBzb2NrZXRfbG5rW05BTUVfTUFYICsgMV07Ci0gICAgaW50ICAgICAgICAgICAgIGZpbGVsZW4gPSAwLCByZWFkbGVuID0gMCwgaWZsYWcgPSAwOworICAgIGludCAgICAgICAgICAgICBmaWxlbGVuID0gMCwgcmVhZGxlbiA9IDA7CiAgICAgc3RydWN0IGRpcmVudCAgKnByb2NpbmZvLCAqcGlkaW5mbzsKICAgICBwaWRfdCAgICAgICAgICAgcGlkID0gMDsKICAgICBpbm82NF90ICAgICAgICAgdGVtcF9pbm9kZTsKIAotICAgIGlmIChpbm9kZSA9PSAwKSB7Ci0gICAgICAgIC8qIGFuIGlub2RlIHNldCB0byB6ZXJvIG1lYW5zIGl0IGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggYSBwcm9jZXNzLiAqLwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgX2NsZWFyKCk7CiAKKyAgICAvKiB3YWxrIG92ZXIgYWxsIGRpcmVjdG9yaWVzIGluIC9wcm9jKi8KICAgICBpZiAoIShwcm9jZGlycyA9IG9wZW5kaXIoUFJPQ19QQVRIKSkpIHsKICAgICAgICAgTkVUU05NUF9MT0dPTkNFKChMT0dfRVJSLCAic25tcGQ6IGNhbm5vdCBvcGVuIC9wcm9jXG4iKSk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgd2hpbGUgKChwcm9jaW5mbyA9IHJlYWRkaXIocHJvY2RpcnMpKSAhPSBOVUxMKSB7Ci0JY29uc3QgY2hhciogbmFtZSA9IHByb2NpbmZvLT5kX25hbWU7CisgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBwcm9jaW5mby0+ZF9uYW1lOworCisgICAgICAgIC8qIEEgcGlkIGRpcmVjdG9yeSBvbmx5IGNvbnRhaW5zIGRpZ2l0cywgY2hlY2sgZm9yIHRob3NlLiovCiAgICAgICAgIGZvciAoOyAqbmFtZTsgbmFtZSsrKSB7CiAgICAgICAgICAgICBpZiAoIWlzZGlnaXQoKm5hbWUpKQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTIsMTQgKzEyOSwxNiBAQAogICAgICAgICBpZigqbmFtZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCisgICAgICAgIC8qIENyZWF0ZSB0aGUgL3Byb2MvPHBpZD4vZmQvIHBhdGggbmFtZS4qLwogICAgICAgICBtZW1zZXQocGF0aF9uYW1lLCAnXDAnLCBQQVRIX01BWCArIDEpOwogICAgICAgICBmaWxlbGVuID0gc25wcmludGYocGF0aF9uYW1lLCBQQVRIX01BWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST0NfUEFUSCAiLyVzL2ZkLyIsIHByb2NpbmZvLT5kX25hbWUpOwogICAgICAgICBpZiAoZmlsZWxlbiA8PSAwIHx8IFBBVEhfTUFYIDwgZmlsZWxlbikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCisgICAgICAgIC8qIHdhbGsgb3ZlciBhbGwgdGhlIGZpbGVzIGluIC9wcm9jLzxwaWQ+L2ZkLyovCiAgICAgICAgIGlmICghKHBpZGRpcnMgPSBvcGVuZGlyKHBhdGhfbmFtZSkpKQotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHdoaWxlICgocGlkaW5mbyA9IHJlYWRkaXIocGlkZGlycykpICE9IE5VTEwpIHsKICAgICAgICAgICAgIGlmIChmaWxlbGVuICsgc3RybGVuKHBpZGluZm8tPmRfbmFtZSkgPiBQQVRIX01BWCkKQEAgLTY3LDI5ICsxNDYsNDEgQEAKIAogICAgICAgICAgICAgc3RyY3B5KHBhdGhfbmFtZSArIGZpbGVsZW4sIHBpZGluZm8tPmRfbmFtZSk7CiAKKyAgICAgICAgICAgIC8qIFRoZSBmaWxlIGRpc2NyaXB0b3IgaXMgYSBzeW1ib2xpYyBsaW5rIHRvIGEgc29ja2V0IG9yIGEgZmlsZS4qLworICAgICAgICAgICAgLyogVGh1cyByZWFkIHRoZSBzeW1ib2xpYyBsaW5rLiovCiAgICAgICAgICAgICBtZW1zZXQoc29ja2V0X2xuaywgJ1wwJywgTkFNRV9NQVggKyAxKTsKICAgICAgICAgICAgIHJlYWRsZW4gPSByZWFkbGluayhwYXRoX25hbWUsIHNvY2tldF9sbmssIE5BTUVfTUFYKTsKICAgICAgICAgICAgIGlmIChyZWFkbGVuIDwgMCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICAgICAgc29ja2V0X2xua1tyZWFkbGVuXSA9ICdcMCc7CiAKKyAgICAgICAgICAgIC8qIENoZWNrIGlmIHRvIHNlZSBpZiB0aGUgZmlsZSBkZXNjcmlwdG9yIGlzIGEgc29ja2V0IGJ5IGNvbXBhcmluZyovCisgICAgICAgICAgICAvKiB0aGUgc3RhcnQgdG8gYSBzdHJpbmcuIEFsc28gZXh0cmFjdCB0aGUgaW5vZGUgbnVtYmVyIGZyb20gdGhpcyovCisgICAgICAgICAgICAvKiBzeW1ib2xpYyBsaW5rLiovCiAgICAgICAgICAgICBpZiAoIXN0cm5jbXAoc29ja2V0X2xuaywgU09DS0VUX1RZUEVfMSwgOCkpIHsKICAgICAgICAgICAgICAgICB0ZW1wX2lub2RlID0gc3RydG91bGwoc29ja2V0X2xuayArIDgsIE5VTEwsIDApOwogICAgICAgICAgICAgfSBlbHNlIGlmICghc3RybmNtcChzb2NrZXRfbG5rLCBTT0NLRVRfVFlQRV8yLCA3KSkgewogICAgICAgICAgICAgICAgIHRlbXBfaW5vZGUgPSBzdHJ0b3VsbChzb2NrZXRfbG5rICsgNywgTlVMTCwgMCk7Ci0gICAgICAgICAgICB9IGVsc2UKLQkJdGVtcF9pbm9kZSA9IDA7Ci0gICAgICAgICAgICBpZiAoaW5vZGUgPT0gdGVtcF9pbm9kZSkgeworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0ZW1wX2lub2RlID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogQWRkIHRoZSBpbm9kZS9waWQgY29tYmluYXRpb24gdG8gb3VyIGhhc2ggdGFibGUuKi8KKyAgICAgICAgICAgIGlmICh0ZW1wX2lub2RlICE9IDApIHsKICAgICAgICAgICAgICAgICBwaWQgPSBzdHJ0b3VsKHByb2NpbmZvLT5kX25hbWUsIE5VTEwsIDApOwotICAgICAgICAgICAgICAgIGlmbGFnID0gMTsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBfc2V0KHRlbXBfaW5vZGUsIHBpZCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgY2xvc2VkaXIocGlkZGlycyk7Ci0gICAgICAgIGlmIChpZmxhZyA9PSAxKQotICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGlmIChwcm9jZGlycykKICAgICAgICAgY2xvc2VkaXIocHJvY2RpcnMpOwotICAgIHJldHVybiBwaWQ7CiB9CisKK3BpZF90CituZXRzbm1wX2dldF9waWRfZnJvbV9pbm9kZShpbm82NF90IGlub2RlKQoreworICAgIHJldHVybiBfZ2V0KGlub2RlKTsKK30KKwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuaCBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmgKaW5kZXggMmFkMDRlMS4uN2M1ODc2MCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuaAorKysgYi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KIAordm9pZCBuZXRzbm1wX2dldF9waWRfZnJvbV9pbm9kZV9pbml0KHZvaWQpOwogcGlkX3QgbmV0c25tcF9nZXRfcGlkX2Zyb21faW5vZGUoaW5vNjRfdCk7CiAKICNlbmRpZiAvKiBORVRTTk1QX01JQkdST1VQX1VUSUxfRlVOQ1NfSEVBREVSX1NJTVBMRV9UQUJMRV9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmMgYi9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmMKaW5kZXggZDFmN2VmYy4uZTJhZWE3NCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9pcXVlcnkuYwpAQCAtMSw5ICsxLDE5IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKICNpbmNsdWRlICJ1dGlsaXRpZXMvaXF1ZXJ5LmgiCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcXVlcnlfYWxsLCBsaWJuZXRzbm1wbWlicykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcXVlcnksIGlxdWVyeV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXF1ZXJ5X2NvbW11bml0eV9zZXNzaW9uLCBpcXVlcnlfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlxdWVyeV9wZHVfc2Vzc2lvbiwgaXF1ZXJ5X2FsbCkKKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocXVlcnlfc2V0X2RlZmF1bHRfc2Vzc2lvbikKKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lRVUVSWQorCiB2b2lkCiBuZXRzbm1wX3BhcnNlX2lxdWVyeVNlY0xldmVsKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpsaW5lKQogewpAQCAtMTIwLDYgKzEzMCw3IEBACiAgICAgICoKICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUVVFUllfUERVX1NFU1NJT04KIG5ldHNubXBfc2Vzc2lvbiAqbmV0c25tcF9pcXVlcnlfcGR1X3Nlc3Npb24obmV0c25tcF9wZHUqIHBkdSkgewogICAgIGlmICghcGR1KQogICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTM4LDYgKzE0OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZHUtPnNlY3VyaXR5RW5naW5lSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZHUtPnNlY3VyaXR5RW5naW5lSURMZW4pOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVFVRVJZX1BEVV9TRVNTSU9OICovCiAKIG5ldHNubXBfc2Vzc2lvbiAqbmV0c25tcF9pcXVlcnlfdXNlcl9zZXNzaW9uKGNoYXIqIHNlY05hbWUpewogICAgIHVfY2hhciBlSURbU05NUF9NQVhCVUZfU01BTExdOwpAQCAtMTQ5LDYgKzE2MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX1NFQ19MRVZFTF9BVVRITk9QUklWLCBlSUQsIGVsZW4pOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVFVRVJZX0NPTU1VTklUWV9TRVNTSU9OCiBuZXRzbm1wX3Nlc3Npb24gKm5ldHNubXBfaXF1ZXJ5X2NvbW11bml0eV9zZXNzaW9uKCBjaGFyKiBjb21tdW5pdHksIGludCB2ZXJzaW9uICkgeyAKICAgICB1X2NoYXIgZUlEW1NOTVBfTUFYQlVGX1NNQUxMXTsKICAgICBzaXplX3QgZWxlbiA9IHNubXB2M19nZXRfZW5naW5lSUQoZUlELCBzaXplb2YoZUlEKSk7CkBAIC0xNTYsNiArMTY5LDcgQEAKICAgICByZXR1cm4gbmV0c25tcF9pcXVlcnlfc2Vzc2lvbiggY29tbXVuaXR5LCB2ZXJzaW9uLCB2ZXJzaW9uKzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX1NFQ19MRVZFTF9OT0FVVEgsIGVJRCwgZWxlbik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUVVFUllfQ09NTVVOSVRZX1NFU1NJT04gKi8KIAogbmV0c25tcF9zZXNzaW9uICpuZXRzbm1wX2lxdWVyeV9zZXNzaW9uKGNoYXIqIHNlY05hbWUsICAgaW50ICAgdmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICBzZWNNb2RlbCwgIGludCAgIHNlY0xldmVsLApAQCAtMTkyLDMgKzIwNiw3IEBACiAgICAgcmV0dXJuIHNzOwogfQogCisjZWxzZSAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lRVUVSWSAqLworbmV0c25tcF9mZWF0dXJlX3VudXNlZChpcXVlcnkpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVFVRVJZICovCisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9vdmVycmlkZS5jIGIvYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL292ZXJyaWRlLmMKaW5kZXggZGVhZGYwZS4uMmIwODNhOSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL292ZXJyaWRlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL292ZXJyaWRlLmMKQEAgLTUwLDYgKzUwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgZGF0YS0+dmFsdWUsIGRhdGEtPnZhbHVlX2xlbik7CiAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgICAgIGlmIChyZXF1ZXN0cy0+cmVxdWVzdHZiLT50eXBlICE9IGRhdGEtPnR5cGUpCiAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLCBTTk1QX0VSUl9XUk9OR1RZUEUpOwpAQCAtODcsNiArODgsNyBAQAogICAgIGNhc2UgTU9ERV9TRVRfQ09NTUlUOgogICAgICAgICBTTk1QX0ZSRUUoZGF0YS0+c2V0X3NwYWNlKTsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgZGVmYXVsdDoKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInVuc3VwcG9ydGVkIG1vZGUgaW4gb3ZlcnJpZGUgaGFuZGxlclxuIik7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC93aW5FeHRETEwuYyBiL2FnZW50L21pYmdyb3VwL3dpbkV4dERMTC5jCmluZGV4IGQ3OGMxODUuLjAwZmI4MTAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3dpbkV4dERMTC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3dpbkV4dERMTC5jCkBAIC04Miw2ICs4Miw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaD4KIAogI2lmZGVmIFVTSU5HX1dJTkVYVERMTF9NT0RVTEUKQEAgLTEwMSw2ICsxMDIsOCBAQAogI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKICNpbmNsdWRlICJ3aW5FeHRETEwuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUob2lkX2lzX3N1YnRyZWUpCisKIAogI2RlZmluZSBNQVhfVkFMVUVfTkFNRSAgICAgICAgICAxNjM4MwogI2RlZmluZSBNU19BU05fVUlOVEVHRVIzMiBNU19BU05fVU5TSUdORUQzMgpkaWZmIC0tZ2l0IGEvYWdlbnQvc25tcF9hZ2VudC5jIGIvYWdlbnQvc25tcF9hZ2VudC5jCmluZGV4IDA5NDY0MjMuLmI5NmQ2NTAgMTAwNjQ0Ci0tLSBhL2FnZW50L3NubXBfYWdlbnQuYworKysgYi9hZ2VudC9zbm1wX2FnZW50LmMKQEAgLTQ0LDYgKzQ0LDcgQEAKICAqIEB7CiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaWZkZWYgSEFWRV9MSU1JVFNfSApAQCAtMTA3LDYgKzEwOCwyNSBAQAogI2luY2x1ZGUgInNtdXgvc211eC5oIgogI2VuZGlmCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzbm1wX2FnZW50LCBsaWJuZXRzbm1wYWdlbnQpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoYWdlbnRfZGVidWdnaW5nX3V0aWxpdGllcywgbGlibmV0c25tcGFnZW50KQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoYWxsb2NhdGVfZ2xvYmFsY2FjaGVpZCwgc25tcF9hZ2VudCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihmcmVlX2FnZW50X3NubXBfc2Vzc2lvbl9ieV9zZXNzaW9uLCBzbm1wX2FnZW50KQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNoZWNrX2FsbF9yZXF1ZXN0c19lcnJvciwgc25tcF9hZ2VudCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjaGVja19yZXF1ZXN0c19lcnJvciwgc25tcF9hZ2VudCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZXF1ZXN0X3NldF9lcnJvcl9pZHgsIHNubXBfYWdlbnQpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc2V0X2FnZW50X3VwdGltZSwgc25tcF9hZ2VudCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihhZ2VudF9jaGVja19hbmRfcHJvY2Vzcywgc25tcF9hZ2VudCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGR1bXBfc2Vzc19saXN0LCBhZ2VudF9kZWJ1Z2dpbmdfdXRpbGl0aWVzKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoYWdlbnRfcmVtb3ZlX2xpc3RfZGF0YSwgbmV0c25tcF91bnVzZWQpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc2V0X2FsbF9yZXF1ZXN0c19lcnJvciwgbmV0c25tcF91bnVzZWQpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoYWRkcmNhY2hlX2FnZSwgbmV0c25tcF91bnVzZWQpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoZGVsZXRlX3N1YnRyZWVfY2FjaGUsIG5ldHNubXBfdW51c2VkKQorCisKIE5FVFNOTVBfSU5MSU5FIHZvaWQKIG5ldHNubXBfYWdlbnRfYWRkX2xpc3RfZGF0YShuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYXJpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZGF0YV9saXN0ICpub2RlKQpAQCAtMTIwLDYgKzE0MCw3IEBACiAgICAgfQogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQUdFTlRfUkVNT1ZFX0xJU1RfREFUQQogTkVUU05NUF9JTkxJTkUgaW50CiBuZXRzbm1wX2FnZW50X3JlbW92ZV9saXN0X2RhdGEobmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFyaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogbmFtZSkKQEAgLTEyOSw2ICsxNTAsNyBAQAogCiAgICAgcmV0dXJuIG5ldHNubXBfcmVtb3ZlX2xpc3Rfbm9kZSgmYXJpLT5hZ2VudF9kYXRhLCBuYW1lKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0FHRU5UX1JFTU9WRV9MSVNUX0RBVEEgKi8KIAogTkVUU05NUF9JTkxJTkUgdm9pZCAgICAqCiBuZXRzbm1wX2FnZW50X2dldF9saXN0X2RhdGEobmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFyaSwKQEAgLTE4MSw3ICsyMDMsNyBAQAogc3RydWN0IGFkZHJDYWNoZSB7CiAgICAgY2hhciAgICAgICAgICAgKmFkZHI7CiAgICAgaW50ICAgICAgICAgICAgc3RhdHVzOwotICAgIHN0cnVjdCB0aW1ldmFsIGxhc3RIaXQ7CisgICAgc3RydWN0IHRpbWV2YWwgbGFzdEhpdE07CiB9OwogCiBzdGF0aWMgc3RydWN0IGFkZHJDYWNoZSBhZGRyQ2FjaGVbU05NUF9BRERSQ0FDSEVfU0laRV07CkBAIC0yMjcsMTEgKzI0OSwxMyBAQAogCiBpbnQgICAgICBuZXRzbm1wX3J1bm5pbmcgPSAxOwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQUxMT0NBVEVfR0xPQkFMQ0FDSEVJRAogaW50CiBuZXRzbm1wX2FsbG9jYXRlX2dsb2JhbGNhY2hlaWQodm9pZCkKIHsKICAgICByZXR1cm4gKytjdXJyZW50X2dsb2JhbGlkOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQUxMT0NBVEVfR0xPQkFMQ0FDSEVJRCAqLwogCiBpbnQKIG5ldHNubXBfZ2V0X2xvY2FsX2NhY2hpZChuZXRzbm1wX2NhY2hlbWFwICpjYWNoZV9zdG9yZSwgaW50IGdsb2JhbGlkKQpAQCAtNTk0LDE1ICs2MTgsNyBAQAogICAgIH0KIH0KIAotCi1pbnQKLWdldE5leHRTZXNzSUQodm9pZCkKLXsKLSAgICBzdGF0aWMgaW50ICAgICAgU2Vzc2lvbklEID0gMDsKLQotICAgIHJldHVybiArK1Nlc3Npb25JRDsKLX0KLQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0FHRU5UX0NIRUNLX0FORF9QUk9DRVNTCiAvKioKICAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGZvciBwYWNrZXRzIGFycml2aW5nIG9uIHRoZSBTTk1QIHBvcnQgYW5kCiAgKiBwcm9jZXNzZXMgdGhlbShzbm1wX3JlYWQpIGlmIHNvbWUgYXJlIGZvdW5kLCB1c2luZyB0aGUgc2VsZWN0KCkuIElmIGJsb2NrCkBAIC02ODUsNyArNzAxLDcgQEAKIAogICAgIHJldHVybiBjb3VudDsKIH0KLQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQUdFTlRfQ0hFQ0tfQU5EX1BST0NFU1MgKi8KIAogLyoKICAqIFNldCB1cCB0aGUgYWRkcmVzcyBjYWNoZS4gIApAQCAtNzQxLDcgKzc1Nyw3IEBACiAgICAgLyoKICAgICAgKiBGaXJzdCBnZXQgdGhlIGN1cnJlbnQgYW5kIG9sZGVzdCBhbGxvd2FibGUgdGltZXN0YW1wcwogICAgICAqLwotICAgIGdldHRpbWVvZmRheSgmbm93LCAoc3RydWN0IHRpbWV6b25lKikgTlVMTCk7CisgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZub3cpOwogICAgIGFnZWQudHZfc2VjID0gbm93LnR2X3NlYyAtIFNOTVBfQUREUkNBQ0hFX01BWEFHRTsKICAgICBhZ2VkLnR2X3VzZWMgPSBub3cudHZfdXNlYzsKIApAQCAtNzYxLDggKzc3Nyw4IEBACiAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgKiBmb3VuZCBhIG1hdGNoCiAgICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgYWRkckNhY2hlW2ldLmxhc3RIaXQgPSBub3c7Ci0gICAgICAgICAgICAgICAgaWYgKHRpbWVyY21wKCZhZGRyQ2FjaGVbaV0ubGFzdEhpdCwgJmFnZWQsIDwpKQorICAgICAgICAgICAgICAgIGFkZHJDYWNoZVtpXS5sYXN0SGl0TSA9IG5vdzsKKyAgICAgICAgICAgICAgICBpZiAodGltZXJjbXAoJmFkZHJDYWNoZVtpXS5sYXN0SGl0TSwgJmFnZWQsIDwpKQogCQkgICAgcmMgPSAxOyAvKiBzaG91bGQgaGF2ZSBleHBpcmVkLCBzbyBpcyBuZXcgKi8KIAkJZWxzZQogCQkgICAgcmMgPSAwOyAvKiBub3QgZXhwaXJlZCwgc28gaXMgZXhpc3RpbmcgZW50cnkgKi8KQEAgLTc3Miw3ICs3ODgsNyBAQAogICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICogVXNlZCwgYnV0IG5vdCB0aGlzIGFkZHJlc3MuIGNoZWNrIGlmIGl0J3Mgc3RhbGUuCiAgICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgaWYgKHRpbWVyY21wKCZhZGRyQ2FjaGVbaV0ubGFzdEhpdCwgJmFnZWQsIDwpKSB7CisgICAgICAgICAgICAgICAgaWYgKHRpbWVyY21wKCZhZGRyQ2FjaGVbaV0ubGFzdEhpdE0sICZhZ2VkLCA8KSkgewogICAgICAgICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgICAgICAgKiBTdGFsZSwgcmV1c2UKICAgICAgICAgICAgICAgICAgICAgICovCkBAIC03OTAsOCArODA2LDggQEAKICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgICAgIGlmIChvbGRlc3QgPCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgb2xkZXN0ID0gaTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGltZXJjbXAoJmFkZHJDYWNoZVtpXS5sYXN0SGl0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWRkckNhY2hlW29sZGVzdF0ubGFzdEhpdCwgPCkpCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRpbWVyY21wKCZhZGRyQ2FjaGVbaV0ubGFzdEhpdE0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhZGRyQ2FjaGVbb2xkZXN0XS5sYXN0SGl0TSwgPCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBvbGRlc3QgPSBpOwogICAgICAgICAgICAgICAgIH0gLyogZnJlc2ggKi8KICAgICAgICAgICAgIH0gLyogdXNlZCwgbm8gbWF0Y2ggKi8KQEAgLTgwOCw3ICs4MjQsNyBAQAogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBhZGRyQ2FjaGVbdW51c2VkXS5hZGRyID0gc3RyZHVwKGFkZHIpOwogICAgICAgICAgICAgYWRkckNhY2hlW3VudXNlZF0uc3RhdHVzID0gU05NUF9BRERSQ0FDSEVfVVNFRDsKLSAgICAgICAgICAgIGFkZHJDYWNoZVt1bnVzZWRdLmxhc3RIaXQgPSBub3c7CisgICAgICAgICAgICBhZGRyQ2FjaGVbdW51c2VkXS5sYXN0SGl0TSA9IG5vdzsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsgLyogT3RoZXJ3aXNlLCByZXBsYWNlIG9sZGVzdCBlbnRyeSAqLwogICAgICAgICAgICAgaWYgKG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKQEAgLTgxOCw3ICs4MzQsNyBAQAogICAgICAgICAgICAgCiAgICAgICAgICAgICBmcmVlKGFkZHJDYWNoZVtvbGRlc3RdLmFkZHIpOwogICAgICAgICAgICAgYWRkckNhY2hlW29sZGVzdF0uYWRkciA9IHN0cmR1cChhZGRyKTsKLSAgICAgICAgICAgIGFkZHJDYWNoZVtvbGRlc3RdLmxhc3RIaXQgPSBub3c7CisgICAgICAgICAgICBhZGRyQ2FjaGVbb2xkZXN0XS5sYXN0SGl0TSA9IG5vdzsKICAgICAgICAgfQogICAgICAgICByYyA9IDE7CiAgICAgfQpAQCAtODM2LDExICs4NTIsMTMgQEAKICAqCiAgKiBiYWNrd2FyZHMgY29tcGF0YWJpbGl0eTsgbm90IHVzZWQgYW55d2hlcmUKICAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0FERFJDQUNIRV9BR0UKIHZvaWQKIG5ldHNubXBfYWRkcmNhY2hlX2FnZSh2b2lkKQogewogICAgICh2b2lkKW5ldHNubXBfYWRkcmNhY2hlX2FkZChOVUxMKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0FERFJDQUNIRV9BR0UgKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiotby0qKioqKioKICAqIG5ldHNubXBfYWdlbnRfY2hlY2tfcGFja2V0CkBAIC05NzEsOSArOTg5LDExIEBACiAgICAgICAgICAgICBjYXNlIFNOTVBfTVNHX1JFU1BPTlNFOgogICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19ERUJVRywgIiAgUkVTUE9OU0UgbWVzc2FnZVxuIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAgICAgY2FzZSBTTk1QX01TR19TRVQ6CiAgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0RFQlVHLCAiICBTRVQgbWVzc2FnZVxuIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICAgICBjYXNlIFNOTVBfTVNHX1RSQVA6CiAgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0RFQlVHLCAiICBUUkFQIG1lc3NhZ2VcbiIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTkxLDYgKzEwMTEsNyBAQAogICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19ERUJVRywgIiAgUkVQT1JUIG1lc3NhZ2VcbiIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAgICAgY2FzZSBTTk1QX01TR19JTlRFUk5BTF9TRVRfUkVTRVJWRTE6CiAgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0RFQlVHLCAiICBJTlRFUk5BTCBSRVNFUlZFMSBtZXNzYWdlXG4iKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEwMTQsNiArMTAzNSw3IEBACiAgICAgICAgICAgICBjYXNlIFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9VTkRPOgogICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19ERUJVRywgIiAgSU5URVJOQUwgVU5ETyBtZXNzYWdlXG4iKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfREVCVUcsICIgIFVOS05PV04gbWVzc2FnZSwgdHlwZT0lMDJYXG4iLApAQCAtMTA3NSw3ICsxMDk3LDYgQEAKICAgICBhZ2VudF9uc2FwICAgICAqYSA9IE5VTEwsICpuID0gTlVMTCwgKipwcmV2TmV4dCA9ICZhZ2VudF9uc2FwX2xpc3Q7CiAgICAgaW50ICAgICAgICAgICAgIGhhbmRsZSA9IDA7CiAgICAgdm9pZCAgICAgICAgICAgKmlzcCA9IE5VTEw7Ci0gICAgaW50ICAgICAgICAgICAgIHJjOwogCiAgICAgaWYgKHQgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gLTE7CkBAIC0xMTA4LDcgKzExMjksNyBAQAogCiAgICAgLyogT3B0aW9uYWwgc3VwcGxpbWVudGFsIHRyYW5zcG9ydCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFuZAogICAgICAgIGZpbmFsIGNhbGwgdG8gYWN0dWFsbHkgb3BlbiB0aGUgdHJhbnNwb3J0ICovCi0gICAgaWYgKChyYyA9IG5ldHNubXBfc2Vzc19jb25maWdfdHJhbnNwb3J0KHMtPnRyYW5zcG9ydF9jb25maWd1cmF0aW9uLCB0KSkKKyAgICBpZiAobmV0c25tcF9zZXNzX2NvbmZpZ190cmFuc3BvcnQocy0+dHJhbnNwb3J0X2NvbmZpZ3VyYXRpb24sIHQpCiAgICAgICAgICE9IFNOTVBFUlJfU1VDQ0VTUykgewogICAgICAgICBTTk1QX0ZSRUUocyk7CiAgICAgICAgIFNOTVBfRlJFRShuKTsKQEAgLTEyNjMsNiArMTI4NCw3IEBACiAgICAgICAgIHJldHVybiAwOyAgICAgICAgICAgICAgIC8qICBObyBlcnJvciBpZiAhIE1BU1RFUl9BR0VOVCAgKi8KICAgICB9CiAKKyNpZm5kZWYgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVAogICAgIC8qCiAgICAgICogSGF2ZSBzcGVjaWZpYyBhZ2VudCBwb3J0cyBiZWVuIHNwZWNpZmllZD8gIAogICAgICAqLwpAQCAtMTMzMiw2ICsxMzU0LDcgQEAKICAgICAgICAgfQogICAgIH0gd2hpbGUoc3QgJiYgKnN0ICE9ICdcMCcpOwogICAgIFNOTVBfRlJFRShidWYpOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KIAogI2lmZGVmIFVTSU5HX0FHRU5UWF9NQVNURVJfTU9EVUxFCiAgICAgaWYgKG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCkBAIC0xNDEwLDEyICsxNDMzLDggQEAKICAgICAgICAgc25tcF9mcmVlX3BkdShhc3AtPnBkdSk7CiAgICAgaWYgKGFzcC0+cmVxaW5mbykKICAgICAgICAgbmV0c25tcF9mcmVlX2FnZW50X3JlcXVlc3RfaW5mbyhhc3AtPnJlcWluZm8pOwotICAgIGlmIChhc3AtPnRyZWVjYWNoZSkgewotICAgICAgICBTTk1QX0ZSRUUoYXNwLT50cmVlY2FjaGUpOwotICAgIH0KLSAgICBpZiAoYXNwLT5idWxrY2FjaGUpIHsKLSAgICAgICAgU05NUF9GUkVFKGFzcC0+YnVsa2NhY2hlKTsKLSAgICB9CisgICAgU05NUF9GUkVFKGFzcC0+dHJlZWNhY2hlKTsKKyAgICBTTk1QX0ZSRUUoYXNwLT5idWxrY2FjaGUpOwogICAgIGlmIChhc3AtPnJlcXVlc3RzKSB7CiAgICAgICAgIGludCAgICAgICAgICAgICBpOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXNwLT52YmNvdW50OyBpKyspIHsKQEAgLTE2MDAsOSArMTYxOSw2IEBACiBpbnQKIG5ldHNubXBfd3JhcF91cF9yZXF1ZXN0KG5ldHNubXBfYWdlbnRfc2Vzc2lvbiAqYXNwLCBpbnQgc3RhdHVzKQogewotICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyX3B0cjsKLSAgICBpbnQgICAgICAgICAgICAgaTsKLQogICAgIC8qCiAgICAgICogaWYgdGhpcyByZXF1ZXN0IHdhcyBhIHNldCwgY2xlYXIgdGhlIGdsb2JhbCBub3cgdGhhdCB3ZSBhcmUKICAgICAgKiBkb25lLgpAQCAtMTYyMiw2ICsxNjM4LDcgQEAKICAgICAgICAgICAgIGFzcC0+c3RhdHVzID0gc3RhdHVzOwogCiAgICAgICAgIHN3aXRjaCAoYXNwLT5wZHUtPmNvbW1hbmQpIHsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICAgICBjYXNlIFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9CRUdJTjoKICAgICAgICAgICAgIGNhc2UgU05NUF9NU0dfSU5URVJOQUxfU0VUX1JFU0VSVkUxOgogICAgICAgICAgICAgY2FzZSBTTk1QX01TR19JTlRFUk5BTF9TRVRfUkVTRVJWRTI6CkBAIC0xNjMxLDYgKzE2NDgsNyBAQAogICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgIHNhdmVfc2V0X2NhY2hlKGFzcCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICAgICAgICAgIGNhc2UgU05NUF9NU0dfR0VUTkVYVDoKICAgICAgICAgICAgICAgICBfZml4X2VuZG9mbWlidmlldyhhc3ApOwpAQCAtMTY0OSw2ICsxNjY3LDcgQEAKICAgICAgICAgICogdjEgcXVlcnkuICBTZWUgUkZDMjU3NiAtIHNlY3Rpb24gNC4zCiAgICAgICAgICAqLwogI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU05NUFYxCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICBpZiAoKGFzcC0+cGR1LT5jb21tYW5kID09IFNOTVBfTVNHX1NFVCkgJiYKICAgICAgICAgICAgIChhc3AtPnBkdS0+dmVyc2lvbiA9PSBTTk1QX1ZFUlNJT05fMSkpIHsKICAgICAgICAgICAgIHN3aXRjaCAoYXNwLT5zdGF0dXMpIHsKQEAgLTE2ODMsOCArMTcwMiwxMCBAQAogICAgICAgICAgKi8KICAgICAgICAgaWYgKChhc3AtPnBkdS0+Y29tbWFuZCAhPSBTTk1QX01TR19TRVQpICYmCiAgICAgICAgICAgICAoYXNwLT5wZHUtPnZlcnNpb24gPT0gU05NUF9WRVJTSU9OXzEpKSB7Ci0gICAgICAgICAgICBmb3IgKHZhcl9wdHIgPSBhc3AtPnBkdS0+dmFyaWFibGVzLCBpID0gMTsKLSAgICAgICAgICAgICAgICAgdmFyX3B0ciAhPSBOVUxMOyB2YXJfcHRyID0gdmFyX3B0ci0+bmV4dF92YXJpYWJsZSwgaSsrKSB7CisgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcl9wdHIgPSBhc3AtPnBkdS0+dmFyaWFibGVzOworICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICBpID0gMTsKKworICAgICAgICAgICAgd2hpbGUgKHZhcl9wdHIgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHN3aXRjaCAodmFyX3B0ci0+dHlwZSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIFNOTVBfTk9TVUNIT0JKRUNUOgogICAgICAgICAgICAgICAgICAgICBjYXNlIFNOTVBfTk9TVUNISU5TVEFOQ0U6CkBAIC0xNjk1LDggKzE3MTYsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGFzcC0+aW5kZXggPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZhcl9wdHIgPSB2YXJfcHRyLT5uZXh0X3ZhcmlhYmxlOworICAgICAgICAgICAgICAgICsraTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogI2VuZGlmIC8qIHNubXB2MSBzdXBwb3J0ICovCiAgICAgfSAvKiogaWYgYXNwLT5wZHUgKi8KIApAQCAtMTc0MiwxMCArMTc2NiwxNiBAQAogICAgIH0KIAogICAgIGlmICgoc3RhdHVzID09IFNOTVBfRVJSX05PRVJST1IpICYmIChhc3AtPnBkdSkpIHsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIHNubXBfaW5jcmVtZW50X3N0YXRpc3RpY19ieSgoYXNwLT5wZHUtPmNvbW1hbmQgPT0gU05NUF9NU0dfU0VUID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFUX1NOTVBJTlRPVEFMU0VUVkFSUyA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RBVF9TTk1QSU5UT1RBTFJFUVZBUlMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRfdmFyYmluZHMoYXNwLT5wZHUtPnZhcmlhYmxlcykpOworI2Vsc2UgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgICAgIHNubXBfaW5jcmVtZW50X3N0YXRpc3RpY19ieShTVEFUX1NOTVBJTlRPVEFMUkVRVkFSUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50X3ZhcmJpbmRzKGFzcC0+cGR1LT52YXJpYWJsZXMpKTsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIFVzZSBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIHJlcXVlc3QKQEAgLTE3OTAsNiArMTgyMCw3IEBACiAgICAgcmV0dXJuIDE7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9EVU1QX1NFU1NfTElTVAogdm9pZAogZHVtcF9zZXNzX2xpc3Qodm9pZCkKIHsKQEAgLTE4MDEsNiArMTgzMiw3IEBACiAgICAgfQogICAgIERFQlVHTVNHKCgic25tcF9hZ2VudCIsICJbTklMXVxuIikpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRFVNUF9TRVNTX0xJU1QgKi8KIAogdm9pZAogbmV0c25tcF9yZW1vdmVfYW5kX2ZyZWVfYWdlbnRfc25tcF9zZXNzaW9uKG5ldHNubXBfYWdlbnRfc2Vzc2lvbiAqYXNwKQpAQCAtMTgyOSw2ICsxODYxLDcgQEAKICAgICB9CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9GUkVFX0FHRU5UX1NOTVBfU0VTU0lPTl9CWV9TRVNTSU9OCiB2b2lkCiBuZXRzbm1wX2ZyZWVfYWdlbnRfc25tcF9zZXNzaW9uX2J5X3Nlc3Npb24obmV0c25tcF9zZXNzaW9uICogc2VzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqZnJlZV9yZXF1ZXN0KQpAQCAtMTg0OSw2ICsxODgyLDcgQEAKICAgICAgICAgfQogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZSRUVfQUdFTlRfU05NUF9TRVNTSU9OX0JZX1NFU1NJT04gKi8KIAogLyoqIGhhbmRsZXMgYW4gaW5jb21pbmcgU05NUCBwYWNrZXQgaW50byB0aGUgYWdlbnQgKi8KIGludApAQCAtMTk2Niw3ICsyMDAwLDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zdWJ0cmVlICp0cCkKIHsKICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdCA9IE5VTEw7Ci0gICAgaW50ICAgICAgICAgICAgIGNhY2hlaWQ7CiAKICAgICBERUJVR01TR1RMKCgic25tcF9hZ2VudCIsICJhZGRfdmJfdG9fY2FjaGUoJThwLCAlZCwgIiwgYXNwLCB2YmNvdW50KSk7CiAgICAgREVCVUdNU0dPSUQoKCJzbm1wX2FnZW50IiwgdmFyYmluZF9wdHItPm5hbWUsCkBAIC0yMDMwLDcgKzIwNjMsOSBAQAogICAgICAgICAgICAgdmFyYmluZF9wdHItPnR5cGUgPSBTTk1QX0VORE9GTUlCVklFVzsKICAgICAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICBjYXNlIFNOTVBfTVNHX1NFVDoKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgY2FzZSBTTk1QX01TR19HRVQ6CiAgICAgICAgICAgICB2YXJiaW5kX3B0ci0+dHlwZSA9IFNOTVBfTk9TVUNIT0JKRUNUOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMDM5LDYgKzIwNzQsOCBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAvKiBzaG91bGRuJ3QgZ2V0IGhlcmUgKi8KICAgICAgICAgfQogICAgIH0gZWxzZSB7CisgICAgICAgIGludCBjYWNoZWlkOworCiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwgInRwLT5zdGFydCAiKSk7CiAgICAgICAgIERFQlVHTVNHT0lEKCgic25tcF9hZ2VudCIsIHRwLT5zdGFydF9hLCB0cC0+c3RhcnRfbGVuKSk7CiAgICAgICAgIERFQlVHTVNHKCgic25tcF9hZ2VudCIsICIsIHRwLT5lbmQgIikpOwpAQCAtMjA2NCw4ICsyMTAxLDEwIEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIGZvciBub24tU0VUIG1vZGVzLCBzZXQgdGhlIHR5cGUgdG8gTlVMTCAKICAgICAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICBpZiAoIU1PREVfSVNfU0VUKGFzcC0+cGR1LT5jb21tYW5kKSkgewotICAgICAgICBERUJVR01TR1RMKCgidmVyYm9zZTphc3AiLCAiYXNwICVwIHJlcWluZm8gJXAgYXNzaWduZWQgdG8gcmVxdWVzdFxuIiwKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmFzcCIsICJhc3AgJXAgcmVxaW5mbyAlcCBhc3NpZ25lZCB0byByZXF1ZXN0XG4iLAogICAgICAgICAgICAgICAgICAgICBhc3AsIGFzcC0+cmVxaW5mbykpOwogICAgICAgICAgICAgaWYgKHZhcmJpbmRfcHRyLT50eXBlID09IEFTTl9QUklWX0lOQ0xfUkFOR0UpIHsKICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic25tcF9hZ2VudCIsICJ2YXJiaW5kICVkIGlzIGluY2x1c2l2ZVxuIiwKQEAgLTIwNzMsNyArMjExMiw5IEBACiAgICAgICAgICAgICAgICAgcmVxdWVzdC0+aW5jbHVzaXZlID0gMTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHZhcmJpbmRfcHRyLT50eXBlID0gQVNOX05VTEw7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICB9CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICAgICAgLyoKICAgICAgICAgICogcGxhY2UgdGhlbSBpbiBhIGNhY2hlIApAQCAtMjQwMCw2ICsyNDQxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCk7CiAgICAgICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgY2FzZSBTTk1QX01TR19TRVQ6CiAgICAgICAgICAgICB2aWV3ID0gaW5fYV92aWV3KHZhcmJpbmRfcHRyLT5uYW1lLCAmdmFyYmluZF9wdHItPm5hbWVfbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3AtPnBkdSwgdmFyYmluZF9wdHItPnR5cGUpOwpAQCAtMjQwOCw2ICsyNDUwLDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9BQ0NFU1M7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgICAgICBjYXNlIFNOTVBfTVNHX0dFVE5FWFQ6CiAgICAgICAgIGNhc2UgU05NUF9NU0dfR0VUQlVMSzoKQEAgLTI0NzgsMTAgKzI1MjEsNyBAQAogICAgICAgICAgICAgaWYgKCFuZXRzbm1wX2FkZF92YXJiaW5kX3RvX2NhY2hlKGFzcCwgYXNwLT5yZXF1ZXN0c1tpXS5pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3AtPnJlcXVlc3RzW2ldLnJlcXVlc3R2YiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3AtPnJlcXVlc3RzW2ldLnN1YnRyZWUtPm5leHQpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG9sZF90cmVlY2FjaGUgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBTTk1QX0ZSRUUob2xkX3RyZWVjYWNoZSk7Ci0gICAgICAgICAgICAgICAgICAgIG9sZF90cmVlY2FjaGUgPSBOVUxMOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBTTk1QX0ZSRUUob2xkX3RyZWVjYWNoZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoYXNwLT5yZXF1ZXN0c1tpXS5yZXF1ZXN0dmItPnR5cGUgPT0gQVNOX1BSSVZfUkVUUlkpIHsKICAgICAgICAgICAgIC8qCkBAIC0yNDkxLDE3ICsyNTMxLDEyIEBACiAgICAgICAgICAgICBpZiAoIW5ldHNubXBfYWRkX3ZhcmJpbmRfdG9fY2FjaGUoYXNwLCBhc3AtPnJlcXVlc3RzW2ldLmluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzcC0+cmVxdWVzdHNbaV0ucmVxdWVzdHZiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzcC0+cmVxdWVzdHNbaV0uc3VidHJlZSkpIHsKLSAgICAgICAgICAgICAgICBpZiAob2xkX3RyZWVjYWNoZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFNOTVBfRlJFRShvbGRfdHJlZWNhY2hlKTsKLSAgICAgICAgICAgICAgICAgICAgb2xkX3RyZWVjYWNoZSA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFNOTVBfRlJFRShvbGRfdHJlZWNhY2hlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChvbGRfdHJlZWNhY2hlICE9IE5VTEwpIHsKLSAgICAgICAgU05NUF9GUkVFKG9sZF90cmVlY2FjaGUpOwotICAgIH0KKyAgICBTTk1QX0ZSRUUob2xkX3RyZWVjYWNoZSk7CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CiAKQEAgLTI1MTQsNiArMjU0OSw3IEBACiAgICAgfQogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfREVMRVRFX1NVQlRSRUVfQ0FDSEUKIHZvaWQKIG5ldHNubXBfZGVsZXRlX3N1YnRyZWVfY2FjaGUobmV0c25tcF9hZ2VudF9zZXNzaW9uICphc3ApCiB7CkBAIC0yNTI2LDcgKzI1NjIsOSBAQAogICAgICAgICBhc3AtPnRyZWVjYWNoZV9udW0tLTsKICAgICB9CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ERUxFVEVfU1VCVFJFRV9DQUNIRSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0hFQ0tfQUxMX1JFUVVFU1RTX0VSUk9SCiAvKgogICogY2hlY2sgYWxsIHJlcXVlc3RzIGZvciBlcnJvcnMKICAqCkBAIC0yNTU3LDcgKzI1OTUsOSBAQAogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DSEVDS19BTExfUkVRVUVTVFNfRVJST1IgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX1JFUVVFU1RTX0VSUk9SCiBpbnQKIG5ldHNubXBfY2hlY2tfcmVxdWVzdHNfZXJyb3IobmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQogewpAQCAtMjU3MCw2ICsyNjEwLDcgQEAKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DSEVDS19SRVFVRVNUU19FUlJPUiAqLwogCiBpbnQKIG5ldHNubXBfY2hlY2tfcmVxdWVzdHNfc3RhdHVzKG5ldHNubXBfYWdlbnRfc2Vzc2lvbiAqYXNwLApAQCAtMjY0NSw2ICsyNjg2LDcgQEAKICAgICAgICAgICogZXJyb3JzKS4KICAgICAgICAgICovCiAgICAgICAgIHN3aXRjaCAoYXNwLT5tb2RlKSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKICAgICAgICAgICAgIHJldHN0YXR1cyA9IG5ldHNubXBfY2hlY2tfcmVxdWVzdHNfc3RhdHVzKGFzcCwKIAkJCQkJCSAgICAgIGFzcC0+dHJlZWNhY2hlW2ldLgpAQCAtMjY1OCw2ICsyNzAwLDcgQEAKIAkJCQkJCSAgICAgIHJlcXVlc3RzX2JlZ2luLAogCQkJCQkJICAgICAgU05NUF9FUlJfVU5ET0ZBSUxFRCk7CiAgICAgICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0c3RhdHVzID0gbmV0c25tcF9jaGVja19yZXF1ZXN0c19zdGF0dXMoYXNwLApAQCAtMjc2OCw2ICsyODExLDcgQEAKICAgICAgICAgICogaWYgdGhlIHRvcCByZXF1ZXN0IGlzIGEgc2V0LCBkb24ndCBwb3AgaXQKICAgICAgICAgICogb2ZmIGlmIHRoZXJlIGFyZSBkZWxlZ2F0ZWQgcmVxdWVzdHMKICAgICAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICBpZiAoKG5ldHNubXBfYWdlbnRfcXVldWVkX2xpc3QtPnBkdS0+Y29tbWFuZCA9PSBTTk1QX01TR19TRVQpICYmCiAgICAgICAgICAgICAoYWdlbnRfZGVsZWdhdGVkX2xpc3QpKSB7CiAKQEAgLTI3NzgsNiArMjgyMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZWdhdGVkIHJlcXVlc3RzIGZpbmlzaCwgYXNwID0gJThwXG4iLCBhc3ApKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICAgICAgLyoKICAgICAgICAgICogcG9wIHRoZSBmaXJzdCByZXF1ZXN0IGFuZCBwcm9jZXNzIGl0CkBAIC0yODQ5LDYgKzI4OTQsNyBAQAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfQ09NTUlUOgogICAgICAgICBuZXRzbm1wX2NoZWNrX2FsbF9yZXF1ZXN0c19zdGF0dXMoYXNwLCBTTk1QX0VSUl9DT01NSVRGQUlMRUQpOwogICAgICAgICBnb3RvIHNldHRvcDsKQEAgLTI4ODQsNiArMjkzMCw3IEBACiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKICAgICAgICAgfQogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtMzA4Myw2ICszMTMwLDcgQEAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIGludAogaGFuZGxlX3NldChuZXRzbm1wX2FnZW50X3Nlc3Npb24gKmFzcCkKIHsKQEAgLTMxODAsNiArMzIyOCw3IEBACiAgICAgfQogICAgIHJldHVybiBhc3AtPnN0YXR1czsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogaW50CiBuZXRzbm1wX2hhbmRsZV9yZXF1ZXN0KG5ldHNubXBfYWdlbnRfc2Vzc2lvbiAqYXNwLCBpbnQgc3RhdHVzKQpAQCAtMzIwNyw2ICszMjU2LDcgQEAKICAgICAgICAgLyoKICAgICAgICAgICogY2hlY2sgZm9yIHNldCByZXF1ZXN0CiAgICAgICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgaWYgKGFzcC0+cGR1LT5jb21tYW5kID09IFNOTVBfTVNHX1NFVCkgewogICAgICAgICAgICAgbmV0c25tcF9wcm9jZXNzaW5nX3NldCA9IGFzcDsKIApAQCAtMzIyMiw2ICszMjcyLDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KIAogICAgIC8qCkBAIC0zMjczLDYgKzMzMjQsNyBAQAogICAgICAqLwogICAgIHN3aXRjaCAoYXNwLT5wZHUtPmNvbW1hbmQpIHsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9SRVNFUlZFMjoKICAgICBjYXNlIFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9BQ1RJT046CiAgICAgY2FzZSBTTk1QX01TR19JTlRFUk5BTF9TRVRfQ09NTUlUOgpAQCAtMzI4Miw2ICszMzM0LDcgQEAKICAgICAgICAgaWYgKHN0YXR1cyAhPSBTTk1QX0VSUl9OT0VSUk9SKQogICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICBjYXNlIFNOTVBfTVNHX0dFVDoKICAgICBjYXNlIFNOTVBfTVNHX0dFVE5FWFQ6CkBAIC0zMzA1LDggKzMzNTgsMTAgQEAKICAgICAgICAgICogZmFsbCB0aHJvdWdoIAogICAgICAgICAgKi8KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9CRUdJTjoKICAgICBjYXNlIFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9SRVNFUlZFMToKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICBkZWZhdWx0OgogICAgICAgICBhc3AtPnZiY291bnQgPSBjb3VudF92YXJiaW5kcyhhc3AtPnBkdS0+dmFyaWFibGVzKTsKICAgICAgICAgaWYgKGFzcC0+dmJjb3VudCkgLyogZWZlbmNlIGRvZXNuJ3QgbGlrZSAwIHNpemUgYWxsb2NzICovCkBAIC0zMzk2LDYgKzM0NTEsNyBAQAogICAgICAgICBzdGF0dXMgPSBoYW5kbGVfZ2V0bmV4dF9sb29wKGFzcCk7CiAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgU05NUF9NU0dfU0VUOgogI2lmZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAogICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9UV1JJVEFCTEU7CkBAIC0zNDI0LDYgKzM0ODAsNyBAQAogICAgICAgICAgKiBhc3AgcmVsYXRlZCBjYWNoZSBpcyBzYXZlZCBpbiBjbGVhbnVwIAogICAgICAgICAgKi8KICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICBjYXNlIFNOTVBfTVNHX1JFU1BPTlNFOgogICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9TTk1QSU5HRVRSRVNQT05TRVMpOwpAQCAtMzQ4Niw5ICszNTQzLDExIEBACiAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9WQUxVRTsKICAgICAgICAgICAgICAqLwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICBjYXNlIFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9SRVNFUlZFMToKICAgICAgICAgICAgIHJlcXVlc3QtPnN0YXR1cyA9IFNOTVBfRVJSX05PQ1JFQVRJT047CiAgICAgICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmVxdWVzdC0+c3RhdHVzID0gU05NUF9FUlJfTk9TVUNITkFNRTsgICAgICAvKiBXV1c6IGNvcnJlY3Q/ICovCkBAIC0zNTMyLDYgKzM1OTEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfdmFsdWUpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVRVUVTVF9TRVRfRVJST1JfSURYCiAvKiogc2V0IGVycm9yIGZvciBhIHJlcXVlc3Qgd2l0aGluIGEgcmVxdWVzdCBsaXN0CiAgKiBAcGFyYW0gcmVxdWVzdCBoZWFkIG9mIHRoZSByZXF1ZXN0IGxpc3QKICAqIEBwYXJhbSBlcnJvcl92YWx1ZSBlcnJvciB2YWx1ZSBmb3IgcmVxdWVzdApAQCAtMzU1OSw2ICszNjE5LDcgQEAKICAgICByZXR1cm4gX3JlcXVlc3Rfc2V0X2Vycm9yKHJlcSwgcmVxdWVzdC0+YWdlbnRfcmVxX2luZm8tPm1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl92YWx1ZSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRVFVRVNUX1NFVF9FUlJPUl9JRFggKi8KIAogLyoqIHNldCBlcnJvciBmb3IgYWxsIHJlcXVlc3RzCiAgKiBAcGFyYW0gcmVxdWVzdHMgcmVxdWVzdCBsaXN0CkBAIC0zNTk0LDExICszNjU1LDExIEBACiB9CiAKIC8qKgotICogUmV0dXJuIHRoZSB2YWx1ZSBvZiAnc3lzVXBUaW1lJyBhdCB0aGUgZ2l2ZW4gbWFya2VyCisgKiBSZXR1cm4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBwbSBhbmQgdGhlIGFnZW50IHN0YXJ0IHRpbWUgaW4gaHVuZHJlZHRocyBvZgorICogYSBzZWNvbmQuCisgKiBcZGVwcmVjYXRlZCBEb24ndCB1c2UgaW4gbmV3IGNvZGUuCiAgKgotICogQG5vdGUgVXNlIG5ldHNubXBfZ2V0X2FnZW50X3J1bnRpbWUoKSBpbnN0ZWFkIG9mIHRoaXMgZnVuY3Rpb24gaWYgeW91IG5lZWQKLSAqICAgdG8ga25vdyBob3cgbXVjaCB0aW1lIGVsYXBzZWQgc2luY2UgbmV0c25tcF9zZXRfYWdlbnRfc3RhcnR0aW1lKCkgaGFzIGJlZW4KLSAqICAgY2FsbGVkLgorICogQHBhcmFtW2luXSBwbSBBbiBhYnNvbHV0ZSB0aW1lIGFzIGUuZy4gcmVwb3J0ZWQgYnkgZ2V0dGltZW9mZGF5KCkuCiAgKi8KIHVfbG9uZwogbmV0c25tcF9tYXJrZXJfdXB0aW1lKG1hcmtlcl90IHBtKQpAQCAtMzYxMCw5ICszNjcxLDE0IEBACiAgICAgcmV0dXJuIHJlczsKIH0KIAotICAgICAgICAgICAgICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICAgICAgICAgICAqIHN0cnVjdCB0aW1ldmFsIGVxdWl2YWxlbnRzIG9mIHRoZXNlIAotICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioKKyAqIFJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR2IGFuZCB0aGUgYWdlbnQgc3RhcnQgdGltZSBpbiBodW5kcmVkdGhzIG9mCisgKiBhIHNlY29uZC4KKyAqCisgKiBcZGVwcmVjYXRlZCBVc2UgbmV0c25tcF9nZXRfYWdlbnRfdXB0aW1lKCkgaW5zdGVhZC4KKyAqCisgKiBAcGFyYW1baW5dIHR2IEFuIGFic29sdXRlIHRpbWUgYXMgZS5nLiByZXBvcnRlZCBieSBnZXR0aW1lb2ZkYXkoKS4KKyAqLwogdV9sb25nCiBuZXRzbm1wX3RpbWV2YWxfdXB0aW1lKHN0cnVjdCB0aW1ldmFsICogdHYpCiB7CkBAIC0zNjIxLDEwICszNjg3LDE1IEBACiAKIAogc3RydWN0IHRpbWV2YWwgIHN0YXJ0dGltZTsKK3N0YXRpYyBzdHJ1Y3QgdGltZXZhbCBzdGFydHRpbWVNOwogCiAvKioKICAqIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIHZhcmlhYmxlIGluIHdoaWNoIHRoZSBOZXQtU05NUCBzdGFydCB0aW1lIGhhcwogICogYmVlbiBzdG9yZWQuCisgKgorICogQG5vdGUgVXNlIG5ldHNubXBfZ2V0X2FnZW50X3J1bnRpbWUoKSBpbnN0ZWFkIG9mIHRoaXMgZnVuY3Rpb24gaWYgeW91IG5lZWQKKyAqICAgdG8ga25vdyBob3cgbXVjaCB0aW1lIGVsYXBzZWQgc2luY2UgbmV0c25tcF9zZXRfYWdlbnRfc3RhcnR0aW1lKCkgaGFzIGJlZW4KKyAqICAgY2FsbGVkLgogICovCiBjb25zdF9tYXJrZXJfdCAgICAgICAgCiBuZXRzbm1wX2dldF9hZ2VudF9zdGFydHRpbWUodm9pZCkKQEAgLTM2NDMsNDggKzM3MTQsNzAgQEAKIHsKICAgICBzdHJ1Y3QgdGltZXZhbCBub3csIGRlbHRhOwogCi0gICAgZ2V0dGltZW9mZGF5KCZub3csIE5VTEwpOwotICAgIE5FVFNOTVBfVElNRVJTVUIoJm5vdywgJnN0YXJ0dGltZSwgJmRlbHRhKTsKKyAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJm5vdyk7CisgICAgTkVUU05NUF9USU1FUlNVQigmbm93LCAmc3RhcnR0aW1lTSwgJmRlbHRhKTsKICAgICByZXR1cm4gZGVsdGEudHZfc2VjICogKHVpbnQ2NF90KTEwMCArIGRlbHRhLnR2X3VzZWMgLyAxMDAwMDsKIH0KIAogLyoqCiAgKiBTZXQgdGhlIHRpbWUgYXQgd2hpY2ggTmV0LVNOTVAgc3RhcnRlZCBlaXRoZXIgdG8gdGhlIGN1cnJlbnQgdGltZQogICogKGlmIHMgPT0gTlVMTCkgb3IgdG8gKnMgKGlmIHMgaXMgbm90IE5VTEwpLgorICoKKyAqIEBzZWUgU2VlIGFsc28gbmV0c25tcF9zZXRfYWdlbnRfdXB0aW1lKCkuCiAgKi8KIHZvaWQgICAgICAgICAgICAKIG5ldHNubXBfc2V0X2FnZW50X3N0YXJ0dGltZShtYXJrZXJfdCBzKQogewotICAgIGlmIChzKQorICAgIGlmIChzKSB7CisgICAgICAgIHN0cnVjdCB0aW1ldmFsIG5vd0EsIG5vd007CisKICAgICAgICAgc3RhcnR0aW1lID0gKihzdHJ1Y3QgdGltZXZhbCopczsKLSAgICBlbHNlCisgICAgICAgIGdldHRpbWVvZmRheSgmbm93QSwgTlVMTCk7CisgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmbm93TSk7CisgICAgICAgIE5FVFNOTVBfVElNRVJTVUIoJnN0YXJ0dGltZSwgJm5vd0EsICZzdGFydHRpbWVNKTsKKyAgICAgICAgTkVUU05NUF9USU1FUkFERCgmc3RhcnR0aW1lTSwgJm5vd00sICZzdGFydHRpbWVNKTsKKyAgICB9IGVsc2UgewogICAgICAgICBnZXR0aW1lb2ZkYXkoJnN0YXJ0dGltZSwgTlVMTCk7CisgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmc3RhcnR0aW1lTSk7CisgICAgfQogfQogCiAKLSAgICAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgICAqIFJldHVybiB0aGUgY3VycmVudCB2YWx1ZSBvZiAnc3lzVXBUaW1lJyAKLSAgICAgICAgICAgICAgICAgKi8KKy8qKgorICogUmV0dXJuIHRoZSBjdXJyZW50IHZhbHVlIG9mICdzeXNVcFRpbWUnIAorICovCiB1X2xvbmcKIG5ldHNubXBfZ2V0X2FnZW50X3VwdGltZSh2b2lkKQogewotICAgIHN0cnVjdCB0aW1ldmFsICBub3c7Ci0gICAgZ2V0dGltZW9mZGF5KCZub3csIE5VTEwpOworICAgIHN0cnVjdCB0aW1ldmFsIG5vdywgZGVsdGE7CiAKLSAgICByZXR1cm4gbmV0c25tcF90aW1ldmFsX3VwdGltZSgmbm93KTsKKyAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJm5vdyk7CisgICAgTkVUU05NUF9USU1FUlNVQigmbm93LCAmc3RhcnR0aW1lTSwgJmRlbHRhKTsKKyAgICByZXR1cm4gZGVsdGEudHZfc2VjICogMTAwVUwgKyBkZWx0YS50dl91c2VjIC8gMTAwMDA7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TRVRfQUdFTlRfVVBUSU1FCisvKioKKyAqIFNldCB0aGUgc3RhcnQgdGltZSBmcm9tIHdoaWNoICdzeXNVcFRpbWUnIGlzIGNvbXB1dGVkLgorICoKKyAqIEBwYXJhbVtpbl0gaHNlYyBOZXcgc3lzVXBUaW1lIGluIGh1bmRyZWR0aHMgb2YgYSBzZWNvbmQuCisgKgorICogQHNlZSBTZWUgYWxzbyBuZXRzbm1wX3NldF9hZ2VudF9zdGFydHRpbWUoKS4KKyAqLwogdm9pZAogbmV0c25tcF9zZXRfYWdlbnRfdXB0aW1lKHVfbG9uZyBoc2VjKQogewotICAgIHN0cnVjdCB0aW1ldmFsICBub3c7CisgICAgc3RydWN0IHRpbWV2YWwgIG5vd0EsIG5vd007CiAgICAgc3RydWN0IHRpbWV2YWwgIG5ld191cHRpbWU7CiAKLSAgICBnZXR0aW1lb2ZkYXkoJm5vdywgTlVMTCk7CisgICAgZ2V0dGltZW9mZGF5KCZub3dBLCBOVUxMKTsKKyAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJm5vd00pOwogICAgIG5ld191cHRpbWUudHZfc2VjID0gaHNlYyAvIDEwMDsKLSAgICBuZXdfdXB0aW1lLnR2X3VzZWMgPSAoaHNlYyAtIG5ld191cHRpbWUudHZfc2VjICogMTAwKSAqIDEwMDAwTDsKLSAgICBORVRTTk1QX1RJTUVSU1VCKCZub3csICZuZXdfdXB0aW1lLCAmc3RhcnR0aW1lKTsKKyAgICBuZXdfdXB0aW1lLnR2X3VzZWMgPSAodWludDMyX3QpKGhzZWMgLSBuZXdfdXB0aW1lLnR2X3NlYyAqIDEwMCkgKiAxMDAwMEw7CisgICAgTkVUU05NUF9USU1FUlNVQigmbm93QSwgJm5ld191cHRpbWUsICZzdGFydHRpbWUpOworICAgIE5FVFNOTVBfVElNRVJTVUIoJm5vd00sICZuZXdfdXB0aW1lLCAmc3RhcnR0aW1lTSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TRVRfQUdFTlRfVVBUSU1FICovCiAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTM3MzUsNiArMzgyOCw3IEBACiAgKiBAcGFyYW0gZXJyb3JfdmFsdWUgZXJyb3IgdmFsdWUgZm9yIHJlcXVlc3RzCiAgKiBAcmV0dXJuIGVycm9yX3ZhbHVlCiAgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TRVRfQUxMX1JFUVVFU1RTX0VSUk9SCiBpbnQKIG5ldHNubXBfc2V0X2FsbF9yZXF1ZXN0c19lcnJvcihuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMsCkBAIC0zNzQzLDQgKzM4MzcsNSBAQAogICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3JfYWxsKHJlcXVlc3RzLCBlcnJvcl92YWx1ZSk7CiAgICAgcmV0dXJuIGVycm9yX3ZhbHVlOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU0VUX0FMTF9SRVFVRVNUU19FUlJPUiAqLwogLyoqIEB9ICovCmRpZmYgLS1naXQgYS9hZ2VudC9zbm1wX3BlcmwuYyBiL2FnZW50L3NubXBfcGVybC5jCmluZGV4IDNmMGEyMTYuLjQ4ZDk2OTUgMTAwNjQ0Ci0tLSBhL2FnZW50L3NubXBfcGVybC5jCisrKyBiL2FnZW50L3NubXBfcGVybC5jCkBAIC0zNiw2ICszNiw3IEBACiAgICAgY29uc3QgY2hhciAgICAgKnBlcmxfaW5pdF9maWxlID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCiAJCQkJCQkJICAgTkVUU05NUF9EU19BR0VOVF9QRVJMX0lOSVRfRklMRSk7CiAgICAgY2hhciAgICAgICAgICAgIGluaXRfZmlsZVtTTk1QX01BWEJVRl07CisgICAgaW50ICAgICAgICAgICAgIHJlczsKIAogICAgIHN0YXRpYyBpbnQgICAgICBoYXZlX2RvbmVfaW5pdCA9IDA7CiAKQEAgLTU3LDggKzU4LDExIEBACiAgICAgZW52ID0gTlVMTDsKICAgICBQRVJMX1NZU19JTklUMygmYXJnYywgJmFyZ3YsICZlbnYpOwogICAgIG15X3BlcmwgPSBwZXJsX2FsbG9jKCk7Ci0gICAgaWYgKCFteV9wZXJsKQorICAgIGlmICghbXlfcGVybCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiZW1iZWRkZWQgcGVybCBzdXBwb3J0IGZhaWxlZCB0byBpbml0aWFsaXplIChwZXJsX2FsbG9jKCkpXG4iKTsKICAgICAgICAgZ290byBiYWlsX291dDsKKyAgICB9CiAKICAgICBwZXJsX2NvbnN0cnVjdChteV9wZXJsKTsKIApAQCAtNjYsMTEgKzcwLDIxIEBACiAgICAgUExfZXhpdF9mbGFncyB8PSBQRVJMX0VYSVRfREVTVFJVQ1RfRU5EOwogI2VuZGlmCiAKLSAgICBpZiAocGVybF9wYXJzZShteV9wZXJsLCB4c19pbml0LCAyLCBlbWJlZGFyZ3MsIE5VTEwpKQorICAgIHJlcyA9IHBlcmxfcGFyc2UobXlfcGVybCwgeHNfaW5pdCwgMiwgZW1iZWRhcmdzLCBOVUxMKTsKKyAgICBpZiAocmVzKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJlbWJlZGRlZCBwZXJsIHN1cHBvcnQgZmFpbGVkIHRvIGluaXRpYWxpemUgKHBlcmxfcGFyc2UoJXMpIgorICAgICAgICAgICAgICAgICAiIHJldHVybmVkICVkKVxuIiwgZW1iZWRhcmdzWzFdLCByZXMpOwogICAgICAgICBnb3RvIGJhaWxfb3V0OworICAgIH0KIAotICAgIGlmIChwZXJsX3J1bihteV9wZXJsKSkKKyAgICByZXMgPSBwZXJsX3J1bihteV9wZXJsKTsKKyAgICBpZiAocmVzKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJlbWJlZGRlZCBwZXJsIHN1cHBvcnQgZmFpbGVkIHRvIGluaXRpYWxpemUgKHBlcmxfcnVuKCkiCisgICAgICAgICAgICAgICAgICIgcmV0dXJuZWQgJWQpXG4iLCByZXMpOwogICAgICAgICBnb3RvIGJhaWxfb3V0OworICAgIH0KIAogICAgIGZyZWUoZW1iZWRhcmdzWzBdKTsKICAgICBmcmVlKGVtYmVkYXJnc1sxXSk7CkBAIC04Miw3ICs5Niw2IEBACiAgIGJhaWxfb3V0OgogICAgIGZyZWUoZW1iZWRhcmdzWzBdKTsKICAgICBmcmVlKGVtYmVkYXJnc1sxXSk7Ci0gICAgc25tcF9sb2coTE9HX0VSUiwgImVtYmVkZGVkIHBlcmwgc3VwcG9ydCBmYWlsZWQgdG8gaW5pdGlhbGl6ZVxuIik7CiAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKIAkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfRElTQUJMRV9QRVJMLCAxKTsKICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9hZ2VudC9zbm1wX3ZhcnMuYyBiL2FnZW50L3NubXBfdmFycy5jCmluZGV4IDlmNmM1ZDkuLmMwNjlhYjAgMTAwNjQ0Ci0tLSBhL2FnZW50L3NubXBfdmFycy5jCisrKyBiL2FnZW50L3NubXBfdmFycy5jCkBAIC0zNzYsNyArMzc2LDcgQEAKICAgICBjbGVhcl9zZWNfbW9kKCk7CiAgICAgY2xlYXJfc25tcF9lbnVtKCk7CiAgICAgY2xlYXJfY2FsbGJhY2soKTsKLSAgICBjbGVhcl91c2VyX2xpc3QoKTsKKyAgICBzaHV0ZG93bl9zZWNtb2QoKTsKICAgICBuZXRzbm1wX2FkZHJjYWNoZV9kZXN0cm95KCk7CiAjaWZkZWYgTkVUU05NUF9DQU5fVVNFX05MSVNUCiAgICAgZnJlZV9rbWVtKCk7CmRpZmYgLS1naXQgYS9hZ2VudC9zbm1wZC5jIGIvYWdlbnQvc25tcGQuYwppbmRleCA0MTQzMDE0Li5iMTc3ZDViIDEwMDY0NAotLS0gYS9hZ2VudC9zbm1wZC5jCisrKyBiL2FnZW50L3NubXBkLmMKQEAgLTM2LDYgKzM2LDcgQEAKICAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL3R5cGVzLmg+CiAKICNpZiBIQVZFX0lPX0gKQEAgLTExMSw2ICsxMTIsOSBAQAogI2lmIEhBVkVfR1JQX0gKICNpbmNsdWRlIDxncnAuaD4KICNlbmRpZgorI2lmZGVmIEhBVkVfQ1JUREJHX0gKKyNpbmNsdWRlIDxjcnRkYmcuaD4KKyNlbmRpZgogCiAjaWZuZGVmIFBBVEhfTUFYCiAjIGlmZGVmIF9QT1NJWF9QQVRIX01BWApAQCAtMTM2LDE5ICsxNDAsMTcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oPgogCiAjaW5jbHVkZSAibTJtLmgiCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmg+CiAKICNpbmNsdWRlICJzbm1wZC5oIgotI2luY2x1ZGUgIm1pYmdyb3VwL3N0cnVjdC5oIgotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVzLmg+CiAKLSNpbmNsdWRlICJtaWJncm91cC91dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbWliX21vZHVsZXMuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaD4KLSNpbmNsdWRlICJtaWJfbW9kdWxlX2luY2x1ZGVzLmgiCiAKIC8qCiAgKiBJbmNsdWRlIHdpbnNlcnZpY2UuaCB0byBzdXBwb3J0IFdpbmRvd3MgU2VydmljZQpAQCAtMTYyLDYgKzE2NCwxMCBAQAogCiAjZW5kaWYKIAorbmV0c25tcF9mZWF0dXJlX3dhbnQobG9nZ2luZ19maWxlKQorbmV0c25tcF9mZWF0dXJlX3dhbnQobG9nZ2luZ19zdGRpbykKK25ldHNubXBfZmVhdHVyZV93YW50KGxvZ2dpbmdfc3lzbG9nKQorCiAvKgogICogR2xvYmFscy4KICAqLwpAQCAtMTg5LDkgKzE5NSwxMSBAQAogY29uc3QgY2hhciAgICAgKmFwcF9uYW1lID0gInNubXBkIjsKIAogZXh0ZXJuIGludCAgICAgIG5ldHNubXBfcnVubmluZzsKKyNpZmRlZiBVU0lOR19VVElMX0ZVTkNTX1JFU1RBUlRfTU9EVUxFCiBleHRlcm4gY2hhciAgICoqYXJndnJlc3RhcnRwOwogZXh0ZXJuIGNoYXIgICAgKmFyZ3ZyZXN0YXJ0OwogZXh0ZXJuIGNoYXIgICAgKmFyZ3ZyZXN0YXJ0bmFtZTsKKyNlbmRpZiAvKiBVU0lOR19VVElMX0ZVTkNTX1JFU1RBUlRfTU9EVUxFICovCiAKICNpZmRlZiBVU0lOR19TTVVYX01PRFVMRQogI2luY2x1ZGUgPG1pYmdyb3VwL3NtdXgvc211eC5oPgpAQCAtMzg0LDkgKzM5MiwxMyBAQAogewogICAgIC8qIERpc2FibGUgYWxsIGxvZ3MgYW5kIGxvZyB0aGUgZXJyb3IgdmlhIHN5c2xvZyAqLwogICAgIHNubXBfZGlzYWJsZV9sb2coKTsKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRwogICAgIHNubXBfZW5hYmxlX3N5c2xvZygpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cgKi8KICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiRXhpdGluZyBvbiBzaWduYWwgJWRcbiIsIGEpOworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HCiAgICAgc25tcF9kaXNhYmxlX3N5c2xvZygpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cgKi8KICAgICBleGl0KDEpOwogfQogCkBAIC00MjcsMTYgKzQzOSwxMiBAQAogICAgIGludCAgICAgICAgICAgICBkb250X2ZvcmsgPSAwLCBkb19oZWxwID0gMDsKICAgICBpbnQgICAgICAgICAgICAgbG9nX3NldCA9IDA7CiAgICAgaW50ICAgICAgICAgICAgIGFnZW50X21vZGUgPSAtMTsKLSAgICBjaGFyICAgICAgICAgICAqY3B0ciwgKiphcmd2cHRyOwogICAgIGNoYXIgICAgICAgICAgICpwaWRfZmlsZSA9IE5VTEw7CiAgICAgY2hhciAgICAgICAgICAgIG9wdGlvbl9jb21wYXRhYmlsaXR5W10gPSAiLUxlIjsKICNpZiBIQVZFX0dFVFBJRAogICAgIGludCBmZDsKICAgICBGSUxFICAgICAgICAgICAqUElEOwogI2VuZGlmCi0jaWYgSEFWRV9HRVRQV05BTSAmJiBIQVZFX1BXRF9ICi0gICAgc3RydWN0IHBhc3N3ZCAgKmluZm87Ci0jZW5kaWYKIAogI2lmbmRlZiBXSU4zMgogICAgIC8qCkBAIC01MTYsMTEgKzUyNCwxMyBAQAogICAgICAgICAgICAgYXJndltpXSA9IG9wdGlvbl9jb21wYXRhYmlsaXR5OyAgICAgICAgICAgIAogICAgIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HCiAjaWZkZWYgV0lOMzIKICAgICBzbm1wX2xvZ19zeXNsb2duYW1lKGFwcF9uYW1lX2xvbmcpOwogI2Vsc2UKICAgICBzbm1wX2xvZ19zeXNsb2duYW1lKGFwcF9uYW1lKTsKICNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cgKi8KICAgICBuZXRzbm1wX2RzX3NldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELAogICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9BUFBUWVBFLCBhcHBfbmFtZSk7CiAKQEAgLTU2NCw5ICs1NzQsOSBAQAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSAnZCc6Ci0gICAgICAgICAgICBzbm1wX3NldF9kdW1wX3BhY2tldCgrK3NubXBfZHVtcF9wYWNrZXQpOwotICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKLQkJCQkgICBORVRTTk1QX0RTX0FHRU5UX1ZFUkJPU0UsIDEpOworICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0RVTVBfUEFDS0VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK3NubXBfZHVtcF9wYWNrZXQpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSAnRCc6CkBAIC01ODUsMTkgKzU5NSwxOCBAQAogICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICBnaWQ7CiAKICAgICAgICAgICAgICAgICBnaWQgPSBzdHJ0b3VsKG9wdGFyZywgJmVjcCwgMTApOworI2lmIEhBVkVfR0VUR1JOQU0gJiYgSEFWRV9QV0RfSAogICAgICAgICAgICAgICAgIGlmICgqZWNwKSB7Ci0jaWYgSEFWRV9HRVRQV05BTSAmJiBIQVZFX1BXRF9ICiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBncm91cCAgKmluZm87CisKICAgICAgICAgICAgICAgICAgICAgaW5mbyA9IGdldGdybmFtKG9wdGFyZyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpbmZvKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnaWQgPSBpbmZvLT5ncl9naWQ7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGdpZCA9IGluZm8gPyBpbmZvLT5ncl9naWQgOiAtMTsKKyAgICAgICAgICAgICAgICAgICAgZW5kZ3JlbnQoKTsKKyAgICAgICAgICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQmFkIGdyb3VwIGlkOiAlc1xuIiwgb3B0YXJnKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQoMSk7Ci0jaWYgSEFWRV9HRVRQV05BTSAmJiBIQVZFX1BXRF9ICi0gICAgICAgICAgICAgICAgICAgIH0KLSNlbmRpZgorICAgICAgICAgICAgICAgIGlmIChnaWQgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQmFkIGdyb3VwIGlkOiAlc1xuIiwgb3B0YXJnKTsKKyAgICAgICAgICAgICAgICAgICAgZXhpdCgxKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAogCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfR1JPVVBJRCwgZ2lkKTsKQEAgLTYyMyw2ICs2MzIsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUKICAgICAgICAgY2FzZSAnbCc6CiAgICAgICAgICAgICBwcmludGYoIldhcm5pbmc6IC1sIG9wdGlvbiBpcyBkZXByZWNhdGVkLCB1c2UgLUxmIDxmaWxlPiBpbnN0ZWFkXG4iKTsKICAgICAgICAgICAgIGlmIChvcHRhcmcgIT0gTlVMTCkgewpAQCAtNjQwLDYgKzY1MCw3IEBACiAgICAgICAgICAgICAgICAgdXNhZ2UoYXJndlswXSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRklMRSAqLwogCiAgICAgICAgIGNhc2UgJ0wnOgogCSAgICBpZiAgKHNubXBfbG9nX29wdGlvbnMoIG9wdGFyZywgYXJnYywgYXJndiApIDwgMCApIHsKQEAgLTY4NSw3ICs2OTYsOCBAQAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSAncSc6Ci0gICAgICAgICAgICBzbm1wX3NldF9xdWlja19wcmludCgxKTsKKyAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfUVVJQ0tfUFJJTlQsIDEpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSAncic6CkBAIC02OTMsNiArNzA1LDcgQEAKIAkJCQkgICAgICBORVRTTk1QX0RTX0FHRU5UX05PX1JPT1RfQUNDRVNTKTsKICAgICAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cKICAgICAgICAgY2FzZSAncyc6CiAgICAgICAgICAgICBwcmludGYoIldhcm5pbmc6IC1zIG9wdGlvbiBpcyBkZXByZWNhdGVkLCB1c2UgLUxzZCBpbnN0ZWFkXG4iKTsKICAgICAgICAgICAgIHNubXBfZW5hYmxlX3N5c2xvZygpOwpAQCAtNzQ2LDYgKzc1OSw3IEBACiAgICAgICAgICAgICAgICAgdXNhZ2UoYXJndlswXSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HICovCiAKICAgICAgICAgY2FzZSAnVSc6CiAgICAgICAgICAgICBuZXRzbm1wX2RzX3RvZ2dsZV9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIApAQCAtNzU5LDE4ICs3NzMsMTggQEAKICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgdWlkOwogCiAgICAgICAgICAgICAgICAgdWlkID0gc3RydG91bChvcHRhcmcsICZlY3AsIDEwKTsKKyNpZiBIQVZFX0dFVFBXTkFNICYmIEhBVkVfUFdEX0gKICAgICAgICAgICAgICAgICBpZiAoKmVjcCkgewotI2lmIEhBVkVfR0VUUFdOQU0gJiYgSEFWRV9QV0RfSAorICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGFzc3dkICAqaW5mbzsKKwogICAgICAgICAgICAgICAgICAgICBpbmZvID0gZ2V0cHduYW0ob3B0YXJnKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGluZm8pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpZCA9IGluZm8tPnB3X3VpZDsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdWlkID0gaW5mbyA/IGluZm8tPnB3X3VpZCA6IC0xOworICAgICAgICAgICAgICAgICAgICBlbmRwd2VudCgpOworICAgICAgICAgICAgICAgIH0KICNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJCYWQgdXNlciBpZDogJXNcbiIsIG9wdGFyZyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGl0KDEpOwotI2lmIEhBVkVfR0VUUFdOQU0gJiYgSEFWRV9QV0RfSAotICAgICAgICAgICAgICAgICAgICB9Ci0jZW5kaWYKKyAgICAgICAgICAgICAgICBpZiAodWlkIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkJhZCB1c2VyIGlkOiAlc1xuIiwgb3B0YXJnKTsKKyAgICAgICAgICAgICAgICAgICAgZXhpdCgxKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAogCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfVVNFUklELCB1aWQpOwpAQCAtODM0LDYgKzg0OCw3IEBACiAgICAgfQogCiAgICAgaWYgKG9wdGluZCA8IGFyZ2MpIHsKKyNpZm5kZWYgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVAogICAgICAgICAvKgogICAgICAgICAgKiBUaGVyZSBhcmUgb3B0aW9uYWwgdHJhbnNwb3J0IGFkZHJlc3NlcyBvbiB0aGUgY29tbWFuZCBsaW5lLiAgCiAgICAgICAgICAqLwpAQCAtODU5LDUxICs4NzQsNjIgQEAKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBkL21haW4iLCAicG9ydCBzcGVjOiAlc1xuIiwKICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAogCQkJCQkgIE5FVFNOTVBfRFNfQUdFTlRfUE9SVFMpKSk7CisjZWxzZSAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiWW91IHNwZWNpZmllZCBwb3J0cyB0byBvcGVuOyB0aGlzIGFnZW50IHdhcyBidWlsdCB0byBvbmx5IHNlbmQgbm90aWZpY2F0aW9uc1xuIik7CisgICAgICAgIGV4aXQoMSk7CisjZW5kaWYgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLwogICAgIH0KIAogI2lmZGVmIE5FVFNOTVBfTE9HRklMRQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRklMRQogICAgIGlmICgwID09IGxvZ19zZXQpCiAgICAgICAgIHNubXBfZW5hYmxlX2ZpbGVsb2coTkVUU05NUF9MT0dGSUxFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfQVBQRU5EX0xPR0ZJTEVTKSk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUgKi8KICNlbmRpZgogCi0gICAgLyoKLSAgICAgKiBJbml0aWFsaXplIGEgYXJndiBzZXQgdG8gdGhlIGN1cnJlbnQgZm9yIHJlc3RhcnRpbmcgdGhlIGFnZW50LiAgIAotICAgICAqLwotICAgIGFyZ3ZyZXN0YXJ0cCA9IChjaGFyICoqKW1hbGxvYygoYXJnYyArIDIpICogc2l6ZW9mKGNoYXIgKikpOwotICAgIGFyZ3ZwdHIgPSBhcmd2cmVzdGFydHA7Ci0gICAgZm9yIChpID0gMCwgcmV0ID0gMTsgaSA8IGFyZ2M7IGkrKykgewotICAgICAgICByZXQgKz0gc3RybGVuKGFyZ3ZbaV0pICsgMTsKKyNpZmRlZiBVU0lOR19VVElMX0ZVTkNTX1JFU1RBUlRfTU9EVUxFCisgICAgeworICAgICAgICAvKgorICAgICAgICAgKiBJbml0aWFsaXplIGEgYXJndiBzZXQgdG8gdGhlIGN1cnJlbnQgZm9yIHJlc3RhcnRpbmcgdGhlIGFnZW50LgorICAgICAgICAgKi8KKyAgICAgICAgY2hhciAqY3B0ciwgKiphcmd2cHRyOworCisgICAgICAgIGFyZ3ZyZXN0YXJ0cCA9IChjaGFyICoqKW1hbGxvYygoYXJnYyArIDIpICogc2l6ZW9mKGNoYXIgKikpOworICAgICAgICBhcmd2cHRyID0gYXJndnJlc3RhcnRwOworICAgICAgICBmb3IgKGkgPSAwLCByZXQgPSAxOyBpIDwgYXJnYzsgaSsrKSB7CisgICAgICAgICAgICByZXQgKz0gc3RybGVuKGFyZ3ZbaV0pICsgMTsKKyAgICAgICAgfQorICAgICAgICBhcmd2cmVzdGFydCA9IChjaGFyICopIG1hbGxvYyhyZXQpOworICAgICAgICBhcmd2cmVzdGFydG5hbWUgPSAoY2hhciAqKSBtYWxsb2Moc3RybGVuKGFyZ3ZbMF0pICsgMSk7CisgICAgICAgIGlmICghYXJndnJlc3RhcnRwIHx8ICFhcmd2cmVzdGFydCB8fCAhYXJndnJlc3RhcnRuYW1lKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIm1hbGxvYyBmYWlsdXJlIHByb2Nlc3NpbmcgYXJndnJlc3RhcnRcbiIpOworICAgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgfQorICAgICAgICBzdHJjcHkoYXJndnJlc3RhcnRuYW1lLCBhcmd2WzBdKTsKKworICAgICAgICBmb3IgKGNwdHIgPSBhcmd2cmVzdGFydCwgaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKKyAgICAgICAgICAgIHN0cmNweShjcHRyLCBhcmd2W2ldKTsKKyAgICAgICAgICAgICooYXJndnB0cisrKSA9IGNwdHI7CisgICAgICAgICAgICBjcHRyICs9IHN0cmxlbihhcmd2W2ldKSArIDE7CisgICAgICAgIH0KICAgICB9Ci0gICAgYXJndnJlc3RhcnQgPSAoY2hhciAqKSBtYWxsb2MocmV0KTsKLSAgICBhcmd2cmVzdGFydG5hbWUgPSAoY2hhciAqKSBtYWxsb2Moc3RybGVuKGFyZ3ZbMF0pICsgMSk7Ci0gICAgaWYgKCFhcmd2cmVzdGFydHAgfHwgIWFyZ3ZyZXN0YXJ0IHx8ICFhcmd2cmVzdGFydG5hbWUpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJtYWxsb2MgZmFpbHVyZSBwcm9jZXNzaW5nIGFyZ3ZyZXN0YXJ0XG4iKTsKLSAgICAgICAgZXhpdCgxKTsKLSAgICB9Ci0gICAgc3RyY3B5KGFyZ3ZyZXN0YXJ0bmFtZSwgYXJndlswXSk7CisjZW5kaWYgLyogVVNJTkdfVVRJTF9GVU5DU19SRVNUQVJUX01PRFVMRSAqLworCiAgICAgaWYgKGFnZW50X21vZGUgPT0gLTEpIHsKLSAgICAgICAgaWYgKHN0cnN0cihhcmd2cmVzdGFydG5hbWUsICJhZ2VudHhkIikgIT0gTlVMTCkgewotICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKKyAgICAgICAgaWYgKHN0cnN0cihhcmd2WzBdLCAiYWdlbnR4ZCIpICE9IE5VTEwpIHsKKyAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKIAkJCQkgICBORVRTTk1QX0RTX0FHRU5UX1JPTEUsIFNVQl9BR0VOVCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAorICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAogCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfUk9MRSwgTUFTVEVSX0FHRU5UKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIG5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCisgICAgICAgIG5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKIAkJCSAgICAgICBORVRTTk1QX0RTX0FHRU5UX1JPTEUsIGFnZW50X21vZGUpOwogICAgIH0KIAotICAgIGZvciAoY3B0ciA9IGFyZ3ZyZXN0YXJ0LCBpID0gMDsgaSA8IGFyZ2M7IGkrKykgewotICAgICAgICBzdHJjcHkoY3B0ciwgYXJndltpXSk7Ci0gICAgICAgICooYXJndnB0cisrKSA9IGNwdHI7Ci0gICAgICAgIGNwdHIgKz0gc3RybGVuKGFyZ3ZbaV0pICsgMTsKLSAgICB9Ci0gICAgKmNwdHIgPSAwOwotICAgICphcmd2cHRyID0gTlVMTDsKLQogICAgIFNPQ0tfU1RBUlRVUDsKICAgICBpZiAoaW5pdF9hZ2VudChhcHBfbmFtZSkgIT0gMCkgewogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQWdlbnQgaW5pdGlhbGl6YXRpb24gZmFpbGVkXG4iKTsKQEAgLTkyMCw3ICs5NDYsOCBAQAogICAgICAgICAvKgogICAgICAgICAgKiBTb21lIGVycm9yIG9wZW5pbmcgb25lIG9mIHRoZSBzcGVjaWZpZWQgYWdlbnQgdHJhbnNwb3J0cy4gIAogICAgICAgICAgKi8KLSAgICAgICAgRXhpdCgxKTsgICAgICAgICAgICAgICAgLyogIEV4aXQgbG9ncyBleGl0IHZhbCBmb3IgdXMgICovCisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJTZXJ2ZXIgRXhpdGluZyB3aXRoIGNvZGUgMVxuIik7CisgICAgICAgIGV4aXQoMSk7CiAgICAgfQogCiAgICAgLyoKQEAgLTkyOSwxMiArOTU2LDIwIEBACiAgICAgaWYoIWRvbnRfZm9yaykgewogICAgICAgICBpbnQgcXVpdCA9ICEgbmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX1FVSVRfSU1NRURJQVRFTFkpOwotICAgICAgICByZXQgPSBuZXRzbm1wX2RhZW1vbml6ZShxdWl0LCBzbm1wX3N0ZGVycmxvZ19zdGF0dXMoKSk7CisgICAgICAgIHJldCA9IG5ldHNubXBfZGFlbW9uaXplKHF1aXQsCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TVERJTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX3N0ZGVycmxvZ19zdGF0dXMoKQorI2Vsc2UgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NURElPICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1RESU8gKi8KKyAgICAgICAgICAgICk7CiAgICAgICAgIC8qCiAgICAgICAgICAqIHh4eC1ya3M6IGRvIHdlIGNhcmUgaWYgZm9yayBmYWlscz8gSSB0aGluayB3ZSBzaG91bGQuLi4KICAgICAgICAgICovCi0gICAgICAgIGlmKHJldCAhPSAwKQotICAgICAgICAgICAgRXhpdCgxKTsgICAgICAgICAgICAgICAgLyogIEV4aXQgbG9ncyBleGl0IHZhbCBmb3IgdXMgICovCisgICAgICAgIGlmKHJldCAhPSAwKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiU2VydmVyIEV4aXRpbmcgd2l0aCBjb2RlIDFcbiIpOworICAgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgfQogICAgIH0KIAogI2lmIEhBVkVfR0VUUElECkBAIC0xMDA4LDYgKzEwNDMsOCBAQAogICAgIGlmICgodWlkID0gbmV0c25tcF9kc19nZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAogCQkJCSAgTkVUU05NUF9EU19BR0VOVF9VU0VSSUQpKSA+IDApIHsKICNpZiBIQVZFX0dFVFBXTkFNICYmIEhBVkVfUFdEX0ggJiYgSEFWRV9JTklUR1JPVVBTCisgICAgICAgIHN0cnVjdCBwYXNzd2QgKmluZm87CisKICAgICAgICAgLyoKICAgICAgICAgICogU2V0IHN1cHBsZW1lbnRhcnkgZ3JvdXBzIGJlZm9yZSBjaGFuZ2luZyBVSUQKICAgICAgICAgICogICAod2hpY2ggcHJvYmFibHkgaW52b2x2ZXMgZ2l2aW5nIHVwIHByaXZpbGVnZXMpCkBAIC0xMDIzLDYgKzEwNjAsNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBlbmRwd2VudCgpOwogI2VuZGlmCiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wZC9tYWluIiwgIkNoYW5naW5nIHVpZCB0byAlZC5cbiIsIHVpZCkpOwogICAgICAgICBpZiAoc2V0dWlkKHVpZCkgPT0gLTEpIHsKQEAgLTEwODQsOSArMTEyMiwxMiBAQAogICAgIGFnZW50X3N0YXR1cyA9IEFHRU5UX1NUT1BQRUQ7CiAjZW5kaWYKIAorI2lmZGVmIFVTSU5HX1VUSUxfRlVOQ1NfUkVTVEFSVF9NT0RVTEUKICAgICBTTk1QX0ZSRUUoYXJndnJlc3RhcnRuYW1lKTsKICAgICBTTk1QX0ZSRUUoYXJndnJlc3RhcnQpOwogICAgIFNOTVBfRlJFRShhcmd2cmVzdGFydHApOworI2VuZGlmIC8qIFVTSU5HX1VUSUxfRlVOQ1NfUkVTVEFSVF9NT0RVTEUgKi8KKwogICAgIFNPQ0tfQ0xFQU5VUDsKICAgICByZXR1cm4gMDsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRW5kIG1haW4oKSAtLSBzbm1wZCAqLwpAQCAtMTIyMCw3ICsxMjYxLDkgQEAKICAgICAgICAgfQogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVU0lOR19TTVVYX01PRFVMRSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRkRfRVZFTlRfTUFOQUdFUgogICAgICAgICBuZXRzbm1wX2V4dGVybmFsX2V2ZW50X2luZm8yKCZudW1mZHMsICZyZWFkZmRzLCAmd3JpdGVmZHMsICZleGNlcHRmZHMpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRkRfRVZFTlRfTUFOQUdFUiAqLwogCiAgICAgcmVzZWxlY3Q6CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBOVU1fRVhURVJOQUxfU0lHUzsgaSsrKSB7CkBAIC0xMjMyLDEwICsxMjc1LDExIEBACiAKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBkL3NlbGVjdCIsICJzZWxlY3QoIG51bWZkcz0lZCwgLi4uLCB0dnA9JXApXG4iLAogICAgICAgICAgICAgICAgICAgICBudW1mZHMsIHR2cCkpOwotICAgICAgICBpZih0dnApCi0gICAgICAgICAgICBERUJVR01TR1RMKCgidGltZXIiLCAidHZwICVsZC4lbGRcbiIsIHR2cC0+dHZfc2VjLCB0dnAtPnR2X3VzZWMpKTsKLSAgICAgICAgY291bnQgPSBuZXRfc25tcF9sYXJnZV9mZF9zZXRfc2VsZWN0KG51bWZkcywgJnJlYWRmZHMsICZ3cml0ZWZkcywgJmV4Y2VwdGZkcywKLQkJCQkgICAgICB0dnApOworICAgICAgICBpZiAodHZwKQorICAgICAgICAgICAgREVCVUdNU0dUTCgoInRpbWVyIiwgInR2cCAlbGQuJWxkXG4iLCAobG9uZykgdHZwLT50dl9zZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykgdHZwLT50dl91c2VjKSk7CisgICAgICAgIGNvdW50ID0gbmV0c25tcF9sYXJnZV9mZF9zZXRfc2VsZWN0KG51bWZkcywgJnJlYWRmZHMsICZ3cml0ZWZkcywgJmV4Y2VwdGZkcywKKwkJCQkgICAgIHR2cCk7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wZC9zZWxlY3QiLCAicmV0dXJuZWQsIGNvdW50ID0gJWRcbiIsIGNvdW50KSk7CiAKICAgICAgICAgaWYgKGNvdW50ID4gMCkgewpAQCAtMTI2NCw4ICsxMzA4LDEyIEBACiAgICAgICAgICAgICB9CiAKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVVNJTkdfU01VWF9NT0RVTEUgKi8KKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZEX0VWRU5UX01BTkFHRVIKICAgICAgICAgICAgIG5ldHNubXBfZGlzcGF0Y2hfZXh0ZXJuYWxfZXZlbnRzMigmY291bnQsICZyZWFkZmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3cml0ZWZkcywgJmV4Y2VwdGZkcyk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9GRF9FVkVOVF9NQU5BR0VSICovCisKICAgICAgICAgICAgIC8qIElmIHRoZXJlIGFyZSBzdGlsbCBldmVudHMgbGVmdG92ZXIsIHByb2Nlc3MgdGhlbSAqLwogICAgICAgICAgICAgaWYgKGNvdW50ID4gMCkgewogICAgICAgICAgICAgICBzbm1wX3JlYWQyKCZyZWFkZmRzKTsKQEAgLTE0MDMsNiArMTQ1MSwxMCBAQAogICAgIGludCAgICAgICAgICAgICBuUnVuVHlwZSA9IFJVTl9BU19DT05TT0xFOwogICAgIGludCAgICAgICAgICAgICBxdWlldCA9IDA7CiAgICAgCisjaWYgMAorICAgIF9DcnRTZXREYmdGbGFnKF9DUlREQkdfQUxMT0NfTUVNX0RGIHwgX0NSVERCR19MRUFLX0NIRUNLX0RGIC8qfCBfQ1JUREJHX0NIRUNLX0FMV0FZU19ERiovKTsKKyNlbmRpZgorCiAgICAgblJ1blR5cGUgPSBQYXJzZUNtZExpbmVGb3JTZXJ2aWNlT3B0aW9uKGFyZ2MsIGFyZ3YsICZxdWlldCk7CiAKICAgICBzd2l0Y2ggKG5SdW5UeXBlKSB7CmRpZmYgLS1naXQgYS9hcHBzL01ha2VmaWxlLmRlcGVuZCBiL2FwcHMvTWFrZWZpbGUuZGVwZW5kCmluZGV4IGNiN2Y5YjYuLmI1MDc5MzAgMTAwNjQ0Ci0tLSBhL2FwcHMvTWFrZWZpbGUuZGVwZW5kCisrKyBiL2FwcHMvTWFrZWZpbGUuZGVwZW5kCkBAIC00LDcgKzQsNyBAQAogLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAogLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaCAKKy4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oIAogLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmggCiAuL2FnZW50eHRyYXAubG86ICAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIApAQCAtMzEsNyArMzEsNiBAQAogLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC03NSw0MyArNzQsNyBAQAogLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKIC4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAogLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9hZ2VudHh0cmFwLmxvOiAuLi9hZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5oCiAuL2FnZW50eHRyYXAubG86IC4uL2FnZW50L21pYmdyb3VwL2FnZW50eC9jbGllbnQuaAogLi9hZ2VudHh0cmFwLmxvOiAuLi9hZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuaApAQCAtMTQyLDEzICsxMDUsMTMgQEAKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTIxMiwxMyArMTc1LDEzIEBACiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmggCkBAIC0yODIsMTMgKzI0NSwxMyBAQAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTM1MiwxMyArMzE1LDEzIEBACiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNDIxLDEyICszODQsMTIgQEAKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNDg4LDEyICs0NTEsMTIgQEAKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmggCkBAIC01NTcsMTMgKzUyMCwxMyBAQAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC02MjcsMTIgKzU5MCwxMiBAQAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNjk0LDEzICs2NTcsMTMgQEAKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmggCkBAIC03NjQsMTMgKzcyNywxMyBAQAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTgzNCwxMyArNzk3LDEzIEBACiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTg3Nyw2ICs4NDAsNyBAQAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wdGxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXB0bHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wdGxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmggCiAuL3NubXB0bHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vc25tcHRscy5sbzogIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaApAQCAtOTAyLDcgKzg2Niw2IEBACiAuL3NubXB0bHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc25tcHRscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcHRscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NubXB0bHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXB0bHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcHRscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zbm1wdGxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKQEAgLTEwMTIsMTMgKzk3NSwxMyBAQAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTA3MCwxMyArMTAzMywxMyBAQAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMTM5LDEzICsxMTAyLDEzIEBACiAuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTEyMTQsMTMgKzExNzcsMTMgQEAKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMzAwLDYgKzEyNjMsNyBAQAogLi9zbm1wdHJhcGQubG86IC4uL2FnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1DZXJ0VG9UU05UYWJsZS9zbm1wVGxzdG1DZXJ0VG9UU05UYWJsZS5oCiAuL3NubXB0cmFwZC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb25mLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCkBAIC0xMzI2LDcgKzEyOTAsNiBAQAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTE0MzcsMTMgKzE0MDAsMTMgQEAKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE0ODIsNiArMTQ0NSw3IEBACiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmggc25tcHRyYXBkX2xvZy5oCiAuL3NubXB0cmFwZF9sb2cubG86IHNubXB0cmFwZF9kcy5oCiAuL3NubXB0cmFwZF9zcWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcHRyYXBkX3NxbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmggCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaCAKIC4vc25tcHVzbS5sbzogIC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaApAQCAtMTUwOSwxMiArMTQ3MywxMiBAQAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTU3NywxMyArMTU0MSwxMyBAQAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNjQ2LDEzICsxNjEwLDEzIEBACiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE3MTYsMTMgKzE2ODAsMTMgQEAKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTc4OCwxMyArMTc1MiwxMyBAQAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xODU5LDEzICsxODIzLDEzIEBACiAuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xOTMwLDEzICsxODk0LDEzIEBACiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0yMDAxLDEzICsxOTY1LDEzIEBACiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTIwNzIsMTMgKzIwMzYsMTMgQEAKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKZGlmZiAtLWdpdCBhL2FwcHMvTWFrZWZpbGUuaW4gYi9hcHBzL01ha2VmaWxlLmluCmluZGV4IDc2OTM1MmQuLjc3NDA0ZGQgMTAwNjQ0Ci0tLSBhL2FwcHMvTWFrZWZpbGUuaW4KKysrIGIvYXBwcy9NYWtlZmlsZS5pbgpAQCAtNCw2ICs0LDcgQEAKICMKIAogdG9wX2J1aWxkZGlyPS4uCitteXN1YmRpcj1hcHBzCiAKICMgdXNlIEdOVSB2cGF0aCwgaWYgYXZhaWxhYmxlLCB0byBvbmx5IHNldCBhIHBhdGggZm9yIHNvdXJjZSBhbmQgaGVhZGVycwogIyBWUEFUSCB3aWxsIHBpY2sgdXAgb2JqZWN0cyB0b28sIHdoaWNoIGlzIGJhZCBpZiB5b3UgYXJlIHNoYXJpbmcgYQpAQCAtMTksMTYgKzIwLDM1IEBACiAKIEBORVRTTk1QX0JVSUxEX1NTSF9QUk9HX1RSVUVAU1NISU5TVEFMTEJJTlBST0cgPSBzc2h0b3NubXAkKEVYRUVYVCkKIEBORVRTTk1QX0JVSUxEX1NTSF9QUk9HX0ZBTFNFQFNTSElOU1RBTExCSU5QUk9HID0KK0BORVRTTk1QX0JVSUxEX1NTSF9QUk9HX1RSVUVAU1NIRkVBVFVSRVBST0cgPSBzc2h0b3NubXAuZnQKK0BORVRTTk1QX0JVSUxEX1NTSF9QUk9HX0ZBTFNFQFNTSEZFQVRVUkVQUk9HID0KIEBORVRTTk1QX0JVSUxEX1RMU19QUk9HX1RSVUVAVExTSU5TVEFMTEJJTlBST0cgPSBzbm1wdGxzJChFWEVFWFQpCiBATkVUU05NUF9CVUlMRF9UTFNfUFJPR19GQUxTRUBUTFNJTlNUQUxMQklOUFJPRyA9CitATkVUU05NUF9CVUlMRF9UTFNfUFJPR19UUlVFQFRMU0ZFQVRVUkVQUk9HID0gc25tcHRscy5mdAorQE5FVFNOTVBfQlVJTERfVExTX1BST0dfRkFMU0VAVExTRkVBVFVSRVBST0cgPQorQE5FVFNOTVBfQlVJTERfVVNNX1BST0dfVFJVRUBVU01JTlNUQUxMQklOUFJPRyA9IHNubXB1c20kKEVYRUVYVCkKK0BORVRTTk1QX0JVSUxEX1VTTV9QUk9HX0ZBTFNFQFVTTUlOU1RBTExCSU5QUk9HID0KK0BORVRTTk1QX0JVSUxEX1VTTV9QUk9HX1RSVUVAVVNNRkVBVFVSRVBST0cgPSBzbm1wdXNtLmZ0CitATkVUU05NUF9CVUlMRF9VU01fUFJPR19GQUxTRUBVU01GRUFUVVJFUFJPRyA9CitATkVUU05NUF9CVUlMRF9VU01fUFJPR19UUlVFQEVLQ1NUQUxMQklOUFJPRyA9IGVuY29kZV9rZXljaGFuZ2UkKEVYRUVYVCkKK0BORVRTTk1QX0JVSUxEX1VTTV9QUk9HX0ZBTFNFQEVLQ1NUQUxMQklOUFJPRyA9CitATkVUU05NUF9CVUlMRF9VU01fUFJPR19UUlVFQEVLQ0ZFQVRVUkVQUk9HID0gZW5jb2RlX2tleWNoYW5nZS5mdAorQE5FVFNOTVBfQlVJTERfVVNNX1BST0dfRkFMU0VARUtDRkVBVFVSRVBST0cgPQorQE5FVFNOTVBfQlVJTERfU0VUX1BST0dfVFJVRUBTTk1QU0VUSU5TVEFMTEJJTlBST0cgPSBzbm1wc2V0JChFWEVFWFQpCitATkVUU05NUF9CVUlMRF9TRVRfUFJPR19GQUxTRUBTTk1QU0VUSU5TVEFMTEJJTlBST0cgPSAKK0BORVRTTk1QX0JVSUxEX1NFVF9QUk9HX1RSVUVAU05NUFNFVEZFQVRVUkVQUk9HID0gc25tcHNldC5mdAorQE5FVFNOTVBfQlVJTERfU0VUX1BST0dfRkFMU0VAU05NUFNFVEZFQVRVUkVQUk9HID0gCitATkVUU05NUF9CVUlMRF9TRVRfUFJPR19UUlVFQFNOTVBWQUNNSU5TVEFMTEJJTlBST0cgPSBzbm1wdmFjbSQoRVhFRVhUKQorQE5FVFNOTVBfQlVJTERfU0VUX1BST0dfRkFMU0VAU05NUFZBQ01JTlNUQUxMQklOUFJPRyA9IAorQE5FVFNOTVBfQlVJTERfU0VUX1BST0dfVFJVRUBTTk1QVkFDTUZFQVRVUkVQUk9HID0gc25tcHZhY20uZnQKK0BORVRTTk1QX0JVSUxEX1NFVF9QUk9HX0ZBTFNFQFNOTVBWQUNNRkVBVFVSRVBST0cgPSAKIAogQE5FVFNOTVBfSEFWRV9BR0VOVFhfTElCU19UUlVFQEFHRU5UWFRSQVAgPSBhZ2VudHh0cmFwJChFWEVFWFQpCiBATkVUU05NUF9IQVZFX0FHRU5UWF9MSUJTX0ZBTFNFQEFHRU5UWFRSQVAgPQogCiBJTlNUQUxMQklOUFJPR1MJPSBzbm1wZ2V0JChFWEVFWFQpIAkJCVwKIAkJc25tcGdldG5leHQkKEVYRUVYVCkgCQkJXAotCQlzbm1wc2V0JChFWEVFWFQpIAkJCVwKLQkJc25tcHVzbSQoRVhFRVhUKQkJCVwKKwkJJChTTk1QU0VUSU5TVEFMTEJJTlBST0cpCSAgICAgICAgXAogCQlzbm1wd2FsayQoRVhFRVhUKSAJCQlcCiAJCXNubXBidWxrd2FsayQoRVhFRVhUKSAJCQlcCiAJCXNubXB0YWJsZSQoRVhFRVhUKQkJCVwKQEAgLTM4LDExICs1OCwxMSBAQAogCQlzbm1wc3RhdHVzJChFWEVFWFQpIAkJCVwKIAkJc25tcGRlbHRhJChFWEVFWFQpIAkJCVwKIAkJc25tcHRlc3QkKEVYRUVYVCkJCQlcCi0JCWVuY29kZV9rZXljaGFuZ2UkKEVYRUVYVCkgCQlcCiAJCXNubXBkZiQoRVhFRVhUKSAJCQlcCiAJCSQoQUdFTlRYVFJBUCkJCQkJXAotCQlzbm1wdmFjbSQoRVhFRVhUKSAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICQoU1NISU5TVEFMTEJJTlBST0cpICQoVExTSU5TVEFMTEJJTlBST0cpCisJCSQoU05NUFZBQ01JTlNUQUxMQklOUFJPRykJICAgICAgICBcCisgICAgICAgICAgICAgICAgJChTU0hJTlNUQUxMQklOUFJPRykgJChUTFNJTlNUQUxMQklOUFJPRykgXAorCQkkKFVTTUlOU1RBTExCSU5QUk9HKSAkKEVLQ1NUQUxMQklOUFJPRykKIAogSU5TVEFMTFNCSU5QUk9HUyA9IHNubXB0cmFwZCQoRVhFRVhUKQogCkBAIC01MCw2ICs3MCw4IEBACiAKIFNVQkRJUlMJCT0gc25tcG5ldHN0YXQKIAorRkVBVFVSRUZJTEU9Li4vaW5jbHVkZS9uZXQtc25tcC9mZWF0dXJlcy1hcHBzLmgKKwogIwogIyBidWlsZCB2YXJpYWJsZXMuCiAjCkBAIC02MiwxNCArODQsMTUgQEAKIE1ZU1FMX0xJQlMJPSBATVlTUUxfTElCU0AKIE1ZU1FMX0lOQ0xVREVTCT0gQE1ZU1FMX0lOQ0xVREVTQAogCi1MSUJTCQk9ICQoVVNFTElCUykgQExJQlNACitWQUxfTElCUwk9IEBWQUxfTElCU0AKK0xJQlMJCT0gJChVU0VMSUJTKSAkKFZBTF9MSUJTKSBATElCU0AKIFBFUkxMRE9QVFNfRk9SX0FQUFMgPSBAUEVSTExET1BUU19GT1JfQVBQU0AKIFBFUkxMRE9QVFNfRk9SX0xJQlMgPSBAUEVSTExET1BUU19GT1JfTElCU0AKIAogIwogIyBoYWNrIGZvciBjb21waWxpbmcgdHJhcGQgd2hlbiBhZ2VudCBpcyBkaXNhYmxlZAotVFJBUERXSVRIQUdFTlQgID0gJChVU0VUUkFQTElCUykgJChNWVNRTF9MSUJTKSBAQUdFTlRMSUJTQAotVFJBUERXSVRIT1VUQUdFTlQgPSAkKExJQlMpICQoTVlTUUxfTElCUykKK1RSQVBEV0lUSEFHRU5UICA9ICQoVVNFVFJBUExJQlMpICQoTVlTUUxfTElCUykgJChWQUxfTElCUykgQEFHRU5UTElCU0AKK1RSQVBEV0lUSE9VVEFHRU5UID0gJChMSUJTKSAkKE1ZU1FMX0xJQlMpICQoVkFMX0xJQlMpCiAKICMgdGhlc2Ugd2lsbCBiZSBzZXQgYnkgY29uZmlndXJlIHRvIG9uZSBvZiB0aGUgYWJvdmUgMiBsaW5lcwogVFJBUExJQlMJPSBAVFJBUExJQlNAICQoUEVSTExET1BUU19GT1JfQVBQUykKQEAgLTg1LDggKzEwOCwzMSBAQAogCQkgIHNubXB0cmFwZF9hdXRoLm8gc25tcHRyYXBkX3NxbC5vCiBMTElCVFJBUERfT0JKUyAgPSBzbm1wdHJhcGRfaGFuZGxlcnMubG8gc25tcHRyYXBkX2xvZy5sbyBcCiAJCSAgc25tcHRyYXBkX2F1dGgubG8gc25tcHRyYXBkX3NxbC5sbworTElCVFJBUERfRlRTICAgID0gc25tcHRyYXBkX2hhbmRsZXJzLmZ0IHNubXB0cmFwZF9sb2cuZnQgXAorCQkgIHNubXB0cmFwZF9hdXRoLmZ0IHNubXB0cmFwZF9zcWwuZnQKIE9CSlMgID0gKi5vCiBMT0JKUyA9ICoubG8KK0ZUT0JKUz0kKExJQlRSQVBEX0ZUUykgXAorICAgICAgIHNubXB3YWxrLmZ0IFwKKyAgICAgICBzbm1wYnVsa3dhbGsuZnQgXAorICAgICAgIHNubXBidWxrZ2V0LmZ0IFwKKyAgICAgICBzbm1wdHJhbnNsYXRlLmZ0IFwKKyAgICAgICBzbm1wc3RhdHVzLmZ0IFwKKyAgICAgICBzbm1wZ2V0LmZ0IFwKKyAgICAgICBzbm1wZGVsdGEuZnQgXAorICAgICAgIHNubXB0YWJsZS5mdCBcCisgICAgICAgc25tcHRlc3QuZnQgXAorICAgICAgIHNubXB0cmFwZC5mdCBcCisgICAgICAgc25tcHRyYXAuZnQgXAorICAgICAgICQoU05NUFNFVEZFQVRVUkVQUk9HKSBcCisgICAgICAgJChTTk1QVkFDTUZFQVRVUkVQUk9HKSBcCisgICAgICAgJChVU01GRUFUVVJFUFJPRykgXAorICAgICAgICQoVExTRkVBVFVSRVBST0cpIFwKKyAgICAgICBhZ2VudHh0cmFwLmZ0IFwKKyAgICAgICBzbm1wZ2V0bmV4dC5mdCBcCisgICAgICAgJChFS0NGRUFUVVJFUFJPRykgXAorICAgICAgIHNubXBkZi5mdCBcCisgICAgICAgJChTU0hGRUFUVVJFUFJPRykKIAogYWxsOiBzdGFuZGFyZGFsbAogCmRpZmYgLS1naXQgYS9hcHBzL2FnZW50eHRyYXAuYyBiL2FwcHMvYWdlbnR4dHJhcC5jCmluZGV4IDM0MGYxMTQuLjRkZjQyM2MgMTAwNjQ0Ci0tLSBhL2FwcHMvYWdlbnR4dHJhcC5jCisrKyBiL2FwcHMvYWdlbnR4dHJhcC5jCkBAIC0xLDQgKzEsNSBAQAotICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxzaWduYWwuaD4KQEAgLTgsMTIgKzksMTYgQEAKICNlbmRpZgogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2RzX2FnZW50Lmg+CiAKICNpbmNsdWRlICIuLi9hZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5oIgogI2luY2x1ZGUgIi4uL2FnZW50L21pYmdyb3VwL2FnZW50eC9jbGllbnQuaCIKICNpbmNsdWRlICIuLi9hZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoc25tcF9zcGxpdF9wZHUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzbm1wX3Jlc2V0X3Zhcl90eXBlcykKKworCiAjaWZkZWYgX19HTlVDX18KICNkZWZpbmUgVU5VU0VEIF9fYXR0cmlidXRlX18oKHVudXNlZCkpCiAjZWxzZQpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wZGVsdGEuYyBiL2FwcHMvc25tcGRlbHRhLmMKaW5kZXggNzEwZmM3Ny4uMDhlMmViYyAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wZGVsdGEuYworKysgYi9hcHBzL3NubXBkZWx0YS5jCkBAIC0yMTQsNyArMjE0LDcgQEAKICAgICAvKgogICAgICAqIE5vdyBmaWd1cmUgb3V0IHRoZSBhbW91bnQgb2YgdGltZSB0byBzbGVlcCAKICAgICAgKi8KLSAgICB0YXJnZXQgPSAoU2Vjb25kc0F0TmV4dEhvdXIgLSB0di0+dHZfc2VjKSAlIHNlY29uZHM7CisgICAgdGFyZ2V0ID0gKGludCkoU2Vjb25kc0F0TmV4dEhvdXIgLSB0di0+dHZfc2VjKSAlIHNlY29uZHM7CiAKICAgICByZXR1cm4gdGFyZ2V0OwogfQpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wZGYuYyBiL2FwcHMvc25tcGRmLmMKaW5kZXggMmI0MzhmOS4uMTQ0YTUwNSAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wZGYuYworKysgYi9hcHBzL3NubXBkZi5jCkBAIC04Nyw5ICs4NywxNCBAQAogICAgICAgICAgICAgIlx0LUN1XHRVc2UgVUNELVNOTVAgZHNrVGFibGUgdG8gZG8gdGhlIGNhbGN1bGF0aW9ucy5cbiIpOwogICAgIGZwcmludGYoc3RkZXJyLAogICAgICAgICAgICAgIlx0XHRbTm9ybWFsbHkgdGhlIEhPU1QtUkVTT1VSQ0VTLU1JQiBpcyBjb25zdWx0ZWQgZmlyc3QuXVxuIik7CisgICAgZnByaW50ZihzdGRlcnIsCisgICAgICAgICAgICAiXHQtQ2hcdFByaW50IHVzaW5nIGh1bWFuIHJlYWRhYmxlIGZvcm1hdCAoTWlCLCBHaUIsIFRpQilcbiIpOworICAgIGZwcmludGYoc3RkZXJyLAorICAgICAgICAgICAgIlx0LUNIXHRQcmludCB1c2luZyBodW1hbiByZWFkYWJsZSBTSSBmb3JtYXQgKE1CLCBHQiwgVEIpXG4iKTsKIH0KIAogaW50ICAgICAgICAgICAgIHVjZF9taWIgPSAwOworaW50ICAgICAgICAgICAgIGh1bWFuX3VuaXRzID0gMDsKIAogc3RhdGljIHZvaWQKIG9wdFByb2MoaW50IGFyZ2MsIGNoYXIgKmNvbnN0ICphcmd2LCBpbnQgb3B0KQpAQCAtMTAxLDYgKzEwNiwxMiBAQAogICAgICAgICAgICAgY2FzZSAndSc6CiAgICAgICAgICAgICAgICAgdWNkX21pYiA9IDE7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdoJzoKKyAgICAgICAgICAgICAgICBodW1hbl91bml0cyA9IDEwMjQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdIJzoKKyAgICAgICAgICAgICAgICBodW1hbl91bml0cyA9IDEwMDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLAogICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24gZmxhZyBwYXNzZWQgdG8gLUM6ICVjXG4iLCBvcHRhcmdbLTFdKTsKQEAgLTE2NiwxNCArMTc3LDE0IEBACiAgICAgICAgICAgICBleGl0KDEpOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZXNwb25zZS0+ZXJyc3RhdCAhPSBTTk1QX0VSUl9OT0VSUk9SKSB7Ci0JICAgIGZwcmludGYoc3RkZXJyLCAic25tcGRmOiBFcnJvciBpbiBwYWNrZXQ6ICVzXG4iLAorICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJzbm1wZGY6IEVycm9yIGluIHBhY2tldDogJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgIHNubXBfZXJyc3RyaW5nKHJlc3BvbnNlLT5lcnJzdGF0KSk7CiAgICAgICAgICAgICBleGl0KDEpOwogICAgICAgICB9CiAgICAgICAgIGlmIChzbm1wX29pZF9jb21wYXJlKHJlc3BvbnNlLT52YXJpYWJsZXMtPm5hbWUsCi0JCQkgICAgIFNOTVBfTUlOKGJhc2VfbGVuZ3RoLAotCQkJCSAgICAgIHJlc3BvbnNlLT52YXJpYWJsZXMtPm5hbWVfbGVuZ3RoKSwKLQkJCSAgICAgYmFzZSwgYmFzZV9sZW5ndGgpICE9IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfTUlOKGJhc2VfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS0+dmFyaWFibGVzLT5uYW1lX2xlbmd0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UsIGJhc2VfbGVuZ3RoKSAhPSAwKQogICAgICAgICAgICAgcnVubmluZyA9IDA7CiAgICAgICAgIGVsc2UgaWYgKHJlc3BvbnNlLT52YXJpYWJsZXMtPnR5cGUgPT0gU05NUF9OT1NVQ0hJTlNUQU5DRSB8fAogICAgICAgICAgICAgICAgICByZXNwb25zZS0+dmFyaWFibGVzLT50eXBlID09IFNOTVBfTk9TVUNIT0JKRUNUIHx8CkBAIC0yMDMsNiArMjE0LDI3IEBACiAgICAgcmV0dXJuIHNhdmVkOwogfQogCisKKworY2hhciAqZm9ybWF0X2h1bWFuKGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbiwgdW5zaWduZWQgbG9uZyBtZW0sIHVuc2lnbmVkIGxvbmcgc2NhbGUpCit7CisgICAgaWYgKG1lbSA+PSBzY2FsZSpzY2FsZSpzY2FsZSpzY2FsZSkKKyAgICAgICAgc25wcmludGYoYnVmLCBsZW4sICIlNC4yZlAlc0IiLCAoZmxvYXQpbWVtLyhzY2FsZSpzY2FsZSpzY2FsZSpzY2FsZSksCisJCXNjYWxlID09IDEwMjQgPyAiaSIgOiAiIik7CisgICAgZWxzZSBpZiAobWVtID49IHNjYWxlKnNjYWxlKnNjYWxlKQorICAgICAgICBzbnByaW50ZihidWYsIGxlbiwgIiU0LjJmVCVzQiIsIChmbG9hdCltZW0vKHNjYWxlKnNjYWxlKnNjYWxlKSwKKwkJc2NhbGUgPT0gMTAyNCA/ICJpIiA6ICIiKTsKKyAgICBlbHNlIGlmIChtZW0gPj0gc2NhbGUqc2NhbGUpCisgICAgICAgIHNucHJpbnRmKGJ1ZiwgbGVuLCAiJTQuMmZHJXNCIiwgKGZsb2F0KW1lbS8oc2NhbGUqc2NhbGUpLAorCQlzY2FsZSA9PSAxMDI0ID8gImkiIDogIiIpOworICAgIGVsc2UgaWYgKG1lbSA+PSBzY2FsZSkKKyAgICAgICAgc25wcmludGYoYnVmLCBsZW4sICIlNC4yZk0lc0IiLCAoZmxvYXQpbWVtL3NjYWxlLAorCQlzY2FsZSA9PSAxMDI0ID8gImkiIDogIiIpOworICAgIGVsc2UKKyAgICAgICAgc25wcmludGYoYnVmLCBsZW4sICIlNC4yZmtCIiwgKGZsb2F0KW1lbSk7CisgICAgcmV0dXJuIGJ1ZjsKK30KKwogLyogQ29tcHV0ZXMgdmFsdWUqdW5pdHMvZGl2aXNvciBpbiBhbiBvdmVyZmxvdy1wcm9vZiB3YXkuCiAgKi8KIHVuc2lnbmVkIGxvbmcKQEAgLTI2MCw4ICsyOTIsMTQgQEAKICAgICAgICAgZXhpdCgxKTsKICAgICB9CiAKLSAgICBwcmludGYoIiUtMThzICUxNXMgJTE1cyAlMTVzICU1c1xuIiwgIkRlc2NyaXB0aW9uIiwgInNpemUgKGtCKSIsCisgICAgaWYgKGh1bWFuX3VuaXRzKSB7CisgICAgICAgIHByaW50ZigiJS0xOHMgJTEwcyAlMTBzICUxMHMgJTVzXG4iLCAiRGVzY3JpcHRpb24iLCAiU2l6ZSIsCiAgICAgICAgICAgICJVc2VkIiwgIkF2YWlsYWJsZSIsICJVc2VkJSIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcHJpbnRmKCIlLTE4cyAlMTVzICUxNXMgJTE1cyAlNXNcbiIsICJEZXNjcmlwdGlvbiIsICJTaXplIChrQikiLAorICAgICAgICAgICAiVXNlZCIsICJBdmFpbGFibGUiLCAiVXNlZCUiKTsKKyAgICB9CiAgICAgaWYgKHVjZF9taWIgPT0gMCkgewogICAgICAgICAvKgogICAgICAgICAgKiAqIEJlZ2luIGJ5IGZpbmRpbmcgYWxsIHRoZSBzdG9yYWdlIHBpZWNlcyB0aGF0IGFyZSBvZgpAQCAtMzE2LDEyICszNTQsMjYgQEAKICAgICAgICAgICAgIGlmICh2bHAyLT50eXBlID09IFNOTVBfTk9TVUNISU5TVEFOQ0UpIGdvdG8gbmV4dDsKICAgICAgICAgICAgIGhzdXNlZCA9IHZscDItPnZhbC5pbnRlZ2VyID8gKih2bHAyLT52YWwuaW50ZWdlcikgOiAwOwogCi0gICAgICAgICAgICBwcmludGYoIiUtMThzICUxNWx1ICUxNWx1ICUxNWx1ICU0bHUlJVxuIiwgZGVzY3IsCi0gICAgICAgICAgICAgICAgICAgdW5pdHMgPyBjb252ZXJ0X3VuaXRzKGhzc2l6ZSwgdW5pdHMsIDEwMjQpIDogaHNzaXplLAotICAgICAgICAgICAgICAgICAgIHVuaXRzID8gY29udmVydF91bml0cyhoc3VzZWQsIHVuaXRzLCAxMDI0KSA6IGhzdXNlZCwKLSAgICAgICAgICAgICAgICAgICB1bml0cyA/IGNvbnZlcnRfdW5pdHMoaHNzaXplLWhzdXNlZCwgdW5pdHMsIDEwMjQpIDogaHNzaXplIC0KLSAgICAgICAgICAgICAgICAgICBoc3VzZWQsIGhzc2l6ZSA/IGNvbnZlcnRfdW5pdHMoaHN1c2VkLCAxMDAsIGhzc2l6ZSkgOgotICAgICAgICAgICAgICAgICAgIGhzdXNlZCk7CisgICAgICAgICAgICBpZiAoaHVtYW5fdW5pdHMpIHsKKyAgICAgICAgICAgICAgICBjaGFyIHNpemVbMTBdLCB1c2VkWzEwXSwgYXZhaWxbMTBdOworICAgICAgICAgICAgICAgIHByaW50ZigiJS0xOHMgJTEwcyAlMTBzICUxMHMgJTRsdSUlXG4iLCBkZXNjciwKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2h1bWFuKHNpemUsIHNpemVvZiBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHMgPyBjb252ZXJ0X3VuaXRzKGhzc2l6ZSwgdW5pdHMsIDEwMjQpIDogaHNzaXplLCBodW1hbl91bml0cyksCisgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9odW1hbih1c2VkLCBzaXplb2YgdXNlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRzID8gY29udmVydF91bml0cyhoc3VzZWQsIHVuaXRzLCAxMDI0KSA6IGhzdXNlZCwgaHVtYW5fdW5pdHMpLAorICAgICAgICAgICAgICAgICAgICBmb3JtYXRfaHVtYW4oYXZhaWwsIHNpemVvZiBhdmFpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRzID8gY29udmVydF91bml0cyhoc3NpemUtaHN1c2VkLCB1bml0cywgMTAyNCkgOiBoc3NpemUgLQorICAgICAgICAgICAgICAgICAgICBoc3VzZWQsIGh1bWFuX3VuaXRzKSwKKyAgICAgICAgICAgICAgICAgICAgaHNzaXplID8gY29udmVydF91bml0cyhoc3VzZWQsIDEwMCwgaHNzaXplKSA6IGhzdXNlZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIiUtMThzICUxNWx1ICUxNWx1ICUxNWx1ICU0bHUlJVxuIiwgZGVzY3IsCisgICAgICAgICAgICAgICAgICAgIHVuaXRzID8gY29udmVydF91bml0cyhoc3NpemUsIHVuaXRzLCAxMDI0KSA6IGhzc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgdW5pdHMgPyBjb252ZXJ0X3VuaXRzKGhzdXNlZCwgdW5pdHMsIDEwMjQpIDogaHN1c2VkLAorICAgICAgICAgICAgICAgICAgICB1bml0cyA/IGNvbnZlcnRfdW5pdHMoaHNzaXplLWhzdXNlZCwgdW5pdHMsIDEwMjQpIDogaHNzaXplIC0KKyAgICAgICAgICAgICAgICAgICAgaHN1c2VkLAorICAgICAgICAgICAgICAgICAgICBoc3NpemUgPyBjb252ZXJ0X3VuaXRzKGhzdXNlZCwgMTAwLCBoc3NpemUpIDogaHN1c2VkKTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICBuZXh0OgogICAgICAgICAgICAgdmxwID0gdmxwLT5uZXh0X3ZhcmlhYmxlOwpAQCAtMzMxLDcgKzM4Myw2IEBACiAgICAgfQogCiAgICAgaWYgKGNvdW50ID09IDApIHsKLSAgICAgICAgc2l6ZV90ICAgICAgICAgIHVuaXRzID0gMDsKICAgICAgICAgLyoKICAgICAgICAgICogdGhlIGhvc3QgcmVzb3VyY2VzIG1pYiBtdXN0IG5vdCBiZSBzdXBwb3J0ZWQuICBMZXRzIHRyeSB0aGUKICAgICAgICAgICogVUNELVNOTVAtTUlCIGFuZCBpdHMgZHNrVGFibGUgCkBAIC0zNzgsMTIgKzQyOSwxOSBAQAogICAgICAgICAgICAgaWYgKHZscDItPnR5cGUgPT0gU05NUF9OT1NVQ0hJTlNUQU5DRSkgZ290byBuZXh0MjsKICAgICAgICAgICAgIGhzdXNlZCA9ICoodmxwMi0+dmFsLmludGVnZXIpOwogCi0gICAgICAgICAgICBwcmludGYoIiUtMThzICUxNWx1ICUxNWx1ICUxNWx1ICU0bHUlJVxuIiwgZGVzY3IsCi0gICAgICAgICAgICAgICAgICAgdW5pdHMgPyBjb252ZXJ0X3VuaXRzKGhzc2l6ZSwgdW5pdHMsIDEwMjQpIDogaHNzaXplLAotICAgICAgICAgICAgICAgICAgIHVuaXRzID8gY29udmVydF91bml0cyhoc3VzZWQsIHVuaXRzLCAxMDI0KSA6IGhzdXNlZCwKLSAgICAgICAgICAgICAgICAgICB1bml0cyA/IGNvbnZlcnRfdW5pdHMoaHNzaXplLWhzdXNlZCwgdW5pdHMsIDEwMjQpIDogaHNzaXplIC0KLSAgICAgICAgICAgICAgICAgICBoc3VzZWQsIGhzc2l6ZSA/IGNvbnZlcnRfdW5pdHMoaHN1c2VkLCAxMDAsIGhzc2l6ZSkgOgotICAgICAgICAgICAgICAgICAgIGhzdXNlZCk7CisgICAgICAgICAgICBpZiAoaHVtYW5fdW5pdHMpIHsKKyAgICAgICAgICAgICAgICBjaGFyIHNpemVbMTBdLCB1c2VkWzEwXSwgYXZhaWxbMTBdOworICAgICAgICAgICAgICAgIHByaW50ZigiJS0xOHMgJTEwcyAlMTBzICUxMHMgJTRsdSUlXG4iLCBkZXNjciwKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2h1bWFuKHNpemUsIHNpemVvZiBzaXplLCBoc3NpemUsIGh1bWFuX3VuaXRzKSwKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2h1bWFuKHVzZWQsIHNpemVvZiB1c2VkLCBoc3VzZWQsIGh1bWFuX3VuaXRzKSwKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2h1bWFuKGF2YWlsLCBzaXplb2YgYXZhaWwsIGhzc2l6ZSAtIGhzdXNlZCwgaHVtYW5fdW5pdHMpLAorICAgICAgICAgICAgICAgICAgICBoc3NpemUgPyBjb252ZXJ0X3VuaXRzKGhzdXNlZCwgMTAwLCBoc3NpemUpIDogaHN1c2VkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHByaW50ZigiJS0xOHMgJTE1bHUgJTE1bHUgJTE1bHUgJTRsdSUlXG4iLCBkZXNjciwKKyAgICAgICAgICAgICAgICAgICAgIGhzc2l6ZSwgaHN1c2VkLCBoc3NpemUgLSBoc3VzZWQsCisgICAgICAgICAgICAgICAgICAgICBoc3NpemUgPyBjb252ZXJ0X3VuaXRzKGhzdXNlZCwgMTAwLCBoc3NpemUpIDogaHN1c2VkKTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICBuZXh0MjoKICAgICAgICAgICAgIHZscCA9IHZscC0+bmV4dF92YXJpYWJsZTsKZGlmZiAtLWdpdCBhL2FwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuZGVwZW5kIGIvYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQKaW5kZXggNjE4MWYxOS4uNmJmYzExYSAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQKKysrIGIvYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQKQEAgLTQsNyArNCw2IEBACiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKIC4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oIAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oIC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9pZi5sbzogIC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaApAQCAtMzAsMTMgKzI5LDEzIEBACiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTEwMSwxMyArMTAwLDEzIEBACiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE3MSwxMyArMTcwLDEzIEBACiAuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0yNDEsMTMgKzI0MCwxMyBAQAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMzExLDEzICszMTAsMTMgQEAKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMzgxLDEzICszODAsMTMgQEAKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKZGlmZiAtLWdpdCBhL2FwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4gYi9hcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmluCmluZGV4IDRhMDdlYmIuLjA0YWViNDAgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4KKysrIGIvYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbgpAQCAtMyw2ICszLDggQEAKICMKIAogdG9wX2J1aWxkZGlyPS4uLy4uCitteXN1YmRpcj1hcHBzL3NubXBuZXRzdGF0CisKIElOU1RBTExCSU5QUk9HUz1zbm1wbmV0c3RhdCQoRVhFRVhUKQogCiAjIHVzZSBHTlUgdnBhdGgsIGlmIGF2YWlsYWJsZSwgdG8gb25seSBzZXQgYSBwYXRoIGZvciBzb3VyY2UgYW5kIGhlYWRlcnMKQEAgLTE2LDE1ICsxOCwxOSBAQAogIwogIyBidWlsZCBpbmZvCiAjCi1TUkNTPQlpbmV0LmMgaW5ldDYuYyBpZi5jIG1haW4uYyByb3V0ZS5jIHdpbnN0dWIuYyBmZnMuYwotT0JKUz0JaW5ldC5vIGluZXQ2Lm8gaWYubyBtYWluLm8gcm91dGUubyB3aW5zdHViLm8gZmZzLm8KLUxPQkpTPQlpbmV0LmxvIGluZXQ2LmxvIGlmLmxvIG1haW4ubG8gcm91dGUubG8gd2luc3R1Yi5sbyBmZnMubG8KK1NSQ1M9CWluZXQuYyBpbmV0Ni5jIGluZXR4LmMgaWYuYyBtYWluLmMgcm91dGUuYyByb3V0ZXguYyB3aW5zdHViLmMgZmZzLmMKK09CSlM9CWluZXQubyBpbmV0Ni5vIGluZXR4Lm8gaWYubyBtYWluLm8gcm91dGUubyByb3V0ZXgubyB3aW5zdHViLm8gZmZzLm8KK0xPQkpTPQlpbmV0LmxvIGluZXQ2LmxvIGluZXR4LmxvIGlmLmxvIG1haW4ubG8gcm91dGUubG8gcm91dGV4LmxvIHdpbnN0dWIubG8gZmZzLmxvCitGVE9CSlM9CWluZXQuZnQgaW5ldDYuZnQgaW5ldHguZnQgaWYuZnQgbWFpbi5mdCByb3V0ZS5mdCByb3V0ZXguZnQgd2luc3R1Yi5mdCBmZnMuZnQKIFRBUkc9IHNubXBuZXRzdGF0JChFWEVFWFQpCiAKK0ZFQVRVUkVGSUxFPS4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZmVhdHVyZXMtc25tcG5ldHN0YXQuaAorCiBDUFBGTEFHUz0gJChUT1BfSU5DTFVERVMpICBAQ1BQRkxBR1NACiAKK1ZBTF9MSUJTCT0gQFZBTF9MSUJTQAogVVNFTElCUz0gLi4vLi4vc25tcGxpYi9saWJuZXRzbm1wLiQoTElCX0VYVEVOU0lPTikkKExJQl9WRVJTSU9OKQotTElCUz0JIC4uLy4uL3NubXBsaWIvbGlibmV0c25tcC4kKExJQl9FWFRFTlNJT04pJChMSUJfVkVSU0lPTikgQExJQlNACitMSUJTPQkgLi4vLi4vc25tcGxpYi9saWJuZXRzbm1wLiQoTElCX0VYVEVOU0lPTikkKExJQl9WRVJTSU9OKSAkKFZBTF9MSUJTKSBATElCU0AKIAogYWxsOiBzdGFuZGFyZGFsbAogCmRpZmYgLS1naXQgYS9hcHBzL3NubXBuZXRzdGF0L2lmLmMgYi9hcHBzL3NubXBuZXRzdGF0L2lmLmMKaW5kZXggYTkyYTM2Yy4uMmI5ZTZmNCAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wbmV0c3RhdC9pZi5jCisrKyBiL2FwcHMvc25tcG5ldHN0YXQvaWYuYwpAQCAtMTUxLDE2ICsxNTEsMTYgQEAKICAgICAgICAgICogICBkaXNwbGF5aW5nIHRoZSBsb2NhbCBuZXR3b3JrIGluZm9ybWF0aW9uCiAgICAgICAgICAqLwogICAgICAgICBjcCA9IHRtcEFkZHIuZGF0YTsKLSAgICAgICAgY3BbMF0gPSB2cDItPm5hbWVbIDEwIF0gJiAweGZmOwotICAgICAgICBjcFsxXSA9IHZwMi0+bmFtZVsgMTEgXSAmIDB4ZmY7Ci0gICAgICAgIGNwWzJdID0gdnAyLT5uYW1lWyAxMiBdICYgMHhmZjsKLSAgICAgICAgY3BbM10gPSB2cDItPm5hbWVbIDEzIF0gJiAweGZmOworICAgICAgICBjcFswXSA9ICh1aW50OF90KSB2cDItPm5hbWVbMTBdOworICAgICAgICBjcFsxXSA9ICh1aW50OF90KSB2cDItPm5hbWVbMTFdOworICAgICAgICBjcFsyXSA9ICh1aW50OF90KSB2cDItPm5hbWVbMTJdOworICAgICAgICBjcFszXSA9ICh1aW50OF90KSB2cDItPm5hbWVbMTNdOwogICAgICAgICBpZkFkZHIgPSB0bXBBZGRyLmFkZHI7CiAgICAgICAgIGNwID0gdG1wQWRkci5kYXRhOwotICAgICAgICBjcFswXSA9IHZwMi0+dmFsLnN0cmluZ1sgMCBdICYgMHhmZjsKLSAgICAgICAgY3BbMV0gPSB2cDItPnZhbC5zdHJpbmdbIDEgXSAmIDB4ZmY7Ci0gICAgICAgIGNwWzJdID0gdnAyLT52YWwuc3RyaW5nWyAyIF0gJiAweGZmOwotICAgICAgICBjcFszXSA9IHZwMi0+dmFsLnN0cmluZ1sgMyBdICYgMHhmZjsKKyAgICAgICAgY3BbMF0gPSAodWludDhfdCkgdnAyLT52YWwuc3RyaW5nWzBdOworICAgICAgICBjcFsxXSA9ICh1aW50OF90KSB2cDItPnZhbC5zdHJpbmdbMV07CisgICAgICAgIGNwWzJdID0gKHVpbnQ4X3QpIHZwMi0+dmFsLnN0cmluZ1syXTsKKyAgICAgICAgY3BbM10gPSAodWludDhfdCkgdnAyLT52YWwuc3RyaW5nWzNdOwogICAgICAgICBtYXNrID0gdG1wQWRkci5hZGRyOwogICAgICAgICBzbnByaW50ZiggY3VyX2lmLT5yb3V0ZSwgMTI4LCAiJXMiLCBuZXRuYW1lKGlmQWRkciwgbWFzaykpOwogICAgIH0KQEAgLTI4NSw3ICsyODUsNiBAQAogICAgICAgICAgICAgICAgICAqIFhYWCAtIFRyeSB0byByZWNvdmVyID8KICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICBTTk1QX0ZSRUUoIGN1cl9pZiApOwotICAgICAgICAgICAgICAgIGN1cl9pZiA9IE5VTEw7CiAgICAgICAgICAgICAgICAgYnJlYWs7ICAgIC8qIG5vdCBmb3Igbm93LCBubyAqLwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3dpdGNoICggdnAtPm5hbWVbIHZhci0+bmFtZV9sZW5ndGgtMiBdICkgewpAQCAtMzkwLDcgKzM4OSw2IEBACiAgICAgICAgICAqLwogICAgICAgICBpZiAoIGludHJmYWNlICYmIHN0cmNtcCggY3VyX2lmLT5uYW1lLCBpbnRyZmFjZSkgIT0gMCAmJiBzdHJjbXAoIGN1cl9pZi0+ZGVzY3IsIGludHJmYWNlKSAhPSAwKSB7CiAgICAgICAgICAgICBTTk1QX0ZSRUUoIGN1cl9pZiApOwotICAgICAgICAgICAgY3VyX2lmID0gTlVMTDsKICAgICAgICAgfQogCiAgICAgICAgIC8qCmRpZmYgLS1naXQgYS9hcHBzL3NubXBuZXRzdGF0L2luZXQuYyBiL2FwcHMvc25tcG5ldHN0YXQvaW5ldC5jCmluZGV4IDZmN2MxZTEuLmU3M2Q4ZjkgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcG5ldHN0YXQvaW5ldC5jCisrKyBiL2FwcHMvc25tcG5ldHN0YXQvaW5ldC5jCkBAIC0xMjYsNyArMTI2LDcgQEAKIAkJaWYgKGFmbGFnKQogCQkJcHJpbnRmKCIgKGluY2x1ZGluZyBzZXJ2ZXJzKSIpOwogCQlwdXRjaGFyKCdcbicpOwotCQl3aWR0aCA9IEFmbGFnID8gMTggOiAyMjsKKwkJd2lkdGggPSAyNzsKIAkJcHJpbnRmKCIlLTUuNXMgJSouKnMgJSouKnMgJXNcbiIsCiAJCQkgICAiUHJvdG8iLCAtd2lkdGgsIHdpZHRoLCAiTG9jYWwgQWRkcmVzcyIsCiAJCQkJCQktd2lkdGgsIHdpZHRoLCAiUmVtb3RlIEFkZHJlc3MiLCAiKHN0YXRlKSIpOwpAQCAtMTM1LDI3ICsxMzUsMjcgQEAKIAkKIAkvKiBFeHRyYWN0IHRoZSBsb2NhbC9yZW1vdGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgaW5kZXggdmFsdWVzICovCiAJY3AgPSB0bXBBZGRyLmRhdGE7Ci0JY3BbMF0gPSB2cC0+bmFtZVsgMTAgXSAmIDB4ZmY7Ci0JY3BbMV0gPSB2cC0+bmFtZVsgMTEgXSAmIDB4ZmY7Ci0JY3BbMl0gPSB2cC0+bmFtZVsgMTIgXSAmIDB4ZmY7Ci0JY3BbM10gPSB2cC0+bmFtZVsgMTMgXSAmIDB4ZmY7CisJY3BbMF0gPSAodWludDhfdCkgdnAtPm5hbWVbMTBdOworCWNwWzFdID0gKHVpbnQ4X3QpIHZwLT5uYW1lWzExXTsKKwljcFsyXSA9ICh1aW50OF90KSB2cC0+bmFtZVsxMl07CisJY3BbM10gPSAodWludDhfdCkgdnAtPm5hbWVbMTNdOwogCWxvY2FsQWRkci5zX2FkZHIgPSB0bXBBZGRyLmFkZHIuc19hZGRyOwotCWxvY2FsUG9ydCAgICAgICAgPSBudG9ocyh2cC0+bmFtZVsgMTQgXSk7CisJbG9jYWxQb3J0ICAgICAgICA9IHZwLT5uYW1lWyAxNCBdOwogCWNwID0gdG1wQWRkci5kYXRhOwotCWNwWzBdID0gdnAtPm5hbWVbIDE1IF0gJiAweGZmOwotCWNwWzFdID0gdnAtPm5hbWVbIDE2IF0gJiAweGZmOwotCWNwWzJdID0gdnAtPm5hbWVbIDE3IF0gJiAweGZmOwotCWNwWzNdID0gdnAtPm5hbWVbIDE4IF0gJiAweGZmOworCWNwWzBdID0gKHVpbnQ4X3QpIHZwLT5uYW1lWzE1XTsKKwljcFsxXSA9ICh1aW50OF90KSB2cC0+bmFtZVsxNl07CisJY3BbMl0gPSAodWludDhfdCkgdnAtPm5hbWVbMTddOworCWNwWzNdID0gKHVpbnQ4X3QpIHZwLT5uYW1lWzE4XTsKIAlyZW1vdGVBZGRyLnNfYWRkciA9IHRtcEFkZHIuYWRkci5zX2FkZHI7Ci0JcmVtb3RlUG9ydCAgICAgICAgPSBudG9ocyh2cC0+bmFtZVsgMTkgXSk7CisJcmVtb3RlUG9ydCAgICAgICAgPSB2cC0+bmFtZVsgMTkgXTsKIAogCXByaW50ZigiJS01LjVzIiwgbmFtZSk7CiAJaW5ldHByaW50KCZsb2NhbEFkZHIsICBsb2NhbFBvcnQsICBuYW1lLCAxKTsKIAlpbmV0cHJpbnQoJnJlbW90ZUFkZHIsIHJlbW90ZVBvcnQsIG5hbWUsIDApOwogCWlmIChzdGF0ZSA8IDEgfHwgc3RhdGUgPiBUQ1BfTlNUQVRFUykgewotCQlwcmludGYoIiVkXG4iLCBzdGF0ZSApOworCQlwcmludGYoIiAlZFxuIiwgc3RhdGUgKTsKIAl9IGVsc2UgewotCQlwcmludGYoIiVzXG4iLCB0Y3BzdGF0ZXNbc3RhdGVdKTsKKwkJcHJpbnRmKCIgJXNcbiIsIHRjcHN0YXRlc1tzdGF0ZV0pOwogCX0KIH0KIApAQCAtMTc2LDYgKzE3Niw4IEBACiAgICAgICAgIHJldHVybjsKICAgICBpZiAobmV0c25tcF9xdWVyeV93YWxrKCB2YXIsIHNzICkgIT0gU05NUF9FUlJfTk9FUlJPUikKICAgICAgICAgcmV0dXJuOworICAgIGlmICh2YXItPnR5cGUgPT0gQVNOX05VTEwpCisJcmV0dXJuOwogCiAgICAgZm9yICh2cCA9IHZhcjsgdnAgOyB2cD12cC0+bmV4dF92YXJpYWJsZSkgewogICAgICAgICB0Y3Bwcm90b3ByaW50X2xpbmUobmFtZSwgdnAsICZmaXJzdCk7CkBAIC0yMTIsOSArMjE0LDExIEBACiAgICAgICAgIHJldHVybjsKICAgICBpZiAobmV0c25tcF9xdWVyeV93YWxrKCB2YXIsIHNzICkgIT0gU05NUF9FUlJfTk9FUlJPUikKICAgICAgICAgcmV0dXJuOworICAgIGlmICh2YXItPnR5cGUgPT0gQVNOX05VTEwpCisJcmV0dXJuOwogCiAgICAgcHJpbnRmKCJBY3RpdmUgSW50ZXJuZXQgKCVzKSBDb25uZWN0aW9uc1xuIiwgbmFtZSk7Ci0gICAgcHJpbnRmKCIlLTUuNXMgJS0yOC4yOHNcbiIsICJQcm90byIsICJMb2NhbCBBZGRyZXNzIik7CisgICAgcHJpbnRmKCIlLTUuNXMgJS0yNy4yN3NcbiIsICJQcm90byIsICJMb2NhbCBBZGRyZXNzIik7CiAgICAgZm9yICh2cCA9IHZhcjsgdnAgOyB2cD12cC0+bmV4dF92YXJpYWJsZSkgewogICAgICAgICBwcmludGYoIiUtNS41cyIsIG5hbWUpOwogICAgICAgICAvKgpAQCAtMjIzLDEyICsyMjcsMTIgQEAKICAgICAgICAgICogICB3ZSB3YWxrZWQgdWRwTG9jYWxBZGRyZXNzIHJhdGhlciB0aGFuIHVkcExvY2FsUG9ydCkKICAgICAgICAgICovCiAgICAgICAgIGNwID0gdG1wQWRkci5kYXRhOwotICAgICAgICBjcFswXSA9IHZwLT5uYW1lWyAxMCBdICYgMHhmZjsKLSAgICAgICAgY3BbMV0gPSB2cC0+bmFtZVsgMTEgXSAmIDB4ZmY7Ci0gICAgICAgIGNwWzJdID0gdnAtPm5hbWVbIDEyIF0gJiAweGZmOwotICAgICAgICBjcFszXSA9IHZwLT5uYW1lWyAxMyBdICYgMHhmZjsKKyAgICAgICAgY3BbMF0gPSAodWludDhfdCkgdnAtPm5hbWVbMTBdOworICAgICAgICBjcFsxXSA9ICh1aW50OF90KSB2cC0+bmFtZVsxMV07CisgICAgICAgIGNwWzJdID0gKHVpbnQ4X3QpIHZwLT5uYW1lWzEyXTsKKyAgICAgICAgY3BbM10gPSAodWludDhfdCkgdnAtPm5hbWVbMTNdOwogICAgICAgICBsb2NhbEFkZHIuc19hZGRyID0gdG1wQWRkci5hZGRyLnNfYWRkcjsKLSAgICAgICAgbG9jYWxQb3J0ICAgICAgICA9IG50b2hzKCAodV9zaG9ydCkodnAtPm5hbWVbIDE0IF0pKTsKKyAgICAgICAgbG9jYWxQb3J0ICAgICAgICA9IHZwLT5uYW1lWyAxNCBdOwogICAgICAgICBpbmV0cHJpbnQoJmxvY2FsQWRkciwgbG9jYWxQb3J0LCBuYW1lLCAxKTsKICAgICAgICAgcHV0Y2hhcignXG4nKTsKICAgICB9CkBAIC0yODEsMTEgKzI4NSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIH0KIAotCQkJCQl0Y3Bwcm90b3ByaW50X2xpbmUobmFtZSwgdnAsICZmaXJzdCk7Ci0KICAgICAgICAgICAgICAgICAgICAgaWYgKCh2cC0+dHlwZSAhPSBTTk1QX0VORE9GTUlCVklFVykgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICh2cC0+dHlwZSAhPSBTTk1QX05PU1VDSE9CSkVDVCkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICh2cC0+dHlwZSAhPSBTTk1QX05PU1VDSElOU1RBTkNFKSkgeworCisJCQl0Y3Bwcm90b3ByaW50X2xpbmUobmFtZSwgdnAsICZmaXJzdCk7CisKICAgICAgICAgICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICAgICAgICAgKiBDaGVjayBpZiBsYXN0IHZhcmlhYmxlLCBhbmQgaWYgc28sIHNhdmUgZm9yIG5leHQgcmVxdWVzdC4KICAgICAgICAgICAgICAgICAgICAgICAgICAqLwpAQCAtMzI0LDE5ICszMjksMTkgQEAKIHsKICAgICBvaWQgICAgdGNwQ29ublN0YXRlX29pZFtdID0geyAxLDMsNiwxLDIsMSw2LDEzLDEsMSB9OwogICAgIHNpemVfdCB0Y3BDb25uU3RhdGVfbGVuICAgPSBPSURfTEVOR1RIKCB0Y3BDb25uU3RhdGVfb2lkICk7Ci0JaW50ICAgIHVzZV9nZXRidWxrID0gMTsKKyAgICBpbnQgICAgdXNlX2dldGJ1bGsgPSAxOwogCiAjaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TTk1QVjEKICAgICBpZiAoc3MtPnZlcnNpb24gPT0gU05NUF9WRVJTSU9OXzEpIHsKICAgICAgICAgdXNlX2dldGJ1bGsgPSAwOwotCX0KKyAgICB9CiAjZW5kaWYKIAotCWlmICh1c2VfZ2V0YnVsaykgewotCQl0Y3Bwcm90b3ByX2J1bGtnZXQobmFtZSwgdGNwQ29ublN0YXRlX29pZCwgdGNwQ29ublN0YXRlX2xlbik7Ci0JfSBlbHNlIHsKLQkJdGNwcHJvdG9wcl9nZXQobmFtZSwgdGNwQ29ublN0YXRlX29pZCwgdGNwQ29ublN0YXRlX2xlbik7Ci0JfQorICAgIGlmICh1c2VfZ2V0YnVsaykgeworCSAgICB0Y3Bwcm90b3ByX2J1bGtnZXQobmFtZSwgdGNwQ29ublN0YXRlX29pZCwgdGNwQ29ublN0YXRlX2xlbik7CisgICAgfSBlbHNlIHsKKwkgICAgdGNwcHJvdG9wcl9nZXQobmFtZSwgdGNwQ29ublN0YXRlX29pZCwgdGNwQ29ublN0YXRlX2xlbik7CisgICAgfQogfQogCiAKQEAgLTM5MSw3ICszOTYsNiBAQAogICAgICAgICAgKiAgIHRoZW4gb25seSBkaXNwbGF5IG5vbi16ZXJvIHN0YXRzLgogICAgICAgICAgKi8KICAgICAgICAgaWYgKCAqdnAtPnZhbC5pbnRlZ2VyID4gMCB8fCBzZmxhZyA9PSAxICkgewotICAgICAgICAgICAgcHV0Y2hhcignXHQnKTsKICAgICAgICAgICAgIHByaW50ZihzcC0+ZGVzY3JpcHRpb24sICp2cC0+dmFsLmludGVnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdXJhbCgqdnAtPnZhbC5pbnRlZ2VyKSk7CiAgICAgICAgICAgICBwdXRjaGFyKCdcbicpOwpAQCAtNDEwLDI0ICs0MTQsMjQgQEAKICAgICBvaWQgICAgICAgICAgICAgICBpcHN0YXRzX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA0LCAwLCAwIH07CiAgICAgc2l6ZV90ICAgICAgICAgICAgaXBzdGF0c19sZW4gICA9IE9JRF9MRU5HVEgoIGlwc3RhdHNfb2lkICk7CiAgICAgc3RydWN0IHN0YXRfdGFibGUgaXBzdGF0c190YmxbXSA9IHsKLSAgICAgICAgezMsICIlZCB0b3RhbCBkYXRhZ3JhbSVzIHJlY2VpdmVkIn0sCi0gICAgICAgIHs0LCAiJWQgZGF0YWdyYW0lcyB3aXRoIGhlYWRlciBlcnJvcnMifSwKLSAgICAgICAgezUsICIlZCBkYXRhZ3JhbSVzIHdpdGggYW4gaW52YWxpZCBkZXN0aW5hdGlvbiBhZGRyZXNzIn0sCi0gICAgICAgIHs2LCAiJWQgZGF0YWdyYW0lcyBmb3J3YXJkZWQifSwKLSAgICAgICAgezcsICIlZCBkYXRhZ3JhbSVzIHdpdGggdW5rbm93biBwcm90b2NvbCJ9LAotICAgICAgICB7OCwgIiVkIGRhdGFncmFtJXMgZGlzY2FyZGVkIn0sCi0gICAgICAgIHs5LCAiJWQgZGF0YWdyYW0lcyBkZWxpdmVyZWQifSwKLSAgICAgICAgezEwLCAiJWQgb3V0cHV0IGRhdGFncmFtIHJlcXVlc3QlcyJ9LAotICAgICAgICB7MTEsICIlZCBvdXRwdXQgZGF0YWdyYW0lcyBkaXNjYXJkZWQifSwKLSAgICAgICAgezEyLCAiJWQgZGF0YWdyYW0lcyB3aXRoIG5vIHJvdXRlIn0sCi0gICAgICAgIHsxNCwgIiVkIGZyYWdtZW50JXMgcmVjZWl2ZWQifSwKLSAgICAgICAgezE1LCAiJWQgZGF0YWdyYW0lcyByZWFzc2VtYmxlZCJ9LAotICAgICAgICB7MTYsICIlZCByZWFzc2VtYmx5IGZhaWx1cmUlcyJ9LAotICAgICAgICB7MTcsICIlZCBkYXRhZ3JhbSVzIGZyYWdtZW50ZWQifSwKLSAgICAgICAgezE4LCAiJWQgZnJhZ21lbnRhdGlvbiBmYWlsdXJlJXMifSwKLSAgICAgICAgezE5LCAiJWQgZnJhZ21lbnQlcyBjcmVhdGVkIn0sCi0gICAgICAgIHsyMywgIiVkIHJvdXRlJXMgZGlzY2FyZGVkIn0sCi0gICAgICAgIHswLCAiIn0KKyAgICAgICAgeyAzLCAiJTE0ZCB0b3RhbCBkYXRhZ3JhbSVzIHJlY2VpdmVkIn0sCisgICAgICAgIHsgNCwgIiUxNGQgZGF0YWdyYW0lcyB3aXRoIGhlYWRlciBlcnJvcnMifSwKKyAgICAgICAgeyA1LCAiJTE0ZCBkYXRhZ3JhbSVzIHdpdGggYW4gaW52YWxpZCBkZXN0aW5hdGlvbiBhZGRyZXNzIn0sCisgICAgICAgIHsgNiwgIiUxNGQgZGF0YWdyYW0lcyBmb3J3YXJkZWQifSwKKyAgICAgICAgeyA3LCAiJTE0ZCBkYXRhZ3JhbSVzIHdpdGggdW5rbm93biBwcm90b2NvbCJ9LAorICAgICAgICB7IDgsICIlMTRkIGRhdGFncmFtJXMgZGlzY2FyZGVkIn0sCisgICAgICAgIHsgOSwgIiUxNGQgZGF0YWdyYW0lcyBkZWxpdmVyZWQifSwKKyAgICAgICAgezEwLCAiJTE0ZCBvdXRwdXQgZGF0YWdyYW0gcmVxdWVzdCVzIn0sCisgICAgICAgIHsxMSwgIiUxNGQgb3V0cHV0IGRhdGFncmFtJXMgZGlzY2FyZGVkIn0sCisgICAgICAgIHsxMiwgIiUxNGQgZGF0YWdyYW0lcyB3aXRoIG5vIHJvdXRlIn0sCisgICAgICAgIHsxNCwgIiUxNGQgZnJhZ21lbnQlcyByZWNlaXZlZCJ9LAorICAgICAgICB7MTUsICIlMTRkIGRhdGFncmFtJXMgcmVhc3NlbWJsZWQifSwKKyAgICAgICAgezE2LCAiJTE0ZCByZWFzc2VtYmx5IGZhaWx1cmUlcyJ9LAorICAgICAgICB7MTcsICIlMTRkIGRhdGFncmFtJXMgZnJhZ21lbnRlZCJ9LAorICAgICAgICB7MTgsICIlMTRkIGZyYWdtZW50YXRpb24gZmFpbHVyZSVzIn0sCisgICAgICAgIHsxOSwgIiUxNGQgZnJhZ21lbnQlcyBjcmVhdGVkIn0sCisgICAgICAgIHsyMywgIiUxNGQgcm91dGUlcyBkaXNjYXJkZWQifSwKKyAgICAgICAgeyAwLCAiIn0KICAgICB9OwogCiAgICAgX2R1bXBfc3RhdHMoIG5hbWUsIGlwc3RhdHNfb2lkLCBpcHN0YXRzX2xlbiwgaXBzdGF0c190YmwgKTsKQEAgLTQ0MywzOCArNDQ3LDM4IEBACiAgICAgb2lkICAgICAgICAgICAgICAgaWNtcHN0YXRzX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA1LCAwLCAwIH07CiAgICAgc2l6ZV90ICAgICAgICAgICAgaWNtcHN0YXRzX2xlbiAgID0gT0lEX0xFTkdUSCggaWNtcHN0YXRzX29pZCApOwogICAgIHN0cnVjdCBzdGF0X3RhYmxlIGljbXBzdGF0c190YmxbXSA9IHsKLSAgICAgICAgezEsICIlZCB0b3RhbCBtZXNzYWdlJXMgcmVjZWl2ZWQifSwKLSAgICAgICAgezIsICIlZCBtZXNzYWdlJXMgZHJvcHBlZCBkdWUgdG8gZXJyb3JzIn0sCi0gICAgICAgIHsxNCwgIiVkIG91cHV0IG1lc3NhZ2UgcmVxdWVzdCVzIn0sCi0gICAgICAgIHsxNSwgIiVkIG91dHB1dCBtZXNzYWdlJXMgZGlzY2FyZGVkIn0sCi0gICAgICAgIHswLCAiIn0KKyAgICAgICAgeyAxLCAiJTE0ZCB0b3RhbCBtZXNzYWdlJXMgcmVjZWl2ZWQifSwKKyAgICAgICAgeyAyLCAiJTE0ZCBtZXNzYWdlJXMgZHJvcHBlZCBkdWUgdG8gZXJyb3JzIn0sCisgICAgICAgIHsxNCwgIiUxNGQgb3VwdXQgbWVzc2FnZSByZXF1ZXN0JXMifSwKKyAgICAgICAgezE1LCAiJTE0ZCBvdXRwdXQgbWVzc2FnZSVzIGRpc2NhcmRlZCJ9LAorICAgICAgICB7IDAsICIifQogICAgIH07CiAgICAgc3RydWN0IHN0YXRfdGFibGUgaWNtcF9pbmhpc3RvZ3JhbVtdID0gewotICAgICAgICB7MywgIkRlc3RpbmF0aW9uIHVucmVhY2hhYmxlOiAlZCJ9LAotICAgICAgICB7NCwgIlRpbWUgRXhjZWVkZWQ6ICVkIn0sCi0gICAgICAgIHs1LCAiUGFyYW1ldGVyIFByb2JsZW06ICVkIn0sCi0gICAgICAgIHs2LCAiU291cmNlIFF1ZW5jaDogJWQifSwKLSAgICAgICAgezcsICJSZWRpcmVjdDogJWQifSwKLSAgICAgICAgezgsICJFY2hvIFJlcXVlc3Q6ICVkIn0sCi0gICAgICAgIHs5LCAiRWNobyBSZXBseTogJWQifSwKLSAgICAgICAgezEwLCAiVGltZXN0YW1wIFJlcXVlc3Q6ICVkIn0sCi0gICAgICAgIHsxMSwgIlRpbWVzdGFtcCBSZXBseTogJWQifSwKLSAgICAgICAgezEyLCAiQWRkcmVzcyBNYXNrIFJlcXVlc3Q6ICVkIn0sCi0gICAgICAgIHsxMywgIkFkZHJlc3MgTWFzayBSZXBseTogJWQifSwKLSAgICAgICAgezAsICIifQorICAgICAgICB7IDMsICIgICAgICAgIERlc3RpbmF0aW9uIHVucmVhY2hhYmxlOiAlZCJ9LAorICAgICAgICB7IDQsICIgICAgICAgIFRpbWUgRXhjZWVkZWQ6ICVkIn0sCisgICAgICAgIHsgNSwgIiAgICAgICAgUGFyYW1ldGVyIFByb2JsZW06ICVkIn0sCisgICAgICAgIHsgNiwgIiAgICAgICAgU291cmNlIFF1ZW5jaDogJWQifSwKKyAgICAgICAgeyA3LCAiICAgICAgICBSZWRpcmVjdDogJWQifSwKKyAgICAgICAgeyA4LCAiICAgICAgICBFY2hvIFJlcXVlc3Q6ICVkIn0sCisgICAgICAgIHsgOSwgIiAgICAgICAgRWNobyBSZXBseTogJWQifSwKKyAgICAgICAgezEwLCAiICAgICAgICBUaW1lc3RhbXAgUmVxdWVzdDogJWQifSwKKyAgICAgICAgezExLCAiICAgICAgICBUaW1lc3RhbXAgUmVwbHk6ICVkIn0sCisgICAgICAgIHsxMiwgIiAgICAgICAgQWRkcmVzcyBNYXNrIFJlcXVlc3Q6ICVkIn0sCisgICAgICAgIHsxMywgIiAgICAgICAgQWRkcmVzcyBNYXNrIFJlcGx5OiAlZCJ9LAorICAgICAgICB7IDAsICIifQogICAgIH07CiAgICAgc3RydWN0IHN0YXRfdGFibGUgaWNtcF9vdXRoaXN0b2dyYW1bXSA9IHsKLSAgICAgICAgezE2LCAiRGVzdGluYXRpb24gdW5yZWFjaGFibGU6ICVkIn0sCi0gICAgICAgIHsxNywgIlRpbWUgRXhjZWVkZWQ6ICVkIn0sCi0gICAgICAgIHsxOCwgIlBhcmFtZXRlciBQcm9ibGVtOiAlZCJ9LAotICAgICAgICB7MTksICJTb3VyY2UgUXVlbmNoOiAlZCJ9LAotICAgICAgICB7MjAsICJSZWRpcmVjdDogJWQifSwKLSAgICAgICAgezIxLCAiRWNobyBSZXF1ZXN0OiAlZCJ9LAotICAgICAgICB7MjIsICJFY2hvIFJlcGx5OiAlZCJ9LAotICAgICAgICB7MjMsICJUaW1lc3RhbXAgUmVxdWVzdDogJWQifSwKLSAgICAgICAgezI0LCAiVGltZXN0YW1wIFJlcGx5OiAlZCJ9LAotICAgICAgICB7MjUsICJBZGRyZXNzIE1hc2sgUmVxdWVzdDogJWQifSwKLSAgICAgICAgezI2LCAiQWRkcmVzcyBNYXNrIFJlcGx5OiAlZCJ9LAorICAgICAgICB7MTYsICIgICAgICAgIERlc3RpbmF0aW9uIHVucmVhY2hhYmxlOiAlZCJ9LAorICAgICAgICB7MTcsICIgICAgICAgIFRpbWUgRXhjZWVkZWQ6ICVkIn0sCisgICAgICAgIHsxOCwgIiAgICAgICAgUGFyYW1ldGVyIFByb2JsZW06ICVkIn0sCisgICAgICAgIHsxOSwgIiAgICAgICAgU291cmNlIFF1ZW5jaDogJWQifSwKKyAgICAgICAgezIwLCAiICAgICAgICBSZWRpcmVjdDogJWQifSwKKyAgICAgICAgezIxLCAiICAgICAgICBFY2hvIFJlcXVlc3Q6ICVkIn0sCisgICAgICAgIHsyMiwgIiAgICAgICAgRWNobyBSZXBseTogJWQifSwKKyAgICAgICAgezIzLCAiICAgICAgICBUaW1lc3RhbXAgUmVxdWVzdDogJWQifSwKKyAgICAgICAgezI0LCAiICAgICAgICBUaW1lc3RhbXAgUmVwbHk6ICVkIn0sCisgICAgICAgIHsyNSwgIiAgICAgICAgQWRkcmVzcyBNYXNrIFJlcXVlc3Q6ICVkIn0sCisgICAgICAgIHsyNiwgIiAgICAgICAgQWRkcmVzcyBNYXNrIFJlcGx5OiAlZCJ9LAogICAgICAgICB7MCwgIiJ9CiAgICAgfTsKIApAQCAtNDk1LDE3ICs0OTksMTcgQEAKICAgICBvaWQgICAgICAgICAgICAgICB0Y3BzdGF0c19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgNiwgMCwgMCB9OwogICAgIHNpemVfdCAgICAgICAgICAgIHRjcHN0YXRzX2xlbiAgID0gT0lEX0xFTkdUSCggdGNwc3RhdHNfb2lkICk7CiAgICAgc3RydWN0IHN0YXRfdGFibGUgdGNwc3RhdHNfdGJsW10gPSB7Ci0gICAgICAgIHs1LCAiJWQgYWN0aXZlIG9wZW4lcyJ9LAotICAgICAgICB7NiwgIiVkIHBhc3NpdmUgb3BlbiVzIn0sCi0gICAgICAgIHs3LCAiJWQgZmFpbGVkIGF0dGVtcHQlcyJ9LAotICAgICAgICB7OCwgIiVkIHJlc2V0JXMgb2YgZXN0YWJsaXNoZWQgY29ubmVjdGlvbnMifSwKLSAgICAgICAgezksICIlZCBjdXJyZW50IGVzdGFibGlzaGVkIGNvbm5lY3Rpb24lcyJ9LAotICAgICAgICB7MTAsICIlZCBzZWdtZW50JXMgcmVjZWl2ZWQifSwKLSAgICAgICAgezExLCAiJWQgc2VnbWVudCVzIHNlbnQifSwKLSAgICAgICAgezEyLCAiJWQgc2VnbWVudCVzIHJldHJhbnNtaXR0ZWQifSwKLSAgICAgICAgezE0LCAiJWQgaW52YWxpZCBzZWdtZW50JXMgcmVjZWl2ZWQifSwKLSAgICAgICAgezE1LCAiJWQgcmVzZXQlcyBzZW50In0sCi0gICAgICAgIHswLCAiIn0KKyAgICAgICAgeyA1LCAiJTE0ZCBhY3RpdmUgb3BlbiVzIn0sCisgICAgICAgIHsgNiwgIiUxNGQgcGFzc2l2ZSBvcGVuJXMifSwKKyAgICAgICAgeyA3LCAiJTE0ZCBmYWlsZWQgYXR0ZW1wdCVzIn0sCisgICAgICAgIHsgOCwgIiUxNGQgcmVzZXQlcyBvZiBlc3RhYmxpc2hlZCBjb25uZWN0aW9ucyJ9LAorICAgICAgICB7IDksICIlMTRkIGN1cnJlbnQgZXN0YWJsaXNoZWQgY29ubmVjdGlvbiVzIn0sCisgICAgICAgIHsxMCwgIiUxNGQgc2VnbWVudCVzIHJlY2VpdmVkIn0sCisgICAgICAgIHsxMSwgIiUxNGQgc2VnbWVudCVzIHNlbnQifSwKKyAgICAgICAgezEyLCAiJTE0ZCBzZWdtZW50JXMgcmV0cmFuc21pdHRlZCJ9LAorICAgICAgICB7MTQsICIlMTRkIGludmFsaWQgc2VnbWVudCVzIHJlY2VpdmVkIn0sCisgICAgICAgIHsxNSwgIiUxNGQgcmVzZXQlcyBzZW50In0sCisgICAgICAgIHsgMCwgIiJ9CiAgICAgfTsKICAgICBfZHVtcF9zdGF0cyggbmFtZSwgdGNwc3RhdHNfb2lkLCB0Y3BzdGF0c19sZW4sIHRjcHN0YXRzX3RibCApOwogfQpAQCAtNTIwLDEwICs1MjQsMTAgQEAKICAgICBvaWQgICAgICAgICAgICAgICB1ZHBzdGF0c19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgNywgMCwgMCB9OwogICAgIHNpemVfdCAgICAgICAgICAgIHVkcHN0YXRzX2xlbiAgID0gT0lEX0xFTkdUSCggdWRwc3RhdHNfb2lkICk7CiAgICAgc3RydWN0IHN0YXRfdGFibGUgdWRwc3RhdHNfdGJsW10gPSB7Ci0gICAgICAgIHsxLCAiJWQgdG90YWwgZGF0YWdyYW0lcyByZWNlaXZlZCJ9LAotICAgICAgICB7MiwgIiVkIGRhdGFncmFtJXMgdG8gaW52YWxpZCBwb3J0In0sCi0gICAgICAgIHszLCAiJWQgZGF0YWdyYW0lcyBkcm9wcGVkIGR1ZSB0byBlcnJvcnMifSwKLSAgICAgICAgezQsICIlZCBvdXRwdXQgZGF0YWdyYW0gcmVxdWVzdCVzIn0sCisgICAgICAgIHsxLCAiJTE0ZCB0b3RhbCBkYXRhZ3JhbSVzIHJlY2VpdmVkIn0sCisgICAgICAgIHsyLCAiJTE0ZCBkYXRhZ3JhbSVzIHRvIGludmFsaWQgcG9ydCJ9LAorICAgICAgICB7MywgIiUxNGQgZGF0YWdyYW0lcyBkcm9wcGVkIGR1ZSB0byBlcnJvcnMifSwKKyAgICAgICAgezQsICIlMTRkIG91dHB1dCBkYXRhZ3JhbSByZXF1ZXN0JXMifSwKICAgICAgICAgezAsICIifQogICAgIH07CiAgICAgX2R1bXBfc3RhdHMoIG5hbWUsIHVkcHN0YXRzX29pZCwgdWRwc3RhdHNfbGVuLCB1ZHBzdGF0c190YmwgKTsKQEAgLTU2MCwyMiArNTY0LDI1IEBACiB7CiAJc3RydWN0IHNlcnZlbnQgKnNwID0gTlVMTDsKIAljaGFyIGxpbmVbODBdLCAqY3A7Ci0JaW50IHdpZHRoOworCWludCB3aWR0aCA9IDI3OwogCi0Jc25wcmludGYobGluZSwgc2l6ZW9mIGxpbmUsICIlLipzLiIsIChBZmxhZyAmJiAhbmZsYWcpID8gMTIgOiAxNiwKLQkgICAgaW5ldG5hbWUoaW4pKTsKKwlpZiAodmZsYWcpCisJICAgIHNucHJpbnRmKGxpbmUsIHNpemVvZiBsaW5lLCAiJXMuIiwgaW5ldG5hbWUoaW4pKTsKKwllbHNlCisJICAgIHNucHJpbnRmKGxpbmUsIHNpemVvZiBsaW5lLCAiJS4qcy4iLCB3aWR0aC05LCBpbmV0bmFtZShpbikpOwogCWNwID0gc3RyY2hyKGxpbmUsICdcMCcpOwogCWlmICghbmZsYWcgJiYgcG9ydCkKLQkJc3AgPSBnZXRzZXJ2Ynlwb3J0KChpbnQpcG9ydCwgcHJvdG8pOworCQlzcCA9IGdldHNlcnZieXBvcnQoaHRvbnMoKHVpbnQxNl90KSBwb3J0KSwgcHJvdG8pOwogCWlmIChzcCB8fCBwb3J0ID09IDApCi0JCXNucHJpbnRmKGNwLCBsaW5lICsgc2l6ZW9mIGxpbmUgLSBjcCwgIiUuOHMiLAorCQlzbnByaW50ZihjcCwgbGluZSArIHNpemVvZiBsaW5lIC0gY3AsIHZmbGFnID8gIiVzIiA6ICIlLjhzIiwKIAkJICAgIHNwID8gc3AtPnNfbmFtZSA6ICIqIik7CiAgICAgIC8qCiAgICAgICAqIFRyYW5zbGF0aW9uIG9mIFJQQyBzZXJ2aWNlIG5hbWVzIC0gT21pdHRlZAogICAgICAgKi8KIAllbHNlCi0JCXNucHJpbnRmKGNwLCBsaW5lICsgc2l6ZW9mIGxpbmUgLSBjcCwgIiVkIiwgbnRvaHMocG9ydCkpOwotCXdpZHRoID0gQWZsYWcgPyAxOCA6IDIyOworCQlzbnByaW50ZihjcCwgbGluZSArIHNpemVvZiBsaW5lIC0gY3AsICIlZCIsIHBvcnQpOworCWlmICh2ZmxhZyAmJiB3aWR0aCA8IHN0cmxlbihsaW5lKSkKKwkgICAgd2lkdGggPSBzdHJsZW4obGluZSk7CiAJcHJpbnRmKCIgJS0qLipzIiwgd2lkdGgsIHdpZHRoLCBsaW5lKTsKIH0KIApAQCAtNjE2LDcgKzYyMyw4IEBACiAJCQkJY3AgPSBucC0+bl9uYW1lOwogCQl9CiAJCWlmIChjcCA9PSBOVUxMKSB7Ci0JCQlocCA9IGdldGhvc3RieWFkZHIoKGNoYXIgKilpbnAsIHNpemVvZiAoKmlucCksIEFGX0lORVQpOworCQkJaHAgPSBuZXRzbm1wX2dldGhvc3RieWFkZHIoKGNoYXIgKilpbnAsIHNpemVvZiAoKmlucCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBRl9JTkVUKTsKIAkJCWlmIChocCkgewogCQkJCWlmICgoY3AgPSBzdHJjaHIoaHAtPmhfbmFtZSwgJy4nKSkgJiYKIAkJCQkgICAgIXN0cmNtcChjcCArIDEsIGRvbWFpbikpCmRpZmYgLS1naXQgYS9hcHBzL3NubXBuZXRzdGF0L2luZXQ2LmMgYi9hcHBzL3NubXBuZXRzdGF0L2luZXQ2LmMKaW5kZXggNDI3MThmMi4uMjE3N2Y1NiAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wbmV0c3RhdC9pbmV0Ni5jCisrKyBiL2FwcHMvc25tcG5ldHN0YXQvaW5ldDYuYwpAQCAtMTI0LDcgKzEyNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX05VTEwsIE5VTEwsICAwKTsKICAgICBpZiAobmV0c25tcF9xdWVyeV93YWxrKCB2YXIsIHNzICkgIT0gU05NUF9FUlJfTk9FUlJPUikKICAgICAgICAgcmV0dXJuOwotICAgIGlmICh2YXItPnR5cGUgPT0gQVNOX05VTEwpICAgIC8qIE5vIGVudHJpZXMgKi8KKyAgICBpZiAoKHZhci0+dHlwZSAmIDB4RjApID09IDB4ODApCQkvKiBleGNlcHRpb24gKi8KICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yICh2cCA9IHZhcjsgdnAgOyB2cD12cC0+bmV4dF92YXJpYWJsZSkgewpAQCAtMTM3LDcgKzEzNyw3IEBACiAgICAgICAgICAgICBpZiAoYWZsYWcpCiAgICAgICAgICAgICAgICAgcHJpbnRmKCIgKGluY2x1ZGluZyBzZXJ2ZXJzKSIpOwogICAgICAgICAgICAgcHV0Y2hhcignXG4nKTsKLSAgICAgICAgICAgIHByaW50ZigiJS01LjVzICUtMjguMjhzICUtMjguMjhzICU0cyAlc1xuIiwKKyAgICAgICAgICAgIHByaW50ZigiJS01LjVzICUtMjcuMjdzICUtMjcuMjdzICU0cyAlc1xuIiwKICAgICAgICAgICAgICAgICAgICAiUHJvdG8iLCAiTG9jYWwgQWRkcmVzcyIsICJSZW1vdGUgQWRkcmVzcyIsICJJL0YiLCAiKHN0YXRlKSIpOwogICAgICAgICAgICAgZmlyc3QgPSAwOwogICAgICAgICB9CkBAIC0xODQsMTEgKzE4NCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTl9OVUxMLCBOVUxMLCAgMCk7CiAgICAgaWYgKG5ldHNubXBfcXVlcnlfd2FsayggdmFyLCBzcyApICE9IFNOTVBfRVJSX05PRVJST1IpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAodmFyLT50eXBlID09IEFTTl9OVUxMKSAgICAvKiBObyBlbnRyaWVzICovCisgICAgaWYgKCh2YXItPnR5cGUgJiAweEYwKSA9PSAweDgwKQkJLyogZXhjZXB0aW9uICovCiAgICAgICAgIHJldHVybjsKIAogICAgIHByaW50ZigiQWN0aXZlIEludGVybmV0IENvbm5lY3Rpb25zXG4iKTsKLSAgICBwcmludGYoIiUtNS41cyAlLTI4LjI4cyAlNHNcbiIsICJQcm90byIsICJMb2NhbCBBZGRyZXNzIiwgIkkvRiIpOworICAgIHByaW50ZigiJS01LjVzICUtMjcuMjdzICU0c1xuIiwgIlByb3RvIiwgIkxvY2FsIEFkZHJlc3MiLCAiSS9GIik7CiAgICAgZm9yICh2cCA9IHZhcjsgdnAgOyB2cD12cC0+bmV4dF92YXJpYWJsZSkgewogICAgICAgICBwcmludGYoIiUtNS41cyIsIG5hbWUpOwogICAgICAgICAvKgpAQCAtMjQ1LDYgKzI0NSw4IEBACiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgaWYgKG5ldHNubXBfcXVlcnlfZ2V0bmV4dCggdmFyLCBzcyApICE9IFNOTVBfRVJSX05PRVJST1IpCiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKCh2YXItPnR5cGUgJiAweEYwKSA9PSAweDgwKQkJLyogZXhjZXB0aW9uICovCisgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKCBzbm1wX29pZF9jb21wYXJlKCBvaWRfYnVmLCAgIGJ1Zl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyLT5uYW1lLCBidWZfbGVuKSAhPSAwICkKICAgICAgICAgICAgIGJyZWFrOyAgICAvKiBFbmQgb2YgVGFibGUgKi8KQEAgLTI3MSw3ICsyNzMsNiBAQAogICAgICAgICAgKiAgIHRoZW4gb25seSBkaXNwbGF5IG5vbi16ZXJvIHN0YXRzLgogICAgICAgICAgKi8KICAgICAgICAgaWYgKCBzdGF0c1tzcC0+ZW50cnldID4gMCB8fCBzZmxhZyA9PSAxICkgewotICAgICAgICAgICAgcHV0Y2hhcignXHQnKTsKICAgICAgICAgICAgIHByaW50ZihzcC0+ZGVzY3JpcHRpb24sIHN0YXRzW3NwLT5lbnRyeV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdXJhbChzdGF0c1tzcC0+ZW50cnldKSk7CiAgICAgICAgICAgICBwdXRjaGFyKCdcbicpOwpAQCAtMjkxLDI3ICsyOTIsMjcgQEAKICAgICBvaWQgICAgICAgICAgICAgICBpcDZzdGF0c19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgNTUsIDEsIDYsIDEsIDAgfTsKICAgICBzaXplX3QgICAgICAgICAgICBpcDZzdGF0c19sZW4gICA9IE9JRF9MRU5HVEgoIGlwNnN0YXRzX29pZCApOwogICAgIHN0cnVjdCBzdGF0X3RhYmxlIGlwNnN0YXRzX3RibFtdID0gewotICAgICAgICB7MSwgIiVkIHRvdGFsIGRhdGFncmFtJXMgcmVjZWl2ZWQifSwKLSAgICAgICAgezIsICIlZCBkYXRhZ3JhbSVzIHdpdGggaGVhZGVyIGVycm9ycyJ9LAotICAgICAgICB7MywgIiVkIG92ZXJzaXplZCBkYXRhZ3JhbSVzIn0sCi0gICAgICAgIHs0LCAiJWQgZGF0YWdyYW0lcyB3aXRoIG5vIHJvdXRlIn0sCi0gICAgICAgIHs1LCAiJWQgZGF0YWdyYW0lcyB3aXRoIGFuIGludmFsaWQgZGVzdGluYXRpb24gYWRkcmVzcyJ9LAotICAgICAgICB7NiwgIiVkIGRhdGFncmFtJXMgd2l0aCB1bmtub3duIHByb3RvY29sIn0sCi0gICAgICAgIHs3LCAiJWQgc2hvcnQgZGF0YWdyYW0lcyBkaXNjYXJkZWQifSwKLSAgICAgICAgezgsICIlZCBkYXRhZ3JhbSVzIGRpc2NhcmRlZCJ9LAotICAgICAgICB7OSwgIiVkIGRhdGFncmFtJXMgZGVsaXZlcmVkIn0sCi0gICAgICAgIHsxMCwgIiVkIGRhdGFncmFtJXMgZm9yd2FyZGVkIn0sCi0gICAgICAgIHsxMSwgIiVkIG91dHB1dCBkYXRhZ3JhbSByZXF1ZXN0JXMifSwKLSAgICAgICAgezEyLCAiJWQgb3V0cHV0IGRhdGFncmFtJXMgZGlzY2FyZGVkIn0sCi0gICAgICAgIHsxMywgIiVkIGRhdGFncmFtJXMgZnJhZ21lbnRlZCJ9LAotICAgICAgICB7MTQsICIlZCBmcmFnbWVudGF0aW9uIGZhaWx1cmUlcyJ9LAotICAgICAgICB7MTUsICIlZCBmcmFnbWVudCVzIGNyZWF0ZWQifSwKLSAgICAgICAgezE2LCAiJWQgZnJhZ21lbnQlcyByZWNlaXZlZCJ9LAotICAgICAgICB7MTcsICIlZCBkYXRhZ3JhbSVzIHJlYXNzZW1ibGVkIn0sCi0gICAgICAgIHsxOCwgIiVkIHJlYXNzZW1ibHkgZmFpbHVyZSVzIn0sCi0gICAgICAgIHsxOSwgIiVkIG11bHRpY2FzdCBkYXRhZ3JhbSVzIHJlY2VpdmVkIn0sCi0gICAgICAgIHsyMCwgIiVkIG11bHRpY2FzdCBkYXRhZ3JhbSVzIHRyYW5zbWl0dGVkIn0sCi0gICAgICAgIHswLCAiIn0KKyAgICAgICAgeyAxLCAiJTE0ZCB0b3RhbCBkYXRhZ3JhbSVzIHJlY2VpdmVkIn0sCisgICAgICAgIHsgMiwgIiUxNGQgZGF0YWdyYW0lcyB3aXRoIGhlYWRlciBlcnJvcnMifSwKKyAgICAgICAgeyAzLCAiJTE0ZCBvdmVyc2l6ZWQgZGF0YWdyYW0lcyJ9LAorICAgICAgICB7IDQsICIlMTRkIGRhdGFncmFtJXMgd2l0aCBubyByb3V0ZSJ9LAorICAgICAgICB7IDUsICIlMTRkIGRhdGFncmFtJXMgd2l0aCBhbiBpbnZhbGlkIGRlc3RpbmF0aW9uIGFkZHJlc3MifSwKKyAgICAgICAgeyA2LCAiJTE0ZCBkYXRhZ3JhbSVzIHdpdGggdW5rbm93biBwcm90b2NvbCJ9LAorICAgICAgICB7IDcsICIlMTRkIHNob3J0IGRhdGFncmFtJXMgZGlzY2FyZGVkIn0sCisgICAgICAgIHsgOCwgIiUxNGQgZGF0YWdyYW0lcyBkaXNjYXJkZWQifSwKKyAgICAgICAgeyA5LCAiJTE0ZCBkYXRhZ3JhbSVzIGRlbGl2ZXJlZCJ9LAorICAgICAgICB7MTAsICIlMTRkIGRhdGFncmFtJXMgZm9yd2FyZGVkIn0sCisgICAgICAgIHsxMSwgIiUxNGQgb3V0cHV0IGRhdGFncmFtIHJlcXVlc3QlcyJ9LAorICAgICAgICB7MTIsICIlMTRkIG91dHB1dCBkYXRhZ3JhbSVzIGRpc2NhcmRlZCJ9LAorICAgICAgICB7MTMsICIlMTRkIGRhdGFncmFtJXMgZnJhZ21lbnRlZCJ9LAorICAgICAgICB7MTQsICIlMTRkIGZyYWdtZW50YXRpb24gZmFpbHVyZSVzIn0sCisgICAgICAgIHsxNSwgIiUxNGQgZnJhZ21lbnQlcyBjcmVhdGVkIn0sCisgICAgICAgIHsxNiwgIiUxNGQgZnJhZ21lbnQlcyByZWNlaXZlZCJ9LAorICAgICAgICB7MTcsICIlMTRkIGRhdGFncmFtJXMgcmVhc3NlbWJsZWQifSwKKyAgICAgICAgezE4LCAiJTE0ZCByZWFzc2VtYmx5IGZhaWx1cmUlcyJ9LAorICAgICAgICB7MTksICIlMTRkIG11bHRpY2FzdCBkYXRhZ3JhbSVzIHJlY2VpdmVkIn0sCisgICAgICAgIHsyMCwgIiUxNGQgbXVsdGljYXN0IGRhdGFncmFtJXMgdHJhbnNtaXR0ZWQifSwKKyAgICAgICAgeyAwLCAiIn0KICAgICB9OwogCiAgICAgX2R1bXBfdjZzdGF0cyggbmFtZSwgaXA2c3RhdHNfb2lkLCBpcDZzdGF0c19sZW4sIGlwNnN0YXRzX3RibCApOwpAQCAtMzMxLDQ2ICszMzIsNDYgQEAKICAgICBvaWQgICAgICAgICAgICAgICBpY21wNnN0YXRzX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA1NiwgMSwgMSwgMSwgMCB9OwogICAgIHNpemVfdCAgICAgICAgICAgIGljbXA2c3RhdHNfbGVuICAgPSBPSURfTEVOR1RIKCBpY21wNnN0YXRzX29pZCApOwogICAgIHN0cnVjdCBzdGF0X3RhYmxlIGljbXA2c3RhdHNfdGJsW10gPSB7Ci0gICAgICAgIHsxLCAiJWQgdG90YWwgbWVzc2FnZSVzIHJlY2VpdmVkIn0sCi0gICAgICAgIHsyLCAiJWQgbWVzc2FnZSVzIGRyb3BwZWQgZHVlIHRvIGVycm9ycyJ9LAotICAgICAgICB7MTgsICIlZCBvdXB1dCBtZXNzYWdlIHJlcXVlc3QlcyJ9LAotICAgICAgICB7MTksICIlZCBvdXRwdXQgbWVzc2FnZSVzIGRpc2NhcmRlZCJ9LAotICAgICAgICB7MCwgIiJ9CisgICAgICAgIHsgMSwgIiUxNGQgdG90YWwgbWVzc2FnZSVzIHJlY2VpdmVkIn0sCisgICAgICAgIHsgMiwgIiUxNGQgbWVzc2FnZSVzIGRyb3BwZWQgZHVlIHRvIGVycm9ycyJ9LAorICAgICAgICB7MTgsICIlMTRkIG91cHV0IG1lc3NhZ2UgcmVxdWVzdCVzIn0sCisgICAgICAgIHsxOSwgIiUxNGQgb3V0cHV0IG1lc3NhZ2UlcyBkaXNjYXJkZWQifSwKKyAgICAgICAgeyAwLCAiIn0KICAgICB9OwogICAgIHN0cnVjdCBzdGF0X3RhYmxlIGljbXA2X2luaGlzdG9ncmFtW10gPSB7Ci0gICAgICAgIHszLCAiRGVzdGluYXRpb24gdW5yZWFjaGFibGU6ICVkIn0sCi0gICAgICAgIHs0LCAiQWRtaW4gUHJvaGliaXQ6ICVkIn0sCi0gICAgICAgIHs1LCAiVGltZSBFeGNlZWRlZDogJWQifSwKLSAgICAgICAgezYsICJQYXJhbWV0ZXIgUHJvYmxlbTogJWQifSwKLSAgICAgICAgezcsICJUb28gQmlnOiAlZCJ9LAotICAgICAgICB7OCwgIkVjaG8gUmVxdWVzdDogJWQifSwKLSAgICAgICAgezksICJFY2hvIFJlcGx5OiAlZCJ9LAotICAgICAgICB7MTAsICJSb3V0ZXIgU29saWNpdDogJWQifSwKLSAgICAgICAgezExLCAiUm91dGVyIEFkdmVydDogJWQifSwKLSAgICAgICAgezEyLCAiTmVpZ2hib3IgU29saWNpdDogJWQifSwKLSAgICAgICAgezEzLCAiTmVpZ2hib3IgQWR2ZXJ0OiAlZCJ9LAotICAgICAgICB7MTQsICJSZWRpcmVjdDogJWQifSwKLSAgICAgICAgezE1LCAiR3JvdXAgTWVtYmVyIFJlcXVlc3Q6ICVkIn0sCi0gICAgICAgIHsxNiwgIkdyb3VwIE1lbWJlciBSZXBseTolZCJ9LAotICAgICAgICB7MTcsICJHcm91cCBNZW1iZXIgUmVkdWNlOiVkIn0sCi0gICAgICAgIHswLCAiIn0KKyAgICAgICAgeyAzLCAiICAgICAgICBEZXN0aW5hdGlvbiB1bnJlYWNoYWJsZTogJWQifSwKKyAgICAgICAgeyA0LCAiICAgICAgICBBZG1pbiBQcm9oaWJpdDogJWQifSwKKyAgICAgICAgeyA1LCAiICAgICAgICBUaW1lIEV4Y2VlZGVkOiAlZCJ9LAorICAgICAgICB7IDYsICIgICAgICAgIFBhcmFtZXRlciBQcm9ibGVtOiAlZCJ9LAorICAgICAgICB7IDcsICIgICAgICAgIFRvbyBCaWc6ICVkIn0sCisgICAgICAgIHsgOCwgIiAgICAgICAgRWNobyBSZXF1ZXN0OiAlZCJ9LAorICAgICAgICB7IDksICIgICAgICAgIEVjaG8gUmVwbHk6ICVkIn0sCisgICAgICAgIHsxMCwgIiAgICAgICAgUm91dGVyIFNvbGljaXQ6ICVkIn0sCisgICAgICAgIHsxMSwgIiAgICAgICAgUm91dGVyIEFkdmVydDogJWQifSwKKyAgICAgICAgezEyLCAiICAgICAgICBOZWlnaGJvciBTb2xpY2l0OiAlZCJ9LAorICAgICAgICB7MTMsICIgICAgICAgIE5laWdoYm9yIEFkdmVydDogJWQifSwKKyAgICAgICAgezE0LCAiICAgICAgICBSZWRpcmVjdDogJWQifSwKKyAgICAgICAgezE1LCAiICAgICAgICBHcm91cCBNZW1iZXIgUmVxdWVzdDogJWQifSwKKyAgICAgICAgezE2LCAiICAgICAgICBHcm91cCBNZW1iZXIgUmVwbHk6ICVkIn0sCisgICAgICAgIHsxNywgIiAgICAgICAgR3JvdXAgTWVtYmVyIFJlZHVjZTogJWQifSwKKyAgICAgICAgeyAwLCAiIn0KICAgICB9OwogICAgIHN0cnVjdCBzdGF0X3RhYmxlIGljbXA2X291dGhpc3RvZ3JhbVtdID0gewotICAgICAgICB7MjAsICJEZXN0aW5hdGlvbiB1bnJlYWNoYWJsZTogJWQifSwKLSAgICAgICAgezIxLCAiQWRtaW4gUHJvaGliaXQ6ICVkIn0sCi0gICAgICAgIHsyMiwgIlRpbWUgRXhjZWVkZWQ6ICVkIn0sCi0gICAgICAgIHsyMywgIlBhcmFtZXRlciBQcm9ibGVtOiAlZCJ9LAotICAgICAgICB7MjQsICJUb28gQmlnOiAlZCJ9LAotICAgICAgICB7MjUsICJFY2hvIFJlcXVlc3Q6ICVkIn0sCi0gICAgICAgIHsyNiwgIkVjaG8gUmVwbHk6ICVkIn0sCi0gICAgICAgIHsyNywgIlJvdXRlciBTb2xpY2l0OiAlZCJ9LAotICAgICAgICB7MjgsICJSb3V0ZXIgQWR2ZXJ0OiAlZCJ9LAotICAgICAgICB7MjksICJOZWlnaGJvciBTb2xpY2l0OiAlZCJ9LAotICAgICAgICB7MzAsICJOZWlnaGJvciBBZHZlcnQ6ICVkIn0sCi0gICAgICAgIHszMSwgIlJlZGlyZWN0OiAlZCJ9LAotICAgICAgICB7MzIsICJHcm91cCBNZW1iZXIgUmVxdWVzdDogJWQifSwKLSAgICAgICAgezMzLCAiR3JvdXAgTWVtYmVyIFJlcGx5OiVkIn0sCi0gICAgICAgIHszNCwgIkdyb3VwIE1lbWJlciBSZWR1Y2U6JWQifSwKKyAgICAgICAgezIwLCAiICAgICAgICBEZXN0aW5hdGlvbiB1bnJlYWNoYWJsZTogJWQifSwKKyAgICAgICAgezIxLCAiICAgICAgICBBZG1pbiBQcm9oaWJpdDogJWQifSwKKyAgICAgICAgezIyLCAiICAgICAgICBUaW1lIEV4Y2VlZGVkOiAlZCJ9LAorICAgICAgICB7MjMsICIgICAgICAgIFBhcmFtZXRlciBQcm9ibGVtOiAlZCJ9LAorICAgICAgICB7MjQsICIgICAgICAgIFRvbyBCaWc6ICVkIn0sCisgICAgICAgIHsyNSwgIiAgICAgICAgRWNobyBSZXF1ZXN0OiAlZCJ9LAorICAgICAgICB7MjYsICIgICAgICAgIEVjaG8gUmVwbHk6ICVkIn0sCisgICAgICAgIHsyNywgIiAgICAgICAgUm91dGVyIFNvbGljaXQ6ICVkIn0sCisgICAgICAgIHsyOCwgIiAgICAgICAgUm91dGVyIEFkdmVydDogJWQifSwKKyAgICAgICAgezI5LCAiICAgICAgICBOZWlnaGJvciBTb2xpY2l0OiAlZCJ9LAorICAgICAgICB7MzAsICIgICAgICAgIE5laWdoYm9yIEFkdmVydDogJWQifSwKKyAgICAgICAgezMxLCAiICAgICAgICBSZWRpcmVjdDogJWQifSwKKyAgICAgICAgezMyLCAiICAgICAgICBHcm91cCBNZW1iZXIgUmVxdWVzdDogJWQifSwKKyAgICAgICAgezMzLCAiICAgICAgICBHcm91cCBNZW1iZXIgUmVwbHk6ICVkIn0sCisgICAgICAgIHszNCwgIiAgICAgICAgR3JvdXAgTWVtYmVyIFJlZHVjZTogJWQifSwKICAgICAgICAgezAsICIifQogICAgIH07CiAKQEAgLTQxNCwxMCArNDE1LDkgQEAKIAogCXN0cnVjdCBzZXJ2ZW50ICpzcCA9IE5VTEw7CiAJY2hhciBsaW5lWzgwXSwgKmNwOwotCXVuc2lnbmVkIHdpZHRoOworCWludCB3aWR0aCA9IDI3LTk7CiAJaW50IGxlbiA9IHNpemVvZiBsaW5lOwogCi0Jd2lkdGggPSBBZmxhZyA/IDEyIDogMTY7CiAJaWYgKHZmbGFnICYmIHdpZHRoIDwgc3RybGVuKGluZXQ2bmFtZShpbjYpKSkKIAkJd2lkdGggPSBzdHJsZW4oaW5ldDZuYW1lKGluNikpOwogCXNucHJpbnRmKGxpbmUsIGxlbiwgIiUuKnMuIiwgd2lkdGgsIGluZXQ2bmFtZShpbjYpKTsKQEAgLTQyNywxMiArNDI3LDEyIEBACiAKIAljcCA9IHN0cmNocihsaW5lLCAnXDAnKTsKIAlpZiAoIW5mbGFnICYmIHBvcnQgJiYgbG9jYWwpCi0JCUdFVFNFUlZCWVBPUlQ2KHBvcnQsIHByb3RvLCBzcCk7CisJCUdFVFNFUlZCWVBPUlQ2KGh0b25zKHBvcnQpLCBwcm90bywgc3ApOwogCWlmIChzcCB8fCBwb3J0ID09IDApCi0JCXNucHJpbnRmKGNwLCBsZW4sICIlLjhzIiwgc3AgPyBzcC0+c19uYW1lIDogIioiKTsKKwkJc25wcmludGYoY3AsIGxlbiwgdmZsYWcgPyAiJXMiIDogIiUuOHMiLCBzcCA/IHNwLT5zX25hbWUgOiAiKiIpOwogCWVsc2UKLQkJc25wcmludGYoY3AsIGxlbiwgIiVkIiwgbnRvaHMoKHVfc2hvcnQpcG9ydCkpOwotCXdpZHRoID0gQWZsYWcgPyAxOCA6IDIyOworCQlzbnByaW50ZihjcCwgbGVuLCAiJWQiLCBwb3J0KTsKKwl3aWR0aCA9IDI3OwogCWlmICh2ZmxhZyAmJiB3aWR0aCA8IHN0cmxlbihsaW5lKSkKIAkJd2lkdGggPSBzdHJsZW4obGluZSk7CiBiYWlsOgpAQCAtNDcxLDcgKzQ3MSw4IEBACiAjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgogCWNwID0gTlVMTDsKIAlpZiAoIW5mbGFnICYmICFJTjZfSVNfQUREUl9VTlNQRUNJRklFRChpbjZwKSkgewotCQlocCA9IGdldGhvc3RieWFkZHIoKGNvbnN0IGNoYXIgKilpbjZwLCBzaXplb2YoKmluNnApLCBBRl9JTkVUNik7CisJCWhwID0gbmV0c25tcF9nZXRob3N0YnlhZGRyKChjb25zdCBjaGFyICopaW42cCwgc2l6ZW9mKCppbjZwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBRl9JTkVUNik7CiAJCWlmIChocCkgewogCQkJaWYgKChjcCA9IHN0cmNocihocC0+aF9uYW1lLCAnLicpKSAmJgogCQkJICAgICFzdHJjbXAoY3AgKyAxLCBkb21haW4pKQpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wbmV0c3RhdC9pbmV0eC5jIGIvYXBwcy9zbm1wbmV0c3RhdC9pbmV0eC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkMTE3ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9hcHBzL3NubXBuZXRzdGF0L2luZXR4LmMKQEAgLTAsMCArMSw1NTUgQEAKKy8qCSRPcGVuQlNEOiBpbmV0Ni5jLHYgMS4zMSAyMDA0LzExLzE3IDAxOjQ3OjIwIGl0b2p1biBFeHAgJAkqLworLyoJQlNESSBpbmV0LmMsdiAyLjMgMTk5NS8xMC8yNCAwMjoxOToyOSBwcmIgRXhwCSovCisvKgorICogQ29weXJpZ2h0IChjKSAxOTgzLCAxOTg4LCAxOTkzCisgKglUaGUgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFJFR0VOVFMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBSRUdFTlRTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmZGVmICBJTkhFUklURURfQ09ERQorI2lmbmRlZiBsaW50CisjaWYgMAorc3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKWluZXQuYwk4LjQgKEJlcmtlbGV5KSA0LzIwLzk0IjsKKyNlbHNlCisvKl9fUkNTSUQoIiRPcGVuQlNEOiBpbmV0Ni5jLHYgMS4zMSAyMDA0LzExLzE3IDAxOjQ3OjIwIGl0b2p1biBFeHAgJCIpOyovCisvKl9fUkNTSUQoIktBTUUgSWQ6IGluZXQ2LmMsdiAxLjEwIDIwMDAvMDIvMDkgMTA6NDk6MzEgaXRvanVuIEV4cCIpOyovCisjZW5kaWYKKyNlbmRpZiAvKiBub3QgbGludCAqLworI2VuZGlmCisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKworI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmIEhBVkVfV0lOU09DS19ICisjaW5jbHVkZSAid2luc3R1Yi5oIgorI2VuZGlmCisjaWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVERCX0gKKyNpbmNsdWRlIDxuZXRkYi5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisKKyNpZiBIQVZFX05FVElORVRfSU5fSAorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbmRpZgorI2lmIEhBVkVfQVJQQV9JTkVUX0gKKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgIm1haW4uaCIKKyNpbmNsdWRlICJuZXRzdGF0LmgiCisKK3N0cnVjdCBzdGF0X3RhYmxlIHsKKyAgICB1bnNpZ25lZCBpbnQgZW50cnk7ICAgICAgLyogZW50cnkgbnVtYmVyIGluIHRhYmxlICovCisgICAgLyoKKyAgICAgKiBmb3JtYXQgc3RyaW5nIHRvIHByaW50ZihkZXNjcmlwdGlvbiwgdmFsdWUpIAorICAgICAqIHdhcm5pbmc6IHRoZSAlZCBtdXN0IGJlIGJlZm9yZSB0aGUgJXMgCisgICAgICovCisgICAgY2hhciAgICAgICAgICAgIGRlc2NyaXB0aW9uWzgwXTsKK307CisKK3ZvaWQJaW5ldHhwcmludChpbnQsIHN0cnVjdCBzb2NrYWRkcl9pbjYgLCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50KTsKKworLyoKKyAqIFByaW50IGEgc3VtbWFyeSBvZiBUQ1AgY29ubmVjdGlvbnMKKyAqIExpc3RlbmluZyBwcm9jZXNzZXMgYXJlIHN1cHByZXNzZWQgdW5sZXNzIHRoZQorICogICAtYSAoYWxsKSBmbGFnIGlzIHNwZWNpZmllZC4KKyAqLworY29uc3QgY2hhciAgICAgKnRjcHhzdGF0ZXNbXSA9IHsKKyAgICAiIiwKKyAgICAiQ0xPU0VEIiwKKyAgICAiTElTVEVOIiwKKyAgICAiU1lOU0VOVCIsCisgICAgIlNZTlJFQ0VJVkVEIiwKKyAgICAiRVNUQUJMSVNIRUQiLAorICAgICJGSU5XQUlUMSIsCisgICAgIkZJTldBSVQyIiwKKyAgICAiQ0xPU0VXQUlUIiwKKyAgICAiTEFTVEFDSyIsCisgICAgIkNMT1NJTkciLAorICAgICJUSU1FV0FJVCIKK307CisjZGVmaW5lIFRDUF9OU1RBVEVTIDExCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBpbnQgc3RhdDsKKyAgICBpbnQgaGNzdGF0OworICAgIGNvbnN0IGNoYXIgKnN0cjsKK30gc3lzdGVtc3RhdHNfdDsKKworc3lzdGVtc3RhdHNfdCBzeXN0ZW1zdGF0c1tdID0geworICAgIHsgIDMsICA0LCAiZGF0YWdyYW1zIGlucHV0IiB9LAorICAgIHsgIDUsICA2LCAib2N0ZXRzIHJlY2VpdmVkIiB9LAorICAgIHsgIDcsICAwLCAiaGRyIGVycm9ycyBpbnB1dCIgfSwKKyAgICB7ICA4LCAgMCwgIm5vIHJvdXRlcyBpbnB1dCIgfSwKKyAgICB7ICA5LCAgMCwgImFkZHJlc3MgZXJyb3JzIGlucHV0IiB9LAorICAgIHsgMTAsICAwLCAidW5rbm93biBwcm90b2NvbCBpbnB1dCIgfSwKKyAgICB7IDEyLCAxMywgImlucHV0IGRhdGFncmFtcyBmb3J3YXJkZWQiIH0sCisgICAgeyAxMSwgIDAsICJ0cnVuY2F0ZWQgZGF0YWdyYW1zIGlucHV0IiB9LAorICAgIHsgMTQsICAwLCAiaW5wdXQgcmVhc3NlbWJseSByZXF1aXJlZCIgfSwKKyAgICB7IDE1LCAgMCwgImlucHV0IHJlYXNzZW1sZWQgT0siIH0sCisgICAgeyAxNiwgIDAsICJpbnB1dCByZWFzc2VtYmx5IGZhaWxlZCIgfSwKKyAgICB7IDE3LCAgMCwgImlucHV0IGRhdGFncmFtcyBkaXNjYXJkZWQiIH0sCisgICAgeyAxOCwgMTksICJpbnB1dCBkYXRhZ3JhbXMgcmVjZWl2ZWQiIH0sCisgICAgeyAyMCwgMjEsICJvdXRwdXQgZGF0YWdyYW0gcmVxdWVzdHMiIH0sCisgICAgeyAyMiwgIDAsICJvdXRwdXQgbm8gcm91dGUiIH0sCisgICAgeyAyMywgMjQsICJkYXRhZ3JhbXMgZm9yd2FyZGVkIiB9LAorICAgIHsgMjUsICAwLCAib3V0cHV0IGRhdGFncmFtcyBkaXNjYXJkZWQiIH0sCisgICAgeyAyNiwgIDAsICJvdXRwdXQgZGF0YWdyYW1zIGZyYWdtZW50YXRpb24gcmVxdWlyZWQiIH0sCisgICAgeyAyNywgIDAsICJvdXRwdXQgZGF0YWdyYW1zIGZyYWdtZW50ZWQiIH0sCisgICAgeyAyOCwgIDAsICJvdXRwdXQgZnJhZ21lbnRhdGlvbiBmYWlsZWQiIH0sCisgICAgeyAyOSwgIDAsICJmcmFnbWVudHMgY3JlYXRlZCIgfSwKKyAgICB7IDMwLCAzMSwgImRhdGFncmFtcyB0cmFuc21pdHRlZCIgfSwKKyAgICB7IDMyLCAzMywgIm9jdGV0cyB0cmFuc21pdHRlZCIgfSwKKyAgICB7ICAwIH0KK307CisKK3N5c3RlbXN0YXRzX3QgaWNtcHN0YXRzW10gPSB7CisgICAgeyAgMiwgIDAsICJpbnB1dCBtZXNzYWdlcyIgfSwKKyAgICB7ICAzLCAgMCwgImlucHV0IGVycm9ycyIgfSwKKyAgICB7ICA0LCAgMCwgIm91dHB1dCBtZXNzYWdlcyIgfSwKKyAgICB7ICA1LCAgMCwgIm91dHB1dCBlcnJvcnMiIH0sCisgICAgeyAgMCB9Cit9OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgaW50IGNvZGU7CisgICAgY29uc3QgY2hhciAqbmFtZTsKK30gY29kZWxpc3RfdDsKKworY29kZWxpc3RfdCBpY21wY29kZXNbXSA9IHsKKyAgICB7ICAgMCwgIkVjaG8gcmVwbHkiIH0sCisgICAgeyAgIDMsICJEZXN0aW5hdGlvbiB1bnJlYWNoYWJsZSIgfSwKKyAgICB7ICAgNCwgIlNvdXJjZSBxdWVuY2giIH0sCisgICAgeyAgIDUsICJSZWRpcmVjdCIgfSwKKyAgICB7ICAgNiwgIkFsdGVybmF0ZSBob3N0IGFkZHJlc3MiIH0sCisgICAgeyAgIDgsICJFY2hvIHJlcXVlc3QiIH0sCisgICAgeyAgIDksICJSb3V0ZXIgYWR2ZXJ0aXNlbWVudCIgfSwKKyAgICB7ICAxMCwgIlJvdXRlciBzZWxlY3Rpb24iIH0sCisgICAgeyAgMTEsICJUaW1lIGV4Y2VlZGVkIiB9LAorICAgIHsgIDEyLCAiUGFyYW1ldGVyIHByb2JsZW0iIH0sCisgICAgeyAgMTMsICJUaW1lc3RhbXAgcmVxdWVzdCIgfSwKKyAgICB7ICAxNCwgIlRpbWVzdGFtcCByZXBseSIgfSwKKyAgICB7ICAxNSwgIkluZm9ybWF0aW9uIHJlcXVlc3QiIH0sCisgICAgeyAgMTYsICJJbmZvcm1hdGlvbiByZXBseSIgfSwKKyAgICB7ICAxNywgIkFkZHJlc3MgbWFzayByZXF1ZXN0IiB9LAorICAgIHsgIDE4LCAiQWRkcmVzcyBtYXNrIHJlcGx5IiB9LAorICAgIHsgMCB9Cit9OworCitjb2RlbGlzdF90IGljbXA2Y29kZXNbXSA9IHsKKyAgICB7ICAgMSwgICAiRGVzdGluYXRpb24gVW5yZWFjaGFibGUiIH0sCisgICAgeyAgIDIsICAgIlBhY2tldCBUb28gQmlnIiB9LAorICAgIHsgICAzLCAgICJUaW1lIEV4Y2VlZGVkIiB9LAorICAgIHsgICA0LCAgICJQYXJhbWV0ZXIgUHJvYmxlbSIgfSwKKyAgICB7IDEwMCwgICAiUHJpdmF0ZSBleHBlcmltZW50YXRpb24gMTAwIiB9LAorICAgIHsgMTAxLCAgICJQcml2YXRlIGV4cGVyaW1lbnRhdGlvbiAxMDEiIH0sCisgICAgeyAxMjcsICAgIlJlc2VydmVkIGZvciBleHBhbnNpb24gb2YgSUNNUHY2IGVycm9yIG1lc3NhZ2VzIiB9LAorICAgIHsgMTI4LCAgICJFY2hvIFJlcXVlc3QiIH0sCisgICAgeyAxMjksICAgIkVjaG8gUmVwbHkiIH0sCisgICAgeyAxMzAsICAgIk11bHRpY2FzdCBMaXN0ZW5lciBRdWVyeSIgfSwKKyAgICB7IDEzMSwgICAiTXVsdGljYXN0IExpc3RlbmVyIFJlcG9ydCIgfSwKKyAgICB7IDEzMiwgICAiTXVsdGljYXN0IExpc3RlbmVyIERvbmUiIH0sCisgICAgeyAxMzMsICAgIlJvdXRlciBTb2xpY2l0YXRpb24iIH0sCisgICAgeyAxMzQsICAgIlJvdXRlciBBZHZlcnRpc2VtZW50IiB9LAorICAgIHsgMTM1LCAgICJOZWlnaGJvciBTb2xpY2l0YXRpb24iIH0sCisgICAgeyAxMzYsICAgIk5laWdoYm9yIEFkdmVydGlzZW1lbnQiIH0sCisgICAgeyAxMzcsICAgIlJlZGlyZWN0IE1lc3NhZ2UiIH0sCisgICAgeyAxMzgsICAgIlJvdXRlciBSZW51bWJlcmluZyIgfSwKKyAgICB7IDEzOSwgICAiSUNNUCBOb2RlIEluZm9ybWF0aW9uIFF1ZXJ5IiB9LAorICAgIHsgMTQwLCAgICJJQ01QIE5vZGUgSW5mb3JtYXRpb24gUmVzcG9uc2UiIH0sCisgICAgeyAxNDEsICAgIkludmVyc2UgTmVpZ2hib3IgRGlzY292ZXJ5IFNvbGljaXRhdGlvbiBNZXNzYWdlIiB9LAorICAgIHsgMTQyLCAgICJJbnZlcnNlIE5laWdoYm9yIERpc2NvdmVyeSBBZHZlcnRpc2VtZW50IE1lc3NhZ2UiIH0sCisgICAgeyAxNDMsICAgIlZlcnNpb24gMiBNdWx0aWNhc3QgTGlzdGVuZXIgUmVwb3J0IiB9LAorICAgIHsgMTQ0LCAgICJIb21lIEFnZW50IEFkZHJlc3MgRGlzY292ZXJ5IFJlcXVlc3QgTWVzc2FnZSIgfSwKKyAgICB7IDE0NSwgICAiSG9tZSBBZ2VudCBBZGRyZXNzIERpc2NvdmVyeSBSZXBseSBNZXNzYWdlIiB9LAorICAgIHsgMTQ2LCAgICJNb2JpbGUgUHJlZml4IFNvbGljaXRhdGlvbiIgfSwKKyAgICB7IDE0NywgICAiTW9iaWxlIFByZWZpeCBBZHZlcnRpc2VtZW50IiB9LAorICAgIHsgMTQ4LCAgICJDZXJ0aWZpY2F0aW9uIFBhdGggU29saWNpdGF0aW9uIE1lc3NhZ2UiIH0sCisgICAgeyAxNDksICAgIkNlcnRpZmljYXRpb24gUGF0aCBBZHZlcnRpc2VtZW50IE1lc3NhZ2UiIH0sCisgICAgeyAxNTEsICAgIk11bHRpY2FzdCBSb3V0ZXIgQWR2ZXJ0aXNlbWVudCIgfSwKKyAgICB7IDE1MiwgICAiTXVsdGljYXN0IFJvdXRlciBTb2xpY2l0YXRpb24iIH0sCisgICAgeyAxNTMsICAgIk11bHRpY2FzdCBSb3V0ZXIgVGVybWluYXRpb24iIH0sCisgICAgeyAxNTQsICAgIkZNSVB2NiBNZXNzYWdlcyIgfSwKKyAgICB7IDE1NSwgICAiUlBMIENvbnRyb2wgTWVzc2FnZSIgfSwKKyAgICB7IDAgfQorfTsKKworCit2b2lkCit0Y3B4cHJvdG9wcihjb25zdCBjaGFyICpuYW1lKQoreworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyLCAqdnAsICpwdmFyOworICAgIG9pZCAgICB0Y3BDb25uZWN0aW9uU3RhdGVfb2lkW10gPSB7IDEsMyw2LDEsMiwxLDYsMTksMSw3IH07CisgICAgc2l6ZV90IHRjcENvbm5lY3Rpb25TdGF0ZV9sZW4gICA9IE9JRF9MRU5HVEgoIHRjcENvbm5lY3Rpb25TdGF0ZV9vaWQgKTsKKyAgICBpbnQgICAgc3RhdGUsIGk7CisgICAgc3RydWN0IHNvY2thZGRyX2luNiBsb2NhbEFkZHIsIHJlbW90ZUFkZHI7CisgICAgaW50ICAgIGxvY2FsUG9ydCwgICAgIHJlbW90ZVBvcnQsICBwaWQgPSAwOworICAgIGludCAgICBsb2NhbFR5cGUsICAgIHJlbW90ZVR5cGUsIGlueDsKKyAgICBpbnQgICAgZmlyc3QgPSAxOworICAgIHN0YXRpYyBpbnQgZG9uZSA9IDA7CisKKyAgICBpZiAoZG9uZSsrKSByZXR1cm47CisKKyAgICAvKgorICAgICAqIFdhbGtpbmcgdGhlIHY2IHRjcENvbm5lY3Rpb25TdGF0ZSBjb2x1bW4gd2lsbCBwcm92aWRlIGFsbAorICAgICAqICAgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbi4KKyAgICAgKi8KKyAgICB2YXIgPSBOVUxMOworICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoICZ2YXIsIHRjcENvbm5lY3Rpb25TdGF0ZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNwQ29ubmVjdGlvblN0YXRlX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU05fTlVMTCwgTlVMTCwgIDApOworICAgIGlmIChuZXRzbm1wX3F1ZXJ5X3dhbGsoIHZhciwgc3MgKSAhPSBTTk1QX0VSUl9OT0VSUk9SKQorICAgICAgICByZXR1cm47CisgICAgaWYgKHZhci0+dHlwZSA9PSBBU05fTlVMTCkgLyogTm8gZW50cmllcyAqLworICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKHZwID0gdmFyOyB2cCA7IHZwPXZwLT5uZXh0X3ZhcmlhYmxlKSB7CisJY2hhciBsbmFtZVs1XTsKKyAgICAgICAgc3RhdGUgPSAqdnAtPnZhbC5pbnRlZ2VyOworCWlueCA9IHRjcENvbm5lY3Rpb25TdGF0ZV9sZW47CisJcHZhciA9IE5VTEw7CisKKwl2cC0+bmFtZVtpbngtMV0gPSA4OworCXNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoICZwdmFyLCB2cC0+bmFtZSwgdnAtPm5hbWVfbGVuZ3RoLAorCQkJCQkgQVNOX05VTEwsIE5VTEwsICAwKTsKKwlpZiAobmV0c25tcF9xdWVyeV9nZXQoIHB2YXIsIHNzICkgIT0gU05NUF9FUlJfTk9FUlJPUikKKwkgICAgYWJvcnQoKTsKKwlpZiAodmFyLT50eXBlID09IEFTTl9OVUxMKSAgICAvKiBObyBlbnRyaWVzICovCisJICAgIGFib3J0KCk7CisJcGlkID0gKnB2YXItPnZhbC5pbnRlZ2VyOworICAgICAgICAKKyAgICAgICAgLyogRXh0cmFjdCB0aGUgbG9jYWwvcmVtb3RlIGluZm9ybWF0aW9uIGZyb20gdGhlIGluZGV4IHZhbHVlcyAqLworCWxvY2FsVHlwZSA9IHZwLT5uYW1lW2lueCsrXTsKKwlmb3IgKGkgPSAwOyBpIDwgdnAtPm5hbWVbaW54XTsgaSsrKQorCSAgICBsb2NhbEFkZHIuc2luNl9hZGRyLnM2X2FkZHJbaV0gPSB2cC0+bmFtZVtpbngraSsxXTsKKwlpbnggKz0gdnAtPm5hbWVbaW54XSArIDE7CisgICAgICAgIGxvY2FsUG9ydCAgICA9IHZwLT5uYW1lW2lueCsrXTsKKwlyZW1vdGVUeXBlID0gdnAtPm5hbWVbaW54KytdOworCWZvciAoaSA9IDA7IGkgPCB2cC0+bmFtZVtpbnhdOyBpKyspCisJICAgIHJlbW90ZUFkZHIuc2luNl9hZGRyLnM2X2FkZHJbaV0gPSB2cC0+bmFtZVtpbngraSsxXTsKKwlpbnggKz0gdnAtPm5hbWVbaW54XSArIDE7CisgICAgICAgIHJlbW90ZVBvcnQgICAgPSB2cC0+bmFtZVtpbngrK107CisKKwlzbm1wX2ZyZWVfdmFyYmluZChwdmFyKTsKKworCWlmIChhZiA9PSBBRl9JTkVUICYmIGxvY2FsVHlwZSA9PSAyKSBjb250aW51ZTsKKwlpZiAoYWYgPT0gQUZfSU5FVDYgJiYgbG9jYWxUeXBlICE9IDIpIGNvbnRpbnVlOworCisgICAgICAgIGlmIChmaXJzdCkgeworICAgICAgICAgICAgcHJpbnRmKCJBY3RpdmUgSW50ZXJuZXQgKCVzKSBDb25uZWN0aW9ucyIsIG5hbWUpOworICAgICAgICAgICAgcHV0Y2hhcignXG4nKTsKKyAgICAgICAgICAgIHByaW50ZigiJS01LjVzICUtMjcuMjdzICUtMjcuMjdzICUxMS4xMXMgJTUuNXNcbiIsCisgICAgICAgICAgICAgICAgICAgIlByb3RvIiwgIkxvY2FsIEFkZHJlc3MiLCAiUmVtb3RlIEFkZHJlc3MiLCAiU3RhdGUiLCAiUElEIik7CisgICAgICAgICAgICBmaXJzdCA9IDA7CisgICAgICAgIH0KKworCXN0cmNweShsbmFtZSwgbmFtZSk7CisJaWYgKGxvY2FsVHlwZSA9PSAyKSBsbmFtZVszXSA9ICc2JzsKKwllbHNlIGxuYW1lWzNdID0gJzQnOworCWxuYW1lWzRdID0gMDsKKyAgICAgICAgcHJpbnRmKCIlLTUuNXMiLCBsbmFtZSk7CisgICAgICAgIGluZXR4cHJpbnQobG9jYWxUeXBlLCBsb2NhbEFkZHIsICBsb2NhbFBvcnQsIG5hbWUsIDEpOworICAgICAgICBpbmV0eHByaW50KHJlbW90ZVR5cGUsIHJlbW90ZUFkZHIsIHJlbW90ZVBvcnQsIG5hbWUsIDApOworICAgICAgICBpZiAoIHN0YXRlIDwgMSB8fCBzdGF0ZSA+IFRDUF9OU1RBVEVTICkKKyAgICAgICAgICAgIHByaW50ZigiICUxMWQgNSVkXG4iLCBwaWQsIHN0YXRlICk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByaW50ZigiICUxMXMgJTVkXG4iLCB0Y3B4c3RhdGVzWyBzdGF0ZSBdLCBwaWQpOworICAgIH0KKyAgICBzbm1wX2ZyZWVfdmFyYmluZCggdmFyICk7CisKKyAgICBpZiAoYWZsYWcpCisJbGlzdGVueHByb3RvcHIobmFtZSk7Cit9CisKKy8qCisgKiBQcmludCBhIHN1bW1hcnkgb2YgbGlzdGVuaW5nICJjb25uZWN0aW9ucyIKKyAqLwordm9pZAorbGlzdGVueHByb3RvcHIoY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhciwgKnZwOworICAgIG9pZCAgICB0Y3BMaXN0ZW5lclByb2Nlc3Nfb2lkW10gPSB7IDEsMyw2LDEsMiwxLDYsMjAsMSw0IH07CisgICAgc2l6ZV90IHRjcExpc3RlbmVyUHJvY2Vzc19sZW4gICA9IE9JRF9MRU5HVEgoIHRjcExpc3RlbmVyUHJvY2Vzc19vaWQgKTsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW42IGxvY2FsQWRkcjsKKyAgICBpbnQgICAgbG9jYWxUeXBlLCBsb2NhbFBvcnQsIHBpZDsKKyAgICBpbnQgICAgaSwgaW54OworCisgICAgLyoKKyAgICAgKiBXYWxraW5nIGEgc2luZ2xlIGNvbHVtbiBvZiB0aGUgdWRwVGFibGUgd2lsbCBwcm92aWRlCisgICAgICogICBhbGwgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBpbmRleCB2YWx1ZXMuCisgICAgICovCisgICAgdmFyID0gTlVMTDsKKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCAmdmFyLCB0Y3BMaXN0ZW5lclByb2Nlc3Nfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjcExpc3RlbmVyUHJvY2Vzc19sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX05VTEwsIE5VTEwsICAwKTsKKyAgICBpZiAobmV0c25tcF9xdWVyeV93YWxrKCB2YXIsIHNzICkgIT0gU05NUF9FUlJfTk9FUlJPUikKKyAgICAgICAgcmV0dXJuOworICAgIGlmICh2YXItPnR5cGUgPT0gQVNOX05VTEwpIC8qIE5vIGVudHJpZXMgKi8KKyAgICAgICAgcmV0dXJuOworCisgICAgcHJpbnRmKCJMaXN0ZW5pbmcgSW50ZXJuZXQgKCVzKSBDb25uZWN0aW9uc1xuIiwgbmFtZSk7CisgICAgcHJpbnRmKCIlLTUuNXMgJS0yNy4yN3MgJTVzXG4iLCAiUHJvdG8iLCAiTG9jYWwgQWRkcmVzcyIsICJQSUQiKTsKKyAgICBmb3IgKHZwID0gdmFyOyB2cCA7IHZwPXZwLT5uZXh0X3ZhcmlhYmxlKSB7CisJY2hhciBsbmFtZVs1XTsKKwlpbnggPSB0Y3BMaXN0ZW5lclByb2Nlc3NfbGVuOworICAgICAgICAvKgorICAgICAgICAgKiBFeHRyYWN0IHRoZSBsb2NhbCBwb3J0IGZyb20gdGhlIGluZGV4IHZhbHVlcywgYnV0IHRha2UKKyAgICAgICAgICogICB0aGUgSVAgYWRkcmVzcyBmcm9tIHRoZSB2YXJiaW5kIHZhbHVlLCAod2hpY2ggaXMgd2h5CisgICAgICAgICAqICAgd2Ugd2Fsa2VkIHVkcExvY2FsQWRkcmVzcyByYXRoZXIgdGhhbiB1ZHBMb2NhbFBvcnQpCisgICAgICAgICAqLworCWxvY2FsVHlwZSA9IHZwLT5uYW1lW2lueCsrXTsKKwlpZiAoYWYgPT0gQUZfSU5FVCAmJiBsb2NhbFR5cGUgPT0gMikgY29udGludWU7CisJaWYgKGFmID09IEFGX0lORVQ2ICYmIGxvY2FsVHlwZSAhPSAyKSBjb250aW51ZTsKKworCWZvciAoaSA9IDA7IGkgPCB2cC0+bmFtZVtpbnhdOyBpKyspCisJICAgIGxvY2FsQWRkci5zaW42X2FkZHIuczZfYWRkcltpXSA9IHZwLT5uYW1lW2lueCtpKzFdOworCWlueCArPSB2cC0+bmFtZVtpbnhdKzE7CisgICAgICAgIGxvY2FsUG9ydCA9IHZwLT5uYW1lWyBpbngrKyBdOworICAgICAgICBwaWQgICA9ICp2cC0+dmFsLmludGVnZXI7CisJc3RyY3B5KGxuYW1lLCBuYW1lKTsKKwlpZiAobG9jYWxUeXBlID09IDIpIGxuYW1lWzNdID0gJzYnOworCWVsc2UgbG5hbWVbM10gPSAnNCc7CisJbG5hbWVbNF0gPSAwOworICAgICAgICBwcmludGYoIiUtNS41cyIsIGxuYW1lKTsKKyAgICAgICAgaW5ldHhwcmludChsb2NhbFR5cGUsIGxvY2FsQWRkciwgbG9jYWxQb3J0LCBuYW1lLCAxKTsKKyAgICAgICAgcHJpbnRmKCIgJTVkXG4iLCBwaWQpOworICAgIH0KKyAgICBzbm1wX2ZyZWVfdmFyYmluZCggdmFyICk7Cit9CisKKy8qCisgKiBQcmludCBhIHN1bW1hcnkgb2YgVURQdjYgImNvbm5lY3Rpb25zIgorICogICAgWFhYIC0gd2hhdCBhYm91dCAibGlzdGVuaW5nIiBzZXJ2aWNlcyA/PworICovCit2b2lkCit1ZHB4cHJvdG9wcihjb25zdCBjaGFyICpuYW1lKQoreworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyLCAqdnA7CisgICAgb2lkICAgIHVkcEVuZHBvaW50UHJvY2Vzc19vaWRbXSA9IHsgMSwzLDYsMSwyLDEsNyw3LDEsOCB9OworICAgIHNpemVfdCB1ZHBFbmRwb2ludFByb2Nlc3NfbGVuICAgPSBPSURfTEVOR1RIKCB1ZHBFbmRwb2ludFByb2Nlc3Nfb2lkICk7CisgICAgc3RydWN0IHNvY2thZGRyX2luNiBsb2NhbEFkZHIsIHJlbW90ZUFkZHI7CisgICAgaW50ICAgIGxvY2FsVHlwZSwgcmVtb3RlVHlwZSwgbG9jYWxQb3J0LCByZW1vdGVQb3J0LCBwaWQ7CisgICAgaW50ICAgIGksIGlueDsKKyAgICBzdGF0aWMgaW50IGRvbmUgPSAwOworCisgICAgaWYgKGRvbmUrKykgcmV0dXJuOworCisgICAgLyoKKyAgICAgKiBXYWxraW5nIGEgc2luZ2xlIGNvbHVtbiBvZiB0aGUgdWRwVGFibGUgd2lsbCBwcm92aWRlCisgICAgICogICBhbGwgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBpbmRleCB2YWx1ZXMuCisgICAgICovCisgICAgdmFyID0gTlVMTDsKKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCAmdmFyLCB1ZHBFbmRwb2ludFByb2Nlc3Nfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkcEVuZHBvaW50UHJvY2Vzc19sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX05VTEwsIE5VTEwsICAwKTsKKyAgICBpZiAobmV0c25tcF9xdWVyeV93YWxrKCB2YXIsIHNzICkgIT0gU05NUF9FUlJfTk9FUlJPUikKKyAgICAgICAgcmV0dXJuOworICAgIGlmICh2YXItPnR5cGUgPT0gQVNOX05VTEwpIC8qIE5vIGVudHJpZXMgKi8KKyAgICAgICAgcmV0dXJuOworCisgICAgcHJpbnRmKCJBY3RpdmUgSW50ZXJuZXQgKCVzKSBDb25uZWN0aW9uc1xuIiwgbmFtZSk7CisgICAgcHJpbnRmKCIlLTUuNXMgJS0yNy4yN3MgJS0yNy4yN3MgJTVzXG4iLCAiUHJvdG8iLCAiTG9jYWwgQWRkcmVzcyIsICJSZW1vdGUgQWRkcmVzcyIsICJQSUQiKTsKKyAgICBmb3IgKHZwID0gdmFyOyB2cCA7IHZwPXZwLT5uZXh0X3ZhcmlhYmxlKSB7CisgICAgICAgIGNoYXIgbG5hbWVbNV07CisJaW54ID0gdWRwRW5kcG9pbnRQcm9jZXNzX2xlbjsKKyAgICAgICAgLyoKKyAgICAgICAgICogRXh0cmFjdCB0aGUgbG9jYWwgcG9ydCBmcm9tIHRoZSBpbmRleCB2YWx1ZXMsIGJ1dCB0YWtlCisgICAgICAgICAqICAgdGhlIElQIGFkZHJlc3MgZnJvbSB0aGUgdmFyYmluZCB2YWx1ZSwgKHdoaWNoIGlzIHdoeQorICAgICAgICAgKiAgIHdlIHdhbGtlZCB1ZHBMb2NhbEFkZHJlc3MgcmF0aGVyIHRoYW4gdWRwTG9jYWxQb3J0KQorICAgICAgICAgKi8KKwlsb2NhbFR5cGUgPSB2cC0+bmFtZVtpbngrK107CisJaWYgKGFmID09IEFGX0lORVQgJiYgbG9jYWxUeXBlID09IDIpIGNvbnRpbnVlOworCWlmIChhZiA9PSBBRl9JTkVUNiAmJiBsb2NhbFR5cGUgIT0gMikgY29udGludWU7CisJZm9yIChpID0gMDsgaSA8IHZwLT5uYW1lW2lueF07IGkrKykKKwkgICAgbG9jYWxBZGRyLnNpbjZfYWRkci5zNl9hZGRyW2ldID0gdnAtPm5hbWVbaW54K2krMV07CisJaW54ICs9IHZwLT5uYW1lW2lueF0rMTsKKyAgICAgICAgbG9jYWxQb3J0ID0gdnAtPm5hbWVbIGlueCsrIF07CisJcmVtb3RlVHlwZSA9IHZwLT5uYW1lW2lueCsrXTsKKwlmb3IgKGkgPSAwOyBpIDwgdnAtPm5hbWVbaW54XTsgaSsrKQorCSAgICByZW1vdGVBZGRyLnNpbjZfYWRkci5zNl9hZGRyW2ldID0gdnAtPm5hbWVbaW54K2krMV07CisJaW54ICs9IHZwLT5uYW1lW2lueF0rMTsKKyAgICAgICAgcmVtb3RlUG9ydCA9IHZwLT5uYW1lWyBpbngrKyBdOworICAgICAgICBwaWQgICA9ICp2cC0+dmFsLmludGVnZXI7CisJc3RyY3B5KGxuYW1lLCBuYW1lKTsKKwlpZiAobG9jYWxUeXBlID09IDIpIGxuYW1lWzNdID0gJzYnOworCWVsc2UgbG5hbWVbM10gPSAnNCc7CisJbG5hbWVbNF0gPSAwOworICAgICAgICBwcmludGYoIiUtNS41cyIsIGxuYW1lKTsKKyAgICAgICAgaW5ldHhwcmludChsb2NhbFR5cGUsIGxvY2FsQWRkciwgbG9jYWxQb3J0LCBuYW1lLCAxKTsKKyAgICAgICAgaW5ldHhwcmludChyZW1vdGVUeXBlLCByZW1vdGVBZGRyLCByZW1vdGVQb3J0LCBuYW1lLCAxKTsKKyAgICAgICAgcHJpbnRmKCIgJTVkXG4iLCBwaWQpOworICAgIH0KKyAgICBzbm1wX2ZyZWVfdmFyYmluZCggdmFyICk7Cit9CisKK3N0YXRpYyB2b2lkCitzdGF0c3ByaW50KGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHN5c3RlbXN0YXRzX3QgKnN0LCBpbnQgcHJvdG8sCisJY29uc3Qgb2lkICp0YmwsIHNpemVfdCB0YmxsZW4pCit7CisgICAgb2lkIHZhclszMl07CisgICAgc2l6ZV90IGxlbjsKKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZiOworCisgICAgbWVtY3B5KHZhciwgdGJsLCB0YmxsZW4qc2l6ZW9mKG9pZCkpOworICAgIHZhclt0YmxsZW4rMV0gPSBwcm90bzsKKyAgICBsZW4gPSB0YmxsZW4rMjsKKworICAgIHByaW50ZigiJXM6XG4iLCBuYW1lKTsKKyAgICB3aGlsZSAoc3QtPnN0YXQpIHsKKwl2YiA9IE5VTEw7CisJaWYgKHN0LT5oY3N0YXQpIHsKKwkgICAgdmFyW3RibGxlbl0gPSBzdC0+aGNzdGF0OworCSAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCAmdmIsIHZhciwgbGVuLCBBU05fTlVMTCwgTlVMTCwgIDApOworCSAgICBpZiAobmV0c25tcF9xdWVyeV9nZXQoIHZiLCBzcyApICE9IFNOTVBfRVJSX05PRVJST1IpCisJCWFib3J0KCk7CisJfQorCWlmICghdmIpIHsKKwkgICAgdmFyW3RibGxlbl0gPSBzdC0+c3RhdDsKKwkgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSggJnZiLCB2YXIsIGxlbiwgQVNOX05VTEwsIE5VTEwsIDApOworCSAgICBpZiAobmV0c25tcF9xdWVyeV9nZXQoIHZiLCBzcyApICE9IFNOTVBfRVJSX05PRVJST1IpCisJCWFib3J0KCk7CisJfQorCWlmICh2YikgeworCSAgICBpZiAodmItPnR5cGUgPT0gQVNOX0NPVU5URVIpIHsKKwkJaWYgKCp2Yi0+dmFsLmludGVnZXIgPiAwIHx8IHNmbGFnID09IDEpCisJCSAgICBwcmludGYoIiUxNGx1ICVzXG4iLCAqdmItPnZhbC5pbnRlZ2VyLCBzdC0+c3RyKTsKKwkgICAgfQorCSAgICBlbHNlIGlmICh2Yi0+dHlwZSA9PSBBU05fQ09VTlRFUjY0KSB7CisJCWNoYXIgYTY0YnVmW0k2NENIQVJTWiArIDFdOworCQlwcmludFU2NChhNjRidWYsIHZiLT52YWwuY291bnRlcjY0KTsKKwkJaWYgKHN0cmNtcChhNjRidWYsICIwIikgIT0gMCB8fCBzZmxhZyA9PSAxKQorCQkgICAgcHJpbnRmKCIlMTRzICVzXG4iLCBhNjRidWYsIHN0LT5zdHIpOworCSAgICB9CisJICAgIGVsc2UKKwkJcHJpbnRmKCIlMTRzICVzXG4iLCAiLSIsIHN0LT5zdHIpOworCSAgICBzbm1wX2ZyZWVfdmFyYmluZCh2Yik7CisJfQorCXN0Kys7CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorcHJoaXN0byhjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnZhciwgc2l6ZV90IGxlbiwgaW50IHZlciwgY29kZWxpc3RfdCAqY3MpCit7CisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YiA9IE5VTEwsICp2cDsKKyAgICBjb2RlbGlzdF90ICpjcDsKKyAgICBpbnQgY29kZTsKKyAgICBjaGFyIG5vY29kZVszMl07CisKKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCAmdmIsIHZhciwgbGVuLCBBU05fTlVMTCwgTlVMTCwgIDApOworICAgIGlmIChuZXRzbm1wX3F1ZXJ5X3dhbGsoIHZiLCBzcyApICE9IFNOTVBfRVJSX05PRVJST1IpCisJYWJvcnQoKTsKKyAgICBwcmludGYoIiAgICAgJXMgaGlzdG9ncmFtOlxuIiwgbmFtZSk7CisgICAgcHJpbnRmKCIgICAgICUxMHMgJTEwcyAlc1xuIiwgImlucHV0IiwgIm91dHB1dCIsICJ0eXBlIik7CisgICAgZm9yIChjb2RlID0gMDsgY29kZSA8IDI1NjsgY29kZSsrKSB7CisJdW5zaWduZWQgbG9uZyBpbnAgPSAwLCBvdXQgPSAwOworCWludCBmb3VuZCA9IDA7CisJdnAgPSB2YjsKKwl3aGlsZSAodnAgJiYgZm91bmQgIT0gMikgeworCSAgICBpZiAodnAtPm5hbWVbMTFdID09IGNvZGUgJiYgdnAtPm5hbWVbMTBdID09IHZlcikgeworCQlpZiAodnAtPm5hbWVbOV0gPT0gMykgaW5wID0gKnZwLT52YWwuaW50ZWdlcjsKKwkJZWxzZSBvdXQgPSAqdnAtPnZhbC5pbnRlZ2VyOworCQlmb3VuZCsrOworCSAgICB9CisJICAgIHZwID0gdnAtPm5leHRfdmFyaWFibGU7CisJfQorCWlmIChmb3VuZCkgeworCSAgICBjcCA9IGNzOworCSAgICB3aGlsZSAoY3AtPm5hbWUgJiYgY3AtPmNvZGUgIT0gY29kZSkgY3ArKzsKKwkgICAgaWYgKCFjcC0+Y29kZSkKKwkJc3ByaW50Zihub2NvZGUsICJ0eXBlICVkIiwgY29kZSk7CisJICAgIHByaW50ZigiICAgICAlMTBsdSAlMTBsdSAlc1xuIiwgaW5wLCBvdXQsIGNwLT5uYW1lID8gY3AtPm5hbWUgOiBub2NvZGUpOworCX0KKyAgICB9CisgICAgc25tcF9mcmVlX3ZhcmJpbmQodmIpOworfQorCit2b2lkCitpcHhfc3RhdHMoY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICBvaWQgaXBzeXNzdGF0X29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA0LCAzMSwgMSwgMSB9OworICAgIHNpemVfdCBpcHN5c3N0YXRfbGVuID0gc2l6ZW9mKGlwc3lzc3RhdF9vaWQpIC8gc2l6ZW9mKGlwc3lzc3RhdF9vaWRbMF0pOworICAgIHN0YXRzcHJpbnQoImlwNCIsIHN5c3RlbXN0YXRzLCAxLCBpcHN5c3N0YXRfb2lkLCBpcHN5c3N0YXRfbGVuKTsKKyAgICBzdGF0c3ByaW50KCJpcDYiLCBzeXN0ZW1zdGF0cywgMiwgaXBzeXNzdGF0X29pZCwgaXBzeXNzdGF0X2xlbik7Cit9CisKK3ZvaWQKK2ljbXB4X3N0YXRzKGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgb2lkIGljbXBzdGF0X29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA1LCAyOSwgMSB9OworICAgIHNpemVfdCBpY21wc3RhdF9sZW4gPSBzaXplb2YoaWNtcHN0YXRfb2lkKSAvIHNpemVvZihpY21wc3RhdF9vaWRbMF0pOworICAgIG9pZCBpY21wbXNnX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA1LCAzMCwgMSB9OworICAgIHNpemVfdCBpY21wbXNnX2xlbiA9IHNpemVvZihpY21wbXNnX29pZCkgLyBzaXplb2YoaWNtcG1zZ19vaWRbMF0pOworICAgIHN0YXRzcHJpbnQoImljbXA0IiwgaWNtcHN0YXRzLCAxLCBpY21wc3RhdF9vaWQsIGljbXBzdGF0X2xlbik7CisgICAgcHJoaXN0bygiaWNtcDQiLCBpY21wbXNnX29pZCwgaWNtcG1zZ19sZW4sIDEsIGljbXBjb2Rlcyk7CisgICAgc3RhdHNwcmludCgiaWNtcDYiLCBpY21wc3RhdHMsIDIsIGljbXBzdGF0X29pZCwgaWNtcHN0YXRfbGVuKTsKKyAgICBwcmhpc3RvKCJpY21wNiIsIGljbXBtc2dfb2lkLCBpY21wbXNnX2xlbiwgMiwgaWNtcDZjb2Rlcyk7Cit9CisKKworc3RhdGljIHZvaWQKK3Vua25vd25wcmludCh2b2lkKQoreworICAgIGNoYXIgbGluZVs4MF0sICpjcDsKKyAgICBpbnQgd2lkdGggPSAyNzsKKworICAgIGlmICh2ZmxhZykKKwlzbnByaW50ZihsaW5lLCBzaXplb2YgbGluZSwgIiVzLiIsICIqIik7CisgICAgZWxzZQorCXNucHJpbnRmKGxpbmUsIHNpemVvZiBsaW5lLCAiJS4qcy4iLCB3aWR0aC05LCAiKiIpOworICAgIGNwID0gc3RyY2hyKGxpbmUsICdcMCcpOworICAgIHNucHJpbnRmKGNwLCBsaW5lICsgc2l6ZW9mIGxpbmUgLSBjcCwgdmZsYWcgPyAiJXMiIDogIiUuOHMiLCAiKiIpOworICAgIGlmICh2ZmxhZyAmJiB3aWR0aCA8IHN0cmxlbihsaW5lKSkKKwl3aWR0aCA9IHN0cmxlbihsaW5lKTsKKyAgICBwcmludGYoIiAlLSouKnMiLCB3aWR0aCwgd2lkdGgsIGxpbmUpOworfQorCisvKgorICogUHJldHR5IHByaW50IGFuIEludGVybmV0IGFkZHJlc3MgKG5ldCBhZGRyZXNzICsgcG9ydCkuCisgKiBJZiB0aGUgbmZsYWcgd2FzIHNwZWNpZmllZCwgdXNlIG51bWJlcnMgaW5zdGVhZCBvZiBuYW1lcy4KKyAqLworCit2b2lkCitpbmV0eHByaW50KGludCBwcm90bywgc3RydWN0IHNvY2thZGRyX2luNiBpbjYsIGludCBwb3J0LCBjb25zdCBjaGFyICpuYW1lLCBpbnQgbG9jYWwpCit7CisKKwlpZiAocHJvdG8gPT0gMikKKwkgICAgaW5ldDZwcmludCgodV9jaGFyICopJmluNi5zaW42X2FkZHIuczZfYWRkciwgcG9ydCwgbmFtZSwgbG9jYWwpOworCWVsc2UgaWYgKHByb3RvID09IDEpCisJICAgIGluZXRwcmludCgoc3RydWN0IGluX2FkZHIgKikmaW42LnNpbjZfYWRkci5zNl9hZGRyLCBwb3J0LCBuYW1lLCBsb2NhbCk7CisJZWxzZSBpZiAocHJvdG8gPT0gMCkKKwkgICAgdW5rbm93bnByaW50KCk7CisJZWxzZSBhYm9ydCgpOworfQpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wbmV0c3RhdC9tYWluLmMgYi9hcHBzL3NubXBuZXRzdGF0L21haW4uYwppbmRleCBmYTE5OWVkLi5jYWVlZDgyIDEwMDY0NAotLS0gYS9hcHBzL3NubXBuZXRzdGF0L21haW4uYworKysgYi9hcHBzL3NubXBuZXRzdGF0L21haW4uYwpAQCAtNjEsMTMgKzYxLDEzIEBACiAjaW5jbHVkZSAid2luc3R1Yi5oIgogI2VuZGlmCiAKLWludAlBZmxhZzsJCS8qIHNob3cgYWRkcmVzc2VzIG9mIHByb3RvY29sIGNvbnRyb2wgYmxvY2sgKi8KIGludAlhZmxhZzsJCS8qIHNob3cgYWxsIHNvY2tldHMgKGluY2x1ZGluZyBzZXJ2ZXJzKSAqLwogaW50CWJmbGFnOwkJLyogc2hvdyBieXRlcyBpbnN0ZWFkIG9mIHBhY2tldHMgKi8KIGludAlkZmxhZzsJCS8qIHNob3cgaS9mIGRyb3BwZWQgcGFja2V0cyAqLwogaW50CWdmbGFnOwkJLyogc2hvdyBncm91cCAobXVsdGljYXN0KSByb3V0aW5nIG9yIHN0YXRzICovCiBpbnQJaWZsYWc7CQkvKiBzaG93IGludGVyZmFjZXMgKi8KIGludAlsZmxhZzsJCS8qIHNob3cgcm91dGluZyB0YWJsZSB3aXRoIHVzZSBhbmQgcmVmICovCitpbnQJTGZsYWc7CQkvKiBMZWdhY3kgbWlicyAqLwogaW50CW1mbGFnOwkJLyogc2hvdyBtZW1vcnkgc3RhdHMgKi8KIGludAluZmxhZzsJCS8qIHNob3cgYWRkcmVzc2VzIG51bWVyaWNhbGx5ICovCiBpbnQJb2ZsYWc7CQkvKiBPcGVuL05ldC1CU0Qgc3R5bGUgb2N0ZXQgb3V0cHV0ICovCkBAIC05OSw3ICs5OSw5IEBACiAJc3RyaW5nZnVuCSpwcl9jYmxvY2tzOwkvKiBjb250cm9sIGJsb2NrcyBwcmludGluZyByb3V0aW5lICovCiAJc3RyaW5nZnVuCSpwcl9zdGF0czsJLyogc3RhdGlzdGljcyBwcmludGluZyByb3V0aW5lICovCiAJY29uc3QgY2hhcgkqcHJfbmFtZTsJLyogd2VsbC1rbm93biBuYW1lICovCi19IHByb3RveFtdID0geworfTsKKworc3RydWN0IHByb3RveCBwcm90b3hbXSA9IHsKIAl7IDEsCXRjcHByb3RvcHIsCXRjcF9zdGF0cywJInRjcCIgfSwJCiAJeyAxLAl1ZHBwcm90b3ByLAl1ZHBfc3RhdHMsCSJ1ZHAiIH0sCQogCkBAIC0xMTksNiArMTIxLDE0IEBACiAJeyAwLAkoc3RyaW5nZnVuKikwLAkoc3RyaW5nZnVuKikwLAlOVUxMIH0KIH07CiAKK3N0cnVjdCBwcm90b3ggaXB4cHJvdG94W10gPSB7CisJeyAxLAl0Y3B4cHJvdG9wciwJdGNwX3N0YXRzLAkidGNwIiB9LAkKKwl7IDEsCXVkcHhwcm90b3ByLAl1ZHBfc3RhdHMsCSJ1ZHAiIH0sCQorCXsgMSwJKHN0cmluZ2Z1biopMCwJaXB4X3N0YXRzLAkiaXAiIH0sLyogaXA2cHJvdG9wciBPbWl0dGVkICovCisJeyAxLAkoc3RyaW5nZnVuKikwLAlpY21weF9zdGF0cywJImljbXAiIH0sCisJeyAwLAkoc3RyaW5nZnVuKikwLAkoc3RyaW5nZnVuKikwLAlOVUxMIH0KK307CisKIAkvKiB7aXB4LG5zLGF0YWxrfXByb3RveCBPbWl0dGVkICovCiAKIHN0cnVjdCBwcm90b3ggKnByb3RvcHJvdG94W10gPSB7CkBAIC0xNDAsMTEgKzE1MCw2IEBACiAgICAgY2FzZSAnQyc6CiAgICAgICAgIHdoaWxlICgqb3B0YXJnKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKCpvcHRhcmcrKykgewotCSAgICAvKgljYXNlICdBJzoJCSpCU0Q6ICBkaXNwbGF5IFBDQiBhZGRyZXNzZXMKLQkJCQkJTGludXg6IHByb3RvY29sIGZhbWlseQotCQkJQWZsYWcgPSAxOwotCQkJYnJlYWs7Ci0JICAgICAqLwogCQljYXNlICdhJzoKIAkJCWFmbGFnID0gMTsKIAkJCWJyZWFrOwpAQCAtMTk0LDYgKzE5OSw5IEBACiAJCWNhc2UgJ2knOgogCQkJaWZsYWcgPSAxOwogCQkJYnJlYWs7CisJCWNhc2UgJ0wnOgorCQkJTGZsYWcgPSAxOworCQkJYnJlYWs7CiAJICAgIC8qICBjYXNlICdMJzoJCUZyZWVCU0Q6IERpc3BsYXkgbGlzdGVuIHF1ZXVlIGxlbmd0aHMKIAkJCQkJTmV0QlNEOiAgU3VwcHJlc3MgbGluay1sZXZlbCByb3V0ZXMgKi8KIAkgICAgLyoJY2FzZSAnbCc6CQlPcGVuQlNEOiBXaWRlciBJUHY2IGRpc3BsYXkKQEAgLTM4NSw3ICszOTMsMTAgQEAKIAkJCXJ0X3N0YXRzKCk7CiAJCWVsc2UKICAgICAgICAgICAgICAgKi8KLQkJCXJvdXRlcHIoKTsKKwkJaWYgKExmbGFnIHx8IHJvdXRleHByKGFmKSA9PSAwKSB7CisJCSAgICBpZiAocm91dGU0cHIoYWYpID09IDAgJiYgYWYgPT0gQUZfSU5FVCkgcm91dGVwcigpOworCQkgICAgcm91dGU2cHIoYWYpOworCQl9CiAJCWV4aXQoMCk7CiAJfQogICAgICAvKgpAQCAtNDE2LDIxICs0MjcsMjUgQEAKIAkJZXhpdCgwKTsKIAl9CiAgICAgICovCi0JaWYgKGFmID09IEFGX0lORVQgfHwgYWYgPT0gQUZfVU5TUEVDKSB7CisJc2V0c2VydmVudCgxKTsKKwlpZiAoYWYgPT0gQUZfVU5TUEVDICYmIExmbGFnKSB7CiAJCXNldHByb3RvZW50KDEpOwotCQlzZXRzZXJ2ZW50KDEpOwogCQkvKiB1Z2gsIHRoaXMgaXMgTyhNTikgLi4uIHdoeSBkbyB3ZSBkbyB0aGlzPyAqLwogCQl3aGlsZSAoKHAgPSBnZXRwcm90b2VudCgpKSkgewogCQkJZm9yICh0cCA9IHByb3RveDsgdHAtPnByX25hbWU7IHRwKyspCiAJCQkJaWYgKHN0cmNtcCh0cC0+cHJfbmFtZSwgcC0+cF9uYW1lKSA9PSAwKQotCQkJCQlicmVhazsKLQkJCWlmICh0cC0+cHJfbmFtZSA9PSBOVUxMIHx8IHRwLT5wcl93YW50ZWQgPT0gMCkKLQkJCQljb250aW51ZTsKLQkJCXByaW50cHJvdG8odHAsIHAtPnBfbmFtZSk7CisJCQkJCWlmICh0cC0+cHJfbmFtZSAmJiB0cC0+cHJfd2FudGVkKQorCQkJCQkgICAgcHJpbnRwcm90byh0cCwgcC0+cF9uYW1lKTsKIAkJfQogCQllbmRwcm90b2VudCgpOwogCX0KLQlpZiAoYWYgPT0gQUZfSU5FVDYgfHwgYWYgPT0gQUZfVU5TUEVDKQorCWlmIChhZiA9PSBBRl9VTlNQRUMgJiYgIUxmbGFnKQorCQlmb3IgKHRwID0gaXB4cHJvdG94OyB0cC0+cHJfbmFtZTsgdHArKykKKwkJCXByaW50cHJvdG8odHAsIHRwLT5wcl9uYW1lKTsKKwlpZiAoYWYgPT0gQUZfSU5FVCkKKwkJZm9yICh0cCA9IHByb3RveDsgdHAtPnByX25hbWU7IHRwKyspCisJCQlwcmludHByb3RvKHRwLCB0cC0+cHJfbmFtZSk7CisJaWYgKGFmID09IEFGX0lORVQ2KQogCQlmb3IgKHRwID0gaXA2cHJvdG94OyB0cC0+cHJfbmFtZTsgdHArKykKIAkJCXByaW50cHJvdG8odHAsIHRwLT5wcl9uYW1lKTsKICAgICAvKgpAQCAtNDc3LDEyICs0OTIsNiBAQAogCXJldHVybiAobiAhPSAxID8gInMiIDogIiIpOwogfQogCi1jb25zdCBjaGFyICoKLXBsdXJhbGVzKGludCBuKQotewotCXJldHVybiAobiAhPSAxID8gImVzIiA6ICIiKTsKLX0KLQogLyoKICAqIEZpbmQgdGhlIHByb3RveCBmb3IgdGhlIGdpdmVuICJ3ZWxsLWtub3duIiBuYW1lLgogICovCmRpZmYgLS1naXQgYS9hcHBzL3NubXBuZXRzdGF0L25ldHN0YXQuaCBiL2FwcHMvc25tcG5ldHN0YXQvbmV0c3RhdC5oCmluZGV4IDM1NWM4YjIuLmJhNjFlYjMgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcG5ldHN0YXQvbmV0c3RhdC5oCisrKyBiL2FwcHMvc25tcG5ldHN0YXQvbmV0c3RhdC5oCkBAIC0zOSwxMyArMzksMTMgQEAKIC8qIFdoYXQgaXMgdGhlIG1heCBsZW5ndGggb2YgYSBwb2ludGVyIHByaW50ZWQgd2l0aCAlcCAoaW5jbHVkaW5nIDB4KT8gKi8KICNkZWZpbmUgUExFTgkoTE9OR19CSVQgLyA0ICsgMikKIAotZXh0ZXJuIGludAlBZmxhZzsJCS8qIHNob3cgYWRkcmVzc2VzIG9mIHByb3RvY29sIGNvbnRyb2wgYmxvY2sgKi8KIGV4dGVybiBpbnQJYWZsYWc7CQkvKiBzaG93IGFsbCBzb2NrZXRzIChpbmNsdWRpbmcgc2VydmVycykgKi8KIGV4dGVybiBpbnQJYmZsYWc7CQkvKiBzaG93IGJ5dGVzIGluc3RlYWQgb2YgcGFja2V0cyAqLwogZXh0ZXJuIGludAlkZmxhZzsJCS8qIHNob3cgaS9mIGRyb3BwZWQgcGFja2V0cyAqLwogZXh0ZXJuIGludAlnZmxhZzsJCS8qIHNob3cgZ3JvdXAgKG11bHRpY2FzdCkgcm91dGluZyBvciBzdGF0cyAqLwogZXh0ZXJuIGludAlpZmxhZzsJCS8qIHNob3cgaW50ZXJmYWNlcyAqLwogZXh0ZXJuIGludAlsZmxhZzsJCS8qIHNob3cgcm91dGluZyB0YWJsZSB3aXRoIHVzZSBhbmQgcmVmICovCitleHRlcm4gaW50CUxmbGFnOwkJLyogTGVnYWN5IG1pYnMgKi8KIGV4dGVybiBpbnQJbWZsYWc7CQkvKiBzaG93IG1lbW9yeSBzdGF0cyAqLwogZXh0ZXJuIGludAluZmxhZzsJCS8qIHNob3cgYWRkcmVzc2VzIG51bWVyaWNhbGx5ICovCiBleHRlcm4gaW50CW9mbGFnOwkJLyogT3Blbi9OZXQtQlNEIHN0eWxlIG9jdGV0IG91dHB1dCAqLwpAQCAtNjcsNyArNjcsNiBAQAogZXh0ZXJuCWNoYXIgKl9fcHJvZ25hbWU7IC8qIHByb2dyYW0gbmFtZSwgZnJvbSBjcnQwLm8gKi8KIAogY29uc3QgY2hhcgkqcGx1cmFsKGludCk7Ci1jb25zdCBjaGFyCSpwbHVyYWxlcyhpbnQpOwogCiB2b2lkCXRjcHByb3RvcHIoY29uc3QgY2hhciAqKTsKIHZvaWQJdWRwcHJvdG9wcihjb25zdCBjaGFyICopOwpAQCAtODEsMTUgKzgwLDI2IEBACiB2b2lkCWlwNl9zdGF0cyggIGNvbnN0IGNoYXIgKik7CiB2b2lkCWljbXA2X3N0YXRzKGNvbnN0IGNoYXIgKik7CiAKK3ZvaWQJdGNweHByb3RvcHIoY29uc3QgY2hhciAqKTsKK3ZvaWQJdWRweHByb3RvcHIoY29uc3QgY2hhciAqKTsKK3ZvaWQJbGlzdGVueHByb3RvcHIoY29uc3QgY2hhciAqKTsKK3ZvaWQJaXB4X3N0YXRzKGNvbnN0IGNoYXIgKik7Cit2b2lkCWljbXB4X3N0YXRzKGNvbnN0IGNoYXIgKik7CisKIHZvaWQJcHJfcnRoZHIoaW50KTsKIHZvaWQJcHJfZW5jYXBoZHIodm9pZCk7CiB2b2lkCXByX2ZhbWlseShpbnQpOwogdm9pZAlydF9zdGF0cyh2b2lkKTsKIAordm9pZCAgICBnZXRfaWZuYW1lKGNoYXIgKiwgaW50KTsKIGNoYXIJKnJvdXRlbmFtZShpbl9hZGRyX3QpOwogY2hhcgkqbmV0bmFtZShpbl9hZGRyX3QsIGluX2FkZHJfdCk7CiBjaGFyCSpuc19wcmludChzdHJ1Y3Qgc29ja2FkZHIgKik7CiB2b2lkCXJvdXRlcHIodm9pZCk7CitpbnQgICAgIHJvdXRlNHByKGludCk7CitpbnQgICAgIHJvdXRlNnByKGludCk7CitpbnQgICAgIHJvdXRleHByKGludCk7CiAKIHZvaWQJaW50cHIoaW50KTsKLQordm9pZAlpbmV0cHJpbnQoc3RydWN0IGluX2FkZHIgKiwgaW50LCBjb25zdCBjaGFyICosIGludCk7Cit2b2lkCWluZXQ2cHJpbnQodW5zaWduZWQgY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50KTsKZGlmZiAtLWdpdCBhL2FwcHMvc25tcG5ldHN0YXQvcm91dGUuYyBiL2FwcHMvc25tcG5ldHN0YXQvcm91dGUuYwppbmRleCA5OGE5YzBjLi41MGU4NWJhIDEwMDY0NAotLS0gYS9hcHBzL3NubXBuZXRzdGF0L3JvdXRlLmMKKysrIGIvYXBwcy9zbm1wbmV0c3RhdC9yb3V0ZS5jCkBAIC04MCwxMyArODAsMTMgQEAKICNkZWZpbmUgU0VUX0FMTCAgMHgxZgogCiBzdHJ1Y3Qgcm91dGVfZW50cnkgewotICAgIG9pZCAgICAgICAgICAgICBpbnN0YW5jZVs0XTsKICAgICBpbl9hZGRyX3QgICAgICAgZGVzdGluYXRpb247CiAgICAgaW5fYWRkcl90ICAgICAgIG1hc2s7CiAgICAgaW5fYWRkcl90ICAgICAgIGdhdGV3YXk7CiAgICAgaW50ICAgICAgICAgICAgIGlmTnVtYmVyOwogICAgIGludCAgICAgICAgICAgICB0eXBlOwogICAgIGludCAgICAgICAgICAgICBwcm90bzsKKyAgICBpbnQgICAgICAgICAgICAgYWY7CiAgICAgaW50ICAgICAgICAgICAgIHNldF9iaXRzOwogICAgIGNoYXIgICAgICAgICAgICBpZm5hbWVbNjRdOwogfTsKQEAgLTExMCw3ICsxMTAsNyBAQAogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyPU5VTEwsICp2cDsKICAgICBjaGFyICAqY3A7CiAgICAgCi0gICAgcHJpbnRmKCJSb3V0aW5nIHRhYmxlc1xuIik7CisgICAgcHJpbnRmKCJSb3V0aW5nIHRhYmxlcyAoaXBSb3V0ZVRhYmxlKVxuIik7CiAgICAgcHJfcnRoZHIoQUZfSU5FVCk7CiAKICNkZWZpbmUgQUREX1JUVkFSKCB4ICkgcnRjb2xfb2lkWyBydGNvbF9sZW4tMSBdID0geDsgXApAQCAtMTMyLDYgKzEzMiwxMCBAQAogICAgICAgICBpZiAoIHNubXBfb2lkX2NvbXBhcmUoIHJ0Y29sX29pZCwgcnRjb2xfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhci0+bmFtZSwgcnRjb2xfbGVuKSAhPSAwICkKICAgICAgICAgICAgIGJyZWFrOyAgICAvKiBFbmQgb2YgVGFibGUgKi8KKwlpZiAodmFyLT50eXBlID09IFNOTVBfTk9TVUNIT0JKRUNUIHx8CisgICAgICAgICAgICAgICAgdmFyLT50eXBlID09IFNOTVBfTk9TVUNISU5TVEFOQ0UgfHwKKyAgICAgICAgICAgICAgICB2YXItPnR5cGUgPT0gU05NUF9FTkRPRk1JQlZJRVcpCisJICAgIGJyZWFrOwogICAgICAgICBtZW1zZXQoICZyb3V0ZSwgMCwgc2l6ZW9mKCBzdHJ1Y3Qgcm91dGVfZW50cnkgKSk7CiAgICAgICAgIC8qIEV4dHJhY3QgaXBSb3V0ZURlc3QgaW5kZXggdmFsdWUgKi8KICAgICAgICAgY3AgPSB0bXBBZGRyLmRhdGE7CkBAIC0xNzQsNiArMTc4LDEwNCBAQAogfQogCiAKK2ludAorcm91dGU0cHIoaW50IGFmKQoreworICAgIHN0cnVjdCByb3V0ZV9lbnRyeSAgcm91dGUsICpycCA9ICZyb3V0ZTsKKyAgICBvaWQgICAgcnRjb2xfb2lkW10gID0geyAxLDMsNiwxLDIsMSw0LDI0LDQsMSwwIH07IC8qIGlwQ2lkclJvdXRlRW50cnkgKi8KKyAgICBzaXplX3QgcnRjb2xfbGVuICAgID0gT0lEX0xFTkdUSCggcnRjb2xfb2lkICk7CisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXIgPSBOVUxMLCAqdnA7CisgICAgdW5pb24geworICAgICAgICBpbl9hZGRyX3QgYWRkcjsKKyAgICAgICAgdW5zaWduZWQgY2hhciBkYXRhWzRdOworICAgIH0gdG1wQWRkcjsKKyAgICBpbnQgcHJpbnRlZCA9IDA7CisgICAgaW50IGhkcl9hZiA9IEFGX1VOU1BFQzsKKworICAgIGlmIChhZiAhPSBBRl9VTlNQRUMgJiYgYWYgIT0gQUZfSU5FVCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyNkZWZpbmUgQUREX1JUVkFSKCB4ICkgcnRjb2xfb2lkWyBydGNvbF9sZW4tMSBdID0geDsgXAorICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoICZ2YXIsIHJ0Y29sX29pZCwgcnRjb2xfbGVuLCBBU05fTlVMTCwgTlVMTCwgIDApCisgICAgQUREX1JUVkFSKCA1ICk7ICAgICAgICAgICAgICAgICAvKiBpcENpZHJSb3V0ZUlmSW5kZXggKi8KKyAgICBBRERfUlRWQVIoIDYgKTsgICAgICAgICAgICAgICAgIC8qIGlwQ2lkclJvdXRlVHlwZSAgICAqLworICAgIEFERF9SVFZBUiggNyApOyAgICAgICAgICAgICAgICAgLyogaXBDaWRyUm91dGVQcm90byAgICovCisjdW5kZWYgQUREX1JUVkFSCisKKyAgICAvKgorICAgICAqIE5vdyB3YWxrIHRoZSBpcENpZHJSb3V0ZVRhYmxlLCByZXBvcnRpbmcgdGhlIHZhcmlvdXMgcm91dGUgZW50cmllcworICAgICAqLworICAgIHdoaWxlICggMSApIHsKKyAgICAgICAgb2lkICpvcDsKKyAgICAgICAgdW5zaWduZWQgY2hhciAqY3A7CisKKyAgICAgICAgaWYgKG5ldHNubXBfcXVlcnlfZ2V0bmV4dCggdmFyLCBzcyApICE9IFNOTVBfRVJSX05PRVJST1IpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgcnRjb2xfb2lkWyBydGNvbF9sZW4tMSBdID0gNTsgICAgICAgIC8qIGlwUm91dGVJZkluZGV4ICovCisgICAgICAgIGlmICggc25tcF9vaWRfY29tcGFyZSggcnRjb2xfb2lkLCBydGNvbF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyLT5uYW1lLCBydGNvbF9sZW4pICE9IDAgKQorICAgICAgICAgICAgYnJlYWs7ICAgIC8qIEVuZCBvZiBUYWJsZSAqLworICAgICAgICBpZiAodmFyLT50eXBlID09IFNOTVBfTk9TVUNIT0JKRUNUIHx8CisgICAgICAgICAgICAgICAgdmFyLT50eXBlID09IFNOTVBfTk9TVUNISU5TVEFOQ0UgfHwKKyAgICAgICAgICAgICAgICB2YXItPnR5cGUgPT0gU05NUF9FTkRPRk1JQlZJRVcpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgbWVtc2V0KCAmcm91dGUsIDAsIHNpemVvZiggc3RydWN0IHJvdXRlX2VudHJ5ICkpOworCXJwLT5hZiA9IEFGX0lORVQ7CisJb3AgPSB2YXItPm5hbWUrcnRjb2xfbGVuOworICAgICAgICBjcCA9IHRtcEFkZHIuZGF0YTsKKyAgICAgICAgY3BbMF0gPSAqb3ArKyAmIDB4ZmY7CisgICAgICAgIGNwWzFdID0gKm9wKysgJiAweGZmOworICAgICAgICBjcFsyXSA9ICpvcCsrICYgMHhmZjsKKyAgICAgICAgY3BbM10gPSAqb3ArKyAmIDB4ZmY7CisgICAgICAgIHJwLT5kZXN0aW5hdGlvbiA9IHRtcEFkZHIuYWRkcjsKKyAgICAgICAgY3AgPSB0bXBBZGRyLmRhdGE7CisgICAgICAgIGNwWzBdID0gKm9wKysgJiAweGZmOworICAgICAgICBjcFsxXSA9ICpvcCsrICYgMHhmZjsKKyAgICAgICAgY3BbMl0gPSAqb3ArKyAmIDB4ZmY7CisgICAgICAgIGNwWzNdID0gKm9wKysgJiAweGZmOworICAgICAgICBycC0+bWFzayA9IHRtcEFkZHIuYWRkcjsKKwlvcCsrOyAvKiBpcENpZHJSb3V0ZVRvcyAqLworICAgICAgICBjcCA9IHRtcEFkZHIuZGF0YTsKKyAgICAgICAgY3BbMF0gPSAqb3ArKyAmIDB4ZmY7CisgICAgICAgIGNwWzFdID0gKm9wKysgJiAweGZmOworICAgICAgICBjcFsyXSA9ICpvcCsrICYgMHhmZjsKKyAgICAgICAgY3BbM10gPSAqb3ArKyAmIDB4ZmY7CisgICAgICAgIHJwLT5nYXRld2F5ID0gdG1wQWRkci5hZGRyOworCXJwLT5zZXRfYml0cyA9IFNFVF9NQVNLIHwgU0VUX0dXQVk7CisKKyAgICAgICAgZm9yICggdnA9dmFyOyB2cDsgdnA9dnAtPm5leHRfdmFyaWFibGUgKSB7CisgICAgICAgICAgICBzd2l0Y2ggKCB2cC0+bmFtZVsgcnRjb2xfbGVuIC0gMSBdICkgeworICAgICAgICAgICAgY2FzZSA1OiAgICAgLyogaXBDaWRyUm91dGVJZkluZGV4ICovCisgICAgICAgICAgICAgICAgcnAtPmlmTnVtYmVyICA9ICp2cC0+dmFsLmludGVnZXI7CisgICAgICAgICAgICAgICAgcnAtPnNldF9iaXRzIHw9IFNFVF9JRk5POworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSA2OiAgICAgLyogaXBDaWRyUm91dGVUeXBlICAgICovCisgICAgICAgICAgICAgICAgcnAtPnR5cGUgICAgICA9ICp2cC0+dmFsLmludGVnZXI7CisgICAgICAgICAgICAgICAgcnAtPnNldF9iaXRzIHw9IFNFVF9UWVBFOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSA3OiAgICAgLyogaXBDaWRyUm91dGVQcm90byAgICovCisgICAgICAgICAgICAgICAgcnAtPnByb3RvICAgICA9ICp2cC0+dmFsLmludGVnZXI7CisgICAgICAgICAgICAgICAgcnAtPnNldF9iaXRzIHw9IFNFVF9QUlRPOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChycC0+c2V0X2JpdHMgIT0gU0VUX0FMTCkgeworICAgICAgICAgICAgY29udGludWU7ICAgLyogSW5jb21wbGV0ZSBxdWVyeSAqLworICAgICAgICB9CisKKyAgICAgICAgaWYgKGhkcl9hZiAhPSBycC0+YWYpIHsKKyAgICAgICAgICAgIGlmIChoZHJfYWYgIT0gQUZfVU5TUEVDKQorICAgICAgICAgICAgICAgIHByaW50ZigiXG4iKTsKKyAgICAgICAgICAgIGhkcl9hZiA9IHJwLT5hZjsKKwkgICAgcHJpbnRmKCJSb3V0aW5nIHRhYmxlcyAoaXBDaWRyUm91dGVUYWJsZSlcbiIpOworICAgICAgICAgICAgcHJfcnRoZHIoaGRyX2FmKTsKKyAgICAgICAgfQorICAgICAgICBwX3J0bm9kZSggcnAgKTsKKyAgICAgICAgcHJpbnRlZCsrOworICAgIH0KKyAgICByZXR1cm4gcHJpbnRlZDsKK30KKwogCiBzdHJ1Y3QgaWZsaXN0IHsKICAgICBpbnQgICAgICAgICAgICAgaW5kZXg7CkBAIC0xODYsNiArMjg4LDggQEAKIHsKICAgICBvaWQgICAgaWZkZXNjcl9vaWRbXSAgPSB7IDEsMyw2LDEsMiwxLDIsMiwxLDIsMCB9OwogICAgIHNpemVfdCBpZmRlc2NyX2xlbiAgICA9IE9JRF9MRU5HVEgoIGlmZGVzY3Jfb2lkICk7CisgICAgb2lkICAgIGlmeGNvbF9vaWRbXSA9IHsgMSwzLDYsMSwyLDEsMzEsMSwxLDEsMSwwIH07CisgICAgc2l6ZV90IGlmeGNvbF9sZW4gICA9IE9JRF9MRU5HVEgoIGlmeGNvbF9vaWQgKTsKICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhciA9IE5VTEw7CiAgICAgc3RydWN0IGlmbGlzdCAgICAgICAgICppcDsKIApAQCAtMjA0LDYgKzMwOCwxOCBAQAogICAgIElmbGlzdCA9IGlwOwogICAgIGlwLT5pbmRleCA9IGlmSW5kZXg7CiAKKyAgICBpZnhjb2xfb2lkWyBpZnhjb2xfbGVuLTEgXSA9IGlmSW5kZXg7CisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSggJnZhciwgaWZ4Y29sX29pZCwgaWZ4Y29sX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU05fTlVMTCwgTlVMTCwgIDApOworICAgIGlmIChuZXRzbm1wX3F1ZXJ5X2dldCggdmFyLCBzcyApID09IFNOTVBfRVJSX05PRVJST1IpIHsKKyAgICAgICAgaWYgKHZhci0+dmFsX2xlbiA+PSBzaXplb2YoaXAtPm5hbWUpKQorICAgICAgICAgICAgdmFyLT52YWxfbGVuICA9IHNpemVvZihpcC0+bmFtZSkgLSAxOworICAgICAgICBtZW1tb3ZlKGlwLT5uYW1lLCB2YXItPnZhbC5zdHJpbmcsIHZhci0+dmFsX2xlbik7CisgICAgICAgIGlwLT5uYW1lW3Zhci0+dmFsX2xlbl0gPSAnXDAnOworCXN0cmNweShuYW1lLCBpcC0+bmFtZSk7CisJcmV0dXJuOworICAgIH0KKwogICAgIGlmZGVzY3Jfb2lkWyBpZmRlc2NyX2xlbi0xIF0gPSBpZkluZGV4OwogICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoICZ2YXIsIGlmZGVzY3Jfb2lkLCBpZmRlc2NyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU05fTlVMTCwgTlVMTCwgIDApOwpAQCAtMjE4LDUwICszMzQsNiBAQAogICAgIHN0cmNweShuYW1lLCBpcC0+bmFtZSk7CiB9CiAKLS8qCi0gKiBQcmludCBhZGRyZXNzIGZhbWlseSBoZWFkZXIgYmVmb3JlIGEgc2VjdGlvbiBvZiB0aGUgcm91dGluZyB0YWJsZS4KLSAqLwotdm9pZAotcHJfZmFtaWx5KGludCBhZikKLXsKLQljb25zdCBjaGFyICphZm5hbWU7Ci0KLQlzd2l0Y2ggKGFmKSB7Ci0JY2FzZSBBRl9JTkVUOgotCQlhZm5hbWUgPSAiSW50ZXJuZXQiOwotCQlicmVhazsKLSNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2Ci0JY2FzZSBBRl9JTkVUNjoKLQkJYWZuYW1lID0gIkludGVybmV0NiI7Ci0JCWJyZWFrOwotI2VuZGlmCi0gICAgLyoKLQljYXNlIEFGX05TOgotCQlhZm5hbWUgPSAiWE5TIjsKLQkJYnJlYWs7Ci0JY2FzZSBBRl9JUFg6Ci0JCWFmbmFtZSA9ICJJUFgiOwotCQlicmVhazsKLQljYXNlIEFGX0NDSVRUOgotCQlhZm5hbWUgPSAiWC4yNSI7Ci0JCWJyZWFrOwotCWNhc2UgUEZfS0VZOgotCQlhZm5hbWUgPSAiRW5jYXAiOwotCQlicmVhazsKLQljYXNlIEFGX0FQUExFVEFMSzoKLQkJYWZuYW1lID0gIkFwcGxlVGFsayI7Ci0JCWJyZWFrOwotICAgICAqLwotCWRlZmF1bHQ6Ci0JCWFmbmFtZSA9IE5VTEw7Ci0JCWJyZWFrOwotCX0KLQlpZiAoYWZuYW1lKQotCQlwcmludGYoIlxuJXM6XG4iLCBhZm5hbWUpOwotCWVsc2UKLQkJcHJpbnRmKCJcblByb3RvY29sIEZhbWlseSAlZDpcbiIsIGFmKTsKLX0KLQogLyogY29sdW1uIHdpZHRoczsgZWFjaCBmb2xsb3dlZCBieSBvbmUgc3BhY2UgKi8KICNpZm5kZWYgTkVUU05NUF9FTkFCTEVfSVBWNgogI2RlZmluZQlXSURfRFNUKGFmKQkyNgkvKiB3aWR0aCBvZiBkZXN0aW5hdGlvbiBjb2x1bW4gKi8KQEAgLTMzMSw3ICs0MDMsNyBAQAogCX0KIAljcCA9IE5VTEw7CiAJaWYgKCFuZmxhZykgewotCQlocCA9IGdldGhvc3RieWFkZHIoKGNoYXIgKikmaW4sIHNpemVvZiAoc3RydWN0IGluX2FkZHIpLAorCQlocCA9IG5ldHNubXBfZ2V0aG9zdGJ5YWRkcigoY2hhciAqKSZpbiwgc2l6ZW9mIChzdHJ1Y3QgaW5fYWRkciksCiAJCSAgICBBRl9JTkVUKTsKIAkJaWYgKGhwKSB7CiAJCQlpZiAoKGNwID0gc3RyY2hyKGhwLT5oX25hbWUsICcuJykpICYmCkBAIC00OTksNyArNTcxLDYgQEAKICAgICBzdGF0aWMgY2hhciBmbGFnX2J1ZlsxMF07CiAgICAgY2hhciAgKmNwID0gZmxhZ19idWY7CiAKLSAgICBtZW1zZXQoIGZsYWdfYnVmLCAwLCBzaXplb2YoZmxhZ19idWYpKTsKICAgICAqY3ArKyA9ICc8JzsKICAgICAqY3ArKyA9ICdVJzsgICAvKiByb3V0ZSBpcyBpbiB1c2UgKi8KICAgICBpZiAocnAtPm1hc2sgID09IDB4ZmZmZmZmZmYpCkBAIC01MDksNiArNTgwLDcgQEAKICAgICBpZiAocnAtPnR5cGUgID09IDQpCiAgICAgICAgICpjcCsrID0gJ0cnOyAgIC8qIHJlbW90ZSBkZXN0aW5hdGlvbi9uZXQgKi8KICAgICAqY3ArKyA9ICc+JzsKKyAgICAqY3AgPSAwOwogICAgIHJldHVybiBmbGFnX2J1ZjsKIH0KIApkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wbmV0c3RhdC9yb3V0ZXguYyBiL2FwcHMvc25tcG5ldHN0YXQvcm91dGV4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjcxNjNjNAotLS0gL2Rldi9udWxsCisrKyBiL2FwcHMvc25tcG5ldHN0YXQvcm91dGV4LmMKQEAgLTAsMCArMSw1NTggQEAKKy8qICAgICAgICAkT3BlbkJTRDogcm91dGUuYyx2IDEuNjYgMjAwNC8xMS8xNyAwMTo0NzoyMCBpdG9qdW4gRXhwICQgICAgICAgICovCisvKiAgICAgICAgJE5ldEJTRDogcm91dGUuYyx2IDEuMTUgMTk5Ni8wNS8wNyAwMjo1NTowNiB0aG9ycGVqIEV4cCAkICAgICAgICAqLworCisvKgorICogQ29weXJpZ2h0IChjKSAxOTgzLCAxOTg4LCAxOTkzCisgKiAgICAgICAgVGhlIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBSRUdFTlRTIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgUkVHRU5UUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpZmRlZiAgSU5IRVJJVEVEX0NPREUKKyNpZm5kZWYgbGludAorI2lmIDAKK3N0YXRpYyBjaGFyIHNjY3NpZFtdID0gImZyb206IEAoIylyb3V0ZS5jICAgICAgICA4LjMgKEJlcmtlbGV5KSAzLzkvOTQiOworI2Vsc2UKK3N0YXRpYyBjaGFyICpyY3NpZCA9ICIkT3BlbkJTRDogcm91dGUuYyx2IDEuNjYgMjAwNC8xMS8xNyAwMTo0NzoyMCBpdG9qdW4gRXhwICQiOworI2VuZGlmCisjZW5kaWYgLyogbm90IGxpbnQgKi8KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisKKyNpZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKworI2lmIEhBVkVfTkVUSU5FVF9JTl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2VuZGlmCisjaWYgSEFWRV9BUlBBX0lORVRfSAorI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorCisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVREQl9ICisjaW5jbHVkZSA8bmV0ZGIuaD4KKyNlbmRpZgorCisjaWZuZGVmIElORVQKKyNkZWZpbmUgSU5FVAorI2VuZGlmCisKKyNpbmNsdWRlICJtYWluLmgiCisjaW5jbHVkZSAibmV0c3RhdC5oIgorI2lmIEhBVkVfV0lOU09DS19ICisjaW5jbHVkZSAid2luc3R1Yi5oIgorI2VuZGlmCisKKy8qIGluZXRDaWRyUm91dGVUYWJsZSAqLworI2RlZmluZSBTRVRfSUZOTyAweDAxCisjZGVmaW5lIFNFVF9UWVBFIDB4MDIKKyNkZWZpbmUgU0VUX1BSVE8gMHgwNAorI2RlZmluZSBTRVRfQUdFICAweDA4CisjZGVmaW5lIFNFVF9BUyAgIDB4MTAKKyNkZWZpbmUgU0VUX01FVDEgMHgyMAorI2RlZmluZSBTRVRfQUxMICAweDNmCisKKy8qIGlwNlJvdXRlVGFibGUgKi8KKyNkZWZpbmUgU0VUX0hPUCAgICAgMHg0MAorI2RlZmluZSBTRVRfSU5WQUxJRCAweDgwCisjZGVmaW5lIFNFVF9BTEw2ICAgIDB4NjcKKy8qIG5vdCBpbnZhbGlkLCBhbmQgb25seSB0aGUgY29sdW1ucyB0aGF0IHdlIGZldGNoICovCisKK3N0cnVjdCByb3V0ZV9lbnRyeSB7CisgICAgaW50ICAgICAgICAgICAgIGFmOworICAgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIGRzdDsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBob3A7CisgICAgaW50ICAgICAgICAgICAgIG1hc2s7CisgICAgaW50ICAgICAgICAgICAgIGlmTnVtYmVyOworICAgIGludCAgICAgICAgICAgICB0eXBlOworICAgIGludCAgICAgICAgICAgICBwcm90bzsKKyAgICBpbnQgICAgICAgICAgICAgYWdlOworICAgIGludCAgICAgICAgICAgICBhczsKKyAgICBpbnQgICAgICAgICAgICAgbWV0cmljMTsKKyAgICBpbnQgICAgICAgICAgICAgc2V0X2JpdHM7CisgICAgY2hhciAgICAgICAgICAgIGlmbmFtZVs2NF07Cit9OworCisKK3N0YXRpYyB2b2lkIHByX3J0eGhkcihpbnQgYWYsIGNvbnN0IGNoYXIgKnRhYmxlKTsKK3N0YXRpYyB2b2lkIHBfcnRub2RleCggc3RydWN0IHJvdXRlX2VudHJ5ICpycCApOworCisvKgorICogUHJpbnQgcm91dGluZyB0YWJsZXMuCisgKi8KK2ludAorcm91dGV4cHIoaW50IGFmKQoreworICAgIHN0cnVjdCByb3V0ZV9lbnRyeSAgcm91dGUsICpycCA9ICZyb3V0ZTsKKyAgICBvaWQgICAgcnRjb2xfb2lkW10gID0geyAxLDMsNiwxLDIsMSw0LDI0LDcsMSwwIH07IC8qIGluZXRDaWRyUm91dGVFbnRyeSAqLworICAgIHNpemVfdCBydGNvbF9sZW4gICAgPSBPSURfTEVOR1RIKCBydGNvbF9vaWQgKTsKKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhciA9IE5VTEwsICp2cDsKKyAgICBpbnQgaGRyX2FmID0gQUZfVU5TUEVDOworICAgIGludCBwcmludGVkID0gMDsKKworI2RlZmluZSBBRERfUlRWQVIoIHggKSBydGNvbF9vaWRbIHJ0Y29sX2xlbi0xIF0gPSB4OyBcCisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSggJnZhciwgcnRjb2xfb2lkLCBydGNvbF9sZW4sIEFTTl9OVUxMLCBOVUxMLCAgMCkKKyAgICBBRERfUlRWQVIoIDcgKTsgICAgICAgICAgICAgICAgIC8qIGluZXRDaWRyUm91dGVJZkluZGV4ICovCisgICAgQUREX1JUVkFSKCA4ICk7ICAgICAgICAgICAgICAgICAvKiBpbmV0Q2lkclJvdXRlVHlwZSAgICAqLworICAgIEFERF9SVFZBUiggOSApOyAgICAgICAgICAgICAgICAgLyogaW5ldENpZHJSb3V0ZVByb3RvICAgKi8KKyAgICBBRERfUlRWQVIoIDEwICk7ICAgICAgICAgICAgICAgIC8qIGluZXRDaWRyUm91dGVBZ2UgICAqLworICAgIEFERF9SVFZBUiggMTEgKTsgICAgICAgICAgICAgICAgLyogaW5ldENpZHJSb3V0ZU5leHRIb3BBUyAgICovCisgICAgQUREX1JUVkFSKCAxMiApOyAgICAgICAgICAgICAgICAvKiBpbmV0Q2lkclJvdXRlTWV0cmljMSAgICovCisjdW5kZWYgQUREX1JUVkFSCisKKyAgICAvKgorICAgICAqIE5vdyB3YWxrIHRoZSBpbmV0Q2lkclJvdXRlVGFibGUsIHJlcG9ydGluZyB0aGUgdmFyaW91cyByb3V0ZSBlbnRyaWVzCisgICAgICovCisgICAgd2hpbGUgKCAxICkgeworICAgICAgICBvaWQgKm9wOworICAgICAgICB1bnNpZ25lZCBjaGFyICpjcDsKKyAgICAgICAgaW50IGk7CisKKyAgICAgICAgaWYgKG5ldHNubXBfcXVlcnlfZ2V0bmV4dCggdmFyLCBzcyApICE9IFNOTVBfRVJSX05PRVJST1IpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgcnRjb2xfb2lkWyBydGNvbF9sZW4tMSBdID0gNzsgICAgICAgIC8qIGlmUm91dGVJZkluZGV4ICovCisgICAgICAgIGlmICggc25tcF9vaWRfY29tcGFyZSggcnRjb2xfb2lkLCBydGNvbF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyLT5uYW1lLCBydGNvbF9sZW4pICE9IDAgKQorICAgICAgICAgICAgYnJlYWs7ICAgIC8qIEVuZCBvZiBUYWJsZSAqLworICAgICAgICBpZiAodmFyLT50eXBlID09IFNOTVBfTk9TVUNIT0JKRUNUIHx8CisgICAgICAgICAgICAgICAgdmFyLT50eXBlID09IFNOTVBfTk9TVUNISU5TVEFOQ0UgfHwKKyAgICAgICAgICAgICAgICB2YXItPnR5cGUgPT0gU05NUF9FTkRPRk1JQlZJRVcpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgbWVtc2V0KCAmcm91dGUsIDAsIHNpemVvZiggc3RydWN0IHJvdXRlX2VudHJ5ICkpOworICAgICAgICAvKiBFeHRyYWN0IGluZXRDaWRyUm91dGVEZXN0LCBpbmV0Q2lkclJvdXRlUGZ4TGVuLAorICAgICAgICAgKiBpbmV0Q2lkclJvdXRlTmV4dEhvcCBmcm9tIGluZGV4ICovCisgICAgICAgIHN3aXRjaCAodmFyLT5uYW1lW3J0Y29sX2xlbl0pIHsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgeyAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqc2luID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSZyb3V0ZS5kc3Q7CisgICAgICAgICAgICAgICAgaW50IGxlbjsKKyAgICAgICAgICAgICAgICByb3V0ZS5hZiA9IEFGX0lORVQ7CisgICAgICAgICAgICAgICAgc2luLT5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKKyAgICAgICAgICAgICAgICBvcCA9IHZhci0+bmFtZStydGNvbF9sZW4rMTsKKyAgICAgICAgICAgICAgICBsZW4gPSAqb3ArKzsKKyAgICAgICAgICAgICAgICBjcCA9ICh1bnNpZ25lZCBjaGFyICopJnNpbi0+c2luX2FkZHI7CisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSAqY3ArKyA9ICpvcCsrOworICAgICAgICAgICAgICAgIHJvdXRlLm1hc2sgPSAqb3ArKzsKKyAgICAgICAgICAgICAgICBvcCArPSAqb3ArMTsKKyAgICAgICAgICAgICAgICBvcCsrOyAvKiBhZGRyVHlwZSAqLworICAgICAgICAgICAgICAgIG9wKys7IC8qIGFkZHJMZW4gKi8KKyAgICAgICAgICAgICAgICBzaW4gPSAoc3RydWN0IHNvY2thZGRyX2luICopJnJvdXRlLmhvcDsKKyAgICAgICAgICAgICAgICBzaW4tPnNpbl9mYW1pbHkgPSBBRl9JTkVUOworICAgICAgICAgICAgICAgIGNwID0gKHVuc2lnbmVkIGNoYXIgKikmc2luLT5zaW5fYWRkcjsKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspICpjcCsrID0gKm9wKys7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIHsgICBzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKikmcm91dGUuZHN0OworICAgICAgICAgICAgICAgIGludCBsZW47CisgICAgICAgICAgICAgICAgcm91dGUuYWYgPSBBRl9JTkVUNjsKKyAgICAgICAgICAgICAgICBzaW42LT5zaW42X2ZhbWlseSA9IEFGX0lORVQ2OworICAgICAgICAgICAgICAgIG9wID0gdmFyLT5uYW1lK3J0Y29sX2xlbisxOworICAgICAgICAgICAgICAgIGxlbiA9ICpvcCsrOworICAgICAgICAgICAgICAgIGNwID0gKHVuc2lnbmVkIGNoYXIgKikmc2luNi0+c2luNl9hZGRyOworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgKmNwKysgPSAqb3ArKzsKKyAgICAgICAgICAgICAgICByb3V0ZS5tYXNrID0gKm9wKys7CisgICAgICAgICAgICAgICAgb3AgKz0gKm9wKzE7CisgICAgICAgICAgICAgICAgb3ArKzsgLyogYWRkclR5cGUgKi8KKyAgICAgICAgICAgICAgICBvcCsrOyAvKiBhZGRyTGVuICovCisgICAgICAgICAgICAgICAgc2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopJnJvdXRlLmhvcDsKKyAgICAgICAgICAgICAgICBzaW42LT5zaW42X2ZhbWlseSA9IEFGX0lORVQ2OworICAgICAgICAgICAgICAgIGNwID0gKHVuc2lnbmVkIGNoYXIgKikmc2luNi0+c2luNl9hZGRyOworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgKmNwKysgPSAqb3ArKzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQmFkIGFkZHJlc3MgdHlwZTogJWRcbiIsIChpbnQpdmFyLT5uYW1lW3J0Y29sX2xlbl0pOworICAgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgfQorICAgICAgICAvKiBFeHRyYWN0IGlwUm91dGVEZXN0IGluZGV4IHZhbHVlICovCisKKyAgICAgICAgZm9yICggdnA9dmFyOyB2cDsgdnA9dnAtPm5leHRfdmFyaWFibGUgKSB7CisgICAgICAgICAgICBzd2l0Y2ggKCB2cC0+bmFtZVsgcnRjb2xfbGVuIC0gMSBdICkgeworICAgICAgICAgICAgY2FzZSA3OiAgICAgLyogaW5ldENpZHJSb3V0ZUlmSW5kZXggKi8KKyAgICAgICAgICAgICAgICBycC0+aWZOdW1iZXIgID0gKnZwLT52YWwuaW50ZWdlcjsKKyAgICAgICAgICAgICAgICBycC0+c2V0X2JpdHMgfD0gU0VUX0lGTk87CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDg6ICAgICAvKiBpbmV0Q2lkclJvdXRlVHlwZSAgICAqLworICAgICAgICAgICAgICAgIHJwLT50eXBlICAgICAgPSAqdnAtPnZhbC5pbnRlZ2VyOworICAgICAgICAgICAgICAgIHJwLT5zZXRfYml0cyB8PSBTRVRfVFlQRTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgOTogICAgIC8qIGluZXRDaWRyUm91dGVQcm90byAgICovCisgICAgICAgICAgICAgICAgcnAtPnByb3RvICAgICA9ICp2cC0+dmFsLmludGVnZXI7CisgICAgICAgICAgICAgICAgcnAtPnNldF9iaXRzIHw9IFNFVF9QUlRPOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMDogICAgIC8qIGluZXRDaWRyUm91dGVBZ2UgICAqLworICAgICAgICAgICAgICAgIHJwLT5hZ2UgICAgID0gKnZwLT52YWwuaW50ZWdlcjsKKyAgICAgICAgICAgICAgICBycC0+c2V0X2JpdHMgfD0gU0VUX0FHRTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTE6ICAgICAvKiBpbmV0Q2lkclJvdXRlTmV4dEhvcEFTICAgKi8KKyAgICAgICAgICAgICAgICBycC0+YXMgICAgID0gKnZwLT52YWwuaW50ZWdlcjsKKyAgICAgICAgICAgICAgICBycC0+c2V0X2JpdHMgfD0gU0VUX0FTOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMjogICAgIC8qIGluZXRDaWRyUm91dGVNZXRyaWMxICAgKi8KKyAgICAgICAgICAgICAgICBycC0+bWV0cmljMSAgICAgPSAqdnAtPnZhbC5pbnRlZ2VyOworICAgICAgICAgICAgICAgIHJwLT5zZXRfYml0cyB8PSBTRVRfTUVUMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAocnAtPnNldF9iaXRzICE9IFNFVF9BTEwpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOyAgIC8qIEluY29tcGxldGUgcXVlcnkgKi8KKyAgICAgICAgfQorICAgIAorICAgICAgICBpZiAoYWYgIT0gQUZfVU5TUEVDICYmIHJwLT5hZiAhPSBhZikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChoZHJfYWYgIT0gcnAtPmFmKSB7CisgICAgICAgICAgICBpZiAoaGRyX2FmICE9IEFGX1VOU1BFQykKKyAgICAgICAgICAgICAgICBwcmludGYoIlxuIik7CisgICAgICAgICAgICBoZHJfYWYgPSBycC0+YWY7CisgICAgICAgICAgICBwcl9ydHhoZHIoaGRyX2FmLCAiaW5ldENpZHJSb3V0ZVRhYmxlIik7CisgICAgICAgIH0KKyAgICAgICAgcF9ydG5vZGV4KCBycCApOworICAgICAgICBwcmludGVkKys7CisgICAgfQorICAgIHJldHVybiBwcmludGVkOworfQorCisvKgorICogQmFja3dhcmRzLWNvbXBhdGliaWxpdHkgZm9yIHRoZSBJUFY2LU1JQgorICovCitpbnQKK3JvdXRlNnByKGludCBhZikKK3sKKyAgICBzdHJ1Y3Qgcm91dGVfZW50cnkgIHJvdXRlLCAqcnAgPSAmcm91dGU7CisgICAgb2lkICAgIHJ0Y29sX29pZFtdICA9IHsgMSwzLDYsMSwyLDEsNTUsMSwxMSwxLDAgfTsgLyogaXB2NlJvdXRlRW50cnkgKi8KKyAgICBzaXplX3QgcnRjb2xfbGVuICAgID0gT0lEX0xFTkdUSCggcnRjb2xfb2lkICk7CisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXIgPSBOVUxMLCAqdnA7CisgICAgaW50IHByaW50ZWQgPSAwOworICAgIGludCBoZHJfYWYgPSBBRl9VTlNQRUM7CisgICAgaW50IGk7CisKKyAgICBpZiAoYWYgIT0gQUZfVU5TUEVDICYmIGFmICE9IEFGX0lORVQ2KQorICAgICAgICByZXR1cm4gMDsKKworI2RlZmluZSBBRERfUlRWQVIoIHggKSBydGNvbF9vaWRbIHJ0Y29sX2xlbi0xIF0gPSB4OyBcCisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSggJnZhciwgcnRjb2xfb2lkLCBydGNvbF9sZW4sIEFTTl9OVUxMLCBOVUxMLCAgMCkKKyAgICBBRERfUlRWQVIoIDQgKTsgICAgICAgICAgICAgICAgIC8qIGlwdjZSb3V0ZUlmSW5kZXggKi8KKyAgICBBRERfUlRWQVIoIDUgKTsgICAgICAgICAgICAgICAgIC8qIGlwdjZSb3V0ZU5leHRIb3AgKi8KKyAgICBBRERfUlRWQVIoIDYgKTsgICAgICAgICAgICAgICAgIC8qIGlwdjZSb3V0ZVR5cGUgICAgKi8KKyAgICBBRERfUlRWQVIoIDcgKTsgICAgICAgICAgICAgICAgIC8qIGlwdjZSb3V0ZVByb3RvICAgKi8KKyAgICBBRERfUlRWQVIoIDExICk7ICAgICAgICAgICAgICAgIC8qIGlwdjZSb3V0ZU1ldHJpYyAgKi8KKyAgICBBRERfUlRWQVIoIDE0ICk7ICAgICAgICAgICAgICAgIC8qIGlwdjZSb3V0ZVZhbGlkICAgKi8KKyN1bmRlZiBBRERfUlRWQVIKKworICAgIC8qCisgICAgICogTm93IHdhbGsgdGhlIGlwdjZSb3V0ZVRhYmxlLCByZXBvcnRpbmcgdGhlIHZhcmlvdXMgcm91dGUgZW50cmllcworICAgICAqLworICAgIHdoaWxlICggMSApIHsKKyAgICAgICAgb2lkICpvcDsKKyAgICAgICAgdW5zaWduZWQgY2hhciAqY3AsICpjcDE7CisgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKSZyb3V0ZS5kc3Q7CisKKyAgICAgICAgaWYgKG5ldHNubXBfcXVlcnlfZ2V0bmV4dCggdmFyLCBzcyApICE9IFNOTVBfRVJSX05PRVJST1IpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgcnRjb2xfb2lkWyBydGNvbF9sZW4tMSBdID0gNDsgICAgICAgIC8qIGlwdjZSb3V0ZUlmSW5kZXggKi8KKyAgICAgICAgaWYgKCBzbm1wX29pZF9jb21wYXJlKCBydGNvbF9vaWQsIHJ0Y29sX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXItPm5hbWUsIHJ0Y29sX2xlbikgIT0gMCApCisgICAgICAgICAgICBicmVhazsgICAgLyogRW5kIG9mIFRhYmxlICovCisgICAgICAgIGlmICh2YXItPnR5cGUgPT0gU05NUF9OT1NVQ0hPQkpFQ1QgfHwKKyAgICAgICAgICAgICAgICB2YXItPnR5cGUgPT0gU05NUF9OT1NVQ0hJTlNUQU5DRSB8fAorICAgICAgICAgICAgICAgIHZhci0+dHlwZSA9PSBTTk1QX0VORE9GTUlCVklFVykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBtZW1zZXQoICZyb3V0ZSwgMCwgc2l6ZW9mKCBzdHJ1Y3Qgcm91dGVfZW50cnkgKSk7CisgICAgICAgIHJwLT5hZiA9IEFGX0lORVQ2OworICAgICAgICBzaW42LT5zaW42X2ZhbWlseSA9IEFGX0lORVQ2OworICAgICAgICBvcCA9IHZhci0+bmFtZStydGNvbF9sZW47CisgICAgICAgIGNwID0gKHVuc2lnbmVkIGNoYXIgKikmc2luNi0+c2luNl9hZGRyOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykgKmNwKysgPSAqb3ArKzsKKyAgICAgICAgcm91dGUubWFzayA9ICpvcCsrOworCisgICAgICAgIGZvciAoIHZwPXZhcjsgdnA7IHZwPXZwLT5uZXh0X3ZhcmlhYmxlICkgeworICAgICAgICAgICAgc3dpdGNoICggdnAtPm5hbWVbIHJ0Y29sX2xlbiAtIDEgXSApIHsKKyAgICAgICAgICAgIGNhc2UgNDogICAgIC8qIGlwdjZSb3V0ZUlmSW5kZXggICovCisgICAgICAgICAgICAgICAgcnAtPmlmTnVtYmVyICA9ICp2cC0+dmFsLmludGVnZXI7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBUaGlzIGlzLCB0ZWNobmljYWxseSwgYW4gSXB2NklmSW5kZXgsIHdoaWNoCisgICAgICAgICAgICAgICAgICogY291bGQgbWF5YmUgYmUgZGlmZmVyZW50IHRoYW4gdGhlIElmSW5kZXgKKyAgICAgICAgICAgICAgICAgKiBmb3IgdGhlIHNhbWUgaW50ZXJmYWNlLiAgV2UgaWdub3JlIHRoaXMKKyAgICAgICAgICAgICAgICAgKiBwb3NzaWJpbGl0eSBmb3Igbm93LCBpbiB0aGUgaG9wZXMgdGhhdAorICAgICAgICAgICAgICAgICAqIG5vYm9keSBhY3R1YWxseSBhbGxvY2F0ZXMgdGhlc2UgbnVtYmVycworICAgICAgICAgICAgICAgICAqIGRpZmZlcmVudGx5LgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIHJwLT5zZXRfYml0cyB8PSBTRVRfSUZOTzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNTogICAgIC8qIGlwdjZSb3V0ZU5leHRIb3AgICovCisgICAgICAgICAgICAgICAgY3AxID0gKHVuc2lnbmVkIGNoYXIgKil2cC0+dmFsLnN0cmluZzsKKyAgICAgICAgICAgICAgICBzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKikmcnAtPmhvcDsKKyAgICAgICAgICAgICAgICBzaW42LT5zaW42X2ZhbWlseSA9IEFGX0lORVQ2OworICAgICAgICAgICAgICAgIGNwID0gKHVuc2lnbmVkIGNoYXIgKikmc2luNi0+c2luNl9hZGRyOworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSAqY3ArKyA9ICpjcDErKzsKKyAgICAgICAgICAgICAgICBycC0+c2V0X2JpdHMgfD0gU0VUX0hPUDsKKyAgICAgICAgICAgIGNhc2UgNjogICAgIC8qIGlwdjZSb3V0ZVR5cGUgICAgICovCisgICAgICAgICAgICAgICAgcnAtPnR5cGUgICAgICA9ICp2cC0+dmFsLmludGVnZXI7CisgICAgICAgICAgICAgICAgLyogVGhpcyBlbnVtIG1hcHMgdG8gc2ltaWxhciB2YWx1ZXMgaW4gaW5ldENpZHJSb3V0ZVR5cGUgKi8KKyAgICAgICAgICAgICAgICBycC0+c2V0X2JpdHMgfD0gU0VUX1RZUEU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDc6ICAgICAvKiBpcHY2Um91dGVQcm90b2NvbCAqLworICAgICAgICAgICAgICAgIHJwLT5wcm90byAgICAgPSAqdnAtPnZhbC5pbnRlZ2VyOworICAgICAgICAgICAgICAgIC8qIFRPRE86IHRoaXMgZG9lcyBub3QgbWFwIGRpcmVjdGx5IHRvIHRoZQorICAgICAgICAgICAgICAgICAqIGluZXRDaWRyUm91dGVQcm90b2NvbCB2YWx1ZXMuICBJZiB3ZSB1c2UKKyAgICAgICAgICAgICAgICAgKiBycC0+cHJvdG8gbW9yZSwgd2Ugd2lsbCBoYXZlIHRvIG1hbmFnZSB0aGlzLiAqLworICAgICAgICAgICAgICAgIHJwLT5zZXRfYml0cyB8PSBTRVRfUFJUTzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTE6ICAgIC8qIGlwdjZSb3V0ZU1ldHJpYyAgICovCisgICAgICAgICAgICAgICAgcnAtPm1ldHJpYzEgICA9ICp2cC0+dmFsLmludGVnZXI7CisgICAgICAgICAgICAgICAgcnAtPnNldF9iaXRzIHw9IFNFVF9NRVQxOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNDogICAgLyogaXB2NlJvdXRlVmFsaWQgICAgKi8KKyAgICAgICAgICAgICAgICBpZiAoKnZwLT52YWwuaW50ZWdlciA9PSAyKQorICAgICAgICAgICAgICAgICAgICBycC0+c2V0X2JpdHMgfD0gU0VUX0lOVkFMSUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJwLT5zZXRfYml0cyAhPSBTRVRfQUxMNikgeworICAgICAgICAgICAgY29udGludWU7ICAgLyogSW5jb21wbGV0ZSBxdWVyeSAqLworICAgICAgICB9CisgICAgCisgICAgICAgIGlmIChoZHJfYWYgIT0gcnAtPmFmKSB7CisgICAgICAgICAgICBpZiAoaGRyX2FmICE9IEFGX1VOU1BFQykKKyAgICAgICAgICAgICAgICBwcmludGYoIlxuIik7CisgICAgICAgICAgICBoZHJfYWYgPSBycC0+YWY7CisgICAgICAgICAgICBwcl9ydHhoZHIoQUZfSU5FVDYsICJpcDZSb3V0ZVRhYmxlIik7CisgICAgICAgIH0KKyAgICAgICAgcF9ydG5vZGV4KCBycCApOworICAgICAgICBwcmludGVkKys7CisgICAgfQorICAgIHJldHVybiBwcmludGVkOworfQorCisKKy8qIGNvbHVtbiB3aWR0aHM7IGVhY2ggZm9sbG93ZWQgYnkgb25lIHNwYWNlICovCisjaWZuZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyNkZWZpbmUgICAgICAgIFdJRF9EU1QoYWYpICAgICAgICAyNiAgICAgICAgLyogd2lkdGggb2YgZGVzdGluYXRpb24gY29sdW1uICovCisjZGVmaW5lICAgICAgICBXSURfR1coYWYpICAgICAgICAxOCAgICAgICAgLyogd2lkdGggb2YgZ2F0ZXdheSBjb2x1bW4gKi8KKyNlbHNlCisvKiB3aWR0aCBvZiBkZXN0aW5hdGlvbi9nYXRld2F5IGNvbHVtbiAqLworLyogc3RybGVuKCJmZTgwOjphYWFhOmJiYmI6Y2NjYzpkZGRkQGdpZjAiKSA9PSAzMCwgc3RybGVuKCIvMTI4IikgPT0gNCAqLworI2RlZmluZSAgICAgICAgV0lEX0RTVChhZikgICAgICAgICgoYWYpID09IEFGX0lORVQ2ID8gKG5mbGFnID8gMzQgOiAyNikgOiAyNikKKyNkZWZpbmUgICAgICAgIFdJRF9HVyhhZikgICAgICAgICgoYWYpID09IEFGX0lORVQ2ID8gKG5mbGFnID8gMzkgOiAyNikgOiAyNikKKyNlbmRpZiAvKiBORVRTTk1QX0VOQUJMRV9JUFY2ICovCisKKy8qCisgKiBQcmludCBoZWFkZXIgZm9yIHJvdXRpbmcgdGFibGUgY29sdW1ucy4KKyAqLworc3RhdGljIHZvaWQKK3ByX3J0eGhkcihpbnQgYWYsIGNvbnN0IGNoYXIgKnRhYmxlKQoreworICAgIHN3aXRjaCAoYWYpIHsKKyAgICBjYXNlIEFGX0lORVQ6CisJcHJpbnRmKCJJUHY0IFJvdXRpbmcgdGFibGVzIChpbmV0Q2lkclJvdXRlVGFibGUpXG4iKTsKKwlicmVhazsKKyAgICBjYXNlIEFGX0lORVQ2OgorCXByaW50ZigiSVB2NiBSb3V0aW5nIHRhYmxlcyAoJXMpXG4iLCB0YWJsZSk7CisJYnJlYWs7CisgICAgfQorICAgIHByaW50ZigiJS0qLipzICIsCisJV0lEX0RTVChhZiksIFdJRF9EU1QoYWYpLCAiRGVzdGluYXRpb24iKTsKKyAgICBwcmludGYoIiUtKi4qcyAlLTYuNnMgICVzXG4iLAorCVdJRF9HVyhhZiksIFdJRF9HVyhhZiksICJHYXRld2F5IiwKKwkiRmxhZ3MiLCAiSW50ZXJmYWNlIik7Cit9CisKKyNpZm5kZWYgSEFWRV9JTkVUX05UT1AKKy8qIE1TVkMgYW5kIE1pbkdXICovCisjZGVmaW5lIGluZXRfbnRvcCBuZXRzbm1wX2luZXRfbnRvcAorc3RhdGljIGNvbnN0IGNoYXIgKgorbmV0c25tcF9pbmV0X250b3AoaW50IGFmLCBjb25zdCB2b2lkICpzcmMsIGNoYXIgKmRzdCwgc2l6ZV90IHNpemUpCit7CisgICAgRFdPUkQgb3V0X2xlbiA9IHNpemU7CisKKyAgICBzd2l0Y2ggKGFmKSB7CisgICAgY2FzZSBBRl9JTkVUOgorCXsKKwkgICAgc3RydWN0IHNvY2thZGRyX2luIGluOworCisJICAgIG1lbXNldCgmaW4sIDAsIHNpemVvZihpbikpOworCSAgICBpbi5zaW5fZmFtaWx5ID0gYWY7CisJICAgIG1lbWNweSgmaW4uc2luX2FkZHIsIHNyYywgNCk7CisJICAgIGlmIChXU0FBZGRyZXNzVG9TdHJpbmcoKHN0cnVjdCBzb2NrYWRkciAqKSZpbiwgc2l6ZW9mKGluKSwgTlVMTCwgZHN0LAorCQkJCSAgICZvdXRfbGVuKSA9PSAwKQorCQlyZXR1cm4gZHN0OworCX0KKwlicmVhazsKKyAgICBjYXNlIEFGX0lORVQ2OgorCXsKKwkgICAgc3RydWN0IHNvY2thZGRyX2luNiBpbjY7CisKKwkgICAgbWVtc2V0KCZpbjYsIDAsIHNpemVvZihpbjYpKTsKKwkgICAgaW42LnNpbjZfZmFtaWx5ID0gYWY7CisJICAgIG1lbWNweSgmaW42LnNpbjZfYWRkciwgc3JjLCAxNik7CisJICAgIGlmIChXU0FBZGRyZXNzVG9TdHJpbmcoKHN0cnVjdCBzb2NrYWRkciAqKSZpbjYsIHNpemVvZihpbjYpLCBOVUxMLCBkc3QsCisJCQkJICAgJm91dF9sZW4pID09IDApCisJCXJldHVybiBkc3Q7CisJfQorCWJyZWFrOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKyNlbmRpZgorCisvKgorICogUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBuZXR3b3JrIHdob3NlIGFkZHJlc3MgaXMgZ2l2ZW4uCisgKiBUaGUgYWRkcmVzcyBpcyBhc3N1bWVkIHRvIGJlIHRoYXQgb2YgYSBuZXQgb3Igc3VibmV0LCBub3QgYSBob3N0LgorICovCitzdGF0aWMgY2hhciAqCituZXR4bmFtZShzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqaW4sIGludCBtYXNrKQoreworICAgIHN0YXRpYyBjaGFyIGhvc3RbTUFYSE9TVE5BTUVMRU5dOworICAgIHN0YXRpYyBjaGFyIGxpbmVbTUFYSE9TVE5BTUVMRU5dOworICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqc2luID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAqKWluOworICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKWluOworCisgICAgc3dpdGNoIChpbi0+c3NfZmFtaWx5KSB7CisgICAgY2FzZSBBRl9JTkVUOgorICAgICAgICBpbmV0X250b3AoaW4tPnNzX2ZhbWlseSwgJnNpbi0+c2luX2FkZHIsIGhvc3QsIHNpemVvZihob3N0KSk7CisgICAgICAgIGlmIChtYXNrID09IDMyKSBzdHJjcHkobGluZSwgaG9zdCk7CisgICAgICAgIGVsc2Ugc25wcmludGYobGluZSwgc2l6ZW9mKGxpbmUpLCAiJXMvJWQiLCBob3N0LCBtYXNrKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBRl9JTkVUNjoKKyAgICAgICAgaW5ldF9udG9wKGluLT5zc19mYW1pbHksICZzaW42LT5zaW42X2FkZHIsIGhvc3QsIHNpemVvZihob3N0KSk7CisgICAgICAgIGlmIChtYXNrID09IDEyOCkgc3RyY3B5KGxpbmUsIGhvc3QpOworICAgICAgICBlbHNlIHNucHJpbnRmKGxpbmUsIHNpemVvZihsaW5lKSwgIiVzLyVkIiwgaG9zdCwgbWFzayk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gbGluZTsKK30KKworc3RhdGljIGNoYXIgKgorcm91dGV4bmFtZShzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqaW4pCit7CisgICAgY2hhciAqY3A7CisgICAgc3RhdGljIGNoYXIgbGluZVtNQVhIT1NUTkFNRUxFTl07CisgICAgc3RydWN0IGhvc3RlbnQgKmhwID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciBkb21haW5bTUFYSE9TVE5BTUVMRU5dOworICAgIHN0YXRpYyBpbnQgZmlyc3QgPSAxOworICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqc2luID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAqKWluOworICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKWluOworCisgICAgaWYgKGZpcnN0KSB7CisgICAgICAgIGZpcnN0ID0gMDsKKyAgICAgICAgaWYgKGdldGhvc3RuYW1lKGRvbWFpbiwgc2l6ZW9mIGRvbWFpbikgPT0gMCAmJgorICAgICAgICAgICAgKGNwID0gc3RyY2hyKGRvbWFpbiwgJy4nKSkpCisgICAgICAgICAgICAodm9pZCkgc3RybGNweShkb21haW4sIGNwICsgMSwgc2l6ZW9mIGRvbWFpbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRvbWFpblswXSA9ICdcMCc7CisgICAgfQorICAgIGNwID0gTlVMTDsKKyAgICBpZiAoIW5mbGFnKSB7CisgICAgICAgIHN3aXRjaCAoaW4tPnNzX2ZhbWlseSkgeworICAgICAgICBjYXNlIEFGX0lORVQ6CisgICAgICAgICAgICBocCA9IG5ldHNubXBfZ2V0aG9zdGJ5YWRkcigmc2luLT5zaW5fYWRkciwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mIChzdHJ1Y3QgaW5fYWRkciksIEFGX0lORVQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQUZfSU5FVDY6CisgICAgICAgICAgICBocCA9IG5ldHNubXBfZ2V0aG9zdGJ5YWRkcigmc2luNi0+c2luNl9hZGRyLAorICAgICAgICAgICAgICAgICAgICBzaXplb2YgKHN0cnVjdCBpbjZfYWRkciksIEFGX0lORVQ2KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChocCkgeworICAgICAgICAgICAgaWYgKChjcCA9IHN0cmNocihocC0+aF9uYW1lLCAnLicpKSAmJiAhc3RyY21wKGNwICsgMSwgZG9tYWluKSkKKyAgICAgICAgICAgICAgICAqY3AgPSAnXDAnOworICAgICAgICAgICAgY3AgPSBocC0+aF9uYW1lOworICAgICAgICB9CisgICAgfQorICAgIGlmIChjcCkgeworICAgICAgICBzdHJsY3B5KGxpbmUsIGNwLCBzaXplb2YobGluZSkpOworICAgIH0gZWxzZSB7CisgICAgICAgIHN3aXRjaCAoaW4tPnNzX2ZhbWlseSkgeworICAgICAgICBjYXNlIEFGX0lORVQ6CisgICAgICAgICAgICBpbmV0X250b3Aoc2luLT5zaW5fZmFtaWx5LCAmc2luLT5zaW5fYWRkciwgbGluZSwgc2l6ZW9mKGxpbmUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFGX0lORVQ2OgorICAgICAgICAgICAgaW5ldF9udG9wKHNpbjYtPnNpbjZfZmFtaWx5LCAmc2luNi0+c2luNl9hZGRyLCBsaW5lLCBzaXplb2YobGluZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIChsaW5lKTsKK30KKworCitzdGF0aWMgY2hhciAqCitzX3J0ZmxhZ3N4KCBzdHJ1Y3Qgcm91dGVfZW50cnkgKnJwICkKK3sKKyAgICBzdGF0aWMgY2hhciBmbGFnX2J1ZlsxMF07CisgICAgY2hhciAgKmNwID0gZmxhZ19idWY7CisKKyAgICAqY3ArKyA9ICc8JzsKKyAgICAqY3ArKyA9ICdVJzsgICAvKiByb3V0ZSBpcyBpbiB1c2UgKi8KKyAgICBpZiAoKHJwLT5hZiA9PSBBRl9JTkVUICYmIHJwLT5tYXNrID09IDMyKSB8fAorICAgICAgICAgICAgKHJwLT5hZiA9PSBBRl9JTkVUNiAmJiBycC0+bWFzayA9PSAxMjgpKQorICAgICAgICAqY3ArKyA9ICdIJzsgICAvKiBob3N0ICovCisgICAgaWYgKHJwLT5wcm90byA9PSA0KQorICAgICAgICAqY3ArKyA9ICdEJzsgICAvKiBJQ01QIHJlZGlyZWN0ICovCisgICAgaWYgKHJwLT50eXBlICA9PSA0KQorICAgICAgICAqY3ArKyA9ICdHJzsgICAvKiByZW1vdGUgZGVzdGluYXRpb24vbmV0ICovCisgICAgKmNwKysgPSAnPic7CisgICAgKmNwID0gMDsKKyAgICByZXR1cm4gZmxhZ19idWY7Cit9CisKK3N0YXRpYyB2b2lkCitwX3J0bm9kZXgoIHN0cnVjdCByb3V0ZV9lbnRyeSAqcnAgKQoreworICAgIGdldF9pZm5hbWUocnAtPmlmbmFtZSwgcnAtPmlmTnVtYmVyKTsKKyAgICBpZiAocnAtPmFmID09IEFGX0lORVQpIHsKKyAgICAgICAgc3RydWN0IHNvY2thZGRyX2luICpzaW4gPSAoc3RydWN0IHNvY2thZGRyX2luICopJnJwLT5kc3Q7CisgICAgICAgIHByaW50ZigiJS0qcyAiLAorICAgICAgICAgICAgV0lEX0RTVChBRl9JTkVUKSwKKyAgICAgICAgICAgICAgICAoc2luLT5zaW5fYWRkci5zX2FkZHIgPT0gSU5BRERSX0FOWSkgPyAiZGVmYXVsdCIgOgorICAgICAgICAgICAgICAgIChycC0+bWFzayA9PSAzMiA/CisgICAgICAgICAgICAgICAgICAgIHJvdXRleG5hbWUoJnJwLT5kc3QpIDoKKyAgICAgICAgICAgICAgICAgICAgbmV0eG5hbWUoJnJwLT5kc3QsIHJwLT5tYXNrKSkpOworICAgIH0KKyAgICBlbHNlIGlmIChycC0+YWYgPT0gQUZfSU5FVDYpIHsKKyAgICAgICAgc3RydWN0IHNvY2thZGRyX2luNiAqc2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopJnJwLT5kc3Q7CisgICAgICAgIHN0cnVjdCBpbjZfYWRkciBpbjZfYWRkcl9hbnkgPSBJTjZBRERSX0FOWV9JTklUOworICAgICAgICBwcmludGYoIiUtKnMgIiwKKyAgICAgICAgICAgIFdJRF9EU1QoQUZfSU5FVDYpLAorICAgICAgICAgICAgICAgIG1lbWNtcCgmc2luNi0+c2luNl9hZGRyLCAmaW42X2FkZHJfYW55LCBzaXplb2YoaW42X2FkZHJfYW55KSkgPT0gMCA/ICJkZWZhdWx0IiA6CisgICAgICAgICAgICAgICAgKHJwLT5tYXNrID09IDEyOCA/CisgICAgICAgICAgICAgICAgICAgIHJvdXRleG5hbWUoJnJwLT5kc3QpIDoKKyAgICAgICAgICAgICAgICAgICAgbmV0eG5hbWUoJnJwLT5kc3QsIHJwLT5tYXNrKSkpOworICAgIH0KKyAgICBwcmludGYoIiUtKnMgJS02LjZzICAlcyIsCisgICAgICAgIFdJRF9HVyhycC0+YWYpLAorICAgICAgICAxID8gcm91dGV4bmFtZSgmcnAtPmhvcCkgOiAiKiIsCisgICAgICAgIHNfcnRmbGFnc3gocnApLCBycC0+aWZuYW1lKTsKKyAgICBpZiAoKHJwLT5zZXRfYml0cyAmIFNFVF9BUykgJiYgcnAtPmFzICE9IDApCisgICAgICAgIHByaW50ZigiIChBUyAlZCkiLCBycC0+YXMpOworICAgIHByaW50ZigiXG4iKTsKK30KZGlmZiAtLWdpdCBhL2FwcHMvc25tcHRlc3QuYyBiL2FwcHMvc25tcHRlc3QuYwppbmRleCA1MTllMzhlLi4yNGRlNDdiIDEwMDY0NAotLS0gYS9hcHBzL3NubXB0ZXN0LmMKKysrIGIvYXBwcy9zbm1wdGVzdC5jCkBAIC0yMTAsOSArMjEwLDExIEBACiAgICAgICAgICAgICAgICAgICAgIGNhc2UgU05NUF9NU0dfUkVTUE9OU0U6CiAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIlJlY2VpdmVkIEdldCBSZXNwb25zZSAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgICAgICAgICAgICAgY2FzZSBTTk1QX01TR19TRVQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIlJlY2VpdmVkIFNldCBSZXF1ZXN0ICIpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICAgICAgICAgICAgIGNhc2UgU05NUF9NU0dfVFJBUDoKICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiUmVjZWl2ZWQgVHJhcCBSZXF1ZXN0ICIpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0zMTEsMTAgKzMxMywxMiBAQAogICAgICAgICAgICAgY29tbWFuZCA9IFNOTVBfTVNHX0dFVE5FWFQ7CiAgICAgICAgICAgICBwcmludGYoIlJlcXVlc3QgdHlwZSBpcyBHZXRuZXh0IFJlcXVlc3RcbiIpOwogICAgICAgICAgICAgYnJlYWs7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICBjYXNlICdTJzoKICAgICAgICAgICAgIGNvbW1hbmQgPSBTTk1QX01TR19TRVQ7CiAgICAgICAgICAgICBwcmludGYoIlJlcXVlc3QgdHlwZSBpcyBTZXQgUmVxdWVzdFxuIik7CiAgICAgICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgY2FzZSAnQic6CiAgICAgICAgICAgICBjb21tYW5kID0gU05NUF9NU0dfR0VUQlVMSzsKICAgICAgICAgICAgIHByaW50ZigiUmVxdWVzdCB0eXBlIGlzIEJ1bGsgUmVxdWVzdFxuIik7CkBAIC0zMzMsMTEgKzMzNywxNCBAQAogICAgICAgICAgICAgcHJpbnRmKCIoQXJlIHlvdSBzZW5kaW5nIHRvIHRoZSByaWdodCBwb3J0PylcbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJ0QnOgotICAgICAgICAgICAgaWYgKHNubXBfZ2V0X2R1bXBfcGFja2V0KCkpIHsKLSAgICAgICAgICAgICAgICBzbm1wX3NldF9kdW1wX3BhY2tldCgwKTsKKyAgICAgICAgICAgIGlmIChuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9EVU1QX1BBQ0tFVCkpIHsKKyAgICAgICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9EVU1QX1BBQ0tFVCwgMCk7CiAgICAgICAgICAgICAgICAgcHJpbnRmKCJUdXJuZWQgcGFja2V0IGR1bXAgb2ZmXG4iKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgc25tcF9zZXRfZHVtcF9wYWNrZXQoMSk7CisgICAgICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfRFVNUF9QQUNLRVQsIDEpOwogICAgICAgICAgICAgICAgIHByaW50ZigiVHVybmVkIHBhY2tldCBkdW1wIG9uXG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzUwLDExICszNTcsMTQgQEAKICAgICAgICAgICAgICAgICBleGl0KDApOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAnUCc6Ci0gICAgICAgICAgICAgICAgaWYgKHNubXBfZ2V0X3F1aWNrX3ByaW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgc25tcF9zZXRfcXVpY2tfcHJpbnQoMCk7CisgICAgICAgICAgICAgICAgaWYgKG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9RVUlDS19QUklOVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1FVSUNLX1BSSU5ULCAwKTsKICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJUdXJuZWQgcXVpY2sgcHJpbnRpbmcgb2ZmXG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBzbm1wX3NldF9xdWlja19wcmludCgxKTsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1FVSUNLX1BSSU5ULCAxKTsKICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJUdXJuZWQgcXVpY2sgcHJpbnRpbmcgb25cbiIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTM3NSw4ICszODUsMTIgQEAKIAl2cC0+bmFtZSA9IHNubXBfZHVwbGljYXRlX29iamlkKG5hbWUsIHZwLT5uYW1lX2xlbmd0aCk7CiAgICAgfQogCi0gICAgaWYgKGNvbW1hbmQgPT0gU05NUF9NU0dfU0VUIHx8IGNvbW1hbmQgPT0gU05NUF9NU0dfSU5GT1JNCi0gICAgICAgIHx8IGNvbW1hbmQgPT0gU05NUF9NU0dfVFJBUDIpIHsKKyAgICBpZiAoY29tbWFuZCA9PSBTTk1QX01TR19JTkZPUk0KKyAgICAgICAgfHwgY29tbWFuZCA9PSBTTk1QX01TR19UUkFQMgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKKyAgICAgICAgfHwgY29tbWFuZCA9PSBTTk1QX01TR19TRVQKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICAgICAgKSB7CiAgICAgICAgIHByaW50ZigiVHlwZSBbaXx1fHN8eHxkfG58b3x0fGFdOiAiKTsKICAgICAgICAgZmZsdXNoKHN0ZG91dCk7CiAgICAgICAgIGlmICghZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgc3RkaW4pKSB7CmRpZmYgLS1naXQgYS9hcHBzL3NubXB0bHMuYyBiL2FwcHMvc25tcHRscy5jCmluZGV4IDgwOWQzNjkuLjg0YzVmYmUgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcHRscy5jCisrKyBiL2FwcHMvc25tcHRscy5jCkBAIC00LDEwICs0LDEzIEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjdW5kZWYgTkVUU05NUF9VU0VfQVNTRVJUCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0bHNfZmluZ2VycHJpbnRfYnVpbGQpCisKICNpbmNsdWRlIDxjdHlwZS5oPgogCiAjaW5jbHVkZSA8b3BlbnNzbC9zc2wuaD4KZGlmZiAtLWdpdCBhL2FwcHMvc25tcHRyYW5zbGF0ZS5jIGIvYXBwcy9zbm1wdHJhbnNsYXRlLmMKaW5kZXggNzM5MWZkNC4uMmIxOTc3NyAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wdHJhbnNsYXRlLmMKKysrIGIvYXBwcy9zbm1wdHJhbnNsYXRlLmMKQEAgLTIwMiw3ICsyMDIsOCBAQAogI2VuZGlmIC8qIE5FVFNOTVBfRElTQUJMRV9NSUJfTE9BRElORyAqLwogICAgICAgICAgICAgICAgIGNhc2UgJ2QnOgogICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IDE7Ci0gICAgICAgICAgICAgICAgICAgIHNubXBfc2V0X3NhdmVfZGVzY3JpcHRpb25zKDEpOworICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfU0FWRV9NSUJfREVTQ1JTLCAxKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSAnQic6CiAgICAgICAgICAgICAgICAgICAgIGZpbmRfYWxsID0gMTsKQEAgLTI2MSw3ICsyNjIsOCBAQAogCiAgICAgZG8gewogICAgICAgICBuYW1lX2xlbmd0aCA9IE1BWF9PSURfTEVOOwotICAgICAgICBpZiAoc25tcF9nZXRfcmFuZG9tX2FjY2VzcygpKSB7CisgICAgICAgIGlmIChuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCisJCQkJICBORVRTTk1QX0RTX0xJQl9SQU5ET01fQUNDRVNTKSkgewogI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfTUlCX0xPQURJTkcKICAgICAgICAgICAgIGlmICghZ2V0X25vZGUoY3VycmVudF9uYW1lLCBuYW1lLCAmbmFtZV9sZW5ndGgpKSB7CiAjZW5kaWYgLyogTkVUU05NUF9ESVNBQkxFX01JQl9MT0FESU5HICovCmRpZmYgLS1naXQgYS9hcHBzL3NubXB0cmFwZC5jIGIvYXBwcy9zbm1wdHJhcGQuYwppbmRleCAxNmRmZjUwLi44MzkxYmFiIDEwMDY0NAotLS0gYS9hcHBzL3NubXB0cmFwZC5jCisrKyBiL2FwcHMvc25tcHRyYXBkLmMKQEAgLTEyMyw2ICsxMjMsOCBAQAogI2luY2x1ZGUgPHRjcGQuaD4KICNlbmRpZgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KKwogI2lmbmRlZiBCU0Q0XzMKICNkZWZpbmUgQlNENF8yCiAjZW5kaWYKQEAgLTIxNSw4ICsyMTcsNiBAQAogCiBjb25zdCBjaGFyICAgICAqYXBwX25hbWUgPSAic25tcHRyYXBkIjsKIAotc3RydWN0IHRpbWV2YWwgIE5vdzsKLQogdm9pZCAgICAgICAgICAgIHRyYXBkX3VwZGF0ZV9jb25maWcodm9pZCk7CiAKICNpZmRlZiBXSU4zMlNFUlZJQ0UKQEAgLTI4OSw2ICsyODksNyBAQAogICAgIGZwcmludGYoc3RkZXJyLCAiICAtdiwgLS12ZXJzaW9uXHRcdGRpc3BsYXkgdmVyc2lvbiBpbmZvcm1hdGlvblxuIik7CiAjaWYgZGVmaW5lZChVU0lOR19BR0VOVFhfU1VCQUdFTlRfTU9EVUxFKSAmJiAhZGVmaW5lZChORVRTTk1QX1NOTVBUUkFQRF9ESVNBQkxFX0FHRU5UWCkKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLXggQUREUkVTU1x0XHR1c2UgQUREUkVTUyBhcyBBZ2VudFggYWRkcmVzc1xuIik7CisgICAgZnByaW50ZihzdGRlcnIsICIgIC1YXHRcdFx0ZG9uJ3QgYmVjb21lIGEgc3ViYWdlbnRcbiIpOwogI2VuZGlmCiAgICAgZnByaW50ZihzdGRlcnIsCiAgICAgICAgICAgICAiICAtTyA8T1VUT1BUUz5cdFx0dG9nZ2xlIG9wdGlvbnMgY29udHJvbGxpbmcgb3V0cHV0IGRpc3BsYXlcbiIpOwpAQCAtNDQzLDYgKzQ0NCw3IEBACiB7CiAgICAgaWYgKGRlZmF1bHRfcG9ydCAhPSBkZGVmYXVsdF9wb3J0KSB7CiAgICAgICAgIGZyZWUoZGVmYXVsdF9wb3J0KTsKKyAgICAgICAgZGVmYXVsdF9wb3J0ID0gZGRlZmF1bHRfcG9ydDsKICAgICB9CiB9CiAKQEAgLTQ3MiwxMyArNDc0LDEwIEBACiB2b2lkCiBwYXJzZV9jb25maWdfYWdlbnR1c2VyKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQogewotI2lmIGRlZmluZWQoSEFWRV9HRVRQV05BTSkgJiYgZGVmaW5lZChIQVZFX1BXRF9IKQotICAgIHN0cnVjdCBwYXNzd2QgICppbmZvOwotI2VuZGlmCi0KICAgICBpZiAoY3B0clswXSA9PSAnIycpIHsKICAgICAgICAgY2hhciAgICAgICAgICAgKmVjcDsKICAgICAgICAgaW50ICAgICAgICAgICAgIHVpZDsKKwogICAgICAgICB1aWQgPSBzdHJ0b3VsKGNwdHIgKyAxLCAmZWNwLCAxMCk7CiAgICAgICAgIGlmICgqZWNwICE9IDApIHsKICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIkJhZCBudW1iZXIiKTsKQEAgLTQ4Niw0NCArNDg1LDQ3IEBACiAJICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKIAkJCSAgICAgICBORVRTTk1QX0RTX0FHRU5UX1VTRVJJRCwgdWlkKTsKIAl9Ci0gICAgfQogI2lmIGRlZmluZWQoSEFWRV9HRVRQV05BTSkgJiYgZGVmaW5lZChIQVZFX1BXRF9IKQotICAgIGVsc2UgaWYgKChpbmZvID0gZ2V0cHduYW0oY3B0cikpICE9IE5VTEwpIHsKLSAgICAgICAgbmV0c25tcF9kc19zZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAotCQkJICAgTkVUU05NUF9EU19BR0VOVF9VU0VSSUQsIGluZm8tPnB3X3VpZCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY29uZmlnX3BlcnJvcigiVXNlciBub3QgZm91bmQgaW4gcGFzc3dkIGRhdGFiYXNlIik7Ci0gICAgfQotICAgIGVuZHB3ZW50KCk7CisgICAgICAgIHN0cnVjdCBwYXNzd2QgKmluZm87CisKKyAgICAgICAgaW5mbyA9IGdldHB3bmFtKGNwdHIpOworICAgICAgICBpZiAoaW5mbykKKyAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX1VTRVJJRCwgaW5mby0+cHdfdWlkKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiVXNlciBub3QgZm91bmQgaW4gcGFzc3dkIGRhdGFiYXNlIik7CisgICAgICAgIGVuZHB3ZW50KCk7CiAjZW5kaWYKKyAgICB9CiB9CiAKIHZvaWQKIHBhcnNlX2NvbmZpZ19hZ2VudGdyb3VwKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQogewotI2lmIGRlZmluZWQoSEFWRV9HRVRHUk5BTSkgJiYgZGVmaW5lZChIQVZFX0dSUF9IKQotICAgIHN0cnVjdCBncm91cCAgICppbmZvOwotI2VuZGlmCi0KICAgICBpZiAoY3B0clswXSA9PSAnIycpIHsKICAgICAgICAgY2hhciAgICAgICAgICAgKmVjcDsKICAgICAgICAgaW50ICAgICAgICAgICAgIGdpZCA9IHN0cnRvdWwoY3B0ciArIDEsICZlY3AsIDEwKTsKKwogICAgICAgICBpZiAoKmVjcCAhPSAwKSB7CiAgICAgICAgICAgICBjb25maWdfcGVycm9yKCJCYWQgbnVtYmVyIik7CiAJfSBlbHNlIHsKICAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKIAkJCSAgICAgICBORVRTTk1QX0RTX0FHRU5UX0dST1VQSUQsIGdpZCk7CiAJfQotICAgIH0KICNpZiBkZWZpbmVkKEhBVkVfR0VUR1JOQU0pICYmIGRlZmluZWQoSEFWRV9HUlBfSCkKLSAgICBlbHNlIGlmICgoaW5mbyA9IGdldGdybmFtKGNwdHIpKSAhPSBOVUxMKSB7Ci0gICAgICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKLQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfR1JPVVBJRCwgaW5mby0+Z3JfZ2lkKTsKICAgICB9IGVsc2UgewotICAgICAgICBjb25maWdfcGVycm9yKCJHcm91cCBub3QgZm91bmQgaW4gZ3JvdXAgZGF0YWJhc2UiKTsKLSAgICB9Ci0gICAgZW5kcHdlbnQoKTsKKyAgICAgICAgc3RydWN0IGdyb3VwICAgKmluZm87CisKKyAgICAgICAgaW5mbyA9IGdldGdybmFtKGNwdHIpOworICAgICAgICBpZiAoaW5mbykKKyAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX0dST1VQSUQsIGluZm8tPmdyX2dpZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIkdyb3VwIG5vdCBmb3VuZCBpbiBncm91cCBkYXRhYmFzZSIpOworICAgICAgICBlbmRncmVudCgpOwogI2VuZGlmCisgICAgfQogfQogI2VuZGlmCiAKQEAgLTU1Myw2ICs1NTUsNzQgQEAKICAgfQogfQogCitzdGF0aWMgdm9pZAorc25tcHRyYXBkX21haW5fbG9vcCh2b2lkKQoreworICAgIGludCAgICAgICAgICAgICBjb3VudCwgbnVtZmRzLCBibG9jazsKKyAgICBmZF9zZXQgICAgICAgICAgcmVhZGZkcyx3cml0ZWZkcyxleGNlcHRmZHM7CisgICAgc3RydWN0IHRpbWV2YWwgIHRpbWVvdXQsICp0dnA7CisKKyAgICB3aGlsZSAobmV0c25tcF9ydW5uaW5nKSB7CisgICAgICAgIGlmIChyZWNvbmZpZykgeworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogSWYgd2UgYXJlIGxvZ2dpbmcgdG8gYSBmaWxlLCByZWNlaXB0IG9mIFNJR0hVUCBhbHNvCisgICAgICAgICAgICAgICAgICogaW5kaWNhdGVzIHRoYXQgdGhlIGxvZyBmaWxlIHNob3VsZCBiZSBjbG9zZWQgYW5kCisgICAgICAgICAgICAgICAgICogcmUtb3BlbmVkLiAgVGhpcyBpcyB1c2VmdWwgZm9yIHVzZXJzIHRoYXQgd2FudCB0bworICAgICAgICAgICAgICAgICAqIHJvdGF0ZSBsb2dzIGluIGEgbW9yZSBwcmVkaWN0YWJsZSBtYW5uZXIuCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgbmV0c25tcF9sb2dnaW5nX3Jlc3RhcnQoKTsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfSU5GTywgIk5FVC1TTk1QIHZlcnNpb24gJXMgcmVzdGFydGVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZ2V0X3ZlcnNpb24oKSk7CisgICAgICAgICAgICB0cmFwZF91cGRhdGVfY29uZmlnKCk7CisgICAgICAgICAgICBpZiAodHJhcDFfZm10X3N0cl9yZW1lbWJlcikgeworICAgICAgICAgICAgICAgIHBhcnNlX2Zvcm1hdCggTlVMTCwgdHJhcDFfZm10X3N0cl9yZW1lbWJlciApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVjb25maWcgPSAwOworICAgICAgICB9CisgICAgICAgIG51bWZkcyA9IDA7CisgICAgICAgIEZEX1pFUk8oJnJlYWRmZHMpOworICAgICAgICBGRF9aRVJPKCZ3cml0ZWZkcyk7CisgICAgICAgIEZEX1pFUk8oJmV4Y2VwdGZkcyk7CisgICAgICAgIGJsb2NrID0gMDsKKyAgICAgICAgdHZwID0gJnRpbWVvdXQ7CisgICAgICAgIHRpbWVyY2xlYXIodHZwKTsKKyAgICAgICAgdHZwLT50dl9zZWMgPSA1OworICAgICAgICBzbm1wX3NlbGVjdF9pbmZvKCZudW1mZHMsICZyZWFkZmRzLCB0dnAsICZibG9jayk7CisgICAgICAgIGlmIChibG9jayA9PSAxKQorICAgICAgICAgICAgdHZwID0gTlVMTDsgICAgICAgICAvKiBibG9jayB3aXRob3V0IHRpbWVvdXQgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9GRF9FVkVOVF9NQU5BR0VSCisgICAgICAgIG5ldHNubXBfZXh0ZXJuYWxfZXZlbnRfaW5mbygmbnVtZmRzLCAmcmVhZGZkcywgJndyaXRlZmRzLCAmZXhjZXB0ZmRzKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZEX0VWRU5UX01BTkFHRVIgKi8KKyAgICAgICAgY291bnQgPSBzZWxlY3QobnVtZmRzLCAmcmVhZGZkcywgJndyaXRlZmRzLCAmZXhjZXB0ZmRzLCB0dnApOworICAgICAgICBpZiAoY291bnQgPiAwKSB7CisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRkRfRVZFTlRfTUFOQUdFUgorICAgICAgICAgICAgbmV0c25tcF9kaXNwYXRjaF9leHRlcm5hbF9ldmVudHMoJmNvdW50LCAmcmVhZGZkcywgJndyaXRlZmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmV4Y2VwdGZkcyk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9GRF9FVkVOVF9NQU5BR0VSICovCisgICAgICAgICAgICAvKiBJZiB0aGVyZSBhcmUgYW55IG1vcmUgZXZlbnRzIGFmdGVyIGV4dGVybmFsIGV2ZW50cywgdGhlbgorICAgICAgICAgICAgICogdHJ5IFNOTVAgZXZlbnRzLiAqLworICAgICAgICAgICAgaWYgKGNvdW50ID4gMCkgeworICAgICAgICAgICAgICAgIHNubXBfcmVhZCgmcmVhZGZkcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2ggKGNvdW50KSB7CisgICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgc25tcF90aW1lb3V0KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIC0xOgorICAgICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgc25tcF9sb2dfcGVycm9yKCJzZWxlY3QiKTsKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3J1bm5pbmcgPSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInNlbGVjdCByZXR1cm5lZCAlZFxuIiwgY291bnQpOworICAgICAgICAgICAgICAgIG5ldHNubXBfcnVubmluZyA9IDA7CisgICAgICAgICAgICB9CisJfQorCXJ1bl9hbGFybXMoKTsKKyAgICB9Cit9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLW8tKioqKioqCiAgKiBtYWluIC0gTm9uIFdpbmRvd3MKQEAgLTU3NywxNCArNjQ3LDExIEBACiBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAjZW5kaWYKIHsKLSAgICBjaGFyICAgICAgICAgICAgb3B0aW9uc1sxMjhdID0gImFBYzpDZEQ6OmVmRjpnOmhISTpMOm06TTpubzpPOlBxc1M6dHU6dng6LToiOworICAgIGNoYXIgICAgICAgICAgICBvcHRpb25zWzEyOF0gPSAiYUFjOkNkRDo6ZWZGOmc6aEhJOkw6bTpNOm5vOk86UHFzUzp0dTp2eDpYLToiOwogICAgIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc19saXN0ID0gTlVMTCwgKnNzID0gTlVMTDsKICAgICBuZXRzbm1wX3RyYW5zcG9ydCAqdHJhbnNwb3J0ID0gTlVMTDsKICAgICBpbnQgICAgICAgICAgICAgYXJnLCBpID0gMDsKICAgICBpbnQgICAgICAgICAgICAgdWlkID0gMCwgZ2lkID0gMDsKLSAgICBpbnQgICAgICAgICAgICAgY291bnQsIG51bWZkcywgYmxvY2s7Ci0gICAgZmRfc2V0ICAgICAgICAgIHJlYWRmZHMsd3JpdGVmZHMsZXhjZXB0ZmRzOwotICAgIHN0cnVjdCB0aW1ldmFsICB0aW1lb3V0LCAqdHZwOwogICAgIGNoYXIgICAgICAgICAgICpjcCwgKmxpc3Rlbl9wb3J0cyA9IE5VTEw7CiAjaWYgZGVmaW5lZChVU0lOR19BR0VOVFhfU1VCQUdFTlRfTU9EVUxFKSAmJiAhZGVmaW5lZChORVRTTk1QX1NOTVBUUkFQRF9ESVNBQkxFX0FHRU5UWCkKICAgICBpbnQgICAgICAgICAgICAgYWdlbnR4X3N1YmFnZW50ID0gMTsKQEAgLTYyMyw3ICs2OTAsOSBAQAogI2lmZGVmIE5FVFNOTVBfVVNFX01ZU1FMCiAgICAgc25tcHRyYXBkX3JlZ2lzdGVyX3NxbF9jb25maWdzKCApOwogI2VuZGlmCisjaWZkZWYgTkVUU05NUF9TRUNNT0RfVVNNCiAgICAgaW5pdF91c21fY29uZiggInNubXB0cmFwZCIgKTsKKyNlbmRpZiAvKiBORVRTTk1QX1NFQ01PRF9VU00gKi8KICAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigic25tcHRyYXBkIiwgInNubXBUcmFwZEFkZHIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlX3RyYXBkX2FkZHJlc3MsIGZyZWVfdHJhcGRfYWRkcmVzcywgInN0cmluZyIpOwogCkBAIC02NTYsMTEgKzcyNSwxMyBAQAogICAgIHN0cmNhdChvcHRpb25zLCAicDoiKTsKICNlbmRpZgogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cKICNpZmRlZiBXSU4zMgogICAgIHNubXBfbG9nX3N5c2xvZ25hbWUoYXBwX25hbWVfbG9uZyk7CiAjZWxzZQogICAgIHNubXBfbG9nX3N5c2xvZ25hbWUoYXBwX25hbWUpOwogI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRyAqLwogCiAgICAgLyoKICAgICAgKiBOb3cgcHJvY2VzcyBvcHRpb25zIG5vcm1hbGx5LiAgCkBAIC03MDYsNyArNzc3LDggQEAKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgJ2QnOgotICAgICAgICAgICAgc25tcF9zZXRfZHVtcF9wYWNrZXQoMSk7CisgICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0RVTVBfUEFDS0VULCAxKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgJ0QnOgpAQCAtODYxLDE5ICs5MzMsMTggQEAKICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAgICAqZWNwOwogCiAgICAgICAgICAgICAgICAgdWlkID0gc3RydG91bChvcHRhcmcsICZlY3AsIDEwKTsKKyNpZiBIQVZFX0dFVFBXTkFNICYmIEhBVkVfUFdEX0gKICAgICAgICAgICAgICAgICBpZiAoKmVjcCkgewotI2lmIEhBVkVfR0VUUFdOQU0gJiYgSEFWRV9QV0RfSAogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGFzc3dkICAqaW5mbzsKKwogICAgICAgICAgICAgICAgICAgICBpbmZvID0gZ2V0cHduYW0ob3B0YXJnKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGluZm8pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpZCA9IGluZm8tPnB3X3VpZDsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdWlkID0gaW5mbyA/IGluZm8tPnB3X3VpZCA6IC0xOworICAgICAgICAgICAgICAgICAgICBlbmRwd2VudCgpOworICAgICAgICAgICAgICAgIH0KICNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJCYWQgdXNlciBpZDogJXNcbiIsIG9wdGFyZyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGl0KDEpOwotI2lmIEhBVkVfR0VUUFdOQU0gJiYgSEFWRV9QV0RfSAotICAgICAgICAgICAgICAgICAgICB9Ci0jZW5kaWYKKyAgICAgICAgICAgICAgICBpZiAodWlkIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkJhZCB1c2VyIGlkOiAlc1xuIiwgb3B0YXJnKTsKKyAgICAgICAgICAgICAgICAgICAgZXhpdCgxKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAogCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfVVNFUklELCB1aWQpOwpAQCAtODg5LDYgKzk2MCw3IEBACiAgICAgICAgICAgICBleGl0KDApOwogICAgICAgICAgICAgYnJlYWs7CiAKKyNpZiBkZWZpbmVkKFVTSU5HX0FHRU5UWF9TVUJBR0VOVF9NT0RVTEUpICYmICFkZWZpbmVkKE5FVFNOTVBfU05NUFRSQVBEX0RJU0FCTEVfQUdFTlRYKQogICAgICAgICBjYXNlICd4JzoKICAgICAgICAgICAgIGlmIChvcHRhcmcgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X3N0cmluZyhORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELApAQCAtODk5LDYgKzk3MSwxMSBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgIGNhc2UgJ1gnOgorICAgICAgICAgICAgYWdlbnR4X3N1YmFnZW50ID0gMDsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiaW52YWxpZCBvcHRpb246IC0lY1xuIiwgYXJnKTsKICAgICAgICAgICAgIHVzYWdlKCk7CkBAIC05NDAsMTAgKzEwMTcsMTkgQEAKICAgICAgKiBEb24ndCB0cnkgdGhpcyBhdCBob21lLCBjaGlsZHJlbiEKICAgICAgKi8KICAgICBpZiAoMCA9PSBzbm1wX2dldF9kb19sb2dnaW5nKCkpIHsKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRwogICAgICAgICB0cmFwaCA9IG5ldHNubXBfYWRkX2dsb2JhbF90cmFwaGFuZGxlcihORVRTTk1QVFJBUERfUFJFX0hBTkRMRVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2xvZ19oYW5kbGVyKTsKICAgICAgICAgdHJhcGgtPmF1dGh0eXBlcyA9IFRSQVBfQVVUSF9MT0c7CiAgICAgICAgIHNubXBfZW5hYmxlX3N5c2xvZygpOworI2Vsc2UgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRyAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1RESU8KKyAgICAgICAgdHJhcGggPSBuZXRzbm1wX2FkZF9nbG9iYWxfdHJhcGhhbmRsZXIoTkVUU05NUFRSQVBEX1BSRV9IQU5ETEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludF9oYW5kbGVyKTsKKyAgICAgICAgdHJhcGgtPmF1dGh0eXBlcyA9IFRSQVBfQVVUSF9MT0c7CisgICAgICAgIHNubXBfZW5hYmxlX3N0ZGVycigpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TVERJTyAqLworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cgKi8KICAgICB9IGVsc2UgewogICAgICAgICB0cmFwaCA9IG5ldHNubXBfYWRkX2dsb2JhbF90cmFwaGFuZGxlcihORVRTTk1QVFJBUERfUFJFX0hBTkRMRVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50X2hhbmRsZXIpOwpAQCAtOTgwLDYgKzEwNjYsOSBAQAogICAgIGluaXRfYWdlbnQoInNubXB0cmFwZCIpOwogCiAjaWYgZGVmaW5lZChVU0lOR19BR0VOVFhfU1VCQUdFTlRfTU9EVUxFKSAmJiAhZGVmaW5lZChORVRTTk1QX1NOTVBUUkFQRF9ESVNBQkxFX0FHRU5UWCkKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTkcKKyAgICBuZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyZWdpc3Rlcl9zbm1wRW5naW5lX3NjYWxhcnNfY29udGV4dCkKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTkcgKi8KICAgICAvKgogICAgICAqIGluaXRpYWxpemUgbG9jYWwgbW9kdWxlcyAKICAgICAgKi8KQEAgLTEwMjAsNiArMTEwOSw5IEBACiAgICAgICAgIGV4dGVybiB2b2lkIGluaXRfcmVnaXN0ZXJfbnNWYWNtX2NvbnRleHQoY29uc3QgY2hhciAqKTsKICNlbmRpZgogI2lmZGVmIFVTSU5HX1NOTVBWM19VU01VU0VSX01PRFVMRQorI2lmZGVmIE5FVFNOTVBfRkVBVFVSRV9DSEVDS0lORworICAgICAgICBuZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpbml0X3JlZ2lzdGVyX3VzbVVzZXJfY29udGV4dCkKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTkcgKi8KICAgICAgICAgZXh0ZXJuIHZvaWQgaW5pdF9yZWdpc3Rlcl91c21Vc2VyX2NvbnRleHQoY29uc3QgY2hhciAqKTsKICAgICAgICAgLyogcmVnaXN0ZXIgb3Vyc2VsdmVzIGFzIGhhdmluZyBhIFVTTSB1c2VyIGRhdGFiYXNlICovCiAgICAgICAgIGluaXRfcmVnaXN0ZXJfdXNtVXNlcl9jb250ZXh0KCJzbm1wdHJhcGQiKTsKQEAgLTEwNzMsMTEgKzExNjUsMTMgQEAKICAgICAgKiBpZiBubyBsb2dnaW5nIG9wdGlvbnMgb24gY29tbWFuZCBsaW5lIG9yIGluIGNvbmYgZmlsZXMsIHVzZSBzeXNsb2cKICAgICAgKi8KICAgICBpZiAoMCA9PSBzbm1wX2dldF9kb19sb2dnaW5nKCkpIHsKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRwogI2lmZGVmIFdJTjMyCiAgICAgICAgIHNubXBfZW5hYmxlX3N5c2xvZ19pZGVudChhcHBfbmFtZV9sb25nLCBGYWNpbGl0eSk7CiAjZWxzZQogICAgICAgICBzbm1wX2VuYWJsZV9zeXNsb2dfaWRlbnQoYXBwX25hbWUsIEZhY2lsaXR5KTsKICNlbmRpZiAgICAgICAgCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRyAqLwogICAgIH0KIAogICAgIGlmIChsaXN0ZW5fcG9ydHMpCkBAIC0xMTA3LDcgKzEyMDEsNiBAQAogICAgICAgICAgICAgICAgICAqIHN1Y2Nlc3NmdWxseSBzbyB3aGF0IGNvdWxkIGhhdmUgZ29uZSB3cm9uZz8gIAogICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgIHNubXB0cmFwZF9jbG9zZV9zZXNzaW9ucyhzZXNzX2xpc3QpOwotICAgICAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodHJhbnNwb3J0KTsKICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGRuJ3Qgb3BlbiBzbm1wIC0gJXMiLCBzdHJlcnJvcihlcnJubykpOwogICAgICAgICAgICAgICAgIFNPQ0tfQ0xFQU5VUDsKICAgICAgICAgICAgICAgICBleGl0KDEpOwpAQCAtMTIyOCw2MiArMTMyMSw4IEBACiAjaWZkZWYgV0lOMzJTRVJWSUNFCiAgICAgdHJhcGRfc3RhdHVzID0gU05NUFRSQVBEX1JVTk5JTkc7CiAjZW5kaWYKLSAgICB3aGlsZSAobmV0c25tcF9ydW5uaW5nKSB7Ci0gICAgICAgIGlmIChyZWNvbmZpZykgewotICAgICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgICogSWYgd2UgYXJlIGxvZ2dpbmcgdG8gYSBmaWxlLCByZWNlaXB0IG9mIFNJR0hVUCBhbHNvCi0gICAgICAgICAgICAgICAgICogaW5kaWNhdGVzIHRoZSB0aGUgbG9nIGZpbGUgc2hvdWxkIGJlIGNsb3NlZCBhbmQKLSAgICAgICAgICAgICAgICAgKiByZS1vcGVuZWQuICBUaGlzIGlzIHVzZWZ1bCBmb3IgdXNlcnMgdGhhdCB3YW50IHRvCi0gICAgICAgICAgICAgICAgICogcm90YXRlIGxvZ3MgaW4gYSBtb3JlIHByZWRpY3RhYmxlIG1hbm5lci4KLSAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBuZXRzbm1wX2xvZ2dpbmdfcmVzdGFydCgpOwotICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19JTkZPLCAiTkVULVNOTVAgdmVyc2lvbiAlcyByZXN0YXJ0ZWRcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9nZXRfdmVyc2lvbigpKTsKLSAgICAgICAgICAgIHRyYXBkX3VwZGF0ZV9jb25maWcoKTsKLSAgICAgICAgICAgIGlmICh0cmFwMV9mbXRfc3RyX3JlbWVtYmVyKSB7Ci0gICAgICAgICAgICAgICAgcGFyc2VfZm9ybWF0KCBOVUxMLCB0cmFwMV9mbXRfc3RyX3JlbWVtYmVyICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZWNvbmZpZyA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgbnVtZmRzID0gMDsKLSAgICAgICAgRkRfWkVSTygmcmVhZGZkcyk7Ci0gICAgICAgIEZEX1pFUk8oJndyaXRlZmRzKTsKLSAgICAgICAgRkRfWkVSTygmZXhjZXB0ZmRzKTsKLSAgICAgICAgYmxvY2sgPSAwOwotICAgICAgICB0dnAgPSAmdGltZW91dDsKLSAgICAgICAgdGltZXJjbGVhcih0dnApOwotICAgICAgICB0dnAtPnR2X3NlYyA9IDU7Ci0gICAgICAgIHNubXBfc2VsZWN0X2luZm8oJm51bWZkcywgJnJlYWRmZHMsIHR2cCwgJmJsb2NrKTsKLSAgICAgICAgaWYgKGJsb2NrID09IDEpCi0gICAgICAgICAgICB0dnAgPSBOVUxMOyAgICAgICAgIC8qIGJsb2NrIHdpdGhvdXQgdGltZW91dCAqLwotICAgICAgICBuZXRzbm1wX2V4dGVybmFsX2V2ZW50X2luZm8oJm51bWZkcywgJnJlYWRmZHMsICZ3cml0ZWZkcywgJmV4Y2VwdGZkcyk7Ci0gICAgICAgIGNvdW50ID0gc2VsZWN0KG51bWZkcywgJnJlYWRmZHMsICZ3cml0ZWZkcywgJmV4Y2VwdGZkcywgdHZwKTsKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZOb3csIE5VTEwpOwotICAgICAgICBpZiAoY291bnQgPiAwKSB7Ci0gICAgICAgICAgICBuZXRzbm1wX2Rpc3BhdGNoX2V4dGVybmFsX2V2ZW50cygmY291bnQsICZyZWFkZmRzLCAmd3JpdGVmZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXhjZXB0ZmRzKTsKLSAgICAgICAgICAgIC8qIElmIHRoZXJlIGFyZSBhbnkgbW9yZSBldmVudHMgYWZ0ZXIgZXh0ZXJuYWwgZXZlbnRzLCB0aGVuCi0gICAgICAgICAgICAgKiB0cnkgU05NUCBldmVudHMuICovCi0gICAgICAgICAgICBpZiAoY291bnQgPiAwKSB7Ci0gICAgICAgICAgICAgICAgc25tcF9yZWFkKCZyZWFkZmRzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzd2l0Y2ggKGNvdW50KSB7Ci0gICAgICAgICAgICBjYXNlIDA6Ci0gICAgICAgICAgICAgICAgc25tcF90aW1lb3V0KCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIC0xOgotICAgICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgc25tcF9sb2dfcGVycm9yKCJzZWxlY3QiKTsKLSAgICAgICAgICAgICAgICBuZXRzbm1wX3J1bm5pbmcgPSAwOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInNlbGVjdCByZXR1cm5lZCAlZFxuIiwgY291bnQpOwotICAgICAgICAgICAgICAgIG5ldHNubXBfcnVubmluZyA9IDA7Ci0gICAgICAgICAgICB9Ci0JcnVuX2FsYXJtcygpOwotICAgIH0KKworICAgIHNubXB0cmFwZF9tYWluX2xvb3AoKTsKIAogICAgIGlmIChzbm1wX2dldF9kb19sb2dnaW5nKCkpIHsKICAgICAgICAgc3RydWN0IHRtICAgICAgKnRtOwpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYyBiL2FwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmMKaW5kZXggM2VlM2FhNy4uNWE4ZTNjOCAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYworKysgYi9hcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpZiBIQVZFX1NURExJQl9ICiAjaW5jbHVkZSA8c3RkbGliLmg+CkBAIC0zNyw2ICszOCw4IEBACiAjaW5jbHVkZSAic25tcHRyYXBkX2xvZy5oIgogI2luY2x1ZGUgIm5vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuaCIKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGFkZF9kZWZhdWx0X3RyYXBoYW5kbGVyLCBzbm1wdHJhcGQpCisKIGNoYXIgKnN5c2xvZ19mb3JtYXQxID0gTlVMTDsKIGNoYXIgKnN5c2xvZ19mb3JtYXQyID0gTlVMTDsKIGNoYXIgKnByaW50X2Zvcm1hdDEgID0gTlVMTDsKQEAgLTQwMCw2ICs0MDMsNyBAQAogICAgIHJldHVybiB0cmFwaDsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0FERF9ERUZBVUxUX1RSQVBIQU5ETEVSCiAvKgogICogUmVnaXN0ZXIgYSBuZXcgImRlZmF1bHQiIHRyYXBoYW5kbGVyLCB0byBiZSBhcHBsaWVkIHRvIGFsbAogICogdHJhcHMgd2l0aCBubyBzcGVjaWZpYyB0cmFwIGhhbmRsZXJzIG9mIHRoZWlyIG93bi4KQEAgLTQwOSw2ICs0MTMsNyBAQAogICAgIHJldHVybiBuZXRzbm1wX2FkZF9nbG9iYWxfdHJhcGhhbmRsZXIoTkVUU05NUFRSQVBEX0RFRkFVTFRfSEFORExFUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQUREX0RFRkFVTFRfVFJBUEhBTkRMRVIgKi8KIAogCiAvKgpAQCAtODAyLDggKzgwNywxMCBAQAogCSAgICB2Ml9wZHUgPSBjb252ZXJ0X3YxcGR1X3RvX3YyKHBkdSk7CiAJZWxzZQogCSAgICB2Ml9wZHUgPSBwZHU7Ci0gICAgICAgIG9sZHF1aWNrID0gc25tcF9nZXRfcXVpY2tfcHJpbnQoKTsKLSAgICAgICAgc25tcF9zZXRfcXVpY2tfcHJpbnQoMSk7CisgICAgICAgIG9sZHF1aWNrID0gbmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfUVVJQ0tfUFJJTlQpOworICAgICAgICBuZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfUVVJQ0tfUFJJTlQsIDEpOwogCiAgICAgICAgIC8qCiAJICogRm9ybWF0IHRoZSB0cmFwIGFuZCBwYXNzIHRoaXMgc3RyaW5nIHRvIHRoZSBleHRlcm5hbCBjb21tYW5kCkBAIC04NDIsNyArODQ5LDggQEAKICAgICAgICAgICogIGFuZCBwYXNzIHRoaXMgZm9ybWF0dGVkIHN0cmluZyB0byB0aGUgY29tbWFuZCBzcGVjaWZpZWQKICAgICAgICAgICovCiAgICAgICAgIHJ1bl9zaGVsbF9jb21tYW5kKGhhbmRsZXItPnRva2VuLCAoY2hhciopcmJ1ZiwgTlVMTCwgTlVMTCk7ICAgLyogTm90IGludGVyZXN0ZWQgaW4gb3V0cHV0ICovCi0gICAgICAgIHNubXBfc2V0X3F1aWNrX3ByaW50KG9sZHF1aWNrKTsKKyAgICAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1FVSUNLX1BSSU5ULCBvbGRxdWljayk7CiAgICAgICAgIGlmIChwZHUtPmNvbW1hbmQgPT0gU05NUF9NU0dfVFJBUCkKICAgICAgICAgICAgIHNubXBfZnJlZV9wZHUodjJfcGR1KTsKICAgICAgICAgZnJlZShyYnVmKTsKZGlmZiAtLWdpdCBhL2FwcHMvc25tcHRyYXBkX2xvZy5jIGIvYXBwcy9zbm1wdHJhcGRfbG9nLmMKaW5kZXggOWJmYzBiMi4uNzc0Zjc5NyAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wdHJhcGRfbG9nLmMKKysrIGIvYXBwcy9zbm1wdHJhcGRfbG9nLmMKQEAgLTY0OCw3ICs2NDgsNyBAQAogICAgICAgICAgKi8KICAgICAgICAgaWYgKCFuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BUFBfTlVNRVJJQ19JUCkpIHsKLSAgICAgICAgICAgIGhvc3QgPSBnZXRob3N0YnlhZGRyKChjaGFyICopIHBkdS0+YWdlbnRfYWRkciwgNCwgQUZfSU5FVCk7CisgICAgICAgICAgICBob3N0ID0gbmV0c25tcF9nZXRob3N0YnlhZGRyKChjaGFyICopIHBkdS0+YWdlbnRfYWRkciwgNCwgQUZfSU5FVCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGhvc3QgIT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKCFzbm1wX3N0cmNhdCgmdGVtcF9idWYsICZ0ZW1wX2J1Zl9sZW4sICZ0ZW1wX291dF9sZW4sIDEsCkBAIC0xMzY4LDcgKzEzNjgsNyBAQAogICAgICAqLwogICAgIGlmICghbmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BUFBfTlVNRVJJQ19JUCkpIHsKLSAgICAgICAgaG9zdCA9IGdldGhvc3RieWFkZHIoKGNoYXIgKikgcGR1LT5hZ2VudF9hZGRyLCA0LCBBRl9JTkVUKTsKKyAgICAgICAgaG9zdCA9IG5ldHNubXBfZ2V0aG9zdGJ5YWRkcigoY2hhciAqKSBwZHUtPmFnZW50X2FkZHIsIDQsIEFGX0lORVQpOwogICAgIH0KICAgICBpZiAoaG9zdCAhPSAoc3RydWN0IGhvc3RlbnQgKikgTlVMTCkgewogICAgICAgICBpZiAoIXNubXBfc3RyY2F0CmRpZmYgLS1naXQgYS9hcHBzL3NubXB0cmFwZF9zcWwuYyBiL2FwcHMvc25tcHRyYXBkX3NxbC5jCmluZGV4IGFjMTc3MTEuLjkwZDhlMDQgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcHRyYXBkX3NxbC5jCisrKyBiL2FwcHMvc25tcHRyYXBkX3NxbC5jCkBAIC0xMSw2ICsxMSw3IEBACiAgKgogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2lmZGVmIE5FVFNOTVBfVVNFX01ZU1FMCiAKQEAgLTU0LDYgKzU1LDggQEAKICNpbmNsdWRlIDxteXNxbC5oPgogI2luY2x1ZGUgPGVycm1zZy5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjb250YWluZXJfZmlmbykKKwogLyoKICAqIGRlZmluZSBhIHN0cnVjdHVyZSB0byBob2xkIGFsbCB0aGUgZmlsZSBnbG9iYWxzCiAgKi8KZGlmZiAtLWdpdCBhL2FwcHMvc25tcHdhbGsuYyBiL2FwcHMvc25tcHdhbGsuYwppbmRleCBkZmFkN2UwLi42NTlkN2RlIDEwMDY0NAotLS0gYS9hcHBzL3NubXB3YWxrLmMKKysrIGIvYXBwcy9zbm1wd2Fsay5jCkBAIC02OSw2ICs2OSw3IEBACiAjZGVmaW5lIE5FVFNOTVBfRFNfV0FMS19ET05UX0NIRUNLX0xFWElDT0dSQVBISUMJMwogI2RlZmluZSBORVRTTk1QX0RTX1dBTEtfVElNRV9SRVNVTFRTICAgICAJICAgICAgICA0CiAjZGVmaW5lIE5FVFNOTVBfRFNfV0FMS19ET05UX0dFVF9SRVFVRVNURUQJICAgICAgICA1CisjZGVmaW5lIE5FVFNOTVBfRFNfV0FMS19USU1FX1JFU1VMVFNfU0lOR0xFCSAgICAgICAgNgogCiBvaWQgICAgICAgICAgICAgb2JqaWRfbWliW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEgfTsKIGludCAgICAgICAgICAgICBudW1wcmludGVkID0gMDsKQEAgLTkwLDcgKzkxLDkgQEAKICAgICBmcHJpbnRmKHN0ZGVyciwKICAgICAgICAgICAgICJcdFx0XHQgIGM6ICBkbyBub3QgY2hlY2sgcmV0dXJuZWQgT0lEcyBhcmUgaW5jcmVhc2luZ1xuIik7CiAgICAgZnByaW50ZihzdGRlcnIsCi0gICAgICAgICAgICAiXHRcdFx0ICB0OiAgRGlzcGxheSB3YWxsLWNsb2NrIHRpbWUgdG8gY29tcGxldGUgdGhlIHJlcXVlc3RcbiIpOworICAgICAgICAgICAgIlx0XHRcdCAgdDogIERpc3BsYXkgd2FsbC1jbG9jayB0aW1lIHRvIGNvbXBsZXRlIHRoZSB3YWxrXG4iKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwKKyAgICAgICAgICAgICJcdFx0XHQgIFQ6ICBEaXNwbGF5IHdhbGwtY2xvY2sgdGltZSB0byBjb21wbGV0ZSBlYWNoIHJlcXVlc3RcbiIpOwogICAgIGZwcmludGYoc3RkZXJyLCAiXHRcdFx0ICBFIHtPSUR9OiAgRW5kIHRoZSB3YWxrIGF0IHRoZSBzcGVjaWZpZWQgT0lEXG4iKTsKIH0KIApAQCAtMTUxLDYgKzE1NCwxMSBAQAogICAgICAgICAgICAgY2FzZSAnRSc6CiAgICAgICAgICAgICAgICAgZW5kX25hbWUgPSBhcmd2W29wdGluZCsrXTsKICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAnVCc6CisgICAgICAgICAgICAgICAgbmV0c25tcF9kc190b2dnbGVfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19XQUxLX1RJTUVfUkVTVUxUU19TSU5HTEUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVua25vd24gZmxhZyBwYXNzZWQgdG8gLUM6ICVjXG4iLApAQCAtMTgwLDcgKzE4OCw3IEBACiAgICAgaW50ICAgICAgICAgICAgIHN0YXR1cyA9IFNUQVRfRVJST1I7CiAgICAgaW50ICAgICAgICAgICAgIGNoZWNrOwogICAgIGludCAgICAgICAgICAgICBleGl0dmFsID0gMDsKLSAgICBzdHJ1Y3QgdGltZXZhbCAgdHYxLCB0djI7CisgICAgc3RydWN0IHRpbWV2YWwgIHR2MSwgdHYyLCB0dl9hLCB0dl9iOwogCiAgICAgbmV0c25tcF9kc19yZWdpc3Rlcl9jb25maWcoQVNOX0JPT0xFQU4sICJzbm1wd2FsayIsICJpbmNsdWRlUmVxdWVzdGVkIiwKIAkJCSAgICAgICBORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKQEAgLTIwMCw3ICsyMDgsMTEgQEAKIAogICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9CT09MRUFOLCAic25tcHdhbGsiLCAidGltZVJlc3VsdHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCi0JCQkgICAgICAgTkVUU05NUF9EU19XQUxLX1RJTUVfUkVTVUxUUyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19XQUxLX1RJTUVfUkVTVUxUUyk7CisKKyAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZyhBU05fQk9PTEVBTiwgInNubXB3YWxrIiwgInRpbWVSZXN1bHRzU2luZ2xlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfV0FMS19USU1FX1JFU1VMVFNfU0lOR0xFKTsKIAogICAgIC8qCiAgICAgICogZ2V0IHRoZSBjb21tb24gY29tbWFuZCBsaW5lIGFyZ3VtZW50cyAKQEAgLTI4Niw3ICsyOTgsNyBAQAogCiAgICAgaWYgKG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX1dBTEtfVElNRV9SRVNVTFRTKSkKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZ0djEsIE5VTEwpOworICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnR2MSk7CiAgICAgd2hpbGUgKHJ1bm5pbmcpIHsKICAgICAgICAgLyoKICAgICAgICAgICogY3JlYXRlIFBEVSBmb3IgR0VUTkVYVCByZXF1ZXN0IGFuZCBhZGQgb2JqZWN0IG5hbWUgdG8gcmVxdWVzdCAKQEAgLTI5Nyw4ICszMDksMTIgQEAKICAgICAgICAgLyoKICAgICAgICAgICogZG8gdGhlIHJlcXVlc3QgCiAgICAgICAgICAqLworICAgICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCBORVRTTk1QX0RTX1dBTEtfVElNRV9SRVNVTFRTX1NJTkdMRSkpCisgICAgICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnR2X2EpOwogICAgICAgICBzdGF0dXMgPSBzbm1wX3N5bmNoX3Jlc3BvbnNlKHNzLCBwZHUsICZyZXNwb25zZSk7CiAgICAgICAgIGlmIChzdGF0dXMgPT0gU1RBVF9TVUNDRVNTKSB7CisgICAgICAgICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCBORVRTTk1QX0RTX1dBTEtfVElNRV9SRVNVTFRTX1NJTkdMRSkpCisgICAgICAgICAgICAgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZ0dl9iKTsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS0+ZXJyc3RhdCA9PSBTTk1QX0VSUl9OT0VSUk9SKSB7CiAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgKiBjaGVjayByZXN1bHRpbmcgdmFyaWFibGVzIApAQCAtMzE0LDYgKzMzMCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCsrOworICAgICAgICAgICAgICAgICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCBORVRTTk1QX0RTX1dBTEtfVElNRV9SRVNVTFRTX1NJTkdMRSkpCisgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIiVmIHM6ICIsICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSkgKHR2X2IudHZfdXNlYyAtIHR2X2EudHZfdXNlYykvMTAwMDAwMCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpICh0dl9iLnR2X3NlYyAtIHR2X2EudHZfc2VjKSk7CiAgICAgICAgICAgICAgICAgICAgIHByaW50X3ZhcmlhYmxlKHZhcnMtPm5hbWUsIHZhcnMtPm5hbWVfbGVuZ3RoLCB2YXJzKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCh2YXJzLT50eXBlICE9IFNOTVBfRU5ET0ZNSUJWSUVXKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgKHZhcnMtPnR5cGUgIT0gU05NUF9OT1NVQ0hPQkpFQ1QpICYmCkBAIC0zODIsNyArNDAyLDcgQEAKICAgICB9CiAgICAgaWYgKG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX1dBTEtfVElNRV9SRVNVTFRTKSkKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZ0djIsIE5VTEwpOworICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnR2Mik7CiAKICAgICBpZiAobnVtcHJpbnRlZCA9PSAwICYmIHN0YXR1cyA9PSBTVEFUX1NVQ0NFU1MpIHsKICAgICAgICAgLyoKZGlmZiAtLWdpdCBhL2NvbmZpZy5ndWVzcyBiL2NvbmZpZy5ndWVzcwppbmRleCBjYTJhMDNjLi4yODUyMzc4IDEwMDc1NQotLS0gYS9jb25maWcuZ3Vlc3MKKysrIGIvY29uZmlnLmd1ZXNzCkBAIC0xLDEwICsxLDEwIEBACiAjISAvYmluL3NoCiAjIEF0dGVtcHQgdG8gZ3Vlc3MgYSBjYW5vbmljYWwgc3lzdGVtIG5hbWUuCiAjICAgQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LAotIyAgIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgKKyMgICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwCiAjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKLXRpbWVzdGFtcD0nMjAwOC0wMS0wOCcKK3RpbWVzdGFtcD0nMjAxMC0wOC0yMScKIAogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAogIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMjcsMTYgKzI3LDE2IEBACiAjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KIAogCi0jIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBQZXIgQm90aG5lciA8cGVyQGJvdGhuZXIuY29tPi4KLSMgUGxlYXNlIHNlbmQgcGF0Y2hlcyB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9yZz4uICBTdWJtaXQgYSBjb250ZXh0Ci0jIGRpZmYgYW5kIGEgcHJvcGVybHkgZm9ybWF0dGVkIENoYW5nZUxvZyBlbnRyeS4KKyMgT3JpZ2luYWxseSB3cml0dGVuIGJ5IFBlciBCb3RobmVyLiAgUGxlYXNlIHNlbmQgcGF0Y2hlcyAoY29udGV4dAorIyBkaWZmIGZvcm1hdCkgdG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+IGFuZCBpbmNsdWRlIGEgQ2hhbmdlTG9nCisjIGVudHJ5LgogIwogIyBUaGlzIHNjcmlwdCBhdHRlbXB0cyB0byBndWVzcyBhIGNhbm9uaWNhbCBzeXN0ZW0gbmFtZSBzaW1pbGFyIHRvCiAjIGNvbmZpZy5zdWIuICBJZiBpdCBzdWNjZWVkcywgaXQgcHJpbnRzIHRoZSBzeXN0ZW0gbmFtZSBvbiBzdGRvdXQsIGFuZAogIyBleGl0cyB3aXRoIDAuICBPdGhlcndpc2UsIGl0IGV4aXRzIHdpdGggMS4KICMKLSMgVGhlIHBsYW4gaXMgdGhhdCB0aGlzIGNhbiBiZSBjYWxsZWQgYnkgY29uZmlndXJlIHNjcmlwdHMgaWYgeW91Ci0jIGRvbid0IHNwZWNpZnkgYW4gZXhwbGljaXQgYnVpbGQgc3lzdGVtIHR5cGUuCisjIFlvdSBjYW4gZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIHNjcmlwdCBmcm9tOgorIyBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLmd1ZXNzO2hiPUhFQUQKIAogbWU9YGVjaG8gIiQwIiB8IHNlZCAtZSAncywuKi8sLCdgCiAKQEAgLTU2LDggKzU2LDkgQEAKIEdOVSBjb25maWcuZ3Vlc3MgKCR0aW1lc3RhbXApCiAKIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBQZXIgQm90aG5lci4KLUNvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwKLTIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsCisyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUKK1NvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KIHdhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiIKQEAgLTkxLDcgKzkyLDcgQEAKICAgZXhpdCAxCiBmaQogCi10cmFwICdleGl0IDEnIDEgMiAxNQordHJhcCAnZXhpdCAxJyBIVVAgSU5UIFRFUk0KIAogIyBDQ19GT1JfQlVJTEQgLS0gY29tcGlsZXIgdXNlZCBieSB0aGlzIHNjcmlwdC4gTm90ZSB0aGF0IHRoZSB1c2Ugb2YgYQogIyBjb21waWxlciB0byBhaWQgaW4gc3lzdGVtIGRldGVjdGlvbiBpcyBkaXNjb3VyYWdlZCBhcyBpdCByZXF1aXJlcwpAQCAtMTA1LDcgKzEwNiw3IEBACiAKIHNldF9jY19mb3JfYnVpbGQ9JwogdHJhcCAiZXhpdGNvZGU9XCQ/OyAocm0gLWYgXCR0bXBmaWxlcyAyPi9kZXYvbnVsbDsgcm1kaXIgXCR0bXAgMj4vZGV2L251bGwpICYmIGV4aXQgXCRleGl0Y29kZSIgMCA7Ci10cmFwICJybSAtZiBcJHRtcGZpbGVzIDI+L2Rldi9udWxsOyBybWRpciBcJHRtcCAyPi9kZXYvbnVsbDsgZXhpdCAxIiAxIDIgMTMgMTUgOwordHJhcCAicm0gLWYgXCR0bXBmaWxlcyAyPi9kZXYvbnVsbDsgcm1kaXIgXCR0bXAgMj4vZGV2L251bGw7IGV4aXQgMSIgSFVQIElOVCBQSVBFIFRFUk0gOwogOiAke1RNUERJUj0vdG1wfSA7CiAgeyB0bXA9YCh1bWFzayAwNzcgJiYgbWt0ZW1wIC1kICIkVE1QRElSL2NnWFhYWFhYIikgMj4vZGV2L251bGxgICYmIHRlc3QgLW4gIiR0bXAiICYmIHRlc3QgLWQgIiR0bXAiIDsgfSB8fAogIHsgdGVzdCAtbiAiJFJBTkRPTSIgJiYgdG1wPSRUTVBESVIvY2ckJC0kUkFORE9NICYmICh1bWFzayAwNzcgJiYgbWtkaXIgJHRtcCkgOyB9IHx8CkBAIC0xNzAsNyArMTcxLDcgQEAKIAkgICAgYXJtKnxpMzg2fG02OGt8bnMzMmt8c2gzKnxzcGFyY3x2YXgpCiAJCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKIAkJaWYgZWNobyBfX0VMRl9fIHwgJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsIFwKLQkJCXwgZ3JlcCBfX0VMRl9fID4vZGV2L251bGwKKwkJCXwgZ3JlcCAtcSBfX0VMRl9fCiAJCXRoZW4KIAkJICAgICMgT25jZSBhbGwgdXRpbGl0aWVzIGNhbiBiZSBFQ09GRiAobmV0YnNkZWNvZmYpIG9yIGEub3V0IChuZXRic2Rhb3V0KS4KIAkJICAgICMgUmV0dXJuIG5ldGJzZCBmb3IgZWl0aGVyLiAgRklYPwpAQCAtMzI0LDE0ICszMjUsMzMgQEAKIAljYXNlIGAvdXNyL2Jpbi91bmFtZSAtcGAgaW4KIAkgICAgc3BhcmMpIGVjaG8gc3BhcmMtaWNsLW54NzsgZXhpdCA7OwogCWVzYWMgOzsKKyAgICBzMzkweDpTdW5PUzoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWlibS1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsKICAgICBzdW40SDpTdW5PUzo1Lio6KikKIAllY2hvIHNwYXJjLWhhbC1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAogCWV4aXQgOzsKICAgICBzdW40KjpTdW5PUzo1Lio6KiB8IHRhZHBvbGUqOlN1bk9TOjUuKjoqKQogCWVjaG8gc3BhcmMtc3VuLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCiAJZXhpdCA7OworICAgIGk4NnBjOkF1cm9yYVVYOjUuKjoqIHwgaTg2eGVuOkF1cm9yYVVYOjUuKjoqKQorCWVjaG8gaTM4Ni1wYy1hdXJvcmF1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CiAgICAgaTg2cGM6U3VuT1M6NS4qOiogfCBpODZ4ZW46U3VuT1M6NS4qOiopCi0JZWNobyBpMzg2LXBjLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCisJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCVNVTl9BUkNIPSJpMzg2IgorCSMgSWYgdGhlcmUgaXMgYSBjb21waWxlciwgc2VlIGlmIGl0IGlzIGNvbmZpZ3VyZWQgZm9yIDY0LWJpdCBvYmplY3RzLgorCSMgTm90ZSB0aGF0IHRoZSBTdW4gY2MgZG9lcyBub3QgdHVybiBfX0xQNjRfXyBpbnRvIDEgbGlrZSBnY2MgZG9lcy4KKwkjIFRoaXMgdGVzdCB3b3JrcyBmb3IgYm90aCBjb21waWxlcnMuCisJaWYgWyAiJENDX0ZPUl9CVUlMRCIgIT0gJ25vX2NvbXBpbGVyX2ZvdW5kJyBdOyB0aGVuCisJICAgIGlmIChlY2hvICcjaWZkZWYgX19hbWQ2NCc7IGVjaG8gSVNfNjRCSVRfQVJDSDsgZWNobyAnI2VuZGlmJykgfCBcCisJCShDQ09QVFM9ICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCkgfCBcCisJCWdyZXAgSVNfNjRCSVRfQVJDSCA+L2Rldi9udWxsCisJICAgIHRoZW4KKwkJU1VOX0FSQ0g9Ing4Nl82NCIKKwkgICAgZmkKKwlmaQorCWVjaG8gJHtTVU5fQVJDSH0tcGMtc29sYXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKIAlleGl0IDs7CiAgICAgc3VuNCo6U3VuT1M6Nio6KikKIAkjIEFjY29yZGluZyB0byBjb25maWcuc3ViLCB0aGlzIGlzIHRoZSBwcm9wZXIgd2F5IHRvIGNhbm9uaWNhbGl6ZQpAQCAtNTMyLDcgKzU1Miw3IEBACiAJCWVjaG8gcnM2MDAwLWlibS1haXgzLjIKIAlmaQogCWV4aXQgOzsKLSAgICAqOkFJWDoqOls0NTZdKQorICAgICo6QUlYOio6WzQ1NjddKQogCUlCTV9DUFVfSUQ9YC91c3Ivc2Jpbi9sc2RldiAtQyAtYyBwcm9jZXNzb3IgLVMgYXZhaWxhYmxlIHwgc2VkIDFxIHwgYXdrICd7IHByaW50ICQxIH0nYAogCWlmIC91c3Ivc2Jpbi9sc2F0dHIgLUVsICR7SUJNX0NQVV9JRH0gfCBncmVwICcgUE9XRVInID4vZGV2L251bGwgMj4mMTsgdGhlbgogCQlJQk1fQVJDSD1yczYwMDAKQEAgLTY0MCw3ICs2NjAsNyBAQAogCSAgICAjID0+IGhwcGE2NC1ocC1ocHV4MTEuMjMKIAogCSAgICBpZiBlY2hvIF9fTFA2NF9fIHwgKENDT1BUUz0gJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsKSB8Ci0JCWdyZXAgX19MUDY0X18gPi9kZXYvbnVsbAorCQlncmVwIC1xIF9fTFA2NF9fCiAJICAgIHRoZW4KIAkJSFBfQVJDSD0iaHBwYTIuMHciCiAJICAgIGVsc2UKQEAgLTc5MSwxMiArODExLDEyIEBACiAgICAgaSo6UFcqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXB3MzIKIAlleGl0IDs7Ci0gICAgKjpJbnRlcml4KjpbMzQ1Nl0qKQorICAgICo6SW50ZXJpeCo6KikKICAgICAJY2FzZSAke1VOQU1FX01BQ0hJTkV9IGluCiAJICAgIHg4NikKIAkJZWNobyBpNTg2LXBjLWludGVyaXgke1VOQU1FX1JFTEVBU0V9CiAJCWV4aXQgOzsKLQkgICAgRU02NFQgfCBhdXRoZW50aWNhbWQpCisJICAgIGF1dGhlbnRpY2FtZCB8IGdlbnVpbmVpbnRlbCB8IEVNNjRUKQogCQllY2hvIHg4Nl82NC11bmtub3duLWludGVyaXgke1VOQU1FX1JFTEVBU0V9CiAJCWV4aXQgOzsKIAkgICAgSUE2NCkKQEAgLTgwNiw2ICs4MjYsOSBAQAogICAgIFszNDVdODY6V2luZG93c185NToqIHwgWzM0NV04NjpXaW5kb3dzXzk4OiogfCBbMzQ1XTg2OldpbmRvd3NfTlQ6KikKIAllY2hvIGkke1VOQU1FX01BQ0hJTkV9LXBjLW1rcwogCWV4aXQgOzsKKyAgICA4NjY0OldpbmRvd3NfTlQ6KikKKwllY2hvIHg4Nl82NC1wYy1ta3MKKwlleGl0IDs7CiAgICAgaSo6V2luZG93c19OVCo6KiB8IFBlbnRpdW0qOldpbmRvd3NfTlQqOiopCiAJIyBIb3cgZG8gd2Uga25vdyBpdCdzIEludGVyaXggcmF0aGVyIHRoYW4gdGhlIGdlbmVyaWMgUE9TSVggc3Vic3lzdGVtPwogCSMgSXQgYWxzbyBjb25mbGljdHMgd2l0aCBwcmUtMi4wIHZlcnNpb25zIG9mIEFUJlQgVVdJTi4gU2hvdWxkIHdlCkBAIC04MzUsNiArODU4LDIwIEBACiAgICAgaSo4NjpNaW5peDoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLW1pbml4CiAJZXhpdCA7OworICAgIGFscGhhOkxpbnV4Oio6KikKKwljYXNlIGBzZWQgLW4gJy9eY3B1IG1vZGVsL3MvXi4qOiBcKC4qXCkvXDEvcCcgPCAvcHJvYy9jcHVpbmZvYCBpbgorCSAgRVY1KSAgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjUgOzsKKwkgIEVWNTYpICBVTkFNRV9NQUNISU5FPWFscGhhZXY1NiA7OworCSAgUENBNTYpIFVOQU1FX01BQ0hJTkU9YWxwaGFwY2E1NiA7OworCSAgUENBNTcpIFVOQU1FX01BQ0hJTkU9YWxwaGFwY2E1NiA7OworCSAgRVY2KSAgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjYgOzsKKwkgIEVWNjcpICBVTkFNRV9NQUNISU5FPWFscGhhZXY2NyA7OworCSAgRVY2OCopIFVOQU1FX01BQ0hJTkU9YWxwaGFldjY4IDs7CisgICAgICAgIGVzYWMKKwlvYmpkdW1wIC0tcHJpdmF0ZS1oZWFkZXJzIC9iaW4vc2ggfCBncmVwIC1xIGxkLnNvLjEKKwlpZiB0ZXN0ICIkPyIgPSAwIDsgdGhlbiBMSUJDPSJsaWJjMSIgOyBlbHNlIExJQkM9IiIgOyBmaQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudSR7TElCQ30KKwlleGl0IDs7CiAgICAgYXJtKjpMaW51eDoqOiopCiAJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAogCWlmIGVjaG8gX19BUk1fRUFCSV9fIHwgJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsIFwKQEAgLTg1Nyw2ICs4OTQsMTcgQEAKICAgICBmcnY6TGludXg6KjoqKQogICAgIAllY2hvIGZydi11bmtub3duLWxpbnV4LWdudQogCWV4aXQgOzsKKyAgICBpKjg2OkxpbnV4Oio6KikKKwlMSUJDPWdudQorCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwlzZWQgJ3MvXgkvLycgPDwgRU9GID4kZHVtbXkuYworCSNpZmRlZiBfX2RpZXRsaWJjX18KKwlMSUJDPWRpZXRsaWJjCisJI2VuZGlmCitFT0YKKwlldmFsIGAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgZ3JlcCAnXkxJQkMnYAorCWVjaG8gIiR7VU5BTUVfTUFDSElORX0tcGMtbGludXgtJHtMSUJDfSIKKwlleGl0IDs7CiAgICAgaWE2NDpMaW51eDoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CiAJZXhpdCA7OwpAQCAtODY2LDc0ICs5MTQsMzMgQEAKICAgICBtNjgqOkxpbnV4Oio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKIAlleGl0IDs7Ci0gICAgbWlwczpMaW51eDoqOiopCisgICAgbWlwczpMaW51eDoqOiogfCBtaXBzNjQ6TGludXg6KjoqKQogCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKIAlzZWQgJ3MvXgkvLycgPDwgRU9GID4kZHVtbXkuYwogCSN1bmRlZiBDUFUKLQkjdW5kZWYgbWlwcwotCSN1bmRlZiBtaXBzZWwKKwkjdW5kZWYgJHtVTkFNRV9NQUNISU5FfQorCSN1bmRlZiAke1VOQU1FX01BQ0hJTkV9ZWwKIAkjaWYgZGVmaW5lZChfX01JUFNFTF9fKSB8fCBkZWZpbmVkKF9fTUlQU0VMKSB8fCBkZWZpbmVkKF9NSVBTRUwpIHx8IGRlZmluZWQoTUlQU0VMKQotCUNQVT1taXBzZWwKKwlDUFU9JHtVTkFNRV9NQUNISU5FfWVsCiAJI2Vsc2UKIAkjaWYgZGVmaW5lZChfX01JUFNFQl9fKSB8fCBkZWZpbmVkKF9fTUlQU0VCKSB8fCBkZWZpbmVkKF9NSVBTRUIpIHx8IGRlZmluZWQoTUlQU0VCKQotCUNQVT1taXBzCisJQ1BVPSR7VU5BTUVfTUFDSElORX0KIAkjZWxzZQogCUNQVT0KIAkjZW5kaWYKIAkjZW5kaWYKIEVPRgotCWV2YWwgImAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgc2VkIC1uICcKLQkgICAgL15DUFUvewotCQlzOiA6OmcKLQkJcAotCSAgICB9J2AiCi0JdGVzdCB4IiR7Q1BVfSIgIT0geCAmJiB7IGVjaG8gIiR7Q1BVfS11bmtub3duLWxpbnV4LWdudSI7IGV4aXQ7IH0KLQk7OwotICAgIG1pcHM2NDpMaW51eDoqOiopCi0JZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAotCXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCi0JI3VuZGVmIENQVQotCSN1bmRlZiBtaXBzNjQKLQkjdW5kZWYgbWlwczY0ZWwKLQkjaWYgZGVmaW5lZChfX01JUFNFTF9fKSB8fCBkZWZpbmVkKF9fTUlQU0VMKSB8fCBkZWZpbmVkKF9NSVBTRUwpIHx8IGRlZmluZWQoTUlQU0VMKQotCUNQVT1taXBzNjRlbAotCSNlbHNlCi0JI2lmIGRlZmluZWQoX19NSVBTRUJfXykgfHwgZGVmaW5lZChfX01JUFNFQikgfHwgZGVmaW5lZChfTUlQU0VCKSB8fCBkZWZpbmVkKE1JUFNFQikKLQlDUFU9bWlwczY0Ci0JI2Vsc2UKLQlDUFU9Ci0JI2VuZGlmCi0JI2VuZGlmCi1FT0YKLQlldmFsICJgJENDX0ZPUl9CVUlMRCAtRSAkZHVtbXkuYyAyPi9kZXYvbnVsbCB8IHNlZCAtbiAnCi0JICAgIC9eQ1BVL3sKLQkJczogOjpnCi0JCXAKLQkgICAgfSdgIgorCWV2YWwgYCRDQ19GT1JfQlVJTEQgLUUgJGR1bW15LmMgMj4vZGV2L251bGwgfCBncmVwICdeQ1BVJ2AKIAl0ZXN0IHgiJHtDUFV9IiAhPSB4ICYmIHsgZWNobyAiJHtDUFV9LXVua25vd24tbGludXgtZ251IjsgZXhpdDsgfQogCTs7CiAgICAgb3IzMjpMaW51eDoqOiopCiAJZWNobyBvcjMyLXVua25vd24tbGludXgtZ251CiAJZXhpdCA7OwotICAgIHBwYzpMaW51eDoqOiopCi0JZWNobyBwb3dlcnBjLXVua25vd24tbGludXgtZ251CisgICAgcGFkcmU6TGludXg6KjoqKQorCWVjaG8gc3BhcmMtdW5rbm93bi1saW51eC1nbnUKIAlleGl0IDs7Ci0gICAgcHBjNjQ6TGludXg6KjoqKQotCWVjaG8gcG93ZXJwYzY0LXVua25vd24tbGludXgtZ251Ci0JZXhpdCA7OwotICAgIGFscGhhOkxpbnV4Oio6KikKLQljYXNlIGBzZWQgLW4gJy9eY3B1IG1vZGVsL3MvXi4qOiBcKC4qXCkvXDEvcCcgPCAvcHJvYy9jcHVpbmZvYCBpbgotCSAgRVY1KSAgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjUgOzsKLQkgIEVWNTYpICBVTkFNRV9NQUNISU5FPWFscGhhZXY1NiA7OwotCSAgUENBNTYpIFVOQU1FX01BQ0hJTkU9YWxwaGFwY2E1NiA7OwotCSAgUENBNTcpIFVOQU1FX01BQ0hJTkU9YWxwaGFwY2E1NiA7OwotCSAgRVY2KSAgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjYgOzsKLQkgIEVWNjcpICBVTkFNRV9NQUNISU5FPWFscGhhZXY2NyA7OwotCSAgRVY2OCopIFVOQU1FX01BQ0hJTkU9YWxwaGFldjY4IDs7Ci0gICAgICAgIGVzYWMKLQlvYmpkdW1wIC0tcHJpdmF0ZS1oZWFkZXJzIC9iaW4vc2ggfCBncmVwIGxkLnNvLjEgPi9kZXYvbnVsbAotCWlmIHRlc3QgIiQ/IiA9IDAgOyB0aGVuIExJQkM9ImxpYmMxIiA7IGVsc2UgTElCQz0iIiA7IGZpCi0JZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251JHtMSUJDfQorICAgIHBhcmlzYzY0OkxpbnV4Oio6KiB8IGhwcGE2NDpMaW51eDoqOiopCisJZWNobyBocHBhNjQtdW5rbm93bi1saW51eC1nbnUKIAlleGl0IDs7CiAgICAgcGFyaXNjOkxpbnV4Oio6KiB8IGhwcGE6TGludXg6KjoqKQogCSMgTG9vayBmb3IgQ1BVIGxldmVsCkBAIC05NDMsOCArOTUwLDExIEBACiAJICAqKSAgICBlY2hvIGhwcGEtdW5rbm93bi1saW51eC1nbnUgOzsKIAllc2FjCiAJZXhpdCA7OwotICAgIHBhcmlzYzY0OkxpbnV4Oio6KiB8IGhwcGE2NDpMaW51eDoqOiopCi0JZWNobyBocHBhNjQtdW5rbm93bi1saW51eC1nbnUKKyAgICBwcGM2NDpMaW51eDoqOiopCisJZWNobyBwb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgcHBjOkxpbnV4Oio6KikKKwllY2hvIHBvd2VycGMtdW5rbm93bi1saW51eC1nbnUKIAlleGl0IDs7CiAgICAgczM5MDpMaW51eDoqOiogfCBzMzkweDpMaW51eDoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LWlibS1saW51eApAQCAtOTU4LDYgKzk2OCw5IEBACiAgICAgc3BhcmM6TGludXg6KjoqIHwgc3BhcmM2NDpMaW51eDoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CiAJZXhpdCA7OworICAgIHRpbGUqOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdGlsZXJhLWxpbnV4LWdudQorCWV4aXQgOzsKICAgICB2YXg6TGludXg6KjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1kZWMtbGludXgtZ251CiAJZXhpdCA7OwpAQCAtOTY3LDY5ICs5ODAsNiBAQAogICAgIHh0ZW5zYSo6TGludXg6KjoqKQogICAgIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKIAlleGl0IDs7Ci0gICAgaSo4NjpMaW51eDoqOiopCi0JIyBUaGUgQkZEIGxpbmtlciBrbm93cyB3aGF0IHRoZSBkZWZhdWx0IG9iamVjdCBmaWxlIGZvcm1hdCBpcywgc28KLQkjIGZpcnN0IHNlZSBpZiBpdCB3aWxsIHRlbGwgdXMuIGNkIHRvIHRoZSByb290IGRpcmVjdG9yeSB0byBwcmV2ZW50Ci0JIyBwcm9ibGVtcyB3aXRoIG90aGVyIHByb2dyYW1zIG9yIGRpcmVjdG9yaWVzIGNhbGxlZCBgbGQnIGluIHRoZSBwYXRoLgotCSMgU2V0IExDX0FMTD1DIHRvIGVuc3VyZSBsZCBvdXRwdXRzIG1lc3NhZ2VzIGluIEVuZ2xpc2guCi0JbGRfc3VwcG9ydGVkX3RhcmdldHM9YGNkIC87IExDX0FMTD1DIGxkIC0taGVscCAyPiYxIFwKLQkJCSB8IHNlZCAtbmUgJy9zdXBwb3J0ZWQgdGFyZ2V0czovIWQKLQkJCQkgICAgcy9bIAldWyAJXSovIC9nCi0JCQkJICAgIHMvLipzdXBwb3J0ZWQgdGFyZ2V0czogKi8vCi0JCQkJICAgIHMvIC4qLy8KLQkJCQkgICAgcCdgCi0gICAgICAgIGNhc2UgIiRsZF9zdXBwb3J0ZWRfdGFyZ2V0cyIgaW4KLQkgIGVsZjMyLWkzODYpCi0JCVRFTlRBVElWRT0iJHtVTkFNRV9NQUNISU5FfS1wYy1saW51eC1nbnUiCi0JCTs7Ci0JICBhLm91dC1pMzg2LWxpbnV4KQotCQllY2hvICIke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4LWdudWFvdXQiCi0JCWV4aXQgOzsKLQkgIGNvZmYtaTM4NikKLQkJZWNobyAiJHtVTkFNRV9NQUNISU5FfS1wYy1saW51eC1nbnVjb2ZmIgotCQlleGl0IDs7Ci0JICAiIikKLQkJIyBFaXRoZXIgYSBwcmUtQkZEIGEub3V0IGxpbmtlciAobGludXgtZ251b2xkbGQpIG9yCi0JCSMgb25lIHRoYXQgZG9lcyBub3QgZ2l2ZSB1cyB1c2VmdWwgLS1oZWxwLgotCQllY2hvICIke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4LWdudW9sZGxkIgotCQlleGl0IDs7Ci0JZXNhYwotCSMgRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGRlZmF1bHQgY29tcGlsZXIgaXMgYS5vdXQgb3IgZWxmCi0JZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAotCXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCi0JI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0JI2lmZGVmIF9fRUxGX18KLQkjIGlmZGVmIF9fR0xJQkNfXwotCSMgIGlmIF9fR0xJQkNfXyA+PSAyCi0JTElCQz1nbnUKLQkjICBlbHNlCi0JTElCQz1nbnVsaWJjMQotCSMgIGVuZGlmCi0JIyBlbHNlCi0JTElCQz1nbnVsaWJjMQotCSMgZW5kaWYKLQkjZWxzZQotCSNpZiBkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpIHx8IGRlZmluZWQoX19QR0kpIHx8IGRlZmluZWQoX19TVU5QUk9fQykgfHwgZGVmaW5lZChfX1NVTlBST19DQykKLQlMSUJDPWdudQotCSNlbHNlCi0JTElCQz1nbnVhb3V0Ci0JI2VuZGlmCi0JI2VuZGlmCi0JI2lmZGVmIF9fZGlldGxpYmNfXwotCUxJQkM9ZGlldGxpYmMKLQkjZW5kaWYKLUVPRgotCWV2YWwgImAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgc2VkIC1uICcKLQkgICAgL15MSUJDL3sKLQkJczogOjpnCi0JCXAKLQkgICAgfSdgIgotCXRlc3QgeCIke0xJQkN9IiAhPSB4ICYmIHsKLQkJZWNobyAiJHtVTkFNRV9NQUNISU5FfS1wYy1saW51eC0ke0xJQkN9IgotCQlleGl0Ci0JfQotCXRlc3QgeCIke1RFTlRBVElWRX0iICE9IHggJiYgeyBlY2hvICIke1RFTlRBVElWRX0iOyBleGl0OyB9Ci0JOzsKICAgICBpKjg2OkRZTklYL3B0eDo0KjoqKQogCSMgcHR4IDQuMCBkb2VzIHVuYW1lIC1zIGNvcnJlY3RseSwgd2l0aCBEWU5JWC9wdHggaW4gdGhlcmUuCiAJIyBlYXJsaWVyIHZlcnNpb25zIGFyZSBtZXNzZWQgdXAgYW5kIHB1dCB0aGUgbm9kZW5hbWUgaW4gYm90aApAQCAtMTA1OCw3ICsxMDA4LDcgQEAKICAgICBpKjg2OnN5bGxhYmxlOio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc3lsbGFibGUKIAlleGl0IDs7Ci0gICAgaSo4NjpMeW54T1M6Mi4qOiogfCBpKjg2Okx5bnhPUzozLlswMV0qOiogfCBpKjg2Okx5bnhPUzo0LjAqOiopCisgICAgaSo4NjpMeW54T1M6Mi4qOiogfCBpKjg2Okx5bnhPUzozLlswMV0qOiogfCBpKjg2Okx5bnhPUzo0LlswMl0qOiopCiAJZWNobyBpMzg2LXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgOzsKICAgICBpKjg2OipET1M6KjoqKQpAQCAtMTEwMiw4ICsxMDUyLDExIEBACiAgICAgcGM6KjoqOiopCiAJIyBMZWZ0IGhlcmUgZm9yIGNvbXBhdGliaWxpdHk6CiAgICAgICAgICMgdW5hbWUgLW0gcHJpbnRzIGZvciBESkdQUCBhbHdheXMgJ3BjJywgYnV0IGl0IHByaW50cyBub3RoaW5nIGFib3V0Ci0gICAgICAgICMgdGhlIHByb2Nlc3Nvciwgc28gd2UgcGxheSBzYWZlIGJ5IGFzc3VtaW5nIGkzODYuCi0JZWNobyBpMzg2LXBjLW1zZG9zZGpncHAKKyAgICAgICAgIyB0aGUgcHJvY2Vzc29yLCBzbyB3ZSBwbGF5IHNhZmUgYnkgYXNzdW1pbmcgaTU4Ni4KKwkjIE5vdGU6IHdoYXRldmVyIHRoaXMgaXMsIGl0IE1VU1QgYmUgdGhlIHNhbWUgYXMgd2hhdCBjb25maWcuc3ViCisJIyBwcmludHMgZm9yIHRoZSAiZGpncHAiIGhvc3QsIG9yIGVsc2UgR0RCIGNvbmZpZ3VyeSB3aWxsIGRlY2lkZSB0aGF0CisJIyB0aGlzIGlzIGEgY3Jvc3MtYnVpbGQuCisJZWNobyBpNTg2LXBjLW1zZG9zZGpncHAKICAgICAgICAgZXhpdCA7OwogICAgIEludGVsOk1hY2g6Myo6KikKIAllY2hvIGkzODYtcGMtbWFjaDMKQEAgLTExNDEsNiArMTA5NCwxNiBAQAogICAgIDNbMzRdPz86Kjo0LjA6KiB8IDNbMzRdPz8sKjoqOjQuMDoqKQogICAgICAgICAvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgZ3JlcCA4NiA+L2Rldi9udWxsIFwKICAgICAgICAgICAmJiB7IGVjaG8gaTQ4Ni1uY3Itc3lzdjQ7IGV4aXQ7IH0gOzsKKyAgICBOQ1IqOio6NC4yOiogfCBNUFJBUyo6Kjo0LjI6KikKKwlPU19SRUw9Jy4zJworCXRlc3QgLXIgL2V0Yy8ucmVsaWQgXAorCSAgICAmJiBPU19SRUw9LmBzZWQgLW4gJ3MvW14gXSogW14gXSogXChbMC05XVswLTldXCkuKi9cMS9wJyA8IC9ldGMvLnJlbGlkYAorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCBncmVwIDg2ID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTQ4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfQorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCAvYmluL2dyZXAgZW50aXVtID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfQorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCAvYmluL2dyZXAgcHRlcm9uID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfSA7OwogICAgIG02OCo6THlueE9TOjIuKjoqIHwgbTY4KjpMeW54T1M6My4wKjoqKQogCWVjaG8gbTY4ay11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDs7CkBAIC0xMTUzLDcgKzExMTYsNyBAQAogICAgIHJzNjAwMDpMeW54T1M6Mi4qOiopCiAJZWNobyByczYwMDAtdW5rbm93bi1seW54b3Mke1VOQU1FX1JFTEVBU0V9CiAJZXhpdCA7OwotICAgIFBvd2VyUEM6THlueE9TOjIuKjoqIHwgUG93ZXJQQzpMeW54T1M6My5bMDFdKjoqIHwgUG93ZXJQQzpMeW54T1M6NC4wKjoqKQorICAgIFBvd2VyUEM6THlueE9TOjIuKjoqIHwgUG93ZXJQQzpMeW54T1M6My5bMDFdKjoqIHwgUG93ZXJQQzpMeW54T1M6NC5bMDJdKjoqKQogCWVjaG8gcG93ZXJwYy11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDs7CiAgICAgU01bQkVdUzpVTklYX1NWOio6KikKQEAgLTEyMTYsNiArMTE3OSw5IEBACiAgICAgQmVQQzpCZU9TOio6KikJIyBCZU9TIHJ1bm5pbmcgb24gSW50ZWwgUEMgY29tcGF0aWJsZS4KIAllY2hvIGk1ODYtcGMtYmVvcwogCWV4aXQgOzsKKyAgICBCZVBDOkhhaWt1Oio6KikJIyBIYWlrdSBydW5uaW5nIG9uIEludGVsIFBDIGNvbXBhdGlibGUuCisJZWNobyBpNTg2LXBjLWhhaWt1CisJZXhpdCA7OwogICAgIFNYLTQ6U1VQRVItVVg6KjoqKQogCWVjaG8gc3g0LW5lYy1zdXBlcnV4JHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgOzsKQEAgLTEyNDMsNiArMTIwOSwxNiBAQAogICAgICo6RGFyd2luOio6KikKIAlVTkFNRV9QUk9DRVNTT1I9YHVuYW1lIC1wYCB8fCBVTkFNRV9QUk9DRVNTT1I9dW5rbm93bgogCWNhc2UgJFVOQU1FX1BST0NFU1NPUiBpbgorCSAgICBpMzg2KQorCQlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJCWlmIFsgIiRDQ19GT1JfQlVJTEQiICE9ICdub19jb21waWxlcl9mb3VuZCcgXTsgdGhlbgorCQkgIGlmIChlY2hvICcjaWZkZWYgX19MUDY0X18nOyBlY2hvIElTXzY0QklUX0FSQ0g7IGVjaG8gJyNlbmRpZicpIHwgXAorCQkgICAgICAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwgXAorCQkgICAgICBncmVwIElTXzY0QklUX0FSQ0ggPi9kZXYvbnVsbAorCQkgIHRoZW4KKwkJICAgICAgVU5BTUVfUFJPQ0VTU09SPSJ4ODZfNjQiCisJCSAgZmkKKwkJZmkgOzsKIAkgICAgdW5rbm93bikgVU5BTUVfUFJPQ0VTU09SPXBvd2VycGMgOzsKIAllc2FjCiAJZWNobyAke1VOQU1FX1BST0NFU1NPUn0tYXBwbGUtZGFyd2luJHtVTkFNRV9SRUxFQVNFfQpAQCAtMTMyNCw2ICsxMzAwLDkgQEAKICAgICBpKjg2OnJkb3M6KjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1yZG9zCiAJZXhpdCA7OworICAgIGkqODY6QVJPUzoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWFyb3MKKwlleGl0IDs7CiBlc2FjCiAKICNlY2hvICcoTm8gdW5hbWUgY29tbWFuZCBvciB1bmFtZSBvdXRwdXQgbm90IHJlY29nbml6ZWQuKScgMT4mMgpAQCAtMTQ4NCw5ICsxNDYzLDkgQEAKIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHlvdSBhcmUgdXNpbmcuIEl0IGlzIGFkdmlzZWQgdGhhdCB5b3UKIGRvd25sb2FkIHRoZSBtb3N0IHVwIHRvIGRhdGUgdmVyc2lvbiBvZiB0aGUgY29uZmlnIHNjcmlwdHMgZnJvbQogCi0gIGh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL2NnaS1iaW4vdmlld2N2cy8qY2hlY2tvdXQqL2NvbmZpZy9jb25maWcvY29uZmlnLmd1ZXNzCisgIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuZ3Vlc3M7aGI9SEVBRAogYW5kCi0gIGh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL2NnaS1iaW4vdmlld2N2cy8qY2hlY2tvdXQqL2NvbmZpZy9jb25maWcvY29uZmlnLnN1YgorICBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLnN1YjtoYj1IRUFECiAKIElmIHRoZSB2ZXJzaW9uIHlvdSBydW4gKCQwKSBpcyBhbHJlYWR5IHVwIHRvIGRhdGUsIHBsZWFzZQogc2VuZCB0aGUgZm9sbG93aW5nIGRhdGEgYW5kIGFueSBpbmZvcm1hdGlvbiB5b3UgdGhpbmsgbWlnaHQgYmUKZGlmZiAtLWdpdCBhL2NvbmZpZy5zdWIgYi9jb25maWcuc3ViCmluZGV4IDY3NTk4MjUuLjMyMGUzMDMgMTAwNzU1Ci0tLSBhL2NvbmZpZy5zdWIKKysrIGIvY29uZmlnLnN1YgpAQCAtMSwxMCArMSwxMCBAQAogIyEgL2Jpbi9zaAogIyBDb25maWd1cmF0aW9uIHZhbGlkYXRpb24gc3Vicm91dGluZSBzY3JpcHQuCiAjICAgQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LAotIyAgIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgKKyMgICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwCiAjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKLXRpbWVzdGFtcD0nMjAwOC0wMS0xNicKK3RpbWVzdGFtcD0nMjAxMC0wOS0xMScKIAogIyBUaGlzIGZpbGUgaXMgKGluIHByaW5jaXBsZSkgY29tbW9uIHRvIEFMTCBHTlUgc29mdHdhcmUuCiAjIFRoZSBwcmVzZW5jZSBvZiBhIG1hY2hpbmUgaW4gdGhpcyBmaWxlIHN1Z2dlc3RzIHRoYXQgU09NRSBHTlUgc29mdHdhcmUKQEAgLTMyLDEzICszMiwxNiBAQAogCiAKICMgUGxlYXNlIHNlbmQgcGF0Y2hlcyB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9yZz4uICBTdWJtaXQgYSBjb250ZXh0Ci0jIGRpZmYgYW5kIGEgcHJvcGVybHkgZm9ybWF0dGVkIENoYW5nZUxvZyBlbnRyeS4KKyMgZGlmZiBhbmQgYSBwcm9wZXJseSBmb3JtYXR0ZWQgR05VIENoYW5nZUxvZyBlbnRyeS4KICMKICMgQ29uZmlndXJhdGlvbiBzdWJyb3V0aW5lIHRvIHZhbGlkYXRlIGFuZCBjYW5vbmljYWxpemUgYSBjb25maWd1cmF0aW9uIHR5cGUuCiAjIFN1cHBseSB0aGUgc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb24gdHlwZSBhcyBhbiBhcmd1bWVudC4KICMgSWYgaXQgaXMgaW52YWxpZCwgd2UgcHJpbnQgYW4gZXJyb3IgbWVzc2FnZSBvbiBzdGRlcnIgYW5kIGV4aXQgd2l0aCBjb2RlIDEuCiAjIE90aGVyd2lzZSwgd2UgcHJpbnQgdGhlIGNhbm9uaWNhbCBjb25maWcgdHlwZSBvbiBzdGRvdXQgYW5kIHN1Y2NlZWQuCiAKKyMgWW91IGNhbiBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgc2NyaXB0IGZyb206CisjIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuc3ViO2hiPUhFQUQKKwogIyBUaGlzIGZpbGUgaXMgc3VwcG9zZWQgdG8gYmUgdGhlIHNhbWUgZm9yIGFsbCBHTlUgcGFja2FnZXMKICMgYW5kIHJlY29nbml6ZSBhbGwgdGhlIENQVSB0eXBlcywgc3lzdGVtIHR5cGVzIGFuZCBhbGlhc2VzCiAjIHRoYXQgYXJlIG1lYW5pbmdmdWwgd2l0aCAqYW55KiBHTlUgc29mdHdhcmUuCkBAIC03Miw4ICs3NSw5IEBACiB2ZXJzaW9uPSJcCiBHTlUgY29uZmlnLnN1YiAoJHRpbWVzdGFtcCkKIAotQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLAotMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK0NvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwKKzIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZQorU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTwogd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIgpAQCAtMTIwLDggKzEyNCwxMCBAQAogIyBIZXJlIHdlIG11c3QgcmVjb2duaXplIGFsbCB0aGUgdmFsaWQgS0VSTkVMLU9TIGNvbWJpbmF0aW9ucy4KIG1heWJlX29zPWBlY2hvICQxIHwgc2VkICdzL15cKC4qXCktXChbXi1dKi1bXi1dKlwpJC9cMi8nYAogY2FzZSAkbWF5YmVfb3MgaW4KLSAgbnRvLXFueCogfCBsaW51eC1nbnUqIHwgbGludXgtZGlldGxpYmMgfCBsaW51eC1uZXdsaWIqIHwgbGludXgtdWNsaWJjKiB8IFwKLSAgdWNsaW51eC11Y2xpYmMqIHwgdWNsaW51eC1nbnUqIHwga2ZyZWVic2QqLWdudSogfCBrbmV0YnNkKi1nbnUqIHwgbmV0YnNkKi1nbnUqIHwgXAorICBudG8tcW54KiB8IGxpbnV4LWdudSogfCBsaW51eC1hbmRyb2lkKiB8IGxpbnV4LWRpZXRsaWJjIHwgbGludXgtbmV3bGliKiB8IFwKKyAgbGludXgtdWNsaWJjKiB8IHVjbGludXgtdWNsaWJjKiB8IHVjbGludXgtZ251KiB8IGtmcmVlYnNkKi1nbnUqIHwgXAorICBrbmV0YnNkKi1nbnUqIHwgbmV0YnNkKi1nbnUqIHwgXAorICBrb3BlbnNvbGFyaXMqLWdudSogfCBcCiAgIHN0b3JtLWNoYW9zKiB8IG9zMi1lbXgqIHwgcnRtay1ub3ZhKikKICAgICBvcz0tJG1heWJlX29zCiAgICAgYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAncy9eXCguKlwpLVwoW14tXSotW14tXSpcKSQvXDEvJ2AKQEAgLTE0OCwxMCArMTU0LDEzIEBACiAJLWNvbnZlcmdlbnQqIHwgLW5jciogfCAtbmV3cyB8IC0zMiogfCAtMzYwMCogfCAtMzEwMCogfCAtaGl0YWNoaSogfFwKIAktY1sxMjNdKiB8IC1jb252ZXgqIHwgLXN1biB8IC1jcmRzIHwgLW9tcm9uKiB8IC1kZyB8IC11bHRyYSB8IC10dGkqIHwgXAogCS1oYXJyaXMgfCAtZG9scGhpbiB8IC1oaWdobGV2ZWwgfCAtZ291bGQgfCAtY2JtIHwgLW5zIHwgLW1hc3Njb21wIHwgXAotCS1hcHBsZSB8IC1heGlzIHwgLWtudXRoIHwgLWNyYXkpCisJLWFwcGxlIHwgLWF4aXMgfCAta251dGggfCAtY3JheSB8IC1taWNyb2JsYXplKQogCQlvcz0KIAkJYmFzaWNfbWFjaGluZT0kMQogCQk7OworICAgICAgICAtYmx1ZWdlbmUqKQorCSAgICAgICAgb3M9LWNuaworCQk7OwogCS1zaW0gfCAtY2lzY28gfCAtb2tpIHwgLXdlYyB8IC13aW5ib25kKQogCQlvcz0KIAkJYmFzaWNfbWFjaGluZT0kMQpAQCAtMjQ5LDEzICsyNTgsMTYgQEAKIAl8IGg4MzAwIHwgaDg1MDAgfCBocHBhIHwgaHBwYTEuWzAxXSB8IGhwcGEyLjAgfCBocHBhMi4wW253XSB8IGhwcGE2NCBcCiAJfCBpMzcwIHwgaTg2MCB8IGk5NjAgfCBpYTY0IFwKIAl8IGlwMmsgfCBpcTIwMDAgXAorCXwgbG0zMiBcCiAJfCBtMzJjIHwgbTMyciB8IG0zMnJsZSB8IG02ODAwMCB8IG02OGsgfCBtODhrIFwKLQl8IG1heHEgfCBtYiB8IG1pY3JvYmxhemUgfCBtY29yZSB8IG1lcCBcCisJfCBtYXhxIHwgbWIgfCBtaWNyb2JsYXplIHwgbWNvcmUgfCBtZXAgfCBtZXRhZyBcCiAJfCBtaXBzIHwgbWlwc2JlIHwgbWlwc2ViIHwgbWlwc2VsIHwgbWlwc2xlIFwKIAl8IG1pcHMxNiBcCiAJfCBtaXBzNjQgfCBtaXBzNjRlbCBcCi0JfCBtaXBzNjR2ciB8IG1pcHM2NHZyZWwgXAorCXwgbWlwczY0b2N0ZW9uIHwgbWlwczY0b2N0ZW9uZWwgXAogCXwgbWlwczY0b3Jpb24gfCBtaXBzNjRvcmlvbmVsIFwKKwl8IG1pcHM2NHI1OTAwIHwgbWlwczY0cjU5MDBlbCBcCisJfCBtaXBzNjR2ciB8IG1pcHM2NHZyZWwgXAogCXwgbWlwczY0dnI0MTAwIHwgbWlwczY0dnI0MTAwZWwgXAogCXwgbWlwczY0dnI0MzAwIHwgbWlwczY0dnI0MzAwZWwgXAogCXwgbWlwczY0dnI1MDAwIHwgbWlwczY0dnI1MDAwZWwgXApAQCAtMjY4LDI4ICsyODAsNDEgQEAKIAl8IG1pcHNpc2E2NHNyNzFrIHwgbWlwc2lzYTY0c3I3MWtlbCBcCiAJfCBtaXBzdHgzOSB8IG1pcHN0eDM5ZWwgXAogCXwgbW4xMDIwMCB8IG1uMTAzMDAgXAorCXwgbW94aWUgXAogCXwgbXQgXAogCXwgbXNwNDMwIFwKKwl8IG5kczMyIHwgbmRzMzJsZSB8IG5kczMyYmUgXAogCXwgbmlvcyB8IG5pb3MyIFwKIAl8IG5zMTZrIHwgbnMzMmsgXAogCXwgb3IzMiBcCiAJfCBwZHAxMCB8IHBkcDExIHwgcGogfCBwamwgXAogCXwgcG93ZXJwYyB8IHBvd2VycGM2NCB8IHBvd2VycGM2NGxlIHwgcG93ZXJwY2xlIHwgcHBjYmUgXAogCXwgcHlyYW1pZCBcCisJfCByeCBcCiAJfCBzY29yZSBcCi0JfCBzaCB8IHNoWzEyMzRdIHwgc2hbMjRdYSB8IHNoWzIzXWUgfCBzaFszNF1lYiB8IHNoZWIgfCBzaGJlIHwgc2hsZSB8IHNoWzEyMzRdbGUgfCBzaDNlbGUgXAorCXwgc2ggfCBzaFsxMjM0XSB8IHNoWzI0XWEgfCBzaFsyNF1hZWIgfCBzaFsyM11lIHwgc2hbMzRdZWIgfCBzaGViIHwgc2hiZSB8IHNobGUgfCBzaFsxMjM0XWxlIHwgc2gzZWxlIFwKIAl8IHNoNjQgfCBzaDY0bGUgXAogCXwgc3BhcmMgfCBzcGFyYzY0IHwgc3BhcmM2NGIgfCBzcGFyYzY0diB8IHNwYXJjODZ4IHwgc3BhcmNsZXQgfCBzcGFyY2xpdGUgXAogCXwgc3BhcmN2OCB8IHNwYXJjdjkgfCBzcGFyY3Y5YiB8IHNwYXJjdjl2IFwKIAl8IHNwdSB8IHN0cm9uZ2FybSBcCi0JfCB0YWhvZSB8IHRodW1iIHwgdGljNHggfCB0aWM4MCB8IHRyb24gXAorCXwgdGFob2UgfCB0aHVtYiB8IHRpYzR4IHwgdGljNTR4IHwgdGljNTV4IHwgdGljNnggfCB0aWM4MCB8IHRyb24gXAorCXwgdWJpY29tMzIgXAogCXwgdjg1MCB8IHY4NTBlIFwKIAl8IHdlMzJrIFwKIAl8IHg4NiB8IHhjMTZ4IHwgeHNjYWxlIHwgeHNjYWxlZVtibF0gfCB4c3Rvcm15MTYgfCB4dGVuc2EgXAotCXwgejhrKQorCXwgejhrIHwgejgwKQogCQliYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXVua25vd24KIAkJOzsKLQltNjgxMSB8IG02OGhjMTEgfCBtNjgxMiB8IG02OGhjMTIpCisJYzU0eCkKKwkJYmFzaWNfbWFjaGluZT10aWM1NHgtdW5rbm93bgorCQk7OworCWM1NXgpCisJCWJhc2ljX21hY2hpbmU9dGljNTV4LXVua25vd24KKwkJOzsKKwljNngpCisJCWJhc2ljX21hY2hpbmU9dGljNngtdW5rbm93bgorCQk7OworCW02ODExIHwgbTY4aGMxMSB8IG02ODEyIHwgbTY4aGMxMiB8IHBpY29jaGlwKQogCQkjIE1vdG9yb2xhIDY4SEMxMS8xMi4KIAkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCiAJCW9zPS1ub25lCkBAIC0zMjAsNyArMzQ1LDcgQEAKIAl8IGFybS0qICB8IGFybWJlLSogfCBhcm1sZS0qIHwgYXJtZWItKiB8IGFybXYqLSogXAogCXwgYXZyLSogfCBhdnIzMi0qIFwKIAl8IGJmaW4tKiB8IGJzMjAwMC0qIFwKLQl8IGNbMTIzXSogfCBjMzAtKiB8IFtjanRdOTAtKiB8IGM0eC0qIHwgYzU0eC0qIHwgYzU1eC0qIHwgYzZ4LSogXAorCXwgY1sxMjNdKiB8IGMzMC0qIHwgW2NqdF05MC0qIHwgYzR4LSogXAogCXwgY2xpcHBlci0qIHwgY3JheW52LSogfCBjeWRyYS0qIFwKIAl8IGQxMHYtKiB8IGQzMHYtKiB8IGRseC0qIFwKIAl8IGVseHNpLSogXApAQCAtMzI5LDE0ICszNTQsMTcgQEAKIAl8IGhwcGEtKiB8IGhwcGExLlswMV0tKiB8IGhwcGEyLjAtKiB8IGhwcGEyLjBbbnddLSogfCBocHBhNjQtKiBcCiAJfCBpKjg2LSogfCBpODYwLSogfCBpOTYwLSogfCBpYTY0LSogXAogCXwgaXAyay0qIHwgaXEyMDAwLSogXAorCXwgbG0zMi0qIFwKIAl8IG0zMmMtKiB8IG0zMnItKiB8IG0zMnJsZS0qIFwKIAl8IG02ODAwMC0qIHwgbTY4MFswMTIzNDZdMC0qIHwgbTY4MzYwLSogfCBtNjgzPzItKiB8IG02OGstKiBcCi0JfCBtODgxMTAtKiB8IG04OGstKiB8IG1heHEtKiB8IG1jb3JlLSogXAorCXwgbTg4MTEwLSogfCBtODhrLSogfCBtYXhxLSogfCBtY29yZS0qIHwgbWV0YWctKiB8IG1pY3JvYmxhemUtKiBcCiAJfCBtaXBzLSogfCBtaXBzYmUtKiB8IG1pcHNlYi0qIHwgbWlwc2VsLSogfCBtaXBzbGUtKiBcCiAJfCBtaXBzMTYtKiBcCiAJfCBtaXBzNjQtKiB8IG1pcHM2NGVsLSogXAotCXwgbWlwczY0dnItKiB8IG1pcHM2NHZyZWwtKiBcCisJfCBtaXBzNjRvY3Rlb24tKiB8IG1pcHM2NG9jdGVvbmVsLSogXAogCXwgbWlwczY0b3Jpb24tKiB8IG1pcHM2NG9yaW9uZWwtKiBcCisJfCBtaXBzNjRyNTkwMC0qIHwgbWlwczY0cjU5MDBlbC0qIFwKKwl8IG1pcHM2NHZyLSogfCBtaXBzNjR2cmVsLSogXAogCXwgbWlwczY0dnI0MTAwLSogfCBtaXBzNjR2cjQxMDBlbC0qIFwKIAl8IG1pcHM2NHZyNDMwMC0qIHwgbWlwczY0dnI0MzAwZWwtKiBcCiAJfCBtaXBzNjR2cjUwMDAtKiB8IG1pcHM2NHZyNTAwMGVsLSogXApAQCAtMzUxLDI3ICszNzksMzAgQEAKIAl8IG1taXgtKiBcCiAJfCBtdC0qIFwKIAl8IG1zcDQzMC0qIFwKKwl8IG5kczMyLSogfCBuZHMzMmxlLSogfCBuZHMzMmJlLSogXAogCXwgbmlvcy0qIHwgbmlvczItKiBcCiAJfCBub25lLSogfCBucDEtKiB8IG5zMTZrLSogfCBuczMyay0qIFwKIAl8IG9yaW9uLSogXAogCXwgcGRwMTAtKiB8IHBkcDExLSogfCBwai0qIHwgcGpsLSogfCBwbi0qIHwgcG93ZXItKiBcCiAJfCBwb3dlcnBjLSogfCBwb3dlcnBjNjQtKiB8IHBvd2VycGM2NGxlLSogfCBwb3dlcnBjbGUtKiB8IHBwY2JlLSogXAogCXwgcHlyYW1pZC0qIFwKLQl8IHJvbXAtKiB8IHJzNjAwMC0qIFwKLQl8IHNoLSogfCBzaFsxMjM0XS0qIHwgc2hbMjRdYS0qIHwgc2hbMjNdZS0qIHwgc2hbMzRdZWItKiB8IHNoZWItKiB8IHNoYmUtKiBcCisJfCByb21wLSogfCByczYwMDAtKiB8IHJ4LSogXAorCXwgc2gtKiB8IHNoWzEyMzRdLSogfCBzaFsyNF1hLSogfCBzaFsyNF1hZWItKiB8IHNoWzIzXWUtKiB8IHNoWzM0XWViLSogfCBzaGViLSogfCBzaGJlLSogXAogCXwgc2hsZS0qIHwgc2hbMTIzNF1sZS0qIHwgc2gzZWxlLSogfCBzaDY0LSogfCBzaDY0bGUtKiBcCiAJfCBzcGFyYy0qIHwgc3BhcmM2NC0qIHwgc3BhcmM2NGItKiB8IHNwYXJjNjR2LSogfCBzcGFyYzg2eC0qIHwgc3BhcmNsZXQtKiBcCiAJfCBzcGFyY2xpdGUtKiBcCiAJfCBzcGFyY3Y4LSogfCBzcGFyY3Y5LSogfCBzcGFyY3Y5Yi0qIHwgc3BhcmN2OXYtKiB8IHN0cm9uZ2FybS0qIHwgc3YxLSogfCBzeD8tKiBcCiAJfCB0YWhvZS0qIHwgdGh1bWItKiBcCiAJfCB0aWMzMC0qIHwgdGljNHgtKiB8IHRpYzU0eC0qIHwgdGljNTV4LSogfCB0aWM2eC0qIHwgdGljODAtKiBcCisJfCB0aWxlLSogfCB0aWxlZ3gtKiBcCiAJfCB0cm9uLSogXAorCXwgdWJpY29tMzItKiBcCiAJfCB2ODUwLSogfCB2ODUwZS0qIHwgdmF4LSogXAogCXwgd2UzMmstKiBcCiAJfCB4ODYtKiB8IHg4Nl82NC0qIHwgeGMxNngtKiB8IHhwczEwMC0qIHwgeHNjYWxlLSogfCB4c2NhbGVlW2JsXS0qIFwKIAl8IHhzdG9ybXkxNi0qIHwgeHRlbnNhKi0qIFwKIAl8IHltcC0qIFwKLQl8IHo4ay0qKQorCXwgejhrLSogfCB6ODAtKikKIAkJOzsKIAkjIFJlY29nbml6ZSB0aGUgYmFzaWMgQ1BVIHR5cGVzIHdpdGhvdXQgY29tcGFueSBuYW1lLCB3aXRoIGdsb2IgbWF0Y2guCiAJeHRlbnNhKikKQEAgLTQzOSw2ICs0NzAsMTAgQEAKIAkJYmFzaWNfbWFjaGluZT1tNjhrLWFwb2xsbwogCQlvcz0tYnNkCiAJCTs7CisJYXJvcykKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCisJCW9zPS1hcm9zCisJCTs7CiAJYXV4KQogCQliYXNpY19tYWNoaW5lPW02OGstYXBwbGUKIAkJb3M9LWF1eApAQCAtNDU1LDEwICs0OTAsMjcgQEAKIAkJYmFzaWNfbWFjaGluZT1iZmluLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCiAJCW9zPS1saW51eAogCQk7OworCWJsdWVnZW5lKikKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWlibQorCQlvcz0tY25rCisJCTs7CisJYzU0eC0qKQorCQliYXNpY19tYWNoaW5lPXRpYzU0eC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCWM1NXgtKikKKwkJYmFzaWNfbWFjaGluZT10aWM1NXgtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwljNngtKikKKwkJYmFzaWNfbWFjaGluZT10aWM2eC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OwogCWM5MCkKIAkJYmFzaWNfbWFjaGluZT1jOTAtY3JheQogCQlvcz0tdW5pY29zCiAJCTs7CisgICAgICAgIGNlZ2NjKQorCQliYXNpY19tYWNoaW5lPWFybS11bmtub3duCisJCW9zPS1jZWdjYworCQk7OwogCWNvbnZleC1jMSkKIAkJYmFzaWNfbWFjaGluZT1jMS1jb252ZXgKIAkJb3M9LWJzZApAQCAtNTI2LDYgKzU3OCwxMCBAQAogCQliYXNpY19tYWNoaW5lPW04OGstbW90b3JvbGEKIAkJb3M9LXN5c3YzCiAJCTs7CisJZGljb3MpCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1wYworCQlvcz0tZGljb3MKKwkJOzsKIAlkamdwcCkKIAkJYmFzaWNfbWFjaGluZT1pNTg2LXBjCiAJCW9zPS1tc2Rvc2RqZ3BwCkBAIC02OTksNiArNzU1LDkgQEAKIAkJYmFzaWNfbWFjaGluZT1uczMyay11dGVrCiAJCW9zPS1zeXN2CiAJCTs7CisgICAgICAgIG1pY3JvYmxhemUpCisJCWJhc2ljX21hY2hpbmU9bWljcm9ibGF6ZS14aWxpbngKKwkJOzsKIAltaW5ndzMyKQogCQliYXNpY19tYWNoaW5lPWkzODYtcGMKIAkJb3M9LW1pbmd3MzIKQEAgLTgwMyw2ICs4NjIsMTIgQEAKIAlucDEpCiAJCWJhc2ljX21hY2hpbmU9bnAxLWdvdWxkCiAJCTs7CisgICAgICAgIG5lby10YW5kZW0pCisJCWJhc2ljX21hY2hpbmU9bmVvLXRhbmRlbQorCQk7OworICAgICAgICBuc2UtdGFuZGVtKQorCQliYXNpY19tYWNoaW5lPW5zZS10YW5kZW0KKwkJOzsKIAluc3ItdGFuZGVtKQogCQliYXNpY19tYWNoaW5lPW5zci10YW5kZW0KIAkJOzsKQEAgLTEwMzcsMTcgKzExMDIsMTAgQEAKIAkJYmFzaWNfbWFjaGluZT10OTAtY3JheQogCQlvcz0tdW5pY29zCiAJCTs7Ci0JdGljNTR4IHwgYzU0eCopCi0JCWJhc2ljX21hY2hpbmU9dGljNTR4LXVua25vd24KLQkJb3M9LWNvZmYKLQkJOzsKLQl0aWM1NXggfCBjNTV4KikKLQkJYmFzaWNfbWFjaGluZT10aWM1NXgtdW5rbm93bgotCQlvcz0tY29mZgotCQk7OwotCXRpYzZ4IHwgYzZ4KikKLQkJYmFzaWNfbWFjaGluZT10aWM2eC11bmtub3duCi0JCW9zPS1jb2ZmCisgICAgICAgICMgVGhpcyBtdXN0IGJlIG1hdGNoZWQgYmVmb3JlIHRpbGUqLgorICAgICAgICB0aWxlZ3gqKQorCQliYXNpY19tYWNoaW5lPXRpbGVneC11bmtub3duCisJCW9zPS1saW51eC1nbnUKIAkJOzsKIAl0aWxlKikKIAkJYmFzaWNfbWFjaGluZT10aWxlLXVua25vd24KQEAgLTExMjgsNiArMTE4NiwxMCBAQAogCQliYXNpY19tYWNoaW5lPXo4ay11bmtub3duCiAJCW9zPS1zaW0KIAkJOzsKKwl6ODAtKi1jb2ZmKQorCQliYXNpY19tYWNoaW5lPXo4MC11bmtub3duCisJCW9zPS1zaW0KKwkJOzsKIAlub25lKQogCQliYXNpY19tYWNoaW5lPW5vbmUtbm9uZQogCQlvcz0tbm9uZQpAQCAtMTE2Niw3ICsxMjI4LDcgQEAKIAl3ZTMyaykKIAkJYmFzaWNfbWFjaGluZT13ZTMyay1hdHQKIAkJOzsKLQlzaFsxMjM0XSB8IHNoWzI0XWEgfCBzaFszNF1lYiB8IHNoWzEyMzRdbGUgfCBzaFsyM11lbGUpCisJc2hbMTIzNF0gfCBzaFsyNF1hIHwgc2hbMjRdYWViIHwgc2hbMzRdZWIgfCBzaFsxMjM0XWxlIHwgc2hbMjNdZWxlKQogCQliYXNpY19tYWNoaW5lPXNoLXVua25vd24KIAkJOzsKIAlzcGFyYyB8IHNwYXJjdjggfCBzcGFyY3Y5IHwgc3BhcmN2OWIgfCBzcGFyY3Y5dikKQEAgLTEyMTYsNiArMTI3OCw5IEBACiAgICAgICAgICMgRmlyc3QgbWF0Y2ggc29tZSBzeXN0ZW0gdHlwZSBhbGlhc2VzCiAgICAgICAgICMgdGhhdCBtaWdodCBnZXQgY29uZnVzZWQgd2l0aCB2YWxpZCBzeXN0ZW0gdHlwZXMuCiAJIyAtc29sYXJpcyogaXMgYSBiYXNpYyBzeXN0ZW0gdHlwZSwgd2l0aCB0aGlzIG9uZSBleGNlcHRpb24uCisgICAgICAgIC1hdXJvcmF1eCkKKwkgICAgICAgIG9zPS1hdXJvcmF1eAorCQk7OwogCS1zb2xhcmlzMSB8IC1zb2xhcmlzMS4qKQogCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8c29sYXJpczF8c3Vub3M0fCdgCiAJCTs7CkBAIC0xMjM2LDEwICsxMzAxLDExIEBACiAJIyBFYWNoIGFsdGVybmF0aXZlIE1VU1QgRU5EIElOIEEgKiwgdG8gbWF0Y2ggYSB2ZXJzaW9uIG51bWJlci4KIAkjIC1zeXN2KiBpcyBub3QgaGVyZSBiZWNhdXNlIGl0IGNvbWVzIGxhdGVyLCBhZnRlciBzeXN2cjQuCiAJLWdudSogfCAtYnNkKiB8IC1tYWNoKiB8IC1taW5peCogfCAtZ2VuaXgqIHwgLXVsdHJpeCogfCAtaXJpeCogXAotCSAgICAgIHwgLSp2bXMqIHwgLXNjbyogfCAtZXNpeCogfCAtaXNjKiB8IC1haXgqIHwgLXN1bm9zIHwgLXN1bm9zWzM0XSpcCi0JICAgICAgfCAtaHB1eCogfCAtdW5vcyogfCAtb3NmKiB8IC1sdW5hKiB8IC1kZ3V4KiB8IC1zb2xhcmlzKiB8IC1zeW0qIFwKKwkgICAgICB8IC0qdm1zKiB8IC1zY28qIHwgLWVzaXgqIHwgLWlzYyogfCAtYWl4KiB8IC1jbmsqIHwgLXN1bm9zIHwgLXN1bm9zWzM0XSpcCisJICAgICAgfCAtaHB1eCogfCAtdW5vcyogfCAtb3NmKiB8IC1sdW5hKiB8IC1kZ3V4KiB8IC1hdXJvcmF1eCogfCAtc29sYXJpcyogXAorCSAgICAgIHwgLXN5bSogfCAta29wZW5zb2xhcmlzKiBcCiAJICAgICAgfCAtYW1pZ2FvcyogfCAtYW1pZ2Fkb3MqIHwgLW1zZG9zKiB8IC1uZXdzb3MqIHwgLXVuaWNvcyogfCAtYW9mKiBcCi0JICAgICAgfCAtYW9zKiBcCisJICAgICAgfCAtYW9zKiB8IC1hcm9zKiBcCiAJICAgICAgfCAtbmluZHkqIHwgLXZ4c2ltKiB8IC12eHdvcmtzKiB8IC1lYm1vbiogfCAtaG1zKiB8IC1tdnMqIFwKIAkgICAgICB8IC1jbGl4KiB8IC1yaXNjb3MqIHwgLXVuaXBsdXMqIHwgLWlyaXMqIHwgLXJ0dSogfCAteGVuaXgqIFwKIAkgICAgICB8IC1oaXV4KiB8IC0zODZic2QqIHwgLWtuZXRic2QqIHwgLW1pcmJzZCogfCAtbmV0YnNkKiBcCkBAIC0xMjQ4LDkgKzEzMTQsMTAgQEAKIAkgICAgICB8IC1ib3N4KiB8IC1uZXh0c3RlcCogfCAtY3h1eCogfCAtYW91dCogfCAtZWxmKiB8IC1vYWJpKiBcCiAJICAgICAgfCAtcHR4KiB8IC1jb2ZmKiB8IC1lY29mZiogfCAtd2lubnQqIHwgLWRvbWFpbiogfCAtdnN0YSogXAogCSAgICAgIHwgLXVkaSogfCAtZWFiaSogfCAtbGl0ZXMqIHwgLWllZWUqIHwgLWdvMzIqIHwgLWF1eCogXAotCSAgICAgIHwgLWNob3J1c29zKiB8IC1jaG9ydXNyZGIqIFwKKwkgICAgICB8IC1jaG9ydXNvcyogfCAtY2hvcnVzcmRiKiB8IC1jZWdjYyogXAogCSAgICAgIHwgLWN5Z3dpbiogfCAtcGUqIHwgLXBzb3MqIHwgLW1vc3MqIHwgLXByb2VsZiogfCAtcnRlbXMqIFwKLQkgICAgICB8IC1taW5ndzMyKiB8IC1saW51eC1nbnUqIHwgLWxpbnV4LW5ld2xpYiogfCAtbGludXgtdWNsaWJjKiBcCisJICAgICAgfCAtbWluZ3czMiogfCAtbGludXgtZ251KiB8IC1saW51eC1hbmRyb2lkKiBcCisJICAgICAgfCAtbGludXgtbmV3bGliKiB8IC1saW51eC11Y2xpYmMqIFwKIAkgICAgICB8IC11eHB2KiB8IC1iZW9zKiB8IC1tcGVpeCogfCAtdWRrKiBcCiAJICAgICAgfCAtaW50ZXJpeCogfCAtdXdpbiogfCAtbWtzKiB8IC1yaGFwc29keSogfCAtZGFyd2luKiB8IC1vcGVuZWQqIFwKIAkgICAgICB8IC1vcGVuc3RlcCogfCAtb3NraXQqIHwgLWNvbml4KiB8IC1wdzMyKiB8IC1ub25zdG9wdXgqIFwKQEAgLTEyNTgsNyArMTMyNSw3IEBACiAJICAgICAgfCAtb3MyKiB8IC12b3MqIHwgLXBhbG1vcyogfCAtdWNsaW51eCogfCAtbnVjbGV1cyogXAogCSAgICAgIHwgLW1vcnBob3MqIHwgLXN1cGVydXgqIHwgLXJ0bWsqIHwgLXJ0bWstbm92YSogfCAtd2luZGlzcyogXAogCSAgICAgIHwgLXBvd2VybWF4KiB8IC1kbml4KiB8IC1ueDYgfCAtbng3IHwgLXNlaSogfCAtZHJhZ29uZmx5KiBcCi0JICAgICAgfCAtc2t5b3MqIHwgLWhhaWt1KiB8IC1yZG9zKiB8IC10b3BwZXJzKiB8IC1kcm9wcyopCisJICAgICAgfCAtc2t5b3MqIHwgLWhhaWt1KiB8IC1yZG9zKiB8IC10b3BwZXJzKiB8IC1kcm9wcyogfCAtZXMqKQogCSMgUmVtZW1iZXIsIGVhY2ggYWx0ZXJuYXRpdmUgTVVTVCBFTkQgSU4gKiwgdG8gbWF0Y2ggYSB2ZXJzaW9uIG51bWJlci4KIAkJOzsKIAktcW54KikKQEAgLTEzODgsNiArMTQ1NSwxMSBAQAogCS16dm1vZSkKIAkJb3M9LXp2bW9lCiAJCTs7CisJLWRpY29zKikKKwkJb3M9LWRpY29zCisJCTs7CisgICAgICAgIC1uYWNsKikKKwkgICAgICAgIDs7CiAJLW5vbmUpCiAJCTs7CiAJKikKQEAgLTE0MjgsNiArMTUwMCwxNSBAQAogICAgICAgICBjNHgtKiB8IHRpYzR4LSopCiAgICAgICAgIAlvcz0tY29mZgogCQk7OworCXRpYzU0eC0qKQorCQlvcz0tY29mZgorCQk7OworCXRpYzU1eC0qKQorCQlvcz0tY29mZgorCQk7OworCXRpYzZ4LSopCisJCW9zPS1jb2ZmCisJCTs7CiAJIyBUaGlzIG11c3QgY29tZSBiZWZvcmUgdGhlICotZGVjIGVudHJ5LgogCXBkcDEwLSopCiAJCW9zPS10b3BzMjAKQEAgLTE1ODUsNyArMTY2Niw3IEBACiAJCQktc3Vub3MqKQogCQkJCXZlbmRvcj1zdW4KIAkJCQk7OwotCQkJLWFpeCopCisJCQktY25rKnwtYWl4KikKIAkJCQl2ZW5kb3I9aWJtCiAJCQkJOzsKIAkJCS1iZW9zKikKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRleCA0YjlhMjMyLi5kMjUyMzk1IDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCA0MjE1YTMwLi5kOTExYWY4IDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0xMCw5ICsxMCw5IEBACiAjCiAjIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVjZSBhIGNvbmZpZ3VyZSBzY3JpcHQuCiAjCi1BQ19JTklUKFtOZXQtU05NUF0sIFs1LjYuMl0sIFtuZXQtc25tcC1jb2RlcnNAbGlzdHMuc291cmNlZm9yZ2UubmV0XSkKK0FDX0lOSVQoW05ldC1TTk1QXSwgWzUuNy4yXSwgW25ldC1zbm1wLWNvZGVyc0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXRdKQogQUNfUFJFUkVRKFsyLjYzXSkKLUFDX0NPTkZJR19TUkNESVIoW2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuY10pCitBQ19DT05GSUdfU1JDRElSKFthZ2VudC9zbm1wZC5jXSkKIEFDX1JFVklTSU9OKFskUmV2aXNpb24kXSkKIAogQUNfQ09ORklHX01BQ1JPX0RJUihbbTRdKQpAQCAtNzIsNiArNzIsNyBAQAogQUNfU1VCU1QoQUdFTlRMSUJTKQogQUNfU1VCU1QoT1RIRVJBR0VOVExJQk9CSlMpCiBBQ19TVUJTVChPVEhFUkFHRU5UTElCTE9CSlMpCitBQ19TVUJTVChPVEhFUkFHRU5UTElCTEZUUykKIAogQUNfU1VCU1QoRExMSUJTKQogCkBAIC05NCw2ICs5NSw3IEBACiBBQ19DT05GSUdfRklMRVMoW25ldC1zbm1wLWNyZWF0ZS12My11c2VyOm5ldC1zbm1wLWNyZWF0ZS12My11c2VyLmluXSwKIAkJW2NobW9kICt4IG5ldC1zbm1wLWNyZWF0ZS12My11c2VyXSkKIEFDX0NPTkZJR19GSUxFUyhbZGlzdC9nZW5lcmF0aW9uLXNjcmlwdHMvZ2VuLXZhcmlhYmxlczpkaXN0L2dlbmVyYXRpb24tc2NyaXB0cy9nZW4tdmFyaWFibGVzLmluXSkKK0FDX0NPTkZJR19GSUxFUyhbbG9jYWwvc25tcGNvbmZdKQogCiBBQ19DT05GSUdfQ09NTUFORFMoW2RlZmF1bHRdLCBlY2hvIHRpbWVzdGFtcCA+IHN0YW1wLWgpCiAKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2FnZW50IGIvY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfYWdlbnQKaW5kZXggNWNiMzBiYi4uNjBiMTE5YiAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfYWdlbnQKKysrIGIvY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfYWdlbnQKQEAgLTI4LDcgKzI4LDcgQEAKIEFDX01TR19DSEVDS0lORyhbZm9yIGFuZCBjb25maWd1cmluZyBtaWIgbW9kdWxlcyB0byB1c2VdKQogCiAjIHNldCB1cCB0aGUgQ1BQIGNvbW1hbmQKLU1PRFVMRUNQUD0iJENQUCAkUEFSVElBTFRBUkdFVEZMQUdTIC1JJHtzcmNkaXJ9L2luY2x1ZGUgLUkke3NyY2Rpcn0vYWdlbnQvbWliZ3JvdXAiCitNT0RVTEVDUFA9IiRDUFAgJFBBUlRJQUxUQVJHRVRGTEFHUyAtRE5FVFNOTVBfRkVBVFVSRV9DSEVDS0lORyAtSSR7c3JjZGlyfS9pbmNsdWRlIC1JJHtzcmNkaXJ9L2FnZW50L21pYmdyb3VwIgogaWYgdGVzdCAieCRlbmFibGVfbWZkX3Jld3JpdGVzIiA9ICJ4eWVzIjsgdGhlbgogICBNT0RVTEVDUFA9IiRNT0RVTEVDUFAgLURORVRTTk1QX0VOQUJMRV9NRkRfUkVXUklURVMiCiBmaQpAQCAtMTc0LDkgKzE3NCw5IEBACiAgICAgIyBidWlsZCBhIHBzZXVkbyBpbmNsdWRlIGhlYWRlciB0aGF0IGluY2x1ZGVzIGN1cnJlbnQgY29uZmlnIGFuZAogICAgICMgc3lzdGVtIHN5bWJvbHM6CiAgICAgcm0gLWYgY29uZnRlc3QuJGFjX2V4dCBtb2R1bGVfdG1wX2hlYWRlci5oCi0gICAgQUNfTEFOR19DT05GVEVTVChBQ19MQU5HX1NPVVJDRShbWworICAgIEFDX0xBTkdfQ09ORlRFU1QoW0FDX0xBTkdfU09VUkNFKFtbCiAjaW5jbHVkZSBORVRTTk1QX1NZU1RFTV9JTkNMVURFX0ZJTEUKLSNpbmNsdWRlICIkc3JjZGlyLyRtaWJkaXIvJGkuaCJdXSkpCisjaW5jbHVkZSAiJHNyY2Rpci8kbWliZGlyLyRpLmgiXV0pXSkKICAgICBtdiBjb25mdGVzdC4kYWNfZXh0IG1vZHVsZV90bXBfaGVhZGVyLmgKIAogICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE4OSw3ICsxODksOCBAQAogICAgIG1vZHVsZV90eXBlPW1pYl9tb2R1bGUKICAgICBpZiB0ZXN0IC1mICRzcmNkaXIvJG1pYmRpci8kaS5oOyB0aGVuCiAgICAgICBjaGFuZ2VxdW90ZSgsICkKLSAgICAgIG1vZHVsZV90eXBlPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCAkR1JFUCBjb25maWdfYmVsb25nc19pbiB8ICRTRUQgJ3NALipjb25maWdfYmVsb25nc19pbihcKFteKV0qXCkpLipAXDFAJ2AKKyAgICAgIG1vZHVsZV90eXBlPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCBcCisgICAgICAgICAgICAgICAgICAgJFNFRCAtbiAnc0AuKmNvbmZpZ19iZWxvbmdzX2luKFwoW14pXSpcKSkuKkBcMUBwJ2AKICAgICAgIGNoYW5nZXF1b3RlKFssIF0pCiAgICAgZmkKICAgICBpZiB0ZXN0ICJ4JG1vZHVsZV90eXBlIiA9ICJ4IiA7IHRoZW4KQEAgLTI3MCw3ICsyNzEsOCBAQAogICAgICAgICAjIGNoZWNrIGlmICRpIGhhcyBhbnkgY29uZmxpY3RzCiAgICAgICAgICMKICAgICAgICAgQUhfVE9QKFsjZGVmaW5lIGNvbmZpZ19leGNsdWRlKHgpXSkKLQluZXdfbGlzdF9leGNsPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCAkR1JFUCBjb25maWdfZXhjbHVkZSB8ICRTRUQgJ3MvLipjb25maWdfZXhjbHVkZShcKC4qXCkpLiovXDEvJ2AKKyAgICAgICAgbmV3X2xpc3RfZXhjbD1gJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAkU0VEIC1uICdzLy4qY29uZmlnX2V4Y2x1ZGUoXCguKlwpKS4qL1wxL3AnYAogCWlmIHRlc3QgIngkbmV3X2xpc3RfZXhjbCIgIT0gIngiOyB0aGVuCiAgICAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiRpIGV4Y2x1ZGVzICRuZXdfbGlzdF9leGNsIikKIAkgIGZvciBqIGluICRuZXdfbGlzdF9leGNsCkBAIC0yOTksNyArMzAxLDggQEAKICAgICAgICAgIwogICAgICAgICBBSF9UT1AoWyNkZWZpbmUgY29uZmlnX2FyY2hfcmVxdWlyZSh4LHkpXSkKICAgICAgICAgY2hhbmdlcXVvdGUoLCApCi0gICAgICAgIG5ld19saXN0X2FyY2g9YCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8ICRHUkVQIGNvbmZpZ19hcmNoX3JlcXVpcmUgfCAkU0VEICdzLy4qY29uZmlnX2FyY2hfcmVxdWlyZSggKlwoW14gXSpcKSAqLCAqXChbXiBdKlwpICopLiovXDEteGFyY2h4LVwyLydgCisgICAgICAgIG5ld19saXN0X2FyY2g9YCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgJFNFRCAtbiAncy8uKmNvbmZpZ19hcmNoX3JlcXVpcmUoICpcKFteIF0qXCkgKiwgKlwoW14gXSpcKSAqKS4qL1wxLXhhcmNoeC1cMi9wJ2AKICAgICAgICAgY2hhbmdlcXVvdGUoWywgXSkKIAlpZiB0ZXN0ICJ4JG5ld19saXN0X2FyY2giICE9ICJ4IjsgdGhlbgogICAgICAgICAgIGZvciBqIGluICRuZXdfbGlzdF9hcmNoCkBAIC0zMjAsMTEgKzMyMyw3IEBACiAgICAgICAgICMKICAgICAgICAgQUhfVE9QKFsjZGVmaW5lIGNvbmZpZ192ZXJzaW9uX3JlcXVpcmUoeCldKQogICAgICAgICBbbmV3X2xpc3RfYWx0Mz1gJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgXAotICAgICAgICAgICAgJEdSRVAgY29uZmlnX3ZlcnNpb25fcmVxdWlyZSB8IFwKLSAgICAgICAgICAgICRTRUQgLWUgJ3MvICAqLyAvZycgXAotICAgICAgICAgICAgICAgICAtZSAncy8uKmNvbmZpZ192ZXJzaW9uX3JlcXVpcmUoKCAqXChbXildKlwpICopKS4qL1wxLycgXAotICAgICAgICAgICAgICAgICAtZSAncy8gKiwgKi8sL2cnIHwgXAotICAgICAgICAgICAgYXdrICcKKyAgICAgICAgICAgICRBV0sgJwogICAgICAgICAgICAgICAgIEJFR0lOIHsKICAgICAgICAgICAgICAgICAgICAgaWYoIiciJGVuYWJsZV9uZXdfZmVhdHVyZXMiJyIgPT0gInllcyIpCiAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q9Im1heCI7CkBAIC0zMzYsNyArMzM1LDEwIEBACiAgICAgICAgICAgICAgICAgICAgIHNwbGl0KCInIiR3aXRoX2ZlYXR1cmVzX29mIiciLCBhKTsKICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbj1zcHJpbnRmKCIlMDNkJTAzZCUwM2QlMDNkIiwgYVsxXSwgYVsyXSwgYVszXSwgYVs0XSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvY29uZmlnX3ZlcnNpb25fcmVxdWlyZS8geworICAgICAgICAgICAgICAgICAgICBnc3ViKCJeLipjb25maWdfdmVyc2lvbl9yZXF1aXJlICpcXFxcKFxcXFwoIiwgIiIpOworICAgICAgICAgICAgICAgICAgICBnc3ViKCJcXFxcKVxcXFwpLiokIiwgIiIpOworICAgICAgICAgICAgICAgICAgICBnc3ViKCIsICoiLCAiLCIpOwogICAgICAgICAgICAgICAgICAgICBGUyA9ICIsIjsKICAgICAgICAgICAgICAgICAgICAgbiA9IHNwbGl0KCQwLCBhKTsKICAgICAgICAgICAgICAgICAgICAgRlMgPSAiLiI7CkBAIC0zNjIsNyArMzY0LDggQEAKICAgICAgICAgIyBjaGVjayBpZiAkaSBoYXMgYW55IG90aGVyIHJlcXVpcmVkIG1vZHVsZXMKICAgICAgICAgIwogICAgICAgICBBSF9UT1AoWyNkZWZpbmUgY29uZmlnX3JlcXVpcmUoeCldKQotCW5ld19saXN0PSIkbmV3X2xpc3QgYCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8ICRHUkVQIGNvbmZpZ19yZXF1aXJlIHwgJFNFRCAncy8uKmNvbmZpZ19yZXF1aXJlKFwoLipcKSkuKi9cMS8nYCIKKyAgICAgICAgbmV3X2xpc3Q9IiRuZXdfbGlzdCBgJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgXAorICAgICAgICAgICAgICAgICAgJFNFRCAtbiAncy8uKmNvbmZpZ19yZXF1aXJlKFwoLipcKSkuKi9cMS9wJ2AiCiAgICAgICAgIEFDX01TR19NT0RVTEVfREJHKCIgJGkgd2lsbCB0ZXN0OiAkbmV3X2xpc3QiKQogCWlmIHRlc3QgIngkbmV3X2xpc3QiICE9ICJ4IjsgdGhlbgogCSAgZm9yIGogaW4gJG5ld19saXN0CkBAIC0zOTgsNyArNDAxLDggQEAKICAgICAgICAgIyBjaGVjayBpZiAkaSBoYXMgYW55IG1pYnMgdG8gYWRkCiAgICAgICAgICMKICAgICAgICAgQUhfVE9QKFsjZGVmaW5lIGNvbmZpZ19hZGRfbWliKHgpXSkKLQluZXdfbWlicz1gJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgJEdSRVAgY29uZmlnX2FkZF9taWIgfCAkU0VEICdzLy4qY29uZmlnX2FkZF9taWIoXCguKlwpKS4qL1wxLydgCisgICAgICAgIG5ld19taWJzPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCBcCisgICAgICAgICAgICAgICAgICAkU0VEIC1uICdzLy4qY29uZmlnX2FkZF9taWIoXCguKlwpKS4qL1wxL3AnYAogCWlmIHRlc3QgIngkbmV3X21pYnMiICE9ICJ4IjsgdGhlbgogCSAgICBmb3IgaiBpbiAkbmV3X21pYnMKIAkJZG8KQEAgLTQzNCw3ICs0MzgsNyBAQAogICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAjIGNoZWNrIGZvciB1bnN1cHBvcnRlZCBjb25maWdfbG9hZF9taWIKICAgICAgICAgIwotICAgICAgICBpZiAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCAkR1JFUCBjb25maWdfbG9hZF9taWIgPiAvZGV2L251bGwgMj4mMTsgdGhlbgorICAgICAgICBpZiAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCAkR1JFUCAtcSBjb25maWdfbG9hZF9taWI7IHRoZW4KICAgICAgICAgICBBQ19NU0dfV0FSTihbbWliIG1vZHVsZSBlcnJvcl0pCiAgICAgICAJICBBQ19NU0dfV0FSTihbbWliIG1vZHVsZSAiJGkiIHVzZXMgdGhlICJjb25maWdfbG9hZF9taWIiIGRpcmVjdGl2ZSwgd2hpY2ggaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gIEl0IHByb2JhYmx5IHdvbid0IHdvcmsuXSkKICAgICAgICAgZmkgIyBncmVwIGNvbmZpZ19sb2FkX21pYgpAQCAtNDQ1LDcgKzQ0OSw4IEBACiAgICAgICAgICMKICAgICAgICAgQUhfVE9QKFsjZGVmaW5lIGNvbmZpZ19wYXJzZV9kb3RfY29uZih3LHgseSx6KV0pCiAgICAgICAgIGNoYW5nZXF1b3RlKCwgKQotICAgICAgICAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCAkR1JFUCBjb25maWdfcGFyc2VfZG90X2NvbmYgfCAkU0VEICdzQC4qY29uZmlnX3BhcnNlX2RvdF9jb25mKFwoW14pXSpcKSwgKlwoW14pLF0qXCksICpcKFteKSxdKlwpLCAqXChbXiksXSpcKSkuKkByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigic25tcGQiLFwxLCBcMiwgXDMsIFw0KTtAJyA+PiAkbWliZGlyL21pYl9tb2R1bGVfZG90X2NvbmYuaAorICAgICAgICAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCBcCisgICAgICAgICRTRUQgLW4gJ3NALipjb25maWdfcGFyc2VfZG90X2NvbmYoXChbXildKlwpLCAqXChbXiksXSpcKSwgKlwoW14pLF0qXCksICpcKFteKSxdKlwpKS4qQHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJzbm1wZCIsXDEsIFwyLCBcMywgXDQpO0BwJyA+PiAkbWliZGlyL21pYl9tb2R1bGVfZG90X2NvbmYuaAogCWNoYW5nZXF1b3RlKFssIF0pCiAKICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDU1LDcgKzQ2MCw4IEBACiAgICAgICAgICMgY2hlY2sgaWYgJGkgaGFzIGFueSBlcnJvcnMsIG9yIHdhcm5pbmdzCiAgICAgICAgICMKICAgICAgICAgQUhfVE9QKFsjZGVmaW5lIGNvbmZpZ19lcnJvcih4KV0pCi0JZXJyb3I9YCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8ICRHUkVQIGNvbmZpZ19lcnJvciB8ICRTRUQgJ3MvLipjb25maWdfZXJyb3IoXCguKlwpKS4qL1wxLydgCisgICAgICAgIGVycm9yPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCBcCisgICAgICAgICAgICAgICAkU0VEIC1uICdzLy4qY29uZmlnX2Vycm9yKFwoLipcKSkuKi9cMS9wJ2AKIAlpZiB0ZXN0ICJ4JGVycm9yIiAhPSAieCI7IHRoZW4KICAgICAgICAgICBlY2hvCiAgICAgICAgICAgZWNobwpAQCAtNDY3LDcgKzQ3Myw4IEBACiAgICAgICAJIyAgLSB1c2VkIHRvIHNpZ25hbCBhIGNvbmZpZ3VyYXRpb24gIndhcm5pbmciIHRvIGJlIHByaW50ZWQgdG8gdGhlIHVzZXIKICAgICAgICAgIwogICAgICAgICBBSF9UT1AoWyNkZWZpbmUgY29uZmlnX3dhcm5pbmcoeCldKQotCXdhcm5pbmc9YCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8ICRHUkVQIGNvbmZpZ193YXJuaW5nIHwgJFNFRCAncy8uKmNvbmZpZ193YXJuaW5nKFwoLipcKSkuKi9cMS8nYAorICAgICAgICB3YXJuaW5nPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCBcCisgICAgICAgICAgICAgICAgICRTRUQgLW4gJ3MvLipjb25maWdfd2FybmluZyhcKC4qXCkpLiovXDEvcCdgCiAJaWYgdGVzdCAieCR3YXJuaW5nIiAhPSAieCI7IHRoZW4KICAgICAgICAgICBhbGxfd2FybmluZ3M9IiRhbGxfd2FybmluZ3MgJHdhcm5pbmcKICIKQEAgLTY3OCwyOSArNjg1LDM0IEBACiAjCiBjaGFuZ2VxdW90ZSgsICkKIAotZm9yIGkgaW4gbW9kdWxlX2xpc3RfbyBtb2R1bGVfbGlzdF9jIG1vZHVsZV9saXN0X2xvIG1pYl9tb2R1bGVfbGlzdF9vIG1pYl9tb2R1bGVfbGlzdF9jIG1pYl9tb2R1bGVfbGlzdF9sbyBtaWJncm91cF9saXN0X28gbWliZ3JvdXBfbGlzdF9sbyBhZ2VudF9tb2R1bGVfbGlzdF9vIGFnZW50X21vZHVsZV9saXN0X2MgYWdlbnRfbW9kdWxlX2xpc3RfbG8gYWdlbnRncm91cF9saXN0X28gYWdlbnRncm91cF9saXN0X2xvIDsgZG8KK2ZvciBpIGluIG1vZHVsZV9saXN0X28gbW9kdWxlX2xpc3RfYyBtb2R1bGVfbGlzdF9sbyBtb2R1bGVfbGlzdF9mdCBtaWJfbW9kdWxlX2xpc3RfbyBtaWJfbW9kdWxlX2xpc3RfYyBtaWJfbW9kdWxlX2xpc3RfbG8gbWliX21vZHVsZV9saXN0X2Z0IG1pYmdyb3VwX2xpc3RfbyBtaWJncm91cF9saXN0X2xvIG1pYmdyb3VwX2xpc3RfZnQgYWdlbnRfbW9kdWxlX2xpc3RfbyBhZ2VudF9tb2R1bGVfbGlzdF9jIGFnZW50X21vZHVsZV9saXN0X2xvIGFnZW50X21vZHVsZV9saXN0X2Z0IGFnZW50Z3JvdXBfbGlzdF9vIGFnZW50Z3JvdXBfbGlzdF9sbyBhZ2VudGdyb3VwX2xpc3RfZnQgOyBkbwogICBldmFsICIkaT1tay8ke2l9Lm1rIgogZG9uZQogCiAkU0VEICdzL15tb2R1bGVfbGlzdF9jb2RlL21vZHVsZV9saXN0X28vO3MvXChbXj1dXCkgICpcXC9cMS5vIFxcL2cnICA8ICRtb2R1bGVfbGlzdF9jb2RlICA+ICRtb2R1bGVfbGlzdF9vCiAkU0VEICdzL15tb2R1bGVfbGlzdF9jb2RlL21vZHVsZV9saXN0X2MvO3MvXChbXj1dXCkgICpcXC9cMS5jIFxcL2cnICA8ICRtb2R1bGVfbGlzdF9jb2RlICA+ICRtb2R1bGVfbGlzdF9jCiAkU0VEICdzL15tb2R1bGVfbGlzdF9jb2RlL21vZHVsZV9saXN0X2xvLztzL1woW149XVwpICAqXFwvXDEubG8gXFwvZycgPCAkbW9kdWxlX2xpc3RfY29kZSAgPiAkbW9kdWxlX2xpc3RfbG8KKyRTRUQgJ3MvXm1vZHVsZV9saXN0X2NvZGUvbW9kdWxlX2xpc3RfZnQvO3MvXChbXj1dXCkgICpcXC9cMS5mdCBcXC9nJyA8ICRtb2R1bGVfbGlzdF9jb2RlICA+ICRtb2R1bGVfbGlzdF9mdAogCiAkU0VEICdzL15taWJfbW9kdWxlX2xpc3RfY29kZS9taWJfbW9kdWxlX2xpc3Rfby87cy9cKFtePV1cKSAgKlxcL1wxLm8gXFwvZycgIDwgJG1pYl9tb2R1bGVfbGlzdF9jb2RlICA+ICRtaWJfbW9kdWxlX2xpc3RfbwogJFNFRCAncy9ebWliX21vZHVsZV9saXN0X2NvZGUvbWliX21vZHVsZV9saXN0X2MvO3MvXChbXj1dXCkgICpcXC9cMS5jIFxcL2cnICA8ICRtaWJfbW9kdWxlX2xpc3RfY29kZSAgPiAkbWliX21vZHVsZV9saXN0X2MKICRTRUQgJ3MvXm1pYl9tb2R1bGVfbGlzdF9jb2RlL21pYl9tb2R1bGVfbGlzdF9sby87cy9cKFtePV1cKSAgKlxcL1wxLmxvIFxcL2cnIDwgJG1pYl9tb2R1bGVfbGlzdF9jb2RlICA+ICRtaWJfbW9kdWxlX2xpc3RfbG8KKyRTRUQgJ3MvXm1pYl9tb2R1bGVfbGlzdF9jb2RlL21pYl9tb2R1bGVfbGlzdF9mdC87cy9cKFtePV1cKSAgKlxcL1wxLmZ0IFxcL2cnIDwgJG1pYl9tb2R1bGVfbGlzdF9jb2RlICA+ICRtaWJfbW9kdWxlX2xpc3RfZnQKIAogJFNFRCAncy9ebWliX21vZHVsZV9saXN0X28vbWliZ3JvdXBfbGlzdF9vLztzQFwoW14gCV0qXClcLm9AbWliZ3JvdXAvXDEub0BnJyA8ICRtaWJfbW9kdWxlX2xpc3RfbyA+ICRtaWJncm91cF9saXN0X28KICRTRUQgJ3MvXm1pYl9tb2R1bGVfbGlzdF9sby9taWJncm91cF9saXN0X2xvLztzQFwoW14gCV0qXClcLmxvQG1pYmdyb3VwL1wxLmxvQGcnIDwgJG1pYl9tb2R1bGVfbGlzdF9sbyA+ICRtaWJncm91cF9saXN0X2xvCiskU0VEICdzL15taWJfbW9kdWxlX2xpc3RfZnQvbWliZ3JvdXBfbGlzdF9mdC87c0BcKFteIAldKlwpXC5mdEBtaWJncm91cC9cMS5mdEBnJyA8ICRtaWJfbW9kdWxlX2xpc3RfZnQgPiAkbWliZ3JvdXBfbGlzdF9mdAogCiAkU0VEICdzL15hZ2VudF9tb2R1bGVfbGlzdF9jb2RlL2FnZW50X21vZHVsZV9saXN0X28vO3MvXChbXj1dXCkgICpcXC9cMS5vIFxcL2cnICA8ICRhZ2VudF9tb2R1bGVfbGlzdF9jb2RlICA+ICRhZ2VudF9tb2R1bGVfbGlzdF9vCiAkU0VEICdzL15hZ2VudF9tb2R1bGVfbGlzdF9jb2RlL2FnZW50X21vZHVsZV9saXN0X2MvO3MvXChbXj1dXCkgICpcXC9cMS5jIFxcL2cnICA8ICRhZ2VudF9tb2R1bGVfbGlzdF9jb2RlICA+ICRhZ2VudF9tb2R1bGVfbGlzdF9jCiAkU0VEICdzL15hZ2VudF9tb2R1bGVfbGlzdF9jb2RlL2FnZW50X21vZHVsZV9saXN0X2xvLztzL1woW149XVwpICAqXFwvXDEubG8gXFwvZycgPCAkYWdlbnRfbW9kdWxlX2xpc3RfY29kZSAgPiAkYWdlbnRfbW9kdWxlX2xpc3RfbG8KKyRTRUQgJ3MvXmFnZW50X21vZHVsZV9saXN0X2NvZGUvYWdlbnRfbW9kdWxlX2xpc3RfZnQvO3MvXChbXj1dXCkgICpcXC9cMS5mdCBcXC9nJyA8ICRhZ2VudF9tb2R1bGVfbGlzdF9jb2RlICA+ICRhZ2VudF9tb2R1bGVfbGlzdF9mdAogCiAkU0VEICdzL15hZ2VudF9tb2R1bGVfbGlzdF9vL2FnZW50Z3JvdXBfbGlzdF9vLztzQFwoW14gCV0qXClcLm9AbWliZ3JvdXAvXDEub0BnJyA8ICRhZ2VudF9tb2R1bGVfbGlzdF9vID4gJGFnZW50Z3JvdXBfbGlzdF9vCiAkU0VEICdzL15hZ2VudF9tb2R1bGVfbGlzdF9sby9hZ2VudGdyb3VwX2xpc3RfbG8vO3NAXChbXiAJXSpcKVwubG9AbWliZ3JvdXAvXDEubG9AZycgPCAkYWdlbnRfbW9kdWxlX2xpc3RfbG8gPiAkYWdlbnRncm91cF9saXN0X2xvCiskU0VEICdzL15hZ2VudF9tb2R1bGVfbGlzdF9mdC9hZ2VudGdyb3VwX2xpc3RfZnQvO3NAXChbXiAJXSpcKVwuZnRAbWliZ3JvdXAvXDEuZnRAZycgPCAkYWdlbnRfbW9kdWxlX2xpc3RfZnQgPiAkYWdlbnRncm91cF9saXN0X2Z0CiAKLWZvciBpIGluIG1vZHVsZV9saXN0X28gbW9kdWxlX2xpc3RfYyBtb2R1bGVfbGlzdF9sbyBtaWJfbW9kdWxlX2xpc3RfbyBtaWJfbW9kdWxlX2xpc3RfYyBtaWJfbW9kdWxlX2xpc3RfbG8gbWliZ3JvdXBfbGlzdF9vIG1pYmdyb3VwX2xpc3RfbG8gYWdlbnRfbW9kdWxlX2xpc3RfbyBhZ2VudF9tb2R1bGVfbGlzdF9jIGFnZW50X21vZHVsZV9saXN0X2xvIGFnZW50Z3JvdXBfbGlzdF9vIGFnZW50Z3JvdXBfbGlzdF9sbyA7IGRvCitmb3IgaSBpbiBtb2R1bGVfbGlzdF9vIG1vZHVsZV9saXN0X2MgbW9kdWxlX2xpc3RfbG8gbW9kdWxlX2xpc3RfZnQgbWliX21vZHVsZV9saXN0X28gbWliX21vZHVsZV9saXN0X2MgbWliX21vZHVsZV9saXN0X2xvIG1pYl9tb2R1bGVfbGlzdF9mdCBtaWJncm91cF9saXN0X28gbWliZ3JvdXBfbGlzdF9sbyBtaWJncm91cF9saXN0X2Z0IGFnZW50X21vZHVsZV9saXN0X28gYWdlbnRfbW9kdWxlX2xpc3RfYyBhZ2VudF9tb2R1bGVfbGlzdF9sbyBhZ2VudF9tb2R1bGVfbGlzdF9mdCBhZ2VudGdyb3VwX2xpc3RfbyBhZ2VudGdyb3VwX2xpc3RfbG8gYWdlbnRncm91cF9saXN0X2Z0IDsgZG8KIAkjIGhwdXggbWFrZSAoYXQgbGVhc3QpIGRvZXNuJ3QgbGlrZSBhIHRyYWlsaW5nIFwgb24gdGhlIGxhc3QKIAkjIGxpbmUgZXZlbiB3aGVuIHRoZSBuZXh0IGxpbmUgY29udGFpbnMgbm90aGluZyBidXQKIAkjIHdoaXRlc3BhY2UuCkBAIC03MjYsMTYgKzczOCwyMSBAQAogQUNfU1VCU1RfRklMRShtb2R1bGVfbGlzdF9jKQogQUNfU1VCU1RfRklMRShtb2R1bGVfbGlzdF9vKQogQUNfU1VCU1RfRklMRShtb2R1bGVfbGlzdF9sbykKK0FDX1NVQlNUX0ZJTEUobW9kdWxlX2xpc3RfZnQpCiBBQ19TVUJTVF9GSUxFKG1pYl9tb2R1bGVfbGlzdF9jKQogQUNfU1VCU1RfRklMRShtaWJfbW9kdWxlX2xpc3RfbykKIEFDX1NVQlNUX0ZJTEUobWliX21vZHVsZV9saXN0X2xvKQorQUNfU1VCU1RfRklMRShtaWJfbW9kdWxlX2xpc3RfZnQpCiBBQ19TVUJTVF9GSUxFKGFnZW50X21vZHVsZV9saXN0X2MpCiBBQ19TVUJTVF9GSUxFKGFnZW50X21vZHVsZV9saXN0X28pCiBBQ19TVUJTVF9GSUxFKGFnZW50X21vZHVsZV9saXN0X2xvKQorQUNfU1VCU1RfRklMRShhZ2VudF9tb2R1bGVfbGlzdF9mdCkKIEFDX1NVQlNUX0ZJTEUobWliZ3JvdXBfbGlzdF9vKQogQUNfU1VCU1RfRklMRShtaWJncm91cF9saXN0X2xvKQorQUNfU1VCU1RfRklMRShtaWJncm91cF9saXN0X2Z0KQogQUNfU1VCU1RfRklMRShhZ2VudGdyb3VwX2xpc3RfbykKIEFDX1NVQlNUX0ZJTEUoYWdlbnRncm91cF9saXN0X2xvKQorQUNfU1VCU1RfRklMRShhZ2VudGdyb3VwX2xpc3RfZnQpCiAKIEFDX1NVQlNUKGRlZmF1bHRfbWlic19pbnN0YWxsKQogQUNfU1VCU1QoZGxsY2xlYW5zKQpAQCAtNzY2LDggKzc4MywxMCBAQAogaWYgdGVzdCAieCRORVRTTk1QX0RFRkFVTFRfTUlCUyIgPSAieCI7IHRoZW4KICAgTkVUU05NUF9ERUZBVUxUX01JQlM9IiRkZWZhdWx0X21pYnMiCiBmaQotaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMyIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMybXN2YyIgLW8gIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4Y3lnd2luIjsgdGhlbgotICAjIG1pbmd3MzIgYW5kIGN5Z3dpbiB1c2UgJzsnIGFzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBzZXBhcmF0b3IgY2hhcgoraWYgdGVzdCAieCRFTlZfU0VQQVJBVE9SIiAhPSAieCI7IHRoZW4KKyAgOgorZWxpZiB0ZXN0ICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzIiIC1vICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzJtc3ZjIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhjeWd3aW4iOyB0aGVuCisgICMgbWluZ3czMiBhbmQgY3lnd2luIHVzZSAnOycgYXMgdGhlIGRlZmF1bHQgZW52aXJvbm1lbnQgdmFyaWFibGUgc2VwYXJhdG9yCiAgIEVOVl9TRVBBUkFUT1I9IjsiCiAgIE5FVFNOTVBfREVGQVVMVF9NSUJTPWBlY2hvICIkTkVUU05NUF9ERUZBVUxUX01JQlMiIHwgJFNFRCAncy86LzsvZydgCiAgIGRlZmF1bHRfbWlicz1gZWNobyAiJGRlZmF1bHRfbWlicyIgfCAkU0VEICdzLzovOy9nJ2AKQEAgLTc3NSw2ICs3OTQsMTAgQEAKICAgRU5WX1NFUEFSQVRPUj0iOiIKIGZpCiBBQ19TVUJTVChFTlZfU0VQQVJBVE9SKQorQUNfREVGSU5FX1VOUVVPVEVEKFtFTlZfU0VQQVJBVE9SXSwgWyIkRU5WX1NFUEFSQVRPUiJdLAorICAgICAgICAgW0Vudmlyb25tZW50IHNlcGFyYXRvciBjaGFyYWN0ZXIgc3Vycm91bmRlZCBieSBkb3VibGUgcXVvdGVzLl0pCitBQ19ERUZJTkVfVU5RVU9URUQoW0VOVl9TRVBBUkFUT1JfQ0hBUl0sIFsnJEVOVl9TRVBBUkFUT1InXSwKKyAgICAgICAgICBbRW52aXJvbm1lbnQgc2VwYXJhdG9yIGNoYXJhY3RlciBzdXJyb3VuZGVkIGJ5IHNpbmdsZSBxdW90ZXMuXSkKIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0RFRkFVTFRfTUlCUywiJE5FVFNOTVBfREVGQVVMVF9NSUJTIikKIEFDX1NVQlNUKE5FVFNOTVBfREVGQVVMVF9NSUJTKQogQUNfTVNHX1JFU1VMVCgkTkVUU05NUF9ERUZBVUxUX01JQlMpCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19saWIgYi9jb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19saWIKaW5kZXggNTIwNjNmMS4uMzYyYmEwYSAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfbGliCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2xpYgpAQCAtMjUsMTAgKzI1LDEyIEBACiAjCiBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBwbGF0Zm9ybS1zcGVjaWZpYyBzb3VyY2VdKQogb3RoZXJfc3JjX2xpc3Q9IiIKLW90aGVyX29ianNfbGlzdD0iIgorb3RoZXJfZnRvYmpzX2xpc3Q9IiIKIG90aGVyX2xvYmpzX2xpc3Q9IiIKK290aGVyX29ianNfbGlzdD0iIgogb3RoZXJfYWdlbnRvYmpzPSIiCiBvdGhlcl9sYWdlbnRvYmpzPSIiCitvdGhlcl9mdGFnZW50b2Jqcz0iIgogb3RoZXJfdHJhcGRfb2JqZWN0cz0iIgogCiAjIFdpbjMyIHNlcnZpY2UgY29kZQpAQCAtMzYsOCArMzgsMTAgQEAKICAgb3RoZXJfc3JjX2xpc3Q9IiRvdGhlcl9zcmNfbGlzdCB3aW5zZXJ2aWNlLmMgd2luc2VydmljZXJjLnJjIgogICBvdGhlcl9vYmpzX2xpc3Q9IiRvdGhlcl9vYmpzX2xpc3Qgd2luc2VydmljZS5vIHdpbnNlcnZpY2VyYy5vIgogICBvdGhlcl9sb2Jqc19saXN0PSIkb3RoZXJfbG9ianNfbGlzdCB3aW5zZXJ2aWNlLmxvIHdpbnNlcnZpY2VyYy5sbyIKKyAgb3RoZXJfZnRvYmpzX2xpc3Q9IiRvdGhlcl9mdG9ianNfbGlzdCB3aW5zZXJ2aWNlLmZ0IHdpbnNlcnZpY2VyYy5mdCIKICAgb3RoZXJfYWdlbnRvYmpzPSIuLi9zbm1wbGliL3dpbnNlcnZpY2VyYy5vIgogICBvdGhlcl9sYWdlbnRvYmpzPSIuLi9zbm1wbGliL3dpbnNlcnZpY2VyYy5sbyIKKyAgb3RoZXJfZnRhZ2VudG9ianM9Ii4uL3NubXBsaWIvd2luc2VydmljZXJjLmxvIgogICBvdGhlcl90cmFwZF9vYmplY3RzPSIuLi9zbm1wbGliL3dpbnNlcnZpY2VyYy5vIiAKIGZpCiAgIApAQCAtNDYsMTMgKzUwLDE2IEBACiAgIG90aGVyX3NyY19saXN0PSIkb3RoZXJfc3JjX2xpc3Qgd2lucGlwZS5jIgogICBvdGhlcl9vYmpzX2xpc3Q9IiRvdGhlcl9vYmpzX2xpc3Qgd2lucGlwZS5vIgogICBvdGhlcl9sb2Jqc19saXN0PSIkb3RoZXJfbG9ianNfbGlzdCB3aW5waXBlLmxvIgorICBvdGhlcl9mdG9ianNfbGlzdD0iJG90aGVyX2Z0b2Jqc19saXN0IHdpbnBpcGUuZnQiCiBmaQogCiBBQ19TVUJTVChvdGhlcl9zcmNfbGlzdCkKIEFDX1NVQlNUKG90aGVyX29ianNfbGlzdCkKIEFDX1NVQlNUKG90aGVyX2xvYmpzX2xpc3QpCitBQ19TVUJTVChvdGhlcl9mdG9ianNfbGlzdCkKIEFDX1NVQlNUKG90aGVyX2FnZW50b2JqcykKIEFDX1NVQlNUKG90aGVyX2xhZ2VudG9ianMpCitBQ19TVUJTVChvdGhlcl9mdGFnZW50b2JqcykKIEFDX1NVQlNUKG90aGVyX3RyYXBkX29iamVjdHMpCiAKIEFDX01TR19SRVNVTFQoWyRvdGhlcl9zcmNfbGlzdCAkb3RoZXJfb2Jqc19saXN0ICRvdGhlcl9sb2Jqc19saXN0XSkKQEAgLTk2LDYgKzEwMyw3IEBACiBBQ19TVUJTVCh0cmFuc3BvcnRfc3JjX2xpc3QpCiBBQ19TVUJTVCh0cmFuc3BvcnRfb2JqX2xpc3QpCiBBQ19TVUJTVCh0cmFuc3BvcnRfbG9ial9saXN0KQorQUNfU1VCU1QodHJhbnNwb3J0X2Z0b2JqX2xpc3QpCiBmb3IgaSBpbiAkdHJhbnNwb3J0X2RlZl9saXN0OyBkbwogICBBQ19ERUZJTkVfVU5RVU9URUQoJGkpCiBkb25lCkBAIC0xMTUsNiArMTIzLDcgQEAKIEFDX1NVQlNUKHNlY3VyaXR5X2hkcl9saXN0KQogQUNfU1VCU1Qoc2VjdXJpdHlfb2JqX2xpc3QpIAkgCiBBQ19TVUJTVChzZWN1cml0eV9sb2JqX2xpc3QpCitBQ19TVUJTVChzZWN1cml0eV9mdG9ial9saXN0KQogQUNfTVNHX1JFU1VMVCgkbmV3X3dpdGhfc2VjdXJpdHkpCiBBQ19NU0dfQ0FDSEVfQUREKFNOTVB2MyBTZWN1cml0eSBNb2R1bGVzOiAgICAkbmV3X3dpdGhfc2VjdXJpdHkpCiAKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX3NlY3VyaXR5X21vZHVsZXMgYi9jb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19zZWN1cml0eV9tb2R1bGVzCmluZGV4IDFiNWQxMjUuLjgyM2NhN2QgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX3NlY3VyaXR5X21vZHVsZXMKKysrIGIvY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfc2VjdXJpdHlfbW9kdWxlcwpAQCAtMSwzMSArMSw0NiBAQAogIyAtKi0gc2ggLSotCiBzZWN1cml0eV9kZWZfbGlzdD0idXNtIgogc2VjdXJpdHlfc3JjX2xpc3Q9IiIKLXNlY3VyaXR5X29ial9saXN0PSIiIAkgCitzZWN1cml0eV9vYmpfbGlzdD0iIgogc2VjdXJpdHlfbG9ial9saXN0PSIiCi1pZiB0ZXN0ICJ4JHNlY3VyaXR5X2luaXRfZmlsZSIgPSAieCIgOyB0aGVuCi0gICAgc2VjdXJpdHlfaW5pdF9maWxlPSJzbm1wbGliL3NubXBzbV9pbml0LmgiCi1maQotaWYgdGVzdCAieCRzZWN1cml0eV9pbmNsX2ZpbGUiID0gIngiIDsgdGhlbgotICAgIHNlY3VyaXR5X2luY2xfZmlsZT0iaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oIgotZmkKLW5ld193aXRoX3NlY3VyaXR5PWBlY2hvICR3aXRoX3NlY3VyaXR5X21vZHVsZXMgfCAkU0VEICdzLywvIC9nOydgCi1uZXdfd2l0aF9vdXRfc2VjdXJpdHk9YGVjaG8gJHdpdGhfb3V0X3NlY3VyaXR5X21vZHVsZXMgfCAkU0VEICdzLywvIC9nOydgCitzZWN1cml0eV9mdG9ial9saXN0PSIiCitzZWN1cml0eV9tb2RfbGlzdD0iICIKIAotZWNobyAiLyogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZS4gIERvIG5vdCBtb2RpZnkgYnkgaGFuZC4gKi8iID4gJHNlY3VyaXR5X2luaXRfZmlsZQotZWNobyAiLyogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZS4gIERvIG5vdCBtb2RpZnkgYnkgaGFuZC4gKi8iID4gJHNlY3VyaXR5X2luY2xfZmlsZQorbmV3X3dpdGhfc2VjdXJpdHk9CituZXdfd2l0aF9vdXRfc2VjdXJpdHk9YGVjaG8gJHdpdGhfb3V0X3NlY3VyaXR5X21vZHVsZXMgfCB0ciAsICcgJ2AKIAotZm9yIGkgaW4gJHNlY3VyaXR5X2RlZl9saXN0OyBkbworIyBBc3NpZ24gYWRkaXRpb25hbCBzZWN1cml0eSBtb2R1bGVzCitmb3IgaSBpbiBgZWNobyAkd2l0aF9zZWN1cml0eV9tb2R1bGVzIHwgdHIgLCAnICdgOyBkbwogICBpZiBlY2hvICIgJG5ld193aXRoX291dF9zZWN1cml0eSAiIHwgJEdSRVAgIiAkaSAiID4gL2Rldi9udWxsOyB0aGVuCi0gICAgaWYgdGVzdCAieCRpIiA9ICJ4dXNtIjsgdGhlbgotCWVjaG8KLSAgICAgICAgQUNfTVNHX0VSUk9SKFRoZSBVU00gc2VjdXJpdHkgbW9kdWxlIGlzIG1hbmRhdG9yeSkKLSAgICBmaQorICAgIGVjaG8KKyAgICBBQ19NU0dfRVJST1IoW3NlY3VyaXR5IG1vZHVsZSBjb25mbGljdCAtICRpIGJvdGggaW5jbHVkZWQgYW5kIGV4Y2x1ZGVkXSkKKyAgZWxpZiBlY2hvICIgJG5ld193aXRoX3NlY3VyaXR5ICIgfCAkR1JFUCAiICRpICIgPiAvZGV2L251bGwgOyB0aGVuCisgICAgOiAjIERvdWJsZSBkZWZpbmUsIGlnbm9yZQogICBlbHNlCiAgICAgbmV3X3dpdGhfc2VjdXJpdHk9IiRuZXdfd2l0aF9zZWN1cml0eSAkaSIKICAgZmkKIGRvbmUKIAorIyBBZGQgZGVmYXVsdCBzZWN1cml0eSBtb2R1bGVzCitmb3IgaSBpbiAkc2VjdXJpdHlfZGVmX2xpc3Q7IGRvCisgIGlmIGVjaG8gIiAkbmV3X3dpdGhfb3V0X3NlY3VyaXR5ICIgfCAkR1JFUCAiICRpICIgPiAvZGV2L251bGw7IHRoZW4KKyAgICA6ICMgRXhjbHVkZWQsIGlnbm9yZQorICBlbGlmIGVjaG8gIiAkbmV3X3dpdGhfc2VjdXJpdHkgIiB8ICRHUkVQICIgJGkgIiA+IC9kZXYvbnVsbCA7IHRoZW4KKyAgICA6ICMgRG91YmxlIGRlZmluZSwgaWdub3JlCisgIGVsc2UKKyAgICBuZXdfd2l0aF9zZWN1cml0eT0iJG5ld193aXRoX3NlY3VyaXR5ICRpIgorICBmaQorZG9uZQorCisjIEdlbmVyYXRlIG91dHB1dCBmaWxlcworOiAke3NlY3VyaXR5X2luaXRfZmlsZTo9J3NubXBsaWIvc25tcHNtX2luaXQuaCd9Cis6ICR7c2VjdXJpdHlfc2h1dGRvd25fZmlsZTo9J3NubXBsaWIvc25tcHNtX3NodXRkb3duLmgnfQorOiAke3NlY3VyaXR5X2luY2xfZmlsZTo9J2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaCd9CisKK2VjaG8gIi8qIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBjb25maWd1cmUuICBEbyBub3QgbW9kaWZ5IGJ5IGhhbmQuICovIiA+ICRzZWN1cml0eV9pbml0X2ZpbGUKK2VjaG8gIi8qIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBjb25maWd1cmUuICBEbyBub3QgbW9kaWZ5IGJ5IGhhbmQuICovIiA+ICRzZWN1cml0eV9zaHV0ZG93bl9maWxlCitlY2hvICIvKiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgY29uZmlndXJlLiAgRG8gbm90IG1vZGlmeSBieSBoYW5kLiAqLyIgPiAkc2VjdXJpdHlfaW5jbF9maWxlCisKIGZvciBpIGluICRuZXdfd2l0aF9zZWN1cml0eTsgZG8KICAgY2ZpbGU9InNubXAiJGkiLmMiCiAgIGhmaWxlPSJzbm1wIiRpIi5oIgpAQCAtMzksMTMgKzU0LDE3IEBACiAgIGZpCiAKICAgIyBkZWZpbmUgYSBidW5jaCBvZiBzdHVmZiB0byBlbmFibGUgaXQKKyAgc2VjdXJpdHlfbW9kX2xpc3Q9IiR7c2VjdXJpdHlfbW9kX2xpc3R9ICRpIgorICBzZWN1cml0eV9zcmNfbGlzdD0iJHNlY3VyaXR5X3NyY19saXN0ICRjZmlsZSIKICAgc2VjdXJpdHlfc3JjX2xpc3Q9IiRzZWN1cml0eV9zcmNfbGlzdCAkY2ZpbGUiCiAgIHNlY3VyaXR5X2hkcl9saXN0PSIkc2VjdXJpdHlfaGRyX2xpc3QgJGhmaWxlIgotICBzZWN1cml0eV9vYmpfbGlzdD0iJHNlY3VyaXR5X29ial9saXN0IHNubXAiJGkiLm8iIAkgCisgIHNlY3VyaXR5X29ial9saXN0PSIkc2VjdXJpdHlfb2JqX2xpc3Qgc25tcCIkaSIubyIKICAgc2VjdXJpdHlfbG9ial9saXN0PSIkc2VjdXJpdHlfbG9ial9saXN0IHNubXAiJGkiLmxvIgotICBkZWZfbmFtZT0iTkVUU05NUF9TRUNNT0RfImBlY2hvICRpIHwgdHIgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonYAorICBzZWN1cml0eV9mdG9ial9saXN0PSIkc2VjdXJpdHlfZnRvYmpfbGlzdCBzbm1wIiRpIi5mdCIKICAgZWNobyAiaW5pdF8iJGkiKCk7IiA+PiAkc2VjdXJpdHlfaW5pdF9maWxlCisgIGVjaG8gInNodXRkb3duXyIkaSIoKTsiID4+ICRzZWN1cml0eV9zaHV0ZG93bl9maWxlCiAgIGVjaG8gIiNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5LyRoZmlsZT4iID4+ICRzZWN1cml0eV9pbmNsX2ZpbGUKKyAgZGVmX25hbWU9IkFTX1RSX0NQUChbTkVUU05NUF9TRUNNT0RfJGldKSIKICAgQUNfREVGSU5FX1VOUVVPVEVEKCRkZWZfbmFtZSkKIGRvbmUKIApkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfdHJhbnNwb3J0cyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX3RyYW5zcG9ydHMKaW5kZXggYWEyNzE0Ni4uYjEwYjk2MCAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfdHJhbnNwb3J0cworKysgYi9jb25maWd1cmUuZC9jb25maWdfbW9kdWxlc190cmFuc3BvcnRzCkBAIC02OSwxNCArNjksMTUgQEAKICAgICAgICMgYnVpbGQgYSBwc2V1ZG8gaW5jbHVkZSBoZWFkZXIgdGhhdCBpbmNsdWRlcyBjdXJyZW50IGNvbmZpZyBhbmQKICAgICAgICMgc3lzdGVtIHN5bWJvbHM6CiAgICAgICBybSAtZiBjb25mdGVzdC4kYWNfZXh0IG1vZHVsZV90bXBfaGVhZGVyLmgKLSAgICAgIEFDX0xBTkdfQ09ORlRFU1QoQUNfTEFOR19TT1VSQ0UoW1sKKyAgICAgIEFDX0xBTkdfQ09ORlRFU1QoW0FDX0xBTkdfU09VUkNFKFtbCiAjaW5jbHVkZSBORVRTTk1QX1NZU1RFTV9JTkNMVURFX0ZJTEUKKyN1bmRlZiBORVRTTk1QX01JTklNQUxfQ09ERQogI2RlZmluZSBORVRfU05NUF9DT05GSUdfSAogI3VuZGVmIGNvbmZpZ19yZXF1aXJlCiAjZGVmaW5lIGNvbmZpZ19yZXF1aXJlKGZvbykgY29uZmlnX2NoZWNraXRfcmVxdWlyZShmb28pCiAjdW5kZWYgY29uZmlnX2Vycm9yCiAjZGVmaW5lIGNvbmZpZ19lcnJvcihmb28pIGNvbmZpZ19jaGVja2l0X2Vycm9yKGZvbykKLSNpbmNsdWRlICIkcmVsX3RyYW5zcG9ydF9oZHIiXV0pKQorI2luY2x1ZGUgIiRyZWxfdHJhbnNwb3J0X2hkciJdXSldKQogICAgICAgbXYgY29uZnRlc3QuJGFjX2V4dCBtb2R1bGVfdG1wX2hlYWRlci5oCiAKICAgICAgICMKQEAgLTExNyw2ICsxMTgsNyBAQAogZG9uZSAjIHdoaWxlIG5ldyB0cmFuc3BvcnRzIGV4aXN0CiB0cmFuc3BvcnRfb2JqX2xpc3Q9YGVjaG8gIiAkdHJhbnNwb3J0X3NyY19saXN0ICIgfCAkU0VEICdzL1wuYy9cLm8vZydgCiB0cmFuc3BvcnRfbG9ial9saXN0PWBlY2hvICIgJHRyYW5zcG9ydF9zcmNfbGlzdCAiIHwgJFNFRCAncy9cLmMvXC5sby9nJ2AKK3RyYW5zcG9ydF9mdG9ial9saXN0PWBlY2hvICIgJHRyYW5zcG9ydF9zcmNfbGlzdCAiIHwgJFNFRCAncy9cLmMvXC5mdC9nJ2AKIGZvciBpIGluICR0cl9pbml0X2xpc3QgOyBkbwogICAgZWNobyAiJGkoKTsiID4+ICRjdG9yX2hlYWRlcgogZG9uZQpAQCAtMTI2LDYgKzEyOCw3IEBACiAgIGlmIGVjaG8gIiR0cmFuc3BvcnRfZGVmX2xpc3QiIHwgJEdSRVAgIklQVjYiID4vZGV2L251bGw7IHRoZW4KICAgICB0cmFuc3BvcnRfb2JqX2xpc3Q9IiR0cmFuc3BvcnRfb2JqX2xpc3QgaW5ldF9udG9wLm8gaW5ldF9wdG9uLm8iCiAgICAgdHJhbnNwb3J0X2xvYmpfbGlzdD0iJHRyYW5zcG9ydF9sb2JqX2xpc3QgaW5ldF9udG9wLmxvIGluZXRfcHRvbi5sbyIKKyAgICB0cmFuc3BvcnRfZnRvYmpfbGlzdD0iJHRyYW5zcG9ydF9mdG9ial9saXN0IGluZXRfbnRvcC5mdCBpbmV0X3B0b24uZnQiCiAgIGZpCiBmaQogCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zIGIvY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucwppbmRleCA1N2Q3ODU0Li4zYzUzODViIDEwMDY0NAotLS0gYS9jb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnMKQEAgLTMxLDcgKzMxLDggQEAKICAgICAgICAgICAgICAgIFtzaWduYWwgICAgICAgICAgc2lnc2V0ICAgICAgICAgICAgICAgICAgXSApCiAKICMgIExpYnJhcnk6Ci1BQ19DSEVDS19GVU5DUyhbY2xvc2VkaXIgICAgICAgIGZvcmsgICAgICAgICAgICBnZXRpcG5vZGVieW5hbWUgIF0gZG5sCitBQ19DSEVDS19GVU5DUyhbY2xvc2VkaXIgICAgICAgIGZnZXRjX3VubG9ja2VkICBmbG9ja2ZpbGUgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbZm9yayAgICAgICAgICAgIGZ1bmxvY2tmaWxlICAgICBnZXRpcG5vZGVieW5hbWUgIF0gZG5sCiAgICAgICAgICAgICAgICBbZ2V0dGltZW9mZGF5ICAgIGlmX25hbWV0b2luZGV4ICBta3N0ZW1wICAgICAgICAgIF0gZG5sCiAgICAgICAgICAgICAgICBbb3BlbmRpciAgICAgICAgIHJlYWRkaXIgICAgICAgICByZWdjb21wICAgICAgICAgIF0gZG5sCiAgICAgICAgICAgICAgICBbc2V0ZW52ICAgICAgICAgIHNldGl0aW1lciAgICAgICBzZXRsb2NhbGUgICAgICAgIF0gZG5sCkBAIC02Miw2ICs2MywxMiBAQAogICAgIF0sIFsgXSkKIAogICAgIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oWyNpbmNsdWRlIDx3aW5zb2NrMi5oPl0sCisgICAgWyBnZXRob3N0YnlhZGRyKE5VTEwpOyBdKV0sCisgICAgWyBhY19jdl9mdW5jX2dldGhvc3RhZGRyPXllcworICAgICAgQVNfRUNITyAiI2RlZmluZSBIQVZFX0dFVEhPU1RCWUFERFIgMSIgPj5jb25mZGVmcy5oCisgICAgXSwgWyBdKQorCisgICAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbI2luY2x1ZGUgPHdpbnNvY2syLmg+XSwKICAgICBbIGdldGhvc3RuYW1lKE5VTEwsIDApOyBdKV0sCiAgICAgWyBhY19jdl9mdW5jX2dldGhvc3RuYW1lPXllcwogICAgICAgQVNfRUNITyAiI2RlZmluZSBIQVZFX0dFVEhPU1ROQU1FIDEiID4+Y29uZmRlZnMuaApAQCAtNjksNyArNzYsNyBAQAogICAgIDs7CiAKICAgKikKLSAgICBBQ19DSEVDS19GVU5DUyhbZ2FpX3N0cmVycm9yIGdldGFkZHJpbmZvIGdldGhvc3RieW5hbWUgZ2V0aG9zdGJ5bmFtZTIgZ2V0aG9zdG5hbWVdKQorICAgIEFDX0NIRUNLX0ZVTkNTKFtnYWlfc3RyZXJyb3IgZ2V0YWRkcmluZm8gZ2V0aG9zdGJ5bmFtZSBnZXRob3N0YnluYW1lMiBnZXRob3N0bmFtZSBnZXRob3N0YnlhZGRyXSkKICAgICA7OwogZXNhYwogCkBAIC0xNjcsMTEgKzE3NCwxMSBAQAogICAgICAgICAgICAgICAgW25ldHNubXBfY3ZfX2Z1bmNfX25hbWVdLFsKICAgICBuZXRzbm1wX2N2X19mdW5jX19uYW1lPW5vCiAgICAgQUNfQ09NUElMRV9JRkVMU0UoCi0gICAgICAgIEFDX0xBTkdfUFJPR1JBTSgsW1tjb25zdCBjaGFyKiBjcCA9IF9fZnVuY19fO11dKSwKKyAgICAgICAgW0FDX0xBTkdfUFJPR1JBTSgsW1tjb25zdCBjaGFyKiBjcCA9IF9fZnVuY19fO11dKV0sCiAgICAgICAgIFtuZXRzbm1wX2N2X19mdW5jX19uYW1lPV9fZnVuY19fXSkKICAgICBpZiB0ZXN0ICIkbmV0c25tcF9jdl9fZnVuY19fbmFtZSIgPSBubyA7IHRoZW4KICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAotICAgICAgICBBQ19MQU5HX1BST0dSQU0oLFtbY29uc3QgY2hhciogY3AgPSBfX0ZVTkNUSU9OX187XV0pLAorICAgICAgICBbQUNfTEFOR19QUk9HUkFNKCxbW2NvbnN0IGNoYXIqIGNwID0gX19GVU5DVElPTl9fO11dKV0sCiAgICAgICAgIFtuZXRzbm1wX2N2X19mdW5jX19uYW1lPV9fRlVOQ1RJT05fX10pCiAgICAgZmldKQogaWYgdGVzdCAiJG5ldHNubXBfY3ZfX2Z1bmNfX25hbWUiICE9IG5vOyB0aGVuCkBAIC0xODQsMTQgKzE5MSwxNCBAQAogIwogQUNfQ0FDSEVfQ0hFQ0soW1t3aGV0aGVyIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zIGFyZSBicm9rZW4gKFVuaXh3YXJlKV1dLAogICAgICAgICAgICAgICAgIFtuZXRzbm1wX2N2X2NfYnJva2VuX2lubGluZV0sCi0gICAgQUNfQ09NUElMRV9JRkVMU0UoW1sKKyAgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoWwogc3RhdGljIGlubGluZSBpbnQgbmVzdGVkX2lubGluZV9mdW5jdGlvbih2b2lkKSB7CiAgIHJldHVybiAwOwogfQogaW5saW5lIGludCBtYWluX2lubGluZV9mdW5jdGlvbiggdm9pZCApIHsKICAgcmV0dXJuIG5lc3RlZF9pbmxpbmVfZnVuY3Rpb24oKTsKIH0KLSAgICBdXSwKKyAgICBdKV0sCiAgICAgbmV0c25tcF9jdl9icm9rZW5faW5saW5lPW5vLAogICAgIG5ldHNubXBfY3ZfYnJva2VuX2lubGluZT15ZXMpKQogCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVycyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzCmluZGV4IDE5YjI3ZmMuLmQ4MTI3Y2EgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzCkBAIC01NSw2ICs1NSw3IEBACiAgICAgICAgICAgICAgICAgIFtpb2N0bHMuaCAgIGtzdGF0LmggICAga3ZtLmggICAgICBsaW1pdHMuaCAgICAgXSBkbmwKICAgICAgICAgICAgICAgICAgWyAgICAgICAgICAgbW50ZW50LmggICBtdGFiLmggICAgICAgICAgICAgICAgICBdIGRubAogICAgICAgICAgICAgICAgICBbICAgICAgICAgICBwa2dsb2NzLmggICAgICAgICAgICAgcHdkLmggICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFsgICAgICAgICAgIGNvbV9lcnIuaCAgICAgICAgICAgICBldC9jb21fZXJyLmggXSBkbmwKICAgICAgICAgICAgICAgICAgWyAgICAgICAgICAgdXRtcHguaCAgICB1dHNuYW1lLmggICAgICAgICAgICAgICBdKQogCiBBQ19DSEVDS19IRUFERVJTKFtzeXMvZGlza2lvLmggIHN5cy9ka2lvLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdIGRubApAQCAtOTAsNiArOTEsOCBAQAogICAgICAgICAgICAgICAgICBbcGNpL3BjaS5oICAgICAgICAgICAgICAgICAgICAgICAgXSkKIAogCisjIFZhbGdyaW5kCitBQ19DSEVDS19IRUFERVJTKFt2YWxncmluZC92YWxncmluZC5oIHZhbGdyaW5kL21lbWNoZWNrLmhdKQogIyBPcGVuU1NMCiBBQ19DSEVDS19IRUFERVJTKFtvcGVuc3NsL2Flcy5oIF0pICAgICAjICAoQ29yZSkKIEFDX0NIRUNLX0hFQURFUlMoW29wZW5zc2wvZGguaCAgXSkgICAgICMgIChBcHBzKQpAQCAtMzg4LDE4ICszOTEsMjEgQEAKICNpZiBIQVZFX1NZU19TT0NLRVRfSAogI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KICNlbmRpZgorI2lmIEhBVkVfTkVUX0lGX0gKKyNpbmNsdWRlIDxuZXQvaWYuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUX0lGX1ZBUl9ICisjaW5jbHVkZSA8bmV0L2lmX3Zhci5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRfUk9VVEVfSAorI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgorI2VuZGlmCiAjaWYgSEFWRV9ORVRJTkVUX0lOX0gKICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiAjZW5kaWYKICNpZiBIQVZFX05FVElORVRfSVA2X0gKICNpbmNsdWRlIDxuZXRpbmV0L2lwNi5oPgogI2VuZGlmCi0jaWYgSEFWRV9ORVRfSUZfSAotI2luY2x1ZGUgPG5ldC9pZi5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRfUk9VVEVfSAotI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgotI2VuZGlmCiAgICAgXV0pCiAKICMgICAgICAgcmVxdWlyaW5nIDxuZXRpbmV0L2luLmg+ICAgICAgICAgICAgICAgICAgICAgICAgKE9wZW5CU0QgMi42KQpAQCAtNTE4LDQgKzUyNCw0NCBAQAogIwogQUNfQ0hFQ0tfSEVBREVSUyhbc2Vuc29ycy9zZW5zb3JzLmggcGljbC5oXSkKIAorIyMgIFRoaXMgaXMgaGVyZSB0byBhdm9pZCBsb2FkcyBvZiByZWRlZmluaXRpb24gd2FybmluZ3MgZHVyaW5nCisjIyAgbW9kdWxlIGNvbmZpZ3VyYXRpb24KKworIyMKKyMgICBydGVudHJ5IHN0cnVjdHVyZSBjaGVja3M6CisjIworCisjIENoZWNrIHN0cnVjdCBydGVudHJ5IGZvciBjb21tb24gZmllbGRzCisjICAgQWdlbnQ6CisjCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgcnRlbnRyeS5ydF9kc3QsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlbnRyeS5ydF9oYXNoLAorICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZW50cnkucnRfbmV4dCwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVudHJ5LnJ0X3JlZmNudCwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVudHJ5LnJ0X3VuaXQsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlbnRyeS5ydF91c2VdLCwsCisgICAgWworI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmZGVmIE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMX1NUUlVDVFVSRVMKKyNkZWZpbmUgX0tFUk5FTF9TVFJVQ1RVUkVTIDEKKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaWZkZWYgTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUwKKyNkZWZpbmUgS0VSTkVMCisjaWYgIWRlZmluZWQoX19EcmFnb25GbHlfXykKKyNkZWZpbmUgX0tFUk5FTCAxCisjZW5kaWYKKyNlbmRpZgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyN1bmRlZiBLRVJORUwKKyN1bmRlZiBfS0VSTkVMCisjZW5kaWYKKyNpZmRlZiBIQVZFX05FVF9ST1VURV9ICisjaW5jbHVkZSA8bmV0L3JvdXRlLmg+CisjZW5kaWYKKyAgICBdKQorCiBmaSAjIE5FVFNOTVBfUVVJQ0tfQ0hFQ0sKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMiBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMgppbmRleCAzNDE0Njc4Li5jYjFkZGU5IDEwMDY0NAotLS0gYS9jb25maWd1cmUuZC9jb25maWdfb3NfbGliczIKKysrIGIvY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyCkBAIC04Niw2ICs4Niw4IEBACiAgIEFDX1NFQVJDSF9MSUJTKHNvY2tldCwgc29ja2V0LCxBQ19NU0dfRVJST1IoW3NvY2tldCgyKSBub3QgZm91bmQuXSkpCiAgIEFDX1NFQVJDSF9MSUJTKGdldGhvc3RieW5hbWUsIFtuc2wgc29ja2V0XSkKICAgQUNfQ0hFQ0tfRlVOQ1MoZ2V0aG9zdGJ5bmFtZSkKKyAgQUNfU0VBUkNIX0xJQlMoZ2V0aG9zdGJ5YWRkciwgW25zbCBzb2NrZXRdKQorICBBQ19DSEVDS19GVU5DUyhnZXRob3N0YnlhZGRyKQogICA7OwogZXNhYwogCkBAIC0xNTYsNiArMTU4LDE2IEBACiAgICAgICAgIExORVRTTk1QTElCUykKIAogCisjCisjICAgbGlicnQKKyMKKworTkVUU05NUF9TRUFSQ0hfTElCUyhjbG9ja19nZXR0aW1lLCBydCwKKyAgICAgICAgQUNfREVGSU5FKEhBVkVfQ0xPQ0tfR0VUVElNRSwgMSwKKyAgICAgICAgICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBjbG9ja19nZXR0aW1lJyBsaWJyYXJ5XSksLCwKKyAgICAgICAgTE5FVFNOTVBMSUJTKQorCisKICMjCiAjICAgTUlCLW1vZHVsZS1zcGVjaWZpYyBjaGVja3MKICMjCkBAIC0xNzUsNiArMTg3LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBbZGVmaW5lIGlmIHlvdSBoYXZlIGRldnN0YXRfZ2V0ZGV2cygpXSksLCxMTUlCTElCUykKIGZpCiAKKyMgICBsaWJwY2kKKyMgICAgICAgIChmb3IgaWYtbWliIGRlc2NyaXB0aW9uKQorIworTkVUU05NUF9TRUFSQ0hfTElCUyhwY2lfbG9va3VwX25hbWUsIHBjaSwKKwlBQ19ERUZJTkUoSEFWRV9QQ0lfTE9PS1VQX05BTUUsIDEsCisJCVtkZWZpbmUgaWYgeW91IGhhdmUgcGNpX2xvb2t1cF9uYW1lKCldKSwsLExNSUJMSUJTKQogCiAjICAgTE0tU0VOU09SUy1NSUIgc3VwcG9ydAogIwpAQCAtMzEwLDYgKzMyOCwxNyBAQAogICAgICAgICBBQ19ERUZJTkUoSEFWRV9MSUJQS0NTMTEpCiAgICAgICAgIExJQlBLQ1MxMT0iLWxwa2NzMTEiKQogZmkKK2lmIHRlc3QgIngkVExTUFJPRyIgPSAieHllcyI7IHRoZW4KKyAgIEFDX0NIRUNLX0RFQ0woW0VWUF9zaGEyMjRdLAorICAgIDogLAorICAgIEFDX0RFRklORShbSEFWRV9FVlBfU0hBMjI0XSwgW10sIFtEZWZpbmUgaWYgeW91IGhhdmUgRVZQX3NoYTIyNC8yNTYgaW4gb3BlbnNzbF0pLAorICAgIFtbI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+XV0pCisgICBBQ19DSEVDS19ERUNMKFtFVlBfc2hhMzg0XSwKKyAgICA6ICwKKyAgICBBQ19ERUZJTkUoW0hBVkVfRVZQX1NIQTM4NF0sIFtdLCBbRGVmaW5lIGlmIHlvdSBoYXZlIEVWUF9zaGEzODQvMjU2IGluIG9wZW5zc2xdKSwKKyAgICBbWyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPl1dKQorZmkKKwogTElCUz0kTk9OQUdFTlRMSUJTCSAjIHJlc3RvcmUgb2xkIGxpYnJhcmllcwogaWYgdGVzdCAieCRTU0hQUk9HIiA9ICJ4eWVzIjsgdGhlbgogICAgIE5FVFNOTVBfQlVJTERfU1NIX1BST0dfVFJVRT0nJwpAQCAtMzE4LDE3ICszNDcsNDAgQEAKICAgICBORVRTTk1QX0JVSUxEX1NTSF9QUk9HX1RSVUU9JyMnCiAgICAgTkVUU05NUF9CVUlMRF9TU0hfUFJPR19GQUxTRT0nJwogZmkKLWlmIHRlc3QgIngkVExTUFJPRyIgPSAieHllcyI7IHRoZW4KK2lmIHRlc3QgIngkVExTUFJPRyIgPSAieHllcyIgLWEgIngkZW5hYmxlX3JlYWRfb25seSIgIT0gInh5ZXMiIDsgdGhlbgogICAgIE5FVFNOTVBfQlVJTERfVExTX1BST0dfVFJVRT0nJwogICAgIE5FVFNOTVBfQlVJTERfVExTX1BST0dfRkFMU0U9JyMnCiBlbHNlCiAgICAgTkVUU05NUF9CVUlMRF9UTFNfUFJPR19UUlVFPScjJwogICAgIE5FVFNOTVBfQlVJTERfVExTX1BST0dfRkFMU0U9JycKIGZpCitpZiBlY2hvICIgJHtzZWN1cml0eV9tb2RfbGlzdH0gIiB8IGdyZXAgJyB1c20gJyA7IHRoZW4KKyAgICBpZiB0ZXN0ICJ4JGVuYWJsZV9yZWFkX29ubHkiICE9ICJ4eWVzIiA7IHRoZW4KKyAgICAJTkVUU05NUF9CVUlMRF9VU01fUFJPR19UUlVFPScnCisgICAgCU5FVFNOTVBfQlVJTERfVVNNX1BST0dfRkFMU0U9JyMnCisgICAgZWxzZQorICAgIAlORVRTTk1QX0JVSUxEX1VTTV9QUk9HX1RSVUU9JyMnCisgICAgCU5FVFNOTVBfQlVJTERfVVNNX1BST0dfRkFMU0U9JycKKyAgICBmaQorZWxzZQorICAgIE5FVFNOTVBfQlVJTERfVVNNX1BST0dfVFJVRT0nIycKKyAgICBORVRTTk1QX0JVSUxEX1VTTV9QUk9HX0ZBTFNFPScnCitmaQoraWYgdGVzdCAieCRlbmFibGVfcmVhZF9vbmx5IiAhPSAieHllcyIgOyB0aGVuCisgICAgTkVUU05NUF9CVUlMRF9TRVRfUFJPR19UUlVFPSIiCisgICAgTkVUU05NUF9CVUlMRF9TRVRfUFJPR19GQUxTRT0iIyIKK2Vsc2UKKyAgICBORVRTTk1QX0JVSUxEX1NFVF9QUk9HX1RSVUU9IiMiCisgICAgTkVUU05NUF9CVUlMRF9TRVRfUFJPR19GQUxTRT0iIgorZmkKIEFDX1NVQlNUKE5FVFNOTVBfQlVJTERfU1NIX1BST0dfVFJVRSkKIEFDX1NVQlNUKE5FVFNOTVBfQlVJTERfU1NIX1BST0dfRkFMU0UpCiBBQ19TVUJTVChORVRTTk1QX0JVSUxEX1RMU19QUk9HX1RSVUUpCiBBQ19TVUJTVChORVRTTk1QX0JVSUxEX1RMU19QUk9HX0ZBTFNFKQorQUNfU1VCU1QoTkVUU05NUF9CVUlMRF9VU01fUFJPR19UUlVFKQorQUNfU1VCU1QoTkVUU05NUF9CVUlMRF9VU01fUFJPR19GQUxTRSkKK0FDX1NVQlNUKE5FVFNOTVBfQlVJTERfU0VUX1BST0dfVFJVRSkKK0FDX1NVQlNUKE5FVFNOTVBfQlVJTERfU0VUX1BST0dfRkFMU0UpCiAKICMKICMgSWYgd2UncmUgdXNpbmcgaW50ZXJuYWwgY3J5cHRvIHN1cHBvcnQgd2UgbmVlZCB0byBjb21waWxlIGluIGV4dHJhIGZpbGVzCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzIgYi9jb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzIKaW5kZXggZDkwMDM2ZC4uZTJhOGZmNSAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MyCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMgpAQCAtOTYsMyArOTYsNDcgQEAKIGlmIHRlc3QgIngkYWxsX3dhcm5pbmdzIiAhPSAieCI7IHRoZW4KICAgICBBQ19NU0dfQ0FDSEVfQUREKFdBUk5JTkc6ICRhbGxfd2FybmluZ3MpCiBmaQorCisjCisjIENoZWNrIHdoZXRoZXIgdXNlciB3YW50cyBETlNTRUMgbG9jYWwgdmFsaWRhdGlvbiBzdXBwb3J0CisjCitfbGlicz0ke0xJQlN9CitpZiAhIHRlc3QgIngtJHdhbnRfZG5zc2VjIiA9ICJ4LW5vIiA7IHRoZW4KKyAgICBBQ19DSEVDS19IRUFERVJTKFt2YWxpZGF0b3IvdmFsaWRhdG9yLWNvbmZpZy5oXSkKKyAgICBpZiB0ZXN0ICIkYWNfY3ZfaGVhZGVyX3ZhbGlkYXRvcl92YWxpZGF0b3JfY29uZmlnX2giICE9IHllczsgdGhlbgorICAgICAgICBBQ19NU0dfRVJST1IoQ2FuJ3QgZmluZCB2YWxpZGF0b3IuaCkKKyAgICBmaQorICAgIGlmIHRlc3QgIngkYWNfY3ZfbGliX2NyeXB0b19FVlBfbWQ1IiAhPSAieHllcyIgLWEgXAorICAgICAgICAgICAgIngkYWNfY3ZfbGliX2VheTMyX0VWUF9tZDUiICE9ICJ4eWVzIiAtbyBcCisgICAgICAgICAgICAieCRhY19jdl9oZWFkZXJfb3BlbnNzbF9obWFjX2giICE9ICJ4eWVzIjsgdGhlbgorICAgICAgICBBQ19NU0dfRVJST1IoQ291bGRuJ3QgZmluZCBPcGVuU1NMIGZvciBsb2NhbCBETlNTRUMgdmFsaWRhdGlvbiBzdXBwb3J0LikKKyAgICBmaQorICAgIExJQlM9IiRMSUJTICRMSUJDUllQVE8iCisgICAgQUNfQ0hFQ0tfTElCKHNyZXMsIHF1ZXJ5X3NlbmQsLEFDX01TR19FUlJPUihbQ2FuJ3QgZmluZCBsaWJzcmVzXSkpCisgICAgVkFMX0xJQlM9Ii1sc3JlcyAkTElCQ1JZUFRPIgorICAgIExJQlM9IiRMSUJTIC1sc3JlcyIKKyAgICBBQ19DSEVDS19MSUIodmFsLCBwX3ZhbF9zdGF0dXMsCisgICAgICAgICAgICAgICAgIExJQlM9IiRMSUJTIC1sdmFsIgorICAgICAgICAgICAgICAgICBWQUxfTElCUz0iJFZBTF9MSUJTIC1sdmFsIgorICAgICAgICAgICAgICAgICBoYXZlX3ZhbF9yZXNfcXVlcnk9eWVzLAorICAgICAgICAgICAgICAgICBbIEFDX0NIRUNLX0xJQihwdGhyZWFkLCBwdGhyZWFkX3J3bG9ja19pbml0KQorCQkgICBBQ19DSEVDS19MSUIodmFsLXRocmVhZHMsIHBfdmFsX3N0YXR1cywKKyAgICAgICAgICAgICAgICAgICBoYXZlX3ZhbF9yZXNfcXVlcnk9eWVzCisgICAgICAgICAgICAgICAgICAgTElCUz0iLWx2YWwtdGhyZWFkcyAkTElCUyIKKyAgICAgICAgICAgICAgICAgICBWQUxfTElCUz0iLWx2YWwtdGhyZWFkcyAtbHB0aHJlYWQgJFZBTF9MSUJTIgorICAgICAgICAgICAgICAgICAgIExJQlZBTF9TVUZGSVg9Ii10aHJlYWRzIiwKKyAgICAgICAgICAgICAgICAgICBBQ19NU0dfRVJST1IoQ2FuJ3QgZmluZCBsaWJ2YWwgb3IgbGlidmFsLXRocmVhZHMpKQorICAgICAgICAgICAgICAgICBdKQorICAgIEFDX0RFRklORShETlNTRUNfTE9DQUxfVkFMSURBVElPTiwgMSwKKyAgICAgICAgICAgICAgW0RlZmluZSBpZiB5b3Ugd2FudCBsb2NhbCBETlNTRUMgdmFsaWRhdGlvbiBzdXBwb3J0XSkKKyAgICBETlNTRUM9ImVuYWJsZWQiCitlbHNlCisgICAgRE5TU0VDPSJkaXNhYmxlZCIKK2ZpCisKK0xJQlM9JHtfbGlic30KKworQUNfU1VCU1QoVkFMX0xJQlMpCitBQ19NU0dfQ0FDSEVfQUREKExvY2FsIEROU1NFQyB2YWxpZGF0aW9uOiAgICAkRE5TU0VDKQorCisgCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzQgYi9jb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzQKaW5kZXggNzNmODA4Ny4uY2M4YmFkMiAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmQvY29uZmlnX29zX21pc2M0CisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjNApAQCAtNDksNiArNDksMjMgQEAKIEFDX0RFRklORV9VTlFVT1RFRChLRVJORUxfTE9DLCIkYWNfY3ZfS0VSTkVMX0xPQyIsIFtsb2NhdGlvbiBvZiBVTklYIGtlcm5lbF0pCiAKIAorIyAgICAgICAvZGV2L2ttZW0gZXhpc3RlbmNlCisjCSAgICB1c2VkIGluIGFnZW50IG9ubHkKKyMKK0FDX0NBQ0hFX0NIRUNLKFtmb3IgL2Rldi9rbWVtXSwKKyAgICBhY19jdl9IQVZFX0tNRU0sCisgICBbaWYgdGVzdCAkQ0RFVl9URVNUX0ZMQUcgL2Rldi9rbWVtOyB0aGVuCisgICAgICAgIGFjX2N2X0hBVkVfS01FTT0iL2Rldi9rbWVtIgorICAgIGZpCitdKQorIworIyAgTm90ZSB0aGF0IGl0J3MgT0sgaWYgdGhpcyBkZXZpY2UgaXMgbm90IGZvdW5kCisjCitpZiB0ZXN0ICJ4JGFjX2N2X0hBVkVfS01FTSIgPSAieC9kZXYva21lbSI7IHRoZW4KKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9LTUVNLCIkYWNfY3ZfSEFWRV9LTUVNIiwgW0RlZmluZSBpZiB5b3UgaGF2ZSAvZGV2L2ttZW1dKQorZmkKKworCiAjICAgICAgIFN3YXAgZGV2aWNlIExvY2F0aW9uCiAjICAgICAgICAgICAoL2Rldi9kbWVtIG9yIC9kZXYvZHJ1bSkKICMJICAgIHVzZWQgaW4gYWdlbnQgb25seQpAQCAtMjExLDM5ICsyMjgsNiBAQAogICBBQ19ERUZJTkUoTkVUU05NUF9DQU5fVVNFX1NZU0NUTCwgMSwgW3N5c2N0bCB3b3JrcyB0byBnZXQgYm9vdHRpbWUsIGV0Yy4uLl0pCiBmaQogCi0jICAgQ2hlY2sgRnJlZUJTRCdzIGtlcm5lbCBPSUQga2Vybi5jcF90aW1lcyBleGlzdGFuY2UKLSMKLSMgICAgICAgICB1c2VkIGluIGFnZW50IG9ubHkgCi0jCi1pZiB0ZXN0ICRjcm9zc19jb21waWxpbmcgPSB5ZXM7IHRoZW4KLSAgICBBQ19NU0dfV0FSTihbQ2FuJ3QgY2hlY2sgZWl0aGVyIHN5c2N0bCBrZXJuLmNwX3RpbWVzLCBtYW51YWxseSBkZWZpbmUgSEFWRV9LRVJOX0NQX1RJTUVTIGlmIHBsYXRmb3JtIHN1cHBvcnQgYXZhaWxhYmxlXSkKLWVsc2UKLSAgICBBQ19DQUNIRV9DSEVDSyhbaWYgc3lzY3RsIHByb3ZpZGVzIGtlcm4uY3BfdGltZXMga2VybmVsIGluZm9ybWF0aW9uXSwKLSAgICAgICAgYWNfY3ZfSEFWRV9LRVJOX0NQX1RJTUVTLAotICAgICAgIFtBQ19UUllfUlVOKFsKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0KLW1haW4gKCkgewotCi0gIHNpemVfdCAgICAgICAgICAgICAgY3BfdGltZXNfc2l6ZTsKLSAgc2l6ZV90ICAgICAgICAgICAgICBuY3B1X3NpemU7Ci0KLSAgaWYgKHN5c2N0bGJ5bmFtZSgia2Vybi5jcF90aW1lcyIsIE5VTEwsICZjcF90aW1lc19zaXplLCBOVUxMLCAwKSkKLSAgICBleGl0KDEpOwotICBlbHNlCi0gICAgZXhpdCgwKTsKLX0KLSAgICAgICAgXSwKLSAgICAgICAgYWNfY3ZfSEFWRV9LRVJOX0NQX1RJTUVTPXllcywKLSAgICAgICAgYWNfY3ZfSEFWRV9LRVJOX0NQX1RJTUVTPW5vLAotICAgICAgICBhY19jdl9IQVZFX0tFUk5fQ1BfVElNRVM9bm8pXSkKLWZpCi0KLWlmIHRlc3QgIngkYWNfY3ZfSEFWRV9LRVJOX0NQX1RJTUVTIiA9ICJ4eWVzIjsgdGhlbgotICBBQ19ERUZJTkUoSEFWRV9LRVJOX0NQX1RJTUVTLCAxLCBba2Vybi5jcF90aW1lcyBkaXNwbGF5cyBtdWx0aSBjcHUgbG9hZCBvbiBGcmVlQlNELi4uXSkKLWZpCiAKICMgICBDaGVjayB3aGV0aGVyIFRDUCB0aW1lciBjb25zdGFudHMgYXJlIGluZGVlZCBjb25zdGFudAogIyAgICAgICBvciBkZXBlbmQgb24gdGhlIGtlcm5lbCBjbG9jayB0aWNrICdoeicuICAgICAgICAoRnJlZUJTRCA0LngpCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfb3NfcHJvZ3MgYi9jb25maWd1cmUuZC9jb25maWdfb3NfcHJvZ3MKaW5kZXggYTYwNzE0ZS4uZGYyZTgzZiAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmQvY29uZmlnX29zX3Byb2dzCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19wcm9ncwpAQCAtNDAxLDEyICs0MDEsMTIgQEAKIAlmaQogCTs7CiAKLSAgICBkYXJ3aW44KnxkYXJ3aW45KnxkYXJ3aW4xMCopCisgICAgZGFyd2luOCp8ZGFyd2luOSp8ZGFyd2luMTAqfGRhcndpbjExKnxkYXJ3aW4xMiopCiAgICAgICAgICMgICBGbGF0IE5hbWVzcGFjZSBsaW5raW5nICAgICAgICAgICAgICAgICAgICAgIChNYWMgT1MvWCkKICAgICAgICAgIwogICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgZGFyd2luIGxkIG1pZ2h0IG5lZWQgLWZsYXRfbmFtZXNwYWNlXSkKIAlpZiB0ZXN0IC16ICIkTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIjsgdGhlbgotCQlMREZMQUdTPSItZmxhdF9uYW1lc3BhY2UgJExERkxBR1MiCisJCUxERkxBR1M9Ii1mbGF0X25hbWVzcGFjZSAtZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uIC1mcmFtZXdvcmsgQ29yZVNlcnZpY2VzIC1mcmFtZXdvcmsgRGlza0FyYml0cmF0aW9uIC1mcmFtZXdvcmsgSU9LaXQgJExERkxBR1MiCiAJCUFDX01TR19SRVNVTFQoW3llc10pCiAJZWxzZQogCQlBQ19NU0dfUkVTVUxUKFtub10pCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnMgYi9jb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnMKaW5kZXggMTgyZDc2My4uYTYyZTY2MSAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmQvY29uZmlnX29zX3N0cnVjdF9tZW1iZXJzCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19zdHJ1Y3RfbWVtYmVycwpAQCAtMzMsNyArMzMsNiBAQAogI2VuZGlmCiAgICAgXV0pCiAKLQogIyAgICAgICBzdHJ1Y3QgZGVzX2tzX3N0cnVjdAogIyAgICAgICAgICgnd2Vha19rZXknIGluZGljYXRlcyBvbGRlciB2ZXJzaW9uIG9mIE9wZW5TU0wpCiAjICAgTGlicmFyeToKQEAgLTkyLDYgKzkxLDIwIEBACiAjaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KICNlbmRpZgogICAgIF1dKQorIyAgICAgICBzdHJ1Y3QgaXA2c3RhdAorIyAgIEFnZW50OgorIworQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IGlwNnN0YXQuaXA2c19leHRoZHJ0b29sb25nIF0sLCxbCisgICAgQUNfSU5DTFVERVNfREVGQVVMVCgpCisgICAgWworI2lmIEhBVkVfTkVUSU5FVF9JTl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUNl9JUDZfVkFSX0gKKyNpbmNsdWRlIDxuZXRpbmV0Ni9pcDZfdmFyLmg+CisjZW5kaWYKKyAgICBdXSkKKwogIwogIyAgIE5vdC1Vc2VkOgogQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IGlwc3RhdC5pcHNfY2FudGZvcndhcmQsCkBAIC0zNDksNiArMzYyLDcgQEAKICAgICAgICAgICAgICAgICAgIHN0cnVjdCB1ZHBzdGF0LnVkcHNfZnVsbHNvY2ssCiAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRwc3RhdC51ZHBzX25vcG9ydCwKICAgICAgICAgICAgICAgICAgIHN0cnVjdCB1ZHBzdGF0LnVkcHNfbm9wb3J0YmNhc3QsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRwc3RhdC51ZHBzX2lwYWNrZXRzLAogICAgICAgICAgICAgICAgICAgc3RydWN0IHVkcHN0YXQudWRwc19vcGFja2V0c10sLCxbCiAgICAgQUNfSU5DTFVERVNfREVGQVVMVCgpCiAgICAgWwpAQCAtMzc4LDcgKzM5Miw3IEBACiAgICAgICAgIFthY19jdl9JRk5FVF9ORUVEU19LRVJORUxdLAogICAgICAgICBbYWNfY3ZfSUZORVRfTkVFRFNfS0VSTkVMPXVua25vd24KICAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAotICAgICAgICAgICAgIEFDX0xBTkdfUFJPR1JBTShbCisgICAgICAgICAgICAgW0FDX0xBTkdfUFJPR1JBTShbCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgpAQCAtMzkyLDExICs0MDYsMTEgQEAKICNpZmRlZiBIQVZFX05FVF9JRl9WQVJfSAogI2luY2x1ZGUgPG5ldC9pZl92YXIuaD4KICNlbmRpZgotICAgICAgICAgICAgIF0sIFtbc3RydWN0IGlmbmV0IHRlc3Q7IHRlc3QuaWZfbXR1ID0gMDtdXSksCisgICAgICAgICAgICAgXSwgW1tzdHJ1Y3QgaWZuZXQgdGVzdDsgdGVzdC5pZl9tdHUgPSAwO11dKV0sCiAgICAgICAgICAgICAgW2FjX2N2X0lGTkVUX05FRURTX0tFUk5FTD1ub10pCiAgICAgICAgICBpZiB0ZXN0ICIkYWNfY3ZfSUZORVRfTkVFRFNfS0VSTkVMIiA9IHVua25vd24gOyB0aGVuCiAgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKLSAgICAgICAgICAgICBBQ19MQU5HX1BST0dSQU0oWworICAgICAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oWwogI2RlZmluZSBfS0VSTkVMIDEKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICkBAIC00MTEsNyArNDI1LDcgQEAKICNpZmRlZiBIQVZFX05FVF9JRl9WQVJfSAogI2luY2x1ZGUgPG5ldC9pZl92YXIuaD4KICNlbmRpZgotICAgICAgICAgICAgIF0sIFtbc3RydWN0IGlmbmV0IHRlc3Q7IHRlc3QuaWZfbXR1ID0gMDtdXSksCisgICAgICAgICAgICAgXSwgW1tzdHJ1Y3QgaWZuZXQgdGVzdDsgdGVzdC5pZl9tdHUgPSAwO11dKV0sCiAgICAgICAgICAgICAgW2FjX2N2X0lGTkVUX05FRURTX0tFUk5FTD15ZXNdKQogICAgICAgICAgZmldKQogCkBAIC01ODUsNDQgKzU5OSw2IEBACiAgICAgXV0pCiAKIAotIyMKLSMgICBydGVudHJ5IHN0cnVjdHVyZSBjaGVja3M6Ci0jIwotCi0jIENoZWNrIHN0cnVjdCBydGVudHJ5IGZvciBjb21tb24gZmllbGRzCi0jICAgQWdlbnQ6Ci0jCi1BQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgcnRlbnRyeS5ydF9kc3QsCi0gICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlbnRyeS5ydF9oYXNoLAotICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZW50cnkucnRfbmV4dCwKLSAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVudHJ5LnJ0X3JlZmNudCwKLSAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVudHJ5LnJ0X3VuaXQsCi0gICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlbnRyeS5ydF91c2VdLCwsCi0gICAgWwotI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKLSNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSNlbmRpZgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmZGVmIE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMX1NUUlVDVFVSRVMKLSNkZWZpbmUgX0tFUk5FTF9TVFJVQ1RVUkVTIDEKLSNlbmRpZgotI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICi0jaWZkZWYgTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUwKLSNkZWZpbmUgS0VSTkVMCi0jaWYgIWRlZmluZWQoX19EcmFnb25GbHlfXykKLSNkZWZpbmUgX0tFUk5FTCAxCi0jZW5kaWYKLSNlbmRpZgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSN1bmRlZiBLRVJORUwKLSN1bmRlZiBfS0VSTkVMCi0jZW5kaWYKLSNpZmRlZiBIQVZFX05FVF9ST1VURV9ICi0jaW5jbHVkZSA8bmV0L3JvdXRlLmg+Ci0jZW5kaWYKLSAgICBdKQotCi0KICMgQ2hlY2sgZm9yIEJTRCA0LjMgdnMgNC40IHN0cnVjdCBydGVudHJ5CiAjCiBBQ19DQUNIRV9DSEVDSyhbdHlwZSBvZiBydGVudHJ5IHN0cnVjdHVyZV0sCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wZXJsX3B5dGhvbiBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3BlcmxfcHl0aG9uCmluZGV4IDc5OGM1Y2UuLjIzZjhjN2UgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3BlcmxfcHl0aG9uCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3BlcmxfcHl0aG9uCkBAIC0yNzYsNiArMjc2LDcgQEAKICAgICAgICAgW0RlZmluZSBpZiB5b3UgYXJlIGVtYmVkZGluZyBwZXJsIGluIHRoZSBtYWluIGFnZW50Ll0pCiAgICAgICBPVEhFUkFHRU5UTElCT0JKUz0ic25tcF9wZXJsLm8iCiAgICAgICBPVEhFUkFHRU5UTElCTE9CSlM9InNubXBfcGVybC5sbyIKKyAgICAgIE9USEVSQUdFTlRMSUJMRlRTPSJzbm1wX3BlcmwuZnQiCiAKICAgICAgIEVNQkVEUEVSTElOU1RBTEw9ImVtYmVkcGVybGluc3RhbGwiCiAgICAgICBFTUJFRFBFUkxVTklOU1RBTEw9ImVtYmVkcGVybHVuaW5zdGFsbCIKQEAgLTMxNCwxMSArMzE1LDEzIEBACiBQRVJMVEFSR1M9IiIKIFBFUkxJTlNUQUxMVEFSR1M9IiIKIFBFUkxVTklOU1RBTExUQVJHUz0iIgorUEVSTEZFQVRVUkVTPSIiCiBBQ19NU0dfQ0hFQ0tJTkcoW2lmIHdlIGNhbiBpbnN0YWxsIHRoZSBQZXJsIG1vZHVsZXNdKQogaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiID0gInh5ZXMiIDsgdGhlbgogICAgIFBFUkxUQVJHUz0icGVybG1vZHVsZXMiCiAgICAgUEVSTElOU1RBTExUQVJHUz0icGVybGluc3RhbGwiCiAgICAgUEVSTFVOSU5TVEFMTFRBUkdTPSJwZXJsdW5pbnN0YWxsIgorICAgIFBFUkxGRUFUVVJFUz0icGVybGZlYXR1cmVzIgogICAgIGlmIHRlc3QgIngkZW1iZWRfcGVybCIgPSAieHllcyIgOyB0aGVuCiAgICAgICBBQ19NU0dfQ0FDSEVfQUREKFNOTVAgUGVybCBtb2R1bGVzOiAgICAgICAgICBidWlsZGluZyAtLSBlbWJlZGRhYmxlKQogICAgICAgQUNfTVNHX1JFU1VMVChbeWVzIC0tIGFuZCBlbWJlZGRhYmxlXSkKQEAgLTMzNCw2ICszMzcsNyBAQAogQUNfU1VCU1QoUEVSTElOU1RBTExUQVJHUykKIEFDX1NVQlNUKFBFUkxVTklOU1RBTExUQVJHUykKIEFDX1NVQlNUKFBFUkxBUkdTKQorQUNfU1VCU1QoUEVSTEZFQVRVUkVTKQogCiAKICMgICAgICAgUmVzZXQgTElCUyB0byBwcmUtbGlid3JhcCB2YWx1ZSAgICg/Pz8pCkBAIC0zNTEsMTIgKzM1NSwxNCBAQAogUFlUSE9OSU5TVEFMTFRBUkdTPSIiCiBQWVRIT05VTklOU1RBTExUQVJHUz0iIgogUFlUSE9OQ0xFQU5UQVJHUz0iIgorUFlUSE9ORkVBVFVSRVM9IiIKIEFDX01TR19DSEVDS0lORyhbaWYgd2Ugc2hvdWxkIGluc3RhbGwgdGhlIHB5dGhvbiBiaW5kaW5nc10pCiBpZiB0ZXN0ICJ4JGluc3RhbGxfcHl0aG9uIiA9ICJ4eWVzIiA7IHRoZW4KICAgICBQWVRIT05UQVJHUz0icHl0aG9ubW9kdWxlcyIKICAgICBQWVRIT05JTlNUQUxMVEFSR1M9InB5dGhvbmluc3RhbGwiCiAgICAgUFlUSE9OVU5JTlNUQUxMVEFSR1M9InB5dGhvbnVuaW5zdGFsbCIKICAgICBQWVRIT05DTEVBTlRBUkdTPSJweXRob25jbGVhbiIKKyAgICBQWVRIT05GRUFUVVJFUz0icHl0aG9uZmVhdHVyZXMiCiAgICAgQUNfTVNHX0NBQ0hFX0FERChTTk1QIFB5dGhvbiBtb2R1bGVzOiAgICAgICAgYnVpbGRpbmcgZm9yICRQWVRIT05QUk9HKQogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiBlbHNlCkBAIC0zNjgsNSArMzc0LDYgQEAKIEFDX1NVQlNUKFBZVEhPTlVOSU5TVEFMTFRBUkdTKQogQUNfU1VCU1QoUFlUSE9OQ0xFQU5UQVJHUykKIEFDX1NVQlNUKFBZVEhPTkFSR1MpCitBQ19TVUJTVChQWVRIT05GRUFUVVJFUykKIAogCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZSBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlCmluZGV4IDA2OWNjMDcuLjYxYmEwMjYgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlCkBAIC05Myw3ICs5MywxMiBAQAogICAgIGVsaWYgdGVzdCAieCR3aXRodmFsIiA9ICJ4bm8iOyB0aGVuCiAgICAgICB0cnlvcGVuc3NsPW5vCiAgICAgZWxpZiB0ZXN0IC1kICIkd2l0aHZhbCI7IHRoZW4KLSAgICAgIEFDX0FERF9TRUFSQ0hfUEFUSCgkd2l0aHZhbCkKKyAgICAgIGlmIHRlc3QgLWQgIiR3aXRodmFsL2xpYi9NaW5HVyI7IHRoZW4KKyAgICAgICAgTERGTEFHUz0iLUwkd2l0aHZhbC9saWIvTWluR1cgJExERkxBR1MiCisgICAgICAgIENQUEZMQUdTPSItSSR3aXRodmFsL2luY2x1ZGUgJENQUEZMQUdTIgorICAgICAgZWxzZQorICAgICAgICBBQ19BRERfU0VBUkNIX1BBVEgoJHdpdGh2YWwpCisgICAgICBmaQogICAgICAgdHJ5b3BlbnNzbD15ZXMKICAgICAgIGFza2Vkb3BlbnNzbD15ZXMKICAgICBmaSwKQEAgLTE0MCw2ICsxNDUsMTMgQEAKICAgICAgIGtyYjVwYXRoPS91c3Iva2VyYmVyb3MKIGZpCiAKK0FDX0FSR19XSVRIKGRuc3NlYy1sb2NhbC12YWxpZGF0aW9uLAorICAgICAgICBbICAtLXdpdGgtZG5zc2VjLWxvY2FsLXZhbGlkYXRpb24gRW5hYmxlIGxvY2FsIEROU1NFQyB2YWxpZGF0aW9uIHVzaW5nIGxpYnZhbCAobm8pXSwgd2FudF9kbnNzZWM9JHdpdGh2YWwsIHdhbnRfZG5zc2VjPW5vKQorQUNfQVJHX0VOQUJMRShbZG5zc2VjLWxvY2FsLXZhbGlkYXRpb25dLCwKKyAgICAgICAgICAgICAgTkVUU05NUF9JTlZBTElEX1dJVEgoW2Ruc3NlYy1sb2NhbC12YWxpZGF0aW9uXSkpCitBQ19BUkdfV0lUSChbZG5zc2VjXSwsTkVUU05NUF9JTlZBTElEX1dJVEgoW2Ruc3NlYy1sb2NhbC12YWxpZGF0aW9uXSkpCitBQ19BUkdfRU5BQkxFKFtkbnNzZWNdLCxORVRTTk1QX0lOVkFMSURfV0lUSChbZG5zc2VjLWxvY2FsLXZhbGlkYXRpb25dKSkKKwogTkVUU05NUF9BUkdfV0lUSChycG0sCiBbICAtLXdpdGhvdXQtcnBtICAgICAgICAgICAgICAgICAgIERvbid0IGluY2x1ZGUgc3VwcG9ydCBmb3IgdGhlIFJQTSBwYWNrYWdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlbWVudCBzeXN0ZW0gd2hlbiBidWlsZGluZyB0aGUgaG9zdCBNSUIKQEAgLTE2OCw4ICsxODAsMTQgQEAKIEFDX1NVQlNUKElOU1RBTExfUFJFRklYKQogCiAKLSMgICAKKyMKICMgICBTdWJzeXN0ZW1zIHRvIGJ1aWxkOgorIyAgICAgICBMaWJyYXJ5CisjCitGRUFUVVJFSEVBREVSUz0ibGlicmFyeS9mZWF0dXJlcy5oIgorRlRNQUlOU1VCUz0iIgorCisjCiAjICAgICAgIEFnZW50CiAjCiBORVRTTk1QX0FSR19FTkFCTEUoYWdlbnQsCkBAIC0xNzcsNiArMTk1LDggQEAKIGlmIHRlc3QgIngkZW5hYmxlX2FnZW50IiAhPSAieG5vIjsgdGhlbgogICAgU05NUEQ9J3NubXBkJChFWEVFWFQpJwogICAgTUFJTlNVQlM9IiRNQUlOU1VCUyBhZ2VudCIKKyAgIEZFQVRVUkVIRUFERVJTPSIkRkVBVFVSRUhFQURFUlMgYWdlbnQvZmVhdHVyZXMtbWliZ3JvdXBzLmggYWdlbnQvZmVhdHVyZXMuaCIKKyAgIEZUTUFJTlNVQlM9ImFnZW50ICRGVE1BSU5TVUJTIgogICAgVFJBUExJQlM9JyQoVFJBUERXSVRIQUdFTlQpJwogICAgVVNFVFJBUExJQlM9JyQoVVNFQUdFTlRMSUJTKScKIGVsc2UKQEAgLTE4OCw3ICsyMDgsOSBAQAogICAgI1VTRVRSQVBMSUJTPSckKFVTRUxJQlMpJwogICAgVFJBUExJQlM9JyQoVFJBUERXSVRIQUdFTlQpJwogICAgVVNFVFJBUExJQlM9JyQoVVNFQUdFTlRMSUJTKScKKyAgIEFDX0RFRklORShbTkVUU05NUF9ESVNBQkxFX0FHRU5UXSwgMSwgW0RlZmluZSBpZiBubyBhZ2VudCBpcyBidWlsdF0pCiBmaQorCiBBQ19TVUJTVChTTk1QRCkKIEFDX1NVQlNUKFRSQVBMSUJTKQogQUNfU1VCU1QoVVNFVFJBUExJQlMpCkBAIC0xOTksNiArMjIxLDEwIEBACiBbICAtLWRpc2FibGUtYXBwbGljYXRpb25zICAgICAgICAgIERvIG5vdCBidWlsZCB0aGUgYXBwcyAoc25tcGdldCwgLi4uKS5dKQogaWYgdGVzdCAieCRlbmFibGVfYXBwbGljYXRpb25zIiAhPSAieG5vIjsgdGhlbgogICAgTUFJTlNVQlM9IiRNQUlOU1VCUyBhcHBzIgorICAgRkVBVFVSRUhFQURFUlM9IiRGRUFUVVJFSEVBREVSUyBmZWF0dXJlcy1zbm1wbmV0c3RhdC5oIGZlYXR1cmVzLWFwcHMuaCIKKyAgIEZUTUFJTlNVQlM9ImFwcHMgJEZUTUFJTlNVQlMiCitlbHNlCisgICBBQ19ERUZJTkUoW05FVFNOTVBfRElTQUJMRV9BUFBTXSwgMSwgW0RlZmluZSBpZiBubyBhcHBzIGFyZSBidWlsdF0pCiBmaQogCiAjICAgICAgIE1hbnVhbCBwYWdlcwpAQCAtMjI3LDYgKzI1Myw3IEBACiAjIHdpdGgtbWlicyBpcyB2YWxpZCB0b28sIGJ1dCBtZWFucyBzb21ldGhpbmcgZWxzZQogCiBBQ19TVUJTVChNQUlOU1VCUykKK0FDX1NVQlNUKEZUTUFJTlNVQlMpCiBBQ19NU0dfQ0hFQ0tJTkcoW3doYXQgdG8gYnVpbGQgYW5kIGluc3RhbGxdKQogQUNfTVNHX1JFU1VMVChbJE1BSU5TVUJTXSkKIApAQCAtNTU1LDEyICs1ODIsMTYgQEAKICAgQXZhaWxhYmxlIFNOTVAgc2VjdXJpdHkgc2VydmljZXM6CiAKICAgICAgICAgdXNtICAgICAgICAgICAgICAgIHN1cHBvcnQgZm9yIHVzZXIgYmFzZWQgU05NUCBzZWN1cml0eQotICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlcXVpcmVkIGFuZCBhbHdheXMgY29tcGlsZWQgaW4pCiAgICAgICAgIGtzbSAgICAgICAgICAgICAgICBzdXBwb3J0IGZvciBrZXJiZXJvcyBiYXNlZCBTTk1QIHNlY3VyaXR5CiAgICAgICAgIHRzbSAgICAgICAgICAgICAgICBzdXBwb3J0IGZvciB0aGUgVHJhbnNwb3J0LWJhc2VkIHNlY3VyaXR5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9yIHVzZSB3aXRoIHRoZSBTU0gsIERUTFNVRFAgYW5kIFRMU1RDUCB0cmFuc3BvcnRzKQogXSkKIAorTkVUU05NUF9BUkdfV0lUSChvdXQtc2VjdXJpdHktbW9kdWxlcywKK1sgIC0td2l0aC1vdXQtc2VjdXJpdHktbW9kdWxlcz0iczEgczIgLi4uIiAgIFJlbW92ZXMgdGhlIGdpdmVuIFNOTVAgc2VjdXJpdHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSBzZXJ2aWNlcyBmcm9tIHRoZSBkZWZhdWx0IGxpc3QuCitdKQorCiAKICMjCiAjICAgUHJvamVjdDogTGlicmFyeTogRGV2ZWxvcGVyLXJlbGF0ZWQgc2V0dGluZ3MKQEAgLTcxNyw2ICs3NDgsOTAgQEAKIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0FHRU5UWF9TT0NLRVQsIiR3aXRodmFsIiwKICAgICAgICAgW1VuaXggZG9tYWluIHNvY2tldCBmb3IgQWdlbnRYIG1hc3Rlci1zdWJhZ2VudCBjb21tdW5pY2F0aW9uXSkKIAorIworIyBmZWF0dXJlIGFkZGl0aW9uL3JlbW92YWwgYW5kIG1pbmltaWFsaXN0IHN1cHBvcnQKKyMKK0ZFQVRVUkVfQUREX0ZMQUdTPSIiCitORVRTTk1QX0FSR19XSVRIKGZlYXR1cmVzLAorWyAgLS13aXRoLWZlYXR1cmVzPSJmZWF0MSBmZWF0MiIgICBSZXF1ZXN0IGV4dHJhIGZlYXR1cmVzIHRvIGJlIHR1cm5lZCBvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9ubHkgdXNlZnVsIHdpdGggLS1lbmFibGUtbWluaW1hbGlzdCldLFsKKyAgaWYgdGVzdCAiJHdpdGh2YWwiID0geWVzOyB0aGVuCisgICAgQUNfTVNHX0VSUk9SKFsgUGxlYXNlIHByb3ZpZGUgYSBsaXN0IG9mIGZlYXR1cmVzIF0pOworICBmaQorICBGRUFUVVJFX0FERF9GTEFHUz0iLS1hZGQgJHdpdGh2YWwiCisgIEFDX01TR19SRVNVTFQoYWRkaW5nIGluIGZlYXR1cmVzOiAkd2l0aHZhbCkKK10pCitBQ19TVUJTVChGRUFUVVJFX0FERF9GTEFHUykKKworCitGRUFUVVJFX1JFTU9WRV9GTEFHUz0iIgorTkVUU05NUF9BUkdfV0lUSChvdXQtZmVhdHVyZXMsCitbICAtLXdpdGgtb3V0LWZlYXR1cmVzPSJmZWF0MS4uLiIgIFJlbW92ZSBzcGVjaWZpYyBmZWF0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltcGxpZXMgLS1lbmFibGUtbWluaW1hbGlzdCldLFsKKyAgaWYgdGVzdCAiJHdpdGh2YWwiID0geWVzOyB0aGVuCisgICAgQUNfTVNHX0VSUk9SKFsgUGxlYXNlIHByb3ZpZGUgYSBsaXN0IG9mIGZlYXR1cmVzIF0pOworICBmaQorICBGRUFUVVJFX1JFTU9WRV9GTEFHUz0iLS1yZW1vdmUgJHdpdGh2YWwiCisgIEZFQVRVUkVUQVJHUz0iZmVhdHVyZXMiCisgIEFDX0RFRklORShORVRTTk1QX01JTklNQUxfQ09ERSwgMSwKKyAgICBbRGVmaW5lIGlmIHlvdSB3YW50IHRvIHJlbW92ZSBhbGwgbm9uLWVzc2VudGlhbCBjb2RlIGZlYXR1cmVzLl0pCisgIEFDX01TR19SRVNVTFQocmVtb3ZpbmcgZmVhdHVyZXM6ICR3aXRodmFsKQorXSkKK0FDX1NVQlNUKEZFQVRVUkVfUkVNT1ZFX0ZMQUdTKQorCisKKyMgQ2F0Y2ggY29tbW9uIG1pc3Rha2VzCitBQ19BUkdfV0lUSChmZWF0dXJlLCwgTkVUU05NUF9JTlZBTElEX1dJVEgoW2ZlYXR1cmVzXSkpCitBQ19BUkdfV0lUSChvdXQtZmVhdHVyZSwsIE5FVFNOTVBfSU5WQUxJRF9XSVRIKFtvdXQtZmVhdHVyZXNdKSkKKworRkVBVFVSRVRBUkdTPSIiCitORVRTTk1QX0FSR19FTkFCTEUobWluaW1hbGlzdCwKK1sgIC0tZW5hYmxlLW1pbmltYWxpc3QgICAgICAgICAgICAgUmVtb3ZlIGFsbCBub24tZXNzZW50aWFsIGNvZGUgZmVhdHVyZXMuXSkKK2lmIHRlc3QgIngkZW5hYmxlX21pbmltYWxpc3QiID0gInh5ZXMiOyB0aGVuCisgICAjIHdlJ2xsIGFzc3VtZSB0aGUgbWluaSBhZ2VudCBpcyBkZXNpcmVkIGhlcmUgYXMgd2VsbAorICAgbWluaV9hZ2VudD0ieWVzIgorICAgRkVBVFVSRVRBUkdTPSJmZWF0dXJlcyIKKworICAgIyBuZWVkZWQgdG8gYm9vdHN0cmFwIGxhdGVyIGNoZWNrcworICAgZWNobyAiIiA+IGluY2x1ZGUvbmV0LXNubXAvZmVhdHVyZS1kZXRhaWxzLmgKKyAgIEFDX0RFRklORShORVRTTk1QX01JTklNQUxfQ09ERSwgMSwKKyAgICAgW0RlZmluZSBpZiB5b3Ugd2FudCB0byByZW1vdmUgYWxsIG5vbi1lc3NlbnRpYWwgY29kZSBmZWF0dXJlcy5dKQorZWxzZQorICAgRkVBVFVSRUhFQURFUlM9IiIKK2ZpCitBQ19BUkdfV0lUSChbbWluaW1hbGlzdF0sLE5FVFNOTVBfSU5WQUxJRF9FTkFCTEUoW21pbmltYWxpc3RdKSkKK0FDX1NVQlNUKEZFQVRVUkVUQVJHUykKK0FDX1NVQlNUKEZFQVRVUkVIRUFERVJTKQorCitORVRTTk1QX0FSR19FTkFCTEUobm90aWZ5LW9ubHksCitbICAtLWVuYWJsZS1ub3RpZnktb25seSAgICAgICAgICAgIEJ1aWxkIHRvb2xzIHRoYXQgY2FuIG9ubHkgc2VuZCBub3RpZmljYXRpb25zLl0pCitpZiB0ZXN0ICJ4JGVuYWJsZV9ub3RpZnlfb25seSIgPSAieHllcyI7IHRoZW4KKyAgIEFDX0RFRklORShORVRTTk1QX05PVElGWV9PTkxZLCAxLAorICAgICBbRGVmaW5lIGlmIHlvdSB3YW50IHRvIG9ubHkgc3VwcG9ydCBzZW5kaW5nIG5vdGlmaWNhdGlvbnNdKQorZmkKK0FDX0FSR19XSVRIKFtub3RpZnktb25seV0sLE5FVFNOTVBfSU5WQUxJRF9FTkFCTEUoW25vdGlmeS1vbmx5XSkpCitBQ19BUkdfRU5BQkxFKFtub3RpZnlvbmx5XSwsTkVUU05NUF9JTlZBTElEX0VOQUJMRShbbm90aWZ5LW9ubHldKSkKKworTkVUU05NUF9BUkdfRU5BQkxFKG5vLWxpc3RlbiwKK1sgIC0tZW5hYmxlLW5vLWxpc3RlbiAgICAgICAgICAgICAgQnVpbGQgdG9vbHMgdGhhdCBjYW4ndCBsaXN0ZW4gdG8gcG9ydHMuXSkKK2lmIHRlc3QgIngkZW5hYmxlX25vX2xpc3RlbiIgPSAieHllcyIgLW8gIngkZW5hYmxlX25vdGlmeV9vbmx5IiA9ICJ4eWVzIjsgdGhlbgorICAgZW5hYmxlX25vX2xpc3Rlbj0ieWVzIgorICAgQUNfREVGSU5FKE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQsIDEsCisgICAgIFtEZWZpbmUgaWYgeW91IHdhbnQgdG8gcmVtb3ZlIGFsbCBsaXN0ZW5pbmcgc3VwcG9ydCBmcm9tIHRoZSBjb2RlXSkKK2ZpCitBQ19BUkdfV0lUSChbbm8tbGlzdGVuXSwsTkVUU05NUF9JTlZBTElEX0VOQUJMRShbbm8tbGlzdGVuXSkpCitBQ19BUkdfRU5BQkxFKFtub2xpc3Rlbl0sLE5FVFNOTVBfSU5WQUxJRF9FTkFCTEUoW25vLWxpc3Rlbl0pKQorCitORVRTTk1QX0FSR19FTkFCTEUocmVhZC1vbmx5LAorWyAgLS1lbmFibGUtcmVhZC1vbmx5ICAgICAgICAgICAgICBSZW1vdmUgYWxsIFNFVCBzdXBwb3J0IGZyb20gdGhlIGNvZGUuXSkKK2lmIHRlc3QgIngkZW5hYmxlX3JlYWRfb25seSIgPSAieHllcyIgLW8gIngkZW5hYmxlX25vdGlmeV9vbmx5IiA9ICJ4eWVzIiA7IHRoZW4KKyAgIGVuYWJsZV9yZWFkX29ubHk9InllcyIKKyAgIEFDX0RFRklORShORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQsIDEsCisgICAgIFtEZWZpbmUgaWYgeW91IHdhbnQgdG8gcmVtb3ZlIGFsbCBTRVQvd3JpdGUgYWNjZXNzIGZyb20gdGhlIGNvZGVdKQorZmkKK0FDX0FSR19XSVRIKFtyZWFkLW9ubHldLCxORVRTTk1QX0lOVkFMSURfRU5BQkxFKFtyZWFkLW9ubHldKSkKK0FDX0FSR19FTkFCTEUoW3JlYWRvbmx5XSwsTkVUU05NUF9JTlZBTElEX0VOQUJMRShbcmVhZC1vbmx5XSkpCisKIAogIyMKICMgICBQcm9qZWN0OiBBZ2VudDogTUlCIG1vZHVsZSBjb25maWd1cmF0aW9uCkBAIC03MzIsNiArODQ3LDkgQEAKIEFDX0FSR19XSVRIKFttaW5pYWdlbnRdLCxORVRTTk1QX0lOVkFMSURfRU5BQkxFKFttaW5pLWFnZW50XSkpCiBBQ19BUkdfRU5BQkxFKFttaW5pYWdlbnRdLCxORVRTTk1QX0lOVkFMSURfRU5BQkxFKFttaW5pLWFnZW50XSkpCiAKKworCisKIE5FVFNOTVBfQVJHX0VOQUJMRShtZmQtcmV3cml0ZXMsCiBbICAtLWVuYWJsZS1tZmQtcmV3cml0ZXMgICAgICAgICAgIFVzZSBuZXcgTUZEIHJld3JpdGVzIG9mIG1pYiBtb2R1bGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIGF2YWlsYWJsZS4gKGRlZmF1bHQgaXMgdG8gdXNlCmRpZmYgLS1naXQgYS9kaXN0L01ha2VmaWxlIGIvZGlzdC9NYWtlZmlsZQppbmRleCAxMGE3NDkzLi5jNzcxZjkzIDEwMDY0NAotLS0gYS9kaXN0L01ha2VmaWxlCisrKyBiL2Rpc3QvTWFrZWZpbGUKQEAgLTE5LDcgKzE5LDcgQEAKIE5BTUUgPSBuZXQtc25tcAogCiAjIERlZmluZSB0aGUgZGVmYXVsdCBSUE0gcmVsZWFzZSBudW1iZXIuIFNldCBieSBWZXJzaW9uLU11bmdlLnBsCi1WRVJTSU9OID0gNS42LjIKK1ZFUlNJT04gPSA1LjcuMgogCiBWRVJTSU9OX1RBRz1gZWNobyBFeHQtJChWRVJTSU9OKSB8IHNlZCAncy9cLi8tL2c7J2AKIApkaWZmIC0tZ2l0IGEvZGlzdC9hdXRvY29uZi12ZXJzaW9uIGIvZGlzdC9hdXRvY29uZi12ZXJzaW9uCmluZGV4IGM5NWZlYTUuLjI2NGYyY2UgMTAwNjQ0Ci0tLSBhL2Rpc3QvYXV0b2NvbmYtdmVyc2lvbgorKysgYi9kaXN0L2F1dG9jb25mLXZlcnNpb24KQEAgLTEgKzEgQEAKLTIuNjMKKzIuNjgKZGlmZiAtLWdpdCBhL2Rpc3QvbWFrZXJlbGVhc2UueG1sIGIvZGlzdC9tYWtlcmVsZWFzZS54bWwKaW5kZXggYzMyYjgxMy4uYjAyZTYyNiAxMDA2NDQKLS0tIGEvZGlzdC9tYWtlcmVsZWFzZS54bWwKKysrIGIvZGlzdC9tYWtlcmVsZWFzZS54bWwKQEAgLTM3MSw3ICszNzEsNyBAQAogCSAgICA8Y29tbWFuZD5ORVRTTk1QX0RPTlRfQ0hFQ0tfVkVSU0lPTj0xIG1ha2U8L2NvbW1hbmQ+CiAJICA8L2NvbW1hbmRzPgogCTwvc3RlcD4KLQk8c3RlcCB0eXBlPSJzeXN0ZW0iIHN0ZXBuYW1lPSJidWlsZDp0ZXN0IiB0aXRsZT0iYnVpbGQ6dGVzdCI+CisJPHN0ZXAgdHlwZT0ic3lzdGVtIiBzdGVwbmFtZT0iYnVpbGQ6dGVzdCIgdGl0bGU9InRlc3Rpbmc6IGRlZmF1bHQgdGVzdHMiPgogCSAgPHRleHQ+Tm93IHdlIHJ1biAibWFrZSB0ZXN0IiB3aGljaCBzaG91bGQgcHJvZHVjZSBhIHBlcmZlY3QKIAkgIHNldCB1cCB0ZXN0IHJlc3VsdHMuICBJZiBub3QsIHRoaXMgbmVlZHMgdG8gYmUgZml4ZWQgb3IgYXQKIAkgIGxlYXN0IHVuZGVyc3Rvb2QgYW5kIGFjY2VwdGVkIGFzIGlzIGZvciBzb21lIG90aGVyIHJlYXNvbi48L3RleHQ+CkBAIC0zNzksNiArMzc5LDI0IEBACiAJICAgIDxjb21tYW5kPm1ha2UgdGVzdDwvY29tbWFuZD4KIAkgIDwvY29tbWFuZHM+CiAJPC9zdGVwPgorCTxzdGVwIHR5cGU9InN5c3RlbSIgc3RlcG5hbWU9ImJ1aWxkOnRlc3Q6dW5pdCIgdGl0bGU9InRlc3Rpbmc6IHVuaXQtdGVzdHMiPgorCSAgPHRleHQ+Tm93IHdlIHJ1biB0aGUgdW5pdC10ZXN0cyB3aGljaCBzaG91bGQgYWxzbyBwcm9kdWNlIGEgcGVyZmVjdAorCSAgc2V0IHVwIHRlc3QgcmVzdWx0cy4gIElmIG5vdCwgdGhpcyBuZWVkcyB0byBiZSBmaXhlZCBvciBhdAorCSAgbGVhc3QgdW5kZXJzdG9vZCBhbmQgYWNjZXB0ZWQgYXMgaXMgZm9yIHNvbWUgb3RoZXIgcmVhc29uLjwvdGV4dD4KKwkgIDxjb21tYW5kcz4KKwkgICAgPGNvbW1hbmQ+Y2QgdGVzdGluZyAmYW1wOyZhbXA7IC4vUlVORlVMTFRFU1RTIC1nIHVuaXQtdGVzdHM8L2NvbW1hbmQ+CisJICA8L2NvbW1hbmRzPgorCTwvc3RlcD4KKwk8c3RlcCB0eXBlPSJzeXN0ZW0iIHN0ZXBuYW1lPSJidWlsZDp0ZXN0OnRyYW5zcG9ydHMiIHRpdGxlPSJ0ZXN0aW5nOiB0cmFuc3BvcnRzIj4KKwkgIDx0ZXh0Pk5vdyB3ZSBydW4gdGhlIHRyYW5zcG9ydCB0ZXN0cyB3aGljaCBzaG91bGQgYWxzbworCSAgcHJvZHVjZSBhIHBlcmZlY3Qgc2V0IHVwIHRlc3QgcmVzdWx0cywgaWYgeW91ciBtYWNoaW5lCisJICBzdXBwb3J0cyBhbGwgdGhlIHRyYW5zcG9ydHMuICBJZiBub3QsIHRoaXMgbmVlZHMgdG8gYmUgZml4ZWQKKwkgIG9yIGF0IGxlYXN0IHVuZGVyc3Rvb2QgYW5kIGFjY2VwdGVkIGFzIGlzIGZvciBzb21lIG90aGVyCisJICByZWFzb24gKGxpa2UgeW91IGNhbid0IGRvIElQdjYgb24geW91ciBzeXN0ZW0pLjwvdGV4dD4KKwkgIDxjb21tYW5kcz4KKwkgICAgPGNvbW1hbmQ+Y2QgdGVzdGluZyAmYW1wOyZhbXA7IC4vUlVORlVMTFRFU1RTIC1nIHRyYW5zcG9ydHM8L2NvbW1hbmQ+CisJICA8L2NvbW1hbmRzPgorCTwvc3RlcD4KIAk8c3RlcCB0eXBlPSJzeXN0ZW0iIHN0ZXBuYW1lPSJjb2RlOmNoZWNrY29tbWVudHMiIHRpdGxlPSJjb2RlOmNoZWNrY29tbWVudHMiPgogCSAgPHRleHQ+VGhpcyBjb21tYW5kIGxvb2tzIGZvciBzb3VyY2UgY29kZSBvZGRpdGllcyBhbmQgcG9saWN5CiAJICB2aW9sYXRpb25zLjwvdGV4dD4KZGlmZiAtLWdpdCBhL2Rpc3QvbmV0LXNubXAuc3BlYyBiL2Rpc3QvbmV0LXNubXAuc3BlYwppbmRleCAyMjgzYzJmLi4zODJmOWYzIDEwMDY0NAotLS0gYS9kaXN0L25ldC1zbm1wLnNwZWMKKysrIGIvZGlzdC9uZXQtc25tcC5zcGVjCkBAIC0zNyw3ICszNyw3IEBACiAlZW5kaWYKIFN1bW1hcnk6IFRvb2xzIGFuZCBzZXJ2ZXJzIGZvciB0aGUgU05NUCBwcm90b2NvbAogTmFtZTogbmV0LXNubXAKLVZlcnNpb246IDUuNi4yCitWZXJzaW9uOiA1LjcuMgogIyB1cGRhdGUgcmVsZWFzZSBmb3IgdmVuZG9yIHJlbGVhc2UuIChlZyAxLmZjNiwgMS5yaDcyLCAxLnlkbDMsIDEueWRsMjMpCiBSZWxlYXNlOiAxCiBVUkw6IGh0dHA6Ly93d3cubmV0LXNubXAub3JnLwpkaWZmIC0tZ2l0IGEvZGlzdC9wYXRtZSBiL2Rpc3QvcGF0bWUKaW5kZXggY2MwYjg3YS4uMGZkNTBlZSAxMDA3NTUKLS0tIGEvZGlzdC9wYXRtZQorKysgYi9kaXN0L3BhdG1lCkBAIC0xNCwxMiArMTQsMTMgQEAKIG91ciAlb3B0cyA9CiAoCiAgJ2QnID0+ICRFTlZ7J0hPTUUnfSAuICIvc3JjL3NubXAvcGF0bWUvIiwKLSAnYicgPT4gJ21haW4sNS41LDUuNCw1LjMsNS4yJywKKyAnYicgPT4gJ21haW4sNS42LDUuNSw1LjQsNS4zJywKICAncCcgPT4gJy1wMCcsCiApOwogCiAjIHNldHMgdGhlIG9yZGVyIHNob3duCiBvdXIgQGNvZGV0cmVlcyA9ICgnbWFpbicsCisJCSAgJzUuNicsCiAJCSAgJzUuNScsCiAJCSAgJzUuNCcsCiAJCSAgJzUuMycsCkBAIC0zNCw2ICszNSw3IEBACiAJCSAgJzUuMycgPT4gJ1Y1LTMtcGF0Y2hlcycsCiAJCSAgJzUuNCcgPT4gJ1Y1LTQtcGF0Y2hlcycsCiAJCSAgJzUuNScgPT4gJ1Y1LTUtcGF0Y2hlcycsCisJCSAgJzUuNicgPT4gJ1Y1LTYtcGF0Y2hlcycsCiAJCSAgJ21haW4nID0+ICduZXQtc25tcCcsCiAJCSAgJ1VDRCcgPT4gJ1Y0LTItcGF0Y2hlcycpOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCmluZGV4IDI0MzJiODguLmVjOTMwZmUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCkBAIC02MSw2ICs2MSwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbmV0c25tcF9yZXF1ZXN0X2luZm9fcyAqKTsKKyAgICAgICAgLyoqIGRhdGEgY2xvbmUgaG9vayBmb3IgbXl2b2lkCisgICAgICAgICAqICBkZWVwIGNvcHkgdGhlIG15dm9pZCBtZW1iZXIgLSBkZWZhdWx0IGlzIHRvIGNvcHkgdGhlIHBvaW50ZXIKKyAgICAgICAgICogIFRoaXMgbWV0aG9kIGlzIG9ubHkgY2FsbGVkIGlmIG15dm9pZCAhPSBOVUxMCisgICAgICAgICAqICBteXZvaWQgaXMgdGhlIGN1cnJlbnQgbXl2b2lkIHBvaW50ZXIuCisgICAgICAgICAqICByZXR1cm5zIE5VTEwgb24gZmFpbHVyZQorICAgICAgICAgKi8KKyAgICAgICAgdm9pZCAqKCpkYXRhX2Nsb25lKSh2b2lkICpteXZvaWQpOworICAgICAgICAvKiogZGF0YSBmcmVlIGhvb2sgZm9yIG15dm9pZAorICAgICAgICAgKiAgZGVsZXRlIHRoZSBteXZvaWQgbWVtYmVyIC0gZGVmYXVsdCBpcyB0byBkbyBub3RoaW5nCisgICAgICAgICAqICBUaGlzIG1ldGhvZCBpcyBvbmx5IGNhbGxlZCBpZiBteXZvaWQgIT0gTlVMTAorICAgICAgICAgKi8KICAgICAgICAgdm9pZCAoKmRhdGFfZnJlZSkodm9pZCAqbXl2b2lkKTsgLyoqPCBkYXRhIGZyZWUgaG9vayBmb3IgbXl2b2lkICovCiAKICAgICAgICAgc3RydWN0IG5ldHNubXBfbWliX2hhbmRsZXJfcyAqbmV4dDsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAppbmRleCBiYTgwNzkzLi4yOTQ5YzlkIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCkBAIC01OSwxOCArNTksMjEgQEAKIHZvaWQgICAgICAgICAgICAgc2h1dGRvd25fdHJlZSAgICAodm9pZCk7CiAKIAotbmV0c25tcF9zdWJ0cmVlICpuZXRzbm1wX3N1YnRyZWVfZmluZAkgIChvaWQgKiwgc2l6ZV90LCBuZXRzbm1wX3N1YnRyZWUgKiwKK25ldHNubXBfc3VidHJlZSAqbmV0c25tcF9zdWJ0cmVlX2ZpbmQJICAoY29uc3Qgb2lkICosIHNpemVfdCwKKwkJCQkJICAgbmV0c25tcF9zdWJ0cmVlICosCiAJCQkJCSAgIGNvbnN0IGNoYXIgKmNvbnRleHRfbmFtZSk7CiAKLW5ldHNubXBfc3VidHJlZSAqbmV0c25tcF9zdWJ0cmVlX2ZpbmRfbmV4dChvaWQgKiwgc2l6ZV90LCBuZXRzbm1wX3N1YnRyZWUgKiwKK25ldHNubXBfc3VidHJlZSAqbmV0c25tcF9zdWJ0cmVlX2ZpbmRfbmV4dChjb25zdCBvaWQgKiwgc2l6ZV90LAorCQkJCQkgICBuZXRzbm1wX3N1YnRyZWUgKiwKIAkJCQkJICAgY29uc3QgY2hhciAqY29udGV4dF9uYW1lKTsKIAotbmV0c25tcF9zdWJ0cmVlICpuZXRzbm1wX3N1YnRyZWVfZmluZF9wcmV2KG9pZCAqLCBzaXplX3QsbmV0c25tcF9zdWJ0cmVlICosCituZXRzbm1wX3N1YnRyZWUgKm5ldHNubXBfc3VidHJlZV9maW5kX3ByZXYoY29uc3Qgb2lkICosIHNpemVfdCwKKwkJCQkJICAgbmV0c25tcF9zdWJ0cmVlICosCiAJCQkJCSAgIGNvbnN0IGNoYXIgKmNvbnRleHRfbmFtZSk7CiAKIG5ldHNubXBfc3VidHJlZSAqbmV0c25tcF9zdWJ0cmVlX2ZpbmRfZmlyc3QoY29uc3QgY2hhciAqY29udGV4dF9uYW1lKTsKIAotbmV0c25tcF9zZXNzaW9uICpnZXRfc2Vzc2lvbl9mb3Jfb2lkCSAgIChvaWQgKiwgc2l6ZV90LCAKK25ldHNubXBfc2Vzc2lvbiAqZ2V0X3Nlc3Npb25fZm9yX29pZAkgICAoY29uc3Qgb2lkICosIHNpemVfdCwgCiAJCQkJCSAgICBjb25zdCBjaGFyICpjb250ZXh0X25hbWUpOwogCiBzdWJ0cmVlX2NvbnRleHRfY2FjaGUgKmdldF90b3BfY29udGV4dF9jYWNoZSh2b2lkKTsKQEAgLTg2LDI1ICs4OSwzMiBAQAogI2RlZmluZSBNSUJfVU5SRUdJU1RSQVRJT05fRkFJTEVECS0yCiAjZGVmaW5lIERFRkFVTFRfTUlCX1BSSU9SSVRZCQkxMjcKIAotaW50ICAgICAgICAgICAgIHJlZ2lzdGVyX21pYgkJICAgKGNvbnN0IGNoYXIgKiwgc3RydWN0IHZhcmlhYmxlICosCi0JCQkJCSAgICBzaXplX3QsIHNpemVfdCwgb2lkICosIHNpemVfdCk7CitpbnQgICAgICAgICAgICAgcmVnaXN0ZXJfbWliCQkgICAoY29uc3QgY2hhciAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdmFyaWFibGUgKiwKKwkJCQkJICAgIHNpemVfdCwgc2l6ZV90LCBjb25zdCBvaWQgKiwKKwkJCQkJICAgIHNpemVfdCk7CiAKLWludCAgICAgICAgICAgICByZWdpc3Rlcl9taWJfcHJpb3JpdHkJICAgKGNvbnN0IGNoYXIgKiwgc3RydWN0IHZhcmlhYmxlICosCi0JCQkJCSAgICBzaXplX3QsIHNpemVfdCwgb2lkICosIHNpemVfdCwKK2ludCAgICAgICAgICAgICByZWdpc3Rlcl9taWJfcHJpb3JpdHkJICAgKGNvbnN0IGNoYXIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHZhcmlhYmxlICosCisJCQkJCSAgICBzaXplX3QsIHNpemVfdCwgY29uc3Qgb2lkICosIHNpemVfdCwKIAkJCQkJICAgIGludCk7CiAKLWludCAgICAgICAgICAgICByZWdpc3Rlcl9taWJfcmFuZ2UJICAgKGNvbnN0IGNoYXIgKiwgc3RydWN0IHZhcmlhYmxlICosCi0JCQkJCSAgICBzaXplX3QsIHNpemVfdCwgb2lkICosIHNpemVfdCwgCi0JCQkJCSAgICBpbnQsIGludCwgb2lkLCBuZXRzbm1wX3Nlc3Npb24gKik7CitpbnQgICAgICAgICAgICAgcmVnaXN0ZXJfbWliX3JhbmdlCSAgIChjb25zdCBjaGFyICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB2YXJpYWJsZSAqLAorCQkJCQkgICAgc2l6ZV90LCBzaXplX3QsIGNvbnN0IG9pZCAqLAorCQkJCQkgICAgc2l6ZV90LCBpbnQsIGludCwgb2lkLAorCQkJCQkgICAgbmV0c25tcF9zZXNzaW9uICopOwogCi1pbnQJCXJlZ2lzdGVyX21pYl9jb250ZXh0CSAgIChjb25zdCBjaGFyICosIHN0cnVjdCB2YXJpYWJsZSAqLAotCQkJCQkgICAgc2l6ZV90LCBzaXplX3QsIG9pZCAqLCBzaXplX3QsCitpbnQJCXJlZ2lzdGVyX21pYl9jb250ZXh0CSAgIChjb25zdCBjaGFyICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB2YXJpYWJsZSAqLAorCQkJCQkgICAgc2l6ZV90LCBzaXplX3QsIGNvbnN0IG9pZCAqLCBzaXplX3QsCiAJCQkJCSAgICBpbnQsIGludCwgb2lkLCBuZXRzbm1wX3Nlc3Npb24gKiwKIAkJCQkJICAgIGNvbnN0IGNoYXIgKiwgaW50LCBpbnQpOwogCi1pbnQJbmV0c25tcF9yZWdpc3Rlcl9taWJfdGFibGVfcm93CSAgIChjb25zdCBjaGFyICosIHN0cnVjdCB2YXJpYWJsZSAqLAotCQkJCQkgICAgc2l6ZV90LCBzaXplX3QsIG9pZCAqLCBzaXplX3QsIAotCQkJCQkgICAgaW50LCBpbnQsIG5ldHNubXBfc2Vzc2lvbiAqLAoraW50CW5ldHNubXBfcmVnaXN0ZXJfbWliX3RhYmxlX3JvdwkgICAoY29uc3QgY2hhciAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdmFyaWFibGUgKiwKKwkJCQkJICAgIHNpemVfdCwgc2l6ZV90LCBvaWQgKiwKKwkJCQkJICAgIHNpemVfdCwgaW50LCBpbnQsIG5ldHNubXBfc2Vzc2lvbiAqLAogCQkJCQkgICAgY29uc3QgY2hhciAqLCBpbnQsIGludCk7CiAKIGludAkJdW5yZWdpc3Rlcl9taWIJCSAgIChvaWQgKiwgc2l6ZV90KTsKQEAgLTEzOSwxMCArMTQ5LDEyIEBACiAgKiAgICAgICAgICAoc2l6ZW9mKHRoZW9pZCkgKm11c3QqIHJldHVybiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzISkgCiAgKi8KIAotI2RlZmluZSBSRUdJU1RFUl9NSUIoZGVzY3IsIHZhciwgdmFydHlwZSwgdGhlb2lkKSAgICAgICAgICAgICAgICAgICAgICBcCi0gIGlmIChyZWdpc3Rlcl9taWIoZGVzY3IsIChzdHJ1Y3QgdmFyaWFibGUgKikgdmFyLCBzaXplb2Yoc3RydWN0IHZhcnR5cGUpLCBcCi0gICAgICAgICAgICAgICBzaXplb2YodmFyKS9zaXplb2Yoc3RydWN0IHZhcnR5cGUpLCAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgIHRoZW9pZCwgc2l6ZW9mKHRoZW9pZCkvc2l6ZW9mKG9pZCkpICE9IE1JQl9SRUdJU1RFUkVEX09LICkgXAorI2RlZmluZSBSRUdJU1RFUl9NSUIoZGVzY3IsIHZhciwgdmFydHlwZSwgdGhlb2lkKSAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChyZWdpc3Rlcl9taWIoZGVzY3IsIChjb25zdCBzdHJ1Y3QgdmFyaWFibGUgKikgdmFyLCAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCB2YXJ0eXBlKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHZhcikvc2l6ZW9mKHN0cnVjdCB2YXJ0eXBlKSwgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgdGhlb2lkLCBzaXplb2YodGhlb2lkKS9zaXplb2Yob2lkKSkgIT0gICAgICAgICAgICAgXAorICAgICAgICBNSUJfUkVHSVNURVJFRF9PSykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogCURFQlVHTVNHVEwoKCJyZWdpc3Rlcl9taWIiLCAiJXMgcmVnaXN0cmF0aW9uIGZhaWxlZFxuIiwgZGVzY3IpKTsKIAogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCmluZGV4IDZhMWE4YjkuLmQyNTY1NTAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCkBAIC0xNiw2ICsxNiw3IEBACiAjZGVmaW5lIEJBQllfU1RFUF9OT05FICAgICAgICAgICAgICAgICAgMAogI2RlZmluZSBCQUJZX1NURVBfUFJFX1JFUVVFU1QgICAgICAgICAgICgweDEgPDwgIDEpCiAjZGVmaW5lIEJBQllfU1RFUF9PQkpFQ1RfTE9PS1VQICAgICAgICAgKDB4MSA8PCAgMikKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAjZGVmaW5lIEJBQllfU1RFUF9DSEVDS19WQUxVRSAgICAgICAgICAgKDB4MSA8PCAgMykKICNkZWZpbmUgQkFCWV9TVEVQX1JPV19DUkVBVEUgICAgICAgICAgICAoMHgxIDw8ICA0KQogI2RlZmluZSBCQUJZX1NURVBfVU5ET19TRVRVUCAgICAgICAgICAgICgweDEgPDwgIDUpCkBAIC0yNiwxNCArMjcsMTcgQEAKICNkZWZpbmUgQkFCWV9TVEVQX1VORE9fQ09NTUlUICAgICAgICAgICAoMHgxIDw8IDEwKQogI2RlZmluZSBCQUJZX1NURVBfSVJSRVZFUlNJQkxFX0NPTU1JVCAgICgweDEgPDwgMTEpCiAjZGVmaW5lIEJBQllfU1RFUF9VTkRPX0NMRUFOVVAgICAgICAgICAgKDB4MSA8PCAxMikKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICNkZWZpbmUgQkFCWV9TVEVQX1BPU1RfUkVRVUVTVCAgICAgICAgICAoMHgxIDw8IDEzKQogCiAjZGVmaW5lIEJBQllfU1RFUF9BTEwgICAgICAgICAgICAgICAgICAgKDB4ZmZmZmZmZmYpCiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICNkZWZpbmUgQkFCWV9TVEVQX0NIRUNLX09CSkVDVCAgICAgICAgICBCQUJZX1NURVBfQ0hFQ0tfVkFMVUUKICNkZWZpbmUgQkFCWV9TVEVQX1NFVF9WQUxVRVMgICAgICAgICAgICBCQUJZX1NURVBfU0VUX1ZBTFVFCiAjZGVmaW5lIEJBQllfU1RFUF9VTkRPX1NFVFMgICAgICAgICAgICAgQkFCWV9TVEVQX1VORE9fU0VUCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIC8qKiBAbmFtZSBiYWJ5X3N0ZXBzCiAgKgpAQCAtNDMsNiArNDcsOCBAQAogICogIEB7ICovCiAKICAgICB0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX2JhYnlfc3RlcHNfbW9kZXNfcyB7CisgICAgICAgLyoqIE51bWJlciBvZiBoYW5kbGVycyB3aG9zZSBteXZvaWQgcG9pbnRlciBwb2ludHMgYXQgdGhpcyBvYmplY3QuICovCisgICAgICAgaW50ICAgICAgICAgcmVmY250OwogICAgICAgIHVfaW50ICAgICAgIHJlZ2lzdGVyZWQ7CiAgICAgICAgdV9pbnQgICAgICAgY29tcGxldGVkOwogICAgIH0gbmV0c25tcF9iYWJ5X3N0ZXBzX21vZGVzOwpAQCAtNzQsNiArODAsNyBAQAogICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnByZV9yZXF1ZXN0OwogICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKm9iamVjdF9sb29rdXA7CiAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqZ2V0X3ZhbHVlczsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqb2JqZWN0X3N5bnRheF9jaGVja3M7CiAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqcm93X2NyZWF0aW9uOwogICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnVuZG9fc2V0dXA7CkBAIC04NCw2ICs5MSw3IEBACiAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqdW5kb19jbGVhbnVwOwogICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnVuZG9fY29tbWl0OwogICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKmlycmV2ZXJzaWJsZV9jb21taXQ7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqcG9zdF9yZXF1ZXN0OwogCiAgICB2b2lkICAgICAgICAgICAgICAgICAqbXlfYWNjZXNzX3ZvaWQ7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCmluZGV4IDdmNGU3NGUuLjFlNDc1MWMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCkBAIC0zMiw2ICszMiw4IEBACiAgICAgdHlwZWRlZiB2b2lkIChOZXRzbm1wQ2FjaGVGcmVlKShuZXRzbm1wX2NhY2hlICosIHZvaWQqKTsKIAogICAgIHN0cnVjdCBuZXRzbm1wX2NhY2hlX3MgeworCS8qKiBOdW1iZXIgb2YgaGFuZGxlcnMgd2hvc2UgbXl2b2lkIG1lbWJlciBwb2ludHMgYXQgdGhpcyBzdHJ1Y3R1cmUuICovCisJaW50ICAgICAgcmVmY250OwogICAgICAgICAvKgogCSAqIEZvciBvcGVyYXRpb24gb2YgdGhlIGRhdGEgY2FjaGVzCiAJICovCkBAIC00MCw3ICs0Miw3IEBACiAgICAgICAgIGludCAgICAgIHZhbGlkOwogICAgICAgICBjaGFyICAgICBleHBpcmVkOwogICAgICAgICBpbnQgICAgICB0aW1lb3V0OwkvKiBMZW5ndGggb2YgdGltZSB0aGUgY2FjaGUgaXMgdmFsaWQgKGluIHMpICovCi0gICAgICAgIG1hcmtlcl90IHRpbWVzdGFtcDsJLyogV2hlbiB0aGUgY2FjaGUgd2FzIGxhc3QgbG9hZGVkICovCisgICAgICAgIG1hcmtlcl90IHRpbWVzdGFtcE07CS8qIFdoZW4gdGhlIGNhY2hlIHdhcyBsYXN0IGxvYWRlZCAqLwogICAgICAgICB1X2xvbmcgICB0aW1lcl9pZDsgICAgICAvKiBwZXJpb2RpYyB0aW1lciBpZCAqLwogCiAgICAgICAgIE5ldHNubXBDYWNoZUxvYWQgKmxvYWRfY2FjaGU7CkBAIC0xMDAsNiArMTAyLDcgQEAKIAogICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKgogICAgIG5ldHNubXBfY2FjaGVfaGFuZGxlcl9nZXQobmV0c25tcF9jYWNoZSogY2FjaGUpOworICAgIHZvaWQgbmV0c25tcF9jYWNoZV9oYW5kbGVyX293bnNfY2FjaGUobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlcik7CiAKICAgICBuZXRzbm1wX2NhY2hlICogbmV0c25tcF9jYWNoZV9maW5kX2J5X29pZChjb25zdCBvaWQgKiByb290b2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByb290b2lkX2xlbik7CkBAIC0xMTYsNiArMTE5LDcgQEAKICNkZWZpbmUgTkVUU05NUF9DQUNIRV9ET05UX0FVVE9fUkVMRUFTRSAgICAgICAgICAgICAgICAgICAgIDB4MDAwOAogI2RlZmluZSBORVRTTk1QX0NBQ0hFX1BSRUxPQUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDEwCiAjZGVmaW5lIE5FVFNOTVBfQ0FDSEVfQVVUT19SRUxPQUQgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMjAKKyNkZWZpbmUgTkVUU05NUF9DQUNIRV9SRVNFVF9USU1FUl9PTl9VU0UgICAgICAgICAgICAgICAgICAgIDB4MDA0MAogCiAjZGVmaW5lIE5FVFNOTVBfQ0FDSEVfSElOVF9IQU5ETEVSX0FSR1MgICAgICAgICAgICAgICAgICAgICAweDEwMDAKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCmluZGV4IDNhZTc1OWQuLmY2ZjYzOWQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgTkVUU05NUF9EU19BR0VOVF9ET05UX0xPR19UQ1BXUkFQUEVSU19DT05ORUNUUyAxMiAgIC8qIDEgPSBkaXNhYmxlIGxvZ2dpbmcgKi8KICNkZWZpbmUgTkVUU05NUF9EU19BUFBfRE9OVF9MT0cgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX0RPTlRfUkVUQUlOX05PVElGSUNBVElPTlMgLyogY29tcGF0ICovCiAjZGVmaW5lIE5FVFNOTVBfRFNfQUdFTlRfU0tJUE5GU0lOSE9TVFJFU09VUkNFUyAgICAxMyAgIC8qIDEgPSBkb24ndCBzdG9yZSBORlMgZW50cmllcyBpbiBoclN0b3JhZ2VUYWJsZSAqLworI2RlZmluZSBORVRTTk1QX0RTX0FHRU5UX1JFQUxTVE9SQUdFVU5JVFMgMTQgICAgLyogMSA9IHVzZSByZWFsIGFsbG9jYXRpb24gdW5pdHMgaW4gaHJTdG9yYWdlVGFibGUsIDAgPSByZWNhbGN1bGF0ZSBpdCB0byBmaXQgMzJiaXRzICovCiAKICAgIC8qIFJlcGVhdGVkIGZyb20gImFwcHMvc25tcHRyYXBkX2RzLmgiICovCiAjZGVmaW5lIE5FVFNOTVBfRFNfQVBQX05VTUVSSUNfSVAgICAgICAgMTYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvY3B1LmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2NwdS5oCmluZGV4IDYyNjg4OTcuLmY2ZTQzZTUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvY3B1LmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9jcHUuaApAQCAtMzMsNiArMzMsOSBAQAogICAgICB1bnNpZ25lZCBsb25nIGxvbmcga2Vybl90aWNrczsKICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGludHJwdF90aWNrczsKICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHNpcnFfdGlja3M7CisgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzdGVhbF90aWNrczsKKyAgICAgdW5zaWduZWQgbG9uZyBsb25nIGd1ZXN0X3RpY2tzOworICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZ3Vlc3RuaWNlX3RpY2tzOwogCiAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbF90aWNrczsKICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHN5czJfdGlja3M7ICAvKiBGb3Igbm9uLWF0b21pYyBzeXN0ZW0gY291bnRzICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2ZzeXMuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvZnN5cy5oCmluZGV4IDVhMWU1ZWYuLjkxZThlMTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvZnN5cy5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvZnN5cy5oCkBAIC02MCwxMyArNjAsMTkgQEAKICAgICAgY2hhciBkZXZpY2VbU05NUF9NQVhQQVRIKzFdOwogICAgICBpbnQgIHR5cGU7CiAKLSAgICAgbG9uZyBzaXplOwotICAgICBsb25nIHVzZWQ7Ci0gICAgIGxvbmcgYXZhaWw7Ci0gICAgIGxvbmcgdW5pdHM7CisgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplOworICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdXNlZDsKKyAgICAgdW5zaWduZWQgbG9uZyBsb25nIGF2YWlsOworICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdW5pdHM7CiAKLSAgICAgbG9uZyBpbnVtc190b3RhbDsKLSAgICAgbG9uZyBpbnVtc19hdmFpbDsKKyAgICAgLyogYXJ0aWZpY2lhbGx5IGNvbXB1dGVkIHZhbHVlcywgYm90aCAnc2l6ZV8zMicgYW5kICd1bml0c18zMicgZml0IElOVDMyICovCisgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZV8zMjsKKyAgICAgdW5zaWduZWQgbG9uZyB1c2VkXzMyOworICAgICB1bnNpZ25lZCBsb25nIGF2YWlsXzMyOworICAgICB1bnNpZ25lZCBsb25nIHVuaXRzXzMyOworCisgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnVtc190b3RhbDsKKyAgICAgdW5zaWduZWQgbG9uZyBsb25nIGludW1zX2F2YWlsOwogCiAgICAgIGludCAgbWluc3BhY2U7CiAgICAgIGludCAgbWlucGVyY2VudDsKQEAgLTk5LDMgKzEwNSw1IEBACiB1bnNpZ25lZCBsb25nIGxvbmcgbmV0c25tcF9mc3lzX3NpemVfdWxsKCBuZXRzbm1wX2ZzeXNfaW5mbyogKTsKIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXRzbm1wX2ZzeXNfdXNlZF91bGwoIG5ldHNubXBfZnN5c19pbmZvKiApOwogdW5zaWduZWQgbG9uZyBsb25nIG5ldHNubXBfZnN5c19hdmFpbF91bGwobmV0c25tcF9mc3lzX2luZm8qICk7CisKK3ZvaWQgbmV0c25tcF9mc3lzX2NhbGN1bGF0ZTMyKCBuZXRzbm1wX2ZzeXNfaW5mbyAqZik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKaW5kZXggZWZjOGRkMy4uODJmMmVkZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaApAQCAtMTM2LDEzICsxMzYsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0TmFtZSk7CiAKIE5ldHNubXBfTm9kZV9IYW5kbGVyIG5ldHNubXBfaW5zdGFuY2VfaGVscGVyX2hhbmRsZXI7Ci0jaWZuZGVmIE5FVFNOTVBfTk9fREVQUkVDQVRFRF9GVU5DVElPTlMKLU5ldHNubXBfTm9kZV9IYW5kbGVyIG5ldHNubXBfaW5zdGFuY2VfdWxvbmdfaGFuZGxlcjsKLU5ldHNubXBfTm9kZV9IYW5kbGVyIG5ldHNubXBfaW5zdGFuY2VfbG9uZ19oYW5kbGVyOwotTmV0c25tcF9Ob2RlX0hhbmRsZXIgbmV0c25tcF9pbnN0YW5jZV9pbnRfaGFuZGxlcjsKLU5ldHNubXBfTm9kZV9IYW5kbGVyIG5ldHNubXBfaW5zdGFuY2VfdWludF9oYW5kbGVyOwotTmV0c25tcF9Ob2RlX0hhbmRsZXIgbmV0c25tcF9pbnN0YW5jZV9jb3VudGVyMzJfaGFuZGxlcjsKLSNlbmRpZgogTmV0c25tcF9Ob2RlX0hhbmRsZXIgbmV0c25tcF9pbnN0YW5jZV9udW1fZmlsZV9oYW5kbGVyOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKaW5kZXggMDZlYzQ0OS4uMmJkM2NkMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKQEAgLTI1LDEwICsyNSwxMCBAQAogfSBuZXRzbm1wX29sZF9hcGlfY2FjaGU7CiAKIGludCAgICAgICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX29sZF9hcGkoY29uc3QgY2hhciAqbW9kdWxlTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZhcmlhYmxlICp2YXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB2YXJpYWJsZSAqdmFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdmFyc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bXZhcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIG1pYmxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogbWlibG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbWlibG9jbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcHJpb3JpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByYW5nZV9zdWJpZCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKaW5kZXggNzk5NWE1Yi4uYWFkODgzNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKQEAgLTExOCw5ICsxMTgsMTUgQEAKICNkZWZpbmUgTU9ERV9HRVRORVhUICAgICAgICAgIFNOTVBfTVNHX0dFVE5FWFQKICNkZWZpbmUgTU9ERV9HRVRCVUxLICAgICAgICAgIFNOTVBfTVNHX0dFVEJVTEsKICNkZWZpbmUgTU9ERV9HRVRfU1RBU0ggICAgICAgIFNOTVBfTVNHX0lOVEVSTkFMX0dFVF9TVEFTSAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICNkZWZpbmUgTU9ERV9JU19HRVQoeCkgICAgICAgICgoeCA+PSAxMjgpICYmICh4ICE9IC0xKSAgJiYgKHggIT0gU05NUF9NU0dfU0VUKSkKKyNlbHNlIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworI2RlZmluZSBNT0RFX0lTX0dFVCh4KSAgICAgICAgKCh4ID49IDEyOCkgJiYgKHggIT0gLTEpKQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAgICAgLyogI2RlZmluZSBNT0RFX0lTX0dFVCh4KSAgICAgICAgKCh4ID09IFNOTVBfTVNHX0dFVCkgfHwgKHggPT0gU05NUF9NU0dfR0VUTkVYVCkgfHwgKHggPT0gU05NUF9NU0dfR0VUQlVMSykgfHwgKHggPT0gU05NUF9NU0dfSU5URVJOQUxfR0VUX1NUQVNIKSkgKi8KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICNkZWZpbmUgTU9ERV9TRVRfQkVHSU4gICAgICAgIFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9CRUdJTgogI2RlZmluZSBNT0RFX1NFVF9SRVNFUlZFMSAgICAgU05NUF9NU0dfSU5URVJOQUxfU0VUX1JFU0VSVkUxCiAjZGVmaW5lIE1PREVfU0VUX1JFU0VSVkUyICAgICBTTk1QX01TR19JTlRFUk5BTF9TRVRfUkVTRVJWRTIKQEAgLTEzMCwxMSArMTM2LDEzIEBACiAjZGVmaW5lIE1PREVfU0VUX1VORE8gICAgICAgICBTTk1QX01TR19JTlRFUk5BTF9TRVRfVU5ETwogI2RlZmluZSBNT0RFX0lTX1NFVCh4KSAgICAgICAgICgoeCA8IDEyOCkgfHwgKHggPT0gLTEpIHx8ICh4ID09IFNOTVBfTVNHX1NFVCkpCiAgICAgLyogI2RlZmluZSBNT0RFX0lTX1NFVCh4KSAgICAgICAgICghTU9ERV9JU19HRVQoeCkpICovCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICNkZWZpbmUgTU9ERV9CU1RFUF9QUkVfUkVRVUVTVCAgIFNOTVBfTVNHX0lOVEVSTkFMX1BSRV9SRVFVRVNUCiAjZGVmaW5lIE1PREVfQlNURVBfUE9TVF9SRVFVRVNUICBTTk1QX01TR19JTlRFUk5BTF9QT1NUX1JFUVVFU1QKIAogI2RlZmluZSBNT0RFX0JTVEVQX09CSkVDVF9MT09LVVAgICAgICAgU05NUF9NU0dfSU5URVJOQUxfT0JKRUNUX0xPT0tVUAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICNkZWZpbmUgTU9ERV9CU1RFUF9DSEVDS19WQUxVRSAgICAgICAgIFNOTVBfTVNHX0lOVEVSTkFMX0NIRUNLX1ZBTFVFCiAjZGVmaW5lIE1PREVfQlNURVBfUk9XX0NSRUFURSAgICAgICAgICBTTk1QX01TR19JTlRFUk5BTF9ST1dfQ1JFQVRFCiAjZGVmaW5lIE1PREVfQlNURVBfVU5ET19TRVRVUCAgICAgICAgICBTTk1QX01TR19JTlRFUk5BTF9VTkRPX1NFVFVQCkBAIC0xNDUsNyArMTUzLDcgQEAKICNkZWZpbmUgTU9ERV9CU1RFUF9VTkRPX0NPTU1JVCAgICAgICAgIFNOTVBfTVNHX0lOVEVSTkFMX1VORE9fQ09NTUlUCiAjZGVmaW5lIE1PREVfQlNURVBfSVJSRVZFUlNJQkxFX0NPTU1JVCBTTk1QX01TR19JTlRFUk5BTF9JUlJFVkVSU0lCTEVfQ09NTUlUCiAjZGVmaW5lIE1PREVfQlNURVBfVU5ET19DTEVBTlVQICAgICAgICBTTk1QX01TR19JTlRFUk5BTF9VTkRPX0NMRUFOVVAKLQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAvKiogQHR5cGVkZWYgc3RydWN0IG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8KICAqIFR5cGVkZWZzIHRoZSBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zIHN0cnVjdCBpbnRvCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAppbmRleCBkMjgwYTlhLi43N2RiZDcwIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKQEAgLTQ1LDYgKzQ1LDIzIEBACiAKICAgICBzdHJ1Y3QgdmFyaWFibGU7CiAKKyAgICAvKioKKyAgICAgKiBEdXBsaWNhdGVzIGEgdmFyaWFibGUuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIFBvaW50ZXIgdG8gdGhlIGR1cGxpY2F0ZSB2YXJpYWJsZSB1cG9uIHN1Y2Nlc3M7IE5VTEwgdXBvbgorICAgICAqICAgZmFpbHVyZS4KKyAgICAgKgorICAgICAqIEBzZWUgc3RydWN0IHZhcmlhYmxlCisgICAgICogQHNlZSBzdHJ1Y3QgdmFyaWFibGUxCisgICAgICogQHNlZSBzdHJ1Y3QgdmFyaWFibGUyCisgICAgICogQHNlZSBzdHJ1Y3QgdmFyaWFibGUzCisgICAgICogQHNlZSBzdHJ1Y3QgdmFyaWFibGU0CisgICAgICogQHNlZSBzdHJ1Y3QgdmFyaWFibGU3CisgICAgICogQHNlZSBzdHJ1Y3QgdmFyaWFibGU4CisgICAgICogQHNlZSBzdHJ1Y3QgdmFyaWFibGUxMworICAgICAqLworICAgIHN0cnVjdCB2YXJpYWJsZSAqbmV0c25tcF9kdXBsaWNhdGVfdmFyaWFibGUoY29uc3Qgc3RydWN0IHZhcmlhYmxlICp2YXIpOworCiAgICAgLyoKICAgICAgKiBGdW5jdGlvbiBwb2ludGVyIGNhbGxlZCBieSB0aGUgbWFzdGVyIGFnZW50IGZvciB3cml0ZXMuIAogICAgICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCmluZGV4IDgyNDk1ZWMuLjc5ZTU4OGMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKQEAgLTEyMSw2ICsxMjEsOCBAQAogICAgIG5ldHNubXBfbWliX2hhbmRsZXIKICAgICAgICAgKm5ldHNubXBfZ2V0X3RhYmxlX2hhbmRsZXIobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdGFicmVxKTsKKyAgICB2b2lkICBuZXRzbm1wX2hhbmRsZXJfb3duc190YWJsZV9pbmZvKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIpOworICAgIHZvaWQgIG5ldHNubXBfcmVnaXN0cmF0aW9uX293bnNfdGFibGVfaW5mbyhuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWcpOwogICAgIGludCAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGUoICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWdpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJyZXEpOwogICAgIGludCAgIG5ldHNubXBfdW5yZWdpc3Rlcl90YWJsZShuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWdpbmZvKTsKQEAgLTE1MCw2ICsxNTIsOCBAQAogICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8KICAgICAgICAgKm5ldHNubXBfZmluZF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyhuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnJlZ2luZm8pOworICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKgorICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2Nsb25lKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRyaSk7CiAgICAgdm9pZCBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqKTsKIAogICAgIG5ldHNubXBfaW5kZXggKiBuZXRzbm1wX3RhYmxlX2luZGV4X2ZpbmRfbmV4dF9yb3cobmV0c25tcF9jb250YWluZXIgKmMsCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCmluZGV4IDliOGE5YTMuLjY2ZTNiM2MgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCkBAIC0xNTAsNiArMTUwLDggQEAKIAogICAgIHZvaWQgbmV0c25tcF9yZWdpc3Rlcl9hdXRvX2RhdGFfdGFibGUobmV0c25tcF90YWJsZV9kYXRhX3NldCAqdGFibGVfc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqcmVnaXN0cmF0aW9uX25hbWUpOworICAgIHZvaWQgbmV0c25tcF91bnJlZ2lzdGVyX2F1dG9fZGF0YV90YWJsZShuZXRzbm1wX3RhYmxlX2RhdGFfc2V0ICp0YWJsZV9zZXQsCisJCQkJCSAgICBjaGFyICpyZWdpc3RyYXRpb25fbmFtZSk7CiAgICAgdm9pZCBuZXRzbm1wX2NvbmZpZ19wYXJzZV90YWJsZV9zZXQoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmxpbmUpOwogICAgIHZvaWQgbmV0c25tcF9jb25maWdfcGFyc2VfYWRkX3JvdyggIGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpsaW5lKTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCmluZGV4IDhjZGIxZTcuLmM3MWRkNGUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKQEAgLTUxLDYgKzUxLDkgQEAKICAgICAgICBUaGUgbmV0c25tcF9pdGVyYXRvcl9pbmZvIHR5cGVkZWYgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBkaXJlY3RseSBjYWxsaW5nIHRoaXMgc3RydWN0IGlmIHlvdSB3b3VsZCBwcmVmZXIuCiAgICAgICovCiAgICAgdHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MgeworICAgICAgIC8qKiBOdW1iZXIgb2YgaGFuZGxlcnMgdGhhdCBvd24gdGhpcyBkYXRhIHN0cnVjdHVyZS4gKi8KKyAgICAgICBpbnQgcmVmY250OworCiAgICAgICAgLyoqIFJlc3BvbnNpYmxlIGZvcjogcmV0dXJuaW5nIHRoZSBmaXJzdCBzZXQgb2YgImluZGV4IiBkYXRhLCBhCiAgICAgICAgICAgIGxvb3AtY29udGV4dCBwb2ludGVyLCBhbmQgb3B0aW9uYWxseSBhIGRhdGEgY29udGV4dAogICAgICAgICAgICBwb2ludGVyICovCkBAIC05NCw2ICs5Nyw3IEBACiAgICAgICAgIHZvaWQgICAgICAgICAgICpteXZvaWQ7CiAgICAgICAgIGludCAgICAgICAgICAgICBmbGFnczsKICNkZWZpbmUgTkVUU05NUF9JVEVSQVRPUl9GTEFHX1NPUlRFRAkweDAxCisjZGVmaW5lIE5FVFNOTVBfSEFORExFUl9PV05TX0lJTkZPCTB4MDIKIAogICAgICAgIC8qKiBBIHBvaW50ZXIgdG8gdGhlIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gb2JqZWN0CiAgICAgICAgICAgIHRoaXMgaXRlcmF0b3IgaXMgcmVnaXN0ZXJlZCBhbG9uZyB3aXRoLiAqLwpAQCAtMTE2LDExICsxMjAsMTEgQEAKICAqIEl0ZXJhdG9yIEFQSTogTUlCIG1haW50ZW5hbmNlCiAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKKyAgICB2b2lkICAgbmV0c25tcF9oYW5kbGVyX293bnNfaXRlcmF0b3JfaW5mbyhuZXRzbm1wX21pYl9oYW5kbGVyICpoKTsKICAgICBuZXRzbm1wX21pYl9oYW5kbGVyCiAgICAgICAgICAgKm5ldHNubXBfZ2V0X3RhYmxlX2l0ZXJhdG9yX2hhbmRsZXIobmV0c25tcF9pdGVyYXRvcl9pbmZvICppaW5mbyk7Ci0gICAgaW50ICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IoICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcmVnaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKmlpbmZvKTsKKyAgICBpbnQgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcihuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqaWluZm8pOwogICAgIHZvaWQgIG5ldHNubXBfaXRlcmF0b3JfZGVsZXRlX3RhYmxlKG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqaWluZm8pOwogCiAgICAgdm9pZCAqbmV0c25tcF9leHRyYWN0X2l0ZXJhdG9yX2NvbnRleHQobmV0c25tcF9yZXF1ZXN0X2luZm8gKik7CkBAIC0xMjgsNiArMTMyLDEwIEBACiAKICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciBuZXRzbm1wX3RhYmxlX2l0ZXJhdG9yX2hlbHBlcl9oYW5kbGVyOwogCisjZGVmaW5lIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IyKHJlZ2luZm8sIGlpbmZvKSAgICAgICAgXAorICAgICgoKGlpbmZvKS0+ZmxhZ3MgfD0gTkVUU05NUF9IQU5ETEVSX09XTlNfSUlORk8pLCAgICAgICAgICAgXAorICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yKChyZWdpbmZvKSwgKGlpbmZvKSkpCisKIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICogSXRlcmF0b3IgQVBJOiBSb3cgb3BlcmF0aW9ucwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAppbmRleCAzYzZkNjA1Li42NzEwNGVlIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaApAQCAtNjQsOCArNjQsMTIgQEAKIAogaW50IG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSggbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfd2F0Y2hlcl9pbmZvICAgICAgICAgKndpbmZvKTsKK2ludCBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UyKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3dhdGNoZXJfaW5mbyAgICAgICAgICp3aW5mbyk7CiBpbnQgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhciggICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF93YXRjaGVyX2luZm8gICAgICAgICAqd2luZm8pOworaW50IG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIyKCAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfd2F0Y2hlcl9pbmZvICAgICAgICAgKndpbmZvKTsKIGludCBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfdGltZXN0YW1wKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJfdCB0aW1lc3RhbXApOwogaW50IG5ldHNubXBfd2F0Y2hlZF90aW1lc3RhbXBfcmVnaXN0ZXIobmV0c25tcF9taWJfaGFuZGxlciAqd2hhbmRsZXIsCkBAIC0xMjQsNiArMTI4LDExIEBACiBuZXRzbm1wX3dhdGNoZXJfaW5mbyAqCiBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm82KHZvaWQgKiwgc2l6ZV90LCB1X2NoYXIsIGludCwgc2l6ZV90LCBzaXplX3QqKTsKIAorbmV0c25tcF93YXRjaGVyX2luZm8gKgorbmV0c25tcF9jbG9uZV93YXRjaGVyX2luZm8obmV0c25tcF93YXRjaGVyX2luZm8gKndpbmZvKTsKK3ZvaWQKK25ldHNubXBfb3duc193YXRjaGVyX2luZm8obmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlcik7CisKIE5ldHNubXBfTm9kZV9IYW5kbGVyICBuZXRzbm1wX3dhdGNoZXJfaGVscGVyX2hhbmRsZXI7CiAKIG5ldHNubXBfbWliX2hhbmRsZXIgICpuZXRzbm1wX2dldF93YXRjaGVkX3RpbWVzdGFtcF9oYW5kbGVyKHZvaWQpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9hcnAuaCBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvYXJwLmgKaW5kZXggMTFlODMyYy4uYmE0YmIyMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9hcnAuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2FycC5oCkBAIC03Myw2ICs3Myw3IEBACiAKICAgIGludCAgICAgICBmbGFnczsgLyogZm9yIG5ldC1zbm1wIHVzZSAqLwogCisgICB1bnNpZ25lZCAgZ2VuZXJhdGlvbjsKICAgIG9pZCAgICAgICBpZl9pbmRleDsKIAogICAgdV9jaGFyICAgIGFycF9waHlzYWRkcmVzc1tORVRTTk1QX0FDQ0VTU19BUlBfUEhZU0FERFJfQlVGX1NJWkVdOwpAQCAtODYsMzEgKzg3LDM5IEBACiAgICB1X2xvbmcgICAgYXJwX2xhc3RfdXBkYXRlZDsgICAvKiB0aW1ldGlja3Mgb2YgbGFzdCB1cGRhdGUgKi8KIH0gbmV0c25tcF9hcnBfZW50cnk7CiAKKyNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfQVJQX0VOVFJZX0ZMQUdfREVMRVRFICAgICAgMHgwMDAwMDAwMQogCiAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyoKICAqIEFDQ0VTUyBmdW5jdGlvbiBwcm90b3R5cGVzCiAgKi8KLS8qCi0gKiBpZmNvbnRhaW5lciBpbml0Ci0gKi8KLW5ldHNubXBfY29udGFpbmVyICogbmV0c25tcF9hY2Nlc3NfYXJwX2NvbnRhaW5lcl9pbml0KHVfaW50IGluaXRfZmxhZ3MpOwotI2RlZmluZSBORVRTTk1QX0FDQ0VTU19BUlBfSU5JVF9OT0ZMQUdTICAgICAgICAgICAgICAgMHgwMDAwCitzdHJ1Y3QgbmV0c25tcF9hcnBfYWNjZXNzX3M7Cit0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX2FycF9hY2Nlc3NfcyBuZXRzbm1wX2FycF9hY2Nlc3M7CiAKLS8qCi0gKiBpZmNvbnRhaW5lciBsb2FkIGFuZCBmcmVlCi0gKi8KLW5ldHNubXBfY29udGFpbmVyKgotbmV0c25tcF9hY2Nlc3NfYXJwX2NvbnRhaW5lcl9sb2FkKG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBsb2FkX2ZsYWdzKTsKLSNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfQVJQX0xPQURfTk9GTEFHUyAgICAgICAgICAgICAgIDB4MDAwMAordHlwZWRlZiB2b2lkIChOZXRzbm1wQWNjZXNzQXJwVXBkYXRlKShuZXRzbm1wX2FycF9hY2Nlc3MgKiwgbmV0c25tcF9hcnBfZW50cnkqKTsKK3R5cGVkZWYgdm9pZCAoTmV0c25tcEFjY2Vzc0FycEdDKSAgICAobmV0c25tcF9hcnBfYWNjZXNzICopOwogCi12b2lkIG5ldHNubXBfYWNjZXNzX2FycF9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBmcmVlX2ZsYWdzKTsKLSNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfQVJQX0ZSRUVfTk9GTEFHUyAgICAgICAgICAgICAgIDB4MDAwMAotI2RlZmluZSBORVRTTk1QX0FDQ0VTU19BUlBfRlJFRV9ET05UX0NMRUFSICAgICAgICAgICAgMHgwMDAxCi0jZGVmaW5lIE5FVFNOTVBfQUNDRVNTX0FSUF9GUkVFX0tFRVBfQ09OVEFJTkVSICAgICAgICAweDAwMDIKK3N0cnVjdCBuZXRzbm1wX2FycF9hY2Nlc3NfcyB7CisgICAgdm9pZCAqbWFnaWM7CisgICAgdm9pZCAqYXJjaF9tYWdpYzsKKyAgICBpbnQgc3luY2hyb25pemVkOworICAgIHVuc2lnbmVkIGdlbmVyYXRpb247CisgICAgTmV0c25tcEFjY2Vzc0FycFVwZGF0ZSAqdXBkYXRlX2hvb2s7CisgICAgTmV0c25tcEFjY2Vzc0FycEdDICpnY19ob29rOworICAgIGNoYXIgKmNhY2hlX2V4cGlyZWQ7Cit9OwogCituZXRzbm1wX2FycF9hY2Nlc3MgKgorbmV0c25tcF9hY2Nlc3NfYXJwX2NyZWF0ZSh1X2ludCBpbml0X2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wQWNjZXNzQXJwVXBkYXRlICp1cGRhdGVfaG9vaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcEFjY2Vzc0FycEdDICpnY19ob29rLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmNhY2hlX3RpbWVvdXQsIGludCAqY2FjaGVfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNhY2hlX2V4cGlyZWQpOworI2RlZmluZSBORVRTTk1QX0FDQ0VTU19BUlBfQ1JFQVRFX05PRkxBR1MgICAgICAgICAgICAgMHgwMDAwCisKK2ludCBuZXRzbm1wX2FjY2Vzc19hcnBfZGVsZXRlKG5ldHNubXBfYXJwX2FjY2VzcyAqYWNjZXNzKTsKK2ludCBuZXRzbm1wX2FjY2Vzc19hcnBfbG9hZChuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2Vzcyk7CitpbnQgbmV0c25tcF9hY2Nlc3NfYXJwX3VubG9hZChuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2Vzcyk7CiAKIC8qCiAgKiBjcmVhdGUvZnJlZSBhIGFycCtlbnRyeQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pcF9zY2FsYXJzLmggYi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwX3NjYWxhcnMuaAppbmRleCBmN2IyZTMxLi4wMzYwMWEwIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwX3NjYWxhcnMuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwX3NjYWxhcnMuaApAQCAtOCw5ICs4LDE0IEBACiBpbnQgbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXBGb3J3YXJkaW5nX2dldCh1X2xvbmcgKnZhbHVlKTsKIGludCBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcEZvcndhcmRpbmdfc2V0KHVfbG9uZyB2YWx1ZSk7CiAKK2ludCBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcERlZmF1bHRUVExfZ2V0KHVfbG9uZyAqdmFsdWUpOworaW50IG5ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwRGVmYXVsdFRUTF9zZXQodV9sb25nIHZhbHVlKTsKKwogaW50IG5ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwdjZJcEZvcndhcmRpbmdfZ2V0KHVfbG9uZyAqdmFsdWUpOwogaW50IG5ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwdjZJcEZvcndhcmRpbmdfc2V0KHVfbG9uZyB2YWx1ZSk7CiAKK2ludCBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcHY2SXBEZWZhdWx0SG9wTGltaXRfZ2V0KHVfbG9uZyAqdmFsdWUpOworaW50IG5ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwdjZJcERlZmF1bHRIb3BMaW1pdF9zZXQodV9sb25nIHZhbHVlKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oIGIvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MuaAppbmRleCA3NTA1NmYyLi5iMTUzZTAzIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmgKQEAgLTE0NCw2ICsxNDQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhZGRyX2xlbiwgaW50IHBmeF9sZW4pOwogCiBpbnQgbmV0c25tcF9pcGFkZHJlc3NfaXB2NF9wcmVmaXhfbGVuKGluX2FkZHJfdCBtYXNrKTsKK2ludCBuZXRzbm1wX2lwYWRkcmVzc19pcHY2X3ByZWZpeF9sZW4oc3RydWN0IGluNl9hZGRyIG1hc2spOwogCiBpbnQgbmV0c25tcF9pcGFkZHJlc3NfZmxhZ3NfY29weSh1X2xvbmcgKmlwQWRkcmVzc1ByZWZpeEFkdlByZWZlcnJlZExpZmV0aW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICppcEFkZHJlc3NQcmVmaXhBZHZWYWxpZExpZmV0aW1lLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAppbmRleCBjMjVhZDRiLi41NmNkYmFlIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaApAQCAtNTQsNiArNTQsNyBAQAogICAgIE5FVFNOTVBfSU1QT1JUCiAgICAgdm9pZCAgICAgICAgICAgIGluaXRfY2FsbGJhY2tzKHZvaWQpOwogCisgICAgTkVUU05NUF9JTVBPUlQKICAgICBpbnQgICAgICAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl9jYWxsYmFjayhpbnQgbWFqb3IsIGludCBtaW5vciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QQ2FsbGJhY2sgKiBuZXdfY2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnLCBpbnQgcHJpb3JpdHkpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NtdV9jb21wYXQuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jbXVfY29tcGF0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0NzVjNmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NtdV9jb21wYXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDI5MiArMCwwIEBACi0vKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQocykuICBTZWUKLSAqIHRoZSBOZXQtU05NUCdzIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCi0gKiB0aGF0IG1heSBhcHBseToKLSAqLwotLyoKLSAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6Ci0gKiBDb3B5cmlnaHQgqSAyMDAzIFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKLSAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCi0gKi8KLQotLyoKLSAqICBDTVUgY29tcGF0YWJpbGl0eSBkZWZpbml0aW9ucyBhbmQgc3RydWN0dXJlcy4KLSAqCi0gKiAgICAoc2luY2UgdGhlIFVDRCBwYWNrYWdlIHNwbGl0IGZyb20gdGhlIENNVSBvbmUKLSAqICAgICBhYm91dCA4IHllYXJzIGFnbywgdGhhdCdzIHByb2JhYmx5IGVub3VnaCB0aW1lCi0gKiAgICAgZm9yIHBlb3BsZSB0byBjb252ZXJ0IGFueSBvdXRzdGFuZGluZyBjb2RlISkKLSAqLwotCi0jaWZuZGVmIE5FVF9TTk1QX0NNVV9DT01QQVRfSAotI2RlZmluZSBORVRfU05NUF9DTVVfQ09NUEFUX0gKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gICAgICAgICAgIkMiIHsKLSNlbmRpZgotCi0gICAgLyoKLSAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgICogKgotICAgICAqICogRW51bWVyYXRpb25zIGFuZCBkZWZpbml0aW9ucwotICAgICAqICoKLSAgICAgKiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gCi0gICAgICovCi0jaW5jbHVkZSA8bmV0LXNubXAvZGVmaW5pdGlvbnMuaD4KLSAgICAvKgotICAgICAqIEZyb20gcGFyc2UuaCAKLSAgICAgKi8KLSNkZWZpbmUgQUNDRVNTX1JFQURPTkxZCQlNSUJfQUNDRVNTX1JFQURPTkxZCi0jZGVmaW5lIEFDQ0VTU19SRUFEV1JJVEUJTUlCX0FDQ0VTU19SRUFEV1JJVEUKLSNkZWZpbmUgQUNDRVNTX1dSSVRFT05MWQlNSUJfQUNDRVNTX1dSSVRFT05MWQotI2RlZmluZSBBQ0NFU1NfTk9BQ0NFU1MJCU1JQl9BQ0NFU1NfTk9BQ0NFU1MKLSNkZWZpbmUgQUNDRVNTX05PVElGWQkJTUlCX0FDQ0VTU19OT1RJRlkKLSNkZWZpbmUgQUNDRVNTX0NSRUFURQkJTUlCX0FDQ0VTU19DUkVBVEUKLSNkZWZpbmUgU1RBVFVTX01BTkRBVE9SWQlNSUJfU1RBVFVTX01BTkRBVE9SWQotI2RlZmluZSBTVEFUVVNfT1BUSU9OQUwJCU1JQl9TVEFUVVNfT1BUSU9OQUwKLSNkZWZpbmUgU1RBVFVTX09CU09MRVRFCQlNSUJfU1RBVFVTX09CU09MRVRFCi0jZGVmaW5lIFNUQVRVU19ERVBSRUNBVEVECU1JQl9TVEFUVVNfREVQUkVDQVRFRAotI2RlZmluZSBTVEFUVVNfQ1VSUkVOVAkJTUlCX1NUQVRVU19DVVJSRU5UCi0gICAgLyoKLSAgICAgKiBGcm9tIHNtbnBfaW1wbC5oIAotICAgICAqLwotI2RlZmluZSBJTlRFR0VSCSAgICBBU05fSU5URUdFUgotI2RlZmluZSBTVFJJTkcJICAgIEFTTl9PQ1RFVF9TVFIKLSNkZWZpbmUgT0JKSUQJICAgIEFTTl9PQkpFQ1RfSUQKLSNkZWZpbmUgTlVMTE9CSgkgICAgQVNOX05VTEwKLSNkZWZpbmUgQklUU1RSSU5HICAgQVNOX0JJVF9TVFIgLyogSElTVE9SSUMgLSBkb24ndCB1c2UgKi8KLSNkZWZpbmUgSVBBRERSRVNTICAgQVNOX0lQQUREUkVTUwotI2RlZmluZSBDT1VOVEVSCSAgICBBU05fQ09VTlRFUgotI2RlZmluZSBHQVVHRQkgICAgQVNOX0dBVUdFCi0jZGVmaW5lIFVOU0lHTkVEICAgIEFTTl9VTlNJR05FRAotI2RlZmluZSBUSU1FVElDS1MgICBBU05fVElNRVRJQ0tTCi0jZGVmaW5lIEFTTlRfT1BBUVVFIEFTTl9PUEFRVUUKLSNkZWZpbmUgTlNBUAkgICAgQVNOX05TQVAKLSNkZWZpbmUgQ09VTlRFUjY0ICAgQVNOX0NPVU5URVI2NAotI2RlZmluZSBVSU5URUdFUiAgICBBU05fVUlOVEVHRVIKLSAgICAvKgotICAgICAqIEZyb20gc25tcC5oIAotICAgICAqLwotI2RlZmluZSBHRVRfUkVRX01TRwkgICAgU05NUF9NU0dfR0VUCi0jZGVmaW5lIEdFVE5FWFRfUkVRX01TRwkgICAgU05NUF9NU0dfR0VUTkVYVAotI2RlZmluZSBHRVRfUlNQX01TRwkgICAgU05NUF9NU0dfUkVTUE9OU0UKLSNkZWZpbmUgU0VUX1JFUV9NU0cJICAgIFNOTVBfTVNHX1NFVAotI2RlZmluZSBUUlBfUkVRX01TRwkgICAgU05NUF9NU0dfVFJBUAotI2RlZmluZSBCVUxLX1JFUV9NU0cJICAgIFNOTVBfTVNHX0dFVEJVTEsKLSNkZWZpbmUgSU5GT1JNX1JFUV9NU0cJICAgIFNOTVBfTVNHX0lORk9STQotI2RlZmluZSBUUlAyX1JFUV9NU0cJICAgIFNOTVBfTVNHX1RSQVAyCi0jZGVmaW5lIFJFUE9SVF9SU1BfTVNHCSAgICBTTk1QX01TR19SRVBPUlQKLSAgICAvKgotICAgICAqIHNpbmNlIENNVSBWMS41IAotICAgICAqLwotI2RlZmluZSBTTk1QX1BEVV9HRVQJICAgIFNOTVBfTVNHX0dFVAotI2RlZmluZSBTTk1QX1BEVV9HRVRORVhUICAgIFNOTVBfTVNHX0dFVE5FWFQKLSNkZWZpbmUgU05NUF9QRFVfUkVTUE9OU0UgICBTTk1QX01TR19SRVNQT05TRQotI2RlZmluZSBTTk1QX1BEVV9TRVQgICAgICAgIFNOTVBfTVNHX1NFVAotI2RlZmluZSBTTk1QX1BEVV9HRVRCVUxLICAgIFNOTVBfTVNHX0dFVEJVTEsKLSNkZWZpbmUgU05NUF9QRFVfSU5GT1JNICAgICBTTk1QX01TR19JTkZPUk0KLSNkZWZpbmUgU05NUF9QRFVfVjJUUkFQICAgICBTTk1QX01TR19UUkFQMgotI2RlZmluZSBTTk1QX1BEVV9SRVBPUlQgICAgIFNOTVBfTVNHX1JFUE9SVAotI2RlZmluZSBTTk1QX1RSQVBfQVVUSEVOVElDQVRJT05GQUlMVVJFIFNOTVBfVFJBUF9BVVRIRkFJTAotI2RlZmluZSBTTUlfSU5URUdFUiAgICAgQVNOX0lOVEVHRVIKLSNkZWZpbmUgU01JX1NUUklORyAgICAgIEFTTl9PQ1RFVF9TVFIKLSNkZWZpbmUgU01JX09CSklEICAgICAgIEFTTl9PQkpFQ1RfSUQKLSNkZWZpbmUgU01JX05VTExPQkogICAgIEFTTl9OVUxMCi0jZGVmaW5lIFNNSV9JUEFERFJFU1MgICBBU05fSVBBRERSRVNTCi0jZGVmaW5lIFNNSV9DT1VOVEVSMzIJQVNOX0NPVU5URVIKLSNkZWZpbmUgU01JX0dBVUdFMzIJQVNOX0dBVUdFCi0jZGVmaW5lIFNNSV9VTlNJR05FRDMyICBTTUlfR0FVR0UzMgotI2RlZmluZSBTTUlfVElNRVRJQ0tTICAgQVNOX1RJTUVUSUNLUwotI2RlZmluZSBTTUlfT1BBUVVFICAgICAgQVNOX09QQVFVRQotI2RlZmluZSBTTUlfQ09VTlRFUjY0ICAgQVNOX0NPVU5URVI2NAotICAgIC8qCi0gICAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgICAqICoKLSAgICAgKiAqICAgICBGdW5jdGlvbiBkZWNsYXJhdGlvbnMKLSAgICAgKiAqICAgICBhbmQgZ2xvYmFsIHZhcmlhYmxlcwotICAgICAqICoKLSAgICAgKiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gCi0gICAgICovCi1leHRlcm4gaW50ICAgICAgc25tcF9kdW1wX3BhY2tldDsgICAgICAgLyogZnJvbSBzbm1wX2FwaS5oICovCi1leHRlcm4gaW50ICAgICAgcXVpY2tfcHJpbnQ7ICAgIC8qIGZyb20gc25tcF9hcGkuaCAqLwotCi0jaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4gICAgIC8qIGZvciBzbm1wX3BkdSAmIHNubXBfc2Vzc2lvbiAqLwotCi1pbnQgICAgICAgICAgICAgbWliX1R4dFRvT2lkKGNoYXIgKiwgb2lkICoqLCBzaXplX3QgKik7IC8qIGZyb20gc25tcC5oICovCi1pbnQgICAgICAgICAgICAgbWliX09pZFRvVHh0KG9pZCAqLCBzaXplX3QsIGNoYXIgKiwgc2l6ZV90KTsgICAgLyogZnJvbSBzbm1wLmggKi8KLXVfY2hhciAgICAgICAgICpjbXVfc25tcF9wYXJzZShuZXRzbm1wX3Nlc3Npb24gKiBzZXNzaW9uLCBuZXRzbm1wX3BkdSAqcGR1LCB1X2NoYXIgKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsgICAgICAvKiBmcm9tIHNubXAuaCAqLwotCi0KLQotCi0gICAgICAgIC8qCi0gICAgICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICAgICAgICogKgotICAgICAgICAgKiAqIE1JQi1JSSBkYXRhIHN0cnVjdHVyZXMKLSAgICAgICAgICogKiAgICAoZnJvbSBtaWIuaCkgCi0gICAgICAgICAqICoKLSAgICAgICAgICogKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09IAotICAgICAgICAgKi8KLQotCi1zdHJ1Y3QgbWliX3N5c3RlbSB7Ci0gICAgY2hhciAgICAgICAgICAgIHN5c0Rlc2NyWzMyXTsgICAgICAgLyogdGV4dHVhbCBkZXNjcmlwdGlvbiAqLwotICAgIHVfY2hhciAgICAgICAgICBzeXNPYmplY3RJRFsxNl07ICAgIC8qIE9CSkVDVCBJREVOVElGSUVSIG9mIHN5c3RlbSAqLwotICAgIHVfY2hhciAgICAgICAgICBPYmpJRExlbjsgICAvKiBsZW5ndGggb2Ygc3lzT2JqZWN0SUQgKi8KLSAgICB1X2ludCAgICAgICAgICAgc3lzVXBUaW1lOyAgLyogVXB0aW1lIGluIDEwMC9zIG9mIGEgc2Vjb25kICovCi19OwotCi1zdHJ1Y3QgbWliX2ludGVyZmFjZSB7Ci0gICAgaW50ICAgICAgICAgICAgIGlmTnVtYmVyOyAgIC8qIG51bWJlciBvZiBpbnRlcmZhY2VzICovCi19OwotCi1zdHJ1Y3QgbWliX2lmRW50cnkgewotICAgIGludCAgICAgICAgICAgICBpZkluZGV4OyAgICAvKiBpbmRleCBvZiB0aGlzIGludGVyZmFjZSAgKi8KLSAgICBjaGFyICAgICAgICAgICAgaWZEZXNjclszMl07ICAgICAgICAvKiBlbmdsaXNoIGRlc2NyaXB0aW9uIG9mIGludGVyZmFjZSAqLwotICAgIGludCAgICAgICAgICAgICBpZlR5cGU7ICAgICAvKiBuZXR3b3JrIHR5cGUgb2YgZGV2aWNlICAgKi8KLSAgICBpbnQgICAgICAgICAgICAgaWZNdHU7ICAgICAgLyogc2l6ZSBvZiBsYXJnZXN0IHBhY2tldCBpbiBieXRlcyAgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWZTcGVlZDsgICAgLyogYmFuZHdpZHRoIGluIGJpdHMvc2VjICAgICovCi0gICAgdV9jaGFyICAgICAgICAgIGlmUGh5c0FkZHJlc3NbMTFdOyAgLyogaW50ZXJmYWNlJ3MgYWRkcmVzcyAqLwotICAgIHVfY2hhciAgICAgICAgICBQaHlzQWRkckxlbjsgICAgICAgIC8qIGxlbmd0aCBvZiBwaHlzQWRkciAqLwotICAgIGludCAgICAgICAgICAgICBpZkFkbWluU3RhdHVzOyAgICAgIC8qIGRlc2lyZWQgc3RhdGUgb2YgaW50ZXJmYWNlICovCi0gICAgaW50ICAgICAgICAgICAgIGlmT3BlclN0YXR1czsgICAgICAgLyogY3VycmVudCBvcGVyYXRpb25hbCBzdGF0dXMgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWZMYXN0Q2hhbmdlOyAgICAgICAvKiB2YWx1ZSBvZiBzeXNVcFRpbWUgd2hlbiBjdXJyZW50IHN0YXRlIGVudGVyZWQgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWZJbk9jdGV0czsgLyogbnVtYmVyIG9mIG9jdGV0cyByZWNlaXZlZCBvbiBpbnRlcmZhY2UgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWZJblVjYXN0UGt0czsgICAgICAvKiBudW1iZXIgb2YgdW5pY2FzdCBwYWNrZXRzIGRlbGl2ZXJlZCAqLwotICAgIHVfaW50ICAgICAgICAgICBpZkluTlVjYXN0UGt0czsgICAgIC8qIG51bWJlciBvZiBicm9hZGNhc3RzIG9yIG11bHRpY2FzdHMgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWZJbkRpc2NhcmRzOyAgICAgICAvKiBudW1iZXIgb2YgcGFja2V0cyBkaXNjYXJkZWQgd2l0aCBubyBlcnJvciAqLwotICAgIHVfaW50ICAgICAgICAgICBpZkluRXJyb3JzOyAvKiBudW1iZXIgb2YgcGFja2V0cyBjb250YWluaW5nIGVycm9ycyAqLwotICAgIHVfaW50ICAgICAgICAgICBpZkluVW5rbm93blByb3RvczsgIC8qIG51bWJlciBvZiBwYWNrZXRzIHdpdGggdW5rbm93biBwcm90b2NvbCAqLwotICAgIHVfaW50ICAgICAgICAgICBpZk91dE9jdGV0czsgICAgICAgIC8qIG51bWJlciBvZiBvY3RldHMgdHJhbnNtaXR0ZWQgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWZPdXRVY2FzdFBrdHM7ICAgICAvKiBudW1iZXIgb2YgdW5pY2FzdCBwYWNrZXRzIHNlbnQgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWZPdXROVWNhc3RQa3RzOyAgICAvKiBudW1iZXIgb2YgYnJvYWRjYXN0IG9yIG11bHRpY2FzdCBwa3RzICovCi0gICAgdV9pbnQgICAgICAgICAgIGlmT3V0RGlzY2FyZHM7ICAgICAgLyogbnVtYmVyIG9mIHBhY2tldHMgZGlzY2FyZGVkIHdpdGggbm8gZXJyb3IgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWZPdXRFcnJvcnM7ICAgICAgICAvKiBudW1iZXIgb2YgcGt0cyBkaXNjYXJkZWQgd2l0aCBhbiBlcnJvciAqLwotICAgIHVfaW50ICAgICAgICAgICBpZk91dFFMZW47ICAvKiBudW1iZXIgb2YgcGFja2V0cyBpbiBvdXRwdXQgcXVldWUgKi8KLX07Ci0KLXN0cnVjdCBtaWJfYXRFbnRyeSB7Ci0gICAgaW50ICAgICAgICAgICAgIGF0SWZJbmRleDsgIC8qIGludGVyZmFjZSBvbiB3aGljaCB0aGlzIGVudHJ5IG1hcHMgKi8KLSAgICB1X2NoYXIgICAgICAgICAgYXRQaHlzQWRkcmVzc1sxMV07ICAvKiBwaHlzaWNhbCBhZGRyZXNzIG9mIGRlc3RpbmF0aW9uICovCi0gICAgdV9jaGFyICAgICAgICAgIFBoeXNBZGRyZXNzTGVuOyAgICAgLyogbGVuZ3RoIG9mIGF0UGh5c0FkZHJlc3MgKi8KLSAgICB1X2ludCAgICAgICAgICAgYXROZXRBZGRyZXNzOyAgICAgICAvKiBJUCBhZGRyZXNzIG9mIHBoeXNpY2FsIGFkZHJlc3MgKi8KLX07Ci0KLXN0cnVjdCBtaWJfaXAgewotICAgIGludCAgICAgICAgICAgICBpcEZvcndhcmRpbmc7ICAgICAgIC8qIDEgaWYgZ2F0ZXdheSwgMiBpZiBob3N0ICovCi0gICAgaW50ICAgICAgICAgICAgIGlwRGVmYXVsdFRUTDsgICAgICAgLyogZGVmYXVsdCBUVEwgZm9yIHBrdHMgb3JpZ2luYXRpbmcgaGVyZSAqLwotICAgIHVfaW50ICAgICAgICAgICBpcEluUmVjZWl2ZXM7ICAgICAgIC8qIG5vLiBvZiBJUCBwYWNrZXRzIHJlY2VpdmVkIGZyb20gaW50ZXJmYWNlcyAqLwotICAgIHVfaW50ICAgICAgICAgICBpcEluSGRyRXJyb3JzOyAgICAgIC8qIG51bWJlciBvZiBwa3RzIGRpc2NhcmRlZCBkdWUgdG8gaGVhZGVyIGVycm9ycyAqLwotICAgIHVfaW50ICAgICAgICAgICBpcEluQWRkckVycm9yczsgICAgIC8qIG5vLiBvZiBwa3RzIGRpc2NhcmRlZCBkdWUgdG8gYmFkIGFkZHJlc3MgKi8KLSAgICB1X2ludCAgICAgICAgICAgaXBGb3J3RGF0YWdyYW1zOyAgICAvKiBudW1iZXIgcGYgcGt0cyBmb3J3YXJkZWQgdGhyb3VnaCB0aGlzIGVudGl0eSAqLwotICAgIHVfaW50ICAgICAgICAgICBpcEluVW5rbm93blByb3RvczsgIC8qIG5vLiBvZiBsb2NhbC1hZGRyZXNzZWQgcGt0cyB3L3Vua25vd24gcHJvdG8gKi8KLSAgICB1X2ludCAgICAgICAgICAgaXBJbkRpc2NhcmRzOyAgICAgICAvKiBudW1iZXIgb2YgZXJyb3ItZnJlZSBwYWNrZXRzIGRpc2NhcmRlZCAqLwotICAgIHVfaW50ICAgICAgICAgICBpcEluRGVsaXZlcnM7ICAgICAgIC8qIG51bWJlciBvZiBkYXRhZ3JhbXMgZGVsaXZlcmVkIHRvIHVwcGVyIGxldmVsICovCi0gICAgdV9pbnQgICAgICAgICAgIGlwT3V0UmVxdWVzdHM7ICAgICAgLyogbnVtYmVyIG9mIElQIGRhdGFncmFtcyBvcmlnaW5hdGluZyBsb2NhbGx5ICovCi0gICAgdV9pbnQgICAgICAgICAgIGlwT3V0RGlzY2FyZHM7ICAgICAgLyogbnVtYmVyIG9mIGVycm9yLWZyZWUgb3V0cHV0IElQIHBrdHMgZGlzY2FyZGVkICovCi0gICAgdV9pbnQgICAgICAgICAgIGlwT3V0Tm9Sb3V0ZXM7ICAgICAgLyogbnVtYmVyIG9mIElQIHBrdHMgZGlzY2FyZGVkIGR1ZSB0byBubyByb3V0ZSAqLwotICAgIGludCAgICAgICAgICAgICBpcFJlYXNtVGltZW91dDsgICAgIC8qIHNlY29uZHMgZnJhZ21lbnQgaXMgaGVsZCBhd2FpdGluZyByZWFzc2VtYmx5ICovCi0gICAgdV9pbnQgICAgICAgICAgIGlwUmVhc21SZXFkczsgICAgICAgLyogbm8uIG9mIGZyYWdtZW50cyBuZWVkaW5nIHJlYXNzZW1ibHkgKGhlcmUpICovCi0gICAgdV9pbnQgICAgICAgICAgIGlwUmVhc21PS3M7IC8qIG51bWJlciBvZiBmcmFnbWVudHMgcmVhc3NlbWJsZWQgKi8KLSAgICB1X2ludCAgICAgICAgICAgaXBSZWFzbUZhaWxzOyAgICAgICAvKiBudW1iZXIgb2YgZmFpbHVyZXMgaW4gSVAgcmVhc3NlbWJseSAqLwotICAgIHVfaW50ICAgICAgICAgICBpcEZyYWdPS3M7ICAvKiBudW1iZXIgb2YgZGF0YWdyYW1zIGZyYWdtZW50ZWQgaGVyZSAqLwotICAgIHVfaW50ICAgICAgICAgICBpcEZyYWdGYWlsczsgICAgICAgIC8qIG5vLiBwa3RzIHVuYWJsZSB0byBiZSBmcmFnbWVudGVkIGhlcmUgKi8KLSAgICB1X2ludCAgICAgICAgICAgaXBGcmFnQ3JlYXRlczsgICAgICAvKiBudW1iZXIgb2YgSVAgZnJhZ21lbnRzIGNyZWF0ZWQgaGVyZSAqLwotfTsKLQotc3RydWN0IG1pYl9pcEFkZHJFbnRyeSB7Ci0gICAgdV9pbnQgICAgICAgICAgIGlwQWRFbnRBZGRyOyAgICAgICAgLyogSVAgYWRkcmVzcyBvZiB0aGlzIGVudHJ5ICovCi0gICAgaW50ICAgICAgICAgICAgIGlwQWRFbnRJZkluZGV4OyAgICAgLyogSUYgZm9yIHRoaXMgZW50cnkgKi8KLSAgICB1X2ludCAgICAgICAgICAgaXBBZEVudE5ldE1hc2s7ICAgICAvKiBzdWJuZXQgbWFzayBvZiB0aGlzIGVudHJ5ICovCi0gICAgaW50ICAgICAgICAgICAgIGlwQWRFbnRCY2FzdEFkZHI7ICAgLyogcmVhZCB0aGUgTUlCIGZvciB0aGlzIG9uZSAqLwotICAgIGludCAJICAgIGlwQWRFbnRSZWFzbU1heFNpemU7Ci0JCS8qIG1heCBzaXplIGZvciBkZyByZWFzc2VtYmx5ICAge2lwQWRkckVudHJ5IDV9ICovCi19OwotCi1zdHJ1Y3QgbWliX2lwUm91dGVFbnRyeSB7Ci0gICAgdV9pbnQgICAgICAgICAgIGlwUm91dGVEZXN0OyAgICAgICAgLyogZGVzdGluYXRpb24gSVAgYWRkciBmb3IgdGhpcyByb3V0ZSAqLwotICAgIGludCAgICAgICAgICAgICBpcFJvdXRlSWZJbmRleDsgICAgIC8qIGluZGV4IG9mIGxvY2FsIElGIGZvciB0aGlzIHJvdXRlICovCi0gICAgaW50ICAgICAgICAgICAgIGlwUm91dGVNZXRyaWMxOyAgICAgLyogUHJpbWFyeSByb3V0aW5nIG1ldHJpYyAqLwotICAgIGludCAgICAgICAgICAgICBpcFJvdXRlTWV0cmljMjsgICAgIC8qIEFsdGVybmF0ZSByb3V0aW5nIG1ldHJpYyAqLwotICAgIGludCAgICAgICAgICAgICBpcFJvdXRlTWV0cmljMzsgICAgIC8qIEFsdGVybmF0ZSByb3V0aW5nIG1ldHJpYyAqLwotICAgIGludCAgICAgICAgICAgICBpcFJvdXRlTWV0cmljNDsgICAgIC8qIEFsdGVybmF0ZSByb3V0aW5nIG1ldHJpYyAqLwotICAgIHVfaW50ICAgICAgICAgICBpcFJvdXRlTmV4dEhvcDsgICAgIC8qIElQIGFkZHIgb2YgbmV4dCBob3AgKi8KLSAgICBpbnQgICAgICAgICAgICAgaXBSb3V0ZVR5cGU7ICAgICAgICAvKiBUeXBlIG9mIHRoaXMgcm91dGUgKi8KLSAgICBpbnQgICAgICAgICAgICAgaXBSb3V0ZVByb3RvOyAgICAgICAvKiBIb3cgdGhpcyByb3V0ZSB3YXMgbGVhcm5lZCAqLwotICAgIGludCAgICAgICAgICAgICBpcFJvdXRlQWdlOyAvKiBOby4gb2Ygc2Vjb25kcyBzaW5jZSB1cGRhdGluZyB0aGlzIHJvdXRlICovCi19OwotCi1zdHJ1Y3QgbWliX2ljbXAgewotICAgIHVfaW50ICAgICAgICAgICBpY21wSW5Nc2dzOyAvKiBUb3RhbCBvZiBJQ01QIG1zZ3MgcmVjZWl2ZWQgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWNtcEluRXJyb3JzOyAgICAgICAvKiBUb3RhbCBvZiBJQ01QIG1zZ3MgcmVjZWl2ZWQgd2l0aCBlcnJvcnMgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWNtcEluRGVzdFVucmVhY2hzOwotICAgIHVfaW50ICAgICAgICAgICBpY21wSW5UaW1lRXhjZHM7Ci0gICAgdV9pbnQgICAgICAgICAgIGljbXBJblBhcm1Qcm9iczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcEluU3JjUXVlbmNoczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcEluUmVkaXJlY3RzOwotICAgIHVfaW50ICAgICAgICAgICBpY21wSW5FY2hvczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcEluRWNob1JlcHM7Ci0gICAgdV9pbnQgICAgICAgICAgIGljbXBJblRpbWVzdGFtcHM7Ci0gICAgdV9pbnQgICAgICAgICAgIGljbXBJblRpbWVzdGFtcFJlcHM7Ci0gICAgdV9pbnQgICAgICAgICAgIGljbXBJbkFkZHJNYXNrczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcEluQWRkck1hc2tSZXBzOwotICAgIHVfaW50ICAgICAgICAgICBpY21wT3V0TXNnczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcE91dEVycm9yczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcE91dERlc3RVbnJlYWNoczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcE91dFRpbWVFeGNkczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcE91dFBhcm1Qcm9iczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcE91dFNyY1F1ZW5jaHM7Ci0gICAgdV9pbnQgICAgICAgICAgIGljbXBPdXRSZWRpcmVjdHM7Ci0gICAgdV9pbnQgICAgICAgICAgIGljbXBPdXRFY2hvczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcE91dEVjaG9SZXBzOwotICAgIHVfaW50ICAgICAgICAgICBpY21wT3V0VGltZXN0YW1wczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcE91dFRpbWVzdGFtcFJlcHM7Ci0gICAgdV9pbnQgICAgICAgICAgIGljbXBPdXRBZGRyTWFza3M7Ci0gICAgdV9pbnQgICAgICAgICAgIGljbXBPdXRBZGRyTWFza1JlcHM7Ci19OwotCi1zdHJ1Y3QgbWliX3RjcCB7Ci0gICAgaW50ICAgICAgICAgICAgIHRjcFJ0b0FsZ29yaXRobTsgICAgLyogcmV0cmFuc21pc3Npb24gdGltZW91dCBhbGdvcml0aG0gKi8KLSAgICBpbnQgICAgICAgICAgICAgdGNwUnRvTWluOyAgLyogbWluaW11bSByZXRyYW5zbWlzc2lvbiB0aW1lb3V0IChtUykgKi8KLSAgICBpbnQgICAgICAgICAgICAgdGNwUnRvTWF4OyAgLyogbWF4aW11bSByZXRyYW5zbWlzc2lvbiB0aW1lb3V0IChtUykgKi8KLSAgICBpbnQgICAgICAgICAgICAgdGNwTWF4Q29ubjsgLyogbWF4aW11bSB0Y3AgY29ubmVjdGlvbnMgcG9zc2libGUgKi8KLSAgICB1X2ludCAgICAgICAgICAgdGNwQWN0aXZlT3BlbnM7ICAgICAvKiBudW1iZXIgb2YgU1lOLVNFTlQgLT4gQ0xPU0VEIHRyYW5zaXRpb25zICovCi0gICAgdV9pbnQgICAgICAgICAgIHRjcFBhc3NpdmVPcGVuczsgICAgLyogbnVtYmVyIG9mIFNZTi1SQ1ZEIC0+IExJU1RFTiB0cmFuc2l0aW9ucyAqLwotICAgIHVfaW50ICAgICAgICAgICB0Y3BBdHRlbXB0RmFpbHM7ICAgIC8qKFNZTi1TRU5ULFNZTi1SQ1ZEKS0+Q0xPU0VEIG9yIFNZTi1SQ1ZELT5MSVNURU4gKi8KLSAgICB1X2ludCAgICAgICAgICAgdGNwRXN0YWJSZXNldHM7ICAgICAvKiAoRVNUQUJMSVNIRUQsQ0xPU0UtV0FJVCkgLT4gQ0xPU0VEICovCi0gICAgdV9pbnQgICAgICAgICAgIHRjcEN1cnJFc3RhYjsgICAgICAgLyogbnVtYmVyIGluIEVTVEFCTElTSEVEIG9yIENMT1NFLVdBSVQgc3RhdGUgKi8KLSAgICB1X2ludCAgICAgICAgICAgdGNwSW5TZWdzOyAgLyogbnVtYmVyIG9mIHNlZ21lbnRzIHJlY2VpdmVkICovCi0gICAgdV9pbnQgICAgICAgICAgIHRjcE91dFNlZ3M7IC8qIG51bWJlciBvZiBzZWdtZW50cyBzZW50ICovCi0gICAgdV9pbnQgICAgICAgICAgIHRjcFJldHJhbnNTZWdzOyAgICAgLyogbnVtYmVyIG9mIHJldHJhbnNtaXR0ZWQgc2VnbWVudHMgKi8KLX07Ci0KLXN0cnVjdCBtaWJfdGNwQ29ubkVudHJ5IHsKLSAgICBpbnQgICAgICAgICAgICAgdGNwQ29ublN0YXRlOyAgICAgICAvKiBTdGF0ZSBvZiB0aGlzIGNvbm5lY3Rpb24gKi8KLSAgICB1X2ludCAgICAgICAgICAgdGNwQ29ubkxvY2FsQWRkcmVzczsgICAgICAgIC8qIGxvY2FsIElQIGFkZHJlc3MgZm9yIHRoaXMgY29ubmVjdGlvbiAqLwotICAgIGludCAgICAgICAgICAgICB0Y3BDb25uTG9jYWxQb3J0OyAgIC8qIGxvY2FsIHBvcnQgZm9yIHRoaXMgY29ubmVjdGlvbiAqLwotICAgIHVfaW50ICAgICAgICAgICB0Y3BDb25uUmVtQWRkcmVzczsgIC8qIHJlbW90ZSBJUCBhZGRyZXNzIGZvciB0aGlzIGNvbm5lY3Rpb24gKi8KLSAgICBpbnQgICAgICAgICAgICAgdGNwQ29ublJlbVBvcnQ7ICAgICAvKiByZW1vdGUgcG9ydCBmb3IgdGhpcyBjb25uZWN0aW9uICovCi19OwotCi1zdHJ1Y3QgbWliX3VkcCB7Ci0gICAgdV9pbnQgICAgICAgICAgIHVkcEluRGF0YWdyYW1zOyAgICAgLyogTm8uIG9mIFVEUCBkYXRhZ3JhbXMgZGVsaXZlcmVkIHRvIHVzZXJzICovCi0gICAgdV9pbnQgICAgICAgICAgIHVkcE5vUG9ydHM7IC8qIE5vLiBvZiBVRFAgZGF0YWdyYW1zIHRvIHBvcnQgd2l0aCBubyBsaXN0ZW5lciAqLwotICAgIHVfaW50ICAgICAgICAgICB1ZHBJbkVycm9yczsgICAgICAgIC8qIE5vLiBvZiBVRFAgZGF0YWdyYW1zIHVuYWJsZSB0byBiZSBkZWxpdmVyZWQgKi8KLSAgICB1X2ludCAgICAgICAgICAgdWRwT3V0RGF0YWdyYW1zOyAgICAvKiBOby4gb2YgVURQIGRhdGFncmFtcyBzZW50IGZyb20gdGhpcyBlbnRpdHkgKi8KLX07Ci0KLXN0cnVjdCBtaWJfZWdwIHsKLSAgICB1X2ludCAgICAgICAgICAgZWdwSW5Nc2dzOyAgLyogTm8uIG9mIEVHUCBtc2dzIHJlY2VpdmVkIHdpdGhvdXQgZXJyb3IgKi8KLSAgICB1X2ludCAgICAgICAgICAgZWdwSW5FcnJvcnM7ICAgICAgICAvKiBOby4gb2YgRUdQIG1zZ3MgcmVjZWl2ZWQgd2l0aCBlcnJvciAqLwotICAgIHVfaW50ICAgICAgICAgICBlZ3BPdXRNc2dzOyAvKiBOby4gb2YgRUdQIG1zZ3Mgc2VudCAqLwotICAgIHVfaW50ICAgICAgICAgICBlZ3BPdXRFcnJvcnM7ICAgICAgIC8qIE5vLiBvZiAob3V0Z29pbmcpIEVHUCBtc2dzIGRyb3BwZWQgZHVlIHRvIGVycm9yICovCi19OwotCi1zdHJ1Y3QgbWliX2VncE5laWdoRW50cnkgewotICAgIGludCAgICAgICAgICAgICBlZ3BOZWlnaFN0YXRlOyAgICAgIC8qIGxvY2FsIEVHUCBzdGF0ZSB3aXRoIHRoaXMgZW50cnkncyBuZWlnaGJvciAqLwotICAgIHVfaW50ICAgICAgICAgICBlZ3BOZWlnaEFkZHI7ICAgICAgIC8qIElQIGFkZHJlc3Mgb2YgdGhpcyBlbnRyeSdzIG5laWdoYm9yICovCi19OwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBORVRfU05NUF9DTVVfQ09NUEFUX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAppbmRleCAzMGI4MmYxLi45NjMyODllIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCkBAIC0zNjgsMjAgKzM2OCwyMiBAQAogICAgICAqIGlubGluZSBmdW5jdGlvbnMsIHlvdSBtb3N0IGxpa2VseSBoYXZlIG9wdGltaXphdGlvbnMgdHVybmVkIG9mZi4KICAgICAgKiBFaXRoZXIgdHVybiB0aGVtIGJhY2sgb24sIG9yIGRlZmluZSBORVRTTk1QX05PX0lOTElORQogICAgICAqLwotI2lmbmRlZiBORVRTTk1QX1VTRV9JTkxJTkUgLyogZGVmYXVsdCBpcyB0byBpbmxpbmUgKi8KICAgICAvKgogICAgICAqIGluc2VydCBrIGludG8gYWxsIGNvbnRhaW5lcnMKICAgICAgKi8KKyAgICBORVRTTk1QX0lNUE9SVAogICAgIGludCBDT05UQUlORVJfSU5TRVJUKG5ldHNubXBfY29udGFpbmVyICp4LCBjb25zdCB2b2lkICprKTsKIAogICAgIC8qCiAgICAgICogcmVtb3ZlIGsgZnJvbSBhbGwgY29udGFpbmVycwogICAgICAqLworICAgIE5FVFNOTVBfSU1QT1JUCiAgICAgaW50IENPTlRBSU5FUl9SRU1PVkUobmV0c25tcF9jb250YWluZXIgKngsIGNvbnN0IHZvaWQgKmspOwogCiAgICAgLyoKICAgICAgKiBkdXBsaWNhdGUgY29udGFpbmVyCiAgICAgICovCisgICAgTkVUU05NUF9JTVBPUlQKICAgICBuZXRzbm1wX2NvbnRhaW5lciAqQ09OVEFJTkVSX0RVUChuZXRzbm1wX2NvbnRhaW5lciAqeCwgdm9pZCAqY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGZsYWdzKTsKIApAQCAtMzkwLDYgKzM5Miw3IEBACiAgICAgICogKm9ubHkqIHRoZSBmaXJzdCBjb250YWluZXIsIGNhbGwgdGhlIGZ1bmN0aW9uIGYgZm9yIGVhY2ggaXRlbS4KICAgICAgKiBBZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIGFsbCBjb250YWluZXJzIHNob3VsZCBiZSBlbXB0eS4KICAgICAgKi8KKyAgICBORVRTTk1QX0lNUE9SVAogICAgIHZvaWQgQ09OVEFJTkVSX0NMRUFSKG5ldHNubXBfY29udGFpbmVyICp4LCBuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqZiwKICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmMpOwogCkBAIC0zOTgsMTg2ICs0MDEsMTggQEAKICAgICAgKiAqb25seSogdGhlIGZpcnN0IGNvbnRhaW5lciwgY2FsbCB0aGUgZnJlZV9pdGVtIGZ1bmN0aW9uIGZvciBlYWNoIGl0ZW0uCiAgICAgICogQWZ0ZXIgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCBhbGwgY29udGFpbmVycyBzaG91bGQgYmUgZW1wdHkuCiAgICAgICovCisgICAgTkVUU05NUF9JTVBPUlQKICAgICB2b2lkIENPTlRBSU5FUl9GUkVFX0FMTChuZXRzbm1wX2NvbnRhaW5lciAqeCwgdm9pZCAqYyk7CiAKICAgICAvKgogICAgICAqIGZyZWUgYWxsIGNvbnRhaW5lcnMKICAgICAgKi8KKyAgICBORVRTTk1QX0lNUE9SVAogICAgIGludCBDT05UQUlORVJfRlJFRShuZXRzbm1wX2NvbnRhaW5lciAqeCk7CiAKKyAgICBORVRTTk1QX0lNUE9SVAogICAgIG5ldHNubXBfY29udGFpbmVyICpTVUJDT05UQUlORVJfRklORChuZXRzbm1wX2NvbnRhaW5lciAqeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSk7Ci0jZWxzZQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICogVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBFWEFDVExZIG1hdGNoIHRoZSBmdW5jdGlvbiB2ZXJzaW9uIGluCi0gICAgICogY29udGFpbmVyLmMuIElmIHlvdSBjaGFuZ2Ugb25lLCBjaGFuZ2UgdGhlbSBib3RoLgotICAgICAqLwotICAgIE5FVFNOTVBfU1RBVElDX0lOTElORSAvKiBnY2MgZG9jcyByZWNvbW1lbmQgc3RhdGljIHcvaW5saW5lICovCi0gICAgaW50IENPTlRBSU5FUl9JTlNFUlRfSEVMUEVSKG5ldHNubXBfY29udGFpbmVyKiB4LCBjb25zdCB2b2lkKiBrKQotICAgIHsKLSAgICAgICAgd2hpbGUoeCAmJiB4LT5pbnNlcnRfZmlsdGVyICYmIHgtPmluc2VydF9maWx0ZXIoeCxrKSA9PSAxKQotICAgICAgICAgICAgeCA9IHgtPm5leHQ7Ci0gICAgICAgIGlmKHgpIHsKLSAgICAgICAgICAgIGludCByYyA9IHgtPmluc2VydCh4LGspOwotICAgICAgICAgICAgaWYocmMpCi0gICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0RFQlVHLCJlcnJvciBvbiBzdWJjb250YWluZXIgJyVzJyBpbnNlcnQgKCVkKVxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICB4LT5jb250YWluZXJfbmFtZSA/IHgtPmNvbnRhaW5lcl9uYW1lIDogIiIsIHJjKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHJjID0gQ09OVEFJTkVSX0lOU0VSVF9IRUxQRVIoeC0+bmV4dCwgayk7Ci0gICAgICAgICAgICAgICAgaWYocmMpCi0gICAgICAgICAgICAgICAgICAgIHgtPnJlbW92ZSh4LGspOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHJjOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICogVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBFWEFDVExZIG1hdGNoIHRoZSBmdW5jdGlvbiB2ZXJzaW9uIGluCi0gICAgICogY29udGFpbmVyLmMuIElmIHlvdSBjaGFuZ2Ugb25lLCBjaGFuZ2UgdGhlbSBib3RoLgotICAgICAqLwotICAgIE5FVFNOTVBfU1RBVElDX0lOTElORSAvKiBnY2MgZG9jcyByZWNvbW1lbmQgc3RhdGljIHcvaW5saW5lICovCi0gICAgaW50IENPTlRBSU5FUl9JTlNFUlQobmV0c25tcF9jb250YWluZXIqIHgsIGNvbnN0IHZvaWQqIGspCi0gICAgewotICAgICAgICAvKiogc3RhcnQgYXQgZmlyc3QgY29udGFpbmVyICovCi0gICAgICAgIHdoaWxlKHgtPnByZXYpCi0gICAgICAgICAgICB4ID0geC0+cHJldjsKLSAgICAgICAgcmV0dXJuIENPTlRBSU5FUl9JTlNFUlRfSEVMUEVSKHgsIGspOwotICAgIH0KLQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICogVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBFWEFDVExZIG1hdGNoIHRoZSBmdW5jdGlvbiB2ZXJzaW9uIGluCi0gICAgICogY29udGFpbmVyLmMuIElmIHlvdSBjaGFuZ2Ugb25lLCBjaGFuZ2UgdGhlbSBib3RoLgotICAgICAqLwotICAgIE5FVFNOTVBfU1RBVElDX0lOTElORSAvKiBnY2MgZG9jcyByZWNvbW1lbmQgc3RhdGljIHcvaW5saW5lICovCi0gICAgaW50IENPTlRBSU5FUl9SRU1PVkUobmV0c25tcF9jb250YWluZXIgKngsIGNvbnN0IHZvaWQgKmspCi0gICAgewotICAgICAgICBpbnQgcmMyLCByYyA9IDA7Ci0gICAgICAgIAotICAgICAgICAvKiogc3RhcnQgYXQgbGFzdCBjb250YWluZXIgKi8KLSAgICAgICAgd2hpbGUoeC0+bmV4dCkKLSAgICAgICAgICAgIHggPSB4LT5uZXh0OwotICAgICAgICB3aGlsZSh4KSB7Ci0gICAgICAgICAgICByYzIgPSB4LT5yZW1vdmUoeCxrKTsKLSAgICAgICAgICAgIC8qKiBpZ25vcmUgcmVtb3ZlIGVycm9ycyBpZiB0aGVyZSBpcyBhIGZpbHRlciBpbiBwbGFjZSAqLwotICAgICAgICAgICAgaWYgKChyYzIpICYmIChOVUxMID09IHgtPmluc2VydF9maWx0ZXIpKSB7Ci0gICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3Igb24gc3ViY29udGFpbmVyICclcycgcmVtb3ZlICglZClcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgeC0+Y29udGFpbmVyX25hbWUgPyB4LT5jb250YWluZXJfbmFtZSA6ICIiLCByYzIpOwotICAgICAgICAgICAgICAgIHJjID0gcmMyOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgeCA9IHgtPnByZXY7Ci0gICAgICAgICAgICAKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmM7Ci0gICAgfQotICAgIAotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICogVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBFWEFDVExZIG1hdGNoIHRoZSBmdW5jdGlvbiB2ZXJzaW9uIGluCi0gICAgICogY29udGFpbmVyLmMuIElmIHlvdSBjaGFuZ2Ugb25lLCBjaGFuZ2UgdGhlbSBib3RoLgotICAgICAqLwotICAgIE5FVFNOTVBfU1RBVElDX0lOTElORSAvKiBnY2MgZG9jcyByZWNvbW1lbmQgc3RhdGljIHcvaW5saW5lICovCi0gICAgbmV0c25tcF9jb250YWluZXIgKkNPTlRBSU5FUl9EVVAobmV0c25tcF9jb250YWluZXIgKngsIHZvaWQgKmN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBmbGFncykKLSAgICB7Ci0gICAgICAgIGlmIChOVUxMID09IHgtPmR1cGxpY2F0ZSkgewotICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImNvbnRhaW5lciAnJXMnIGRvZXMgbm90IHN1cHBvcnQgZHVwbGljYXRlXG4iLAotICAgICAgICAgICAgICAgICAgICAgeC0+Y29udGFpbmVyX25hbWUgPyB4LT5jb250YWluZXJfbmFtZSA6ICIiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB4LT5kdXBsaWNhdGUoeCwgY3R4LCBmbGFncyk7Ci0gICAgfQotCi0gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgKiBUaGVzZSBmdW5jdGlvbnMgc2hvdWxkIEVYQUNUTFkgbWF0Y2ggdGhlIGZ1bmN0aW9uIHZlcnNpb24gaW4KLSAgICAgKiBjb250YWluZXIuYy4gSWYgeW91IGNoYW5nZSBvbmUsIGNoYW5nZSB0aGVtIGJvdGguCi0gICAgICovCi0gICAgTkVUU05NUF9TVEFUSUNfSU5MSU5FIC8qIGdjYyBkb2NzIHJlY29tbWVuZCBzdGF0aWMgdy9pbmxpbmUgKi8KLSAgICBpbnQgQ09OVEFJTkVSX0ZSRUUobmV0c25tcF9jb250YWluZXIgKngpCi0gICAgewotCWludCAgcmMyLCByYyA9IDA7Ci0gICAgICAgIAotICAgICAgICAvKiogc3RhcnQgYXQgbGFzdCBjb250YWluZXIgKi8KLSAgICAgICAgd2hpbGUoeC0+bmV4dCkKLSAgICAgICAgICAgIHggPSB4LT5uZXh0OwotICAgICAgICB3aGlsZSh4KSB7Ci0gICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqdG1wOwotICAgICAgICAgICAgY2hhciAqbmFtZTsKLSAgICAgICAgICAgIHRtcCA9IHgtPnByZXY7Ci0gICAgICAgICAgICBuYW1lID0geC0+Y29udGFpbmVyX25hbWU7Ci0gICAgICAgICAgICB4LT5jb250YWluZXJfbmFtZSA9IE5VTEw7Ci0gICAgICAgICAgICByYzIgPSB4LT5jZnJlZSh4KTsKLSAgICAgICAgICAgIGlmIChyYzIpIHsKLSAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBvbiBzdWJjb250YWluZXIgJyVzJyBjZnJlZSAoJWQpXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPyBuYW1lIDogIiIsIHJjMik7Ci0gICAgICAgICAgICAgICAgcmMgPSByYzI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBTTk1QX0ZSRUUobmFtZSk7Ci0gICAgICAgICAgICB4ID0gdG1wOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByYzsKLSAgICB9Ci0KLSAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAqIFRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgRVhBQ1RMWSBtYXRjaCB0aGUgZnVuY3Rpb24gdmVyc2lvbiBpbgotICAgICAqIGNvbnRhaW5lci5jLiBJZiB5b3UgY2hhbmdlIG9uZSwgY2hhbmdlIHRoZW0gYm90aC4KLSAgICAgKi8KLSAgICAvKgotICAgICAqIGNsZWFyIGFsbCBjb250YWluZXJzLiBXaGVuIGNsZWFyaW5nIHRoZSAqZmlyc3QqIGNvbnRhaW5lciwgYW5kCi0gICAgICogKm9ubHkqIHRoZSBmaXJzdCBjb250YWluZXIsIGNhbGwgdGhlIGZ1bmN0aW9uIGYgZm9yIGVhY2ggaXRlbS4KLSAgICAgKiBBZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIGFsbCBjb250YWluZXJzIHNob3VsZCBiZSBlbXB0eS4KLSAgICAgKi8KLSAgICBORVRTTk1QX1NUQVRJQ19JTkxJTkUgLyogZ2NjIGRvY3MgcmVjb21tZW5kIHN0YXRpYyB3L2lubGluZSAqLwotICAgIHZvaWQgQ09OVEFJTkVSX0NMRUFSKG5ldHNubXBfY29udGFpbmVyICp4LCBuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqZiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmMpCi0gICAgewotICAgICAgICAvKiogc3RhcnQgYXQgbGFzdCBjb250YWluZXIgKi8KLSAgICAgICAgd2hpbGUoeC0+bmV4dCkKLSAgICAgICAgICAgIHggPSB4LT5uZXh0OwotICAgICAgICB3aGlsZSh4LT5wcmV2KSB7Ci0gICAgICAgICAgICB4LT5jbGVhcih4LCBOVUxMLCBjKTsKLSAgICAgICAgICAgIHggPSB4LT5wcmV2OwotICAgICAgICB9Ci0gICAgICAgIHgtPmNsZWFyKHgsIGYsIGMpOwotICAgIH0KLQotICAgIC8qCi0gICAgICogY2xlYXIgYWxsIGNvbnRhaW5lcnMuIFdoZW4gY2xlYXJpbmcgdGhlICpmaXJzdCogY29udGFpbmVyLCBhbmQKLSAgICAgKiAqb25seSogdGhlIGZpcnN0IGNvbnRhaW5lciwgY2FsbCB0aGUgZnJlZV9pdGVtIGZ1bmN0aW9uIGZvciBlYWNoIGl0ZW0uCi0gICAgICogQWZ0ZXIgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCBhbGwgY29udGFpbmVycyBzaG91bGQgYmUgZW1wdHkuCi0gICAgICovCi0gICAgTkVUU05NUF9TVEFUSUNfSU5MSU5FIC8qIGdjYyBkb2NzIHJlY29tbWVuZCBzdGF0aWMgdy9pbmxpbmUgKi8KLSAgICB2b2lkIENPTlRBSU5FUl9GUkVFX0FMTChuZXRzbm1wX2NvbnRhaW5lciAqeCwgdm9pZCAqYykKLSAgICB7Ci0gICAgICAgIENPTlRBSU5FUl9DTEVBUih4LCB4LT5mcmVlX2l0ZW0sIGMpOwotICAgIH0KLQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICogVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBFWEFDVExZIG1hdGNoIHRoZSBmdW5jdGlvbiB2ZXJzaW9uIGluCi0gICAgICogY29udGFpbmVyLmMuIElmIHlvdSBjaGFuZ2Ugb25lLCBjaGFuZ2UgdGhlbSBib3RoLgotICAgICAqLwotICAgIC8qCi0gICAgICogRmluZCBhIHN1Yi1jb250YWluZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZQotICAgICAqLwotICAgIE5FVFNOTVBfU1RBVElDX0lOTElORSAvKiBnY2MgZG9jcyByZWNvbW1lbmQgc3RhdGljIHcvaW5saW5lICovCi0gICAgbmV0c25tcF9jb250YWluZXIgKlNVQkNPTlRBSU5FUl9GSU5EKG5ldHNubXBfY29udGFpbmVyICp4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lKQotICAgIHsKLSAgICAgICAgaWYgKChOVUxMID09IHgpIHx8IChOVUxMID09IG5hbWUpKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICAgLyoqIHN0YXJ0IGF0IGZpcnN0IGNvbnRhaW5lciAqLwotICAgICAgICB3aGlsZSh4LT5wcmV2KQotICAgICAgICAgICAgeCA9IHgtPnByZXY7Ci0gICAgICAgIHdoaWxlKHgpIHsKLSAgICAgICAgICAgIGlmICgoTlVMTCAhPSB4LT5jb250YWluZXJfbmFtZSkgJiYKLSAgICAgICAgICAgICAgICAoMCA9PSBzdHJjbXAobmFtZSx4LT5jb250YWluZXJfbmFtZSkpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgeCA9IHgtPm5leHQ7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHg7Ci0gICAgfQotCi0jZW5kaWYKIAogICAgIC8qCiAgICAgICogSU5URVJOQUwgdXRpbGl0eSByb3V0aW5lcyBmb3IgY29udGFpbmVyIGltcGxlbWVudGF0aW9ucwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKaW5kZXggZmNiODdlMC4uM2MzYzUxOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0zOCw3ICszOCw3IEBACiAgICAgICovCiAvKioKICAqIEBkZWYgTkVUU05NUF9EU19MSUJSQVJZX0lECi0gKiBUaGVzZSBkZWZpbml0aW9ucyBjb3JyZXNwb25kIHdpdGggdGhlICJzdG9yaWQiIGFyZ3VtZW50IHRvIHRoZSBBUEkgCisgKiBUaGVzZSBkZWZpbml0aW9ucyBjb3JyZXNwb25kIHdpdGggdGhlICJzdG9yaWQiIGFyZ3VtZW50IHRvIHRoZSBBUEkuCiAgKi8KICNkZWZpbmUgTkVUU05NUF9EU19MSUJSQVJZX0lEICAgICAwCiAjZGVmaW5lIE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQgMQpAQCAtOTMsNiArOTMsOCBAQAogI2RlZmluZSBORVRTTk1QX0RTX0xJQl9OT19ESVNDT1ZFUlkgICAgICAgIDM4IC8qIGRvbid0IHN1cHBvcnQgUkZDNTM0MyBjb250ZXh0RW5naW5lSUQgZGlzY292ZXJ5ICovCiAjZGVmaW5lIE5FVFNOTVBfRFNfTElCX1RTTV9VU0VfUFJFRklYICAgICAgMzkgLyogVFNNJ3Mgc2ltcGxlIHNlY3VyaXR5IG5hbWUgbWFwcGluZyAqLwogI2RlZmluZSBORVRTTk1QX0RTX0xJQl9ET05UX0xPQURfSE9TVF9GSUxFUyA0MCAvKiBkb24ndCByZWFkIGhvc3QuY29uZiBmaWxlcyAqLworI2RlZmluZSBORVRTTk1QX0RTX0xJQl9ETlNTRUNfV0FSTl9PTkxZICAgICA0MSAvKiB0cmVhZCBETlNTRUMgZXJyb3JzIGFzIHdhcm5pbmdzICovCisjZGVmaW5lIE5FVFNOTVBfRFNfTElCX01BWF9CT09MX0lEICAgICAgICAgIDQ4IC8qIG1hdGNoIE5FVFNOTVBfRFNfTUFYX1NVQklEUyAqLwogCiAgICAgLyoKICAgICAgKiBsaWJyYXJ5IGludGVnZXJzIApAQCAtMTEzLDYgKzExNSw5IEBACiAjZGVmaW5lIE5FVFNOTVBfRFNfU1NIRE9NQUlOX0RJUl9QRVJNICAgICAgMTIKICNkZWZpbmUgTkVUU05NUF9EU19TU0hET01BSU5fU09DS19VU0VSICAgICAxMgogI2RlZmluZSBORVRTTk1QX0RTX1NTSERPTUFJTl9TT0NLX0dST1VQICAgIDEzCisjZGVmaW5lIE5FVFNOTVBfRFNfTElCX1RJTUVPVVQgICAgICAgICAgICAgMTQKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfUkVUUklFUyAgICAgICAgICAgICAxNQorI2RlZmluZSBORVRTTk1QX0RTX0xJQl9NQVhfSU5UX0lEICAgICAgICAgIDQ4IC8qIG1hdGNoIE5FVFNOTVBfRFNfTUFYX1NVQklEUyAqLwogICAgIAogICAgIC8qCiAgICAgICogc3BlY2lhbCBtZWFuaW5ncyBmb3IgdGhlIGRlZmF1bHQgU05NUCB2ZXJzaW9uIHNsb3QgKE5FVFNOTVBfRFNfTElCX1NOTVBWRVJTSU9OKSAKQEAgLTE1OSw2ICsxNjQsMTIgQEAKICNkZWZpbmUgTkVUU05NUF9EU19MSUJfSE9TVE5BTUUgICAgICAgICAgMjcKICNkZWZpbmUgTkVUU05NUF9EU19MSUJfWDUwOV9DUkxfRklMRSAgICAgMjgKICNkZWZpbmUgTkVUU05NUF9EU19MSUJfVExTX0FMR09SSVRNUyAgICAgMjkKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfVExTX0xPQ0FMX0NFUlQgICAgMzAKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfVExTX1BFRVJfQ0VSVCAgICAgMzEKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfU1NIX1VTRVJOQU1FICAgICAgMzIKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfU1NIX1BVQktFWSAgICAgICAgMzMKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfU1NIX1BSSVZLRVkgICAgICAgMzQKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfTUFYX1NUUl9JRCAgICAgICAgNDggLyogbWF0Y2ggTkVUU05NUF9EU19NQVhfU1VCSURTICovCiAKICAgICAvKgogICAgICAqIGVuZCBzdG9yYWdlIGRlZmluaXRpb25zIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oCmluZGV4IDUwNzc3ODAuLmFmM2ZhMDIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgKQEAgLTEzOSw3ICsxMzksNyBAQAogICogQHNlZSBTZWUgYWxzbyBzZWxlY3QoMikgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgKi8KIE5FVFNOTVBfSU1QT1JUCi1pbnQgICAgbmV0X3NubXBfbGFyZ2VfZmRfc2V0X3NlbGVjdChpbnQgbnVtZmRzLCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqcmVhZGZkcywKK2ludCAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9zZWxlY3QoaW50IG51bWZkcywgbmV0c25tcF9sYXJnZV9mZF9zZXQgKnJlYWRmZHMsCiAJCQkgICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgKndyaXRlZmRzLAogCQkJICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpleGNlcHRmZHMsCiAJCQkgICAgc3RydWN0IHRpbWV2YWwgKnRpbWVvdXQpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xpYnNubXAuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9saWJzbm1wLmgKaW5kZXggZWFmMmJiZi4uNmEwNzMwMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xpYnNubXAuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGlic25tcC5oCkBAIC03Niw4ICs3Niw2IEBACiAKICNpZmRlZiBVQ0RfU05NUF9MSUJSQVJZCiAKLSNkZWZpbmUgc25tcF9wYXJzZSBjbXVfc25tcF9wYXJzZQotCiAjaW5jbHVkZSA8dWNkLXNubXAvYXNuMS5oPgogI2luY2x1ZGUgPHVjZC1zbm1wL3NubXBfYXBpLmg+CiAjaW5jbHVkZSA8dWNkLXNubXAvc25tcF9pbXBsLmg+CkBAIC0xMzUsNyArMTMzLDkgQEAKICNkZWZpbmUgU05NUF9NU0dfR0VUIEdFVF9SRVFfTVNHCiAjZGVmaW5lIFNOTVBfTVNHX0dFVE5FWFQgR0VUTkVYVF9SRVFfTVNHCiAjZGVmaW5lIFNOTVBfTVNHX1JFU1BPTlNFIEdFVF9SU1BfTVNHCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogI2RlZmluZSBTTk1QX01TR19TRVQgU0VUX1JFUV9NU0cKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAjZGVmaW5lIFNOTVBfTVNHX1RSQVAgVFJQX1JFUV9NU0cKICNkZWZpbmUgU05NUF9NU0dfR0VUQlVMSyAgICAoQVNOX0NPTlRFWFQgfCBBU05fQ09OU1RSVUNUT1IgfCAweDUpCiAjZGVmaW5lIFNOTVBfTVNHX0lORk9STSAgICAgKEFTTl9DT05URVhUIHwgQVNOX0NPTlNUUlVDVE9SIHwgMHg2KQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAppbmRleCA4NzI2Y2M3Li5jZTQ2YWI5IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaApAQCAtMzIsMTAgKzMyLDE5IEBACiBTT0ZUV0FSRS4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotI2RlZmluZSBNQVhMQUJFTCAgICAgICAgNjQgICAgICAvKiBtYXhpbXVtIGNoYXJhY3RlcnMgaW4gYSBsYWJlbCAqLworI2RlZmluZSBORVRTTk1QX01BWExBQkVMIDY0ICAgICAgLyogbWF4aW11bSBjaGFyYWN0ZXJzIGluIGEgbGFiZWwgKi8KICNkZWZpbmUgTUFYVE9LRU4gICAgICAgIDEyOCAgICAgLyogbWF4aW11bSBjaGFyYWN0ZXJzIGluIGEgdG9rZW4gKi8KICNkZWZpbmUgTUFYUVVPVEVTVFIgICAgIDQwOTYgICAgLyogbWF4aW11bSBjaGFyYWN0ZXJzIGluIGEgcXVvdGVkIHN0cmluZyAqLwogCisvKgorICogTUFYTEFCRUwgYXBwZWFycyB0byBiZSB1bnVzZWQgaW4gY29kZSwgYW5kIGNvbmZsaWN0cyB3aXRoCisgKiA8YXJwYS9uYW1lc2VyLmg+LiBPbmx5IGRlZmluZSBpdCBpZiByZXF1ZXN0ZWQuIFRoaXMgd2lsbAorICogY2F1c2UgcHJvYmxlbXMgaWYgbG9jYWwgRE5TU0VDIHZhbGlkYXRpb24gaXMgYWxzbyBlbmFibGVkLgorICovCisjaWZkZWYgVUNEX0NPTVBBVElCTEUKKyNkZWZpbmUgTUFYTEFCRUwgICAgICAgIE5FVFNOTVBfTUFYTEFCRUwKKyNlbmRpZgorCiAgICAgc3RydWN0IHZhcmlhYmxlX2xpc3Q7CiAKICAgICAvKgpAQCAtMTA1LDYgKzExNCw3IEBACiAgICAgICAgIGNoYXIgICAgICAgICAgICpyZWZlcmVuY2U7ICAgIC8qIHJlZmVyZW5jZXMgKGEgcXVvdGVkIHN0cmluZykgKi8KICAgICAgICAgaW50ICAgICAgICAgICAgIHJlcG9ydGVkOyAgICAgICAvKiAxPXJlcG9ydCBzdGFydGVkIGluIHByaW50X3N1YnRyZWUuLi4gKi8KICAgICAgICAgY2hhciAgICAgICAgICAgKmRlZmF1bHRWYWx1ZTsKKyAgICAgICBjaGFyCSAgICAgICAqcGFyc2VFcnJvclN0cmluZzsgLyogQ29udGFpbnMgdGhlIGVycm9yIHN0cmluZyBpZiB0aGVyZSBhcmUgZXJyb3JzIGluIHBhcnNpbmcgTUlCcyAqLwogICAgIH07CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKaW5kZXggNWRhZjE2Ni4uZjU5NzhjNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCkBAIC0xMTgsNyArMTE4LDkgQEAKICNkZWZpbmUgU05NUF9NU0dfR0VUICAgICAgICAoQVNOX0NPTlRFWFQgfCBBU05fQ09OU1RSVUNUT1IgfCAweDApIC8qIGEwPTE2MCAqLwogI2RlZmluZSBTTk1QX01TR19HRVRORVhUICAgIChBU05fQ09OVEVYVCB8IEFTTl9DT05TVFJVQ1RPUiB8IDB4MSkgLyogYTE9MTYxICovCiAjZGVmaW5lIFNOTVBfTVNHX1JFU1BPTlNFICAgKEFTTl9DT05URVhUIHwgQVNOX0NPTlNUUlVDVE9SIHwgMHgyKSAvKiBhMj0xNjIgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAjZGVmaW5lIFNOTVBfTVNHX1NFVCAgICAgICAgKEFTTl9DT05URVhUIHwgQVNOX0NPTlNUUlVDVE9SIHwgMHgzKSAvKiBhMz0xNjMgKi8KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICAvKgogICAgICAqIFBEVSB0eXBlcyBpbiBTTk1QdjEgYW5kIFNOTVBzZWMgCkBAIC0xMzcsNiArMTM5LDcgQEAKICAgICAgKi8KICNkZWZpbmUgU05NUF9NU0dfUkVQT1JUICAgICAoQVNOX0NPTlRFWFQgfCBBU05fQ09OU1RSVUNUT1IgfCAweDgpIC8qIGE4PTE2OCAqLwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIC8qCiAgICAgICogaW50ZXJuYWwgbW9kZXMgdGhhdCBzaG91bGQgbmV2ZXIgYmUgdXNlZCBieSB0aGUgcHJvdG9jb2wgZm9yIHRoZQogICAgICAqIHBkdSB0eXBlLgpAQCAtMTYyLDYgKzE2NSw3IEBACiAjZGVmaW5lIFNOTVBfTVNHX0lOVEVSTkFMX1VORE9fQ09NTUlUICAgICAgICAgICAyNAogI2RlZmluZSBTTk1QX01TR19JTlRFUk5BTF9JUlJFVkVSU0lCTEVfQ09NTUlUICAgMjUKICNkZWZpbmUgU05NUF9NU0dfSU5URVJOQUxfVU5ET19DTEVBTlVQICAgICAgICAgIDI2CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgLyoKICAgICAgKiBtb2RlcyA+IDEyOCBmb3Igbm9uIHNldHMuCkBAIC0xNzUsOSArMTc5LDE0IEBACiAgICAgLyoKICAgICAgKiB0ZXN0IGZvciBtZW1iZXIgb2YgQ29uZmlybWVkIENsYXNzIGkuZS4sIHJlcG9ydGFibGUgCiAgICAgICovCisjaWZkZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCisjZGVmaW5lIFNOTVBfQ01EX0NPTkZJUk1FRChjKSAoYyA9PSBTTk1QX01TR19JTkZPUk0gfHwgYyA9PSBTTk1QX01TR19HRVRCVUxLIHx8XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPT0gU05NUF9NU0dfR0VUTkVYVCB8fCBjID09IFNOTVBfTVNHX0dFVCApCisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAjZGVmaW5lIFNOTVBfQ01EX0NPTkZJUk1FRChjKSAoYyA9PSBTTk1QX01TR19JTkZPUk0gfHwgYyA9PSBTTk1QX01TR19HRVRCVUxLIHx8XAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPT0gU05NUF9NU0dfR0VUTkVYVCB8fCBjID09IFNOTVBfTVNHX0dFVCB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9PSBTTk1QX01TR19TRVQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9PSBTTk1QX01TR19TRVQgKQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIC8qCiAgICAgICogRXhjZXB0aW9uIHZhbHVlcyBmb3IgU05NUHYycCwgU05NUHYyYywgU05NUHYydSwgU05NUHYyKiwgYW5kIFNOTVB2MyAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVExTQmFzZURvbWFpbi5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUTFNCYXNlRG9tYWluLmgKaW5kZXggZWM3N2E3My4uYmMyMWNiNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUTFNCYXNlRG9tYWluLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUTFNCYXNlRG9tYWluLmgKQEAgLTQyLDEzICs0MiwxMiBAQAogICAgICAgIEJJTyAgICAgICAgICAgICAgICAgICAgICAgKmFjY2VwdGVkX2JpbzsKICAgICAgICBjaGFyICAgICAgICAgICAgICAgICAgICAgICpzZWN1cml0eU5hbWU7CiAgICAgICAgY2hhciAgICAgICAgICAgICAgICAgICAgICAqYWRkcl9zdHJpbmc7Ci0gICAgICAgc3RydWN0IHNvY2thZGRyX2luICAgICAgICAgYWRkcjsKKyAgICAgICBuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyICphZGRyOwogICAgICAgIGNoYXIgICAgICAgICAgICAgICAgICAgICAgKm91cl9pZGVudGl0eTsKICAgICAgICBjaGFyICAgICAgICAgICAgICAgICAgICAgICp0aGVpcl9pZGVudGl0eTsKICAgICAgICBjaGFyICAgICAgICAgICAgICAgICAgICAgICp0aGVpcl9maW5nZXJwcmludDsKICAgICAgICBjaGFyICAgICAgICAgICAgICAgICAgICAgICp0aGVpcl9ob3N0bmFtZTsKICAgICAgICBjaGFyICAgICAgICAgICAgICAgICAgICAgICp0cnVzdF9jZXJ0OwotICAgICAgIG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIgKnJlbW90ZV9hZGRyOwogICAgIH0gX25ldHNubXBUTFNCYXNlRGF0YTsKIAogI2RlZmluZSBWUkZZX1BBUkVOVF9XQVNfT0sgMQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAppbmRleCA5N2IyOTFhLi4zNWU3NjI4IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaApAQCAtOSw2ICs5LDkgQEAKIGV4dGVybiAgICAgICAgICAiQyIgewogI2VuZGlmCiAKKy8qCisgKiBEZWZpbml0aW9ucworICovCiAjaWZkZWYgIE1TR19ET05UV0FJVAogI2RlZmluZSBORVRTTk1QX0RPTlRXQUlUIE1TR19ET05UV0FJVAogI2Vsc2UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAppbmRleCAwOWUxMjFkLi42ZjdmMmMyIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCkBAIC0yMSwxNSArMjEsNiBAQAogI2VuZGlmCiAKIC8qCi0gKiBEZWZpbml0aW9ucwotICovCi0jaWZkZWYgIE1TR19ET05UV0FJVAotI2RlZmluZSBORVRTTk1QX0RPTlRXQUlUIE1TR19ET05UV0FJVAotI2Vsc2UKLSNkZWZpbmUgTkVUU05NUF9ET05UV0FJVCAwCi0jZW5kaWYKLQotLyoKICAqIFByb3RvdHlwZXMKICAqLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCmluZGV4IDE2ZmQ4MTkuLjgzZWJhMmMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCkBAIC0yMiw4ICsyMiw4IEBACiAjZGVmaW5lIFRSQU5TUE9SVF9ET01BSU5fVURQX0lQVjYJMSwzLDYsMSwyLDEsMTAwLDEsMgogTkVUU05NUF9JTVBPUlQgb2lkICAgICAgbmV0c25tcF9VRFBJUHY2RG9tYWluW107CiAKLW5ldHNubXBfdHJhbnNwb3J0ICpzbm1wX3VkcDZfdHJhbnNwb3J0KHN0cnVjdCBzb2NrYWRkcl9pbjYgKmFkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbG9jYWwpOworbmV0c25tcF90cmFuc3BvcnQgKm5ldHNubXBfdWRwNl90cmFuc3BvcnQoc3RydWN0IHNvY2thZGRyX2luNiAqYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsb2NhbCk7CiAKIAogLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCmluZGV4IDExNjdlMmMuLmQxYmNiZmEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaApAQCAtMTUsMTEgKzE1LDE0IEBACiAjZGVmaW5lIFNBX0ZJUkVEIDB4MTAgICAgICAgICAgLyogQmVpbmcgcHJvY2Vzc2VkIGluIHJ1bl9hbGFybXMgKi8KIAogICAgIHN0cnVjdCBzbm1wX2FsYXJtIHsKKyAgICAgICAgLyoqIEFsYXJtIGludGVydmFsLiBaZXJvIGlmIHNpbmdsZS1zaG90LiAqLwogICAgICAgICBzdHJ1Y3QgdGltZXZhbCAgdDsKICAgICAgICAgdW5zaWduZWQgaW50ICAgIGZsYWdzOwogICAgICAgICB1bnNpZ25lZCBpbnQgICAgY2xpZW50cmVnOwotICAgICAgICBzdHJ1Y3QgdGltZXZhbCAgdF9sYXN0OwotICAgICAgICBzdHJ1Y3QgdGltZXZhbCAgdF9uZXh0OworICAgICAgICAvKiogTGFzdCB0aW1lIHRoZSBhbGFybSBmaXJlZCBbbW9ub3RvbmljIGNsb2NrXS4gKi8KKyAgICAgICAgc3RydWN0IHRpbWV2YWwgIHRfbGFzdE07CisgICAgICAgIC8qKiBOZXh0IHRpbWUgdGhlIGFsYXJtIHdpbGwgZmlyZSBbbW9ub3RvbmljIGNsb2NrXS4gKi8KKyAgICAgICAgc3RydWN0IHRpbWV2YWwgIHRfbmV4dE07CiAgICAgICAgIHZvaWQgICAgICAgICAgICpjbGllbnRhcmc7CiAgICAgICAgIFNOTVBBbGFybUNhbGxiYWNrICp0aGVjYWxsYmFjazsKICAgICAgICAgc3RydWN0IHNubXBfYWxhcm0gKm5leHQ7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCmluZGV4IGRlZjAyYjkuLjZmNjU4ZDUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCkBAIC0zMCw2ICszMCw4IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvcGR1X2FwaS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL3Nlc3Npb25fYXBpLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgorCiAjaWZuZGVmIERPTlRfU0hBUkVfRVJST1JfV0lUSF9PVEhFUl9USFJFQURTCiAjZGVmaW5lIFNFVF9TTk1QX0VSUk9SKHgpIHNubXBfZXJybm89KHgpCiAjZWxzZQpAQCAtNzYsOCArNzgsOCBAQAogICAgIHZvaWQgICAgICAgICAgICpjYl9kYXRhOyAgICAgICAgLyogdXNlciBjYWxsYmFjayBkYXRhIHBlciByZXF1ZXN0IChOVUxMIGlmIHVudXNlZCkgKi8KICAgICBpbnQgICAgICAgICAgICAgcmV0cmllczsgICAgICAgIC8qIE51bWJlciBvZiByZXRyaWVzICovCiAgICAgdV9sb25nICAgICAgICAgIHRpbWVvdXQ7ICAgICAgICAvKiBsZW5ndGggdG8gd2FpdCBmb3IgdGltZW91dCAqLwotICAgIHN0cnVjdCB0aW1ldmFsICB0aW1lOyAgIC8qIFRpbWUgdGhpcyByZXF1ZXN0IHdhcyBtYWRlICovCi0gICAgc3RydWN0IHRpbWV2YWwgIGV4cGlyZTsgLyogdGltZSB0aGlzIHJlcXVlc3QgaXMgZHVlIHRvIGV4cGlyZSAqLworICAgIHN0cnVjdCB0aW1ldmFsICB0aW1lTTsgICAvKiBUaW1lIHRoaXMgcmVxdWVzdCB3YXMgbWFkZSBbbW9ub3RvbmljIGNsb2NrXSAqLworICAgIHN0cnVjdCB0aW1ldmFsICBleHBpcmVNOyAvKiBUaW1lIHRoaXMgcmVxdWVzdCBpcyBkdWUgdG8gZXhwaXJlIFttb25vdG9uaWMgY2xvY2tdLiAqLwogICAgIHN0cnVjdCBzbm1wX3Nlc3Npb24gKnNlc3Npb247CiAgICAgbmV0c25tcF9wZHUgICAgKnBkdTsgICAgLyogVGhlIHBkdSBmb3IgdGhpcyByZXF1ZXN0CiAJCQkgICAgICogKHNhdmVkIHNvIGl0IGNhbiBiZSByZXRyYW5zbWl0dGVkICovCkBAIC0zOTgsMTQgKzQwMCwyNCBAQAogICAgIE5FVFNOTVBfSU1QT1JUCiAgICAgb2lkICAgICAgICAgICAgKnNubXBfZHVwbGljYXRlX29iamlkKGNvbnN0IG9pZCAqIG9ialRvQ29weSwgc2l6ZV90KTsKICAgICBORVRTTk1QX0lNUE9SVAorCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBVElTVElDUwogICAgIHVfaW50ICAgICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoaW50IHdoaWNoKTsKICAgICBORVRTTk1QX0lNUE9SVAogICAgIHVfaW50ICAgICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWNfYnkoaW50IHdoaWNoLCBpbnQgY291bnQpOwogICAgIE5FVFNOTVBfSU1QT1JUCiAgICAgdV9pbnQgICAgICAgICAgIHNubXBfZ2V0X3N0YXRpc3RpYyhpbnQgd2hpY2gpOwogICAgIHZvaWQgICAgICAgICAgICBzbm1wX2luaXRfc3RhdGlzdGljcyh2b2lkKTsKKyNlbHNlIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBVElTVElDUyAqLworCisvKiBhbGxvdyBjb2RlIHRvIGNvbnRpbnVlIHJlZmVyZW5jaW5nIEFQSSBldmVuIGlmIHN0YXRpc3RpY3MgYXJlIHJlbW92ZWQgKi8KKyNkZWZpbmUgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFgpCisjZGVmaW5lIHNubXBfaW5jcmVtZW50X3N0YXRpc3RpY19ieShYLFkpCisjZGVmaW5lIHNubXBfaW5pdF9zdGF0aXN0aWNzKCkKKworI2VuZGlmCisKICAgICBpbnQgICAgICAgICAgICAgY3JlYXRlX3VzZXJfZnJvbV9zZXNzaW9uKG5ldHNubXBfc2Vzc2lvbiAqIHNlc3Npb24pOwotICAgIGludCBzbm1wX2dldF9mZF9mb3Jfc2Vzc2lvbihzdHJ1Y3Qgc25tcF9zZXNzaW9uICpzZXNzcCk7CiAgICAgaW50IHNubXB2M19wcm9iZV9jb250ZXh0RW5naW5lSURfcmZjNTM0Myh2b2lkICpzbHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb24pOwogCkBAIC02ODUsNiArNjk3LDE2IEBACiAvKiogYmFja3dhcmRzIGNvbXBhdGFiaWxpdHkgKi8KICNkZWZpbmUgTUFYX1NUQVRTIE5FVFNOTVBfU1RBVF9NQVhfU1RBVFMKIAorICAgIC8qCisgICAgICogSW50ZXJuYWw6IFRoZSBsaXN0IG9mIGFjdGl2ZS9vcGVuIHNlc3Npb25zLgorICAgICAqLworICAgIHN0cnVjdCBzZXNzaW9uX2xpc3QgeworICAgICAgIHN0cnVjdCBzZXNzaW9uX2xpc3QgKm5leHQ7CisgICAgICAgbmV0c25tcF9zZXNzaW9uICpzZXNzaW9uOworICAgICAgIG5ldHNubXBfdHJhbnNwb3J0ICp0cmFuc3BvcnQ7CisgICAgICAgc3RydWN0IHNubXBfaW50ZXJuYWxfc2Vzc2lvbiAqaW50ZXJuYWw7CisgICAgfTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKaW5kZXggYzAyMzI1My4uZWE1NGU3ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKQEAgLTEwMCw4ICsxMDAsMTAgQEAKIGludCBuZXRzbm1wX3F1ZXJ5X2dldG5leHQoIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqLCBuZXRzbm1wX3Nlc3Npb24gKik7CiBORVRTTk1QX0lNUE9SVAogaW50IG5ldHNubXBfcXVlcnlfd2FsayggICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICosIG5ldHNubXBfc2Vzc2lvbiAqKTsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBORVRTTk1QX0lNUE9SVAogaW50IG5ldHNubXBfcXVlcnlfc2V0KCAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICosIG5ldHNubXBfc2Vzc2lvbiAqKTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIC8qKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAppbmRleCBlNDY4MzM1Li4xYWQ2M2UwIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCkBAIC0xLDggKzEsNSBAQAogI2lmbmRlZiBTTk1QX1BBUlNFX0FSR1NfSAogI2RlZmluZSBTTk1QX1BBUlNFX0FSR1NfSAotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgogCiAvKioKICAqIEBmaWxlIHNubXBfcGFyc2VfYXJncy5oCkBAIC0xMSw2ICs4LDEwIEBACiAgKiBsaW5lIGFyZ3VtZW50cwogICovCiAKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwogLyoqIERvbid0IGVuYWJsZSBhbnkgbG9nZ2luZyBldmVuIGlmIHRoZXJlIGlzIG5vIC1MIGFyZ3VtZW50ICovCiAjZGVmaW5lIE5FVFNOTVBfUEFSU0VfQVJHU19OT0xPR0dJTkcgICAgMHgwMDAxCiAvKiogRG9uJ3QgemVybyBvdXQgc2Vuc2l0aXZlIGFyZ3VtZW50cyBhcyB0aGV5IGFyZSBub3Qgb24gdGhlIGNvbW1hbmQgbGluZQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAppbmRleCA1YmFjYWQ3Li5hYWJiN2VkIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaApAQCAtOTEsOCArOTEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3Nlc3Npb24gKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9wZHUgKm9yaWdwZHUpOwotdHlwZWRlZiBpbnQgICAgIChTZWNtb2REaXNjb3ZlcnlNZXRob2QpICh2b2lkICpzbHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc2lvbik7Cit0eXBlZGVmIGludCAgICAgKFNlY21vZERpc2NvdmVyeU1ldGhvZCkgKHZvaWQgKnNscCwgbmV0c25tcF9zZXNzaW9uICpzZXNzaW9uKTsKK3R5cGVkZWYgaW50ICAgICAoU2VjbW9kUG9zdERpc2NvdmVyeSkgKHZvaWQgKnNscCwgbmV0c25tcF9zZXNzaW9uICpzZXNzaW9uKTsKIAogdHlwZWRlZiBpbnQgICAgIChTZWNtb2RTZXNzaW9uU2V0dXApIChuZXRzbm1wX3Nlc3Npb24gKmluX3Nlc3Npb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2Vzc2lvbiAqb3V0X3Nlc3Npb24pOwpAQCAtMTM2LDYgKzEzNiw3IEBACiAgICAgKiBkZWZhdWx0IGVuZ2luZUlEIGRpc2NvdmVyeSBtZWNoYW5pc20KICAgICAqLwogICAgU2VjbW9kRGlzY292ZXJ5TWV0aG9kICpwcm9iZV9lbmdpbmVpZDsKKyAgIFNlY21vZFBvc3REaXNjb3ZlcnkgICAqcG9zdF9wcm9iZV9lbmdpbmVpZDsKIH07CiAKIApAQCAtMTY0LDYgKzE2NSw4IEBACiAgKi8KIGludCAgICAgICAgICAgICB1bnJlZ2lzdGVyX3NlY19tb2QoaW50KTsgICAgICAgIC8qIHJlZ2lzdGVyIGEgc2VjdXJpdHkgc2VydmljZSAqLwogdm9pZCAgICAgICAgICAgIGluaXRfc2VjbW9kKHZvaWQpOworTkVUU05NUF9JTVBPUlQKK3ZvaWQgICAgICAgICAgICBzaHV0ZG93bl9zZWNtb2Qodm9pZCk7CiAKIC8qCiAgKiBjbGVhcnMgdGhlIHNlY19tb2QgbGlzdApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAppbmRleCBkODlmOWMwLi40MTYyODk3IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaApAQCAtMSwxMiArMSwzMiBAQAogI2lmbmRlZiBfU05NUF9UUkFOU1BPUlRfSAogI2RlZmluZSBfU05NUF9UUkFOU1BPUlRfSAogCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisKKyNpZiBIQVZFX1NZU19TT0NLRVRfSAorI2lmZGVmIHNvbGFyaXMyCisjZGVmaW5lIF9YUEc0XzIKKyNlbmRpZgorCisjaWYgZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikgfHwgZGVmaW5lZChhaXg3KQorI2RlZmluZSBfTElOVVhfU09VUkNFX0NPTVBBVAorI2VuZGlmCisKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisKKyNpZmRlZiBzb2xhcmlzMgorIyBpZm5kZWYgQ01TR19TUEFDRQorIyAgZGVmaW5lIENNU0dfU1BBQ0UobCkgXAorICAgICAgICAgICAgKCh1bnNpZ25lZCBpbnQpX0NNU0dfSERSX0FMSUdOKHNpemVvZiAoc3RydWN0IGNtc2doZHIpICsgKGwpKSkKKyMgIGRlZmluZSBDTVNHX0xFTihsKSAgIChfQ01TR19IRFJfQUxJR04oc2l6ZW9mKHN0cnVjdCBjbXNnaGRyKSkgKyAobCkpCisjIGVuZGlmCisjZW5kaWYKKyNlbmRpZiAvKiBIQVZFX1NZU19TT0NLRVRfSCAqLworCiAjaWZkZWYgSEFWRV9ORVRJTkVUX0lOX0gKICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotCiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9hc24xLmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpAQCAtNTEsMTQgKzcxLDIyIEBACiAvKiBub3RlOiBWQUNNIG9ubHkgYWxsb3dzIDw9IDMyIHNvIHRoaXMgaXMgb3ZlcmtpbGwgdGlsbCBhbm90aGVyIEFDTSBjb21lcyAqLwogI2RlZmluZSBORVRTTk1QX1RNX01BWF9TRUNOQU1FIDI1NgogCit0eXBlZGVmIHVuaW9uIG5ldHNubXBfc29ja2FkZHJfc3RvcmFnZV91IHsKKyAgICBzdHJ1Y3Qgc29ja2FkZHIgICAgIHNhOworICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAgc2luOworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW42IHNpbjY7CisjZW5kaWYKK30gbmV0c25tcF9zb2NrYWRkcl9zdG9yYWdlOworCiB0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX2FkZHJfcGFpcl9zIHsKLSAgIHN0cnVjdCBzb2NrYWRkcl9pbiByZW1vdGVfYWRkcjsKLSAgIHN0cnVjdCBzb2NrYWRkcl9pbiBsb2NhbF9hZGRyOworICAgbmV0c25tcF9zb2NrYWRkcl9zdG9yYWdlIHJlbW90ZV9hZGRyOworICAgbmV0c25tcF9zb2NrYWRkcl9zdG9yYWdlIGxvY2FsX2FkZHI7CiB9IG5ldHNubXBfYWRkcl9wYWlyOwogCiB0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyX3MgewotICAgc3RydWN0IHNvY2thZGRyX2luIHJlbW90ZV9hZGRyOwotICAgc3RydWN0IHNvY2thZGRyX2luIGxvY2FsX2FkZHI7CisgICBuZXRzbm1wX3NvY2thZGRyX3N0b3JhZ2UgcmVtb3RlX2FkZHI7CisgICBuZXRzbm1wX3NvY2thZGRyX3N0b3JhZ2UgbG9jYWxfYWRkcjsKICAgICBpbnQgaWZfaW5kZXg7CiB9IG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXI7CiAKQEAgLTExNSw4ICsxNDMsMTMgQEAKIAogICAgIHNpemVfdCAgICAgICAgICBtc2dNYXhTaXplOwogCisjaWZkZWYgRk9SX1NUQU5EQVJEU19DT01QTElBTkNFX09SX0ZVVFVSRV9VU0UKICAgICAvKiBUTSBzdGF0ZSByZWZlcmVuY2UgcGVyIElTTVMgV0cgc29sdXRpb24gKi8KICAgICBuZXRzbm1wX3RtU3RhdGVSZWZlcmVuY2UgKnRtU3RhdGVSZWY7CisjZW5kaWYKKworICAgIC8qIHR1bm5lbGVkIHRyYW5zcG9ydHMgKi8KKyAgICBzdHJ1Y3QgbmV0c25tcF90cmFuc3BvcnRfcyAqIGJhc2VfdHJhbnNwb3J0OwogCiAgICAgLyogIENhbGxiYWNrcy4gIEFyZ3VtZW50cyBhcmU6CiAgICAgICoJCQpAQCAtMTk5LDYgKzIzMiw3IEBACiAJCQkJICBuZXRzbm1wX3RyYW5zcG9ydCAqdHJhbnNwb3J0KTsKIGludCBuZXRzbm1wX3RyYW5zcG9ydF9yZW1vdmVfZnJvbV9saXN0KG5ldHNubXBfdHJhbnNwb3J0X2xpc3QgKip0cmFuc3BvcnRfbGlzdCwKIAkJCQkgICAgICAgbmV0c25tcF90cmFuc3BvcnQgKnRyYW5zcG9ydCk7CitpbnQgbmV0c25tcF9zb2NrYWRkcl9zaXplKHN0cnVjdCBzb2NrYWRkciAqc2EpOwogCiAKIC8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcGtzbS5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBrc20uaAppbmRleCBjNzVlNWVmLi4xYjU2M2YwIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcGtzbS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wa3NtLmgKQEAgLTE1LDYgKzE1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopOwogICAgIHZvaWQgICAgICAgICAgICBpbml0X2tzbSh2b2lkKTsKIAorICAgIHZvaWQgICAgICAgICAgICBzaHV0ZG93bl9rc20odm9pZCk7CisKICAgICAvKgogICAgICAqIFRoaXMgaXMgdGhlICJrZXkgdXNhZ2UiIHRoYXQgaXMgdXNlZCBieSB0aGUgbmV3IGNyeXB0byBBUEkuICBJdCdzIHVzZWQKICAgICAgKiBnZW5lcmFsbHkgb25seSBpZiB5b3UgYXJlIHVzaW5nIGRlcml2ZWQga2V5cy4gIFRoZSBzcGVjaWZpY2FsIHNheXMgdGhhdApAQCAtMjUsNiArMjcsOCBAQAogI2RlZmluZSBLU01fS0VZX1VTQUdFX0VOQ1JZUFRJT04JMTAzMAogI2RlZmluZSBLU01fS0VZX1VTQUdFX0NIRUNLU1VNCQkxMDMxCiAKKyNkZWZpbmUgS1NNX1NFQ19NT0RFTF9OVU1CRVIgICAgICAgICAgICBTTk1QX1NFQ19NT0RFTF9LU00KKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCmluZGV4IGE3YzhkOTMuLjI2NGE5MjggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaApAQCAtNSw2ICs1LDggQEAKICNpZm5kZWYgU05NUFRTTV9ICiAjZGVmaW5lIFNOTVBUU01fSAogCisjZGVmaW5lIFRTTV9TRUNfTU9ERUxfTlVNQkVSICAgICAgICAgICAgU05NUF9TRUNfTU9ERUxfVFNNCisKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICAgICAgICAgICJDIiB7CiAjZW5kaWYKQEAgLTE1LDYgKzE3LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopOwogICAgIHZvaWQgICAgICAgICAgICBpbml0X3RzbSh2b2lkKTsKIAorICAgIHZvaWQgICAgICAgICAgICBzaHV0ZG93bl90c20odm9pZCk7CisKICAgICAjZGVmaW5lIE5FVFNOTVBfVE1fU0FNRV9TRUNVUklUWV9OT1RfUkVRVUlSRUQgMAogICAgICNkZWZpbmUgTkVUU05NUF9UTV9VU0VfU0FNRV9TRUNVUklUWSAgICAgICAgICAxCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCmluZGV4IGQxY2VkOTAuLjlkNjczY2MgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaApAQCAtMjU5LDYgKzI1OSwyMSBAQAogCQkJCQkgICB2b2lkICpjbGllbnRhcmcpOwogICAgIE5FVFNOTVBfSU1QT1JUCiAgICAgdm9pZCAgICAgICAgICAgIGNsZWFyX3VzZXJfbGlzdCh2b2lkKTsKKyAgICBORVRTTk1QX0lNUE9SVAorICAgIHZvaWQgICAgICAgICAgICBzaHV0ZG93bl91c20odm9pZCk7CisKKyAgICBORVRTTk1QX0lNUE9SVAorICAgIGludCAgICAgICAgICAgICB1c21fY3JlYXRlX3VzZXJfZnJvbV9zZXNzaW9uKG5ldHNubXBfc2Vzc2lvbiAqIHNlc3Npb24pOworICAgIFNlY21vZFBvc3REaXNjb3ZlcnkgdXNtX2NyZWF0ZV91c2VyX2Zyb21fc2Vzc2lvbl9ob29rOworICAgIE5FVFNOTVBfSU1QT1JUCisgICAgdm9pZCAgICAgICAgICAgIHVzbV9wYXJzZV9jcmVhdGVfdXNtVXNlcihjb25zdCBjaGFyICp0b2tlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmxpbmUpOworICAgIE5FVFNOTVBfSU1QT1JUCisgICAgY29uc3Qgb2lkICAgICAgKmdldF9kZWZhdWx0X2F1dGh0eXBlKHNpemVfdCAqKTsKKyAgICBORVRTTk1QX0lNUE9SVAorICAgIGNvbnN0IG9pZCAgICAgICpnZXRfZGVmYXVsdF9wcml2dHlwZShzaXplX3QgKik7CisgICAgdm9pZCAgICAgICAgICAgIHNubXB2M19hdXRodHlwZV9jb25mKGNvbnN0IGNoYXIgKndvcmQsIGNoYXIgKmNwdHIpOworICAgIHZvaWQgICAgICAgICAgICBzbm1wdjNfcHJpdnR5cGVfY29uZihjb25zdCBjaGFyICp3b3JkLCBjaGFyICpjcHRyKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKaW5kZXggNjMzZWE1Ny4uYTk1ODgwOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaApAQCAtMjYsMTEgKzI2LDYgQEAKICAgICB2b2lkICAgICAgICAgICAgZW5naW5lQm9vdHNfY29uZihjb25zdCBjaGFyICosIGNoYXIgKik7CiAgICAgdm9pZCAgICAgICAgICAgIGVuZ2luZUlEVHlwZV9jb25mKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKICAgICB2b2lkICAgICAgICAgICAgZW5naW5lSUROaWNfY29uZihjb25zdCBjaGFyICosIGNoYXIgKik7Ci0gICAgdm9pZCAgICAgICAgICAgIHNubXB2M19hdXRodHlwZV9jb25mKGNvbnN0IGNoYXIgKndvcmQsIGNoYXIgKmNwdHIpOwotICAgIHZvaWQgICAgICAgICAgICBzbm1wdjNfcHJpdnR5cGVfY29uZihjb25zdCBjaGFyICp3b3JkLCBjaGFyICpjcHRyKTsKLSAgICBORVRTTk1QX0lNUE9SVAotICAgIHZvaWQgICAgICAgICAgICB1c21fcGFyc2VfY3JlYXRlX3VzbVVzZXIoY29uc3QgY2hhciAqdG9rZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpsaW5lKTsKICAgICBORVRTTk1QX0lNUE9SVAogICAgIHZvaWQgICAgICAgICAgICBpbml0X3NubXB2Myhjb25zdCBjaGFyICopOwogICAgIGludCAgICAgICAgICAgICBpbml0X3NubXB2M19wb3N0X2NvbmZpZyhpbnQgbWFqb3JpZCwgaW50IG1pbm9yaWQsCkBAIC01NCwxMCArNDksNiBAQAogICAgIE5FVFNOTVBfSU1QT1JUCiAgICAgdV9sb25nICAgICAgICAgIHNubXB2M19sb2NhbF9zbm1wRW5naW5lVGltZSh2b2lkKTsKICAgICBpbnQgICAgICAgICAgICAgZ2V0X2RlZmF1bHRfc2VjTGV2ZWwodm9pZCk7Ci0gICAgTkVUU05NUF9JTVBPUlQKLSAgICBjb25zdCBvaWQgICAgICAqZ2V0X2RlZmF1bHRfYXV0aHR5cGUoc2l6ZV90ICopOwotICAgIE5FVFNOTVBfSU1QT1JUCi0gICAgY29uc3Qgb2lkICAgICAgKmdldF9kZWZhdWx0X3ByaXZ0eXBlKHNpemVfdCAqKTsKICAgICB2b2lkICAgICAgICAgICAgc25tcHYzX3NldF9lbmdpbmVCb290c0FuZFRpbWUoaW50IGJvb3RzLCBpbnQgdHRpbWUpOwogICAgIGludCAgICAgICAgICAgICBmcmVlX2VuZ2luZUlEKGludCBtYWpvcmlkLCBpbnQgbWlub3JpZCwgdm9pZCAqc2VydmVyYXJnLAogCQkJCSAgdm9pZCAqY2xpZW50YXJnKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAppbmRleCBmM2VjMjRjLi5hYzUwNTJlIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCkBAIC0xMzEsNiArMTMxLDIwIEBACiAgICAgaW50ICAgICAgICAgICAgIG5ldHNubXBfZ2V0aG9zdGJ5bmFtZV92NChjb25zdCBjaGFyKiBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fYWRkcl90ICphZGRyX291dCk7CiAKKyAgICAvKiogbmV0c25tcCB2ZXJzaW9ucyBvZiBkbnMgcmVzb2xvdXRpb24uLiBtYXkgaW5jbHVkZSBETlNTRUMgdmFsaWRhdGlvbi4gKi8KKyAgICBzdHJ1Y3QgYWRkcmluZm87IC8qIGZvcndhcmQgZGVjbGFyZSAqLworICAgIE5FVFNOTVBfSU1QT1JUCisgICAgc3RydWN0IGhvc3RlbnQgKm5ldHNubXBfZ2V0aG9zdGJ5bmFtZShjb25zdCBjaGFyICpuYW1lKTsKKworICAgIE5FVFNOTVBfSU1QT1JUCisgICAgc3RydWN0IGhvc3RlbnQgKm5ldHNubXBfZ2V0aG9zdGJ5YWRkcihjb25zdCB2b2lkICphZGRyLCBzb2NrbGVuX3QgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHR5cGUpOworCisgICAgTkVUU05NUF9JTVBPUlQKKyAgICBpbnQgICAgICAgICAgICAgbmV0c25tcF9nZXRhZGRyaW5mbyhjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpzZXJ2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBhZGRyaW5mbyAqaGludHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFkZHJpbmZvICoqcmVzKTsKKwogICAgIE5FVFNOTVBfSU1QT1JUCiAgICAgaW5fYWRkcl90ICAgICAgIGdldF9teWFkZHIodm9pZCk7CiAgICAgTkVUU05NUF9JTVBPUlQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90ZXN0aW5nLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdGVzdGluZy5oCmluZGV4IGFhYmU1MmYuLmVjNjEzNWEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90ZXN0aW5nLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rlc3RpbmcuaApAQCAtNywxMCArNywxMCBAQAogc3RhdGljIGludCBfX3Rlc3RfY291bnRlciA9IDA7CiBzdGF0aWMgaW50IF9fZGlkX3BsYW4gPSAwOwogCi0jZGVmaW5lIE9LKGlzb2ssIGRlc2NyaXB0aW9uKSB7IHByaW50ZigiJXMgJWQgLSAlc1xuIiwgKChpc29rKSA/ICJvayIgOiAibm90IG9rIiksICsrX190ZXN0X2NvdW50ZXIsIGRlc2NyaXB0aW9uKTsgfQorI2RlZmluZSBPSyhpc29rLCBkZXNjcmlwdGlvbikgZG8geyBwcmludGYoIiVzICVkIC0gJXNcbiIsICgoaXNvaykgPyAib2siIDogIm5vdCBvayIpLCArK19fdGVzdF9jb3VudGVyLCBkZXNjcmlwdGlvbik7IH0gd2hpbGUgKDApCiAKLSNkZWZpbmUgT0tGKGlzb2ssIGRlc2NyaXB0aW9uKSB7IHByaW50ZigiJXMgJWQgLSBcbiIsICgoaXNvaykgPyAib2siIDogIm5vdCBvayIpLCArK19fdGVzdF9jb3VudGVyKTsgcHJpbnRmIGRlc2NyaXB0aW9uOyBwcmludGYoIlxuIik7IH0KKyNkZWZpbmUgT0tGKGlzb2ssIGRlc2NyaXB0aW9uKSBkbyB7IHByaW50ZigiJXMgJWQgLSAiLCAoKGlzb2spID8gIm9rIiA6ICJub3Qgb2siKSwgKytfX3Rlc3RfY291bnRlcik7IHByaW50ZiBkZXNjcmlwdGlvbjsgcHJpbnRmKCJcbiIpOyB9IHdoaWxlICgwKQogCi0jZGVmaW5lIFBMQU4obnVtYmVyKSB7IHByaW50ZigiMS4uJWRcbiIsIG51bWJlcik7IF9fZGlkX3BsYW4gPSAxO30KKyNkZWZpbmUgUExBTihudW1iZXIpIGRvIHsgcHJpbnRmKCIxLi4lZFxuIiwgbnVtYmVyKTsgX19kaWRfcGxhbiA9IDE7IH0gd2hpbGUgKDApCiAKICNlbmRpZiAvKiBORVRTTk1QX0xJQlJBUllfVEVTVElOR19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCmluZGV4IGMyYjYxNzkuLmJkM2IwYjggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCkBAIC0yMDksNiArMjA5LDkgQEAKICAgICBORVRTTk1QX0lNUE9SVAogICAgIGludCAgICAgICAgICAgICBtZW1kdXAodV9jaGFyICoqIHRvLCBjb25zdCB2b2lkICogZnJvbSwgc2l6ZV90IHNpemUpOwogCisgICAgdm9pZCAgICAgICAgICAgIG5ldHNubXBfY2hlY2tfZGVmaW5lZG5lc3MoY29uc3Qgdm9pZCAqcGFja2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgpOworCiAgICAgTkVUU05NUF9JTVBPUlQKICAgICB1X2ludCAgICAgICAgICAgbmV0c25tcF9iaW5hcnlfdG9faGV4KHVfY2hhciAqKiBkZXN0LCBzaXplX3QgKmRlc3RfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFsbG93X3JlYWxsb2MsCkBAIC0yNTksMTIgKzI2MiwxOCBAQAogICAgIE5FVFNOTVBfSU1QT1JUCiAgICAgdm9pZCAgICAgICAgICAgIGF0aW1lX3NldE1hcmtlcihtYXJrZXJfdCBwbSk7CiAgICAgTkVUU05NUF9JTVBPUlQKKyAgICB2b2lkICAgICAgICAgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKHN0cnVjdCB0aW1ldmFsKiB0dik7CisgICAgTkVUU05NUF9JTVBPUlQKKyAgICB2b2lkICAgICAgICAgICAgbmV0c25tcF9zZXRfbW9ub3RvbmljX21hcmtlcihtYXJrZXJfdCAqcG0pOworICAgIE5FVFNOTVBfSU1QT1JUCiAgICAgbG9uZyAgICAgICAgICAgIGF0aW1lX2RpZmYoY29uc3RfbWFya2VyX3QgZmlyc3QsIGNvbnN0X21hcmtlcl90IHNlY29uZCk7CiAgICAgdV9sb25nICAgICAgICAgIHVhdGltZV9kaWZmKGNvbnN0X21hcmtlcl90IGZpcnN0LCBjb25zdF9tYXJrZXJfdCBzZWNvbmQpOyAgICAgICAvKiAxLzEwMDB0aCBzZWMgKi8KICAgICBORVRTTk1QX0lNUE9SVAogICAgIHVfbG9uZyAgICAgICAgICB1YXRpbWVfaGRpZmYoY29uc3RfbWFya2VyX3QgZmlyc3QsIGNvbnN0X21hcmtlcl90IHNlY29uZCk7ICAgICAgLyogMS8xMDB0aCBzZWMgKi8KICAgICBORVRTTk1QX0lNUE9SVAogICAgIGludCAgICAgICAgICAgICBhdGltZV9yZWFkeShjb25zdF9tYXJrZXJfdCBwbSwgaW50IGRlbHRhX21zKTsKKyAgICBORVRTTk1QX0lNUE9SVAorICAgIGludCAgICAgICAgICAgICBuZXRzbm1wX3JlYWR5X21vbm90b25pYyhjb25zdF9tYXJrZXJfdCBwbSwgaW50IGRlbHRhX21zKTsKICAgICBpbnQgICAgICAgICAgICAgdWF0aW1lX3JlYWR5KGNvbnN0X21hcmtlcl90IHBtLCB1bnNpZ25lZCBpbnQgZGVsdGFfbXMpOwogCiAgICAgaW50ICAgICAgICAgICAgIG1hcmtlcl90dGlja3MoY29uc3RfbWFya2VyX3QgcG0pOwpAQCAtMjc3LDYgKzI4Niw5IEBACiAKICAgICBpbnQgICAgICAgICAgICAgbmV0c25tcF9hZGRyc3RyX2h0b24oY2hhciAqcHRyLCBzaXplX3QgbGVuKTsKIAorICAgIE5FVFNOTVBfSU1QT1JUCisgICAgaW50ICAgICAgICAgICAgIG5ldHNubXBfc3RyaW5nX3RpbWVfdG9fc2Vjcyhjb25zdCBjaGFyICp0aW1lX3N0cmluZyk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluIGIvaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbgppbmRleCA4YmJkNTBhLi44OWNjMGQ4IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4KQEAgLTI4LDE1ICsyOCw2IEBACiAgKi8KICNpZm5kZWYgTkVUU05NUF9OT19BVVRPQ09ORl9ERUZJTklUSU9OUwogCi0KLSNpZiBkZWZpbmVkIChXSU4zMikgfHwgZGVmaW5lZCAobWluZ3czMikgfHwgZGVmaW5lZCAoY3lnd2luKQotI2RlZmluZSBFTlZfU0VQQVJBVE9SICI7IgotI2RlZmluZSBFTlZfU0VQQVJBVE9SX0NIQVIgJzsnCi0jZWxzZQotI2RlZmluZSBFTlZfU0VQQVJBVE9SICI6IgotI2RlZmluZSBFTlZfU0VQQVJBVE9SX0NIQVIgJzonCi0jZW5kaWYKLQogLyogZGVmaW5pdGlvbnMgYWRkZWQgYnkgY29uZmlndXJlIG9uLXRoZS1mbHkgKi8KIAogI2RlZmluZSBjb25maWdfYmVsb25nc19pbih4KQpAQCAtNzEsNiArNjIsMTUgQEAKIC8qIGxvY2F0aW9uIG9mIHN3YXAgZGV2aWNlICovCiAjdW5kZWYgRE1FTV9MT0MKIAorLyogRGVmaW5lIGlmIHlvdSB3YW50IGxvY2FsIEROU1NFQyB2YWxpZGF0aW9uIHN1cHBvcnQgKi8KKyN1bmRlZiBETlNTRUNfTE9DQUxfVkFMSURBVElPTgorCisvKiBFbnZpcm9ubWVudCBzZXBhcmF0b3IgY2hhcmFjdGVyIHN1cnJvdW5kZWQgYnkgZG91YmxlIHF1b3Rlcy4gKi8KKyN1bmRlZiBFTlZfU0VQQVJBVE9SCisKKy8qIEVudmlyb25tZW50IHNlcGFyYXRvciBjaGFyYWN0ZXIgc3Vycm91bmRlZCBieSBzaW5nbGUgcXVvdGVzLiAqLworI3VuZGVmIEVOVl9TRVBBUkFUT1JfQ0hBUgorCiAvKiBsb2NhdGlvbiBvZiBtb3VudCB0YWJsZSBsaXN0ICovCiAjdW5kZWYgRVRDX01OVFRBQgogCkBAIC0xMDIsOSArMTAyLDE1IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNob3duJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0NIT1dOCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY2xvY2tfZ2V0dGltZScgbGlicmFyeSAqLworI3VuZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNsb3NlZGlyJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0NMT1NFRElSCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8Y29tX2Vyci5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0NPTV9FUlJfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgQ291bnRlcjY0Jy4gKi8KICN1bmRlZiBIQVZFX0NPVU5URVI2NAogCkBAIC0xMzcsNiArMTQzLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZXJyLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfRVJSX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxldC9jb21fZXJyLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfRVRfQ09NX0VSUl9ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZXZhbF9wdicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9FVkFMX1BWCiAKQEAgLTE0NiwxOCArMTU1LDMzIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYEVWUF9NRF9DVFhfZGVzdHJveScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9FVlBfTURfQ1RYX0RFU1RST1kKIAorLyogRGVmaW5lIGlmIHlvdSBoYXZlIEVWUF9zaGEyMjQvMjU2IGluIG9wZW5zc2wgKi8KKyN1bmRlZiBIQVZFX0VWUF9TSEEyMjQKKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIEVWUF9zaGEzODQvMjU2IGluIG9wZW5zc2wgKi8KKyN1bmRlZiBIQVZFX0VWUF9TSEEzODQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBleGVjdicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9FWEVDVgogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGZjbnRsLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfRkNOVExfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZnZXRjX3VubG9ja2VkJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZHRVRDX1VOTE9DS0VECisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZmxvY2tmaWxlJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZMT0NLRklMRQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZvcmsnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRk9SSwogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGZzdGFiLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfRlNUQUJfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZ1bmxvY2tmaWxlJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZVTkxPQ0tGSUxFCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2FpX3N0cmVycm9yJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dBSV9TVFJFUlJPUgogCkBAIC0xNzYsNiArMjAwLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0Z3JuYW0nIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfR0VUR1JOQU0KIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRob3N0YnlhZGRyJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0dFVEhPU1RCWUFERFIKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRob3N0YnluYW1lJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUUKIApAQCAtMjc4LDEyICszMDUsMTIgQEAKIC8qIFNldCBpZiBJUF9SRUNWRFNUQUREUiBpcyB1c2FibGUgKi8KICN1bmRlZiBIQVZFX0lQX1JFQ1ZEU1RBRERSCiAKLS8qIGtlcm4uY3BfdGltZXMgZGlzcGxheXMgbXVsdGkgY3B1IGxvYWQgb24gRnJlZUJTRC4uLiAqLwotI3VuZGVmIEhBVkVfS0VSTl9DUF9USU1FUwotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGtpbmZvX2dldF9jcHVzJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0tJTkZPX0dFVF9DUFVTCiAKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSAvZGV2L2ttZW0gKi8KKyN1bmRlZiBIQVZFX0tNRU0KKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBrbmxpc3QnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfS05MSVNUCiAKQEAgLTMzNSw2ICszNjIsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwa2NzMTEnIGxpYnJhcnkgKC1scGtjczExKS4gKi8KICN1bmRlZiBIQVZFX0xJQlBLQ1MxMQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHB0aHJlYWQnIGxpYnJhcnkgKC1scHRocmVhZCkuICovCisjdW5kZWYgSEFWRV9MSUJQVEhSRUFECisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcnBtJyBsaWJyYXJ5ICgtbHJwbSkuICovCiAjdW5kZWYgSEFWRV9MSUJSUE0KIApAQCAtMzQ0LDYgKzM3NCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJzYXJlZicgbGlicmFyeSAoLWxyc2FyZWYpLiAqLwogI3VuZGVmIEhBVkVfTElCUlNBUkVGCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3JlcycgbGlicmFyeSAoLWxzcmVzKS4gKi8KKyN1bmRlZiBIQVZFX0xJQlNSRVMKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzc2gyJyBsaWJyYXJ5ICgtbHNzaDIpLiAqLwogI3VuZGVmIEhBVkVfTElCU1NIMgogCkBAIC01NjksNiArNjAyLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8b3NyZWxkYXRlLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfT1NSRUxEQVRFX0gKIAorLyogZGVmaW5lIGlmIHlvdSBoYXZlIHBjaV9sb29rdXBfbmFtZSgpICovCisjdW5kZWYgSEFWRV9QQ0lfTE9PS1VQX05BTUUKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxwY2kvcGNpLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfUENJX1BDSV9ICiAKQEAgLTc2NCwyMDYgKzgwMCwyMTIgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RydG91bGwnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU1RSVE9VTEwKIAotLyogRGVmaW5lIHRvIDEgaWYgYGF0X25leHQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGFycGhkJy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBhdF9uZXh0JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGFycGhkJy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9BUlBIRF9BVF9ORVhUCiAKLS8qIERlZmluZSB0byAxIGlmIGB3ZWFrX2tleScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgZGVzX2tzX3N0cnVjdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgd2Vha19rZXknIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgZGVzX2tzX3N0cnVjdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfREVTX0tTX1NUUlVDVF9XRUFLX0tFWQogCi0vKiBEZWZpbmUgdG8gMSBpZiBgZF90eXBlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBkaXJlbnQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGRfdHlwZScgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBkaXJlbnQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0RJUkVOVF9EX1RZUEUKIAotLyogRGVmaW5lIHRvIDEgaWYgYHNwZWVkX2hpJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBldGh0b29sX2NtZCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgc3BlZWRfaGknIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgZXRodG9vbF9jbWQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0VUSFRPT0xfQ01EX1NQRUVEX0hJCiAKLS8qIERlZmluZSB0byAxIGlmIGBpZmFfbmV4dCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZhZGRyJy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBpZmFfbmV4dCcgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBpZmFkZHInLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0lGQUREUl9JRkFfTkVYVAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaWZfYWRkcmhlYWQudHFoX2ZpcnN0JyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfYWRkcmhlYWQudHFoX2ZpcnN0JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9BRERSSEVBRF9UUUhfRklSU1QKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlmX2FkZHJsaXN0JyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfYWRkcmxpc3QnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0FERFJMSVNUCiAKLS8qIERlZmluZSB0byAxIGlmIGBpZl9iYXVkcmF0ZScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGlmX2JhdWRyYXRlJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9CQVVEUkFURQogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaWZfYmF1ZHJhdGUuaWZzX3ZhbHVlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfYmF1ZHJhdGUuaWZzX3ZhbHVlJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9CQVVEUkFURV9JRlNfVkFMVUUKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlmX2lieXRlcycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGlmX2lieXRlcycgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfSUJZVEVTCiAKLS8qIERlZmluZSB0byAxIGlmIGBpZl9pbWNhc3RzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfaW1jYXN0cycgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfSU1DQVNUUwogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaWZfaXFkcm9wcycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGlmX2lxZHJvcHMnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0lRRFJPUFMKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlmX2xhc3RjaGFuZ2UudHZfbnNlYycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGlmX2xhc3RjaGFuZ2UudHZfbnNlYycgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfTEFTVENIQU5HRV9UVl9OU0VDCiAKLS8qIERlZmluZSB0byAxIGlmIGBpZl9sYXN0Y2hhbmdlLnR2X3NlYycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGlmX2xhc3RjaGFuZ2UudHZfc2VjJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9MQVNUQ0hBTkdFX1RWX1NFQwogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaWZfbXR1JyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfbXR1JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9NVFUKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlmX25vcHJvdG8nIGlzIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBpZl9ub3Byb3RvJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9OT1BST1RPCiAKLS8qIERlZmluZSB0byAxIGlmIGBpZl9vYnl0ZXMnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBpZl9vYnl0ZXMnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX09CWVRFUwogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaWZfb21jYXN0cycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGlmX29tY2FzdHMnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX09NQ0FTVFMKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlmX3NwZWVkJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfc3BlZWQnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX1NQRUVECiAKLS8qIERlZmluZSB0byAxIGlmIGBpZl90eXBlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfdHlwZScgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfVFlQRQogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaWZfeG5hbWUnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBpZl94bmFtZScgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfWE5BTUUKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlwc19jYW50Zm9yd2FyZCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBpcDZzX2V4dGhkcnRvb2xvbmcgJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlwNnN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lQNlNUQVRfSVA2U19FWFRIRFJUT09MT05HXworCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2NhbnRmb3J3YXJkJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19DQU5URk9SV0FSRAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2NhbnRmcmFnJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGlwc19jYW50ZnJhZycgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfQ0FOVEZSQUcKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlwc19kZWxpdmVyZWQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2RlbGl2ZXJlZCcgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfREVMSVZFUkVECiAKLS8qIERlZmluZSB0byAxIGlmIGBpcHNfZnJhZ2Ryb3BwZWQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2ZyYWdkcm9wcGVkJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19GUkFHRFJPUFBFRAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2ZyYWdtZW50ZWQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2ZyYWdtZW50ZWQnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX0ZSQUdNRU5URUQKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlwc19mcmFndGltZW91dCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBpcHNfZnJhZ3RpbWVvdXQnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX0ZSQUdUSU1FT1VUCiAKLS8qIERlZmluZSB0byAxIGlmIGBpcHNfbG9jYWxvdXQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2xvY2Fsb3V0JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19MT0NBTE9VVAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaXBzX25vcHJvdG8nIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX25vcHJvdG8nIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX05PUFJPVE8KIAotLyogRGVmaW5lIHRvIDEgaWYgYGlwc19ub3JvdXRlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGlwc19ub3JvdXRlJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19OT1JPVVRFCiAKLS8qIERlZmluZSB0byAxIGlmIGBpcHNfb2Ryb3BwZWQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX29kcm9wcGVkJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19PRFJPUFBFRAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaXBzX29mcmFnbWVudHMnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX29mcmFnbWVudHMnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX09GUkFHTUVOVFMKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlwc19yZWFzc2VtYmxlZCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBpcHNfcmVhc3NlbWJsZWQnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX1JFQVNTRU1CTEVECiAKLS8qIERlZmluZSB0byAxIGlmIGBtX2NsZnJlZScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgbWJzdGF0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBtX2NsZnJlZScgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBtYnN0YXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX01CU1RBVF9NX0NMRlJFRQogCi0vKiBEZWZpbmUgdG8gMSBpZiBgbV9jbHVzdGVycycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgbWJzdGF0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBtX2NsdXN0ZXJzJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IG1ic3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfTUJTVEFUX01fQ0xVU1RFUlMKIAotLyogRGVmaW5lIHRvIDEgaWYgYG1fbWJ1ZnMnIGlzIG1lbWJlciBvZiBgc3RydWN0IG1ic3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgbV9tYnVmcycgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBtYnN0YXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX01CU1RBVF9NX01CVUZTCiAKLS8qIERlZmluZSB0byAxIGlmIGBuX3ZhbHVlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBubGlzdDY0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBuX3ZhbHVlJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IG5saXN0NjQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX05MSVNUNjRfTl9WQUxVRQogCi0vKiBEZWZpbmUgdG8gMSBpZiBgbl92YWx1ZScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgbmxpc3QnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYG5fdmFsdWUnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgbmxpc3QnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX05MSVNUX05fVkFMVUUKIAotLyogRGVmaW5lIHRvIDEgaWYgYHJ0X2RzdCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgcnRlbnRyeScuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgcnRfZHN0JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHJ0ZW50cnknLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfRFNUCiAKLS8qIERlZmluZSB0byAxIGlmIGBydF9oYXNoJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBydGVudHJ5Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBydF9oYXNoJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHJ0ZW50cnknLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfSEFTSAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgcnRfbmV4dCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgcnRlbnRyeScuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgcnRfbmV4dCcgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBydGVudHJ5Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX05FWFQKIAotLyogRGVmaW5lIHRvIDEgaWYgYHJ0X3JlZmNudCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgcnRlbnRyeScuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgcnRfcmVmY250JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHJ0ZW50cnknLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfUkVGQ05UCiAKLS8qIERlZmluZSB0byAxIGlmIGBydF91bml0JyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBydGVudHJ5Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBydF91bml0JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHJ0ZW50cnknLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfVU5JVAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgcnRfdXNlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBydGVudHJ5Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBydF91c2UnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgcnRlbnRyeScuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfUlRFTlRSWV9SVF9VU0UKIAotLyogRGVmaW5lIHRvIDEgaWYgYHNhX3NpZ2FjdGlvbicgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgc2lnYWN0aW9uJy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBzYV9zaWdhY3Rpb24nIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc2lnYWN0aW9uJy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9TSUdBQ1RJT05fU0FfU0lHQUNUSU9OCiAKLS8qIERlZmluZSB0byAxIGlmIGBzaW42X3Njb3BlX2lkJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBzb2NrYWRkcl9pbjYnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYHNpbjZfc2NvcGVfaWQnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc29ja2FkZHJfaW42Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9TT0NLQUREUl9JTjZfU0lONl9TQ09QRV9JRAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgc2FfbGVuJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBzb2NrYWRkcicuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgc2FfbGVuJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHNvY2thZGRyJy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9TT0NLQUREUl9TQV9MRU4KIAotLyogRGVmaW5lIHRvIDEgaWYgYHNhX3VuaW9uLnNhX2dlbmVyaWMuc2FfZmFtaWx5MicgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QKKy8qIERlZmluZSB0byAxIGlmIGBzYV91bmlvbi5zYV9nZW5lcmljLnNhX2ZhbWlseTInIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QKICAgIHNvY2thZGRyJy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9TT0NLQUREUl9TQV9VTklPTl9TQV9HRU5FUklDX1NBX0ZBTUlMWTIKIAotLyogRGVmaW5lIHRvIDEgaWYgYHNzX2ZhbWlseScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZScuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgc3NfZmFtaWx5JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0VfU1NfRkFNSUxZCiAKLS8qIERlZmluZSB0byAxIGlmIGBfX3NzX2ZhbWlseScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZScuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgX19zc19mYW1pbHknIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZScuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfU09DS0FERFJfU1RPUkFHRV9fX1NTX0ZBTUlMWQogCi0vKiBEZWZpbmUgdG8gMSBpZiBgZl9mYXZhaWwnIGlzIG1lbWJlciBvZiBgc3RydWN0IHN0YXRmcycuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgZl9mYXZhaWwnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3RhdGZzJy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9TVEFURlNfRl9GQVZBSUwKIAotLyogRGVmaW5lIHRvIDEgaWYgYGZfZmZyZWUnIGlzIG1lbWJlciBvZiBgc3RydWN0IHN0YXRmcycuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgZl9mZnJlZScgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0ZnMnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRGU19GX0ZGUkVFCiAKLS8qIERlZmluZSB0byAxIGlmIGBmX2ZpbGVzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0ZnMnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGZfZmlsZXMnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3RhdGZzJy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9TVEFURlNfRl9GSUxFUwogCi0vKiBEZWZpbmUgdG8gMSBpZiBgZl9mbGFncycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3RhdGZzJy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBmX2ZsYWdzJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHN0YXRmcycuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVEZTX0ZfRkxBR1MKIAotLyogRGVmaW5lIHRvIDEgaWYgYGZfZnJzaXplJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0ZnMnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGZfZnJzaXplJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHN0YXRmcycuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVEZTX0ZfRlJTSVpFCiAKLS8qIERlZmluZSB0byAxIGlmIGBmX2ZpbGVzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0dmZzJy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBmX2ZpbGVzJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHN0YXR2ZnMnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRWRlNfRl9GSUxFUwogCi0vKiBEZWZpbmUgdG8gMSBpZiBgZl9mcnNpemUnIGlzIG1lbWJlciBvZiBgc3RydWN0IHN0YXR2ZnMnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGZfZnJzaXplJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHN0YXR2ZnMnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRWRlNfRl9GUlNJWkUKIAotLyogRGVmaW5lIHRvIDEgaWYgYG1udF9kaXInIGlzIG1lbWJlciBvZiBgc3RydWN0IHN0YXR2ZnMnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYG1udF9kaXInIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3RhdHZmcycuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVFZGU19NTlRfRElSCiAKLS8qIERlZmluZSB0byAxIGlmIGBzd19uYmxrc2VuYWJsZWQnIGlzIG1lbWJlciBvZiBgc3RydWN0IHN3ZGV2dCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgc3dfbmJsa3NlbmFibGVkJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHN3ZGV2dCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfU1dERVZUX1NXX05CTEtTRU5BQkxFRAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgdGNwX3Jjdm1lbWRyb3AnIGlzIG1lbWJlciBvZiBgc3RydWN0IHRjcHN0YXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYHRjcF9yY3ZtZW1kcm9wJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHRjcHN0YXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1RDUFNUQVRfVENQX1JDVk1FTURST1AKIAotLyogRGVmaW5lIHRvIDEgaWYgYHR6X2RzdHRpbWUnIGlzIG1lbWJlciBvZiBgc3RydWN0IHRpbWV6b25lJy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGB0el9kc3R0aW1lJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHRpbWV6b25lJy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9USU1FWk9ORV9UWl9EU1RUSU1FCiAKLS8qIERlZmluZSB0byAxIGlmIGB0bV9nbXRvZmYnIGlzIG1lbWJlciBvZiBgc3RydWN0IHRtJy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGB0bV9nbXRvZmYnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgdG0nLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1RNX1RNX0dNVE9GRgogCi0vKiBEZWZpbmUgdG8gMSBpZiBgdWRwc19kaXNjYXJkJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCB1ZHBzdGF0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGB1ZHBzX2Rpc2NhcmQnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgdWRwc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX0RJU0NBUkQKIAotLyogRGVmaW5lIHRvIDEgaWYgYHVkcHNfZnVsbHNvY2snIGlzIG1lbWJlciBvZiBgc3RydWN0IHVkcHN0YXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYHVkcHNfZnVsbHNvY2snIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgdWRwc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX0ZVTExTT0NLCiAKLS8qIERlZmluZSB0byAxIGlmIGB1ZHBzX25vcG9ydCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgdWRwc3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgdWRwc19pcGFja2V0cycgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCB1ZHBzdGF0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9VRFBTVEFUX1VEUFNfSVBBQ0tFVFMKKworLyogRGVmaW5lIHRvIDEgaWYgYHVkcHNfbm9wb3J0JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHVkcHN0YXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1VEUFNUQVRfVURQU19OT1BPUlQKIAotLyogRGVmaW5lIHRvIDEgaWYgYHVkcHNfbm9wb3J0YmNhc3QnIGlzIG1lbWJlciBvZiBgc3RydWN0IHVkcHN0YXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYHVkcHNfbm9wb3J0YmNhc3QnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgdWRwc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX05PUE9SVEJDQVNUCiAKLS8qIERlZmluZSB0byAxIGlmIGB1ZHBzX29wYWNrZXRzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCB1ZHBzdGF0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGB1ZHBzX29wYWNrZXRzJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHVkcHN0YXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1VEUFNUQVRfVURQU19PUEFDS0VUUwogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN5c2NvbmYnIGZ1bmN0aW9uLiAqLwpAQCAtMTIxMSw2ICsxMjUzLDE1IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHV2bS91dm1fcGFyYW0uaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9VVk1fVVZNX1BBUkFNX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx2YWxncmluZC9tZW1jaGVjay5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1ZBTEdSSU5EX01FTUNIRUNLX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx2YWxncmluZC92YWxncmluZC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1ZBTEdSSU5EX1ZBTEdSSU5EX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx2YWxpZGF0b3IvdmFsaWRhdG9yLWNvbmZpZy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1ZBTElEQVRPUl9WQUxJREFUT1JfQ09ORklHX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx2bS9zd2FwX3BhZ2VyLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfVk1fU1dBUF9QQUdFUl9ICiAKQEAgLTEyNzYsNiArMTMyNywxMiBAQAogLyogZGVmYXVsdCBtaWIgZmlsZXMgdG8gbG9hZCwgc3BlY2lmaWVkIGJ5IHBhdGguICovCiAjdW5kZWYgTkVUU05NUF9ERUZBVUxUX01JQkZJTEVTCiAKKy8qIERlZmluZSBpZiBubyBhZ2VudCBpcyBidWlsdCAqLworI3VuZGVmIE5FVFNOTVBfRElTQUJMRV9BR0VOVAorCisvKiBEZWZpbmUgaWYgbm8gYXBwcyBhcmUgYnVpbHQgKi8KKyN1bmRlZiBORVRTTk1QX0RJU0FCTEVfQVBQUworCiAvKiBEZWZpbmUgaWYgREVTIGVuY3J5cHRpb24gc2hvdWxkIG5vdCBiZSBzdXBwb3J0ZWQgKi8KICN1bmRlZiBORVRTTk1QX0RJU0FCTEVfREVTCiAKQEAgLTEzMjIsNiArMTM3OSwxMiBAQAogLyogaWZuZXQgbmVlZHMgdG8gaGF2ZSBfS0VSTkVMX1NUUlVDVFVSRVMgZGVmaW5lZCAqLwogI3VuZGVmIE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMX1NUUlVDVFVSRVMKIAorLyogRGVmaW5lIGlmIHlvdSB3YW50IHRvIHJlbW92ZSBhbGwgbm9uLWVzc2VudGlhbCBjb2RlIGZlYXR1cmVzLiAqLworI3VuZGVmIE5FVFNOTVBfTUlOSU1BTF9DT0RFCisKKy8qIERlZmluZSBpZiB5b3Ugd2FudCB0byBvbmx5IHN1cHBvcnQgc2VuZGluZyBub3RpZmljYXRpb25zICovCisjdW5kZWYgTkVUU05NUF9OT1RJRllfT05MWQorCiAvKiBEZWZpbmUgdG8gc3VwcHJlc3MgaW5jbHVzaW9uIG9mIGRlcHJlY2F0ZWQgZnVuY3Rpb25zICovCiAjdW5kZWYgTkVUU05NUF9OT19ERVBSRUNBVEVEX0ZVTkNUSU9OUwogCkBAIC0xMzMyLDkgKzEzOTUsMTUgQEAKIC8qIElmIHdlIGRvbid0IHdhbnQgdG8gdXNlIGttZW0uICovCiAjdW5kZWYgTkVUU05NUF9OT19LTUVNX1VTQUdFCiAKKy8qIERlZmluZSBpZiB5b3Ugd2FudCB0byByZW1vdmUgYWxsIGxpc3RlbmluZyBzdXBwb3J0IGZyb20gdGhlIGNvZGUgKi8KKyN1bmRlZiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUCisKIC8qIElmIHlvdSBkb24ndCBoYXZlIHJvb3QgYWNjZXNzIGRvbid0IGV4aXQgdXBvbiBrbWVtIGVycm9ycyAqLwogI3VuZGVmIE5FVFNOTVBfTk9fUk9PVF9BQ0NFU1MKIAorLyogRGVmaW5lIGlmIHlvdSB3YW50IHRvIHJlbW92ZSBhbGwgU0VUL3dyaXRlIGFjY2VzcyBmcm9tIHRoZSBjb2RlICovCisjdW5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCisKIC8qIHVtYXNrIHBlcm1pc3Npb25zIHRvIHNldCB1cCBwZXJzaXN0ZW50IGZpbGVzIHdpdGggKi8KICN1bmRlZiBORVRTTk1QX1BFUlNJU1RFTlRfTUFTSwogCkBAIC0xMzk5LDYgKzE0NjgsOSBAQAogI3VuZGVmIFBBQ0tBR0VfVEFSTkFNRQogI2VuZGlmCiAKKy8qIERlZmluZSB0byB0aGUgaG9tZSBwYWdlIGZvciB0aGlzIHBhY2thZ2UuICovCisjdW5kZWYgUEFDS0FHRV9VUkwKKwogLyogRGVmaW5lIHRvIHRoZSB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KICNpZm5kZWYgUEFDS0FHRV9WRVJTSU9OCiAjdW5kZWYgUEFDS0FHRV9WRVJTSU9OCkBAIC0xNTY0LDYgKzE2MzYsOSBAQAogLyogRGVmaW5lIHRvIGBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3QgZGVmaW5lLiAqLwogI3VuZGVmIHBpZF90CiAKKy8qIERlZmluZSB0byBgdW5zaWduZWQgaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXMgbm90IGRlZmluZS4gKi8KKyN1bmRlZiBzaXplX3QKKwogLyogRGVmaW5lIHRvIHRoZSB0eXBlIG9mIGFuIHVuc2lnbmVkIGludGVnZXIgdHlwZSBvZiB3aWR0aCBleGFjdGx5IDE2IGJpdHMgaWYKICAgIHN1Y2ggYSB0eXBlIGV4aXN0cyBhbmQgdGhlIHN0YW5kYXJkIGluY2x1ZGVzIGRvIG5vdCBkZWZpbmUgaXQuICovCiAjdW5kZWYgdWludDE2X3QKQEAgLTIwNDIsMTEgKzIxMTcsOCBAQAogICAgYW5kIGFyZSBub3QgdXNpbmcgdGhlIFVDLURhdmlzIFNOTVAgbGlicmFyeS4gKi8KICNkZWZpbmUgVUNEX1NOTVBfTElCUkFSWSAxCiAKLS8qIGFkZCBpbiByZWNlbnQgQ01VIGxpYnJhcnkgZXh0ZW5zaW9ucyAobm90IGNvbXBsZXRlKSAqLwotI3VuZGVmIENNVV9DT01QQVRJQkxFCi0KIC8qIGZpbmFsIGNvbmNsdXNpb24gb24gbmxpc3QgdXNhZ2UgKi8KLSNpZiBkZWZpbmVkKEhBVkVfTkxJU1QpICYmIGRlZmluZWQoSEFWRV9TVFJVQ1RfTkxJU1RfTl9WQUxVRSkgJiYgIWRlZmluZWQoTkVUU05NUF9ET05UX1VTRV9OTElTVCkgJiYgIWRlZmluZWQoTkVUU05NUF9OT19LTUVNX1VTQUdFKQorI2lmIGRlZmluZWQoSEFWRV9OTElTVCkgJiYgZGVmaW5lZChIQVZFX1NUUlVDVF9OTElTVF9OX1ZBTFVFKSAmJiAhZGVmaW5lZChORVRTTk1QX0RPTlRfVVNFX05MSVNUKSAmJiBkZWZpbmVkKEhBVkVfS01FTSkgJiYgIWRlZmluZWQoTkVUU05NUF9OT19LTUVNX1VTQUdFKQogI2RlZmluZSBORVRTTk1QX0NBTl9VU0VfTkxJU1QKICNlbmRpZgogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmggYi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM3ZTZjNQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaApAQCAtMCwwICsxLDMyIEBACisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRVNfSAorI2RlZmluZSBORVRTTk1QX0ZFQVRVUkVTX0gKKworLyogaW5jbHVkZSBmaWxlcyB0aGF0IGFyZSBvbmx5IG5lZWRlZCBpZiAtLWVuYWJsZS1taW5pbWFsaXN0IGlzIG9uICovCisjaWZkZWYgTkVUU05NUF9NSU5JTUFMX0NPREUKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTkcKKyNpbmNsdWRlIDxuZXQtc25tcC9mZWF0dXJlLWRldGFpbHMuaD4KKyNlbHNlIC8qICEgTkVUU05NUF9GRUFUVVJFX0NIRUNLSU5HICovCisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9mZWF0dXJlcy5oPgorI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfQUdFTlQKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9mZWF0dXJlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2ZlYXR1cmVzLW1pYmdyb3Vwcy5oPgorI2VuZGlmCisjaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9BUFBTCisjaW5jbHVkZSA8bmV0LXNubXAvZmVhdHVyZXMtc25tcG5ldHN0YXQuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9mZWF0dXJlcy1hcHBzLmg+CisjZW5kaWYKKyNlbmRpZiAvKiAhIE5FVFNOTVBfRkVBVFVSRV9DSEVDS0lORyAqLworI2VuZGlmIC8qIE5FVFNOTVBfTUlOSU1BTF9DT0RFICovCisKKworLyogcHJvdG90eXBlcyBhbHdheXMgbmVlZGVkICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9DSEVDS0lORworI2RlZmluZSBuZXRzbm1wX2ZlYXR1cmVfcHJvdmlkZShYKQorI2RlZmluZSBuZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShYKQorI2RlZmluZSBuZXRzbm1wX2ZlYXR1cmVfd2FudChYKQorI2RlZmluZSBuZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoWCwgWSkKKyNlbmRpZgorCisjZGVmaW5lIG5ldHNubXBfZmVhdHVyZV91bnVzZWQoWCkgY2hhciBuZXRzbm1wX2ZlYXR1cmVfdW51c2VkXyAjIyBYCisKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVTX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaCBiL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAppbmRleCBjZDM3NDA3Li4zZWU2MmFlIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCkBAIC03Nyw4ICs3Nyw0IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvb3V0cHV0X2FwaS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL3NubXB2M19hcGkuaD4KIAotI2lmZGVmIENNVV9DT01QQVRJQkxFCi0jaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jbXVfY29tcGF0Lmg+Ci0jZW5kaWYKLQogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBORVRfU05NUF9JTkNMVURFU19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4uaCBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2Rhcndpbi5oCmluZGV4IDZlYWYwOWYuLjVhMDY1YjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2Rhcndpbi5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2Rhcndpbi5oCkBAIC02LDggKzYsMyBAQAogICovCiAjdW5kZWYgSEFWRV9GU1RBQl9ICiAKLS8qCi0gKiBhcyBvZiA3LzIwMTAsIG9wZW5zc2wgb24gZGFyd2luIGRvZXMgbm90IGhhdmUgc2hhMjU2Ci0gKi8KLSNkZWZpbmUgT1BFTlNTTF9OT19TSEEyNTYgMQotI2RlZmluZSBPUEVOU1NMX05PX1NIQTUxMiAxCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4xMC5oIGIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luMTAuaAppbmRleCAyMzMzMDE1Li4zMDM3MzI0IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4xMC5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjEwLmgKQEAgLTY1LDYgKzY1LDcgQEAKIC8qCiAgKiB1c2UgbmV3IGhvc3QgcmVzb3VyY2VzIGZpbGVzIGFzIHdlbGwKICAqLworI2RlZmluZSBORVRTTk1QX0lOQ0xVREVfSE9TVF9SRVNPVVJDRVMKICNkZWZpbmUgTkVUU05NUF9JTkNMVURFX0hSU1dJTlNUX1JFV1JJVEVTCiAjZGVmaW5lIE5FVFNOTVBfSU5DTFVERV9IUlNXUlVOX1JFV1JJVEVTCiAjdW5kZWYgTkVUU05NUF9JTkNMVURFX0hSU1dSVU5fV1JJVEVfU1VQUE9SVApAQCAtOTIsMjUgKzkzLDYgQEAKICNlbmRpZgogCiAvKgotICogRGFyd2luJ3MgdG9vbHMgYXJlIGNhcGFibGUgb2YgYnVpbGRpbmcgbXVsdGlwbGUgYXJjaGl0ZWN0dXJlcyBpbiBvbmUgcGFzcy4KLSAqIEFzIGEgcmVzdWx0LCBwbGF0Zm9ybSBkZWZpbml0aW9ucyBzaG91bGQgYmUgZGVmZXJyZWQgdW50aWwgY29tcGlsZSB0aW1lLgotICovCi0jaWZkZWYgQllURV9PUkRFUgotIyB1bmRlZiBXT1JEU19CSUdFTkRJQU4KLSMgaWYgQllURV9PUkRFUiA9PSBCSUdfRU5ESUFOCi0jICBkZWZpbmUgV09SRFNfQklHRU5ESUFOIDEKLSMgZW5kaWYKLSNlbmRpZgotCi0vKgotICogQWx0aG91Z2ggRGFyd2luIGRvZXMgaGF2ZSBhIGt2bS5oIGZpbGUsIGt2bV9vcGVuZmlsZXMgZXRjLiBhbHdheXMKLSAqIHJldHVybiBudWxsIGJlY2F1c2UgL2Rldi9rbWVtIHdhcyByZW1vdmVkIGNvbXBsZXRlbHkgaW4gT1MgWCAxMC41LgotICovCi0jdW5kZWYgSEFWRV9LVk1fSAotI3VuZGVmIEhBVkVfS1ZNX0dFVFBST0NTCi0jdW5kZWYgSEFWRV9LVk1fT1BFTkZJTEVTCi0KLS8qCiAgKiBBbHRob3VnaCBEYXJ3aW4gZG9lcyBoYXZlIGFuIGZzdGFiLmggZmlsZSwgZ2V0ZnNmaWxlIGV0Yy4gYWx3YXlzIHJldHVybiBudWxsLgogICogQXQgbGVhc3QsIGFzIG9mIDUuMy4KICAqLwpAQCAtMTU0LDggKzEzNiwzIEBACiAjZGVmaW5lIFVEUF9BRERSRVNTRVNfSU5fSE9TVF9PUkRFUiAxCiAjZW5kaWYKIAotLyoKLSAqIGFzIG9mIDcvMjAxMCwgb3BlbnNzbCBvbiBkYXJ3aW4gZG9lcyBub3QgaGF2ZSBzaGEyNTYKLSAqLwotI2RlZmluZSBPUEVOU1NMX05PX1NIQTI1NiAxCi0jZGVmaW5lIE9QRU5TU0xfTk9fU0hBNTEyIDEKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjExLmggYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4xMS5oCmluZGV4IDI0ZmVkOTMuLjlkNmYwM2QgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjExLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luMTEuaApAQCAtNjUsNiArNjUsNyBAQAogLyoKICAqIHVzZSBuZXcgaG9zdCByZXNvdXJjZXMgZmlsZXMgYXMgd2VsbAogICovCisjZGVmaW5lIE5FVFNOTVBfSU5DTFVERV9IT1NUX1JFU09VUkNFUwogI2RlZmluZSBORVRTTk1QX0lOQ0xVREVfSFJTV0lOU1RfUkVXUklURVMKICNkZWZpbmUgTkVUU05NUF9JTkNMVURFX0hSU1dSVU5fUkVXUklURVMKICN1bmRlZiBORVRTTk1QX0lOQ0xVREVfSFJTV1JVTl9XUklURV9TVVBQT1JUCkBAIC05MiwyNSArOTMsNiBAQAogI2VuZGlmCiAKIC8qCi0gKiBEYXJ3aW4ncyB0b29scyBhcmUgY2FwYWJsZSBvZiBidWlsZGluZyBtdWx0aXBsZSBhcmNoaXRlY3R1cmVzIGluIG9uZSBwYXNzLgotICogQXMgYSByZXN1bHQsIHBsYXRmb3JtIGRlZmluaXRpb25zIHNob3VsZCBiZSBkZWZlcnJlZCB1bnRpbCBjb21waWxlIHRpbWUuCi0gKi8KLSNpZmRlZiBCWVRFX09SREVSCi0jIHVuZGVmIFdPUkRTX0JJR0VORElBTgotIyBpZiBCWVRFX09SREVSID09IEJJR19FTkRJQU4KLSMgIGRlZmluZSBXT1JEU19CSUdFTkRJQU4gMQotIyBlbmRpZgotI2VuZGlmCi0KLS8qCi0gKiBBbHRob3VnaCBEYXJ3aW4gZG9lcyBoYXZlIGEga3ZtLmggZmlsZSwga3ZtX29wZW5maWxlcyBldGMuIGFsd2F5cwotICogcmV0dXJuIG51bGwgYmVjYXVzZSAvZGV2L2ttZW0gd2FzIHJlbW92ZWQgY29tcGxldGVseSBpbiBPUyBYIDEwLjUuCi0gKi8KLSN1bmRlZiBIQVZFX0tWTV9ICi0jdW5kZWYgSEFWRV9LVk1fR0VUUFJPQ1MKLSN1bmRlZiBIQVZFX0tWTV9PUEVORklMRVMKLQotLyoKICAqIEFsdGhvdWdoIERhcndpbiBkb2VzIGhhdmUgYW4gZnN0YWIuaCBmaWxlLCBnZXRmc2ZpbGUgZXRjLiBhbHdheXMgcmV0dXJuIG51bGwuCiAgKiBBdCBsZWFzdCwgYXMgb2YgNS4zLgogICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4xMi5oIGIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luMTIuaAppbmRleCBmZDY2MTQ3Li4zMDMxZDA0IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4xMi5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjEyLmgKQEAgLTY1LDYgKzY1LDcgQEAKIC8qCiAgKiB1c2UgbmV3IGhvc3QgcmVzb3VyY2VzIGZpbGVzIGFzIHdlbGwKICAqLworI2RlZmluZSBORVRTTk1QX0lOQ0xVREVfSE9TVF9SRVNPVVJDRVMKICNkZWZpbmUgTkVUU05NUF9JTkNMVURFX0hSU1dJTlNUX1JFV1JJVEVTCiAjZGVmaW5lIE5FVFNOTVBfSU5DTFVERV9IUlNXUlVOX1JFV1JJVEVTCiAjdW5kZWYgTkVUU05NUF9JTkNMVURFX0hSU1dSVU5fV1JJVEVfU1VQUE9SVApAQCAtOTIsMjUgKzkzLDYgQEAKICNlbmRpZgogCiAvKgotICogRGFyd2luJ3MgdG9vbHMgYXJlIGNhcGFibGUgb2YgYnVpbGRpbmcgbXVsdGlwbGUgYXJjaGl0ZWN0dXJlcyBpbiBvbmUgcGFzcy4KLSAqIEFzIGEgcmVzdWx0LCBwbGF0Zm9ybSBkZWZpbml0aW9ucyBzaG91bGQgYmUgZGVmZXJyZWQgdW50aWwgY29tcGlsZSB0aW1lLgotICovCi0jaWZkZWYgQllURV9PUkRFUgotIyB1bmRlZiBXT1JEU19CSUdFTkRJQU4KLSMgaWYgQllURV9PUkRFUiA9PSBCSUdfRU5ESUFOCi0jICBkZWZpbmUgV09SRFNfQklHRU5ESUFOIDEKLSMgZW5kaWYKLSNlbmRpZgotCi0vKgotICogQWx0aG91Z2ggRGFyd2luIGRvZXMgaGF2ZSBhIGt2bS5oIGZpbGUsIGt2bV9vcGVuZmlsZXMgZXRjLiBhbHdheXMKLSAqIHJldHVybiBudWxsIGJlY2F1c2UgL2Rldi9rbWVtIHdhcyByZW1vdmVkIGNvbXBsZXRlbHkgaW4gT1MgWCAxMC41LgotICovCi0jdW5kZWYgSEFWRV9LVk1fSAotI3VuZGVmIEhBVkVfS1ZNX0dFVFBST0NTCi0jdW5kZWYgSEFWRV9LVk1fT1BFTkZJTEVTCi0KLS8qCiAgKiBBbHRob3VnaCBEYXJ3aW4gZG9lcyBoYXZlIGFuIGZzdGFiLmggZmlsZSwgZ2V0ZnNmaWxlIGV0Yy4gYWx3YXlzIHJldHVybiBudWxsLgogICogQXQgbGVhc3QsIGFzIG9mIDUuMy4KICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luNy5oIGIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luNy5oCmluZGV4IGY4ZjUyMWUuLjhkNDU1NGQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjcuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW43LmgKQEAgLTEzLDggKzEzLDMgQEAKICNkZWZpbmUgU1dBUEZJTEVfRElSICIvcHJpdmF0ZS92YXIvdm0iCiAjZGVmaW5lIFNXQVBGSUxFX1BSRUZJWCAic3dhcGZpbGUiCiAKLS8qCi0gKiBhcyBvZiA3LzIwMTAsIG9wZW5zc2wgb24gZGFyd2luIGRvZXMgbm90IGhhdmUgc2hhMjU2Ci0gKi8KLSNkZWZpbmUgT1BFTlNTTF9OT19TSEEyNTYgMQotI2RlZmluZSBPUEVOU1NMX05PX1NIQTUxMiAxCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW44LmggYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW44LmgKaW5kZXggYzM4MjgzZS4uMWU2ZDdkMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luOC5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjguaApAQCAtNjMsMTQgKzYzLDYgQEAKICNlbmRpZgogCiAvKgotICogQWx0aG91Z2ggRGFyd2luIGRvZXMgaGF2ZSBhIGt2bS5oIGZpbGUsIGt2bV9vcGVuZmlsZXMgZXRjLiBhbHdheXMKLSAqIHJldHVybiBudWxsIGJlY2F1c2UgL2Rldi9rbWVtIHdhcyByZW1vdmVkIGluIE9TIFggMTAuNCBmb3IgSW50ZWwuCi0gKi8KLSN1bmRlZiBIQVZFX0tWTV9ICi0jdW5kZWYgSEFWRV9LVk1fR0VUUFJPQ1MKLSN1bmRlZiBIQVZFX0tWTV9PUEVORklMRVMKLQotLyoKICAqIEFsdGhvdWdoIERhcndpbiBkb2VzIGhhdmUgYW4gZnN0YWIuaCBmaWxlLCBnZXRmc2ZpbGUgZXRjLiBhbHdheXMgcmV0dXJuIG51bGwuCiAgKiBBdCBsZWFzdCwgYXMgb2YgNS4zLgogICovCkBAIC0xMDAsOCArOTIsMyBAQAogLyogI2RlZmluZSBVU0VfVU5JRklFRF9JUFY2X1NUUlVDVFMgMSAqLwogI3VuZGVmIFNUUlVDVF9pbjZwY2JfSEFTX2lucF92ZmxhZwogCi0vKgotICogYXMgb2YgNy8yMDEwLCBvcGVuc3NsIG9uIGRhcndpbiBkb2VzIG5vdCBoYXZlIHNoYTI1NgotICovCi0jZGVmaW5lIE9QRU5TU0xfTk9fU0hBMjU2IDEKLSNkZWZpbmUgT1BFTlNTTF9OT19TSEE1MTIgMQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luOS5oIGIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luOS5oCmluZGV4IGJjYmQwNjcuLmJmM2QyZGMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjkuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW45LmgKQEAgLTkyLDI1ICs5Miw2IEBACiAjZW5kaWYKIAogLyoKLSAqIERhcndpbidzIHRvb2xzIGFyZSBjYXBhYmxlIG9mIGJ1aWxkaW5nIG11bHRpcGxlIGFyY2hpdGVjdHVyZXMgaW4gb25lIHBhc3MuCi0gKiBBcyBhIHJlc3VsdCwgcGxhdGZvcm0gZGVmaW5pdGlvbnMgc2hvdWxkIGJlIGRlZmVycmVkIHVudGlsIGNvbXBpbGUgdGltZS4KLSAqLwotI2lmZGVmIEJZVEVfT1JERVIKLSMgdW5kZWYgV09SRFNfQklHRU5ESUFOCi0jIGlmIEJZVEVfT1JERVIgPT0gQklHX0VORElBTgotIyAgZGVmaW5lIFdPUkRTX0JJR0VORElBTiAxCi0jIGVuZGlmCi0jZW5kaWYKLQotLyoKLSAqIEFsdGhvdWdoIERhcndpbiBkb2VzIGhhdmUgYSBrdm0uaCBmaWxlLCBrdm1fb3BlbmZpbGVzIGV0Yy4gYWx3YXlzCi0gKiByZXR1cm4gbnVsbCBiZWNhdXNlIC9kZXYva21lbSB3YXMgcmVtb3ZlZCBjb21wbGV0ZWx5IGluIE9TIFggMTAuNS4KLSAqLwotI3VuZGVmIEhBVkVfS1ZNX0gKLSN1bmRlZiBIQVZFX0tWTV9HRVRQUk9DUwotI3VuZGVmIEhBVkVfS1ZNX09QRU5GSUxFUwotCi0vKgogICogQWx0aG91Z2ggRGFyd2luIGRvZXMgaGF2ZSBhbiBmc3RhYi5oIGZpbGUsIGdldGZzZmlsZSBldGMuIGFsd2F5cyByZXR1cm4gbnVsbC4KICAqIEF0IGxlYXN0LCBhcyBvZiA1LjMuCiAgKi8KQEAgLTE1NCw4ICsxMzUsMyBAQAogI2RlZmluZSBVRFBfQUREUkVTU0VTX0lOX0hPU1RfT1JERVIgMQogI2VuZGlmCiAKLS8qCi0gKiBhcyBvZiA3LzIwMTAsIG9wZW5zc2wgb24gZGFyd2luIGRvZXMgbm90IGhhdmUgc2hhMjU2Ci0gKi8KLSNkZWZpbmUgT1BFTlNTTF9OT19TSEEyNTYgMQotI2RlZmluZSBPUEVOU1NMX05PX1NIQTUxMiAxCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggYi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKaW5kZXggNTY5NWY4Yi4uOTVkMjU3NiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtNTQsNiArNTQsMTkgQEAKICMgZW5kaWYKICNlbmRpZgogCisjaWYgZGVmaW5lZChXSU4zMikgJiYgIWRlZmluZWQoY3lnd2luKQordHlwZWRlZiBIQU5ETEUgbmV0c25tcF9waWRfdDsKKyNkZWZpbmUgTkVUU05NUF9OT19TVUNIX1BST0NFU1MgSU5WQUxJRF9IQU5ETEVfVkFMVUUKKyNlbHNlCisvKgorICogTm90ZTogb24gUE9TSVgtY29tcGxpYW50IHN5c3RlbXMsIHBpZF90IGlzIGRlZmluZWQgaW4gPHN5cy90eXBlcy5oPi4KKyAqIEFuZCBpZiBwaWRfdCBoYXMgbm90IGJlZW4gZGVmaW5lZCBpbiA8c3lzL3R5cGVzLmg+LCBBQ19UWVBFX1BJRF9UIGVuc3VyZXMKKyAqIHRoYXQgYSBwaWRfdCBkZWZpbml0aW9uIGlzIHByZXNlbnQgaW4gbmV0LXNubXAtY29uZmlnLmguCisgKi8KK3R5cGVkZWYgcGlkX3QgbmV0c25tcF9waWRfdDsKKyNkZWZpbmUgTkVUU05NUF9OT19TVUNIX1BST0NFU1MgLTEKKyNlbmRpZgorCiAjaWYgSEFWRV9ORVRJTkVUX0lOX0gKICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CQkvKiBGb3IgZGVmaW5pdGlvbiBvZiBpbl9hZGRyX3QgKi8KICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5zdGFsbC1zaCBiL2luc3RhbGwtc2gKaW5kZXggYTU4OTdkZS4uM2Y4M2NlOSAxMDA3NTUKLS0tIGEvaW5zdGFsbC1zaAorKysgYi9pbnN0YWxsLXNoCkBAIC0xLDcgKzEsNyBAQAogIyEvYmluL3NoCiAjIGluc3RhbGwgLSBpbnN0YWxsIGEgcHJvZ3JhbSwgc2NyaXB0LCBvciBkYXRhZmlsZQogCi1zY3JpcHR2ZXJzaW9uPTIwMDYtMTItMjUuMDAKK3NjcmlwdHZlcnNpb249MjAxMC0wMi0wNi4xODsgIyBVVEMKIAogIyBUaGlzIG9yaWdpbmF0ZXMgZnJvbSBYMTFSNSAobWl0L3V0aWwvc2NyaXB0cy9pbnN0YWxsLnNoKSwgd2hpY2ggd2FzCiAjIGxhdGVyIHJlbGVhc2VkIGluIFgxMVI2ICh4Yy9jb25maWcvdXRpbC9pbnN0YWxsLnNoKSB3aXRoIHRoZQpAQCAtMjAwLDcgKzIwMCwxMSBAQAogZmkKIAogaWYgdGVzdCAteiAiJGRpcl9hcmciOyB0aGVuCi0gIHRyYXAgJyhleGl0ICQ/KTsgZXhpdCcgMSAyIDEzIDE1CisgIGRvX2V4aXQ9JyhleGl0ICRyZXQpOyBleGl0ICRyZXQnCisgIHRyYXAgInJldD0xMjk7ICRkb19leGl0IiAxCisgIHRyYXAgInJldD0xMzA7ICRkb19leGl0IiAyCisgIHRyYXAgInJldD0xNDE7ICRkb19leGl0IiAxMworICB0cmFwICJyZXQ9MTQzOyAkZG9fZXhpdCIgMTUKIAogICAjIFNldCB1bWFzayBzbyBhcyBub3QgdG8gY3JlYXRlIHRlbXBzIHdpdGggdG9vLWdlbmVyb3VzIG1vZGVzLgogICAjIEhvd2V2ZXIsICdzdHJpcCcgcmVxdWlyZXMgYm90aCByZWFkIGFuZCB3cml0ZSBhY2Nlc3MgdG8gdGVtcHMuCkBAIC01MTUsNSArNTE5LDYgQEAKICMgZXZhbDogKGFkZC1ob29rICd3cml0ZS1maWxlLWhvb2tzICd0aW1lLXN0YW1wKQogIyB0aW1lLXN0YW1wLXN0YXJ0OiAic2NyaXB0dmVyc2lvbj0iCiAjIHRpbWUtc3RhbXAtZm9ybWF0OiAiJTp5LSUwMm0tJTAyZC4lMDJIIgotIyB0aW1lLXN0YW1wLWVuZDogIiQiCisjIHRpbWUtc3RhbXAtdGltZS16b25lOiAiVVRDIgorIyB0aW1lLXN0YW1wLWVuZDogIjsgIyBVVEMiCiAjIEVuZDoKZGlmZiAtLWdpdCBhL2xvY2FsL01ha2VmaWxlLmluIGIvbG9jYWwvTWFrZWZpbGUuaW4KaW5kZXggZGY4MWRiMC4uY2I4NGFmYyAxMDA2NDQKLS0tIGEvbG9jYWwvTWFrZWZpbGUuaW4KKysrIGIvbG9jYWwvTWFrZWZpbGUuaW4KQEAgLTEzMCw5ICsxMzAsOSBAQAogCSAgdG91Y2ggZml4cHJvYy5tYWRlOyBcCiAgICAgICAgIGZpCiAKLXNubXBjb25mLm1hZGU6ICQoc3JjZGlyKS9zbm1wY29uZgorc25tcGNvbmYubWFkZTogc25tcGNvbmYKIAlpZiB0ZXN0ICJ4JChQRVJMKSIgIT0gIngiIDsgdGhlbiBcCi0JICAkKFBFUkwpIC1wIC1lICdzJV4jIS4qL3BlcmwuKiUjISQoUEVSTCklOyBzIy91c3IvbG9jYWwvc2hhcmUjJChkYXRhZGlyKSNnOyBzIy91c3IvbG9jYWwvZXRjL3NubXAjJChTTk1QQ09ORlBBVEgpI2c7IHMjL3Zhci9uZXQtc25tcCMkKFBFUlNJU1RFTlRfRElSRUNUT1JZKSNnJyAke3NyY2Rpcn0vc25tcGNvbmYgPiBzbm1wY29uZi5tYWRlOyBcCisJICAkKFBFUkwpIC1wIC1lICdzJV4jIS4qL3BlcmwuKiUjISQoUEVSTCklOyBzIy91c3IvbG9jYWwvc2hhcmUjJChkYXRhZGlyKSNnOyBzIy91c3IvbG9jYWwvZXRjL3NubXAjJChTTk1QQ09ORlBBVEgpI2c7IHMjL3Zhci9uZXQtc25tcCMkKFBFUlNJU1RFTlRfRElSRUNUT1JZKSNnJyBzbm1wY29uZiA+IHNubXBjb25mLm1hZGU7IFwKIAllbHNlIFwKIAkgIHRvdWNoIHNubXBjb25mLm1hZGU7IFwKICAgICAgICAgZmkKZGlmZiAtLWdpdCBhL2xvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLXNvdXJjZS1pbmNsdWRlcy5tMmkgYi9sb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1zb3VyY2UtaW5jbHVkZXMubTJpCmluZGV4IGIyYjQyNWUuLjkzNDFjZjkgMTAwNjQ0Ci0tLSBhL2xvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLXNvdXJjZS1pbmNsdWRlcy5tMmkKKysrIGIvbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtc291cmNlLWluY2x1ZGVzLm0yaQpAQCAtMTAsNiArMTAsNyBAQAogIyMKIC8qIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKZGlmZiAtLWdpdCBhL2xvY2FsL21pYjJjLWNvbmYuZC9tZmQtaW50ZXJmYWNlLm0yYyBiL2xvY2FsL21pYjJjLWNvbmYuZC9tZmQtaW50ZXJmYWNlLm0yYwppbmRleCA0MjM1MWM5Li5kNjY2YzlhIDEwMDY0NAotLS0gYS9sb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyZmFjZS5tMmMKKysrIGIvbG9jYWwvbWliMmMtY29uZi5kL21mZC1pbnRlcmZhY2UubTJjCkBAIC0xMTgsNiArMTE4LDEwIEBACiAKICNpbmNsdWRlICIke25hbWV9X2ludGVyZmFjZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShiYWJ5X3N0ZXBzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKQorCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAogQGV2YWwgJG0yY19wcm9jZXNzaW5nX3R5cGUgPSAnaSdACkBAIC0zMjgsNyArMzMyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtjb250ZXh0fV9vaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7Y29udGV4dH1fb2lkX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX0JBQllfU1RFUCB8Ci0jaWZkZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWQogI2Vsc2UKIEBpZiAkbTJjX3RhYmxlX3NldHRhYmxlID09IDFACkBAIC0zMzYsNyArMzQwLDcgQEAKIEBlbHNlQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWQogQGVuZEAKLSNlbmRpZiAvKiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgaWYoTlVMTCA9PSByZWdpbmZvKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsImVycm9yIHJlZ2lzdGVyaW5nIHRhYmxlICR7Y29udGV4dH1cbiIpOwpAQCAtMzU1LDcgKzM1OSw3IEBACiAgICAgaWYoIGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0ICkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9QT1NUX1JFUVVFU1Q7CiAgICAgCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKICAgICBpZiggYWNjZXNzX211bHRpcGxleGVyLT5zZXRfdmFsdWVzICkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9TRVRfVkFMVUVTOwogICAgIGlmKCBhY2Nlc3NfbXVsdGlwbGV4ZXItPmlycmV2ZXJzaWJsZV9jb21taXQgKQpAQCAtMzc4LDcgKzM4Miw3IEBACiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfQ09NTUlUOwogICAgIGlmKCBhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fY29tbWl0ICkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX0NPTU1JVDsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KICAgICAKICAgICBoYW5kbGVyID0gbmV0c25tcF9iYWJ5X3N0ZXBzX2hhbmRsZXJfZ2V0KG1mZF9tb2Rlcyk7CiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKZGlmZiAtLWdpdCBhL2xvY2FsL21pYjJjLWNvbmYuZC9zdWJhZ2VudC5tMmMgYi9sb2NhbC9taWIyYy1jb25mLmQvc3ViYWdlbnQubTJjCmluZGV4IDUyYTgyNTguLjYxZmMyNmQgMTAwNjQ0Ci0tLSBhL2xvY2FsL21pYjJjLWNvbmYuZC9zdWJhZ2VudC5tMmMKKysrIGIvbG9jYWwvbWliMmMtY29uZi5kL3N1YmFnZW50Lm0yYwpAQCAtMjcsNiArMjcsMTggQEAKIEBpbmNsdWRlIGdlbmVyaWMtc291cmNlLWluY2x1ZGVzLm0yaUAKICNpbmNsdWRlIDxzaWduYWwuaD4KIAorLyoKKyAqIElmIGNvbXBpbGluZyB3aXRoaW4gdGhlIG5ldC1zbm1wIHNvdXJjZSBjb2RlLCB0aGlzIHdpbGwgdHJpZ2dlciB0aGUgZmVhdHVyZQorICogZGV0ZWN0aW9uIG1lY2hhbnNpbSB0byBlbnN1cmUgdGhlIGFnZW50X2NoZWNrX2FuZF9wcm9jZXNzKCkgZnVuY3Rpb24KKyAqIGlzIGxlZnQgYXZhaWxhYmxlIGV2ZW4gaWYgLS1lbmFibGUtbWluaW1pYWxpc3QgaXMgdHVybmVkIG9uLiAgSWYgeW91CisgKiBoYXZlIGNvbmZpZ3VyZWQgbmV0LXNubXAgdXNpbmcgLS1lbmFibGUtbWluaW1pYWxpc3QgYW5kIHdhbnQgdG8gY29tcGlsZQorICogdGhpcyBjb2RlIGV4dGVybmFsbHkgdG8gdGhlIE5ldC1TTk1QIGNvZGUgYmFzZSwgdGhlbiBwbGVhc2UgYWRkCisgKiAtLXdpdGgtZmVhdHVyZXM9ImFnZW50X2NoZWNrX2FuZF9wcm9jZXNzIGVuYWJsZV9zdGRlcnJsb2ciIHRvIHlvdXIKKyAqIGNvbmZpZ3VyZSBsaW5lLgorICovCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShhZ2VudF9jaGVja19hbmRfcHJvY2VzcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGVuYWJsZV9zdGRlcnJsb2cpCisKIHN0YXRpYyBpbnQga2VlcF9ydW5uaW5nOwogCiBzdGF0aWMgUkVUU0lHVFlQRQpkaWZmIC0tZ2l0IGEvbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLWNoZWNrIGIvbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLWNoZWNrCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmFhNDk4N2UKLS0tIC9kZXYvbnVsbAorKysgYi9sb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtY2hlY2sKQEAgLTAsMCArMSwxMjYgQEAKKyMhL2Jpbi9zaAorCisjCisjIGZlYXR1cmUtY2hlY2s6IFRoaXMgc2NyaXB0IGxvb2tzIGZvciBmZWF0dXJlIHN0YXRlbWVudHMgaW4gYSBmaWxlIGJ5CisjIGV4ZWN1dGluZyBhIGNvbXBpbGVyIHVuZGVyIENQUCBhbmQgZXh0cmFjdGluZyBsaW5lcyBvZiB0aGUgZm9sbG93aW5nCisjIGZvcm06CisjCisjIG5ldHNubXBfZmVhdHVyZV9wcm92aWRlcyhmb28pOiB1c2VkIHRvIGluZGljYXRlIGl0IHByb3ZpZGVzIGZlYXR1cmUgImZvbyIKKyMgbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFyKTogdXNlZCB0byBpbmRpY2F0ZSBpdCByZXF1aXJlcyBmZWF0dXJlICJiYXIiCisjIG5ldHNubXBfZmVhdHVyZV93YW50KGJhcik6IHVzZWQgdG8gaW5kaWNhdGUgaXQgd2FudHMgZmVhdHVyZSAiYmFyIgorIyAgICAgICAgICAgICAgICAgICAgKGJ1dCBjYW4gbGl2ZSB3aXRob3V0IGl0KQorIworIyBVc2luZyB0aGVzZSBsaW5lcyBpdCB0aGVuIGdlbmVyYXRlcyBhIGxpc3Qgb2YgZmVhdHVyZSByZXF1aXJlbWVudAorIyBkZWZpbmVzIGluICJpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgiIHdoaWNoIGNhbiB0aGVuIGJlCisjIGxvYWRlZCBpbiBsYXRlciBwYXNzZXMgYXQgY29tcGlsZSB0aW1lLgorIworIyBEZWZpbmVzIHByb2R1Y2VkIHdoZW4gbmV0c25tcF9mZWF0cmVfcmVxdWlyZShiYXIpIGlzIHByZXNlbnQ6CisjICAgI2RlZmluZSBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9CQVIgMQorIworIyBEZWZpbmVzIHByb2R1Y2VkIHdoZW4gbmV0c25tcF9mZWF0dXJlX3dhbnQoYmFyKSBpcyBwcmVzZW50OgorIyAgICNkZWZpbmUgTkVUU05NUF9GRUFUVVJFX1dBTlRfQkFSIDEKKyMKKyMgQW5kIHdoZW4gYWxsIHRoZSBmZWF0dXJlcyBoYXZlIGJlZW4gY29sbGVjdGVkLCB0aGV5IGFyZSBhbHNvIGludmVydGVkIHZpYQorIyB0aGUgZmVhdHVyZS1wb3N0LWNoZWNrIHNjcmlwdDoKKyMKKyMgICAjZGVmaW5lIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQkFSWCAxICAvKiBuZXZlciByZXF1aXJlZCAqLworIyAgICN1bmRlZiAgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9CQVIgICAgICAvKiByZXF1aXJlZCAqLworCisjIFVzYWdlOgorCisjIGZlYXR1cmUtY2hlY2sgTk9STUFMLUNPTVBJTEUtTElORQorCitTRUQ9c2VkCitHUkVQPWdyZXAKK0NDPWdjYworUk09cm0KKworaWYgdGVzdCAieCQxIiA9ICJ4LS1mZWF0dXJlLWdsb2JhbCIgOyB0aGVuCisgICAgIyBhIGdsb2JhbCBmaWxlIHNob3VsZCBiZSBpbmNsdWRlZAorICAgIHNoaWZ0CisgICAgZ2xvYmFsPSQxCisgICAgc2hpZnQKK2ZpCisKK3NvdXJjZWRpcj0kMQorc2hpZnQKKworc291cmNlPSQxCitzaGlmdAorCitkZXN0aW5hdGlvbj0kMQorc2hpZnQKKwordG1wZj0iJGRlc3RpbmF0aW9uLjEiCisKK2NvbXBpbGVsaW5lPSIkQCIKKyRjb21waWxlbGluZSAnLURORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTkc9MScgXAorICAgICAgICAgICAgICctRE5FVFNOTVBfTUlOSU1BTF9DT0RFPTEnIFwKKyAgICAgICAgICAgICAnLURuZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShYKT1YIE5TRl9SUicgXAorICAgICAgICAgICAgICctRG5ldHNubXBfZmVhdHVyZV9wcm92aWRlKFgpPVggTlNGX1BQJyBcCisgICAgICAgICAgICAgJy1EbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKFgsWSk9WCxZIE5TRl9DTycgXAorICAgICAgICAgICAgICctRG5ldHNubXBfZmVhdHVyZV93YW50KFgpPVggTlNGX1dXJyAkc291cmNlIHwgXAorICAgICRHUkVQIE5TRl8gfCAkR1JFUCAtdiAnXiNkZWZpbmUnID4gJHRtcGYKKworJFJNIC1mICRkZXN0aW5hdGlvbjsKK3RvdWNoICRkZXN0aW5hdGlvbjsKKworIyBwcm9jZXNzIHJlcXVpcmVzCitmaXJzdHJlcXVpcmU9MQorZm9yIGkgaW4gYGdyZXAgTlNGX1JSICR0bXBmIHwgc2VkICdzLyBOU0ZfUlIvLydgIDsgZG8KKyAgICBpZiB0ZXN0ICRmaXJzdHJlcXVpcmUgPSAxIDsgdGhlbgorCWVjaG8gIiIgPj4gJGRlc3RpbmF0aW9uCisJZWNobyAiLyogcmVxdWlyZWQgYnkgJHNvdXJjZWRpci8kc291cmNlICovIiA+PiAkZGVzdGluYXRpb24KKwlmaXJzdHJlcXVpcmU9MAorICAgIGZpCisgICAgdXBwZXI9YGVjaG8gJGkgfCB0ciBhLXogQS1aYAorICAgIGVjaG8gIiNkZWZpbmUgTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfJHVwcGVyIDEiID4+ICRkZXN0aW5hdGlvbgorZG9uZQorCisjIHByb2Nlc3MgcHJvdmlkZXMKK2ZpcnN0ZmVhdHVyZT0xCitmb3IgaSBpbiBgZ3JlcCBOU0ZfUFAgJHRtcGYgfCBzZWQgJ3MvIE5TRl9QUC8vJ2AgOyBkbworICAgIGlmIHRlc3QgJGZpcnN0ZmVhdHVyZSA9IDEgOyB0aGVuCisJZWNobyAiIiA+PiAkZGVzdGluYXRpb24KKwllY2hvICIvKiBmZWF0dXJlcyBwcm92aWRlZCBieSAkc291cmNlZGlyLyRzb3VyY2UgKi8iID4+ICRkZXN0aW5hdGlvbgorCWZpcnN0ZmVhdHVyZT0wCisgICAgZmkKKyAgICB1cHBlcj1gZWNobyAkaSB8IHRyIGEteiBBLVpgCisgICAgZWNobyAiI2RlZmluZSBORVRTTk1QX0ZFQVRVUkVfUFJPVklERV8kdXBwZXIgMSIgPj4gJGRlc3RpbmF0aW9uCitkb25lCisKKyMgcHJvY2VzcyBjaGlsZHJlbgorZmlyc3RmZWF0dXJlPTEKK2ZvciBpIGluIGBncmVwIE5TRl9DTyAkdG1wZiB8IHNlZCAncy8gTlNGX0NPLy8nYCA7IGRvCisgICAgcGFyZW50PWBlY2hvICRpIHwgc2VkICdzLy4qLC8vJ2AKKyAgICBjaGlsZD1gZWNobyAkaSB8IHNlZCAncy8sLiovLydgCisgICAgaWYgdGVzdCAkZmlyc3RmZWF0dXJlID0gMSA7IHRoZW4KKwllY2hvICIiID4+ICRkZXN0aW5hdGlvbgorCWVjaG8gIi8qIGZlYXR1cmVzIHByb3ZpZGVkIGJ5ICRzb3VyY2VkaXIvJHNvdXJjZSAqLyIgPj4gJGRlc3RpbmF0aW9uCisJZmlyc3RmZWF0dXJlPTAKKyAgICBmaQorICAgIHVwcGVyY2hpbGQ9YGVjaG8gJGNoaWxkIHwgdHIgYS16IEEtWmAKKyAgICB1cHBlcnBhcmVudD1gZWNobyAkcGFyZW50IHwgdHIgYS16IEEtWmAKKyAgICBlY2hvICIjZGVmaW5lIE5FVFNOTVBfRkVBVFVSRV8ke3VwcGVyY2hpbGR9X0NISUxEX09GXyR7dXBwZXJwYXJlbnR9IDEiID4+ICRkZXN0aW5hdGlvbgorICAgIGVjaG8gIiNkZWZpbmUgTkVUU05NUF9GRUFUVVJFX1BST1ZJREVfJHVwcGVyY2hpbGQgMSIgPj4gJGRlc3RpbmF0aW9uCitkb25lCisKKyMgcHJvY2VzcyB3YW50cworZmlyc3RmZWF0dXJlPTEKK2ZvciBpIGluIGBncmVwIE5TRl9XVyAkdG1wZiB8IHNlZCAncy8gTlNGX1dXLy8nYCA7IGRvCisgICAgaWYgdGVzdCAkZmlyc3RmZWF0dXJlID0gMSA7IHRoZW4KKwllY2hvICIiID4+ICRkZXN0aW5hdGlvbgorCWVjaG8gIi8qIGZlYXR1cmVzIHdhbnRlZCBieSAkc291cmNlZGlyLyRzb3VyY2UgKi8iID4+ICRkZXN0aW5hdGlvbgorCWZpcnN0ZmVhdHVyZT0wCisgICAgZmkKKyAgICB1cHBlcj1gZWNobyAkaSB8IHRyIGEteiBBLVpgCisgICAgZWNobyAiI2RlZmluZSBORVRTTk1QX0ZFQVRVUkVfV0FOVF8kdXBwZXIgMSIgPj4gJGRlc3RpbmF0aW9uCitkb25lCisKK2lmIHRlc3QgIngkZ2xvYmFsIiAhPSAieCIgOyB0aGVuCisgICAgY2F0ICRkZXN0aW5hdGlvbiA+PiAkZ2xvYmFsCitmaQorCisKKyMgY2xlYW4gdXAKKyMkUk0gLWYgJHRtcGYKZGlmZiAtLWdpdCBhL2xvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1tYWtlZG9jcyBiL2xvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1tYWtlZG9jcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTYwMTkxCi0tLSAvZGV2L251bGwKKysrIGIvbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzCkBAIC0wLDAgKzEsMjIxIEBACisjIS91c3IvYmluL3BlcmwKKwordXNlIHN0cmljdDsKK3VzZSBJTzo6RmlsZTsKK3VzZSBHZXRvcHQ6OlN0ZDsKK291ciAlb3B0cyA9IChXID0+IDIpOworCitnZXRvcHRzKCdvaHdXOicsIFwlb3B0cykgfHwgdXNhZ2UoKTsKKwordXNhZ2UoKSBpZiAoJG9wdHN7J2gnfSk7CisKK3VzYWdlKCkgaWYgKCQjQVJHViAhPSAxKTsKKworIyBzaG91bGQgYmUgdGhlIGZlYXR1cmUtZGV0YWlscy5oIGZpbGUKK215ICRpbnB1dGZpbGUgPSBzaGlmdCBAQVJHVjsKK215ICRvdXRwdXRmaWxlID0gc2hpZnQgQEFSR1Y7CisKK215ICVmZWF0dXJlczsKK215ICV0b3A7CitteSAlZmlsZXM7CitteSAkcmVxZmlsZTsKKworZ2F0aGVyX2RhdGEoJGlucHV0ZmlsZSk7CitpZiAoJG9wdHN7J3cnfSkgeworICAgIHByaW50X3dpa2lfbW9kZSgkb3V0cHV0ZmlsZSk7Cit9IGVsc2UgeworICAgIHByaW50X29yZ19tb2RlKCRvdXRwdXRmaWxlKTsKK30KKworc3ViIGdhdGhlcl9kYXRhIHsKKyAgICBteSAoJGlucHV0ZmlsZSkgPSBAXzsKKworICAgIG9wZW4oSSwgJGlucHV0ZmlsZSk7CisgICAgd2hpbGUoPEk+KSB7CisJaWYgKC8ocmVxdWlyZWR8cHJvdmlkZWR8d2FudGVkKSBieSAoLiopIFwqLykgeworCSAgICAkcmVxZmlsZSA9ICQyOworCX0gZWxzaWYgKC9kZWZpbmUgTkVUU05NUF9GRUFUVVJFX1BST1ZJREVfKC4qKSAxLykgeworCSAgICBteSAkbGMgPSBsYygkMSk7CisJICAgIGRpZSAibm8gcmVxZmlsZSBjdXJyZW50bHkgc2V0OyBidWchIiBpZiAoIWRlZmluZWQoJHJlcWZpbGUpKTsKKworCSAgICBhZGQoJGxjKTsKKworCSAgICBwdXNoIEB7JGZpbGVzeyRyZXFmaWxlfXsncHJvdmlkZXMnfX0sICRsYzsKKwkgICAgcHVzaCBAeyRmZWF0dXJlc3skbGN9eydwcm92aWRlZGJ5J319LCAkcmVxZmlsZTsKKworCX0gZWxzaWYgKC9kZWZpbmUgTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfKC4qKSAxLykgeworCSAgICBteSAkbGMgPSBsYygkMSk7CisJICAgIGRpZSAibm8gcmVxZmlsZSBjdXJyZW50bHkgc2V0OyBidWchIiBpZiAoIWRlZmluZWQoJHJlcWZpbGUpKTsKKworCSAgICBhZGQoJGxjKTsKKworCSAgICBwdXNoIEB7JGZpbGVzeyRyZXFmaWxlfXsncmVxdWlyZXMnfX0sICRsYzsKKwkgICAgcHVzaCBAeyRmZWF0dXJlc3skbGN9eydyZXF1aXJlZGJ5J319LCAkcmVxZmlsZTsKKworCX0gZWxzaWYgKC9kZWZpbmUgTkVUU05NUF9GRUFUVVJFX1dBTlRfKC4qKSAxLykgeworCSAgICBteSAkbGMgPSBsYygkMSk7CisJICAgIGRpZSAibm8gcmVxZmlsZSBjdXJyZW50bHkgc2V0OyBidWchIiBpZiAoIWRlZmluZWQoJHJlcWZpbGUpKTsKKworCSAgICBhZGQoJGxjKTsKKworCSAgICBwdXNoIEB7JGZpbGVzeyRyZXFmaWxlfXsnd2FudHMnfX0sICRsYzsKKwkgICAgcHVzaCBAeyRmZWF0dXJlc3skbGN9eyd3YW50ZWRieSd9fSwgJHJlcWZpbGU7CisJfSBlbHNpZiAoL2RlZmluZSBORVRTTk1QX0ZFQVRVUkVfKC4qKV9DSElMRF9PRl8oLiopIDEvKSB7CisJICAgIG15ICRjaGlsZCA9IGxjKCQxKTsKKwkgICAgbXkgJHBhcmVudCA9IGxjKCQyKTsKKworCSAgICBhZGRfY2hpbGQoJGNoaWxkLCAkcGFyZW50KTsKKwl9CisgICAgfQorfQorCitzdWIgYWRkIHsKKyAgICBteSAoJG5hbWUpID0gQF87CisgICAgaWYgKCFleGlzdHMoJGZlYXR1cmVzeyRuYW1lfSkpIHsKKwkjIG5ldyBmZWF0dXJlIGVudGlyZWx5LCBtYXJrIGl0IGFzIGEgdG9wIG5vZGUKKwkkdG9weyRuYW1lfSA9IDE7CisgICAgfQorfQorCitzdWIgYWRkX2NoaWxkIHsKKyAgICBteSAoJGNoaWxkLCAkcGFyZW50KSA9IEBfOworCisgICAgYWRkKCRwYXJlbnQpOworCisgICAgaWYgKGV4aXN0cygkdG9weyRjaGlsZH0pKSB7CisJIyBpdCdzIG5vIGxvbmdlciBhIHRvcCBub2RlIGlmIGl0J3MgYSBjaGlsZCBvZiBzb21ldGhpbmcgZWxzZQorCWRlbGV0ZSAkdG9weyRjaGlsZH07CisgICAgfQorICAgICRmZWF0dXJlc3skcGFyZW50fXsnY2hpbGRyZW4nfXskY2hpbGR9Kys7CisKKyAgICAkZmVhdHVyZXN7JGNoaWxkfXsncHJvdmlkZWRieSd9LCAkcmVxZmlsZTsKK30KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBvcmctbW9kZSBvdXRwdXQKKyMKK3N1YiBwcmludF9vcmdfbW9kZSB7CisgICAgbXkgKCRvdXRwdXRmaWxlKSA9IEBfOworCisgICAgbXkgJGZoID0gbmV3IElPOjpGaWxlOworCisgICAgaWYgKCEkZmgtPm9wZW4oIj4gJG91dHB1dGZpbGUiKSkgeworCWRpZSAiZXJyb3IhXG4iOworICAgIH0KKworICAgIGZvcmVhY2ggbXkgJG5vZGUgKHNvcnQga2V5cygldG9wKSkgeworCXByaW50X29yZ19ub2RlKCRmaCwgJG5vZGUsICIqIik7CisgICAgfQorfQorCitzdWIgcHJpbnRfb3JnX25vZGUgeworICAgIG15ICgkZmgsICRub2RlLCAkcHJlZml4KSA9IEBfOworCisgICAgbXkgJHNwYWNlcyA9ICRwcmVmaXg7CisgICAgJHNwYWNlcyA9fiBzLy4vIC9nOworCisgICAgcHJpbnQgJGZoICIkcHJlZml4ICRub2RlXG4iOworICAgIGlmIChleGlzdHMoJGZlYXR1cmVzeyRub2RlfXsncHJvdmlkZWRieSd9KSkgeworCXByaW50ICRmaCAiJHNwYWNlcyArIHByb3ZpZGVkIGluIGZpbGU6ICIgLgorCSAgICBqb2luKCIsICIsIG9yZ19saW5rX2ZpbGVzKEB7JGZlYXR1cmVzeyRub2RlfXsncHJvdmlkZWRieSd9fSkpIC4gIlxuIjsKKyAgICB9CisgICAgaWYgKGV4aXN0cygkZmVhdHVyZXN7JG5vZGV9eydyZXF1aXJlZGJ5J30pKSB7CisJcHJpbnQgJGZoICIkc3BhY2VzICsgcmVxdWlyZWQgaW4gZmlsZTogIiAuCisJICAgIGpvaW4oIiwgIiwgb3JnX2xpbmtfZmlsZXMoQHskZmVhdHVyZXN7JG5vZGV9eydyZXF1aXJlZGJ5J319KSkgLiAiXG4iOworICAgIH0KKyAgICBpZiAoZXhpc3RzKCRmZWF0dXJlc3skbm9kZX17J3dhbnRlZGJ5J30pKSB7CisJcHJpbnQgJGZoICIkc3BhY2VzICsgd2FudGVkIGluIGZpbGU6ICIgLgorCSAgICBqb2luKCIsICIsIG9yZ19saW5rX2ZpbGVzKEB7JGZlYXR1cmVzeyRub2RlfXsnd2FudGVkYnknfX0pKSAuICJcbiI7CisgICAgfQorICAgIGlmIChleGlzdHMoJGZlYXR1cmVzeyRub2RlfXsnY2hpbGRyZW4nfSkpIHsKKwlmb3JlYWNoIG15ICRjaGlsZCAoc29ydCBrZXlzKCV7JGZlYXR1cmVzeyRub2RlfXsnY2hpbGRyZW4nfX0pKSB7CisJICAgIHByaW50X29yZ19ub2RlKCRmaCwgJGNoaWxkLCAkcHJlZml4IC4gIioiKTsKKwl9CisgICAgfQorfQorCitzdWIgb3JnX2xpbmtfZmlsZXMgeworICAgIG15IEBmaWxlcyA9IEBfOworICAgIG1hcCB7ICRfID0gIltbZmlsZTokX11bJF9dXSI7IH0gQGZpbGVzOworICAgIHJldHVybiBAZmlsZXM7Cit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgd2lraSBvdXRwdXQKKyMKK3N1YiBwcmludF93aWtpX21vZGUgeworICAgIG15ICgkb3V0cHV0ZmlsZSkgPSBAXzsKKworICAgIG15ICRmaCA9IG5ldyBJTzo6RmlsZTsKKyAgICBteSAkZGVwdGggPSAwOworCisgICAgaWYgKCEkZmgtPm9wZW4oIj4gJG91dHB1dGZpbGUiKSkgeworCWRpZSAiZXJyb3IhXG4iOworICAgIH0KKworICAgIHByaW50ICRmaCAiJycnVGhlIGNvbnRlbnRzIG9mIHRoaXMgcGFnZSBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1tYWtlZG9jczsgZG8gbm90IGVkaXQgYnkgaGFuZCAoY2hhbmdlcyB3aWxsIGJlIGxvc3QpJycnXG5cbiI7CisgICAgcHJpbnQgJGZoICJEZXRhaWxzIG9mIHRoZSBmZWF0dXJlIG1hcmtpbmcgc3lzdGVtIGFuZCBob3cgaXQgaXMgdXNlZCBjYW4gYmUgZm91bmQgYXQgW1tGZWF0dXJlIE1hcmtpbmcgYW5kIFNlbGVjdGlvbl1dXG5cbiI7CisKKyAgICBmb3JlYWNoIG15ICRub2RlIChzb3J0IGtleXMoJXRvcCkpIHsKKwlwcmludF93aWtpX25vZGUoJGZoLCAkbm9kZSwgJGRlcHRoKzEpOworICAgIH0KK30KKworc3ViIHByaW50X3dpa2lfbm9kZSB7CisgICAgbXkgKCRmaCwgJG5vZGUsICRkZXB0aCkgPSBAXzsKKworICAgIG15ICRkYXRhaGVhZGVyOworICAgIG15ICRkZXB0aGluY3JlYXNlID0gMTsKKworICAgIGlmICgkZGVwdGggPiAkb3B0c3snVyd9KSB7CisJcHJpbnQgJGZoICIqIiB4ICgkZGVwdGggLSAkb3B0c3snVyd9ICsgMSkgLiAiICRub2RlXG4iOworCSRkYXRhaGVhZGVyID0gIioiIHggKCRkZXB0aCAtICRvcHRzeydXJ30gKyAyKTsKKwkkZGVwdGhpbmNyZWFzZSsrOworICAgIH0gZWxzZSB7CisJcHJpbnQgJGZoICI9IiB4ICRkZXB0aCAuICIgJG5vZGUgIiAuICI9IiB4ICRkZXB0aCAuICJcbiI7CisJJGRhdGFoZWFkZXIgPSAiKiI7CisgICAgfQorCisgICAgaWYgKGV4aXN0cygkZmVhdHVyZXN7JG5vZGV9eydwcm92aWRlZGJ5J30pKSB7CisJcHJpbnQgJGZoICIkZGF0YWhlYWRlciBwcm92aWRlZCBpbiBmaWxlOiAiIC4KKwkgICAgam9pbigiLCAiLCB3aWtpX2xpbmtfZmlsZXMoQHskZmVhdHVyZXN7JG5vZGV9eydwcm92aWRlZGJ5J319KSkgLiJcbiI7CisgICAgfQorICAgIGlmIChleGlzdHMoJGZlYXR1cmVzeyRub2RlfXsncmVxdWlyZWRieSd9KSkgeworCXByaW50ICRmaCAiJGRhdGFoZWFkZXIgcmVxdWlyZWQgaW4gZmlsZTogIiAuCisJICAgIGpvaW4oIiwgIiwgd2lraV9saW5rX2ZpbGVzKEB7JGZlYXR1cmVzeyRub2RlfXsncmVxdWlyZWRieSd9fSkpIC4iXG4iOworICAgIH0KKyAgICBpZiAoZXhpc3RzKCRmZWF0dXJlc3skbm9kZX17J3dhbnRlZGJ5J30pKSB7CisJcHJpbnQgJGZoICIkZGF0YWhlYWRlciB3YW50ZWQgaW4gZmlsZTogIiAuCisJICAgIGpvaW4oIiwgIiwgd2lraV9saW5rX2ZpbGVzKEB7JGZlYXR1cmVzeyRub2RlfXsnd2FudGVkYnknfX0pKSAuICJcbiI7CisgICAgfQorICAgIGlmIChleGlzdHMoJGZlYXR1cmVzeyRub2RlfXsnY2hpbGRyZW4nfSkpIHsKKwlpZiAoJGRlcHRoID49ICRvcHRzeydXJ30pIHsKKwkgICAgcHJpbnQgJGZoICIkZGF0YWhlYWRlciBDaGlsZHJlbjpcbiI7CisJfQorCWZvcmVhY2ggbXkgJGNoaWxkIChzb3J0IGtleXMoJXskZmVhdHVyZXN7JG5vZGV9eydjaGlsZHJlbid9fSkpIHsKKwkgICAgcHJpbnRfd2lraV9ub2RlKCRmaCwgJGNoaWxkLCAkZGVwdGggKyAkZGVwdGhpbmNyZWFzZSk7CisJfQorICAgIH0KK30KKworc3ViIHdpa2lfbGlua19maWxlcyB7CisgICAgbXkgQGZpbGVzID0gQF87CisgICAgbWFwIHsgJF8gPSAiW2h0dHA6Ly9uZXQtc25tcC5zdm4uc291cmNlZm9yZ2UubmV0L3ZpZXd2Yy9uZXQtc25tcC90cnVuay9uZXQtc25tcC8kXz92aWV3PW1hcmt1cCAkX10iOyB9IEBmaWxlczsKKyAgICByZXR1cm4gQGZpbGVzOworfQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIGhlbHAgb3V0cHV0CisjCitzdWIgdXNhZ2UgeworICAgIHByaW50ICJVc2FnZTogJDAgW0ZMQUdTXSBJTlBVVEZJTEUgT1VUUFVURklMRVxuXG4iOworICAgIHByaW50ICJGTEFHUzpcbiI7CisgICAgcHJpbnQgIlx0LWhcdGhlbHBcbiI7CisgICAgcHJpbnQgIlx0LW9cdE91dHB1dCBzdHlsZTogT3JnLU1vZGUgW2RlZmF1bHRdXG4iOworICAgIHByaW50ICJcdC13XHRPdXRwdXQgc3R5bGU6IHdpa2lcbiI7CisgICAgcHJpbnQgIlx0LVcgREVQVEhcdFdpa2kgaGVhZGVyIHRvIGJ1bGxldCBsaXN0IGRlcHRoIChkZWZhdWx0IDIpXG4iOworICAgIHByaW50ICJcbklOUFVUL09VVFBVVFxuIjsKKyAgICBwcmludCAiXHRJTlBVVEZJTEU6XHRsb2NhdGlvbiBvZiB0aGUgaW5jbHVkZS9uZXQtc25tcC9mZWF0dXJlLWRldGFpbHMuaCBmaWxlXG4iOworICAgIHByaW50ICJcdE9VVFBVVEZJTEU6XHR0aGUgZmlsZSB0byB3cml0ZSB0aGUgcmVzdWx0cyB0b1xuIjsKKyAgICBleGl0OworfQpkaWZmIC0tZ2l0IGEvbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLXJlbW92ZSBiL2xvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1yZW1vdmUKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWFlMzQwZAotLS0gL2Rldi9udWxsCisrKyBiL2xvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1yZW1vdmUKQEAgLTAsMCArMSwxMjggQEAKKyMhL2Jpbi9zaAorCisjCisjIGZlYXR1cmUtcmVtb3ZlOiByZW1vdmVzIGZlYXR1cmVzIGJ5IGRlZmluaW5nIHNwZWNpYWwgdmFyaWFibGVzCisjIGluZGljYXRpbmcgcGFydGljdWxhciBjb2RlIHNlZ21lbnRzIGFyZSB1bm5lZWRlZC4gIFRoaXMgaXMgZG9uZSBieQorIyBleGFtaW5pbmcgdGhlIGxpc3Qgb2YgcHJvdmlkZWQgZmVhdHVyZXMgYW5kIGRlZmluaW5nIGEgUkVNT1ZFCisjIGVxdWl2YWxlbnQgaWYgbm8gb3RoZXIgbW9kdWxlIHJlcXVpcmVkIGl0LgorIworIyBBcmd1bWVudHM6CisjICAgZmVhdHVyZS1yZW1vdmUgbWFpbmhlYWRlci5oIGdsb2JhbGhlYWRlci5oIFRIRVJFU1QKKyMKKyMgV2hlcmUgVEhFUkVTVCBhcmUgYSBsaXN0IG9mIGZlYXR1cmVzIHRvIHJlbW92ZSAoZGVmYXVsdCkgb3IgYWRkLgorIworIyAgIC0tYWRkIHN3aXRjaGVzIHRvICJhZGRpbmciIGFuZCAtLXJlbW92ZSBzd2l0Y2hlcyBiYWNrLgorIworIyBFLkcuCisjICAgZmVhdHVyZS1yZW1vdmUgbWFpbmhlYWRlci5oIGdsb2JhbGhlYWRlci5oIG9pZF9zdGFzaCAtLWFkZCBjb250YWluZXJfbnVsbAorIworQ1A9Y3AKKworZmVhdHVyZWhlYWRlcj0iJDEiCitmZWF0dXJlaGVhZGVyaW49IiQxLmluIgorZmVhdHVyZWhlYWRlcmdsb2JhbD0iJDIiCitzaGlmdAorc2hpZnQKKworYXJndW1lbnR0eXBlPSItLXJlbW92ZSIKK3JlbW92ZXRoZXNlPSIiCithZGR0aGVzZT0iIgorCit3aGlsZSB0ZXN0ICJ4JDEiICE9ICJ4IiA7IGRvCisgICAgdWM9YGVjaG8gJDEgfCB0ciBhLXogQS1aYAorICAgIGNhc2UgJDEgaW4KKwktLSopCisJICAgIGFyZ3VtZW50dHlwZT0iJDEiCisJICAgIDs7CisKKwkqKQorCSAgICBpZiB0ZXN0ICJ4JGFyZ3VtZW50dHlwZSIgPSAieC0tcmVtb3ZlIiA7IHRoZW4KKwkJcmVtb3ZldGhlc2U9IiRyZW1vdmV0aGVzZSAkdWMiCisJICAgIGVsc2UKKwkJYWRkdGhlc2U9IiRhZGR0aGVzZSAkdWMiCisJICAgIGZpCisJICAgIDs7CisgICAgZXNhYworICAgIHNoaWZ0Citkb25lCisKK2VjaG8gIiIgPiAkZmVhdHVyZWhlYWRlcgorZWNobyAiLyogVGhlIGZvbGxvd2luZyBkZWZpbmVzIGZlYXR1cmVzIHRoYXQgTmV0LVNOTVAgSEFTIG9yIGhhcyBSRU1PVkVkICovIiA+PiAkZmVhdHVyZWhlYWRlcgorCitoYXNsaXN0PSIgIgorCitmb3IgaSBpbiBgZ3JlcCBORVRTTk1QX0ZFQVRVUkVfUFJPVklERV8gJGZlYXR1cmVoZWFkZXJpbiB8IHNlZCAncy8uKkZFQVRVUkVfUFJPVklERV8vLztzLyAuKi8vJ2AgOyBkbworICAgICMKKyAgICAjIElmIHdlIHdlcmUgc3BlY2lmaWNhbGx5IGFza2VkIHRvIGluY2x1ZGUgaXQsIHRoZW4gZG8gc28KKyAgICAjCisgICAgaWYgZWNobyAiICRhZGR0aGVzZSAiIHwgZ3JlcCAiICR7aX0gIiA+IC9kZXYvbnVsbCA7IHRoZW4KKyAgICAgICAjIFRoZSB1c2VyIHJlcXVpcmVkIGl0IDsgcmVwb3J0IHdlJ3JlIHVzaW5nIGl0CisJZWNobyAiI2RlZmluZSBORVRTTk1QX0ZFQVRVUkVfSEFTXyRpIDEiID4+ICRmZWF0dXJlaGVhZGVyCisJaGFzbGlzdD0iJHtoYXNsaXN0fSR7aX0gIgorCisgICAgIworICAgICMgY2hlY2sgdG8gc2VlIGlmIHNvbWV0aGluZyByZXF1cmllZCBpdAorICAgICMKKyAgICBlbGlmIGdyZXAgIk5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFXyR7aX0gIiAkZmVhdHVyZWhlYWRlcmdsb2JhbCA+IC9kZXYvbnVsbCA7IHRoZW4KKwkjIGlmIHNvLCBtYWtlIHN1cmUgd2Ugd2VyZW4ndCBhc2tlZCB0byByZW1vdmUgaXQKKyAgICAgICAJaWYgZWNobyAgIiAkcmVtb3ZldGhlc2UgInwgZ3JlcCAiICRpICIgPiAvZGV2L251bGwgOyB0aGVuCisgICAgICAgCSAgICMgVWggb2g7IHRoZXkgc3BlY2lmaWNhbGx5IHdhbnRlZCBpdCByZW1vdmVkIGJ1dCBpdCB3YXMgcmVxdWlyZWQKKwkgICBlY2hvICJGZWF0dXJlIEVycm9yOiIKKyAgICAgICAJICAgZWNobyAiIEZlYXR1cmUgJyRpJyB3YXMgYXNrZWQgdG8gYmUgcmVtb3ZlZCBidXQgc29tZXRoaW5nIHJlcXVpcmVkIGl0IgorICAgICAgIAkgICBlY2hvICIgU2VlIHRoZSAkZmVhdHVyZWhlYWRlcmdsb2JhbCBmaWxlIGZvciBkZXBlbmRlbmN5IGRldGFpbHMiCisJICAgZWNobyAiIgorICAgICAgICAgICBybSAtZiAkZmVhdHVyZWhlYWRlcgorICAgICAgIAkgICBleGl0IDEKKyAgICAgICAJZmkKKworICAgICAgIAkjIHNvbWV0aGluZyByZXF1aXJlZCBpdCA7IHJlcG9ydCB3ZSdyZSB1c2luZyBpdAorICAgICAgIAllY2hvICIjZGVmaW5lIE5FVFNOTVBfRkVBVFVSRV9IQVNfJGkgMSIgPj4gJGZlYXR1cmVoZWFkZXIKKwloYXNsaXN0PSIke2hhc2xpc3R9JHtpfSAiCisKKyAgICAjCisgICAgIyBjaGVjayB0byBzZWUgaWYgc29tZXRoaW5nICJ3YW50ZWQiIGl0CisgICAgIworICAgIGVsaWYgZ3JlcCAiTkVUU05NUF9GRUFUVVJFX1dBTlRfJHtpfSAiICRmZWF0dXJlaGVhZGVyZ2xvYmFsID4gL2Rldi9udWxsIDsgdGhlbgorCSAgICMgbm90aGluZyByZXF1aXJlZCBpdCwgYnV0IHNvbWV0aGluZyAid2FudGVkIiBpdAorCisJICAgIyBjaGVjayB0byBtYWtlIHN1cmUgd2Ugd2VyZW4ndCBhc2tlZCB0byBleGNsdWRlIGl0CisgICAgICAgICAgIGlmIGVjaG8gIiAkcmVtb3ZldGhlc2UgIiB8IGdyZXAgIiAkaSAiID4gL2Rldi9udWxsIDsgdGhlbgorICAgICAgICAgICAgICAgIyB3ZSB3ZXJlIHNwZWNpZmljYWxseSBhc2tlZCAqbm90KiB0byB1c2UgdGhpcyBmZWF0dXJlCisgICAgICAgICAgICAgICBlY2hvICIjZGVmaW5lIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfJGkgMSIgPj4gJGZlYXR1cmVoZWFkZXIKKyAgICAgICAgICAgZWxzZQorCSAgICAgICAjIHNvbWV0aGluZyB3YW50ZWQgaXQsIHNvIHdlJ2xsIGluY2x1ZGUgaXQKKwkgICAgICAgZWNobyAiI2RlZmluZSBORVRTTk1QX0ZFQVRVUkVfSEFTXyRpIDEiID4+ICRmZWF0dXJlaGVhZGVyCisJICAgICAgIGhhc2xpc3Q9IiR7aGFzbGlzdH0ke2l9ICIKKyAgICAgICAgICAgZmkKKworCisgICAgIworICAgICMgY2hlY2sgdG8gc2VlIGlmIHNvbWV0aGluZyByZXF1aXJlZCBhIHBhcmVudAorICAgICMKKyAgICBlbGlmIGVncmVwIE5FVFNOTVBfRkVBVFVSRV8ke2l9X0NISUxEX09GICRmZWF0dXJlaGVhZGVyZ2xvYmFsID4gL2Rldi9udWxsIDsgdGhlbgorCXBhcmVudG5hbWVzPWBlZ3JlcCBORVRTTk1QX0ZFQVRVUkVfJHtpfV9DSElMRF9PRiAkZmVhdHVyZWhlYWRlcmdsb2JhbCB8IHNlZCAncy8uKkNISUxEX09GXy8vO3MvIC4qLy87J2AKKworCWZvdW5kb25lPTAKKwlmb3IgcGFyZW50bmFtZSBpbiAkcGFyZW50bmFtZXMgOyBkbworICAgCSAgICAjIGlmIHRoZSBwYXJlbnQgd2FzIGRlc2lyZWQsIHRoZW4gd2UgYXJlIHRvbzoKKwkgICAgCisJICAgIGlmIHRlc3QgJGZvdW5kb25lID0gMCA7IHRoZW4KKwkJaWYgZWdyZXAgIk5FVFNOTVBfRkVBVFVSRV9IQVNfJHtwYXJlbnRuYW1lfSAiICRmZWF0dXJlaGVhZGVyID4gL2Rldi9udWxsIDsgdGhlbgorICAgICAgIAkJICAgIGVjaG8gIiNkZWZpbmUgTkVUU05NUF9GRUFUVVJFX0hBU18kaSAxIiA+PiAkZmVhdHVyZWhlYWRlcgorCQkgICAgaGFzbGlzdD0iJHtoYXNsaXN0fSR7aX0gIgorCQkgICAgZm91bmRvbmU9MQorCQlmaQorCSAgICBmaQorICAgICAgICBkb25lCisJaWYgdGVzdCAkZm91bmRvbmUgPSAwIDsgdGhlbgorICAgIAkgICAgZWNobyAiI2RlZmluZSBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFXyRpIDEiID4+ICRmZWF0dXJlaGVhZGVyCisJZmkKKworICAgICMKKyAgICAjIG5vIG9uZSByZXF1aXJlZCBvciB3YW50ZWQgaXQgLS0gaXQgaXMgc2FmZSB0byByZW1vdmUgaXQKKyAgICAjCisgICAgZWxzZQorICAgIAkgZWNobyAiI2RlZmluZSBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFXyRpIDEiID4+ICRmZWF0dXJlaGVhZGVyCisgICAgZmkKK2RvbmUKKwpkaWZmIC0tZ2l0IGEvbG9jYWwvbWluaW1hbGlzdC9maW5kLXVudXNlZC1jb2RlIGIvbG9jYWwvbWluaW1hbGlzdC9maW5kLXVudXNlZC1jb2RlCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjg5ZTNjOGMKLS0tIC9kZXYvbnVsbAorKysgYi9sb2NhbC9taW5pbWFsaXN0L2ZpbmQtdW51c2VkLWNvZGUKQEAgLTAsMCArMSwxMTcgQEAKKyMhL3Vzci9iaW4vcGVybAorCisjIHNlYXJjaGVzIGZvciAubyBmaWxlcyBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkgYW5kIGV4YW1pbmVzIGVhY2ggZm9yCisjIGRlZmluZWQgZnVuY3Rpb25zIChUKSBhbmQgdW5kZWZpbmVkIHJlZmVyZW5jZXMgKFUpIGFuZCBsaXN0cworIyBhbnl0aGluZyB0aGF0IGlzbid0IHJlcXVpcmVkIGJ5IHNvbWV0aGluZyBlbHNlIG9yIGl0c2VsZgorCisjIHVzZWZ1bCBjYWxsaW5nIHNvcnRlZCBieSBmaWxlOgorIyAgIHBlcmwgbWluaW1hbC9maW5kLXVudXNlZC1jb2RlIHwgc29ydCAKKwordXNlIEZpbGU6OkZpbmQ7Cit1c2UgRGF0YTo6RHVtcGVyOwordXNlIHN0cmljdDsKK3VzZSBHZXRvcHQ6OkdVSTo6TG9uZzsKKworbXkgJW9wdHM7CisKK0xvY2FsR2V0T3B0aW9ucyhcJW9wdHMsCisJCVsnZ3xncmVwJywgICAgICAicnVuIGZpbmQvZ3JlcCB0byBsb29rIGZvciBzdHJpbmcgdXNhZ2VzIl0sCisgICAgKTsKKworbXkgKEBmaWxlcywgJWRlZmluZWQsICVsb29raW5nZm9yKTsKKworZmluZChcJmRvdF9vcywgIi4iKTsKKworZm9yZWFjaCBteSAkZmlsZSAoQGZpbGVzKSB7CisgICAgY29sbGVjdF9mcm9tX2ZpbGUoJGZpbGUpOworfQorCisKK2lmICgkI0FSR1YgPiAtMSkgeworICAgIHByaW50ICJEdW1waW5nIGZvdW5kIHN5bWJvbCB1c2FnZXM6XG5cbiI7CisgICAgZm9yZWFjaCBteSAkYXJnIChAQVJHVikgeworCXByaW50ICIkYXJnOlxuIjsKKwlwcmludCAiICAiLCBqb2luKCJcbiAgIiwgQHskZGVmaW5lZHskYXJnfXsndXNhZ2VzJ319KSwiXG5cbiI7CisgICAgfQorICAgIGV4aXQ7Cit9CisKK2ZvcmVhY2ggbXkgJGZ1bmN0aW9uIChzb3J0IHsgJGRlZmluZWR7JGF9eydzb3VyY2UnfSBjbXAgJGRlZmluZWR7JGJ9eydzb3VyY2UnfSB9IGtleXMoJWRlZmluZWQpKSB7CisgICAgaWYgKGV4aXN0cygkZGVmaW5lZHskZnVuY3Rpb259eydzb3VyY2UnfSkgJiYKKwkhZXhpc3RzKCRkZWZpbmVkeyRmdW5jdGlvbn17J3VzYWdlcyd9KSkgeworCWlmIChjaGVja19mb3Jfb25jZV9vbmx5KCRkZWZpbmVkeyRmdW5jdGlvbn17J3NvdXJjZSd9LCAkZnVuY3Rpb24pKSB7CisJICAgIHByaW50ZigiJS0zOHMgJS0zOHNcbiIsICRkZWZpbmVkeyRmdW5jdGlvbn17J3NvdXJjZSd9LCAkZnVuY3Rpb24pOworCSAgICBpZiAoJG9wdHN7J2cnfSkgeworCQlvcGVuKFAsImZpbmQgLiAtcmVnZXggJy4qLlxcKGNcXHx4c1xcKScgfCB4YXJncyBncmVwIC1uICRmdW5jdGlvbnwiKTsKKwkJd2hpbGUoPFA+KSB7CisJCSAgICBwcmludCAiICAkXyI7CisJCX0KKwkJY2xvc2UoUCk7CisJCXByaW50ICJcbiI7CisJICAgIH0KKwl9CisgICAgfQorfQorCitzdWIgZG90X29zIHsKKyAgICByZXR1cm4gaWYgKCEvXC5vJC8pOworICAgIHJldHVybiBpZiAoJEZpbGU6OkZpbmQ6Om5hbWUgPX4gL1wvLmxpYnNcLy8pOworIyAgICByZXR1cm4gaWYgKCRGaWxlOjpGaW5kOjpuYW1lID1+IC9cLyhwZXJsfHB5dGhvbilcLy8pOworICAgIHB1c2ggQGZpbGVzLCAkRmlsZTo6RmluZDo6bmFtZTsKK30KKworc3ViIGNvbGxlY3RfZnJvbV9maWxlIHsKKyAgICBteSAkZmlsZSA9IHNoaWZ0OworIyAgICBwcmludCAic2VhcmNoaW5nICRmaWxlXG4iOworICAgIG9wZW4oSSwibm0gJGZpbGV8Iik7CisgICAgd2hpbGUoPEk+KSB7CisJJGRlZmluZWR7JDF9eydzb3VyY2UnfSA9ICRmaWxlIGlmICgvIFQgKC4qKS8pOworCXB1c2ggQHskZGVmaW5lZHskMX17J3VzYWdlcyd9fSwgJGZpbGUgaWYgKC8gVSAoLiopLyk7CisgICAgfQorICAgIGNsb3NlKEkpOworfQorCQorc3ViIGNoZWNrX2Zvcl9vbmNlX29ubHkgeworICAgIG15ICgkZmlsZSwgJGZ1bmN0aW9uKSA9IEBfOworICAgICRmaWxlID1+IHMvXC5vLy5jLzsKKyAgICBvcGVuKEksICRmaWxlKTsKKyAgICBteSAkdXNhZ2VzID0gMDsKKyAgICB3aGlsZSg8ST4pIHsKKwlpZiAoLyRmdW5jdGlvbi8pIHsKKwkgICAgJHVzYWdlcysrOworCX0KKwlpZiAoJHVzYWdlcyA+IDEpIHsKKwkgICAgY2xvc2UoSSk7CisJICAgIHJldHVybiAwOworCX0KKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKKworc3ViIExvY2FsR2V0T3B0aW9ucyB7CisgICAgaWYgKGV2YWwge3JlcXVpcmUgR2V0b3B0OjpHVUk6Okxvbmc7fSkgeworICAgICAgICBpbXBvcnQgR2V0b3B0OjpHVUk6Okxvbmc7CisgICAgICAgICMgb3B0aW9uYWwgY29uZmlndXJlIGNhbGwKKyAgICAgICAgR2V0b3B0OjpHVUk6Okxvbmc6OkNvbmZpZ3VyZShxdyhkaXNwbGF5X2hlbHAgbm9faWdub3JlX2Nhc2UgY2FwdHVyZV9vdXRwdXQgbm9fZ3VpIGFsbG93X3plcm8pKTsKKyAgICAgICAgcmV0dXJuIEdldE9wdGlvbnMoQF8pOworICAgIH0KKyAgICByZXF1aXJlIEdldG9wdDo6TG9uZzsKKyAgICBpbXBvcnQgR2V0b3B0OjpMb25nOworICAgICMgb3B0aW9uYWwgY29uZmlndXJlIGNhbGwKKyAgICBHZXRvcHQ6Okxvbmc6OkNvbmZpZ3VyZShxdyhkaXNwbGF5X2hlbHAgbm9faWdub3JlX2Nhc2UgY2FwdHVyZV9vdXRwdXQpKTsKKyAgICBHZXRPcHRpb25zKExvY2FsT3B0aW9uc01hcChAXykpOworfQorCitzdWIgTG9jYWxPcHRpb25zTWFwIHsKKyAgICBteSAoJHN0LCAkY2IsIEBvcHRzKSA9ICgocmVmKCRfWzBdKSBlcSAnSEFTSCcpIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKDEsIDEsICRfWzBdKSA6ICgwLCAyKSk7CisgICAgZm9yIChteSAkaSA9ICRzdDsgJGkgPD0gJCNfOyAkaSArPSAkY2IpIHsKKyAgICAgICAgaWYgKCRfWyRpXSkgeworICAgICAgICAgICAgbmV4dCBpZiAocmVmKCRfWyRpXSkgZXEgJ0FSUkFZJyAmJiAkX1skaV1bMF0gPX4gL15HVUk6Lyk7CisgICAgICAgICAgICBwdXNoIEBvcHRzLCAoKHJlZigkX1skaV0pIGVxICdBUlJBWScpID8gJF9bJGldWzBdIDogJF9bJGldKTsKKyAgICAgICAgICAgIHB1c2ggQG9wdHMsICRfWyRpKzFdIGlmICgkY2IgPT0gMik7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIEBvcHRzOworfQpkaWZmIC0tZ2l0IGEvbG9jYWwvbWluaW1hbGlzdC9pZ25vcmUucmVnZXhwIGIvbG9jYWwvbWluaW1hbGlzdC9pZ25vcmUucmVnZXhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwOWI5OWMKLS0tIC9kZXYvbnVsbAorKysgYi9sb2NhbC9taW5pbWFsaXN0L2lnbm9yZS5yZWdleHAKQEAgLTAsMCArMSw0IEBACit+JAorIyQKK1wvLiMKK1wvLnN2blwvCmRpZmYgLS1naXQgYS9sb2NhbC9taW5pbWFsaXN0L3JlbW92ZS11bm5lZWRlZC1tb2R1bGVzIGIvbG9jYWwvbWluaW1hbGlzdC9yZW1vdmUtdW5uZWVkZWQtbW9kdWxlcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hZDQ1OTU0Ci0tLSAvZGV2L251bGwKKysrIGIvbG9jYWwvbWluaW1hbGlzdC9yZW1vdmUtdW5uZWVkZWQtbW9kdWxlcwpAQCAtMCwwICsxLDEzMCBAQAorIyEvYmluL3BlcmwKKworIyBzdGVwczoKKyMgMSkgcnVuIGNvbmZpZ3VyZQorIyAyKSBwZXJsIGxvY2FsL21pbmltYWxpc3QvcmVtb3ZlLXVubmVlZGVkLW1vZHVsZXMKKyMgMykgbWFrZSBkZXBlbmQKKyMgNCkgbWFrZQorCit1c2UgRmlsZTo6RmluZDsKK3VzZSBEYXRhOjpEdW1wZXI7Cit1c2Ugc3RyaWN0OworCitteSAlZXhjZXB0aW9ucyA9IHF3KAorICAgYWdlbnQvbWliZ3JvdXAvbWliZGVmcy5oICAgICAgICAgICAgICAJICAgICAgICAgICAgICAxCisgICBhZ2VudC9taWJncm91cC9zdHJ1Y3QuaCAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5oICAgICAgCSAgICAgICAgICAgICAgMQorICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2FnZW50eF9jb25maWcuaCAJICAgICAgICAgICAgICAxCisgICBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuaCAgICAgIAkgICAgICAgICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL21pYl9tb2R1bGVfaW5jbHVkZXMuaCAgCSAgICAgICAgICAgICAgMQorICAgYWdlbnQvbWliZ3JvdXAvbWliX21vZHVsZV9pbml0cy5oICAgICAJICAgICAgICAgICAgICAxCisgICBhZ2VudC9taWJncm91cC9taWJfbW9kdWxlX2RvdF9jb25mLmggIAkgICAgICAgICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL21pYl9tb2R1bGVfc2h1dGRvd24uaCAgCSAgICAgICAgICAgICAgMQorICAgYWdlbnQvbWliZ3JvdXAvYWdlbnRfbW9kdWxlX2luY2x1ZGVzLmgJICAgICAgICAgICAgICAxCisgICBhZ2VudC9taWJncm91cC9hZ2VudF9tb2R1bGVfaW5pdHMuaCAgIAkgICAgICAgICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL2FnZW50X21vZHVsZV9kb3RfY29uZi5oCSAgICAgICAgICAgICAgMQorICAgYWdlbnQvbWliZ3JvdXAvYWdlbnRfbW9kdWxlX3NodXRkb3duLmgJICAgICAgICAgICAgICAxCisgICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuYyAgICAgIAkgICAgICAgICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Db25mLmMgICAgICAgCSAgICAgICAgICAgICAgMQorICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5jICAgICAJICAgICAgICAgICAgICAxCisgICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuaCAgICAgIAkgICAgICAgICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Db25mLmggICAgICAgCSAgICAgICAgICAgICAgMQorICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5oICAgICAJICAgICAgICAgICAgICAxCisgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmggICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL2hvc3RfcmVzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQorICAgYWdlbnQvbWliZ3JvdXAvaHJfZmlsZXN5cy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCisgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RlZnMuaCAgICAgICAgICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL2lmVGFibGVfZGVmcy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQorICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvbWliSUlfY29tbW9uLmggICAgICAgICAgICAgICAgICAgICAgICAxCisgICBhZ2VudC9taWJncm91cC9tbnR0eXBlcy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9leGVjdXRlLmggICAgICAgICAgICAgICAgICAgICAgICAgMQorKTsKKworbXkgJW9wdHM7CisKK0xvY2FsR2V0T3B0aW9ucyhcJW9wdHMsCisJCVsnbnxkcnktcnVuJywgICAgICAiRHJ5LXJ1biwganVzdCBzYXkgd2hhdCB5b3Ugd291bGQgZG8iXSwKKwkJWyd2fHZlcmJvc2UnLCAgICAgICJTaG93IHdoYXQgZmlsZXMgYXJlIGJlaW5nIGxlZnQgdG9vIl0sCisgICAgKTsKKworbXkgJGlucHV0TWFrZWZpbGUgPSAkQVJHVlswXSB8fCAiYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUiOworbXkgJGlucHV0RGlyID0gJEFSR1ZbMV0gfHwgImFnZW50L21pYmdyb3VwIjsKKworbXkgJGNvbGxlY3RpbmcgPSAwOworbXkgKCVmaWxlcywgQGZpbGVzKTsKKworb3BlbihJLCAkaW5wdXRNYWtlZmlsZSk7Cit3aGlsZSg8ST4pIHsKKyAgICBpZiAoL21pYl9tb2R1bGVfbGlzdF9jPS8pIHsKKwkkY29sbGVjdGluZyA9IDE7CisgICAgfSBlbHNpZiAoJGNvbGxlY3RpbmcpIHsKKwlpZiAoISAvXFxccyokLykgeworCSAgICAkY29sbGVjdGluZyA9IDA7CisJfQorCWNob21wKCk7CisJcy9cXC8vOworCXMvXHMqLy9nOworCXMvXC5jLy87CisJcHVzaCBAZmlsZXMsICJhZ2VudC9taWJncm91cC8kXyI7CisJJGZpbGVzeyJhZ2VudC9taWJncm91cC8kXy5jIn0gPSAxOworCSRmaWxlc3siYWdlbnQvbWliZ3JvdXAvJF8uaCJ9ID0gMTsKKyAgICB9Cit9CisKK2ZpbmQoXCZyZW1vdmVfZmlsZXMsICRpbnB1dERpcik7CisKK3N1YiByZW1vdmVfZmlsZXMgeworICAgIHJldHVybiBpZiAoIS9cLltjaF0kLyk7CisgICAgcmV0dXJuIGlmICgvXC5oJC8pOyAjIFhYWDogd2UgbmVlZCB0byBkZWxldGUgaGVhZGVycyBldmVudHVhbGx5IHRvbworICAgIHJldHVybiBpZiAoL19jb25zdGFudHMuaC8pOworICAgIHJldHVybiBpZiAoZXhpc3RzKCRleGNlcHRpb25zeyRGaWxlOjpGaW5kOjpuYW1lfSkpOworCisgICAgaWYgKCFleGlzdHMoJGZpbGVzeyRGaWxlOjpGaW5kOjpuYW1lfSkpIHsKKwlVbmxpbmsoJF8sICRGaWxlOjpGaW5kOjpuYW1lKTsKKyAgICB9IGVsc2lmICgkb3B0c3sndid9KSB7CisJcHJpbnQgIkxlYXZpbmcgJEZpbGU6OkZpbmQ6Om5hbWVcbiI7CisgICAgfQorfQorCitzdWIgVW5saW5rIHsKKyAgICBteSAoJGZpbGUsICRmdWxsZmlsZSkgPSBAXzsKKyAgICBwcmludCAiUmVtb3ZpbmcgJGZ1bGxmaWxlXG4iOworICAgIGlmICghJG9wdHN7J24nfSkgeworCXVubGluaygkZmlsZSk7CisJaWYgKC1mICIkZmlsZSIpIHsKKwkgICAgcHJpbnQgIioqKiBGQUlMRUQgdG8gcmVtb3ZlICRmaWxlXG4iOyAKKwl9CisgICAgfQorfQorCisKK3N1YiBMb2NhbEdldE9wdGlvbnMgeworICAgIGlmIChldmFsIHtyZXF1aXJlIEdldG9wdDo6R1VJOjpMb25nO30pIHsKKyAgICAgICAgaW1wb3J0IEdldG9wdDo6R1VJOjpMb25nOworICAgICAgICAjIG9wdGlvbmFsIGNvbmZpZ3VyZSBjYWxsCisJbXkgQGdvcHRzID0gcXcobm9faWdub3JlX2Nhc2Ugbm9fZ3VpIGFsbG93X3plcm8pOworCWlmICgkR2V0b3B0OjpHVUk6Okxvbmc6OlZFUlNJT04gPiAwLjIpIHsKKwkgICAgcHVzaCBAZ29wdHMsIHF3KGRpc3BsYXlfaGVscCBjYXB0dXJlX291dHB1dCk7CisJfQorICAgICAgICBHZXRvcHQ6OkdVSTo6TG9uZzo6Q29uZmlndXJlKEBnb3B0cyk7CisgICAgICAgIHJldHVybiBHZXRPcHRpb25zKEBfKTsKKyAgICB9CisgICAgcmVxdWlyZSBHZXRvcHQ6Okxvbmc7CisgICAgaW1wb3J0IEdldG9wdDo6TG9uZzsKKyAgICAjIG9wdGlvbmFsIGNvbmZpZ3VyZSBjYWxsCisgICAgR2V0b3B0OjpMb25nOjpDb25maWd1cmUocXcoZGlzcGxheV9oZWxwIG5vX2lnbm9yZV9jYXNlIGNhcHR1cmVfb3V0cHV0KSk7CisgICAgR2V0T3B0aW9ucyhMb2NhbE9wdGlvbnNNYXAoQF8pKTsKK30KKworc3ViIExvY2FsT3B0aW9uc01hcCB7CisgICAgbXkgKCRzdCwgJGNiLCBAb3B0cykgPSAoKHJlZigkX1swXSkgZXEgJ0hBU0gnKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICgxLCAxLCAkX1swXSkgOiAoMCwgMikpOworICAgIGZvciAobXkgJGkgPSAkc3Q7ICRpIDw9ICQjXzsgJGkgKz0gJGNiKSB7CisgICAgICAgIGlmICgkX1skaV0pIHsKKyAgICAgICAgICAgIG5leHQgaWYgKHJlZigkX1skaV0pIGVxICdBUlJBWScgJiYgJF9bJGldWzBdID1+IC9eR1VJOi8pOworICAgICAgICAgICAgcHVzaCBAb3B0cywgKChyZWYoJF9bJGldKSBlcSAnQVJSQVknKSA/ICRfWyRpXVswXSA6ICRfWyRpXSk7CisgICAgICAgICAgICBwdXNoIEBvcHRzLCAkX1skaSsxXSBpZiAoJGNiID09IDIpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBAb3B0czsKK30KZGlmZiAtLWdpdCBhL2xvY2FsL21pbmltYWxpc3QvcmVtb3ZlaWZkZWZjb2RlLnBsIGIvbG9jYWwvbWluaW1hbGlzdC9yZW1vdmVpZmRlZmNvZGUucGwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNWE2NGMwNQotLS0gL2Rldi9udWxsCisrKyBiL2xvY2FsL21pbmltYWxpc3QvcmVtb3ZlaWZkZWZjb2RlLnBsCkBAIC0wLDAgKzEsMzMzIEBACisjISAvdXNyL2Jpbi9wZXJsCisKK3VzZSBzdHJpY3Q7Cit1c2UgRmlsZTo6Q29weTsKK3VzZSBGaWxlOjpCYXNlbmFtZTsKK3VzZSBJTzo6RmlsZTsKK3VzZSBHZXRvcHQ6OlN0ZDsKKworbXkgJElEX05PUkVBRCAgPSAiTkVUU05NUF9OT19SRUFEX1NVUFBPUlQiOworbXkgJElEX05PV1JJVEUgPSAiTkVUU05NUF9OT19XUklURV9TVVBQT1JUIjsKKyMgbXkgJElEX01JTiAgICAgPSAiTkVUU05NUF9NSU5JTUFMX0NPREUiOworCitteSgkU1RfT0ZGLCAkU1RfSUYsICRTVF9FTFNFLCAkU1RfSUZOLCAkU1RfRUxTRU4pID0KKyAgKCJvZmYiLCAiaWYiLCAiZWxzZSIsICJpZm5vdCIsICJlbHNlbm90Iik7CisKK215ICVvcHRzICAgID0gKCk7CitteSAldGhhc2ggICA9ICgpOworbXkgJGNhbndyaXRlID0gMTsgIyBjdXJyZW50IHdyaXRlIHN0YXRlCisKK215KCRhcHBuYW1lLCRhcHBwYXRoKSA9IGZpbGVwYXJzZSgkMCk7CisKK215ICRtaW5pbWFsX2luY2x1ZGVfcGF0aCA9ICJpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgiOworCisKK2lmICggKCFnZXRvcHRzKCJyd21pOnYiLFwlb3B0cykpIHx8ICgxICE9ICQjQVJHVikgKSB7CisgIHByaW50ICIkYXBwbmFtZSBbb3B0aW9uc10gZnJvbS1kaXJlY3RvcnkgdG8tZGlyZXBjdG9yeVxuIjsKKyAgcHJpbnQgIi1yICAgICBwYXJzZSBvdXQgY29kZSB1bm5lZWRlZCBieSAkSURfTk9SRUFEIGlmZGVmXG4iOworICBwcmludCAiLXcgICAgIHBhcnNlIG91dCBjb2RlIHVubmVlZGVkIGJ5ICRJRF9OT1dSSVRFIGlmZGVmIChERUZBVUxUKVxuIjsKKyAgcHJpbnQgIi1tICAgICBwYXJzZSBvdXQgY29kZSB1bm5lZWRlZCBhY2NvcmRpbmcgbWluaW1hbGlzdCBpZmRlZnNcbiI7CisgIHByaW50ICIgICAgICAgcmVxdWlyZXMgZnJvbS1kaXJlY3RvcnkgdG8gYmUgdGhlIHRvcCBvZiB0aGUgbmV0LXNubXAgdHJlZVxuIjsKKyAgcHJpbnQgIiAgICAgICAoVGhpcyBpcyBtdWx0aXBsZSBpZmRlZnMgYXV0byBzZWxlY3RlZCBkZXBlbmRpbmdcbiI7CisgIHByaW50ICIgICAgICAgIG9uIHRoZSBuZXQtc25tcCBzb3VyY2UgY29uZmlndXJhdGlvbilcblxuIjsKKyAgcHJpbnQgIi1pICdpZ25vcmUtZmlsZScgIGZpbGUgb2YgZmlsZXMgdG8gaWdub3JlIChub3QgY29weSlcbiI7CisgIHByaW50ICItdiAgICAgcHJpbnQgdmVyYm9zZSBpbmZvIHRvIHN0YW5kYXJkIG91dFxuIjsKKyAgZGllICJFcnJvcjogdHdvIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgcmVxdWlyZWRcbiI7Cit9CisKKyNkZWZhdWx0IHRvIGV2ZXJ5dGhpbmcKK2lmICggKCFleGlzdHMgJG9wdHN7cn0pICYmICghZXhpc3RzICRvcHRze3d9KSAmJiAoIWV4aXN0cyAkb3B0c3ttfSkgKSB7CisgICR0aGFzaHsiJElEX05PV1JJVEUifSA9ICIkU1RfT0ZGIjsKK30KK2Vsc2UgeworICAkdGhhc2h7IiRJRF9OT1JFQUQifSAgPSAiJFNUX09GRiIgaWYgKCBleGlzdHMgJG9wdHN7cn0gKTsKKyAgJHRoYXNoeyIkSURfTk9XUklURSJ9ID0gIiRTVF9PRkYiIGlmICggZXhpc3RzICRvcHRze3d9ICk7Cit9CisKK215ICRmcm9tZGlyID0gJEFSR1ZbMF07CitteSAkdG9kaXIgICA9ICRBUkdWWzFdOworCitpZiAoICEoLWUgJGZyb21kaXIpICkgeworICBkaWUgIkVycm9yOiAkYXBwbmFtZTogZnJvbSBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3Q6ICckZnJvbWRpcidcbiI7Cit9CitpZiAoICEoLWQgJGZyb21kaXIpICkgeworICAgIGRpZSAiRXJyb3I6ICRhcHBuYW1lOiBmcm9tIGRpcmVjdG9yeSwgJyRmcm9tZGlyJywgbXVzdCBiZSBhIGRpcmVjdG9yeVxuIjsKK30KKworaWYgKCBleGlzdHMgJG9wdHN7bX0gKSB7CisgICAgbG9hZF9taW5hbWFsX2lmZGVmcygpOworfQorCisjIGNyZWF0ZSBzZWFyY2ggc3RyaW5nIGZyb20gdGFncworIyBtaW5pbWFsIG11c3QgYmUgZG9uZSBiZWZvcmUgdGhpcworbXkgJHNlYXJjaCA9IGpvaW4gInwiLCAoa2V5cyAldGhhc2gpOworCisKKyMgY2hlY2sgZm9yIGFuZCBsb2FkIGlnbm9yZSBmaWxlCitteSAkaWdzdHJpbmcgPSAiIjsKK2lmICggZXhpc3RzICRvcHRze2l9ICkgeworICBvcGVuIG15KCRJSCksICI8ICRvcHRze2l9IiBvcgorICAgIGRpZSAiQ291bGQgbm90IG9wZW4gaWdub3JlLWZpbGUgJyRvcHRze2l9JzogJCEiOworICBteSBAaWdsaXN0ID0gPCRJSD47CisgICRJSC0+Y2xvc2UoKTsKKyAgY2hvbXAgQGlnbGlzdDsKKyAgJGlnc3RyaW5nID0gam9pbiAifCIsIEBpZ2xpc3Q7CisgICRpZ3N0cmluZyA9ICIoIiAuICRpZ3N0cmluZyAuICIpIjsKKyAgcHJpbnQgImlnbm9yZSBzdHJpbmc6IFwnJGlnc3RyaW5nXCdcbiIgaWYgKGV4aXN0cyAkb3B0c3t2fSk7Cit9CisKKworCitpZiAoIC1lICR0b2RpciApIHsKKyAgaWYgKCAoKC1kICRmcm9tZGlyKSAmJiAhKC1kICR0b2RpcikpIHx8CisJICAgKCEoLWQgJGZyb21kaXIpICYmICgtZCAkdG9kaXIpKSApIHsKKwlkaWUgIkVycm9yOiAkYXBwbmFtZTogZnJvbS1kaXJlY3RvcnkgYW5kIHRvLWRpcmVjdG9yeSBtdXN0IGJvdGggZWl0aGVyIGJlIGEgZmlsZSBvciBib3RoIGJlIGEgZGlyZWN0b3J5XG4iOworICB9Cit9CitlbHNlIHsKKyAgaWYgKC1kICRmcm9tZGlyKSB7CisJcHJpbnQgIldhcm5pbmc6ICRhcHBuYW1lOiAnJHRvZGlyJyBkb2VzIG5vdCBleGlzdCwgY3JlYXRpbmdcbiI7CisJbWtkaXIgIiR0b2RpciIgb3IKKyAgICAgIGRpZSAiRXJyb3I6ICRhcHBuYW1lOiBVbmFibGUgdG8gY3JlYXRlIHRvLWRpcmVjdG9yeSAnJHRvZGlyJzogJCFcbiI7CisgIH0KK30KKworaWYgKC1kICRmcm9tZGlyKSB7CisgIHBhcnNlZGlyZWN0b3J5KCRmcm9tZGlyLCAkdG9kaXIpOworfQorZWxzZSB7CisgIHBhcnNlZmlsZSgkZnJvbWRpciwgJHRvZGlyKTsKK30KKworCisKK2V4aXQoMCk7CisKKworIyBQUk9DRURVUkVTICBQUk9DRURVUkVTICBQUk9DRURVUkVTICBQUk9DRURVUkVTICBQUk9DRURVUkVTCisKKworc3ViIHBhcnNlZGlyZWN0b3J5IHsKKyAgbXkoJGZkaXIsICR0ZGlyKSA9IEBfOworCisgIG15IEBsZGlycyA9ICgpOworICBteSAkREg7CisgIG9wZW5kaXIgbXkoJERIKSwgJGZkaXIgb3IgZGllICJDb3VsZCBub3Qgb3BlbiBkaXJlY3RvcnkgJyRmZGlyJzogJCEiOworICBpZiAoICEoLWUgJHRkaXIpIHx8ICEoLWQgJHRkaXIpICkgeworICAgIG1rZGlyICR0ZGlyIG9yIGRpZSAiQ291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgJyR0ZGlyJzogJCEiOworICB9CisgIG15IEBmbGlzdCA9IHJlYWRkaXIgJERIOworICBjbG9zZWRpciAkREg7CisgICMgcmVtb3ZlIC4gYW5kIC4uCisgIEBmbGlzdCA9IGdyZXAgKCEgLyheXC4kfF5cLlwuJCkvICwgQGZsaXN0KTsKKworICB3aGlsZSAobXkgJG5hbWUgPSBzaGlmdCBAZmxpc3QpIHsKKyAgICBpZiAoLWQgIiRmZGlyLyRuYW1lIikgeworICAgICAgcHVzaCBAbGRpcnMsICIkbmFtZSI7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcGFyc2VmaWxlKCIkZmRpci8kbmFtZSIsICIkdGRpci8kbmFtZSIpOworICAgIH0KKyAgfQorCisgIHdoaWxlIChteSAkbmFtZSA9IHNoaWZ0IEBsZGlycykgeworICAgIHBhcnNlZGlyZWN0b3J5KCIkZmRpci8kbmFtZSIsICIkdGRpci8kbmFtZSIpCisgIH0KKworfSAjIHBhcnNlZGlyZWN0b3J5CisKKworIyByZXR1cm5zIDEgaWYgY3VycmVudCBzdGF0ZSBmb3IgdGFnIGlzIHdyaXRlLCAwIG90aGVyd2lzZQorc3ViIGlzd3JpdGVzdGF0ZSB7CisgIG15ICR0YWcgPSAiIjsKKworICBmb3JlYWNoICR0YWcgKGtleXMgJXRoYXNoKSB7CisJaWYgKCAoJHRoYXNoeyR0YWd9IGVxICIkU1RfRUxTRSIpIHx8CisJCSAoJHRoYXNoeyR0YWd9IGVxICIkU1RfSUZOIikgKSB7CisJICByZXR1cm4oMCk7CisgICAgfQorICB9CisKKyAgcmV0dXJuKDEpOworfSAjIGlzd3JpdGVzdGF0ZQorCisKKyMgQ2hlY2sgJGxpbmUgZm9yIGlmZGVmIHN0YXRlIGNoYW5nZXMgZm9yIGFsbCBvZiB0aGUgdGFncyBhbmQgY2hhbmdlCisjIHN0YXRlLgorIyBJZiB0aGVyZSBpcyBhIHN0YXRlIGNoYW5nZSBlcnJvciByZXR1cm4gMCwgb3RoZXJ3aXNlIHJldHVybiAxOworCitzdWIgY2hlY2tpZmRlZiB7CisgIG15KCRURiwgJGxpbmUsICRmcm9tZmlsZW5hbWUpID0gQF87CisKKyAgaWYgKCAkbGluZSA9fiAvKCNpZmRlZnwjaWZuZGVmfCNlbHNlfCNlbmRpZikuKigkc2VhcmNoKShcc3wkfFwqKS8gKSB7CisgICAgbXkgJGNvcHQgPSAkMTsKKyAgICBteSAkdGFnICA9ICQyOworCisJaWYgKCAkY29wdCBlcSAiI2lmZGVmIiApIHsKKyAgICAgIGlmICgkdGhhc2h7IiR0YWcifSBlcSAiJFNUX09GRiIpIHsKKyAgICAgICAgJHRoYXNoeyIkdGFnIn0gPSAiJFNUX0lGIjsKKyAgICAgICAgcHJpbnQgInN0YXRlIGNoYW5nZSAkdGFnOiAkU1RfT0ZGIC0+ICRTVF9JRlxuIiBpZiAoZXhpc3RzICRvcHRze3Z9KTsKKyAgICAgICAgJGNhbndyaXRlID0gaXN3cml0ZXN0YXRlKCk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcHJpbnQgIkVycm9yOiAkZnJvbWZpbGVuYW1lOiBGb3VuZCAnI2lmZGVmICR0YWcnIHdpdGggc3RhdGUgJHRoYXNoeyR0YWd9XG4iOworICAgICAgICByZXR1cm4gMDsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzaWYgKCAkY29wdCBlcSAiI2lmbmRlZiIgKSB7CisgICAgICBpZiAoJHRoYXNoeyIkdGFnIn0gZXEgIiRTVF9PRkYiKSB7CisgICAgICAgICMgYmVmb3JlIGNoYW5naW5nIHRvIGEgbm9uLXdyaXRlIHN0YXRlIChpZm4pIHByaW50ICNJRk5ERUYKKyAgICAgICAgIyBsaW5lLCBpZiBjdXJyZW50IHN0YXRlIGlzIGEgd3JpdGUgc3RhdGUuCisgICAgICAgIHByaW50ICRURiAiJGxpbmUiICBpZiAoICRjYW53cml0ZSApOworICAgICAgICAkdGhhc2h7IiR0YWcifSA9ICIkU1RfSUZOIjsKKyAgICAgICAgcHJpbnQgInN0YXRlIGNoYW5nZSAkdGFnOiAkU1RfT0ZGIC0+ICRTVF9JRk5cbiIgaWYgKGV4aXN0cyAkb3B0c3t2fSk7CisgICAgICAgICRjYW53cml0ZSA9IGlzd3JpdGVzdGF0ZSgpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHByaW50ICJFcnJvcjogJGZyb21maWxlbmFtZTogRm91bmQgJyNpZm5kZWYgJHRhZycgd2l0aCBzdGF0ZSAkdGhhc2h7JHRhZ31cbiI7CisgICAgICAgIHJldHVybiAwOworICAgICAgfQorICAgIH0KKyAgICBlbHNpZiAoICRjb3B0IGVxICIjZWxzZSIgKSB7CisgICAgICBpZiAoJHRoYXNoeyIkdGFnIn0gZXEgIiRTVF9JRiIpIHsKKyAgICAgICAgIyBiZWZvcmUgY2hhbmdpbmcgdG8gYSBub24td3JpdGUgc3RhdGUgKGVsc2UpIHByaW50ICNlbHNlCisgICAgICAgICMgbGluZSwgaWYgY3VycmVudCBzdGF0ZSBpcyBhIHdyaXRlIHN0YXRlLgorICAgICAgICBwcmludCAkVEYgIiRsaW5lIiAgaWYgKCAkY2Fud3JpdGUgKTsKKyAgICAgICAgJHRoYXNoeyIkdGFnIn0gPSAiJFNUX0VMU0UiOworICAgICAgICBwcmludCAic3RhdGUgY2hhbmdlICR0YWc6ICRTVF9JRiAtPiAkU1RfRUxTRVxuIiBpZiAoZXhpc3RzICRvcHRze3Z9KTsKKyAgICAgICAgJGNhbndyaXRlID0gaXN3cml0ZXN0YXRlKCk7CisgICAgICB9CisgICAgICBlbHNpZiAoJHRoYXNoeyIkdGFnIn0gZXEgIiRTVF9JRk4iKSB7CisgICAgICAgICR0aGFzaHsiJHRhZyJ9ID0gIiRTVF9FTFNFTiI7CisgICAgICAgIHByaW50ICJzdGF0ZSBjaGFuZ2UgJHRhZzogJFNUX0lGTiAtPiAkU1RfRUxTRU5cbiIgaWYgKGV4aXN0cyAkb3B0c3t2fSk7CisgICAgICAgICRjYW53cml0ZSA9IGlzd3JpdGVzdGF0ZSgpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHByaW50ICJFcnJvcjogJGZyb21maWxlbmFtZTogRm91bmQgJyNlbHNlICguLi4pICR0YWcnIHdpdGggc3RhdGUgJHRoYXNoeyR0YWd9XG4iOworICAgICAgICByZXR1cm4gMDsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzaWYgKCAkY29wdCBlcSAiI2VuZGlmIiApIHsKKyAgICAgIGlmICgoJHRoYXNoeyIkdGFnIn0gZXEgIiRTVF9FTFNFIikgIHx8ICgkdGhhc2h7IiR0YWcifSBlcSAiJFNUX0lGIikgfHwKKyAgICAgICAgICAoJHRoYXNoeyIkdGFnIn0gZXEgIiRTVF9FTFNFTiIpIHx8ICgkdGhhc2h7IiR0YWcifSBlcSAiJFNUX0lGTiIpKQorICAgICAgeworICAgICAgICBwcmludCAic3RhdGUgY2hhbmdlICR0YWc6ICR0aGFzaHskdGFnfSAtPiAkU1RfT0ZGXG4iCisgICAgICAgICAgaWYgKGV4aXN0cyAkb3B0c3t2fSk7CisgICAgICAgICR0aGFzaHsiJHRhZyJ9ID0gIiRTVF9PRkYiOworICAgICAgICAkY2Fud3JpdGUgPSBpc3dyaXRlc3RhdGUoKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBwcmludCAiRXJyb3I6IEZvdW5kICcjZW5kaWYgKC4uLikgJHRhZycgd2l0aCBzdGF0ZSAkdGhhc2h7JHRhZ31cbiI7CisgICAgICAgIHJldHVybiAwOworICAgICAgfQorICAgIH0KKworICB9ICMgZm9yZWFjaCB0YWcKKworICByZXR1cm4gMTsKK30gIyBjaGVja2lmZGVmCisKKworc3ViIHBhcnNlZmlsZSB7CisgIG15KCRmbmFtZSwgJHRuYW1lKSA9IEBfOworICBteSAkRkY7IG15ICRURjsKKyAgbXkgQGZyb21maWxlID0gKCk7CisgICRjYW53cml0ZSA9IDE7CisKKyAgIyBpZ25vcmUgZmlsZSBmb3IgZmlsZSBuYW1lcworICBpZiAoIChleGlzdHMgJG9wdHN7aX0pICYmICgiJGZuYW1lIiA9fiAgLyRpZ3N0cmluZy8pICkgeworICAgIHByaW50ICJJR05PUklORyAkZm5hbWVcbiIgIGlmICggZXhpc3RzICRvcHRze3Z9ICk7CisgICAgcmV0dXJuIDE7CisgIH0KKworICBwcmludCAiSW5mbzogT3BlbmluZyAnJGZuYW1lJ1xuIiBpZiAoIGV4aXN0cyAkb3B0c3t2fSApOworICBpZiAoICEob3BlbigkRkYsICI8ICRmbmFtZSIpKSApIHsKKwlwcmludCAiV2FybmluZzogdW5hYmxlIHRvIG9wZW4gaW5wdXQgZmlsZSwgc2tpcHBpbmc6ICckZm5hbWUnOiAkIVxuIjsKKwlyZXR1cm4gMDsKKyAgfQorCisgIG15IEBmcm9tZmlsZSA9IDwkRkY+OworICAkRkYtPmNsb3NlKCk7CisKKyAgaWYgKCAhKG9wZW4oJFRGLCAiPiAkdG5hbWUiKSkgKSB7CisJcHJpbnQgIldhcm5pbmc6IHVuYWJsZSB0byBvcGVuIG91dHB1dCBmaWxlLCBza2lwcGluZzogJyR0bmFtZSc6ICQhXG4iOworCXJldHVybiAwOworICB9CisgIG15ICRtb2RlID0gKHN0YXQoIiRmbmFtZSIpKVsyXTsKKyAgaWYgKCRtb2RlKSB7IG15ICRyZXNwID0gY2htb2QgJG1vZGUsICIkdG5hbWUiOyB9CisKKyAgbXkgJGxpbmUgICA9ICIiOworICBteSBAdG91dCAgPSAoKTsKKyAgbXkgJHJldHZhbCA9IDE7CisKKyAgd2hpbGUgKCAkbGluZSA9IHNoaWZ0IEBmcm9tZmlsZSApIHsKKyAgICAjIGNoZWNrIGZvciBhbnkgaWZkZWYgc3RhdGUgY2hhbmdlcworCWlmICggISBjaGVja2lmZGVmKCRURiwgJGxpbmUsICRmbmFtZSkgKSB7CisgICAgICAkRkYtPmNsb3NlKCk7CisgICAgICAkVEYtPmNsb3NlKCk7CisgICAgICBkaWUgIkVycm9yOiB0YWcgZXJyb3IgaW4gZmlsZSBcJyRmbmFtZVwnLCBleGl0aW5nXG4iOworICAgIH0KKworICAgIGlmICggJGNhbndyaXRlICkgeworCSAgcHJpbnQgJFRGICIkbGluZSI7CisJfQorCWVsc2UgeworCSAgcHJpbnQgIkluZm86IG5vdCBjb3B5aW5nOiAkZm5hbWU6ICRsaW5lIiBpZiAoIGV4aXN0cyAkb3B0c3t2fSApOworICAgIH0KKworICB9CisKKyAgaWYgKCEgJGNhbndyaXRlKSB7CisgICAgICBwcmludCAiRW5kIG9mICRmbmFtZSByZWFjaGVkIGFuZCB3ZSdyZSBub3QgcmVzZXQgaW50byAnY2Fud3JpdGUnIHN0YXRlXG4iOworICB9CisgICRURi0+Y2xvc2UoKTsKKworICByZXR1cm4gJHJldHZhbDsKK30gIyBwYXJzZWZpbGUKKworCisjIG5vdGUsIGZyb21kaXIgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNoZWNrZWQgdG8gZXhpc3QgYW5kIGJlIGEKKyMgZGlyZWN0b3J5CitzdWIgbG9hZF9taW5hbWFsX2lmZGVmcyB7CisgICAgbXkgQGZpbGVsaXN0ID0gKCk7CisgICAgbXkgJE1GOworICAgIAorICAgIGlmICggIShvcGVuKCRNRiwgIjwgJGZyb21kaXIvJG1pbmltYWxfaW5jbHVkZV9wYXRoIikpICkgeworICAgICAgICBkaWUgIlVuYWJsZSB0byBvcGVuIG1haW4gbWluaW1hbCBmZWF0dXJlIGZpbGU6ICckZnJvbWRpci8kbWluaW1hbF9pbmNsdWRlX3BhdGgnXG4iOworICAgIH0KKyAgICBteSAkbGluZTsKKyAgICAjIHNraXAgcHJlY2VkaW5nIGxpbmVzCisgICAgd2hpbGUgKCAoJGxpbmUgPSA8JE1GPikgJiYKKyAgICAgICAgICAgICgkbGluZSAhfiAvXiNlbHNlLipORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTkcvICkgKSB7CisgICAgfQorICAgICMgZ3JhYiB0aGUgZmV0YXVyZSAuaCBmaWxlcworICAgIHdoaWxlICggKCRsaW5lID0gPCRNRj4pICYmCisgICAgICAgICAgICAoJGxpbmUgIX4gL14jZW5kaWYuKk5FVF9TTk1QX0ZFQVRVUkVfQ0hFQ0tJTkcvKSApIHsKKyAgICAgICAgaWYgKCRsaW5lID1+IC9pbmNsdWRlLio8KC4qLmgpPi8pIHsKKyAgICAgICAgICAgIHB1c2ggQGZpbGVsaXN0LCAkMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNsb3NlKCRNRik7CisKKyAgICB3aGlsZSAobXkgJGZuYW1lID0gc2hpZnQgQGZpbGVsaXN0KSB7CisgICAgICAgIGlmICggISggLWUgIiRmcm9tZGlyL2luY2x1ZGUvJGZuYW1lIiApICkgIHsKKyAgICAgICAgICAgIHByaW50ICJXYXJuOiBmZWF0dXJlIGZpbGUgZG9lcyBub3QgZXhpc3QsIHNraXBwaW5nOiAnJGZyb21kaXIvaW5jbHVkZS8kZm5hbWUnIjsKKyAgICAgICAgICAgIG5leHQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCAhKG9wZW4oJE1GLCAiPCAkZnJvbWRpci9pbmNsdWRlLyRmbmFtZSIpKSApIHsKKyAgICAgICAgICAgIGRpZSAiVW5hYmxlIHRvIG9wZW4gbWluaW1hbCBmZWF0dXJlIGZpbGU6ICckZnJvbWRpci9pbmNsdWRlLyRmbmFtZSdcbiI7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKCAoJGxpbmUgPSA8JE1GPikgKSB7CisgICAgICAgICAgICBpZiAoICRsaW5lID1+IC9eI2RlZmluZS4qKE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVbXiBdKykgLyApIHsKKyAgICAgICAgICAgICAgICAkdGhhc2h7IiQxIn0gPSAkU1RfT0ZGOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNsb3NlKCRNRik7CisgICAgfQorICAgICAgICAKK30gIyBsb2FkX21pbmFtYWxfaWZkZWZzCisKKworCisKZGlmZiAtLWdpdCBhL2xvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzIGIvbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVjZDY1NAotLS0gL2Rldi9udWxsCisrKyBiL2xvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzCkBAIC0wLDAgKzEsMzU5IEBACisjIS91c3IvYmluL3BlcmwKKwordXNlIHN0cmljdDsKK3VzZSBEYXRhOjpEdW1wZXI7Cit1c2UgR2V0b3B0OjpTdGQ7Cit1c2UgSU86OkZpbGU7CitvdXIgJW9wdHMgPSAoZCA9PiAnc2l6ZS10ZXN0cycpOworCisjIGRlZmF1bHQgYXJndW1lbnRzIGdvIGhlcmUKK215IEBzZXRzID0KKyAgICAoeworCSJ3aXRoLWRlZmF1bHRzIiA9PiAnJywKKyAgICAgfSk7CisKK215ICViYXNlX2FyZ3MgPSAleyRzZXRzWzBdfTsKK215ICgkYmFzZW5hbWUsICRiYXNlbnVtKTsKKworZ2V0b3B0cygndDpobGNEOm5qOm86ZWI6VCcsIFwlb3B0cykgfHwgdXNhZ2UoKTsKKworJG9wdHN7J2onfSA9ICItaiRvcHRze2p9IiBpZiAoZXhpc3RzKCRvcHRzeydqJ30pKTsKKwordXNhZ2UoKSBpZiAoJG9wdHN7J2gnfSk7CisKK215IEBhcmd1bWVudHNldHMgPQorICAgICgKKyAgICAgeworCSB0aXRsZSA9PiAnc2VjdXJpdHktdHlwZXMnLAorCSBhcmd1bWVudHMgPT4KKwkgeworCSAgICAgdXNtID0+IHsKKwkJICd3aXRoLXNlY3VyaXR5LW1vZHVsZXMnID0+ICd1c20nLAorCSAgICAgfSwKKwkgICAgIGR0bHNhbmR0bHMgPT4geworCQkgJ3dpdGgtc2VjdXJpdHktbW9kdWxlcycgICAgID0+ICd0c20nLAorCQkgJ3dpdGgtb3V0LXNlY3VyaXR5LW1vZHVsZXMnID0+ICd1c20nLAorCQkgJ3dpdGgtdHJhbnNwb3J0cycgICAgICAgICAgID0+ICdEVExTVURQIFRMU1RDUCcsCisJCSAnd2l0aC1taWItbW9kdWxlcycgICAgICAgICAgPT4gJ3Rsc3RtLW1pYiB0c20tbWliJworCSAgICAgfSwKKwkgICAgIHVzbWFuZGR0bHNhbmR0bHMgPT4geworCQkgJ3dpdGgtc2VjdXJpdHktbW9kdWxlcycgICAgID0+ICd0c20gdXNtJywKKwkJICd3aXRoLXRyYW5zcG9ydHMnICAgICAgICAgICA9PiAnRFRMU1VEUCBUTFNUQ1AnLAorCQkgJ3dpdGgtbWliLW1vZHVsZXMnICAgICAgICAgID0+ICd0bHN0bS1taWIgdHNtLW1pYicKKwkgICAgIH0KKwkgfQorICAgICB9LAorICAgICB7CisJIHRpdGxlID0+ICdtaW5pbWFsaXN0JywKKwkgYXJndW1lbnRzID0+CisJIHsgCisJICAgICBtaW5pbWFsID0+IHsKKwkJICdlbmFibGUtbWluaW1hbGlzdCcgICAgPT4gJycsCisJICAgICB9LAorCSAgICAgJ25vdC1taW5pbWFsJyA9PiB7CisJICAgICB9CisJIH0KKyAgICAgfSwKKyAgICAgeworCSB0aXRsZSA9PiAnbWliLWxvYWRpbmcnLAorCSBhcmd1bWVudHMgPT4KKwkgeyAKKwkgICAgICd3aXRob3V0LW1pYi1sb2FkaW5nJyA9PiB7CisJCSAnZGlzYWJsZS1taWItbG9hZGluZycgICAgPT4gJycsCisJICAgICB9LAorCSAgICAgJ3dpdGgtbWliLWxvYWRpbmcnID0+IHsKKwkgICAgIH0KKwkgfQorICAgICB9LAorICAgICB7CisJIHRpdGxlID0+ICdkZWJ1Z2dpbmcnLAorCSBhcmd1bWVudHMgPT4KKwkgeyAKKwkgICAgICd3aXRob3V0LWRlYnVnZ2luZycgPT4geworCQkgJ2Rpc2FibGUtZGVidWdnaW5nJyAgICA9PiAnJywKKwkgICAgIH0sCisJICAgICAnd2l0aC1kZWJ1Z2dpbmcnID0+IHsKKwkgICAgIH0KKwkgfQorICAgICB9LAorICAgICB7CisJIHRpdGxlID0+ICdsb2dnaW5nJywKKwkgYXJndW1lbnRzID0+CisJIHsgCisJICAgICAnd2l0aG91dC1sb2dnaW5nJyA9PiB7CisJCSAnd2l0aC1vdXQtZmVhdHVyZXMnICAgID0+ICdsb2dnaW5nJywKKwkgICAgIH0sCisJICAgICAnd2l0aC1sb2dnaW5nJyA9PiB7CisJICAgICB9CisJIH0KKyAgICAgfSwKKyAgICAgeworCSB0aXRsZSA9PiAnYWdlbnQtbWlicycsCisJIGFyZ3VtZW50cyA9PgorCSB7IAorCSAgICAgJ2Z1bGwtYWdlbnQnID0+IHsKKwkgICAgIH0sCisJICAgICAnbWluaS1hZ2VudCcgPT4geworCQkgJ2VuYWJsZS1taW5pLWFnZW50JyA9PiAnJywKKwkgICAgIH0KKwkgfQorICAgICB9LAorICAgICB7CisJIHRpdGxlID0+ICdwcm90b2NvbC1zdXBwb3J0JywKKwkgYXJndW1lbnRzID0+CisJIHsKKwkgICAgICdldmVyeXRoaW5nJyA9PiB7CisJICAgICB9LAorCSAgICAgJ3JlYWQtb25seScgPT4geworCQkgJ2VuYWJsZS1yZWFkLW9ubHknID0+ICcnLAorCSAgICAgfSwKKwkgICAgICdub3RpZnktb25seScgPT4geworCQkgJ2VuYWJsZS1ub3RpZnktb25seScgPT4gJycsCisJICAgICB9CisJIH0KKyAgICAgfSwKKyAgICAgeworCSB0aXRsZSA9PiAncGVybCcsCisJIGFyZ3VtZW50cyA9PgorCSB7IAorCSAgICAgJ3dpdGhvdXQtcGVybC1tb2R1bGVzJyA9PiB7CisJCSAnd2l0aG91dC1wZXJsLW1vZHVsZXMnICAgID0+ICcnLAorCQkgJ2Rpc2FibGUtZW1iZWRkZWQtcGVybCcgPT4gJycsCisJICAgICB9LAorCSAgICAgJ3dpdGgtcGVybC1uby1lbWJlZGRpbmcnID0+IHsKKwkJICd3aXRoLXBlcmwtbW9kdWxlcycgICAgPT4gJycsCisJCSAnZGlzYWJsZS1lbWJlZGRlZC1wZXJsJyA9PiAnJywKKwkgICAgIH0sCisJICAgICAnd2l0aC1wZXJsLWFuZC1lbWJlZGRpbmcnID0+IHsKKwkJICd3aXRoLXBlcmwtbW9kdWxlcycgICAgPT4gJycsCisJCSAnZW5hYmxlLWVtYmVkZGVkLXBlcmwnID0+ICcnLAorCSAgICAgfQorCSB9CisgICAgIH0sCisgICAgKTsKKworIyBtYXAgdGhlc2UgdG8gYSByZWZlcmVuY2FibGUgbG9va3VwIGhhc2gKK215ICVhcmd1bWVudHNldHM7Citmb3JlYWNoIG15ICRzZXQgKEBhcmd1bWVudHNldHMpIHsKKyAgICAkYXJndW1lbnRzZXRzeyRzZXQtPnsndGl0bGUnfX0gPSAkc2V0OworfQorCitpZiAoJG9wdHN7J2wnfSkgeworICAgIHByaW50ICJUeXBlcyBhdmFpbGFibGU6XG4iOworICAgIHByaW50ZigiICAlLTQwLjQwcyAlc1xuIiwgIlRlc3QgVGl0bGUiLCAiTnVtYmVyIG9mIHN1YnRlc3RzIik7CisgICAgcHJpbnRmKCIgICUtNDAuNDBzICVzXG4iLCAiLSIgeCAzOSwgIi0iIHggbGVuZ3RoKCJOdW1iZXIgb2Ygc3VidGVzdHMiKSk7CisgICAgZm9yZWFjaCBteSAkdHlwZSAoQGFyZ3VtZW50c2V0cykgeworCW15IEBrZXlzID0ga2V5cygleyR0eXBlLT57J2FyZ3VtZW50cyd9fSk7CisJcHJpbnRmKCIgICUtNDAuNDBzICVzXG4iLCAkdHlwZS0+eyd0aXRsZSd9LCAkI2tleXMrMSk7CisgICAgfQorICAgIGV4aXQ7Cit9CisKK215ICV0eXBlczsKK2lmICgkb3B0c3sndCd9KSB7CisgICAgbXkgQHR5cGVzID0gc3BsaXQoLyxccyovLCAkb3B0c3sndCd9KTsKKyAgICBmb3JlYWNoIG15ICR0eXBlIChAdHlwZXMpIHsKKwkkdHlwZXN7JHR5cGV9ID0gMTsKKyAgICB9Cit9CisKK2lmICgkb3B0c3snYid9KSB7CisgICAgIyB1c2UgdGhpcyBzZXQgYXMgdGhlIGJhc2UgZGVmYXVsdCBzZXQgb2YgYXJndW1lbnRzCisgICAgKCRiYXNlbmFtZSwgJGJhc2VudW0pID0gKCRvcHRzeydiJ30gPX4gLyguKik6KFxkKykvKTsKKyAgICBpZiAoIWV4aXN0cygkYXJndW1lbnRzZXRzeyRiYXNlbmFtZX0pKSB7CisJcHJpbnRmIFNUREVSUiAiZmFpbGVkIHRvIGZpbmQgc2V0IGZvciAtYiBhcmd1bWVudDogJXNcbiIsICRiYXNlbmFtZTsKKwlleGl0KDEpOworICAgIH0KKyAgICBAc2V0cyA9IGFkZF9pbl9mbGFncygkYXJndW1lbnRzZXRzeyRiYXNlbmFtZX0sIFwlYmFzZV9hcmdzLCAoKSk7CisgICAgQHNldHMgPSBAc2V0c1skYmFzZW51bV07CisgICAgJWJhc2VfYXJncyA9ICV7JHNldHNbMF19OworfQorCitmb3JlYWNoIG15ICRzZXQgKEBhcmd1bWVudHNldHMpIHsKKyAgICBpZiAoISRvcHRzeyd0J30gfHwgZXhpc3RzKCR0eXBlc3skc2V0LT57J3RpdGxlJ319KSkgeworICAgICAgICBpZiAoJGJhc2VuYW1lICYmICRzZXQtPnsndGl0bGUnfSBlcSAkYmFzZW5hbWUpIHsKKyAgICAgICAgICAgIG5leHQ7CisgICAgICAgIH0KKwlAc2V0cyA9IGFkZF9pbl9mbGFncygkc2V0LCBcJWJhc2VfYXJncywgQHNldHMpOworICAgIH0KK30KKworaWYgKCRvcHRzeydjJ30pIHsKKyAgICAjIHByaW50IHRoZSBjb25maWd1cmUgZmxhZ3MKKyAgICBmb3JlYWNoIG15ICRzZXQgKEBzZXRzKSB7CisJcHJpbnQgIiRzZXQtPnsndGl0bGUnfTpcbiI7CisJcHJpbnQgIiAiLCBnZW5lcmF0ZV9jb25maWd1cmVfZmxhZ3MoJHNldCksICJcbiI7CisgICAgfQorICAgIGV4aXQ7Cit9CisKK215ICRzdW1tYXJ5ZmlsZTsKK2lmICgkb3B0c3snbyd9ICYmICEkb3B0c3snbid9KSB7CisgICAgJHN1bW1hcnlmaWxlID0gbmV3IElPOjpGaWxlOworICAgICRzdW1tYXJ5ZmlsZS0+b3BlbigiPiRvcHRze299Iik7Cit9CisKK215ICRjb3VudCA9IDA7Citmb3JlYWNoIG15ICRzZXQgKEBzZXRzKSB7CisgICAgJGNvdW50Kys7CisgICAgYnVpbGRfc2V0KCRjb3VudCwgJHNldCk7Cit9CisKK3N1YiBhZGRfaW5fZmxhZ3MgeworICAgIG15ICgkYXJndW1lbnRzZXQsICRiYXNlX2ZsYWdzLCBAY3VycmVudF9mbGFncykgPSBAXzsKKworICAgIG15IEBuZXdfZmxhZ3M7CisKKyAgICAjIGRvIGEgbGluZWFyIHNlYXJjaCBvZiB0aGUgb3B0aW9ucworICAgIGlmICghICRvcHRzeydlJ30pIHsKKwlAbmV3X2ZsYWdzID0gQGN1cnJlbnRfZmxhZ3M7CisJZm9yZWFjaCBteSAkbmV3YXJncyAoa2V5cygleyRhcmd1bWVudHNldC0+eydhcmd1bWVudHMnfX0pKSB7CisJICAgIG15ICVmbGFncyA9ICUkYmFzZV9mbGFnczsKKworCSAgICAkZmxhZ3N7J3RpdGxlJ30gPSAiJGZsYWdzeyd0aXRsZSd9OiRuZXdhcmdzIjsKKworCSAgICBmb3JlYWNoIG15ICRuZXdmbGFnIChrZXlzKCV7JGFyZ3VtZW50c2V0LT57J2FyZ3VtZW50cyd9eyRuZXdhcmdzfX0pKSB7CisKKwkJJGZsYWdzeyRuZXdmbGFnfSAuPSAiICRhcmd1bWVudHNldC0+eydhcmd1bWVudHMnfXskbmV3YXJnc317JG5ld2ZsYWd9IjsKKwkgICAgfQorCSAgICBwdXNoIEBuZXdfZmxhZ3MsIFwlZmxhZ3M7CisJfQorCXJldHVybiBAbmV3X2ZsYWdzOworICAgIH0KKworICAgICMgb3IgYW4gZXhwb25lbnRpYWwgc2VhcmNoCisgICAgZm9yZWFjaCBteSAkZmxhZ3MgKEBjdXJyZW50X2ZsYWdzKSB7CisJZm9yZWFjaCBteSAkbmV3YXJncyAoa2V5cygleyRhcmd1bWVudHNldC0+eydhcmd1bWVudHMnfX0pKSB7CisJICAgIG15ICVmbGFncyA9ICV7JGZsYWdzfTsgICMgY29weSB0aGUgZXhpc3RpbmcgaGFzaC1zZXQgb2YgZmxhZ3MKKwkgICAgCisJICAgIGlmIChleGlzdHMoJGZsYWdzeyd0aXRsZSd9KSkgeworCQkkZmxhZ3N7J3RpdGxlJ30gLj0gIiwgJG5ld2FyZ3MiOworCSAgICB9IGVsc2UgeworCQkkZmxhZ3N7J3RpdGxlJ30gLj0gIiRuZXdhcmdzIjsKKwkgICAgfQorCSAgICBmb3JlYWNoIG15ICRuZXdmbGFnIChrZXlzKCV7JGFyZ3VtZW50c2V0LT57J2FyZ3VtZW50cyd9eyRuZXdhcmdzfX0pKSB7CisKKwkJJGZsYWdzeyRuZXdmbGFnfSAuPSAiICRhcmd1bWVudHNldC0+eydhcmd1bWVudHMnfXskbmV3YXJnc317JG5ld2ZsYWd9IjsKKwkgICAgfQorCisJICAgIHB1c2ggQG5ld19mbGFncywgXCVmbGFnczsKKwl9CisgICAgfQorCisgICAgcmV0dXJuIEBuZXdfZmxhZ3M7Cit9CisKK3N1YiBnZW5lcmF0ZV9jb25maWd1cmVfZmxhZ3MgeworICAgIG15ICgkYXJndW1lbnRzKSA9IEBfOworICAgIG15ICRsaW5lID0gIiI7CisgICAgZm9yZWFjaCBteSAkYXJnIChrZXlzKCUkYXJndW1lbnRzKSkgeworCW5leHQgaWYgKCRhcmcgZXEgJ3RpdGxlJyk7CisJaWYgKCRhcmd1bWVudHMtPnskYXJnfSA9fiAvXlxzKiQvKSB7CisJICAgICRsaW5lIC49ICIgLS0kYXJnIjsKKwl9IGVsc2UgeworCSAgICAkbGluZSAuPSAiIC0tJGFyZz1cIiRhcmd1bWVudHMtPnskYXJnfVwiIjsKKwl9CisgICAgfQorICAgIHJldHVybiAkbGluZTsKK30KKworc3ViIGJ1aWxkX3NldCB7CisgICAgbXkgKCRudW0sICRhcmd1bWVudHMpID0gQF87CisKKyAgICAkbnVtID0gc3ByaW50ZigiJTAzZCIsICRudW0pOworCisgICAgbXkgJGZpbGU7CisKKyAgICBpZiAoISRvcHRzeyduJ30pIHsKKwlta2RpciAkb3B0c3snZCd9IGlmICghIC1kICRvcHRzeydkJ30pOworCWRpZSAiZmFpbGVkIHRvIGNyZWF0ZSB0aGUgJG9wdHN7J2QnfSBkaXJlY3RvcnkiIGlmICghIC1kICRvcHRzeydkJ30pOworCisJJGZpbGUgPSBuZXcgSU86OkZpbGU7CisJJGZpbGUtPm9wZW4oIj4kb3B0c3snZCd9LyRudW0tMC1jbWQtc3VtbWFyeSIpOworCSRmaWxlLT5wcmludCgiQ3JlYXRpbmcgb3V0cHV0IGZvcjogJGFyZ3VtZW50cy0+eyd0aXRsZSd9XG4iKTsKKyAgICB9CisKKyAgICBwcmludCAiPT09PT09PT09PT09PT09PT09PT0gJGFyZ3VtZW50cy0+eyd0aXRsZSd9XG4iOworCisKKyAgICBTeXN0ZW0gKCRmaWxlLCAkbnVtLCAiMS1kaXN0Y2xlYW4iLCAibWFrZSBkaXN0Y2xlYW4iKTsKKyAgICBTeXN0ZW0gKCRmaWxlLCAkbnVtLCAiMi1jb25maWd1cmUiLAorCSAgICAiLi9jb25maWd1cmUgIiAuIGdlbmVyYXRlX2NvbmZpZ3VyZV9mbGFncygkYXJndW1lbnRzKSk7CisgICAgU3lzdGVtICgkZmlsZSwgJG51bSwgIjMtZmVhdHVyZXMiLCAibWFrZSBmZWF0dXJlcyIpOworICAgIFN5c3RlbSAoJGZpbGUsICRudW0sICI0LW1ha2UiLCAibWFrZSAkb3B0c3snaid9Iik7CisgICAgU3lzdGVtICgkZmlsZSwgJG51bSwgIjUtdW51c2VkLWNvZGUiLCAicGVybCBsb2NhbC9taW5pbWFsaXN0L2ZpbmQtdW51c2VkLWNvZGUgLWciKTsKKyAgICBTeXN0ZW0gKCRmaWxlLCAkbnVtLCAiNi10ZXN0aW5nIiwgIm1ha2UgLUMgdGVzdGluZyB0ZXN0IikgaWYgKCRvcHRzeydUJ30pOworCisgICAgaWYgKCEkb3B0c3snbid9KSB7CisJYW5hbHl6ZV9zaXplKCRhcmd1bWVudHMtPnsndGl0bGUnfSwgIiRvcHRzeydkJ30vJG51bS05LXJlc3VsdHMiKTsKKyAgICB9Cit9CisKK3N1YiBhbmFseXplX3NpemUgeworICAgIG15ICgkdGl0bGUsICRmaWxlbmFtZSkgPSBAXzsKKworICAgIG15ICRvdXRmaWxlID0gbmV3IElPOjpGaWxlOworICAgICRvdXRmaWxlLT5vcGVuKCI+JGZpbGVuYW1lIik7CisKKyAgICBwcmludCAiUmVzdWx0cyBmb3I6ICR0aXRsZVxuIjsKKyAgICBwcmludGYgJG91dGZpbGUgIlJlc3VsdHMgZm9yOiAkdGl0bGVcbiI7CisgICAgcHJpbnRmICgiJS01MC41MHMgJTEwc1xuIiwgIi0iIHggNDksICItIiB4IDEwKTsKKyAgICBwcmludGYgJG91dGZpbGUgKCIlLTUwLjUwcyAlMTBzXG4iLCAiLSIgeCA0OSwgIi0iIHggMTApOworCisgICAgbXkgJHRvdGFsc2l6ZSA9IDA7CisgICAgZm9yZWFjaCBteSAkYnVpbGRmaWxlIChnbG9iKCJzbm1wbGliLy5saWJzL2xpYiouc28uKi4wLjAiKSwKKwkJCSAgIGdsb2IoImFnZW50Ly5saWJzL2xpYiouc28uKi4wLjAiKSwKKwkJCSAgICJhZ2VudC8ubGlicy9zbm1wZCIpIHsKKworCW15IEBpbmZvID0gc3RhdCgkYnVpbGRmaWxlKTsKKwlwcmludGYgJG91dGZpbGUgKCIlLTUwLjUwcyAlMTBzXG4iLCAkYnVpbGRmaWxlLCAkaW5mb1s3XSk7CisJcHJpbnRmKCIlLTUwLjUwcyAlMTBzXG4iLCAkYnVpbGRmaWxlLCAkaW5mb1s3XSk7CisJJHRvdGFsc2l6ZSArPSAkaW5mb1s3XTsKKyAgICB9CisgICAgcHJpbnRmICRvdXRmaWxlICgiJS01MC41MHMgJTEwc1xuIiwgIi0iIHggNDksICItIiB4IDEwKTsKKyAgICBwcmludGYgJG91dGZpbGUgKCIlLTUwLjUwcyAlMTBzIGJ5dGVzXG4iLCAiVE9UQUwiLCAkdG90YWxzaXplKTsKKworICAgIHByaW50ZigiJS01MC41MHMgJTEwc1xuIiwgIi0iIHggNDksICItIiB4IDEwKTsKKyAgICBwcmludGYoIiUtNTAuNTBzICUxMHMgYnl0ZXNcbiIsICJUT1RBTCIsICR0b3RhbHNpemUpOworCisgICAgaWYgKGRlZmluZWQoJHN1bW1hcnlmaWxlKSkgeworCW15ICRyZXN0cmljdGVkX3RpdGxlID0gJHRpdGxlOworCSRyZXN0cmljdGVkX3RpdGxlID1+IHMvW15hLXpBLVpdL18vZzsKKwlwcmludGYgJHN1bW1hcnlmaWxlICIlMTBzICVzIFxuIiwgJHRvdGFsc2l6ZSwgJHRpdGxlOworICAgIH0KKworICAgIHJldHVybiAkdG90YWxzaXplOworfQorCitzdWIgdXNhZ2UgeworICAgIHByaW50ICJVc2FnZTogJDAgW0ZMQUdTXVxuXG4iOworICAgIHByaW50ICJGTEFHUzpcbiI7CisgICAgcHJpbnQgIiAgLWhcdFx0aGVscFxuIjsKKyAgICBwcmludCAiICAtdCBUWVBFU1x0U2VsZWN0IHR5cGVzIHRvIGFuYWx5emUgKGRlZmF1bHQgPSBhbGwpXG4iOworICAgIHByaW50ICIgIC1sXHRcdExpc3QgYXZhaWxhYmxlIHR5cGVzXG4iOworICAgIHByaW50ICIgIC1jXHRcdFByaW50IHRoZSBjb25maWd1cmF0aW9uIGZsYWdzIHRoYXQgd291bGQgYmUgdXNlZFxuIjsKKyAgICBwcmludCAiICAtRCBESVJcdFNhdmUgZGF0YSByZXN1bHRzIHRvIHRoaXMgZGlyZWN0b3J5XG4iOworICAgIHByaW50ICIgIC1vIEZJTEVcdFNhdmUgYSBjb21wbGV0ZSBzdW1tYXJ5IGNoYXJ0IHRvIEZJTEVcbiI7IAorICAgIHByaW50ICIgIC1uXHRcdERyeSBydW4gLS0gb25seSBzaG93IHRoZSBjb21tYW5kcyB0byBleGVjdXRlXG4iOworICAgIHByaW50ICIgIC1qIE5VTVx0RXhlY3V0ZSBtYWtlIHdpdGggcGFyYWxsZWwgYnVpbGRpbmcgKC1qTlVNKVxuIjsKKyAgICBwcmludCAiICAtZVx0XHRVc2UgZXhwb25lbnRpYWwgZXhwYW5zaW9uIChhbGwgY29tYm9zKSBvZiB0aGUgcmVxdWVzdGVkIG9wdGlvbnNcbiI7CisgICAgcHJpbnQgIiAgLWIgTkFNRTpOVU1cdFVzZSBOQU1FIGFuZCB0aGUgTlVNJ3RoIHNldCBhcyB0aGUgYmFzZSBhcmd1bWVudHMgdG8gc3RhcnQgZnJvbVxuIjsKKyAgICBwcmludCAiICAtVFx0XHRSdW4gJ21ha2UgdGVzdCcgYXQgZWFjaCBzdGVwIGFzIHdlbGxcbiI7CisgICAgZXhpdDsKK30KKworc3ViIFN5c3RlbSB7CisgICAgbXkgJGZpbGUgID0gc2hpZnQ7CisgICAgbXkgJG51bSAgID0gc2hpZnQ7CisgICAgbXkgJHRpdGxlID0gc2hpZnQ7CisgICAgbXkgJHBpcGUgPSAiIDI+JjEgfCB0ZWUgJG9wdHN7J2QnfS8kbnVtLSR0aXRsZS5vdXRcbiI7CisKKyAgICBwcmludCAiIyMjICIsIGpvaW4oIiAiLCBAXyksICRwaXBlOworICAgIGlmICghJG9wdHN7J24nfSAmJiAkZmlsZSkgeworCXByaW50ICRmaWxlICIjIyMgIiwgam9pbigiICIsIEBfKSwgIlxuIjsKKyAgICB9CisKKyAgICBpZiAoISRvcHRzeyduJ30pIHsKKwlzeXN0ZW0oam9pbigiICIsIEBfKSAuICRwaXBlKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9sb2NhbC9uZXQtc25tcC1jZXJ0IGIvbG9jYWwvbmV0LXNubXAtY2VydAppbmRleCA4NTJhNDdmLi5hNDVkYzU3IDEwMDc1NQotLS0gYS9sb2NhbC9uZXQtc25tcC1jZXJ0CisrKyBiL2xvY2FsL25ldC1zbm1wLWNlcnQKQEAgLTE1MTksNyArMTUxOSw3IEBACiAKICAgIyBFeGlzdGluZyBvcGVuc3NsLmNvbmYgdG1wbCB3aWxsIGJlIHByZXNlcnZlZAogICBpZiAoLWYgJHNzbF9jZmdfaW4pIHsKLSAgICBOZXRTTk1QOjpDZXJ0Ojpkd2FybigiT3BlblNTTCB0ZW1wbGF0ZSBleGlzdHM6IHByZXNlcnZpbmcuLi4iLCAkb3B0cyk7CisgICAgTmV0U05NUDo6Q2VydDo6ZHdhcm4oIk9wZW5TU0wgdGVtcGxhdGUgZXhpc3RzICgkc3NsX2NmZ19pbik6IHByZXNlcnZpbmcuLi4iLCAkb3B0cyk7CiAgIH0KIAogICBpZiAobm90IC1mICRzc2xfY2ZnX2luKSB7CmRpZmYgLS1naXQgYS9sb2NhbC9zbm1wY29uZiBiL2xvY2FsL3NubXBjb25mLmluCnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIGxvY2FsL3NubXBjb25mCnJlbmFtZSB0byBsb2NhbC9zbm1wY29uZi5pbgppbmRleCAzN2E1MTM2Li5iZmY4MDI1IDEwMDc1NQotLS0gYS9sb2NhbC9zbm1wY29uZgorKysgYi9sb2NhbC9zbm1wY29uZi5pbgpAQCAtOTIsMTMgKzkyLDkgQEAKIH0KIAogIwotIyBFeHBhbmQgdGhlIHNlYXJjaCBwYXRoIGluIGNhc2UgaXQgY29udGFpbnMgbXVsdGlwbGUgZGlyZWN0b3JpZXMKLSMgc2VwYXJhdGVkIGJ5IDogKFVuaXgpIG9yIDsgKFdpbjMyKQorIyBFeHBhbmQgdGhlIHNlYXJjaCBwYXRoIGluIGNhc2UgaXQgY29udGFpbnMgbXVsdGlwbGUgZGlyZWN0b3JpZXMuCiAjCi1teSAkRU5WX1NFUEFSQVRPUiA9ICc6JzsKLWlmICgkXk8gZXEgJ01TV2luMzInKSB7Ci0gICRFTlZfU0VQQVJBVE9SID0gJzsnOwotfQorbXkgJEVOVl9TRVBBUkFUT1IgPSAnQEVOVl9TRVBBUkFUT1JAJzsKIG15IEBzZWFyY2hwYXRoID0gc3BsaXQoLyRFTlZfU0VQQVJBVE9SLywgJGNvbmZwYXRoKTsKIHB1c2ggQHNlYXJjaHBhdGgsICIvdXNyL2xvY2FsL2V0Yy9zbm1wIjsKIHB1c2ggQHNlYXJjaHBhdGgsICIuIjsKZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAppbmRleCAxZTNiMTQ2Li5lZDE4MTRmIDEwMDc1NQotLS0gYS9sdG1haW4uc2gKKysrIGIvbHRtYWluLnNoCkBAIC0xLDkgKzEsOSBAQAotIyBHZW5lcmF0ZWQgZnJvbSBsdG1haW4ubTRzaC4KIAotIyBsdG1haW4uc2ggKEdOVSBsaWJ0b29sKSAyLjIuNgorIyBsaWJ0b29sIChHTlUgbGlidG9vbCkgMi40CiAjIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQgPGdvcmRAZ251LmFpLm1pdC5lZHU+LCAxOTk2CiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwKKyMgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICMgVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KICMgd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCiAKQEAgLTMyLDUwICszMiw1NiBAQAogIwogIyBQcm92aWRlIGdlbmVyYWxpemVkIGxpYnJhcnktYnVpbGRpbmcgc3VwcG9ydCBzZXJ2aWNlcy4KICMKLSMgICAgIC0tY29uZmlnICAgICAgICAgICAgIHNob3cgYWxsIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzCi0jICAgICAtLWRlYnVnICAgICAgICAgICAgICBlbmFibGUgdmVyYm9zZSBzaGVsbCB0cmFjaW5nCi0jIC1uLCAtLWRyeS1ydW4gICAgICAgICAgICBkaXNwbGF5IGNvbW1hbmRzIHdpdGhvdXQgbW9kaWZ5aW5nIGFueSBmaWxlcwotIyAgICAgLS1mZWF0dXJlcyAgICAgICAgICAgZGlzcGxheSBiYXNpYyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFuZCBleGl0Ci0jICAgICAtLW1vZGU9TU9ERSAgICAgICAgICB1c2Ugb3BlcmF0aW9uIG1vZGUgTU9ERQotIyAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcyAgZG9uJ3QgcmVtb3ZlIGR1cGxpY2F0ZSBkZXBlbmRlbmN5IGxpYnJhcmllcwotIyAgICAgLS1xdWlldCwgLS1zaWxlbnQgICAgZG9uJ3QgcHJpbnQgaW5mb3JtYXRpb25hbCBtZXNzYWdlcwotIyAgICAgLS10YWc9VEFHICAgICAgICAgICAgdXNlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZyb20gdGFnIFRBRwotIyAtdiwgLS12ZXJib3NlICAgICAgICAgICAgcHJpbnQgaW5mb3JtYXRpb25hbCBtZXNzYWdlcyAoZGVmYXVsdCkKLSMgICAgIC0tdmVyc2lvbiAgICAgICAgICAgIHByaW50IHZlcnNpb24gaW5mb3JtYXRpb24KLSMgLWgsIC0taGVscCAgICAgICAgICAgICAgIHByaW50IHNob3J0IG9yIGxvbmcgaGVscCBtZXNzYWdlCisjICAgICAgIC0tY29uZmlnICAgICAgICAgICAgIHNob3cgYWxsIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzCisjICAgICAgIC0tZGVidWcgICAgICAgICAgICAgIGVuYWJsZSB2ZXJib3NlIHNoZWxsIHRyYWNpbmcKKyMgICAtbiwgLS1kcnktcnVuICAgICAgICAgICAgZGlzcGxheSBjb21tYW5kcyB3aXRob3V0IG1vZGlmeWluZyBhbnkgZmlsZXMKKyMgICAgICAgLS1mZWF0dXJlcyAgICAgICAgICAgZGlzcGxheSBiYXNpYyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFuZCBleGl0CisjICAgICAgIC0tbW9kZT1NT0RFICAgICAgICAgIHVzZSBvcGVyYXRpb24gbW9kZSBNT0RFCisjICAgICAgIC0tcHJlc2VydmUtZHVwLWRlcHMgIGRvbid0IHJlbW92ZSBkdXBsaWNhdGUgZGVwZW5kZW5jeSBsaWJyYXJpZXMKKyMgICAgICAgLS1xdWlldCwgLS1zaWxlbnQgICAgZG9uJ3QgcHJpbnQgaW5mb3JtYXRpb25hbCBtZXNzYWdlcworIyAgICAgICAtLW5vLXF1aWV0LCAtLW5vLXNpbGVudAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzIChkZWZhdWx0KQorIyAgICAgICAtLXRhZz1UQUcgICAgICAgICAgICB1c2UgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZnJvbSB0YWcgVEFHCisjICAgLXYsIC0tdmVyYm9zZSAgICAgICAgICAgIHByaW50IG1vcmUgaW5mb3JtYXRpb25hbCBtZXNzYWdlcyB0aGFuIGRlZmF1bHQKKyMgICAgICAgLS1uby12ZXJib3NlICAgICAgICAgZG9uJ3QgcHJpbnQgdGhlIGV4dHJhIGluZm9ybWF0aW9uYWwgbWVzc2FnZXMKKyMgICAgICAgLS12ZXJzaW9uICAgICAgICAgICAgcHJpbnQgdmVyc2lvbiBpbmZvcm1hdGlvbgorIyAgIC1oLCAtLWhlbHAsIC0taGVscC1hbGwgICBwcmludCBzaG9ydCwgbG9uZywgb3IgZGV0YWlsZWQgaGVscCBtZXNzYWdlCiAjCiAjIE1PREUgbXVzdCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKICMKLSMgICAgICAgY2xlYW4gICAgICAgICAgICAgIHJlbW92ZSBmaWxlcyBmcm9tIHRoZSBidWlsZCBkaXJlY3RvcnkKLSMgICAgICAgY29tcGlsZSAgICAgICAgICAgIGNvbXBpbGUgYSBzb3VyY2UgZmlsZSBpbnRvIGEgbGlidG9vbCBvYmplY3QKLSMgICAgICAgZXhlY3V0ZSAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgc2V0IGxpYnJhcnkgcGF0aCwgdGhlbiBydW4gYSBwcm9ncmFtCi0jICAgICAgIGZpbmlzaCAgICAgICAgICAgICBjb21wbGV0ZSB0aGUgaW5zdGFsbGF0aW9uIG9mIGxpYnRvb2wgbGlicmFyaWVzCi0jICAgICAgIGluc3RhbGwgICAgICAgICAgICBpbnN0YWxsIGxpYnJhcmllcyBvciBleGVjdXRhYmxlcwotIyAgICAgICBsaW5rICAgICAgICAgICAgICAgY3JlYXRlIGEgbGlicmFyeSBvciBhbiBleGVjdXRhYmxlCi0jICAgICAgIHVuaW5zdGFsbCAgICAgICAgICByZW1vdmUgbGlicmFyaWVzIGZyb20gYW4gaW5zdGFsbGVkIGRpcmVjdG9yeQorIyAgICAgICAgIGNsZWFuICAgICAgICAgICAgICByZW1vdmUgZmlsZXMgZnJvbSB0aGUgYnVpbGQgZGlyZWN0b3J5CisjICAgICAgICAgY29tcGlsZSAgICAgICAgICAgIGNvbXBpbGUgYSBzb3VyY2UgZmlsZSBpbnRvIGEgbGlidG9vbCBvYmplY3QKKyMgICAgICAgICBleGVjdXRlICAgICAgICAgICAgYXV0b21hdGljYWxseSBzZXQgbGlicmFyeSBwYXRoLCB0aGVuIHJ1biBhIHByb2dyYW0KKyMgICAgICAgICBmaW5pc2ggICAgICAgICAgICAgY29tcGxldGUgdGhlIGluc3RhbGxhdGlvbiBvZiBsaWJ0b29sIGxpYnJhcmllcworIyAgICAgICAgIGluc3RhbGwgICAgICAgICAgICBpbnN0YWxsIGxpYnJhcmllcyBvciBleGVjdXRhYmxlcworIyAgICAgICAgIGxpbmsgICAgICAgICAgICAgICBjcmVhdGUgYSBsaWJyYXJ5IG9yIGFuIGV4ZWN1dGFibGUKKyMgICAgICAgICB1bmluc3RhbGwgICAgICAgICAgcmVtb3ZlIGxpYnJhcmllcyBmcm9tIGFuIGluc3RhbGxlZCBkaXJlY3RvcnkKICMKLSMgTU9ERS1BUkdTIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSBNT0RFLgorIyBNT0RFLUFSR1MgdmFyeSBkZXBlbmRpbmcgb24gdGhlIE1PREUuICBXaGVuIHBhc3NlZCBhcyBmaXJzdCBvcHRpb24sCisjIGAtLW1vZGU9TU9ERScgbWF5IGJlIGFiYnJldmlhdGVkIGFzIGBNT0RFJyBvciBhIHVuaXF1ZSBhYmJyZXZpYXRpb24gb2YgdGhhdC4KICMgVHJ5IGAkcHJvZ25hbWUgLS1oZWxwIC0tbW9kZT1NT0RFJyBmb3IgYSBtb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIE1PREUuCiAjCiAjIFdoZW4gcmVwb3J0aW5nIGEgYnVnLCBwbGVhc2UgZGVzY3JpYmUgYSB0ZXN0IGNhc2UgdG8gcmVwcm9kdWNlIGl0IGFuZAogIyBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246CiAjCi0jICAgICAgIGhvc3QtdHJpcGxldDoJJGhvc3QKLSMgICAgICAgc2hlbGw6CQkkU0hFTEwKLSMgICAgICAgY29tcGlsZXI6CQkkTFRDQwotIyAgICAgICBjb21waWxlciBmbGFnczoJCSRMVENGTEFHUwotIyAgICAgICBsaW5rZXI6CQkkTEQgKGdudT8gJHdpdGhfZ251X2xkKQotIyAgICAgICAkcHJvZ25hbWU6CQkoR05VIGxpYnRvb2wpIDIuMi42Ci0jICAgICAgIGF1dG9tYWtlOgkJJGF1dG9tYWtlX3ZlcnNpb24KLSMgICAgICAgYXV0b2NvbmY6CQkkYXV0b2NvbmZfdmVyc2lvbgorIyAgICAgICAgIGhvc3QtdHJpcGxldDoJJGhvc3QKKyMgICAgICAgICBzaGVsbDoJCSRTSEVMTAorIyAgICAgICAgIGNvbXBpbGVyOgkJJExUQ0MKKyMgICAgICAgICBjb21waWxlciBmbGFnczoJCSRMVENGTEFHUworIyAgICAgICAgIGxpbmtlcjoJCSRMRCAoZ251PyAkd2l0aF9nbnVfbGQpCisjICAgICAgICAgJHByb2duYW1lOgkoR05VIGxpYnRvb2wpIDIuNAorIyAgICAgICAgIGF1dG9tYWtlOgkkYXV0b21ha2VfdmVyc2lvbgorIyAgICAgICAgIGF1dG9jb25mOgkkYXV0b2NvbmZfdmVyc2lvbgogIwogIyBSZXBvcnQgYnVncyB0byA8YnVnLWxpYnRvb2xAZ251Lm9yZz4uCisjIEdOVSBsaWJ0b29sIGhvbWUgcGFnZTogPGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJ0b29sLz4uCisjIEdlbmVyYWwgaGVscCB1c2luZyBHTlUgc29mdHdhcmU6IDxodHRwOi8vd3d3LmdudS5vcmcvZ2V0aGVscC8+LgogCi1QUk9HUkFNPWx0bWFpbi5zaAorUFJPR1JBTT1saWJ0b29sCiBQQUNLQUdFPWxpYnRvb2wKLVZFUlNJT049Mi4yLjYKK1ZFUlNJT049Mi40CiBUSU1FU1RBTVA9IiIKLXBhY2thZ2VfcmV2aXNpb249MS4zMDEyCitwYWNrYWdlX3JldmlzaW9uPTEuMzI5MwogCiAjIEJlIEJvdXJuZSBjb21wYXRpYmxlCiBpZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KQEAgLTkxLDEwICs5NywxNSBAQAogQklOX1NIPXhwZzQ7IGV4cG9ydCBCSU5fU0ggIyBmb3IgVHJ1NjQKIERVQUxDQVNFPTE7IGV4cG9ydCBEVUFMQ0FTRSAjIGZvciBNS1Mgc2gKIAorIyBBIGZ1bmN0aW9uIHRoYXQgaXMgdXNlZCB3aGVuIHRoZXJlIGlzIG5vIHByaW50IGJ1aWx0aW4gb3IgcHJpbnRmLgorZnVuY19mYWxsYmFja19lY2hvICgpCit7CisgIGV2YWwgJ2NhdCA8PF9MVEVDSE9fRU9GCiskMQorX0xURUNIT19FT0YnCit9CisKICMgTkxTIG51aXNhbmNlczogV2Ugc2F2ZSB0aGUgb2xkIHZhbHVlcyB0byByZXN0b3JlIGR1cmluZyBleGVjdXRlIG1vZGUuCi0jIE9ubHkgc2V0IExBTkcgYW5kIExDX0FMTCB0byBDIGlmIGFscmVhZHkgc2V0LgotIyBUaGVzZSBtdXN0IG5vdCBiZSBzZXQgdW5jb25kaXRpb25hbGx5IGJlY2F1c2Ugbm90IGFsbCBzeXN0ZW1zIHVuZGVyc3RhbmQKLSMgZS5nLiBMQU5HPUMgKG5vdGFibHkgU0NPKS4KIGx0X3VzZXJfbG9jYWxlPQogbHRfc2FmZV9sb2NhbGU9CiBmb3IgbHRfdmFyIGluIExBTkcgTEFOR1VBR0UgTENfQUxMIExDX0NUWVBFIExDX0NPTExBVEUgTENfTUVTU0FHRVMKQEAgLTEwNywyNCArMTE4LDMzIEBACiAJICBsdF9zYWZlX2xvY2FsZT1cIiRsdF92YXI9QzsgXCRsdF9zYWZlX2xvY2FsZVwiCiAJZmkiCiBkb25lCitMQ19BTEw9QworTEFOR1VBR0U9QworZXhwb3J0IExBTkdVQUdFIExDX0FMTAogCiAkbHRfdW5zZXQgQ0RQQVRICiAKIAorIyBXb3JrIGFyb3VuZCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGlzc3VlIG9uIElSSVggNi41LiBPbiBJUklYIDYuNCssIHNoCisjIGlzIGtzaCBidXQgd2hlbiB0aGUgc2hlbGwgaXMgaW52b2tlZCBhcyAic2giIGFuZCB0aGUgY3VycmVudCB2YWx1ZSBvZgorIyB0aGUgX1hQRyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3QgZXF1YWwgdG8gMSAob25lKSwgdGhlIHNwZWNpYWwKKyMgcG9zaXRpb25hbCBwYXJhbWV0ZXIgJDAsIHdpdGhpbiBhIGZ1bmN0aW9uIGNhbGwsIGlzIHRoZSBuYW1lIG9mIHRoZQorIyBmdW5jdGlvbi4KK3Byb2dwYXRoPSIkMCIKIAogCiAKIDogJHtDUD0iY3AgLWYifQotOiAke0VDSE89ImVjaG8ifQotOiAke0VHUkVQPSIvdXNyL2Jpbi9ncmVwIC1FIn0KLTogJHtGR1JFUD0iL3Vzci9iaW4vZ3JlcCAtRiJ9Ci06ICR7R1JFUD0iL3Vzci9iaW4vZ3JlcCJ9Cit0ZXN0ICIke0VDSE8rc2V0fSIgPSBzZXQgfHwgRUNITz0ke2FzX2VjaG8tJ3ByaW50ZiAlc1xuJ30KKzogJHtFR1JFUD0iZ3JlcCAtRSJ9Cis6ICR7RkdSRVA9ImdyZXAgLUYifQorOiAke0dSRVA9ImdyZXAifQogOiAke0xOX1M9ImxuIC1zIn0KIDogJHtNQUtFPSJtYWtlIn0KIDogJHtNS0RJUj0ibWtkaXIifQogOiAke01WPSJtdiAtZiJ9CiA6ICR7Uk09InJtIC1mIn0KLTogJHtTRUQ9Ii9vcHQvbG9jYWwvYmluL2dzZWQifQorOiAke1NFRD0ic2VkIn0KIDogJHtTSEVMTD0iJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0ifQogOiAke1hzZWQ9IiRTRUQgLWUgMXMvXlgvLyJ9CiAKQEAgLTE0NCw2ICsxNjQsMjcgQEAKIGRpcm5hbWU9InMsL1teL10qJCwsIgogYmFzZW5hbWU9InMsXi4qLywsIgogCisjIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKyMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKyMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorZnVuY19kaXJuYW1lICgpCit7CisgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAorICAgIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCisgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorICAgIGVsc2UKKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKyAgICBmaQorfSAjIGZ1bmNfZGlybmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworCisjIGZ1bmNfYmFzZW5hbWUgZmlsZQorZnVuY19iYXNlbmFtZSAoKQoreworICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAorfSAjIGZ1bmNfYmFzZW5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKwogIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAogIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgogIyBjYWxsOgpAQCAtMTU4LDMzICsxOTksMTgzIEBACiAjIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKIHsKLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkZGlybmFtZSJgCi0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLSAgZWxzZQotICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLSAgZmkKLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJGJhc2VuYW1lImAKKyAgICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgLWUgIiRkaXJuYW1lImAKKyAgICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKyAgICBlbHNlCisgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCisgICAgZmkKKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAtZSAiJGJhc2VuYW1lImAKK30gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCisKKyMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCisjIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKyMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQorZnVuY19zdHJpcG5hbWUgKCkKK3sKKyAgICBjYXNlICR7Mn0gaW4KKyAgICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CisgICAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CisgICAgZXNhYworfSAjIGZ1bmNfc3RyaXBuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCisKKyMgVGhlc2UgU0VEIHNjcmlwdHMgcHJlc3VwcG9zZSBhbiBhYnNvbHV0ZSBwYXRoIHdpdGggYSB0cmFpbGluZyBzbGFzaC4KK3BhdGhjYXI9J3MsXi9cKFteL10qXCkuKiQsXDEsJworcGF0aGNkcj0ncyxeL1teL10qLCwnCityZW1vdmVkb3RwYXJ0cz0nOmRvdHNsCisJCXNAL1wuL0AvQGcKKwkJdCBkb3RzbAorCQlzLC9cLiQsLywnCitjb2xsYXBzZXNsYXNoZXM9J3NAL1x7MSxcfUAvQGcnCitmaW5hbHNsYXNoPSdzLC8qJCwvLCcKKworIyBmdW5jX25vcm1hbF9hYnNwYXRoIFBBVEgKKyMgUmVtb3ZlIGRvdWJsZWQtdXAgYW5kIHRyYWlsaW5nIHNsYXNoZXMsICIuIiBwYXRoIGNvbXBvbmVudHMsCisjIGFuZCBjYW5jZWwgb3V0IGFueSAiLi4iIHBhdGggY29tcG9uZW50cyBpbiBQQVRIIGFmdGVyIG1ha2luZworIyBpdCBhbiBhYnNvbHV0ZSBwYXRoLgorIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0IgorZnVuY19ub3JtYWxfYWJzcGF0aCAoKQoreworICAjIFN0YXJ0IGZyb20gcm9vdCBkaXIgYW5kIHJlYXNzZW1ibGUgdGhlIHBhdGguCisgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0PQorICBmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoPSQxCisgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfYWx0bmFtZXNwYWNlPQorICBjYXNlICRmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoIGluCisgICAgIiIpCisgICAgICAjIEVtcHR5IHBhdGgsIHRoYXQganVzdCBtZWFucyAkY3dkLgorICAgICAgZnVuY19zdHJpcG5hbWUgJycgJy8nICJgcHdkYCIKKyAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0PSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgICAgIHJldHVybgorICAgIDs7CisgICAgIyBUaGUgbmV4dCB0aHJlZSBlbnRyaWVzIGFyZSB1c2VkIHRvIHNwb3QgYSBydW4gb2YgcHJlY2lzZWx5CisgICAgIyB0d28gbGVhZGluZyBzbGFzaGVzIHdpdGhvdXQgdXNpbmcgbmVnYXRlZCBjaGFyYWN0ZXIgY2xhc3NlczsKKyAgICAjIHdlIHRha2UgYWR2YW50YWdlIG9mIGNhc2UncyBmaXJzdC1tYXRjaCBiZWhhdmlvdXIuCisgICAgLy8vKikKKyAgICAgICMgVW51c3VhbCBmb3JtIG9mIGFic29sdXRlIHBhdGgsIGRvIG5vdGhpbmcuCisgICAgOzsKKyAgICAvLyopCisgICAgICAjIE5vdCBuZWNlc3NhcmlseSBhbiBvcmRpbmFyeSBwYXRoOyBQT1NJWCByZXNlcnZlcyBsZWFkaW5nICcvLycKKyAgICAgICMgYW5kIGZvciBleGFtcGxlIEN5Z3dpbiB1c2VzIGl0IHRvIGFjY2VzcyByZW1vdGUgZmlsZSBzaGFyZXMKKyAgICAgICMgb3ZlciBDSUZTL1NNQiwgc28gd2UgY29uc2VydmUgYSBsZWFkaW5nIGRvdWJsZSBzbGFzaCBpZiBmb3VuZC4KKyAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfYWx0bmFtZXNwYWNlPS8KKyAgICA7OworICAgIC8qKQorICAgICAgIyBBYnNvbHV0ZSBwYXRoLCBkbyBub3RoaW5nLgorICAgIDs7CisgICAgKikKKyAgICAgICMgUmVsYXRpdmUgcGF0aCwgcHJlcGVuZCAkY3dkLgorICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aD1gcHdkYC8kZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aAorICAgIDs7CisgIGVzYWMKKyAgIyBDYW5jZWwgb3V0IGFsbCB0aGUgc2ltcGxlIHN0dWZmIHRvIHNhdmUgaXRlcmF0aW9ucy4gIFdlIGFsc28gd2FudAorICAjIHRoZSBwYXRoIHRvIGVuZCB3aXRoIGEgc2xhc2ggZm9yIGVhc2Ugb2YgcGFyc2luZywgc28gbWFrZSBzdXJlCisgICMgdGhlcmUgaXMgb25lIChhbmQgb25seSBvbmUpIGhlcmUuCisgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGg9YCRFQ0hPICIkZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aCIgfCAkU0VEIFwKKyAgICAgICAgLWUgIiRyZW1vdmVkb3RwYXJ0cyIgLWUgIiRjb2xsYXBzZXNsYXNoZXMiIC1lICIkZmluYWxzbGFzaCJgCisgIHdoaWxlIDo7IGRvCisgICAgIyBQcm9jZXNzZWQgaXQgYWxsIHlldD8KKyAgICBpZiB0ZXN0ICIkZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aCIgPSAvIDsgdGhlbgorICAgICAgIyBJZiB3ZSBhc2NlbmRlZCB0byB0aGUgcm9vdCB1c2luZyAiLi4iIHRoZSByZXN1bHQgbWF5IGJlIGVtcHR5IG5vdy4KKyAgICAgIGlmIHRlc3QgLXogIiRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdCIgOyB0aGVuCisgICAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0PS8KKyAgICAgIGZpCisgICAgICBicmVhaworICAgIGZpCisgICAgZnVuY19ub3JtYWxfYWJzcGF0aF90Y29tcG9uZW50PWAkRUNITyAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGgiIHwgJFNFRCBcCisgICAgICAgIC1lICIkcGF0aGNhciJgCisgICAgZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aD1gJEVDSE8gIiRmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoIiB8ICRTRUQgXAorICAgICAgICAtZSAiJHBhdGhjZHIiYAorICAgICMgRmlndXJlIG91dCB3aGF0IHRvIGRvIHdpdGggaXQKKyAgICBjYXNlICRmdW5jX25vcm1hbF9hYnNwYXRoX3Rjb21wb25lbnQgaW4KKyAgICAgICIiKQorICAgICAgICAjIFRyYWlsaW5nIGVtcHR5IHBhdGggY29tcG9uZW50LCBpZ25vcmUgaXQuCisgICAgICA7OworICAgICAgLi4pCisgICAgICAgICMgUGFyZW50IGRpcjsgc3RyaXAgbGFzdCBhc3NlbWJsZWQgY29tcG9uZW50IGZyb20gcmVzdWx0LgorICAgICAgICBmdW5jX2Rpcm5hbWUgIiRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdCIKKyAgICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9JGZ1bmNfZGlybmFtZV9yZXN1bHQKKyAgICAgIDs7CisgICAgICAqKQorICAgICAgICAjIEFjdHVhbCBwYXRoIGNvbXBvbmVudCwgYXBwZW5kIGl0LgorICAgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdD0kZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQvJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdGNvbXBvbmVudAorICAgICAgOzsKKyAgICBlc2FjCisgIGRvbmUKKyAgIyBSZXN0b3JlIGxlYWRpbmcgZG91YmxlLXNsYXNoIGlmIG9uZSB3YXMgZm91bmQgb24gZW50cnkuCisgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0PSRmdW5jX25vcm1hbF9hYnNwYXRoX2FsdG5hbWVzcGFjZSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdAogfQogCi0jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS4KKyMgZnVuY19yZWxhdGl2ZV9wYXRoIFNSQ0RJUiBEU1RESVIKKyMgZ2VuZXJhdGVzIGEgcmVsYXRpdmUgcGF0aCBmcm9tIFNSQ0RJUiB0byBEU1RESVIsIHdpdGggYSB0cmFpbGluZworIyBzbGFzaCBpZiBub24tZW1wdHksIHN1aXRhYmxlIGZvciBpbW1lZGlhdGVseSBhcHBlbmRpbmcgYSBmaWxlbmFtZQorIyB3aXRob3V0IG5lZWRpbmcgdG8gYXBwZW5kIGEgc2VwYXJhdG9yLgorIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQiCitmdW5jX3JlbGF0aXZlX3BhdGggKCkKK3sKKyAgZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdD0KKyAgZnVuY19ub3JtYWxfYWJzcGF0aCAiJDEiCisgIGZ1bmNfcmVsYXRpdmVfcGF0aF90bGliZGlyPSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdAorICBmdW5jX25vcm1hbF9hYnNwYXRoICIkMiIKKyAgZnVuY19yZWxhdGl2ZV9wYXRoX3RiaW5kaXI9JGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0CiAKLSMgV29yayBhcm91bmQgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBpc3N1ZSBvbiBJUklYIDYuNS4gT24gSVJJWCA2LjQrLCBzaAotIyBpcyBrc2ggYnV0IHdoZW4gdGhlIHNoZWxsIGlzIGludm9rZWQgYXMgInNoIiBhbmQgdGhlIGN1cnJlbnQgdmFsdWUgb2YKLSMgdGhlIF9YUEcgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IGVxdWFsIHRvIDEgKG9uZSksIHRoZSBzcGVjaWFsCi0jIHBvc2l0aW9uYWwgcGFyYW1ldGVyICQwLCB3aXRoaW4gYSBmdW5jdGlvbiBjYWxsLCBpcyB0aGUgbmFtZSBvZiB0aGUKLSMgZnVuY3Rpb24uCi1wcm9ncGF0aD0iJDAiCisgICMgQXNjZW5kIHRoZSB0cmVlIHN0YXJ0aW5nIGZyb20gbGliZGlyCisgIHdoaWxlIDo7IGRvCisgICAgIyBjaGVjayBpZiB3ZSBoYXZlIGZvdW5kIGEgcHJlZml4IG9mIGJpbmRpcgorICAgIGNhc2UgJGZ1bmNfcmVsYXRpdmVfcGF0aF90YmluZGlyIGluCisgICAgICAkZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXIpCisgICAgICAgICMgZm91bmQgYW4gZXhhY3QgbWF0Y2gKKyAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3RjYW5jZWxsZWQ9CisgICAgICAgIGJyZWFrCisgICAgICAgIDs7CisgICAgICAkZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXIqKQorICAgICAgICAjIGZvdW5kIGEgbWF0Y2hpbmcgcHJlZml4CisgICAgICAgIGZ1bmNfc3RyaXBuYW1lICIkZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXIiICcnICIkZnVuY19yZWxhdGl2ZV9wYXRoX3RiaW5kaXIiCisgICAgICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF90Y2FuY2VsbGVkPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQiOyB0aGVuCisgICAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdD0uCisgICAgICAgIGZpCisgICAgICAgIGJyZWFrCisgICAgICAgIDs7CisgICAgICAqKQorICAgICAgICBmdW5jX2Rpcm5hbWUgJGZ1bmNfcmVsYXRpdmVfcGF0aF90bGliZGlyCisgICAgICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF90bGliZGlyPSR7ZnVuY19kaXJuYW1lX3Jlc3VsdH0KKyAgICAgICAgaWYgdGVzdCAieCRmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpciIgPSB4IDsgdGhlbgorICAgICAgICAgICMgSGF2ZSB0byBkZXNjZW5kIGFsbCB0aGUgd2F5IHRvIHRoZSByb290IQorICAgICAgICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9Li4vJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQKKyAgICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfdGNhbmNlbGxlZD0kZnVuY19yZWxhdGl2ZV9wYXRoX3RiaW5kaXIKKyAgICAgICAgICBicmVhaworICAgICAgICBmaQorICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PS4uLyRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0CisgICAgICAgIDs7CisgICAgZXNhYworICBkb25lCisKKyAgIyBOb3cgY2FsY3VsYXRlIHBhdGg7IHRha2UgY2FyZSB0byBhdm9pZCBkb3VibGluZy11cCBzbGFzaGVzLgorICBmdW5jX3N0cmlwbmFtZSAnJyAnLycgIiRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0IgorICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgZnVuY19zdHJpcG5hbWUgJy8nICcvJyAiJGZ1bmNfcmVsYXRpdmVfcGF0aF90Y2FuY2VsbGVkIgorICBpZiB0ZXN0ICJ4JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIgIT0geCA7IHRoZW4KKyAgICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PSR7ZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdH0vJHtmdW5jX3N0cmlwbmFtZV9yZXN1bHR9CisgIGZpCisKKyAgIyBOb3JtYWxpc2F0aW9uLiBJZiBiaW5kaXIgaXMgbGliZGlyLCByZXR1cm4gZW1wdHkgc3RyaW5nLAorICAjIGVsc2UgcmVsYXRpdmUgcGF0aCBlbmRpbmcgd2l0aCBhIHNsYXNoOyBlaXRoZXIgd2F5LCB0YXJnZXQKKyAgIyBmaWxlIG5hbWUgY2FuIGJlIGRpcmVjdGx5IGFwcGVuZGVkLgorICBpZiB0ZXN0ICEgLXogIiRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0IjsgdGhlbgorICAgIGZ1bmNfc3RyaXBuYW1lICcuLycgJycgIiRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0LyIKKyAgICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgZmkKK30KIAogIyBUaGUgbmFtZSBvZiB0aGlzIHByb2dyYW06Ci0jIEluIHRoZSB1bmxpa2VseSBldmVudCAkcHJvZ25hbWUgYmVnYW4gd2l0aCBhICctJywgaXQgd291bGQgcGxheSBoYXZvYyB3aXRoCi0jIGZ1bmNfZWNobyAoaW1hZ2luZSBwcm9nbmFtZT0tbiksIHNvIHdlIHByZXBlbmQgLi8gaW4gdGhhdCBjYXNlOgogZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJHByb2dwYXRoIgogcHJvZ25hbWU9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0Ci1jYXNlICRwcm9nbmFtZSBpbgotICAtKikgcHJvZ25hbWU9Li8kcHJvZ25hbWUgOzsKLWVzYWMKIAogIyBNYWtlIHN1cmUgd2UgaGF2ZSBhbiBhYnNvbHV0ZSBwYXRoIGZvciByZWV4ZWN1dGlvbjoKIGNhc2UgJHByb2dwYXRoIGluCkBAIC0yMTUsNiArNDA2LDE1IEBACiAjIFNhbWUgYXMgYWJvdmUsIGJ1dCBkbyBub3QgcXVvdGUgdmFyaWFibGUgcmVmZXJlbmNlcy4KIGRvdWJsZV9xdW90ZV9zdWJzdD0ncy9cKFsiYFxcXVwpL1xcXDEvZycKIAorIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgdHVybnMgYSBzdHJpbmcgaW50byBhIHJlZ2V4IG1hdGNoaW5nIGZvciB0aGUKKyMgc3RyaW5nIGxpdGVyYWxseS4KK3NlZF9tYWtlX2xpdGVyYWxfcmVnZXg9J3MsW10uW14kXFwqXC9dLFxcJixnJworCisjIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBjb252ZXJ0cyBhIHczMiBmaWxlIG5hbWUgb3IgcGF0aAorIyB3aGljaCBjb250YWlucyBmb3J3YXJkIHNsYXNoZXMsIGludG8gb25lIHRoYXQgY29udGFpbnMKKyMgKGVzY2FwZWQpIGJhY2tzbGFzaGVzLiAgQSB2ZXJ5IG5haXZlIGltcGxlbWVudGF0aW9uLgorbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeT0nc3xcXFxcKnxcXHxnO3N8L3xcXHxnO3N8XFx8XFxcXHxnJworCiAjIFJlLWBcJyBwYXJhbWV0ZXIgZXhwYW5zaW9ucyBpbiBvdXRwdXQgb2YgZG91YmxlX3F1b3RlX3N1YnN0IHRoYXQgd2VyZQogIyBgXCctZWQgaW4gaW5wdXQgdG8gdGhlIHNhbWUuICBJZiBhbiBvZGQgbnVtYmVyIG9mIGBcJyBwcmVjZWRlZCBhICckJwogIyBpbiBpbnB1dCB0byBkb3VibGVfcXVvdGVfc3Vic3QsIHRoYXQgJyQnIHdhcyBwcm90ZWN0ZWQgZnJvbSBleHBhbnNpb24uCkBAIC0yNDMsNyArNDQzLDcgQEAKICMgbmFtZSBpZiBpdCBoYXMgYmVlbiBzZXQgeWV0LgogZnVuY19lY2hvICgpCiB7Ci0gICAgJEVDSE8gIiRwcm9nbmFtZSR7bW9kZSs6IH0kbW9kZTogJCoiCisgICAgJEVDSE8gIiRwcm9nbmFtZTogJHtvcHRfbW9kZSskb3B0X21vZGU6IH0kKiIKIH0KIAogIyBmdW5jX3ZlcmJvc2UgYXJnLi4uCkBAIC0yNTgsMTggKzQ1OCwyNSBAQAogICAgIDoKIH0KIAorIyBmdW5jX2VjaG9fYWxsIGFyZy4uLgorIyBJbnZva2UgJEVDSE8gd2l0aCBhbGwgYXJncywgc3BhY2Utc2VwYXJhdGVkLgorZnVuY19lY2hvX2FsbCAoKQoreworICAgICRFQ0hPICIkKiIKK30KKwogIyBmdW5jX2Vycm9yIGFyZy4uLgogIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLgogZnVuY19lcnJvciAoKQogewotICAgICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6ICIkezErIiRAIn0gMT4mMgorICAgICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9IiR7MSsiJEAifSAxPiYyCiB9CiAKICMgZnVuY193YXJuaW5nIGFyZy4uLgogIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCB3YXJuaW5nIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IuCiBmdW5jX3dhcm5pbmcgKCkKIHsKLSAgICAkb3B0X3dhcm5pbmcgJiYgJEVDSE8gIiRwcm9nbmFtZSR7bW9kZSs6IH0kbW9kZTogd2FybmluZzogIiR7MSsiJEAifSAxPiYyCisgICAgJG9wdF93YXJuaW5nICYmICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9d2FybmluZzogIiR7MSsiJEAifSAxPiYyCiAKICAgICAjIGJhc2ggYnVnIGFnYWluOgogICAgIDoKQEAgLTMyNiw5ICs1MzMsOSBAQAogICAgICAgICBjYXNlICRteV9kaXJlY3RvcnlfcGF0aCBpbiAqLyopIDs7ICopIGJyZWFrIDs7IGVzYWMKIAogICAgICAgICAjIC4uLm90aGVyd2lzZSB0aHJvdyBhd2F5IHRoZSBjaGlsZCBkaXJlY3RvcnkgYW5kIGxvb3AKLSAgICAgICAgbXlfZGlyZWN0b3J5X3BhdGg9YCRFQ0hPICJYJG15X2RpcmVjdG9yeV9wYXRoIiB8ICRYc2VkIC1lICIkZGlybmFtZSJgCisgICAgICAgIG15X2RpcmVjdG9yeV9wYXRoPWAkRUNITyAiJG15X2RpcmVjdG9yeV9wYXRoIiB8ICRTRUQgLWUgIiRkaXJuYW1lImAKICAgICAgIGRvbmUKLSAgICAgIG15X2Rpcl9saXN0PWAkRUNITyAiWCRteV9kaXJfbGlzdCIgfCAkWHNlZCAtZSAncyw6KiQsLCdgCisgICAgICBteV9kaXJfbGlzdD1gJEVDSE8gIiRteV9kaXJfbGlzdCIgfCAkU0VEICdzLDoqJCwsJ2AKIAogICAgICAgc2F2ZV9ta2Rpcl9wX0lGUz0iJElGUyI7IElGUz0nOicKICAgICAgIGZvciBteV9kaXIgaW4gJG15X2Rpcl9saXN0OyBkbwpAQCAtMzc4LDcgKzU4NSw3IEBACiAgICAgICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBjcmVhdGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSBcYCRteV90bXBkaXInIgogICAgIGZpCiAKLSAgICAkRUNITyAiWCRteV90bXBkaXIiIHwgJFhzZWQKKyAgICAkRUNITyAiJG15X3RtcGRpciIKIH0KIAogCkBAIC0zOTIsNyArNTk5LDcgQEAKIHsKICAgICBjYXNlICQxIGluCiAgICAgICAqW1xcXGBcIlwkXSopCi0JZnVuY19xdW90ZV9mb3JfZXZhbF91bnF1b3RlZF9yZXN1bHQ9YCRFQ0hPICJYJDEiIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYCA7OworCWZ1bmNfcXVvdGVfZm9yX2V2YWxfdW5xdW90ZWRfcmVzdWx0PWAkRUNITyAiJDEiIHwgJFNFRCAiJHNlZF9xdW90ZV9zdWJzdCJgIDs7CiAgICAgICAqKQogICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsX3VucXVvdGVkX3Jlc3VsdD0iJDEiIDs7CiAgICAgZXNhYwpAQCAtNDE5LDcgKzYyNiw3IEBACiB7CiAgICAgY2FzZSAkMSBpbgogICAgICAgKltcXFxgXCJdKikKLQlteV9hcmc9YCRFQ0hPICJYJDEiIHwgJFhzZWQgXAorCW15X2FyZz1gJEVDSE8gIiQxIiB8ICRTRUQgXAogCSAgICAtZSAiJGRvdWJsZV9xdW90ZV9zdWJzdCIgLWUgIiRzZWRfZG91YmxlX2JhY2tzbGFzaCJgIDs7CiAgICAgICAqKQogICAgICAgICBteV9hcmc9IiQxIiA7OwpAQCAtNDg4LDE1ICs2OTUsMzkgQEAKICAgICBmaQogfQogCi0KLQorIyBmdW5jX3RyX3NoCisjIFR1cm4gJDEgaW50byBhIHN0cmluZyBzdWl0YWJsZSBmb3IgYSBzaGVsbCB2YXJpYWJsZSBuYW1lLgorIyBSZXN1bHQgaXMgc3RvcmVkIGluICRmdW5jX3RyX3NoX3Jlc3VsdC4gIEFsbCBjaGFyYWN0ZXJzCisjIG5vdCBpbiB0aGUgc2V0IGEtekEtWjAtOV8gYXJlIHJlcGxhY2VkIHdpdGggJ18nLiBGdXJ0aGVyLAorIyBpZiAkMSBiZWdpbnMgd2l0aCBhIGRpZ2l0LCBhICdfJyBpcyBwcmVwZW5kZWQgYXMgd2VsbC4KK2Z1bmNfdHJfc2ggKCkKK3sKKyAgY2FzZSAkMSBpbgorICBbMC05XSogfCAqWyFhLXpBLVowLTlfXSopCisgICAgZnVuY190cl9zaF9yZXN1bHQ9YCRFQ0hPICIkMSIgfCAkU0VEICdzL15cKFswLTldXCkvX1wxLzsgcy9bXmEtekEtWjAtOV9dL18vZydgCisgICAgOzsKKyAgKiApCisgICAgZnVuY190cl9zaF9yZXN1bHQ9JDEKKyAgICA7OworICBlc2FjCit9CiAKIAogIyBmdW5jX3ZlcnNpb24KICMgRWNobyB2ZXJzaW9uIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LgogZnVuY192ZXJzaW9uICgpCiB7Ci0gICAgJFNFRCAtbiAnL14jICckUFJPR1JBTScgKEdOVSAvLC8jIHdhcnJhbnR5OyAvIHsKKyAgICAkb3B0X2RlYnVnCisKKyAgICAkU0VEIC1uICcvKEMpLyFiIGdvCisJOm1vcmUKKwkvXC4vIXsKKwkgIE4KKwkgIHMvXG4jIC8gLworCSAgYiBtb3JlCisJfQorCTpnbworCS9eIyAnJFBST0dSQU0nIChHTlUgLywvIyB3YXJyYW50eTsgLyB7CiAgICAgICAgIHMvXiMgLy8KIAlzL14jICokLy8KICAgICAgICAgcy9cKChDKVwpWyAwLTksLV0qXCggWzEtOV1bMC05XSpcKS9cMVwyLwpAQCAtNTA5LDIyICs3NDAsMjggQEAKICMgRWNobyBzaG9ydCBoZWxwIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LgogZnVuY191c2FnZSAoKQogewotICAgICRTRUQgLW4gJy9eIyBVc2FnZTovLC8jIC1oLyB7CisgICAgJG9wdF9kZWJ1ZworCisgICAgJFNFRCAtbiAnL14jIFVzYWdlOi8sL14jICAqLiotLWhlbHAvIHsKICAgICAgICAgcy9eIyAvLwogCXMvXiMgKiQvLwogCXMvXCRwcm9nbmFtZS8nJHByb2duYW1lJy8KIAlwCiAgICAgfScgPCAiJHByb2dwYXRoIgotICAgICRFQ0hPCisgICAgZWNobwogICAgICRFQ0hPICJydW4gXGAkcHJvZ25hbWUgLS1oZWxwIHwgbW9yZScgZm9yIGZ1bGwgdXNhZ2UiCiAgICAgZXhpdCAkPwogfQogCi0jIGZ1bmNfaGVscAotIyBFY2hvIGxvbmcgaGVscCBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdC4KKyMgZnVuY19oZWxwIFtOT0VYSVRdCisjIEVjaG8gbG9uZyBoZWxwIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LAorIyB1bmxlc3MgJ25vZXhpdCcgaXMgcGFzc2VkIGFzIGFyZ3VtZW50LgogZnVuY19oZWxwICgpCiB7CisgICAgJG9wdF9kZWJ1ZworCiAgICAgJFNFRCAtbiAnL14jIFVzYWdlOi8sLyMgUmVwb3J0IGJ1Z3MgdG8vIHsKKwk6cHJpbnQKICAgICAgICAgcy9eIyAvLwogCXMvXiMgKiQvLwogCXMqXCRwcm9nbmFtZSonJHByb2duYW1lJyoKQEAgLTUzNyw4ICs3NzQsMTUgQEAKIAlzL1wkYXV0b21ha2VfdmVyc2lvbi8nImAoYXV0b21ha2UgLS12ZXJzaW9uKSAyPi9kZXYvbnVsbCB8JFNFRCAxcWAiJy8KIAlzL1wkYXV0b2NvbmZfdmVyc2lvbi8nImAoYXV0b2NvbmYgLS12ZXJzaW9uKSAyPi9kZXYvbnVsbCB8JFNFRCAxcWAiJy8KIAlwCi0gICAgIH0nIDwgIiRwcm9ncGF0aCIKLSAgICBleGl0ICQ/CisJZAorICAgICB9CisgICAgIC9eIyAuKiBob21lIHBhZ2U6L2IgcHJpbnQKKyAgICAgL14jIEdlbmVyYWwgaGVscCB1c2luZy9iIHByaW50CisgICAgICcgPCAiJHByb2dwYXRoIgorICAgIHJldD0kPworICAgIGlmIHRlc3QgLXogIiQxIjsgdGhlbgorICAgICAgZXhpdCAkcmV0CisgICAgZmkKIH0KIAogIyBmdW5jX21pc3NpbmdfYXJnIGFyZ25hbWUKQEAgLTU0Niw2MyArNzkwLDEwNiBAQAogIyBleGl0X2NtZC4KIGZ1bmNfbWlzc2luZ19hcmcgKCkKIHsKLSAgICBmdW5jX2Vycm9yICJtaXNzaW5nIGFyZ3VtZW50IGZvciAkMSIKKyAgICAkb3B0X2RlYnVnCisKKyAgICBmdW5jX2Vycm9yICJtaXNzaW5nIGFyZ3VtZW50IGZvciAkMS4iCiAgICAgZXhpdF9jbWQ9ZXhpdAogfQogCisKKyMgZnVuY19zcGxpdF9zaG9ydF9vcHQgc2hvcnRvcHQKKyMgU2V0IGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWUgYW5kIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyBzaGVsbAorIyB2YXJpYWJsZXMgYWZ0ZXIgc3BsaXR0aW5nIFNIT1JUT1BUIGFmdGVyIHRoZSAybmQgY2hhcmFjdGVyLgorZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkKK3sKKyAgICBteV9zZWRfc2hvcnRfb3B0PScxcy9eXCguLlwpLiokL1wxLztxJworICAgIG15X3NlZF9zaG9ydF9yZXN0PScxcy9eLi5cKC4qXCkkL1wxLztxJworCisgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfc2hvcnRfb3B0ImAKKyAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX3Nob3J0X3Jlc3QiYAorfSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCisKKyMgZnVuY19zcGxpdF9sb25nX29wdCBsb25nb3B0CisjIFNldCBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWUgYW5kIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnIHNoZWxsCisjIHZhcmlhYmxlcyBhZnRlciBzcGxpdHRpbmcgTE9OR09QVCBhdCB0aGUgYD0nIHNpZ24uCitmdW5jX3NwbGl0X2xvbmdfb3B0ICgpCit7CisgICAgbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtLVtePV0qXCk9LiovXDEvO3EnCisgICAgbXlfc2VkX2xvbmdfYXJnPScxcy9eLS1bXj1dKj0vLycKKworICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAorICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCit9ICMgZnVuY19zcGxpdF9sb25nX29wdCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKwogZXhpdF9jbWQ9OgogCiAKIAogCiAKLSMgQ2hlY2sgdGhhdCB3ZSBoYXZlIGEgd29ya2luZyAkRUNITy4KLWlmIHRlc3QgIlgkMSIgPSBYLS1uby1yZWV4ZWM7IHRoZW4KLSAgIyBEaXNjYXJkIHRoZSAtLW5vLXJlZXhlYyBmbGFnLCBhbmQgY29udGludWUuCi0gIHNoaWZ0Ci1lbGlmIHRlc3QgIlgkMSIgPSBYLS1mYWxsYmFjay1lY2hvOyB0aGVuCi0gICMgQXZvaWQgaW5saW5lIGRvY3VtZW50IGhlcmUsIGl0IG1heSBiZSBsZWZ0IG92ZXIKLSAgOgotZWxpZiB0ZXN0ICJYYHsgJEVDSE8gJ1x0JzsgfSAyPi9kZXYvbnVsbGAiID0gJ1hcdCc7IHRoZW4KLSAgIyBZaXBwZWUsICRFQ0hPIHdvcmtzIQotICA6Ci1lbHNlCi0gICMgUmVzdGFydCB1bmRlciB0aGUgY29ycmVjdCBzaGVsbCwgYW5kIHRoZW4gbWF5YmUgJEVDSE8gd2lsbCB3b3JrLgotICBleGVjICRTSEVMTCAiJHByb2dwYXRoIiAtLW5vLXJlZXhlYyAkezErIiRAIn0KLWZpCi0KLWlmIHRlc3QgIlgkMSIgPSBYLS1mYWxsYmFjay1lY2hvOyB0aGVuCi0gICMgdXNlZCBhcyBmYWxsYmFjayBlY2hvCi0gIHNoaWZ0Ci0gIGNhdCA8PEVPRgotJCoKLUVPRgotICBleGl0ICRFWElUX1NVQ0NFU1MKLWZpCi0KIG1hZ2ljPSIlJSVNQUdJQyB2YXJpYWJsZSUlJSIKIG1hZ2ljX2V4ZT0iJSUlTUFHSUMgRVhFIHZhcmlhYmxlJSUlIgogCiAjIEdsb2JhbCB2YXJpYWJsZXMuCi0jICRtb2RlIGlzIHVuc2V0CiBub25vcHQ9Ci1leGVjdXRlX2RsZmlsZXM9CiBwcmVzZXJ2ZV9hcmdzPQogbG8ybz0icy9cXC5sb1wkLy4ke29iamV4dH0vIgogbzJsbz0icy9cXC4ke29iamV4dH1cJC8ubG8vIgogZXh0cmFjdGVkX2FyY2hpdmVzPQogZXh0cmFjdGVkX3NlcmlhbD0wCiAKLW9wdF9kcnlfcnVuPWZhbHNlCi1vcHRfZHVwbGljYXRlX2RlcHM9ZmFsc2UKLW9wdF9zaWxlbnQ9ZmFsc2UKLW9wdF9kZWJ1Zz06Ci0KICMgSWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgaW4gYW55IG9mIHRoZSBhY3Rpb25zLCB0aGUgY29tbWFuZCBpbiBpdAogIyB3aWxsIGJlIGV4ZWNlZCBhdCB0aGUgZW5kLiAgVGhpcyBwcmV2ZW50cyBoZXJlLWRvY3VtZW50cyBmcm9tIGJlaW5nCiAjIGxlZnQgb3ZlciBieSBzaGVsbHMuCiBleGVjX2NtZD0KIAorIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKyMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorZnVuY19hcHBlbmQgKCkKK3sKKyAgICBldmFsICIkezF9PVwkJHsxfVwkezJ9IgorfSAjIGZ1bmNfYXBwZW5kIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCisjIGZ1bmNfYXBwZW5kX3F1b3RlZCB2YXIgdmFsdWUKKyMgUXVvdGUgVkFMVUUgYW5kIGFwcGVuZCB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUiwgc2VwYXJhdGVkCisjIGJ5IGEgc3BhY2UuCitmdW5jX2FwcGVuZF9xdW90ZWQgKCkKK3sKKyAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IgorICAgIGV2YWwgIiR7MX09XCQkezF9XFwgXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKK30gIyBmdW5jX2FwcGVuZF9xdW90ZWQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKworIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorZnVuY19hcml0aCAoKQoreworICAgIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIke0B9ImAKK30gIyBmdW5jX2FyaXRoIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCisKKyMgZnVuY19sZW4gc3RyaW5nCisjIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCitmdW5jX2xlbiAoKQoreworICAgIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJHsxfSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorfSAjIGZ1bmNfbGVuIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCisKKyMgZnVuY19sbzJvIG9iamVjdAorZnVuY19sbzJvICgpCit7CisgICAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAorfSAjIGZ1bmNfbG8ybyBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworCisjIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorZnVuY194Zm9ybSAoKQoreworICAgIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAorfSAjIGZ1bmNfeGZvcm0gbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKwogIyBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gYXJnLi4uCiAjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IsIGZvbGxvd2VkIGJ5CiAjIGEgY29uZmlndXJhdGlvbiBmYWlsdXJlIGhpbnQsIGFuZCBleGl0LgpAQCAtNjM2LDE2ICs5MjMsMTYgQEAKICMgRGlzcGxheSB0aGUgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IHRoaXMgc2NyaXB0LgogZnVuY19mZWF0dXJlcyAoKQogewotICAgICRFQ0hPICJob3N0OiAkaG9zdCIKKyAgICBlY2hvICJob3N0OiAkaG9zdCIKICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllczsgdGhlbgotICAgICAgJEVDSE8gImVuYWJsZSBzaGFyZWQgbGlicmFyaWVzIgorICAgICAgZWNobyAiZW5hYmxlIHNoYXJlZCBsaWJyYXJpZXMiCiAgICAgZWxzZQotICAgICAgJEVDSE8gImRpc2FibGUgc2hhcmVkIGxpYnJhcmllcyIKKyAgICAgIGVjaG8gImRpc2FibGUgc2hhcmVkIGxpYnJhcmllcyIKICAgICBmaQogICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KLSAgICAgICRFQ0hPICJlbmFibGUgc3RhdGljIGxpYnJhcmllcyIKKyAgICAgIGVjaG8gImVuYWJsZSBzdGF0aWMgbGlicmFyaWVzIgogICAgIGVsc2UKLSAgICAgICRFQ0hPICJkaXNhYmxlIHN0YXRpYyBsaWJyYXJpZXMiCisgICAgICBlY2hvICJkaXNhYmxlIHN0YXRpYyBsaWJyYXJpZXMiCiAgICAgZmkKIAogICAgIGV4aXQgJD8KQEAgLTY5MiwxMzMgKzk3OSw2IEBACiAgIGVzYWMKIH0KIAotIyBQYXJzZSBvcHRpb25zIG9uY2UsIHRob3JvdWdobHkuICBUaGlzIGNvbWVzIGFzIHNvb24gYXMgcG9zc2libGUgaW4KLSMgdGhlIHNjcmlwdCB0byBtYWtlIHRoaW5ncyBsaWtlIGBsaWJ0b29sIC0tdmVyc2lvbicgaGFwcGVuIHF1aWNrbHkuCi17Ci0KLSAgIyBTaG9ydGhhbmQgZm9yIC0tbW9kZT1mb28sIG9ubHkgdmFsaWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50Ci0gIGNhc2UgJDEgaW4KLSAgY2xlYW58Y2xlYXxjbGV8Y2wpCi0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY2xlYW4gJHsxKyIkQCJ9OyBzaGlmdAotICAgIDs7Ci0gIGNvbXBpbGV8Y29tcGlsfGNvbXBpfGNvbXB8Y29tfGNvfGMpCi0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY29tcGlsZSAkezErIiRAIn07IHNoaWZ0Ci0gICAgOzsKLSAgZXhlY3V0ZXxleGVjdXR8ZXhlY3V8ZXhlY3xleGV8ZXh8ZSkKLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBleGVjdXRlICR7MSsiJEAifTsgc2hpZnQKLSAgICA7OwotICBmaW5pc2h8ZmluaXN8ZmluaXxmaW58Zml8ZikKLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBmaW5pc2ggJHsxKyIkQCJ9OyBzaGlmdAotICAgIDs7Ci0gIGluc3RhbGx8aW5zdGFsfGluc3RhfGluc3R8aW5zfGlufGkpCi0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0Ci0gICAgOzsKLSAgbGlua3xsaW58bGl8bCkKLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBsaW5rICR7MSsiJEAifTsgc2hpZnQKLSAgICA7OwotICB1bmluc3RhbGx8dW5pbnN0YWx8dW5pbnN0YXx1bmluc3R8dW5pbnN8dW5pbnx1bml8dW58dSkKLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSB1bmluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAotICAgIDs7Ci0gIGVzYWMKLQotICAjIFBhcnNlIG5vbi1tb2RlIHNwZWNpZmljIGFyZ3VtZW50czoKLSAgd2hpbGUgdGVzdCAiJCMiIC1ndCAwOyBkbwotICAgIG9wdD0iJDEiCi0gICAgc2hpZnQKLQotICAgIGNhc2UgJG9wdCBpbgotICAgICAgLS1jb25maWcpCQlmdW5jX2NvbmZpZwkJCQkJOzsKLQotICAgICAgLS1kZWJ1ZykJCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCi0JCQlmdW5jX2VjaG8gImVuYWJsaW5nIHNoZWxsIHRyYWNlIG1vZGUiCi0JCQlvcHRfZGVidWc9J3NldCAteCcKLQkJCSRvcHRfZGVidWcKLQkJCTs7Ci0KLSAgICAgIC1kbG9wZW4pCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKLQkJCWV4ZWN1dGVfZGxmaWxlcz0iJGV4ZWN1dGVfZGxmaWxlcyAkMSIKLQkJCXNoaWZ0Ci0JCQk7OwotCi0gICAgICAtLWRyeS1ydW4gfCAtbikJb3B0X2RyeV9ydW49OgkJCQkJOzsKLSAgICAgIC0tZmVhdHVyZXMpICAgICAgIGZ1bmNfZmVhdHVyZXMJCQkJCTs7Ci0gICAgICAtLWZpbmlzaCkJCW1vZGU9ImZpbmlzaCIJCQkJCTs7Ci0KLSAgICAgIC0tbW9kZSkJCXRlc3QgIiQjIiAtZXEgMCAmJiBmdW5jX21pc3NpbmdfYXJnICIkb3B0IiAmJiBicmVhawotCQkJY2FzZSAkMSBpbgotCQkJICAjIFZhbGlkIG1vZGUgYXJndW1lbnRzOgotCQkJICBjbGVhbikJOzsKLQkJCSAgY29tcGlsZSkJOzsKLQkJCSAgZXhlY3V0ZSkJOzsKLQkJCSAgZmluaXNoKQk7OwotCQkJICBpbnN0YWxsKQk7OwotCQkJICBsaW5rKQkJOzsKLQkJCSAgcmVsaW5rKQk7OwotCQkJICB1bmluc3RhbGwpCTs7Ci0KLQkJCSAgIyBDYXRjaCBhbnl0aGluZyBlbHNlIGFzIGFuIGVycm9yCi0JCQkgICopIGZ1bmNfZXJyb3IgImludmFsaWQgYXJndW1lbnQgZm9yICRvcHQiCi0JCQkgICAgIGV4aXRfY21kPWV4aXQKLQkJCSAgICAgYnJlYWsKLQkJCSAgICAgOzsKLQkJICAgICAgICBlc2FjCi0KLQkJCW1vZGU9IiQxIgotCQkJc2hpZnQKLQkJCTs7Ci0KLSAgICAgIC0tcHJlc2VydmUtZHVwLWRlcHMpCi0JCQlvcHRfZHVwbGljYXRlX2RlcHM9OgkJCQk7OwotCi0gICAgICAtLXF1aWV0fC0tc2lsZW50KQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgotCQkJb3B0X3NpbGVudD06Ci0JCQk7OwotCi0gICAgICAtLXZlcmJvc2V8IC12KQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgotCQkJb3B0X3NpbGVudD1mYWxzZQotCQkJOzsKLQotICAgICAgLS10YWcpCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKLQkJCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQgJDEiCi0JCQlmdW5jX2VuYWJsZV90YWcgIiQxIgkjIHRhZ25hbWUgaXMgc2V0IGhlcmUKLQkJCXNoaWZ0Ci0JCQk7OwotCi0gICAgICAjIFNlcGFyYXRlIG9wdGFyZ3MgdG8gbG9uZyBvcHRpb25zOgotICAgICAgLWRsb3Blbj0qfC0tbW9kZT0qfC0tdGFnPSopCi0JCQlmdW5jX29wdF9zcGxpdCAiJG9wdCIKLQkJCXNldCBkdW1teSAiJGZ1bmNfb3B0X3NwbGl0X29wdCIgIiRmdW5jX29wdF9zcGxpdF9hcmciICR7MSsiJEAifQotCQkJc2hpZnQKLQkJCTs7Ci0KLSAgICAgIC1cP3wtaCkJCWZ1bmNfdXNhZ2UJCQkJCTs7Ci0gICAgICAtLWhlbHApCQlvcHRfaGVscD06CQkJCQk7OwotICAgICAgLS12ZXJzaW9uKQlmdW5jX3ZlcnNpb24JCQkJCTs7Ci0KLSAgICAgIC0qKQkJZnVuY19mYXRhbF9oZWxwICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgJG9wdCciCTs7Ci0KLSAgICAgICopCQlub25vcHQ9IiRvcHQiCi0JCQlicmVhawotCQkJOzsKLSAgICBlc2FjCi0gIGRvbmUKLQotCi0gIGNhc2UgJGhvc3QgaW4KLSAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqcHczMiogfCAqY2VnY2MqKQotICAgICAgIyBkb24ndCBlbGltaW5hdGUgZHVwbGljYXRpb25zIGluICRwb3N0ZGVwcyBhbmQgJHByZWRlcHMKLSAgICAgIG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9OgotICAgICAgOzsKLSAgICAqKQotICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz0kb3B0X2R1cGxpY2F0ZV9kZXBzCi0gICAgICA7OwotICBlc2FjCi0KLSAgIyBIYXZpbmcgd2FybmVkIGFib3V0IGFsbCBtaXMtc3BlY2lmaWVkIG9wdGlvbnMsIGJhaWwgb3V0IGlmCi0gICMgYW55dGhpbmcgd2FzIHdyb25nLgotICAkZXhpdF9jbWQgJEVYSVRfRkFJTFVSRQotfQotCiAjIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaAogIyBFbnN1cmUgdGhhdCB3ZSBhcmUgdXNpbmcgbTQgbWFjcm9zLCBhbmQgbGlidG9vbCBzY3JpcHQgZnJvbSB0aGUgc2FtZQogIyByZWxlYXNlIG9mIGxpYnRvb2wuCkBAIC04NTUsMzggKzEwMTUsMjE0IEBACiB9CiAKIAorIyBTaG9ydGhhbmQgZm9yIC0tbW9kZT1mb28sIG9ubHkgdmFsaWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50CitjYXNlICQxIGluCitjbGVhbnxjbGVhfGNsZXxjbCkKKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY2xlYW4gJHsxKyIkQCJ9OyBzaGlmdAorICA7OworY29tcGlsZXxjb21waWx8Y29tcGl8Y29tcHxjb218Y298YykKKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY29tcGlsZSAkezErIiRAIn07IHNoaWZ0CisgIDs7CitleGVjdXRlfGV4ZWN1dHxleGVjdXxleGVjfGV4ZXxleHxlKQorICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBleGVjdXRlICR7MSsiJEAifTsgc2hpZnQKKyAgOzsKK2ZpbmlzaHxmaW5pc3xmaW5pfGZpbnxmaXxmKQorICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBmaW5pc2ggJHsxKyIkQCJ9OyBzaGlmdAorICA7OworaW5zdGFsbHxpbnN0YWx8aW5zdGF8aW5zdHxpbnN8aW58aSkKKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0CisgIDs7CitsaW5rfGxpbnxsaXxsKQorICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBsaW5rICR7MSsiJEAifTsgc2hpZnQKKyAgOzsKK3VuaW5zdGFsbHx1bmluc3RhbHx1bmluc3RhfHVuaW5zdHx1bmluc3x1bmlufHVuaXx1bnx1KQorICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSB1bmluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAorICA7OworZXNhYworCisKKworIyBPcHRpb24gZGVmYXVsdHM6CitvcHRfZGVidWc9Ogorb3B0X2RyeV9ydW49ZmFsc2UKK29wdF9jb25maWc9ZmFsc2UKK29wdF9wcmVzZXJ2ZV9kdXBfZGVwcz1mYWxzZQorb3B0X2ZlYXR1cmVzPWZhbHNlCitvcHRfZmluaXNoPWZhbHNlCitvcHRfaGVscD1mYWxzZQorb3B0X2hlbHBfYWxsPWZhbHNlCitvcHRfc2lsZW50PToKK29wdF92ZXJib3NlPToKK29wdF9zaWxlbnQ9ZmFsc2UKK29wdF92ZXJib3NlPWZhbHNlCisKKworIyBQYXJzZSBvcHRpb25zIG9uY2UsIHRob3JvdWdobHkuICBUaGlzIGNvbWVzIGFzIHNvb24gYXMgcG9zc2libGUgaW4gdGhlCisjIHNjcmlwdCB0byBtYWtlIHRoaW5ncyBsaWtlIGAtLXZlcnNpb24nIGhhcHBlbiBhcyBxdWlja2x5IGFzIHdlIGNhbi4KK3sKKyAgIyB0aGlzIGp1c3QgZWFzZXMgZXhpdCBoYW5kbGluZworICB3aGlsZSB0ZXN0ICQjIC1ndCAwOyBkbworICAgIG9wdD0iJDEiCisgICAgc2hpZnQKKyAgICBjYXNlICRvcHQgaW4KKyAgICAgIC0tZGVidWd8LXgpCW9wdF9kZWJ1Zz0nc2V0IC14JworCQkJZnVuY19lY2hvICJlbmFibGluZyBzaGVsbCB0cmFjZSBtb2RlIgorCQkJJG9wdF9kZWJ1ZworCQkJOzsKKyAgICAgIC0tZHJ5LXJ1bnwtLWRyeXJ1bnwtbikKKwkJCW9wdF9kcnlfcnVuPToKKwkJCTs7CisgICAgICAtLWNvbmZpZykKKwkJCW9wdF9jb25maWc9OgorZnVuY19jb25maWcKKwkJCTs7CisgICAgICAtLWRsb3BlbnwtZGxvcGVuKQorCQkJb3B0YXJnPSIkMSIKKwkJCW9wdF9kbG9wZW49IiR7b3B0X2Rsb3Blbiskb3B0X2Rsb3BlbgorfSRvcHRhcmciCisJCQlzaGlmdAorCQkJOzsKKyAgICAgIC0tcHJlc2VydmUtZHVwLWRlcHMpCisJCQlvcHRfcHJlc2VydmVfZHVwX2RlcHM9OgorCQkJOzsKKyAgICAgIC0tZmVhdHVyZXMpCisJCQlvcHRfZmVhdHVyZXM9OgorZnVuY19mZWF0dXJlcworCQkJOzsKKyAgICAgIC0tZmluaXNoKQorCQkJb3B0X2ZpbmlzaD06CitzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0CisJCQk7OworICAgICAgLS1oZWxwKQorCQkJb3B0X2hlbHA9OgorCQkJOzsKKyAgICAgIC0taGVscC1hbGwpCisJCQlvcHRfaGVscF9hbGw9Ogorb3B0X2hlbHA9JzogaGVscC1hbGwnCisJCQk7OworICAgICAgLS1tb2RlKQorCQkJdGVzdCAkIyA9IDAgJiYgZnVuY19taXNzaW5nX2FyZyAkb3B0ICYmIGJyZWFrCisJCQlvcHRhcmc9IiQxIgorCQkJb3B0X21vZGU9IiRvcHRhcmciCitjYXNlICRvcHRhcmcgaW4KKyAgIyBWYWxpZCBtb2RlIGFyZ3VtZW50czoKKyAgY2xlYW58Y29tcGlsZXxleGVjdXRlfGZpbmlzaHxpbnN0YWxsfGxpbmt8cmVsaW5rfHVuaW5zdGFsbCkgOzsKKworICAjIENhdGNoIGFueXRoaW5nIGVsc2UgYXMgYW4gZXJyb3IKKyAgKikgZnVuY19lcnJvciAiaW52YWxpZCBhcmd1bWVudCBmb3IgJG9wdCIKKyAgICAgZXhpdF9jbWQ9ZXhpdAorICAgICBicmVhaworICAgICA7OworZXNhYworCQkJc2hpZnQKKwkJCTs7CisgICAgICAtLW5vLXNpbGVudHwtLW5vLXF1aWV0KQorCQkJb3B0X3NpbGVudD1mYWxzZQorZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCisJCQk7OworICAgICAgLS1uby12ZXJib3NlKQorCQkJb3B0X3ZlcmJvc2U9ZmFsc2UKK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgorCQkJOzsKKyAgICAgIC0tc2lsZW50fC0tcXVpZXQpCisJCQlvcHRfc2lsZW50PToKK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgorICAgICAgICBvcHRfdmVyYm9zZT1mYWxzZQorCQkJOzsKKyAgICAgIC0tdmVyYm9zZXwtdikKKwkJCW9wdF92ZXJib3NlPToKK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0Igorb3B0X3NpbGVudD1mYWxzZQorCQkJOzsKKyAgICAgIC0tdGFnKQorCQkJdGVzdCAkIyA9IDAgJiYgZnVuY19taXNzaW5nX2FyZyAkb3B0ICYmIGJyZWFrCisJCQlvcHRhcmc9IiQxIgorCQkJb3B0X3RhZz0iJG9wdGFyZyIKK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0ICRvcHRhcmciCitmdW5jX2VuYWJsZV90YWcgIiRvcHRhcmciCisJCQlzaGlmdAorCQkJOzsKKworICAgICAgLVw/fC1oKQkJZnVuY191c2FnZQkJCQk7OworICAgICAgLS1oZWxwKQkJZnVuY19oZWxwCQkJCTs7CisgICAgICAtLXZlcnNpb24pCWZ1bmNfdmVyc2lvbgkJCQk7OworCisgICAgICAjIFNlcGFyYXRlIG9wdGFyZ3MgdG8gbG9uZyBvcHRpb25zOgorICAgICAgLS0qPSopCisJCQlmdW5jX3NwbGl0X2xvbmdfb3B0ICIkb3B0IgorCQkJc2V0IGR1bW15ICIkZnVuY19zcGxpdF9sb25nX29wdF9uYW1lIiAiJGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnIiAkezErIiRAIn0KKwkJCXNoaWZ0CisJCQk7OworCisgICAgICAjIFNlcGFyYXRlIG5vbi1hcmd1bWVudCBzaG9ydCBvcHRpb25zOgorICAgICAgLVw/KnwtaCp8LW4qfC12KikKKwkJCWZ1bmNfc3BsaXRfc2hvcnRfb3B0ICIkb3B0IgorCQkJc2V0IGR1bW15ICIkZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZSIgIi0kZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIiAkezErIiRAIn0KKwkJCXNoaWZ0CisJCQk7OworCisgICAgICAtLSkJCWJyZWFrCQkJCQk7OworICAgICAgLSopCQlmdW5jX2ZhdGFsX2hlbHAgInVucmVjb2duaXplZCBvcHRpb24gXGAkb3B0JyIgOzsKKyAgICAgICopCQlzZXQgZHVtbXkgIiRvcHQiICR7MSsiJEAifTsJc2hpZnQ7IGJyZWFrICA7OworICAgIGVzYWMKKyAgZG9uZQorCisgICMgVmFsaWRhdGUgb3B0aW9uczoKKworICAjIHNhdmUgZmlyc3Qgbm9uLW9wdGlvbiBhcmd1bWVudAorICBpZiB0ZXN0ICIkIyIgLWd0IDA7IHRoZW4KKyAgICBub25vcHQ9IiRvcHQiCisgICAgc2hpZnQKKyAgZmkKKworICAjIHByZXNlcnZlIC0tZGVidWcKKyAgdGVzdCAiJG9wdF9kZWJ1ZyIgPSA6IHx8IGZ1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAtLWRlYnVnIgorCisgIGNhc2UgJGhvc3QgaW4KKyAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqcHczMiogfCAqY2VnY2MqKQorICAgICAgIyBkb24ndCBlbGltaW5hdGUgZHVwbGljYXRpb25zIGluICRwb3N0ZGVwcyBhbmQgJHByZWRlcHMKKyAgICAgIG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9OgorICAgICAgOzsKKyAgICAqKQorICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz0kb3B0X3ByZXNlcnZlX2R1cF9kZXBzCisgICAgICA7OworICBlc2FjCisKKyAgJG9wdF9oZWxwIHx8IHsKKyAgICAjIFNhbml0eSBjaGVja3MgZmlyc3Q6CisgICAgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCisKKyAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiAhPSB5ZXM7IHRoZW4KKyAgICAgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAibm90IGNvbmZpZ3VyZWQgdG8gYnVpbGQgYW55IGtpbmQgb2YgbGlicmFyeSIKKyAgICBmaQorCisgICAgIyBEYXJ3aW4gc3Vja3MKKyAgICBldmFsIHN0ZF9zaHJleHQ9XCIkc2hyZXh0X2NtZHNcIgorCisgICAgIyBPbmx5IGV4ZWN1dGUgbW9kZSBpcyBhbGxvd2VkIHRvIGhhdmUgLWRsb3BlbiBmbGFncy4KKyAgICBpZiB0ZXN0IC1uICIkb3B0X2Rsb3BlbiIgJiYgdGVzdCAiJG9wdF9tb2RlIiAhPSBleGVjdXRlOyB0aGVuCisgICAgICBmdW5jX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgLWRsb3BlbiciCisgICAgICAkRUNITyAiJGhlbHAiIDE+JjIKKyAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorICAgIGZpCisKKyAgICAjIENoYW5nZSB0aGUgaGVscCBtZXNzYWdlIHRvIGEgbW9kZS1zcGVjaWZpYyBvbmUuCisgICAgZ2VuZXJpY19oZWxwPSIkaGVscCIKKyAgICBoZWxwPSJUcnkgXGAkcHJvZ25hbWUgLS1oZWxwIC0tbW9kZT0kb3B0X21vZGUnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKyAgfQorCisKKyAgIyBCYWlsIGlmIHRoZSBvcHRpb25zIHdlcmUgc2NyZXdlZAorICAkZXhpdF9jbWQgJEVYSVRfRkFJTFVSRQorfQorCisKKworCiAjIyAtLS0tLS0tLS0tLSAjIwogIyMgICAgTWFpbi4gICAgIyMKICMjIC0tLS0tLS0tLS0tICMjCiAKLSRvcHRfaGVscCB8fCB7Ci0gICMgU2FuaXR5IGNoZWNrcyBmaXJzdDoKLSAgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCi0KLSAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgIT0geWVzOyB0aGVuCi0gICAgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uICJub3QgY29uZmlndXJlZCB0byBidWlsZCBhbnkga2luZCBvZiBsaWJyYXJ5IgotICBmaQotCi0gIHRlc3QgLXogIiRtb2RlIiAmJiBmdW5jX2ZhdGFsX2Vycm9yICJlcnJvcjogeW91IG11c3Qgc3BlY2lmeSBhIE1PREUuIgotCi0KLSAgIyBEYXJ3aW4gc3Vja3MKLSAgZXZhbCBzdGRfc2hyZXh0PVwiJHNocmV4dF9jbWRzXCIKLQotCi0gICMgT25seSBleGVjdXRlIG1vZGUgaXMgYWxsb3dlZCB0byBoYXZlIC1kbG9wZW4gZmxhZ3MuCi0gIGlmIHRlc3QgLW4gIiRleGVjdXRlX2RsZmlsZXMiICYmIHRlc3QgIiRtb2RlIiAhPSBleGVjdXRlOyB0aGVuCi0gICAgZnVuY19lcnJvciAidW5yZWNvZ25pemVkIG9wdGlvbiBcYC1kbG9wZW4nIgotICAgICRFQ0hPICIkaGVscCIgMT4mMgotICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotICBmaQotCi0gICMgQ2hhbmdlIHRoZSBoZWxwIG1lc3NhZ2UgdG8gYSBtb2RlLXNwZWNpZmljIG9uZS4KLSAgZ2VuZXJpY19oZWxwPSIkaGVscCIKLSAgaGVscD0iVHJ5IFxgJHByb2duYW1lIC0taGVscCAtLW1vZGU9JG1vZGUnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKLX0KLQotCiAjIGZ1bmNfbGFsaWJfcCBmaWxlCiAjIFRydWUgaWZmIEZJTEUgaXMgYSBsaWJ0b29sIGAubGEnIGxpYnJhcnkgb3IgYC5sbycgb2JqZWN0IGZpbGUuCiAjIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhIGJhc2ljIHNhbml0eSBjaGVjazsgaXQgd2lsbCBoYXJkbHkgZmx1c2ggb3V0CkBAIC05NTAsMTIgKzEyODYsOSBAQAogIyB0ZW1wb3JhcnkgbHR3cmFwcGVyX3NjcmlwdC4KIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWUgKCkKIHsKLSAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iIgotICAgIGlmIGZ1bmNfbHR3cmFwcGVyX2V4ZWN1dGFibGVfcCAiJDEiOyB0aGVuCi0JZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJDEiICIiICIuIgotCWZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotCWZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdC8kb2JqZGlyLyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fV9sdHNod3JhcHBlciIKLSAgICBmaQorICAgIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgIiQxIiAiIiAiLiIKKyAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLmV4ZScgIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKyAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQvJG9iamRpci8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH1fbHRzaHdyYXBwZXIiCiB9CiAKICMgZnVuY19sdHdyYXBwZXJfcCBmaWxlCkBAIC0xMDAxLDYgKzEzMzQsMzcgQEAKIH0KIAogCisjIGZ1bmNfcmVzb2x2ZV9zeXNyb290IFBBVEgKKyMgUmVwbGFjZSBhIGxlYWRpbmcgPSBpbiBQQVRIIHdpdGggYSBzeXNyb290LiAgU3RvcmUgdGhlIHJlc3VsdCBpbnRvCisjIGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorZnVuY19yZXNvbHZlX3N5c3Jvb3QgKCkKK3sKKyAgZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0PSQxCisgIGNhc2UgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCBpbgorICA9KikKKyAgICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCisgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0PSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICAgIDs7CisgIGVzYWMKK30KKworIyBmdW5jX3JlcGxhY2Vfc3lzcm9vdCBQQVRICisjIElmIFBBVEggYmVnaW5zIHdpdGggdGhlIHN5c3Jvb3QsIHJlcGxhY2UgaXQgd2l0aCA9IGFuZAorIyBzdG9yZSB0aGUgcmVzdWx0IGludG8gZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0LgorZnVuY19yZXBsYWNlX3N5c3Jvb3QgKCkKK3sKKyAgY2FzZSAiJGx0X3N5c3Jvb3Q6JDEiIGluCisgID8qOiIkbHRfc3lzcm9vdCIqKQorICAgIGZ1bmNfc3RyaXBuYW1lICIkbHRfc3lzcm9vdCIgJycgIiQxIgorICAgIGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdD0iPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisgICAgOzsKKyAgKikKKyAgICAjIEluY2x1ZGluZyBubyBzeXNyb290LgorICAgIGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdD0kMQorICAgIDs7CisgIGVzYWMKK30KKwogIyBmdW5jX2luZmVyX3RhZyBhcmcKICMgSW5mZXIgdGFnZ2VkIGNvbmZpZ3VyYXRpb24gdG8gdXNlIGlmIGFueSBhcmUgYXZhaWxhYmxlIGFuZAogIyBpZiBvbmUgd2Fzbid0IGNob3NlbiB2aWEgdGhlICItLXRhZyIgY29tbWFuZCBsaW5lIG9wdGlvbi4KQEAgLTEwMTMsMTMgKzEzNzcsMTUgQEAKICAgICBpZiB0ZXN0IC1uICIkYXZhaWxhYmxlX3RhZ3MiICYmIHRlc3QgLXogIiR0YWduYW1lIjsgdGhlbgogICAgICAgQ0NfcXVvdGVkPQogICAgICAgZm9yIGFyZyBpbiAkQ0M7IGRvCi0gICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0JQ0NfcXVvdGVkPSIkQ0NfcXVvdGVkICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwlmdW5jX2FwcGVuZF9xdW90ZWQgQ0NfcXVvdGVkICIkYXJnIgogICAgICAgZG9uZQorICAgICAgQ0NfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDYAorICAgICAgQ0NfcXVvdGVkX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ19xdW90ZWRgCiAgICAgICBjYXNlICRAIGluCiAgICAgICAjIEJsYW5rcyBpbiB0aGUgY29tbWFuZCBtYXkgaGF2ZSBiZWVuIHN0cmlwcGVkIGJ5IHRoZSBjYWxsaW5nIHNoZWxsLAogICAgICAgIyBidXQgbm90IGZyb20gdGhlIENDIGVudmlyb25tZW50IHZhcmlhYmxlIHdoZW4gY29uZmlndXJlIHdhcyBydW4uCi0gICAgICAiICRDQyAiKiB8ICIkQ0MgIiogfCAiIGAkRUNITyAkQ0NgICIqIHwgImAkRUNITyAkQ0NgICIqIHwgIiAkQ0NfcXVvdGVkIiogfCAiJENDX3F1b3RlZCAiKiB8ICIgYCRFQ0hPICRDQ19xdW90ZWRgICIqIHwgImAkRUNITyAkQ0NfcXVvdGVkYCAiKikgOzsKKyAgICAgICIgJENDICIqIHwgIiRDQyAiKiB8ICIgJENDX2V4cGFuZGVkICIqIHwgIiRDQ19leHBhbmRlZCAiKiB8IFwKKyAgICAgICIgJENDX3F1b3RlZCIqIHwgIiRDQ19xdW90ZWQgIiogfCAiICRDQ19xdW90ZWRfZXhwYW5kZWQgIiogfCAiJENDX3F1b3RlZF9leHBhbmRlZCAiKikgOzsKICAgICAgICMgQmxhbmtzIGF0IHRoZSBzdGFydCBvZiAkYmFzZV9jb21waWxlIHdpbGwgY2F1c2UgdGhpcyB0byBmYWlsCiAgICAgICAjIGlmIHdlIGRvbid0IGNoZWNrIGZvciB0aGVtIGFzIHdlbGwuCiAgICAgICAqKQpAQCAtMTAzMCwxMSArMTM5NiwxMyBAQAogCSAgICBDQ19xdW90ZWQ9CiAJICAgIGZvciBhcmcgaW4gJENDOyBkbwogCSAgICAgICMgRG91YmxlLXF1b3RlIGFyZ3MgY29udGFpbmluZyBvdGhlciBzaGVsbCBtZXRhY2hhcmFjdGVycy4KLQkgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotCSAgICAgIENDX3F1b3RlZD0iJENDX3F1b3RlZCAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisJICAgICAgZnVuY19hcHBlbmRfcXVvdGVkIENDX3F1b3RlZCAiJGFyZyIKIAkgICAgZG9uZQorCSAgICBDQ19leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NgCisJICAgIENDX3F1b3RlZF9leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NfcXVvdGVkYAogCSAgICBjYXNlICIkQCAiIGluCi0JICAgICAgIiAkQ0MgIiogfCAiJENDICIqIHwgIiBgJEVDSE8gJENDYCAiKiB8ICJgJEVDSE8gJENDYCAiKiB8ICIgJENDX3F1b3RlZCIqIHwgIiRDQ19xdW90ZWQgIiogfCAiIGAkRUNITyAkQ0NfcXVvdGVkYCAiKiB8ICJgJEVDSE8gJENDX3F1b3RlZGAgIiopCisJICAgICIgJENDICIqIHwgIiRDQyAiKiB8ICIgJENDX2V4cGFuZGVkICIqIHwgIiRDQ19leHBhbmRlZCAiKiB8IFwKKwkgICAgIiAkQ0NfcXVvdGVkIiogfCAiJENDX3F1b3RlZCAiKiB8ICIgJENDX3F1b3RlZF9leHBhbmRlZCAiKiB8ICIkQ0NfcXVvdGVkX2V4cGFuZGVkICIqKQogCSAgICAgICMgVGhlIGNvbXBpbGVyIGluIHRoZSBiYXNlIGNvbXBpbGUgY29tbWFuZCBtYXRjaGVzCiAJICAgICAgIyB0aGUgb25lIGluIHRoZSB0YWdnZWQgY29uZmlndXJhdGlvbi4KIAkgICAgICAjIEFzc3VtZSB0aGlzIGlzIHRoZSB0YWdnZWQgY29uZmlndXJhdGlvbiB3ZSB3YW50LgpAQCAtMTA5Nyw2ICsxNDY1LDQ4NiBAQAogICAgIH0KIH0KIAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBGSUxFIE5BTUUgQU5EIFBBVEggQ09OVkVSU0lPTiBIRUxQRVIgRlVOQ1RJT05TICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiBBUkcKKyMgSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgZmlsZSBuYW1lIGNvbnZlcnNpb24gZnVuY3Rpb25zIHdoZW4gJGJ1aWxkIGlzICpuaXgsCisjIGFuZCAkaG9zdCBpcyBtaW5ndywgY3lnd2luLCBvciBzb21lIG90aGVyIHczMiBlbnZpcm9ubWVudC4gUmVsaWVzIG9uIGEKKyMgY29ycmVjdGx5IGNvbmZpZ3VyZWQgd2luZSBlbnZpcm9ubWVudCBhdmFpbGFibGUsIHdpdGggdGhlIHdpbmVwYXRoIHByb2dyYW0KKyMgaW4gJGJ1aWxkJ3MgJFBBVEguCisjCisjIEFSRyBpcyB0aGUgJGJ1aWxkIGZpbGUgbmFtZSB0byBiZSBjb252ZXJ0ZWQgdG8gdzMyIGZvcm1hdC4KKyMgUmVzdWx0IGlzIGF2YWlsYWJsZSBpbiAkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQsIGFuZCB3aWxsCisjIGJlIGVtcHR5IG9uIGVycm9yIChvciB3aGVuIEFSRyBpcyBlbXB0eSkKK2Z1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgICMgVW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lcyBub3QgZXhpdCB3aXRoIGEgbm9uLXplcm8gZXJyb3IgY29kZSwgc28gd2UKKyAgICAjIGFyZSBmb3JjZWQgdG8gY2hlY2sgdGhlIGNvbnRlbnRzIG9mIHN0ZG91dC4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZQorICAgICMgY29tbWFuZCBpcyBub3QgZm91bmQsIHRoZSBzaGVsbCB3aWxsIHNldCBhbiBleGl0IGNvZGUgb2YgMTI3IGFuZCBwcmludAorICAgICMgKmFuIGVycm9yIG1lc3NhZ2UqIHRvIHN0ZG91dC4gU28gd2UgbXVzdCBjaGVjayBmb3IgYm90aCBlcnJvciBjb2RlIG9mCisgICAgIyB6ZXJvIEFORCBub24tZW1wdHkgc3Rkb3V0LCB3aGljaCBleHBsYWlucyB0aGUgb2RkIGNvbnN0cnVjdGlvbjoKKyAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3RtcD1gd2luZXBhdGggLXcgIiQxIiAyPi9kZXYvbnVsbGAKKyAgICBpZiB0ZXN0ICIkPyIgLWVxIDAgJiYgdGVzdCAtbiAiJHtmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3RtcH0iOyB0aGVuCisgICAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdD1gJEVDSE8gIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3RtcCIgfAorICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCisgICAgZWxzZQorICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9CisgICAgZmkKKyAgZmkKK30KKyMgZW5kOiBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyCisKKworIyBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyIEFSRworIyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBwYXRoIGNvbnZlcnNpb24gZnVuY3Rpb25zIHdoZW4gJGJ1aWxkIGlzICpuaXgsIGFuZAorIyAkaG9zdCBpcyBtaW5ndywgY3lnd2luLCBvciBzb21lIG90aGVyIHczMiBlbnZpcm9ubWVudC4gUmVsaWVzIG9uIGEgY29ycmVjdGx5CisjIGNvbmZpZ3VyZWQgd2luZSBlbnZpcm9ubWVudCBhdmFpbGFibGUsIHdpdGggdGhlIHdpbmVwYXRoIHByb2dyYW0gaW4gJGJ1aWxkJ3MKKyMgJFBBVEguIEFzc3VtZXMgQVJHIGhhcyBubyBsZWFkaW5nIG9yIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMuCisjCisjIEFSRyBpcyBwYXRoIHRvIGJlIGNvbnZlcnRlZCBmcm9tICRidWlsZCBmb3JtYXQgdG8gd2luMzIuCisjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0LgorIyBVbmNvbnZlcnRpYmxlIGZpbGUgKGRpcmVjdG9yeSkgbmFtZXMgaW4gQVJHIGFyZSBza2lwcGVkOyBpZiBubyBkaXJlY3RvcnkgbmFtZXMKKyMgYXJlIGNvbnZlcnRpYmxlLCB0aGVuIHRoZSByZXN1bHQgbWF5IGJlIGVtcHR5LgorZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiAoKQoreworICAkb3B0X2RlYnVnCisgICMgdW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lc24ndCBjb252ZXJ0IHBhdGhzLCBvbmx5IGZpbGUgbmFtZXMKKyAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQ9IiIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgb2xkSUZTPSRJRlMKKyAgICBJRlM9OgorICAgIGZvciBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX2YgaW4gJDE7IGRvCisgICAgICBJRlM9JG9sZElGUworICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfZiIKKyAgICAgIGlmIHRlc3QgLW4gIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIgOyB0aGVuCisgICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCI7IHRoZW4KKyAgICAgICAgICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgorICAgICAgICBlbHNlCisgICAgICAgICAgZnVuY19hcHBlbmQgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQgIjskZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCisgICAgICAgIGZpCisgICAgICBmaQorICAgIGRvbmUKKyAgICBJRlM9JG9sZElGUworICBmaQorfQorIyBlbmQ6IGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIKKworCisjIGZ1bmNfY3lncGF0aCBBUkdTLi4uCisjIFdyYXBwZXIgYXJvdW5kIGNhbGxpbmcgdGhlIGN5Z3BhdGggcHJvZ3JhbSB2aWEgTFRfQ1lHUEFUSC4gVGhpcyBpcyB1c2VkIHdoZW4KKyMgd2hlbiAoMSkgJGJ1aWxkIGlzICpuaXggYW5kIEN5Z3dpbiBpcyBob3N0ZWQgdmlhIGEgd2luZSBlbnZpcm9ubWVudDsgb3IgKDIpCisjICRidWlsZCBpcyBNU1lTIGFuZCAkaG9zdCBpcyBDeWd3aW4sIG9yICgzKSAkYnVpbGQgaXMgQ3lnd2luLiBJbiBjYXNlICgxKSBvcgorIyAoMiksIHJldHVybnMgdGhlIEN5Z3dpbiBmaWxlIG5hbWUgb3IgcGF0aCBpbiBmdW5jX2N5Z3BhdGhfcmVzdWx0IChpbnB1dAorIyBmaWxlIG5hbWUgb3IgcGF0aCBpcyBhc3N1bWVkIHRvIGJlIGluIHczMiBmb3JtYXQsIGFzIHByZXZpb3VzbHkgY29udmVydGVkCisjIGZyb20gJGJ1aWxkJ3MgKm5peCBvciBNU1lTIGZvcm1hdCkuIEluIGNhc2UgKDMpLCByZXR1cm5zIHRoZSB3MzIgZmlsZSBuYW1lCisjIG9yIHBhdGggaW4gZnVuY19jeWdwYXRoX3Jlc3VsdCAoaW5wdXQgZmlsZSBuYW1lIG9yIHBhdGggaXMgYXNzdW1lZCB0byBiZSBpbgorIyBDeWd3aW4gZm9ybWF0KS4gUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgb24gZXJyb3IuCisjCisjIEFSR1MgYXJlIHBhc3NlZCB0byBjeWdwYXRoLCB3aXRoIHRoZSBsYXN0IG9uZSBiZWluZyB0aGUgZmlsZSBuYW1lIG9yIHBhdGggdG8KKyMgYmUgY29udmVydGVkLgorIworIyBTcGVjaWZ5IHRoZSBhYnNvbHV0ZSAqbml4IChvciB3MzIpIG5hbWUgdG8gY3lncGF0aCBpbiB0aGUgTFRfQ1lHUEFUSAorIyBlbnZpcm9ubWVudCB2YXJpYWJsZTsgZG8gbm90IHB1dCBpdCBpbiAkUEFUSC4KK2Z1bmNfY3lncGF0aCAoKQoreworICAkb3B0X2RlYnVnCisgIGlmIHRlc3QgLW4gIiRMVF9DWUdQQVRIIiAmJiB0ZXN0IC1mICIkTFRfQ1lHUEFUSCI7IHRoZW4KKyAgICBmdW5jX2N5Z3BhdGhfcmVzdWx0PWAkTFRfQ1lHUEFUSCAiJEAiIDI+L2Rldi9udWxsYAorICAgIGlmIHRlc3QgIiQ/IiAtbmUgMDsgdGhlbgorICAgICAgIyBvbiBmYWlsdXJlLCBlbnN1cmUgcmVzdWx0IGlzIGVtcHR5CisgICAgICBmdW5jX2N5Z3BhdGhfcmVzdWx0PQorICAgIGZpCisgIGVsc2UKKyAgICBmdW5jX2N5Z3BhdGhfcmVzdWx0PQorICAgIGZ1bmNfZXJyb3IgIkxUX0NZR1BBVEggaXMgZW1wdHkgb3Igc3BlY2lmaWVzIG5vbi1leGlzdGVudCBmaWxlOiBcYCRMVF9DWUdQQVRIJyIKKyAgZmkKK30KKyNlbmQ6IGZ1bmNfY3lncGF0aAorCisKKyMgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgQVJHCisjIENvbnZlcnQgZmlsZSBuYW1lIG9yIHBhdGggQVJHIGZyb20gTVNZUyBmb3JtYXQgdG8gdzMyIGZvcm1hdC4gIFJldHVybgorIyByZXN1bHQgaW4gZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0LgorZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICAjIGF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQKKyAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0PWAoIGNtZCAvL2MgZWNobyAiJDEiICkgMj4vZGV2L251bGwgfAorICAgICRTRUQgLWUgJ3MvWyBdKiQvLycgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKK30KKyNlbmQ6IGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyCisKKworIyBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayBBUkcxIEFSRzIKKyMgVmVyaWZ5IHRoYXQgQVJHMSAoYSBmaWxlIG5hbWUgaW4gJGJ1aWxkIGZvcm1hdCkgd2FzIGNvbnZlcnRlZCB0byAkaG9zdAorIyBmb3JtYXQgaW4gQVJHMi4gT3RoZXJ3aXNlLCBlbWl0IGFuIGVycm9yIG1lc3NhZ2UsIGJ1dCBjb250aW51ZSAocmVzZXR0aW5nCisjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCB0byBBUkcxKS4KK2Z1bmNfY29udmVydF9maWxlX2NoZWNrICgpCit7CisgICRvcHRfZGVidWcKKyAgaWYgdGVzdCAteiAiJDIiICYmIHRlc3QgLW4gIiQxIiA7IHRoZW4KKyAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIGhvc3QgZmlsZSBuYW1lIGNvcnJlc3BvbmRpbmcgdG8iCisgICAgZnVuY19lcnJvciAiICBcYCQxJyIKKyAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKKyAgICAjIEZhbGxiYWNrOgorICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisgIGZpCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjaworCisKKyMgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgRlJPTV9QQVRIU0VQIFRPX1BBVEhTRVAgRlJPTV9QQVRIIFRPX1BBVEgKKyMgVmVyaWZ5IHRoYXQgRlJPTV9QQVRIIChhIHBhdGggaW4gJGJ1aWxkIGZvcm1hdCkgd2FzIGNvbnZlcnRlZCB0byAkaG9zdAorIyBmb3JtYXQgaW4gVE9fUEFUSC4gT3RoZXJ3aXNlLCBlbWl0IGFuIGVycm9yIG1lc3NhZ2UsIGJ1dCBjb250aW51ZSwgcmVzZXR0aW5nCisjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCB0byBhIHNpbXBsaXN0aWMgZmFsbGJhY2sgdmFsdWUgKHNlZSBiZWxvdykuCitmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayAoKQoreworICAkb3B0X2RlYnVnCisgIGlmIHRlc3QgLXogIiQ0IiAmJiB0ZXN0IC1uICIkMyI7IHRoZW4KKyAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBob3N0IHBhdGggY29ycmVzcG9uZGluZyB0byIKKyAgICBmdW5jX2Vycm9yICIgIFxgJDMnIgorICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgorICAgICMgRmFsbGJhY2suICBUaGlzIGlzIGEgZGVsaWJlcmF0ZWx5IHNpbXBsaXN0aWMgImNvbnZlcnNpb24iIGFuZAorICAgICMgc2hvdWxkIG5vdCBiZSAiaW1wcm92ZWQiLiAgU2VlIGxpYnRvb2wuaW5mby4KKyAgICBpZiB0ZXN0ICJ4JDEiICE9ICJ4JDIiOyB0aGVuCisgICAgICBsdF9yZXBsYWNlX3BhdGhzZXBfY2hhcnM9InN8JDF8JDJ8ZyIKKyAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gZWNobyAiJDMiIHwKKyAgICAgICAgJFNFRCAtZSAiJGx0X3JlcGxhY2VfcGF0aHNlcF9jaGFycyJgCisgICAgZWxzZQorICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMyIKKyAgICBmaQorICBmaQorfQorIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sKKworCisjIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCBGUk9OVFBBVCBCQUNLUEFUIFJFUEwgT1JJRworIyBNb2RpZmllcyBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQgYnkgcHJlcGVuZGluZyBSRVBMIGlmIE9SSUcgbWF0Y2hlcyBGUk9OVFBBVAorIyBhbmQgYXBwZW5kaW5nIFJFUEwgaWYgT1JJRyBtYXRjaGVzIEJBQ0tQQVQuCitmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBjYXNlICQ0IGluCisgICQxICkgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMyRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisgICAgOzsKKyAgZXNhYworICBjYXNlICQ0IGluCisgICQyICkgZnVuY19hcHBlbmQgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0ICIkMyIKKyAgICA7OworICBlc2FjCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAkYnVpbGQgdG8gJGhvc3QgRklMRSBOQU1FIENPTlZFUlNJT04gRlVOQ1RJT05TICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIGludm9rZWQgdmlhIGAkdG9faG9zdF9maWxlX2NtZCBBUkcnCisjCisjIEluIGVhY2ggY2FzZSwgQVJHIGlzIHRoZSBwYXRoIHRvIGJlIGNvbnZlcnRlZCBmcm9tICRidWlsZCB0byAkaG9zdCBmb3JtYXQuCisjIFJlc3VsdCB3aWxsIGJlIGF2YWlsYWJsZSBpbiAkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorCisKKyMgZnVuY190b19ob3N0X2ZpbGUgQVJHCisjIENvbnZlcnRzIHRoZSBmaWxlIG5hbWUgQVJHIGZyb20gJGJ1aWxkIGZvcm1hdCB0byAkaG9zdCBmb3JtYXQuIFJldHVybiByZXN1bHQKKyMgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY190b19ob3N0X2ZpbGUgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICAkdG9faG9zdF9maWxlX2NtZCAiJDEiCit9CisjIGVuZCBmdW5jX3RvX2hvc3RfZmlsZQorCisKKyMgZnVuY190b190b29sX2ZpbGUgQVJHIExBWlkKKyMgY29udmVydHMgdGhlIGZpbGUgbmFtZSBBUkcgZnJvbSAkYnVpbGQgZm9ybWF0IHRvIHRvb2xjaGFpbiBmb3JtYXQuIFJldHVybgorIyByZXN1bHQgaW4gZnVuY190b190b29sX2ZpbGVfcmVzdWx0LiAgSWYgdGhlIGNvbnZlcnNpb24gaW4gdXNlIGlzIGxpc3RlZAorIyBpbiAodGhlIGNvbW1hIHNlcGFyYXRlZCkgTEFaWSwgbm8gY29udmVyc2lvbiB0YWtlcyBwbGFjZS4KK2Z1bmNfdG9fdG9vbF9maWxlICgpCit7CisgICRvcHRfZGVidWcKKyAgY2FzZSAsJDIsIGluCisgICAgKiwiJHRvX3Rvb2xfZmlsZV9jbWQiLCopCisgICAgICBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQ9JDEKKyAgICAgIDs7CisgICAgKikKKyAgICAgICR0b190b29sX2ZpbGVfY21kICIkMSIKKyAgICAgIGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdD0kZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0CisgICAgICA7OworICBlc2FjCit9CisjIGVuZCBmdW5jX3RvX3Rvb2xfZmlsZQorCisKKyMgZnVuY19jb252ZXJ0X2ZpbGVfbm9vcCBBUkcKKyMgQ29weSBBUkcgdG8gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X2ZpbGVfbm9vcCAoKQoreworICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorfQorIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorCisKKyMgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIgQVJHCisjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tIChtaW5ndykgTVNZUyB0byAobWluZ3cpIHczMiBmb3JtYXQ7IGF1dG9tYXRpYworIyBjb252ZXJzaW9uIHRvIHczMiBpcyBub3QgYXZhaWxhYmxlIGluc2lkZSB0aGUgY3dyYXBwZXIuICBSZXR1cm5zIHJlc3VsdCBpbgorIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkMSIKKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCisgIGZpCisgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorCisKKyMgZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMiBBUkcKKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gQ3lnd2luIHRvIHczMiBmb3JtYXQuICBSZXR1cm5zIHJlc3VsdCBpbgorIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgIyBiZWNhdXNlICRidWlsZCBpcyBjeWd3aW4sIHdlIGNhbGwgInRoZSIgY3lncGF0aCBpbiAkUEFUSDsgbm8gbmVlZCB0byB1c2UKKyAgICAjIExUX0NZR1BBVEggaW4gdGhpcyBjYXNlLgorICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD1gY3lncGF0aCAtbSAiJDEiYAorICBmaQorICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgorfQorIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorCisKKyMgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMiBBUkcKKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gKm5peCB0byB3MzIgZm9ybWF0LiAgUmVxdWlyZXMgYSB3aW5lIGVudmlyb25tZW50CisjIGFuZCBhIHdvcmtpbmcgd2luZXBhdGguIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9maWxlX25peF90b193MzIgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICIkMSIKKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKyAgZmkKKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKK30KKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKworCisjIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luIEFSRworIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSBNU1lTIHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBMVF9DWUdQQVRIIHNldC4KKyMgUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4gKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJDEiCisgICAgZnVuY19jeWdwYXRoIC11ICIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgorICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCisgIGZpCisgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorCisKKyMgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbiBBUkcKKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gKm5peCB0byBDeWd3aW4gZm9ybWF0LiAgUmVxdWlyZXMgQ3lnd2luIGluc3RhbGxlZAorIyBpbiBhIHdpbmUgZW52aXJvbm1lbnQsIHdvcmtpbmcgd2luZXBhdGgsIGFuZCBMVF9DWUdQQVRIIHNldC4gIFJldHVybnMgcmVzdWx0CisjIGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4gKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICAjIGNvbnZlcnQgZnJvbSAqbml4IHRvIHczMiwgdGhlbiB1c2UgY3lncGF0aCB0byBjb252ZXJ0IGZyb20gdzMyIHRvIGN5Z3dpbi4KKyAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICIkMSIKKyAgICBmdW5jX2N5Z3BhdGggLXUgIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgorICBmaQorICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgorfQorIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAkYnVpbGQgdG8gJGhvc3QgUEFUSCBDT05WRVJTSU9OIEZVTkNUSU9OUyAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgaW52b2tlZCB2aWEgYCR0b19ob3N0X3BhdGhfY21kIEFSRycKKyMKKyMgSW4gZWFjaCBjYXNlLCBBUkcgaXMgdGhlIHBhdGggdG8gYmUgY29udmVydGVkIGZyb20gJGJ1aWxkIHRvICRob3N0IGZvcm1hdC4KKyMgVGhlIHJlc3VsdCB3aWxsIGJlIGF2YWlsYWJsZSBpbiAkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgorIworIyBQYXRoIHNlcGFyYXRvcnMgYXJlIGFsc28gY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0byAkaG9zdCBmb3JtYXQuICBJZgorIyBBUkcgYmVnaW5zIG9yIGVuZHMgd2l0aCBhIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlciwgaXQgaXMgcHJlc2VydmVkIChidXQKKyMgY29udmVydGVkIHRvICRob3N0IGZvcm1hdCkgb24gb3V0cHV0LgorIworIyBBbGwgcGF0aCBjb252ZXJzaW9uIGZ1bmN0aW9ucyBhcmUgbmFtZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBjb252ZW50aW9uOgorIyAgIGZpbGUgbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9uICAgIDogZnVuY19jb252ZXJ0X2ZpbGVfWF90b19ZICgpCisjICAgcGF0aCBjb252ZXJzaW9uIGZ1bmN0aW9uICAgICAgICAgOiBmdW5jX2NvbnZlcnRfcGF0aF9YX3RvX1kgKCkKKyMgd2hlcmUsIGZvciBhbnkgZ2l2ZW4gJGJ1aWxkLyRob3N0IGNvbWJpbmF0aW9uIHRoZSAnWF90b19ZJyB2YWx1ZSBpcyB0aGUKKyMgc2FtZS4gIElmIGNvbnZlcnNpb24gZnVuY3Rpb25zIGFyZSBhZGRlZCBmb3IgbmV3ICRidWlsZC8kaG9zdCBjb21iaW5hdGlvbnMsCisjIHRoZSB0d28gbmV3IGZ1bmN0aW9ucyBtdXN0IGZvbGxvdyB0aGlzIHBhdHRlcm4sIG9yIGZ1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kCisjIHdpbGwgYnJlYWsuCisKKworIyBmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZAorIyBFbnN1cmVzIHRoYXQgZnVuY3Rpb24gInBvaW50ZXIiIHZhcmlhYmxlICR0b19ob3N0X3BhdGhfY21kIGlzIHNldCB0byB0aGUKKyMgYXBwcm9wcmlhdGUgdmFsdWUsIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiAkdG9faG9zdF9maWxlX2NtZC4KK3RvX2hvc3RfcGF0aF9jbWQ9CitmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZCAoKQoreworICAkb3B0X2RlYnVnCisgIGlmIHRlc3QgLXogIiR0b19ob3N0X3BhdGhfY21kIjsgdGhlbgorICAgIGZ1bmNfc3RyaXBuYW1lICdmdW5jX2NvbnZlcnRfZmlsZV8nICcnICIkdG9faG9zdF9maWxlX2NtZCIKKyAgICB0b19ob3N0X3BhdGhfY21kPSJmdW5jX2NvbnZlcnRfcGF0aF8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH0iCisgIGZpCit9CisKKworIyBmdW5jX3RvX2hvc3RfcGF0aCBBUkcKKyMgQ29udmVydHMgdGhlIHBhdGggQVJHIGZyb20gJGJ1aWxkIGZvcm1hdCB0byAkaG9zdCBmb3JtYXQuIFJldHVybiByZXN1bHQKKyMgaW4gZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgorZnVuY190b19ob3N0X3BhdGggKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZAorICAkdG9faG9zdF9wYXRoX2NtZCAiJDEiCit9CisjIGVuZCBmdW5jX3RvX2hvc3RfcGF0aAorCisKKyMgZnVuY19jb252ZXJ0X3BhdGhfbm9vcCBBUkcKKyMgQ29weSBBUkcgdG8gZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgorZnVuY19jb252ZXJ0X3BhdGhfbm9vcCAoKQoreworICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorfQorIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbm9vcAorCisKKyMgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzIgQVJHCisjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSAobWluZ3cpIE1TWVMgdG8gKG1pbmd3KSB3MzIgZm9ybWF0OyBhdXRvbWF0aWMKKyMgY29udmVyc2lvbiB0byB3MzIgaXMgbm90IGF2YWlsYWJsZSBpbnNpZGUgdGhlIGN3cmFwcGVyLiAgUmV0dXJucyByZXN1bHQgaW4KKyMgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgorZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzIgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20gQVJHLiAgTVNZUworICAgICMgYmVoYXZpb3IgaXMgaW5jb25zaXN0ZW50IGhlcmU7IGN5Z3BhdGggdHVybnMgdGhlbSBpbnRvICcuOycgYW5kICc7Lic7CisgICAgIyBhbmQgd2luZXBhdGggaWdub3JlcyB0aGVtIGNvbXBsZXRlbHkuCisgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCisgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgorICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogIjsiIFwKKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiAiOyIgIiQxIgorICBmaQorfQorIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzIKKworCisjIGZ1bmNfY29udmVydF9wYXRoX2N5Z3dpbl90b193MzIgQVJHCisjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSBDeWd3aW4gdG8gdzMyIGZvcm1hdC4gIFJldHVybnMgcmVzdWx0IGluCisjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9wYXRoX2N5Z3dpbl90b193MzIgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gY3lncGF0aCAtbSAtcCAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiYAorICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogIjsiIFwKKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiAiOyIgIiQxIgorICBmaQorfQorIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfY3lnd2luX3RvX3czMgorCisKKyMgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX3czMiBBUkcKKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tICpuaXggdG8gdzMyIGZvcm1hdC4gIFJlcXVpcmVzIGEgd2luZSBlbnZpcm9ubWVudCBhbmQKKyMgYSB3b3JraW5nIHdpbmVwYXRoLiAgUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX3czMiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgICMgU2VlIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyOgorICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCisgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgICAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCisgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQiCisgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiAiOyIgXAorICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiICI7IiAiJDEiCisgIGZpCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyCisKKworIyBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX2N5Z3dpbiBBUkcKKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tIE1TWVMgdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIExUX0NZR1BBVEggc2V0LgorIyBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX2N5Z3dpbiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgICMgU2VlIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyOgorICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCisgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgorICAgIGZ1bmNfY3lncGF0aCAtdSAtcCAiJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgorICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogOiBcCisgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgOiAiJDEiCisgIGZpCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX2N5Z3dpbgorCisKKyMgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX2N5Z3dpbiBBUkcKKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tICpuaXggdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIEN5Z3dpbiBpbnN0YWxsZWQgaW4gYQorIyBhIHdpbmUgZW52aXJvbm1lbnQsIHdvcmtpbmcgd2luZXBhdGgsIGFuZCBMVF9DWUdQQVRIIHNldC4gIFJldHVybnMgcmVzdWx0IGluCisjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9wYXRoX25peF90b19jeWd3aW4gKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20KKyAgICAjIEFSRy4gbXN5cyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgaGVyZSwgY3lncGF0aCB0dXJucyB0aGVtCisgICAgIyBpbnRvICcuOycgYW5kICc7LicsIGFuZCB3aW5lcGF0aCBpZ25vcmVzIHRoZW0gY29tcGxldGVseS4KKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICAgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgorICAgIGZ1bmNfY3lncGF0aCAtdSAtcCAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0IgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCisgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiA6IFwKKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiA6ICIkMSIKKyAgZmkKK30KKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX25peF90b19jeWd3aW4KKworCiAjIGZ1bmNfbW9kZV9jb21waWxlIGFyZy4uLgogZnVuY19tb2RlX2NvbXBpbGUgKCkKIHsKQEAgLTExMzcsMTIgKzE5ODUsMTIgQEAKIAkgIDs7CiAKIAktcGllIHwgLWZwaWUgfCAtZlBJRSkKLSAgICAgICAgICBwaWVfZmxhZz0iJHBpZV9mbGFnICRhcmciCisgICAgICAgICAgZnVuY19hcHBlbmQgcGllX2ZsYWcgIiAkYXJnIgogCSAgY29udGludWUKIAkgIDs7CiAKIAktc2hhcmVkIHwgLXN0YXRpYyB8IC1wcmVmZXItcGljIHwgLXByZWZlci1ub24tcGljKQotCSAgbGF0ZXI9IiRsYXRlciAkYXJnIgorCSAgZnVuY19hcHBlbmQgbGF0ZXIgIiAkYXJnIgogCSAgY29udGludWUKIAkgIDs7CiAKQEAgLTExNjMsMTUgKzIwMTEsMTQgQEAKIAkgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPScsJwogCSAgZm9yIGFyZyBpbiAkYXJnczsgZG8KIAkgICAgSUZTPSIkc2F2ZV9pZnMiCi0JICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0JICAgIGxhc3Rhcmc9IiRsYXN0YXJnICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwkgICAgZnVuY19hcHBlbmRfcXVvdGVkIGxhc3RhcmcgIiRhcmciCiAJICBkb25lCiAJICBJRlM9IiRzYXZlX2lmcyIKIAkgIGZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGxhc3RhcmciCiAJICBsYXN0YXJnPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAogCSAgIyBBZGQgdGhlIGFyZ3VtZW50cyB0byBiYXNlX2NvbXBpbGUuCi0JICBiYXNlX2NvbXBpbGU9IiRiYXNlX2NvbXBpbGUgJGxhc3RhcmciCisJICBmdW5jX2FwcGVuZCBiYXNlX2NvbXBpbGUgIiAkbGFzdGFyZyIKIAkgIGNvbnRpbnVlCiAJICA7OwogCkBAIC0xMTg3LDggKzIwMzQsNyBAQAogICAgICAgZXNhYyAgICAjICBjYXNlICRhcmdfbW9kZQogCiAgICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgdGhlIHByZXZpb3VzIGFyZ3VtZW50LgotICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGxhc3RhcmciCi0gICAgICBiYXNlX2NvbXBpbGU9IiRiYXNlX2NvbXBpbGUgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICAgZnVuY19hcHBlbmRfcXVvdGVkIGJhc2VfY29tcGlsZSAiJGxhc3RhcmciCiAgICAgZG9uZSAjIGZvciBhcmcKIAogICAgIGNhc2UgJGFyZ19tb2RlIGluCkBAIC0xMjEzLDcgKzIwNTksNyBAQAogICAgICouW2NDRlNpZm1zb10gfCBcCiAgICAgKi5hZGEgfCAqLmFkYiB8ICouYWRzIHwgKi5hc20gfCBcCiAgICAgKi5jKysgfCAqLmNjIHwgKi5paSB8ICouY2xhc3MgfCAqLmNwcCB8ICouY3h4IHwgXAotICAgICouW2ZGXVswOV0/IHwgKi5mb3IgfCAqLmphdmEgfCAqLm9iaiB8ICouc3gpCisgICAgKi5bZkZdWzA5XT8gfCAqLmZvciB8ICouamF2YSB8ICoub2JqIHwgKi5zeCB8ICouY3UgfCAqLmN1cCkKICAgICAgIGZ1bmNfeGZvcm0gIiRsaWJvYmoiCiAgICAgICBsaWJvYmo9JGZ1bmNfeGZvcm1fcmVzdWx0CiAgICAgICA7OwpAQCAtMTI4OCw3ICsyMTM0LDcgQEAKICAgICAjIENhbGN1bGF0ZSB0aGUgZmlsZW5hbWUgb2YgdGhlIG91dHB1dCBvYmplY3QgaWYgY29tcGlsZXIgZG9lcwogICAgICMgbm90IHN1cHBvcnQgLW8gd2l0aCAtYwogICAgIGlmIHRlc3QgIiRjb21waWxlcl9jX28iID0gbm87IHRoZW4KLSAgICAgIG91dHB1dF9vYmo9YCRFQ0hPICJYJHNyY2ZpbGUiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJyAtZSAncyVcLlteLl0qJCUlJ2AuJHtvYmpleHR9CisgICAgICBvdXRwdXRfb2JqPWAkRUNITyAiJHNyY2ZpbGUiIHwgJFNFRCAncyVeLiovJSU7IHMlXC5bXi5dKiQlJSdgLiR7b2JqZXh0fQogICAgICAgbG9ja2ZpbGU9IiRvdXRwdXRfb2JqLmxvY2siCiAgICAgZWxzZQogICAgICAgb3V0cHV0X29iaj0KQEAgLTEzMTksMTcgKzIxNjUsMTYgQEAKIAkkb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0CiAJZXhpdCAkRVhJVF9GQUlMVVJFCiAgICAgICBmaQotICAgICAgcmVtb3ZlbGlzdD0iJHJlbW92ZWxpc3QgJG91dHB1dF9vYmoiCisgICAgICBmdW5jX2FwcGVuZCByZW1vdmVsaXN0ICIgJG91dHB1dF9vYmoiCiAgICAgICAkRUNITyAiJHNyY2ZpbGUiID4gIiRsb2NrZmlsZSIKICAgICBmaQogCiAgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdAotICAgIHJlbW92ZWxpc3Q9IiRyZW1vdmVsaXN0ICRsb2NrZmlsZSIKKyAgICBmdW5jX2FwcGVuZCByZW1vdmVsaXN0ICIgJGxvY2tmaWxlIgogICAgIHRyYXAgJyRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3Q7IGV4aXQgJEVYSVRfRkFJTFVSRScgMSAyIDE1CiAKLSAgICBpZiB0ZXN0IC1uICIkZml4X3NyY2ZpbGVfcGF0aCI7IHRoZW4KLSAgICAgIGV2YWwgc3JjZmlsZT1cIiRmaXhfc3JjZmlsZV9wYXRoXCIKLSAgICBmaQorICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkc3JjZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKyAgICBzcmNmaWxlPSRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkc3JjZmlsZSIKICAgICBxc3JjZmlsZT0kZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQKIApAQCAtMTM0OSw3ICsyMTk0LDcgQEAKIAogICAgICAgaWYgdGVzdCAteiAiJG91dHB1dF9vYmoiOyB0aGVuCiAJIyBQbGFjZSBQSUMgb2JqZWN0cyBpbiAkb2JqZGlyCi0JY29tbWFuZD0iJGNvbW1hbmQgLW8gJGxvYmoiCisJZnVuY19hcHBlbmQgY29tbWFuZCAiIC1vICRsb2JqIgogICAgICAgZmkKIAogICAgICAgZnVuY19zaG93X2V2YWxfbG9jYWxlICIkY29tbWFuZCIJXApAQCAtMTM5NiwxMSArMjI0MSwxMSBAQAogCWNvbW1hbmQ9IiRiYXNlX2NvbXBpbGUgJHFzcmNmaWxlICRwaWNfZmxhZyIKICAgICAgIGZpCiAgICAgICBpZiB0ZXN0ICIkY29tcGlsZXJfY19vIiA9IHllczsgdGhlbgotCWNvbW1hbmQ9IiRjb21tYW5kIC1vICRvYmoiCisJZnVuY19hcHBlbmQgY29tbWFuZCAiIC1vICRvYmoiCiAgICAgICBmaQogCiAgICAgICAjIFN1cHByZXNzIGNvbXBpbGVyIG91dHB1dCBpZiB3ZSBhbHJlYWR5IGRpZCBhIFBJQyBjb21waWxhdGlvbi4KLSAgICAgIGNvbW1hbmQ9IiRjb21tYW5kJHN1cHByZXNzX291dHB1dCIKKyAgICAgIGZ1bmNfYXBwZW5kIGNvbW1hbmQgIiRzdXBwcmVzc19vdXRwdXQiCiAgICAgICBmdW5jX3Nob3dfZXZhbF9sb2NhbGUgIiRjb21tYW5kIiBcCiAgICAgICAgICckb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0OyBleGl0ICRFWElUX0ZBSUxVUkUnCiAKQEAgLTE0NDUsMTMgKzIyOTAsMTMgQEAKIH0KIAogJG9wdF9oZWxwIHx8IHsKLXRlc3QgIiRtb2RlIiA9IGNvbXBpbGUgJiYgZnVuY19tb2RlX2NvbXBpbGUgJHsxKyIkQCJ9CisgIHRlc3QgIiRvcHRfbW9kZSIgPSBjb21waWxlICYmIGZ1bmNfbW9kZV9jb21waWxlICR7MSsiJEAifQogfQogCiBmdW5jX21vZGVfaGVscCAoKQogewogICAgICMgV2UgbmVlZCB0byBkaXNwbGF5IGhlbHAgZm9yIGVhY2ggb2YgdGhlIG1vZGVzLgotICAgIGNhc2UgJG1vZGUgaW4KKyAgICBjYXNlICRvcHRfbW9kZSBpbgogICAgICAgIiIpCiAgICAgICAgICMgR2VuZXJpYyBoZWxwIGlzIGV4dHJhY3RlZCBmcm9tIHRoZSB1c2FnZSBjb21tZW50cwogICAgICAgICAjIGF0IHRoZSBzdGFydCBvZiB0aGlzIGZpbGUuCkBAIC0xNDgyLDEwICsyMzI3LDExIEBACiAKICAgLW8gT1VUUFVULUZJTEUgICAgc2V0IHRoZSBvdXRwdXQgZmlsZSBuYW1lIHRvIE9VVFBVVC1GSUxFCiAgIC1uby1zdXBwcmVzcyAgICAgIGRvIG5vdCBzdXBwcmVzcyBjb21waWxlciBvdXRwdXQgZm9yIG11bHRpcGxlIHBhc3NlcwotICAtcHJlZmVyLXBpYyAgICAgICB0cnkgdG8gYnVpbGRpbmcgUElDIG9iamVjdHMgb25seQotICAtcHJlZmVyLW5vbi1waWMgICB0cnkgdG8gYnVpbGRpbmcgbm9uLVBJQyBvYmplY3RzIG9ubHkKKyAgLXByZWZlci1waWMgICAgICAgdHJ5IHRvIGJ1aWxkIFBJQyBvYmplY3RzIG9ubHkKKyAgLXByZWZlci1ub24tcGljICAgdHJ5IHRvIGJ1aWxkIG5vbi1QSUMgb2JqZWN0cyBvbmx5CiAgIC1zaGFyZWQgICAgICAgICAgIGRvIG5vdCBidWlsZCBhIFxgLm8nIGZpbGUgc3VpdGFibGUgZm9yIHN0YXRpYyBsaW5raW5nCiAgIC1zdGF0aWMgICAgICAgICAgIG9ubHkgYnVpbGQgYSBcYC5vJyBmaWxlIHN1aXRhYmxlIGZvciBzdGF0aWMgbGlua2luZworICAtV2MsRkxBRyAgICAgICAgICBwYXNzIEZMQUcgZGlyZWN0bHkgdG8gdGhlIGNvbXBpbGVyCiAKIENPTVBJTEUtQ09NTUFORCBpcyBhIGNvbW1hbmQgdG8gYmUgdXNlZCBpbiBjcmVhdGluZyBhIFxgc3RhbmRhcmQnIG9iamVjdCBmaWxlCiBmcm9tIHRoZSBnaXZlbiBTT1VSQ0VGSUxFLgpAQCAtMTUzOCw3ICsyMzg0LDcgQEAKIAogVGhlIGZvbGxvd2luZyBjb21wb25lbnRzIG9mIElOU1RBTEwtQ09NTUFORCBhcmUgdHJlYXRlZCBzcGVjaWFsbHk6CiAKLSAgLWluc3QtcHJlZml4IFBSRUZJWC1ESVIgIFVzZSBQUkVGSVgtRElSIGFzIGEgc3RhZ2luZyBhcmVhIGZvciBpbnN0YWxsYXRpb24KKyAgLWluc3QtcHJlZml4LWRpciBQUkVGSVgtRElSICBVc2UgUFJFRklYLURJUiBhcyBhIHN0YWdpbmcgYXJlYSBmb3IgaW5zdGFsbGF0aW9uCiAKIFRoZSByZXN0IG9mIHRoZSBjb21wb25lbnRzIGFyZSBpbnRlcnByZXRlZCBhcyBhcmd1bWVudHMgdG8gdGhhdCBjb21tYW5kIChvbmx5CiBCU0QtY29tcGF0aWJsZSBpbnN0YWxsIG9wdGlvbnMgYXJlIHJlY29nbml6ZWQpLiIKQEAgLTE1NTgsNiArMjQwNCw4IEBACiAKICAgLWFsbC1zdGF0aWMgICAgICAgZG8gbm90IGRvIGFueSBkeW5hbWljIGxpbmtpbmcgYXQgYWxsCiAgIC1hdm9pZC12ZXJzaW9uICAgIGRvIG5vdCBhZGQgYSB2ZXJzaW9uIHN1ZmZpeCBpZiBwb3NzaWJsZQorICAtYmluZGlyIEJJTkRJUiAgICBzcGVjaWZ5IHBhdGggdG8gYmluYXJpZXMgZGlyZWN0b3J5IChmb3Igc3lzdGVtcyB3aGVyZQorICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMgbXVzdCBiZSBmb3VuZCBpbiB0aGUgUEFUSCBzZXR0aW5nIGF0IHJ1bnRpbWUpCiAgIC1kbG9wZW4gRklMRSAgICAgIFxgLWRscHJlb3BlbicgRklMRSBpZiBpdCBjYW5ub3QgYmUgZGxvcGVuZWQgYXQgcnVudGltZQogICAtZGxwcmVvcGVuIEZJTEUgICBsaW5rIGluIEZJTEUgYW5kIGFkZCBpdHMgc3ltYm9scyB0byBsdF9wcmVsb2FkZWRfc3ltYm9scwogICAtZXhwb3J0LWR5bmFtaWMgICBhbGxvdyBzeW1ib2xzIGZyb20gT1VUUFVULUZJTEUgdG8gYmUgcmVzb2x2ZWQgd2l0aCBkbHN5bSgzKQpAQCAtMTU4Niw2ICsyNDM0LDExIEBACiAgIC12ZXJzaW9uLWluZm8gQ1VSUkVOVFs6UkVWSVNJT05bOkFHRV1dCiAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgbGlicmFyeSB2ZXJzaW9uIGluZm8gW2VhY2ggdmFyaWFibGUgZGVmYXVsdHMgdG8gMF0KICAgLXdlYWsgTElCTkFNRSAgICAgZGVjbGFyZSB0aGF0IHRoZSB0YXJnZXQgcHJvdmlkZXMgdGhlIExJQk5BTUUgaW50ZXJmYWNlCisgIC1XYyxGTEFHCisgIC1YY29tcGlsZXIgRkxBRyAgIHBhc3MgbGlua2VyLXNwZWNpZmljIEZMQUcgZGlyZWN0bHkgdG8gdGhlIGNvbXBpbGVyCisgIC1XbCxGTEFHCisgIC1YbGlua2VyIEZMQUcgICAgIHBhc3MgbGlua2VyLXNwZWNpZmljIEZMQUcgZGlyZWN0bHkgdG8gdGhlIGxpbmtlcgorICAtWENDbGlua2VyIEZMQUcgICBwYXNzIGxpbmstc3BlY2lmaWMgRkxBRyB0byB0aGUgY29tcGlsZXIgZHJpdmVyIChDQykKIAogQWxsIG90aGVyIG9wdGlvbnMgKGFyZ3VtZW50cyBiZWdpbm5pbmcgd2l0aCBcYC0nKSBhcmUgaWdub3JlZC4KIApAQCAtMTYxOSwxOCArMjQ3Miw0NCBAQAogICAgICAgICA7OwogCiAgICAgICAqKQotICAgICAgICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkbW9kZSciCisgICAgICAgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRvcHRfbW9kZSciCiAgICAgICAgIDs7CiAgICAgZXNhYwogCi0gICAgJEVDSE8KKyAgICBlY2hvCiAgICAgJEVDSE8gIlRyeSBcYCRwcm9nbmFtZSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IG90aGVyIG1vZGVzLiIKLQotICAgIGV4aXQgJD8KIH0KIAotICAjIE5vdyB0aGF0IHdlJ3ZlIGNvbGxlY3RlZCBhIHBvc3NpYmxlIC0tbW9kZSBhcmcsIHNob3cgaGVscCBpZiBuZWNlc3NhcnkKLSAgJG9wdF9oZWxwICYmIGZ1bmNfbW9kZV9oZWxwCisjIE5vdyB0aGF0IHdlJ3ZlIGNvbGxlY3RlZCBhIHBvc3NpYmxlIC0tbW9kZSBhcmcsIHNob3cgaGVscCBpZiBuZWNlc3NhcnkKK2lmICRvcHRfaGVscDsgdGhlbgorICBpZiB0ZXN0ICIkb3B0X2hlbHAiID0gOjsgdGhlbgorICAgIGZ1bmNfbW9kZV9oZWxwCisgIGVsc2UKKyAgICB7CisgICAgICBmdW5jX2hlbHAgbm9leGl0CisgICAgICBmb3Igb3B0X21vZGUgaW4gY29tcGlsZSBsaW5rIGV4ZWN1dGUgaW5zdGFsbCBmaW5pc2ggdW5pbnN0YWxsIGNsZWFuOyBkbworCWZ1bmNfbW9kZV9oZWxwCisgICAgICBkb25lCisgICAgfSB8IHNlZCAtbiAnMXA7IDIsJHMvXlVzYWdlOi8gIG9yOiAvcCcKKyAgICB7CisgICAgICBmdW5jX2hlbHAgbm9leGl0CisgICAgICBmb3Igb3B0X21vZGUgaW4gY29tcGlsZSBsaW5rIGV4ZWN1dGUgaW5zdGFsbCBmaW5pc2ggdW5pbnN0YWxsIGNsZWFuOyBkbworCWVjaG8KKwlmdW5jX21vZGVfaGVscAorICAgICAgZG9uZQorICAgIH0gfAorICAgIHNlZCAnMWQKKyAgICAgIC9eV2hlbiByZXBvcnRpbmcvLC9eUmVwb3J0L3sKKwlICisJZAorICAgICAgfQorICAgICAgJHgKKyAgICAgIC9pbmZvcm1hdGlvbiBhYm91dCBvdGhlciBtb2Rlcy9kCisgICAgICAvbW9yZSBkZXRhaWxlZCAuKk1PREUvZAorICAgICAgcy9eVXNhZ2U6LiotLW1vZGU9XChbXiBdKlwpIC4qL0Rlc2NyaXB0aW9uIG9mIFwxIG1vZGU6LycKKyAgZmkKKyAgZXhpdCAkPworZmkKIAogCiAjIGZ1bmNfbW9kZV9leGVjdXRlIGFyZy4uLgpAQCAtMTY0MywxMyArMjUyMiwxNiBAQAogICAgICAgZnVuY19mYXRhbF9oZWxwICJ5b3UgbXVzdCBzcGVjaWZ5IGEgQ09NTUFORCIKIAogICAgICMgSGFuZGxlIC1kbG9wZW4gZmxhZ3MgaW1tZWRpYXRlbHkuCi0gICAgZm9yIGZpbGUgaW4gJGV4ZWN1dGVfZGxmaWxlczsgZG8KKyAgICBmb3IgZmlsZSBpbiAkb3B0X2Rsb3BlbjsgZG8KICAgICAgIHRlc3QgLWYgIiRmaWxlIiBcCiAJfHwgZnVuY19mYXRhbF9oZWxwICJcYCRmaWxlJyBpcyBub3QgYSBmaWxlIgogCiAgICAgICBkaXI9CiAgICAgICBjYXNlICRmaWxlIGluCiAgICAgICAqLmxhKQorCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZmlsZSIKKwlmaWxlPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKwogCSMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhpcyByZWFsbHkgaXMgYSBsaWJ0b29sIGFyY2hpdmUuCiAJZnVuY19sYWxpYl91bnNhZmVfcCAiJGZpbGUiIFwKIAkgIHx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCkBAIC0xNjcxLDcgKzI1NTMsNyBAQAogCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCiAKIAlpZiB0ZXN0IC1mICIkZGlyLyRvYmpkaXIvJGRsbmFtZSI7IHRoZW4KLQkgIGRpcj0iJGRpci8kb2JqZGlyIgorCSAgZnVuY19hcHBlbmQgZGlyICIvJG9iamRpciIKIAllbHNlCiAJICBpZiB0ZXN0ICEgLWYgIiRkaXIvJGRsbmFtZSI7IHRoZW4KIAkgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgXGAkZGxuYW1lJyBpbiBcYCRkaXInIG9yIFxgJGRpci8kb2JqZGlyJyIKQEAgLTE3MTIsNyArMjU5NCw3IEBACiAgICAgZm9yIGZpbGUKICAgICBkbwogICAgICAgY2FzZSAkZmlsZSBpbgotICAgICAgLSopIDs7CisgICAgICAtKiB8ICoubGEgfCAqLmxvICkgOzsKICAgICAgICopCiAJIyBEbyBhIHRlc3QgdG8gc2VlIGlmIHRoaXMgaXMgcmVhbGx5IGEgbGlidG9vbCBwcm9ncmFtLgogCWlmIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdF9wICIkZmlsZSI7IHRoZW4KQEAgLTE3MjgsOCArMjYxMCw3IEBACiAJOzsKICAgICAgIGVzYWMKICAgICAgICMgUXVvdGUgYXJndW1lbnRzICh0byBwcmVzZXJ2ZSBzaGVsbCBtZXRhY2hhcmFjdGVycykuCi0gICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkZmlsZSIKLSAgICAgIGFyZ3M9IiRhcmdzICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBhcmdzICIkZmlsZSIKICAgICBkb25lCiAKICAgICBpZiB0ZXN0ICJYJG9wdF9kcnlfcnVuIiA9IFhmYWxzZTsgdGhlbgpAQCAtMTc1NCwyOSArMjYzNSw2NiBAQAogICAgICAgIyBEaXNwbGF5IHdoYXQgd291bGQgYmUgZG9uZS4KICAgICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgogCWV2YWwgIlwkRUNITyBcIlwkc2hsaWJwYXRoX3Zhcj1cJCRzaGxpYnBhdGhfdmFyXCIiCi0JJEVDSE8gImV4cG9ydCAkc2hsaWJwYXRoX3ZhciIKKwllY2hvICJleHBvcnQgJHNobGlicGF0aF92YXIiCiAgICAgICBmaQogICAgICAgJEVDSE8gIiRjbWQkYXJncyIKICAgICAgIGV4aXQgJEVYSVRfU1VDQ0VTUwogICAgIGZpCiB9CiAKLXRlc3QgIiRtb2RlIiA9IGV4ZWN1dGUgJiYgZnVuY19tb2RlX2V4ZWN1dGUgJHsxKyIkQCJ9Cit0ZXN0ICIkb3B0X21vZGUiID0gZXhlY3V0ZSAmJiBmdW5jX21vZGVfZXhlY3V0ZSAkezErIiRAIn0KIAogCiAjIGZ1bmNfbW9kZV9maW5pc2ggYXJnLi4uCiBmdW5jX21vZGVfZmluaXNoICgpCiB7CiAgICAgJG9wdF9kZWJ1ZwotICAgIGxpYmRpcnM9IiRub25vcHQiCisgICAgbGlicz0KKyAgICBsaWJkaXJzPQogICAgIGFkbWluY21kcz0KIAotICAgIGlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyRmaW5pc2hfZXZhbCIgJiYgdGVzdCAtbiAiJGxpYmRpcnMiOyB0aGVuCi0gICAgICBmb3IgZGlyCi0gICAgICBkbwotCWxpYmRpcnM9IiRsaWJkaXJzICRkaXIiCi0gICAgICBkb25lCisgICAgZm9yIG9wdCBpbiAiJG5vbm9wdCIgJHsxKyIkQCJ9CisgICAgZG8KKyAgICAgIGlmIHRlc3QgLWQgIiRvcHQiOyB0aGVuCisJZnVuY19hcHBlbmQgbGliZGlycyAiICRvcHQiCiAKKyAgICAgIGVsaWYgdGVzdCAtZiAiJG9wdCI7IHRoZW4KKwlpZiBmdW5jX2xhbGliX3Vuc2FmZV9wICIkb3B0IjsgdGhlbgorCSAgZnVuY19hcHBlbmQgbGlicyAiICRvcHQiCisJZWxzZQorCSAgZnVuY193YXJuaW5nICJcYCRvcHQnIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKKwlmaQorCisgICAgICBlbHNlCisJZnVuY19mYXRhbF9lcnJvciAiaW52YWxpZCBhcmd1bWVudCBcYCRvcHQnIgorICAgICAgZmkKKyAgICBkb25lCisKKyAgICBpZiB0ZXN0IC1uICIkbGlicyI7IHRoZW4KKyAgICAgIGlmIHRlc3QgLW4gIiRsdF9zeXNyb290IjsgdGhlbgorICAgICAgICBzeXNyb290X3JlZ2V4PWAkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJHNlZF9tYWtlX2xpdGVyYWxfcmVnZXgiYAorICAgICAgICBzeXNyb290X2NtZD0icy9cKFsgJ11cKSRzeXNyb290X3JlZ2V4L1wxL2c7IgorICAgICAgZWxzZQorICAgICAgICBzeXNyb290X2NtZD0KKyAgICAgIGZpCisKKyAgICAgICMgUmVtb3ZlIHN5c3Jvb3QgcmVmZXJlbmNlcworICAgICAgaWYgJG9wdF9kcnlfcnVuOyB0aGVuCisgICAgICAgIGZvciBsaWIgaW4gJGxpYnM7IGRvCisgICAgICAgICAgZWNobyAicmVtb3ZpbmcgcmVmZXJlbmNlcyB0byAkbHRfc3lzcm9vdCBhbmQgXGA9JyBwcmVmaXhlcyBmcm9tICRsaWIiCisgICAgICAgIGRvbmUKKyAgICAgIGVsc2UKKyAgICAgICAgdG1wZGlyPWBmdW5jX21rdGVtcGRpcmAKKyAgICAgICAgZm9yIGxpYiBpbiAkbGliczsgZG8KKwkgIHNlZCAtZSAiJHtzeXNyb290X2NtZH0gcy9cKFsgJ10tW0xSXVwpPS9cMS9nOyBzL1woWyAnXVwpPS9cMS9nIiAkbGliIFwKKwkgICAgPiAkdG1wZGlyL3RtcC1sYQorCSAgbXYgLWYgJHRtcGRpci90bXAtbGEgJGxpYgorCWRvbmUKKyAgICAgICAgJHtSTX1yICIkdG1wZGlyIgorICAgICAgZmkKKyAgICBmaQorCisgICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KICAgICAgIGZvciBsaWJkaXIgaW4gJGxpYmRpcnM7IGRvCiAJaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzIjsgdGhlbgogCSAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIGZpbmlzaCBjb21tYW5kcy4KQEAgLTE3ODYsNyArMjcwNCw3IEBACiAJaWYgdGVzdCAtbiAiJGZpbmlzaF9ldmFsIjsgdGhlbgogCSAgIyBEbyB0aGUgc2luZ2xlIGZpbmlzaF9ldmFsLgogCSAgZXZhbCBjbWRzPVwiJGZpbmlzaF9ldmFsXCIKLQkgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkY21kcyIgfHwgYWRtaW5jbWRzPSIkYWRtaW5jbWRzCisJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJGNtZHMiIHx8IGZ1bmNfYXBwZW5kIGFkbWluY21kcyAiCiAgICAgICAgJGNtZHMiCiAJZmkKICAgICAgIGRvbmUKQEAgLTE3OTUsNTMgKzI3MTMsNTUgQEAKICAgICAjIEV4aXQgaGVyZSBpZiB0aGV5IHdhbnRlZCBzaWxlbnQgbW9kZS4KICAgICAkb3B0X3NpbGVudCAmJiBleGl0ICRFWElUX1NVQ0NFU1MKIAotICAgICRFQ0hPICJYLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCAkWHNlZAotICAgICRFQ0hPICJMaWJyYXJpZXMgaGF2ZSBiZWVuIGluc3RhbGxlZCBpbjoiCi0gICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KLSAgICAgICRFQ0hPICIgICAkbGliZGlyIgotICAgIGRvbmUKLSAgICAkRUNITwotICAgICRFQ0hPICJJZiB5b3UgZXZlciBoYXBwZW4gdG8gd2FudCB0byBsaW5rIGFnYWluc3QgaW5zdGFsbGVkIGxpYnJhcmllcyIKLSAgICAkRUNITyAiaW4gYSBnaXZlbiBkaXJlY3RvcnksIExJQkRJUiwgeW91IG11c3QgZWl0aGVyIHVzZSBsaWJ0b29sLCBhbmQiCi0gICAgJEVDSE8gInNwZWNpZnkgdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIGxpYnJhcnksIG9yIHVzZSB0aGUgXGAtTExJQkRJUiciCi0gICAgJEVDSE8gImZsYWcgZHVyaW5nIGxpbmtpbmcgYW5kIGRvIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nOiIKLSAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciI7IHRoZW4KLSAgICAgICRFQ0hPICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHNobGlicGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgotICAgICAgJEVDSE8gIiAgICAgZHVyaW5nIGV4ZWN1dGlvbiIKLSAgICBmaQotICAgIGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KLSAgICAgICRFQ0hPICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHJ1bnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKLSAgICAgICRFQ0hPICIgICAgIGR1cmluZyBsaW5raW5nIgotICAgIGZpCi0gICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCi0gICAgICBsaWJkaXI9TElCRElSCi0gICAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisgICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KKyAgICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCisgICAgICBlY2hvICJMaWJyYXJpZXMgaGF2ZSBiZWVuIGluc3RhbGxlZCBpbjoiCisgICAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbworCSRFQ0hPICIgICAkbGliZGlyIgorICAgICAgZG9uZQorICAgICAgZWNobworICAgICAgZWNobyAiSWYgeW91IGV2ZXIgaGFwcGVuIHRvIHdhbnQgdG8gbGluayBhZ2FpbnN0IGluc3RhbGxlZCBsaWJyYXJpZXMiCisgICAgICBlY2hvICJpbiBhIGdpdmVuIGRpcmVjdG9yeSwgTElCRElSLCB5b3UgbXVzdCBlaXRoZXIgdXNlIGxpYnRvb2wsIGFuZCIKKyAgICAgIGVjaG8gInNwZWNpZnkgdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIGxpYnJhcnksIG9yIHVzZSB0aGUgXGAtTExJQkRJUiciCisgICAgICBlY2hvICJmbGFnIGR1cmluZyBsaW5raW5nIGFuZCBkbyBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZzoiCisgICAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciI7IHRoZW4KKwllY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHNobGlicGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgorCWVjaG8gIiAgICAgZHVyaW5nIGV4ZWN1dGlvbiIKKyAgICAgIGZpCisgICAgICBpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCisJZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRydW5wYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCisJZWNobyAiICAgICBkdXJpbmcgbGlua2luZyIKKyAgICAgIGZpCisgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KKwlsaWJkaXI9TElCRElSCisJZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgogCi0gICAgICAkRUNITyAiICAgLSB1c2UgdGhlIFxgJGZsYWcnIGxpbmtlciBmbGFnIgotICAgIGZpCi0gICAgaWYgdGVzdCAtbiAiJGFkbWluY21kcyI7IHRoZW4KLSAgICAgICRFQ0hPICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBydW4gdGhlc2UgY29tbWFuZHM6JGFkbWluY21kcyIKLSAgICBmaQotICAgIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCi0gICAgICAkRUNITyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgYWRkIExJQkRJUiB0byBcYC9ldGMvbGQuc28uY29uZiciCi0gICAgZmkKLSAgICAkRUNITworCSRFQ0hPICIgICAtIHVzZSB0aGUgXGAkZmxhZycgbGlua2VyIGZsYWciCisgICAgICBmaQorICAgICAgaWYgdGVzdCAtbiAiJGFkbWluY21kcyI7IHRoZW4KKwkkRUNITyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgcnVuIHRoZXNlIGNvbW1hbmRzOiRhZG1pbmNtZHMiCisgICAgICBmaQorICAgICAgaWYgdGVzdCAtZiAvZXRjL2xkLnNvLmNvbmY7IHRoZW4KKwllY2hvICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBhZGQgTElCRElSIHRvIFxgL2V0Yy9sZC5zby5jb25mJyIKKyAgICAgIGZpCisgICAgICBlY2hvCiAKLSAgICAkRUNITyAiU2VlIGFueSBvcGVyYXRpbmcgc3lzdGVtIGRvY3VtZW50YXRpb24gYWJvdXQgc2hhcmVkIGxpYnJhcmllcyBmb3IiCi0gICAgY2FzZSAkaG9zdCBpbgotICAgICAgc29sYXJpczIuWzY3ODldfHNvbGFyaXMyLjFbMC05XSkKLSAgICAgICAgJEVDSE8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpLCBjcmxlKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwiCi0JJEVDSE8gInBhZ2VzLiIKLQk7OwotICAgICAgKikKLSAgICAgICAgJEVDSE8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwgcGFnZXMuIgotICAgICAgICA7OwotICAgIGVzYWMKLSAgICAkRUNITyAiWC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgJFhzZWQKKyAgICAgIGVjaG8gIlNlZSBhbnkgb3BlcmF0aW5nIHN5c3RlbSBkb2N1bWVudGF0aW9uIGFib3V0IHNoYXJlZCBsaWJyYXJpZXMgZm9yIgorICAgICAgY2FzZSAkaG9zdCBpbgorCXNvbGFyaXMyLls2Nzg5XXxzb2xhcmlzMi4xWzAtOV0pCisJICBlY2hvICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSwgY3JsZSgxKSBhbmQgbGQuc28oOCkgbWFudWFsIgorCSAgZWNobyAicGFnZXMuIgorCSAgOzsKKwkqKQorCSAgZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCBwYWdlcy4iCisJICA7OworICAgICAgZXNhYworICAgICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKKyAgICBmaQogICAgIGV4aXQgJEVYSVRfU1VDQ0VTUwogfQogCi10ZXN0ICIkbW9kZSIgPSBmaW5pc2ggJiYgZnVuY19tb2RlX2ZpbmlzaCAkezErIiRAIn0KK3Rlc3QgIiRvcHRfbW9kZSIgPSBmaW5pc2ggJiYgZnVuY19tb2RlX2ZpbmlzaCAkezErIiRAIn0KIAogCiAjIGZ1bmNfbW9kZV9pbnN0YWxsIGFyZy4uLgpAQCAtMTg1Miw3ICsyNzcyLDcgQEAKICAgICAjIGluc3RhbGxfcHJvZyAoZXNwZWNpYWxseSBvbiBXaW5kb3dzIE5UKS4KICAgICBpZiB0ZXN0ICIkbm9ub3B0IiA9ICIkU0hFTEwiIHx8IHRlc3QgIiRub25vcHQiID0gL2Jpbi9zaCB8fAogICAgICAgICMgQWxsb3cgdGhlIHVzZSBvZiBHTlUgc2h0b29sJ3MgaW5zdGFsbCBjb21tYW5kLgotICAgICAgICRFQ0hPICJYJG5vbm9wdCIgfCAkR1JFUCBzaHRvb2wgPi9kZXYvbnVsbDsgdGhlbgorICAgICAgIGNhc2UgJG5vbm9wdCBpbiAqc2h0b29sKikgOjs7ICopIGZhbHNlOzsgZXNhYzsgdGhlbgogICAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIGl0LgogICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJG5vbm9wdCIKICAgICAgIGluc3RhbGxfcHJvZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0ICIKQEAgLTE4NjYsNyArMjc4NiwxMiBAQAogICAgICMgVGhlIHJlYWwgZmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZSBpbnN0YWxsYXRpb24gcHJvZ3JhbS4KICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgaXQuCiAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLSAgICBpbnN0YWxsX3Byb2c9IiRpbnN0YWxsX3Byb2ckZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgZnVuY19hcHBlbmQgaW5zdGFsbF9wcm9nICIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgaW5zdGFsbF9zaGFyZWRfcHJvZz0kaW5zdGFsbF9wcm9nCisgICAgY2FzZSAiICRpbnN0YWxsX3Byb2cgIiBpbgorICAgICAgKltcXFwgL11jcFwgKikgaW5zdGFsbF9jcD06IDs7CisgICAgICAqKSBpbnN0YWxsX2NwPWZhbHNlIDs7CisgICAgZXNhYwogCiAgICAgIyBXZSBuZWVkIHRvIGFjY2VwdCBhdCBsZWFzdCBhbGwgdGhlIEJTRCBpbnN0YWxsIGZsYWdzLgogICAgIGRlc3Q9CkBAIC0xODc2LDEwICsyODAxLDEyIEBACiAgICAgaW5zdGFsbF90eXBlPQogICAgIGlzZGlyPW5vCiAgICAgc3RyaXBtZT0KKyAgICBub19tb2RlPToKICAgICBmb3IgYXJnCiAgICAgZG8KKyAgICAgIGFyZzI9CiAgICAgICBpZiB0ZXN0IC1uICIkZGVzdCI7IHRoZW4KLQlmaWxlcz0iJGZpbGVzICRkZXN0IgorCWZ1bmNfYXBwZW5kIGZpbGVzICIgJGRlc3QiCiAJZGVzdD0kYXJnCiAJY29udGludWUKICAgICAgIGZpCkBAIC0xODg3LDEwICsyODE0LDkgQEAKICAgICAgIGNhc2UgJGFyZyBpbgogICAgICAgLWQpIGlzZGlyPXllcyA7OwogICAgICAgLWYpCi0JY2FzZSAiICRpbnN0YWxsX3Byb2cgIiBpbgotCSpbXFxcIC9dY3BcICopIDs7Ci0JKikgcHJldj0kYXJnIDs7Ci0JZXNhYworCWlmICRpbnN0YWxsX2NwOyB0aGVuIDo7IGVsc2UKKwkgIHByZXY9JGFyZworCWZpCiAJOzsKICAgICAgIC1nIHwgLW0gfCAtbykKIAlwcmV2PSRhcmcKQEAgLTE5MDQsNiArMjgzMCwxMCBAQAogICAgICAgKikKIAkjIElmIHRoZSBwcmV2aW91cyBvcHRpb24gbmVlZGVkIGFuIGFyZ3VtZW50LCB0aGVuIHNraXAgaXQuCiAJaWYgdGVzdCAtbiAiJHByZXYiOyB0aGVuCisJICBpZiB0ZXN0ICJ4JHByZXYiID0geC1tICYmIHRlc3QgLW4gIiRpbnN0YWxsX292ZXJyaWRlX21vZGUiOyB0aGVuCisJICAgIGFyZzI9JGluc3RhbGxfb3ZlcnJpZGVfbW9kZQorCSAgICBub19tb2RlPWZhbHNlCisJICBmaQogCSAgcHJldj0KIAllbHNlCiAJICBkZXN0PSRhcmcKQEAgLTE5MTQsNyArMjg0NCwxMSBAQAogCiAgICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgdGhlIGFyZ3VtZW50LgogICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLSAgICAgIGluc3RhbGxfcHJvZz0iJGluc3RhbGxfcHJvZyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgICBmdW5jX2FwcGVuZCBpbnN0YWxsX3Byb2cgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgICBpZiB0ZXN0IC1uICIkYXJnMiI7IHRoZW4KKwlmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnMiIKKyAgICAgIGZpCisgICAgICBmdW5jX2FwcGVuZCBpbnN0YWxsX3NoYXJlZF9wcm9nICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogICAgIGRvbmUKIAogICAgIHRlc3QgLXogIiRpbnN0YWxsX3Byb2ciICYmIFwKQEAgLTE5MjMsNiArMjg1NywxMyBAQAogICAgIHRlc3QgLW4gIiRwcmV2IiAmJiBcCiAgICAgICBmdW5jX2ZhdGFsX2hlbHAgInRoZSBcYCRwcmV2JyBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQiCiAKKyAgICBpZiB0ZXN0IC1uICIkaW5zdGFsbF9vdmVycmlkZV9tb2RlIiAmJiAkbm9fbW9kZTsgdGhlbgorICAgICAgaWYgJGluc3RhbGxfY3A7IHRoZW4gOjsgZWxzZQorCWZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRpbnN0YWxsX292ZXJyaWRlX21vZGUiCisJZnVuY19hcHBlbmQgaW5zdGFsbF9zaGFyZWRfcHJvZyAiIC1tICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICAgIGZpCisgICAgZmkKKwogICAgIGlmIHRlc3QgLXogIiRmaWxlcyI7IHRoZW4KICAgICAgIGlmIHRlc3QgLXogIiRkZXN0IjsgdGhlbgogCWZ1bmNfZmF0YWxfaGVscCAibm8gZmlsZSBvciBkZXN0aW5hdGlvbiBzcGVjaWZpZWQiCkBAIC0xOTc3LDEwICsyOTE4LDEzIEBACiAgICAgICBjYXNlICRmaWxlIGluCiAgICAgICAqLiRsaWJleHQpCiAJIyBEbyB0aGUgc3RhdGljIGxpYnJhcmllcyBsYXRlci4KLQlzdGF0aWNsaWJzPSIkc3RhdGljbGlicyAkZmlsZSIKKwlmdW5jX2FwcGVuZCBzdGF0aWNsaWJzICIgJGZpbGUiCiAJOzsKIAogICAgICAgKi5sYSkKKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZpbGUiCisJZmlsZT0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CisKIAkjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBhcmNoaXZlLgogCWZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRmaWxlIiBcCiAJICB8fCBmdW5jX2ZhdGFsX2hlbHAgIlxgJGZpbGUnIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKQEAgLTE5OTQsMjMgKzI5MzgsMjMgQEAKIAlpZiB0ZXN0ICJYJGRlc3RkaXIiID0gIlgkbGliZGlyIjsgdGhlbgogCSAgY2FzZSAiJGN1cnJlbnRfbGliZGlycyAiIGluCiAJICAqIiAkbGliZGlyICIqKSA7OwotCSAgKikgY3VycmVudF9saWJkaXJzPSIkY3VycmVudF9saWJkaXJzICRsaWJkaXIiIDs7CisJICAqKSBmdW5jX2FwcGVuZCBjdXJyZW50X2xpYmRpcnMgIiAkbGliZGlyIiA7OwogCSAgZXNhYwogCWVsc2UKIAkgICMgTm90ZSB0aGUgbGliZGlyIGFzIGEgZnV0dXJlIGxpYmRpci4KIAkgIGNhc2UgIiRmdXR1cmVfbGliZGlycyAiIGluCiAJICAqIiAkbGliZGlyICIqKSA7OwotCSAgKikgZnV0dXJlX2xpYmRpcnM9IiRmdXR1cmVfbGliZGlycyAkbGliZGlyIiA7OworCSAgKikgZnVuY19hcHBlbmQgZnV0dXJlX2xpYmRpcnMgIiAkbGliZGlyIiA7OwogCSAgZXNhYwogCWZpCiAKIAlmdW5jX2Rpcm5hbWUgIiRmaWxlIiAiLyIgIiIKIAlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotCWRpcj0iJGRpciRvYmpkaXIiCisJZnVuY19hcHBlbmQgZGlyICIkb2JqZGlyIgogCiAJaWYgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIjsgdGhlbgogCSAgIyBEZXRlcm1pbmUgdGhlIHByZWZpeCB0aGUgdXNlciBoYXMgYXBwbGllZCB0byBvdXIgZnV0dXJlIGRpci4KLQkgIGluc3RfcHJlZml4X2Rpcj1gJEVDSE8gIlgkZGVzdGRpciIgfCAkWHNlZCAtZSAicyUkbGliZGlyXCQlJSJgCisJICBpbnN0X3ByZWZpeF9kaXI9YCRFQ0hPICIkZGVzdGRpciIgfCAkU0VEIC1lICJzJSRsaWJkaXJcJCUlImAKIAogCSAgIyBEb24ndCBhbGxvdyB0aGUgdXNlciB0byBwbGFjZSB1cyBvdXRzaWRlIG9mIG91ciBleHBlY3RlZAogCSAgIyBsb2NhdGlvbiBiL2MgdGhpcyBwcmV2ZW50cyBmaW5kaW5nIGRlcGVuZGVudCBsaWJyYXJpZXMgdGhhdApAQCAtMjAyMyw5ICsyOTY3LDkgQEAKIAogCSAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KIAkgICAgIyBTdGljayB0aGUgaW5zdF9wcmVmaXhfZGlyIGRhdGEgaW50byB0aGUgbGluayBjb21tYW5kLgotCSAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIlgkcmVsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlQGluc3RfcHJlZml4X2RpckAlLWluc3QtcHJlZml4LWRpciAkaW5zdF9wcmVmaXhfZGlyJSJgCisJICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiJHJlbGlua19jb21tYW5kIiB8ICRTRUQgInMlQGluc3RfcHJlZml4X2RpckAlLWluc3QtcHJlZml4LWRpciAkaW5zdF9wcmVmaXhfZGlyJSJgCiAJICBlbHNlCi0JICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiWCRyZWxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAaW5zdF9wcmVmaXhfZGlyQCUlImAKKwkgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICIkcmVsaW5rX2NvbW1hbmQiIHwgJFNFRCAicyVAaW5zdF9wcmVmaXhfZGlyQCUlImAKIAkgIGZpCiAKIAkgIGZ1bmNfd2FybmluZyAicmVsaW5raW5nIFxgJGZpbGUnIgpAQCAtMjA0Myw3ICsyOTg3LDcgQEAKIAkgIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCIgJiYgc3JjbmFtZT0iJHJlYWxuYW1lIlQKIAogCSAgIyBJbnN0YWxsIHRoZSBzaGFyZWQgbGlicmFyeSBhbmQgYnVpbGQgdGhlIHN5bWxpbmtzLgotCSAgZnVuY19zaG93X2V2YWwgIiRpbnN0YWxsX3Byb2cgJGRpci8kc3JjbmFtZSAkZGVzdGRpci8kcmVhbG5hbWUiIFwKKwkgIGZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9zaGFyZWRfcHJvZyAkZGlyLyRzcmNuYW1lICRkZXN0ZGlyLyRyZWFsbmFtZSIgXAogCSAgICAgICdleGl0ICQ/JwogCSAgdHN0cmlwbWU9IiRzdHJpcG1lIgogCSAgY2FzZSAkaG9zdF9vcyBpbgpAQCAtMjA4Myw3ICszMDI3LDcgQEAKIAlmdW5jX3Nob3dfZXZhbCAiJGluc3RhbGxfcHJvZyAkaW5zdG5hbWUgJGRlc3RkaXIvJG5hbWUiICdleGl0ICQ/JwogCiAJIyBNYXliZSBpbnN0YWxsIHRoZSBzdGF0aWMgbGlicmFyeSwgdG9vLgotCXRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgc3RhdGljbGlicz0iJHN0YXRpY2xpYnMgJGRpci8kb2xkX2xpYnJhcnkiCisJdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBmdW5jX2FwcGVuZCBzdGF0aWNsaWJzICIgJGRpci8kb2xkX2xpYnJhcnkiCiAJOzsKIAogICAgICAgKi5sbykKQEAgLTIxODMsNyArMzEyNyw3IEBACiAJICAgIGlmIHRlc3QgLWYgIiRsaWIiOyB0aGVuCiAJICAgICAgZnVuY19zb3VyY2UgIiRsaWIiCiAJICAgIGZpCi0JICAgIGxpYmZpbGU9IiRsaWJkaXIvImAkRUNITyAiWCRsaWIiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlZydgICMjIyB0ZXN0c3VpdGU6IHNraXAgbmVzdGVkIHF1b3RpbmcgdGVzdAorCSAgICBsaWJmaWxlPSIkbGliZGlyLyJgJEVDSE8gIiRsaWIiIHwgJFNFRCAncyVeLiovJSVnJ2AgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0CiAJICAgIGlmIHRlc3QgLW4gIiRsaWJkaXIiICYmIHRlc3QgISAtZiAiJGxpYmZpbGUiOyB0aGVuCiAJICAgICAgZnVuY193YXJuaW5nICJcYCRsaWInIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gXGAkbGliZGlyJyIKIAkgICAgICBmaW5hbGl6ZT1ubwpAQCAtMjIwMiw3ICszMTQ2LDcgQEAKIAkJZmlsZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgogCSAgICAgICAgb3V0cHV0bmFtZT0iJHRtcGRpci8kZmlsZSIKIAkgICAgICAgICMgUmVwbGFjZSB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWNhdGlvbi4KLQkgICAgICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiWCRyZWxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXRuYW1lIiclZydgCisJICAgICAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIiRyZWxpbmtfY29tbWFuZCIgfCAkU0VEICdzJUBPVVRQVVRAJSciJG91dHB1dG5hbWUiJyVnJ2AKIAogCSAgICAgICAgJG9wdF9zaWxlbnQgfHwgewogCSAgICAgICAgICBmdW5jX3F1b3RlX2Zvcl9leHBhbmQgIiRyZWxpbmtfY29tbWFuZCIKQEAgLTIyMjEsNyArMzE2NSw3IEBACiAJICAgIH0KIAkgIGVsc2UKIAkgICAgIyBJbnN0YWxsIHRoZSBiaW5hcnkgdGhhdCB3ZSBjb21waWxlZCBlYXJsaWVyLgotCSAgICBmaWxlPWAkRUNITyAiWCRmaWxlJHN0cmlwcGVkX2V4dCIgfCAkWHNlZCAtZSAicyVcKFteL10qXCkkJSRvYmpkaXIvXDElImAKKwkgICAgZmlsZT1gJEVDSE8gIiRmaWxlJHN0cmlwcGVkX2V4dCIgfCAkU0VEICJzJVwoW14vXSpcKSQlJG9iamRpci9cMSUiYAogCSAgZmkKIAlmaQogCkBAIC0yMjgwLDcgKzMyMjQsNyBAQAogICAgIGZpCiB9CiAKLXRlc3QgIiRtb2RlIiA9IGluc3RhbGwgJiYgZnVuY19tb2RlX2luc3RhbGwgJHsxKyIkQCJ9Cit0ZXN0ICIkb3B0X21vZGUiID0gaW5zdGFsbCAmJiBmdW5jX21vZGVfaW5zdGFsbCAkezErIiRAIn0KIAogCiAjIGZ1bmNfZ2VuZXJhdGVfZGxzeW1zIG91dHB1dG5hbWUgb3JpZ2luYXRvciBwaWNfcApAQCAtMjMyMyw2ICszMjY3LDIyIEBACiBleHRlcm4gXCJDXCIgewogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPj0gNCkpIHx8IChfX0dOVUNfXyA+IDQpKQorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkIFwiLVdzdHJpY3QtcHJvdG90eXBlc1wiCisjZW5kaWYKKworLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCisjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCisgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCisjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorI2VsaWYgZGVmaW5lZChfX29zZl9fKQorLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorI2Vsc2UKKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0CisjZW5kaWYKKwogLyogRXh0ZXJuYWwgc3ltYm9sIGRlY2xhcmF0aW9ucyBmb3IgdGhlIGNvbXBpbGVyLiAqL1wKICIKIApAQCAtMjMzMiwxMCArMzI5MiwxMSBAQAogCSAgJG9wdF9kcnlfcnVuIHx8IGVjaG8gJzogQFBST0dSQU1AICcgPiAiJG5saXN0IgogCiAJICAjIEFkZCBvdXIgb3duIHByb2dyYW0gb2JqZWN0cyB0byB0aGUgc3ltYm9sIGxpc3QuCi0JICBwcm9nZmlsZXM9YCRFQ0hPICJYJG9ianMkb2xkX2RlcGxpYnMiIHwgJFNQMk5MIHwgJFhzZWQgLWUgIiRsbzJvIiB8ICROTDJTUGAKKwkgIHByb2dmaWxlcz1gJEVDSE8gIiRvYmpzJG9sZF9kZXBsaWJzIiB8ICRTUDJOTCB8ICRTRUQgIiRsbzJvIiB8ICROTDJTUGAKIAkgIGZvciBwcm9nZmlsZSBpbiAkcHJvZ2ZpbGVzOyBkbwotCSAgICBmdW5jX3ZlcmJvc2UgImV4dHJhY3RpbmcgZ2xvYmFsIEMgc3ltYm9scyBmcm9tIFxgJHByb2dmaWxlJyIKLQkgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiROTSAkcHJvZ2ZpbGUgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgorCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJHByb2dmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorCSAgICBmdW5jX3ZlcmJvc2UgImV4dHJhY3RpbmcgZ2xvYmFsIEMgc3ltYm9scyBmcm9tIFxgJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCciCisJICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkTk0gJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCiAJICBkb25lCiAKIAkgIGlmIHRlc3QgLW4gIiRleGNsdWRlX2V4cHN5bXMiOyB0aGVuCkBAIC0yMzcxLDcgKzMzMzIsNyBAQAogCSAgICAgIGV2YWwgJyRHUkVQIC1mICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiIDwgIiRubGlzdCIgPiAiJG5saXN0IlQnCiAJICAgICAgZXZhbCAnJE1WICIkbmxpc3QiVCAiJG5saXN0IicKIAkgICAgICBjYXNlICRob3N0IGluCi0JICAgICAgICAqY3lnd2luIHwgKm1pbmd3KiB8ICpjZWdjYyogKQorCSAgICAgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCiAJICAgICAgICAgIGV2YWwgImVjaG8gRVhQT1JUUyAiJz4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCiAJICAgICAgICAgIGV2YWwgJ2NhdCAiJG5saXN0IiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKIAkgICAgICAgICAgOzsKQEAgLTIzODQsMTAgKzMzNDUsNTIgQEAKIAkgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkZGxwcmVmaWxlJyIKIAkgIGZ1bmNfYmFzZW5hbWUgIiRkbHByZWZpbGUiCiAJICBuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0JICAkb3B0X2RyeV9ydW4gfHwgewotCSAgICBldmFsICckRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJwotCSAgICBldmFsICIkTk0gJGRscHJlZmlsZSAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCi0JICB9CisgICAgICAgICAgY2FzZSAkaG9zdCBpbgorCSAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKKwkgICAgICAjIGlmIGFuIGltcG9ydCBsaWJyYXJ5LCB3ZSBuZWVkIHRvIG9idGFpbiBkbG5hbWUKKwkgICAgICBpZiBmdW5jX3dpbjMyX2ltcG9ydF9saWJfcCAiJGRscHJlZmlsZSI7IHRoZW4KKwkgICAgICAgIGZ1bmNfdHJfc2ggIiRkbHByZWZpbGUiCisJICAgICAgICBldmFsICJjdXJyX2xhZmlsZT1cJGxpYmZpbGVfJGZ1bmNfdHJfc2hfcmVzdWx0IgorCSAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9IiIKKwkgICAgICAgIGlmIHRlc3QgLW4gIiRjdXJyX2xhZmlsZSIgJiYgZnVuY19sYWxpYl9wICIkY3Vycl9sYWZpbGUiOyB0aGVuCisJICAgICAgICAgICMgVXNlIHN1YnNoZWxsLCB0byBhdm9pZCBjbG9iYmVyaW5nIGN1cnJlbnQgdmFyaWFibGUgdmFsdWVzCisJICAgICAgICAgIGRscHJlZmlsZV9kbG5hbWU9YHNvdXJjZSAiJGN1cnJfbGFmaWxlIiAmJiBlY2hvICIkZGxuYW1lImAKKwkgICAgICAgICAgaWYgdGVzdCAtbiAiJGRscHJlZmlsZV9kbG5hbWUiIDsgdGhlbgorCSAgICAgICAgICAgIGZ1bmNfYmFzZW5hbWUgIiRkbHByZWZpbGVfZGxuYW1lIgorCSAgICAgICAgICAgIGRscHJlZmlsZV9kbGJhc2VuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCisJICAgICAgICAgIGVsc2UKKwkgICAgICAgICAgICAjIG5vIGxhZmlsZS4gdXNlciBleHBsaWNpdGx5IHJlcXVlc3RlZCAtZGxwcmVvcGVuIDxpbXBvcnQgbGlicmFyeT4uCisJICAgICAgICAgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kICIkZGxwcmVmaWxlIgorCSAgICAgICAgICAgIGRscHJlZmlsZV9kbGJhc2VuYW1lPSRzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdAorCSAgICAgICAgICBmaQorCSAgICAgICAgZmkKKwkgICAgICAgICRvcHRfZHJ5X3J1biB8fCB7CisJICAgICAgICAgIGlmIHRlc3QgLW4gIiRkbHByZWZpbGVfZGxiYXNlbmFtZSIgOyB0aGVuCisJICAgICAgICAgICAgZXZhbCAnJEVDSE8gIjogJGRscHJlZmlsZV9kbGJhc2VuYW1lIiA+PiAiJG5saXN0IicKKwkgICAgICAgICAgZWxzZQorCSAgICAgICAgICAgIGZ1bmNfd2FybmluZyAiQ291bGQgbm90IGNvbXB1dGUgRExMIG5hbWUgZnJvbSAkbmFtZSIKKwkgICAgICAgICAgICBldmFsICckRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJworCSAgICAgICAgICBmaQorCSAgICAgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGRscHJlZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKwkgICAgICAgICAgZXZhbCAiJE5NIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8CisJICAgICAgICAgICAgJFNFRCAtZSAnL0kgX19pbXAvZCcgLWUgJ3MvSSBfX25tXy9EIC87cy9fbm1fXy8vJyA+PiAnJG5saXN0JyIKKwkgICAgICAgIH0KKwkgICAgICBlbHNlICMgbm90IGFuIGltcG9ydCBsaWIKKwkgICAgICAgICRvcHRfZHJ5X3J1biB8fCB7CisJICAgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCisJICAgICAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkZGxwcmVmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorCSAgICAgICAgICBldmFsICIkTk0gXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgorCSAgICAgICAgfQorCSAgICAgIGZpCisJICAgIDs7CisJICAgICopCisJICAgICAgJG9wdF9kcnlfcnVuIHx8IHsKKwkgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCisJICAgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGRscHJlZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKwkgICAgICAgIGV2YWwgIiROTSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCisJICAgICAgfQorCSAgICA7OworICAgICAgICAgIGVzYWMKIAlkb25lCiAKIAkkb3B0X2RyeV9ydW4gfHwgewpAQCAtMjQxNSwzNiArMzQxOCwxOSBAQAogCSAgaWYgdGVzdCAtZiAiJG5saXN0IlM7IHRoZW4KIAkgICAgZXZhbCAiJGdsb2JhbF9zeW1ib2xfdG9fY2RlY2wiJyA8ICIkbmxpc3QiUyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyInCiAJICBlbHNlCi0JICAgICRFQ0hPICcvKiBOT05FICovJyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIKKwkgICAgZWNobyAnLyogTk9ORSAqLycgPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiCiAJICBmaQogCi0JICAkRUNITyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKKwkgIGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCiAKIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KIHR5cGVkZWYgc3RydWN0IHsKICAgY29uc3QgY2hhciAqbmFtZTsKICAgdm9pZCAqYWRkcmVzczsKIH0gbHRfZGxzeW1saXN0OwotIgotCSAgY2FzZSAkaG9zdCBpbgotCSAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCi0JICAgICRFQ0hPID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAotLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZQotICAgcnVudGltZSByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24KLSAgIG9uIHBzZXVkby1yZWxvY3MuICAqLyIKLQkgICAgbHRfZGxzeW1fY29uc3Q9IDs7Ci0JICAqb3NmNSopCi0JICAgIGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCi0vKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhICovIgotCSAgICBsdF9kbHN5bV9jb25zdD0gOzsKLQkgICopCi0JICAgIGx0X2Rsc3ltX2NvbnN0PWNvbnN0IDs7Ci0JICBlc2FjCi0KLQkgICRFQ0hPID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAotZXh0ZXJuICRsdF9kbHN5bV9jb25zdCBsdF9kbHN5bWxpc3QKK2V4dGVybiBMVF9ETFNZTV9DT05TVCBsdF9kbHN5bWxpc3QKIGx0XyR7bXlfcHJlZml4fV9MVFhfcHJlbG9hZGVkX3N5bWJvbHNbXTsKLSRsdF9kbHN5bV9jb25zdCBsdF9kbHN5bWxpc3QKK0xUX0RMU1lNX0NPTlNUIGx0X2Rsc3ltbGlzdAogbHRfJHtteV9wcmVmaXh9X0xUWF9wcmVsb2FkZWRfc3ltYm9sc1tdID0KIHtcCiAgIHsgXCIkbXlfb3JpZ2luYXRvclwiLCAodm9pZCAqKSAwIH0sIgpAQCAtMjQ1Nyw3ICszNDQzLDcgQEAKIAkgICAgZXZhbCAiJGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgPCAiJG5saXN0IiA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIKIAkgICAgOzsKIAkgIGVzYWMKLQkgICRFQ0hPID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAorCSAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKICAgezAsICh2b2lkICopIDB9CiB9OwogCkBAIC0yNTAwLDcgKzM0ODYsNyBAQAogCWZvciBhcmcgaW4gJExUQ0ZMQUdTOyBkbwogCSAgY2FzZSAkYXJnIGluCiAJICAtcGllIHwgLWZwaWUgfCAtZlBJRSkgOzsKLQkgICopIHN5bXRhYl9jZmxhZ3M9IiRzeW10YWJfY2ZsYWdzICRhcmciIDs7CisJICAqKSBmdW5jX2FwcGVuZCBzeW10YWJfY2ZsYWdzICIgJGFyZyIgOzsKIAkgIGVzYWMKIAlkb25lCiAKQEAgLTI1MTUsMTYgKzM1MDEsMTYgQEAKIAljYXNlICRob3N0IGluCiAJKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCiAJICBpZiB0ZXN0IC1mICIkb3V0cHV0X29iamRpci8kbXlfb3V0cHV0bmFtZS5kZWYiOyB0aGVuCi0JICAgIGNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBTWU1GSUxFQCUkb3V0cHV0X29iamRpci8kbXlfb3V0cHV0bmFtZS5kZWYgJHN5bWZpbGVvYmolImAKLQkgICAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIlgkZmluYWxpemVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJG91dHB1dF9vYmpkaXIvJG15X291dHB1dG5hbWUuZGVmICRzeW1maWxlb2JqJSJgCisJICAgIGNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIiRjb21waWxlX2NvbW1hbmQiIHwgJFNFRCAicyVAU1lNRklMRUAlJG91dHB1dF9vYmpkaXIvJG15X291dHB1dG5hbWUuZGVmICRzeW1maWxlb2JqJSJgCisJICAgIGZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICIkZmluYWxpemVfY29tbWFuZCIgfCAkU0VEICJzJUBTWU1GSUxFQCUkb3V0cHV0X29iamRpci8kbXlfb3V0cHV0bmFtZS5kZWYgJHN5bWZpbGVvYmolImAKIAkgIGVsc2UKLQkgICAgY29tcGlsZV9jb21tYW5kPWAkRUNITyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRzeW1maWxlb2JqJSJgCi0JICAgIGZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICJYJGZpbmFsaXplX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRzeW1maWxlb2JqJSJgCisJICAgIGNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIiRjb21waWxlX2NvbW1hbmQiIHwgJFNFRCAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKKwkgICAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIiRmaW5hbGl6ZV9jb21tYW5kIiB8ICRTRUQgInMlQFNZTUZJTEVAJSRzeW1maWxlb2JqJSJgCiAJICBmaQogCSAgOzsKIAkqKQotCSAgY29tcGlsZV9jb21tYW5kPWAkRUNITyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRzeW1maWxlb2JqJSJgCi0JICBmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiWCRmaW5hbGl6ZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBTWU1GSUxFQCUkc3ltZmlsZW9iaiUiYAorCSAgY29tcGlsZV9jb21tYW5kPWAkRUNITyAiJGNvbXBpbGVfY29tbWFuZCIgfCAkU0VEICJzJUBTWU1GSUxFQCUkc3ltZmlsZW9iaiUiYAorCSAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIiRmaW5hbGl6ZV9jb21tYW5kIiB8ICRTRUQgInMlQFNZTUZJTEVAJSRzeW1maWxlb2JqJSJgCiAJICA7OwogCWVzYWMKIAk7OwpAQCAtMjUzOCw4ICszNTI0LDggQEAKICAgICAgICMgcmVhbGx5IHdhcyByZXF1aXJlZC4KIAogICAgICAgIyBOdWxsaWZ5IHRoZSBzeW1ib2wgZmlsZS4KLSAgICAgIGNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJSBAU1lNRklMRUAlJSJgCi0gICAgICBmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiWCRmaW5hbGl6ZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJSBAU1lNRklMRUAlJSJgCisgICAgICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICIkY29tcGlsZV9jb21tYW5kIiB8ICRTRUQgInMlIEBTWU1GSUxFQCUlImAKKyAgICAgIGZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICIkZmluYWxpemVfY29tbWFuZCIgfCAkU0VEICJzJSBAU1lNRklMRUAlJSJgCiAgICAgZmkKIH0KIApAQCAtMjU0OSw2ICszNTM1LDcgQEAKICMgTmVlZCBhIGxvdCBvZiBnb28gdG8gaGFuZGxlICpib3RoKiBETExzIGFuZCBpbXBvcnQgbGlicwogIyBIYXMgdG8gYmUgYSBzaGVsbCBmdW5jdGlvbiBpbiBvcmRlciB0byAnZWF0JyB0aGUgYXJndW1lbnQKICMgdGhhdCBpcyBzdXBwbGllZCB3aGVuICRmaWxlX21hZ2ljX2NvbW1hbmQgaXMgY2FsbGVkLgorIyBEZXNwaXRlIHRoZSBuYW1lLCBhbHNvIGRlYWwgd2l0aCA2NCBiaXQgYmluYXJpZXMuCiBmdW5jX3dpbjMyX2xpYmlkICgpCiB7CiAgICRvcHRfZGVidWcKQEAgLTI1NTksOSArMzU0NiwxMSBAQAogICAgIHdpbjMyX2xpYmlkX3R5cGU9Ing4NiBhcmNoaXZlIGltcG9ydCIKICAgICA7OwogICAqYXJcIGFyY2hpdmUqKSAjIGNvdWxkIGJlIGFuIGltcG9ydCwgb3Igc3RhdGljCisgICAgIyBLZWVwIHRoZSBlZ3JlcCBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIF9MVF9DSEVDS19NQUdJQ19NRVRIT0QuCiAgICAgaWYgZXZhbCAkT0JKRFVNUCAtZiAkMSB8ICRTRUQgLWUgJzEwcScgMj4vZGV2L251bGwgfAotICAgICAgICRFR1JFUCAnZmlsZSBmb3JtYXQgcGUtaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JyA+L2Rldi9udWxsIDsgdGhlbgotICAgICAgd2luMzJfbm1yZXM9YGV2YWwgJE5NIC1mIHBvc2l4IC1BICQxIHwKKyAgICAgICAkRUdSRVAgJ2ZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScgPi9kZXYvbnVsbDsgdGhlbgorICAgICAgZnVuY190b190b29sX2ZpbGUgIiQxIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorICAgICAgd2luMzJfbm1yZXM9YGV2YWwgJE5NIC1mIHBvc2l4IC1BIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIHwKIAkkU0VEIC1uIC1lICcKIAkgICAgMSwxMDB7CiAJCS8gSSAvewpAQCAtMjU5MCw2ICszNTc5LDEzMSBAQAogICAkRUNITyAiJHdpbjMyX2xpYmlkX3R5cGUiCiB9CiAKKyMgZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliIEFSRworIworIyBQbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbiB0byBleHRyYWN0IHRoZQorIyBuYW1lIG9mIHRoZSBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQKKyMgaW1wb3J0IGxpYnJhcnkgQVJHLgorIyBJbnZva2VkIGJ5IGV2YWwnaW5nIHRoZSBsaWJ0b29sIHZhcmlhYmxlCisjICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluIHRoZSB2YXJpYWJsZQorIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQKK2Z1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYiAoKQoreworICAkb3B0X2RlYnVnCisgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PWAkRExMVE9PTCAtLWlkZW50aWZ5LXN0cmljdCAtLWlkZW50aWZ5ICIkMSJgCit9CisKKyMgZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgU0VDVElPTl9OQU1FIExJQk5BTUVzCisjCisjIFRoZSBpcyB0aGUgY29yZSBvZiBhIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIG9mIGEKKyMgcGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUgbmFtZSBvZiB0aGUKKyMgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGltcG9ydCBsaWJyYXJ5IExJQk5BTUUuCisjCisjIFNFQ1RJT05fTkFNRSBpcyBlaXRoZXIgLmlkYXRhJDYgb3IgLmlkYXRhJDcsIGRlcGVuZGluZworIyBvbiB0aGUgcGxhdGZvcm0gYW5kIGNvbXBpbGVyIHRoYXQgY3JlYXRlZCB0aGUgaW1wbGliLgorIworIyBFY2hvcyB0aGUgbmFtZSBvZiB0aGUgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUKKyMgc3BlY2lmaWVkIGltcG9ydCBsaWJyYXJ5LgorZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBtYXRjaF9saXRlcmFsPWAkRUNITyAiJDEiIHwgJFNFRCAiJHNlZF9tYWtlX2xpdGVyYWxfcmVnZXgiYAorICAkT0JKRFVNUCAtcyAtLXNlY3Rpb24gIiQxIiAiJDIiIDI+L2Rldi9udWxsIHwKKyAgICAkU0VEICcvXkNvbnRlbnRzIG9mIHNlY3Rpb24gJyIkbWF0Y2hfbGl0ZXJhbCInOi97CisgICAgICAjIFBsYWNlIG1hcmtlciBhdCBiZWdpbm5pbmcgb2YgYXJjaGl2ZSBtZW1iZXIgZGxsbmFtZSBzZWN0aW9uCisgICAgICBzLy4qLz09PT1NQVJLPT09PS8KKyAgICAgIHAKKyAgICAgIGQKKyAgICB9CisgICAgIyBUaGVzZSBsaW5lcyBjYW4gc29tZXRpbWVzIGJlIGxvbmdlciB0aGFuIDQzIGNoYXJhY3RlcnMsIGJ1dAorICAgICMgYXJlIGFsd2F5cyB1bmludGVyZXN0aW5nCisgICAgLzpbCSBdKmZpbGUgZm9ybWF0IHBlW2ldXHssMVx9LS9kCisgICAgL15JbiBhcmNoaXZlIFteOl0qOi9kCisgICAgIyBFbnN1cmUgbWFya2VyIGlzIHByaW50ZWQKKyAgICAvXj09PT1NQVJLPT09PS9wCisgICAgIyBSZW1vdmUgYWxsIGxpbmVzIHdpdGggbGVzcyB0aGFuIDQzIGNoYXJhY3RlcnMKKyAgICAvXi5cezQzXH0vIWQKKyAgICAjIEZyb20gcmVtYWluaW5nIGxpbmVzLCByZW1vdmUgZmlyc3QgNDMgY2hhcmFjdGVycworICAgIHMvXi5cezQzXH0vLycgfAorICAgICRTRUQgLW4gJworICAgICAgIyBKb2luIG1hcmtlciBhbmQgYWxsIGxpbmVzIHVudGlsIG5leHQgbWFya2VyIGludG8gYSBzaW5nbGUgbGluZQorICAgICAgL149PT09TUFSSz09PT0vIGIgcGFyYQorICAgICAgSAorICAgICAgJCBiIHBhcmEKKyAgICAgIGIKKyAgICAgIDpwYXJhCisgICAgICB4CisgICAgICBzL1xuLy9nCisgICAgICAjIFJlbW92ZSB0aGUgbWFya2VyCisgICAgICBzL149PT09TUFSSz09PT0vLworICAgICAgIyBSZW1vdmUgdHJhaWxpbmcgZG90cyBhbmQgd2hpdGVzcGFjZQorICAgICAgcy9bXC4gXHRdKiQvLworICAgICAgIyBQcmludAorICAgICAgLy4vcCcgfAorICAgICMgd2Ugbm93IGhhdmUgYSBsaXN0LCBvbmUgZW50cnkgcGVyIGxpbmUsIG9mIHRoZSBzdHJpbmdpZmllZAorICAgICMgY29udGVudHMgb2YgdGhlIGFwcHJvcHJpYXRlIHNlY3Rpb24gb2YgYWxsIG1lbWJlcnMgb2YgdGhlCisgICAgIyBhcmNoaXZlIHdoaWNoIHBvc3Nlc3MgdGhhdCBzZWN0aW9uLiBIZXVyaXN0aWM6IGVsaW1pbmF0ZQorICAgICMgYWxsIHRob3NlIHdoaWNoIGhhdmUgYSBmaXJzdCBvciBzZWNvbmQgY2hhcmFjdGVyIHRoYXQgaXMKKyAgICAjIGEgJy4nICh0aGF0IGlzLCBvYmpkdW1wJ3MgcmVwcmVzZW50YXRpb24gb2YgYW4gdW5wcmludGFibGUKKyAgICAjIGNoYXJhY3Rlci4pIFRoaXMgc2hvdWxkIHdvcmsgZm9yIGFsbCBhcmNoaXZlcyB3aXRoIGxlc3MgdGhhbgorICAgICMgMHgzMDJmIGV4cG9ydHMgLS0gYnV0IHdpbGwgZmFpbCBmb3IgRExMcyB3aG9zZSBuYW1lIGFjdHVhbGx5CisgICAgIyBiZWdpbnMgd2l0aCBhIGxpdGVyYWwgJy4nIG9yIGEgc2luZ2xlIGNoYXJhY3RlciBmb2xsb3dlZCBieQorICAgICMgYSAnLicuCisgICAgIworICAgICMgT2YgdGhvc2UgdGhhdCByZW1haW4sIHByaW50IHRoZSBmaXJzdCBvbmUuCisgICAgJFNFRCAtZSAnL15cLi9kOy9eLlwuL2Q7cScKK30KKworIyBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wIEFSRworIyBUaGlzIHByZWRpY2F0ZSByZXR1cm5zIHdpdGggemVybyBzdGF0dXMgKFRSVUUpIGlmCisjIEFSRyBpcyBhIEdOVS9iaW51dGlscy1zdHlsZSBpbXBvcnQgbGlicmFyeS4gUmV0dXJucworIyB3aXRoIG5vbnplcm8gc3RhdHVzIChGQUxTRSkgb3RoZXJ3aXNlLgorZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfcCAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9fdG9vbF9maWxlICIkMSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKyAgZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfdG1wPWAkTk0gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiIHwgZXZhbCAiJGdsb2JhbF9zeW1ib2xfcGlwZSIgfCAkRUdSRVAgJyAoX2hlYWRfW0EtWmEtejAtOV9dK19bYWRdbCp8W0EtWmEtejAtOV9dK19bYWRdbCpfaW5hbWUpJCdgCisgIHRlc3QgLW4gIiRmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl90bXAiCit9CisKKyMgZnVuY19jeWdtaW5nX21zX2ltcGxpYl9wIEFSRworIyBUaGlzIHByZWRpY2F0ZSByZXR1cm5zIHdpdGggemVybyBzdGF0dXMgKFRSVUUpIGlmCisjIEFSRyBpcyBhbiBNUy1zdHlsZSBpbXBvcnQgbGlicmFyeS4gUmV0dXJucworIyB3aXRoIG5vbnplcm8gc3RhdHVzIChGQUxTRSkgb3RoZXJ3aXNlLgorZnVuY19jeWdtaW5nX21zX2ltcGxpYl9wICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b190b29sX2ZpbGUgIiQxIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorICBmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3RtcD1gJE5NICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiB8IGV2YWwgIiRnbG9iYWxfc3ltYm9sX3BpcGUiIHwgJEdSRVAgJ19OVUxMX0lNUE9SVF9ERVNDUklQVE9SJ2AKKyAgdGVzdCAtbiAiJGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfdG1wIgorfQorCisjIGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjayBBUkcKKyMgUGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUKKyMgbmFtZSBvZiB0aGUgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkCisjIGltcG9ydCBsaWJyYXJ5IEFSRy4KKyMKKyMgVGhpcyBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBpcyBmb3IgdXNlIHdoZW4gJERMTFRPT0wKKyMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgLS1pZGVudGlmeS1zdHJpY3Qgb3B0aW9uLgorIyBJbnZva2VkIGJ5IGV2YWwnaW5nIHRoZSBsaWJ0b29sIHZhcmlhYmxlCisjICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluIHRoZSB2YXJpYWJsZQorIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQKK2Z1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjayAoKQoreworICAkb3B0X2RlYnVnCisgIGlmIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgIiQxIiA7IHRoZW4KKyAgICAjIGJpbnV0aWxzIGltcG9ydCBsaWJyYXJ5CisgICAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9YGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlICcuaWRhdGEkNycgIiQxImAKKyAgZWxpZiBmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgIiQxIiA7IHRoZW4KKyAgICAjIG1zLWdlbmVyYXRlZCBpbXBvcnQgbGlicmFyeQorICAgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PWBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSAnLmlkYXRhJDYnICIkMSJgCisgIGVsc2UKKyAgICAjIHVua25vd24KKyAgICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD0iIgorICBmaQorfQogCiAKICMgZnVuY19leHRyYWN0X2FuX2FyY2hpdmUgZGlyIG9sZGxpYgpAQCAtMjU5OCw3ICszNzEyLDE4IEBACiAgICAgJG9wdF9kZWJ1ZwogICAgIGZfZXhfYW5fYXJfZGlyPSIkMSI7IHNoaWZ0CiAgICAgZl9leF9hbl9hcl9vbGRsaWI9IiQxIgotICAgIGZ1bmNfc2hvd19ldmFsICIoY2QgXCRmX2V4X2FuX2FyX2RpciAmJiAkQVIgeCBcIlwkZl9leF9hbl9hcl9vbGRsaWJcIikiICdleGl0ICQ/JworICAgIGlmIHRlc3QgIiRsb2NrX29sZF9hcmNoaXZlX2V4dHJhY3Rpb24iID0geWVzOyB0aGVuCisgICAgICBsb2NrZmlsZT0kZl9leF9hbl9hcl9vbGRsaWIubG9jaworICAgICAgdW50aWwgJG9wdF9kcnlfcnVuIHx8IGxuICIkcHJvZ3BhdGgiICIkbG9ja2ZpbGUiIDI+L2Rldi9udWxsOyBkbworCWZ1bmNfZWNobyAiV2FpdGluZyBmb3IgJGxvY2tmaWxlIHRvIGJlIHJlbW92ZWQiCisJc2xlZXAgMgorICAgICAgZG9uZQorICAgIGZpCisgICAgZnVuY19zaG93X2V2YWwgIihjZCBcJGZfZXhfYW5fYXJfZGlyICYmICRBUiB4IFwiXCRmX2V4X2FuX2FyX29sZGxpYlwiKSIgXAorCQkgICAnc3RhdD0kPzsgcm0gLWYgIiRsb2NrZmlsZSI7IGV4aXQgJHN0YXQnCisgICAgaWYgdGVzdCAiJGxvY2tfb2xkX2FyY2hpdmVfZXh0cmFjdGlvbiIgPSB5ZXM7IHRoZW4KKyAgICAgICRvcHRfZHJ5X3J1biB8fCBybSAtZiAiJGxvY2tmaWxlIgorICAgIGZpCiAgICAgaWYgKCRBUiB0ICIkZl9leF9hbl9hcl9vbGRsaWIiIHwgc29ydCB8IHNvcnQgLXVjID4vZGV2L251bGwgMj4mMSk7IHRoZW4KICAgICAgOgogICAgIGVsc2UKQEAgLTI2NjksNyArMzc5NCw3IEBACiAJICAgIGRhcndpbl9maWxlPQogCSAgICBkYXJ3aW5fZmlsZXM9CiAJICAgIGZvciBkYXJ3aW5fZmlsZSBpbiAkZGFyd2luX2ZpbGVsaXN0OyBkbwotCSAgICAgIGRhcndpbl9maWxlcz1gZmluZCB1bmZhdC0kJCAtbmFtZSAkZGFyd2luX2ZpbGUgLXByaW50IHwgJE5MMlNQYAorCSAgICAgIGRhcndpbl9maWxlcz1gZmluZCB1bmZhdC0kJCAtbmFtZSAkZGFyd2luX2ZpbGUgLXByaW50IHwgc29ydCB8ICROTDJTUGAKIAkgICAgICAkTElQTyAtY3JlYXRlIC1vdXRwdXQgIiRkYXJ3aW5fZmlsZSIgJGRhcndpbl9maWxlcwogCSAgICBkb25lICMgJGRhcndpbl9maWxlbGlzdAogCSAgICAkUk0gLXJmIHVuZmF0LSQkCkBAIC0yNjg0LDI1ICszODA5LDMwIEBACiAgICAgICAgIGZ1bmNfZXh0cmFjdF9hbl9hcmNoaXZlICIkbXlfeGRpciIgIiRteV94YWJzIgogCTs7CiAgICAgICBlc2FjCi0gICAgICBteV9vbGRvYmpzPSIkbXlfb2xkb2JqcyAiYGZpbmQgJG15X3hkaXIgLW5hbWUgXCouJG9iamV4dCAtcHJpbnQgLW8gLW5hbWUgXCoubG8gLXByaW50IHwgJE5MMlNQYAorICAgICAgbXlfb2xkb2Jqcz0iJG15X29sZG9ianMgImBmaW5kICRteV94ZGlyIC1uYW1lIFwqLiRvYmpleHQgLXByaW50IC1vIC1uYW1lIFwqLmxvIC1wcmludCB8IHNvcnQgfCAkTkwyU1BgCiAgICAgZG9uZQogCiAgICAgZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdD0iJG15X29sZG9ianMiCiB9CiAKIAotCi0jIGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQxIFthcmc9bm9dCisjIGZ1bmNfZW1pdF93cmFwcGVyIFthcmc9bm9dCiAjCi0jIEVtaXQgdGhlIGZpcnN0IHBhcnQgb2YgYSBsaWJ0b29sIHdyYXBwZXIgc2NyaXB0IG9uIHN0ZG91dC4KLSMgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUgZGVzY3JpcHRpb24gYXNzb2NpYXRlZCB3aXRoCi0jIGZ1bmNfZW1pdF93cmFwcGVyKCksIGJlbG93LgotZnVuY19lbWl0X3dyYXBwZXJfcGFydDEgKCkKKyMgRW1pdCBhIGxpYnRvb2wgd3JhcHBlciBzY3JpcHQgb24gc3Rkb3V0LgorIyBEb24ndCBkaXJlY3RseSBvcGVuIGEgZmlsZSBiZWNhdXNlIHdlIG1heSB3YW50IHRvCisjIGluY29ycG9yYXRlIHRoZSBzY3JpcHQgY29udGVudHMgd2l0aGluIGEgY3lnd2luL21pbmd3CisjIHdyYXBwZXIgZXhlY3V0YWJsZS4gIE11c3QgT05MWSBiZSBjYWxsZWQgZnJvbSB3aXRoaW4KKyMgZnVuY19tb2RlX2xpbmsgYmVjYXVzZSBpdCBkZXBlbmRzIG9uIGEgbnVtYmVyIG9mIHZhcmlhYmxlcworIyBzZXQgdGhlcmVpbi4KKyMKKyMgQVJHIGlzIHRoZSB2YWx1ZSB0aGF0IHRoZSBXUkFQUEVSX1NDUklQVF9CRUxPTkdTX0lOX09CSkRJUgorIyB2YXJpYWJsZSB3aWxsIHRha2UuICBJZiAneWVzJywgdGhlbiB0aGUgZW1pdHRlZCBzY3JpcHQKKyMgd2lsbCBhc3N1bWUgdGhhdCB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIGl0IGlzIHN0b3JlZCBpcworIyB0aGUgJG9iamRpciBkaXJlY3RvcnkuICBUaGlzIGlzIGEgY3lnd2luL21pbmd3LXNwZWNpZmljCisjIGJlaGF2aW9yLgorZnVuY19lbWl0X3dyYXBwZXIgKCkKIHsKLQlmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MV9hcmcxPW5vCi0JaWYgdGVzdCAtbiAiJDEiIDsgdGhlbgotCSAgZnVuY19lbWl0X3dyYXBwZXJfcGFydDFfYXJnMT0kMQotCWZpCisJZnVuY19lbWl0X3dyYXBwZXJfYXJnMT0kezEtbm99CiAKIAkkRUNITyAiXAogIyEgJFNIRUxMCkBAIC0yNzE4LDcgKzM4NDgsNiBAQAogCiAjIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBoZWxwcyB1cyBkbyByb2J1c3QgcXVvdGluZy4gIEl0IGJhY2tzbGFzaGlmaWVzCiAjIG1ldGFjaGFyYWN0ZXJzIHRoYXQgYXJlIHN0aWxsIGFjdGl2ZSB3aXRoaW4gZG91YmxlLXF1b3RlZCBzdHJpbmdzLgotWHNlZD0nJHtTRUR9IC1lIDFzL15YLy8nCiBzZWRfcXVvdGVfc3Vic3Q9JyRzZWRfcXVvdGVfc3Vic3QnCiAKICMgQmUgQm91cm5lIGNvbXBhdGlibGUKQEAgLTI3NDksMzEgKzM4NzgsMTMyIEBACiBlbHNlCiAgICMgV2hlbiB3ZSBhcmUgc291cmNlZCBpbiBleGVjdXRlIG1vZGUsIFwkZmlsZSBhbmQgXCRFQ0hPIGFyZSBhbHJlYWR5IHNldC4KICAgaWYgdGVzdCBcIlwkbGlidG9vbF9leGVjdXRlX21hZ2ljXCIgIT0gXCIkbWFnaWNcIjsgdGhlbgotICAgIEVDSE89XCIkcWVjaG9cIgotICAgIGZpbGU9XCJcJDBcIgotICAgICMgTWFrZSBzdXJlIGVjaG8gd29ya3MuCi0gICAgaWYgdGVzdCBcIlhcJDFcIiA9IFgtLW5vLXJlZXhlYzsgdGhlbgotICAgICAgIyBEaXNjYXJkIHRoZSAtLW5vLXJlZXhlYyBmbGFnLCBhbmQgY29udGludWUuCi0gICAgICBzaGlmdAotICAgIGVsaWYgdGVzdCBcIlhcYHsgXCRFQ0hPICdcdCc7IH0gMj4vZGV2L251bGxcYFwiID0gJ1hcdCc7IHRoZW4KLSAgICAgICMgWWlwcGVlLCBcJEVDSE8gd29ya3MhCi0gICAgICA6Ci0gICAgZWxzZQotICAgICAgIyBSZXN0YXJ0IHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLCBhbmQgdGhlbiBtYXliZSBcJEVDSE8gd2lsbCB3b3JrLgotICAgICAgZXhlYyAkU0hFTEwgXCJcJDBcIiAtLW5vLXJlZXhlYyBcJHsxK1wiXCRAXCJ9Ci0gICAgZmkKLSAgZmlcCisgICAgZmlsZT1cIlwkMFwiIgorCisgICAgcUVDSE89YCRFQ0hPICIkRUNITyIgfCAkU0VEICIkc2VkX3F1b3RlX3N1YnN0ImAKKyAgICAkRUNITyAiXAorCisjIEEgZnVuY3Rpb24gdGhhdCBpcyB1c2VkIHdoZW4gdGhlcmUgaXMgbm8gcHJpbnQgYnVpbHRpbiBvciBwcmludGYuCitmdW5jX2ZhbGxiYWNrX2VjaG8gKCkKK3sKKyAgZXZhbCAnY2F0IDw8X0xURUNIT19FT0YKK1wkMQorX0xURUNIT19FT0YnCit9CisgICAgRUNITz1cIiRxRUNIT1wiCisgIGZpCisKKyMgVmVyeSBiYXNpYyBvcHRpb24gcGFyc2luZy4gVGhlc2Ugb3B0aW9ucyBhcmUgKGEpIHNwZWNpZmljIHRvCisjIHRoZSBsaWJ0b29sIHdyYXBwZXIsIChiKSBhcmUgaWRlbnRpY2FsIGJldHdlZW4gdGhlIHdyYXBwZXIKKyMgL3NjcmlwdC8gYW5kIHRoZSB3cmFwcGVyIC9leGVjdXRhYmxlLyB3aGljaCBpcyB1c2VkIG9ubHkgb24KKyMgd2luZG93cyBwbGF0Zm9ybXMsIGFuZCAoYykgYWxsIGJlZ2luIHdpdGggdGhlIHN0cmluZyAiLS1sdC0iCisjIChhcHBsaWNhdGlvbiBwcm9ncmFtcyBhcmUgdW5saWtlbHkgdG8gaGF2ZSBvcHRpb25zIHdoaWNoIG1hdGNoCisjIHRoaXMgcGF0dGVybikuCisjCisjIFRoZXJlIGFyZSBvbmx5IHR3byBzdXBwb3J0ZWQgb3B0aW9uczogLS1sdC1kZWJ1ZyBhbmQKKyMgLS1sdC1kdW1wLXNjcmlwdC4gVGhlcmUgaXMsIGRlbGliZXJhdGVseSwgbm8gLS1sdC1oZWxwLgorIworIyBUaGUgZmlyc3QgYXJndW1lbnQgdG8gdGhpcyBwYXJzaW5nIGZ1bmN0aW9uIHNob3VsZCBiZSB0aGUKKyMgc2NyaXB0J3MgJDAgdmFsdWUsIGZvbGxvd2VkIGJ5ICIkQCIuCitsdF9vcHRpb25fZGVidWc9CitmdW5jX3BhcnNlX2x0X29wdGlvbnMgKCkKK3sKKyAgbHRfc2NyaXB0X2FyZzA9XCQwCisgIHNoaWZ0CisgIGZvciBsdF9vcHQKKyAgZG8KKyAgICBjYXNlIFwiXCRsdF9vcHRcIiBpbgorICAgIC0tbHQtZGVidWcpIGx0X29wdGlvbl9kZWJ1Zz0xIDs7CisgICAgLS1sdC1kdW1wLXNjcmlwdCkKKyAgICAgICAgbHRfZHVtcF9EPVxgXCRFQ0hPIFwiWFwkbHRfc2NyaXB0X2FyZzBcIiB8ICRTRUQgLWUgJ3MvXlgvLycgLWUgJ3MlL1teL10qJCUlJ1xgCisgICAgICAgIHRlc3QgXCJYXCRsdF9kdW1wX0RcIiA9IFwiWFwkbHRfc2NyaXB0X2FyZzBcIiAmJiBsdF9kdW1wX0Q9LgorICAgICAgICBsdF9kdW1wX0Y9XGBcJEVDSE8gXCJYXCRsdF9zY3JpcHRfYXJnMFwiIHwgJFNFRCAtZSAncy9eWC8vJyAtZSAncyVeLiovJSUnXGAKKyAgICAgICAgY2F0IFwiXCRsdF9kdW1wX0QvXCRsdF9kdW1wX0ZcIgorICAgICAgICBleGl0IDAKKyAgICAgIDs7CisgICAgLS1sdC0qKQorICAgICAgICBcJEVDSE8gXCJVbnJlY29nbml6ZWQgLS1sdC0gb3B0aW9uOiAnXCRsdF9vcHQnXCIgMT4mMgorICAgICAgICBleGl0IDEKKyAgICAgIDs7CisgICAgZXNhYworICBkb25lCisKKyAgIyBQcmludCB0aGUgZGVidWcgYmFubmVyIGltbWVkaWF0ZWx5OgorICBpZiB0ZXN0IC1uIFwiXCRsdF9vcHRpb25fZGVidWdcIjsgdGhlbgorICAgIGVjaG8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBsaWJ0b29sIHdyYXBwZXIgKEdOVSAkUEFDS0FHRSRUSU1FU1RBTVApICRWRVJTSU9OXCIgMT4mMgorICBmaQorfQorCisjIFVzZWQgd2hlbiAtLWx0LWRlYnVnLiBQcmludHMgaXRzIGFyZ3VtZW50cyB0byBzdGRvdXQKKyMgKHJlZGlyZWN0aW9uIGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY2FsbGVyKQorZnVuY19sdF9kdW1wX2FyZ3MgKCkKK3sKKyAgbHRfZHVtcF9hcmdzX049MTsKKyAgZm9yIGx0X2FyZworICBkbworICAgIFwkRUNITyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IG5ld2FyZ3ZbXCRsdF9kdW1wX2FyZ3NfTl06IFwkbHRfYXJnXCIKKyAgICBsdF9kdW1wX2FyZ3NfTj1cYGV4cHIgXCRsdF9kdW1wX2FyZ3NfTiArIDFcYAorICBkb25lCit9CisKKyMgQ29yZSBmdW5jdGlvbiBmb3IgbGF1bmNoaW5nIHRoZSB0YXJnZXQgYXBwbGljYXRpb24KK2Z1bmNfZXhlY19wcm9ncmFtX2NvcmUgKCkKK3sKICIKLQkkRUNITyAiXAorICBjYXNlICRob3N0IGluCisgICMgQmFja3NsYXNoZXMgc2VwYXJhdGUgZGlyZWN0b3JpZXMgb24gcGxhaW4gd2luZG93cworICAqLSotbWluZ3cgfCAqLSotb3MyKiB8ICotY2VnY2MqKQorICAgICRFQ0hPICJcCisgICAgICBpZiB0ZXN0IC1uIFwiXCRsdF9vcHRpb25fZGVidWdcIjsgdGhlbgorICAgICAgICBcJEVDSE8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBuZXdhcmd2WzBdOiBcJHByb2dkaXJcXFxcXCRwcm9ncmFtXCIgMT4mMgorICAgICAgICBmdW5jX2x0X2R1bXBfYXJncyBcJHsxK1wiXCRAXCJ9IDE+JjIKKyAgICAgIGZpCisgICAgICBleGVjIFwiXCRwcm9nZGlyXFxcXFwkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KKyIKKyAgICA7OworCisgICopCisgICAgJEVDSE8gIlwKKyAgICAgIGlmIHRlc3QgLW4gXCJcJGx0X29wdGlvbl9kZWJ1Z1wiOyB0aGVuCisgICAgICAgIFwkRUNITyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IG5ld2FyZ3ZbMF06IFwkcHJvZ2Rpci9cJHByb2dyYW1cIiAxPiYyCisgICAgICAgIGZ1bmNfbHRfZHVtcF9hcmdzIFwkezErXCJcJEBcIn0gMT4mMgorICAgICAgZmkKKyAgICAgIGV4ZWMgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQorIgorICAgIDs7CisgIGVzYWMKKyAgJEVDSE8gIlwKKyAgICAgIFwkRUNITyBcIlwkMDogY2Fubm90IGV4ZWMgXCRwcm9ncmFtIFwkKlwiIDE+JjIKKyAgICAgIGV4aXQgMQorfQorCisjIEEgZnVuY3Rpb24gdG8gZW5jYXBzdWxhdGUgbGF1bmNoaW5nIHRoZSB0YXJnZXQgYXBwbGljYXRpb24KKyMgU3RyaXBzIG9wdGlvbnMgaW4gdGhlIC0tbHQtKiBuYW1lc3BhY2UgZnJvbSBcJEAgYW5kCisjIGxhdW5jaGVzIHRhcmdldCBhcHBsaWNhdGlvbiB3aXRoIHRoZSByZW1haW5pbmcgYXJndW1lbnRzLgorZnVuY19leGVjX3Byb2dyYW0gKCkKK3sKKyAgZm9yIGx0X3dyX2FyZworICBkbworICAgIGNhc2UgXCRsdF93cl9hcmcgaW4KKyAgICAtLWx0LSopIDs7CisgICAgKikgc2V0IHggXCJcJEBcIiBcIlwkbHRfd3JfYXJnXCI7IHNoaWZ0OzsKKyAgICBlc2FjCisgICAgc2hpZnQKKyAgZG9uZQorICBmdW5jX2V4ZWNfcHJvZ3JhbV9jb3JlIFwkezErXCJcJEBcIn0KK30KKworICAjIFBhcnNlIG9wdGlvbnMKKyAgZnVuY19wYXJzZV9sdF9vcHRpb25zIFwiXCQwXCIgXCR7MStcIlwkQFwifQogCiAgICMgRmluZCB0aGUgZGlyZWN0b3J5IHRoYXQgdGhpcyBzY3JpcHQgbGl2ZXMgaW4uCi0gIHRoaXNkaXI9XGBcJEVDSE8gXCJYXCRmaWxlXCIgfCBcJFhzZWQgLWUgJ3MlL1teL10qJCUlJ1xgCisgIHRoaXNkaXI9XGBcJEVDSE8gXCJcJGZpbGVcIiB8ICRTRUQgJ3MlL1teL10qJCUlJ1xgCiAgIHRlc3QgXCJ4XCR0aGlzZGlyXCIgPSBcInhcJGZpbGVcIiAmJiB0aGlzZGlyPS4KIAogICAjIEZvbGxvdyBzeW1ib2xpYyBsaW5rcyB1bnRpbCB3ZSBnZXQgdG8gdGhlIHJlYWwgdGhpc2Rpci4KLSAgZmlsZT1cYGxzIC1sZCBcIlwkZmlsZVwiIHwgJHtTRUR9IC1uICdzLy4qLT4gLy9wJ1xgCisgIGZpbGU9XGBscyAtbGQgXCJcJGZpbGVcIiB8ICRTRUQgLW4gJ3MvLiotPiAvL3AnXGAKICAgd2hpbGUgdGVzdCAtbiBcIlwkZmlsZVwiOyBkbwotICAgIGRlc3RkaXI9XGBcJEVDSE8gXCJYXCRmaWxlXCIgfCBcJFhzZWQgLWUgJ3MlL1teL10qXCQlJSdcYAorICAgIGRlc3RkaXI9XGBcJEVDSE8gXCJcJGZpbGVcIiB8ICRTRUQgJ3MlL1teL10qXCQlJSdcYAogCiAgICAgIyBJZiB0aGVyZSB3YXMgYSBkaXJlY3RvcnkgY29tcG9uZW50LCB0aGVuIGNoYW5nZSB0aGlzZGlyLgogICAgIGlmIHRlc3QgXCJ4XCRkZXN0ZGlyXCIgIT0gXCJ4XCRmaWxlXCI7IHRoZW4KQEAgLTI3ODMsMzAgKzQwMTMsMTMgQEAKICAgICAgIGVzYWMKICAgICBmaQogCi0gICAgZmlsZT1cYFwkRUNITyBcIlhcJGZpbGVcIiB8IFwkWHNlZCAtZSAncyVeLiovJSUnXGAKLSAgICBmaWxlPVxgbHMgLWxkIFwiXCR0aGlzZGlyL1wkZmlsZVwiIHwgJHtTRUR9IC1uICdzLy4qLT4gLy9wJ1xgCisgICAgZmlsZT1cYFwkRUNITyBcIlwkZmlsZVwiIHwgJFNFRCAncyVeLiovJSUnXGAKKyAgICBmaWxlPVxgbHMgLWxkIFwiXCR0aGlzZGlyL1wkZmlsZVwiIHwgJFNFRCAtbiAncy8uKi0+IC8vcCdcYAogICBkb25lCi0iCi19Ci0jIGVuZDogZnVuY19lbWl0X3dyYXBwZXJfcGFydDEKLQotIyBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MiBbYXJnPW5vXQotIwotIyBFbWl0IHRoZSBzZWNvbmQgcGFydCBvZiBhIGxpYnRvb2wgd3JhcHBlciBzY3JpcHQgb24gc3Rkb3V0LgotIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBkZXNjcmlwdGlvbiBhc3NvY2lhdGVkIHdpdGgKLSMgZnVuY19lbWl0X3dyYXBwZXIoKSwgYmVsb3cuCi1mdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MiAoKQotewotCWZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyX2FyZzE9bm8KLQlpZiB0ZXN0IC1uICIkMSIgOyB0aGVuCi0JICBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0Ml9hcmcxPSQxCi0JZmkKLQotCSRFQ0hPICJcCiAKICAgIyBVc3VhbGx5ICdubycsIGV4Y2VwdCBvbiBjeWd3aW4vbWluZ3cgd2hlbiBlbWJlZGRlZCBpbnRvCiAgICMgdGhlIGN3cmFwcGVyLgotICBXUkFQUEVSX1NDUklQVF9CRUxPTkdTX0lOX09CSkRJUj0kZnVuY19lbWl0X3dyYXBwZXJfcGFydDJfYXJnMQorICBXUkFQUEVSX1NDUklQVF9CRUxPTkdTX0lOX09CSkRJUj0kZnVuY19lbWl0X3dyYXBwZXJfYXJnMQogICBpZiB0ZXN0IFwiXCRXUkFQUEVSX1NDUklQVF9CRUxPTkdTX0lOX09CSkRJUlwiID0gXCJ5ZXNcIjsgdGhlbgogICAgICMgc3BlY2lhbCBjYXNlIGZvciAnLicKICAgICBpZiB0ZXN0IFwiXCR0aGlzZGlyXCIgPSBcIi5cIjsgdGhlbgpAQCAtMjgxNCw3ICs0MDI3LDcgQEAKICAgICBmaQogICAgICMgcmVtb3ZlIC5saWJzIGZyb20gdGhpc2RpcgogICAgIGNhc2UgXCJcJHRoaXNkaXJcIiBpbgotICAgICpbXFxcXC9dJG9iamRpciApIHRoaXNkaXI9XGBcJEVDSE8gXCJYXCR0aGlzZGlyXCIgfCBcJFhzZWQgLWUgJ3MlW1xcXFwvXVteXFxcXC9dKiQlJSdcYCA7OworICAgICpbXFxcXC9dJG9iamRpciApIHRoaXNkaXI9XGBcJEVDSE8gXCJcJHRoaXNkaXJcIiB8ICRTRUQgJ3MlW1xcXFwvXVteXFxcXC9dKiQlJSdcYCA7OwogICAgICRvYmpkaXIgKSAgIHRoaXNkaXI9LiA7OwogICAgIGVzYWMKICAgZmkKQEAgLTI4NjksNiArNDA4MiwxOCBAQAogCiAgIGlmIHRlc3QgLWYgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCI7IHRoZW4iCiAKKwkjIGZpeHVwIHRoZSBkbGwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLgorCSMKKwkjIEZpeCB0aGUgRExMIHNlYXJjaHBhdGggaWYgd2UgbmVlZCB0by4gIERvIHRoaXMgYmVmb3JlIHByZXBlbmRpbmcKKwkjIHRvIHNobGlicGF0aCwgYmVjYXVzZSBvbiBXaW5kb3dzLCBib3RoIGFyZSBQQVRIIGFuZCB1bmluc3RhbGxlZAorCSMgbGlicmFyaWVzIG11c3QgY29tZSBmaXJzdC4KKwlpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KKwkgICRFQ0hPICJcCisgICAgIyBBZGQgdGhlIGRsbCBzZWFyY2ggcGF0aCBjb21wb25lbnRzIHRvIHRoZSBleGVjdXRhYmxlIFBBVEgKKyAgICBQQVRIPSRkbGxzZWFyY2hwYXRoOlwkUEFUSAorIgorCWZpCisKIAkjIEV4cG9ydCBvdXIgc2hsaWJwYXRoX3ZhciBpZiB3ZSBoYXZlIG9uZS4KIAlpZiB0ZXN0ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiA9IHllcyAmJiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHRlbXBfcnBhdGgiOyB0aGVuCiAJICAkRUNITyAiXApAQCAtMjg3NywyNTQgKzQxMDIsMjkgQEAKIAogICAgICMgU29tZSBzeXN0ZW1zIGNhbm5vdCBjb3BlIHdpdGggY29sb24tdGVybWluYXRlZCAkc2hsaWJwYXRoX3ZhcgogICAgICMgVGhlIHNlY29uZCBjb2xvbiBpcyBhIHdvcmthcm91bmQgZm9yIGEgYnVnIGluIEJlT1MgUjQgc2VkCi0gICAgJHNobGlicGF0aF92YXI9XGBcJEVDSE8gXCJYXCQkc2hsaWJwYXRoX3ZhclwiIHwgXCRYc2VkIC1lICdzLzo6KlwkLy8nXGAKKyAgICAkc2hsaWJwYXRoX3Zhcj1cYFwkRUNITyBcIlwkJHNobGlicGF0aF92YXJcIiB8ICRTRUQgJ3MvOjoqXCQvLydcYAogCiAgICAgZXhwb3J0ICRzaGxpYnBhdGhfdmFyCiAiCiAJZmkKIAotCSMgZml4dXAgdGhlIGRsbCBzZWFyY2hwYXRoIGlmIHdlIG5lZWQgdG8uCi0JaWYgdGVzdCAtbiAiJGRsbHNlYXJjaHBhdGgiOyB0aGVuCi0JICAkRUNITyAiXAotICAgICMgQWRkIHRoZSBkbGwgc2VhcmNoIHBhdGggY29tcG9uZW50cyB0byB0aGUgZXhlY3V0YWJsZSBQQVRICi0gICAgUEFUSD0kZGxsc2VhcmNocGF0aDpcJFBBVEgKLSIKLQlmaQotCiAJJEVDSE8gIlwKICAgICBpZiB0ZXN0IFwiXCRsaWJ0b29sX2V4ZWN1dGVfbWFnaWNcIiAhPSBcIiRtYWdpY1wiOyB0aGVuCiAgICAgICAjIFJ1biB0aGUgYWN0dWFsIHByb2dyYW0gd2l0aCBvdXIgYXJndW1lbnRzLgotIgotCWNhc2UgJGhvc3QgaW4KLQkjIEJhY2tzbGFzaGVzIHNlcGFyYXRlIGRpcmVjdG9yaWVzIG9uIHBsYWluIHdpbmRvd3MKLQkqLSotbWluZ3cgfCAqLSotb3MyKiB8ICotY2VnY2MqKQotCSAgJEVDSE8gIlwKLSAgICAgIGV4ZWMgXCJcJHByb2dkaXJcXFxcXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQotIgotCSAgOzsKLQotCSopCi0JICAkRUNITyAiXAotICAgICAgZXhlYyBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9Ci0iCi0JICA7OwotCWVzYWMKLQkkRUNITyAiXAotICAgICAgXCRFQ0hPIFwiXCQwOiBjYW5ub3QgZXhlYyBcJHByb2dyYW0gXCQqXCIgMT4mMgotICAgICAgZXhpdCAxCisgICAgICBmdW5jX2V4ZWNfcHJvZ3JhbSBcJHsxK1wiXCRAXCJ9CiAgICAgZmkKICAgZWxzZQogICAgICMgVGhlIHByb2dyYW0gZG9lc24ndCBleGlzdC4KICAgICBcJEVDSE8gXCJcJDA6IGVycm9yOiBcXFxgXCRwcm9nZGlyL1wkcHJvZ3JhbScgZG9lcyBub3QgZXhpc3RcIiAxPiYyCiAgICAgXCRFQ0hPIFwiVGhpcyBzY3JpcHQgaXMganVzdCBhIHdyYXBwZXIgZm9yIFwkcHJvZ3JhbS5cIiAxPiYyCi0gICAgJEVDSE8gXCJTZWUgdGhlICRQQUNLQUdFIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uXCIgMT4mMgorICAgIFwkRUNITyBcIlNlZSB0aGUgJFBBQ0tBR0UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIiAxPiYyCiAgICAgZXhpdCAxCiAgIGZpCiBmaVwKICIKIH0KLSMgZW5kOiBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MgogCiAKLSMgZnVuY19lbWl0X3dyYXBwZXIgW2FyZz1ub10KLSMKLSMgRW1pdCBhIGxpYnRvb2wgd3JhcHBlciBzY3JpcHQgb24gc3Rkb3V0LgotIyBEb24ndCBkaXJlY3RseSBvcGVuIGEgZmlsZSBiZWNhdXNlIHdlIG1heSB3YW50IHRvCi0jIGluY29ycG9yYXRlIHRoZSBzY3JpcHQgY29udGVudHMgd2l0aGluIGEgY3lnd2luL21pbmd3Ci0jIHdyYXBwZXIgZXhlY3V0YWJsZS4gIE11c3QgT05MWSBiZSBjYWxsZWQgZnJvbSB3aXRoaW4KLSMgZnVuY19tb2RlX2xpbmsgYmVjYXVzZSBpdCBkZXBlbmRzIG9uIGEgbnVtYmVyIG9mIHZhcmlhYmxlcwotIyBzZXQgdGhlcmVpbi4KLSMKLSMgQVJHIGlzIHRoZSB2YWx1ZSB0aGF0IHRoZSBXUkFQUEVSX1NDUklQVF9CRUxPTkdTX0lOX09CSkRJUgotIyB2YXJpYWJsZSB3aWxsIHRha2UuICBJZiAneWVzJywgdGhlbiB0aGUgZW1pdHRlZCBzY3JpcHQKLSMgd2lsbCBhc3N1bWUgdGhhdCB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIGl0IGlzIHN0b3JlZCBpcwotIyB0aGUgJG9iamRpciBkaXJlY3RvcnkuICBUaGlzIGlzIGEgY3lnd2luL21pbmd3LXNwZWNpZmljCi0jIGJlaGF2aW9yLgotZnVuY19lbWl0X3dyYXBwZXIgKCkKLXsKLQlmdW5jX2VtaXRfd3JhcHBlcl9hcmcxPW5vCi0JaWYgdGVzdCAtbiAiJDEiIDsgdGhlbgotCSAgZnVuY19lbWl0X3dyYXBwZXJfYXJnMT0kMQotCWZpCi0KLQkjIHNwbGl0IHRoaXMgdXAgc28gdGhhdCBmdW5jX2VtaXRfY3dyYXBwZXJleGVfc3JjCi0JIyBjYW4gY2FsbCBlYWNoIHBhcnQgaW5kZXBlbmRlbnRseS4KLQlmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MSAiJHtmdW5jX2VtaXRfd3JhcHBlcl9hcmcxfSIKLQlmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MiAiJHtmdW5jX2VtaXRfd3JhcHBlcl9hcmcxfSIKLX0KLQotCi0jIGZ1bmNfdG9faG9zdF9wYXRoIGFyZwotIwotIyBDb252ZXJ0IHBhdGhzIHRvIGhvc3QgZm9ybWF0IHdoZW4gdXNlZCB3aXRoIGJ1aWxkIHRvb2xzLgotIyBJbnRlbmRlZCBmb3IgdXNlIHdpdGggIm5hdGl2ZSIgbWluZ3cgKHdoZXJlIGxpYnRvb2wgaXRzZWxmCi0jIGlzIHJ1bm5pbmcgdW5kZXIgdGhlIG1zeXMgc2hlbGwpLCBvciBpbiB0aGUgZm9sbG93aW5nIGNyb3NzLQotIyBidWlsZCBlbnZpcm9ubWVudHM6Ci0jICAgICRidWlsZCAgICAgICAgICAkaG9zdAotIyAgICBtaW5ndyAobXN5cykgICAgbWluZ3cgIFtlLmcuIG5hdGl2ZV0KLSMgICAgY3lnd2luICAgICAgICAgIG1pbmd3Ci0jICAgICpuaXggKyB3aW5lICAgICBtaW5ndwotIyB3aGVyZSB3aW5lIGlzIGVxdWlwcGVkIHdpdGggdGhlIGB3aW5lcGF0aCcgZXhlY3V0YWJsZS4KLSMgSW4gdGhlIG5hdGl2ZSBtaW5ndyBjYXNlLCB0aGUgKG1zeXMpIHNoZWxsIGF1dG9tYXRpY2FsbHkKLSMgY29udmVydHMgcGF0aHMgZm9yIGFueSBub24tbXN5cyBhcHBsaWNhdGlvbnMgaXQgbGF1bmNoZXMsCi0jIGJ1dCB0aGF0IGZhY2lsaXR5IGlzbid0IGF2YWlsYWJsZSBmcm9tIGluc2lkZSB0aGUgY3dyYXBwZXIuCi0jIFNpbWlsYXIgYWNjb21tb2RhdGlvbnMgYXJlIG5lY2Vzc2FyeSBmb3IgJGhvc3QgbWluZ3cgYW5kCi0jICRidWlsZCBjeWd3aW4uICBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gZG9lcyBubyBoYXJtIGZvciBvdGhlcgotIyAkaG9zdC8kYnVpbGQgY29tYmluYXRpb25zIG5vdCBsaXN0ZWQgYWJvdmUuCi0jCi0jIEFSRyBpcyB0aGUgcGF0aCAob24gJGJ1aWxkKSB0aGF0IHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8KLSMgdGhlIHByb3BlciByZXByZXNlbnRhdGlvbiBmb3IgJGhvc3QuIFRoZSByZXN1bHQgaXMgc3RvcmVkCi0jIGluICRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCi1mdW5jX3RvX2hvc3RfcGF0aCAoKQotewotICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgotICBpZiB0ZXN0IC1uICIkMSIgOyB0aGVuCi0gICAgY2FzZSAkaG9zdCBpbgotICAgICAgKm1pbmd3KiApCi0gICAgICAgIGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnk9J3N8XFxcXCp8XFx8ZztzfC98XFx8ZztzfFxcfFxcXFx8ZycKLSAgICAgICAgY2FzZSAkYnVpbGQgaW4KLSAgICAgICAgICAqbWluZ3cqICkgIyBhY3R1YWxseSwgbXN5cwotICAgICAgICAgICAgIyBhd2t3YXJkOiBjbWQgYXBwZW5kcyBzcGFjZXMgdG8gcmVzdWx0Ci0gICAgICAgICAgICBsdF9zZWRfc3RyaXBfdHJhaWxpbmdfc3BhY2VzPSJzL1sgXSpcJC8vIgotICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT1gKCBjbWQgLy9jIGVjaG8gIiQxIiB8XAotICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX3N0cmlwX3RyYWlsaW5nX3NwYWNlcyIgKSAyPi9kZXYvbnVsbCB8fCBlY2hvICIiYAotICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgfFwKLSAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotICAgICAgICAgICAgOzsKLSAgICAgICAgICAqY3lnd2luKiApCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPWBjeWdwYXRoIC13ICIkMSJgCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiB8XAotICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0gICAgICAgICAgICA7OwotICAgICAgICAgICogKQotICAgICAgICAgICAgIyBVbmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2VzIG5vdCBleGl0IHdpdGggYSBub24temVybwotICAgICAgICAgICAgIyBlcnJvciBjb2RlLCBzbyB3ZSBhcmUgZm9yY2VkIHRvIGNoZWNrIHRoZSBjb250ZW50cyBvZgotICAgICAgICAgICAgIyBzdGRvdXQuIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUgY29tbWFuZCBpcyBub3QKLSAgICAgICAgICAgICMgZm91bmQsIHRoZSBzaGVsbCB3aWxsIHNldCBhbiBleGl0IGNvZGUgb2YgMTI3IGFuZCBwcmludAotICAgICAgICAgICAgIyAqYW4gZXJyb3IgbWVzc2FnZSogdG8gc3Rkb3V0LiBTbyB3ZSBtdXN0IGNoZWNrIGZvciBib3RoCi0gICAgICAgICAgICAjIGVycm9yIGNvZGUgb2YgemVybyBBTkQgbm9uLWVtcHR5IHN0ZG91dCwgd2hpY2ggZXhwbGFpbnMKLSAgICAgICAgICAgICMgdGhlIG9kZCBjb25zdHJ1Y3Rpb246Ci0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPWB3aW5lcGF0aCAtdyAiJDEiIDI+L2Rldi9udWxsYAotICAgICAgICAgICAgaWYgdGVzdCAiJD8iIC1lcSAwICYmIHRlc3QgLW4gIiR7ZnVuY190b19ob3N0X3BhdGhfdG1wMX0iOyB0aGVuCi0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiIHxcCi0gICAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAjIEFsbG93IHdhcm5pbmcgYmVsb3cuCi0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iIgotICAgICAgICAgICAgZmkKLSAgICAgICAgICAgIDs7Ci0gICAgICAgIGVzYWMKLSAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIgOyB0aGVuCi0gICAgICAgICAgZnVuY19lcnJvciAiQ291bGQgbm90IGRldGVybWluZSBob3N0IHBhdGggY29ycmVzcG9uZGluZyB0byIKLSAgICAgICAgICBmdW5jX2Vycm9yICIgICckMSciCi0gICAgICAgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCi0gICAgICAgICAgIyBGYWxsYmFjazoKLSAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgotICAgICAgICBmaQotICAgICAgICA7OwotICAgIGVzYWMKLSAgZmkKLX0KLSMgZW5kOiBmdW5jX3RvX2hvc3RfcGF0aAotCi0jIGZ1bmNfdG9faG9zdF9wYXRobGlzdCBhcmcKLSMKLSMgQ29udmVydCBwYXRobGlzdHMgdG8gaG9zdCBmb3JtYXQgd2hlbiB1c2VkIHdpdGggYnVpbGQgdG9vbHMuCi0jIFNlZSBmdW5jX3RvX2hvc3RfcGF0aCgpLCBhYm92ZS4gVGhpcyBmdW5jdGlvbiBzdXBwb3J0cyB0aGUKLSMgZm9sbG93aW5nICRidWlsZC8kaG9zdCBjb21iaW5hdGlvbnMgKGJ1dCBkb2VzIG5vIGhhcm0gZm9yCi0jIGNvbWJpbmF0aW9ucyBub3QgbGlzdGVkIGhlcmUpOgotIyAgICAkYnVpbGQgICAgICAgICAgJGhvc3QKLSMgICAgbWluZ3cgKG1zeXMpICAgIG1pbmd3ICBbZS5nLiBuYXRpdmVdCi0jICAgIGN5Z3dpbiAgICAgICAgICBtaW5ndwotIyAgICAqbml4ICsgd2luZSAgICAgbWluZ3cKLSMKLSMgUGF0aCBzZXBhcmF0b3JzIGFyZSBhbHNvIGNvbnZlcnRlZCBmcm9tICRidWlsZCBmb3JtYXQgdG8KLSMgJGhvc3QgZm9ybWF0LiBJZiBBUkcgYmVnaW5zIG9yIGVuZHMgd2l0aCBhIHBhdGggc2VwYXJhdG9yCi0jIGNoYXJhY3RlciwgaXQgaXMgcHJlc2VydmVkIChidXQgY29udmVydGVkIHRvICRob3N0IGZvcm1hdCkKLSMgb24gb3V0cHV0LgotIwotIyBBUkcgaXMgYSBwYXRobGlzdCAob24gJGJ1aWxkKSB0aGF0IHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8KLSMgdGhlIHByb3BlciByZXByZXNlbnRhdGlvbiBvbiAkaG9zdC4gVGhlIHJlc3VsdCBpcyBzdG9yZWQKLSMgaW4gJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQuCi1mdW5jX3RvX2hvc3RfcGF0aGxpc3QgKCkKLXsKLSAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iJDEiCi0gIGlmIHRlc3QgLW4gIiQxIiA7IHRoZW4KLSAgICBjYXNlICRob3N0IGluCi0gICAgICAqbWluZ3cqICkKLSAgICAgICAgbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeT0nc3xcXFxcKnxcXHxnO3N8L3xcXHxnO3N8XFx8XFxcXHxnJwotICAgICAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20KLSAgICAgICAgIyBBUkcuIG1zeXMgYmVoYXZpb3IgaXMgaW5jb25zaXN0ZW50IGhlcmUsIGN5Z3BhdGggdHVybnMgdGhlbQotICAgICAgICAjIGludG8gJy47JyBhbmQgJzsuJywgYW5kIHdpbmVwYXRoIGlnbm9yZXMgdGhlbSBjb21wbGV0ZWx5LgotICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMj0iJDEiCi0gICAgICAgICMgT25jZSBzZXQgZm9yIHRoaXMgY2FsbCwgdGhpcyB2YXJpYWJsZSBzaG91bGQgbm90IGJlCi0gICAgICAgICMgcmVhc3NpZ25lZC4gSXQgaXMgdXNlZCBpbiB0aGEgZmFsbGJhY2sgY2FzZS4KLSAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDE9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMiIgfFwKLSAgICAgICAgICAkU0VEIC1lICdzfF46Knx8JyAtZSAnc3w6KiR8fCdgCi0gICAgICAgIGNhc2UgJGJ1aWxkIGluCi0gICAgICAgICAgKm1pbmd3KiApICMgQWN0dWFsbHksIG1zeXMuCi0gICAgICAgICAgICAjIEF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQuCi0gICAgICAgICAgICBsdF9zZWRfc3RyaXBfdHJhaWxpbmdfc3BhY2VzPSJzL1sgXSpcJC8vIgotICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDI9YCggY21kIC8vYyBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiIHxcCi0gICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfc3RyaXBfdHJhaWxpbmdfc3BhY2VzIiApIDI+L2Rldi9udWxsIHx8IGVjaG8gIiJgCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDIiIHxcCi0gICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLSAgICAgICAgICAgIDs7Ci0gICAgICAgICAgKmN5Z3dpbiogKQotICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDI9YGN5Z3BhdGggLXcgLXAgIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSJgCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDIiIHxcCi0gICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLSAgICAgICAgICAgIDs7Ci0gICAgICAgICAgKiApCi0gICAgICAgICAgICAjIHVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXNuJ3QgY29udmVydCBwYXRobGlzdHMKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiIKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9vbGRJRlM9JElGUwotICAgICAgICAgICAgSUZTPToKLSAgICAgICAgICAgIGZvciBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfZiBpbiAkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEgOyBkbwotICAgICAgICAgICAgICBJRlM9JGZ1bmNfdG9faG9zdF9wYXRobGlzdF9vbGRJRlMKLSAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIiA7IHRoZW4KLSAgICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aCAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIgotICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiIDsgdGhlbgotICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiIDsgdGhlbgotICAgICAgICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgotICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdDskZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgotICAgICAgICAgICAgICAgICAgZmkKLSAgICAgICAgICAgICAgICBmaQotICAgICAgICAgICAgICBmaQotICAgICAgICAgICAgICBJRlM9OgotICAgICAgICAgICAgZG9uZQotICAgICAgICAgICAgSUZTPSRmdW5jX3RvX2hvc3RfcGF0aGxpc3Rfb2xkSUZTCi0gICAgICAgICAgICA7OwotICAgICAgICBlc2FjCi0gICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IiA7IHRoZW4KLSAgICAgICAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBob3N0IHBhdGgocykgY29ycmVzcG9uZGluZyB0byIKLSAgICAgICAgICBmdW5jX2Vycm9yICIgICckMSciCi0gICAgICAgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCi0gICAgICAgICAgIyBGYWxsYmFjay4gVGhpcyBtYXkgYnJlYWsgaWYgJDEgY29udGFpbnMgRE9TLXN0eWxlIGRyaXZlCi0gICAgICAgICAgIyBzcGVjaWZpY2F0aW9ucy4gVGhlIGZpeCBpcyBub3QgdG8gY29tcGxpY2F0ZSB0aGUgZXhwcmVzc2lvbgotICAgICAgICAgICMgYmVsb3csIGJ1dCBmb3IgdGhlIHVzZXIgdG8gcHJvdmlkZSBhIHdvcmtpbmcgd2luZSBpbnN0YWxsYXRpb24KLSAgICAgICAgICAjIHdpdGggd2luZXBhdGggc28gdGhhdCBwYXRoIHRyYW5zbGF0aW9uIGluIHRoZSBjcm9zcy10by1taW5ndwotICAgICAgICAgICMgY2FzZSB3b3JrcyBwcm9wZXJseS4KLSAgICAgICAgICBsdF9yZXBsYWNlX3BhdGhzZXBfbml4X3RvX2Rvcz0ic3w6fDt8ZyIKLSAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiIHxcCi0gICAgICAgICAgICAkU0VEIC1lICIkbHRfcmVwbGFjZV9wYXRoc2VwX25peF90b19kb3MiYAotICAgICAgICBmaQotICAgICAgICAjIE5vdywgYWRkIHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvcnMgYmFjawotICAgICAgICBjYXNlICIkMSIgaW4KLSAgICAgICAgICA6KiApIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IjskZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCIKLSAgICAgICAgICAgIDs7Ci0gICAgICAgIGVzYWMKLSAgICAgICAgY2FzZSAiJDEiIGluCi0gICAgICAgICAgKjogKSBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdDsiCi0gICAgICAgICAgICA7OwotICAgICAgICBlc2FjCi0gICAgICAgIDs7Ci0gICAgZXNhYwotICBmaQotfQotIyBlbmQ6IGZ1bmNfdG9faG9zdF9wYXRobGlzdAotCiAjIGZ1bmNfZW1pdF9jd3JhcHBlcmV4ZV9zcmMKICMgZW1pdCB0aGUgc291cmNlIGNvZGUgZm9yIGEgd3JhcHBlciBleGVjdXRhYmxlIG9uIHN0ZG91dAogIyBNdXN0IE9OTFkgYmUgY2FsbGVkIGZyb20gd2l0aGluIGZ1bmNfbW9kZV9saW5rIGJlY2F1c2UKQEAgLTMxNDEsMzEgKzQxNDEsMjMgQEAKIAogICAgVGhpcyB3cmFwcGVyIGV4ZWN1dGFibGUgc2hvdWxkIG5ldmVyIGJlIG1vdmVkIG91dCBvZiB0aGUgYnVpbGQgZGlyZWN0b3J5LgogICAgSWYgaXQgaXMsIGl0IHdpbGwgbm90IG9wZXJhdGUgY29ycmVjdGx5LgotCi0gICBDdXJyZW50bHksIGl0IHNpbXBseSBleGVjcyB0aGUgd3JhcHBlciAqc2NyaXB0KiAiJFNIRUxMICRvdXRwdXQiLAotICAgYnV0IGNvdWxkIGV2ZW50dWFsbHkgYWJzb3JiIGFsbCBvZiB0aGUgc2NyaXB0cyBmdW5jdGlvbmFsaXR5IGFuZAotICAgZXhlYyAkb2JqZGlyLyRvdXRwdXRuYW1lIGRpcmVjdGx5LgogKi8KIEVPRgogCSAgICBjYXQgPDwiRU9GIgorI2lmZGVmIF9NU0NfVkVSCisjIGRlZmluZSBfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEUgMQorI2VuZGlmCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpZmRlZiBfTVNDX1ZFUgogIyBpbmNsdWRlIDxkaXJlY3QuaD4KICMgaW5jbHVkZSA8cHJvY2Vzcy5oPgogIyBpbmNsdWRlIDxpby5oPgotIyBkZWZpbmUgc2V0bW9kZSBfc2V0bW9kZQogI2Vsc2UKICMgaW5jbHVkZSA8dW5pc3RkLmg+CiAjIGluY2x1ZGUgPHN0ZGludC5oPgogIyBpZmRlZiBfX0NZR1dJTl9fCiAjICBpbmNsdWRlIDxpby5oPgotIyAgZGVmaW5lIEhBVkVfU0VURU5WCi0jICBpZmRlZiBfX1NUUklDVF9BTlNJX18KLWNoYXIgKnJlYWxwYXRoIChjb25zdCBjaGFyICosIGNoYXIgKik7Ci1pbnQgcHV0ZW52IChjaGFyICopOwotaW50IHNldGVudiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7Ci0jICBlbmRpZgogIyBlbmRpZgogI2VuZGlmCiAjaW5jbHVkZSA8bWFsbG9jLmg+CkBAIC0zMTc3LDYgKzQxNjksNDQgQEAKICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAKKy8qIGRlY2xhcmF0aW9ucyBvZiBub24tQU5TSSBmdW5jdGlvbnMgKi8KKyNpZiBkZWZpbmVkKF9fTUlOR1czMl9fKQorIyBpZmRlZiBfX1NUUklDVF9BTlNJX18KK2ludCBfcHV0ZW52IChjb25zdCBjaGFyICopOworIyBlbmRpZgorI2VsaWYgZGVmaW5lZChfX0NZR1dJTl9fKQorIyBpZmRlZiBfX1NUUklDVF9BTlNJX18KK2NoYXIgKnJlYWxwYXRoIChjb25zdCBjaGFyICosIGNoYXIgKik7CitpbnQgcHV0ZW52IChjaGFyICopOworaW50IHNldGVudiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7CisjIGVuZGlmCisvKiAjZWxpZiBkZWZpbmVkIChvdGhlciBwbGF0Zm9ybXMpIC4uLiAqLworI2VuZGlmCisKKy8qIHBvcnRhYmlsaXR5IGRlZmluZXMsIGV4Y2x1ZGluZyBwYXRoIGhhbmRsaW5nIG1hY3JvcyAqLworI2lmIGRlZmluZWQoX01TQ19WRVIpCisjIGRlZmluZSBzZXRtb2RlIF9zZXRtb2RlCisjIGRlZmluZSBzdGF0ICAgIF9zdGF0CisjIGRlZmluZSBjaG1vZCAgIF9jaG1vZAorIyBkZWZpbmUgZ2V0Y3dkICBfZ2V0Y3dkCisjIGRlZmluZSBwdXRlbnYgIF9wdXRlbnYKKyMgZGVmaW5lIFNfSVhVU1IgX1NfSUVYRUMKKyMgaWZuZGVmIF9JTlRQVFJfVF9ERUZJTkVECisjICBkZWZpbmUgX0lOVFBUUl9UX0RFRklORUQKKyMgIGRlZmluZSBpbnRwdHJfdCBpbnQKKyMgZW5kaWYKKyNlbGlmIGRlZmluZWQoX19NSU5HVzMyX18pCisjIGRlZmluZSBzZXRtb2RlIF9zZXRtb2RlCisjIGRlZmluZSBzdGF0ICAgIF9zdGF0CisjIGRlZmluZSBjaG1vZCAgIF9jaG1vZAorIyBkZWZpbmUgZ2V0Y3dkICBfZ2V0Y3dkCisjIGRlZmluZSBwdXRlbnYgIF9wdXRlbnYKKyNlbGlmIGRlZmluZWQoX19DWUdXSU5fXykKKyMgZGVmaW5lIEhBVkVfU0VURU5WCisjIGRlZmluZSBGT1BFTl9XQiAid2IiCisvKiAjZWxpZiBkZWZpbmVkIChvdGhlciBwbGF0Zm9ybXMpIC4uLiAqLworI2VuZGlmCisKICNpZiBkZWZpbmVkKFBBVEhfTUFYKQogIyBkZWZpbmUgTFRfUEFUSE1BWCBQQVRIX01BWAogI2VsaWYgZGVmaW5lZChNQVhQQVRITEVOKQpAQCAtMzE5MiwxNCArNDIyMiw3IEBACiAjIGRlZmluZSBTX0lYR1JQIDAKICNlbmRpZgogCi0jaWZkZWYgX01TQ19WRVIKLSMgZGVmaW5lIFNfSVhVU1IgX1NfSUVYRUMKLSMgZGVmaW5lIHN0YXQgX3N0YXQKLSMgaWZuZGVmIF9JTlRQVFJfVF9ERUZJTkVECi0jICBkZWZpbmUgaW50cHRyX3QgaW50Ci0jIGVuZGlmCi0jZW5kaWYKLQorLyogcGF0aCBoYW5kbGluZyBwb3J0YWJpbGl0eSBtYWNyb3MgKi8KICNpZm5kZWYgRElSX1NFUEFSQVRPUgogIyBkZWZpbmUgRElSX1NFUEFSQVRPUiAnLycKICMgZGVmaW5lIFBBVEhfU0VQQVJBVE9SICc6JwpAQCAtMzIzMCwxMCArNDI1Myw2IEBACiAjIGRlZmluZSBJU19QQVRIX1NFUEFSQVRPUihjaCkgKChjaCkgPT0gUEFUSF9TRVBBUkFUT1JfMikKICNlbmRpZiAvKiBQQVRIX1NFUEFSQVRPUl8yICovCiAKLSNpZmRlZiBfX0NZR1dJTl9fCi0jIGRlZmluZSBGT1BFTl9XQiAid2IiCi0jZW5kaWYKLQogI2lmbmRlZiBGT1BFTl9XQgogIyBkZWZpbmUgRk9QRU5fV0IgInciCiAjZW5kaWYKQEAgLTMyNDYsMjIgKzQyNjUsMTMgQEAKICAgaWYgKHN0YWxlKSB7IGZyZWUgKCh2b2lkICopIHN0YWxlKTsgc3RhbGUgPSAwOyB9IFwKIH0gd2hpbGUgKDApCiAKLSN1bmRlZiBMVFdSQVBQRVJfREVCVUdQUklOVEYKLSNpZiBkZWZpbmVkIERFQlVHV1JBUFBFUgotIyBkZWZpbmUgTFRXUkFQUEVSX0RFQlVHUFJJTlRGKGFyZ3MpIGx0d3JhcHBlcl9kZWJ1Z3ByaW50ZiBhcmdzCi1zdGF0aWMgdm9pZAotbHR3cmFwcGVyX2RlYnVncHJpbnRmIChjb25zdCBjaGFyICpmbXQsIC4uLikKLXsKLSAgICB2YV9saXN0IGFyZ3M7Ci0gICAgdmFfc3RhcnQgKGFyZ3MsIGZtdCk7Ci0gICAgKHZvaWQpIHZmcHJpbnRmIChzdGRlcnIsIGZtdCwgYXJncyk7Ci0gICAgdmFfZW5kIChhcmdzKTsKLX0KKyNpZiBkZWZpbmVkKExUX0RFQlVHV1JBUFBFUikKK3N0YXRpYyBpbnQgbHRfZGVidWcgPSAxOwogI2Vsc2UKLSMgZGVmaW5lIExUV1JBUFBFUl9ERUJVR1BSSU5URihhcmdzKQorc3RhdGljIGludCBsdF9kZWJ1ZyA9IDA7CiAjZW5kaWYKIAotY29uc3QgY2hhciAqcHJvZ3JhbV9uYW1lID0gTlVMTDsKK2NvbnN0IGNoYXIgKnByb2dyYW1fbmFtZSA9ICJsaWJ0b29sLXdyYXBwZXIiOyAvKiBpbiBjYXNlIHhzdHJkdXAgZmFpbHMgKi8KIAogdm9pZCAqeG1hbGxvYyAoc2l6ZV90IG51bSk7CiBjaGFyICp4c3RyZHVwIChjb25zdCBjaGFyICpzdHJpbmcpOwpAQCAtMzI3MSw0MSArNDI4MSwyNyBAQAogaW50IG1ha2VfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCk7CiBpbnQgY2hlY2tfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCk7CiBjaGFyICpzdHJlbmR6YXAgKGNoYXIgKnN0ciwgY29uc3QgY2hhciAqcGF0KTsKLXZvaWQgbHRfZmF0YWwgKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLik7Cit2b2lkIGx0X2RlYnVncHJpbnRmIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZm10LCAuLi4pOwordm9pZCBsdF9mYXRhbCAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLik7CitzdGF0aWMgY29uc3QgY2hhciAqbm9ubnVsbCAoY29uc3QgY2hhciAqcyk7CitzdGF0aWMgY29uc3QgY2hhciAqbm9uZW1wdHkgKGNvbnN0IGNoYXIgKnMpOwogdm9pZCBsdF9zZXRlbnYgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKTsKIGNoYXIgKmx0X2V4dGVuZF9zdHIgKGNvbnN0IGNoYXIgKm9yaWdfdmFsdWUsIGNvbnN0IGNoYXIgKmFkZCwgaW50IHRvX2VuZCk7Ci12b2lkIGx0X29wdF9wcm9jZXNzX2Vudl9zZXQgKGNvbnN0IGNoYXIgKmFyZyk7Ci12b2lkIGx0X29wdF9wcm9jZXNzX2Vudl9wcmVwZW5kIChjb25zdCBjaGFyICphcmcpOwotdm9pZCBsdF9vcHRfcHJvY2Vzc19lbnZfYXBwZW5kIChjb25zdCBjaGFyICphcmcpOwotaW50IGx0X3NwbGl0X25hbWVfdmFsdWUgKGNvbnN0IGNoYXIgKmFyZywgY2hhcioqIG5hbWUsIGNoYXIqKiB2YWx1ZSk7CiB2b2lkIGx0X3VwZGF0ZV9leGVfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpOwogdm9pZCBsdF91cGRhdGVfbGliX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKTsKLQotc3RhdGljIGNvbnN0IGNoYXIgKnNjcmlwdF90ZXh0X3BhcnQxID0KK2NoYXIgKipwcmVwYXJlX3NwYXduIChjaGFyICoqYXJndik7Cit2b2lkIGx0X2R1bXBfc2NyaXB0IChGSUxFICpmKTsKIEVPRgogCi0JICAgIGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQxIHllcyB8Ci0JICAgICAgICAkU0VEIC1lICdzL1woW1xcIl1cKS9cXFwxL2cnIFwKLQkgICAgICAgICAgICAgLWUgJ3MvXi8gICIvJyAtZSAncy8kL1xcbiIvJwotCSAgICBlY2hvICI7IgogCSAgICBjYXQgPDxFT0YKLQotc3RhdGljIGNvbnN0IGNoYXIgKnNjcmlwdF90ZXh0X3BhcnQyID0KLUVPRgotCSAgICBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MiB5ZXMgfAotCSAgICAgICAgJFNFRCAtZSAncy9cKFtcXCJdXCkvXFxcMS9nJyBcCi0JICAgICAgICAgICAgIC1lICdzL14vICAiLycgLWUgJ3MvJC9cXG4iLycKLQkgICAgZWNobyAiOyIKLQotCSAgICBjYXQgPDxFT0YKLWNvbnN0IGNoYXIgKiBNQUdJQ19FWEUgPSAiJG1hZ2ljX2V4ZSI7Cit2b2xhdGlsZSBjb25zdCBjaGFyICogTUFHSUNfRVhFID0gIiRtYWdpY19leGUiOwogY29uc3QgY2hhciAqIExJQl9QQVRIX1ZBUk5BTUUgPSAiJHNobGlicGF0aF92YXIiOwogRU9GCiAKIAkgICAgaWYgdGVzdCAiJHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCIgPSB5ZXMgJiYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiICYmIHRlc3QgLW4gIiR0ZW1wX3JwYXRoIjsgdGhlbgotICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3QgIiR0ZW1wX3JwYXRoIgorICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aCAiJHRlbXBfcnBhdGgiCiAJICAgICAgY2F0IDw8RU9GCi1jb25zdCBjaGFyICogTElCX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCI7Citjb25zdCBjaGFyICogTElCX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IjsKIEVPRgogCSAgICBlbHNlCiAJICAgICAgY2F0IDw8IkVPRiIKQEAgLTMzMTQsMTAgKzQzMTAsMTAgQEAKIAkgICAgZmkKIAogCSAgICBpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0ICIkZGxsc2VhcmNocGF0aDoiCisgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoICIkZGxsc2VhcmNocGF0aDoiCiAJICAgICAgY2F0IDw8RU9GCiBjb25zdCBjaGFyICogRVhFX1BBVEhfVkFSTkFNRSA9ICJQQVRIIjsKLWNvbnN0IGNoYXIgKiBFWEVfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IjsKK2NvbnN0IGNoYXIgKiBFWEVfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiOwogRU9GCiAJICAgIGVsc2UKIAkgICAgICBjYXQgPDwiRU9GIgpAQCAtMzM0MCwyNCArNDMzNiwxMCBAQAogCSAgICBjYXQgPDwiRU9GIgogCiAjZGVmaW5lIExUV1JBUFBFUl9PUFRJT05fUFJFRklYICAgICAgICAgIi0tbHQtIgotI2RlZmluZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEggIDUKIAotc3RhdGljIGNvbnN0IHNpemVfdCBvcHRfcHJlZml4X2xlbiAgICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIOwogc3RhdGljIGNvbnN0IGNoYXIgKmx0d3JhcHBlcl9vcHRpb25fcHJlZml4ID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVg7Ci0KIHN0YXRpYyBjb25zdCBjaGFyICpkdW1wc2NyaXB0X29wdCAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJkdW1wLXNjcmlwdCI7Ci0KLXN0YXRpYyBjb25zdCBzaXplX3QgZW52X3NldF9vcHRfbGVuICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYX0xFTkdUSCArIDc7Ci1zdGF0aWMgY29uc3QgY2hhciAqZW52X3NldF9vcHQgICAgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAiZW52LXNldCI7Ci0gIC8qIGFyZ3VtZW50IGlzIHB1dGVudi1zdHlsZSAiZm9vPWJhciIsIHZhbHVlIG9mIGZvbyBpcyBzZXQgdG8gYmFyICovCi0KLXN0YXRpYyBjb25zdCBzaXplX3QgZW52X3ByZXBlbmRfb3B0X2xlbiA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYX0xFTkdUSCArIDExOwotc3RhdGljIGNvbnN0IGNoYXIgKmVudl9wcmVwZW5kX29wdCAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImVudi1wcmVwZW5kIjsKLSAgLyogYXJndW1lbnQgaXMgcHV0ZW52LXN0eWxlICJmb289YmFyIiwgbmV3IHZhbHVlIG9mIGZvbyBpcyBiYXIke2Zvb30gKi8KLQotc3RhdGljIGNvbnN0IHNpemVfdCBlbnZfYXBwZW5kX29wdF9sZW4gID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIICsgMTA7Ci1zdGF0aWMgY29uc3QgY2hhciAqZW52X2FwcGVuZF9vcHQgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAiZW52LWFwcGVuZCI7Ci0gIC8qIGFyZ3VtZW50IGlzIHB1dGVudi1zdHlsZSAiZm9vPWJhciIsIG5ldyB2YWx1ZSBvZiBmb28gaXMgJHtmb299YmFyICovCitzdGF0aWMgY29uc3QgY2hhciAqZGVidWdfb3B0ICAgICAgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAiZGVidWciOwogCiBpbnQKIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCkBAIC0zMzc0LDEwICs0MzU2LDEzIEBACiAgIGludCBpOwogCiAgIHByb2dyYW1fbmFtZSA9IChjaGFyICopIHhzdHJkdXAgKGJhc2VfbmFtZSAoYXJndlswXSkpOwotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGFyZ3ZbMF0gICAgICA6ICVzXG4iLCBhcmd2WzBdKSk7Ci0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgcHJvZ3JhbV9uYW1lIDogJXNcbiIsIHByb2dyYW1fbmFtZSkpOworICBuZXdhcmd6ID0gWE1BTExPQyAoY2hhciAqLCBhcmdjICsgMSk7CiAKLSAgLyogdmVyeSBzaW1wbGUgYXJnIHBhcnNpbmc7IGRvbid0IHdhbnQgdG8gcmVseSBvbiBnZXRvcHQgKi8KKyAgLyogdmVyeSBzaW1wbGUgYXJnIHBhcnNpbmc7IGRvbid0IHdhbnQgdG8gcmVseSBvbiBnZXRvcHQKKyAgICogYWxzbywgY29weSBhbGwgbm9uIGN3cmFwcGVyIG9wdGlvbnMgdG8gbmV3YXJneiwgZXhjZXB0CisgICAqIGFyZ3pbMF0sIHdoaWNoIGlzIGhhbmRsZWQgZGlmZmVyZW50bHkKKyAgICovCisgIG5ld2FyZ2M9MDsKICAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKICAgICB7CiAgICAgICBpZiAoc3RyY21wIChhcmd2W2ldLCBkdW1wc2NyaXB0X29wdCkgPT0gMCkKQEAgLTMzOTEsMjUgKzQzNzYsNTcgQEAKIAkgICAgICBlc2FjCiAKIAkgICAgY2F0IDw8IkVPRiIKLQkgIHByaW50ZiAoIiVzIiwgc2NyaXB0X3RleHRfcGFydDEpOwotCSAgcHJpbnRmICgiJXMiLCBzY3JpcHRfdGV4dF9wYXJ0Mik7CisJICBsdF9kdW1wX3NjcmlwdCAoc3Rkb3V0KTsKIAkgIHJldHVybiAwOwogCX0KKyAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbaV0sIGRlYnVnX29wdCkgPT0gMCkKKwl7CisgICAgICAgICAgbHRfZGVidWcgPSAxOworICAgICAgICAgIGNvbnRpbnVlOworCX0KKyAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbaV0sIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4KSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgLyogaG93ZXZlciwgaWYgdGhlcmUgaXMgYW4gb3B0aW9uIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAorICAgICAgICAgICAgIG5hbWVzcGFjZSwgYnV0IGl0IGlzIG5vdCBvbmUgb2YgdGhlIG9uZXMgd2Uga25vdyBhYm91dCBhbmQKKyAgICAgICAgICAgICBoYXZlIGFscmVhZHkgZGVhbHQgd2l0aCwgYWJvdmUgKGlubHVkaW5nIGR1bXAtc2NyaXB0KSwgdGhlbgorICAgICAgICAgICAgIHJlcG9ydCBhbiBlcnJvci4gT3RoZXJ3aXNlLCB0YXJnZXRzIG1pZ2h0IGJlZ2luIHRvIGJlbGlldmUKKyAgICAgICAgICAgICB0aGV5IGFyZSBhbGxvd2VkIHRvIHVzZSBvcHRpb25zIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAorICAgICAgICAgICAgIG5hbWVzcGFjZS4gVGhlIGZpcnN0IHRpbWUgYW55IHVzZXIgY29tcGxhaW5zIGFib3V0IHRoaXMsIHdlJ2xsCisgICAgICAgICAgICAgbmVlZCB0byBtYWtlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYIGEgY29uZmlndXJlLXRpbWUgb3B0aW9uCisgICAgICAgICAgICAgb3IgYSBjb25maWd1cmUuYWMtc2V0dGFibGUgdmFsdWUuCisgICAgICAgICAgICovCisgICAgICAgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywKKwkJICAgICJ1bnJlY29nbml6ZWQgJXMgb3B0aW9uOiAnJXMnIiwKKyAgICAgICAgICAgICAgICAgICAgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgsIGFyZ3ZbaV0pOworICAgICAgICB9CisgICAgICAvKiBvdGhlcndpc2UgLi4uICovCisgICAgICBuZXdhcmd6WysrbmV3YXJnY10gPSB4c3RyZHVwIChhcmd2W2ldKTsKICAgICB9CisgIG5ld2FyZ3pbKytuZXdhcmdjXSA9IE5VTEw7CiAKLSAgbmV3YXJneiA9IFhNQUxMT0MgKGNoYXIgKiwgYXJnYyArIDEpOworRU9GCisJICAgIGNhdCA8PEVPRgorICAvKiBUaGUgR05VIGJhbm5lciBtdXN0IGJlIHRoZSBmaXJzdCBub24tZXJyb3IgZGVidWcgbWVzc2FnZSAqLworICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAibGlidG9vbCB3cmFwcGVyIChHTlUgJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTlxuIik7CitFT0YKKwkgICAgY2F0IDw8IkVPRiIKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBhcmd2WzBdOiAlc1xuIiwgYXJndlswXSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFpbikgcHJvZ3JhbV9uYW1lOiAlc1xuIiwgcHJvZ3JhbV9uYW1lKTsKKwogICB0bXBfcGF0aHNwZWMgPSBmaW5kX2V4ZWN1dGFibGUgKGFyZ3ZbMF0pOwogICBpZiAodG1wX3BhdGhzcGVjID09IE5VTEwpCi0gICAgbHRfZmF0YWwgKCJDb3VsZG4ndCBmaW5kICVzIiwgYXJndlswXSk7Ci0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgZm91bmQgZXhlIChiZWZvcmUgc3ltbGluayBjaGFzZSkgYXQgOiAlc1xuIiwKLQkJCSAgdG1wX3BhdGhzcGVjKSk7CisgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywgImNvdWxkbid0IGZpbmQgJXMiLCBhcmd2WzBdKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKyAgICAgICAgICAgICAgICAgICIobWFpbikgZm91bmQgZXhlIChiZWZvcmUgc3ltbGluayBjaGFzZSkgYXQ6ICVzXG4iLAorCQkgIHRtcF9wYXRoc3BlYyk7CiAKICAgYWN0dWFsX2N3cmFwcGVyX3BhdGggPSBjaGFzZV9zeW1saW5rcyAodG1wX3BhdGhzcGVjKTsKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBmb3VuZCBleGUgKGFmdGVyIHN5bWxpbmsgY2hhc2UpIGF0IDogJXNcbiIsCi0JCQkgIGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisgICAgICAgICAgICAgICAgICAiKG1haW4pIGZvdW5kIGV4ZSAoYWZ0ZXIgc3ltbGluayBjaGFzZSkgYXQ6ICVzXG4iLAorCQkgIGFjdHVhbF9jd3JhcHBlcl9wYXRoKTsKICAgWEZSRUUgKHRtcF9wYXRoc3BlYyk7CiAKLSAgYWN0dWFsX2N3cmFwcGVyX25hbWUgPSB4c3RyZHVwKCBiYXNlX25hbWUgKGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7CisgIGFjdHVhbF9jd3JhcHBlcl9uYW1lID0geHN0cmR1cCAoYmFzZV9uYW1lIChhY3R1YWxfY3dyYXBwZXJfcGF0aCkpOwogICBzdHJlbmR6YXAgKGFjdHVhbF9jd3JhcHBlcl9wYXRoLCBhY3R1YWxfY3dyYXBwZXJfbmFtZSk7CiAKICAgLyogd3JhcHBlciBuYW1lIHRyYW5zZm9ybXMgKi8KQEAgLTM0MjcsOCArNDQ0NCw5IEBACiAgIHRhcmdldF9uYW1lID0gdG1wX3BhdGhzcGVjOwogICB0bXBfcGF0aHNwZWMgPSAwOwogCi0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgbGlidG9vbCB0YXJnZXQgbmFtZTogJXNcbiIsCi0JCQkgIHRhcmdldF9uYW1lKSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisJCSAgIihtYWluKSBsaWJ0b29sIHRhcmdldCBuYW1lOiAlc1xuIiwKKwkJICB0YXJnZXRfbmFtZSk7CiBFT0YKIAogCSAgICBjYXQgPDxFT0YKQEAgLTM0NzgsODAgKzQ0OTYsMTkgQEAKIAogICBsdF9zZXRlbnYgKCJCSU5fU0giLCAieHBnNCIpOyAvKiBmb3IgVHJ1NjQgKi8KICAgbHRfc2V0ZW52ICgiRFVBTENBU0UiLCAiMSIpOyAgLyogZm9yIE1TSyBzaCAqLwotICBsdF91cGRhdGVfbGliX3BhdGggKExJQl9QQVRIX1ZBUk5BTUUsIExJQl9QQVRIX1ZBTFVFKTsKKyAgLyogVXBkYXRlIHRoZSBETEwgc2VhcmNocGF0aC4gIEVYRV9QQVRIX1ZBTFVFICgkZGxsc2VhcmNocGF0aCkgbXVzdAorICAgICBiZSBwcmVwZW5kZWQgYmVmb3JlICh0aGF0IGlzLCBhcHBlYXIgYWZ0ZXIpIExJQl9QQVRIX1ZBTFVFICgkdGVtcF9ycGF0aCkKKyAgICAgYmVjYXVzZSBvbiBXaW5kb3dzLCBib3RoICpfVkFSTkFNRXMgYXJlIFBBVEggYnV0IHVuaW5zdGFsbGVkCisgICAgIGxpYnJhcmllcyBtdXN0IGNvbWUgZmlyc3QuICovCiAgIGx0X3VwZGF0ZV9leGVfcGF0aCAoRVhFX1BBVEhfVkFSTkFNRSwgRVhFX1BBVEhfVkFMVUUpOworICBsdF91cGRhdGVfbGliX3BhdGggKExJQl9QQVRIX1ZBUk5BTUUsIExJQl9QQVRIX1ZBTFVFKTsKIAotICBuZXdhcmdjPTA7Ci0gIGZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspCi0gICAgewotICAgICAgaWYgKHN0cm5jbXAgKGFyZ3ZbaV0sIGVudl9zZXRfb3B0LCBlbnZfc2V0X29wdF9sZW4pID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoYXJndltpXVtlbnZfc2V0X29wdF9sZW5dID09ICc9JykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY29uc3QgY2hhciAqcCA9IGFyZ3ZbaV0gKyBlbnZfc2V0X29wdF9sZW4gKyAxOwotICAgICAgICAgICAgICBsdF9vcHRfcHJvY2Vzc19lbnZfc2V0IChwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmIChhcmd2W2ldW2Vudl9zZXRfb3B0X2xlbl0gPT0gJ1wwJyAmJiBpICsgMSA8IGFyZ2MpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGx0X29wdF9wcm9jZXNzX2Vudl9zZXQgKGFyZ3ZbKytpXSk7IC8qIGRvbid0IGNvcHkgKi8KLSAgICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBsdF9mYXRhbCAoIiVzIG1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQiLCBlbnZfc2V0X29wdCk7Ci0gICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgIGlmIChzdHJuY21wIChhcmd2W2ldLCBlbnZfcHJlcGVuZF9vcHQsIGVudl9wcmVwZW5kX29wdF9sZW4pID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoYXJndltpXVtlbnZfcHJlcGVuZF9vcHRfbGVuXSA9PSAnPScpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnAgPSBhcmd2W2ldICsgZW52X3ByZXBlbmRfb3B0X2xlbiArIDE7Ci0gICAgICAgICAgICAgIGx0X29wdF9wcm9jZXNzX2Vudl9wcmVwZW5kIChwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmIChhcmd2W2ldW2Vudl9wcmVwZW5kX29wdF9sZW5dID09ICdcMCcgJiYgaSArIDEgPCBhcmdjKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBsdF9vcHRfcHJvY2Vzc19lbnZfcHJlcGVuZCAoYXJndlsrK2ldKTsgLyogZG9uJ3QgY29weSAqLwotICAgICAgICAgICAgfQotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGx0X2ZhdGFsICgiJXMgbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudCIsIGVudl9wcmVwZW5kX29wdCk7Ci0gICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgIGlmIChzdHJuY21wIChhcmd2W2ldLCBlbnZfYXBwZW5kX29wdCwgZW52X2FwcGVuZF9vcHRfbGVuKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKGFyZ3ZbaV1bZW52X2FwcGVuZF9vcHRfbGVuXSA9PSAnPScpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnAgPSBhcmd2W2ldICsgZW52X2FwcGVuZF9vcHRfbGVuICsgMTsKLSAgICAgICAgICAgICAgbHRfb3B0X3Byb2Nlc3NfZW52X2FwcGVuZCAocCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSBpZiAoYXJndltpXVtlbnZfYXBwZW5kX29wdF9sZW5dID09ICdcMCcgJiYgaSArIDEgPCBhcmdjKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBsdF9vcHRfcHJvY2Vzc19lbnZfYXBwZW5kIChhcmd2WysraV0pOyAvKiBkb24ndCBjb3B5ICovCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgbHRfZmF0YWwgKCIlcyBtaXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50IiwgZW52X2FwcGVuZF9vcHQpOwotICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICBpZiAoc3RybmNtcCAoYXJndltpXSwgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgsIG9wdF9wcmVmaXhfbGVuKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgLyogaG93ZXZlciwgaWYgdGhlcmUgaXMgYW4gb3B0aW9uIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAotICAgICAgICAgICAgIG5hbWVzcGFjZSwgYnV0IGl0IGlzIG5vdCBvbmUgb2YgdGhlIG9uZXMgd2Uga25vdyBhYm91dCBhbmQKLSAgICAgICAgICAgICBoYXZlIGFscmVhZHkgZGVhbHQgd2l0aCwgYWJvdmUgKGlubHVkaW5nIGR1bXAtc2NyaXB0KSwgdGhlbgotICAgICAgICAgICAgIHJlcG9ydCBhbiBlcnJvci4gT3RoZXJ3aXNlLCB0YXJnZXRzIG1pZ2h0IGJlZ2luIHRvIGJlbGlldmUKLSAgICAgICAgICAgICB0aGV5IGFyZSBhbGxvd2VkIHRvIHVzZSBvcHRpb25zIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAotICAgICAgICAgICAgIG5hbWVzcGFjZS4gVGhlIGZpcnN0IHRpbWUgYW55IHVzZXIgY29tcGxhaW5zIGFib3V0IHRoaXMsIHdlJ2xsCi0gICAgICAgICAgICAgbmVlZCB0byBtYWtlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYIGEgY29uZmlndXJlLXRpbWUgb3B0aW9uCi0gICAgICAgICAgICAgb3IgYSBjb25maWd1cmUuYWMtc2V0dGFibGUgdmFsdWUuCi0gICAgICAgICAgICovCi0gICAgICAgICAgbHRfZmF0YWwgKCJVbnJlY29nbml6ZWQgb3B0aW9uIGluICVzIG5hbWVzcGFjZTogJyVzJyIsCi0gICAgICAgICAgICAgICAgICAgIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4LCBhcmd2W2ldKTsKLSAgICAgICAgfQotICAgICAgLyogb3RoZXJ3aXNlIC4uLiAqLwotICAgICAgbmV3YXJnelsrK25ld2FyZ2NdID0geHN0cmR1cCAoYXJndltpXSk7Ci0gICAgfQotICBuZXdhcmd6WysrbmV3YXJnY10gPSBOVUxMOwotCi0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAgICAgKCgiKG1haW4pIGx0X2FyZ3ZfemVybyA6ICVzXG4iLCAobHRfYXJndl96ZXJvID8gbHRfYXJndl96ZXJvIDogIjxOVUxMPiIpKSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFpbikgbHRfYXJndl96ZXJvOiAlc1xuIiwKKwkJICBub25udWxsIChsdF9hcmd2X3plcm8pKTsKICAgZm9yIChpID0gMDsgaSA8IG5ld2FyZ2M7IGkrKykKICAgICB7Ci0gICAgICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIG5ld2FyZ3pbJWRdICAgOiAlc1xuIiwgaSwgKG5ld2FyZ3pbaV0gPyBuZXdhcmd6W2ldIDogIjxOVUxMPiIpKSk7CisgICAgICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIG5ld2FyZ3pbJWRdOiAlc1xuIiwKKwkJICAgICAgaSwgbm9ubnVsbCAobmV3YXJneltpXSkpOwogICAgIH0KIAogRU9GCkBAIC0zNTYwLDExICs0NTE3LDE0IEBACiAJICAgICAgbWluZ3cqKQogCQljYXQgPDwiRU9GIgogICAvKiBleGVjdiBkb2Vzbid0IGFjdHVhbGx5IHdvcmsgb24gbWluZ3cgYXMgZXhwZWN0ZWQgb24gdW5peCAqLworICBuZXdhcmd6ID0gcHJlcGFyZV9zcGF3biAobmV3YXJneik7CiAgIHJ2YWwgPSBfc3Bhd252IChfUF9XQUlULCBsdF9hcmd2X3plcm8sIChjb25zdCBjaGFyICogY29uc3QgKikgbmV3YXJneik7CiAgIGlmIChydmFsID09IC0xKQogICAgIHsKICAgICAgIC8qIGZhaWxlZCB0byBzdGFydCBwcm9jZXNzICovCi0gICAgICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZhaWxlZCB0byBsYXVuY2ggdGFyZ2V0IFwiJXNcIjogZXJybm8gPSAlZFxuIiwgbHRfYXJndl96ZXJvLCBlcnJubykpOworICAgICAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKwkJICAgICAgIihtYWluKSBmYWlsZWQgdG8gbGF1bmNoIHRhcmdldCBcIiVzXCI6ICVzXG4iLAorCQkgICAgICBsdF9hcmd2X3plcm8sIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKICAgICAgIHJldHVybiAxMjc7CiAgICAgfQogICByZXR1cm4gcnZhbDsKQEAgLTM1ODYsNyArNDU0Niw3IEBACiB7CiAgIHZvaWQgKnAgPSAodm9pZCAqKSBtYWxsb2MgKG51bSk7CiAgIGlmICghcCkKLSAgICBsdF9mYXRhbCAoIk1lbW9yeSBleGhhdXN0ZWQiKTsKKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAibWVtb3J5IGV4aGF1c3RlZCIpOwogCiAgIHJldHVybiBwOwogfQpAQCAtMzYyMCw4ICs0NTgwLDggQEAKIHsKICAgc3RydWN0IHN0YXQgc3Q7CiAKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihjaGVja19leGVjdXRhYmxlKSAgOiAlc1xuIiwKLQkJCSAgcGF0aCA/ICgqcGF0aCA/IHBhdGggOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIoY2hlY2tfZXhlY3V0YWJsZSk6ICVzXG4iLAorICAgICAgICAgICAgICAgICAgbm9uZW1wdHkgKHBhdGgpKTsKICAgaWYgKCghcGF0aCkgfHwgKCEqcGF0aCkpCiAgICAgcmV0dXJuIDA7CiAKQEAgLTM2MzgsOCArNDU5OCw4IEBACiAgIGludCBydmFsID0gMDsKICAgc3RydWN0IHN0YXQgc3Q7CiAKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWtlX2V4ZWN1dGFibGUpICAgOiAlc1xuIiwKLQkJCSAgcGF0aCA/ICgqcGF0aCA/IHBhdGggOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFrZV9leGVjdXRhYmxlKTogJXNcbiIsCisgICAgICAgICAgICAgICAgICBub25lbXB0eSAocGF0aCkpOwogICBpZiAoKCFwYXRoKSB8fCAoISpwYXRoKSkKICAgICByZXR1cm4gMDsKIApAQCAtMzY2NSw4ICs0NjI1LDggQEAKICAgaW50IHRtcF9sZW47CiAgIGNoYXIgKmNvbmNhdF9uYW1lOwogCi0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIoZmluZF9leGVjdXRhYmxlKSAgIDogJXNcbiIsCi0JCQkgIHdyYXBwZXIgPyAoKndyYXBwZXIgPyB3cmFwcGVyIDogIkVNUFRZISIpIDogIk5VTEwhIikpOworICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKGZpbmRfZXhlY3V0YWJsZSk6ICVzXG4iLAorICAgICAgICAgICAgICAgICAgbm9uZW1wdHkgKHdyYXBwZXIpKTsKIAogICBpZiAoKHdyYXBwZXIgPT0gTlVMTCkgfHwgKCp3cmFwcGVyID09ICdcMCcpKQogICAgIHJldHVybiBOVUxMOwpAQCAtMzcxOSw3ICs0Njc5LDggQEAKIAkJewogCQkgIC8qIGVtcHR5IHBhdGg6IGN1cnJlbnQgZGlyZWN0b3J5ICovCiAJCSAgaWYgKGdldGN3ZCAodG1wLCBMVF9QQVRITUFYKSA9PSBOVUxMKQotCQkgICAgbHRfZmF0YWwgKCJnZXRjd2QgZmFpbGVkIik7CisJCSAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiZ2V0Y3dkIGZhaWxlZDogJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOwogCQkgIHRtcF9sZW4gPSBzdHJsZW4gKHRtcCk7CiAJCSAgY29uY2F0X25hbWUgPQogCQkgICAgWE1BTExPQyAoY2hhciwgdG1wX2xlbiArIDEgKyBzdHJsZW4gKHdyYXBwZXIpICsgMSk7CkBAIC0zNzQ0LDcgKzQ3MDUsOCBAQAogICAgIH0KICAgLyogUmVsYXRpdmUgcGF0aCB8IG5vdCBmb3VuZCBpbiBwYXRoOiBwcmVwZW5kIGN3ZCAqLwogICBpZiAoZ2V0Y3dkICh0bXAsIExUX1BBVEhNQVgpID09IE5VTEwpCi0gICAgbHRfZmF0YWwgKCJnZXRjd2QgZmFpbGVkIik7CisgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywgImdldGN3ZCBmYWlsZWQ6ICVzIiwKKyAgICAgICAgICAgICAgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOwogICB0bXBfbGVuID0gc3RybGVuICh0bXApOwogICBjb25jYXRfbmFtZSA9IFhNQUxMT0MgKGNoYXIsIHRtcF9sZW4gKyAxICsgc3RybGVuICh3cmFwcGVyKSArIDEpOwogICBtZW1jcHkgKGNvbmNhdF9uYW1lLCB0bXAsIHRtcF9sZW4pOwpAQCAtMzc3MCw4ICs0NzMyLDkgQEAKICAgaW50IGhhc19zeW1saW5rcyA9IDA7CiAgIHdoaWxlIChzdHJsZW4gKHRtcF9wYXRoc3BlYykgJiYgIWhhc19zeW1saW5rcykKICAgICB7Ci0gICAgICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiY2hlY2tpbmcgcGF0aCBjb21wb25lbnQgZm9yIHN5bWxpbmtzOiAlc1xuIiwKLQkJCSAgICAgIHRtcF9wYXRoc3BlYykpOworICAgICAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKwkJICAgICAgImNoZWNraW5nIHBhdGggY29tcG9uZW50IGZvciBzeW1saW5rczogJXNcbiIsCisJCSAgICAgIHRtcF9wYXRoc3BlYyk7CiAgICAgICBpZiAobHN0YXQgKHRtcF9wYXRoc3BlYywgJnMpID09IDApCiAJewogCSAgaWYgKFNfSVNMTksgKHMuc3RfbW9kZSkgIT0gMCkKQEAgLTM3OTMsOCArNDc1Niw5IEBACiAJfQogICAgICAgZWxzZQogCXsKLQkgIGNoYXIgKmVycnN0ciA9IHN0cmVycm9yIChlcnJubyk7Ci0JICBsdF9mYXRhbCAoIkVycm9yIGFjY2Vzc2luZyBmaWxlICVzICglcykiLCB0bXBfcGF0aHNwZWMsIGVycnN0cik7CisJICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLAorCQkgICAgImVycm9yIGFjY2Vzc2luZyBmaWxlIFwiJXNcIjogJXMiLAorCQkgICAgdG1wX3BhdGhzcGVjLCBub25udWxsIChzdHJlcnJvciAoZXJybm8pKSk7CiAJfQogICAgIH0KICAgWEZSRUUgKHRtcF9wYXRoc3BlYyk7CkBAIC0zODA3LDcgKzQ3NzEsOCBAQAogICB0bXBfcGF0aHNwZWMgPSByZWFscGF0aCAocGF0aHNwZWMsIGJ1Zik7CiAgIGlmICh0bXBfcGF0aHNwZWMgPT0gMCkKICAgICB7Ci0gICAgICBsdF9mYXRhbCAoIkNvdWxkIG5vdCBmb2xsb3cgc3ltbGlua3MgZm9yICVzIiwgcGF0aHNwZWMpOworICAgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywKKwkJImNvdWxkIG5vdCBmb2xsb3cgc3ltbGlua3MgZm9yICVzIiwgcGF0aHNwZWMpOwogICAgIH0KICAgcmV0dXJuIHhzdHJkdXAgKHRtcF9wYXRoc3BlYyk7CiAjZW5kaWYKQEAgLTM4MzMsMTEgKzQ3OTgsMjUgQEAKICAgcmV0dXJuIHN0cjsKIH0KIAordm9pZAorbHRfZGVidWdwcmludGYgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKyAgdmFfbGlzdCBhcmdzOworICBpZiAobHRfZGVidWcpCisgICAgeworICAgICAgKHZvaWQpIGZwcmludGYgKHN0ZGVyciwgIiVzOiVzOiVkOiAiLCBwcm9ncmFtX25hbWUsIGZpbGUsIGxpbmUpOworICAgICAgdmFfc3RhcnQgKGFyZ3MsIGZtdCk7CisgICAgICAodm9pZCkgdmZwcmludGYgKHN0ZGVyciwgZm10LCBhcmdzKTsKKyAgICAgIHZhX2VuZCAoYXJncyk7CisgICAgfQorfQorCiBzdGF0aWMgdm9pZAotbHRfZXJyb3JfY29yZSAoaW50IGV4aXRfc3RhdHVzLCBjb25zdCBjaGFyICptb2RlLAorbHRfZXJyb3JfY29yZSAoaW50IGV4aXRfc3RhdHVzLCBjb25zdCBjaGFyICpmaWxlLAorCSAgICAgICBpbnQgbGluZSwgY29uc3QgY2hhciAqbW9kZSwKIAkgICAgICAgY29uc3QgY2hhciAqbWVzc2FnZSwgdmFfbGlzdCBhcCkKIHsKLSAgZnByaW50ZiAoc3RkZXJyLCAiJXM6ICVzOiAiLCBwcm9ncmFtX25hbWUsIG1vZGUpOworICBmcHJpbnRmIChzdGRlcnIsICIlczolczolZDogJXM6ICIsIHByb2dyYW1fbmFtZSwgZmlsZSwgbGluZSwgbW9kZSk7CiAgIHZmcHJpbnRmIChzdGRlcnIsIG1lc3NhZ2UsIGFwKTsKICAgZnByaW50ZiAoc3RkZXJyLCAiLlxuIik7CiAKQEAgLTM4NDYsMjAgKzQ4MjUsMzIgQEAKIH0KIAogdm9pZAotbHRfZmF0YWwgKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLikKK2x0X2ZhdGFsIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKQogewogICB2YV9saXN0IGFwOwogICB2YV9zdGFydCAoYXAsIG1lc3NhZ2UpOwotICBsdF9lcnJvcl9jb3JlIChFWElUX0ZBSUxVUkUsICJGQVRBTCIsIG1lc3NhZ2UsIGFwKTsKKyAgbHRfZXJyb3JfY29yZSAoRVhJVF9GQUlMVVJFLCBmaWxlLCBsaW5lLCAiRkFUQUwiLCBtZXNzYWdlLCBhcCk7CiAgIHZhX2VuZCAoYXApOwogfQogCitzdGF0aWMgY29uc3QgY2hhciAqCitub25udWxsIChjb25zdCBjaGFyICpzKQoreworICByZXR1cm4gcyA/IHMgOiAiKG51bGwpIjsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKgorbm9uZW1wdHkgKGNvbnN0IGNoYXIgKnMpCit7CisgIHJldHVybiAocyAmJiAhKnMpID8gIihlbXB0eSkiIDogbm9ubnVsbCAocyk7Cit9CisKIHZvaWQKIGx0X3NldGVudiAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCiB7Ci0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobHRfc2V0ZW52KSBzZXR0aW5nICclcycgdG8gJyVzJ1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgPyBuYW1lIDogIjxOVUxMPiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPyB2YWx1ZSA6ICI8TlVMTD4iKSkpOworICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorCQkgICIobHRfc2V0ZW52KSBzZXR0aW5nICclcycgdG8gJyVzJ1xuIiwKKyAgICAgICAgICAgICAgICAgIG5vbm51bGwgKG5hbWUpLCBub25udWxsICh2YWx1ZSkpOwogICB7CiAjaWZkZWYgSEFWRV9TRVRFTlYKICAgICAvKiBhbHdheXMgbWFrZSBhIGNvcHksIGZvciBjb25zaXN0ZW5jeSB3aXRoICFIQVZFX1NFVEVOViAqLwpAQCAtMzkwNCw5NSArNDg5NSwxMiBAQAogICByZXR1cm4gbmV3X3ZhbHVlOwogfQogCi1pbnQKLWx0X3NwbGl0X25hbWVfdmFsdWUgKGNvbnN0IGNoYXIgKmFyZywgY2hhcioqIG5hbWUsIGNoYXIqKiB2YWx1ZSkKLXsKLSAgY29uc3QgY2hhciAqcDsKLSAgaW50IGxlbjsKLSAgaWYgKCFhcmcgfHwgISphcmcpCi0gICAgcmV0dXJuIDE7Ci0KLSAgcCA9IHN0cmNociAoYXJnLCAoaW50KSc9Jyk7Ci0KLSAgaWYgKCFwKQotICAgIHJldHVybiAxOwotCi0gICp2YWx1ZSA9IHhzdHJkdXAgKCsrcCk7Ci0KLSAgbGVuID0gc3RybGVuIChhcmcpIC0gc3RybGVuICgqdmFsdWUpOwotICAqbmFtZSA9IFhNQUxMT0MgKGNoYXIsIGxlbik7Ci0gIHN0cm5jcHkgKCpuYW1lLCBhcmcsIGxlbi0xKTsKLSAgKCpuYW1lKVtsZW4gLSAxXSA9ICdcMCc7Ci0KLSAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQKLWx0X29wdF9wcm9jZXNzX2Vudl9zZXQgKGNvbnN0IGNoYXIgKmFyZykKLXsKLSAgY2hhciAqbmFtZSA9IE5VTEw7Ci0gIGNoYXIgKnZhbHVlID0gTlVMTDsKLQotICBpZiAobHRfc3BsaXRfbmFtZV92YWx1ZSAoYXJnLCAmbmFtZSwgJnZhbHVlKSAhPSAwKQotICAgIHsKLSAgICAgIFhGUkVFIChuYW1lKTsKLSAgICAgIFhGUkVFICh2YWx1ZSk7Ci0gICAgICBsdF9mYXRhbCAoImJhZCBhcmd1bWVudCBmb3IgJXM6ICclcyciLCBlbnZfc2V0X29wdCwgYXJnKTsKLSAgICB9Ci0KLSAgbHRfc2V0ZW52IChuYW1lLCB2YWx1ZSk7Ci0gIFhGUkVFIChuYW1lKTsKLSAgWEZSRUUgKHZhbHVlKTsKLX0KLQotdm9pZAotbHRfb3B0X3Byb2Nlc3NfZW52X3ByZXBlbmQgKGNvbnN0IGNoYXIgKmFyZykKLXsKLSAgY2hhciAqbmFtZSA9IE5VTEw7Ci0gIGNoYXIgKnZhbHVlID0gTlVMTDsKLSAgY2hhciAqbmV3X3ZhbHVlID0gTlVMTDsKLQotICBpZiAobHRfc3BsaXRfbmFtZV92YWx1ZSAoYXJnLCAmbmFtZSwgJnZhbHVlKSAhPSAwKQotICAgIHsKLSAgICAgIFhGUkVFIChuYW1lKTsKLSAgICAgIFhGUkVFICh2YWx1ZSk7Ci0gICAgICBsdF9mYXRhbCAoImJhZCBhcmd1bWVudCBmb3IgJXM6ICclcyciLCBlbnZfcHJlcGVuZF9vcHQsIGFyZyk7Ci0gICAgfQotCi0gIG5ld192YWx1ZSA9IGx0X2V4dGVuZF9zdHIgKGdldGVudiAobmFtZSksIHZhbHVlLCAwKTsKLSAgbHRfc2V0ZW52IChuYW1lLCBuZXdfdmFsdWUpOwotICBYRlJFRSAobmV3X3ZhbHVlKTsKLSAgWEZSRUUgKG5hbWUpOwotICBYRlJFRSAodmFsdWUpOwotfQotCi12b2lkCi1sdF9vcHRfcHJvY2Vzc19lbnZfYXBwZW5kIChjb25zdCBjaGFyICphcmcpCi17Ci0gIGNoYXIgKm5hbWUgPSBOVUxMOwotICBjaGFyICp2YWx1ZSA9IE5VTEw7Ci0gIGNoYXIgKm5ld192YWx1ZSA9IE5VTEw7Ci0KLSAgaWYgKGx0X3NwbGl0X25hbWVfdmFsdWUgKGFyZywgJm5hbWUsICZ2YWx1ZSkgIT0gMCkKLSAgICB7Ci0gICAgICBYRlJFRSAobmFtZSk7Ci0gICAgICBYRlJFRSAodmFsdWUpOwotICAgICAgbHRfZmF0YWwgKCJiYWQgYXJndW1lbnQgZm9yICVzOiAnJXMnIiwgZW52X2FwcGVuZF9vcHQsIGFyZyk7Ci0gICAgfQotCi0gIG5ld192YWx1ZSA9IGx0X2V4dGVuZF9zdHIgKGdldGVudiAobmFtZSksIHZhbHVlLCAxKTsKLSAgbHRfc2V0ZW52IChuYW1lLCBuZXdfdmFsdWUpOwotICBYRlJFRSAobmV3X3ZhbHVlKTsKLSAgWEZSRUUgKG5hbWUpOwotICBYRlJFRSAodmFsdWUpOwotfQotCiB2b2lkCiBsdF91cGRhdGVfZXhlX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQogewotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3VwZGF0ZV9leGVfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHZhbHVlIDogIjxOVUxMPiIpKSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisJCSAgIihsdF91cGRhdGVfZXhlX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKKyAgICAgICAgICAgICAgICAgIG5vbm51bGwgKG5hbWUpLCBub25udWxsICh2YWx1ZSkpOwogCiAgIGlmIChuYW1lICYmICpuYW1lICYmIHZhbHVlICYmICp2YWx1ZSkKICAgICB7CkBAIC00MDExLDkgKzQ5MTksOSBAQAogdm9pZAogbHRfdXBkYXRlX2xpYl9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKIHsKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihsdF91cGRhdGVfbGliX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgPyBuYW1lIDogIjxOVUxMPiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPyB2YWx1ZSA6ICI8TlVMTD4iKSkpOworICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorCQkgICIobHRfdXBkYXRlX2xpYl9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCisgICAgICAgICAgICAgICAgICBub25udWxsIChuYW1lKSwgbm9ubnVsbCAodmFsdWUpKTsKIAogICBpZiAobmFtZSAmJiAqbmFtZSAmJiB2YWx1ZSAmJiAqdmFsdWUpCiAgICAgewpAQCAtNDAyMywxMSArNDkzMSwxNTIgQEAKICAgICB9CiB9CiAKK0VPRgorCSAgICBjYXNlICRob3N0X29zIGluCisJICAgICAgbWluZ3cqKQorCQljYXQgPDwiRU9GIgogCisvKiBQcmVwYXJlcyBhbiBhcmd1bWVudCB2ZWN0b3IgYmVmb3JlIGNhbGxpbmcgc3Bhd24oKS4KKyAgIE5vdGUgdGhhdCBzcGF3bigpIGRvZXMgbm90IGJ5IGl0c2VsZiBjYWxsIHRoZSBjb21tYW5kIGludGVycHJldGVyCisgICAgIChnZXRlbnYgKCJDT01TUEVDIikgIT0gTlVMTCA/IGdldGVudiAoIkNPTVNQRUMiKSA6CisgICAgICAoeyBPU1ZFUlNJT05JTkZPIHY7IHYuZHdPU1ZlcnNpb25JbmZvU2l6ZSA9IHNpemVvZihPU1ZFUlNJT05JTkZPKTsKKyAgICAgICAgIEdldFZlcnNpb25FeCgmdik7CisgICAgICAgICB2LmR3UGxhdGZvcm1JZCA9PSBWRVJfUExBVEZPUk1fV0lOMzJfTlQ7CisgICAgICB9KSA/ICJjbWQuZXhlIiA6ICJjb21tYW5kLmNvbSIpLgorICAgSW5zdGVhZCBpdCBzaW1wbHkgY29uY2F0ZW5hdGVzIHRoZSBhcmd1bWVudHMsIHNlcGFyYXRlZCBieSAnICcsIGFuZCBjYWxscworICAgQ3JlYXRlUHJvY2VzcygpLiAgV2UgbXVzdCBxdW90ZSB0aGUgYXJndW1lbnRzIHNpbmNlIFdpbjMyIENyZWF0ZVByb2Nlc3MoKQorICAgaW50ZXJwcmV0cyBjaGFyYWN0ZXJzIGxpa2UgJyAnLCAnXHQnLCAnXFwnLCAnIicgKGJ1dCBub3QgJzwnIGFuZCAnPicpIGluIGEKKyAgIHNwZWNpYWwgd2F5OgorICAgLSBTcGFjZSBhbmQgdGFiIGFyZSBpbnRlcnByZXRlZCBhcyBkZWxpbWl0ZXJzLiBUaGV5IGFyZSBub3QgdHJlYXRlZCBhcworICAgICBkZWxpbWl0ZXJzIGlmIHRoZXkgYXJlIHN1cnJvdW5kZWQgYnkgZG91YmxlIHF1b3RlczogIi4uLiIuCisgICAtIFVuZXNjYXBlZCBkb3VibGUgcXVvdGVzIGFyZSByZW1vdmVkIGZyb20gdGhlIGlucHV0LiBUaGVpciBvbmx5IGVmZmVjdCBpcworICAgICB0aGF0IHdpdGhpbiBkb3VibGUgcXVvdGVzLCBzcGFjZSBhbmQgdGFiIGFyZSB0cmVhdGVkIGxpa2Ugbm9ybWFsCisgICAgIGNoYXJhY3RlcnMuCisgICAtIEJhY2tzbGFzaGVzIG5vdCBmb2xsb3dlZCBieSBkb3VibGUgcXVvdGVzIGFyZSBub3Qgc3BlY2lhbC4KKyAgIC0gQnV0IDIqbisxIGJhY2tzbGFzaGVzIGZvbGxvd2VkIGJ5IGEgZG91YmxlIHF1b3RlIGJlY29tZQorICAgICBuIGJhY2tzbGFzaGVzIGZvbGxvd2VkIGJ5IGEgZG91YmxlIHF1b3RlIChuID49IDApOgorICAgICAgIFwiIC0+ICIKKyAgICAgICBcXFwiIC0+IFwiCisgICAgICAgXFxcXFwiIC0+IFxcIgorICovCisjZGVmaW5lIFNIRUxMX1NQRUNJQUxfQ0hBUlMgIlwiXFwgXDAwMVwwMDJcMDAzXDAwNFwwMDVcMDA2XDAwN1wwMTBcMDExXDAxMlwwMTNcMDE0XDAxNVwwMTZcMDE3XDAyMFwwMjFcMDIyXDAyM1wwMjRcMDI1XDAyNlwwMjdcMDMwXDAzMVwwMzJcMDMzXDAzNFwwMzVcMDM2XDAzNyIKKyNkZWZpbmUgU0hFTExfU1BBQ0VfQ0hBUlMgIiBcMDAxXDAwMlwwMDNcMDA0XDAwNVwwMDZcMDA3XDAxMFwwMTFcMDEyXDAxM1wwMTRcMDE1XDAxNlwwMTdcMDIwXDAyMVwwMjJcMDIzXDAyNFwwMjVcMDI2XDAyN1wwMzBcMDMxXDAzMlwwMzNcMDM0XDAzNVwwMzZcMDM3IgorY2hhciAqKgorcHJlcGFyZV9zcGF3biAoY2hhciAqKmFyZ3YpCit7CisgIHNpemVfdCBhcmdjOworICBjaGFyICoqbmV3X2FyZ3Y7CisgIHNpemVfdCBpOworCisgIC8qIENvdW50IG51bWJlciBvZiBhcmd1bWVudHMuICAqLworICBmb3IgKGFyZ2MgPSAwOyBhcmd2W2FyZ2NdICE9IE5VTEw7IGFyZ2MrKykKKyAgICA7CisKKyAgLyogQWxsb2NhdGUgbmV3IGFyZ3VtZW50IHZlY3Rvci4gICovCisgIG5ld19hcmd2ID0gWE1BTExPQyAoY2hhciAqLCBhcmdjICsgMSk7CisKKyAgLyogUHV0IHF1b3RlZCBhcmd1bWVudHMgaW50byB0aGUgbmV3IGFyZ3VtZW50IHZlY3Rvci4gICovCisgIGZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspCisgICAgeworICAgICAgY29uc3QgY2hhciAqc3RyaW5nID0gYXJndltpXTsKKworICAgICAgaWYgKHN0cmluZ1swXSA9PSAnXDAnKQorCW5ld19hcmd2W2ldID0geHN0cmR1cCAoIlwiXCIiKTsKKyAgICAgIGVsc2UgaWYgKHN0cnBicmsgKHN0cmluZywgU0hFTExfU1BFQ0lBTF9DSEFSUykgIT0gTlVMTCkKKwl7CisJICBpbnQgcXVvdGVfYXJvdW5kID0gKHN0cnBicmsgKHN0cmluZywgU0hFTExfU1BBQ0VfQ0hBUlMpICE9IE5VTEwpOworCSAgc2l6ZV90IGxlbmd0aDsKKwkgIHVuc2lnbmVkIGludCBiYWNrc2xhc2hlczsKKwkgIGNvbnN0IGNoYXIgKnM7CisJICBjaGFyICpxdW90ZWRfc3RyaW5nOworCSAgY2hhciAqcDsKKworCSAgbGVuZ3RoID0gMDsKKwkgIGJhY2tzbGFzaGVzID0gMDsKKwkgIGlmIChxdW90ZV9hcm91bmQpCisJICAgIGxlbmd0aCsrOworCSAgZm9yIChzID0gc3RyaW5nOyAqcyAhPSAnXDAnOyBzKyspCisJICAgIHsKKwkgICAgICBjaGFyIGMgPSAqczsKKwkgICAgICBpZiAoYyA9PSAnIicpCisJCWxlbmd0aCArPSBiYWNrc2xhc2hlcyArIDE7CisJICAgICAgbGVuZ3RoKys7CisJICAgICAgaWYgKGMgPT0gJ1xcJykKKwkJYmFja3NsYXNoZXMrKzsKKwkgICAgICBlbHNlCisJCWJhY2tzbGFzaGVzID0gMDsKKwkgICAgfQorCSAgaWYgKHF1b3RlX2Fyb3VuZCkKKwkgICAgbGVuZ3RoICs9IGJhY2tzbGFzaGVzICsgMTsKKworCSAgcXVvdGVkX3N0cmluZyA9IFhNQUxMT0MgKGNoYXIsIGxlbmd0aCArIDEpOworCisJICBwID0gcXVvdGVkX3N0cmluZzsKKwkgIGJhY2tzbGFzaGVzID0gMDsKKwkgIGlmIChxdW90ZV9hcm91bmQpCisJICAgICpwKysgPSAnIic7CisJICBmb3IgKHMgPSBzdHJpbmc7ICpzICE9ICdcMCc7IHMrKykKKwkgICAgeworCSAgICAgIGNoYXIgYyA9ICpzOworCSAgICAgIGlmIChjID09ICciJykKKwkJeworCQkgIHVuc2lnbmVkIGludCBqOworCQkgIGZvciAoaiA9IGJhY2tzbGFzaGVzICsgMTsgaiA+IDA7IGotLSkKKwkJICAgICpwKysgPSAnXFwnOworCQl9CisJICAgICAgKnArKyA9IGM7CisJICAgICAgaWYgKGMgPT0gJ1xcJykKKwkJYmFja3NsYXNoZXMrKzsKKwkgICAgICBlbHNlCisJCWJhY2tzbGFzaGVzID0gMDsKKwkgICAgfQorCSAgaWYgKHF1b3RlX2Fyb3VuZCkKKwkgICAgeworCSAgICAgIHVuc2lnbmVkIGludCBqOworCSAgICAgIGZvciAoaiA9IGJhY2tzbGFzaGVzOyBqID4gMDsgai0tKQorCQkqcCsrID0gJ1xcJzsKKwkgICAgICAqcCsrID0gJyInOworCSAgICB9CisJICAqcCA9ICdcMCc7CisKKwkgIG5ld19hcmd2W2ldID0gcXVvdGVkX3N0cmluZzsKKwl9CisgICAgICBlbHNlCisJbmV3X2FyZ3ZbaV0gPSAoY2hhciAqKSBzdHJpbmc7CisgICAgfQorICBuZXdfYXJndlthcmdjXSA9IE5VTEw7CisKKyAgcmV0dXJuIG5ld19hcmd2OworfQorRU9GCisJCTs7CisJICAgIGVzYWMKKworICAgICAgICAgICAgY2F0IDw8IkVPRiIKK3ZvaWQgbHRfZHVtcF9zY3JpcHQgKEZJTEUqIGYpCit7CitFT0YKKwkgICAgZnVuY19lbWl0X3dyYXBwZXIgeWVzIHwKKyAgICAgICAgICAgICAgJFNFRCAtZSAncy9cKFtcXCJdXCkvXFxcMS9nJyBcCisJICAgICAgICAgICAtZSAncy9eLyAgZnB1dHMgKCIvJyAtZSAncy8kL1xcbiIsIGYpOy8nCisKKyAgICAgICAgICAgIGNhdCA8PCJFT0YiCit9CiBFT0YKIH0KICMgZW5kOiBmdW5jX2VtaXRfY3dyYXBwZXJleGVfc3JjCiAKKyMgZnVuY193aW4zMl9pbXBvcnRfbGliX3AgQVJHCisjIFRydWUgaWYgQVJHIGlzIGFuIGltcG9ydCBsaWIsIGFzIGluZGljYXRlZCBieSAkZmlsZV9tYWdpY19jbWQKK2Z1bmNfd2luMzJfaW1wb3J0X2xpYl9wICgpCit7CisgICAgJG9wdF9kZWJ1ZworICAgIGNhc2UgYGV2YWwgJGZpbGVfbWFnaWNfY21kIFwiXCQxXCIgMj4vZGV2L251bGwgfCAkU0VEIC1lIDEwcWAgaW4KKyAgICAqaW1wb3J0KikgOiA7OworICAgICopIGZhbHNlIDs7CisgICAgZXNhYworfQorCiAjIGZ1bmNfbW9kZV9saW5rIGFyZy4uLgogZnVuY19tb2RlX2xpbmsgKCkKIHsKQEAgLTQwNzIsNiArNTEyMSw3IEBACiAgICAgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9CiAKICAgICBhdm9pZF92ZXJzaW9uPW5vCisgICAgYmluZGlyPQogICAgIGRsZmlsZXM9CiAgICAgZGxwcmVmaWxlcz0KICAgICBkbHNlbGY9bm8KQEAgLTQxNjQsNiArNTIxNCwxMSBAQAogCWVzYWMKIAogCWNhc2UgJHByZXYgaW4KKwliaW5kaXIpCisJICBiaW5kaXI9IiRhcmciCisJICBwcmV2PQorCSAgY29udGludWUKKwkgIDs7CiAJZGxmaWxlc3xkbHByZWZpbGVzKQogCSAgaWYgdGVzdCAiJHByZWxvYWQiID0gbm87IHRoZW4KIAkgICAgIyBBZGQgdGhlIHN5bWJvbCBvYmplY3QgaW50byB0aGUgbGlua2luZyBjb21tYW5kcy4KQEAgLTQxOTUsOSArNTI1MCw5IEBACiAJICAgIDs7CiAJICAqKQogCSAgICBpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCi0JICAgICAgZGxmaWxlcz0iJGRsZmlsZXMgJGFyZyIKKwkgICAgICBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGFyZyIKIAkgICAgZWxzZQotCSAgICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRhcmciCisJICAgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRhcmciCiAJICAgIGZpCiAJICAgIHByZXY9CiAJICAgIGNvbnRpbnVlCkBAIC00MjIxLDcgKzUyNzYsNyBAQAogCSAgICAqLSotZGFyd2luKikKIAkgICAgICBjYXNlICIkZGVwbGlicyAiIGluCiAJCSoiICRxYXJnLmx0ZnJhbWV3b3JrICIqKSA7OwotCQkqKSBkZXBsaWJzPSIkZGVwbGlicyAkcWFyZy5sdGZyYW1ld29yayIgIyB0aGlzIGlzIGZpeGVkIGxhdGVyCisJCSopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkcWFyZy5sdGZyYW1ld29yayIgIyB0aGlzIGlzIGZpeGVkIGxhdGVyCiAJCSAgIDs7CiAJICAgICAgZXNhYwogCSAgICAgIDs7CkBAIC00MjQwLDcgKzUyOTUsNyBAQAogCSAgICBtb3JlYXJncz0KIAkgICAgZm9yIGZpbCBpbiBgY2F0ICIkc2F2ZV9hcmciYAogCSAgICBkbwotIwkgICAgICBtb3JlYXJncz0iJG1vcmVhcmdzICRmaWwiCisjCSAgICAgIGZ1bmNfYXBwZW5kIG1vcmVhcmdzICIgJGZpbCIKIAkgICAgICBhcmc9JGZpbAogCSAgICAgICMgQSBsaWJ0b29sLWNvbnRyb2xsZWQgb2JqZWN0LgogCkBAIC00MjY5LDcgKzUzMjQsNyBAQAogCiAJCSAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgogCQkgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiA9IHllczsgdGhlbgotCQkgICAgICBkbGZpbGVzPSIkZGxmaWxlcyAkcGljX29iamVjdCIKKwkJICAgICAgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRwaWNfb2JqZWN0IgogCQkgICAgICBwcmV2PQogCQkgICAgICBjb250aW51ZQogCQkgICAgZWxzZQpAQCAtNDI4MSw3ICs1MzM2LDcgQEAKIAkJICAjIENIRUNLIE1FOiAgSSB0aGluayBJIGJ1c3RlZCB0aGlzLiAgLU9zc2FtYQogCQkgIGlmIHRlc3QgIiRwcmV2IiA9IGRscHJlZmlsZXM7IHRoZW4KIAkJICAgICMgUHJlbG9hZCB0aGUgb2xkLXN0eWxlIG9iamVjdC4KLQkJICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRwaWNfb2JqZWN0IgorCQkgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRwaWNfb2JqZWN0IgogCQkgICAgcHJldj0KIAkJICBmaQogCkBAIC00MzUxLDEyICs1NDA2LDEyIEBACiAJICBpZiB0ZXN0ICIkcHJldiIgPSBycGF0aDsgdGhlbgogCSAgICBjYXNlICIkcnBhdGggIiBpbgogCSAgICAqIiAkYXJnICIqKSA7OwotCSAgICAqKSBycGF0aD0iJHJwYXRoICRhcmciIDs7CisJICAgICopIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGFyZyIgOzsKIAkgICAgZXNhYwogCSAgZWxzZQogCSAgICBjYXNlICIkeHJwYXRoICIgaW4KIAkgICAgKiIgJGFyZyAiKikgOzsKLQkgICAgKikgeHJwYXRoPSIkeHJwYXRoICRhcmciIDs7CisJICAgICopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICRhcmciIDs7CiAJICAgIGVzYWMKIAkgIGZpCiAJICBwcmV2PQpAQCAtNDM2OCwyOCArNTQyMywyOCBAQAogCSAgY29udGludWUKIAkgIDs7CiAJd2VhaykKLQkgIHdlYWtfbGlicz0iJHdlYWtfbGlicyAkYXJnIgorCSAgZnVuY19hcHBlbmQgd2Vha19saWJzICIgJGFyZyIKIAkgIHByZXY9CiAJICBjb250aW51ZQogCSAgOzsKIAl4Y2NsaW5rZXIpCi0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJHFhcmciCi0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRxYXJnIgorCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJHFhcmciCisJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRxYXJnIgogCSAgcHJldj0KIAkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRxYXJnIgogCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRxYXJnIgogCSAgY29udGludWUKIAkgIDs7CiAJeGNvbXBpbGVyKQotCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkcWFyZyIKKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHFhcmciCiAJICBwcmV2PQogCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHFhcmciCiAJICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHFhcmciCiAJICBjb250aW51ZQogCSAgOzsKIAl4bGlua2VyKQotCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRxYXJnIgotCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkd2wkcWFyZyIKKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRxYXJnIgorCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkd2wkcWFyZyIKIAkgIHByZXY9CiAJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkd2wkcWFyZyIKIAkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkd2wkcWFyZyIKQEAgLTQ0MjUsNiArNTQ4MCwxMSBAQAogCWNvbnRpbnVlCiAJOzsKIAorICAgICAgLWJpbmRpcikKKwlwcmV2PWJpbmRpcgorCWNvbnRpbnVlCisJOzsKKwogICAgICAgLWRsb3BlbikKIAlwcmV2PWRsZmlsZXMKIAljb250aW51ZQpAQCAtNDQ3NSwxNSArNTUzNSwxNiBAQAogCTs7CiAKICAgICAgIC1MKikKLQlmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkYXJnIgotCWRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0JaWYgdGVzdCAteiAiJGRpciI7IHRoZW4KKwlmdW5jX3N0cmlwbmFtZSAiLUwiICcnICIkYXJnIgorCWlmIHRlc3QgLXogIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiOyB0aGVuCiAJICBpZiB0ZXN0ICIkIyIgLWd0IDA7IHRoZW4KIAkgICAgZnVuY19mYXRhbF9lcnJvciAicmVxdWlyZSBubyBzcGFjZSBiZXR3ZWVuIFxgLUwnIGFuZCBcYCQxJyIKIAkgIGVsc2UKIAkgICAgZnVuY19mYXRhbF9lcnJvciAibmVlZCBwYXRoIGZvciBcYC1MJyBvcHRpb24iCiAJICBmaQogCWZpCisJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJZGlyPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKIAkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KIAljYXNlICRkaXIgaW4KIAlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIDs7CkBAIC00NDk1LDI0ICs1NTU2LDMwIEBACiAJICA7OwogCWVzYWMKIAljYXNlICIkZGVwbGlicyAiIGluCi0JKiIgLUwkZGlyICIqKSA7OworCSoiIC1MJGRpciAiKiB8ICoiICRhcmcgIiopCisJICAjIFdpbGwgb25seSBoYXBwZW4gZm9yIGFic29sdXRlIG9yIHN5c3Jvb3QgYXJndW1lbnRzCisJICA7OwogCSopCi0JICBkZXBsaWJzPSIkZGVwbGlicyAtTCRkaXIiCi0JICBsaWJfc2VhcmNoX3BhdGg9IiRsaWJfc2VhcmNoX3BhdGggJGRpciIKKwkgICMgUHJlc2VydmUgc3lzcm9vdCwgYnV0IG5ldmVyIGluY2x1ZGUgcmVsYXRpdmUgZGlyZWN0b3JpZXMKKwkgIGNhc2UgJGRpciBpbgorCSAgICBbXFwvXSogfCBbQS1aYS16XTpbXFwvXSogfCA9KikgZnVuY19hcHBlbmQgZGVwbGlicyAiICRhcmciIDs7CisJICAgICopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAtTCRkaXIiIDs7CisJICBlc2FjCisJICBmdW5jX2FwcGVuZCBsaWJfc2VhcmNoX3BhdGggIiAkZGlyIgogCSAgOzsKIAllc2FjCiAJY2FzZSAkaG9zdCBpbgogCSotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1vczIqIHwgKi1jZWdjYyopCi0JICB0ZXN0YmluZGlyPWAkRUNITyAiWCRkaXIiIHwgJFhzZWQgLWUgJ3MqL2xpYiQqL2JpbionYAorCSAgdGVzdGJpbmRpcj1gJEVDSE8gIiRkaXIiIHwgJFNFRCAncyovbGliJCovYmluKidgCiAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KIAkgICoiOiRkaXI6IiopIDs7CiAJICA6OikgZGxsc2VhcmNocGF0aD0kZGlyOzsKLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiRkaXIiOzsKKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokZGlyIjs7CiAJICBlc2FjCiAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KIAkgICoiOiR0ZXN0YmluZGlyOiIqKSA7OwogCSAgOjopIGRsbHNlYXJjaHBhdGg9JHRlc3RiaW5kaXI7OwotCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JHRlc3RiaW5kaXIiOzsKKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokdGVzdGJpbmRpciI7OwogCSAgZXNhYwogCSAgOzsKIAllc2FjCkBAIC00NTIyLDcgKzU1ODksNyBAQAogICAgICAgLWwqKQogCWlmIHRlc3QgIlgkYXJnIiA9ICJYLWxjIiB8fCB0ZXN0ICJYJGFyZyIgPSAiWC1sbSI7IHRoZW4KIAkgIGNhc2UgJGhvc3QgaW4KLQkgICotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1iZW9zKiB8ICotY2VnY2MqKQorCSAgKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLWJlb3MqIHwgKi1jZWdjYyogfCAqLSotaGFpa3UqKQogCSAgICAjIFRoZXNlIHN5c3RlbXMgZG9uJ3QgYWN0dWFsbHkgaGF2ZSBhIEMgb3IgbWF0aCBsaWJyYXJ5IChhcyBzdWNoKQogCSAgICBjb250aW51ZQogCSAgICA7OwpAQCAtNDUzNiw3ICs1NjAzLDcgQEAKIAkgICAgOzsKIAkgICotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKIAkgICAgIyBSaGFwc29keSBDIGFuZCBtYXRoIGxpYnJhcmllcyBhcmUgaW4gdGhlIFN5c3RlbSBmcmFtZXdvcmsKLQkgICAgZGVwbGlicz0iJGRlcGxpYnMgU3lzdGVtLmx0ZnJhbWV3b3JrIgorCSAgICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgU3lzdGVtLmx0ZnJhbWV3b3JrIgogCSAgICBjb250aW51ZQogCSAgICA7OwogCSAgKi0qLXNjbzMuMnY1KiB8ICotKi1zY281djYqKQpAQCAtNDU1Niw3ICs1NjIzLDcgQEAKIAkgICA7OwogCSBlc2FjCiAJZmkKLQlkZXBsaWJzPSIkZGVwbGlicyAkYXJnIgorCWZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkYXJnIgogCWNvbnRpbnVlCiAJOzsKIApAQCAtNDU2OCwyMSArNTYzNSwyMSBAQAogICAgICAgIyBUcnU2NCBVTklYIHVzZXMgLW1vZGVsIFthcmddIHRvIGRldGVybWluZSB0aGUgbGF5b3V0IG9mIEMrKwogICAgICAgIyBjbGFzc2VzLCBuYW1lIG1hbmdsaW5nLCBhbmQgZXhjZXB0aW9uIGhhbmRsaW5nLgogICAgICAgIyBEYXJ3aW4gdXNlcyB0aGUgLWFyY2ggZmxhZyB0byBkZXRlcm1pbmUgb3V0cHV0IGFyY2hpdGVjdHVyZS4KLSAgICAgIC1tb2RlbHwtYXJjaHwtaXN5c3Jvb3QpCi0JY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgorICAgICAgLW1vZGVsfC1hcmNofC1pc3lzcm9vdHwtLXN5c3Jvb3QpCisJZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkYXJnIgogCWZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCiAJZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCiAJcHJldj14Y29tcGlsZXIKIAljb250aW51ZQogCTs7CiAKLSAgICAgIC1tdHwtbXRocmVhZHN8LWt0aHJlYWR8LUt0aHJlYWR8LXB0aHJlYWR8LXB0aHJlYWRzfC0tdGhyZWFkLXNhZmV8LXRocmVhZHN8LWZzdGFjay1wcm90ZWN0b3IqKQotCWNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGFyZyIKKyAgICAgIC1tdHwtbXRocmVhZHN8LWt0aHJlYWR8LUt0aHJlYWR8LXB0aHJlYWR8LXB0aHJlYWRzfC0tdGhyZWFkLXNhZmV8LXRocmVhZHMpCisJZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkYXJnIgogCWZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCiAJZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCiAJY2FzZSAiJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KIAkgICAgKiIgJGFyZyAiKikgOzsKLQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGFyZyIgOzsKKwkgICAgKiApIGZ1bmNfYXBwZW5kIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgJGFyZyIgOzsKIAllc2FjCiAJY29udGludWUKIAk7OwpAQCAtNDY0OSwxMyArNTcxNiwxNyBAQAogCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgogCWNhc2UgJGRpciBpbgogCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKKwk9KikKKwkgIGZ1bmNfc3RyaXBuYW1lICc9JyAnJyAiJGRpciIKKwkgIGRpcj0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKwkgIDs7CiAJKikKIAkgIGZ1bmNfZmF0YWxfZXJyb3IgIm9ubHkgYWJzb2x1dGUgcnVuLXBhdGhzIGFyZSBhbGxvd2VkIgogCSAgOzsKIAllc2FjCiAJY2FzZSAiJHhycGF0aCAiIGluCiAJKiIgJGRpciAiKikgOzsKLQkqKSB4cnBhdGg9IiR4cnBhdGggJGRpciIgOzsKKwkqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkZGlyIiA7OwogCWVzYWMKIAljb250aW51ZQogCTs7CkBAIC00NzA4LDggKzU3NzksOCBAQAogCWZvciBmbGFnIGluICRhcmdzOyBkbwogCSAgSUZTPSIkc2F2ZV9pZnMiCiAgICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZsYWciCi0JICBhcmc9IiRhcmcgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisJICBmdW5jX2FwcGVuZCBhcmcgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKIAlkb25lCiAJSUZTPSIkc2F2ZV9pZnMiCiAJZnVuY19zdHJpcG5hbWUgJyAnICcnICIkYXJnIgpAQCAtNDcyNCw5ICs1Nzk1LDkgQEAKIAlmb3IgZmxhZyBpbiAkYXJnczsgZG8KIAkgIElGUz0iJHNhdmVfaWZzIgogICAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRmbGFnIgotCSAgYXJnPSIkYXJnICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwkgIGZ1bmNfYXBwZW5kIGFyZyAiICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogCWRvbmUKIAlJRlM9IiRzYXZlX2lmcyIKIAlmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRhcmciCkBAIC00NzU0LDIzICs1ODI1LDI4IEBACiAJYXJnPSIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCiAJOzsKIAotICAgICAgIyAtNjQsIC1taXBzWzAtOV0gZW5hYmxlIDY0LWJpdCBtb2RlIG9uIHRoZSBTR0kgY29tcGlsZXIKLSAgICAgICMgLXJbMC05XVswLTldKiBzcGVjaWZpZXMgdGhlIHByb2Nlc3NvciBvbiB0aGUgU0dJIGNvbXBpbGVyCi0gICAgICAjIC14YXJjaD0qLCAteHRhcmdldD0qIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgU3VuIGNvbXBpbGVyCi0gICAgICAjICtEQSosICtERCogZW5hYmxlIDY0LWJpdCBtb2RlIG9uIHRoZSBIUCBjb21waWxlcgotICAgICAgIyAtcSogcGFzcyB0aHJvdWdoIGNvbXBpbGVyIGFyZ3MgZm9yIHRoZSBJQk0gY29tcGlsZXIKLSAgICAgICMgLW0qLCAtdFs0NV0qLCAtdHhzY2FsZSogcGFzcyB0aHJvdWdoIGFyY2hpdGVjdHVyZS1zcGVjaWZpYwotICAgICAgIyBjb21waWxlciBhcmdzIGZvciBHQ0MKLSAgICAgICMgLUYvcGF0aCBnaXZlcyBwYXRoIHRvIHVuaW5zdGFsbGVkIGZyYW1ld29ya3MsIGdjYyBvbiBkYXJ3aW4KLSAgICAgICMgLXAsIC1wZywgLS1jb3ZlcmFnZSwgLWZwcm9maWxlLSogcGFzcyB0aHJvdWdoIHByb2ZpbGluZyBmbGFnIGZvciBHQ0MKLSAgICAgICMgQGZpbGUgR0NDIHJlc3BvbnNlIGZpbGVzCisgICAgICAjIEZsYWdzIHRvIGJlIHBhc3NlZCB0aHJvdWdoIHVuY2hhbmdlZCwgd2l0aCByYXRpb25hbGU6CisgICAgICAjIC02NCwgLW1pcHNbMC05XSAgICAgIGVuYWJsZSA2NC1iaXQgbW9kZSBmb3IgdGhlIFNHSSBjb21waWxlcgorICAgICAgIyAtclswLTldWzAtOV0qICAgICAgICBzcGVjaWZ5IHByb2Nlc3NvciBmb3IgdGhlIFNHSSBjb21waWxlcgorICAgICAgIyAteGFyY2g9KiwgLXh0YXJnZXQ9KiBlbmFibGUgNjQtYml0IG1vZGUgZm9yIHRoZSBTdW4gY29tcGlsZXIKKyAgICAgICMgK0RBKiwgK0REKiAgICAgICAgICAgZW5hYmxlIDY0LWJpdCBtb2RlIGZvciB0aGUgSFAgY29tcGlsZXIKKyAgICAgICMgLXEqICAgICAgICAgICAgICAgICAgY29tcGlsZXIgYXJncyBmb3IgdGhlIElCTSBjb21waWxlcgorICAgICAgIyAtbSosIC10WzQ1XSosIC10eHNjYWxlKiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZmxhZ3MgZm9yIEdDQworICAgICAgIyAtRi9wYXRoICAgICAgICAgICAgICBwYXRoIHRvIHVuaW5zdGFsbGVkIGZyYW1ld29ya3MsIGdjYyBvbiBkYXJ3aW4KKyAgICAgICMgLXAsIC1wZywgLS1jb3ZlcmFnZSwgLWZwcm9maWxlLSogIHByb2ZpbGluZyBmbGFncyBmb3IgR0NDCisgICAgICAjIC1mc3RhY2stcHJvdGVjdG9yKiAgIHN0YWNrIHByb3RlY3RvciBmbGFncyBmb3IgR0NDCisgICAgICAjIEBmaWxlICAgICAgICAgICAgICAgIEdDQyByZXNwb25zZSBmaWxlcworICAgICAgIyAtdHA9KiAgICAgICAgICAgICAgICBQb3J0bGFuZCBwZ2NjIHRhcmdldCBwcm9jZXNzb3Igc2VsZWN0aW9uCisgICAgICAjIC0tc3lzcm9vdD0qICAgICAgICAgIGZvciBzeXNyb290IHN1cHBvcnQKKyAgICAgICMgLU8qLCAtZmx0byosIC1md2hvcHIqLCAtZnVzZS1saW5rZXItcGx1Z2luIEdDQyBsaW5rLXRpbWUgb3B0aW1pemF0aW9uCiAgICAgICAtNjR8LW1pcHNbMC05XXwtclswLTldWzAtOV0qfC14YXJjaD0qfC14dGFyZ2V0PSp8K0RBKnwrREQqfC1xKnwtbSp8IFwKLSAgICAgIC10WzQ1XSp8LXR4c2NhbGUqfC1wfC1wZ3wtLWNvdmVyYWdlfC1mcHJvZmlsZS0qfC1GKnxAKikKKyAgICAgIC10WzQ1XSp8LXR4c2NhbGUqfC1wfC1wZ3wtLWNvdmVyYWdlfC1mcHJvZmlsZS0qfC1GKnxAKnwtdHA9KnwtLXN5c3Jvb3Q9KnwgXAorICAgICAgLU8qfC1mbHRvKnwtZndob3ByKnwtZnVzZS1saW5rZXItcGx1Z2lufC1mc3RhY2stcHJvdGVjdG9yKikKICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKIAlhcmc9IiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKICAgICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKICAgICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCi0gICAgICAgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGFyZyIKKyAgICAgICAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkYXJnIgogICAgICAgICBjb250aW51ZQogICAgICAgICA7OwogCkBAIC00NzgyLDcgKzU4NTgsNyBAQAogCiAgICAgICAqLiRvYmpleHQpCiAJIyBBIHN0YW5kYXJkIG9iamVjdC4KLQlvYmpzPSIkb2JqcyAkYXJnIgorCWZ1bmNfYXBwZW5kIG9ianMgIiAkYXJnIgogCTs7CiAKICAgICAgICoubG8pCkBAIC00ODEzLDcgKzU4ODksNyBAQAogCiAJICAgIGlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KIAkgICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllcyAmJiB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiID0geWVzOyB0aGVuCi0JCWRsZmlsZXM9IiRkbGZpbGVzICRwaWNfb2JqZWN0IgorCQlmdW5jX2FwcGVuZCBkbGZpbGVzICIgJHBpY19vYmplY3QiCiAJCXByZXY9CiAJCWNvbnRpbnVlCiAJICAgICAgZWxzZQpAQCAtNDgyNSw3ICs1OTAxLDcgQEAKIAkgICAgIyBDSEVDSyBNRTogIEkgdGhpbmsgSSBidXN0ZWQgdGhpcy4gIC1Pc3NhbWEKIAkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxwcmVmaWxlczsgdGhlbgogCSAgICAgICMgUHJlbG9hZCB0aGUgb2xkLXN0eWxlIG9iamVjdC4KLQkgICAgICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkcGljX29iamVjdCIKKwkgICAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJHBpY19vYmplY3QiCiAJICAgICAgcHJldj0KIAkgICAgZmkKIApAQCAtNDg3MCwyNCArNTk0NiwyNSBAQAogCiAgICAgICAqLiRsaWJleHQpCiAJIyBBbiBhcmNoaXZlLgotCWRlcGxpYnM9IiRkZXBsaWJzICRhcmciCi0Jb2xkX2RlcGxpYnM9IiRvbGRfZGVwbGlicyAkYXJnIgorCWZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkYXJnIgorCWZ1bmNfYXBwZW5kIG9sZF9kZXBsaWJzICIgJGFyZyIKIAljb250aW51ZQogCTs7CiAKICAgICAgICoubGEpCiAJIyBBIGxpYnRvb2wtY29udHJvbGxlZCBsaWJyYXJ5LgogCisJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRhcmciCiAJaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgogCSAgIyBUaGlzIGxpYnJhcnkgd2FzIHNwZWNpZmllZCB3aXRoIC1kbG9wZW4uCi0JICBkbGZpbGVzPSIkZGxmaWxlcyAkYXJnIgorCSAgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCiAJICBwcmV2PQogCWVsaWYgdGVzdCAiJHByZXYiID0gZGxwcmVmaWxlczsgdGhlbgogCSAgIyBUaGUgbGlicmFyeSB3YXMgc3BlY2lmaWVkIHdpdGggLWRscHJlb3Blbi4KLQkgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRhcmciCisJICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKIAkgIHByZXY9CiAJZWxzZQotCSAgZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKKwkgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgogCWZpCiAJY29udGludWUKIAk7OwpAQCAtNDkyNSw3ICs2MDAyLDcgQEAKIAogICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgogICAgICAgIyBnZXQgdGhlIGRpcmVjdG9yaWVzIGxpc3RlZCBpbiAkc2hsaWJwYXRoX3ZhcgotICAgICAgZXZhbCBzaGxpYl9zZWFyY2hfcGF0aD1cYFwkRUNITyBcIlhcJHskc2hsaWJwYXRoX3Zhcn1cIiBcfCBcJFhzZWQgLWUgXCdzLzovIC9nXCdcYAorICAgICAgZXZhbCBzaGxpYl9zZWFyY2hfcGF0aD1cYFwkRUNITyBcIlwkeyRzaGxpYnBhdGhfdmFyfVwiIFx8IFwkU0VEIFwncy86LyAvZ1wnXGAKICAgICBlbHNlCiAgICAgICBzaGxpYl9zZWFyY2hfcGF0aD0KICAgICBmaQpAQCAtNDkzNCw2ICs2MDExLDggQEAKIAogICAgIGZ1bmNfZGlybmFtZSAiJG91dHB1dCIgIi8iICIiCiAgICAgb3V0cHV0X29iamRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkb2JqZGlyIgorICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0X29iamRpci8iCisgICAgdG9vbF9vdXRwdXRfb2JqZGlyPSRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKICAgICAjIENyZWF0ZSB0aGUgb2JqZWN0IGRpcmVjdG9yeS4KICAgICBmdW5jX21rZGlyX3AgIiRvdXRwdXRfb2JqZGlyIgogCkBAIC00OTU0LDEyICs2MDMzLDEyIEBACiAgICAgIyBGaW5kIGFsbCBpbnRlcmRlcGVuZGVudCBkZXBsaWJzIGJ5IHNlYXJjaGluZyBmb3IgbGlicmFyaWVzCiAgICAgIyB0aGF0IGFyZSBsaW5rZWQgbW9yZSB0aGFuIG9uY2UgKGUuZy4gLWxhIC1sYiAtbGEpCiAgICAgZm9yIGRlcGxpYiBpbiAkZGVwbGliczsgZG8KLSAgICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCisgICAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgogCWNhc2UgIiRsaWJzICIgaW4KLQkqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CisJKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OwogCWVzYWMKICAgICAgIGZpCi0gICAgICBsaWJzPSIkbGlicyAkZGVwbGliIgorICAgICAgZnVuY19hcHBlbmQgbGlicyAiICRkZXBsaWIiCiAgICAgZG9uZQogCiAgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYjsgdGhlbgpAQCAtNDk3Miw5ICs2MDUxLDkgQEAKICAgICAgIGlmICRvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzOyB0aGVuCiAJZm9yIHByZV9wb3N0X2RlcCBpbiAkcHJlZGVwcyAkcG9zdGRlcHM7IGRvCiAJICBjYXNlICIkcHJlX3Bvc3RfZGVwcyAiIGluCi0JICAqIiAkcHJlX3Bvc3RfZGVwICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRwcmVfcG9zdF9kZXBzIiA7OworCSAgKiIgJHByZV9wb3N0X2RlcCAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkcHJlX3Bvc3RfZGVwcyIgOzsKIAkgIGVzYWMKLQkgIHByZV9wb3N0X2RlcHM9IiRwcmVfcG9zdF9kZXBzICRwcmVfcG9zdF9kZXAiCisJICBmdW5jX2FwcGVuZCBwcmVfcG9zdF9kZXBzICIgJHByZV9wb3N0X2RlcCIKIAlkb25lCiAgICAgICBmaQogICAgICAgcHJlX3Bvc3RfZGVwcz0KQEAgLTUwNDEsMTcgKzYxMjAsMTkgQEAKIAlmb3IgbGliIGluICRkbHByZWZpbGVzOyBkbwogCSAgIyBJZ25vcmUgbm9uLWxpYnRvb2wtbGlicwogCSAgZGVwZW5kZW5jeV9saWJzPQorCSAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRsaWIiCiAJICBjYXNlICRsaWIgaW4KLQkgICoubGEpCWZ1bmNfc291cmNlICIkbGliIiA7OworCSAgKi5sYSkJZnVuY19zb3VyY2UgIiRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiIDs7CiAJICBlc2FjCiAKIAkgICMgQ29sbGVjdCBwcmVvcGVuZWQgbGlidG9vbCBkZXBsaWJzLCBleGNlcHQgYW55IHRoaXMgbGlicmFyeQogCSAgIyBoYXMgZGVjbGFyZWQgYXMgd2VhayBsaWJzCiAJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCi0gICAgICAgICAgICBkZXBsaWJfYmFzZT1gJEVDSE8gIlgkZGVwbGliIiB8ICRYc2VkIC1lICIkYmFzZW5hbWUiYAorCSAgICBmdW5jX2Jhc2VuYW1lICIkZGVwbGliIgorICAgICAgICAgICAgZGVwbGliX2Jhc2U9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CiAJICAgIGNhc2UgIiAkd2Vha19saWJzICIgaW4KIAkgICAgKiIgJGRlcGxpYl9iYXNlICIqKSA7OwotCSAgICAqKSBkZXBsaWJzPSIkZGVwbGlicyAkZGVwbGliIiA7OworCSAgICAqKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGRlcGxpYiIgOzsKIAkgICAgZXNhYwogCSAgZG9uZQogCWRvbmUKQEAgLTUwNzIsMTEgKzYxNTMsMTEgQEAKIAkgICAgY29tcGlsZV9kZXBsaWJzPSIkZGVwbGliICRjb21waWxlX2RlcGxpYnMiCiAJICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCiAJICBlbHNlCi0JICAgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYiIKKwkgICAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkZGVwbGliIgogCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliIDsgdGhlbgogCQljYXNlICIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgogCQkgICAgKiIgJGRlcGxpYiAiKikgOzsKLQkJICAgICogKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRkZXBsaWIiIDs7CisJCSAgICAqICkgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkZGVwbGliIiA7OwogCQllc2FjCiAJICAgIGZpCiAJICBmaQpAQCAtNTE2MSw3ICs2MjQyLDcgQEAKIAkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYiA7IHRoZW4KIAkJY2FzZSAiJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KIAkJICAgICoiICRkZXBsaWIgIiopIDs7Ci0JCSAgICAqICkgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkZGVwbGliIiA7OworCQkgICAgKiApIGZ1bmNfYXBwZW5kIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgJGRlcGxpYiIgOzsKIAkJZXNhYwogCSAgICBmaQogCSAgZmkKQEAgLTUxNzQsNyArNjI1NSw4IEBACiAJICAgIHRlc3QgIiRwYXNzIiA9IGNvbnYgJiYgY29udGludWUKIAkgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCiAJICAgIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCi0JICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorCSAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkgICAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKIAkgICAgOzsKIAkgIHByb2cpCiAJICAgIGlmIHRlc3QgIiRwYXNzIiA9IGNvbnY7IHRoZW4KQEAgLTUxODgsNyArNjI3MCw4IEBACiAJICAgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKIAkgICAgZmkKIAkgICAgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKLQkgICAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorCSAgICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgogCSAgICA7OwogCSAgKikKIAkgICAgZnVuY193YXJuaW5nICJcYC1MJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcy9vYmplY3RzIgpAQCAtNTE5OSwxNyArNjI4MiwyMSBAQAogCS1SKikKIAkgIGlmIHRlc3QgIiRwYXNzIiA9IGxpbms7IHRoZW4KIAkgICAgZnVuY19zdHJpcG5hbWUgJy1SJyAnJyAiJGRlcGxpYiIKLQkgICAgZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKwkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJICAgIGRpcj0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CiAJICAgICMgTWFrZSBzdXJlIHRoZSB4cnBhdGggY29udGFpbnMgb25seSB1bmlxdWUgZGlyZWN0b3JpZXMuCiAJICAgIGNhc2UgIiR4cnBhdGggIiBpbgogCSAgICAqIiAkZGlyICIqKSA7OwotCSAgICAqKSB4cnBhdGg9IiR4cnBhdGggJGRpciIgOzsKKwkgICAgKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJGRpciIgOzsKIAkgICAgZXNhYwogCSAgZmkKIAkgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCiAJICBjb250aW51ZQogCSAgOzsKLQkqLmxhKSBsaWI9IiRkZXBsaWIiIDs7CisJKi5sYSkKKwkgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIgorCSAgbGliPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKwkgIDs7CiAJKi4kbGliZXh0KQogCSAgaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgogCSAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgpAQCAtNTIyNyw3ICs2MzE0LDcgQEAKIAkJbWF0Y2hfcGF0dGVybiopCiAJCSAgc2V0IGR1bW15ICRkZXBsaWJzX2NoZWNrX21ldGhvZDsgc2hpZnQKIAkJICBtYXRjaF9wYXR0ZXJuX3JlZ2V4PWBleHByICIkZGVwbGlic19jaGVja19tZXRob2QiIDogIiQxIFwoLipcKSJgCi0JCSAgaWYgZXZhbCAiXCRFQ0hPIFwiWCRkZXBsaWJcIiIgMj4vZGV2L251bGwgfCAkWHNlZCAtZSAxMHEgXAorCQkgIGlmIGV2YWwgIlwkRUNITyBcIiRkZXBsaWJcIiIgMj4vZGV2L251bGwgfCAkU0VEIDEwcSBcCiAJCSAgICB8ICRFR1JFUCAiJG1hdGNoX3BhdHRlcm5fcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCiAJCSAgICB2YWxpZF9hX2xpYj15ZXMKIAkJICBmaQpAQCAtNTIzNywxNSArNjMyNCwxNSBAQAogCQk7OwogCSAgICAgIGVzYWMKIAkgICAgICBpZiB0ZXN0ICIkdmFsaWRfYV9saWIiICE9IHllczsgdGhlbgotCQkkRUNITworCQllY2hvCiAJCSRFQ0hPICIqKiogV2FybmluZzogVHJ5aW5nIHRvIGxpbmsgd2l0aCBzdGF0aWMgbGliIGFyY2hpdmUgJGRlcGxpYi4iCi0JCSRFQ0hPICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgotCQkkRUNITyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKLQkJJEVDSE8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKLQkJJEVDSE8gIioqKiBiZWNhdXNlIHRoZSBmaWxlIGV4dGVuc2lvbnMgLiRsaWJleHQgb2YgdGhpcyBhcmd1bWVudCBtYWtlcyBtZSBiZWxpZXZlIgotCQkkRUNITyAiKioqIHRoYXQgaXQgaXMganVzdCBhIHN0YXRpYyBhcmNoaXZlIHRoYXQgSSBzaG91bGQgbm90IHVzZSBoZXJlLiIKKwkJZWNobyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkJZWNobyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKKwkJZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgorCQllY2hvICIqKiogYmVjYXVzZSB0aGUgZmlsZSBleHRlbnNpb25zIC4kbGliZXh0IG9mIHRoaXMgYXJndW1lbnQgbWFrZXMgbWUgYmVsaWV2ZSIKKwkJZWNobyAiKioqIHRoYXQgaXQgaXMganVzdCBhIHN0YXRpYyBhcmNoaXZlIHRoYXQgSSBzaG91bGQgbm90IHVzZSBoZXJlLiIKIAkgICAgICBlbHNlCi0JCSRFQ0hPCisJCWVjaG8KIAkJJEVDSE8gIioqKiBXYXJuaW5nOiBMaW5raW5nIHRoZSBzaGFyZWQgbGlicmFyeSAkb3V0cHV0IGFnYWluc3QgdGhlIgogCQkkRUNITyAiKioqIHN0YXRpYyBsaWJyYXJ5ICRkZXBsaWIgaXMgbm90IHBvcnRhYmxlISIKIAkJZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKQEAgLTUyNzIsMTEgKzYzNTksMTEgQEAKIAkgICAgaWYgdGVzdCAiJHBhc3MiID0gZGxwcmVvcGVuIHx8IHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgIT0geWVzIHx8IHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0gbm87IHRoZW4KIAkgICAgICAjIElmIHRoZXJlIGlzIG5vIGRsb3BlbiBzdXBwb3J0IG9yIHdlJ3JlIGxpbmtpbmcgc3RhdGljYWxseSwKIAkgICAgICAjIHdlIG5lZWQgdG8gcHJlbG9hZC4KLQkgICAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGVwbGliIgorCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGVwbGliIgogCSAgICAgIGNvbXBpbGVfZGVwbGlicz0iJGRlcGxpYiAkY29tcGlsZV9kZXBsaWJzIgogCSAgICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCiAJICAgIGVsc2UKLQkgICAgICBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkZGVwbGliIgorCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkZGVwbGliIgogCSAgICBmaQogCSAgZmkKIAkgIGNvbnRpbnVlCkBAIC01MzE4LDIwICs2NDA1LDIwIEBACiAKIAkjIENvbnZlcnQgIi1mcmFtZXdvcmsgZm9vIiB0byAiZm9vLmx0ZnJhbWV3b3JrIgogCWlmIHRlc3QgLW4gIiRpbmhlcml0ZWRfbGlua2VyX2ZsYWdzIjsgdGhlbgotCSAgdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9YCRFQ0hPICJYJGluaGVyaXRlZF9saW5rZXJfZmxhZ3MiIHwgJFhzZWQgLWUgJ3MvLWZyYW1ld29yayBcKFteICRdKlwpL1wxLmx0ZnJhbWV3b3JrL2cnYAorCSAgdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9YCRFQ0hPICIkaW5oZXJpdGVkX2xpbmtlcl9mbGFncyIgfCAkU0VEICdzLy1mcmFtZXdvcmsgXChbXiAkXSpcKS9cMS5sdGZyYW1ld29yay9nJ2AKIAkgIGZvciB0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnIGluICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnczsgZG8KIAkgICAgY2FzZSAiICRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCiAJICAgICAgKiIgJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWcgIiopIDs7Ci0JICAgICAgKikgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyI7OworCSAgICAgICopIGZ1bmNfYXBwZW5kIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWciOzsKIAkgICAgZXNhYwogCSAgZG9uZQogCWZpCi0JZGVwZW5kZW5jeV9saWJzPWAkRUNITyAiWCAkZGVwZW5kZW5jeV9saWJzIiB8ICRYc2VkIC1lICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAorCWRlcGVuZGVuY3lfbGlicz1gJEVDSE8gIiAkZGVwZW5kZW5jeV9saWJzIiB8ICRTRUQgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCiAJaWYgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJsaWIsbGluayIgfHwKIAkgICB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gInByb2csc2NhbiIgfHwKIAkgICB7IHRlc3QgIiRsaW5rbW9kZSIgIT0gcHJvZyAmJiB0ZXN0ICIkbGlua21vZGUiICE9IGxpYjsgfTsgdGhlbgotCSAgdGVzdCAtbiAiJGRsb3BlbiIgJiYgZGxmaWxlcz0iJGRsZmlsZXMgJGRsb3BlbiIKLQkgIHRlc3QgLW4gIiRkbHByZW9wZW4iICYmIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRkbHByZW9wZW4iCisJICB0ZXN0IC1uICIkZGxvcGVuIiAmJiBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGRsb3BlbiIKKwkgIHRlc3QgLW4gIiRkbHByZW9wZW4iICYmIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkZGxwcmVvcGVuIgogCWZpCiAKIAlpZiB0ZXN0ICIkcGFzcyIgPSBjb252OyB0aGVuCkBAIC01MzQyLDIwICs2NDI5LDIwIEBACiAJICAgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBsaW5rIGxpYnJhcnkgZm9yIFxgJGxpYiciCiAJICAgIGZpCiAJICAgICMgSXQgaXMgYSBsaWJ0b29sIGNvbnZlbmllbmNlIGxpYnJhcnksIHNvIGFkZCBpbiBpdHMgb2JqZWN0cy4KLQkgICAgY29udmVuaWVuY2U9IiRjb252ZW5pZW5jZSAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCi0JICAgIG9sZF9jb252ZW5pZW5jZT0iJG9sZF9jb252ZW5pZW5jZSAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCisJICAgIGZ1bmNfYXBwZW5kIGNvbnZlbmllbmNlICIgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgorCSAgICBmdW5jX2FwcGVuZCBvbGRfY29udmVuaWVuY2UgIiAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCiAJICBlbGlmIHRlc3QgIiRsaW5rbW9kZSIgIT0gcHJvZyAmJiB0ZXN0ICIkbGlua21vZGUiICE9IGxpYjsgdGhlbgogCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIGNvbnZlbmllbmNlIGxpYnJhcnkiCiAJICBmaQogCSAgdG1wX2xpYnM9CiAJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCiAJICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCi0JICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCisJICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCiAJICAgICAgY2FzZSAiJHRtcF9saWJzICIgaW4KLQkgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CisJICAgICAgKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OwogCSAgICAgIGVzYWMKIAkgICAgZmkKLQkgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgorCSAgICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiCiAJICBkb25lCiAJICBjb250aW51ZQogCWZpICMgJHBhc3MgPSBjb252CkBAIC01MzYzLDkgKzY0NTAsMTUgQEAKIAogCSMgR2V0IHRoZSBuYW1lIG9mIHRoZSBsaWJyYXJ5IHdlIGxpbmsgYWdhaW5zdC4KIAlsaW5rbGliPQotCWZvciBsIGluICRvbGRfbGlicmFyeSAkbGlicmFyeV9uYW1lczsgZG8KLQkgIGxpbmtsaWI9IiRsIgotCWRvbmUKKwlpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmCisJICAgeyB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzIiA9IHllcyB8fAorCSAgICAgdGVzdCAiJHByZWZlcl9zdGF0aWNfbGlicywkaW5zdGFsbGVkIiA9ICJidWlsdCxubyI7IH07IHRoZW4KKwkgIGxpbmtsaWI9JG9sZF9saWJyYXJ5CisJZWxzZQorCSAgZm9yIGwgaW4gJG9sZF9saWJyYXJ5ICRsaWJyYXJ5X25hbWVzOyBkbworCSAgICBsaW5rbGliPSIkbCIKKwkgIGRvbmUKKwlmaQogCWlmIHRlc3QgLXogIiRsaW5rbGliIjsgdGhlbgogCSAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBsaW5rIGxpYnJhcnkgZm9yIFxgJGxpYiciCiAJZmkKQEAgLTUzODIsOSArNjQ3NSw5IEBACiAJICAgICMgc3RhdGljYWxseSwgd2UgbmVlZCB0byBwcmVsb2FkLiAgV2UgYWxzbyBuZWVkIHRvIHByZWxvYWQgYW55CiAJICAgICMgZGVwZW5kZW50IGxpYnJhcmllcyBzbyBsaWJsdGRsJ3MgZGVwbGliIHByZWxvYWRlciBkb2Vzbid0CiAJICAgICMgYm9tYiBvdXQgaW4gdGhlIGxvYWQgZGVwbGlicyBwaGFzZS4KLQkgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGxpYiAkZGVwZW5kZW5jeV9saWJzIgorCSAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGxpYiAkZGVwZW5kZW5jeV9saWJzIgogCSAgZWxzZQotCSAgICBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliIgorCSAgICBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGxpYiIKIAkgIGZpCiAJICBjb250aW51ZQogCWZpICMgJHBhc3MgPSBkbG9wZW4KQEAgLTU0MDYsMTQgKzY0OTksMTQgQEAKIAogCSMgRmluZCB0aGUgcmVsZXZhbnQgb2JqZWN0IGRpcmVjdG9yeSBhbmQgbGlicmFyeSBuYW1lLgogCWlmIHRlc3QgIlgkaW5zdGFsbGVkIiA9IFh5ZXM7IHRoZW4KLQkgIGlmIHRlc3QgISAtZiAiJGxpYmRpci8kbGlua2xpYiIgJiYgdGVzdCAtZiAiJGFic19sYWRpci8kbGlua2xpYiI7IHRoZW4KKwkgIGlmIHRlc3QgISAtZiAiJGx0X3N5c3Jvb3QkbGliZGlyLyRsaW5rbGliIiAmJiB0ZXN0IC1mICIkYWJzX2xhZGlyLyRsaW5rbGliIjsgdGhlbgogCSAgICBmdW5jX3dhcm5pbmcgImxpYnJhcnkgXGAkbGliJyB3YXMgbW92ZWQuIgogCSAgICBkaXI9IiRsYWRpciIKIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyIgogCSAgICBsaWJkaXI9IiRhYnNfbGFkaXIiCiAJICBlbHNlCi0JICAgIGRpcj0iJGxpYmRpciIKLQkgICAgYWJzZGlyPSIkbGliZGlyIgorCSAgICBkaXI9IiRsdF9zeXNyb290JGxpYmRpciIKKwkgICAgYWJzZGlyPSIkbHRfc3lzcm9vdCRsaWJkaXIiCiAJICBmaQogCSAgdGVzdCAiWCRoYXJkY29kZV9hdXRvbWF0aWMiID0gWHllcyAmJiBhdm9pZHRlbXBycGF0aD15ZXMKIAllbHNlCkBAIC01NDIxLDEyICs2NTE0LDEyIEBACiAJICAgIGRpcj0iJGxhZGlyIgogCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCiAJICAgICMgUmVtb3ZlIHRoaXMgc2VhcmNoIHBhdGggbGF0ZXIKLQkgICAgbm90aW5zdF9wYXRoPSIkbm90aW5zdF9wYXRoICRhYnNfbGFkaXIiCisJICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfcGF0aCAiICRhYnNfbGFkaXIiCiAJICBlbHNlCiAJICAgIGRpcj0iJGxhZGlyLyRvYmpkaXIiCiAJICAgIGFic2Rpcj0iJGFic19sYWRpci8kb2JqZGlyIgogCSAgICAjIFJlbW92ZSB0aGlzIHNlYXJjaCBwYXRoIGxhdGVyCi0JICAgIG5vdGluc3RfcGF0aD0iJG5vdGluc3RfcGF0aCAkYWJzX2xhZGlyIgorCSAgICBmdW5jX2FwcGVuZCBub3RpbnN0X3BhdGggIiAkYWJzX2xhZGlyIgogCSAgZmkKIAlmaSAjICRpbnN0YWxsZWQgPSB5ZXMKIAlmdW5jX3N0cmlwbmFtZSAnbGliJyAnLmxhJyAiJGxhbmFtZSIKQEAgLTU0MzcsMjAgKzY1MzAsNDYgQEAKIAkgIGlmIHRlc3QgLXogIiRsaWJkaXIiICYmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCiAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIm9ubHkgbGlicmFyaWVzIG1heSAtZGxwcmVvcGVuIGEgY29udmVuaWVuY2UgbGlicmFyeTogXGAkbGliJyIKIAkgIGZpCi0JICAjIFByZWZlciB1c2luZyBhIHN0YXRpYyBsaWJyYXJ5IChzbyB0aGF0IG5vIHNpbGx5IF9EWU5BTUlDIHN5bWJvbHMKLQkgICMgYXJlIHJlcXVpcmVkIHRvIGxpbmspLgotCSAgaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IjsgdGhlbgotCSAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGlyLyRvbGRfbGlicmFyeSIKLQkgICAgIyBLZWVwIGEgbGlzdCBvZiBwcmVvcGVuZWQgY29udmVuaWVuY2UgbGlicmFyaWVzIHRvIGNoZWNrCi0JICAgICMgdGhhdCB0aGV5IGFyZSBiZWluZyB1c2VkIGNvcnJlY3RseSBpbiB0aGUgbGluayBwYXNzLgotCSAgICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCi0JCWRscHJlY29udmVuaWVuY2VsaWJzPSIkZGxwcmVjb252ZW5pZW5jZWxpYnMgJGRpci8kb2xkX2xpYnJhcnkiCi0JICAjIE90aGVyd2lzZSwgdXNlIHRoZSBkbG5hbWUsIHNvIHRoYXQgbHRfZGxvcGVuIGZpbmRzIGl0LgotCSAgZWxpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgotCSAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGlyLyRkbG5hbWUiCi0JICBlbHNlCi0JICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkaXIvJGxpbmtsaWIiCi0JICBmaQorCSAgY2FzZSAiJGhvc3QiIGluCisJICAgICMgc3BlY2lhbCBoYW5kbGluZyBmb3IgcGxhdGZvcm1zIHdpdGggUEUtRExMcy4KKwkgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCisJICAgICAgIyBMaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGxpbmsgYWdhaW5zdCBzaGFyZWQgbGlicmFyeSBpZiBib3RoCisJICAgICAgIyBzdGF0aWMgYW5kIHNoYXJlZCBhcmUgcHJlc2VudC4gIFRoZXJlZm9yZSwgZW5zdXJlIHdlIGV4dHJhY3QKKwkgICAgICAjIHN5bWJvbHMgZnJvbSB0aGUgaW1wb3J0IGxpYnJhcnkgaWYgYSBzaGFyZWQgbGlicmFyeSBpcyBwcmVzZW50CisJICAgICAgIyAob3RoZXJ3aXNlLCB0aGUgZGxvcGVuIG1vZHVsZSBuYW1lIHdpbGwgYmUgaW5jb3JyZWN0KS4gIFdlIGRvCisJICAgICAgIyB0aGlzIGJ5IHB1dHRpbmcgdGhlIGltcG9ydCBsaWJyYXJ5IG5hbWUgaW50byAkbmV3ZGxwcmVmaWxlcy4KKwkgICAgICAjIFdlIHJlY292ZXIgdGhlIGRsb3BlbiBtb2R1bGUgbmFtZSBieSAnc2F2aW5nJyB0aGUgbGEgZmlsZQorCSAgICAgICMgbmFtZSBpbiBhIHNwZWNpYWwgcHVycG9zZSB2YXJpYWJsZSwgYW5kIChsYXRlcikgZXh0cmFjdGluZyB0aGUKKwkgICAgICAjIGRsbmFtZSBmcm9tIHRoZSBsYSBmaWxlLgorCSAgICAgIGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCisJICAgICAgICBmdW5jX3RyX3NoICIkZGlyLyRsaW5rbGliIgorCSAgICAgICAgZXZhbCAibGliZmlsZV8kZnVuY190cl9zaF9yZXN1bHQ9XCRhYnNfbGFkaXIvXCRsYW5hbWUiCisJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kbGlua2xpYiIKKwkgICAgICBlbHNlCisJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kb2xkX2xpYnJhcnkiCisJICAgICAgICAjIEtlZXAgYSBsaXN0IG9mIHByZW9wZW5lZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgdG8gY2hlY2sKKwkgICAgICAgICMgdGhhdCB0aGV5IGFyZSBiZWluZyB1c2VkIGNvcnJlY3RseSBpbiB0aGUgbGluayBwYXNzLgorCSAgICAgICAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAorCSAgICAgICAgICBmdW5jX2FwcGVuZCBkbHByZWNvbnZlbmllbmNlbGlicyAiICRkaXIvJG9sZF9saWJyYXJ5IgorCSAgICAgIGZpCisJICAgIDs7CisJICAgICogKQorCSAgICAgICMgUHJlZmVyIHVzaW5nIGEgc3RhdGljIGxpYnJhcnkgKHNvIHRoYXQgbm8gc2lsbHkgX0RZTkFNSUMgc3ltYm9scworCSAgICAgICMgYXJlIHJlcXVpcmVkIHRvIGxpbmspLgorCSAgICAgIGlmIHRlc3QgLW4gIiRvbGRfbGlicmFyeSI7IHRoZW4KKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRvbGRfbGlicmFyeSIKKwkgICAgICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjaworCSAgICAgICAgIyB0aGF0IHRoZXkgYXJlIGJlaW5nIHVzZWQgY29ycmVjdGx5IGluIHRoZSBsaW5rIHBhc3MuCisJICAgICAgICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCisJICAgICAgICAgIGZ1bmNfYXBwZW5kIGRscHJlY29udmVuaWVuY2VsaWJzICIgJGRpci8kb2xkX2xpYnJhcnkiCisJICAgICAgIyBPdGhlcndpc2UsIHVzZSB0aGUgZGxuYW1lLCBzbyB0aGF0IGx0X2Rsb3BlbiBmaW5kcyBpdC4KKwkgICAgICBlbGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCisJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kZGxuYW1lIgorCSAgICAgIGVsc2UKKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRsaW5rbGliIgorCSAgICAgIGZpCisJICAgIDs7CisJICBlc2FjCiAJZmkgIyAkcGFzcyA9IGRscHJlb3BlbgogCiAJaWYgdGVzdCAteiAiJGxpYmRpciI7IHRoZW4KQEAgLTU0NjgsNyArNjU4Nyw3IEBACiAKIAogCWlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nICYmIHRlc3QgIiRwYXNzIiAhPSBsaW5rOyB0aGVuCi0JICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGxhZGlyIgorCSAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGxhZGlyIgogCSAgZGVwbGlicz0iJGxpYiAkZGVwbGlicyIKIAogCSAgbGlua2FsbGRlcGxpYnM9bm8KQEAgLTU0ODEsNyArNjYwMCw4IEBACiAJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCiAJICAgIGNhc2UgJGRlcGxpYiBpbgogCSAgICAtTCopIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCi0JICAgICAgICAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJICAgICAgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJICAgICAgICAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKIAkJIDs7CiAJICAgIGVzYWMKIAkgICAgIyBOZWVkIHRvIGxpbmsgYWdhaW5zdCBhbGwgZGVwZW5kZW5jeV9saWJzPwpAQCAtNTQ5MiwxMiArNjYxMiwxMiBAQAogCSAgICAgICMgb3IvYW5kIGxpbmsgYWdhaW5zdCBzdGF0aWMgbGlicmFyaWVzCiAJICAgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCiAJICAgIGZpCi0JICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCisJICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCiAJICAgICAgY2FzZSAiJHRtcF9saWJzICIgaW4KLQkgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CisJICAgICAgKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OwogCSAgICAgIGVzYWMKIAkgICAgZmkKLQkgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgorCSAgICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiCiAJICBkb25lICMgZm9yIGRlcGxpYgogCSAgY29udGludWUKIAlmaSAjICRsaW5rbW9kZSA9IHByb2cuLi4KQEAgLTU1MTIsNyArNjYzMiw3IEBACiAJICAgICAgIyBNYWtlIHN1cmUgdGhlIHJwYXRoIGNvbnRhaW5zIG9ubHkgdW5pcXVlIGRpcmVjdG9yaWVzLgogCSAgICAgIGNhc2UgIiR0ZW1wX3JwYXRoOiIgaW4KIAkgICAgICAqIiRhYnNkaXI6IiopIDs7Ci0JICAgICAgKikgdGVtcF9ycGF0aD0iJHRlbXBfcnBhdGgkYWJzZGlyOiIgOzsKKwkgICAgICAqKSBmdW5jX2FwcGVuZCB0ZW1wX3JwYXRoICIkYWJzZGlyOiIgOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCiAKQEAgLTU1MjQsNyArNjY0NCw3IEBACiAJICAgICopCiAJICAgICAgY2FzZSAiJGNvbXBpbGVfcnBhdGggIiBpbgogCSAgICAgICoiICRhYnNkaXIgIiopIDs7Ci0JICAgICAgKikgY29tcGlsZV9ycGF0aD0iJGNvbXBpbGVfcnBhdGggJGFic2RpciIKKwkgICAgICAqKSBmdW5jX2FwcGVuZCBjb21waWxlX3JwYXRoICIgJGFic2RpciIgOzsKIAkgICAgICBlc2FjCiAJICAgICAgOzsKIAkgICAgZXNhYwpAQCAtNTUzMyw3ICs2NjUzLDcgQEAKIAkgICAgKikKIAkgICAgICBjYXNlICIkZmluYWxpemVfcnBhdGggIiBpbgogCSAgICAgICoiICRsaWJkaXIgIiopIDs7Ci0JICAgICAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIgorCSAgICAgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3JwYXRoICIgJGxpYmRpciIgOzsKIAkgICAgICBlc2FjCiAJICAgICAgOzsKIAkgICAgZXNhYwpAQCAtNTU1OCwxMiArNjY3OCwxMiBAQAogCSAgY2FzZSAkaG9zdCBpbgogCSAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKikKIAkgICAgICAjIE5vIHBvaW50IGluIHJlbGlua2luZyBETExzIGJlY2F1c2UgcGF0aHMgYXJlIG5vdCBlbmNvZGVkCi0JICAgICAgbm90aW5zdF9kZXBsaWJzPSIkbm90aW5zdF9kZXBsaWJzICRsaWIiCisJICAgICAgZnVuY19hcHBlbmQgbm90aW5zdF9kZXBsaWJzICIgJGxpYiIKIAkgICAgICBuZWVkX3JlbGluaz1ubwogCSAgICA7OwogCSAgKikKIAkgICAgaWYgdGVzdCAiJGluc3RhbGxlZCIgPSBubzsgdGhlbgotCSAgICAgIG5vdGluc3RfZGVwbGlicz0iJG5vdGluc3RfZGVwbGlicyAkbGliIgorCSAgICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfZGVwbGlicyAiICRsaWIiCiAJICAgICAgbmVlZF9yZWxpbms9eWVzCiAJICAgIGZpCiAJICAgIDs7CkBAIC01NTgwLDcgKzY3MDAsNyBAQAogCSAgICBmaQogCSAgZG9uZQogCSAgaWYgdGVzdCAteiAiJGRsb3Blbm1vZHVsZSIgJiYgdGVzdCAiJHNob3VsZG5vdGxpbmsiID0geWVzICYmIHRlc3QgIiRwYXNzIiA9IGxpbms7IHRoZW4KLQkgICAgJEVDSE8KKwkgICAgZWNobwogCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgogCSAgICAgICRFQ0hPICIqKiogV2FybmluZzogTGlua2luZyB0aGUgZXhlY3V0YWJsZSAkb3V0cHV0IGFnYWluc3QgdGhlIGxvYWRhYmxlIG1vZHVsZSIKIAkgICAgZWxzZQpAQCAtNTU5OCw3ICs2NzE4LDcgQEAKIAkgICAgKikKIAkgICAgICBjYXNlICIkY29tcGlsZV9ycGF0aCAiIGluCiAJICAgICAgKiIgJGFic2RpciAiKikgOzsKLQkgICAgICAqKSBjb21waWxlX3JwYXRoPSIkY29tcGlsZV9ycGF0aCAkYWJzZGlyIgorCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfcnBhdGggIiAkYWJzZGlyIiA7OwogCSAgICAgIGVzYWMKIAkgICAgICA7OwogCSAgICBlc2FjCkBAIC01NjA3LDcgKzY3MjcsNyBAQAogCSAgICAqKQogCSAgICAgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCiAJICAgICAgKiIgJGxpYmRpciAiKikgOzsKLQkgICAgICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiCisJICAgICAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OwogCSAgICAgIGVzYWMKIAkgICAgICA7OwogCSAgICBlc2FjCkBAIC01NjYxLDcgKzY3ODEsNyBAQAogCSAgICBsaW5rbGliPSRuZXdsaWIKIAkgIGZpICMgdGVzdCAtbiAiJG9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzIgogCi0JICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rOyB0aGVuCisJICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluazsgdGhlbgogCSAgICBhZGRfc2hsaWJwYXRoPQogCSAgICBhZGRfZGlyPQogCSAgICBhZGQ9CkBAIC01NjgzLDkgKzY4MDMsOSBAQAogCQkgICAgICBpZiB0ZXN0ICJYJGRsb3Blbm1vZHVsZSIgIT0gIlgkbGliIjsgdGhlbgogCQkJJEVDSE8gIioqKiBXYXJuaW5nOiBsaWIgJGxpbmtsaWIgaXMgYSBtb2R1bGUsIG5vdCBhIHNoYXJlZCBsaWJyYXJ5IgogCQkJaWYgdGVzdCAteiAiJG9sZF9saWJyYXJ5IiA7IHRoZW4KLQkJCSAgJEVDSE8KLQkJCSAgJEVDSE8gIioqKiBBbmQgdGhlcmUgZG9lc24ndCBzZWVtIHRvIGJlIGEgc3RhdGljIGFyY2hpdmUgYXZhaWxhYmxlIgotCQkJICAkRUNITyAiKioqIFRoZSBsaW5rIHdpbGwgcHJvYmFibHkgZmFpbCwgc29ycnkiCisJCQkgIGVjaG8KKwkJCSAgZWNobyAiKioqIEFuZCB0aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYSBzdGF0aWMgYXJjaGl2ZSBhdmFpbGFibGUiCisJCQkgIGVjaG8gIioqKiBUaGUgbGluayB3aWxsIHByb2JhYmx5IGZhaWwsIHNvcnJ5IgogCQkJZWxzZQogCQkJICBhZGQ9IiRkaXIvJG9sZF9saWJyYXJ5IgogCQkJZmkKQEAgLTU3MTcsNyArNjgzNyw3IEBACiAJCWlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiOyB0aGVuCiAJCSAgY2FzZSAkbGliZGlyIGluCiAJCSAgICBbXFwvXSopCi0JCSAgICAgIGFkZF9kaXI9IiRhZGRfZGlyIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCisJCSAgICAgIGZ1bmNfYXBwZW5kIGFkZF9kaXIgIiAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgogCQkgICAgICA7OwogCQkgIGVzYWMKIAkJZmkKQEAgLTU3MzksNyArNjg1OSw3IEBACiAJICAgIGlmIHRlc3QgLW4gIiRhZGRfc2hsaWJwYXRoIjsgdGhlbgogCSAgICAgIGNhc2UgOiRjb21waWxlX3NobGlicGF0aDogaW4KIAkgICAgICAqIjokYWRkX3NobGlicGF0aDoiKikgOzsKLQkgICAgICAqKSBjb21waWxlX3NobGlicGF0aD0iJGNvbXBpbGVfc2hsaWJwYXRoJGFkZF9zaGxpYnBhdGg6IiA7OworCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfc2hsaWJwYXRoICIkYWRkX3NobGlicGF0aDoiIDs7CiAJICAgICAgZXNhYwogCSAgICBmaQogCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgpAQCAtNTc1MywxMyArNjg3MywxMyBAQAogCQkgdGVzdCAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiID0geWVzOyB0aGVuCiAJCWNhc2UgOiRmaW5hbGl6ZV9zaGxpYnBhdGg6IGluCiAJCSoiOiRsaWJkaXI6IiopIDs7Ci0JCSopIGZpbmFsaXplX3NobGlicGF0aD0iJGZpbmFsaXplX3NobGlicGF0aCRsaWJkaXI6IiA7OworCQkqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9zaGxpYnBhdGggIiRsaWJkaXI6IiA7OwogCQllc2FjCiAJICAgICAgZmkKIAkgICAgZmkKIAkgIGZpCiAKLQkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgogCSAgICBhZGRfc2hsaWJwYXRoPQogCSAgICBhZGRfZGlyPQogCSAgICBhZGQ9CkBAIC01NzczLDcgKzY4OTMsNyBAQAogCSAgICBlbGlmIHRlc3QgIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiA9IHllczsgdGhlbgogCSAgICAgIGNhc2UgOiRmaW5hbGl6ZV9zaGxpYnBhdGg6IGluCiAJICAgICAgKiI6JGxpYmRpcjoiKikgOzsKLQkgICAgICAqKSBmaW5hbGl6ZV9zaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgkbGliZGlyOiIgOzsKKwkgICAgICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9zaGxpYnBhdGggIiRsaWJkaXI6IiA7OwogCSAgICAgIGVzYWMKIAkgICAgICBhZGQ9Ii1sJG5hbWUiCiAJICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgPSB5ZXM7IHRoZW4KQEAgLTU3OTAsNyArNjkxMCw3IEBACiAJICAgICAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KIAkJY2FzZSAkbGliZGlyIGluCiAJCSAgW1xcL10qKQotCQkgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKKwkJICAgIGZ1bmNfYXBwZW5kIGFkZF9kaXIgIiAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgogCQkgICAgOzsKIAkJZXNhYwogCSAgICAgIGZpCkBAIC01ODI1LDIxICs2OTQ1LDIxIEBACiAKIAkgICAgIyBKdXN0IHByaW50IGEgd2FybmluZyBhbmQgYWRkIHRoZSBsaWJyYXJ5IHRvIGRlcGVuZGVuY3lfbGlicyBzbwogCSAgICAjIHRoYXQgdGhlIHByb2dyYW0gY2FuIGJlIGxpbmtlZCBhZ2FpbnN0IHRoZSBzdGF0aWMgbGlicmFyeS4KLQkgICAgJEVDSE8KKwkgICAgZWNobwogCSAgICAkRUNITyAiKioqIFdhcm5pbmc6IFRoaXMgc3lzdGVtIGNhbiBub3QgbGluayB0byBzdGF0aWMgbGliIGFyY2hpdmUgJGxpYi4iCi0JICAgICRFQ0hPICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgotCSAgICAkRUNITyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKLQkgICAgJEVDSE8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZS4iCisJICAgIGVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCisJICAgIGVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJICAgIGVjaG8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZS4iCiAJICAgIGlmIHRlc3QgIiRtb2R1bGUiID0geWVzOyB0aGVuCi0JICAgICAgJEVDSE8gIioqKiBCdXQgYXMgeW91IHRyeSB0byBidWlsZCBhIG1vZHVsZSBsaWJyYXJ5LCBsaWJ0b29sIHdpbGwgc3RpbGwgY3JlYXRlICIKLQkgICAgICAkRUNITyAiKioqIGEgc3RhdGljIG1vZHVsZSwgdGhhdCBzaG91bGQgd29yayBhcyBsb25nIGFzIHRoZSBkbG9wZW5pbmcgYXBwbGljYXRpb24iCi0JICAgICAgJEVDSE8gIioqKiBpcyBsaW5rZWQgd2l0aCB0aGUgLWRsb3BlbiBmbGFnIHRvIHJlc29sdmUgc3ltYm9scyBhdCBydW50aW1lLiIKKwkgICAgICBlY2hvICIqKiogQnV0IGFzIHlvdSB0cnkgdG8gYnVpbGQgYSBtb2R1bGUgbGlicmFyeSwgbGlidG9vbCB3aWxsIHN0aWxsIGNyZWF0ZSAiCisJICAgICAgZWNobyAiKioqIGEgc3RhdGljIG1vZHVsZSwgdGhhdCBzaG91bGQgd29yayBhcyBsb25nIGFzIHRoZSBkbG9wZW5pbmcgYXBwbGljYXRpb24iCisJICAgICAgZWNobyAiKioqIGlzIGxpbmtlZCB3aXRoIHRoZSAtZGxvcGVuIGZsYWcgdG8gcmVzb2x2ZSBzeW1ib2xzIGF0IHJ1bnRpbWUuIgogCSAgICAgIGlmIHRlc3QgLXogIiRnbG9iYWxfc3ltYm9sX3BpcGUiOyB0aGVuCi0JCSRFQ0hPCi0JCSRFQ0hPICIqKiogSG93ZXZlciwgdGhpcyB3b3VsZCBvbmx5IHdvcmsgaWYgbGlidG9vbCB3YXMgYWJsZSB0byBleHRyYWN0IHN5bWJvbCIKLQkJJEVDSE8gIioqKiBsaXN0cyBmcm9tIGEgcHJvZ3JhbSwgdXNpbmcgXGBubScgb3IgZXF1aXZhbGVudCwgYnV0IGxpYnRvb2wgY291bGQiCi0JCSRFQ0hPICIqKiogbm90IGZpbmQgc3VjaCBhIHByb2dyYW0uICBTbywgdGhpcyBtb2R1bGUgaXMgcHJvYmFibHkgdXNlbGVzcy4iCi0JCSRFQ0hPICIqKiogXGBubScgZnJvbSBHTlUgYmludXRpbHMgYW5kIGEgZnVsbCByZWJ1aWxkIG1heSBoZWxwLiIKKwkJZWNobworCQllY2hvICIqKiogSG93ZXZlciwgdGhpcyB3b3VsZCBvbmx5IHdvcmsgaWYgbGlidG9vbCB3YXMgYWJsZSB0byBleHRyYWN0IHN5bWJvbCIKKwkJZWNobyAiKioqIGxpc3RzIGZyb20gYSBwcm9ncmFtLCB1c2luZyBcYG5tJyBvciBlcXVpdmFsZW50LCBidXQgbGlidG9vbCBjb3VsZCIKKwkJZWNobyAiKioqIG5vdCBmaW5kIHN1Y2ggYSBwcm9ncmFtLiAgU28sIHRoaXMgbW9kdWxlIGlzIHByb2JhYmx5IHVzZWxlc3MuIgorCQllY2hvICIqKiogXGBubScgZnJvbSBHTlUgYmludXRpbHMgYW5kIGEgZnVsbCByZWJ1aWxkIG1heSBoZWxwLiIKIAkgICAgICBmaQogCSAgICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSBubzsgdGhlbgogCQlidWlsZF9saWJ0b29sX2xpYnM9bW9kdWxlCkBAIC01ODY3LDM3ICs2OTg3LDQ2IEBACiAJICAgICAgICAgICB0ZW1wX3hycGF0aD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAJCSAgIGNhc2UgIiAkeHJwYXRoICIgaW4KIAkJICAgKiIgJHRlbXBfeHJwYXRoICIqKSA7OwotCQkgICAqKSB4cnBhdGg9IiR4cnBhdGggJHRlbXBfeHJwYXRoIjs7CisJCSAgICopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICR0ZW1wX3hycGF0aCI7OwogCQkgICBlc2FjOzsKLQkgICAgICAqKSB0ZW1wX2RlcGxpYnM9IiR0ZW1wX2RlcGxpYnMgJGxpYmRpciI7OworCSAgICAgICopIGZ1bmNfYXBwZW5kIHRlbXBfZGVwbGlicyAiICRsaWJkaXIiOzsKIAkgICAgICBlc2FjCiAJICAgIGRvbmUKIAkgICAgZGVwZW5kZW5jeV9saWJzPSIkdGVtcF9kZXBsaWJzIgogCSAgZmkKIAotCSAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRhYnNkaXIiCisJICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkYWJzZGlyIgogCSAgIyBMaW5rIGFnYWluc3QgdGhpcyBsaWJyYXJ5CiAJICB0ZXN0ICIkbGlua19zdGF0aWMiID0gbm8gJiYgbmV3ZGVwZW5kZW5jeV9saWJzPSIkYWJzX2xhZGlyLyRsYW5hbWUgJG5ld2RlcGVuZGVuY3lfbGlicyIKIAkgICMgLi4uIGFuZCBpdHMgZGVwZW5kZW5jeV9saWJzCiAJICB0bXBfbGlicz0KIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KIAkgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCi0JICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCisJICAgIGNhc2UgJGRlcGxpYiBpbgorICAgICAgICAgICAgICAtTCopIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCisgICAgICAgICAgICAgICAgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiOzsKKyAgICAgICAgICAgICAgKikgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiIDs7CisgICAgICAgICAgICBlc2FjCisJICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCiAJICAgICAgY2FzZSAiJHRtcF9saWJzICIgaW4KLQkgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CisJICAgICAgKiIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCAiKikKKyAgICAgICAgICAgICAgICBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiIDs7CiAJICAgICAgZXNhYwogCSAgICBmaQotCSAgICB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiCisJICAgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKIAkgIGRvbmUKIAogCSAgaWYgdGVzdCAiJGxpbmtfYWxsX2RlcGxpYnMiICE9IG5vOyB0aGVuCiAJICAgICMgQWRkIHRoZSBzZWFyY2ggcGF0aHMgb2YgYWxsIGRlcGVuZGVuY3kgbGlicmFyaWVzCiAJICAgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KKwkgICAgICBwYXRoPQogCSAgICAgIGNhc2UgJGRlcGxpYiBpbgogCSAgICAgIC1MKikgcGF0aD0iJGRlcGxpYiIgOzsKIAkgICAgICAqLmxhKQorCSAgICAgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiCisJICAgICAgICBkZXBsaWI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAogCSAgICAgICAgZnVuY19kaXJuYW1lICIkZGVwbGliIiAiIiAiLiIKLQkJZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKwkJZGlyPSRmdW5jX2Rpcm5hbWVfcmVzdWx0CiAJCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgogCQljYXNlICRkaXIgaW4KIAkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnNkaXI9IiRkaXIiIDs7CkBAIC01OTI0LDggKzcwNTMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRkYXJ3aW5faW5zdGFsbF9uYW1lIjsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICBkYXJ3aW5faW5zdGFsbF9uYW1lPWAke09UT09MNjR9IC1MICRkZXBkZXBsICB8IGF3ayAne2lmIChOUiA9PSAyKSB7cHJpbnQgJDE7ZXhpdH19J2AKICAgICAgICAgICAgICAgICAgICAgICBmaQotCQkgICAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWR5bGliX2ZpbGUgJHt3bH0ke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCi0JCSAgICAgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAtZHlsaWJfZmlsZSAke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCisJCSAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHt3bH0tZHlsaWJfZmlsZSAke3dsfSR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKKwkJICAgICAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgLWR5bGliX2ZpbGUgJHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgogCQkgICAgICBwYXRoPQogCQkgICAgZmkKIAkJICBmaQpAQCAtNTk1OCw3ICs3MDg3LDcgQEAKIAkgIGNvbXBpbGVfZGVwbGlicz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRjb21waWxlX2RlcGxpYnMiCiAJICBmaW5hbGl6ZV9kZXBsaWJzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGZpbmFsaXplX2RlcGxpYnMiCiAJZWxzZQotCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAiYCRFQ0hPICJYICRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKKwkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgImAkRUNITyAiICRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyIgfCAkU0VEICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAogCWZpCiAgICAgICBmaQogICAgICAgZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzIgpAQCAtNTk3NSw3ICs3MTA0LDcgQEAKIAkgIGZvciBkaXIgaW4gJG5ld2xpYl9zZWFyY2hfcGF0aDsgZG8KIAkgICAgY2FzZSAiJGxpYl9zZWFyY2hfcGF0aCAiIGluCiAJICAgICoiICRkaXIgIiopIDs7Ci0JICAgICopIGxpYl9zZWFyY2hfcGF0aD0iJGxpYl9zZWFyY2hfcGF0aCAkZGlyIiA7OworCSAgICAqKSBmdW5jX2FwcGVuZCBsaWJfc2VhcmNoX3BhdGggIiAkZGlyIiA7OwogCSAgICBlc2FjCiAJICBkb25lCiAJICBuZXdsaWJfc2VhcmNoX3BhdGg9CkBAIC02MDMzLDEwICs3MTYyLDEwIEBACiAJICAgIC1MKikKIAkgICAgICBjYXNlICIgJHRtcF9saWJzICIgaW4KIAkgICAgICAqIiAkZGVwbGliICIqKSA7OwotCSAgICAgICopIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIgOzsKKwkgICAgICAqKSBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiIDs7CiAJICAgICAgZXNhYwogCSAgICAgIDs7Ci0JICAgICopIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIgOzsKKwkgICAgKikgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIiA7OwogCSAgICBlc2FjCiAJICBkb25lCiAJICBldmFsICR2YXI9XCIkdG1wX2xpYnNcIgpAQCAtNjA1Miw3ICs3MTgxLDcgQEAKIAkgIDs7CiAJZXNhYwogCWlmIHRlc3QgLW4gIiRpIiA7IHRoZW4KLQkgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGkiCisJICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRpIgogCWZpCiAgICAgICBkb25lCiAgICAgICBkZXBlbmRlbmN5X2xpYnM9JHRtcF9saWJzCkBAIC02MDkzLDcgKzcyMjIsNyBAQAogICAgICAgIyBOb3cgc2V0IHRoZSB2YXJpYWJsZXMgZm9yIGJ1aWxkaW5nIG9sZCBsaWJyYXJpZXMuCiAgICAgICBidWlsZF9saWJ0b29sX2xpYnM9bm8KICAgICAgIG9sZGxpYnM9IiRvdXRwdXQiCi0gICAgICBvYmpzPSIkb2JqcyRvbGRfZGVwbGlicyIKKyAgICAgIGZ1bmNfYXBwZW5kIG9ianMgIiRvbGRfZGVwbGlicyIKICAgICAgIDs7CiAKICAgICBsaWIpCkBAIC02MTI2LDEwICs3MjU1LDEwIEBACiAJaWYgdGVzdCAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAhPSBwYXNzX2FsbDsgdGhlbgogCSAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGJ1aWxkIGxpYnRvb2wgbGlicmFyeSBcYCRvdXRwdXQnIGZyb20gbm9uLWxpYnRvb2wgb2JqZWN0cyBvbiB0aGlzIGhvc3Q6JG9ianMiCiAJZWxzZQotCSAgJEVDSE8KKwkgIGVjaG8KIAkgICRFQ0hPICIqKiogV2FybmluZzogTGlua2luZyB0aGUgc2hhcmVkIGxpYnJhcnkgJG91dHB1dCBhZ2FpbnN0IHRoZSBub24tbGlidG9vbCIKIAkgICRFQ0hPICIqKiogb2JqZWN0cyAkb2JqcyBpcyBub3QgcG9ydGFibGUhIgotCSAgbGlib2Jqcz0iJGxpYm9ianMgJG9ianMiCisJICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJG9ianMiCiAJZmkKICAgICAgIGZpCiAKQEAgLTYxOTQsNyArNzMyMyw3IEBACiAJICAgIGFnZT0iJG51bWJlcl9taW5vciIKIAkgICAgcmV2aXNpb249IiRudW1iZXJfcmV2aXNpb24iCiAJICAgIDs7Ci0JICBmcmVlYnNkLWFvdXR8ZnJlZWJzZC1lbGZ8c3Vub3MpCisJICBmcmVlYnNkLWFvdXR8ZnJlZWJzZC1lbGZ8cW54fHN1bm9zKQogCSAgICBjdXJyZW50PSIkbnVtYmVyX21ham9yIgogCSAgICByZXZpc2lvbj0iJG51bWJlcl9taW5vciIKIAkgICAgYWdlPSIwIgpAQCAtNjMyNyw3ICs3NDU2LDcgQEAKIAkgIGRvbmUKIAogCSAgIyBNYWtlIGV4ZWN1dGFibGVzIGRlcGVuZCBvbiBvdXIgY3VycmVudCB2ZXJzaW9uLgotCSAgdmVyc3RyaW5nPSIkdmVyc3RyaW5nOiR7Y3VycmVudH0uMCIKKwkgIGZ1bmNfYXBwZW5kIHZlcnN0cmluZyAiOiR7Y3VycmVudH0uMCIKIAkgIDs7CiAKIAlxbngpCkBAIC02Mzk1LDEwICs3NTI0LDEwIEBACiAgICAgICBmaQogCiAgICAgICBmdW5jX2dlbmVyYXRlX2Rsc3ltcyAiJGxpYm5hbWUiICIkbGlibmFtZSIgInllcyIKLSAgICAgIGxpYm9ianM9IiRsaWJvYmpzICRzeW1maWxlb2JqIgorICAgICAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRzeW1maWxlb2JqIgogICAgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KIAotICAgICAgaWYgdGVzdCAiJG1vZGUiICE9IHJlbGluazsgdGhlbgorICAgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbms7IHRoZW4KIAkjIFJlbW92ZSBvdXIgb3V0cHV0cywgYnV0IGRvbid0IHJlbW92ZSBvYmplY3QgZmlsZXMgc2luY2UgdGhleQogCSMgbWF5IGhhdmUgYmVlbiBjcmVhdGVkIHdoZW4gY29tcGlsaW5nIFBJQyBvYmplY3RzLgogCXJlbW92ZWxpc3Q9CkBAIC02NDE0LDcgKzc1NDMsNyBAQAogCQkgICBjb250aW51ZQogCQkgZmkKIAkgICAgICAgZmkKLQkgICAgICAgcmVtb3ZlbGlzdD0iJHJlbW92ZWxpc3QgJHAiCisJICAgICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkcCIKIAkgICAgICAgOzsKIAkgICAgKikgOzsKIAkgIGVzYWMKQEAgLTY0MjUsMjcgKzc1NTQsMjggQEAKIAogICAgICAgIyBOb3cgc2V0IHRoZSB2YXJpYWJsZXMgZm9yIGJ1aWxkaW5nIG9sZCBsaWJyYXJpZXMuCiAgICAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzICYmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IGNvbnZlbmllbmNlIDsgdGhlbgotCW9sZGxpYnM9IiRvbGRsaWJzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQiCisJZnVuY19hcHBlbmQgb2xkbGlicyAiICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQiCiAKIAkjIFRyYW5zZm9ybSAubG8gZmlsZXMgdG8gLm8gZmlsZXMuCi0Jb2xkb2Jqcz0iJG9ianMgImAkRUNITyAiWCRsaWJvYmpzIiB8ICRTUDJOTCB8ICRYc2VkIC1lICcvXC4nJHtsaWJleHR9JyQvZCcgLWUgIiRsbzJvIiB8ICROTDJTUGAKKwlvbGRvYmpzPSIkb2JqcyAiYCRFQ0hPICIkbGlib2JqcyIgfCAkU1AyTkwgfCAkU0VEICIvXC4ke2xpYmV4dH0kL2Q7ICRsbzJvIiB8ICROTDJTUGAKICAgICAgIGZpCiAKICAgICAgICMgRWxpbWluYXRlIGFsbCB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMuCiAgICAgICAjZm9yIHBhdGggaW4gJG5vdGluc3RfcGF0aDsgZG8KLSAgICAgICMJbGliX3NlYXJjaF9wYXRoPWAkRUNITyAiWCRsaWJfc2VhcmNoX3BhdGggIiB8ICRYc2VkIC1lICJzJSAkcGF0aCAlICVnImAKLSAgICAgICMJZGVwbGlicz1gJEVDSE8gIlgkZGVwbGlicyAiIHwgJFhzZWQgLWUgInMlIC1MJHBhdGggJSAlZyJgCi0gICAgICAjCWRlcGVuZGVuY3lfbGlicz1gJEVDSE8gIlgkZGVwZW5kZW5jeV9saWJzICIgfCAkWHNlZCAtZSAicyUgLUwkcGF0aCAlICVnImAKKyAgICAgICMJbGliX3NlYXJjaF9wYXRoPWAkRUNITyAiJGxpYl9zZWFyY2hfcGF0aCAiIHwgJFNFRCAicyUgJHBhdGggJSAlZyJgCisgICAgICAjCWRlcGxpYnM9YCRFQ0hPICIkZGVwbGlicyAiIHwgJFNFRCAicyUgLUwkcGF0aCAlICVnImAKKyAgICAgICMJZGVwZW5kZW5jeV9saWJzPWAkRUNITyAiJGRlcGVuZGVuY3lfbGlicyAiIHwgJFNFRCAicyUgLUwkcGF0aCAlICVnImAKICAgICAgICNkb25lCiAKICAgICAgIGlmIHRlc3QgLW4gIiR4cnBhdGgiOyB0aGVuCiAJIyBJZiB0aGUgdXNlciBzcGVjaWZpZWQgYW55IHJwYXRoIGZsYWdzLCB0aGVuIGFkZCB0aGVtLgogCXRlbXBfeHJwYXRoPQogCWZvciBsaWJkaXIgaW4gJHhycGF0aDsgZG8KLQkgIHRlbXBfeHJwYXRoPSIkdGVtcF94cnBhdGggLVIkbGliZGlyIgorCSAgZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCisJICBmdW5jX2FwcGVuZCB0ZW1wX3hycGF0aCAiIC1SJGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdCIKIAkgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCiAJICAqIiAkbGliZGlyICIqKSA7OwotCSAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIiA7OworCSAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OwogCSAgZXNhYwogCWRvbmUKIAlpZiB0ZXN0ICIkaGFyZGNvZGVfaW50b19saWJzIiAhPSB5ZXMgfHwgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllczsgdGhlbgpAQCAtNjQ1OSw3ICs3NTg5LDcgQEAKICAgICAgIGZvciBsaWIgaW4gJG9sZF9kbGZpbGVzOyBkbwogCWNhc2UgIiAkZGxwcmVmaWxlcyAkZGxmaWxlcyAiIGluCiAJKiIgJGxpYiAiKikgOzsKLQkqKSBkbGZpbGVzPSIkZGxmaWxlcyAkbGliIiA7OworCSopIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkbGliIiA7OwogCWVzYWMKICAgICAgIGRvbmUKIApAQCAtNjQ2OSwxOSArNzU5OSwxOSBAQAogICAgICAgZm9yIGxpYiBpbiAkb2xkX2RscHJlZmlsZXM7IGRvCiAJY2FzZSAiJGRscHJlZmlsZXMgIiBpbgogCSoiICRsaWIgIiopIDs7Ci0JKikgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGxpYiIgOzsKKwkqKSBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGxpYiIgOzsKIAllc2FjCiAgICAgICBkb25lCiAKICAgICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzOyB0aGVuCiAJaWYgdGVzdCAtbiAiJHJwYXRoIjsgdGhlbgogCSAgY2FzZSAkaG9zdCBpbgotCSAgKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLW9zMiogfCAqLSotYmVvcyogfCAqLWNlZ2NjKikKKwkgICotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1vczIqIHwgKi0qLWJlb3MqIHwgKi1jZWdjYyogfCAqLSotaGFpa3UqKQogCSAgICAjIHRoZXNlIHN5c3RlbXMgZG9uJ3QgYWN0dWFsbHkgaGF2ZSBhIGMgbGlicmFyeSAoYXMgc3VjaCkhCiAJICAgIDs7CiAJICAqLSotcmhhcHNvZHkqIHwgKi0qLWRhcndpbjEuWzAxMl0pCiAJICAgICMgUmhhcHNvZHkgQyBsaWJyYXJ5IGlzIGluIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCi0JICAgIGRlcGxpYnM9IiRkZXBsaWJzIFN5c3RlbS5sdGZyYW1ld29yayIKKwkgICAgZnVuY19hcHBlbmQgZGVwbGlicyAiIFN5c3RlbS5sdGZyYW1ld29yayIKIAkgICAgOzsKIAkgICotKi1uZXRic2QqKQogCSAgICAjIERvbid0IGxpbmsgd2l0aCBsaWJjIHVudGlsIHRoZSBhLm91dCBsZC5zbyBpcyBmaXhlZC4KQEAgLTY0OTgsNyArNzYyOCw3IEBACiAJICAqKQogCSAgICAjIEFkZCBsaWJjIHRvIGRlcGxpYnMgb24gYWxsIG90aGVyIHN5c3RlbXMgaWYgbmVjZXNzYXJ5LgogCSAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9uZWVkX2xjIiA9ICJ5ZXMiOyB0aGVuCi0JICAgICAgZGVwbGlicz0iJGRlcGxpYnMgLWxjIgorCSAgICAgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAtbGMiCiAJICAgIGZpCiAJICAgIDs7CiAJICBlc2FjCkBAIC02NTQ3LDcgKzc2NzcsNyBAQAogCQlpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCiAJCSAgY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCiAJCSAgKiIgJGkgIiopCi0JCSAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKwkJICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKIAkJICAgIGk9IiIKIAkJICAgIDs7CiAJCSAgZXNhYwpAQCAtNjU1OCwyMSArNzY4OCwyMSBAQAogCQkgIHNldCBkdW1teSAkZGVwbGliX21hdGNoZXM7IHNoaWZ0CiAJCSAgZGVwbGliX21hdGNoPSQxCiAJCSAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwIDsgdGhlbgotCQkgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCisJCSAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCiAJCSAgZWxzZQogCQkgICAgZHJvcHBlZGRlcHM9eWVzCi0JCSAgICAkRUNITworCQkgICAgZWNobwogCQkgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBkeW5hbWljIGxpbmtlciBkb2VzIG5vdCBhY2NlcHQgbmVlZGVkIGxpYnJhcnkgJGkuIgotCQkgICAgJEVDSE8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JCSAgICAkRUNITyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKLQkJICAgICRFQ0hPICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIEkgYmVsaWV2ZSB5b3UgZG8gbm90IGhhdmUiCi0JCSAgICAkRUNITyAiKioqIGJlY2F1c2UgYSB0ZXN0X2NvbXBpbGUgZGlkIHJldmVhbCB0aGF0IHRoZSBsaW5rZXIgZGlkIG5vdCB1c2UgaXQgZm9yIgotCQkgICAgJEVDSE8gIioqKiBpdHMgZHluYW1pYyBkZXBlbmRlbmN5IGxpc3QgdGhhdCBwcm9ncmFtcyBnZXQgcmVzb2x2ZWQgd2l0aCBhdCBydW50aW1lLiIKKwkJICAgIGVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCisJCSAgICBlY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgorCQkgICAgZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCBJIGJlbGlldmUgeW91IGRvIG5vdCBoYXZlIgorCQkgICAgZWNobyAiKioqIGJlY2F1c2UgYSB0ZXN0X2NvbXBpbGUgZGlkIHJldmVhbCB0aGF0IHRoZSBsaW5rZXIgZGlkIG5vdCB1c2UgaXQgZm9yIgorCQkgICAgZWNobyAiKioqIGl0cyBkeW5hbWljIGRlcGVuZGVuY3kgbGlzdCB0aGF0IHByb2dyYW1zIGdldCByZXNvbHZlZCB3aXRoIGF0IHJ1bnRpbWUuIgogCQkgIGZpCiAJCWZpCiAJCTs7CiAJICAgICAgKikKLQkJbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCisJCWZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKIAkJOzsKIAkgICAgICBlc2FjCiAJICAgIGRvbmUKQEAgLTY1OTAsNyArNzcyMCw3IEBACiAJCSAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgogCQkgICAgY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCiAJCSAgICAqIiAkaSAiKikKLQkJICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCisJCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKIAkJICAgICAgaT0iIgogCQkgICAgICA7OwogCQkgICAgZXNhYwpAQCAtNjYwMSwyOSArNzczMSwyOSBAQAogCQkgICAgc2V0IGR1bW15ICRkZXBsaWJfbWF0Y2hlczsgc2hpZnQKIAkJICAgIGRlcGxpYl9tYXRjaD0kMQogCQkgICAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwIDsgdGhlbgotCQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKwkJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgogCQkgICAgZWxzZQogCQkgICAgICBkcm9wcGVkZGVwcz15ZXMKLQkJICAgICAgJEVDSE8KKwkJICAgICAgZWNobwogCQkgICAgICAkRUNITyAiKioqIFdhcm5pbmc6IGR5bmFtaWMgbGlua2VyIGRvZXMgbm90IGFjY2VwdCBuZWVkZWQgbGlicmFyeSAkaS4iCi0JCSAgICAgICRFQ0hPICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgotCQkgICAgICAkRUNITyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKLQkJICAgICAgJEVDSE8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKLQkJICAgICAgJEVDSE8gIioqKiBiZWNhdXNlIGEgdGVzdF9jb21waWxlIGRpZCByZXZlYWwgdGhhdCB0aGUgbGlua2VyIGRpZCBub3QgdXNlIHRoaXMgb25lIgotCQkgICAgICAkRUNITyAiKioqIGFzIGEgZHluYW1pYyBkZXBlbmRlbmN5IHRoYXQgcHJvZ3JhbXMgY2FuIGdldCByZXNvbHZlZCB3aXRoIGF0IHJ1bnRpbWUuIgorCQkgICAgICBlY2hvICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgorCQkgICAgICBlY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgorCQkgICAgICBlY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCisJCSAgICAgIGVjaG8gIioqKiBiZWNhdXNlIGEgdGVzdF9jb21waWxlIGRpZCByZXZlYWwgdGhhdCB0aGUgbGlua2VyIGRpZCBub3QgdXNlIHRoaXMgb25lIgorCQkgICAgICBlY2hvICIqKiogYXMgYSBkeW5hbWljIGRlcGVuZGVuY3kgdGhhdCBwcm9ncmFtcyBjYW4gZ2V0IHJlc29sdmVkIHdpdGggYXQgcnVudGltZS4iCiAJCSAgICBmaQogCQkgIGZpCiAJCWVsc2UKIAkJICBkcm9wcGVkZGVwcz15ZXMKLQkJICAkRUNITworCQkgIGVjaG8KIAkJICAkRUNITyAiKioqIFdhcm5pbmchICBMaWJyYXJ5ICRpIGlzIG5lZWRlZCBieSB0aGlzIGxpYnJhcnkgYnV0IEkgd2FzIG5vdCBhYmxlIHRvIgotCQkgICRFQ0hPICIqKiogbWFrZSBpdCBsaW5rIGluISAgWW91IHdpbGwgcHJvYmFibHkgbmVlZCB0byBpbnN0YWxsIGl0IG9yIHNvbWUiCi0JCSAgJEVDSE8gIioqKiBsaWJyYXJ5IHRoYXQgaXQgZGVwZW5kcyBvbiBiZWZvcmUgdGhpcyBsaWJyYXJ5IHdpbGwgYmUgZnVsbHkiCi0JCSAgJEVDSE8gIioqKiBmdW5jdGlvbmFsLiAgSW5zdGFsbGluZyBpdCBiZWZvcmUgY29udGludWluZyB3b3VsZCBiZSBldmVuIGJldHRlci4iCisJCSAgZWNobyAiKioqIG1ha2UgaXQgbGluayBpbiEgIFlvdSB3aWxsIHByb2JhYmx5IG5lZWQgdG8gaW5zdGFsbCBpdCBvciBzb21lIgorCQkgIGVjaG8gIioqKiBsaWJyYXJ5IHRoYXQgaXQgZGVwZW5kcyBvbiBiZWZvcmUgdGhpcyBsaWJyYXJ5IHdpbGwgYmUgZnVsbHkiCisJCSAgZWNobyAiKioqIGZ1bmN0aW9uYWwuICBJbnN0YWxsaW5nIGl0IGJlZm9yZSBjb250aW51aW5nIHdvdWxkIGJlIGV2ZW4gYmV0dGVyLiIKIAkJZmkKIAkJOzsKIAkgICAgICAqKQotCQluZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKwkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgogCQk7OwogCSAgICAgIGVzYWMKIAkgICAgZG9uZQpAQCAtNjY0MCwxNSArNzc3MCwyNyBAQAogCSAgICAgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KIAkJY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCiAJCSoiICRhX2RlcGxpYiAiKikKLQkJICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisJCSAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKIAkJICBhX2RlcGxpYj0iIgogCQkgIDs7CiAJCWVzYWMKIAkgICAgICBmaQogCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCiAJCWxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAorCQlpZiB0ZXN0IC1uICIkZmlsZV9tYWdpY19nbG9iIjsgdGhlbgorCQkgIGxpYm5hbWVnbG9iPWBmdW5jX2VjaG9fYWxsICIkbGlibmFtZSIgfCAkU0VEIC1lICRmaWxlX21hZ2ljX2dsb2JgCisJCWVsc2UKKwkJICBsaWJuYW1lZ2xvYj0kbGlibmFtZQorCQlmaQorCQl0ZXN0ICIkd2FudF9ub2Nhc2VnbG9iIiA9IHllcyAmJiBub2Nhc2VnbG9iPWBzaG9wdCAtcCBub2Nhc2VnbG9iYAogCQlmb3IgaSBpbiAkbGliX3NlYXJjaF9wYXRoICRzeXNfbGliX3NlYXJjaF9wYXRoICRzaGxpYl9zZWFyY2hfcGF0aDsgZG8KLQkJICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVbLi1dKiAyPi9kZXYvbnVsbGAKKwkJICBpZiB0ZXN0ICIkd2FudF9ub2Nhc2VnbG9iIiA9IHllczsgdGhlbgorCQkgICAgc2hvcHQgLXMgbm9jYXNlZ2xvYgorCQkgICAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lZ2xvYlsuLV0qIDI+L2Rldi9udWxsYAorCQkgICAgJG5vY2FzZWdsb2IKKwkJICBlbHNlCisJCSAgICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVnbG9iWy4tXSogMj4vZGV2L251bGxgCisJCSAgZmkKIAkJICBmb3IgcG90ZW50X2xpYiBpbiAkcG90ZW50aWFsX2xpYnM7IGRvCiAJCSAgICAgICMgRm9sbG93IHNvZnQgbGlua3MuCiAJCSAgICAgIGlmIGxzIC1sTGQgIiRwb3RlbnRfbGliIiAyPi9kZXYvbnVsbCB8CkBAIC02NjY1LDEzICs3ODA3LDEzIEBACiAJCQlwb3RsaWJsaW5rPWBscyAtbGQgJHBvdGxpYiB8ICR7U0VEfSAncy8uKiAtPiAvLydgCiAJCQljYXNlICRwb3RsaWJsaW5rIGluCiAJCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIHBvdGxpYj0iJHBvdGxpYmxpbmsiOzsKLQkJCSopIHBvdGxpYj1gJEVDSE8gIlgkcG90bGliIiB8ICRYc2VkIC1lICdzLFteL10qJCwsJ2AiJHBvdGxpYmxpbmsiOzsKKwkJCSopIHBvdGxpYj1gJEVDSE8gIiRwb3RsaWIiIHwgJFNFRCAncyxbXi9dKiQsLCdgIiRwb3RsaWJsaW5rIjs7CiAJCQllc2FjCiAJCSAgICAgIGRvbmUKIAkJICAgICAgaWYgZXZhbCAkZmlsZV9tYWdpY19jbWQgXCJcJHBvdGxpYlwiIDI+L2Rldi9udWxsIHwKIAkJCSAkU0VEIC1lIDEwcSB8CiAJCQkgJEVHUkVQICIkZmlsZV9tYWdpY19yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KLQkJCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKwkJCWZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCiAJCQlhX2RlcGxpYj0iIgogCQkJYnJlYWsgMgogCQkgICAgICBmaQpAQCAtNjY4MCwxMiArNzgyMiwxMiBAQAogCSAgICAgIGZpCiAJICAgICAgaWYgdGVzdCAtbiAiJGFfZGVwbGliIiA7IHRoZW4KIAkJZHJvcHBlZGRlcHM9eWVzCi0JCSRFQ0hPCisJCWVjaG8KIAkJJEVDSE8gIioqKiBXYXJuaW5nOiBsaW5rZXIgcGF0aCBkb2VzIG5vdCBoYXZlIHJlYWwgZmlsZSBmb3IgbGlicmFyeSAkYV9kZXBsaWIuIgotCQkkRUNITyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKLQkJJEVDSE8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCi0JCSRFQ0hPICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCi0JCSRFQ0hPICIqKiogYmVjYXVzZSBJIGRpZCBjaGVjayB0aGUgbGlua2VyIHBhdGggbG9va2luZyBmb3IgYSBmaWxlIHN0YXJ0aW5nIgorCQllY2hvICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgorCQllY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgorCQllY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCisJCWVjaG8gIioqKiBiZWNhdXNlIEkgZGlkIGNoZWNrIHRoZSBsaW5rZXIgcGF0aCBsb29raW5nIGZvciBhIGZpbGUgc3RhcnRpbmciCiAJCWlmIHRlc3QgLXogIiRwb3RsaWIiIDsgdGhlbgogCQkgICRFQ0hPICIqKiogd2l0aCAkbGlibmFtZSBidXQgbm8gY2FuZGlkYXRlcyB3ZXJlIGZvdW5kLiAoLi4uZm9yIGZpbGUgbWFnaWMgdGVzdCkiCiAJCWVsc2UKQEAgLTY2OTYsNyArNzgzOCw3IEBACiAJICAgICAgOzsKIAkgICAgKikKIAkgICAgICAjIEFkZCBhIC1MIGFyZ3VtZW50LgotCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgogCSAgICAgIDs7CiAJICAgIGVzYWMKIAkgIGRvbmUgIyBHb25lIHRocm91Z2ggYWxsIGRlcGxpYnMuCkBAIC02NzEyLDcgKzc4NTQsNyBAQAogCSAgICAgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KIAkJY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCiAJCSoiICRhX2RlcGxpYiAiKikKLQkJICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisJCSAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKIAkJICBhX2RlcGxpYj0iIgogCQkgIDs7CiAJCWVzYWMKQEAgLTY3MjMsOSArNzg2NSw5IEBACiAJCSAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lWy4tXSogMj4vZGV2L251bGxgCiAJCSAgZm9yIHBvdGVudF9saWIgaW4gJHBvdGVudGlhbF9saWJzOyBkbwogCQkgICAgcG90bGliPSIkcG90ZW50X2xpYiIgIyBzZWUgc3ltbGluay1jaGVjayBhYm92ZSBpbiBmaWxlX21hZ2ljIHRlc3QKLQkJICAgIGlmIGV2YWwgIlwkRUNITyBcIlgkcG90ZW50X2xpYlwiIiAyPi9kZXYvbnVsbCB8ICRYc2VkIC1lIDEwcSB8IFwKKwkJICAgIGlmIGV2YWwgIlwkRUNITyBcIiRwb3RlbnRfbGliXCIiIDI+L2Rldi9udWxsIHwgJFNFRCAxMHEgfCBcCiAJCSAgICAgICAkRUdSRVAgIiRtYXRjaF9wYXR0ZXJuX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgotCQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisJCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCiAJCSAgICAgIGFfZGVwbGliPSIiCiAJCSAgICAgIGJyZWFrIDIKIAkJICAgIGZpCkBAIC02NzM0LDEyICs3ODc2LDEyIEBACiAJICAgICAgZmkKIAkgICAgICBpZiB0ZXN0IC1uICIkYV9kZXBsaWIiIDsgdGhlbgogCQlkcm9wcGVkZGVwcz15ZXMKLQkJJEVDSE8KKwkJZWNobwogCQkkRUNITyAiKioqIFdhcm5pbmc6IGxpbmtlciBwYXRoIGRvZXMgbm90IGhhdmUgcmVhbCBmaWxlIGZvciBsaWJyYXJ5ICRhX2RlcGxpYi4iCi0JCSRFQ0hPICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgotCQkkRUNITyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKLQkJJEVDSE8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKLQkJJEVDSE8gIioqKiBiZWNhdXNlIEkgZGlkIGNoZWNrIHRoZSBsaW5rZXIgcGF0aCBsb29raW5nIGZvciBhIGZpbGUgc3RhcnRpbmciCisJCWVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCisJCWVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJCWVjaG8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKKwkJZWNobyAiKioqIGJlY2F1c2UgSSBkaWQgY2hlY2sgdGhlIGxpbmtlciBwYXRoIGxvb2tpbmcgZm9yIGEgZmlsZSBzdGFydGluZyIKIAkJaWYgdGVzdCAteiAiJHBvdGxpYiIgOyB0aGVuCiAJCSAgJEVDSE8gIioqKiB3aXRoICRsaWJuYW1lIGJ1dCBubyBjYW5kaWRhdGVzIHdlcmUgZm91bmQuICguLi5mb3IgcmVnZXggcGF0dGVybiB0ZXN0KSIKIAkJZWxzZQpAQCAtNjc1MCwzMiArNzg5MiwzMiBAQAogCSAgICAgIDs7CiAJICAgICopCiAJICAgICAgIyBBZGQgYSAtTCBhcmd1bWVudC4KLQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKIAkgICAgICA7OwogCSAgICBlc2FjCiAJICBkb25lICMgR29uZSB0aHJvdWdoIGFsbCBkZXBsaWJzLgogCSAgOzsKIAlub25lIHwgdW5rbm93biB8ICopCiAJICBuZXdkZXBsaWJzPSIiCi0JICB0bXBfZGVwbGlicz1gJEVDSE8gIlggJGRlcGxpYnMiIHwgJFhzZWQgXAotCSAgICAgIC1lICdzLyAtbGMkLy8nIC1lICdzLyAtW0xSXVteIF0qLy9nJ2AKKwkgIHRtcF9kZXBsaWJzPWAkRUNITyAiICRkZXBsaWJzIiB8ICRTRUQgJ3MvIC1sYyQvLzsgcy8gLVtMUl1bXiBdKi8vZydgCiAJICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCiAJICAgIGZvciBpIGluICRwcmVkZXBzICRwb3N0ZGVwcyA7IGRvCiAJICAgICAgIyBjYW4ndCB1c2UgWHNlZCBiZWxvdywgYmVjYXVzZSAkaSBtaWdodCBjb250YWluICcvJwotCSAgICAgIHRtcF9kZXBsaWJzPWAkRUNITyAiWCAkdG1wX2RlcGxpYnMiIHwgJFhzZWQgLWUgInMsJGksLCJgCisJICAgICAgdG1wX2RlcGxpYnM9YCRFQ0hPICIgJHRtcF9kZXBsaWJzIiB8ICRTRUQgInMsJGksLCJgCiAJICAgIGRvbmUKIAkgIGZpCi0JICBpZiAkRUNITyAiWCAkdG1wX2RlcGxpYnMiIHwgJFhzZWQgLWUgJ3MvWwkgXS8vZycgfAotCSAgICAgJEdSRVAgLiA+L2Rldi9udWxsOyB0aGVuCi0JICAgICRFQ0hPCisJICBjYXNlICR0bXBfZGVwbGlicyBpbgorCSAgKlshXAlcIF0qKQorCSAgICBlY2hvCiAJICAgIGlmIHRlc3QgIlgkZGVwbGlic19jaGVja19tZXRob2QiID0gIlhub25lIjsgdGhlbgotCSAgICAgICRFQ0hPICIqKiogV2FybmluZzogaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBwbGF0Zm9ybS4iCisJICAgICAgZWNobyAiKioqIFdhcm5pbmc6IGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGFyZSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgcGxhdGZvcm0uIgogCSAgICBlbHNlCi0JICAgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBhcmUgbm90IGtub3duIHRvIGJlIHN1cHBvcnRlZC4iCisJICAgICAgZWNobyAiKioqIFdhcm5pbmc6IGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGFyZSBub3Qga25vd24gdG8gYmUgc3VwcG9ydGVkLiIKIAkgICAgZmkKLQkgICAgJEVDSE8gIioqKiBBbGwgZGVjbGFyZWQgaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIGJlaW5nIGRyb3BwZWQuIgorCSAgICBlY2hvICIqKiogQWxsIGRlY2xhcmVkIGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGFyZSBiZWluZyBkcm9wcGVkLiIKIAkgICAgZHJvcHBlZGRlcHM9eWVzCi0JICBmaQorCSAgICA7OworCSAgZXNhYwogCSAgOzsKIAllc2FjCiAJdmVyc3VmZml4PSR2ZXJzdWZmaXhfc2F2ZQpAQCAtNjc4NywyMyArNzkyOSwyMyBAQAogCWNhc2UgJGhvc3QgaW4KIAkqLSotcmhhcHNvZHkqIHwgKi0qLWRhcndpbjEuWzAxMl0pCiAJICAjIE9uIFJoYXBzb2R5IHJlcGxhY2UgdGhlIEMgbGlicmFyeSB3aXRoIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCi0JICBuZXdkZXBsaWJzPWAkRUNITyAiWCAkbmV3ZGVwbGlicyIgfCAkWHNlZCAtZSAncy8gLWxjIC8gU3lzdGVtLmx0ZnJhbWV3b3JrIC8nYAorCSAgbmV3ZGVwbGlicz1gJEVDSE8gIiAkbmV3ZGVwbGlicyIgfCAkU0VEICdzLyAtbGMgLyBTeXN0ZW0ubHRmcmFtZXdvcmsgLydgCiAJICA7OwogCWVzYWMKIAogCWlmIHRlc3QgIiRkcm9wcGVkZGVwcyIgPSB5ZXM7IHRoZW4KIAkgIGlmIHRlc3QgIiRtb2R1bGUiID0geWVzOyB0aGVuCi0JICAgICRFQ0hPCi0JICAgICRFQ0hPICIqKiogV2FybmluZzogbGlidG9vbCBjb3VsZCBub3Qgc2F0aXNmeSBhbGwgZGVjbGFyZWQgaW50ZXItbGlicmFyeSIKKwkgICAgZWNobworCSAgICBlY2hvICIqKiogV2FybmluZzogbGlidG9vbCBjb3VsZCBub3Qgc2F0aXNmeSBhbGwgZGVjbGFyZWQgaW50ZXItbGlicmFyeSIKIAkgICAgJEVDSE8gIioqKiBkZXBlbmRlbmNpZXMgb2YgbW9kdWxlICRsaWJuYW1lLiAgVGhlcmVmb3JlLCBsaWJ0b29sIHdpbGwgY3JlYXRlIgotCSAgICAkRUNITyAiKioqIGEgc3RhdGljIG1vZHVsZSwgdGhhdCBzaG91bGQgd29yayBhcyBsb25nIGFzIHRoZSBkbG9wZW5pbmciCi0JICAgICRFQ0hPICIqKiogYXBwbGljYXRpb24gaXMgbGlua2VkIHdpdGggdGhlIC1kbG9wZW4gZmxhZy4iCisJICAgIGVjaG8gIioqKiBhIHN0YXRpYyBtb2R1bGUsIHRoYXQgc2hvdWxkIHdvcmsgYXMgbG9uZyBhcyB0aGUgZGxvcGVuaW5nIgorCSAgICBlY2hvICIqKiogYXBwbGljYXRpb24gaXMgbGlua2VkIHdpdGggdGhlIC1kbG9wZW4gZmxhZy4iCiAJICAgIGlmIHRlc3QgLXogIiRnbG9iYWxfc3ltYm9sX3BpcGUiOyB0aGVuCi0JICAgICAgJEVDSE8KLQkgICAgICAkRUNITyAiKioqIEhvd2V2ZXIsIHRoaXMgd291bGQgb25seSB3b3JrIGlmIGxpYnRvb2wgd2FzIGFibGUgdG8gZXh0cmFjdCBzeW1ib2wiCi0JICAgICAgJEVDSE8gIioqKiBsaXN0cyBmcm9tIGEgcHJvZ3JhbSwgdXNpbmcgXGBubScgb3IgZXF1aXZhbGVudCwgYnV0IGxpYnRvb2wgY291bGQiCi0JICAgICAgJEVDSE8gIioqKiBub3QgZmluZCBzdWNoIGEgcHJvZ3JhbS4gIFNvLCB0aGlzIG1vZHVsZSBpcyBwcm9iYWJseSB1c2VsZXNzLiIKLQkgICAgICAkRUNITyAiKioqIFxgbm0nIGZyb20gR05VIGJpbnV0aWxzIGFuZCBhIGZ1bGwgcmVidWlsZCBtYXkgaGVscC4iCisJICAgICAgZWNobworCSAgICAgIGVjaG8gIioqKiBIb3dldmVyLCB0aGlzIHdvdWxkIG9ubHkgd29yayBpZiBsaWJ0b29sIHdhcyBhYmxlIHRvIGV4dHJhY3Qgc3ltYm9sIgorCSAgICAgIGVjaG8gIioqKiBsaXN0cyBmcm9tIGEgcHJvZ3JhbSwgdXNpbmcgXGBubScgb3IgZXF1aXZhbGVudCwgYnV0IGxpYnRvb2wgY291bGQiCisJICAgICAgZWNobyAiKioqIG5vdCBmaW5kIHN1Y2ggYSBwcm9ncmFtLiAgU28sIHRoaXMgbW9kdWxlIGlzIHByb2JhYmx5IHVzZWxlc3MuIgorCSAgICAgIGVjaG8gIioqKiBcYG5tJyBmcm9tIEdOVSBiaW51dGlscyBhbmQgYSBmdWxsIHJlYnVpbGQgbWF5IGhlbHAuIgogCSAgICBmaQogCSAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0gbm87IHRoZW4KIAkgICAgICBvbGRsaWJzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgpAQCAtNjgxMywxNiArNzk1NSwxNiBAQAogCSAgICAgIGJ1aWxkX2xpYnRvb2xfbGlicz1ubwogCSAgICBmaQogCSAgZWxzZQotCSAgICAkRUNITyAiKioqIFRoZSBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyB0aGF0IGhhdmUgYmVlbiBkcm9wcGVkIGhlcmUgd2lsbCBiZSIKLQkgICAgJEVDSE8gIioqKiBhdXRvbWF0aWNhbGx5IGFkZGVkIHdoZW5ldmVyIGEgcHJvZ3JhbSBpcyBsaW5rZWQgd2l0aCB0aGlzIGxpYnJhcnkiCi0JICAgICRFQ0hPICIqKiogb3IgaXMgZGVjbGFyZWQgdG8gLWRsb3BlbiBpdC4iCisJICAgIGVjaG8gIioqKiBUaGUgaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgdGhhdCBoYXZlIGJlZW4gZHJvcHBlZCBoZXJlIHdpbGwgYmUiCisJICAgIGVjaG8gIioqKiBhdXRvbWF0aWNhbGx5IGFkZGVkIHdoZW5ldmVyIGEgcHJvZ3JhbSBpcyBsaW5rZWQgd2l0aCB0aGlzIGxpYnJhcnkiCisJICAgIGVjaG8gIioqKiBvciBpcyBkZWNsYXJlZCB0byAtZGxvcGVuIGl0LiIKIAogCSAgICBpZiB0ZXN0ICIkYWxsb3dfdW5kZWZpbmVkIiA9IG5vOyB0aGVuCi0JICAgICAgJEVDSE8KLQkgICAgICAkRUNITyAiKioqIFNpbmNlIHRoaXMgbGlicmFyeSBtdXN0IG5vdCBjb250YWluIHVuZGVmaW5lZCBzeW1ib2xzLCIKLQkgICAgICAkRUNITyAiKioqIGJlY2F1c2UgZWl0aGVyIHRoZSBwbGF0Zm9ybSBkb2VzIG5vdCBzdXBwb3J0IHRoZW0gb3IiCi0JICAgICAgJEVDSE8gIioqKiBpdCB3YXMgZXhwbGljaXRseSByZXF1ZXN0ZWQgd2l0aCAtbm8tdW5kZWZpbmVkLCIKLQkgICAgICAkRUNITyAiKioqIGxpYnRvb2wgd2lsbCBvbmx5IGNyZWF0ZSBhIHN0YXRpYyB2ZXJzaW9uIG9mIGl0LiIKKwkgICAgICBlY2hvCisJICAgICAgZWNobyAiKioqIFNpbmNlIHRoaXMgbGlicmFyeSBtdXN0IG5vdCBjb250YWluIHVuZGVmaW5lZCBzeW1ib2xzLCIKKwkgICAgICBlY2hvICIqKiogYmVjYXVzZSBlaXRoZXIgdGhlIHBsYXRmb3JtIGRvZXMgbm90IHN1cHBvcnQgdGhlbSBvciIKKwkgICAgICBlY2hvICIqKiogaXQgd2FzIGV4cGxpY2l0bHkgcmVxdWVzdGVkIHdpdGggLW5vLXVuZGVmaW5lZCwiCisJICAgICAgZWNobyAiKioqIGxpYnRvb2wgd2lsbCBvbmx5IGNyZWF0ZSBhIHN0YXRpYyB2ZXJzaW9uIG9mIGl0LiIKIAkgICAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0gbm87IHRoZW4KIAkJb2xkbGlicz0iJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuJGxpYmV4dCIKIAkJYnVpbGRfbGlidG9vbF9saWJzPW1vZHVsZQpAQCAtNjgzOSw5ICs3OTgxLDkgQEAKICAgICAgICMgVGltZSB0byBjaGFuZ2UgYWxsIG91ciAiZm9vLmx0ZnJhbWV3b3JrIiBzdHVmZiBiYWNrIHRvICItZnJhbWV3b3JrIGZvbyIKICAgICAgIGNhc2UgJGhvc3QgaW4KIAkqLSotZGFyd2luKikKLQkgIG5ld2RlcGxpYnM9YCRFQ0hPICJYICRuZXdkZXBsaWJzIiB8ICRYc2VkIC1lICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAotCSAgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9YCRFQ0hPICJYICRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKLQkgIGRlcGxpYnM9YCRFQ0hPICJYICRkZXBsaWJzIiB8ICRYc2VkIC1lICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAorCSAgbmV3ZGVwbGlicz1gJEVDSE8gIiAkbmV3ZGVwbGlicyIgfCAkU0VEICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAorCSAgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9YCRFQ0hPICIgJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzIiB8ICRTRUQgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCisJICBkZXBsaWJzPWAkRUNITyAiICRkZXBsaWJzIiB8ICRTRUQgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCiAJICA7OwogICAgICAgZXNhYwogCkBAIC02ODU0LDcgKzc5OTYsNyBAQAogCSopCiAJICBjYXNlICIgJGRlcGxpYnMgIiBpbgogCSAgKiIgLUwkcGF0aC8kb2JqZGlyICIqKQotCSAgICBuZXdfbGlicz0iJG5ld19saWJzIC1MJHBhdGgvJG9iamRpciIgOzsKKwkgICAgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAtTCRwYXRoLyRvYmpkaXIiIDs7CiAJICBlc2FjCiAJICA7OwogCWVzYWMKQEAgLTY4NjQsMTAgKzgwMDYsMTAgQEAKIAktTCopCiAJICBjYXNlICIgJG5ld19saWJzICIgaW4KIAkgICoiICRkZXBsaWIgIiopIDs7Ci0JICAqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7CisJICAqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7CiAJICBlc2FjCiAJICA7OwotCSopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKKwkqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7CiAJZXNhYwogICAgICAgZG9uZQogICAgICAgZGVwbGlicz0iJG5ld19saWJzIgpAQCAtNjg4NCwxMCArODAyNiwxMiBAQAogCSAgaGFyZGNvZGVfbGliZGlycz0KIAkgIGRlcF9ycGF0aD0KIAkgIHJwYXRoPSIkZmluYWxpemVfcnBhdGgiCi0JICB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rICYmIHJwYXRoPSIkY29tcGlsZV9ycGF0aCRycGF0aCIKKwkgIHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rICYmIHJwYXRoPSIkY29tcGlsZV9ycGF0aCRycGF0aCIKIAkgIGZvciBsaWJkaXIgaW4gJHJwYXRoOyBkbwogCSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KIAkgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KKwkJZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCisJCWxpYmRpcj0kZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0CiAJCWlmIHRlc3QgLXogIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgogCQkgIGhhcmRjb2RlX2xpYmRpcnM9IiRsaWJkaXIiCiAJCWVsc2UKQEAgLTY4OTYsMTggKzgwNDAsMTggQEAKIAkJICAqIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiopCiAJCSAgICA7OwogCQkgICopCi0JCSAgICBoYXJkY29kZV9saWJkaXJzPSIkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKKwkJICAgIGZ1bmNfYXBwZW5kIGhhcmRjb2RlX2xpYmRpcnMgIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKIAkJICAgIDs7CiAJCSAgZXNhYwogCQlmaQogCSAgICAgIGVsc2UKIAkJZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotCQlkZXBfcnBhdGg9IiRkZXBfcnBhdGggJGZsYWciCisJCWZ1bmNfYXBwZW5kIGRlcF9ycGF0aCAiICRmbGFnIgogCSAgICAgIGZpCiAJICAgIGVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgogCSAgICAgIGNhc2UgIiRwZXJtX3JwYXRoICIgaW4KIAkgICAgICAqIiAkbGliZGlyICIqKSA7OwotCSAgICAgICopIHBlcm1fcnBhdGg9IiRwZXJtX3JwYXRoICRsaWJkaXIiIDs7CisJICAgICAgKikgZnVuY19hcHBlbmQgcGVybV9ycGF0aCAiICRsaWJkaXIiIDs7CiAJICAgICAgZXNhYwogCSAgICBmaQogCSAgZG9uZQpAQCAtNjkyNSw3ICs4MDY5LDcgQEAKIAkgICAgIyBXZSBzaG91bGQgc2V0IHRoZSBydW5wYXRoX3Zhci4KIAkgICAgcnBhdGg9CiAJICAgIGZvciBkaXIgaW4gJHBlcm1fcnBhdGg7IGRvCi0JICAgICAgcnBhdGg9IiRycGF0aCRkaXI6IgorCSAgICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIkZGlyOiIKIAkgICAgZG9uZQogCSAgICBldmFsICIkcnVucGF0aF92YXI9JyRycGF0aFwkJHJ1bnBhdGhfdmFyJzsgZXhwb3J0ICRydW5wYXRoX3ZhciIKIAkgIGZpCkBAIC02OTMzLDcgKzgwNzcsNyBAQAogCWZpCiAKIAlzaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgiCi0JdGVzdCAiJG1vZGUiICE9IHJlbGluayAmJiBzaGxpYnBhdGg9IiRjb21waWxlX3NobGlicGF0aCRzaGxpYnBhdGgiCisJdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbmsgJiYgc2hsaWJwYXRoPSIkY29tcGlsZV9zaGxpYnBhdGgkc2hsaWJwYXRoIgogCWlmIHRlc3QgLW4gIiRzaGxpYnBhdGgiOyB0aGVuCiAJICBldmFsICIkc2hsaWJwYXRoX3Zhcj0nJHNobGlicGF0aFwkJHNobGlicGF0aF92YXInOyBleHBvcnQgJHNobGlicGF0aF92YXIiCiAJZmkKQEAgLTY5NTksMTggKzgxMDMsMTggQEAKIAlsaW5rbmFtZXM9CiAJZm9yIGxpbmsKIAlkbwotCSAgbGlua25hbWVzPSIkbGlua25hbWVzICRsaW5rIgorCSAgZnVuY19hcHBlbmQgbGlua25hbWVzICIgJGxpbmsiCiAJZG9uZQogCiAJIyBVc2Ugc3RhbmRhcmQgb2JqZWN0cyBpZiB0aGV5IGFyZSBwaWMKLQl0ZXN0IC16ICIkcGljX2ZsYWciICYmIGxpYm9ianM9YCRFQ0hPICJYJGxpYm9ianMiIHwgJFNQMk5MIHwgJFhzZWQgLWUgIiRsbzJvIiB8ICROTDJTUGAKKwl0ZXN0IC16ICIkcGljX2ZsYWciICYmIGxpYm9ianM9YCRFQ0hPICIkbGlib2JqcyIgfCAkU1AyTkwgfCAkU0VEICIkbG8ybyIgfCAkTkwyU1BgCiAJdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KIAogCWRlbGZpbGVzPQogCWlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KIAkgICRvcHRfZHJ5X3J1biB8fCBjcCAiJGV4cG9ydF9zeW1ib2xzIiAiJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudWV4cCIKIAkgIGV4cG9ydF9zeW1ib2xzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS51ZXhwIgotCSAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMiCisJICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRleHBvcnRfc3ltYm9scyIKIAlmaQogCiAJb3JpZ19leHBvcnRfc3ltYm9scz0KQEAgLTcwMDEsMTQgKzgxNDUsNDYgQEAKIAkgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkZXhwb3J0X3N5bWJvbHMKIAkgICAgY21kcz0kZXhwb3J0X3N5bWJvbHNfY21kcwogCSAgICBzYXZlX2lmcz0iJElGUyI7IElGUz0nficKLQkgICAgZm9yIGNtZCBpbiAkY21kczsgZG8KKwkgICAgZm9yIGNtZDEgaW4gJGNtZHM7IGRvCiAJICAgICAgSUZTPSIkc2F2ZV9pZnMiCi0JICAgICAgZXZhbCBjbWQ9XCIkY21kXCIKLQkgICAgICBmdW5jX2xlbiAiICRjbWQiCi0JICAgICAgbGVuPSRmdW5jX2xlbl9yZXN1bHQKLQkgICAgICBpZiB0ZXN0ICIkbGVuIiAtbHQgIiRtYXhfY21kX2xlbiIgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IHRoZW4KKwkgICAgICAjIFRha2UgdGhlIG5vcm1hbCBicmFuY2ggaWYgdGhlIG5tX2ZpbGVfbGlzdF9zcGVjIGJyYW5jaAorCSAgICAgICMgZG9lc24ndCB3b3JrIG9yIGlmIHRvb2wgY29udmVyc2lvbiBpcyBub3QgbmVlZGVkLgorCSAgICAgIGNhc2UgJG5tX2ZpbGVfbGlzdF9zcGVjfiR0b190b29sX2ZpbGVfY21kIGluCisJCSp+ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcCB8ICp+ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIgfCB+KikKKwkJICB0cnlfbm9ybWFsX2JyYW5jaD15ZXMKKwkJICBldmFsIGNtZD1cIiRjbWQxXCIKKwkJICBmdW5jX2xlbiAiICRjbWQiCisJCSAgbGVuPSRmdW5jX2xlbl9yZXN1bHQKKwkJICA7OworCQkqKQorCQkgIHRyeV9ub3JtYWxfYnJhbmNoPW5vCisJCSAgOzsKKwkgICAgICBlc2FjCisJICAgICAgaWYgdGVzdCAiJHRyeV9ub3JtYWxfYnJhbmNoIiA9IHllcyBcCisJCSAmJiB7IHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiBcCisJCSAgICAgIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB9CisJICAgICAgdGhlbgogCQlmdW5jX3Nob3dfZXZhbCAiJGNtZCIgJ2V4aXQgJD8nCiAJCXNraXBwZWRfZXhwb3J0PWZhbHNlCisJICAgICAgZWxpZiB0ZXN0IC1uICIkbm1fZmlsZV9saXN0X3NwZWMiOyB0aGVuCisJCWZ1bmNfYmFzZW5hbWUgIiRvdXRwdXQiCisJCW91dHB1dF9sYT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKKwkJc2F2ZV9saWJvYmpzPSRsaWJvYmpzCisJCXNhdmVfb3V0cHV0PSRvdXRwdXQKKwkJb3V0cHV0PSR7b3V0cHV0X29iamRpcn0vJHtvdXRwdXRfbGF9Lm5tCisJCWZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgorCQlsaWJvYmpzPSRubV9maWxlX2xpc3Rfc3BlYyRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKKwkJZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgorCQlmdW5jX3ZlcmJvc2UgImNyZWF0aW5nICROTSBpbnB1dCBmaWxlIGxpc3Q6ICRvdXRwdXQiCisJCWZvciBvYmogaW4gJHNhdmVfbGlib2JqczsgZG8KKwkJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKKwkJICAkRUNITyAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIKKwkJZG9uZSA+ICIkb3V0cHV0IgorCQlldmFsIGNtZD1cIiRjbWQxXCIKKwkJZnVuY19zaG93X2V2YWwgIiRjbWQiICdleGl0ICQ/JworCQlvdXRwdXQ9JHNhdmVfb3V0cHV0CisJCWxpYm9ianM9JHNhdmVfbGlib2JqcworCQlza2lwcGVkX2V4cG9ydD1mYWxzZQogCSAgICAgIGVsc2UKIAkJIyBUaGUgY29tbWFuZCBsaW5lIGlzIHRvbyBsb25nIHRvIGV4ZWN1dGUgaW4gb25lIHN0ZXAuCiAJCWZ1bmNfdmVyYm9zZSAidXNpbmcgcmVsb2FkYWJsZSBvYmplY3QgZmlsZSBmb3IgZXhwb3J0IGxpc3QuLi4iCkBAIC03MDI5LDcgKzgyMDUsNyBAQAogCWlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KIAkgIHRtcF9leHBvcnRfc3ltYm9scz0iJGV4cG9ydF9zeW1ib2xzIgogCSAgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiICYmIHRtcF9leHBvcnRfc3ltYm9scz0iJG9yaWdfZXhwb3J0X3N5bWJvbHMiCi0JICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnJEVDSE8gIlgkaW5jbHVkZV9leHBzeW1zIiB8ICRYc2VkIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIicKKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJwogCWZpCiAKIAlpZiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiICYmIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIjsgdGhlbgpAQCAtNzA0MSw3ICs4MjE3LDcgQEAKIAkgICMgZ2xvYmFsIHZhcmlhYmxlcy4gam9pbigxKSB3b3VsZCBiZSBuaWNlIGhlcmUsIGJ1dCB1bmZvcnR1bmF0ZWx5CiAJICAjIGlzbid0IGEgYmxlc3NlZCB0b29sLgogCSAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWUgJy9bICxdREFUQS8hZDtzLFwoLipcKVwoWyBcLF0uKlwpLHN8XlwxJHxcMVwyfCwnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyCi0JICBkZWxmaWxlcz0iJGRlbGZpbGVzICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCisJICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCiAJICBleHBvcnRfc3ltYm9scz0kb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYKIAkgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1mICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciA8ICRvcmlnX2V4cG9ydF9zeW1ib2xzID4gJGV4cG9ydF9zeW1ib2xzCiAJZmkKQEAgLTcwNTEsNyArODIyNyw3IEBACiAJICBjYXNlICIgJGNvbnZlbmllbmNlICIgaW4KIAkgICoiICR0ZXN0X2RlcGxpYiAiKikgOzsKIAkgICopCi0JICAgIHRtcF9kZXBsaWJzPSIkdG1wX2RlcGxpYnMgJHRlc3RfZGVwbGliIgorCSAgICBmdW5jX2FwcGVuZCB0bXBfZGVwbGlicyAiICR0ZXN0X2RlcGxpYiIKIAkgICAgOzsKIAkgIGVzYWMKIAlkb25lCkBAIC03MDcxLDIxICs4MjQ3LDIxIEBACiAJICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CiAJICBlbHNlCiAJICAgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCi0JICAgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorCSAgICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgogCiAJICAgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRjb252ZW5pZW5jZQotCSAgICBsaWJvYmpzPSIkbGlib2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKwkgICAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgogCSAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQogCSAgZmkKIAlmaQogCiAJaWYgdGVzdCAiJHRocmVhZF9zYWZlIiA9IHllcyAmJiB0ZXN0IC1uICIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjIjsgdGhlbgogCSAgZXZhbCBmbGFnPVwiJHRocmVhZF9zYWZlX2ZsYWdfc3BlY1wiCi0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJGZsYWciCisJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkZmxhZyIKIAlmaQogCiAJIyBNYWtlIGEgYmFja3VwIG9mIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IHdoZW4gcmVsaW5raW5nCi0JaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCisJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgogCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkUk0gJHtyZWFsbmFtZX1VICYmICRNViAkcmVhbG5hbWUgJHtyZWFsbmFtZX1VKScgfHwgZXhpdCAkPwogCWZpCiAKQEAgLTcxMzAsNyArODMwNiw4IEBACiAJICAgIHNhdmVfbGlib2Jqcz0kbGlib2JqcwogCSAgZmkKIAkgIHNhdmVfb3V0cHV0PSRvdXRwdXQKLQkgIG91dHB1dF9sYT1gJEVDSE8gIlgkb3V0cHV0IiB8ICRYc2VkIC1lICIkYmFzZW5hbWUiYAorCSAgZnVuY19iYXNlbmFtZSAiJG91dHB1dCIKKwkgIG91dHB1dF9sYT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKIAogCSAgIyBDbGVhciB0aGUgcmVsb2FkYWJsZSBvYmplY3QgY3JlYXRpb24gY29tbWFuZCBxdWV1ZSBhbmQKIAkgICMgaW5pdGlhbGl6ZSBrIHRvIG9uZS4KQEAgLTcxNDMsMTMgKzgzMjAsMTYgQEAKIAkgIGlmIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiICYmIHRlc3QgIlgkc2tpcHBlZF9leHBvcnQiICE9ICJYOiIgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgogCSAgICBvdXRwdXQ9JHtvdXRwdXRfb2JqZGlyfS8ke291dHB1dF9sYX0ubG5rc2NyaXB0CiAJICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgR05VIGxkIHNjcmlwdDogJG91dHB1dCIKLQkgICAgJEVDSE8gJ0lOUFVUICgnID4gJG91dHB1dAorCSAgICBlY2hvICdJTlBVVCAoJyA+ICRvdXRwdXQKIAkgICAgZm9yIG9iaiBpbiAkc2F2ZV9saWJvYmpzCiAJICAgIGRvCi0JICAgICAgJEVDSE8gIiRvYmoiID4+ICRvdXRwdXQKKwkgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKKwkgICAgICAkRUNITyAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgPj4gJG91dHB1dAogCSAgICBkb25lCi0JICAgICRFQ0hPICcpJyA+PiAkb3V0cHV0Ci0JICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJG91dHB1dCIKKwkgICAgZWNobyAnKScgPj4gJG91dHB1dAorCSAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCisJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgorCSAgICBvdXRwdXQ9JGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAogCSAgZWxpZiB0ZXN0IC1uICIkc2F2ZV9saWJvYmpzIiAmJiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiICYmIHRlc3QgIlgkZmlsZV9saXN0X3NwZWMiICE9IFg7IHRoZW4KIAkgICAgb3V0cHV0PSR7b3V0cHV0X29iamRpcn0vJHtvdXRwdXRfbGF9LmxuawogCSAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nIGxpbmtlciBpbnB1dCBmaWxlIGxpc3Q6ICRvdXRwdXQiCkBAIC03MTYzLDEwICs4MzQzLDEyIEBACiAJICAgIGZpCiAJICAgIGZvciBvYmoKIAkgICAgZG8KLQkgICAgICAkRUNITyAiJG9iaiIgPj4gJG91dHB1dAorCSAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2JqIgorCSAgICAgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiA+PiAkb3V0cHV0CiAJICAgIGRvbmUKLQkgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkb3V0cHV0IgotCSAgICBvdXRwdXQ9JGZpcnN0b2JqXCIkZmlsZV9saXN0X3NwZWMkb3V0cHV0XCIKKwkgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgorCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKwkgICAgb3V0cHV0PSRmaXJzdG9ialwiJGZpbGVfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiCiAJICBlbHNlCiAJICAgIGlmIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiOyB0aGVuCiAJICAgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyByZWxvYWRhYmxlIG9iamVjdCBmaWxlcy4uLiIKQEAgLTcxOTAsMTcgKzgzNzIsMTkgQEAKIAkJICAjIGNvbW1hbmQgdG8gdGhlIHF1ZXVlLgogCQkgIGlmIHRlc3QgIiRrIiAtZXEgMSA7IHRoZW4KIAkJICAgICMgVGhlIGZpcnN0IGZpbGUgZG9lc24ndCBoYXZlIGEgcHJldmlvdXMgY29tbWFuZCB0byBhZGQuCi0JCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiJHJlbG9hZF9jbWRzICRvYmpsaXN0ICRsYXN0X3JvYmpcIgorCQkgICAgcmVsb2FkX29ianM9JG9iamxpc3QKKwkJICAgIGV2YWwgY29uY2F0X2NtZHM9XCIkcmVsb2FkX2NtZHNcIgogCQkgIGVsc2UKIAkJICAgICMgQWxsIHN1YnNlcXVlbnQgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMgd2lsbCBsaW5rIGluCiAJCSAgICAjIHRoZSBsYXN0IG9uZSBjcmVhdGVkLgotCQkgICAgZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+JHJlbG9hZF9jbWRzICRvYmpsaXN0ICRsYXN0X3JvYmp+XCRSTSAkbGFzdF9yb2JqXCIKKwkJICAgIHJlbG9hZF9vYmpzPSIkb2JqbGlzdCAkbGFzdF9yb2JqIgorCQkgICAgZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+JHJlbG9hZF9jbWRzflwkUk0gJGxhc3Rfcm9ialwiCiAJCSAgZmkKIAkJICBsYXN0X3JvYmo9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0ke2t9LiRvYmpleHQKIAkJICBmdW5jX2FyaXRoICRrICsgMQogCQkgIGs9JGZ1bmNfYXJpdGhfcmVzdWx0CiAJCSAgb3V0cHV0PSRvdXRwdXRfb2JqZGlyLyRvdXRwdXRfbGEtJHtrfS4kb2JqZXh0Ci0JCSAgb2JqbGlzdD0kb2JqCisJCSAgb2JqbGlzdD0iICRvYmoiCiAJCSAgZnVuY19sZW4gIiAkbGFzdF9yb2JqIgogCQkgIGZ1bmNfYXJpdGggJGxlbjAgKyAkZnVuY19sZW5fcmVzdWx0CiAJCSAgbGVuPSRmdW5jX2FyaXRoX3Jlc3VsdApAQCAtNzIxMCwxMSArODM5NCwxMiBAQAogCSAgICAgICMgcmVsb2FkYWJsZSBvYmplY3QgZmlsZS4gIEFsbCBzdWJzZXF1ZW50IHJlbG9hZGFibGUgb2JqZWN0CiAJICAgICAgIyBmaWxlcyB3aWxsIGxpbmsgaW4gdGhlIGxhc3Qgb25lIGNyZWF0ZWQuCiAJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+Ci0JICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRyZWxvYWRfY21kcyAkb2JqbGlzdCAkbGFzdF9yb2JqXCIKKwkgICAgICByZWxvYWRfb2Jqcz0iJG9iamxpc3QgJGxhc3Rfcm9iaiIKKwkgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JHJlbG9hZF9jbWRzXCIKIAkgICAgICBpZiB0ZXN0IC1uICIkbGFzdF9yb2JqIjsgdGhlbgogCSAgICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfX5cJFJNICRsYXN0X3JvYmpcIgogCSAgICAgIGZpCi0JICAgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkb3V0cHV0IgorCSAgICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKIAogCSAgICBlbHNlCiAJICAgICAgb3V0cHV0PQpAQCAtNzI0OCw3ICs4NDMzLDcgQEAKIAkJbHRfZXhpdD0kPwogCiAJCSMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAotCQlpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KKwkJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgogCQkgICggY2QgIiRvdXRwdXRfb2JqZGlyIiAmJiBcCiAJCSAgICAkUk0gIiR7cmVhbG5hbWV9VCIgJiYgXAogCQkgICAgJE1WICIke3JlYWxuYW1lfVUiICIkcmVhbG5hbWUiICkKQEAgLTcyNjksNyArODQ1NCw3IEBACiAJICAgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KIAkgICAgICB0bXBfZXhwb3J0X3N5bWJvbHM9IiRleHBvcnRfc3ltYm9scyIKIAkgICAgICB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyIgJiYgdG1wX2V4cG9ydF9zeW1ib2xzPSIkb3JpZ19leHBvcnRfc3ltYm9scyIKLQkgICAgICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnJEVDSE8gIlgkaW5jbHVkZV9leHBzeW1zIiB8ICRYc2VkIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIicKKwkgICAgICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIicKIAkgICAgZmkKIAogCSAgICBpZiB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyI7IHRoZW4KQEAgLTcyODEsNyArODQ2Niw3IEBACiAJICAgICAgIyBnbG9iYWwgdmFyaWFibGVzLiBqb2luKDEpIHdvdWxkIGJlIG5pY2UgaGVyZSwgYnV0IHVuZm9ydHVuYXRlbHkKIAkgICAgICAjIGlzbid0IGEgYmxlc3NlZCB0b29sLgogCSAgICAgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1lICcvWyAsXURBVEEvIWQ7cyxcKC4qXClcKFsgXCxdLipcKSxzfF5cMSR8XDFcMnwsJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlcgotCSAgICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKKwkgICAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCiAJICAgICAgZXhwb3J0X3N5bWJvbHM9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmCiAJICAgICAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWYgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIDwgJG9yaWdfZXhwb3J0X3N5bWJvbHMgPiAkZXhwb3J0X3N5bWJvbHMKIAkgICAgZmkKQEAgLTczMjIsMTAgKzg1MDcsMTAgQEAKIAkjIEFkZCBhbnkgb2JqZWN0cyBmcm9tIHByZWxvYWRlZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMKIAlpZiB0ZXN0IC1uICIkZGxwcmVmaWxlcyI7IHRoZW4KIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCi0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCiAKIAkgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRkbHByZWZpbGVzCi0JICBsaWJvYmpzPSIkbGlib2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKwkgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKIAkgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CiAJZmkKIApAQCAtNzM0MSw3ICs4NTI2LDcgQEAKIAkgICAgbHRfZXhpdD0kPwogCiAJICAgICMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAotCSAgICBpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KKwkgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgogCSAgICAgICggY2QgIiRvdXRwdXRfb2JqZGlyIiAmJiBcCiAJICAgICAgICAkUk0gIiR7cmVhbG5hbWV9VCIgJiYgXAogCQkkTVYgIiR7cmVhbG5hbWV9VSIgIiRyZWFsbmFtZSIgKQpAQCAtNzM1Myw3ICs4NTM4LDcgQEAKIAlJRlM9IiRzYXZlX2lmcyIKIAogCSMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAotCWlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KIAkgICRvcHRfZHJ5X3J1biB8fCBldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VCAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VCAmJiAkTVYgJHtyZWFsbmFtZX1VICRyZWFsbmFtZSknIHx8IGV4aXQgJD8KIAogCSAgaWYgdGVzdCAtbiAiJGNvbnZlbmllbmNlIjsgdGhlbgpAQCAtNzQzNCwxOCArODYxOSwyMSBAQAogICAgICAgaWYgdGVzdCAtbiAiJGNvbnZlbmllbmNlIjsgdGhlbgogCWlmIHRlc3QgLW4gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KIAkgIGV2YWwgdG1wX3dob2xlX2FyY2hpdmVfZmxhZ3M9XCIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIgotCSAgcmVsb2FkX2NvbnZfb2Jqcz0kcmVsb2FkX29ianNcIGAkRUNITyAiWCR0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncyIgfCAkWHNlZCAtZSAnc3wsfCB8ZydgCisJICByZWxvYWRfY29udl9vYmpzPSRyZWxvYWRfb2Jqc1wgYCRFQ0hPICIkdG1wX3dob2xlX2FyY2hpdmVfZmxhZ3MiIHwgJFNFRCAnc3wsfCB8ZydgCiAJZWxzZQogCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke29ian14IgotCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgogCiAJICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkY29udmVuaWVuY2UKIAkgIHJlbG9hZF9jb252X29ianM9IiRyZWxvYWRfb2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKIAlmaQogICAgICAgZmkKIAorICAgICAgIyBJZiB3ZSdyZSBub3QgYnVpbGRpbmcgc2hhcmVkLCB3ZSBuZWVkIHRvIHVzZSBub25fcGljX29ianMKKyAgICAgIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiBsaWJvYmpzPSIkbm9uX3BpY19vYmplY3RzIgorCiAgICAgICAjIENyZWF0ZSB0aGUgb2xkLXN0eWxlIG9iamVjdC4KLSAgICAgIHJlbG9hZF9vYmpzPSIkb2JqcyRvbGRfZGVwbGlicyAiYCRFQ0hPICJYJGxpYm9ianMiIHwgJFNQMk5MIHwgJFhzZWQgLWUgJy9cLicke2xpYmV4dH0kJy9kJyAtZSAnL1wubGliJC9kJyAtZSAiJGxvMm8iIHwgJE5MMlNQYCIgJHJlbG9hZF9jb252X29ianMiICMjIyB0ZXN0c3VpdGU6IHNraXAgbmVzdGVkIHF1b3RpbmcgdGVzdAorICAgICAgcmVsb2FkX29ianM9IiRvYmpzJG9sZF9kZXBsaWJzICJgJEVDSE8gIiRsaWJvYmpzIiB8ICRTUDJOTCB8ICRTRUQgIi9cLiR7bGliZXh0fSQvZDsgL1wubGliJC9kOyAkbG8ybyIgfCAkTkwyU1BgIiAkcmVsb2FkX2NvbnZfb2JqcyIgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0CiAKICAgICAgIG91dHB1dD0iJG9iaiIKICAgICAgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkcmVsb2FkX2NtZHMiICdleGl0ICQ/JwpAQCAtNzUwNSw4ICs4NjkzLDggQEAKICAgICAgIGNhc2UgJGhvc3QgaW4KICAgICAgICotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKIAkjIE9uIFJoYXBzb2R5IHJlcGxhY2UgdGhlIEMgbGlicmFyeSBpcyB0aGUgU3lzdGVtIGZyYW1ld29yawotCWNvbXBpbGVfZGVwbGlicz1gJEVDSE8gIlggJGNvbXBpbGVfZGVwbGlicyIgfCAkWHNlZCAtZSAncy8gLWxjIC8gU3lzdGVtLmx0ZnJhbWV3b3JrIC8nYAotCWZpbmFsaXplX2RlcGxpYnM9YCRFQ0hPICJYICRmaW5hbGl6ZV9kZXBsaWJzIiB8ICRYc2VkIC1lICdzLyAtbGMgLyBTeXN0ZW0ubHRmcmFtZXdvcmsgLydgCisJY29tcGlsZV9kZXBsaWJzPWAkRUNITyAiICRjb21waWxlX2RlcGxpYnMiIHwgJFNFRCAncy8gLWxjIC8gU3lzdGVtLmx0ZnJhbWV3b3JrIC8nYAorCWZpbmFsaXplX2RlcGxpYnM9YCRFQ0hPICIgJGZpbmFsaXplX2RlcGxpYnMiIHwgJFNFRCAncy8gLWxjIC8gU3lzdGVtLmx0ZnJhbWV3b3JrIC8nYAogCTs7CiAgICAgICBlc2FjCiAKQEAgLTc1MTcsMTQgKzg3MDUsMTQgQEAKIAlpZiB0ZXN0ICIkdGFnbmFtZSIgPSBDWFggOyB0aGVuCiAJICBjYXNlICR7TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VULTEwLjB9IGluCiAJICAgIDEwLlswMTIzXSkKLQkgICAgICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJHt3bH0tYmluZF9hdF9sb2FkIgotCSAgICAgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICR7d2x9LWJpbmRfYXRfbG9hZCIKKwkgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAke3dsfS1iaW5kX2F0X2xvYWQiCisJICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICR7d2x9LWJpbmRfYXRfbG9hZCIKIAkgICAgOzsKIAkgIGVzYWMKIAlmaQogCSMgVGltZSB0byBjaGFuZ2UgYWxsIG91ciAiZm9vLmx0ZnJhbWV3b3JrIiBzdHVmZiBiYWNrIHRvICItZnJhbWV3b3JrIGZvbyIKLQljb21waWxlX2RlcGxpYnM9YCRFQ0hPICJYICRjb21waWxlX2RlcGxpYnMiIHwgJFhzZWQgLWUgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCi0JZmluYWxpemVfZGVwbGlicz1gJEVDSE8gIlggJGZpbmFsaXplX2RlcGxpYnMiIHwgJFhzZWQgLWUgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCisJY29tcGlsZV9kZXBsaWJzPWAkRUNITyAiICRjb21waWxlX2RlcGxpYnMiIHwgJFNFRCAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKKwlmaW5hbGl6ZV9kZXBsaWJzPWAkRUNITyAiICRmaW5hbGl6ZV9kZXBsaWJzIiB8ICRTRUQgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCiAJOzsKICAgICAgIGVzYWMKIApAQCAtNzUzOCw3ICs4NzI2LDcgQEAKIAkqKQogCSAgY2FzZSAiICRjb21waWxlX2RlcGxpYnMgIiBpbgogCSAgKiIgLUwkcGF0aC8kb2JqZGlyICIqKQotCSAgICBuZXdfbGlicz0iJG5ld19saWJzIC1MJHBhdGgvJG9iamRpciIgOzsKKwkgICAgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAtTCRwYXRoLyRvYmpkaXIiIDs7CiAJICBlc2FjCiAJICA7OwogCWVzYWMKQEAgLTc1NDgsMTcgKzg3MzYsMTcgQEAKIAktTCopCiAJICBjYXNlICIgJG5ld19saWJzICIgaW4KIAkgICoiICRkZXBsaWIgIiopIDs7Ci0JICAqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7CisJICAqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7CiAJICBlc2FjCiAJICA7OwotCSopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKKwkqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7CiAJZXNhYwogICAgICAgZG9uZQogICAgICAgY29tcGlsZV9kZXBsaWJzPSIkbmV3X2xpYnMiCiAKIAotICAgICAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICRjb21waWxlX2RlcGxpYnMiCi0gICAgICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAkZmluYWxpemVfZGVwbGlicyIKKyAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRjb21waWxlX2RlcGxpYnMiCisgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGZpbmFsaXplX2RlcGxpYnMiCiAKICAgICAgIGlmIHRlc3QgLW4gIiRycGF0aCR4cnBhdGgiOyB0aGVuCiAJIyBJZiB0aGUgdXNlciBzcGVjaWZpZWQgYW55IHJwYXRoIGZsYWdzLCB0aGVuIGFkZCB0aGVtLgpAQCAtNzU2Niw3ICs4NzU0LDcgQEAKIAkgICMgVGhpcyBpcyB0aGUgbWFnaWMgdG8gdXNlIC1ycGF0aC4KIAkgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCiAJICAqIiAkbGliZGlyICIqKSA7OwotCSAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIiA7OworCSAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OwogCSAgZXNhYwogCWRvbmUKICAgICAgIGZpCkBAIC03NTg1LDE4ICs4NzczLDE4IEBACiAJICAgICAgKiIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIqKQogCQk7OwogCSAgICAgICopCi0JCWhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgorCQlmdW5jX2FwcGVuZCBoYXJkY29kZV9saWJkaXJzICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCiAJCTs7CiAJICAgICAgZXNhYwogCSAgICBmaQogCSAgZWxzZQogCSAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0JICAgIHJwYXRoPSIkcnBhdGggJGZsYWciCisJICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGZsYWciCiAJICBmaQogCWVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgogCSAgY2FzZSAiJHBlcm1fcnBhdGggIiBpbgogCSAgKiIgJGxpYmRpciAiKikgOzsKLQkgICopIHBlcm1fcnBhdGg9IiRwZXJtX3JwYXRoICRsaWJkaXIiIDs7CisJICAqKSBmdW5jX2FwcGVuZCBwZXJtX3JwYXRoICIgJGxpYmRpciIgOzsKIAkgIGVzYWMKIAlmaQogCWNhc2UgJGhvc3QgaW4KQEAgLTc2MDUsMTIgKzg3OTMsMTIgQEAKIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgogCSAgKiI6JGxpYmRpcjoiKikgOzsKIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSRsaWJkaXI7OwotCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JGxpYmRpciI7OworCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiRsaWJkaXIiOzsKIAkgIGVzYWMKIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgogCSAgKiI6JHRlc3RiaW5kaXI6IiopIDs7CiAJICA6OikgZGxsc2VhcmNocGF0aD0kdGVzdGJpbmRpcjs7Ci0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokdGVzdGJpbmRpciI7OworCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiR0ZXN0YmluZGlyIjs7CiAJICBlc2FjCiAJICA7OwogCWVzYWMKQEAgLTc2MzYsMTggKzg4MjQsMTggQEAKIAkgICAgICAqIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiopCiAJCTs7CiAJICAgICAgKikKLQkJaGFyZGNvZGVfbGliZGlycz0iJGhhcmRjb2RlX2xpYmRpcnMkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCisJCWZ1bmNfYXBwZW5kIGhhcmRjb2RlX2xpYmRpcnMgIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKIAkJOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCiAJICBlbHNlCiAJICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLQkgICAgcnBhdGg9IiRycGF0aCAkZmxhZyIKKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiAkZmxhZyIKIAkgIGZpCiAJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCiAJICBjYXNlICIkZmluYWxpemVfcGVybV9ycGF0aCAiIGluCiAJICAqIiAkbGliZGlyICIqKSA7OwotCSAgKikgZmluYWxpemVfcGVybV9ycGF0aD0iJGZpbmFsaXplX3Blcm1fcnBhdGggJGxpYmRpciIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3Blcm1fcnBhdGggIiAkbGliZGlyIiA7OwogCSAgZXNhYwogCWZpCiAgICAgICBkb25lCkBAIC03NjYxLDggKzg4NDksOCBAQAogCiAgICAgICBpZiB0ZXN0IC1uICIkbGlib2JqcyIgJiYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllczsgdGhlbgogCSMgVHJhbnNmb3JtIGFsbCB0aGUgbGlicmFyeSBvYmplY3RzIGludG8gc3RhbmRhcmQgb2JqZWN0cy4KLQljb21waWxlX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJGxvMm8iIHwgJE5MMlNQYAotCWZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICJYJGZpbmFsaXplX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFhzZWQgLWUgIiRsbzJvIiB8ICROTDJTUGAKKwljb21waWxlX2NvbW1hbmQ9YCRFQ0hPICIkY29tcGlsZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRTRUQgIiRsbzJvIiB8ICROTDJTUGAKKwlmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiJGZpbmFsaXplX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFNFRCAiJGxvMm8iIHwgJE5MMlNQYAogICAgICAgZmkKIAogICAgICAgZnVuY19nZW5lcmF0ZV9kbHN5bXMgIiRvdXRwdXRuYW1lIiAiQFBST0dSQU1AIiAibm8iCkBAIC03Njc0LDE1ICs4ODYyLDE1IEBACiAKICAgICAgIHdyYXBwZXJzX3JlcXVpcmVkPXllcwogICAgICAgY2FzZSAkaG9zdCBpbgorICAgICAgKmNlZ2NjKiB8ICptaW5ndzMyY2UqKQorICAgICAgICAjIERpc2FibGUgd3JhcHBlcnMgZm9yIGNlZ2NjIGFuZCBtaW5ndzMyY2UgaG9zdHMsIHdlIGFyZSBjcm9zcyBjb21waWxpbmcgYW55d2F5LgorICAgICAgICB3cmFwcGVyc19yZXF1aXJlZD1ubworICAgICAgICA7OwogICAgICAgKmN5Z3dpbiogfCAqbWluZ3cqICkKICAgICAgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzOyB0aGVuCiAgICAgICAgICAgd3JhcHBlcnNfcmVxdWlyZWQ9bm8KICAgICAgICAgZmkKICAgICAgICAgOzsKLSAgICAgICpjZWdjYykKLSAgICAgICAgIyBEaXNhYmxlIHdyYXBwZXJzIGZvciBjZWdjYywgd2UgYXJlIGNyb3NzIGNvbXBpbGluZyBhbnl3YXkuCi0gICAgICAgIHdyYXBwZXJzX3JlcXVpcmVkPW5vCi0gICAgICAgIDs7CiAgICAgICAqKQogICAgICAgICBpZiB0ZXN0ICIkbmVlZF9yZWxpbmsiID0gbm8gfHwgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzOyB0aGVuCiAgICAgICAgICAgd3JhcHBlcnNfcmVxdWlyZWQ9bm8KQEAgLTc2OTEsMTMgKzg4NzksMTkgQEAKICAgICAgIGVzYWMKICAgICAgIGlmIHRlc3QgIiR3cmFwcGVyc19yZXF1aXJlZCIgPSBubzsgdGhlbgogCSMgUmVwbGFjZSB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWNhdGlvbi4KLQljb21waWxlX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkWHNlZCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJ2AKKwljb21waWxlX2NvbW1hbmQ9YCRFQ0hPICIkY29tcGlsZV9jb21tYW5kIiB8ICRTRUQgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZydgCiAJbGlua19jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kJGNvbXBpbGVfcnBhdGgiCiAKIAkjIFdlIGhhdmUgbm8gdW5pbnN0YWxsZWQgbGlicmFyeSBkZXBlbmRlbmNpZXMsIHNvIGZpbmFsaXplIHJpZ2h0IG5vdy4KIAlleGl0X3N0YXR1cz0wCiAJZnVuY19zaG93X2V2YWwgIiRsaW5rX2NvbW1hbmQiICdleGl0X3N0YXR1cz0kPycKIAorCWlmIHRlc3QgLW4gIiRwb3N0bGlua19jbWRzIjsgdGhlbgorCSAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCisJICBwb3N0bGlua19jbWRzPWBmdW5jX2VjaG9fYWxsICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnIC1lICdzJUBUT09MX09VVFBVVEAlJyIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiclZydgCisJICBmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3RsaW5rX2NtZHMiICdleGl0ICQ/JworCWZpCisKIAkjIERlbGV0ZSB0aGUgZ2VuZXJhdGVkIGZpbGVzLgogCWlmIHRlc3QgLWYgIiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiR7b2JqZXh0fSI7IHRoZW4KIAkgIGZ1bmNfc2hvd19ldmFsICckUk0gIiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiR7b2JqZXh0fSInCkBAIC03NzIwLDcgKzg5MTQsNyBAQAogCSAgIyBXZSBzaG91bGQgc2V0IHRoZSBydW5wYXRoX3Zhci4KIAkgIHJwYXRoPQogCSAgZm9yIGRpciBpbiAkcGVybV9ycGF0aDsgZG8KLQkgICAgcnBhdGg9IiRycGF0aCRkaXI6IgorCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiJGRpcjoiCiAJICBkb25lCiAJICBjb21waWxlX3Zhcj0iJHJ1bnBhdGhfdmFyPVwiJHJwYXRoXCQkcnVucGF0aF92YXJcIiAiCiAJZmkKQEAgLTc3MjgsNyArODkyMiw3IEBACiAJICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgogCSAgcnBhdGg9CiAJICBmb3IgZGlyIGluICRmaW5hbGl6ZV9wZXJtX3JwYXRoOyBkbwotCSAgICBycGF0aD0iJHJwYXRoJGRpcjoiCisJICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIkZGlyOiIKIAkgIGRvbmUKIAkgIGZpbmFsaXplX3Zhcj0iJHJ1bnBhdGhfdmFyPVwiJHJwYXRoXCQkcnVucGF0aF92YXJcIiAiCiAJZmkKQEAgLTc3MzgsMTEgKzg5MzIsMTggQEAKIAkjIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgd3JhcHBlciBzY3JpcHQuCiAJbGlua19jb21tYW5kPSIkY29tcGlsZV92YXIkY29tcGlsZV9jb21tYW5kJGNvbXBpbGVfcnBhdGgiCiAJIyBSZXBsYWNlIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpY2F0aW9uLgotCWxpbmtfY29tbWFuZD1gJEVDSE8gIlgkbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnYAorCWxpbmtfY29tbWFuZD1gJEVDSE8gIiRsaW5rX2NvbW1hbmQiIHwgJFNFRCAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJ2AKIAkjIERlbGV0ZSB0aGUgb2xkIG91dHB1dCBmaWxlLgogCSRvcHRfZHJ5X3J1biB8fCAkUk0gJG91dHB1dAogCSMgTGluayB0aGUgZXhlY3V0YWJsZSBhbmQgZXhpdAogCWZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdCAkPycKKworCWlmIHRlc3QgLW4gIiRwb3N0bGlua19jbWRzIjsgdGhlbgorCSAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCisJICBwb3N0bGlua19jbWRzPWBmdW5jX2VjaG9fYWxsICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnIC1lICdzJUBUT09MX09VVFBVVEAlJyIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiclZydgCisJICBmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3RsaW5rX2NtZHMiICdleGl0ICQ/JworCWZpCisKIAlleGl0ICRFWElUX1NVQ0NFU1MKICAgICAgIGZpCiAKQEAgLTc3NTcsNyArODk1OCw3IEBACiAJaWYgdGVzdCAiJGZhc3RfaW5zdGFsbCIgIT0gbm87IHRoZW4KIAkgIGxpbmtfY29tbWFuZD0iJGZpbmFsaXplX3ZhciRjb21waWxlX2NvbW1hbmQkZmluYWxpemVfcnBhdGgiCiAJICBpZiB0ZXN0ICIkZmFzdF9pbnN0YWxsIiA9IHllczsgdGhlbgotCSAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIlgkY29tcGlsZV92YXIkY29tcGlsZV9jb21tYW5kJGNvbXBpbGVfcnBhdGgiIHwgJFhzZWQgLWUgJ3MlQE9VVFBVVEAlXCRwcm9nZGlyL1wkZmlsZSVnJ2AKKwkgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICIkY29tcGlsZV92YXIkY29tcGlsZV9jb21tYW5kJGNvbXBpbGVfcnBhdGgiIHwgJFNFRCAncyVAT1VUUFVUQCVcJHByb2dkaXIvXCRmaWxlJWcnYAogCSAgZWxzZQogCSAgICAjIGZhc3RfaW5zdGFsbCBpcyBzZXQgdG8gbmVlZGxlc3MKIAkgICAgcmVsaW5rX2NvbW1hbmQ9CkBAIC03NzY5LDEzICs4OTcwLDE5IEBACiAgICAgICBmaQogCiAgICAgICAjIFJlcGxhY2UgdGhlIG91dHB1dCBmaWxlIHNwZWNpZmljYXRpb24uCi0gICAgICBsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJGxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIiclZydgCisgICAgICBsaW5rX2NvbW1hbmQ9YCRFQ0hPICIkbGlua19jb21tYW5kIiB8ICRTRUQgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSInJWcnYAogCiAgICAgICAjIERlbGV0ZSB0aGUgb2xkIG91dHB1dCBmaWxlcy4KICAgICAgICRvcHRfZHJ5X3J1biB8fCAkUk0gJG91dHB1dCAkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSAkb3V0cHV0X29iamRpci9sdC0kb3V0cHV0bmFtZQogCiAgICAgICBmdW5jX3Nob3dfZXZhbCAiJGxpbmtfY29tbWFuZCIgJ2V4aXQgJD8nCiAKKyAgICAgIGlmIHRlc3QgLW4gIiRwb3N0bGlua19jbWRzIjsgdGhlbgorCWZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSIKKwlwb3N0bGlua19jbWRzPWBmdW5jX2VjaG9fYWxsICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUiJyVnJyAtZSAncyVAVE9PTF9PVVRQVVRAJSciJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCInJWcnYAorCWZ1bmNfZXhlY3V0ZV9jbWRzICIkcG9zdGxpbmtfY21kcyIgJ2V4aXQgJD8nCisgICAgICBmaQorCiAgICAgICAjIE5vdyBjcmVhdGUgdGhlIHdyYXBwZXIgc2NyaXB0LgogICAgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyAkb3V0cHV0IgogCkBAIC03NzkzLDE4ICs5MDAwLDcgQEAKIAkgIGZpCiAJZG9uZQogCXJlbGlua19jb21tYW5kPSIoY2QgYHB3ZGA7ICRyZWxpbmtfY29tbWFuZCkiCi0JcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJHJlbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSAgICAgIGZpCi0KLSAgICAgICMgUXVvdGUgJEVDSE8gZm9yIHNoaXBwaW5nLgotICAgICAgaWYgdGVzdCAiWCRFQ0hPIiA9ICJYJFNIRUxMICRwcm9ncGF0aCAtLWZhbGxiYWNrLWVjaG8iOyB0aGVuCi0JY2FzZSAkcHJvZ3BhdGggaW4KLQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIHFlY2hvPSIkU0hFTEwgJHByb2dwYXRoIC0tZmFsbGJhY2stZWNobyI7OwotCSopIHFlY2hvPSIkU0hFTEwgYHB3ZGAvJHByb2dwYXRoIC0tZmFsbGJhY2stZWNobyI7OwotCWVzYWMKLQlxZWNobz1gJEVDSE8gIlgkcWVjaG8iIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotICAgICAgZWxzZQotCXFlY2hvPWAkRUNITyAiWCRFQ0hPIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKwlyZWxpbmtfY29tbWFuZD1gJEVDSE8gIiRyZWxpbmtfY29tbWFuZCIgfCAkU0VEICIkc2VkX3F1b3RlX3N1YnN0ImAKICAgICAgIGZpCiAKICAgICAgICMgT25seSBhY3R1YWxseSBkbyB0aGluZ3MgaWYgbm90IGluIGRyeSBydW4gbW9kZS4KQEAgLTc4ODQsNyArOTA4MCw3IEBACiAJZWxzZQogCSAgb2xkb2Jqcz0iJG9sZF9kZXBsaWJzICRub25fcGljX29iamVjdHMiCiAJICBpZiB0ZXN0ICIkcHJlbG9hZCIgPSB5ZXMgJiYgdGVzdCAtZiAiJHN5bWZpbGVvYmoiOyB0aGVuCi0JICAgIG9sZG9ianM9IiRvbGRvYmpzICRzeW1maWxlb2JqIgorCSAgICBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJHN5bWZpbGVvYmoiCiAJICBmaQogCWZpCiAJYWRkbGlicz0iJG9sZF9jb252ZW5pZW5jZSIKQEAgLTc4OTIsMTAgKzkwODgsMTAgQEAKIAogICAgICAgaWYgdGVzdCAtbiAiJGFkZGxpYnMiOyB0aGVuCiAJZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLQlnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKwlmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgogCiAJZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGFkZGxpYnMKLQlvbGRvYmpzPSIkb2xkb2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKwlmdW5jX2FwcGVuZCBvbGRvYmpzICIgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCiAgICAgICBmaQogCiAgICAgICAjIERvIGVhY2ggY29tbWFuZCBpbiB0aGUgYXJjaGl2ZSBjb21tYW5kcy4KQEAgLTc5MDYsMTAgKzkxMDIsMTAgQEAKIAkjIEFkZCBhbnkgb2JqZWN0cyBmcm9tIHByZWxvYWRlZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMKIAlpZiB0ZXN0IC1uICIkZGxwcmVmaWxlcyI7IHRoZW4KIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCi0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCiAKIAkgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRkbHByZWZpbGVzCi0JICBvbGRvYmpzPSIkb2xkb2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKwkgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKIAlmaQogCiAJIyBQT1NJWCBkZW1hbmRzIG5vIHBhdGhzIHRvIGJlIGVuY29kZWQgaW4gYXJjaGl2ZXMuICBXZSBoYXZlCkBAIC03OTI1LDkgKzkxMjEsOSBAQAogCSAgICBkb25lIHwgc29ydCB8IHNvcnQgLXVjID4vZGV2L251bGwgMj4mMSk7IHRoZW4KIAkgIDoKIAllbHNlCi0JICAkRUNITyAiY29weWluZyBzZWxlY3RlZCBvYmplY3QgZmlsZXMgdG8gYXZvaWQgYmFzZW5hbWUgY29uZmxpY3RzLi4uIgorCSAgZWNobyAiY29weWluZyBzZWxlY3RlZCBvYmplY3QgZmlsZXMgdG8gYXZvaWQgYmFzZW5hbWUgY29uZmxpY3RzLi4uIgogCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKIAkgIGZ1bmNfbWtkaXJfcCAiJGdlbnRvcCIKIAkgIHNhdmVfb2xkb2Jqcz0kb2xkb2JqcwogCSAgb2xkb2Jqcz0KQEAgLTc5NTEsOSArOTE0Nyw5IEBACiAJCWVzYWMKIAkgICAgICBkb25lCiAJICAgICAgZnVuY19zaG93X2V2YWwgImxuICRvYmogJGdlbnRvcC8kbmV3b2JqIHx8IGNwICRvYmogJGdlbnRvcC8kbmV3b2JqIgotCSAgICAgIG9sZG9ianM9IiRvbGRvYmpzICRnZW50b3AvJG5ld29iaiIKKwkgICAgICBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJGdlbnRvcC8kbmV3b2JqIgogCSAgICAgIDs7Ci0JICAgICopIG9sZG9ianM9IiRvbGRvYmpzICRvYmoiIDs7CisJICAgICopIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkb2JqIiA7OwogCSAgICBlc2FjCiAJICBkb25lCiAJZmkKQEAgLTc5NjMsNiArOTE1OSwxNiBAQAogCWxlbj0kZnVuY19sZW5fcmVzdWx0CiAJaWYgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB0aGVuCiAJICBjbWRzPSRvbGRfYXJjaGl2ZV9jbWRzCisJZWxpZiB0ZXN0IC1uICIkYXJjaGl2ZXJfbGlzdF9zcGVjIjsgdGhlbgorCSAgZnVuY192ZXJib3NlICJ1c2luZyBjb21tYW5kIGZpbGUgYXJjaGl2ZSBsaW5raW5nLi4uIgorCSAgZm9yIG9iaiBpbiAkb2xkb2JqcworCSAgZG8KKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCisJICAgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IgorCSAgZG9uZSA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmxpYmNtZAorCSAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmxpYmNtZCIKKwkgIG9sZG9ianM9IiAkYXJjaGl2ZXJfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIKKwkgIGNtZHM9JG9sZF9hcmNoaXZlX2NtZHMKIAllbHNlCiAJICAjIHRoZSBjb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgdG8gbGluayBpbiBvbmUgc3RlcCwgbGluayBpbiBwYXJ0cwogCSAgZnVuY192ZXJib3NlICJ1c2luZyBwaWVjZXdpc2UgYXJjaGl2ZSBsaW5raW5nLi4uIgpAQCAtODAzNiw3ICs5MjQyLDcgQEAKICAgICAgIGRvbmUKICAgICAgICMgUXVvdGUgdGhlIGxpbmsgY29tbWFuZCBmb3Igc2hpcHBpbmcuCiAgICAgICByZWxpbmtfY29tbWFuZD0iKGNkIGBwd2RgOyAkU0hFTEwgJHByb2dwYXRoICRwcmVzZXJ2ZV9hcmdzIC0tbW9kZT1yZWxpbmsgJGxpYnRvb2xfYXJncyBAaW5zdF9wcmVmaXhfZGlyQCkiCi0gICAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIlgkcmVsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorICAgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICIkcmVsaW5rX2NvbW1hbmQiIHwgJFNFRCAiJHNlZF9xdW90ZV9zdWJzdCJgCiAgICAgICBpZiB0ZXN0ICIkaGFyZGNvZGVfYXV0b21hdGljIiA9IHllcyA7IHRoZW4KIAlyZWxpbmtfY29tbWFuZD0KICAgICAgIGZpCkBAIC04MDU5LDkgKzkyNjUsMTkgQEAKIAkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKIAkJdGVzdCAteiAiJGxpYmRpciIgJiYgXAogCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGRlcGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgotCQluZXdkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMgJGxpYmRpci8kbmFtZSIKKwkJZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgJHtsdF9zeXNyb290Ois9fSRsaWJkaXIvJG5hbWUiCiAJCTs7Ci0JICAgICAgKikgbmV3ZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzICRkZXBsaWIiIDs7CisJICAgICAgLUwqKQorCQlmdW5jX3N0cmlwbmFtZSAtTCAnJyAiJGRlcGxpYiIKKwkJZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJCWZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiIC1MJGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdCIKKwkJOzsKKwkgICAgICAtUiopCisJCWZ1bmNfc3RyaXBuYW1lIC1SICcnICIkZGVwbGliIgorCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkJZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgLVIkZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0IgorCQk7OworCSAgICAgICopIGZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiICRkZXBsaWIiIDs7CiAJICAgICAgZXNhYwogCSAgICBkb25lCiAJICAgIGRlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyIKQEAgLTgwNzUsOSArOTI5MSw5IEBACiAJCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRsaWJgCiAJCXRlc3QgLXogIiRsaWJkaXIiICYmIFwKIAkJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKLQkJbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGxpYmRpci8kbmFtZSIKKwkJZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICR7bHRfc3lzcm9vdDorPX0kbGliZGlyLyRuYW1lIgogCQk7OwotCSAgICAgICopIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRsaWIiIDs7CisJICAgICAgKikgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRsaWIiIDs7CiAJICAgICAgZXNhYwogCSAgICBkb25lCiAJICAgIGRsZmlsZXM9IiRuZXdkbGZpbGVzIgpAQCAtODA5NCw3ICs5MzEwLDcgQEAKIAkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGxpYmAKIAkJdGVzdCAteiAiJGxpYmRpciIgJiYgXAogCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgotCQluZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkbGliZGlyLyRuYW1lIgorCQlmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJHtsdF9zeXNyb290Ois9fSRsaWJkaXIvJG5hbWUiCiAJCTs7CiAJICAgICAgZXNhYwogCSAgICBkb25lCkBAIC04MTA2LDcgKzkzMjIsNyBAQAogCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIGFicz0iJGxpYiIgOzsKIAkJKikgYWJzPWBwd2RgIi8kbGliIiA7OwogCSAgICAgIGVzYWMKLQkgICAgICBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkYWJzIgorCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkYWJzIgogCSAgICBkb25lCiAJICAgIGRsZmlsZXM9IiRuZXdkbGZpbGVzIgogCSAgICBuZXdkbHByZWZpbGVzPQpAQCAtODExNSwxNSArOTMzMSwzMyBAQAogCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIGFicz0iJGxpYiIgOzsKIAkJKikgYWJzPWBwd2RgIi8kbGliIiA7OwogCSAgICAgIGVzYWMKLQkgICAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkYWJzIgorCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkYWJzIgogCSAgICBkb25lCiAJICAgIGRscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzIgogCSAgZmkKIAkgICRSTSAkb3V0cHV0CiAJICAjIHBsYWNlIGRsbmFtZSBpbiBjb3JyZWN0IHBvc2l0aW9uIGZvciBjeWd3aW4KKwkgICMgSW4gZmFjdCwgaXQgd291bGQgYmUgbmljZSBpZiB3ZSBjb3VsZCB1c2UgdGhpcyBjb2RlIGZvciBhbGwgdGFyZ2V0CisJICAjIHN5c3RlbXMgdGhhdCBjYW4ndCBoYXJkLWNvZGUgbGlicmFyeSBwYXRocyBpbnRvIHRoZWlyIGV4ZWN1dGFibGVzCisJICAjIGFuZCB0aGF0IGhhdmUgbm8gc2hhcmVkIGxpYnJhcnkgcGF0aCB2YXJpYWJsZSBpbmRlcGVuZGVudCBvZiBQQVRILAorCSAgIyBidXQgaXQgdHVybnMgb3V0IHdlIGNhbid0IGVhc2lseSBkZXRlcm1pbmUgdGhhdCBmcm9tIGluc3BlY3RpbmcKKwkgICMgbGlidG9vbCB2YXJpYWJsZXMsIHNvIHdlIGhhdmUgdG8gaGFyZC1jb2RlIHRoZSBPU3MgdG8gd2hpY2ggaXQKKwkgICMgYXBwbGllcyBoZXJlOyBhdCB0aGUgbW9tZW50LCB0aGF0IG1lYW5zIHBsYXRmb3JtcyB0aGF0IHVzZSB0aGUgUEUKKwkgICMgb2JqZWN0IGZvcm1hdCB3aXRoIERMTCBmaWxlcy4gIFNlZSB0aGUgbG9uZyBjb21tZW50IGF0IHRoZSB0b3Agb2YKKwkgICMgdGVzdHMvYmluZGlyLmF0IGZvciBmdWxsIGRldGFpbHMuCiAJICB0ZGxuYW1lPSRkbG5hbWUKIAkgIGNhc2UgJGhvc3QsJG91dHB1dCwkaW5zdGFsbGVkLCRtb2R1bGUsJGRsbmFtZSBpbgotCSAgICAqY3lnd2luKiwqbGFpLHllcyxubywqLmRsbCB8ICptaW5ndyosKmxhaSx5ZXMsbm8sKi5kbGwgfCAqY2VnY2MqLCpsYWkseWVzLG5vLCouZGxsKSB0ZGxuYW1lPS4uL2Jpbi8kZGxuYW1lIDs7CisJICAgICpjeWd3aW4qLCpsYWkseWVzLG5vLCouZGxsIHwgKm1pbmd3KiwqbGFpLHllcyxubywqLmRsbCB8ICpjZWdjYyosKmxhaSx5ZXMsbm8sKi5kbGwpCisJICAgICAgIyBJZiBhIC1iaW5kaXIgYXJndW1lbnQgd2FzIHN1cHBsaWVkLCBwbGFjZSB0aGUgZGxsIHRoZXJlLgorCSAgICAgIGlmIHRlc3QgIngkYmluZGlyIiAhPSB4IDsKKwkgICAgICB0aGVuCisJCWZ1bmNfcmVsYXRpdmVfcGF0aCAiJGluc3RhbGxfbGliZGlyIiAiJGJpbmRpciIKKwkJdGRsbmFtZT0kZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdCRkbG5hbWUKKwkgICAgICBlbHNlCisJCSMgT3RoZXJ3aXNlIGZhbGwgYmFjayBvbiBoZXVyaXN0aWMuCisJCXRkbG5hbWU9Li4vYmluLyRkbG5hbWUKKwkgICAgICBmaQorCSAgICAgIDs7CiAJICBlc2FjCiAJICAkRUNITyA+ICRvdXRwdXQgIlwKICMgJG91dHB1dG5hbWUgLSBhIGxpYnRvb2wgbGlicmFyeSBmaWxlCkBAIC04MTgyLDcgKzk0MTYsNyBAQAogICAgIGV4aXQgJEVYSVRfU1VDQ0VTUwogfQogCi17IHRlc3QgIiRtb2RlIiA9IGxpbmsgfHwgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB9ICYmCit7IHRlc3QgIiRvcHRfbW9kZSIgPSBsaW5rIHx8IHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IH0gJiYKICAgICBmdW5jX21vZGVfbGluayAkezErIiRAIn0KIAogCkBAIC04MjAyLDkgKzk0MzYsOSBAQAogICAgIGZvciBhcmcKICAgICBkbwogICAgICAgY2FzZSAkYXJnIGluCi0gICAgICAtZikgUk09IiRSTSAkYXJnIjsgcm1mb3JjZT15ZXMgOzsKLSAgICAgIC0qKSBSTT0iJFJNICRhcmciIDs7Ci0gICAgICAqKSBmaWxlcz0iJGZpbGVzICRhcmciIDs7CisgICAgICAtZikgZnVuY19hcHBlbmQgUk0gIiAkYXJnIjsgcm1mb3JjZT15ZXMgOzsKKyAgICAgIC0qKSBmdW5jX2FwcGVuZCBSTSAiICRhcmciIDs7CisgICAgICAqKSBmdW5jX2FwcGVuZCBmaWxlcyAiICRhcmciIDs7CiAgICAgICBlc2FjCiAgICAgZG9uZQogCkBAIC04MjEzLDI0ICs5NDQ3LDIzIEBACiAKICAgICBybWRpcnM9CiAKLSAgICBvcmlnb2JqZGlyPSIkb2JqZGlyIgogICAgIGZvciBmaWxlIGluICRmaWxlczsgZG8KICAgICAgIGZ1bmNfZGlybmFtZSAiJGZpbGUiICIiICIuIgogICAgICAgZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKICAgICAgIGlmIHRlc3QgIlgkZGlyIiA9IFguOyB0aGVuCi0Jb2JqZGlyPSIkb3JpZ29iamRpciIKKwlvZGlyPSIkb2JqZGlyIgogICAgICAgZWxzZQotCW9iamRpcj0iJGRpci8kb3JpZ29iamRpciIKKwlvZGlyPSIkZGlyLyRvYmpkaXIiCiAgICAgICBmaQogICAgICAgZnVuY19iYXNlbmFtZSAiJGZpbGUiCiAgICAgICBuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0gICAgICB0ZXN0ICIkbW9kZSIgPSB1bmluc3RhbGwgJiYgb2JqZGlyPSIkZGlyIgorICAgICAgdGVzdCAiJG9wdF9tb2RlIiA9IHVuaW5zdGFsbCAmJiBvZGlyPSIkZGlyIgogCi0gICAgICAjIFJlbWVtYmVyIG9iamRpciBmb3IgcmVtb3ZhbCBsYXRlciwgYmVpbmcgY2FyZWZ1bCB0byBhdm9pZCBkdXBsaWNhdGVzCi0gICAgICBpZiB0ZXN0ICIkbW9kZSIgPSBjbGVhbjsgdGhlbgorICAgICAgIyBSZW1lbWJlciBvZGlyIGZvciByZW1vdmFsIGxhdGVyLCBiZWluZyBjYXJlZnVsIHRvIGF2b2lkIGR1cGxpY2F0ZXMKKyAgICAgIGlmIHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbjsgdGhlbgogCWNhc2UgIiAkcm1kaXJzICIgaW4KLQkgICoiICRvYmpkaXIgIiopIDs7Ci0JICAqKSBybWRpcnM9IiRybWRpcnMgJG9iamRpciIgOzsKKwkgICoiICRvZGlyICIqKSA7OworCSAgKikgZnVuY19hcHBlbmQgcm1kaXJzICIgJG9kaXIiIDs7CiAJZXNhYwogICAgICAgZmkKIApAQCAtODI1NiwxOCArOTQ4OSwxNyBAQAogCiAJICAjIERlbGV0ZSB0aGUgbGlidG9vbCBsaWJyYXJpZXMgYW5kIHN5bWxpbmtzLgogCSAgZm9yIG4gaW4gJGxpYnJhcnlfbmFtZXM7IGRvCi0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG4iCisJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kbiIKIAkgIGRvbmUKLQkgIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kb2xkX2xpYnJhcnkiCisJICB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kb2xkX2xpYnJhcnkiCiAKLQkgIGNhc2UgIiRtb2RlIiBpbgorCSAgY2FzZSAiJG9wdF9tb2RlIiBpbgogCSAgY2xlYW4pCi0JICAgIGNhc2UgIiAgJGxpYnJhcnlfbmFtZXMgIiBpbgotCSAgICAjICIgICIgaW4gdGhlIGJlZ2lubmluZyBjYXRjaGVzIGVtcHR5ICRkbG5hbWUKKwkgICAgY2FzZSAiICRsaWJyYXJ5X25hbWVzICIgaW4KIAkgICAgKiIgJGRsbmFtZSAiKikgOzsKLQkgICAgKikgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kZGxuYW1lIiA7OworCSAgICAqKSB0ZXN0IC1uICIkZGxuYW1lIiAmJiBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJGRsbmFtZSIgOzsKIAkgICAgZXNhYwotCSAgICB0ZXN0IC1uICIkbGliZGlyIiAmJiBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRuYW1lICRvYmpkaXIvJHtuYW1lfWkiCisJICAgIHRlc3QgLW4gIiRsaWJkaXIiICYmIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kbmFtZSAkb2Rpci8ke25hbWV9aSIKIAkgICAgOzsKIAkgIHVuaW5zdGFsbCkKIAkgICAgaWYgdGVzdCAtbiAiJGxpYnJhcnlfbmFtZXMiOyB0aGVuCkBAIC04Mjk1LDE5ICs5NTI3LDE5IEBACiAJICAjIEFkZCBQSUMgb2JqZWN0IHRvIHRoZSBsaXN0IG9mIGZpbGVzIHRvIHJlbW92ZS4KIAkgIGlmIHRlc3QgLW4gIiRwaWNfb2JqZWN0IiAmJgogCSAgICAgdGVzdCAiJHBpY19vYmplY3QiICE9IG5vbmU7IHRoZW4KLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJGRpci8kcGljX29iamVjdCIKKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRkaXIvJHBpY19vYmplY3QiCiAJICBmaQogCiAJICAjIEFkZCBub24tUElDIG9iamVjdCB0byB0aGUgbGlzdCBvZiBmaWxlcyB0byByZW1vdmUuCiAJICBpZiB0ZXN0IC1uICIkbm9uX3BpY19vYmplY3QiICYmCiAJICAgICB0ZXN0ICIkbm9uX3BpY19vYmplY3QiICE9IG5vbmU7IHRoZW4KLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJGRpci8kbm9uX3BpY19vYmplY3QiCisJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZGlyLyRub25fcGljX29iamVjdCIKIAkgIGZpCiAJZmkKIAk7OwogCiAgICAgICAqKQotCWlmIHRlc3QgIiRtb2RlIiA9IGNsZWFuIDsgdGhlbgorCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbiA7IHRoZW4KIAkgIG5vZXhlbmFtZT0kbmFtZQogCSAgY2FzZSAkZmlsZSBpbgogCSAgKi5leGUpCkBAIC04MzE3LDcgKzk1NDksNyBAQAogCSAgICBub2V4ZW5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCSAgICAjICRmaWxlIHdpdGggLmV4ZSBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkIHRvIHJtZmlsZXMsCiAJICAgICMgYWRkICRmaWxlIHdpdGhvdXQgLmV4ZQotCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZmlsZSIKKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRmaWxlIgogCSAgICA7OwogCSAgZXNhYwogCSAgIyBEbyBhIHRlc3QgdG8gc2VlIGlmIHRoaXMgaXMgYSBsaWJ0b29sIHByb2dyYW0uCkBAIC04MzI2LDcgKzk1NTgsNyBAQAogCSAgICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWUgIiRmaWxlIgogCSAgICAgIHJlbGlua19jb21tYW5kPQogCSAgICAgIGZ1bmNfc291cmNlICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdAotCSAgICAgIHJtZmlsZXM9IiRybWZpbGVzICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdCIKKwkgICAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0IgogCSAgICBlbHNlCiAJICAgICAgcmVsaW5rX2NvbW1hbmQ9CiAJICAgICAgZnVuY19zb3VyY2UgJGRpci8kbm9leGVuYW1lCkBAIC04MzM0LDEyICs5NTY2LDEyIEBACiAKIAkgICAgIyBub3RlICRuYW1lIHN0aWxsIGNvbnRhaW5zIC5leGUgaWYgaXQgd2FzIGluICRmaWxlIG9yaWdpbmFsbHkKIAkgICAgIyBhcyBkb2VzIHRoZSB2ZXJzaW9uIG9mICRmaWxlIHRoYXQgd2FzIGFkZGVkIGludG8gJHJtZmlsZXMKLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kbmFtZSAkb2JqZGlyLyR7bmFtZX1TLiR7b2JqZXh0fSIKKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuYW1lICRvZGlyLyR7bmFtZX1TLiR7b2JqZXh0fSIKIAkgICAgaWYgdGVzdCAiJGZhc3RfaW5zdGFsbCIgPSB5ZXMgJiYgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIjsgdGhlbgotCSAgICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvbHQtJG5hbWUiCisJICAgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyL2x0LSRuYW1lIgogCSAgICBmaQogCSAgICBpZiB0ZXN0ICJYJG5vZXhlbmFtZSIgIT0gIlgkbmFtZSIgOyB0aGVuCi0JICAgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci9sdC0ke25vZXhlbmFtZX0uYyIKKwkgICAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvbHQtJHtub2V4ZW5hbWV9LmMiCiAJICAgIGZpCiAJICBmaQogCWZpCkBAIC04MzQ3LDcgKzk1NzksNiBAQAogICAgICAgZXNhYwogICAgICAgZnVuY19zaG93X2V2YWwgIiRSTSAkcm1maWxlcyIgJ2V4aXRfc3RhdHVzPTEnCiAgICAgZG9uZQotICAgIG9iamRpcj0iJG9yaWdvYmpkaXIiCiAKICAgICAjIFRyeSB0byByZW1vdmUgdGhlICR7b2JqZGlyfXMgaW4gdGhlIGRpcmVjdG9yaWVzIHdoZXJlIHdlIGRlbGV0ZWQgZmlsZXMKICAgICBmb3IgZGlyIGluICRybWRpcnM7IGRvCkBAIC04MzU5LDE2ICs5NTkwLDE2IEBACiAgICAgZXhpdCAkZXhpdF9zdGF0dXMKIH0KIAoteyB0ZXN0ICIkbW9kZSIgPSB1bmluc3RhbGwgfHwgdGVzdCAiJG1vZGUiID0gY2xlYW47IH0gJiYKK3sgdGVzdCAiJG9wdF9tb2RlIiA9IHVuaW5zdGFsbCB8fCB0ZXN0ICIkb3B0X21vZGUiID0gY2xlYW47IH0gJiYKICAgICBmdW5jX21vZGVfdW5pbnN0YWxsICR7MSsiJEAifQogCi10ZXN0IC16ICIkbW9kZSIgJiYgewordGVzdCAteiAiJG9wdF9tb2RlIiAmJiB7CiAgIGhlbHA9IiRnZW5lcmljX2hlbHAiCiAgIGZ1bmNfZmF0YWxfaGVscCAieW91IG11c3Qgc3BlY2lmeSBhIE1PREUiCiB9CiAKIHRlc3QgLXogIiRleGVjX2NtZCIgJiYgXAotICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkbW9kZSciCisgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRvcHRfbW9kZSciCiAKIGlmIHRlc3QgLW4gIiRleGVjX2NtZCI7IHRoZW4KICAgZXZhbCBleGVjICIkZXhlY19jbWQiCmRpZmYgLS1naXQgYS9tNC9saWJ0b29sLm00IGIvbTQvbGlidG9vbC5tNAppbmRleCAzOWJhOTk2Li5kODEyNTg0IDEwMDY0NAotLS0gYS9tNC9saWJ0b29sLm00CisrKyBiL200L2xpYnRvb2wubTQKQEAgLTEsNyArMSw4IEBACiAjIGxpYnRvb2wubTQgLSBDb25maWd1cmUgbGlidG9vbCBmb3IgdGhlIGhvc3Qgc3lzdGVtLiAtKi1BdXRvY29uZi0qLQogIwogIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyMgICAgICAgICAgICAgICAgIEluYy4KICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CiAjCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCkBAIC0xMCw3ICsxMSw4IEBACiAKIG00X2RlZmluZShbX0xUX0NPUFlJTkddLCBbZG5sCiAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorIyAgICAgICAgICAgICAgICAgSW5jLgogIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKICMKICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KQEAgLTM3LDcgKzM5LDcgQEAKICMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiBdKQogCi0jIHNlcmlhbCA1NiBMVF9JTklUCisjIHNlcmlhbCA1NyBMVF9JTklUCiAKIAogIyBMVF9QUkVSRVEoVkVSU0lPTikKQEAgLTY2LDYgKzY4LDcgQEAKICMgLS0tLS0tLS0tLS0tLS0tLS0tCiBBQ19ERUZVTihbTFRfSU5JVF0sCiBbQUNfUFJFUkVRKFsyLjU4XSlkbmwgV2UgdXNlIEFDX0lOQ0xVREVTX0RFRkFVTFQKK0FDX1JFUVVJUkUoW0FDX0NPTkZJR19BVVhfRElSX0RFRkFVTFRdKWRubAogQUNfQkVGT1JFKFskMF0sIFtMVF9MQU5HXSlkbmwKIEFDX0JFRk9SRShbJDBdLCBbTFRfT1VUUFVUXSlkbmwKIEFDX0JFRk9SRShbJDBdLCBbTFRETF9JTklUXSlkbmwKQEAgLTgyLDYgKzg1LDggQEAKIEFDX1JFUVVJUkUoW0xUT0JTT0xFVEVfVkVSU0lPTl0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfUFJPR19MVE1BSU5dKWRubAogCitfTFRfU0hFTExfSU5JVChbU0hFTEw9JHtDT05GSUdfU0hFTEwtL2Jpbi9zaH1dKQorCiBkbmwgUGFyc2UgT1BUSU9OUwogX0xUX1NFVF9PUFRJT05TKFskMF0sIFskMV0pCiAKQEAgLTExOCw3ICsxMjMsNyBAQAogICAgICopIGJyZWFrOzsKICAgZXNhYwogZG9uZQotY2NfYmFzZW5hbWU9YCRFQ0hPICJYJGNjX3RlbXAiIHwgJFhzZWQgLWUgJ3MlLiovJSUnIC1lICJzJV4kaG9zdF9hbGlhcy0lJSJgCitjY19iYXNlbmFtZT1gJEVDSE8gIiRjY190ZW1wIiB8ICRTRUQgInMlLiovJSU7IHMlXiRob3N0X2FsaWFzLSUlImAKIF0pCiAKIApAQCAtMTM4LDYgKzE0Myw5IEBACiBtNF9kZWZ1bihbX0xUX1NFVFVQXSwKIFtBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCiBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfQlVJTERdKWRubAorQUNfUkVRVUlSRShbX0xUX1BSRVBBUkVfU0VEX1FVT1RFX1ZBUlNdKWRubAorQUNfUkVRVUlSRShbX0xUX1BST0dfRUNIT19CQUNLU0xBU0hdKWRubAorCiBfTFRfREVDTChbXSwgW2hvc3RfYWxpYXNdLCBbMF0sIFtUaGUgaG9zdCBzeXN0ZW1dKWRubAogX0xUX0RFQ0woW10sIFtob3N0XSwgWzBdKWRubAogX0xUX0RFQ0woW10sIFtob3N0X29zXSwgWzBdKWRubApAQCAtMTYwLDEwICsxNjgsMTMgQEAKIGRubAogbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCiBtNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVNdKWRubAorbTRfcmVxdWlyZShbX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlNdKWRubAogbTRfcmVxdWlyZShbX0xUX0NNRF9SRUxPQURdKWRubAogbTRfcmVxdWlyZShbX0xUX0NIRUNLX01BR0lDX01FVEhPRF0pZG5sCittNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQl0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfQ01EX09MRF9BUkNISVZFXSlkbmwKIG00X3JlcXVpcmUoW19MVF9DTURfR0xPQkFMX1NZTUJPTFNdKWRubAorbTRfcmVxdWlyZShbX0xUX1dJVEhfU1lTUk9PVF0pZG5sCiAKIF9MVF9DT05GSUdfTElCVE9PTF9JTklUKFsKICMgU2VlIGlmIHdlIGFyZSBydW5uaW5nIG9uIHpzaCwgYW5kIHNldCB0aGUgb3B0aW9ucyB3aGljaCBhbGxvdyBvdXIKQEAgLTE3OSw3ICsxOTAsNiBAQAogX0xUX0NIRUNLX09CSkRJUgogCiBtNF9yZXF1aXJlKFtfTFRfVEFHX0NPTVBJTEVSXSlkbmwKLV9MVF9QUk9HX0VDSE9fQkFDS1NMQVNICiAKIGNhc2UgJGhvc3Rfb3MgaW4KIGFpeDMqKQpAQCAtMTkzLDIzICsyMDMsNiBAQAogICA7OwogZXNhYwogCi0jIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBoZWxwcyB1cyBkbyByb2J1c3QgcXVvdGluZy4gIEl0IGJhY2tzbGFzaGlmaWVzCi0jIG1ldGFjaGFyYWN0ZXJzIHRoYXQgYXJlIHN0aWxsIGFjdGl2ZSB3aXRoaW4gZG91YmxlLXF1b3RlZCBzdHJpbmdzLgotc2VkX3F1b3RlX3N1YnN0PSdzL1woW1siYCRcXF1dXCkvXFxcMS9nJwotCi0jIFNhbWUgYXMgYWJvdmUsIGJ1dCBkbyBub3QgcXVvdGUgdmFyaWFibGUgcmVmZXJlbmNlcy4KLWRvdWJsZV9xdW90ZV9zdWJzdD0ncy9cKFtbImBcXF1dXCkvXFxcMS9nJwotCi0jIFNlZCBzdWJzdGl0dXRpb24gdG8gZGVsYXkgZXhwYW5zaW9uIG9mIGFuIGVzY2FwZWQgc2hlbGwgdmFyaWFibGUgaW4gYQotIyBkb3VibGVfcXVvdGVfc3Vic3QnZWQgc3RyaW5nLgotZGVsYXlfdmFyaWFibGVfc3Vic3Q9J3MvXFxcXFxcXFxcXFwkL1xcXFxcXCQvZycKLQotIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGRlbGF5IGV4cGFuc2lvbiBvZiBhbiBlc2NhcGVkIHNpbmdsZSBxdW90ZS4KLWRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdD0ncy8nXCcnLydcJ1xcXFxcXFwnXCcnL2cnCi0KLSMgU2VkIHN1YnN0aXR1dGlvbiB0byBhdm9pZCBhY2NpZGVudGFsIGdsb2JiaW5nIGluIGV2YWxlZCBleHByZXNzaW9ucwotbm9fZ2xvYl9zdWJzdD0ncy9cKi9cXFwqL2cnCi0KICMgR2xvYmFsIHZhcmlhYmxlczoKIG9maWxlPWxpYnRvb2wKIGNhbl9idWlsZF9zaGFyZWQ9eWVzCkBAIC0yNTAsNiArMjQzLDI4IEBACiBdKSMgX0xUX1NFVFVQCiAKIAorIyBfTFRfUFJFUEFSRV9TRURfUVVPVEVfVkFSUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBEZWZpbmUgYSBmZXcgc2VkIHN1YnN0aXR1dGlvbiB0aGF0IGhlbHAgdXMgZG8gcm9idXN0IHF1b3RpbmcuCittNF9kZWZ1bihbX0xUX1BSRVBBUkVfU0VEX1FVT1RFX1ZBUlNdLAorWyMgQmFja3NsYXNoaWZ5IG1ldGFjaGFyYWN0ZXJzIHRoYXQgYXJlIHN0aWxsIGFjdGl2ZSB3aXRoaW4KKyMgZG91YmxlLXF1b3RlZCBzdHJpbmdzLgorc2VkX3F1b3RlX3N1YnN0PSdzL1woW1siYCRcXF1dXCkvXFxcMS9nJworCisjIFNhbWUgYXMgYWJvdmUsIGJ1dCBkbyBub3QgcXVvdGUgdmFyaWFibGUgcmVmZXJlbmNlcy4KK2RvdWJsZV9xdW90ZV9zdWJzdD0ncy9cKFtbImBcXF1dXCkvXFxcMS9nJworCisjIFNlZCBzdWJzdGl0dXRpb24gdG8gZGVsYXkgZXhwYW5zaW9uIG9mIGFuIGVzY2FwZWQgc2hlbGwgdmFyaWFibGUgaW4gYQorIyBkb3VibGVfcXVvdGVfc3Vic3QnZWQgc3RyaW5nLgorZGVsYXlfdmFyaWFibGVfc3Vic3Q9J3MvXFxcXFxcXFxcXFwkL1xcXFxcXCQvZycKKworIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGRlbGF5IGV4cGFuc2lvbiBvZiBhbiBlc2NhcGVkIHNpbmdsZSBxdW90ZS4KK2RlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdD0ncy8nXCcnLydcJ1xcXFxcXFwnXCcnL2cnCisKKyMgU2VkIHN1YnN0aXR1dGlvbiB0byBhdm9pZCBhY2NpZGVudGFsIGdsb2JiaW5nIGluIGV2YWxlZCBleHByZXNzaW9ucworbm9fZ2xvYl9zdWJzdD0ncy9cKi9cXFwqL2cnCitdKQorCiAjIF9MVF9QUk9HX0xUTUFJTgogIyAtLS0tLS0tLS0tLS0tLS0KICMgTm90ZSB0aGF0IHRoaXMgY29kZSBpcyBjYWxsZWQgYm90aCBmcm9tIGBjb25maWd1cmUnLCBhbmQgYGNvbmZpZy5zdGF0dXMnCkBAIC00MDgsNyArNDIzLDcgQEAKICMgZGVjbGFyYXRpb24gdGhlcmUgd2lsbCBoYXZlIHRoZSBzYW1lIHZhbHVlIGFzIGluIGBjb25maWd1cmUnLiAgVkFSTkFNRQogIyBtdXN0IGhhdmUgYSBzaW5nbGUgcXVvdGUgZGVsaW1pdGVkIHZhbHVlIGZvciB0aGlzIHRvIHdvcmsuCiBtNF9kZWZpbmUoW19MVF9DT05GSUdfU1RBVFVTX0RFQ0xBUkVdLAotWyQxPSdgJEVDSE8gIlgkXVskMSIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJ10pCitbJDE9J2AkRUNITyAiJF1bJDEiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJ10pCiAKIAogIyBfTFRfQ09ORklHX1NUQVRVU19ERUNMQVJBVElPTlMKQEAgLTQxOCw3ICs0MzMsNyBAQAogIyBlbWJlZGRlZCBzaW5nbGUgcXVvdGVzIHByb3Blcmx5LiAgSW4gY29uZmlndXJlLCB0aGlzIG1hY3JvIGV4cGFuZHMKICMgZWFjaCB2YXJpYWJsZSBkZWNsYXJlZCB3aXRoIF9MVF9ERUNMIChhbmQgX0xUX1RBR0RFQ0wpIGludG86CiAjCi0jICAgIDx2YXI+PSdgJEVDSE8gIlgkPHZhcj4iIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyMgICAgPHZhcj49J2AkRUNITyAiJDx2YXI+IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKIG00X2RlZnVuKFtfTFRfQ09ORklHX1NUQVRVU19ERUNMQVJBVElPTlNdLAogW200X2ZvcmVhY2goW19sdF92YXJdLCBtNF9xdW90ZShsdF9kZWNsX2FsbF92YXJuYW1lcyksCiAgICAgW200X24oW19MVF9DT05GSUdfU1RBVFVTX0RFQ0xBUkUoX2x0X3ZhcildKV0pXSkKQEAgLTUxNywxMiArNTMyLDIwIEBACiBMVENGTEFHUz0nJExUQ0ZMQUdTJwogY29tcGlsZXI9JyRjb21waWxlcl9ERUZBVUxUJwogCisjIEEgZnVuY3Rpb24gdGhhdCBpcyB1c2VkIHdoZW4gdGhlcmUgaXMgbm8gcHJpbnQgYnVpbHRpbiBvciBwcmludGYuCitmdW5jX2ZhbGxiYWNrX2VjaG8gKCkKK3sKKyAgZXZhbCAnY2F0IDw8X0xURUNIT19FT0YKK1wkW10xCitfTFRFQ0hPX0VPRicKK30KKwogIyBRdW90ZSBldmFsZWQgc3RyaW5ncy4KIGZvciB2YXIgaW4gbHRfZGVjbF9hbGxfdmFybmFtZXMoW1sgXAogXV0sIGx0X2RlY2xfcXVvdGVfdmFybmFtZXMpOyBkbwotICAgIGNhc2UgXGBldmFsIFxcXFxcJEVDSE8gIlhcXFxcXCRcJHZhciJcYCBpbgorICAgIGNhc2UgXGBldmFsIFxcXFxcJEVDSE8gXFxcXCIiXFxcXFwkXCR2YXIiXFxcXCJcYCBpbgogICAgICpbW1xcXFxcXFxgXFwiXFxcJF1dKikKLSAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiWFxcXCRcJHZhclxcIiB8IFxcXCRYc2VkIC1lIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKKyAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiXFxcJFwkdmFyXFwiIHwgXFxcJFNFRCBcXCJcXFwkc2VkX3F1b3RlX3N1YnN0XFwiXFxcYFxcXFxcXCIiCiAgICAgICA7OwogICAgICopCiAgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcJFwkdmFyXFxcXFxcIiIKQEAgLTUzMyw5ICs1NTYsOSBAQAogIyBEb3VibGUtcXVvdGUgZG91YmxlLWV2YWxlZCBzdHJpbmdzLgogZm9yIHZhciBpbiBsdF9kZWNsX2FsbF92YXJuYW1lcyhbWyBcCiBdXSwgbHRfZGVjbF9kcXVvdGVfdmFybmFtZXMpOyBkbwotICAgIGNhc2UgXGBldmFsIFxcXFxcJEVDSE8gIlhcXFxcXCRcJHZhciJcYCBpbgorICAgIGNhc2UgXGBldmFsIFxcXFxcJEVDSE8gXFxcXCIiXFxcXFwkXCR2YXIiXFxcXCJcYCBpbgogICAgICpbW1xcXFxcXFxgXFwiXFxcJF1dKikKLSAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiWFxcXCRcJHZhclxcIiB8IFxcXCRYc2VkIC1lIFxcIlxcXCRkb3VibGVfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkZGVsYXlfdmFyaWFibGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKKyAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiXFxcJFwkdmFyXFwiIHwgXFxcJFNFRCAtZSBcXCJcXFwkZG91YmxlX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJGRlbGF5X3ZhcmlhYmxlX3N1YnN0XFwiXFxcYFxcXFxcXCIiCiAgICAgICA7OwogICAgICopCiAgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcJFwkdmFyXFxcXFxcIiIKQEAgLTU0MywxNiArNTY2LDM4IEBACiAgICAgZXNhYwogZG9uZQogCi0jIEZpeC11cCBmYWxsYmFjayBlY2hvIGlmIGl0IHdhcyBtYW5nbGVkIGJ5IHRoZSBhYm92ZSBxdW90aW5nIHJ1bGVzLgotY2FzZSBcJGx0X0VDSE8gaW4KLSonXFxcWyRdMCAtLWZhbGxiYWNrLWVjaG8iJylkbmwgIgotICBsdF9FQ0hPPVxgXCRFQ0hPICJYXCRsdF9FQ0hPIiB8IFwkWHNlZCAtZSAncy9cXFxcXFxcXFxcXFxcXFxbJF0wIC0tZmFsbGJhY2stZWNobyJcWyRdL1xbJF0wIC0tZmFsbGJhY2stZWNobyIvJ1xgCi0gIDs7Ci1lc2FjCi0KIF9MVF9PVVRQVVRfTElCVE9PTF9JTklUCiBdKQogCisjIF9MVF9HRU5FUkFURURfRklMRV9JTklUKEZJTEUsIFtDT01NRU5UXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEdlbmVyYXRlIGEgY2hpbGQgc2NyaXB0IEZJTEUgd2l0aCBhbGwgaW5pdGlhbGl6YXRpb24gbmVjZXNzYXJ5IHRvCisjIHJldXNlIHRoZSBlbnZpcm9ubWVudCBsZWFybmVkIGJ5IHRoZSBwYXJlbnQgc2NyaXB0LCBhbmQgbWFrZSB0aGUKKyMgZmlsZSBleGVjdXRhYmxlLiAgSWYgQ09NTUVOVCBpcyBzdXBwbGllZCwgaXQgaXMgaW5zZXJ0ZWQgYWZ0ZXIgdGhlCisjIGAjIScgc2VxdWVuY2UgYnV0IGJlZm9yZSBpbml0aWFsaXphdGlvbiB0ZXh0IGJlZ2lucy4gIEFmdGVyIHRoaXMKKyMgbWFjcm8sIGFkZGl0aW9uYWwgdGV4dCBjYW4gYmUgYXBwZW5kZWQgdG8gRklMRSB0byBmb3JtIHRoZSBib2R5IG9mCisjIHRoZSBjaGlsZCBzY3JpcHQuICBUaGUgbWFjcm8gZW5kcyB3aXRoIG5vbi16ZXJvIHN0YXR1cyBpZiB0aGUKKyMgZmlsZSBjb3VsZCBub3QgYmUgZnVsbHkgd3JpdHRlbiAoc3VjaCBhcyBpZiB0aGUgZGlzayBpcyBmdWxsKS4KK200X2lmZGVmKFtBU19JTklUX0dFTkVSQVRFRF0sCitbbTRfZGVmdW4oW19MVF9HRU5FUkFURURfRklMRV9JTklUXSxbQVNfSU5JVF9HRU5FUkFURUQoJEApXSldLAorW200X2RlZnVuKFtfTFRfR0VORVJBVEVEX0ZJTEVfSU5JVF0sCitbbTRfcmVxdWlyZShbQVNfUFJFUEFSRV0pXWRubAorW200X3B1c2hkZWYoW0FTX01FU1NBR0VfTE9HX0ZEXSldZG5sCitbbHRfd3JpdGVfZmFpbD0wCitjYXQgPiQxIDw8X0FTRU9GIHx8IGx0X3dyaXRlX2ZhaWw9MQorIyEgJFNIRUxMCisjIEdlbmVyYXRlZCBieSAkYXNfbWUuCiskMgorU0hFTEw9XCR7Q09ORklHX1NIRUxMLSRTSEVMTH0KK2V4cG9ydCBTSEVMTAorX0FTRU9GCitjYXQgPj4kMSA8PFxfQVNFT0YgfHwgbHRfd3JpdGVfZmFpbD0xCitBU19TSEVMTF9TQU5JVElaRQorX0FTX1BSRVBBUkUKK2V4ZWMgQVNfTUVTU0FHRV9GRD4mMQorX0FTRU9GCit0ZXN0ICRsdF93cml0ZV9mYWlsID0gMCAmJiBjaG1vZCAreCAkMVtdZG5sCittNF9wb3BkZWYoW0FTX01FU1NBR0VfTE9HX0ZEXSldKV0pIyBfTFRfR0VORVJBVEVEX0ZJTEVfSU5JVAogCiAjIExUX09VVFBVVAogIyAtLS0tLS0tLS0KQEAgLTU2MiwyMCArNjA3LDExIEBACiBBQ19ERUZVTihbTFRfT1VUUFVUXSwKIFs6ICR7Q09ORklHX0xUPS4vY29uZmlnLmx0fQogQUNfTVNHX05PVElDRShbY3JlYXRpbmcgJENPTkZJR19MVF0pCi1jYXQgPiIkQ09ORklHX0xUIiA8PF9MVEVPRgotIyEgJFNIRUxMCi0jIEdlbmVyYXRlZCBieSAkYXNfbWUuCi0jIFJ1biB0aGlzIGZpbGUgdG8gcmVjcmVhdGUgYSBsaWJ0b29sIHN0dWIgd2l0aCB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLgotCi1sdF9jbF9zaWxlbnQ9ZmFsc2UKLVNIRUxMPVwke0NPTkZJR19TSEVMTC0kU0hFTEx9Ci1fTFRFT0YKK19MVF9HRU5FUkFURURfRklMRV9JTklUKFsiJENPTkZJR19MVCJdLAorWyMgUnVuIHRoaXMgZmlsZSB0byByZWNyZWF0ZSBhIGxpYnRvb2wgc3R1YiB3aXRoIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uXSkKIAogY2F0ID4+IiRDT05GSUdfTFQiIDw8XF9MVEVPRgotQVNfU0hFTExfU0FOSVRJWkUKLV9BU19QUkVQQVJFCi0KLWV4ZWMgQVNfTUVTU0FHRV9GRD4mMQorbHRfY2xfc2lsZW50PWZhbHNlCiBleGVjIEFTX01FU1NBR0VfTE9HX0ZEPj5jb25maWcubG9nCiB7CiAgIGVjaG8KQEAgLTYwMSw3ICs2MzcsNyBAQAogbTRfaWZzZXQoW0FDX1BBQ0tBR0VfVkVSU0lPTl0sIFsgQUNfUEFDS0FHRV9WRVJTSU9OXSkKIGNvbmZpZ3VyZWQgYnkgJFswXSwgZ2VuZXJhdGVkIGJ5IG00X1BBQ0tBR0VfU1RSSU5HLgogCi1Db3B5cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiBUaGlzIGNvbmZpZy5sdCBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuIgogCkBAIC02NDYsMTUgKzY4MiwxMyBAQAogIyBhcHBlbmRpbmcgdG8gY29uZmlnLmxvZywgd2hpY2ggZmFpbHMgb24gRE9TLCBhcyBjb25maWcubG9nIGlzIHN0aWxsIGtlcHQKICMgb3BlbiBieSBjb25maWd1cmUuICBIZXJlIHdlIGV4ZWMgdGhlIEZEIHRvIC9kZXYvbnVsbCwgZWZmZWN0aXZlbHkgY2xvc2luZwogIyBjb25maWcubG9nLCBzbyBpdCBjYW4gYmUgcHJvcGVybHkgKHJlKW9wZW5lZCBhbmQgYXBwZW5kZWQgdG8gYnkgY29uZmlnLmx0LgotaWYgdGVzdCAiJG5vX2NyZWF0ZSIgIT0geWVzOyB0aGVuCi0gIGx0X2NsX3N1Y2Nlc3M9OgotICB0ZXN0ICIkc2lsZW50IiA9IHllcyAmJgotICAgIGx0X2NvbmZpZ19sdF9hcmdzPSIkbHRfY29uZmlnX2x0X2FyZ3MgLS1xdWlldCIKLSAgZXhlYyBBU19NRVNTQUdFX0xPR19GRD4vZGV2L251bGwKLSAgJFNIRUxMICIkQ09ORklHX0xUIiAkbHRfY29uZmlnX2x0X2FyZ3MgfHwgbHRfY2xfc3VjY2Vzcz1mYWxzZQotICBleGVjIEFTX01FU1NBR0VfTE9HX0ZEPj5jb25maWcubG9nCi0gICRsdF9jbF9zdWNjZXNzIHx8IEFTX0VYSVQoMSkKLWZpCitsdF9jbF9zdWNjZXNzPToKK3Rlc3QgIiRzaWxlbnQiID0geWVzICYmCisgIGx0X2NvbmZpZ19sdF9hcmdzPSIkbHRfY29uZmlnX2x0X2FyZ3MgLS1xdWlldCIKK2V4ZWMgQVNfTUVTU0FHRV9MT0dfRkQ+L2Rldi9udWxsCiskU0hFTEwgIiRDT05GSUdfTFQiICRsdF9jb25maWdfbHRfYXJncyB8fCBsdF9jbF9zdWNjZXNzPWZhbHNlCitleGVjIEFTX01FU1NBR0VfTE9HX0ZEPj5jb25maWcubG9nCiskbHRfY2xfc3VjY2VzcyB8fCBBU19FWElUKDEpCiBdKSMgTFRfT1VUUFVUCiAKIApAQCAtNzE3LDE1ICs3NTEsMTIgQEAKICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgogICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQogICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwotICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKIAotICBfTFRfUFJPR19YU0lfU0hFTExGTlMKKyAgX0xUX1BST0dfUkVQTEFDRV9TSEVMTEZOUwogCi0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotCi0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQogICBjaG1vZCAreCAiJG9maWxlIgogXSwKQEAgLTgzMSwxMSArODYyLDEzIEBACiBBVV9ERUZVTihbQUNfTElCVE9PTF9GNzddLCBbTFRfTEFORyhGb3J0cmFuIDc3KV0pCiBBVV9ERUZVTihbQUNfTElCVE9PTF9GQ10sIFtMVF9MQU5HKEZvcnRyYW4pXSkKIEFVX0RFRlVOKFtBQ19MSUJUT09MX0dDSl0sIFtMVF9MQU5HKEphdmEpXSkKK0FVX0RFRlVOKFtBQ19MSUJUT09MX1JDXSwgW0xUX0xBTkcoV2luZG93cyBSZXNvdXJjZSldKQogZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgogZG5sIEFDX0RFRlVOKFtBQ19MSUJUT09MX0NYWF0sIFtdKQogZG5sIEFDX0RFRlVOKFtBQ19MSUJUT09MX0Y3N10sIFtdKQogZG5sIEFDX0RFRlVOKFtBQ19MSUJUT09MX0ZDXSwgW10pCiBkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfR0NKXSwgW10pCitkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfUkNdLCBbXSkKIAogCiAjIF9MVF9UQUdfQ09NUElMRVIKQEAgLTk0MCw2ICs5NzMsMzEgQEAKIAlbbHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0PW5vXSkKIAlMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgogICAgIF0pCisgICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciAtZm9yY2VfbG9hZCBsaW5rZXIgZmxhZ10sW2x0X2N2X2xkX2ZvcmNlX2xvYWRdLAorICAgICAgW2x0X2N2X2xkX2ZvcmNlX2xvYWQ9bm8KKyAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgoraW50IGZvcmNlZF9sb2FkZWQoKSB7IHJldHVybiAyO30KK19MVF9FT0YKKyAgICAgIGVjaG8gIiRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgoraW50IG1haW4oKSB7IHJldHVybiAwO30KK19MVF9FT0YKKyAgICAgIGVjaG8gIiRMVENDICRMVENGTEFHUyAkTERGTEFHUyAtbyBjb25mdGVzdCBjb25mdGVzdC5jIC1XbCwtZm9yY2VfbG9hZCwuL2xpYmNvbmZ0ZXN0LmEiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgICRMVENDICRMVENGTEFHUyAkTERGTEFHUyAtbyBjb25mdGVzdCBjb25mdGVzdC5jIC1XbCwtZm9yY2VfbG9hZCwuL2xpYmNvbmZ0ZXN0LmEgMj5jb25mdGVzdC5lcnIKKyAgICAgIF9sdF9yZXN1bHQ9JD8KKyAgICAgIGlmIHRlc3QgLWYgY29uZnRlc3QgJiYgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVyciAmJiB0ZXN0ICRfbHRfcmVzdWx0ID0gMCAmJiAkR1JFUCBmb3JjZWRfbG9hZCBjb25mdGVzdCAyPiYxID4vZGV2L251bGw7IHRoZW4KKwlsdF9jdl9sZF9mb3JjZV9sb2FkPXllcworICAgICAgZWxzZQorCWNhdCBjb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgZmkKKyAgICAgICAgcm0gLWYgY29uZnRlc3QuZXJyIGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QgY29uZnRlc3QuYworICAgICAgICBybSAtcmYgY29uZnRlc3QuZFNZTQorICAgIF0pCiAgICAgY2FzZSAkaG9zdF9vcyBpbgogICAgIHJoYXBzb2R5KiB8IGRhcndpbjEuW1swMTJdXSkKICAgICAgIF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkPScke3dsfS11bmRlZmluZWQgJHt3bH1zdXBwcmVzcycgOzsKQEAgLTk2Nyw3ICsxMDI1LDcgQEAKICAgICBlbHNlCiAgICAgICBfbHRfZGFyX2V4cG9ydF9zeW1zPSd+JE5NRURJVCAtcyAkb3V0cHV0X29iamRpci8ke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltICR7bGlifScKICAgICBmaQotICAgIGlmIHRlc3QgIiREU1lNVVRJTCIgIT0gIjoiOyB0aGVuCisgICAgaWYgdGVzdCAiJERTWU1VVElMIiAhPSAiOiIgJiYgdGVzdCAiJGx0X2N2X2xkX2ZvcmNlX2xvYWQiID0gIm5vIjsgdGhlbgogICAgICAgX2x0X2RzeW11dGlsPSd+JERTWU1VVElMICRsaWIgfHwgOicKICAgICBlbHNlCiAgICAgICBfbHRfZHN5bXV0aWw9CkBAIC05ODcsNyArMTA0NSwxMSBAQAogICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCiAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSk9eWVzCiAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPXVuc3VwcG9ydGVkCi0gIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJworICBpZiB0ZXN0ICIkbHRfY3ZfbGRfZm9yY2VfbG9hZCIgPSAieWVzIjsgdGhlbgorICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlICR7d2x9LWZvcmNlX2xvYWQsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAnCisgIGVsc2UKKyAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JycKKyAgZmkKICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCiAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0iJF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkIgogICBjYXNlICRjY19iYXNlbmFtZSBpbgpAQCAtOTk1LDcgKzEwNTcsNyBAQAogICAgICAqKSBfbHRfZGFyX2Nhbl9zaGFyZWQ9JEdDQyA7OwogICBlc2FjCiAgIGlmIHRlc3QgIiRfbHRfZGFyX2Nhbl9zaGFyZWQiID0gInllcyI7IHRoZW4KLSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD1lY2hvCisgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9ZnVuY19lY2hvX2FsbAogICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9IlwkQ0MgLWR5bmFtaWNsaWIgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nICRfbHRfZGFyX3NpbmdsZV9tb2Qke19sdF9kc3ltdXRpbH0iCiAgICAgX0xUX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpPSJcJENDIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgLWJ1bmRsZSBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3Mke19sdF9kc3ltdXRpbH0iCiAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9InNlZCAncyxeLF8sJyA8IFwkZXhwb3J0X3N5bWJvbHMgPiBcJG91dHB1dF9vYmpkaXIvXCR7bGlibmFtZX0tc3ltYm9scy5leHBzeW1+XCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcgJHtfbHRfZGFyX3NpbmdsZV9tb2R9JHtfbHRfZGFyX2V4cG9ydF9zeW1zfSR7X2x0X2RzeW11dGlsfSIKQEAgLTEwMTEsMjAzICsxMDczLDE0MiBAQAogICBmaQogXSkKIAotIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbVEFHTkFNRV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgTGlua3MgYSBtaW5pbWFsIHByb2dyYW0gYW5kIGNoZWNrcyB0aGUgZXhlY3V0YWJsZQogIyBmb3IgdGhlIHN5c3RlbSBkZWZhdWx0IGhhcmRjb2RlZCBsaWJyYXJ5IHBhdGguIEluIG1vc3QgY2FzZXMsCiAjIHRoaXMgaXMgL3Vzci9saWI6L2xpYiwgYnV0IHdoZW4gdGhlIE1QSSBjb21waWxlcnMgYXJlIHVzZWQKICMgdGhlIGxvY2F0aW9uIG9mIHRoZSBjb21tdW5pY2F0aW9uIGFuZCBNUEkgbGlicyBhcmUgaW5jbHVkZWQgdG9vLgogIyBJZiB3ZSBkb24ndCBmaW5kIGFueXRoaW5nLCB1c2UgdGhlIGRlZmF1bHQgbGlicmFyeSBwYXRoIGFjY29yZGluZwogIyB0byB0aGUgYWl4IGxkIG1hbnVhbC4KKyMgU3RvcmUgdGhlIHJlc3VsdHMgZnJvbSB0aGUgZGlmZmVyZW50IGNvbXBpbGVycyBmb3IgZWFjaCBUQUdOQU1FLgorIyBBbGxvdyB0byBvdmVycmlkZSB0aGVtIGZvciBhbGwgdGFncyB0aHJvdWdoIGx0X2N2X2FpeF9saWJwYXRoLgogbTRfZGVmdW4oW19MVF9TWVNfTU9EVUxFX1BBVEhfQUlYXSwKIFttNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAotQUNfTElOS19JRkVMU0UoQUNfTEFOR19QUk9HUkFNLFsKLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotCS9eMC8gewotCSAgICBzL14wICAqXCguKlwpJC9cMS8KLQkgICAgcAotCX0KLSAgICB9JwotYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotZmldLFtdKQotaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorZWxzZQorICBBQ19DQUNIRV9WQUwoW19MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pXSwKKyAgW0FDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU1dLFsKKyAgbHRfYWl4X2xpYnBhdGhfc2VkPSdbCisgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisJICAvXjAvIHsKKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworCSAgICAgIHAKKwkgIH0KKyAgICAgIH1dJworICBfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKT1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorICBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkiOyB0aGVuCisgICAgX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSk9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisgIGZpXSxbXSkKKyAgaWYgdGVzdCAteiAiJF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pIjsgdGhlbgorICAgIF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pPSIvdXNyL2xpYjovbGliIgorICBmaQorICBdKQorICBhaXhfbGlicGF0aD0kX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkKK2ZpCiBdKSMgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKIAogCiAjIF9MVF9TSEVMTF9JTklUKEFSRykKICMgLS0tLS0tLS0tLS0tLS0tLS0tLQogbTRfZGVmaW5lKFtfTFRfU0hFTExfSU5JVF0sCi1baWZkZWYoW0FDX0RJVkVSU0lPTl9OT1RJQ0VdLAotCSAgICAgW0FDX0RJVkVSVF9QVVNIKEFDX0RJVkVSU0lPTl9OT1RJQ0UpXSwKLQkgW0FDX0RJVkVSVF9QVVNIKE5PVElDRSldKQotJDEKLUFDX0RJVkVSVF9QT1AKLV0pIyBfTFRfU0hFTExfSU5JVAorW200X2RpdmVydF90ZXh0KFtNNFNILUlOSVRdLCBbJDEKK10pXSkjIF9MVF9TSEVMTF9JTklUCisKIAogCiAjIF9MVF9QUk9HX0VDSE9fQkFDS1NMQVNICiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEFkZCBzb21lIGNvZGUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBnZW5lcmF0ZWQgY29uZmlndXJlIHNjcmlwdCB3aGljaAotIyB3aWxsIGZpbmQgYW4gZWNobyBjb21tYW5kIHdoaWNoIGRvZXNuJ3QgaW50ZXJwcmV0IGJhY2tzbGFzaGVzLgorIyBGaW5kIGhvdyB3ZSBjYW4gZmFrZSBhbiBlY2hvIGNvbW1hbmQgdGhhdCBkb2VzIG5vdCBpbnRlcnByZXQgYmFja3NsYXNoLgorIyBJbiBwYXJ0aWN1bGFyLCB3aXRoIEF1dG9jb25mIDIuNjAgb3IgbGF0ZXIgd2UgYWRkIHNvbWUgY29kZSB0byB0aGUgc3RhcnQKKyMgb2YgdGhlIGdlbmVyYXRlZCBjb25maWd1cmUgc2NyaXB0IHdoaWNoIHdpbGwgZmluZCBhIHNoZWxsIHdpdGggYSBidWlsdGluCisjIHByaW50ZiAod2hpY2ggd2UgY2FuIHVzZSBhcyBhbiBlY2hvIGNvbW1hbmQpLgogbTRfZGVmdW4oW19MVF9QUk9HX0VDSE9fQkFDS1NMQVNIXSwKLVtfTFRfU0hFTExfSU5JVChbCi0jIENoZWNrIHRoYXQgd2UgYXJlIHJ1bm5pbmcgdW5kZXIgdGhlIGNvcnJlY3Qgc2hlbGwuCi1TSEVMTD0ke0NPTkZJR19TSEVMTC0vYmluL3NofQorW0VDSE89J1xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwnCitFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KK0VDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCiAKLWNhc2UgWCRsdF9FQ0hPIGluCi1YKi0tZmFsbGJhY2stZWNobykKLSAgIyBSZW1vdmUgb25lIGxldmVsIG9mIHF1b3RhdGlvbiAod2hpY2ggd2FzIHJlcXVpcmVkIGZvciBNYWtlKS4KLSAgRUNITz1gZWNobyAiJGx0X0VDSE8iIHwgc2VkICdzLFxcXFxcWyRdXFxbJF0wLCdbJF0wJywnYAotICA7OworQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gcHJpbnQgc3RyaW5nc10pCisjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgRUNITz0ncHJpbnQgLXIgLS0nCitlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICBFQ0hPPSdwcmludGYgJXNcbicKK2Vsc2UKKyAgIyBVc2UgdGhpcyBmdW5jdGlvbiBhcyBhIGZhbGxiYWNrIHRoYXQgYWx3YXlzIHdvcmtzLgorICBmdW5jX2ZhbGxiYWNrX2VjaG8gKCkKKyAgeworICAgIGV2YWwgJ2NhdCA8PF9MVEVDSE9fRU9GCiskW10xCitfTFRFQ0hPX0VPRicKKyAgfQorICBFQ0hPPSdmdW5jX2ZhbGxiYWNrX2VjaG8nCitmaQorCisjIGZ1bmNfZWNob19hbGwgYXJnLi4uCisjIEludm9rZSAkRUNITyB3aXRoIGFsbCBhcmdzLCBzcGFjZS1zZXBhcmF0ZWQuCitmdW5jX2VjaG9fYWxsICgpCit7CisgICAgJEVDSE8gIiQqIiAKK30KKworY2FzZSAiJEVDSE8iIGluCisgIHByaW50ZiopIEFDX01TR19SRVNVTFQoW3ByaW50Zl0pIDs7CisgIHByaW50KikgQUNfTVNHX1JFU1VMVChbcHJpbnQgLXJdKSA7OworICAqKSBBQ19NU0dfUkVTVUxUKFtjYXRdKSA7OwogZXNhYwogCi1FQ0hPPSR7bHRfRUNITy1lY2hvfQotaWYgdGVzdCAiWFskXTEiID0gWC0tbm8tcmVleGVjOyB0aGVuCi0gICMgRGlzY2FyZCB0aGUgLS1uby1yZWV4ZWMgZmxhZywgYW5kIGNvbnRpbnVlLgotICBzaGlmdAotZWxpZiB0ZXN0ICJYWyRdMSIgPSBYLS1mYWxsYmFjay1lY2hvOyB0aGVuCi0gICMgQXZvaWQgaW5saW5lIGRvY3VtZW50IGhlcmUsIGl0IG1heSBiZSBsZWZ0IG92ZXIKLSAgOgotZWxpZiB0ZXN0ICJYYHsgJEVDSE8gJ1x0JzsgfSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgOyB0aGVuCi0gICMgWWlwcGVlLCAkRUNITyB3b3JrcyEKLSAgOgotZWxzZQotICAjIFJlc3RhcnQgdW5kZXIgdGhlIGNvcnJlY3Qgc2hlbGwuCi0gIGV4ZWMgJFNIRUxMICJbJF0wIiAtLW5vLXJlZXhlYyAkezErIlskXUAifQotZmkKK200X2lmZGVmKFtfQVNfREVURUNUX1NVR0dFU1RFRF0sCitbX0FTX0RFVEVDVF9TVUdHRVNURUQoWworICB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0ke0JBU0hfVkVSU0lPTitzZXR9IiB8fCAoCisgICAgRUNITz0nXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXCcKKyAgICBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KKyAgICBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworICAgIFBBVEg9L2VtcHR5IEZQQVRIPS9lbXB0eTsgZXhwb3J0IFBBVEggRlBBVEgKKyAgICB0ZXN0ICJYYHByaW50ZiAlcyAkRUNIT2AiID0gIlgkRUNITyIgXAorICAgICAgfHwgdGVzdCAiWGBwcmludCAtciAtLSAkRUNIT2AiID0gIlgkRUNITyIgKV0pXSkKIAotaWYgdGVzdCAiWFskXTEiID0gWC0tZmFsbGJhY2stZWNobzsgdGhlbgotICAjIHVzZWQgYXMgZmFsbGJhY2sgZWNobwotICBzaGlmdAotICBjYXQgPDxfTFRfRU9GCi1bJF0qCi1fTFRfRU9GCi0gIGV4aXQgMAotZmkKLQotIyBUaGUgSFAtVVgga3NoIGFuZCBQT1NJWCBzaGVsbCBwcmludCB0aGUgdGFyZ2V0IGRpcmVjdG9yeSB0byBzdGRvdXQKLSMgaWYgQ0RQQVRIIGlzIHNldC4KLSh1bnNldCBDRFBBVEgpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCBDRFBBVEgKLQotaWYgdGVzdCAteiAiJGx0X0VDSE8iOyB0aGVuCi0gIGlmIHRlc3QgIlgke2VjaG9fdGVzdF9zdHJpbmcrc2V0fSIgIT0gWHNldDsgdGhlbgotICAgICMgZmluZCBhIHN0cmluZyBhcyBsYXJnZSBhcyBwb3NzaWJsZSwgYXMgbG9uZyBhcyB0aGUgc2hlbGwgY2FuIGNvcGUgd2l0aCBpdAotICAgIGZvciBjbWQgaW4gJ3NlZCA1MHEgIlskXTAiJyAnc2VkIDIwcSAiWyRdMCInICdzZWQgMTBxICJbJF0wIicgJ3NlZCAycSAiWyRdMCInICdlY2hvIHRlc3QnOyBkbwotICAgICAgIyBleHBlY3RlZCBzaXplczogbGVzcyB0aGFuIDJLYiwgMUtiLCA1MTIgYnl0ZXMsIDE2IGJ5dGVzLCAuLi4KLSAgICAgIGlmIHsgZWNob190ZXN0X3N0cmluZz1gZXZhbCAkY21kYDsgfSAyPi9kZXYvbnVsbCAmJgotCSB7IHRlc3QgIlgkZWNob190ZXN0X3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgfSAyPi9kZXYvbnVsbAotICAgICAgdGhlbgotICAgICAgICBicmVhawotICAgICAgZmkKLSAgICBkb25lCi0gIGZpCi0KLSAgaWYgdGVzdCAiWGB7ICRFQ0hPICdcdCc7IH0gMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCi0gICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YHsgJEVDSE8gIiRlY2hvX3Rlc3Rfc3RyaW5nIjsgfSAyPi9kZXYvbnVsbGAgJiYKLSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0gICAgOgotICBlbHNlCi0gICAgIyBUaGUgU29sYXJpcywgQUlYLCBhbmQgRGlnaXRhbCBVbml4IGRlZmF1bHQgZWNobyBwcm9ncmFtcyB1bnF1b3RlCi0gICAgIyBiYWNrc2xhc2hlcy4gIFRoaXMgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBxdW90ZSBiYWNrc2xhc2hlcyB1c2luZwotICAgICMgICBlY2hvICIkc29tZXRoaW5nIiB8IHNlZCAncy9cXC9cXFxcL2cnCi0gICAgIwotICAgICMgU28sIGZpcnN0IHdlIGxvb2sgZm9yIGEgd29ya2luZyBlY2hvIGluIHRoZSB1c2VyJ3MgUEFUSC4KLQotICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgotICAgIGZvciBkaXIgaW4gJFBBVEggL3Vzci91Y2I7IGRvCi0gICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKLSAgICAgIGlmICh0ZXN0IC1mICRkaXIvZWNobyB8fCB0ZXN0IC1mICRkaXIvZWNobyRhY19leGVleHQpICYmCi0gICAgICAgICB0ZXN0ICJYYCgkZGlyL2VjaG8gJ1x0JykgMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCi0gICAgICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJGRpci9lY2hvICIkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgotICAgICAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0gICAgICAgIEVDSE89IiRkaXIvZWNobyIKLSAgICAgICAgYnJlYWsKLSAgICAgIGZpCi0gICAgZG9uZQotICAgIElGUz0iJGx0X3NhdmVfaWZzIgotCi0gICAgaWYgdGVzdCAiWCRFQ0hPIiA9IFhlY2hvOyB0aGVuCi0gICAgICAjIFdlIGRpZG4ndCBmaW5kIGEgYmV0dGVyIGVjaG8sIHNvIGxvb2sgZm9yIGFsdGVybmF0aXZlcy4KLSAgICAgIGlmIHRlc3QgIlhgeyBwcmludCAtciAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JyAmJgotICAgICAgICAgZWNob190ZXN0aW5nX3N0cmluZz1geyBwcmludCAtciAiJGVjaG9fdGVzdF9zdHJpbmciOyB9IDI+L2Rldi9udWxsYCAmJgotICAgICAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0gICAgICAgICMgVGhpcyBzaGVsbCBoYXMgYSBidWlsdGluIHByaW50IC1yIHRoYXQgZG9lcyB0aGUgdHJpY2suCi0gICAgICAgIEVDSE89J3ByaW50IC1yJwotICAgICAgZWxpZiB7IHRlc3QgLWYgL2Jpbi9rc2ggfHwgdGVzdCAtZiAvYmluL2tzaCRhY19leGVleHQ7IH0gJiYKLQkgICB0ZXN0ICJYJENPTkZJR19TSEVMTCIgIT0gWC9iaW4va3NoOyB0aGVuCi0gICAgICAgICMgSWYgd2UgaGF2ZSBrc2gsIHRyeSBydW5uaW5nIGNvbmZpZ3VyZSBhZ2FpbiB3aXRoIGl0LgotICAgICAgICBPUklHSU5BTF9DT05GSUdfU0hFTEw9JHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0KLSAgICAgICAgZXhwb3J0IE9SSUdJTkFMX0NPTkZJR19TSEVMTAotICAgICAgICBDT05GSUdfU0hFTEw9L2Jpbi9rc2gKLSAgICAgICAgZXhwb3J0IENPTkZJR19TSEVMTAotICAgICAgICBleGVjICRDT05GSUdfU0hFTEwgIlskXTAiIC0tbm8tcmVleGVjICR7MSsiWyRdQCJ9Ci0gICAgICBlbHNlCi0gICAgICAgICMgVHJ5IHVzaW5nIHByaW50Zi4KLSAgICAgICAgRUNITz0ncHJpbnRmICVzXG4nCi0gICAgICAgIGlmIHRlc3QgIlhgeyAkRUNITyAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JyAmJgotCSAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YHsgJEVDSE8gIiRlY2hvX3Rlc3Rfc3RyaW5nIjsgfSAyPi9kZXYvbnVsbGAgJiYKLQkgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLQkgICMgQ29vbCwgcHJpbnRmIHdvcmtzCi0JICA6Ci0gICAgICAgIGVsaWYgZWNob190ZXN0aW5nX3N0cmluZz1gKCRPUklHSU5BTF9DT05GSUdfU0hFTEwgIlskXTAiIC0tZmFsbGJhY2stZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAgJiYKLQkgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAnWFx0JyAmJgotCSAgICAgZWNob190ZXN0aW5nX3N0cmluZz1gKCRPUklHSU5BTF9DT05GSUdfU0hFTEwgIlskXTAiIC0tZmFsbGJhY2stZWNobyAiJGVjaG9fdGVzdF9zdHJpbmciKSAyPi9kZXYvbnVsbGAgJiYKLQkgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotCSAgQ09ORklHX1NIRUxMPSRPUklHSU5BTF9DT05GSUdfU0hFTEwKLQkgIGV4cG9ydCBDT05GSUdfU0hFTEwKLQkgIFNIRUxMPSIkQ09ORklHX1NIRUxMIgotCSAgZXhwb3J0IFNIRUxMCi0JICBFQ0hPPSIkQ09ORklHX1NIRUxMIFskXTAgLS1mYWxsYmFjay1lY2hvIgotICAgICAgICBlbGlmIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkQ09ORklHX1NIRUxMICJbJF0wIiAtLWZhbGxiYWNrLWVjaG8gJ1x0JykgMj4vZGV2L251bGxgICYmCi0JICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gJ1hcdCcgJiYKLQkgICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkQ09ORklHX1NIRUxMICJbJF0wIiAtLWZhbGxiYWNrLWVjaG8gIiRlY2hvX3Rlc3Rfc3RyaW5nIikgMj4vZGV2L251bGxgICYmCi0JICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLQkgIEVDSE89IiRDT05GSUdfU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8iCi0gICAgICAgIGVsc2UKLQkgICMgbWF5YmUgd2l0aCBhIHNtYWxsZXIgc3RyaW5nLi4uCi0JICBwcmV2PToKLQotCSAgZm9yIGNtZCBpbiAnZWNobyB0ZXN0JyAnc2VkIDJxICJbJF0wIicgJ3NlZCAxMHEgIlskXTAiJyAnc2VkIDIwcSAiWyRdMCInICdzZWQgNTBxICJbJF0wIic7IGRvCi0JICAgIGlmIHsgdGVzdCAiWCRlY2hvX3Rlc3Rfc3RyaW5nIiA9ICJYYGV2YWwgJGNtZGAiOyB9IDI+L2Rldi9udWxsCi0JICAgIHRoZW4KLQkgICAgICBicmVhawotCSAgICBmaQotCSAgICBwcmV2PSIkY21kIgotCSAgZG9uZQotCi0JICBpZiB0ZXN0ICIkcHJldiIgIT0gJ3NlZCA1MHEgIlskXTAiJzsgdGhlbgotCSAgICBlY2hvX3Rlc3Rfc3RyaW5nPWBldmFsICRwcmV2YAotCSAgICBleHBvcnQgZWNob190ZXN0X3N0cmluZwotCSAgICBleGVjICR7T1JJR0lOQUxfQ09ORklHX1NIRUxMLSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9fSAiWyRdMCIgJHsxKyJbJF1AIn0KLQkgIGVsc2UKLQkgICAgIyBPb3BzLiAgV2UgbG9zdCBjb21wbGV0ZWx5LCBzbyBqdXN0IHN0aWNrIHdpdGggZWNoby4KLQkgICAgRUNITz1lY2hvCi0JICBmaQotICAgICAgICBmaQotICAgICAgZmkKLSAgICBmaQotICBmaQotZmkKLQotIyBDb3B5IGVjaG8gYW5kIHF1b3RlIHRoZSBjb3B5IHN1aXRhYmx5IGZvciBwYXNzaW5nIHRvIGxpYnRvb2wgZnJvbQotIyB0aGUgTWFrZWZpbGUsIGluc3RlYWQgb2YgcXVvdGluZyB0aGUgb3JpZ2luYWwsIHdoaWNoIGlzIHVzZWQgbGF0ZXIuCi1sdF9FQ0hPPSRFQ0hPCi1pZiB0ZXN0ICJYJGx0X0VDSE8iID0gIlgkQ09ORklHX1NIRUxMIFskXTAgLS1mYWxsYmFjay1lY2hvIjsgdGhlbgotICAgbHRfRUNITz0iJENPTkZJR19TSEVMTCBcXFwkXFskXTAgLS1mYWxsYmFjay1lY2hvIgotZmkKLQotQUNfU1VCU1QobHRfRUNITykKLV0pCiBfTFRfREVDTChbXSwgW1NIRUxMXSwgWzFdLCBbU2hlbGwgdG8gdXNlIHdoZW4gaW52b2tpbmcgc2hlbGwgc2NyaXB0c10pCi1fTFRfREVDTChbXSwgW0VDSE9dLCBbMV0sCi0gICAgW0FuIGVjaG8gcHJvZ3JhbSB0aGF0IGRvZXMgbm90IGludGVycHJldCBiYWNrc2xhc2hlc10pCitfTFRfREVDTChbXSwgW0VDSE9dLCBbMV0sIFtBbiBlY2hvIHByb2dyYW0gdGhhdCBwcm90ZWN0cyBiYWNrc2xhc2hlc10pCiBdKSMgX0xUX1BST0dfRUNIT19CQUNLU0xBU0gKIAogCisjIF9MVF9XSVRIX1NZU1JPT1QKKyMgLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW19MVF9XSVRIX1NZU1JPT1RdLAorW0FDX01TR19DSEVDS0lORyhbZm9yIHN5c3Jvb3RdKQorQUNfQVJHX1dJVEgoW3N5c3Jvb3RdLAorWyAgLS13aXRoLXN5c3Jvb3RbPURJUl0gU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLl0sCitbXSwgW3dpdGhfc3lzcm9vdD1ub10pCisKK2RubCBsdF9zeXNyb290IHdpbGwgYWx3YXlzIGJlIHBhc3NlZCB1bnF1b3RlZC4gIFdlIHF1b3RlIGl0IGhlcmUKK2RubCBpbiBjYXNlIHRoZSB1c2VyIHBhc3NlZCBhIGRpcmVjdG9yeSBuYW1lLgorbHRfc3lzcm9vdD0KK2Nhc2UgJHt3aXRoX3N5c3Jvb3R9IGluICMoCisgeWVzKQorICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKKyAgIGZpCisgICA7OyAjKAorIC8qKQorICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorICAgOzsgIygKKyBub3wnJykKKyAgIDs7ICMoCisgKikKKyAgIEFDX01TR19SRVNVTFQoWyR7d2l0aF9zeXNyb290fV0pCisgICBBQ19NU0dfRVJST1IoW1RoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC5dKQorICAgOzsKK2VzYWMKKworIEFDX01TR19SRVNVTFQoWyR7bHRfc3lzcm9vdDotbm99XSkKK19MVF9ERUNMKFtdLCBbbHRfc3lzcm9vdF0sIFswXSwgW1RoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgXWRubAorW2RlcGVuZGVudCBsaWJyYXJpZXMsIGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuXSldKQorCiAjIF9MVF9FTkFCTEVfTE9DSwogIyAtLS0tLS0tLS0tLS0tLS0KIG00X2RlZnVuKFtfTFRfRU5BQkxFX0xPQ0tdLApAQCAtMTIzNiw3ICsxMjM3LDcgQEAKICAgOzsKICotKi1pcml4NiopCiAgICMgRmluZCBvdXQgd2hpY2ggQUJJIHdlIGFyZSB1c2luZy4KLSAgZWNobyAnWyNdbGluZSBfX29saW5lX18gImNvbmZpZ3VyZSInID4gY29uZnRlc3QuJGFjX2V4dAorICBlY2hvICdbI11saW5lICckTElORU5PJyAiY29uZmlndXJlIicgPiBjb25mdGVzdC4kYWNfZXh0CiAgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCiAgICAgaWYgdGVzdCAiJGx0X2N2X3Byb2dfZ251X2xkIiA9IHllczsgdGhlbgogICAgICAgY2FzZSBgL3Vzci9iaW4vZmlsZSBjb25mdGVzdC4kYWNfb2JqZXh0YCBpbgpAQCAtMTM1NCwxNCArMTM1NSw0NyBAQAogXSkjIF9MVF9FTkFCTEVfTE9DSwogCiAKKyMgX0xUX1BST0dfQVIKKyMgLS0tLS0tLS0tLS0KK200X2RlZnVuKFtfTFRfUFJPR19BUl0sCitbQUNfQ0hFQ0tfVE9PTFMoQVIsIFthcl0sIGZhbHNlKQorOiAke0FSPWFyfQorOiAke0FSX0ZMQUdTPWNydX0KK19MVF9ERUNMKFtdLCBbQVJdLCBbMV0sIFtUaGUgYXJjaGl2ZXJdKQorX0xUX0RFQ0woW10sIFtBUl9GTEFHU10sIFsxXSwgW0ZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlXSkKKworQUNfQ0FDSEVfQ0hFQ0soW2ZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0XSwgW2x0X2N2X2FyX2F0X2ZpbGVdLAorICBbbHRfY3ZfYXJfYXRfZmlsZT1ubworICAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTV0sCisgICAgIFtlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiZBU19NRVNTQUdFX0xPR19GRCcKKyAgICAgIEFDX1RSWV9FVkFMKFtsdF9hcl90cnldKQorICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgorCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorCUFDX1RSWV9FVkFMKFtsdF9hcl90cnldKQorCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCisgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisgICAgICAgIGZpCisgICAgICBmaQorICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisgICAgIF0pCisgIF0pCisKK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQorZWxzZQorICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKK2ZpCitfTFRfREVDTChbXSwgW2FyY2hpdmVyX2xpc3Rfc3BlY10sIFsxXSwKKyAgW0hvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlcl0pCitdKSMgX0xUX1BST0dfQVIKKworCiAjIF9MVF9DTURfT0xEX0FSQ0hJVkUKICMgLS0tLS0tLS0tLS0tLS0tLS0tLQogbTRfZGVmdW4oW19MVF9DTURfT0xEX0FSQ0hJVkVdLAotW0FDX0NIRUNLX1RPT0woQVIsIGFyLCBmYWxzZSkKLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci1fTFRfREVDTChbXSwgW0FSXSwgWzFdLCBbVGhlIGFyY2hpdmVyXSkKLV9MVF9ERUNMKFtdLCBbQVJfRkxBR1NdLCBbMV0pCitbX0xUX1BST0dfQVIKIAogQUNfQ0hFQ0tfVE9PTChTVFJJUCwgc3RyaXAsIDopCiB0ZXN0IC16ICIkU1RSSVAiICYmIFNUUklQPToKQEAgLTEzODgsMTAgKzE0MjIsMTkgQEAKICAgZXNhYwogICBvbGRfYXJjaGl2ZV9jbWRzPSIkb2xkX2FyY2hpdmVfY21kc35cJFJBTkxJQiBcJG9sZGxpYiIKIGZpCisKK2Nhc2UgJGhvc3Rfb3MgaW4KKyAgZGFyd2luKikKKyAgICBsb2NrX29sZF9hcmNoaXZlX2V4dHJhY3Rpb249eWVzIDs7CisgICopCisgICAgbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uPW5vIDs7Citlc2FjCiBfTFRfREVDTChbXSwgW29sZF9wb3N0aW5zdGFsbF9jbWRzXSwgWzJdKQogX0xUX0RFQ0woW10sIFtvbGRfcG9zdHVuaW5zdGFsbF9jbWRzXSwgWzJdKQogX0xUX1RBR0RFQ0woW10sIFtvbGRfYXJjaGl2ZV9jbWRzXSwgWzJdLAogICAgIFtDb21tYW5kcyB1c2VkIHRvIGJ1aWxkIGFuIG9sZC1zdHlsZSBhcmNoaXZlXSkKK19MVF9ERUNMKFtdLCBbbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uXSwgWzBdLAorICAgIFtXaGV0aGVyIHRvIHVzZSBhIGxvY2sgZm9yIG9sZCBhcmNoaXZlIGV4dHJhY3Rpb25dKQogXSkjIF9MVF9DTURfT0xEX0FSQ0hJVkUKIAogCkBAIC0xNDE2LDE1ICsxNDU5LDE1IEBACiAgICAtZSAnczouKkZMQUdTfVx7MCwxXH0gOiYkbHRfY29tcGlsZXJfZmxhZyA6OyB0JyBcCiAgICAtZSAnczogW1teIF1dKmNvbmZ0ZXN0XC46ICRsdF9jb21waWxlcl9mbGFnJjo7IHQnIFwKICAgIC1lICdzOiQ6ICRsdF9jb21waWxlcl9mbGFnOidgCi0gICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6X19vbGluZV9fOiAkbHRfY29tcGlsZVwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQorICAgKGV2YWwgZWNobyAiXCJcJGFzX21lOiRMSU5FTk86ICRsdF9jb21waWxlXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCiAgICAoZXZhbCAiJGx0X2NvbXBpbGUiIDI+Y29uZnRlc3QuZXJyKQogICAgYWNfc3RhdHVzPSQ/CiAgICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKLSAgIGVjaG8gIiRhc19tZTpfX29saW5lX186IFwkPyA9ICRhY19zdGF0dXMiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JkFTX01FU1NBR0VfTE9HX0ZECiAgICBpZiAoZXhpdCAkYWNfc3RhdHVzKSAmJiB0ZXN0IC1zICIkYWNfb3V0ZmlsZSI7IHRoZW4KICAgICAgIyBUaGUgY29tcGlsZXIgY2FuIG9ubHkgd2FybiBhbmQgaWdub3JlIHRoZSBvcHRpb24gaWYgbm90IHJlY29nbml6ZWQKICAgICAgIyBTbyBzYXkgbm8gaWYgdGhlcmUgYXJlIHdhcm5pbmdzIG90aGVyIHRoYW4gdGhlIHVzdWFsIG91dHB1dC4KLSAgICAgJEVDSE8gIlgkX2x0X2NvbXBpbGVyX2JvaWxlcnBsYXRlIiB8ICRYc2VkIC1lICcvXiQvZCcgPmNvbmZ0ZXN0LmV4cAorICAgICAkRUNITyAiJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkU0VEICcvXiQvZCcgPmNvbmZ0ZXN0LmV4cAogICAgICAkU0VEICcvXiQvZDsgL14gKisvZCcgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjIKICAgICAgaWYgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVyMiB8fCBkaWZmIGNvbmZ0ZXN0LmV4cCBjb25mdGVzdC5lcjIgPi9kZXYvbnVsbDsgdGhlbgogICAgICAgICQyPXllcwpAQCAtMTQ2NCw3ICsxNTA3LDcgQEAKICAgICAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KICAgICAgICAjIEFwcGVuZCBhbnkgZXJyb3JzIHRvIHRoZSBjb25maWcubG9nLgogICAgICAgIGNhdCBjb25mdGVzdC5lcnIgMT4mQVNfTUVTU0FHRV9MT0dfRkQKLSAgICAgICAkRUNITyAiWCRfbHRfbGlua2VyX2JvaWxlcnBsYXRlIiB8ICRYc2VkIC1lICcvXiQvZCcgPiBjb25mdGVzdC5leHAKKyAgICAgICAkRUNITyAiJF9sdF9saW5rZXJfYm9pbGVycGxhdGUiIHwgJFNFRCAnL14kL2QnID4gY29uZnRlc3QuZXhwCiAgICAgICAgJFNFRCAnL14kL2Q7IC9eICorL2QnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIyCiAgICAgICAgaWYgZGlmZiBjb25mdGVzdC5leHAgY29uZnRlc3QuZXIyID4vZGV2L251bGw7IHRoZW4KICAgICAgICAgICQyPXllcwpAQCAtMTUyNyw2ICsxNTcwLDExIEBACiAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTgxOTI7CiAgICAgOzsKIAorICBtaW50KikKKyAgICAjIE9uIE1pTlQgdGhpcyBjYW4gdGFrZSBhIGxvbmcgdGltZSBhbmQgcnVuIG91dCBvZiBtZW1vcnkuCisgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTgxOTI7CisgICAgOzsKKwogICBhbWlnYW9zKikKICAgICAjIE9uIEFtaWdhT1Mgd2l0aCBwZGtzaCwgdGhpcyB0ZXN0IHRha2VzIGhvdXJzLCBsaXRlcmFsbHkuCiAgICAgIyBTbyB3ZSBqdXN0IHB1bnQgYW5kIHVzZSBhIG1pbmltdW0gbGluZSBsZW5ndGggb2YgODE5Mi4KQEAgLTE1OTEsOCArMTYzOSw4IEBACiAgICAgICAjIElmIHRlc3QgaXMgbm90IGEgc2hlbGwgYnVpbHQtaW4sIHdlJ2xsIHByb2JhYmx5IGVuZCB1cCBjb21wdXRpbmcgYQogICAgICAgIyBtYXhpbXVtIGxlbmd0aCB0aGF0IGlzIG9ubHkgaGFsZiBvZiB0aGUgYWN0dWFsIG1heGltdW0gbGVuZ3RoLCBidXQKICAgICAgICMgd2UgY2FuJ3QgdGVsbC4KLSAgICAgIHdoaWxlIHsgdGVzdCAiWCJgJFNIRUxMIFskXTAgLS1mYWxsYmFjay1lY2hvICJYJHRlc3RzdHJpbmckdGVzdHN0cmluZyIgMj4vZGV2L251bGxgIFwKLQkgICAgICAgICA9ICJYWCR0ZXN0c3RyaW5nJHRlc3RzdHJpbmciOyB9ID4vZGV2L251bGwgMj4mMSAmJgorICAgICAgd2hpbGUgeyB0ZXN0ICJYImBmdW5jX2ZhbGxiYWNrX2VjaG8gIiR0ZXN0c3RyaW5nJHRlc3RzdHJpbmciIDI+L2Rldi9udWxsYCBcCisJICAgICAgICAgPSAiWCR0ZXN0c3RyaW5nJHRlc3RzdHJpbmciOyB9ID4vZGV2L251bGwgMj4mMSAmJgogCSAgICAgIHRlc3QgJGkgIT0gMTcgIyAxLzIgTUIgc2hvdWxkIGJlIGVub3VnaAogICAgICAgZG8KICAgICAgICAgaT1gZXhwciAkaSArIDFgCkBAIC0xNjQzLDcgKzE2OTEsNyBAQAogICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCiAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi1bI2xpbmUgX19vbGluZV9fICJjb25maWd1cmUiCitbI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpZiBIQVZFX0RMRkNOX0gKQEAgLTE2ODQsNyArMTczMiwxMyBAQAogIyAgZW5kaWYKICNlbmRpZgogCi12b2lkIGZub3JkKCkgeyBpbnQgaT00Mjt9CisvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyNlbmRpZgorCitpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KIGludCBtYWluICgpCiB7CiAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwpAQCAtMTY5Myw3ICsxNzQ3LDExIEBACiAgIGlmIChzZWxmKQogICAgIHsKICAgICAgIGlmIChkbHN5bSAoc2VsZiwiZm5vcmQiKSkgICAgICAgc3RhdHVzID0gJGx0X2Rsbm9fdXNjb3JlOwotICAgICAgZWxzZSBpZiAoZGxzeW0oIHNlbGYsIl9mbm9yZCIpKSBzdGF0dXMgPSAkbHRfZGxuZWVkX3VzY29yZTsKKyAgICAgIGVsc2UKKyAgICAgICAgeworCSAgaWYgKGRsc3ltKCBzZWxmLCJfZm5vcmQiKSkgIHN0YXR1cyA9ICRsdF9kbG5lZWRfdXNjb3JlOworICAgICAgICAgIGVsc2UgcHV0cyAoZGxlcnJvciAoKSk7CisJfQogICAgICAgLyogZGxjbG9zZSAoc2VsZik7ICovCiAgICAgfQogICBlbHNlCkBAIC0xODY5LDE2ICsxOTI3LDE2IEBACiAgICAtZSAnczouKkZMQUdTfVx7MCwxXH0gOiYkbHRfY29tcGlsZXJfZmxhZyA6OyB0JyBcCiAgICAtZSAnczogW1teIF1dKmNvbmZ0ZXN0XC46ICRsdF9jb21waWxlcl9mbGFnJjo7IHQnIFwKICAgIC1lICdzOiQ6ICRsdF9jb21waWxlcl9mbGFnOidgCi0gICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6X19vbGluZV9fOiAkbHRfY29tcGlsZVwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQorICAgKGV2YWwgZWNobyAiXCJcJGFzX21lOiRMSU5FTk86ICRsdF9jb21waWxlXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCiAgICAoZXZhbCAiJGx0X2NvbXBpbGUiIDI+b3V0L2NvbmZ0ZXN0LmVycikKICAgIGFjX3N0YXR1cz0kPwogICAgY2F0IG91dC9jb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAotICAgZWNobyAiJGFzX21lOl9fb2xpbmVfXzogXCQ/ID0gJGFjX3N0YXR1cyIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mQVNfTUVTU0FHRV9MT0dfRkQKICAgIGlmIChleGl0ICRhY19zdGF0dXMpICYmIHRlc3QgLXMgb3V0L2NvbmZ0ZXN0Mi4kYWNfb2JqZXh0CiAgICB0aGVuCiAgICAgICMgVGhlIGNvbXBpbGVyIGNhbiBvbmx5IHdhcm4gYW5kIGlnbm9yZSB0aGUgb3B0aW9uIGlmIG5vdCByZWNvZ25pemVkCiAgICAgICMgU28gc2F5IG5vIGlmIHRoZXJlIGFyZSB3YXJuaW5ncwotICAgICAkRUNITyAiWCRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFhzZWQgLWUgJy9eJC9kJyA+IG91dC9jb25mdGVzdC5leHAKKyAgICAgJEVDSE8gIiRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFNFRCAnL14kL2QnID4gb3V0L2NvbmZ0ZXN0LmV4cAogICAgICAkU0VEICcvXiQvZDsgL14gKisvZCcgb3V0L2NvbmZ0ZXN0LmVyciA+b3V0L2NvbmZ0ZXN0LmVyMgogICAgICBpZiB0ZXN0ICEgLXMgb3V0L2NvbmZ0ZXN0LmVyMiB8fCBkaWZmIG91dC9jb25mdGVzdC5leHAgb3V0L2NvbmZ0ZXN0LmVyMiA+L2Rldi9udWxsOyB0aGVuCiAgICAgICAgX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbywgJDEpPXllcwpAQCAtMjAzNyw2ICsyMDk1LDcgQEAKIG00X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAogbTRfcmVxdWlyZShbX0xUX0RFQ0xfT0JKRFVNUF0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAorbTRfcmVxdWlyZShbX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTXSlkbmwKIEFDX01TR19DSEVDS0lORyhbZHluYW1pYyBsaW5rZXIgY2hhcmFjdGVyaXN0aWNzXSkKIG00X2lmKFskMV0sCiAJW10sIFsKQEAgLTIwNDUsMTYgKzIxMDQsMjMgQEAKICAgICBkYXJ3aW4qKSBsdF9hd2tfYXJnPSIvXmxpYnJhcmllczovLC9MUi8iIDs7CiAgICAgKikgbHRfYXdrX2FyZz0iL15saWJyYXJpZXM6LyIgOzsKICAgZXNhYwotICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkQ0MgLXByaW50LXNlYXJjaC1kaXJzIHwgYXdrICRsdF9hd2tfYXJnIHwgJFNFRCAtZSAicy9ebGlicmFyaWVzOi8vIiAtZSAicyw9LywvLGciYAotICBpZiAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJzsnID4vZGV2L251bGwgOyB0aGVuCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICBtaW5ndyogfCBjZWdjYyopIGx0X3NlZF9zdHJpcF9lcT0icyw9XChbW0EtWmEtel1dOlwpLFwxLGciIDs7CisgICAgKikgbHRfc2VkX3N0cmlwX2VxPSJzLD0vLC8sZyIgOzsKKyAgZXNhYworICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkQ0MgLXByaW50LXNlYXJjaC1kaXJzIHwgYXdrICRsdF9hd2tfYXJnIHwgJFNFRCAtZSAicy9ebGlicmFyaWVzOi8vIiAtZSAkbHRfc2VkX3N0cmlwX2VxYAorICBjYXNlICRsdF9zZWFyY2hfcGF0aF9zcGVjIGluCisgICpcOyopCiAgICAgIyBpZiB0aGUgcGF0aCBjb250YWlucyAiOyIgdGhlbiB3ZSBhc3N1bWUgaXQgdG8gYmUgdGhlIHNlcGFyYXRvcgogICAgICMgb3RoZXJ3aXNlIGRlZmF1bHQgdG8gdGhlIHN0YW5kYXJkIHBhdGggc2VwYXJhdG9yIChpLmUuICI6IikgLSBpdCBpcwogICAgICMgYXNzdW1lZCB0aGF0IG5vIHBhcnQgb2YgYSBub3JtYWwgcGF0aG5hbWUgY29udGFpbnMgIjsiIGJ1dCB0aGF0IHNob3VsZAogICAgICMgb2theSBpbiB0aGUgcmVhbCB3b3JsZCB3aGVyZSAiOyIgaW4gZGlycGF0aHMgaXMgaXRzZWxmIHByb2JsZW1hdGljLgotICAgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSAgZWxzZQotICAgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSAgZmkKKyAgICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAncy87LyAvZydgCisgICAgOzsKKyAgKikKKyAgICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKyAgICA7OworICBlc2FjCiAgICMgT2ssIG5vdyB3ZSBoYXZlIHRoZSBwYXRoLCBzZXBhcmF0ZWQgYnkgc3BhY2VzLCB3ZSBjYW4gc3RlcCB0aHJvdWdoIGl0CiAgICMgYW5kIGFkZCBtdWx0aWxpYiBkaXIgaWYgbmVjZXNzYXJ5LgogICBsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYz0KQEAgLTIwNjcsNyArMjEzMyw3IEBACiAJbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWM9IiRsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYyAkbHRfc3lzX3BhdGgiCiAgICAgZmkKICAgZG9uZQotICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAkbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWMgfCBhd2sgJworICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjIiB8IGF3ayAnCiBCRUdJTiB7UlM9IiAiOyBGUz0iL3xcbiI7fSB7CiAgIGx0X2Zvbz0iIjsKICAgbHRfY291bnQ9MDsKQEAgLTIwODcsNyArMjE1MywxMyBAQAogICBpZiAobHRfZm9vICE9ICIiKSB7IGx0X2ZyZXFbW2x0X2Zvb11dKys7IH0KICAgaWYgKGx0X2ZyZXFbW2x0X2Zvb11dID09IDEpIHsgcHJpbnQgbHRfZm9vOyB9CiB9J2AKLSAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAkbHRfc2VhcmNoX3BhdGhfc3BlY2AKKyAgIyBBV0sgcHJvZ3JhbSBhYm92ZSBlcnJvbmVvdXNseSBwcmVwZW5kcyAnLycgdG8gQzovZG9zL3BhdGhzCisgICMgZm9yIHRoZXNlIGhvc3RzLgorICBjYXNlICRob3N0X29zIGluCisgICAgbWluZ3cqIHwgY2VnY2MqKSBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHxcCisgICAgICAkU0VEICdzLC9cKFtbQS1aYS16XV06XCksXDEsZydgIDs7CisgIGVzYWMKKyAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJGx0X05MMlNQYAogZWxzZQogICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii9saWIgL3Vzci9saWIgL3Vzci9sb2NhbC9saWIiCiBmaV0pCkBAIC0yMTc1LDcgKzIyNDcsNyBAQAogICBtNjhrKQogICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuaXhsaWJyYXJ5ICRsaWJuYW1lLmEnCiAgICAgIyBDcmVhdGUgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSBlbnRyaWVzIGluIC9zeXMvbGlicy4KLSAgICBmaW5pc2hfZXZhbD0nZm9yIGxpYiBpbiBgbHMgJGxpYmRpci8qLml4bGlicmFyeSAyPi9kZXYvbnVsbGA7IGRvIGxpYm5hbWU9YCRFQ0hPICJYJGxpYiIgfCAkWHNlZCAtZSAnXCcncyVeLiovXChbW14vXV0qXClcLml4bGlicmFyeSQlXDElJ1wnJ2A7IHRlc3QgJFJNIC9zeXMvbGlicy8ke2xpYm5hbWV9X2l4bGlicmFyeS5hOyAkc2hvdyAiY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSI7IGNkIC9zeXMvbGlicyAmJiAkTE5fUyAkbGliICR7bGlibmFtZX1faXhsaWJyYXJ5LmEgfHwgZXhpdCAxOyBkb25lJworICAgIGZpbmlzaF9ldmFsPSdmb3IgbGliIGluIGBscyAkbGliZGlyLyouaXhsaWJyYXJ5IDI+L2Rldi9udWxsYDsgZG8gbGlibmFtZT1gZnVuY19lY2hvX2FsbCAiJGxpYiIgfCAkU0VEICdcJydzJV4uKi9cKFtbXi9dXSpcKVwuaXhsaWJyYXJ5JCVcMSUnXCcnYDsgdGVzdCAkUk0gL3N5cy9saWJzLyR7bGlibmFtZX1faXhsaWJyYXJ5LmE7ICRzaG93ICJjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIjsgY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSB8fCBleGl0IDE7IGRvbmUnCiAgICAgOzsKICAgZXNhYwogICA7OwpAQCAtMjIwNiw4ICsyMjc4LDkgQEAKICAgbmVlZF92ZXJzaW9uPW5vCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogCi0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgotICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCisgIHllcywqKQorICAgICMgZ2NjCiAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCiAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CkBAIC0yMjI4LDM2ICsyMzAxLDgzIEBACiAgICAgY3lnd2luKikKICAgICAgICMgQ3lnd2luIERMTHMgdXNlICdjeWcnIHByZWZpeCByYXRoZXIgdGhhbiAnbGliJwogICAgICAgc29uYW1lX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9jeWcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliIC9saWIvdzMyYXBpIC9saWIgL3Vzci9sb2NhbC9saWIiCittNF9pZihbJDFdLCBbXSxbCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgL3Vzci9saWIvdzMyYXBpIl0pCiAgICAgICA7OwogICAgIG1pbmd3KiB8IGNlZ2NjKikKICAgICAgICMgTWluR1cgRExMcyB1c2UgdHJhZGl0aW9uYWwgJ2xpYicgcHJlZml4CiAgICAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJENDIC1wcmludC1zZWFyY2gtZGlycyB8ICRHUkVQICJebGlicmFyaWVzOiIgfCAkU0VEIC1lICJzL15saWJyYXJpZXM6Ly8iIC1lICJzLD0vLC8sZyJgCi0gICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBbJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsXTsgdGhlbgotICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRIIHByaW50ZWQgYnkKLSAgICAgICAgIyBtaW5ndyBnY2MsIGJ1dCB3ZSBhcmUgcnVubmluZyBvbiBDeWd3aW4uIEdjYyBwcmludHMgaXRzIHNlYXJjaAotICAgICAgICAjIHBhdGggd2l0aCA7IHNlcGFyYXRvcnMsIGFuZCB3aXRoIGRyaXZlIGxldHRlcnMuIFdlIGNhbiBoYW5kbGUgdGhlCi0gICAgICAgICMgZHJpdmUgbGV0dGVycyAoY3lnd2luIGZpbGV1dGlscyB1bmRlcnN0YW5kcyB0aGVtKSwgc28gbGVhdmUgdGhlbSwKLSAgICAgICAgIyBlc3BlY2lhbGx5IGFzIHdlIG1pZ2h0IHBhc3MgZmlsZXMgZm91bmQgdGhlcmUgdG8gYSBtaW5ndyBvYmpkdW1wLAotICAgICAgICAjIHdoaWNoIHdvdWxkbid0IHVuZGVyc3RhbmQgYSBjeWd3aW5pZmllZCBwYXRoLiBBaGguCi0gICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0gICAgICBlbHNlCi0gICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0gICAgICBmaQogICAgICAgOzsKICAgICBwdzMyKikKICAgICAgICMgcHczMiBETExzIHVzZSAncHcnIHByZWZpeCByYXRoZXIgdGhhbiAnbGliJwogICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCiAgICAgICA7OwogICAgIGVzYWMKKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgIDs7CisKKyAgKixjbCopCisgICAgIyBOYXRpdmUgTVNWQworICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCisgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisKKyAgICBjYXNlICRidWlsZF9vcyBpbgorICAgIG1pbmd3KikKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKKyAgICAgIElGUz0nOycKKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKKyAgICAgIGRvCisgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCisgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKKyAgICAgIGRvbmUKKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbW2EtekEtWl1dXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKKyAgICAgIDs7CisgICAgY3lnd2luKikKKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorICAgICAgOzsKKyAgICAqKQorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgorICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgWyRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbF07IHRoZW4KKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKKyAgICAgIGVsc2UKKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorICAgICAgZmkKKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQorICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQorICAgICAgOzsKKyAgICBlc2FjCisKKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgorICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CisgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCisgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisgICAgICAgJFJNIFwkZGxwYXRoJworICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCiAgICAgOzsKIAogICAqKQorICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgogICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKICAgICA7OwogICBlc2FjCi0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCiAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgogICBzaGxpYnBhdGhfdmFyPVBBVEgKICAgOzsKQEAgLTIzNDQsNiArMjQ2NCwxOSBAQAogICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAgIDs7CiAKK2hhaWt1KikKKyAgdmVyc2lvbl90eXBlPWxpbnV4CisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgZHluYW1pY19saW5rZXI9IiRob3N0X29zIHJ1bnRpbWVfbG9hZGVyIgorICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHttYWpvcn0gJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0nCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCisgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgOzsKKwogaHB1eDkqIHwgaHB1eDEwKiB8IGhwdXgxMSopCiAgICMgR2l2ZSBhIHNvbmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBtYWpvciB2ZXJzaW9uIHNvIHRoYXQgZGxkLnNsIHJlZnVzZXMgdG8KICAgIyBsaW5rIGFnYWluc3Qgb3RoZXIgdmVyc2lvbnMuCkBAIC0yMzg2LDggKzI1MTksMTAgQEAKICAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwogICAgIDs7CiAgIGVzYWMKLSAgIyBIUC1VWCBydW5zICpyZWFsbHkqIHNsb3dseSB1bmxlc3Mgc2hhcmVkIGxpYnJhcmllcyBhcmUgbW9kZSA1NTUuCisgICMgSFAtVVggcnVucyAqcmVhbGx5KiBzbG93bHkgdW5sZXNzIHNoYXJlZCBsaWJyYXJpZXMgYXJlIG1vZGUgNTU1LCAuLi4KICAgcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNTU1ICRsaWInCisgICMgb3IgZmFpbHMgb3V0cmlnaHQsIHNvIG92ZXJyaWRlIGF0b21pY2FsbHk6CisgIGluc3RhbGxfb3ZlcnJpZGVfbW9kZT01NTUKICAgOzsKIAogaW50ZXJpeFtbMy05XV0qKQpAQCAtMjQ0NSw3ICsyNTgwLDcgQEAKICAgOzsKIAogIyBUaGlzIG11c3QgYmUgTGludXggRUxGLgotbGludXgqIHwgaypic2QqLWdudSkKK2xpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKICAgdmVyc2lvbl90eXBlPWxpbnV4CiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KQEAgLTI0NTQsMTYgKzI1ODksMjEgQEAKICAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgLW4gJGxpYmRpcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisKICAgIyBTb21lIGJpbnV0aWxzIGxkIGFyZSBwYXRjaGVkIHRvIHNldCBEVF9SVU5QQVRICi0gIHNhdmVfTERGTEFHUz0kTERGTEFHUwotICBzYXZlX2xpYmRpcj0kbGliZGlyCi0gIGV2YWwgImxpYmRpcj0vZm9vOyB3bD1cIiRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKVwiOyBcCi0gICAgICAgTERGTEFHUz1cIlwkTERGTEFHUyAkX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSlcIiIKLSAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbXSxbXSldLAotICAgIFtBU19JRihbICgkT0JKRFVNUCAtcCBjb25mdGVzdCRhY19leGVleHQpIDI+L2Rldi9udWxsIHwgZ3JlcCAiUlVOUEFUSC4qJGxpYmRpciIgPi9kZXYvbnVsbF0sCi0gICAgICAgW3NobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXNdKV0pCi0gIExERkxBR1M9JHNhdmVfTERGTEFHUwotICBsaWJkaXI9JHNhdmVfbGliZGlyCisgIEFDX0NBQ0hFX1ZBTChbbHRfY3Zfc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoXSwKKyAgICBbbHRfY3Zfc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisgICAgc2F2ZV9MREZMQUdTPSRMREZMQUdTCisgICAgc2F2ZV9saWJkaXI9JGxpYmRpcgorICAgIGV2YWwgImxpYmRpcj0vZm9vOyB3bD1cIiRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKVwiOyBcCisJIExERkxBR1M9XCJcJExERkxBR1MgJF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpXCIiCisgICAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbXSxbXSldLAorICAgICAgW0FTX0lGKFsgKCRPQkpEVU1QIC1wIGNvbmZ0ZXN0JGFjX2V4ZWV4dCkgMj4vZGV2L251bGwgfCBncmVwICJSVU5QQVRILiokbGliZGlyIiA+L2Rldi9udWxsXSwKKwkgW2x0X2N2X3NobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXNdKV0pCisgICAgTERGTEFHUz0kc2F2ZV9MREZMQUdTCisgICAgbGliZGlyPSRzYXZlX2xpYmRpcgorICAgIF0pCisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD0kbHRfY3Zfc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoCiAKICAgIyBUaGlzIGltcGxpZXMgbm8gZmFzdF9pbnN0YWxsLCB3aGljaCBpcyB1bmFjY2VwdGFibGUuCiAgICMgU29tZSByZXdvcmsgd2lsbCBiZSBuZWVkZWQgdG8gYWxsb3cgZm9yIGZhc3RfaW5zdGFsbApAQCAtMjQ3Miw3ICsyNjEyLDcgQEAKIAogICAjIEFwcGVuZCBsZC5zby5jb25mIGNvbnRlbnRzIHRvIHRoZSBzZWFyY2ggcGF0aAogICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgotICAgIGx0X2xkX2V4dHJhPWBhd2sgJy9eaW5jbHVkZSAvIHsgc3lzdGVtKHNwcmludGYoImNkIC9ldGM7IGNhdCAlcyAyPi9kZXYvbnVsbCIsIFxbJF0yKSk7IHNraXAgPSAxOyB9IHsgaWYgKCFza2lwKSBwcmludCBcWyRdMDsgc2tpcCA9IDA7IH0nIDwgL2V0Yy9sZC5zby5jb25mIHwgJFNFRCAtZSAncy8jLiovLzsvXlsJIF0qaHdjYXBbCSBdL2Q7cy9bOiwJXS8gL2c7cy89W149XSokLy87cy89W149IF0qIC8gL2c7L14kL2QnIHwgdHIgJ1xuJyAnICdgCisgICAgbHRfbGRfZXh0cmE9YGF3ayAnL15pbmNsdWRlIC8geyBzeXN0ZW0oc3ByaW50ZigiY2QgL2V0YzsgY2F0ICVzIDI+L2Rldi9udWxsIiwgXFskXTIpKTsgc2tpcCA9IDE7IH0geyBpZiAoIXNraXApIHByaW50IFxbJF0wOyBza2lwID0gMDsgfScgPCAvZXRjL2xkLnNvLmNvbmYgfCAkU0VEIC1lICdzLyMuKi8vOy9eWwkgXSpod2NhcFsJIF0vZDtzL1s6LAldLyAvZztzLz1bXj1dKiQvLztzLz1bXj0gXSogLyAvZztzLyIvL2c7L14kL2QnIHwgdHIgJ1xuJyAnICdgCiAgICAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii9saWIgL3Vzci9saWIgJGx0X2xkX2V4dHJhIgogICBmaQogCkBAIC0yNzA1LDYgKzI4NDUsOCBAQAogICAgIFRoZSBsYXN0IG5hbWUgaXMgdGhlIG9uZSB0aGF0IHRoZSBsaW5rZXIgZmluZHMgd2l0aCAtbE5BTUVdXSkKIF9MVF9ERUNMKFtdLCBbc29uYW1lX3NwZWNdLCBbMV0sCiAgICAgW1tUaGUgY29kZWQgbmFtZSBvZiB0aGUgbGlicmFyeSwgaWYgZGlmZmVyZW50IGZyb20gdGhlIHJlYWwgbmFtZV1dKQorX0xUX0RFQ0woW10sIFtpbnN0YWxsX292ZXJyaWRlX21vZGVdLCBbMV0sCisgICAgW1Blcm1pc3Npb24gbW9kZSBvdmVycmlkZSBmb3IgaW5zdGFsbGF0aW9uIG9mIHNoYXJlZCBsaWJyYXJpZXNdKQogX0xUX0RFQ0woW10sIFtwb3N0aW5zdGFsbF9jbWRzXSwgWzJdLAogICAgIFtDb21tYW5kIHRvIHVzZSBhZnRlciBpbnN0YWxsYXRpb24gb2YgYSBzaGFyZWQgYXJjaGl2ZV0pCiBfTFRfREVDTChbXSwgW3Bvc3R1bmluc3RhbGxfY21kc10sIFsyXSwKQEAgLTI4MTcsNiArMjk1OSw3IEBACiBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfQlVJTERdKWRubAogbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKIG00X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSlkbmwKK200X3JlcXVpcmUoW19MVF9QUk9HX0VDSE9fQkFDS1NMQVNIXSlkbmwKIAogQUNfQVJHX1dJVEgoW2dudS1sZF0sCiAgICAgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtZ251LWxkXSwKQEAgLTI5MzgsNiArMzA4MSwxMSBAQAogZXNhYwogcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwogY2FzZSAkaG9zdF9vcyBpbgorICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisgICAgICByZWxvYWRfY21kcz1mYWxzZQorICAgIGZpCisgICAgOzsKICAgZGFyd2luKikKICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwpAQCAtMjk0Niw4ICszMDk0LDggQEAKICAgICBmaQogICAgIDs7CiBlc2FjCi1fTFRfREVDTChbXSwgW3JlbG9hZF9mbGFnXSwgWzFdLCBbSG93IHRvIGNyZWF0ZSByZWxvYWRhYmxlIG9iamVjdCBmaWxlc10pZG5sCi1fTFRfREVDTChbXSwgW3JlbG9hZF9jbWRzXSwgWzJdKWRubAorX0xUX1RBR0RFQ0woW10sIFtyZWxvYWRfZmxhZ10sIFsxXSwgW0hvdyB0byBjcmVhdGUgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXNdKWRubAorX0xUX1RBR0RFQ0woW10sIFtyZWxvYWRfY21kc10sIFsyXSlkbmwKIF0pIyBfTFRfQ01EX1JFTE9BRAogCiAKQEAgLTI5OTksMTYgKzMxNDcsMTggQEAKICAgIyBCYXNlIE1TWVMvTWluR1cgZG8gbm90IHByb3ZpZGUgdGhlICdmaWxlJyBjb21tYW5kIG5lZWRlZCBieQogICAjIGZ1bmNfd2luMzJfbGliaWQgc2hlbGwgZnVuY3Rpb24sIHNvIHVzZSBhIHdlYWtlciB0ZXN0IGJhc2VkIG9uICdvYmpkdW1wJywKICAgIyB1bmxlc3Mgd2UgZmluZCAnZmlsZScsIGZvciBleGFtcGxlIGJlY2F1c2Ugd2UgYXJlIGNyb3NzLWNvbXBpbGluZy4KLSAgaWYgKCBmaWxlIC8gKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgIyBmdW5jX3dpbjMyX2xpYmlkIGFzc3VtZXMgQlNEIG5tLCBzbyBkaXNhbGxvdyBpdCBpZiB1c2luZyBNUyBkdW1wYmluLgorICBpZiAoIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIkJTRCBubSIgJiYgZmlsZSAvICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKICAgZWxzZQotICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JworICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCiAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwogICBmaQogICA7OwogCi1jZWdjYykKK2NlZ2NjKikKICAgIyB1c2UgdGhlIHdlYWtlciB0ZXN0IGJhc2VkIG9uICdvYmpkdW1wJy4gU2VlIG1pbmd3Ki4KICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGUtYXJtLS4qbGl0dGxlKC4qYXJjaGl0ZWN0dXJlOiBhcm0pPycKICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwpAQCAtMzAzOCw2ICszMTg4LDEwIEBACiAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCiAgIDs7CiAKK2hhaWt1KikKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKyAgOzsKKwogaHB1eDEwLjIwKiB8IGhwdXgxMSopCiAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPS91c3IvYmluL2ZpbGUKICAgY2FzZSAkaG9zdF9jcHUgaW4KQEAgLTMwNDYsMTEgKzMyMDAsMTEgQEAKICAgICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0vdXNyL2xpYi9ocHV4MzIvbGliYy5zbwogICAgIDs7CiAgIGhwcGEqNjQqKQotICAgIFtsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyAoc1swLTldWzAtOV1bMC05XXxFTEYtWzAtOV1bMC05XSkgc2hhcmVkIG9iamVjdCBmaWxlIC0gUEEtUklTQyBbMC05XS5bMC05XSddCisgICAgW2x0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIChzWzAtOV1bMC05XVswLTldfEVMRlsgLV1bMC05XVswLTldKSgtYml0KT8oIFtMTV1TQik/IHNoYXJlZCBvYmplY3QoIGZpbGUpP1ssIC1dKiBQQS1SSVNDIFswLTldXC5bMC05XSddCiAgICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L3Vzci9saWIvcGEyMF82NC9saWJjLnNsCiAgICAgOzsKICAgKikKLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyAoc1tbMC05XV1bWzAtOV1dW1swLTldXXxQQS1SSVNDW1swLTldXS5bWzAtOV1dKSBzaGFyZWQgbGlicmFyeScKKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyAoc1tbMC05XV1bWzAtOV1dW1swLTldXXxQQS1SSVNDW1swLTldXVwuW1swLTldXSkgc2hhcmVkIGxpYnJhcnknCiAgICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L3Vzci9saWIvbGliYy5zbAogICAgIDs7CiAgIGVzYWMKQEAgLTMwNzIsNyArMzIyNiw3IEBACiAgIDs7CiAKICMgVGhpcyBtdXN0IGJlIExpbnV4IEVMRi4KLWxpbnV4KiB8IGsqYnNkKi1nbnUpCitsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCiAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCiAgIDs7CiAKQEAgLTMxNTAsNiArMzMwNCwyMSBAQAogICA7OwogZXNhYwogXSkKKworZmlsZV9tYWdpY19nbG9iPQord2FudF9ub2Nhc2VnbG9iPW5vCitpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgorICBjYXNlICRob3N0X29zIGluCisgIG1pbmd3KiB8IHB3MzIqKQorICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKKyAgICBlbHNlCisgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tbXDFdXVwvW1tcMV1dXC9nOy9nImAKKyAgICBmaQorICAgIDs7CisgIGVzYWMKK2ZpCisKIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAogZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCiB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KQEAgLTMxNTcsNyArMzMyNiwxMSBAQAogX0xUX0RFQ0woW10sIFtkZXBsaWJzX2NoZWNrX21ldGhvZF0sIFsxXSwKICAgICBbTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHNdKQogX0xUX0RFQ0woW10sIFtmaWxlX21hZ2ljX2NtZF0sIFsxXSwKLSAgICBbQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyJdKQorICAgIFtDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiXSkKK19MVF9ERUNMKFtdLCBbZmlsZV9tYWdpY19nbG9iXSwgWzFdLAorICAgIFtIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIl0pCitfTFRfREVDTChbXSwgW3dhbnRfbm9jYXNlZ2xvYl0sIFsxXSwKKyAgICBbRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiXSkKIF0pIyBfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9ECiAKIApAQCAtMzIxNCw3ICszMzg3LDE5IEBACiAgIE5NPSIkbHRfY3ZfcGF0aF9OTSIKIGVsc2UKICAgIyBEaWRuJ3QgZmluZCBhbnkgQlNEIGNvbXBhdGlibGUgbmFtZSBsaXN0ZXIsIGxvb2sgZm9yIGR1bXBiaW4uCi0gIEFDX0NIRUNLX1RPT0xTKERVTVBCSU4sIFsiZHVtcGJpbiAtc3ltYm9scyIgImxpbmsgLWR1bXAgLXN5bWJvbHMiXSwgOikKKyAgaWYgdGVzdCAtbiAiJERVTVBCSU4iOyB0aGVuIDoKKyAgICAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKyAgZWxzZQorICAgIEFDX0NIRUNLX1RPT0xTKERVTVBCSU4sIFtkdW1wYmluICJsaW5rIC1kdW1wIl0sIDopCisgICAgY2FzZSBgJERVTVBCSU4gLXN5bWJvbHMgL2Rldi9udWxsIDI+JjEgfCBzZWQgJzFxJ2AgaW4KKyAgICAqQ09GRiopCisgICAgICBEVU1QQklOPSIkRFVNUEJJTiAtc3ltYm9scyIKKyAgICAgIDs7CisgICAgKikKKyAgICAgIERVTVBCSU49OgorICAgICAgOzsKKyAgICBlc2FjCisgIGZpCiAgIEFDX1NVQlNUKFtEVU1QQklOXSkKICAgaWYgdGVzdCAiJERVTVBCSU4iICE9ICI6IjsgdGhlbgogICAgIE5NPSIkRFVNUEJJTiIKQEAgLTMyMjcsMTMgKzM0MTIsMTMgQEAKIEFDX0NBQ0hFX0NIRUNLKFt0aGUgbmFtZSBsaXN0ZXIgKCROTSkgaW50ZXJmYWNlXSwgW2x0X2N2X25tX2ludGVyZmFjZV0sCiAgIFtsdF9jdl9ubV9pbnRlcmZhY2U9IkJTRCBubSIKICAgZWNobyAiaW50IHNvbWVfdmFyaWFibGUgPSAwOyIgPiBjb25mdGVzdC4kYWNfZXh0Ci0gIChldmFsIGVjaG8gIlwiXCRhc19tZTpfX29saW5lX186ICRhY19jb21waWxlXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCisgIChldmFsIGVjaG8gIlwiXCRhc19tZTokTElORU5POiAkYWNfY29tcGlsZVwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQogICAoZXZhbCAiJGFjX2NvbXBpbGUiIDI+Y29uZnRlc3QuZXJyKQogICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKLSAgKGV2YWwgZWNobyAiXCJcJGFzX21lOl9fb2xpbmVfXzogJE5NIFxcXCJjb25mdGVzdC4kYWNfb2JqZXh0XFxcIlwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQorICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogJE5NIFxcXCJjb25mdGVzdC4kYWNfb2JqZXh0XFxcIlwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQogICAoZXZhbCAiJE5NIFwiY29uZnRlc3QuJGFjX29iamV4dFwiIiAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dCkKICAgY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECi0gIChldmFsIGVjaG8gIlwiXCRhc19tZTpfX29saW5lX186IG91dHB1dFwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQorICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogb3V0cHV0XCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCiAgIGNhdCBjb25mdGVzdC5vdXQgPiZBU19NRVNTQUdFX0xPR19GRAogICBpZiAkR1JFUCAnRXh0ZXJuYWwuKnNvbWVfdmFyaWFibGUnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgogICAgIGx0X2N2X25tX2ludGVyZmFjZT0iTVMgZHVtcGJpbiIKQEAgLTMyNDgsNiArMzQzMyw2NyBAQAogZG5sIEFDX0RFRlVOKFtBTV9QUk9HX05NXSwgW10pCiBkbmwgQUNfREVGVU4oW0FDX1BST0dfTk1dLCBbXSkKIAorIyBfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBob3cgdG8gZGV0ZXJtaW5lIHRoZSBuYW1lIG9mIHRoZSBzaGFyZWQgbGlicmFyeQorIyBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBsaW5rIGxpYnJhcnkuCisjICAtLSBQT1JUTUUgZmlsbCBpbiB3aXRoIHRoZSBkeW5hbWljIGxpYnJhcnkgY2hhcmFjdGVyaXN0aWNzCittNF9kZWZ1bihbX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUJdLAorW200X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSkKK200X3JlcXVpcmUoW19MVF9ERUNMX09CSkRVTVBdKQorbTRfcmVxdWlyZShbX0xUX0RFQ0xfRExMVE9PTF0pCitBQ19DQUNIRV9DSEVDSyhbaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllc10sCitsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCwKK1tsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKKworY2FzZSAkaG9zdF9vcyBpbgorY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCisgICotLWlkZW50aWZ5LXN0cmljdCopCisgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCisgICAgOzsKKyAgKikKKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKKyAgICA7OworICBlc2FjCisgIDs7CisqKQorICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgorICA7OworZXNhYworXSkKK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAordGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworCitfTFRfREVDTChbXSwgW3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kXSwgWzFdLAorICAgIFtDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzXSkKK10pIyBfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQgorCisKKyMgX0xUX1BBVEhfTUFOSUZFU1RfVE9PTAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGxvY2F0ZSB0aGUgbWFuaWZlc3QgdG9vbAorbTRfZGVmdW4oW19MVF9QQVRIX01BTklGRVNUX1RPT0xdLAorW0FDX0NIRUNLX1RPT0woTUFOSUZFU1RfVE9PTCwgbXQsIDopCit0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAorQUNfQ0FDSEVfQ0hFQ0soW2lmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbF0sIFtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2xdLAorICBbbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCisgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECisgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCisgIGZpCisgIHJtIC1mIGNvbmZ0ZXN0Kl0pCitpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgorICBNQU5JRkVTVF9UT09MPToKK2ZpCitfTFRfREVDTChbXSwgW01BTklGRVNUX1RPT0xdLCBbMV0sIFtNYW5pZmVzdCB0b29sXSlkbmwKK10pIyBfTFRfUEFUSF9NQU5JRkVTVF9UT09MCisKIAogIyBMVF9MSUJfTQogIyAtLS0tLS0tLQpAQCAtMzI1Niw3ICszNTAyLDcgQEAKIFtBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCiBMSUJNPQogY2FzZSAkaG9zdCBpbgotKi0qLWJlb3MqIHwgKi0qLWN5Z3dpbiogfCAqLSotcHczMiogfCAqLSotZGFyd2luKikKKyotKi1iZW9zKiB8ICotKi1jZWdjYyogfCAqLSotY3lnd2luKiB8ICotKi1oYWlrdSogfCAqLSotcHczMiogfCAqLSotZGFyd2luKikKICAgIyBUaGVzZSBzeXN0ZW0gZG9uJ3QgaGF2ZSBsaWJtLCBvciBkb24ndCBuZWVkIGl0CiAgIDs7CiAqLW5jci1zeXN2NC4zKikKQEAgLTMyODQsNyArMzUzMCwxMiBAQAogX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpPQogCiBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSk9JyAtZm5vLWJ1aWx0aW4nCisgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgIG52Y2MqKQorICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKT0nIC1YY29tcGlsZXIgLWZuby1idWlsdGluJyA7OworICAqKQorICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKT0nIC1mbm8tYnVpbHRpbicgOzsKKyAgZXNhYwogCiAgIF9MVF9DT01QSUxFUl9PUFRJT04oW2lmICRjb21waWxlciBzdXBwb3J0cyAtZm5vLXJ0dGkgLWZuby1leGNlcHRpb25zXSwKICAgICBsdF9jdl9wcm9nX2NvbXBpbGVyX3J0dGlfZXhjZXB0aW9ucywKQEAgLTMzMDEsNiArMzU1Miw3IEBACiBtNF9kZWZ1bihbX0xUX0NNRF9HTE9CQUxfU1lNQk9MU10sCiBbQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAogQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pZG5sCitBQ19SRVFVSVJFKFtBQ19QUk9HX0FXS10pZG5sCiBBQ19SRVFVSVJFKFtMVF9QQVRIX05NXSlkbmwKIEFDX1JFUVVJUkUoW0xUX1BBVEhfTERdKWRubAogbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKQEAgLTMzNjgsOCArMzYyMCw4IEBACiBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgogCiAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKGxpYltbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpW1sgXV0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXClbWyBdXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwobGliW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKIAogIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCiBvcHRfY3I9CkBAIC0zNDA1LDYgKzM2NTcsNyBAQAogICBlbHNlCiAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKltbCSBdXVwoJHN5bWNvZGUkc3ltY29kZSpcKVtbCSBdXVtbCSBdXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKICAgZmkKKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgogCiAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgogICBwaXBlX3dvcmtzPW5vCkBAIC0zNDI2LDcgKzM2NzksNyBAQAogICBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgogICAgICMgTm93IHRyeSB0byBncmFiIHRoZSBzeW1ib2xzLgogICAgIG5saXN0PWNvbmZ0ZXN0Lm5tCi0gICAgaWYgQUNfVFJZX0VWQUwoTk0gY29uZnRlc3QuJGFjX29iamV4dCBcfCAkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcPiAkbmxpc3QpICYmIHRlc3QgLXMgIiRubGlzdCI7IHRoZW4KKyAgICBpZiBBQ19UUllfRVZBTChOTSBjb25mdGVzdC4kYWNfb2JqZXh0IFx8ICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgXD4gJG5saXN0KSAmJiB0ZXN0IC1zICIkbmxpc3QiOyB0aGVuCiAgICAgICAjIFRyeSBzb3J0aW5nIGFuZCB1bmlxdWlmeWluZyB0aGUgb3V0cHV0LgogICAgICAgaWYgc29ydCAiJG5saXN0IiB8IHVuaXEgPiAiJG5saXN0IlQ7IHRoZW4KIAltdiAtZiAiJG5saXN0IlQgIiRubGlzdCIKQEAgLTM0MzgsNiArMzY5MSwxOCBAQAogICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CisvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKyMgZGVmaW5lIExUQCZ0QF9ETFNZTV9DT05TVAorI2VsaWYgZGVmaW5lZChfX29zZl9fKQorLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisjIGRlZmluZSBMVEAmdEBfRExTWU1fQ09OU1QKKyNlbHNlCisjIGRlZmluZSBMVEAmdEBfRExTWU1fQ09OU1QgY29uc3QKKyNlbmRpZgorCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewogI2VuZGlmCkBAIC0zNDQ5LDcgKzM3MTQsNyBAQAogCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CiAKIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KLWNvbnN0IHN0cnVjdCB7CitMVEAmdEBfRExTWU1fQ09OU1Qgc3RydWN0IHsKICAgY29uc3QgY2hhciAqbmFtZTsKICAgdm9pZCAgICAgICAqYWRkcmVzczsKIH0KQEAgLTM0NzUsMTUgKzM3NDAsMTUgQEAKIF9MVF9FT0YKIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCiAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCi0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCisJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCiAJICBDRkxBR1M9IiRDRkxBR1MkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpIgogCSAgaWYgQUNfVFJZX0VWQUwoYWNfbGluaykgJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogCSAgICBwaXBlX3dvcmtzPXllcwogCSAgZmkKLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCi0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCisJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKIAllbHNlCiAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JkFTX01FU1NBR0VfTE9HX0ZECiAJZmkKQEAgLTM1MTYsNiArMzc4MSwxMyBAQAogICBBQ19NU0dfUkVTVUxUKG9rKQogZmkKIAorIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCitpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgorICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tbQF1dRklMRScgPi9kZXYvbnVsbDsgdGhlbgorICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKK2ZpCisKIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3BpcGVdLCBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZV0sIFsxXSwKICAgICBbVGFrZSB0aGUgb3V0cHV0IG9mIG5tIGFuZCBwcm9kdWNlIGEgbGlzdGluZyBvZiByYXcgc3ltYm9scyBhbmQgQyBuYW1lc10pCiBfTFRfREVDTChbZ2xvYmFsX3N5bWJvbF90b19jZGVjbF0sIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbF0sIFsxXSwKQEAgLTM1MjYsNiArMzc5OCw4IEBACiBfTFRfREVDTChbZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4XSwKICAgICBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeF0sIFsxXSwKICAgICBbVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWRdKQorX0xUX0RFQ0woW10sIFtubV9maWxlX2xpc3Rfc3BlY10sIFsxXSwKKyAgICBbU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciAkTk1dKQogXSkgIyBfTFRfQ01EX0dMT0JBTF9TWU1CT0xTCiAKIApAQCAtMzUzNyw3ICszODExLDYgQEAKIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0KIAotQUNfTVNHX0NIRUNLSU5HKFtmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQ10pCiBtNF9pZihbJDFdLCBbQ1hYXSwgWwogICAjIEMrKyBzcGVjaWZpYyBjYXNlcyBmb3IgcGljLCBzdGF0aWMsIHdsLCBldGMuCiAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCkBAIC0zNTg4LDYgKzM4NjEsMTEgQEAKICAgICAgICMgREpHUFAgZG9lcyBub3Qgc3VwcG9ydCBzaGFyZWQgbGlicmFyaWVzIGF0IGFsbAogICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPQogICAgICAgOzsKKyAgICBoYWlrdSopCisgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBmb3IgSGFpa3UuCisgICAgICAjIFRoZSAiLXN0YXRpYyIgZmxhZyBleGlzdHMsIGJ1dCBpcyBicm9rZW4uCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9CisgICAgICA7OwogICAgIGludGVyaXhbWzMtOV1dKikKICAgICAgICMgSW50ZXJpeCAzLnggZ2NjIC1mcGljLy1mUElDIG9wdGlvbnMgZ2VuZXJhdGUgYnJva2VuIGNvZGUuCiAgICAgICAjIEluc3RlYWQsIHdlIHJlbG9jYXRlIHNoYXJlZCBsaWJyYXJpZXMgYXQgcnVudGltZS4KQEAgLTM2MzcsNiArMzkxNSwxMiBAQAogCSAgOzsKIAllc2FjCiAJOzsKKyAgICAgIG1pbmd3KiB8IGN5Z3dpbiogfCBvczIqIHwgcHczMiogfCBjZWdjYyopCisJIyBUaGlzIGhhY2sgaXMgc28gdGhhdCB0aGUgc291cmNlIGZpbGUgY2FuIHRlbGwgd2hldGhlciBpdCBpcyBiZWluZworCSMgYnVpbHQgZm9yIGluY2x1c2lvbiBpbiBhIGRsbCAoYW5kIHNob3VsZCBleHBvcnQgc3ltYm9scyBmb3IgZXhhbXBsZSkuCisJbTRfaWYoWyQxXSwgW0dDSl0sIFtdLAorCSAgW19MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLURETExfRVhQT1JUJ10pCisJOzsKICAgICAgIGRndXgqKQogCWNhc2UgJGNjX2Jhc2VuYW1lIGluCiAJICBlYysrKikKQEAgLTM2OTMsNyArMzk3Nyw3IEBACiAJICAgIDs7CiAJZXNhYwogCTs7Ci0gICAgICBsaW51eCogfCBrKmJzZCotZ251KQorICAgICAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQogCWNhc2UgJGNjX2Jhc2VuYW1lIGluCiAJICBLQ0MqKQogCSAgICAjIEtBSSBDKysgQ29tcGlsZXIKQEAgLTM3MjYsOCArNDAxMCw4IEBACiAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctbm9uX3NoYXJlZCcKIAkgICAgOzsKLQkgIHhsYyogfCB4bEMqKQotCSAgICAjIElCTSBYTCA4LjAgb24gUFBDCisJICB4bGMqIHwgeGxDKiB8IGJneGxbW2NDXV0qIHwgbXBpeGxbW2NDXV0qKQorCSAgICAjIElCTSBYTCA4LjAsIDkuMCBvbiBQUEMgYW5kIEJsdWVHZW5lCiAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwogCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1xcGljJwogCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1xc3RhdGljbGluaycKQEAgLTM3ODksNyArNDA3Myw3IEBACiAJOzsKICAgICAgIHNvbGFyaXMqKQogCWNhc2UgJGNjX2Jhc2VuYW1lIGluCi0JICBDQyopCisJICBDQyogfCBzdW5DQyopCiAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKQEAgLTM4OTMsNiArNDE3NywxMiBAQAogICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZm5vLWNvbW1vbicKICAgICAgIDs7CiAKKyAgICBoYWlrdSopCisgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBmb3IgSGFpa3UuCisgICAgICAjIFRoZSAiLXN0YXRpYyIgZmxhZyBleGlzdHMsIGJ1dCBpcyBicm9rZW4uCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9CisgICAgICA7OworCiAgICAgaHB1eCopCiAgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBmb3IgNjQtYml0IFBBIEhQLVVYLCBidXQgbm90IGZvciAzMi1iaXQKICAgICAgICMgUEEgSFAtVVguICBPbiBJQTY0IEhQLVVYLCBQSUMgaXMgdGhlIGRlZmF1bHQgYnV0IHRoZSBwaWMgZmxhZwpAQCAtMzkzNSw2ICs0MjI1LDEzIEBACiAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mUElDJwogICAgICAgOzsKICAgICBlc2FjCisKKyAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgIG52Y2MqKSAjIEN1ZGEgQ29tcGlsZXIgRHJpdmVyIDIuMgorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1YbGlua2VyICcKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLVhjb21waWxlciAtZlBJQycKKyAgICAgIDs7CisgICAgZXNhYwogICBlbHNlCiAgICAgIyBQT1JUTUUgQ2hlY2sgZm9yIGZsYWcgdG8gcGFzcyBsaW5rZXIgZmxhZ3MgdGhyb3VnaCB0aGUgc3lzdGVtIGNvbXBpbGVyLgogICAgIGNhc2UgJGhvc3Rfb3MgaW4KQEAgLTM5NzcsNyArNDI3NCw3IEBACiAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ub25fc2hhcmVkJwogICAgICAgOzsKIAotICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUpCisgICAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQogICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KICAgICAgICMgb2xkIEludGVsIGZvciB4ODZfNjQgd2hpY2ggc3RpbGwgc3VwcG9ydGVkIC1LUElDLgogICAgICAgZWNjKikKQEAgLTM5OTgsNyArNDI5NSwxMyBAQAogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLS1zaGFyZWQnCiAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctLXN0YXRpYycKIAk7OwotICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSopCisgICAgICBuYWdmb3IqKQorCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLC1XbCwsJworCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLVBJQycKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworCTs7CisgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCiAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCiAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKQEAgLTQwMTAsMjYgKzQzMTMsMjYgQEAKICAgICAgICAgIyBBbGwgQWxwaGEgY29kZSBpcyBQSUMuCiAgICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLW5vbl9zaGFyZWQnCiAgICAgICAgIDs7Ci0gICAgICB4bCopCi0JIyBJQk0gWEwgQyA4LjAvRm9ydHJhbiAxMC4xIG9uIFBQQworICAgICAgeGwqIHwgYmd4bCogfCBiZ2YqIHwgbXBpeGwqKQorCSMgSUJNIFhMIEMgOC4wL0ZvcnRyYW4gMTAuMSwgMTEuMSBvbiBQUEMgYW5kIEJsdWVHZW5lCiAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCiAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctcXBpYycKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1xc3RhdGljbGluaycKIAk7OwogICAgICAgKikKIAljYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KKwkqU3VuXCBGKiB8ICpTdW4qRm9ydHJhbiopCisJICAjIFN1biBGb3J0cmFuIDguMyBwYXNzZXMgYWxsIHVucmVjb2duaXplZCBmbGFncyB0byB0aGUgbGlua2VyCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJworCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPScnCisJICA7OwogCSpTdW5cIEMqKQogCSAgIyBTdW4gQyA1LjkKIAkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCiAJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwogCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCiAJICA7OwotCSpTdW5cIEYqKQotCSAgIyBTdW4gRm9ydHJhbiA4LjMgcGFzc2VzIGFsbCB1bnJlY29nbml6ZWQgZmxhZ3MgdG8gdGhlIGxpbmtlcgotCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKLQkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCi0JICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nJwotCSAgOzsKIAllc2FjCiAJOzsKICAgICAgIGVzYWMKQEAgLTQwNjAsNyArNDM2Myw3IEBACiAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJwogICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCisgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCiAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1Rb3B0aW9uIGxkICc7OwogICAgICAgKikKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCc7OwpAQCAtNDExNyw5ICs0NDIwLDExIEBACiAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSIkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpQCZ0QG00X2lmKFskMV0sW10sWyAtRFBJQ10sW200X2lmKFskMV0sW0NYWF0sWyAtRFBJQ10sW10pXSkiCiAgICAgOzsKIGVzYWMKLUFDX01TR19SRVNVTFQoWyRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSldKQotX0xUX1RBR0RFQ0woW3dsXSwgW2x0X3Byb2dfY29tcGlsZXJfd2xdLCBbMV0sCi0JW0hvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXJdKQorCitBQ19DQUNIRV9DSEVDSyhbZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUNdLAorICBbX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYywgJDEpXSwKKyAgW19MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9waWMsICQxKT0kX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpXSkKK19MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0kX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYywgJDEpCiAKICMKICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KQEAgLTQxMzgsNiArNDQ0Myw4IEBACiBfTFRfVEFHREVDTChbcGljX2ZsYWddLCBbbHRfcHJvZ19jb21waWxlcl9waWNdLCBbMV0sCiAJW0FkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0c10pCiAKK19MVF9UQUdERUNMKFt3bF0sIFtsdF9wcm9nX2NvbXBpbGVyX3dsXSwgWzFdLAorCVtIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyXSkKICMKICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KICMKQEAgLTQxNTgsNiArNDQ2NSw3IEBACiBtNF9kZWZ1bihbX0xUX0xJTktFUl9TSExJQlNdLAogW0FDX1JFUVVJUkUoW0xUX1BBVEhfTERdKWRubAogQUNfUkVRVUlSRShbTFRfUEFUSF9OTV0pZG5sCittNF9yZXF1aXJlKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSlkbmwKIG00X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAogbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAogbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKQEAgLTQxNjYsMjcgKzQ0NzQsMzUgQEAKIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzXSkKIG00X2lmKFskMV0sIFtDWFhdLCBbCiAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisgIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydfR0xPQkFMX09GRlNFVF9UQUJMRV98X0dMT0JBTF9fRltJRF1fLionXQogICBjYXNlICRob3N0X29zIGluCiAgIGFpeFtbNC05XV0qKQogICAgICMgSWYgd2UncmUgdXNpbmcgR05VIG5tLCB0aGVuIHdlIGRvbid0IHdhbnQgdGhlICItQyIgb3B0aW9uLgogICAgICMgLUMgbWVhbnMgZGVtYW5nbGUgdG8gQUlYIG5tLCBidXQgbWVhbnMgZG9uJ3QgZGVtYW5nbGUgd2l0aCBHTlUgbm0KKyAgICAjIEFsc28sIEFJWCBubSB0cmVhdHMgd2VhayBkZWZpbmVkIHN5bWJvbHMgbGlrZSBvdGhlciBnbG9iYWwgZGVmaW5lZAorICAgICMgc3ltYm9scywgd2hlcmVhcyBHTlUgbm0gbWFya3MgdGhlbSBhcyAiVyIuCiAgICAgaWYgJE5NIC1WIDI+JjEgfCAkR1JFUCAnR05VJyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQnBnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpKSAmJiAoW3N1YnN0cl0oXCQgMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXCQgMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gLUJwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSB8fCAoXCQgMiA9PSAiVyIpKSAmJiAoW3N1YnN0cl0oXCQgMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXCQgMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKICAgICBlbHNlCiAgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CQ3BnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpKSAmJiAoW3N1YnN0cl0oXCQgMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXCQgMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKICAgICBmaQogICAgIDs7CiAgIHB3MzIqKQogICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSIkbHRkbGxfY21kcyIKLSAgOzsKKyAgICA7OwogICBjeWd3aW4qIHwgbWluZ3cqIHwgY2VnY2MqKQotICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvOy9eLipbWyBdXV9fbm1fXy9zL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSAgOzsKKyAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgIGNsKikgOzsKKyAgICAqKQorICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS87cy9eLipbWyBdXV9fbm1fX1woW1teIF1dKlwpW1sgXV1bW14gXV0qL1wxIERBVEEvOy9eSVtbIF1dL2Q7L15bW0FJVFddXVtbIF1dL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisgICAgICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJ10KKyAgICAgIDs7CisgICAgZXNhYworICAgIDs7CiAgICopCiAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAnXCcncy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSAgOzsKKyAgICA7OwogICBlc2FjCi0gIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydfR0xPQkFMX09GRlNFVF9UQUJMRV98X0dMT0JBTF9fRltJRF1fLionXQogXSwgWwogICBydW5wYXRoX3Zhcj0KICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQpAQCAtNDI0OSw3ICs0NTY1LDMzIEBACiAgIGVzYWMKIAogICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPXllcworCisgICMgT24gc29tZSB0YXJnZXRzLCBHTlUgbGQgaXMgY29tcGF0aWJsZSBlbm91Z2ggd2l0aCB0aGUgbmF0aXZlIGxpbmtlcgorICAjIHRoYXQgd2UncmUgYmV0dGVyIG9mZiB1c2luZyB0aGUgbmF0aXZlIGludGVyZmFjZSBmb3IgYm90aC4KKyAgbHRfdXNlX2dudV9sZF9pbnRlcmZhY2U9bm8KICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgIGFpeCopCisJIyBUaGUgQUlYIHBvcnQgb2YgR05VIGxkIGhhcyBhbHdheXMgYXNwaXJlZCB0byBjb21wYXRpYmlsaXR5CisJIyB3aXRoIHRoZSBuYXRpdmUgbGlua2VyLiAgSG93ZXZlciwgYXMgdGhlIHdhcm5pbmcgaW4gdGhlIEdOVSBsZAorCSMgYmxvY2sgc2F5cywgdmVyc2lvbnMgYmVmb3JlIDIuMTkuNSogY291bGRuJ3QgcmVhbGx5IGNyZWF0ZSB3b3JraW5nCisJIyBzaGFyZWQgbGlicmFyaWVzLCByZWdhcmRsZXNzIG9mIHRoZSBpbnRlcmZhY2UgdXNlZC4KKwljYXNlIGAkTEQgLXYgMj4mMWAgaW4KKwkgICpcIFwoR05VXCBCaW51dGlsc1wpXCAyLjE5LjUqKSA7OworCSAgKlwgXChHTlVcIEJpbnV0aWxzXClcIDIuW1syLTldXSopIDs7CisJICAqXCBcKEdOVVwgQmludXRpbHNcKVwgW1szLTldXSopIDs7CisJICAqKQorCSAgICBsdF91c2VfZ251X2xkX2ludGVyZmFjZT15ZXMKKwkgICAgOzsKKwllc2FjCisJOzsKKyAgICAgICopCisJbHRfdXNlX2dudV9sZF9pbnRlcmZhY2U9eWVzCisJOzsKKyAgICBlc2FjCisgIGZpCisKKyAgaWYgdGVzdCAiJGx0X3VzZV9nbnVfbGRfaW50ZXJmYWNlIiA9IHllczsgdGhlbgogICAgICMgSWYgYXJjaGl2ZV9jbWRzIHJ1bnMgTEQsIG5vdCBDQywgd2xhcmMgc2hvdWxkIGJlIGVtcHR5CiAgICAgd2xhcmM9JyR7d2x9JwogCkBAIC00MjY3LDYgKzQ2MDksNyBAQAogICAgIGZpCiAgICAgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPW5vCiAgICAgY2FzZSBgJExEIC12IDI+JjFgIGluCisgICAgICAqR05VXCBnb2xkKikgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPXllcyA7OwogICAgICAgKlwgW1swMV1dLiogfCAqXCAyLltbMC05XV0uKiB8ICpcIDIuMTAuKikgOzsgIyBjYXRjaCB2ZXJzaW9ucyA8IDIuMTEKICAgICAgICpcIDIuMTEuOTMuMC4yXCAqKSBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9eWVzIDs7ICMgUkg3LjMgLi4uCiAgICAgICAqXCAyLjExLjkyLjAuMTJcICopIHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZz15ZXMgOzsgIyBNYW5kcmFrZSA4LjIgLi4uCkBAIC00MjgyLDExICs0NjI1LDEyIEBACiAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwogCWNhdCA8PF9MVF9FT0YgMT4mMgogCi0qKiogV2FybmluZzogdGhlIEdOVSBsaW5rZXIsIGF0IGxlYXN0IHVwIHRvIHJlbGVhc2UgMi45LjEsIGlzIHJlcG9ydGVkCisqKiogV2FybmluZzogdGhlIEdOVSBsaW5rZXIsIGF0IGxlYXN0IHVwIHRvIHJlbGVhc2UgMi4xOSwgaXMgcmVwb3J0ZWQKICoqKiB0byBiZSB1bmFibGUgdG8gcmVsaWFibHkgY3JlYXRlIHNoYXJlZCBsaWJyYXJpZXMgb24gQUlYLgogKioqIFRoZXJlZm9yZSwgbGlidG9vbCBpcyBkaXNhYmxpbmcgc2hhcmVkIGxpYnJhcmllcyBzdXBwb3J0LiAgSWYgeW91Ci0qKiogcmVhbGx5IGNhcmUgZm9yIHNoYXJlZCBsaWJyYXJpZXMsIHlvdSBtYXkgd2FudCB0byBtb2RpZnkgeW91ciBQQVRICi0qKiogc28gdGhhdCBhIG5vbi1HTlUgbGlua2VyIGlzIGZvdW5kLCBhbmQgdGhlbiByZXN0YXJ0LgorKioqIHJlYWxseSBjYXJlIGZvciBzaGFyZWQgbGlicmFyaWVzLCB5b3UgbWF5IHdhbnQgdG8gaW5zdGFsbCBiaW51dGlscworKioqIDIuMjAgb3IgYWJvdmUsIG9yIG1vZGlmeSB5b3VyIFBBVEggc28gdGhhdCBhIG5vbi1HTlUgbGlua2VyIGlzIGZvdW5kLgorKioqIFlvdSB3aWxsIHRoZW4gbmVlZCB0byByZXN0YXJ0IHRoZSBjb25maWd1cmF0aW9uIHByb2Nlc3MuCiAKIF9MVF9FT0YKICAgICAgIGZpCkBAIC00MzIyLDEwICs0NjY2LDEyIEBACiAgICAgICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAogICAgICAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJwogICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCiAgICAgICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCiAgICAgICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKLSAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW1tBSVRXXV1bWyBdXS9zLy4qW1sgXV0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvO3MvXi4qW1sgXV1fX25tX19cKFtbXiBdXSpcKVtbIF1dW1teIF1dKi9cMSBEQVRBLzsvXklbWyBdXS9kOy9eW1tBSVRXXV1bWyBdXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworICAgICAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZSddCiAKICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCkBAIC00MzQzLDYgKzQ2ODksMTEgQEAKICAgICAgIGZpCiAgICAgICA7OwogCisgICAgaGFpa3UqKQorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisgICAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKKyAgICAgIDs7CisKICAgICBpbnRlcml4W1szLTldXSopCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwpAQCAtNDM1OCw3ICs0NzA5LDcgQEAKICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdzZWQgInMsXixfLCIgJGV4cG9ydF9zeW1ib2xzID4kb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWgsJHNvbmFtZSAke3dsfS0tcmV0YWluLXN5bWJvbHMtZmlsZSwkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bSAke3dsfS0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJwogICAgICAgOzsKIAotICAgIGdudSogfCBsaW51eCogfCB0cGYqIHwgaypic2QqLWdudSkKKyAgICBnbnUqIHwgbGludXgqIHwgdHBmKiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKICAgICAgIHRtcF9kaWV0PW5vCiAgICAgICBpZiB0ZXN0ICIkaG9zdF9vcyIgPSBsaW51eC1kaWV0bGliYzsgdGhlbgogCWNhc2UgJGNjX2Jhc2VuYW1lIGluCkBAIC00MzY4LDE1ICs0NzE5LDE2IEBACiAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkRUdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbCBcCiAJICYmIHRlc3QgIiR0bXBfZGlldCIgPSBubwogICAgICAgdGhlbgotCXRtcF9hZGRmbGFnPQorCXRtcF9hZGRmbGFnPScgJHBpY19mbGFnJwogCXRtcF9zaGFyZWRmbGFnPSctc2hhcmVkJwogCWNhc2UgJGNjX2Jhc2VuYW1lLCRob3N0X2NwdSBpbgogICAgICAgICBwZ2NjKikJCQkJIyBQb3J0bGFuZCBHcm91cCBDIGNvbXBpbGVyCi0JICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRFQ0hPIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCiAJICB0bXBfYWRkZmxhZz0nICRwaWNfZmxhZycKIAkgIDs7Ci0JcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqKQkjIFBvcnRsYW5kIEdyb3VwIGY3NyBhbmQgZjkwIGNvbXBpbGVycwotCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyAkRUNITyBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKwkJCQkJIyBQb3J0bGFuZCBHcm91cCBmNzcgYW5kIGY5MCBjb21waWxlcnMKKwkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCiAJICB0bXBfYWRkZmxhZz0nICRwaWNfZmxhZyAtTW5vbWFpbicgOzsKIAllY2MqLGlhNjQqIHwgaWNjKixpYTY0KikJIyBJbnRlbCBDIGNvbXBpbGVyIG9uIGlhNjQKIAkgIHRtcF9hZGRmbGFnPScgLWlfZHluYW1pYycgOzsKQEAgLTQzODcsMTMgKzQ3MzksMTcgQEAKIAlsZjk1KikJCQkJIyBMYWhleSBGb3J0cmFuIDguMQogCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQogCSAgdG1wX3NoYXJlZGZsYWc9Jy0tc2hhcmVkJyA7OwotCXhsW1tjQ11dKikJCQkjIElCTSBYTCBDIDguMCBvbiBQUEMgKGRlYWwgd2l0aCB4bGYgYmVsb3cpCisJeGxbW2NDXV0qIHwgYmd4bFtbY0NdXSogfCBtcGl4bFtbY0NdXSopICMgSUJNIFhMIEMgOC4wIG9uIFBQQyAoZGVhbCB3aXRoIHhsZiBiZWxvdykKIAkgIHRtcF9zaGFyZWRmbGFnPSctcW1rc2hyb2JqJwogCSAgdG1wX2FkZGZsYWc9IDs7CisJbnZjYyopCSMgQ3VkYSBDb21waWxlciBEcml2ZXIgMi4yCisJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgX0xUX1RBR1ZBUihjb21waWxlcl9uZWVkc19vYmplY3QsICQxKT15ZXMKKwkgIDs7CiAJZXNhYwogCWNhc2UgYCRDQyAtViAyPiYxIHwgc2VkIDVxYCBpbgogCSpTdW5cIEMqKQkJCSMgU3VuIEMgNS45Ci0JICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYG5ld19jb252ZW5pZW5jZT07IGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgLXogXCIkY29udlwiIHx8IG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgJEVDSE8gXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBuZXdfY29udmVuaWVuY2U9OyBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0IC16IFwiJGNvbnZcIiB8fCBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJwogCSAgX0xUX1RBR1ZBUihjb21waWxlcl9uZWVkc19vYmplY3QsICQxKT15ZXMKIAkgIHRtcF9zaGFyZWRmbGFnPSctRycgOzsKIAkqU3VuXCBGKikJCQkjIFN1biBGb3J0cmFuIDguMwpAQCAtNDQwOSwxNyArNDc2NSwxNyBAQAogICAgICAgICBmaQogCiAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KLQl4bGYqKQorCXhsZiogfCBiZ2YqIHwgYmd4bGYqIHwgbXBpeGxmKikKIAkgICMgSUJNIFhMIEZvcnRyYW4gMTAuMSBvbiBQUEMgY2Fubm90IGNyZWF0ZSBzaGFyZWQgbGlicyBpdHNlbGYKIAkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPQogCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkLCAkMSk9Jy1ycGF0aCAkbGliZGlyJwotCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KIAkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CiAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgogCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKIAkgIGZpCiAJICA7OwogCWVzYWMKQEAgLTQ0MzMsOCArNDc4OSw4IEBACiAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKIAl3bGFyYz0KICAgICAgIGVsc2UKLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAgICAgICBmaQogICAgICAgOzsKIApAQCAtNDQ1Miw4ICs0ODA4LDggQEAKIAogX0xUX0VPRgogICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogICAgICAgZWxzZQogCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KICAgICAgIGZpCkBAIC00NDk5LDggKzQ4NTUsOCBAQAogCiAgICAgKikKICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAgICAgICBlbHNlCiAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwogICAgICAgZmkKQEAgLTQ1NDAsOCArNDg5NiwxMCBAQAogICAgICAgZWxzZQogCSMgSWYgd2UncmUgdXNpbmcgR05VIG5tLCB0aGVuIHdlIGRvbid0IHdhbnQgdGhlICItQyIgb3B0aW9uLgogCSMgLUMgbWVhbnMgZGVtYW5nbGUgdG8gQUlYIG5tLCBidXQgbWVhbnMgZG9uJ3QgZGVtYW5nbGUgd2l0aCBHTlUgbm0KKwkjIEFsc28sIEFJWCBubSB0cmVhdHMgd2VhayBkZWZpbmVkIHN5bWJvbHMgbGlrZSBvdGhlciBnbG9iYWwKKwkjIGRlZmluZWQgc3ltYm9scywgd2hlcmVhcyBHTlUgbm0gbWFya3MgdGhlbSBhcyAiVyIuCiAJaWYgJE5NIC1WIDI+JjEgfCAkR1JFUCAnR05VJyA+IC9kZXYvbnVsbDsgdGhlbgotCSAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQnBnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpKSAmJiAoW3N1YnN0cl0oXCQgMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXCQgMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKKwkgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gLUJwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSB8fCAoXCQgMiA9PSAiVyIpKSAmJiAoW3N1YnN0cl0oXCQgMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXCQgMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKIAllbHNlCiAJICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CQ3BnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpKSAmJiAoW3N1YnN0cl0oXCQgMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXCQgMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKIAlmaQpAQCAtNDYyOCw5ICs0OTg2LDkgQEAKIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1iZXJvaycKICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLSAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKyAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoWyQxXSkKICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiAkRUNITyAiWCR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iIHwgJFhzZWQ7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKKyAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCiAgICAgICBlbHNlCiAJaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KIAkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1SICRsaWJkaXI6L3Vzci9saWI6L2xpYicKQEAgLTQ2MzksMTQgKzQ5OTcsMTkgQEAKIAllbHNlCiAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgogCSAjIGVtcHR5IGV4ZWN1dGFibGUuCi0JIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisJIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCiAJIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgogCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKIAkgICMgLWJlcm9rIHdpbGwgbGluayB3aXRob3V0IGVycm9yLCBidXQgbWF5IHByb2R1Y2UgYSBicm9rZW4gbGlicmFyeS4KIAkgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWJlcm5vdG9rJwogCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tYmVyb2snCi0JICAjIEV4cG9ydGVkIHN5bWJvbHMgY2FuIGJlIHB1bGxlZCBpbnRvIHNoYXJlZCBvYmplY3RzIGZyb20gYXJjaGl2ZXMKLQkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJGNvbnZlbmllbmNlJworCSAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorCSAgICAjIFdlIG9ubHkgdXNlIHRoaXMgY29kZSBmb3IgR05VIGxkcyB0aGF0IHN1cHBvcnQgLS13aG9sZS1hcmNoaXZlLgorCSAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgZWxzZQorCSAgICAjIEV4cG9ydGVkIHN5bWJvbHMgY2FuIGJlIHB1bGxlZCBpbnRvIHNoYXJlZCBvYmplY3RzIGZyb20gYXJjaGl2ZXMKKwkgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSckY29udmVuaWVuY2UnCisJICBmaQogCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPXllcwogCSAgIyBUaGlzIGlzIHNpbWlsYXIgdG8gaG93IEFJWCB0cmFkaXRpb25hbGx5IGJ1aWxkcyBpdHMgc2hhcmVkIGxpYnJhcmllcy4KIAkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSJcJENDICRzaGFyZWRfZmxhZyInIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJHt3bH0tYm5vZW50cnkgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWJFOiRleHBvcnRfc3ltYm9scyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9fiRBUiAkQVJfRkxBR1MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUkcmVsZWFzZS5hICRvdXRwdXRfb2JqZGlyLyRzb25hbWUnCkBAIC00Njc4LDIwICs1MDQxLDYzIEBACiAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgogICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwogICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJwotICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCi0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotICAgICAgbGliZXh0PWxpYgotICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgJEVDSE8gIlgkZGVwbGlicyIgfCAkWHNlZCAtZSAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJwotICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0gICAgICBfTFRfVEFHVkFSKGZpeF9zcmNmaWxlX3BhdGgsICQxKT0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCi0gICAgICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICBjbCopCisJIyBOYXRpdmUgTVNWQworCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJworCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorCV9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9eWVzCisJX0xUX1RBR1ZBUihmaWxlX2xpc3Rfc3BlYywgJDEpPSdAJworCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisJbGliZXh0PWxpYgorCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorCXNocmV4dF9jbWRzPSIuZGxsIgorCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKwkgIGVsc2UKKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKwkgIGZpfgorCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorCSAgbGlua25hbWVzPScKKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKKwlfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKwlfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltbQUlUV11dW1sgXV0vcy8uKltbIF1dLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisJIyBEb24ndCB1c2UgcmFubGliCisJX0xUX1RBR1ZBUihvbGRfcG9zdGluc3RhbGxfY21kcywgJDEpPSdjaG1vZCA2NDQgJG9sZGxpYicKKwlfTFRfVEFHVkFSKHBvc3RsaW5rX2NtZHMsICQxKT0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKwkgICAgKi5leGV8Ki5FWEUpIDs7CisJICAgICopCisJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCisJICAgICAgOzsKKwkgIGVzYWN+CisJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKwkgIGZpJworCTs7CisgICAgICAqKQorCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgorCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJworCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisJbGliZXh0PWxpYgorCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorCXNocmV4dF9jbWRzPSIuZGxsIgorCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorCV9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJworCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisJX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKwlfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKwk7OworICAgICAgZXNhYwogICAgICAgOzsKIAogICAgIGRhcndpbiogfCByaGFwc29keSopCkBAIC00NzI5LDcgKzUxMzUsNyBAQAogCiAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgogICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKLSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1SJGxpYmRpcicKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwpAQCAtNDczNyw3ICs1MTQzLDcgQEAKIAogICAgIGhwdXg5KikKICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKICAgICAgIGVsc2UKIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKICAgICAgIGZpCkBAIC00NzUyLDggKzUxNTgsOCBAQAogICAgICAgOzsKIAogICAgIGhwdXgxMCopCi0gICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAtYSAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogICAgICAgZWxzZQogCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCiAgICAgICBmaQpAQCAtNDc3MSwxNiArNTE3NywxNiBAQAogICAgICAgOzsKIAogICAgIGhwdXgxMSopCi0gICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAtYSAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KIAljYXNlICRob3N0X2NwdSBpbgogCWhwcGEqNjQqKQogCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICA7OwogCWlhNjQqKQotCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICA7OwogCSopCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICA7OwogCWVzYWMKICAgICAgIGVsc2UKQEAgLTQ3OTIsNyArNTE5OCwxNCBAQAogCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgOzsKIAkqKQotCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJbTRfaWYoJDEsIFtdLCBbCisJICAjIE9sZGVyIHZlcnNpb25zIG9mIHRoZSAxMS4wMCBjb21waWxlciBkbyBub3QgdW5kZXJzdGFuZCAtYiB5ZXQKKwkgICMgKEhQOTI0NTMtMDEgQS4xMS4wMS4yMCBkb2Vzbid0LCBIUDkyNDUzLTAxIEIuMTEuWC4zNTE3NS0zNTE3Ni5HUCBkb2VzKQorCSAgX0xUX0xJTktFUl9PUFRJT04oW2lmICRDQyB1bmRlcnN0YW5kcyAtYl0sCisJICAgIF9MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9fYiwgJDEpLCBbLWJdLAorCSAgICBbX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnXSwKKwkgICAgW19MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnXSldLAorCSAgW19MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJ10pCiAJICA7OwogCWVzYWMKICAgICAgIGZpCkBAIC00ODIwLDE5ICs1MjMzLDM0IEBACiAKICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQogICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90CiAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAogCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCi0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLSAgICAgICAgQUNfTElOS19JRkVMU0UoaW50IGZvbyh2b2lkKSB7fSwKLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICAgKQotICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCisJQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2xdLAorCSAgW2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sXSwKKwkgIFtzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKwkgICBBQ19MSU5LX0lGRUxTRSgKKwkgICAgIFtBQ19MQU5HX1NPVVJDRSgKKwkgICAgICAgIFtBQ19MQU5HX0NBU0UoW0NdLCBbW2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH1dXSwKKwkJCSAgICAgIFtDKytdLCBbW2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH1dXSwKKwkJCSAgICAgIFtGb3J0cmFuIDc3XSwgW1sKKyAgICAgIHN1YnJvdXRpbmUgZm9vCisgICAgICBlbmRdXSwKKwkJCSAgICAgIFtGb3J0cmFuXSwgW1sKKyAgICAgIHN1YnJvdXRpbmUgZm9vCisgICAgICBlbmRdXSldKV0sCisJICAgICAgW2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllc10sCisJICAgICAgW2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vXSkKKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyJdKQorCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KKyAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwlmaQogICAgICAgZWxzZQotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGZpCiAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9J25vJwogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKQEAgLTQ4OTQsMTcgKzUzMjIsMTcgQEAKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJEVDSE8gIkxJQlJBUlkgJGxpYm5hbWUgSU5JVElOU1RBTkNFIiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyAiREVTQ1JJUFRJT04gXCIkbGlibmFtZVwiIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JEVDSE8gREFUQSA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JEVDSE8gIiBTSU5HTEUgTk9OU0hBUkVEIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JEVDSE8gRVhQT1JUUyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZW14ZXhwICRsaWJvYmpzID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJworICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJEVDSE8gIkxJQlJBUlkgJGxpYm5hbWUgSU5JVElOU1RBTkNFIiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyAiREVTQ1JJUFRJT04gXCIkbGlibmFtZVwiIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZWNobyBEQVRBID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lY2hvICIgU0lOR0xFIE5PTlNIQVJFRCIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfmVjaG8gRVhQT1JUUyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZW14ZXhwICRsaWJvYmpzID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJwogICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J2VteGltcCAtbyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5hICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKICAgICAgIDs7CiAKICAgICBvc2YzKikKICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogICAgICAgZWxzZQogCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogICAgICAgZmkKICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT0nbm8nCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwpAQCAtNDkxNCwxMyArNTM0MiwxMyBAQAogICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwogICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwogICAgICAgZWxzZQogCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdmb3IgaSBpbiBgY2F0ICRleHBvcnRfc3ltYm9sc2A7IGRvIHByaW50ZiAiJXMgJXNcXG4iIC1leHBvcnRlZF9zeW1ib2wgIlwkaSIgPj4gJGxpYi5leHA7IGRvbmU7IHByaW50ZiAiJXNcXG4iICItaGlkZGVuIj4+ICRsaWIuZXhwfgotCSRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHt3bH0taW5wdXQgJHt3bH0kbGliLmV4cCAkY29tcGlsZXJfZmxhZ3MgJGxpYm9ianMgJGRlcGxpYnMgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWJ+JFJNICRsaWIuZXhwJworCSRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHt3bH0taW5wdXQgJHt3bH0kbGliLmV4cCAkY29tcGlsZXJfZmxhZ3MgJGxpYm9ianMgJGRlcGxpYnMgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWJ+JFJNICRsaWIuZXhwJwogCiAJIyBCb3RoIGMgYW5kIGN4eCBjb21waWxlciBzdXBwb3J0IC1ycGF0aCBkaXJlY3RseQogCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctcnBhdGggJGxpYmRpcicKQEAgLTQ5MzMsOSArNTM2MSw5IEBACiAgICAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAteiBkZWZzJwogICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KIAl3bGFyYz0nJHt3bH0nCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCiAgICAgICBlbHNlCiAJY2FzZSBgJENDIC1WIDI+JjFgIGluCiAJKiJDb21waWxlcnMgNS4wIiopCkBAIC01MTExLDM2ICs1NTM5LDM4IEBACiAgICAgICAjIFRlc3Qgd2hldGhlciB0aGUgY29tcGlsZXIgaW1wbGljaXRseSBsaW5rcyB3aXRoIC1sYyBzaW5jZSBvbiBzb21lCiAgICAgICAjIHN5c3RlbXMsIC1sZ2NjIGhhcyB0byBjb21lIGJlZm9yZSAtbGMuIElmIGdjYyBhbHJlYWR5IHBhc3NlcyAtbGMKICAgICAgICMgdG8gbGQsIGRvbid0IGFkZCAtbGMgYmVmb3JlIC1sZ2NjLgotICAgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIC1sYyBzaG91bGQgYmUgZXhwbGljaXRseSBsaW5rZWQgaW5dKQotICAgICAgJFJNIGNvbmZ0ZXN0KgotICAgICAgZWNobyAiJGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZSIgPiBjb25mdGVzdC4kYWNfZXh0CisgICAgICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciAtbGMgc2hvdWxkIGJlIGV4cGxpY2l0bHkgbGlua2VkIGluXSwKKwlbbHRfY3ZfXV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKSwKKwlbJFJNIGNvbmZ0ZXN0KgorCWVjaG8gIiRsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUiID4gY29uZnRlc3QuJGFjX2V4dAogCi0gICAgICBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKSAyPmNvbmZ0ZXN0LmVycjsgdGhlbgotICAgICAgICBzb25hbWU9Y29uZnRlc3QKLSAgICAgICAgbGliPWNvbmZ0ZXN0Ci0gICAgICAgIGxpYm9ianM9Y29uZnRlc3QuJGFjX29iamV4dAotICAgICAgICBkZXBsaWJzPQotICAgICAgICB3bD0kX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSkKLQlwaWNfZmxhZz0kX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpCi0gICAgICAgIGNvbXBpbGVyX2ZsYWdzPS12Ci0gICAgICAgIGxpbmtlcl9mbGFncz0tdgotICAgICAgICB2ZXJzdHJpbmc9Ci0gICAgICAgIG91dHB1dF9vYmpkaXI9LgotICAgICAgICBsaWJuYW1lPWNvbmZ0ZXN0Ci0gICAgICAgIGx0X3NhdmVfYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKQotICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Ci0gICAgICAgIGlmIEFDX1RSWV9FVkFMKF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSkgMlw+XCYxIFx8ICRHUkVQIFwiIC1sYyBcIiBcPi9kZXYvbnVsbCAyXD5cJjEpCi0gICAgICAgIHRoZW4KLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubwotICAgICAgICBlbHNlCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9eWVzCi0gICAgICAgIGZpCi0gICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0kbHRfc2F2ZV9hbGxvd191bmRlZmluZWRfZmxhZwotICAgICAgZWxzZQotICAgICAgICBjYXQgY29uZnRlc3QuZXJyIDE+JjUKLSAgICAgIGZpCi0gICAgICAkUk0gY29uZnRlc3QqCi0gICAgICBBQ19NU0dfUkVTVUxUKFskX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpXSkKKwlpZiBBQ19UUllfRVZBTChhY19jb21waWxlKSAyPmNvbmZ0ZXN0LmVycjsgdGhlbgorCSAgc29uYW1lPWNvbmZ0ZXN0CisJICBsaWI9Y29uZnRlc3QKKwkgIGxpYm9ianM9Y29uZnRlc3QuJGFjX29iamV4dAorCSAgZGVwbGlicz0KKwkgIHdsPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKQorCSAgcGljX2ZsYWc9JF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKQorCSAgY29tcGlsZXJfZmxhZ3M9LXYKKwkgIGxpbmtlcl9mbGFncz0tdgorCSAgdmVyc3RyaW5nPQorCSAgb3V0cHV0X29iamRpcj0uCisJICBsaWJuYW1lPWNvbmZ0ZXN0CisJICBsdF9zYXZlX2FsbG93X3VuZGVmaW5lZF9mbGFnPSRfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSkKKwkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KKwkgIGlmIEFDX1RSWV9FVkFMKF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSkgMlw+XCYxIFx8ICRHUkVQIFwiIC1sYyBcIiBcPi9kZXYvbnVsbCAyXD5cJjEpCisJICB0aGVuCisJICAgIGx0X2N2X1tdX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCisJICBlbHNlCisJICAgIGx0X2N2X1tdX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPXllcworCSAgZmkKKwkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0kbHRfc2F2ZV9hbGxvd191bmRlZmluZWRfZmxhZworCWVsc2UKKwkgIGNhdCBjb25mdGVzdC5lcnIgMT4mNQorCWZpCisJJFJNIGNvbmZ0ZXN0KgorCV0pCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9JGx0X2N2X1tdX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpCiAgICAgICA7OwogICAgIGVzYWMKICAgZmkKQEAgLTUyMDUsOCArNTYzNSw2IEBACiAgICAgdG8gcnVudGltZSBwYXRoIGxpc3RdKQogX0xUX1RBR0RFQ0woW10sIFtsaW5rX2FsbF9kZXBsaWJzXSwgWzBdLAogICAgIFtXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXNdKQotX0xUX1RBR0RFQ0woW10sIFtmaXhfc3JjZmlsZV9wYXRoXSwgWzFdLAotICAgIFtGaXggdGhlIHNoZWxsIHZhcmlhYmxlICRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXJdKQogX0xUX1RBR0RFQ0woW10sIFthbHdheXNfZXhwb3J0X3N5bWJvbHNdLCBbMF0sCiAgICAgW1NldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZF0pCiBfTFRfVEFHREVDTChbXSwgW2V4cG9ydF9zeW1ib2xzX2NtZHNdLCBbMl0sCkBAIC01MjE3LDYgKzU2NDUsOCBAQAogICAgIFtTeW1ib2xzIHRoYXQgbXVzdCBhbHdheXMgYmUgZXhwb3J0ZWRdKQogX0xUX1RBR0RFQ0woW10sIFtwcmVsaW5rX2NtZHNdLCBbMl0sCiAgICAgW0NvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzXSkKK19MVF9UQUdERUNMKFtdLCBbcG9zdGxpbmtfY21kc10sIFsyXSwKKyAgICBbQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtc10pCiBfTFRfVEFHREVDTChbXSwgW2ZpbGVfbGlzdF9zcGVjXSwgWzFdLAogICAgIFtTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXNdKQogZG5sIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCkBAIC01MzEwLDE0ICs1NzQwLDE1IEBACiBdKSMgX0xUX0xBTkdfQ19DT05GSUcKIAogCi0jIF9MVF9QUk9HX0NYWAotIyAtLS0tLS0tLS0tLS0KLSMgU2luY2UgQUNfUFJPR19DWFggaXMgYnJva2VuLCBpbiB0aGF0IGl0IHJldHVybnMgZysrIGlmIHRoZXJlIGlzIG5vIGMrKwotIyBjb21waWxlciwgd2UgaGF2ZSBvdXIgb3duIHZlcnNpb24gaGVyZS4KLW00X2RlZnVuKFtfTFRfUFJPR19DWFhdLAotWwotcHVzaGRlZihbQUNfTVNHX0VSUk9SXSwgW19sdF9jYXVnaHRfQ1hYX2Vycm9yPXllc10pCi1BQ19QUk9HX0NYWAorIyBfTFRfTEFOR19DWFhfQ09ORklHKFtUQUddKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIGEgQysrIGNvbXBpbGVyIGFyZSBzdWl0YWJseQorIyBkZWZpbmVkLiAgVGhlc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieSBfTFRfQ09ORklHIHRvIHdyaXRlCisjIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KK200X2RlZnVuKFtfTFRfTEFOR19DWFhfQ09ORklHXSwKK1ttNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKK200X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSlkbmwKK200X3JlcXVpcmUoW19MVF9QQVRIX01BTklGRVNUX1RPT0xdKWRubAogaWYgdGVzdCAtbiAiJENYWCIgJiYgKCB0ZXN0ICJYJENYWCIgIT0gIlhubyIgJiYKICAgICAoICh0ZXN0ICJYJENYWCIgPSAiWGcrKyIgJiYgYGcrKyAtdiA+L2Rldi9udWxsIDI+JjFgICkgfHwKICAgICAodGVzdCAiWCRDWFgiICE9ICJYZysrIikpKSA7IHRoZW4KQEAgLTUzMjUsMjIgKzU3NTYsNiBAQAogZWxzZQogICBfbHRfY2F1Z2h0X0NYWF9lcnJvcj15ZXMKIGZpCi1wb3BkZWYoW0FDX01TR19FUlJPUl0pCi1dKSMgX0xUX1BST0dfQ1hYCi0KLWRubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKLWRubCBBQ19ERUZVTihbX0xUX1BST0dfQ1hYXSwgW10pCi0KLQotIyBfTFRfTEFOR19DWFhfQ09ORklHKFtUQUddKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIGEgQysrIGNvbXBpbGVyIGFyZSBzdWl0YWJseQotIyBkZWZpbmVkLiAgVGhlc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieSBfTFRfQ09ORklHIHRvIHdyaXRlCi0jIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KLW00X2RlZnVuKFtfTFRfTEFOR19DWFhfQ09ORklHXSwKLVtBQ19SRVFVSVJFKFtfTFRfUFJPR19DWFhdKWRubAotbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCi1tNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCiAKIEFDX0xBTkdfUFVTSChDKyspCiBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KQEAgLTUzNjIsNiArNTc3Nyw4IEBACiBfTFRfVEFHVkFSKG1vZHVsZV9leHBzeW1fY21kcywgJDEpPQogX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9dW5rbm93bgogX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JG9sZF9hcmNoaXZlX2NtZHMKK19MVF9UQUdWQVIocmVsb2FkX2ZsYWcsICQxKT0kcmVsb2FkX2ZsYWcKK19MVF9UQUdWQVIocmVsb2FkX2NtZHMsICQxKT0kcmVsb2FkX2NtZHMKIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0KIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0KIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPW5vCkBAIC01MzkzLDYgKzU4MTAsNyBAQAogCiAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCiAgIGx0X3NhdmVfQ0M9JENDCisgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKICAgbHRfc2F2ZV9MRD0kTEQKICAgbHRfc2F2ZV9HQ0M9JEdDQwogICBHQ0M9JEdYWApAQCAtNTQxMCw2ICs1ODI4LDcgQEAKICAgZmkKICAgdGVzdCAteiAiJHtMRENYWCtzZXR9IiB8fCBMRD0kTERDWFgKICAgQ0M9JHtDWFgtImMrKyJ9CisgIENGTEFHUz0kQ1hYRkxBR1MKICAgY29tcGlsZXI9JENDCiAgIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKICAgX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQpAQCAtNTQzMSw4ICs1ODUwLDggQEAKICAgICAgICMgQ2hlY2sgaWYgR05VIEMrKyB1c2VzIEdOVSBsZCBhcyB0aGUgdW5kZXJseWluZyBsaW5rZXIsIHNpbmNlIHRoZQogICAgICAgIyBhcmNoaXZpbmcgY29tbWFuZHMgYmVsb3cgYXNzdW1lIHRoYXQgR05VIGxkIGlzIGJlaW5nIHVzZWQuCiAgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCi0gICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDICRwaWNfZmxhZyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKyAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAkcGljX2ZsYWcgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAKICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKICAgICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1keW5hbWljJwpAQCAtNTQ2NCw3ICs1ODgzLDcgQEAKICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgogICAgICAgIyBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCi0gICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAiXC1MIicKKyAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQIC12ICJeQ29uZmlndXJlZCB3aXRoOiIgfCAkR1JFUCAiXC1MIicKIAogICAgIGVsc2UKICAgICAgIEdYWD1ubwpAQCAtNTU3MywxMCArNTk5MiwxMCBAQAogICAgICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nLWJlcm9rJwogICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbiBlbXB0eQogICAgICAgICAgICMgZXhlY3V0YWJsZS4KLSAgICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorICAgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCiAgICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAKLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gJEVDSE8gIlgke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiB8ICRYc2VkOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCisgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCiAgICAgICAgIGVsc2UKICAgICAgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgogCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tUiAkbGliZGlyOi91c3IvbGliOi9saWInCkBAIC01NTg1LDE0ICs2MDA0LDE5IEBACiAgICAgICAgICAgZWxzZQogCSAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KIAkgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotCSAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorCSAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQogCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKIAkgICAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKIAkgICAgIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgogCSAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1iZXJub3RvaycKIAkgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tYmVyb2snCi0JICAgICMgRXhwb3J0ZWQgc3ltYm9scyBjYW4gYmUgcHVsbGVkIGludG8gc2hhcmVkIG9iamVjdHMgZnJvbSBhcmNoaXZlcwotCSAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyRjb252ZW5pZW5jZScKKwkgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorCSAgICAgICMgV2Ugb25seSB1c2UgdGhpcyBjb2RlIGZvciBHTlUgbGRzIHRoYXQgc3VwcG9ydCAtLXdob2xlLWFyY2hpdmUuCisJICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgICAgZWxzZQorCSAgICAgICMgRXhwb3J0ZWQgc3ltYm9scyBjYW4gYmUgcHVsbGVkIGludG8gc2hhcmVkIG9iamVjdHMgZnJvbSBhcmNoaXZlcworCSAgICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJGNvbnZlbmllbmNlJworCSAgICBmaQogCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9eWVzCiAJICAgICMgVGhpcyBpcyBzaW1pbGFyIHRvIGhvdyBBSVggdHJhZGl0aW9uYWxseSBidWlsZHMgaXRzIHNoYXJlZAogCSAgICAjIGxpYnJhcmllcy4KQEAgLTU2MjIsMjggKzYwNDYsNzUgQEAKICAgICAgICAgOzsKIAogICAgICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAotICAgICAgICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJwotICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSAgICAgICAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubwotICAgICAgICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKwljYXNlICRHWFgsJGNjX2Jhc2VuYW1lIGluCisJLGNsKiB8IG5vLGNsKikKKwkgICMgTmF0aXZlIE1TVkMKKwkgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKwkgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nICcKKwkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorCSAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT15ZXMKKwkgIF9MVF9UQUdWQVIoZmlsZV9saXN0X3NwZWMsICQxKT0nQCcKKwkgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisJICBsaWJleHQ9bGliCisJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKwkgIHNocmV4dF9jbWRzPSIuZGxsIgorCSAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKwkgICAgICAkU0VEIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKwkgICAgZWxzZQorCSAgICAgICRTRUQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworCSAgICBmaX4KKwkgICAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorCSAgICBsaW5rbmFtZXM9JworCSAgIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorCSAgIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKKwkgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworCSAgIyBEb24ndCB1c2UgcmFubGliCisJICBfTFRfVEFHVkFSKG9sZF9wb3N0aW5zdGFsbF9jbWRzLCAkMSk9J2NobW9kIDY0NCAkb2xkbGliJworCSAgX0xUX1RBR1ZBUihwb3N0bGlua19jbWRzLCAkMSk9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKwkgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKwkgICAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorCSAgICAgICouZXhlfCouRVhFKSA7OworCSAgICAgICopCisJCWx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKwkJbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKwkJOzsKKwkgICAgZXNhY34KKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRsdF9vdXRwdXRmaWxlIn4KKwkgICAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKwkgICAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworCSAgICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworCSAgICBmaScKKwkgIDs7CisJKikKKwkgICMgZysrCisJICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAorCSAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisJICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJworCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisJICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCisJICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKIAotICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotICAgICAgICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKLSAgICAgICAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgotICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotCSAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0gICAgICAgICAgZWxzZQotCSAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLQkgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLSAgICAgICAgICBmaX4KLSAgICAgICAgICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0gICAgICAgIGVsc2UKLSAgICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0gICAgICAgIGZpCi0gICAgICAgIDs7CisJICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKwkgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQorCSAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgorCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKwkgICAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisJICAgIGVsc2UKKwkgICAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKwkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworCSAgICBmaX4KKwkgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworCSAgZWxzZQorCSAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJICBmaQorCSAgOzsKKwllc2FjCisJOzsKICAgICAgIGRhcndpbiogfCByaGFwc29keSopCiAgICAgICAgIF9MVF9EQVJXSU5fTElOS0VSX0ZFQVRVUkVTKCQxKQogCTs7CkBAIC01Njg1LDYgKzYxNTYsMTEgQEAKICAgICAgIGdudSopCiAgICAgICAgIDs7CiAKKyAgICAgIGhhaWt1KikKKyAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisgICAgICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcworICAgICAgICA7OworCiAgICAgICBocHV4OSopCiAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfStiICR7d2x9JGxpYmRpcicKICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgpAQCAtNTcwOSwxMSArNjE4NSwxMSBAQAogICAgICAgICAgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KICAgICAgICAgICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKICAgICAgICAgICAgICMgZGVwZW5kZW5jaWVzLgotICAgICAgICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8ICRFR1JFUCAiXC1MImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyAkRUNITyAiWCRsaXN0IiB8ICRYc2VkJworICAgICAgICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8ICRFR1JFUCAiXC1MImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICIkbGlzdCInCiAgICAgICAgICAgICA7OwogICAgICAgICAgICopCiAgICAgICAgICAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotICAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKICAgICAgICAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwpAQCAtNTc3NCw3ICs2MjUwLDcgQEAKIAkgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KIAkgICAgIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQogCSAgICAjIGRlcGVuZGVuY2llcy4KLQkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8ICRHUkVQICJcLUwiYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7ICRFQ0hPICJYJGxpc3QiIHwgJFhzZWQnCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gKCRDQyAtYiAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSkgfCAkR1JFUCAiXC1MImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICIkbGlzdCInCiAJICAgIDs7CiAgICAgICAgICAgKikKIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KQEAgLTU3ODQsMTAgKzYyNjAsMTAgQEAKIAkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCiAJICAgICAgICAgICAgOzsKIAkgICAgICAgICAgaWE2NCopCi0JICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCiAJICAgICAgICAgICAgOzsKIAkgICAgICAgICAgKikKLQkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKwkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCiAJICAgICAgICAgICAgOzsKIAkgICAgICAgIGVzYWMKIAkgICAgICBmaQpAQCAtNTgxNyw3ICs2MjkzLDcgQEAKICAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KICAgICAgICAgICBDQyopCiAJICAgICMgU0dJIEMrKwotCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtYWxsIC1tdWx0aWdvdCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1hbGwgLW11bHRpZ290ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCiAJICAgICMgQXJjaGl2ZXMgY29udGFpbmluZyBDKysgb2JqZWN0IGZpbGVzIG11c3QgYmUgY3JlYXRlZCB1c2luZwogCSAgICAjICJDQyAtYXIiLCB3aGVyZSAiQ0MiIGlzIHRoZSBJUklYIEMrKyBjb21waWxlci4gIFRoaXMgaXMKQEAgLTU4MjgsOSArNjMwNCw5IEBACiAgICAgICAgICAgKikKIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KIAkgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCSAgICAgIGVsc2UKLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgIC1vICRsaWInCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAtbyAkbGliJwogCSAgICAgIGZpCiAJICAgIGZpCiAJICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwpAQCAtNTg0MSw3ICs2MzE3LDcgQEAKICAgICAgICAgX0xUX1RBR1ZBUihpbmhlcml0X3JwYXRoLCAkMSk9eWVzCiAgICAgICAgIDs7CiAKLSAgICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUpCisgICAgICBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCiAgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCiAgICAgICAgICAgS0NDKikKIAkgICAgIyBLdWNrIGFuZCBBc3NvY2lhdGVzLCBJbmMuIChLQUkpIEMrKyBDb21waWxlcgpAQCAtNTg1OSw3ICs2MzM1LDcgQEAKIAkgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KIAkgICAgIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQogCSAgICAjIGRlcGVuZGVuY2llcy4KLQkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IC1vIGxpYmNvbmZ0ZXN0JHNoYXJlZF9leHQgMj4mMSB8ICRHUkVQICJsZCJgOyBybSAtZiBsaWJjb25mdGVzdCRzaGFyZWRfZXh0OyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgJEVDSE8gIlgkbGlzdCIgfCAkWHNlZCcKKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IC1vIGxpYmNvbmZ0ZXN0JHNoYXJlZF9leHQgMj4mMSB8ICRHUkVQICJsZCJgOyBybSAtZiBsaWJjb25mdGVzdCRzaGFyZWRfZXh0OyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiJGxpc3QiJwogCiAJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCwkbGliZGlyJwogCSAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCkBAIC01ODk2LDI2ICs2MzcyLDI2IEBACiAgICAgICAgICAgcGdDQyogfCBwZ2NwcCopCiAgICAgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIEMrKyBjb21waWxlcgogCSAgICBjYXNlIGAkQ0MgLVZgIGluCi0JICAgICpwZ0NDXCBbWzEtNV1dKiB8ICpwZ2NwcFwgW1sxLTVdXSopCisJICAgICpwZ0NDXCBbWzEtNV1dLiogfCAqcGdjcHBcIFtbMS01XV0uKikKIAkgICAgICBfTFRfVEFHVkFSKHByZWxpbmtfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgogCQlybSAtcmYgJHRwbGRpcn4KIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2JqcyAkbGlib2JqcyAkY29tcGlsZV9kZXBsaWJzfgotCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCInCisJCWNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCInCiAJICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CiAJCXJtIC1yZiAkdHBsZGlyfgogCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvbGRvYmpzJG9sZF9kZXBsaWJzfgotCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgfgorCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYH4KIAkJJFJBTkxJQiAkb2xkbGliJwogCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CiAJCXJtIC1yZiAkdHBsZGlyfgogCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KLQkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCiAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CiAJCXJtIC1yZiAkdHBsZGlyfgogCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KLQkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogCSAgICAgIDs7Ci0JICAgICopICMgVmVyc2lvbiA2IHdpbGwgdXNlIHdlYWsgc3ltYm9scworCSAgICAqKSAjIFZlcnNpb24gNiBhbmQgYWJvdmUgdXNlIHdlYWsgc3ltYm9scwogCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJwogCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogCSAgICAgIDs7CkBAIC01OTIzLDcgKzYzOTksNyBAQAogCiAJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tcnBhdGggJHt3bH0kbGliZGlyJwogCSAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCi0JICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgJEVDSE8gXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJwogICAgICAgICAgICAgOzsKIAkgIGN4eCopCiAJICAgICMgQ29tcGFxIEMrKwpAQCAtNTk0Miw5ICs2NDE4LDkgQEAKIAkgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KIAkgICAgIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQogCSAgICAjIGRlcGVuZGVuY2llcy4KLQkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJsZCJgOyB0ZW1wbGlzdD1gJEVDSE8gIlgkdGVtcGxpc3QiIHwgJFhzZWQgLWUgInMvXCheLipsZC4qXClcKCAuKmxkIC4qJFwpL1wxLyJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgJEVDSE8gIlgkbGlzdCIgfCAkWHNlZCcKKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJsZCJgOyB0ZW1wbGlzdD1gZnVuY19lY2hvX2FsbCAiJHRlbXBsaXN0IiB8ICRTRUQgInMvXCheLipsZC4qXClcKCAuKmxkIC4qJFwpL1wxLyJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiWCRsaXN0IiB8ICRYc2VkJwogCSAgICA7OwotCSAgeGwqKQorCSAgeGwqIHwgbXBpeGwqIHwgYmd4bCopCiAJICAgICMgSUJNIFhMIDguMCBvbiBQUEMsIHdpdGggR05VIGxkCiAJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCiAJICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKQEAgLTU5NjQsMTMgKzY0NDAsMTMgQEAKIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCiAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IC1oJHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzJwogCSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCi0JICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBuZXdfY29udmVuaWVuY2U9OyBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0IC16IFwiJGNvbnZcIiB8fCBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRFQ0hPIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgICAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYG5ld19jb252ZW5pZW5jZT07IGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgLXogXCIkY29udlwiIHx8IG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCiAJICAgICAgX0xUX1RBR1ZBUihjb21waWxlcl9uZWVkc19vYmplY3QsICQxKT15ZXMKIAogCSAgICAgICMgTm90IHN1cmUgd2hldGhlciBzb21ldGhpbmcgYmFzZWQgb24KIAkgICAgICAjICRDQyAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgLW8gbGliY29uZnRlc3Qkc2hhcmVkX2V4dCAyPiYxCiAJICAgICAgIyB3b3VsZCBiZSBiZXR0ZXIuCi0JICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J2VjaG8nCisJICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J2Z1bmNfZWNob19hbGwnCiAKIAkgICAgICAjIEFyY2hpdmVzIGNvbnRhaW5pbmcgQysrIG9iamVjdCBmaWxlcyBtdXN0IGJlIGNyZWF0ZWQgdXNpbmcKIAkgICAgICAjICJDQyAteGFyIiwgd2hlcmUgIkNDIiBpcyB0aGUgU3VuIEMrKyBjb21waWxlci4gIFRoaXMgaXMKQEAgLTYwMzksNyArNjUxNSw3IEBACiAJICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCiAJICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0iJHdsYXJjIictLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgJyIkd2xhcmMiJy0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIGZpCi0JICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD1lY2hvCisJICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD1mdW5jX2VjaG9fYWxsCiAJZWxzZQogCSAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwogCWZpCkBAIC02MDc0LDE1ICs2NTUwLDE1IEBACiAJICAgIGNhc2UgJGhvc3QgaW4KIAkgICAgICBvc2YzKikKIAkgICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAkgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCiAJCTs7CiAJICAgICAgKikKIAkgICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdmb3IgaSBpbiBgY2F0ICRleHBvcnRfc3ltYm9sc2A7IGRvIHByaW50ZiAiJXMgJXNcXG4iIC1leHBvcnRlZF9zeW1ib2wgIlwkaSIgPj4gJGxpYi5leHA7IGRvbmV+CiAJICAgICAgICAgIGVjaG8gIi1oaWRkZW4iPj4gJGxpYi5leHB+Ci0JICAgICAgICAgICRDQyAtc2hhcmVkJGFsbG93X3VuZGVmaW5lZF9mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgJHt3bH0taW5wdXQgJHt3bH0kbGliLmV4cCAgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYn4KKwkgICAgICAgICAgJENDIC1zaGFyZWQkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSAke3dsfS1pbnB1dCAke3dsfSRsaWIuZXhwICBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGlifgogCSAgICAgICAgICAkUk0gJGxpYi5leHAnCiAJICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLXJwYXRoICRsaWJkaXInCiAJCTs7CkBAIC02MDk4LDE3ICs2NTc0LDE3IEBACiAJICAgICMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCiAJICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKIAkgICAgIyBkZXBlbmRlbmNpZXMuCi0JICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAibGQiIHwgJEdSRVAgLXYgImxkOiJgOyB0ZW1wbGlzdD1gJEVDSE8gIlgkdGVtcGxpc3QiIHwgJFhzZWQgLWUgInMvXCheLipsZC4qXClcKCAuKmxkLiokXCkvXDEvImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyAkRUNITyAiWCRsaXN0IiB8ICRYc2VkJworCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgImxkIiB8ICRHUkVQIC12ICJsZDoiYDsgdGVtcGxpc3Q9YGZ1bmNfZWNob19hbGwgIiR0ZW1wbGlzdCIgfCAkU0VEICJzL1woXi4qbGQuKlwpXCggLipsZC4qJFwpL1wxLyJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiJGxpc3QiJwogCSAgICA7OwogCSAgKikKIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCiAJICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKIAkgICAgICBjYXNlICRob3N0IGluCiAJICAgICAgICBvc2YzKikKLQkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCQkgIDs7CiAJICAgICAgICAqKQotCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCQkgIDs7CiAJICAgICAgZXNhYwogCkBAIC02MTE4LDcgKzY1OTQsNyBAQAogCSAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKIAkgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KIAkgICAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KLQkgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAiXC1MIicKKwkgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAtdiAiXkNvbmZpZ3VyZWQgd2l0aDoiIHwgJEdSRVAgIlwtTCInCiAKIAkgICAgZWxzZQogCSAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydApAQCAtNjE1NCw3ICs2NjMwLDcgQEAKIAogICAgICAgc29sYXJpcyopCiAgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgICAgICAgQ0MqKQorICAgICAgICAgIENDKiB8IHN1bkNDKikKIAkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKwogICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywkMSk9eWVzCiAJICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC16ZGVmcycKQEAgLTYxNzUsNyArNjY1MSw3IEBACiAJICAgIGVzYWMKIAkgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCiAKLQkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J2VjaG8nCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSdmdW5jX2VjaG9fYWxsJwogCiAJICAgICMgQXJjaGl2ZXMgY29udGFpbmluZyBDKysgb2JqZWN0IGZpbGVzIG11c3QgYmUgY3JlYXRlZCB1c2luZwogCSAgICAjICJDQyAteGFyIiwgd2hlcmUgIkNDIiBpcyB0aGUgU3VuIEMrKyBjb21waWxlci4gIFRoaXMgaXMKQEAgLTYxOTUsMTQgKzY2NzEsMTQgQEAKIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCiAJICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0teiAke3dsfWRlZnMnCiAJICAgICAgaWYgJENDIC0tdmVyc2lvbiB8ICRHUkVQIC12ICdeMlwuNycgPiAvZGV2L251bGw7IHRoZW4KLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKIAkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0JCSAgJENDIC1zaGFyZWQgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworCQkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCiAKIAkgICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKIAkgICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgogCSAgICAgICAgIyBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCi0JICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAiXC1MIicKKwkgICAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQIC12ICJeQ29uZmlndXJlZCB3aXRoOiIgfCAkR1JFUCAiXC1MIicKIAkgICAgICBlbHNlCiAJICAgICAgICAjIGcrKyAyLjcgYXBwZWFycyB0byByZXF1aXJlIGAtRycgTk9UIGAtc2hhcmVkJyBvbiB0aGlzCiAJICAgICAgICAjIHBsYXRmb3JtLgpAQCAtNjIxMyw3ICs2Njg5LDcgQEAKIAkgICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKIAkgICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgogCSAgICAgICAgIyBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCi0JICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1HICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgIlwtTCInCisJICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1HICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgLXYgIl5Db25maWd1cmVkIHdpdGg6IiB8ICRHUkVQICJcLUwiJwogCSAgICAgIGZpCiAKIAkgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tUiAkd2wkbGliZGlyJwpAQCAtNjI2Nyw2ICs2NzQzLDEwIEBACiAgICAgICAgICAgQ0MqKQogCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1HICR7d2x9LUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtVHByZWxpbmtfb2JqZWN0cyAkb2xkb2Jqc34KKwkgICAgICAnIiRfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKSIKKwkgICAgX0xUX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpPSckQ0MgLVRwcmVsaW5rX29iamVjdHMgJHJlbG9hZF9vYmpzfgorCSAgICAgICciJF9MVF9UQUdWQVIocmVsb2FkX2NtZHMsICQxKSIKIAkgICAgOzsKIAkgICopCiAJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKQEAgLTYzMjIsNiArNjgwMiw3IEBACiAgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgogCiAgIENDPSRsdF9zYXZlX0NDCisgIENGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKICAgTERDWFg9JExECiAgIExEPSRsdF9zYXZlX0xECiAgIEdDQz0kbHRfc2F2ZV9HQ0MKQEAgLTYzMzYsNiArNjgxNywyOSBAQAogXSkjIF9MVF9MQU5HX0NYWF9DT05GSUcKIAogCisjIF9MVF9GVU5DX1NUUklQTkFNRV9DTkYKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBmdW5jX3N0cmlwbmFtZV9jbmYgcHJlZml4IHN1ZmZpeCBuYW1lCisjIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKyMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorIworIyBUaGlzIGZ1bmN0aW9uIGlzIGlkZW50aWNhbCB0byB0aGUgKG5vbi1YU0kpIHZlcnNpb24gb2YgZnVuY19zdHJpcG5hbWUsCisjIGV4Y2VwdCB0aGlzIG9uZSBjYW4gYmUgdXNlZCBieSBtNCBjb2RlIHRoYXQgbWF5IGJlIGV4ZWN1dGVkIGJ5IGNvbmZpZ3VyZSwKKyMgcmF0aGVyIHRoYW4gdGhlIGxpYnRvb2wgc2NyaXB0LgorbTRfZGVmdW4oW19MVF9GVU5DX1NUUklQTkFNRV9DTkZdLFtkbmwKK0FDX1JFUVVJUkUoW19MVF9ERUNMX1NFRF0pCitBQ19SRVFVSVJFKFtfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSF0pCitmdW5jX3N0cmlwbmFtZV9jbmYgKCkKK3sKKyAgY2FzZSAkezJ9IGluCisgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CisgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKyAgZXNhYworfSAjIGZ1bmNfc3RyaXBuYW1lX2NuZgorXSkjIF9MVF9GVU5DX1NUUklQTkFNRV9DTkYKKwogIyBfTFRfU1lTX0hJRERFTl9MSUJERVBTKFtUQUdOQU1FXSkKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEZpZ3VyZSBvdXQgImhpZGRlbiIgbGlicmFyeSBkZXBlbmRlbmNpZXMgZnJvbSB2ZXJib3NlCkBAIC02MzQ0LDYgKzY4NDgsNyBAQAogIyBvYmplY3RzLCBsaWJyYXJpZXMgYW5kIGxpYnJhcnkgZmxhZ3MuCiBtNF9kZWZ1bihbX0xUX1NZU19ISURERU5fTElCREVQU10sCiBbbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCitBQ19SRVFVSVJFKFtfTFRfRlVOQ19TVFJJUE5BTUVfQ05GXSlkbmwKICMgRGVwZW5kZW5jaWVzIHRvIHBsYWNlIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIG9iamVjdCBiZWluZyBsaW5rZWQ6CiBfTFRfVEFHVkFSKHByZWRlcF9vYmplY3RzLCAkMSk9CiBfTFRfVEFHVkFSKHBvc3RkZXBfb2JqZWN0cywgJDEpPQpAQCAtNjM5NCw2ICs2ODk5LDEzIEBACiB9OwogX0xUX0VPRgogXSkKKworX2x0X2xpYmRlcHNfc2F2ZV9DRkxBR1M9JENGTEFHUworY2FzZSAiJENDICRDRkxBR1MgIiBpbiAjKAorKlwgLWZsdG8qXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby1sdG8iIDs7CisqXCAtZndob3ByKlwgKikgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8td2hvcHIiIDs7Citlc2FjCisKIGRubCBQYXJzZSB0aGUgY29tcGlsZXIgb3V0cHV0IGFuZCBleHRyYWN0IHRoZSBuZWNlc3NhcnkKIGRubCBvYmplY3RzLCBsaWJyYXJpZXMgYW5kIGxpYnJhcnkgZmxhZ3MuCiBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgpAQCAtNjQwNSw3ICs2OTE3LDcgQEAKICAgcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZT1ubwogCiAgIGZvciBwIGluIGBldmFsICIkb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQiYDsgZG8KLSAgICBjYXNlICRwIGluCisgICAgY2FzZSAke3ByZXZ9JHtwfSBpbgogCiAgICAgLUwqIHwgLVIqIHwgLWwqKQogICAgICAgICMgU29tZSBjb21waWxlcnMgcGxhY2Ugc3BhY2UgYmV0d2VlbiAiLXtMLFJ9IiBhbmQgdGhlIHBhdGguCkBAIC02NDE0LDEzICs2OTI2LDIyIEBACiAgICAgICAgICAgdGVzdCAkcCA9ICItUiI7IHRoZW4KIAkgcHJldj0kcAogCSBjb250aW51ZQotICAgICAgIGVsc2UKLQkgcHJldj0KICAgICAgICBmaQogCisgICAgICAgIyBFeHBhbmQgdGhlIHN5c3Jvb3QgdG8gZWFzZSBleHRyYWN0aW5nIHRoZSBkaXJlY3RvcmllcyBsYXRlci4KKyAgICAgICBpZiB0ZXN0IC16ICIkcHJldiI7IHRoZW4KKyAgICAgICAgIGNhc2UgJHAgaW4KKyAgICAgICAgIC1MKikgZnVuY19zdHJpcG5hbWVfY25mICctTCcgJycgIiRwIjsgcHJldj0tTDsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisgICAgICAgICAtUiopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLVInICcnICIkcCI7IHByZXY9LVI7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworICAgICAgICAgLWwqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1sJyAnJyAiJHAiOyBwcmV2PS1sOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKyAgICAgICAgIGVzYWMKKyAgICAgICBmaQorICAgICAgIGNhc2UgJHAgaW4KKyAgICAgICA9KikgZnVuY19zdHJpcG5hbWVfY25mICc9JyAnJyAiJHAiOyBwPSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworICAgICAgIGVzYWMKICAgICAgICBpZiB0ZXN0ICIkcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZSIgPSBubzsgdGhlbgotCSBjYXNlICRwIGluCi0JIC1MKiB8IC1SKikKKwkgY2FzZSAke3ByZXZ9IGluCisJIC1MIHwgLVIpCiAJICAgIyBJbnRlcm5hbCBjb21waWxlciBsaWJyYXJ5IHBhdGhzIHNob3VsZCBjb21lIGFmdGVyIHRob3NlCiAJICAgIyBwcm92aWRlZCB0aGUgdXNlci4gIFRoZSBwb3N0ZGVwcyBhbHJlYWR5IGNvbWUgYWZ0ZXIgdGhlCiAJICAgIyB1c2VyIHN1cHBsaWVkIGxpYnMgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBwcm9jZXNzIHRoZW0uCkBAIC02NDQwLDggKzY5NjEsMTAgQEAKIAkgICBfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSk9IiR7X0xUX1RBR1ZBUihwb3N0ZGVwcywgJDEpfSAke3ByZXZ9JHtwfSIKIAkgZmkKICAgICAgICBmaQorICAgICAgIHByZXY9CiAgICAgICAgOzsKIAorICAgICoubHRvLiRvYmpleHQpIDs7ICMgSWdub3JlIEdDQyBMVE8gb2JqZWN0cwogICAgICouJG9iamV4dCkKICAgICAgICAjIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSB0ZXN0IG9iamVjdCBmaWxlIG9ubHkgc2hvd3MgdXAKICAgICAgICAjIG9uY2UgaW4gdGhlIGNvbXBpbGVyIG91dHB1dC4KQEAgLTY0NzcsNiArNzAwMCw3IEBACiBmaQogCiAkUk0gLWYgY29uZmVzdC4kb2JqZXh0CitDRkxBR1M9JF9sdF9saWJkZXBzX3NhdmVfQ0ZMQUdTCiAKICMgUE9SVE1FOiBvdmVycmlkZSBhYm92ZSB0ZXN0IG9uIHN5c3RlbXMgd2hlcmUgaXQgaXMgYnJva2VuCiBtNF9pZihbJDFdLCBbQ1hYXSwKQEAgLTY1MTMsNyArNzAzNyw3IEBACiAKIHNvbGFyaXMqKQogICBjYXNlICRjY19iYXNlbmFtZSBpbgotICBDQyopCisgIENDKiB8IHN1bkNDKikKICAgICAjIFRoZSBtb3JlIHN0YW5kYXJkcy1jb25mb3JtaW5nIHN0bHBvcnQ0IGxpYnJhcnkgaXMKICAgICAjIGluY29tcGF0aWJsZSB3aXRoIHRoZSBDc3RkIGxpYnJhcnkuIEF2b2lkIHNwZWNpZnlpbmcKICAgICAjIGl0IGlmIGl0J3MgaW4gQ1hYRkxBR1MuIElnbm9yZSBsaWJDcnVuIGFzCkBAIC02NTU3LDMyICs3MDgxLDE2IEBACiBdKSMgX0xUX1NZU19ISURERU5fTElCREVQUwogCiAKLSMgX0xUX1BST0dfRjc3Ci0jIC0tLS0tLS0tLS0tLQotIyBTaW5jZSBBQ19QUk9HX0Y3NyBpcyBicm9rZW4sIGluIHRoYXQgaXQgcmV0dXJucyB0aGUgZW1wdHkgc3RyaW5nCi0jIGlmIHRoZXJlIGlzIG5vIGZvcnRyYW4gY29tcGlsZXIsIHdlIGhhdmUgb3VyIG93biB2ZXJzaW9uIGhlcmUuCi1tNF9kZWZ1bihbX0xUX1BST0dfRjc3XSwKLVsKLXB1c2hkZWYoW0FDX01TR19FUlJPUl0sIFtfbHRfZGlzYWJsZV9GNzc9eWVzXSkKLUFDX1BST0dfRjc3Ci1pZiB0ZXN0IC16ICIkRjc3IiB8fCB0ZXN0ICJYJEY3NyIgPSAiWG5vIjsgdGhlbgotICBfbHRfZGlzYWJsZV9GNzc9eWVzCi1maQotcG9wZGVmKFtBQ19NU0dfRVJST1JdKQotXSkjIF9MVF9QUk9HX0Y3NwotCi1kbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6Ci1kbmwgQUNfREVGVU4oW19MVF9QUk9HX0Y3N10sIFtdKQotCi0KICMgX0xUX0xBTkdfRjc3X0NPTkZJRyhbVEFHXSkKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgRW5zdXJlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZvciBhIEZvcnRyYW4gNzcgY29tcGlsZXIgYXJlCiAjIHN1aXRhYmx5IGRlZmluZWQuICBUaGVzZSB2YXJpYWJsZXMgYXJlIHN1YnNlcXVlbnRseSB1c2VkIGJ5IF9MVF9DT05GSUcKICMgdG8gd3JpdGUgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gYGxpYnRvb2wnLgogbTRfZGVmdW4oW19MVF9MQU5HX0Y3N19DT05GSUddLAotW0FDX1JFUVVJUkUoW19MVF9QUk9HX0Y3N10pZG5sCi1BQ19MQU5HX1BVU0goRm9ydHJhbiA3NykKK1tBQ19MQU5HX1BVU0goRm9ydHJhbiA3NykKK2lmIHRlc3QgLXogIiRGNzciIHx8IHRlc3QgIlgkRjc3IiA9ICJYbm8iOyB0aGVuCisgIF9sdF9kaXNhYmxlX0Y3Nz15ZXMKK2ZpCiAKIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubwogX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQpAQCAtNjYwMSw2ICs3MTA5LDggQEAKIF9MVF9UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9CiBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT11bmtub3duCiBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0kb2xkX2FyY2hpdmVfY21kcworX0xUX1RBR1ZBUihyZWxvYWRfZmxhZywgJDEpPSRyZWxvYWRfZmxhZworX0xUX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpPSRyZWxvYWRfY21kcwogX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPQogX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQogX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9bm8KQEAgLTY2NDAsNyArNzE1MCw5IEBACiAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCiAgIGx0X3NhdmVfQ0M9IiRDQyIKICAgbHRfc2F2ZV9HQ0M9JEdDQworICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCiAgIENDPSR7Rjc3LSJmNzcifQorICBDRkxBR1M9JEZGTEFHUwogICBjb21waWxlcj0kQ0MKICAgX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQwogICBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCkBAIC02Njk0LDM4ICs3MjA2LDI0IEBACiAKICAgR0NDPSRsdF9zYXZlX0dDQwogICBDQz0iJGx0X3NhdmVfQ0MiCisgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgogZmkgIyB0ZXN0ICIkX2x0X2Rpc2FibGVfRjc3IiAhPSB5ZXMKIAogQUNfTEFOR19QT1AKIF0pIyBfTFRfTEFOR19GNzdfQ09ORklHCiAKIAotIyBfTFRfUFJPR19GQwotIyAtLS0tLS0tLS0tLQotIyBTaW5jZSBBQ19QUk9HX0ZDIGlzIGJyb2tlbiwgaW4gdGhhdCBpdCByZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcKLSMgaWYgdGhlcmUgaXMgbm8gZm9ydHJhbiBjb21waWxlciwgd2UgaGF2ZSBvdXIgb3duIHZlcnNpb24gaGVyZS4KLW00X2RlZnVuKFtfTFRfUFJPR19GQ10sCi1bCi1wdXNoZGVmKFtBQ19NU0dfRVJST1JdLCBbX2x0X2Rpc2FibGVfRkM9eWVzXSkKLUFDX1BST0dfRkMKLWlmIHRlc3QgLXogIiRGQyIgfHwgdGVzdCAiWCRGQyIgPSAiWG5vIjsgdGhlbgotICBfbHRfZGlzYWJsZV9GQz15ZXMKLWZpCi1wb3BkZWYoW0FDX01TR19FUlJPUl0pCi1dKSMgX0xUX1BST0dfRkMKLQotZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgotZG5sIEFDX0RFRlVOKFtfTFRfUFJPR19GQ10sIFtdKQotCi0KICMgX0xUX0xBTkdfRkNfQ09ORklHKFtUQUddKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgYSBGb3J0cmFuIGNvbXBpbGVyIGFyZQogIyBzdWl0YWJseSBkZWZpbmVkLiAgVGhlc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieSBfTFRfQ09ORklHCiAjIHRvIHdyaXRlIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KIG00X2RlZnVuKFtfTFRfTEFOR19GQ19DT05GSUddLAotW0FDX1JFUVVJUkUoW19MVF9QUk9HX0ZDXSlkbmwKLUFDX0xBTkdfUFVTSChGb3J0cmFuKQorW0FDX0xBTkdfUFVTSChGb3J0cmFuKQorCitpZiB0ZXN0IC16ICIkRkMiIHx8IHRlc3QgIlgkRkMiID0gIlhubyI7IHRoZW4KKyAgX2x0X2Rpc2FibGVfRkM9eWVzCitmaQogCiBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KQEAgLTY3NDQsNiArNzI0Miw4IEBACiBfTFRfVEFHVkFSKG1vZHVsZV9leHBzeW1fY21kcywgJDEpPQogX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9dW5rbm93bgogX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JG9sZF9hcmNoaXZlX2NtZHMKK19MVF9UQUdWQVIocmVsb2FkX2ZsYWcsICQxKT0kcmVsb2FkX2ZsYWcKK19MVF9UQUdWQVIocmVsb2FkX2NtZHMsICQxKT0kcmVsb2FkX2NtZHMKIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0KIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0KIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPW5vCkBAIC02NzgzLDcgKzcyODMsOSBAQAogICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgogICBsdF9zYXZlX0NDPSIkQ0MiCiAgIGx0X3NhdmVfR0NDPSRHQ0MKKyAgbHRfc2F2ZV9DRkxBR1M9JENGTEFHUwogICBDQz0ke0ZDLSJmOTUifQorICBDRkxBR1M9JEZDRkxBR1MKICAgY29tcGlsZXI9JENDCiAgIEdDQz0kYWNfY3ZfZmNfY29tcGlsZXJfZ251CiAKQEAgLTY4MzksNyArNzM0MSw4IEBACiAgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgogCiAgIEdDQz0kbHRfc2F2ZV9HQ0MKLSAgQ0M9IiRsdF9zYXZlX0NDIgorICBDQz0kbHRfc2F2ZV9DQworICBDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCiBmaSAjIHRlc3QgIiRfbHRfZGlzYWJsZV9GQyIgIT0geWVzCiAKIEFDX0xBTkdfUE9QCkBAIC02ODc2LDEwICs3Mzc5LDEyIEBACiBfTFRfTElOS0VSX0JPSUxFUlBMQVRFCiAKICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCi1sdF9zYXZlX0NDPSIkQ0MiCitsdF9zYXZlX0NDPSRDQworbHRfc2F2ZV9DRkxBR1M9JENGTEFHUwogbHRfc2F2ZV9HQ0M9JEdDQwogR0NDPXllcwogQ0M9JHtHQ0otImdjaiJ9CitDRkxBR1M9JEdDSkZMQUdTCiBjb21waWxlcj0kQ0MKIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKIF9MVF9UQUdWQVIoTEQsICQxKT0iJExEIgpAQCAtNjg4OSw2ICs3Mzk0LDggQEAKIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubwogCiBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0kb2xkX2FyY2hpdmVfY21kcworX0xUX1RBR1ZBUihyZWxvYWRfZmxhZywgJDEpPSRyZWxvYWRfZmxhZworX0xUX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpPSRyZWxvYWRfY21kcwogCiAjIyBDQVZFQVQgRU1QVE9SOgogIyMgVGhlcmUgaXMgbm8gZW5jYXBzdWxhdGlvbiB3aXRoaW4gdGhlIGZvbGxvd2luZyBtYWNyb3MsIGRvIG5vdCBjaGFuZ2UKQEAgLTY5MDgsNyArNzQxNSw4IEBACiBBQ19MQU5HX1JFU1RPUkUKIAogR0NDPSRsdF9zYXZlX0dDQwotQ0M9IiRsdF9zYXZlX0NDIgorQ0M9JGx0X3NhdmVfQ0MKK0NGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKIF0pIyBfTFRfTEFOR19HQ0pfQ09ORklHCiAKIApAQCAtNjk0Myw5ICs3NDUxLDExIEBACiAKICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCiBsdF9zYXZlX0NDPSIkQ0MiCitsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCiBsdF9zYXZlX0dDQz0kR0NDCiBHQ0M9CiBDQz0ke1JDLSJ3aW5kcmVzIn0KK0NGTEFHUz0KIGNvbXBpbGVyPSRDQwogX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQwogX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQpAQCAtNjk1OCw3ICs3NDY4LDggQEAKIAogR0NDPSRsdF9zYXZlX0dDQwogQUNfTEFOR19SRVNUT1JFCi1DQz0iJGx0X3NhdmVfQ0MiCitDQz0kbHRfc2F2ZV9DQworQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUwogXSkjIF9MVF9MQU5HX1JDX0NPTkZJRwogCiAKQEAgLTcwMTcsNiArNzUyOCwxNSBAQAogQUNfU1VCU1QoW09CSkRVTVBdKQogXSkKIAorIyBfTFRfREVDTF9ETExUT09MCisjIC0tLS0tLS0tLS0tLS0tLS0KKyMgRW5zdXJlIERMTFRPT0wgdmFyaWFibGUgaXMgc2V0LgorbTRfZGVmdW4oW19MVF9ERUNMX0RMTFRPT0xdLAorW0FDX0NIRUNLX1RPT0woRExMVE9PTCwgZGxsdG9vbCwgZmFsc2UpCit0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCitfTFRfREVDTChbXSwgW0RMTFRPT0xdLCBbMV0sIFtETEwgY3JlYXRpb24gcHJvZ3JhbV0pCitBQ19TVUJTVChbRExMVE9PTF0pCitdKQogCiAjIF9MVF9ERUNMX1NFRAogIyAtLS0tLS0tLS0tLS0KQEAgLTcxMTAsOCArNzYzMCw4IEBACiAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwogeHNpX3NoZWxsPW5vCiAoIF9sdF9kdW1teT0iYS9iL2MiCi0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0gICAgICA9IGMsYS9iLCwgXAorICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorICAgICAgPSBjLGEvYixiL2MsIFwKICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCiAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKICAgJiYgeHNpX3NoZWxsPXllcwpAQCAtNzE1MCwyMDggKzc2NzAsMTYyIEBACiBdKSMgX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTCiAKIAotIyBfTFRfUFJPR19YU0lfU0hFTExGTlMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEJvdXJuZSBhbmQgWFNJIGNvbXBhdGlibGUgdmFyaWFudHMgb2Ygc29tZSB1c2VmdWwgc2hlbGwgZnVuY3Rpb25zLgotbTRfZGVmdW4oW19MVF9QUk9HX1hTSV9TSEVMTEZOU10sCi1bY2FzZSAkeHNpX3NoZWxsIGluCi0gIHllcykKLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotCi0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotZnVuY19kaXJuYW1lICgpCi17Ci0gIGNhc2UgJHsxfSBpbgotICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotICBlc2FjCi19Ci0KLSMgZnVuY19iYXNlbmFtZSBmaWxlCi1mdW5jX2Jhc2VuYW1lICgpCi17Ci0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLX0KLQotIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotIyBjYWxsOgotIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAotIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgotIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgotZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQotewotICBjYXNlICR7MX0gaW4KLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLSAgZXNhYwotICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi19Ci0KLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotZnVuY19zdHJpcG5hbWUgKCkKLXsKLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCi0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9Ci0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9Ci19Ci0KLSMgZnVuY19vcHRfc3BsaXQKLWZ1bmNfb3B0X3NwbGl0ICgpCi17Ci0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQotICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQotfQotCi0jIGZ1bmNfbG8ybyBvYmplY3QKLWZ1bmNfbG8ybyAoKQotewotICBjYXNlICR7MX0gaW4KLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OwotICBlc2FjCi19Ci0KLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi1mdW5jX3hmb3JtICgpCi17Ci0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KLX0KLQotIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotZnVuY19hcml0aCAoKQotewotICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJFsqXSApKQotfQotCi0jIGZ1bmNfbGVuIHN0cmluZwotIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotZnVuY19sZW4gKCkKLXsKLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9Ci19Ci0KLV9MVF9FT0YKLSAgICA7OwotICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotCi0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotZnVuY19kaXJuYW1lICgpCi17Ci0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJGRpcm5hbWUiYAotICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0gIGVsc2UKLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0gIGZpCi19Ci0KLSMgZnVuY19iYXNlbmFtZSBmaWxlCi1mdW5jX2Jhc2VuYW1lICgpCi17Ci0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRiYXNlbmFtZSJgCi19Ci0KLWRubCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lCi1kbmwgQSBwb3J0YWJsZSB2ZXJzaW9uIG9mIHRoaXMgZnVuY3Rpb24gaXMgYWxyZWFkeSBkZWZpbmVkIGluIGdlbmVyYWwubTRzaAotZG5sIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIGl0IGhlcmUuCi0KLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotZnVuY19zdHJpcG5hbWUgKCkKLXsKLSAgY2FzZSAkezJ9IGluCi0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezN9IiBcCi0gICAgICAgICAgIHwgJFhzZWQgLWUgInMlXiR7MX0lJSIgLWUgInMlXFxcXCR7Mn1cJCUlImA7OwotICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHszfSIgXAotICAgICAgICAgICB8ICRYc2VkIC1lICJzJV4kezF9JSUiIC1lICJzJSR7Mn1cJCUlImA7OwotICBlc2FjCi19Ci0KLSMgc2VkIHNjcmlwdHM6Ci1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bW149XV0qXCk9LiovXDEvO3EnCi1teV9zZWRfbG9uZ19hcmc9JzFzL14tW1tePV1dKj0vLycKLQotIyBmdW5jX29wdF9zcGxpdAotZnVuY19vcHRfc3BsaXQgKCkKLXsKLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRteV9zZWRfbG9uZ19vcHQiYAotICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJG15X3NlZF9sb25nX2FyZyJgCi19Ci0KLSMgZnVuY19sbzJvIG9iamVjdAotZnVuY19sbzJvICgpCi17Ci0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJGxvMm8iYAotfQotCi0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotZnVuY194Zm9ybSAoKQotewotICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICdzL1wuW1teLl1dKiQvLmxvLydgCi19Ci0KLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLWZ1bmNfYXJpdGggKCkKLXsKLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRbQF0iYAotfQotCi0jIGZ1bmNfbGVuIHN0cmluZwotIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotZnVuY19sZW4gKCkKLXsKLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkWzFdIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCi19Ci0KLV9MVF9FT0YKLWVzYWMKLQotY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCi0gIHllcykKLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotCi0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi1mdW5jX2FwcGVuZCAoKQotewotICBldmFsICIkWzFdKz1cJFsyXSIKLX0KLV9MVF9FT0YKLSAgICA7OwotICAqKQotICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0KLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLWZ1bmNfYXBwZW5kICgpCi17Ci0gIGV2YWwgIiRbMV09XCQkWzFdXCRbMl0iCi19Ci0KLV9MVF9FT0YKLSAgICA7OwotICBlc2FjCisjIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UgKEZVTkNOQU1FLCBSRVBMQUNFTUVOVC1CT0RZKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgSW4gYCRjZmdmaWxlJywgbG9vayBmb3IgZnVuY3Rpb24gRlVOQ05BTUUgZGVsaW1pdGVkIGJ5IGBeRlVOQ05BTUUgKCkkJyBhbmQKKyMgJ159IEZVTkNOQU1FICcsIGFuZCByZXBsYWNlIGl0cyBib2R5IHdpdGggUkVQTEFDRU1FTlQtQk9EWS4KK200X2RlZnVuKFtfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFXSwKK1tkbmwgeworc2VkIC1lICcvXiQxICgpJC8sL159ICMgJDEgL2NcCiskMSAoKVwKK3tcCittNF9icGF0c3Vic3RzKFskMl0sIFskXSwgW1xcXSwgW15cKFsJIF1cKV0sIFtcXFwxXSkKK30gIyBFeHRlbmRlZC1zaGVsbCAkMSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCit0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgogXSkKKworCisjIF9MVF9QUk9HX1JFUExBQ0VfU0hFTExGTlMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBSZXBsYWNlIGV4aXN0aW5nIHBvcnRhYmxlIGltcGxlbWVudGF0aW9ucyBvZiBzZXZlcmFsIHNoZWxsIGZ1bmN0aW9ucyB3aXRoCisjIGVxdWl2YWxlbnQgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb25zIHdoZXJlIHRob3NlIGZlYXR1cmVzIGFyZSBhdmFpbGFibGUuLgorbTRfZGVmdW4oW19MVF9QUk9HX1JFUExBQ0VfU0hFTExGTlNdLAorW2lmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19kaXJuYW1lXSwgW2RubAorICAgIGNhc2UgJHsxfSBpbgorICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKyAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKyAgICBlc2FjXSkKKworICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2Jhc2VuYW1lXSwgW2RubAorICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJdKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWVdLCBbZG5sCisgICAgY2FzZSAkezF9IGluCisgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworICAgIGVzYWMKKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXSkKKworICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3N0cmlwbmFtZV0sIFtkbmwKKyAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCisgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgorICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9CisgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KKyAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifV0pCisKKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19zcGxpdF9sb25nX29wdF0sIFtkbmwKKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn0KKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XSkKKworICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3NwbGl0X3Nob3J0X29wdF0sIFtkbmwKKyAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fQorICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1dKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfbG8yb10sIFtkbmwKKyAgICBjYXNlICR7MX0gaW4KKyAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7CisgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKKyAgICBlc2FjXSkKKworICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3hmb3JtXSwgWyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXSkKKworICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2FyaXRoXSwgWyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJFsqXSApKV0pCisKKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19sZW5dLCBbICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfV0pCitmaQorCitpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYXBwZW5kXSwgWyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXSkKKworICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2FwcGVuZF9xdW90ZWRdLCBbZG5sCisgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSIKK2RubCBtNCBleHBhbnNpb24gdHVybnMgXFxcXCBpbnRvIFxcLCBhbmQgdGhlbiB0aGUgc2hlbGwgZXZhbCB0dXJucyB0aGF0IGludG8gXAorICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXSkKKworICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCisgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFtbYS16QS1aX11dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorZWxzZQorICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQorICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbW2EtekEtWl9dXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorZmkKKworaWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KKyAgQUNfTVNHX1dBUk4oW1VuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGVdKQorZmkKK10pCisKKyMgX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRGV0ZXJtaW5lIHdoaWNoIGZpbGUgbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9ucyBzaG91bGQgYmUgdXNlZCBieQorIyBmdW5jX3RvX2hvc3RfZmlsZSAoYW5kLCBpbXBsaWNpdGx5LCBieSBmdW5jX3RvX2hvc3RfcGF0aCkuICBUaGVzZSBhcmUgbmVlZGVkCisjIGZvciBjZXJ0YWluIGNyb3NzLWNvbXBpbGUgY29uZmlndXJhdGlvbnMgYW5kIG5hdGl2ZSBtaW5ndy4KK200X2RlZnVuKFtfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OU10sCitbQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAorQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0JVSUxEXSlkbmwKK0FDX01TR19DSEVDS0lORyhbaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0XSkKK0FDX0NBQ0hFX1ZBTChsdF9jdl90b19ob3N0X2ZpbGVfY21kLAorW2Nhc2UgJGhvc3QgaW4KKyAgKi0qLW1pbmd3KiApCisgICAgY2FzZSAkYnVpbGQgaW4KKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorICAgICAgICA7OworICAgICAgKi0qLWN5Z3dpbiogKQorICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKKyAgICAgICAgOzsKKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCisgICAgICAgIDs7CisgICAgZXNhYworICAgIDs7CisgICotKi1jeWd3aW4qICkKKyAgICBjYXNlICRidWlsZCBpbgorICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCisgICAgICAgIDs7CisgICAgICAqLSotY3lnd2luKiApCisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorICAgICAgICA7OworICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKyAgICAgICAgOzsKKyAgICBlc2FjCisgICAgOzsKKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKyAgICA7OworZXNhYworXSkKK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKK0FDX01TR19SRVNVTFQoWyRsdF9jdl90b19ob3N0X2ZpbGVfY21kXSkKK19MVF9ERUNMKFt0b19ob3N0X2ZpbGVfY21kXSwgW2x0X2N2X3RvX2hvc3RfZmlsZV9jbWRdLAorICAgICAgICAgWzBdLCBbY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXRdKWRubAorCitBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXRdKQorQUNfQ0FDSEVfVkFMKGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQsCitbI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgorbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCitjYXNlICRob3N0IGluCisgICotKi1taW5ndyogKQorICAgIGNhc2UgJGJ1aWxkIGluCisgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKyAgICAgICAgOzsKKyAgICBlc2FjCisgICAgOzsKK2VzYWMKK10pCit0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCitBQ19NU0dfUkVTVUxUKFskbHRfY3ZfdG9fdG9vbF9maWxlX2NtZF0pCitfTFRfREVDTChbdG9fdG9vbF9maWxlX2NtZF0sIFtsdF9jdl90b190b29sX2ZpbGVfY21kXSwKKyAgICAgICAgIFswXSwgW2NvbnZlcnQgJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXRdKWRubAorXSkjIF9MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TCmRpZmYgLS1naXQgYS9tNC9sdG9wdGlvbnMubTQgYi9tNC9sdG9wdGlvbnMubTQKaW5kZXggMzQxNTFhMy4uMTdjZmQ1MSAxMDA2NDQKLS0tIGEvbTQvbHRvcHRpb25zLm00CisrKyBiL200L2x0b3B0aW9ucy5tNApAQCAtMSwxMyArMSwxNCBAQAogIyBIZWxwZXIgZnVuY3Rpb25zIGZvciBvcHRpb24gaGFuZGxpbmcuICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCiAjCi0jICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisjICAgSW5jLgogIyAgIFdyaXR0ZW4gYnkgR2FyeSBWLiBWYXVnaGFuLCAyMDA0CiAjCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCiAjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KIAotIyBzZXJpYWwgNiBsdG9wdGlvbnMubTQKKyMgc2VyaWFsIDcgbHRvcHRpb25zLm00CiAKICMgVGhpcyBpcyB0byBoZWxwIGFjbG9jYWwgZmluZCB0aGVzZSBtYWNyb3MsIGFzIGl0IGNhbid0IHNlZSBtNF9kZWZpbmUuCiBBQ19ERUZVTihbTFRPUFRJT05TX1ZFUlNJT05dLCBbbTRfaWYoWzFdKV0pCkBAIC0xMjUsNyArMTI2LDcgQEAKIFtlbmFibGVfd2luMzJfZGxsPXllcwogCiBjYXNlICRob3N0IGluCi0qLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLWNlZ2NjKikKKyotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1jZWdjYyopCiAgIEFDX0NIRUNLX1RPT0woQVMsIGFzLCBmYWxzZSkKICAgQUNfQ0hFQ0tfVE9PTChETExUT09MLCBkbGx0b29sLCBmYWxzZSkKICAgQUNfQ0hFQ0tfVE9PTChPQkpEVU1QLCBvYmpkdW1wLCBmYWxzZSkKQEAgLTEzMywxMyArMTM0LDEzIEBACiBlc2FjCiAKIHRlc3QgLXogIiRBUyIgJiYgQVM9YXMKLV9MVF9ERUNMKFtdLCBbQVNdLCAgICAgIFswXSwgW0Fzc2VtYmxlciBwcm9ncmFtXSlkbmwKK19MVF9ERUNMKFtdLCBbQVNdLCAgICAgIFsxXSwgW0Fzc2VtYmxlciBwcm9ncmFtXSlkbmwKIAogdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAotX0xUX0RFQ0woW10sIFtETExUT09MXSwgWzBdLCBbRExMIGNyZWF0aW9uIHByb2dyYW1dKWRubAorX0xUX0RFQ0woW10sIFtETExUT09MXSwgWzFdLCBbRExMIGNyZWF0aW9uIHByb2dyYW1dKWRubAogCiB0ZXN0IC16ICIkT0JKRFVNUCIgJiYgT0JKRFVNUD1vYmpkdW1wCi1fTFRfREVDTChbXSwgW09CSkRVTVBdLCBbMF0sIFtPYmplY3QgZHVtcGVyIHByb2dyYW1dKWRubAorX0xUX0RFQ0woW10sIFtPQkpEVU1QXSwgWzFdLCBbT2JqZWN0IGR1bXBlciBwcm9ncmFtXSlkbmwKIF0pIyB3aW4zMi1kbGwKIAogQVVfREVGVU4oW0FDX0xJQlRPT0xfV0lOMzJfRExMXSwKZGlmZiAtLWdpdCBhL200L2x0dmVyc2lvbi5tNCBiL200L2x0dmVyc2lvbi5tNAppbmRleCBiOGUxNTRmLi45YzdiNWQ0IDEwMDY0NAotLS0gYS9tNC9sdHZlcnNpb24ubTQKKysrIGIvbTQvbHR2ZXJzaW9uLm00CkBAIC03LDE3ICs3LDE3IEBACiAjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KIAotIyBHZW5lcmF0ZWQgZnJvbSBsdHZlcnNpb24uaW4uCisjIEBjb25maWd1cmVfaW5wdXRACiAKLSMgc2VyaWFsIDMwMTIgbHR2ZXJzaW9uLm00CisjIHNlcmlhbCAzMjkzIGx0dmVyc2lvbi5tNAogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbAogCi1tNF9kZWZpbmUoW0xUX1BBQ0tBR0VfVkVSU0lPTl0sIFsyLjIuNl0pCi1tNF9kZWZpbmUoW0xUX1BBQ0tBR0VfUkVWSVNJT05dLCBbMS4zMDEyXSkKK200X2RlZmluZShbTFRfUEFDS0FHRV9WRVJTSU9OXSwgWzIuNF0pCittNF9kZWZpbmUoW0xUX1BBQ0tBR0VfUkVWSVNJT05dLCBbMS4zMjkzXSkKIAogQUNfREVGVU4oW0xUVkVSU0lPTl9WRVJTSU9OXSwKLVttYWNyb192ZXJzaW9uPScyLjIuNicKLW1hY3JvX3JldmlzaW9uPScxLjMwMTInCitbbWFjcm9fdmVyc2lvbj0nMi40JworbWFjcm9fcmV2aXNpb249JzEuMzI5MycKIF9MVF9ERUNMKCwgbWFjcm9fdmVyc2lvbiwgMCwgW1doaWNoIHJlbGVhc2Ugb2YgbGlidG9vbC5tNCB3YXMgdXNlZD9dKQogX0xUX0RFQ0woLCBtYWNyb19yZXZpc2lvbiwgMCkKIF0pCmRpZmYgLS1naXQgYS9tNC9sdH5vYnNvbGV0ZS5tNCBiL200L2x0fm9ic29sZXRlLm00CmluZGV4IDYzN2JiMjAuLmM1NzNkYTkgMTAwNjQ0Ci0tLSBhL200L2x0fm9ic29sZXRlLm00CisrKyBiL200L2x0fm9ic29sZXRlLm00CkBAIC0xLDEzICsxLDEzIEBACiAjIGx0fm9ic29sZXRlLm00IC0tIGFjbG9jYWwgc2F0aXNmeWluZyBvYnNvbGV0ZSBkZWZpbml0aW9ucy4gICAgLSotQXV0b2NvbmYtKi0KICMKLSMgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIyAgIFdyaXR0ZW4gYnkgU2NvdHQgSmFtZXMgUmVtbmFudCwgMjAwNC4KICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgogCi0jIHNlcmlhbCA0IGx0fm9ic29sZXRlLm00CisjIHNlcmlhbCA1IGx0fm9ic29sZXRlLm00CiAKICMgVGhlc2UgZXhpc3QgZW50aXJlbHkgdG8gZm9vbCBhY2xvY2FsIHdoZW4gYm9vdHN0cmFwcGluZyBsaWJ0b29sLgogIwpAQCAtNzcsNyArNzcsNiBAQAogbTRfaWZuZGVmKFtfTFRfQUNfTEFOR19DWFhdLAkJW0FDX0RFRlVOKFtfTFRfQUNfTEFOR19DWFhdKV0pCiBtNF9pZm5kZWYoW19MVF9BQ19MQU5HX0Y3N10sCQlbQUNfREVGVU4oW19MVF9BQ19MQU5HX0Y3N10pXSkKIG00X2lmbmRlZihbX0xUX0FDX0xBTkdfR0NKXSwJCVtBQ19ERUZVTihbX0xUX0FDX0xBTkdfR0NKXSldKQotbTRfaWZuZGVmKFtBQ19MSUJUT09MX1JDXSwJCVtBQ19ERUZVTihbQUNfTElCVE9PTF9SQ10pXSkKIG00X2lmbmRlZihbQUNfTElCVE9PTF9MQU5HX0NfQ09ORklHXSwJW0FDX0RFRlVOKFtBQ19MSUJUT09MX0xBTkdfQ19DT05GSUddKV0pCiBtNF9pZm5kZWYoW19MVF9BQ19MQU5HX0NfQ09ORklHXSwJW0FDX0RFRlVOKFtfTFRfQUNfTEFOR19DX0NPTkZJR10pXSkKIG00X2lmbmRlZihbQUNfTElCVE9PTF9MQU5HX0NYWF9DT05GSUddLAlbQUNfREVGVU4oW0FDX0xJQlRPT0xfTEFOR19DWFhfQ09ORklHXSldKQpAQCAtOTAsMyArODksMTAgQEAKIG00X2lmbmRlZihbX0xUX0FDX0xBTkdfUkNfQ09ORklHXSwJW0FDX0RFRlVOKFtfTFRfQUNfTEFOR19SQ19DT05GSUddKV0pCiBtNF9pZm5kZWYoW0FDX0xJQlRPT0xfQ09ORklHXSwJCVtBQ19ERUZVTihbQUNfTElCVE9PTF9DT05GSUddKV0pCiBtNF9pZm5kZWYoW19MVF9BQ19GSUxFX0xURExMX0NdLAlbQUNfREVGVU4oW19MVF9BQ19GSUxFX0xURExMX0NdKV0pCittNF9pZm5kZWYoW19MVF9SRVFVSVJFRF9EQVJXSU5fQ0hFQ0tTXSwJW0FDX0RFRlVOKFtfTFRfUkVRVUlSRURfREFSV0lOX0NIRUNLU10pXSkKK200X2lmbmRlZihbX0xUX0FDX1BST0dfQ1hYQ1BQXSwJCVtBQ19ERUZVTihbX0xUX0FDX1BST0dfQ1hYQ1BQXSldKQorbTRfaWZuZGVmKFtfTFRfUFJFUEFSRV9TRURfUVVPVEVfVkFSU10sCVtBQ19ERUZVTihbX0xUX1BSRVBBUkVfU0VEX1FVT1RFX1ZBUlNdKV0pCittNF9pZm5kZWYoW19MVF9QUk9HX0VDSE9fQkFDS1NMQVNIXSwJW0FDX0RFRlVOKFtfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSF0pXSkKK200X2lmbmRlZihbX0xUX1BST0dfRjc3XSwJCVtBQ19ERUZVTihbX0xUX1BST0dfRjc3XSldKQorbTRfaWZuZGVmKFtfTFRfUFJPR19GQ10sCQlbQUNfREVGVU4oW19MVF9QUk9HX0ZDXSldKQorbTRfaWZuZGVmKFtfTFRfUFJPR19DWFhdLAkJW0FDX0RFRlVOKFtfTFRfUFJPR19DWFhdKV0pCmRpZmYgLS1naXQgYS9tYW4vZGVmYXVsdF9zdG9yZS4zLmJvdCBiL21hbi9kZWZhdWx0X3N0b3JlLjMuYm90CmluZGV4IDE2YzA4ZWUuLmViZDJiZjYgMTAwNjQ0Ci0tLSBhL21hbi9kZWZhdWx0X3N0b3JlLjMuYm90CisrKyBiL21hbi9kZWZhdWx0X3N0b3JlLjMuYm90CkBAIC0xMTEsNyArMTExLDcgQEAKIGFsbG9jYXRpb24gZmFpbHVyZSkuCiAuVFAKIC5CSSAiaW50IG5ldHNubXBfZHNfcmVnaXN0ZXJfcHJlbWliKHVfY2hhciAiIHR5cGUgIiwgY29uc3QgY2hhciAqIiBmdHlwZSAiLCBjb25zdCBjaGFyICoiIHRva2VuICIsIGludCAiIHN0b3JlICIsIGludCAiIHdoaWNoICIpOyIKLUFuYWxvZ291cyB0byB0aGUgcHJlY2VlZGluZyBmdW5jdGlvbiwgYnV0IHRoZQorQW5hbG9nb3VzIHRvIHRoZSBwcmVjZWRpbmcgZnVuY3Rpb24sIGJ1dCB0aGUKIC5JIHRva2VuCiBpcyBwcm9jZXNzZWQgYmVmb3JlIE1JQnMgYXJlIHJlYWQgKHRoaXMgaXMgdGhlcmVmb3JlIHVzZWZ1bCBmb3IgY29udHJvbGxpbmcKIE1JQiBwcm9jZXNzaW5nIG9wdGlvbnMpLgpkaWZmIC0tZ2l0IGEvbWFuL2VuY29kZV9rZXljaGFuZ2UuMS5kZWYgYi9tYW4vZW5jb2RlX2tleWNoYW5nZS4xLmRlZgppbmRleCA3NDE1NjE3Li4yMGY1Y2MzIDEwMDY0NAotLS0gYS9tYW4vZW5jb2RlX2tleWNoYW5nZS4xLmRlZgorKysgYi9tYW4vZW5jb2RlX2tleWNoYW5nZS4xLmRlZgpAQCAtMywxMyArMywxMyBAQAogZW5jb2RlX2tleWNoYW5nZSAtIHByb2R1Y2UgdGhlIEtleUNoYW5nZSBzdHJpbmcgZm9yIFNOTVB2MwogLlNIIFNZTk9QU0lTCiAuQiBlbmNvZGVfa2V5Y2hhbmdlIAotLXQgbWQ1fHNoYTEKK1wtdCBtZDV8c2hhMQogW1xmSU9QVElPTlNcZlJdCiAuU0ggREVTQ1JJUFRJT04KIC5CIGVuY29kZV9rZXljaGFuZ2UKIHByb2R1Y2VzIGEgS2V5Q2hhbmdlIHN0cmluZyB1c2luZyB0aGUgb2xkIGFuZCBuZXcgcGFzc3BocmFzZXMgCiBhcyBkZXNjcmliZWQgaW4gU2VjdGlvbiA1IG9mIFJGQyAyMjc0ICJVc2VyLWJhc2VkIFNlY3VyaXR5IE1vZGVsIChVU00pIGZvciAKLXZlcnNpb24gMyBvZiB0aGUgU2ltcGxlIE5ldHdvcmsgTWFuYWdlbWVudCBQcm90b2NvbCAoU05NUHYzKSIuIFxmQi10XGZSCit2ZXJzaW9uIDMgb2YgdGhlIFNpbXBsZSBOZXR3b3JrIE1hbmFnZW1lbnQgUHJvdG9jb2wgKFNOTVB2MykiLiBcZkJcLXRcZlIKIG9wdGlvbiBpcyBtYW5kYXRvcnkgYW5kIHNwZWNpZmllcyB0aGUgaGFzaCB0cmFuc2Zvcm0gdHlwZSB0byB1c2UuCiAKIFRoZSB0cmFuc2Zvcm0gaXMgdXNlZCB0byBjb252ZXJ0IHBhc3NwaHJhc2UgdG8gbWFzdGVyIGtleSBmb3IgYSBnaXZlbgpAQCAtMjAsOSArMjAsOSBAQAogKGluIG9yZGVyIGxpc3RlZCk6CiAuSVAKIGNvbW1hbmQgbGluZSBvcHRpb25zIChzZWUgCi0uQiAtTgorLkIgXC1OCiBhbmQKLS5CIC1PCisuQiBcLU8KIG9wdGlvbnMgYmVsb3cpOwogLklQCiB0aGUgZmlsZSAKQEAgLTM1LDcgKzM1LDcgQEAKIC5TSCBPUFRJT05TCiAuVFAKIFxmQlwtRVxmUiBbMHhdPFxmSWVuZ2luZUlEXGZSPiBFbmdpbmVJRCB1c2VkIGZvciBLdWwgZ2VuZXJhdGlvbi4KLTxcZkllbmdpbmVJRFxmUj4gaXMgaW50ZXByZXRlZCBhcyBhIGhleCBzdHJpbmcgd2hlbiBwcmVjZWVkZWQgYnkgMHgsCis8XGZJZW5naW5lSURcZlI+IGlzIGludGVwcmV0ZWQgYXMgYSBoZXggc3RyaW5nIHdoZW4gcHJlY2VkZWQgYnkgMHgsCiBvdGhlcndpc2UgaXQgaXMgdHJlYXRlZCBhcyBhIHRleHQgc3RyaW5nLiBJZiBubyA8XGZJZW5naW5lSURcZlI+IGlzCiBzcGVjaWZpZWQsIGl0IGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlIGZpcnN0IElQIGFkZHJlc3MgZm9yIHRoZSBsb2NhbAogaG9zdC4KZGlmZiAtLWdpdCBhL21hbi9maXhwcm9jLjEuZGVmIGIvbWFuL2ZpeHByb2MuMS5kZWYKaW5kZXggZWY5MDAzNi4uYWU4OGEzZCAxMDA2NDQKLS0tIGEvbWFuL2ZpeHByb2MuMS5kZWYKKysrIGIvbWFuL2ZpeHByb2MuMS5kZWYKQEAgLTI3LDEwICsyNywxMCBAQAogY2hlY2sgcHJvY2VzcyBhZ2FpbnN0IGRhdGFiYXNlIC9sb2NhbC9ldGMvZml4cHJvYy5jb25mLgogLlRQCiAuQiBcLWtpbGwKLWtpbGwgcHJvY2Vzcywgd2FpdCA1IHNlY29uZHMsIGtpbGwgLTkgaWYgc3RpbGwgZXhpc3QKK2tpbGwgcHJvY2Vzcywgd2FpdCA1IHNlY29uZHMsIGtpbGwgXC05IGlmIHN0aWxsIGV4aXN0CiAuVFAKIC5CIFwtcmVzdGFydAota2lsbCBwcm9jZXNzLCB3YWl0IDUgc2Vjb25kcywga2lsbCAtOSBpZiBzdGlsbCBleGlzdCwgdGhlbiBzdGFydCBhZ2Fpbgora2lsbCBwcm9jZXNzLCB3YWl0IDUgc2Vjb25kcywga2lsbCBcLTkgaWYgc3RpbGwgZXhpc3QsIHRoZW4gc3RhcnQgYWdhaW4KIC5UUAogLkIgXC1leGlzdAogY2hlY2tzIGlmIHByb2MgZXhpc3RzIGluIHBzICYmIChtaW4gPD0gbnVtLiBvZiBwcm9jZXNzZXMgPD0gbWF4KQpkaWZmIC0tZ2l0IGEvbWFuL21pYjJjLmNvbmYuNS5pbiBiL21hbi9taWIyYy5jb25mLjUuaW4KaW5kZXggN2U1YTIxMC4uMzY5MmE2NSAxMDA2NDQKLS0tIGEvbWFuL21pYjJjLmNvbmYuNS5pbgorKysgYi9tYW4vbWliMmMuY29uZi41LmluCkBAIC0xLDYgKzEsNiBAQAogLlRIIE1JQjJDLkNPTkYgNSAiMjggQXByIDIwMDQiIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCiAuU0ggTkFNRQotbWliMmMuY29uZiAtLSBIb3cgdG8gd3JpdGUgbWliMmMuY29uZiBmaWxlcyB0byBkbyBBTllUSElORyBiYXNlZCBvbiBNSUIgaW5wdXQuCittaWIyYy5jb25mIFxbZW1dIEhvdyB0byB3cml0ZSBtaWIyYy5jb25mIGZpbGVzIHRvIGRvIEFOWVRISU5HIGJhc2VkIG9uIE1JQiBpbnB1dC4KIC5TSCBTWU5PUFNJUwogJSBjYXQgPiBtaWIyYy50ZXN0LmNvbmYgIDw8IEVPRgogQGZvcmVhY2ggJHQgdGFibGVACkBAIC0xMiw3ICsxMiw3IEBACiBAZW5kQAogRU9GCiAKLSUgbWliMmMgLWMgbWliMmMudGVzdC5jb25mIGludGVybmV0CislIG1pYjJjIFwtYyBtaWIyYy50ZXN0LmNvbmYgaW50ZXJuZXQKIC5TSCBERVNDUklQVElPTgogVGhlIG1pYjJjLmNvbmYgc2NyaXB0IGxhbmd1YWdlIGlzIGEgTUlCLXBhcnRpY3VsYXIgbGFuZ3VhZ2UgZGVzaWduZWQKIHRvIGVhc2lseSBwcm9jZXNzIE1JQiBub2RlcyBpbiB3YXlzIHRoYXQgeW91IHdhbnQuICBtaWIyYyBpcyBhCmRpZmYgLS1naXQgYS9tYW4vbmV0LXNubXAtY29uZmlnLjEuZGVmIGIvbWFuL25ldC1zbm1wLWNvbmZpZy4xLmRlZgppbmRleCA2NTIxYzllLi4zYTBmYTJiIDEwMDY0NAotLS0gYS9tYW4vbmV0LXNubXAtY29uZmlnLjEuZGVmCisrKyBiL21hbi9uZXQtc25tcC1jb25maWcuMS5kZWYKQEAgLTEsMTcgKzEsMTcgQEAKIC5USCBuZXQtc25tcC1jb25maWcgMSAiMTYgTm92IDIwMDYiIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCiAuU0ggTkFNRQotbmV0LXNubXAtY29uZmlnIFwtIHJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgaW5zdGFsbGVkIG5ldC1zbm1wIGxpYnJhcmllcyBhbmQgYmluYXJpZXMgCituZXRcLXNubXBcLWNvbmZpZyAtIHJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgaW5zdGFsbGVkIG5ldC1zbm1wIGxpYnJhcmllcyBhbmQgYmluYXJpZXMgCiAuU0ggU1lOT1BTSVMKIC5QUAotLkIgbmV0LXNubXAtY29uZmlnCisuQiBuZXRcLXNubXBcLWNvbmZpZwogW09QVElPTlNdCiAuU0ggREVTQ1JJUFRJT04KIC5QUAotVGhlIFxmSW5ldC1zbm1wLWNvbmZpZ1xmUCBzaGVsbCBzY3JpcHQgaXMgZGVzaWduZWQgdG8gcmV0cmlldmUgdGhlCitUaGUgXGZJbmV0XC1zbm1wXC1jb25maWdcZlAgc2hlbGwgc2NyaXB0IGlzIGRlc2lnbmVkIHRvIHJldHJpZXZlIHRoZQogY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbGlicmFyaWVzIGFuZCBiaW5hcmllcyBkZWFsaW5nIHdpdGgKIHRoZSBTaW1wbGUgTmV0d29yayBNYW5hZ2VtZW50IFByb3RvY29sIChTTk1QKSwgYnVpbHQgZnJvbSB0aGUgCiAuQiBuZXQtc25tcCAKLXNvdXJjZSBwYWNrYWdlLiBUaGUgaW5mb3JtYXRpb24gaXMgcGFydGljdWxhcmlseSB1c2VmdWwgZm9yCitzb3VyY2UgcGFja2FnZS4gVGhlIGluZm9ybWF0aW9uIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yCiBhcHBsaWNhdGlvbnMgdGhhdCBuZWVkIHRvIGxpbmsgYWdhaW5zdCB0aGUgU05NUCBsaWJyYXJpZXMgYW5kIGhlbmNlCiBtdXN0IGtub3cgYWJvdXQgYW55IG90aGVyIGxpYnJhcmllcyB0aGF0IG11c3QgYmUgbGlua2VkIGluIGFzIHdlbGwuCiAKQEAgLTI5LDggKzI5LDggQEAKIC5QUAogU05NUCBTZXR1cCBjb21tYW5kczoKIC5UUAotXGZCXC1cLWNyZWF0ZVwtc25tcHYzXC11c2VyXGZSIFstcm9dIFstYSBhdXRocGFzc10gWy14IHByaXZwYXNzXSBbLVggREVTfEFFU10KLVstQSBNRDV8U0hBXSBbdXNlcm5hbWVdCitcZkJcLVwtY3JlYXRlXC1zbm1wdjNcLXVzZXJcZlIgW1wtcm9dIFtcLWEgYXV0aHBhc3NdIFtcLXggcHJpdnBhc3NdCitbXC1YIERFU3xBRVNdIFtcLUEgTUQ1fFNIQV0gW3VzZXJuYW1lXQogLlBQCiBUaGVzZSBvcHRpb25zIHByb2R1Y2UgdGhlIHZhcmlvdXMgY29tcGlsYXRpb24gZmxhZ3MgbmVlZGVkIHdoZW4KIGJ1aWxkaW5nIGV4dGVybmFsIFNOTVAgYXBwbGljYXRpb25zOgpAQCAtNjMsOCArNjMsOCBAQAogQXV0b21hdGVkIHN1YmFnZW50IGJ1aWxkaW5nIChwcm9kdWNlcyBhbiBPVVRQVVROQU1FIGJpbmFyeSBmaWxlKToKIFtUaGlzIGZlYXR1cmUgaGFzIG5vdCBiZWVuIGV4dGVuc2l2ZWx5IHRlc3RlZCwgIHVzZSBhdCB5b3VyIG93biByaXNrLl0KIC5UUAotXGZCXC1cLWNvbXBpbGVcLXN1YmFnZW50XGZSIE9VVFBVVE5BTUUgWy0tbm9ybV0gWy0tY2ZsYWdzIGZsYWdzXQotWy0tbGRmbGFncyBmbGFnc10gbWlibW9kdWxlMS5jIFsuLi5dXQorXGZCXC1cLWNvbXBpbGVcLXN1YmFnZW50XGZSIE9VVFBVVE5BTUUgW1wtXC1ub3JtXSBbXC1cLWNmbGFncyBmbGFnc10KK1tcLVwtbGRmbGFncyBmbGFnc10gbWlibW9kdWxlMS5jIFsuLi5dXQogLlRQCiBcZkJcLVwtbm9ybVxmUgogbGVhdmUgdGhlIGdlbmVyYXRlZCAuYyBmaWxlIGFyb3VuZCB0byByZWFkLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfYWdlbnRfYXBpLjMuZGVmIGIvbWFuL25ldHNubXBfYWdlbnRfYXBpLjMuZGVmCmluZGV4IDg3ZGM1NDEuLjE5ZWZkMDAgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX2FnZW50X2FwaS4zLmRlZgorKysgYi9tYW4vbmV0c25tcF9hZ2VudF9hcGkuMy5kZWYKQEAgLTEsMTEgKzEsMTEgQEAKIC5USCBORVRTTk1QX0FHRU5UX0FQSSAzICIxMyBBdWcgMjAxMCIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKIC5TSCBOQU1FCi1uZXRzbm1wX2FnZW50X2FwaSBcLSBlbWJlZGRpbmcgYW4gYWdlbnQgaW50byBhIGV4dGVybmFsIGFwcGxpY2F0aW9uCituZXRzbm1wX2FnZW50X2FwaSAtIGVtYmVkZGluZyBhbiBhZ2VudCBpbnRvIGEgZXh0ZXJuYWwgYXBwbGljYXRpb24KIC5TSCBTWU5PUFNJUwogLm5mCi0jaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldFwtc25tcC9uZXRcLXNubXBcLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldFwtc25tcC9uZXRcLXNubXBcLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0XC1zbm1wL2FnZW50L25ldFwtc25tcFwtYWdlbnRcLWluY2x1ZGVzLmg+CiAKIGludAogbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKQEAgLTQ1LDcgKzQ1LDcgQEAKIH0KIAogVGhlbjoKLSQoQ0MpIC4uLiBgbmV0LXNubXAtY29uZmlnIC0tYWdlbnQtbGlic2AKKyQoQ0MpIC4uLiBgbmV0XC1zbm1wXC1jb25maWcgXC1cLWFnZW50XC1saWJzYAogCiAuZmkKIC5TSCBERVNDUklQVElPTgpAQCAtNzYsOCArNzYsOCBAQAogY29uZmlndXJlZCB0aGUgTmV0LVNOTVAgcGFja2FnZSB3aXRoIGFnZW50eCBzdXBwb3J0ICh3aGljaCBpcyB0dXJuZWQKIG9uIGJ5IGRlZmF1bHQsIHNvIGp1c3QgZG9uJ3QgdHVybiBpdCBvZmYpCiAuUFAKLUFkZGl0aW9uYWxseSwgeW91IHdpbGwgbmVlZCB0byBsaW5rIGFnYWluc3QgdGhlIG5ldC1zbm1wIGxpYnJhcmllcwotKHVzZSB0aGUgb3V0cHV0IG9mICJuZXQtc25tcC1jb25maWcgLS1hZ2VudC1saWJzIiB0byBnZXQgYSBsaWJyYXJ5CitBZGRpdGlvbmFsbHksIHlvdSB3aWxsIG5lZWQgdG8gbGluayBhZ2FpbnN0IHRoZSBOZXQtU05NUCBsaWJyYXJpZXMKKyh1c2UgdGhlIG91dHB1dCBvZiAibmV0XC1zbm1wXC1jb25maWcgXC1cLWFnZW50XC1saWJzIiB0byBnZXQgYSBsaWJyYXJ5CiBsaXN0KSBhbmQgY2FsbCBzdWJhZ2VudF9wcmVfaW5pdCgpIGFzIGluZGljYXRlZCBhYm92ZS4KIC5TSCBDT01QSUxJTkcKIC5QUApAQCAtODYsNyArODYsNyBAQAogLlNIIEZVTkNUSU9OUwogLlBQIFRoaXMgaXMgYSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgZnVuY3Rpb25zIGNhbGxlZCBhYm92ZSBhbmQKIHdoZXJlIHRvIGZpbmQgb3V0IG1vcmUgaW5mb3JtYXRpb24gb24gdGhlbS4gIEl0IGlzIGNlcnRhaW5seSBub3QgYQotY29tcGxldGUgbGlzdCBvZiB3aGF0IGlzIGF2YWlsYWJsZSB3aXRoaW4gYWxsIHRoZSBuZXQtc25tcCBsaWJyYXJpZXMuIAorY29tcGxldGUgbGlzdCBvZiB3aGF0IGlzIGF2YWlsYWJsZSB3aXRoaW4gYWxsIHRoZSBOZXQtU05NUCBsaWJyYXJpZXMuIAogLklQICJzbm1wX2VuYWJsZV9zdGRlcnJsb2coKSIKIExvZ3MgZXJyb3Igb3V0cHV0IGZyb20gdGhlIFNOTVAgYWdlbnQgdG8gdGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbS4KIC5JUCAibmV0c25tcF9kc19zZXRfYm9vbGVhbigpIgpAQCAtMTIzLDEwICsxMjMsMTAgQEAKIGFsYXJtIG11c3QgYmUgcnVuIChzZWUKIC5JUiBzbm1wX2FsYXJtKDMpICkuCiBUaGUgcmV0dXJuIHZhbHVlIGZyb20gdGhpcyBmdW5jdGlvbiBpcyBhIHBvc2l0aXZlIGludGVnZXIgaWYgcGFja2V0cwotd2VyZSBwcm9jZXNzZWQsIHplcm8gaWYgYW4gYWxhcm0gb2NjdXJyZWQgYW5kIC0xIGlmIGFuIGVycm9yIG9jY3VyZWQuCit3ZXJlIHByb2Nlc3NlZCwgemVybyBpZiBhbiBhbGFybSBvY2N1cnJlZCBhbmQgXC0xIGlmIGFuIGVycm9yIG9jY3VyZWQuCiAuSVAgInNubXBfc2h1dGRvd24oY2hhciAqbmFtZSk7IgogVGhpcyBzaHV0cyBkb3duIHRoZSBhZ2VudCwgc2F2aW5nIGFueSBuZWVkZWQgcGVyc2lzdGVudCBzdG9yYWdlLCBldGMuCiAuU0ggIlNFRSBBTFNPIgotaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvdHV0b3JpYWwtNS90b29sa2l0LyBzZWxlY3QoMiksIHNubXBfYXBpKDMpLAoraHR0cDovL3d3dy5uZXRcLXNubXAub3JnL3R1dG9yaWFsXC01L3Rvb2xraXQvIHNlbGVjdCgyKSwgc25tcF9hcGkoMyksCiBkZWZhdWx0X3N0b3JlKDMpLCBzbm1wX2FsYXJtKDMpLCBuZXRzbm1wX2NvbmZpZ19hcGkoMyksIHNubXBfY29uZmlnKDUpLAogc25tcGQuY29uZig1KQpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfbWliX2FwaS4zLmRlZiBiL21hbi9uZXRzbm1wX21pYl9hcGkuMy5kZWYKaW5kZXggY2MwZDBjYi4uMmUxZGE4ZiAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfbWliX2FwaS4zLmRlZgorKysgYi9tYW4vbmV0c25tcF9taWJfYXBpLjMuZGVmCkBAIC0yMSw3ICsyMSw3IEBACiBmcHJpbnRfZGVzY3JpcHRpb24sCiBzbnByaW50X2Rlc2NyaXB0aW9uIC0gbmV0c25tcF9taWJfYXBpIGZ1bmN0aW9ucwogLlNIIFNZTk9QU0lTCi0uQiAjaW5jbHVkZSA8bmV0LXNubXAvbWliX2FwaS5oPgorLkIgI2luY2x1ZGUgPG5ldFwtc25tcC9taWJfYXBpLmg+CiAuUFAKIC5TUyBJbml0aWFsaXNhdGlvbiBhbmQgU2h1dGRvd24KIC5CSSAiaW50IGFkZF9taWJkaXIoY29uc3QgY2hhciAqIiAiZGlybmFtZSIgKTsKQEAgLTEwNCw3ICsxMDQsNyBAQAogaW4gdGhhdCBkaXJlY3RvcnksIGJ1dCBpcyBzaW1wbHkgYW4gaW5pdGlhbGlzYXRpb24gc3RlcCB0byBtYWtlCiB0aGVtIGF2YWlsYWJsZSB0bwogLkJSIG5ldHNubXBfcmVhZF9tb2R1bGUgLgotVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgY291bnQgb2YgZmlsZXMgZm91bmQgaW4gdGhlIGRpcmVjdG9yeSwgb3IgYSAtMQorVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgY291bnQgb2YgZmlsZXMgZm91bmQgaW4gdGhlIGRpcmVjdG9yeSwgb3IgYSBcLTEKIGlmIHRoZXJlIGlzIGFuIGVycm9yLiAgCiBJdCBzaG91bGQgYmUgY2FsbGVkIFxmSWJlZm9yZVxmUCBpbnZva2luZyBcZkJuZXRzbm1wX2luaXRfbWliXGZQLgogLlBQCkBAIC0xODAsNyArMTgwLDcgQEAKIGluIE1JQiBJTVBPUlRTIGNsYXVzZXMgKHN1Y2ggYXMgcmVmZXJyaW5nIHRvCiAuSSBSRkMxMjEzCiBpbnN0ZWFkIG9mCi0uSVIgUkZDMTIxMy1NSUIgKS4KKy5JUiBSRkMxMjEzXC1NSUIgKS4KIC5TUyBTZWFyY2hpbmcgdGhlIE1JQiBUcmVlCiAuUFAKIC5CIHJlYWRfb2JqaWQKQEAgLTIzNCw3ICsyMzQsNyBAQAogLkkgYnVmCiB3aGljaCBpcyBvZiBsZW5ndGgKIC5JUiBsZW4gLgotSXQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgcHJpbnRlZCwgb3IgLTEgaWYgdGhlCitJdCByZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBwcmludGVkLCBvciBcLTEgaWYgdGhlCiBidWZmZXIgd2FzIG5vdCBsYXJnZSBlbm91Z2guICBJbiB0aGUgbGF0dGVyIGNhc2UsCiAuSSBidWYKIHdpbGwgdHlwaWNhbGx5IGNvbnRhaW4gYSB0cnVuY2F0ZWQgdmVyc2lvbiBvZiB0aGUgaW5mb3JtYXRpb24gKGJ1dApAQCAtMjc3LDcgKzI3Nyw3IEBACiAuYnIKIFRoZSBkZWZhdWx0IGxpc3Qgb2YgbW9kdWxlcyB3aWxsIGRlcGVuZCBvbiBob3cgdGhlIE5ldC1TTk1QIHNvZnR3YXJlCiB3YXMgb3JpZ2luYWxseSBjb21waWxlZCwgYnV0IGlzIHR5cGljYWxseToKLUlQLU1JQjpJRi1NSUI6VENQLU1JQjpVRFAtTUlCOlNOTVB2Mi1NSUI6UkZDMTIxMy1NSUI6IFVDRC1TTk1QLU1JQjpIT1NULVJFU09VUkNFUy1NSUIKK0lQXC1NSUI6SUZcLU1JQjpUQ1BcLU1JQjpVRFBcLU1JQjpTTk1QdjJcLU1JQjpSRkMxMjEzXC1NSUI6IFVDRFwtU05NUFwtTUlCOkhPU1RcLVJFU09VUkNFU1wtTUlCCiAuSVAKIElmIHRoZSB2YWx1ZSBvZiB0aGUKIC5CIE1JQlMKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3Nlc3NfYXBpLjMuZGVmIGIvbWFuL25ldHNubXBfc2Vzc19hcGkuMy5kZWYKaW5kZXggODY0MTUzOC4uODkwMzUzZCAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfc2Vzc19hcGkuMy5kZWYKKysrIGIvbWFuL25ldHNubXBfc2Vzc19hcGkuMy5kZWYKQEAgLTgsNiArOCw3IEBACiBzbm1wX3Nlc3Nfc2VsZWN0X2luZm8sCiBzbm1wX3Nlc3NfcmVhZCwKIHNubXBfc2Vzc190aW1lb3V0LAorc25tcF9zZXNzX3N5bmNoX3Jlc3BvbnNlLAogc25tcF9zZXNzX2Nsb3NlLAogc25tcF9zZXNzX2Vycm9yIC0gc2Vzc2lvbiBmdW5jdGlvbnMKIC5TSCBTWU5PUFNJUwpAQCAtNDEsNiArNDIsMTMgQEAKIC5QUAogLkJJICJ2b2lkIHNubXBfc2Vzc190aW1lb3V0KHZvaWQgKiIgaGFuZGxlICIpOyIKIC5QUAorLkJJICJpbnQgc25tcF9zZXNzX3N5bmNoX3Jlc3BvbnNlICggdm9pZCAqIiAiaGFuZGxlLCIKKy5SUworLkJJICJuZXRzbm1wX3BkdSAqIiAicGR1IiAiLCAiCisuYnIKKy5CSSAibmV0c25tcF9wZHUgKioiICJyZXNwb25zZSIgKTsKKy5SRQorLlBQCiAuQkkgImludCBzbm1wX3Nlc3NfY2xvc2Uodm9pZCAqIiBoYW5kbGUgIik7IgogLlBQCiAuQkkgInZvaWQgc25tcF9zZXNzX2Vycm9yKHZvaWQgKiIgaGFuZGxlICIsIGludCAqIiBwY2xpYmVyciAiLCAiCkBAIC05OSw2ICsxMDcsMTIgQEAKIC5QUAogQ29uc3VsdCBzbm1wX2FwaS5oIGZvciB0aGUgZGVmaW5pdGlvbnMgb2YgdGhlc2Ugc3RydWN0dXJlcy4KIC5QUAorV2l0aCB0aGUKKy5JIHNubXBfc2Vzc19hc3luY19zZW5kKCkKK2NhbGwsCisuSSBzbm1wX3Nlc3NfcmVhZAord2lsbCBpbnZva2UgdGhlIHNwZWNpZmllZCBjYWxsYmFjayB3aGVuIHRoZSByZXNwb25zZSBpcyByZWNlaXZlZC4KKy5QUAogLkJSIHNubXBfc2Vzc19zZWxlY3RfaW5mbygpICIsICIgc25tcF9zZXNzX3JlYWQoKSAiIGFuZCAiIHNubXBfc2Vzc190aW1lb3V0KCkKIHByb3ZpZGUgYW4gaW50ZXJmYWNlIGZvciB0aGUgdXNlIG9mIHRoZQogLkJSIHNlbGVjdCAoMikKQEAgLTE0OCw2ICsxNjIsMTMgQEAKIC5CIHNubXBfc2Vzc190aW1lb3V0KCkKIHNob3VsZCBiZSBjYWxsZWQgdG8gc2VlIGlmIGEgdGltZW91dCBoYXMgb2NjdXJyZWQgb24gdGhlIFNOTVAKIHNlc3Npb24uCisuUFAKKy5JIHNubXBfc2Vzc19zeW5jaF9yZXNwb25zZQoraXMgYSBjb252ZW5pZW5jZSByb3V0aW5lIHRoYXQgd2lsbCBzZW5kIHRoZSByZXF1ZXN0LAord2FpdCBmb3IgdGhlIHJlc3BvbnNlIGFuZCBwcm9jZXNzIGl0IGJlZm9yZSByZXR1cm5pbmcuCitTZWUgdGhlIGRlc2NyaXB0aW9ucyBvZgorLkkgInNubXBfc2Vzc19zZW5kIiAiLCAiICJzbm1wX3Nlc3NfcmVhZCIKK2V0YyBmb3IgZGV0YWlscy4KIC5TSCBESUFHTk9TVElDUwogLlBQCiBFcnJvciByZXR1cm4gc3RhdHVzIGZyb20gCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9zZXNzaW9uX2FwaS4zLmRlZiBiL21hbi9uZXRzbm1wX3Nlc3Npb25fYXBpLjMuZGVmCmluZGV4IDYwYjY4ZDEuLmM4ODkxYTEgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3Nlc3Npb25fYXBpLjMuZGVmCisrKyBiL21hbi9uZXRzbm1wX3Nlc3Npb25fYXBpLjMuZGVmCkBAIC0xLDcgKzEsNyBAQAogLlwiIC0qLSBucm9mZiAtKi0KLS5cIiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQuIAotLlwiIFNlZSB0aGUgTmV0LVNOTVAgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyCi0uXCIgY29weXJpZ2h0cyB0aGF0IG1heSBhcHBseToKKy5cIiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQuICBTZWUKKy5cIiB0aGUgTmV0LVNOTVAgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyIGNvcHlyaWdodHMKKy5cIiB0aGF0IG1heSBhcHBseToKIC5cIiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIiAJQ29weXJpZ2h0IDE5ODkgYnkgQ2FybmVnaWUgTWVsbG9uIFVuaXZlcnNpdHkKIC5cIiAKQEAgLTI4LDkgKzI4LDExIEBACiBzbm1wX3Nlc3NfaW5pdCwKIHNubXBfb3BlbiwKIHNubXBfc2VuZCwKK3NubXBfYXN5bmNfc2VuZCwKIHNubXBfc2VsZWN0X2luZm8sCiBzbm1wX3JlYWQsCiBzbm1wX3RpbWVvdXQsCitzbm1wX3N5bmNoX3Jlc3BvbnNlLAogc25tcF9jbG9zZSwKIHNubXBfcGVycm9yLAogc25tcF9zZXNzX3BlcnJvciwKQEAgLTUxLDYgKzUzLDE1IEBACiAuQkkgIm5ldHNubXBfcGR1ICoiICJwZHUiICk7CiAuUkUKIC5QUAorLkJJICJpbnQgc25tcF9hc3luY19zZW5kICggbmV0c25tcF9zZXNzaW9uICoiICJzZXNzaW9uLCIKKy5SUworLkJJICIgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9wZHUgKiIgcGR1ICIsICIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9jYWxsYmFjayAiIGNhbGxiYWNrICIsICIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqIiBjYWxsYmFja0RhdGEgIik7IgorLlJFCisuUFAKIC5CSSAiaW50IHNubXBfc2VsZWN0X2luZm8gKCBpbnQgKiAiIG51bWZkcywgImZkX3NldCAqIiBmZHNldCwKIC5SUwogLkJJICJzdHJ1Y3QgdGltZXZhbCAqIiB0aW1lb3V0LCAiaW50ICoiIGJsb2NrICk7CkBAIC02MCw2ICs3MSwxMyBAQAogLlBQCiAuQiAgdm9pZCBzbm1wX3RpbWVvdXQgKCB2b2lkICk7CiAuUFAKKy5CSSAiaW50IHNubXBfc3luY2hfcmVzcG9uc2UgKCBuZXRzbm1wX3Nlc3Npb24gKiIgInNlc3Npb24sIgorLlJTCisuQkkgIm5ldHNubXBfcGR1ICoiICJwZHUiICIsICIKKy5icgorLkJJICJuZXRzbm1wX3BkdSAqKiIgInJlc3BvbnNlIiApOworLlJFCisuUFAKIC5CSSAiaW50IHNubXBfY2xvc2UgKCBuZXRzbm1wX3Nlc3Npb24gKiIgc2Vzc2lvbiApOwogLmJyCiAuQiAgImludCBzbm1wX2Nsb3NlX3Nlc3Npb25zICggdm9pZCApOwpAQCAtOTgsOCArMTE2LDEwIEBACiBvYmplY3QsIHdoaWNoIHRoZSBhcHBsaWNhdGlvbiBtdXN0IHVzZSB0byByZWZlcmVuY2UgdGhlCiBhY3RpdmUgU05NUCBzZXNzaW9uLgogLlBQCi0uSSBTbm1wX3NlbmQKLXRha2VzIGFzIGlucHV0IGEgcG9pbnRlciB0byBhCisuSSBzbm1wX3NlbmQKK2FuZAorLkkgc25tcF9hc3luY19zZW5kKCkKK2VhY2ggdGFrZSBhcyBpbnB1dCBhIHBvaW50ZXIgdG8gYQogLkkgbmV0c25tcF9wZHUKIG9iamVjdC4KIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIGluZm9ybWF0aW9uIHRoYXQgZGVzY3JpYmVzIGEgdHJhbnNhY3Rpb24KQEAgLTEwNyw2ICsxMjcsMTIgQEAKIC5QUAogQ29uc3VsdCBzbm1wX2FwaS5oIGZvciB0aGUgZGVmaW5pdGlvbnMgb2YgdGhlc2Ugc3RydWN0dXJlcy4KIC5QUAorV2l0aCB0aGUKKy5JIHNubXBfYXN5bmNfc2VuZCgpCitjYWxsLAorLkkgc25tcF9yZWFkCit3aWxsIGludm9rZSB0aGUgc3BlY2lmaWVkIGNhbGxiYWNrIHdoZW4gdGhlIHJlc3BvbnNlIGlzIHJlY2VpdmVkLgorLlBQCiAuSSBTbm1wX3JlYWQsIHNubXBfc2VsZWN0X2luZm8sCiBhbmQKIC5JIHNubXBfdGltZW91dApAQCAtMTU2LDYgKzE4MiwxMyBAQAogdGltZXMgb3V0LAogLkkgc25tcF90aW1lb3V0CiBzaG91bGQgYmUgY2FsbGVkIHRvIHNlZSBpZiB0aGUgdGltZW91dCB3YXMgaW50ZW5kZWQgZm9yIFNOTVAuCisuUFAKKy5JIHNubXBfc3luY2hfcmVzcG9uc2UKK2lzIGEgY29udmVuaWVuY2Ugcm91dGluZSB0aGF0IHdpbGwgc2VuZCB0aGUgcmVxdWVzdCwKK3dhaXQgZm9yIHRoZSByZXNwb25zZSBhbmQgcHJvY2VzcyBpdCBiZWZvcmUgcmV0dXJuaW5nLgorU2VlIHRoZSBkZXNjcmlwdGlvbnMgb2YKKy5JICJzbm1wX3NlbmQiICIsICIgInNubXBfcmVhZCIKK2V0YyBmb3IgZGV0YWlscy4KIC5TSCBESUFHTk9TVElDUwogLlBQCiBQcmV2aW91cyB2ZXJzaW9ucyBvZiB0aGUgbGlicmFyeSB1c2VkCmRpZmYgLS1naXQgYS9tYW4vc25tcC5jb25mLjUuZGVmIGIvbWFuL3NubXAuY29uZi41LmRlZgppbmRleCAyZmU1ODEwLi40NjIwM2QwIDEwMDY0NAotLS0gYS9tYW4vc25tcC5jb25mLjUuZGVmCisrKyBiL21hbi9zbm1wLmNvbmYuNS5kZWYKQEAgLTM1LDggKzM1LDggQEAKICJkb250TG9hZEhvc3RDb25maWcgdHJ1ZSIgaW4geW91ciBzbm1wLmNvbmYgZmlsZS4KIC5TSCBDT01NQU5ELUxJTkUgT1BUSU9OUwogQWxsIG9mIHRoZSB0b2tlbnMgZGVzY3JpYmVkIGluIHRoaXMgZmlsZSBjYW4gYmUgdXNlZCBvbiB0aGUgY29tbWFuZAotbGluZSBvZiBOZXQtU05NUCBhcHBsaWNhdGlvbnMgYXMgd2VsbCBieSBwcmVmaXhpbmcgdGhlbSB3aXRoICItLSIuCi1FRywgc3BlY2lmeWluZyBcZkktLWRvbnRMb2FkSG9zdENvbmZpZz10cnVlXGZSIG9uIHRoZSBjb21tYW5kIGxpbmUgd2lsbAorbGluZSBvZiBOZXQtU05NUCBhcHBsaWNhdGlvbnMgYXMgd2VsbCBieSBwcmVmaXhpbmcgdGhlbSB3aXRoICJcLVwtIi4KK0VHLCBzcGVjaWZ5aW5nIFxmSVwtXC1kb250TG9hZEhvc3RDb25maWc9dHJ1ZVxmUiBvbiB0aGUgY29tbWFuZCBsaW5lIHdpbGwKIHR1cm4gb2YgbG9hZGluZyBvZiB0aGUgaG9zdCBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGVzLgogLlNIIElNUE9SVEFOVCBOT1RFCiBTZXZlcmFsIG9mIHRoZXNlIGRpcmVjdGl2ZXMgbWF5IGNvbnRhaW4gc2Vuc2l0aXZlIGluZm9ybWF0aW9uCkBAIC04MiwxMCArODIsMTAgQEAKIFRDUCB0byBcZklmb28uZXhtYXBsZS5jb21cZlIgb24gcG9ydCA5ODc2LgogLklQICJkZWZWZXJzaW9uICgxfDJjfDMpIgogZGVmaW5lcyB0aGUgZGVmYXVsdCB2ZXJzaW9uIG9mIFNOTVAgdG8gdXNlLgotVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiB1c2luZyB0aGUgXGZCLXZcZlIgb3B0aW9uLgorVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiB1c2luZyB0aGUgXGZCXC12XGZSIG9wdGlvbi4KIC5JUCAiZGVmQ29tbXVuaXR5IFNUUklORyIKIGRlZmluZXMgdGhlIGRlZmF1bHQgY29tbXVuaXR5IHRvIHVzZSBmb3IgU05NUHYxIGFuZCBTTk1QdjJjIHJlcXVlc3RzLgotVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiB1c2luZyB0aGUgXGZCLWNcZlIgb3B0aW9uLgorVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiB1c2luZyB0aGUgXGZCXC1jXGZSIG9wdGlvbi4KIC5cIi5JUCAiZHVtcFBhY2tldCAoMXx5ZXN8dHJ1ZXwwfG5vfGZhbHNlKSIKIC5JUCAiYWxpYXMgTkFNRSBERUZJTklUSU9OIgogQ3JlYXRlcyBhbiBhbGlhc2VkIHRpZWQgdG8gTkFNRSBmb3IgYSBnaXZlbiB0cmFuc3BvcnQgZGVmaW5pdGlvbi4gIFRoZQpAQCAtOTcsNyArOTcsNyBAQAogLklQICJkdW1wUGFja2V0IHllcyIKIGRlZmluZXMgd2hldGhlciB0byBkaXNwbGF5IGEgaGV4YWRlY2ltYWwgZHVtcCBvZiB0aGUgcmF3IFNOTVAgcmVxdWVzdHMKIHNlbnQgYW5kIHJlY2VpdmVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4KLVRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUgXGZCLWRcZlIgb3B0aW9uLgorVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBcZkJcLWRcZlIgb3B0aW9uLgogLklQICJkb0RlYnVnZ2luZyAoMXwwKSIKIHR1cm5zIG9uIGRlYnVnZ2luZyBmb3IgYWxsIGFwcGxpY2F0aW9ucyBydW4gaWYgc2V0IHRvIDEuCiAuXCIKQEAgLTEwNyw3ICsxMDcsNyBAQAogLklQICJkZWJ1Z1Rva2VucyBUT0tFTlssVE9LRU4uLi5dIgogZGVmaW5lcyB0aGUgZGVidWdnaW5nIHRva2VucyB0aGF0IHNob3VsZCBiZSB0dXJuZWQgb24gd2hlbgogXGZJZG9EZWJ1Z2dpbmdcZlIgaXMgc2V0LgotVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBcZkItRFxmUiBvcHRpb24uCitUaGlzIGlzIGVxdWl2YWxlbnQgdG8gdGhlIFxmQlwtRFxmUiBvcHRpb24uCiAuXCIuSVAgIjE2Yml0SURzICgxfHllc3x0cnVlfDB8bm98ZmFsc2UpIgogLklQICIxNmJpdElEcyB5ZXMiCiByZXN0cmljdHMgcmVxdWVzdElEcywgZXRjIHRvIDE2LWJpdCB2YWx1ZXMuCkBAIC0xNDMsNyArMTQzLDcgQEAKIC5JUCAibm9SYW5nZUNoZWNrIHllcyIKIGRpc2FibGVzIHRoZSB2YWxpZGF0aW9uIG9mIHZhcmJpbmQgdmFsdWVzIGFnYWluc3QgdGhlIE1JQiBkZWZpbml0aW9uCiBmb3IgdGhlIHJlbGV2YW50IE9JRC4KLVRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUgXGZCLUlyXGZSIG9wdGlvbi4KK1RoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUgXGZCXC1JclxmUiBvcHRpb24uCiAuSVAKIFRoaXMgZGlyZWN0aXZlIGlzIHByaW1hcmlseSByZWxldmFudCB0byB0aGUgXGZCc25tcHNldFxmUiBjb21tYW5kLAogYnV0IHdpbGwgYWxzbyBhcHBseSB0byBhbnkgYXBwbGljYXRpb24gdGhhdCBjYWxscyBcZklzbm1wX2FkZF92YXIoKVxmUgpAQCAtMTcwLDE2ICsxNzAsMjAgQEAKIFNwZWNpZmllcyB3aGV0aGVyIG9yIG5vdCB0aGUgaG9zdC1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGVzIGFyZQogbG9hZGVkLiAgU2V0IHRvICJ0cnVlIiB0byB0dXJuIG9mZiB0aGUgbG9hZGluZyBvZiB0aGUgaG9zdCBzcGVjaWZpYwogY29uZmlndXJhdGlvbiBmaWxlcy4KKy5JUCAicmV0cmllcyBJTlRFR0VSIgorU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgcmV0cmllcyB0byBiZSB1c2VkIGluIHRoZSByZXF1ZXN0cy4KKy5JUCAidGltZW91dCBJTlRFR0VSIgorU3BlY2lmaWVzIHRoZSB0aW1lb3V0IGluIHNlY29uZHMgYmV0d2VlbiByZXRyaWVzLgogLlwiCiAuXCIgWFhYIC0gSXQgaXMgcHJvYmFibHkgYWJvdXQgdGltZSB0byByZW1vdmUgdGhpcyBjaG9pY2UhCiAuXCIKIC5TSCBTTk1QdjMgU0VUVElOR1MKIC5JUCAiZGVmU2VjdXJpdHlOYW1lIFNUUklORyIKIGRlZmluZXMgdGhlIGRlZmF1bHQgc2VjdXJpdHkgbmFtZSB0byB1c2UgZm9yIFNOTVB2MyByZXF1ZXN0cy4KLVRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gdXNpbmcgdGhlIFxmQi11XGZSIG9wdGlvbi4KK1RoaXMgY2FuIGJlIG92ZXJyaWRkZW4gdXNpbmcgdGhlIFxmQlwtdVxmUiBvcHRpb24uCiAuSVAgImRlZlNlY3VyaXR5TGV2ZWwgbm9BdXRoTm9Qcml2fGF1dGhOb1ByaXZ8YXV0aFByaXYiCiBkZWZpbmVzIHRoZSBkZWZhdWx0IHNlY3VyaXR5IGxldmVsIHRvIHVzZSBmb3IgU05NUHYzIHJlcXVlc3RzLgotVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiB1c2luZyB0aGUgXGZCLWxcZlIgb3B0aW9uLgorVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiB1c2luZyB0aGUgXGZCXC1sXGZSIG9wdGlvbi4KIC5JUAogSWYgbm90IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMgdG9rZW4gaXMgXGZJbm9BdXRoTm9Qcml2XGZSLgogLlwiCkBAIC0xOTUsNyArMTk5LDcgQEAKIC5JUCAiZGVmUHJpdlBhc3NwaHJhc2UgU1RSSU5HIgogZGVmaW5lIHRoZSBkZWZhdWx0IGF1dGhlbnRpY2F0aW9uIGFuZCBwcml2YWN5IHBhc3MgcGhyYXNlcyB0byB1c2UKIGZvciBTTk1QdjMgcmVxdWVzdHMuCi1UaGVzZSBjYW4gYmUgb3ZlcnJpZGRlbiB1c2luZyB0aGUgXGZCLUFcZlIgYW5kIFxmQi1YXGZSIG9wdGlvbnMgcmVzcGVjdGl2ZWx5LgorVGhlc2UgY2FuIGJlIG92ZXJyaWRkZW4gdXNpbmcgdGhlIFxmQlwtQVxmUiBhbmQgXGZCXC1YXGZSIG9wdGlvbnMgcmVzcGVjdGl2ZWx5LgogLklQCiBUaGUgCiAuQiBkZWZQYXNzcGhyYXNlCkBAIC0yMDUsNyArMjA5LDcgQEAKIC5JUCAiZGVmUHJpdlR5cGUgREVTfEFFUyIKIGRlZmluZSB0aGUgZGVmYXVsdCBhdXRoZW50aWNhdGlvbiBhbmQgcHJpdmFjeSBwcm90b2NvbHMgdG8gdXNlIGZvcgogU05NUHYzIHJlcXVlc3RzLgotVGhlc2UgY2FuIGJlIG92ZXJyaWRkZW4gdXNpbmcgdGhlIFxmQi1hXGZSIGFuZCBcZkIteFxmUiBvcHRpb25zIHJlc3BlY3RpdmVseS4KK1RoZXNlIGNhbiBiZSBvdmVycmlkZGVuIHVzaW5nIHRoZSBcZkJcLWFcZlIgYW5kIFxmQlwteFxmUiBvcHRpb25zIHJlc3BlY3RpdmVseS4KIC5JUAogSWYgbm90IHNwZWNpZmllZCwgU05NUHYzIHJlcXVlc3RzIHdpbGwgZGVmYXVsdCB0byBNRDUgYXV0aGVudGljYXRpb24KIGFuZCBERVMgZW5jcnlwdGlvbi4KQEAgLTIxNyw3ICsyMjEsNyBAQAogLlJFCiAuSVAgImRlZkNvbnRleHQgU1RSSU5HIgogZGVmaW5lcyB0aGUgZGVmYXVsdCBjb250ZXh0IHRvIHVzZSBmb3IgU05NUHYzIHJlcXVlc3RzLgotVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiB1c2luZyB0aGUgXGZCLW5cZlIgb3B0aW9uLgorVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiB1c2luZyB0aGUgXGZCXC1uXGZSIG9wdGlvbi4KIC5JUAogSWYgbm90IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMgdG9rZW4gaXMgdGhlIGRlZmF1bHQgY29udGV4dAogKGkuZS4gdGhlIGVtcHR5IHN0cmluZyAiIikuCkBAIC0yMzYsNyArMjQwLDcgQEAKIG5vcm1hbGx5IGhhcyBiZXR0ZXIgZW50cm9weSB0aGFuIGEgcGFzc3dvcmQgdW5sZXNzIGl0IGlzCiBhbWF6aW5nbHkgbG9uZykuCiBUaGUgZGlyZWN0aXZlcyBhcmUgZXF1aXZhbGVudCB0byB0aGUgc2hvcnQtZm9ybQotY29tbWFuZCBsaW5lIG9wdGlvbnMgXGZCLTNtXGZSLCBcZkItM01cZlIsIFxmQi0za1xmUiwgYW5kIFxmQi0zS1xmUi4KK2NvbW1hbmQgbGluZSBvcHRpb25zIFxmQlwtM21cZlIsIFxmQlwtM01cZlIsIFxmQlwtM2tcZlIsIGFuZCBcZkJcLTNLXGZSLgogLklQCiBMb2NhbGl6ZWQga2V5cyBhcmUKIG1hc3RlciBrZXlzIHdoaWNoIGhhdmUgYmVlbiBjb252ZXJ0ZWQgdG8gYSB1bmlxdWUga2V5IHdoaWNoIGlzIG9ubHkKQEAgLTI1Niw2ICsyNjAsMTIgQEAKIHByaXZpbGVnZWQgZm9yIFNTSCB1c2VycyB0aGF0IGFyZSBhbGxvd2VkIHRvIGNvbm5lY3QgdG8gdGhlIFNOTVAKIHNlcnZpY2UgKFZBQ00gYWNjZXNzIHN0aWxsIG5lZWRzIHRvIGJlIGdyYW50ZWQgYXMgd2VsbCwgbW9zdCBsaWtlbHkKIHRocm91Z2ggdGhlIFRTTSBzZWN1cml0eSBtb2RlbCkuCisuSVAgInNzaHVzZXJuYW1lIE5BTUUiCitTZXRzIHRoZSBTU0ggdXNlciBuYW1lIGZvciBsb2dnaW5nIGludG8gdGhlIHJlbW90ZSBzeXN0ZW0uCisuSVAgInNzaHB1YmtleSBGSUxFIgorU2V0IHRoZSBwdWJsaWMga2V5IGZpbGUgdG8gdXNlIHdoZW4gY29ubmVjdGluZyB0byBhIHJlbW90ZSBzeXN0ZW0uCisuSVAgInNzaHByaXZrZXkgRklMRSIKK1NldCB0aGUgcHJpdmF0ZSBrZXkgZmlsZSB0byB1c2Ugd2hlbiBjb25uZWN0aW5nIHRvIGEgcmVtb3RlIHN5c3RlbS4KIC5cIgogLlwiIFhYWCAtIGFyZSB0aGVzZSBsZW5ndGhzIHN0aWxsIGNvcnJlY3QgPwogLlwiCkBAIC0yOTYsMTggKzMwNiwxOCBAQAogLlNIIE1JQiBIQU5ETElORwogLklQICJtaWJkaXJzIERJUkxJU1QiCiBzcGVjaWZpZXMgYSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIHNlYXJjaCBmb3IgTUlCIGZpbGVzLgotVGhpcyBvcGVyYXRlcyBpbiB0aGUgc2FtZSB3YXkgYXMgdGhlIFxmQi1NXGZSIG9wdGlvbiAtCitUaGlzIG9wZXJhdGVzIGluIHRoZSBzYW1lIHdheSBhcyB0aGUgXGZCXC1NXGZSIG9wdGlvbiAtCiBzZWUgXGZJc25tcGNtZCgxKVxmUiBmb3IgZGV0YWlscy4KIE5vdGUgdGhhdCB0aGlzIHZhbHVlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZQogLkIgTUlCRElSUwotZW52aXJvbm1lbnQgdmFyaWFibGUsIGFuZCB0aGUgXGZCLU1cZlIgb3B0aW9uLgorZW52aXJvbm1lbnQgdmFyaWFibGUsIGFuZCB0aGUgXGZCXC1NXGZSIG9wdGlvbi4KIC5JUCAibWlicyBNSUJMSVNUIgogc3BlY2lmaWVzIGEgbGlzdCBvZiBNSUIgbW9kdWxlcyAobm90IGZpbGVzKSB0aGF0IHNob3VsZCBiZSBsb2FkZWQuCi1UaGlzIG9wZXJhdGVzIGluIHRoZSBzYW1lIHdheSBhcyB0aGUgXGZCLW1cZlIgb3B0aW9uIC0KK1RoaXMgb3BlcmF0ZXMgaW4gdGhlIHNhbWUgd2F5IGFzIHRoZSBcZkJcLW1cZlIgb3B0aW9uIC0KIHNlZSBcZklzbm1wY21kKDEpXGZSIGZvciBkZXRhaWxzLgogTm90ZSB0aGF0IHRoaXMgbGlzdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUKIC5CIE1JQlMKLWVudmlyb25tZW50IHZhcmlhYmxlLCBhbmQgdGhlIFxmQi1tXGZSIG9wdGlvbi4KK2Vudmlyb25tZW50IHZhcmlhYmxlLCBhbmQgdGhlIFxmQlwtbVxmUiBvcHRpb24uCiAuSVAgIm1pYmZpbGUgRklMRSIKIHNwZWNpZmllcyBhIChzaW5nbGUpIE1JQiBmaWxlIHRvIGxvYWQsIGluIGFkZGl0aW9uIHRvIHRoZQogbGlzdCByZWFkIGZyb20gdGhlIFxmSW1pYnNcZlIgdG9rZW4gKG9yIGVxdWl2YWxlbnQgY29uZmlndXJhdGlvbikuCkBAIC0zMTksNyArMzI5LDcgQEAKIC5JUCAiY29tbWVudFRvRU9MICgxfHllc3x0cnVlfDB8bm98ZmFsc2UpIgogd2hldGhlciBNSUIgcGFyc2luZyBzaG91bGQgYmUgc3RyaWN0IGFib3V0IGNvbW1lbnQgdGVybWluYXRpb24uCiBNYW55IE1JQiB3cml0ZXJzIGFzc3VtZSB0aGF0IEFTTi4xIGNvbW1lbnRzIGV4dGVuZCB0byB0aGUgZW5kIG9mCi10aGUgdGV4dCBsaW5lLCByYXRoZXIgdGhhbiBiZWluZyB0ZXJtaW5hdGVkIGJ5IHRoZSBuZXh0ICItLSIgdG9rZW4uCit0aGUgdGV4dCBsaW5lLCByYXRoZXIgdGhhbiBiZWluZyB0ZXJtaW5hdGVkIGJ5IHRoZSBuZXh0ICJcLVwtIiB0b2tlbi4KIFRoaXMgdG9rZW4gY2FuIGJlIHVzZWQgdG8gYWNjZXB0IHN1Y2ggKHN0cmljdGx5IGluY29ycmVjdCkgTUlCcy4KIC5icgogTm90ZSB0aGF0IHRoaXMgZGlyZWN0aXZlIHdhcyBwcmV2aW91cyAobWlzLSluYW1lZCBcZklzdHJpY3RDb21tZW50VGVybVxmUiwKQEAgLTM0MCw0OSArMzUwLDQ5IEBACiBiZWluZyBwYXNzZWQgdG8gdGhlIGxvZ2dpbmcgcm91dGluZXMuICBUaGlzIG9wdGlvbiBpcyBvbmx5IHVzZWQgd2hlbiBmaWxlIGxvZ2dpbmcgaXMgYWN0aXZlLiAKIC5JUCAicHJpbnROdW1lcmljRW51bXMgKDF8eWVzfHRydWV8MHxub3xmYWxzZSkiCiBFcXVpdmFsZW50IHRvCi0uQlIgLU9lIC4KKy5CUiBcLU9lIC4KIC5JUCAicHJpbnROdW1lcmljT2lkcyAoMXx5ZXN8dHJ1ZXwwfG5vfGZhbHNlKSIKIEVxdWl2YWxlbnQgdG8KLS5CUiAtT24gLgorLkJSIFwtT24gLgogLklQICJkb250QnJlYWtkb3duT2lkcyAoMXx5ZXN8dHJ1ZXwwfG5vfGZhbHNlKSIKIEVxdWl2YWxlbnQgdG8KLS5CUiAtT2IgLgorLkJSIFwtT2IgLgogLklQICJlc2NhcGVRdW90ZXMgKDF8eWVzfHRydWV8MHxub3xmYWxzZSkiCiBFcXVpdmFsZW50IHRvCi0uQlIgLU9FIC4KKy5CUiBcLU9FIC4KIC5JUCAicXVpY2tQcmludGluZyAoMXx5ZXN8dHJ1ZXwwfG5vfGZhbHNlKSIKIEVxdWl2YWxlbnQgdG8KLS5CUiAtT3EgLgorLkJSIFwtT3EgLgogLklQICJwcmludFZhbHVlT25seSAoMXx5ZXN8dHJ1ZXwwfG5vfGZhbHNlKSIKIEVxdWl2YWxlbnQgdG8KLS5CUiAtT3YgLgorLkJSIFwtT3YgLgogLklQICJkb250UHJpbnRVbml0cyAoMXx5ZXN8dHJ1ZXwwfG5vfGZhbHNlKSIKIEVxdWl2YWxlbnQgdG8KLS5CUiAtT1UgLgorLkJSIFwtT1UgLgogLklQICJudW1lcmljVGltZXRpY2tzICgxfHllc3x0cnVlfDB8bm98ZmFsc2UpIgogRXF1aXZhbGVudCB0bwotLkJSIC1PdCAuCisuQlIgXC1PdCAuCiAuSVAgInByaW50SGV4VGV4dCAoMXx5ZXN8dHJ1ZXwwfG5vfGZhbHNlKSIKIEVxdWl2YWxlbnQgdG8KLS5CUiAtT1QgLgorLkJSIFwtT1QgLgogLklQICJoZXhPdXRwdXRMZW5ndGggaW50ZWdlciIKIFNwZWNpZmllcyB3aGVyZSB0byBicmVhayB1cCB0aGUgb3V0cHV0IG9mIGhleGFkZWNpbWFsIHN0cmluZ3MuICAKIFNldCB0byAwIHRvIGRpc2FibGUgbGluZSBicmVha3MuICBEZWZhdWx0cyB0byAxNi4KIC5JUCAic3VmZml4UHJpbnRpbmcgKDB8MXwyKSIKIFRoZSB2YWx1ZSAxIGlzIGVxdWl2YWxlbnQgdG8KLS5CIC1PcworLkIgXC1PcwogYW5kIHRoZSB2YWx1ZSAyIGlzIGVxdWl2YWxlbnQgdG8KLS5CUiAtT1MgLgorLkJSIFwtT1MgLgogLklQICJvaWRPdXRwdXRGb3JtYXQgKDF8MnwzfDR8NXw2KSIKLU1hcHMgLU8gb3B0aW9ucyBhcyBmb2xsb3c6IC1Pcz0xLCAtT1M9MiwgLU9mPTMsIC1Pbj00LCAtT3U9NS4KLVRoZSB2YWx1ZSA2IGhhcyBubyBtYXRjaGluZyAtTyBvcHRpb24uIEl0IHN1cHByZXNzZXMgb3V0cHV0LgorTWFwcyBcLU8gb3B0aW9ucyBhcyBmb2xsb3c6IFwtT3M9MSwgXC1PUz0yLCBcLU9mPTMsIFwtT249NCwgXC1PdT01LgorVGhlIHZhbHVlIDYgaGFzIG5vIG1hdGNoaW5nIFwtTyBvcHRpb24uIEl0IHN1cHByZXNzZXMgb3V0cHV0LgogLklQICJleHRlbmRlZEluZGV4ICgxfHllc3x0cnVlfDB8bm98ZmFsc2UpIgogRXF1aXZhbGVudCB0bwotLkJSIC1PWCAuCisuQlIgXC1PWCAuCiAuSVAgIm5vRGlzcGxheUhpbnQgKDF8eWVzfHRydWV8MHxub3xmYWxzZSkiCiBEaXNhYmxlcyB0aGUgdXNlIG9mIERJU1BMQVktSElOVCBpbmZvcm1hdGlvbiB3aGVuIHBhcnNpbmcgaW5kaWNlcyBhbmQKIHZhbHVlcyB0byBzZXQuIEVxdWl2YWxlbnQgdG8KLS5CUiAtSWggLgorLkJSIFwtSWggLgogLlNIIEZJTEVTCiAuSVAgIlN5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb24gZmlsZXM6IgogU1lTQ09ORkRJUi9zbm1wL3NubXAuY29uZgpkaWZmIC0tZ2l0IGEvbWFuL3NubXBidWxrZ2V0LjEuZGVmIGIvbWFuL3NubXBidWxrZ2V0LjEuZGVmCmluZGV4IGI0ZTA2MmQuLjI1MjEwZjMgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wYnVsa2dldC4xLmRlZgorKysgYi9tYW4vc25tcGJ1bGtnZXQuMS5kZWYKQEAgLTE3LDEzICsxNywxMyBAQAogcGlucG9pbnQgd2h5IHRoZSByZXF1ZXN0IHdhcyBtYWxmb3JtZWQuCiAuU0ggT1BUSU9OUwogLlRQIDgKLS5CSSAtQ24gPE5VTT4KKy5CSSBcLUNuIDxOVU0+CiBTZXQgdGhlCiAuSSBub24tcmVwZWF0ZXJzCiBmaWVsZCBpbiB0aGUgR0VUQlVMSyBQRFUuICBUaGlzIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHN1cHBsaWVkCiB2YXJpYWJsZXMgdGhhdCBzaG91bGQgbm90IGJlIGl0ZXJhdGVkIG92ZXIuICBUaGUgZGVmYXVsdCBpcyAwLgogLlRQCi0uQkkgLUNyIDxOVU0+CisuQkkgXC1DciA8TlVNPgogU2V0IHRoZQogLkkgbWF4LXJlcGV0aXRpb25zCiBmaWVsZCBpbiB0aGUgR0VUQlVMSyBQRFUuICBUaGlzIHNwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2YKQEAgLTQxLDcgKzQxLDcgQEAKIC5TSCBFWEFNUExFCiBUaGUgY29tbWFuZDoKIC5QUAotc25tcGJ1bGtnZXQgLXYyYyAtQ24xIC1DcjUgLU9zIC1jIHB1YmxpYyB6ZXVzIHN5c3RlbSBpZlRhYmxlCitzbm1wYnVsa2dldCBcLXYyYyBcLUNuMSBcLUNyNSBcLU9zIFwtYyBwdWJsaWMgemV1cyBzeXN0ZW0gaWZUYWJsZQogLlBQCiB3aWxsIHJldHJpZXZlIHRoZSB2YXJpYWJsZSBzeXN0ZW0uc3lzRGVzY3IuMCAod2hpY2ggaXMgdGhlCiBsZXhpY29ncmFwaGljYWxseSBuZXh0IG9iamVjdCB0byBzeXN0ZW0pIGFuZCB0aGUgZmlyc3QgNSBvYmplY3RzIGluCmRpZmYgLS1naXQgYS9tYW4vc25tcGJ1bGt3YWxrLjEuZGVmIGIvbWFuL3NubXBidWxrd2Fsay4xLmRlZgppbmRleCBlNmM3YTY5Li5jNWY0YTA2IDEwMDY0NAotLS0gYS9tYW4vc25tcGJ1bGt3YWxrLjEuZGVmCisrKyBiL21hbi9zbm1wYnVsa3dhbGsuMS5kZWYKQEAgLTEsNyArMSw3IEBACiAuXCIgLSotIG5yb2ZmIC0qLQotLlwiIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodC4gCi0uXCIgU2VlIHRoZSBOZXQtU05NUCBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIKLS5cIiBjb3B5cmlnaHRzIHRoYXQgbWF5IGFwcGx5OgorLlwiIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodC4gIFNlZQorLlwiIHRoZSBOZXQtU05NUCBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cworLlwiIHRoYXQgbWF5IGFwcGx5OgogLlwiIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiIAlDb3B5cmlnaHQgMTk4OCwgMTk4OSBieSBDYXJuZWdpZSBNZWxsb24gVW5pdmVyc2l0eQogLlwiIApAQCAtNDIsNyArNDIsNyBAQAogLklSIHZhcmlhYmxlcyg1KSAuCiBJZiBubyBPSUQgYXJndW1lbnQgaXMgcHJlc2VudCwKIC5CIHNubXBidWxrd2Fsawotd2lsbCBzZWFyY2ggTUlCLTIuCit3aWxsIHNlYXJjaCBNSUJcLTIuCiAuUFAKIElmIHRoZSBuZXR3b3JrIGVudGl0eSBoYXMgYW4gZXJyb3IgcHJvY2Vzc2luZyB0aGUgcmVxdWVzdCBwYWNrZXQsIGFuCiBlcnJvciBwYWNrZXQgd2lsbCBiZSByZXR1cm5lZCBhbmQgYSBtZXNzYWdlIHdpbGwgYmUgc2hvd24sIGhlbHBpbmcgdG8KQEAgLTUyLDcgKzUyLDcgQEAKIE1JQiwgdGhlIG1lc3NhZ2UgIkVuZCBvZiBNSUIiIHdpbGwgYmUgZGlzcGxheWVkLgogLlNIIE9QVElPTlMKIC5UUCA4Ci0uQiAtQ2MKKy5CIFwtQ2MKIERvIG5vdCBjaGVjayB3aGV0aGVyIHRoZSByZXR1cm5lZCBPSURzIGFyZSBpbmNyZWFzaW5nLiAgU29tZSBhZ2VudHMKIChMYXNlckpldHMgYXJlIGFuIGV4YW1wbGUpIHJldHVybiBPSURzIG91dCBvZiBvcmRlciwgYnV0IGNhbgogY29tcGxldGUgdGhlIHdhbGsgYW55d2F5LiAgT3RoZXIgYWdlbnRzIHJldHVybiBPSURzIHRoYXQgYXJlIG91dCBvZgpAQCAtNjIsMTAgKzYyLDEwIEBACiAuQiBzbm1wYnVsa3dhbGsKIHRyaWVzIHRvIGRldGVjdCB0aGlzIGJlaGF2aW9yIGFuZCB3YXJucyB5b3Ugd2hlbiBpdCBoaXRzIGFuIGFnZW50CiBhY3RpbmcgaWxsZWdhbGx5LiAgVXNlCi0uQiAtQ2MKKy5CIFwtQ2MKIHRvIHR1cm4gb2ZmIHRoaXMgYmVoYXZpb3VyLgogLlRQCi0uQiAtQ2kKKy5CIFwtQ2kKIEluY2x1ZGUgdGhlIGdpdmVuIE9JRCBpbiB0aGUgc2VhcmNoIHJhbmdlLiAgTm9ybWFsbHkKIC5CIHNubXBidWxrd2FsawogdXNlcyBHRVRCVUxLIHJlcXVlc3RzIHN0YXJ0aW5nIHdpdGggdGhlIE9JRCB5b3Ugc3BlY2lmaWVkIGFuZCByZXR1cm5zCkBAIC03NCwxNiArNzQsMTYgQEAKIHJlc3VsdHMgaWYgaXQgaXMgYSB2YWxpZCBPSUQgaW4gdGhlIHRyZWUgaXRzZWxmLiAgVGhpcyBvcHRpb24gbGV0cyB5b3UKIGRvIHRoaXMuCiAuVFAKLS5CSSAtQ24gPE5VTT4KKy5CSSBcLUNuIDxOVU0+CiBTZXQgdGhlCiAuSSBub24tcmVwZWF0ZXJzCiBmaWVsZCBpbiB0aGUgR0VUQlVMSyBQRFVzLiAgVGhpcyBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBzdXBwbGllZAogdmFyaWFibGVzIHRoYXQgc2hvdWxkIG5vdCBiZSBpdGVyYXRlZCBvdmVyLiAgVGhlIGRlZmF1bHQgaXMgMC4KIC5UUAotLkIgLUNwCisuQiBcLUNwCiBVcG9uIGNvbXBsZXRpb24gb2YgdGhlIHdhbGssIHByaW50IHRoZSBudW1iZXIgb2YgdmFyaWFibGVzIGZvdW5kLgogLlRQCi0uQkkgLUNyIDxOVU0+CisuQkkgXC1DciA8TlVNPgogU2V0IHRoZQogLkkgbWF4LXJlcGV0aXRpb25zCiBmaWVsZCBpbiB0aGUgR0VUQlVMSyBQRFVzLiAgVGhpcyBzcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mCkBAIC0xMDEsNyArMTAxLDcgQEAKIC5TSCBFWEFNUExFCiBUaGUgY29tbWFuZDoKIC5QUAotc25tcGJ1bGt3YWxrIC12MmMgLU9zIC1jIHB1YmxpYyB6ZXVzIHN5c3RlbQorc25tcGJ1bGt3YWxrIFwtdjJjIFwtT3MgXC1jIHB1YmxpYyB6ZXVzIHN5c3RlbQogLlBQCiB3aWxsIHJldHJpZXZlIGFsbCBvZiB0aGUgdmFyaWFibGVzIHVuZGVyIHN5c3RlbToKIC5QUApkaWZmIC0tZ2l0IGEvbWFuL3NubXBjbWQuMS5kZWYgYi9tYW4vc25tcGNtZC4xLmRlZgppbmRleCBkOTdjYzE0Li5iYjRlZDk2IDEwMDY0NAotLS0gYS9tYW4vc25tcGNtZC4xLmRlZgorKysgYi9tYW4vc25tcGNtZC4xLmRlZgpAQCAtNDksOCArNDksOCBAQAogSW4gYWRkaXRpb24gdG8gdGhlIG9wdGlvbnMgZGVzY3JpYmVkIGluIHRoaXMgbWFudWFsIHBhZ2UsIGFsbCBvZiB0aGUKIHRva2VucyBkZXNjcmliZWQgaW4gdGhlIFxmSXNubXAuY29uZlxmUiBhbmQgb3RoZXIgLmNvbmYgbWFudWFsIHBhZ2VzCiBjYW4gYmUgdXNlZCBvbiB0aGUgY29tbWFuZCBsaW5lIG9mIE5ldC1TTk1QIGFwcGxpY2F0aW9ucyBhcyB3ZWxsIGJ5Ci1wcmVmaXhpbmcgdGhlbSB3aXRoICItLSIuICBFRywgc3BlY2lmeWluZwotXGZJLS1kb250TG9hZEhvc3RDb25maWc9dHJ1ZVxmUiBvbiB0aGUgY29tbWFuZCBsaW5lIHdpbGwgdHVybiBvZgorcHJlZml4aW5nIHRoZW0gd2l0aCAiXC1cLSIuICBFRywgc3BlY2lmeWluZworXGZJXC1cLWRvbnRMb2FkSG9zdENvbmZpZz10cnVlXGZSIG9uIHRoZSBjb21tYW5kIGxpbmUgd2lsbCB0dXJuIG9mCiBsb2FkaW5nIG9mIHRoZSBob3N0IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZmlsZXMuCiAuUFAKIFRoZSBzbm1wLmNvbmYgZmlsZSBzZXR0aW5ncyBhbmQgdGhlIGRvdWJsZS1kYXNoIGFyZ3VtZW50cyBvdmVyLXJpZGUKQEAgLTY0LDEwICs2NCwxMCBAQAogd2hhdCB2ZXJzaW9uIG9mIFNOTVAgeW91IGFyZSB1c2luZy4gIFNlZSBmdXJ0aGVyIGJlbG93IGZvciBvcHRpb25zCiB0aGF0IGNvbnRyb2wgc3BlY2lmaWMgdmVyc2lvbnMgb3Igc3ViLW1vZHVsZXMgb2YgdGhlIFNOTVAgcHJvdG9jb2wuIAogLlRQCi0uQiAtZAorLkIgXC1kCiBEdW1wIChpbiBoZXhhZGVjaW1hbCkgdGhlIHJhdyBTTk1QIHBhY2tldHMgc2VudCBhbmQgcmVjZWl2ZWQuCiAuVFAKLS5CIC1EXGZJW1RPS0VOWywuLi5dXQorLkIgXC1EXGZJW1RPS0VOWywuLi5dXQogVHVybiBvbiBkZWJ1Z2dpbmcgb3V0cHV0IGZvciB0aGUgZ2l2ZW4KIC5JUiAiVE9LRU4iICIocykuIgogVHJ5CkBAIC03NSwyNCArNzUsMjQgQEAKIGZvciBleHRyZW1lbHkgdmVyYm9zZSBvdXRwdXQuCiAuVFAKIC5UUAotLkIgLWgsIC0taGVscAorLkIgXC1oLCBcLVwtaGVscAogRGlzcGxheSBhIGJyaWVmIHVzYWdlIG1lc3NhZ2UgYW5kIHRoZW4gZXhpdC4KIC5UUAotLkIgLUgKKy5CIFwtSAogRGlzcGxheSBhIGxpc3Qgb2YgY29uZmlndXJhdGlvbiBmaWxlIGRpcmVjdGl2ZXMgdW5kZXJzdG9vZCBieSB0aGUKIGNvbW1hbmQgYW5kIHRoZW4gZXhpdC4KIC5UUAotLkJJIC1JICIgW2JyUmh1XSIKKy5CSSBcLUkgIiBbYnJSaHVdIgogU3BlY2lmaWVzIGlucHV0IHBhcnNpbmcgb3B0aW9ucy4gU2VlIAogLkIgSU5QVVQgT1BUSU9OUyAKIGJlbG93LgogLlRQCi0uQkkgLUwgIiBbZUVmRm9Pc1NdIgorLkJJIFwtTCAiIFtlRWZGb09zU10iCiBTcGVjaWZpZXMgb3V0cHV0IGxvZ2dpbmcgb3B0aW9ucy4gU2VlIAogLkIgTE9HR0lORyBPUFRJT05TIAogYmVsb3cuCiAuVFAKLS5CSSAtbSAiIE1JQkxJU1QiCisuQkkgXC1tICIgTUlCTElTVCIKIFNwZWNpZmllcyBhIGNvbG9uIHNlcGFyYXRlZCBsaXN0IG9mIE1JQiBtb2R1bGVzIChub3QgZmlsZXMpIHRvIGxvYWQgZm9yCiB0aGlzIGFwcGxpY2F0aW9uLiAgVGhpcyBvdmVycmlkZXMgKG9yIGF1Z21lbnRzKSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKIE1JQlMsIHRoZSBcZklzbm1wLmNvbmZcZlIgZGlyZWN0aXZlIFxmSW1pYnNcZlIsIGFuZCB0aGUgbGlzdCBvZiBNSUJzCkBAIC0xMDAsNyArMTAwLDcgQEAKIC5JUAogSWYgCiAuSSBNSUJMSVNUCi1oYXMgYSBsZWFkaW5nICctJyBvciAnKycgY2hhcmFjdGVyLCB0aGVuIHRoZSBNSUIgbW9kdWxlcyBsaXN0ZWQgYXJlCitoYXMgYSBsZWFkaW5nICdcLScgb3IgJysnIGNoYXJhY3RlciwgdGhlbiB0aGUgTUlCIG1vZHVsZXMgbGlzdGVkIGFyZQogbG9hZGVkIGluIGFkZGl0aW9uIHRvIHRoZSBkZWZhdWx0IGxpc3QsIGNvbWluZyBiZWZvcmUgb3IgYWZ0ZXIKIHRoaXMgbGlzdCByZXNwZWN0aXZlbHkuCiBPdGhlcndpc2UsIHRoZSBzcGVjaWZpZWQgTUlCcyBhcmUgbG9hZGVkIFxmSWluc3RlYWRcZlIgb2YgdGhpcwpAQCAtMTEyLDcgKzExMiw3IEBACiBFdmVyeSBmaWxlIHdob3NlIG5hbWUgZG9lcyBub3QgYmVnaW4gd2l0aCAiLiIgd2lsbCBiZSBwYXJzZWQgYXMKIGlmIGl0IHdlcmUgYSBNSUIgZmlsZS4KIC5UUAotLkJJIC1NICIgRElSTElTVCIKKy5CSSBcLU0gIiBESVJMSVNUIgogU3BlY2lmaWVzIGEgY29sb24gc2VwYXJhdGVkIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGZvciBNSUJzLgogVGhpcyBvdmVycmlkZXMgKG9yIGF1Z21lbnRzKSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgTUlCRElSUywKIHRoZSBcZklzbm1wLmNvbmZcZlIgZGlyZWN0aXZlIFxmSW1pYmRpcnNcZlIsIGFuZCB0aGUgZGVmYXVsdApAQCAtMTIxLDcgKzEyMSw3IEBACiAuSVAKIElmIAogLkkgRElSTElTVAotaGFzIGEgbGVhZGluZyAnLScgb3IgJysnIGNoYXJhY3RlciwgdGhlbiB0aGUgZ2l2ZW4gZGlyZWN0b3JpZXMgYXJlCitoYXMgYSBsZWFkaW5nICdcLScgb3IgJysnIGNoYXJhY3RlciwgdGhlbiB0aGUgZ2l2ZW4gZGlyZWN0b3JpZXMgYXJlCiBhZGRlZCB0byB0aGUgZGVmYXVsdCBsaXN0LCBiZWluZyBzZWFyY2hlZCBiZWZvcmUgb3IgYWZ0ZXIgdGhlCiBkaXJlY3RvcmllcyBvbiB0aGlzIGxpc3QgcmVzcGVjdGl2ZWx5LgogT3RoZXJ3aXNlLCB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yaWVzIGFyZSBzZWFyY2hlZCBcZklpbnN0ZWFkXGZSCkBAIC0xMzUsNDYgKzEzNSw0NiBAQAogVG8gYXZvaWQgc2VhcmNoaW5nIGFueSBNSUIgZGlyZWN0b3JpZXMsIHNldCB0aGUgTUlCRElSUwogZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gdGhlIGVtcHR5IHN0cmluZyAoIiIpLgogLlwiCi0uXCIgWFhYIC0gb3IgICAgIC1NICIiICAgID8/CisuXCIgWFhYIC0gb3IgICAgIFwtTSAiIiAgICA/PwogLlwiCiAKLU5vdGUgdGhhdCBNSUJzIHNwZWNpZmllZCB1c2luZyB0aGUgLW0gb3B0aW9uIG9yIHRoZSBcZkltaWJzXGZSCitOb3RlIHRoYXQgTUlCcyBzcGVjaWZpZWQgdXNpbmcgdGhlIFwtbSBvcHRpb24gb3IgdGhlIFxmSW1pYnNcZlIKIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlIHdpbGwgYmUgbG9hZGVkIGZyb20gb25lIG9mIHRoZSBkaXJlY3RvcmllcwotbGlzdGVkIGJ5IHRoZSAtTSBvcHRpb24gKG9yIGVxdWl2YWxlbnRzKS4KK2xpc3RlZCBieSB0aGUgXC1NIG9wdGlvbiAob3IgZXF1aXZhbGVudHMpLgogVGhlIFxmSW1pYmZpbGVcZlIgZGlyZWN0aXZlIHRha2VzIGEgZnVsbCBwYXRoIHRvIHRoZSBzcGVjaWZpZWQgTUlCCiBmaWxlLCBzbyB0aGlzIGRvZXMgbm90IG5lZWQgdG8gYmUgaW4gdGhlIE1JQiBkaXJlY3Rvcnkgc2VhcmNoIGxpc3QuCiAuVFAKLS5CIC12IFxmSTFcZlIgfCBcZkkyY1xmUiB8IFxmSTMKKy5CIFwtdiBcZkkxXGZSIHwgXGZJMmNcZlIgfCBcZkkzCiBTcGVjaWZpZXMgdGhlIHByb3RvY29sIHZlcnNpb24gdG8gdXNlOiAxIChSRkNzIDExNTUtMTE1NyksIDJjIChSRkNzIDE5MDEtMTkwOCksCiBvciAzIChSRkNzIDI1NzEtMjU3NCkuICBUaGUgZGVmYXVsdCBpcyB0eXBpY2FsbHkgdmVyc2lvbiAzLgogT3ZlcnJpZGVzIHRoZSBcZklkZWZWZXJzaW9uXGZSIHRva2VuIGluIHRoZQogLkkgc25tcC5jb25mCiBmaWxlLgotLkJJIC1PICIgW2FiZUVmbnFRc1N0VHVVdnhYXSIKKy5CSSBcLU8gIiBbYWJlRWZucVFzU3RUdVV2eFhdIgogU3BlY2lmaWVzIG91dHB1dCBwcmludGluZyBvcHRpb25zLiBTZWUgCiAuQiBPVVRQVVQgT1BUSU9OUwogYmVsb3cuCiAuVFAKLS5CSSAtUCAiIFtjZGVSdXdXXSIKKy5CSSBcLVAgIiBbY2RlUnV3V10iCiBTcGVjaWZpZXMgTUlCIHBhcnNpbmcgb3B0aW9ucy4gIFNlZQogLkIgTUlCIFBBUlNJTkcgT1BUSU9OUwogYmVsb3cuCiAuVFAKLS5CSSAtciAiIHJldHJpZXMiCisuQkkgXC1yICIgcmV0cmllcyIKIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHJldHJpZXMgdG8gYmUgdXNlZCBpbiB0aGUgcmVxdWVzdHMuIFRoZSBkZWZhdWx0CiBpcyA1LgogLlRQCi0uQkkgLXQgIiB0aW1lb3V0IgorLkJJIFwtdCAiIHRpbWVvdXQiCiBTcGVjaWZpZXMgdGhlIHRpbWVvdXQgaW4gc2Vjb25kcyBiZXR3ZWVuIHJldHJpZXMuIFRoZSBkZWZhdWx0IGlzIDEuCiBGbG9hdGluZyBwb2ludCBudW1iZXJzIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgZnJhY3Rpb25zIG9mIHNlY29uZHMuCiAuVFAKLS5CIC1WLCAtLXZlcnNpb24KKy5CIFwtViwgXC1cLXZlcnNpb24KIERpc3BsYXkgdmVyc2lvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIGFwcGxpY2F0aW9uIGFuZCB0aGVuIGV4aXQuCiAuVFAKLS5CSSAtWSAibmFtZSI9InZhbHVlIgorLkJJIFwtWSAibmFtZSI9InZhbHVlIgogLlRQCi0uQkkgLS0gIm5hbWUiPSJ2YWx1ZSIKLUFsbG93cyB0byBzcGVjaWZ5IGFueSB0b2tlbiAoIm5hbWUiKSBzdXBwb3J0ZWQgaW4gdGhlCisuQkkgXC1cLSAibmFtZSI9InZhbHVlIgorQWxsb3dzIG9uZSB0byBzcGVjaWZ5IGFueSB0b2tlbiAoIm5hbWUiKSBzdXBwb3J0ZWQgaW4gdGhlCiAuSSBzbm1wLmNvbmYKIGZpbGUgYW5kIHNldHMgaXRzIHZhbHVlIHRvICJ2YWx1ZSIuIE92ZXJyaWRlcyB0aGUgY29ycmVzcG9uZGluZyB0b2tlbiBpbiB0aGUKIC5JIHNubXAuY29uZgpAQCAtMTg5LDcgKzE4OSw3IEBACiAoRClUTFMgc3VwcG9ydC4KIAogLlRQCi0uQkkgLWwgIiBzZWNMZXZlbCIKKy5CSSBcLWwgIiBzZWNMZXZlbCIKIFNldCB0aGUgc2VjdXJpdHlMZXZlbCB1c2VkIGZvciBTTk1QdjMgbWVzc2FnZXMKIChub0F1dGhOb1ByaXZ8YXV0aE5vUHJpdnxhdXRoUHJpdikuICBBcHByb3ByaWF0ZSBwYXNzIHBocmFzZShzKSBtdXN0CiBwcm92aWRlZCB3aGVuIHVzaW5nIGFueSBsZXZlbCBoaWdoZXIgdGhhbiBub0F1dGhOb1ByaXYuCkBAIC0xOTcsNyArMTk3LDcgQEAKIC5JIHNubXAuY29uZgogZmlsZS4KIC5UUAotLkJJIC1uICIgY29udGV4dE5hbWUiCisuQkkgXC1uICIgY29udGV4dE5hbWUiCiBTZXQgdGhlIGNvbnRleHROYW1lIHVzZWQgZm9yIFNOTVB2MyBtZXNzYWdlcy4gIFRoZSBkZWZhdWx0CiBjb250ZXh0TmFtZSBpcyB0aGUgZW1wdHkgc3RyaW5nICIiLiAgT3ZlcnJpZGVzIHRoZSBcZklkZWZDb250ZXh0XGZSIHRva2VuCiBpbiB0aGUKQEAgLTIxNywzOSArMjE3LDM5IEBACiBpdCB3aWxsIGxvb2sgaW4gfi8uc25tcC90bHMgYW5kIGluIC91c3IvbG9jYWwvc2hhcmUvc25tcC90bHMgZm9yCiBjZXJ0aWZpY2F0ZXMuICBUaGUgY2VydGlmaWNhdGUgY29tcG9uZW50cyAoZWcsIHRoZSBwdWJsaWMgYW5kIHByaXZhdGUKIGhhbHZlcykgYXJlIHN0b3JlZCBpbiBzdWItZGlyZWN0b3JpZXMgdW5kZXJuZWF0aCB0aGlzIHJvb3Qgc2V0IG9mCi1kaXJlY3Rvcmllcy4gIFNlZSB0aGUgbmV0LXNubXAtY2VydCB0b29sIGZvciBoZWxwIGluIGltcG9ydGluZywKK2RpcmVjdG9yaWVzLiAgU2VlIHRoZSBuZXRcLXNubXBcLWNlcnQgdG9vbCBmb3IgaGVscCBpbiBpbXBvcnRpbmcsCiBjcmVhdGluZyBhbmQgbWFuYWdpbmcgTmV0LVNOTVAgY2VydGlmaWNhdGVzLgogLkkgIjxjZXJ0aWZpY2F0ZS1zcGVjaWZpZXI+cyIKIGNhbiByZWZlcmVuY2UgZWl0aGVyIGEgZmluZ2VycHJpbnQgb2YgdGhlIGNlcnRpZmljYXRlIHRvIHVzZSAodGhlCi1uZXQtc25tcC1jZXJ0IHRvb2wgY2FuIGhlbHAgeW91IGZpZ3VyZSBvdXQgdGhlIGNlcnRpZmljYXRlcykgb3IgdGhlCituZXRcLXNubXBcLWNlcnQgdG9vbCBjYW4gaGVscCB5b3UgZmlndXJlIG91dCB0aGUgY2VydGlmaWNhdGVzKSBvciB0aGUKIGZpbGVuYW1lJ3MgcHJlZml4IGNhbiBiZSB1c2VkLiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBoYWQgYSAic25tcGQuY3J0IgogY2VydGlmaWNhdGUgZmlsZSB0aGVuIHlvdSBjb3VsZCBzaW1wbHkgcmVmZXIgdG8gdGhlIGNlcnRpZmljYXRlIHZpYQogdGhlICJzbm1wZCIgc3BlY2lmaWVyLgogLlRQCi0uQkkgIi1UIG91cl9pZGVudGl0eT08Y2VydGlmaWNhdGUtc3BlY2lmaWVyPiIKKy5CSSAiXC1UIGxvY2FsQ2VydD08Y2VydGlmaWNhdGUtc3BlY2lmaWVyPiIKIEluZGljYXRlcyB0byB0aGUgdHJhbnNwb3J0IHdoaWNoIGtleSBzaG91bGQgYmUgdXNlZCB0byBpbml0aWF0ZSAoRClUTFMKIGNsaWVudCBjb25uZWN0aW9ucy4gIFRoaXMgd291bGQgdHlwaWNhbGx5IGJlIGEgY2VydGlmaWNhdGUgZm91bmQgdXNpbmcKLXRoZSBhcHBsaWNhdGlvbiBuYW1lIChlZyBzbm1wZCwgc25tcHRyYXBkLCBwZXJsLCBweXRob24pIG9yCit0aGUgY2VydGlmaWNhdGUgZmluZ2VycHJpbnQsIHRoZSBhcHBsaWNhdGlvbiBuYW1lIChlZyBzbm1wZCwgc25tcHRyYXBkLCBwZXJsLCBweXRob24pIG9yCiBnZW5lcmljaXplZCBuYW1lICJzbm1wYXBwIiBpZiB1c2luZyBvbmUgb2YgdGhlIGdlbmVyaWMgYXBwbGljYXRpb25zCiAoc25tcGdldCwgc25tcHdhbGssIGV0YykuICBUaGlzIGNhbiBhbHNvIGJlIHNldCB1c2luZyB0aGUKLWNsaWVudENlcnQgc3BlY2lmaWVyIGluIGEgc25tcC5jb25mIGNvbmZpZ3VyYXRpb24gZmlsZS4KK2xvY2FsQ2VydCBzcGVjaWZpZXIgaW4gYSBzbm1wLmNvbmYgY29uZmlndXJhdGlvbiBmaWxlLgogLlRQCi0uQkkgIi1UIHRoZWlyX2lkZW50aXR5PTxjZXJ0aWZpY2F0ZS1zcGVjaWZpZXI+IgorLkJJICJcLVQgcGVlckNlcnQ9PGNlcnRpZmljYXRlLXNwZWNpZmllcj4iCiBJZiB5b3UgZXhwZWN0IGEgcGFydGljdWxhciBjZXJ0aWZpY2F0ZSB0byBiZSBwcmVzZW50ZWQgYnkgdGhlIG90aGVyCiBzaWRlIHRoZW4geW91IGNhbiB1c2UgdGhpcyBzcGVjaWZpZXIgdG8gaW5kaWNhdGUgdGhlIGNlcnRpZmljYXRlIGl0CiBzaG91bGQgcHJlc2VudC4gIElmIGl0IGZhaWxzIHRvIHByZXNlbnQgdGhlIGV4cGVjdGVkIGNlcnRpZmljYXRlIHRoZQogY2xpZW50IHdpbGwgcmVmdXNlIHRvIG9wZW4gdGhlIGNvbm5lY3Rpb24gKGJlY2F1c2UgZG9pbmcgb3RoZXJ3aXNlCiBjb3VsZCBsZWFkIHRvIG1hbi1pbi10aGUtbWlkZGxlIGF0dGFja3MpLiAgVGhpcyBjYW4gYWxzbyBiZSBzZXQgdXNpbmcKLXRoZSBzZXJ2ZXJDZXJ0IHNwZWNpZmllciBpbiBhIHNubXAuY29uZiBjb25maWd1cmF0aW9uIGZpbGUuCit0aGUgcGVlckNlcnQgc3BlY2lmaWVyIGluIGEgc25tcC5jb25mIGNvbmZpZ3VyYXRpb24gZmlsZS4KIC5UUAotLkJJICItVCB0cnVzdF9jZXJ0PTxjZXJ0aWZpY2F0ZS1zcGVjaWZpZXI+IgorLkJJICJcLVQgdHJ1c3RfY2VydD08Y2VydGlmaWNhdGUtc3BlY2lmaWVyPiIKIElmIHlvdSBoYXZlIGEgdHJ1c3RlZCBDQSBjZXJ0aWZpY2F0ZSB5b3Ugd2lzaCB0byBhbmNob3IgdHJ1c3Qgd2l0aCwKIHlvdSBjYW4gdXNlIHRoaXMgZmxhZyB0byBsb2FkIGEgZ2l2ZW4gY2VydGlmaWNhdGUgYXMgYSB0cnVzdCBhbmNob3IuCiBBIGNvcHkgb2YgdGhlIGNlcnRpZmljYXRlIG11c3QgZXhpc3Qgd2l0aGluIHRoZSBOZXQtU05NUCBjZXJ0aWZpY2F0ZQogc3RvcmFnZSBzeXN0ZW0gb3IgdGhpcyBtdXN0IHBvaW50IHRvIGEgY29tcGxldGUgcGF0aCBuYW1lLiAgQWxzbyBzZWUKIHRoZSAidHJ1c3RDZXJ0IiBzbm1wLmNvbmYgY29uZmlndXJhdGlvbiB0b2tlbi4KIC5UUAotLkJJICItVCB0aGVpcl9ob3N0bmFtZT08bmFtZT4iCisuQkkgIlwtVCB0aGVpcl9ob3N0bmFtZT08bmFtZT4iCiBJZiB0aGUgc2VydmVyJ3MgcHJlc2VudGVkIGNlcnRpZmljYXRlIGNhbiBiZSB2YWxpZGF0aW5nIHVzaW5nIGEgdHJ1c3QKIGFuY2hvciB0aGVuIHRoZWlyIGhvc3RuYW1lIHdpbGwgYmUgY2hlY2tlZCB0byBlbnN1cmUgdGhlaXIgcHJlc2VudGVkCiBob3N0bmFtZSBtYXRjaGVzIG9uZSB0aGF0IGlzIGV4cGVjdGVkICh5b3UgZG9uJ3Qgd2FudCB0byBjb25uZWN0IHRvCkBAIC0yNjIsMjkgKzI2MiwyOSBAQAogVGhlc2Ugb3B0aW9ucyBhcmUgc3BlY2lmaWMgdG8gdXNpbmcgU05NUHYzIHdpdGggdGhlIG9yaWdpbmFsCiBVc2VyLWJhc2VkIFNlY3VyaXR5IE1vZGVsIChVU00pLgogLlRQCi0uQkkgIi0zW01tS2tdICAweEhFWEtFWSIKKy5CSSAiXC0zW01tS2tdICAweEhFWEtFWSIKIFNldHMgdGhlIGtleXMgdG8gYmUgdXNlZCBmb3IgU05NUHYzIHRyYW5zYWN0aW9ucy4gIFRoZXNlIG9wdGlvbnMgYWxsb3cKLXlvdSB0byBzZXQgdGhlIG1hc3RlciBhdXRoZW50aWNhdGlvbiBhbmQgZW5jcnlwdGlvbiBrZXlzICgtM20gYW5kIC0zTQoreW91IHRvIHNldCB0aGUgbWFzdGVyIGF1dGhlbnRpY2F0aW9uIGFuZCBlbmNyeXB0aW9uIGtleXMgKFwtM20gYW5kIFwtM00KIHJlc3BlY3RpdmVseSkgb3Igc2V0IHRoZSBsb2NhbGl6ZWQgYXV0aGVudGljYXRpb24gYW5kIGVuY3J5cHRpb24ga2V5cwotKC0zayBhbmQgLTNLIHJlc3BlY3RpdmVseSkuICBTTk1QdjMga2V5cyBjYW4gYmUgZWl0aGVyIHBhc3NlZCBpbiBieQorKFwtM2sgYW5kIFwtM0sgcmVzcGVjdGl2ZWx5KS4gIFNOTVB2MyBrZXlzIGNhbiBiZSBlaXRoZXIgcGFzc2VkIGluIGJ5CiBoYW5kIHVzaW5nIHRoZXNlIGZsYWdzLCBvciBieSB0aGUgdXNlIG9mIGtleXMgZ2VuZXJhdGVkIGZyb20gcGFzc3dvcmRzCi11c2luZyB0aGUgLUEgYW5kIC1YIGZsYWdzIGRpc2N1c3NlZCBiZWxvdy4gIEZvciBmdXJ0aGVyIGRldGFpbHMgb24KK3VzaW5nIHRoZSBcLUEgYW5kIFwtWCBmbGFncyBkaXNjdXNzZWQgYmVsb3cuICBGb3IgZnVydGhlciBkZXRhaWxzIG9uCiBTTk1QdjMgYW5kIGl0cyB1c2FnZSBvZiBrZXlpbmcgaW5mb3JtYXRpb24sIHNlZSB0aGUgTmV0LVNOTVAgdHV0b3JpYWwKLXdlYiBzaXRlICggaHR0cDovL3d3dy5OZXQtU05NUC5vcmcvdHV0b3JpYWwtNS9jb21tYW5kcy8gKS4gCi1PdmVycmlkZXMgdGhlIGRlZkF1dGhNYXN0ZXJLZXkgKC0zbSksIGRlZlByaXZNYXN0ZXJLZXkgKC0zTSksIAotZGVmQXV0aExvY2FsaXplZEtleSAoLTNrKSBvciBkZWZQcml2TG9jYWxpemVkS2V5ICgtM0spIHRva2VucywgcmVzcGVjdGl2ZWx5LCAKK3dlYiBzaXRlICggaHR0cDovL3d3dy5OZXRcLVNOTVAub3JnL3R1dG9yaWFsXC01L2NvbW1hbmRzLyApLiAKK092ZXJyaWRlcyB0aGUgZGVmQXV0aE1hc3RlcktleSAoXC0zbSksIGRlZlByaXZNYXN0ZXJLZXkgKFwtM00pLCAKK2RlZkF1dGhMb2NhbGl6ZWRLZXkgKFwtM2spIG9yIGRlZlByaXZMb2NhbGl6ZWRLZXkgKFwtM0spIHRva2VucywgcmVzcGVjdGl2ZWx5LCAKIGluIHRoZQogLkkgc25tcC5jb25mCiBmaWxlLCBzZWUKIC5JIHNubXAuY29uZig1KS4KIC5UUAotLkJJIC1hICIgYXV0aFByb3RvY29sIgorLkJJIFwtYSAiIGF1dGhQcm90b2NvbCIKIFNldCB0aGUgYXV0aGVudGljYXRpb24gcHJvdG9jb2wgKE1ENSBvciBTSEEpIHVzZWQgZm9yIGF1dGhlbnRpY2F0ZWQgU05NUHYzCiBtZXNzYWdlcy4gT3ZlcnJpZGVzIHRoZSBcZklkZWZBdXRoVHlwZVxmUiB0b2tlbiBpbiB0aGUKIC5JIHNubXAuY29uZgogZmlsZS4KIC5UUAotLkJJIC1BICIgYXV0aFBhc3N3b3JkIgorLkJJIFwtQSAiIGF1dGhQYXNzd29yZCIKIFNldCB0aGUgYXV0aGVudGljYXRpb24gcGFzcyBwaHJhc2UgdXNlZCBmb3IgYXV0aGVudGljYXRlZCBTTk1QdjMKIG1lc3NhZ2VzLiAgT3ZlcnJpZGVzIHRoZSBcZklkZWZBdXRoUGFzc3BocmFzZVxmUiB0b2tlbiBpbiB0aGUKIC5JIHNubXAuY29uZgpAQCAtMjkyLDMxICsyOTIsMzEgQEAKIHNlZQogLkkgc25tcC5jb25mKDUpLgogLlRQCi0uQkkgLWUgIiBlbmdpbmVJRCIKKy5CSSBcLWUgIiBlbmdpbmVJRCIKIFNldCB0aGUgYXV0aG9yaXRhdGl2ZSAoc2VjdXJpdHkpIGVuZ2luZUlEIHVzZWQgZm9yIFNOTVB2MyBSRVFVRVNUCiBtZXNzYWdlcywgZ2l2ZW4gYXMgYSBoZXhhZGVjaW1hbCBzdHJpbmcgKG9wdGlvbmFsbHkgcHJlZml4ZWQgYnkgIjB4IikuCiBJdCBpcyB0eXBpY2FsbHkgbm90IG5lY2Vzc2FyeSB0byBzcGVjaWZ5IHRoaXMgZW5naW5lIElELCBhcyBpdCB3aWxsCiB1c3VhbGx5IGJlIGRpc2NvdmVyZWQgYXV0b21hdGljYWxseS4KIC5UUAotLkJJIC1FICIgZW5naW5lSUQiCisuQkkgXC1FICIgZW5naW5lSUQiCiBTZXQgdGhlIGNvbnRleHQgZW5naW5lSUQgdXNlZCBmb3IgU05NUHYzIFJFUVVFU1QgbWVzc2FnZXMgc2NvcGVkUGR1LAogZ2l2ZW4gYXMgYSBoZXhhZGVjaW1hbCBzdHJpbmcuCiBJZiBub3Qgc3BlY2lmaWVkLCB0aGlzIHdpbGwgZGVmYXVsdCB0byB0aGUgYXV0aG9yaXRhdGl2ZSBlbmdpbmVJRC4KIC5UUAotLkJJIC11ICIgc2VjTmFtZSIKKy5CSSBcLXUgIiBzZWNOYW1lIgogU2V0IHRoZSBzZWN1cml0eU5hbWUgdXNlZCBmb3IgYXV0aGVudGljYXRlZCBTTk1QdjMgbWVzc2FnZXMuCiBPdmVycmlkZXMgdGhlIFxmSWRlZlNlY3VyaXR5TmFtZVxmUiB0b2tlbiBpbiB0aGUKIC5JIHNubXAuY29uZgogZmlsZS4KIC5UUAotLkJJIC14ICIgcHJpdlByb3RvY29sIgorLkJJIFwteCAiIHByaXZQcm90b2NvbCIKIFNldCB0aGUgcHJpdmFjeSBwcm90b2NvbCAoREVTIG9yIEFFUykgdXNlZCBmb3IgZW5jcnlwdGVkIFNOTVB2MyBtZXNzYWdlcy4gCiBPdmVycmlkZXMgdGhlIFxmSWRlZlByaXZUeXBlXGZSIHRva2VuIGluIHRoZQogLkkgc25tcC5jb25mCiBmaWxlLiBUaGlzIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGlmIHRoZSBOZXQtU05NUCBzb2Z0d2FyZSB3YXMgYnVpbGQKIHRvIHVzZSBPcGVuU1NMLgogLlRQCi0uQkkgLVggIiBwcml2UGFzc3dvcmQiCisuQkkgXC1YICIgcHJpdlBhc3N3b3JkIgogU2V0IHRoZSBwcml2YWN5IHBhc3MgcGhyYXNlIHVzZWQgZm9yIGVuY3J5cHRlZCBTTk1QdjMgbWVzc2FnZXMuCiBPdmVycmlkZXMgdGhlIFxmSWRlZlByaXZQYXNzcGhyYXNlXGZSIHRva2VuIGluIHRoZQogLkkgc25tcC5jb25mCkBAIC0zMjQsNyArMzI0LDcgQEAKIEl0IGlzIGluc2VjdXJlIHRvIHNwZWNpZnkgcGFzcyBwaHJhc2VzIG9uIHRoZSBjb21tYW5kIGxpbmUsIHNlZQogLkkgc25tcC5jb25mKDUpLgogLlRQCi0uQkkgLVogIiBib290cyx0aW1lIgorLkJJIFwtWiAiIGJvb3RzLHRpbWUiCiBTZXQgdGhlIGVuZ2luZUJvb3RzIGFuZCBlbmdpbmVUaW1lIHVzZWQgZm9yIGF1dGhlbnRpY2F0ZWQgU05NUHYzCiBtZXNzYWdlcy4gIFRoaXMgd2lsbCBpbml0aWFsaXplIHRoZSBsb2NhbCBub3Rpb24gb2YgdGhlIGFnZW50cwogYm9vdHMvdGltZSB3aXRoIGFuIGF1dGhlbnRpY2F0ZWQgdmFsdWUgc3RvcmVkIGluIHRoZSBMQ0QuCkBAIC0zMzQsNyArMzM0LDcgQEAKIAogLlNIIFNOTVB2MSBhbmQgU05NUHYyYyBPcHRpb25zIAogLlRQCi0uQkkgLWMgIiBjb21tdW5pdHkiCisuQkkgXC1jICIgY29tbXVuaXR5IgogU2V0IHRoZSBjb21tdW5pdHkgc3RyaW5nIGZvciBTTk1QdjEvdjJjIHRyYW5zYWN0aW9ucy4KIE92ZXJyaWRlcyB0aGUgXGZJZGVmQ29tbXVuaXR5XGZSIHRva2VuIGluIHRoZQogLkkgc25tcC5jb25mCkBAIC00NDEsNyArNDQxLDcgQEAKIC5JUiAic3NoOmhvc3RuYW1lOjIyIgogQ29ubmVjdHMgdXNpbmcgU05NUCBvdmVyIFNTSCBhcyBkb2N1bWVudGVkIGJ5IHRoZSBJU01TIHdvcmtpbmcgZ3JvdXAKIChSRkNzIG5vdCB5ZXQgcHVibGlzaGVkIGFzIG9mIHRoaXMgZGF0ZSkuICBUaGlzIHdpbGwgcmVxdWlyZSB0aGF0IHRoZQotVFNNIHNlY3VyaXR5IG1vZGVsIGlzIGluIHVzZSAoLS1kZWZTZWN1cml0eU1vZGVsPXRzbSkuCitUU00gc2VjdXJpdHkgbW9kZWwgaXMgaW4gdXNlIChcLVwtZGVmU2VjdXJpdHlNb2RlbD10c20pLgogLlRQIDI0CiAuSVIgImlweDo6MDBEMEI3QUFFMzA4IgogcGVyZm9ybSBxdWVyeSB1c2luZyBJUFggZGF0YWdyYW1zIHRvIG5vZGUgbnVtYmVyIApAQCAtNDU3LDEyICs0NTcsMTIgQEAKIG9uIG5ldHdvcmsgbnVtYmVyCiAuSVIgMEFFNDM0MDkgLgogLlRQIDI0Ci0uSVIgInVuaXg6L3RtcC9sb2NhbC1hZ2VudCIKKy5JUiAidW5peDovdG1wL2xvY2FsXC1hZ2VudCIKIGNvbm5lY3QgdG8gdGhlIFVuaXggZG9tYWluIHNvY2tldCAKLS5JUiAvdG1wL2xvY2FsLWFnZW50ICwKKy5JUiAvdG1wL2xvY2FsXC1hZ2VudCAsCiBhbmQgcGVyZm9ybSB0aGUgcXVlcnkgb3ZlciB0aGF0IGNvbm5lY3Rpb24uCiAuVFAgMjQKLS5JUiAiL3RtcC9sb2NhbC1hZ2VudCIKKy5JUiAiL3RtcC9sb2NhbFwtYWdlbnQiCiBpZGVudGljYWwgdG8gdGhlIHByZXZpb3VzIHNwZWNpZmljYXRpb24sIHNpbmNlIHRoZSBVbml4IGRvbWFpbiBpcyB0aGUKIGRlZmF1bHQgdHJhbnNwb3J0IGlmZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSA8dHJhbnNwb3J0LWFkZHJlc3M+CiBpcyBhICcvJy4KQEAgLTQ5OSwyNiArNDk5LDI2IEBACiBpbiByZWNvZ25pdGlvbiBvZiB0aGUgKGFoZW0pIGRpdmVyc2l0eSBpbiBjb21wbGlhbmNlIGV4cHJlc3NlZCBpbiBNSUIKIGZpbGVzLCBhZGRpdGlvbmFsIG9wdGlvbnMgcHJvdmlkZSBtb3JlIGZsZXhpYmlsaXR5IGluIHJlYWRpbmcgTUlCIGZpbGVzLgogLlRQCi0uQiAiLVBjIgorLkIgIlwtUGMiCiBUb2dnbGVzIHdoZXRoZXIgQVNOLjEgY29tbWVudHMgc2hvdWxkIGV4dGVuZCB0byB0aGUgZW5kIG9mIHRoZSBNSUIKIHNvdXJjZSBsaW5lLgotU3RyaWN0bHkgc3BlYWtpbmcsIGEgc2Vjb25kIGFwcGVhcmFuY2Ugb2YgIi0tIiBzaG91bGQgdGVybWluYXRlIHRoZQorU3RyaWN0bHkgc3BlYWtpbmcsIGEgc2Vjb25kIGFwcGVhcmFuY2Ugb2YgIlwtXC0iIHNob3VsZCB0ZXJtaW5hdGUgdGhlCiBjb21tZW50LCBidXQgdGhpcyBicmVha3Mgc29tZSBNSUIgZmlsZXMuCiBUaGUgZGVmYXVsdCBiZWhhdmlvdXIgKHRvIGludGVycHJldCBjb21tZW50cyBjb3JyZWN0bHkpIGNhbiBhbHNvCiBiZSBzZXQgd2l0aCB0aGUgY29uZmlndXJhdGlvbiB0b2tlbiBcZkljb21tZW50VG9FT0xcZlIuCiAuVFAKLS5CICItUGQiCisuQiAiXC1QZCIKIERpc2FibGVzIHRoZSBsb2FkaW5nIG9mIE1JQiBvYmplY3QgREVTQ1JJUFRJT05zIHdoZW4gcGFyc2luZyBNSUIgZmlsZXMuCiBUaGlzIHJlZHVjZXMgdGhlIGFtb3VudCBvZiBtZW1vcnkgdXNlZCBieSB0aGUgcnVubmluZyBhcHBsaWNhdGlvbi4KIC5UUAotLkIgIi1QZSIKKy5CICJcLVBlIgogVG9nZ2xlcyB3aGV0aGVyIHRvIHNob3cgZXJyb3JzIGVuY291bnRlcmVkIHdoZW4gcGFyc2luZyBNSUIgZmlsZXMuCiBUaGVzZSBpbmNsdWRlCiByZWZlcmVuY2VzIHRvIElNUE9SVGVkIG1vZHVsZXMgYW5kIE1JQiBvYmplY3RzIHRoYXQgY2Fubm90IGJlCiBsb2NhdGVkIGluIHRoZSBNSUIgZGlyZWN0b3J5IHNlYXJjaCBsaXN0LgogVGhlIGRlZmF1bHQgYmVoYXZpb3VyIGNhbiBhbHNvIGJlIHNldCB3aXRoIHRoZSBjb25maWd1cmF0aW9uIHRva2VuIFxmSXNob3dNaWJFcnJvcnNcZlIuCiAuVFAKLS5CICItUFIiCisuQiAiXC1QUiIKIElmIHRoZSBzYW1lIE1JQiBvYmplY3QgKHBhcmVudCBuYW1lIGFuZCBzdWItaWRlbnRpZmllcikgYXBwZWFycyBtdWx0aXBsZQogdGltZXMgaW4gdGhlIGxpc3Qgb2YgTUlCIGRlZmluaXRpb25zIGxvYWRlZCwgdXNlIHRoZSBsYXN0IHZlcnNpb24gdG8gYmUKIHJlYWQgaW4uICBCeSBkZWZhdWx0LCB0aGUgZmlyc3QgdmVyc2lvbiB3aWxsIGJlIHVzZWQsIGFuZCBhbnkgZHVwbGljYXRlcwpAQCAtNTMyLDIwICs1MzIsMjAgQEAKIC5cIiBTZXR0aW5nIHRoaXMgb3B0aW9uIG1heSByZXN1bHQgaW4gYW4gaW5jb3JyZWN0IGhpZXJhcmNoeS4KIC5cIiBYWFggLSBXaHk/CiAuVFAKLS5CICItUHUiCisuQiAiXC1QdSIKIFRvZ2dsZXMgd2hldGhlciB0byBhbGxvdyB0aGUgdW5kZXJsaW5lIGNoYXJhY3RlciBpbiBNSUIgb2JqZWN0IG5hbWVzCiBhbmQgb3RoZXIgc3ltYm9scy4KIFN0cmljdGx5IHNwZWFraW5nLCB0aGlzIGlzIG5vdCB2YWxpZCBTTUkgc3ludGF4LCBidXQgc29tZSB2ZW5kb3IgTUlCCiBmaWxlcyBkZWZpbmUgc3VjaCBuYW1lcy4KIFRoZSBkZWZhdWx0IGJlaGF2aW91ciBjYW4gYWxzbyBiZSBzZXQgd2l0aCB0aGUgY29uZmlndXJhdGlvbiB0b2tlbiBcZkltaWJBbGxvd1VuZGVybGluZVxmUi4KIC5UUAotLkIgIi1QdyIKKy5CICJcLVB3IgogU2hvdyB2YXJpb3VzIHdhcm5pbmcgbWVzc2FnZXMgaW4gcGFyc2luZyBNSUIgZmlsZXMgYW5kIGJ1aWxkaW5nCiB0aGUgb3ZlcmFsbCBPSUQgdHJlZS4KIFRoaXMgY2FuIGFsc28gYmUgc2V0IHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlCiBcZkltaWJXYXJuaW5nTGV2ZWwgMVxmUgogLlRQCi0uQiAiLVBXIgorLkIgIlwtUFciCiBTaG93IHNvbWUgYWRkaXRpb25hbCB3YXJuaW5nIG1lc3NhZ2VzLCBtb3N0bHkgcmVsYXRpbmcgdG8gcGFyc2luZwogaW5kaXZpZHVhbCBNSUIgb2JqZWN0cy4KIFRoaXMgY2FuIGFsc28gYmUgc2V0IHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlCkBAIC01NTMsMTA3ICs1NTMsMTA3IEBACiAKIC5TSCAiT1VUUFVUIE9QVElPTlMiCiBUaGUgZm9ybWF0IG9mIHRoZSBvdXRwdXQgZnJvbSBTTk1QIGNvbW1hbmRzIGNhbiBiZSBjb250cm9sbGVkIHVzaW5nCi12YXJpb3VzIHBhcmFtZXRlcnMgb2YgdGhlIFxmQi1PXGZSIGZsYWcuCit2YXJpb3VzIHBhcmFtZXRlcnMgb2YgdGhlIFxmQlwtT1xmUiBmbGFnLgogVGhlIGVmZmVjdHMgb2YgdGhlc2Ugc3ViLW9wdGlvbnMgY2FuIGJlIHNlZW4gYnkgY29tcGFyaXNvbiB3aXRoCiB0aGUgZm9sbG93aW5nIGRlZmF1bHQgb3V0cHV0ICh1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCk6CiAuUlMKIC5uZgotXGZDJCBzbm1wZ2V0IC1jIHB1YmxpYyAtdiAxIGxvY2FsaG9zdCBzeXNVcFRpbWUuMAotU05NUHYyLU1JQjo6c3lzVXBUaW1lLjAgPSBUaW1ldGlja3M6ICgxNDA5Njc2MykgMSBkYXksIDE1OjA5OjI3LjYzXGZSCitcZkMkIHNubXBnZXQgXC1jIHB1YmxpYyBcLXYgMSBsb2NhbGhvc3Qgc3lzVXBUaW1lLjAKK1NOTVB2MlwtTUlCOjpzeXNVcFRpbWUuMCA9IFRpbWV0aWNrczogKDE0MDk2NzYzKSAxIGRheSwgMTU6MDk6MjcuNjNcZlIKIC5maQogLlJFCiAKIC5UUAotLkIgLU9hCisuQiBcLU9hCiBEaXNwbGF5IHN0cmluZyB2YWx1ZXMgYXMgQVNDSUkgc3RyaW5ncyAodW5sZXNzIHRoZXJlIGlzIGEgCi1cZkNESVNQTEFZLUhJTlRcZlIgZGVmaW5lZCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgTUlCIG9iamVjdCkuCitcZkNESVNQTEFZXC1ISU5UXGZSIGRlZmluZWQgZm9yIHRoZSBjb3JyZXNwb25kaW5nIE1JQiBvYmplY3QpLgogQnkgZGVmYXVsdCwgdGhlIGxpYnJhcnkgYXR0ZW1wdHMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHZhbHVlIGlzCiBhIHByaW50YWJsZSBvciBiaW5hcnkgc3RyaW5nLCBhbmQgZGlzcGxheXMgaXQgYWNjb3JkaW5nbHkuCiAKIFRoaXMgb3B0aW9uIGRvZXMgbm90IGFmZmVjdCBvYmplY3RzIHRoYXQgXGZJZG9cZlIgaGF2ZSBhIERpc3BsYXkgSGludC4KIC5UUAotLkIgLU9iCisuQiBcLU9iCiBEaXNwbGF5IHRhYmxlIGluZGV4ZXMgbnVtZXJpY2FsbHksIHJhdGhlciB0aGFuIHRyeWluZyB0byBpbnRlcnByZXQKIHRoZSBpbnN0YW5jZSBzdWJpZGVudGlmaWVycyBhcyBzdHJpbmcgb3IgT0lEIHZhbHVlczoKIC5SUwogLm5mCi1cZkMgICAgJCBzbm1wZ2V0bmV4dCAtYyBwdWJsaWMgLXYgMSBsb2NhbGhvc3QgdmFjbVNlY3VyaXR5TW9kZWwKLSAgICBTTk1QLVZJRVctQkFTRUQtQUNNLU1JQjo6dmFjbVNlY3VyaXR5TW9kZWwuMC4id2VzIiA9IHh4eAotICAgICQgc25tcGdldG5leHQgLWMgcHVibGljIC12IDEgXGZCLU9iXGZQIGxvY2FsaG9zdCB2YWNtU2VjdXJpdHlNb2RlbAotICAgIFNOTVAtVklFVy1CQVNFRC1BQ00tTUlCOjp2YWNtU2VjdXJpdHlNb2RlbC4wLjMuMTE5LjEwMS4xMTUgPSB4eHhcZlIKK1xmQyAgICAkIHNubXBnZXRuZXh0IFwtYyBwdWJsaWMgXC12IDEgbG9jYWxob3N0IHZhY21TZWN1cml0eU1vZGVsCisgICAgU05NUFwtVklFV1wtQkFTRURcLUFDTVwtTUlCOjp2YWNtU2VjdXJpdHlNb2RlbC4wLiJ3ZXMiID0geHh4CisgICAgJCBzbm1wZ2V0bmV4dCBcLWMgcHVibGljIFwtdiAxIFxmQlwtT2JcZlAgbG9jYWxob3N0IHZhY21TZWN1cml0eU1vZGVsCisgICAgU05NUFwtVklFV1wtQkFTRURcLUFDTVwtTUlCOjp2YWNtU2VjdXJpdHlNb2RlbC4wLjMuMTE5LjEwMS4xMTUgPSB4eHhcZlIKIC5maQogLlJFCiAuVFAKLS5CIC1PZQorLkIgXC1PZQogUmVtb3ZlcyB0aGUgc3ltYm9saWMgbGFiZWxzIGZyb20gZW51bWVyYXRpb24gdmFsdWVzOgogLlJTCiAubmYKLVxmQyAgICAkIHNubXBnZXQgLWMgcHVibGljIC12IDEgbG9jYWxob3N0IGlwRm9yd2FyZGluZy4wCi0gICAgSVAtTUlCOjppcEZvcndhcmRpbmcuMCA9IElOVEVHRVI6IGZvcndhcmRpbmcoMSkKLVxmQyAgICAkIHNubXBnZXQgLWMgcHVibGljIC12IDEgXGZCLU9lXGZQIGxvY2FsaG9zdCBpcEZvcndhcmRpbmcuMAotICAgIElQLU1JQjo6aXBGb3J3YXJkaW5nLjAgPSBJTlRFR0VSOiAxXGZSCitcZkMgICAgJCBzbm1wZ2V0IFwtYyBwdWJsaWMgXC12IDEgbG9jYWxob3N0IGlwRm9yd2FyZGluZy4wCisgICAgSVBcLU1JQjo6aXBGb3J3YXJkaW5nLjAgPSBJTlRFR0VSOiBmb3J3YXJkaW5nKDEpCitcZkMgICAgJCBzbm1wZ2V0IFwtYyBwdWJsaWMgXC12IDEgXGZCXC1PZVxmUCBsb2NhbGhvc3QgaXBGb3J3YXJkaW5nLjAKKyAgICBJUFwtTUlCOjppcEZvcndhcmRpbmcuMCA9IElOVEVHRVI6IDFcZlIKIC5maQogLlJFCiAuVFAKLS5CIC1PRQorLkIgXC1PRQogTW9kaWZpZXMgaW5kZXggc3RyaW5ncyB0byBlc2NhcGUgdGhlIHF1b3RlIGNoYXJhY3RlcnM6CiAuUlMKIC5uZgotXGZDICAgICQgc25tcGdldG5leHQgLWMgcHVibGljIC12IDEgbG9jYWxob3N0IHZhY21TZWN1cml0eU1vZGVsCi0gICAgU05NUC1WSUVXLUJBU0VELUFDTS1NSUI6OnZhY21TZWN1cml0eU1vZGVsLjAuIndlcyIgPSB4eHgKLSAgICAkIHNubXBnZXRuZXh0IC1jIHB1YmxpYyAtdiAxIFxmQi1PRVxmUCBsb2NhbGhvc3QgdmFjbVNlY3VyaXR5TW9kZWwKLSAgICBTTk1QLVZJRVctQkFTRUQtQUNNLU1JQjo6dmFjbVNlY3VyaXR5TW9kZWwuMC5cXCJ3ZXNcXCIgPSB4eHhcZlIKK1xmQyAgICAkIHNubXBnZXRuZXh0IFwtYyBwdWJsaWMgXC12IDEgbG9jYWxob3N0IHZhY21TZWN1cml0eU1vZGVsCisgICAgU05NUFwtVklFV1wtQkFTRURcLUFDTVwtTUlCOjp2YWNtU2VjdXJpdHlNb2RlbC4wLiJ3ZXMiID0geHh4CisgICAgJCBzbm1wZ2V0bmV4dCBcLWMgcHVibGljIFwtdiAxIFxmQlwtT0VcZlAgbG9jYWxob3N0IHZhY21TZWN1cml0eU1vZGVsCisgICAgU05NUFwtVklFV1wtQkFTRURcLUFDTVwtTUlCOjp2YWNtU2VjdXJpdHlNb2RlbC4wLlxcIndlc1xcIiA9IHh4eFxmUgogLmZpCiAuUkUKIC5JUAogVGhpcyBhbGxvd3MgdGhlIG91dHB1dCB0byBiZSByZXVzZWQgaW4gc2hlbGwgY29tbWFuZHMuCiAuVFAKLS5CIC1PZgorLkIgXC1PZgogSW5jbHVkZSB0aGUgZnVsbCBsaXN0IG9mIE1JQiBvYmplY3RzIHdoZW4gZGlzcGxheWluZyBhbiBPSUQ6CiAuUlMKLVxmQyAgICAuaXNvLm9yZy5kb2QuaW50ZXJuZXQubWdtdC5taWItMi5zeXN0ZW0uc3lzVXBUaW1lLjAgPVxmUgorXGZDICAgIC5pc28ub3JnLmRvZC5pbnRlcm5ldC5tZ210Lm1pYlwtMi5zeXN0ZW0uc3lzVXBUaW1lLjAgPVxmUgogLlJTCiBcZkMgICAgICAgIFRpbWV0aWNrczogKDE0MDk2NzYzKSAxIGRheSwgMTU6MDk6MjcuNjNcZlIKIC5SRQogLlJFCiAuVFAKLS5CIC1PbgorLkIgXC1PbgogRGlzcGxheXMgdGhlIE9JRCBudW1lcmljYWxseToKIC5icgogXGZDICAgIC4xLjMuNi4xLjIuMS4xLjMuMCA9IFRpbWV0aWNrczogKDE0MDk2NzYzKSAxIGRheSwgMTU6MDk6MjcuNjNcZlIKIC5UUAotLkIgLU9xCisuQiBcLU9xCiBSZW1vdmVzIHRoZSBlcXVhbCBzaWduIGFuZCB0eXBlIGluZm9ybWF0aW9uIHdoZW4gZGlzcGxheWluZyB2YXJiaW5kIHZhbHVlczoKIC5icgotXGZDICAgIFNOTVB2Mi1NSUI6OnN5c1VwVGltZS4wIDE6MTU6MDk6MjcuNjNcZlIKK1xmQyAgICBTTk1QdjJcLU1JQjo6c3lzVXBUaW1lLjAgMToxNTowOToyNy42M1xmUgogLlRQCi0uQiAtT1EKKy5CIFwtT1EKIFJlbW92ZXMgdGhlIHR5cGUgaW5mb3JtYXRpb24gd2hlbiBkaXNwbGF5aW5nIHZhcmJpbmQgdmFsdWVzOgogLmJyCi1cZkMgICAgU05NUHYyLU1JQjo6c3lzVXBUaW1lLjAgPSAxOjE1OjA5OjI3LjYzXGZSCitcZkMgICAgU05NUHYyXC1NSUI6OnN5c1VwVGltZS4wID0gMToxNTowOToyNy42M1xmUgogLlRQCi0uQiAtT3MKKy5CIFwtT3MKIERpc3BsYXkgdGhlIE1JQiBvYmplY3QgbmFtZSAocGx1cyBhbnkgaW5zdGFuY2Ugb3Igb3RoZXIgc3ViaWRlbnRpZmllcnMpOgogLmJyCiBcZkMgICAgc3lzVXBUaW1lLjAgPSBUaW1ldGlja3M6ICgxNDA5Njc2MykgMSBkYXksIDE1OjA5OjI3LjYzXGZSCiAuVFAKLS5CIC1PUworLkIgXC1PUwogRGlzcGxheSB0aGUgbmFtZSBvZiB0aGUgTUlCLCBhcyB3ZWxsIGFzIHRoZSBvYmplY3QgbmFtZToKIC5icgotXGZDICAgIFNOTVB2Mi1NSUI6OnN5c1VwVGltZS4wID0gVGltZXRpY2tzOiAoMTQwOTY3NjMpIDEgZGF5LCAxNTowOToyNy42M1xmUgorXGZDICAgIFNOTVB2MlwtTUlCOjpzeXNVcFRpbWUuMCA9IFRpbWV0aWNrczogKDE0MDk2NzYzKSAxIGRheSwgMTU6MDk6MjcuNjNcZlIKIC5JUAogVGhpcyBpcyB0aGUgZGVmYXVsdCBPSUQgb3V0cHV0IGZvcm1hdC4KIC5UUAotLkIgLU90CisuQiBcLU90CiBEaXNwbGF5IFxmQ1RpbWVUaWNrc1xmUiB2YWx1ZXMgYXMgcmF3IG51bWJlcnM6CiAuYnIKLVxmQyAgICBTTk1QdjItTUlCOjpzeXNVcFRpbWUuMCA9IDE0MDk2NzYzXGZSCitcZkMgICAgU05NUHYyXC1NSUI6OnN5c1VwVGltZS4wID0gMTQwOTY3NjNcZlIKIC5UUAotLkIgLU9UCisuQiBcLU9UCiBJZiB2YWx1ZXMgYXJlIHByaW50ZWQgYXMgSGV4IHN0cmluZ3MsCiBkaXNwbGF5IGEgcHJpbnRhYmxlIHZlcnNpb24gYXMgd2VsbC4KIC5UUAotLkIgLU91CisuQiBcLU91CiBEaXNwbGF5IHRoZSBPSUQgaW4gdGhlIHRyYWRpdGlvbmFsIFVDRC1zdHlsZSAoaW5oZXJpdGVkIGZyb20gdGhlIG9yaWdpbmFsCiBDTVUgY29kZSkuCiBUaGF0IG1lYW5zIHJlbW92aW5nIGEgc2VyaWVzIG9mICJzdGFuZGFyZCIgcHJlZml4ZXMgZnJvbSB0aGUgT0lELApAQCAtNjYyLDM1ICs2NjIsMzUgQEAKIC5icgogXGZDICAgIHN5c3RlbS5zeXNVcFRpbWUuMCA9IFRpbWV0aWNrczogKDE0MDk2NzYzKSAxIGRheSwgMTU6MDk6MjcuNjNcZlIKIC5UUAotLkIgLU9VCisuQiBcLU9VCiBEbyBub3QgcHJpbnQgdGhlIFVOSVRTIHN1ZmZpeCBhdCB0aGUgZW5kIG9mIHRoZSB2YWx1ZS4KIC5UUAotLkIgLU92CisuQiBcLU92CiBEaXNwbGF5IHRoZSB2YXJiaW5kIHZhbHVlIG9ubHksIG5vdCB0aGUgT0lEOgogLlJTCiAubmYKLVxmQyAgICAkIHNubXBnZXQgLWMgcHVibGljIC12IDEgXGZCLU92XGZQIGxvY2FsaG9zdCBpcEZvcndhcmRpbmcuMAorXGZDICAgICQgc25tcGdldCBcLWMgcHVibGljIFwtdiAxIFxmQlwtT3ZcZlAgbG9jYWxob3N0IGlwRm9yd2FyZGluZy4wCiAgICAgSU5URUdFUjogZm9yd2FyZGluZygxKVxmUgogLmZpCiAuUkUKIC5UUAotLkIgLU94CisuQiBcLU94CiBEaXNwbGF5IHN0cmluZyB2YWx1ZXMgYXMgSGV4IHN0cmluZ3MgKHVubGVzcyB0aGVyZSBpcyBhIAotXGZDRElTUExBWS1ISU5UXGZSIGRlZmluZWQgZm9yIHRoZSBjb3JyZXNwb25kaW5nIE1JQiBvYmplY3QpLgorXGZDRElTUExBWVwtSElOVFxmUiBkZWZpbmVkIGZvciB0aGUgY29ycmVzcG9uZGluZyBNSUIgb2JqZWN0KS4KIEJ5IGRlZmF1bHQsIHRoZSBsaWJyYXJ5IGF0dGVtcHRzIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSB2YWx1ZSBpcwogYSBwcmludGFibGUgb3IgYmluYXJ5IHN0cmluZywgYW5kIGRpc3BsYXlzIGl0IGFjY29yZGluZ2x5LgogCiBUaGlzIG9wdGlvbiBkb2VzIG5vdCBhZmZlY3Qgb2JqZWN0cyB0aGF0IFxmSWRvXGZSIGhhdmUgYSBEaXNwbGF5IEhpbnQuCiAuVFAKLS5CIC1PWAorLkIgXC1PWAogRGlzcGxheSB0YWJsZSBpbmRleGVzIGluIGEgbW9yZSAicHJvZ3JhbSBsaWtlIiBvdXRwdXQsIGltaXRhdGluZwogYSB0cmFkaXRpb25hbCBhcnJheS1zdHlsZSBpbmRleCBmb3JtYXQ6CiAuUlMKIC5uZgotXGZDICAgICQgc25tcGdldG5leHQgLWMgcHVibGljIC12IDEgbG9jYWxob3N0IGlwdjZSb3V0ZVRhYmxlCi0gICAgSVB2Ni1NSUI6OmlwdjZSb3V0ZUlmSW5kZXguNjMuMjU0LjEuMC4yNTUuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjY0LjEgPSBJTlRFR0VSOiAyCi0gICAgJCBzbm1wZ2V0bmV4dCAtYyBwdWJsaWMgLXYgMSBcZkItT1hcZlAgbG9jYWxob3N0IGlwdjZSb3V0ZVRhYmxlCi0gICAgSVB2Ni1NSUI6OmlwdjZSb3V0ZUlmSW5kZXhbM2ZmZToxMDA6ZmYwMDowOjA6MDowOjBdWzY0XVsxXSA9IElOVEVHRVI6IDIKK1xmQyAgICAkIHNubXBnZXRuZXh0IFwtYyBwdWJsaWMgXC12IDEgbG9jYWxob3N0IGlwdjZSb3V0ZVRhYmxlCisgICAgSVB2NlwtTUlCOjppcHY2Um91dGVJZkluZGV4LjYzLjI1NC4xLjAuMjU1LjAuMC4wLjAuMC4wLjAuMC4wLjAuMC42NC4xID0gSU5URUdFUjogMgorICAgICQgc25tcGdldG5leHQgXC1jIHB1YmxpYyBcLXYgMSBcZkJcLU9YXGZQIGxvY2FsaG9zdCBpcHY2Um91dGVUYWJsZQorICAgIElQdjZcLU1JQjo6aXB2NlJvdXRlSWZJbmRleFszZmZlOjEwMDpmZjAwOjA6MDowOjA6MF1bNjRdWzFdID0gSU5URUdFUjogMgogLmZpCiAuUkUKIC5QUApAQCAtNzAyLDE5ICs3MDIsMTkgQEAKIC5TSCAiTE9HR0lORyBPUFRJT05TIgogVGhlIG1lY2hhbmlzbSBhbmQgZGVzdGluYXRpb24gdG8gdXNlIGZvciBsb2dnaW5nIG9mIHdhcm5pbmcgYW5kIGVycm9yCiBtZXNzYWdlcyBjYW4gYmUgY29udHJvbGxlZCBieSBwYXNzaW5nIHZhcmlvdXMgcGFyYW1ldGVycyB0byB0aGUKLS5CIC1MCisuQiBcLUwKIGZsYWcuCiAuVFAKLS5CIC1MZQorLkIgXC1MZQogTG9nIG1lc3NhZ2VzIHRvIHRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW0uCiAuVFAKLS5CIC1MZiBGSUxFCisuQiBcLUxmIEZJTEUKIExvZyBtZXNzYWdlcyB0byB0aGUgc3BlY2lmaWVkIGZpbGUuCiAuVFAKLS5CIC1MbworLkIgXC1MbwogTG9nIG1lc3NhZ2VzIHRvIHRoZSBzdGFuZGFyZCBvdXRwdXQgc3RyZWFtLgogLlRQCi0uQiAtTHMgRkFDSUxJVFkKKy5CIFwtTHMgRkFDSUxJVFkKIExvZyBtZXNzYWdlcyB2aWEgc3lzbG9nLCB1c2luZyB0aGUgc3BlY2lmaWVkIGZhY2lsaXR5CiAoJ2QnIGZvciBMT0dfREFFTU9OLCAndScgZm9yIExPR19VU0VSLAogb3IgJzAnLSc3JyBmb3IgTE9HX0xPQ0FMMCB0aHJvdWdoIExPR19MT0NBTDcpLgpAQCAtNzI0LDE3ICs3MjQsMTcgQEAKIGFsbG93IHRoZSBjb3JyZXNwb25kaW5nIGxvZ2dpbmcgbWVjaGFuaXNtIHRvIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbgogcHJpb3JpdGllcyBvZiBtZXNzYWdlLiAgVXNpbmcgc3RhbmRhcmQgZXJyb3IgbG9nZ2luZyBhcyBhbiBleGFtcGxlOgogLlRQCi0uQiAtTEUgcHJpCisuQiBcLUxFIHByaQogd2lsbCBsb2cgbWVzc2FnZXMgb2YgcHJpb3JpdHkgJ3ByaScgYW5kIGFib3ZlIHRvIHN0YW5kYXJkIGVycm9yLgogLlRQCi0uQiAtTEUgcDEtcDIKKy5CIFwtTEUgcDFcLXAyCiB3aWxsIGxvZyBtZXNzYWdlcyB3aXRoIHByaW9yaXR5IGJldHdlZW4gJ3AxJyBhbmQgJ3AyJyAoaW5jbHVzaXZlKSB0bwogc3RhbmRhcmQgZXJyb3IuCiAuUFAKIEZvcgotLkIgLUxGCisuQiBcLUxGCiBhbmQKLS5CIC1MUworLkIgXC1MUwogdGhlIHByaW9yaXR5IHNwZWNpZmljYXRpb24gY29tZXMgYmVmb3JlIHRoZSBmaWxlIG9yIGZhY2lsaXR5IHRva2VuLgogVGhlIHByaW9yaXRpZXMgcmVjb2duaXNlZCBhcmU6CiAuSVAKQEAgLTc4MywxMCArNzgzLDEwIEBACiAKIC5TSCAiSU5QVVQgT1BUSU9OUyIKIFRoZSBpbnRlcnByZXRhdGlvbiBvZiBpbnB1dCBvYmplY3QgbmFtZXMgYW5kIHRoZSB2YWx1ZXMgdG8gYmUgYXNzaWduZWQKLWNhbiBiZSBjb250cm9sbGVkIHVzaW5nIHZhcmlvdXMgcGFyYW1ldGVycyBvZiB0aGUgXGZCLUlcZlIgZmxhZy4KK2NhbiBiZSBjb250cm9sbGVkIHVzaW5nIHZhcmlvdXMgcGFyYW1ldGVycyBvZiB0aGUgXGZCXC1JXGZSIGZsYWcuCiBUaGUgZGVmYXVsdCBiZWhhdmlvdXIgd2lsbCBiZSBkZXNjcmliZWQgYXQgdGhlIGVuZCBvZiB0aGlzIHNlY3Rpb24uCiAuVFAKLS5CIC1JYgorLkIgXC1JYgogc3BlY2lmaWVzIHRoYXQgdGhlIGdpdmVuIG5hbWUgc2hvdWxkIGJlIHJlZ2FyZGVkIGFzIGEgcmVndWxhciBleHByZXNzaW9uLAogdG8gbWF0Y2ggKGNhc2UtaW5zZW5zaXRpdmVseSkgYWdhaW5zdCBvYmplY3QgbmFtZXMgaW4gdGhlIE1JQiB0cmVlLgogVGhlICJiZXN0IiBtYXRjaCB3aWxsIGJlIHVzZWQgLSBjYWxjdWxhdGVkIGFzIHRoZSBvbmUgdGhhdCBtYXRjaGVzIHRoZQpAQCAtODA3LDIzICs4MDcsMjMgQEAKIGluc3RhbmNlIFxmQ3N5c0NvbnRhY3QuMFxmUiAoYWx0aG91Z2ggXGZJc3lzKm9udGFjdFxmUiB3b3VsZCBtYXRjaAogXGZDc3lzQ29udGFjdFxmUikuCiBTaW1pbGFybHksIHNwZWNpZnlpbmcgYSBNSUIgbW9kdWxlIG5hbWUgd2lsbCBub3Qgc3VjY2VlZAotKHNvIFxmSVNOTVB2Mi1NSUI6OnN5cy4qb250YWN0XGZSIHdvdWxkIG5vdCBtYXRjaCBlaXRoZXIpLgorKHNvIFxmSVNOTVB2MlwtTUlCOjpzeXMuKm9udGFjdFxmUiB3b3VsZCBub3QgbWF0Y2ggZWl0aGVyKS4KIC5UUAotLkIgLUloCi1kaXNhYmxlcyB0aGUgdXNlIG9mIERJU1BMQVktSElOVCBpbmZvcm1hdGlvbiB3aGVuIGFzc2lnbmluZyB2YWx1ZXMuCisuQiBcLUloCitkaXNhYmxlcyB0aGUgdXNlIG9mIERJU1BMQVlcLUhJTlQgaW5mb3JtYXRpb24gd2hlbiBhc3NpZ25pbmcgdmFsdWVzLgogVGhpcyB3b3VsZCB0aGVuIHJlcXVpcmUgcHJvdmlkaW5nIHRoZSByYXcgdmFsdWU6CiAuYnIKLVxmQyAgICBzbm1wc2V0IC4uLiBIT1NULVJFU09VUkNFUy1NSUI6OmhyU3lzdGVtRGF0ZS4wCitcZkMgICAgc25tcHNldCAuLi4gSE9TVFwtUkVTT1VSQ0VTXC1NSUI6OmhyU3lzdGVtRGF0ZS4wCiAuYnIKICAgICAgICAgICAgICAgICAgICAgeCAiMDcgRDIgMEMgMEEgMDIgMDQgMDYgMDgiXGZSCiAuYnIKIGluc3RlYWQgb2YgYSBmb3JtYXR0ZWQgdmVyc2lvbjoKIC5icgotXGZDICAgIHNubXBzZXQgLi4uIEhPU1QtUkVTT1VSQ0VTLU1JQjo6aHJTeXN0ZW1EYXRlLjAKK1xmQyAgICBzbm1wc2V0IC4uLiBIT1NUXC1SRVNPVVJDRVNcLU1JQjo6aHJTeXN0ZW1EYXRlLjAKIC5icgotICAgICAgICAgICAgICAgICAgICA9IDIwMDItMTItMTAsMjo0OjYuOFxmUgorICAgICAgICAgICAgICAgICAgICA9IDIwMDJcLTEyXC0xMCwyOjQ6Ni44XGZSCiAuVFAKLS5CIC1JcgorLkIgXC1JcgogZGlzYWJsZXMgY2hlY2tpbmcgdGFibGUgaW5kZXhlcyBhbmQgdGhlIHZhbHVlIHRvIGJlIGFzc2lnbmVkIGFnYWluc3QgdGhlCiByZWxldmFudCBNSUIgZGVmaW5pdGlvbnMuICBUaGlzIHdpbGwgKGhvcGVmdWxseSkgcmVzdWx0IGluIHRoZSByZW1vdGUKIGFnZW50IHJlcG9ydGluZyBhbiBpbnZhbGlkIHJlcXVlc3QsIHJhdGhlciB0aGFuIGNoZWNraW5nIChhbmQgcmVqZWN0aW5nKQpAQCAtODMzLDEzICs4MzMsMTMgQEAKIHRlbmQgdG8gYmUgbW9yZSBwcmVjaXNlKSwgYnV0IGRpc2FibGluZyB0aGlzIGJlaGF2aW91ciBpcyBwYXJ0aWN1bGFybHkKIHVzZWZ1bCB3aGVuIHRlc3RpbmcgdGhlIHJlbW90ZSBhZ2VudC4KIC5UUAotLkIgLUlSCisuQiBcLUlSCiBlbmFibGVzICJyYW5kb20gYWNjZXNzIiBsb29rdXAgb2YgTUlCIG5hbWVzLgogUmF0aGVyIHRoYW4gcHJvdmlkaW5nIGEgZnVsbCBPSUQgcGF0aCB0byB0aGUgZGVzaXJlZCBNSUIgb2JqZWN0CiAob3IgcXVhbGlmeWluZyB0aGlzIG9iamVjdCB3aXRoIGFuIGV4cGxpY2l0IE1JQiBtb2R1bGUgbmFtZSksCiB0aGUgTUlCIHRyZWUgd2lsbCBiZSBzZWFyY2hlZCBmb3IgdGhlIG1hdGNoaW5nIG9iamVjdCBuYW1lLgotVGh1cyBcZkMuaXNvLm9yZy5kb2QuaW50ZXJuZXQubWliLTIuc3lzdGVtLnN5c0Rlc2NyLjBcZlIKLShvciBcZkNTTk1QdjItTUlCOjpzeXNEZXNjci4wXGZSKSBjYW4gYmUgc3BlY2lmaWVkIHNpbXBseQorVGh1cyBcZkMuaXNvLm9yZy5kb2QuaW50ZXJuZXQubWliXC0yLnN5c3RlbS5zeXNEZXNjci4wXGZSCisob3IgXGZDU05NUHYyXC1NSUI6OnN5c0Rlc2NyLjBcZlIpIGNhbiBiZSBzcGVjaWZpZWQgc2ltcGx5CiBhcyBcZkNzeXNEZXNjci4wXGZSLgogLlJTCiAuSVAgIldhcm5pbmc6IgpAQCAtODQ4LDI0ICs4NDgsMjQgQEAKIGhhdmUgYmVlbiBsb2FkZWQuCiAuUkUKIC5JUAotVGhlIFxmSU1JQi1NT0RVTEU6Om9iamVjdE5hbWVcZlIgc3ludGF4IGhhcworVGhlIFxmSU1JQlwtTU9EVUxFOjpvYmplY3ROYW1lXGZSIHN5bnRheCBoYXMKIHRoZSBhZHZhbnRhZ2Ugb2YgdW5pcXVlbHkgaWRlbnRpZnlpbmcgYSBwYXJ0aWN1bGFyIE1JQiBvYmplY3QsCiBhcyB3ZWxsIGFzIGJlaW5nIHNsaWdodGx5IG1vcmUgZWZmaWNpZW50IChhbmQgYXV0b21hdGljYWxseQogbG9hZGluZyB0aGUgbmVjZXNzYXJ5IE1JQiBmaWxlIGlmIG5lY2Vzc2FyeSkuCiAuVFAKLS5CIC1JcyBTVUZGSVgKKy5CIFwtSXMgU1VGRklYCiBhZGRzIHRoZSBzcGVjaWZpZWQgc3VmZml4IHRvIGVhY2ggdGV4dHVhbCBPSUQgZ2l2ZW4gb24gdGhlIGNvbW1hbmQgbGluZS4KIFRoaXMgY2FuIGJlIHVzZWQgdG8gcmV0cmlldmUgbXVsdGlwbGUgb2JqZWN0cyBmcm9tIHRoZSBzYW1lIHJvdyBvZgogYSB0YWJsZSwgYnkgc3BlY2lmeWluZyBhIGNvbW1vbiBpbmRleCB2YWx1ZS4KIC5UUAotLkIgLUlTIFBSRUZJWAorLkIgXC1JUyBQUkVGSVgKIGFkZHMgdGhlIHNwZWNpZmllZCBwcmVmaXggdG8gZWFjaCB0ZXh0dWFsIE9JRCBnaXZlbiBvbiB0aGUgY29tbWFuZCBsaW5lLgogVGhpcyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGFuIGV4cGxpY2l0IE1JQiBtb2R1bGUgbmFtZSBmb3IgYWxsIG9iamVjdHMKIGJlaW5nIHJldHJpZXZlZCAob3IgZm9yIGluY3VyYWJseSBsYXp5IHR5cGlzdHMpLgogLlRQCi0uQiAtSXUKKy5CIFwtSXUKIGVuYWJsZXMgdGhlIHRyYWRpdGlvbmFsIFVDRC1zdHlsZSBhcHByb2FjaCB0byBpbnRlcnByZXRpbmcgaW5wdXQgT0lEcy4KLVRoaXMgYXNzdW1lcyB0aGF0IE9JRHMgYXJlIHJvb3RlZCBhdCB0aGUgJ21pYi0yJyBwb2ludCBpbiB0aGUgdHJlZQorVGhpcyBhc3N1bWVzIHRoYXQgT0lEcyBhcmUgcm9vdGVkIGF0IHRoZSAnbWliXC0yJyBwb2ludCBpbiB0aGUgdHJlZQogKHVubGVzcyB0aGV5IHN0YXJ0IHdpdGggYW4gZXhwbGljaXQgJy4nIG9yIGluY2x1ZGUgYSBNSUIgbW9kdWxlIG5hbWUpLgogU28gdGhlIFxmQ3N5c0Rlc2NyXGZSIGluc3RhbmNlIGFib3ZlIHdvdWxkIGJlIHJlZmVyZW5jZWQgYXMKIFxmQ3N5c3RlbS5zeXNEZXNjci4wXGZSLiAKQEAgLTg3NCwyOCArODc0LDI4IEBACiBPYmplY3QgbmFtZXMgc3BlY2lmaWVkIHdpdGggYSBsZWFkaW5nICcuJyBhcmUgYWx3YXlzIGludGVycHJldGVkIGFzCiAiZnVsbHkgcXVhbGlmaWVkIiBPSURzLCBsaXN0aW5nIHRoZSBzZXF1ZW5jZSBvZiBNSUIgb2JqZWN0cyBmcm9tIHRoZQogcm9vdCBvZiB0aGUgTUlCIHRyZWUuICBTdWNoIG9iamVjdHMgYW5kIHRob3NlIHF1YWxpZmllZCBieSBhbiBleHBsaWNpdAotTUlCIG1vZHVsZSBuYW1lIGFyZSB1bmFmZmVjdGVkIGJ5IHRoZSBcZkItSWJcZlIsIFxmQi1JUlxmUiBhbmQgXGZCLUl1XGZSIGZsYWdzLgorTUlCIG1vZHVsZSBuYW1lIGFyZSB1bmFmZmVjdGVkIGJ5IHRoZSBcZkJcLUliXGZSLCBcZkJcLUlSXGZSIGFuZCBcZkJcLUl1XGZSIGZsYWdzLgogCiBPdGhlcndpc2UsIGlmIG5vbmUgb2YgdGhlIGFib3ZlIGlucHV0IG9wdGlvbnMgYXJlIHNwZWNpZmllZCwgdGhlCiBkZWZhdWx0IGJlaGF2aW91ciBmb3IgYSAicmVsYXRpdmUiIE9JRCBpcyB0byB0cnkgYW5kIGludGVycHJldCBpdAogYXMgYW4gKGltcGxpY2l0bHkpIGZ1bGx5IHF1YWxpZmllZCBPSUQsCi10aGVuIGFwcGx5ICJyYW5kb20gYWNjZXNzIiBsb29rdXAgKFxmQi1JUlxmUiksCi1mb2xsb3dlZCBieSAiYmVzdCBtYXRjaCIgcGF0dGVybiBtYXRjaGluZyAoXGZCLUliXGZSKS4KK3RoZW4gYXBwbHkgInJhbmRvbSBhY2Nlc3MiIGxvb2t1cCAoXGZCXC1JUlxmUiksCitmb2xsb3dlZCBieSAiYmVzdCBtYXRjaCIgcGF0dGVybiBtYXRjaGluZyAoXGZCXC1JYlxmUikuCiAKIC5TSCAiRU5WSVJPTk1FTlQgVkFSSUFCTEVTIgogLklQIFBSRUZJWAogVGhlIHN0YW5kYXJkIHByZWZpeCBmb3Igb2JqZWN0IGlkZW50aWZpZXJzICh3aGVuIHVzaW5nIFVDRC1zdHlsZSBvdXRwdXQpLgotRGVmYXVsdHMgdG8gLmlzby5vcmcuZG9kLmludGVybmV0Lm1nbXQubWliLTIKK0RlZmF1bHRzIHRvIC5pc28ub3JnLmRvZC5pbnRlcm5ldC5tZ210Lm1pYlwtMgogLklQIE1JQlMKIFRoZSBsaXN0IG9mIE1JQnMgdG8gbG9hZC4gRGVmYXVsdHMgdG8KLVNOTVB2Mi1UQzpTTk1QdjItTUlCOklGLU1JQjpJUC1NSUI6VENQLU1JQjpVRFAtTUlCOlNOTVAtVkFDTS1NSUIuCitTTk1QdjJcLVRDOlNOTVB2MlwtTUlCOklGXC1NSUI6SVBcLU1JQjpUQ1BcLU1JQjpVRFBcLU1JQjpTTk1QXC1WQUNNXC1NSUIuCiBPdmVycmlkZGVuIGJ5IHRoZQotLkIgLW0KKy5CIFwtbQogb3B0aW9uLgogLklQIE1JQkRJUlMKIFRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIHNlYXJjaCBmb3IgTUlCcy4gRGVmYXVsdHMgdG8gREFUQURJUi9zbm1wL21pYnMuCiBPdmVycmlkZGVuIGJ5IHRoZQotLkIgLU0KKy5CIFwtTQogb3B0aW9uLgogCiAuU0ggRklMRVMKZGlmZiAtLWdpdCBhL21hbi9zbm1wY29uZi4xLmRlZiBiL21hbi9zbm1wY29uZi4xLmRlZgppbmRleCA4NDg4YWE1Li5jZDBjMTA0IDEwMDY0NAotLS0gYS9tYW4vc25tcGNvbmYuMS5kZWYKKysrIGIvbWFuL3NubXBjb25mLjEuZGVmCkBAIC02LDcgKzYsNyBAQAogW09QVElPTlNdIFtmaWxlVG9DcmVhdGVdCiAuSVAgIlN0YXJ0IHdpdGg6IgogLkIgc25tcGNvbmYKLS1nIGJhc2ljX3NldHVwCitcLWcgYmFzaWNfc2V0dXAKIC5JUCAiT3IgZXZlbiBqdXN0OiIKIC5CIHNubXBjb25mCiAuU0ggREVTQ1JJUFRJT04KQEAgLTI3LDM1ICsyNywzNSBAQAogY29tbWVudGVkLgogLlBQCiBBIHBhcnRpY3VsYXJseSB1c2VmdWwgb3B0aW9uIGlzIHRoZQotLkIgLWcKKy5CIFwtZwogc3dpdGNoLCB3aGljaCB3YWxrcyBhIHVzZXIgdGhyb3VnaCBhIHNwZWNpZmljIHNldCBvZiBjb25maWd1cmF0aW9uCiBxdWVzdGlvbnMuICBSdW46CiAuUlMKIC5QUAotc25tcGNvbmYgLWcgYmFzaWNfc2V0dXAKK3NubXBjb25mIFwtZyBiYXNpY19zZXR1cAogLlJFCiAuUFAKIGZvciBhbiBleGFtcGxlLgogLlNIICJPUFRJT05TIgogLlRQIDgKLS5CIC1mCisuQiBcLWYKIEZvcmNlIG92ZXJ3cml0aW5nIGV4aXN0aW5nIGZpbGVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSB3aXRob3V0CiBwcm9tcHRpbmcgdGhlIHVzZXIgaWYgdGhpcyBpcyBhIGRlc2lyZWQgdGhpbmcgdG8gZG8uCiAuVFAgCi0uQiAtaQorLkIgXC1pCiBXaGVuIGZpbmlzaGVkLCBpbnN0YWxsIHRoZSBmaWxlcyBpbnRvIHRoZSBsb2NhdGlvbiB3aGVyZSB0aGUgZ2xvYmFsCiBzeXN0ZW0gY29tbWFuZHMgZXhwZWN0IHRvIGZpbmQgdGhlbS4KIC5UUAotLkIgLXAKKy5CIFwtcAogV2hlbiBmaW5pc2hlZCwgaW5zdGFsbCB0aGUgZmlsZXMgaW50byB0aGUgdXNlcnMgaG9tZSBkaXJlY3RvcnkncyAuc25tcAogc3ViZGlyZWN0b3J5ICh3aGVyZSB0aGUgYXBwbGljYXRpb25zIHdpbGwgYWxzbyBzZWFyY2ggZm9yCiBjb25maWd1cmF0aW9uIGZpbGVzKS4KIC5UUAotLkJJIC1JICIgRElSRUNUT1JZIgorLkJJIFwtSSAiIERJUkVDVE9SWSIKIFdoZW4gZmluaXNoZWQsIGluc3RhbGwgdGhlIGZpbGVzIGludG8gdGhlIGRpcmVjdG9yeSAKIC5JUiBESVJFQ1RPUlkgLgogLlRQCi0uQiAtYQorLkIgXC1hCiBEb24ndCBhc2sgYW55IHF1ZXN0aW9ucy4gIFNpbXBseSByZWFkIGluIHRoZSB2YXJpb3VzIGtub3duCiBjb25maWd1cmF0aW9uIGZpbGVzIGFuZCB3cml0ZSB0aGVtIGJhY2sgb3V0IGFnYWluLiAgVGhpcyBoYXMgdGhlCiBlZmZlY3Qgb2YgImF1dG8tY29tbWVudGluZyIgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIHlvdS4gIFNlZQpAQCAtNjMsMTcgKzYzLDE3IEBACiAuQiBORUFUIFRSSUNLUwogc2VjdGlvbiBiZWxvdy4KIC5UUAotLkJJIC1yIGFsbHxub25lCisuQkkgXC1yIGFsbHxub25lCiBSZWFkIGluIGVpdGhlciBhbGwgb3Igbm9uZSBvZiB0aGUgZm91bmQgY29uZmlndXJhdGlvbiBmaWxlcy4gIE5vcm1hbGx5CiAuQiBzbm1wY29uZgogcHJvbXB0cyB5b3UgZm9yIHdoaWNoIGZpbGVzIHlvdSB3aXNoIHRvIHJlYWQgaW4uICBSZWFkaW5nIGluCiB0aGVzZSBjb25maWd1cmF0aW9uIGZpbGVzIHdpbGwgbWVyZ2UgdGhlc2UgZmlsZXMgd2l0aCB0aGUgcmVzdWx0cyBvZgogdGhlIHF1ZXN0aW9ucyB0aGF0IGl0IGFza3Mgb2YgeW91LgogLlRQCi0uQkkgLVIgIiBGSUxFLC4uLiIKKy5CSSBcLVIgIiBGSUxFLC4uLiIKIFJlYWQgaW4gYSBzcGVjaWZpYyBsaXN0IG9mIGNvbmZpZ3VyYXRpb24gZmlsZXMuCiAuVFAKLS5CSSAtZyAiIEdST1VQTkFNRSIKKy5CSSBcLWcgIiBHUk9VUE5BTUUiCiBHcm91cHMgb2YgY29uZmlndXJhdGlvbiBlbnRyaWVzIGNhbiBiZSBjcmVhdGVkIHRoYXQgY2FuIGJlIHVzZWQgdG8KIHdhbGsgYSB1c2VyIHRocm91Z2ggYSBzZXJpZXMgb2YgcXVlc3Rpb25zIHRvIGNyZWF0ZSBhbiBpbml0aWFsCiBjb25maWd1cmF0aW9uIGZpbGUuICBUaGVyZSBhcmUgbm8gbWVudXMgdG8gbmF2aWdhdGUsIGp1c3QgYSBsaXN0IG9mCkBAIC04MSw0NCArODEsNDQgQEAKIC5SUwogLlJTCiAuUFAKLXNubXBjb25mIC1nIGJhc2ljX3NldHVwCitzbm1wY29uZiBcLWcgYmFzaWNfc2V0dXAKIC5SRQogLlBQCiBmb3IgYSBnb29kIGV4YW1wbGUuCiAuUkUKIC5UUAotLkIgLUcKKy5CIFwtRwogTGlzdCBhbGwgdGhlIGtub3duIGdyb3Vwcy4KIC5UUAotLkJJIC1jICIgQ09ORklHRElSIgorLkJJIFwtYyAiIENPTkZJR0RJUiIKIC5CIHNubXBjb25mCiB1c2VzIGEgZGlyZWN0b3J5IG9mIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gdG8gbGVhcm4gYWJvdXQKIHRoZSBmaWxlcyBhbmQgcXVlc3Rpb25zIHRoYXQgaXQgc2hvdWxkIGJlIGFza2luZy4gIFRoaXMgb3B0aW9uIHRlbGxzCiAuQiBzbm1wY29uZgogdG8gdXNlIGEgZGlmZmVyZW50IGxvY2F0aW9uIGZvciBjb25maWd1cmluZyBpdHNlbGYuCiAuVFAKLS5CIC1xCisuQiBcLXEKIFJ1biBzbGlnaHRseSBtb3JlIHF1aWV0bHkuICBTaW5jZSB0aGlzIGlzIGFuIGludGVyYWN0aXZlIHByb2dyYW0sIEkKIGRvbid0IHJlY29tbWVuZCB0aGlzIG9wdGlvbiBzaW5jZSBpdCBvbmx5IHJlbW92ZXMgaW5mb3JtYXRpb24gZnJvbSB0aGUKIG91dHB1dCB0aGF0IGlzIGRlc2lnbmVkIHRvIGhlbHAgeW91LgogLlRQCi0uQiAtZAorLkIgXC1kCiBUdXJuIG9uIAogLkIgbG90cwogb2YgZGVidWdnaW5nIG91dHB1dC4KIC5UUAotLkIgLUQKKy5CIFwtRAogQWRkIAogLkIgZXZlbiBtb3JlCiBkZWJ1Z2dpbmcgb3V0cHV0IGluIHRoZSBmb3JtIG9mIFBlcmwgdmFyaWFibGUgZHVtcHMuCiAuSVAKIC5TSCAiTkVBVCBUUklDS1MiCi0uSVAgInNubXBjb25mIC1nIGJhc2ljX3NldHVwIgorLklQICJzbm1wY29uZiBcLWcgYmFzaWNfc2V0dXAiCiBIYXZlIEkgbWVudGlvbmVkIHRoaXMgY29tbWFuZCBlbm91Z2ggeWV0PyAgSXQncyBkZXNpZ25lZCB0byB3YWxrCiBzb21lb25lIHRocm91Z2ggYW4gaW5pdGlhbCBzZXR1cCBmb3IgdGhlCiAuSSBzbm1wZCg4KQogZGFlbW9uLiAgUmVhbGx5LCB5b3Ugc2hvdWxkIHRyeSBpdC4KLS5JUCAic25tcGNvbmYgLVIgL3Vzci9sb2NhbC9zbm1wL3NubXBkLmNvbmYgLWEgLWYgc25tcGQuY29uZiIKKy5JUCAic25tcGNvbmYgXC1SIC91c3IvbG9jYWwvc25tcC9zbm1wZC5jb25mIFwtYSBcLWYgc25tcGQuY29uZiIKIEF1dG9tYXRpY2FsbHkgcmVhZHMgaW4gYW4gc25tcGQuY29uZiBmaWxlIChmb3IgZXhhbXBsZSkgYW5kIGFkZHMKIGNvbW1lbnRzIHRvIHRoZW0gZGVzY3JpYmluZyB3aGF0IGVhY2ggdG9rZW4gZG9lcy4gIFRyeSBpdC4gIEl0J3MgY29vbC4KIC5TSCAiTk9URVMiCmRpZmYgLS1naXQgYS9tYW4vc25tcGQuOC5kZWYgYi9tYW4vc25tcGQuOC5kZWYKaW5kZXggMmM5MmZhMi4uZjE3MzM5NiAxMDA2NDQKLS0tIGEvbWFuL3NubXBkLjguZGVmCisrKyBiL21hbi9zbm1wZC44LmRlZgpAQCAtMTIsMTMgKzEyLDEzIEBACiByZXF1ZXN0ZWQgb3BlcmF0aW9uKHMpIGFuZCByZXR1cm5zIHRoZSBpbmZvcm1hdGlvbiB0byB0aGUgc2VuZGVyLgogLlNIIE9QVElPTlMKIC5UUCA4Ci0uQiAtYQorLkIgXC1hCiBMb2cgdGhlIHNvdXJjZSBhZGRyZXNzZXMgb2YgaW5jb21pbmcgcmVxdWVzdHMuCiAuVFAKLS5CIC1BCisuQiBcLUEKIEFwcGVuZCB0byB0aGUgbG9nIGZpbGUgcmF0aGVyIHRoYW4gdHJ1bmNhdGluZyBpdC4KIC5UUAotLkIgIi1jIiBcZklGSUxFCisuQiAiXC1jIiBcZklGSUxFCiBSZWFkIAogLkkgRklMRQogYXMgYSBjb25maWd1cmF0aW9uIGZpbGUKQEAgLTI3LDIxICsyNywyMSBAQAogaXMgc3BlY2lmaWVkIGluIHRoZSBmaWxlIGFzIGRlc2NyaWJlZCBpbiB0aGUgc25tcF9jb25maWcgbWFuIHBhZ2UgdW5kZXIKIFNXSVRDSElORyBDT05GSUdVUkFUSU9OIFRZUEVTIElOIE1JRC1GSUxFLgogLlRQCi0uQiAtQworLkIgXC1DCiBEbyBub3QgcmVhZCBhbnkgY29uZmlndXJhdGlvbiBmaWxlcyBleGNlcHQgdGhlIG9uZXMgb3B0aW9uYWxseSBzcGVjaWZpZWQgYnkgdGhlIAotLkIgLWMgCisuQiBcLWMgCiBvcHRpb24uCiBOb3RlIHRoYXQgdGhpcyBiZWhhdmlvdXIgYWxzbyBjb3ZlcnMgdGhlIHBlcnNpc3RlbnQgY29uZmlndXJhdGlvbiBmaWxlcy4KIFRoaXMgbWF5IHJlc3VsdCBpbiBkeW5hbWljYWxseS1hc3NpZ25lZCB2YWx1ZXMgYmVpbmcgcmVzZXQgZm9sbG93aW5nIGFuCiBhZ2VudCByZXN0YXJ0LCB1bmxlc3MgdGhlIHJlbGV2YW50IHBlcnNpc3RlbnQgY29uZmlnIGZpbGVzIGFyZQogZXhwbGljaXRseSBsb2FkZWQgdXNpbmcgdGhlCi0uQiAtYyAKKy5CIFwtYyAKIG9wdGlvbi4KIC5UUAotLkIgLWQKKy5CIFwtZAogRHVtcCAoaW4gaGV4YWRlY2ltYWwpIHRoZSBzZW50IGFuZCByZWNlaXZlZCBTTk1QIHBhY2tldHMuCiAuVFAKLS5CIC1EXGZJW1RPS0VOWywuLi5dXQorLkIgXC1EXGZJW1RPS0VOWywuLi5dXQogVHVybiBvbiBkZWJ1Z2dpbmcgb3V0cHV0IGZvciB0aGUgZ2l2ZW4KIC5JUiAiVE9LRU4iICIocykuIgogV2l0aG91dCBhbnkgdG9rZW5zIHNwZWNpZmllZCwgaXQgZGVmYXVsdHMgdG8gcHJpbnRpbmcgYWxsIHRoZSB0b2tlbnMKQEAgLTQ5LDk5ICs0OSw5OSBAQAogWW91IG1pZ2h0IHdhbnQgdG8gdHJ5CiAuSVIgQUxMCiBmb3IgZXh0cmVtZWx5IHZlcmJvc2Ugb3V0cHV0LiAgTm90ZTogWW91IGNhbiBub3QgcHV0IGEgc3BhY2UgYmV0d2VlbgotdGhlIC1EIGZsYWcgYW5kIHRoZSBsaXN0ZWQgVE9LRU5zLgordGhlIFwtRCBmbGFnIGFuZCB0aGUgbGlzdGVkIFRPS0VOcy4KIC5UUAotLkIgLWYKKy5CIFwtZgogRG8gbm90IGZvcmsoKSBmcm9tIHRoZSBjYWxsaW5nIHNoZWxsLgogLlRQCi0uQiAtZyBcZklHSUQKKy5CIFwtZyBcZklHSUQKIENoYW5nZSB0byB0aGUgbnVtZXJpY2FsIGdyb3VwIElECiAuSSBHSUQKIGFmdGVyIG9wZW5pbmcgbGlzdGVuaW5nIHNvY2tldHMuCiAuVFAKLS5CIC1oLCAtLWhlbHAKKy5CIFwtaCwgXC1cLWhlbHAKIERpc3BsYXkgYSBicmllZiB1c2FnZSBtZXNzYWdlIGFuZCB0aGVuIGV4aXQuCiAuVFAKLS5CIC1ICisuQiBcLUgKIERpc3BsYXkgYSBsaXN0IG9mIGNvbmZpZ3VyYXRpb24gZmlsZSBkaXJlY3RpdmVzIHVuZGVyc3Rvb2QgYnkgdGhlCiBhZ2VudCBhbmQgdGhlbiBleGl0LgogLlRQCi0uQiAtSSBcZklbLV1JTklUTElTVAorLkIgXC1JIFxmSVtcLV1JTklUTElTVAogU3BlY2lmaWVzIHdoaWNoIG1vZHVsZXMgc2hvdWxkIChvciBzaG91bGQgbm90KSBiZSBpbml0aWFsaXplZAogd2hlbiB0aGUgYWdlbnQgc3RhcnRzIHVwLiAgSWYgdGhlIGNvbW1hLXNlcGFyYXRlZAogLkkgSU5JVExJU1QKIGlzIHByZWNlZGVkCi13aXRoIGEgJy0nLCBpdCBpcyB0aGUgbGlzdCBvZiBtb2R1bGVzIHRoYXQgc2hvdWxkIFxmSW5vdFxmUiBiZSBzdGFydGVkLgord2l0aCBhICdcLScsIGl0IGlzIHRoZSBsaXN0IG9mIG1vZHVsZXMgdGhhdCBzaG91bGQgXGZJbm90XGZSIGJlIHN0YXJ0ZWQuCiBPdGhlcndpc2UgdGhpcyBpcyB0aGUgbGlzdCBvZiB0aGUgXGZJb25seVxmUiBtb2R1bGVzIHRoYXQgc2hvdWxkIGJlIHN0YXJ0ZWQuCiAKIFRvIGdldCBhIGxpc3Qgb2YgY29tcGlsZWQgbW9kdWxlcywgcnVuIHRoZSBhZ2VudCB3aXRoIHRoZSBhcmd1bWVudHMKLS5JICItRG1pYl9pbml0IC1IIgorLkkgIlwtRG1pYl9pbml0IFwtSCIKIChhc3N1bWluZyBkZWJ1Z2dpbmcgc3VwcG9ydCBoYXMgYmVlbiBjb21waWxlZCBpbikuCiAuVFAKLS5CIC1MW2Vmb3NdCisuQiBcLUxbZWZvc10KIFNwZWNpZnkgd2hlcmUgbG9nZ2luZyBvdXRwdXQgc2hvdWxkIGJlIGRpcmVjdGVkIChzdGFuZGFyZCBlcnJvciBvciBvdXRwdXQsCiB0byBhIGZpbGUgb3IgdmlhIHN5c2xvZykuICBTZWUgTE9HR0lORyBPUFRJT05TIGluIHNubXBjbWQoNSkgZm9yIGRldGFpbHMuCiAuVFAKLS5CUiAtbSAiIFxmSU1JQkxJU1QiCisuQlIgXC1tICIgXGZJTUlCTElTVCIKIFNwZWNpZmllcyBhIGNvbG9uIHNlcGFyYXRlZCBsaXN0IG9mIE1JQiBtb2R1bGVzIHRvIGxvYWQgZm9yIHRoaXMKIGFwcGxpY2F0aW9uLiAgVGhpcyBvdmVycmlkZXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIE1JQlMuCiBTZWUgXGZJc25tcGNtZCgxKVxmUiBmb3IgZGV0YWlscy4KIC5UUAotLkJSIC1NICIgXGZJRElSTElTVCIKKy5CUiBcLU0gIiBcZklESVJMSVNUIgogU3BlY2lmaWVzIGEgY29sb24gc2VwYXJhdGVkIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGZvciBNSUJzLgogVGhpcyBvdmVycmlkZXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIE1JQkRJUlMuCiBTZWUgXGZJc25tcGNtZCgxKVxmUiBmb3IgZGV0YWlscy4KIC5UUAotLkIgLW4gXGZJTkFNRQorLkIgXC1uIFxmSU5BTUUKIFNldCBhbiBhbHRlcm5hdGl2ZSBhcHBsaWNhdGlvbiBuYW1lICh3aGljaCB3aWxsIGFmZmVjdCB0aGUKIGNvbmZpZ3VyYXRpb24gZmlsZXMgbG9hZGVkKS4KIEJ5IGRlZmF1bHQgdGhpcyB3aWxsIGJlIFxmSXNubXBkXGZSLCByZWdhcmRsZXNzIG9mIHRoZSBuYW1lCiBvZiB0aGUgYWN0dWFsIGJpbmFyeS4KIC5UUAotLkIgLXAgXGZJRklMRQorLkIgXC1wIFxmSUZJTEUKIFNhdmUgdGhlIHByb2Nlc3MgSUQgb2YgdGhlIGRhZW1vbiBpbgogLklSIEZJTEUgIi4iCiAuVFAgCi0uQiAtcQorLkIgXC1xCiBQcmludCBzaW1wbGVyIG91dHB1dCBmb3IgZWFzaWVyIGF1dG9tYXRlZCBwYXJzaW5nLgogLlRQCi0uQiAtcgorLkIgXC1yCiBEbyBub3QgcmVxdWlyZSByb290IGFjY2VzcyB0byBydW4gdGhlIGRhZW1vbi4gIFNwZWNpZmljYWxseSwgZG8gbm90IGV4aXQKIGlmIGZpbGVzIG9ubHkgYWNjZXNzaWJsZSB0byByb290IChzdWNoIGFzIC9kZXYva21lbSBldGMuKSBjYW5ub3QgYmUKIG9wZW5lZC4KIC5UUAotLkIgLXUgXGZJVUlECisuQiBcLXUgXGZJVUlECiBDaGFuZ2UgdG8gdGhlIHVzZXIgSUQKIC5JIFVJRAogKHdoaWNoIGNhbiBiZSBnaXZlbiBpbiBudW1lcmljYWwgb3IgdGV4dHVhbCBmb3JtKSBhZnRlciBvcGVuaW5nCiBsaXN0ZW5pbmcgc29ja2V0cy4KIC5UUAotLkIgLVUKKy5CIFwtVQogSW5zdHJ1Y3RzIHRoZSBhZ2VudCB0byBub3QgcmVtb3ZlIGl0cyBwaWQgZmlsZSAoc2VlIHRoZQotLkIgLXAKKy5CIFwtcAogb3B0aW9uKSBvbiBzaHV0ZG93bi4gT3ZlcnJpZGVzIHRoZSBsZWF2ZV9waWRmaWxlIHRva2VuIGluIHRoZQogLkkgc25tcGQuY29uZgogZmlsZSwgc2VlCiAuSSBzbm1wZC5jb25mKDUpLgogLlRQCi0uQiAtdiwgLS12ZXJzaW9uCisuQiBcLXYsIFwtXC12ZXJzaW9uCiBQcmludCB2ZXJzaW9uIGluZm9ybWF0aW9uIGZvciB0aGUgYWdlbnQgYW5kIHRoZW4gZXhpdC4KIC5UUAotLkIgLVYKKy5CIFwtVgogU3ltYm9saWNhbGx5IGR1bXAgU05NUCB0cmFuc2FjdGlvbnMuCiAuVFAKLS5CIC14IFxmSUFERFJFU1MKKy5CIFwteCBcZklBRERSRVNTCiBMaXN0ZW5zIGZvciBBZ2VudFggY29ubmVjdGlvbnMgb24gdGhlIHNwZWNpZmllZCBhZGRyZXNzCiByYXRoZXIgdGhhbiB0aGUgZGVmYXVsdCBBR0VOVFhfU09DS0VULgogVGhlIGFkZHJlc3MgY2FuIGVpdGhlciBiZSBhIFVuaXggZG9tYWluIHNvY2tldCBwYXRoLAogb3IgdGhlIGFkZHJlc3Mgb2YgYSBuZXR3b3JrIGludGVyZmFjZS4gIFRoZSBmb3JtYXQgaXMgdGhlIHNhbWUgYXMgdGhlCiBmb3JtYXQgb2YgbGlzdGVuaW5nIGFkZHJlc3NlcyBkZXNjcmliZWQgYmVsb3cuCiAuVFAKLS5CIC1YCisuQiBcLVgKIFJ1biBhcyBhbiBBZ2VudFggc3ViYWdlbnQgcmF0aGVyIHRoYW4gYXMgYW4gU05NUCBtYXN0ZXIgYWdlbnQuCiAuVFAKLS5CSSAtLSAibmFtZSI9InZhbHVlIgotQWxsb3dzIHRvIHNwZWNpZnkgYW55IHRva2VuICgibmFtZSIpIHN1cHBvcnRlZCBpbiB0aGUKKy5CSSBcLVwtICJuYW1lIj0idmFsdWUiCitBbGxvd3Mgb25lIHRvIHNwZWNpZnkgYW55IHRva2VuICgibmFtZSIpIHN1cHBvcnRlZCBpbiB0aGUKIC5JIHNubXBkLmNvbmYKIGZpbGUgYW5kIHNldHMgaXRzIHZhbHVlIHRvICJ2YWx1ZSIuIE92ZXJyaWRlcyB0aGUgY29ycmVzcG9uZGluZyB0b2tlbiBpbiB0aGUKIC5JIHNubXBkLmNvbmYKQEAgLTIxOCwxMCArMjE4LDEwIEBACiAuSVIgImlweDovNDAwMDAiCiBsaXN0ZW4gb24gSVBYIHBvcnQgNDAwMDAgb24gYWxsIElQWCBpbnRlcmZhY2VzLgogLlRQIDI0Ci0uSVIgInVuaXg6L3RtcC9sb2NhbC1hZ2VudCIKLWxpc3RlbiBvbiB0aGUgVW5peCBkb21haW4gc29ja2V0IFxmSS90bXAvbG9jYWwtYWdlbnRcZlIuCisuSVIgInVuaXg6L3RtcC9sb2NhbFwtYWdlbnQiCitsaXN0ZW4gb24gdGhlIFVuaXggZG9tYWluIHNvY2tldCBcZkkvdG1wL2xvY2FsXC1hZ2VudFxmUi4KIC5UUCAyNAotLklSICIvdG1wL2xvY2FsLWFnZW50IgorLklSICIvdG1wL2xvY2FsXC1hZ2VudCIKIGlzIGlkZW50aWNhbCB0byB0aGUgcHJldmlvdXMgc3BlY2lmaWNhdGlvbiwgc2luY2UgdGhlIFVuaXggZG9tYWluIGlzCiBhc3N1bWVkIGlmIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIDx0cmFuc3BvcnQtYWRkcmVzcz4gaXMgJy8nLgogLlRQIDI0CkBAIC0yNTYsNyArMjU2LDcgQEAKIG5hbWVkIHBpcGUgdGhhdCBjYW4gYmUgY29ubmVjdGVkIHRvIHZpYSBhIHNzaCBzdWJzeXN0ZW0gY29uZmlndXJlZCBpbgogdGhlIG1haW4gc3NoIHNlcnZlci4gIFRoZSBwaXBlIGxvY2F0aW9uIChjb25maWd1cmFibGUgd2l0aCB0aGUKIHNzaHRvc25tcHNvY2tldCB0b2tlbiBpbiBzbm1wLmNvbmYpIGlzCi0uSSAvdmFyL25ldC1zbm1wL3NzaHRvc25tcC4KKy5JIC92YXIvbmV0XC1zbm1wL3NzaHRvc25tcC4KIFBhY2tldHMgc2hvdWxkIGJlIHN1Ym1pdHRlZCB0byBpdCB2aWEgdGhlIHNzaHRvc25tcCBhcHBsaWNhdGlvbiwgd2hpY2gKIGFsc28gc2VuZHMgdGhlIHVzZXIgSUQgYXMgd2VsbCB3aGVuIHN0YXJ0aW5nIHRoZSBjb25uZWN0aW9uLiAgVGhlIFRTTQogc2VjdXJpdHkgbW9kZWwgc2hvdWxkIGJlIHVzZWQgd2hlbiBwYWNrZXRzIHNob3VsZCBwcm9jZXNzIGl0LgpAQCAtMjc2LDExICsyNzYsMTEgQEAKIFRoZQogLkkgc3NodG9zbm1wCiBjb21tYW5kIHdpbGwgbmVlZCByZWFkL3dyaXRlIGFjY2VzcyB0byB0aGUgCi0uSSAvdmFyL25ldC1zbm1wL3NzaHRvc25tcAorLkkgL3Zhci9uZXRcLXNubXAvc3NodG9zbm1wCiBwaXBlLiAgQWx0aG91Z2ggaXQgc2hvdWxkIGJlIGZhaXJseSBzYWZlIHRvIGdyYW50IGFjY2VzcyB0byB0aGUKIGF2ZXJhZ2UgdXNlciBzaW5jZSBpdCBzdGlsbCByZXF1aXJlcyBtb2RpZmljYXRpb25zIHRvIHRoZSBBQ00gc2V0dGluZ3MKIGJlZm9yZSB0aGUgdXNlciBjYW4gcGVyZm9ybSBvcGVyYXRpb25zLCBwYXJhbm9pZCBhZG1pbmlzdHJhdG9ycyBtYXkKLXdhbnQgdG8gbWFrZSB0aGUgL3Zhci9uZXQtc25tcCBkaXJlY3RvcnkgYWNjZXNzaWJsZSBvbmx5IGJ5IHVzZXJzIGluIGEKK3dhbnQgdG8gbWFrZSB0aGUgL3Zhci9uZXRcLXNubXAgZGlyZWN0b3J5IGFjY2Vzc2libGUgb25seSBieSB1c2VycyBpbiBhCiBwYXJ0aWN1bGFyIGdyb3VwLiAgVXNlIHRoZQogLkkgc3NodG9zbm1wc29ja2V0cGVybXMKIHNubXAuY29uZiBjb25maWd1cmUgb3B0aW9uIHRvIHNldCB0aGUgcGVybWlzc2lvbnMsIG93bmVyIGFuZCBncm91cCBvZgpAQCAtMjkwLDcgKzI5MCw3IEBACiBzdHlsZSBvZiBzaW1wbGUgc25tcGQuY29uZiBzZXR0aW5nczoKIC5UUCA4CiAuSVAKLXJvdXNlciAtcyB0c20gZm9vIGF1dGhwcml2Cityb3VzZXIgXC1zIHRzbSBmb28gYXV0aHByaXYKIC5JUAogTm90ZSB0aGF0ICJhdXRocHJpdiIgaXMgYWNjZXB0YWJsZSBhc3N1bWluZyBhcyBTU0ggcHJvdGVjdHMgZXZlcnl0aGluZwogdGhhdCB3YXkgKGFzc3VtaW5nIHlvdSBoYXZlIGEgbm9uLWluc2FuZSBzZXR1cCkuCmRpZmYgLS1naXQgYS9tYW4vc25tcGQuY29uZi41LmRlZiBiL21hbi9zbm1wZC5jb25mLjUuZGVmCmluZGV4IDQ5ZDgxYjYuLjVmODVmNzIgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wZC5jb25mLjUuZGVmCisrKyBiL21hbi9zbm1wZC5jb25mLjUuZGVmCkBAIC0xOCw3ICsxOCw3IEBACiBtYW51YWwgcGFnZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiwgb3IgdHJ5IHJ1bm5pbmcgdGhlCiBjb21tYW5kOgogLlJTCi0uSVAgInNubXBjb25mIC1nIGJhc2ljX3NldHVwIgorLklQICJzbm1wY29uZiBcLWcgYmFzaWNfc2V0dXAiCiAuUkUKIC5QUAogVGhlcmUgYXJlIGEgbGFyZ2UgbnVtYmVyIG9mIGRpcmVjdGl2ZXMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkLApAQCAtNDAsNyArNDAsNyBAQAogQSBmdWxsIGxpc3Qgb2YgcmVjb2duaXNlZCBkaXJlY3RpdmVzIGNhbiBiZSBvYnRhaW5lZCBieSBydW5uaW5nCiB0aGUgY29tbWFuZDoKIC5SUwotLklQICJzbm1wZCAtSCIKKy5JUCAic25tcGQgXC1IIgogLlJFCiAuU0ggQUdFTlQgQkVIQVZJT1VSCiBBbHRob3VnaCBtb3N0IGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlcyBhcmUgY29uY2VybmVkIHdpdGggdGhlIE1JQgpAQCAtNjksMTAgKzY5LDEwIEBACiBzdGFydGluZyB3aXRoICcjJyAoI1VJRCkuCiAuSVAgImxlYXZlX3BpZGZpbGUgeWVzIgogaW5zdHJ1Y3RzIHRoZSBhZ2VudCB0byBub3QgcmVtb3ZlIGl0cyBwaWQgZmlsZSBvbiBzaHV0ZG93bi4gRXF1aXZhbGVudCB0bwotc3BlY2lmeWluZyAiLVUiIG9uIHRoZSBjb21tYW5kIGxpbmUuCitzcGVjaWZ5aW5nICJcLVUiIG9uIHRoZSBjb21tYW5kIGxpbmUuCiAuSVAgIm1heEdldGJ1bGtSZXBlYXRzIE5VTSIKIFNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHJlc3BvbnNlcyBhbGxvd2VkIGZvciBhIHNpbmdsZSB2YXJpYWJsZSBpbgotYSBnZXRidWxrIHJlcXVlc3QuICBTZXQgdG8gMCB0byBlbmFibGUgdGhlIGRlZmF1bHQgYW5kIHNldCBpdCB0byAtMSB0bworYSBnZXRidWxrIHJlcXVlc3QuICBTZXQgdG8gMCB0byBlbmFibGUgdGhlIGRlZmF1bHQgYW5kIHNldCBpdCB0byBcLTEgdG8KIGVuYWJsZSB1bmxpbWl0ZWQuICBCZWNhdXNlIG1lbW9yeSBpcyBhbGxvY2F0ZWQgYWhlYWQgb2YgdGltZSwgc2l0dGluZwogdGhpcyB0byB1bmxpbWl0ZWQgaXMgbm90IGNvbnNpZGVyZWQgc2FmZSBpZiB5b3VyIHVzZXIgcG9wdWxhdGlvbiBjYW4KIG5vdCBiZSB0cnVzdGVkLiAgQSByZXBlYXQgbnVtYmVyIGdyZWF0ZXIgdGhhbiB0aGlzIHdpbGwgYmUgdHJ1bmNhdGVkCkBAIC04Miw3ICs4Miw3IEBACiAuSVAgIm1heEdldGJ1bGtSZXNwb25zZXMgTlVNIgogU2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgcmVzcG9uc2VzIGFsbG93ZWQgZm9yIGEgZ2V0YnVsayByZXF1ZXN0LgogVGhpcyBpcyBzZXQgYnkgZGVmYXVsdCB0byAxMDAuICBTZXQgdG8gMCB0byBlbmFibGUgdGhlIGRlZmF1bHQgYW5kIHNldAotaXQgdG8gLTEgdG8gZW5hYmxlIHVubGltaXRlZC4gIEJlY2F1c2UgbWVtb3J5IGlzIGFsbG9jYXRlZCBhaGVhZCBvZgoraXQgdG8gXC0xIHRvIGVuYWJsZSB1bmxpbWl0ZWQuICBCZWNhdXNlIG1lbW9yeSBpcyBhbGxvY2F0ZWQgYWhlYWQgb2YKIHRpbWUsIHNpdHRpbmcgdGhpcyB0byB1bmxpbWl0ZWQgaXMgbm90IGNvbnNpZGVyZWQgc2FmZSBpZiB5b3VyIHVzZXIKIHBvcHVsYXRpb24gY2FuIG5vdCBiZSB0cnVzdGVkLgogLklQCkBAIC0xMDUsOSArMTA1LDkgQEAKIGV4dGVuc2l2ZWx5IHRlc3RlZC4gIEl0IGFsc28gY29udGFpbnMgY29kZSBmb3Igc3VwcG9ydCBmb3IgYW4KIGV4cGVyaW1lbnRhbCBLZXJiZXJvcyBiYXNlZCBTTk1QdjMgdGhhdCBuZXZlciBnb3Qgc3RhbmRhcmRpemVkLgogLlBQCi1Ib3BlZnVsIG1vcmUgU05NUCBzb2Z0d2FyZSBhbmQgZGV2aWNlcyB3aWxsIGV2ZW50dWFsbHkgc3VwcG9ydCBTTk1QCitIb3BlZnVsbHkgbW9yZSBTTk1QIHNvZnR3YXJlIGFuZCBkZXZpY2VzIHdpbGwgZXZlbnR1YWxseSBzdXBwb3J0IFNOTVAKIG92ZXIgKEQpVExTIG9yIFNTSCwgYnV0IGl0IGlzIGxpa2VseSB0aGF0IGRldmljZXMgd2l0aCBvcmlnaW5hbAotc3VwcG9ydCBmb3IgU05NUCB3aWxsIG9ubHkgY29udGFpbiBzdXBwb3J0IGZvciBTTk1QIG92ZXIgVVNNLiAgSWYgeW91cgorc3VwcG9ydCBmb3IgU05NUCB3aWxsIG9ubHkgY29udGFpbiBzdXBwb3J0IGZvciBVU00gdXNlcnMuICBJZiB5b3VyCiBuZXR3b3JrIG1hbmFnZXIgc3VwcG9ydHMgU05NUCBvdmVyIChEKVRMUyBvciBTTk1QIG92ZXIgU1NIIHdlIHN1Z2dlc3QKIHlvdSB1c2Ugb25lIG9mIHRoZXNlIG1lY2hhbmlzbXMgaW5zdGVhZCBvZiB1c2luZyBVU00sIGJ1dCBhcyBhbHdheXMKIHdpdGggTmV0LVNOTVAgd2UgZ2l2ZSB5b3UgdGhlIG9wdGlvbnMgdG8gcGljayBmcm9tIHNvIHlvdSBjYW4gbWFrZSB0aGUKQEAgLTE1OCwyMCArMTU4LDE0IEBACiBhICdbc25tcF0nIHRhZy4gIElmIHlvdSBwbGFjZSB0aGVzZSB0b2tlbnMgaW4geW91ciBzbm1wZC5jb25mIGZpbGUsCiB0aGlzIHRha2UgaXMgcmVxdWlyZWQuICBTZWUgdGhlIHNubXBfY29uZmlnKDUpIG1hbnVhbCBwYWdlIGZvciB0aGUKIG1lYW5pbmcgb2YgdGhpcyBjb250ZXh0IHN3aXRjaC4KLS5JUCAiW3NubXBdIHNlcnZlckNlcnQgPHNwZWNpZmllcj4iCisuSVAgIltzbm1wXSBsb2NhbENlcnQgPHNwZWNpZmllcj4iCiBUaGlzIHRva2VuIGRlZmluZXMgdGhlIGRlZmF1bHQgWC41MDkgcHVibGljIGtleSB0byB1c2UgYXMgdGhlIHNlcnZlcidzCiBpZGVudGl0eS4gIEl0IHNob3VsZCBlaXRoZXIgYmUgYSBmaW5nZXJwcmludCBvciBhIGZpbGVuYW1lLiAgVG8gY3JlYXRlCi1hIHB1YmxpYyBrZXkgZm9yIHVzZSwgcGxlYXNlIHJ1biB0aGUgIm5ldC1zbm1wLWNlcnQiIHV0aWxpdHkgd2hpY2gKK2EgcHVibGljIGtleSBmb3IgdXNlLCBwbGVhc2UgcnVuIHRoZSAibmV0XC1zbm1wXC1jZXJ0IiB1dGlsaXR5IHdoaWNoCiB3aWxsIGhlbHAgeW91IGNyZWF0ZSB0aGUgcmVxdWlyZWQgY2VydGlmaWNhdGUuCiAuSVAKIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGlzIGlzIHRoZSBjZXJ0aWZpY2F0ZSBpbiB0aGUgInNubXBkIiBuYW1lZAogY2VydGlmaWNhdGUgZmlsZS4KLS5JUCAiW3NubXBdIGNsaWVudENlcnQgPHNwZWNpZmllcj4iCi1JZiBvdXRnb2luZyBUTFMgY29ubmVjdGlvbnMgYXJlIHRvIGJlIG9wZW5lZCwgZm9yIGV4YW1wbGUgYmVjYXVzZQotbm90aWZpY2F0aW9ucyBhcmUgdG8gYmUgc2VudCBvdmVyIFRMUywgdGhlbiB0aGlzIHdpbGwgc2VsZWN0IHRoZQotY2xpZW50LXNpZGUgcHVibGljIGtleSB0byB1c2UgZm9yIHRob3NlIG91dGdvaW5nIGNvbm5lY3Rpb25zLiAgSXQgY2FuCi1laXRoZXIgYmUgc3BlY2lmaWVkIGFzIGEgZmluZ2VycHJpbnQgb3IgYSBmaWxlbmFtZS4gIFNlZSB0aGUKLSJuZXQtc25tcC1jZXJ0IiB1dGlsaXR5IGZvciBjcmVhdGluZyBjZXJ0aWZpY2F0ZXMuCiAuSVAgIltzbm1wXSB0bHNBbGdvcml0aG1zIDxhbGdvcml0aG1zPiIKIFRoaXMgc3RyaW5nIHdpbGwgc2VsZWN0IHRoZSBhbGdvcml0aG1zIHRvIHVzZSB3aGVuIG5lZ290aWF0aW5nCiBzZWN1cml0eSBkdXJpbmcgKEQpVExTIHNlc3Npb24gZXN0YWJsaXNobWVudC4gIFNlZSB0aGUgb3BlbnNzbCBtYW51YWwKQEAgLTE4Miw3ICsxNzYsNyBAQAogREVGQVVMVAogQUxMCiBISUdICi1ISUdIOiFBRVMxMjgtU0hBCitISUdIOiFBRVMxMjhcLVNIQQogLmZpCiAuUkUKIC5JUApAQCAtMTk3LDIyICsxOTEsMjIgQEAKIGJlIG5vdGljZWQgdXBvbiBhIHJlc3RhcnQgb2YgdGhlIHNubXBkIGFnZW50LgogCiAuSVAgImNlcnRTZWNOYW1lIFBSSU9SSVRZIEZJTkdFUlBSSU5UIE9QVElPTlMiCi1PUFRJT05TIGNhbiBiZSBvbmUgb2YgPC0tc24gU0VDTkFNRSB8IC0tcmZjODIyIHwgLS1kbnMgfCAtLWlwIHwgLS1jbiB8IC0tYW55Pi4KK09QVElPTlMgY2FuIGJlIG9uZSBvZiA8XC1cLXNuIFNFQ05BTUUgfCBcLVwtcmZjODIyIHwgXC1cLWRucyB8IFwtXC1pcCB8IFwtXC1jbiB8IFwtXC1hbnk+LgogLklQCiBUaGUgY2VydFNlY05hbWUgdG9rZW4gd2lsbCBzcGVjaWZ5IGhvdyB0byBtYXAgYSBjZXJ0aWZpY2F0ZSBmaWVsZCBmcm9tCi10aGUgY2xpZW50J3MgWC41MDkgY2VydGlmaWNhdGUgdG8gYSBTTk1QdjMgdXNlcm5hbWUuICBVc2UgdGhlIC0tc24KK3RoZSBjbGllbnQncyBYLjUwOSBjZXJ0aWZpY2F0ZSB0byBhIFNOTVB2MyB1c2VybmFtZS4gIFVzZSB0aGUgXC1cLXNuCiBTRUNOQU1FIGZsYWcgdG8gZGlyZWN0bHkgc3BlY2lmeSBhIHNlY3VyaXR5TmFtZSBmb3IgYSBnaXZlbgogY2VydGlmaWNhdGUuICBUaGUgb3RoZXIgZmxhZ3MgZXh0cmFjdCBhIHBhcnRpY3VsYXIgY29tcG9uZW50IG9mIHRoZQogY2VydGlmaWNhdGUgZm9yIHVzZSBhcyBhIHNubXB2MyBzZWN1cml0eU5hbWUuICBUaGVzZSBmaWVsZHMgYXJlIG9uZQotb2Y6IEEgU3ViamVjdEFsdE5hbWUgY29udGFpbmluZyBhbiByZmM4MjIgdmFsdWUgKGVnIGhhcmRha2VyQG5ldC1zbm1wLm9yZyksCi1BIFN1YmplY3RBbHROYW1lIGNvbnRhaW5pbmcgYSBkbnMgbmFtZSB2YWx1ZSAoZWcgZm9vLm5ldC1zbm1wLm9yZyksCitvZjogQSBTdWJqZWN0QWx0TmFtZSBjb250YWluaW5nIGFuIHJmYzgyMiB2YWx1ZSAoZWcgaGFyZGFrZXJAbmV0XC1zbm1wLm9yZyksCitBIFN1YmplY3RBbHROYW1lIGNvbnRhaW5pbmcgYSBkbnMgbmFtZSB2YWx1ZSAoZWcgZm9vLm5ldFwtc25tcC5vcmcpLAogYW4gSVAgYWRkcmVzcyAoZWcgMTkyLjAuMi4xKSBvciBhIGNvbW1vbiBuYW1lICJXZXMgSGFyZGFrZXIiLiAgVGhlCi0tLWFueSBmbGFnIHNwZWNpZmllcyB0aGF0IGFueSBvZiB0aGUgc3ViamVjQWx0TmFtZSBmaWVsZHMgbWF5IGJlCitcLVwtYW55IGZsYWcgc3BlY2lmaWVzIHRoYXQgYW55IG9mIHRoZSBzdWJqZWNBbHROYW1lIGZpZWxkcyBtYXkgYmUKIHVzZWQuICBNYWtlIHN1cmUgb25jZSBhIHNlY3VyaXR5TmFtZSBoYXMgYmVlbiBzZWxlY3RlZCB0aGF0IGl0IGlzCiBnaXZlbiBhdXRob3JpemF0aW9uIHZpYSB0aGUgVkFDTSBjb250cm9scyBkaXNjdXNzZWQgbGF0ZXIgaW4gdGhpcwogbWFudWFsIHBhZ2UuCiAuSVAKLVNlZSB0aGUgaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvd2lraS9pbmRleC5waHAvVXNpbmdfRFRMUyB3ZWIgcGFnZSBmb3IKK1NlZSB0aGUgaHR0cDovL3d3dy5uZXRcLXNubXAub3JnL3dpa2kvaW5kZXgucGhwL1VzaW5nX0RUTFMgd2ViIHBhZ2UgZm9yCiBtb3JlIGRldGFpbGVkIGluc3RydWN0aW9ucyBmb3Igc2V0dGluZyB1cCAoRClUTFMuCiAuSVAgInRydXN0Q2VydCA8c3BlY2lmaWVyPiIKIEZvciBYNTA5IHRvIHByb3Blcmx5IHZlcmlmeSBhIGNlcnRpZmljYXRlLCBpdCBzaG91bGQgYmUgdmVyaWZpYWJsZSB1cApAQCAtMjI3LDcgKzIyMSw3IEBACiBjb25uZWN0aW9ucyBmcm9tIChEKVRMUyB0aGF0IHlvdSB1c2UgdGhlICJ0c20iIHNlY3VyaXR5IG1vZGVsLiAgRS5HLjoKIC5maQogCi1yd3VzZXIgLXMgdHNtIGhhcmRha2VyQG5ldC1zbm1wLm9yZworcnd1c2VyIFwtcyB0c20gaGFyZGFrZXJAbmV0XC1zbm1wLm9yZwogLmZpCiAuU1MgU05NUHYzIG92ZXIgU1NIIFN1cHBvcnQKIFRvIHVzZSBTU0gsIHlvdSdsbCBuZWVkIHRvIGNvbmZpZ3VyZSBzc2hkIHRvIGludm9rZSB0aGUgc3NodG9zbm1wCkBAIC0yNjUsMTAgKzI1OSwxMCBAQAogLlNTIFNOTVB2MyBVU00gVXNlcnMKIFRvIHVzZSB0aGUgVVNNIGJhc2VkIFNOTVB2My1zcGVjaWZpYyB1c2VycywgeW91J2xsIG5lZWQgdG8gY3JlYXRlCiB0aGVtLiAgSXQgaXMgcmVjb21tZW5kZWQgeW91Ci0uQiAidXNlIHRoZSBuZXQtc25tcC1jb25maWcgY29tbWFuZCIKKy5CICJ1c2UgdGhlIG5ldFwtc25tcFwtY29uZmlnIGNvbW1hbmQiCiB0byBkbyB0aGlzLCBidXQgeW91IGNhbiBhbHNvIGRvIGl0IGJ5IGRpcmVjdGx5IHNwZWNpZnlpbmcgY3JlYXRlVXNlcgogZGlyZWN0aXZlcyB5b3Vyc2VsZiBpbnN0ZWFkOgotLklQICJjcmVhdGVVc2VyIFstZSBFTkdJTkVJRF0gdXNlcm5hbWUgKE1ENXxTSEEpIGF1dGhwYXNzcGhyYXNlIFtERVN8QUVTXSBbcHJpdnBhc3NwaHJhc2VdIgorLklQICJjcmVhdGVVc2VyIFtcLWUgRU5HSU5FSURdIHVzZXJuYW1lIChNRDV8U0hBKSBhdXRocGFzc3BocmFzZSBbREVTfEFFU10gW3ByaXZwYXNzcGhyYXNlXSIKIC5JUAogTUQ1IGFuZCBTSEEgYXJlIHRoZSBhdXRoZW50aWNhdGlvbiB0eXBlcyB0byB1c2UuICBERVMgYW5kIEFFUyBhcmUgdGhlCiBwcml2YWN5IHByb3RvY29scyB0byB1c2UuICBJZiB0aGUgcHJpdmFjeQpAQCAtMjg4LDcgKzI4Miw3IEBACiBjb21tYW5kLgogLklQCiBJbnN0ZWFkIG9mIGZpZ3VyaW5nIG91dCBob3cgdG8gdXNlIHRoaXMgZGlyZWN0aXZlIGFuZCB3aGVyZSB0byBwdXQgaXQKLShzZWUgYmVsb3cpLCBqdXN0IHJ1biAibmV0LXNubXAtY29uZmlnIC0tY3JlYXRlLXNubXB2My11c2VyIiBpbnN0ZWFkLAorKHNlZSBiZWxvdyksIGp1c3QgcnVuICJuZXRcLXNubXBcLWNvbmZpZyBcLVwtY3JlYXRlXC1zbm1wdjNcLXVzZXIiIGluc3RlYWQsCiB3aGljaCB3aWxsIGFkZCBvbmUgb2YgdGhlc2UgbGluZXMgdG8gdGhlIHJpZ2h0IHBsYWNlLgogLklQCiBUaGlzIGRpcmVjdGl2ZSBzaG91bGQgYmUgcGxhY2VkIGludG8gdGhlCkBAIC0zMDEsMTIgKzI5NSwxMiBAQAogaXQgY2FuIGJlLgogLklQCiBJZiB5b3UgbmVlZCB0byBsb2NhbGl6ZSB0aGUgdXNlciB0byBhIHBhcnRpY3VsYXIgRW5naW5lSUQgKHRoaXMgaXMKLXVzZWZ1bCBtb3N0bHkgaW4gdGhlIHNpbWlsYXIgc25tcHRyYXBkLmNvbmYgZmlsZSksIHlvdSBjYW4gdXNlIHRoZSAtZQordXNlZnVsIG1vc3RseSBpbiB0aGUgc2ltaWxhciBzbm1wdHJhcGQuY29uZiBmaWxlKSwgeW91IGNhbiB1c2UgdGhlIFwtZQogYXJndW1lbnQgdG8gc3BlY2lmeSBhbiBFbmdpbmVJRCBhcyBhIGhleCB2YWx1ZSAoRUcsICIweDAxMDIwMzA0IikuCiAuSVAKIElmIHlvdSB3YW50IHRvIGdlbmVyYXRlIGVpdGhlciB5b3VyIG1hc3RlciBvciBsb2NhbGl6ZWQga2V5cyBkaXJlY3RseSwKLXJlcGxhY2UgdGhlIGdpdmVuIHBhc3N3b3JkIHdpdGggYSBoZXhzdHJpbmcgKHByZWNlZWRlZCBieSBhICIweCIpIGFuZAotcHJlY2VkZSB0aGUgaGV4IHN0cmluZyBieSBhIC1tIG9yIC1sIHRva2VuIChyZXNwZWN0aXZlbHkpLiAgRUdzOgorcmVwbGFjZSB0aGUgZ2l2ZW4gcGFzc3dvcmQgd2l0aCBhIGhleHN0cmluZyAocHJlY2VkZWQgYnkgYSAiMHgiKSBhbmQKK3ByZWNlZGUgdGhlIGhleCBzdHJpbmcgYnkgYSBcLW0gb3IgXC1sIHRva2VuIChyZXNwZWN0aXZlbHkpLiAgRUdzOgogLklQCiAuUlMKIC5uZgpAQCAtMzE0LDggKzMwOCw4IEBACiBjb3VudGluZyBwdXJwb3Nlcy4gIFBsZWFzZSBnZW5lcmF0ZSByYW5kb20ga2V5cyBpbnN0ZWFkIG9mIHVzaW5nCiB0aGVzZSBleGFtcGxlc10KIAotY3JlYXRlVXNlciBteXVzZXIgU0hBIC1sIDB4MDAwMTAyMDMwNDA1MDYwNzA4MDkwMDAxMDIwMzA0MDUwNjA3MDgwOSBBRVMgLWwgMHgwMDAxMDIwMzA0MDUwNjA3MDgwOTAwMDEwMjAzMDQwNQotY3JlYXRlVXNlciBteXVzZXIgU0hBIC1tIDB4MDAwMTAyMDMwNDA1MDYwNzA4MDkwMDAxMDIwMzA0MDUwNjA3MDgwOSBBRVMgLW0gMHgwMDAxMDIwMzA0MDUwNjA3MDgwOTAwMDEwMjAzMDQwNTA2MDcwODA5CitjcmVhdGVVc2VyIG15dXNlciBTSEEgXC1sIDB4MDAwMTAyMDMwNDA1MDYwNzA4MDkwMDAxMDIwMzA0MDUwNjA3MDgwOSBBRVMgXC1sIDB4MDAwMTAyMDMwNDA1MDYwNzA4MDkwMDAxMDIwMzA0MDUKK2NyZWF0ZVVzZXIgbXl1c2VyIFNIQSBcLW0gMHgwMDAxMDIwMzA0MDUwNjA3MDgwOTAwMDEwMjAzMDQwNTA2MDcwODA5IEFFUyBcLW0gMHgwMDAxMDIwMzA0MDUwNjA3MDgwOTAwMDEwMjAzMDQwNTA2MDcwODA5CiAuZmkKIC5SRQogLklQCkBAIC0zMzMsOCArMzI3LDggQEAKIE1vc3Qgc2ltcGxlIGFjY2VzcyBjb250cm9sIHJlcXVpcmVtZW50cyBjYW4gYmUgc3BlY2lmaWVkIHVzaW5nIHRoZQogZGlyZWN0aXZlcyBcZklyb3VzZXJcZlIvXGZJcnd1c2VyXGZSIChmb3IgU05NUHYzKSBvcgogXGZJcm9jb21tdW5pdHlcZlIvXGZJcndjb21tdW5pdHlcZlIgKGZvciBTTk1QdjEgb3IgU05NUHYyYykuCi0uSVAgInJvdXNlciBbLXMgU0VDTU9ERUxdIFVTRVIgW25vYXV0aHxhdXRofHByaXYgW09JRCB8IC1WIFZJRVcgW0NPTlRFWFRdXV0iCi0uSVAgInJ3dXNlciBbLXMgU0VDTU9ERUxdICBVU0VSIFtub2F1dGh8YXV0aHxwcml2IFtPSUQgfCAtViBWSUVXIFtDT05URVhUXV1dIgorLklQICJyb3VzZXIgW1wtcyBTRUNNT0RFTF0gVVNFUiBbbm9hdXRofGF1dGh8cHJpdiBbT0lEIHwgXC1WIFZJRVcgW0NPTlRFWFRdXV0iCisuSVAgInJ3dXNlciBbXC1zIFNFQ01PREVMXSAgVVNFUiBbbm9hdXRofGF1dGh8cHJpdiBbT0lEIHwgXC1WIFZJRVcgW0NPTlRFWFRdXV0iCiBzcGVjaWZ5IGFuIFNOTVB2MyB1c2VyIHRoYXQgd2lsbCBiZSBhbGxvd2VkIHJlYWQtb25seSAoR0VUIGFuZCBHRVRORVhUKQogb3IgcmVhZC13cml0ZSAoR0VULCBHRVRORVhUIGFuZCBTRVQpIGFjY2VzcyByZXNwZWN0aXZlbHkuCiBCeSBkZWZhdWx0LCB0aGlzIHdpbGwgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlIGZ1bGwgT0lEIHRyZWUgZm9yIGF1dGhlbnRpY2F0ZWQKQEAgLTM1Myw4ICszNDcsOCBAQAogYWNjZXNzIGNvbnRyb2wgc2V0dGluZ3MpLiAgVGhlIGRlZmF1bHQgc2VjdXJpdHkgbW9kZWwgaXMgInVzbSIgYW5kIHRoZQogb3RoZXIgY29tbW9uIHNlY3VyaXR5IG1vZGVscyBhcmUgbGlrZWx5ICJ0c20iIHdoZW4gdXNpbmcgKEQpVExTIG9yIFNTSAogc3VwcG9ydCBhbmQgImtzbSIgaWYgdGhlIEtlcmJlcm9zIHN1cHBvcnQgaGFzIGJlZW4gY29tcGlsZWQgaW4uCi0uSVAgInJvY29tbXVuaXR5IENPTU1VTklUWSBbU09VUkNFIFtPSUQgfCAtViBWSUVXIFtDT05URVhUXV1dIgotLklQICJyd2NvbW11bml0eSBDT01NVU5JVFkgW1NPVVJDRSBbT0lEIHwgLVYgVklFVyBbQ09OVEVYVF1dXSIKKy5JUCAicm9jb21tdW5pdHkgQ09NTVVOSVRZIFtTT1VSQ0UgW09JRCB8IFwtViBWSUVXIFtDT05URVhUXV1dIgorLklQICJyd2NvbW11bml0eSBDT01NVU5JVFkgW1NPVVJDRSBbT0lEIHwgXC1WIFZJRVcgW0NPTlRFWFRdXV0iCiBzcGVjaWZ5IGFuIFNOTVB2MSBvciBTTk1QdjJjIGNvbW11bml0eSB0aGF0IHdpbGwgYmUgYWxsb3dlZCByZWFkLW9ubHkKIChHRVQgYW5kIEdFVE5FWFQpIG9yIHJlYWQtd3JpdGUgKEdFVCwgR0VUTkVYVCBhbmQgU0VUKSBhY2Nlc3MgcmVzcGVjdGl2ZWx5LgogQnkgZGVmYXVsdCwgdGhpcyB3aWxsIHByb3ZpZGUgYWNjZXNzIHRvIHRoZSBmdWxsIE9JRCB0cmVlIGZvciBzdWNoIHJlcXVlc3RzLApAQCAtMzY0LDggKzM1OCw4IEBACiB0aGF0IGNvbW11bml0eSB0byB0aGUgc3VidHJlZSByb290ZWQgYXQgdGhlIGdpdmVuIE9JRCwgb3IgbmFtZWQgdmlldy4KIENvbnRleHRzIGFyZSB0eXBpY2FsbHkgbGVzcyByZWxldmFudCB0byBjb21tdW5pdHktYmFzZWQgU05NUCB2ZXJzaW9ucywKIGJ1dCB0aGUgc2FtZSBiZWhhdmlvdXIgYXBwbGllcyBoZXJlLgotLklQICJyb2NvbW11bml0eTYgQ09NTVVOSVRZIFtTT1VSQ0UgW09JRCB8IC1WIFZJRVcgW0NPTlRFWFRdXV0iCi0uSVAgInJ3Y29tbXVuaXR5NiBDT01NVU5JVFkgW1NPVVJDRSBbT0lEIHwgLVYgVklFVyBbQ09OVEVYVF1dXSIKKy5JUCAicm9jb21tdW5pdHk2IENPTU1VTklUWSBbU09VUkNFIFtPSUQgfCBcLVYgVklFVyBbQ09OVEVYVF1dXSIKKy5JUCAicndjb21tdW5pdHk2IENPTU1VTklUWSBbU09VUkNFIFtPSUQgfCBcLVYgVklFVyBbQ09OVEVYVF1dXSIKIGFyZSBkaXJlY3RpdmVzIHJlbGF0aW5nIHRvIHJlcXVlc3RzIHJlY2VpdmVkIHVzaW5nIElQdjYKIChpZiB0aGUgYWdlbnQgc3VwcG9ydHMgc3VjaCB0cmFuc3BvcnQgZG9tYWlucykuCiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIFNPVVJDRSwgT0lELCBWSUVXIGFuZCBDT05URVhUIHRva2VucyBhcmUgZXhhY3RseQpAQCAtMzg3LDEwICszODEsMTAgQEAKIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlcy4KIC5TUyBWQUNNIENvbmZpZ3VyYXRpb24KIFRoZSBmdWxsIGZsZXhpYmlsaXR5IG9mIHRoZSBWQUNNIGlzIGF2YWlsYWJsZSB1c2luZyBmb3VyIGNvbmZpZ3VyYXRpb24KLWRpcmVjdGl2ZXMgLSBcZkljb20yc2VjXGZSLCBcZklncm91cFxmUiwgXGZJdmlld1xmUiBhbmQgXGZJYWNjZXNzXGZSLgorZGlyZWN0aXZlcyBcLSBcZkljb20yc2VjXGZSLCBcZklncm91cFxmUiwgXGZJdmlld1xmUiBhbmQgXGZJYWNjZXNzXGZSLgogVGhlc2UgcHJvdmlkZSBkaXJlY3QgY29uZmlndXJhdGlvbiBvZiB0aGUgdW5kZXJseWluZyBWQUNNIHRhYmxlcy4KLS5JUCAiY29tMnNlYyAgWy1DbiBDT05URVhUXSBTRUNOQU1FIFNPVVJDRSBDT01NVU5JVFkiCi0uSVAgImNvbTJzZWM2IFstQ24gQ09OVEVYVF0gU0VDTkFNRSBTT1VSQ0UgQ09NTVVOSVRZIgorLklQICJjb20yc2VjICBbXC1DbiBDT05URVhUXSBTRUNOQU1FIFNPVVJDRSBDT01NVU5JVFkiCisuSVAgImNvbTJzZWM2IFtcLUNuIENPTlRFWFRdIFNFQ05BTUUgU09VUkNFIENPTU1VTklUWSIKIG1hcCBhbiBTTk1QdjEgb3IgU05NUHYyYyBjb21tdW5pdHkgc3RyaW5nIHRvIGEgc2VjdXJpdHkgbmFtZSAtIGVpdGhlciBmcm9tCiBhIHBhcnRpY3VsYXIgcmFuZ2Ugb2Ygc291cmNlIGFkZHJlc3Nlcywgb3IgZ2xvYmFsbHkgKFxmSSJkZWZhdWx0IlxmUikuCiBBIHJlc3RyaWN0ZWQgc291cmNlIGNhbiBlaXRoZXIgYmUgYSBzcGVjaWZpYyBob3N0bmFtZSAob3IgYWRkcmVzcyksIG9yCkBAIC00MDIsMTAgKzM5NiwxMCBAQAogY29tYmluYXRpb24gdGhhdCBtYXRjaGVzIHRoZSBpbmNvbWluZyByZXF1ZXN0IHdpbGwgYmUgc2VsZWN0ZWQuCiBWYXJpb3VzIHNvdXJjZS9jb21tdW5pdHkgY29tYmluYXRpb25zIGNhbiBhbHNvIG1hcCB0byB0aGUgc2FtZSBzZWN1cml0eSBuYW1lLgogLklQCi1JZiBhIENPTlRFWFQgaXMgc3BlY2lmaWVkICh1c2luZyBcZkktQ25cZlIpLCB0aGUgY29tbXVuaXR5IHN0cmluZyB3aWxsIGJlCitJZiBhIENPTlRFWFQgaXMgc3BlY2lmaWVkICh1c2luZyBcZklcLUNuXGZSKSwgdGhlIGNvbW11bml0eSBzdHJpbmcgd2lsbCBiZQogbWFwcGVkIHRvIGEgc2VjdXJpdHkgbmFtZSBpbiB0aGUgbmFtZWQgU05NUHYzIGNvbnRleHQuIE90aGVyd2lzZSB0aGUKIGRlZmF1bHQgY29udGV4dCAoIiIpIHdpbGwgYmUgdXNlZC4KLS5JUCAiY29tMnNlY3VuaXggWy1DbiBDT05URVhUXSBTRUNOQU1FIFNPQ0tQQVRIIENPTU1VTklUWSIKKy5JUCAiY29tMnNlY3VuaXggW1wtQ24gQ09OVEVYVF0gU0VDTkFNRSBTT0NLUEFUSCBDT01NVU5JVFkiCiBpcyB0aGUgVW5peCBkb21haW4gc29ja2V0cyB2ZXJzaW9uIG9mIFxmSWNvbTJzZWNcZlIuCiAuSVAgImdyb3VwIEdST1VQIHt2MXx2MmN8dXNtfHRzbXxrc219IFNFQ05BTUUiCiBtYXBzIGEgc2VjdXJpdHkgbmFtZSAoaW4gdGhlIHNwZWNpZmllZCBzZWN1cml0eSBtb2RlbCkgaW50bwpAQCAtNDcxLDcgKzQ2NSw3IEBACiBjb25jZXJuZWQsIHRoZSB0d28gbWFpbiB2aWV3IHR5cGVzIGFyZSBcZklyZWFkXGZSIGFuZCBcZkl3cml0ZVxmUiwKIGNvcnJlc3BvbmRpbmcgdG8gdGhlIFJFQUQgYW5kIFdSSVRFIHZpZXdzIG9mIHRoZSBtYWluIFxmSWFjY2Vzc1xmUiBkaXJlY3RpdmUuCiBTZWUgdGhlICdzbm1wdHJhcGQuY29uZig1KScgbWFuIHBhZ2UgZm9yIGRpc2N1c3Npb24gb2Ygb3RoZXIgdmlldyB0eXBlcy4KLS5JUCAiYXV0aGNvbW11bml0eSBUWVBFUyAgQ09NTVVOSVRZICAgW1NPVVJDRSBbT0lEIHwgLVYgVklFVyBbQ09OVEVYVF1dXSIKKy5JUCAiYXV0aGNvbW11bml0eSBUWVBFUyAgQ09NTVVOSVRZICAgW1NPVVJDRSBbT0lEIHwgXC1WIFZJRVcgW0NPTlRFWFRdXV0iCiBpcyBhbiBhbHRlcm5hdGl2ZSB0byB0aGUgXGZJcm9jb21tdW5pdHlcZlIvXGZJcndjb21tdW5pdHlcZlIgZGlyZWN0aXZlcy4KIFRZUEVTIHdpbGwgdXN1YWxseSBiZSBcZklyZWFkXGZSIG9yIFxmSXJlYWQsd3JpdGVcZlIgcmVzcGVjdGl2ZWx5LgogVGhlIHZpZXcgc3BlY2lmaWNhdGlvbiBjYW4gZWl0aGVyIGJlIGFuIE9JRCBzdWJ0cmVlIChhcyBiZWZvcmUpLApAQCAtNDgwLDIwICs0NzQsMjAgQEAKIHRoZW4gYWNjZXNzIHdpbGwgYmUgYWxsb3dlZCB0byB0aGUgZnVsbCBPSUQgdHJlZS4KIElmIENPTlRFWFQgaXMgc3BlY2lmaWVkLCBhY2Nlc3MgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhpcyBTTk1QdjMgY29udGV4dC4KIE90aGVyd2lzZSB0aGUgZGVmYXVsdCBjb250ZXh0ICgiIikgaXMgdXNlZC4KLS5JUCAiYXV0aHVzZXIgICBUWVBFUyBbLXMgTU9ERUxdIFVTRVIgIFtMRVZFTCBbT0lEIHwgLVYgVklFVyBbQ09OVEVYVF1dXSIKKy5JUCAiYXV0aHVzZXIgICBUWVBFUyBbXC1zIE1PREVMXSBVU0VSICBbTEVWRUwgW09JRCB8IFwtViBWSUVXIFtDT05URVhUXV1dIgogaXMgYW4gYWx0ZXJuYXRpdmUgdG8gdGhlIFxmSXJvdXNlclxmUi9cZklyd3VzZXJcZlIgZGlyZWN0aXZlcy4KIFRoZSBmaWVsZHMgVFlQRVMsIE9JRCwgVklFVyBhbmQgQ09OVEVYVCBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yCiBcZklhdXRoY29tbXVuaXR5XGZSLgotLklQICJhdXRoZ3JvdXAgIFRZUEVTIFstcyBNT0RFTF0gR1JPVVAgW0xFVkVMIFtPSUQgfCAtViBWSUVXIFtDT05URVhUXV1dIgorLklQICJhdXRoZ3JvdXAgIFRZUEVTIFtcLXMgTU9ERUxdIEdST1VQIFtMRVZFTCBbT0lEIHwgXC1WIFZJRVcgW0NPTlRFWFRdXV0iCiBpcyBhIGNvbXBhbmlvbiB0byB0aGUgXGZJYXV0aHVzZXJcZlIgZGlyZWN0aXZlLCBzcGVjaWZ5aW5nIGFjY2VzcwogZm9yIGEgcGFydGljdWxhciBncm91cCAoZGVmaW5lZCB1c2luZyB0aGUgXGZJZ3JvdXBcZlIgZGlyZWN0aXZlIGFzIHVzdWFsKS4KIEJvdGggXGZJYXV0aHVzZXJcZlIgYW5kIFxmSWF1dGhncm91cFxmUiBkZWZhdWx0IHRvIGF1dGhlbnRpY2F0ZWQgcmVxdWVzdHMgLQogTEVWRUwgY2FuIGFsc28gYmUgc3BlY2lmaWVkIGFzIFxmSW5vYXV0aFxmUiBvciBcZklwcml2XGZSIHRvIGFsbG93CiB1bmF1dGhlbnRpY2F0ZWQgcmVxdWVzdHMsIG9yIHJlcXVpcmUgZW5jcnlwdGlvbiByZXNwZWN0aXZlbHkuCiBCb3RoIFxmSWF1dGh1c2VyXGZSIGFuZCBcZklhdXRoZ3JvdXBcZlIgZGlyZWN0aXZlcyBhbHNvIGRlZmF1bHQgdG8gY29uZmlndXJpbmcKLWFjY2VzcyBmb3IgU05NUHYzL1VTTSByZXF1ZXN0cyAtIHVzZSB0aGUgJy1zJyBmbGFnIHRvIHNwZWNpZnkgYW4gYWx0ZXJuYXRpdmUKK2FjY2VzcyBmb3IgU05NUHYzL1VTTSByZXF1ZXN0cyAtIHVzZSB0aGUgJ1wtcycgZmxhZyB0byBzcGVjaWZ5IGFuIGFsdGVybmF0aXZlCiBzZWN1cml0eSBtb2RlbCAodXNpbmcgdGhlIHNhbWUgdmFsdWVzIGFzIGZvciBcZklhY2Nlc3NcZlIgYWJvdmUpLgotLklQICJhdXRoYWNjZXNzIFRZUEVTIFstcyBNT0RFTF0gR1JPVVAgVklFVyBbTEVWRUwgW0NPTlRFWFRdXSIKKy5JUCAiYXV0aGFjY2VzcyBUWVBFUyBbXC1zIE1PREVMXSBHUk9VUCBWSUVXIFtMRVZFTCBbQ09OVEVYVF1dIgogYWxzbyBjb25maWd1cmVzIHRoZSBhY2Nlc3MgZm9yIGEgcGFydGljdWxhciBncm91cCwKIHNwZWNpZnlpbmcgdGhlIG5hbWUgYW5kIHR5cGUgb2YgdmlldyB0byBhcHBseS4gVGhlIE1PREVMIGFuZCBMRVZFTCBmaWVsZHMKIGFyZSBpbnRlcnByZXRlZCBpbiB0aGUgc2FtZSB3YXkgYXMgZm9yIFxmSWF1dGhncm91cFxmUi4KQEAgLTUxOSw3ICs1MTMsNyBAQAogLklQICJzeXNOYW1lIFNUUklORyIKIHNldCB0aGUgc3lzdGVtIGxvY2F0aW9uLCBzeXN0ZW0gY29udGFjdCBvciBzeXN0ZW0gbmFtZQogKFxmQ3N5c0xvY2F0aW9uLjBcZlIsIFxmQ3N5c0NvbnRhY3QuMFxmUiBhbmQgXGZDc3lzTmFtZS4wXGZSKSBmb3IgdGhlIGFnZW50IHJlc3BlY3RpdmVseS4KLU9yZGluYXJpbHkgdGhlc2Ugb2JqZWN0cyBhcmUgd3JpdGVhYmxlIHZpYSBzdWl0YWJseSBhdXRob3JpemVkIFNOTVAgU0VUCitPcmRpbmFyaWx5IHRoZXNlIG9iamVjdHMgYXJlIHdyaXRhYmxlIHZpYSBzdWl0YWJseSBhdXRob3JpemVkIFNOTVAgU0VUCiByZXF1ZXN0cy4gIEhvd2V2ZXIsIHNwZWNpZnlpbmcgb25lIG9mIHRoZXNlIGRpcmVjdGl2ZXMgbWFrZXMgdGhlCiBjb3JyZXNwb25kaW5nIG9iamVjdCByZWFkLW9ubHksIGFuZCBhdHRlbXB0cyB0byBTRVQgaXQgd2lsbCByZXN1bHQgaW4KIGEgXGZJbm90V3JpdGFibGVcZlIgZXJyb3IgcmVzcG9uc2UuCkBAIC01MzcsNyArNTMxLDcgQEAKIC5JUCAiaW50ZXJmYWNlIE5BTUUgVFlQRSBTUEVFRCIKIGNhbiBiZSB1c2VkIHRvIHByb3ZpZGUgYXBwcm9wcmlhdGUgdHlwZSBhbmQgc3BlZWQgc2V0dGluZ3MgZm9yCiBpbnRlcmZhY2VzIHdoZXJlIHRoZSBhZ2VudCBmYWlscyB0byBkZXRlcm1pbmUgdGhpcyBpbmZvcm1hdGlvbiBjb3JyZWN0bHkuCi1UWVBFIGlzIGEgdHlwZSB2YWx1ZSBhcyBnaXZlbiBpbiB0aGUgSUFOQWlmVHlwZS1NSUIsCitUWVBFIGlzIGEgdHlwZSB2YWx1ZSBhcyBnaXZlbiBpbiB0aGUgSUFOQWlmVHlwZVwtTUlCLAogYW5kIGNhbiBiZSBzcGVjaWZpZWQgbnVtZXJpY2FsbHkgb3IgYnkgbmFtZSAoYXNzdW1pbmcgdGhpcyBNSUIgaXMgbG9hZGVkKS4KIC5JUCAiaW50ZXJmYWNlX2ZhZGVvdXQgVElNRU9VVCIKIHNwZWNpZmllcywgZm9yIGhvdyBsb25nIHRoZSBhZ2VudCBrZWVwcyBlbnRyaWVzIGluIFxmQ2lmVGFibGVcZlIgYWZ0ZXIKQEAgLTU5MCwxMyArNTg0LDMyIEBACiBhcyAnRml4ZWQgRGlza3MnLCBhbmQgdGhpcyBpcyBzdGlsbCB0aGUgZGVmYXVsdCBiZWhhdmlvdXIuCiBTZXR0aW5nIHRoaXMgZGlyZWN0aXZlIHRvICcxJyByZXBvcnRzIHN1Y2ggZmlsZSBzeXN0ZW1zIGFzCiBcJ05ldHdvcmsgRGlza3MnLCBhcyByZXF1aXJlZCBieSB0aGUgSG9zdCBSZXNvdXJjZXMgTUlCLgorLklQICJyZWFsU3RvcmFnZVVuaXRzIgorY29udHJvbGxzIGhvdyB0aGUgYWdlbnQgcmVwb3J0cyBoclN0b3JhZ2VBbGxvY2F0aW9uVW5pdHMsIGhyU3RvcmFnZVNpemUgYW5kCitoclN0b3JhZ2VVc2VkIGluIGhyU3RvcmFnZVRhYmxlLgorRm9yIGJpZyBzdG9yYWdlIGRyaXZlcyB3aXRoIHNtYWxsIGFsbG9jYXRpb24gdW5pdHMgdGhlIGFnZW50IHJlLWNhbGN1bGF0ZXMKK3RoZXNlIHZhbHVlcyBzbyB0aGV5IGFsbCBmaXQgSW50ZWdlcjMyIGFuZAoraHJTdG9yYWdlQWxsb2NhdGlvblVuaXRzIHggaHJTdG9yYWdlU2l6ZQorZ2l2ZXMgcmVhbCBzaXplIG9mIHRoZSBzdG9yYWdlLgorLlJTCisuSVAgIkV4YW1wbGU6IgorTGludXggeGZzIDE2VEIgZmlsZXN5c3RlbSB3aXRoIDQwOTYgYnl0ZXMgbGFyZ2UgYmxvY2tzIHdpbGwgYmUKK3JlcG9ydGVkIGFzICBoclN0b3JhZ2VBbGxvY2F0aW9uVW5pdHMgPSA4MTkyIGFuZCBoclN0b3JhZ2VTaXplID0gMjE0NzQ4MzY0NywKK3NvIDgxOTIgeCAyMTQ3NDgzNjQ3IGdpdmVzIHJlYWwgc2l6ZSBvZiB0aGUgZmlsZXN5c3RlbSAoPTE2IFRCKS4KKy5SRQorLklQCitTZXR0aW5nIHRoaXMgZGlyZWN0aXZlIHRvICcxJyB0dXJucyBvZmYKK3RoaXMgY2FsY3VsYXRpb24gYW5kIHRoZSBhZ2VudCByZXBvcnRzIHJlYWwgaHJTdG9yYWdlQWxsb2NhdGlvblVuaXRzLCBidXQgaXQKK21pZ2h0IHJlcG9ydCB3cm9uZyBoclN0b3JhZ2VTaXplIGZvciBiaWcgZHJpdmVzIGJlY2F1c2UgdGhlIHZhbHVlIHdvbid0IGZpdCBpbnRvCitJbnRlZ2VyMzIuIEluIHRoaXMgY2FzZSwgaHJTdG9yYWdlQWxsb2NhdGlvblVuaXRzIHggaHJTdG9yYWdlU2l6ZSB3b24ndCBnaXZlCityZWFsIHNpemUgb2YgdGhlIHN0b3JhZ2UuCiAuU1MgUHJvY2VzcyBNb25pdG9yaW5nIAogVGhlIFxmQ2hyU1dSdW5cZlIgZ3JvdXAgb2YgdGhlIEhvc3QgUmVzb3VyY2VzIE1JQiBwcm92aWRlcwogaW5mb3JtYXRpb24gYWJvdXQgaW5kaXZpZHVhbCBwcm9jZXNzZXMgcnVubmluZyBvbiB0aGUgbG9jYWwgc3lzdGVtLgotVGhlIFxmQ3ByVGFibGVcZlIgb2YgdGhlIFVDRC1TTk1QLU1JQiBjb21wbGVtZW50cyB0aGlzIGJ5IHJlcG9ydGluZworVGhlIFxmQ3ByVGFibGVcZlIgb2YgdGhlIFVDRFwtU05NUFwtTUlCIGNvbXBsZW1lbnRzIHRoaXMgYnkgcmVwb3J0aW5nCiBvbiBzZWxlY3RlZCBzZXJ2aWNlcyAod2hpY2ggbWF5IGludm9sdmUgbXVsdGlwbGUgcHJvY2Vzc2VzKS4KIFRoaXMgcmVxdWlyZXMgdGhhdCB0aGUgYWdlbnQgd2FzIGJ1aWx0IHdpdGggc3VwcG9ydCBmb3IgdGhlCi1cZkl1Y2Qtc25tcC9wcm9jXGZSIG1vZHVsZSAod2hpY2ggaXMgaW5jbHVkZWQgYXMgcGFydCBvZiB0aGUKK1xmSXVjZFwtc25tcC9wcm9jXGZSIG1vZHVsZSAod2hpY2ggaXMgaW5jbHVkZWQgYXMgcGFydCBvZiB0aGUKIGRlZmF1bHQgYnVpbGQgY29uZmlndXJhdGlvbikuCiAuSVAgInByb2MgTkFNRSBbTUFYIFtNSU5dXSIKIG1vbml0b3JzIHRoZSBudW1iZXIgb2YgcHJvY2Vzc2VzIGNhbGxlZCBOQU1FIChhcyByZXBvcnRlZCBieSBQU0NNRCkKQEAgLTYzNSw3ICs2NDgsNyBAQAogXGZDcHJUYWJsZVxmUiB3aWxsIGZhaWwgKFxmSW5vU3VjaE9iamVjdFxmSSkuCiAuU1MgRGlzayBVc2FnZSBNb25pdG9yaW5nCiBUaGlzIHJlcXVpcmVzIHRoYXQgdGhlIGFnZW50IHdhcyBidWlsdCB3aXRoIHN1cHBvcnQgZm9yIHRoZQotXGZJdWNkLXNubXAvZGlza1xmUiBtb2R1bGUgKHdoaWNoIGlzIGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlCitcZkl1Y2RcLXNubXAvZGlza1xmUiBtb2R1bGUgKHdoaWNoIGlzIGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlCiBkZWZhdWx0IGJ1aWxkIGNvbmZpZ3VyYXRpb24pLgogLklQICJkaXNrIFBBVEggWyBNSU5TUEFDRSB8IE1JTlBFUkNFTlQlIF0iCiBtb25pdG9ycyB0aGUgZGlzayBtb3VudGVkIGF0IFBBVEggZm9yIGF2YWlsYWJsZSBkaXNrIHNwYWNlLgpAQCAtNjgxLDcgKzY5NCw3IEBACiB0aGVuIHdhbGtpbmcgdGhlIFxmQ2Rza1RhYmxlXGZSIHdpbGwgZmFpbCAoXGZJbm9TdWNoT2JqZWN0XGZJKS4KIC5TUyBEaXNrIEkvTyBNb25pdG9yaW5nCiBUaGlzIHJlcXVpcmVzIHRoYXQgdGhlIGFnZW50IHdhcyBidWlsdCB3aXRoIHN1cHBvcnQgZm9yIHRoZQotXGZJdWNkLXNubXAvZGlza2lvXGZSIG1vZHVsZSAod2hpY2ggaXMgbm90IGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlCitcZkl1Y2RcLXNubXAvZGlza2lvXGZSIG1vZHVsZSAod2hpY2ggaXMgbm90IGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlCiBkZWZhdWx0IGJ1aWxkIGNvbmZpZ3VyYXRpb24pLgogLlBQCiBCeSBkZWZhdWx0LCBhbGwgYmxvY2sgZGV2aWNlcyBrbm93biB0byB0aGUgb3BlcmF0aW5nIHN5c3RlbSBhcmUKQEAgLTcwMyw3ICs3MTYsNyBAQAogInJhbTAiCiAuU1MgU3lzdGVtIExvYWQgTW9uaXRvcmluZwogVGhpcyByZXF1aXJlcyB0aGF0IHRoZSBhZ2VudCB3YXMgYnVpbHQgd2l0aCBzdXBwb3J0IGZvciBlaXRoZXIgdGhlCi1cZkl1Y2Qtc25tcC9sb2FkYXZlXGZSIG1vZHVsZSBvciB0aGUgXGZJdWNkLXNubXAvbWVtb3J5XGZSIG1vZHVsZQorXGZJdWNkXC1zbm1wL2xvYWRhdmVcZlIgbW9kdWxlIG9yIHRoZSBcZkl1Y2RcLXNubXAvbWVtb3J5XGZSIG1vZHVsZQogcmVzcGVjdGl2ZWx5IChib3RoIG9mIHdoaWNoIGFyZSBpbmNsdWRlZCBhcyBwYXJ0IG9mIHRoZQogZGVmYXVsdCBidWlsZCBjb25maWd1cmF0aW9uKS4KIC5JUCAibG9hZCBNQVgxIFtNQVg1IFtNQVgxNV1dIgpAQCAtNzMwLDcgKzc0Myw3IEBACiAuUFAKIFVubGlrZSB0aGUgXGZJcHJvY1xmUiBhbmQgXGZJZGlza1xmUiBkaXJlY3RpdmVzLCB3YWxraW5nIHRoZQogd2Fsa2luZyB0aGUgXGZDbGFUYWJsZVxmUiB3aWxsIHN1Y2NlZWQgKGFzc3VtaW5nIHRoZQotXGZJdWNkLXNubXAvbG9hZGF2ZVxmUiBtb2R1bGUgd2FzIGNvbmZpZ3VyZWQgaW50byB0aGUgYWdlbnQpLAorXGZJdWNkXC1zbm1wL2xvYWRhdmVcZlIgbW9kdWxlIHdhcyBjb25maWd1cmVkIGludG8gdGhlIGFnZW50KSwKIGV2ZW4gaWYgdGhlIFxmSWxvYWRcZlIgZGlyZWN0aXZlIGlzIG5vdCBwcmVzZW50LgogLklQICJzd2FwIE1JTiAiCiBtb25pdG9ycyB0aGUgYW1vdW50IG9mIHN3YXAgc3BhY2UgYXZhaWxhYmxlIG9uIHRoZSBsb2NhbCBzeXN0ZW0uCkBAIC03NDUsNyArNzU4LDcgQEAKIElmIHRoaXMgZGlyZWN0aXZlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHRocmVzaG9sZCBpcyAxNiBNQi4KIC5TUyBMb2cgRmlsZSBNb25pdG9yaW5nCiBUaGlzIHJlcXVpcmVzIHRoYXQgdGhlIGFnZW50IHdhcyBidWlsdCB3aXRoIHN1cHBvcnQgZm9yIGVpdGhlciB0aGUKLVxmSXVjZC1zbm1wL2ZpbGVcZlIgb3IgXGZJdWNkLXNubXAvbG9nbWF0Y2hcZlIgbW9kdWxlcyByZXNwZWN0aXZlbHkKK1xmSXVjZFwtc25tcC9maWxlXGZSIG9yIFxmSXVjZFwtc25tcC9sb2dtYXRjaFxmUiBtb2R1bGVzIHJlc3BlY3RpdmVseQogKGJvdGggb2Ygd2hpY2ggYXJlIGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlCiBkZWZhdWx0IGJ1aWxkIGNvbmZpZ3VyYXRpb24pLgogLklQICJmaWxlIEZJTEUgW01BWFNJWkVdIgpAQCAtNzcyLDcgKzc4NSw3IEBACiAuUlMKIC5JUCBOQU1FCiBuYW1lIG9mIHRoZSBsb2dtYXRjaCBpbnN0YW5jZSAod2lsbCBhcHBlYXIgYXMgbG9nTWF0Y2hOYW1lIHVuZGVyCi1sb2dNYXRjaC9sb2dNYXRjaFRhYmxlL2xvZ01hdGNoRW50cnkvbG9nTWF0Y2hOYW1lIGluIHRoZSB1Y2Qtc25tcCBNSUIgdHJlZSkKK2xvZ01hdGNoL2xvZ01hdGNoVGFibGUvbG9nTWF0Y2hFbnRyeS9sb2dNYXRjaE5hbWUgaW4gdGhlIHVjZFwtc25tcCBNSUIgdHJlZSkKIC5JUCBGSUxFCiBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBsb2dmaWxlIHRvIGJlIG1vbml0b3JlZC4gTm90ZSB0aGF0IHRoaXMgcGF0aAogY2FuIGNvbnRhaW4gZGF0ZS90aW1lIGRpcmVjdGl2ZXMgKGxpa2UgaW4gdGhlIFVOSVggJ2RhdGUnIGNvbW1hbmQpLiBTZWUgdGhlCkBAIC03OTAsMTIgKzgwMywxMiBAQAogRXhhbXBsZToKIC5SUwogLklQCi1sb2dtYXRjaCBhcGFjaGUtR0VUcyAvdXNyL2xvY2FsL2FwYWNoZS9sb2dzL2FjY2Vzcy5sb2ctJVktJW0tJWQgNjAgR0VULipIVFRQLioKK2xvZ21hdGNoIGFwYWNoZVwtR0VUcyAvdXNyL2xvY2FsL2FwYWNoZS9sb2dzL2FjY2Vzcy5sb2dcLSVZXC0lbVwtJWQgNjAgR0VULipIVFRQLioKIC5JUAotVGhpcyBsb2dtYXRjaCBpbnN0YW5jZSBpcyBuYW1lZCAnYXBhY2hlLUdFVHMnLCB1c2VzICdHRVQuKkhUVFAuKicgYXMgaXRzCitUaGlzIGxvZ21hdGNoIGluc3RhbmNlIGlzIG5hbWVkICdhcGFjaGVcLUdFVHMnLCB1c2VzICdHRVQuKkhUVFAuKicgYXMgaXRzCiByZWd1bGFyIGV4cHJlc3Npb24gYW5kIGl0IHdpbGwgbW9uaXRvciB0aGUgZmlsZSBuYW1lZAotKGFzc3VtaW5nIHRvZGF5IGlzIE1heSA2dGggMjAwOSk6ICcvdXNyL2xvY2FsL2FwYWNoZS9sb2dzL2FjY2Vzcy5sb2ctMjAwOS0wNS0wNicsCi10b21vcnJvdyBpdCB3aWxsIGxvb2sgZm9yICdhY2Nlc3MubG9nLTIwMDktMDUtMDcnLiBUaGUgbG9nZmlsZSBpcyByZWFkIGV2ZXJ5IDYwCisoYXNzdW1pbmcgdG9kYXkgaXMgTWF5IDZ0aCAyMDA5KTogJy91c3IvbG9jYWwvYXBhY2hlL2xvZ3MvYWNjZXNzLmxvZ1wtMjAwOVwtMDVcLTA2JywKK3RvbW9ycm93IGl0IHdpbGwgbG9vayBmb3IgJ2FjY2Vzcy5sb2dcLTIwMDlcLTA1XC0wNycuIFRoZSBsb2dmaWxlIGlzIHJlYWQgZXZlcnkgNjAKIHNlY29uZHMuCiAuUkUKIC5JUApAQCAtODUwLDEyICs4NjMsMTIgQEAKIC5JICJTTk1QQ01EX0FSR1MiCiBzaG91bGQgYmUgdGhlIGNvbW1hbmQtbGluZSBvcHRpb25zIHJlcXVpcmVkIGZvciBhbiBlcXVpdmFsZW50CiBcZklzbm1wdHJhcFxmUiAob3IgXGZJc25tcGluZm9ybVxmUikgY29tbWFuZCB0byBzZW5kIHRoZSBkZXNpcmVkIG5vdGlmaWNhdGlvbi4KLVRoZSBvcHRpb24gXGZJLUNpXGZSIGNhbiBiZSB1c2VkICh3aXRoIFxmSS12MmNcZlIgb3IgXGZJLXYzXGZSKSB0byBnZW5lcmF0ZQorVGhlIG9wdGlvbiBcZklcLUNpXGZSIGNhbiBiZSB1c2VkICh3aXRoIFxmSVwtdjJjXGZSIG9yIFxmSVwtdjNcZlIpIHRvIGdlbmVyYXRlCiBhbiBJTkZPUk0gbm90aWZpY2F0aW9uIHJhdGhlciB0aGFuIGFuIHVuYWNrbm93bGVkZ2VkIFRSQVAuCiAuSVAKIFRoaXMgaXMgdGhlIGFwcHJvcHJpYXRlIGRpcmVjdGl2ZSBmb3IgZGVmaW5pbmcgU05NUHYzIHRyYXAgcmVjZWl2ZXJzLgogU2VlCi1odHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy90dXRvcmlhbC90dXRvcmlhbC01L2NvbW1hbmRzL3NubXB0cmFwLXYzLmh0bWwKK2h0dHA6Ly93d3cubmV0XC1zbm1wLm9yZy90dXRvcmlhbC90dXRvcmlhbFwtNS9jb21tYW5kcy9zbm1wdHJhcFwtdjMuaHRtbAogZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgU05NUHYzIG5vdGlmaWNhdGlvbiBiZWhhdmlvdXIuCiAuSVAgImF1dGh0cmFwZW5hYmxlIHsxfDJ9IgogZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGdlbmVyYXRlIGF1dGhlbnRpY2F0aW9uIGZhaWx1cmUgdHJhcHMKQEAgLTk1Nyw0NyArOTcwLDQ5IEBACiBUaGVyZSBhcmUgdmFyaW91cyBvcHRpb25zIHRvIGNvbnRyb2wgdGhlIGJlaGF2aW91ciBvZiB0aGUgbW9uaXRvcmVkCiBleHByZXNzaW9uLiAgVGhlc2UgaW5jbHVkZToKIC5SUwotLklQICItRCIKKy5JUCAiXC1EIgogaW5kaWNhdGVzIHRoYXQgdGhlIGV4cHJlc3Npb24gc2hvdWxkIGJlIGV2YWx1YXRlZCB1c2luZyBkZWx0YSBkaWZmZXJlbmNlcwogYmV0d2VlbiBzYW1wbGUgdmFsdWVzIChyYXRoZXIgdGhhbiB0aGUgdmFsdWVzIHRoZW1zZWx2ZXMpLgotLklQICItZCBPSUQiCi0uSVAgIi1kaSBPSUQiCisuSVAgIlwtZCBPSUQiCisuSVAgIlwtZGkgT0lEIgogc3BlY2lmaWVzIGEgZGlzY29udGludWl0eSBtYXJrZXIgZm9yIHZhbGlkYXRpbmcgZGVsdGEgZGlmZmVyZW5jZXMuCi1BIFxmSS1kaVxmUiBvYmplY3QgaW5zdGFuY2Ugd2lsbCBiZSB1c2VkIGV4YWN0bHkgYXMgZ2l2ZW4uCi1BIFxmSS1kXGZSIG9iamVjdCB3aWxsIGhhdmUgdGhlIGluc3RhbmNlIHN1YmlkZW50aWZpZXJzIGZyb20gdGhlCitBIFxmSVwtZGlcZlIgb2JqZWN0IGluc3RhbmNlIHdpbGwgYmUgdXNlZCBleGFjdGx5IGFzIGdpdmVuLgorQSBcZklcLWRcZlIgb2JqZWN0IHdpbGwgaGF2ZSB0aGUgaW5zdGFuY2Ugc3ViaWRlbnRpZmllcnMgZnJvbSB0aGUKIGNvcnJlc3BvbmRpbmcgKHdpbGRjYXJkZWQpIGV4cHJlc3Npb24gb2JqZWN0IGFwcGVuZGVkLgotSWYgdGhlIFxmSS1JXGZSIGZsYWcgaXMgc3BlY2lmaWVkLCB0aGVuIHRoZXJlIGlzIG5vIGRpZmZlcmVuY2UKK0lmIHRoZSBcZklcLUlcZlIgZmxhZyBpcyBzcGVjaWZpZWQsIHRoZW4gdGhlcmUgaXMgbm8gZGlmZmVyZW5jZQogYmV0d2VlbiB0aGVzZSB0d28gb3B0aW9ucy4KIC5JUAotVGhpcyBvcHRpb24gYWxzbyBpbXBsaWVzIFxmSS1EXGZSLgotLklQICItZSBFVkVOVCIKK1RoaXMgb3B0aW9uIGFsc28gaW1wbGllcyBcZklcLURcZlIuCisuSVAgIlwtZSBFVkVOVCIKIHNwZWNpZmllcyB0aGUgZXZlbnQgdG8gYmUgaW52b2tlZCB3aGVuIHRoaXMgbW9uaXRvciBlbnRyeSBpcyB0cmlnZ2VyZWQuCiBJZiB0aGlzIG9wdGlvbiBpcyBub3QgZ2l2ZW4sIHRoZSBtb25pdG9yIGVudHJ5IHdpbGwgZ2VuZXJhdGUgb25lCi1vZiB0aGUgc3RhbmRhcmQgbm90aWZpY2F0aW9ucyBkZWZpbmVkIGluIHRoZSBESVNNQU4tRVZFTlQtTUlCLgotLklQICItSSIKK29mIHRoZSBzdGFuZGFyZCBub3RpZmljYXRpb25zIGRlZmluZWQgaW4gdGhlIERJU01BTlwtRVZFTlRcLU1JQi4KKy5JUCAiXC1JIgogaW5kaWNhdGVzIHRoYXQgdGhlIG1vbml0b3JlZCBleHByZXNzaW9uIHNob3VsZCBiZSBhcHBsaWVkIHRvIHRoZQogc3BlY2lmaWVkIE9JRCBhcyBhIHNpbmdsZSBpbnN0YW5jZS4gIEJ5IGRlZmF1bHQsIHRoZSBPSUQgd2lsbAogYmUgdHJlYXRlZCBhcyBhIHdpbGRjYXJkZWQgb2JqZWN0LCBhbmQgdGhlIG1vbml0b3IgZXhwYW5kZWQKIHRvIGNvdmVyIGFsbCBtYXRjaGluZyBpbnN0YW5jZXMuCi0uSVAgIi1pIE9JRCIKLS5JUCAiLW8gT0lEIgorLklQICJcLWkgT0lEIgorLklQICJcLW8gT0lEIgogZGVmaW5lIGFkZGl0aW9uYWwgdmFyYmluZHMgdG8gYmUgYWRkZWQgdG8gdGhlIG5vdGlmaWNhdGlvbiBwYXlsb2FkCiB3aGVuIHRoaXMgbW9uaXRvciB0cmlnZ2VyIGZpcmVzLgogRm9yIGEgd2lsZGNhcmRlZCBleHByZXNzaW9uLCB0aGUgc3VmZml4IG9mIHRoZSBtYXRjaGVkIGluc3RhbmNlCi13aWxsIGJlIGFkZGVkIHRvIGFueSBPSURzIHNwZWNpZmllZCB1c2luZyBcZkktb1xmUiwgd2hpbGUgT0lEcwotc3BlY2lmaWVkIHVzaW5nIFxmSS1pXGZSIHdpbGwgYmUgdHJlYXRlZCBhcyBleGFjdCBpbnN0YW5jZXMuCi1JZiB0aGUgXGZJLUlcZlIgZmxhZyBpcyBzcGVjaWZpZWQsIHRoZW4gdGhlcmUgaXMgbm8gZGlmZmVyZW5jZQord2lsbCBiZSBhZGRlZCB0byBhbnkgT0lEcyBzcGVjaWZpZWQgdXNpbmcgXGZJXC1vXGZSLCB3aGlsZSBPSURzCitzcGVjaWZpZWQgdXNpbmcgXGZJXC1pXGZSIHdpbGwgYmUgdHJlYXRlZCBhcyBleGFjdCBpbnN0YW5jZXMuCitJZiB0aGUgXGZJXC1JXGZSIGZsYWcgaXMgc3BlY2lmaWVkLCB0aGVuIHRoZXJlIGlzIG5vIGRpZmZlcmVuY2UKIGJldHdlZW4gdGhlc2UgdHdvIG9wdGlvbnMuCiAuSVAKIFNlZSBcZklzdHJpY3REaXNtYW5cZlIgZm9yIGRldGFpbHMgb2YgdGhlIG9yZGVyaW5nIG9mIG5vdGlmaWNhdGlvbiBwYXlsb2Fkcy4KLS5JUCAiLXIgRlJFUVVFTkNZIgotbW9uaXRvcnMgdGhlIGdpdmVuIGV4cHJlc3Npb24gZXZlcnkgRlJFUVVFTkNZIHNlY29uZHMuCi1CeSBkZWZhdWx0LCB0aGUgZXhwcmVzc2lvbiB3aWxsIGJlIGV2YWx1YXRlZCBldmVyeSA2MDBzICgxMCBtaW51dGVzKS4gCi0uSVAgIi1TIgorLklQICJcLXIgRlJFUVVFTkNZIgorbW9uaXRvcnMgdGhlIGdpdmVuIGV4cHJlc3Npb24gZXZlcnkgRlJFUVVFTkNZLCB3aGVyZSBGUkVRVUVOQ1kgaXMgaW4KK3NlY29uZHMgb3Igb3B0aW9uYWxseSBzdWZmaXhlZCBieSBvbmUgb2YgcyAoZm9yIHNlY29uZHMpLCBtIChmb3IKK21pbnV0ZXMpLCBoIChmb3IgaG91cnMpLCBkIChmb3IgZGF5cyksIG9yIHcgKGZvciB3ZWVrcykuICBCeSBkZWZhdWx0LAordGhlIGV4cHJlc3Npb24gd2lsbCBiZSBldmFsdWF0ZWQgZXZlcnkgNjAwcyAoMTAgbWludXRlcykuCisuSVAgIlwtUyIKIGluZGljYXRlcyB0aGF0IHRoZSBtb25pdG9yIGV4cHJlc3Npb24gc2hvdWxkIFxmSW5vdFxmUiBiZSBldmFsdWF0ZWQKIHdoZW4gdGhlIGFnZW50IGZpcnN0IHN0YXJ0cyB1cC4gIFRoZSBmaXJzdCBldmFsdWF0aW9uIHdpbGwgYmUgZG9uZQogb25jZSB0aGUgZmlyc3QgcmVwZWF0IGludGVydmFsIGhhcyBleHBpcmVkLgotLklQICItcyIKKy5JUCAiXC1zIgogaW5kaWNhdGVzIHRoYXQgdGhlIG1vbml0b3IgZXhwcmVzc2lvbiBcZklzaG91bGRcZlIgYmUgZXZhbHVhdGVkIHdoZW4gdGhlCiBhZ2VudCBmaXJzdCBzdGFydHMgdXAuICBUaGlzIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW91ci4KIC5SUwpAQCAtMTAwNSwyMCArMTAyMCwyMCBAQAogTm90aWZpY2F0aW9ucyB0cmlnZ2VyZWQgYnkgdGhpcyBpbml0aWFsIGV2YWx1YXRpb24gd2lsbCBiZSBzZW50CiBcZkliZWZvcmVcZlIgdGhlIFxmQ2NvbGRTdGFydFxmUiB0cmFwLgogLlJFCi0uSVAgIi11IFNFQ05BTUUiCisuSVAgIlwtdSBTRUNOQU1FIgogc3BlY2lmaWVzIGEgc2VjdXJpdHkgbmFtZSB0byB1c2UgZm9yIHNjYW5uaW5nIHRoZSBsb2NhbCBob3N0LAogaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBcZklpcXVlcnlTZWNOYW1lXGZSLgogT25jZSBhZ2FpbiwgdGhpcyB1c2VyIG11c3QgYmUgZXhwbGljaXRseSBjcmVhdGVkIGFuZCBnaXZlbgogc3VpdGFibGUgYWNjZXNzIHJpZ2h0cy4KIC5SRQotLklQICJub3RpZmljYXRpb25FdmVudCBFTkFNRSBOT1RJRklDQVRJT04gWy1tXSBbLWkgT0lEIHwgLW8gT0lEIF0qIgorLklQICJub3RpZmljYXRpb25FdmVudCBFTkFNRSBOT1RJRklDQVRJT04gW1wtbV0gW1wtaSBPSUQgfCBcLW8gT0lEIF0qIgogZGVmaW5lcyBhIG5vdGlmaWNhdGlvbiBldmVudCBuYW1lZCBFTkFNRS4KIFRoaXMgY2FuIGJlIHRyaWdnZXJlZCBmcm9tIGEgZ2l2ZW4gXGZJbW9uaXRvclxmUiBlbnRyeSBieSBzcGVjaWZ5aW5nCi10aGUgb3B0aW9uIFxmSS1lIEVOQU1FXGZSIChzZWUgYWJvdmUpLgotTk9USUZJQ0FUSU9OIHNob3VsZCBiZSB0aGUgT0lEIG9mIHRoZSBOT1RJRklDQVRJT04tVFlQRSBkZWZpbml0aW9uCit0aGUgb3B0aW9uIFxmSVwtZSBFTkFNRVxmUiAoc2VlIGFib3ZlKS4KK05PVElGSUNBVElPTiBzaG91bGQgYmUgdGhlIE9JRCBvZiB0aGUgTk9USUZJQ0FUSU9OXC1UWVBFIGRlZmluaXRpb24KIGZvciB0aGUgbm90aWZpY2F0aW9uIHRvIGJlIGdlbmVyYXRlZC4KIC5JUAotSWYgdGhlIFxmSS1tXGZSIG9wdGlvbiBpcyBnaXZlbiwgdGhlIG5vdGlmaWNhdGlvbiBwYXlsb2FkIHdpbGwKK0lmIHRoZSBcZklcLW1cZlIgb3B0aW9uIGlzIGdpdmVuLCB0aGUgbm90aWZpY2F0aW9uIHBheWxvYWQgd2lsbAogaW5jbHVkZSB0aGUgc3RhbmRhcmQgdmFyYmluZHMgYXMgc3BlY2lmaWVkIGluIHRoZSBPQkpFQ1RTIGNsYXVzZQogb2YgdGhlIG5vdGlmaWNhdGlvbiBNSUIgZGVmaW5pdGlvbi4KIFRoaXMgb3B0aW9uIG11c3QgY29tZSBcZkJhZnRlclxmUiB0aGUgTk9USUZJQ0FUSU9OIE9JRApAQCAtMTAyNywyNSArMTA0MiwyNSBAQAogYmUgbGlzdGVkIGV4cGxpY2l0bHkgKGVpdGhlciBoZXJlIG9yIGluIHRoZSBjb3JyZXNwb25kaW5nCiBcZkltb25pdG9yXGZSIGRpcmVjdGl2ZSkuCiAuSVAKLVRoZSBcZkktaSBPSURcZlIgYW5kIFxmSS1vIE9JRFxmUiBvcHRpb25zIHNwZWNpZnkgYWRkaXRpb25hbAorVGhlIFxmSVwtaSBPSURcZlIgYW5kIFxmSVwtbyBPSURcZlIgb3B0aW9ucyBzcGVjaWZ5IGFkZGl0aW9uYWwKIHZhcmJpbmRzIHRvIGJlIGFwcGVuZGVkIHRvIHRoZSBub3RpZmljYXRpb24gcGF5bG9hZCwgYWZ0ZXIgdGhlCiBzdGFuZGFyZCBsaXN0LgogSWYgdGhlIG1vbml0b3IgZW50cnkgdGhhdCB0cmlnZ2VyZWQgdGhpcyBldmVudCBpbnZvbHZlZCBhCiB3aWxkY2FyZGVkIGV4cHJlc3Npb24sIHRoZSBzdWZmaXggb2YgdGhlIG1hdGNoZWQgaW5zdGFuY2UKLXdpbGwgYmUgYWRkZWQgdG8gYW55IE9JRHMgc3BlY2lmaWVkIHVzaW5nIFxmSS1vXGZSLCB3aGlsZSBPSURzCi1zcGVjaWZpZWQgdXNpbmcgXGZJLWlcZlIgd2lsbCBiZSB0cmVhdGVkIGFzIGV4YWN0IGluc3RhbmNlcy4KLUlmIHRoZSBcZkktSVxmUiBmbGFnIHdhcyBzcGVjaWZpZWQgdG8gdGhlIFxmSW1vbml0b3JcZlIgZGlyZWN0aXZlLAord2lsbCBiZSBhZGRlZCB0byBhbnkgT0lEcyBzcGVjaWZpZWQgdXNpbmcgXGZJXC1vXGZSLCB3aGlsZSBPSURzCitzcGVjaWZpZWQgdXNpbmcgXGZJXC1pXGZSIHdpbGwgYmUgdHJlYXRlZCBhcyBleGFjdCBpbnN0YW5jZXMuCitJZiB0aGUgXGZJXC1JXGZSIGZsYWcgd2FzIHNwZWNpZmllZCB0byB0aGUgXGZJbW9uaXRvclxmUiBkaXJlY3RpdmUsCiB0aGVuIHRoZXJlIGlzIG5vIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGVzZSB0d28gb3B0aW9ucy4KLS5JUCAic2V0RXZlbnQgRU5BTUUgWy1JXSBPSUQgPSBWQUxVRSAiCisuSVAgInNldEV2ZW50IEVOQU1FIFtcLUldIE9JRCA9IFZBTFVFICIKIGRlZmluZXMgYSBzZXQgZXZlbnQgbmFtZWQgRU5BTUUsIGFzc2lnbmluZyB0aGUgKGludGVnZXIpIFZBTFVFCiB0byB0aGUgc3BlY2lmaWVkIE9JRC4KIFRoaXMgY2FuIGJlIHRyaWdnZXJlZCBmcm9tIGEgZ2l2ZW4gXGZJbW9uaXRvclxmUiBlbnRyeSBieSBzcGVjaWZ5aW5nCi10aGUgb3B0aW9uIFxmSS1lIEVOQU1FXGZSIChzZWUgYWJvdmUpLgordGhlIG9wdGlvbiBcZklcLWUgRU5BTUVcZlIgKHNlZSBhYm92ZSkuCiAuSVAKIElmIHRoZSBtb25pdG9yIGVudHJ5IHRoYXQgdHJpZ2dlcmVkIHRoaXMgZXZlbnQgaW52b2x2ZWQgYQogd2lsZGNhcmRlZCBleHByZXNzaW9uLCB0aGUgc3VmZml4IG9mIHRoZSBtYXRjaGVkIGluc3RhbmNlCiB3aWxsIG5vcm1hbGx5IGJlIGFkZGVkIHRvIHRoZSBPSUQuCi1JZiB0aGUgXGZJLUlcZlIgZmxhZyB3YXMgc3BlY2lmaWVkIHRvIGVpdGhlciBvZiB0aGUKK0lmIHRoZSBcZklcLUlcZlIgZmxhZyB3YXMgc3BlY2lmaWVkIHRvIGVpdGhlciBvZiB0aGUKIFxmSW1vbml0b3JcZlIgb3IgXGZJc2V0RXZlbnRcZlIgZGlyZWN0aXZlcywgdGhlCiBzcGVjaWZpZWQgT0lEIHdpbGwgYmUgcmVnYXJkZWQgYXMgYW4gZXhhY3Qgc2luZ2xlIGluc3RhbmNlLgogLklQICJzdHJpY3REaXNtYW4geWVzIgpAQCAtMTA2Niw4ICsxMDgxLDggQEAKIC5SUwogLklQICJOb3RlOiIKIFN0cmljdCBEaXNNYW4gb3JkZXJpbmcgbWF5IHJlc3VsdCBpbiBnZW5lcmF0aW5nIGludmFsaWQgbm90aWZpY2F0aW9ucwotcGF5bG9hZCBsaXN0cyBpZiB0aGUgXGZJbm90aWZpY2F0aW9uRXZlbnQgLW5cZlIgZmxhZyBpcyB1c2VkIHRvZ2V0aGVyCi13aXRoIFxmSW1vbml0b3IgLW9cZlIgKG9yIFxmSS1pXGZSKSB2YXJiaW5kIG9wdGlvbnMuCitwYXlsb2FkIGxpc3RzIGlmIHRoZSBcZklub3RpZmljYXRpb25FdmVudCBcLW5cZlIgZmxhZyBpcyB1c2VkIHRvZ2V0aGVyCit3aXRoIFxmSW1vbml0b3IgXC1vXGZSIChvciBcZklcLWlcZlIpIHZhcmJpbmQgb3B0aW9ucy4KIC5SRQogLklQCiBJZiBubyBcZkltb25pdG9yXGZSIGVudHJpZXMgc3BlY2lmeSBwYXlsb2FkIHZhcmJpbmRzLApAQCAtMTA4NCwyNSArMTA5OSwyNSBAQAogbm90aWZpY2F0aW9uRXZlbnQgIGxpbmtVcFRyYXAgICAgbGlua1VwICAgaWZJbmRleCBpZkFkbWluU3RhdHVzIGlmT3BlclN0YXR1cwogbm90aWZpY2F0aW9uRXZlbnQgIGxpbmtEb3duVHJhcCAgbGlua0Rvd24gaWZJbmRleCBpZkFkbWluU3RhdHVzIGlmT3BlclN0YXR1cwogCi1tb25pdG9yICAtciA2MCAtZSBsaW5rVXBUcmFwICAgIkdlbmVyYXRlIGxpbmtVcCIgaWZPcGVyU3RhdHVzICE9IDIKLW1vbml0b3IgIC1yIDYwIC1lIGxpbmtEb3duVHJhcCAiR2VuZXJhdGUgbGlua0Rvd24iIGlmT3BlclN0YXR1cyA9PSAyCittb25pdG9yICBcLXIgNjAgXC1lIGxpbmtVcFRyYXAgICAiR2VuZXJhdGUgbGlua1VwIiBpZk9wZXJTdGF0dXMgIT0gMgorbW9uaXRvciAgXC1yIDYwIFwtZSBsaW5rRG93blRyYXAgIkdlbmVyYXRlIGxpbmtEb3duIiBpZk9wZXJTdGF0dXMgPT0gMgogLmZpCiAuUkUKIC5JUCAiZGVmYXVsdE1vbml0b3JzIHllcyIKIHdpbGwgY29uZmlndXJlIHRoZSBFdmVudCBNSUIgdGFibGVzIHRvIG1vbml0b3IgdGhlIHZhcmlvdXMKLVxmQ1VDRC1TTk1QLU1JQlxmUiB0YWJsZXMgZm9yIHByb2JsZW1zIChhcyBpbmRpY2F0ZWQgYnkKK1xmQ1VDRFwtU05NUFwtTUlCXGZSIHRhYmxlcyBmb3IgcHJvYmxlbXMgKGFzIGluZGljYXRlZCBieQogdGhlIGFwcHJvcHJpYXRlIFxmQ3h4RXJyRmxhZ1xmUiBjb2x1bW4gb2JqZWN0cykuCiAuSVAKIFRoaXMgaXMgZXhhY3RseSBlcXVpdmFsZW50IHRvIHRoZSBjb25maWd1cmF0aW9uOgogLlJTCiAuSVAKIC5uZgotbW9uaXRvcgktbyBwck5hbWVzIC1vIHByRXJyTWVzc2FnZSAicHJvY2VzcyB0YWJsZSIgcHJFcnJvckZsYWcgIT0gMAotbW9uaXRvcgktbyBtZW1FcnJvck5hbWUgLW8gbWVtU3dhcEVycm9yTXNnICJtZW1vcnkiIG1lbVN3YXBFcnJvciAhPSAwCi1tb25pdG9yCS1vIGV4dE5hbWVzIC1vIGV4dE91dHB1dCAiZXh0VGFibGUiIGV4dFJlc3VsdCAhPSAwCi1tb25pdG9yCS1vIGRza1BhdGggLW8gZHNrRXJyb3JNc2cgImRza1RhYmxlIiBkc2tFcnJvckZsYWcgIT0gMAotbW9uaXRvcgktbyBsYU5hbWVzIC1vIGxhRXJyTWVzc2FnZSAgImxhVGFibGUiIGxhRXJyb3JGbGFnICE9IDAKLW1vbml0b3IJLW8gZmlsZU5hbWUgLW8gZmlsZUVycm9yTXNnICAiZmlsZVRhYmxlIiBmaWxlRXJyb3JGbGFnICE9IDAKK21vbml0b3IJXC1vIHByTmFtZXMgXC1vIHByRXJyTWVzc2FnZSAicHJvY2VzcyB0YWJsZSIgcHJFcnJvckZsYWcgIT0gMAorbW9uaXRvcglcLW8gbWVtRXJyb3JOYW1lIFwtbyBtZW1Td2FwRXJyb3JNc2cgIm1lbW9yeSIgbWVtU3dhcEVycm9yICE9IDAKK21vbml0b3IJXC1vIGV4dE5hbWVzIFwtbyBleHRPdXRwdXQgImV4dFRhYmxlIiBleHRSZXN1bHQgIT0gMAorbW9uaXRvcglcLW8gZHNrUGF0aCBcLW8gZHNrRXJyb3JNc2cgImRza1RhYmxlIiBkc2tFcnJvckZsYWcgIT0gMAorbW9uaXRvcglcLW8gbGFOYW1lcyBcLW8gbGFFcnJNZXNzYWdlICAibGFUYWJsZSIgbGFFcnJvckZsYWcgIT0gMAorbW9uaXRvcglcLW8gZmlsZU5hbWUgXC1vIGZpbGVFcnJvck1zZyAgImZpbGVUYWJsZSIgZmlsZUVycm9yRmxhZyAhPSAwCiAuZmkKIC5SRQogLlBQCkBAIC0xMTE5LDcgKzExMzQsOSBAQAogVGhlcmUgYXJlIHRocmVlIHdheXMgb2Ygc3BlY2lmeWluZyB0aGUgc2NoZWR1bGVkIGFjdGlvbjoKIC5JUCAicmVwZWF0IEZSRVFVRU5DWSBPSUQgPSBWQUxVRSIKIGNvbmZpZ3VyZXMgYSBTRVQgYXNzaWdubWVudCBvZiB0aGUgKGludGVnZXIpIFZBTFVFIHRvIHRoZSBNSUIgaW5zdGFuY2UKLU9JRCwgdG8gYmUgcnVuIGV2ZXJ5IEZSRVFVRU5DWSBzZWNvbmRzLgorT0lELCB0byBiZSBydW4gZXZlcnkgRlJFUVVFTkNZIHNlY29uZHMsIHdoZXJlIEZSRVFVRU5DWSBpcyBpbgorc2Vjb25kcyBvciBvcHRpb25hbGx5IHN1ZmZpeGVkIGJ5IG9uZSBvZiBzIChmb3Igc2Vjb25kcyksIG0gKGZvcgorbWludXRlcyksIGggKGZvciBob3VycyksIGQgKGZvciBkYXlzKSwgb3IgdyAoZm9yIHdlZWtzKS4KIC5JUCAiY3JvbiBNSU5VVEUgSE9VUiBEQVkgTU9OVEggV0VFS0RBWSAgT0lEID0gVkFMVUUiCiBjb25maWd1cmVzIGEgU0VUIGFzc2lnbm1lbnQgb2YgdGhlIChpbnRlZ2VyKSBWQUxVRSB0byB0aGUgTUlCIGluc3RhbmNlCiBPSUQsIHRvIGJlIHJ1biBhdCB0aGUgdGltZXMgc3BlY2lmaWVkIGJ5IHRoZSBmaWVsZHMgTUlOVVRFIHRvIFdFRUtEQVkuCkBAIC0xMTM3LDYgKzExNTQsNzAgQEAKIGNvbmZpZ3VyZXMgYSBvbmUtc2hvdCBTRVQgYXNzaWdubWVudCwgdG8gYmUgcnVuIGF0IHRoZSBmaXJzdCBtYXRjaGluZwogdGltZSBhcyBzcGVjaWZpZWQgYnkgdGhlIGZpZWxkcyBNSU5VVEUgdG8gV0VFS0RBWS4gIFRoZSBpbnRlcnByZXRhdGlvbgogb2YgdGhlc2UgZmllbGRzIGlzIGV4YWN0bHkgdGhlIHNhbWUgYXMgZm9yIHRoZSBcZkljcm9uXGZSIGRpcmVjdGl2ZS4KKy5TUyAiRGF0YSBEZWxpdmVyeSB2aWEgTm90ZmlpY2F0aW9ucyIKK05vdGU6IHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBvbmx5IGF2YWlsYWJsZSBpZiB0aGUKK1xmSWRlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5XGZSIG1pYiBtb2R1bGUgd2FzIGNvbXBsaWVkIGluIHRvIHRoZSBhZ2VudAorLlBQCitJbiBzb21lIHNpdHVhdGlvbnMgaXQgbWF5IGJlIGFkdmFudGFnZW91cyB0byBkZWxpdmVyIFNOTVAgZGF0YSBvdmVyCitTTk1QIE5vdGlmaWNhdGlvbnMgKFRSQVBzIGFuZCBJTkZPUk1zKSByYXRoZXIgdGhhbiB0aGUgdHlwaWNhbCBwcm9jZXNzCitvZiBoYXZpbmcgdGhlIG1hbmFnZXIgaXNzdWUgcmVxdWVzdHMgZm9yIHRoZSBkYXRhICh2aWEgR0VUcyBhbmQKK0dFVE5FWFRzKS4gIFJlYXNvbnMgZm9yIGRvaW5nIHRoaXMgYXJlIG51bWVyb3VzLCBidXQgZnJlcXVlbnRseSBjb3JuZXIKK2Nhc2VzLiAgVGhlIG1vc3QgY29tbW9uIHJlYXNvbiBmb3Igd2FudGluZyB0aGlzIGJlaGF2aW91ciBtaWdodCBiZSB0bworbW9uaXRvciBkZXZpY2VzIHRoYXQgcmVzaWRlIGJlaGluZCBOQVRzIG9yIEZpcmV3YWxscyB0aGF0IHByZXZlbnQKK2luY29taW5nIFNOTVAgdHJhZmZpYy4KKy5QUAorSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgYWx0aG91Z2ggbW9zdCBtYW5hZ2VtZW50IHNvZnR3YXJlIGlzIGNhcGFibGUKK29mIGxvZ2dpbmcgbm90aWZpY2F0aW9ucywgdmVyeSBsaXR0bGUgKGlmIGFueSkgbWFuYWdlbWVudCBzb2Z0d2FyZQord2lsbCB1cGRhdGVkIHRoZWlyICJrbm93bGVkZ2UgZGF0YWJhc2UiIGJhc2VkIG9uIHRoZSBjb250ZW50cyBvZiBTTk1QCitub3RpZmljYXRpb25zLiAgSUUsIGl0IHdvbid0IChmb3IgZXhhbXBsZSkgdXBkYXRlIHRoZSBpbnRlcmZhY2UKK3RyYWZmaWMgY291bnRlciBoaXN0b3J5IHRoYXQgaXMgdXNlZCB0byBwcm9kdWNlIGdyYXBocy4gIE1vc3QgbGFyZ2VyCituZXR3b3JrIG1hbmFnZW1lbnQgcGFja2FnZXMgaGF2ZSBhIHNlcGFyYXRlIGRhdGFiYXNlIGZvciBzdG9yaW5nIGRhdGEKK3JlY2VpdmVkIHZpYSBTTk1QIHJlcXVlc3RzIChHRVRzIGFuZCBHRVRORVhUcykgdnMgdGhvc2UgcmVjZWl2ZWQgZnJvbQorbm90aWZpY2F0aW9ucy4gIFJlc2VhcmNoaW5nIHRoZSBjYXBhYmlsaXRpZXMgb2YgeW91ciBtYW5hZ2VtZW50CitzdGF0aW9uIHNvZnR3YXJlIGlzIHJlcXVpcmVkIGJlZm9yZSBhc3N1bWluZyB0aGlzIGZ1bmN0aW9uYWxpdHkgd2lsbAorc29sdmUgeW91ciBkYXRhIGRlbGl2ZXJ5IHJlcXVpcmVtZW50cy4KKy5QUAorTm90aWZpY2F0aW9ucyBnZW5lcmF0ZWQgdmlhIHRoaXMgbWVjaGFuaXNtIHdpbGwgYmUgc2VudCB0byB0aGUKK3N0YW5kYXJkIHNldCBvZiBjb25maWd1cmVkIG5vdGlmaWNhdGlvbiB0YXJnZXRzLiAgU2VlIHRoZQorIk5vdGlmaWNhdGlvbiBIYW5kbGluZyIgc2VjdGlvbiBvZiB0aGlzIGRvY3VtZW50IGZvciBmdXJ0aGVyCitpbmZvcm1hdGlvbi4KKy5JUCAiZGVsaXZlckJ5Tm90aWZ5IFtcLXBdIFtcLW1dIFtcLXMgTUFYU0laRV0gRlJFUVVFTkNZIE9JRCIKK1RoaXMgZGlyZWN0aXZlIHRlbGxzIHRoZSBTTk1QIGFnZW50IHRvIHNlbGYtd2FsayB0aGUgXGZJT0lEXGZSLAorY29sbGVjdCBhbGwgdGhlIGRhdGEgYW5kIHNlbmQgaXQgb3V0IGV2ZXJ5IFxmSUZSRVFVRU5DWVxmUiBzZWNvbmRzLAord2hlcmUgRlJFUVVFTkNZIGlzIGluIHNlY29uZHMgb3Igb3B0aW9uYWxseSBzdWZmaXhlZCBieSBvbmUgb2YgcyAoZm9yCitzZWNvbmRzKSwgbSAoZm9yIG1pbnV0ZXMpLCBoIChmb3IgaG91cnMpLCBkIChmb3IgZGF5cyksIG9yIHcgKGZvcgord2Vla3MpLiAgQnkgZGVmYXVsdCBzY2FsYXJzIGFyZSBpbmNsdWRlZCBpbiB0aGUgbm90aWZpY2F0aW9uIHRoYXQKK3NwZWNpZnkgdGhlIGhvdyBvZnRlbiB0aGUgbm90aWZpY2F0aW9uIHdpbGwgYmUgc2VudCAodW5sZXNzIHRoZQorXGZJXC1wXGZSIG9wdGlvbiBpcyBzcGVjaWZpZWQpIGFuZCB3aGljaCBtZXNzYWdlIG51bWJlciBvZiBob3cgbWFueQorbWVzc2FnZXMgYSBwYXJ0aWN1bGFyIG5vdGlmaWNhdGlvbiBpcyAodW5sZXNzIFxmSVwtbVxmUiBpcyBzcGVjaWZpZWQpLgorVG8gYnJlYWsgdGhlIG5vdGlmaWNhdGlvbnMgaW50byBtYW5hZ2VhYmxlIHBhY2tldCBzaXplcywgdXNlIHRoZQorXGZJXC1zXGZSIGZsYWcgdG8gc3BlY2lmeSB0aGUgYXBwcm94aW1hdGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdGhhdAorYSBub3RpZmljYXRpb24gbWVzc2FnZSBzaG91bGQgYmUgbGltaXRlZCB0by4gIElmIG1vcmUgdGhhbgorXGZJTUFYU0laRVxmUiBvZiBieXRlcyBpcyBuZWVkZWQgdGhlbiBtdWx0aXBsZSBub3RpZmljYXRpb25zIHdpbGwgYmUKK3NlbnQgdG8gZGVsaXZlciB0aGUgZGF0YS4gIE5vdGUgdGhhdCB0aGUgY2FsY3VsYXRpb25zIGZvciBlbnN1cmluZyB0aGUKK21heGltdW0gc2l6ZSBpcyBtZXQgYXJlIGFwcHJveGltYXRpb25zIGFuZCB0aHVzIGl0IGNhbiBiZSBhYnNvbHV0ZWx5CitndWFyYW50ZWVkIHRoZXknbGwgYmUgdW5kZXIgdGhhdCBzaXplLCBzbyBsZWF2ZSBhIHBhZGRpbmcgYnVmZmVyIGlmIGl0CitpcyBjcml0aWNhbCB0aGF0IHlvdSBhdm9pZCBmcmFnbWVudGF0aW9uLiAgQSB2YWx1ZSBvZiBcLTEgaW5kaWNhdGVzCitmb3JjZSBldmVyeXRoaW5nIGludG8gYSBzaW5nbGUgbWVzc2FnZSBubyBtYXR0ZXIgaG93IGJpZyBpdCBpcy4KKy5JUAorRXhhbXBsZSB1c2FnZTogdGhlIGZvbGxvd2luZyB3aWxsIGRlbGl2ZXIgdGhlIGNvbnRlbnRzIG9mIHRoZSBpZlRhYmxlCitvbmNlIGFuIGhvdXIgYW5kIHRoZSBjb250ZW50cyBvZiB0aGUgc3lzdGVtIGdyb3VwIG9uY2UgZXZlcnkgMiBob3VyczoKKy5SUworLm5mCisKK2RlbGl2ZXJCeU5vdGlmeSAzNjAwIGlmVGFibGUKK2RlbGl2ZXJCeU5vdGlmeSA3MjAwIHN5c3RlbQorLmZpCisuUkUKKy5JUCAiZGVsaXZlckJ5Tm90aWZ5TWF4UGFja2V0U2l6ZSBTSVpFSU5CWVRFUyIKK1NldHMgdGhlIGRlZmF1bHQgbm90aWZpY2F0aW9uIHNpemUgbGltaXQgKHNlZSB0aGUgXGZJXC1zXGZSIGZsYWcgYWJvdmUpLgorLklQICJkZWxpdmVyQnlOb3RpZnlPaWQgT0lEIgorLklQICJkZWxpdmVyQnlOb3RpZnlGcmVxdWVuY3lPaWQgT0lEIgorLklQICJkZWxpdmVyQnlOb3RpZnlNZXNzYWdlTnVtYmVyT2lkIE9JRCIKKy5JUCAiZGVsaXZlckJ5Tm90aWZ5TWF4TWVzc2FnZU51bWJlck9pZCBPSUQiCitUaGVzZSBzZXQgdGhlIGRhdGEgT0lEIHRoYXQgdGhlIG5vdGlmaWNhdGlvbiB3aWxsIGJlIHNlbnQgdW5kZXIsIHRoZQorc2NhbGFyIE9JRCwgdGhlIG1lc3NhZ2UgbnVtYmVyIE9JRCwgYW5kIHRoZSBtYXhpbXVtIG1lc3NhZ2UgbnVtYmVyCitPSUQuICBUaGVzZSBkZWZhdWx0IHRvIG9iamVjdHMgaW4gdGhlIE5FVFwtU05NUFwtUEVSSU9ESUNcLU5PVElGWVwtTUlCLgogLlNIICJFWFRFTkRJTkcgQUdFTlQgRlVOQ1RJT05BTElUWSIKIE9uZSBvZiB0aGUgZmlyc3QgZGlzdGluZ3Vpc2hpbmcgZmVhdHVyZXMgb2YgdGhlIG9yaWdpbmFsIFVDRCBzdWl0ZSB3YXMKIHRoZSBhYmlsaXR5IHRvIGV4dGVuZCB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgYWdlbnQgLSBub3QganVzdCBieQpAQCAtMTE1NSw3ICsxMjM2LDcgQEAKIFNOTVAgb3BlcmF0aW9ucywgb3IgY29uZm9ybSB0byBhbnkgcGFydGljdWxhciBiZWhhdmlvdXIgLSB0aGUgTUlCCiBzdHJ1Y3R1cmVzIGFyZSBkZXNpZ25lZCB0byBhY2NvbW1vZGF0ZSBhbnkgZm9ybSBvZiBjb21tYW5kIG91dHB1dC4KIFVzZSBvZiB0aGlzIG1lY2hhbmlzbSByZXF1aXJlcyB0aGF0IHRoZSBhZ2VudCB3YXMgYnVpbHQgd2l0aCBzdXBwb3J0IGZvciB0aGUKLVxmSXVjZC1zbm1wL2V4dGVuc2libGVcZlIgYW5kL29yIFxmSWFnZW50L2V4dGVuZFxmUiBtb2R1bGVzICh3aGljaAorXGZJdWNkXC1zbm1wL2V4dGVuc2libGVcZlIgYW5kL29yIFxmSWFnZW50L2V4dGVuZFxmUiBtb2R1bGVzICh3aGljaAogYXJlIGJvdGggaW5jbHVkZWQgYXMgcGFydCBvZiB0aGUgZGVmYXVsdCBidWlsZCBjb25maWd1cmF0aW9uKS4KIC5JUCAiZXhlYyBbTUlCT0lEXSBOQU1FIFBST0cgQVJHUyIKIC5JUCAic2ggW01JQk9JRF0gTkFNRSBQUk9HIEFSR1MiCkBAIC0xMjI5LDcgKzEzMTAsNyBAQAogXGZJZXh0ZW5kXGZSIGVudHJ5LCBhbmQgY2FuIGFwcGVhciBvbiBpdHMgb3duLgogLlBQCiBCb3RoIFxmSWV4dGVuZFxmUiBhbmQgXGZJZXh0ZW5kZml4XGZSIGRpcmVjdGl2ZXMgY2FuIGJlIGNvbmZpZ3VyZWQKLWR5bmFtaWNhbGx5LCB1c2luZyBTTk1QIFNFVCByZXF1ZXN0cyB0byB0aGUgTkVULVNOTVAtRVhURU5ELU1JQi4KK2R5bmFtaWNhbGx5LCB1c2luZyBTTk1QIFNFVCByZXF1ZXN0cyB0byB0aGUgTkVUXC1TTk1QXC1FWFRFTkRcLU1JQi4KIC5TUyAiTUlCLVNwZWNpZmljIEV4dGVuc2lvbiBDb21tYW5kcyIKIFRoZSBmaXJzdCBncm91cCBvZiBleHRlbnNpb24gZGlyZWN0aXZlcyBpbnZva2UgYXJiaXRyYXJ5IGNvbW1hbmRzLAogYW5kIHJlbHkgb24gdGhlIE1JQiBzdHJ1Y3R1cmUgKGFuZCBtYW5hZ2VtZW50IGFwcGxpY2F0aW9ucykgaGF2aW5nCkBAIC0xMjQwLDE3ICsxMzIxLDE3IEBACiBUaGUgcmVtYWluaW5nIGV4dGVuc2lvbiBtZWNoYW5pc21zIGFyZSBhbGwgY29uY2VybmVkIHdpdGggc3VjaAogTUlCLXNwZWNpZmljIHNpdHVhdGlvbnMgLSBzdGFydGluZyB3aXRoICJwYXNzLXRocm91Z2giIHNjcmlwdHMuCiBVc2Ugb2YgdGhpcyBtZWNoYW5pc20gcmVxdWlyZXMgdGhhdCB0aGUgYWdlbnQgd2FzIGJ1aWx0IHdpdGggc3VwcG9ydCBmb3IgdGhlCi1cZkl1Y2Qtc25tcC9wYXNzXGZSIGFuZCBcZkl1Y2Qtc25tcC9wYXNzX3BlcnNpc3RcZlIgbW9kdWxlcyAod2hpY2gKK1xmSXVjZFwtc25tcC9wYXNzXGZSIGFuZCBcZkl1Y2RcLXNubXAvcGFzc19wZXJzaXN0XGZSIG1vZHVsZXMgKHdoaWNoCiBhcmUgYm90aCBpbmNsdWRlZCBhcyBwYXJ0IG9mIHRoZSBkZWZhdWx0IGJ1aWxkIGNvbmZpZ3VyYXRpb24pLgotLklQICJwYXNzIFstcCBwcmlvcml0eV0gTUlCT0lEIFBST0ciCisuSVAgInBhc3MgW1wtcCBwcmlvcml0eV0gTUlCT0lEIFBST0ciCiB3aWxsIHBhc3MgY29udHJvbCBvZiB0aGUgc3VidHJlZSByb290ZWQgYXQgTUlCT0lEIHRvIHRoZSBzcGVjaWZpZWQKIFBST0cgY29tbWFuZC4gIEdFVCBhbmQgR0VUTkVYVCByZXF1ZXN0cyBmb3IgT0lEcyB3aXRoaW4gdGhpcyB0cmVlIHdpbGwKIHRyaWdnZXIgdGhpcyBjb21tYW5kLCBjYWxsZWQgYXM6CiAuUlMKIC5JUAotUFJPRyAtZyBPSUQKK1BST0cgXC1nIE9JRAogLklQCi1QUk9HIC1uIE9JRAorUFJPRyBcLW4gT0lECiAuUkUKIC5JUAogcmVzcGVjdGl2ZWx5LCB3aGVyZSBPSUQgaXMgdGhlIHJlcXVlc3RlZCBPSUQuCkBAIC0xMjc4LDcgKzEzNTksNyBAQAogQSBTRVQgcmVxdWVzdCB3aWxsIHJlc3VsdCBpbiB0aGUgY29tbWFuZCBiZWluZyBjYWxsZWQgYXM6CiAuUlMKIC5JUAotUFJPRyAtcyBPSUQgVFlQRSBWQUxVRQorUFJPRyBcLXMgT0lEIFRZUEUgVkFMVUUKIC5SRQogLklQCiB3aGVyZSBUWVBFIGlzIG9uZSBvZiB0aGUgdG9rZW5zIGxpc3RlZCBhYm92ZSwgaW5kaWNhdGluZyB0aGUgdHlwZSBvZiB0aGUKQEAgLTEzMTIsOSArMTM5Myw5IEBACiBhIHNlcGFyYXRlIGludm9jYXRpb24gb2YgdGhlIGNvbW1hbmQuCiAuSVAKIFRoZSBkZWZhdWx0IHJlZ2lzdHJhdGlvbiBwcmlvcml0eSBpcyAxMjcuICBUaGlzIGNhbiBiZQotY2hhbmdlZCBieSBzdXBwbHlpbmcgdGhlIG9wdGlvbmFsIC1wIGZsYWcsIHdpdGggbG93ZXIgcHJpb3JpdHkKK2NoYW5nZWQgYnkgc3VwcGx5aW5nIHRoZSBvcHRpb25hbCBcLXAgZmxhZywgd2l0aCBsb3dlciBwcmlvcml0eQogcmVnaXN0cmF0aW9ucyBiZWluZyB1c2VkIGluIHByZWZlcmVuY2UgdG8gaGlnaGVyIHByaW9yaXR5IHZhbHVlcy4KLS5JUCAicGFzc19wZXJzaXN0IFstcCBwcmlvcml0eV0gTUlCT0lEIFBST0ciCisuSVAgInBhc3NfcGVyc2lzdCBbXC1wIHByaW9yaXR5XSBNSUJPSUQgUFJPRyIKIHdpbGwgYWxzbyBwYXNzIGNvbnRyb2wgb2YgdGhlIHN1YnRyZWUgcm9vdGVkIGF0IE1JQk9JRCB0byB0aGUgc3BlY2lmaWVkCiBQUk9HIGNvbW1hbmQuICBIb3dldmVyIHRoaXMgY29tbWFuZCB3aWxsIGNvbnRpbnVlIHRvIHJ1biBhZnRlciB0aGUgaW5pdGlhbAogcmVxdWVzdCBoYXMgYmVlbiBhbnN3ZXJlZCwgc28gc3Vic2VxdWVudCByZXF1ZXN0cyBjYW4gYmUgcHJvY2Vzc2VkIHdpdGhvdXQKQEAgLTEzMzcsMTggKzE0MTgsMTggQEAKIElmIHRoZSBhc3NpZ25tZW50IGlzIHN1Y2Nlc3NmdWwsIHRoZSBjb21tYW5kIHNob3VsZCBwcmludAogIkRPTkVcXG4iIHRvIHN0ZG91dC4KIEVycm9ycyBzaG91bGQgYmUgaW5kaWNhdGVkIGJ5IHdyaXRpbmcgb25lIG9mIHRoZSBzdHJpbmdzCi0uQiBub3Qtd3JpdGFibGUsIAotLkIgd3JvbmctdHlwZSwKLS5CIHdyb25nLWxlbmd0aCwKLS5CIHdyb25nLXZhbHVlCisuQiBub3RcLXdyaXRhYmxlLCAKKy5CIHdyb25nXC10eXBlLAorLkIgd3JvbmdcLWxlbmd0aCwKKy5CIHdyb25nXC12YWx1ZQogb3IKLS5CIGluY29uc2lzdGVudC12YWx1ZQorLkIgaW5jb25zaXN0ZW50XC12YWx1ZQogdG8gc3Rkb3V0LAogYW5kIHRoZSBhZ2VudCB3aWxsIGdlbmVyYXRlIHRoZSBhcHByb3ByaWF0ZSBlcnJvciByZXNwb25zZS4KIEluIGVpdGhlciBjYXNlLCB0aGUgY29tbWFuZCBzaG91bGQgY29udGludWUgcnVubmluZy4KIC5JUAogVGhlIHJlZ2lzdHJhdGlvbiBwcmlvcml0eSBjYW4gYmUgY2hhbmdlZCB1c2luZyB0aGUgb3B0aW9uYWwKLS1wIGZsYWcsIGp1c3QgYXMgZm9yIHRoZSBcZklwYXNzXGZSIGRpcmVjdGl2ZS4KK1wtcCBmbGFnLCBqdXN0IGFzIGZvciB0aGUgXGZJcGFzc1xmUiBkaXJlY3RpdmUuCiAuUFAKIFxmSXBhc3NcZlIgYW5kIFxmSXBhc3NfcGVyc2lzdFxmUiBleHRlbnNpb25zIGNhbiBvbmx5IGJlIGNvbmZpZ3VyZWQgdmlhIHRoZQogc25tcGQuY29uZiBmaWxlLiAgVGhleSBjYW5ub3QgYmUgc2V0IHVwIHZpYSBTTk1QIFNFVCByZXF1ZXN0cy4KQEAgLTEzNjYsNyArMTQ0Nyw3IEBACiAuUFAKIFVzZSBvZiB0aGlzIG1lY2hhbmlzbSByZXF1aXJlcyB0aGF0IHRoZSBhZ2VudCB3YXMgYnVpbHQgd2l0aCBzdXBwb3J0IGZvciB0aGUgZW1iZWRkZWQKIHBlcmwgbWVjaGFuaXNtLCB3aGljaCBpcyBub3QgcGFydCBvZiB0aGUgZGVmYXVsdCBidWlsZCBlbnZpcm9ubWVudC4gSXQKLW11c3QgYmUgZXhwbGljaXRseSBpbmNsdWRlZCBieSBzcGVjaWZ5aW5nIHRoZSAnLS1lbmFibGUtZW1iZWRkZWQtcGVybCcKK211c3QgYmUgZXhwbGljaXRseSBpbmNsdWRlZCBieSBzcGVjaWZ5aW5nIHRoZSAnXC1cLWVuYWJsZVwtZW1iZWRkZWRcLXBlcmwnCiBvcHRpb24gdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQgd2hlbiB0aGUgcGFja2FnZSBpcyBmaXJzdCBidWlsdC4KIC5QUAogSWYgZW5hYmxlZCwgdGhlIGZvbGxvd2luZyBkaXJlY3RpdmVzIHdpbGwgYmUgcmVjb2duaXNlZDoKQEAgLTEzOTEsNyArMTQ3Miw3IEBACiAubmYKIFxmQ3BlcmwgdXNlIERhdGE6OkR1bXBlcjsKIHBlcmwgc3ViIG15cm91dGluZSAgeyBwcmludCAiZ290IGNhbGxlZDogIixEdW1wZXIoQF8pLCJcXG4iOyB9Ci1wZXJsICRhZ2VudC0+cmVnaXN0ZXIoJ215bGluaycsICcuMS4zLjYuMS44NzY1JywgXFwmbXlyb3V0aW5lKTtcZlIKK3BlcmwgJGFnZW50XC0+cmVnaXN0ZXIoJ215bGluaycsICcuMS4zLjYuMS44NzY1JywgXFwmbXlyb3V0aW5lKTtcZlIKIC5maQogLlJFCiAuUkUKQEAgLTE0MTMsNyArMTQ5NCw3IEBACiB3aGVuIHRoZSBzdWl0ZSB3YXMgZmlyc3QgYnVpbHQuICBTdWNoIGltcGxlbWVudGF0aW9uIG1vZHVsZXMgY2FuIGFsc28gYmUKIGNvbXBpbGVkIGluZGVwZW5kZW50bHkgYW5kIGxvYWRlZCBpbnRvIHRoZSBydW5uaW5nIGFnZW50IG9uY2UgaXQgaGFzCiBzdGFydGVkLiAgVXNlIG9mIHRoaXMgbWVjaGFuaXNtIHJlcXVpcmVzIHRoYXQgdGhlIGFnZW50IHdhcyBidWlsdCB3aXRoIHN1cHBvcnQgZm9yIHRoZQotXGZJdWNkLXNubXAvZGxtb2RcZlIgbW9kdWxlICh3aGljaCBpcyBpbmNsdWRlZCBhcyBwYXJ0IG9mIHRoZSBkZWZhdWx0CitcZkl1Y2RcLXNubXAvZGxtb2RcZlIgbW9kdWxlICh3aGljaCBpcyBpbmNsdWRlZCBhcyBwYXJ0IG9mIHRoZSBkZWZhdWx0CiBidWlsZCBjb25maWd1cmF0aW9uKS4KIC5JUCAiZGxtb2QgTkFNRSBQQVRIIgogd2lsbCBsb2FkIHRoZSBzaGFyZWQgb2JqZWN0IG1vZHVsZSBmcm9tIHRoZSBmaWxlIFBBVEggKGFuIGFic29sdXRlCkBAIC0xNDI2LDcgKzE1MDcsNyBAQAogLlJFCiAuUFAKIFRoaXMgZnVuY3Rpb25hbGl0eSBjYW4gYWxzbyBiZSBjb25maWd1cmVkIHVzaW5nIFNOTVAgU0VUIHJlcXVlc3RzCi10byB0aGUgVUNELURMTU9ELU1JQi4KK3RvIHRoZSBVQ0RcLURMTU9EXC1NSUIuCiAuU1MgIlByb3h5IFN1cHBvcnQiCiBBbm90aGVyIG1lY2hhbmlzbSBmb3IgZXh0ZW5kaW5nIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBhZ2VudAogaXMgdG8gcGFzcyBzZWxlY3RlZCByZXF1ZXN0cyAob3Igc2VsZWN0ZWQgdmFyYmluZHMpIHRvIGFub3RoZXIKQEAgLTE0MzUsOSArMTUxNiw5IEBACiBUaGlzIGNhbiBiZSB2aWV3ZWQgZWl0aGVyIGFzIHRoZSBtYWluIGFnZW50IGRlbGVnYXRpbmcgcmVxdWVzdHMgdG8KIHRoZSByZW1vdGUgb25lLCBvciBhY3RpbmcgYXMgYSBwcm94eSBmb3IgaXQuCiBVc2Ugb2YgdGhpcyBtZWNoYW5pc20gcmVxdWlyZXMgdGhhdCB0aGUgYWdlbnQgd2FzIGJ1aWx0IHdpdGggc3VwcG9ydCBmb3IgdGhlCi1cZkl1Y2Qtc25tcC9wcm94eVxmUiBtb2R1bGUgKHdoaWNoIGlzIGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlCitcZkl1Y2RcLXNubXAvcHJveHlcZlIgbW9kdWxlICh3aGljaCBpcyBpbmNsdWRlZCBhcyBwYXJ0IG9mIHRoZQogZGVmYXVsdCBidWlsZCBjb25maWd1cmF0aW9uKS4KLS5JUCAicHJveHkgWy1DbiBDT05URVhUTkFNRV0gW1NOTVBDTURfQVJHU10gSE9TVCBPSUQgW1JFTU9URU9JRF0iCisuSVAgInByb3h5IFtcLUNuIENPTlRFWFROQU1FXSBbU05NUENNRF9BUkdTXSBIT1NUIE9JRCBbUkVNT1RFT0lEXSIKIHdpbGwgcGFzcyBhbnkgaW5jb21pbmcgcmVxdWVzdHMgdW5kZXIgT0lEIHRvIHRoZSBhZ2VudCBsaXN0ZW5pbmcKIG9uIHRoZSBwb3J0IHNwZWNpZmllZCBieSB0aGUgdHJhbnNwb3J0IGFkZHJlc3MgSE9TVC4KIFNlZSB0aGUgc2VjdGlvbiAKQEAgLTE0NzYsNyArMTU1Nyw3IEBACiB3aXRoIFNNVVgtYmFzZWQgc3ViYWdlbnRzIChzdWNoIGFzIFxmSWdhdGVkXGZSLCBcZkl6ZWJyYVxmUiBvciBcZklxdWFnZ2FcZlIpLgogVXNlIG9mIHRoaXMgbWVjaGFuaXNtIHJlcXVpcmVzIHRoYXQgdGhlIGFnZW50IHdhcyBidWlsdCB3aXRoIHN1cHBvcnQgZm9yIHRoZQogXGZJc211eFxmUiBtb2R1bGUsIHdoaWNoIGlzIG5vdCBwYXJ0IG9mIHRoZSBkZWZhdWx0IGJ1aWxkIGVudmlyb25tZW50LCBhbmQKLW11c3QgYmUgZXhwbGljaXRseSBpbmNsdWRlZCBieSBzcGVjaWZ5aW5nIHRoZSAnLS13aXRoLW1pYi1tb2R1bGVzPXNtdXgnCittdXN0IGJlIGV4cGxpY2l0bHkgaW5jbHVkZWQgYnkgc3BlY2lmeWluZyB0aGUgJ1wtXC13aXRoXC1taWJcLW1vZHVsZXM9c211eCcKIG9wdGlvbiB0byB0aGUgY29uZmlndXJlIHNjcmlwdCB3aGVuIHRoZSBwYWNrYWdlIGlzIGZpcnN0IGJ1aWx0LgogLlJTCiAuSVAgIk5vdGU6IgpAQCAtMTUwMyw3ICsxNTg0LDcgQEAKIC5JUCAic211eHNvY2tldCA8SVB2NC1hZGRyZXNzPiIKIGRlZmluZXMgdGhlIElQdjQgYWRkcmVzcyBmb3IgU01VWCBwZWVycyB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBOZXQtU05NUCBhZ2VudC4KIFRoZSBkZWZhdWx0IGlzIHRvIGxpc3RlbiBvbiBhbGwgSVB2NCBpbnRlcmZhY2VzICgiMC4wLjAuMCIpLCB1bmxlc3MgdGhlIAotcGFja2FnZSBoYXMgYmVlbiBjb25maWd1cmVkIHdpdGggIi0tZW5hYmxlLWxvY2FsLXNtdXgiIGF0IGJ1aWxkIHRpbWUsIHdoaWNoIAorcGFja2FnZSBoYXMgYmVlbiBjb25maWd1cmVkIHdpdGggIlwtXC1lbmFibGVcLWxvY2FsXC1zbXV4IiBhdCBidWlsZCB0aW1lLCB3aGljaCAKIGNhdXNlcyBpdCB0byBvbmx5IGxpc3RlbiBvbiAxMjcuMC4wLjEgYnkgZGVmYXVsdC4gU01VWCB1c2VzIHRoZSB3ZWxsLWtub3duCiBUQ1AgcG9ydCAxOTkuCiAuUFAKQEAgLTE1MjIsNyArMTYwMyw3IEBACiAuSVAgIm1hc3RlciBhZ2VudHgiCiB3aWxsIGVuYWJsZSB0aGUgQWdlbnRYIGZ1bmN0aW9uYWxpdHkgYW5kIGNhdXNlIHRoZSBhZ2VudCB0bwogc3RhcnQgbGlzdGVuaW5nIGZvciBpbmNvbWluZyBBZ2VudFggcmVnaXN0cmF0aW9ucy4KLVRoaXMgY2FuIGFsc28gYmUgYWN0aXZhdGVkIGJ5IHNwZWNpZnlpbmcgdGhlICcteCcgY29tbWFuZC1saW5lCitUaGlzIGNhbiBhbHNvIGJlIGFjdGl2YXRlZCBieSBzcGVjaWZ5aW5nIHRoZSAnXC14JyBjb21tYW5kLWxpbmUKIG9wdGlvbiAodG8gc3BlY2lmeSBhbiBhbHRlcm5hdGl2ZSBsaXN0ZW5pbmcgc29ja2V0KS4KIC5JUCAiYWdlbnRYUGVybXMgU09DS1BFUk1TIFtESVJQRVJNUyBbVVNFUnxVSUQgW0dST1VQfEdJRF1dXSIKIERlZmluZXMgdGhlIHBlcm1pc3Npb25zIGFuZCBvd25lcnNoaXAgb2YgdGhlIEFnZW50WCBVbml4IERvbWFpbiBzb2NrZXQsCkBAIC0xNTUzLDExICsxNjM0LDEzIEBACiAuUlMKIC5JUCAiTm90ZToiCiBTcGVjaWZ5aW5nIGFuIEFnZW50WCBzb2NrZXQgZG9lcyBcZkJub3RcZlIgYXV0b21hdGljYWxseSBlbmFibGUKLUFnZW50WCBmdW5jdGlvbmFsaXR5ICh1bmxpa2UgdGhlICcteCcgY29tbWFuZC1saW5lIG9wdGlvbikuCitBZ2VudFggZnVuY3Rpb25hbGl0eSAodW5saWtlIHRoZSAnXC14JyBjb21tYW5kLWxpbmUgb3B0aW9uKS4KIC5SRQogLklQICJhZ2VudFhUaW1lb3V0IE5VTSIKIGRlZmluZXMgdGhlIHRpbWVvdXQgcGVyaW9kIChOVU0gc2Vjb25kcykgZm9yIGFuIEFnZW50WCByZXF1ZXN0LgotRGVmYXVsdCBpcyAxIHNlY29uZC4KK0RlZmF1bHQgaXMgMSBzZWNvbmQuICBOVU0gYWxzbyBiZSBzcGVjaWZpZWQgd2l0aCBhIHN1ZmZpeCBvZiBvbmUgb2YgcworKGZvciBzZWNvbmRzKSwgbSAoZm9yIG1pbnV0ZXMpLCBoIChmb3IgaG91cnMpLCBkIChmb3IgZGF5cyksIG9yIHcgKGZvcgord2Vla3MpLgogLklQICJhZ2VudFhSZXRyaWVzIE5VTSIKIGRlZmluZXMgdGhlIG51bWJlciBvZiByZXRyaWVzIGZvciBhbiBBZ2VudFggcmVxdWVzdC4KIERlZmF1bHQgaXMgNSByZXRyaWVzLgpAQCAtMTU2NSw5ICsxNjQ4LDkgQEAKIG5ldC1zbm1wIHNoaXBzIHdpdGggYm90aCBDIGFuZCBQZXJsIEFQSXMgdG8gZGV2ZWxvcCB5b3VyIG93biBBZ2VudFgKIHN1YmFnZW50LgogLlNIICJPVEhFUiBDT05GSUdVUkFUSU9OIgotLklQICJvdmVycmlkZSBbLXJ3XSBPSUQgVFlQRSBWQUxVRSIKKy5JUCAib3ZlcnJpZGUgW1wtcnddIE9JRCBUWVBFIFZBTFVFIgogVGhpcyBkaXJlY3RpdmUgYWxsb3dzIHlvdSB0byBvdmVycmlkZSBhIHBhcnRpY3VsYXIgT0lEIHdpdGggYQotZGlmZmVyZW50IHZhbHVlIChhbmQgcG9zc2libHkgYSBkaWZmZXJlbnQgdHlwZSBvZiB2YWx1ZSkuICBUaGUgLXJ3CitkaWZmZXJlbnQgdmFsdWUgKGFuZCBwb3NzaWJseSBhIGRpZmZlcmVudCB0eXBlIG9mIHZhbHVlKS4gIFRoZSBcLXJ3CiBmbGFnIHdpbGwgYWxsb3cgc25tcCBTRVRzIHRvIG1vZGlmeSBpdCdzIHZhbHVlIGFzIHdlbGwuIChub3RlIHRoYXQgaWYKIHlvdSdyZSBvdmVycmlkaW5nIG9yaWdpbmFsIGZ1bmN0aW9uYWxpdHksIHRoYXQgZnVuY3Rpb25hbGl0eSB3aWxsIGJlCiBlbnRpcmVseSBsb3N0LiAgVGh1cyBTRVRTIHdpbGwgZG8gbm90aGluZyBtb3JlIHRoYW4gbW9kaWZ5IHRoZQpAQCAtMTU5OSw4ICsxNjgyLDggQEAKIElmIHlvdSdyZSB0cnlpbmcgdG8gZmlndXJlIG91dCBhc3BlY3RzIG9mIHRoZSB2YXJpb3VzIG1pYiBtb2R1bGVzCiAocG9zc2libHkgc29tZSB0aGF0IHlvdSd2ZSBhZGRlZCB5b3Vyc2VsZiksIHRoZSBmb2xsb3dpbmcgbWF5IGhlbHAgeW91CiBzcGl0IG91dCBzb21lIHVzZWZ1bCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24uICBGaXJzdCBvZmYsIHBsZWFzZSByZWFkCi10aGUgc25tcGQgbWFudWFsIHBhZ2Ugb24gdGhlIC1EIGZsYWcuICBUaGVuIHRoZSBmb2xsb3dpbmcKLWNvbmZpZ3VyYXRpb24gc25tcGQuY29uZiB0b2tlbiwgY29tYmluZWQgd2l0aCB0aGUgLUQgZmxhZywgY2FuIHByb2R1Y2UKK3RoZSBzbm1wZCBtYW51YWwgcGFnZSBvbiB0aGUgXC1EIGZsYWcuICBUaGVuIHRoZSBmb2xsb3dpbmcKK2NvbmZpZ3VyYXRpb24gc25tcGQuY29uZiB0b2tlbiwgY29tYmluZWQgd2l0aCB0aGUgXC1EIGZsYWcsIGNhbiBwcm9kdWNlCiB1c2VmdWwgb3V0cHV0OgogLklQICJpbmplY3RIYW5kbGVyIEhBTkRMRVIgbW9kdWxlbmFtZSBbYmVmb3JlVGhpc10iCiBUaGlzIHdpbGwgaW5zZXJ0IG5ldyBoYW5kbGVycyBpbnRvIHRoZSBzZWN0aW9uIG9mIHRoZSBtaWIgdHJlZQpAQCAtMTYyOSw3ICsxNzEyLDcgQEAKIAogLklQIGRlYnVnCiBQcmludHMgb3V0IGxvdHMgb2YgZGVidWdnaW5nIGluZm9ybWF0aW9uIHdoZW4KLXRoZSAtRGhlbHBlcjpkZWJ1ZyBmbGFnIGlzIHBhc3NlZCB0byB0aGUgc25tcGQKK3RoZSBcLURoZWxwZXI6ZGVidWcgZmxhZyBpcyBwYXNzZWQgdG8gdGhlIHNubXBkCiBhcHBsaWNhdGlvbi4KIAogLklQIHJlYWRfb25seQpAQCAtMTY2NCw4ICsxNzQ3LDggQEAKIC5JUCBvCiBUaGUgTmV0LVNOTVAgYWdlbnQgY2FuIGJlIGluc3RydWN0ZWQgdG8gcmUtcmVhZCB0aGUgdmFyaW91cyBjb25maWd1cmF0aW9uIGZpbGVzLAogZWl0aGVyIHZpYSBhbiBcZkJzbm1wc2V0XGZSIGFzc2lnbm1lbnQgb2YgaW50ZWdlcigxKSB0bwotXGZDVUNELVNOTVAtTUlCOjp2ZXJzaW9uVXBkYXRlQ29uZmlnLjBcZlIgKC4xLjMuNi4xLjQuMS4yMDIxLjEwMC4xMS4wKSwKLW9yIGJ5IHNlbmRpbmcgYSBcZkJraWxsIC1IVVBcZlIgc2lnbmFsIHRvIHRoZSBhZ2VudCBwcm9jZXNzLgorXGZDVUNEXC1TTk1QXC1NSUI6OnZlcnNpb25VcGRhdGVDb25maWcuMFxmUiAoLjEuMy42LjEuNC4xLjIwMjEuMTAwLjExLjApLAorb3IgYnkgc2VuZGluZyBhIFxmQmtpbGwgXC1IVVBcZlIgc2lnbmFsIHRvIHRoZSBhZ2VudCBwcm9jZXNzLgogLklQIG8KIEFsbCBkaXJlY3RpdmVzIGxpc3RlZCB3aXRoIGEgdmFsdWUgb2YgInllcyIgYWN0dWFsbHkgYWNjZXB0IGEgcmFuZ2UKIG9mIGJvb2xlYW4gdmFsdWVzLiAgVGhlc2Ugd2lsbCBhY2NlcHQgYW55IG9mIFxmSTFcZlIsIFxmSXllc1xmUiBvcgpkaWZmIC0tZ2l0IGEvbWFuL3NubXBkLmV4YW1wbGVzLjUuZGVmIGIvbWFuL3NubXBkLmV4YW1wbGVzLjUuZGVmCmluZGV4IDk3ZjlkOWMuLjM2MDI4NjkgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wZC5leGFtcGxlcy41LmRlZgorKysgYi9tYW4vc25tcGQuZXhhbXBsZXMuNS5kZWYKQEAgLTEwNCw3ICsxMDQsNyBAQAogUEVSU0lTVEVOVF9ESVJFQ1RPUlkvc25tcGQuY29uZiBmaWxlLCByYXRoZXIgdGhhbiB0aGUgdXN1YWwgbG9jYXRpb24uCiAuUkUKIC5cIgotLlwiICA/Pz8gSWxsdXN0cmF0ZSAiLWUiLCAiLWwiIGFuZCAiLW0iIGZvcm1zID8/CisuXCIgID8/PyBJbGx1c3RyYXRlICJcLWUiLCAiXC1sIiBhbmQgIlwtbSIgZm9ybXMgPz8KIC5cIgogLlNTIFRyYWRpdGlvbmFsIEFjY2VzcyBDb250cm9sCiBUaGUgU05NUHYzIHVzZXJzIGRlZmluZWQgYWJvdmUgY2FuIGJlIGdyYW50ZWQgYWNjZXNzIHRvIHRoZSBmdWxsCkBAIC0yMTksNyArMjE5LDcgQEAKIHZpZXcgICBzeXMyVmlldyBpbmNsdWRlZCAgICBzeXN0ZW0KIHZpZXcgICBzeXMyVmlldyBpbmNsdWRlZCAgICAuMS4zLjYuMS4yLjEuMjUuMQogCi1hdXRoY29tbXVuaXR5IHJlYWQgICAgICAgcHVibGljICBkZWZhdWx0ICAgICAgLXYgc3lzMlZpZXcKK2F1dGhjb21tdW5pdHkgcmVhZCAgICAgICBwdWJsaWMgIGRlZmF1bHQgICAgICBcLXYgc3lzMlZpZXcKIGF1dGhjb21tdW5pdHkgcmVhZCx3cml0ZSBwcml2YXRlIDEwLjEwLjEwLjAvOAogLmZpCiAuUkUKQEAgLTIzOCwxMiArMjM4LDEyIEBACiBjYW4gYmUgZXhwbGljaXRseSBjb25maWd1cmVkIHVzaW5nOgogLlJTCiAubmYKLVxmSSMgT3ZlcnJpZGUgJ3VuYW1lIC1hJyBhbmQgaGFyZGNvZGVkIHN5c3RlbSBPSUQgLSBpbmhlcmVudGx5IHJlYWQtb25seSB2YWx1ZXNcZlIKK1xmSSMgT3ZlcnJpZGUgJ3VuYW1lIFwtYScgYW5kIGhhcmRjb2RlZCBzeXN0ZW0gT0lEIC0gaW5oZXJlbnRseSByZWFkLW9ubHkgdmFsdWVzXGZSCiBzeXNEZXNjciAgICAgVW5pdmVyc2FsIFR1cmluZyBNYWNoaW5lIG1rIEkKIHN5c09iamVjdElEICAuMS4zLjYuMS40LjEuODA3Mi4zLjIuMTA2NgogCiBcZkkjIE92ZXJyaWRlIGRlZmF1bHQgdmFsdWVzIGZyb20gJ2NvbmZpZ3VyZScgLSBtYWtlcyB0aGVzZSBvYmplY3RzIHJlYWQtb25seVxmUgotc3lzQ29udGFjdCAgIEFsYW4uVHVyaW5nQHByZS1jcy5tYW4uYWMudWsKK3N5c0NvbnRhY3QgICBBbGFuLlR1cmluZ0BwcmVcLWNzLm1hbi5hYy51awogc3lzTmFtZSAgICAgIHRvcnRvaXNlLnR1cmluZy5jb20KIHN5c0xvY2F0aW9uICBBbiBpZGVhIGluIHRoZSBtaW5kIG9mIEFUCiAKQEAgLTI2Miw3ICsyNjIsNyBAQAogLlJTCiAubmYKIGlnbm9yZWRpc2sgL2Rldi9yZHNrL2MwdFshNl1kMAotaWdub3JlZGlzayAvZGV2L3Jkc2svYzB0WzAtNTctOWEtZl1kMAoraWdub3JlZGlzayAvZGV2L3Jkc2svYzB0WzBcLTU3XC05YVwtZl1kMAogLmZpCiAuUkUKIGVpdGhlciBvZiB3aGljaCBwcmV2ZW50cyBhbGwgZGV2aWNlcyBcZkkvZGV2L3Jkc2svYzB0XGZSWFxmSWQwXGZSCkBAIC0zODgsNyArMzg4LDcgQEAKIC5QUAogQSBtb3JlIGRldGFpbGVkIG1vbml0b3IgZXhhbXBsZSBpcyBnaXZlbiBieToKIC5SUwotbW9uaXRvciAtdSBtZSAtbyBoclNXUnVuTmFtZSAiaGlnaCBwcm9jZXNzIG1lbW9yeSIgaHJTV1J1blBlcmZNZW0gPiAxMDAwMAorbW9uaXRvciBcLXUgbWUgXC1vIGhyU1dSdW5OYW1lICJoaWdoIHByb2Nlc3MgbWVtb3J5IiBoclNXUnVuUGVyZk1lbSA+IDEwMDAwCiAuUkUKIC5QUAogVGhpcyBkZWZpbmVzIGFuIGV4cGxpY2l0IGJvb2xlYW4gbW9uaXRvciBlbnRyeSwgbG9va2luZyBmb3IgYW55IHByb2Nlc3MKQEAgLTQwMiw3ICs0MDIsNyBAQAogT2JqZWN0cyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGZsdWN0dWF0ZSBhcm91bmQgdGhlIHNwZWNpZmllZCBsZXZlbAogYXJlIGJldHRlciBtb25pdG9yZWQgdXNpbmcgYSB0aHJlc2hvbGQgbW9uaXRvciBlbnRyeTogCiAuUlMKLW1vbml0b3IgLUQgLXIgMTAgIm5ldHdvcmsgdHJhZmZpYyIgaWZJbk9jdGV0cyAxMDAwMDAwIDUwMDAwMDAKK21vbml0b3IgXC1EIFwtciAxMCAibmV0d29yayB0cmFmZmljIiBpZkluT2N0ZXRzIDEwMDAwMDAgNTAwMDAwMAogLlJFCiAuUFAKIFRoaXMgd2lsbCBzZW5kIGEgXGZDbXRlVHJpZ2dlclJpc2luZ1xmUiB0cmFwIHdoZW5ldmVyIHRoZSBpbmNvbWluZwpAQCAtNDEwLDExICs0MTAsMTEgQEAKIGFuZCBhIGNvcnJlc3BvbmRpbmcgXGZDbXRlVHJpZ2dlckZhbGxpbmdcZlIgdHJhcCB3aGVuIGl0IGZhbGxzIGJlbG93CiAxMDAga0IvcyBhZ2Fpbi4KIC5QUAotTm90ZSB0aGF0IHRoaXMgbW9uaXRvcnMgdGhlIGRlbHRhcyBiZXR3ZWVuIHN1Y2Nlc3NpdmUgc2FtcGxlcyAoXGZJLURcZlIpCitOb3RlIHRoYXQgdGhpcyBtb25pdG9ycyB0aGUgZGVsdGFzIGJldHdlZW4gc3VjY2Vzc2l2ZSBzYW1wbGVzIChcZklcLURcZlIpCiByYXRoZXIgdGhhbiB0aGUgYWN0dWFsIHNhbXBsZSB2YWx1ZXMgdGhlbXNlbHZlcy4gIFRoZSBzYW1lIGVmZmVjdAogY291bGQgYmUgb2J0YWluZWQgdXNpbmc6CiAuUlMKLW1vbml0b3IgLXIgMTAgIm5ldHdvcmsgdHJhZmZpYyIgaWZJbk9jdGV0cyAtIC0gMTAwMDAwMCA1MDAwMDAwCittb25pdG9yIFwtciAxMCAibmV0d29yayB0cmFmZmljIiBpZkluT2N0ZXRzIFwtIFwtIDEwMDAwMDAgNTAwMDAwMAogLlJFCiAuUFAKIFRoZSBcZklsaW5rVXBEb3duTm90aWZpY2F0aW9uc1xmUiBkaXJlY3RpdmUgYWJvdmUgaXMgYnJvYWRseQpAQCAtNDI0LDggKzQyNCw4IEBACiBub3RpZmljYXRpb25FdmVudCAgbGlua1VwVHJhcCAgICBsaW5rVXAgICBpZkluZGV4IGlmQWRtaW5TdGF0dXMgaWZPcGVyU3RhdHVzCiBub3RpZmljYXRpb25FdmVudCAgbGlua0Rvd25UcmFwICBsaW5rRG93biBpZkluZGV4IGlmQWRtaW5TdGF0dXMgaWZPcGVyU3RhdHVzCiAKLW1vbml0b3IgIC1yIDYwIC1lIGxpbmtVcFRyYXAgICAiR2VuZXJhdGUgbGlua1VwIiAgIGlmT3BlclN0YXR1cyAhPSAyCi1tb25pdG9yICAtciA2MCAtZSBsaW5rRG93blRyYXAgIkdlbmVyYXRlIGxpbmtEb3duIiBpZk9wZXJTdGF0dXMgPT0gMgorbW9uaXRvciAgXC1yIDYwIFwtZSBsaW5rVXBUcmFwICAgIkdlbmVyYXRlIGxpbmtVcCIgICBpZk9wZXJTdGF0dXMgIT0gMgorbW9uaXRvciAgXC1yIDYwIFwtZSBsaW5rRG93blRyYXAgIkdlbmVyYXRlIGxpbmtEb3duIiBpZk9wZXJTdGF0dXMgPT0gMgogLmZpCiAuUkUKIC5QUApAQCAtNDM3LDEyICs0MzcsMTIgQEAKIG9mIChib29sZWFuKSBtb25pdG9yIGVudHJpZXM6CiAuUlMKIC5uZgotbW9uaXRvcgktbyBwck5hbWVzICAgICAgLW8gcHJFcnJNZXNzYWdlICAicHJvY1RhYmxlIiBwckVycm9yRmxhZyAgICE9IDAKLW1vbml0b3IJLW8gbWVtRXJyb3JOYW1lIC1vIG1lbVN3YXBFcnJvck1zZyAibWVtb3J5IiAgbWVtU3dhcEVycm9yICAhPSAwCi1tb25pdG9yCS1vIGV4dE5hbWVzICAgICAtbyBleHRPdXRwdXQgICAgICJleHRUYWJsZSIgIGV4dFJlc3VsdCAgICAgIT0gMAotbW9uaXRvcgktbyBkc2tQYXRoICAgICAgLW8gZHNrRXJyb3JNc2cgICAiZHNrVGFibGUiICBkc2tFcnJvckZsYWcgICE9IDAKLW1vbml0b3IJLW8gbGFOYW1lcyAgICAgIC1vIGxhRXJyTWVzc2FnZSAgImxhVGFibGUiICAgbGFFcnJvckZsYWcgICAhPSAwCi1tb25pdG9yCS1vIGZpbGVOYW1lICAgICAtbyBmaWxlRXJyb3JNc2cgICJmaWxlVGFibGUiIGZpbGVFcnJvckZsYWcgIT0gMAorbW9uaXRvcglcLW8gcHJOYW1lcyAgICAgIFwtbyBwckVyck1lc3NhZ2UgICJwcm9jVGFibGUiIHByRXJyb3JGbGFnICAgIT0gMAorbW9uaXRvcglcLW8gbWVtRXJyb3JOYW1lIFwtbyBtZW1Td2FwRXJyb3JNc2cgIm1lbW9yeSIgIG1lbVN3YXBFcnJvciAgIT0gMAorbW9uaXRvcglcLW8gZXh0TmFtZXMgICAgIFwtbyBleHRPdXRwdXQgICAgICJleHRUYWJsZSIgIGV4dFJlc3VsdCAgICAgIT0gMAorbW9uaXRvcglcLW8gZHNrUGF0aCAgICAgIFwtbyBkc2tFcnJvck1zZyAgICJkc2tUYWJsZSIgIGRza0Vycm9yRmxhZyAgIT0gMAorbW9uaXRvcglcLW8gbGFOYW1lcyAgICAgIFwtbyBsYUVyck1lc3NhZ2UgICJsYVRhYmxlIiAgIGxhRXJyb3JGbGFnICAgIT0gMAorbW9uaXRvcglcLW8gZmlsZU5hbWUgICAgIFwtbyBmaWxlRXJyb3JNc2cgICJmaWxlVGFibGUiIGZpbGVFcnJvckZsYWcgIT0gMAogLmZpCiAuUkUKIGFuZCB3aWxsIHNlbmQgYSB0cmFwIHdoZW5ldmVyIGFueSBvZiB0aGVzZSBlbnRyaWVzIGluZGljYXRlIGEgcHJvYmxlbS4KQEAgLTQ1Miw3ICs0NTIsNyBAQAogLlJTCiAubmYKIHNldEV2ZW50ICAgcHJGaXhJdCAgcHJFcnJGaXggPSAxCi1tb25pdG9yIC1lIHByRml4SXQgInByb2NUYWJsZSIgcHJFcnJvckZsYWcgICAhPSAwCittb25pdG9yIFwtZSBwckZpeEl0ICJwcm9jVGFibGUiIHByRXJyb3JGbGFnICAgIT0gMAogLmZpCiAuUkUKIChhbmQgc2ltaWxhcmx5IGZvciBhbnkgb2YgdGhlIG90aGVyIFxmSWRlZmF1bHRNb25pdG9yXGZSIGVudHJpZXMpLgpAQCAtNDk0LDEyICs0OTQsMTIgQEAKIC5TUyAiTUlCLVNwZWNpZmljIEV4dGVuc2lvbiBDb21tYW5kcyIKIC5JIE9uZS1TaG90CiAuUlMKLSJwYXNzIFstcCBwcmlvcml0eV0gTUlCT0lEIFBST0ciCisicGFzcyBbXC1wIHByaW9yaXR5XSBNSUJPSUQgUFJPRyIKIC5SRQogLklQCiAuSSBQZXJzaXN0ZW50CiAuUlMKLSJwYXNzX3BlcnNpc3QgWy1wIHByaW9yaXR5XSBNSUJPSUQgUFJPRyIKKyJwYXNzX3BlcnNpc3QgW1wtcCBwcmlvcml0eV0gTUlCT0lEIFBST0ciCiAuUkUKIC5TUyAiRW1iZWRkZWQgUGVybCBTdXBwb3J0IgogSWYgZW1iZWRkZWQgcGVybCBzdXBwb3J0IGlzIGVuYWJsZWQgaW4gdGhlIGFnZW50LCB0aGUgZGVmYXVsdApAQCAtNTE3LDcgKzUxNyw3IEBACiAubmYKIHBlcmwgdXNlIERhdGE6OkR1bXBlcjsKIHBlcmwgc3ViIG15cm91dGluZSAgeyBwcmludCAiZ290IGNhbGxlZDogIixEdW1wZXIoQF8pLCJcXG4iOyB9Ci1wZXJsICRhZ2VudC0+cmVnaXN0ZXIoJ215bGluaycsICcuMS4zLjYuMS44NzY1JywgXFwmbXlyb3V0aW5lKTsKK3BlcmwgJGFnZW50XC0+cmVnaXN0ZXIoJ215bGluaycsICcuMS4zLjYuMS44NzY1JywgXFwmbXlyb3V0aW5lKTsKIC5maQogLlJFCiAuUFAKQEAgLTU0OCwxMSArNTQ4LDExIEBACiBTTk1QIGFnZW50cyAocnVubmluZyBvbiByZW1vdGUgc3lzdGVtcykgbWlnaHQgYmU6CiAuUlMKIC5uZgotY29tMnNlYyAtQ24gcmVtMWNvbnRleHQgIHJlbTF1c2VyIGRlZmF1bHQgIHJlbW90ZWhvc3QxCi1jb20yc2VjIC1DbiByZW0yY29udGV4dCAgcmVtMnVzZXIgZGVmYXVsdCAgcmVtb3RlaG9zdDIKK2NvbTJzZWMgXC1DbiByZW0xY29udGV4dCAgcmVtMXVzZXIgZGVmYXVsdCAgcmVtb3RlaG9zdDEKK2NvbTJzZWMgXC1DbiByZW0yY29udGV4dCAgcmVtMnVzZXIgZGVmYXVsdCAgcmVtb3RlaG9zdDIKIAotcHJveHkgLUNuIHJlbTFjb250ZXh0ICAtdiAxIC1jIHB1YmxpYyAgcmVtb3RlaG9zdDEgIC4xLjMKLXByb3h5IC1DbiByZW0yY29udGV4dCAgLXYgMSAtYyBwdWJsaWMgIHJlbW90ZWhvc3QyICAuMS4zCitwcm94eSBcLUNuIHJlbTFjb250ZXh0ICBcLXYgMSAtYyBwdWJsaWMgIHJlbW90ZWhvc3QxICAuMS4zCitwcm94eSBcLUNuIHJlbTJjb250ZXh0ICBcLXYgMSAtYyBwdWJsaWMgIHJlbW90ZWhvc3QyICAuMS4zCiAuZmkKIC5SRQogKHBsdXMgc3VpdGFibGUgYWNjZXNzIGNvbnRyb2wgZW50cmllcykuCkBAIC01NzIsNyArNTcyLDcgQEAKIG9yIGxpc3RlbmluZyBvbiBhIGRpZmZlcmVudCBwb3J0IG9uIHRoZSBzYW1lIHN5c3RlbSksCiB3aGlsZSBoYW5kbGluZyB0aGUgcmVzdCBpbnRlcm5hbGx5OgogLlJTCi1wcm94eSAtdiAxIC1jIHB1YmxpYyAgbG9jYWxob3N0OjYxNjEgIC4xLjMuNi4xLjQuMS45OQorcHJveHkgXC12IDEgXC1jIHB1YmxpYyAgbG9jYWxob3N0OjYxNjEgIC4xLjMuNi4xLjQuMS45OQogLlJFCiBUaGlzIG1lY2hhbmlzbSBjYW4gYmUgdXNlZCB0byBsaW5rIHRvZ2V0aGVyIHR3byBzZXBhcmF0ZSBTTk1QIGFnZW50cy4KIC5QUApAQCAtNTgyLDcgKzU4Miw3IEBACiAubmYKIFxmSSMgdXNlcyBTTk1QdjMgdG8gYWNjZXNzIHRoZSBNSUIgdHJlZSAuMS4zLjYuMS4yLjEuMSBvbiAncmVtb3RlaG9zdCcKICMgYW5kIG1hcHMgdGhpcyB0byB0aGUgbG9jYWwgdHJlZSAuMS4zLjYuMS4zLjEwXGZSCi1wcm94eSAtdiAzIC1sIG5vQXV0aE5vUHJpdiAtdSB1c2VyIHJlbW90ZWhvc3QgLjEuMy42LjEuMy4xMCAuMS4zLjYuMS4yLjEuMQorcHJveHkgXC12IDMgXC1sIG5vQXV0aE5vUHJpdiBcLXUgdXNlciByZW1vdGVob3N0IC4xLjMuNi4xLjMuMTAgLjEuMy42LjEuMi4xLjEKIC5maQogLlJFCiAuU1MgU01VWCBTdWItQWdlbnRzCmRpZmYgLS1naXQgYS9tYW4vc25tcGRlbHRhLjEuZGVmIGIvbWFuL3NubXBkZWx0YS4xLmRlZgppbmRleCAzMzAxNTFjLi5mZTgwYjU3IDEwMDY0NAotLS0gYS9tYW4vc25tcGRlbHRhLjEuZGVmCisrKyBiL21hbi9zbm1wZGVsdGEuMS5kZWYKQEAgLTEyLDcgKzEyLDcgQEAKIHNubXBkZWx0YSBcLSBNb25pdG9yIGRlbHRhIGRpZmZlcmVuY2VzIGluIFNOTVAgQ291bnRlciB2YWx1ZXMKIC5TSCBTWU5PUFNJUwogLkIgc25tcGRlbHRhCi1bIENPTU1PTiBPUFRJT05TIF0gWy1DZl0gWyAtQ3QgXSBbIC1DcyBdIFsgLUNTIF0gWyAtQ20gXSBbIC1DRiBjb25maWdmaWxlIF0gWyAtQ2wgXSBbIC1DcCBwZXJpb2QgXSBbIC1DUCBQZWFrcyBdIFsgLUNrIF0gWyAtQ1QgXSBBR0VOVCBPSUQgWyBPSUQgLi4uIF0KK1sgQ09NTU9OIE9QVElPTlMgXSBbXC1DZl0gWyBcLUN0IF0gWyBcLUNzIF0gWyBcLUNTIF0gWyBcLUNtIF0gWyBcLUNGIGNvbmZpZ2ZpbGUgXSBbIFwtQ2wgXSBbIFwtQ3AgcGVyaW9kIF0gWyBcLUNQIFBlYWtzIF0gWyBcLUNrIF0gWyBcLUNUIF0gQUdFTlQgT0lEIFsgT0lEIC4uLiBdCiAuU0ggIkRFU0NSSVBUSU9OIgogLkIgc25tcGRlbHRhCiB3aWxsIG1vbml0b3IgdGhlIHNwZWNpZmllZCBpbnRlZ2VyIHZhbHVlZCBPSURzLCBhbmQgcmVwb3J0IGNoYW5nZXMKQEAgLTM4LDUxICszOCw1MSBAQAogZm9yIGEgbGlzdCBvZiBwb3NzaWJsZSB2YWx1ZXMgZm9yIENPTU1PTiBPUFRJT05TCiBhcyB3ZWxsIGFzIHRoZWlyIGRlc2NyaXB0aW9ucy4KIC5UUAotLkIgLUNmCisuQiBcLUNmCiBEb24ndCBmaXggZXJyb3JzIGFuZCByZXRyeSB0aGUgcmVxdWVzdC4KIFdpdGhvdXQgdGhpcyBvcHRpb24sIGlmIG11bHRpcGxlIG9pZHMgaGF2ZSBiZWVuIHNwZWNpZmllZCBmb3IKIGEgc2luZ2xlIHJlcXVlc3QgYW5kIGlmIHRoZSByZXF1ZXN0IGZvciBvbmUgb3IgbW9yZSBvZiB0aGUKIG9pZHMgZmFpbHMsIHNubXBkZWx0YSB3aWxsIHJldHJ5IHRoZSByZXF1ZXN0IHNvIHRoYXQgZGF0YSBmb3IKIG9pZHMgYXBhcnQgZnJvbSB0aGUgb25lcyB0aGF0IGZhaWxlZCB3aWxsIHN0aWxsIGJlIHJldHVybmVkLiAKLVNwZWNpZnlpbmcgLUNmIHRlbGxzCitTcGVjaWZ5aW5nIFwtQ2YgdGVsbHMKIC5JICBzbm1wZGVsdGEKIG5vdCB0byByZXRyeSBhIHJlcXVlc3QsIGV2ZW4KIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBvaWRzIHNwZWNpZmllZC4KIC5UUAotLkIgLUN0CisuQiBcLUN0CiBGbGFnIHdpbGwgZGV0ZXJtaW5lIHRpbWUgaW50ZXJ2YWwgZnJvbSB0aGUgbW9uaXRvcmVkIGVudGl0eS4KIC5UUAotLkIgLUNzCisuQiBcLUNzCiBGbGFnIHdpbGwgZGlzcGxheSBhIHRpbWVzdGFtcC4KIC5UUAotLkIgLUNTCisuQiBcLUNTCiBHZW5lcmF0ZXMgYSAic3VtIGNvdW50IiBpbiBhZGRpdGlvbiB0byB0aGUgaW5kaXZpZHVhbCBpbnN0YW5jZQogY291bnRzLiAgVGhlICJzdW0gY291bnQiIGlzIHRoZSB0b3RhbCBvZiBhbGwgdGhlIGluZGl2aWR1YWwKIGRlbHRhcyBmb3IgZWFjaCB0aW1lIHBlcmlvZC4KIC5UUAotLkIgLUNtCisuQiBcLUNtCiBQcmludHMgdGhlIG1heCB2YWx1ZSBldmVyIGF0dGFpbmVkLgogLlRQCi0uQiAtQ0YgY29uZmlnZmlsZQorLkIgXC1DRiBjb25maWdmaWxlCiBUZWxscwogLkIgc25tcGRlbHRhCiB0byByZWFkIGl0J3MgY29uZmlndXJhdGlvbiBmcm9tIHRoZSBzcGVjaWZpZWQgZmlsZS4KIFRoaXMgb3B0aW9ucyBhbGxvd3MgdGhlIGlucHV0IHRvIGJlIHNldCB1cCBpbiBhZHZhbmNlIHJhdGhlcgogdGhhbiBoYXZpbmcgdG8gYmUgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUuCiAuVFAKLS5CIC1DbAorLkIgXC1DbAogVGVsbHMKIC5CIHNubXBkZWx0YQogdG8gd3JpdGUgaXQncyBjb25maWd1cmF0aW9uIHRvIGZpbGVzIHdob3NlIG5hbWVzIGNvcnJlc3BvbmQgdG8gdGhlIE1JQgotaW5zdGFuY2VzIG1vbml0b3JlZC4gIEZvciBleGFtcGxlLCBzbm1wZGVsdGEgLUNsIGxvY2FsaG9zdCBpZkluT2N0ZXRzLjEKLXdpbGwgY3JlYXRlIGEgZmlsZSAibG9jYWxob3N0LWlmSW5PY3RldHMuMSIuCitpbnN0YW5jZXMgbW9uaXRvcmVkLiAgRm9yIGV4YW1wbGUsIHNubXBkZWx0YSBcLUNsIGxvY2FsaG9zdCBpZkluT2N0ZXRzLjEKK3dpbGwgY3JlYXRlIGEgZmlsZSAibG9jYWxob3N0XC1pZkluT2N0ZXRzLjEiLgogLlRQCi0uQiAtQ3AKKy5CIFwtQ3AKIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHNlY29uZHMgYmV0d2VlbiBwb2xsaW5nIHBlcmlvZHMuCiBQb2xsaW5nIGNvbnN0aXR1dGVzIHNlbmRpbmcgYSByZXF1ZXN0IHRvIHRoZSBhZ2VudC4gVGhlCiBkZWZhdWx0IHBvbGxpbmcgcGVyaW9kIGlzIG9uZSBzZWNvbmQuCiAuVFAKLS5CIC1DUCBwZWFrcworLkIgXC1DUCBwZWFrcwogU3BlY2lmaWVzIHRoZSByZXBvcnRpbmcgcGVyaW9kIGluIG51bWJlciBvZiBwb2xsaW5nIHBlcmlvZHMuCiBJZiB0aGlzIG9wdGlvbiBpcyBzcGVjaWZpZWQsIHNubXBkZWx0YSBwb2xscyB0aGUgYWdlbnQKIC5JIHBlYWtzCkBAIC05MSwxOSArOTEsMTkgQEAKIHRoZSByZXBvcnRpbmcgcGVyaW9kLiBJbiBhZGRpdGlvbiwgdGhlIGhpZ2hlc3QgcG9sbGVkCiB2YWx1ZSB3aXRoaW4gdGhlIHJlcG9ydGluZyBwZXJpb2QgaXMgc2hvd24uCiAuVFAKLS5CIC1DawotV2hlbiB0aGUgcG9sbGluZyBwZXJpb2QgKC1DcCkgaXMgYW4gaW5jcmVtZW50IG9mIDYwIHNlY29uZHMKLWFuZCB0aGUgdGltZXN0YW1wIGlzIGRpc3BsYXllZCBpbiB0aGUgb3V0cHV0ICgtQ3MpLCB0aGVuCisuQiBcLUNrCitXaGVuIHRoZSBwb2xsaW5nIHBlcmlvZCAoXC1DcCkgaXMgYW4gaW5jcmVtZW50IG9mIDYwIHNlY29uZHMKK2FuZCB0aGUgdGltZXN0YW1wIGlzIGRpc3BsYXllZCBpbiB0aGUgb3V0cHV0IChcLUNzKSwgdGhlbgogdGhlIGRlZmF1bHQgZGlzcGxheSBzaG93cyB0aGUgdGltZXN0YW1wIGluIHRoZSBmb3JtYXQKIGhoOm1tIG1tL2RkLiBUaGlzIG9wdGlvbiBjYXVzZXMgdGhlIHRpbWVzdGFtcCBmb3JtYXQKIHRvIGJlIGhoOm1tOnNzIG1tL2RkLgogLlRQCi0uQiAtQ1QKKy5CIFwtQ1QKIE1ha2VzIAogLkIgc25tcGRlbHRhCiBwcmludCBpdHMgb3V0cHV0IGluIHRhYnVsYXIgZm9ybS4KIC5UUAotLkIgLUN2IHZhcnMvcGt0CisuQiBcLUN2IHZhcnMvcGt0CiBTcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIG9pZHMgYWxsb3dlZCB0byBiZSBwYWNrYWdlZAogaW4gYSBzaW5nbGUgUERVLiBNdWx0aXBsZSBQRFVzIGNhbiBiZSBjcmVhdGVkIGluIGEgc2luZ2xlCiByZXF1ZXN0LiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB2YXJpYWJsZXMgcGVyIHBhY2tldCBpcyA2MC4KQEAgLTExOCw3ICsxMTgsNyBAQAogbWFudWFsIHBhZ2UuCiAuU0ggRVhBTVBMRVMKIC5uZgotJCBzbm1wZGVsdGEgLWMgcHVibGljIC12IDEgLUNzIGxvY2FsaG9zdCBJRi1NSUI6OmlmSW5VY2FzdFBrdHMuMyBJRi1NSUI6OmlmT3V0VWNhc3RQa3RzLjMKKyQgc25tcGRlbHRhIFwtYyBwdWJsaWMgXC12IDEgXC1DcyBsb2NhbGhvc3QgSUZcLU1JQjo6aWZJblVjYXN0UGt0cy4zIElGXC1NSUI6OmlmT3V0VWNhc3RQa3RzLjMKIFsyMDoxNTo0MyA2LzE0XSBpZkluVWNhc3RQa3RzLjMgLzEgc2VjOiAxNTgKIFsyMDoxNTo0MyA2LzE0XSBpZk91dFVjYXN0UGt0cy4zIC8xIHNlYzogMTU4CiBbMjA6MTU6NDQgNi8xNF0gaWZJblVjYXN0UGt0cy4zIC8xIHNlYzogMTg0CkBAIC0xMzQsNyArMTM0LDcgQEAKIFsyMDoxNTo0OSA2LzE0XSBpZkluVWNhc3RQa3RzLjMgLzEgc2VjOiAxNTgKIFsyMDoxNTo0OSA2LzE0XSBpZk91dFVjYXN0UGt0cy4zIC8xIHNlYzogMTU4CiBeQwotJCBzbm1wZGVsdGEgLWMgcHVibGljIC12IDEgLUNzIC1DVCBsb2NhbGhvc3QgSUYtTUlCOmlmSW5VY2FzdFBrdHMuMyBJRi1NSUI6aWZPdXRjYXN0UGt0cy4zCiskIHNubXBkZWx0YSBcLWMgcHVibGljIFwtdiAxIFwtQ3MgXC1DVCBsb2NhbGhvc3QgSUZcLU1JQjppZkluVWNhc3RQa3RzLjMgSUZcLU1JQjppZk91dGNhc3RQa3RzLjMKIGxvY2FsaG9zdAlpZkluVWNhc3RQa3RzLjMJaWZPdXRVY2FzdFBrdHMuMwogWzIwOjE1OjU5IDYvMTRdCTE4NC4wMAkxODQuMDAKIFsyMDoxNjowMCA2LzE0XQkxNTguMDAJMTU4LjAwCkBAIC0xNTMsNyArMTUzLDcgQEAKIHNjcmVlbi4KIC5QUAogLm5mCi0kIHNubXBkZWx0YSAtYyBwdWJsaWMgLXYgMSAtQ3QgLUNzIC1DUyAtQ20gLUNsIC1DcCA2MCAtQ1AgNjAKKyQgc25tcGRlbHRhIFwtYyBwdWJsaWMgXC12IDEgXC1DdCBcLUNzIFwtQ1MgXC1DbSBcLUNsIFwtQ3AgNjAgXC1DUCA2MAogICBpbnRlcmxpbmsuc3cubmV0LmNtdS5lZHUgLjEuMy42LjEuMi4xLjIuMi4xLjE2LjMgLjEuMy42LjEuMi4xLjIuMi4xLjE2LjQKIC5maQogLlNIICJTRUUgQUxTTyIKZGlmZiAtLWdpdCBhL21hbi9zbm1wZGYuMS5kZWYgYi9tYW4vc25tcGRmLjEuZGVmCmluZGV4IDc2NTMzNDcuLjQwNjg0NWEgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wZGYuMS5kZWYKKysrIGIvbWFuL3NubXBkZi4xLmRlZgpAQCAtNywxOSArNywxOSBAQAogLlwiIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKIC5cIiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgogLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS5USCBTTk1QREYgMSAiMjUgSnVsIDIwMDMiIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCisuVEggU05NUERGIDEgIjI4IEphbiAyMDEzIiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgogLlNIIE5BTUUKIHNubXBkZiAtIGRpc3BsYXkgZGlzayBzcGFjZSB1c2FnZSBvbiBhIG5ldHdvcmsgZW50aXR5IHZpYSBTTk1QCiAuU0ggU1lOT1BTSVMKIC5CIHNubXBkZgotW0NPTU1PTiBPUFRJT05TXSBbLUN1XSBBR0VOVAorW0NPTU1PTiBPUFRJT05TXSBbXC1DdV0gW1wtQ2hdIEFHRU5UCiAuU0ggREVTQ1JJUFRJT04KIC5CIHNubXBkZgotaXMgc2ltcGx5IGEgbmV0d29ya2VkIHZlcmlzb24gb2YgdGhlIHR5cGljYWwgZGYgY29tbWFuZC4gIEl0CitpcyBzaW1wbHkgYSBuZXR3b3JrZWQgdmVyc2lvbiBvZiB0aGUgdHlwaWNhbCBkZiBjb21tYW5kLiAgSXQKIGNoZWNrcyB0aGUgZGlzayBzcGFjZSBvbiB0aGUgcmVtb3RlIG1hY2hpbmUgYnkgZXhhbWluaW5nIHRoZQotSE9TVC1SRVNPVVJDRVMtTUlCJ3MgaHJTdG9yYWdlVGFibGUgb3IgdGhlIFVDRC1TTk1QLU1JQidzIGRza1RhYmxlLgorSE9TVFwtUkVTT1VSQ0VTXC1NSUIncyBoclN0b3JhZ2VUYWJsZSBvciB0aGUgVUNEXC1TTk1QXC1NSUIncyBkc2tUYWJsZS4KIEJ5IGRlZmF1bHQsIHRoZSBoclN0b3JhZ2VUYWJsZSBpcyBwcmVmZXJyZWQgYXMgaXQgdHlwaWNhbGx5IGNvbnRhaW5zCi1tb3JlIGluZm9ybWF0aW9uLiAgSG93ZXZlciwgdGhlIC1DdSBhcmd1bWVudCBjYW4gYmUgcGFzc2VkIHRvIHNubXBkZgorbW9yZSBpbmZvcm1hdGlvbi4gIEhvd2V2ZXIsIHRoZSBcLUN1IGFyZ3VtZW50IGNhbiBiZSBwYXNzZWQgdG8gc25tcGRmCiB0byBmb3JjZSB0aGUgdXNhZ2Ugb2YgdGhlIGRza1RhYmxlLgogLlBQCiBBR0VOVCBpZGVudGlmaWVzIGEgdGFyZ2V0IFNOTVAgYWdlbnQsIHdoaWNoIGlzIGluc3RydW1lbnRlZApAQCAtNDQsMTYgKzQ0LDIyIEBACiBmb3IgYSBsaXN0IG9mIHBvc3NpYmxlIHZhbHVlcyBmb3IgQ09NTU9OIE9QVElPTlMKIGFzIHdlbGwgYXMgdGhlaXIgZGVzY3JpcHRpb25zLgogLlRQCi0uQiAtQ3UKKy5CIFwtQ3UKIEZvcmNlcyB0aGUgY29tbWFuZCB0byB1c2UgZHNrVGFibGUgaW4gbWliCi1VQ0QtU05NUC1NSUIgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCB0byBkZXRlcm1pbmUKK1VDRFwtU05NUFwtTUlCIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgdG8gZGV0ZXJtaW5lCiB0aGUgc3RvcmFnZSBpbmZvcm1hdGlvbi4gR2VuZXJhbGx5LCB0aGUgZGVmYXVsdAotdXNlIG9mIGhyU3RvcmFnZVRhYmxlIGluIG1pYiBIT1NULVJFU09VUkNFUy1NSUIKK3VzZSBvZiBoclN0b3JhZ2VUYWJsZSBpbiBtaWIgSE9TVFwtUkVTT1VSQ0VTXC1NSUIKIGlzIHByZWZlcnJlZCBiZWNhdXNlIGl0IHR5cGljYWxseSBjb250YWlucwogbW9yZSBpbmZvcm1hdGlvbi4KKy5UUAorLkIgXC1DaAorUHJpbnQgc2l6ZXMgaW4gaHVtYW4gcmVhZGFibGUgZm9ybWF0IChpLmUuIE1pQiwgR2lCLCBUaUIpCisuVFAKKy5CIFwtQ0gKK1ByaW50IHNpemVzIGluIGh1bWFuIHJlYWRhYmxlIFNJIGZvcm1hdCAoaS5lLiBNQiwgR0IsIFRCKQogLlNIICJFWEFNUExFUyIKIC5QUAotJSBzbm1wZGYgLXYgMmMgLWMgcHVibGljIGxvY2FsaG9zdAorJSBzbm1wZGYgXC12IDJjIFwtYyBwdWJsaWMgbG9jYWxob3N0CiAuUFAKIC5uZgogRGVzY3JpcHRpb24gICAgICAgc2l6ZSAoa0IpICAgICAgICAgVXNlZCAgICBBdmFpbGFibGUgVXNlZCUKZGlmZiAtLWdpdCBhL21hbi9zbm1wZ2V0LjEuZGVmIGIvbWFuL3NubXBnZXQuMS5kZWYKaW5kZXggNmJjMWI1YS4uMGVjYWMxOSAxMDA2NDQKLS0tIGEvbWFuL3NubXBnZXQuMS5kZWYKKysrIGIvbWFuL3NubXBnZXQuMS5kZWYKQEAgLTEsNyArMSw3IEBACiAuXCIgLSotIG5yb2ZmIC0qLQotLlwiIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodC4gCi0uXCIgU2VlIHRoZSBOZXQtU05NUCBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIKLS5cIiBjb3B5cmlnaHRzIHRoYXQgbWF5IGFwcGx5OgorLlwiIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodC4gIFNlZQorLlwiIHRoZSBOZXQtU05NUCBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cworLlwiIHRoYXQgbWF5IGFwcGx5OgogLlwiIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiIAlDb3B5cmlnaHQgMTk4OCwgMTk4OSBieSBDYXJuZWdpZSBNZWxsb24gVW5pdmVyc2l0eQogLlwiIApAQCAtMjgsNyArMjgsNyBAQAogc25tcGdldCAtIGNvbW11bmljYXRlcyB3aXRoIGEgbmV0d29yayBlbnRpdHkgdXNpbmcgU05NUCBHRVQgcmVxdWVzdHMKIC5TSCBTWU5PUFNJUwogLkIgc25tcGdldAotW0NPTU1PTiBPUFRJT05TXSBbLUNmXSBBR0VOVCBPSUQgW09JRF0uLi4KK1tDT01NT04gT1BUSU9OU10gW1wtQ2ZdIEFHRU5UIE9JRCBbT0lEXS4uLgogLlNIIERFU0NSSVBUSU9OCiAuQiBzbm1wZ2V0CiBpcyBhbiBTTk1QIGFwcGxpY2F0aW9uIHRoYXQgdXNlcyB0aGUgU05NUCBHRVQgcmVxdWVzdCB0byBxdWVyeSBmb3IKQEAgLTM4LDkgKzM4LDkgQEAKIC5JUiB2YXJpYWJsZXMoNSkgLgogLlNIICJPUFRJT05TIgogLlRQIDgKLS5CIC1DZgorLkIgXC1DZgogSWYKLS5CIC1DZgorLkIgXC1DZgogaXMKIC5JIG5vdAogc3BlY2lmaWVkLCBzb21lIGFwcGxpY2F0aW9ucwpAQCAtNjIsNyArNjIsNyBAQAogLlNIICJFWEFNUExFUyIKIFRoZSBjb21tYW5kOgogLlBQCi0gICAgc25tcGdldCAtYyBwdWJsaWMgemV1cyBzeXN0ZW0uc3lzRGVzY3IuMAorICAgIHNubXBnZXQgXC1jIHB1YmxpYyB6ZXVzIHN5c3RlbS5zeXNEZXNjci4wCiAuUFAKIHdpbGwgcmV0cmlldmUgdGhlIHZhcmlhYmxlIHN5c3RlbS5zeXNEZXNjci4wIGZyb20gdGhlIGhvc3QgCiAuQiB6ZXVzIApAQCAtNzgsMTMgKzc4LDEzIEBACiB2YXJpYWJsZXMgaW4gdGhlIHJlcXVlc3QsIHRoZSByZXF1ZXN0IHdpbGwgYmUgcmVzZW50IHdpdGhvdXQgdGhlIGJhZAogdmFyaWFibGUuCiAuUFAKLUhlcmUgaXMgYW5vdGhlciBleGFtcGxlLiBUaGUgLWMgYW5kIC12IG9wdGlvbnMgYXJlIGRlZmluZWQgaW4gdGhlIAorSGVyZSBpcyBhbm90aGVyIGV4YW1wbGUuIFRoZSBcLWMgYW5kIFwtdiBvcHRpb25zIGFyZSBkZWZpbmVkIGluIHRoZSAKIC5JIHNubXBjbWQoMSkKIG1hbnVhbCBwYWdlLiAoTm90ZSB0aGF0IHN5c3RlbS5zeXNVcFRpbWUgaXMgYW4gaW5jb21wbGV0ZQogT0lELCBhcyBpdCBuZWVkcyB0aGUgLjAgaW5kZXggYXBwZW5kZWQgdG8gaXQpOgogLlBQCiAubmYKLSAgICBzbm1wZ2V0IC12MSAtQ2YgLWMgcHVibGljIGxvY2FsaG9zdCBzeXN0ZW0uc3lzVXBUaW1lIHN5c3RlbS5zeXNDb250YWN0LjAKKyAgICBzbm1wZ2V0IFwtdjEgXC1DZiBcLWMgcHVibGljIGxvY2FsaG9zdCBzeXN0ZW0uc3lzVXBUaW1lIHN5c3RlbS5zeXNDb250YWN0LjAKIC5maQogLlBQCiBUaGlzIGV4YW1wbGUgd2lsbCByZXR1cm4gdGhlIGZvbGxvd2luZzoKQEAgLTk3LDcgKzk3LDcgQEAKIC5QUAogU2ltaWxhcmx5LCB0aGUgY29tbWFuZDoKIC5uZgotICAgIHNubXBnZXQgLXYxIC1jIHB1YmxpYyBsb2NhbGhvc3Qgc3lzdGVtLnN5c1VwVGltZSBzeXN0ZW0uc3lzQ29udGFjdC4wCisgICAgc25tcGdldCBcLXYxIFwtYyBwdWJsaWMgbG9jYWxob3N0IHN5c3RlbS5zeXNVcFRpbWUgc3lzdGVtLnN5c0NvbnRhY3QuMAogLmZpCiAuUFAKIFdpbGwgcmV0dXJuOgpAQCAtMTEyLDcgKzExMiw3IEBACiAuUFAKIFdpdGggdGhlCiAuQgotLUNmCitcLUNmCiBmbGFnIHNwZWNpZmllZCB0aGUgYXBwbGljYXRpb24gd2lsbCBub3QgdHJ5IHRvIGZpeCB0aGUgUERVIGZvciB5b3UuCiAuU0ggIlNFRSBBTFNPIgogc25tcGNtZCgxKSwgc25tcHdhbGsoMSksIHZhcmlhYmxlcyg1KS4KZGlmZiAtLWdpdCBhL21hbi9zbm1wZ2V0bmV4dC4xLmRlZiBiL21hbi9zbm1wZ2V0bmV4dC4xLmRlZgppbmRleCA3N2M3ODM1Li41ZTk5YTE4IDEwMDY0NAotLS0gYS9tYW4vc25tcGdldG5leHQuMS5kZWYKKysrIGIvbWFuL3NubXBnZXRuZXh0LjEuZGVmCkBAIC0xLDcgKzEsNyBAQAogLlwiIC0qLSBucm9mZiAtKi0KLS5cIiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQuIAotLlwiIFNlZSB0aGUgTmV0LVNOTVAgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyCi0uXCIgY29weXJpZ2h0cyB0aGF0IG1heSBhcHBseToKKy5cIiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQuICBTZWUKKy5cIiB0aGUgTmV0LVNOTVAgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyIGNvcHlyaWdodHMKKy5cIiB0aGF0IG1heSBhcHBseToKIC5cIiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIiAJQ29weXJpZ2h0IDE5ODgsIDE5ODkgYnkgQ2FybmVnaWUgTWVsbG9uIFVuaXZlcnNpdHkKIC5cIiAKQEAgLTI4LDcgKzI4LDcgQEAKIHNubXBnZXRuZXh0IC0gY29tbXVuaWNhdGVzIHdpdGggYSBuZXR3b3JrIGVudGl0eSB1c2luZyBTTk1QIEdFVE5FWFQgcmVxdWVzdHMKIC5TSCBTWU5PUFNJUwogLkIgc25tcGdldG5leHQKLVtDT01NT04gT1BUSU9OU10gWy1DZl0gQUdFTlQgT0lEIFtPSURdLi4uCitbQ09NTU9OIE9QVElPTlNdIFtcLUNmXSBBR0VOVCBPSUQgW09JRF0uLi4KIC5TSCBERVNDUklQVElPTgogLkIgc25tcGdldAogaXMgYW4gU05NUCBhcHBsaWNhdGlvbiB0aGF0IHVzZXMgdGhlIFNOTVAgR0VUTkVYVCByZXF1ZXN0IHRvIHF1ZXJ5IGZvcgpAQCAtNDEsNyArNDEsNyBAQAogLlBQCiBGb3IgZXhhbXBsZToKIC5QUAotc25tcGdldG5leHQgLWMgcHVibGljIHpldXMgaW50ZXJmYWNlcy5pZlRhYmxlLmlmRW50cnkuaWZUeXBlLjEKK3NubXBnZXRuZXh0IFwtYyBwdWJsaWMgemV1cyBpbnRlcmZhY2VzLmlmVGFibGUuaWZFbnRyeS5pZlR5cGUuMQogLlBQCiB3aWxsIHJldHJpZXZlIHRoZSB2YXJpYWJsZSBpbnRlcmZhY2VzLmlmVGFibGUuaWZFbnRyeS5pZlR5cGUuMjoKIC5QUApAQCAtNTIsOSArNTIsOSBAQAogcmVxdWVzdCB3YXMgbWFsZm9ybWVkLgogLlNIICJPUFRJT05TIgogLlRQIDgKLS5CIC1DZgorLkIgXC1DZgogSWYKLS5CIC1DZgorLkIgXC1DZgogaXMKIC5JIG5vdAogc3BlY2lmaWVkLCBzb21lIGFwcGxpY2F0aW9ucwpkaWZmIC0tZ2l0IGEvbWFuL3NubXBuZXRzdGF0LjEuZGVmIGIvbWFuL3NubXBuZXRzdGF0LjEuZGVmCmluZGV4IDkyY2ZlZTQuLjdkMWRkMmEgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wbmV0c3RhdC4xLmRlZgorKysgYi9tYW4vc25tcG5ldHN0YXQuMS5kZWYKQEAgLTU4LDIxICs1OCwyMSBAQAogLlwiIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKIC5cIiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgogLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS5USCBTTk1QTkVUU1RBVCAxICIyMCBKYW4gMjAxMCIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKKy5USCBTTk1QTkVUU1RBVCAxICIwNCBNYXIgMjAxMyIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKIC5TSCBOQU1FCiBzbm1wbmV0c3RhdCBcLSBkaXNwbGF5IG5ldHdvcmtpbmcgc3RhdHVzIGFuZCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZyb20gYSBuZXR3b3JrIGVudGl0eSB2aWEgU05NUAogLlNIIFNZTk9QU0lTCiAuQiBzbm1wbmV0c3RhdAotW0NPTU1PTiBPUFRJT05TXSBbLUNhXSBbLUNuXSBBR0VOVAorW0NPTU1PTiBPUFRJT05TXSBbXC1DYV0gW1wtQ25dIEFHRU5UCiAuYnIKIC5CIHNubXBuZXRzdGF0Ci1bQ09NTU9OIE9QVElPTlNdIFstQ2ldIFstQ29dIFstQ3JdIFstQ25dIFstQ3NdIEFHRU5UCitbQ09NTU9OIE9QVElPTlNdIFtcLUNpXSBbXC1Db10gW1wtQ3JdIFtcLUNuXSBbXC1Dc10gQUdFTlQKIC5icgogLkIgc25tcG5ldHN0YXQKLVtDT01NT04gT1BUSU9OU10gWy1DaV0gWy1Dbl0gWy1DSSBpbnRlcmZhY2VdIEFHRU5UIFtpbnRlcnZhbF0KK1tDT01NT04gT1BUSU9OU10gW1wtQ2ldIFtcLUNuXSBbXC1DSSBpbnRlcmZhY2VdIEFHRU5UIFtpbnRlcnZhbF0KIC5icgogLkIgc25tcG5ldHN0YXQKLVtDT01NT04gT1BUSU9OU10gWy1DYV0gWy1Dbl0gWy1Dc10gWy1DcCBwcm90b2NvbF0gQUdFTlQKK1tDT01NT04gT1BUSU9OU10gW1wtQ2FdIFtcLUNuXSBbXC1Dc10gW1wtQ3AgcHJvdG9jb2xdIEFHRU5UCiAuU0ggREVTQ1JJUFRJT04KIFRoZQogLkIgc25tcG5ldHN0YXQgCkBAIC0xMTUsNiArMTE1LDExIEBACiBmb3IgYSBsaXN0IG9mIHBvc3NpYmxlIHZhbHVlcyBmb3IgY29tbW9uIG9wdGlvbnMKIGFzIHdlbGwgYXMgdGhlaXIgZGVzY3JpcHRpb25zLgogLlBQCisuQiBcLUNMCit1c2UgdGhlIGxlZ2FjeSBTTk1QIE1JQiBlbGVtZW50cywgbm90IHRoZSBtb2Rlcm4gSVAgdmVyc2lvbiBhZ25vc3RpYwordGFibGVzLiBJdCB3aWxsIGF1dG9tYXRpY2FsbHkgZmFsbCBiYWNrIHRvIHRoZSBsZWdhY3kgdGFibGVzIGlmIHRoZQorbW9kZXJuIG9uZXMgYXJlIG5vdCBhdmFpbGFibGUuCisuUFAKIC5CIFwtQ2EKIFdpdGggdGhlIGRlZmF1bHQgZGlzcGxheSwKIHNob3cgdGhlIHN0YXRlIG9mIGFsbCBzb2NrZXRzOyBub3JtYWxseSBzb2NrZXRzIHVzZWQgYnkKQEAgLTE1OCwxNiArMTYzLDEyIEBACiBpcyB1bmtub3duIG9yIGlmIHRoZXJlIGlzIG5vIHN0YXRpc3RpY3Mgcm91dGluZSBmb3IgaXQuCiAuUFAKIC5CIFwtQ3MKLVNob3cgcGVyLXByb3RvY29sIHN0YXRpc3RpY3MuICBXaGVuIHVzZWQgd2l0aCB0aGUKLS5CIFwtQ3IKLW9wdGlvbiwgc2hvdyByb3V0aW5nIHN0YXRpc3RpY3MgaW5zdGVhZC4KK1Nob3cgcGVyLXByb3RvY29sIHN0YXRpc3RpY3MuCitJZiB0aGlzIGlzIGR1cGxpY2F0ZWQgKC1Dc3MpIHN0YXRpc3RpY3MgZW50cmllcyB3aGljaCBhcmUgemVybyB3aWxsCitiZSBzdXBwcmVzc2VkLgogLlBQCiAuQiBcLUNyCiBTaG93IHRoZSByb3V0aW5nIHRhYmxlcy4KLVdoZW4KLS5CIFwtQ3MKLWlzIGFsc28gcHJlc2VudCwgc2hvdyBwZXItcHJvdG9jb2wgcm91dGluZyBzdGF0aXN0aWNzIGluc3RlYWQgb2YgCi10aGUgcm91dGluZyB0YWJsZXMuCiAuUFAKIC5CSSBcLUNSICIgcmVwZWF0ZXJzIgogRm9yIEdFVEJVTEsgcmVxdWVzdHMsCkBAIC0yNTQsNyArMjU1LDcgQEAKIC5TSCBFWEFNUExFUwogRXhhbXBsZSBvZiB1c2luZyBzbm1wbmV0c3RhdCB0byBkaXNwbGF5IGFjdGl2ZSBzb2NrZXRzIChkZWZhdWx0KToKIC5QUAotJSBzbm1wbmV0c3RhdCAtdiAyYyAtYyBwdWJsaWMgLUNhIHRlc3Rob3N0CislIHNubXBuZXRzdGF0IFwtdiAyYyBcLWMgcHVibGljIFwtQ2EgdGVzdGhvc3QKIC5QUAogLm5mCiBBY3RpdmUgSW50ZXJuZXQgKHRjcCkgQ29ubmVjdGlvbnMgKGluY2x1ZGluZyBzZXJ2ZXJzKQpAQCAtMjc4LDcgKzI3OSw3IEBACiBcJi4uLgogLmZpCiAuUFAKLSUgc25tcG5ldHN0YXQgLXYgMmMgLWMgcHVibGljIC1DaSB0ZXN0aG9zdAorJSBzbm1wbmV0c3RhdCBcLXYgMmMgXC1jIHB1YmxpYyBcLUNpIHRlc3Rob3N0CiAuUFAKIC5uZgogTmFtZSAgICAgTXR1IE5ldHdvcmsgICAgQWRkcmVzcyAgICAgICAgICBJcGt0cyAgIEllcnJzICAgIE9wa3RzIE9lcnJzIFF1ZXVlCkBAIC0yODksNyArMjkwLDcgQEAKIEV4YW1wbGUgb2YgdXNpbmcgc25tcG5ldHN0YXQgdG8gc2hvdyBzdGF0aXN0aWNzIGFib3V0IGEgc3BlY2lmaWMgcHJvdG9jb2w6CiAuUFAKIC5uZgotJSBzbm1wbmV0c3RhdCAtdiAyYyAtYyBwdWJsaWMgLUNwIHRjcCB0ZXN0aG9zdAorJSBzbm1wbmV0c3RhdCBcLXYgMmMgXC1jIHB1YmxpYyBcLUNwIHRjcCB0ZXN0aG9zdAogCiBBY3RpdmUgSW50ZXJuZXQgKHRjcCkgQ29ubmVjdGlvbnMKIFByb3RvIExvY2FsIEFkZHJlc3MgICAgICAgICAgICAgICAgRm9yZWlnbiBBZGRyZXNzICAgICAgICAgICAgICAgICAoc3RhdGUpCmRpZmYgLS1naXQgYS9tYW4vc25tcHNldC4xLmRlZiBiL21hbi9zbm1wc2V0LjEuZGVmCmluZGV4IDVjN2RmNDYuLmIwYzRlMDcgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wc2V0LjEuZGVmCisrKyBiL21hbi9zbm1wc2V0LjEuZGVmCkBAIC0xLDcgKzEsNyBAQAogLlwiIC0qLSBucm9mZiAtKi0KLS5cIiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQuCi0uXCIgU2VlIHRoZSBOZXQtU05NUCBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIKLS5cIiBjb3B5cmlnaHRzIHRoYXQgbWF5IGFwcGx5OgorLlwiIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodC4gIFNlZQorLlwiIHRoZSBOZXQtU05NUCBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cworLlwiIHRoYXQgbWF5IGFwcGx5OgogLlwiIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiIAlDb3B5cmlnaHQgMTk4OCwgMTk4OSBieSBDYXJuZWdpZSBNZWxsb24gVW5pdmVyc2l0eQogLlwiIApAQCAtODYsMTMgKzg2LDEzIEBACiAuUFAKIEZvciBleGFtcGxlOgogLlBQCi1zbm1wc2V0IC1jIHByaXZhdGUgLXYgMSB0ZXN0LWh1YiBzeXN0ZW0uc3lzQ29udGFjdC4wIHMgZHB6QG5vYy5ydXRnZXJzLmVkdSBpcC5pcGZvcndhcmRpbmcuMCA9IDIKK3NubXBzZXQgXC1jIHByaXZhdGUgXC12IDEgdGVzdFwtaHViIHN5c3RlbS5zeXNDb250YWN0LjAgcyBkcHpAbm9jLnJ1dGdlcnMuZWR1IGlwLmlwZm9yd2FyZGluZy4wID0gMgogLlBQCiB3aWxsIHNldCB0aGUgdmFyaWFibGVzIHN5c0NvbnRhY3QuMCBhbmQgaXBGb3J3YXJkaW5nLjA6CiAuUFAKIHN5c3RlbS5zeXNDb250YWN0LjAgPSBTVFJJTkc6ICJkcHpAbm9jLnJ1dGdlcnMuZWR1IgogLmJyCi1pcC5pcEZvcndhcmRpbmcuMCA9IElOVEVHRVI6IG5vdC1mb3J3YXJkaW5nKDIpCitpcC5pcEZvcndhcmRpbmcuMCA9IElOVEVHRVI6IG5vdFwtZm9yd2FyZGluZygyKQogLlBQCiBJZiB0aGUgbmV0d29yayBlbnRpdHkgaGFzIGFuIGVycm9yIHByb2Nlc3NpbmcgdGhlIHJlcXVlc3QgcGFja2V0LCBhbgogZXJyb3IgcGFja2V0IHdpbGwgYmUgcmV0dXJuZWQgYW5kIGEgbWVzc2FnZSB3aWxsIGJlIHNob3duLCBoZWxwaW5nIHRvCmRpZmYgLS1naXQgYS9tYW4vc25tcHN0YXR1cy4xLmRlZiBiL21hbi9zbm1wc3RhdHVzLjEuZGVmCmluZGV4IGJiYTQ4YjMuLjExMjYxNDYgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wc3RhdHVzLjEuZGVmCisrKyBiL21hbi9zbm1wc3RhdHVzLjEuZGVmCkBAIC0zMiw3ICszMiw3IEBACiBzbm1wc3RhdHVzIC0gcmV0cmlldmVzIGEgZml4ZWQgc2V0IG9mIG1hbmFnZW1lbnQgaW5mb3JtYXRpb24gZnJvbSBhIG5ldHdvcmsgZW50aXR5CiAuU0ggU1lOT1BTSVMKIC5CIHNubXBzdGF0dXMKLVtDT01NT04gT1BUSU9OU10gWy1DZl0gQUdFTlQKK1tDT01NT04gT1BUSU9OU10gW1wtQ2ZdIEFHRU5UCiAuU0ggREVTQ1JJUFRJT04KIC5CIHNubXBzdGF0dXMKIGlzIGFuIFNOTVAgYXBwbGljYXRpb24gdGhhdCByZXRyaWV2ZXMgc2V2ZXJhbCBpbXBvcnRhbnQgc3RhdGlzdGljcwpAQCAtNjgsNyArNjgsNyBAQAogLlBQCiBGb3IgZXhhbXBsZToKIC5QUAotc25tcHN0YXR1cyAtYyBwdWJsaWMgLXYgMSBuZXRkZXYta2JveC5jYy5jbXUuZWR1Citzbm1wc3RhdHVzIFwtYyBwdWJsaWMgXC12IDEgbmV0ZGV2XC1rYm94LmNjLmNtdS5lZHUKIC5QUAogd2lsbCBwcm9kdWNlIG91dHB1dCBzaW1pbGFyIHRvIHRoZSBmb2xsb3dpbmc6CiAuUFAKQEAgLTkwLDcgKzkwLDcgQEAKIC5CIHNubXBzdGF0dXMKIHdpbGwgYXR0ZW1wdCB0byByZWZvcm0gaXRzIHJlcXVlc3QgdG8gZWxpbWluYXRlIHRoZSBtYWxmb3JtZWQKIHZhcmlhYmxlICh1bmxlc3MgdGhlCi0uQiAtQ2YKKy5CIFwtQ2YKIG9wdGlvbiBpcyBnaXZlbiwgc2VlIGJlbG93KSwgYnV0IHRoaXMgdmFyaWFibGUgd2lsbCB0aGVuIGJlIG1pc3NpbmcKIGZyb20gdGhlIGRpc3BsYXllZCBkYXRhLgogLlBQCkBAIC0xMDIsMTAgKzEwMiwxMCBAQAogZm9yIGEgbGlzdCBvZiBwb3NzaWJsZSB2YWx1ZXMgZm9yIENPTU1PTiBPUFRJT05TCiBhcyB3ZWxsIGFzIHRoZWlyIGRlc2NyaXB0aW9ucy4KIC5UUAotLkIgLUNmCisuQiBcLUNmCiBCeSBkZWZhdWx0LCBzbm1wc3RhdHVzIHdpbGwgdHJ5IHRvIGZpeCBlcnJvcnMgcmV0dXJuZWQKIGJ5IHRoZSBhZ2VudCBhbmQgcmV0cnkgYSByZXF1ZXN0LiBJbiB0aGlzIHNpdHVhdGlvbiwKLXRoZSBjb21tYW5kIHdpbGwgZGlzcGxheSB0aGUgZGF0YSB0aGF0IGl0IGNhbi4gSWYgdGhlIC1DZiBvcHRpb24KK3RoZSBjb21tYW5kIHdpbGwgZGlzcGxheSB0aGUgZGF0YSB0aGF0IGl0IGNhbi4gSWYgdGhlIFwtQ2Ygb3B0aW9uCiBpcyBzcGVjaWZpZWQsIHRoZW4gc25tcHN0YXR1cyB3aWxsIG5vdCB0cnkgdG8gZml4CiBlcnJvcnMsIGFuZCB0aGUgZXJyb3Igd2lsbCBjYXVzZSB0aGUgY29tbWFuZCB0byB0ZXJtaW5hdGUuCiAuU0ggIlNFRSBBTFNPIgpkaWZmIC0tZ2l0IGEvbWFuL3NubXB0YWJsZS4xLmRlZiBiL21hbi9zbm1wdGFibGUuMS5kZWYKaW5kZXggNTc1YjAzNC4uNzQzZGExYiAxMDA2NDQKLS0tIGEvbWFuL3NubXB0YWJsZS4xLmRlZgorKysgYi9tYW4vc25tcHRhYmxlLjEuZGVmCkBAIC0yMCwyNCArMjAsMjQgQEAKIC5cIiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCiAuXCIgZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KIC5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0uVEggU05NUFRBQkxFIDEgIjA2IFNlcCAyMDAzIiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgorLlRIIFNOTVBUQUJMRSAxICIyNSBKdWwgMjAwMyIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKIC5TSCBOQU1FCiBzbm1wdGFibGUgLSByZXRyaWV2ZSBhbiBTTk1QIHRhYmxlIGFuZCBkaXNwbGF5IGl0IGluIHRhYnVsYXIgZm9ybQogLlNIIFNZTk9QU0lTCiAuQiBzbm1wdGFibGUKLVtDT01NT04gT1BUSU9OU10gWy1DYl0gWy1DQl0gWy1DaF0gWy1DSF0gWy1DaV0gWy1DZiBTVFJJTkddIFstQ3cgV0lEVEhdCi1BR0VOVCBUQUJMRS1PSUQKK1tDT01NT04gT1BUSU9OU10gW1wtQ2JdIFtcLUNCXSBbXC1DaF0gW1wtQ0hdIFtcLUNpXSBbXC1DZiBTVFJJTkddIFtcLUN3IFdJRFRIXQorQUdFTlQgVEFCTEVcLU9JRAogLlNIIERFU0NSSVBUSU9OCiAuQiBzbm1wdGFibGUKIGlzIGFuIFNOTVAgYXBwbGljYXRpb24gdGhhdCByZXBlYXRlZGx5IHVzZXMgdGhlIFNOTVAgR0VUTkVYVCBvcgogR0VUQlVMSyByZXF1ZXN0cyB0byBxdWVyeSBmb3IgaW5mb3JtYXRpb24gb24gYSBuZXR3b3JrIGVudGl0eS4gIFRoZQogcGFyYW1ldGVyCi0uSSBUQUJMRS1PSUQKKy5JIFRBQkxFXC1PSUQKIG11c3Qgc3BlY2lmeSBhbiBTTk1QIHRhYmxlLgogLlBQCiBzbm1wdGFibGUgaXMgYW4gU05NUCBhcHBsaWNhdGlvbiB0aGF0IHJlcGVhdGVkbHkgdXNlcyB0aGUKIFNOTVAgR0VUTkVYVCBvciBHRVRCVUxLIHJlcXVlc3RzIHRvIHF1ZXJ5IGZvciAgaW5mb3JtYXRpb24KLW9uIGEgbmV0d29yayBlbnRpdHkuICBUaGUgcGFyYW1ldGVyIFRBQkxFLU9JRCBtdXN0IHNwZWNpZnkKK29uIGEgbmV0d29yayBlbnRpdHkuICBUaGUgcGFyYW1ldGVyIFRBQkxFXC1PSUQgbXVzdCBzcGVjaWZ5CiBhbiBTTk1QIHRhYmxlLgogCiBBR0VOVCBpZGVudGlmaWVzIGEgdGFyZ2V0IFNOTVAgYWdlbnQsIHdoaWNoIGlzIGluc3RydW1lbnRlZApAQCAtNTcsMTkgKzU3LDE5IEBACiBmb3IgYSBsaXN0IG9mIHBvc3NpYmxlIHZhbHVlcyBmb3IgQ09NTU9OIE9QVElPTlMKIGFzIHdlbGwgYXMgdGhlaXIgZGVzY3JpcHRpb25zLgogLlRQCi0uQiAtQ2IKKy5CIFwtQ2IKIERpc3BsYXkgb25seSBhIGJyaWVmIGhlYWRpbmcuIEFueSBjb21tb24gcHJlZml4IG9mIHRoZSB0YWJsZSBmaWVsZAogbmFtZXMgd2lsbCBiZSBkZWxldGVkLgogLlRQIAotLkIgLUNCCisuQiBcLUNCCiBEbyBub3QgdXNlIEdFVEJVTEsgcmVxdWVzdHMgdG8gcmV0cmlldmUgZGF0YSwgb25seSBHRVRORVhULgogLlRQIAotLkJJIC1DYyAiIENIQVJTIgorLkJJIFwtQ2MgIiBDSEFSUyIKIFByaW50IHRhYmxlIGluIGNvbHVtbnMgb2YKIC5JIENIQVJTCiBjaGFyYWN0ZXJzIHdpZHRoLgogLlRQCi0uQkkgLUNmICIgU1RSSU5HIgorLkJJIFwtQ2YgIiBTVFJJTkciCiBUaGUgc3RyaW5nCiAuSSBTVFJJTkcKIGlzIHVzZWQgdG8gc2VwYXJhdGUgdGFibGUgY29sdW1ucy4gIFdpdGggdGhpcyBvcHRpb24sIGVhY2ggdGFibGUgZW50cnkKQEAgLTc3LDI4ICs3NywyOCBAQAogc2VwYXJhdGUgdGhlIGNvbHVtbnMgKHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBpbXBvcnQgaXQgaW50byBhCiBkYXRhYmFzZSkuICBPdGhlcndpc2UgaXQgaXMgcHJpbnRlZCBpbiBuaWNlbHkgYWxpZ25lZCBjb2x1bW5zLgogLlRQCi0uQiAtQ2gKKy5CIFwtQ2gKIERpc3BsYXkKIC5JIG9ubHkKIHRoZSBjb2x1bW4gaGVhZGluZ3MuCiAuVFAKLS5CIC1DSAorLkIgXC1DSAogRG8gbm90IGRpc3BsYXkgdGhlIGNvbHVtbiBoZWFkaW5ncy4KIC5UUAotLkIgLUNpCisuQiBcLUNpCiBUaGlzIG9wdGlvbiBwcmVwZW5kcyB0aGUgaW5kZXggb2YgdGhlIGVudHJ5IHRvIGFsbCBwcmludGVkIGxpbmVzLgogLlRQCi0uQiAtQ2wKKy5CIFwtQ2wKIExlZnQganVzdGlmeSB0aGUgZGF0YSBpbiBlYWNoIGNvbHVtbi4KIC5UUCAKLS5CSSAtQ3IgIiBSRVBFQVRFUlMiCisuQkkgXC1DciAiIFJFUEVBVEVSUyIKIEZvciBHRVRCVUxLIHJlcXVlc3RzLCAKIC5JIFJFUEVBVEVSUwogc3BlY2lmaWVzIHRoZSBtYXgtcmVwZWF0ZXJzIHZhbHVlIHRvIHVzZS4gIEZvciBHRVRORVhUIHJlcXVlc3RzLAogLkkgUkVQRUFURVJTCiBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHRvIHJldHJpZXZlIGF0IGEgdGltZS4KIC5UUCAKLS5CSSAtQ3cgIiBXSURUSCIKKy5CSSBcLUN3ICIgV0lEVEgiCiBTcGVjaWZpZXMgdGhlIHdpZHRoIG9mIHRoZSBsaW5lcyB3aGVuIHRoZSB0YWJsZSBpcyBwcmludGVkLgogSWYgdGhlIGxpbmVzIHdpbGwgYmUgbG9uZ2VyLCB0aGUgdGFibGUgd2lsbCBiZSBwcmludGVkIGluIHNlY3Rpb25zIG9mCiBhdCBtb3N0IApAQCAtMTE1LDE0ICsxMTUsMTQgQEAKIC5JIHNubXBjbWQoMSkKIG1hbnVhbCBwYWdlLiAgVGhpcyBPSUQgXGZCbXVzdFxmUCBiZSB0aGF0IG9mIGEgTUlCIHRhYmxlIG9iamVjdC4KIC5TSCBFWEFNUExFUwotJCBzbm1wdGFibGUgLXYgMmMgLWMgcHVibGljIGxvY2FsaG9zdCBhdC5hdFRhYmxlCiskIHNubXB0YWJsZSBcLXYgMmMgXC1jIHB1YmxpYyBsb2NhbGhvc3QgYXQuYXRUYWJsZQogCi1TTk1QIHRhYmxlOiBhdC5hdFRhYmxlIFJGQzEyMTMtTUlCOjphdFRhYmxlCitTTk1QIHRhYmxlOiBhdC5hdFRhYmxlIFJGQzEyMTNcLU1JQjo6YXRUYWJsZQogCiBhdElmSW5kZXggICBhdFBoeXNBZGRyZXNzICAgYXROZXRBZGRyZXNzCiAgICAgICAgIDEgIDg6MDoyMDoyMDowOmFiIDEzMC4yMjUuMjQzLjMzCiAuUFAKLSQgc25tcHRhYmxlIC12IDJjIC1jIHB1YmxpYyAtQ2YgKyBsb2NhbGhvc3QgYXQuYXRUYWJsZQorJCBzbm1wdGFibGUgXC12IDJjIFwtYyBwdWJsaWMgXC1DZiArIGxvY2FsaG9zdCBhdC5hdFRhYmxlCiAKIFNOTVAgdGFibGU6IGF0LmF0VGFibGUKIApAQCAtMTMwLDcgKzEzMCw3IEBACiAxKzg6MDoyMDoyMDowOmFiKzEzMC4yMjUuMjQzLjMzCiAuUFAKIC5uZgotJCBzbm1wdGFibGUgbG9jYWxob3N0IC1DbCAtQ0IgLUNpIC1PWCAtQ2IgLUNjIDE2IC1DdyA2NCBpZlRhYmxlCiskIHNubXB0YWJsZSBsb2NhbGhvc3QgXC1DbCBcLUNCIFwtQ2kgXC1PWCBcLUNiIFwtQ2MgMTYgXC1DdyA2NCBpZlRhYmxlCiAKIFNOTVAgdGFibGU6IGlmVGFibGUKIApAQCAtMTU5LDcgKzE1OSw3IEBACiAuUFAKIC5TSCAiQlVHUyIKIFRoZSB0ZXN0IGZvcgotLkkgVEFCTEUtT0lECisuSSBUQUJMRVwtT0lECiBhY3R1YWxseSBzcGVjaWZ5aW5nIGEgdGFibGUgaXMgcmF0aGVyIGhldXJpc3RpYy4gIE5vdGUgYWxzbyB0aGF0IHRoZQogdGVzdCByZXF1aXJlcyB0aGUgZGVmaW5pbmcgTUlCIGZpbGUgdG8gYmUgbG9hZGVkLgogLlBQCmRpZmYgLS1naXQgYS9tYW4vc25tcHRlc3QuMS5kZWYgYi9tYW4vc25tcHRlc3QuMS5kZWYKaW5kZXggYzFlZGI0OC4uNzg3NDE5NiAxMDA2NDQKLS0tIGEvbWFuL3NubXB0ZXN0LjEuZGVmCisrKyBiL21hbi9zbm1wdGVzdC4xLmRlZgpAQCAtMjcsNyArMjcsNyBAQAogLlwiIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKIC5cIiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgogLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS5USCBTTk1QVEVTVCAxICIwNiBTZXAgMjAwMyIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKKy5USCBTTk1QVEVTVCAxICIyNSBKdWwgMjAwMyIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKIC5TSCBOQU1FCiBzbm1wdGVzdCAtIGNvbW11bmljYXRlcyB3aXRoIGEgbmV0d29yayBlbnRpdHkgdXNpbmcgU05NUCByZXF1ZXN0cwogLlNIIFNZTk9QU0lTCkBAIC02Miw3ICs2Miw3IEBACiAuSVIgdmFyaWFibGVzKDUpIC4KIEZvciBleGFtcGxlOgogLlBQCi1zbm1wdGVzdCAtYyBwdWJsaWMgLXYgMSB6ZXVzCitzbm1wdGVzdCBcLWMgcHVibGljIFwtdiAxIHpldXMKIC5icgogLkJSIFZhcmlhYmxlOiAiIHN5c3RlbS5zeXNEZXNjci4wIgogLmJyCkBAIC0xNzUsNyArMTc1LDcgQEAKIC5QUAogVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIG9mIHNlbmRpbmcgYSBHRVQgcmVxdWVzdCBmb3IgdHdvIE9JRHM6CiAuUFAKLSUgc25tcHRlc3QgLXYgMmMgLWMgcHVibGljIHRlc3Rob3N0Ojk5OTkKKyUgc25tcHRlc3QgXC12IDJjIFwtYyBwdWJsaWMgdGVzdGhvc3Q6OTk5OQogLlBQCiAubmYKIFZhcmlhYmxlOiBzeXN0ZW0uc3lzRGVzY3IuMApAQCAtMTgzLDE4ICsxODMsMTggQEAKIFZhcmlhYmxlOgogUmVjZWl2ZWQgR2V0IFJlc3BvbnNlIGZyb20gMTI4LjIuNTYuMjIwCiByZXF1ZXN0aWQgMHg3RDlGQ0Q2MyBlcnJzdGF0IDB4MCBlcnJpbmRleCAweDAKLVNOTVB2Mi1NSUI6OnN5c0Rlc2NyLjAgPSBTVFJJTkc6IFN1bk9TIHRlc3Rob3N0IDUuOSBHZW5lcmljXzExMjIzMy0wMiBzdW40dQotU05NUHYyLU1JQjo6c3lzQ29udGFjdC4wID0gU1RSSU5HOiB4MTExMQorU05NUHYyXC1NSUI6OnN5c0Rlc2NyLjAgPSBTVFJJTkc6IFN1bk9TIHRlc3Rob3N0IDUuOSBHZW5lcmljXzExMjIzM1wtMDIgc3VuNHUKK1NOTVB2MlwtTUlCOjpzeXNDb250YWN0LjAgPSBTVFJJTkc6IHgxMTExCiAuZmkKIC5QUAogVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIG9mIHNlbmRpbmcgYSBHRVRORVhUIHJlcXVlc3Q6CiAuUFAKIC5uZgotVmFyaWFibGU6IFNOTVB2Mi1NSUI6OnN5c09SVXBUaW1lCitWYXJpYWJsZTogU05NUHYyXC1NSUI6OnN5c09SVXBUaW1lCiBWYXJpYWJsZToKIFJlY2VpdmVkIEdldCBSZXNwb25zZSBmcm9tIDEyOC4yLjU2LjIyMAogcmVxdWVzdGlkIDB4N0Q5RkNENjQgZXJyc3RhdCAweDAgZXJyaW5kZXggMHgwCi1TTk1QdjItTUlCOjpzeXNPUlVwVGltZS4xID0gVGltZXRpY2tzOiAoNikgMDowMDowMC4wNgorU05NUHYyXC1NSUI6OnN5c09SVXBUaW1lLjEgPSBUaW1ldGlja3M6ICg2KSAwOjAwOjAwLjA2CiBWYXJpYWJsZToKIC5maQogLlBQCkBAIC0yMDksNyArMjA5LDcgQEAKIFZhcmlhYmxlOgogUmVjZWl2ZWQgR2V0IFJlc3BvbnNlIGZyb20gMTI4LjIuNTYuMjIwCiByZXF1ZXN0aWQgMHg3RDlGQ0Q2NSBlcnJzdGF0IDB4MCBlcnJpbmRleCAweDAKLVNOTVB2Mi1NSUI6OnN5c0xvY2F0aW9uLjAgPSBTVFJJTkc6IGJ1aWxkaW5nIEEKK1NOTVB2MlwtTUlCOjpzeXNMb2NhdGlvbi4wID0gU1RSSU5HOiBidWlsZGluZyBBCiBWYXJpYWJsZToKIC5maQogLlBQCkBAIC0yMjgsMTcgKzIyOCwxNyBAQAogV2hhdCByZXBlYXQgY291bnQ/IDIKIFJlY2VpdmVkIEdldCBSZXNwb25zZSBmcm9tIDEyOC4yLjU2LjIyMAogcmVxdWVzdGlkIDB4MkVBNzk0MkEgZXJyc3RhdCAweDAgZXJyaW5kZXggMHgwCi1TTk1QdjItTUlCOjpzeXNOYW1lLjAgPSBTVFJJTkc6IHRlc3Rob3N0Ci1TTk1QdjItTUlCOjpzeXNPUkxhc3RDaGFuZ2UuMCA9IFRpbWV0aWNrczogKDU4KSAwOjAwOjAwLjU4Ci1TTk1QdjItTUlCOjpzeXNMb2NhdGlvbi4wID0gU1RSSU5HOiBibGRnIEEKLVNOTVB2Mi1NSUI6OnN5c09SSUQuMSA9IE9JRDogSUYtTUlCOjppZk1JQgorU05NUHYyXC1NSUI6OnN5c05hbWUuMCA9IFNUUklORzogdGVzdGhvc3QKK1NOTVB2MlwtTUlCOjpzeXNPUkxhc3RDaGFuZ2UuMCA9IFRpbWV0aWNrczogKDU4KSAwOjAwOjAwLjU4CitTTk1QdjJcLU1JQjo6c3lzTG9jYXRpb24uMCA9IFNUUklORzogYmxkZyBBCitTTk1QdjJcLU1JQjo6c3lzT1JJRC4xID0gT0lEOiBJRlwtTUlCOjppZk1JQgogVmFyaWFibGU6CiAuZmkKIC5QUAogVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIG9mIHNlbmRpbmcgYW4gSW5mb3JtIHJlcXVlc3Q6CiAuUFAKIC5uZgotc25tcHRlc3QgLXYgMmMgLWMgcHVibGljIHNubXB0cmFwZF9ob3N0Citzbm1wdGVzdCBcLXYgMmMgXC1jIHB1YmxpYyBzbm1wdHJhcGRfaG9zdAogVmFyaWFibGU6ICRJCiBSZXF1ZXN0IHR5cGUgaXMgSW5mb3JtIFJlcXVlc3QKIChBcmUgeW91IHNlbmRpbmcgdG8gdGhlIHJpZ2h0IHBvcnQ/KQpAQCAtMjUyLDEzICsyNTIsMTMgQEAKIC5QUAogVGhlIHNubXB0cmFwZF9ob3N0IHdpbGwgc2hvdzoKIC5QUAotc25tcHRyYXBkX2hvc3QgWzxpcCBhZGRyZXNzPl06IFRyYXAgU05NUHYyLU1JQjo6c3lzQ29udGFjdC4wID0gU1RSSU5HOgorc25tcHRyYXBkX2hvc3QgWzxpcCBhZGRyZXNzPl06IFRyYXAgU05NUHYyXC1NSUI6OnN5c0NvbnRhY3QuMCA9IFNUUklORzoKIHgxMjM0NQogLlBQCiBUaGUgZm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgb2Ygc2VuZGluZyBhbiBTTk1QdjIgVHJhcCByZXF1ZXN0OgogLlBQCiAubmYKLXNubXB0ZXN0IC12IDJjIC1jIHB1YmxpYyBzbm1wdHJhcGRfaG9zdAorc25tcHRlc3QgXC12IDJjIFwtYyBwdWJsaWMgc25tcHRyYXBkX2hvc3QKIFZhcmlhYmxlOiAkVAogUmVxdWVzdCB0eXBlIGlzIFNOTVB2MiBUcmFwIFJlcXVlc3QKIChBcmUgeW91IHNlbmRpbmcgdG8gdGhlIHJpZ2h0IHBvcnQ/KQpAQCAtMjcxLDcgKzI3MSw3IEBACiBUaGUgc25tcHRyYXBkX2hvc3Qgd2lsbCBzaG93OgogLlBQCiAubmYKLXNubXB0cmFwZF9ob3N0IFs8aXAgYWRkcmVzcz5dOiBUcmFwIFNOTVB2Mi1NSUI6OnN5cy4wID0gU1RSSU5HOgorc25tcHRyYXBkX2hvc3QgWzxpcCBhZGRyZXNzPl06IFRyYXAgU05NUHYyXC1NSUI6OnN5cy4wID0gU1RSSU5HOgogYnVpbGRpbmcgYQogLmZpCiAuU0ggIlNFRSBBTFNPIgpkaWZmIC0tZ2l0IGEvbWFuL3NubXB0cmFuc2xhdGUuMS5kZWYgYi9tYW4vc25tcHRyYW5zbGF0ZS4xLmRlZgppbmRleCAwZjMxYTU1Li4yODgyMThiIDEwMDY0NAotLS0gYS9tYW4vc25tcHRyYW5zbGF0ZS4xLmRlZgorKysgYi9tYW4vc25tcHRyYW5zbGF0ZS4xLmRlZgpAQCAtNDIsMTcgKzQyLDE3IEBACiBPSUQgaXMgZWl0aGVyIGEgbnVtZXJpYyBvciB0ZXh0dWFsIG9iamVjdCBpZGVudGlmaWVyLgogLlNIIE9QVElPTlMKIC5UUCA4Ci0uQiAtRFxmSVtUT0tFTlssLi4uXV0KKy5CIFwtRFxmSVtUT0tFTlssLi4uXV0KIFR1cm4gb24gZGVidWdnaW5nIG91dHB1dCBmb3IgdGhlIGdpdmVuCiAuSVIgIlRPS0VOIiAiKHMpLiIKIFRyeQogLklSIEFMTAogZm9yIGV4dHJlbWVseSB2ZXJib3NlIG91dHB1dC4KIC5UUAotLkIgLWgKKy5CIFwtaAogRGlzcGxheSBhIGJyaWVmIHVzYWdlIG1lc3NhZ2UgYW5kIHRoZW4gZXhpdC4KIC5UUAotLkJJIC1tICIgTUlCTElTVCIKKy5CSSBcLW0gIiBNSUJMSVNUIgogU3BlY2lmaWVzIGEgY29sb24gc2VwYXJhdGVkIGxpc3Qgb2YgTUlCIG1vZHVsZXMgdG8gbG9hZCBmb3IgdGhpcwogYXBwbGljYXRpb24uICBUaGlzIG92ZXJyaWRlcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgTUlCUy4KIC5JUApAQCAtNjIsMTEgKzYyLDExIEBACiBmaWxlcy4gIEV2ZXJ5IGZpbGUgd2hvc2UgbmFtZSBkb2VzIG5vdCBiZWdpbiB3aXRoICIuIiB3aWxsIGJlIHBhcnNlZCBhcwogaWYgaXQgd2VyZSBhIE1JQiBmaWxlLgogLlRQCi0uQkkgLU0gIiBESVJMSVNUIgorLkJJIFwtTSAiIERJUkxJU1QiCiBTcGVjaWZpZXMgYSBjb2xvbiBzZXBhcmF0ZWQgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBzZWFyY2ggZm9yIE1JQnMuCiBUaGlzIG92ZXJyaWRlcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgTUlCRElSUy4KIC5UUAotLkJJIC1UICIgVFJBTlNPUFRTIgorLkJJIFwtVCAiIFRSQU5TT1BUUyIKIFByb3ZpZGVzIGNvbnRyb2wgb3ZlciB0aGUgdHJhbnNsYXRpb24gb2YgdGhlIE9JRCB2YWx1ZXMuICBUaGUKIGZvbGxvd2luZwogLkkgVFJBTlNPUFRTCkBAIC05OCwyNCArOTgsMjQgQEAKIER1bXAgYSBudW1lcmljIGFuZCBsYWJlbGVkIGZvcm0gb2YgYWxsIG9iamVjdHMgKGNvbXBhdGlibGUgd2l0aCBNSUIyU0NIRU1BIGZvcm1hdCkuCiAuUkUKIC5UUAotLkIgLVYKKy5CIFwtVgogRGlzcGxheSB2ZXJzaW9uIGluZm9ybWF0aW9uIGZvciB0aGUgYXBwbGljYXRpb24gYW5kIHRoZW4gZXhpdC4KIC5UUAotLkJJIC13ICIgV0lEVEgiCisuQkkgXC13ICIgV0lEVEgiCiBTcGVjaWZpZXMgdGhlIHdpZHRoIG9mCi0uQiAtVHAKKy5CIFwtVHAKIGFuZAotLkIgLVRkCisuQiBcLVRkCiBvdXRwdXQuIFRoZSBkZWZhdWx0IGlzIHZlcnkgbGFyZ2UuCiAuUFAKIEluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZSBvcHRpb25zLCAKIC5CIHNubXB0cmFuc2xhdGUKIHRha2VzIHRoZSBPSUQgaW5wdXQgCi0uUkIgKCAtSSApLAorLlJCICggXC1JICksCiBNSUIgcGFyc2luZwotLlJCICggLU0gKQorLlJCICggXC1NICkKIGFuZCBPSUQgb3V0cHV0Ci0uUkIgKCAtTyApCisuUkIgKCBcLU8gKQogb3B0aW9ucyBkZXNjcmliZWQgaW4gdGhlIAogLkJSICJJTlBVVCBPUFRJT05TIiAiLCAiICJNSUIgUEFSU0lORyBPUFRJT05TIiAiIGFuZCAiICJPVVRQVVQgT1BUSU9OUyIKIHNlY3Rpb25zIG9mIHRoZQpAQCAtMTIzLDQwICsxMjMsNDAgQEAKIG1hbnVhbCBwYWdlLgogLlNIIEVYQU1QTEVTCiAuSVAgXChidSA0Ci1zbm1wdHJhbnNsYXRlIC1PbiAtSVIgc3lzRGVzY3IKK3NubXB0cmFuc2xhdGUgXC1PbiBcLUlSIHN5c0Rlc2NyCiAuYnIKIHdpbGwgdHJhbnNsYXRlICJzeXNEZXNjciIgdG8gYSBtb3JlIHF1YWxpZmllZCBmb3JtOgogLklQCiBzeXN0ZW0uc3lzRGVzY3IKIC5JUCBcKGJ1IDQKLXNubXB0cmFuc2xhdGUgLU9uZiAtSVIgc3lzRGVzY3IKK3NubXB0cmFuc2xhdGUgXC1PbmYgXC1JUiBzeXNEZXNjcgogLmJyCiB3aWxsIHRyYW5zbGF0ZSAic3lzRGVjciIgdG86CiAuSVAKLS5SSSAuaXNvLm9yZy5kb2QuaW50ZXJuZXQubWdtdC5taWItMi5zeXN0ZW0uc3lzRGVzY3IKKy5SSSAuaXNvLm9yZy5kb2QuaW50ZXJuZXQubWdtdC5taWJcLTIuc3lzdGVtLnN5c0Rlc2NyCiAuSVAgXChidSA0IAotc25tcHRyYW5zbGF0ZSAtVGQgLU9TIHN5c3RlbS5zeXNEZXNjcgorc25tcHRyYW5zbGF0ZSBcLVRkIFwtT1Mgc3lzdGVtLnN5c0Rlc2NyCiAuYnIKIHdpbGwgdHJhbnNsYXRlICJzeXNEZWNyIiBpbnRvOgogLklQCiAubmYKLVNOTVB2Mi1NSUI6OnN5c0Rlc2NyCi1zeXNEZXNjciBPQkpFQ1QtVFlQRQotICAtLSBGUk9NIFNOTVB2Mi1NSUIKLSAgLS0gVEVYVFVBTCBDT05WRU5USU9OIERpc3BsYXlTdHJpbmcKK1NOTVB2MlwtTUlCOjpzeXNEZXNjcgorc3lzRGVzY3IgT0JKRUNUXC1UWVBFCisgIFwtXC0gRlJPTSBTTk1QdjJcLU1JQgorICBcLVwtIFRFWFRVQUwgQ09OVkVOVElPTiBEaXNwbGF5U3RyaW5nCiAgIFNZTlRBWCBPQ1RFVCBTVFJJTkcgKDAuLjI1NSkKLSAgRElTUExBWS1ISU5UICIyNTVhIgotICBNQVgtQUNDRVNTIHJlYWQtb25seQorICBESVNQTEFZXC1ISU5UICIyNTVhIgorICBNQVhcLUFDQ0VTUyByZWFkXC1vbmx5CiAgIFNUQVRVUyBjdXJyZW50CiAgIERFU0NSSVBUSU9OICJBIHRleHR1YWwgZGVzY3JpcHRpb24gb2YgdGhlIGVudGl0eS4gVGhpcwogICAgICAgICAgICAgICAgdmFsdWUgc2hvdWxkIGluY2x1ZGUgdGhlIGZ1bGwgbmFtZSBhbmQKICAgICAgICAgICAgICAgIHZlcnNpb24gaWRlbnRpZmljYXRpb24gb2YgdGhlIHN5c3RlbSdzCi0gICAgICAgICAgICAgICBoYXJkd2FyZSB0eXBlLCBzb2Z0d2FyZSBvcGVyYXRpbmctc3lzdGVtLAorICAgICAgICAgICAgICAgaGFyZHdhcmUgdHlwZSwgc29mdHdhcmUgb3BlcmF0aW5nXC1zeXN0ZW0sCiAgICAgICAgICAgICAgICBhbmQgbmV0d29ya2luZyBzb2Z0d2FyZS4iCi06Oj0geyBpc28oMSkgb3JnKDMpIGRvZCg2KSBpbnRlcm5ldCgxKSBtZ210KDIpIG1pYi0yKDEpIHN5c3RlbSgxKSAxIH0KKzo6PSB7IGlzbygxKSBvcmcoMykgZG9kKDYpIGludGVybmV0KDEpIG1nbXQoMikgbWliXC0yKDEpIHN5c3RlbSgxKSAxIH0KIC5maQogLklQIFwoYnUgNCAKLXNubXB0cmFuc2xhdGUgLVRwIC1PUyBzeXN0ZW0KK3NubXB0cmFuc2xhdGUgXC1UcCBcLU9TIHN5c3RlbQogLmJyCiB3aWxsIHByaW50IHRoZSBmb2xsb3dpbmcgdHJlZToKIC5JUApAQCAtMTk2LDcgKzE5Niw3IEBACiAuZmkKIC5QUAogLklQIFwoYnUgNAotc25tcHRyYW5zbGF0ZSAtVGEgfCBoZWFkCitzbm1wdHJhbnNsYXRlIFwtVGEgfCBoZWFkCiAuYnIKIHdpbGwgcHJvZHVjZSB0aGUgZm9sbG93aW5nIGR1bXA6CiAuSVAKQEAgLTIxNCw3ICsyMTQsNyBAQAogLmZpCiAuUFAKIC5JUCBcKGJ1IDQKLXNubXB0cmFuc2xhdGUgLVRsIHwgaGVhZAorc25tcHRyYW5zbGF0ZSBcLVRsIHwgaGVhZAogLmJyCiB3aWxsIHByb2R1Y2UgdGhlIGZvbGxvd2luZyBkdW1wOgogLklQCkBAIC0yMjQsMTUgKzIyNCwxNSBAQAogLlJJIC5pc28oMSkub3JnKDMpLmRvZCg2KS5pbnRlcm5ldCgxKQogLlJJIC5pc28oMSkub3JnKDMpLmRvZCg2KS5pbnRlcm5ldCgxKS5kaXJlY3RvcnkoMSkKIC5SSSAuaXNvKDEpLm9yZygzKS5kb2QoNikuaW50ZXJuZXQoMSkubWdtdCgyKQotLlJJIC5pc28oMSkub3JnKDMpLmRvZCg2KS5pbnRlcm5ldCgxKS5tZ210KDIpLm1pYi0yKDEpCi0uUkkgLmlzbygxKS5vcmcoMykuZG9kKDYpLmludGVybmV0KDEpLm1nbXQoMikubWliLTIoMSkuc3lzdGVtKDEpCi0uUkkgLmlzbygxKS5vcmcoMykuZG9kKDYpLmludGVybmV0KDEpLm1nbXQoMikubWliLTIoMSkuc3lzdGVtKDEpLnN5c0Rlc2NyKDEpCi0uUkkgLmlzbygxKS5vcmcoMykuZG9kKDYpLmludGVybmV0KDEpLm1nbXQoMikubWliLTIoMSkuc3lzdGVtKDEpLnN5c09iamVjdElEKDIpCi0uUkkgLmlzbygxKS5vcmcoMykuZG9kKDYpLmludGVybmV0KDEpLm1nbXQoMikubWliLTIoMSkuc3lzdGVtKDEpLnN5c1VwVGltZSgzKQorLlJJIC5pc28oMSkub3JnKDMpLmRvZCg2KS5pbnRlcm5ldCgxKS5tZ210KDIpLm1pYlwtMigxKQorLlJJIC5pc28oMSkub3JnKDMpLmRvZCg2KS5pbnRlcm5ldCgxKS5tZ210KDIpLm1pYlwtMigxKS5zeXN0ZW0oMSkKKy5SSSAuaXNvKDEpLm9yZygzKS5kb2QoNikuaW50ZXJuZXQoMSkubWdtdCgyKS5taWJcLTIoMSkuc3lzdGVtKDEpLnN5c0Rlc2NyKDEpCisuUkkgLmlzbygxKS5vcmcoMykuZG9kKDYpLmludGVybmV0KDEpLm1nbXQoMikubWliXC0yKDEpLnN5c3RlbSgxKS5zeXNPYmplY3RJRCgyKQorLlJJIC5pc28oMSkub3JnKDMpLmRvZCg2KS5pbnRlcm5ldCgxKS5tZ210KDIpLm1pYlwtMigxKS5zeXN0ZW0oMSkuc3lzVXBUaW1lKDMpCiAuZmkKIC5QUAogLklQIFwoYnUgNAotc25tcHRyYW5zbGF0ZSAtVG8gfCBoZWFkCitzbm1wdHJhbnNsYXRlIFwtVG8gfCBoZWFkCiAuYnIKIHdpbGwgcHJvZHVjZSB0aGUgZm9sbG93aW5nIGR1bXAKIC5JUApAQCAtMjUwLDcgKzI1MCw3IEBACiAuZmkKIC5QUAogLklQIFwoYnUgNAotc25tcHRyYW5zbGF0ZSAtVHMgfCBoZWFkCitzbm1wdHJhbnNsYXRlIFwtVHMgfCBoZWFkCiAuYnIKIHdpbGwgcHJvZHVjZSB0aGUgZm9sbG93aW5nIGR1bXAKIC5JUApAQCAtMjYwLDE1ICsyNjAsMTUgQEAKIC5SSSAuaXNvLm9yZy5kb2QuaW50ZXJuZXQKIC5SSSAuaXNvLm9yZy5kb2QuaW50ZXJuZXQuZGlyZWN0b3J5CiAuUkkgLmlzby5vcmcuZG9kLmludGVybmV0Lm1nbXQKLS5SSSAuaXNvLm9yZy5kb2QuaW50ZXJuZXQubWdtdC5taWItMgotLlJJIC5pc28ub3JnLmRvZC5pbnRlcm5ldC5tZ210Lm1pYi0yLnN5c3RlbQotLlJJIC5pc28ub3JnLmRvZC5pbnRlcm5ldC5tZ210Lm1pYi0yLnN5c3RlbS5zeXNEZXNjcgotLlJJIC5pc28ub3JnLmRvZC5pbnRlcm5ldC5tZ210Lm1pYi0yLnN5c3RlbS5zeXNPYmplY3RJRAotLlJJIC5pc28ub3JnLmRvZC5pbnRlcm5ldC5tZ210Lm1pYi0yLnN5c3RlbS5zeXNVcFRpbWUKKy5SSSAuaXNvLm9yZy5kb2QuaW50ZXJuZXQubWdtdC5taWJcLTIKKy5SSSAuaXNvLm9yZy5kb2QuaW50ZXJuZXQubWdtdC5taWJcLTIuc3lzdGVtCisuUkkgLmlzby5vcmcuZG9kLmludGVybmV0Lm1nbXQubWliXC0yLnN5c3RlbS5zeXNEZXNjcgorLlJJIC5pc28ub3JnLmRvZC5pbnRlcm5ldC5tZ210Lm1pYlwtMi5zeXN0ZW0uc3lzT2JqZWN0SUQKKy5SSSAuaXNvLm9yZy5kb2QuaW50ZXJuZXQubWdtdC5taWJcLTIuc3lzdGVtLnN5c1VwVGltZQogLmZpCiAuUFAKIC5JUCBcKGJ1IDQKLXNubXB0cmFuc2xhdGUgLVR0IHwgaGVhZAorc25tcHRyYW5zbGF0ZSBcLVR0IHwgaGVhZAogLmJyCiB3aWxsIHByb2R1Y2UgdGhlIGZvbGxvd2luZyBkdW1wCiAuSVAKQEAgLTI3OCw3ICsyNzgsNyBAQAogICAgICAgaW50ZXJuZXQoMSkgdHlwZT0wCiAgICAgICAgIGRpcmVjdG9yeSgxKSB0eXBlPTAKICAgICAgICAgbWdtdCgyKSB0eXBlPTAKLSAgICAgICAgICBtaWItMigxKSB0eXBlPTAKKyAgICAgICAgICBtaWJcLTIoMSkgdHlwZT0wCiAgICAgICAgICAgICBzeXN0ZW0oMSkgdHlwZT0wCiAgICAgICAgICAgICAgIHN5c0Rlc2NyKDEpIHR5cGU9MiB0Yz00IGhpbnQ9MjU1YQogICAgICAgICAgICAgICBzeXNPYmplY3RJRCgyKSB0eXBlPTEKZGlmZiAtLWdpdCBhL21hbi9zbm1wdHJhcC4xLmRlZiBiL21hbi9zbm1wdHJhcC4xLmRlZgppbmRleCAwOWFlYzc5Li41NWMxOWQxIDEwMDY0NAotLS0gYS9tYW4vc25tcHRyYXAuMS5kZWYKKysrIGIvbWFuL3NubXB0cmFwLjEuZGVmCkBAIC0xLDcgKzEsNyBAQAogLlwiIC0qLSBucm9mZiAtKi0KLS5cIiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQuIAotLlwiIFNlZSB0aGUgTmV0LVNOTVAgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyCi0uXCIgY29weXJpZ2h0cyB0aGF0IG1heSBhcHBseToKKy5cIiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQuICBTZWUKKy5cIiB0aGUgTmV0LVNOTVAgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyIGNvcHlyaWdodHMKKy5cIiB0aGF0IG1heSBhcHBseToKIC5cIiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIiAJQ29weXJpZ2h0IDE5ODgsIDE5ODkgYnkgQ2FybmVnaWUgTWVsbG9uIFVuaXZlcnNpdHkKIC5cIiAKQEAgLTI3LDEzICsyNywxMyBAQAogLlNIIE5BTUUKIHNubXB0cmFwLCBzbm1waW5mb3JtIC0gc2VuZHMgYW4gU05NUCBub3RpZmljYXRpb24gdG8gYSBtYW5hZ2VyCiAuU0ggU1lOT1BTSVMKLS5CIHNubXB0cmFwIC12IDEKKy5CIHNubXB0cmFwIFwtdiAxCiBbQ09NTU9OIE9QVElPTlNdIEFHRU5UIGVudGVycHJpc2Utb2lkIGFnZW50IGdlbmVyaWMtdHJhcCBzcGVjaWZpYy10cmFwIHVwdGltZSBbT0lEIFRZUEUgVkFMVUVdLi4uCiAuUFAKLS5CIHNubXB0cmFwIC12IFsyY3wzXQotW0NPTU1PTiBPUFRJT05TXSBbLUNpXSBBR0VOVCB1cHRpbWUgdHJhcC1vaWQgW09JRCBUWVBFIFZBTFVFXS4uLgorLkIgc25tcHRyYXAgXC12IFsyY3wzXQorW0NPTU1PTiBPUFRJT05TXSBbXC1DaV0gQUdFTlQgdXB0aW1lIHRyYXAtb2lkIFtPSUQgVFlQRSBWQUxVRV0uLi4KIC5QUAotLkIgc25tcGluZm9ybSAtdiBbMmN8M10KKy5CIHNubXBpbmZvcm0gXC12IFsyY3wzXQogW0NPTU1PTiBPUFRJT05TXSBBR0VOVCB1cHRpbWUgdHJhcC1vaWQgW09JRCBUWVBFIFZBTFVFXS4uLgogLlNIIERFU0NSSVBUSU9OCiAuQiBzbm1wdHJhcApAQCAtNDcsNyArNDcsNyBAQAogV2hlbiBpbnZva2VkIGFzCiAuQiBzbm1waW5mb3JtLAogb3Igd2hlbgotLkIgLUNpCisuQiBcLUNpCiBpcyBhZGRlZCB0byB0aGUgY29tbWFuZCBsaW5lIGZsYWdzIG9mIHNubXB0cmFwLCBpdCBzZW5kcyBhbgogSU5GT1JNLVBEVSwgZXhwZWN0aW5nIGEgcmVzcG9uc2UgZnJvbSB0aGUgdHJhcCByZWNlaXZlciwKIHJldHJhbnNtaXR0aW5nIGlmIHJlcXVpcmVkLiAgT3RoZXJ3aXNlIGl0IHNlbmRzIGFuIFRSQVAtUERVIG9yCkBAIC0xMTEsNyArMTExLDcgQEAKIC5QUAogRm9yIGV4YW1wbGU6CiAuUFAKLXNubXB0cmFwIC12IDEgLWMgcHVibGljIG1hbmFnZXIgZW50ZXJwcmlzZXMuc3BpZGVyIHRlc3QtaHViIDMgMCAnJyBpbnRlcmZhY2VzLmlmdGFibGUuaWZlbnRyeS5pZmluZGV4LjEgaSAxCitzbm1wdHJhcCBcLXYgMSBcLWMgcHVibGljIG1hbmFnZXIgZW50ZXJwcmlzZXMuc3BpZGVyIHRlc3RcLWh1YiAzIDAgJycgaW50ZXJmYWNlcy5pZnRhYmxlLmlmZW50cnkuaWZpbmRleC4xIGkgMQogLlBQCiB3aWxsIHNlbmQgYSBnZW5lcmljIGxpbmtVcCB0cmFwIHRvIG1hbmFnZXIsIGZvciBpbnRlcmZhY2UgMS4KIC5TSCBPUFRJT05TCkBAIC0xMjAsNyArMTIwLDcgQEAKIC5JIHNubXBjbWQoMSkgCiBtYW51YWwgcGFnZSBpbgogYWRkaXRpb24gdG8gdGhlIAotLkIgLUNpCisuQiBcLUNpCiBvcHRpb24gZGVzY3JpYmVkIGFib3ZlLgogTm90ZSB0aGF0CiAuQiBzbm1wdHJhcApkaWZmIC0tZ2l0IGEvbWFuL3NubXB0cmFwZC44LmRlZiBiL21hbi9zbm1wdHJhcGQuOC5kZWYKaW5kZXggYjYyNDdiZi4uMDExYTRhNSAxMDA2NDQKLS0tIGEvbWFuL3NubXB0cmFwZC44LmRlZgorKysgYi9tYW4vc25tcHRyYXBkLjguZGVmCkBAIC0xLDcgKzEsNyBAQAogLlwiIC0qLSBucm9mZiAtKi0KLS5cIiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQuCi0uXCIgU2VlIHRoZSBOZXQtU05NUCBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIKLS5cIiBjb3B5cmlnaHRzIHRoYXQgbWF5IGFwcGx5OgorLlwiIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodC4gIFNlZQorLlwiIHRoZSBOZXQtU05NUCBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cworLlwiIHRoYXQgbWF5IGFwcGx5OgogLlwiIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiIAlDb3B5cmlnaHQgMTk4OSBieSBDYXJuZWdpZSBNZWxsb24gVW5pdmVyc2l0eQogLlwiIApAQCAtMjMsNyArMjMsNyBAQAogLlwiIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMKIC5cIiBTT0ZUV0FSRS4KIC5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0uVEggU05NUFRSQVBEIDggIjMwIE1hciAyMDExIiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgorLlRIIFNOTVBUUkFQRCA4ICIwNSBGZWIgMjAxMyIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKIC5TSCBOQU1FCiBzbm1wdHJhcGQgLSBSZWNlaXZlIGFuZCBsb2cgU05NUCB0cmFwIG1lc3NhZ2VzLgogLlNIIFNZTk9QU0lTCkBAIC0zOSw4OCArMzksODggQEAKIG11c3QgdHlwaWNhbGx5IGJlIHJ1biBhcyByb290LgogLlNIIE9QVElPTlMKIC5UUCA4Ci0uQiAtYQorLkIgXC1hCiBJZ25vcmUgYXV0aGVudGljYXRpb25GYWlsdXJlIHRyYXBzLgogLlRQCi0uQiAtQQorLkIgXC1BCiBBcHBlbmQgdG8gdGhlIGxvZyBmaWxlIHJhdGhlciB0aGFuIHRydW5jYXRpbmcgaXQuCiAKLU5vdGUgdGhhdCB0aGlzIG5lZWRzIHRvIGNvbWUgXGZJYmVmb3JlXGZQIGFueSAtTGYgb3B0aW9ucworTm90ZSB0aGF0IHRoaXMgbmVlZHMgdG8gY29tZSBcZkliZWZvcmVcZlAgYW55IFwtTGYgb3B0aW9ucwogdGhhdCBpdCBzaG91bGQgYXBwbHkgdG8uCiAuVFAKLS5CSSAiLWMiICIgRklMRSIKKy5CSSAiXC1jIiAiIEZJTEUiCiBSZWFkIAogLkkgRklMRQogYXMgYSBjb25maWd1cmF0aW9uIGZpbGUKIChvciBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGNvbmZpZ3VyYXRpb24gZmlsZXMpLgogLlRQCi0uQiAtQworLkIgXC1DCiBEbyBub3QgcmVhZCBhbnkgY29uZmlndXJhdGlvbiBmaWxlcyBleGNlcHQgdGhlIG9uZSBvcHRpb25hbGx5IHNwZWNpZmllZCBieSB0aGUgCi0uQiAtYyAKKy5CIFwtYyAKIG9wdGlvbi4KIC5UUAotLkIgLWQKKy5CIFwtZAogRHVtcCAoaW4gaGV4YWRlY2ltYWwpIHRoZSBzZW50IGFuZCByZWNlaXZlZCBTTk1QIHBhY2tldHMuCiAuVFAKLS5CSSAtRFtUT0tFTlssLi4uXV0KKy5CSSBcLURbVE9LRU5bLC4uLl1dCiBUdXJuIG9uIGRlYnVnZ2luZyBvdXRwdXQgZm9yIHRoZSBnaXZlbgogLklSICJUT0tFTiIgIihzKS4iCiBUcnkKIC5JUiBBTEwKIGZvciBleHRyZW1lbHkgdmVyYm9zZSBvdXRwdXQuCiAuVFAKLS5CIC1mCisuQiBcLWYKIERvIG5vdCBmb3JrKCkgZnJvbSB0aGUgY2FsbGluZyBzaGVsbC4KIC5UUAotLkJJIC1GICIgRk9STUFUIgorLkJJIFwtRiAiIEZPUk1BVCIKIFdoZW4gbG9nZ2luZyB0byBzdGFuZGFyZCBvdXRwdXQsIHVzZSB0aGUgZm9ybWF0IGluIHRoZSBzdHJpbmcKIC5JUiBGT1JNQVQgLgogU2VlIHRoZSBzZWN0aW9uCiAuQiBGT1JNQVQgU1BFQ0lGSUNBVElPTlMKIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCiAuVFAKLS5CIC1oLCAtLWhlbHAKKy5CIFwtaCwgXC1cLWhlbHAKIERpc3BsYXkgYSBicmllZiB1c2FnZSBtZXNzYWdlIGFuZCB0aGVuIGV4aXQuCiAuVFAKLS5CIC1ICisuQiBcLUgKIERpc3BsYXkgYSBsaXN0IG9mIGNvbmZpZ3VyYXRpb24gZmlsZSBkaXJlY3RpdmVzIHVuZGVyc3Rvb2QgYnkgdGhlCiB0cmFwIGRhZW1vbiBhbmQgdGhlbiBleGl0LgogLlRQCi0uQiAtSSBcZklbLV1JTklUTElTVAorLkIgXC1JIFxmSVtcLV1JTklUTElTVAogU3BlY2lmaWVzIHdoaWNoIG1vZHVsZXMgc2hvdWxkIChvciBzaG91bGQgbm90KSBiZSBpbml0aWFsaXplZAogd2hlbiBzbm1wdHJhcGQgc3RhcnRzIHVwLiAgSWYgdGhlIGNvbW1hLXNlcGFyYXRlZAogLkkgSU5JVExJU1QKIGlzIHByZWNlZGVkCi13aXRoIGEgJy0nLCBpdCBpcyB0aGUgbGlzdCBvZiBtb2R1bGVzIHRoYXQgc2hvdWxkIFxmSW5vdFxmUiBiZSBzdGFydGVkLgord2l0aCBhICdcLScsIGl0IGlzIHRoZSBsaXN0IG9mIG1vZHVsZXMgdGhhdCBzaG91bGQgXGZJbm90XGZSIGJlIHN0YXJ0ZWQuCiBPdGhlcndpc2UgdGhpcyBpcyB0aGUgbGlzdCBvZiB0aGUgXGZJb25seVxmUiBtb2R1bGVzIHRoYXQgc2hvdWxkIGJlIHN0YXJ0ZWQuCiAKIFRvIGdldCBhIGxpc3Qgb2YgY29tcGlsZWQgbW9kdWxlcywgcnVuIHNubXB0cmFwZCB3aXRoIHRoZSBhcmd1bWVudHMKLS5JICItRG1pYl9pbml0IC1IIgorLkkgIlwtRG1pYl9pbml0IFwtSCIKIChhc3N1bWluZyBkZWJ1Z2dpbmcgc3VwcG9ydCBoYXMgYmVlbiBjb21waWxlZCBpbikuCiAuVFAKLS5CIC1MW2Vmb3NdCisuQiBcLUxbZWZvc10KIFNwZWNpZnkgd2hlcmUgbG9nZ2luZyBvdXRwdXQgc2hvdWxkIGJlIGRpcmVjdGVkIChzdGFuZGFyZCBlcnJvciBvciBvdXRwdXQsCiB0byBhIGZpbGUgb3IgdmlhIHN5c2xvZykuICBTZWUgTE9HR0lORyBPUFRJT05TIGluIFxmSXNubXBjbWQoMSlcZlIgZm9yIGRldGFpbHMuCiAuVFAKLS5CUiAtbSAiIFxmSU1JQkxJU1QiCisuQlIgXC1tICIgXGZJTUlCTElTVCIKIFNwZWNpZmllcyBhIGNvbG9uIHNlcGFyYXRlZCBsaXN0IG9mIE1JQiBtb2R1bGVzIHRvIGxvYWQgZm9yIHRoaXMKIGFwcGxpY2F0aW9uLiAgVGhpcyBvdmVycmlkZXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIE1JQlMuCiBTZWUgXGZJc25tcGNtZCgxKVxmUiBmb3IgZGV0YWlscy4KIC5UUAotLkJSIC1NICIgXGZJRElSTElTVCIKKy5CUiBcLU0gIiBcZklESVJMSVNUIgogU3BlY2lmaWVzIGEgY29sb24gc2VwYXJhdGVkIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGZvciBNSUJzLgogVGhpcyBvdmVycmlkZXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIE1JQkRJUlMuCiBTZWUgXGZJc25tcGNtZCgxKVxmUiBmb3IgZGV0YWlscy4KIC5UUAotLkJSIC1uCisuQlIgXC1uCiBEbyBub3QgYXR0ZW1wdCB0byB0cmFuc2xhdGUgc291cmNlIGFkZHJlc3NlcyBvZiBpbmNvbWluZyBwYWNrZXRzIGludG8KIGhvc3RuYW1lcy4KIC5UUAotLkJJIC1wICIgRklMRSIKKy5CSSBcLXAgIiBGSUxFIgogU2F2ZSB0aGUgcHJvY2VzcyBJRCBvZiB0aGUgdHJhcCBkYWVtb24gaW4KIC5JUiBGSUxFICIuIgogLlRQCi0uQkkgLU8gIiBbYWJlRWZucVFzU3RUdVV2eFhdIgorLkJJIFwtTyAiIFthYmVFZm5xUXNTdFR1VXZ4WF0iCiBTcGVjaWZpZXMgaG93IE1JQiBvYmplY3RzIGFuZCBvdGhlciBvdXRwdXQgc2hvdWxkIGJlIGRpc3BsYXllZC4KIFNlZSB0aGUgc2VjdGlvbgogLkIgT1VUUFVUIE9QVElPTlMKQEAgLTEyOCwyMiArMTI4LDI1IEBACiAuSSBzbm1wY21kKDEpCiBtYW51YWwgcGFnZSBmb3IgZGV0YWlscy4KIC5UUAotLkJJIC10CisuQkkgXC10CiBEbyBub3QgbG9nIHRyYXBzIHRvIHN5c2xvZy4gIFRoaXMgZGlzYWJsZXMgbG9nZ2luZyB0byBzeXNsb2cuICBUaGlzIGlzCiB1c2VmdWwgaWYgeW91IHdhbnQgdGhlIHNubXB0cmFwZCBhcHBsaWNhdGlvbiB0bwogLkIgb25seQogcnVuIHRyYXBoYW5kbGUgaG9va3MgYW5kIG5vdCB0byBsb2cgYW55IHRyYXBzIHRvIGFueSBsb2NhdGlvbi4KIC5UUAotLkIgLXYsIC0tdmVyc2lvbgorLkIgXC12LCBcLVwtdmVyc2lvbgogUHJpbnQgdmVyc2lvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHRyYXAgZGFlbW9uIGFuZCB0aGVuIGV4aXQuCiAuVFAKLS5CIC14IFxmSUFERFJFU1MKKy5CIFwteCBcZklBRERSRVNTCiBDb25uZWN0IHRvIHRoZSBBZ2VudFggbWFzdGVyIGFnZW50IG9uIHRoZSBzcGVjaWZpZWQgYWRkcmVzcywKIHJhdGhlciB0aGFuIHRoZSBkZWZhdWx0IEFHRU5UWF9TT0NLRVQuCiBTZWUgXGZJc25tcGQoOClcZlIgZm9yIGRldGFpbHMgb2YgdGhlIGZvcm1hdCBvZiBzdWNoIGFkZHJlc3Nlcy4KIC5UUAotLkJJIC0tICJuYW1lIj0idmFsdWUiCi1BbGxvd3MgdG8gc3BlY2lmeSBhbnkgdG9rZW4gKCJuYW1lIikgc3VwcG9ydGVkIGluIHRoZQorLkIgXC1YCitEbyBub3QgY29ubmVjdCB0byBhIEFnZW50WCBtYXN0ZXIgYWdlbnQKKy5UUAorLkJJIFwtXC0gIm5hbWUiPSJ2YWx1ZSIKK0FsbG93cyBvbmUgdG8gc3BlY2lmeSBhbnkgdG9rZW4gKCJuYW1lIikgc3VwcG9ydGVkIGluIHRoZQogLkkgc25tcHRyYXBkLmNvbmYKIGZpbGUgYW5kIHNldHMgaXRzIHZhbHVlIHRvICJ2YWx1ZSIuIE92ZXJyaWRlcyB0aGUgY29ycmVzcG9uZGluZyB0b2tlbiBpbiB0aGUKIC5JIHNubXB0cmFwZC5jb25mCkBAIC0xNjIsMTEgKzE2NSwxMSBAQAogYSBsaXRlcmFsICUKIC5UUAogLkIgJWEKLXRoZSBjb250ZW50cyBvZiB0aGUgYWdlbnQtYWRkciBmaWVsZCBvZiB0aGUgUERVICh2MSBUUkFQcyBvbmx5KQordGhlIGNvbnRlbnRzIG9mIHRoZSBhZ2VudFwtYWRkciBmaWVsZCBvZiB0aGUgUERVICh2MSBUUkFQcyBvbmx5KQogLlRQCiAuQiAlQQotdGhlIGhvc3RuYW1lIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNvbnRlbnRzIG9mIHRoZSBhZ2VudC1hZGRyIGZpZWxkIG9mCi10aGUgUERVLCBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSB0aGUgY29udGVudHMgb2YgdGhlIGFnZW50LWFkZHIgZmllbGQKK3RoZSBob3N0bmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb250ZW50cyBvZiB0aGUgYWdlbnRcLWFkZHIgZmllbGQgb2YKK3RoZSBQRFUsIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIHRoZSBjb250ZW50cyBvZiB0aGUgYWdlbnRcLWFkZHIgZmllbGQKIG9mIHRoZSBQRFUgKHYxIFRSQVBzIG9ubHkpLgogLlRQCiAuQiAlYgpAQCAtMjU0LDcgKzI1Nyw3IEBACiBhbmQgYSBmbGFnIHZhbHVlLiBUaGUgZm9sbG93aW5nIGZsYWdzIGFyZSBzdXBwb3J0ZWQ6CiAuUlMgNCAKIC5UUCA0Ci0uQiAtCisuQiBcLQogbGVmdCBqdXN0aWZ5CiAuVFAKIC5CIDAKQEAgLTI3OSw3ICsyODIsNyBAQAogLlBQCiAuUlMKIC5uZgotc25tcHRyYXBkIC1QIC1GICIlMDIuMmg6JTAyLjJqIFRSQVAldy4lcSBmcm9tICVBXGVuIgorc25tcHRyYXBkIFwtUCBcLUYgIiUwMi4yaDolMDIuMmogVFJBUCV3LiVxIGZyb20gJUFcZW4iCiAuZmkKIC5SRQogLlBQCkBAIC0yODcsNyArMjkwLDcgQEAKIC5QUAogLlJTCiAubmYKLXNubXB0cmFwZCAtUCAtRiAiJSMwMi4yaDolIzAyLjJqIFRSQVAldy4lcSBmcm9tICVBXGVuIgorc25tcHRyYXBkIFwtUCBcLUYgIiUjMDIuMmg6JSMwMi4yaiBUUkFQJXcuJXEgZnJvbSAlQVxlbiIKIC5maQogLlJFCiAuU0ggTElTVEVOSU5HIEFERFJFU1NFUwpAQCAtMzAxLDE2ICszMDQsMTYgQEAKIC5JIHNubXBkKDgpCiBtYW51YWwgcGFnZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZm9ybWF0IG9mIGxpc3RlbmluZwogYWRkcmVzc2VzLgotLlNIIE5PVElGSUNBVElPTi1MT0ctTUlCIFNVUFBPUlQKKy5TSCBOT1RJRklDQVRJT05cLUxPR1wtTUlCIFNVUFBPUlQKIEFzIG9mIG5ldC1zbm1wIDUuMCwgdGhlIHNubXB0cmFwZCBhcHBsaWNhdGlvbiBzdXBwb3J0cyB0aGUKLU5PVElGSUNBVElPTi1MT0ctTUlCLiAgSXQgZG9lcyB0aGlzIGJ5IG9wZW5pbmcgYW4gQWdlbnRYIHN1YmFnZW50CitOT1RJRklDQVRJT05cLUxPR1wtTUlCLiAgSXQgZG9lcyB0aGlzIGJ5IG9wZW5pbmcgYW4gQWdlbnRYIHN1YmFnZW50CiBjb25uZWN0aW9uIHRvIHRoZSBtYXN0ZXIgc25tcGQgYWdlbnQgYW5kIHJlZ2lzdGVyaW5nIHRoZSBub3RpZmljYXRpb24KIGxvZyB0YWJsZXMuICBBcyBsb25nIGFzIHRoZSBzbm1wZCBhcHBsaWNhdGlvbiBpcyBzdGFydGVkIGZpcnN0LCBpdAogd2lsbCBhdHRhY2ggaXRzZWxmIHRvIGl0IGFuZCB0aHVzIHlvdSBzaG91bGQgYmUgYWJsZSB0byB2aWV3IHRoZSBsYXN0CiByZWNvcmRlZCBub3RpZmljYXRpb25zIHZpYSB0aGUgbmxtTG9nVGFibGUgYW5kIG5sbUxvZ1ZhcmlhYmxlVGFibGUuCiBTZWUgdGhlIHNubXB0cmFwZC5jb25mIGZpbGUgYW5kIHRoZSAiZG9Ob3RSZXRhaW5Ob3RpZmljYXRpb25Mb2dzIiB0b2tlbgogZm9yIHR1cm5pbmcKLW9mZiB0aGlzIHN1cHBvcnQuICBTZWUgdGhlIE5PVElGSUNBVElPTi1MT0ctTUlCIGZvciBtb3JlIGRldGFpbHMgYWJvdXQKK29mZiB0aGlzIHN1cHBvcnQuICBTZWUgdGhlIE5PVElGSUNBVElPTlwtTE9HXC1NSUIgZm9yIG1vcmUgZGV0YWlscyBhYm91dAogdGhlIE1JQiBpdHNlbGYuCiAuU0ggRVhURU5TSUJJTElUWSBBTkQgQ09ORklHVVJBVElPTgogU2VlIHRoZQpkaWZmIC0tZ2l0IGEvbWFuL3NubXB0cmFwZC5jb25mLjUuZGVmIGIvbWFuL3NubXB0cmFwZC5jb25mLjUuZGVmCmluZGV4IGUyMzk0Y2IuLjkyNDJiMjggMTAwNjQ0Ci0tLSBhL21hbi9zbm1wdHJhcGQuY29uZi41LmRlZgorKysgYi9tYW4vc25tcHRyYXBkLmNvbmYuNS5kZWYKQEAgLTM5LDcgKzM5LDcgQEAKIFRoZSBkZWZhdWx0IGJlaGF2aW91ciBpcyB0bwogbGlzdGVuIG9uIFVEUCBwb3J0IDE2MiBvbiBhbGwgSVB2NCBpbnRlcmZhY2VzLgogLklQICJkb05vdFJldGFpbk5vdGlmaWNhdGlvbkxvZ3MgeWVzIgotZGlzYWJsZXMgc3VwcG9ydCBmb3IgdGhlIE5PVElGSUNBVElPTi1MT0ctTUlCLgorZGlzYWJsZXMgc3VwcG9ydCBmb3IgdGhlIE5PVElGSUNBVElPTlwtTE9HXC1NSUIuCiBOb3JtYWxseSB0aGUgc25tcHRyYXBkIHByb2dyYW0ga2VlcHMgYSByZWNvcmQgb2YgdGhlIHRyYXBzCiByZWNlaXZlZCwgd2hpY2ggY2FuIGJlIHJldHJpZXZlZCBieSBxdWVyeWluZwogdGhlIFxmQ25sbUxvZ1RhYmxlXGZSIGFuZCBcZkNubG1Mb2d2YXJpYWJsZVRhYmxlXGZSIHRhYmxlcy4gIApAQCAtNDcsNyArNDcsNyBAQAogLklQCiBTZWUgdGhlIAogLkkgc25tcHRyYXBkKDgpIAotbWFudWFsIHBhZ2UgYW5kIHRoZSBOT1RJRklDQVRJT04tTE9HLU1JQiBmb3IgZGV0YWlscy4KK21hbnVhbCBwYWdlIGFuZCB0aGUgTk9USUZJQ0FUSU9OXC1MT0dcLU1JQiBmb3IgZGV0YWlscy4KIC5JUCAiZG9Ob3RMb2dUcmFwcyB5ZXMiCiBkaXNhYmxlcyB0aGUgbG9nZ2luZyBvZiBub3RpZmljYXRpb25zIGFsdG9nZXRoZXIuCiBUaGlzIGlzIHVzZWZ1bCBpZiB0aGUgXGZCc25tcHRyYXBkXGZSIGFwcGxpY2F0aW9uIHNob3VsZApAQCAtODEsMTQgKzgxLDE0IEBACiBmb3IgYSBwYXJ0aWN1bGFyIGNhdGVnb3J5IG9mIG5vdGlmaWNhdGlvbi4gQnV0IGl0IGlzIHBlcmZlY3RseQogcG9zc2libGUgKGV2ZW4gZGVzaXJhYmxlKSB0byBsaW1pdCBjZXJ0YWluIG5vdGlmaWNhdGlvbiBzb3VyY2VzIHRvCiBzZWxlY3RlZCBwcm9jZXNzaW5nIG9ubHkuCi0uSVAgImF1dGhDb21tdW5pdHkgICBUWVBFUyBDT01NVU5JVFkgIFtTT1VSQ0UgW09JRCB8IC12IFZJRVcgXV0iCisuSVAgImF1dGhDb21tdW5pdHkgICBUWVBFUyBDT01NVU5JVFkgIFtTT1VSQ0UgW09JRCB8IFwtdiBWSUVXIF1dIgogYXV0aG9yaXNlcyB0cmFwcyAoYW5kIFNOTVB2MmMgSU5GT1JNIHJlcXVlc3RzKSB3aXRoIHRoZSBzcGVjaWZpZWQKIGNvbW11bml0eSB0byB0cmlnZ2VyIHRoZSB0eXBlcyBvZiBwcm9jZXNzaW5nIGxpc3RlZC4KIEJ5IGRlZmF1bHQsIHRoaXMgd2lsbCBhbGxvdyBhbnkgbm90aWZpY2F0aW9uIHVzaW5nIHRoaXMgY29tbXVuaXR5CiB0byBiZSBwcm9jZXNzZWQuICBUaGUgU09VUkNFIGZpZWxkIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhhdCB0aGUKIGNvbmZpZ3VyYXRpb24gc2hvdWxkIG9ubHkgYXBwbHkgdG8gbm90aWZpY2F0aW9ucyByZWNlaXZlZCBmcm9tCiBwYXJ0aWN1bGFyIHNvdXJjZXMgLSBzZWUgXGZJc25tcGQuY29uZig1KVxmUiBmb3IgbW9yZSBkZXRhaWxzLgotLklQICJhdXRoVXNlciAgIFRZUEVTIFstcyBNT0RFTF0gVVNFUiAgW0xFVkVMIFtPSUQgfCAtdiBWSUVXIF1dIgorLklQICJhdXRoVXNlciAgIFRZUEVTIFtcLXMgTU9ERUxdIFVTRVIgIFtMRVZFTCBbT0lEIHwgXC12IFZJRVcgXV0iCiBhdXRob3Jpc2VzIFNOTVB2MyBub3RpZmljYXRpb25zIHdpdGggdGhlIHNwZWNpZmllZAogdXNlciB0byB0cmlnZ2VyIHRoZSB0eXBlcyBvZiBwcm9jZXNzaW5nIGxpc3RlZC4KIEJ5IGRlZmF1bHQsIHRoaXMgd2lsbCBhY2NlcHQgYXV0aGVudGljYXRlZCByZXF1ZXN0cy4KQEAgLTk2LDcgKzk2LDcgQEAKIGJlIHVzZWQgdG8gYWxsb3cgdW5hdXRoZW50aWNhdGVkIG5vdGlmaWNhdGlvbnMgKFxmSW5vYXV0aFxmUiksCiBvciB0byByZXF1aXJlIGVuY3J5cHRpb24gKFxmSXByaXZcZlIpLCBqdXN0IGFzIGZvciB0aGUgU05NUCBhZ2VudC4KIC5JUAotV2l0aCBib3RoIG9mIHRoZXNlIGRpcmVjdGl2ZXMsIHRoZSBPSUQgKG9yIFxmSS12IFZJRVdcZlIpIGZpZWxkCitXaXRoIGJvdGggb2YgdGhlc2UgZGlyZWN0aXZlcywgdGhlIE9JRCAob3IgXGZJXC12IFZJRVdcZlIpIGZpZWxkCiBjYW4gYmUgdXNlZCB0byByZXRyaWN0IHRoaXMgY29uZmlndXJhdGlvbiB0byB0aGUgcHJvY2Vzc2luZyBvZgogcGFydGljdWxhciBub3RpZmljYXRpb25zLgogLlJTCkBAIC0xMDYsOCArMTA2LDggQEAKIGluY29taW5nIG5vdGlmaWNhdGlvbi4gIEl0IGlzIG5vdCBhcHBsaWVkIHRvIHRoZSBwYXlsb2FkIHZhcmJpbmRzCiBoZWxkIHdpdGhpbiB0aGF0IG5vdGlmaWNhdGlvbi4KIC5SRQotLklQICJhdXRoR3JvdXAgIFRZUEVTIFstcyBNT0RFTF0gR1JPVVAgIFtMRVZFTCBbT0lEIHwgLXYgVklFVyBdXSIKLS5JUCAiYXV0aEFjY2VzcyBUWVBFUyBbLXMgTU9ERUxdIEdST1VQIFZJRVcgIFtMRVZFTCBbQ09OVEVYVF1dIgorLklQICJhdXRoR3JvdXAgIFRZUEVTIFtcLXMgTU9ERUxdIEdST1VQICBbTEVWRUwgW09JRCB8IFwtdiBWSUVXIF1dIgorLklQICJhdXRoQWNjZXNzIFRZUEVTIFtcLXMgTU9ERUxdIEdST1VQIFZJRVcgIFtMRVZFTCBbQ09OVEVYVF1dIgogLklQICJzZXRBY2Nlc3MgR1JPVVAgQ09OVEVYVCBNT0RFTCBMRVZFTCBQUkVGSVggVklFVyBUWVBFUyIKIGF1dGhvcmlzZSBub3RpZmljYXRpb25zIGluIHRoZSBzcGVjaWZpZWQgR1JPVVAKIChjb25maWd1cmVkIHVzaW5nIHRoZSBcZklncm91cFxmUiBkaXJlY3RpdmUpCkBAIC0yMTksMTAgKzIxOSwxMCBAQAogVGhlIGZvcm1hdCBvZiBib3RoIG9mIHRoZXNlIGFyZSBjb250cm9sbGVkIGJ5IHRoZSBcZklvdXRwdXRPcHRpb25cZlIKIGRpcmVjdGl2ZSAob3Igc2ltaWxhciBjb25maWd1cmF0aW9uKS4KIC5JUAotVGhlIGZpcnN0IE9JRCBzaG91bGQgYWx3YXlzIGJlIFxmQ1NOTVB2Mi1NSUI6OnN5c1VwVGltZS4wXGZSLAotYW5kIHRoZSBzZWNvbmQgc2hvdWxkIGJlIFxmQ1NOTVB2Mi1NSUI6OnNubXBUcmFwT0lELjBcZlIuCitUaGUgZmlyc3QgT0lEIHNob3VsZCBhbHdheXMgYmUgXGZDU05NUHYyXC1NSUI6OnN5c1VwVGltZS4wXGZSLAorYW5kIHRoZSBzZWNvbmQgc2hvdWxkIGJlIFxmQ1NOTVB2MlwtTUlCOjpzbm1wVHJhcE9JRC4wXGZSLgogVGhlIHJlbWFpbmluZyBsaW5lcyB3aWxsIGNvbnRhaW4gdGhlIHBheWxvYWQgdmFyYmluZCBsaXN0LgotRm9yIFNOTVB2MSB0cmFwcywgdGhlIGZpbmFsIE9JRCB3aWxsIGJlIFxmQ1NOTVB2Mi1NSUI6OnNubXBUcmFwRW50ZXJwcmlzZS4wXGZSLgorRm9yIFNOTVB2MSB0cmFwcywgdGhlIGZpbmFsIE9JRCB3aWxsIGJlIFxmQ1NOTVB2MlwtTUlCOjpzbm1wVHJhcEVudGVycHJpc2UuMFxmUi4KIC5icgogLklQIEV4YW1wbGU6CiBBIFxmQnRyYXB0b2VtYWlsXGZSIHNjcmlwdCBoYXMgYmVlbiBpbmNsdWRlZCBpbiB0aGUgTmV0LVNOTVAgcGFja2FnZSB0aGF0CkBAIC0yMzAsNyArMjMwLDcgQEAKIC5icgogLlJTCiAuUAotdHJhcGhhbmRsZSBkZWZhdWx0IC91c3IvYmluL3BlcmwgQklORElSL3RyYXB0b2VtYWlsIC1zIG15c210cC5zb21ld2hlcmUuY29tIC1mIGFkbWluQHNvbWV3aGVyZS5jb20gbWVAc29tZXdoZXJlLmNvbQordHJhcGhhbmRsZSBkZWZhdWx0IC91c3IvYmluL3BlcmwgQklORElSL3RyYXB0b2VtYWlsIFwtcyBteXNtdHAuc29tZXdoZXJlLmNvbSBcLWYgYWRtaW5Ac29tZXdoZXJlLmNvbSBtZUBzb21ld2hlcmUuY29tCiAuUkUKIC5SRQogLklQICJmb3J3YXJkIE9JRHxkZWZhdWx0IERFU1RJTkFUSU9OIgpkaWZmIC0tZ2l0IGEvbWFuL3NubXB1c20uMS5kZWYgYi9tYW4vc25tcHVzbS4xLmRlZgppbmRleCAyMTc3NTkyLi45MDYxMjEzIDEwMDY0NAotLS0gYS9tYW4vc25tcHVzbS4xLmRlZgorKysgYi9tYW4vc25tcHVzbS4xLmRlZgpAQCAtMyw3ICszLDcgQEAKIHNubXB1c20gLSBjcmVhdGVzIGFuZCBtYWludGFpbnMgU05NUHYzIHVzZXJzIG9uIGEgbmV0d29yayBlbnRpdHkKIC5TSCBTWU5PUFNJUwogLkIgc25tcHVzbQotW0NPTU1PTiBPUFRJT05TXSBbLUN3XSBBR0VOVAorW0NPTU1PTiBPUFRJT05TXSBbXC1Dd10gQUdFTlQKIC5CIGNyZWF0ZQogVVNFUiBbQ0xPTkVGUk9NLVVTRVJdCiAuYnIKQEAgLTE4LDE3ICsxOCwxNyBAQAogVVNFUiBDTE9ORUZST00tVVNFUgogLmJyCiAuQiBzbm1wdXNtCi1bQ09NTU9OIE9QVElPTlNdIFstQ2FdIFstQ3hdIEFHRU5UCitbQ09NTU9OIE9QVElPTlNdIFtcLUNhXSBbXC1DeF0gQUdFTlQKIC5CIHBhc3N3ZAogT0xELVBBU1NQSFJBU0UgTkVXLVBBU1NQSFJBU0UgW1VTRVJdCiAuYnIKIC5CIHNubXB1c20KLVtDT01NT04gT1BUSU9OU10gPC1DYSB8IC1DeD4gLUNrIEFHRU5UCitbQ09NTU9OIE9QVElPTlNdIDxcLUNhIHwgXC1DeD4gXC1DayBBR0VOVAogLkIgcGFzc3dkCiBPTEQtS0VZLU9SLVBBU1NQSFJBU0UgTkVXLUtFWS1PUi1QQVNTUEhSQVNFIFtVU0VSXQogLmJyCiAuQiBzbm1wdXNtCi1bQ09NTU9OIE9QVElPTlNdIFstQ2FdIFstQ3hdIEFHRU5UCitbQ09NTU9OIE9QVElPTlNdIFtcLUNhXSBbXC1DeF0gQUdFTlQKIC5CIGNoYW5nZWtleQogW1VTRVJdCiAKQEAgLTQ2LDEyICs0NiwxMiBAQAogLkIgc25tcHVzbQogY29tbWFuZHM6CiAuVFAKLS5CSSAtQ0UgIiBFTkdJTkUtSUQiCisuQkkgXC1DRSAiIEVOR0lORS1JRCIKIFNldCB1c21Vc2VyRW5naW5lSUQgdG8gYmUgdXNlZCBhcyBwYXJ0IG9mIHRoZSBpbmRleCBvZiB0aGUgdXNtVXNlclRhYmxlLgotRGVmYXVsdCBpcyB0byB1c2UgdGhlIGNvbnRleHRFbmdpbmVJRCAoc2V0IHZpYSAtRSBvciBwcm9iZWQpIGFzIHRoZSAKK0RlZmF1bHQgaXMgdG8gdXNlIHRoZSBjb250ZXh0RW5naW5lSUQgKHNldCB2aWEgXC1FIG9yIHByb2JlZCkgYXMgdGhlIAogdXNtVXNlckVuZ2luZUlELgogLlRQCi0uQkkgLUNwICIgU1RSSU5HIgorLkJJIFwtQ3AgIiBTVFJJTkciCiBTZXQgdGhlIHVzbVVzZXJQdWJsaWMgdmFsdWUgb2YgdGhlIChuZXcpIHVzZXIgdG8gdGhlIHNwZWNpZmllZCBTVFJJTkcuCiAuUFAKIE9wdGlvbnMgZm9yIHRoZQpAQCAtNjAsMTUgKzYwLDE1IEBACiAuQiBjaGFuZ2VrZXkKIGNvbW1hbmRzOgogLlRQCi0uQkkgLUNhCisuQkkgXC1DYQogQ2hhbmdlIHRoZSBhdXRoZW50aWNhdGlvbiBrZXkuCiAuVFAKLS5CSSAtQ3gKKy5CSSBcLUN4CiBDaGFuZ2UgdGhlIHByaXZhY3kga2V5LgogLlRQCi0uQkkgLUNrCi1BbGxvd3MgdG8gdXNlIGxvY2FsaXplZCBrZXkgKG11c3Qgc3RhcnQgd2l0aCAweCkgaW5zdGVhZCBvZiBwYXNzcGhyYXNlLgotV2hlbiB0aGlzIG9wdGlvbiBpcyB1c2VkLCBlaXRoZXIgdGhlIC1DYSBvciAtQ3ggb3B0aW9uIChidXQgbm90IGJvdGgpIG11c3QgYWxzbworLkJJIFwtQ2sKK0FsbG93cyBvbmUgdG8gdXNlIGxvY2FsaXplZCBrZXkgKG11c3Qgc3RhcnQgd2l0aCAweCkgaW5zdGVhZCBvZiBwYXNzcGhyYXNlLgorV2hlbiB0aGlzIG9wdGlvbiBpcyB1c2VkLCBlaXRoZXIgdGhlIFwtQ2Egb3IgXC1DeCBvcHRpb24gKGJ1dCBub3QgYm90aCkgbXVzdCBhbHNvCiBiZSB1c2VkLgogCiAuU0ggQ1JFQVRJTkcgVVNFUlMKQEAgLTc2LDE0ICs3NiwxNCBAQAogQW4gdW5hdXRoZW50aWNhdGVkIFNOTVB2MyB1c2VyIGNhbiBiZSBjcmVhdGVkIHVzaW5nIHRoZSBjb21tYW5kCiAuSVAKIC5CIHNubXB1c20KLVtPUFRJT05TXSBBR0VOVCBjcmVhdGUgVVNFUgorW0NPTU1PTiBPUFRJT05TXSBBR0VOVCBjcmVhdGUgVVNFUgogLlBQCiBUaGlzIGNvbnN0cnVjdHMgYW4gKGluYWN0aXZlKSBlbnRyeSBpbiB0aGUgdXNtVXNlclRhYmxlLAogd2l0aCBubyBhdXRoZW50aWNhdGlvbiBvciBwcml2YWN5IHNldHRpbmdzLgogSW4gcHJpbmNpcGxlLCB0aGlzIHVzZXIgc2hvdWxkIGJlIHVzZWFibGUgZm9yICdub0F1dGhOb1ByaXYnIHJlcXVlc3RzLAogYnV0IGluIHByYWN0aXNlIHRoZSBOZXQtU05NUCBhZ2VudCB3aWxsIG5vdCBhbGxvdyBzdWNoIGFuIGVudHJ5CiB0byBiZSBtYWRlIGFjdGl2ZS4gIFRoZSB1c2VyIGNhbiBiZSBjcmVhdGVkIHZpYSB0aGUgY3JlYXRlQW5kV2FpdAotb3BlcmF0aW9uIGluc3RlYWQgYnkgdXNpbmcgdGhlIC1DYSBmbGFnLiAgVGhpcyB3aWxsIHByZXZlbnQgdGhlIHVzZXIKK29wZXJhdGlvbiBpbnN0ZWFkIGJ5IHVzaW5nIHRoZSBcLUNhIGZsYWcuICBUaGlzIHdpbGwgcHJldmVudCB0aGUgdXNlcgogZnJvbSBiZWluZyBtYXJrZWQgYXMgYWN0aXZlIGluIGFueSBhZ2VudCB1bnRpbCBleHBsaWNpdGx5IGFjdGl2YXRlZAogbGF0ZXIgdmlhIHRoZSBhY3RpdmF0ZSBjb21tYW5kLgogCkBAIC05Miw3ICs5Miw3IEBACiB1c2VyLCB1c2luZyB0aGUgY29tbWFuZAogLklQCiAuQiBzbm1wdXNtCi1bT1BUSU9OU10gQUdFTlQgY2xvbmVGcm9tIFVTRVIgQ0xPTkVGUk9NLVVTRVIKK1tDT01NT04gT1BUSU9OU10gQUdFTlQgY2xvbmVGcm9tIFVTRVIgQ0xPTkVGUk9NLVVTRVIKIC5QUAogVGhlIFVTRVIgZW50cnkgdGhlbiBpbmhlcml0cyB0aGUgc2FtZSBhdXRoZW50aWNhdGlvbiBhbmQgcHJpdmFjeQogc2V0dGluZ3MgKGluY2x1ZGluZyBwYXNzIHBocmFzZXMpIGFzIHRoZSBDTE9ORUZST00gdXNlci4KQEAgLTEwMSw3ICsxMDEsNyBAQAogVGhlc2UgdHdvIHN0ZXBzIGNhbiBiZSBjb21iaW5lZCBpbnRvIG9uZSwgYnkgdXNpbmcgdGhlIGNvbW1hbmQKIC5JUAogLkIgc25tcHVzbQotW09QVElPTlNdIEFHRU5UIGNyZWF0ZSBVU0VSIENMT05FRlJPTS1VU0VSCitbQ09NTU9OIE9QVElPTlNdIEFHRU5UIGNyZWF0ZSBVU0VSIENMT05FRlJPTS1VU0VSCiAKIC5QUAogVGhlIHR3byBmb3JtcyBvZiB0aGUKQEAgLTEzNyw3ICsxMzcsNyBAQAogQSB1c2VyIGNhbiBiZSBkZWxldGVkIGZyb20gdGhlIHVzbVVzZXJUYWJsZSB1c2luZyB0aGUgY29tbWFuZAogLklQCiAuQiBzbm1wdXNtCi1bT1BUSU9OU10gQUdFTlQgZGVsZXRlIFVTRVIKK1tDT01NT04gT1BUSU9OU10gQUdFTlQgZGVsZXRlIFVTRVIKIAogLlNIIENIQU5HSU5HIFBBU1MgUEhSQVNFUwogVXNlciBwcm9maWxlcyBjb250YWluIHByaXZhdGUga2V5cyB0aGF0IGFyZSBuZXZlcgpAQCAtMTQ4LDcgKzE0OCw3IEBACiBUaGlzIHVzZXMgdGhlIGNvbW1hbmQKIC5JUAogLkIgc25tcHVzbQotW09QVElPTlNdIFstQ2FdIFstQ3hdIEFHRU5UIHBhc3N3ZCBPTEQtUEFTU1BIUkFTRSBORVctUEFTU1BIUkFTRSBbVVNFUl0KK1tDT01NT04gT1BUSU9OU10gW1wtQ2FdIFtcLUN4XSBBR0VOVCBwYXNzd2QgT0xELVBBU1NQSFJBU0UgTkVXLVBBU1NQSFJBU0UgW1VTRVJdCiAKIC5QUAogQWZ0ZXIgY2xvbmluZyBhIG5ldyB1c2VyIGVudHJ5IGZyb20gdGhlIGFwcHJvcHJpYXRlIHRlbXBsYXRlLApAQCAtMTU2LDIxICsxNTYsMjEgQEAKIAogLlBQCiBJZiBVU0VSIGlzIG5vdCBzcGVjaWZpZWQsIHRoaXMgY29tbWFuZCB3aWxsIGNoYW5nZSB0aGUgcGFzc3BocmFzZQotb2YgdGhlIChTTk1QdjMpIHVzZXIgaXNzdWluZyB0aGUgY29tbWFuZC4gIElmIHRoZSAtQ2Egb3IgLUN4IG9wdGlvbnMKK29mIHRoZSAoU05NUHYzKSB1c2VyIGlzc3VpbmcgdGhlIGNvbW1hbmQuICBJZiB0aGUgXC1DYSBvciBcLUN4IG9wdGlvbnMKIGFyZSBzcGVjaWZpZWQsIHRoZW4gb25seSB0aGUgYXV0aGVudGljYXRpb24gb3IgcHJpdmFjeSBrZXlzIGFyZSBjaGFuZ2VkLiAgSWYKIHRoZXNlIG9wdGlvbnMgYXJlIG5vdCBzcGVjaWZpZWQsIHRoZW4gYm90aCB0aGUgYXV0aGVudGljYXRpb24gYW5kIHByaXZhY3kga2V5cwogYXJlIGNoYW5nZWQuCiAKIC5JUAogLkIgc25tcHVzbQotW09QVElPTlNdIFstQ2FdIFstQ3hdIEFHRU5UIGNoYW5nZWtleSBbVVNFUl0KK1tDT01NT04gT1BUSU9OU10gW1wtQ2FdIFtcLUN4XSBBR0VOVCBjaGFuZ2VrZXkgW1VTRVJdCiAKIC5QUAogVGhpcyBjb21tYW5kIGNoYW5nZXMgdGhlIGtleSBpbiBhIHBlcmZlY3QtZm9yd2FyZC1zZWNyZWN5IGNvbXBsaWFudAogd2F5IHRocm91Z2ggYSBkaWZmaWUtaGVsbWFuIGV4Y2hhbmdlLiAgVGhlIHJlbW90ZSBhZ2VudCBtdXN0IHN1cHBvcnQKLXRoZSBTTk1QLVVTTS1ESC1PQkpFQ1RTLU1JQiBmb3IgdGhpcyBjb21tYW5kIHRvIHdvcmsuICBUaGUgcmVzdWx0aW5nCit0aGUgU05NUFwtVVNNXC1ESFwtT0JKRUNUU1wtTUlCIGZvciB0aGlzIGNvbW1hbmQgdG8gd29yay4gIFRoZSByZXN1bHRpbmcKIGtleXMgYXJlIHByaW50ZWQgdG8gdGhlIGNvbnNvbGUgYW5kIG1heSBiZSB0aGVuIHNldCBpbiBmdXR1cmUgY29tbWFuZAotaW52b2NhdGlvbnMgdXNpbmcgdGhlIC0tZGVmQXV0aExvY2FsaXplZEtleSBhbmQgLS1kZWZQcml2TG9jYWxpemVkS2V5CitpbnZvY2F0aW9ucyB1c2luZyB0aGUgXC1cLWRlZkF1dGhMb2NhbGl6ZWRLZXkgYW5kIFwtXC1kZWZQcml2TG9jYWxpemVkS2V5CiBvcHRpb25zIG9yIGluIHlvdXIgc25tcC5jb25mIGZpbGUgdXNpbmcgdGhlIGRlZkF1dGhMb2NhbGl6ZWRLZXkgYW5kCiBkZWZQcml2TG9jYWxpemVkS2V5IGtleXdvcmRzLgogCkBAIC0xODcsMTAgKzE4NywxMCBAQAogCiAuSVAKIC5CIHNubXB1c20KLVtPUFRJT05TXSA8LUNhIHwgLUN4PiAtQ2sgQUdFTlQgcGFzc3dkIE9MRC1LRVktT1ItUEFTU1BIUkFTRSBORVctS0VZLU9SLVBBU1NQSFJBU0UgW1VTRVJdCitbQ09NTU9OIE9QVElPTlNdIDxcLUNhIHwgXC1DeD4gXC1DayBBR0VOVCBwYXNzd2QgT0xELUtFWS1PUi1QQVNTUEhSQVNFIE5FVy1LRVktT1ItUEFTU1BIUkFTRSBbVVNFUl0KIAogLlBQCi1FaXRoZXIgdGhlIC1DYSBvciB0aGUgLUN4IG9wdGlvbiBtdXN0IGJlIHNwZWNpZmllZC4gIFRoZSBPTEQtS0VZLU9SLVBBU1NQSFJBU0UKK0VpdGhlciB0aGUgXC1DYSBvciB0aGUgXC1DeCBvcHRpb24gbXVzdCBiZSBzcGVjaWZpZWQuICBUaGUgT0xELUtFWS1PUi1QQVNTUEhSQVNFCiBhbmQvb3IgTkVXLUtFWS1PUi1QQVNTUEhSQVNFIGFyZ3VtZW50cyBjYW4gZWl0aGVyIGJlIGEgcGFzc3BocmFzZSBvciBhCiBsb2NhbGl6ZWQga2V5IHN0YXJ0aW5nIHdpdGggIjB4IiwgZS5nLiBhcyBwcmludGVkIG91dCBieSB0aGUKIC5CIGNoYW5nZWtleQpAQCAtMjI5LDcgKzIyOSw3IEBACiBpbiBsZW5ndGguCiAuU1MgQ3JlYXRlIGEgbmV3IHVzZXIKIC5QUAotc25tcHVzbSAtdjMgLXUgaW5pdGlhbCAtbiAiIiAtbCBhdXRoTm9Qcml2IC1hIE1ENSAtQSBzZXR1cF9wYXNzcGhyYXNlCitzbm1wdXNtIFwtdjMgXC11IGluaXRpYWwgXC1uICIiIFwtbCBhdXRoTm9Qcml2IFwtYSBNRDUgXC1BIHNldHVwX3Bhc3NwaHJhc2UKIGxvY2FsaG9zdCBjcmVhdGUgd2VzIGluaXRpYWwKIC5JUAogQ3JlYXRlcyBhIG5ldyB1c2VyLCBoZXJlIG5hbWVkICJ3ZXMiIHVzaW5nIHRoZSB1c2VyICJpbml0aWFsIiB0byBkbwpAQCAtMjM3LDcgKzIzNyw3IEBACiB0aGF0IHVzZXIncyBwYXNzcGhyYXNlICgic2V0dXBfcGFzc3BocmFzZSIpLgogLlNTIENoYW5nZSB0aGUgdXNlcidzIHBhc3NwaHJhc2UKIC5QUAotc25tcHVzbSAtdiAzIC11IHdlcyAtbiAiIiAtbCBhdXRoTm9Qcml2IC1hIE1ENSAtQSBzZXR1cF9wYXNzcGhyYXNlCitzbm1wdXNtIFwtdiAzIFwtdSB3ZXMgXC1uICIiIFwtbCBhdXRoTm9Qcml2IFwtYSBNRDUgXC1BIHNldHVwX3Bhc3NwaHJhc2UKIGxvY2FsaG9zdCBwYXNzd2Qgc2V0dXBfcGFzc3BocmFzZSBuZXdfcGFzc3BocmFzZQogLklQCiBBZnRlciBjcmVhdGluZyB0aGUgdXNlciAid2VzIiB3aXRoIHRoZSBzYW1lIHBhc3NwaHJhc2UgYXMgdGhlCkBAIC0yNDYsNyArMjQ2LDcgQEAKIHRoZSBpbml0aWFsIHVzZXIsIHRvICJuZXdfcGFzc3BocmFzZSIuCiAuU1MgVGVzdCB0aGUgbmV3IHVzZXIKIC5QUAotc25tcGdldCAtdiAzIC11IHdlcyAtbiAiIiAtbCBhdXRoTm9Qcml2IC1hIE1ENSAtQSBuZXdfcGFzc3BocmFzZQorc25tcGdldCBcLXYgMyBcLXUgd2VzIFwtbiAiIiBcLWwgYXV0aE5vUHJpdiBcLWEgTUQ1IFwtQSBuZXdfcGFzc3BocmFzZQogbG9jYWxob3N0IHN5c1VwVGltZS4wCiAuSVAKIElmIHRoZSBhYm92ZSBjb21tYW5kcyB3ZXJlIHN1Y2Nlc3NmdWwsIHRoaXMgY29tbWFuZCBzaG91bGQgaGF2ZQpkaWZmIC0tZ2l0IGEvbWFuL3NubXB2YWNtLjEuZGVmIGIvbWFuL3NubXB2YWNtLjEuZGVmCmluZGV4IDZhZTFmMDMuLjcwYjA4OWUgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wdmFjbS4xLmRlZgorKysgYi9tYW4vc25tcHZhY20uMS5kZWYKQEAgLTE1LDcgKzE1LDcgQEAKIC5CIHNubXB2YWNtCiBbQ09NTU9OIE9QVElPTlNdIEFHRU5UCiAuQiBjcmVhdGVWaWV3Ci1bLUNlXSBOQU1FIFNVQlRSRUUgTUFTSworW1wtQ2VdIE5BTUUgU1VCVFJFRSBNQVNLCiAuYnIKIC5CIHNubXB2YWNtCiBbQ09NTU9OIE9QVElPTlNdIEFHRU5UCkBAIC0xMDIsNyArMTAyLDcgQEAKIC5CIGNyZWF0ZVNlYzJHcm91cAogY29tbWFuZCAob3IgZXF1aXZhbGVudCkuCiAKLS5TUyBjcmVhdGVWaWV3IFxmUlstQ2VdIE5BTUUgU1VCVFJFRSBNQVNLXGZQCisuU1MgY3JlYXRlVmlldyBcZlJbXC1DZV0gTkFNRSBTVUJUUkVFIE1BU0tcZlAKIC5QUAogQ3JlYXRlIGFuIGVudHJ5IGluIHRoZSBTTk1QdjMgTUlCIHZpZXcgdGFibGUuCiBBIE1JQiB2aWV3IGNvbnNpc3RzIG9mIGEgZmFtaWx5IG9mIHZpZXcgc3VidHJlZXMgd2hpY2ggbWF5IGJlIGluZGl2aWR1YWxseQpAQCAtMTEwLDcgKzExMCw3IEBACiBkZWZpbmVkIGJ5IGEgY29tYmluYXRpb24gb2YgYW4gT0lEIHN1YnRyZWUgdG9nZXRoZXIgd2l0aCBhIGJpdCBzdHJpbmcgbWFzay4KIFRoZSB2aWV3IHRhYmxlIGlzIGluZGV4ZWQgYnkgdGhlIHZpZXcgbmFtZSBhbmQgc3VidHJlZSBPSUQgdmFsdWVzLgogLlBQCi1bLUNlXQorW1wtQ2VdCiAuSVAKIEFuIG9wdGlvbmFsIGZsYWcgdG8gaW5kaWNhdGUgdGhhdCB0aGlzIHZpZXcgc3VidHJlZSBzaG91bGQgYmUgZXhjbHVkZWQKIGZyb20gdGhlIG5hbWVkIHZpZXcuCkBAIC0zMjcsNyArMzI3LDcgQEAKIC5QUAogVGhpcyBjcmVhdGVzIGEgbmV3IHNlY3VyaXR5IGdyb3VwIG5hbWVkICJST0dyb3VwIiBjb250YWluaW5nIHRoZSAocHJlLWV4aXN0aW5nKQogdXNlciAid2VzIiwgYSBuZXcgdmlldyAic3lzVmlldyIgY29udGFpbmluZyBqdXN0IHRoZSBPSUQgdHJlZSBiYXNlZCBvbgotLkkgLmlzbygxKS5vcmcoMykuZG9kKDYpLmluZXQoMSkubWdtdCgyKS5taWItMigxKS5zeXN0ZW0oMSkKKy5JIC5pc28oMSkub3JnKDMpLmRvZCg2KS5pbmV0KDEpLm1nbXQoMikubWliXC0yKDEpLnN5c3RlbSgxKQogLCBhbmQgdGhlbiBhbGxvd3MgdGhvc2UgdXNlcnMgaW4gdGhlIGdyb3VwICJST0dyb3VwIiAoaS5lLiAid2VzIikKIHJlYWQtYWNjZXNzLCBidXQgbm90IHdyaXRlLWFjY2VzcyB0byB0aGUgdmlldyAic3lzVmlldyIgKGkuZS4gdGhlIHN5c3RlbSBncm91cCkuCiAKZGlmZiAtLWdpdCBhL21hbi9zbm1wd2Fsay4xLmRlZiBiL21hbi9zbm1wd2Fsay4xLmRlZgppbmRleCA2ZTE1MjAxLi5lZjc4NjYwIDEwMDY0NAotLS0gYS9tYW4vc25tcHdhbGsuMS5kZWYKKysrIGIvbWFuL3NubXB3YWxrLjEuZGVmCkBAIC0xLDcgKzEsNyBAQAogLlwiIC0qLSBucm9mZiAtKi0KLS5cIiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQuIAotLlwiIFNlZSB0aGUgTmV0LVNOTVAgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyCi0uXCIgY29weXJpZ2h0cyB0aGF0IG1heSBhcHBseToKKy5cIiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQuICBTZWUKKy5cIiB0aGUgTmV0LVNOTVAgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyIGNvcHlyaWdodHMKKy5cIiB0aGF0IG1heSBhcHBseToKIC5cIiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIiAJQ29weXJpZ2h0IDE5ODgsIDE5ODkgYnkgQ2FybmVnaWUgTWVsbG9uIFVuaXZlcnNpdHkKIC5cIiAKQEAgLTQzLDcgKzQzLDcgQEAKIC5QUAogSWYgbm8gT0lEIGFyZ3VtZW50IGlzIHByZXNlbnQsCiAuQiBzbm1wd2Fsawotd2lsbCBzZWFyY2ggdGhlIHN1YnRyZWUgcm9vdGVkIGF0IFNOTVB2Mi1TTUk6Om1pYi0yCit3aWxsIHNlYXJjaCB0aGUgc3VidHJlZSByb290ZWQgYXQgU05NUHYyXC1TTUk6Om1pYlwtMgogKGluY2x1ZGluZyBhbnkgTUlCIG9iamVjdCB2YWx1ZXMgZnJvbSBvdGhlciBNSUIgbW9kdWxlcywKIHRoYXQgYXJlIGRlZmluZWQgYXMgbHlpbmcgd2l0aGluIHRoaXMgc3VidHJlZSkuCiBJZiB0aGUgbmV0d29yayBlbnRpdHkgaGFzIGFuIGVycm9yIHByb2Nlc3NpbmcgdGhlIHJlcXVlc3QgcGFja2V0LCBhbgpAQCAtNTQsNyArNTQsNyBAQAogTUlCLCB0aGUgbWVzc2FnZSAiRW5kIG9mIE1JQiIgd2lsbCBiZSBkaXNwbGF5ZWQuCiAuU0ggT1BUSU9OUwogLlRQIDgKLS5CIC1DYworLkIgXC1DYwogRG8gbm90IGNoZWNrIHdoZXRoZXIgdGhlIHJldHVybmVkIE9JRHMgYXJlIGluY3JlYXNpbmcuICBTb21lIGFnZW50cwogKExhc2VySmV0cyBhcmUgYW4gZXhhbXBsZSkgcmV0dXJuIE9JRHMgb3V0IG9mIG9yZGVyLCBidXQgY2FuCiBjb21wbGV0ZSB0aGUgd2FsayBhbnl3YXkuICBPdGhlciBhZ2VudHMgcmV0dXJuIE9JRHMgdGhhdCBhcmUgb3V0IG9mCkBAIC02NCwxNSArNjQsMTUgQEAKIC5CIHNubXB3YWxrCiB0cmllcyB0byBkZXRlY3QgdGhpcyBiZWhhdmlvciBhbmQgd2FybnMgeW91IHdoZW4gaXQgaGl0cyBhbiBhZ2VudAogYWN0aW5nIGlsbGVnYWxseS4gIFVzZQotLkIgLUNjCisuQiBcLUNjCiB0byB0dXJuIG9mZiB0aGlzIGNoZWNrLgogLlRQCi0uQiAtQ0Uge09JRH0KKy5CIFwtQ0Uge09JRH0KIEVuZCB0aGUgd2FsayBhdCB0aGUgc3BlY2lmaWVkIE9JRCwgcmF0aGVyIHRoYW4gYSBzaW1wbGUgc3VidHJlZS4KIFRoaXMgY2FuIGJlIHVzZWQgdG8gd2FsayBhIHBhcnRpYWwgc3VidHJlZSwgc2VsZWN0ZWQgY29sdW1ucyBvZgogYSB0YWJsZSwgb3IgZXZlbiB0d28gb3IgbW9yZSB0YWJsZXMgd2l0aGluIGEgc2luZ2xlIGNvbW1hbmQuCiAuVFAKLS5CIC1DaQorLkIgXC1DaQogSW5jbHVkZSB0aGUgZ2l2ZW4gT0lEIGluIHRoZSBzZWFyY2ggcmFuZ2UuICBOb3JtYWxseQogLkIgc25tcHdhbGsKIHVzZXMgR0VUTkVYVCByZXF1ZXN0cyBzdGFydGluZyB3aXRoIHRoZSBPSUQgeW91IHNwZWNpZmllZCBhbmQgcmV0dXJucwpAQCAtODEsNyArODEsNyBAQAogcmVzdWx0cyBpZiBpdCBpcyBhIHZhbGlkIE9JRCBpbiB0aGUgdHJlZSBpdHNlbGYuICBUaGlzIG9wdGlvbiBsZXRzIHlvdQogZG8gdGhpcyBleHBsaWNpdGx5LgogLlRQCi0uQiAtQ0kKKy5CIFwtQ0kKIEluIGZhY3QsIHRoZSBnaXZlbiBPSUQgd2lsbCBiZSByZXRyaWV2ZWQgYXV0b21hdGljYWxseSBpZiB0aGUgbWFpbgogc3VidHJlZSB3YWxrIHJldHVybnMgbm8gdXNlYWJsZSB2YWx1ZXMuICBUaGlzIGFsbG93cyBhIHdhbGsgb2YgYQogc2luZ2xlIGluc3RhbmNlIHRvIGJlaGF2ZSBhcyBnZW5lcmFsbHkgZXhwZWN0ZWQsIGFuZCByZXR1cm4gdGhlCkBAIC04OSwxMCArODksMTAgQEAKIFRoaXMgb3B0aW9uIHR1cm5zIG9mZiB0aGlzIGZpbmFsIEdFVCByZXF1ZXN0LCBzbyBhIHdhbGsgb2YgYQogc2luZ2xlIGluc3RhbmNlIHdpbGwgcmV0dXJuIG5vdGhpbmcuCiAuVFAKLS5CIC1DcAorLkIgXC1DcAogVXBvbiBjb21wbGV0aW9uIG9mIHRoZSB3YWxrLCBwcmludCB0aGUgbnVtYmVyIG9mIHZhcmlhYmxlcyBmb3VuZC4KIC5UUAotLkIgLUN0CisuQiBcLUN0CiBVcG9uIGNvbXBsZXRpb24gb2YgdGhlIHdhbGssIHByaW50IHRoZSB0b3RhbCB3YWxsLWNsb2NrIHRpbWUgaXQgdG9vawogdG8gY29sbGVjdCB0aGUgZGF0YSAoaW4gc2Vjb25kcykuICBOb3RlIHRoYXQgdGhlIHRpbWVyIGlzIHN0YXJ0ZWQganVzdAogYmVmb3JlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRhdGEgcmVxdWVzdCBzZXJpZXMgYW5kIHN0b3BwZWQganVzdCBhZnRlcgpAQCAtMTEzLDcgKzExMyw3IEBACiBhbmQgYXQgbW9zdCBvbmUgT0lEIGFyZ3VtZW50LCBhcyBkZXNjcmliZWQgdGhlcmUuCiBUaGUgY29tbWFuZDoKIC5QUAotc25tcHdhbGsgLU9zIC1jIHB1YmxpYyAtdiAxIHpldXMgc3lzdGVtCitzbm1wd2FsayBcLU9zIFwtYyBwdWJsaWMgXC12IDEgemV1cyBzeXN0ZW0KIC5QUAogd2lsbCByZXRyaWV2ZSBhbGwgb2YgdGhlIHZhcmlhYmxlcyB1bmRlciBzeXN0ZW06CiAuUFAKQEAgLTEzNSw3ICsxMzUsNyBAQAogCiBUaGUgY29tbWFuZDoKIC5QUAotc25tcHdhbGsgLU9zIC1jIHB1YmxpYyAtdiAxIC1DRSBzeXNPUlRhYmxlIHpldXMgc3lzdGVtCitzbm1wd2FsayBcLU9zIFwtYyBwdWJsaWMgXC12IDEgXC1DRSBzeXNPUlRhYmxlIHpldXMgc3lzdGVtCiAuUFAKIHdpbGwgcmV0cmlldmUgdGhlIHNjYWxhciB2YWx1ZXMsIGJ1dCBvbWl0IHRoZSBzeXNPUlRhYmxlLgogLlNIICJTRUUgQUxTTyIKZGlmZiAtLWdpdCBhL21hbi90a21pYi4xLmRlZiBiL21hbi90a21pYi4xLmRlZgppbmRleCBmYTQ1ZGNlLi5mMDI1M2I5IDEwMDY0NAotLS0gYS9tYW4vdGttaWIuMS5kZWYKKysrIGIvbWFuL3RrbWliLjEuZGVmCkBAIC0xLDQgKzEsNCBAQAotLlRIIHRrbWliIDEgIjE2IE5vdiAyMDA2IiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgorLlRIIHRrbWliICIxIiAiMTYgTm92IDIwMDYiIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCiAuU0ggTkFNRQogdGttaWIgLSBhbiBpbnRlcmFjdGl2ZSBncmFwaGljYWwgTUlCIGJyb3dzZXIgZm9yIFNOTVAKIC5TSCBTWU5PUFNJUwpkaWZmIC0tZ2l0IGEvbWlicy9ORVQtU05NUC1QRVJJT0RJQy1OT1RJRlktTUlCLnR4dCBiL21pYnMvTkVULVNOTVAtUEVSSU9ESUMtTk9USUZZLU1JQi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNlYWNhZAotLS0gL2Rldi9udWxsCisrKyBiL21pYnMvTkVULVNOTVAtUEVSSU9ESUMtTk9USUZZLU1JQi50eHQKQEAgLTAsMCArMSw4MyBAQAorTkVULVNOTVAtUEVSSU9ESUMtTk9USUZZLU1JQiBERUZJTklUSU9OUyA6Oj0gQkVHSU4KKworLS0KKy0tIE9iamVjdHMgZm9yIHBlcmlvZGljIG5vdGlmaWNhdGlvbnMgY29udGFpbmluZyBkYXRhIHBheWxvYWRzCistLQorCitJTVBPUlRTCisgICAgbmV0U25tcE1vZHVsZUlEcywgbmV0U25tcE9iamVjdHMsIG5ldFNubXBOb3RpZmljYXRpb25zIEZST00gTkVULVNOTVAtTUlCCisKKyAgICBPQkpFQ1QtVFlQRSwgTk9USUZJQ0FUSU9OLVRZUEUsIE1PRFVMRS1JREVOVElUWSwgSW50ZWdlcjMyLCBVbnNpZ25lZDMyCisgICAgICAgIEZST00gU05NUHYyLVNNSQorCisgICAgRGlzcGxheVN0cmluZyBGUk9NIFNOTVB2Mi1UQzsKKworCituZXRTbm1wUGVyaW9kaWNOb3RpZnlNaWIgTU9EVUxFLUlERU5USVRZCisgICAgTEFTVC1VUERBVEVEICIyMDExMDQyMDAwMDBaIgorICAgIE9SR0FOSVpBVElPTiAid3d3Lm5ldC1zbm1wLm9yZyIKKyAgICBDT05UQUNULUlORk8gICAgCisJICJwb3N0YWw6ICAgV2VzIEhhcmRha2VyCisgICAgICAgICAgICAgICAgICAgIFAuTy4gQm94IDM4MgorICAgICAgICAgICAgICAgICAgICBEYXZpcyBDQSAgOTU2MTcKKworICAgICAgICAgIGVtYWlsOiAgICBuZXQtc25tcC1jb2RlcnNAbGlzdHMuc291cmNlZm9yZ2UubmV0IgorICAgIERFU0NSSVBUSU9OCisJIk9iamVjdHMgZm9yIHBlcmlvZGljIG5vdGlmaWNhdGlvbnMgY29udGFpbmluZyBkYXRhIHBheWxvYWRzIgorICAgIFJFVklTSU9OICAgICAiMjAxMTA0MjAwMDAwWiIKKyAgICBERVNDUklQVElPTgorCSJGaXJzdCByZXZpc2lvbi4iCisgICAgOjo9IHsgbmV0U25tcE1vZHVsZUlEcyA1IH0KKworbnNQTlNjYWxhcnMgICAgICAgICAgICAgICAgIE9CSkVDVCBJREVOVElGSUVSIDo6PSB7bmV0U25tcFBlcmlvZGljTm90aWZ5TWliIDF9Cituc1BOVGFibGVzICAgICAgICAgICAgICAgICAgT0JKRUNUIElERU5USUZJRVIgOjo9IHtuZXRTbm1wUGVyaW9kaWNOb3RpZnlNaWIgMn0KK25zUE5vdGlmeU9iamVjdHMgICAgICAgICAgICBPQkpFQ1QgSURFTlRJRklFUiA6Oj0ge25ldFNubXBQZXJpb2RpY05vdGlmeU1pYiAzfQorbnNQTm90aWZpY2F0aW9uUHJlZml4ICAgICAgIE9CSkVDVCBJREVOVElGSUVSIDo6PSB7bmV0U25tcFBlcmlvZGljTm90aWZ5TWliIDR9Cituc1BOb3RpZmljYXRpb25zICAgICAgICAgICAgT0JKRUNUIElERU5USUZJRVIgOjo9IHtuc1BOb3RpZmljYXRpb25QcmVmaXggMH0KK25zUE5vdGlmaWNhdGlvbk9iamVjdHMgICAgICBPQkpFQ1QgSURFTlRJRklFUiA6Oj0ge25zUE5vdGlmaWNhdGlvblByZWZpeCAxfQorCistLQorLS0gTm90aWZpY2F0aW9uIERlZmluaXRpb25zCistLQorCituc05vdGlmeVBlcmlvZGljTm90aWZpY2F0aW9uICAgICAgICBOT1RJRklDQVRJT04tVFlQRQorICAgIFNUQVRVUwljdXJyZW50CisgICAgREVTQ1JJUFRJT04KKwkiRGF0YSBkZWxpdmVyeSBub3RpZmljYXRpb24gZnJvbSBhIGNvbmZpZ3VyZWQgbGlzdCBvZiBwZXJpb2RpYworCWRhdGEgc2V0cyB0byBkZWxpdmVyLiAgU2VlIHRoZSBzbm1wZC5jb25mIG1hbnVhbCBwYWdlIGZvcgorCWRldGFpbHMgYWJvdXQgY29uZmlndXJpbmcgTmV0LVNOTVAgYWdlbnRzIGZvciBzZW5kaW5nIHRoZXNlCisJbm90aWZpY2F0aW9ucyBvdXQgb24gYSByZWd1bGFyIGJhc2lzLiIKKyAgICA6Oj0geyBuc1BOb3RpZmljYXRpb25zIDEgfQorCistLQorLS0gT2JqZWN0cyB0aGF0IGNhbiBiZSBwdXQgaW50byB0aGUgbm90aWZpY2F0aW9ucworLS0KKworbnNQTlBlcmlvZGljVGltZSBPQkpFQ1QtVFlQRQorICAgICBTWU5UQVggICAgICBVbnNpZ25lZDMyCisgICAgIE1BWC1BQ0NFU1MgIGFjY2Vzc2libGUtZm9yLW5vdGlmeQorICAgICBTVEFUVVMgICAgICBjdXJyZW50CisgICAgIERFU0NSSVBUSU9OCisgICAgICAgICAiVGhlIG51bWJlciBvZiBzZWNvbmRzIGJldHdlZW4gbm90aWZpY2F0aW9ucyBjb250YWluaW5nIHRoaXMgZGF0YSBzZXQuIgorICAgICA6Oj0geyBuc1BOb3RpZnlPYmplY3RzIDEgfQorCituc1BOb3RpZnlNZXNzYWdlTnVtYmVyIE9CSkVDVC1UWVBFCisgICAgU1lOVEFYICAgICAgVW5zaWduZWQzMgorICAgIE1BWC1BQ0NFU1MgIGFjY2Vzc2libGUtZm9yLW5vdGlmeQorICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKKyAgICBERVNDUklQVElPTgorICAgICAgICAiSW5kaWNhdGVzIHRoaXMgaXMgdGhlIE50aCBub3RpZmljYXRpb24gaW4gYSBsb25nZXIgc2VxdWVuY2UKKyAgICAgICAgb2Ygbm90aWZpY2F0aW9ucyIKKyAgICA6Oj0geyBuc1BOb3RpZnlPYmplY3RzIDIgfQorCituc1BOb3RpZnlNYXhNZXNzYWdlTnVtYmVyIE9CSkVDVC1UWVBFCisgICAgU1lOVEFYICAgICAgVW5zaWduZWQzMgorICAgIE1BWC1BQ0NFU1MgIGFjY2Vzc2libGUtZm9yLW5vdGlmeQorICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKKyAgICBERVNDUklQVElPTgorICAgICAgICAiVGhlIG1heGltdW0gbnVtYmVyIG9mIG1lc3NhZ2VzIHRoaXMgbm90aWZpY2F0aW9uIHNlcXVlbmNlCisgICAgICAgIHdpbGwgY29udGFpbi4iCisgICAgOjo9IHsgbnNQTm90aWZ5T2JqZWN0cyAzIH0KKworCitFTkQKZGlmZiAtLWdpdCBhL21pYnMvVUNELVNOTVAtTUlCLnR4dCBiL21pYnMvVUNELVNOTVAtTUlCLnR4dAppbmRleCA2OWY5YWM1Li4zYmY0OTEzIDEwMDY0NAotLS0gYS9taWJzL1VDRC1TTk1QLU1JQi50eHQKKysrIGIvbWlicy9VQ0QtU05NUC1NSUIudHh0CkBAIC01NSw2ICs1NSwxMCBAQAogICAgIERFU0NSSVBUSU9OCiAJIlRoaXMgZmlsZSBkZWZpbmVzIHRoZSBwcml2YXRlIFVDRCBTTk1QIE1JQiBleHRlbnNpb25zLiIKIAorICAgIFJFVklTSU9OCSAiMjAxMTA1MTQwMDAwWiIKKyAgICBERVNDUklQVElPTgorCSJOZXcgb2JqZWN0cyBmb3IgbW9uaXRvcmluZyBDUFUgU3RlYWwsIEd1ZXN0IGFuZCBOaWNlIHZhbHVlcyIKKwogICAgIFJFVklTSU9OCSAiMjAwOTAxMTkwMDAwWiIKICAgICBERVNDUklQVElPTgogCSJOZXcgNjQtYml0IG9iamVjdHMgZm9yIG1vbml0b3JpbmcgbGFyZ2UgZGlzayB1c2FnZSIKQEAgLTE0MzIsNiArMTQzNiw1OCBAQAogICAgICAgICAiTnVtYmVyIG9mIGJsb2NrcyBzd2FwcGVkIG91dCIKICAgICA6Oj0geyBzeXN0ZW1TdGF0cyA2MyB9CiAKK3NzQ3B1UmF3U3RlYWwgT0JKRUNULVRZUEUKKyAgICBTWU5UQVggICAgICBDb3VudGVyMzIKKyAgICBNQVgtQUNDRVNTICByZWFkLW9ubHkKKyAgICBTVEFUVVMgICAgICBjdXJyZW50CisgICAgREVTQ1JJUFRJT04KKyAgICAgICAgIlRoZSBudW1iZXIgb2YgJ3RpY2tzJyAodHlwaWNhbGx5IDEvMTAwcykgc3BlbnQKKyAgICAgICAgIGJ5IHRoZSBoeXBlcnZpc29yIGNvZGUgdG8gcnVuIG90aGVyIFZNcyBldmVuCisgICAgICAgICB0aG91Z2ggdGhlIENQVSBpbiB0aGUgY3VycmVudCBWTSBoYWQgc29tZXRoaW5nIHJ1bm5hYmxlLgorCisgICAgICAgICBUaGlzIG9iamVjdCB3aWxsIG5vdCBiZSBpbXBsZW1lbnRlZCBvbiBob3N0cyB3aGVyZQorICAgICAgICAgdGhlIHVuZGVybHlpbmcgb3BlcmF0aW5nIHN5c3RlbSBkb2VzIG5vdCBtZWFzdXJlCisgICAgICAgICB0aGlzIHBhcnRpY3VsYXIgQ1BVIG1ldHJpYy4KKworICAgICAgICAgT24gYSBtdWx0aS1wcm9jZXNzb3Igc3lzdGVtLCB0aGUgJ3NzQ3B1UmF3KicKKyAgICAgICAgIGNvdW50ZXJzIGFyZSBjdW11bGF0aXZlIG92ZXIgYWxsIENQVXMsIHNvIHRoZWlyCisgICAgICAgICBzdW0gd2lsbCB0eXBpY2FsbHkgYmUgTioxMDAgKGZvciBOIHByb2Nlc3NvcnMpLiIKKyAgICA6Oj0geyBzeXN0ZW1TdGF0cyA2NCB9CisKK3NzQ3B1UmF3R3Vlc3QgT0JKRUNULVRZUEUKKyAgICBTWU5UQVggICAgICBDb3VudGVyMzIKKyAgICBNQVgtQUNDRVNTICByZWFkLW9ubHkKKyAgICBTVEFUVVMgICAgICBjdXJyZW50CisgICAgREVTQ1JJUFRJT04KKyAgICAgICAgIlRoZSBudW1iZXIgb2YgJ3RpY2tzJyAodHlwaWNhbGx5IDEvMTAwcykgc3BlbnQKKyAgICAgICAgIGJ5IHRoZSBDUFUgdG8gcnVuIGEgdmlydHVhbCBDUFUgKGd1ZXN0KS4KKworICAgICAgICAgVGhpcyBvYmplY3Qgd2lsbCBub3QgYmUgaW1wbGVtZW50ZWQgb24gaG9zdHMgd2hlcmUKKyAgICAgICAgIHRoZSB1bmRlcmx5aW5nIG9wZXJhdGluZyBzeXN0ZW0gZG9lcyBub3QgbWVhc3VyZQorICAgICAgICAgdGhpcyBwYXJ0aWN1bGFyIENQVSBtZXRyaWMuCisKKyAgICAgICAgIE9uIGEgbXVsdGktcHJvY2Vzc29yIHN5c3RlbSwgdGhlICdzc0NwdVJhdyonCisgICAgICAgICBjb3VudGVycyBhcmUgY3VtdWxhdGl2ZSBvdmVyIGFsbCBDUFVzLCBzbyB0aGVpcgorICAgICAgICAgc3VtIHdpbGwgdHlwaWNhbGx5IGJlIE4qMTAwIChmb3IgTiBwcm9jZXNzb3JzKS4iCisgICAgOjo9IHsgc3lzdGVtU3RhdHMgNjUgfQorCitzc0NwdVJhd0d1ZXN0TmljZSBPQkpFQ1QtVFlQRQorICAgIFNZTlRBWCAgICAgIENvdW50ZXIzMgorICAgIE1BWC1BQ0NFU1MgIHJlYWQtb25seQorICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKKyAgICBERVNDUklQVElPTgorICAgICAgICAiVGhlIG51bWJlciBvZiAndGlja3MnICh0eXBpY2FsbHkgMS8xMDBzKSBzcGVudAorICAgICAgICAgYnkgdGhlIENQVSB0byBydW4gYSBuaWNlZCB2aXJ0dWFsIENQVSAoZ3Vlc3QpLgorCisgICAgICAgICBUaGlzIG9iamVjdCB3aWxsIG5vdCBiZSBpbXBsZW1lbnRlZCBvbiBob3N0cyB3aGVyZQorICAgICAgICAgdGhlIHVuZGVybHlpbmcgb3BlcmF0aW5nIHN5c3RlbSBkb2VzIG5vdCBtZWFzdXJlCisgICAgICAgICB0aGlzIHBhcnRpY3VsYXIgQ1BVIG1ldHJpYy4KKworICAgICAgICAgT24gYSBtdWx0aS1wcm9jZXNzb3Igc3lzdGVtLCB0aGUgJ3NzQ3B1UmF3KicKKyAgICAgICAgIGNvdW50ZXJzIGFyZSBjdW11bGF0aXZlIG92ZXIgYWxsIENQVXMsIHNvIHRoZWlyCisgICAgICAgICBzdW0gd2lsbCB0eXBpY2FsbHkgYmUgTioxMDAgKGZvciBOIHByb2Nlc3NvcnMpLiIKKyAgICA6Oj0geyBzeXN0ZW1TdGF0cyA2NiB9CisKIC0tIHBvc3NpYmx5IHVzZWQgaW4gdGhlIGZ1dHVyZToKIC0tCiAtLSBzc0Vycm9yRmxhZyBPQkpFQ1QtVFlQRQpkaWZmIC0tZ2l0IGEvcGVybC9BU04vQVNOLnBtIGIvcGVybC9BU04vQVNOLnBtCmluZGV4IDZmMDYwM2YuLjI3MjA0OGMgMTAwNjQ0Ci0tLSBhL3BlcmwvQVNOL0FTTi5wbQorKysgYi9wZXJsL0FTTi9BU04ucG0KQEAgLTY2LDcgKzY2LDcgQEAKIAlBU05fVU5TSUdORUQKIAlBU05fVU5TSUdORUQ2NAogKTsKLSRWRVJTSU9OID0gJzUuMDYwMic7CiskVkVSU0lPTiA9ICc1LjA3MDInOwogCiBzdWIgQVVUT0xPQUQgewogICAgICMgVGhpcyBBVVRPTE9BRCBpcyB1c2VkIHRvICdhdXRvbG9hZCcgY29uc3RhbnRzIGZyb20gdGhlIGNvbnN0YW50KCkKZGlmZiAtLWdpdCBhL3BlcmwvQVNOL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oIGIvcGVybC9BU04vbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL3BlcmwvQVNOL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oCmRpZmYgLS1naXQgYS9wZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtIGIvcGVybC9BbnlEYXRhX1NOTVAvU3RvcmFnZS5wbQppbmRleCA0NGI4NWFlLi40ODlhYWQ5IDEwMDY0NAotLS0gYS9wZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtCisrKyBiL3BlcmwvQW55RGF0YV9TTk1QL1N0b3JhZ2UucG0KQEAgLTYsNyArNiw3IEBACiAjIyAgIHNjYWxhciBzZXRzPwogIyMgICBtdWx0aS1ob3N0cwogCi0kQW55RGF0YTo6U3RvcmFnZTo6VkVSU0lPTiA9ICc1LjA2MDInOworJEFueURhdGE6OlN0b3JhZ2U6OlZFUlNJT04gPSAnNS4wNzAyJzsKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3M7CiAKZGlmZiAtLWdpdCBhL3BlcmwvTWFrZWZpbGUuUEwgYi9wZXJsL01ha2VmaWxlLlBMCmluZGV4IDkyZjVhZDIuLjMxZmRjNDAgMTAwNjQ0Ci0tLSBhL3BlcmwvTWFrZWZpbGUuUEwKKysrIGIvcGVybC9NYWtlZmlsZS5QTApAQCAtMTEsNyArMTEsNyBAQAogICAgICRuc2NvbmZpZz0ibmV0LXNubXAtY29uZmlnIjsgIyBpbiBwYXRoIGJ5IGRlZmF1bHQKICAgICBteSAlUGFyYW1zID0gKAogCQkgICdOQU1FJyA9PiAnQnVuZGxlOjpOZXRTTk1QJywKLQkJICAnRElSJyA9PiBbcXcoZGVmYXVsdF9zdG9yZSBBU04gT0lEIGFnZW50IFNOTVAgVHJhcFJlY2VpdmVyKV0KKwkJICAnRElSJyA9PiBbcXcoZGVmYXVsdF9zdG9yZSBBU04gT0lEIGFnZW50IFNOTVAgVHJhcFJlY2VpdmVyKV0sCiAJCSAgKTsKIAogICAgICMgYm9ndXMsIGJ1dCB0aGVzZSBvcHRpb25zIG5lZWQgdG8gYmUgcGFzc2VkIHRvIHRoZSBsb3dlciBsZXZlbHMKZGlmZiAtLWdpdCBhL3BlcmwvT0lEL09JRC5wbSBiL3BlcmwvT0lEL09JRC5wbQppbmRleCBkYzNhNDI3Li5mYTZiMTYyIDEwMDY0NAotLS0gYS9wZXJsL09JRC9PSUQucG0KKysrIGIvcGVybC9PSUQvT0lELnBtCkBAIC05Miw3ICs5Miw3IEBACiAJc25tcF9vaWRfY29tcGFyZQogICAgICAgICBjb21wYXJlCiApOwotJFZFUlNJT04gPSAnNS4wNjAyJzsKKyRWRVJTSU9OID0gJzUuMDcwMic7CiAKIHN1YiBuZXcgewogICAgIG15ICR0eXBlID0gc2hpZnQ7CmRpZmYgLS1naXQgYS9wZXJsL09JRC9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaCBiL3BlcmwvT0lEL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiNGNjZGIKLS0tIC9kZXYvbnVsbAorKysgYi9wZXJsL09JRC9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaApAQCAtMCwwICsxLDYgQEAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgorCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzbnByaW50X29iamlkKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoc25wcmludF92YWx1ZSkKKwpkaWZmIC0tZ2l0IGEvcGVybC9TTk1QL1NOTVAucG0gYi9wZXJsL1NOTVAvU05NUC5wbQppbmRleCBjYTYyMzM5Li40ZTgwMDUxIDEwMDY0NAotLS0gYS9wZXJsL1NOTVAvU05NUC5wbQorKysgYi9wZXJsL1NOTVAvU05NUC5wbQpAQCAtNyw3ICs3LDcgQEAKICMgICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgc2FtZSB0ZXJtcyBhcyBQZXJsIGl0c2VsZi4KIAogcGFja2FnZSBTTk1QOwotJFZFUlNJT04gPSAnNS4wNjAyJzsgICAjIGN1cnJlbnQgcmVsZWFzZSB2ZXJzaW9uIG51bWJlcgorJFZFUlNJT04gPSAnNS4wNzAyJzsgICAjIGN1cnJlbnQgcmVsZWFzZSB2ZXJzaW9uIG51bWJlcgogCiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzOwpkaWZmIC0tZ2l0IGEvcGVybC9TTk1QL1NOTVAueHMgYi9wZXJsL1NOTVAvU05NUC54cwppbmRleCAyNDE3YmM3Li4yNTBhMGIwIDEwMDY0NAotLS0gYS9wZXJsL1NOTVAvU05NUC54cworKysgYi9wZXJsL1NOTVAvU05NUC54cwpAQCAtMjQyLDcgKzI0Miw4IEBACiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGhhdmVfaW5pdGVkID0gMTsKIAotICAgICAgICBzbm1wX3NldF9xdWlja19wcmludCgxKTsKKyAgICAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1FVSUNLX1BSSU5ULCAxKTsKICAgICAgICAgaW5pdF9zbm1wKGFwcG5hbWUpOwogICAgIAogICAgICAgICBuZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgTkVUU05NUF9EU19MSUJfRE9OVF9CUkVBS0RPV05fT0lEUywgMSk7CkBAIC0zMDczLDYgKzMwNzQsNyBAQAogICAgICAgICAgICBpbnQgdXNlX2VudW1zOwogICAgICAgICAgICBzdHJ1Y3QgZW51bV9saXN0ICplcDsKICAgICAgICAgICAgaW50IGJlc3RfZ3Vlc3M7CSAgIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIAogICAgICAgICAgICBOZXcgKDAsIG9pZF9hcnIsIE1BWF9PSURfTEVOLCBvaWQpOwogCkBAIC0zMTk0LDYgKzMxOTYsOSBAQAogICAgICAgICAgICAgICAvKiBCVUchISEgbmVlZCB0byByZXR1cm4gYW4gZXJyb3IgdmFsdWUgKi8KICAgICAgICAgICAgICAgWFBVU0hzKCZzdl91bmRlZik7IC8qIG5vIG1lbSBvciBiYWQgYXJncyAqLwogICAgICAgICAgICB9CisjZWxzZSAgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgICAgICAgIHdhcm4oImVycm9yOiBOZXQtU05NUCB3YXMgY29tcGlsZWQgdXNpbmcgLS1lbmFibGUtcmVhZC1vbmx5LCBzZXQoKSBjYW4gbm90IGJlIHVzZWQuIik7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiBkb25lOgogICAgICAgICAgICBTYWZlZnJlZShvaWRfYXJyKTsKICAgICAgICAgfQpAQCAtNDQ0Niw3ICs0NDUxLDcgQEAKIAkgICAKICAgICAgICAgICAgTmV3ICgwLCBvaWRfYXJyLCBNQVhfT0lEX0xFTiwgb2lkKTsKIAotICAgICAgICAgICBpZiAob2lkX2FyciAmJiBTdlJPSyhzZXNzX3JlZikgJiYgU3ZST0sodmFybGlzdF9yZWYpKSB7CisgICAgICAgICAgIGlmIChvaWRfYXJyICYmIFN2Uk9LKHNlc3NfcmVmKSkgewogCiAgICAgICAgICAgICAgIHNlc3NfcHRyX3N2ID0gaHZfZmV0Y2goKEhWKilTdlJWKHNlc3NfcmVmKSwgIlNlc3NQdHIiLCA3LCAxKTsKIAkgICAgICBzcyA9IChTbm1wU2Vzc2lvbiAqKVN2SVYoKFNWKilTdlJWKCpzZXNzX3B0cl9zdikpOwpAQCAtNDQ2MCw4ICs0NDY1LDEzIEBACiAJICAgICAgCiAgICAgICAgICAgICAgIHBkdSA9IHNubXBfcGR1X2NyZWF0ZShTTk1QX01TR19UUkFQMik7CiAKLSAgICAgICAgICAgICAgdmFybGlzdCA9IChBViopIFN2UlYodmFybGlzdF9yZWYpOwotICAgICAgICAgICAgICB2YXJsaXN0X2xlbiA9IGF2X2xlbih2YXJsaXN0KTsKKyAgICAgICAgICAgICAgaWYgKFN2Uk9LKHZhcmxpc3RfcmVmKSkgeworICAgICAgICAgICAgICAgICAgdmFybGlzdCA9IChBViopIFN2UlYodmFybGlzdF9yZWYpOworICAgICAgICAgICAgICAgICAgdmFybGlzdF9sZW4gPSBhdl9sZW4odmFybGlzdCk7CisgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICB2YXJsaXN0ID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgIHZhcmxpc3RfbGVuID0gLTE7CisgICAgICAgICAgICAgIH0KIAkgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogICAgICAgICAgICAgICByZXMgPSBfX2FkZF92YXJfdmFsX3N0cihwZHUsIHN5c1VwVGltZSwgU1lTX1VQVElNRV9PSURfTEVOLAogCQkJCXVwdGltZSwgc3RybGVuKHVwdGltZSksIFRZUEVfVElNRVRJQ0tTKTsKQEAgLTQ3NDksNyArNDc1OSw4IEBACiAJaW50CQlmbGFnCiAJQ09ERToKIAl7Ci0JICAgc25tcF9zZXRfZHVtcF9wYWNrZXQoZmxhZyk7CisgICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0RVTVBfUEFDS0VULCBmbGFnKTsKIAl9CiAKIApAQCAtNDg5Nyw3ICs0OTA4LDggQEAKIAlpbnQJdmFsCiAJQ09ERToKIAl7Ci0JICAgc25tcF9zZXRfc2F2ZV9kZXNjcmlwdGlvbnModmFsKTsKKyAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfU0FWRV9NSUJfREVTQ1JTLCB2YWwpOwogCX0KIAogdm9pZApkaWZmIC0tZ2l0IGEvcGVybC9TTk1QL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oIGIvcGVybC9TTk1QL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkYzY0MmMKLS0tIC9kZXYvbnVsbAorKysgYi9wZXJsL1NOTVAvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgKQEAgLTAsMCArMSw4IEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoc25wcmludF9vYmppZCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHNucHJpbnRfdmFsdWUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShmaW5kX21vZHVsZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGdldF90Y19kZXNjcmlwdGlvbikKKwpkaWZmIC0tZ2l0IGEvcGVybC9TTk1QL3QvYXN5bmMudCBiL3BlcmwvU05NUC90L2FzeW5jLnQKaW5kZXggYjFjODZjNi4uZjNmYjM4ZCAxMDA2NDQKLS0tIGEvcGVybC9TTk1QL3QvYXN5bmMudAorKysgYi9wZXJsL1NOTVAvdC9hc3luYy50CkBAIC0xNyw3ICsxNyw3IEBACiB1c2UgdmFycyBxdygkYWdlbnRfcG9ydCAkY29tbSAkYWdlbnRfaG9zdCk7CiAKIGlmICgkXk8gPX4gL3dpbjMyL2kpIHsKLSAgd2FybiAiV2luMzIgZGV0ZWN0ZWQgLSBza2lwcGluZyBhc3luYyBjYWxsc1xuIjsKKyAgd2FybiAiV2luMzIvV2luNjQgZGV0ZWN0ZWQgLSBza2lwcGluZyBhc3luYyBjYWxsc1xuIjsKICAgZXhpdDsKIH0KIApkaWZmIC0tZ2l0IGEvcGVybC9TTk1QL3QvYnVsa3dhbGsudCBiL3BlcmwvU05NUC90L2J1bGt3YWxrLnQKaW5kZXggNjBmMTBiNS4uMmQxM2U3YiAxMDA2NDQKLS0tIGEvcGVybC9TTk1QL3QvYnVsa3dhbGsudAorKysgYi9wZXJsL1NOTVAvdC9idWxrd2Fsay50CkBAIC0zMjYsNyArMzI2LDcgQEAKIAkJCSAgICBbJ2lmU3BlZWQnXSwgWydpZkRlc2NyJ10pOwkgIyBSZXBlYXRlZCB2YXJpYWJsZXMuCiAKIGlmICgkXk8gPX4gL3dpbjMyL2kpIHsKLSAgd2FybiAiV2luMzIgZGV0ZWN0ZWQgLSBza2lwcGluZyBhc3luYyBjYWxsc1xuIjsKKyAgd2FybiAiV2luMzIvV2luNjQgZGV0ZWN0ZWQgLSBza2lwcGluZyBhc3luYyBjYWxsc1xuIjsKIH0KIGVsc2UgewogICBAbGlzdCA9ICRzMS0+YnVsa3dhbGsoMiwgMTYsICR2YXJzLCBbIFwmYXN5bmNfY2IxLCAkdmFycyBdICk7CmRpZmYgLS1naXQgYS9wZXJsL1NOTVAvdC9ub3RpZnkudCBiL3BlcmwvU05NUC90L25vdGlmeS50CmluZGV4IDQzNDIzN2YuLjcyNjAwZmEgMTAwNjQ0Ci0tLSBhL3BlcmwvU05NUC90L25vdGlmeS50CisrKyBiL3BlcmwvU05NUC90L25vdGlmeS50CkBAIC0xMCw3ICsxMCw3IEBACiAgICAgJEVOVnsnTUlCRElSUyd9ID0gJysnIC4gYWJzX3BhdGgoIi4uLy4uL21pYnMiKTsKIH0KIHVzZSBUZXN0OwotQkVHSU4geyAkbiA9IDEwOyBwbGFuIHRlc3RzID0+ICRuIH0KK0JFR0lOIHsgJG4gPSAxMTsgcGxhbiB0ZXN0cyA9PiAkbiB9CiB1c2UgU05NUDsKIHVzZSB2YXJzIHF3KCRhZ2VudF9wb3J0ICRjb21tICRjb21tMiAkdHJhcF9wb3J0ICRhZ2VudF9ob3N0ICRzZWNfbmFtZSAkcHJpdl9wYXNzICRhdXRoX3Bhc3MgJGJhZF9uYW1lKTsKIHJlcXVpcmUgJ3Qvc3RhcnRhZ2VudC5wbCc7CkBAIC0yMSwyMCArMjEsMjAgQEAKIG15ICRnZW5lcmljID0gJ3NwZWNpZmljJzsKIAogIyAgICAgICAgICAgICAgICAgICAgICAgICBWMSB0cmFwIHRlc3RpbmcKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIDEgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIDEgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgRmlyZSB1cCBhIHRyYXAgc2Vzc2lvbi4KIG15ICRzMSA9CiAgICAgbmV3IFNOTVA6OlNlc3Npb24gKERlc3RIb3N0PT4kYWdlbnRfaG9zdCxWZXJzaW9uPT4xLENvbW11bml0eT0+JGNvbW0sUmVtb3RlUG9ydD0+JHRyYXBfcG9ydCk7CiBvayhkZWZpbmVkKCRzMSkpOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgMiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIDIgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgdGVzdCB2MSB0cmFwCiBpZiAoZGVmaW5lZCgkczEpKSB7CiAgICRyZXMgPSAkczEtPnRyYXAoZW50ZXJwcmlzZSA9PiAkZW50ZXJwcmlzZSwgYWdlbnQ9PiRhZ2VudF9ob3N0LCBnZW5lcmljPT4kZ2VuZXJpYyxbW3N5c0NvbnRhY3QsIDAsICdyb290QGxvY2FsaG9zdCddLCBbc3lzTG9jYXRpb24sIDAsICdoZXJlJ11dICk7CiB9CiBvaygkcmVzID1+IC9eMCBidXQgdHJ1ZS8pOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgMyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICAzICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIHRlc3Qgd2l0aCB3cm9uZyB2YXJiaW5kCiB1bmRlZiAkcmVzOwogaWYgKGRlZmluZWQoJHMxKSkgewpAQCAtNDUsMTIgKzQ1LDEyIEBACiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogIyAgICAgICAgICAgICAgICAgICAgICBWMiB0ZXN0aW5nCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyA0ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgNCAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBGaXJlIHVwIGEgdjIgdHJhcCBzZXNzaW9uLgogbXkgJHMyID0KICAgICBuZXcgU05NUDo6U2Vzc2lvbiAoVmVyc2lvbj0+MiwgRGVzdEhvc3Q9PiRhZ2VudF9ob3N0LENvbW11bml0eT0+JGNvbW0yLFJlbW90ZVBvcnQ9PiR0cmFwX3BvcnQpOwogb2soZGVmaW5lZCgkczIpKTsKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIDUgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICA1ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIHRlc3QgdjIgdHJhcAogdW5kZWYgJHJlczsKIGlmIChkZWZpbmVkKCRzMikpIHsKQEAgLTU4LDcgKzU4LDcgQEAKICAgI3ByaW50KCJyZXMgaXMgJHJlc1xuIik7CiB9CiBvaygkcmVzID1+IC9eMCBidXQgdHJ1ZS8pOwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIDYgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIDYgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgbm8gdHJhcG9pZCBhbmQgdXB0aW1lIGdpdmVuLiBTaG91bGQgdGFrZSBkZWZhdWx0cy4uLgogbXkgJHJldDsKIGlmIChkZWZpbmVkKCRzMikpIHsKQEAgLTY2LDI3ICs2NiwzNSBAQAogICAjcHJpbnQoInJlcyBpcyAkcmV0XG4iKTsKIH0KIG9rKGRlZmluZWQoJHJldCkpOworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICA3ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIG5vIHZhcmJpbmQgbGlzdCBnaXZlbi4KK3VuZGVmICRyZXM7CitpZiAoZGVmaW5lZCgkczIpKSB7CisgICRyZXMgPSAkczItPnRyYXAodHJhcG9pZD0+J2NvbGRTdGFydCcpOworICAjcHJpbnQoInJlcyBpcyAkcmVzXG4iKTsKK30KK29rKGRlZmluZWQoJHJlcykgJiYgJHJlcyA9fiAvXjAgYnV0IHRydWUvKTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKICMgICAgICAgICAgICAgICAgICAgICB2MyB0ZXN0aW5nCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIDcgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgOCAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBGaXJlIHVwIGEgdjMgdHJhcCBzZXNzaW9uLgogbXkgJHMzID0gbmV3IFNOTVA6OlNlc3Npb24oVmVyc2lvbj0+MywgRGVzdEhvc3Q9PiAkYWdlbnRfaG9zdCwgUmVtb3RlUG9ydD0+JHRyYXBfcG9ydCwgU2VjTmFtZSA9PiAkc2VjX25hbWUpOwogb2soZGVmaW5lZCgkczMpKTsKIAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICA4ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgOSAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogaWYgKGRlZmluZWQoJHMzKSkgewogICAkcmVzID0gJHMzLT5pbmZvcm0odXB0aW1lPT4xMTEsIHRyYXBvaWQ9Pidjb2xkU3RhcnQnLCBbW3N5c0NvbnRhY3QsIDAsICdyb290QGxvY2FsaG9zdCddLCBbc3lzTG9jYXRpb24sIDAsICdoZXJlJ11dICk7CiB9CiBvaygkcmVzID1+IC9eMCBidXQgdHJ1ZS8pOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyA5ICMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIDEwICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIEZpcmUgdXAgYSB2MyB0cmFwIHNlc3Npb24uCiAkczMgPSBuZXcgU05NUDo6U2Vzc2lvbihWZXJzaW9uPT4zLCBEZXN0SG9zdD0+ICRhZ2VudF9ob3N0LCBSZW1vdGVQb3J0PT4kdHJhcF9wb3J0LCBTZWNOYW1lID0+ICRzZWNfbmFtZSwgU2VjTGV2ZWwgPT4gYXV0aFByaXYsIEF1dGhQYXNzID0+ICRhdXRoX3Bhc3MsIFByaXZQYXNzID0+ICRwcml2X3Bhc3MpOwogb2soZGVmaW5lZCgkczMpKTsKIAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICAxMCAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgMTEgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIHVuZGVmICRyZXM7CiBpZiAoZGVmaW5lZCgkczMpKSB7CiAgICAgJHJlcyA9ICRzMy0+aW5mb3JtKHVwdGltZT0+MTExLCB0cmFwb2lkPT4nY29sZFN0YXJ0JywgW1tzeXNDb250YWN0LCAwLCAncm9vdEBsb2NhbGhvc3QnXSwgW3N5c0xvY2F0aW9uLCAwLCAnaGVyZSddXSApOwpkaWZmIC0tZ2l0IGEvcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtIGIvcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtCmluZGV4IGJkOTBlM2MuLmU3ZTI5MjEgMTAwNjQ0Ci0tLSBhL3BlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci5wbQorKysgYi9wZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIucG0KQEAgLTQ3LDcgKzQ3LDcgQEAKIAlORVRTTk1QVFJBUERfUFJFX0hBTkRMRVIKICk7CiAKLSRWRVJTSU9OID0gJzUuMDYwMic7CiskVkVSU0lPTiA9ICc1LjA3MDInOwogCiAjIHN1YiBuZXcgewogIyAgICAgbXkgJHR5cGUgPSBzaGlmdDsKZGlmZiAtLWdpdCBhL3BlcmwvVHJhcFJlY2VpdmVyL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oIGIvcGVybC9UcmFwUmVjZWl2ZXIvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQzMzFlMwotLS0gL2Rldi9udWxsCisrKyBiL3BlcmwvVHJhcFJlY2VpdmVyL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oCkBAIC0wLDAgKzEsNiBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKG5ldHNubXBfYWRkX2RlZmF1bHRfdHJhcGhhbmRsZXIpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShtZW1vcnlfZnJlZSkKKwpkaWZmIC0tZ2l0IGEvcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG0gYi9wZXJsL2FnZW50L1N1cHBvcnQvU3VwcG9ydC5wbQppbmRleCAwNjU0MWNkLi40MWNmNjk0IDEwMDY0NAotLS0gYS9wZXJsL2FnZW50L1N1cHBvcnQvU3VwcG9ydC5wbQorKysgYi9wZXJsL2FnZW50L1N1cHBvcnQvU3VwcG9ydC5wbQpAQCAtMjYsNyArMjYsNyBAQAogQElTQSAgICAgICA9IHF3KEV4cG9ydGVyIGdldExlYWYpOwogQEVYUE9SVCAgICA9IHF3KHJlZ2lzdGVyQWdlbnQgZ2V0T2lkRWxlbWVudCBzZXRPaWRFbGVtZW50KTsKIEBFWFBPUlRfT0sgPSBxdygpOwotJFZFUlNJT04gPSAnNS4wNjAyJzsKKyRWRVJTSU9OID0gJzUuMDcwMic7CiAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3M7CmRpZmYgLS1naXQgYS9wZXJsL2FnZW50L2FnZW50LnBtIGIvcGVybC9hZ2VudC9hZ2VudC5wbQppbmRleCAxZTJkYWQ1Li4zMTBlOWU1IDEwMDY0NAotLS0gYS9wZXJsL2FnZW50L2FnZW50LnBtCisrKyBiL3BlcmwvYWdlbnQvYWdlbnQucG0KQEAgLTg3LDcgKzg3LDcgQEAKIAlTTk1QX0VSUl9BVVRIT1JJWkFUSU9ORVJST1IKIAlTTk1QX0VSUl9OT1RXUklUQUJMRQogKTsKLSRWRVJTSU9OID0gJzUuMDYwMic7CiskVkVSU0lPTiA9ICc1LjA3MDInOwogCiBzdWIgQVVUT0xPQUQgewogICAgICMgVGhpcyBBVVRPTE9BRCBpcyB1c2VkIHRvICdhdXRvbG9hZCcgY29uc3RhbnRzIGZyb20gdGhlIGNvbnN0YW50KCkKQEAgLTE5OSw2ICsxOTksMTIgQEAKICAgICBfX2FnZW50X2NoZWNrX2FuZF9wcm9jZXNzKCRibG9ja2luZyB8fCAwKTsKIH0KIAorc3ViIHVwdGltZSB7CisgICAgbXkgJHNlbGYgPSBzaGlmdDsKKyAgICAkc2VsZi0+bWF5YmVfaW5pdF9saWIoKTsKKyAgICByZXR1cm4gX3VwdGltZSgpOworfQorCiBib290c3RyYXAgTmV0U05NUDo6YWdlbnQgJFZFUlNJT047CiAKICMgUHJlbG9hZGVkIG1ldGhvZHMgZ28gaGVyZS4KZGlmZiAtLWdpdCBhL3BlcmwvYWdlbnQvYWdlbnQueHMgYi9wZXJsL2FnZW50L2FnZW50LnhzCmluZGV4IDk5ZThlY2IuLmM3YjVkOWEgMTAwNjQ0Ci0tLSBhL3BlcmwvYWdlbnQvYWdlbnQueHMKKysrIGIvcGVybC9hZ2VudC9hZ2VudC54cwpAQCAtNjAsMTIgKzYwLDE0IEBACiBzdGF0aWMgaW50IGNvbnN0YW50X01PREVfU0VUX1IoZG91YmxlICp2YWx1ZSwgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgaW50IGxlbikKIHsKICAgICBzd2l0Y2ggKGxlbiA+PSAxNiA/IG5hbWVbMTZdIDogLTEpIHsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSAnMSc6CiAJVEVTVF9DT05TVEFOVCh2YWx1ZSwgbmFtZSwgTU9ERV9TRVRfUkVTRVJWRTEpOwogICAgICAgICBicmVhazsKICAgICBjYXNlICcyJzoKIAlURVNUX0NPTlNUQU5UKHZhbHVlLCBuYW1lLCBNT0RFX1NFVF9SRVNFUlZFMik7CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KICAgICByZXR1cm4gRUlOVkFMOwogfQpAQCAtMTIxLDYgKzEyMyw3IEBACiAgICAgICAgIHJldHVybiBFSU5WQUw7CiAKICAgICBzd2l0Y2ggKGxlbiA+PSA5ID8gbmFtZVs5XSA6IC0xKSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgJ0EnOgogICAgICAgICBURVNUX0NPTlNUQU5UKHZhbHVlLCBuYW1lLCBNT0RFX1NFVF9BQ1RJT04pOwogICAgICAgICBicmVhazsKQEAgLTEzMywxMSArMTM2LDEyIEBACiAgICAgY2FzZSAnRic6CiAgICAgICAgIFRFU1RfQ09OU1RBTlQodmFsdWUsIG5hbWUsIE1PREVfU0VUX0ZSRUUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlICdSJzoKLSAgICAgICAgcmV0dXJuIGNvbnN0YW50X01PREVfU0VUX1IodmFsdWUsIG5hbWUsIGxlbik7CiAgICAgY2FzZSAnVSc6CiAgICAgICAgIFRFU1RfQ09OU1RBTlQodmFsdWUsIG5hbWUsIE1PREVfU0VUX1VORE8pOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICBjYXNlICdSJzoKKyAgICAgICAgcmV0dXJuIGNvbnN0YW50X01PREVfU0VUX1IodmFsdWUsIG5hbWUsIGxlbik7CiAgICAgfQogICAgIHJldHVybiBFSU5WQUw7CiB9CkBAIC0yMzQsNiArMjM4LDEzIEBACiAgICAgT1VUUFVUOgogCVJFVFZBTAogCitpbnQKK191cHRpbWUoKQorICAgIENPREU6CisgICAgICAgIFJFVFZBTCA9IG5ldHNubXBfZ2V0X2FnZW50X3VwdGltZSgpOworICAgIE9VVFBVVDoKKwlSRVRWQUwKKwogdm9pZAogaW5pdF9taWIoKQogICAgIENPREU6CmRpZmYgLS1naXQgYS9wZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSBiL3BlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCmluZGV4IDM5YjhhMTQuLmViYWMxZWMgMTAwNjQ0Ci0tLSBhL3BlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCisrKyBiL3BlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCkBAIC05Niw3ICs5Niw3IEBACiAJCQkJICAgTkVUU05NUF9EU19BR0VOVF9NQVhfR0VUQlVMS1JFUEVBVFMKIAkJCQkgICBORVRTTk1QX0RTX0FHRU5UX01BWF9HRVRCVUxLUkVTUE9OU0VTCiApOwotJFZFUlNJT04gPSAnNS4wNjAyJzsKKyRWRVJTSU9OID0gJzUuMDcwMic7CiAKIHN1YiBBVVRPTE9BRCB7CiAgICAgIyBUaGlzIEFVVE9MT0FEIGlzIHVzZWQgdG8gJ2F1dG9sb2FkJyBjb25zdGFudHMgZnJvbSB0aGUgY29uc3RhbnQoKQpkaWZmIC0tZ2l0IGEvcGVybC9hZ2VudC9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaCBiL3BlcmwvYWdlbnQvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGYyNjMwZQotLS0gL2Rldi9udWxsCisrKyBiL3BlcmwvYWdlbnQvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgKQEAgLTAsMCArMSw2IEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYWdlbnRfY2hlY2tfYW5kX3Byb2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzbm1wX2VuYWJsZV9zdGRlcnJsb2cpCisKZGlmZiAtLWdpdCBhL3BlcmwvYWdlbnQvdGVzdC5wbCBiL3BlcmwvYWdlbnQvdGVzdC5wbAppbmRleCBhN2FjOGY5Li44OGNiYTU2IDEwMDY0NAotLS0gYS9wZXJsL2FnZW50L3Rlc3QucGwKKysrIGIvcGVybC9hZ2VudC90ZXN0LnBsCkBAIC05LDcgKzksNyBAQAogQkVHSU4geyAkfCA9IDE7IAogICAgICAgICAkRU5WeydTTk1QQ09ORlBBVEgnfSA9ICdub3BhdGgnOwogICAgICAgICAkRU5WeydNSUJTJ30gPSAnJzsKLSAgICAgICAgcHJpbnQgIjEuLjVcbiI7CisgICAgICAgIHByaW50ICIxLi42XG4iOwogICAgICAgfQogRU5EIHtwcmludCAibm90IG9rIDFcbiIgdW5sZXNzICRsb2FkZWQ7fQogdXNlIE5ldFNOTVA6OmFnZW50ICgnOmFsbCcpOwpAQCAtNzYsNiArNzYsMTIgQEAKIHByaW50IGl0KCRyZWdpdGVtLCA0KTsKICNwcmludCBTVERFUlIgJHJlZ2l0ZW0sIjoiLHJlZigkcmVnaXRlbSksIlxuIjsKIHByaW50IGl0KHJlZigkcmVnaXRlbSkgZXEgIk5ldFNOTVA6OmFnZW50OjpuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uIiwgNSk7CisKK215ICR1cHRpbWUxID0gJGFnZW50LT51cHRpbWUoKTsKK215ICR1cHRpbWUyID0gJGFnZW50LT51cHRpbWUoNjY2KTsKK215ICR1cHRpbWUzID0gJGFnZW50LT51cHRpbWUoNTU1LCA0NDQpOworcHJpbnQgaXQoJHVwdGltZTEgPD0gJHVwdGltZTIgJiYgJHVwdGltZTIgPD0gJHVwdGltZTMsIDYpOworCiBleGl0OwogCiB3aGlsZSgxKSB7CmRpZmYgLS1naXQgYS9wZXJsL2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSBiL3BlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCmluZGV4IGNjYWU2MDYuLjNkMThmZmMgMTAwNjQ0Ci0tLSBhL3BlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCisrKyBiL3BlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCkBAIC0yMDAsNyArMjAwLDcgQEAKIAkJCQkgICBORVRTTk1QX0RTX0xJQl9LU01fU0VSVklDRV9OQU1FCiAJCQkJICAgTkVUU05NUF9EU19MSUJfU0JTTV9MT0NBTF9QV0QKICk7Ci0kVkVSU0lPTiA9ICc1LjA2MDInOworJFZFUlNJT04gPSAnNS4wNzAyJzsKIAogc3ViIEFVVE9MT0FEIHsKICAgICAjIFRoaXMgQVVUT0xPQUQgaXMgdXNlZCB0byAnYXV0b2xvYWQnIGNvbnN0YW50cyBmcm9tIHRoZSBjb25zdGFudCgpCmRpZmYgLS1naXQgYS9wZXJsL2RlZmF1bHRfc3RvcmUvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmggYi9wZXJsL2RlZmF1bHRfc3RvcmUvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL3BlcmwvZGVmYXVsdF9zdG9yZS9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaApkaWZmIC0tZ2l0IGEvcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYyBiL3B5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmMKaW5kZXggN2JiZDdiYi4uNTEyZjk5OSAxMDA2NDQKLS0tIGEvcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYworKysgYi9weXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jCkBAIC0xMzYwLDEyICsxMzYwLDEyIEBACiAKICAgaWYgKG91cl9pZGVudGl0eSAmJiBvdXJfaWRlbnRpdHlbMF0gIT0gJ1wwJykKICAgICAgIENPTlRBSU5FUl9JTlNFUlQoc2Vzc2lvbi50cmFuc3BvcnRfY29uZmlndXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfY3JlYXRlX2NvbmZpZygib3VyX2lkZW50aXR5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfY3JlYXRlX2NvbmZpZygibG9jYWxDZXJ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXJfaWRlbnRpdHkpKTsKIAogICBpZiAodGhlaXJfaWRlbnRpdHkgJiYgdGhlaXJfaWRlbnRpdHlbMF0gIT0gJ1wwJykKICAgICAgIENPTlRBSU5FUl9JTlNFUlQoc2Vzc2lvbi50cmFuc3BvcnRfY29uZmlndXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfY3JlYXRlX2NvbmZpZygidGhlaXJfaWRlbnRpdHkiLAorICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RyYW5zcG9ydF9jcmVhdGVfY29uZmlnKCJwZWVyQ2VydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlaXJfaWRlbnRpdHkpKTsKIAogICBpZiAodGhlaXJfaG9zdG5hbWUgJiYgdGhlaXJfaG9zdG5hbWVbMF0gIT0gJ1wwJykKZGlmZiAtLWdpdCBhL3B5dGhvbi9uZXRzbm1wL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oIGIvcHl0aG9uL25ldHNubXAvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg5NDE2YQotLS0gL2Rldi9udWxsCisrKyBiL3B5dGhvbi9uZXRzbm1wL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oCkBAIC0wLDAgKzEsNiBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHNucHJpbnRfdmFsdWUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShlbmFibGVfc3RkZXJybG9nKQorCmRpZmYgLS1naXQgYS9zbm1wbGliL01ha2VmaWxlLmRlcGVuZCBiL3NubXBsaWIvTWFrZWZpbGUuZGVwZW5kCmluZGV4IGFhMDUzNGIuLmQ3MzQxY2YgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvTWFrZWZpbGUuZGVwZW5kCisrKyBiL3NubXBsaWIvTWFrZWZpbGUuZGVwZW5kCkBAIC0zLDggKzMsNyBAQAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oIAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmggCiAuL2FzbjEubG86ICAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCiAuL2FzbjEubG86ICAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKQEAgLTI3LDEyICsyNiwxMiBAQAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2FzbjEubG86ICAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTU4LDkgKzU3LDkgQEAKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oIAotLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIAotLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCisuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKKy4vY2FsbGJhY2subG86ICAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vY2FsbGJhY2subG86ICAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCkBAIC04NCw3ICs4Myw2IEBACiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC0xMTQsNjAgKzExMiwxMSBAQAogLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKIC4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oIAotLi9jZXJ0X3V0aWwubG86ICAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKLS4vY2VydF91dGlsLmxvOiAgLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCi0uL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKLS4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAotLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCi0uL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAotLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCi0uL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAotLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCi0uL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAotLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCi0uL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAotLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAotLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9maWxlX3V0aWxzLmgKLS4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGlyX3V0aWxzLmgKLS4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2VydF91dGlsLmgKLS4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9vcGVuc3NsLmgKKy4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2NoZWNrX3ZhcmJpbmQubG86ICAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIApAQCAtMTk0LDE4ICsxNDMsMTggQEAKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmggCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCkBAIC0yMjQsNiArMTczLDcgQEAKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaApAQCAtMjYzLDE4ICsyMTMsMTcgQEAKIC4vY2xvc2VkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vY2xvc2VkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vY2xvc2VkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vY2xvc2VkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9jbG9zZWRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vY2xvc2VkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9jbG9zZWRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9jbG9zZWRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi9jbG9zZWRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2NtdV9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCkBAIC0zMDIsMTMgKzI1MSwxMyBAQAogLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMzQ2LDYgKzI5NSw3IEBACiAuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmggCiAuL2NvbnRhaW5lci5sbzogIC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKQEAgLTM3Miw3ICszMjIsNiBAQAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTM4Myw3ICszMzIsNyBAQAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCi0uL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaCAKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaApAQCAtMzkxLDggKzM0MCw4IEBACiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmggCi0uL2NvbnRhaW5lci5sbzogIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKQEAgLTQxNyw2ICszNjYsNyBAQAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX251bGwuaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCkBAIC00NDMsNyArMzkzLDYgQEAKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC00ODcsNiArNDM2LDcgQEAKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKQEAgLTUxMyw3ICs0NjMsNiBAQAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC01NTcsMTAgKzUwNiwxMSBAQAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKLS4vY29udGFpbmVyX251bGwubG86ICAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKQEAgLTU4Myw3ICs1MzMsNiBAQAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtNTk0LDcgKzU0Myw3IEBACiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmggCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaApAQCAtNjI4LDYgKzU3Nyw3IEBACiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX251bGwuaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmggCiAuL2RhdGFfbGlzdC5sbzogIC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKQEAgLTY1NCw3ICs2MDQsNiBAQAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTY2NSw3ICs2MTQsNyBAQAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCi0uL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaCAKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaApAQCAtNjczLDggKzYyMiw4IEBACiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmggCi0uL2RhdGFfbGlzdC5sbzogIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKQEAgLTY5OCw2ICs2NDcsNyBAQAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2RlZmF1bHRfc3RvcmUubG86ICAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCkBAIC03MjMsNyArNjczLDYgQEAKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtNzU2LDYgKzcwNSw3IEBACiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaCAKIC4vZGlyX3V0aWxzLmxvOiAgLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIApAQCAtNzgyLDcgKzczMiw2IEBACiAuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtNzkzLDcgKzc0Miw3IEBACiAuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKLS4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oIAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKIC4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKIC4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAogLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCkBAIC04MDEsOCArNzUwLDggQEAKIC4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCiAuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCiAuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaCAKLS4vZGlyX3V0aWxzLmxvOiAgLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKIC4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCiAuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAogLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaApAQCAtODU0LDE4ICs4MDMsMTggQEAKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmggCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCkBAIC05MDAsNiArODQ5LDcgQEAKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oIAogLi9maWxlX3V0aWxzLmxvOiAgLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKQEAgLTkyNiw3ICs4NzYsNiBAQAogLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC05MzcsNyArODg2LDcgQEAKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oIAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAogLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAogLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaApAQCAtOTk4LDEzICs5NDcsMTMgQEAKIC4vZ2V0dGltZW9mZGF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2dldHRpbWVvZmRheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vZ2V0dGltZW9mZGF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vZ2V0dGltZW9mZGF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9nZXR0aW1lb2ZkYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZ2V0dGltZW9mZGF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2dldHRpbWVvZmRheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL2dldHRpbWVvZmRheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZ2V0dGltZW9mZGF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9nZXR0aW1lb2ZkYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9nZXR0aW1lb2ZkYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9nZXR0aW1lb2ZkYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9nZXR0aW1lb2ZkYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vZ2V0dGltZW9mZGF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMDM1LDEzICs5ODQsMTMgQEAKIC4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oIGluZXRfbnRvcC5oCkBAIC0xMDcxLDEzICsxMDIwLDEzIEBACiAuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaCBpbmV0X3B0b24uaApAQCAtMTEwNiwxOCArMTA1NSwxOSBAQAogLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCAKKy4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaCAKIC4va2V5dG9vbHMubG86ICAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4va2V5dG9vbHMubG86ICAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCkBAIC0xMTQzLDcgKzEwOTMsNiBAQAogLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMTE3NCw3ICsxMTIzLDcgQEAKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCiAuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCAKIC4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKLS4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAgLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIAogLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCkBAIC0xMTk5LDE4ICsxMTQ4LDE4IEBACiAuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAotLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmggCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAogLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAogLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCiAuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKQEAgLTEyNDMsOSArMTE5MiwxMCBAQAogLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oCi0uL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oIAotLi9sY2RfdGltZS5sbzogIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi9sY2RfdGltZS5sbzogIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAorLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCkBAIC0xMjY5LDcgKzEyMTksNiBAQAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMTMwMiw5ICsxMjUxLDEwIEBACiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCAKLS4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKLS4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL21kNS5sbzogIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAorLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaCAKKy4vbWQ1LmxvOiAgLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIAorLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKQEAgLTEzMTksMjQgKzEyNjksMjQgQEAKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaCAKLS4vbWQ1LmxvOiAgLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9tZDUubG86ICAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAotLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmggCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKQEAgLTEzNDQsOCArMTI5NCw4IEBACiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmggCi0uL21kNS5sbzogIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKQEAgLTEzNjcsNyArMTMxNyw4IEBACiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWQ1LmgKLS4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oIAorLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmggCiAuL21pYi5sbzogIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9taWIubG86ICAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaApAQCAtMTM5Miw3ICsxMzQzLDYgQEAKIC4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliLmxvOiAgLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaApAQCAtMTQyNSw3ICsxMzc1LDggQEAKIC4vbXRfc3VwcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCAKIC4vbXRfc3VwcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmggCi0uL29pZF9zdGFzaC5sbzogIC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi9vaWRfc3Rhc2gubG86ICAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmggCiAuL29pZF9zdGFzaC5sbzogIC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKQEAgLTE0NTEsNyArMTQwMiw2IEBACiAuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMTQ2Miw3ICsxNDEyLDcgQEAKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmggCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCiAuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKQEAgLTE1MjAsMTcgKzE0NzAsMTggQEAKIC4vb3BlbmRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9vcGVuZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9vcGVuZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vb3BlbmRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vb3BlbmRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9vcGVuZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL29wZW5kaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9vcGVuZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9vcGVuZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vb3BlbmRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL29wZW5kaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9vcGVuZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL29wZW5kaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vb3BlbmRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oIAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oIAogLi9wYXJzZS5sbzogIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9wYXJzZS5sbzogIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKQEAgLTE1NTUsNyArMTUwNiw2IEBACiAuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCkBAIC0xNTg3LDcgKzE1MzcsOCBAQAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3BrY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmggCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKQEAgLTE2MTMsNyArMTU2NCw2IEBACiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCkBAIC0xNjcxLDE3ICsxNjIxLDE4IEBACiAuL3JlYWRkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vcmVhZGRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vcmVhZGRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3JlYWRkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3JlYWRkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vcmVhZGRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9yZWFkZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vcmVhZGRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vcmVhZGRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3JlYWRkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9yZWFkZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vcmVhZGRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9yZWFkZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3JlYWRkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCAKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaCAKIC4vc2NhcGkubG86ICAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vc2NhcGkubG86ICAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCkBAIC0xNzA2LDcgKzE2NTcsNiBAQAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaApAQCAtMTc2MiwxMyArMTcxMiwxMyBAQAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTc5NCw3ICsxNzQ0LDggQEAKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCi0uL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oIAorLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oIAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaApAQCAtMTgyMCw3ICsxNzcxLDYgQEAKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTE4ODUsMTMgKzE4MzUsMTMgQEAKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xOTM4LDE2ICsxODg4LDE3IEBACiAuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcC5sbzogIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCAKKy4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIAogLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaApAQCAtMTk3Myw3ICsxOTI0LDYgQEAKIC4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTIwMTQsMTMgKzE5NjQsMTMgQEAKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTIwNDYsNyArMTk5Niw4IEBACiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmggCisuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaCAKIC4vc25tcF9lbnVtLmxvOiAgLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL3NubXBfZW51bS5sbzogIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCkBAIC0yMDcyLDcgKzIwMjMsNiBAQAogLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTIwOTEsOCArMjA0MSw5IEBACiAuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAogLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oIAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKLS4vc25tcGtzbS5sbzogIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAorLi9zbm1wa3NtLmxvOiAgLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCkBAIC0yMTEzLDEyICsyMDY0LDEyIEBACiAuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0yMTUyLDcgKzIxMDMsOCBAQAogLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAogLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcGtzbS5oCi0uL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCAKKy4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCkBAIC0yMTc4LDcgKzIxMzAsNiBAQAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTIyMzcsMTggKzIxODgsMTggQEAKIC4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCi0uL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaCAKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCiAuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCiAuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKIC4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaApAQCAtMjMwNywxOCArMjI1OCwxOCBAQAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKLS4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oIAorLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCkBAIC0yMzc2LDEzICsyMzI3LDEzIEBACiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTI0MTIsOSArMjM2MywxMCBAQAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oIHNubXBzbV9pbml0LmgKKy4vc25tcF9zZWNtb2QubG86IHNubXBzbV9zaHV0ZG93bi5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9zbm1wX3NlcnZpY2UubG86ICAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKQEAgLTI0MzksMTggKzIzOTEsMTggQEAKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaCAKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaApAQCAtMjQ4Miw5ICsyNDM0LDEwIEBACiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCAKLS4vc25tcC10Yy5sbzogIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi9zbm1wLXRjLmxvOiAgLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKKy4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaApAQCAtMjUwOCw3ICsyNDYxLDYgQEAKIC4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaApAQCAtMjUxOCw2ICsyNDcwLDcgQEAKIC4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKIC4vc25tcF90cmFuc3BvcnQubG86ICAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCkBAIC0yNTQzLDcgKzI0OTYsNiBAQAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMjU3NywxMCArMjUyOSwxMCBAQAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogdHJhbnNwb3J0cy9zbm1wX3RyYW5zcG9ydF9pbml0cy5oCiAuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaCAKLS4vc25tcHRzbS5sbzogIC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCi0uL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXB0c20ubG86ICAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCkBAIC0yNjAzLDcgKzI1NTUsNiBAQAogLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCkBAIC0yNjEzLDcgKzI1NjQsNyBAQAogLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCi0uL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmggCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCiAuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCiAuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCkBAIC0yNjIxLDggKzI1NzIsOCBAQAogLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCiAuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAogLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaCAKLS4vc25tcHRzbS5sbzogIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAogLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCiAuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaApAQCAtMjY0MywxMCArMjU5NCwxMSBAQAogLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAotLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oIAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oIAotLi9zbm1wdXNtLmxvOiAgLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3NubXB1c20ubG86ICAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKQEAgLTI2NzAsNyArMjYyMiw2IEBACiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKQEAgLTI3MzIsMTIgKzI2ODMsMTIgQEAKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMjgwMCwxMiArMjc1MSwxMiBAQAogLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMjgzNiwxMiArMjc4NywxMiBAQAogLi9zdHJsY3B5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zdHJsY3B5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zdHJsY3B5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc3RybGNweS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zdHJsY3B5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc3RybGNweS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc3RybGNweS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMjg3MiwxMyArMjgyMywxMyBAQAogLi9zdHJ0b2tfci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9zdHJ0b2tfci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc3RydG9rX3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi9zdHJ0b2tfci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc3RydG9rX3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc3RydG9rX3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vc3RydG9rX3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9zdHJ0b2tfci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc3RydG9rX3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3N0cnRva19yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc3RydG9rX3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zdHJ0b2tfci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3N0cnRva19yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3N0cnRva19yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0yOTEwLDE4ICsyODYxLDE5IEBACiAuL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmggCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaCAKIC4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKQEAgLTI5NDYsNyArMjg5OCw2IEBACiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaApAQCAtMjk3Niw3OCArMjkyNyw5IEBACiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAotLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oIAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmggaW5ldF9udG9wLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oIAogLi90ZXh0X3V0aWxzLmxvOiAgLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAKQEAgLTMwNzQsNyArMjk1Niw2IEBACiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTMwODUsNyArMjk2Niw3IEBACiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaCAKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKQEAgLTMxMTksNyArMzAwMCw4IEBACiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmggCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9maWxlX3V0aWxzLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RleHRfdXRpbHMuaAotLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCAKKy4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaCAKIC4vdG9vbHMubG86ICAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vdG9vbHMubG86ICAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCkBAIC0zMTQ0LDcgKzMwMjYsNiBAQAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaApAQCAtMzE3MCw2ICszMDUxLDcgQEAKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaCAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAogLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmggCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaApAQCAtMzE5NSw3ICszMDc3LDYgQEAKIC4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMzIzNiwxMiArMzExNywxMiBAQAogLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3ZhY20ubG86ICAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTMzMDEsMTMgKzMxODIsMTMgQEAKIC4vdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTMzMTcsNiArMzE5OCw3IEBACiAuL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAogLi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKIC4vdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAogLi90cmFuc3BvcnRzL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi90cmFuc3BvcnRzL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKQEAgLTMzNDMsMTMgKzMyMjUsMTMgQEAKIC4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi90cmFuc3BvcnRzL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi90cmFuc3BvcnRzL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi90cmFuc3BvcnRzL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMzQxNCwxMyArMzI5NiwxMyBAQAogLi90cmFuc3BvcnRzL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vdHJhbnNwb3J0cy9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi90cmFuc3BvcnRzL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdHJhbnNwb3J0cy9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdHJhbnNwb3J0cy9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90cmFuc3BvcnRzL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zNDczLDU2ICszMzU1LDE5IEBACiAuL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi90cmFuc3BvcnRzL3NubXBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90cmFuc3BvcnRzL3NubXBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90cmFuc3BvcnRzL3NubXBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAogLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKLS4vdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKLS4vdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiBpbmV0X250b3AuaCBpbmV0X3B0b24uaAogLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKQEAgLTM1NTAsMTIgKzMzOTUsMTIgQEAKIC4vdHJhbnNwb3J0cy9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vdHJhbnNwb3J0cy9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTM1NjUsNiArMzQxMCw3IEBACiAuL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCiAuL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCiAuL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCiAuL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdHJhbnNwb3J0cy9zbm1wU29ja2V0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaApAQCAtMzU5MSwxMyArMzQzNywxMyBAQAogLi90cmFuc3BvcnRzL3NubXBTb2NrZXRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBTb2NrZXRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBTb2NrZXRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vdHJhbnNwb3J0cy9zbm1wU29ja2V0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90cmFuc3BvcnRzL3NubXBTb2NrZXRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdHJhbnNwb3J0cy9zbm1wU29ja2V0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdHJhbnNwb3J0cy9zbm1wU29ja2V0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMzYwNyw2ICszNDUzLDcgQEAKIC4vdHJhbnNwb3J0cy9zbm1wU29ja2V0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCiAuL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3RyYW5zcG9ydHMvc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wU1NIRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wU1NIRG9tYWluLmxvOiAgLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL3RyYW5zcG9ydHMvc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCkBAIC0zNjMzLDcgKzM0ODAsNiBAQAogLi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vdHJhbnNwb3J0cy9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTM2NzksMTMgKzM1MjUsMTMgQEAKIC4vdHJhbnNwb3J0cy9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3RyYW5zcG9ydHMvc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3RyYW5zcG9ydHMvc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdHJhbnNwb3J0cy9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdHJhbnNwb3J0cy9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zNzE2LDEzICszNTYyLDEzIEBACiAuL3RyYW5zcG9ydHMvc25tcFRDUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVENQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVENQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFRDUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFRDUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVENQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi90cmFuc3BvcnRzL3NubXBUQ1BCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vdHJhbnNwb3J0cy9zbm1wVENQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdHJhbnNwb3J0cy9zbm1wVENQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdHJhbnNwb3J0cy9zbm1wVENQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RyYW5zcG9ydHMvc25tcFRDUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90cmFuc3BvcnRzL3NubXBUQ1BCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdHJhbnNwb3J0cy9zbm1wVENQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi90cmFuc3BvcnRzL3NubXBUQ1BCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zNzUzLDIwICszNTk5LDIyIEBACiAuL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdHJhbnNwb3J0cy9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdHJhbnNwb3J0cy9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdHJhbnNwb3J0cy9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdHJhbnNwb3J0cy9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wU29ja2V0QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BCYXNlRG9tYWluLmgKKy4vdHJhbnNwb3J0cy9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAogLi90cmFuc3BvcnRzL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVExTQmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKQEAgLTM3OTQsNyArMzY0Miw2IEBACiAuL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTM4MDYsMTMgKzM2NTMsMTkgQEAKIC4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCiAuL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCiAuL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jZXJ0X3V0aWwuaAogLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9vcGVuc3NsLmgKLS4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAogLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAogLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3RyYW5zcG9ydHMvc25tcFRMU1RDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RyYW5zcG9ydHMvc25tcFRMU1RDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUTFNUQ1BEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCkBAIC0zODM5LDcgKzM2OTIsNiBAQAogLi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFRMU1RDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKQEAgLTM4OTAsMTMgKzM3NDIsMTMgQEAKIC4vdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTM5MzEsMTMgKzM3ODMsMTMgQEAKIC4vdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zOTc3LDEzICszODI5LDEzIEBACiAuL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTQwMTYsMTggKzM4NjgsMjAgQEAKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAogLi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAorLi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKIC4vdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaApAQCAtNDA1Myw3ICszOTA3LDYgQEAKIC4vdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3RyYW5zcG9ydHMvc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtNDA3MSwzICszOTI0LDQgQEAKIC4vdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAogLi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFNvY2tldEJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKZGlmZiAtLWdpdCBhL3NubXBsaWIvTWFrZWZpbGUuaW4gYi9zbm1wbGliL01ha2VmaWxlLmluCmluZGV4IGMxYTA4NmQuLjUwNmI4ZDQgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvTWFrZWZpbGUuaW4KKysrIGIvc25tcGxpYi9NYWtlZmlsZS5pbgpAQCAtMTMsNiArMTMsNyBAQAogIwogCiB0b3BfYnVpbGRkaXI9Li4KK215c3ViZGlyPXNubXBsaWIKIAogIyB1c2UgR05VIHZwYXRoLCBpZiBhdmFpbGFibGUsIHRvIG9ubHkgc2V0IGEgcGF0aCBmb3Igc291cmNlIGFuZCBoZWFkZXJzCiAjIFZQQVRIIHdpbGwgcGljayB1cCBvYmplY3RzIHRvbywgd2hpY2ggaXMgYmFkIGlmIHlvdSBhcmUgc2hhcmluZyBhCkBAIC04NCw3ICs4NSw2IEBACiAJdG9vbHMuaCBcCiAJdHJhbnNmb3JtX29pZHMuaCBcCiAJdHlwZXMuaCBcCi0gICAgICAgIGNtdV9jb21wYXQuaCBcCiAgICAgICAgIGdldG9wdC5oIFwKICAgICAgICAgbGNkX3RpbWUuaCBcCiAgICAgICAgIG10X3N1cHBvcnQuaCBcCkBAIC0xMzgsNjEgKzEzOCw5MSBAQAogCiAjCiAjIFRoaW5ncyB0byBidWlsZAorIyAgIC0gZm9yIHRoZSBmZWF0dXJlIGNoZWNraW5nIC8gcmVtb3ZhbCAvIG1pbmltaWFsaXN0IHN1cHBvcnQgdGhlc2UKKyMgICAgIG11c3QgYmUgbGlzdGVkIHN1Y2ggdGhhdCBjb2RlIHJlcXVpcmluZyBhIGZlYXR1cmUgbXVzdCBiZSBsaXN0ZWQKKyMgICAgICpiZWZvcmUqIHRoZSBjb2RlIGltcGxlbWVudGluZyB0aGUgZmVhdHVyZS4KICMKIENTUkNTPQlzbm1wX2NsaWVudC5jIG1pYi5jIHBhcnNlLmMgc25tcF9hcGkuYyBzbm1wLmMgCQlcCi0JbGFyZ2VfZmRfc2V0LmMgY2VydF91dGlsLmMJCQkJXAogCXNubXBfYXV0aC5jIGFzbjEuYyBtZDUuYyBzbm1wX3BhcnNlX2FyZ3MuYwkJXAogCXN5c3RlbS5jIHZhY20uYyBpbnQ2NC5jIHJlYWRfY29uZmlnLmMgcGtjcy5jCQlcCiAJc25tcF9kZWJ1Zy5jIHRvb2xzLmMgIHNubXBfbG9nZ2luZy5jIHRleHRfdXRpbHMuYwlcCi0Jc25tcHYzLmMgbGNkX3RpbWUuYyBrZXl0b29scy5jIGZpbGVfdXRpbHMuYyBkaXJfdXRpbHMuYyBcCisJbGFyZ2VfZmRfc2V0LmMgY2VydF91dGlsLmMgc25tcF9vcGVuc3NsLmMgCQlcCisJc25tcHYzLmMgbGNkX3RpbWUuYyBrZXl0b29scy5jICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAJc2NhcGkuYyBjYWxsYmFjay5jIGRlZmF1bHRfc3RvcmUuYyBzbm1wX2FsYXJtLmMJCVwKIAlkYXRhX2xpc3QuYyBvaWRfc3Rhc2guYyBmZF9ldmVudF9tYW5hZ2VyLmMgCQlcCisJY2hlY2tfdmFyYmluZC5jIAkJCQkJXAogCW10X3N1cHBvcnQuYyBzbm1wX2VudW0uYyBzbm1wLXRjLmMgc25tcF9zZXJ2aWNlLmMJXAogCXNucHJpbnRmLmMJCQkJCQlcCiAJc25tcF90cmFuc3BvcnQuYyBAdHJhbnNwb3J0X3NyY19saXN0QAkJCVwKIAlzbm1wX3NlY21vZC5jIEBzZWN1cml0eV9zcmNfbGlzdEAgc25tcF92ZXJzaW9uLmMgICAgICAgIFwKLQljaGVja192YXJiaW5kLmMgY29udGFpbmVyLmMgY29udGFpbmVyX2JpbmFyeV9hcnJheS5jCVwKIAljb250YWluZXJfbnVsbC5jIGNvbnRhaW5lcl9saXN0X3NzbGwuYyBjb250YWluZXJfaXRlcmF0b3IuYyBcCi0JY211X2NvbXBhdC5jIHVjZF9jb21wYXQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0Jc25tcF9vcGVuc3NsLmMgQG90aGVyX3NyY19saXN0QCBAY3J5cHRvX2ZpbGVzX2NACisJdWNkX2NvbXBhdC5jCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwlAb3RoZXJfc3JjX2xpc3RAIEBjcnlwdG9fZmlsZXNfY0AgICAgICAgIAkJXAorCWRpcl91dGlscy5jIGZpbGVfdXRpbHMuYyAJICAgICAgICAgICAgICAgICAgICAgICAgXAorCWNvbnRhaW5lci5jIGNvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYwkKIAogT0JKUz0Jc25tcF9jbGllbnQubyBtaWIubyBwYXJzZS5vIHNubXBfYXBpLm8gc25tcC5vIAkJXAotCWxhcmdlX2ZkX3NldC5vIGNlcnRfdXRpbC5vCQkJCVwKIAlzbm1wX2F1dGgubyBhc24xLm8gbWQ1Lm8gc25tcF9wYXJzZV9hcmdzLm8JCVwKIAlzeXN0ZW0ubyB2YWNtLm8gaW50NjQubyByZWFkX2NvbmZpZy5vIHBrY3MubyAJCVwKIAlzbm1wX2RlYnVnLm8gdG9vbHMubyAgc25tcF9sb2dnaW5nLm8gdGV4dF91dGlscy5vCVwKLQlzbm1wdjMubyBsY2RfdGltZS5vIGtleXRvb2xzLm8gZmlsZV91dGlscy5vIGRpcl91dGlscy5vIFwKKwlsYXJnZV9mZF9zZXQubyBjZXJ0X3V0aWwubyBzbm1wX29wZW5zc2wubyAJCVwKKwlzbm1wdjMubyBsY2RfdGltZS5vIGtleXRvb2xzLm8gICAgICAgICAgICAgICAgICAgICAgICAgIFwKIAlzY2FwaS5vIGNhbGxiYWNrLm8gZGVmYXVsdF9zdG9yZS5vIHNubXBfYWxhcm0ubwkJXAogCWRhdGFfbGlzdC5vIG9pZF9zdGFzaC5vIGZkX2V2ZW50X21hbmFnZXIubwkJXAorCWNoZWNrX3ZhcmJpbmQubyAJCQkJCVwKIAltdF9zdXBwb3J0Lm8gc25tcF9lbnVtLm8gc25tcC10Yy5vIHNubXBfc2VydmljZS5vCVwKIAlzbnByaW50Zi5vCQkJCQkJXAogCXNubXBfdHJhbnNwb3J0Lm8gQHRyYW5zcG9ydF9vYmpfbGlzdEAgICAgICAgICAgICAgICAgICAgXAogCXNubXBfc2VjbW9kLm8gQHNlY3VyaXR5X29ial9saXN0QCBzbm1wX3ZlcnNpb24ubyAgICAgICAgXAotCWNoZWNrX3ZhcmJpbmQubyBjb250YWluZXIubyBjb250YWluZXJfYmluYXJ5X2FycmF5Lm8JXAogCWNvbnRhaW5lcl9udWxsLm8gY29udGFpbmVyX2xpc3Rfc3NsbC5vIGNvbnRhaW5lcl9pdGVyYXRvci5vIFwKLQljbXVfY29tcGF0Lm8gdWNkX2NvbXBhdC5vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc25tcF9vcGVuc3NsLm8gQGNyeXB0b19maWxlc19vQCBAb3RoZXJfb2Jqc19saXN0QCBATElCT0JKU0AKKwl1Y2RfY29tcGF0Lm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCQlcCisgICAgICAgIEBjcnlwdG9fZmlsZXNfb0AgQG90aGVyX29ianNfbGlzdEAgQExJQk9CSlNAIAkJXAorCWRpcl91dGlscy5vIGZpbGVfdXRpbHMubyAJICAgICAgICAgICAgICAgICAgICAgICAgXAorCWNvbnRhaW5lci5vIGNvbnRhaW5lcl9iaW5hcnlfYXJyYXkubwkKIAogTE9CSlM9CXNubXBfY2xpZW50LmxvIG1pYi5sbyBwYXJzZS5sbyBzbm1wX2FwaS5sbyBzbm1wLmxvIAlcCi0JbGFyZ2VfZmRfc2V0LmxvIGNlcnRfdXRpbC5sbwkJCQlcCiAJc25tcF9hdXRoLmxvIGFzbjEubG8gbWQ1LmxvIHNubXBfcGFyc2VfYXJncy5sbwkJXAogCXN5c3RlbS5sbyB2YWNtLmxvIGludDY0LmxvIHJlYWRfY29uZmlnLmxvIHBrY3MubG8JXAogCXNubXBfZGVidWcubG8gdG9vbHMubG8gIHNubXBfbG9nZ2luZy5sbwkgdGV4dF91dGlscy5sbwlcCi0Jc25tcHYzLmxvIGxjZF90aW1lLmxvIGtleXRvb2xzLmxvIGZpbGVfdXRpbHMubG8gZGlyX3V0aWxzLmxvIFwKLQlzY2FwaS5sbyBjYWxsYmFjay5sbyBkZWZhdWx0X3N0b3JlLmxvIHNubXBfYWxhcm0ubG8JCVwKKwlsYXJnZV9mZF9zZXQubG8gY2VydF91dGlsLmxvIHNubXBfb3BlbnNzbC5sbyAJCVwKKwlzbm1wdjMubG8gbGNkX3RpbWUubG8ga2V5dG9vbHMubG8gICAgICAgICAgICAgICAgICAgICAgIFwKKwlzY2FwaS5sbyBjYWxsYmFjay5sbyBkZWZhdWx0X3N0b3JlLmxvIHNubXBfYWxhcm0ubG8JXAogCWRhdGFfbGlzdC5sbyBvaWRfc3Rhc2gubG8gZmRfZXZlbnRfbWFuYWdlci5sbwkJXAorCWNoZWNrX3ZhcmJpbmQubG8gCQkJCQlcCiAJbXRfc3VwcG9ydC5sbyBzbm1wX2VudW0ubG8gc25tcC10Yy5sbyBzbm1wX3NlcnZpY2UubG8JXAogCXNucHJpbnRmLmxvCQkJCQkJXAogCXNubXBfdHJhbnNwb3J0LmxvIEB0cmFuc3BvcnRfbG9ial9saXN0QCAgICAgICAgICAgICAgICAgXAogCXNubXBfc2VjbW9kLmxvIEBzZWN1cml0eV9sb2JqX2xpc3RAIHNubXBfdmVyc2lvbi5sbyAgICAgXAotCWNoZWNrX3ZhcmJpbmQubG8gY29udGFpbmVyLmxvIGNvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG8JXAotCWNvbnRhaW5lcl9udWxsLmxvIGNvbnRhaW5lcl9saXN0X3NzbGwubG8gY29udGFpbmVyX2l0ZXJhdG9yLmxvIFwKLQljbXVfY29tcGF0LmxvIHVjZF9jb21wYXQubG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc25tcF9vcGVuc3NsLmxvIEBjcnlwdG9fZmlsZXNfbG9AIEBvdGhlcl9sb2Jqc19saXN0QCBATFRMSUJPQkpTQAorCWNvbnRhaW5lci5sbyBjb250YWluZXJfYmluYXJ5X2FycmF5LmxvCQkJXAorCXVjZF9jb21wYXQubG8JCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBAY3J5cHRvX2ZpbGVzX2xvQCBAb3RoZXJfbG9ianNfbGlzdEAgQExUTElCT0JKU0AgICAgICAgIFwKKwlkaXJfdXRpbHMubG8gZmlsZV91dGlscy5sbyAJICAgICAgICAgICAgICAgICAgICAgICAgXAorCWNvbnRhaW5lcl9udWxsLmxvIGNvbnRhaW5lcl9saXN0X3NzbGwubG8gY29udGFpbmVyX2l0ZXJhdG9yLmxvIAorCitGVE9CSlM9CXNubXBfY2xpZW50LmZ0IG1pYi5mdCBwYXJzZS5mdCBzbm1wX2FwaS5mdCBzbm1wLmZ0IAlcCisJc25tcF9hdXRoLmZ0IGFzbjEuZnQgbWQ1LmZ0IHNubXBfcGFyc2VfYXJncy5mdAkJXAorCXN5c3RlbS5mdCB2YWNtLmZ0IGludDY0LmZ0IHJlYWRfY29uZmlnLmZ0IHBrY3MuZnQJXAorCXNubXBfZGVidWcuZnQgdG9vbHMuZnQgIHNubXBfbG9nZ2luZy5mdAkgdGV4dF91dGlscy5mdAlcCisJc25tcHYzLmZ0IGxjZF90aW1lLmZ0IGtleXRvb2xzLmZ0ICAgICAgICAgICAgICAgICAgICAgICBcCisJc2NhcGkuZnQgY2FsbGJhY2suZnQgZGVmYXVsdF9zdG9yZS5mdCBzbm1wX2FsYXJtLmZ0CVwKKwlkYXRhX2xpc3QuZnQgb2lkX3N0YXNoLmZ0IGZkX2V2ZW50X21hbmFnZXIuZnQJCVwKKwljaGVja192YXJiaW5kLmZ0IAkJCQkJXAorCW10X3N1cHBvcnQuZnQgc25tcF9lbnVtLmZ0IHNubXAtdGMuZnQgc25tcF9zZXJ2aWNlLmZ0CVwKKwlzbnByaW50Zi5mdAkJCQkJCVwKKwlzbm1wX3RyYW5zcG9ydC5mdCBAdHJhbnNwb3J0X2Z0b2JqX2xpc3RAICAgICAgICAgICAgICAgIFwKKwlzbm1wX3NlY21vZC5mdCBAc2VjdXJpdHlfZnRvYmpfbGlzdEAgc25tcF92ZXJzaW9uLmZ0ICAgIFwKKwljb250YWluZXIuZnQgY29udGFpbmVyX2JpbmFyeV9hcnJheS5mdAlcCisJdWNkX2NvbXBhdC5mdAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJXAorICAgICAgICBAb3RoZXJfZnRvYmpzX2xpc3RAICAgICAgICAgICAgICAgICAgICAgCQlcCisJbGFyZ2VfZmRfc2V0LmZ0IGNlcnRfdXRpbC5mdCBzbm1wX29wZW5zc2wuZnQgCQlcCisJZGlyX3V0aWxzLmZ0IGZpbGVfdXRpbHMuZnQgCSAgICAgICAgICAgICAgICAgICAgICAgIFwKKwljb250YWluZXJfbnVsbC5mdCBjb250YWluZXJfbGlzdF9zc2xsLmZ0IGNvbnRhaW5lcl9pdGVyYXRvci5mdAogCiAjIGp1c3QgaW4gY2FzZSBzb21lb25lIHdhbnRzIHRvIHJlbW92ZSBsaWJ0b29sLCBjaGFuZ2UgdGhpcyB0byBPQkpTLgogVE9CSlM9JChMT0JKUykKIAorRkVBVFVSRUZJTEUgICAgID0gJCh0b3BfYnVpbGRkaXIpL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZWF0dXJlcy5oCisKICMgCiBDUFBGTEFHUyA9ICQoVE9QX0lOQ0xVREVTKSAtSS4gCSQoU05NUExJQl9JTkNMVURFUykgQENQUEZMQUdTQAogCkBAIC0yMTMsNyArMjQzLDMgQEAKIHBhcnNlOiAgbWliLm8gcGFyc2UuYwogCSQoQ0MpICQoQ0ZMQUdTKSAtRFRFU1QgcGFyc2UuYyAtbyAkQCBcCiAJCWAkKHRvcF9zcmNkaXIpL25ldC1zbm1wLWNvbmZpZyAtLWxpYnNgCi0KLXRlc3RfYmluYXJ5X2FycmF5OiB0ZXN0X2JpbmFyeV9hcnJheS5jCi0JJChDQykgJChDRkxBR1MpIHRlc3RfYmluYXJ5X2FycmF5LmMgLW8gJEAgXAotCQlgJCh0b3Bfc3JjZGlyKS9uZXQtc25tcC1jb25maWcgLS1saWJzYApkaWZmIC0tZ2l0IGEvc25tcGxpYi9jYWxsYmFjay5jIGIvc25tcGxpYi9jYWxsYmFjay5jCmluZGV4IGZlYTBmMjUuLmRmZTUzN2EgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvY2FsbGJhY2suYworKysgYi9zbm1wbGliL2NhbGxiYWNrLmMKQEAgLTE3LDYgKzE3LDcgQEAKICAqICBAewogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2lmIEhBVkVfU1RETElCX0gKQEAgLTUyLDYgKzUzLDExIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNhbGxiYWNrc19hbGwsIGxpYm5ldHNubXApCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjYWxsYmFja19jb3VudCwgY2FsbGJhY2tzX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjYWxsYmFja19saXN0LCBjYWxsYmFja3NfYWxsKQorCiAvKgogICogdGhlIGlubGluZSBjYWxsYmFjayBtZXRob2RzIHVzZSBtYWpvci9taW5vciB0byBpbmRleCBpbnRvIGFycmF5cy4KICAqIGFsbCB1c2VycyBpbiB0aGlzIGZ1bmN0aW9uIGRvIHJhbmdlIGNoZWNraW5nIGJlZm9yZSBjYWxsaW5nIHRoZXNlCkBAIC0yMTQsNyArMjIwLDkgQEAKICAqIEBwYXJhbSBuZXdfY2FsbGJhY2sgaXMgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgaXMgcmVnaXN0ZXJlZC4KICAqCiAgKiBAcGFyYW0gYXJnIHdoZW4gbm90IE5VTEwgaXMgYSB2b2lkIHBvaW50ZXIgdXNlZCB3aGVuZXZlciBuZXdfY2FsbGJhY2sgCi0gKglmdW5jdGlvbiBpcyBleGVyY2lzZWQuCisgKglmdW5jdGlvbiBpcyBleGVyY2lzZWQuIE93bmVyc2hpcCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgdHdvZGltZW5zaW9uYWwKKyAqICAgICAgdGhlY2FsbGJhY2tzW11bXSBhcnJheS4gVGhlIGZ1bmN0aW9uIGNsZWFyX2NhbGxiYWNrKCkgd2lsbCBkZWFsbG9jYXRlCisgKiAgICAgIHRoZSBtZW1vcnkgcG9pbnRlZCBhdCBieSBjYWxsaW5nIGZyZWUoKS4KICAqCiAgKiBAcmV0dXJuIAogICoJUmV0dXJucyBTTk1QRVJSX0dFTkVSUiBpZiBtYWpvciBpcyA+PSBNQVhfQ0FMTEJBQ0tfSURTIG9yIG1pbm9yIGlzID49CkBAIC0yMzQsNiArMjQyLDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfQ0FMTEJBQ0tfREVGQVVMVF9QUklPUklUWSk7CiB9CiAKKy8qKgorICogUmVnaXN0ZXIgYSBjYWxsYmFjayBmdW5jdGlvbi4KKyAqCisgKiBAcGFyYW0gbWFqb3IgICAgICAgIE1ham9yIGNhbGxiYWNrIGV2ZW50IHR5cGUuCisgKiBAcGFyYW0gbWlub3IgICAgICAgIE1pbm9yIGNhbGxiYWNrIGV2ZW50IHR5cGUuCisgKiBAcGFyYW0gbmV3X2NhbGxiYWNrIENhbGxiYWNrIGZ1bmN0aW9uIGJlaW5nIHJlZ2lzdGVyZWQuCisgKiBAcGFyYW0gYXJnICAgICAgICAgIEFyZ3VtZW50IHRoYXQgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLgorICogQHBhcmFtIHByaW9yaXR5ICAgICBIYW5kbGVyIGludm9jYXRpb24gcHJpb3JpdHkuIFdoZW4gbXVsdGlwbGUgaGFuZGxlcnMgaGF2ZQorICogICBiZWVuIHJlZ2lzdGVyZWQgZm9yIHRoZSBzYW1lIChtYWpvciwgbWlub3IpIGNhbGxiYWNrIGV2ZW50IHR5cGUsIGhhbmRsZXJzCisgKiAgIHdpdGggdGhlIG51bWVyaWNhbGx5IGxvd2VzdCBwcmlvcml0eSB3aWxsIGJlIGludm9rZWQgZmlyc3QuIEhhbmRsZXJzIHdpdGgKKyAqICAgaWRlbnRpY2FsIHByaW9yaXR5IGFyZSBpbnZva2VkIGluIHRoZSBvcmRlciB0aGV5IGhhdmUgYmVlbiByZWdpc3RlcmVkLgorICoKKyAqIEBzZWUgc25tcF9yZWdpc3Rlcl9jYWxsYmFjaworICovCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfY2FsbGJhY2soaW50IG1ham9yLCBpbnQgbWlub3IsIFNOTVBDYWxsYmFjayAqIG5ld19jYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnLCBpbnQgcHJpb3JpdHkpCkBAIC0zNTEsNiArMzczLDcgQEAKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0FMTEJBQ0tfQ09VTlQKIGludAogc25tcF9jb3VudF9jYWxsYmFja3MoaW50IG1ham9yLCBpbnQgbWlub3IpCiB7CkBAIC0zNzAsNiArMzkzLDcgQEAKIAogICAgIHJldHVybiBjb3VudDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NBTExCQUNLX0NPVU5UICovCiAKIGludAogc25tcF9jYWxsYmFja19hdmFpbGFibGUoaW50IG1ham9yLCBpbnQgbWlub3IpCkBAIC01NDgsNiArNTcyLDcgQEAKICAgICB9CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DQUxMQkFDS19MSVNUCiBzdHJ1Y3Qgc25tcF9nZW5fY2FsbGJhY2sgKgogc25tcF9jYWxsYmFja19saXN0KGludCBtYWpvciwgaW50IG1pbm9yKQogewpAQCAtNTU2LDQgKzU4MSw1IEBACiAKICAgICByZXR1cm4gKHRoZWNhbGxiYWNrc1ttYWpvcl1bbWlub3JdKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NBTExCQUNLX0xJU1QgKi8KIC8qKiAgQH0gKi8KZGlmZiAtLWdpdCBhL3NubXBsaWIvY2VydF91dGlsLmMgYi9zbm1wbGliL2NlcnRfdXRpbC5jCmluZGV4IDZiMmNiMzAuLjI0NmE2YzkgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvY2VydF91dGlsLmMKKysrIGIvc25tcGxpYi9jZXJ0X3V0aWwuYwpAQCAtMSwxMyArMSw0MCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpZiBkZWZpbmVkKE5FVFNOTVBfVVNFX09QRU5TU0wpICYmIGRlZmluZWQoSEFWRV9MSUJTU0wpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2VydF91dGlsX2FsbCwgbGlibmV0c25tcCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjZXJ0X3V0aWwsIGNlcnRfdXRpbF9hbGwpCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfQ0VSVF9VVElMCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjb250YWluZXJfZGlyZWN0b3J5KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY29udGFpbmVyX2ZpZm8pCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjb250YWluZXJfZHVwKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY29udGFpbmVyX2ZyZWVfYWxsKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoc3ViY29udGFpbmVyX2ZpbmQpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjZXJ0X21hcF9yZW1vdmUsIG5ldHNubXBfdW51c2VkKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNlcnRfbWFwX2ZpbmQsIG5ldHNubXBfdW51c2VkKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRsc3RtcGFyYW1zX2V4dGVybmFsLCBjZXJ0X3V0aWxfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRsc3RtcGFyYW1zX2NvbnRhaW5lciwgdGxzdG1wYXJhbXNfZXh0ZXJuYWwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGxzdG1wYXJhbXNfcmVtb3ZlLCB0bHN0bXBhcmFtc19leHRlcm5hbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0bHN0bXBhcmFtc19maW5kLCB0bHN0bXBhcmFtc19leHRlcm5hbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0bHN0bUFkZHJfcmVtb3ZlLCBuZXRzbm1wX3VudXNlZCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0bHN0bWFkZHJfZXh0ZXJuYWwsIGNlcnRfdXRpbF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGxzdG1hZGRyX2NvbnRhaW5lciwgdGxzdG1hZGRyX2V4dGVybmFsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRsc3RtQWRkcl9nZXRfc2VydmVySWQsIHRsc3RtYWRkcl9leHRlcm5hbCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNlcnRfZmluZ2VycHJpbnRzLCBjZXJ0X3V0aWxfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRsc19maW5nZXJwcmludF9idWlsZCwgY2VydF91dGlsX2FsbCkKKworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX0NFUlRfVVRJTCAqLworCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0VSVF9VVElMCisKKyNpbmNsdWRlIDxjdHlwZS5oPgogCiAjaWYgSEFWRV9TVERMSUJfSAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxjdHlwZS5oPgotCiAjaWYgSEFWRV9TVFJJTkdfSAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2Vsc2UKQEAgLTIyOCw2ICsyNTUsMTEgQEAKIG5ldHNubXBfY2VydHNfc2h1dGRvd24odm9pZCkKIHsKICAgICBERUJVR01TR1QoKCJjZXJ0OnV0aWw6c2h1dGRvd24iLCJzaHV0ZG93blxuIikpOworICAgIGlmIChfbWFwcykgeworICAgICAgICBDT05UQUlORVJfRlJFRV9BTEwoX21hcHMsIE5VTEwpOworICAgICAgICBDT05UQUlORVJfRlJFRShfbWFwcyk7CisgICAgICAgIF9tYXBzID0gTlVMTDsKKyAgICB9CiAgICAgaWYgKE5VTEwgIT0gX2NlcnRzKSB7CiAgICAgICAgIENPTlRBSU5FUl9GUkVFX0FMTChfY2VydHMsIE5VTEwpOwogICAgICAgICBDT05UQUlORVJfRlJFRShfY2VydHMpOwpAQCAtMTEzNyw3ICsxMTY5LDcgQEAKIHN0YXRpYyB2b2lkCiBfZmluZF9wYXJ0bmVyKG5ldHNubXBfY2VydCAqY2VydCwgbmV0c25tcF9rZXkgKmtleSkKIHsKLSAgICBuZXRzbm1wX3ZvaWRfYXJyYXkgKm1hdGNoaW5nOworICAgIG5ldHNubXBfdm9pZF9hcnJheSAqbWF0Y2hpbmcgPSBOVUxMOwogICAgIGNoYXIgICAgICAgICAgICAgICAgZmlsZW5hbWVbTkFNRV9NQVhdLCAqcG9zOwogCiAgICAgaWYgKChjZXJ0ICYmIGtleSkgfHwgKCFjZXJ0ICYmICEga2V5KSkgewpAQCAtMTYxMSw2ICsxNjQzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlX2ZpbmRfbGFiZWxfaW5fc2xpc3QoImNlcnRfaGFzaF9hbGciLCBjLT5oYXNoX3R5cGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0+aGFzaF90eXBlLCBjLT5maW5nZXJwcmludCkpOwogICAgICAgICB9CisgICAgICAgIC8qIG5ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNlcnRfdXRpbHNfZHVtcF9uYW1lcykgKi8KICAgICAgICAgLyogbmV0c25tcF9vcGVuc3NsX2NlcnRfZHVtcF9uYW1lcyhjLT5vY2VydCk7ICovCiAgICAgICAgIG5ldHNubXBfb3BlbnNzbF9jZXJ0X2R1bXBfZXh0ZW5zaW9ucyhjLT5vY2VydCk7CiAgICAgfQpAQCAtMTcwMSw3ICsxNzM0LDYgQEAKIG5ldHNubXBfY2VydF9maW5kKGludCB3aGF0LCBpbnQgd2hlcmUsIHZvaWQgKmhpbnQpCiB7CiAgICAgbmV0c25tcF9jZXJ0ICpyZXN1bHQgPSBOVUxMOwotICAgIGludCAgICAgICAgICAgdG1wOwogICAgIGNoYXIgICAgICAgICAqZnAsICpoaW50X3N0cjsKIAogICAgIERFQlVHTVNHVCgoImNlcnQ6ZmluZDpwYXJhbXMiLCAibG9va2luZyBmb3IgJXMoJWQpIGluICVzKDB4JXgpLCBoaW50ICVsdVxuIiwKQEAgLTE3MTEsMTMgKzE3NDMsMjAgQEAKICAgICAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKHdoYXQpIHsKICAgICAgICAgICAgIGNhc2UgTlNfQ0VSVF9JREVOVElUWTogLyogd2FudCBteSBJRCAqLwotICAgICAgICAgICAgICAgIHRtcCA9IChwdHJkaWZmX3QpaGludDsKLSAgICAgICAgICAgICAgICBERUJVR01TR1QoKCJjZXJ0OmZpbmQ6cGFyYW1zIiwgIiBoaW50ID0gJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPyAic2VydmVyIiA6ICJjbGllbnQiKSk7CiAgICAgICAgICAgICAgICAgZnAgPQogICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID8gTkVUU05NUF9EU19MSUJfWDUwOV9TRVJWRVJfUFVCIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1g1MDlfQ0xJRU5UX1BVQiApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfVExTX0xPQ0FMX0NFUlQpOworICAgICAgICAgICAgICAgIC8qKiB0ZW1wIGJhY2t3YXJkcyBjb21wYWJpbGl0eTsgcmVtb3ZlIGluIDUuNyAqLworICAgICAgICAgICAgICAgIGlmICghZnApIHsKKyAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICB0bXA7CisgICAgICAgICAgICAgICAgICAgIHRtcCA9IChwdHJkaWZmX3QpaGludDsKKyAgICAgICAgICAgICAgICAgICAgREVCVUdNU0dUKCgiY2VydDpmaW5kOnBhcmFtcyIsICIgaGludCA9ICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA/ICJzZXJ2ZXIiIDogImNsaWVudCIpKTsKKyAgICAgICAgICAgICAgICAgICAgZnAgPQorICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgdG1wID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X1NFUlZFUl9QVUIgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1g1MDlfQ0xJRU5UX1BVQiApOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIWZwKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIEFzIGEgc3BlY2lhbCBjYXNlLCB1c2UgdGhlIGFwcGxpY2F0aW9uIHR5cGUgdG8KICAgICAgICAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lIGEgZmlsZSBuYW1lIHRvIHB1bGwgdGhlIGRlZmF1bHQgaWRlbnRpdHkKQEAgLTE3MjcsNyArMTc2NiwxMSBAQAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBOU19DRVJUX1JFTU9URV9QRUVSOgogICAgICAgICAgICAgICAgIGZwID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X1NFUlZFUl9QVUIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1RMU19QRUVSX0NFUlQpOworICAgICAgICAgICAgICAgIC8qKiB0ZW1wIGJhY2t3YXJkcyBjb21wYWJpbGl0eTsgcmVtb3ZlIGluIDUuNyAqLworICAgICAgICAgICAgICAgIGlmICghZnApCisgICAgICAgICAgICAgICAgICAgIGZwID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfWDUwOV9TRVJWRVJfUFVCKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgREVCVUdNU0dUKCgiY2VydDpmaW5kOmVyciIsICJ1bmhhbmRsZWQgdHlwZSAlZCBmb3IgJXMoJWQpXG4iLApAQCAtMTgzMSwxMiArMTg3NCw3IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW50Ci1uZXRzbm1wX2NlcnRfdmFsaWRhdGUoaW50IHdobywgaW50IGhvdywgWDUwOSAqY2VydCkKLXsKLSAgICByZXR1cm4gLTE7Ci19Ci0KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DRVJUX0ZJTkdFUlBSSU5UUwogaW50CiBuZXRzbm1wX2NlcnRfY2hlY2tfdmJfZmluZ2VycHJpbnQoY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXIpCiB7CkBAIC0xOTExLDcgKzE5NDksOSBAQAogCiAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NFUlRfRklOR0VSUFJJTlRTICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UTFNfRklOR0VSUFJJTlRfQlVJTEQKIC8qKgogICogY29tYmluZSBhIGhhc2ggdHlwZSBhbmQgaGV4IGZpbmdlcnByaW50IGludG8gYSBTbm1wVExTRmluZ2VycHJpbnQKICAqCkBAIC0xOTU3LDYgKzE5OTcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UTFNfRklOR0VSUFJJTlRfQlVJTEQgKi8KIAogLyoqCiAgKiBUcnVzdHMgYSBnaXZlbiBjZXJ0aWZpY2F0ZSBmb3IgdXNlIGluIFRMUyB0cmFuc2xhdGlvbnMuCkBAIC0yMjQ1LDggKzIyODYsMTMgQEAKICAgICBtYXRjaGluZyA9IENPTlRBSU5FUl9HRVRfU1VCU0VUKGNvbnRhaW5lciwgJnNlYXJjaCk7CiAgICAgREVCVUdNU0dUKCgiOTpjZXJ0OnN1YnNldDpmb3VuZCIsICIlIiBORVRTTk1QX1BSSXogImQgbWF0Y2hlc1xuIiwgbWF0Y2hpbmcgPwogICAgICAgICAgICAgICAgbWF0Y2hpbmctPnNpemUgOiAwKSk7Ci0gICAgaWYgKG1hdGNoaW5nICYmIG1hdGNoaW5nLT5zaXplID4gMSkKKyAgICBpZiAobWF0Y2hpbmcgJiYgbWF0Y2hpbmctPnNpemUgPiAxKSB7CiAgICAgICAgIF9yZWR1Y2Vfc3Vic2V0KG1hdGNoaW5nLCBmaWxlbmFtZSk7CisgICAgICAgIGlmICgwID09IG1hdGNoaW5nLT5zaXplKSB7CisgICAgICAgICAgICBmcmVlKG1hdGNoaW5nLT5hcnJheSk7CisgICAgICAgICAgICBTTk1QX0ZSRUUobWF0Y2hpbmcpOworICAgICAgICB9CisgICAgfQogICAgIHJldHVybiBtYXRjaGluZzsKIH0KIApAQCAtMjI2MSw4ICsyMzA3LDEzIEBACiAgICAgbmV0c25tcF9hc3NlcnQoZm5fY29udGFpbmVyKTsKIAogICAgIG1hdGNoaW5nID0gX2NlcnRfZmluZF9zdWJzZXRfY29tbW9uKGZpbGVuYW1lLCBmbl9jb250YWluZXIpOwotICAgIGlmIChtYXRjaGluZyAmJiAobWF0Y2hpbmctPnNpemUgPiAxKSAmJiBkaXJlY3RvcnkpCisgICAgaWYgKG1hdGNoaW5nICYmIChtYXRjaGluZy0+c2l6ZSA+IDEpICYmIGRpcmVjdG9yeSkgewogICAgICAgICBfcmVkdWNlX3N1YnNldF9kaXIobWF0Y2hpbmcsIGRpcmVjdG9yeSk7CisgICAgICAgIGlmICgwID09IG1hdGNoaW5nLT5zaXplKSB7CisgICAgICAgICAgICBmcmVlKG1hdGNoaW5nLT5hcnJheSk7CisgICAgICAgICAgICBTTk1QX0ZSRUUobWF0Y2hpbmcpOworICAgICAgICB9CisgICAgfQogICAgIHJldHVybiBtYXRjaGluZzsKIH0KIApAQCAtMjQyOCw2ICsyNDc5LDcgQEAKICAgICByZXR1cm4gcmM7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DRVJUX01BUF9SRU1PVkUKIGludAogbmV0c25tcF9jZXJ0X21hcF9yZW1vdmUobmV0c25tcF9jZXJ0X21hcCAqbWFwKQogewpAQCAtMjQ0NCw3ICsyNDk2LDkgQEAKIAogICAgIHJldHVybiByYzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NFUlRfTUFQX1JFTU9WRSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0VSVF9NQVBfRklORAogbmV0c25tcF9jZXJ0X21hcCAqCiBuZXRzbm1wX2NlcnRfbWFwX2ZpbmQobmV0c25tcF9jZXJ0X21hcCAqbWFwKQogewpAQCAtMjQ1Myw2ICsyNTA3LDcgQEAKIAogICAgIHJldHVybiBDT05UQUlORVJfRklORChfbWFwcywgbWFwKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NFUlRfTUFQX0ZJTkQgKi8KIAogc3RhdGljIHZvaWQKIF9tYXBfZnJlZShuZXRzbm1wX2NlcnRfbWFwICptYXAsIHZvaWQgKmNvbnRleHQpCkBAIC0yNTAyLDEwICsyNTU3LDkgQEAKIG5ldHNubXBfY29udGFpbmVyICoKIG5ldHNubXBfY2VydF9tYXBfY29udGFpbmVyX2NyZWF0ZShpbnQgd2l0aF9mcCkKIHsKLSAgICBuZXRzbm1wX2NvbnRhaW5lciAqY2hhaW5fbWFwID0KLSAgICAgICAgbmV0c25tcF9jb250YWluZXJfZmluZCgiY2VydF9tYXA6c3RhY2s6YmluYXJ5X2FycmF5Iik7Ci0gICAgbmV0c25tcF9jb250YWluZXIgKmZwOworICAgIG5ldHNubXBfY29udGFpbmVyICpjaGFpbl9tYXAsICpmcDsKIAorICAgIGNoYWluX21hcCA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImNlcnRfbWFwOnN0YWNrOmJpbmFyeV9hcnJheSIpOwogICAgIGlmIChOVUxMID09IGNoYWluX21hcCkgewogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGQgbm90IGFsbG9jYXRlIGNvbnRhaW5lciBmb3IgY2VydF9tYXBcbiIpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI4OTgsMTEgKzI5NTIsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zX2hlbHApOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVExTVE1QQVJBTVNfQ09OVEFJTkVSCiBuZXRzbm1wX2NvbnRhaW5lciAqCiBuZXRzbm1wX3Rsc3RtUGFyYW1zX2NvbnRhaW5lcih2b2lkKQogewogICAgIHJldHVybiBfdGxzdG1QYXJhbXM7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UTFNUTVBBUkFNU19DT05UQUlORVIgKi8KIAogc25tcFRsc3RtUGFyYW1zICoKIG5ldHNubXBfdGxzdG1QYXJhbXNfY3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsIGludCBoYXNoVHlwZSwgY29uc3QgY2hhciAqZnAsCkBAIC0zMDA2LDYgKzMwNjIsNyBAQAogICAgIHJldHVybiAwOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVExTVE1QQVJBTVNfUkVNT1ZFCiBpbnQKIG5ldHNubXBfdGxzdG1QYXJhbXNfcmVtb3ZlKHNubXBUbHN0bVBhcmFtcyAqc3RwKQogewpAQCAtMzAyMiw3ICszMDc5LDkgQEAKIAogICAgIHJldHVybiAwOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVExTVE1QQVJBTVNfUkVNT1ZFICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UTFNUTVBBUkFNU19GSU5ECiBzbm1wVGxzdG1QYXJhbXMgKgogbmV0c25tcF90bHN0bVBhcmFtc19maW5kKHNubXBUbHN0bVBhcmFtcyAqc3RwKQogewpAQCAtMzAzNCw2ICszMDkzLDcgQEAKICAgICBmb3VuZCA9IENPTlRBSU5FUl9GSU5EKF90bHN0bVBhcmFtcywgc3RwKTsKICAgICByZXR1cm4gZm91bmQ7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UTFNUTVBBUkFNU19GSU5EICovCiAKIHN0YXRpYyB2b2lkCiBfcGFyc2VfcGFyYW1zKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpsaW5lKQpAQCAtMzEwMCwxMSArMzE2MCwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJfaGVscCk7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UTFNUTUFERFJfQ09OVEFJTkVSCiBuZXRzbm1wX2NvbnRhaW5lciAqCiBuZXRzbm1wX3Rsc3RtQWRkcl9jb250YWluZXIodm9pZCkKIHsKICAgICByZXR1cm4gX3Rsc3RtQWRkcjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RMU1RNQUREUl9DT05UQUlORVIgKi8KIAogLyoKICAqIGNyZWF0ZSBhIG5ldyByb3cgaW4gdGhlIHRhYmxlIApAQCAtMzIxMCw2ICszMjcyLDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RMU1RNQUREUl9SRU1PVkUKIGludAogbmV0c25tcF90bHN0bUFkZHJfcmVtb3ZlKHNubXBUbHN0bUFkZHIgKmVudHJ5KQogewpAQCAtMzIyMyw2ICszMjg2LDcgQEAKIAogICAgIHJldHVybiAwOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVExTVE1BRERSX1JFTU9WRSAqLwogCiBzdGF0aWMgdm9pZAogX3BhcnNlX2FkZHIoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmxpbmUpCkBAIC0zMjc0LDYgKzMzMzgsNyBAQAogICAgIHJldHVybiByZXN1bHQtPmZpbmdlcnByaW50OwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVExTVE1BRERSX0dFVF9TRVJWRVJJRAogY2hhciAqCiBuZXRzbm1wX3Rsc3RtQWRkcl9nZXRfc2VydmVySWQoY29uc3QgY2hhciAqbmFtZSkKIHsKQEAgLTMyOTAsMTAgKzMzNTUsMTMgQEAKIAogICAgIHJldHVybiByZXN1bHQtPmlkZW50aXR5OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVExTVE1BRERSX0dFVF9TRVJWRVJJRCAqLwogLyoKICAqIEVORCBzbm1wVGxzdG1BZGRyVGFibGUgZGF0YQogICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAjZWxzZQotaW50IGNlcnRfdW51c2VkOwkvKiBTdXBwcmVzcyAiZW1wdHkgdHJhbnNsYXRpb24gdW5pdCIgd2FybmluZyAqLworbmV0c25tcF9mZWF0dXJlX3VudXNlZChjZXJ0X3V0aWwpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0VSVF9VVElMICovCituZXRzbm1wX2ZlYXR1cmVfdW51c2VkKGNlcnRfdXRpbCk7CiAjZW5kaWYgLyogZGVmaW5lZChORVRTTk1QX1VTRV9PUEVOU1NMKSAmJiBkZWZpbmVkKEhBVkVfTElCU1NMKSAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9jaGVja192YXJiaW5kLmMgYi9zbm1wbGliL2NoZWNrX3ZhcmJpbmQuYwppbmRleCA0NDI3OTVjLi4xMmI3YTUyIDEwMDY0NAotLS0gYS9zbm1wbGliL2NoZWNrX3ZhcmJpbmQuYworKysgYi9zbm1wbGliL2NoZWNrX3ZhcmJpbmQuYwpAQCAtMSw5ICsxLDI3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNoZWNrX3ZhcmJpbmRfYWxsLCBsaWJuZXRzbm1wKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2hlY2tfdmJfcmFuZ2UsIGNoZWNrX3ZhcmJpbmRfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNoZWNrX3ZiX3NpemVfcmFuZ2UsIGNoZWNrX3ZhcmJpbmRfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNoZWNrX3ZiX3VpbnQsIGNoZWNrX3ZhcmJpbmRfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNoZWNrX3ZiX3N0b3JhZ2V0eXBlLCBjaGVja192YXJiaW5kX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjaGVja192Yl9vaWQsIGNoZWNrX3ZhcmJpbmRfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplLCBjaGVja192YXJiaW5kX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjaGVja192Yl90eXBlX2FuZF9tYXhfc2l6ZSwgY2hlY2tfdmFyYmluZF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2hlY2tfdmJfcm93c3RhdHVzX3dpdGhfc3RvcmFnZXR5cGUsIGNoZWNrX3ZhcmJpbmRfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNoZWNrX3ZiX3RydXRodmFsdWUsIGNoZWNrX3ZhcmJpbmRfYWxsKQorCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfQ0hFQ0tfVkJfUk9XU1RBVFVTX1dJVEhfU1RPUkFHRVRZUEUKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3Jvd3N0YXR1c193aXRoX3N0b3JhZ2V0eXBlX3RyYW5zaXRpb24pCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVTX0NIRUNLX1ZCX1JPV1NUQVRVU19XSVRIX1NUT1JBR0VUWVBFICovCisKKwogTkVUU05NUF9JTkxJTkUgaW50CiBuZXRzbm1wX2NoZWNrX3ZiX3R5cGUoY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXIsIGludCB0eXBlICkKIHsKQEAgLTQ5LDYgKzY3LDcgQEAKICAgICByZXR1cm4gcmM7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DSEVDS19WQl9SQU5HRQogTkVUU05NUF9JTkxJTkUgaW50CiBuZXRzbm1wX2NoZWNrX3ZiX3JhbmdlKGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyLAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbG93LCBzaXplX3QgaGlnaCApCkBAIC02NCw3ICs4Myw5IEBACiAKICAgICByZXR1cm4gcmM7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DSEVDS19WQl9SQU5HRSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0hFQ0tfVkJfU0laRV9SQU5HRQogTkVUU05NUF9JTkxJTkUgaW50CiBuZXRzbm1wX2NoZWNrX3ZiX3NpemVfcmFuZ2UoY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxvdywgc2l6ZV90IGhpZ2ggKQpAQCAtODAsNiArMTAxLDcgQEAKIAogICAgIHJldHVybiByYzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX1ZCX1NJWkVfUkFOR0UgKi8KIAogTkVUU05NUF9JTkxJTkUgaW50CiBuZXRzbm1wX2NoZWNrX3ZiX3R5cGVfYW5kX3NpemUoY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXIsCkBAIC05OCw2ICsxMjAsNyBAQAogICAgIHJldHVybiByYzsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX1ZCX1RZUEVfQU5EX01BWF9TSVpFCiBORVRTTk1QX0lOTElORSBpbnQKIG5ldHNubXBfY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUoY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHR5cGUsIHNpemVfdCBzaXplKQpAQCAtMTE0LDcgKzEzNyw5IEBACiAKICAgICByZXR1cm4gcmM7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DSEVDS19WQl9UWVBFX0FORF9NQVhfU0laRSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0hFQ0tfVkJfT0lECiBORVRTTk1QX0lOTElORSBpbnQKIG5ldHNubXBfY2hlY2tfdmJfb2lkKGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyKQogewpAQCAtMTMwLDYgKzE1NSw3IEBACiAKICAgICByZXR1cm4gcmM7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DSEVDS19WQl9PSUQgKi8KIAogTkVUU05NUF9JTkxJTkUgaW50CiBuZXRzbm1wX2NoZWNrX3ZiX2ludChjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcikKQEAgLTE0MCw2ICsxNjYsNyBAQAogICAgIHJldHVybiBuZXRzbm1wX2NoZWNrX3ZiX3R5cGVfYW5kX3NpemUodmFyLCBBU05fSU5URUdFUiwgc2l6ZW9mKGxvbmcpKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX1ZCX1VJTlQKIE5FVFNOTVBfSU5MSU5FIGludAogbmV0c25tcF9jaGVja192Yl91aW50KGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyKQogewpAQCAtMTQ4LDYgKzE3NSw3IEBACiAgICAgCiAgICAgcmV0dXJuIG5ldHNubXBfY2hlY2tfdmJfdHlwZV9hbmRfc2l6ZSh2YXIsIEFTTl9VTlNJR05FRCwgc2l6ZW9mKGxvbmcpKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX1ZCX1VJTlQgKi8KIAogTkVUU05NUF9JTkxJTkUgaW50CiBuZXRzbm1wX2NoZWNrX3ZiX2ludF9yYW5nZShjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhciwgaW50IGxvdywgaW50IGhpZ2gpCkBAIC0xNjcsNiArMTk1LDcgQEAKICAgICByZXR1cm4gcmM7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DSEVDS19WQl9UUlVUSFZBTFVFCiBpbnQKIG5ldHNubXBfY2hlY2tfdmJfdHJ1dGh2YWx1ZShjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcikKIHsKQEAgLTE4MCw2ICsyMDksNyBAQAogICAgIAogICAgIHJldHVybiBuZXRzbm1wX2NoZWNrX3ZiX2ludF9yYW5nZSh2YXIsIDEsIDIpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0hFQ0tfVkJfVFJVVEhWQUxVRSAqLwogCiBORVRTTk1QX0lOTElORSBpbnQKIG5ldHNubXBfY2hlY2tfdmJfcm93c3RhdHVzX3ZhbHVlKGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyKQpAQCAtMjEzLDYgKzI0Myw3IEBACiAgICAgcmV0dXJuIGNoZWNrX3Jvd3N0YXR1c190cmFuc2l0aW9uKG9sZF92YWx1ZSwgKnZhci0+dmFsLmludGVnZXIpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0hFQ0tfVkJfUk9XU1RBVFVTX1dJVEhfU1RPUkFHRVRZUEUKIGludAogbmV0c25tcF9jaGVja192Yl9yb3dzdGF0dXNfd2l0aF9zdG9yYWdldHlwZShjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9sZF92YWx1ZSwgaW50IG9sZF9zdG9yYWdlKQpAQCAtMjI5LDcgKzI2MCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnZhci0+dmFsLmludGVnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkX3N0b3JhZ2UpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0hFQ0tfVkJfUk9XU1RBVFVTX1dJVEhfU1RPUkFHRVRZUEUgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX1ZCX1NUT1JBR0VUWVBFCiBpbnQKIG5ldHNubXBfY2hlY2tfdmJfc3RvcmFnZXR5cGUoY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXIsIGludCBvbGRfdmFsdWUpCiB7CkBAIC0yNDcsMyArMjgwLDQgQEAKICAgICAgICAgCiAgICAgcmV0dXJuIGNoZWNrX3N0b3JhZ2VfdHJhbnNpdGlvbihvbGRfdmFsdWUsICp2YXItPnZhbC5pbnRlZ2VyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX1ZCX1NUT1JBR0VUWVBFICovCmRpZmYgLS1naXQgYS9zbm1wbGliL2NtdV9jb21wYXQuYyBiL3NubXBsaWIvY211X2NvbXBhdC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOGRjZjNhLi4wMDAwMDAwCi0tLSBhL3NubXBsaWIvY211X2NvbXBhdC5jCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgotCi0jaWZkZWYgQ01VX0NPTVBBVElCTEUKLQotI2luY2x1ZGUgPG5ldC1zbm1wL21pYl9hcGkuaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9wZHVfYXBpLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvc2Vzc2lvbl9hcGkuaD4KLQotaW50Ci1taWJfVHh0VG9PaWQoY2hhciAqQnVmLCBvaWQgKiogT2lkUCwgc2l6ZV90ICogTGVuUCkKLXsKLSAgICByZXR1cm4gcmVhZF9vYmppZChCdWYsICpPaWRQLCBMZW5QKTsKLX0KLQotaW50Ci1taWJfT2lkVG9UeHQob2lkICogTywgc2l6ZV90IE9pZExlbiwgY2hhciAqQnVmLCBzaXplX3QgQnVmTGVuKQotewotICAgIF9zcHJpbnRfb2JqaWQoQnVmLCBPLCBPaWRMZW4pOwotICAgIHJldHVybiAxOwotfQotCi0KLS8qCi0gKiBjbXVfc25tcF9wYXJzZSAtIGVtdWxhdGUgQ01VIGxpYnJhcnkncyBzbm1wX3BhcnNlLgotICoKLSAqIFBhcnNlIHBhY2tldCwgc3RvcmluZyByZXN1bHRzIGludG8gUERVLgotICogUmV0dXJucyBjb21tdW5pdHkgc3RyaW5nIGlmIHN1Y2Nlc3MsIE5VTEwgaWYgZmFpbC4KLSAqIFdBUk5JTkc6IG1heSByZXR1cm4gYSB6ZXJvIGxlbmd0aCBjb21tdW5pdHkgc3RyaW5nLgotICoKLSAqIE5vdGU6Ci0gKiBTb21lIENNVS1hd2FyZSBhcHBzIGNhbGwgaW5pdF9taWIoKSwgYnV0IGRvIG5vdAotICogaW5pdGlhbGl6ZSBhIHNlc3Npb24uCi0gKiBDaGVjayBSZXFpZCB0byBtYWtlIHN1cmUgdGhhdCB0aGlzIG1vZHVsZSBpcyBpbml0aWFsaXplZC4KLSAqLwotCi11X2NoYXIgICAgICAgICAqCi1jbXVfc25tcF9wYXJzZShuZXRzbm1wX3Nlc3Npb24gKiBzZXNzaW9uLAotICAgICAgICAgICAgICAgbmV0c25tcF9wZHUgKnBkdSwgdV9jaGFyICogZGF0YSwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICB1X2NoYXIgICAgICAgICAqYnVmcCA9IE5VTEw7Ci0KLSAgICBzbm1wX3Nlc3NfaW5pdChzZXNzaW9uKTsgICAgLyogZ2ltbWUgYSBicmVhayEgKi8KLQotICAgIHN3aXRjaCAocGR1LT52ZXJzaW9uKSB7Ci0gICAgY2FzZSBTTk1QX1ZFUlNJT05fMToKLSAgICBjYXNlIFNOTVBfVkVSU0lPTl8yYzoKLSAgICBjYXNlIFNOTVBfREVGQVVMVF9WRVJTSU9OOgotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0jaWZuZGVmIE5PX0lOVEVSTkFMX1ZBUkxJU1QKLSAgICBpZiAoc25tcF9wYXJzZSgwLCBzZXNzaW9uLCBwZHUsIGRhdGEsIGxlbmd0aCkgIT0gU05NUF9FUlJfTk9FUlJPUikgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0jZWxzZQotICAgIC8qCi0gICAgICogd2hpbGUgdGhlcmUgYXJlIHR3byB2ZXJzaW9ucyBvZiB2YXJpYWJsZV9saXN0OgotICAgICAqIHVzZSBhbiBpbnRlcm5hbCB2YXJpYWJsZSBsaXN0IGZvciBzbm1wX3BhcnNlOwotICAgICAqIGNsb25lIHRoZSByZXN1bHQuCi0gICAgICovCi0gICAgaWYgKDEpIHsKLSAgICAgICAgbmV0c25tcF9wZHUgICAgKnNubXBfY2xvbmVfcGR1KG5ldHNubXBfcGR1ICopOwotICAgICAgICBuZXRzbm1wX3BkdSAgICAqc25tcF8yY2xvbmVfcGR1KG5ldHNubXBfcGR1ICpmcm9tX3BkdSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3BkdSAqdG9fcGR1KTsKLQotICAgICAgICBuZXRzbm1wX3BkdSAgICAqaXBkdTsKLSAgICAgICAgaXBkdSA9IHNubXBfY2xvbmVfcGR1KHBkdSk7Ci0gICAgICAgIGlmIChzbm1wX3BhcnNlKDAsIHNlc3Npb24sIGlwZHUsIGRhdGEsIGxlbmd0aCkgIT0gU05NUF9FUlJfTk9FUlJPUikgewotICAgICAgICAgICAgc25tcF9mcmVlX2ludGVybmFsX3BkdShpcGR1KTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIHBkdSA9IHNubXBfMmNsb25lX3BkdShpcGR1LCBwZHUpOwotICAgICAgICBzbm1wX2ZyZWVfaW50ZXJuYWxfcGR1KGlwZHUpOwotICAgIH0KLSNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTk9fSU5URVJOQUxfVkFSX0xJU1QgKi8KLQotICAgIC8qCi0gICAgICogQWRkIGEgbnVsbCB0byBtZWV0IHRoZSBjYWxsZXIncyBleHBlY3RhdGlvbnMuIAotICAgICAqLwotCi0gICAgYnVmcCA9ICh1X2NoYXIgKikgbWFsbG9jKDEgKyBwZHUtPmNvbW11bml0eV9sZW4pOwotICAgIGlmIChidWZwICYmIHBkdS0+Y29tbXVuaXR5X2xlbikgewotICAgICAgICBtZW1jcHkoYnVmcCwgcGR1LT5jb21tdW5pdHksIHBkdS0+Y29tbXVuaXR5X2xlbik7Ci0gICAgICAgIGJ1ZnBbcGR1LT5jb21tdW5pdHlfbGVuXSA9ICdcMCc7Ci0gICAgfQotICAgIHJldHVybiAoYnVmcCk7Ci19Ci0KLQotI2Vsc2UKLWludCBjbXVfdW51c2VkOwkvKiBTdXBwcmVzcyAiZW1wdHkgdHJhbnNsYXRpb24gdW5pdCIgd2FybmluZyAqLwotI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDTVVfQ09NUEFUSUJMRSAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9jb250YWluZXIuYyBiL3NubXBsaWIvY29udGFpbmVyLmMKaW5kZXggMTdkZDQwZi4uYjJhYzk3ZSAxMDA2NDQKLS0tIGEvc25tcGxpYi9jb250YWluZXIuYworKysgYi9zbm1wbGliL2NvbnRhaW5lci5jCkBAIC05LDEyICs5LDMxIEBACiAgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5Lmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbnVsbC5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY29udGFpbmVyX2FsbCwgbGlibmV0c25tcCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNvbnRhaW5lcl9mYWN0b3JpZXMsIGNvbnRhaW5lcl9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY29udGFpbmVyX3R5cGVzLCBjb250YWluZXJfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNvbnRhaW5lcl9jb21wYXJlLCBjb250YWluZXJfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNvbnRhaW5lcl9kdXAsIGNvbnRhaW5lcl9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY29udGFpbmVyX2ZyZWVfYWxsLCBjb250YWluZXJfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHN1YmNvbnRhaW5lcl9maW5kLCBjb250YWluZXJfYWxsKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY29udGFpbmVyX25jb21wYXJlX2NzdHJpbmcsIGNvbnRhaW5lcl9jb21wYXJlKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNvbnRhaW5lcl9jb21wYXJlX21lbSwgY29udGFpbmVyX2NvbXBhcmUpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY29udGFpbmVyX2NvbXBhcmVfbG9uZywgY29udGFpbmVyX2NvbXBhcmUpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY29udGFpbmVyX2NvbXBhcmVfdWxvbmcsIGNvbnRhaW5lcl9jb21wYXJlKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNvbnRhaW5lcl9jb21wYXJlX2ludDMyLCBjb250YWluZXJfY29tcGFyZSkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjb250YWluZXJfY29tcGFyZV91aW50MzIsIGNvbnRhaW5lcl9jb21wYXJlKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY29udGFpbmVyX2ZpbmRfZmFjdG9yeSwgY29udGFpbmVyX2ZhY3RvcmllcykKKwogLyoqIEBkZWZncm91cCBjb250YWluZXIgY29udGFpbmVyCiAgKi8KIApAQCAtNjgsMTggKzg3LDI1IEBACiAgICAgICogcmVnaXN0ZXIgY29udGFpbmVycwogICAgICAqLwogICAgIG5ldHNubXBfY29udGFpbmVyX2JpbmFyeV9hcnJheV9pbml0KCk7CisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0xJTktFRF9MSVNUCiAgICAgbmV0c25tcF9jb250YWluZXJfc3NsbF9pbml0KCk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfTElOS0VEX0xJU1QgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfTlVMTAogICAgIG5ldHNubXBfY29udGFpbmVyX251bGxfaW5pdCgpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX05VTEwgKi8KIAogICAgIC8qCiAgICAgICogZGVmYXVsdCBhbGlhc2VzIGZvciBzb21lIGNvbnRhaW5lcnMKICAgICAgKi8KICAgICBuZXRzbm1wX2NvbnRhaW5lcl9yZWdpc3RlcigidGFibGVfY29udGFpbmVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl9nZXRfZmFjdG9yeSgiYmluYXJ5X2FycmF5IikpOworCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0xJTktFRF9MSVNUCiAgICAgbmV0c25tcF9jb250YWluZXJfcmVnaXN0ZXIoImxpbmtlZF9saXN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl9nZXRfZmFjdG9yeSgic29ydGVkX3NpbmdseV9saW5rZWRfbGlzdCIpKTsKICAgICBuZXRzbm1wX2NvbnRhaW5lcl9yZWdpc3Rlcigic3NsbF9jb250YWluZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX2dldF9mYWN0b3J5KCJzb3J0ZWRfc2luZ2x5X2xpbmtlZF9saXN0IikpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0xJTktFRF9MSVNUICovCiAKICAgICBuZXRzbm1wX2NvbnRhaW5lcl9yZWdpc3Rlcl93aXRoX2NvbXBhcmUKICAgICAgICAgKCJjc3RyaW5nIiwgbmV0c25tcF9jb250YWluZXJfZ2V0X2ZhY3RvcnkoImJpbmFyeV9hcnJheSIpLApAQCAtMTY2LDYgKzE5Miw3IEBACiAgICAgcmV0dXJuIGZvdW5kID8gZm91bmQtPmZhY3RvcnkgOiBOVUxMOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0ZJTkRfRkFDVE9SWQogbmV0c25tcF9mYWN0b3J5ICoKIG5ldHNubXBfY29udGFpbmVyX2ZpbmRfZmFjdG9yeShjb25zdCBjaGFyICp0eXBlX2xpc3QpCiB7CkBAIC0xODgsNiArMjE1LDcgQEAKICAgICBmcmVlKGxpc3QpOwogICAgIHJldHVybiBmOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0ZJTkRfRkFDVE9SWSAqLwogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCkBAIC0yODYsOCArMzE0LDYgQEAKICAgICBuZXdfaW5kZXgtPnByZXYgPSBjdXJyOwogfQogCi0jaWZuZGVmIE5FVFNOTVBfVVNFX0lOTElORSAvKiBkZWZhdWx0IGlzIHRvIGlubGluZSAqLwotCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBFWEFDVExZIG1hdGNoIHRoZSBpbmxpbmUgdmVyc2lvbiBpbgogICogY29udGFpbmVyLmguIElmIHlvdSBjaGFuZ2Ugb25lLCBjaGFuZ2UgdGhlbSBib3RoLgpAQCAtMzUyLDYgKzM3OCw3IEBACiAgKiBUaGVzZSBmdW5jdGlvbnMgc2hvdWxkIEVYQUNUTFkgbWF0Y2ggdGhlIGZ1bmN0aW9uIHZlcnNpb24gaW4KICAqIGNvbnRhaW5lci5jLiBJZiB5b3UgY2hhbmdlIG9uZSwgY2hhbmdlIHRoZW0gYm90aC4KICAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9EVVAKIG5ldHNubXBfY29udGFpbmVyICpDT05UQUlORVJfRFVQKG5ldHNubXBfY29udGFpbmVyICp4LCB2b2lkICpjdHgsIHVfaW50IGZsYWdzKQogewogICAgIGlmIChOVUxMID09IHgtPmR1cGxpY2F0ZSkgewpAQCAtMzYxLDYgKzM4OCw3IEBACiAgICAgfQogICAgIHJldHVybiB4LT5kdXBsaWNhdGUoeCwgY3R4LCBmbGFncyk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfRFVQICovCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBUaGVzZSBmdW5jdGlvbnMgc2hvdWxkIEVYQUNUTFkgbWF0Y2ggdGhlIGlubGluZSB2ZXJzaW9uIGluCkBAIC00MTMsNiArNDQxLDcgQEAKICAgICB4LT5jbGVhcih4LCBmLCBjKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9GUkVFX0FMTAogLyoKICAqIGNsZWFyIGFsbCBjb250YWluZXJzLiBXaGVuIGNsZWFyaW5nIHRoZSAqZmlyc3QqIGNvbnRhaW5lciwgYW5kCiAgKiAqb25seSogdGhlIGZpcnN0IGNvbnRhaW5lciwgY2FsbCB0aGUgZnJlZV9pdGVtIGZ1bmN0aW9uIGZvciBlYWNoIGl0ZW0uCkBAIC00MjIsNyArNDUxLDkgQEAKIHsKICAgICBDT05UQUlORVJfQ0xFQVIoeCwgeC0+ZnJlZV9pdGVtLCBjKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9GUkVFX0FMTCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1VCQ09OVEFJTkVSX0ZJTkQKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBUaGVzZSBmdW5jdGlvbnMgc2hvdWxkIEVYQUNUTFkgbWF0Y2ggdGhlIGZ1bmN0aW9uIHZlcnNpb24gaW4KICAqIGNvbnRhaW5lci5jLiBJZiB5b3UgY2hhbmdlIG9uZSwgY2hhbmdlIHRoZW0gYm90aC4KQEAgLTQ0Niw3ICs0NzcsNyBAQAogICAgIH0KICAgICByZXR1cm4geDsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1VCQ09OVEFJTkVSX0ZJTkQgKi8KIAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTUwLDYgKzU4MSw3IEBACiAgICAgICAgICAgICAgICAgICAoKGNvbnN0IGNvbnRhaW5lcl90eXBlKilyaHMpLT5uYW1lKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9OQ09NUEFSRV9DU1RSSU5HCiBpbnQKIG5ldHNubXBfbmNvbXBhcmVfY3N0cmluZyhjb25zdCB2b2lkICogbGhzLCBjb25zdCB2b2lkICogcmhzKQogewpAQCAtNTU3LDYgKzU4OSw3IEBACiAgICAgICAgICAgICAgICAgICAgKChjb25zdCBjb250YWluZXJfdHlwZSopcmhzKS0+bmFtZSwKICAgICAgICAgICAgICAgICAgICBzdHJsZW4oKChjb25zdCBjb250YWluZXJfdHlwZSopcmhzKS0+bmFtZSkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX05DT01QQVJFX0NTVFJJTkcgKi8KIAogaW50CiBuZXRzbm1wX2NvbXBhcmVfZGlyZWN0X2NzdHJpbmcoY29uc3Qgdm9pZCAqIGxocywgY29uc3Qgdm9pZCAqIHJocykKQEAgLTU3MSw2ICs2MDQsNyBAQAogICogY29tcGFyZSB1cCB0byB0aGUgbGVuZ3RoIG9mIHRoZSBzbWFsbGVyLCBhbmQgdGhlbiB1c2UgbGVuZ3RoIHRvCiAgKiBicmVhayBhbnkgdGllcy4KICAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9DT01QQVJFX01FTQogaW50CiBuZXRzbm1wX2NvbXBhcmVfbWVtKGNvbnN0IGNoYXIgKiBsaHMsIHNpemVfdCBsaHNfbGVuLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogcmhzLCBzaXplX3QgcmhzX2xlbikKQEAgLTU4NywxNiArNjIxLDE2IEBACiAKICAgICByZXR1cm4gcmM7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfQ09NUEFSRV9NRU0gKi8KIAotdHlwZWRlZiBzdHJ1Y3QgZHVtbXlfbG9uZ19zIHsKLSAgICBsb25nICAgICAgICAgICAgICAgICAgICAgIGluZGV4OwotfSBkdW1teV9sb25nOwotCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0NPTVBBUkVfTE9ORwogaW50CiBuZXRzbm1wX2NvbXBhcmVfbG9uZyhjb25zdCB2b2lkICogbGhzLCBjb25zdCB2b2lkICogcmhzKQogewotICAgIGNvbnN0IGR1bW15X2xvbmcgKmxoZCA9IChjb25zdCBkdW1teV9sb25nKilsaHM7Ci0gICAgY29uc3QgZHVtbXlfbG9uZyAqcmhkID0gKGNvbnN0IGR1bW15X2xvbmcqKXJoczsKKyAgICB0eXBlZGVmIHN0cnVjdCB7IGxvbmcgaW5kZXg7IH0gZHVtbXk7CisKKyAgICBjb25zdCBkdW1teSAqbGhkID0gKGNvbnN0IGR1bW15KilsaHM7CisgICAgY29uc3QgZHVtbXkgKnJoZCA9IChjb25zdCBkdW1teSopcmhzOwogCiAgICAgaWYgKGxoZC0+aW5kZXggPCByaGQtPmluZGV4KQogICAgICAgICByZXR1cm4gLTE7CkBAIC02MDUsMTYgKzYzOSwxNiBAQAogCiAgICAgcmV0dXJuIDA7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfQ09NUEFSRV9MT05HICovCiAKLXR5cGVkZWYgc3RydWN0IGR1bW15X3Vsb25nX3MgewotICAgIHVfbG9uZyAgICAgICAgICAgICAgICAgICAgICBpbmRleDsKLX0gZHVtbXlfdWxvbmc7Ci0KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfQ09NUEFSRV9VTE9ORwogaW50CiBuZXRzbm1wX2NvbXBhcmVfdWxvbmcoY29uc3Qgdm9pZCAqIGxocywgY29uc3Qgdm9pZCAqIHJocykKIHsKLSAgICBjb25zdCBkdW1teV91bG9uZyAqbGhkID0gKGNvbnN0IGR1bW15X3Vsb25nKilsaHM7Ci0gICAgY29uc3QgZHVtbXlfdWxvbmcgKnJoZCA9IChjb25zdCBkdW1teV91bG9uZyopcmhzOworICAgIHR5cGVkZWYgc3RydWN0IHsgdV9sb25nIGluZGV4OyB9IGR1bW15OworCisgICAgY29uc3QgZHVtbXkgKmxoZCA9IChjb25zdCBkdW1teSopbGhzOworICAgIGNvbnN0IGR1bW15ICpyaGQgPSAoY29uc3QgZHVtbXkqKXJoczsKIAogICAgIGlmIChsaGQtPmluZGV4IDwgcmhkLT5pbmRleCkKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNjIzLDE2ICs2NTcsMTYgQEAKIAogICAgIHJldHVybiAwOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0NPTVBBUkVfVUxPTkcgKi8KIAotdHlwZWRlZiBzdHJ1Y3QgZHVtbXlfaW50MzJfcyB7Ci0gICAgaW50MzJfdCAgICAgICAgICAgICAgICAgICAgaW5kZXg7Ci19IGR1bW15X2ludDMyOwotCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0NPTVBBUkVfSU5UMzIKIGludAogbmV0c25tcF9jb21wYXJlX2ludDMyKGNvbnN0IHZvaWQgKiBsaHMsIGNvbnN0IHZvaWQgKiByaHMpCiB7Ci0gICAgY29uc3QgZHVtbXlfaW50MzIgKmxoZCA9IChjb25zdCBkdW1teV9pbnQzMiopbGhzOwotICAgIGNvbnN0IGR1bW15X2ludDMyICpyaGQgPSAoY29uc3QgZHVtbXlfaW50MzIqKXJoczsKKyAgICB0eXBlZGVmIHN0cnVjdCB7IGludDMyX3QgaW5kZXg7IH0gZHVtbXk7CisKKyAgICBjb25zdCBkdW1teSAqbGhkID0gKGNvbnN0IGR1bW15KilsaHM7CisgICAgY29uc3QgZHVtbXkgKnJoZCA9IChjb25zdCBkdW1teSopcmhzOwogCiAgICAgaWYgKGxoZC0+aW5kZXggPCByaGQtPmluZGV4KQogICAgICAgICByZXR1cm4gLTE7CkBAIC02NDEsMTYgKzY3NSwxNiBAQAogCiAgICAgcmV0dXJuIDA7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfQ09NUEFSRV9JTlQzMiAqLwogCi10eXBlZGVmIHN0cnVjdCBkdW1teV91aW50MzJfcyB7Ci0gICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgaW5kZXg7Ci19IGR1bW15X3VpbnQzMjsKLQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9DT01QQVJFX1VJTlQzMgogaW50CiBuZXRzbm1wX2NvbXBhcmVfdWludDMyKGNvbnN0IHZvaWQgKiBsaHMsIGNvbnN0IHZvaWQgKiByaHMpCiB7Ci0gICAgY29uc3QgZHVtbXlfdWludDMyICpsaGQgPSAoY29uc3QgZHVtbXlfdWludDMyKilsaHM7Ci0gICAgY29uc3QgZHVtbXlfdWludDMyICpyaGQgPSAoY29uc3QgZHVtbXlfdWludDMyKilyaHM7CisgICAgdHlwZWRlZiBzdHJ1Y3QgeyB1aW50MzJfdCBpbmRleDsgfSBkdW1teTsKKworICAgIGNvbnN0IGR1bW15ICpsaGQgPSAoY29uc3QgZHVtbXkqKWxoczsKKyAgICBjb25zdCBkdW1teSAqcmhkID0gKGNvbnN0IGR1bW15KilyaHM7CiAKICAgICBpZiAobGhkLT5pbmRleCA8IHJoZC0+aW5kZXgpCiAgICAgICAgIHJldHVybiAtMTsKQEAgLTY1OSw2ICs2OTMsNyBAQAogCiAgICAgcmV0dXJuIDA7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfQ09NUEFSRV9VSU5UMzIgKi8KIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIG5ldHNubXBfY29udGFpbmVyX3NpbXBsZV9mcmVlCmRpZmYgLS1naXQgYS9zbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYyBiL3NubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jCmluZGV4IGEzMDkyNDguLjI0OWEzYTkgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jCisrKyBiL3NubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jCkBAIC0zNyw3ICszNyw2IEBACiAgICAgc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgbWF4X3NpemU7ICAgLyogU2l6ZSBvZiB0aGUgY3VycmVudCBkYXRhIHRhYmxlICovCiAgICAgc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgY291bnQ7ICAgICAgLyogSW5kZXggb2YgdGhlIG5leHQgZnJlZSBlbnRyeSAqLwogICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgIGRpcnR5OwotICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc2l6ZTsgIC8qIFNpemUgb2YgYW4gaW5kaXZpZHVhbCBlbnRyeSAqLwogICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAqKmRhdGE7ICAgICAgIC8qIFRoZSB0YWJsZSBpdHNlbGYgKi8KIH0gYmluYXJ5X2FycmF5X3RhYmxlOwogCkBAIC0yMjEsNyArMjIwLDYgQEAKICAgICB0LT5tYXhfc2l6ZSA9IDA7CiAgICAgdC0+Y291bnQgPSAwOwogICAgIHQtPmRpcnR5ID0gMDsKLSAgICB0LT5kYXRhX3NpemUgPSBzaXplb2Yodm9pZCopOwogICAgIHQtPmRhdGEgPSBOVUxMOwogCiAgICAgcmV0dXJuIHQ7CkBAIC0yMzEsOSArMjI5LDcgQEAKIG5ldHNubXBfYmluYXJ5X2FycmF5X3JlbGVhc2UobmV0c25tcF9jb250YWluZXIgKmMpCiB7CiAgICAgYmluYXJ5X2FycmF5X3RhYmxlICp0ID0gKGJpbmFyeV9hcnJheV90YWJsZSopYy0+Y29udGFpbmVyX2RhdGE7Ci0gICAgaWYgKHQtPmRhdGEgIT0gTlVMTCkgewotCVNOTVBfRlJFRSh0LT5kYXRhKTsKLSAgICB9CisgICAgU05NUF9GUkVFKHQtPmRhdGEpOwogICAgIFNOTVBfRlJFRSh0KTsKICAgICBTTk1QX0ZSRUUoYyk7CiB9CkBAIC0zMjIsNyArMzE4LDcgQEAKICAgICAgICAgICogb3RoZXJ3aXNlLCBzaGlmdCBhcnJheSBkb3duCiAgICAgICAgICAqLwogICAgICAgICBtZW1tb3ZlKCZ0LT5kYXRhW2luZGV4XSwgJnQtPmRhdGFbaW5kZXgrMV0sCi0gICAgICAgICAgICAgICAgdC0+ZGF0YV9zaXplICogKHQtPmNvdW50IC0gaW5kZXgpKTsKKyAgICAgICAgICAgICAgICBzaXplb2Yodm9pZCopICogKHQtPmNvdW50IC0gaW5kZXgpKTsKIAogICAgICAgICArK2MtPnN5bmM7CiAgICAgfQpAQCAtMzk3LDE2ICszOTMsMTMgQEAKIG5ldHNubXBfYmluYXJ5X2FycmF5X2luc2VydChuZXRzbm1wX2NvbnRhaW5lciAqYywgY29uc3Qgdm9pZCAqZW50cnkpCiB7CiAgICAgYmluYXJ5X2FycmF5X3RhYmxlICp0ID0gKGJpbmFyeV9hcnJheV90YWJsZSopYy0+Y29udGFpbmVyX2RhdGE7Ci0gICAgaW50ICAgICAgICAgICAgIG5ld19tYXgsIG5ld19zaXplLCB3YXNfZGlydHkgPSAwOwotICAgIGNoYXIgICAgICAgICAgICpuZXdfZGF0YTsgICAvKiBVc2VkIGZvciAqIGEpIGV4dGVuZGluZyB0aGUgZGF0YSB0YWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAqIGIpIHRoZSBuZXh0IGVudHJ5IHRvIHVzZSAqLworICAgIGludCAgICAgICAgICAgICB3YXNfZGlydHkgPSAwOwogICAgIC8qCiAgICAgICogY2hlY2sgZm9yIGR1cGxpY2F0ZXMKICAgICAgKi8KICAgICBpZiAoISAoYy0+ZmxhZ3MgJiBDT05UQUlORVJfS0VZX0FMTE9XX0RVUExJQ0FURVMpKSB7CiAgICAgICAgIHdhc19kaXJ0eSA9IHQtPmRpcnR5OwotICAgICAgICBuZXdfZGF0YSA9IG5ldHNubXBfYmluYXJ5X2FycmF5X2dldChjLCBlbnRyeSwgMSk7Ci0gICAgICAgIGlmIChOVUxMICE9IG5ld19kYXRhKSB7CisgICAgICAgIGlmIChOVUxMICE9IG5ldHNubXBfYmluYXJ5X2FycmF5X2dldChjLCBlbnRyeSwgMSkpIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJjb250YWluZXIiLCJub3QgaW5zZXJ0aW5nIGR1cGxpY2F0ZSBrZXlcbiIpKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQpAQCAtNDE3LDIyICs0MTAsMjAgQEAKICAgICAgKi8KICAgICBpZiAodC0+bWF4X3NpemUgPD0gdC0+Y291bnQpIHsKICAgICAgICAgLyoKLSAgICAgICAgICogVGFibGUgaXMgZnVsbCwgc28gZXh0ZW5kIGl0IHRvIGRvdWJsZSB0aGUgc2l6ZQorICAgICAgICAgKiBUYWJsZSBpcyBmdWxsLCBzbyBleHRlbmQgaXQgdG8gZG91YmxlIHRoZSBzaXplLCBvciB1c2UgMTAgZWxlbWVudHMKKyAgICAgICAgICogaWYgaXQgaXMgZW1wdHkuCiAgICAgICAgICAqLwotICAgICAgICBuZXdfbWF4ID0gMiAqIHQtPm1heF9zaXplOwotICAgICAgICBpZiAobmV3X21heCA9PSAwKQotICAgICAgICAgICAgbmV3X21heCA9IDEwOyAgICAgICAvKiBTdGFydCB3aXRoIDEwIGVudHJpZXMgKi8KKyAgICAgICAgc2l6ZV90IGNvbnN0IG5ld19tYXggPSB0LT5tYXhfc2l6ZSA+IDAgPyAyICogdC0+bWF4X3NpemUgOiAxMDsKKyAgICAgICAgdm9pZCAqKiBjb25zdCBuZXdfZGF0YSA9CisgICAgICAgICAgICAodm9pZCoqKSByZWFsbG9jKHQtPmRhdGEsIG5ld19tYXggKiBzaXplb2Yodm9pZCopKTsKIAotICAgICAgICBuZXdfc2l6ZSA9IG5ld19tYXggKiB0LT5kYXRhX3NpemU7Ci0gICAgICAgIG5ld19kYXRhID0gKGNoYXIgKikgcmVhbGxvYyh0LT5kYXRhLCBuZXdfc2l6ZSk7CiAgICAgICAgIGlmIChuZXdfZGF0YSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGludCBvbGRfc2l6ZSA9IHQtPm1heF9zaXplICogdC0+ZGF0YV9zaXplOwotICAgICAgICAgICAgaW50IGNvdW50ID0gbmV3X3NpemUgLSBvbGRfc2l6ZTsKLSAgICAgICAgICAgIG1lbXNldCgmbmV3X2RhdGFbb2xkX3NpemVdLCAweDAsIGNvdW50KTsKLSAgICAgICAgfQotICAgICAgICB0LT5kYXRhID0gKHZvaWQqKiluZXdfZGF0YTsKKworICAgICAgICBtZW1zZXQobmV3X2RhdGEgKyB0LT5tYXhfc2l6ZSwgMHgwLAorICAgICAgICAgICAgICAgKG5ld19tYXggLSB0LT5tYXhfc2l6ZSkgKiBzaXplb2Yodm9pZCopKTsKKworICAgICAgICB0LT5kYXRhID0gbmV3X2RhdGE7CiAgICAgICAgIHQtPm1heF9zaXplID0gbmV3X21heDsKICAgICB9CiAKQEAgLTUzMiw5ICs1MjMsOSBAQAogICAgIH0KIAogICAgICpsZW4gPSBlbmQgLSBzdGFydCArIDE7Ci0gICAgc3Vic2V0ID0gKHZvaWQgKiopbWFsbG9jKCgqbGVuKSAqIHQtPmRhdGFfc2l6ZSk7CisgICAgc3Vic2V0ID0gKHZvaWQgKiopbWFsbG9jKCgqbGVuKSAqIHNpemVvZih2b2lkKikpOwogICAgIGlmIChzdWJzZXQpCi0gICAgICAgIG1lbWNweShzdWJzZXQsICZ0LT5kYXRhW3N0YXJ0XSwgdC0+ZGF0YV9zaXplICogKCpsZW4pKTsKKyAgICAgICAgbWVtY3B5KHN1YnNldCwgJnQtPmRhdGFbc3RhcnRdLCBzaXplb2Yodm9pZCopICogKCpsZW4pKTsKIAogICAgIHJldHVybiBzdWJzZXQ7CiB9CkBAIC02NTcsMjAgKzY0OCwxOSBAQAogICAgIGR1cHQtPm1heF9zaXplID0gdC0+bWF4X3NpemU7CiAgICAgZHVwdC0+Y291bnQgPSB0LT5jb3VudDsKICAgICBkdXB0LT5kaXJ0eSA9IHQtPmRpcnR5OwotICAgIGR1cHQtPmRhdGFfc2l6ZSA9IHQtPmRhdGFfc2l6ZTsKIAogICAgIC8qCiAgICAgICogc2hhbGxvdyBjb3B5CiAgICAgICovCi0gICAgZHVwdC0+ZGF0YSA9ICh2b2lkKiopIGNhbGxvYyhkdXB0LT5tYXhfc2l6ZSwgZHVwdC0+ZGF0YV9zaXplKTsKKyAgICBkdXB0LT5kYXRhID0gKHZvaWQqKikgbWFsbG9jKGR1cHQtPm1heF9zaXplICogc2l6ZW9mKHZvaWQqKSk7CiAgICAgaWYgKE5VTEwgPT0gZHVwdC0+ZGF0YSkgewogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibm8gbWVtb3J5IGZvciBiaW5hcnkgYXJyYXkgZHVwbGljYXRlXG4iKTsKICAgICAgICAgbmV0c25tcF9iaW5hcnlfYXJyYXlfcmVsZWFzZShkdXApOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBtZW1jcHkoZHVwdC0+ZGF0YSwgdC0+ZGF0YSwgZHVwdC0+bWF4X3NpemUgKiBkdXB0LT5kYXRhX3NpemUpOwotICAgIAorICAgIG1lbWNweShkdXB0LT5kYXRhLCB0LT5kYXRhLCBkdXB0LT5tYXhfc2l6ZSAqIHNpemVvZih2b2lkKikpOworCiAgICAgcmV0dXJuIGR1cDsKIH0KIApkaWZmIC0tZ2l0IGEvc25tcGxpYi9jb250YWluZXJfaXRlcmF0b3IuYyBiL3NubXBsaWIvY29udGFpbmVyX2l0ZXJhdG9yLmMKaW5kZXggZTI2ZDk5ZS4uNDFiMTRmZiAxMDA2NDQKLS0tIGEvc25tcGxpYi9jb250YWluZXJfaXRlcmF0b3IuYworKysgYi9zbm1wbGliL2NvbnRhaW5lcl9pdGVyYXRvci5jCkBAIC00LDYgKzQsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpZiBIQVZFX1NURExJQl9ICkBAIC0yOCw2ICsyOSw5IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY29udGFpbmVyX2l0ZXJhdG9yLCBjb250YWluZXJfdHlwZXMpCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfSVRFUkFUT1IKIC8qKgogICogIEhvbGRzIGl0ZXJhdG9yIGluZm9ybWF0aW9uIGNvbnRhaW5pbmcgZnVuY3Rpb25zIHdoaWNoIHNob3VsZCBiZSBjYWxsZWQKICAqICBieSB0aGUgaXRlcmF0b3JfaGFuZGxlciB0byBsb29wIG92ZXIgeW91ciBkYXRhIHNldCBhbmQgc29ydCBpdCBpbiBhCkBAIC01MDQsMyArNTA4LDYgQEAKICAgICBpaS0+cmVtb3ZlX2RhdGEgPSByZW1vdmVfZGF0YTsKICAgICBpaS0+Z2V0X3NpemUgPSBnZXRfc2l6ZTsKIH0KKyNlbHNlICAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9JVEVSQVRPUiAqLworbmV0c25tcF9mZWF0dXJlX3VudXNlZChjb250YWluZXJfaXRlcmF0b3IpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0lURVJBVE9SICovCmRpZmYgLS1naXQgYS9zbm1wbGliL2NvbnRhaW5lcl9saXN0X3NzbGwuYyBiL3NubXBsaWIvY29udGFpbmVyX2xpc3Rfc3NsbC5jCmluZGV4IDY1ZTM5NjguLjdmZjAxYzQgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvY29udGFpbmVyX2xpc3Rfc3NsbC5jCisrKyBiL3NubXBsaWIvY29udGFpbmVyX2xpc3Rfc3NsbC5jCkBAIC00LDYgKzQsNyBAQAogICoKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2lmIEhBVkVfU1RETElCX0gKQEAgLTI4LDYgKzI5LDE5IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNvbnRhaW5lcl9saW5rZWRfbGlzdCwgY29udGFpbmVyX3R5cGVzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNvbnRhaW5lcl9maWZvLCBjb250YWluZXJfdHlwZXMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY29udGFpbmVyX2xpZm8sIGNvbnRhaW5lcl90eXBlcykKKworLyogdGhpcyBpcyBhIGZhbmN5IHdheSBvZiBjbGVhbmluZyB1cCBpZmRlZnMgKi8KKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9DT05UQUlORVJfRklGTworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY29udGFpbmVyX2xpbmtlZF9saXN0KQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX0NPTlRBSU5FUl9GSUZPICovCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfQ09OVEFJTkVSX0xJRk8KK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNvbnRhaW5lcl9saW5rZWRfbGlzdCkKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9DT05UQUlORVJfTElGTyAqLworCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0xJTktFRF9MSVNUCiB0eXBlZGVmIHN0cnVjdCBzbF9ub2RlIHsKICAgIHZvaWQgICAgICAgICAgICpkYXRhOwogICAgc3RydWN0IHNsX25vZGUgKm5leHQ7CkBAIC01NTEsMyArNTY1LDYgQEAKIAogICAgIHJldHVybiAobmV0c25tcF9pdGVyYXRvciAqKWl0OwogfQorI2Vsc2UgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfTElOS0VEX0xJU1QgKi8KK25ldHNubXBfZmVhdHVyZV91bnVzZWQoY29udGFpbmVyX2xpbmtlZF9saXN0KTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9MSU5LRURfTElTVCAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9jb250YWluZXJfbnVsbC5jIGIvc25tcGxpYi9jb250YWluZXJfbnVsbC5jCmluZGV4IDA0Y2NhMjEuLjFmNDg3MGUgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvY29udGFpbmVyX251bGwuYworKysgYi9zbm1wbGliL2NvbnRhaW5lcl9udWxsLmMKQEAgLTcsNiArNyw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpZiBIQVZFX0lPX0gKICNpbmNsdWRlIDxpby5oPgpAQCAtMzMsNiArMzQsOCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0Lmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjb250YWluZXJfbnVsbCwgY29udGFpbmVyX3R5cGVzKQorCiAvKiogQGRlZmdyb3VwIG51bGxfY29udGFpbmVyIG51bGxfY29udGFpbmVyCiAgKiAgSGVscHMgeW91IGltcGxlbWVudCBzcGVjaWFsaXplZCBjb250YWluZXJzLgogICogIEBpbmdyb3VwIGNvbnRhaW5lcgpAQCAtNTAsNiArNTMsNyBAQAogICogIEB7CiAgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9OVUxMCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIGNvbnRhaW5lcgpAQCAtMTgwLDUgKzE4NCw4IEBACiAgICAgbmV0c25tcF9jb250YWluZXJfcmVnaXN0ZXIoIm51bGwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX2dldF9udWxsX2ZhY3RvcnkoKSk7CiB9CisjZWxzZSAgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfTlVMTCAqLworbmV0c25tcF9mZWF0dXJlX3VudXNlZChjb250YWluZXJfbnVsbCk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfTlVMTCAqLwogLyoqICBAfSAqLwogCmRpZmYgLS1naXQgYS9zbm1wbGliL2RhdGFfbGlzdC5jIGIvc25tcGxpYi9kYXRhX2xpc3QuYwppbmRleCBjMzc5ZmE2Li41MDVkNGZjIDEwMDY0NAotLS0gYS9zbm1wbGliL2RhdGFfbGlzdC5jCisrKyBiL3NubXBsaWIvZGF0YV9saXN0LmMKQEAgLTQsOCArNCwxNCBAQAogICogJElkJAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoZGF0YV9saXN0X2FsbCwgbGlibmV0c25tcCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGRhdGFfbGlzdF9hZGRfZGF0YSwgZGF0YV9saXN0X2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihkYXRhX2xpc3RfZ2V0X2xpc3Rfbm9kZSwgZGF0YV9saXN0X2FsbCkKKwogLyoqIEBkZWZncm91cCBkYXRhX2xpc3QgZ2VuZXJpYyBsaW5rZWQtbGlzdCBkYXRhIGhhbmRsaW5nIHdpdGggYSBzdHJpbmcgYXMgYSBrZXkuCiAgKiBAaW5ncm91cCBsaWJyYXJ5CiAgKiBAewpAQCAtNjIsOCArNjgsOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBub2RlLT5uYW1lID0gc3RyZHVwKG5hbWUpOwogICAgIGlmICghbm9kZS0+bmFtZSkgewotICAgICAgZnJlZShub2RlKTsKLSAgICAgIHJldHVybiBOVUxMOworICAgICAgICBmcmVlKG5vZGUpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgbm9kZS0+ZGF0YSA9IGRhdGE7CiAgICAgbm9kZS0+ZnJlZV9mdW5jID0gYmVlcjsKQEAgLTEzMSw2ICsxMzcsNyBAQAogICogQHBhcmFtIGJlZXIgQSBmdW5jdGlvbiB0aGF0IGNhbiBmcmVlIHRoZSBkYXRhIHBvaW50ZXIgKGluIHRoZSBmdXR1cmUpCiAgKiBAcmV0dXJuIGEgbmV3bHkgY3JlYXRlZCBkYXRhX2xpc3Qgbm9kZSB3aGljaCB3YXMgaW5zZXJ0ZWQgaW4gdGhlIGxpc3QKICAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0RBVEFfTElTVF9BRERfREFUQQogTkVUU05NUF9JTkxJTkUgbmV0c25tcF9kYXRhX2xpc3QgKgogbmV0c25tcF9kYXRhX2xpc3RfYWRkX2RhdGEobmV0c25tcF9kYXRhX2xpc3QgKipoZWFkLCBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSwgTmV0c25tcF9GcmVlX0xpc3RfRGF0YSAqIGJlZXIpCkBAIC0xNTAsNiArMTU3LDcgQEAKIAogICAgIHJldHVybiBub2RlOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfREFUQV9MSVNUX0FERF9EQVRBICovCiAKIC8qKiByZXR1cm5zIGEgZGF0YV9saXN0IG5vZGUncyBkYXRhIGZvciBhIGdpdmVuIG5hbWUgd2l0aGluIGEgZGF0YV9saXN0CiAgKiBAcGFyYW0gaGVhZCB0aGUgaGVhZCBub2RlIG9mIGEgZGF0YV9saXN0CkBAIC0xNzQsNiArMTgyLDcgQEAKICAqIEBwYXJhbSBuYW1lIHRoZSBuYW1lIHRvIGZpbmQKICAqIEByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBkYXRhX2xpc3Qgbm9kZQogICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfREFUQV9MSVNUX0dFVF9MSVNUX05PREUKIE5FVFNOTVBfSU5MSU5FIG5ldHNubXBfZGF0YV9saXN0ICAgICoKIG5ldHNubXBfZ2V0X2xpc3Rfbm9kZShuZXRzbm1wX2RhdGFfbGlzdCAqaGVhZCwgY29uc3QgY2hhciAqbmFtZSkKIHsKQEAgLTE4Niw2ICsxOTUsNyBAQAogICAgICAgICByZXR1cm4gaGVhZDsKICAgICByZXR1cm4gTlVMTDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0RBVEFfTElTVF9HRVRfTElTVF9OT0RFICovCiAKIC8qKiBSZW1vdmVzIGEgbmFtZWQgbm9kZSBmcm9tIGEgZGF0YV9saXN0IChhbmQgZnJlZXMgaXQpCiAgKiBAcGFyYW0gcmVhbGhlYWQgYSBwb2ludGVyIHRvIHRoZSBoZWFkIG5vZGUgb2YgYSBkYXRhX2xpc3QKZGlmZiAtLWdpdCBhL3NubXBsaWIvZGVmYXVsdF9zdG9yZS5jIGIvc25tcGxpYi9kZWZhdWx0X3N0b3JlLmMKaW5kZXggODNmNGUzNC4uOGRiYzliYyAxMDA2NDQKLS0tIGEvc25tcGxpYi9kZWZhdWx0X3N0b3JlLmMKKysrIGIvc25tcGxpYi9kZWZhdWx0X3N0b3JlLmMKQEAgLTEyNiw2ICsxMjYsNyBAQAogICogIEB7CiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2lmIEhBVkVfU1RETElCX0gKICNpbmNsdWRlIDxzdGRsaWIuaD4KQEAgLTE1Nyw2ICsxNTgsMTQgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGRlZmF1bHRfc3RvcmVfYWxsLCBsaWJuZXRzbm1wKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoZGVmYXVsdF9zdG9yZV92b2lkLCBkZWZhdWx0X3N0b3JlX2FsbCkKKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0RFRkFVTFRfU1RPUkVfVk9JRAorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfREVGQVVMVF9TVE9SRV9WT0lEICovCisKKwogc3RhdGljIGNvbnN0IGNoYXIgKiBzdG9yZXMgW05FVFNOTVBfRFNfTUFYX0lEU10gPSB7ICJMSUIiLCAiQVBQIiwgIlRPSyIgfTsKIAogdHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9kc19yZWFkX2NvbmZpZ19zIHsKQEAgLTE3Myw3ICsxODIsOSBAQAogc3RhdGljIGludCAgIG5ldHNubXBfZHNfaW50ZWdlcnNbTkVUU05NUF9EU19NQVhfSURTXVtORVRTTk1QX0RTX01BWF9TVUJJRFNdOwogc3RhdGljIGNoYXIgIG5ldHNubXBfZHNfYm9vbGVhbnNbTkVUU05NUF9EU19NQVhfSURTXVtORVRTTk1QX0RTX01BWF9TVUJJRFMvOF07CiBzdGF0aWMgY2hhciAqbmV0c25tcF9kc19zdHJpbmdzW05FVFNOTVBfRFNfTUFYX0lEU11bTkVUU05NUF9EU19NQVhfU1VCSURTXTsKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ERUZBVUxUX1NUT1JFX1ZPSUQKIHN0YXRpYyB2b2lkICpuZXRzbm1wX2RzX3ZvaWRzW05FVFNOTVBfRFNfTUFYX0lEU11bTkVUU05NUF9EU19NQVhfU1VCSURTXTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0RFRkFVTFRfU1RPUkVfVk9JRCAqLwogCiAvKgogICogUHJvdG90eXBlIGRlZmluaXRpb25zIApAQCAtMzEzLDYgKzMyNCw3IEBACiAgICAgcmV0dXJuIG5ldHNubXBfZHNfc3RyaW5nc1tzdG9yZWlkXVt3aGljaF07CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ERUZBVUxUX1NUT1JFX1ZPSUQKIGludAogbmV0c25tcF9kc19zZXRfdm9pZChpbnQgc3RvcmVpZCwgaW50IHdoaWNoLCB2b2lkICp2YWx1ZSkKIHsKQEAgLTMzOSw2ICszNTEsNyBAQAogCiAgICAgcmV0dXJuIG5ldHNubXBfZHNfdm9pZHNbc3RvcmVpZF1bd2hpY2hdOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfREVGQVVMVF9TVE9SRV9WT0lEICovCiAKIGludAogbmV0c25tcF9kc19wYXJzZV9ib29sZWFuKGNoYXIgKmxpbmUpCmRpZmYgLS1naXQgYS9zbm1wbGliL2Rpcl91dGlscy5jIGIvc25tcGxpYi9kaXJfdXRpbHMuYwppbmRleCBhOTc1MDVkLi5kMzVlNzAwIDEwMDY0NAotLS0gYS9zbm1wbGliL2Rpcl91dGlscy5jCisrKyBiL3NubXBsaWIvZGlyX3V0aWxzLmMKQEAgLTksNiArOSw3IEBACiAgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTQ3LDYgKzQ4LDEzIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9maWxlX3V0aWxzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9kaXJfdXRpbHMuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNvbnRhaW5lcl9kaXJlY3RvcnksIGNvbnRhaW5lcl90eXBlcykKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9DT05UQUlORVJfRElSRUNUT1JZCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShmaWxlX3V0aWxzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY29udGFpbmVyX2ZyZWVfYWxsKQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX0NPTlRBSU5FUl9ESVJFQ1RPUlkgKi8KKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9ESVJFQ1RPUlkKIHN0YXRpYyBpbnQKIF9pbnNlcnRfbnNmaWxlKCBuZXRzbm1wX2NvbnRhaW5lciAqYywgY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHN0YXQgKnN0YXRzLAogICAgICAgICAgICAgICAgIHVfaW50IGZsYWdzKTsKQEAgLTIyOSwxMCArMjM3LDEzIEBACiAgICAgICAgIH0KICAgICAKICAgICAgICAgLyoqIHVzZSBzdGF0cyBmcm9tIGVhcmxpZXIgaWYgd2UgaGF2ZSB0aGVtICovCi0gICAgICAgIGlmIChzdGF0cykKKyAgICAgICAgaWYgKHN0YXRzKSB7CiAgICAgICAgICAgICBtZW1jcHkobnNfZmlsZS0+c3RhdHMsIHN0YXRzLCBzaXplb2YoKnN0YXRzKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0YXQobnNfZmlsZS0+bmFtZSwgbnNfZmlsZS0+c3RhdHMpOworICAgICAgICB9IGVsc2UgaWYgKHN0YXQobnNfZmlsZS0+bmFtZSwgbnNfZmlsZS0+c3RhdHMpIDwgMCkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInN0YXQoKSBmYWlsZWQgZm9yIG5zX2ZpbGVcbiIpOworICAgICAgICAgICAgbmV0c25tcF9maWxlX3JlbGVhc2UobnNfZmlsZSk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KICAgICB9CiAKICAgICByYyA9IENPTlRBSU5FUl9JTlNFUlQoYywgbnNfZmlsZSk7CkBAIC0yNDMsMyArMjU0LDYgQEAKIAogICAgIHJldHVybiAwOwogfQorI2Vsc2UgIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0RJUkVDVE9SWSAqLworbmV0c25tcF9mZWF0dXJlX3VudXNlZChjb250YWluZXJfZGlyZWN0b3J5KTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9ESVJFQ1RPUlkgKi8KZGlmZiAtLWdpdCBhL3NubXBsaWIvZmRfZXZlbnRfbWFuYWdlci5jIGIvc25tcGxpYi9mZF9ldmVudF9tYW5hZ2VyLmMKaW5kZXggMjA0NTRmNy4uZjljZjA4ZSAxMDA2NDQKLS0tIGEvc25tcGxpYi9mZF9ldmVudF9tYW5hZ2VyLmMKKysrIGIvc25tcGxpYi9mZF9ldmVudF9tYW5hZ2VyLmMKQEAgLTQsMTIgKzQsMTUgQEAKICNpbmNsdWRlIDxzeXMvc2VsZWN0Lmg+CiAjZW5kaWYKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGZkX2V2ZW50X21hbmFnZXIsIGxpYm5ldHNubXApCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9GRF9FVkVOVF9NQU5BR0VSCiBpbnQgICAgIGV4dGVybmFsX3JlYWRmZFtOVU1fRVhURVJOQUxfRkRTXSwgICBleHRlcm5hbF9yZWFkZmRsZW4gICA9IDA7CiBpbnQgICAgIGV4dGVybmFsX3dyaXRlZmRbTlVNX0VYVEVSTkFMX0ZEU10sICBleHRlcm5hbF93cml0ZWZkbGVuICA9IDA7CiBpbnQgICAgIGV4dGVybmFsX2V4Y2VwdGZkW05VTV9FWFRFUk5BTF9GRFNdLCBleHRlcm5hbF9leGNlcHRmZGxlbiA9IDA7CkBAIC0yODksMyArMjkyLDYgQEAKICAgICAgIH0KICAgfQogfQorI2Vsc2UgIC8qICAhTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9GRF9FVkVOVF9NQU5BR0VSICovCituZXRzbm1wX2ZlYXR1cmVfdW51c2VkKGZkX2V2ZW50X21hbmFnZXIpOworI2VuZGlmIC8qICAhTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9GRF9FVkVOVF9NQU5BR0VSICovCmRpZmYgLS1naXQgYS9zbm1wbGliL2ZpbGVfdXRpbHMuYyBiL3NubXBsaWIvZmlsZV91dGlscy5jCmluZGV4IDg4OWQ1NTIuLjUyNjE0MzEgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvZmlsZV91dGlscy5jCisrKyBiL3NubXBsaWIvZmlsZV91dGlscy5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0zNyw3ICszOCwxMSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9maWxlX3V0aWxzLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihmaWxlX3V0aWxzX2FsbCwgbGlibmV0c25tcCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihmaWxlX3V0aWxzLCBmaWxlX3V0aWxzX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihmaWxlX2Nsb3NlLCBmaWxlX3V0aWxzX2FsbCkKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZJTEVfVVRJTFMKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgogICogUHJvdG90eXBlcwpAQCAtMjA2LDYgKzIxMSw3IEBACiAgKiBAcmV0dmFsICAwIDogc3VjY2VzcwogICogQHJldHZhbCAtMSA6IGVycm9yCiAgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9GSUxFX0NMT1NFCiBpbnQKIG5ldHNubXBfZmlsZV9jbG9zZShuZXRzbm1wX2ZpbGUgKiBmaWxlaSkKIHsKQEAgLTIzNiw2ICsyNDIsNyBAQAogCiAgICAgcmV0dXJuIHJjOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRklMRV9DTE9TRSAqLwogCiB2b2lkCiBuZXRzbm1wX2ZpbGVfY29udGFpbmVyX2ZyZWUobmV0c25tcF9maWxlICpmaWxlLCB2b2lkICpjb250ZXh0KQpAQCAtMjUxLDMgKzI1OCw2IEBACiAKICAgICByZXR1cm4gc3RyY21wKGxocy0+bmFtZSwgcmhzLT5uYW1lKTsKIH0KKyNlbHNlIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRklMRV9VVElMUyAqLworbmV0c25tcF9mZWF0dXJlX3VudXNlZChmaWxlX3V0aWxzKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZJTEVfVVRJTFMgKi8KZGlmZiAtLWdpdCBhL3NubXBsaWIvZ2V0dGltZW9mZGF5LmMgYi9zbm1wbGliL2dldHRpbWVvZmRheS5jCmluZGV4IDNjNzVkM2EuLmRmNWMwYTAgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvZ2V0dGltZW9mZGF5LmMKKysrIGIvc25tcGxpYi9nZXR0aW1lb2ZkYXkuYwpAQCAtMjgsNiArMjgsNiBAQAogCiAgICAgX2Z0aW1lKCZ0aW1lYnVmZmVyKTsKICAgICB0di0+dHZfdXNlYyA9IHRpbWVidWZmZXIubWlsbGl0bSAqIDEwMDA7Ci0gICAgdHYtPnR2X3NlYyA9IHRpbWVidWZmZXIudGltZTsKKyAgICB0di0+dHZfc2VjID0gKGxvbmcpdGltZWJ1ZmZlci50aW1lOwogICAgIHJldHVybiAoMCk7CiB9CmRpZmYgLS1naXQgYS9zbm1wbGliL2ludDY0LmMgYi9zbm1wbGliL2ludDY0LmMKaW5kZXggMmQ4Njk1OS4uNTFmMWYzMiAxMDA2NDQKLS0tIGEvc25tcGxpYi9pbnQ2NC5jCisrKyBiL3NubXBsaWIvaW50NjQuYwpAQCAtMjMsNiArMjMsOCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgorCiAvKioKICAqIERpdmlkZSBhbiB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciBieSAxMC4KICAqCkBAIC0xOTcsNiArMTk5LDggQEAKICAgICB1NjRJbmNyKHB1NjRvdXQsICZ0bXApOwogfQogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodTY0Y29weSwgbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVTY0Q09QWQogLyoqCiAgKiBDb3B5IGEgNjQtYml0IG51bWJlci4KICAqCkBAIC0yMDgsNiArMjEyLDcgQEAKIHsKICAgICAqcHU2NG9uZSA9ICpwdTY0dHdvOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVTY0Q09QWSAqLwogCiAvKioKICAqIFNldCBhbiB1bnNpZ25lZCA2NC1iaXQgbnVtYmVyIHRvIHplcm8uCmRpZmYgLS1naXQgYS9zbm1wbGliL2tleXRvb2xzLmMgYi9zbm1wbGliL2tleXRvb2xzLmMKaW5kZXggYzFkYmNkNi4uMGNjYjNhNiAxMDA2NDQKLS0tIGEvc25tcGxpYi9rZXl0b29scy5jCisrKyBiL3NubXBsaWIva2V5dG9vbHMuYwpAQCAtMTQsNiArMTQsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KQEAgLTYyLDYgKzYzLDExIEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1c21fc3VwcG9ydCwgbGlibmV0c25tcCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1c21fa2V5dG9vbHMsIHVzbV9zdXBwb3J0KQorCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVVNNX0tFWVRPT0xTCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLW8tKioqKioqCiAgKiBnZW5lcmF0ZV9LdQogICoKQEAgLTY1Myw4ICs2NTksNyBAQAogICAgICAgICAgICAgbWVtc2V0KG5ld2tleSwgMCwgcHJvcGVybGVuZ3RoKTsKICAgICB9CiAgICAgbWVtc2V0KHRtcF9idWYsIDAsIFNOTVBfTUFYQlVGKTsKLSAgICBpZiAodG1wYnVmICE9IE5VTEwpCi0gICAgICAgIFNOTVBfRlJFRSh0bXBidWYpOworICAgIFNOTVBfRlJFRSh0bXBidWYpOwogCiAgICAgcmV0dXJuIHJ2YWw7CiAKQEAgLTY2MywzICs2NjgsNCBAQAogI2Vsc2UKIF9LRVlUT09MU19OT1RfQVZBSUxBQkxFCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGludGVybmFsIG9yIG9wZW5zc2wgKi8KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VTTV9LRVlUT09MUyAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9sYXJnZV9mZF9zZXQuYyBiL3NubXBsaWIvbGFyZ2VfZmRfc2V0LmMKaW5kZXggM2I4YjRhNC4uMzJmNTdiMyAxMDA2NDQKLS0tIGEvc25tcGxpYi9sYXJnZV9mZF9zZXQuYworKysgYi9zbm1wbGliL2xhcmdlX2ZkX3NldC5jCkBAIC0xMjEsMTAgKzEyMSwxMCBAQAogfQogCiBpbnQKLW5ldF9zbm1wX2xhcmdlX2ZkX3NldF9zZWxlY3QoaW50IG51bWZkcywgbmV0c25tcF9sYXJnZV9mZF9zZXQgKnJlYWRmZHMsCi0gICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgKndyaXRlZmRzLAotICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpleGNlcHRmZHMsCi0gICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV2YWwgKnRpbWVvdXQpCituZXRzbm1wX2xhcmdlX2ZkX3NldF9zZWxlY3QoaW50IG51bWZkcywgbmV0c25tcF9sYXJnZV9mZF9zZXQgKnJlYWRmZHMsCisgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqd3JpdGVmZHMsCisgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqZXhjZXB0ZmRzLAorICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV2YWwgKnRpbWVvdXQpCiB7CiAjaWYgZGVmaW5lZChjeWd3aW4pIHx8ICFkZWZpbmVkKEhBVkVfV0lOU09DS19IKQogICAgIC8qIEJpdC1zZXQgcmVwcmVzZW50YXRpb246IG1ha2Ugc3VyZSBhbGwgZmRzIGhhdmUgYXQgbGVhc3Qgc2l6ZSAnbnVtZmRzJy4gKi8KZGlmZiAtLWdpdCBhL3NubXBsaWIvbGNkX3RpbWUuYyBiL3NubXBsaWIvbGNkX3RpbWUuYwppbmRleCAyMjIyOTA0Li4yYmZhNTQ5IDEwMDY0NAotLS0gYS9zbm1wbGliL2xjZF90aW1lLmMKKysrIGIvc25tcGxpYi9sY2RfdGltZS5jCkBAIC02LDYgKzYsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTUyLDYgKzUzLDExIEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1c21fc3VwcG9ydCwgbGlibmV0c25tcCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1c21fbGNkX3RpbWUsIHVzbV9zdXBwb3J0KQorCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVVNNX0xDRF9USU1FCisKIC8qCiAgKiBHbG9iYWwgc3RhdGljIGhhc2hsaXN0IHRvIGNvbnRhaW4gRW5naW5ldGltZSBlbnRyaWVzLgogICoKQEAgLTk0LDcgKzEwMCw3IEBACiAgICAgICAgICAgICAgICB1X2ludCAqIGVuZ2luZV90aW1lLCB1X2ludCBhdXRoZW50aWNhdGVkKQogewogICAgIGludCAgICAgICAgICAgICBydmFsID0gU05NUEVSUl9TVUNDRVNTOwotICAgIHRpbWVfdCAgICAgICAgICB0aW1lZGlmZiA9IDA7CisgICAgaW50ICAgICAgICAgICAgIHRpbWVkaWZmID0gMDsKICAgICBFbmdpbmV0aW1lICAgICAgZSA9IE5VTEw7CiAKIApAQCAtMTI2LDcgKzEzMiw3IEBACiAgICAgICAgICplbmdpbmVfdGltZSA9IGUtPmVuZ2luZVRpbWU7CiAgICAgICAgICplbmdpbmVib290ID0gZS0+ZW5naW5lQm9vdDsKIAotICAgICAgIHRpbWVkaWZmID0gc25tcHYzX2xvY2FsX3NubXBFbmdpbmVUaW1lKCkgLSBlLT5sYXN0UmVjZWl2ZWRFbmdpbmVUaW1lOworICAgICAgIHRpbWVkaWZmID0gKGludCkgKHNubXB2M19sb2NhbF9zbm1wRW5naW5lVGltZSgpIC0gZS0+bGFzdFJlY2VpdmVkRW5naW5lVGltZSk7CiAKICNpZmRlZiBMQ0RfVElNRV9TWU5DX09QVAogICAgIH0KQEAgLTE5MCw3ICsxOTYsNyBAQAogICAgICAgICAgICAgICAgICAgdV9pbnQgKiBsYXN0X2VuZ2luZV90aW1lLCB1X2ludCBhdXRoZW50aWNhdGVkKQogewogICAgIGludCAgICAgICAgICAgICBydmFsID0gU05NUEVSUl9TVUNDRVNTOwotICAgIHRpbWVfdCAgICAgICAgICB0aW1lZGlmZiA9IDA7CisgICAgaW50ICAgICAgICAgICAgIHRpbWVkaWZmID0gMDsKICAgICBFbmdpbmV0aW1lICAgICAgZSA9IE5VTEw7CiAKIApAQCAtMjIyLDcgKzIyOCw3IEBACiAgICAgICAgICpsYXN0X2VuZ2luZV90aW1lID0gKmVuZ2luZV90aW1lID0gZS0+ZW5naW5lVGltZTsKICAgICAgICAgKmVuZ2luZWJvb3QgPSBlLT5lbmdpbmVCb290OwogCi0gICAgICAgdGltZWRpZmYgPSBzbm1wdjNfbG9jYWxfc25tcEVuZ2luZVRpbWUoKSAtIGUtPmxhc3RSZWNlaXZlZEVuZ2luZVRpbWU7CisgICAgICAgdGltZWRpZmYgPSAoaW50KSAoc25tcHYzX2xvY2FsX3NubXBFbmdpbmVUaW1lKCkgLSBlLT5sYXN0UmVjZWl2ZWRFbmdpbmVUaW1lKTsKIAogI2lmZGVmIExDRF9USU1FX1NZTkNfT1BUCiAgICAgfQpAQCAtNjA1LDMgKzYxMSw0IEBACiAKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZW5kIGR1bXBfZXRpbWVsaXN0KCkgKi8KICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFICovCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VU01fTENEX1RJTUUgKi8KZGlmZiAtLWdpdCBhL3NubXBsaWIvbWliLmMgYi9zbm1wbGliL21pYi5jCmluZGV4IDY2OGI2ZDIuLjQ2OTM2YzYgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvbWliLmMKKysrIGIvc25tcGxpYi9taWIuYwpAQCAtMzgsNiArMzgsNyBAQAogICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN0eXBlLmg+CkBAIC0xMDQsNiArMTA1LDE5IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG1pYl9hcGksIGxpYm5ldHNubXApCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobWliX3N0cmluZ3NfYWxsLCBtaWJfYXBpKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobWliX3NucHJpbnQsIG1pYl9zdHJpbmdzX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihtaWJfc25wcmludF9kZXNjcmlwdGlvbiwgbWliX3N0cmluZ3NfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG1pYl9zbnByaW50X3ZhcmlhYmxlLCBtaWJfc3RyaW5nc19hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobWliX3N0cmluZ19jb252ZXJzaW9ucywgbWliX3N0cmluZ3NfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHByaW50X21pYiwgbWliX3N0cmluZ3NfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNucHJpbnRfb2JqaWQsIG1pYl9zdHJpbmdzX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzbnByaW50X3ZhbHVlLCBtaWJfc3RyaW5nc19hbGwpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihtaWJfdG9fYXNuX3R5cGUsIG1pYl9hcGkpCisKIC8qKiBAZGVmZ3JvdXAgbWliX3V0aWxpdGllcyBtaWIgcGFyc2luZyBhbmQgZGF0YXR5cGUgbWFuaXB1bGF0aW9uIHJvdXRpbmVzLgogICogIEBpbmdyb3VwIGxpYnJhcnkKICAqCkBAIC0yODc5LDcgKzI4OTMsNiBAQAogICAgICAgICBpZiAodHJlZV90b3AtPmxhYmVsKQogICAgICAgICAgICAgU05NUF9GUkVFKHRyZWVfdG9wLT5sYWJlbCk7CiAgICAgICAgIFNOTVBfRlJFRSh0cmVlX3RvcCk7Ci0gICAgICAgIHRyZWVfdG9wID0gTlVMTDsKICAgICB9CiAgICAgdHJlZV9oZWFkID0gTlVMTDsKICAgICBNaWIgPSBOVUxMOwpAQCAtMjkwNSwxMSArMjkxOCwxMyBAQAogICoKICAqIEBwYXJhbSBmcCAgIFRoZSBmaWxlIGRlc2NyaXB0b3IgdG8gcHJpbnQgdG8uCiAgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9QUklOVF9NSUIKIHZvaWQKIHByaW50X21pYihGSUxFICogZnApCiB7CiAgICAgcHJpbnRfc3VidHJlZShmcCwgdHJlZV9oZWFkLCAwKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1BSSU5UX01JQiAqLwogCiB2b2lkCiBwcmludF9hc2NpaV9kdW1wKEZJTEUgKiBmcCkKQEAgLTMyOTAsNiArMzMwNSw3IEBACiAgICAgcmV0dXJuICFidWZfb3ZlcmZsb3c7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TUFJJTlRfT0JKSUQKIGludAogc25wcmludF9vYmppZChjaGFyICpidWYsIHNpemVfdCBidWZfbGVuLAogICAgICAgICAgICAgICBjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuKQpAQCAtMzMwMyw2ICszMzE5LDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NQUklOVF9PQkpJRCAqLwogCiAvKioKICAqIFByaW50cyBhbiBvaWQgdG8gc3Rkb3V0LgpAQCAtMzQ0MCw2ICszNDU3LDcgQEAKICAgICB9CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTlBSSU5UX1ZBUkFCTEUKIGludAogc25wcmludF92YXJpYWJsZShjaGFyICpidWYsIHNpemVfdCBidWZfbGVuLAogICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLApAQCAtMzQ1NCw2ICszNDcyLDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOUFJJTlRfVkFSQUJMRSAqLwogCiAvKioKICAqIFByaW50cyBhIHZhcmlhYmxlIHRvIHN0ZG91dC4KQEAgLTM1NDgsNiArMzU2Nyw4IEBACiAgICAgfQogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05QUklOVF9WQUxVRQorLyogdXNlZCBpbiB0aGUgcGVybCBtb2R1bGUgKi8KIGludAogc25wcmludF92YWx1ZShjaGFyICpidWYsIHNpemVfdCBidWZfbGVuLAogICAgICAgICAgICAgICBjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLApAQCAtMzU2Miw2ICszNTgzLDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOUFJJTlRfVkFMVUUgKi8KIAogdm9pZAogcHJpbnRfdmFsdWUoY29uc3Qgb2lkICogb2JqaWQsCkBAIC00NjQ5LDYgKzQ2NzEsNyBAQAogICAgIFNOTVBfRlJFRShidWYpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTUlCX1NOUFJJTlRfREVTQ1JJUFRJT04KIGludAogc25wcmludF9kZXNjcmlwdGlvbihjaGFyICpidWYsIHNpemVfdCBidWZfbGVuLAogICAgICAgICAgICAgICAgICAgICBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLCBpbnQgd2lkdGgpCkBAIC00NjYyLDYgKzQ2ODUsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTUlCX1NOUFJJTlRfREVTQ1JJUFRJT04gKi8KIAogaW50CiBzcHJpbnRfcmVhbGxvY19kZXNjcmlwdGlvbih1X2NoYXIgKiogYnVmLCBzaXplX3QgKiBidWZfbGVuLApAQCAtNTk3Nyw3ICs2MDAxLDYgQEAKIAogLyoqCiAgKiBDb252ZXJ0cyB0aW1ldGlja3MgdG8gaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMgc3RyaW5nLgotICogQ01VIGNvbXBhdGlibGUgZG9lcyBub3Qgc2hvdyBjZW50aXNlY29uZHMuCiAgKgogICogQHBhcmFtIHRpbWV0aWNrcyAgICBUaGUgdGltZXRpY2tzIHRvIGNvbnZlcnQuCiAgKiBAcGFyYW0gYnVmICAgICAgICAgIEJ1ZmZlciB0byB3cml0ZSB0bywgaGFzIHRvIGJlIGF0IApAQCAtNTk5NywxMyArNjAyMCw2IEBACiB1cHRpbWVfc3RyaW5nX24odV9sb25nIHRpbWV0aWNrcywgY2hhciAqYnVmLCBzaXplX3QgYnVmbGVuKQogewogICAgIHVwdGltZVN0cmluZyh0aW1ldGlja3MsIGJ1ZiwgYnVmbGVuKTsKLSNpZmRlZiBDTVVfQ09NUEFUSUJMRQotICAgIHsKLSAgICBjaGFyICpjcCA9IHN0cnJjaHIoYnVmLCAnLicpOwotICAgIGlmIChjcCkKLSAgICAgICAgKmNwID0gJ1wwJzsKLSAgICB9Ci0jZW5kaWYKICAgICByZXR1cm4gYnVmOwogfQogCkBAIC02MzU2LDYgKzYzNzIsNyBAQAogCiAjZW5kaWYgLyogdGVzdF9kaXNwbGF5X2hpbnQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX01JQl9UT19BU05fVFlQRQogdV9jaGFyCiBtaWJfdG9fYXNuX3R5cGUoaW50IG1pYl90eXBlKQogewpAQCAtNjQwNSw2ICs2NDIyLDcgQEAKICAgICB9CiAgICAgcmV0dXJuIC0xOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTUlCX1RPX0FTTl9UWVBFICovCiAKIC8qKgogICogQ29udmVydHMgYSBzdHJpbmcgdG8gaXRzIE9JRCBmb3JtLgpAQCAtNjQxNiw2ICs2NDM0LDcgQEAKICAqCiAgKiBAcmV0dXJuIDAgb24gU3VjZXNzLCAxIG9uIGZhaWx1cmUuCiAgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NSUJfU1RSSU5HX0NPTlZFUlNJT05TCiBpbnQKIG5ldHNubXBfc3RyMm9pZChjb25zdCBjaGFyICpTLCBvaWQgKiBPLCBpbnQgTCkKIHsKQEAgLTY0OTUsNyArNjUxNCwxMCBAQAogCiAgICAgcmV0dXJuIDA7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NSUJfU1RSSU5HX0NPTlZFUlNJT05TICovCiAKKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX01JQl9TTlBSSU5UCiBpbnQKIHNucHJpbnRfYnlfdHlwZShjaGFyICpidWYsIHNpemVfdCBidWZfbGVuLAogICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhciwKQEAgLTY3NzMsNSArNjc5NSw2IEBACiAgICAgICAgIHJldHVybiAtMTsKIH0KICNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTUlCX1NOUFJJTlQgKi8KIC8qKiBAfSAqLwogCmRpZmYgLS1naXQgYS9zbm1wbGliL29pZF9zdGFzaC5jIGIvc25tcGxpYi9vaWRfc3Rhc2guYwppbmRleCA4NjBhYmFiLi44YTc5ODk3IDEwMDY0NAotLS0gYS9zbm1wbGliL29pZF9zdGFzaC5jCisrKyBiL3NubXBsaWIvb2lkX3N0YXNoLmMKQEAgLTUsOCArNSwxNSBAQAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yob2lkX3N0YXNoX2FsbCwgbGlibmV0c25tcCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihvaWRfc3Rhc2gsIG9pZF9zdGFzaF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yob2lkX3N0YXNoX25vX2ZyZWUsIG9pZF9zdGFzaF9hbGwpCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9PSURfU1RBU0gKKwogLyoqIEBkZWZncm91cCBvaWRfc3Rhc2ggU3RvcmUgYW5kIHJldHJpZXZlIGRhdGEgcmVmZXJlbmNlZCBieSBhbiBPSUQuCiAgICAgVGhpcyBpcyBlc3NlbnRpYWxseSBhIHdheSBvZiBzdG9yaW5nIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4KICAgICBPSUQuICBJdCBzdG9yZXMgYSBidW5jaCBvZiBkYXRhIHBvaW50ZXJzIHdpdGhpbiBhIG1lbW9yeSB0cmVlIHRoYXQKQEAgLTY4LDYgKzc1LDggQEAKICAgICByZXR1cm4gbmV0c25tcF9vaWRfc3Rhc2hfY3JlYXRlX3NpemVkX25vZGUoT0lEX1NUQVNIX0NISUxEUkVOX1NJWkUpOwogfQogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yob2lkX3N0YXNoX2FkZF9kYXRhLCBvaWRfc3Rhc2hfYWxsKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX09JRF9TVEFTSF9BRERfREFUQQogLyoqIGFkZHMgZGF0YSB0byB0aGUgc3Rhc2ggYXQgYSBnaXZlbiBvaWQuCiAKICAqIEBwYXJhbSByb290IHRoZSB0b3Agb2YgdGhlIHN0YXNoIHRyZWUKQEAgLTE0NCw2ICsxNTMsNyBAQAogICAgIHRtcHAtPnRoZWRhdGEgPSBteWRhdGE7CiAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX09JRF9TVEFTSF9BRERfREFUQSAqLwogCiAvKiogcmV0dXJucyBhIG5vZGUgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gT0lELgogICogQHBhcmFtIHJvb3QgdGhlIHRvcCBvZiB0aGUgc3Rhc2ggdHJlZQpAQCAtMTg3LDYgKzE5Nyw4IEBACiAgKiBAcGFyYW0gbG9va3VwIHRoZSBvaWQgdG8gbG9vayB1cCBhIG5vZGUgZm9yLgogICogQHBhcmFtIGxvb2t1cF9sZW4gdGhlIGxlbmd0aCBvZiB0aGUgbG9va3VwIG9pZAogICovCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yob2lkX3N0YXNoX2l0ZXJhdGUsIG9pZF9zdGFzaF9hbGwpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfT0lEX1NUQVNIX0lURVJBVEUKIG5ldHNubXBfb2lkX3N0YXNoX25vZGUgKgogbmV0c25tcF9vaWRfc3Rhc2hfZ2V0bmV4dF9ub2RlKG5ldHNubXBfb2lkX3N0YXNoX25vZGUgKnJvb3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogbG9va3VwLCBzaXplX3QgbG9va3VwX2xlbikKQEAgLTI2OCw3ICsyODAsMTAgQEAKICAgICAvKiBmZWxsIG9mZiB0aGUgdG9wICovCiAgICAgcmV0dXJuIE5VTEw7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9PSURfU1RBU0hfSVRFUkFURSAqLwogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yob2lkX3N0YXNoX2dldF9kYXRhLCBvaWRfc3Rhc2hfYWxsKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX09JRF9TVEFTSF9HRVRfREFUQQogLyoqIHJldHVybnMgYSBkYXRhIHBvaW50ZXIgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gT0lELgogCiAgICAgVGhpcyBpcyBlcXVpdmVsZW50IHRvIG5ldHNubXBfb2lkX3N0YXNoX2dldF9ub2RlLCBidXQgcmV0dXJucyBvbmx5CkBAIC0yODgsNyArMzAzLDEwIEBACiAgICAgICAgIHJldHVybiByZXQtPnRoZWRhdGE7CiAgICAgcmV0dXJuIE5VTEw7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9PSURfU1RBU0hfR0VUX0RBVEEgKi8KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG9pZF9zdGFzaF9zdG9yZV9hbGwsIG9pZF9zdGFzaF9hbGwpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfT0lEX1NUQVNIX1NUT1JFX0FMTAogLyoqIGEgd3JhcHBlciBhcm91bmQgbmV0c25tcF9vaWRfc3Rhc2hfc3RvcmUgZm9yIHVzZSB3aXRoIGEgc25tcF9hbGFybS4KICAqIHdoZW4gY2FsbGluZyBzbm1wX2FsYXJtLCB5b3UgY2FuIGxpc3QgdGhpcyBhcyBhIGNhbGxiYWNrLiAgVGhlCiAgKiBjbGllbnRhcmcgc2hvdWxkIGJlIGEgcG9pbnRlciB0byBhIG5ldHNubXBfb2lkX3N0YXNoX3NhdmVfaW5mbwpAQCAtMzE0LDYgKzMzMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkYmFzZSwwKTsKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX09JRF9TVEFTSF9TVE9SRV9BTEwgKi8KIAogLyoqIHN0b3JlcyBkYXRhIGluIGEgc3RhcnNoIHRyZWUgdG8gcGVyaXN0ZW50IHN0b3JhZ2UuCiAKQEAgLTQyNywxMCArNDQ2LDE2IEBACiAgICAgKnJvb3QgPSBOVUxMOwogfQogCisjZWxzZSAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX09JRF9TVEFTSCAqLworbmV0c25tcF9mZWF0dXJlX3VudXNlZChvaWRfc3Rhc2gpOworI2VuZGlmLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9PSURfU1RBU0ggKi8KKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX09JRF9TVEFTSF9OT19GUkVFCiB2b2lkCiBuZXRzbm1wX29pZF9zdGFzaF9ub19mcmVlKHZvaWQgKmJvZ3VzKQogewogICAgIC8qIG5vb3AgKi8KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX09JRF9TVEFTSF9OT19GUkVFICovCiAKIC8qKiBAfSAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9wYXJzZS5jIGIvc25tcGxpYi9wYXJzZS5jCmluZGV4IDgxN2M4OTcuLjRkNDRkODggMTAwNjQ0Ci0tLSBhL3NubXBsaWIvcGFyc2UuYworKysgYi9zbm1wbGliL3BhcnNlLmMKQEAgLTMzLDYgKzMzLDcgQEAKICAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9NSUJfTE9BRElORwogCkBAIC0xMDYsNiArMTA3LDEwIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9wYXJzZS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvbWliLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaD4KKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGZpbmRfbW9kdWxlLCBtaWJfYXBpKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGdldF90Y19kZXNjcmlwdGlvbiwgbWliX2FwaSkKIAogLyoKICAqIEEgbGlua2VkIGxpc3Qgb2Ygbm9kZXMuCkBAIC01MjksNyArNTM0LDExIEBACiAgKiAjZGVmaW5lIE1PRFVMRV9MT0FEX0ZBSUxFRCAgIDMgICAgICAgCiAgKi8KICNkZWZpbmUgTU9EVUxFX0xPQURfRkFJTEVECU1PRFVMRV9OT1RfRk9VTkQKKyNkZWZpbmUgTU9EVUxFX1NZTlRBWF9FUlJPUiAgICAgNAogCitpbnQgZ01pYkVycm9yID0gMCxnTG9vcCA9IDA7CitjaGFyICpncE1pYkVycm9yU3RyaW5nID0gTlVMTDsKK2NoYXIgZ01pYk5hbWVzW1NUUklOR01BWF07CiAKICNkZWZpbmUgSEFTSFNJWkUgICAgICAgIDMyCiAjZGVmaW5lIEJVQ0tFVCh4KSAgICAgICAoeCAmIChIQVNIU0laRS0xKSkKQEAgLTc3NCwxMSArNzgzLDE0IEBACiAKIHN0YXRpYyBpbnQgICAgICBlcnJvbmVvdXNNaWJzID0gMDsKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHBhcnNlX2dldF9lcnJvcl9jb3VudCwgbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUEFSU0VfR0VUX0VSUk9SX0NPVU5UCiBpbnQKIGdldF9taWJfcGFyc2VfZXJyb3JfY291bnQodm9pZCkKIHsKICAgICByZXR1cm4gZXJyb25lb3VzTWliczsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1BBUlNFX0dFVF9FUlJPUl9DT1VOVCAqLwogCiAKIHN0YXRpYyB2b2lkCkBAIC05MDYsOSArOTE4LDkgQEAKIAogICAgIHVubGlua190YnVja2V0KFRyZWUpOwogICAgIGZyZWVfcGFydGlhbF90cmVlKFRyZWUsIEZBTFNFKTsKLSAgICBpZiAoVHJlZS0+bnVtYmVyX21vZHVsZXMgPiAxKQotICAgICAgICBmcmVlKChjaGFyICopIFRyZWUtPm1vZHVsZV9saXN0KTsKLSAgICBmcmVlKChjaGFyICopIFRyZWUpOworICAgIGlmIChUcmVlLT5tb2R1bGVfbGlzdCAhPSAmVHJlZS0+bW9kaWQpCisgICAgICAgIGZyZWUoVHJlZS0+bW9kdWxlX2xpc3QpOworICAgIGZyZWUoVHJlZSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNTU5LDE1ICsxNTcxLDE0IEBACiAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgKiBVcGRhdGUgbGlzdCBvZiBtb2R1bGVzIAogICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIGludF9wID0KLSAgICAgICAgICAgICAgICAgICAgKGludCAqKSBtYWxsb2MoKHRwLT5udW1iZXJfbW9kdWxlcyArIDEpICogc2l6ZW9mKGludCkpOworICAgICAgICAgICAgICAgIGludF9wID0gbWFsbG9jKCh0cC0+bnVtYmVyX21vZHVsZXMgKyAxKSAqIHNpemVvZihpbnQpKTsKICAgICAgICAgICAgICAgICBpZiAoaW50X3AgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIG1lbWNweShpbnRfcCwgdHAtPm1vZHVsZV9saXN0LAogICAgICAgICAgICAgICAgICAgICAgICB0cC0+bnVtYmVyX21vZHVsZXMgKiBzaXplb2YoaW50KSk7CiAgICAgICAgICAgICAgICAgaW50X3BbdHAtPm51bWJlcl9tb2R1bGVzXSA9IG5wLT5tb2RpZDsKLSAgICAgICAgICAgICAgICBpZiAodHAtPm51bWJlcl9tb2R1bGVzID4gMSkKLSAgICAgICAgICAgICAgICAgICAgZnJlZSgoY2hhciAqKSB0cC0+bW9kdWxlX2xpc3QpOworICAgICAgICAgICAgICAgIGlmICh0cC0+bW9kdWxlX2xpc3QgIT0gJnRwLT5tb2RpZCkKKyAgICAgICAgICAgICAgICAgICAgZnJlZSh0cC0+bW9kdWxlX2xpc3QpOwogICAgICAgICAgICAgICAgICsrdHAtPm51bWJlcl9tb2R1bGVzOwogICAgICAgICAgICAgICAgIHRwLT5tb2R1bGVfbGlzdCA9IGludF9wOwogCkBAIC0yMTQwLDYgKzIxNTEsOCBAQAogICAgIHJldHVybiAodGNsaXN0W3RjX2luZGV4XS5kZXNjcmlwdG9yKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0dFVF9UQ19ERVNDUklQVElPTgorLyogdXNlZCBpbiB0aGUgcGVybCBtb2R1bGUgKi8KIGNvbnN0IGNoYXIgICAgICoKIGdldF90Y19kZXNjcmlwdGlvbihpbnQgdGNfaW5kZXgpCiB7CkBAIC0yMTQ3LDYgKzIxNjAsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gKHRjbGlzdFt0Y19pbmRleF0uZGVzY3JpcHRpb24pOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfR0VUX1RDX0RFU0NSSVBUSU9OICovCiAKIAogLyoKQEAgLTI5NzUsNiArMjk4OSwxNSBAQAogICAgICAgICBmcmVlX25vZGUobnApOwogICAgICAgICByZXR1cm4gKE5VTEwpOwogICAgIH0KKworICAgIC8qIENhdGNoIHRoZSBzeW50YXggZXJyb3IgKi8KKyAgICBpZiAobnAtPnBhcmVudCA9PSBOVUxMKSB7CisgICAgICAgIGZyZWVfbm9kZShucC0+bmV4dCk7CisgICAgICAgIGZyZWVfbm9kZShucCk7CisgICAgICAgIGdNaWJFcnJvciA9IE1PRFVMRV9TWU5UQVhfRVJST1I7CisgICAgICAgIHJldHVybiAoTlVMTCk7CisgICAgfQorCiAgICAgbnAtPm5leHQtPnBhcmVudCA9IG5wLT5wYXJlbnQ7CiAgICAgbnAtPnBhcmVudCA9IChjaGFyICopIG1hbGxvYyhzdHJsZW4obnAtPnBhcmVudCkgKyAyKTsKICAgICBpZiAobnAtPnBhcmVudCA9PSBOVUxMKSB7CkBAIC0zNzU0LDYgKzM3NzcsOCBAQAogICogICAgICBvciB0aG9zZSByZWxhdGluZyB0byBhIHNwZWNpZmllZCBpZGVudGlmaWVyIChyZWFkX2ltcG9ydF9yZXBsYWNlbWVudHMpCiAgKiAgICAgIHBsdXMgYW4gaW50ZXJmYWNlIHRvIGFkZCBuZXcgcmVwbGFjZW1lbnQgcmVxdWlyZW1lbnRzCiAgKi8KK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihwYXJzZV9hZGRfbW9kdWxlX3JlcGxhY2VtZW50LCBuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9QQVJTRV9BRERfTU9EVUxFX1JFUExBQ0VNRU5UCiB2b2lkCiBhZGRfbW9kdWxlX3JlcGxhY2VtZW50KGNvbnN0IGNoYXIgKm9sZF9tb2R1bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5ld19tb2R1bGVfbmFtZSwKQEAgLTM3NzUsNiArMzgwMCw3IEBACiAgICAgbWNwLT5uZXh0ID0gbW9kdWxlX21hcF9oZWFkOwogICAgIG1vZHVsZV9tYXBfaGVhZCA9IG1jcDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1BBUlNFX0FERF9NT0RVTEVfUkVQTEFDRU1FTlQgKi8KIAogc3RhdGljIGludAogcmVhZF9tb2R1bGVfcmVwbGFjZW1lbnRzKGNvbnN0IGNoYXIgKm5hbWUpCkBAIC0zODUwLDYgKzM4NzYsNyBAQAogewogICAgIHN0cnVjdCBtb2R1bGUgICptcDsKICAgICBGSUxFICAgICAgICAgICAqZnA7CisgICAgc3RydWN0IG5vZGUgICAgKm5wOwogCiAgICAgbmV0c25tcF9pbml0X21pYl9pbnRlcm5hbHMoKTsKIApAQCAtMzg2NSw5ICszODkyLDE3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIE1PRFVMRV9BTFJFQURZX0xPQURFRDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgoZnAgPSBmb3BlbihtcC0+ZmlsZSwgInIiKSkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGludCBydmFsOworICAgICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFTk9URElSIHx8IGVycm5vID09IEVOT0VOVCkKKyAgICAgICAgICAgICAgICAgICAgcnZhbCA9IE1PRFVMRV9OT1RfRk9VTkQ7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBydmFsID0gTU9EVUxFX0xPQURfRkFJTEVEOwogICAgICAgICAgICAgICAgIHNubXBfbG9nX3BlcnJvcihtcC0+ZmlsZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1PRFVMRV9MT0FEX0ZBSUxFRDsKKyAgICAgICAgICAgICAgICByZXR1cm4gcnZhbDsKICAgICAgICAgICAgIH0KKyNpZmRlZiBIQVZFX0ZMT0NLRklMRQorICAgICAgICAgICAgZmxvY2tmaWxlKGZwKTsKKyNlbmRpZgogICAgICAgICAgICAgbXAtPm5vX2ltcG9ydHMgPSAwOyAvKiBOb3RlIHRoYXQgd2UndmUgcmVhZCB0aGUgZmlsZSAqLwogICAgICAgICAgICAgRmlsZSA9IG1wLT5maWxlOwogICAgICAgICAgICAgbWliTGluZSA9IDE7CkBAIC0zODc1LDExICszOTEwLDE2IEBACiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogUGFyc2UgdGhlIGZpbGUKICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgcGFyc2UoZnAsIE5VTEwpOworICAgICAgICAgICAgbnAgPSBwYXJzZShmcCwgTlVMTCk7CisjaWZkZWYgSEFWRV9GVU5MT0NLRklMRQorICAgICAgICAgICAgZnVubG9ja2ZpbGUoZnApOworI2VuZGlmCiAgICAgICAgICAgICBmY2xvc2UoZnApOwogICAgICAgICAgICAgRmlsZSA9IG9sZEZpbGU7CiAgICAgICAgICAgICBtaWJMaW5lID0gb2xkTGluZTsKICAgICAgICAgICAgIGN1cnJlbnRfbW9kdWxlID0gb2xkTW9kdWxlOworICAgICAgICAgICAgaWYgKChucCA9PSBOVUxMKSAmJiAoZ01pYkVycm9yID09IE1PRFVMRV9TWU5UQVhfRVJST1IpICkKKyAgICAgICAgICAgICAgICByZXR1cm4gTU9EVUxFX1NZTlRBWF9FUlJPUjsKICAgICAgICAgICAgIHJldHVybiBNT0RVTEVfTE9BREVEX09LOwogICAgICAgICB9CiAKQEAgLTM5NjgsOSArNDAwOCwyMCBAQAogc3RydWN0IHRyZWUgICAgKgogbmV0c25tcF9yZWFkX21vZHVsZShjb25zdCBjaGFyICpuYW1lKQogewotICAgIGlmIChyZWFkX21vZHVsZV9pbnRlcm5hbChuYW1lKSA9PSBNT0RVTEVfTk9UX0ZPVU5EKQorICAgIGludCBzdGF0dXMgPSAwOworICAgIHN0YXR1cyA9IHJlYWRfbW9kdWxlX2ludGVybmFsKG5hbWUpOworCisgICAgaWYgKHN0YXR1cyA9PSBNT0RVTEVfTk9UX0ZPVU5EKSB7CiAgICAgICAgIGlmICghcmVhZF9tb2R1bGVfcmVwbGFjZW1lbnRzKG5hbWUpKQotCSAgICBwcmludF9tb2R1bGVfbm90X2ZvdW5kKG5hbWUpOworICAgICAgICAgICAgcHJpbnRfbW9kdWxlX25vdF9mb3VuZChuYW1lKTsKKyAgICB9IGVsc2UgaWYgKHN0YXR1cyA9PSBNT0RVTEVfU1lOVEFYX0VSUk9SKSB7CisgICAgICAgIGdNaWJFcnJvciA9IDA7CisgICAgICAgIGdMb29wID0gMTsKKworICAgICAgICBzdHJuY2F0KGdNaWJOYW1lcywgIiAiLCBzaXplb2YoZ01pYk5hbWVzKSAtIHN0cmxlbihnTWliTmFtZXMpIC0gMSk7CisgICAgICAgIHN0cm5jYXQoZ01pYk5hbWVzLCBuYW1lLCBzaXplb2YoZ01pYk5hbWVzKSAtIHN0cmxlbihnTWliTmFtZXMpIC0gMSk7CisgICAgfQorCiAgICAgcmV0dXJuIHRyZWVfaGVhZDsKIH0KIApAQCAtNDI5MCw2ICs0MzQxLDcgQEAKICAgICAgICAgY2FzZSBFTkQ6CiAgICAgICAgICAgICBpZiAoc3RhdGUgIT0gSU5fTUlCKSB7CiAgICAgICAgICAgICAgICAgcHJpbnRfZXJyb3IoIkVycm9yLCBFTkQgYmVmb3JlIHN0YXJ0IG9mIE1JQiIsIE5VTEwsIHR5cGUpOworICAgICAgICAgICAgICAgIGdNaWJFcnJvciA9IE1PRFVMRV9TWU5UQVhfRVJST1I7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHN0cnVjdCBtb2R1bGUgICptcDsKQEAgLTQzNTMsNiArNDQwNSw3IEBACiAgICAgICAgICAgICAgICAgbm5wID0gcGFyc2VfbWFjcm8oZnAsIG5hbWUpOwogICAgICAgICAgICAgICAgIGlmIChubnAgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICBwcmludF9lcnJvcigiQmFkIHBhcnNlIG9mIE1BQ1JPIiwgTlVMTCwgdHlwZSk7CisgICAgICAgICAgICAgICAgICAgIGdNaWJFcnJvciA9IE1PRFVMRV9TWU5UQVhfRVJST1I7CiAgICAgICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICAgICAqIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgICAgICAgKi8KQEAgLTQzNzYsNiArNDQyOSw3IEBACiAgICAgICAgICAgICAgICAgdHlwZSA9IGdldF90b2tlbihmcCwgdG9rZW4sIE1BWFRPS0VOKTsKICAgICAgICAgICAgIGlmICh0eXBlID09IEVORE9GRklMRSkgewogICAgICAgICAgICAgICAgIHByaW50X2Vycm9yKCJFeHBlY3RlZCBcIn1cIiIsIHRva2VuLCB0eXBlKTsKKyAgICAgICAgICAgICAgICBnTWliRXJyb3IgPSBNT0RVTEVfU1lOVEFYX0VSUk9SOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdHlwZSA9IGdldF90b2tlbihmcCwgdG9rZW4sIE1BWFRPS0VOKTsKQEAgLTQzODUsNiArNDQzOSw3IEBACiAgICAgICAgIGNhc2UgREVGSU5JVElPTlM6CiAgICAgICAgICAgICBpZiAoc3RhdGUgIT0gQkVUV0VFTl9NSUJTKSB7CiAgICAgICAgICAgICAgICAgcHJpbnRfZXJyb3IoIkVycm9yLCBuZXN0ZWQgTUlCUyIsIE5VTEwsIHR5cGUpOworICAgICAgICAgICAgICAgIGdNaWJFcnJvciA9IE1PRFVMRV9TWU5UQVhfRVJST1I7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzdGF0ZSA9IElOX01JQjsKQEAgLTQ0MDksNiArNDQ2NCw3IEBACiAgICAgICAgICAgICBubnAgPSBwYXJzZV9vYmplY3R0eXBlKGZwLCBuYW1lKTsKICAgICAgICAgICAgIGlmIChubnAgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHByaW50X2Vycm9yKCJCYWQgcGFyc2Ugb2YgT0JKRUNULVRZUEUiLCBOVUxMLCB0eXBlKTsKKyAgICAgICAgICAgICAgICBnTWliRXJyb3IgPSBNT0RVTEVfU1lOVEFYX0VSUk9SOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC00NDE2LDYgKzQ0NzIsNyBAQAogICAgICAgICAgICAgbm5wID0gcGFyc2Vfb2JqZWN0Z3JvdXAoZnAsIG5hbWUsIE9CSkVDVFMsICZvYmplY3RzKTsKICAgICAgICAgICAgIGlmIChubnAgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHByaW50X2Vycm9yKCJCYWQgcGFyc2Ugb2YgT0JKRUNULUdST1VQIiwgTlVMTCwgdHlwZSk7CisgICAgICAgICAgICAgICAgZ01pYkVycm9yID0gTU9EVUxFX1NZTlRBWF9FUlJPUjsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDQyMyw2ICs0NDgwLDcgQEAKICAgICAgICAgICAgIG5ucCA9IHBhcnNlX29iamVjdGdyb3VwKGZwLCBuYW1lLCBOT1RJRklDQVRJT05TLCAmbm90aWZzKTsKICAgICAgICAgICAgIGlmIChubnAgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHByaW50X2Vycm9yKCJCYWQgcGFyc2Ugb2YgTk9USUZJQ0FUSU9OLUdST1VQIiwgTlVMTCwgdHlwZSk7CisgICAgICAgICAgICAgICAgZ01pYkVycm9yID0gTU9EVUxFX1NZTlRBWF9FUlJPUjsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDQzMCw2ICs0NDg4LDcgQEAKICAgICAgICAgICAgIG5ucCA9IHBhcnNlX3RyYXBEZWZpbml0aW9uKGZwLCBuYW1lKTsKICAgICAgICAgICAgIGlmIChubnAgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHByaW50X2Vycm9yKCJCYWQgcGFyc2Ugb2YgVFJBUC1UWVBFIiwgTlVMTCwgdHlwZSk7CisgICAgICAgICAgICAgICAgZ01pYkVycm9yID0gTU9EVUxFX1NZTlRBWF9FUlJPUjsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDQzNyw2ICs0NDk2LDcgQEAKICAgICAgICAgICAgIG5ucCA9IHBhcnNlX25vdGlmaWNhdGlvbkRlZmluaXRpb24oZnAsIG5hbWUpOwogICAgICAgICAgICAgaWYgKG5ucCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgcHJpbnRfZXJyb3IoIkJhZCBwYXJzZSBvZiBOT1RJRklDQVRJT04tVFlQRSIsIE5VTEwsIHR5cGUpOworICAgICAgICAgICAgICAgIGdNaWJFcnJvciA9IE1PRFVMRV9TWU5UQVhfRVJST1I7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTQ0NDQsNiArNDUwNCw3IEBACiAgICAgICAgICAgICBubnAgPSBwYXJzZV9jb21wbGlhbmNlKGZwLCBuYW1lKTsKICAgICAgICAgICAgIGlmIChubnAgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHByaW50X2Vycm9yKCJCYWQgcGFyc2Ugb2YgTU9EVUxFLUNPTVBMSUFOQ0UiLCBOVUxMLCB0eXBlKTsKKyAgICAgICAgICAgICAgICBnTWliRXJyb3IgPSBNT0RVTEVfU1lOVEFYX0VSUk9SOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC00NDUxLDYgKzQ1MTIsNyBAQAogICAgICAgICAgICAgbm5wID0gcGFyc2VfY2FwYWJpbGl0aWVzKGZwLCBuYW1lKTsKICAgICAgICAgICAgIGlmIChubnAgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHByaW50X2Vycm9yKCJCYWQgcGFyc2Ugb2YgQUdFTlQtQ0FQQUJJTElUSUVTIiwgTlVMTCwgdHlwZSk7CisgICAgICAgICAgICAgICAgZ01pYkVycm9yID0gTU9EVUxFX1NZTlRBWF9FUlJPUjsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDQ1OCw2ICs0NTIwLDcgQEAKICAgICAgICAgICAgIG5ucCA9IHBhcnNlX21hY3JvKGZwLCBuYW1lKTsKICAgICAgICAgICAgIGlmIChubnAgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHByaW50X2Vycm9yKCJCYWQgcGFyc2Ugb2YgTUFDUk8iLCBOVUxMLCB0eXBlKTsKKyAgICAgICAgICAgICAgICBnTWliRXJyb3IgPSBNT0RVTEVfU1lOVEFYX0VSUk9SOwogICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICogcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgICovCkBAIC00NDY5LDYgKzQ1MzIsNyBAQAogICAgICAgICAgICAgbm5wID0gcGFyc2VfbW9kdWxlSWRlbnRpdHkoZnAsIG5hbWUpOwogICAgICAgICAgICAgaWYgKG5ucCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgcHJpbnRfZXJyb3IoIkJhZCBwYXJzZSBvZiBNT0RVTEUtSURFTlRJVFkiLCBOVUxMLCB0eXBlKTsKKyAgICAgICAgICAgICAgICBnTWliRXJyb3IgPSBNT0RVTEVfU1lOVEFYX0VSUk9SOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC00NDc2LDYgKzQ1NDAsNyBAQAogICAgICAgICAgICAgbm5wID0gcGFyc2Vfb2JqZWN0Z3JvdXAoZnAsIG5hbWUsIE9CSkVDVFMsICZvYmplY3RzKTsKICAgICAgICAgICAgIGlmIChubnAgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHByaW50X2Vycm9yKCJCYWQgcGFyc2Ugb2YgT0JKRUNULUlERU5USVRZIiwgTlVMTCwgdHlwZSk7CisgICAgICAgICAgICAgICAgZ01pYkVycm9yID0gTU9EVUxFX1NZTlRBWF9FUlJPUjsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDQ4MywxNiArNDU0OCwxOSBAQAogICAgICAgICAgICAgdHlwZSA9IGdldF90b2tlbihmcCwgdG9rZW4sIE1BWFRPS0VOKTsKICAgICAgICAgICAgIGlmICh0eXBlICE9IElERU5USUZJRVIpIHsKICAgICAgICAgICAgICAgICBwcmludF9lcnJvcigiRXhwZWN0ZWQgSURFTlRJRklFUiIsIHRva2VuLCB0eXBlKTsKKyAgICAgICAgICAgICAgICBnTWliRXJyb3IgPSBNT0RVTEVfU1lOVEFYX0VSUk9SOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdHlwZSA9IGdldF90b2tlbihmcCwgdG9rZW4sIE1BWFRPS0VOKTsKICAgICAgICAgICAgIGlmICh0eXBlICE9IEVRVUFMUykgewogICAgICAgICAgICAgICAgIHByaW50X2Vycm9yKCJFeHBlY3RlZCBcIjo6PVwiIiwgdG9rZW4sIHR5cGUpOworICAgICAgICAgICAgICAgIGdNaWJFcnJvciA9IE1PRFVMRV9TWU5UQVhfRVJST1I7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBubnAgPSBwYXJzZV9vYmplY3RpZChmcCwgbmFtZSk7CiAgICAgICAgICAgICBpZiAobm5wID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBwcmludF9lcnJvcigiQmFkIHBhcnNlIG9mIE9CSkVDVCBJREVOVElGSUVSIiwgTlVMTCwgdHlwZSk7CisgICAgICAgICAgICAgICAgZ01pYkVycm9yID0gTU9EVUxFX1NZTlRBWF9FUlJPUjsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDUwNCw2ICs0NTcyLDcgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcHJpbnRfZXJyb3IoIkJhZCBvcGVyYXRvciIsIHRva2VuLCB0eXBlKTsKKyAgICAgICAgICAgIGdNaWJFcnJvciA9IE1PRFVMRV9TWU5UQVhfRVJST1I7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBpZiAobm5wKSB7CkBAIC00NTM3LDYgKzQ2MDYsMjEgQEAKICAgICByZXR1cm4gMDsKIH0KIAorLyoqCisgKiBSZWFkIGEgc2luZ2xlIGNoYXJhY3RlciBmcm9tIGEgZmlsZS4gQXNzdW1lcyB0aGF0IHRoZSBjYWxsZXIgaGFzIGludm9rZWQKKyAqIGZsb2NrZmlsZSgpLiBVc2VzIGZnZXRjX3VubG9ja2VkKCkgaW5zdGVhZCBvZiBnZXRjKCkgc2luY2UgdGhlIGZvcm1lciBpcworICogaW1wbGVtZW50ZWQgYXMgYW4gaW5saW5lIGZ1bmN0aW9uIGluIGdsaWJjLiBTZWUgYWxzbyBidWcgMzQ0NzE5NgorICogKGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/ZnVuYz1kZXRhaWwmYWlkPTM0NDcxOTYmZ3JvdXBfaWQ9MTI2OTQmYXRpZD0xMTI2OTQpLgorICovCitzdGF0aWMgaW50IG5ldHNubXBfZ2V0YyhGSUxFICpzdHJlYW0pCit7CisjaWZkZWYgSEFWRV9GR0VUQ19VTkxPQ0tFRAorICAgIHJldHVybiBmZ2V0Y191bmxvY2tlZChzdHJlYW0pOworI2Vsc2UKKyAgICByZXR1cm4gZ2V0YyhzdHJlYW0pOworI2VuZGlmCit9CisKIC8qCiAgKiBQYXJzZXMgYSB0b2tlbiBmcm9tIHRoZSBmaWxlLiAgVGhlIHR5cGUgb2YgdGhlIHRva2VuIHBhcnNlZCBpcyByZXR1cm5lZCwKICAqIGFuZCB0aGUgdGV4dCBpcyBwbGFjZWQgaW4gdGhlIHN0cmluZyBwb2ludGVkIHRvIGJ5IHRva2VuLgpAQCAtNDU1Niw3ICs0NjQwLDcgQEAKICAgICAgKiBza2lwIGFsbCB3aGl0ZSBzcGFjZSAKICAgICAgKi8KICAgICBkbyB7Ci0gICAgICAgIGNoID0gZ2V0YyhmcCk7CisgICAgICAgIGNoID0gbmV0c25tcF9nZXRjKGZwKTsKICAgICAgICAgaWYgKGNoID09ICdcbicpCiAgICAgICAgICAgICBtaWJMaW5lKys7CiAgICAgfQpAQCAtNDU3MCw3ICs0NjU0LDcgQEAKICAgICAgICAgcmV0dXJuIHBhcnNlUXVvdGVTdHJpbmcoZnAsIHRva2VuLCBtYXh0bGVuKTsKICAgICBjYXNlICdcJyc6ICAgICAgICAgICAgICAgICAvKiBiaW5hcnkgb3IgaGV4IGNvbnN0YW50ICovCiAgICAgICAgIHNlZW5TeW1ib2xzID0gYmRpZ2l0czsKLSAgICAgICAgd2hpbGUgKChjaCA9IGdldGMoZnApKSAhPSBFT0YgJiYgY2ggIT0gJ1wnJykgeworICAgICAgICB3aGlsZSAoKGNoID0gbmV0c25tcF9nZXRjKGZwKSkgIT0gRU9GICYmIGNoICE9ICdcJycpIHsKICAgICAgICAgICAgIHN3aXRjaCAoc2VlblN5bWJvbHMpIHsKICAgICAgICAgICAgIGNhc2UgYmRpZ2l0czoKICAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJzAnIHx8IGNoID09ICcxJykKQEAgLTQ1ODksNyArNDY3Myw3IEBACiAgICAgICAgIGlmIChjaCA9PSAnXCcnKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICAgdmFsID0gMDsKICAgICAgICAgICAgIGNoYXIgICAgICAgICAgICpydW4gPSB0b2tlbiArIDE7Ci0gICAgICAgICAgICBjaCA9IGdldGMoZnApOworICAgICAgICAgICAgY2ggPSBuZXRzbm1wX2dldGMoZnApOwogICAgICAgICAgICAgc3dpdGNoIChjaCkgewogICAgICAgICAgICAgY2FzZSBFT0Y6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEVORE9GRklMRTsKQEAgLTQ2NDgsMjUgKzQ3MzIsMjUgQEAKICAgICBjYXNlICd8JzoKICAgICAgICAgcmV0dXJuIEJBUjsKICAgICBjYXNlICcuJzoKLSAgICAgICAgY2hfbmV4dCA9IGdldGMoZnApOworICAgICAgICBjaF9uZXh0ID0gbmV0c25tcF9nZXRjKGZwKTsKICAgICAgICAgaWYgKGNoX25leHQgPT0gJy4nKQogICAgICAgICAgICAgcmV0dXJuIFJBTkdFOwogICAgICAgICB1bmdldGMoY2hfbmV4dCwgZnApOwogICAgICAgICByZXR1cm4gTEFCRUw7CiAgICAgY2FzZSAnOic6Ci0gICAgICAgIGNoX25leHQgPSBnZXRjKGZwKTsKKyAgICAgICAgY2hfbmV4dCA9IG5ldHNubXBfZ2V0YyhmcCk7CiAgICAgICAgIGlmIChjaF9uZXh0ICE9ICc6JykgewogICAgICAgICAgICAgdW5nZXRjKGNoX25leHQsIGZwKTsKICAgICAgICAgICAgIHJldHVybiBMQUJFTDsKICAgICAgICAgfQotICAgICAgICBjaF9uZXh0ID0gZ2V0YyhmcCk7CisgICAgICAgIGNoX25leHQgPSBuZXRzbm1wX2dldGMoZnApOwogICAgICAgICBpZiAoY2hfbmV4dCAhPSAnPScpIHsKICAgICAgICAgICAgIHVuZ2V0YyhjaF9uZXh0LCBmcCk7CiAgICAgICAgICAgICByZXR1cm4gTEFCRUw7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEVRVUFMUzsKICAgICBjYXNlICctJzoKLSAgICAgICAgY2hfbmV4dCA9IGdldGMoZnApOworICAgICAgICBjaF9uZXh0ID0gbmV0c25tcF9nZXRjKGZwKTsKICAgICAgICAgaWYgKGNoX25leHQgPT0gJy0nKSB7CiAgICAgICAgICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAogCQkJCSAgICAgICBORVRTTk1QX0RTX0xJQl9NSUJfQ09NTUVOVF9URVJNKSkgewpAQCAtNDY3NCw3ICs0NzU4LDcgQEAKICAgICAgICAgICAgICAgICAgKiBUcmVhdCB0aGUgcmVzdCBvZiB0aGlzIGxpbmUgYXMgYSBjb21tZW50LiAKICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICB3aGlsZSAoKGNoX25leHQgIT0gRU9GKSAmJiAoY2hfbmV4dCAhPSAnXG4nKSkKLSAgICAgICAgICAgICAgICAgICAgY2hfbmV4dCA9IGdldGMoZnApOworICAgICAgICAgICAgICAgICAgICBjaF9uZXh0ID0gbmV0c25tcF9nZXRjKGZwKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgKiBUcmVhdCB0aGUgcmVzdCBvZiB0aGUgbGluZSBvciB1bnRpbCBhbm90aGVyICctLScgYXMgYSBjb21tZW50IApAQCAtNDY4MywxMSArNDc2NywxMSBAQAogICAgICAgICAgICAgICAgICAqICh0aGlzIGlzIHRoZSAidGVjaG5pY2FsbHkiIGNvcnJlY3Qgd2F5IHRvIHBhcnNlIGNvbW1lbnRzKSAKICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICBjaCA9ICcgJzsKLSAgICAgICAgICAgICAgICBjaF9uZXh0ID0gZ2V0YyhmcCk7CisgICAgICAgICAgICAgICAgY2hfbmV4dCA9IG5ldHNubXBfZ2V0YyhmcCk7CiAgICAgICAgICAgICAgICAgd2hpbGUgKGNoX25leHQgIT0gRU9GICYmIGNoX25leHQgIT0gJ1xuJyAmJgogICAgICAgICAgICAgICAgICAgICAgICAoY2ggIT0gJy0nIHx8IGNoX25leHQgIT0gJy0nKSkgewogICAgICAgICAgICAgICAgICAgICBjaCA9IGNoX25leHQ7Ci0gICAgICAgICAgICAgICAgICAgIGNoX25leHQgPSBnZXRjKGZwKTsKKyAgICAgICAgICAgICAgICAgICAgY2hfbmV4dCA9IG5ldHNubXBfZ2V0YyhmcCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGNoX25leHQgPT0gRU9GKQpAQCAtNDcwOCw3ICs0NzkyLDcgQEAKICAgICAgICAgICAgIHJldHVybiBMQUJFTDsKICAgICAgICAgaGFzaCArPSB0b2xvd2VyKGNoKTsKICAgICAgIG1vcmU6Ci0gICAgICAgIHdoaWxlIChpc19sYWJlbGNoYXIoY2hfbmV4dCA9IGdldGMoZnApKSkgeworICAgICAgICB3aGlsZSAoaXNfbGFiZWxjaGFyKGNoX25leHQgPSBuZXRzbm1wX2dldGMoZnApKSkgewogICAgICAgICAgICAgaGFzaCArPSB0b2xvd2VyKGNoX25leHQpOwogICAgICAgICAgICAgaWYgKGNwIC0gdG9rZW4gPCBtYXh0bGVuIC0gMSkKICAgICAgICAgICAgICAgICAqY3ArKyA9IGNoX25leHQ7CkBAIC00NzI3LDcgKzQ4MTEsNyBAQAogICAgICAgICBpZiAodHApIHsKICAgICAgICAgICAgIGlmICh0cC0+dG9rZW4gIT0gQ09OVElOVUUpCiAgICAgICAgICAgICAgICAgcmV0dXJuICh0cC0+dG9rZW4pOwotICAgICAgICAgICAgd2hpbGUgKGlzc3BhY2UoKGNoX25leHQgPSBnZXRjKGZwKSkpKQorICAgICAgICAgICAgd2hpbGUgKGlzc3BhY2UoKGNoX25leHQgPSBuZXRzbm1wX2dldGMoZnApKSkpCiAgICAgICAgICAgICAgICAgaWYgKGNoX25leHQgPT0gJ1xuJykKICAgICAgICAgICAgICAgICAgICAgbWliTGluZSsrOwogICAgICAgICAgICAgaWYgKGNoX25leHQgPT0gRU9GKQpAQCAtNDc0OCwxMSArNDgzMiwxNCBAQAogICAgIH0KIH0KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHBhcnNlX2dldF90b2tlbiwgbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUEFSU0VfR0VUX1RPS0VOCiBpbnQKIHNubXBfZ2V0X3Rva2VuKEZJTEUgKiBmcCwgY2hhciAqdG9rZW4sIGludCBtYXh0bGVuKQogewogICAgIHJldHVybiBnZXRfdG9rZW4oZnAsIHRva2VuLCBtYXh0bGVuKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1BBUlNFX0dFVF9UT0tFTiAqLwogCiBpbnQKIGFkZF9taWJmaWxlKGNvbnN0IGNoYXIqIHRtcHN0ciwgY29uc3QgY2hhciogZF9uYW1lLCBGSUxFICppcCApCkBAIC00OTM1LDYgKzUwMjIsMjMgQEAKICAgICAgICAgICAgIG5ldHNubXBfcmVhZF9tb2R1bGUobXAtPm5hbWUpOwogICAgIGFkb3B0X29ycGhhbnMoKTsKIAorICAgIC8qIElmIGVudGVyZWQgdGhlIHN5bnRheCBlcnJvciBsb29wIGluICJyZWFkX21vZHVsZSgpIiAqLworICAgIGlmIChnTG9vcCA9PSAxKSB7CisgICAgICAgIGdMb29wID0gMDsKKyAgICAgICAgaWYgKGdwTWliRXJyb3JTdHJpbmcgIT0gTlVMTCkgeworICAgICAgICAgICAgU05NUF9GUkVFKGdwTWliRXJyb3JTdHJpbmcpOworICAgICAgICB9CisgICAgICAgIGdwTWliRXJyb3JTdHJpbmcgPSAoY2hhciAqKSBjYWxsb2MoMSwgTUFYUVVPVEVTVFIpOworICAgICAgICBpZiAoZ3BNaWJFcnJvclN0cmluZyA9PSBOVUxMKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfQ1JJVCwgImZhaWxlZCB0byBhbGxvY2F0ZWQgbWVtb3J5IGZvciBncE1pYkVycm9yU3RyaW5nXG4iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNucHJpbnRmKGdwTWliRXJyb3JTdHJpbmcsIHNpemVvZihncE1pYkVycm9yU3RyaW5nKS0xLCAiRXJyb3IgaW4gcGFyc2luZyBNSUIgbW9kdWxlKHMpOiAlcyAhIFVuYWJsZSB0byBsb2FkIGNvcnJlc3BvbmRpbmcgTUlCKHMpIiwgZ01pYk5hbWVzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIENhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGZyZWUgdGhpcyBtZW1vcnkgKi8KKyAgICB0cmVlX2hlYWQtPnBhcnNlRXJyb3JTdHJpbmcgPSBncE1pYkVycm9yU3RyaW5nOworCQogICAgIHJldHVybiB0cmVlX2hlYWQ7CiB9CiAKQEAgLTQ5NzAsNyArNTA3NCw3IEBACiAgICAgaW50ICAgICAgICAgICAgIHRvb19sb25nID0gMDsKICAgICBjaGFyICAgICAgICAgICAqdG9rZW5fc3RhcnQgPSB0b2tlbjsKIAotICAgIGZvciAoY2ggPSBnZXRjKGZwKTsgY2ggIT0gRU9GOyBjaCA9IGdldGMoZnApKSB7CisgICAgZm9yIChjaCA9IG5ldHNubXBfZ2V0YyhmcCk7IGNoICE9IEVPRjsgY2ggPSBuZXRzbm1wX2dldGMoZnApKSB7CiAgICAgICAgIGlmIChjaCA9PSAnXHInKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjaCA9PSAnXG4nKSB7CkBAIC01MjMwLDggKzUzMzQsOCBAQAogICAgIHJldHVybiAoZmluZF90cmVlX25vZGUobmFtZSwgLTEpKTsKIH0KIAotLyogRmluZCBub2RlIGluIHNwZWNpZmljIE1JQiBtb2R1bGUKLSAgIFVzZWQgYnkgUGVybCBtb2R1bGVzCQkqLworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHBhcnNlX2ZpbmRfbm9kZTIsIG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1BBUlNFX0ZJTkRfTk9ERTIKIHN0cnVjdCB0cmVlICAgICoKIGZpbmRfbm9kZTIoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqbW9kdWxlKQogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKQEAgLTUyNDUsNyArNTM0OSwxMCBAQAogICB9CiAgIHJldHVybiAoZmluZF90cmVlX25vZGUobmFtZSwgbW9kaWQpKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1BBUlNFX0ZJTkRfTk9ERTIgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZJTkRfTU9EVUxFCisvKiBVc2VkIGluIHRoZSBwZXJsIG1vZHVsZSAqLwogc3RydWN0IG1vZHVsZSAgKgogZmluZF9tb2R1bGUoaW50IG1pZCkKIHsKQEAgLTUyNTcsNiArNTM2NCw3IEBACiAgICAgfQogICAgIHJldHVybiBtcDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZJTkRfTU9EVUxFICovCiAKIAogc3RhdGljIGNoYXIgICAgIGxlYXZlX2luZGVudFsyNTZdOwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9yZWFkX2NvbmZpZy5jIGIvc25tcGxpYi9yZWFkX2NvbmZpZy5jCmluZGV4IDhlNzI0YzAuLjMxNjc2NzQgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvcmVhZF9jb25maWcuYworKysgYi9zbm1wbGliL3JlYWRfY29uZmlnLmMKQEAgLTY1LDYgKzY1LDcgQEAKICAqICBAewogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3R5cGUuaD4KQEAgLTE0NSw2ICsxNDYsMTIgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVhZF9jb25maWdfYWxsLCBsaWJuZXRzbm1wKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodW5yZWdpc3Rlcl9hcHBfY29uZmlnX2hhbmRsZXIsIHJlYWRfY29uZmlnX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZWFkX2NvbmZpZ19yZWdpc3Rlcl9hcHBfcHJlbmV0c25tcF9taWJfaGFuZGxlciwgbmV0c25tcF91bnVzZWQpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVhZF9jb25maWdfcmVnaXN0ZXJfY29uc3RfY29uZmlnX2hhbmRsZXIsIG5ldHNubXBfdW51c2VkKQorCiBzdGF0aWMgaW50ICAgICAgY29uZmlnX2Vycm9yczsKIAogc3RydWN0IGNvbmZpZ19maWxlcyAqY29uZmlnX2ZpbGVzID0gTlVMTDsKQEAgLTI1Miw2ICsyNTksNyBAQAogCQkJCQkgICAgaGVscCwgUFJFTUlCX0NPTkZJRyk7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUFEX0NPTkZJR19SRUdJU1RFUl9BUFBfUFJFTkVUU05NUF9NSUJfSEFORExFUgogc3RydWN0IGNvbmZpZ19saW5lICoKIHJlZ2lzdGVyX2FwcF9wcmVuZXRzbm1wX21pYl9oYW5kbGVyKGNvbnN0IGNoYXIgKnRva2VuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKnBhcnNlcikgKGNvbnN0IGNoYXIgKiwgY2hhciAqKSwKQEAgLTI2MSw2ICsyNjksNyBAQAogICAgIHJldHVybiAocmVnaXN0ZXJfcHJlbmV0c25tcF9taWJfaGFuZGxlcgogICAgICAgICAgICAgKE5VTEwsIHRva2VuLCBwYXJzZXIsIHJlbGVhc2VyLCBoZWxwKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUFEX0NPTkZJR19SRUdJU1RFUl9BUFBfUFJFTkVUU05NUF9NSUJfSEFORExFUiAqLwogCiAvKioKICAqIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyIHJlZ2lzdGVycyBoYW5kbGVycyBmb3IgY2VydGFpbiB0b2tlbnMgc3BlY2lmaWVkIGluCkBAIC0zMDUsNiArMzE0LDcgQEAKIAkJCQkJICAgIGhlbHAsIE5PUk1BTF9DT05GSUcpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVBRF9DT05GSUdfUkVHSVNURVJfQ09OU1RfQ09ORklHX0hBTkRMRVIKIHN0cnVjdCBjb25maWdfbGluZSAqCiByZWdpc3Rlcl9jb25zdF9jb25maWdfaGFuZGxlcihjb25zdCBjaGFyICp0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9rZW4sCkBAIC0zMTYsNiArMzI2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLCByZWxlYXNlciwKIAkJCQkJICAgIGhlbHAsIE5PUk1BTF9DT05GSUcpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVBRF9DT05GSUdfUkVHSVNURVJfQ09OU1RfQ09ORklHX0hBTkRMRVIgKi8KIAogc3RydWN0IGNvbmZpZ19saW5lICoKIHJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlcihjb25zdCBjaGFyICp0b2tlbiwKQEAgLTQxOSwxMSArNDMwLDEzIEBACiAgICAgfQogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVU5SRUdJU1RFUl9BUFBfQ09ORklHX0hBTkRMRVIKIHZvaWQKIHVucmVnaXN0ZXJfYXBwX2NvbmZpZ19oYW5kbGVyKGNvbnN0IGNoYXIgKnRva2VuKQogewogICAgIHVucmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoTlVMTCwgdG9rZW4pOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVU5SRUdJU1RFUl9BUFBfQ09ORklHX0hBTkRMRVIgKi8KIAogdm9pZAogdW5yZWdpc3Rlcl9hbGxfY29uZmlnX2hhbmRsZXJzKHZvaWQpCkBAIC00NjMsOCArNDc2LDggQEAKIH0KICNlbmRpZgogCi1pbnQgICAgICAgICAgICAgbGluZWNvdW50LCAgICBwcmV2X2xpbmVjb3VudDsKLWNvbnN0IGNoYXIgICAgICpjdXJmaWxlbmFtZSwgKnByZXZfZmlsZW5hbWU7CitzdGF0aWMgdW5zaWduZWQgaW50ICBsaW5lY291bnQ7CitzdGF0aWMgY29uc3QgY2hhciAgICpjdXJmaWxlbmFtZTsKIAogc3RydWN0IGNvbmZpZ19saW5lICoKIHJlYWRfY29uZmlnX2dldF9oYW5kbGVycyhjb25zdCBjaGFyICp0eXBlKQpAQCAtNzQyLDE3ICs3NTUsMTcgQEAKIHsKICAgICBzdGF0aWMgaW50ICAgICAgZGVwdGggPSAwOwogICAgIHN0YXRpYyBpbnQgICAgICBmaWxlcyA9IDA7CisKKyAgICBjb25zdCBjaGFyICogY29uc3QgcHJldl9maWxlbmFtZSA9IGN1cmZpbGVuYW1lOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBwcmV2X2xpbmVjb3VudCA9IGxpbmVjb3VudDsKKwogICAgIEZJTEUgICAgICAgICAgICppZmlsZTsKLSAgICBjaGFyICAgICAgICAgICAgbGluZVtTVFJJTkdNQVhdLCB0b2tlbltTVFJJTkdNQVhdOwotICAgIGNoYXIgICAgICAgICAgICpjcHRyOwotICAgIGludCAgICAgICAgICAgICBpLCByZXQ7Ci0gICAgc3RydWN0IGNvbmZpZ19saW5lICpscHRyOworICAgIGNoYXIgICAgICAgICAgICpsaW5lID0gTlVMTDsgIC8qIGN1cnJlbnQgbGluZSBidWZmZXIgKi8KKyAgICBzaXplX3QgICAgICAgICAgbGluZXNpemUgPSAwOyAvKiBhbGxvY2F0ZWQgc2l6ZSBvZiBsaW5lICovCiAKLSAgICAvLyByZXNldCBmaWxlIGNvdW50ZXIgd2hlbiByZWN1cnNpb24gZGVwdGggaXMgMAotICAgIGlmIChkZXB0aCA9PSAwKSBmaWxlcyA9IDA7Ci0KLSAgICBsaW5lY291bnQgPSAwOwotICAgIGN1cmZpbGVuYW1lID0gZmlsZW5hbWU7CisgICAgLyogcmVzZXQgZmlsZSBjb3VudGVyIHdoZW4gcmVjdXJzaW9uIGRlcHRoIGlzIDAgKi8KKyAgICBpZiAoZGVwdGggPT0gMCkKKyAgICAgICAgZmlsZXMgPSAwOwogCiAgICAgaWYgKChpZmlsZSA9IGZvcGVuKGZpbGVuYW1lLCAiciIpKSA9PSBOVUxMKSB7CiAjaWZkZWYgRU5PRU5UCkBAIC03NjcsMTMgKzc4MCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpKTsKICAgICAgICAgfSBlbHNlCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVBQ0NFUyAqLwotI2lmIGRlZmluZWQoRU5PRU5UKSB8fCBkZWZpbmVkKEVBQ0NFUykKICAgICAgICAgewogICAgICAgICAgICAgc25tcF9sb2dfcGVycm9yKGZpbGVuYW1lKTsKICAgICAgICAgfQotI2Vsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkZWZpbmVkKEVOT0VOVCkgfHwgZGVmaW5lZChFQUNDRVMpICovCi0gICAgICAgICAgICBzbm1wX2xvZ19wZXJyb3IoZmlsZW5hbWUpOwotI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBFTk9FTlQgKi8KICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwogICAgIH0KIApAQCAtNzkxLDI1ICs4MDAsNTggQEAKIAlmY2xvc2UoaWZpbGUpOwogICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CiAgICAgfQorCisgICAgbGluZWNvdW50ID0gMDsKKyAgICBjdXJmaWxlbmFtZSA9IGZpbGVuYW1lOworCiAgICAgKytmaWxlczsKICAgICArK2RlcHRoOwogCiAgICAgREVCVUdNU0dUTCgoInJlYWRfY29uZmlnOmZpbGUiLCAiUmVhZGluZyBjb25maWd1cmF0aW9uICVzICglZClcbiIsCiAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIHdoZW4pKTsKLSAgICAKLSAgICB3aGlsZSAoZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBpZmlsZSkgIT0gTlVMTCkgewotICAgICAgICBscHRyID0gbGluZV9oYW5kbGVyOwotICAgICAgICBsaW5lY291bnQrKzsKLSAgICAgICAgY3B0ciA9IGxpbmU7Ci0gICAgICAgIGkgPSBzdHJsZW4obGluZSkgLSAxOwotICAgICAgICBpZiAobGluZVtpXSA9PSAnXG4nKQotICAgICAgICAgICAgbGluZVtpXSA9IDA7CisKKyAgICB3aGlsZSAoaWZpbGUpIHsKKyAgICAgICAgc2l6ZV90ICAgICAgICAgICAgICBsaW5lbGVuID0gMDsgLyogc3RybGVuIG9mIHRoZSBjdXJyZW50IGxpbmUgKi8KKyAgICAgICAgY2hhciAgICAgICAgICAgICAgICpjcHRyOworICAgICAgICBzdHJ1Y3QgY29uZmlnX2xpbmUgKmxwdHIgPSBsaW5lX2hhbmRsZXI7CisKKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgaWYgKGxpbmVzaXplIDw9IGxpbmVsZW4gKyAxKSB7CisgICAgICAgICAgICAgICAgY2hhciAqdG1wID0gcmVhbGxvYyhsaW5lLCBsaW5lc2l6ZSArIDI1Nik7CisgICAgICAgICAgICAgICAgaWYgKHRtcCkgeworICAgICAgICAgICAgICAgICAgICBsaW5lID0gdG1wOworICAgICAgICAgICAgICAgICAgICBsaW5lc2l6ZSArPSAyNTY7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb25maWdfZXJyb3IoIkZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnlcbiIpOworICAgICAgICAgICAgICAgICAgICBmcmVlKGxpbmUpOworICAgICAgICAgICAgICAgICAgICBmY2xvc2UoaWZpbGUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGZnZXRzKGxpbmUgKyBsaW5lbGVuLCBsaW5lc2l6ZSAtIGxpbmVsZW4sIGlmaWxlKSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgbGluZVtsaW5lbGVuXSA9ICdcMCc7CisgICAgICAgICAgICAgICAgZmNsb3NlIChpZmlsZSk7CisgICAgICAgICAgICAgICAgaWZpbGUgPSBOVUxMOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsaW5lbGVuICs9IHN0cmxlbihsaW5lICsgbGluZWxlbik7CisKKyAgICAgICAgICAgIGlmIChsaW5lW2xpbmVsZW4gLSAxXSA9PSAnXG4nKSB7CisgICAgICAgICAgICAgIGxpbmVbbGluZWxlbiAtIDFdID0gJ1wwJzsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICArK2xpbmVjb3VudDsKICAgICAgICAgREVCVUdNU0dUTCgoIjk6cmVhZF9jb25maWc6bGluZSIsICIlczolZCBleGFtaW5pbmc6ICVzXG4iLAogICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgbGluZWNvdW50LCBsaW5lKSk7CiAgICAgICAgIC8qCiAgICAgICAgICAqIGNoZWNrIGJsYW5rIGxpbmUgb3IgIyBjb21tZW50IAogICAgICAgICAgKi8KLSAgICAgICAgaWYgKChjcHRyID0gc2tpcF93aGl0ZShjcHRyKSkpIHsKKyAgICAgICAgaWYgKChjcHRyID0gc2tpcF93aGl0ZShsaW5lKSkpIHsKKyAgICAgICAgICAgIGNoYXIgdG9rZW5bU1RSSU5HTUFYXTsKKwogICAgICAgICAgICAgY3B0ciA9IGNvcHlfbndvcmQoY3B0ciwgdG9rZW4sIHNpemVvZih0b2tlbikpOwogICAgICAgICAgICAgaWYgKHRva2VuWzBdID09ICdbJykgewogICAgICAgICAgICAgICAgIGlmICh0b2tlbltzdHJsZW4odG9rZW4pIC0gMV0gIT0gJ10nKSB7CkBAIC04NjQsOCArOTA2LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbmZpZ19lcnJvcigiQ2FuJ3Qgb3BlbiBpbmNsdWRlIGRpciAnJXMnLiIsIGNwdHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcHJldl9maWxlbmFtZSAgPSBjdXJmaWxlbmFtZTsKLSAgICAgICAgICAgICAgICAgICAgcHJldl9saW5lY291bnQgPSBsaW5lY291bnQ7CiAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgoZW50cnkgPSByZWFkZGlyKCBkICkpICE9IE5VTEwgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGVudHJ5LT5kX25hbWVbMF0gIT0gJy4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gTkFNTEVOKGVudHJ5KTsKQEAgLTg3Nyw4ICs5MTcsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGNsb3NlZGlyKGQpOwotICAgICAgICAgICAgICAgICAgICBjdXJmaWxlbmFtZSA9IHByZXZfZmlsZW5hbWU7Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVjb3VudCAgID0gcHJldl9saW5lY291bnQ7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIHN0cmNhc2VjbXAoIHRva2VuLCAiaW5jbHVkZWZpbGUiICk9PTApIHsKICAgICAgICAgICAgICAgICAgICAgY2hhciAgZm5hbWVbU05NUF9NQVhQQVRIXSwgKmNwOwpAQCAtODk5LDE3ICs5MzcsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKCsrY3ApID0gJ1wwJzsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxjYXQoZm5hbWUsIGNwdHIsIFNOTVBfTUFYUEFUSCk7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcHJldl9maWxlbmFtZSAgPSBjdXJmaWxlbmFtZTsKLSAgICAgICAgICAgICAgICAgICAgcHJldl9saW5lY291bnQgPSBsaW5lY291bnQ7Ci0gICAgICAgICAgICAgICAgICAgIHJldCA9IHJlYWRfY29uZmlnKGZuYW1lLCBsaW5lX2hhbmRsZXIsIHdoZW4pOwotICAgICAgICAgICAgICAgICAgICBjdXJmaWxlbmFtZSA9IHByZXZfZmlsZW5hbWU7Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVjb3VudCAgID0gcHJldl9saW5lY291bnQ7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgocmV0ICE9IFNOTVBFUlJfU1VDQ0VTUykgJiYgKHdoZW4gIT0gUFJFTUlCX0NPTkZJRykpCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbmZpZ19lcnJvcigiSW5jbHVkZWQgZmlsZSAnJXMnIG5vdCBmb3VuZC4iLCBmbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZWFkX2NvbmZpZyhmbmFtZSwgbGluZV9oYW5kbGVyLCB3aGVuKSAhPQorICAgICAgICAgICAgICAgICAgICAgICAgU05NUEVSUl9TVUNDRVNTICYmIHdoZW4gIT0gUFJFTUlCX0NPTkZJRykKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJJbmNsdWRlZCBmaWxlICclcycgbm90IGZvdW5kLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIHN0cmNhc2VjbXAoIHRva2VuLCAiaW5jbHVkZXNlYXJjaCIgKT09MCkgewogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29uZmlnX2ZpbGVzIGN0bXA7Ci0gICAgICAgICAgICAgICAgICAgIGludCBsZW47CisgICAgICAgICAgICAgICAgICAgIGludCBsZW4sIHJldDsKIAogICAgICAgICAgICAgICAgICAgICBpZiAoY3B0ciA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2hlbiAhPSBQUkVNSUJfQ09ORklHKQpAQCAtOTIyLDExICs5NTcsNyBAQAogICAgICAgICAgICAgICAgICAgICBjdG1wLm5leHQgPSBOVUxMOwogICAgICAgICAgICAgICAgICAgICBpZiAoKGxlbiA+IDUpICYmIChzdHJjbXAoJmNwdHJbbGVuLTVdLCIuY29uZiIpID09IDApKQogICAgICAgICAgICAgICAgICAgICAgICBjcHRyW2xlbi01XSA9IDA7IC8qIGNob3Agb2ZmIC5jb25mICovCi0gICAgICAgICAgICAgICAgICAgIHByZXZfZmlsZW5hbWUgID0gY3VyZmlsZW5hbWU7Ci0gICAgICAgICAgICAgICAgICAgIHByZXZfbGluZWNvdW50ID0gbGluZWNvdW50OwogICAgICAgICAgICAgICAgICAgICByZXQgPSByZWFkX2NvbmZpZ19maWxlc19vZl90eXBlKHdoZW4sJmN0bXApOwotICAgICAgICAgICAgICAgICAgICBjdXJmaWxlbmFtZSA9IHByZXZfZmlsZW5hbWU7Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVjb3VudCAgID0gcHJldl9saW5lY291bnQ7CiAgICAgICAgICAgICAgICAgICAgIGlmICgobGVuID4gNSkgJiYgKGNwdHJbbGVuLTVdID09IDApKQogICAgICAgICAgICAgICAgICAgICAgICBjcHRyW2xlbi01XSA9ICcuJzsgLyogcmVzdG9yZSAuY29uZiAqLwogICAgICAgICAgICAgICAgICAgICBpZiAoKCByZXQgIT0gU05NUEVSUl9TVUNDRVNTICkgJiYgKHdoZW4gIT0gUFJFTUlCX0NPTkZJRykpCkBAIC05NDcsNyArOTc4LDkgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICBmY2xvc2UoaWZpbGUpOworICAgIGZyZWUobGluZSk7CisgICAgbGluZWNvdW50ID0gcHJldl9saW5lY291bnQ7CisgICAgY3VyZmlsZW5hbWUgPSBwcmV2X2ZpbGVuYW1lOwogICAgIC0tZGVwdGg7CiAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKIApkaWZmIC0tZ2l0IGEvc25tcGxpYi9zY2FwaS5jIGIvc25tcGxpYi9zY2FwaS5jCmluZGV4IDM0MDkyMjcuLmRjYjdhZjEgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc2NhcGkuYworKysgYi9zbm1wbGliL3NjYXBpLmMKQEAgLTE1LDYgKzE1LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2lmZGVmIEhBVkVfU1RETElCX0gKQEAgLTUwLDYgKzUxLDExIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvb3V0cHV0X2FwaS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL3V0aWxpdGllcy5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodXNtX3N1cHBvcnQsIGxpYm5ldHNubXApCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodXNtX3NjYXBpLCB1c21fc3VwcG9ydCkKKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VTTV9TQ0FQSQorCiAjaWZkZWYgTkVUU05NUF9VU0VfSU5URVJOQUxfTUQ1CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9tZDUuaD4KICNlbmRpZgpAQCAtNjgsNiArNzQsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvb3BlbnNzbF9kZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L29wZW5zc2xfYWVzLmg+CiAjZW5kaWYKKwogI2lmZGVmIE5FVFNOTVBfVVNFX09QRU5TU0wKICNpbmNsdWRlIDxvcGVuc3NsL2htYWMuaD4KICNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgpAQCAtMTQzLDYgKzE1MCw4IEBACiAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwogfQogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc2NhcGlfZ2V0X3Byb3Blcl9wcml2X2xlbmd0aCwgbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU0NBUElfR0VUX1BST1BFUl9QUklWX0xFTkdUSAogaW50CiBzY19nZXRfcHJvcGVyX3ByaXZfbGVuZ3RoKGNvbnN0IG9pZCAqIHByaXZ0eXBlLCB1X2ludCBwcml2dHlwZV9sZW4pCiB7CkBAIC0xNTksNiArMTY4LDcgQEAKICNlbmRpZgogICAgIHJldHVybiBwcm9wZXJsZW5ndGg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TQ0FQSV9HRVRfUFJPUEVSX1BSSVZfTEVOR1RIICovCiAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiotby0qKioqKioKQEAgLTE4MCw3ICsxOTAsNyBAQAogCiAgICAgZ2V0dGltZW9mZGF5KCZ0diwgKHN0cnVjdCB0aW1lem9uZSAqKSAwKTsKIAotICAgIHNyYW5kb20odHYudHZfc2VjIF4gdHYudHZfdXNlYyk7CisgICAgc3JhbmRvbSgodW5zaWduZWQpKHR2LnR2X3NlYyBeIHR2LnR2X3VzZWMpKTsKICNlbGlmIE5FVFNOTVBfVVNFX1BLQ1MxMQogICAgIERFQlVHVFJBQ0U7CiAgICAgcnZhbCA9IHBrY3NfaW5pdCgpOwpAQCAtMTM1MCwzICsxMzYwLDQgQEAKICAgICByZXR1cm4gcmM7CiB9CiAjZW5kaWYgLyogTkVUU05NUF9VU0VfSU5URVJOQUxfQ1JZUFRPICovCisjZW5kaWYgLyogIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVVNNX1NDQVBJICAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wLXRjLmMgYi9zbm1wbGliL3NubXAtdGMuYwppbmRleCAzODI4NWUxLi44OTFjM2EwIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXAtdGMuYworKysgYi9zbm1wbGliL3NubXAtdGMuYwpAQCAtNSw2ICs1LDcgQEAKIAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpZiBIQVZFX1NURExJQl9ICiAjaW5jbHVkZSA8c3RkbGliLmg+CkBAIC0zMiw2ICszMywxNCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oPiAgIC8qIGZvciAiaW50ZXJuYWwiIGRlZmluaXRpb25zICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc25tcF90Y19hbGwsIGxpYm5ldHNubXApCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihuZXRzbm1wX2RhdGVhbmR0aW1lX3NldF9idWZfZnJvbV92YXJzLCBuZXRzbm1wX3VudXNlZCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihkYXRlX25fdGltZSwgc25tcF90Y19hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY3RpbWVfdG9fdGltZXQsIHNubXBfdGNfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNoZWNrX3Jvd3N0YXR1c193aXRoX3N0b3JhZ2V0eXBlX3RyYW5zaXRpb24sIHNubXBfdGNfYWxsKQorCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTkVUU05NUF9EQVRFQU5EVElNRV9TRVRfQlVGX0ZST01fVkFSUwogLyoKICAgRGF0ZUFuZFRpbWUgOjo9IFRFWFRVQUwtQ09OVkVOVElPTgogICAgIERJU1BMQVktSElOVCAiMmQtMWQtMWQsMWQ6MWQ6MWQuMWQsMWExZDoxZCIKQEAgLTExMiw3ICsxMjEsOSBAQAogCiAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX05FVFNOTVBfREFURUFORFRJTUVfU0VUX0JVRl9GUk9NX1ZBUlMgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0RBVEVfTl9USU1FCiB1X2NoYXIgICAgICAgICAqCiBkYXRlX25fdGltZShjb25zdCB0aW1lX3QgKiB3aGVuLCBzaXplX3QgKiBsZW5ndGgpCiB7CkBAIC0xOTIsOCArMjAzLDkgQEAKIAogICAgIHJldHVybiBzdHJpbmc7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9EQVRFX05fVElNRSAqLwogCi0KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DVElNRV9UT19USU1FVAogdGltZV90CiBjdGltZV90b190aW1ldChjb25zdCBjaGFyICpzdHIpCiB7CkBAIC0yNTEsOSArMjYzLDEwIEBACiAKICAgICByZXR1cm4gKG1rdGltZSgmdG0pKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NUSU1FX1RPX1RJTUVUICovCiAKIC8qCi0gKiBibGF0YW50bHkgbGlmdGVkIGZyb20gb3BlbnNtcCAKKyAqIGJsYXRhbnRseSBsaWZ0ZWQgZnJvbSBvcGVuc25tcCAKICAqLwogY2hhcgogY2hlY2tfcm93c3RhdHVzX3RyYW5zaXRpb24oaW50IG9sZFZhbHVlLCBpbnQgbmV3VmFsdWUpCkBAIC00MDEsNiArNDE0LDcgQEAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX1JPV1NUQVRVU19XSVRIX1NUT1JBR0VUWVBFX1RSQU5TSVRJT04KIGNoYXIKIGNoZWNrX3Jvd3N0YXR1c193aXRoX3N0b3JhZ2V0eXBlX3RyYW5zaXRpb24oaW50IG9sZFZhbHVlLCBpbnQgbmV3VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvbGRTdG9yYWdlKQpAQCAtNDE1LDcgKzQyOSwxMCBAQAogCiAgICAgcmV0dXJuIGNoZWNrX3Jvd3N0YXR1c190cmFuc2l0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DSEVDS19ST1dTVEFUVVNfV0lUSF9TVE9SQUdFVFlQRV9UUkFOU0lUSU9OICovCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjaGVja19zdG9yYWdlX3RyYW5zaXRpb24sIHNubXBfdGNfYWxsKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX1NUT1JBR0VfVFJBTlNJVElPTgogY2hhcgogY2hlY2tfc3RvcmFnZV90cmFuc2l0aW9uKGludCBvbGRWYWx1ZSwgaW50IG5ld1ZhbHVlKQogewpAQCAtNDU2LDMgKzQ3Myw0IEBACiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX1NUT1JBR0VfVFJBTlNJVElPTiAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wX2FsYXJtLmMgYi9zbm1wbGliL3NubXBfYWxhcm0uYwppbmRleCA3NDYyOGJlLi5hZjQ4MDBmIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXBfYWxhcm0uYworKysgYi9zbm1wbGliL3NubXBfYWxhcm0uYwpAQCAtODIsMjkgKzgyLDI0IEBACiB2b2lkCiBzYV91cGRhdGVfZW50cnkoc3RydWN0IHNubXBfYWxhcm0gKmEpCiB7Ci0gICAgaWYgKCF0aW1lcmlzc2V0KCZhLT50X2xhc3QpKSB7Ci0gICAgICAgIHN0cnVjdCB0aW1ldmFsICB0X25vdzsKKyAgICBpZiAoIXRpbWVyaXNzZXQoJmEtPnRfbGFzdE0pKSB7CiAgICAgICAgIC8qCi0gICAgICAgICAqIE5ldmVyIGJlZW4gY2FsbGVkIHlldCwgY2FsbCB0aW1lIGB0JyBmcm9tIG5vdy4gIAorICAgICAgICAgKiBGaXJzdCBjYWxsIG9mIHNhX3VwZGF0ZV9lbnRyeSgpIGZvciBhbGFybSBhOiBzZXQgdF9sYXN0TSBhbmQgdF9uZXh0TS4KICAgICAgICAgICovCi0gICAgICAgIGdldHRpbWVvZmRheSgmdF9ub3csIE5VTEwpOwotCi0gICAgICAgIGEtPnRfbGFzdCA9IHRfbm93OwotCi0gICAgICAgIE5FVFNOTVBfVElNRVJBREQoJnRfbm93LCAmYS0+dCwgJmEtPnRfbmV4dCk7Ci0gICAgfSBlbHNlIGlmICghdGltZXJpc3NldCgmYS0+dF9uZXh0KSkgeworICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJmEtPnRfbGFzdE0pOworICAgICAgICBORVRTTk1QX1RJTUVSQUREKCZhLT50X2xhc3RNLCAmYS0+dCwgJmEtPnRfbmV4dE0pOworICAgIH0gZWxzZSBpZiAoIXRpbWVyaXNzZXQoJmEtPnRfbmV4dE0pKSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIFdlJ3ZlIGJlZW4gY2FsbGVkIGJ1dCBub3QgcmVzZXQgZm9yIHRoZSBuZXh0IGNhbGwuICAKICAgICAgICAgICovCiAgICAgICAgIGlmIChhLT5mbGFncyAmIFNBX1JFUEVBVCkgewotICAgICAgICAgICAgaWYgKCF0aW1lcmlzc2V0KCZhLT50KSkgeworICAgICAgICAgICAgaWYgKHRpbWVyaXNzZXQoJmEtPnQpKSB7CisgICAgICAgICAgICAgICAgTkVUU05NUF9USU1FUkFERCgmYS0+dF9sYXN0TSwgJmEtPnQsICZhLT50X25leHRNKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYWxhcm0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1cGRhdGVfZW50cnk6IGlsbGVnYWwgaW50ZXJ2YWwgc3BlY2lmaWVkXG4iKSk7CiAgICAgICAgICAgICAgICAgc25tcF9hbGFybV91bnJlZ2lzdGVyKGEtPmNsaWVudHJlZyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBORVRTTk1QX1RJTUVSQUREKCZhLT50X2xhc3QsICZhLT50LCAmYS0+dF9uZXh0KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBTaW5nbGUgdGltZSBjYWxsLCByZW1vdmUgaXQuICAKQEAgLTE3NywyMiArMTcyLDEyIEBACiBzYV9maW5kX25leHQodm9pZCkKIHsKICAgICBzdHJ1Y3Qgc25tcF9hbGFybSAqYSwgKmxvd2VzdCA9IE5VTEw7Ci0gICAgc3RydWN0IHRpbWV2YWwgIHRfbm93OwogCi0gICAgZ2V0dGltZW9mZGF5KCZ0X25vdywgTlVMTCk7CisgICAgZm9yIChhID0gdGhlYWxhcm1zOyBhICE9IE5VTEw7IGEgPSBhLT5uZXh0KQorICAgICAgICBpZiAoIShhLT5mbGFncyAmIFNBX0ZJUkVEKQorICAgICAgICAgICAgJiYgKGxvd2VzdCA9PSBOVUxMIHx8IHRpbWVyY21wKCZhLT50X25leHRNLCAmbG93ZXN0LT50X25leHRNLCA8KSkpCisgICAgICAgICAgICBsb3dlc3QgPSBhOwogCi0gICAgZm9yIChhID0gdGhlYWxhcm1zOyBhICE9IE5VTEw7IGEgPSBhLT5uZXh0KSB7Ci0gICAgICAgIGlmICghKGEtPmZsYWdzICYgU0FfRklSRUQpKSB7Ci0gICAgICAgICAgICAvKiBjaGVjayBmb3IgdGltZSBkZWx0YSBza2V3ICovCi0gICAgICAgICAgICBpZiAoKGEtPnRfbmV4dC50dl9zZWMgLSB0X25vdy50dl9zZWMpID4gYS0+dC50dl9zZWMpIHsKLSAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgidGltZV9za2V3IiwgIlRpbWUgZGVsdGEgdG9vIGJpZyAoJWxkIHNlY29uZHMpLCBzaG91bGQgYmUgJWxkIHNlY29uZHMgLSBmaXhpbmdcbiIsCi0JCSAgICAobG9uZykoYS0+dF9uZXh0LnR2X3NlYyAtIHRfbm93LnR2X3NlYyksIChsb25nKWEtPnQudHZfc2VjKSk7Ci0gICAgICAgICAgICAgICAgTkVUU05NUF9USU1FUkFERCgmdF9ub3csICZhLT50LCAmYS0+dF9uZXh0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChsb3dlc3QgPT0gTlVMTCB8fCB0aW1lcmNtcCgmYS0+dF9uZXh0LCAmbG93ZXN0LT50X25leHQsIDwpKQotICAgICAgICAgICAgICAgIGxvd2VzdCA9IGE7Ci0gICAgICAgfQotICAgIH0KICAgICByZXR1cm4gbG93ZXN0OwogfQogCkBAIC0yMTIsOCArMTk3LDcgQEAKIHZvaWQKIHJ1bl9hbGFybXModm9pZCkKIHsKLSAgICBpbnQgICAgICAgICAgICAgZG9uZSA9IDA7Ci0gICAgc3RydWN0IHNubXBfYWxhcm0gKmEgPSBOVUxMOworICAgIHN0cnVjdCBzbm1wX2FsYXJtICphOwogICAgIHVuc2lnbmVkIGludCAgICBjbGllbnRyZWc7CiAgICAgc3RydWN0IHRpbWV2YWwgIHRfbm93OwogCkBAIC0yMjIsMzEgKzIwNiwyNyBAQAogICAgICAqIGNhbGwgdW50aWwgYWxsIGV2ZW50cyBhcmUgZmluYWxseSBpbiB0aGUgZnV0dXJlIGFnYWluLiAgCiAgICAgICovCiAKLSAgICB3aGlsZSAoIWRvbmUpIHsKLSAgICAgICAgaWYgKChhID0gc2FfZmluZF9uZXh0KCkpID09IE5VTEwpIHsKKyAgICB3aGlsZSAoKGEgPSBzYV9maW5kX25leHQoKSkgIT0gTlVMTCkgeworICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnRfbm93KTsKKworICAgICAgICBpZiAodGltZXJjbXAoJmEtPnRfbmV4dE0sICZ0X25vdywgPikpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KIAotICAgICAgICBnZXR0aW1lb2ZkYXkoJnRfbm93LCBOVUxMKTsKKyAgICAgICAgY2xpZW50cmVnID0gYS0+Y2xpZW50cmVnOworICAgICAgICBhLT5mbGFncyB8PSBTQV9GSVJFRDsKKyAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYWxhcm0iLCAicnVuIGFsYXJtICVkXG4iLCBjbGllbnRyZWcpKTsKKyAgICAgICAgKCooYS0+dGhlY2FsbGJhY2spKSAoY2xpZW50cmVnLCBhLT5jbGllbnRhcmcpOworICAgICAgICBERUJVR01TR1RMKCgic25tcF9hbGFybSIsICJhbGFybSAlZCBjb21wbGV0ZWRcbiIsIGNsaWVudHJlZykpOwogCi0gICAgICAgIGlmICh0aW1lcmNtcCgmYS0+dF9uZXh0LCAmdF9ub3csIDwpKSB7Ci0gICAgICAgICAgICBjbGllbnRyZWcgPSBhLT5jbGllbnRyZWc7Ci0gICAgICAgICAgICBhLT5mbGFncyB8PSBTQV9GSVJFRDsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FsYXJtIiwgInJ1biBhbGFybSAlZFxuIiwgY2xpZW50cmVnKSk7Ci0gICAgICAgICAgICAoKihhLT50aGVjYWxsYmFjaykpIChjbGllbnRyZWcsIGEtPmNsaWVudGFyZyk7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgic25tcF9hbGFybSIsICJhbGFybSAlZCBjb21wbGV0ZWRcbiIsIGNsaWVudHJlZykpOwotCi0gICAgICAgICAgICBpZiAoKGEgPSBzYV9maW5kX3NwZWNpZmljKGNsaWVudHJlZykpICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBhLT50X2xhc3QgPSB0X25vdzsKLSAgICAgICAgICAgICAgICB0aW1lcmNsZWFyKCZhLT50X25leHQpOwotICAgICAgICAgICAgICAgIGEtPmZsYWdzICY9IH5TQV9GSVJFRDsKLSAgICAgICAgICAgICAgICBzYV91cGRhdGVfZW50cnkoYSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FsYXJtIiwgImFsYXJtICVkIGRlbGV0ZWQgaXRzZWxmXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudHJlZykpOwotICAgICAgICAgICAgfQorICAgICAgICBhID0gc2FfZmluZF9zcGVjaWZpYyhjbGllbnRyZWcpOworICAgICAgICBpZiAoYSkgeworICAgICAgICAgICAgYS0+dF9sYXN0TSA9IHRfbm93OworICAgICAgICAgICAgdGltZXJjbGVhcigmYS0+dF9uZXh0TSk7CisgICAgICAgICAgICBhLT5mbGFncyAmPSB+U0FfRklSRUQ7CisgICAgICAgICAgICBzYV91cGRhdGVfZW50cnkoYSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBkb25lID0gMTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FsYXJtIiwgImFsYXJtICVkIGRlbGV0ZWQgaXRzZWxmXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50cmVnKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yODEsOSArMjYxLDkgQEAKIAogICAgIGlmIChzYV9wdHIpIHsKICAgICAgICAgbmV0c25tcF9hc3NlcnQoYWxhcm1fdG0pOwotICAgICAgICBuZXRzbm1wX2Fzc2VydCh0aW1lcmlzc2V0KCZzYV9wdHItPnRfbmV4dCkpOwotICAgICAgICBpZiAodGltZXJjbXAoJnNhX3B0ci0+dF9uZXh0LCBub3csID4pKQotICAgICAgICAgICAgKmFsYXJtX3RtID0gc2FfcHRyLT50X25leHQ7CisgICAgICAgIG5ldHNubXBfYXNzZXJ0KHRpbWVyaXNzZXQoJnNhX3B0ci0+dF9uZXh0TSkpOworICAgICAgICBpZiAodGltZXJjbXAoJnNhX3B0ci0+dF9uZXh0TSwgbm93LCA+KSkKKyAgICAgICAgICAgICphbGFybV90bSA9IHNhX3B0ci0+dF9uZXh0TTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgKmFsYXJtX3RtID0gKm5vdzsKICAgICAgICAgcmV0dXJuIHNhX3B0ci0+Y2xpZW50cmVnOwpAQCAtMzA3LDcgKzI4Nyw3IEBACiAgICAgc3RydWN0IHRpbWV2YWwgdF9ub3csIGFsYXJtX3RtOwogICAgIGludCByZXM7CiAKLSAgICBnZXR0aW1lb2ZkYXkoJnRfbm93LCBOVUxMKTsKKyAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnRfbm93KTsKICAgICByZXMgPSBuZXRzbm1wX2dldF9uZXh0X2FsYXJtX3RpbWUoJmFsYXJtX3RtLCAmdF9ub3cpOwogICAgIGlmIChyZXMpCiAgICAgICAgIE5FVFNOTVBfVElNRVJTVUIoJmFsYXJtX3RtLCAmdF9ub3csIGRlbHRhKTsKQEAgLTMzOSw3ICszMTksNyBAQAogICAgICAgICBzaWduYWwoU0lHQUxSTSwgYWxhcm1faGFuZGxlcik7CiAgICAgICAgIHNldGl0aW1lcihJVElNRVJfUkVBTCwgJml0LCBOVUxMKTsKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYWxhcm0iLCAic2NoZWR1bGUgYWxhcm0gJWQgaW4gJWxkLiUwM2xkIHNlY29uZHNcbiIsCi0gICAgICAgICAgICAgICAgICAgIG5leHRhbGFybSwgZGVsdGEudHZfc2VjLCAoZGVsdGEudHZfdXNlYyAvIDEwMDApKSk7CisgICAgICAgICAgICAgICAgICAgIG5leHRhbGFybSwgKGxvbmcpIGRlbHRhLnR2X3NlYywgKGxvbmcpKGRlbHRhLnR2X3VzZWMgLyAxMDAwKSkpOwogIyBlbHNlICAvKiBIQVZFX1NFVElUSU1FUiAqLwogIyAgaWZkZWYgU0lHQUxSTQogICAgICAgICBzaWduYWwoU0lHQUxSTSwgYWxhcm1faGFuZGxlcik7CkBAIC00NjYsNyArNDQ2LDcgQEAKIAogICAgIERFQlVHTVNHVEwoKCJzbm1wX2FsYXJtIiwKICAgICAgICAgICAgICAgICAicmVnaXN0ZXJlZCBhbGFybSAlZCwgdCA9ICVsZC4lMDNsZCwgZmxhZ3M9MHglMDJ4XG4iLAotICAgICAgICAgICAgICAgICgqcyktPmNsaWVudHJlZywgKCpzKS0+dC50dl9zZWMsICgoKnMpLT50LnR2X3VzZWMgLyAxMDAwKSwKKyAgICAgICAgICAgICAgICAoKnMpLT5jbGllbnRyZWcsIChsb25nKSAoKnMpLT50LnR2X3NlYywgKGxvbmcpKCgqcyktPnQudHZfdXNlYyAvIDEwMDApLAogICAgICAgICAgICAgICAgICgqcyktPmZsYWdzKSk7CiAKICAgICBpZiAoc3RhcnRfYWxhcm1zKSB7CkBAIC00OTQsMTIgKzQ3NCwxMiBAQAogICAgIHN0cnVjdCBzbm1wX2FsYXJtICphOwogICAgIHN0cnVjdCB0aW1ldmFsICB0X25vdzsKICAgICBpZiAoKGEgPSBzYV9maW5kX3NwZWNpZmljKGNsaWVudHJlZykpICE9IE5VTEwpIHsKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZ0X25vdywgTlVMTCk7Ci0gICAgICAgIGEtPnRfbGFzdC50dl9zZWMgPSB0X25vdy50dl9zZWM7Ci0gICAgICAgIGEtPnRfbGFzdC50dl91c2VjID0gdF9ub3cudHZfdXNlYzsKLSAgICAgICAgYS0+dF9uZXh0LnR2X3NlYyA9IDA7Ci0gICAgICAgIGEtPnRfbmV4dC50dl91c2VjID0gMDsKLSAgICAgICAgTkVUU05NUF9USU1FUkFERCgmdF9ub3csICZhLT50LCAmYS0+dF9uZXh0KTsKKyAgICAgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZ0X25vdyk7CisgICAgICAgIGEtPnRfbGFzdE0udHZfc2VjID0gdF9ub3cudHZfc2VjOworICAgICAgICBhLT50X2xhc3RNLnR2X3VzZWMgPSB0X25vdy50dl91c2VjOworICAgICAgICBhLT50X25leHRNLnR2X3NlYyA9IDA7CisgICAgICAgIGEtPnRfbmV4dE0udHZfdXNlYyA9IDA7CisgICAgICAgIE5FVFNOTVBfVElNRVJBREQoJnRfbm93LCAmYS0+dCwgJmEtPnRfbmV4dE0pOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgREVCVUdNU0dUTCgoInNubXBfYWxhcm1fcmVzZXQiLCAiYWxhcm0gJWQgbm90IGZvdW5kXG4iLApkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wX2FwaS5jIGIvc25tcGxpYi9zbm1wX2FwaS5jCmluZGV4IGU5MDBhMjMuLmJhNWJhODMgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc25tcF9hcGkuYworKysgYi9zbm1wbGliL3NubXBfYXBpLmMKQEAgLTM4LDYgKzM4LDcgQEAKICAqIHNubXBfYXBpLmMgLSBBUEkgZm9yIGFjY2VzcyB0byBzbm1wLgogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3R5cGUuaD4KQEAgLTEzNSw4ICsxMzYsMTQgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdmFjbS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc3RhdGlzdGljcywgbGlibmV0c25tcCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzbm1wX2FwaSwgbGlibmV0c25tcCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihvaWRfaXNfc3VidHJlZSwgc25tcF9hcGkpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc25tcHYzX3Byb2JlX2NvbnRleHRFbmdpbmVJRF9yZmM1MzQzLCBzbm1wX2FwaSkKKwogI2lmIGRlZmluZWQoTkVUU05NUF9VU0VfT1BFTlNTTCkgJiYgZGVmaW5lZChIQVZFX0xJQlNTTCkKIGV4dGVybiB2b2lkIG5ldHNubXBfY2VydHNfaW5pdCh2b2lkKTsKK2V4dGVybiB2b2lkIG5ldHNubXBfY2VydHNfc2h1dGRvd24odm9pZCk7CiAjZW5kaWYKIAogc3RhdGljIHZvaWQgICAgIF9pbml0X3NubXAodm9pZCk7CkBAIC0xODcsNyArMTk0LDcgQEAKIAogI2RlZmluZSBERUZBVUxUX0NPTU1VTklUWSAgICJwdWJsaWMiCiAjZGVmaW5lIERFRkFVTFRfUkVUUklFUwkgICAgNQotI2RlZmluZSBERUZBVUxUX1RJTUVPVVQJICAgIDEwMDAwMDBMCisjZGVmaW5lIERFRkFVTFRfVElNRU9VVAkgICAgT05FX1NFQwogI2RlZmluZSBERUZBVUxUX1JFTVBPUlQJICAgIFNOTVBfUE9SVAogI2RlZmluZSBERUZBVUxUX0VOVEVSUFJJU0UgIGRlZmF1bHRfZW50ZXJwcmlzZQogI2RlZmluZSBERUZBVUxUX1RJTUUJICAgIDAKQEAgLTIyMiwxOCArMjI5LDYgQEAKICAgICBzaXplX3QgICAgICAgICAgcGFja2V0X2xlbiwgcGFja2V0X3NpemU7CiB9OwogCi0vKgotICogVGhlIGxpc3Qgb2YgYWN0aXZlL29wZW4gc2Vzc2lvbnMuCi0gKi8KLXN0cnVjdCBzZXNzaW9uX2xpc3QgewotICAgIHN0cnVjdCBzZXNzaW9uX2xpc3QgKm5leHQ7Ci0gICAgbmV0c25tcF9zZXNzaW9uICpzZXNzaW9uOwotICAgIG5ldHNubXBfdHJhbnNwb3J0ICp0cmFuc3BvcnQ7Ci0gICAgc3RydWN0IHNubXBfaW50ZXJuYWxfc2Vzc2lvbiAqaW50ZXJuYWw7Ci19OwotCi0KLQogc3RhdGljIGNvbnN0IGNoYXIgKmFwaV9lcnJvcnNbLVNOTVBFUlJfTUFYICsgMV0gPSB7CiAgICAgIk5vIGVycm9yIiwgICAgICAgICAgICAgICAgIC8qIFNOTVBFUlJfU1VDQ0VTUyAqLwogICAgICJHZW5lcmljIGVycm9yIiwgICAgICAgICAgICAvKiBTTk1QRVJSX0dFTkVSUiAqLwpAQCAtMzUzLDcgKzM0OCw2IEBACiAKIHN0YXRpYyB2b2lkICAgICBzbm1wdjNfY2FsY19tc2dfZmxhZ3MoaW50LCBpbnQsIHVfY2hhciAqKTsKIHN0YXRpYyBpbnQgICAgICBzbm1wdjNfdmVyaWZ5X21zZyhuZXRzbm1wX3JlcXVlc3RfbGlzdCAqLCBuZXRzbm1wX3BkdSAqKTsKLXN0YXRpYyBpbnQgICAgICBzbm1wdjNfYnVpbGRfcHJvYmVfcGR1KG5ldHNubXBfcGR1ICoqKTsKIHN0YXRpYyBpbnQgICAgICBzbm1wdjNfYnVpbGQodV9jaGFyICoqIHBrdCwgc2l6ZV90ICogcGt0X2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICogb2Zmc2V0LCBuZXRzbm1wX3Nlc3Npb24gKiBzZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3BkdSAqcGR1KTsKQEAgLTM5MSwxMiArMzg1LDE0IEBACiAgICAgICAgIHJldHVybiAiR0VUIjsKICAgICBjYXNlIFNOTVBfTVNHX0dFVE5FWFQ6CiAgICAgICAgIHJldHVybiAiR0VUTkVYVCI7Ci0gICAgY2FzZSBTTk1QX01TR19SRVNQT05TRToKLSAgICAgICAgcmV0dXJuICJSRVNQT05TRSI7Ci0gICAgY2FzZSBTTk1QX01TR19TRVQ6Ci0gICAgICAgIHJldHVybiAiU0VUIjsKICAgICBjYXNlIFNOTVBfTVNHX0dFVEJVTEs6CiAgICAgICAgIHJldHVybiAiR0VUQlVMSyI7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorICAgIGNhc2UgU05NUF9NU0dfU0VUOgorICAgICAgICByZXR1cm4gIlNFVCI7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgIGNhc2UgU05NUF9NU0dfUkVTUE9OU0U6CisgICAgICAgIHJldHVybiAiUkVTUE9OU0UiOwogICAgIGNhc2UgU05NUF9NU0dfSU5GT1JNOgogICAgICAgICByZXR1cm4gIklORk9STSI7CiAgICAgY2FzZSBTTk1QX01TR19UUkFQMjoKQEAgLTY3NSw3ICs2NzEsNyBAQAogICAgIHRtcFJlcWlkID0gbHJhbmQ0OCgpOwogICAgIHRtcE1zZ2lkID0gbHJhbmQ0OCgpOwogI2Vsc2UKLSAgICBzcmFuZG9tKHR2LnR2X3NlYyBeIHR2LnR2X3VzZWMpOworICAgIHNyYW5kb20oKHVuc2lnbmVkKSh0di50dl9zZWMgXiB0di50dl91c2VjKSk7CiAgICAgdG1wUmVxaWQgPSByYW5kb20oKTsKICAgICB0bXBNc2dpZCA9IHJhbmRvbSgpOwogI2VuZGlmCkBAIC03MTEsNiArNzA3LDggQEAKIAogICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0xJQlJBUllfSUQsIAogICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9IRVhfT1VUUFVUX0xFTkdUSCwgMTYpOworICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0xJQlJBUllfSUQsIE5FVFNOTVBfRFNfTElCX1JFVFJJRVMsCisgICAgICAgICAgICAgICAgICAgICAgIERFRkFVTFRfUkVUUklFUyk7CiAKICNpZmRlZiBORVRTTk1QX1VTRV9SRVZFUlNFX0FTTkVOQ09ESU5HCiAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIApAQCAtNzg3LDYgKzc4NSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub0NvbnRleHRFbmdpbmVJRERpc2NvdmVyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJSQVJZX0lELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX05PX0RJU0NPVkVSWSk7CisgICAgbmV0c25tcF9kc19yZWdpc3Rlcl9jb25maWcoQVNOX0lOVEVHRVIsICJzbm1wIiwgInRpbWVvdXQiLAorCQkgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQlJBUllfSUQsIE5FVFNOTVBfRFNfTElCX1RJTUVPVVQpOworICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9JTlRFR0VSLCAic25tcCIsICJyZXRyaWVzIiwKKwkJICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJSQVJZX0lELCBORVRTTk1QX0RTX0xJQl9SRVRSSUVTKTsKIAogICAgIG5ldHNubXBfcmVnaXN0ZXJfc2VydmljZV9oYW5kbGVycygpOwogfQpAQCAtODQ0LDYgKzg0NiwxMSBAQAogI2lmIGRlZmluZWQoTkVUU05NUF9VU0VfT1BFTlNTTCkgJiYgZGVmaW5lZChIQVZFX0xJQlNTTCkKICAgICBuZXRzbm1wX2NlcnRzX2luaXQoKTsKICNlbmRpZgorI2lmZGVmIEROU1NFQ19MT0NBTF9WQUxJREFUSU9OCisgICAgbmV0c25tcF9kc19yZWdpc3Rlcl9jb25maWcoQVNOX0JPT0xFQU4sICJzbm1wIiwgImRuc3NlY1dhcm5Pbmx5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQlJBUllfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfRE5TU0VDX1dBUk5fT05MWSk7CisjZW5kaWYKIAogICAgIHJlYWRfcHJlbWliX2NvbmZpZ3MoKTsKICNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX01JQl9MT0FESU5HCkBAIC05MDUsNiArOTEyLDkgQEAKICNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX01JQl9MT0FESU5HCiAgICAgc2h1dGRvd25fbWliKCk7CiAjZW5kaWYgLyogTkVUU05NUF9ESVNBQkxFX01JQl9MT0FESU5HICovCisjaWYgZGVmaW5lZChORVRTTk1QX1VTRV9PUEVOU1NMKSAmJiBkZWZpbmVkKEhBVkVfTElCU1NMKQorICAgIG5ldHNubXBfY2VydHNfc2h1dGRvd24oKTsKKyNlbmRpZgogICAgIHVucmVnaXN0ZXJfYWxsX2NvbmZpZ19oYW5kbGVycygpOwogICAgIG5ldHNubXBfY29udGFpbmVyX2ZyZWVfbGlzdCgpOwogICAgIGNsZWFyX3NlY19tb2QoKTsKQEAgLTkxMiwxMCArOTIyLDkgQEAKICAgICBuZXRzbm1wX2NsZWFyX3Rkb21haW5fbGlzdCgpOwogICAgIGNsZWFyX2NhbGxiYWNrKCk7CiAgICAgbmV0c25tcF9kc19zaHV0ZG93bigpOwotICAgIGNsZWFyX3VzZXJfbGlzdCgpOwogICAgIG5ldHNubXBfY2xlYXJfZGVmYXVsdF90YXJnZXQoKTsKICAgICBuZXRzbm1wX2NsZWFyX2RlZmF1bHRfZG9tYWluKCk7Ci0gICAgZnJlZV9ldGltZWxpc3QoKTsKKyAgICBzaHV0ZG93bl9zZWNtb2QoKTsKIAogICAgIGluaXRfc25tcF9pbml0X2RvbmUgID0gMDsKICAgICBfaW5pdF9zbm1wX2luaXRfZG9uZSA9IDA7CkBAIC05NDksNiArOTU4LDggQEAKIC8qCiAgKiBleHRlbmRlZCBvcGVuIAogICovCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc25tcF9vcGVuX2V4LCBuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QX09QRU5fRVgKIG5ldHNubXBfc2Vzc2lvbiAqCiBzbm1wX29wZW5fZXgobmV0c25tcF9zZXNzaW9uICpzZXNzaW9uLAogICAgICAgICAgICAgIGludCAoKmZwcmVfcGFyc2UpCShuZXRzbm1wX3Nlc3Npb24gKiwgbmV0c25tcF90cmFuc3BvcnQgKiwKQEAgLTk4Myw2ICs5OTQsNyBAQAogCiAgICAgcmV0dXJuIChzbHAtPnNlc3Npb24pOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05NUF9PUEVOX0VYICovCiAKIHN0YXRpYyBzdHJ1Y3Qgc2Vzc2lvbl9saXN0ICoKIF9zZXNzX2NvcHkobmV0c25tcF9zZXNzaW9uICogaW5fc2Vzc2lvbikKQEAgLTExNzIsMTAgKzExODQsMjIgQEAKICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlOYW1lTGVuID0gc3RybGVuKGNwKTsKICAgICB9CiAKLSAgICBpZiAoc2Vzc2lvbi0+cmV0cmllcyA9PSBTTk1QX0RFRkFVTFRfUkVUUklFUykKLSAgICAgICAgc2Vzc2lvbi0+cmV0cmllcyA9IERFRkFVTFRfUkVUUklFUzsKLSAgICBpZiAoc2Vzc2lvbi0+dGltZW91dCA9PSBTTk1QX0RFRkFVTFRfVElNRU9VVCkKLSAgICAgICAgc2Vzc2lvbi0+dGltZW91dCA9IERFRkFVTFRfVElNRU9VVDsKKyAgICBpZiAoc2Vzc2lvbi0+cmV0cmllcyA9PSBTTk1QX0RFRkFVTFRfUkVUUklFUykgeworICAgICAgICBpbnQgcmV0cnkgPSBuZXRzbm1wX2RzX2dldF9pbnQoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfUkVUUklFUyk7CisgICAgICAgIGlmIChyZXRyeSA8IDApCisgICAgICAgICAgICBzZXNzaW9uLT5yZXRyaWVzID0gREVGQVVMVF9SRVRSSUVTOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXNzaW9uLT5yZXRyaWVzID0gcmV0cnk7CisgICAgfQorICAgIGlmIChzZXNzaW9uLT50aW1lb3V0ID09IFNOTVBfREVGQVVMVF9USU1FT1VUKSB7CisgICAgICAgIGludCB0aW1lb3V0ID0gbmV0c25tcF9kc19nZXRfaW50KE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfVElNRU9VVCk7CisgICAgICAgIGlmICh0aW1lb3V0IDw9IDApCisgICAgICAgICAgICBzZXNzaW9uLT50aW1lb3V0ID0gREVGQVVMVF9USU1FT1VUOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXNzaW9uLT50aW1lb3V0ID0gdGltZW91dCAqIE9ORV9TRUM7CisgICAgfQogICAgIHNlc3Npb24tPnNlc3NpZCA9IHNubXBfZ2V0X25leHRfc2Vzc2lkKCk7CiAKICAgICBzbm1wX2NhbGxfY2FsbGJhY2tzKFNOTVBfQ0FMTEJBQ0tfTElCUkFSWSwgU05NUF9DQUxMQkFDS19TRVNTSU9OX0lOSVQsCkBAIC0xMjI3LDYgKzEyNTEsNyBAQAogICAgIHJldHVybiBwc2w7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QVjNfUFJPQkVfQ09OVEVYVEVOR0lORUlEX1JGQzUzNDMKIC8qKgogICogcHJvYmUgZm9yIGVuZ2luZUlEIHVzaW5nIFJGQyA1MzQzIHByb2JpbmcgbWVjaGFuaXNtcwogICoKQEAgLTEzMTYsNiArMTM0MSw3IEBACiAgICAgfQogICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QVjNfUFJPQkVfQ09OVEVYVEVOR0lORUlEX1JGQzUzNDMgKi8KIAogCiAvKioKQEAgLTEzMzcsMTYgKzEzNjMsMTcgQEAKIHNubXB2M19lbmdpbmVJRF9wcm9iZShzdHJ1Y3Qgc2Vzc2lvbl9saXN0ICpzbHAsCiAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXNzaW9uICogaW5fc2Vzc2lvbikKIHsKLSAgICBuZXRzbm1wX3BkdSAgICAqcGR1ID0gTlVMTCwgKnJlc3BvbnNlID0gTlVMTDsKICAgICBuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb247Ci0gICAgdW5zaWduZWQgaW50ICAgIGk7CiAgICAgaW50ICAgICAgICAgICAgIHN0YXR1czsKKyAgICBzdHJ1Y3Qgc25tcF9zZWNtb2RfZGVmICpzcHRyID0gTlVMTDsKIAogICAgIGlmIChzbHAgPT0gTlVMTCB8fCBzbHAtPnNlc3Npb24gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICBzZXNzaW9uID0gc2xwLT5zZXNzaW9uOworICAgIG5ldHNubXBfYXNzZXJ0X29yX3JldHVybihzZXNzaW9uICE9IE5VTEwsIDApOworICAgIHNwdHIgPSBmaW5kX3NlY19tb2Qoc2Vzc2lvbi0+c2VjdXJpdHlNb2RlbCk7CiAKICAgICAvKgogICAgICAqIElmIHdlIGFyZSBvcGVuaW5nIGEgVjMgc2Vzc2lvbiBhbmQgd2UgZG9uJ3Qga25vdyBlbmdpbmVJRCB3ZSBtdXN0IHByb2JlCkBAIC0xMzU0LDkwICsxMzgxLDMwIEBACiAgICAgICogbGlzdCBzbyB0aGF0IHRoZSByZXNwb25zZSBjYW4gaGFuZGxlZCBjb3JyZWN0bHkuIAogICAgICAqLwogCi0gICAgaWYgKChzZXNzaW9uLT5mbGFncyAmIFNOTVBfRkxBR1NfRE9OVF9QUk9CRSkgPT0gU05NUF9GTEFHU19ET05UX1BST0JFKQotICAgICAgICByZXR1cm4gMTsKLQotICAgIGlmIChzZXNzaW9uLT52ZXJzaW9uID09IFNOTVBfVkVSU0lPTl8zKSB7Ci0gICAgICAgIHN0cnVjdCBzbm1wX3NlY21vZF9kZWYgKnNwdHIgPSBmaW5kX3NlY19tb2Qoc2Vzc2lvbi0+c2VjdXJpdHlNb2RlbCk7Ci0KKyAgICBpZiAoc2Vzc2lvbi0+dmVyc2lvbiA9PSBTTk1QX1ZFUlNJT05fMyAmJgorICAgICAgICAoMCA9PSAoc2Vzc2lvbi0+ZmxhZ3MgJiBTTk1QX0ZMQUdTX0RPTlRfUFJPQkUpKSkgewogICAgICAgICBpZiAoTlVMTCAhPSBzcHRyICYmIE5VTEwgIT0gc3B0ci0+cHJvYmVfZW5naW5laWQpIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FwaSIsICJwcm9iaW5nIGZvciBlbmdpbmVJRCB1c2luZyBzZWN1cml0eSBtb2RlbCBjYWxsYmFjay4uLlxuIikpOwogICAgICAgICAgICAgLyogc2VjdXJpdHkgbW9kZWwgc3BlY2lmaWMgbWVjaGFuaXNtIG9mIGRldGVybWluaW5nIGVuZ2luZUlEICovCi0gICAgICAgICAgICBzdGF0dXMgPSAoKnNwdHItPnByb2JlX2VuZ2luZWlkKSAoc2xwLCBzZXNzaW9uKTsKLSAgICAgICAgICAgIGlmIChzdGF0dXMpCisgICAgICAgICAgICBzdGF0dXMgPSAoKnNwdHItPnByb2JlX2VuZ2luZWlkKSAoc2xwLCBpbl9zZXNzaW9uKTsKKyAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gU05NUEVSUl9TVUNDRVNTKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgcmV0dXJuIDE7IC8qIHN1Y2Nlc3MhICovCi0gICAgICAgIH0gZWxzZSBpZiAoc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRExlbiA9PSAwKSB7Ci0gICAgICAgICAgICBpZiAoc25tcHYzX2J1aWxkX3Byb2JlX3BkdSgmcGR1KSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYXBpIiwgInVuYWJsZSB0byBjcmVhdGUgcHJvYmUgUERVXG4iKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgic25tcF9hcGkiLCAicHJvYmluZyBmb3IgZW5naW5lSUQuLi5cbiIpKTsKLSAgICAgICAgICAgIHNlc3Npb24tPmZsYWdzIHw9IFNOTVBfRkxBR1NfRE9OVF9QUk9CRTsgLyogcHJldmVudCByZWN1cnNpb24gKi8KLSAgICAgICAgICAgIHN0YXR1cyA9IHNubXBfc2Vzc19zeW5jaF9yZXNwb25zZShzbHAsIHBkdSwgJnJlc3BvbnNlKTsKLQotICAgICAgICAgICAgaWYgKChyZXNwb25zZSA9PSBOVUxMKSAmJiAoc3RhdHVzID09IFNUQVRfU1VDQ0VTUykpIHsKLSAgICAgICAgICAgICAgICBzdGF0dXMgPSBTVEFUX0VSUk9SOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzd2l0Y2ggKHN0YXR1cykgewotICAgICAgICAgICAgY2FzZSBTVEFUX1NVQ0NFU1M6Ci0gICAgICAgICAgICAgICAgaW5fc2Vzc2lvbi0+c19zbm1wX2Vycm5vID0gU05NUEVSUl9JTlZBTElEX01TRzsgLyogWFg/PyAqLwotICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX3Nlc3Nfb3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImVycm9yOiBleHBlY3RlZCBSZXBvcnQgYXMgcmVzcG9uc2UgdG8gcHJvYmU6ICVzICglbGQpXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfZXJyc3RyaW5nKHJlc3BvbnNlLT5lcnJzdGF0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS0+ZXJyc3RhdCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTVEFUX0VSUk9SOiAgIC8qIHRoaXMgaXMgd2hhdCB3ZSBleHBlY3RlZCAtPiBSZXBvcnQgPT0gU1RBVF9FUlJPUiAqLwotICAgICAgICAgICAgICAgIGluX3Nlc3Npb24tPnNfc25tcF9lcnJubyA9IFNOTVBFUlJfVU5LTk9XTl9FTkdfSUQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFNUQVRfVElNRU9VVDoKLSAgICAgICAgICAgICAgICBpbl9zZXNzaW9uLT5zX3NubXBfZXJybm8gPSBTTk1QRVJSX1RJTUVPVVQ7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX3Nlc3Nfb3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuYWJsZSB0byBjb25uZWN0IHdpdGggcmVtb3RlIGVuZ2luZTogJXMgKCVkKVxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX2FwaV9lcnJzdHJpbmcoc2Vzc2lvbi0+c19zbm1wX2Vycm5vKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zX3NubXBfZXJybm8pKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHNscC0+c2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRExlbiA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYXBpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5hYmxlIHRvIGRldGVybWluZSByZW1vdGUgZW5naW5lIElEXG4iKSk7Ci0gICAgICAgICAgICAgICAgLyogY2xlYXIgdGhlIGZsYWcgc28gdGhhdCBwcm9iZSBvY2N1cnMgb24gbmV4dCBpbmZvcm0gKi8KLSAgICAgICAgICAgICAgICBzZXNzaW9uLT5mbGFncyAmPSB+U05NUF9GTEFHU19ET05UX1BST0JFOwotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpbl9zZXNzaW9uLT5zX3NubXBfZXJybm8gPSBTTk1QRVJSX1NVQ0NFU1M7Ci0gICAgICAgICAgICBpZiAoc25tcF9nZXRfZG9fZGVidWdnaW5nKCkpIHsKLSAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic25tcF9zZXNzX29wZW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIHByb2JlIGZvdW5kIGVuZ2luZUlEOiAgIikpOwotICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzbHAtPnNlc3Npb24tPnNlY3VyaXR5RW5naW5lSURMZW47IGkrKykKLSAgICAgICAgICAgICAgICAgICAgREVCVUdNU0coKCJzbm1wX3Nlc3Nfb3BlbiIsICIlMDJ4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNscC0+c2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRFtpXSkpOwotICAgICAgICAgICAgICAgIERFQlVHTVNHKCgic25tcF9zZXNzX29wZW4iLCAiXG4iKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvKgotICAgICAgICAgKiBpZiBib290L3RpbWUgc3VwcGxpZWQgc2V0IGl0IGZvciB0aGlzIGVuZ2luZUlEIAotICAgICAgICAgKi8KLSAgICAgICAgaWYgKHNlc3Npb24tPmVuZ2luZUJvb3RzIHx8IHNlc3Npb24tPmVuZ2luZVRpbWUpIHsKLSAgICAgICAgICAgIHNldF9lbmdpbmV0aW1lKHNlc3Npb24tPnNlY3VyaXR5RW5naW5lSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+ZW5naW5lQm9vdHMsIHNlc3Npb24tPmVuZ2luZVRpbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjcmVhdGVfdXNlcl9mcm9tX3Nlc3Npb24oc2xwLT5zZXNzaW9uKSAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKLSAgICAgICAgICAgIGluX3Nlc3Npb24tPnNfc25tcF9lcnJubyA9IFNOTVBFUlJfVU5LTk9XTl9VU0VSX05BTUU7ICAgICAgIC8qIFhYPz8gKi8KLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FwaSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAic25tcHYzX2VuZ2luZV9wcm9iZSgpOiBmYWlsZWQoMikgdG8gY3JlYXRlIGEgbmV3IHVzZXIgZnJvbSBzZXNzaW9uXG4iKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBYWFg6IGRlZmF1bHQgdG8gdGhlIGRlZmF1bHQgUkZDNTM0MyBjb250ZXh0RW5naW5lSUQgUHJvYmU/ICovCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgIH0KIAorICAgIC8qCisgICAgICogc2VlIGlmIHRoZXJlIGlzIGEgaG9vayB0byBjYWxsIG5vdyB0aGF0IHdlJ3JlIGRvbmUgcHJvYmluZyBmb3IgYW4KKyAgICAgKiBlbmdpbmVJRAorICAgICAqLworICAgIGlmIChzcHRyICYmIHNwdHItPnBvc3RfcHJvYmVfZW5naW5laWQpIHsKKyAgICAgICAgc3RhdHVzID0gKCpzcHRyLT5wb3N0X3Byb2JlX2VuZ2luZWlkKShzbHAsIGluX3Nlc3Npb24pOworICAgICAgICBpZiAoc3RhdHVzICE9IFNOTVBFUlJfU1VDQ0VTUykKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIHJldHVybiAxOwogfQogCkBAIC0xNTg3LDEyICsxNTU0LDEyIEBACiAgICAgICAgIGlmIChpbl9zZXNzaW9uLT5mbGFncyAmIFNOTVBfRkxBR1NfU1RSRUFNX1NPQ0tFVCkgewogICAgICAgICAgICAgdHJhbnNwb3J0ID0KICAgICAgICAgICAgICAgICBuZXRzbm1wX3Rkb21haW5fdHJhbnNwb3J0X2Z1bGwoInNubXAiLCBpbl9zZXNzaW9uLT5wZWVybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fc2Vzc2lvbi0+bG9jYWxfcG9ydCwgInRjcCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX3Nlc3Npb24tPmxvY2FsX3BvcnQsICJ0Y3AsdGNwNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdHJhbnNwb3J0ID0KICAgICAgICAgICAgICAgICBuZXRzbm1wX3Rkb21haW5fdHJhbnNwb3J0X2Z1bGwoInNubXAiLCBpbl9zZXNzaW9uLT5wZWVybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fc2Vzc2lvbi0+bG9jYWxfcG9ydCwgInVkcCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX3Nlc3Npb24tPmxvY2FsX3BvcnQsICJ1ZHAsdWRwNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogICAgICAgICB9CiAKQEAgLTE3ODEsMTggKzE3NDgsMTEgQEAKICAgICBpZiAoc2xwLT5zZXNzaW9uLT52ZXJzaW9uID09IFNOTVBfVkVSU0lPTl8zKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX3Nlc3NfYWRkIiwKICAgICAgICAgICAgICAgICAgICAgImFkZGluZyB2MyBzZXNzaW9uIC0tIG1heWJlIGVuZ2luZUlEIHByb2JlIG5vd1xuIikpOwotICAgICAgICBpZiAoIXNubXB2M19lbmdpbmVJRF9wcm9iZShzbHAsIGluX3Nlc3Npb24pKSB7CisgICAgICAgIGlmICghc25tcHYzX2VuZ2luZUlEX3Byb2JlKHNscCwgc2xwLT5zZXNzaW9uKSkgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfc2Vzc19hZGQiLCAiZW5naW5lIElEIHByb2JlIGZhaWxlZFxuIikpOwogICAgICAgICAgICAgc25tcF9zZXNzX2Nsb3NlKHNscCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBpZiAoY3JlYXRlX3VzZXJfZnJvbV9zZXNzaW9uKHNscC0+c2Vzc2lvbikgIT0gU05NUEVSUl9TVUNDRVNTKSB7Ci0gICAgICAgICAgICBpbl9zZXNzaW9uLT5zX3NubXBfZXJybm8gPSBTTk1QRVJSX1VOS05PV05fVVNFUl9OQU1FOwotICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYXBpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzbm1wX3Nlc3NfYWRkKCk6IGZhaWxlZCgyKSB0byBjcmVhdGUgYSBuZXcgdXNlciBmcm9tIHNlc3Npb25cbiIpKTsKLSAgICAgICAgICAgIHNubXBfc2Vzc19jbG9zZShzbHApOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KICAgICB9CiAKICAgICBzbHAtPnNlc3Npb24tPmZsYWdzICY9IH5TTk1QX0ZMQUdTX0RPTlRfUFJPQkU7CkBAIC0xODI2LDIyMiArMTc4NiwxNyBAQAogICAgIHJldHVybiBwdm9pZDsKIH0KIAotCi0KLS8qCi0gKiBjcmVhdGVfdXNlcl9mcm9tX3Nlc3Npb24obmV0c25tcF9zZXNzaW9uICpzZXNzaW9uKToKLSAqIAotICogY3JlYXRlcyBhIHVzZXIgaW4gdGhlIHVzbSB0YWJsZSBmcm9tIHRoZSBpbmZvcm1hdGlvbiBpbiBhIHNlc3Npb24uCi0gKiBJZiB0aGUgdXNlciBhbHJlYWR5IGV4aXN0cywgaXQgaXMgdXBkYXRlZCB3aXRoIHRoZSBjdXJyZW50Ci0gKiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBzZXNzaW9uCi0gKiAKLSAqIFBhcmFtZXRlcnM6Ci0gKiBzZXNzaW9uIC0tIElOOiBwb2ludGVyIHRvIHRoZSBzZXNzaW9uIHRvIHVzZSB3aGVuIGNyZWF0aW5nIHRoZSB1c2VyLgotICogCi0gKiBSZXR1cm5zOgotICogU05NUEVSUl9TVUNDRVNTCi0gKiBTTk1QRVJSX0dFTkVSUiAKLSAqLwogaW50Ci1jcmVhdGVfdXNlcl9mcm9tX3Nlc3Npb24obmV0c25tcF9zZXNzaW9uICogc2Vzc2lvbikKLXsKLSAgICBzdHJ1Y3QgdXNtVXNlciAqdXNlcjsKLSAgICBpbnQgICAgICAgICAgICAgdXNlcl9qdXN0X2NyZWF0ZWQgPSAwOwotICAgIGNoYXIgKmNwOworY3JlYXRlX3VzZXJfZnJvbV9zZXNzaW9uKG5ldHNubXBfc2Vzc2lvbiAqIHNlc3Npb24pIHsKKyNpZmRlZiBORVRTTk1QX1NFQ01PRF9VU00KKyAgICByZXR1cm4gdXNtX2NyZWF0ZV91c2VyX2Zyb21fc2Vzc2lvbihzZXNzaW9uKTsKKyNlbHNlCisgICAgc25tcF9sb2coTE9HX0VSUiwgImNyZWF0ZV91c2VyX2Zyb21fc2Vzc2lvbiBjYWxsZWQgd2hlbiBVU00gd2Fzbid0IGNvbXBpbGVkIGluIik7CisgICAgbmV0c25tcF9hc3NlcnQoMCA9PSAxKTsKKyAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOworI2VuZGlmCit9CiAKLSAgICAvKgotICAgICAqIC0gZG9uJ3QgY3JlYXRlLWFub3RoZXIvY29weS1pbnRvIHVzZXIgZm9yIHRoaXMgc2Vzc2lvbiBieSBkZWZhdWx0Ci0gICAgICogLSBiYWlsIG5vdyAobm8gZXJyb3IpIGlmIHdlIGRvbid0IGhhdmUgYW4gZW5naW5lSUQKLSAgICAgKi8KLSAgICBpZiAoU05NUF9GTEFHU19VU0VSX0NSRUFURUQgPT0gKHNlc3Npb24tPmZsYWdzICYgU05NUF9GTEFHU19VU0VSX0NSRUFURUQpIHx8Ci0gICAgICAgIHNlc3Npb24tPnNlY3VyaXR5TW9kZWwgIT0gU05NUF9TRUNfTU9ERUxfVVNNIHx8Ci0gICAgICAgIHNlc3Npb24tPnZlcnNpb24gIT0gU05NUF9WRVJTSU9OXzMgfHwKLSAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlOYW1lTGVuID09IDAgfHwKLSAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRExlbiA9PSAwKQotICAgICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwotCi0gICAgc2Vzc2lvbi0+ZmxhZ3MgfD0gU05NUF9GTEFHU19VU0VSX0NSRUFURUQ7Ci0KLSAgICAvKgotICAgICAqIG5vdyB0aGF0IHdlIGhhdmUgdGhlIGVuZ2luZUlELCBjcmVhdGUgYW4gZW50cnkgaW4gdGhlIFVTTSBsaXN0Ci0gICAgICogZm9yIHRoaXMgdXNlciB1c2luZyB0aGUgaW5mb3JtYXRpb24gaW4gdGhlIHNlc3Npb24gCi0gICAgICovCi0gICAgdXNlciA9IHVzbV9nZXRfdXNlcl9mcm9tX2xpc3Qoc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5TmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c21fZ2V0X3VzZXJMaXN0KCksIDApOwotICAgIGlmICh1c2VyID09IE5VTEwpIHsKLSAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYXBpIiwgIkJ1aWxkaW5nIHVzZXIgJXMuLi5cbiIsCi0gICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5TmFtZSkpOwotICAgICAgICAvKgotICAgICAgICAgKiB1c2VyIGRvZXNuJ3QgZXhpc3Qgc28gd2UgY3JlYXRlIGFuZCBhZGQgaXQgCi0gICAgICAgICAqLwotICAgICAgICB1c2VyID0gKHN0cnVjdCB1c21Vc2VyICopIGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IHVzbVVzZXIpKTsKLSAgICAgICAgaWYgKHVzZXIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKLQotICAgICAgICAvKgotICAgICAgICAgKiBjb3B5IGluIHRoZSBzZWN1cml0eU5hbWUgCi0gICAgICAgICAqLwotICAgICAgICBpZiAoc2Vzc2lvbi0+c2VjdXJpdHlOYW1lKSB7Ci0gICAgICAgICAgICB1c2VyLT5uYW1lID0gc3RyZHVwKHNlc3Npb24tPnNlY3VyaXR5TmFtZSk7Ci0gICAgICAgICAgICB1c2VyLT5zZWNOYW1lID0gc3RyZHVwKHNlc3Npb24tPnNlY3VyaXR5TmFtZSk7Ci0gICAgICAgICAgICBpZiAodXNlci0+bmFtZSA9PSBOVUxMIHx8IHVzZXItPnNlY05hbWUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLyoKLSAgICAgICAgICogY29weSBpbiB0aGUgZW5naW5lSUQgCi0gICAgICAgICAqLwotICAgICAgICBpZiAobWVtZHVwKCZ1c2VyLT5lbmdpbmVJRCwgc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRCwKLSAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuKSAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKLSAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7Ci0gICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7Ci0gICAgICAgIH0KLSAgICAgICAgdXNlci0+ZW5naW5lSURMZW4gPSBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuOwotCi0gICAgICAgIHVzZXJfanVzdF9jcmVhdGVkID0gMTsKLSAgICB9Ci0KLSAgICAvKgotICAgICAqIGNvcHkgdGhlIGF1dGggcHJvdG9jb2wgCi0gICAgICovCi0gICAgaWYgKHVzZXItPmF1dGhQcm90b2NvbCA9PSBOVUxMICYmIHNlc3Npb24tPnNlY3VyaXR5QXV0aFByb3RvICE9IE5VTEwpIHsKLSAgICAgICAgU05NUF9GUkVFKHVzZXItPmF1dGhQcm90b2NvbCk7Ci0gICAgICAgIHVzZXItPmF1dGhQcm90b2NvbCA9Ci0gICAgICAgICAgICBzbm1wX2R1cGxpY2F0ZV9vYmppZChzZXNzaW9uLT5zZWN1cml0eUF1dGhQcm90bywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5QXV0aFByb3RvTGVuKTsKLSAgICAgICAgaWYgKHVzZXItPmF1dGhQcm90b2NvbCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICB1c21fZnJlZV91c2VyKHVzZXIpOwotICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwotICAgICAgICB9Ci0gICAgICAgIHVzZXItPmF1dGhQcm90b2NvbExlbiA9IHNlc3Npb24tPnNlY3VyaXR5QXV0aFByb3RvTGVuOwotICAgIH0KLQotICAgIC8qCi0gICAgICogY29weSB0aGUgcHJpdiBwcm90b2NvbCAKLSAgICAgKi8KLSAgICBpZiAodXNlci0+cHJpdlByb3RvY29sID09IE5VTEwgJiYgc2Vzc2lvbi0+c2VjdXJpdHlQcml2UHJvdG8gIT0gTlVMTCkgewotICAgICAgICBTTk1QX0ZSRUUodXNlci0+cHJpdlByb3RvY29sKTsKLSAgICAgICAgdXNlci0+cHJpdlByb3RvY29sID0KLSAgICAgICAgICAgIHNubXBfZHVwbGljYXRlX29iamlkKHNlc3Npb24tPnNlY3VyaXR5UHJpdlByb3RvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlQcml2UHJvdG9MZW4pOwotICAgICAgICBpZiAodXNlci0+cHJpdlByb3RvY29sID09IE5VTEwpIHsKLSAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7Ci0gICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7Ci0gICAgICAgIH0KLSAgICAgICAgdXNlci0+cHJpdlByb3RvY29sTGVuID0gc2Vzc2lvbi0+c2VjdXJpdHlQcml2UHJvdG9MZW47Ci0gICAgfQotCi0gICAgLyoKLSAgICAgKiBjb3B5IGluIHRoZSBhdXRoZW50aWNhdGlvbiBLZXkuICBJZiBub3QgbG9jYWxpemVkLCBsb2NhbGl6ZSBpdCAKLSAgICAgKi8KLSAgICBpZiAodXNlci0+YXV0aEtleSA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChzZXNzaW9uLT5zZWN1cml0eUF1dGhMb2NhbEtleSAhPSBOVUxMCi0gICAgICAgICAgICAmJiBzZXNzaW9uLT5zZWN1cml0eUF1dGhMb2NhbEtleUxlbiAhPSAwKSB7Ci0gICAgICAgICAgICAvKiBhbHJlYWR5IGxvY2FsaXplZCBrZXkgcGFzc2VkIGluLiAgdXNlIGl0ICovCi0gICAgICAgICAgICBTTk1QX0ZSRUUodXNlci0+YXV0aEtleSk7Ci0gICAgICAgICAgICBpZiAobWVtZHVwKCZ1c2VyLT5hdXRoS2V5LCBzZXNzaW9uLT5zZWN1cml0eUF1dGhMb2NhbEtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlBdXRoTG9jYWxLZXlMZW4pICE9IFNOTVBFUlJfU1VDQ0VTUykgewotICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdXNlci0+YXV0aEtleUxlbiA9IHNlc3Npb24tPnNlY3VyaXR5QXV0aExvY2FsS2V5TGVuOwotICAgICAgICB9IGVsc2UgaWYgKHNlc3Npb24tPnNlY3VyaXR5QXV0aEtleSAhPSBOVUxMCi0gICAgICAgICAgICAgICAgICAgJiYgc2Vzc2lvbi0+c2VjdXJpdHlBdXRoS2V5TGVuICE9IDApIHsKLSAgICAgICAgICAgIFNOTVBfRlJFRSh1c2VyLT5hdXRoS2V5KTsKLSAgICAgICAgICAgIHVzZXItPmF1dGhLZXkgPSAodV9jaGFyICopIGNhbGxvYygxLCBVU01fTEVOR1RIX0tVX0hBU0hCTE9DSyk7Ci0gICAgICAgICAgICBpZiAodXNlci0+YXV0aEtleSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcih1c2VyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB1c2VyLT5hdXRoS2V5TGVuID0gVVNNX0xFTkdUSF9LVV9IQVNIQkxPQ0s7Ci0gICAgICAgICAgICBpZiAoZ2VuZXJhdGVfa3VsKHVzZXItPmF1dGhQcm90b2NvbCwgdXNlci0+YXV0aFByb3RvY29sTGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUF1dGhLZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5QXV0aEtleUxlbiwgdXNlci0+YXV0aEtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVzZXItPmF1dGhLZXlMZW4pICE9IFNOTVBFUlJfU1VDQ0VTUykgewotICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKChjcCA9IG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9BVVRITE9DQUxJWkVES0VZKSkpIHsKLSAgICAgICAgICAgIHNpemVfdCBidWZsZW4gPSBVU01fQVVUSF9LVV9MRU47Ci0gICAgICAgICAgICBTTk1QX0ZSRUUodXNlci0+YXV0aEtleSk7Ci0gICAgICAgICAgICB1c2VyLT5hdXRoS2V5ID0gKHVfY2hhciAqKW1hbGxvYyhidWZsZW4pOyAvKiBtYXggbGVuZ3RoIG5lZWRlZCAqLwotICAgICAgICAgICAgdXNlci0+YXV0aEtleUxlbiA9IDA7Ci0gICAgICAgICAgICAvKiBpdCB3aWxsIGJlIGEgaGV4IHN0cmluZyAqLwotICAgICAgICAgICAgaWYgKCFzbm1wX2hleF90b19iaW5hcnkoJnVzZXItPmF1dGhLZXksICZidWZsZW4sICZ1c2VyLT5hdXRoS2V5TGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgY3ApKSB7Ci0gICAgICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcih1c2VyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKgotICAgICAqIGNvcHkgaW4gdGhlIHByaXZhY3kgS2V5LiAgSWYgbm90IGxvY2FsaXplZCwgbG9jYWxpemUgaXQgCi0gICAgICovCi0gICAgaWYgKHVzZXItPnByaXZLZXkgPT0gTlVMTCkgewotICAgICAgICBpZiAoc2Vzc2lvbi0+c2VjdXJpdHlQcml2TG9jYWxLZXkgIT0gTlVMTAotICAgICAgICAgICAgJiYgc2Vzc2lvbi0+c2VjdXJpdHlQcml2TG9jYWxLZXlMZW4gIT0gMCkgewotICAgICAgICAgICAgLyogYWxyZWFkeSBsb2NhbGl6ZWQga2V5IHBhc3NlZCBpbi4gIHVzZSBpdCAqLwotICAgICAgICAgICAgU05NUF9GUkVFKHVzZXItPnByaXZLZXkpOwotICAgICAgICAgICAgaWYgKG1lbWR1cCgmdXNlci0+cHJpdktleSwgc2Vzc2lvbi0+c2VjdXJpdHlQcml2TG9jYWxLZXksCi0gICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5UHJpdkxvY2FsS2V5TGVuKSAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKLSAgICAgICAgICAgICAgICB1c21fZnJlZV91c2VyKHVzZXIpOwotICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHVzZXItPnByaXZLZXlMZW4gPSBzZXNzaW9uLT5zZWN1cml0eVByaXZMb2NhbEtleUxlbjsKLSAgICAgICAgfSBlbHNlIGlmIChzZXNzaW9uLT5zZWN1cml0eVByaXZLZXkgIT0gTlVMTAotICAgICAgICAgICAgICAgICAgICYmIHNlc3Npb24tPnNlY3VyaXR5UHJpdktleUxlbiAhPSAwKSB7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUodXNlci0+cHJpdktleSk7Ci0gICAgICAgICAgICB1c2VyLT5wcml2S2V5ID0gKHVfY2hhciAqKSBjYWxsb2MoMSwgVVNNX0xFTkdUSF9LVV9IQVNIQkxPQ0spOwotICAgICAgICAgICAgaWYgKHVzZXItPnByaXZLZXkgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdXNlci0+cHJpdktleUxlbiA9IFVTTV9MRU5HVEhfS1VfSEFTSEJMT0NLOwotICAgICAgICAgICAgaWYgKGdlbmVyYXRlX2t1bCh1c2VyLT5hdXRoUHJvdG9jb2wsIHVzZXItPmF1dGhQcm90b2NvbExlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRExlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlQcml2S2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eVByaXZLZXlMZW4sIHVzZXItPnByaXZLZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2VyLT5wcml2S2V5TGVuKSAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKLSAgICAgICAgICAgICAgICB1c21fZnJlZV91c2VyKHVzZXIpOwotICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmICgoY3AgPSBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfUFJJVkxPQ0FMSVpFREtFWSkpKSB7Ci0gICAgICAgICAgICBzaXplX3QgYnVmbGVuID0gVVNNX1BSSVZfS1VfTEVOOwotICAgICAgICAgICAgU05NUF9GUkVFKHVzZXItPnByaXZLZXkpOwotICAgICAgICAgICAgdXNlci0+cHJpdktleSA9ICh1X2NoYXIgKiltYWxsb2MoYnVmbGVuKTsgLyogbWF4IGxlbmd0aCBuZWVkZWQgKi8KLSAgICAgICAgICAgIHVzZXItPnByaXZLZXlMZW4gPSAwOwotICAgICAgICAgICAgLyogaXQgd2lsbCBiZSBhIGhleCBzdHJpbmcgKi8KLSAgICAgICAgICAgIGlmICghc25tcF9oZXhfdG9fYmluYXJ5KCZ1c2VyLT5wcml2S2V5LCAmYnVmbGVuLCAmdXNlci0+cHJpdktleUxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGNwKSkgewotICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHVzZXJfanVzdF9jcmVhdGVkKSB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIGFkZCB0aGUgdXNlciBpbnRvIHRoZSBkYXRhYmFzZSAKLSAgICAgICAgICovCi0gICAgICAgIHVzZXItPnVzZXJTdGF0dXMgPSBSU19BQ1RJVkU7Ci0gICAgICAgIHVzZXItPnVzZXJTdG9yYWdlVHlwZSA9IFNUX1JFQURPTkxZOwotICAgICAgICB1c21fYWRkX3VzZXIodXNlcik7Ci0gICAgfQotCi0gICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKLQotCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVuZCBjcmVhdGVfdXNlcl9mcm9tX3Nlc3Npb24oKSAqLwogCiAvKgogICogIERvIGEgImRlZXAgZnJlZSgpIiBvZiBhIG5ldHNubXBfc2Vzc2lvbi4KQEAgLTIyMDMsNDkgKzE5NTgsNiBAQAogICAgIHJldHVybiAxOwogfQogCi1zdGF0aWMgaW50Ci1zbm1wdjNfYnVpbGRfcHJvYmVfcGR1KG5ldHNubXBfcGR1ICoqcGR1KQotewotICAgIHN0cnVjdCB1c21Vc2VyICp1c2VyOwotCi0gICAgLyoKLSAgICAgKiBjcmVhdGUgdGhlIHBkdSAKLSAgICAgKi8KLSAgICBpZiAoIXBkdSkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgICpwZHUgPSBzbm1wX3BkdV9jcmVhdGUoU05NUF9NU0dfR0VUKTsKLSAgICBpZiAoISgqcGR1KSkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgICgqcGR1KS0+dmVyc2lvbiA9IFNOTVBfVkVSU0lPTl8zOwotICAgICgqcGR1KS0+c2VjdXJpdHlOYW1lID0gc3RyZHVwKCIiKTsKLSAgICAoKnBkdSktPnNlY3VyaXR5TmFtZUxlbiA9IHN0cmxlbigoKnBkdSktPnNlY3VyaXR5TmFtZSk7Ci0gICAgKCpwZHUpLT5zZWN1cml0eUxldmVsID0gU05NUF9TRUNfTEVWRUxfTk9BVVRIOwotICAgICgqcGR1KS0+c2VjdXJpdHlNb2RlbCA9IFNOTVBfU0VDX01PREVMX1VTTTsKLQotICAgIC8qCi0gICAgICogY3JlYXRlIHRoZSBlbXB0eSB1c2VyIAotICAgICAqLwotICAgIHVzZXIgPSB1c21fZ2V0X3VzZXIoTlVMTCwgMCwgKCpwZHUpLT5zZWN1cml0eU5hbWUpOwotICAgIGlmICh1c2VyID09IE5VTEwpIHsKLSAgICAgICAgdXNlciA9IChzdHJ1Y3QgdXNtVXNlciAqKSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCB1c21Vc2VyKSk7Ci0gICAgICAgIGlmICh1c2VyID09IE5VTEwpIHsKLSAgICAgICAgICAgIHNubXBfZnJlZV9wZHUoKnBkdSk7Ci0gICAgICAgICAgICAqcGR1ID0gKG5ldHNubXBfcGR1ICopIE5VTEw7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgdXNlci0+bmFtZSA9IHN0cmR1cCgoKnBkdSktPnNlY3VyaXR5TmFtZSk7Ci0gICAgICAgIHVzZXItPnNlY05hbWUgPSBzdHJkdXAoKCpwZHUpLT5zZWN1cml0eU5hbWUpOwotICAgICAgICB1c2VyLT5hdXRoUHJvdG9jb2xMZW4gPSBzaXplb2YodXNtTm9BdXRoUHJvdG9jb2wpIC8gc2l6ZW9mKG9pZCk7Ci0gICAgICAgIHVzZXItPmF1dGhQcm90b2NvbCA9Ci0gICAgICAgICAgICBzbm1wX2R1cGxpY2F0ZV9vYmppZCh1c21Ob0F1dGhQcm90b2NvbCwgdXNlci0+YXV0aFByb3RvY29sTGVuKTsKLSAgICAgICAgdXNlci0+cHJpdlByb3RvY29sTGVuID0gc2l6ZW9mKHVzbU5vUHJpdlByb3RvY29sKSAvIHNpemVvZihvaWQpOwotICAgICAgICB1c2VyLT5wcml2UHJvdG9jb2wgPQotICAgICAgICAgICAgc25tcF9kdXBsaWNhdGVfb2JqaWQodXNtTm9Qcml2UHJvdG9jb2wsIHVzZXItPnByaXZQcm90b2NvbExlbik7Ci0gICAgICAgIHVzbV9hZGRfdXNlcih1c2VyKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyB2b2lkCiBzbm1wdjNfY2FsY19tc2dfZmxhZ3MoaW50IHNlY19sZXZlbCwgaW50IG1zZ19jb21tYW5kLCB1X2NoYXIgKiBmbGFncykKIHsKQEAgLTIzMzUsOSArMjA0NywxMyBAQAogICAgICAgICAvKgogICAgICAgICAgKiBGYWxsdGhyb3VnaCAKICAgICAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9USUZZX09OTFkKICAgICBjYXNlIFNOTVBfTVNHX0dFVDoKICAgICBjYXNlIFNOTVBfTVNHX0dFVE5FWFQ6CisjZW5kaWYgLyogISBORVRTTk1QX05PVElGWV9PTkxZICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgU05NUF9NU0dfU0VUOgorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICBjYXNlIFNOTVBfTVNHX0lORk9STToKICAgICAgICAgaWYgKHBkdS0+ZXJyc3RhdCA9PSBTTk1QX0RFRkFVTFRfRVJSU1RBVCkKICAgICAgICAgICAgIHBkdS0+ZXJyc3RhdCA9IDA7CkBAIC0yMzQ1LDYgKzIwNjEsNyBAQAogICAgICAgICAgICAgcGR1LT5lcnJpbmRleCA9IDA7CiAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9USUZZX09OTFkKICAgICBjYXNlIFNOTVBfTVNHX0dFVEJVTEs6CiAgICAgICAgIGlmIChwZHUtPm1heF9yZXBldGl0aW9ucyA8IDApIHsKICAgICAgICAgICAgIHNlc3Npb24tPnNfc25tcF9lcnJubyA9IFNOTVBFUlJfQkFEX1JFUEVUSVRJT05TOwpAQCAtMjM1NSw2ICsyMDcyLDcgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhIE5FVFNOTVBfTk9USUZZX09OTFkgKi8KIAogICAgIGNhc2UgU05NUF9NU0dfVFJBUDoKICAgICAgICAgc2Vzc2lvbi0+c19zbm1wX2Vycm5vID0gU05NUEVSUl9WMV9JTl9WMjsKQEAgLTMwMjEsOSArMjczOSwxMyBAQAogICAgICAgICAvKgogICAgICAgICAgKiBGYWxsdGhyb3VnaCAKICAgICAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9USUZZX09OTFkKICAgICBjYXNlIFNOTVBfTVNHX0dFVDoKICAgICBjYXNlIFNOTVBfTVNHX0dFVE5FWFQ6CisjZW5kaWYgLyogISBORVRTTk1QX05PVElGWV9PTkxZICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgU05NUF9NU0dfU0VUOgorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgLyoKICAgICAgICAgICogYWxsIHZlcnNpb25zIHN1cHBvcnQgdGhlc2UgUERVIHR5cGVzIAogICAgICAgICAgKi8KQEAgLTMwNTgsNiArMjc4MCw3IEBACiAgICAgICAgICAgICBwZHUtPmVycmluZGV4ID0gMDsKICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT1RJRllfT05MWQogICAgIGNhc2UgU05NUF9NU0dfR0VUQlVMSzoKICAgICAgICAgLyoKICAgICAgICAgICogbm90IHN1cHBvcnRlZCBpbiBTTk1QdjEgYW5kIFNOTVBzZWMgCkBAIC0zMDc3LDYgKzI4MDAsNyBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICEgTkVUU05NUF9OT1RJRllfT05MWSAqLwogCiAgICAgY2FzZSBTTk1QX01TR19UUkFQOgogICAgICAgICAvKgpAQCAtMzE2MCw3ICsyODg0LDYgQEAKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgaWYgKDAgPT0gc2Vzc2lvbi0+Y29tbXVuaXR5X2xlbikgewogICAgICAgICAgICAgICAgIFNOTVBfRlJFRShwZHUtPmNvbW11bml0eSk7Ci0gICAgICAgICAgICAgICAgcGR1LT5jb21tdW5pdHkgPSBOVUxMOwogICAgICAgICAgICAgfSBlbHNlIGlmIChwZHUtPmNvbW11bml0eV9sZW4gPT0gc2Vzc2lvbi0+Y29tbXVuaXR5X2xlbikgewogICAgICAgICAgICAgICAgIG1lbW1vdmUocGR1LT5jb21tdW5pdHksCiAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5jb21tdW5pdHksIHNlc3Npb24tPmNvbW11bml0eV9sZW4pOwpAQCAtNDA3MSw5ICszNzk0LDcgQEAKICAgICAgICAgICAgIERFQlVHSU5ERU5UQUREKC00KTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChtYWxsb2NidWYpIHsKLSAgICAgICAgICAgIFNOTVBfRlJFRShtYWxsb2NidWYpOwotICAgICAgICB9CisgICAgICAgIFNOTVBfRlJFRShtYWxsb2NidWYpOwogICAgICAgICByZXR1cm4gcmV0X3ZhbDsKICAgICB9CiAKQEAgLTQwODYsOSArMzgwNyw3IEBACiAgICAgaWYgKGRhdGEgPT0gTlVMTCkgewogICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9TTk1QSU5BU05QQVJTRUVSUlMpOwogICAgICAgICBERUJVR0lOREVOVEFERCgtNCk7Ci0gICAgICAgIGlmIChtYWxsb2NidWYpIHsKLSAgICAgICAgICAgIFNOTVBfRlJFRShtYWxsb2NidWYpOwotICAgICAgICB9CisgICAgICAgIFNOTVBfRlJFRShtYWxsb2NidWYpOwogICAgICAgICByZXR1cm4gU05NUEVSUl9BU05fUEFSU0VfRVJSOwogICAgIH0KIApAQCAtNDExMSwxNSArMzgzMCwxMSBAQAogICAgIGlmIChyZXQgIT0gU05NUEVSUl9TVUNDRVNTKSB7CiAgICAgICAgIEVSUk9SX01TRygiZXJyb3IgcGFyc2luZyBQRFUiKTsKICAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfU05NUElOQVNOUEFSU0VFUlJTKTsKLSAgICAgICAgaWYgKG1hbGxvY2J1ZikgewotICAgICAgICAgICAgU05NUF9GUkVFKG1hbGxvY2J1Zik7Ci0gICAgICAgIH0KKyAgICAgICAgU05NUF9GUkVFKG1hbGxvY2J1Zik7CiAgICAgICAgIHJldHVybiBTTk1QRVJSX0FTTl9QQVJTRV9FUlI7CiAgICAgfQogCi0gICAgaWYgKG1hbGxvY2J1ZikgewotICAgICAgICBTTk1QX0ZSRUUobWFsbG9jYnVmKTsKLSAgICB9CisgICAgU05NUF9GUkVFKG1hbGxvY2J1Zik7CiAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZW5kIHNubXB2M19wYXJzZSgpICovCiAKQEAgLTQyMzEsNyArMzk0NiwxMSBAQAogICAgIC8qCiAgICAgICogZmluZCB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgY291bnRlciAgCiAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBVElTVElDUwogICAgIGx0bXAgPSBzbm1wX2dldF9zdGF0aXN0aWMoc3RhdF9pbmQpOworI2Vsc2UgLyogIU5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBVElTVElDUyAqLworICAgIGx0bXAgPSAxOworI2VuZGlmIC8qICFORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVRJU1RJQ1MgKi8KIAogICAgIC8qCiAgICAgICogcmV0dXJuIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb3VudGVyICAKQEAgLTQ3MTAsMTIgKzQ0MjksMTYgQEAKICAgICAgICAgICogZmFsbHRocm91Z2ggCiAgICAgICAgICAqLwogCisjaWZuZGVmIE5FVFNOTVBfTk9USUZZX09OTFkKICAgICBjYXNlIFNOTVBfTVNHX0dFVDoKICAgICBjYXNlIFNOTVBfTVNHX0dFVE5FWFQ6CiAgICAgY2FzZSBTTk1QX01TR19HRVRCVUxLOgorI2VuZGlmIC8qICEgTkVUU05NUF9OT1RJRllfT05MWSAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKKyAgICBjYXNlIFNOTVBfTVNHX1NFVDoKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgY2FzZSBTTk1QX01TR19UUkFQMjoKICAgICBjYXNlIFNOTVBfTVNHX0lORk9STToKLSAgICBjYXNlIFNOTVBfTVNHX1NFVDoKICAgICAgICAgLyoKICAgICAgICAgICogUERVIGlzIG5vdCBhbiBTTk1QdjEgVFJBUCAKICAgICAgICAgICovCkBAIC00OTYyLDE4ICs0Njg1LDYgQEAKICAgICB9CiAKICAgICAvKgotICAgICAqIGNoZWNrIHRoYXQgaXQgYWdyZWVzIHdpdGggZW5naW5lSUQgcmV0dXJuZWQgZnJvbSBVU00gYWJvdmUKLSAgICAgKiAqIG9ubHkgYSB3YXJuaW5nIGJlY2F1c2UgdGhpcyBjb3VsZCBiZSBsZWdhbCBpZiB3ZSBhcmUgYSBwcm94eQotICAgICAqLwotICAgIGlmIChwZHUtPnNlY3VyaXR5TW9kZWwgPT0gTkVUU05NUF9TRUNNT0RfVVNNICYmCi0gICAgICAgIChwZHUtPnNlY3VyaXR5RW5naW5lSURMZW4gIT0gcGR1LT5jb250ZXh0RW5naW5lSURMZW4gfHwKLSAgICAgICAgIG1lbWNtcChwZHUtPnNlY3VyaXR5RW5naW5lSUQsIHBkdS0+Y29udGV4dEVuZ2luZUlELAotICAgICAgICAgICAgICAgIHBkdS0+c2VjdXJpdHlFbmdpbmVJRExlbikgIT0gMCkpIHsKLSAgICAgICAgREVCVUdNU0dUTCgoInNjb3BlZFBEVV9wYXJzZSIsCi0gICAgICAgICAgICAgICAgICAgICJOb3RlOiBzZWN1cml0eSBhbmQgY29udGV4dCBlbmdpbmVJRHMgZGlmZmVyXG4iKSk7Ci0gICAgfQotCi0gICAgLyoKICAgICAgKiBwYXJzZSBjb250ZXh0TmFtZSBmcm9tIHNjb3BlZFBkdQogICAgICAqLwogICAgIHRtcF9idWZfbGVuID0gU05NUF9NQVhfQ09OVEVYVF9TSVpFOwpAQCAtNTE0MCwxNiArNDg1MSw2IEBACiAgICAgICAgICAgICByZXR1cm4gMDsgLyogc19zbm1wX2Vycm5vIGFscmVhZHkgc2V0ICovCiAgICAgfQogCi0gICAgLyoKLSAgICAgKiBjaGVjayB0byBzZWUgaWYgd2UgbmVlZCB0byBjcmVhdGUgYSB2MyB1c2VyIGZyb20gdGhlIHNlc3Npb24gaW5mbwotICAgICAqLwotICAgIGlmIChjcmVhdGVfdXNlcl9mcm9tX3Nlc3Npb24oc2Vzc2lvbikgIT0gU05NUEVSUl9TVUNDRVNTKSB7Ci0gICAgICAgIHNlc3Npb24tPnNfc25tcF9lcnJubyA9IFNOTVBFUlJfVU5LTk9XTl9VU0VSX05BTUU7ICAvKiBYWD8/ICovCi0gICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FwaSIsCi0gICAgICAgICAgICAgICAgICAgICJzbm1wX3NlbmQoKTogZmFpbGVkKDIpIHRvIGNyZWF0ZSBhIG5ldyB1c2VyIGZyb20gc2Vzc2lvblxuIikpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KICAgICBpZiAoKHBrdGJ1ZiA9ICh1X2NoYXIgKiltYWxsb2MoMjA0OCkpID09IE5VTEwpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInNlc3NfYXN5bmNfc2VuZCIsCiAgICAgICAgICAgICAgICAgICAgICJjb3VsZG4ndCBtYWxsb2MgaW5pdGlhbCBwYWNrZXQgYnVmZmVyXG4iKSk7CkBAIC01MTcwLDggKzQ4NzEsMTAgQEAKICAgICAgKi8KICAgICBpZiAocGR1LT52YXJpYWJsZXMgPT0gTlVMTCkgewogICAgICAgICBzd2l0Y2ggKHBkdS0+Y29tbWFuZCkgewotICAgICAgICBjYXNlIFNOTVBfTVNHX0dFVDoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIGNhc2UgU05NUF9NU0dfU0VUOgorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICAgICAgY2FzZSBTTk1QX01TR19HRVQ6CiAgICAgICAgIGNhc2UgU05NUF9NU0dfR0VUTkVYVDoKICAgICAgICAgY2FzZSBTTk1QX01TR19HRVRCVUxLOgogICAgICAgICBjYXNlIFNOTVBfTVNHX1JFU1BPTlNFOgpAQCAtNTI4NCw3ICs0OTg3LDcgQEAKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZ0diwgKHN0cnVjdCB0aW1lem9uZSAqKSAwKTsKKyAgICAgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZ0dik7CiAgICAgICAgIHJwLT5wZHUgPSBwZHU7CiAgICAgICAgIHJwLT5yZXF1ZXN0X2lkID0gcGR1LT5yZXFpZDsKICAgICAgICAgcnAtPm1lc3NhZ2VfaWQgPSBwZHUtPm1zZ2lkOwpAQCAtNTI5NiwxMSArNDk5OSwxMSBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcnAtPnRpbWVvdXQgPSBzZXNzaW9uLT50aW1lb3V0OwogICAgICAgICB9Ci0gICAgICAgIHJwLT50aW1lID0gdHY7CisgICAgICAgIHJwLT50aW1lTSA9IHR2OwogICAgICAgICB0di50dl91c2VjICs9IHJwLT50aW1lb3V0OwogICAgICAgICB0di50dl9zZWMgKz0gdHYudHZfdXNlYyAvIDEwMDAwMDBMOwogICAgICAgICB0di50dl91c2VjICU9IDEwMDAwMDBMOwotICAgICAgICBycC0+ZXhwaXJlID0gdHY7CisgICAgICAgIHJwLT5leHBpcmVNID0gdHY7CiAKICAgICAgICAgLyoKICAgICAgICAgICogWFggbG9jayBzaG91bGQgYmUgcGVyIHNlc3Npb24gISAKQEAgLTU1MDcsOSArNTIxMCw3IEBACiAgIGlmIChpc3AtPmhvb2tfcHJlKSB7CiAgICAgaWYgKGlzcC0+aG9va19wcmUoc3AsIHRyYW5zcG9ydCwgb3BhcXVlLCBvbGVuZ3RoKSA9PSAwKSB7CiAgICAgICBERUJVR01TR1RMKCgic2Vzc19wcm9jZXNzX3BhY2tldCIsICJwcmUtcGFyc2UgZmFpbFxuIikpOwotICAgICAgaWYgKG9wYXF1ZSAhPSBOVUxMKSB7Ci0JU05NUF9GUkVFKG9wYXF1ZSk7Ci0gICAgICB9CisgICAgICBTTk1QX0ZSRUUob3BhcXVlKTsKICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgIH0KQEAgLTU1MjIsOSArNTIyMyw3IEBACiAKICAgaWYgKHBkdSA9PSBOVUxMKSB7CiAgICAgc25tcF9sb2coTE9HX0VSUiwgInBkdSBmYWlsZWQgdG8gYmUgY3JlYXRlZFxuIik7Ci0gICAgaWYgKG9wYXF1ZSAhPSBOVUxMKSB7Ci0gICAgICBTTk1QX0ZSRUUob3BhcXVlKTsKLSAgICB9CisgICAgU05NUF9GUkVFKG9wYXF1ZSk7CiAgICAgcmV0dXJuIC0xOwogICB9CiAKQEAgLTU3MDYsMTkgKzU0MDUsMTQgQEAKIAkvKgogCSAqIFN1Y2Nlc3NmdWwsIHNvIGRlbGV0ZSByZXF1ZXN0LiAgCiAJICovCi0JaWYgKGlzcC0+cmVxdWVzdHMgPT0gcnApIHsKLQkgIGlzcC0+cmVxdWVzdHMgPSBycC0+bmV4dF9yZXF1ZXN0OwotCSAgaWYgKGlzcC0+cmVxdWVzdHNFbmQgPT0gcnApIHsKLQkgICAgaXNwLT5yZXF1ZXN0c0VuZCA9IE5VTEw7Ci0JICB9Ci0JfSBlbHNlIHsKKwlpZiAob3JwKQogCSAgb3JwLT5uZXh0X3JlcXVlc3QgPSBycC0+bmV4dF9yZXF1ZXN0OwotCSAgaWYgKGlzcC0+cmVxdWVzdHNFbmQgPT0gcnApIHsKLQkgICAgaXNwLT5yZXF1ZXN0c0VuZCA9IG9ycDsKLQkgIH0KLQl9CisgICAgICAgIGVsc2UKKwkgIGlzcC0+cmVxdWVzdHMgPSBycC0+bmV4dF9yZXF1ZXN0OworICAgICAgICBpZiAoaXNwLT5yZXF1ZXN0c0VuZCA9PSBycCkKKwkgIGlzcC0+cmVxdWVzdHNFbmQgPSBvcnA7CiAJc25tcF9mcmVlX3BkdShycC0+cGR1KTsKLQlmcmVlKChjaGFyICopIHJwKTsKKwlmcmVlKHJwKTsKIAkvKgogCSAqIFRoZXJlIHNob3VsZG4ndCBiZSBhbnkgbW9yZSByZXF1ZXN0cyB3aXRoIHRoZSBzYW1lIHJlcWlkLiAgCiAJICovCkBAIC01OTcyLDkgKzU2NjYsNyBAQAogICAgICAgICBzcC0+c19lcnJubyA9IGVycm5vOwogICAgICAgICBzbm1wX3NldF9kZXRhaWwoc3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAgU05NUF9GUkVFKHJ4YnVmKTsKLSAgICAgICAgaWYgKG9wYXF1ZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUob3BhcXVlKTsKLSAgICAgICAgfQorICAgICAgICBTTk1QX0ZSRUUob3BhcXVlKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIApAQCAtNjAwOCw5ICs1NzAwLDcgQEAKICAgICAgICAgREVCVUdNU0dUTCgoInNlc3NfcmVhZCIsICJmZCAlZCBjbG9zZWRcbiIsIHRyYW5zcG9ydC0+c29jaykpOwogICAgICAgICB0cmFuc3BvcnQtPmZfY2xvc2UodHJhbnNwb3J0KTsKICAgICAgICAgU05NUF9GUkVFKGlzcC0+cGFja2V0KTsKLSAgICAgICAgaWYgKG9wYXF1ZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUob3BhcXVlKTsKLSAgICAgICAgfQorICAgICAgICBTTk1QX0ZSRUUob3BhcXVlKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIApAQCAtNjA0OSw5ICs1NzM5LDcgQEAKIAkJfQogCQlERUJVR01TR1RMKCgic2Vzc19yZWFkIiwgImZkICVkIGNsb3NlZFxuIiwgdHJhbnNwb3J0LT5zb2NrKSk7CiAgICAgICAgICAgICAgICAgdHJhbnNwb3J0LT5mX2Nsb3NlKHRyYW5zcG9ydCk7Ci0gICAgICAgICAgICAgICAgaWYgKG9wYXF1ZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFNOTVBfRlJFRShvcGFxdWUpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBTTk1QX0ZSRUUob3BhcXVlKTsKICAgICAgICAgICAgICAgICAvKiogWFhYLXJrczogd2h5IG5vIFNOTVBfRlJFRShpc3AtPnBhY2tldCk7ID8/ICovCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQpAQCAtNjA3MCw5ICs1NzU4LDcgQEAKICAgICAgICAgICAgICAgICBpZiAocHB0ciAhPSBpc3AtPnBhY2tldCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8qIG9wYXF1ZSBmcmVlZCBmb3IgdXMgb3V0c2lkZSBvZiBsb29wLiAqLwogCi0gICAgICAgICAgICAgICAgaWYgKG9wYXF1ZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFNOTVBfRlJFRShvcGFxdWUpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBTTk1QX0ZSRUUob3BhcXVlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KIApAQCAtNjEyMSw5ICs1ODA3LDcgQEAKIAkgICAgb2YgdGhlIG9wYXF1ZSBwb2ludGVyLCBzbyB3ZSBzdGlsbCBuZWVkIHRvIGZyZWUoKSB0aGUgb3BhcXVlCiAJICAgIHBvaW50ZXIgaXRzZWxmLiAgKi8KIAotCWlmIChvcGFxdWUgIT0gTlVMTCkgewotCSAgICBTTk1QX0ZSRUUob3BhcXVlKTsKLQl9CisJU05NUF9GUkVFKG9wYXF1ZSk7CiAKICAgICAgICAgaWYgKGlzcC0+cGFja2V0X2xlbiA+PSBNQVhJTVVNX1BBQ0tFVF9TSVpFKSB7CiAgICAgICAgICAgICAvKgpAQCAtNjE0Myw3ICs1ODI3LDYgQEAKICAgICAgICAgICAgICAqIGZvb3RwcmludCBkb3duLgogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBTTk1QX0ZSRUUoaXNwLT5wYWNrZXQpOwotICAgICAgICAgICAgaXNwLT5wYWNrZXQgPSBOVUxMOwogICAgICAgICAgICAgaXNwLT5wYWNrZXRfc2l6ZSA9IDA7CiAgICAgICAgICAgICBpc3AtPnBhY2tldF9sZW4gPSAwOwogICAgICAgICAgICAgcmV0dXJuIHJjOwpAQCAtNjM4OSw5ICs2MDcyLDEwIEBACiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIHJlcXVlc3RzKys7CiAgICAgICAgICAgICBmb3IgKHJwID0gc2xwLT5pbnRlcm5hbC0+cmVxdWVzdHM7IHJwOyBycCA9IHJwLT5uZXh0X3JlcXVlc3QpIHsKLSAgICAgICAgICAgICAgICBpZiAoKCF0aW1lcmlzc2V0KCZlYXJsaWVzdCkKLSAgICAgICAgICAgICAgICAgICAgIHx8ICh0aW1lcmNtcCgmcnAtPmV4cGlyZSwgJmVhcmxpZXN0LCA8KSkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGVhcmxpZXN0ID0gcnAtPmV4cGlyZTsKKyAgICAgICAgICAgICAgICBpZiAoIXRpbWVyaXNzZXQoJmVhcmxpZXN0KQorICAgICAgICAgICAgICAgICAgICB8fCAodGltZXJpc3NldCgmcnAtPmV4cGlyZU0pCisgICAgICAgICAgICAgICAgICAgICAgICAmJiB0aW1lcmNtcCgmcnAtPmV4cGlyZU0sICZlYXJsaWVzdCwgPCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGVhcmxpZXN0ID0gcnAtPmV4cGlyZU07CiAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHKCgidmVyYm9zZTpzZXNzX3NlbGVjdCIsIih0byBpbiAlZC4lMDZkIHNlYykgIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KWVhcmxpZXN0LnR2X3NlYywgKGludCllYXJsaWVzdC50dl91c2VjKSk7CiAgICAgICAgICAgICAgICAgfQpAQCAtNjQwOCw3ICs2MDkyLDcgQEAKICAgICB9CiAgICAgREVCVUdNU0coKCJzZXNzX3NlbGVjdCIsICJcbiIpKTsKIAotICAgIGdldHRpbWVvZmRheSgmbm93LCBOVUxMKTsKKyAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJm5vdyk7CiAKICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfQUxBUk1fRE9OVF9VU0VfU0lHKSAmJgpAQCAtNjQzNiw3ICs2MTIwLDcgQEAKICAgICAgICAgdGltZV90IG92ZXJkdWVfbXMgPSAtKGVhcmxpZXN0LnR2X3NlYyAqIDEwMDAgKyBlYXJsaWVzdC50dl91c2VjIC8gMTAwMCk7CiAgICAgICAgIGlmIChvdmVyZHVlX21zID49IDEwKQogICAgICAgICAgICAgREVCVUdNU0dUKCgidmVyYm9zZTpzZXNzX3NlbGVjdCIsInRpbWVyIG92ZXJkdWUgYnkgJWxkIG1zXG4iLAotICAgICAgICAgICAgICAgICAgICAgICBvdmVyZHVlX21zKSk7CisgICAgICAgICAgICAgICAgICAgICAgIChsb25nKSBvdmVyZHVlX21zKSk7CiAgICAgICAgIHRpbWVyY2xlYXIoJmVhcmxpZXN0KTsKICAgICB9IGVsc2UgewogICAgICAgICBERUJVR01TR1QoKCJ2ZXJib3NlOnNlc3Nfc2VsZWN0IiwidGltZXIgZHVlIGluICVkLiUwNmQgc2VjXG4iLApAQCAtNjU0NSw5ICs2MjI5LDcgQEAKICAgICAgICAgICogVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLiAgCiAgICAgICAgICAqLwogICAgICAgICBERUJVR01TR1RMKCgic2Vzc19yZXNlbmQiLCAiZW5jb2RpbmcgZmFpbHVyZVxuIikpOwotICAgICAgICBpZiAocGt0YnVmICE9IE5VTEwpIHsKLSAgICAgICAgICAgIFNOTVBfRlJFRShwa3RidWYpOwotICAgICAgICB9CisgICAgICAgIFNOTVBfRlJFRShwa3RidWYpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCkBAIC02NTY1LDcgKzYyNDcsNyBAQAogCiAgICAgaWYgKHBrdGJ1ZiAhPSBOVUxMKSB7CiAgICAgICAgIFNOTVBfRlJFRShwa3RidWYpOwotICAgICAgICBwa3RidWYgPSBwYWNrZXQgPSBOVUxMOworICAgICAgICBwYWNrZXQgPSBOVUxMOwogICAgIH0KIAogICAgIGlmIChyZXN1bHQgPCAwKSB7CkBAIC02NTc0LDEzICs2MjU2LDEzIEBACiAgICAgICAgIHNubXBfc2V0X2RldGFpbChzdHJlcnJvcihlcnJubykpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZub3csIChzdHJ1Y3QgdGltZXpvbmUgKikgMCk7CisgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmbm93KTsKICAgICAgICAgdHYgPSBub3c7Ci0gICAgICAgIHJwLT50aW1lID0gdHY7CisgICAgICAgIHJwLT50aW1lTSA9IHR2OwogICAgICAgICB0di50dl91c2VjICs9IHJwLT50aW1lb3V0OwogICAgICAgICB0di50dl9zZWMgKz0gdHYudHZfdXNlYyAvIDEwMDAwMDBMOwogICAgICAgICB0di50dl91c2VjICU9IDEwMDAwMDBMOwotICAgICAgICBycC0+ZXhwaXJlID0gdHY7CisgICAgICAgIHJwLT5leHBpcmVNID0gdHY7CiAgICAgfQogICAgIHJldHVybiAwOwogfQpAQCAtNjYwNiw3ICs2Mjg4LDcgQEAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGdldHRpbWVvZmRheSgmbm93LCAoc3RydWN0IHRpbWV6b25lICopIDApOworICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmbm93KTsKIAogICAgIC8qCiAgICAgICogRm9yIGVhY2ggcmVxdWVzdCBvdXRzdGFuZGluZywgY2hlY2sgdG8gc2VlIGlmIGl0IGhhcyBleHBpcmVkLgpAQCAtNjYyMCw3ICs2MzAyLDcgQEAKICAgICAgICAgICAgIGZyZWVtZSA9IE5VTEw7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoKHRpbWVyY21wKCZycC0+ZXhwaXJlLCAmbm93LCA8KSkpIHsKKyAgICAgICAgaWYgKCh0aW1lcmNtcCgmcnAtPmV4cGlyZU0sICZub3csIDwpKSkgewogICAgICAgICAgICAgaWYgKChzcHRyID0gZmluZF9zZWNfbW9kKHJwLT5wZHUtPnNlY3VyaXR5TW9kZWwpKSAhPSBOVUxMICYmCiAgICAgICAgICAgICAgICAgc3B0ci0+cGR1X3RpbWVvdXQgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgIC8qCkBAIC02NjQ4LDE4ICs2MzMwLDEzIEBACiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKE5FVFNOTVBfQ0FMTEJBQ0tfT1BfVElNRURfT1VULCBzcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnAtPnBkdS0+cmVxaWQsIHJwLT5wZHUsIG1hZ2ljKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGlzcC0+cmVxdWVzdHMgPT0gcnApIHsKLSAgICAgICAgICAgICAgICAgICAgaXNwLT5yZXF1ZXN0cyA9IHJwLT5uZXh0X3JlcXVlc3Q7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc3AtPnJlcXVlc3RzRW5kID09IHJwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpc3AtPnJlcXVlc3RzRW5kID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKG9ycCkKICAgICAgICAgICAgICAgICAgICAgb3JwLT5uZXh0X3JlcXVlc3QgPSBycC0+bmV4dF9yZXF1ZXN0OwotICAgICAgICAgICAgICAgICAgICBpZiAoaXNwLT5yZXF1ZXN0c0VuZCA9PSBycCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaXNwLT5yZXF1ZXN0c0VuZCA9IG9ycDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzbm1wX2ZyZWVfcGR1KHJwLT5wZHUpOyAvKiBGSVggIHJwIGlzIGFscmVhZHkgZnJlZSdkISAqLworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgaXNwLT5yZXF1ZXN0cyA9IHJwLT5uZXh0X3JlcXVlc3Q7CisgICAgICAgICAgICAgICAgaWYgKGlzcC0+cmVxdWVzdHNFbmQgPT0gcnApCisgICAgICAgICAgICAgICAgICAgIGlzcC0+cmVxdWVzdHNFbmQgPSBvcnA7CisgICAgICAgICAgICAgICAgc25tcF9mcmVlX3BkdShycC0+cGR1KTsKICAgICAgICAgICAgICAgICBmcmVlbWUgPSBycDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsgICAgICAgLyogZG9uJ3QgdXBkYXRlIG9ycCBiZWxvdyAqLwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTY5MTIsNiArNjU4OSw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9PSURfSVNfU1VCVFJFRQogLyoqIElkZW50aWNhbCB0byBuZXRzbm1wX29pZF9lcXVhbHMsIGV4Y2VwdCBvbmx5IHRoZSBsZW5ndGggdXAgdG8gbGVuMSBpcyBjb21wYXJlZC4KICAqIEZ1bmN0aW9uYWxseSwgdGhpcyBkZXRlcm1pbmVzIGlmIGluX25hbWUyIGlzIGVxdWFsIG9yIGEgc3VidHJlZSBvZiBpbl9uYW1lMQogICogQHBhcmFtIGluX25hbWUxIEEgcG9pbnRlciB0byB0aGUgZmlyc3Qgb2lkLgpAQCAtNjkzMiw2ICs2NjEwLDcgQEAKIAogICAgIHJldHVybiAwOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfT0lEX0lTX1NVQlRSRUUgKi8KIAogLyoqIEdpdmVuIHR3byBPSURzLCBkZXRlcm1pbmUgdGhlIGNvbW1vbiBwcmVmaXggdG8gdGhlbSBib3RoLgogICogQHBhcmFtIGluX25hbWUxIEEgcG9pbnRlciB0byB0aGUgZmlyc3Qgb2lkLgpAQCAtNzY3NSw2ICs3MzU0LDcgQEAKICAgICByZXR1cm4gcmV0dXJuT2lkOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBVElTVElDUwogLyoKICAqIGdlbmVyaWMgc3RhdGlzdGljcyBjb3VudGVyIGZ1bmN0aW9ucyAKICAqLwpAQCAtNzcxMyw1ICs3MzkzLDUgQEAKIHsKICAgICBtZW1zZXQoc3RhdGlzdGljcywgMCwgc2l6ZW9mKHN0YXRpc3RpY3MpKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVRJU1RJQ1MgKi8KIC8qKiAgQH0gKi8KLQpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wX2NsaWVudC5jIGIvc25tcGxpYi9zbm1wX2NsaWVudC5jCmluZGV4IGJmZjMyNWUuLmFiN2E1OGMgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc25tcF9jbGllbnQuYworKysgYi9zbm1wbGliL3NubXBfY2xpZW50LmMKQEAgLTQwLDYgKzQwLDcgQEAKICAqICBAewogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KQEAgLTk4LDYgKzk5LDEyIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL3BkdV9hcGkuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNubXBfY2xpZW50X2FsbCwgbGlibmV0c25tcCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNubXBfc3BsaXRfcGR1LCBzbm1wX2NsaWVudF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc25tcF9yZXNldF92YXJfdHlwZXMsIHNubXBfY2xpZW50X2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihxdWVyeV9zZXRfZGVmYXVsdF9zZXNzaW9uLCBzbm1wX2NsaWVudF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yocm93X2NyZWF0ZSwgc25tcF9jbGllbnRfYWxsKQogCiAjaWZuZGVmIEJTRDRfMwogI2RlZmluZSBCU0Q0XzIKQEAgLTU4Nyw2ICs1OTQsNyBAQAogICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGNsb25lZCBQRFUgaWYgc3VjY2Vzc2Z1bC4KICAqIFJldHVybnMgMCBpZiBmYWlsdXJlLgogICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05NUF9TUExJVF9QRFUKIG5ldHNubXBfcGR1ICAgICoKIHNubXBfc3BsaXRfcGR1KG5ldHNubXBfcGR1ICpwZHUsIGludCBza2lwX2NvdW50LCBpbnQgY29weV9jb3VudCkKIHsKQEAgLTU5Nyw2ICs2MDUsNyBAQAogCiAgICAgcmV0dXJuIG5ld3BkdTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOTVBfU1BMSVRfUERVICovCiAKIAogLyoKQEAgLTczNSw2ICs3NDQsOCBAQAogICAgIHJldHVybiBjb3VudDsKIH0KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNvdW50X3ZhcmJpbmRzX29mX3R5cGUsIG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPVU5UX1ZBUkJJTkRTX09GX1RZUEUKIGludAogY291bnRfdmFyYmluZHNfb2ZfdHlwZShuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXJfcHRyLCB1X2NoYXIgdHlwZSkKIHsKQEAgLTc0Niw3ICs3NTcsMTAgQEAKIAogICAgIHJldHVybiBjb3VudDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPVU5UX1ZBUkJJTkRTX09GX1RZUEUgKi8KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGZpbmRfdmFyaW5kX29mX3R5cGUsIG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZJTkRfVkFSSU5EX09GX1RZUEUKIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqCiBmaW5kX3ZhcmJpbmRfb2ZfdHlwZShuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXJfcHRyLCB1X2NoYXIgdHlwZSkKIHsKQEAgLTc1NSw2ICs3NjksNyBAQAogCiAgICAgcmV0dXJuIHZhcl9wdHI7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9GSU5EX1ZBUklORF9PRl9UWVBFICovCiAKIG5ldHNubXBfdmFyaWFibGVfbGlzdCoKIGZpbmRfdmFyYmluZF9pbl9saXN0KCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZibGlzdCwKQEAgLTk5OCw2ICsxMDEzLDcgQEAKICAgICB9CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QX1JFU0VUX1ZBUl9UWVBFUwogdm9pZAogc25tcF9yZXNldF92YXJfdHlwZXMobmV0c25tcF92YXJpYWJsZV9saXN0ICogdmJsLCB1X2NoYXIgbmV3X3R5cGUpCiB7CkBAIC0xMDA2LDYgKzEwMjIsNyBAQAogICAgICAgICB2YmwgPSB2YmwtPm5leHRfdmFyaWFibGU7CiAgICAgfQogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05NUF9SRVNFVF9WQVJfVFlQRVMgKi8KIAogaW50CiBzbm1wX3N5bmNoX3Jlc3BvbnNlX2NiKG5ldHNubXBfc2Vzc2lvbiAqIHNzLApAQCAtMTIxMywxMiArMTIzMCwxNiBAQAogICoKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oPgorCiBzdGF0aWMgbmV0c25tcF9zZXNzaW9uICpfZGVmX3F1ZXJ5X3Nlc3Npb24gPSBOVUxMOworCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUVVFUllfU0VUX0RFRkFVTFRfU0VTU0lPTgogdm9pZAogbmV0c25tcF9xdWVyeV9zZXRfZGVmYXVsdF9zZXNzaW9uKCBuZXRzbm1wX3Nlc3Npb24gKnNlc3MpIHsKICAgICBERUJVR01TR1RMKCgiaXF1ZXJ5IiwgInNldCBkZWZhdWx0IHNlc3Npb24gJXBcbiIsIHNlc3MpKTsKICAgICBfZGVmX3F1ZXJ5X3Nlc3Npb24gPSBzZXNzOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUVVFUllfU0VUX0RFRkFVTFRfU0VTU0lPTiAqLwogCiAvKioKICAqIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGRlZmF1bHQgaW50ZXJuYWwgcXVlcnkgc2Vzc2lvbi4KQEAgLTEzMTEsNiArMTMzMiw3IEBACiAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVkFSKCgiaXF1ZXJ5OnJlc3VsdCIsIHZ0bXApKTsKICAgICAgICAgICAgICAgICBERUJVR01TRygoImlxdWVyeTpyZXN1bHQiLCAiXG4iKSk7CiAgICAgICAgICAgICB9CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAgICAgaWYgKHJlcXVlc3QgIT0gU05NUF9NU0dfU0VUICYmCiAgICAgICAgICAgICAgICAgcmVzcG9uc2UtPmVycmluZGV4ICE9IDApIHsKICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgiaXF1ZXJ5IiwgInJldHJ5aW5nIHF1ZXJ5ICglZCwgJWxkKVxuIiwgcmV0LCByZXNwb25zZS0+ZXJyaW5kZXgpKTsKQEAgLTEzMjAsNiArMTM0Miw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCBwZHUgIT0gTlVMTCApCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmV0cnk7CiAgICAgICAgICAgICB9CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZm9yICh2YjEgPSByZXNwb25zZS0+dmFyaWFibGVzLCB2YjIgPSBsaXN0OwogICAgICAgICAgICAgICAgICB2YjE7CkBAIC0xMzU5LDEwICsxMzgyLDEyIEBACiB9CiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIGludCBuZXRzbm1wX3F1ZXJ5X3NldChuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKmxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXNzaW9uICAgICAgICpzZXNzaW9uKXsKICAgICByZXR1cm4gX3F1ZXJ5KCBsaXN0LCBTTk1QX01TR19TRVQsIHNlc3Npb24gKTsKIH0KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIC8qCiAgKiBBIHdhbGsgbmVlZHMgYSBiaXQgbW9yZSB3b3JrLgpAQCAtMTQ4MCw2ICsxNTA1LDggQEAKICAgICByZXR1cm4gaW5wdXQtPmxhc3RfcnVuLT5yZXN1bHQ7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUk9XX0NSRUFURQogLyoqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogcm93IGNyZWF0ZSBzdGF0ZSBtYWNoaW5lIHN0ZXBzCkBAIC0xODU2LDYgKzE4ODMsOCBAQAogCiAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JPV19DUkVBVEUgKi8KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogCiAvKiogQH0gKi8KZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcF9lbnVtLmMgYi9zbm1wbGliL3NubXBfZW51bS5jCmluZGV4IDM5OTY2ZmEuLjhhNmJkMzggMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc25tcF9lbnVtLmMKKysrIGIvc25tcGxpYi9zbm1wX2VudW0uYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaWZkZWYgSEFWRV9TVERMSUJfSAogI2luY2x1ZGUgPHN0ZGxpYi5oPgpAQCAtMjIsNiArMjMsMTMgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc25tcF9lbnVtX2FsbCwgbGlibmV0c25tcCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNlX2ZpbmRfZnJlZV92YWx1ZV9pbl9zbGlzdCwgc25tcF9lbnVtX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzbm1wX2VudW1fc3RvcmVfbGlzdCwgc25tcF9lbnVtX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzbm1wX2VudW1fc3RvcmVfc2xpc3QsIHNubXBfZW51bV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc25tcF9lbnVtX2NsZWFyLCBzbm1wX2VudW1fYWxsKQorCiBzdHJ1Y3Qgc25tcF9lbnVtX2xpc3Rfc3RyIHsKICAgICBjaGFyICAgICAgICAgICAqbmFtZTsKICAgICBzdHJ1Y3Qgc25tcF9lbnVtX2xpc3QgKmxpc3Q7CkBAIC0xNzcsNiArMTg1LDcgQEAKICAgICByZWFkX2NvbmZpZ19zdG9yZSh0eXBlLCBsaW5lKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOTVBfRU5VTV9TVE9SRV9MSVNUCiB2b2lkCiBzZV9zdG9yZV9saXN0KHVuc2lnbmVkIGludCBtYWpvciwgdW5zaWduZWQgaW50IG1pbm9yLCBjb25zdCBjaGFyICp0eXBlKQogewpAQCAtMTg1LDYgKzE5NCw3IEBACiAgICAgc25wcmludGYodG9rZW4sIHNpemVvZih0b2tlbiksICIlZDolZCIsIG1ham9yLCBtaW5vcik7CiAgICAgc2Vfc3RvcmVfZW51bV9saXN0KHNlX2ZpbmRfbGlzdChtYWpvciwgbWlub3IpLCB0b2tlbiwgdHlwZSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QX0VOVU1fU1RPUkVfTElTVCAqLwogCiBzdHJ1Y3Qgc25tcF9lbnVtX2xpc3QgKgogc2VfZmluZF9saXN0KHVuc2lnbmVkIGludCBtYWpvciwgdW5zaWduZWQgaW50IG1pbm9yKQpAQCAtMzMxLDE4ICszNDEsMTkgQEAKICAgICByZXR1cm4gKHNlX2ZpbmRfbGFiZWxfaW5fbGlzdChzZV9maW5kX3NsaXN0KGxpc3RuYW1lKSwgdmFsdWUpKTsKIH0KIAotCiBpbnQKIHNlX2ZpbmRfdmFsdWVfaW5fc2xpc3QoY29uc3QgY2hhciAqbGlzdG5hbWUsIGNvbnN0IGNoYXIgKmxhYmVsKQogewogICAgIHJldHVybiAoc2VfZmluZF92YWx1ZV9pbl9saXN0KHNlX2ZpbmRfc2xpc3QobGlzdG5hbWUpLCBsYWJlbCkpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU0VfRklORF9GUkVFX1ZBTFVFX0lOX1NMSVNUCiBpbnQKIHNlX2ZpbmRfZnJlZV92YWx1ZV9pbl9zbGlzdChjb25zdCBjaGFyICpsaXN0bmFtZSkKIHsKICAgICByZXR1cm4gKHNlX2ZpbmRfZnJlZV92YWx1ZV9pbl9saXN0KHNlX2ZpbmRfc2xpc3QobGlzdG5hbWUpKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TRV9GSU5EX0ZSRUVfVkFMVUVfSU5fU0xJU1QgKi8KIAogaW50CiBzZV9hZGRfcGFpcl90b19zbGlzdChjb25zdCBjaGFyICpsaXN0bmFtZSwgY2hhciAqbGFiZWwsIGludCB2YWx1ZSkKQEAgLTQyNywxMiArNDM4LDcgQEAKICAgICByZXR1cm47CiB9CiAKLXZvaWQKLXNlX2NsZWFyX3NsaXN0KGNvbnN0IGNoYXIgKmxpc3RuYW1lKQotewotICAgIHNlX2NsZWFyX2xpc3Qoc2VfZmluZF9zbGlzdF9wdHIobGlzdG5hbWUpKTsKLX0KLQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOTVBfRU5VTV9TVE9SRV9TTElTVAogdm9pZAogc2Vfc3RvcmVfc2xpc3QoY29uc3QgY2hhciAqbGlzdG5hbWUsIGNvbnN0IGNoYXIgKnR5cGUpCiB7CkBAIC00NDksNiArNDU1LDE0IEBACiAgICAgc2Vfc3RvcmVfc2xpc3QoKGNoYXIgKiljbGllbnRhcmdzLCBhcHBuYW1lKTsKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05NUF9FTlVNX1NUT1JFX1NMSVNUICovCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QX0VOVU1fQ0xFQVIKK3ZvaWQKK3NlX2NsZWFyX3NsaXN0KGNvbnN0IGNoYXIgKmxpc3RuYW1lKQoreworICAgIHNlX2NsZWFyX2xpc3Qoc2VfZmluZF9zbGlzdF9wdHIobGlzdG5hbWUpKTsKK30KIAogdm9pZAogc2VfY2xlYXJfYWxsX2xpc3RzKHZvaWQpCkBAIC00NTgsMyArNDcyLDQgQEAKICAgICBmb3IgKHNwdHIgPSBzbGlzdHN0b3JhZ2U7IHNwdHIgIT0gTlVMTDsgc3B0ciA9IHNwdHItPm5leHQpCiAgICAgICAgIHNlX2NsZWFyX2xpc3QoJihzcHRyLT5saXN0KSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QX0VOVU1fQ0xFQVIgKi8KZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcF9sb2dnaW5nLmMgYi9zbm1wbGliL3NubXBfbG9nZ2luZy5jCmluZGV4IGIzMGYxNjUuLmEyY2Q1NWEgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc25tcF9sb2dnaW5nLmMKKysrIGIvc25tcGxpYi9zbm1wX2xvZ2dpbmcuYwpAQCAtMTgsNiArMTgsNyBAQAogICogIEB7CiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaWYgSEFWRV9NQUxMT0NfSAogI2luY2x1ZGUgPG1hbGxvYy5oPgpAQCAtODQsNiArODUsMjIgQEAKICNlbmRpZgogI2VuZGlmCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihsb2dnaW5nX2FsbCwgbGlibmV0c25tcCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGxvZ2dpbmdfb3V0cHV0cywgbG9nZ2luZ19hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobG9nZ2luZ19maWxlLCBsb2dnaW5nX291dHB1dHMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobG9nZ2luZ19zdGRpbywgbG9nZ2luZ19vdXRwdXRzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGxvZ2dpbmdfc3lzbG9nLCBsb2dnaW5nX291dHB1dHMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobG9nZ2luZ19leHRlcm5hbCwgbG9nZ2luZ19hbGwpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihlbmFibGVfc3RkZXJybG9nLCBsb2dnaW5nX2FsbCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGxvZ2dpbmdfZW5hYmxlX2NhbGxsb2csIG5ldHNubXBfdW51c2VkKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGxvZ2dpbmdfZW5hYmxlX2xvZ2hhbmRsZXIsIG5ldHNubXBfdW51c2VkKQorCisvKiBkZWZhdWx0IHRvIHRoZSBmaWxlL3N0ZGlvL3N5c2xvZyBzZXQgKi8KK25ldHNubXBfZmVhdHVyZV93YW50KGxvZ2dpbmdfb3V0cHV0cykKKwogLyoKICAqIGxvZ2hfaGVhZDogIEEgbGlzdCBvZiBhbGwgbG9nIGhhbmRsZXJzLCBpbiBpbmNyZWFzaW5nIG9yZGVyIG9mIHByaW9yaXR5CiAgKiBsb2doX3ByaW9yaXRpZXM6ICAnSW5kZXhlcycgaW50byB0aGlzIGxpc3QsIGJ5IHByaW9yaXR5CkBAIC05Miw3ICsxMDksOSBAQAogbmV0c25tcF9sb2dfaGFuZGxlciAqbG9naF9wcmlvcml0aWVzW0xPR19ERUJVRysxXTsKIHN0YXRpYyBpbnQgIGxvZ2hfZW5hYmxlZCA9IDA7CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRwogc3RhdGljIGNoYXIgc3lzbG9nbmFtZVs2NF0gPSBERUZBVUxUX0xPR19JRDsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HICovCiAKIHZvaWQKIG5ldHNubXBfZGlzYWJsZV90aGlzX2xvZ2hhbmRsZXIobmV0c25tcF9sb2dfaGFuZGxlciAqbG9naCkKQEAgLTExMyw4ICsxMzIsMTAgQEAKICAgICArK2xvZ2hfZW5hYmxlZDsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRklMRQogdm9pZAogbmV0c25tcF9lbmFibGVfZmlsZWxvZyhuZXRzbm1wX2xvZ19oYW5kbGVyICpsb2doLCBpbnQgZG9udF96ZXJvX2xvZyk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUgKi8KIAogI2lmbmRlZiBIQVZFX1ZTTlBSSU5URgogICAgICAgICAgICAgICAgIC8qCkBAIC0xNTQsNiArMTc1LDcgQEAKIC8qCiAgKiBUaGVzZSBkZWZpbml0aW9ucyBoYW5kbGUgNC4yIHN5c3RlbXMgd2l0aG91dCBhZGRpdGlvbmFsIHN5c2xvZyBmYWNpbGl0aWVzLgogICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cKICNpZm5kZWYgTE9HX0NPTlMKICNkZWZpbmUgTE9HX0NPTlMJMCAgICAgICAvKiBEb24ndCBib3RoZXIgaWYgbm90IGRlZmluZWQuLi4gKi8KICNlbmRpZgpAQCAtMTkwLDYgKzIxMiw3IEBACiAjaWZuZGVmIExPR19VU0VSCiAjZGVmaW5lIExPR19VU0VSCTAKICNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cgKi8KIAogLyogU2V0IGxpbmUgYnVmZmVyaW5nIG1vZGUgZm9yIGEgc3RyZWFtLiAqLwogdm9pZApAQCAtMjg1LDYgKzMwOCw3IEBACiAgICAgcmV0dXJuIHByaV9sb3c7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRwogaW50CiBkZWNvZGVfZmFjaWxpdHkoIGNoYXIgKm9wdGFyZyApCiB7CkBAIC0zMTksNiArMzQzLDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HICovCiAKIGludAogc25tcF9sb2dfb3B0aW9ucyhjaGFyICpvcHRhcmcsIGludCBhcmdjLCBjaGFyICpjb25zdCAqYXJndikKQEAgLTM3NSw2ICs0MDAsNyBAQAogICAgIERFQlVHTVNHVCgoImxvZ2dpbmc6b3B0aW9ucyIsICIqY3A6ICclYydcbiIsICpjcCkpOwogICAgIHN3aXRjaCAoKmNwKSB7CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NURElPCiAgICAgLyoKICAgICAgKiBMb2cgdG8gU3RhbmRhcmQgRXJyb3IKICAgICAgKi8KQEAgLTQxMSw2ICs0MzcsNyBAQAogICAgICAgICAgICAgbG9naC0+aW1hZ2ljICA9IDE7CSAgICAvKiBzdGRvdXQsIG5vdCBzdGRlcnIgKi8KIAl9CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TVERJTyAqLwogCiAgICAgLyoKICAgICAgKiBMb2cgdG8gYSBuYW1lZCBmaWxlCkBAIC00MjAsNiArNDQ3LDcgQEAKICAgICAgICAgaWYgKHByaW9yaXR5ID09IC0xIHx8ICFhcmd2KSAgcmV0dXJuIC0xOwogICAgICAgICBvcHRhcmcgPSBhcmd2Wysrb3B0aW5kXTsKICAgICAgICAgLyogRmFsbHRocm91Z2ggKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUKICAgICBjYXNlICdmJzoKICAgICAgICAgaWYgKGluY19vcHRpbmQpCiAgICAgICAgICAgICBvcHRpbmQrKzsKQEAgLTQzNiw3ICs0NjQsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0FQUEVORF9MT0dGSUxFUykpOwogCX0KICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HCiAgICAgLyoKICAgICAgKiBMb2cgdG8gc3lzbG9nCiAgICAgICovCkBAIC00NjgsNiArNDk4LDcgQEAKIAkgICAgc25tcF9lbmFibGVfc3lzbG9nX2lkZW50KHNubXBfbG9nX3N5c2xvZ25hbWUoTlVMTCksIGZhY2lsaXR5KTsKIAl9CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cgKi8KIAogICAgIC8qCiAgICAgICogRG9uJ3QgbG9nIApAQCAtNDk5LDYgKzUzMCw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRwogY2hhciAqCiBzbm1wX2xvZ19zeXNsb2duYW1lKGNvbnN0IGNoYXIgKnBzdHIpCiB7CkBAIC01MDcsMjAgKzUzOSwyOSBAQAogCiAgIHJldHVybiBzeXNsb2duYW1lOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cgKi8KIAogdm9pZAogc25tcF9sb2dfb3B0aW9uc191c2FnZShjb25zdCBjaGFyICpsZWFkLCBGSUxFICogb3V0ZikKIHsKICAgICBjb25zdCBjaGFyICpwcmkxX21zZyA9ICIgZm9yIGxldmVsICdwcmknIGFuZCBhYm92ZSI7CiAgICAgY29uc3QgY2hhciAqcHJpMl9tc2cgPSAiIGZvciBsZXZlbHMgJ3AxJyB0byAncDInIjsKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NURElPCiAgICAgZnByaW50ZihvdXRmLCAiJXNlOiAgICAgICAgICAgbG9nIHRvIHN0YW5kYXJkIGVycm9yXG4iLCBsZWFkKTsKICAgICBmcHJpbnRmKG91dGYsICIlc286ICAgICAgICAgICBsb2cgdG8gc3RhbmRhcmQgb3V0cHV0XG4iLCBsZWFkKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1RESU8gKi8KICAgICBmcHJpbnRmKG91dGYsICIlc246ICAgICAgICAgICBkb24ndCBsb2cgYXQgYWxsXG4iLCBsZWFkKTsKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUKICAgICBmcHJpbnRmKG91dGYsICIlc2YgZmlsZTogICAgICBsb2cgdG8gdGhlIHNwZWNpZmllZCBmaWxlXG4iLCBsZWFkKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRklMRSAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HCiAgICAgZnByaW50ZihvdXRmLCAiJXNzIGZhY2lsaXR5OiAgbG9nIHRvIHN5c2xvZyAodmlhIHRoZSBzcGVjaWZpZWQgZmFjaWxpdHkpXG4iLCBsZWFkKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HICovCiAgICAgZnByaW50ZihvdXRmLCAiXG4lcyh2YXJpYW50cylcbiIsIGxlYWQpOworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRklMRQogICAgIGZwcmludGYob3V0ZiwgIiVzW0VPTl0gcHJpOiAgIGxvZyB0byBzdGFuZGFyZCBlcnJvciwgb3V0cHV0IG9yIC9kZXYvbnVsbCVzXG4iLCBsZWFkLCBwcmkxX21zZyk7CiAgICAgZnByaW50ZihvdXRmLCAiJXNbRU9OXSBwMS1wMjogbG9nIHRvIHN0YW5kYXJkIGVycm9yLCBvdXRwdXQgb3IgL2Rldi9udWxsJXNcbiIsIGxlYWQsIHByaTJfbXNnKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRklMRSAqLwogICAgIGZwcmludGYob3V0ZiwgIiVzW0ZTXSBwcmkgdG9rZW46ICAgIGxvZyB0byBmaWxlL3N5c2xvZyVzXG4iLCBsZWFkLCBwcmkxX21zZyk7CiAgICAgZnByaW50ZihvdXRmLCAiJXNbRlNdIHAxLXAyIHRva2VuOiAgbG9nIHRvIGZpbGUvc3lzbG9nJXNcbiIsIGxlYWQsIHByaTJfbXNnKTsKIH0KQEAgLTU1NSw2ICs1OTYsNyBAQAogICAgIHJldHVybiBzYnVmOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cKIHZvaWQKIHNubXBfZGlzYWJsZV9zeXNsb2dfZW50cnkobmV0c25tcF9sb2dfaGFuZGxlciAqbG9naCkKIHsKQEAgLTU4NCw3ICs2MjYsOSBAQAogICAgICAgICBpZiAobG9naC0+ZW5hYmxlZCAmJiBsb2doLT50eXBlID09IE5FVFNOTVBfTE9HSEFORExFUl9TWVNMT0cpCiAgICAgICAgICAgICBzbm1wX2Rpc2FibGVfc3lzbG9nX2VudHJ5KGxvZ2gpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRklMRQogdm9pZAogc25tcF9kaXNhYmxlX2ZpbGVsb2dfZW50cnkobmV0c25tcF9sb2dfaGFuZGxlciAqbG9naCkKIHsKQEAgLTU5OCw3ICs2NDIsOSBAQAogICAgIH0KICAgICBuZXRzbm1wX2Rpc2FibGVfdGhpc19sb2doYW5kbGVyKGxvZ2gpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19GSUxFICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUKIHZvaWQKIHNubXBfZGlzYWJsZV9maWxlbG9nKHZvaWQpCiB7CkBAIC02MDgsNyArNjU0LDkgQEAKICAgICAgICAgaWYgKGxvZ2gtPmVuYWJsZWQgJiYgbG9naC0+dHlwZSA9PSBORVRTTk1QX0xPR0hBTkRMRVJfRklMRSkKICAgICAgICAgICAgIHNubXBfZGlzYWJsZV9maWxlbG9nX2VudHJ5KGxvZ2gpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19GSUxFICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NURElPCiAvKgogICogcmV0dXJucyB0aGF0IHN0YXR1cyBvZiBzdGRlcnIgbG9nZ2luZwogICoKQEAgLTY0MCw3ICs2ODgsOSBAQAogICAgICAgICAgICAgbmV0c25tcF9kaXNhYmxlX3RoaXNfbG9naGFuZGxlcihsb2doKTsKIAl9CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NURElPICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0VOQUJMRV9DQUxMTE9HCiB2b2lkCiBzbm1wX2Rpc2FibGVfY2FsbGxvZyh2b2lkKQogewpAQCAtNjUxLDYgKzcwMSw3IEBACiAgICAgICAgICAgICBuZXRzbm1wX2Rpc2FibGVfdGhpc19sb2doYW5kbGVyKGxvZ2gpOwogCX0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRU5BQkxFX0NBTExMT0cgKi8KIAogdm9pZAogc25tcF9kaXNhYmxlX2xvZyh2b2lkKQpAQCAtNjU4LDEwICs3MDksMTQgQEAKICAgICBuZXRzbm1wX2xvZ19oYW5kbGVyICpsb2doOwogCiAgICAgZm9yIChsb2doID0gbG9naF9oZWFkOyBsb2doOyBsb2doID0gbG9naC0+bmV4dCkgeworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HCiAgICAgICAgIGlmIChsb2doLT50eXBlID09IE5FVFNOTVBfTE9HSEFORExFUl9TWVNMT0cpCiAgICAgICAgICAgICBzbm1wX2Rpc2FibGVfc3lzbG9nX2VudHJ5KGxvZ2gpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUKICAgICAgICAgaWYgKGxvZ2gtPnR5cGUgPT0gTkVUU05NUF9MT0dIQU5ETEVSX0ZJTEUpCiAgICAgICAgICAgICBzbm1wX2Rpc2FibGVfZmlsZWxvZ19lbnRyeShsb2doKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRklMRSAqLwogICAgICAgICBuZXRzbm1wX2Rpc2FibGVfdGhpc19sb2doYW5kbGVyKGxvZ2gpOwogICAgIH0KIH0KQEAgLTY3NCwxNSArNzI5LDIwIEBACiBuZXRzbm1wX2xvZ2dpbmdfcmVzdGFydCh2b2lkKQogewogICAgIG5ldHNubXBfbG9nX2hhbmRsZXIgKmxvZ2g7CisgICAgaW50IGRvbmVvbmUgPSAwOwogCiAgICAgZm9yIChsb2doID0gbG9naF9oZWFkOyBsb2doOyBsb2doID0gbG9naC0+bmV4dCkgewogICAgICAgICBpZiAoMCA9PSBsb2doLT5lbmFibGVkKQogICAgICAgICAgICAgY29udGludWU7CisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cKICAgICAgICAgaWYgKGxvZ2gtPnR5cGUgPT0gTkVUU05NUF9MT0dIQU5ETEVSX1NZU0xPRykgewogICAgICAgICAgICAgc25tcF9kaXNhYmxlX3N5c2xvZ19lbnRyeShsb2doKTsKICAgICAgICAgICAgIHNubXBfZW5hYmxlX3N5c2xvZ19pZGVudChsb2doLT50b2tlbiwoaW50KShpbnRwdHJfdClsb2doLT5tYWdpYyk7CisgICAgICAgICAgICBkb25lb25lID0gMTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChsb2doLT50eXBlID09IE5FVFNOTVBfTE9HSEFORExFUl9GSUxFKSB7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRyAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRklMRQorICAgICAgICBpZiAobG9naC0+dHlwZSA9PSBORVRTTk1QX0xPR0hBTkRMRVJfRklMRSAmJiAhZG9uZW9uZSkgewogICAgICAgICAgICAgc25tcF9kaXNhYmxlX2ZpbGVsb2dfZW50cnkobG9naCk7CiAgICAgICAgICAgICAvKiogaG1tLCBkb24ndCB6ZXJvIHN0YXR1cyBpc24ndCBzYXZlZC4uIGkgdGhpbmsgaXQncwogICAgICAgICAgICAgICogc2FmZXIgbm90IHRvIG92ZXJ3cml0ZSwgaW4gY2FzZSBhIGh1cCBpcyBqdXN0IHRvCkBAIC02OTAsMTEgKzc1MCwxMyBAQAogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBuZXRzbm1wX2VuYWJsZV9maWxlbG9nKGxvZ2gsIDEpOwogICAgICAgICB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUgKi8KICAgICB9CiB9CiAKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRwogdm9pZAogc25tcF9lbmFibGVfc3lzbG9nKHZvaWQpCiB7CkBAIC03NTQsNyArODE2LDkgQEAKICAgICAgICAgfQogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUKIHZvaWQKIG5ldHNubXBfZW5hYmxlX2ZpbGVsb2cobmV0c25tcF9sb2dfaGFuZGxlciAqbG9naCwgaW50IGRvbnRfemVyb19sb2cpCiB7CkBAIC04MDQsOCArODY4LDExIEBACiAgICAgICAgICAgICAgICAgbmV0c25tcF9lbmFibGVfZmlsZWxvZyhsb2doLCBkb250X3plcm9fbG9nKTsKICAgICB9CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUgKi8KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRU5BQkxFX1NUREVSUkxPRworLyogdXNlZCBpbiB0aGUgcGVybCBtb2R1bGVzIGFuZCBpcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9zdWJhZ2VudC5jICovCiB2b2lkCiBzbm1wX2VuYWJsZV9zdGRlcnJsb2codm9pZCkKIHsKQEAgLTgyNiw4ICs4OTMsOSBAQAogICAgICAgICAgICAgbG9naC0+dG9rZW4gICAgPSBzdHJkdXAoInN0ZGVyciIpOwogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0VOQUJMRV9TVERFUlJMT0cgKi8KIAotCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19FTkFCTEVfQ0FMTExPRwogdm9pZAogc25tcF9lbmFibGVfY2FsbGxvZyh2b2lkKQkvKiBYWFggLSBvciB0YWtlIGEgY2FsbGJhY2sgcm91dGluZSA/Pz8gKi8KIHsKQEAgLTg0Nyw3ICs5MTUsNyBAQAogICAgICAgICAgICAgbG9naC0+dG9rZW4gICAgPSBzdHJkdXAoImNhbGxiYWNrIik7CiAgICAgfQogfQotCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0VOQUJMRV9DQUxMTE9HICovCiAKIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwpAQCAtOTMzLDE3ICsxMDAxLDIzIEBACiAgICAgY2FzZSBORVRTTk1QX0xPR0hBTkRMRVJfU1RET1VUOgogICAgICAgICBsb2doLT5pbWFnaWMgID0gMTsKICAgICAgICAgLyogZmFsbHRocm91Z2ggKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NURElPCiAgICAgY2FzZSBORVRTTk1QX0xPR0hBTkRMRVJfU1RERVJSOgogICAgICAgICBsb2doLT5oYW5kbGVyID0gbG9nX2hhbmRsZXJfc3Rkb3V0ZXJyOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1RESU8gKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRklMRQogICAgIGNhc2UgTkVUU05NUF9MT0dIQU5ETEVSX0ZJTEU6CiAgICAgICAgIGxvZ2gtPmhhbmRsZXIgPSBsb2dfaGFuZGxlcl9maWxlOwogICAgICAgICBsb2doLT5pbWFnaWMgID0gMTsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRwogICAgIGNhc2UgTkVUU05NUF9MT0dIQU5ETEVSX1NZU0xPRzoKICAgICAgICAgbG9naC0+aGFuZGxlciA9IGxvZ19oYW5kbGVyX3N5c2xvZzsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRyAqLwogICAgIGNhc2UgTkVUU05NUF9MT0dIQU5ETEVSX0NBTExCQUNLOgogICAgICAgICBsb2doLT5oYW5kbGVyID0gbG9nX2hhbmRsZXJfY2FsbGJhY2s7CiAgICAgICAgIGJyZWFrOwpAQCAtOTYxLDYgKzEwMzUsNyBAQAogfQogCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0VOQUJMRV9MT0dIQU5ETEVSCiBpbnQKIG5ldHNubXBfZW5hYmxlX2xvZ2hhbmRsZXIoIGNvbnN0IGNoYXIgKnRva2VuICkKIHsKQEAgLTk4NSw2ICsxMDYwLDcgQEAKICAgICBuZXRzbm1wX2Rpc2FibGVfdGhpc19sb2doYW5kbGVyKGxvZ2gpOwogICAgIHJldHVybiAxOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19FTkFCTEVfTE9HSEFORExFUiAqLwogCiBpbnQKIG5ldHNubXBfcmVtb3ZlX2xvZ2hhbmRsZXIoIG5ldHNubXBfbG9nX2hhbmRsZXIgKmxvZ2ggKQpAQCAtMTAxMSw2ICsxMDg3LDcgQEAKIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TVERJTwogaW50CiBsb2dfaGFuZGxlcl9zdGRvdXRlcnIoICBuZXRzbm1wX2xvZ19oYW5kbGVyKiBsb2doLCBpbnQgcHJpLCBjb25zdCBjaGFyICpzdHIpCiB7CkBAIC0xMDM4LDggKzExMTUsMTAgQEAKIAogICAgIHJldHVybiAxOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TVERJTyAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRwogI2lmZGVmIFdJTjMyCiBpbnQKIGxvZ19oYW5kbGVyX3N5c2xvZyggIG5ldHNubXBfbG9nX2hhbmRsZXIqIGxvZ2gsIGludCBwcmksIGNvbnN0IGNoYXIgKnN0cikKQEAgLTExMjMsOCArMTIwMiwxMCBAQAogICAgIHJldHVybiAxOwogfQogI2VuZGlmIC8qICFXSU4zMiAqLworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cgKi8KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19GSUxFCiBpbnQKIGxvZ19oYW5kbGVyX2ZpbGUoICAgIG5ldHNubXBfbG9nX2hhbmRsZXIqIGxvZ2gsIGludCBwcmksIGNvbnN0IGNoYXIgKnN0cikKIHsKQEAgLTExNjEsNiArMTI0Miw3IEBACiAgICAgbG9naC0+aW1hZ2ljID0gc3RyW3N0cmxlbihzdHIpIC0gMV0gPT0gJ1xuJzsKICAgICByZXR1cm4gMTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRklMRSAqLwogCiBpbnQKIGxvZ19oYW5kbGVyX2NhbGxiYWNrKG5ldHNubXBfbG9nX2hhbmRsZXIqIGxvZ2gsIGludCBwcmksIGNvbnN0IGNoYXIgKnN0cikKQEAgLTExOTUsMTAgKzEyNzcsMTIgQEAKIHZvaWQKIHNubXBfbG9nX3N0cmluZyhpbnQgcHJpb3JpdHksIGNvbnN0IGNoYXIgKnN0cikKIHsKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NURElPCiAgICAgc3RhdGljIGludCBzdGRlcnJfZW5hYmxlZCA9IDA7CiAgICAgc3RhdGljIG5ldHNubXBfbG9nX2hhbmRsZXIgbGggPSB7IDEsIDAsIDAsIDAsICJzdGRlcnIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfaGFuZGxlcl9zdGRvdXRlcnIsIDAsIE5VTEwsICBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMIH07CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NURElPICovCiAgICAgbmV0c25tcF9sb2dfaGFuZGxlciAqbG9naDsKIAogICAgIC8qCkBAIC0xMjA2LDIxICsxMjkwLDIzIEBACiAgICAgICogSWYgeW91IGRvbid0IHdhbnQgc3RkZXJyIGxvZ2dpbmcsIHRoZW4gZW5hYmxlIHNvbWV0aGluZyBlbHNlLgogICAgICAqLwogICAgIGlmICgwID09IGxvZ2hfZW5hYmxlZCkgeworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1RESU8KICAgICAgICAgaWYgKCFzdGRlcnJfZW5hYmxlZCkgewogICAgICAgICAgICAgKytzdGRlcnJfZW5hYmxlZDsKICAgICAgICAgICAgIG5ldHNubXBfc2V0X2xpbmVfYnVmZmVyaW5nKHN0ZGVycik7Ci0gICAgICAgICAgICBsb2dfaGFuZGxlcl9zdGRvdXRlcnIoICZsaCwgTE9HX1dBUk5JTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBsb2cgaGFuZGxpbmcgZW5hYmxlZCAtIHVzaW5nIHN0ZGVyciBsb2dnaW5nXG4iKTsKICAgICAgICAgfQogICAgICAgICBsb2dfaGFuZGxlcl9zdGRvdXRlcnIoICZsaCwgcHJpb3JpdHksIHN0ciApOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TVERJTyAqLwogCiAgICAgICAgIHJldHVybjsKICAgICB9CisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TVERJTwogICAgIGVsc2UgaWYgKHN0ZGVycl9lbmFibGVkKSB7CiAgICAgICAgIHN0ZGVycl9lbmFibGVkID0gMDsKICAgICAgICAgbG9nX2hhbmRsZXJfc3Rkb3V0ZXJyKCAmbGgsIExPR19JTkZPLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMb2cgaGFuZGxpbmcgZGVmaW5lZCAtIGRpc2FibGluZyBzdGRlcnJcbiIgKTsKICAgICB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NURElPICovCiAgICAgICAgIAogCiAgICAgLyoKQEAgLTEzNjQsMTEgKzE0NTAsMTMgQEAKICAgICB9CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0VYVEVSTkFMCiAvKiBleHRlcm5hbCBhY2Nlc3MgdG8gbG9naF9oZWFkIHZhcmlhYmxlICovCiBuZXRzbm1wX2xvZ19oYW5kbGVyICAqCiBnZXRfbG9naF9oZWFkKHZvaWQpCiB7CiAJcmV0dXJuIGxvZ2hfaGVhZDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRVhURVJOQUwgKi8KIAogLyoqICBAfSAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wX29wZW5zc2wuYyBiL3NubXBsaWIvc25tcF9vcGVuc3NsLmMKaW5kZXggZTEzZTU5ZS4uM2IwZWFhOCAxMDA2NDQKLS0tIGEvc25tcGxpYi9zbm1wX29wZW5zc2wuYworKysgYi9zbm1wbGliL3NubXBfb3BlbnNzbC5jCkBAIC02LDcgKzYsMTYgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAKLSNpZiBkZWZpbmVkKE5FVFNOTVBfVVNFX09QRU5TU0wpICYmIGRlZmluZWQoSEFWRV9MSUJTU0wpCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KKworI2lmIGRlZmluZWQoTkVUU05NUF9VU0VfT1BFTlNTTCkgJiYgZGVmaW5lZChIQVZFX0xJQlNTTCkgJiYgIWRlZmluZWQoTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DRVJUX1VUSUwpCisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNvbnRhaW5lcl9mcmVlX2FsbCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG9wZW5zc2xfY2VydF9nZXRfc3ViamVjdEFsdE5hbWVzLCBuZXRzbm1wX3VudXNlZCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihvcGVuc3NsX2h0Mm5pZCwgbmV0c25tcF91bnVzZWQpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yob3BlbnNzbF9lcnJfbG9nLCBuZXRzbm1wX3VudXNlZCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjZXJ0X2R1bXBfbmFtZXMsIG5ldHNubXBfdW51c2VkKQogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIApAQCAtMTMxLDYgKzE0MCw3IEBACiAgICAgcmV0dXJuIF9jZXJ0X2dldF9uYW1lKG9jZXJ0LCBOSURfY29tbW9uTmFtZSwgYnVmLCBsZW4sIDApOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0VSVF9EVU1QX05BTUVTCiAvKiogbmV0c25tcF9vcGVuc3NsX2NlcnRfZHVtcF9uYW1lOiBkdW1wIHN1YmplY3QgbmFtZXMgaW4gY2VydAogICovCiB2b2lkCkBAIC0xNzQsNiArMTg0LDcgQEAKICAgICAgICAgICAgICAgICAgICBwcmVmaXhfc2hvcnQsIEFTTjFfU1RSSU5HX2RhdGEob25hbWVfZW50cnktPnZhbHVlKSkpOwogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NFUlRfRFVNUF9OQU1FUyAqLwogCiBzdGF0aWMgY2hhciAqCiBfY2VydF9nZXRfZXh0ZW5zaW9uKFg1MDlfRVhURU5TSU9OICAqb2V4dCwgY2hhciAqKmJ1ZiwgaW50ICpsZW4sIGludCBmbGFncykKQEAgLTM2OCw4ICszNzksNyBAQAogICAgIHJldHVybiBydG47CiB9CiAKLS8qKgotICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfT1BFTlNTTF9DRVJUX0dFVF9TVUJKRUNUQUxUTkFNRVMKIC8qKiBuZXRzbm1wX29wZW5zc2xfY2VydF9nZXRfc3ViamVjdEFsdE5hbWU6IGdldCBzdWJqZWN0QWx0TmFtZSBmb3IgY2VydC4KICAqIGlmIGEgcG9pbnRlciB0byBhIGJ1ZmZlciBhbmQgaXRzIGxlbmd0aCBhcmUgc3BlY2lmaWVkLCB0aGV5IHdpbGwgYmUKICAqIHVzZWQuIG90aGVyd2lzZSwgYSBuZXcgYnVmZmVyIHdpbGwgYmUgYWxsb2NhdGVkLCB3aGljaCB0aGUgY2FsbGVyIHdpbGwKQEAgLTM4MCw2ICszOTAsNyBAQAogewogICAgIHJldHVybiBfY2VydF9nZXRfZXh0ZW5zaW9uX2lkX3N0cihvY2VydCwgTklEX3N1YmplY3RfYWx0X25hbWUsIGJ1ZiwgbGVuLCAwKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX09QRU5TU0xfQ0VSVF9HRVRfU1VCSkVDVEFMVE5BTUVTICovCiAKIHZvaWQKIG5ldHNubXBfb3BlbnNzbF9jZXJ0X2R1bXBfZXh0ZW5zaW9ucyhYNTA5ICpvY2VydCkKQEAgLTQ0MCw2ICs0NTEsNyBAQAogICAgIHJldHVybiAwOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfT1BFTlNTTF9IVDJOSUQKIGludAogX2h0Mm5pZChpbnQgaHQpCiB7CkBAIC00NDcsNiArNDU5LDcgQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIF9odG1hcFtodF07CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9PUEVOU1NMX0hUMk5JRCAqLwogCiAvKioKICAqIHJldHVybnMgYWxsb2NhdGVkIHBvaW50ZXIgY2FsbGVyIG11c3QgZnJlZS4KQEAgLTQ5NSw3ICs1MDgsNyBAQAogICAgICAgICAgICAgZGlnZXN0ID0gRVZQX3NoYTEoKTsKICAgICAgICAgICAgIGJyZWFrOwogCi0jaWZuZGVmIE9QRU5TU0xfTk9fU0hBMjU2CisjaWZkZWYgSEFWRV9FVlBfU0hBMjI0CiAgICAgICAgIGNhc2UgTlNfSEFTSF9TSEEyMjQ6CiAgICAgICAgICAgICBkaWdlc3QgPSBFVlBfc2hhMjI0KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTUwNSw3ICs1MTgsNyBAQAogICAgICAgICAgICAgYnJlYWs7CiAKICNlbmRpZgotI2lmbmRlZiBPUEVOU1NMX05PX1NIQTUxMgorI2lmZGVmIEhBVkVfRVZQX1NIQTM4NAogICAgICAgICBjYXNlIE5TX0hBU0hfU0hBMzg0OgogICAgICAgICAgICAgZGlnZXN0ID0gRVZQX3NoYTM4NCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC03OTksNiArODEyLDcgQEAKIH0KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfT1BFTlNTTF9FUlJfTE9HCiB2b2lkCiBuZXRzbm1wX29wZW5zc2xfZXJyX2xvZyhjb25zdCBjaGFyICpwcmVmaXgpCiB7CkBAIC04MDksNiArODIzLDcgQEAKICAgICAgICAgICAgICAgICAgRVJSX0dFVF9MSUIoZXJyKSwgRVJSX0dFVF9GVU5DKGVyciksIEVSUl9HRVRfUkVBU09OKGVycikpOwogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX09QRU5TU0xfRVJSX0xPRyAqLwogCiB2b2lkCiBuZXRzbm1wX29wZW5zc2xfbnVsbF9jaGVja3MoU1NMICpzc2wsIGludCAqbnVsbF9hdXRoLCBpbnQgKm51bGxfY2lwaGVyKQpAQCAtODYxLDQgKzg3Niw0IEBACiAgICAgfQogfQogCi0jZW5kaWYgLyogTkVUU05NUF9VU0VfT1BFTlNTTCAmJiBIQVZFX0xJQlNTTCAqLworI2VuZGlmIC8qIE5FVFNOTVBfVVNFX09QRU5TU0wgJiYgSEFWRV9MSUJTU0wgJiYgIWRlZmluZWQoTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DRVJUX1VUSUwpICovCmRpZmYgLS1naXQgYS9zbm1wbGliL3NubXBfcGFyc2VfYXJncy5jIGIvc25tcGxpYi9zbm1wX3BhcnNlX2FyZ3MuYwppbmRleCBiZjYwNDE5Li5hZjYzMzNlIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXBfcGFyc2VfYXJncy5jCisrKyBiL3NubXBsaWIvc25tcF9wYXJzZV9hcmdzLmMKQEAgLTU1MCw2ICs1NTAsNyBAQAogCiAgICAgICAgICAgICBicmVhazsKIAorI2lmZGVmIE5FVFNOTVBfU0VDTU9EX1VTTQogICAgICAgICBjYXNlICdhJzoKICNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX01ENQogICAgICAgICAgICAgaWYgKCFzdHJjYXNlY21wKG9wdGFyZywgIk1ENSIpKSB7CkBAIC02MjMsNiArNjI0LDcgQEAKIAkgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNOTVBWM19DTURfT1BUSU9OUyAqLworI2VuZGlmIC8qIE5FVFNOTVBfU0VDTU9EX1VTTSAqLwogCiAgICAgICAgIGNhc2UgJz8nOgogICAgICAgICAgICAgcmV0dXJuIChORVRTTk1QX1BBUlNFX0FSR1NfRVJST1JfVVNBR0UpOwpAQCAtNjgzLDYgKzY4NSw5IEBACiAgICAgICAgIH0KICAgICB9CiAKKyNpZmRlZiBORVRTTk1QX1NFQ01PRF9VU00KKyAgICAvKiBYWFg6IHRoaXMgc2hvdWxkIGlkZWFsbHkgYmUgbW92ZWQgdG8gc25tcHVzbS5jIHNvbWVob3cgKi8KKwogICAgIC8qCiAgICAgICogbWFrZSBtYXN0ZXIga2V5IGZyb20gcGFzcyBwaHJhc2VzIAogICAgICAqLwpAQCAtNzYzLDYgKzc2OCw4IEBACiAgICAgICAgICAgICByZXR1cm4gKE5FVFNOTVBfUEFSU0VfQVJHU19FUlJPUik7CiAgICAgICAgIH0KICAgICB9CisjZW5kaWYgLyogTkVUU05NUF9TRUNNT0RfVVNNICovCisKICAgICAvKgogICAgICAqIGdldCB0aGUgaG9zdG5hbWUgCiAgICAgICovCmRpZmYgLS1naXQgYS9zbm1wbGliL3NubXBfc2VjbW9kLmMgYi9zbm1wbGliL3NubXBfc2VjbW9kLmMKaW5kZXggYThjZjkyOC4uOWU2MGE0MiAxMDA2NDQKLS0tIGEvc25tcGxpYi9zbm1wX3NlY21vZC5jCisrKyBiL3NubXBsaWIvc25tcF9zZWNtb2QuYwpAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KKwogc3RhdGljIHN0cnVjdCBzbm1wX3NlY21vZF9saXN0ICpyZWdpc3RlcmVkX3NlcnZpY2VzID0gTlVMTDsKIAogc3RhdGljIFNOTVBDYWxsYmFjayBzZXRfZGVmYXVsdF9zZWNtb2Q7CkBAIC01MSw2ICs1MywxMSBAQAogI2luY2x1ZGUgInNubXBzbV9pbml0LmgiCiB9CiAKK3ZvaWQKK3NodXRkb3duX3NlY21vZCh2b2lkKQoreworICAgICNpbmNsdWRlICJzbm1wc21fc2h1dGRvd24uaCIKK30KIAogaW50CiByZWdpc3Rlcl9zZWNfbW9kKGludCBzZWNtb2QsIGNvbnN0IGNoYXIgKm1vZG5hbWUsCkBAIC05OSw2ICsxMDYsOCBAQAogICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CiB9CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1bnJlZ2lzdGVyX3NlY19tb2QsIG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VOUkVHSVNURVJfU0VDX01PRAogaW50CiB1bnJlZ2lzdGVyX3NlY19tb2QoaW50IHNlY21vZCkKIHsKQEAgLTEyMSw2ICsxMzAsNyBAQAogICAgICAqLwogICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VOUkVHSVNURVJfU0VDX01PRCAqLwogCiB2b2lkICAgICAgICAgICAgCiBjbGVhcl9zZWNfbW9kKHZvaWQpCkBAIC0xNTMsNiArMTYzLDE5IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qIHRyeSB0byBwaWNrIGEgcmVhc29uYWJsZSBzZWN1cml0eSBtb2R1bGUgZGVmYXVsdCBiYXNlZCBvbiB3aGF0IHdhcworICAgY29tcGlsZWQgaW50byB0aGUgbmV0LXNubXAgcGFja2FnZSAqLworI2lmZGVmIFVTTV9TRUNfTU9ERUxfTlVNQkVSCisjZGVmaW5lIE5FVFNOTVBfU0VDTU9EX0RFRkFVTFRfTU9ERUwgIFVTTV9TRUNfTU9ERUxfTlVNQkVSCisjZWxpZiBkZWZpbmVkKFRTTV9TRUNfTU9ERUxfTlVNQkVSKQorI2RlZmluZSBORVRTTk1QX1NFQ01PRF9ERUZBVUxUX01PREVMICBUU01fU0VDX01PREVMX05VTUJFUgorI2VsaWYgZGVmaW5lZChLU01fU0VDX01PREVMX05VTUJFUikKKyNkZWZpbmUgTkVUU05NUF9TRUNNT0RfREVGQVVMVF9NT0RFTCAgS1NNX1NFQ19NT0RFTF9OVU1CRVIKKyNlbHNlCisvKiBlbHNlIHdlIGdpdmUgdXAgYW5kIGxlYXZlIGl0IGJsYW5rICovCisjZGVmaW5lIE5FVFNOTVBfU0VDTU9EX0RFRkFVTFRfTU9ERUwgIC0xCisjZW5kaWYKKwogc3RhdGljIGludAogc2V0X2RlZmF1bHRfc2VjbW9kKGludCBtYWpvciwgaW50IG1pbm9yLCB2b2lkICpzZXJ2ZXJhcmcsIHZvaWQgKmNsaWVudGFyZykKIHsKQEAgLTE3MiwxMSArMTk1LDExIEBACiAgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAidW5rbm93biBzZWN1cml0eSBtb2RlbCBuYW1lOiAlcy4gIEZvcmNpbmcgVVNNIGluc3RlYWQuXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNwdHIpOwotICAgICAgICAgICAgICAgIHNlc3MtPnNlY3VyaXR5TW9kZWwgPSBVU01fU0VDX01PREVMX05VTUJFUjsKKyAgICAgICAgICAgICAgICBzZXNzLT5zZWN1cml0eU1vZGVsID0gTkVUU05NUF9TRUNNT0RfREVGQVVMVF9NT0RFTDsKICAgICAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzZXNzLT5zZWN1cml0eU1vZGVsID0gVVNNX1NFQ19NT0RFTF9OVU1CRVI7CisgICAgICAgICAgICBzZXNzLT5zZWN1cml0eU1vZGVsID0gTkVUU05NUF9TRUNNT0RfREVGQVVMVF9NT0RFTDsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jIGIvc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jCmluZGV4IDRkZjk2MDIuLmFkYTQ3ODEgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc25tcF90cmFuc3BvcnQuYworKysgYi9zbm1wbGliL3NubXBfdHJhbnNwb3J0LmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL3R5cGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oPgpAQCAtNzAsNiArNzEsMTEgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRyYW5zcG9ydF9hbGwsIGxpYm5ldHNubXApCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0ZG9tYWluX3N1cHBvcnQsIHRyYW5zcG9ydF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGRvbWFpbl90cmFuc3BvcnRfb2lkLCB0cmFuc3BvcnRfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNvY2thZGRyX3NpemUsIHRyYW5zcG9ydF9hbGwpCiAKIC8qCiAgKiBPdXIgbGlzdCBvZiBzdXBwb3J0ZWQgdHJhbnNwb3J0IGRvbWFpbnMuICAKQEAgLTk5LDkgKzEwNSw2IEBACiBzdGF0aWMgdm9pZCAgICAgbmV0c25tcF90ZG9tYWluX2R1bXAodm9pZCk7CiAKIAotLyoKLSAqIE1ha2UgYSBkZWVwIGNvcHkgb2YgYW4gbmV0c25tcF90cmFuc3BvcnQuICAKLSAqLwogCiB2b2lkCiBpbml0X3NubXBfdHJhbnNwb3J0KHZvaWQpCkBAIC0xMTIsMTYgKzExNSwyMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0RPTlRfTE9BRF9IT1NUX0ZJTEVTKTsKIH0KIAorLyoKKyAqIE1ha2UgYSBkZWVwIGNvcHkgb2YgYW4gbmV0c25tcF90cmFuc3BvcnQuICAKKyAqLwogbmV0c25tcF90cmFuc3BvcnQgKgogbmV0c25tcF90cmFuc3BvcnRfY29weShuZXRzbm1wX3RyYW5zcG9ydCAqdCkKIHsKICAgICBuZXRzbm1wX3RyYW5zcG9ydCAqbiA9IE5VTEw7CiAKLSAgICBuID0gKG5ldHNubXBfdHJhbnNwb3J0ICopIG1hbGxvYyhzaXplb2YobmV0c25tcF90cmFuc3BvcnQpKTsKKyAgICBpZiAodCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG4gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdHJhbnNwb3J0KTsKICAgICBpZiAobiA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBtZW1zZXQobiwgMCwgc2l6ZW9mKG5ldHNubXBfdHJhbnNwb3J0KSk7CiAKICAgICBpZiAodC0+ZG9tYWluICE9IE5VTEwpIHsKICAgICAgICAgbi0+ZG9tYWluID0gdC0+ZG9tYWluOwpAQCAtMTgwLDYgKzE4OSw3IEBACiAgICAgbi0+Zl9mbXRhZGRyID0gdC0+Zl9mbXRhZGRyOwogICAgIG4tPnNvY2sgPSB0LT5zb2NrOwogICAgIG4tPmZsYWdzID0gdC0+ZmxhZ3M7CisgICAgbi0+YmFzZV90cmFuc3BvcnQgPSBuZXRzbm1wX3RyYW5zcG9ydF9jb3B5KHQtPmJhc2VfdHJhbnNwb3J0KTsKIAogICAgIC8qIGdpdmUgdGhlIHRyYW5zcG9ydCBhIGNoYW5jZSB0byBkbyAic3BlY2lhbCB0aGluZ3MiICovCiAgICAgaWYgKHQtPmZfY29weSkKQEAgLTE5NiwxNSArMjA2LDExIEBACiAgICAgaWYgKE5VTEwgPT0gdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHQtPmxvY2FsICE9IE5VTEwpIHsKLSAgICAgICAgU05NUF9GUkVFKHQtPmxvY2FsKTsKLSAgICB9Ci0gICAgaWYgKHQtPnJlbW90ZSAhPSBOVUxMKSB7Ci0gICAgICAgIFNOTVBfRlJFRSh0LT5yZW1vdGUpOwotICAgIH0KLSAgICBpZiAodC0+ZGF0YSAhPSBOVUxMKSB7Ci0gICAgICAgIFNOTVBfRlJFRSh0LT5kYXRhKTsKLSAgICB9CisgICAgU05NUF9GUkVFKHQtPmxvY2FsKTsKKyAgICBTTk1QX0ZSRUUodC0+cmVtb3RlKTsKKyAgICBTTk1QX0ZSRUUodC0+ZGF0YSk7CisgICAgbmV0c25tcF90cmFuc3BvcnRfZnJlZSh0LT5iYXNlX3RyYW5zcG9ydCk7CisKICAgICBTTk1QX0ZSRUUodCk7CiB9CiAKQEAgLTIzMCw2ICsyMzYsMjggQEAKIAogICAgIHJldHVybiBzdHI7CiB9CisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TT0NLQUREUl9TSVpFCitpbnQKK25ldHNubXBfc29ja2FkZHJfc2l6ZShzdHJ1Y3Qgc29ja2FkZHIgKnNhKQoreworICAgIGlmIChOVUxMID09IHNhKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHN3aXRjaCAoc2EtPnNhX2ZhbWlseSkgeworICAgICAgICBjYXNlIEFGX0lORVQ6CisgICAgICAgICAgICByZXR1cm4gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CisgICAgICAgIGJyZWFrOworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyAgICAgICAgY2FzZSBBRl9JTkVUNjoKKyAgICAgICAgICAgIHJldHVybiBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIH0KKworICAgIHJldHVybiAwOworfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU09DS0FERFJfU0laRSAqLwogICAgIAogaW50CiBuZXRzbm1wX3RyYW5zcG9ydF9zZW5kKG5ldHNubXBfdHJhbnNwb3J0ICp0LCB2b2lkICpwYWNrZXQsIGludCBsZW5ndGgsCkBAIC0yOTksNiArMzI3LDcgQEAKIAogCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9URE9NQUlOX1NVUFBPUlQKIGludAogbmV0c25tcF90ZG9tYWluX3N1cHBvcnQoY29uc3Qgb2lkICogaW5fb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGluX2xlbiwKQEAgLTMxNyw3ICszNDYsNyBAQAogICAgIH0KICAgICByZXR1cm4gMDsKIH0KLQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVERPTUFJTl9TVVBQT1JUICovCiAKIAogdm9pZApAQCAtMzk1LDYgKzQyNCw4IEBACiAKIAogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGRvbWFpbl91bnJlZ2lzdGVyLCBuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9URE9NQUlOX1VOUkVHSVNURVIKIGludAogbmV0c25tcF90ZG9tYWluX3VucmVnaXN0ZXIobmV0c25tcF90ZG9tYWluICpuKQogewpAQCAtNDE1LDYgKzQ0Niw3IEBACiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RET01BSU5fVU5SRUdJU1RFUiAqLwogCiAKIHN0YXRpYyBuZXRzbm1wX3Rkb21haW4gKgpAQCAtNDY2LDEwICs0OTgsNyBAQAogICAgIGNvbnN0IGNoYXIgKiBjb25zdCAqc3BlYyA9IE5VTEw7CiAgICAgaW50ICAgICAgICAgICAgICAgICBhbnlfZm91bmQgPSAwOwogICAgIGNoYXIgYnVmW1NOTVBfTUFYUEFUSF07Ci0gICAgZXh0ZXJuIGNvbnN0IGNoYXIgKmN1cmZpbGVuYW1lOwkJLyogZnJvbSByZWFkX2NvbmZpZy5jICovCi0gICAgY29uc3QgY2hhciAgICAgICAgKnByZXZfY3VyZmlsZW5hbWU7Ci0KLSAgICBwcmV2X2N1cmZpbGVuYW1lID0gY3VyZmlsZW5hbWU7CisgICAgY2hhciAqKmxzcGVjID0gMDsKIAogICAgIERFQlVHTVNHVEwoKCJ0ZG9tYWluIiwKICAgICAgICAgICAgICAgICAidGRvbWFpbl90cmFuc3BvcnRfZnVsbChcIiVzXCIsIFwiJXNcIiwgJWQsIFwiJXNcIiwgXCIlc1wiKVxuIiwKQEAgLTU1OSw3ICs1ODgsMjEgQEAKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ0ZG9tYWluIiwKICAgICAgICAgICAgICAgICAgICAgICAgICJVc2UgdXNlciBzcGVjaWZpZWQgZGVmYXVsdCBkb21haW4gXCIlc1wiXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF9kb21haW4pKTsKLSAgICAgICAgICAgIG1hdGNoID0gZmluZF90ZG9tYWluKGRlZmF1bHRfZG9tYWluKTsKKyAgICAgICAgICAgIGlmICghc3RyY2hyKGRlZmF1bHRfZG9tYWluLCAnLCcpKQorICAgICAgICAgICAgICAgIG1hdGNoID0gZmluZF90ZG9tYWluKGRlZmF1bHRfZG9tYWluKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGludCBjb21tYXMgPSAwOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNwID0gZGVmYXVsdF9kb21haW47CisgICAgICAgICAgICAgICAgY2hhciAqZHVwID0gc3RyZHVwKGRlZmF1bHRfZG9tYWluKTsKKworICAgICAgICAgICAgICAgIHdoaWxlICgqKytjcCkgaWYgKCpjcCA9PSAnLCcpIGNvbW1hcysrOworICAgICAgICAgICAgICAgIGxzcGVjID0gY2FsbG9jKGNvbW1hcysyLCBzaXplb2YoY2hhciAqKSk7CisgICAgICAgICAgICAgICAgY29tbWFzID0gMTsKKyAgICAgICAgICAgICAgICBsc3BlY1swXSA9IHN0cnRvayhkdXAsICIsIik7CisgICAgICAgICAgICAgICAgd2hpbGUgKChsc3BlY1tjb21tYXMrK10gPSBzdHJ0b2soTlVMTCwgIiwiKSkpCisgICAgICAgICAgICAgICAgICAgIDsKKyAgICAgICAgICAgICAgICBzcGVjID0gKGNvbnN0IGNoYXIgKiBjb25zdCAqKWxzcGVjOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc3BlYyA9IG5ldHNubXBfbG9va3VwX2RlZmF1bHRfZG9tYWlucyhhcHBsaWNhdGlvbik7CiAgICAgICAgICAgICBpZiAoc3BlYyA9PSBOVUxMKSB7CkBAIC01OTksMTIgKzY0MiwxOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQgYWRkcmVzcyBcIiVzXCJcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaC0+cHJlZml4WzBdLCBhZGRyID8gYWRkciA6ICJbTklMXSIsCiAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyMiA/IGFkZHIyIDogIltOSUxdIikpOwotICAgICAgICAgICAgaWYgKG1hdGNoLT5mX2NyZWF0ZV9mcm9tX3RzdHJpbmcpCisgICAgICAgICAgICBpZiAobWF0Y2gtPmZfY3JlYXRlX2Zyb21fdHN0cmluZykgeworICAgICAgICAgICAgICAgIE5FVFNOTVBfTE9HT05DRSgoTE9HX1dBUk5JTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHJhbnNwb3J0IGRvbWFpbiAlcyB1c2VzIGRlcHJlY2F0ZWQgZl9jcmVhdGVfZnJvbV90c3RyaW5nXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gtPnByZWZpeFswXSkpOwogICAgICAgICAgICAgICAgIHQgPSBtYXRjaC0+Zl9jcmVhdGVfZnJvbV90c3RyaW5nKGFkZHIsIGxvY2FsKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB0ID0gbWF0Y2gtPmZfY3JlYXRlX2Zyb21fdHN0cmluZ19uZXcoYWRkciwgbG9jYWwsIGFkZHIyKTsKICAgICAgICAgICAgIGlmICh0KSB7Ci0gICAgICAgICAgICAgICAgY3VyZmlsZW5hbWUgPSBwcmV2X2N1cmZpbGVuYW1lOworICAgICAgICAgICAgICAgIGlmIChsc3BlYykgeworICAgICAgICAgICAgICAgICAgICBmcmVlKGxzcGVjWzBdKTsKKyAgICAgICAgICAgICAgICAgICAgZnJlZShsc3BlYyk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybiB0OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC02MTYsNyArNjY2LDEwIEBACiAgICAgfQogICAgIGlmICghYW55X2ZvdW5kKQogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiTm8gc3VwcG9ydCBmb3IgYW55IGNoZWNrZWQgdHJhbnNwb3J0IGRvbWFpblxuIik7Ci0gICAgY3VyZmlsZW5hbWUgPSBwcmV2X2N1cmZpbGVuYW1lOworICAgIGlmIChsc3BlYykgeworICAgICAgICBmcmVlKGxzcGVjWzBdKTsKKyAgICAgICAgZnJlZShsc3BlYyk7CisgICAgfQogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC02MzAsNiArNjgzLDcgQEAKIH0KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVERPTUFJTl9UUkFOU1BPUlRfT0lECiBuZXRzbm1wX3RyYW5zcG9ydCAqCiBuZXRzbm1wX3Rkb21haW5fdHJhbnNwb3J0X29pZChjb25zdCBvaWQgKiBkb20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZG9tX2xlbiwKQEAgLTY1NCw2ICs3MDgsNyBAQAogICAgIHNubXBfbG9nKExPR19FUlIsICJObyBzdXBwb3J0IGZvciByZXF1ZXN0ZWQgdHJhbnNwb3J0IGRvbWFpblxuIik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9URE9NQUlOX1RSQU5TUE9SVF9PSUQgKi8KIAogbmV0c25tcF90cmFuc3BvcnQqCiBuZXRzbm1wX3RyYW5zcG9ydF9vcGVuKGNvbnN0IGNoYXIqIGFwcGxpY2F0aW9uLCBjb25zdCBjaGFyKiBzdHIsIGludCBsb2NhbCkKZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcGtzbS5jIGIvc25tcGxpYi9zbm1wa3NtLmMKaW5kZXggNzllNTRmNC4uNGM3NzQ2NSAxMDA2NDQKLS0tIGEvc25tcGxpYi9zbm1wa3NtLmMKKysrIGIvc25tcGxpYi9zbm1wa3NtLmMKQEAgLTY2LDYgKzY2LDEyIEBACiAjZGVmaW5lIFRJQ0tFVF9DTElFTlQoeCkJKHgpLT5lbmNfcGFydDItPmNsaWVudAogI2VuZGlmCQkJCS8qIE5FVFNOTVBfVVNFX0tFUkJFUk9TX0hFSU1EQUwgKi8KIAorI2lmIEhBVkVfRVRfQ09NX0VSUl9ICisjaW5jbHVkZSA8ZXQvY29tX2Vyci5oPgorI2VsaWYgSEFWRV9DT01fRVJSX0gKKyNpbmNsdWRlIDxjb21fZXJyLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgPG5ldC1zbm1wL291dHB1dF9hcGkuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9jb25maWdfYXBpLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvdXRpbGl0aWVzLmg+CkBAIC0yNTMsNiArMjU5LDEwIEBACiAgICAgcmVnaXN0ZXJfc2VjX21vZChORVRTTk1QX1NFQ19NT0RFTF9LU00sICJrc20iLCBkZWYpOwogfQogCit2b2lkIHNodXRkb3duX2tzbSh2b2lkKQoreworfQorCiAvKgogICogVGhlc2Ugcm91dGluZXMgaW1wbGVtZW50IGEgc2ltcGxlIGNhY2hlIGZvciBpbmZvcm1hdGlvbiB3ZSBuZWVkIHRvCiAgKiBwcm9jZXNzIHJlc3BvbnNlcy4gIFdoZW4gd2Ugc2VuZCBvdXQgYSByZXF1ZXN0LCBpdCBjb250YWlucyBhbiBBUF9SRVE7CmRpZmYgLS1naXQgYS9zbm1wbGliL3NubXB0c20uYyBiL3NubXBsaWIvc25tcHRzbS5jCmluZGV4IDk1NTc0NGEuLmJmNGI2MTIgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc25tcHRzbS5jCisrKyBiL3NubXBsaWIvc25tcHRzbS5jCkBAIC05LDYgKzksNyBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaD4KQEAgLTI2LDYgKzI3LDkgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBEVExTU0NUUERvbWFpbi5oPgogI2VuZGlmCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHNubXB2M19wcm9iZV9jb250ZXh0RW5naW5lSURfcmZjNTM0MykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHJvd19jcmVhdGUpCisKICNpbmNsdWRlIDx1bmlzdGQuaD4KIAogc3RhdGljIGludCAgICAgIHRzbV9zZXNzaW9uX2luaXQobmV0c25tcF9zZXNzaW9uICopOwpAQCAtNjcsNiArNzEsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9UU01fVVNFX1BSRUZJWCk7CiB9CiAKKy8qKiBzaHV0ZG93biB0aGUgVFNNIHNlY3VyaXR5IG1vZHVsZSAqLwordm9pZAorc2h1dGRvd25fdHNtKHZvaWQpCit7Cit9CisKIC8qCiAgKiBJbml0aWFsaXplIHNwZWNpZmljIHNlc3Npb24gaW5mb3JtYXRpb24gKHJpZ2h0IG5vdywganVzdCBzZXQgdXAgdGhpbmdzIHRvCiAgKiBub3QgZG8gYW4gZW5naW5lSUQgcHJvYmUpCkBAIC01NDIsNyArNTUyLDcgQEAKICAgICAgICBtZXNzYWdlLiovCiAgICAgaWYgKHBhcm1zLT5zZWNMZXZlbCA+IHRtU3RhdGVSZWYtPnRyYW5zcG9ydFNlY3VyaXR5TGV2ZWwpIHsKICAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVFNNX1NOTVBUU01JTkFERVFVQVRFU0VDVVJJVFlMRVZFTFMpOwotICAgICAgICBERUJVR01TR1RMKCgidHNtIiwgImluYWRlcXVhdGUgc2VjdXJpdHkgbGV2ZWwgJWRcbiIsIHBhcm1zLT5zZWNMZXZlbCkpOworICAgICAgICBERUJVR01TR1RMKCgidHNtIiwgImluYWRlcXVhdGUgc2VjdXJpdHkgbGV2ZWw6ICVkXG4iLCBwYXJtcy0+c2VjTGV2ZWwpKTsKICAgICAgICAgLyogbmV0LXNubXAgcmV0dXJucyBlcnJvciBjb2RlcyBub3QgT0lEcywgd2hpY2ggYXJlIGRlYWx0IHdpdGggbGF0ZXIgKi8KICAgICAgICAgcmV0dXJuIFNOTVBFUlJfVU5TVVBQT1JURURfU0VDX0xFVkVMOwogICAgIH0KZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcHVzbS5jIGIvc25tcGxpYi9zbm1wdXNtLmMKaW5kZXggODc4MDU5Ni4uZDhkODkzMiAxMDA2NDQKLS0tIGEvc25tcGxpYi9zbm1wdXNtLmMKKysrIGIvc25tcGxpYi9zbm1wdXNtLmMKQEAgLTIyLDYgKzIyLDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC03MSw2ICs3MiwxMSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVzbV9hbGwsIGxpYm5ldHNubXApCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodXNtX3N1cHBvcnQsIHVzbV9hbGwpCisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHVzbV9zdXBwb3J0KQorCiBvaWQgICAgICAgICAgICAgdXNtTm9BdXRoUHJvdG9jb2xbMTBdID0geyAxLCAzLCA2LCAxLCA2LCAzLCAxMCwgMSwgMSwgMSB9OwogI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfTUQ1CiBvaWQgICAgICAgICAgICAgdXNtSE1BQ01ENUF1dGhQcm90b2NvbFsxMF0gPQpAQCAtODksNiArOTUsMTYgQEAKIHN0YXRpYyB1X2ludCAgICBkdW1teV9ldGltZSwgZHVtbXlfZWJvb3Q7ICAgICAgIC8qIEZvciBJU0VOR0lORUtOT1dOKCkuICovCiAKIC8qCisgKiBTZXQgdXAgZGVmYXVsdCBzbm1wdjMgcGFyYW1ldGVyIHZhbHVlIHN0b3JhZ2UuCisgKi8KKyNpZmRlZiBORVRTTk1QX1NFQ01PRF9VU00KK3N0YXRpYyBjb25zdCBvaWQgKmRlZmF1bHRBdXRoVHlwZSA9IE5VTEw7CitzdGF0aWMgc2l6ZV90ICAgZGVmYXVsdEF1dGhUeXBlTGVuID0gMDsKK3N0YXRpYyBjb25zdCBvaWQgKmRlZmF1bHRQcml2VHlwZSA9IE5VTEw7CitzdGF0aWMgc2l6ZV90ICAgZGVmYXVsdFByaXZUeXBlTGVuID0gMDsKKyNlbmRpZiAvKiBORVRTTk1QX1NFQ01PRF9VU00gKi8KKworLyoKICAqIEdsb2JhbHMuCiAgKi8KIHN0YXRpYyB1X2ludCAgICBzYWx0X2ludGVnZXI7CkBAIC0xNTgsNiArMTc0LDIxIEBACiB9CiAKIAoraW50CitmcmVlX2VuZ2luZXRpbWVfb25fc2h1dGRvd24oaW50IG1ham9yaWQsIGludCBtaW5vcmlkLCB2b2lkICpzZXJ2ZXJhcmcsCisJCQkgICAgdm9pZCAqY2xpZW50YXJnKQoreworICAgIHVfY2hhciBlbmdpbmVJRFtTTk1QX01BWF9FTkdfU0laRV07CisgICAgc2l6ZV90IGVuZ2luZUlEX2xlbiA9IHNpemVvZihlbmdpbmVJRCk7CisKKyAgICBERUJVR01TR1RMKCgic25tcHYzIiwgImZyZWUgZW5naW5ldGltZSBjYWxsYmFjayBjYWxsZWRcbiIpKTsKKworICAgIGVuZ2luZUlEX2xlbiA9IHNubXB2M19nZXRfZW5naW5lSUQoZW5naW5lSUQsIGVuZ2luZUlEX2xlbik7CisgICAgaWYgKGVuZ2luZUlEX2xlbiA+IDApCisJZnJlZV9lbmdpbmV0aW1lKGVuZ2luZUlELCBlbmdpbmVJRF9sZW4pOworICAgIHJldHVybiAwOworfQorCiBzdHJ1Y3QgdXNtU3RhdGVSZWZlcmVuY2UgKgogdXNtX21hbGxvY191c21TdGF0ZVJlZmVyZW5jZSh2b2lkKQogewpAQCAtMjE0MywxMSArMjE3NCw3IEBACiAgICAgICAgIGlmIChib290c191aW50ID09IEVOR0lORUJPT1RfTUFYCiAgICAgICAgICAgICB8fCBib290c191aW50ICE9IG15Qm9vdHMKICAgICAgICAgICAgIHx8IHRpbWVfZGlmZmVyZW5jZSA+IFVTTV9USU1FX1dJTkRPVykgewotICAgICAgICAgICAgaWYgKHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYyhTVEFUX1VTTVNUQVRTTk9USU5USU1FV0lORE9XUykgPT0KLSAgICAgICAgICAgICAgICAwKSB7Ci0gICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInVzbSIsICIlc1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGluY3JlbWVudCBzdGF0aXN0aWMuIikpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVVNNU1RBVFNOT1RJTlRJTUVXSU5ET1dTKTsKIAogICAgICAgICAgICAgREVCVUdNU0dUTCgoInVzbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiYm9vdF91aW50ICV1IG15Qm9vdHMgJXUgdGltZV9kaWZmICV1ID0+IG5vdCBpbiB0aW1lIHdpbmRvd1xuIiwKQEAgLTIzNjAsMTYgKzIzODcsMTAgQEAKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBUaGlzIGluZGljYXRlcyBhIGRlY3J5cHRpb25FcnJvci4gIAogICAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZiAoc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVVNNU1RBVFNERUNSWVBUSU9ORVJST1JTKSA9PQotICAgICAgICAgICAgICAgIDApIHsKLSAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgidXNtIiwgIiVzXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gaW5jcmVtZW50IHN0YXRpc3RpYy4iKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9VU01TVEFUU0RFQ1JZUFRJT05FUlJPUlMpOwogICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfVVNNX0RFQ1JZUFRJT05FUlJPUjsKICAgICAgICAgfQotICAgICAgICBpZiAoc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfU05NUElOQVNOUEFSU0VFUlJTKSA9PSAwKSB7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgidXNtIiwgIiVzXG4iLCAiRmFpbGVkIHRvIGluY3JlbWVudCBzdGF0aXN0aWMuIikpOwotICAgICAgICB9CisgICAgICAgIHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYyhTVEFUX1NOTVBJTkFTTlBBUlNFRVJSUyk7CiAgICAgICAgIHJldHVybiBTTk1QRVJSX1VTTV9QQVJTRUVSUk9SOwogICAgIH0KIApAQCAtMjM4MCwxMCArMjQwMSw3IEBACiAgICAgICogY2FsbGluZyBtb2R1bGUuCiAgICAgICovCiAgICAgaWYgKChzZWNMZXZlbCA9PSBTTk1QX1NFQ19MRVZFTF9BVVRIUFJJVikgJiYgKHNhbHRfbGVuZ3RoICE9IDgpKSB7Ci0gICAgICAgIGlmIChzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9VU01TVEFUU0RFQ1JZUFRJT05FUlJPUlMpID09IAotICAgICAgICAgICAgMCkgewotICAgICAgICAgICAgREVCVUdNU0dUTCgoInVzbSIsICIlc1xuIiwgIkZhaWxlZCBpbmNyZW1lbnQgc3RhdGlzdGljLiIpKTsKLSAgICAgICAgfQorICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9VU01TVEFUU0RFQ1JZUFRJT05FUlJPUlMpOwogICAgICAgICByZXR1cm4gU05NUEVSUl9VU01fREVDUllQVElPTkVSUk9SOwogICAgIH0KIApAQCAtMjQzMSwxMSArMjQ0OSw3IEBACiAgICAgICAgICghc2VzcyAmJiAobXNnX2ZsYWdzICYgU05NUF9NU0dfRkxBR19SUFJUX0JJVCkpKSB7CiAgICAgICAgIGlmIChJU0VOR0lORUtOT1dOKHNlY0VuZ2luZUlELCAqc2VjRW5naW5lSURMZW4pID09IEZBTFNFKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgidXNtIiwgIlVua25vd24gRW5naW5lIElELlxuIikpOwotICAgICAgICAgICAgaWYgKHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYyhTVEFUX1VTTVNUQVRTVU5LTk9XTkVOR0lORUlEUykgPT0KLSAgICAgICAgICAgICAgICAwKSB7Ci0gICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInVzbSIsICIlc1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGluY3JlbWVudCBzdGF0aXN0aWMuIikpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVVNNU1RBVFNVTktOT1dORU5HSU5FSURTKTsKICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX1VTTV9VTktOT1dORU5HSU5FSUQ7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpAQCAtMjQ1OSw5ICsyNDczLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCFzZXNzKSkgPyAwIDogMSkpKQogICAgICAgICA9PSBOVUxMKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJ1c20iLCAiVW5rbm93biBVc2VyKCVzKVxuIiwgc2VjTmFtZSkpOwotICAgICAgICBpZiAoc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVVNNU1RBVFNVTktOT1dOVVNFUk5BTUVTKSA9PSAwKSB7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgidXNtIiwgIiVzXG4iLCAiRmFpbGVkIHRvIGluY3JlbWVudCBzdGF0aXN0aWMuIikpOwotICAgICAgICB9CisgICAgICAgIHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYyhTVEFUX1VTTVNUQVRTVU5LTk9XTlVTRVJOQU1FUyk7CiAgICAgICAgIHJldHVybiBTTk1QRVJSX1VTTV9VTktOT1dOU0VDVVJJVFlOQU1FOwogICAgIH0KIApAQCAtMjQ3OSwxMCArMjQ5MSw3IEBACiAgICAgaWYgKDEgPT0gcmMpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInVzbSIsICJVbnN1cHBvcnRlZCBTZWN1cml0eSBMZXZlbCAoJWQpLlxuIiwKICAgICAgICAgICAgICAgICAgICAgc2VjTGV2ZWwpKTsKLSAgICAgICAgaWYgKHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYwotICAgICAgICAgICAgKFNUQVRfVVNNU1RBVFNVTlNVUFBPUlRFRFNFQ0xFVkVMUykgPT0gMCkgewotICAgICAgICAgICAgREVCVUdNU0dUTCgoInVzbSIsICIlc1xuIiwgIkZhaWxlZCB0byBpbmNyZW1lbnQgc3RhdGlzdGljLiIpKTsKLSAgICAgICAgfQorICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9VU01TVEFUU1VOU1VQUE9SVEVEU0VDTEVWRUxTKTsKICAgICAgICAgcmV0dXJuIFNOTVBFUlJfVVNNX1VOU1VQUE9SVEVEU0VDVVJJVFlMRVZFTDsKICAgICB9IGVsc2UgaWYgKHJjICE9IDApIHsKICAgICAgICAgREVCVUdNU0dUTCgoInVzbSIsICJVbmtub3duIGlzc3VlLlxuIikpOwpAQCAtMjUwMCwxMCArMjUwOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZSwgc2lnbmF0dXJlX2xlbmd0aCkKICAgICAgICAgICAgICE9IFNOTVBfRVJSX05PRVJST1IpIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ1c20iLCAiVmVyaWZpY2F0aW9uIGZhaWxlZC5cbiIpKTsKLSAgICAgICAgICAgIGlmIChzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9VU01TVEFUU1dST05HRElHRVNUUykgPT0gMCkgewotICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ1c20iLCAiJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBpbmNyZW1lbnQgc3RhdGlzdGljLiIpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYyhTVEFUX1VTTVNUQVRTV1JPTkdESUdFU1RTKTsKIAkgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJBdXRoZW50aWNhdGlvbiBmYWlsZWQgZm9yICVzXG4iLAogCQkJCXVzZXItPm5hbWUpOwogICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfVVNNX0FVVEhFTlRJQ0FUSU9ORkFJTFVSRTsKQEAgLTI1OTQsOSArMjYwMCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmNyeXB0ZWQgc1BEVSIpKSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgidXNtIiwgIiVzXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB3aGlsZSBwYXJzaW5nIGVuY3J5cHRlZCBzUERVLiIpKTsKLSAgICAgICAgICAgIGlmIChzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9TTk1QSU5BU05QQVJTRUVSUlMpID09IDApIHsKLSAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgidXNtIiwgIiVzXG4iLCAiRmFpbGVkIGluY3JlbWVudCBzdGF0aXN0aWMuIikpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfU05NUElOQVNOUEFSU0VFUlJTKTsKICAgICAgICAgICAgIHVzbV9mcmVlX3VzbVN0YXRlUmVmZXJlbmNlKCpzZWNTdGF0ZVJlZik7CiAgICAgICAgICAgICAqc2VjU3RhdGVSZWYgPSBOVUxMOwogICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfVVNNX1BBUlNFRVJST1I7CkBAIC0yNjE3LDEwICsyNjIxLDcgQEAKICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgidXNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2lwaGVydGV4dCBpcyAlbHUgYnl0ZXMsIG5vdCBhbiBpbnRlZ2VyIG11bHRpcGxlIG9mIDggKHJlbSAlbHUpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKXJlbWFpbmluZywgKHVuc2lnbmVkIGxvbmcpcmVtYWluaW5nICUgOCkpOwotICAgICAgICAgICAgICAgIGlmIChzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9VU01TVEFUU0RFQ1JZUFRJT05FUlJPUlMpID09Ci0gICAgICAgICAgICAgICAgICAgIDApIHsKLSAgICAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInVzbSIsICIlc1xuIiwgIkZhaWxlZCBpbmNyZW1lbnQgc3RhdGlzdGljLiIpKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVVNNU1RBVFNERUNSWVBUSU9ORVJST1JTKTsKICAgICAgICAgICAgICAgICB1c21fZnJlZV91c21TdGF0ZVJlZmVyZW5jZSgqc2VjU3RhdGVSZWYpOwogICAgICAgICAgICAgICAgICpzZWNTdGF0ZVJlZiA9IE5VTEw7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfVVNNX0RFQ1JZUFRJT05FUlJPUjsKQEAgLTI2MzAsMTAgKzI2MzEsNyBAQAogCiAgICAgICAgICAgICBpZiAoICF1c2VyLT5wcml2S2V5ICkgewogICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ1c20iLCAiTm8gcHJpdmFjeSBwYXNzIHBocmFzZSBmb3IgJXNcbiIsIHVzZXItPnNlY05hbWUpKTsKLSAgICAgICAgICAgICAgICBpZiAoc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVVNNU1RBVFNERUNSWVBUSU9ORVJST1JTKSA9PQotICAgICAgICAgICAgICAgICAgICAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ1c20iLCAiJXNcbiIsICJGYWlsZWQgaW5jcmVtZW50IHN0YXRpc3RpYy4iKSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYyhTVEFUX1VTTVNUQVRTREVDUllQVElPTkVSUk9SUyk7CiAgICAgICAgICAgICAgICAgdXNtX2ZyZWVfdXNtU3RhdGVSZWZlcmVuY2UoKnNlY1N0YXRlUmVmKTsKICAgICAgICAgICAgICAgICAqc2VjU3RhdGVSZWYgPSBOVUxMOwogICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX1VTTV9ERUNSWVBUSU9ORVJST1I7CkBAIC0yNjY1LDEwICsyNjYzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfcHRyLCByZW1haW5pbmcsICpzY29wZWRQZHUsIHNjb3BlZFBkdUxlbikKICAgICAgICAgICAgICE9IFNOTVBfRVJSX05PRVJST1IpIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ1c20iLCAiJXNcbiIsICJGYWlsZWQgZGVjcnlwdGlvbi4iKSk7Ci0gICAgICAgICAgICBpZiAoc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljCi0gICAgICAgICAgICAgICAgKFNUQVRfVVNNU1RBVFNERUNSWVBUSU9ORVJST1JTKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInVzbSIsICIlc1xuIiwgIkZhaWxlZCBpbmNyZW1lbnQgc3RhdGlzdGljLiIpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYyhTVEFUX1VTTVNUQVRTREVDUllQVElPTkVSUk9SUyk7CiAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9VU01fREVDUllQVElPTkVSUk9SOwogICAgICAgICB9CiAjaWZkZWYgTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFCkBAIC0yODU3LDEwICsyODUyLDM0OSBAQAogICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CiB9CiAKKworLyoKKyAqIHVzbV9jcmVhdGVfdXNlcl9mcm9tX3Nlc3Npb24obmV0c25tcF9zZXNzaW9uICpzZXNzaW9uKToKKyAqIAorICogY3JlYXRlcyBhIHVzZXIgaW4gdGhlIHVzbSB0YWJsZSBmcm9tIHRoZSBpbmZvcm1hdGlvbiBpbiBhIHNlc3Npb24uCisgKiBJZiB0aGUgdXNlciBhbHJlYWR5IGV4aXN0cywgaXQgaXMgdXBkYXRlZCB3aXRoIHRoZSBjdXJyZW50CisgKiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBzZXNzaW9uCisgKiAKKyAqIFBhcmFtZXRlcnM6CisgKiBzZXNzaW9uIC0tIElOOiBwb2ludGVyIHRvIHRoZSBzZXNzaW9uIHRvIHVzZSB3aGVuIGNyZWF0aW5nIHRoZSB1c2VyLgorICogCisgKiBSZXR1cm5zOgorICogU05NUEVSUl9TVUNDRVNTCisgKiBTTk1QRVJSX0dFTkVSUiAKKyAqLworaW50Cit1c21fY3JlYXRlX3VzZXJfZnJvbV9zZXNzaW9uKG5ldHNubXBfc2Vzc2lvbiAqIHNlc3Npb24pCit7CisgICAgc3RydWN0IHVzbVVzZXIgKnVzZXI7CisgICAgaW50ICAgICAgICAgICAgIHVzZXJfanVzdF9jcmVhdGVkID0gMDsKKyAgICBjaGFyICpjcDsKKworICAgIC8qCisgICAgICogLSBkb24ndCBjcmVhdGUtYW5vdGhlci9jb3B5LWludG8gdXNlciBmb3IgdGhpcyBzZXNzaW9uIGJ5IGRlZmF1bHQKKyAgICAgKiAtIGJhaWwgbm93IChubyBlcnJvcikgaWYgd2UgZG9uJ3QgaGF2ZSBhbiBlbmdpbmVJRAorICAgICAqLworICAgIGlmIChTTk1QX0ZMQUdTX1VTRVJfQ1JFQVRFRCA9PSAoc2Vzc2lvbi0+ZmxhZ3MgJiBTTk1QX0ZMQUdTX1VTRVJfQ1JFQVRFRCkgfHwKKyAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlNb2RlbCAhPSBTTk1QX1NFQ19NT0RFTF9VU00gfHwKKyAgICAgICAgc2Vzc2lvbi0+dmVyc2lvbiAhPSBTTk1QX1ZFUlNJT05fMyB8fAorICAgICAgICBzZXNzaW9uLT5zZWN1cml0eU5hbWVMZW4gPT0gMCB8fAorICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuID09IDApCisgICAgICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CisKKyAgICBERUJVR01TR1RMKCgidXNtIiwgIm5vIGZsYWcgZGVmaW5lZC4uLiAgY29udGludWluZ1xuIikpOworICAgIHNlc3Npb24tPmZsYWdzIHw9IFNOTVBfRkxBR1NfVVNFUl9DUkVBVEVEOworCisgICAgLyoKKyAgICAgKiBub3cgdGhhdCB3ZSBoYXZlIHRoZSBlbmdpbmVJRCwgY3JlYXRlIGFuIGVudHJ5IGluIHRoZSBVU00gbGlzdAorICAgICAqIGZvciB0aGlzIHVzZXIgdXNpbmcgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBzZXNzaW9uIAorICAgICAqLworICAgIHVzZXIgPSB1c21fZ2V0X3VzZXJfZnJvbV9saXN0KHNlc3Npb24tPnNlY3VyaXR5RW5naW5lSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRExlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNtX2dldF91c2VyTGlzdCgpLCAwKTsKKyAgICBERUJVR01TR1RMKCgidXNtIiwgInVzZXIgZXhpc3RzPyB4PSVwXG4iLCB1c2VyKSk7CisgICAgaWYgKHVzZXIgPT0gTlVMTCkgeworICAgICAgICBERUJVR01TR1RMKCgidXNtIiwgIkJ1aWxkaW5nIHVzZXIgJXMuLi5cbiIsCisgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5TmFtZSkpOworICAgICAgICAvKgorICAgICAgICAgKiB1c2VyIGRvZXNuJ3QgZXhpc3Qgc28gd2UgY3JlYXRlIGFuZCBhZGQgaXQgCisgICAgICAgICAqLworICAgICAgICB1c2VyID0gKHN0cnVjdCB1c21Vc2VyICopIGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IHVzbVVzZXIpKTsKKyAgICAgICAgaWYgKHVzZXIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKKworICAgICAgICAvKgorICAgICAgICAgKiBjb3B5IGluIHRoZSBzZWN1cml0eU5hbWUgCisgICAgICAgICAqLworICAgICAgICBpZiAoc2Vzc2lvbi0+c2VjdXJpdHlOYW1lKSB7CisgICAgICAgICAgICB1c2VyLT5uYW1lID0gc3RyZHVwKHNlc3Npb24tPnNlY3VyaXR5TmFtZSk7CisgICAgICAgICAgICB1c2VyLT5zZWNOYW1lID0gc3RyZHVwKHNlc3Npb24tPnNlY3VyaXR5TmFtZSk7CisgICAgICAgICAgICBpZiAodXNlci0+bmFtZSA9PSBOVUxMIHx8IHVzZXItPnNlY05hbWUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogY29weSBpbiB0aGUgZW5naW5lSUQgCisgICAgICAgICAqLworICAgICAgICBpZiAobWVtZHVwKCZ1c2VyLT5lbmdpbmVJRCwgc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRCwKKyAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuKSAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7CisgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CisgICAgICAgIH0KKyAgICAgICAgdXNlci0+ZW5naW5lSURMZW4gPSBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuOworCisgICAgICAgIHVzZXJfanVzdF9jcmVhdGVkID0gMTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGNvcHkgdGhlIGF1dGggcHJvdG9jb2wgCisgICAgICovCisgICAgaWYgKHVzZXItPmF1dGhQcm90b2NvbCA9PSBOVUxMICYmIHNlc3Npb24tPnNlY3VyaXR5QXV0aFByb3RvICE9IE5VTEwpIHsKKyAgICAgICAgU05NUF9GUkVFKHVzZXItPmF1dGhQcm90b2NvbCk7CisgICAgICAgIHVzZXItPmF1dGhQcm90b2NvbCA9CisgICAgICAgICAgICBzbm1wX2R1cGxpY2F0ZV9vYmppZChzZXNzaW9uLT5zZWN1cml0eUF1dGhQcm90bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5QXV0aFByb3RvTGVuKTsKKyAgICAgICAgaWYgKHVzZXItPmF1dGhQcm90b2NvbCA9PSBOVUxMKSB7CisgICAgICAgICAgICB1c21fZnJlZV91c2VyKHVzZXIpOworICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOworICAgICAgICB9CisgICAgICAgIHVzZXItPmF1dGhQcm90b2NvbExlbiA9IHNlc3Npb24tPnNlY3VyaXR5QXV0aFByb3RvTGVuOworICAgIH0KKworICAgIC8qCisgICAgICogY29weSB0aGUgcHJpdiBwcm90b2NvbCAKKyAgICAgKi8KKyAgICBpZiAodXNlci0+cHJpdlByb3RvY29sID09IE5VTEwgJiYgc2Vzc2lvbi0+c2VjdXJpdHlQcml2UHJvdG8gIT0gTlVMTCkgeworICAgICAgICBTTk1QX0ZSRUUodXNlci0+cHJpdlByb3RvY29sKTsKKyAgICAgICAgdXNlci0+cHJpdlByb3RvY29sID0KKyAgICAgICAgICAgIHNubXBfZHVwbGljYXRlX29iamlkKHNlc3Npb24tPnNlY3VyaXR5UHJpdlByb3RvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlQcml2UHJvdG9MZW4pOworICAgICAgICBpZiAodXNlci0+cHJpdlByb3RvY29sID09IE5VTEwpIHsKKyAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7CisgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CisgICAgICAgIH0KKyAgICAgICAgdXNlci0+cHJpdlByb3RvY29sTGVuID0gc2Vzc2lvbi0+c2VjdXJpdHlQcml2UHJvdG9MZW47CisgICAgfQorCisgICAgLyoKKyAgICAgKiBjb3B5IGluIHRoZSBhdXRoZW50aWNhdGlvbiBLZXkuICBJZiBub3QgbG9jYWxpemVkLCBsb2NhbGl6ZSBpdCAKKyAgICAgKi8KKyAgICBpZiAodXNlci0+YXV0aEtleSA9PSBOVUxMKSB7CisgICAgICAgIGlmIChzZXNzaW9uLT5zZWN1cml0eUF1dGhMb2NhbEtleSAhPSBOVUxMCisgICAgICAgICAgICAmJiBzZXNzaW9uLT5zZWN1cml0eUF1dGhMb2NhbEtleUxlbiAhPSAwKSB7CisgICAgICAgICAgICAvKiBhbHJlYWR5IGxvY2FsaXplZCBrZXkgcGFzc2VkIGluLiAgdXNlIGl0ICovCisgICAgICAgICAgICBTTk1QX0ZSRUUodXNlci0+YXV0aEtleSk7CisgICAgICAgICAgICBpZiAobWVtZHVwKCZ1c2VyLT5hdXRoS2V5LCBzZXNzaW9uLT5zZWN1cml0eUF1dGhMb2NhbEtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlBdXRoTG9jYWxLZXlMZW4pICE9IFNOTVBFUlJfU1VDQ0VTUykgeworICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdXNlci0+YXV0aEtleUxlbiA9IHNlc3Npb24tPnNlY3VyaXR5QXV0aExvY2FsS2V5TGVuOworICAgICAgICB9IGVsc2UgaWYgKHNlc3Npb24tPnNlY3VyaXR5QXV0aEtleSAhPSBOVUxMCisgICAgICAgICAgICAgICAgICAgJiYgc2Vzc2lvbi0+c2VjdXJpdHlBdXRoS2V5TGVuICE9IDApIHsKKyAgICAgICAgICAgIFNOTVBfRlJFRSh1c2VyLT5hdXRoS2V5KTsKKyAgICAgICAgICAgIHVzZXItPmF1dGhLZXkgPSAodV9jaGFyICopIGNhbGxvYygxLCBVU01fTEVOR1RIX0tVX0hBU0hCTE9DSyk7CisgICAgICAgICAgICBpZiAodXNlci0+YXV0aEtleSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcih1c2VyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB1c2VyLT5hdXRoS2V5TGVuID0gVVNNX0xFTkdUSF9LVV9IQVNIQkxPQ0s7CisgICAgICAgICAgICBpZiAoZ2VuZXJhdGVfa3VsKHVzZXItPmF1dGhQcm90b2NvbCwgdXNlci0+YXV0aFByb3RvY29sTGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUF1dGhLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5QXV0aEtleUxlbiwgdXNlci0+YXV0aEtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVzZXItPmF1dGhLZXlMZW4pICE9IFNOTVBFUlJfU1VDQ0VTUykgeworICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKChjcCA9IG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9BVVRITE9DQUxJWkVES0VZKSkpIHsKKyAgICAgICAgICAgIHNpemVfdCBidWZsZW4gPSBVU01fQVVUSF9LVV9MRU47CisgICAgICAgICAgICBTTk1QX0ZSRUUodXNlci0+YXV0aEtleSk7CisgICAgICAgICAgICB1c2VyLT5hdXRoS2V5ID0gKHVfY2hhciAqKW1hbGxvYyhidWZsZW4pOyAvKiBtYXggbGVuZ3RoIG5lZWRlZCAqLworICAgICAgICAgICAgdXNlci0+YXV0aEtleUxlbiA9IDA7CisgICAgICAgICAgICAvKiBpdCB3aWxsIGJlIGEgaGV4IHN0cmluZyAqLworICAgICAgICAgICAgaWYgKCFzbm1wX2hleF90b19iaW5hcnkoJnVzZXItPmF1dGhLZXksICZidWZsZW4sICZ1c2VyLT5hdXRoS2V5TGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgY3ApKSB7CisgICAgICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcih1c2VyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKgorICAgICAqIGNvcHkgaW4gdGhlIHByaXZhY3kgS2V5LiAgSWYgbm90IGxvY2FsaXplZCwgbG9jYWxpemUgaXQgCisgICAgICovCisgICAgaWYgKHVzZXItPnByaXZLZXkgPT0gTlVMTCkgeworICAgICAgICBpZiAoc2Vzc2lvbi0+c2VjdXJpdHlQcml2TG9jYWxLZXkgIT0gTlVMTAorICAgICAgICAgICAgJiYgc2Vzc2lvbi0+c2VjdXJpdHlQcml2TG9jYWxLZXlMZW4gIT0gMCkgeworICAgICAgICAgICAgLyogYWxyZWFkeSBsb2NhbGl6ZWQga2V5IHBhc3NlZCBpbi4gIHVzZSBpdCAqLworICAgICAgICAgICAgU05NUF9GUkVFKHVzZXItPnByaXZLZXkpOworICAgICAgICAgICAgaWYgKG1lbWR1cCgmdXNlci0+cHJpdktleSwgc2Vzc2lvbi0+c2VjdXJpdHlQcml2TG9jYWxLZXksCisgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5UHJpdkxvY2FsS2V5TGVuKSAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgICAgICB1c21fZnJlZV91c2VyKHVzZXIpOworICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHVzZXItPnByaXZLZXlMZW4gPSBzZXNzaW9uLT5zZWN1cml0eVByaXZMb2NhbEtleUxlbjsKKyAgICAgICAgfSBlbHNlIGlmIChzZXNzaW9uLT5zZWN1cml0eVByaXZLZXkgIT0gTlVMTAorICAgICAgICAgICAgICAgICAgICYmIHNlc3Npb24tPnNlY3VyaXR5UHJpdktleUxlbiAhPSAwKSB7CisgICAgICAgICAgICBTTk1QX0ZSRUUodXNlci0+cHJpdktleSk7CisgICAgICAgICAgICB1c2VyLT5wcml2S2V5ID0gKHVfY2hhciAqKSBjYWxsb2MoMSwgVVNNX0xFTkdUSF9LVV9IQVNIQkxPQ0spOworICAgICAgICAgICAgaWYgKHVzZXItPnByaXZLZXkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdXNlci0+cHJpdktleUxlbiA9IFVTTV9MRU5HVEhfS1VfSEFTSEJMT0NLOworICAgICAgICAgICAgaWYgKGdlbmVyYXRlX2t1bCh1c2VyLT5hdXRoUHJvdG9jb2wsIHVzZXItPmF1dGhQcm90b2NvbExlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRExlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlQcml2S2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eVByaXZLZXlMZW4sIHVzZXItPnByaXZLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2VyLT5wcml2S2V5TGVuKSAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgICAgICB1c21fZnJlZV91c2VyKHVzZXIpOworICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICgoY3AgPSBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfUFJJVkxPQ0FMSVpFREtFWSkpKSB7CisgICAgICAgICAgICBzaXplX3QgYnVmbGVuID0gVVNNX1BSSVZfS1VfTEVOOworICAgICAgICAgICAgU05NUF9GUkVFKHVzZXItPnByaXZLZXkpOworICAgICAgICAgICAgdXNlci0+cHJpdktleSA9ICh1X2NoYXIgKiltYWxsb2MoYnVmbGVuKTsgLyogbWF4IGxlbmd0aCBuZWVkZWQgKi8KKyAgICAgICAgICAgIHVzZXItPnByaXZLZXlMZW4gPSAwOworICAgICAgICAgICAgLyogaXQgd2lsbCBiZSBhIGhleCBzdHJpbmcgKi8KKyAgICAgICAgICAgIGlmICghc25tcF9oZXhfdG9fYmluYXJ5KCZ1c2VyLT5wcml2S2V5LCAmYnVmbGVuLCAmdXNlci0+cHJpdktleUxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGNwKSkgeworICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHVzZXJfanVzdF9jcmVhdGVkKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIGFkZCB0aGUgdXNlciBpbnRvIHRoZSBkYXRhYmFzZSAKKyAgICAgICAgICovCisgICAgICAgIHVzZXItPnVzZXJTdGF0dXMgPSBSU19BQ1RJVkU7CisgICAgICAgIHVzZXItPnVzZXJTdG9yYWdlVHlwZSA9IFNUX1JFQURPTkxZOworICAgICAgICB1c21fYWRkX3VzZXIodXNlcik7CisgICAgfQorCisgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKKworCit9CisKKy8qIEEgd3JhcHBlciBhcm91bmQgdGhlIGhvb2sgKi8KK2ludAordXNtX2NyZWF0ZV91c2VyX2Zyb21fc2Vzc2lvbl9ob29rKHZvaWQgKnNscCwgbmV0c25tcF9zZXNzaW9uICpzZXNzaW9uKQoreworICAgIERFQlVHTVNHVEwoKCJ1c20iLCAicG90ZW50aWFsbHkgYm9vdHN0cmFwcGluZyB0aGUgVVNNIHRhYmxlIGZyb20gc2Vzc2lvbiBkYXRhXG4iKSk7CisgICAgcmV0dXJuIHVzbV9jcmVhdGVfdXNlcl9mcm9tX3Nlc3Npb24oc2Vzc2lvbik7Cit9CisKK3N0YXRpYyBpbnQKK3VzbV9idWlsZF9wcm9iZV9wZHUobmV0c25tcF9wZHUgKipwZHUpCit7CisgICAgc3RydWN0IHVzbVVzZXIgKnVzZXI7CisKKyAgICAvKgorICAgICAqIGNyZWF0ZSB0aGUgcGR1IAorICAgICAqLworICAgIGlmICghcGR1KQorICAgICAgICByZXR1cm4gLTE7CisgICAgKnBkdSA9IHNubXBfcGR1X2NyZWF0ZShTTk1QX01TR19HRVQpOworICAgIGlmICghKCpwZHUpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgKCpwZHUpLT52ZXJzaW9uID0gU05NUF9WRVJTSU9OXzM7CisgICAgKCpwZHUpLT5zZWN1cml0eU5hbWUgPSBzdHJkdXAoIiIpOworICAgICgqcGR1KS0+c2VjdXJpdHlOYW1lTGVuID0gc3RybGVuKCgqcGR1KS0+c2VjdXJpdHlOYW1lKTsKKyAgICAoKnBkdSktPnNlY3VyaXR5TGV2ZWwgPSBTTk1QX1NFQ19MRVZFTF9OT0FVVEg7CisgICAgKCpwZHUpLT5zZWN1cml0eU1vZGVsID0gU05NUF9TRUNfTU9ERUxfVVNNOworCisgICAgLyoKKyAgICAgKiBjcmVhdGUgdGhlIGVtcHR5IHVzZXIgCisgICAgICovCisgICAgdXNlciA9IHVzbV9nZXRfdXNlcihOVUxMLCAwLCAoKnBkdSktPnNlY3VyaXR5TmFtZSk7CisgICAgaWYgKHVzZXIgPT0gTlVMTCkgeworICAgICAgICB1c2VyID0gKHN0cnVjdCB1c21Vc2VyICopIGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IHVzbVVzZXIpKTsKKyAgICAgICAgaWYgKHVzZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgc25tcF9mcmVlX3BkdSgqcGR1KTsKKyAgICAgICAgICAgICpwZHUgPSAobmV0c25tcF9wZHUgKikgTlVMTDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICB1c2VyLT5uYW1lID0gc3RyZHVwKCgqcGR1KS0+c2VjdXJpdHlOYW1lKTsKKyAgICAgICAgdXNlci0+c2VjTmFtZSA9IHN0cmR1cCgoKnBkdSktPnNlY3VyaXR5TmFtZSk7CisgICAgICAgIHVzZXItPmF1dGhQcm90b2NvbExlbiA9IHNpemVvZih1c21Ob0F1dGhQcm90b2NvbCkgLyBzaXplb2Yob2lkKTsKKyAgICAgICAgdXNlci0+YXV0aFByb3RvY29sID0KKyAgICAgICAgICAgIHNubXBfZHVwbGljYXRlX29iamlkKHVzbU5vQXV0aFByb3RvY29sLCB1c2VyLT5hdXRoUHJvdG9jb2xMZW4pOworICAgICAgICB1c2VyLT5wcml2UHJvdG9jb2xMZW4gPSBzaXplb2YodXNtTm9Qcml2UHJvdG9jb2wpIC8gc2l6ZW9mKG9pZCk7CisgICAgICAgIHVzZXItPnByaXZQcm90b2NvbCA9CisgICAgICAgICAgICBzbm1wX2R1cGxpY2F0ZV9vYmppZCh1c21Ob1ByaXZQcm90b2NvbCwgdXNlci0+cHJpdlByb3RvY29sTGVuKTsKKyAgICAgICAgdXNtX2FkZF91c2VyKHVzZXIpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworaW50IHVzbV9kaXNjb3Zlcl9lbmdpbmVpZCh2b2lkICpzbHB2LCBuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb24pIHsKKyAgICBuZXRzbm1wX3BkdSAgICAqcGR1ID0gTlVMTCwgKnJlc3BvbnNlID0gTlVMTDsKKyAgICBpbnQgc3RhdHVzLCBpOworICAgIHN0cnVjdCBzZXNzaW9uX2xpc3QgKnNscCA9IChzdHJ1Y3Qgc2Vzc2lvbl9saXN0ICopIHNscHY7CisKKyAgICBpZiAodXNtX2J1aWxkX3Byb2JlX3BkdSgmcGR1KSAhPSAwKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FwaSIsICJ1bmFibGUgdG8gY3JlYXRlIHByb2JlIFBEVVxuIikpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOworICAgIH0KKyAgICBERUJVR01TR1RMKCgic25tcF9hcGkiLCAicHJvYmluZyBmb3IgZW5naW5lSUQuLi5cbiIpKTsKKyAgICBzZXNzaW9uLT5mbGFncyB8PSBTTk1QX0ZMQUdTX0RPTlRfUFJPQkU7IC8qIHByZXZlbnQgcmVjdXJzaW9uICovCisgICAgc3RhdHVzID0gc25tcF9zZXNzX3N5bmNoX3Jlc3BvbnNlKHNscCwgcGR1LCAmcmVzcG9uc2UpOworCisgICAgaWYgKChyZXNwb25zZSA9PSBOVUxMKSAmJiAoc3RhdHVzID09IFNUQVRfU1VDQ0VTUykpIHsKKyAgICAgICAgc3RhdHVzID0gU1RBVF9FUlJPUjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgIGNhc2UgU1RBVF9TVUNDRVNTOgorICAgICAgICBzZXNzaW9uLT5zX3NubXBfZXJybm8gPSBTTk1QRVJSX0lOVkFMSURfTVNHOyAvKiBYWD8/ICovCisgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX3Nlc3Nfb3BlbiIsCisgICAgICAgICAgICAgICAgICAgICJlcnJvcjogZXhwZWN0ZWQgUmVwb3J0IGFzIHJlc3BvbnNlIHRvIHByb2JlOiAlcyAoJWxkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgc25tcF9lcnJzdHJpbmcocmVzcG9uc2UtPmVycnN0YXQpLAorICAgICAgICAgICAgICAgICAgICByZXNwb25zZS0+ZXJyc3RhdCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNUQVRfRVJST1I6ICAgLyogdGhpcyBpcyB3aGF0IHdlIGV4cGVjdGVkIC0+IFJlcG9ydCA9PSBTVEFUX0VSUk9SICovCisgICAgICAgIHNlc3Npb24tPnNfc25tcF9lcnJubyA9IFNOTVBFUlJfVU5LTk9XTl9FTkdfSUQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU1RBVF9USU1FT1VUOgorICAgICAgICBzZXNzaW9uLT5zX3NubXBfZXJybm8gPSBTTk1QRVJSX1RJTUVPVVQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX3Nlc3Nfb3BlbiIsCisgICAgICAgICAgICAgICAgICAgICJ1bmFibGUgdG8gY29ubmVjdCB3aXRoIHJlbW90ZSBlbmdpbmU6ICVzICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgIHNubXBfYXBpX2VycnN0cmluZyhzZXNzaW9uLT5zX3NubXBfZXJybm8pLAorICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zX3NubXBfZXJybm8pKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKHNscC0+c2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRExlbiA9PSAwKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FwaSIsCisgICAgICAgICAgICAgICAgICAgICJ1bmFibGUgdG8gZGV0ZXJtaW5lIHJlbW90ZSBlbmdpbmUgSURcbiIpKTsKKyAgICAgICAgLyogY2xlYXIgdGhlIGZsYWcgc28gdGhhdCBwcm9iZSBvY2N1cnMgb24gbmV4dCBpbmZvcm0gKi8KKyAgICAgICAgc2Vzc2lvbi0+ZmxhZ3MgJj0gflNOTVBfRkxBR1NfRE9OVF9QUk9CRTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICB9CisKKyAgICBzZXNzaW9uLT5zX3NubXBfZXJybm8gPSBTTk1QRVJSX1NVQ0NFU1M7CisgICAgaWYgKHNubXBfZ2V0X2RvX2RlYnVnZ2luZygpKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX3Nlc3Nfb3BlbiIsCisgICAgICAgICAgICAgICAgICAgICIgIHByb2JlIGZvdW5kIGVuZ2luZUlEOiAgIikpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2xwLT5zZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuOyBpKyspCisgICAgICAgICAgICBERUJVR01TRygoInNubXBfc2Vzc19vcGVuIiwgIiUwMngiLAorICAgICAgICAgICAgICAgICAgICAgIHNscC0+c2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRFtpXSkpOworICAgICAgICBERUJVR01TRygoInNubXBfc2Vzc19vcGVuIiwgIlxuIikpOworICAgIH0KKworICAgIC8qCisgICAgICogaWYgYm9vdC90aW1lIHN1cHBsaWVkIHNldCBpdCBmb3IgdGhpcyBlbmdpbmVJRCAKKyAgICAgKi8KKyAgICBpZiAoc2Vzc2lvbi0+ZW5naW5lQm9vdHMgfHwgc2Vzc2lvbi0+ZW5naW5lVGltZSkgeworICAgICAgICBzZXRfZW5naW5ldGltZShzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlELAorICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuLAorICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5lbmdpbmVCb290cywgc2Vzc2lvbi0+ZW5naW5lVGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgVFJVRSk7CisgICAgfQorICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7Cit9CisKIHZvaWQKIGluaXRfdXNtKHZvaWQpCiB7CiAgICAgc3RydWN0IHNubXBfc2VjbW9kX2RlZiAqZGVmOworICAgIGNoYXIgKnR5cGU7CiAKICAgICBERUJVR01TR1RMKCgiaW5pdF91c20iLCAidW5pdF91c206ICUiIE5FVFNOTVBfUFJJbyAidSAlIiBORVRTTk1QX1BSSW8gInVcbiIsCiAgICAgICAgICAgICAgICAgdXNtTm9Qcml2UHJvdG9jb2xbMF0sIHVzbU5vUHJpdlByb3RvY29sWzFdKSk7CkBAIC0yODgyLDYgKzMyMTYsOCBAQAogICAgIGRlZi0+cGR1X2ZyZWVfc3RhdGVfcmVmID0gdXNtX2ZyZWVfdXNtU3RhdGVSZWZlcmVuY2U7CiAgICAgZGVmLT5zZXNzaW9uX3NldHVwID0gdXNtX3Nlc3Npb25faW5pdDsKICAgICBkZWYtPmhhbmRsZV9yZXBvcnQgPSB1c21faGFuZGxlX3JlcG9ydDsKKyAgICBkZWYtPnByb2JlX2VuZ2luZWlkID0gdXNtX2Rpc2NvdmVyX2VuZ2luZWlkOworICAgIGRlZi0+cG9zdF9wcm9iZV9lbmdpbmVpZCA9IHVzbV9jcmVhdGVfdXNlcl9mcm9tX3Nlc3Npb25faG9vazsKICAgICByZWdpc3Rlcl9zZWNfbW9kKFVTTV9TRUNfTU9ERUxfTlVNQkVSLCAidXNtIiwgZGVmKTsKIAogICAgIHNubXBfcmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19MSUJSQVJZLApAQCAtMjg5Niw2ICszMjMyLDM5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0NBTExCQUNLX1NIVVRET1dOLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZV9lbmdpbmVJRCwgTlVMTCk7CiAKKyAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigic25tcCIsICJkZWZBdXRoVHlwZSIsIHNubXB2M19hdXRodHlwZV9jb25mLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICJNRDV8U0hBIik7CisgICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXAiLCAiZGVmUHJpdlR5cGUiLCBzbm1wdjNfcHJpdnR5cGVfY29uZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorI2lmZGVmIEhBVkVfQUVTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRFU3xBRVMiCisjZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJERVMgKEFFUyBzdXBwb3J0IG5vdCBhdmFpbGFibGUpIgorI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICApOworCisgICAgLyoKKyAgICAgKiBGcmVlIHN0dWZmIGF0IHNodXRkb3duIHRpbWUKKyAgICAgKi8KKyAgICBzbm1wX3JlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfTElCUkFSWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfQ0FMTEJBQ0tfU0hVVERPV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlX2VuZ2luZXRpbWVfb25fc2h1dGRvd24sIE5VTEwpOworCisKKyAgICB0eXBlID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgTkVUU05NUF9EU19MSUJfQVBQVFlQRSk7CisKKyAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcih0eXBlLCAidXNlclNldEF1dGhQYXNzIiwgdXNtX3NldF9wYXNzd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKKyAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcih0eXBlLCAidXNlclNldFByaXZQYXNzIiwgdXNtX3NldF9wYXNzd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKKyAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcih0eXBlLCAidXNlclNldEF1dGhLZXkiLCB1c21fc2V0X3Bhc3N3b3JkLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKHR5cGUsICJ1c2VyU2V0UHJpdktleSIsIHVzbV9zZXRfcGFzc3dvcmQsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIodHlwZSwgInVzZXJTZXRBdXRoTG9jYWxLZXkiLCB1c21fc2V0X3Bhc3N3b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOworICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKHR5cGUsICJ1c2VyU2V0UHJpdkxvY2FsS2V5IiwgdXNtX3NldF9wYXNzd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKIH0KIAogdm9pZApAQCAtMzAwNCw2ICszMzczLDEzIEBACiAKIH0KIAordm9pZAorc2h1dGRvd25fdXNtKHZvaWQpCit7CisgICAgZnJlZV9ldGltZWxpc3QoKTsKKyAgICBjbGVhcl91c2VyX2xpc3QoKTsKK30KKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiotby0qKioqKioKICAqIHVzbV9jaGVja19zZWNMZXZlbAogICoKQEAgLTM0MDksNiArMzc4NSw3IEBACiAKIAogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogLyoKICAqIHRha2UgYSBnaXZlbiB1c2VyIGFuZCBjbG9uZSB0aGUgc2VjdXJpdHkgaW5mbyBpbnRvIGFub3RoZXIgCiAgKi8KQEAgLTM0NzIsNiArMzg0OSw3IEBACiAgICAgfQogICAgIHJldHVybiB0bzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogLyoKICAqIHVzbV9jcmVhdGVfdXNlcih2b2lkKToKQEAgLTM5MzcsMyArNDMxNSwzNTQgQEAKICAgICAgICAgfQogICAgIH0KIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZW5kIHVzbV9zZXRfcGFzc3dvcmQoKSAqLworCit2b2lkCit1c21fcGFyc2VfY3JlYXRlX3VzbVVzZXIoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmxpbmUpCit7CisgICAgY2hhciAgICAgICAgICAgKmNwOworICAgIGNoYXIgICAgICAgICAgICBidWZbU05NUF9NQVhCVUZfTUVESVVNXTsKKyAgICBzdHJ1Y3QgdXNtVXNlciAqbmV3dXNlcjsKKyAgICB1X2NoYXIgICAgICAgICAgdXNlcktleVtTTk1QX01BWEJVRl9TTUFMTF0sICp0bXBwOworICAgIHNpemVfdCAgICAgICAgICB1c2VyS2V5TGVuID0gU05NUF9NQVhCVUZfU01BTEw7CisgICAgc2l6ZV90ICAgICAgICAgIHByaXZLZXlMZW4gPSAwOworICAgIHNpemVfdCAgICAgICAgICByZXQ7CisgICAgaW50ICAgICAgICAgICAgIHJldDI7CisgICAgaW50ICAgICAgICAgICAgIHRlc3RjYXNlOworCisgICAgbmV3dXNlciA9IHVzbV9jcmVhdGVfdXNlcigpOworCisgICAgLyoKKyAgICAgKiBSRUFEOiBTZWN1cml0eSBOYW1lIAorICAgICAqLworICAgIGNwID0gY29weV9ud29yZChsaW5lLCBidWYsIHNpemVvZihidWYpKTsKKworICAgIC8qCisgICAgICogbWlnaHQgYmUgYSAtZSBFTkdJTkVJRCBhcmd1bWVudCAKKyAgICAgKi8KKyAgICBpZiAoc3RyY21wKGJ1ZiwgIi1lIikgPT0gMCkgeworICAgICAgICBzaXplX3QgICAgICAgICAgZWJ1Zl9sZW4gPSAzMiwgZW91dF9sZW4gPSAwOworICAgICAgICB1X2NoYXIgICAgICAgICAqZWJ1ZiA9ICh1X2NoYXIgKikgbWFsbG9jKGVidWZfbGVuKTsKKworICAgICAgICBpZiAoZWJ1ZiA9PSBOVUxMKSB7CisgICAgICAgICAgICBjb25maWdfcGVycm9yKCJtYWxsb2MgZmFpbHVyZSBwcm9jZXNzaW5nIC1lIGZsYWciKTsKKyAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiBHZXQgdGhlIHNwZWNpZmllZCBlbmdpbmVpZCBmcm9tIHRoZSBsaW5lLiAgCisgICAgICAgICAqLworICAgICAgICBjcCA9IGNvcHlfbndvcmQoY3AsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworICAgICAgICBpZiAoIXNubXBfaGV4X3RvX2JpbmFyeSgmZWJ1ZiwgJmVidWZfbGVuLCAmZW91dF9sZW4sIDEsIGJ1ZikpIHsKKyAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoImludmFsaWQgRW5naW5lSUQgYXJndW1lbnQgdG8gLWUiKTsKKyAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7CisgICAgICAgICAgICBTTk1QX0ZSRUUoZWJ1Zik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBuZXd1c2VyLT5lbmdpbmVJRCA9IGVidWY7CisgICAgICAgIG5ld3VzZXItPmVuZ2luZUlETGVuID0gZW91dF9sZW47CisgICAgICAgIGNwID0gY29weV9ud29yZChjcCwgYnVmLCBzaXplb2YoYnVmKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbmV3dXNlci0+ZW5naW5lSUQgPSBzbm1wdjNfZ2VuZXJhdGVfZW5naW5lSUQoJnJldCk7CisgICAgICAgIGlmIChyZXQgPT0gMCkgeworICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBuZXd1c2VyLT5lbmdpbmVJRExlbiA9IHJldDsKKyAgICB9CisKKyAgICBuZXd1c2VyLT5zZWNOYW1lID0gc3RyZHVwKGJ1Zik7CisgICAgbmV3dXNlci0+bmFtZSA9IHN0cmR1cChidWYpOworCisgICAgaWYgKCFjcCkKKyAgICAgICAgZ290byBhZGQ7ICAgICAgICAgICAgICAgLyogbm8gYXV0aGVudGljYXRpb24gb3IgcHJpdmFjeSB0eXBlICovCisKKyAgICAvKgorICAgICAqIFJFQUQ6IEF1dGhlbnRpY2F0aW9uIFR5cGUgCisgICAgICovCisjaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9NRDUKKyAgICBpZiAoc3RybmNtcChjcCwgIk1ENSIsIDMpID09IDApIHsKKyAgICAgICAgbWVtY3B5KG5ld3VzZXItPmF1dGhQcm90b2NvbCwgdXNtSE1BQ01ENUF1dGhQcm90b2NvbCwKKyAgICAgICAgICAgICAgIHNpemVvZih1c21ITUFDTUQ1QXV0aFByb3RvY29sKSk7CisgICAgfSBlbHNlCisjZW5kaWYKKyAgICAgICAgaWYgKHN0cm5jbXAoY3AsICJTSEEiLCAzKSA9PSAwKSB7CisgICAgICAgIG1lbWNweShuZXd1c2VyLT5hdXRoUHJvdG9jb2wsIHVzbUhNQUNTSEExQXV0aFByb3RvY29sLAorICAgICAgICAgICAgICAgc2l6ZW9mKHVzbUhNQUNTSEExQXV0aFByb3RvY29sKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY29uZmlnX3BlcnJvcigiVW5rbm93biBhdXRoZW50aWNhdGlvbiBwcm90b2NvbCIpOworICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY3AgPSBza2lwX3Rva2VuKGNwKTsKKworICAgIC8qCisgICAgICogUkVBRDogQXV0aGVudGljYXRpb24gUGFzcyBQaHJhc2Ugb3Iga2V5CisgICAgICovCisgICAgaWYgKCFjcCkgeworICAgICAgICBjb25maWdfcGVycm9yKCJubyBhdXRoZW50aWNhdGlvbiBwYXNzIHBocmFzZSIpOworICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNwID0gY29weV9ud29yZChjcCwgYnVmLCBzaXplb2YoYnVmKSk7CisgICAgaWYgKHN0cmNtcChidWYsIi1tIikgPT0gMCkgeworICAgICAgICAvKiBhIG1hc3RlciBrZXkgaXMgc3BlY2lmaWVkICovCisgICAgICAgIGNwID0gY29weV9ud29yZChjcCwgYnVmLCBzaXplb2YoYnVmKSk7CisgICAgICAgIHJldCA9IHNpemVvZih1c2VyS2V5KTsKKyAgICAgICAgdG1wcCA9IHVzZXJLZXk7CisgICAgICAgIHVzZXJLZXlMZW4gPSAwOworICAgICAgICBpZiAoIXNubXBfaGV4X3RvX2JpbmFyeSgmdG1wcCwgJnJldCwgJnVzZXJLZXlMZW4sIDAsIGJ1ZikpIHsKKyAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoImludmFsaWQga2V5IHZhbHVlIGFyZ3VtZW50IHRvIC1tIik7CisgICAgICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChzdHJjbXAoYnVmLCItbCIpICE9IDApIHsKKyAgICAgICAgLyogYSBwYXNzd29yZCBpcyBzcGVjaWZpZWQgKi8KKyAgICAgICAgdXNlcktleUxlbiA9IHNpemVvZih1c2VyS2V5KTsKKyAgICAgICAgcmV0MiA9IGdlbmVyYXRlX0t1KG5ld3VzZXItPmF1dGhQcm90b2NvbCwgbmV3dXNlci0+YXV0aFByb3RvY29sTGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopIGJ1Ziwgc3RybGVuKGJ1ZiksIHVzZXJLZXksICZ1c2VyS2V5TGVuKTsKKyAgICAgICAgaWYgKHJldDIgIT0gU05NUEVSUl9TVUNDRVNTKSB7CisgICAgICAgICAgICBjb25maWdfcGVycm9yKCJjb3VsZCBub3QgZ2VuZXJhdGUgdGhlIGF1dGhlbnRpY2F0aW9uIGtleSBmcm9tIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBwbGllZCBwYXNzIHBocmFzZS4iKTsKKyAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9ICAgICAgICAKKyAgICAgICAgCisgICAgLyoKKyAgICAgKiBBbmQgdHVybiBpdCBpbnRvIGEgbG9jYWxpemVkIGtleSAKKyAgICAgKi8KKyAgICByZXQyID0gc2NfZ2V0X3Byb3Blcmxlbmd0aChuZXd1c2VyLT5hdXRoUHJvdG9jb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3dXNlci0+YXV0aFByb3RvY29sTGVuKTsKKyAgICBpZiAocmV0MiA8PSAwKSB7CisgICAgICAgIGNvbmZpZ19wZXJyb3IoIkNvdWxkIG5vdCBnZXQgcHJvcGVyIGF1dGhlbnRpY2F0aW9uIHByb3RvY29sIGtleSBsZW5ndGgiKTsKKwl1c21fZnJlZV91c2VyKG5ld3VzZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG5ld3VzZXItPmF1dGhLZXkgPSAodV9jaGFyICopIG1hbGxvYyhyZXQyKTsKKworICAgIGlmIChzdHJjbXAoYnVmLCItbCIpID09IDApIHsKKyAgICAgICAgLyogYSBsb2NhbCBrZXkgaXMgZGlyZWN0bHkgc3BlY2lmaWVkICovCisgICAgICAgIGNwID0gY29weV9ud29yZChjcCwgYnVmLCBzaXplb2YoYnVmKSk7CisgICAgICAgIG5ld3VzZXItPmF1dGhLZXlMZW4gPSAwOworICAgICAgICByZXQgPSByZXQyOworICAgICAgICBpZiAoIXNubXBfaGV4X3RvX2JpbmFyeSgmbmV3dXNlci0+YXV0aEtleSwgJnJldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld3VzZXItPmF1dGhLZXlMZW4sIDAsIGJ1ZikpIHsKKyAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoImludmFsaWQga2V5IHZhbHVlIGFyZ3VtZW50IHRvIC1sIik7CisgICAgICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChyZXQgIT0gbmV3dXNlci0+YXV0aEtleUxlbikgeworICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiaW1wcm9wZXIga2V5IGxlbmd0aCB0byAtbCIpOworICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIG5ld3VzZXItPmF1dGhLZXlMZW4gPSByZXQyOworICAgICAgICByZXQyID0gZ2VuZXJhdGVfa3VsKG5ld3VzZXItPmF1dGhQcm90b2NvbCwgbmV3dXNlci0+YXV0aFByb3RvY29sTGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3dXNlci0+ZW5naW5lSUQsIG5ld3VzZXItPmVuZ2luZUlETGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcktleSwgdXNlcktleUxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3VzZXItPmF1dGhLZXksICZuZXd1c2VyLT5hdXRoS2V5TGVuKTsKKyAgICAgICAgaWYgKHJldDIgIT0gU05NUEVSUl9TVUNDRVNTKSB7CisgICAgICAgICAgICBjb25maWdfcGVycm9yKCJjb3VsZCBub3QgZ2VuZXJhdGUgbG9jYWxpemVkIGF1dGhlbnRpY2F0aW9uIGtleSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICIoS3VsKSBmcm9tIHRoZSBtYXN0ZXIga2V5IChLdSkuIik7CisgICAgICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFjcCkKKyAgICAgICAgZ290byBhZGQ7ICAgICAgICAgICAgICAgLyogbm8gcHJpdmFjeSB0eXBlICh3aGljaCBpcyBsZWdhbCkgKi8KKworICAgIC8qCisgICAgICogUkVBRDogUHJpdmFjeSBUeXBlIAorICAgICAqLworICAgIHRlc3RjYXNlID0gMDsKKyNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX0RFUworICAgIGlmIChzdHJuY21wKGNwLCAiREVTIiwgMykgPT0gMCkgeworICAgICAgICBtZW1jcHkobmV3dXNlci0+cHJpdlByb3RvY29sLCB1c21ERVNQcml2UHJvdG9jb2wsCisgICAgICAgICAgICAgICBzaXplb2YodXNtREVTUHJpdlByb3RvY29sKSk7CisgICAgICAgIHRlc3RjYXNlID0gMTsKKwkvKiBERVMgdXNlcyBhIDEyOCBiaXQga2V5LCA2NCBiaXRzIG9mIHdoaWNoIGlzIGEgc2FsdCAqLworCXByaXZLZXlMZW4gPSAxNjsKKyAgICB9CisjZW5kaWYKKyNpZmRlZiBIQVZFX0FFUworICAgIGlmIChzdHJuY21wKGNwLCAiQUVTMTI4IiwgNikgPT0gMCB8fAorICAgICAgICAgICAgICAgc3RybmNtcChjcCwgIkFFUyIsIDMpID09IDApIHsKKyAgICAgICAgbWVtY3B5KG5ld3VzZXItPnByaXZQcm90b2NvbCwgdXNtQUVTUHJpdlByb3RvY29sLAorICAgICAgICAgICAgICAgc2l6ZW9mKHVzbUFFU1ByaXZQcm90b2NvbCkpOworICAgICAgICB0ZXN0Y2FzZSA9IDE7CisJcHJpdktleUxlbiA9IDE2OworICAgIH0KKyNlbmRpZgorICAgIGlmICh0ZXN0Y2FzZSA9PSAwKSB7CisgICAgICAgIGNvbmZpZ19wZXJyb3IoIlVua25vd24gcHJpdmFjeSBwcm90b2NvbCIpOworICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY3AgPSBza2lwX3Rva2VuKGNwKTsKKyAgICAvKgorICAgICAqIFJFQUQ6IEVuY3J5cHRpb24gUGFzcyBQaHJhc2Ugb3Iga2V5CisgICAgICovCisgICAgaWYgKCFjcCkgeworICAgICAgICAvKgorICAgICAgICAgKiBhc3N1bWUgdGhlIHNhbWUgYXMgdGhlIGF1dGhlbnRpY2F0aW9uIGtleSAKKyAgICAgICAgICovCisgICAgICAgIG1lbWR1cCgmbmV3dXNlci0+cHJpdktleSwgbmV3dXNlci0+YXV0aEtleSwgbmV3dXNlci0+YXV0aEtleUxlbik7CisgICAgICAgIG5ld3VzZXItPnByaXZLZXlMZW4gPSBuZXd1c2VyLT5hdXRoS2V5TGVuOworICAgIH0gZWxzZSB7CisgICAgICAgIGNwID0gY29weV9ud29yZChjcCwgYnVmLCBzaXplb2YoYnVmKSk7CisgICAgICAgIAorICAgICAgICBpZiAoc3RyY21wKGJ1ZiwiLW0iKSA9PSAwKSB7CisgICAgICAgICAgICAvKiBhIG1hc3RlciBrZXkgaXMgc3BlY2lmaWVkICovCisgICAgICAgICAgICBjcCA9IGNvcHlfbndvcmQoY3AsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworICAgICAgICAgICAgcmV0ID0gc2l6ZW9mKHVzZXJLZXkpOworICAgICAgICAgICAgdG1wcCA9IHVzZXJLZXk7CisgICAgICAgICAgICB1c2VyS2V5TGVuID0gMDsKKyAgICAgICAgICAgIGlmICghc25tcF9oZXhfdG9fYmluYXJ5KCZ0bXBwLCAmcmV0LCAmdXNlcktleUxlbiwgMCwgYnVmKSkgeworICAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoImludmFsaWQga2V5IHZhbHVlIGFyZ3VtZW50IHRvIC1tIik7CisgICAgICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGJ1ZiwiLWwiKSAhPSAwKSB7CisgICAgICAgICAgICAvKiBhIHBhc3N3b3JkIGlzIHNwZWNpZmllZCAqLworICAgICAgICAgICAgdXNlcktleUxlbiA9IHNpemVvZih1c2VyS2V5KTsKKyAgICAgICAgICAgIHJldDIgPSBnZW5lcmF0ZV9LdShuZXd1c2VyLT5hdXRoUHJvdG9jb2wsIG5ld3VzZXItPmF1dGhQcm90b2NvbExlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgYnVmLCBzdHJsZW4oYnVmKSwgdXNlcktleSwgJnVzZXJLZXlMZW4pOworICAgICAgICAgICAgaWYgKHJldDIgIT0gU05NUEVSUl9TVUNDRVNTKSB7CisgICAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiY291bGQgbm90IGdlbmVyYXRlIHRoZSBwcml2YWN5IGtleSBmcm9tIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3VwcGxpZWQgcGFzcyBwaHJhc2UuIik7CisgICAgICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0gICAgICAgIAorICAgICAgICAKKyAgICAgICAgLyoKKyAgICAgICAgICogQW5kIHR1cm4gaXQgaW50byBhIGxvY2FsaXplZCBrZXkgCisgICAgICAgICAqLworICAgICAgICByZXQyID0gc2NfZ2V0X3Byb3Blcmxlbmd0aChuZXd1c2VyLT5hdXRoUHJvdG9jb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3VzZXItPmF1dGhQcm90b2NvbExlbik7CisgICAgICAgIGlmIChyZXQyIDwgMCkgeworICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiY291bGQgbm90IGdldCBwcm9wZXIga2V5IGxlbmd0aCB0byB1c2UgZm9yIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJwcml2YWN5IGFsZ29yaXRobS4iKTsKKyAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbmV3dXNlci0+cHJpdktleSA9ICh1X2NoYXIgKikgbWFsbG9jKHJldDIpOworCisgICAgICAgIGlmIChzdHJjbXAoYnVmLCItbCIpID09IDApIHsKKyAgICAgICAgICAgIC8qIGEgbG9jYWwga2V5IGlzIGRpcmVjdGx5IHNwZWNpZmllZCAqLworICAgICAgICAgICAgY3AgPSBjb3B5X253b3JkKGNwLCBidWYsIHNpemVvZihidWYpKTsKKyAgICAgICAgICAgIHJldCA9IHJldDI7CisgICAgICAgICAgICBuZXd1c2VyLT5wcml2S2V5TGVuID0gMDsKKyAgICAgICAgICAgIGlmICghc25tcF9oZXhfdG9fYmluYXJ5KCZuZXd1c2VyLT5wcml2S2V5LCAmcmV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld3VzZXItPnByaXZLZXlMZW4sIDAsIGJ1ZikpIHsKKyAgICAgICAgICAgICAgICBjb25maWdfcGVycm9yKCJpbnZhbGlkIGtleSB2YWx1ZSBhcmd1bWVudCB0byAtbCIpOworICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbmV3dXNlci0+cHJpdktleUxlbiA9IHJldDI7CisgICAgICAgICAgICByZXQyID0gZ2VuZXJhdGVfa3VsKG5ld3VzZXItPmF1dGhQcm90b2NvbCwgbmV3dXNlci0+YXV0aFByb3RvY29sTGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3VzZXItPmVuZ2luZUlELCBuZXd1c2VyLT5lbmdpbmVJRExlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyS2V5LCB1c2VyS2V5TGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3VzZXItPnByaXZLZXksICZuZXd1c2VyLT5wcml2S2V5TGVuKTsKKyAgICAgICAgICAgIGlmIChyZXQyICE9IFNOTVBFUlJfU1VDQ0VTUykgeworICAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoImNvdWxkIG5vdCBnZW5lcmF0ZSBsb2NhbGl6ZWQgcHJpdmFjeSBrZXkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihLdWwpIGZyb20gdGhlIG1hc3RlciBrZXkgKEt1KS4iKTsKKyAgICAgICAgICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICgobmV3dXNlci0+cHJpdktleUxlbiA+PSBwcml2S2V5TGVuKSB8fCAocHJpdktleUxlbiA9PSAwKSl7CisgICAgICBuZXd1c2VyLT5wcml2S2V5TGVuID0gcHJpdktleUxlbjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAvKiBUaGUgcHJpdktleSBsZW5ndGggaXMgc21hbGxlciB0aGFuIHJlcXVpcmVkIGJ5IHByaXZQcm90b2NvbCAqLworICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgYWRkOgorICAgIHVzbV9hZGRfdXNlcihuZXd1c2VyKTsKKyAgICBERUJVR01TR1RMKCgidXNtVXNlciIsICJjcmVhdGVkIGEgbmV3IHVzZXIgJXMgYXQgIiwgbmV3dXNlci0+c2VjTmFtZSkpOworICAgIERFQlVHTVNHSEVYKCgidXNtVXNlciIsIG5ld3VzZXItPmVuZ2luZUlELCBuZXd1c2VyLT5lbmdpbmVJRExlbikpOworICAgIERFQlVHTVNHKCgidXNtVXNlciIsICJcbiIpKTsKK30KKwordm9pZAorc25tcHYzX2F1dGh0eXBlX2NvbmYoY29uc3QgY2hhciAqd29yZCwgY2hhciAqY3B0cikKK3sKKyNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX01ENQorICAgIGlmIChzdHJjYXNlY21wKGNwdHIsICJNRDUiKSA9PSAwKQorICAgICAgICBkZWZhdWx0QXV0aFR5cGUgPSB1c21ITUFDTUQ1QXV0aFByb3RvY29sOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICBpZiAoc3RyY2FzZWNtcChjcHRyLCAiU0hBIikgPT0gMCkKKyAgICAgICAgZGVmYXVsdEF1dGhUeXBlID0gdXNtSE1BQ1NIQTFBdXRoUHJvdG9jb2w7CisgICAgZWxzZQorICAgICAgICBjb25maWdfcGVycm9yKCJVbmtub3duIGF1dGhlbnRpY2F0aW9uIHR5cGUiKTsKKyAgICBkZWZhdWx0QXV0aFR5cGVMZW4gPSBVU01fTEVOR1RIX09JRF9UUkFOU0ZPUk07CisgICAgREVCVUdNU0dUTCgoInNubXB2MyIsICJzZXQgZGVmYXVsdCBhdXRoZW50aWNhdGlvbiB0eXBlOiAlc1xuIiwgY3B0cikpOworfQorCitjb25zdCBvaWQgICAgICAqCitnZXRfZGVmYXVsdF9hdXRodHlwZShzaXplX3QgKiBsZW4pCit7CisgICAgaWYgKGRlZmF1bHRBdXRoVHlwZSA9PSBOVUxMKSB7CisgICAgICAgIGRlZmF1bHRBdXRoVHlwZSA9IFNOTVBfREVGQVVMVF9BVVRIX1BST1RPOworICAgICAgICBkZWZhdWx0QXV0aFR5cGVMZW4gPSBTTk1QX0RFRkFVTFRfQVVUSF9QUk9UT0xFTjsKKyAgICB9CisgICAgaWYgKGxlbikKKyAgICAgICAgKmxlbiA9IGRlZmF1bHRBdXRoVHlwZUxlbjsKKyAgICByZXR1cm4gZGVmYXVsdEF1dGhUeXBlOworfQorCit2b2lkCitzbm1wdjNfcHJpdnR5cGVfY29uZihjb25zdCBjaGFyICp3b3JkLCBjaGFyICpjcHRyKQoreworICAgIGludCB0ZXN0Y2FzZSA9IDA7CisKKyNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX0RFUworICAgIGlmIChzdHJjYXNlY21wKGNwdHIsICJERVMiKSA9PSAwKSB7CisgICAgICAgIHRlc3RjYXNlID0gMTsKKyAgICAgICAgZGVmYXVsdFByaXZUeXBlID0gdXNtREVTUHJpdlByb3RvY29sOworICAgIH0KKyNlbmRpZgorCisjaWYgSEFWRV9BRVMKKyAgICAvKiBYWFggQUVTOiBhc3N1bWVzIG9pZCBsZW5ndGggPT0gZGVzIG9pZCBsZW5ndGggKi8KKyAgICBpZiAoc3RyY2FzZWNtcChjcHRyLCAiQUVTMTI4IikgPT0gMCB8fAorICAgICAgICBzdHJjYXNlY21wKGNwdHIsICJBRVMiKSA9PSAwKSB7CisgICAgICAgIHRlc3RjYXNlID0gMTsKKyAgICAgICAgZGVmYXVsdFByaXZUeXBlID0gdXNtQUVTMTI4UHJpdlByb3RvY29sOworICAgIH0KKyNlbmRpZgorICAgIGlmICh0ZXN0Y2FzZSA9PSAwKQorICAgICAgICBjb25maWdfcGVycm9yKCJVbmtub3duIHByaXZhY3kgdHlwZSIpOworICAgIGRlZmF1bHRQcml2VHlwZUxlbiA9IFNOTVBfREVGQVVMVF9QUklWX1BST1RPTEVOOworICAgIERFQlVHTVNHVEwoKCJzbm1wdjMiLCAic2V0IGRlZmF1bHQgcHJpdmFjeSB0eXBlOiAlc1xuIiwgY3B0cikpOworfQorCitjb25zdCBvaWQgICAgICAqCitnZXRfZGVmYXVsdF9wcml2dHlwZShzaXplX3QgKiBsZW4pCit7CisgICAgaWYgKGRlZmF1bHRQcml2VHlwZSA9PSBOVUxMKSB7CisjaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9ERVMKKyAgICAgICAgZGVmYXVsdFByaXZUeXBlID0gdXNtREVTUHJpdlByb3RvY29sOworI2Vsc2UKKyAgICAgICAgZGVmYXVsdFByaXZUeXBlID0gdXNtQUVTUHJpdlByb3RvY29sOworI2VuZGlmCisgICAgICAgIGRlZmF1bHRQcml2VHlwZUxlbiA9IFVTTV9MRU5HVEhfT0lEX1RSQU5TRk9STTsKKyAgICB9CisgICAgaWYgKGxlbikKKyAgICAgICAgKmxlbiA9IGRlZmF1bHRQcml2VHlwZUxlbjsKKyAgICByZXR1cm4gZGVmYXVsdFByaXZUeXBlOworfQorCmRpZmYgLS1naXQgYS9zbm1wbGliL3NubXB2My5jIGIvc25tcGxpYi9zbm1wdjMuYwppbmRleCA3NzEyYjhiLi40MzVjYWZkIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXB2My5jCisrKyBiL3NubXBsaWIvc25tcHYzLmMKQEAgLTc1LDYgKzc1LDggQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgorCiBzdGF0aWMgdV9sb25nICAgZW5naW5lQm9vdHMgPSAxOwogc3RhdGljIHVuc2lnbmVkIGludCBlbmdpbmVJRFR5cGUgPSBFTkdJTkVJRF9UWVBFX05FVFNOTVBfUk5EOwogc3RhdGljIHVuc2lnbmVkIGNoYXIgKmVuZ2luZUlEID0gTlVMTDsKQEAgLTg1LDEwMCArODcsMTAgQEAKIHN0YXRpYyBzaXplX3QgICBvbGRFbmdpbmVJRExlbmd0aCA9IDA7CiBzdGF0aWMgc3RydWN0IHRpbWV2YWwgc25tcHYzc3RhcnR0aW1lOwogCi0vKgotICogU2V0IHVwIGRlZmF1bHQgc25tcHYzIHBhcmFtZXRlciB2YWx1ZSBzdG9yYWdlLgotICovCi1zdGF0aWMgY29uc3Qgb2lkICpkZWZhdWx0QXV0aFR5cGUgPSBOVUxMOwotc3RhdGljIHNpemVfdCAgIGRlZmF1bHRBdXRoVHlwZUxlbiA9IDA7Ci1zdGF0aWMgY29uc3Qgb2lkICpkZWZhdWx0UHJpdlR5cGUgPSBOVUxMOwotc3RhdGljIHNpemVfdCAgIGRlZmF1bHRQcml2VHlwZUxlbiA9IDA7Ci0KLS8qIHRoaXMgaXMgcHJvYmFibHkgYW4gb3Zlci1raWxsIGlmZGVmLCBidXQgd2h5IG5vdCAqLwotI2lmIGRlZmluZWQoSEFWRV9TWVNfVElNRVNfSCkgJiYgZGVmaW5lZChIQVZFX1VOSVNURF9IKSAmJiBkZWZpbmVkKEhBVkVfVElNRVMpICYmIGRlZmluZWQoX1NDX0NMS19UQ0spICYmIGRlZmluZWQoSEFWRV9TWVNDT05GKSAmJiBkZWZpbmVkKFVJTlRfTUFYKQotCi0jZGVmaW5lIFNOTVBfVVNFX1RJTUVTIDEKLQotc3RhdGljIGNsb2NrX3Qgc25tcHYzc3RhcnRDbG9jazsKLXN0YXRpYyBsb25nIGNsb2NrdGlja3MgPSAwOwotc3RhdGljIHVuc2lnbmVkIGludCBsYXN0Y2FsbHRpbWUgPSAwOwotc3RhdGljIHVuc2lnbmVkIGludCB3cmFwY291bnRlciA9IDA7Ci0KLSNlbmRpZiAvKiB0aW1lcygpIHRlc3RzICovCi0KICNpZiBkZWZpbmVkKElGSFdBRERSTEVOKSAmJiBkZWZpbmVkKFNJT0NHSUZIV0FERFIpCiBzdGF0aWMgaW50ICAgICAgZ2V0SHdBZGRyZXNzKGNvbnN0IGNoYXIgKm5ldHdvcmtEZXZpY2UsIGNoYXIgKmFkZHJlc3NPdXQpOwogI2VuZGlmCiAKLXZvaWQKLXNubXB2M19hdXRodHlwZV9jb25mKGNvbnN0IGNoYXIgKndvcmQsIGNoYXIgKmNwdHIpCi17Ci0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9NRDUKLSAgICBpZiAoc3RyY2FzZWNtcChjcHRyLCAiTUQ1IikgPT0gMCkKLSAgICAgICAgZGVmYXVsdEF1dGhUeXBlID0gdXNtSE1BQ01ENUF1dGhQcm90b2NvbDsKLSAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgaWYgKHN0cmNhc2VjbXAoY3B0ciwgIlNIQSIpID09IDApCi0gICAgICAgIGRlZmF1bHRBdXRoVHlwZSA9IHVzbUhNQUNTSEExQXV0aFByb3RvY29sOwotICAgIGVsc2UKLSAgICAgICAgY29uZmlnX3BlcnJvcigiVW5rbm93biBhdXRoZW50aWNhdGlvbiB0eXBlIik7Ci0gICAgZGVmYXVsdEF1dGhUeXBlTGVuID0gVVNNX0xFTkdUSF9PSURfVFJBTlNGT1JNOwotICAgIERFQlVHTVNHVEwoKCJzbm1wdjMiLCAic2V0IGRlZmF1bHQgYXV0aGVudGljYXRpb24gdHlwZTogJXNcbiIsIGNwdHIpKTsKLX0KLQotY29uc3Qgb2lkICAgICAgKgotZ2V0X2RlZmF1bHRfYXV0aHR5cGUoc2l6ZV90ICogbGVuKQotewotICAgIGlmIChkZWZhdWx0QXV0aFR5cGUgPT0gTlVMTCkgewotICAgICAgICBkZWZhdWx0QXV0aFR5cGUgPSBTTk1QX0RFRkFVTFRfQVVUSF9QUk9UTzsKLSAgICAgICAgZGVmYXVsdEF1dGhUeXBlTGVuID0gU05NUF9ERUZBVUxUX0FVVEhfUFJPVE9MRU47Ci0gICAgfQotICAgIGlmIChsZW4pCi0gICAgICAgICpsZW4gPSBkZWZhdWx0QXV0aFR5cGVMZW47Ci0gICAgcmV0dXJuIGRlZmF1bHRBdXRoVHlwZTsKLX0KLQotdm9pZAotc25tcHYzX3ByaXZ0eXBlX2NvbmYoY29uc3QgY2hhciAqd29yZCwgY2hhciAqY3B0cikKLXsKLSAgICBpbnQgdGVzdGNhc2UgPSAwOwotCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9ERVMKLSAgICBpZiAoc3RyY2FzZWNtcChjcHRyLCAiREVTIikgPT0gMCkgewotICAgICAgICB0ZXN0Y2FzZSA9IDE7Ci0gICAgICAgIGRlZmF1bHRQcml2VHlwZSA9IHVzbURFU1ByaXZQcm90b2NvbDsKLSAgICB9Ci0jZW5kaWYKLQotI2lmIEhBVkVfQUVTCi0gICAgLyogWFhYIEFFUzogYXNzdW1lcyBvaWQgbGVuZ3RoID09IGRlcyBvaWQgbGVuZ3RoICovCi0gICAgaWYgKHN0cmNhc2VjbXAoY3B0ciwgIkFFUzEyOCIpID09IDAgfHwKLSAgICAgICAgc3RyY2FzZWNtcChjcHRyLCAiQUVTIikgPT0gMCkgewotICAgICAgICB0ZXN0Y2FzZSA9IDE7Ci0gICAgICAgIGRlZmF1bHRQcml2VHlwZSA9IHVzbUFFUzEyOFByaXZQcm90b2NvbDsKLSAgICB9Ci0jZW5kaWYKLSAgICBpZiAodGVzdGNhc2UgPT0gMCkKLSAgICAgICAgY29uZmlnX3BlcnJvcigiVW5rbm93biBwcml2YWN5IHR5cGUiKTsKLSAgICBkZWZhdWx0UHJpdlR5cGVMZW4gPSBTTk1QX0RFRkFVTFRfUFJJVl9QUk9UT0xFTjsKLSAgICBERUJVR01TR1RMKCgic25tcHYzIiwgInNldCBkZWZhdWx0IHByaXZhY3kgdHlwZTogJXNcbiIsIGNwdHIpKTsKLX0KLQotY29uc3Qgb2lkICAgICAgKgotZ2V0X2RlZmF1bHRfcHJpdnR5cGUoc2l6ZV90ICogbGVuKQotewotICAgIGlmIChkZWZhdWx0UHJpdlR5cGUgPT0gTlVMTCkgewotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfREVTCi0gICAgICAgIGRlZmF1bHRQcml2VHlwZSA9IHVzbURFU1ByaXZQcm90b2NvbDsKLSNlbHNlCi0gICAgICAgIGRlZmF1bHRQcml2VHlwZSA9IHVzbUFFU1ByaXZQcm90b2NvbDsKLSNlbmRpZgotICAgICAgICBkZWZhdWx0UHJpdlR5cGVMZW4gPSBVU01fTEVOR1RIX09JRF9UUkFOU0ZPUk07Ci0gICAgfQotICAgIGlmIChsZW4pCi0gICAgICAgICpsZW4gPSBkZWZhdWx0UHJpdlR5cGVMZW47Ci0gICAgcmV0dXJuIGRlZmF1bHRQcml2VHlwZTsKLX0KLQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiotby0qKioqKioKICAqIHNubXB2M19zZWNMZXZlbF9jb25mCiAgKgpAQCAtMzUyLDYgKzI2NCw3IEBACiAKICAgICAgICAgYnJlYWs7CiAKKyNpZmRlZiBORVRTTk1QX1NFQ01PRF9VU00KICAgICBjYXNlICdhJzoKICNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX01ENQogICAgICAgICBpZiAoIXN0cmNhc2VjbXAob3B0YXJnLCAiTUQ1IikpIHsKQEAgLTQwMiw2ICszMTUsNyBAQAogICAgIGNhc2UgJ1gnOgogICAgICAgICAqWHBzeiA9IG9wdGFyZzsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9TRUNNT0RfVVNNICovCiAKICAgICBjYXNlICdtJzogewogICAgICAgICBzaXplX3QgYnVmU2l6ZSA9IHNpemVvZihzZXNzaW9uLT5zZWN1cml0eUF1dGhLZXkpOwpAQCAtNTI4LDcgKzQ0Miw3IEBACiAgICAgICAgICAqIGdldCB0aGUgaG9zdCBuYW1lIGFuZCBzYXZlIHRoZSBpbmZvcm1hdGlvbiAKICAgICAgICAgICovCiAgICAgICAgIGdldGhvc3RuYW1lKChjaGFyICopIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwotICAgICAgICBoZW50ID0gZ2V0aG9zdGJ5bmFtZSgoY2hhciAqKSBidWYpOworICAgICAgICBoZW50ID0gbmV0c25tcF9nZXRob3N0YnluYW1lKChjaGFyICopIGJ1Zik7CiAgICAgICAgIGlmIChoZW50ICYmIGhlbnQtPmhfYWRkcnR5cGUgPT0gQUZfSU5FVDYpIHsKICAgICAgICAgICAgIGxvY2FsRW5naW5lSURUeXBlID0gRU5HSU5FSURfVFlQRV9JUFY2OwogICAgICAgICB9IGVsc2UgewpAQCAtNTUxLDcgKzQ2NSw3IEBACiAgICAgICAgICAqIGdldCB0aGUgaG9zdCBuYW1lIGFuZCBzYXZlIHRoZSBpbmZvcm1hdGlvbiAKICAgICAgICAgICovCiAgICAgICAgIGdldGhvc3RuYW1lKChjaGFyICopIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwotICAgICAgICBoZW50ID0gZ2V0aG9zdGJ5bmFtZSgoY2hhciAqKSBidWYpOworICAgICAgICBoZW50ID0gbmV0c25tcF9nZXRob3N0YnluYW1lKChjaGFyICopIGJ1Zik7CiAgICAgfQogI2VuZGlmCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEhBVkVfR0VUSE9TVE5BTUUgKi8KQEAgLTc0NCwyOTYgKzY1OCw2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLWludAotZnJlZV9lbmdpbmV0aW1lX29uX3NodXRkb3duKGludCBtYWpvcmlkLCBpbnQgbWlub3JpZCwgdm9pZCAqc2VydmVyYXJnLAotCQkJICAgIHZvaWQgKmNsaWVudGFyZykKLXsKLSAgICBERUJVR01TR1RMKCgic25tcHYzIiwgImZyZWUgZW5naW5ldGltZSBjYWxsYmFjayBjYWxsZWRcbiIpKTsKLSAgICBpZiAoZW5naW5lSUQgIT0gTlVMTCkKLQlmcmVlX2VuZ2luZXRpbWUoZW5naW5lSUQsIGVuZ2luZUlETGVuZ3RoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZAotdXNtX3BhcnNlX2NyZWF0ZV91c21Vc2VyKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpsaW5lKQotewotICAgIGNoYXIgICAgICAgICAgICpjcDsKLSAgICBjaGFyICAgICAgICAgICAgYnVmW1NOTVBfTUFYQlVGX01FRElVTV07Ci0gICAgc3RydWN0IHVzbVVzZXIgKm5ld3VzZXI7Ci0gICAgdV9jaGFyICAgICAgICAgIHVzZXJLZXlbU05NUF9NQVhCVUZfU01BTExdLCAqdG1wcDsKLSAgICBzaXplX3QgICAgICAgICAgdXNlcktleUxlbiA9IFNOTVBfTUFYQlVGX1NNQUxMOwotICAgIHNpemVfdCAgICAgICAgICBwcml2S2V5TGVuID0gMDsKLSAgICBzaXplX3QgICAgICAgICAgcmV0OwotICAgIGludCAgICAgICAgICAgICByZXQyOwotICAgIGludCAgICAgICAgICAgICB0ZXN0Y2FzZTsKLQotICAgIG5ld3VzZXIgPSB1c21fY3JlYXRlX3VzZXIoKTsKLQotICAgIC8qCi0gICAgICogUkVBRDogU2VjdXJpdHkgTmFtZSAKLSAgICAgKi8KLSAgICBjcCA9IGNvcHlfbndvcmQobGluZSwgYnVmLCBzaXplb2YoYnVmKSk7Ci0KLSAgICAvKgotICAgICAqIG1pZ2h0IGJlIGEgLWUgRU5HSU5FSUQgYXJndW1lbnQgCi0gICAgICovCi0gICAgaWYgKHN0cmNtcChidWYsICItZSIpID09IDApIHsKLSAgICAgICAgc2l6ZV90ICAgICAgICAgIGVidWZfbGVuID0gMzIsIGVvdXRfbGVuID0gMDsKLSAgICAgICAgdV9jaGFyICAgICAgICAgKmVidWYgPSAodV9jaGFyICopIG1hbGxvYyhlYnVmX2xlbik7Ci0KLSAgICAgICAgaWYgKGVidWYgPT0gTlVMTCkgewotICAgICAgICAgICAgY29uZmlnX3BlcnJvcigibWFsbG9jIGZhaWx1cmUgcHJvY2Vzc2luZyAtZSBmbGFnIik7Ci0gICAgICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLyoKLSAgICAgICAgICogR2V0IHRoZSBzcGVjaWZpZWQgZW5naW5laWQgZnJvbSB0aGUgbGluZS4gIAotICAgICAgICAgKi8KLSAgICAgICAgY3AgPSBjb3B5X253b3JkKGNwLCBidWYsIHNpemVvZihidWYpKTsKLSAgICAgICAgaWYgKCFzbm1wX2hleF90b19iaW5hcnkoJmVidWYsICZlYnVmX2xlbiwgJmVvdXRfbGVuLCAxLCBidWYpKSB7Ci0gICAgICAgICAgICBjb25maWdfcGVycm9yKCJpbnZhbGlkIEVuZ2luZUlEIGFyZ3VtZW50IHRvIC1lIik7Ci0gICAgICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOwotICAgICAgICAgICAgU05NUF9GUkVFKGVidWYpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgbmV3dXNlci0+ZW5naW5lSUQgPSBlYnVmOwotICAgICAgICBuZXd1c2VyLT5lbmdpbmVJRExlbiA9IGVvdXRfbGVuOwotICAgICAgICBjcCA9IGNvcHlfbndvcmQoY3AsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG5ld3VzZXItPmVuZ2luZUlEID0gc25tcHYzX2dlbmVyYXRlX2VuZ2luZUlEKCZyZXQpOwotICAgICAgICBpZiAocmV0ID09IDApIHsKLSAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbmV3dXNlci0+ZW5naW5lSURMZW4gPSByZXQ7Ci0gICAgfQotCi0gICAgbmV3dXNlci0+c2VjTmFtZSA9IHN0cmR1cChidWYpOwotICAgIG5ld3VzZXItPm5hbWUgPSBzdHJkdXAoYnVmKTsKLQotICAgIGlmICghY3ApCi0gICAgICAgIGdvdG8gYWRkOyAgICAgICAgICAgICAgIC8qIG5vIGF1dGhlbnRpY2F0aW9uIG9yIHByaXZhY3kgdHlwZSAqLwotCi0gICAgLyoKLSAgICAgKiBSRUFEOiBBdXRoZW50aWNhdGlvbiBUeXBlIAotICAgICAqLwotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfTUQ1Ci0gICAgaWYgKHN0cm5jbXAoY3AsICJNRDUiLCAzKSA9PSAwKSB7Ci0gICAgICAgIG1lbWNweShuZXd1c2VyLT5hdXRoUHJvdG9jb2wsIHVzbUhNQUNNRDVBdXRoUHJvdG9jb2wsCi0gICAgICAgICAgICAgICBzaXplb2YodXNtSE1BQ01ENUF1dGhQcm90b2NvbCkpOwotICAgIH0gZWxzZQotI2VuZGlmCi0gICAgICAgIGlmIChzdHJuY21wKGNwLCAiU0hBIiwgMykgPT0gMCkgewotICAgICAgICBtZW1jcHkobmV3dXNlci0+YXV0aFByb3RvY29sLCB1c21ITUFDU0hBMUF1dGhQcm90b2NvbCwKLSAgICAgICAgICAgICAgIHNpemVvZih1c21ITUFDU0hBMUF1dGhQcm90b2NvbCkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGNvbmZpZ19wZXJyb3IoIlVua25vd24gYXV0aGVudGljYXRpb24gcHJvdG9jb2wiKTsKLSAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNwID0gc2tpcF90b2tlbihjcCk7Ci0KLSAgICAvKgotICAgICAqIFJFQUQ6IEF1dGhlbnRpY2F0aW9uIFBhc3MgUGhyYXNlIG9yIGtleQotICAgICAqLwotICAgIGlmICghY3ApIHsKLSAgICAgICAgY29uZmlnX3BlcnJvcigibm8gYXV0aGVudGljYXRpb24gcGFzcyBwaHJhc2UiKTsKLSAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjcCA9IGNvcHlfbndvcmQoY3AsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwotICAgIGlmIChzdHJjbXAoYnVmLCItbSIpID09IDApIHsKLSAgICAgICAgLyogYSBtYXN0ZXIga2V5IGlzIHNwZWNpZmllZCAqLwotICAgICAgICBjcCA9IGNvcHlfbndvcmQoY3AsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwotICAgICAgICByZXQgPSBzaXplb2YodXNlcktleSk7Ci0gICAgICAgIHRtcHAgPSB1c2VyS2V5OwotICAgICAgICB1c2VyS2V5TGVuID0gMDsKLSAgICAgICAgaWYgKCFzbm1wX2hleF90b19iaW5hcnkoJnRtcHAsICZyZXQsICZ1c2VyS2V5TGVuLCAwLCBidWYpKSB7Ci0gICAgICAgICAgICBjb25maWdfcGVycm9yKCJpbnZhbGlkIGtleSB2YWx1ZSBhcmd1bWVudCB0byAtbSIpOwotICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoc3RyY21wKGJ1ZiwiLWwiKSAhPSAwKSB7Ci0gICAgICAgIC8qIGEgcGFzc3dvcmQgaXMgc3BlY2lmaWVkICovCi0gICAgICAgIHVzZXJLZXlMZW4gPSBzaXplb2YodXNlcktleSk7Ci0gICAgICAgIHJldDIgPSBnZW5lcmF0ZV9LdShuZXd1c2VyLT5hdXRoUHJvdG9jb2wsIG5ld3VzZXItPmF1dGhQcm90b2NvbExlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSBidWYsIHN0cmxlbihidWYpLCB1c2VyS2V5LCAmdXNlcktleUxlbik7Ci0gICAgICAgIGlmIChyZXQyICE9IFNOTVBFUlJfU1VDQ0VTUykgewotICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiY291bGQgbm90IGdlbmVyYXRlIHRoZSBhdXRoZW50aWNhdGlvbiBrZXkgZnJvbSB0aGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAic3VwcGxpZWQgcGFzcyBwaHJhc2UuIik7Ci0gICAgICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSAgICAgICAgCi0gICAgICAgIAotICAgIC8qCi0gICAgICogQW5kIHR1cm4gaXQgaW50byBhIGxvY2FsaXplZCBrZXkgCi0gICAgICovCi0gICAgcmV0MiA9IHNjX2dldF9wcm9wZXJsZW5ndGgobmV3dXNlci0+YXV0aFByb3RvY29sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3VzZXItPmF1dGhQcm90b2NvbExlbik7Ci0gICAgaWYgKHJldDIgPD0gMCkgewotICAgICAgICBjb25maWdfcGVycm9yKCJDb3VsZCBub3QgZ2V0IHByb3BlciBhdXRoZW50aWNhdGlvbiBwcm90b2NvbCBrZXkgbGVuZ3RoIik7Ci0JdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBuZXd1c2VyLT5hdXRoS2V5ID0gKHVfY2hhciAqKSBtYWxsb2MocmV0Mik7Ci0KLSAgICBpZiAoc3RyY21wKGJ1ZiwiLWwiKSA9PSAwKSB7Ci0gICAgICAgIC8qIGEgbG9jYWwga2V5IGlzIGRpcmVjdGx5IHNwZWNpZmllZCAqLwotICAgICAgICBjcCA9IGNvcHlfbndvcmQoY3AsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwotICAgICAgICBuZXd1c2VyLT5hdXRoS2V5TGVuID0gMDsKLSAgICAgICAgcmV0ID0gcmV0MjsKLSAgICAgICAgaWYgKCFzbm1wX2hleF90b19iaW5hcnkoJm5ld3VzZXItPmF1dGhLZXksICZyZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXd1c2VyLT5hdXRoS2V5TGVuLCAwLCBidWYpKSB7Ci0gICAgICAgICAgICBjb25maWdfcGVycm9yKCJpbnZhbGlkIGtleSB2YWx1ZSBhcmd1bWVudCB0byAtbCIpOwotICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAocmV0ICE9IG5ld3VzZXItPmF1dGhLZXlMZW4pIHsKLSAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoImltcHJvcGVyIGtleSBsZW5ndGggdG8gLWwiKTsKLSAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBuZXd1c2VyLT5hdXRoS2V5TGVuID0gcmV0MjsKLSAgICAgICAgcmV0MiA9IGdlbmVyYXRlX2t1bChuZXd1c2VyLT5hdXRoUHJvdG9jb2wsIG5ld3VzZXItPmF1dGhQcm90b2NvbExlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3VzZXItPmVuZ2luZUlELCBuZXd1c2VyLT5lbmdpbmVJRExlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJLZXksIHVzZXJLZXlMZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBuZXd1c2VyLT5hdXRoS2V5LCAmbmV3dXNlci0+YXV0aEtleUxlbik7Ci0gICAgICAgIGlmIChyZXQyICE9IFNOTVBFUlJfU1VDQ0VTUykgewotICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiY291bGQgbm90IGdlbmVyYXRlIGxvY2FsaXplZCBhdXRoZW50aWNhdGlvbiBrZXkgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiKEt1bCkgZnJvbSB0aGUgbWFzdGVyIGtleSAoS3UpLiIpOwotICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICghY3ApCi0gICAgICAgIGdvdG8gYWRkOyAgICAgICAgICAgICAgIC8qIG5vIHByaXZhY3kgdHlwZSAod2hpY2ggaXMgbGVnYWwpICovCi0KLSAgICAvKgotICAgICAqIFJFQUQ6IFByaXZhY3kgVHlwZSAKLSAgICAgKi8KLSAgICB0ZXN0Y2FzZSA9IDA7Ci0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9ERVMKLSAgICBpZiAoc3RybmNtcChjcCwgIkRFUyIsIDMpID09IDApIHsKLSAgICAgICAgbWVtY3B5KG5ld3VzZXItPnByaXZQcm90b2NvbCwgdXNtREVTUHJpdlByb3RvY29sLAotICAgICAgICAgICAgICAgc2l6ZW9mKHVzbURFU1ByaXZQcm90b2NvbCkpOwotICAgICAgICB0ZXN0Y2FzZSA9IDE7Ci0JLyogREVTIHVzZXMgYSAxMjggYml0IGtleSwgNjQgYml0cyBvZiB3aGljaCBpcyBhIHNhbHQgKi8KLQlwcml2S2V5TGVuID0gMTY7Ci0gICAgfQotI2VuZGlmCi0jaWZkZWYgSEFWRV9BRVMKLSAgICBpZiAoc3RybmNtcChjcCwgIkFFUzEyOCIsIDYpID09IDAgfHwKLSAgICAgICAgICAgICAgIHN0cm5jbXAoY3AsICJBRVMiLCAzKSA9PSAwKSB7Ci0gICAgICAgIG1lbWNweShuZXd1c2VyLT5wcml2UHJvdG9jb2wsIHVzbUFFU1ByaXZQcm90b2NvbCwKLSAgICAgICAgICAgICAgIHNpemVvZih1c21BRVNQcml2UHJvdG9jb2wpKTsKLSAgICAgICAgdGVzdGNhc2UgPSAxOwotCXByaXZLZXlMZW4gPSAxNjsKLSAgICB9Ci0jZW5kaWYKLSAgICBpZiAodGVzdGNhc2UgPT0gMCkgewotICAgICAgICBjb25maWdfcGVycm9yKCJVbmtub3duIHByaXZhY3kgcHJvdG9jb2wiKTsKLSAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNwID0gc2tpcF90b2tlbihjcCk7Ci0gICAgLyoKLSAgICAgKiBSRUFEOiBFbmNyeXB0aW9uIFBhc3MgUGhyYXNlIG9yIGtleQotICAgICAqLwotICAgIGlmICghY3ApIHsKLSAgICAgICAgLyoKLSAgICAgICAgICogYXNzdW1lIHRoZSBzYW1lIGFzIHRoZSBhdXRoZW50aWNhdGlvbiBrZXkgCi0gICAgICAgICAqLwotICAgICAgICBtZW1kdXAoJm5ld3VzZXItPnByaXZLZXksIG5ld3VzZXItPmF1dGhLZXksIG5ld3VzZXItPmF1dGhLZXlMZW4pOwotICAgICAgICBuZXd1c2VyLT5wcml2S2V5TGVuID0gbmV3dXNlci0+YXV0aEtleUxlbjsKLSAgICB9IGVsc2UgewotICAgICAgICBjcCA9IGNvcHlfbndvcmQoY3AsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwotICAgICAgICAKLSAgICAgICAgaWYgKHN0cmNtcChidWYsIi1tIikgPT0gMCkgewotICAgICAgICAgICAgLyogYSBtYXN0ZXIga2V5IGlzIHNwZWNpZmllZCAqLwotICAgICAgICAgICAgY3AgPSBjb3B5X253b3JkKGNwLCBidWYsIHNpemVvZihidWYpKTsKLSAgICAgICAgICAgIHJldCA9IHNpemVvZih1c2VyS2V5KTsKLSAgICAgICAgICAgIHRtcHAgPSB1c2VyS2V5OwotICAgICAgICAgICAgdXNlcktleUxlbiA9IDA7Ci0gICAgICAgICAgICBpZiAoIXNubXBfaGV4X3RvX2JpbmFyeSgmdG1wcCwgJnJldCwgJnVzZXJLZXlMZW4sIDAsIGJ1ZikpIHsKLSAgICAgICAgICAgICAgICBjb25maWdfcGVycm9yKCJpbnZhbGlkIGtleSB2YWx1ZSBhcmd1bWVudCB0byAtbSIpOwotICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKHN0cmNtcChidWYsIi1sIikgIT0gMCkgewotICAgICAgICAgICAgLyogYSBwYXNzd29yZCBpcyBzcGVjaWZpZWQgKi8KLSAgICAgICAgICAgIHVzZXJLZXlMZW4gPSBzaXplb2YodXNlcktleSk7Ci0gICAgICAgICAgICByZXQyID0gZ2VuZXJhdGVfS3UobmV3dXNlci0+YXV0aFByb3RvY29sLCBuZXd1c2VyLT5hdXRoUHJvdG9jb2xMZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopIGJ1Ziwgc3RybGVuKGJ1ZiksIHVzZXJLZXksICZ1c2VyS2V5TGVuKTsKLSAgICAgICAgICAgIGlmIChyZXQyICE9IFNOTVBFUlJfU1VDQ0VTUykgewotICAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoImNvdWxkIG5vdCBnZW5lcmF0ZSB0aGUgcHJpdmFjeSBrZXkgZnJvbSB0aGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cHBsaWVkIHBhc3MgcGhyYXNlLiIpOwotICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9ICAgICAgICAKLSAgICAgICAgCi0gICAgICAgIC8qCi0gICAgICAgICAqIEFuZCB0dXJuIGl0IGludG8gYSBsb2NhbGl6ZWQga2V5IAotICAgICAgICAgKi8KLSAgICAgICAgcmV0MiA9IHNjX2dldF9wcm9wZXJsZW5ndGgobmV3dXNlci0+YXV0aFByb3RvY29sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXd1c2VyLT5hdXRoUHJvdG9jb2xMZW4pOwotICAgICAgICBpZiAocmV0MiA8IDApIHsKLSAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoImNvdWxkIG5vdCBnZXQgcHJvcGVyIGtleSBsZW5ndGggdG8gdXNlIGZvciB0aGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpdmFjeSBhbGdvcml0aG0uIik7Ci0gICAgICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG5ld3VzZXItPnByaXZLZXkgPSAodV9jaGFyICopIG1hbGxvYyhyZXQyKTsKLQotICAgICAgICBpZiAoc3RyY21wKGJ1ZiwiLWwiKSA9PSAwKSB7Ci0gICAgICAgICAgICAvKiBhIGxvY2FsIGtleSBpcyBkaXJlY3RseSBzcGVjaWZpZWQgKi8KLSAgICAgICAgICAgIGNwID0gY29weV9ud29yZChjcCwgYnVmLCBzaXplb2YoYnVmKSk7Ci0gICAgICAgICAgICByZXQgPSByZXQyOwotICAgICAgICAgICAgbmV3dXNlci0+cHJpdktleUxlbiA9IDA7Ci0gICAgICAgICAgICBpZiAoIXNubXBfaGV4X3RvX2JpbmFyeSgmbmV3dXNlci0+cHJpdktleSwgJnJldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXd1c2VyLT5wcml2S2V5TGVuLCAwLCBidWYpKSB7Ci0gICAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiaW52YWxpZCBrZXkgdmFsdWUgYXJndW1lbnQgdG8gLWwiKTsKLSAgICAgICAgICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG5ld3VzZXItPnByaXZLZXlMZW4gPSByZXQyOwotICAgICAgICAgICAgcmV0MiA9IGdlbmVyYXRlX2t1bChuZXd1c2VyLT5hdXRoUHJvdG9jb2wsIG5ld3VzZXItPmF1dGhQcm90b2NvbExlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXd1c2VyLT5lbmdpbmVJRCwgbmV3dXNlci0+ZW5naW5lSURMZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcktleSwgdXNlcktleUxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXd1c2VyLT5wcml2S2V5LCAmbmV3dXNlci0+cHJpdktleUxlbik7Ci0gICAgICAgICAgICBpZiAocmV0MiAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKLSAgICAgICAgICAgICAgICBjb25maWdfcGVycm9yKCJjb3VsZCBub3QgZ2VuZXJhdGUgbG9jYWxpemVkIHByaXZhY3kga2V5ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoS3VsKSBmcm9tIHRoZSBtYXN0ZXIga2V5IChLdSkuIik7Ci0gICAgICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoKG5ld3VzZXItPnByaXZLZXlMZW4gPj0gcHJpdktleUxlbikgfHwgKHByaXZLZXlMZW4gPT0gMCkpewotICAgICAgbmV3dXNlci0+cHJpdktleUxlbiA9IHByaXZLZXlMZW47Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgLyogVGhlIHByaXZLZXkgbGVuZ3RoIGlzIHNtYWxsZXIgdGhhbiByZXF1aXJlZCBieSBwcml2UHJvdG9jb2wgKi8KLSAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0gIGFkZDoKLSAgICB1c21fYWRkX3VzZXIobmV3dXNlcik7Ci0gICAgREVCVUdNU0dUTCgoInVzbVVzZXIiLCAiY3JlYXRlZCBhIG5ldyB1c2VyICVzIGF0ICIsIG5ld3VzZXItPnNlY05hbWUpKTsKLSAgICBERUJVR01TR0hFWCgoInVzbVVzZXIiLCBuZXd1c2VyLT5lbmdpbmVJRCwgbmV3dXNlci0+ZW5naW5lSURMZW4pKTsKLSAgICBERUJVR01TRygoInVzbVVzZXIiLCAiXG4iKSk7Ci19Ci0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLW8tKioqKioqCiAgKiBlbmdpbmVCb290c19jb25mCiAgKgpAQCAtMTExOSw5ICs3NDMsNyBAQAogICAgICAgICAvKgogICAgICAgICAgKiBTZWUgaWYgYWxyZWFkeSBzZXQgaWYgc28gZXJhc2UgJiByZWxlYXNlIGl0IAogICAgICAgICAgKi8KLSAgICAgICAgaWYgKE5VTEwgIT0gZW5naW5lSUROaWMpIHsKLSAgICAgICAgICAgIFNOTVBfRlJFRShlbmdpbmVJRE5pYyk7Ci0gICAgICAgIH0KKyAgICAgICAgU05NUF9GUkVFKGVuZ2luZUlETmljKTsKICAgICAgICAgZW5naW5lSUROaWMgPSAodV9jaGFyICopIG1hbGxvYyhzdHJsZW4oY3B0cikgKyAxKTsKICAgICAgICAgaWYgKE5VTEwgIT0gZW5naW5lSUROaWMpIHsKICAgICAgICAgICAgIHN0cmNweSgoY2hhciAqKSBlbmdpbmVJRE5pYywgY3B0cik7CkBAIC0xMjI2LDYgKzg0OCw4IEBACiAvKgogICogbWVyZWx5IGNhbGwgCiAgKi8KK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihnZXRfZW5naW5ldGltZV9hbGFybSwgbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfR0VUX0VOR0lORVRJTUVfQUxBUk0KIHZvaWQKIGdldF9lbmdpbmV0aW1lX2FsYXJtKHVuc2lnbmVkIGludCByZWdudW0sIHZvaWQgKmNsaWVudGFyZ3MpCiB7CkBAIC0xMjMzLDYgKzg1Nyw3IEBACiAgICAgICAgd3JhcHBpbmcgb2YgdGhlIHRpbWVzKCkgb3V0cHV0ICovCiAgICAgc25tcHYzX2xvY2FsX3NubXBFbmdpbmVUaW1lKCk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9HRVRfRU5HSU5FVElNRV9BTEFSTSAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi1vLSoqKioqKgogICogaW5pdF9zbm1wdjMKQEAgLTEyNDcsMTkgKzg3Miw3IEBACiB2b2lkCiBpbml0X3NubXB2Myhjb25zdCBjaGFyICp0eXBlKQogewotI2lmIFNOTVBfVVNFX1RJTUVTCi0gIHN0cnVjdCB0bXMgZHVtbXk7Ci0KLSAgLyogZml4bWU6IC0xIGlzIGZhdWx0IGNvZGUuLi4gKi8KLSAgc25tcHYzc3RhcnRDbG9jayA9IHRpbWVzKCZkdW1teSk7Ci0KLSAgLyogcmVtZW1iZXIgaG93IG1hbnkgdGlja3MgcGVyIHNlY29uZCB0aGVyZSBhcmUsIHNpbmNlIHRpbWVzKCkgcmV0dXJucyB0aGlzICovCi0KLSAgY2xvY2t0aWNrcyA9IHN5c2NvbmYoX1NDX0NMS19UQ0spOwotCi0jZW5kaWYgLyogU05NUF9VU0VfVElNRVMgKi8KLQotICAgIGdldHRpbWVvZmRheSgmc25tcHYzc3RhcnR0aW1lLCBOVUxMKTsKKyAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnNubXB2M3N0YXJ0dGltZSk7CiAKICAgICBpZiAoIXR5cGUpCiAgICAgICAgIHR5cGUgPSAiX19zbm1wYXBwX18iOwpAQCAtMTI4MSwxMyArODk0LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXB2M19zdG9yZSwgKHZvaWQgKikgc3RyZHVwKHR5cGUpKTsKIAogICAgIC8qCi0gICAgICogRnJlZSBzdHVmZiBhdCBzaHV0ZG93biB0aW1lCi0gICAgICovCi0gICAgc25tcF9yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0xJQlJBUlksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0NBTExCQUNLX1NIVVRET1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZV9lbmdpbmV0aW1lX29uX3NodXRkb3duLCBOVUxMKTsKLQotICAgIC8qCiAgICAgICogaW5pdGlhbGl6ZSBzdWJtb2R1bGVzIAogICAgICAqLwogICAgIC8qCkBAIC0xMzQ3LDMwICs5NTMsOSBAQAogICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJzbm1wIiwgImRlZlZlcnNpb24iLCB2ZXJzaW9uX2NvbmYsIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjF8MmN8MyIpOwogCi0gICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXAiLCAiZGVmQXV0aFR5cGUiLCBzbm1wdjNfYXV0aHR5cGVfY29uZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAiTUQ1fFNIQSIpOwotICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJzbm1wIiwgImRlZlByaXZUeXBlIiwgc25tcHYzX3ByaXZ0eXBlX2NvbmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSNpZmRlZiBIQVZFX0FFUwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJERVN8QUVTIik7Ci0jZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJERVMgKEFFUyBzdXBwb3J0IG5vdCBhdmFpbGFibGUpIik7Ci0jZW5kaWYKICAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigic25tcCIsICJkZWZTZWN1cml0eUxldmVsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wdjNfc2VjTGV2ZWxfY29uZiwgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9BdXRoTm9Qcml2fGF1dGhOb1ByaXZ8YXV0aFByaXYiKTsKLSAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcih0eXBlLCAidXNlclNldEF1dGhQYXNzIiwgdXNtX3NldF9wYXNzd29yZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKLSAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcih0eXBlLCAidXNlclNldFByaXZQYXNzIiwgdXNtX3NldF9wYXNzd29yZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKLSAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcih0eXBlLCAidXNlclNldEF1dGhLZXkiLCB1c21fc2V0X3Bhc3N3b3JkLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKHR5cGUsICJ1c2VyU2V0UHJpdktleSIsIHVzbV9zZXRfcGFzc3dvcmQsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIodHlwZSwgInVzZXJTZXRBdXRoTG9jYWxLZXkiLCB1c21fc2V0X3Bhc3N3b3JkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOwotICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKHR5cGUsICJ1c2VyU2V0UHJpdkxvY2FsS2V5IiwgdXNtX3NldF9wYXNzd29yZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKIH0KIAogLyoKQEAgLTE0MDUsMTIgKzk5MCwxNCBAQAogICAgICAgICBlbmdpbmVCb290cyA9IDE7CiAgICAgfQogCisjaWZkZWYgTkVUU05NUF9TRUNNT0RfVVNNCiAgICAgLyoKLSAgICAgKiBzZXQgb3VyIGxvY2FsIGVuZ2luZVRpbWUgaW4gdGhlIExDRCB0aW1pbmcgY2FjaGUgCisgICAgICogZm9yIFVTTSBzZXQgb3VyIGxvY2FsIGVuZ2luZVRpbWUgaW4gdGhlIExDRCB0aW1pbmcgY2FjaGUgCiAgICAgICovCiAgICAgc2V0X2VuZ2luZXRpbWUoY19lbmdpbmVJRCwgZW5naW5lSURMZW4sCiAgICAgICAgICAgICAgICAgICAgc25tcHYzX2xvY2FsX3NubXBFbmdpbmVCb290cygpLAogICAgICAgICAgICAgICAgICAgIHNubXB2M19sb2NhbF9zbm1wRW5naW5lVGltZSgpLCBUUlVFKTsKKyNlbmRpZiAvKiBORVRTTk1QX1NFQ01PRF9VU00gKi8KIAogICAgIFNOTVBfRlJFRShjX2VuZ2luZUlEKTsKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwpAQCAtMTUyNCwxMCArMTExMSw3IEBACiAgICAgaWYgKCFkZXN0IHx8ICFkZXN0bGVuKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmICgqZGVzdCkgewotICAgICAgICBTTk1QX0ZSRUUoKmRlc3QpOwotICAgICAgICAqZGVzdCA9IE5VTEw7Ci0gICAgfQorICAgIFNOTVBfRlJFRSgqZGVzdCk7CiAgICAgKmRlc3RsZW4gPSAwOwogCiAgICAgaWYgKHNyY2xlbiAmJiBzcmMpIHsKQEAgLTE1NzUsMzggKzExNTksMzMgQEAKIAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlbmQgc25tcHYzX2dlbmVyYXRlX2VuZ2luZUlEKCkgKi8KIAotLyoKLSAqIHNubXB2M19sb2NhbF9zbm1wRW5naW5lVGltZSgpOiByZXR1cm4gdGhlIG51bWJlciBvZiBzZWNvbmRzIHNpbmNlIHRoZQotICogc25tcHYzIGVuZ2luZSBsYXN0IGluY3JlbWVudGVkIGVuZ2luZV9ib290cyAKKy8qKgorICogUmV0dXJuIHRoZSB2YWx1ZSBvZiBzbm1wRW5naW5lVGltZS4gQWNjb3JkaW5nIHRvIFJGQyAzNDE0IHNubXBFbmdpbmVUaW1lCisgKiBpcyBhIDMxLWJpdCBjb3VudGVyLiBlbmdpbmVCb290cyBtdXN0IGJlIGluY3JlbWVudGVkIGV2ZXJ5IHRpbWUgdGhhdAorICogY291bnRlciB3cmFwcyBhcm91bmQuCisgKgorICogQHNlZSBTZWUgYWxzbyA8YSBocmVmPSJodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzNDE0Ij5SRkMgMzQxNDwvYT4uCisgKgorICogQG5vdGUgSXQgaXMgYXNzdW1lZCB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF0IGxlYXN0IG9uY2UgZXZlcnkKKyAqICAgMioqMzEgc2Vjb25kcy4KICAqLwogdV9sb25nCiBzbm1wdjNfbG9jYWxfc25tcEVuZ2luZVRpbWUodm9pZCkKIHsKLSNpZmRlZiBTTk1QX1VTRV9USU1FUwotICBzdHJ1Y3QgdG1zIGR1bW15OwotICBjbG9ja190IG5vdyA9IHRpbWVzKCZkdW1teSk7Ci0gIC8qIGZpeG1lOiAtMSBpcyBmYXVsdCBjb2RlLi4uICovCi0gIHVuc2lnbmVkIGludCByZXN1bHQ7CisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX0NIRUNLSU5HCisgICAgbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2FsY3VsYXRlX3NlY3RpbWVfZGlmZikKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTkcgKi8KIAotICBpZiAobm93IDwgc25tcHYzc3RhcnRDbG9jaykgewotICAgICAgcmVzdWx0ID0gVUlOVF9NQVggLSAoc25tcHYzc3RhcnRDbG9jayAtIG5vdyk7Ci0gIH0gZWxzZSB7Ci0gICAgICByZXN1bHQgPSBub3cgLSBzbm1wdjNzdGFydENsb2NrOwotICB9Ci0gIGlmIChyZXN1bHQgPCBsYXN0Y2FsbHRpbWUpIHsKLSAgICAgIC8qIHdyYXBwZWQgKi8KLSAgICAgIHdyYXBjb3VudGVyKys7Ci0gIH0KLSAgbGFzdGNhbGx0aW1lID0gcmVzdWx0OwotICByZXN1bHQgPSAgKFVJTlRfTUFYL2Nsb2NrdGlja3MpKndyYXBjb3VudGVyICsgcmVzdWx0L2Nsb2NrdGlja3M7Ci0KLSAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlIC8qICFTTk1QX1VTRV9USU1FUyAqLworICAgIHN0YXRpYyB1aW50MzJfdCBsYXN0X2VuZ2luZVRpbWU7CiAgICAgc3RydWN0IHRpbWV2YWwgIG5vdzsKKyAgICB1aW50MzJfdCBlbmdpbmVUaW1lOwogCi0gICAgZ2V0dGltZW9mZGF5KCZub3csIE5VTEwpOwotICAgIHJldHVybiBjYWxjdWxhdGVfc2VjdGltZV9kaWZmKCZub3csICZzbm1wdjNzdGFydHRpbWUpOwotI2VuZGlmIC8qIEhBVkVfU1lTX1RJTUVTX0ggKi8KKyAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJm5vdyk7CisgICAgZW5naW5lVGltZSA9IGNhbGN1bGF0ZV9zZWN0aW1lX2RpZmYoJm5vdywgJnNubXB2M3N0YXJ0dGltZSkgJiAweDdmZmZmZmZmTDsKKyAgICBpZiAoZW5naW5lVGltZSA8IGxhc3RfZW5naW5lVGltZSkKKyAgICAgICAgZW5naW5lQm9vdHMrKzsKKyAgICBsYXN0X2VuZ2luZVRpbWUgPSBlbmdpbmVUaW1lOworICAgIHJldHVybiBlbmdpbmVUaW1lOwogfQogCiAKQEAgLTE2NzgsMTggKzEyNTcsMTcgQEAKICNlbmRpZgogCiAjaWZkZWYgTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFCi0vKgotICogc25tcHYzX3NldF9lbmdpbmVCb290c0FuZFRpbWUoKTogdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBleGlzdC4gIEdvIGF3YXkuIAotICovCi0vKgotICogSXQgY2VydGFpbmx5IHNob3VsZCBuZXZlciBiZSB1c2VkLCB1bmxlc3MgaW4gYSB0ZXN0aW5nIHNjZW5lcm8sCi0gKiB3aGljaCBpcyB3aHkgaXQgd2FzIGNyZWF0ZWQgCisvKioKKyAqIFNldCBTTk1QdjMgZW5naW5lQm9vdHMgYW5kIHN0YXJ0IHRpbWUuCisgKgorICogQG5vdGUgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBleGlzdC4gR28gYXdheS4gSXQgY2VydGFpbmx5IHNob3VsZCBuZXZlciBiZQorICogICB1c2VkLCB1bmxlc3MgaW4gYSB0ZXN0aW5nIHNjZW5hcmlvLCB3aGljaCBpcyB3aHkgaXQgd2FzIGNyZWF0ZWQKICAqLwogdm9pZAogc25tcHYzX3NldF9lbmdpbmVCb290c0FuZFRpbWUoaW50IGJvb3RzLCBpbnQgdHRpbWUpCiB7CiAgICAgZW5naW5lQm9vdHMgPSBib290czsKLSAgICBnZXR0aW1lb2ZkYXkoJnNubXB2M3N0YXJ0dGltZSwgTlVMTCk7CisgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZzbm1wdjNzdGFydHRpbWUpOwogICAgIHNubXB2M3N0YXJ0dGltZS50dl9zZWMgLT0gdHRpbWU7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NubXBsaWIvc3lzdGVtLmMgYi9zbm1wbGliL3N5c3RlbS5jCmluZGV4IGVjZDU1OTguLjFkYmRlNTYgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc3lzdGVtLmMKKysrIGIvc25tcGxpYi9zeXN0ZW0uYwpAQCAtNDIsNiArNDIsNyBAQAogICogU3lzdGVtIGRlcGVuZGVudCByb3V0aW5lcyBnbyBoZXJlCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3R5cGUuaD4KICNpbmNsdWRlIDxlcnJuby5oPgpAQCAtMTYyLDYgKzE2MywxOSBAQAogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2VuZGlmCiAKKyNpZiBIQVZFX0FSUEFfSU5FVF9ICisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisjZW5kaWYKKworI2lmZGVmIEROU1NFQ19MT0NBTF9WQUxJREFUSU9OCisjaWYgMSAvKkhBVkVfQVJQQV9OQU1FU0VSX0gqLworI2luY2x1ZGUgPGFycGEvbmFtZXNlci5oPgorI2VuZGlmCisjaW5jbHVkZSA8dmFsaWRhdG9yL3ZhbGlkYXRvci5oPgorLyogTmV0U05NUCBhbmQgRE5TU0VDLVRvb2xzIGJvdGggZGVmaW5lIEZSRUUuIFdlJ2xsIG5vdCB1c2UgZWl0aGVyIGhlcmUuICovCisjdW5kZWYgRlJFRQorI2VuZGlmCisKICNpbmNsdWRlIDxuZXQtc25tcC90eXBlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL291dHB1dF9hcGkuaD4KICNpbmNsdWRlIDxuZXQtc25tcC91dGlsaXRpZXMuaD4KQEAgLTE3MCw2ICsxODQsMTYgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oPiAvKiBmb3IgZ2V0X3RlbXBfZmlsZV9wYXR0ZXJuKCkgKi8KIAorI2luY2x1ZGUgImluZXRfbnRvcC5oIgorCisvKiBOZXRTTk1QIGFuZCBETlNTRUMtVG9vbHMgYm90aCBkZWZpbmUgRlJFRS4gV2UnbGwgbm90IHVzZSBlaXRoZXIgaGVyZS4gKi8KKyN1bmRlZiBGUkVFCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzeXN0ZW1fYWxsLCBsaWJuZXRzbm1wKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodXNlcl9pbmZvcm1hdGlvbiwgc3lzdGVtX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjYWxjdWxhdGVfc2VjdGltZV9kaWZmLCBzeXN0ZW1fYWxsKQorCiAjaWZuZGVmIElGRl9MT09QQkFDSwogIwlkZWZpbmUgSUZGX0xPT1BCQUNLIDAKICNlbmRpZgpAQCAtMTgwLDYgKzIwNCwxMCBAQAogIyBkZWZpbmUgTE9PUEJBQ0sgICAgMHg3ZjAwMDAwMQogI2VuZGlmCiAKKyNpZm5kZWYgRUFJX0ZBSUwKKyMgZGVmaW5lIEVBSV9GQUlMICAgIC00ICAgIC8qIE5vbi1yZWNvdmVyYWJsZSBmYWlsdXJlIGluIG5hbWUgcmVzLiAgKi8KKyNlbmRpZgorCiAjaWYgZGVmaW5lZChIQVZFX0ZPUkspCiBzdGF0aWMgdm9pZAogX2RhZW1vbl9wcmVwKGludCBzdGRlcnJfbG9nKQpAQCAtNjg3LDEwICs3MTUsMjggQEAKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogISBXSU4zMiAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKKyNpZmRlZiBETlNTRUNfTE9DQUxfVkFMSURBVElPTgorc3RhdGljIHZhbF9jb250ZXh0X3QgKl92YWxfY29udGV4dCA9IE5VTEw7CisKK3N0YXRpYyB2YWxfY29udGV4dF90ICoKK25ldHNubXBfdmFsaWRhdG9yX2NvbnRleHQodm9pZCkKK3sKKyAgICBpZiAoTlVMTCA9PSBfdmFsX2NvbnRleHQpIHsKKyAgICAgICAgaW50IHJjOworICAgICAgICBjaGFyICphcHB0eXBlID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfQVBQVFlQRSk7CisgICAgICAgIERFQlVHTVNHVEwoKCJkbnM6c2VjOmNvbnRleHQiLCAiY3JlYXRpbmcgZG5zc2VjIGNvbnRleHQgZm9yICVzXG4iLAorICAgICAgICAgICAgICAgICAgICBhcHB0eXBlKSk7CisgICAgICAgIHJjID0gdmFsX2NyZWF0ZV9jb250ZXh0KGFwcHR5cGUsICZfdmFsX2NvbnRleHQpOworICAgIH0KKworICAgIHJldHVybiBfdmFsX2NvbnRleHQ7Cit9CisjZW5kaWYgLyogRE5TU0VDX0xPQ0FMX1ZBTElEQVRJT04gKi8KKwogaW50CiBuZXRzbm1wX2dldGhvc3RieW5hbWVfdjQoY29uc3QgY2hhciogbmFtZSwgaW5fYWRkcl90ICphZGRyX291dCkKIHsKLQogI2lmIEhBVkVfR0VUQUREUklORk8KICAgICBzdHJ1Y3QgYWRkcmluZm8gKmFkZHJzID0gTlVMTDsKICAgICBzdHJ1Y3QgYWRkcmluZm8gaGludDsKQEAgLTcwMiwxNyArNzQ4LDExIEBACiAgICAgaGludC5haV9zb2NrdHlwZSA9IFNPQ0tfREdSQU07CiAgICAgaGludC5haV9wcm90b2NvbCA9IDA7CiAKLSAgICBlcnIgPSBnZXRhZGRyaW5mbyhuYW1lLCBOVUxMLCAmaGludCwgJmFkZHJzKTsKKyAgICBlcnIgPSBuZXRzbm1wX2dldGFkZHJpbmZvKG5hbWUsIE5VTEwsICZoaW50LCAmYWRkcnMpOwogICAgIGlmIChlcnIgIT0gMCkgewotI2lmIEhBVkVfR0FJX1NUUkVSUk9SCi0gICAgICAgIHNubXBfbG9nKExPR19FUlIsICJnZXRhZGRyaW5mbzogJXMgJXNcbiIsIG5hbWUsCi0gICAgICAgICAgICAgICAgIGdhaV9zdHJlcnJvcihlcnIpKTsKLSNlbHNlCi0gICAgICAgIHNubXBfbG9nKExPR19FUlIsICJnZXRhZGRyaW5mbzogJXMgKGVycm9yICVkKVxuIiwgbmFtZSwKLSAgICAgICAgICAgICAgICAgZXJyKTsKLSNlbmRpZgogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorCiAgICAgaWYgKGFkZHJzICE9IE5VTEwpIHsKICAgICAgICAgbWVtY3B5KGFkZHJfb3V0LAogICAgICAgICAgICAgICAgJigoc3RydWN0IHNvY2thZGRyX2luICopIGFkZHJzLT5haV9hZGRyKS0+c2luX2FkZHIsCkBAIC03MjcsNyArNzY3LDcgQEAKICNlbGlmIEhBVkVfR0VUSE9TVEJZTkFNRQogICAgIHN0cnVjdCBob3N0ZW50ICpocCA9IE5VTEw7CiAKLSAgICBocCA9IGdldGhvc3RieW5hbWUobmFtZSk7CisgICAgaHAgPSBuZXRzbm1wX2dldGhvc3RieW5hbWUobmFtZSk7CiAgICAgaWYgKGhwID09IE5VTEwpIHsKICAgICAgICAgREVCVUdNU0dUTCgoImdldF90aGlzYWRkciIsCiAgICAgICAgICAgICAgICAgICAgICJob3N0bmFtZSAoY291bGRuJ3QgcmVzb2x2ZSlcbiIpKTsKQEAgLTc2Myw2ICs4MDMsMTk2IEBACiAjZW5kaWYKIH0KIAoraW50CituZXRzbm1wX2dldGFkZHJpbmZvKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnNlcnZpY2UsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBhZGRyaW5mbyAqaGludHMsIHN0cnVjdCBhZGRyaW5mbyAqKnJlcykKK3sKKyNpZiBIQVZFX0dFVEFERFJJTkZPCisgICAgc3RydWN0IGFkZHJpbmZvICphZGRycyA9IE5VTEw7CisgICAgc3RydWN0IGFkZHJpbmZvIGhpbnQ7CisgICAgaW50ICAgICAgICAgICAgIGVycjsKKyNpZmRlZiBETlNTRUNfTE9DQUxfVkFMSURBVElPTgorICAgIHZhbF9zdGF0dXNfdCAgICB2YWxfc3RhdHVzOworI2VuZGlmCisKKyAgICBERUJVR01TR1RMKCgiZG5zOmdldGFkZHJpbmZvIiwgImxvb2tpbmcgdXAgIikpOworICAgIGlmIChuYW1lKQorICAgICAgICBERUJVR01TRygoImRuczpnZXRhZGRyaW5mbyIsICJcIiVzXCIiLCBuYW1lKSk7CisgICAgZWxzZQorICAgICAgICBERUJVR01TRygoImRuczpnZXRhZGRyaW5mbyIsICI8TlVMTD4iKSk7CisKKyAgICBpZiAoc2VydmljZSkKKwlERUJVR01TRygoImRuczpnZXRhZGRyaW5mbyIsICI6XCIlc1wiIiwgc2VydmljZSkpOworCisgICAgaWYgKGhpbnRzKQorCURFQlVHTVNHKCgiZG5zOmdldGFkZHJpbmZvIiwgIiB3aXRoIGhpbnQgKHsgLi4uIH0pIikpOworICAgIGVsc2UKKwlERUJVR01TRygoImRuczpnZXRhZGRyaW5mbyIsICIgd2l0aCBubyBoaW50IikpOworCisgICAgREVCVUdNU0coKCJkbnM6Z2V0YWRkcmluZm8iLCAiXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSBoaW50cykgeworICAgICAgICBtZW1zZXQoJmhpbnQsIDAsIHNpemVvZiBoaW50KTsKKyAgICAgICAgaGludC5haV9mbGFncyA9IDA7CisgICAgICAgIGhpbnQuYWlfZmFtaWx5ID0gUEZfSU5FVDsKKyAgICAgICAgaGludC5haV9zb2NrdHlwZSA9IFNPQ0tfREdSQU07CisgICAgICAgIGhpbnQuYWlfcHJvdG9jb2wgPSAwOworICAgICAgICBoaW50cyA9ICZoaW50OworICAgIH0gZWxzZSB7CisgICAgICAgIG1lbWNweSgmaGludCwgaGludHMsIHNpemVvZiBoaW50KTsKKyAgICB9CisKKyNpZm5kZWYgRE5TU0VDX0xPQ0FMX1ZBTElEQVRJT04KKyAgICBlcnIgPSBnZXRhZGRyaW5mbyhuYW1lLCBOVUxMLCAmaGludCwgJmFkZHJzKTsKKyNlbHNlIC8qIEROU1NFQ19MT0NBTF9WQUxJREFUSU9OICovCisgICAgZXJyID0gdmFsX2dldGFkZHJpbmZvKG5ldHNubXBfdmFsaWRhdG9yX2NvbnRleHQoKSwgbmFtZSwgTlVMTCwgJmhpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZhZGRycywgJnZhbF9zdGF0dXMpOworICAgIERFQlVHTVNHVEwoKCJkbnM6c2VjOnZhbCIsICJlcnIgJWQsIHZhbF9zdGF0dXMgJWQgLyAlczsgdHJ1c3RlZDogJWRcbiIsCisgICAgICAgICAgICAgICAgZXJyLCB2YWxfc3RhdHVzLCBwX3ZhbF9zdGF0dXModmFsX3N0YXR1cyksCisgICAgICAgICAgICAgICAgdmFsX2lzdHJ1c3RlZCh2YWxfc3RhdHVzKSkpOworICAgIGlmICghIHZhbF9pc3RydXN0ZWQodmFsX3N0YXR1cykpIHsKKyAgICAgICAgaW50IHJjOworICAgICAgICBpZiAoKGVyciAhPSAwKSAmJiBWQUxfR0VUQUREUklORk9fSEFTX1NUQVRVUyhlcnIpKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywKKyAgICAgICAgICAgICAgICAgICAgICJXQVJOSU5HOiBVTlRSVVNURUQgZXJyb3IgaW4gRE5TIHJlc29sdXRpb24gZm9yICVzIVxuIiwKKyAgICAgICAgICAgICAgICAgICAgIG5hbWUpOworICAgICAgICAgICAgcmMgPSBFQUlfRkFJTDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLAorICAgICAgICAgICAgICAgICAgICAgIlRoZSBhdXRoZW50aWNpdHkgb2YgRE5TIHJlc3BvbnNlIGlzIG5vdCB0cnVzdGVkICglcylcbiIsCisgICAgICAgICAgICAgICAgICAgICBwX3ZhbF9zdGF0dXModmFsX3N0YXR1cykpOworICAgICAgICAgICAgcmMgPSBFQUlfTk9OQU1FOworICAgICAgICB9CisgICAgICAgIC8qKiBjb250aW51ZSBhbnl3YXlzIGlmIEROU1NFQ19XQVJOX09OTFkgaXMgc2V0ICovCisgICAgICAgIGlmICghbmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfRE5TU0VDX1dBUk5fT05MWSkpCisgICAgICAgICAgICByZXR1cm4gcmM7CisgICAgfQorCisKKyNlbmRpZiAvKiBETlNTRUNfTE9DQUxfVkFMSURBVElPTiAqLworICAgICpyZXMgPSBhZGRyczsKKyAgICBpZiAoKDAgPT0gZXJyKSAmJiBhZGRycyAmJiBhZGRycy0+YWlfYWRkcikgeworICAgICAgICBERUJVR01TR1RMKCgiZG5zOmdldGFkZHJpbmZvIiwgImFuc3dlciB7IEFGX0lORVQsICVzOiVodSB9XG4iLAorICAgICAgICAgICAgICAgICAgICBpbmV0X250b2EoKChzdHJ1Y3Qgc29ja2FkZHJfaW4qKWFkZHJzLT5haV9hZGRyKS0+c2luX2FkZHIpLAorICAgICAgICAgICAgICAgICAgICBudG9ocygoKHN0cnVjdCBzb2NrYWRkcl9pbiopYWRkcnMtPmFpX2FkZHIpLT5zaW5fcG9ydCkpKTsKKyAgICB9CisgICAgcmV0dXJuIGVycjsKKyNlbHNlCisgICAgTkVUU05NUF9MT0dPTkNFKChMT0dfRVJSLCAiZ2V0YWRkcmluZm8gbm90IGF2YWlsYWJsZSIpKTsKKyAgICByZXR1cm4gRUFJX0ZBSUw7CisjZW5kaWYgLyogZ2V0YWRkcmluZm8gKi8KK30KKworc3RydWN0IGhvc3RlbnQgKgorbmV0c25tcF9nZXRob3N0YnluYW1lKGNvbnN0IGNoYXIgKm5hbWUpCit7CisjaWYgSEFWRV9HRVRIT1NUQllOQU1FCisjaWZkZWYgRE5TU0VDX0xPQ0FMX1ZBTElEQVRJT04KKyAgICB2YWxfc3RhdHVzX3QgdmFsX3N0YXR1czsKKyNlbmRpZgorICAgIHN0cnVjdCBob3N0ZW50ICpocCA9IE5VTEw7CisKKyAgICBpZiAoTlVMTCA9PSBuYW1lKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIERFQlVHTVNHVEwoKCJkbnM6Z2V0aG9zdGJ5bmFtZSIsICJsb29raW5nIHVwICVzXG4iLCBuYW1lKSk7CisKKyNpZmRlZiBETlNTRUNfTE9DQUxfVkFMSURBVElPTgorICAgIGhwICA9IHZhbF9nZXRob3N0YnluYW1lKG5ldHNubXBfdmFsaWRhdG9yX2NvbnRleHQoKSwgbmFtZSwgJnZhbF9zdGF0dXMpOworICAgIERFQlVHTVNHVEwoKCJkbnM6c2VjOnZhbCIsICJ2YWxfc3RhdHVzICVkIC8gJXM7IHRydXN0ZWQ6ICVkXG4iLAorICAgICAgICAgICAgICAgIHZhbF9zdGF0dXMsIHBfdmFsX3N0YXR1cyh2YWxfc3RhdHVzKSwKKyAgICAgICAgICAgICAgICB2YWxfaXN0cnVzdGVkKHZhbF9zdGF0dXMpKSk7CisgICAgaWYgKCF2YWxfaXN0cnVzdGVkKHZhbF9zdGF0dXMpKSB7CisgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLAorICAgICAgICAgICAgICAgICAiVGhlIGF1dGhlbnRpY2l0eSBvZiBETlMgcmVzcG9uc2UgaXMgbm90IHRydXN0ZWQgKCVzKVxuIiwKKyAgICAgICAgICAgICAgICAgcF92YWxfc3RhdHVzKHZhbF9zdGF0dXMpKTsKKyAgICAgICAgLyoqIGNvbnRpbnVlIGFueXdheXMgaWYgRE5TU0VDX1dBUk5fT05MWSBpcyBzZXQgKi8KKyAgICAgICAgaWYgKCFuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9ETlNTRUNfV0FSTl9PTkxZKSkKKyAgICAgICAgICAgIGhwID0gTlVMTDsKKyAgICB9CisgICAgZWxzZSBpZiAodmFsX2RvZXNfbm90X2V4aXN0KHZhbF9zdGF0dXMpICYmIGhwKQorICAgICAgICBocCA9IE5VTEw7CisjZWxzZQorICAgIGhwID0gZ2V0aG9zdGJ5bmFtZShuYW1lKTsKKyNlbmRpZgorICAgIGlmIChocCA9PSBOVUxMKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJkbnM6Z2V0aG9zdGJ5bmFtZSIsCisgICAgICAgICAgICAgICAgICAgICJjb3VsZG4ndCByZXNvbHZlICVzXG4iLCBuYW1lKSk7CisgICAgfSBlbHNlIGlmIChocC0+aF9hZGRydHlwZSAhPSBBRl9JTkVUKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJkbnM6Z2V0aG9zdGJ5bmFtZSIsCisgICAgICAgICAgICAgICAgICAgICJ3YXJuaW5nOiByZXNwb25zZSBmb3IgJXMgbm90IEFGX0lORVQhXG4iLCBuYW1lKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImRuczpnZXRob3N0YnluYW1lIiwKKyAgICAgICAgICAgICAgICAgICAgIiVzIHJlc29sdmVkIG9rYXlcbiIsIG5hbWUpKTsKKyAgICB9CisgICAgcmV0dXJuIGhwOworI2Vsc2UKKyAgICBORVRTTk1QX0xPR09OQ0UoKExPR19FUlIsICJnZXRob3N0YnluYW1lIG5vdCBhdmFpbGFibGUiKSk7CisgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYgLyogSEFWRV9HRVRIT1NUQllOQU1FICovCit9CisKKy8qKgorICogTG9vayB1cCB0aGUgaG9zdCBuYW1lIHZpYSBETlMuCisgKgorICogQHBhcmFtW2luXSBhZGRyIFBvaW50ZXIgdG8gdGhlIGFkZHJlc3MgdG8gcmVzb2x2ZS4gVGhpcyBhcmd1bWVudCBwb2ludHMgZS5nLgorICogICB0byBhIHN0cnVjdCBpbl9hZGRyIGZvciBBRl9JTkVUIG9yIHRvIGEgc3RydWN0IGluNl9hZGRyIGZvciBBRl9JTkVUNi4KKyAqIEBwYXJhbVtpbl0gbGVuICBMZW5ndGggaW4gYnl0ZXMgb2YgKmFkZHIuCisgKiBAcGFyYW1baW5dIHR5cGUgQWRkcmVzcyBmYW1pbHksIGUuZy4gQUZfSU5FVCBvciBBRl9JTkVUNi4KKyAqCisgKiBAcmV0dXJuIFBvaW50ZXIgdG8gYSBob3N0ZW50IHN0cnVjdHVyZSBpZiBhZGRyZXNzIGxvb2t1cCBzdWNjZWVkZWQgb3IgTlVMTAorICogICBpZiB0aGUgbG9va3VwIGZhaWxlZC4KKyAqCisgKiBAc2VlIFNlZSBhbHNvIHRoZSBnZXRob3N0YnlhZGRyKCkgbWFuIHBhZ2UuCisgKi8KK3N0cnVjdCBob3N0ZW50ICoKK25ldHNubXBfZ2V0aG9zdGJ5YWRkcihjb25zdCB2b2lkICphZGRyLCBzb2NrbGVuX3QgbGVuLCBpbnQgdHlwZSkKK3sKKyNpZiBIQVZFX0dFVEhPU1RCWUFERFIKKyAgICBzdHJ1Y3QgaG9zdGVudCAqaHAgPSBOVUxMOworICAgIGNoYXIgYnVmWzY0XTsKKworICAgIERFQlVHTVNHVEwoKCJkbnM6Z2V0aG9zdGJ5YWRkciIsICJyZXNvbHZpbmcgJXNcbiIsCisgICAgICAgICAgICAgICAgaW5ldF9udG9wKHR5cGUsIGFkZHIsIGJ1Ziwgc2l6ZW9mKGJ1ZikpKSk7CisKKyNpZmRlZiBETlNTRUNfTE9DQUxfVkFMSURBVElPTgorICAgIHZhbF9zdGF0dXNfdCB2YWxfc3RhdHVzOworICAgIGhwID0gdmFsX2dldGhvc3RieWFkZHIobmV0c25tcF92YWxpZGF0b3JfY29udGV4dCgpLCBhZGRyLCBsZW4sIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFsX3N0YXR1cyk7CisgICAgREVCVUdNU0dUTCgoImRuczpzZWM6dmFsIiwgInZhbF9zdGF0dXMgJWQgLyAlczsgdHJ1c3RlZDogJWRcbiIsCisgICAgICAgICAgICAgICAgdmFsX3N0YXR1cywgcF92YWxfc3RhdHVzKHZhbF9zdGF0dXMpLAorICAgICAgICAgICAgICAgIHZhbF9pc3RydXN0ZWQodmFsX3N0YXR1cykpKTsKKyAgICBpZiAoIXZhbF9pc3RydXN0ZWQodmFsX3N0YXR1cykpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsCisgICAgICAgICAgICAgICAgICJUaGUgYXV0aGVudGljaXR5IG9mIEROUyByZXNwb25zZSBpcyBub3QgdHJ1c3RlZCAoJXMpXG4iLAorICAgICAgICAgICAgICAgICBwX3ZhbF9zdGF0dXModmFsX3N0YXR1cykpOworICAgICAgICAvKiogY29udGludWUgYW55d2F5cyBpZiBETlNTRUNfV0FSTl9PTkxZIGlzIHNldCAqLworICAgICAgICBpZiAoIW5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0ROU1NFQ19XQVJOX09OTFkpKQorICAgICAgICAgICAgaHAgPSBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmICh2YWxfZG9lc19ub3RfZXhpc3QodmFsX3N0YXR1cykgJiYgaHApCisgICAgICAgIGhwID0gTlVMTDsKKyNlbHNlCisgICAgaHAgPSBnZXRob3N0YnlhZGRyKGFkZHIsIGxlbiwgdHlwZSk7CisjZW5kaWYKKyAgICBpZiAoaHAgPT0gTlVMTCkgeworICAgICAgICBERUJVR01TR1RMKCgiZG5zOmdldGhvc3RieWFkZHIiLCAiY291bGRuJ3QgcmVzb2x2ZSBhZGRyXG4iKSk7CisgICAgfSBlbHNlIGlmIChocC0+aF9hZGRydHlwZSAhPSBBRl9JTkVUKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJkbnM6Z2V0aG9zdGJ5YWRkciIsCisgICAgICAgICAgICAgICAgICAgICJ3YXJuaW5nOiByZXNwb25zZSBmb3IgYWRkciBub3QgQUZfSU5FVCFcbiIpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBERUJVR01TR1RMKCgiZG5zOmdldGhvc3RieWFkZHIiLCAiYWRkciByZXNvbHZlZCBva2F5XG4iKSk7CisgICAgfQorICAgIHJldHVybiBocDsKKyNlbHNlCisgICAgTkVUU05NUF9MT0dPTkNFKChMT0dfRVJSLCAiZ2V0aG9zdGJ5YWRkciBub3QgYXZhaWxhYmxlIikpOworICAgIHJldHVybiBOVUxMOworI2VuZGlmCit9CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAjaWZuZGVmIEhBVkVfU1RSTkNBU0VDTVAKQEAgLTg1NSw0MSArMTA4NSwzMiBAQAogfQogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBIQVZFX1NFVEVOViAqLwogCi0vKiByZXR1cm5zIGNlbnRpc2Vjb25kcyAqLworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNhbGN1bGF0ZV90aW1lX2RpZmYsIG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NBTENVTEFURV9USU1FX0RJRkYKKy8qKgorICogQ29tcHV0ZSAoKm5vdyAtICp0aGVuKSBpbiBjZW50aXNlY29uZHMuCisgKi8KIGludAogY2FsY3VsYXRlX3RpbWVfZGlmZihjb25zdCBzdHJ1Y3QgdGltZXZhbCAqbm93LCBjb25zdCBzdHJ1Y3QgdGltZXZhbCAqdGhlbikKIHsKLSAgICBzdHJ1Y3QgdGltZXZhbCAgdG1wLCBkaWZmOwotICAgIG1lbWNweSgmdG1wLCBub3csIHNpemVvZihzdHJ1Y3QgdGltZXZhbCkpOwotICAgIHRtcC50dl9zZWMtLTsKLSAgICB0bXAudHZfdXNlYyArPSAxMDAwMDAwTDsKLSAgICBkaWZmLnR2X3NlYyA9IHRtcC50dl9zZWMgLSB0aGVuLT50dl9zZWM7Ci0gICAgZGlmZi50dl91c2VjID0gdG1wLnR2X3VzZWMgLSB0aGVuLT50dl91c2VjOwotICAgIGlmIChkaWZmLnR2X3VzZWMgPiAxMDAwMDAwTCkgewotICAgICAgICBkaWZmLnR2X3VzZWMgLT0gMTAwMDAwMEw7Ci0gICAgICAgIGRpZmYudHZfc2VjKys7Ci0gICAgfQotICAgIHJldHVybiAoKGRpZmYudHZfc2VjICogMTAwKSArIChkaWZmLnR2X3VzZWMgLyAxMDAwMCkpOwotfQorICAgIHN0cnVjdCB0aW1ldmFsICBkaWZmOwogCi0vKiByZXR1cm5zIGRpZmYgaW4gcm91bmRlZCBzZWNvbmRzICovCisgICAgTkVUU05NUF9USU1FUlNVQihub3csIHRoZW4sICZkaWZmKTsKKyAgICByZXR1cm4gKGludCkoZGlmZi50dl9zZWMgKiAxMDAgKyBkaWZmLnR2X3VzZWMgLyAxMDAwMCk7Cit9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DQUxDVUxBVEVfVElNRV9ESUZGICovCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DQUxDVUxBVEVfU0VDVElNRV9ESUZGCisvKiogQ29tcHV0ZSByb3VuZGVkICgqbm93IC0gKnRoZW4pIGluIHNlY29uZHMuICovCiB1X2ludAogY2FsY3VsYXRlX3NlY3RpbWVfZGlmZihjb25zdCBzdHJ1Y3QgdGltZXZhbCAqbm93LCBjb25zdCBzdHJ1Y3QgdGltZXZhbCAqdGhlbikKIHsKLSAgICBzdHJ1Y3QgdGltZXZhbCAgdG1wLCBkaWZmOwotICAgIG1lbWNweSgmdG1wLCBub3csIHNpemVvZihzdHJ1Y3QgdGltZXZhbCkpOwotICAgIHRtcC50dl9zZWMtLTsKLSAgICB0bXAudHZfdXNlYyArPSAxMDAwMDAwTDsKLSAgICBkaWZmLnR2X3NlYyA9IHRtcC50dl9zZWMgLSB0aGVuLT50dl9zZWM7Ci0gICAgZGlmZi50dl91c2VjID0gdG1wLnR2X3VzZWMgLSB0aGVuLT50dl91c2VjOwotICAgIGlmIChkaWZmLnR2X3VzZWMgPj0gMTAwMDAwMEwpIHsKLSAgICAgICAgZGlmZi50dl91c2VjIC09IDEwMDAwMDBMOwotICAgICAgICBkaWZmLnR2X3NlYysrOwotICAgIH0KLSAgICBpZiAoZGlmZi50dl91c2VjID49IDUwMDAwMEwpCi0gICAgICAgIHJldHVybiBkaWZmLnR2X3NlYyArIDE7Ci0gICAgcmV0dXJuICBkaWZmLnR2X3NlYzsKKyAgICBzdHJ1Y3QgdGltZXZhbCAgZGlmZjsKKworICAgIE5FVFNOTVBfVElNRVJTVUIobm93LCB0aGVuLCAmZGlmZik7CisgICAgcmV0dXJuIGRpZmYudHZfc2VjICsgKGRpZmYudHZfdXNlYyA+PSA1MDAwMDBMKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NBTENVTEFURV9TRUNUSU1FX0RJRkYgKi8KIAogI2lmbmRlZiBIQVZFX1NUUkNBU0VTVFIKIC8qCkBAIC0xMTQ1LDYgKzEzNjYsMTcgQEAKICNlbmRpZgogfQogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc3RyX3RvX3VpZCwgdXNlcl9pbmZvcm1hdGlvbikKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVFJfVE9fVUlECisvKioKKyAqIENvbnZlcnQgYSB1c2VyIG5hbWUgb3IgbnVtYmVyIGludG8gbnVtZXJpYyBmb3JtLgorICoKKyAqIEBwYXJhbVtpbl0gdXNlcm9ydWlkIEVpdGhlciBhIFVuaXggdXNlciBuYW1lIG9yIHRoZSBBU0NJSSByZXByZXNlbnRhdGlvbgorICogICBvZiBhIHVzZXIgbnVtYmVyLgorICoKKyAqIEByZXR1cm4gRWl0aGVyIGEgdXNlciBudW1iZXIgPiAwIG9yIDAgaWYgdXNlcm9ydWlkIGlzIG5vdCBhIHZhbGlkIHVzZXIKKyAqICAgbmFtZSwgbm90IGEgdmFsaWQgdXNlciBudW1iZXIgb3IgdGhlIG5hbWUgb2YgdGhlIHJvb3QgdXNlci4KKyAqLwogaW50IG5ldHNubXBfc3RyX3RvX3VpZChjb25zdCBjaGFyICp1c2Vyb3J1aWQpIHsKICAgICBpbnQgdWlkOwogI2lmIEhBVkVfR0VUUFdOQU0gJiYgSEFWRV9QV0RfSApAQCAtMTE1MywzNyArMTM4NSw0OSBAQAogCiAgICAgdWlkID0gYXRvaSh1c2Vyb3J1aWQpOwogCi0gICAgaWYgKCB1aWQgPT0gMCApIHsKKyAgICBpZiAodWlkID09IDApIHsKICNpZiBIQVZFX0dFVFBXTkFNICYmIEhBVkVfUFdEX0gKLSAgICAgICAgcHdkID0gZ2V0cHduYW0oIHVzZXJvcnVpZCApOwotICAgICAgICBpZiAocHdkKQotICAgICAgICAgICAgdWlkID0gcHdkLT5wd191aWQ7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgcHdkID0gZ2V0cHduYW0odXNlcm9ydWlkKTsKKyAgICAgICAgdWlkID0gcHdkID8gcHdkLT5wd191aWQgOiAwOworICAgICAgICBlbmRwd2VudCgpOwogI2VuZGlmCisgICAgICAgIGlmICh1aWQgPT0gMCkKICAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAiQ2FuJ3QgaWRlbnRpZnkgdXNlciAoJXMpLlxuIiwgdXNlcm9ydWlkKTsKICAgICB9CiAgICAgcmV0dXJuIHVpZDsKICAgICAKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUUl9UT19VSUQgKi8KIAotaW50IG5ldHNubXBfc3RyX3RvX2dpZChjb25zdCBjaGFyICpncm91cG9yZ2lkKSB7CituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc3RyX3RvX2dpZCwgdXNlcl9pbmZvcm1hdGlvbikKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVFJfVE9fR0lECisvKioKKyAqIENvbnZlcnQgYSBncm91cCBuYW1lIG9yIG51bWJlciBpbnRvIG51bWVyaWMgZm9ybS4KKyAqCisgKiBAcGFyYW1baW5dIGdyb3Vwb3JnaWQgRWl0aGVyIGEgVW5peCBncm91cCBuYW1lIG9yIHRoZSBBU0NJSSByZXByZXNlbnRhdGlvbgorICogICBvZiBhIGdyb3VwIG51bWJlci4KKyAqCisgKiBAcmV0dXJuIEVpdGhlciBhIGdyb3VwIG51bWJlciA+IDAgb3IgMCBpZiBncm91cG9yZ2lkIGlzIG5vdCBhIHZhbGlkIGdyb3VwCisgKiAgIG5hbWUsIG5vdCBhIHZhbGlkIGdyb3VwIG51bWJlciBvciB0aGUgcm9vdCBncm91cC4KKyAqLworaW50IG5ldHNubXBfc3RyX3RvX2dpZChjb25zdCBjaGFyICpncm91cG9yZ2lkKQorewogICAgIGludCBnaWQ7Ci0jaWYgSEFWRV9HRVRHUk5BTSAmJiBIQVZFX0dSUF9ICi0gICAgc3RydWN0IGdyb3VwICAqZ3JwOwotI2VuZGlmCiAKICAgICBnaWQgPSBhdG9pKGdyb3Vwb3JnaWQpOwogCi0gICAgaWYgKCBnaWQgPT0gMCApIHsKKyAgICBpZiAoZ2lkID09IDApIHsKICNpZiBIQVZFX0dFVEdSTkFNICYmIEhBVkVfR1JQX0gKLSAgICAgICAgZ3JwID0gZ2V0Z3JuYW0oIGdyb3Vwb3JnaWQgKTsKLSAgICAgICAgaWYgKGdycCkKLSAgICAgICAgICAgIGdpZCA9IGdycC0+Z3JfZ2lkOwotICAgICAgICBlbHNlCisgICAgICAgIHN0cnVjdCBncm91cCAgKmdycDsKKworICAgICAgICBncnAgPSBnZXRncm5hbShncm91cG9yZ2lkKTsKKyAgICAgICAgZ2lkID0gZ3JwID8gZ3JwLT5ncl9naWQgOiAwOworICAgICAgICBlbmRncmVudCgpOwogI2VuZGlmCi0gICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIkNhbid0IGlkZW50aWZ5IGdyb3VwICglcykuXG4iLAotICAgICAgICAgICAgICAgICAgICAgZ3JvdXBvcmdpZCk7CisgICAgICAgIGlmIChnaWQgPT0gMCkKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAiQ2FuJ3QgaWRlbnRpZnkgZ3JvdXAgKCVzKS5cbiIsIGdyb3Vwb3JnaWQpOwogICAgIH0KIAogICAgIHJldHVybiBnaWQ7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVFJfVE9fR0lEICovCmRpZmYgLS1naXQgYS9zbm1wbGliL3Rlc3RfYmluYXJ5X2FycmF5LmMgYi9zbm1wbGliL3Rlc3RfYmluYXJ5X2FycmF5LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0YjFmMGUuLjAwMDAwMDAKLS0tIGEvc25tcGxpYi90ZXN0X2JpbmFyeV9hcnJheS5jCisrKyAvZGV2L251bGwKQEAgLTEsMTcxICswLDAgQEAKLSNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KLQotI2lmIEhBVkVfSU9fSAotI2luY2x1ZGUgPGlvLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzdGRpby5oPgotI2lmIEhBVkVfU1RETElCX0gKLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNlbmRpZgotI2lmIEhBVkVfTUFMTE9DX0gKLSNpbmNsdWRlIDxtYWxsb2MuaD4KLSNlbmRpZgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmIEhBVkVfU1RSSU5HX0gKLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNlbHNlCi0jaW5jbHVkZSA8c3RyaW5ncy5oPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL3R5cGVzLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5Lmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS90b29scy5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaD4KLQotI2RlZmluZSBURVNUX1NJWkUgNwotCi12b2lkCi1wcmludF9pbnQobmV0c25tcF9pbmRleCAqaSwgdm9pZCAqdikKLXsKLSAgICBwcmludGYoIml0ZW0gJXAgPSAlbGRcbiIsIGksIGktPm9pZHNbMF0pOwotfQotCi1pbnQKLXRlc3RfaW50KHZvaWQpCi17Ci0gICAgb2lkIG8xID0gMTsKLSAgICBvaWQgbzIgPSAyOwotICAgIG9pZCBvMyA9IDY7Ci0gICAgb2lkIG80ID0gODsKLSAgICBvaWQgbzUgPSA5OwotICAgIG9pZCBveCA9IDc7Ci0gICAgb2lkIG95ID0gMTA7Ci0gICAgbmV0c25tcF9pbmRleCBpMSxpMixpMyxpNCxpNSxpeCxpeSwgKmlwOwotICAgIG5ldHNubXBfaW5kZXggKmFbVEVTVF9TSVpFXSA9IHsgJmkxLCAmaTIsICZpMywgJml4LCAmaTQsICZpNSwgJml5IH07Ci0gICAgbmV0c25tcF9jb250YWluZXIgKmMgPSBuZXRzbm1wX2NvbnRhaW5lcl9nZXRfYmluYXJ5X2FycmF5KCk7Ci0gICAgaW50IGk7Ci0KLSAgICBjLT5jb21wYXJlID0gbmV0c25tcF9jb21wYXJlX25ldHNubXBfaW5kZXg7Ci0gICAgCi0gICAgaTEub2lkcyA9ICZvMTsKLSAgICBpMi5vaWRzID0gJm8yOwotICAgIGkzLm9pZHMgPSAmbzM7Ci0gICAgaTQub2lkcyA9ICZvNDsKLSAgICBpNS5vaWRzID0gJm81OwotICAgIGl4Lm9pZHMgPSAmb3g7Ci0gICAgaXkub2lkcyA9ICZveTsKLSAgICBpMS5sZW4gPSBpMi5sZW4gPSBpMy5sZW4gPSBpNC5sZW4gPSBpNS5sZW4gPSBpeC5sZW4gPSBpeS5sZW4gPSAxOwotCi0gICAgcHJpbnRmKCJDcmVhdGluZyBjb250YWluZXIuLi5cbiIpOwotCi0gICAgcHJpbnRmKCJJbnNlcnRpbmcgZGF0YS4uLlxuIik7Ci0gICAgQ09OVEFJTkVSX0lOU0VSVChjLCZpNCk7Ci0gICAgQ09OVEFJTkVSX0lOU0VSVChjLCZpMik7Ci0gICAgQ09OVEFJTkVSX0lOU0VSVChjLCZpMyk7Ci0gICAgQ09OVEFJTkVSX0lOU0VSVChjLCZpMSk7Ci0gICAgQ09OVEFJTkVSX0lOU0VSVChjLCZpNSk7Ci0KLSAgICBwcmludGYoIkZvciBlYWNoLi4uXG4iKTsKLSAgICBDT05UQUlORVJfRk9SX0VBQ0goYywgcHJpbnRfaW50LCBOVUxMKTsKLSAgICBwcmludGYoIkRvbmUuXG4iKTsKLQotICAgIHByaW50ZigiXG4iKTsKLSAgICBpcCA9IENPTlRBSU5FUl9GSVJTVChjKTsKLSAgICBwcmludGYoIkZpbmQgZmlyc3QgPSAlcCAlbGRcbiIsaXAsIGlwLT5vaWRzWzBdKTsKLSAgICB3aGlsZSggaXAgKSB7Ci0gICAgICAgIGlwID0gQ09OVEFJTkVSX05FWFQoYyxpcCk7Ci0gICAgICAgIGlmKGlwKQotICAgICAgICAgICAgcHJpbnRmKCJGaW5kIG5leHQgPSAlcCAlbGRcbiIsaXAsIGlwLT5vaWRzWzBdKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcHJpbnRmKCJGaW5kIG5leHQgPSAlc1xuIixpcCk7Ci0gICAgfQotCi0gICAgZm9yKCBpPTA7IGkgPCBURVNUX1NJWkU7ICsraSkgewotICAgICAgICBwcmludGYoIlxuIik7Ci0gICAgICAgIGlwID0gQ09OVEFJTkVSX0ZJTkQoYyxhW2ldKTsKLSAgICAgICAgcHJpbnRmKCJGaW5kICVsZCA9ICVwICVsZFxuIiwgYVtpXS0+b2lkc1swXSwgaXAsIGlwID8gaXAtPm9pZHNbMF0gOiAwKTsKLSAgICAgICAgaXAgPSBDT05UQUlORVJfTkVYVChjLGFbaV0pOwotICAgICAgICBwcmludGYoIk5leHQgJWxkID0gJXAgJWxkXG4iLCBhW2ldLT5vaWRzWzBdLCBpcCwgaXAgPyBpcC0+b2lkc1swXSA6IDApOwotICAgIH0KLQotICAgIHByaW50ZigiRG9uZS5cbiIpOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQKLXByaW50X3N0cmluZyhjaGFyICppLCB2b2lkICp2KQotewotICAgIHByaW50ZigiaXRlbSAlc1xuIiwgaSk7Ci19Ci0KLWludAotbXlfc3RyY21wKGNoYXIgKmxocywgY2hhciAqcmhzKQotewotICAgIGludCByYyA9IHN0cmNtcChsaHMscmhzKTsKLS8qICAgICAgcHJpbnRmKCIlcyAlZCAlc1xuIixsaHMsIHJjLCByaHMpOyAqLwotICAgIHJldHVybiByYzsKLX0KLQotaW50Ci10ZXN0X3N0cmluZygpCi17Ci0gICAgY29uc3QgY2hhciAqbzEgPSAiemVicmEiOwotICAgIGNvbnN0IGNoYXIgKm8yID0gImItdHdvIjsKLSAgICBjb25zdCBjaGFyICpvMyA9ICJiIjsKLSAgICBjb25zdCBjaGFyICpvNCA9ICJjZWRhciI7Ci0gICAgY29uc3QgY2hhciAqbzUgPSAiYWxwaGEiOwotICAgIGNvbnN0IGNoYXIgKm94ID0gImRldiI7Ci0gICAgY29uc3QgY2hhciAqb3kgPSAiYWEiOwotICAgIGNvbnN0IGNoYXIgKiBpcDsKLSAgICAKLSAgICBjb25zdCBjaGFyICphW1RFU1RfU0laRV0gPSB7IG8xLCBvMiwgbzMsIG94LCBvNCwgbzUsIG95IH07Ci0gICAgbmV0c25tcF9jb250YWluZXIgKmMgPSBuZXRzbm1wX2NvbnRhaW5lcl9nZXRfYmluYXJ5X2FycmF5KCk7Ci0gICAgaW50IGk7Ci0KLSAgICBjLT5jb21wYXJlID0gbXlfc3RyY21wOwotICAgIAotICAgIHByaW50ZigiQ3JlYXRpbmcgY29udGFpbmVyLi4uXG4iKTsKLQotICAgIHByaW50ZigiSW5zZXJ0aW5nIGRhdGEuLi5cbiIpOwotICAgIENPTlRBSU5FUl9JTlNFUlQoYyxvNCk7Ci0gICAgQ09OVEFJTkVSX0lOU0VSVChjLG8yKTsKLSAgICBDT05UQUlORVJfSU5TRVJUKGMsbzMpOwotICAgIENPTlRBSU5FUl9JTlNFUlQoYyxvMSk7Ci0gICAgQ09OVEFJTkVSX0lOU0VSVChjLG81KTsKLSAgICBwcmludGYoIlxuIik7Ci0gICAgcHJpbnRmKCJGb3IgZWFjaC4uLlxuIik7Ci0gICAgQ09OVEFJTkVSX0ZPUl9FQUNIKGMsIHByaW50X3N0cmluZywgTlVMTCk7Ci0gICAgcHJpbnRmKCJEb25lLlxuIik7Ci0KLSAgICBwcmludGYoIlxuIik7Ci0gICAgaXAgPSBDT05UQUlORVJfRklSU1QoYyk7Ci0gICAgcHJpbnRmKCJGaW5kIGZpcnN0ID0gJXNcbiIsaXApOwotICAgIHdoaWxlKCBpcCApIHsKLSAgICAgICAgaXAgPSBDT05UQUlORVJfTkVYVChjLGlwKTsKLSAgICAgICAgcHJpbnRmKCJGaW5kIG5leHQgPSAlc1xuIixpcCk7Ci0gICAgfQotCi0gICAgZm9yKCBpPTA7IGkgPCBURVNUX1NJWkU7ICsraSkgewotICAgICAgICBwcmludGYoIlxuIik7Ci0gICAgICAgIGlwID0gQ09OVEFJTkVSX0ZJTkQoYyxhW2ldKTsKLSAgICAgICAgcHJpbnRmKCJGaW5kICVzID0gJXNcbiIsIGFbaV0sIGlwKTsKLSAgICAgICAgaXAgPSBDT05UQUlORVJfTkVYVChjLGFbaV0pOwotICAgICAgICBwcmludGYoIk5leHQgJXMgPSAlc1xuIiwgYVtpXSwgaXApOwotICAgIH0KLQotICAgIHByaW50ZigiRG9uZS5cbiIpOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLWludAotbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCi17Ci0KLSAgICB0ZXN0X2ludCgpOwotICAgIHRlc3Rfc3RyaW5nKCk7Ci19CmRpZmYgLS1naXQgYS9zbm1wbGliL3RleHRfdXRpbHMuYyBiL3NubXBsaWIvdGV4dF91dGlscy5jCmluZGV4IDcxNDhkY2MuLjMyNTk2YmUgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvdGV4dF91dGlscy5jCisrKyBiL3NubXBsaWIvdGV4dF91dGlscy5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC00Miw3ICs0MywxNCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvZmlsZV91dGlscy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdGV4dF91dGlscy5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGV4dF91dGlscywgbGlibmV0c25tcCkKIAorbmV0c25tcF9mZWF0dXJlX3Byb3ZpZGUodGV4dF91dGlscykKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9URVhUX1VUSUxTCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShmaWxlX3V0aWxzKQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX1RFWFRfVVRJTFMgKi8KKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RFWFRfVVRJTFMKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgogICogUHJvdG90eXBlcwpAQCAtMTQ3LDYgKzE1NSw4IEBACiAgICAgcmV0dXJuIGM7CiB9CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0ZXh0X3Rva2VuX2NvbnRhaW5lcl9mcm9tX2ZpbGUsIG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RFWFRfVE9LRU5fQ09OVEFJTkVSX0ZST01fRklMRQogbmV0c25tcF9jb250YWluZXIgKgogbmV0c25tcF90ZXh0X3Rva2VuX2NvbnRhaW5lcl9mcm9tX2ZpbGUoY29uc3QgY2hhciAqZmlsZSwgdV9pbnQgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqY2luLCB2b2lkICpjb250ZXh0KQpAQCAtMTk5LDYgKzIwOSw3IEBACiAgICAgCiAgICAgcmV0dXJuIGM7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9URVhUX1RPS0VOX0NPTlRBSU5FUl9GUk9NX0ZJTEUgKi8KIAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTEwLDMgKzUyMSw2IEBACiAgICAgcmV0dXJuIFBNTFBfUkNfTUVNT1JZX1VTRUQ7CiB9CiAKKyNlbHNlICAvKiAhIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEVYVF9VVElMUyAqLworbmV0c25tcF9mZWF0dXJlX3VudXNlZCh0ZXh0X3V0aWxzKTsKKyNlbmRpZiAvKiAhIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEVYVF9VVElMUyAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi90b29scy5jIGIvc25tcGxpYi90b29scy5jCmluZGV4IGY0OTFlZTEuLjliY2I2ODggMTAwNjQ0Ci0tLSBhL3NubXBsaWIvdG9vbHMuYworKysgYi9zbm1wbGliL3Rvb2xzLmMKQEAgLTE0LDYgKzE0LDcgQEAKICNlbmRpZgogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTQ4LDYgKzQ5LDkgQEAKICNpZmRlZiBIQVZFX0FSUEFfSU5FVF9ICiAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CiAjZW5kaWYKKyNpZmRlZiBIQVZFX1ZBTEdSSU5EX01FTUNIRUNLX0gKKyNpbmNsdWRlIDx2YWxncmluZC9tZW1jaGVjay5oPgorI2VuZGlmCiAjaWZkZWYgY3lnd2luCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlmCkBAIC02OCw2ICs3MiwyMyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvbWliLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zY2FwaS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodG9vbHNfYWxsLCBsaWJuZXRzbm1wKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobWVtb3J5X3dyYXBwZXJzLCB0b29sc19hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodmFsZ3JpbmQsIHRvb2xzX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzdHJpbmdfdGltZV90b19zZWNzLCB0b29sc19hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobmV0c25tcF9jaGVja19kZWZpbmVkbmVzcywgdmFsZ3JpbmQpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1YXRpbWVfcmVhZHksIG5ldHNubXBfdW51c2VkKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRpbWV2YWxfdHRpY2tzLCBuZXRzbm1wX3VudXNlZCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG1lbW9yeV9zdHJkdXAsIG1lbW9yeV93cmFwcGVycykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihtZW1vcnlfY2FsbG9jLCBtZW1vcnlfd3JhcHBlcnMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobWVtb3J5X21hbGxvYywgbWVtb3J5X3dyYXBwZXJzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG1lbW9yeV9yZWFsbG9jLCBtZW1vcnlfd3JhcHBlcnMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobWVtb3J5X2ZyZWUsIG1lbW9yeV93cmFwcGVycykKKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX01FTU9SWV9XUkFQUEVSUwogLyoqCiAgKiBUaGlzIGZ1bmN0aW9uIGlzIGEgd3JhcHBlciBmb3IgdGhlIHN0cmR1cCBmdW5jdGlvbi4KICAqCkBAIC03OCw2ICs5OSw4IEBACiB7CiAgICAgcmV0dXJuIHN0cmR1cChwdHIpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTUVNT1JZX1NUUkRVUCAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX01FTU9SWV9DQUxMT0MKIC8qKgogICogVGhpcyBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgZm9yIHRoZSBjYWxsb2MgZnVuY3Rpb24uCiAgKi8KQEAgLTg1LDcgKzEwOCw4IEBACiB7CiAgICAgcmV0dXJuIGNhbGxvYyhubWVtYiwgc2l6ZSk7CiB9Ci0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX01FTU9SWV9DQUxMT0MgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NRU1PUllfTUFMTE9DCiAvKioKICAqIFRoaXMgZnVuY3Rpb24gaXMgYSB3cmFwcGVyIGZvciB0aGUgbWFsbG9jIGZ1bmN0aW9uLgogICovCkBAIC05Myw3ICsxMTcsOCBAQAogewogICAgIHJldHVybiBtYWxsb2Moc2l6ZSk7CiB9Ci0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX01FTU9SWV9NQUxMT0MgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NRU1PUllfUkVBTExPQwogLyoqCiAgKiBUaGlzIGZ1bmN0aW9uIGlzIGEgd3JhcHBlciBmb3IgdGhlIHJlYWxsb2MgZnVuY3Rpb24uCiAgKi8KQEAgLTEwMSw3ICsxMjYsOCBAQAogewogICAgIHJldHVybiByZWFsbG9jKHB0ciwgc2l6ZSk7CiB9Ci0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX01FTU9SWV9SRUFMTE9DICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTUVNT1JZX0ZSRUUKIC8qKgogICogVGhpcyBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgZm9yIHRoZSBmcmVlIGZ1bmN0aW9uLgogICogSXQgY2FsbHMgZnJlZSBvbmx5IGlmIHRoZSBjYWxsaW5nIHBhcmFtZXRlciBoYXMgYSBub24temVybyB2YWx1ZS4KQEAgLTExMSw2ICsxMzcsNyBAQAogICAgIGlmIChwdHIpCiAgICAgICAgIGZyZWUocHRyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX01FTU9SWV9GUkVFICovCiAKIC8qKgogICogVGhpcyBmdW5jdGlvbiBpbmNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIHBvaW50ZWQgYXQgYnkgKmJ1Ziwgd2hpY2ggaXMKQEAgLTE4MCw2ICsyMDcsOSBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKCEqYnVmKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIHN0cmNweSgoY2hhciAqKSAoKmJ1ZiArICpvdXRfbGVuKSwgKGNvbnN0IGNoYXIgKikgcyk7CiAgICAgKm91dF9sZW4gKz0gc3RybGVuKChjaGFyICopICgqYnVmICsgKm91dF9sZW4pKTsKICAgICByZXR1cm4gMTsKQEAgLTIwMCw2ICsyMzAsNyBAQAogCiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVuZCBmcmVlX3plcm8oKSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVVNNX1NDQVBJCiAvKioKICAqIFJldHVybnMgcG9pbnRlciB0byBhbGxvY2FlZCAmIHNldCBidWZmZXIgb24gc3VjY2Vzcywgc2l6ZSBjb250YWlucwogICogbnVtYmVyIG9mIHJhbmRvbSBieXRlcyBmaWxsZWQuICBidWYgaXMgTlVMTCBhbmQgKnNpemUgc2V0IHRvIEtNVApAQCAtMjMwLDYgKzI2MSw3IEBACiAgICAgcmV0dXJuIGJ1ZjsKIAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlbmQgbWFsbG9jX3JhbmRvbSgpICovCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VU01fU0NBUEkgKi8KIAogLyoqIER1cGxpY2F0ZXMgYSBtZW1vcnkgYmxvY2suCiAgKiAgQ29waWVzIGEgZXhpc3RpbmcgbWVtb3J5IGxvY2F0aW9uIGZyb20gYSBwb2ludGVyIHRvIGFub3RoZXIsIG5ld2x5CkBAIC0yNTcsNiArMjg5LDM5IEBACiAKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZW5kIG1lbWR1cCgpICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ORVRTTk1QX0NIRUNLX0RFRklORURORVNTCisvKioKKyAqIFdoZW4gcnVubmluZyB1bmRlciBWYWxncmluZCwgY2hlY2sgd2hldGhlciBhbGwgYnl0ZXMgaW4gdGhlIHJhbmdlIFtwYWNrZXQsCisgKiBwYWNrZXQrbGVuZ3RoKSBhcmUgZGVmaW5lZC4gTGV0IFZhbGdyaW5kIHByaW50IGEgYmFja3RyYWNlIGlmIG9uZSBvciBtb3JlCisgKiBieXRlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgdmFsdWVzIGhhdmUgYmVlbiBmb3VuZC4gVGhpcyBmdW5jdGlvbiBjYW4gaGVscCB0bworICogZmluZCB0aGUgY2F1c2Ugb2YgdW5kZWZpbmVkIHZhbHVlIGVycm9ycyBpZiAtLXRyYWNrLW9yaWdpbnM9eWVzIGlzIG5vdAorICogc3VmZmljaWVudC4gRG9lcyBub3RoaW5nIHdoZW4gbm90IHJ1bm5pbmcgdW5kZXIgVmFsZ3JpbmQuCisgKgorICogTm90ZTogdGhpcyByZXF1aXJlcyBhIGZhaXJseSByZWNlbnQgdmFsZ3JpbmQuCisgKi8KK3ZvaWQKK25ldHNubXBfY2hlY2tfZGVmaW5lZG5lc3MoY29uc3Qgdm9pZCAqcGFja2V0LCBzaXplX3QgbGVuZ3RoKQoreworI2lmIGRlZmluZWQoX19WQUxHUklORF9NQUpPUl9fKSAmJiBkZWZpbmVkKF9fVkFMR1JJTkRfTUlOT1JfXykgICBcCisgICAgJiYgKF9fVkFMR1JJTkRfTUFKT1JfXyA+IDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfHwgKF9fVkFMR1JJTkRfTUFKT1JfXyA9PSAzICYmIF9fVkFMR1JJTkRfTUlOT1JfXyA+PSA2KSkKKworICAgIGlmIChSVU5OSU5HX09OX1ZBTEdSSU5EKSB7CisgICAgICAgIGludCBpOworICAgICAgICBjaGFyIHZiaXRzOworCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKFZBTEdSSU5EX0dFVF9WQklUUygoY29uc3QgY2hhciAqKXBhY2tldCArIGksICZ2Yml0cywgMSkgPT0gMQorICAgICAgICAgICAgICAgICYmIHZiaXRzKQorICAgICAgICAgICAgICAgIFZBTEdSSU5EX1BSSU5URl9CQUNLVFJBQ0UoIlVuZGVmaW5lZDogYnl0ZSAlZC8lZCIsIGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KWxlbmd0aCk7CisgICAgICAgIH0KKyAgICB9CisKKyNlbmRpZgorfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTkVUU05NUF9DSEVDS19ERUZJTkVETkVTUyAqLworCiAvKiogY29waWVzIGEgKHBvc3NpYmxlKSB1bnRlcm1pbmF0ZWQgc3RyaW5nIG9mIGEgZ2l2ZW4gbGVuZ3RoIGludG8gYQogICogIG5ldyBidWZmZXIgYW5kIG51bGwgdGVybWluYXRlcyBpdCBhcyB3ZWxsIChuZXcgYnVmZmVyIE1BWSBiZSBvbmUKICAqICBieXRlIGxvbmdlciB0byBhY2NvdW50IGZvciB0aGlzICovCkBAIC0zNzUsMTEgKzQ0MCwxNCBAQAogaGV4X3RvX2JpbmFyeTIoY29uc3QgdV9jaGFyICogaW5wdXQsIHNpemVfdCBsZW4sIGNoYXIgKipvdXRwdXQpCiB7CiAgICAgdV9pbnQgICAgICAgICAgIG9sZW4gPSAobGVuIC8gMikgKyAobGVuICUgMik7Ci0gICAgY2hhciAgICAgICAgICAgKnMgPSAoY2hhciAqKSBjYWxsb2MoMSwgKG9sZW4pID8gb2xlbiA6IDEpLCAqb3AgPSBzOworICAgIGNoYXIgICAgICAgICAgICpzID0gY2FsbG9jKDEsIG9sZW4gPyBvbGVuIDogMSksICpvcCA9IHM7CiAgICAgY29uc3QgdV9jaGFyICAgKmlwID0gaW5wdXQ7CiAKIAogICAgICpvdXRwdXQgPSBOVUxMOworICAgIGlmICghcykKKyAgICAgICAgZ290byBoZXhfdG9fYmluYXJ5Ml9xdWl0OworCiAgICAgKm9wID0gMDsKICAgICBpZiAobGVuICUgMikgewogICAgICAgICBpZiAoIWlzeGRpZ2l0KCppcCkpCkBAIC0zODgsNyArNDU2LDcgQEAKICAgICAgICAgaXArKzsKICAgICB9CiAKLSAgICB3aGlsZSAoaXAgLSBpbnB1dCA8IChpbnQpIGxlbikgeworICAgIHdoaWxlIChpcCA8IGlucHV0ICsgbGVuKSB7CiAgICAgICAgIGlmICghaXN4ZGlnaXQoKmlwKSkKICAgICAgICAgICAgIGdvdG8gaGV4X3RvX2JpbmFyeTJfcXVpdDsKICAgICAgICAgKm9wID0gSEVYMlZBTCgqaXApIDw8IDQ7CkBAIC04MTEsOCArODc5LDExIEBACiAKIAogLyoqCi0gKiBjcmVhdGUgYSBuZXcgdGltZSBtYXJrZXIuCi0gKiBOT1RFOiBDYWxsZXIgbXVzdCBmcmVlIHRpbWUgbWFya2VyIHdoZW4gbm8gbG9uZ2VyIG5lZWRlZC4KKyAqIENyZWF0ZSBhIG5ldyByZWFsLXRpbWUgbWFya2VyLgorICoKKyAqIFxkZXByZWNhdGVkIFVzZSBuZXRzbm1wX3NldF9tb25vdG9uaWNfbWFya2VyKCkgaW5zdGVhZC4KKyAqCisgKiBAbm90ZSBDYWxsZXIgbXVzdCBmcmVlIHRpbWUgbWFya2VyIHdoZW4gbm8gbG9uZ2VyIG5lZWRlZC4KICAqLwogbWFya2VyX3QKIGF0aW1lX25ld01hcmtlcih2b2lkKQpAQCAtODIzLDcgKzg5NCw4IEBACiB9CiAKIC8qKgotICogc2V0IGEgdGltZSBtYXJrZXIuCisgKiBTZXQgYSB0aW1lIG1hcmtlciB0byB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgcmVhbC10aW1lIGNsb2NrLgorICogXGRlcHJlY2F0ZWQgVXNlIG5ldHNubXBfc2V0X21vbm90b25pY19tYXJrZXIoKSBpbnN0ZWFkLgogICovCiB2b2lkCiBhdGltZV9zZXRNYXJrZXIobWFya2VyX3QgcG0pCkBAIC04MzQsOSArOTA2LDg4IEBACiAgICAgZ2V0dGltZW9mZGF5KChzdHJ1Y3QgdGltZXZhbCAqKSBwbSwgTlVMTCk7CiB9CiAKKy8qKgorICogUXVlcnkgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIG1vbm90b25pYyBjbG9jay4KKyAqCisgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIGEgbW9ub3RvbmljIGNsb2NrIGlmIHN1Y2ggYSBjbG9jayBpcyBwcm92aWRlZCBieQorICogdGhlIG9wZXJhdGluZyBzeXN0ZW0gb3IgdGhlIHdhbGwgY2xvY2sgdGltZSBpZiBubyBzdWNoIGNsb2NrIGlzIHByb3ZpZGVkIGJ5CisgKiB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gQSBtb25vdG9uaWMgY2xvY2sgaXMgYSBjbG9jayB0aGF0IGlzIG5ldmVyIGFkanVzdGVkCisgKiBiYWNrd2FyZHMgYW5kIHRoYXQgcHJvY2VlZHMgYXQgdGhlIHNhbWUgcmF0ZSBhcyB3YWxsIGNsb2NrIHRpbWUuCisgKgorICogQHBhcmFtW291dF0gdHYgUG9pbnRlciB0byBtb25vdG9uaWMgY2xvY2sgdGltZS4KKyAqLwordm9pZCBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soc3RydWN0IHRpbWV2YWwqIHR2KQoreworI2lmIGRlZmluZWQoSEFWRV9DTE9DS19HRVRUSU1FKSAmJiBkZWZpbmVkKENMT0NLX01PTk9UT05JQykKKyAgICBzdHJ1Y3QgdGltZXNwZWMgdHM7CisgICAgaW50IHJlczsKKworICAgIHJlcyA9IGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmdHMpOworICAgIGlmIChyZXMgPj0gMCkgeworICAgICAgICB0di0+dHZfc2VjID0gdHMudHZfc2VjOworICAgICAgICB0di0+dHZfdXNlYyA9IHRzLnR2X25zZWMgLyAxMDAwOworICAgIH0gZWxzZSB7CisgICAgICAgIGdldHRpbWVvZmRheSh0diwgTlVMTCk7CisgICAgfQorI2VsaWYgZGVmaW5lZChXSU4zMikKKyAgICAvKgorICAgICAqIFdpbmRvd3M6IHJldHVybiB0aWNrIGNvdW50LiBOb3RlOiB0aGUgcmF0ZSBhdCB3aGljaCB0aGUgdGljayBjb3VudAorICAgICAqIGluY3JlYXNlcyBpcyBub3QgYWRqdXN0ZWQgYnkgdGhlIHRpbWUgc3luY2hyb25pemF0aW9uIGFsZ29yaXRobSwgc28KKyAgICAgKiBleHBlY3QgYW4gZXJyb3Igb2YgPD0gMTAwIHBwbSBmb3IgdGhlIHJhdGUgYXQgd2hpY2ggdGhpcyBjbG9jaworICAgICAqIGluY3JlYXNlcy4KKyAgICAgKi8KKyAgICB0eXBlZGVmIFVMT05HTE9ORyAoV0lOQVBJICogcGZHZXRUaWNrQ291bnQ2NCkodm9pZCk7CisgICAgc3RhdGljIGludCBzX2luaXRpYWxpemVkOworICAgIHN0YXRpYyBwZkdldFRpY2tDb3VudDY0IHNfcGZHZXRUaWNrQ291bnQ2NDsKKyAgICB1aW50NjRfdCBub3c2NDsKKworICAgIGlmICghc19pbml0aWFsaXplZCkgeworICAgICAgICBITU9EVUxFIGhLZXJuZWwzMiA9IEdldE1vZHVsZUhhbmRsZSgia2VybmVsMzIiKTsKKyAgICAgICAgc19wZkdldFRpY2tDb3VudDY0ID0KKyAgICAgICAgICAgIChwZkdldFRpY2tDb3VudDY0KSBHZXRQcm9jQWRkcmVzcyhoS2VybmVsMzIsICJHZXRUaWNrQ291bnQ2NCIpOworICAgICAgICBzX2luaXRpYWxpemVkID0gVFJVRTsKKyAgICB9CisKKyAgICBpZiAoc19wZkdldFRpY2tDb3VudDY0KSB7CisgICAgICAgIC8qIFdpbmRvd3MgVmlzdGEsIFdpbmRvd3MgMjAwOCBvciBhbnkgbGF0ZXIgV2luZG93cyB2ZXJzaW9uICovCisgICAgICAgIG5vdzY0ID0gKCpzX3BmR2V0VGlja0NvdW50NjQpKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogV2luZG93cyBYUCwgV2luZG93cyAyMDAzIG9yIGFueSBlYXJsaWVyIFdpbmRvd3MgdmVyc2lvbiAqLworICAgICAgICBzdGF0aWMgdWludDMyX3Qgc193cmFwcywgc19sYXN0OworICAgICAgICB1aW50MzJfdCBub3c7CisKKyAgICAgICAgbm93ID0gR2V0VGlja0NvdW50KCk7CisgICAgICAgIGlmIChub3cgPCBzX2xhc3QpCisgICAgICAgICAgICBzX3dyYXBzKys7CisgICAgICAgIHNfbGFzdCA9IG5vdzsKKyAgICAgICAgbm93NjQgPSAoKHVpbnQ2NF90KXNfd3JhcHMgPDwgMzIpIHwgbm93OworICAgIH0KKyAgICB0di0+dHZfc2VjID0gbm93NjQgLyAxMDAwOworICAgIHR2LT50dl91c2VjID0gKG5vdzY0ICUgMTAwMCkgKiAxMDAwOworI2Vsc2UKKyAgICAvKiBBdCBsZWFzdCBGcmVlQlNEIDQgZG9lc24ndCBwcm92aWRlIG1vbm90b25pYyBjbG9jayBzdXBwb3J0LiAqLworI3dhcm5pbmcgTm90IHN1cmUgaG93IHRvIHF1ZXJ5IGEgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIGNsb2NrIG9uIHlvdXIgc3lzdGVtLiBcCitUaW1lcnMgd2lsbCBub3Qgd29yayBjb3JyZWN0bHkgaWYgdGhlIHN5c3RlbSBjbG9jayBpcyBhZGp1c3RlZCBieSBlLmcuIG50cGQuCisgICAgZ2V0dGltZW9mZGF5KHR2LCBOVUxMKTsKKyNlbmRpZgorfQorCisvKioKKyAqIFNldCBhIHRpbWUgbWFya2VyIHRvIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBtb25vdG9uaWMgY2xvY2suCisgKi8KK3ZvaWQKK25ldHNubXBfc2V0X21vbm90b25pY19tYXJrZXIobWFya2VyX3QgKnBtKQoreworICAgIGlmICghKnBtKQorICAgICAgICAqcG0gPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCB0aW1ldmFsKSk7CisgICAgaWYgKCpwbSkKKyAgICAgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCpwbSk7Cit9CiAKIC8qKgogICogUmV0dXJucyB0aGUgZGlmZmVyZW5jZSAoaW4gbXNlYykgYmV0d2VlbiB0aGUgdHdvIG1hcmtlcnMKKyAqCisgKiBcZGVwcmVjYXRlZCBEb24ndCB1c2UgaW4gbmV3IGNvZGUuCiAgKi8KIGxvbmcKIGF0aW1lX2RpZmYoY29uc3RfbWFya2VyX3QgZmlyc3QsIGNvbnN0X21hcmtlcl90IHNlY29uZCkKQEAgLTg0NSwxMSArOTk2LDEzIEBACiAKICAgICBORVRTTk1QX1RJTUVSU1VCKChjb25zdCBzdHJ1Y3QgdGltZXZhbCAqKSBzZWNvbmQsIChjb25zdCBzdHJ1Y3QgdGltZXZhbCAqKSBmaXJzdCwgJmRpZmYpOwogCi0gICAgcmV0dXJuIChkaWZmLnR2X3NlYyAqIDEwMDAgKyBkaWZmLnR2X3VzZWMgLyAxMDAwKTsKKyAgICByZXR1cm4gKGxvbmcpKGRpZmYudHZfc2VjICogMTAwMCArIGRpZmYudHZfdXNlYyAvIDEwMDApOwogfQogCiAvKioKICAqIFJldHVybnMgdGhlIGRpZmZlcmVuY2UgKGluIHVfbG9uZyBtc2VjKSBiZXR3ZWVuIHRoZSB0d28gbWFya2VycworICoKKyAqIFxkZXByZWNhdGVkIERvbid0IHVzZSBpbiBuZXcgY29kZS4KICAqLwogdV9sb25nCiB1YXRpbWVfZGlmZihjb25zdF9tYXJrZXJfdCBmaXJzdCwgY29uc3RfbWFya2VyX3Qgc2Vjb25kKQpAQCAtODY0LDYgKzEwMTcsOCBAQAogLyoqCiAgKiBSZXR1cm5zIHRoZSBkaWZmZXJlbmNlIChpbiB1X2xvbmcgMS8xMDB0aCBzZWNzKSBiZXR3ZWVuIHRoZSB0d28gbWFya2VycwogICogKGZ1bmN0aW9uYWxseSB0aGlzIGlzIHdoYXQgc3lzVXBUaW1lIG5lZWRzKQorICoKKyAqIFxkZXByZWNhdGVkIERvbid0IHVzZSBpbiBuZXcgY29kZS4KICAqLwogdV9sb25nCiB1YXRpbWVfaGRpZmYoY29uc3RfbWFya2VyX3QgZmlyc3QsIGNvbnN0X21hcmtlcl90IHNlY29uZCkKQEAgLTg3Nyw2ICsxMDMyLDggQEAKIC8qKgogICogVGVzdDogSGFzIChtYXJrZWQgdGltZSBwbHVzIGRlbHRhKSBleGNlZWRlZCBjdXJyZW50IHRpbWUgPwogICogUmV0dXJucyAwIGlmIHRlc3QgZmFpbHMgb3IgY2Fubm90IGJlIHRlc3RlZCAobm8gbWFya2VyKS4KKyAqCisgKiBcZGVwcmVjYXRlZCBVc2UgbmV0c25tcF9yZWFkeV9tb25vdG9uaWMoKSBpbnN0ZWFkLgogICovCiBpbnQKIGF0aW1lX3JlYWR5KGNvbnN0X21hcmtlcl90IHBtLCBpbnQgZGVsdGFfbXMpCkBAIC04OTYsOSArMTA1MywxMiBAQAogICAgIHJldHVybiAxOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVUFUSU1FX1JFQURZCiAvKioKICAqIFRlc3Q6IEhhcyAobWFya2VkIHRpbWUgcGx1cyBkZWx0YSkgZXhjZWVkZWQgY3VycmVudCB0aW1lID8KICAqIFJldHVybnMgMCBpZiB0ZXN0IGZhaWxzIG9yIGNhbm5vdCBiZSB0ZXN0ZWQgKG5vIG1hcmtlcikuCisgKgorICogXGRlcHJlY2F0ZWQgVXNlIG5ldHNubXBfcmVhZHlfbW9ub3RvbmljKCkgaW5zdGVhZC4KICAqLwogaW50CiB1YXRpbWVfcmVhZHkoY29uc3RfbWFya2VyX3QgcG0sIHVuc2lnbmVkIGludCBkZWx0YV9tcykKQEAgLTkxNyw2ICsxMDc3LDMzIEBACiAKICAgICByZXR1cm4gMTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VBVElNRV9SRUFEWSAqLworCisvKioKKyAqIElzIHRoZSBjdXJyZW50IHRpbWUgcGFzdCAobWFya2VkIHRpbWUgcGx1cyBkZWx0YSkgPworICoKKyAqIEBwYXJhbVtpbl0gcG0gUG9pbnRlciB0byBtYXJrZWQgdGltZSBhcyBvYnRhaW5lZCB2aWEKKyAqICAgbmV0c25tcF9zZXRfbW9ub3RvbmljX21hcmtlcigpLgorICogQHBhcmFtW2luXSBkZWx0YV9tcyBUaW1lIGRlbHRhIGluIG1pbGxpc2Vjb25kcy4KKyAqCisgKiBAcmV0dXJuIHBtICE9IE5VTEwgJiYgbm93ID49ICgqcG0gKyBkZWx0YV9tcykKKyAqLworaW50CituZXRzbm1wX3JlYWR5X21vbm90b25pYyhjb25zdF9tYXJrZXJfdCBwbSwgaW50IGRlbHRhX21zKQoreworICAgIHN0cnVjdCB0aW1ldmFsICBub3csIGRpZmYsIGRlbHRhOworCisgICAgbmV0c25tcF9hc3NlcnQoZGVsdGFfbXMgPj0gMCk7CisgICAgaWYgKHBtKSB7CisgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmbm93KTsKKyAgICAgICAgTkVUU05NUF9USU1FUlNVQigmbm93LCAoY29uc3Qgc3RydWN0IHRpbWV2YWwgKikgcG0sICZkaWZmKTsKKyAgICAgICAgZGVsdGEudHZfc2VjID0gZGVsdGFfbXMgLyAxMDAwOworICAgICAgICBkZWx0YS50dl91c2VjID0gKGRlbHRhX21zICUgMTAwMCkgKiAxMDAwVUw7CisgICAgICAgIHJldHVybiB0aW1lcmNtcCgmZGlmZiwgJmRlbHRhLCA+PSkgPyBUUlVFIDogRkFMU0U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KK30KIAogCiAgICAgICAgIC8qCkBAIC05MjQsNyArMTExMSw5IEBACiAgICAgICAgICAqLwogCiAvKioKLSAqIFJldHVybiB0aGUgbnVtYmVyIG9mIHRpbWVUaWNrcyBzaW5jZSB0aGUgZ2l2ZW4gbWFya2VyIAorICogUmV0dXJuIHRoZSBudW1iZXIgb2YgdGltZVRpY2tzIHNpbmNlIHRoZSBnaXZlbiBtYXJrZXIKKyAqCisgKiBcZGVwcmVjYXRlZCBEb24ndCB1c2UgaW4gbmV3IGNvZGUuCiAgKi8KIGludAogbWFya2VyX3R0aWNrcyhjb25zdF9tYXJrZXJfdCBwbSkKQEAgLTkzNywxMSArMTEyNiwxNiBAQAogICAgIHJldHVybiByZXMgLyAxMDsgICAgICAgICAgICAvKiBhdGltZV9kaWZmIHdvcmtzIGluIG1zZWMsIG5vdCBjc2VjICovCiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9USU1FVkFMX1RUSUNLUworLyoqCisgKiBcZGVwcmVjYXRlZCBEb24ndCB1c2UgaW4gbmV3IGNvZGUuCisgKi8KIGludAogdGltZXZhbF90dGlja3MoY29uc3Qgc3RydWN0IHRpbWV2YWwgKnR2KQogewogICAgIHJldHVybiBtYXJrZXJfdHRpY2tzKChjb25zdF9tYXJrZXJfdCkgdHYpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVElNRVZBTF9UVElDS1MgKi8KIAogLyoqCiAgKiBOb24gV2luZG93czogIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBkZXNpcmVkIGVudmlyb25tZW50IHZhcmlhYmxlICAKQEAgLTEwMDAsOCArMTE5NCw3IEBACiAgICAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgIC8qIEp1c3QgZ2V0IHRoZSBzaXplICovCiAgICAgICAgICAgICAma2V5X3ZhbHVlX3NpemUpID09IEVSUk9SX1NVQ0NFU1MpIHsKIAotICAgICAgICBpZiAoa2V5X3ZhbHVlKQotICAgICAgICAgIFNOTVBfRlJFRShrZXlfdmFsdWUpOworICAgICAgICBTTk1QX0ZSRUUoa2V5X3ZhbHVlKTsKIAogICAgICAgICAvKiBBbGxvY2F0ZSBtZW1vcnkgbmVlZGVkICsxIHRvIGFsbG93IFJlZ1F1ZXJ5VmFsdWVFeEEgdG8gTlVMTCB0ZXJtaW5hdGUgdGhlCiAgICAgICAgICAqIHN0cmluZyBkYXRhIGluIHJlZ2lzdHJ5IGlzIG1pc3Npbmcgb25lICh3aGljaCBpcyB1bmxpa2VseSkuCkBAIC0xMDQyLDggKzEyMzUsNyBAQAogICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAvKiBKdXN0IGdldCB0aGUgc2l6ZSAqLwogICAgICAgICAgICAgJmtleV92YWx1ZV9zaXplKSA9PSBFUlJPUl9TVUNDRVNTKSB7CiAKLSAgICAgICAgaWYgKGtleV92YWx1ZSkKLSAgICAgICAgICBTTk1QX0ZSRUUoa2V5X3ZhbHVlKTsKKyAgICAgICAgU05NUF9GUkVFKGtleV92YWx1ZSk7CiAKICAgICAgICAgLyogQWxsb2NhdGUgbWVtb3J5IG5lZWRlZCArMSB0byBhbGxvdyBSZWdRdWVyeVZhbHVlRXhBIHRvIE5VTEwgdGVybWluYXRlIHRoZQogICAgICAgICAgKiBzdHJpbmcgZGF0YSBpbiByZWdpc3RyeSBpcyBtaXNzaW5nIG9uZSAod2hpY2ggaXMgdW5saWtlbHkpLgpAQCAtMTEyNSwzICsxMzE3LDY1IEBACiAKICAgICByZXR1cm4gMDsKIH0KKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUUklOR19USU1FX1RPX1NFQ1MKKy8qKgorICogVGFrZXMgYSB0aW1lIHN0cmluZyBsaWtlIDRoIGFuZCBjb252ZXJ0cyBpdCB0byBzZWNvbmRzLgorICogVGhlIHN0cmluZyB0aW1lIGdpdmVuIG1heSBlbmQgaW4gJ3MnIGZvciBzZWNvbmRzICh0aGUgZGVmYXVsdAorICogYW55d2F5IGlmIG5vIHN1ZmZpeCBpcyBzcGVjaWZpZWQpLAorICogJ20nIGZvciBtaW51dGVzLCAnaCcgZm9yIGhvdXJzLCAnZCcgZm9yIGRheXMsIG9yICd3JyBmb3Igd2Vla3MuICBUaGUKKyAqIHVwcGVyIGNhc2UgdmVyc2lvbnMgYXJlIGFsc28gYWNjZXB0ZWQuCisgKgorICogQHBhcmFtIHRpbWVfc3RyaW5nIFRoZSB0aW1lIHN0cmluZyB0byBjb252ZXJ0LgorICoKKyAqIEByZXR1cm4gc2Vjb25kcyBjb252ZXJ0ZWQgZnJvbSB0aGUgc3RyaW5nCisgKiBAcmV0dXJuIC0xICA6IG9uIGZhaWx1cmUKKyAqLworaW50CituZXRzbm1wX3N0cmluZ190aW1lX3RvX3NlY3MoY29uc3QgY2hhciAqdGltZV9zdHJpbmcpIHsKKyAgICBpbnQgc2VjcyA9IC0xOworICAgIGlmICghdGltZV9zdHJpbmcgfHwgIXRpbWVfc3RyaW5nWzBdKQorICAgICAgICByZXR1cm4gc2VjczsKKworICAgIHNlY3MgPSBhdG9pKHRpbWVfc3RyaW5nKTsKKworICAgIGlmIChpc2RpZ2l0KCh1bnNpZ25lZCBjaGFyKXRpbWVfc3RyaW5nW3N0cmxlbih0aW1lX3N0cmluZyktMV0pKQorICAgICAgICByZXR1cm4gc2VjczsgLyogbm8gbGV0dGVyIHNwZWNpZmllZCwgaXQncyBhbHJlYWR5IGluIHNlY29uZHMgKi8KKyAgICAKKyAgICBzd2l0Y2ggKHRpbWVfc3RyaW5nW3N0cmxlbih0aW1lX3N0cmluZyktMV0pIHsKKyAgICBjYXNlICdzJzoKKyAgICBjYXNlICdTJzoKKyAgICAgICAgLyogYWxyZWFkeSBpbiBzZWNvbmRzICovCisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSAnbSc6CisgICAgY2FzZSAnTSc6CisgICAgICAgIHNlY3MgPSBzZWNzICogNjA7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSAnaCc6CisgICAgY2FzZSAnSCc6CisgICAgICAgIHNlY3MgPSBzZWNzICogNjAgKiA2MDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlICdkJzoKKyAgICBjYXNlICdEJzoKKyAgICAgICAgc2VjcyA9IHNlY3MgKiA2MCAqIDYwICogMjQ7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSAndyc6CisgICAgY2FzZSAnVyc6CisgICAgICAgIHNlY3MgPSBzZWNzICogNjAgKiA2MCAqIDI0ICogNzsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidGltZSBzdHJpbmcgJXMgY29udGFpbnMgYW4gaW52YWxpZCBzdWZmaXggbGV0dGVyXG4iLAorICAgICAgICAgICAgICAgICB0aW1lX3N0cmluZyk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBERUJVR01TR1RMKCgic3RyaW5nX3RpbWVfdG9fc2VjcyIsICJDb252ZXJ0ZWQgdGltZSBzdHJpbmcgJXMgdG8gJWRcbiIsCisgICAgICAgICAgICAgICAgdGltZV9zdHJpbmcsIHNlY3MpKTsKKyAgICByZXR1cm4gc2VjczsKK30KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUUklOR19USU1FX1RPX1NFQ1MgKi8KZGlmZiAtLWdpdCBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5jIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmMKaW5kZXggMmIyOGNiMy4uNWFjNjlhMSAxMDA2NDQKLS0tIGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmMKKysrIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmMKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9jb25maWdfYXBpLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0Lmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS90b29scy5oPgogCiAKIG9pZCBuZXRzbm1wX0FBTDVQVkNEb21haW5bMTBdID0geyBORVRTTk1QX0VOVEVSUFJJU0VfTUlCLCAzLCAzLCAzIH07CkBAIC0xNzIsMTEgKzE3MywxNiBAQAogewogICAgIG5ldHNubXBfdHJhbnNwb3J0ICp0ID0gTlVMTDsKIAorI2lmZGVmIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQKKyAgICBpZiAobG9jYWwpCisgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KKwogICAgIGlmIChhZGRyID09IE5VTEwgfHwgYWRkci0+c2FwX2ZhbWlseSAhPSBBRl9BVE1QVkMpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgdCA9IChuZXRzbm1wX3RyYW5zcG9ydCAqKSBtYWxsb2Moc2l6ZW9mKG5ldHNubXBfdHJhbnNwb3J0KSk7CisgICAgdCA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90cmFuc3BvcnQpOwogICAgIGlmICh0ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTg5LDggKzE5NSw2IEBACiAgICAgICAgIGZyZWUoc3RyKTsKICAgICB9CiAKLSAgICBtZW1zZXQodCwgMCwgc2l6ZW9mKG5ldHNubXBfdHJhbnNwb3J0KSk7Ci0KICAgICB0LT5kb21haW4gPSBuZXRzbm1wX0FBTDVQVkNEb21haW47CiAgICAgdC0+ZG9tYWluX2xlbmd0aCA9CiAgICAgICAgIHNpemVvZihuZXRzbm1wX0FBTDVQVkNEb21haW4pIC8gc2l6ZW9mKG5ldHNubXBfQUFMNVBWQ0RvbWFpblswXSk7CkBAIC0yMjQsNiArMjI4LDcgQEAKICAgICB9CiAKICAgICBpZiAobG9jYWwpIHsKKyNpZm5kZWYgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVAogICAgICAgICB0LT5sb2NhbCA9ICh1bnNpZ25lZCBjaGFyKiltYWxsb2MoOCk7CiAgICAgICAgIGlmICh0LT5sb2NhbCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBuZXRzbm1wX3RyYW5zcG9ydF9mcmVlKHQpOwpAQCAtMjQ3LDYgKzI1Miw5IEBACiAgICAgICAgICAgICBuZXRzbm1wX3RyYW5zcG9ydF9mcmVlKHQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KKyNlbHNlIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLwogICAgIH0gZWxzZSB7CiAgICAgICAgIHQtPnJlbW90ZSA9ICh1bnNpZ25lZCBjaGFyKiltYWxsb2MoOCk7CiAgICAgICAgIGlmICh0LT5yZW1vdGUgPT0gTlVMTCkgewpkaWZmIC0tZ2l0IGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBDYWxsYmFja0RvbWFpbi5jIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBDYWxsYmFja0RvbWFpbi5jCmluZGV4IDE3NWMyMjguLjk1MDE4YjggMTAwNjQ0Ci0tLSBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wQ2FsbGJhY2tEb21haW4uYworKysgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmMKQEAgLTI4OSwxMCArMjg5LDcgQEAKICAgICAgICAgLyoKICAgICAgICAgICogd2UgZG9uJ3QgbmVlZCB0aGUgdHJhbnNwb3J0IGRhdGEgYW55IG1vcmUgCiAgICAgICAgICAqLwotICAgICAgICBpZiAoKm9wYXF1ZSkgewotICAgICAgICAgICAgU05NUF9GUkVFKCpvcGFxdWUpOwotICAgICAgICAgICAgKm9wYXF1ZSA9IE5VTEw7Ci0gICAgICAgIH0KKyAgICAgICAgU05NUF9GUkVFKCpvcGFxdWUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIHdlJ3JlIHRoZSBzZXJ2ZXIsIHNlbmQgaXQgdG8gdGhlIHBlcnNvbiB0aGF0IHNlbnQgdXMgdGhlIHJlcXVlc3QgCkBAIC0zMDEsMTAgKzI5OCw3IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIHdlIGRvbid0IG5lZWQgdGhlIHRyYW5zcG9ydCBkYXRhIGFueSBtb3JlIAogICAgICAgICAgKi8KLSAgICAgICAgaWYgKCpvcGFxdWUpIHsKLSAgICAgICAgICAgIFNOTVBfRlJFRSgqb3BhcXVlKTsKLSAgICAgICAgICAgICpvcGFxdWUgPSBOVUxMOwotICAgICAgICB9CisgICAgICAgIFNOTVBfRlJFRSgqb3BhcXVlKTsKICAgICAgICAgb3RoZXJfc2lkZSA9IGZpbmRfdHJhbnNwb3J0X2Zyb21fY2FsbGJhY2tfbnVtKGZyb20pOwogICAgICAgICBpZiAoIW90aGVyX3NpZGUpIHsKICAgICAgICAgICAgIHNubXBfZnJlZV9wZHUoY3AtPnBkdSk7CkBAIC0zNTksNyArMzUzLDcgQEAKIHsKICAgICBERUJVR01TR1RMKCgidHJhbnNwb3J0X2NhbGxiYWNrIiwgImhvb2tfYWNjZXB0IGVudGVyXG4iKSk7CiAgICAgREVCVUdNU0dUTCgoInRyYW5zcG9ydF9jYWxsYmFjayIsICJob29rX2FjY2VwdCBleGl0XG4iKSk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIC0xOwogfQogCiAKZGlmZiAtLWdpdCBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmMKaW5kZXggNDg1NmIyYi4uOWM1NmQxOSAxMDA2NDQKLS0tIGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmMKKysrIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmMKQEAgLTE4LDcgKzE4LDEzIEBACiAKICNpZmRlZiBIQVZFX0xJQlNTTF9EVExTCiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgorCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjZXJ0X3V0aWwpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzb2NrYWRkcl9zaXplKQorCiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wRFRMU1VEUERvbWFpbi5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaD4KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CkBAIC04Nyw2ICs5Myw5IEBACiBzaXplX3QgICAgICAgICAgbmV0c25tcERUTFNVRFBEb21haW5fbGVuID0gT0lEX0xFTkdUSChuZXRzbm1wRFRMU1VEUERvbWFpbik7CiAKIHN0YXRpYyBuZXRzbm1wX3Rkb21haW4gZHRsc3VkcERvbWFpbjsKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VRFBJUFY2X0RPTUFJTgorc3RhdGljIGludCBvcGVuc3NsX2FkZHJfaW5kZXg2ID0gMDsKKyNlbmRpZgogCiAvKiB0aGlzIHN0b3JlcyBvcGVuc3NsIGNyZWRlbnRpYWxzIGZvciBlYWNoIGNvbm5lY3Rpb24gc2luY2Ugb3BlbnNzbAogICAgY2FuJ3QgZG8gaXQgZm9yIHVzIGF0IHRoZSBtb21lbnQ7IGhvcGVmdWxseSBmdXR1cmUgdmVyc2lvbnMgd2lsbApAQCAtOTQsOSArMTAzLDcgQEAKIHR5cGVkZWYgc3RydWN0IGJpb19jYWNoZV9zIHsKICAgIEJJTyAqcmVhZF9iaW87ICAvKiBPcGVuU1NMIHdpbGwgcmVhZCBpdHMgaW5jb21pbmcgU1NMIHBhY2tldHMgZnJvbSBoZXJlICovCiAgICBCSU8gKndyaXRlX2JpbzsgLyogT3BlblNTTCB3aWxsIHdyaXRlIGl0cyBvdXRnb2luZyBTU0wgcGFja2V0cyB0byBoZXJlICovCi0gICBzdHJ1Y3Qgc29ja2FkZHJfaW4gc29ja2FkZHI7Ci0gICB1aW50MzJfdCBpcHY0YWRkcjsKLSAgIHVfc2hvcnQgcG9ydG51bTsKKyAgIG5ldHNubXBfc29ja2FkZHJfc3RvcmFnZSBzYXM7CiAgICB1X2ludCBmbGFnczsKICAgIHN0cnVjdCBiaW9fY2FjaGVfcyAqbmV4dDsKICAgIGludCBtc2dudW07CkBAIC0xMTksMjQgKzEyNiwzNiBAQAogc3RhdGljIGludCBuZXRzbm1wX2R0bHNfZ2VuX2Nvb2tpZShTU0wgKnNzbCwgdW5zaWduZWQgY2hhciAqY29va2llLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKmNvb2tpZV9sZW4pOwogCi0KIC8qIHRoaXMgc3RvcmVzIHJlbW90ZSBjb25uZWN0aW9ucyBpbiBhIGxpc3QgdG8gc2VhcmNoIHRocm91Z2ggKi8KIC8qIFhYWDogb3B0aW1pemUgZm9yIHNlYXJjaGluZyAqLwogLyogWFhYOiBoYW5kbGUgc3RhdGUgaXNzdWVzIGZvciBuZXcgY29ubmVjdGlvbnMgdG8gcmVkdWNlIERPUyBpc3N1ZXMgKi8KIC8qICAgICAgKFRMUyBzaG91bGQgZG8gdGhpcywgYnV0IG9wZW5zc2wgY2FuJ3QgZG8gbW9yZSB0aGFuIG9uZSBjdHggcGVyIHNvY2sgKi8KIC8qIFhYWDogcHV0IGEgdGltZXIgb24gdGhlIGNhY2hlIGZvciBleHBpcmFyeSBwdXJwb3NlcyAqLwotc3RhdGljIGJpb19jYWNoZSAqZmluZF9iaW9fY2FjaGUoc3RydWN0IHNvY2thZGRyX2luICpmcm9tX2FkZHIpIHsKK3N0YXRpYyBiaW9fY2FjaGUgKmZpbmRfYmlvX2NhY2hlKG5ldHNubXBfc29ja2FkZHJfc3RvcmFnZSAqZnJvbV9hZGRyKSB7CiAgICAgYmlvX2NhY2hlICpjYWNoZXAgPSBOVUxMOwotICAgIGNhY2hlcCA9IGJpb2NhY2hlOwotICAgIHdoaWxlKGNhY2hlcCkgeworICAgIAorICAgIGZvcihjYWNoZXAgPSBiaW9jYWNoZTsgY2FjaGVwOyBjYWNoZXAgPSBjYWNoZXAtPm5leHQpIHsKIAotICAgICAgICBpZiAoY2FjaGVwLT5pcHY0YWRkciA9PSBmcm9tX2FkZHItPnNpbl9hZGRyLnNfYWRkciAmJgotICAgICAgICAgICAgY2FjaGVwLT5wb3J0bnVtID09IGZyb21fYWRkci0+c2luX3BvcnQpIHsKLSAgICAgICAgICAgIC8qIGZvdW5kIGFuIGV4aXN0aW5nIGNvbm5lY3Rpb24gKi8KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FjaGVwID0gY2FjaGVwLT5uZXh0OworICAgICAgICBpZiAoY2FjaGVwLT5zYXMuc2Euc2FfZmFtaWx5ICE9IGZyb21fYWRkci0+c2Euc2FfZmFtaWx5KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKChmcm9tX2FkZHItPnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUKSAmJgorICAgICAgICAgICAgKChjYWNoZXAtPnNhcy5zaW4uc2luX2FkZHIuc19hZGRyICE9CisgICAgICAgICAgICAgIGZyb21fYWRkci0+c2luLnNpbl9hZGRyLnNfYWRkcikgfHwKKyAgICAgICAgICAgICAoY2FjaGVwLT5zYXMuc2luLnNpbl9wb3J0ICE9IGZyb21fYWRkci0+c2luLnNpbl9wb3J0KSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisjaWZkZWYgTkVUU05NUF9UUkFOU1BPUlRfVURQSVBWNl9ET01BSU4KKyAgICAgICAgZWxzZSBpZiAoKGZyb21fYWRkci0+c2Euc2FfZmFtaWx5ID09IEFGX0lORVQ2KSAmJgorICAgICAgICAgICAgICAgICAoKGNhY2hlcC0+c2FzLnNpbjYuc2luNl9wb3J0ICE9IGZyb21fYWRkci0+c2luNi5zaW42X3BvcnQpIHx8CisgICAgICAgICAgICAgICAgICAoY2FjaGVwLT5zYXMuc2luNi5zaW42X3Njb3BlX2lkICE9CisgICAgICAgICAgICAgICAgICAgZnJvbV9hZGRyLT5zaW42LnNpbjZfc2NvcGVfaWQpIHx8CisgICAgICAgICAgICAgICAgICAobWVtY21wKGNhY2hlcC0+c2FzLnNpbjYuc2luNl9hZGRyLnM2X2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fYWRkci0+c2luNi5zaW42X2FkZHIuczZfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGZyb21fYWRkci0+c2luNi5zaW42X2FkZHIuczZfYWRkcikpICE9IDApKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworI2VuZGlmCisgICAgICAgIC8qIGZvdW5kIGFuIGV4aXN0aW5nIGNvbm5lY3Rpb24gKi8KKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBjYWNoZXA7CiB9CkBAIC0xODksNyArMjA4LDcgQEAKIAogc3RhdGljIGJpb19jYWNoZSAqCiBzdGFydF9uZXdfY2FjaGVkX2Nvbm5lY3Rpb24obmV0c25tcF90cmFuc3BvcnQgKnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyX2luICpyZW1vdGVfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3NvY2thZGRyX3N0b3JhZ2UgKnJlbW90ZV9hZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3ZV9hcmVfY2xpZW50KSB7CiAgICAgYmlvX2NhY2hlICpjYWNoZXAgPSBOVUxMOwogICAgIF9uZXRzbm1wVExTQmFzZURhdGEgKnRsc2RhdGE7CkBAIC0yNjYsOSArMjg1LDE0IEBACiAgICAgY2FjaGVwLT5uZXh0ID0gYmlvY2FjaGU7CiAgICAgYmlvY2FjaGUgPSBjYWNoZXA7CiAKLSAgICBjYWNoZXAtPmlwdjRhZGRyID0gcmVtb3RlX2FkZHItPnNpbl9hZGRyLnNfYWRkcjsKLSAgICBjYWNoZXAtPnBvcnRudW0gPSByZW1vdGVfYWRkci0+c2luX3BvcnQ7Ci0gICAgbWVtY3B5KCZjYWNoZXAtPnNvY2thZGRyLCByZW1vdGVfYWRkciwgc2l6ZW9mKCpyZW1vdGVfYWRkcikpOworICAgIGlmIChyZW1vdGVfYWRkci0+c2Euc2FfZmFtaWx5ID09IEFGX0lORVQpCisgICAgICAgIG1lbWNweSgmY2FjaGVwLT5zYXMuc2luLCAmcmVtb3RlX2FkZHItPnNpbiwgc2l6ZW9mKHJlbW90ZV9hZGRyLT5zaW4pKTsKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VRFBJUFY2X0RPTUFJTgorICAgIGVsc2UgaWYgKHJlbW90ZV9hZGRyLT5zYS5zYV9mYW1pbHkgPT0gQUZfSU5FVDYpCisgICAgICAgIG1lbWNweSgmY2FjaGVwLT5zYXMuc2luNiwgJnJlbW90ZV9hZGRyLT5zaW42LCBzaXplb2YocmVtb3RlX2FkZHItPnNpbjYpKTsKKyNlbmRpZgorICAgIGVsc2UKKyAgICAgICAgRElFSEVSRSgidW5rbm93biBhZGRyZXNzIGZhbWlseSIpOwogCiAgICAgLyogY3JlYXRlIGNhY2hpbmcgbWVtb3J5IGJpb3MgZm9yIE9wZW5TU0wgdG8gcmVhZCBhbmQgd3JpdGUgdG8gKi8KIApAQCAtMzgyLDcgKzQwNiw4IEBACiB9CiAKIHN0YXRpYyBiaW9fY2FjaGUgKgotZmluZF9vcl9jcmVhdGVfYmlvX2NhY2hlKG5ldHNubXBfdHJhbnNwb3J0ICp0LCBzdHJ1Y3Qgc29ja2FkZHJfaW4gKmZyb21fYWRkciwKK2ZpbmRfb3JfY3JlYXRlX2Jpb19jYWNoZShuZXRzbm1wX3RyYW5zcG9ydCAqdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3NvY2thZGRyX3N0b3JhZ2UgKmZyb21fYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2VfYXJlX2NsaWVudCkgewogICAgIGJpb19jYWNoZSAqY2FjaGVwID0gZmluZF9iaW9fY2FjaGUoZnJvbV9hZGRyKTsKICAgICBpZiAoTlVMTCA9PSBjYWNoZXApIHsKQEAgLTM5Nyw2ICs0MjIsNDcgQEAKICAgICByZXR1cm4gY2FjaGVwOwogfQogCitzdGF0aWMgbmV0c25tcF9pbmRleGVkX2FkZHJfcGFpciAqCitfZXh0cmFjdF9hZGRyX3BhaXIobmV0c25tcF90cmFuc3BvcnQgKnQsIHZvaWQgKm9wYXF1ZSwgaW50IG9sZW4pCit7CisgICAgbmV0c25tcF9pbmRleGVkX2FkZHJfcGFpciAqYWRkcl9wYWlyID0gTlVMTDsKKworICAgIGlmIChvcGFxdWUgJiYgb2xlbiA9PSBzaXplb2YobmV0c25tcF90bVN0YXRlUmVmZXJlbmNlKSkgeworICAgICAgICBuZXRzbm1wX3RtU3RhdGVSZWZlcmVuY2UgKnRtU3RhdGVSZWYgPQorICAgICAgICAgICAgKG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSAqKSBvcGFxdWU7CisKKyAgICAgICAgaWYgKHRtU3RhdGVSZWYtPmhhdmVfYWRkcmVzc2VzKQorICAgICAgICAgICAgYWRkcl9wYWlyID0gJih0bVN0YXRlUmVmLT5hZGRyZXNzZXMpOworICAgIH0KKyAgICBpZiAoKE5VTEwgPT0gYWRkcl9wYWlyKSAmJiAoTlVMTCAhPSB0KSkgeworICAgICAgICBpZiAodC0+ZGF0YSAhPSBOVUxMICYmCisgICAgICAgICAgICB0LT5kYXRhX2xlbmd0aCA9PSBzaXplb2YobmV0c25tcF9pbmRleGVkX2FkZHJfcGFpcikpCisgICAgICAgICAgICBhZGRyX3BhaXIgPSAobmV0c25tcF9pbmRleGVkX2FkZHJfcGFpciAqKSAodC0+ZGF0YSk7CisgICAgICAgIGVsc2UgaWYgKHQtPmRhdGEgIT0gTlVMTCAmJgorICAgICAgICAgICAgICAgICB0LT5kYXRhX2xlbmd0aCA9PSBzaXplb2YoX25ldHNubXBUTFNCYXNlRGF0YSkpIHsKKyAgICAgICAgICAgIF9uZXRzbm1wVExTQmFzZURhdGEgKnRsc2RhdGEgPSAoX25ldHNubXBUTFNCYXNlRGF0YSAqKSB0LT5kYXRhOworICAgICAgICAgICAgYWRkcl9wYWlyID0gKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIgKikgKHRsc2RhdGEtPmFkZHIpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGFkZHJfcGFpcjsKK30KKworc3RhdGljIHN0cnVjdCBzb2NrYWRkciAqCitfZmluZF9yZW1vdGVfc29ja2FkZHIobmV0c25tcF90cmFuc3BvcnQgKnQsIHZvaWQgKm9wYXF1ZSwgaW50IG9sZW4sIGludCAqc29ja2xlbikKK3sKKyAgICBuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyICphZGRyX3BhaXIgPSBfZXh0cmFjdF9hZGRyX3BhaXIodCwgb3BhcXVlLCBvbGVuKTsKKyAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNhID0gTlVMTDsKKworICAgIGlmIChOVUxMID09IGFkZHJfcGFpcikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzYSA9ICZhZGRyX3BhaXItPnJlbW90ZV9hZGRyLnNhOworICAgICpzb2NrbGVuID0gbmV0c25tcF9zb2NrYWRkcl9zaXplKHNhKTsKKyAgICByZXR1cm4gc2E7Cit9CisKKwogLyoKICAqIFJlYWRzIGRhdGEgZnJvbSBvdXIgaW50ZXJuYWwgb3BlbnNzbCBvdXRnb2luZyBCSU8gYW5kIHNlbmRzIGFueQogICogcXVldWVkIHBhY2tldHMgb3V0IHRoZSBVRFAgcG9ydApAQCAtNDE3LDE3ICs0ODMsMTQgQEAKICAgICAgICAgREVCVUdNU0dUTCgoImR0bHN1ZHAiLCAiaGF2ZSAlZCBieXRlcyB0byBzZW5kXG4iLCBvdXRzaXplKSk7CiAKICAgICAgICAgLyogc2hvdWxkIGFsd2F5cyBiZSB0cnVlLiAqLwotI2lmIGRlZmluZWQoWFhYRklYTUUpICYmIGRlZmluZWQobGludXgpICYmIGRlZmluZWQoSVBfUEtUSU5GTykKLSAgICAgICAgLyogWFhYOiBiZWZvcmUgdGhpcyBjYW4gd29yaywgd2UgbmVlZCB0byByZW1lbWJlciBhZGRyZXNzIHdlCi0gICAgICAgICAgIHJlY2VpdmVkIGl0IGZyb20gKGFkZHJfcGFpcikgKi8KLSAgICAgICAgcmMyID0gbmV0c25tcF91ZHBfc2VuZHRvKHQtPnNvY2ssIGFkZHJfcGFpci0+bG9jYWxfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJfcGFpci0+aWZfaW5kZXgsIGFkZHJfcGFpci0+cmVtb3RlX2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRidWYsIG91dHNpemUpOwotI2Vsc2UKLSAgICAgICAgcmMyID0gc2VuZHRvKHQtPnNvY2ssIG91dGJ1Ziwgb3V0c2l6ZSwgMCwKLSAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3Qgc29ja2FkZHIgKikmY2FjaGVwLT5zb2NrYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcikpOwotI2VuZGlmIC8qIGxpbnV4ICYmIElQX1BLVElORk8gKi8KLQorICAgICAgICBpbnQgc29ja3NpemU7CisgICAgICAgIHN0cnVjdCBzb2NrYWRkciAqc2E7CisgICAgICAgIHNhID0gX2ZpbmRfcmVtb3RlX3NvY2thZGRyKHQsIE5VTEwsIDAsICZzb2Nrc2l6ZSk7CisgICAgICAgIGlmIChOVUxMID09IHNhKQorICAgICAgICAgICAgc2EgPSAmY2FjaGVwLT5zYXMuc2E7CisgICAgICAgIHNvY2tzaXplID0gbmV0c25tcF9zb2NrYWRkcl9zaXplKHNhKTsKKyAgICAgICAgcmMyID0gdC0+YmFzZV90cmFuc3BvcnQtPmZfc2VuZCh0LCBvdXRidWYsIG91dHNpemUsICh2b2lkKiopJnNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzb2Nrc2l6ZSk7CiAgICAgICAgIGlmIChyYzIgPT0gLTEpIHsKICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJmYWlsZWQgdG8gc2VuZCBhIERUTFMgc3BlY2lmaWMgcGFja2V0XG4iKTsKICAgICAgICAgfQpAQCAtNTQxLDcgKzYwNCw2IEBACiAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqb3BhcXVlLCBpbnQgKm9sZW5ndGgpCiB7CiAgICAgaW50ICAgICAgICAgICAgIHJjID0gLTE7Ci0gICAgc29ja2xlbl90ICAgICAgIGZyb21sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyKTsKICAgICBuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyICphZGRyX3BhaXIgPSBOVUxMOwogICAgIHN0cnVjdCBzb2NrYWRkciAqZnJvbTsKICAgICBuZXRzbm1wX3RtU3RhdGVSZWZlcmVuY2UgKnRtU3RhdGVSZWYgPSBOVUxMOwpAQCAtNTczLDE0ICs2MzUsMTIgQEAKICAgICBmcm9tID0gKHN0cnVjdCBzb2NrYWRkciAqKSAmKGFkZHJfcGFpci0+cmVtb3RlX2FkZHIpOwogCiAgICAgd2hpbGUgKHJjIDwgMCkgewotI2lmIGRlZmluZWQobGludXgpICYmIGRlZmluZWQoSVBfUEtUSU5GTykKLSAgICAgICAgc29ja2xlbl90IGxvY2FsX2FkZHJfbGVuID0gc2l6ZW9mKGFkZHJfcGFpci0+bG9jYWxfYWRkcik7Ci0gICAgICAgIHJjID0gbmV0c25tcF91ZHBfcmVjdmZyb20odC0+c29jaywgYnVmLCBzaXplLCBmcm9tLCAmZnJvbWxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHNvY2thZGRyKikmKGFkZHJfcGFpci0+bG9jYWxfYWRkciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsX2FkZHJfbGVuLCAmKGFkZHJfcGFpci0+aWZfaW5kZXgpKTsKLSNlbHNlCi0gICAgICAgIHJjID0gcmVjdmZyb20odC0+c29jaywgYnVmLCBzaXplLCBORVRTTk1QX0RPTlRXQUlULCBmcm9tLCAmZnJvbWxlbik7Ci0jZW5kaWYgLyogbGludXggJiYgSVBfUEtUSU5GTyAqLworICAgICAgICBjaGFyICpvcGFxdWUgPSBOVUxMOworICAgICAgICBpbnQgb2xlbjsKKyAgICAgICAgcmMgPSB0LT5iYXNlX3RyYW5zcG9ydC0+Zl9yZWN2KHQsIGJ1Ziwgc2l6ZSwgKHZvaWQqKikmb3BhcXVlLCAmb2xlbik7CisgICAgICAgIGlmIChyYyA+IDApCisgICAgICAgICAgICBtZW1jcHkoZnJvbSwgb3BhcXVlLCBvbGVuKTsKKyAgICAgICAgU05NUF9GUkVFKG9wYXF1ZSk7CiAgICAgICAgIGlmIChyYyA8IDAgJiYgZXJybm8gIT0gRUlOVFIpIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC04NzMsNiArOTMzLDcgQEAKICAgICAgICAgICAgIHRsc2RhdGEtPmZsYWdzIHw9IE5FVFNOTVBfVExTQkFTRV9DRVJUX0ZQX1ZFUklGSUVEOwogICAgICAgICAgICAgREVCVUdNU0dUTCgoImR0bHN1ZHAiLCAiVmVyaWZpZWQgdGhlIHNlcnZlcidzIGNlcnRpZmljYXRlXG4iKSk7CiAgICAgICAgIH0gZWxzZSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQKICAgICAgICAgICAgIC8qIHZlcmlmeSB0aGF0IHRoZSBjbGllbnQncyBjZXJ0aWZpY2F0ZSBpcyB0aGUgY29ycmVjdCBvbmUgKi8KICAgICAgICAgCiAgICAgICAgICAgICBpZiAoKHZlcmlmeXJlc3VsdCA9IG5ldHNubXBfdGxzYmFzZV92ZXJpZnlfY2xpZW50X2NlcnQodGxzZGF0YS0+c3NsLCB0bHNkYXRhKSkKQEAgLTg5Niw2ICs5NTcsOSBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgdGxzZGF0YS0+ZmxhZ3MgfD0gTkVUU05NUF9UTFNCQVNFX0NFUlRfRlBfVkVSSUZJRUQ7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgiZHRsc3VkcCIsICJWZXJpZmllZCB0aGUgY2xpZW50J3MgY2VydGlmaWNhdGVcbiIpKTsKKyNlbHNlIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KKyAgICAgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KICAgICAgICAgfQogICAgIH0KIApAQCAtOTA3LDcgKzk3MSw5IEBACiAgICAgfQogCiAgICAgREVCVUdJRiAoIjk6ZHRsc3VkcCIpIHsKLSAgICAgICAgY2hhciAqc3RyID0gbmV0c25tcF91ZHBfZm10YWRkcihOVUxMLCBhZGRyX3BhaXIsIHNpemVvZihuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyKSk7CisgICAgICAgIGNoYXIgKnN0ciA9CisgICAgICAgICAgICB0LT5iYXNlX3RyYW5zcG9ydC0+Zl9mbXRhZGRyKHQsIGFkZHJfcGFpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobmV0c25tcF9pbmRleGVkX2FkZHJfcGFpcikpOwogICAgICAgICBERUJVR01TR1RMKCgiOTpkdGxzdWRwIiwKICAgICAgICAgICAgICAgICAgICAgInJlY3Zmcm9tIGZkICVkIGdvdCAlZCBieXRlcyAoZnJvbSAlcylcbiIsCiAgICAgICAgICAgICAgICAgICAgIHQtPnNvY2ssIHJjLCBzdHIpKTsKQEAgLTk1NSwzOSArMTAyMSwyNSBAQAogewogICAgIGludCByYyA9IC0xOwogICAgIG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIgKmFkZHJfcGFpciA9IE5VTEw7Ci0gICAgc3RydWN0IHNvY2thZGRyICp0byA9IE5VTEw7CiAgICAgYmlvX2NhY2hlICpjYWNoZXAgPSBOVUxMOwogICAgIG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSAqdG1TdGF0ZVJlZiA9IE5VTEw7CiAgICAgdV9jaGFyIG91dGJ1Zls2NTUzNV07CiAgICAgX25ldHNubXBUTFNCYXNlRGF0YSAqdGxzZGF0YSA9IE5VTEw7CisgICAgaW50IHNvY2tzaXplOworICAgIHN0cnVjdCBzb2NrYWRkciAqc2E7CiAgICAgCiAgICAgREVCVUdUUkFDRVRPSygiOTpkdGxzdWRwIik7CiAgICAgREVCVUdNU0dUTCgoImR0bHN1ZHAiLCAic2VuZGluZyAlZCBieXRlc1xuIiwgc2l6ZSkpOwogCi0gICAgLyogZGV0ZXJtaW5lIHJlbW90ZSBhZGRyZXNzZXMgKi8KLSAgICBpZiAob3BhcXVlICE9IE5VTEwgJiYgKm9wYXF1ZSAhPSBOVUxMICYmCi0gICAgICAgICpvbGVuZ3RoID09IHNpemVvZihuZXRzbm1wX3RtU3RhdGVSZWZlcmVuY2UpKSB7Ci0gICAgICAgIHRtU3RhdGVSZWYgPSAobmV0c25tcF90bVN0YXRlUmVmZXJlbmNlICopICpvcGFxdWU7Ci0KLSAgICAgICAgaWYgKHRtU3RhdGVSZWYtPmhhdmVfYWRkcmVzc2VzKQotICAgICAgICAgICAgYWRkcl9wYWlyID0gJih0bVN0YXRlUmVmLT5hZGRyZXNzZXMpOwotICAgICAgICBlbHNlIGlmICh0ICE9IE5VTEwgJiYgdC0+ZGF0YSAhPSBOVUxMICYmCi0gICAgICAgICAgICAgICAgIHQtPmRhdGFfbGVuZ3RoID09IHNpemVvZihuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyKSkKLSAgICAgICAgICAgIGFkZHJfcGFpciA9IChuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyICopICh0LT5kYXRhKTsKLSAgICAgICAgZWxzZSBpZiAodCAhPSBOVUxMICYmIHQtPmRhdGEgIT0gTlVMTCAmJgotICAgICAgICAgICAgICAgICB0LT5kYXRhX2xlbmd0aCA9PSBzaXplb2YoX25ldHNubXBUTFNCYXNlRGF0YSkpIHsKLSAgICAgICAgICAgIHRsc2RhdGEgPSAoX25ldHNubXBUTFNCYXNlRGF0YSAqKSB0LT5kYXRhOwotICAgICAgICAgICAgYWRkcl9wYWlyID0gKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIgKikgKHRsc2RhdGEtPnJlbW90ZV9hZGRyKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAodCAhPSBOVUxMICYmIHQtPmRhdGEgIT0gTlVMTCAmJgotICAgICAgICAgICAgICAgdC0+ZGF0YV9sZW5ndGggPT0gc2l6ZW9mKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIpKSB7Ci0gICAgICAgIGFkZHJfcGFpciA9IChuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyICopICh0LT5kYXRhKTsKLSAgICB9IGVsc2UgaWYgKHQgIT0gTlVMTCAmJiB0LT5kYXRhICE9IE5VTEwgJiYKLSAgICAgICAgICAgICAgIHQtPmRhdGFfbGVuZ3RoID09IHNpemVvZihfbmV0c25tcFRMU0Jhc2VEYXRhKSkgewotICAgICAgICB0bHNkYXRhID0gKF9uZXRzbm1wVExTQmFzZURhdGEgKikgdC0+ZGF0YTsKLSAgICAgICAgYWRkcl9wYWlyID0gKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIgKikgKHRsc2RhdGEtPnJlbW90ZV9hZGRyKTsKKyAgICBpZiAoTlVMTCA9PSB0IHx8IHQtPnNvY2sgPD0gMCkgeworICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9UTFNUTV9TTk1QVExTVE1TRVNTSU9OSU5WQUxJRENBQ0hFUyk7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJpbnZhbGlkIG5ldHNubXBfZHRsc3VkcF9zZW5kIHVzYWdlXG4iKTsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAorICAgIC8qIGRldGVybWluZSByZW1vdGUgYWRkcmVzc2VzICovCisgICAgYWRkcl9wYWlyID0gX2V4dHJhY3RfYWRkcl9wYWlyKHQsIG9wYXF1ZSA/ICpvcGFxdWUgOiBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGVuZ3RoID8gKm9sZW5ndGggOiAwKTsKICAgICBpZiAoTlVMTCA9PSBhZGRyX3BhaXIpIHsKICAgICAgIC8qIFJGQzU5NTM6IHNlY3Rpb24gNS4yLCBzdGVwIDE6CiAgICAgICAgMSkgIElmIHRtU3RhdGVSZWZlcmVuY2UgZG9lcyBub3QgcmVmZXIgdG8gYSBjYWNoZSBjb250YWluaW5nIHZhbHVlcwpAQCAtMTAwMiwxNCArMTA1NCw2IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICB0byA9IChzdHJ1Y3Qgc29ja2FkZHIgKikgJihhZGRyX3BhaXItPnJlbW90ZV9hZGRyKTsKLQotICAgIGlmIChOVUxMID09IHRvIHx8IE5VTEwgPT0gdCB8fCB0LT5zb2NrIDw9IDApIHsKLSAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVExTVE1fU05NUFRMU1RNU0VTU0lPTklOVkFMSURDQUNIRVMpOwotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiaW52YWxpZCBuZXRzbm1wX2R0bHN1ZHBfc2VuZCB1c2FnZVxuIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KICAgICAvKiBSRkM1OTUzOiBzZWN0aW9uIDUuMiwgc3RlcCAyOgogICAgICAgIDIpICBFeHRyYWN0IHRoZSB0bVNlc3Npb25JRCwgdG1UcmFuc3BvcnREb21haW4sIHRtVHJhbnNwb3J0QWRkcmVzcywKICAgICAgICAgICAgdG1TZWN1cml0eU5hbWUsIHRtUmVxdWVzdGVkU2VjdXJpdHlMZXZlbCwgYW5kIHRtU2FtZVNlY3VyaXR5CkBAIC0xMDIzLDYgKzEwNjcsOSBAQAogICAgICAgIC0gaWYgd2UgZG9uJ3QgaGF2ZSBhIHNlc3Npb24geWV0IChlZywgbm8gdG1TZXNzaW9uSUQgZnJvbSB0aGUKICAgICAgICAgIHNwZWNzKSB0aGVuIHdlIGNyZWF0ZSBvbmUgYXV0b21hdGljYWxseSBoZXJlLgogICAgICovCisgICAgaWYgKG9wYXF1ZSAhPSBOVUxMICYmICpvcGFxdWUgIT0gTlVMTCAmJgorICAgICAgICBvbGVuZ3RoICE9IE5VTEwgJiYgKm9sZW5ndGggPT0gc2l6ZW9mKG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSkpCisgICAgICAgIHRtU3RhdGVSZWYgPSAobmV0c25tcF90bVN0YXRlUmVmZXJlbmNlICopICpvcGFxdWU7CiAKIAogICAgIC8qIFJGQzU5NTM6IHNlY3Rpb24gNS4yLCBzdGVwIDM6CkBAIC0xMTA0LDcgKzExNTEsNyBAQAogICAgIH0KIAogICAgIERFQlVHSUYgKCI5OmR0bHN1ZHAiKSB7Ci0gICAgICAgIGNoYXIgKnN0ciA9IG5ldHNubXBfdWRwX2ZtdGFkZHIoTlVMTCwgKHZvaWQgKikgYWRkcl9wYWlyLAorICAgICAgICBjaGFyICpzdHIgPSB0LT5iYXNlX3RyYW5zcG9ydC0+Zl9mbXRhZGRyKHQsICh2b2lkICopIGFkZHJfcGFpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobmV0c25tcF9pbmRleGVkX2FkZHJfcGFpcikpOwogICAgICAgICBERUJVR01TR1RMKCgiOTpkdGxzdWRwIiwgInNlbmQgJWQgYnl0ZXMgZnJvbSAlcCB0byAlcyBvbiBmZCAlZFxuIiwKICAgICAgICAgICAgICAgICAgICAgc2l6ZSwgYnVmLCBzdHIsIHQtPnNvY2spKTsKQEAgLTExNzIsMTQgKzEyMTksOSBAQAogICAgICAgICAvKiBpbiB0aGVvcnkgYW4gb2sgdGhpbmcgKi8KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotI2lmIGRlZmluZWQoRklYTUUpICYmIGRlZmluZWQobGludXgpICYmIGRlZmluZWQoSVBfUEtUSU5GTykKLSAgICAvKiBYWFg6IGJlZm9yZSB0aGlzIGNhbiB3b3JrLCB3ZSBuZWVkIHRvIHJlbWVtYmVyIGFkZHJlc3Mgd2UKLSAgICAgICByZWNlaXZlZCBpdCBmcm9tIChhZGRyX3BhaXIpICovCi0gICAgcmMgPSBuZXRzbm1wX3VkcGJhc2Vfc2VuZHRvKHQtPnNvY2ssICZjYWNoZXAtPnNvY2thZGRyICByZW1vdGUgIGFkZHJfcGFpciA/ICYoYWRkcl9wYWlyLT5sb2NhbF9hZGRyKSA6IE5VTEwsIHRvLCBvdXRidWYsIHJjKTsKLSNlbHNlCi0gICAgcmMgPSBzZW5kdG8odC0+c29jaywgb3V0YnVmLCByYywgMCwgKHN0cnVjdCBzb2NrYWRkciAqKSZjYWNoZXAtPnNvY2thZGRyLAotICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpKTsKLSNlbmRpZiAvKiBsaW51eCAmJiBJUF9QS1RJTkZPICovCisgICAgc29ja3NpemUgPSBuZXRzbm1wX3NvY2thZGRyX3NpemUoJmNhY2hlcC0+c2FzLnNhKTsKKyAgICBzYSA9ICZjYWNoZXAtPnNhcy5zYTsKKyAgICByYyA9IHQtPmJhc2VfdHJhbnNwb3J0LT5mX3NlbmQodCwgb3V0YnVmLCByYywgKHZvaWQqKikmc2EsICZzb2Nrc2l6ZSk7CiAKICAgICByZXR1cm4gcmM7CiB9CkBAIC0xMjAzLDcgKzEyNDUsNyBAQAogICAgICAgICAgICAgc25tcFRsc3RtU2Vzc2lvblNlcnZlckNsb3NlcyBjb3VudGVyIGFzIGFwcHJvcHJpYXRlLgogICAgICovCiAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVExTVE1fU05NUFRMU1RNU0VTU0lPTkNMSUVOVENMT1NFUyk7Ci0gICAgCisKICAgICAvKiBSRkM1OTUzOiBzZWN0aW9uIDUuNCwgc3RlcCAyOgogICAgICAgICAyKSAgTG9vayB1cCB0aGUgc2Vzc2lvbiB1c2luZyB0aGUgdG1TZXNzaW9uSUQuCiAgICAgKi8KQEAgLTEyMTMsOCArMTI1NSw4IEBACiAgICAgaWYgKE5VTEwgIT0gdC0+ZGF0YSAmJiB0LT5kYXRhX2xlbmd0aCA9PSBzaXplb2YoX25ldHNubXBUTFNCYXNlRGF0YSkpIHsKICAgICAgICAgdGxzYmFzZSA9IChfbmV0c25tcFRMU0Jhc2VEYXRhICopIHQtPmRhdGE7CiAKLSAgICAgICAgaWYgKHRsc2Jhc2UtPnJlbW90ZV9hZGRyKQotICAgICAgICAgICAgY2FjaGVwID0gZmluZF9iaW9fY2FjaGUoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKXRsc2Jhc2UtPnJlbW90ZV9hZGRyKTsKKyAgICAgICAgaWYgKHRsc2Jhc2UtPmFkZHIpCisgICAgICAgICAgICBjYWNoZXAgPSBmaW5kX2Jpb19jYWNoZSgmdGxzYmFzZS0+YWRkci0+cmVtb3RlX2FkZHIpOwogICAgIH0KIAogICAgIC8qIFJGQzU5NTM6IHNlY3Rpb24gNS40LCBzdGVwIDM6CkBAIC0xMjMzLDExICsxMjc1LDExIEBACiAgICAgICAgIGludCBvcGFxdWVfbGVuID0gMDsKICAgICAgICAgZmRfc2V0IHJlYWRmczsKICAgICAgICAgc3RydWN0IHRpbWV2YWwgdHY7Ci0KKyAKICAgICAgICAgREVCVUdNU0dUTCgoImR0bHN1ZHA6Y2xvc2UiLAogCQkgICAgIiUiIE5FVFNOTVBfUFJJeiAiZCBieXRlcyByZW1haW4gaW4gd3JpdGVfY2FjaGVcbiIsCiAgICAgICAgICAgICAgICAgICAgIGNhY2hlcC0+d3JpdGVfY2FjaGVfbGVuKSk7Ci0KKyAKICAgICAgICAgLyoKICAgICAgICAgICogaWYgbmVnb3RpYXRpb25zIGhhdmUgY29tcGxldGVkIGFuZCB3ZSd2ZSByZWNlaXZlZCBkYXRhLCB0cnkgYW5kCiAgICAgICAgICAqIHNlbmQgYW55IHF1ZXVlZCBwYWNrZXRzLgpAQCAtMTI1NCw3ICsxMjk2LDcgQEAKICAgICAgICAgICAgICAgICBfbmV0c25tcF9iaW9fdHJ5X2FuZF93cml0ZV9idWZmZXJlZCh0LCBjYWNoZXApOwogICAgICAgICAgICAgICAgIGlmIChjYWNoZXAtPndyaXRlX2NhY2hlX2xlbiA9PSAwKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLQorIAogICAgICAgICAgICAgICAgIC8qIGlmIHdlJ3ZlIGZhaWxlZCB0aGF0LCB3ZSBwcm9iYWJseSBuZWVkIHRvIHdhaXQgZm9yIHBhY2tldHMgKi8KICAgICAgICAgICAgICAgICBGRF9aRVJPKCZyZWFkZnMpOwogICAgICAgICAgICAgICAgIEZEX1NFVCh0LT5zb2NrLCAmcmVhZGZzKTsKQEAgLTEzMDQsNiArMTM0NiwxMyBAQAogY2hhciAqCiBuZXRzbm1wX2R0bHN1ZHBfZm10YWRkcihuZXRzbm1wX3RyYW5zcG9ydCAqdCwgdm9pZCAqZGF0YSwgaW50IGxlbikKIHsKKyAgICBpbnQgICAgICAgICAgICAgIHNhX2xlbjsKKyAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNhID0gX2ZpbmRfcmVtb3RlX3NvY2thZGRyKHQsIGRhdGEsIGxlbiwgJnNhX2xlbik7CisgICAgaWYgKHNhKSB7CisgICAgICAgIGRhdGEgPSBzYTsKKyAgICAgICAgbGVuID0gc2FfbGVuOworICAgIH0KKwogICAgIHJldHVybiBuZXRzbm1wX2lwdjRfZm10YWRkcigiRFRMU1VEUCIsIHQsIGRhdGEsIGxlbik7CiB9CiAKQEAgLTEzMTMsNDYgKzEzNjIsNDQgQEAKICAqIHRoZSByZW1vdGUgYWRkcmVzcyB0byBzZW5kIHRoaW5ncyB0by4gIAogICovCiAKLW5ldHNubXBfdHJhbnNwb3J0ICoKLW5ldHNubXBfZHRsc3VkcF90cmFuc3BvcnQoc3RydWN0IHNvY2thZGRyX2luICphZGRyLCBpbnQgbG9jYWwpCitzdGF0aWMgbmV0c25tcF90cmFuc3BvcnQgKgorX3RyYW5zcG9ydF9jb21tb24obmV0c25tcF90cmFuc3BvcnQgKnQsIGludCBsb2NhbCkKIHsKLSAgICBuZXRzbm1wX3RyYW5zcG9ydCAqdCA9IE5VTEw7CisgICAgY2hhciAqdG1wID0gTlVMTDsKKyAgICBpbnQgdG1wX2xlbjsKIAogICAgIERFQlVHVFJBQ0VUT0soIjk6ZHRsc3VkcCIpOwogCi0gICAgdCA9IG5ldHNubXBfdWRwaXB2NGJhc2VfdHJhbnNwb3J0KGFkZHIsIGxvY2FsKTsKICAgICBpZiAoTlVMTCA9PSB0KQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIC8qKiBzYXZlIGJhc2UgdHJhbnNwb3J0IGZvciBjbGllbnRzOyBuZWVkIGluIHNlbmQvcmVjdiBmdW5jdGlvbnMgbGF0ZXIgKi8KKyAgICBpZiAodC0+ZGF0YSkgeyAvKiBkb24ndCBjb3B5IGRhdGEgKi8KKyAgICAgICAgdG1wID0gdC0+ZGF0YTsKKyAgICAgICAgdG1wX2xlbiA9IHQtPmRhdGFfbGVuZ3RoOworICAgICAgICB0LT5kYXRhID0gTlVMTDsKKyAgICB9CisgICAgdC0+YmFzZV90cmFuc3BvcnQgPSBuZXRzbm1wX3RyYW5zcG9ydF9jb3B5KHQpOworCisgICAgaWYgKHRtcCkgeworICAgICAgICB0LT5kYXRhID0gdG1wOworICAgICAgICB0LT5kYXRhX2xlbmd0aCA9IHRtcF9sZW47CisgICAgfQogICAgIGlmIChOVUxMICE9IHQtPmRhdGEgJiYKICAgICAgICAgdC0+ZGF0YV9sZW5ndGggPT0gc2l6ZW9mKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIpKSB7CiAgICAgICAgIF9uZXRzbm1wVExTQmFzZURhdGEgKnRsc2RhdGEgPQogICAgICAgICAgICAgbmV0c25tcF90bHNiYXNlX2FsbG9jYXRlX3Rsc2RhdGEodCwgbG9jYWwpOwotICAgICAgICB0bHNkYXRhLT5yZW1vdGVfYWRkciA9IHQtPmRhdGE7CisgICAgICAgIHRsc2RhdGEtPmFkZHIgPSB0LT5kYXRhOwogICAgICAgICB0LT5kYXRhID0gdGxzZGF0YTsKICAgICAgICAgdC0+ZGF0YV9sZW5ndGggPSBzaXplb2YoX25ldHNubXBUTFNCYXNlRGF0YSk7CiAgICAgfQogCi0gICAgaWYgKCFsb2NhbCkgewotICAgICAgICAvKiBkdGxzIG5lZWRzIHRvIGJpbmQgdGhlIHNvY2tldCBmb3IgU1NMX3dyaXRlIHRvIHdvcmsgKi8KLSAgICAgICAgaWYgKGNvbm5lY3QodC0+c29jaywgKHN0cnVjdCBzb2NrYWRkciAqKSBhZGRyLCBzaXplb2YoKmFkZHIpKSA9PSAtMSkKLSAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJkdGxzOiBmYWlsZWQgdG8gY29ubmVjdFxuIik7Ci0gICAgfQotCi0gICAgLyogWFhYOiBQb3RlbnRpYWxseSBzZXQgc29jayBvcHRzIGhlcmUgKFNPX1NOREJVRi9TT19SQ1ZfQlVGKSAqLyAgICAgIAotICAgIC8qIFhYWDogYW5kIGJ1ZiBzaXplICovICAgICAgICAKLQogICAgIC8qCiAgICAgICogU2V0IERvbWFpbgogICAgICAqLwogICAgIHQtPmRvbWFpbiA9IG5ldHNubXBEVExTVURQRG9tYWluOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICB0LT5kb21haW5fbGVuZ3RoID0gbmV0c25tcERUTFNVRFBEb21haW5fbGVuOyAgICAgCiAKLSAgICAvKgotICAgICAqIDE2LWJpdCBsZW5ndGggZmllbGQsIDggYnl0ZSBEVExTIGhlYWRlciwgMjAgYnl0ZSBJUHY0IGhlYWRlciAgCi0gICAgICovCi0gICAgdC0+bXNnTWF4U2l6ZSAgICAgID0gMHhmZmZmIC0gOCAtIDIwOwotCiAgICAgdC0+Zl9yZWN2ICAgICAgICAgID0gbmV0c25tcF9kdGxzdWRwX3JlY3Y7CiAgICAgdC0+Zl9zZW5kICAgICAgICAgID0gbmV0c25tcF9kdGxzdWRwX3NlbmQ7CiAgICAgdC0+Zl9jbG9zZSAgICAgICAgID0gbmV0c25tcF9kdGxzdWRwX2Nsb3NlOwpAQCAtMTM2NiwyOSArMTQxMywxMDAgQEAKICAgICByZXR1cm4gdDsKIH0KIAotCi12b2lkCi1uZXRzbm1wX2R0bHN1ZHBfYWdlbnRfY29uZmlnX3Rva2Vuc19yZWdpc3Rlcih2b2lkKQorbmV0c25tcF90cmFuc3BvcnQgKgorbmV0c25tcF9kdGxzdWRwX3RyYW5zcG9ydChzdHJ1Y3Qgc29ja2FkZHJfaW4gKmFkZHIsIGludCBsb2NhbCkKIHsKKyAgICBuZXRzbm1wX3RyYW5zcG9ydCAqdCA9IE5VTEw7CisKKyAgICBERUJVR1RSQUNFVE9LKCJkdGxzdWRwIik7CisKKyAgICB0ID0gbmV0c25tcF91ZHBfdHJhbnNwb3J0KGFkZHIsIGxvY2FsKTsKKyAgICBpZiAoTlVMTCA9PSB0KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIF90cmFuc3BvcnRfY29tbW9uKHQsIGxvY2FsKTsKKworICAgIGlmICghbG9jYWwpIHsKKyAgICAgICAgLyogZHRscyBuZWVkcyB0byBiaW5kIHRoZSBzb2NrZXQgZm9yIFNTTF93cml0ZSB0byB3b3JrICovCisgICAgICAgIGlmIChjb25uZWN0KHQtPnNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikgYWRkciwgc2l6ZW9mKCphZGRyKSkgPT0gLTEpCisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZHRsczogZmFpbGVkIHRvIGNvbm5lY3RcbiIpOworICAgIH0KKworICAgIHJldHVybiB0OwogfQogCiAKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VRFBJUFY2X0RPTUFJTgorCitjaGFyICoKK25ldHNubXBfZHRsc3VkcDZfZm10YWRkcihuZXRzbm1wX3RyYW5zcG9ydCAqdCwgdm9pZCAqZGF0YSwgaW50IGxlbikKK3sKKyAgICBpbnQgICAgICAgICAgICAgIHNhX2xlbjsKKyAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNhID0gX2ZpbmRfcmVtb3RlX3NvY2thZGRyKHQsIGRhdGEsIGxlbiwgJnNhX2xlbik7CisgICAgaWYgKHNhKSB7CisgICAgICAgIGRhdGEgPSBzYTsKKyAgICAgICAgbGVuID0gc2FfbGVuOworICAgIH0KKworICAgIHJldHVybiBuZXRzbm1wX2lwdjZfZm10YWRkcigiRFRMU1VEUDYiLCB0LCBkYXRhLCBsZW4pOworfQorCisvKgorICogT3BlbiBhIERUTFMtYmFzZWQgdHJhbnNwb3J0IGZvciBTTk1QLiAgTG9jYWwgaXMgVFJVRSBpZiBhZGRyIGlzIHRoZSBsb2NhbAorICogYWRkcmVzcyB0byBiaW5kIHRvIChpLmUuIHRoaXMgaXMgYSBzZXJ2ZXItdHlwZSBzZXNzaW9uKTsgb3RoZXJ3aXNlIGFkZHIgaXMgCisgKiB0aGUgcmVtb3RlIGFkZHJlc3MgdG8gc2VuZCB0aGluZ3MgdG8uICAKKyAqLworCituZXRzbm1wX3RyYW5zcG9ydCAqCituZXRzbm1wX2R0bHN1ZHA2X3RyYW5zcG9ydChzdHJ1Y3Qgc29ja2FkZHJfaW42ICphZGRyLCBpbnQgbG9jYWwpCit7CisgICAgbmV0c25tcF90cmFuc3BvcnQgKnQgPSBOVUxMOworCisgICAgREVCVUdUUkFDRVRPSygiZHRsc3VkcCIpOworCisgICAgdCA9IG5ldHNubXBfdWRwNl90cmFuc3BvcnQoYWRkciwgbG9jYWwpOworICAgIGlmIChOVUxMID09IHQpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgX3RyYW5zcG9ydF9jb21tb24odCwgbG9jYWwpOworCisgICAgaWYgKCFsb2NhbCkgeworICAgICAgICAvKiBkdGxzIG5lZWRzIHRvIGJpbmQgdGhlIHNvY2tldCBmb3IgU1NMX3dyaXRlIHRvIHdvcmsgKi8KKyAgICAgICAgaWYgKGNvbm5lY3QodC0+c29jaywgKHN0cnVjdCBzb2NrYWRkciAqKSBhZGRyLCBzaXplb2YoKmFkZHIpKSA9PSAtMSkKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJkdGxzOiBmYWlsZWQgdG8gY29ubmVjdFxuIik7CisgICAgfQorCisgICAgLyogWFhYOiBQb3RlbnRpYWxseSBzZXQgc29jayBvcHRzIGhlcmUgKFNPX1NOREJVRi9TT19SQ1ZfQlVGKSAqLyAgICAgIAorICAgIC8qIFhYWDogYW5kIGJ1ZiBzaXplICovICAgICAgICAKKworICAgIHQtPmZfZm10YWRkciAgICAgICA9IG5ldHNubXBfZHRsc3VkcDZfZm10YWRkcjsKKworICAgIHJldHVybiB0OworfQorI2VuZGlmCiAKIAogbmV0c25tcF90cmFuc3BvcnQgKgogbmV0c25tcF9kdGxzdWRwX2NyZWF0ZV90c3RyaW5nKGNvbnN0IGNoYXIgKnN0ciwgaW50IGlzc2VydmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRlZmF1bHRfdGFyZ2V0KQogeworI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1VEUElQVjZfRE9NQUlOCisgICAgc3RydWN0IHNvY2thZGRyX2luNiBhZGRyNjsKKyNlbmRpZgogICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOwogICAgIG5ldHNubXBfdHJhbnNwb3J0ICp0OwogICAgIF9uZXRzbm1wVExTQmFzZURhdGEgKnRsc2RhdGE7CiAgICAgY2hhciBidWZbU1BSSU5UX01BWF9MRU5dLCAqY3A7CiAKLSAgICBpZiAobmV0c25tcF9zb2NrYWRkcl9pbjIoJmFkZHIsIHN0ciwgZGVmYXVsdF90YXJnZXQpKSB7CisgICAgaWYgKG5ldHNubXBfc29ja2FkZHJfaW4yKCZhZGRyLCBzdHIsIGRlZmF1bHRfdGFyZ2V0KSkKICAgICAgICAgdCA9IG5ldHNubXBfZHRsc3VkcF90cmFuc3BvcnQoJmFkZHIsIGlzc2VydmVyKTsKLSAgICB9IGVsc2UgeworI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1VEUElQVjZfRE9NQUlOCisgICAgZWxzZSBpZiAobmV0c25tcF9zb2NrYWRkcl9pbjZfMigmYWRkcjYsIHN0ciwgZGVmYXVsdF90YXJnZXQpKQorICAgICAgICB0ID0gbmV0c25tcF9kdGxzdWRwNl90cmFuc3BvcnQoJmFkZHI2LCBpc3NlcnZlcik7CisjZW5kaWYKKyAgICBlbHNlCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKwogCiAgICAgLyogc2VlIGlmIHdlIGNhbiBleHRyYWN0IHRoZSByZW1vdGUgaG9zdG5hbWUgKi8KICAgICBpZiAoIWlzc2VydmVyICYmIHQgJiYgdC0+ZGF0YSAmJiBzdHIpIHsKQEAgLTE0MTksNiArMTUzNywxNiBAQAogICAgICAgICBhZGRyLnNpbl9wb3J0ID0gaHRvbnMocG9ydHRtcCk7CiAgICAgICAgIHJldHVybiBuZXRzbm1wX2R0bHN1ZHBfdHJhbnNwb3J0KCZhZGRyLCBsb2NhbCk7CiAgICAgfQorI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1VEUElQVjZfRE9NQUlOCisgICAgZWxzZSBpZiAob19sZW4gPT0gMTgpIHsKKyAgICAgICAgc3RydWN0IHNvY2thZGRyX2luNiBhZGRyNjsKKyAgICAgICAgdW5zaWduZWQgc2hvcnQgcG9ydHRtcCA9IChvWzE2XSA8PCA4KSArIG9bMTddOworICAgICAgICBhZGRyNi5zaW42X2ZhbWlseSA9IEFGX0lORVQ2OworICAgICAgICBtZW1jcHkoKHVfY2hhciAqKSAmIChhZGRyNi5zaW42X2FkZHIuczZfYWRkciksIG8sIDQpOworICAgICAgICBhZGRyNi5zaW42X3BvcnQgPSBodG9ucyhwb3J0dG1wKTsKKyAgICAgICAgcmV0dXJuIG5ldHNubXBfZHRsc3VkcDZfdHJhbnNwb3J0KCZhZGRyNiwgbG9jYWwpOworICAgIH0KKyNlbmRpZgogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0xNDI2LDE2ICsxNTU0LDMyIEBACiBuZXRzbm1wX2R0bHN1ZHBfY3Rvcih2b2lkKQogewogICAgIGNoYXIgaW5kZXhuYW1lW10gPSAiX25ldHNubXBfYWRkcl9pbmZvIjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqcHJlZml4ZXNbXSA9IHsgImR0bHN1ZHAiLCAiZHRscyIKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VRFBJUFY2X0RPTUFJTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICJkdGxzdWRwNiIsICJkdGxzNiIKKyNlbmRpZgorICAgIH07CisgICAgaW50IGksIG51bV9wcmVmaXhlcyA9IHNpemVvZihwcmVmaXhlcykgLyBzaXplb2YoY2hhciAqKTsKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VRFBJUFY2X0RPTUFJTgorICAgIGNoYXIgaW5kZXhuYW1lNltdID0gIl9uZXRzbm1wX2FkZHJfaW5mbzYiOworI2VuZGlmCiAKICAgICBERUJVR01TR1RMKCgiZHRsc3VkcCIsICJyZWdpc3RlcmluZyBEVExTIGNvbnN0cnVjdG9yXG4iKSk7CiAKICAgICAvKiBjb25maWcgc2V0dGluZ3MgKi8KIAorI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1VEUElQVjZfRE9NQUlOCisgICAgaWYgKCFvcGVuc3NsX2FkZHJfaW5kZXg2KQorICAgICAgICBvcGVuc3NsX2FkZHJfaW5kZXg2ID0KKyAgICAgICAgICAgIFNTTF9nZXRfZXhfbmV3X2luZGV4KDAsIGluZGV4bmFtZTYsIE5VTEwsIE5VTEwsIE5VTEwpOworI2VuZGlmCisKICAgICBkdGxzdWRwRG9tYWluLm5hbWUgPSBuZXRzbm1wRFRMU1VEUERvbWFpbjsKICAgICBkdGxzdWRwRG9tYWluLm5hbWVfbGVuZ3RoID0gbmV0c25tcERUTFNVRFBEb21haW5fbGVuOwotICAgIGR0bHN1ZHBEb21haW4ucHJlZml4ID0gKGNvbnN0IGNoYXIqKiljYWxsb2MoMywgc2l6ZW9mKGNoYXIgKikpOwotICAgIGR0bHN1ZHBEb21haW4ucHJlZml4WzBdID0gImR0bHN1ZHAiOwotICAgIGR0bHN1ZHBEb21haW4ucHJlZml4WzFdID0gImR0bHMiOworICAgIGR0bHN1ZHBEb21haW4ucHJlZml4ID0gKGNvbnN0IGNoYXIqKiljYWxsb2MobnVtX3ByZWZpeGVzICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihjaGFyICopKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX3ByZWZpeGVzOyArKyBpKQorICAgICAgICBkdGxzdWRwRG9tYWluLnByZWZpeFtpXSA9IHByZWZpeGVzW2ldOwogCiAgICAgZHRsc3VkcERvbWFpbi5mX2NyZWF0ZV9mcm9tX3RzdHJpbmcgICAgID0gTlVMTDsKICAgICBkdGxzdWRwRG9tYWluLmZfY3JlYXRlX2Zyb21fdHN0cmluZ19uZXcgPSBuZXRzbm1wX2R0bHN1ZHBfY3JlYXRlX3RzdHJpbmc7CkBAIC0xNDU5LDYgKzE2MDMsOSBAQAogdHlwZWRlZiB1bmlvbiB7CiAgICAgICAgc3RydWN0IHNvY2thZGRyIHNhOwogICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBzNDsKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VRFBJUFY2X0RPTUFJTgorICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgczY7CisjZW5kaWYKIH0gX3BlZXJfdW5pb247CiAKIGludCBuZXRzbm1wX2R0bHNfZ2VuX2Nvb2tpZShTU0wgKnNzbCwgdW5zaWduZWQgY2hhciAqY29va2llLApAQCAtMTQ4Niw3ICsxNjMzLDcgQEAKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImR0bHM6IGZhaWxlZCB0byBnZXQgdGhlIHBlZXIgYWRkcmVzc1xuIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBwZWVyID0gKF9wZWVyX3VuaW9uICopJmNhY2hlcC0+c29ja2FkZHI7CisgICAgcGVlciA9IChfcGVlcl91bmlvbiAqKSZjYWNoZXAtPnNhczsKIAogICAgIC8qIENyZWF0ZSBidWZmZXIgd2l0aCBwZWVyJ3MgYWRkcmVzcyBhbmQgcG9ydCAqLwogICAgIGxlbmd0aCA9IDA7CkBAIC0xNDk1LDYgKzE2NDIsMTIgQEAKICAgICAgICAgbGVuZ3RoICs9IHNpemVvZihzdHJ1Y3QgaW5fYWRkcik7CiAgICAgICAgIGxlbmd0aCArPSBzaXplb2YocGVlci0+czQuc2luX3BvcnQpOwogICAgICAgICBicmVhazsKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VRFBJUFY2X0RPTUFJTgorICAgIGNhc2UgQUZfSU5FVDY6CisgICAgICAgIGxlbmd0aCArPSBzaXplb2Yoc3RydWN0IGluNl9hZGRyKTsKKyAgICAgICAgbGVuZ3RoICs9IHNpemVvZihwZWVyLT5zNi5zaW42X3BvcnQpOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJkdGxzIGdlbmVyYXRpbmcgY29va2llOiB1bmtub3duIGZhbWlseTogJWRcbiIsCiAgICAgICAgICAgICAgICAgIHBlZXItPnNhLnNhX2ZhbWlseSk7CkBAIC0xNTE1LDYgKzE2NjgsMTYgQEAKICAgICAgICAgICAgICAgICZwZWVyLT5zNC5zaW5fYWRkciwKICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgaW5fYWRkcikpOwogICAgICAgICBicmVhazsKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VRFBJUFY2X0RPTUFJTgorICAgIGNhc2UgQUZfSU5FVDY6CisgICAgICAgIG1lbWNweShidWZmZXIsCisgICAgICAgICAgICAgICAmcGVlci0+czYuc2luNl9wb3J0LAorICAgICAgICAgICAgICAgc2l6ZW9mKHBlZXItPnM2LnNpbjZfcG9ydCkpOworICAgICAgICBtZW1jcHkoYnVmZmVyICsgc2l6ZW9mKHBlZXItPnM2LnNpbjZfcG9ydCksCisgICAgICAgICAgICAgICAmcGVlci0+czYuc2luNl9hZGRyLAorICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJkdGxzOiB1bmtub3duIGFkZHJlc3MgZmFtaWx5IGdlbmVyYXRpbmcgYSBjb29raWVcbiIpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE1NTIsNyArMTcxNSw3IEBACiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJkdGxzOiBmYWlsZWQgdG8gZ2V0IHRoZSBwZWVyIGFkZHJlc3NcbiIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgcGVlciA9IChfcGVlcl91bmlvbiAqKSZjYWNoZXAtPnNvY2thZGRyOworICAgIHBlZXIgPSAoX3BlZXJfdW5pb24gKikmY2FjaGVwLT5zYXM7CiAKICAgICAvKiBDcmVhdGUgYnVmZmVyIHdpdGggcGVlcidzIGFkZHJlc3MgYW5kIHBvcnQgKi8KICAgICBsZW5ndGggPSAwOwpAQCAtMTU2MSw2ICsxNzI0LDEyIEBACiAgICAgICAgIGxlbmd0aCArPSBzaXplb2Yoc3RydWN0IGluX2FkZHIpOwogICAgICAgICBsZW5ndGggKz0gc2l6ZW9mKHBlZXItPnM0LnNpbl9wb3J0KTsKICAgICAgICAgYnJlYWs7CisjaWZkZWYgTkVUU05NUF9UUkFOU1BPUlRfVURQSVBWNl9ET01BSU4KKyAgICBjYXNlIEFGX0lORVQ2OgorICAgICAgICBsZW5ndGggKz0gc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcik7CisgICAgICAgIGxlbmd0aCArPSBzaXplb2YocGVlci0+czYuc2luNl9wb3J0KTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAogICAgICAgICAgICAgICAgICAiZHRsczogdW5rbm93biBhZGRyZXNzIGZhbWlseSAlZCBnZW5lcmF0aW5nIGEgY29va2llXG4iLApAQCAtMTU4Miw2ICsxNzUxLDE2IEBACiAgICAgICAgICAgICAgICAmcGVlci0+czQuc2luX2FkZHIsCiAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IGluX2FkZHIpKTsKICAgICAgICAgYnJlYWs7CisjaWZkZWYgTkVUU05NUF9UUkFOU1BPUlRfVURQSVBWNl9ET01BSU4KKyAgICBjYXNlIEFGX0lORVQ2OgorICAgICAgICBtZW1jcHkoYnVmZmVyLAorICAgICAgICAgICAgICAgJnBlZXItPnM2LnNpbjZfcG9ydCwKKyAgICAgICAgICAgICAgIHNpemVvZihwZWVyLT5zNi5zaW42X3BvcnQpKTsKKyAgICAgICAgbWVtY3B5KGJ1ZmZlciArIHNpemVvZihwZWVyLT5zNi5zaW42X3BvcnQpLAorICAgICAgICAgICAgICAgJnBlZXItPnM2LnNpbjZfYWRkciwKKyAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAogICAgICAgICAgICAgICAgICAiZHRsczogdW5rbm93biBhZGRyZXNzIGZhbWlseSAlZCBnZW5lcmF0aW5nIGEgY29va2llXG4iLApkaWZmIC0tZ2l0IGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4uYyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVBYRG9tYWluLmMKaW5kZXggZmRjODA3MS4uMTM0NjE1NiAxMDA2NDQKLS0tIGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4uYworKysgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5jCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvY29uZmlnX2FwaS5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaD4KIAogI2RlZmluZSBTTk1QX0lQWF9ERUZBVUxUX1BPUlQJMzY4NzkgICAvKiAgU3BlY2lmaWVkIGluIFJGQyAxNDIwLiAgKi8KIHN0YXRpYyBuZXRzbm1wX3Rkb21haW4gaXB4RG9tYWluOwpAQCAtMTgyLDExICsxODMsMTYgQEAKICAgICBuZXRzbm1wX3RyYW5zcG9ydCAqdCA9IE5VTEw7CiAgICAgaW50ICAgICAgICAgICAgIHJjID0gMDsKIAorI2lmZGVmIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQKKyAgICBpZiAobG9jYWwpCisgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KKwogICAgIGlmIChhZGRyID09IE5VTEwgfHwgYWRkci0+c2lweF9mYW1pbHkgIT0gQUZfSVBYKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHQgPSAobmV0c25tcF90cmFuc3BvcnQgKikgbWFsbG9jKHNpemVvZihuZXRzbm1wX3RyYW5zcG9ydCkpOworICAgIHQgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdHJhbnNwb3J0KTsKICAgICBpZiAodCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTE5OSw4ICsyMDUsNiBAQAogICAgICAgICBmcmVlKHN0cik7CiAgICAgfQogCi0gICAgbWVtc2V0KHQsIDAsIHNpemVvZihuZXRzbm1wX3RyYW5zcG9ydCkpOwotCiAgICAgdC0+ZG9tYWluID0gbmV0c25tcElQWERvbWFpbjsKICAgICB0LT5kb21haW5fbGVuZ3RoID0gbmV0c25tcElQWERvbWFpbl9sZW47CiAKQEAgLTIxMSw2ICsyMTUsNyBAQAogICAgIH0KIAogICAgIGlmIChsb2NhbCkgeworI2lmbmRlZiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUCiAgICAgICAgIHQtPmxvY2FsID0gKHVuc2lnbmVkIGNoYXIqKW1hbGxvYygxMik7CiAgICAgICAgIGlmICh0LT5sb2NhbCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBuZXRzbm1wX3RyYW5zcG9ydF9mcmVlKHQpOwpAQCAtMjM2LDYgKzI0MSw5IEBACiAgICAgICAgIH0KICAgICAgICAgdC0+ZGF0YSA9IE5VTEw7CiAgICAgICAgIHQtPmRhdGFfbGVuZ3RoID0gMDsKKyNlbHNlIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLwogICAgIH0gZWxzZSB7CiAgICAgICAgIHQtPnJlbW90ZSA9ICh1bnNpZ25lZCBjaGFyKiltYWxsb2MoMTIpOwogICAgICAgICBpZiAodC0+cmVtb3RlID09IE5VTEwpIHsKZGlmZiAtLWdpdCBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4uYyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4uYwppbmRleCA5ZjRiNmE5Li40MWE2Y2I2IDEwMDY0NAotLS0gYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmMKKysrIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY0QmFzZURvbWFpbi5jCkBAIC0yMDIsMTkgKzIwMiwxOSBAQAogICAgICAgICB0byA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikgJihhZGRyX3BhaXItPnJlbW90ZV9hZGRyKTsKICAgICAgICAgaWYgKHRvID09IE5VTEwpIHsKICAgICAgICAgICAgIHNucHJpbnRmKHRtcCwgc2l6ZW9mKHRtcCksICIlczogdW5rbm93bi0+WyVzXTolaHUiLCBwcmVmaXgsCi0gICAgICAgICAgICAgICAgICAgICBpbmV0X250b2EoYWRkcl9wYWlyLT5sb2NhbF9hZGRyLnNpbl9hZGRyKSwKLSAgICAgICAgICAgICAgICAgICAgIG50b2hzKGFkZHJfcGFpci0+bG9jYWxfYWRkci5zaW5fcG9ydCkpOworICAgICAgICAgICAgICAgICAgICAgaW5ldF9udG9hKGFkZHJfcGFpci0+bG9jYWxfYWRkci5zaW4uc2luX2FkZHIpLAorICAgICAgICAgICAgICAgICAgICAgbnRvaHMoYWRkcl9wYWlyLT5sb2NhbF9hZGRyLnNpbi5zaW5fcG9ydCkpOwogICAgICAgICB9IGVsc2UgaWYgKCB0ICYmIHQtPmZsYWdzICYgTkVUU05NUF9UUkFOU1BPUlRfRkxBR19IT1NUTkFNRSApIHsKICAgICAgICAgICAgIC8qIFhYWDogaG1tLi4uICB3aHkgaXNuJ3QgdGhpcyBwcmVmaXhlZCAqLwogICAgICAgICAgICAgLyogYXNzdW1pbmcgaW50ZW50aW9uYWwgKi8KLSAgICAgICAgICAgIGhvc3QgPSBnZXRob3N0YnlhZGRyKChjaGFyICopJnRvLT5zaW5fYWRkciwgNCwgQUZfSU5FVCk7CisgICAgICAgICAgICBob3N0ID0gbmV0c25tcF9nZXRob3N0YnlhZGRyKChjaGFyICopJnRvLT5zaW5fYWRkciwgNCwgQUZfSU5FVCk7CiAgICAgICAgICAgICByZXR1cm4gKGhvc3QgPyBzdHJkdXAoaG9zdC0+aF9uYW1lKSA6IE5VTEwpOyAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNucHJpbnRmKHRtcCwgc2l6ZW9mKHRtcCksICIlczogWyVzXTolaHUtPiIsIHByZWZpeCwKICAgICAgICAgICAgICAgICAgICAgIGluZXRfbnRvYSh0by0+c2luX2FkZHIpLCBudG9ocyh0by0+c2luX3BvcnQpKTsKICAgICAgICAgICAgIHNucHJpbnRmKHRtcCArIHN0cmxlbih0bXApLCBzaXplb2YodG1wKS1zdHJsZW4odG1wKSwgIlslc106JWh1IiwKLSAgICAgICAgICAgICAgICAgICAgIGluZXRfbnRvYShhZGRyX3BhaXItPmxvY2FsX2FkZHIuc2luX2FkZHIpLAotICAgICAgICAgICAgICAgICAgICAgbnRvaHMoYWRkcl9wYWlyLT5sb2NhbF9hZGRyLnNpbl9wb3J0KSk7CisgICAgICAgICAgICAgICAgICAgICBpbmV0X250b2EoYWRkcl9wYWlyLT5sb2NhbF9hZGRyLnNpbi5zaW5fYWRkciksCisgICAgICAgICAgICAgICAgICAgICBudG9ocyhhZGRyX3BhaXItPmxvY2FsX2FkZHIuc2luLnNpbl9wb3J0KSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgdG1wW3NpemVvZih0bXApLTFdID0gJ1wwJzsKZGlmZiAtLWdpdCBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4uYyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4uYwppbmRleCA1ZDZlNTcxLi4wZTBmYTgzIDEwMDY0NAotLS0gYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmMKKysrIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5jCkBAIC0zLDggKzMsMTEgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorCiAjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmg+CiAKICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtOTAsNyArOTMsNyBAQAogICAgIGNoYXIgYWRkcltJTkVUNl9BRERSU1RSTEVOXTsKICAgICBjaGFyIHRtcFtJTkVUNl9BRERSU1RSTEVOICsgMThdOwogCi0gICAgREVCVUdNU0dUTCgoIm5ldHNubXBfdWRwNiIsICJmbXRhZGRyOiB0ID0gJXAsIGRhdGEgPSAlcCwgbGVuID0gJWRcbiIsIHQsCisgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfaXB2NiIsICJmbXRhZGRyOiB0ID0gJXAsIGRhdGEgPSAlcCwgbGVuID0gJWRcbiIsIHQsCiAgICAgICAgICAgICAgICAgZGF0YSwgbGVuKSk7CiAgICAgaWYgKGRhdGEgIT0gTlVMTCAmJiBsZW4gPT0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKSB7CiAgICAgICAgIHRvID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKikgZGF0YTsKQEAgLTMzNiwxNiArMzM5LDkgQEAKICAgICAgICAgICAgIGhpbnQuYWlfc29ja3R5cGUgPSBTT0NLX0RHUkFNOwogICAgICAgICAgICAgaGludC5haV9wcm90b2NvbCA9IDA7CiAKLSAgICAgICAgICAgIGVyciA9IGdldGFkZHJpbmZvKHBlZXJuYW1lLCBOVUxMLCAmaGludCwgJmFkZHJzKTsKKyAgICAgICAgICAgIGVyciA9IG5ldHNubXBfZ2V0YWRkcmluZm8ocGVlcm5hbWUsIE5VTEwsICZoaW50LCAmYWRkcnMpOwogICAgICAgICB9CiAgICAgICAgIGlmIChlcnIgIT0gMCkgewotI2lmIEhBVkVfR0FJX1NUUkVSUk9SCi0gICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZ2V0YWRkcmluZm8oXCIlc1wiLCBOVUxMLCAuLi4pOiAlc1xuIiwgcGVlcm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICBnYWlfc3RyZXJyb3IoZXJyKSk7Ci0jZWxzZQotICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImdldGFkZHJpbmZvKFwiJXNcIiwgTlVMTCwgLi4uKTogKGVycm9yICVkKVxuIiwKLSAgICAgICAgICAgICAgICAgICAgIHBlZXJuYW1lLCBlcnIpOwotI2VuZGlmCiAgICAgICAgICAgICBmcmVlKHBlZXJuYW1lKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC0zNzAsNyArMzY2LDcgQEAKICAgICAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfc29ja2FkZHJfaW42IiwgImhvc3RuYW1lIChyZXNvbHZlZCBva2F5KVxuIikpOwogICAgICAgICBtZW1jcHkoJihhZGRyLT5zaW42X2FkZHIpLCBocC0+aF9hZGRyLCBocC0+aF9sZW5ndGgpOwogI2VsaWYgSEFWRV9HRVRIT1NUQllOQU1FCi0gICAgICAgIGhwID0gZ2V0aG9zdGJ5bmFtZShwZWVybmFtZSk7CisgICAgICAgIGhwID0gbmV0c25tcF9nZXRob3N0YnluYW1lKHBlZXJuYW1lKTsKICAgICAgICAgaWYgKGhwID09IE5VTEwpIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX3NvY2thZGRyX2luNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiaG9zdG5hbWUgKGNvdWxkbid0IHJlc29sdmUpXG4iKSk7CkBAIC00MTksMyArNDE1LDUgQEAKICAgICBzcHJpbnRmKGJ1ZiwgIjoldSIsIHJlbW90ZV9wb3J0KTsKICAgICByZXR1cm4gbmV0c25tcF9zb2NrYWRkcl9pbjZfMihhZGRyLCBpbnBlZXJuYW1lLCByZW1vdGVfcG9ydCA/IGJ1ZiA6IE5VTEwpOwogfQorCisjZW5kaWYgLyogTkVUU05NUF9FTkFCTEVfSVBWNiAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4uYyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wU1NIRG9tYWluLmMKaW5kZXggN2Y1MWY4Ni4uYTllZDgxZiAxMDA2NDQKLS0tIGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4uYworKysgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFNTSERvbWFpbi5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBTU0hEb21haW4uaD4KIApAQCAtNjAsNiArNjEsOCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFNvY2tldEJhc2VEb21haW4uaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmg+CiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHVzZXJfaW5mb3JtYXRpb24pCisKICNkZWZpbmUgTUFYX05BTUVfTEVOR1RIIDEyNwogCiAjZGVmaW5lIE5FVFNOTVBfU1NIVE9TTk1QX1ZFUlNJT04xICAgICAgMQpAQCAtODAsMTAgKzgzLDYgQEAKIGNvbnN0IG9pZCBuZXRzbm1wX3NubXBTU0hEb21haW5bXSA9IHsgVFJBTlNQT1JUX0RPTUFJTl9TU0hfSVAgfTsKIHN0YXRpYyBuZXRzbm1wX3Rkb21haW4gc3NoRG9tYWluOwogCi1jb25zdCBjaGFyICprZXlmaWxlMT0iL2hvbWUvaGFyZGFrZXIvLnNzaC9pZF9yc2EucHViIjsKLWNvbnN0IGNoYXIgKmtleWZpbGUyPSIvaG9tZS9oYXJkYWtlci8uc3NoL2lkX3JzYSI7Ci1jb25zdCBjaGFyICp1c2VybmFtZT0iaGFyZGFrZXIiOwotCiAjZGVmaW5lIFNOTVBTU0hET01BSU5fVVNFX0VYVEVSTkFMX1BJUEUgMQogCiAvKgpAQCAtNTg0LDYgKzU4MywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfU1NIVE9TTk1QX1NPQ0tFVCk7CiAgICAgY2hhciB0bXBzb2NrcGF0aFtNQVhQQVRITEVOXTsKIAorI2lmZGVmIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQKKyAgICBpZiAobG9jYWwpCisgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KKwogICAgIGlmIChhZGRyID09IE5VTEwgfHwgYWRkci0+c2luX2ZhbWlseSAhPSBBRl9JTkVUKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTU5Miw3ICs1OTYsNiBAQAogICAgIGlmICh0ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG1lbXNldCh0LCAwLCBzaXplb2YobmV0c25tcF90cmFuc3BvcnQpKTsKIAogICAgIHQtPmRvbWFpbiA9IG5ldHNubXBfc25tcFNTSERvbWFpbjsKICAgICB0LT5kb21haW5fbGVuZ3RoID0gbmV0c25tcF9zbm1wU1NIRG9tYWluX2xlbjsKQEAgLTYwNyw2ICs2MTAsNyBAQAogICAgIHQtPmRhdGFfbGVuZ3RoID0gc2l6ZW9mKG5ldHNubXBfc3NoX2FkZHJfcGFpcik7CiAKICAgICBpZiAobG9jYWwpIHsKKyNpZm5kZWYgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVAogI2lmZGVmIFNOTVBTU0hET01BSU5fVVNFX0VYVEVSTkFMX1BJUEUKIAogICAgICAgICAvKiBYWFg6IHNldCB0LT5sb2NhbCBhbmQgdC0+bG9jYWxfbGVuZ3RoICovCkBAIC03MTUsOSArNzE5LDQyIEBACiAgICAgICAgIC8qIFhYWDogdmVyaWZ5IHdlJ3JlIGluc2lkZSBzc2ggKi8KICAgICAgICAgdC0+c29jayA9IFNURElOX0ZJTEVOTzsKICNlbmRpZiAvKiAhIFNOTVBTU0hET01BSU5fVVNFX0VYVEVSTkFMX1BJUEUgKi8KLQorI2Vsc2UgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLworICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZiAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCiAgICAgfSBlbHNlIHsKLSAgICAgICAgLyogWFhYOiBuZWVkIGFuIGlwdjYgZnJpZW5kbHkgb25lIHRvbyAoc2lnaCkgKi8KKyAgICAgICAgY2hhciAqdXNlcm5hbWU7CisgICAgICAgIGNoYXIgKmtleWZpbGVwdWI7CisgICAgICAgIGNoYXIgKmtleWZpbGVwcml2OworICAgICAgICAKKyAgICAgICAgLyogdXNlIHRoZSByZXF1ZXN0ZWQgdXNlciBuYW1lICovCisgICAgICAgIC8qIFhYWDogZGVmYXVsdCB0byB0aGUgY3VycmVudCB1c2VyIG5hbWUgb24gdGhlIHN5c3RlbSBsaWtlIHNzaCBkb2VzICovCisgICAgICAgIHVzZXJuYW1lID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfU1NIX1VTRVJOQU1FKTsKKyAgICAgICAgaWYgKCF1c2VybmFtZSB8fCAwID09ICp1c2VybmFtZSkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIllvdSBtdXN0IHNwZWNpZnkgYSBzc2ggdXNlcm5hbWUgdG8gdXNlLiAgU2VlIHRoZSBzbm1wLmNvbmYgbWFudWFsIHBhZ2VcbiIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICAvKiB1c2UgdGhlIHJlcXVlc3RlZCBwdWJsaWMga2V5IGZpbGUgKi8KKyAgICAgICAga2V5ZmlsZXB1YiA9IG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfU1NIX1BVQktFWSk7CisgICAgICAgIGlmICgha2V5ZmlsZXB1YiB8fCAwID09ICprZXlmaWxlcHViKSB7CisgICAgICAgICAgICAvKiBYWFg6IGRlZmF1bHQgdG8gfi8uc3NoL2lkX3JzYS5wdWIgKi8KKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJZb3UgbXVzdCBzcGVjaWZ5IGEgc3NoIHB1YmxpYyBrZXkgZmlsZSB0byB1c2UuICBTZWUgdGhlIHNubXAuY29uZiBtYW51YWwgcGFnZVxuIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIHVzZSB0aGUgcmVxdWVzdGVkIHByaXZhdGUga2V5IGZpbGUgKi8KKyAgICAgICAga2V5ZmlsZXByaXYgPSBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9TU0hfUFJJVktFWSk7CisgICAgICAgIGlmICgha2V5ZmlsZXByaXYgfHwgMCA9PSAqa2V5ZmlsZXByaXYpIHsKKyAgICAgICAgICAgIC8qIFhYWDogZGVmYXVsdCB0byBrZXlmaWxlcHViIHdpdGhvdXQgdGhlIC5wdWIgc3VmZml4ICovCisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiWW91IG11c3Qgc3BlY2lmeSBhIHNzaCBwcml2YXRlIGtleSBmaWxlIHRvIHVzZS4gIFNlZSB0aGUgc25tcC5jb25mIG1hbnVhbCBwYWdlXG4iKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgLyogeHh4OiBuZWVkIGFuIGlwdjYgZnJpZW5kbHkgb25lIHRvbyAoc2lnaCkgKi8KIAogICAgICAgICAvKiBYWFg6IG5vdCBpZGVhbCB3aGVuIHN0cnVjdHMgZG9uJ3QgYWN0dWFsbHkgbWF0Y2ggc2l6ZSB3aXNlICovCiAgICAgICAgIG1lbWNweSgmKGFkZHJfcGFpci0+cmVtb3RlX2FkZHIpLCBhZGRyLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CkBAIC04MDQsNyArODQxLDcgQEAKICAgICAgICAgICAgIC8qIHB1YmxpYyBrZXkgKi8KICAgICAgICAgICAgIGlmIChsaWJzc2gyX3VzZXJhdXRoX3B1YmxpY2tleV9mcm9tZmlsZShhZGRyX3BhaXItPnNlc3Npb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ZmlsZTEsIGtleWZpbGUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWZpbGVwdWIsIGtleWZpbGVwcml2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpKSB7CiAgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiQXV0aGVudGljYXRpb24gYnkgcHVibGljIGtleSBmYWlsZWQhXG4iKTsKICAgICAgICAgICAgICAgICBnb3RvIHNodXRkb3duOwpAQCAtOTU0LDYgKzk5MSwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9TU0hUT1NOTVBfU09DS0VUKTsKIAorICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9PQ1RFVF9TVFIsICJzbm1wIiwgInNzaHVzZXJuYW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQlJBUllfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfU1NIX1VTRVJOQU1FKTsKKworICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9PQ1RFVF9TVFIsICJzbm1wIiwgInNzaHB1YmxpY2tleSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1NTSF9QVUJLRVkpOworCisgICAgbmV0c25tcF9kc19yZWdpc3Rlcl9jb25maWcoQVNOX09DVEVUX1NUUiwgInNubXAiLCAic3NocHJpdmF0ZWtleSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1NTSF9QUklWS0VZKTsKKwogICAgIERFQlVHTVNHVEwoKCJzc2giLCAicmVnaXN0ZXJpbmcgdGhlIHNzaCBkb21haW5cbiIpKTsKICAgICBuZXRzbm1wX3Rkb21haW5fcmVnaXN0ZXIoJnNzaERvbWFpbik7CiB9CmRpZmYgLS1naXQgYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFNURERvbWFpbi5jIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBTVEREb21haW4uYwppbmRleCAyMWUwZDc5Li4wYTFjM2Y5IDEwMDY0NAotLS0gYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFNURERvbWFpbi5jCisrKyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wU1RERG9tYWluLmMKQEAgLTE1NCwxMSArMTU0LDEwIEBACiB7CiAgICAgbmV0c25tcF90cmFuc3BvcnQgKnQ7CiAKLSAgICB0ID0gKG5ldHNubXBfdHJhbnNwb3J0ICopIG1hbGxvYyhzaXplb2YobmV0c25tcF90cmFuc3BvcnQpKTsKKyAgICB0ID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RyYW5zcG9ydCk7CiAgICAgaWYgKHQgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgbWVtc2V0KHQsIDAsIHNpemVvZihuZXRzbm1wX3RyYW5zcG9ydCkpOwogCiAgICAgdC0+ZG9tYWluID0gbmV0c25tcF9zbm1wU1RERG9tYWluOwogICAgIHQtPmRvbWFpbl9sZW5ndGggPQpkaWZmIC0tZ2l0IGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4uYyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVENQRG9tYWluLmMKaW5kZXggZTI3ZmRlYy4uYjhiZGJhNCAxMDA2NDQKLS0tIGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4uYworKysgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5jCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBTb2NrZXRCYXNlRG9tYWluLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wVENQQmFzZURvbWFpbi5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaD4KIAogLyoKICAqIG5lZWRzIHRvIGJlIGluIHN5bmMgd2l0aCB0aGUgZGVmaW5pdGlvbnMgaW4gc25tcGxpYi9zbm1wVURQRG9tYWluLmMKQEAgLTc2LDEwICs3Nyw5IEBACiAgICAgc3RydWN0IHNvY2thZGRyICpmYXJlbmQgPSBOVUxMOwogICAgIG5ldHNubXBfdWRwX2FkZHJfcGFpciAqYWRkcl9wYWlyID0gTlVMTDsKICAgICBpbnQgICAgICAgICAgICAgbmV3c29jayA9IC0xOwotICAgIHNvY2tsZW5fdCAgICAgICBmYXJlbmRsZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsKKyAgICBzb2NrbGVuX3QgICAgICAgZmFyZW5kbGVuID0gc2l6ZW9mKG5ldHNubXBfdWRwX2FkZHJfcGFpcik7CiAKLSAgICBhZGRyX3BhaXIgPSAobmV0c25tcF91ZHBfYWRkcl9wYWlyICopbWFsbG9jKHNpemVvZihuZXRzbm1wX3VkcF9hZGRyX3BhaXIpKTsKLQorICAgIGFkZHJfcGFpciA9IChuZXRzbm1wX3VkcF9hZGRyX3BhaXIgKiltYWxsb2MoZmFyZW5kbGVuKTsKICAgICBpZiAoYWRkcl9wYWlyID09IE5VTEwpIHsKICAgICAgICAgLyoKICAgICAgICAgICogSW5kaWNhdGUgdGhhdCB0aGUgYWNjZXB0YW5jZSBvZiB0aGlzIHNvY2tldCBmYWlsZWQuICAKQEAgLTg4LDcgKzg4LDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBtZW1zZXQoYWRkcl9wYWlyLCAwLCBzaXplb2YgKmFkZHJfcGFpcik7Ci0gICAgZmFyZW5kID0gKHN0cnVjdCBzb2NrYWRkciAqKSAmKGFkZHJfcGFpci0+cmVtb3RlX2FkZHIpOworICAgIGZhcmVuZCA9ICZhZGRyX3BhaXItPnJlbW90ZV9hZGRyLnNhOwogCiAgICAgaWYgKHQgIT0gTlVMTCAmJiB0LT5zb2NrID49IDApIHsKICAgICAgICAgbmV3c29jayA9IGFjY2VwdCh0LT5zb2NrLCBmYXJlbmQsICZmYXJlbmRsZW4pOwpAQCAtOTYsNyArOTYsNyBAQAogICAgICAgICBpZiAobmV3c29jayA8IDApIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX3RjcCIsICJhY2NlcHQgZmFpbGVkIHJjICVkIGVycm5vICVkIFwiJXNcIlxuIiwKIAkJCW5ld3NvY2ssIGVycm5vLCBzdHJlcnJvcihlcnJubykpKTsKLSAgICAgICAgICAgIGZyZWUoZmFyZW5kKTsKKyAgICAgICAgICAgIGZyZWUoYWRkcl9wYWlyKTsKICAgICAgICAgICAgIHJldHVybiBuZXdzb2NrOwogICAgICAgICB9CiAKQEAgLTEzMCw3ICsxMzAsNyBAQAogCiAgICAgICAgIHJldHVybiBuZXdzb2NrOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGZyZWUoZmFyZW5kKTsKKyAgICAgICAgZnJlZShhZGRyX3BhaXIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogfQpAQCAtMTUwLDE2ICsxNTAsMTkgQEAKICAgICBuZXRzbm1wX3VkcF9hZGRyX3BhaXIgKmFkZHJfcGFpciA9IE5VTEw7CiAgICAgaW50IHJjID0gMDsKIAorI2lmZGVmIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQKKyAgICBpZiAobG9jYWwpCisgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KIAogICAgIGlmIChhZGRyID09IE5VTEwgfHwgYWRkci0+c2luX2ZhbWlseSAhPSBBRl9JTkVUKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHQgPSAobmV0c25tcF90cmFuc3BvcnQgKikgbWFsbG9jKHNpemVvZihuZXRzbm1wX3RyYW5zcG9ydCkpOworICAgIHQgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdHJhbnNwb3J0KTsKICAgICBpZiAodCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBtZW1zZXQodCwgMCwgc2l6ZW9mKG5ldHNubXBfdHJhbnNwb3J0KSk7CiAKICAgICBhZGRyX3BhaXIgPSAobmV0c25tcF91ZHBfYWRkcl9wYWlyICopbWFsbG9jKHNpemVvZihuZXRzbm1wX3VkcF9hZGRyX3BhaXIpKTsKICAgICBpZiAoYWRkcl9wYWlyID09IE5VTEwpIHsKQEAgLTE4NCw2ICsxODcsNyBAQAogICAgIHQtPmZsYWdzID0gTkVUU05NUF9UUkFOU1BPUlRfRkxBR19TVFJFQU07CiAKICAgICBpZiAobG9jYWwpIHsKKyNpZm5kZWYgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVAogICAgICAgICBpbnQgb3B0ID0gMTsKIAogICAgICAgICAvKgpAQCAtMjQyLDcgKzI0Niw5IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIG5vIGJ1ZmZlciBzaXplIG9uIGxpc3RlbiBzb2NrZXQgLSBkb2Vzbid0IG1ha2Ugc2Vuc2UKICAgICAgICAgICovCi0KKyNlbHNlIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLwogICAgIH0gZWxzZSB7CiAgICAgICB0LT5yZW1vdGUgPSAodV9jaGFyICopbWFsbG9jKDYpOwogICAgICAgICBpZiAodC0+cmVtb3RlID09IE5VTEwpIHsKZGlmZiAtLWdpdCBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVENQSVB2NkRvbWFpbi5jIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBUQ1BJUHY2RG9tYWluLmMKaW5kZXggZTEwZWM3NS4uM2M5Njg1NiAxMDA2NDQKLS0tIGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBUQ1BJUHY2RG9tYWluLmMKKysrIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBUQ1BJUHY2RG9tYWluLmMKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0Lmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wU29ja2V0QmFzZURvbWFpbi5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFRDUEJhc2VEb21haW4uaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmg+CiAKICNpbmNsdWRlICJpbmV0X250b3AuaCIKIApAQCAtMTQwLDE1ICsxNDEsMTkgQEAKICAgICBuZXRzbm1wX3RyYW5zcG9ydCAqdCA9IE5VTEw7CiAgICAgaW50ICAgICAgICAgICAgIHJjID0gMDsKIAorI2lmZGVmIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQKKyAgICBpZiAobG9jYWwpCisgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KKwogICAgIGlmIChhZGRyID09IE5VTEwgfHwgYWRkci0+c2luNl9mYW1pbHkgIT0gQUZfSU5FVDYpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgdCA9IChuZXRzbm1wX3RyYW5zcG9ydCAqKSBtYWxsb2Moc2l6ZW9mKG5ldHNubXBfdHJhbnNwb3J0KSk7CisgICAgdCA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90cmFuc3BvcnQpOwogICAgIGlmICh0ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG1lbXNldCh0LCAwLCBzaXplb2YobmV0c25tcF90cmFuc3BvcnQpKTsKIAogICAgIERFQlVHSUYoIm5ldHNubXBfdGNwNiIpIHsKICAgICAgICAgY2hhciAqc3RyID0gbmV0c25tcF90Y3A2X2ZtdGFkZHIoTlVMTCwgKHZvaWQgKilhZGRyLApAQCAtMTU4LDE0ICsxNjMsMTIgQEAKICAgICAgICAgZnJlZShzdHIpOwogICAgIH0KIAotICAgIG1lbXNldCh0LCAwLCBzaXplb2YobmV0c25tcF90cmFuc3BvcnQpKTsKLQotICAgIHQtPmRhdGEgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKTsKKyAgICB0LT5kYXRhID0gbWFsbG9jKHNpemVvZihuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyKSk7CiAgICAgaWYgKHQtPmRhdGEgPT0gTlVMTCkgewogICAgICAgICBuZXRzbm1wX3RyYW5zcG9ydF9mcmVlKHQpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgdC0+ZGF0YV9sZW5ndGggPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7CisgICAgdC0+ZGF0YV9sZW5ndGggPSBzaXplb2YobmV0c25tcF9pbmRleGVkX2FkZHJfcGFpcik7CiAgICAgbWVtY3B5KHQtPmRhdGEsIGFkZHIsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSk7CiAKICAgICB0LT5kb21haW4gPSBuZXRzbm1wX1RDUElQdjZEb21haW47CkBAIC0xODAsNiArMTgzLDcgQEAKICAgICB0LT5mbGFncyA9IE5FVFNOTVBfVFJBTlNQT1JUX0ZMQUdfU1RSRUFNOwogCiAgICAgaWYgKGxvY2FsKSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQKICAgICAgICAgaW50IG9wdCA9IDE7CiAKICAgICAgICAgLyoKQEAgLTI0OCw3ICsyNTIsOSBAQAogICAgICAgICAvKgogICAgICAgICAgKiBubyBidWZmZXIgc2l6ZSBvbiBsaXN0ZW4gc29ja2V0IC0gZG9lc24ndCBtYWtlIHNlbnNlCiAgICAgICAgICAqLwotCisjZWxzZSAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCisgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KICAgICB9IGVsc2UgewogICAgICAgICB0LT5yZW1vdGUgPSAodW5zaWduZWQgY2hhciopbWFsbG9jKDE4KTsKICAgICAgICAgaWYgKHQtPnJlbW90ZSA9PSBOVUxMKSB7CmRpZmYgLS1naXQgYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4uYyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5jCmluZGV4IGIxZTk0NjUuLmM1NGQ2YWQgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5jCisrKyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5jCkBAIC0xLDUgKzEsOSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2VydF91dGlsKQorCiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wVExTQmFzZURvbWFpbi5oPgogCiAjaWYgSEFWRV9ETUFMTE9DX0gKQEAgLTM0LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxvcGVuc3NsL3g1MDl2My5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9jb25maWdfYXBpLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jZXJ0X3V0aWwuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfb3BlbnNzbC5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oPgpAQCAtNDUsNiArNTAsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0Lmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oPgogCiAjZGVmaW5lIExPR0FORERJRShtc2cpIGRvIHsgc25tcF9sb2coTE9HX0VSUiwgIiVzXG4iLCBtc2cpOyByZXR1cm4gMDsgfSB3aGlsZSgwKQpAQCAtMTUxLDI2ICsxNTcsMjYgQEAKIAogICAgIGlmICghdGxzZGF0YS0+dGhlaXJfZmluZ2VycHJpbnQgJiYgdGxzZGF0YS0+dGhlaXJfaWRlbnRpdHkpIHsKICAgICAgICAgLyogd2UgaGF2ZSBhbiBpZGVudGl0eTsgdHJ5IGFuZCBmaW5kIGl0J3MgZmluZ2VycHJpbnQgKi8KLSAgICAgICAgbmV0c25tcF9jZXJ0ICp0aGVpcl9jZXJ0OwotICAgICAgICB0aGVpcl9jZXJ0ID0KKyAgICAgICAgbmV0c25tcF9jZXJ0ICpwZWVyX2NlcnQ7CisgICAgICAgIHBlZXJfY2VydCA9CiAgICAgICAgICAgICBuZXRzbm1wX2NlcnRfZmluZChOU19DRVJUX1JFTU9URV9QRUVSLCBOU19DRVJUS0VZX01VTFRJUExFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGxzZGF0YS0+dGhlaXJfaWRlbnRpdHkpOwogCi0gICAgICAgIGlmICh0aGVpcl9jZXJ0KQorICAgICAgICBpZiAocGVlcl9jZXJ0KQogICAgICAgICAgICAgdGxzZGF0YS0+dGhlaXJfZmluZ2VycHJpbnQgPQotICAgICAgICAgICAgICAgIG5ldHNubXBfb3BlbnNzbF9jZXJ0X2dldF9maW5nZXJwcmludCh0aGVpcl9jZXJ0LT5vY2VydCwgLTEpOworICAgICAgICAgICAgICAgIG5ldHNubXBfb3BlbnNzbF9jZXJ0X2dldF9maW5nZXJwcmludChwZWVyX2NlcnQtPm9jZXJ0LCAtMSk7CiAgICAgfQogCiAgICAgaWYgKCF0bHNkYXRhLT50aGVpcl9maW5nZXJwcmludCAmJiB0cnlfZGVmYXVsdCkgewogICAgICAgICAvKiB0cnkgZm9yIHRoZSBkZWZhdWx0IGluc3RlYWQgKi8KLSAgICAgICAgbmV0c25tcF9jZXJ0ICp0aGVpcl9jZXJ0OwotICAgICAgICB0aGVpcl9jZXJ0ID0KKyAgICAgICAgbmV0c25tcF9jZXJ0ICpwZWVyX2NlcnQ7CisgICAgICAgIHBlZXJfY2VydCA9CiAgICAgICAgICAgICBuZXRzbm1wX2NlcnRfZmluZChOU19DRVJUX1JFTU9URV9QRUVSLCBOU19DRVJUS0VZX0RFRkFVTFQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKIAotICAgICAgICBpZiAodGhlaXJfY2VydCkKKyAgICAgICAgaWYgKHBlZXJfY2VydCkKICAgICAgICAgICAgIHRsc2RhdGEtPnRoZWlyX2ZpbmdlcnByaW50ID0KLSAgICAgICAgICAgICAgICBuZXRzbm1wX29wZW5zc2xfY2VydF9nZXRfZmluZ2VycHJpbnQodGhlaXJfY2VydC0+b2NlcnQsIC0xKTsKKyAgICAgICAgICAgICAgICBuZXRzbm1wX29wZW5zc2xfY2VydF9nZXRfZmluZ2VycHJpbnQocGVlcl9jZXJ0LT5vY2VydCwgLTEpOwogICAgIH0KICAgICAKICAgICBpZiAodGxzZGF0YS0+dGhlaXJfZmluZ2VycHJpbnQpIHsKQEAgLTU3OSw4ICs1ODUsNyBAQAogICAgICAgICBMT0dBTkRESUUoImNhbid0IGNyZWF0ZSBhIG5ldyBjb250ZXh0Iik7CiAgICAgfQogCi0gICAgaWRfY2VydCA9IG5ldHNubXBfY2VydF9maW5kKE5TX0NFUlRfSURFTlRJVFksIE5TX0NFUlRLRVlfREVGQVVMVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKTEpOworICAgIGlkX2NlcnQgPSBuZXRzbm1wX2NlcnRfZmluZChOU19DRVJUX0lERU5USVRZLCBOU19DRVJUS0VZX0RFRkFVTFQsIE5VTEwpOwogICAgIGlmICghaWRfY2VydCkKICAgICAgICAgTE9HQU5ERElFICgiZXJyb3IgZmluZGluZyBzZXJ2ZXIgaWRlbnRpdHkga2V5cyIpOwogCkBAIC02MjEsMjQgKzYyNiwyOCBAQAogCiAgICAgdGxzZGF0YSA9IHQtPmRhdGE7CiAKLSAgICBpZiAoc3RyY21wKHRva2VuLCAib3VyX2lkZW50aXR5IikgPT0gMCkgeworICAgIGlmICgoc3RyY21wKHRva2VuLCAibG9jYWxDZXJ0IikgPT0gMCkgfHwKKyAgICAgICAgKHN0cmNtcCh0b2tlbiwgIm91cl9pZGVudGl0eSIpID09IDApKSB7CiAgICAgICAgIFNOTVBfRlJFRSh0bHNkYXRhLT5vdXJfaWRlbnRpdHkpOwogICAgICAgICB0bHNkYXRhLT5vdXJfaWRlbnRpdHkgPSBzdHJkdXAodmFsdWUpOwogICAgICAgICBERUJVR01TR1QoKCJ0bHM6Y29uZmlnIiwib3VyIGlkZW50aXR5ICVzXG4iLCB2YWx1ZSkpOwogICAgIH0KIAotICAgIGlmIChzdHJjbXAodG9rZW4sICJ0aGVpcl9pZGVudGl0eSIpID09IDApIHsKKyAgICBpZiAoKHN0cmNtcCh0b2tlbiwgInBlZXJDZXJ0IikgPT0gMCkgfHwKKyAgICAgICAgKHN0cmNtcCh0b2tlbiwgInRoZWlyX2lkZW50aXR5IikgPT0gMCkpIHsKICAgICAgICAgU05NUF9GUkVFKHRsc2RhdGEtPnRoZWlyX2lkZW50aXR5KTsKICAgICAgICAgdGxzZGF0YS0+dGhlaXJfaWRlbnRpdHkgPSBzdHJkdXAodmFsdWUpOwogICAgICAgICBERUJVR01TR1QoKCJ0bHM6Y29uZmlnIiwidGhlaXIgaWRlbnRpdHkgJXNcbiIsIHZhbHVlKSk7CiAgICAgfQogCi0gICAgaWYgKHN0cmNtcCh0b2tlbiwgInRoZWlyX2hvc3RuYW1lIikgPT0gMCkgeworICAgIGlmICgoc3RyY21wKHRva2VuLCAicGVlckhvc3RuYW1lIikgPT0gMCkgfHwKKyAgICAgICAgKHN0cmNtcCh0b2tlbiwgInRoZWlyX2hvc3RuYW1lIikgPT0gMCkpIHsKICAgICAgICAgU05NUF9GUkVFKHRsc2RhdGEtPnRoZWlyX2hvc3RuYW1lKTsKICAgICAgICAgdGxzZGF0YS0+dGhlaXJfaG9zdG5hbWUgPSBzdHJkdXAodmFsdWUpOwogICAgIH0KIAotICAgIGlmIChzdHJjbXAodG9rZW4sICJ0cnVzdF9jZXJ0IikgPT0gMCkgeworICAgIGlmICgoc3RyY21wKHRva2VuLCAidHJ1c3RfY2VydCIpID09IDApIHx8CisgICAgICAgIChzdHJjbXAodG9rZW4sICJ0cnVzdENlcnQiKSA9PSAwKSkgewogICAgICAgICBTTk1QX0ZSRUUodGxzZGF0YS0+dHJ1c3RfY2VydCk7CiAgICAgICAgIHRsc2RhdGEtPnRydXN0X2NlcnQgPSBzdHJkdXAodmFsdWUpOwogICAgIH0KQEAgLTcwNSw2ICs3MTQsMzIgQEAKICAgICByZXR1cm4gb3BlbnNzbF9sb2NhbF9pbmRleDsKIH0KIAorc3RhdGljIHZvaWQgX3BhcnNlX2NsaWVudF9jZXJ0KGNvbnN0IGNoYXIgKnRvaywgY2hhciAqbGluZSkKK3sKKyAgICBjb25maWdfcHdhcm4oImNsaWVudENlcnQgaXMgZGVwcmVjYXRlZC4gQ2xpZW50cyBzaG91bGQgdXNlIGxvY2FsQ2VydCwgc2VydmVycyBzaG91bGQgdXNlIHBlZXJDZXJ0Iik7CisgICAgaWYgKCpsaW5lID09ICciJykgeworICAgICAgICBjaGFyIGJ1ZltTTk1QX01BWEJVRl07CisgICAgICAgIGNvcHlfbndvcmQobGluZSwgYnVmLCBzaXplb2YoYnVmKSk7CisgICAgICAgIG5ldHNubXBfZHNfc2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X0NMSUVOVF9QVUIsIGJ1Zik7CisgICAgfSBlbHNlCisgICAgICAgIG5ldHNubXBfZHNfc2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X0NMSUVOVF9QVUIsIGxpbmUpOworfQorCitzdGF0aWMgdm9pZCBfcGFyc2Vfc2VydmVyX2NlcnQoY29uc3QgY2hhciAqdG9rLCBjaGFyICpsaW5lKQoreworICAgIGNvbmZpZ19wd2Fybigic2VydmVyQ2VydCBpcyBkZXByZWNhdGVkLiBDbGllbnRzIHNob3VsZCB1c2UgcGVlckNlcnQsIHNlcnZlcnMgc2hvdWxkIHVzZSBsb2NhbENlcnQuIik7CisgICAgaWYgKCpsaW5lID09ICciJykgeworICAgICAgICBjaGFyIGJ1ZltTTk1QX01BWEJVRl07CisgICAgICAgIGNvcHlfbndvcmQobGluZSwgYnVmLCBzaXplb2YoYnVmKSk7CisgICAgICAgIG5ldHNubXBfZHNfc2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X0NMSUVOVF9QVUIsIGJ1Zik7CisgICAgfSBlbHNlCisgICAgICAgIG5ldHNubXBfZHNfc2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X1NFUlZFUl9QVUIsIGxpbmUpOworfQorCiB2b2lkCiBuZXRzbm1wX3Rsc2Jhc2VfY3Rvcih2b2lkKSB7CiAKQEAgLTczMSwyNiArNzY2LDI1IEBACiAgICAgICovCiAKICAgICAvKiB0aGUgcHVibGljIGNsaWVudCBjZXJ0IHRvIGF1dGhlbnRpY2F0ZSB3aXRoICovCi0gICAgbmV0c25tcF9kc19yZWdpc3Rlcl9jb25maWcoQVNOX09DVEVUX1NUUiwgInNubXAiLCAiY2xpZW50Q2VydCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJSQVJZX0lELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1g1MDlfQ0xJRU5UX1BVQik7Ci0gICAgLyogWFhYOiB0aGlzIG9uZSBuZWVkcyB0byBnbyBhd2F5IGJlZm9yZSA1LjYgZmluYWwgKi8KLSAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZyhBU05fT0NURVRfU1RSLCAic25tcCIsICJkZWZYNTA5Q2xpZW50UHViIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQlJBUllfSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfWDUwOV9DTElFTlRfUFVCKTsKKyAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigic25tcCIsICJjbGllbnRDZXJ0IiwgX3BhcnNlX2NsaWVudF9jZXJ0LCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogCiAgICAgLyoKICAgICAgKiBmb3IgdGhlIHNlcnZlcgogICAgICAqLwogCiAgICAgLyogVGhlIFg1MDkgc2VydmVyIGtleSB0byB1c2UgKi8KLSAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZyhBU05fT0NURVRfU1RSLCAic25tcCIsICJzZXJ2ZXJDZXJ0IiwKKyAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigic25tcCIsICJzZXJ2ZXJDZXJ0IiwgX3BhcnNlX3NlcnZlcl9jZXJ0LCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIC8qCisgICAgICogcmVtb3ZlIGNlcnQgY29uZmlnIGFtYmlndWl0eTogbG9jYWxDZXJ0LCBwZWVyQ2VydAorICAgICAqLworICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9PQ1RFVF9TVFIsICJzbm1wIiwgImxvY2FsQ2VydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJSQVJZX0lELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1g1MDlfU0VSVkVSX1BVQik7Ci0gICAgLyogWFhYOiB0aGlzIG9uZSBuZWVkcyB0byBnbyBhd2F5IGJlZm9yZSA1LjYgZmluYWwgKi8KLSAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZyhBU05fT0NURVRfU1RSLCAic25tcCIsICJkZWZYNTA5U2VydmVyUHViIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9UTFNfTE9DQUxfQ0VSVCk7CisgICAgbmV0c25tcF9kc19yZWdpc3Rlcl9jb25maWcoQVNOX09DVEVUX1NUUiwgInNubXAiLCAicGVlckNlcnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X1NFUlZFUl9QVUIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1RMU19QRUVSX0NFUlQpOwogCiAgICAgLyoKICAgICAgKiByZWdpc3RlciBvdXIgYm9vdC1zdHJhcHBpbmcgbmVlZHMKQEAgLTkwMCw2ICs5MzQsOCBAQAogICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CiB9CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihfeDUwOV9nZXRfZXJyb3IsIG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX19YNTA5X0dFVF9FUlJPUgogY29uc3QgY2hhciAqIF94NTA5X2dldF9lcnJvcihpbnQgeDUwOWZhaWx2YWx1ZSwgY29uc3QgY2hhciAqbG9jYXRpb24pIHsKICAgICBzdGF0aWMgY29uc3QgY2hhciAqcmVhc29uID0gTlVMTDsKICAgICAKQEAgLTEwNTUsNiArMTA5MSw3IEBACiAKICAgICByZXR1cm4gcmVhc29uOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfX1g1MDlfR0VUX0VSUk9SICovCiAKIHZvaWQgX29wZW5zc2xfbG9nX2Vycm9yKGludCByYywgU1NMICpjb24sIGNvbnN0IGNoYXIgKmxvY2F0aW9uKSB7CiAgICAgY29uc3QgY2hhciAgICAgKnJlYXNvbiwgKmZpbGUsICpkYXRhOwpkaWZmIC0tZ2l0IGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4uYyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmMKaW5kZXggODZhMGZkZC4uYTkyMDkxZSAxMDA2NDQKLS0tIGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4uYworKysgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU1RDUERvbWFpbi5jCkBAIC05LDYgKzksMTAgQEAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2VydF91dGlsKQorCiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wVExTVENQRG9tYWluLmg+CiAKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtMTI5LDkgKzEzMyw5IEBACiAgICAgICAgIG5ld3Rsc2RhdGEtPnRoZWlyX2hvc3RuYW1lID0gc3RyZHVwKG9sZHRsc2RhdGEtPnRoZWlyX2hvc3RuYW1lKTsKICAgICBpZiAob2xkdGxzZGF0YS0+dHJ1c3RfY2VydCkKICAgICAgICAgbmV3dGxzZGF0YS0+dHJ1c3RfY2VydCA9IHN0cmR1cChvbGR0bHNkYXRhLT50cnVzdF9jZXJ0KTsKLSAgICBpZiAob2xkdGxzZGF0YS0+cmVtb3RlX2FkZHIpCi0gICAgICAgIG1lbWR1cCgodV9jaGFyKiopJm5ld3Rsc2RhdGEtPnJlbW90ZV9hZGRyLCBvbGR0bHNkYXRhLT5yZW1vdGVfYWRkciwKLSAgICAgICAgICAgICAgIHNpemVvZihuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyKSk7CisgICAgaWYgKG9sZHRsc2RhdGEtPmFkZHIpCisgICAgICAgIG1lbWR1cCgodV9jaGFyKiopJm5ld3Rsc2RhdGEtPmFkZHIsIG9sZHRsc2RhdGEtPmFkZHIsCisgICAgICAgICAgICAgICBzaXplb2YoKm9sZHRsc2RhdGEtPmFkZHIpKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtNzIzLDggKzcyNyw2IEBACiAgICAgICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9UTFNUTV9TTk1QVExTVE1TRVNTSU9OT1BFTkVSUk9SUyk7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidGxzdGNwOiBmYWlsZWQgdG8gY3JlYXRlIGJpb1xuIik7CiAgICAgICAgICAgICBfb3BlbnNzbF9sb2dfZXJyb3IocmMsIE5VTEwsICJCSU8gY3JlYXRpb24iKTsKLSAgICAgICAgICAgIFNOTVBfRlJFRSh0bHNkYXRhKTsKLSAgICAgICAgICAgIFNOTVBfRlJFRSh0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTczNiw4ICs3MzgsNiBAQAogCQkgICAgIHRsc2RhdGEtPmFkZHJfc3RyaW5nKTsKICAgICAgICAgICAgIF9vcGVuc3NsX2xvZ19lcnJvcihyYywgTlVMTCwgIkJJT19kb19jb25uZWN0Iik7CiAgICAgICAgICAgICBCSU9fZnJlZShiaW8pOwotICAgICAgICAgICAgU05NUF9GUkVFKHRsc2RhdGEpOwotICAgICAgICAgICAgU05NUF9GUkVFKHQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIApAQCAtNzQ3LDggKzc0Nyw2IEBACiAgICAgICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9UTFNUTV9TTk1QVExTVE1TRVNTSU9OT1BFTkVSUk9SUyk7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidGxzdGNwOiBmYWlsZWQgdG8gY3JlYXRlIGEgU1NMIGNvbm5lY3Rpb25cbiIpOwogICAgICAgICAgICAgQklPX2ZyZWUoYmlvKTsKLSAgICAgICAgICAgIFNOTVBfRlJFRSh0bHNkYXRhKTsKLSAgICAgICAgICAgIFNOTVBfRlJFRSh0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNzYyLDggKzc2MCw2IEBACiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidGxzdGNwOiBmYWlsZWQgdG8gY3JlYXRlIGEgU1NMIGNvbm5lY3Rpb25cbiIpOwogICAgICAgICAgICAgU1NMX3NodXRkb3duKHNzbCk7CiAgICAgICAgICAgICBCSU9fZnJlZShiaW8pOwotICAgICAgICAgICAgU05NUF9GUkVFKHRsc2RhdGEpOwotICAgICAgICAgICAgU05NUF9GUkVFKHQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIApAQCAtNzc0LDggKzc3MCw2IEBACiAgICAgICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9UTFNUTV9TTk1QVExTVE1TRVNTSU9OT1BFTkVSUk9SUyk7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidGxzdGNwOiBmYWlsZWQgdG8gc3NsX2Nvbm5lY3RcbiIpOwogICAgICAgICAgICAgQklPX2ZyZWUoYmlvKTsKLSAgICAgICAgICAgIFNOTVBfRlJFRSh0bHNkYXRhKTsKLSAgICAgICAgICAgIFNOTVBfRlJFRSh0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAKQEAgLTgzMCw4ICs4MjQsNiBAQAogICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInRsc3RjcDogZmFpbGVkIHRvIHZlcmlmeSBzc2wgY2VydGlmaWNhdGVcbiIpOwogICAgICAgICAgICAgU1NMX3NodXRkb3duKHNzbCk7CiAgICAgICAgICAgICBCSU9fZnJlZShiaW8pOwotICAgICAgICAgICAgU05NUF9GUkVFKHRsc2RhdGEpOwotICAgICAgICAgICAgU05NUF9GUkVFKHQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIApAQCAtODY5LDYgKzg2MSw3IEBACiAgICAgICAgIHQtPnNvY2sgPSBCSU9fZ2V0X2ZkKGJpbywgTlVMTCk7CiAKICAgICB9IGVsc2UgeworI2lmbmRlZiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUCiAgICAgICAgIC8qIElzIHRoZSBzZXJ2ZXIgKi8KICAgICAgICAgCiAgICAgICAgIC8qIENyZWF0ZSB0aGUgc29ja2V0IGJpbyAqLwpAQCAtODc4LDggKzg3MSw2IEBACiAgICAgICAgIHQtPmxvY2FsID0gKHZvaWQgKikgc3RyZHVwKHRsc2RhdGEtPmFkZHJfc3RyaW5nKTsKICAgICAgICAgdC0+bG9jYWxfbGVuZ3RoID0gc3RybGVuKHRsc2RhdGEtPmFkZHJfc3RyaW5nKSsxOwogICAgICAgICBpZiAoTlVMTCA9PSB0bHNkYXRhLT5hY2NlcHRfYmlvKSB7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUodCk7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUodGxzZGF0YSk7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiVExTVENQOiBGYWxpZWQgdG8gY3JlYXRlIGEgYWNjZXB0IEJJT1xuIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtODg3LDggKzg3OCw2IEBACiAgICAgICAgIC8qIG9wZW5zc2wgcmVxdWlyZXMgYW4gaW5pdGlhbCBhY2NlcHQgdG8gYmluZCgpIHRoZSBzb2NrZXQgKi8KICAgICAgICAgaWYgKEJJT19kb19hY2NlcHQodGxzZGF0YS0+YWNjZXB0X2JpbykgPD0gMCkgewogCSAgICBfb3BlbnNzbF9sb2dfZXJyb3IocmMsIHRsc2RhdGEtPnNzbCwgIkJJT19kb19fYWNjZXB0Iik7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUodCk7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUodGxzZGF0YSk7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiVExTVENQOiBGYWxpZWQgdG8gZG8gZmlyc3QgYWNjZXB0IG9uIHRoZSBUTFMgYWNjZXB0IEJJT1xuIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtODk5LDYgKzg4OCw5IEBACiAKICAgICAgICAgdC0+c29jayA9IEJJT19nZXRfZmQodGxzZGF0YS0+YWNjZXB0X2JpbywgTlVMTCk7CiAgICAgICAgIHQtPmZsYWdzIHw9IE5FVFNOTVBfVFJBTlNQT1JUX0ZMQUdfTElTVEVOOworI2Vsc2UgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLworICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZiAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCiAgICAgfQogICAgIHJldHVybiB0OwogfQpAQCAtOTE3LDEyICs5MDksMTYgQEAKICAgICBjaGFyICpjcDsKICAgICBjaGFyIGJ1ZltTUFJJTlRfTUFYX0xFTl07CiAgICAgCisjaWZkZWYgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVAorICAgIGlmIChpc3NlcnZlcikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLworCiAgICAgLyogYWxsb2NhdGUgb3VyIHRyYW5zcG9ydCBzdHJ1Y3R1cmUgKi8KICAgICB0ID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RyYW5zcG9ydCk7CiAgICAgaWYgKE5VTEwgPT0gdCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgbWVtc2V0KHQsIDAsIHNpemVvZihuZXRzbm1wX3RyYW5zcG9ydCkpOwogCiAgICAgLyogYWxsb2NhdGUgb3VyIFRMUyBzcGVjaWZpYyBkYXRhICovCiAgICAgaWYgKE5VTEwgPT0gKHRsc2RhdGEgPSBuZXRzbm1wX3Rsc2Jhc2VfYWxsb2NhdGVfdGxzZGF0YSh0LCBpc3NlcnZlcikpKQpkaWZmIC0tZ2l0IGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmMgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYwppbmRleCBiNmU3ZjNkLi41ZDExMDkxIDEwMDY0NAotLS0gYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYworKysgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYwpAQCAtMyw2ICszLDkgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmg+CisKICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgpAQCAtMTUsOSArMTgsNiBAQAogI2Vsc2UKICNpbmNsdWRlIDxzdHJpbmdzLmg+CiAjZW5kaWYKLSNpZiBIQVZFX1NZU19TT0NLRVRfSAotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNlbmRpZgogI2lmIEhBVkVfTkVUSU5FVF9JTl9ICiAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgogI2VuZGlmCkBAIC0zNyw3ICszNyw2IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC90eXBlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFNvY2tldEJhc2VEb21haW4uaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS90b29scy5oPgpAQCAtNDUsMTAgKzQ0LDEyIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0Lmg+CiAKLSNpZiBkZWZpbmVkKElQX1JFQ1ZEU1RBRERSKSAmJiBkZWZpbmVkKF9fRHJhZ29uRmx5X18pCi0jIGlmbmRlZiBJUF9TRU5EU1JDQUREUgotIyAgZGVmaW5lIElQX1NFTkRTUkNBRERSIElQX1JFQ1ZEU1RBRERSIC8qIERyYWdvbkZseSBCU0QgKi8KLSMgZW5kaWYKKyNpZm5kZWYgIE1TR19ET05UV0FJVAorI2RlZmluZSBNU0dfRE9OVFdBSVQgMAorI2VuZGlmCisKKyNpZm5kZWYgIE1TR19OT1NJR05BTAorI2RlZmluZSBNU0dfTk9TSUdOQUwgMAogI2VuZGlmCiAKIHZvaWQKQEAgLTM4OSw3ICszOTAsNyBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbWVtc2V0KGFkZHJfcGFpciwgMCwgc2l6ZW9mKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIpKTsKLSAgICAgICAgICAgIGZyb20gPSAoc3RydWN0IHNvY2thZGRyICopICYoYWRkcl9wYWlyLT5yZW1vdGVfYWRkcik7CisgICAgICAgICAgICBmcm9tID0gJmFkZHJfcGFpci0+cmVtb3RlX2FkZHIuc2E7CiAgICAgICAgIH0KIAogCXdoaWxlIChyYyA8IDApIHsKQEAgLTQzNiwxNCArNDM3LDE1IEBACiAgICAgc3RydWN0IHNvY2thZGRyICp0byA9IE5VTEw7CiAKICAgICBpZiAob3BhcXVlICE9IE5VTEwgJiYgKm9wYXF1ZSAhPSBOVUxMICYmCi0gICAgICAgICpvbGVuZ3RoID09IHNpemVvZihuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyKSkgeworICAgICAgICAoKCpvbGVuZ3RoID09IHNpemVvZihuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyKSB8fAorICAgICAgICAgICgqb2xlbmd0aCA9PSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkpKSkgewogICAgICAgICBhZGRyX3BhaXIgPSAobmV0c25tcF9pbmRleGVkX2FkZHJfcGFpciAqKSAoKm9wYXF1ZSk7CiAgICAgfSBlbHNlIGlmICh0ICE9IE5VTEwgJiYgdC0+ZGF0YSAhPSBOVUxMICYmCiAgICAgICAgICAgICAgICAgdC0+ZGF0YV9sZW5ndGggPT0gc2l6ZW9mKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIpKSB7CiAgICAgICAgIGFkZHJfcGFpciA9IChuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyICopICh0LT5kYXRhKTsKICAgICB9CiAKLSAgICB0byA9IChzdHJ1Y3Qgc29ja2FkZHIgKikgJihhZGRyX3BhaXItPnJlbW90ZV9hZGRyKTsKKyAgICB0byA9ICZhZGRyX3BhaXItPnJlbW90ZV9hZGRyLnNhOwogCiAgICAgaWYgKHRvICE9IE5VTEwgJiYgdCAhPSBOVUxMICYmIHQtPnNvY2sgPj0gMCkgewogICAgICAgICBERUJVR0lGKCJuZXRzbm1wX3VkcCIpIHsKQEAgLTQ1Niw3ICs0NTgsNyBAQAogCXdoaWxlIChyYyA8IDApIHsKICNpZmRlZiBuZXRzbm1wX3VkcGJhc2VfcmVjdmZyb21fc2VuZHRvX2RlZmluZWQKICAgICAgICAgICAgIHJjID0gbmV0c25tcF91ZHBfc2VuZHRvKHQtPnNvY2ssCi0gICAgICAgICAgICAgICAgICAgIGFkZHJfcGFpciA/ICYoYWRkcl9wYWlyLT5sb2NhbF9hZGRyLnNpbl9hZGRyKSA6IE5VTEwsCisgICAgICAgICAgICAgICAgICAgIGFkZHJfcGFpciA/ICYoYWRkcl9wYWlyLT5sb2NhbF9hZGRyLnNpbi5zaW5fYWRkcikgOiBOVUxMLAogICAgICAgICAgICAgICAgICAgICBhZGRyX3BhaXIgPyBhZGRyX3BhaXItPmlmX2luZGV4IDogMCwgdG8sIGJ1Ziwgc2l6ZSk7CiAjZWxzZQogICAgICAgICAgICAgcmMgPSBzZW5kdG8odC0+c29jaywgYnVmLCBzaXplLCAwLCB0bywgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcikpOwpkaWZmIC0tZ2l0IGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4uYyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmMKaW5kZXggN2ZhMmVmZC4uYTBhYmQ4YyAxMDA2NDQKLS0tIGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4uYworKysgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5jCkBAIC0xMSw2ICsxMSwxMCBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC90eXBlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmg+CisKICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgpAQCAtNTMsOCArNTcsNiBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2NvbmZpZ19hcGkuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFNvY2tldEJhc2VEb21haW4uaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaD4KQEAgLTcwLDEyICs3Miw2IEBACiAjZGVmaW5lIElORVRfQUREUlNUUkxFTiAxNgogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKElQX1JFQ1ZEU1RBRERSKSAmJiBkZWZpbmVkKF9fRHJhZ29uRmx5X18pCi0jIGlmbmRlZiBJUF9TRU5EU1JDQUREUgotIyAgZGVmaW5lIElQX1NFTkRTUkNBRERSIElQX1JFQ1ZEU1RBRERSIC8qIERyYWdvbkZseSBCU0QgKi8KLSMgZW5kaWYKLSNlbmRpZgotCiBzdGF0aWMgbmV0c25tcF90ZG9tYWluIHVkcERvbWFpbjsKIAogLyoKZGlmZiAtLWdpdCBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4uYyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4uYwppbmRleCBmZDg5MGE3Li45YzQ2NGQ3IDEwMDY0NAotLS0gYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmMKKysrIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5jCkBAIC0zLDYgKzMsOSBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC90eXBlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmg+CisKICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgpAQCAtMzYsMTcgKzM5LDggQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFNvY2tldEJhc2VEb21haW4uaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaD4KLQotI2lmIGRlZmluZWQoSVBfUkVDVkRTVEFERFIpICYmIGRlZmluZWQoX19EcmFnb25GbHlfXykKLSMgaWZuZGVmIElQX1NFTkRTUkNBRERSCi0jICBkZWZpbmUgSVBfU0VORFNSQ0FERFIgSVBfUkVDVkRTVEFERFIgLyogRHJhZ29uRmx5IEJTRCAqLwotIyBlbmRpZgotI2VuZGlmCiAKICNpZiBkZWZpbmVkKEhBVkVfSVBfUEtUSU5GTykgfHwgZGVmaW5lZChIQVZFX0lQX1JFQ1ZEU1RBRERSKQotCiBpbnQgbmV0c25tcF91ZHBpcHY0X3JlY3Zmcm9tKGludCBzLCB2b2lkICpidWYsIGludCBsZW4sIHN0cnVjdCBzb2NrYWRkciAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2xlbl90ICpmcm9tbGVuLCBzdHJ1Y3Qgc29ja2FkZHIgKmRzdGlwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgKmRzdGxlbiwgaW50ICppZl9pbmRleCkKQEAgLTcxLDYgKzY1LDExIEBACiAgICAgbmV0c25tcF9pbmRleGVkX2FkZHJfcGFpciBhZGRyX3BhaXI7CiAgICAgc29ja2xlbl90ICAgICAgIGxvY2FsX2FkZHJfbGVuOwogCisjaWZkZWYgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVAorICAgIGlmIChsb2NhbCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLworCiAgICAgaWYgKGFkZHIgPT0gTlVMTCB8fCBhZGRyLT5zaW5fZmFtaWx5ICE9IEFGX0lORVQpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtOTksMTMgKzk4LDE0IEBACiAgICAgX25ldHNubXBfdWRwX3NvY2tvcHRfc2V0KHQtPnNvY2ssIGxvY2FsKTsKIAogICAgIGlmIChsb2NhbCkgeworI2lmbmRlZiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUCiAgICAgICAgIC8qCiAgICAgICAgICAqIFRoaXMgc2Vzc2lvbiBpcyBpbnRlbmVkZWQgYXMgYSBzZXJ2ZXIsIHNvIHdlIG11c3QgYmluZCBvbiB0byB0aGUKICAgICAgICAgICogZ2l2ZW4gSVAgYWRkcmVzcywgd2hpY2ggbWF5IGluY2x1ZGUgYW4gaW50ZXJmYWNlIGFkZHJlc3MsIG9yIGNvdWxkCiAgICAgICAgICAqIGJlIElOQUREUl9BTlksIGJ1dCBjZXJ0YWlubHkgaW5jbHVkZXMgYSBwb3J0IG51bWJlci4KICAgICAgICAgICovCiAKLSAgICAgIHQtPmxvY2FsID0gKHVfY2hhciAqKSBtYWxsb2MoNik7CisgICAgICAgIHQtPmxvY2FsID0gKHVfY2hhciAqKSBtYWxsb2MoNik7CiAgICAgICAgIGlmICh0LT5sb2NhbCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBuZXRzbm1wX3RyYW5zcG9ydF9mcmVlKHQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNjAsNiArMTYwLDkgQEAKICAgICAgICAgfQogICAgICAgICB0LT5kYXRhID0gTlVMTDsKICAgICAgICAgdC0+ZGF0YV9sZW5ndGggPSAwOworI2Vsc2UgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLworICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZiAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCiAgICAgfSBlbHNlIHsKICAgICAgICAgLyoKICAgICAgICAgICogVGhpcyBpcyBhIGNsaWVudCBzZXNzaW9uLiAgSWYgd2UndmUgYmVlbiBnaXZlbiBhCmRpZmYgLS1naXQgYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5jCmluZGV4IGNlNDBlNDAuLmIzZWFhZTQgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5jCisrKyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5jCkBAIC0xLDYgKzEsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC90eXBlcy5oPgogCkBAIC02NCw2ICs2NSw3IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0Lmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wU29ja2V0QmFzZURvbWFpbi5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaD4KIAogI2luY2x1ZGUgImluZXRfbnRvcC5oIgogI2luY2x1ZGUgImluZXRfcHRvbi5oIgpAQCAtMTUyLDcgKzE1NCw4IEBACiAgICAgICAgICpvbGVuZ3RoID09IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSkgewogICAgICAgICB0byA9IChzdHJ1Y3Qgc29ja2FkZHIgKikgKCpvcGFxdWUpOwogICAgIH0gZWxzZSBpZiAodCAhPSBOVUxMICYmIHQtPmRhdGEgIT0gTlVMTCAmJgotICAgICAgICAgICAgICAgdC0+ZGF0YV9sZW5ndGggPT0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKSB7CisgICAgICAgICAgICAgICAoKHQtPmRhdGFfbGVuZ3RoID09IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSkgfHwKKyAgICAgICAgICAgICAgICAodC0+ZGF0YV9sZW5ndGggPT0gc2l6ZW9mKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIpKSkpIHsKICAgICAgICAgdG8gPSAoc3RydWN0IHNvY2thZGRyICopICh0LT5kYXRhKTsKICAgICB9CiAKQEAgLTE4OCwxMSArMTkxLDE2IEBACiAgICAgbmV0c25tcF90cmFuc3BvcnQgKnQgPSBOVUxMOwogICAgIGludCAgICAgICAgICAgICByYyA9IDA7CiAKKyNpZmRlZiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUCisgICAgaWYgKGxvY2FsKQorICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZiAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCisKICAgICBpZiAoYWRkciA9PSBOVUxMIHx8IGFkZHItPnNpbjZfZmFtaWx5ICE9IEFGX0lORVQ2KSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHQgPSAobmV0c25tcF90cmFuc3BvcnQgKikgbWFsbG9jKHNpemVvZihuZXRzbm1wX3RyYW5zcG9ydCkpOworICAgIHQgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdHJhbnNwb3J0KTsKICAgICBpZiAodCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTIwNSw4ICsyMTMsNiBAQAogICAgICAgICBmcmVlKHN0cik7CiAgICAgfQogCi0gICAgbWVtc2V0KHQsIDAsIHNpemVvZihuZXRzbm1wX3RyYW5zcG9ydCkpOwotCiAgICAgdC0+ZG9tYWluID0gbmV0c25tcF9VRFBJUHY2RG9tYWluOwogICAgIHQtPmRvbWFpbl9sZW5ndGggPQogICAgICAgICBzaXplb2YobmV0c25tcF9VRFBJUHY2RG9tYWluKSAvIHNpemVvZihuZXRzbm1wX1VEUElQdjZEb21haW5bMF0pOwpAQCAtMjIwLDggKzIyNiw5IEBACiAgICAgX25ldHNubXBfdWRwX3NvY2tvcHRfc2V0KHQtPnNvY2ssIGxvY2FsKTsKIAogICAgIGlmIChsb2NhbCkgeworI2lmbmRlZiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUCiAgICAgICAgIC8qCi0gICAgICAgICAqIFRoaXMgc2Vzc2lvbiBpcyBpbnRlbmVkZWQgYXMgYSBzZXJ2ZXIsIHNvIHdlIG11c3QgYmluZCBvbiB0byB0aGUKKyAgICAgICAgICogVGhpcyBzZXNzaW9uIGlzIGludGVuZGVkIGFzIGEgc2VydmVyLCBzbyB3ZSBtdXN0IGJpbmQgb24gdG8gdGhlCiAgICAgICAgICAqIGdpdmVuIElQIGFkZHJlc3MsIHdoaWNoIG1heSBpbmNsdWRlIGFuIGludGVyZmFjZSBhZGRyZXNzLCBvciBjb3VsZAogICAgICAgICAgKiBiZSBJTkFERFJfQU5ZLCBidXQgY2VydGFpbmx5IGluY2x1ZGVzIGEgcG9ydCBudW1iZXIuCiAgICAgICAgICAqLwpAQCAtMjU1LDIwICsyNjIsMjMgQEAKICAgICAgICAgdC0+bG9jYWxfbGVuZ3RoID0gMTg7CiAgICAgICAgIHQtPmRhdGEgPSBOVUxMOwogICAgICAgICB0LT5kYXRhX2xlbmd0aCA9IDA7CisjZWxzZSAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCisgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KICAgICB9IGVsc2UgewogICAgICAgICAvKgogICAgICAgICAgKiBUaGlzIGlzIGEgY2xpZW50IHNlc3Npb24uICBTYXZlIHRoZSBhZGRyZXNzIGluIHRoZQogICAgICAgICAgKiB0cmFuc3BvcnQtc3BlY2lmaWMgZGF0YSBwb2ludGVyIGZvciBsYXRlciB1c2UgYnkgbmV0c25tcF91ZHA2X3NlbmQuCiAgICAgICAgICAqLwogCi0gICAgICAgIHQtPmRhdGEgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKTsKKyAgICAgICAgdC0+ZGF0YSA9IG1hbGxvYyhzaXplb2YobmV0c25tcF9pbmRleGVkX2FkZHJfcGFpcikpOwogICAgICAgICBpZiAodC0+ZGF0YSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBuZXRzbm1wX3NvY2tldGJhc2VfY2xvc2UodCk7CiAgICAgICAgICAgICBuZXRzbm1wX3RyYW5zcG9ydF9mcmVlKHQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgbWVtY3B5KHQtPmRhdGEsIGFkZHIsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSk7Ci0gICAgICAgIHQtPmRhdGFfbGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOworICAgICAgICB0LT5kYXRhX2xlbmd0aCA9IHNpemVvZihuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyKTsKICAgICAgICAgdC0+cmVtb3RlID0gKHVuc2lnbmVkIGNoYXIqKW1hbGxvYygxOCk7CiAgICAgICAgIGlmICh0LT5yZW1vdGUgPT0gTlVMTCkgewogICAgICAgICAgICAgbmV0c25tcF9zb2NrZXRiYXNlX2Nsb3NlKHQpOwpAQCAtNTQwLDcgKzU1MCw3IEBACiAKICAgICAgICAgICAgICAgICBoaW50cy5haV9mYW1pbHkgPSBBRl9JTkVUNjsKICAgICAgICAgICAgICAgICBoaW50cy5haV9zb2NrdHlwZSA9IFNPQ0tfREdSQU07Ci0gICAgICAgICAgICAgICAgZ2FpX2Vycm9yID0gZ2V0YWRkcmluZm8oc291cmNlLCBOVUxMLCAmaGludHMsICZyZXMpOworICAgICAgICAgICAgICAgIGdhaV9lcnJvciA9IG5ldHNubXBfZ2V0YWRkcmluZm8oc291cmNlLCBOVUxMLCAmaGludHMsICZyZXMpOwogICAgICAgICAgICAgICAgIGlmIChnYWlfZXJyb3IgIT0gMCkgewogICAgICAgICAgICAgICAgICAgICBjb25maWdfcGVycm9yKGdhaV9zdHJlcnJvcihnYWlfZXJyb3IpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmMgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVuaXhEb21haW4uYwppbmRleCBmYzdjM2I3Li42NzRkYzJiIDEwMDY0NAotLS0gYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVuaXhEb21haW4uYworKysgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVuaXhEb21haW4uYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oPgpAQCAtMzQsNyArMzUsMTAgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0Lmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wU29ja2V0QmFzZURvbWFpbi5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmg+IC8qIG1rZGlyaGllciAqLworI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRyYW5zcG9ydF91bml4X3NvY2tldF9hbGwsIHRyYW5zcG9ydF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodW5peF9zb2NrZXRfcGF0aHMsIHRyYW5zcG9ydF91bml4X3NvY2tldF9hbGwpCiAKICNpZm5kZWYgTkVUU05NUF9TVFJFQU1fUVVFVUVfTEVOCiAjZGVmaW5lIE5FVFNOTVBfU1RSRUFNX1FVRVVFX0xFTiAgNQpAQCAtMjU5LDYgKzI2Myw3IEBACiBzdGF0aWMgaW50IGNyZWF0ZV9wYXRoID0gMDsKIHN0YXRpYyBtb2RlX3QgY3JlYXRlX21vZGU7CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VTklYX1NPQ0tFVF9QQVRIUwogLyoqIElmIHRyeWluZyB0byBjcmVhdGUgdW5peCBzb2NrZXRzIGluIG5vbmV4aXN0aW5nIGRpcmVjdG9yaWVzIHRoZW4KICAqICB0cnkgdG8gY3JlYXRlIHRoZSBkaXJlY3Rvcnkgd2l0aCBtYXNrIG1vZGUuCiAgKi8KQEAgLTI3NSw2ICsyODAsNyBAQAogewogICAgIGNyZWF0ZV9wYXRoID0gMDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VOSVhfU09DS0VUX1BBVEhTICovCiAKIC8qCiAgKiBPcGVuIGEgVW5peC1kb21haW4gdHJhbnNwb3J0IGZvciBTTk1QLiAgTG9jYWwgaXMgVFJVRSBpZiBhZGRyIGlzIHRoZSBsb2NhbApAQCAtMjkwLDExICsyOTYsMTggQEAKICAgICBzb2NrYWRkcl91bl9wYWlyICpzdXAgPSBOVUxMOwogICAgIGludCAgICAgICAgICAgICByYyA9IDA7CiAKKyNpZmRlZiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUCisgICAgLyogU1BFQ0lBTCBDSVJDVU1TVEFOQ0U6IFdlIHN0aWxsIHdhbnQgQWdlbnRYIHRvIGJlIGFibGUgdG8gb3BlcmF0ZSwKKyAgICAgICBzbyB3ZSBhbGxvdyBmb3IgdW5peCBkb21haW4gc29ja3RlcyB0byBzdGlsbCBsaXN0ZW4gd2hlbiBldmVyeXRoaW5nCisgICAgICAgZWxzZSBpc24ndCBhbGxvd2VkIHRvLiAgVGh1cywgd2UgaWdub3JlIHRoaXMgZGVmaW5lIGluIHRoaXMgZmlsZS4KKyAgICAqLworI2VuZGlmIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KKwogICAgIGlmIChhZGRyID09IE5VTEwgfHwgYWRkci0+c3VuX2ZhbWlseSAhPSBBRl9VTklYKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHQgPSAobmV0c25tcF90cmFuc3BvcnQgKikgbWFsbG9jKHNpemVvZihuZXRzbm1wX3RyYW5zcG9ydCkpOworICAgIHQgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdHJhbnNwb3J0KTsKICAgICBpZiAodCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTMwNyw4ICszMjAsNiBAQAogICAgICAgICBmcmVlKHN0cik7CiAgICAgfQogCi0gICAgbWVtc2V0KHQsIDAsIHNpemVvZihuZXRzbm1wX3RyYW5zcG9ydCkpOwotCiAgICAgdC0+ZG9tYWluID0gbmV0c25tcF9Vbml4RG9tYWluOwogICAgIHQtPmRvbWFpbl9sZW5ndGggPQogICAgICAgICBzaXplb2YobmV0c25tcF9Vbml4RG9tYWluKSAvIHNpemVvZihuZXRzbm1wX1VuaXhEb21haW5bMF0pOwpkaWZmIC0tZ2l0IGEvc25tcGxpYi91Y2RfY29tcGF0LmMgYi9zbm1wbGliL3VjZF9jb21wYXQuYwppbmRleCBiZjIxYmU4Li42NGMxZTEzIDEwMDY0NAotLS0gYS9zbm1wbGliL3VjZF9jb21wYXQuYworKysgYi9zbm1wbGliL3VjZF9jb21wYXQuYwpAQCAtNCw2ICs0LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL3R5cGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvc2Vzc2lvbl9hcGkuaD4KQEAgLTExLDYgKzEyLDkgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L21pYi5oPgkvKiBmb3IgT0lEIE8vUCBmb3JtYXQgZW51bXMgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVjZF9jb21wYXRpYmlsaXR5LCBsaWJuZXRzbm1wKQorCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVUNEX0NPTVBBVElCSUxJVFkKIC8qCiAgKiB1c2UgPG5ldHNubXBfc2Vzc2lvbiAqKS0+c19zbm1wX2Vycm5vIGluc3RlYWQgCiAgKi8KQEAgLTIyMSwzICsyMjUsNiBAQAogewogICBuZXRzbm1wX2RzX3NodXRkb3duKCk7CiB9CisjZWxzZSAvKiAhTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VQ0RfQ09NUEFUSUJJTElUWSAqLworbmV0c25tcF9mZWF0dXJlX3VudXNlZCh1Y2RfY29tcGF0aWJpbGl0eSk7CisjZW5kaWYgLyogIU5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVUNEX0NPTVBBVElCSUxJVFkgKi8KZGlmZiAtLWdpdCBhL3NubXBsaWIvdmFjbS5jIGIvc25tcGxpYi92YWNtLmMKaW5kZXggMmRhMWRmOS4uYzYzOTc4NSAxMDA2NDQKLS0tIGEvc25tcGxpYi92YWNtLmMKKysrIGIvc25tcGxpYi92YWNtLmMKQEAgLTg0Miw2ICs4NDIsNyBAQAogICAgIHJldHVybiBncDsKIH0KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIHZvaWQKIHZhY21fZGVzdHJveUdyb3VwRW50cnkoaW50IHNlY3VyaXR5TW9kZWwsIGNvbnN0IGNoYXIgKnNlY3VyaXR5TmFtZSkKIHsKQEAgLTg2Nyw2ICs4NjgsNyBAQAogICAgIGZyZWUodnApOwogICAgIHJldHVybjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogdm9pZAogdmFjbV9kZXN0cm95QWxsR3JvdXBFbnRyaWVzKHZvaWQpCkBAIC0xMDM4LDYgKzEwNDAsNyBAQAogICAgIHJldHVybiB2cDsKIH0KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIHZvaWQKIHZhY21fZGVzdHJveUFjY2Vzc0VudHJ5KGNvbnN0IGNoYXIgKmdyb3VwTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnRleHRQcmVmaXgsCkBAIC0xMDY5LDYgKzEwNzIsNyBAQAogICAgIGZyZWUodnApOwogICAgIHJldHVybjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogdm9pZAogdmFjbV9kZXN0cm95QWxsQWNjZXNzRW50cmllcyh2b2lkKQpAQCAtMTE0MiwxMiArMTE0NiwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3U3VidHJlZUxlbik7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiB2b2lkCiB2YWNtX2Rlc3Ryb3lWaWV3RW50cnkoY29uc3QgY2hhciAqdmlld05hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgb2lkICogdmlld1N1YnRyZWUsIHNpemVfdCB2aWV3U3VidHJlZUxlbikKIHsKICAgICBuZXRzbm1wX3ZpZXdfZGVzdHJveSggJnZpZXdMaXN0LCB2aWV3TmFtZSwgdmlld1N1YnRyZWUsIHZpZXdTdWJ0cmVlTGVuKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogdm9pZAogdmFjbV9kZXN0cm95QWxsVmlld0VudHJpZXModm9pZCkKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvUlVOVEVTVFMgYi90ZXN0aW5nL1JVTlRFU1RTCmluZGV4IDY5ZmJhZTQuLjQ5MzMzMDcgMTAwNzU1Ci0tLSBhL3Rlc3RpbmcvUlVOVEVTVFMKKysrIGIvdGVzdGluZy9SVU5URVNUUwpAQCAtMTIsMTMgKzEyLDE3IEBACiAKICMgTWFrZSBzdXJlIE1pbkdXIC8gTVNZUyB1c2VycyBoYXZlIHRoZSBwc2tpbGwuZXhlIHByb2dyYW0gdG8gc3RvcCB0aGUgYWdlbnQgYW5kCiAjIHNubXB0cmFwZAotaWYgWyAieCRPU1RZUEUiID0gInhtc3lzIiAtYSAieGB0eXBlIHBza2lsbC5leGUgMj4vZGV2L251bGxgIiA9ICJ4IiBdOyB0aGVuCi0gICAgZWNobyAiQ291bGQgbm90IGZpbmQgcHNraWxsLmV4ZS4gQWJvcnRpbmcgdGVzdHMuIgotICAgIGVjaG8gInBza2lsbC5leGUgY2FuIGJlIGluc3RhbGxlZCBhcyBmb2xsb3dzOiIKLSAgICBlY2hvICIgLSBEb3dubG9hZCBwc2tpbGwuZXhlIGZyb20gaHR0cDovL3RlY2huZXQubWljcm9zb2Z0LmNvbS9lbi11cy9zeXNpbnRlcm5hbHMvZGVmYXVsdC5hc3B4LiIKLSAgICBlY2hvICIgLSBDb3B5IHBza2lsbC5leGUgdG8gQzpcXE1pbkdXXFxtc3lzXFwxLjBcXGJpbi4iCi0gICAgZXhpdCAxCi1maSAKK2lmIFsgIngkT1NUWVBFIiA9ICJ4bXN5cyIgXTsgdGhlbgorICAgIGZvciBlIGluIHBza2lsbC5leGUgcHNsaXN0LmV4ZTsgZG8KKwlpZiBbICJ4YHR5cGUgJGUgMj4vZGV2L251bGxgIiA9ICJ4IiBdOyB0aGVuCisJICAgIGVjaG8gIkNvdWxkIG5vdCBmaW5kICRlLiBBYm9ydGluZyB0ZXN0cy4iCisJICAgIGVjaG8gIiRlIGNhbiBiZSBpbnN0YWxsZWQgYXMgZm9sbG93czoiCisJICAgIGVjaG8gIi0gRG93bmxvYWQgUFNUb29scy56aXAgZnJvbSBodHRwOi8vdGVjaG5ldC5taWNyb3NvZnQuY29tL2VuLXVzL3N5c2ludGVybmFscy9kZWZhdWx0LiIKKwkgICAgZWNobyAiLSBDb3B5ICRlIHRvIEM6XFxNaW5HV1xcbXN5c1xcMS4wXFxiaW4uIgorCSAgICBleGl0IDEKKwlmaQorICAgIGRvbmUKK2ZpCiAKIHN1Y2Nlc3NfY291bnQ9MAogZmFpbGVkX2NvdW50PTAKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3YzY29uZmlnIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9TdjNjb25maWcKaW5kZXggNDNhN2ZiMi4uNTVkZjViNCAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9TdjNjb25maWcKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9TdjNjb25maWcKQEAgLTEsNSArMSw3IEBACiAjIS9iaW4vc2gKIAorU0tJUElGTk9UIE5FVFNOTVBfU0VDTU9EX1VTTQorCiBbICJ4JFNOTVBfU01VWF9TT0NLRVQiID0gIngiIF0gJiYgU05NUF9TTVVYX1NPQ0tFVD0xLjAuMC4wCiAKIENPTkZJR0FHRU5UIFtzbm1wXSBwZXJzaXN0ZW50ZGlyICRTTk1QX1RNUF9QRVJTSVNURU5URElSCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1N2M3VzbWNvbmZpZ2Jhc2UgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1N2M3VzbWNvbmZpZ2Jhc2UKaW5kZXggOTliZGEwNC4uYjJlMWViMiAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9TdjN1c21jb25maWdiYXNlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3YzdXNtY29uZmlnYmFzZQpAQCAtMjIsNiArMjIsOCBAQAogIyAgIFRFU1RQUklWQVJHU1tOT1BBU1NdWzJdCiAjCiAKK1NLSVBJRk5PVCBORVRTTk1QX1NFQ01PRF9VU00KKwogIyMgRGVmYXVsdHMKIFsgIngkREVGU0VDVVJJVFlMRVZFTCIgPSAieCIgXSAmJiBERUZTRUNVUklUWUxFVkVMPWF1dGhQcml2CiAKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3YzdmFjbWNvbmZpZyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3YzdmFjbWNvbmZpZwppbmRleCAzZDdiZjk1Li43YzM1ZTM2IDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1N2M3ZhY21jb25maWcKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9TdjN2YWNtY29uZmlnCkBAIC0xMCw2ICsxMCw3IEBACiAjIFhYWDogZG8gYXV0b3NlbGVjdGlvbiBvZiBzdXBwb3J0ZWQgYWxnb3JpdGhtcwogU0tJUElGIE5FVFNOTVBfRElTQUJMRV9NRDUKIFNLSVBJRiBORVRTTk1QX0RJU0FCTEVfREVTCitTS0lQSUZOT1QgTkVUU05NUF9TRUNNT0RfVVNNCiAKIENPTkZJR0FHRU5UIFtzbm1wXSBwZXJzaXN0ZW50ZGlyICRTTk1QX1RNUF9QRVJTSVNURU5URElSCiAKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3Zhbnljb25maWcgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1N2YW55Y29uZmlnCmluZGV4IGI5MWViMGYuLjhjYjUzZGMgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3Zhbnljb25maWcKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9TdmFueWNvbmZpZwpAQCAtMjYsNCArMjYsNCBAQAogCiBDT05GSUdBR0VOVCBncm91cCAgIHRlc3Rjb21tdW5pdHlncm91cCAgJHNubXBfdmVyc2lvbiAgICAgdGVzdGNvbW11bml0eXNlYwogQ09ORklHQUdFTlQgdmlldyAgICBhbGwgICAgIGluY2x1ZGVkIC4xIDgwCi1DT05GSUdBR0VOVCAiYWNjZXNzICB0ZXN0Y29tbXVuaXR5Z3JvdXAgICInIiInIiBhbnkgbm9hdXRoIGV4YWN0IGFsbCAkc25tcF93cml0ZV9hY2Nlc3Mgbm9uZSIKK0NPTkZJR0FHRU5UICJhY2Nlc3MgIHRlc3Rjb21tdW5pdHlncm91cCAgJycgYW55IG5vYXV0aCBleGFjdCBhbGwgJHNubXBfd3JpdGVfYWNjZXNzIG5vbmUiCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMTQxc25tcHYyY3NldF9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMTQxc25tcHYyY3NldF9zaW1wbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThkOWJhZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAxNDFzbm1wdjJjc2V0X3NpbXBsZQpAQCAtMCwwICsxLDM1IEBACisjIS9iaW4vc2gKKworLiAuLi9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoCisKK0hFQURFUiBTTk1QdjJjIHNldCBvZiBzeXN0ZW0uc3lzQ29udGFjdC4wCisKK1NLSVBJRiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKK1NLSVBJRiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK1NLSVBJRiBORVRTTk1QX0RJU0FCTEVfU05NUFYyQworU0tJUElGTk9UIFVTSU5HX01JQklJX1NZU1RFTV9NSUJfTU9EVUxFCisKKyMKKyMgQmVnaW4gdGVzdAorIworCisjIHN0YW5kYXJkIFYyQyBjb25maWd1cmF0aW9uOiB0ZXN0Y29tdW5uaXR5Citzbm1wX3dyaXRlX2FjY2Vzcz0nYWxsJworLiAuL1N2MmNjb25maWcKK1NUQVJUQUdFTlQKKworQ0FQVFVSRSAic25tcGdldCAtT24gJFNOTVBfRkxBR1MgLWMgdGVzdGNvbW11bml0eSAtdiAyYyAkU05NUF9UUkFOU1BPUlRfU1BFQzokU05NUF9URVNUX0RFU1QkU05NUF9TTk1QRF9QT1JUIC4xLjMuNi4xLjIuMS4xLjQuMCIKKworQ0hFQ0sgIi4xLjMuNi4xLjIuMS4xLjQuMCA9IFNUUklORzoiCisKK0NBUFRVUkUgInNubXBzZXQgLU9uICRTTk1QX0ZMQUdTIC1jIHRlc3Rjb21tdW5pdHkgLXYgMmMgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAuMS4zLjYuMS4yLjEuMS40LjAgcyBmb29iYXJ0ZXN0aW5nYmF6IgorCitDSEVDSyAiLjEuMy42LjEuMi4xLjEuNC4wID0gU1RSSU5HOiIKKworQ0FQVFVSRSAic25tcGdldCAtT24gJFNOTVBfRkxBR1MgLWMgdGVzdGNvbW11bml0eSAtdiAyYyAkU05NUF9UUkFOU1BPUlRfU1BFQzokU05NUF9URVNUX0RFU1QkU05NUF9TTk1QRF9QT1JUIC4xLjMuNi4xLjIuMS4xLjQuMCIKKworQ0hFQ0sgIlNUUklORzogZm9vYmFydGVzdGluZ2JheiIKKworU1RPUEFHRU5UCisKK0ZJTklTSEVECmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMTZzbm1wdjJjZ2V0ZmFpbF9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMTZzbm1wdjJjZ2V0ZmFpbF9zaW1wbGUKaW5kZXggNmUzYjgxNC4uMWNkMGU5NCAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDE2c25tcHYyY2dldGZhaWxfc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAxNnNubXB2MmNnZXRmYWlsX3NpbXBsZQpAQCAtMTAsNiArMTAsNyBAQAogCiBTS0lQSUYgTkVUU05NUF9ESVNBQkxFX1NOTVBWMkMKIFNLSVBJRk5PVCBVU0lOR19NSUJJSV9TWVNURU1fTUlCX01PRFVMRQorU0tJUElGTk9UIFVTSU5HX01JQklJX1ZBQ01fQ09ORl9NT0RVTEUKIAogIwogIyBCZWdpbiB0ZXN0CmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMjVzbm1wdjNnZXRTSEFERVNfc2ltcGxlIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDI1c25tcHYzZ2V0U0hBREVTX3NpbXBsZQppbmRleCBhNTliNjliLi5kMDFhNGVmIDEwMDc1NQotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMjVzbm1wdjNnZXRTSEFERVNfc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAyNXNubXB2M2dldFNIQURFU19zaW1wbGUKQEAgLTE3LDYgKzE3LDcgQEAKIERFRlBSSVZUWVBFPSJERVMiCiAuIC4vU3YzY29uZmlnCiAKK0FHRU5UX0ZMQUdTPSIkQUdFTlRfRkxBR1MgLUktd2luRXh0RExMIgogU1RBUlRBR0VOVAogCiBDQVBUVVJFICJzbm1wZ2V0IC1PbiAkU05NUF9GTEFHUyAkUFJJVlRFU1RBUkdTICRTTk1QX1RSQU5TUE9SVF9TUEVDOiRTTk1QX1RFU1RfREVTVCRTTk1QX1NOTVBEX1BPUlQgLjEuMy42LjEuMi4xLjEuMy4wIgpkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDI2c25tcHYzZ2V0U0hBQUVTX3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAyNnNubXB2M2dldFNIQUFFU19zaW1wbGUKaW5kZXggY2JmY2NhNy4uNTYxY2RhYiAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDI2c25tcHYzZ2V0U0hBQUVTX3NpbXBsZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMjZzbm1wdjNnZXRTSEFBRVNfc2ltcGxlCkBAIC0xNyw2ICsxNyw3IEBACiBERUZBVVRIVFlQRT0iU0hBIgogLiAuL1N2M2NvbmZpZwogCitBR0VOVF9GTEFHUz0iJEFHRU5UX0ZMQUdTIC1JLXdpbkV4dERMTCIKIFNUQVJUQUdFTlQKIAogQ0FQVFVSRSAic25tcGdldCAtT24gJFNOTVBfRkxBR1MgJFBSSVZURVNUQVJHUyAkU05NUF9UUkFOU1BPUlRfU1BFQzokU05NUF9URVNUX0RFU1QkU05NUF9TTk1QRF9QT1JUIC4xLjMuNi4xLjIuMS4xLjMuMCIKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAyN3NubXB2M0RlZmF1bHRzX3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAyN3NubXB2M0RlZmF1bHRzX3NpbXBsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTQyZjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDI3c25tcHYzRGVmYXVsdHNfc2ltcGxlCkBAIC0wLDAgKzEsMzggQEAKKyMhL2Jpbi9zaAorCisuIC4uL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2gKKworSEVBREVSIFNOTVB2MyBnZXQgdXNpbmcgZGVmYXVsdCBjb25maWcgb2YgLjEuMy42LjEuMi4xLjEuMy4wCisKK1NLSVBJRk5PVCBORVRTTk1QX0NBTl9ET19DUllQVE8KK1NLSVBJRk5PVCBORVRTTk1QX0VOQUJMRV9TQ0FQSV9BVVRIUFJJVgorU0tJUElGTk9UIEhBVkVfQUVTX0NGQjEyOF9FTkNSWVBUCisKKyMKKyMgQmVnaW4gdGVzdAorIworCisjIHN0YW5kYXJkIFYzIGNvbmZpZ3VyYXRpb24gZm9yIHRlbXBsYXRlU0hBIHVzZXIKK0RFRlBSSVZUWVBFPSJBRVMiCitERUZBVVRIVFlQRT0iU0hBIgorLiAuL1N2M2NvbmZpZworCitTVEFSVEFHRU5UCisKK0NPTkZJR0FQUCBkZWZQcml2VHlwZSBBRVMKK0NPTkZJR0FQUCBkZWZBdXRoVHlwZSBTSEEKK0NPTkZJR0FQUCBkZWZDb250ZXh0IFwiXCIKK0NPTkZJR0FQUCBkZWZBdXRoUGFzc1BocmFzZSBpbml0aWFsX3Rlc3RfcGFzc19hdXRoCitDT05GSUdBUFAgZGVmUHJpdlBhc3NQaHJhc2UgaW5pdGlhbF90ZXN0X3Bhc3NfYXV0aAorQ09ORklHQVBQIGRlZlNlY3VyaXR5TGV2ZWwgYXV0aFByaXYKK0NPTkZJR0FQUCBkZWZTZWN1cml0eU5hbWUgaW5pdGlhbAorCisjIG1ha2Ugc3VyZSB0aGF0IHRoZSBhYm92ZSBjb25maWd1cmF0aW9uIHRva2VucyBwcm9wZXJseSBzZXQgdGhpbmdzIHVwIHNvIHRoYXQKKyMgbm8gZmxhZ3MgYXJlIG5lZWRlZAorQ0FQVFVSRSAic25tcGdldCAtT24gJFNOTVBfRkxBR1MgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAuMS4zLjYuMS4yLjEuMS4zLjAiCisKK1NUT1BBR0VOVAorCitDSEVDSyAiLjEuMy42LjEuMi4xLjEuMy4wID0gVGltZXRpY2tzOiIKKworRklOSVNIRUQKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAzMHNubXB2M3VzZXJjcmVhdGlvbl9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMzBzbm1wdjN1c2VyY3JlYXRpb25fc2ltcGxlCmluZGV4IDQwZTRjYWMuLjI4ZWFhZTggMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAzMHNubXB2M3VzZXJjcmVhdGlvbl9zaW1wbGUKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDMwc25tcHYzdXNlcmNyZWF0aW9uX3NpbXBsZQpAQCAtNSw2ICs1LDcgQEAKIEhFQURFUiBTTk1QdjMgYWdlbnQgVVNNIHVzZXIgbWFuYWdlbWVudCB3aXRoIHNubXB1c20KIAogU0tJUElGIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorU0tJUElGIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogU0tJUElGTk9UIFVTSU5HX1NOTVBWM19VU01VU0VSX01PRFVMRQogU0tJUElGTk9UIE5FVFNOTVBfQ0FOX0RPX0NSWVBUTwogU0tJUElGTk9UIE5FVFNOTVBfRU5BQkxFX1NDQVBJX0FVVEhQUklWCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMzVzbm1wdjN0cmFwZHVzZXJtZ210X3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAzNXNubXB2M3RyYXBkdXNlcm1nbXRfc2ltcGxlCmluZGV4IGNhMzNkYzkuLmJlN2FhYjYgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAzNXNubXB2M3RyYXBkdXNlcm1nbXRfc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAzNXNubXB2M3RyYXBkdXNlcm1nbXRfc2ltcGxlCkBAIC05LDcgKzksOCBAQAogU0tJUElGTk9UIFVTSU5HX1NOTVBWM19VU01VU0VSX01PRFVMRQogU0tJUElGICAgIE5FVFNOTVBfU05NUFRSQVBEX0RJU0FCTEVfQUdFTlRYCiBTS0lQSUYgICAgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCi1TS0lQSUZOT1QgTkVUU05NUF9VU0VfT1BFTlNTTAorU0tJUElGICAgIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorU0tJUElGTk9UIE5FVFNOTVBfQ0FOX0RPX0NSWVBUTwogU0tJUElGTk9UIE5FVFNOTVBfRU5BQkxFX1NDQVBJX0FVVEhQUklWCiAKICMKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA0OXNubXB2M2luZm9ybV9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNDlzbm1wdjNpbmZvcm1fc2ltcGxlCmluZGV4IDMyMzdlZmEuLjk5Y2I1ZWIgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA0OXNubXB2M2luZm9ybV9zaW1wbGUKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDQ5c25tcHYzaW5mb3JtX3NpbXBsZQpAQCAtMiw2ICsyLDggQEAKIAogLiAuLi9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoCiAKK1NLSVBJRk5PVCBORVRTTk1QX1NFQ01PRF9VU00KKwogREVGU0VDVVJJVFlMRVZFTD1ub0F1dGhOb1ByaXYKIAogSEVBREVSICJTTk1QdjMgaW5mb3JtcyAobm9BdXRoTm9Qcml2KSByZWNlaXZlZCBhbmQgc2VudCBieSB0b29scyIKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA0OXNubXB2M2luZm9ybWF1dGhfc2ltcGxlIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDQ5c25tcHYzaW5mb3JtYXV0aF9zaW1wbGUKaW5kZXggZDE0YWZiYS4uMGYxODU3NyAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDQ5c25tcHYzaW5mb3JtYXV0aF9zaW1wbGUKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDQ5c25tcHYzaW5mb3JtYXV0aF9zaW1wbGUKQEAgLTIsNiArMiw4IEBACiAKIC4gLi4vc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaAogCitTS0lQSUZOT1QgTkVUU05NUF9TRUNNT0RfVVNNCisKIERFRlNFQ1VSSVRZTEVWRUw9YXV0aE5vUHJpdgogCiBIRUFERVIgIlNOTVB2MyBpbmZvcm1zIChhdXRoTm9Qcml2KSByZWNlaXZlZCBhbmQgc2VudCBieSB0b29scyIKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1MXNubXB2MmN0cmFwX3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1MXNubXB2MmN0cmFwX3NpbXBsZQppbmRleCA3NDMxNzFhLi44ZTFiZTZiIDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNTFzbm1wdjJjdHJhcF9zaW1wbGUKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDUxc25tcHYyY3RyYXBfc2ltcGxlCkBAIC01LDYgKzUsNyBAQAogSEVBREVSIFNOTVB2MmMgdHJhcHMgcmVjZWl2ZWQgYW5kIHNlbnQgYnkgdG9vbHMKIAogU0tJUElGIE5FVFNOTVBfRElTQUJMRV9TTk1QVjJDCitTS0lQSUZOT1QgVVNJTkdfTUlCSUlfVkFDTV9DT05GX01PRFVMRQogCiAjCiAjIEJlZ2luIHRlc3QKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1MnNubXB2MmNpbmZvcm1fc2ltcGxlIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDUyc25tcHYyY2luZm9ybV9zaW1wbGUKaW5kZXggNzdmM2E0Yy4uNDIwOGRmOCAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDUyc25tcHYyY2luZm9ybV9zaW1wbGUKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDUyc25tcHYyY2luZm9ybV9zaW1wbGUKQEAgLTUsNiArNSw3IEBACiBIRUFERVIgU05NUHYyYyBpbmZvcm1zIHJlY2VpdmVkIGFuZCBzZW50IGJ5IHRvb2xzCiAKIFNLSVBJRiBORVRTTk1QX0RJU0FCTEVfU05NUFYyQworU0tJUElGTk9UIFVTSU5HX01JQklJX1ZBQ01fQ09ORl9NT0RVTEUKIAogIwogIyBCZWdpbiB0ZXN0CmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNTd0cmFwZGF1dGh0ZXN0Ml9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNTd0cmFwZGF1dGh0ZXN0Ml9zaW1wbGUKaW5kZXggMDczZDNjNC4uNmE0Mzk4OSAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU3dHJhcGRhdXRodGVzdDJfc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1N3RyYXBkYXV0aHRlc3QyX3NpbXBsZQpAQCAtMiw2ICsyLDggQEAKIAogLiAuLi9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoCiAKK1NLSVBJRk5PVCBORVRTTk1QX1NFQ01PRF9VU00KKwogSEVBREVSIHNubXB0cmFwZCBkaXNjYXJkcyBvZiB1bmF1dGhvcml6ZWQgbm90aWZpY2F0aW9uIHR5cGVzIAogCiAjCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNTd0cmFwZGF1dGh0ZXN0M19zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNTd0cmFwZGF1dGh0ZXN0M19zaW1wbGUKaW5kZXggMTQyNmI0YS4uMDc4ZWYzOCAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU3dHJhcGRhdXRodGVzdDNfc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1N3RyYXBkYXV0aHRlc3QzX3NpbXBsZQpAQCAtMiw2ICsyLDggQEAKIAogLiAuLi9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoCiAKK1NLSVBJRk5PVCBORVRTTk1QX1NFQ01PRF9VU00KKwogSEVBREVSIHNubXB0cmFwZCBkaXNjYXJkcyBvZiBpbmNvcnJlY3QgdmlldyB0eXBlcyAKIAogIwpkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU3dHJhcGRhdXRodGVzdF9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNTd0cmFwZGF1dGh0ZXN0X3NpbXBsZQppbmRleCBlMjVlMzllLi40ZTJmYzEwIDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNTd0cmFwZGF1dGh0ZXN0X3NpbXBsZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNTd0cmFwZGF1dGh0ZXN0X3NpbXBsZQpAQCAtMiw2ICsyLDggQEAKIAogLiAuLi9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoCiAKK1NLSVBJRk5PVCBORVRTTk1QX1NFQ01PRF9VU00KKwogSEVBREVSIHNubXB0cmFwZCBhdXRob3JpemF0aW9uIGZhaWx1cmUgb2Ygbm9uIGF1dGhvcml6ZWQgdXNlcnMKIAogIwpkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU5dHJhcGR0cmFwaGFuZGxlX3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1OXRyYXBkdHJhcGhhbmRsZV9zaW1wbGUKaW5kZXggMmMxZjdhNi4uNTNkNWI5MCAxMDA3NTUKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU5dHJhcGR0cmFwaGFuZGxlX3NpbXBsZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNTl0cmFwZHRyYXBoYW5kbGVfc2ltcGxlCkBAIC0xOSw2ICsxOSw3IEBACiAKIFNLSVBJRiBORVRTTk1QX0RJU0FCTEVfU05NUFYyQwogU0tJUElGTk9UIFVTSU5HX1VUSUxJVElFU19FWEVDVVRFX01PRFVMRQorU0tJUElGTk9UIEhBVkVfU0lHSFVQCiAKICMKICMgQmVnaW4gdGVzdApkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDYwdHJhcGRwZXJsX3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA2MHRyYXBkcGVybF9zaW1wbGUKaW5kZXggN2U3MjNiYi4uNzBkZWNmNCAxMDA3NTUKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDYwdHJhcGRwZXJsX3NpbXBsZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNjB0cmFwZHBlcmxfc2ltcGxlCkBAIC03LDYgKzcsNyBAQAogU0tJUElGIE5FVFNOTVBfRElTQUJMRV9TTk1QVjJDCiBTS0lQSUZOT1QgTkVUU05NUF9FTUJFRERFRF9QRVJMCiBTS0lQSUZOT1QgSEFWRV9TSUdIVVAKK1NLSVBJRk5PVCBORVRTTk1QX1NFQ01PRF9VU00KIAogIwogIyBCZWdpbiB0ZXN0CmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNjFhZ2VudHBlcmxfc2ltcGxlIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDYxYWdlbnRwZXJsX3NpbXBsZQppbmRleCA1ZWJmODYzLi5jMjBhM2ZmIDEwMDc1NQotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNjFhZ2VudHBlcmxfc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA2MWFnZW50cGVybF9zaW1wbGUKQEAgLTcsNiArNyw3IEBACiBTS0lQSUYgTkVUU05NUF9ESVNBQkxFX1NOTVBWMkMKIFNLSVBJRk5PVCBORVRTTk1QX0VNQkVEREVEX1BFUkwKIFNLSVBJRk5PVCBIQVZFX1NJR0hVUAorU0tJUElGTk9UIE5FVFNOTVBfU0VDTU9EX1VTTQogCiAjCiAjIEJlZ2luIHRlc3QKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA2NWFnZW50ZXh0ZW5kX3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA2NWFnZW50ZXh0ZW5kX3NpbXBsZQppbmRleCA2OGMzOGY5Li5mNDE5MjY2IDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNjVhZ2VudGV4dGVuZF9zaW1wbGUKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDY1YWdlbnRleHRlbmRfc2ltcGxlCkBAIC0yMSwxMSArMjEsMTAgQEAKICMgQmVnaW4gdGVzdAogIwogCitpbmRleD0nImhlbGxvIicKIGlmIFsgIngkT1NUWVBFIiA9ICJ4bXN5cyIgXTsgdGhlbgotICAgIGluZGV4PSdcImhlbGxvXCInCiAgICAgQ09ORklHQUdFTlQgZXh0ZW5kIGhlbGxvICRNU1lTX1NIIC1jICInIiBlY2hvIGhlbGxvX3dvcmxkICInIgogZWxzZQotICAgIGluZGV4PSciaGVsbG8iJwogICAgIENPTkZJR0FHRU5UIGV4dGVuZCBoZWxsbyAvdXNyL2Jpbi9lbnYgZWNobyBoZWxsb193b3JsZAogZmkKIApAQCAtMzMsMTUgKzMyLDE1IEBACiAKICMgTkVULVNOTVAtRVhURU5ELU1JQjo6bnNFeHRlbmRPdXRwdXQxTGluZS4iaGVsbG8iID0gU1RSSU5HOiAiaGVsbG9fd29ybGQiCiBDQVBUVVJFICIkU05NUEdFVCAkU05NUF9GTEFHUyAtJHNubXBfdmVyc2lvbiAtYyAkVEVTVENPTU1VTklUWSAkU05NUF9UUkFOU1BPUlRfU1BFQzokU05NUF9URVNUX0RFU1QkU05NUF9TTk1QRF9QT1JUIC4xLjMuNi4xLjQuMS44MDcyLjEuMy4yLjMuMS4xLiRpbmRleCIKLUNIRUNLT1JESUUgImhlbGxvX3dvcmxkIgorQ0hFQ0tPUkRJRSAiU1RSSU5HOiBoZWxsb193b3JsZCIKIAogI05FVC1TTk1QLUVYVEVORC1NSUI6Om5zRXh0ZW5kT3V0cHV0RnVsbC4iaGVsbG8iID0gU1RSSU5HOiAiaGVsbG9fd29ybGQiCiBDQVBUVVJFICIkU05NUEdFVCAkU05NUF9GTEFHUyAtJHNubXBfdmVyc2lvbiAtYyAkVEVTVENPTU1VTklUWSAkU05NUF9UUkFOU1BPUlRfU1BFQzokU05NUF9URVNUX0RFU1QkU05NUF9TTk1QRF9QT1JUIC4xLjMuNi4xLjQuMS44MDcyLjEuMy4yLjMuMS4yLiRpbmRleCIKLUNIRUNLT1JESUUgImhlbGxvX3dvcmxkIgorQ0hFQ0tPUkRJRSAiU1RSSU5HOiBoZWxsb193b3JsZCIKIAogI05FVC1TTk1QLUVYVEVORC1NSUI6Om5zRXh0ZW5kT3V0TGluZS4iaGVsbG8iLjEgPSBTVFJJTkc6ICJoZWxsb193b3JsZCIKIENBUFRVUkUgIiRTTk1QR0VUICRTTk1QX0ZMQUdTIC0kc25tcF92ZXJzaW9uIC1jICRURVNUQ09NTVVOSVRZICRTTk1QX1RSQU5TUE9SVF9TUEVDOiRTTk1QX1RFU1RfREVTVCRTTk1QX1NOTVBEX1BPUlQgLjEuMy42LjEuNC4xLjgwNzIuMS4zLjIuNC4xLjIuJGluZGV4LjEiCi1DSEVDS09SRElFICJoZWxsb193b3JsZCIKK0NIRUNLT1JESUUgIlNUUklORzogaGVsbG9fd29ybGQiCiAKICNORVQtU05NUC1FWFRFTkQtTUlCOjpuc0V4dGVuZE91dE51bUxpbmVzLiJoZWxsbyIgPSBJTlRFR0VSOiAxCiBDQVBUVVJFICIkU05NUEdFVCAkU05NUF9GTEFHUyAtJHNubXBfdmVyc2lvbiAtYyAkVEVTVENPTU1VTklUWSAkU05NUF9UUkFOU1BPUlRfU1BFQzokU05NUF9URVNUX0RFU1QkU05NUF9TTk1QRF9QT1JUIC4xLjMuNi4xLjQuMS44MDcyLjEuMy4yLjMuMS4zLiRpbmRleCIKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDExMWFnZW50eHNldF9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMTFhZ2VudHhzZXRfc2ltcGxlCmluZGV4IGM3NjcwNjQuLjg3OTM5YmQgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDExMWFnZW50eHNldF9zaW1wbGUKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTExYWdlbnR4c2V0X3NpbXBsZQpAQCAtOCw2ICs4LDcgQEAKIFNLSVBJRk5PVCBVU0lOR19BR0VOVFhfU1VCQUdFTlRfTU9EVUxFCiBTS0lQSUZOT1QgVVNJTkdfTUlCSUlfU1lTVEVNX01JQl9NT0RVTEUKIFNLSVBJRiAgICBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKK1NLSVBJRiAgICBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIAogIwogIyBCZWdpbiB0ZXN0CmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMTJhZ2VudHhzZXRmYWlsX3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDExMmFnZW50eHNldGZhaWxfc2ltcGxlCmluZGV4IDRmMWYwY2IuLmQ2MTBiNDEgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDExMmFnZW50eHNldGZhaWxfc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDExMmFnZW50eHNldGZhaWxfc2ltcGxlCkBAIC04LDYgKzgsNyBAQAogU0tJUElGTk9UIFVTSU5HX0FHRU5UWF9TVUJBR0VOVF9NT0RVTEUKIFNLSVBJRk5PVCBVU0lOR19NSUJJSV9TWVNURU1fTUlCX01PRFVMRQogU0tJUElGICAgIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorU0tJUElGICAgIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogCiAjCiAjIEJlZ2luIHRlc3QKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDExM2FnZW50eHRyYXBfc2ltcGxlIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTEzYWdlbnR4dHJhcF9zaW1wbGUKaW5kZXggYmUyYjliZS4uNGZhNWUyZiAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTEzYWdlbnR4dHJhcF9zaW1wbGUKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTEzYWdlbnR4dHJhcF9zaW1wbGUKQEAgLTcsNiArNyw3IEBACiBTS0lQSUZOT1QgVVNJTkdfQUdFTlRYX01BU1RFUl9NT0RVTEUKIFNLSVBJRk5PVCBVU0lOR19BR0VOVFhfU1VCQUdFTlRfTU9EVUxFCiBTS0lQSUZOT1QgVVNJTkdfRVhBTVBMRVNfRVhBTVBMRV9NT0RVTEUKK1NLSVBJRk5PVCBORVRTTk1QX1NFQ01PRF9VU00KIAogIwogIyBCZWdpbiB0ZXN0CmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMTRhZ2VudHhhZ2VudHh0cmFwX3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDExNGFnZW50eGFnZW50eHRyYXBfc2ltcGxlCmluZGV4IDM4MGMwZWYuLjU4NDc1ZDAgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDExNGFnZW50eGFnZW50eHRyYXBfc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDExNGFnZW50eGFnZW50eHRyYXBfc2ltcGxlCkBAIC01LDYgKzUsNyBAQAogSEVBREVSIEFnZW50WCB0cmFwIHNlbmRpbmcgc3VwcG9ydCB1c2luZyBhZ2VudHh0cmFwCiAKIFNLSVBJRk5PVCBVU0lOR19BR0VOVFhfTUFTVEVSX01PRFVMRQorU0tJUElGTk9UIE5FVFNOTVBfU0VDTU9EX1VTTQogCiAjCiAjIEJlZ2luIHRlc3QKQEAgLTM3LDcgKzM4LDcgQEAKIFNUT1BUUkFQRAogCiAjIENoZWNrIHRoYXQgdGhlIHRyYXAgd2FzIHJlY2VpdmVkCi1DSEVDS1RSQVBEICJtb3N0bHlfaGFybWxlc3MiCitDSEVDS1RSQVBEICI9IFNUUklORzogXCIqbW9zdGx5X2hhcm1sZXNzXCIqIgogCiAjIGFsbCBkb25lICh3aGV3KQogRklOSVNIRUQKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDEyMXByb3h5c2V0X3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDEyMXByb3h5c2V0X3NpbXBsZQppbmRleCBjODc2NjhjLi5kZDE5NjQxIDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMjFwcm94eXNldF9zaW1wbGUKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTIxcHJveHlzZXRfc2ltcGxlCkBAIC04LDYgKzgsNyBAQAogU0tJUElGTk9UIFVTSU5HX01JQklJX1NZU1RFTV9NSUJfTU9EVUxFCiBTS0lQSUYgICAgTkVUU05NUF9ESVNBQkxFX1NOTVBWMkMKIFNLSVBJRiAgICBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKK1NLSVBJRiAgICBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIAogIyBYWFg6IHVjZC1zbm1wL3Byb3h5IGRvZXNuJ3QgcHJvcGVybHkgc3VwcG9ydCBUQ1AgLS0gcmVtb3ZlIHRoaXMgb25jZSBpdCBkb2VzCiBbICJ4JFNOTVBfVFJBTlNQT1JUX1NQRUMiID0gInh0Y3AiIC1vICJ4JFNOTVBfVFJBTlNQT1JUX1NQRUMiID0gInh0Y3A2IiBdICYmIFNLSVAgVGVzdCBkb2VzIG5vdCBzdXBwb3J0IFRDUApkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTIycHJveHlzZXRmYWlsX3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDEyMnByb3h5c2V0ZmFpbF9zaW1wbGUKaW5kZXggN2Y1N2JlOS4uN2YyNzg3MyAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTIycHJveHlzZXRmYWlsX3NpbXBsZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMjJwcm94eXNldGZhaWxfc2ltcGxlCkBAIC04LDYgKzgsNyBAQAogU0tJUElGTk9UIFVTSU5HX01JQklJX1NZU1RFTV9NSUJfTU9EVUxFCiBTS0lQSUYgICAgTkVUU05NUF9ESVNBQkxFX1NOTVBWMkMKIFNLSVBJRiAgICBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKK1NLSVBJRiAgICBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIAogIyBYWFg6IHVjZC1zbm1wL3Byb3h5IGRvZXNuJ3QgcHJvcGVybHkgc3VwcG9ydCBUQ1AgLS0gcmVtb3ZlIHRoaXMgb25jZSBpdCBkb2VzCiBbICJ4JFNOTVBfVFJBTlNQT1JUX1NQRUMiID0gInh0Y3AiIF0gJiYgU0tJUCBUZXN0IGRvZXMgbm90IHN1cHBvcnQgVENQCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMzBzbm1wdjF2YWNtZ2V0X3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDEzMHNubXB2MXZhY21nZXRfc2ltcGxlCmluZGV4IDE5NzRiN2YuLjgwNjIzZjQgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDEzMHNubXB2MXZhY21nZXRfc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDEzMHNubXB2MXZhY21nZXRfc2ltcGxlCkBAIC0xNiw2ICsxNiw3IEBACiBzbm1wX3ZlcnNpb249djEKIC4gLi9TdmFjbWNvbmZpZwogCitBR0VOVF9GTEFHUz0iJEFHRU5UX0ZMQUdTIC1JLXdpbkV4dERMTCIKIFNUQVJUQUdFTlQKIAogQ0FQVFVSRSAic25tcGdldCAtT24gJFNOTVBfRkxBR1MgLWMgdGVzdGNvbW11bml0eTEgLXYgMSAkU05NUF9UUkFOU1BPUlRfU1BFQzokU05NUF9URVNUX0RFU1QkU05NUF9TTk1QRF9QT1JUIC4xLjMuNi4xLjIuMS4xLjEuMCIgCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxNDFzbm1wdjJjdmFjbWdldGZhaWxfc2ltcGxlIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTQxc25tcHYyY3ZhY21nZXRmYWlsX3NpbXBsZQppbmRleCA1ZjY2NWJhLi5jZDM2MmFhIDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxNDFzbm1wdjJjdmFjbWdldGZhaWxfc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDE0MXNubXB2MmN2YWNtZ2V0ZmFpbF9zaW1wbGUKQEAgLTYsNiArNiw4IEBACiAKIFNLSVBJRiBORVRTTk1QX0RJU0FCTEVfU05NUFYyQwogU0tJUElGIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorU0tJUElGIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorU0tJUElGTk9UIFVTSU5HX01JQklJX1ZBQ01fQ09ORl9NT0RVTEUKIAogIwogIyBCZWdpbiB0ZXN0CmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxNTRkaXNtYW5waW5nbWliX3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDE1NGRpc21hbnBpbmdtaWJfc2ltcGxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1Y2ZmZTAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxNTRkaXNtYW5waW5nbWliX3NpbXBsZQpAQCAtMCwwICsxLDExNiBAQAorIyEvYmluL3NoCisKKy4gLi4vc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaAorCitIRUFERVIgRElTTUFOIFBJTkcgTUlCCisKK1sgIiRVSUQiID0gMCBdIHx8IFNLSVAgIk5vdCBwZXJtaXR0ZWQgdG8gY3JlYXRlIHJhdyBzb2NrZXRzIgorU0tJUElGTk9UIFVTSU5HX0RJU01BTl9QSU5HX01JQl9NT0RVTEUKK1NLSVBJRiBORVRTTk1QX0RJU0FCTEVfU05NUFYxCisKKyMgU05NUHYyLVRDCithY3RpdmU9MQorY3JlYXRlQW5kV2FpdD01CitkZXN0cm95PTYKKyMgRElTTUFOLVBJTkctTUlCCitESVNNQU5fUElOR19NSUI9LjEuMy42LjEuMi4xLjgwLjEKK3BpbmdDdGxFbnRyeT0ke0RJU01BTl9QSU5HX01JQn0uMi4xCitwaW5nQ3RsVGFyZ2V0QWRkcmVzc1R5cGU9JHtwaW5nQ3RsRW50cnl9LjMKK3BpbmdDdGxUYXJnZXRBZGRyZXNUeXBlSXB2ND0xCitwaW5nQ3RsVGFyZ2V0QWRkcmVzcz0ke3BpbmdDdGxFbnRyeX0uNAorcGluZ0N0bFByb2JlQ291bnQ9JHtwaW5nQ3RsRW50cnl9LjcKK3BpbmdDdGxBZG1pblN0YXR1cz0ke3BpbmdDdGxFbnRyeX0uOAorcGluZ0N0bEFkbWluU3RhdHVzRW5hYmxlZD0xCitwaW5nQ3RsRnJlcXVlbmN5PSR7cGluZ0N0bEVudHJ5fS4xMAorcGluZ0N0bERlc2NyPSR7cGluZ0N0bEVudHJ5fS4xNworcGluZ0N0bFJvd1N0YXR1cz0ke3BpbmdDdGxFbnRyeX0uMjMKK3BpbmdSZXN1bHRzRW50cnk9JHtESVNNQU5fUElOR19NSUJ9LjMuMQorcGluZ1Jlc3VsdHNQcm9iZVJlc3BvbnNlcz0ke3BpbmdSZXN1bHRzRW50cnl9LjcKK3BpbmdSZXN1bHRzU2VudFByb2Jlcz0ke3BpbmdSZXN1bHRzRW50cnl9LjgKKyMgVGVzdCBjb25maWd1cmF0aW9uCitUQVJHRVRfQUREUkVTUz0xMjcuMC4wLjEKK0lEWFBGWD04Ljc4LjEwMS4xMTYuNDUuODMuNzguNzcuODAuNi44NC40OS41My41MiAjICJOZXQtU05NUCIuIlQxNTQiCitJRFhTPSIke0lEWFBGWH0uOTUuNDkgJHtJRFhQRlh9Ljk1LjUwICR7SURYUEZYfS45NS41MSIKK1BST0JFX0NPVU5UPTUKKworCisjCisjIEJlZ2luIHRlc3QKKyMKKworIyBzdGFuZGFyZCBWMSBjb25maWd1cmF0aW9uOiB0ZXN0Y29tbXVuaXR5Citzbm1wX3dyaXRlX2FjY2Vzcz0nYWxsJworLiAuL1N2MWNvbmZpZworCitTVEFSVEFHRU5UCisKK2ZvciBJRFggaW4gJElEWFM7IGRvCisKK0NBUFRVUkUgInNubXBzZXQgLU9uZSAkU05NUF9GTEFHUyAtYyB0ZXN0Y29tbXVuaXR5IC12MSAgICAgICAgICBcCisgICAgICAgICAkU05NUF9UUkFOU1BPUlRfU1BFQzokU05NUF9URVNUX0RFU1QkU05NUF9TTk1QRF9QT1JUICAgXAorICAgICAgICAgJHBpbmdDdGxSb3dTdGF0dXMuJElEWCBpICRkZXN0cm95IgorCitDSEVDSyAiXiRwaW5nQ3RsUm93U3RhdHVzLiRJRFggPSBJTlRFR0VSOiAkZGVzdHJveSIKKworQ0FQVFVSRSAic25tcHNldCAtT25lICRTTk1QX0ZMQUdTIC1jIHRlc3Rjb21tdW5pdHkgLXYxICAgICAgICAgIFwKKyAgICAgICAgICRTTk1QX1RSQU5TUE9SVF9TUEVDOiRTTk1QX1RFU1RfREVTVCRTTk1QX1NOTVBEX1BPUlQgICBcCisgICAgICAgICAkcGluZ0N0bFJvd1N0YXR1cy4kSURYIGkgJGNyZWF0ZUFuZFdhaXQiCisKK0NIRUNLICJeJHBpbmdDdGxSb3dTdGF0dXMuJElEWCA9IElOVEVHRVI6ICRjcmVhdGVBbmRXYWl0IgorCitDQVBUVVJFICJzbm1wc2V0IC1PbmUgJFNOTVBfRkxBR1MgLWMgdGVzdGNvbW11bml0eSAtdjEgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAgICAgICAgICAgXAorICAgICAgICAgJHBpbmdDdGxUYXJnZXRBZGRyZXNzVHlwZS4kSURYIGkgJHBpbmdDdGxUYXJnZXRBZGRyZXNUeXBlSXB2NCAgXAorICAgICAgICAgJHBpbmdDdGxUYXJnZXRBZGRyZXNzLiRJRFggcyAkVEFSR0VUX0FERFJFU1MgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgJHBpbmdDdGxGcmVxdWVuY3kuJElEWCB1IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgJHBpbmdDdGxEZXNjci4kSURYIHMgU2NyaXB0R2VuZXJhdGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgJHBpbmdDdGxQcm9iZUNvdW50LiRJRFggdSAke1BST0JFX0NPVU5UfSAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgJHBpbmdDdGxBZG1pblN0YXR1cy4kSURYIGkgJHBpbmdDdGxBZG1pblN0YXR1c0VuYWJsZWQiCisKK0NIRUNLICJeJHBpbmdDdGxBZG1pblN0YXR1cy4kSURYID0gSU5URUdFUjogJHBpbmdDdGxBZG1pblN0YXR1c0VuYWJsZWQiCisKK0NBUFRVUkUgInNubXBzZXQgLU9uZSAkU05NUF9GTEFHUyAtYyB0ZXN0Y29tbXVuaXR5IC12MSAgICAgICAgICBcCisgICAgICAgICAkU05NUF9UUkFOU1BPUlRfU1BFQzokU05NUF9URVNUX0RFU1QkU05NUF9TTk1QRF9QT1JUICAgXAorICAgICAgICAgJHBpbmdDdGxSb3dTdGF0dXMuJElEWCBpICRhY3RpdmUiCisKK0NIRUNLICJeJHBpbmdDdGxSb3dTdGF0dXMuJElEWCA9IElOVEVHRVI6ICRhY3RpdmUiCisKK2RvbmUKKworc2xlZXAgJHtQUk9CRV9DT1VOVH0KK3NsZWVwIDIKKworZm9yIElEWCBpbiAkSURYUzsgZG8KKworQ0FQVFVSRSAic25tcGdldCAtT24gJFNOTVBfRkxBR1MgLWMgdGVzdGNvbW11bml0eSAtdjEgICAgICAgICAgIFwKKyAgICAgICAgICRTTk1QX1RSQU5TUE9SVF9TUEVDOiRTTk1QX1RFU1RfREVTVCRTTk1QX1NOTVBEX1BPUlQgICBcCisgICAgICAgICAkcGluZ1Jlc3VsdHNTZW50UHJvYmVzLiRJRFgiCisKK0NIRUNLICJeJHBpbmdSZXN1bHRzU2VudFByb2Jlcy4kSURYID0gR2F1Z2UzMjogJHtQUk9CRV9DT1VOVH0iCisKK0NBUFRVUkUgInNubXBnZXQgLU9uICRTTk1QX0ZMQUdTIC1jIHRlc3Rjb21tdW5pdHkgLXYxICAgICAgICAgICBcCisgICAgICAgICAkU05NUF9UUkFOU1BPUlRfU1BFQzokU05NUF9URVNUX0RFU1QkU05NUF9TTk1QRF9QT1JUICAgXAorICAgICAgICAgJHBpbmdSZXN1bHRzUHJvYmVSZXNwb25zZXMuJElEWCIKKworQ0hFQ0sgIl4kcGluZ1Jlc3VsdHNQcm9iZVJlc3BvbnNlcy4kSURYID0gR2F1Z2UzMjogJHtQUk9CRV9DT1VOVH0iCisKK2RvbmUKKworIyBEZWxldGUgZmlyc3Qgcm93IGFuZCBsZWF2ZSB0aGUgcmVtYWluaW5nIHJvd3MgaW4gdGhlIHRhYmxlLgorCitmb3IgSURYIGluICRJRFhTOyBkbworCitDQVBUVVJFICJzbm1wc2V0IC1PbmUgJFNOTVBfRkxBR1MgLWMgdGVzdGNvbW11bml0eSAtdjEgICAgICAgICAgXAorICAgICAgICAgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAgIFwKKyAgICAgICAgICRwaW5nQ3RsUm93U3RhdHVzLiRJRFggaSAkZGVzdHJveSIKKworQ0hFQ0sgIl4kcGluZ0N0bFJvd1N0YXR1cy4kSURYID0gSU5URUdFUjogJGRlc3Ryb3kiCisKK2JyZWFrCisKK2RvbmUKKworU1RPUEFHRU5UCisKKworRklOSVNIRUQKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDE2MXNubXBUYXJnZXRBZGRyX3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDE2MXNubXBUYXJnZXRBZGRyX3NpbXBsZQppbmRleCBjN2NhYTZhLi4wMGUwOTRlIDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxNjFzbm1wVGFyZ2V0QWRkcl9zaW1wbGUKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTYxc25tcFRhcmdldEFkZHJfc2ltcGxlCkBAIC0zMiwxMSArMzIsMjQgQEAKIAogQ0hFQ0tPUkRJRSAibm9DcmVhdGlvbiIKIAorIyBDcmVhdGUgYW4gZW50cnkgd2l0aCBpbmRleCAnQlwwQScKK0NBUFRVUkUgInNubXBzZXQgLU9uIC1PZSAkU05NUF9GTEFHUyAkQVVUSFRFU1RBUkdTICRTTk1QX1RSQU5TUE9SVF9TUEVDOiRTTk1QX1RFU1RfREVTVCRTTk1QX1NOTVBEX1BPUlQgLjEuMy42LjEuNi4zLjEyLjEuMi4xLjkuNjYuMC42NSBpIDUiCisKK0NIRUNLT1JESUUgIi4xLjMuNi4xLjYuMy4xMi4xLjIuMS45LjY2LjAuNjUgPSBJTlRFR0VSOiA1IgorCisjIENoZWNrIHRoYXQgdGhlIHRhYmxlIGNvbnRhaW5zIHRoZSAnQlwwQScgZW50cnkgYW5kIG5vIG90aGVyCitDQVBUVVJFICJzbm1wd2FsayAtT24gLU9lICRTTk1QX0ZMQUdTICRBVVRIVEVTVEFSR1MgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAuMS4zLjYuMS42LjMuMTIuMS4yLjEuOSIKKworQ0hFQ0sgIl4uMS4zLjYuMS42LjMuMTIuMS4yLjEuOSIKK0NIRUNLT1JESUUgIi4xLjMuNi4xLjYuMy4xMi4xLjIuMS45LjY2LjAuNjUgPSIKKworIyBEZWxldGUgYW4gZW50cnkgd2l0aCBpbmRleCAnQlwwQScKK0NBUFRVUkUgInNubXBzZXQgLU9uIC1PZSAkU05NUF9GTEFHUyAkQVVUSFRFU1RBUkdTICRTTk1QX1RSQU5TUE9SVF9TUEVDOiRTTk1QX1RFU1RfREVTVCRTTk1QX1NOTVBEX1BPUlQgLjEuMy42LjEuNi4zLjEyLjEuMi4xLjkuNjYuMC42NSBpIDYiCisKICMgQ3JlYXRlIGFuIGVudHJ5IHdpdGggaW5kZXggJ0EnCiBDQVBUVVJFICJzbm1wc2V0IC1PbiAtT2UgJFNOTVBfRkxBR1MgJEFVVEhURVNUQVJHUyAkU05NUF9UUkFOU1BPUlRfU1BFQzokU05NUF9URVNUX0RFU1QkU05NUF9TTk1QRF9QT1JUIC4xLjMuNi4xLjYuMy4xMi4xLjIuMS45LjY1IGkgNSIKIAogQ0hFQ0tPUkRJRSAiLjEuMy42LjEuNi4zLjEyLjEuMi4xLjkuNjUgPSBJTlRFR0VSOiA1IgotQ0hFQ0tPUkRJRSAiLjEuMy42LjEuNi4zLjEyLjEuMi4xLjkuNjUgPSIKIAogIyBDaGVjayB0aGF0IHRoZSB0YWJsZSBjb250YWlucyBvbmUgYW5kIG9ubHkgb25lIGVudHJ5CiBDQVBUVVJFICJzbm1wd2FsayAtT24gLU9lICRTTk1QX0ZMQUdTICRBVVRIVEVTVEFSR1MgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAuMS4zLjYuMS42LjMuMTIuMS4yLjEuOSIKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL3JlYWQtb25seS9UMDE0MXNubXB2MmNzZXRmYWlsX3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL3JlYWQtb25seS9UMDE0MXNubXB2MmNzZXRmYWlsX3NpbXBsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzA1ZjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvcmVhZC1vbmx5L1QwMTQxc25tcHYyY3NldGZhaWxfc2ltcGxlCkBAIC0wLDAgKzEsMzIgQEAKKyMhL2Jpbi9zaAorCisuIC4uL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2gKKworSEVBREVSIFNOTVB2MmMgc2V0IGZhaWx1cmUgdG8gc3lzdGVtLnN5c0NvbnRhY3QuMAorCitTS0lQSUZOT1QgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCitTS0lQSUYgTkVUU05NUF9ESVNBQkxFX1NOTVBWMkMKK1NLSVBJRk5PVCBVU0lOR19NSUJJSV9TWVNURU1fTUlCX01PRFVMRQorCisjCisjIEJlZ2luIHRlc3QKKyMKKworIyBzdGFuZGFyZCBWMkMgY29uZmlndXJhdGlvbjogdGVzdGNvbXVubml0eQorc25tcF93cml0ZV9hY2Nlc3M9J2FsbCcKKyhjZCAuLi9kZWZhdWx0IDsgLiAuL1N2MmNjb25maWcpCitTVEFSVEFHRU5UCisKK0NBUFRVUkUgInNubXBnZXQgLU9uICRTTk1QX0ZMQUdTIC1jIHRlc3Rjb21tdW5pdHkgLXYgMmMgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAuMS4zLjYuMS4yLjEuMS40LjAiCisKK0NIRUNLICIuMS4zLjYuMS4yLjEuMS40LjAgPSBTVFJJTkc6IgorCitDQVBUVVJFICJzbm1wc2V0IC1yIDAgLXQgMSAtT24gJFNOTVBfRkxBR1MgLWMgdGVzdGNvbW11bml0eSAtdiAyYyAkU05NUF9UUkFOU1BPUlRfU1BFQzokU05NUF9URVNUX0RFU1QkU05NUF9TTk1QRF9QT1JUIC4xLjMuNi4xLjIuMS4xLjQuMCBzIGZvb2JhcnRlc3RpbmdiYXoiCisKK0NIRUNLICJUaW1lb3V0OiBObyBSZXNwb25zZSIKKworU1RPUEFHRU5UCisKK0NIRUNLQUdFTlQgJ0JhZCBQRFUgdHlwZSByZWNlaXZlZCcKKworRklOSVNIRUQKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL3NubXB2My9UMDQwa2V5bWFuYWdldGVzdF9jYXBwLmMgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9zbm1wdjMvVDA0MGtleW1hbmFnZXRlc3RfY2FwcC5jCmluZGV4IDNlMGZkNTguLmQ2OGY2NjMgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL3NubXB2My9UMDQwa2V5bWFuYWdldGVzdF9jYXBwLmMKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvc25tcHYzL1QwNDBrZXltYW5hZ2V0ZXN0X2NhcHAuYwpAQCAtNDAxLDkgKzQwMSw3IEBACiAgICAgICAgIGZwcmludGYoc3Rkb3V0LCAiIyBlbmdpbmVJRCVzIChsZW49JWQpOiAgJXNcbiIsCiAgICAgICAgICAgICAgICAgKGlzZGVmYXVsdCkgPyAiIChkZWZhdWx0KSIgOiAiIiwKICAgICAgICAgICAgICAgICBlbmdpbmVJRF9sZW4sICgocyAhPSAwKSA/ICgodV9jaGFyICopIHMpIDogZW5naW5lSUQpKTsKLSAgICBpZiAocykgewotICAgICAgICBTTk1QX0ZSRUUocyk7Ci0gICAgfQorICAgIFNOTVBfRlJFRShzKTsKIAogCiAKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvY2xpYl9idWlsZCBiL3Rlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvY2xpYl9idWlsZAppbmRleCBhMjRjOGYwLi4wYzdlYjZkIDEwMDc1NQotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L2NsaWJfYnVpbGQKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9jbGliX2J1aWxkCkBAIC0yNCw2ICsyNCw5IEBACiAjZWxzZQogI2luY2x1ZGUgPHN0cmluZ3MuaD4KICNlbmRpZgorI2lmZGVmIEhBVkVfTkVUREJfSAorI2luY2x1ZGUgPG5ldGRiLmg+CisjZW5kaWYKICNpZmRlZiBIQVZFX0FSUEFfSU5FVF9ICiAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX1RFU1RDT05GLnNoIGIvdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfVEVTVENPTkYuc2gKaW5kZXggZjhmMjI5YS4uODNjMzhjMiAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfVEVTVENPTkYuc2gKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfVEVTVENPTkYuc2gKQEAgLTcsNiArNywyOCBAQAogIyAgKlNOTVBfUEVSU0lTVEVOVF9GSUxFOiB3aGVyZSB0byBzdG9yZSB0aGUgYWdlbnQncyBwZXJzaXN0ZW50IGluZm9ybWF0aW9uCiAjICAgICAgICAgICAgICAgICAgICAgICAgIChYWFg6IHRoaXMgc2hvdWxkIGJlIHNwZWNpZmljIHRvIGp1c3QgdGhlIGFnZW50KQogCisjIE1pbkdXL01TWVMgb25seTogdHJhbnNsYXRlIGFuIE1TWVMgcGF0aCBiYWNrIGludG8gYSBET1MgcGF0aCBzdWNoIHRoYXQgc25tcGQKKyMgYW5kIHRoZSBOZXQtU05NUCBhcHBsaWNhdGlvbnMgY2FuIHVuZGVyc3RhbmQgaXQuIE9uZSBvZiB0aGUgZmVhdHVyZXMgb2YgTVNZUworIyBpcyB0aGF0IGlmIGEgUE9TSVgtc3R5bGUgcGF0aCBpcyBwYXNzZWQgYXMgYSBjb21tYW5kLWxpbmUgYXJndW1lbnQgdG8gYW4KKyMgZXhlY3V0YWJsZSB0aGF0IE1TWVMgdHJhbnNsYXRlcyB0aGF0IHBhdGggdG8gYSBET1Mtc3R5bGUgcGF0aCBiZWZvcmUKKyMgc3RhcnRpbmcgdGhlIGV4ZWN1dGFibGUuIFRoaXMgaXMgYSBrZXkgZmVhdHVyZSBvZiBNU1lTIHRoYXQgbWFrZXMgaXQKKyMgcG9zc2libGUgdG8gcnVuIHNoZWxsIHNjcmlwdHMgdW5tb2RpZmllZCBhbmQgYXQgdGhlIHNhbWUgdGltZSB0byB1c2UKKyMgZXhlY3V0YWJsZXMgdGhhdCBhY2NlcHQgRE9TLXN0eWxlIHBhdGhzLiBUaGVyZSBpcyBubyBzdXBwb3J0IGhvd2V2ZXIgZm9yCisjIGF1dG9tYXRpY2FsIHRyYW5zbGF0aW9uIG9mIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IGNvbnRhaW4gcGF0aHMuIEhlbmNlCisjIHRoaXMgZnVuY3Rpb24gdGhhdCB0cmFuc2xhdGVzIHBhdGhzIGV4cGxpY2l0bHkuCit0cmFuc2xhdGVfcGF0aCgpIHsKKyAgaWYgWyAiJE9TVFlQRSIgPSBtc3lzIF07IHRoZW4KKyAgICBsb2NhbCB0PWBzZXQgXAorICAgICAgICAgICAgIHwgc2VkIC1uIC1lICJzL14kMT0nXCguKlwpJyQvJHtTTk1QX0VOVl9TRVBBUkFUT1J9XDEvcCIgXAorICAgICAgICAgICAgICAgICAgICAgIC1lICJzL14kMT1cKC4qXCkkLyR7U05NUF9FTlZfU0VQQVJBVE9SfVwxL3AiIFwKKyAgICAgICAgICAgICB8IHNlZCAtZSAic3wke1NOTVBfRU5WX1NFUEFSQVRPUn0vYy98JHtTTk1QX0VOVl9TRVBBUkFUT1J9YzovfGciIFwKKyAgICAgICAgICAgICAgICAgICAtZSAic3wke1NOTVBfRU5WX1NFUEFSQVRPUn0vdG1wL3wke1NOTVBfRU5WX1NFUEFSQVRPUn1jOi93aW5kb3dzL3RlbXAvfGciIFwKKyAgICAgICAgICAgICB8IHNlZCAtZSAicy9eJHtTTk1QX0VOVl9TRVBBUkFUT1J9Ly8iIFwKKyAgICAgICAgICAgIGAKKyAgICBldmFsICIkMT0nJHQnIgorICBmaQorfQorCiAjCiAjIE9ubHkgYWxsb3cgb3Vyc2VsdmVzIHRvIGJlIGV2YWwnZWQgb25jZQogIwpAQCAtNDgsNiArNzAsOCBAQAogICAgIGV4cG9ydCBTTk1QX1ZFUkJPU0UKIGZpCiAKK1NOTVBfRU5WX1NFUEFSQVRPUj0iYCR7YnVpbGRkaXJ9L25ldC1zbm1wLWNvbmZpZyAtLWVudi1zZXBhcmF0b3JgIgorCiBpZiBbICJ4JE1JQkRJUlMiID0gIngiIF07IHRoZW4KICAgaWYgWyAieCRTTk1QX1BSRUZFUl9ORUFSX01JQlMiID0gIngxIiBdOyB0aGVuCiAgICAgTUlCRElSUz0ke3NyY2Rpcn0vbWlicwpAQCAtMTAzLDYgKzEyNyw3IEBACiAgICAgICAgIHRlc3RudW09MAogICAgIGZpCiAgICAgU05NUF9UTVBESVI9Ii90bXAvc25tcC10ZXN0LSR0ZXN0bnVtLSQkIgorICAgIHRyYW5zbGF0ZV9wYXRoIFNOTVBfVE1QRElSCiAgICAgZXhwb3J0IFNOTVBfVE1QRElSCiAgICAgaWYgWyAtZCAkU05NUF9UTVBESVIgXTsgdGhlbgogCWVjaG8gIiQwOiBFUlJPUjogJFNOTVBfVE1QRElSIGFscmVhZHkgZXhpc3RlZC4iCkBAIC0xMTAsNyArMTM1LDcgQEAKICAgICBmaQogICBmaQogICBpZiBbICEgLWQgJFNOTVBfVE1QRElSIF07IHRoZW4KLSAgICBta2RpciAkU05NUF9UTVBESVIKKyAgICBta2RpciAtcCAkU05NUF9UTVBESVIKICAgICBjaG1vZCAwNzAwICRTTk1QX1RNUERJUgogICBmaQogICBpZiBbICJ4JFNOTVBfVE1QX1BFUlNJU1RFTlRESVIiID0gIngiIF07IHRoZW4KQEAgLTEzMCw3ICsxNTUsNiBAQAogCiBTTk1QX0lHTk9SRV9XSU5ET1dTX1JFR0lTVFJZPSJ0cnVlIgogZXhwb3J0IFNOTVBfSUdOT1JFX1dJTkRPV1NfUkVHSVNUUlkKLVNOTVBfRU5WX1NFUEFSQVRPUj0iYCR7YnVpbGRkaXJ9L25ldC1zbm1wLWNvbmZpZyAtLWVudi1zZXBhcmF0b3JgIgogU05NUF9QRVJMUFJPRz0iYCR7YnVpbGRkaXJ9L25ldC1zbm1wLWNvbmZpZyAtLXBlcmxwcm9nYCIKIFNOTVBfVEVTVERJUj0iJFNOTVBfQkFTRURJUi90ZXN0cyIKIFNOTVBfQ09ORklHX0ZJTEU9IiRTTk1QX1RNUERJUi9zbm1wZC5jb25mIgpAQCAtMTQ0LDggKzE2OCwxMCBAQAogU05NUF9BR0VOVFhfUElEX0ZJTEU9IiRTTk1QX1RNUERJUi9hZ2VudHgucGlkIgogU05NUF9BR0VOVFhfTE9HX0ZJTEU9IiRTTk1QX1RNUERJUi9hZ2VudHgubG9nIgogU05NUENPTkZQQVRIPSIke1NOTVBfVE1QRElSfSR7U05NUF9FTlZfU0VQQVJBVE9SfSR7U05NUF9UTVBfUEVSU0lTVEVOVERJUn0iCit0cmFuc2xhdGVfcGF0aCBTTk1QQ09ORlBBVEgKIGV4cG9ydCBTTk1QQ09ORlBBVEgKIFNOTVBfUEVSU0lTVEVOVF9ESVI9JFNOTVBfVE1QX1BFUlNJU1RFTlRESVIKK3RyYW5zbGF0ZV9wYXRoIFNOTVBfUEVSU0lTVEVOVF9ESVIKIGV4cG9ydCBTTk1QX1BFUlNJU1RFTlRfRElSCiAjU05NUF9QRVJTSVNURU5UX0ZJTEU9IiRTTk1QX1RNUF9QRVJTSVNURU5URElSL3BlcnNpc3RlbnQtc3RvcmUuY29uZiIKICNleHBvcnQgU05NUF9QRVJTSVNURU5UX0ZJTEUKQEAgLTE3NSw4ICsyMDEsMTIgQEAKIGZpCiAKIGlmIFsgIngkT1NUWVBFIiA9ICJ4bXN5cyIgXTsgdGhlbgotICAgICMgVG8gZG86IG1ha2UgY29uZmlndXJlIGZpbmQgb3V0IHRoZSBwYXRoIG9mIE1TWVMnIHNoLmV4ZS4KLSAgICBNU1lTX1NIPSJjOi9tc3lzLzEuMC9iaW4vc2guZXhlIgorICAgICMgT2J0YWluIHRoZSBNU1lTIGluc3RhbGxhdGlvbiBwYXRoIGZyb20gdGhlICFDOiBlbnZpcm9ubWVudCB2YXJpYWJsZSwKKyAgICAjIHJlbW92ZSBzdXJyb3VuZGluZyBzaW5nbGUgcXVvdGVzIGFuZCBjb252ZXJ0IGJhY2tzbGFzaGVzIGludG8gZm9yd2FyZAorICAgICMgc2xhc2hlcy4KKyAgICBNU1lTX1BBVEg9IiQoc2V0IFwKKyAgICAgICAgICAgICAgICAgfCBzZWQgLW4gJ3N8XlwhQzo9JyInIidcKC4qXCknIiciJyR8XDF8cCcgfCBzZWQgJ3N8XFx8L3xnJykiCisgICAgTVNZU19TSD0iJE1TWVNfUEFUSC9zaC5leGUiCiBmaQogCiBQUk9CRV9GT1JfUE9SVCgpIHsKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2ggYi90ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoCmluZGV4IDJkZjJjOTUuLjcxOGVkYzQgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2gKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaApAQCAtNjgsOCArNjgsOCBAQAogfQogCiBDQU5fVVNMRUVQKCkgewotICAgaWYgWyAiJFNOTVBfQ0FOX1VTTEVFUCIgPSAwIC1vICIkU05NUF9DQU5fVVNMRUVQIiA9IDAgXSA7IHRoZW4KLSAgICAgcmV0dXJuICRTTk1QX0NBTl9VU0xFRVAKKyAgIGlmIFsgIiRTTk1QX0NBTl9VU0xFRVAiID0gMCAtbyAiJFNOTVBfQ0FOX1VTTEVFUCIgPSAxIF0gOyB0aGVuCisgICAgIHJldHVybiAwCiAgICBmaQogICAgc2xlZXAgLjEgPiAvZGV2L251bGwgMj4mMQogICAgaWYgWyAkPyA9IDAgXSA7IHRoZW4KQEAgLTEzNCw3ICsxMzQsNyBAQAogCW1pc3NpbmdmaWxlcz0iIgogCiAJZm9yIGYgaW4gJCo7IGRvCi0JCVsgLWUgIiRmIiBdICYmIGNvbnRpbnVlCisJCVsgLWYgIiRmIiBdICYmIGNvbnRpbnVlCiAJCWVjaG8gIkZBSUxFRDogQ2Fubm90IGZpbmQgZmlsZSBcIiRmXCIuIgogCQltaXNzaW5nZmlsZXM9dHJ1ZQogCWRvbmUKQEAgLTE1MSw3ICsxNTEsNyBAQAogIwogU1RBUlRURVNUKCkgewogICAgICAgICBORVdPVVRQVVRGSUxFCi0JWyAhIC1lICIkanVua291dHB1dGZpbGUiIF0gJiYgeworCVsgISAtZiAiJGp1bmtvdXRwdXRmaWxlIiBdICYmIHsKIAkJdG91Y2ggJGp1bmtvdXRwdXRmaWxlCiAJCXJldHVybgogCX0KQEAgLTI4Niw3ICsyODYsNyBAQAogICAgIHNoaWZ0CiAgICAgc2hpZnQKICAgICBpZiBbICRTTk1QX1ZFUkJPU0UgLWd0IDAgXTsgdGhlbgotCWVjaG8gLW4gImNoZWNraW5nIG91dHB1dCBmb3IgXCIkKlwiLi4uIgorCWVjaG8gLW4gImNoZWNraW5nICRjaGtmaWxlIGZvciAkY2tmY291bnQgXCIkKlwiLi4uIgogICAgIGZpCiAKICAgICBpZiBbIC1mICRjaGtmaWxlIF07IHRoZW4KQEAgLTM1Niw4NSArMzU2LDgzIEBACiAgICAgQ0hFQ0tGSUxFQ09VTlQgJFNOTVBfU05NUERfTE9HX0ZJTEUgJGNvdW50ICRACiB9CiAKLVdBSVRGT1JBR0VOVFNIVVRUSU5HRE9XTigpIHsKLSAgICBpZiBbICJ4JE9TVFlQRSIgIT0gInhtc3lzIiBdOyB0aGVuCi0gICAgICAgIFdBSVRGT1JBR0VOVCAic2h1dHRpbmcgZG93biIKKyMgUmV0dXJuIDAgKHRydWUpIGlmIGEgcHJvY2VzcyB3aXRoIHBpZCAkMSBleGlzdHMgYW5kIDEgKGZhbHNlKSBpZiBubyBwcm9jZXNzCisjIHdpdGggcGlkICQxIGV4aXN0cy4KK0lTUlVOTklORygpIHsKKyAgICBpZiBbICJ4JE9TVFlQRSIgPSAieG1zeXMiIF07IHRoZW4KKwlwc2xpc3QuZXhlICIkMSIgMj4mMSB8IHdoaWxlIHJlYWQgbmFtZSBwc3BpZCByZXN0OyBkbworCSAgICBpZiBbICIkMSIgPSAiJHBzcGlkIiBdOyB0aGVuCisJCXJldHVybiAwCisJICAgIGZpCisJZG9uZQorCXJldHVybiAxCiAgICAgZWxzZQotCUNBTl9VU0xFRVAKLQlpZiBbICRTTk1QX0NBTl9VU0xFRVAgPSAxIF0gOyB0aGVuCi0JICBzbGVlcHRpbWU9YGV4cHIgJFNOTVBfU0xFRVAgJyonIDUwYAotCWVsc2UgCi0JICBzbGVlcHRpbWU9YGV4cHIgJFNOTVBfU0xFRVAgJyonIDVgCi0JZmkKLSAgICAgICAgc25tcGRfcGlkPWBjYXQgJFNOTVBfU05NUERfUElEX0ZJTEVgCi0gICAgICAgIHdoaWxlIFsgJHNsZWVwdGltZSAtZ3QgMCBdICYmIGtpbGwgLTAgIiRzbm1wZF9waWQiIDI+L2Rldi9udWxsOyBkbwotICAgICAgICAgICAgaWYgWyAkU05NUF9DQU5fVVNMRUVQID0gMSBdOyB0aGVuCi0gICAgICAgICAgICAgICAgc2xlZXAgLjEKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzbGVlcCAxCi0gICAgICAgICAgICBmaQotICAgICAgICAgICAgc2xlZXB0aW1lPWBleHByICRzbGVlcHRpbWUgLSAxYAotICAgICAgICBkb25lCisgICAgICAgIGtpbGwgLTAgIiQxIiAyPi9kZXYvbnVsbAogICAgIGZpCiB9CiAKKyMgRWNobyBhIGNvbW1hbmQgdGhhdCBhc2tzIHRoZSBwcm9jZXNzIHdpdGggcGlkICQxIHRvIHN0b3AuCitFQ0hPU0VORFNJR1RFUk0oKSB7CisgICAgaWYgWyAieCRPU1RZUEUiID0gInhtc3lzIiBdOyB0aGVuCisgICAgICAgIGVjaG8gcHNraWxsLmV4ZSAkMQorICAgIGVsc2UKKyAgICAgICAgZWNobyBraWxsIC1URVJNICQxCisgICAgZmkKK30KKworIyBFY2hvIGEgY29tbWFuZCB0aGF0IHN0b3BzIHRoZSBwcm9jZXNzIHdpdGggcGlkICQxIGZvcmNpYmx5LgorRUNIT1NFTkRTSUdLSUxMKCkgeworICAgIGlmIFsgIngkT1NUWVBFIiA9ICJ4bXN5cyIgXTsgdGhlbgorICAgICAgICBlY2hvIHBza2lsbC5leGUgJDEKKyAgICBlbHNlCisgICAgICAgIGVjaG8ga2lsbCAtS0lMTCAkMQorICAgIGZpCit9CisKKyMgV2FpdCB1bnRpbCB0aGUgc2hlbGwgc3RhdGVtZW50ICIkQCIgZXZhbHVhdGVzIHRvIGZhbHNlLgorV0FJVEZPUk5PVENPTkQoKSB7CisgICAgQ0FOX1VTTEVFUAorICAgIGlmIFsgJFNOTVBfQ0FOX1VTTEVFUCA9IDEgXSA7IHRoZW4KKyAgICAgICAgc2xlZXB0aW1lPWBleHByICRTTk1QX1NMRUVQICcqJyA1MGAKKyAgICBlbHNlIAorICAgICAgICBzbGVlcHRpbWU9YGV4cHIgJFNOTVBfU0xFRVAgJyonIDVgCisgICAgZmkKKyAgICB3aGlsZSBbICRzbGVlcHRpbWUgLWd0IDAgXSAmJiBldmFsICIkQCI7IGRvCisgICAgICAgIGlmIFsgJFNOTVBfQ0FOX1VTTEVFUCA9IDEgXTsgdGhlbgorICAgICAgICAgICAgc2xlZXAgLjEKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2xlZXAgMQorICAgICAgICBmaQorICAgICAgICBzbGVlcHRpbWU9YGV4cHIgJHNsZWVwdGltZSAtIDFgCisgICAgZG9uZQorfQorCisjIFdhaXQgdW50aWwgdGhlIHNoZWxsIHN0YXRlbWVudCAiJEAiIGV2YWx1YXRlcyB0byB0cnVlLgorV0FJVEZPUkNPTkQoKSB7CisgICAgV0FJVEZPUk5PVENPTkQgaWYgIiRAOyIgdGhlbiBmYWxzZSAiOyIgZWxzZSB0cnVlICI7IiBmaQorfQorCiBXQUlURk9SQUdFTlQoKSB7CiAgICAgV0FJVEZPUiAiJEAiICRTTk1QX1NOTVBEX0xPR19GSUxFCisgICAgaWYgWyAkU05NUF9DQU5fVVNMRUVQID0gMSBdOyB0aGVuCisgICAgICAgIHNsZWVwIC4xCisgICAgZWxzZQorICAgICAgICBzbGVlcCAxCisgICAgZmkKIH0KIAogV0FJVEZPUlRSQVBEKCkgewogICAgIFdBSVRGT1IgIiRAIiAkU05NUF9TTk1QVFJBUERfTE9HX0ZJTEUKKyAgICBpZiBbICRTTk1QX0NBTl9VU0xFRVAgPSAxIF07IHRoZW4KKyAgICAgICAgc2xlZXAgLjEKKyAgICBlbHNlCisgICAgICAgIHNsZWVwIDEKKyAgICBmaQogfQogCisjIFdhaXQgdW50aWwgcGF0dGVybiAiJDEiIGFwcGVhcnMgaW4gZmlsZSAiJDIiLgogV0FJVEZPUigpIHsKLSAgIyMgc2F2ZSB0aGUgcHJldmlvdXMgc2F2ZSBzdGF0ZSBhbmQgdGVzdCByZXN1bHQKLSAgICBzYXZlX3N0YXRlPSRPS19UT19TQVZFX1JFU1VMVAotICAgIHNhdmVfdGVzdD0kc25tcF9sYXN0X3Rlc3RfcmVzdWx0Ci0gICAgT0tfVE9fU0FWRV9SRVNVTFQ9MAotCi0gICAgc2xlZXB0aW1lPSRTTk1QX1NMRUVQCi0gICAgb2xkc2xlZXB0aW1lPSRTTk1QX1NMRUVQCi0gICAgaWYgWyAiJDEiICE9ICIiIF0gOyB0aGVuCi0JQ0FOX1VTTEVFUAotCWlmIFsgJFNOTVBfQ0FOX1VTTEVFUCA9IDEgXSA7IHRoZW4KLQkgIHNsZWVwdGltZT1gZXhwciAkU05NUF9TTEVFUCAnKicgNTBgCi0gICAgICAgICAgU05NUF9TTEVFUD0uMQotCWVsc2UgCi0JICBzbGVlcHRpbWU9YGV4cHIgJFNOTVBfU0xFRVAgJyonIDVgCi0JICBTTk1QX1NMRUVQPTEKLQlmaQotICAgICAgICB3aGlsZSBbICRzbGVlcHRpbWUgLWd0IDAgXSA7IGRvCi0JICBpZiBbICIkMiIgPSAiIiBdIDsgdGhlbgotICAgICAgICAgICAgQ0hFQ0tDT1VOVCBub2Vycm9yICIkQCIKLSAgICAgICAgICBlbHNlCi0JICAgIENIRUNLRklMRUNPVU5UICIkMiIgbm9lcnJvciAiJDEiCi0JICBmaQotICAgICAgICAgIGlmIFsgIiRzbm1wX2xhc3RfdGVzdF9yZXN1bHQiICE9ICIiIF0gOyB0aGVuCi0gICAgICAgICAgICAgIGlmIFsgIiRzbm1wX2xhc3RfdGVzdF9yZXN1bHQiIC1ndCAwIF0gOyB0aGVuCi0JICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGZpCi0JICBmaQotICAgICAgICAgIERFTEFZCi0gICAgICAgICAgc2xlZXB0aW1lPWBleHByICRzbGVlcHRpbWUgLSAxYAotICAgICAgICBkb25lCi0KLQkjIHRoZSBhYm92ZSBtdWx0aS1jaGVjay9zbGVlcCBkb2Vzbid0IHJlcG9ydCBlcnJvcnMgb3V0IG9mIFRBUAotICAgICAgICAjIHRoaXMgZmluYWwgY2hlY2sgd2lsbCByZXBvcnQgb25seSAxIAotCWlmIFsgIiQyIiA9ICIiIF0gOyB0aGVuCi0gICAgICAgICAgQ0hFQ0tDT1VOVCBhdGxlYXN0b25lICIkQCIKLSAgICAgICAgZWxzZQotCSAgQ0hFQ0tGSUxFQ09VTlQgIiQyIiBhdGxlYXN0b25lICIkMSIKLQlmaQotICAgICAgICBTTk1QX1NMRUVQPSRvbGRzbGVlcHRpbWUKLSAgICBlbHNlCi0gICAgICAgIGlmIFsgJFNOTVBfU0xFRVAgLW5lIDAgXSA7IHRoZW4KLQkgICAgc2xlZXAgJFNOTVBfU0xFRVAKLSAgICAgICAgZmkKLSAgICBmaQotCi0gICMjIHJlc3RvcmUgdGhlIHByZXZpb3VzIHNhdmUgc3RhdGUgYW5kIHRlc3QgcmVzdWx0Ci0gICAgT0tfVE9fU0FWRV9SRVNVTFQ9JHNhdmVfc3RhdGUKLSAgICBzbm1wX2xhc3RfdGVzdF9yZXN1bHQ9JHNhdmVfdGVzdAorICAgIFdBSVRGT1JDT05EIGdyZXAgIiQxIiAiJDIiICI+L2Rldi9udWxsIiAiMj4mMSIKIH0KIAogR09PRCgpIHsKQEAgLTQ1NSwxNiArNDUzLDYgQEAKICAgICBlY2hvICIjICRAIiA+PiAkU05NUF9UTVBESVIvaW52b2tlZAogfQogCi0jIFdBSVRGT1JPUkRJRSAiZ3JlcCBzdHJpbmciIFsiZmlsZSJdCi1XQUlURk9ST1JESUUoKSB7Ci0gICAgV0FJVEZPUiAiJDEiICIkMiIKLSAgICBpZiBbICIkc25tcF9sYXN0X3Rlc3RfcmVzdWx0IiAhPSAwIF0gOyB0aGVuCi0gICAgICAgIEJBRAotICAgICAgICBGSU5JU0hFRAotICAgIGZpCi0gICAgR09PRAotfQotCiAjIENIRUNLT1JESUUgImdyZXAgc3RyaW5nIiBbImZpbGUiXSAuLiBGQUlMIGlmICJncmVwIHN0cmluZyIgaXMgKm5vdCogZm91bmQKIENIRUNLT1JESUUoKSB7CiAgICAgaWYgWyAieCQyIiA9ICJ4IiBdOyB0aGVuCkBAIC01MjAsNyArNTA4LDYgQEAKICMKICMgY29tbW9uIHRvIFNUQVJUQUdFTlQgYW5kIFNUQVJUVFJBUEQKICMgbG9nIGNvbW1hbmQgdG8gImludm9rZWQiIGZpbGUKLSMgZGVsYXkgYWZ0ZXIgY29tbWFuZCB0byBhbGxvdyBmb3Igc2V0dGxlCiAjCiBTVEFSVFBST0coKSB7CiAgICAgaWYgWyAieCREWU5BTUlDX0FOQUxZWkVSIiAhPSAieCIgXTsgdGhlbgpAQCAtNTY4LDcgKzU1NSw4IEBACiAgICAgICAgIFBPUlRfU1BFQz0iJHtTTk1QX1RSQU5TUE9SVF9TUEVDfToke1NOTVBfVEVTVF9ERVNUfSR7UE9SVF9TUEVDfSIKICAgICBmaQogICAgIFNUQVJUUFJPRwotICAgIFdBSVRGT1JBR0VOVCAiTkVULVNOTVAgdmVyc2lvbiIKKyAgICBXQUlURk9SQ09ORCB0ZXN0IC1mICRTTk1QX1NOTVBEX1BJRF9GSUxFCisgICAgV0FJVEZPUkFHRU5UICJORVQtU05NUC52ZXJzaW9uIgogfQogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC1vLQpAQCAtNTgyLDcgKzU3MCw4IEBACiAgICAgICAgIFBPUlRfU1BFQz0iJHtTTk1QX1RSQU5TUE9SVF9TUEVDfToke1NOTVBfVEVTVF9ERVNUfSR7UE9SVF9TUEVDfSIKICAgICBmaQogICAgIFNUQVJUUFJPRwotICAgIFdBSVRGT1JUUkFQRCAiTkVULVNOTVAgdmVyc2lvbiIKKyAgICBXQUlURk9SQ09ORCB0ZXN0IC1mICRTTk1QX1NOTVBUUkFQRF9QSURfRklMRQorICAgIFdBSVRGT1JUUkFQRCAiTkVULVNOTVAudmVyc2lvbiIKIH0KIAogIyMgc2VuZGluZyBTSUdIVVAgZm9yIHJlY29uZmlndXJhdGlvbgpAQCAtNTk1LDYgKzU4NCw3IEBACiAgICAgICAgICAgQ09NTUFORD0ia2lsbCAtSFVQIGBjYXQgJDFgIgogICAgICAgICBmaQogCWVjaG8gJENPTU1BTkQgPj4gJFNOTVBfVE1QRElSL2ludm9rZWQKKwlWRVJCT1NFX09VVCAwICRDT01NQU5ECiAJJENPTU1BTkQgPiAvZGV2L251bGwgMj4mMQogICAgIGZpCiB9CkBAIC02MTksMTQgKzYwOSwxMyBAQAogIyAgICB0aGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGZvciBpbnRlcmFjdGlvbiBiZXR3ZWVuCiAjICAgIG1hc3RlciBhZ2VudCBhbmQgc3ViIGFnZW50LgogU1RPUFBST0coKSB7Ci0gICAgaWYgWyAtZiAkMSBdOyB0aGVuCi0gICAgICAgIGlmIFsgIngkT1NUWVBFIiA9ICJ4bXN5cyIgXTsgdGhlbgotICAgICAgICAgIENPTU1BTkQ9InBza2lsbC5leGUgYGNhdCAkMWAiCi0gICAgICAgIGVsc2UKLSAgICAgICAgICBDT01NQU5EPSJraWxsIC1URVJNIGBjYXQgJDFgIgotICAgICAgICBmaQotCWVjaG8gJENPTU1BTkQgPj4gJFNOTVBfVE1QRElSL2ludm9rZWQKLQkkQ09NTUFORCA+IC9kZXYvbnVsbCAyPiYxCisgICAgcGlkPSJgY2F0ICQxIDI+L2Rldi9udWxsYCIKKyAgICBpZiBbICJ4JHBpZCIgIT0gIngiIF07IHRoZW4KKwlDT01NQU5EPSJgRUNIT1NFTkRTSUdURVJNICRwaWRgIgorCWVjaG8gIiRDT01NQU5EICgkMSkiID4+ICRTTk1QX1RNUERJUi9pbnZva2VkCisJVkVSQk9TRV9PVVQgMCAiJENPTU1BTkQgKCQxKSIKKyAgICAgICAgJENPTU1BTkQgPi9kZXYvbnVsbCAyPiYxCisgICAgICAgIFdBSVRGT1JOT1RDT05EICJJU1JVTk5JTkcgJHBpZCIKICAgICBmaQogfQogCkBAIC02MzUsNyArNjI0LDYgQEAKIFNUT1BBR0VOVCgpIHsKICAgICBTQVZFX1JFU1VMVFMKICAgICBTVE9QUFJPRyAkU05NUF9TTk1QRF9QSURfRklMRQotICAgIFdBSVRGT1JBR0VOVFNIVVRUSU5HRE9XTgogICAgIGlmIFsgJFNOTVBfVkVSQk9TRSAtZ3QgMSBdOyB0aGVuCiAJZWNobyAiQWdlbnQgT3V0cHV0OiIKIAllY2hvICIkc2VwYXJhdG9yIFtzdGRvdXRdIgpAQCAtNjUxLDkgKzYzOSw2IEBACiBTVE9QVFJBUEQoKSB7CiAgICAgU0FWRV9SRVNVTFRTCiAgICAgU1RPUFBST0cgJFNOTVBfU05NUFRSQVBEX1BJRF9GSUxFCi0gICAgaWYgWyAieCRPU1RZUEUiICE9ICJ4bXN5cyIgXTsgdGhlbgotICAgICAgICBXQUlURk9SVFJBUEQgIlN0b3BwZWQiCi0gICAgZmkKICAgICBpZiBbICRTTk1QX1ZFUkJPU0UgLWd0IDEgXTsgdGhlbgogCWVjaG8gInNubXB0cmFwZCBPdXRwdXQ6IgogCWVjaG8gIiRzZXBhcmF0b3IgW3N0ZG91dF0iCkBAIC02NzEsMzMgKzY1NiwxOSBAQAogICAgICMjIG5vIG1vcmUgY2hhbmdlcyB0byB0ZXN0IHJlc3VsdC4KICAgICBPS19UT19TQVZFX1JFU1VMVD0wCiAKKyAgICBwaWRzPSJgY2F0ICRTTk1QX1RNUERJUi8qcGlkKiAyPi9kZXYvbnVsbGAiCiAgICAgaWYgWyAiJFNOTVBEU1RBUlRFRCIgPSAiMSIgXSA7IHRoZW4KICAgICAgIFNUT1BBR0VOVAogICAgIGZpCiAgICAgaWYgWyAiJFRSQVBEU1RBUlRFRCIgPSAiMSIgXSA7IHRoZW4KICAgICAgIFNUT1BUUkFQRAogICAgIGZpCi0gICAgZm9yIHBmaWxlIGluICRTTk1QX1RNUERJUi8qcGlkKiA7IGRvCi0gICAgICAgIGlmIFsgIngkcGZpbGUiID0gIngkU05NUF9UTVBESVIvKnBpZCoiIF07IHRoZW4KLSAgICAgICAgICAgIEJBRCAiKG5vIHBpZCBmaWxlKHMpIGZvdW5kKSAiCi0gICAgICAgICAgICBicmVhawotICAgICAgICBmaQotICAgICAgICBpZiBbICEgLWYgJHBmaWxlIF07IHRoZW4KLSAgICAgICAgICAgIEJBRCAiKCckcGZpbGUnIGRpc2FwcGVhcmVkKSAiCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBmaQotCXBpZD1gY2F0ICRwZmlsZWAKLSAgICAgICAgIyBXaGVuIG5vdCBydW5uaW5nIG9uIE1pbkdXLCBjaGVjayB3aGV0aGVyIHNubXBkIGlzIHN0aWxsIHJ1bm5pbmcuCi0gICAgICAgIGlmIFsgIngkT1NUWVBFIiA9ICJ4bXN5cyIgXSB8fCB7IHBzIC1lIDI+L2Rldi9udWxsIHwgZWdyZXAgIl5bCSBdKiRwaWRbCSBdKyIgPiAvZGV2L251bGwgMj4mMTsgfTsgdGhlbgotICAgICAgICAgICAgaWYgWyAieCRPU1RZUEUiICE9ICJ4bXN5cyIgXTsgdGhlbgotICAgICAgICAgICAgICAgIFNOTVBfU0FWRV9UTVBESVI9eWVzCi0gICAgICAgICAgICBmaQotICAgICAgICAgICAgaWYgWyAieCRPU1RZUEUiID0gInhtc3lzIiBdOyB0aGVuCi0gICAgICAgICAgICAgIENPTU1BTkQ9InBza2lsbC5leGUgJHBpZCIKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgQ09NTUFORD0ia2lsbCAtOSAkcGlkIgotICAgICAgICAgICAgZmkKLQkgICAgZWNobyAkQ09NTUFORCAiKCRwZmlsZSkiID4+ICRTTk1QX1RNUERJUi9pbnZva2VkCisgICAgZm9yIHBpZCBpbiAkcGlkczsgZG8KKyAgICAgICAgaWYgSVNSVU5OSU5HICRwaWQ7IHRoZW4KKwkgICAgU05NUF9TQVZFX1RNUERJUj15ZXMKKwkgICAgQ09NTUFORD0iYEVDSE9TRU5EU0lHS0lMTCAkcGlkYCIKKwkgICAgZWNobyAiJENPTU1BTkQgKCRwZmlsZSkiID4+ICRTTk1QX1RNUERJUi9pbnZva2VkCisJICAgIFZFUkJPU0VfT1VUIDAgIiRDT01NQU5EICgkcGZpbGUpIgogCSAgICAkQ09NTUFORCA+IC9kZXYvbnVsbCAyPiYxCiAJICAgIHJldHVybl92YWx1ZT0xCiAJZmkKQEAgLTcyOCw3ICs2OTksNyBAQAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtby0KICMKIFZFUkJPU0VfT1VUKCkgewotICAgIGlmIFsgJFNOTVBfVkVSQk9TRSA+ICQxIF07IHRoZW4KKyAgICBpZiBbICRTTk1QX1ZFUkJPU0UgLWd0ICQxIF07IHRoZW4KIAlzaGlmdAogCWVjaG8gIiQqIgogICAgIGZpCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ydW4gYi90ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ydW4KaW5kZXggZWIzN2U5Ni4uMTk3ODAwOSAxMDA3NTUKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfcnVuCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX3J1bgpAQCAtMTEsNyArMTEsOCBAQAogICAgIGlmIGNkIHRlc3RpbmcgMj4vZGV2L251bGw7IHRoZW4KICAgICAgICA6CiAgICAgZWxzZQotICAgICAgIGVjaG8gIkVycm9yOiAkMCBtdXN0IGJlIHN0YXJ0ZWQgZnJvbSBpbnNpZGUgdGhlIHRlc3RpbmcgZGlyZWN0b3J5LiIKKyAgICAgICBlY2hvICJFcnJvcjogJDAgbXVzdCBiZSBzdGFydGVkIGZyb20gaW5zaWRlIHRoZSB0ZXN0aW5nIGRpcmVjdG9yeSBpbiB0aGUgc291cmNlIHRyZWUuIgorICAgICAgIGVjaG8gIlRoZSBidWlsZGRpciBlbnZpcm9ubWVudCB2YXJpYWJsZSBjYW4gYmUgc2V0IHRvIHBvaW50IHRvIHRoZSBidWlsZCBkaXJlY3RvcnkuIgogICAgICAgIGV4aXQgMQogICAgIGZpCiBmaQpAQCAtMjQsNyArMjUsOCBAQAogICAgIGlmIGNkIHRlc3RpbmcgMj4vZGV2L251bGw7IHRoZW4KICAgICAgICA6CiAgICAgZWxzZQotICAgICAgIGVjaG8gIkVycm9yOiAkMCBtdXN0IGJlIHN0YXJ0ZWQgZnJvbSBpbnNpZGUgdGhlIHRlc3RpbmcgZGlyZWN0b3J5LiIKKyAgICAgICBlY2hvICJFcnJvcjogJDAgbXVzdCBiZSBzdGFydGVkIGZyb20gaW5zaWRlIHRoZSB0ZXN0aW5nIGRpcmVjdG9yeSBpbiB0aGUgc291cmNlIHRyZWUuIgorICAgICAgIGVjaG8gIlRoZSBidWlsZGRpciBlbnZpcm9ubWVudCB2YXJpYWJsZSBjYW4gYmUgc2V0IHRvIHBvaW50IHRvIHRoZSBidWlsZCBkaXJlY3RvcnkuIgogICAgICAgIGV4aXQgMQogICAgIGZpCiBmaQpAQCAtNDcsNyArNDksMTIgQEAKIGV4cG9ydCBTTk1QX09SSUdESVIKIAogU05NUF9VUERJUj0ke2J1aWxkZGlyfSAgICAgICAgICAjIyBidWlsZCBkaXJlY3RvcnkKLVNOTVBfU0xFRVA9JHtTTk1QX1NMRUVQOj0xfSAJIyMgZGVmYXVsdCBzZWNvbmRzIHRvIHNsZWVwCitpZiBbICJ4JERZTkFNSUNfQU5BTFlaRVIiID0gIngiIF07IHRoZW4KKyAgICBTTk1QX1NMRUVQX0RFRkFVTFQ9MQorZWxzZQorICAgIFNOTVBfU0xFRVBfREVGQVVMVD0xMAorZmkKK1NOTVBfU0xFRVA9JHtTTk1QX1NMRUVQOj0kU05NUF9TTEVFUF9ERUZBVUxUfSAJIyMgZGVmYXVsdCBzZWNvbmRzIHRvIHNsZWVwCiBleHBvcnQgU05NUF9TTEVFUAogCiAjIEZpbmQgZXhlY3V0YWJsZXMgaW4gc291cmNlIGZpcnN0LCB0aGVuIGJ1aWxkLCB0aGVuIGV4aXN0aW5nIFBBVEguCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDRzbm1wX2VudW1fY2xpYi5jIGIvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA0c25tcF9lbnVtX2NsaWIuYwppbmRleCA3MmVlNWM5Li5kMjhiMTliIDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDRzbm1wX2VudW1fY2xpYi5jCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwNHNubXBfZW51bV9jbGliLmMKQEAgLTg3LDEwICs4NywxMCBAQAogT0soc2VfZmluZF9saXN0KDIsIDMpLCAibGlzdCAoMiwgMykgc2hvdWxkIGJlIHByZXNlbnQiKTsKIGlmIChzZV9maW5kX2xpc3QoMiwgMykpIHsKICAgT0soc2VfZmluZF92YWx1ZSgyLCAzLCAia2l3aWZydWl0IikgPT0gMywKLSAgICAgImxvb2t1cCBieSBzdHJpbmcgc2hvdWxkIHJldHVybiB0aGUgcHJvcGVyIHZhbHVlIikKKyAgICAgImxvb2t1cCBieSBzdHJpbmcgc2hvdWxkIHJldHVybiB0aGUgcHJvcGVyIHZhbHVlIik7CiAgIHNlX2ZpbmRfcmVzdWx0ID0gc2VfZmluZF9sYWJlbCgyLCAzLCAyKTsKICAgT0soc2VfZmluZF9yZXN1bHQgJiYgc3RyY21wKHNlX2ZpbmRfcmVzdWx0LCAicGVhciIpID09IDAsCi0gICAgICJsb29rdXAgYnkgbGFiZWwgc2hvdWxkIHJldHVybiB0aGUgcHJvcGVyIHN0cmluZyIpCisgICAgICJsb29rdXAgYnkgbGFiZWwgc2hvdWxkIHJldHVybiB0aGUgcHJvcGVyIHN0cmluZyIpOwogfQogCiBzZV9yZWFkX2NvbmYoImVudW0iLApkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA1dGFibGVfZGF0YXNldF9jYWdlbnRsaWIuYyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwNXRhYmxlX2RhdGFzZXRfY2FnZW50bGliLmMKaW5kZXggZjkwNmM1NS4uY2FjOTQwZSAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA1dGFibGVfZGF0YXNldF9jYWdlbnRsaWIuYworKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDV0YWJsZV9kYXRhc2V0X2NhZ2VudGxpYi5jCkBAIC0xNSw2ICsxNSw3IEBACiBpbnQzMl90IGl2YWw7CiBpbnQzMl90IGksIGo7CiAKK2luaXRfYWdlbnQoInNubXBkIik7CiBpbml0X3NubXAoInNubXBkIik7CiAKIHRkcyA9IG5ldHNubXBfY3JlYXRlX3RhYmxlX2RhdGFfc2V0KCJ0YWJsZV9kYXRhc2V0IHVuaXQtdGVzdCIpOwpAQCAtNTIsNSArNTMsNiBAQAogbmV0c25tcF9kZWxldGVfdGFibGVfZGF0YV9zZXQodGRzKTsKIAogc25tcF9zaHV0ZG93bigic25tcGQiKTsKK3NodXRkb3duX2FnZW50KCk7CiAKIE9LKFRSVUUsICJkb25lIik7CmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDZzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2NhZ2VudGxpYi5jIGIvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA2c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9jYWdlbnRsaWIuYwppbmRleCBhZWY0MmQxLi5lZDdhZTY4IDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDZzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2NhZ2VudGxpYi5jCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwNnNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fY2FnZW50bGliLmMKQEAgLTEsMjQgKzEsNDEgQEAKIC8qIEhFQURFUiBUZXN0aW5nIFNOTVAgaGFuZGxlciByZWdpc3RyYXRpb24gKi8KIAogc3RhdGljIG9pZCBPaWRbXSA9IHsgMSwgMywgNiwgMSwgMywgMzI3IH07IC8qIGV4cGVyaW1lbnRhbC4zMjcgKi8KLW5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKmhhbmRsZXI7Ci1uZXRzbm1wX21pYl9oYW5kbGVyICpkaCA9IE5VTEw7CituZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpoYW5kbGVyLCAqaGFuZGxlcjI7CituZXRzbm1wX21pYl9oYW5kbGVyICpkaDsKK25ldHNubXBfY2FjaGUgKm5jLCAqbmMyOwogCiBpbml0X3NubXAoInNubXAiKTsKIAogaGFuZGxlciA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJleHBlcmltZW50YWwuMzI3IiwgTlVMTCwKIAlPaWQsIE9JRF9MRU5HVEgoT2lkKSwgSEFORExFUl9DQU5fUldSSVRFKTsKIE9LKGhhbmRsZXIgIT0gTlVMTCwgIkhhbmRsZXIgY3JlYXRpb24uIik7Ci1oYW5kbGVyLT5oYW5kbGVyLT5teXZvaWQgPSBtYWxsb2MoMzI5KTsKLWhhbmRsZXItPmhhbmRsZXItPmRhdGFfZnJlZSA9IGZyZWU7CisKK25jID0gbmV0c25tcF9jYWNoZV9jcmVhdGUoMTAsIE5VTEwsIE5VTEwsIE9pZCwgT0lEX0xFTkdUSChPaWQpKTsKK09LKG5jLCAibmV0c25tcF9jYWNoZSBhbGxvY2F0aW9uIik7CitPSyhzbm1wX29pZF9jb21wYXJlKG5jLT5yb290b2lkLCBuYy0+cm9vdG9pZF9sZW4sIE9pZCwgT0lEX0xFTkdUSChPaWQpKSA9PSAwLAorICAgIkhhbmRsZXIgcHJpdmF0ZSBPSUQuIik7CisKK2hhbmRsZXItPmhhbmRsZXItPm15dm9pZCA9IG5jOworbmV0c25tcF9jYWNoZV9oYW5kbGVyX293bnNfY2FjaGUoaGFuZGxlci0+aGFuZGxlcik7CisKK25jMiA9IGhhbmRsZXItPmhhbmRsZXItPm15dm9pZDsKK09LKG5jMiwgIkhhbmRsZXIgcHJpdmF0ZSBkYXRhIik7CitPSyhzbm1wX29pZF9jb21wYXJlKG5jMi0+cm9vdG9pZCwgbmMyLT5yb290b2lkX2xlbiwgT2lkLCBPSURfTEVOR1RIKE9pZCkpID09IDAsCisgICAiSGFuZGxlciBwcml2YXRlIE9JRC4iKTsKIAogT0sobmV0c25tcF9yZWdpc3Rlcl9pbnN0YW5jZShoYW5kbGVyKSA9PSBNSUJfUkVHSVNURVJFRF9PSywKICAgICJNSUIgcmVnaXN0cmF0aW9uLiIpOwogCi0jaWYgMAoraGFuZGxlcjIgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigiZXhwZXJpbWVudGFsLjMyNyIsIE5VTEwsCisgICAgICAgIE9pZCwgT0lEX0xFTkdUSChPaWQpLCBIQU5ETEVSX0NBTl9SV1JJVEUpOworT0soaGFuZGxlcjIgIT0gTlVMTCwgIlNlY29uZCByZWdpc3RyYXRpb24iKTsKKworT0sobmV0c25tcF9yZWdpc3Rlcl9pbnN0YW5jZShoYW5kbGVyMikgPT0gTUlCX0RVUExJQ0FURV9SRUdJU1RSQVRJT04sCisgICAiRHVwbGljYXRlIE1JQiByZWdpc3RyYXRpb24uIik7CisKIGRoID0gbmV0c25tcF9oYW5kbGVyX2R1cChoYW5kbGVyLT5oYW5kbGVyKTsKIE9LKGRoLCAiSGFuZGxlciBkdXBsaWNhdGlvbi4iKTsKLSNlbmRpZgogCiBPSyhuZXRzbm1wX3VucmVnaXN0ZXJfaGFuZGxlcihoYW5kbGVyKSA9PSBTTk1QRVJSX1NVQ0NFU1MsCiAgICAiSGFuZGxlciB1bnJlZ2lzdHJhdGlvbi4iKTsKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAxMG5ldHNubXBfc3RyaW5nX3RpbWVfdG9fc2Vjc19jbGliLmMgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMTBuZXRzbm1wX3N0cmluZ190aW1lX3RvX3NlY3NfY2xpYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzMWFlZWIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMTBuZXRzbm1wX3N0cmluZ190aW1lX3RvX3NlY3NfY2xpYi5jCkBAIC0wLDAgKzEsNDUgQEAKKy8qIEhFQURFUiBUZXN0aW5nIHRoZSBuZXRzbm1wX3N0cmluZ190aW1lX3RvX3NlY3MgQVBJICovCitpbnQgc2VjczsKKworI2RlZmluZSBURVNUSVQoeCx5KSBcCisgICAgT0tGKHkgPT0gKHNlY3MgPSBuZXRzbm1wX3N0cmluZ190aW1lX3RvX3NlY3MoeCkpLCBcCisgICAgICAgICgibmV0c25tcF9zdHJpbmdfdGltZV90b19zZWNzIG9mICVzIHJldHVybmVkICVkLCBub3QgNSIsIHgsIHNlY3MpKQorCitURVNUSVQoIjUiLCA1KTsKK1RFU1RJVCgiNSIsIDUpOworCitURVNUSVQoIjVzIiwgNSk7CitURVNUSVQoIjVTIiwgNSk7CisKK1RFU1RJVCgiNW0iLCA1ICogNjApOworVEVTVElUKCI1TSIsIDUgKiA2MCk7CisKK1RFU1RJVCgiNWgiLCA1ICogNjAgKiA2MCk7CitURVNUSVQoIjVIIiwgNSAqIDYwICogNjApOworCitURVNUSVQoIjVkIiwgNSAqIDYwICogNjAgKiAyNCk7CitURVNUSVQoIjVEIiwgNSAqIDYwICogNjAgKiAyNCk7CisKK1RFU1RJVCgiNXciLCA1ICogNjAgKiA2MCAqIDI0ICogNyk7CitURVNUSVQoIjVXIiwgNSAqIDYwICogNjAgKiAyNCAqIDcpOworCisvKiBub3cgd2l0aCBsb25nZXIgdGltZXMgKi8KK1RFU1RJVCgiMTIzNCIsIDEyMzQpOworVEVTVElUKCIxMjM0IiwgMTIzNCk7CisKK1RFU1RJVCgiMTIzNHMiLCAxMjM0KTsKK1RFU1RJVCgiMTIzNFMiLCAxMjM0KTsKKworVEVTVElUKCIxMjM0bSIsIDEyMzQgKiA2MCk7CitURVNUSVQoIjEyMzRNIiwgMTIzNCAqIDYwKTsKKworVEVTVElUKCIxMjM0aCIsIDEyMzQgKiA2MCAqIDYwKTsKK1RFU1RJVCgiMTIzNEgiLCAxMjM0ICogNjAgKiA2MCk7CisKK1RFU1RJVCgiMTIzNGQiLCAxMjM0ICogNjAgKiA2MCAqIDI0KTsKK1RFU1RJVCgiMTIzNEQiLCAxMjM0ICogNjAgKiA2MCAqIDI0KTsKKworVEVTVElUKCIxMjM0dyIsIDEyMzQgKiA2MCAqIDYwICogMjQgKiA3KTsKK1RFU1RJVCgiMTIzNFciLCAxMjM0ICogNjAgKiA2MCAqIDI0ICogNyk7CisKKwpkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDExc25tcF9vbGRfYXBpX3JlZ2lzdHJhdGlvbl9jYWdlbnRsaWIuYyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAxMXNubXBfb2xkX2FwaV9yZWdpc3RyYXRpb25fY2FnZW50bGliLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYxZDQ0OQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAxMXNubXBfb2xkX2FwaV9yZWdpc3RyYXRpb25fY2FnZW50bGliLmMKQEAgLTAsMCArMSw0NiBAQAorLyogSEVBREVSIFRlc3RpbmcgU05NUCBoYW5kbGVyIHJlZ2lzdHJhdGlvbiB2aWEgdGhlIG9sZCBBUEkgKi8KKworc3RhdGljIG9pZCBPaWRbXSA9IHsgMSwgMywgNiwgMSwgMywgMzI3IH07IC8qIGV4cGVyaW1lbnRhbC4zMjcgKi8KK3N0cnVjdCB2YXJpYWJsZSB2YXJfYXJyYXlbXSA9IHsKKyAgICB7IDAsIDAvKnR5cGUqLywgMC8qYWNsKi8sIE5VTEwvKmZpbmRWYXIqLywgNywgeyAxLCAzLCA2LCAxLCAzLCAzMjcsIDEgfSB9LAorICAgIHsgMCwgMC8qdHlwZSovLCAwLyphY2wqLywgTlVMTC8qZmluZFZhciovLCA3LCB7IDEsIDMsIDYsIDEsIDMsIDMyNywgMiB9IH0sCisgICAgeyAwLCAwLyp0eXBlKi8sIDAvKmFjbCovLCBOVUxMLypmaW5kVmFyKi8sIDcsIHsgMSwgMywgNiwgMSwgMywgMzI3LCAzIH0gfSwKK307CituZXRzbm1wX3Nlc3Npb24gKnNlc3M7CitpbnQgcmVzOworCitpbml0X3NubXAoInNubXAiKTsKKworc2VzcyA9IGNhbGxvYygxLCBzaXplb2YoKnNlc3MpKTsKK3NubXBfc2Vzc19pbml0KHNlc3MpOworCityZXMgPSAKK25ldHNubXBfcmVnaXN0ZXJfb2xkX2FwaSgiZXhwLjMyNy5hIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICB2YXJfYXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHZhcl9hcnJheVswXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHZhcl9hcnJheSkvc2l6ZW9mKHZhcl9hcnJheVswXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgT2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihPaWQpL3NpemVvZihPaWRbMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIDIsIC8qIHByaW9yaXR5ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgMCwgLyogcmFuZ2Vfc3ViaWQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAwLCAvKiByYW5nZV91Ym91bmQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjb250ZXh0IiwgNS8qdGltZW91dCovLCAwLypmbGFncyAtIGlnbm9yZWQqLyk7CitPSyhyZXMgPT0gU05NUEVSUl9TVUNDRVNTLCAiSGFuZGxlciByZWdpc3RyYXRpb24gKDEpLiIpOworCisvKiBWZXJpZnkgdGhhdCBkdXBsaWNhdGUgcmVnaXN0cmF0aW9uIGRvZXMgbm90IGNhdXNlIGFueSBoYXZvYy4gKi8KK3JlcyA9IAorbmV0c25tcF9yZWdpc3Rlcl9vbGRfYXBpKCJleHAuMzI3LmIiLAorICAgICAgICAgICAgICAgICAgICAgICAgIHZhcl9hcnJheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodmFyX2FycmF5WzBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodmFyX2FycmF5KS9zaXplb2YodmFyX2FycmF5WzBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBPaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKE9pZCkvc2l6ZW9mKE9pZFswXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgMiwgLyogcHJpb3JpdHkgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAwLCAvKiByYW5nZV9zdWJpZCAqLworICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8qIHJhbmdlX3Vib3VuZCAqLworICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNvbnRleHQiLCA1Lyp0aW1lb3V0Ki8sIDAvKmZsYWdzIC0gaWdub3JlZCovKTsKK09LKHJlcyA9PSBTTk1QRVJSX1NVQ0NFU1MsICJIYW5kbGVyIHJlZ2lzdHJhdGlvbiAoMikuIik7CisKK3NubXBfc2h1dGRvd24oInNubXAiKTsKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAxMmJpbmFyeV9hcnJheV9vaWRfY2xpYi5jIGIvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDEyYmluYXJ5X2FycmF5X29pZF9jbGliLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVlYjUwMgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAxMmJpbmFyeV9hcnJheV9vaWRfY2xpYi5jCkBAIC0wLDAgKzEsNzIgQEAKKy8qIEhFQURFUiBUZXN0aW5nIGJpbmFyeSBPSUQgYXJyYXkgKi8KKworc3RhdGljIGNvbnN0IGNoYXIgdGVzdF9uYW1lW10gPSAiYmluYXJ5LWFycmF5LW9mLU9JRHMtdGVzdCI7CitvaWQgbzEgPSAxOworb2lkIG8yID0gMjsKK29pZCBvMyA9IDY7CitvaWQgbzQgPSA4Oworb2lkIG81ID0gOTsKK29pZCBveCA9IDc7CitvaWQgb3kgPSAxMDsKK25ldHNubXBfaW5kZXggaTEsIGkyLCBpMywgaTQsIGk1LCBpeCwgaXksICppcDsKK2NvbnN0IG5ldHNubXBfaW5kZXggKmNvbnN0IGlfbGFzdCA9ICZpNTsKK25ldHNubXBfaW5kZXggKmFbXSA9IHsgJml4LCAmaXkgfTsKK25ldHNubXBfaW5kZXggKmJbXSA9IHsgJmk0LCAmaTIsICZpMywgJmkxLCAmaTUgfTsKK25ldHNubXBfY29udGFpbmVyICpjOworaW50IGk7CisKK2luaXRfc25tcCh0ZXN0X25hbWUpOworCitjID0gbmV0c25tcF9jb250YWluZXJfZ2V0X2JpbmFyeV9hcnJheSgpOworYy0+Y29tcGFyZSA9IG5ldHNubXBfY29tcGFyZV9uZXRzbm1wX2luZGV4OworICAgIAoraTEub2lkcyA9ICZvMTsKK2kyLm9pZHMgPSAmbzI7CitpMy5vaWRzID0gJm8zOworaTQub2lkcyA9ICZvNDsKK2k1Lm9pZHMgPSAmbzU7CitpeC5vaWRzID0gJm94OworaXkub2lkcyA9ICZveTsKK2kxLmxlbiA9IGkyLmxlbiA9IGkzLmxlbiA9IGk0LmxlbiA9IGk1LmxlbiA9IGl4LmxlbiA9IGl5LmxlbiA9IDE7CisKK2ZvciAoaSA9IDA7IGkgPCBzaXplb2YoYikvc2l6ZW9mKGJbMF0pOyArK2kpCisgICAgQ09OVEFJTkVSX0lOU0VSVChjLCBiW2ldKTsKKworZm9yIChpcCA9IENPTlRBSU5FUl9GSVJTVChjKTsgaXA7IGlwID0gQ09OVEFJTkVSX05FWFQoYywgaXApKSB7CisgICAgZm9yIChpID0gc2l6ZW9mKGIpL3NpemVvZihiWzBdKSAtIDE7IGkgPj0gMDsgLS1pKQorICAgICAgICBpZiAoYy0+Y29tcGFyZShpcCwgYltpXSkgPT0gMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgIE9LRihpID49IDAsICgiT0lEIGJbJWRdID0gJSIgTkVUU05NUF9QUklvICJkIHByZXNlbnQiLCBpLCBiW2ldLT5vaWRzWzBdKSk7Cit9CisKK2ZvciAoaSA9IDA7IGkgPCBzaXplb2YoYikvc2l6ZW9mKGJbMF0pOyArK2kpIHsKKyAgICBpcCA9IENPTlRBSU5FUl9GSU5EKGMsIGJbaV0pOworICAgIE9LRihpcCwgKCJWYWx1ZSBiWyVkXSA9ICUiIE5FVFNOTVBfUFJJbyAiZCBwcmVzZW50IiwgaSwgYltpXS0+b2lkc1swXSkpOworICAgIGlwID0gQ09OVEFJTkVSX05FWFQoYywgYltpXSk7CisgICAgaWYgKGMtPmNvbXBhcmUoYltpXSwgaV9sYXN0KSA8IDApCisgICAgICAgIE9LRihpcCAmJiBjLT5jb21wYXJlKGJbaV0sIGlwKSA8IDAsCisgICAgICAgICAgICAoIlN1Y2Nlc3NvciBvZiBiWyVkXSA9ICUiIE5FVFNOTVBfUFJJbyAiZCBpcyAlIiBORVRTTk1QX1BSSW8gImQiLAorICAgICAgICAgICAgIGksIGJbaV0tPm9pZHNbMF0sIGlwLT5vaWRzWzBdKSk7CisgICAgZWxzZQorICAgICAgICBPS0YoIWlwLCAoIk5vIHN1Y2Nlc3NvciBmb3VuZCBmb3IgYlslZF0gPSAlIiBORVRTTk1QX1BSSW8gImQiLCBpLAorICAgICAgICAgICAgICAgICAgYltpXS0+b2lkc1swXSkpOworfQorCitmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGEpL3NpemVvZihhWzBdKTsgKytpKSB7CisgICAgaXAgPSBDT05UQUlORVJfRklORChjLCBhW2ldKTsKKyAgICBPS0YoIWlwLCAoImFbJWRdID0gJSIgTkVUU05NUF9QUklvICJkIGFic2VudCIsIGksIGFbaV0tPm9pZHNbMF0pKTsKKyAgICBpcCA9IENPTlRBSU5FUl9ORVhUKGMsIGFbaV0pOworICAgIGlmIChjLT5jb21wYXJlKGFbaV0sIGlfbGFzdCkgPCAwKQorICAgICAgICBPS0YoaXAgJiYgYy0+Y29tcGFyZShpcCwgYVtpXSkgPiAwLAorICAgICAgICAgICAgKCJTdWNjZXNzb3Igb2YgYVslZF0gPSAlIiBORVRTTk1QX1BSSW8gImQgaXMgJSIgTkVUU05NUF9QUklvICJkIiwKKyAgICAgICAgICAgICBpLCBhW2ldLT5vaWRzWzBdLCBpcC0+b2lkc1swXSkpOworICAgIGVsc2UKKyAgICAgICAgT0tGKCFpcCwgKCJObyBzdWNjZXNzb3IgZm91bmQgZm9yIGFbJWRdID0gJSIgTkVUU05NUF9QUklvICJkIiwgaSwKKyAgICAgICAgICAgICAgICAgIGFbaV0tPm9pZHNbMF0pKTsKK30KKword2hpbGUgKChpcCA9IENPTlRBSU5FUl9GSVJTVChjKSkpCisgIENPTlRBSU5FUl9SRU1PVkUoYywgaXApOworQ09OVEFJTkVSX0ZSRUUoYyk7CisKK3NubXBfc2h1dGRvd24odGVzdF9uYW1lKTsKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAxM2JpbmFyeV9hcnJheV9zdHJpbmdfY2xpYi5jIGIvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDEzYmluYXJ5X2FycmF5X3N0cmluZ19jbGliLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M0MzYxYgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAxM2JpbmFyeV9hcnJheV9zdHJpbmdfY2xpYi5jCkBAIC0wLDAgKzEsNTkgQEAKKy8qIEhFQURFUiBUZXN0aW5nIGJpbmFyeSBzdHJpbmcgYXJyYXkgKi8KKworc3RhdGljIGNvbnN0IGNoYXIgdGVzdF9uYW1lW10gPSAiYmluYXJ5LWFycmF5LW9mLXN0cmluZ3MtdGVzdCI7Citjb25zdCBjaGFyIG8xW10gPSAiemVicmEiOworY29uc3QgY2hhciBvMltdID0gImItdHdvIjsKK2NvbnN0IGNoYXIgbzNbXSA9ICJiIjsKK2NvbnN0IGNoYXIgbzRbXSA9ICJjZWRhciI7Citjb25zdCBjaGFyIG81W10gPSAiYWxwaGEiOworY29uc3QgY2hhciBveFtdID0gImRldiI7Citjb25zdCBjaGFyIG95W10gPSAiYWEiOworY29uc3QgY2hhciogY29uc3Qgb19sYXN0ID0gbzE7Citjb25zdCBjaGFyICppcDsKK2NvbnN0IGNoYXIgKmNvbnN0IGFbXSA9IHsgb3gsIG95IH07Citjb25zdCBjaGFyICpjb25zdCBiW10gPSB7IG80LCBvMiwgbzMsIG8xLCBvNSB9OworbmV0c25tcF9jb250YWluZXIgKmM7CitpbnQgaTsKKworaW5pdF9zbm1wKHRlc3RfbmFtZSk7CisKK2MgPSBuZXRzbm1wX2NvbnRhaW5lcl9nZXRfYmluYXJ5X2FycmF5KCk7CitjLT5jb21wYXJlID0gKG5ldHNubXBfY29udGFpbmVyX2NvbXBhcmUqKXN0cmNtcDsKKyAgICAKK2ZvciAoaSA9IDA7IGkgPCBzaXplb2YoYikvc2l6ZW9mKGJbMF0pOyArK2kpCisgICAgQ09OVEFJTkVSX0lOU0VSVChjLCBiW2ldKTsKKworZm9yIChpcCA9IENPTlRBSU5FUl9GSVJTVChjKTsgaXA7IGlwID0gQ09OVEFJTkVSX05FWFQoYywgaXApKSB7CisgICAgZm9yIChpID0gc2l6ZW9mKGIpL3NpemVvZihiWzBdKSAtIDE7IGkgPj0gMDsgLS1pKQorICAgICAgICBpZiAoYy0+Y29tcGFyZShpcCwgYltpXSkgPT0gMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgIE9LRihpID49IDAsICgic3RyaW5nIGJbJWRdID0gXCIlc1wiIHByZXNlbnQiLCBpLCBiW2ldKSk7Cit9CisKK2ZvciAoaSA9IDA7IGkgPCBzaXplb2YoYikvc2l6ZW9mKGJbMF0pOyArK2kpIHsKKyAgICBpcCA9IENPTlRBSU5FUl9GSU5EKGMsIGJbaV0pOworICAgIE9LRihpcCwgKCJiWyVkXSA9IFwiJXNcIiBwcmVzZW50IiwgaSwgYltpXSkpOworICAgIGlwID0gQ09OVEFJTkVSX05FWFQoYywgYltpXSk7CisgICAgaWYgKGMtPmNvbXBhcmUoYltpXSwgb19sYXN0KSA8IDApCisgICAgICAgIE9LRihpcCAmJiBjLT5jb21wYXJlKGJbaV0sIGlwKSA8IDAsCisgICAgICAgICAgICAoIlN1Y2Nlc3NvciBvZiBiWyVkXSA9IFwiJXNcIiBpcyBcIiVzXCIiLCBpLCBiW2ldLCBpcCkpOworICAgIGVsc2UKKyAgICAgICAgT0tGKCFpcCwgKCJObyBzdWNjZXNzb3IgZm91bmQgZm9yIGJbJWRdID0gXCIlc1wiIiwgaSwgYltpXSkpOworfQorCitmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGEpL3NpemVvZihhWzBdKTsgKytpKSB7CisgICAgaXAgPSBDT05UQUlORVJfRklORChjLCBhW2ldKTsKKyAgICBPS0YoIWlwLCAoImFbJWRdID0gXCIlc1wiIGFic2VudCIsIGksIGFbaV0pKTsKKyAgICBpcCA9IENPTlRBSU5FUl9ORVhUKGMsIGFbaV0pOworICAgIGlmIChjLT5jb21wYXJlKGFbaV0sIG9fbGFzdCkgPCAwKQorICAgICAgICBPS0YoaXAgJiYgYy0+Y29tcGFyZShpcCwgYVtpXSkgPiAwLAorICAgICAgICAgICAgKCJTdWNjZXNzb3Igb2YgYVslZF0gPSBcIiVzXCIgaXMgXCIlc1wiIiwgaSwgYVtpXSwgaXApKTsKKyAgICBlbHNlCisgICAgICAgIE9LRighaXAsICgiTm8gc3VjY2Vzc29yIGZvdW5kIGZvciBhWyVkXSA9IFwiJXNcIiIsIGksIGFbaV0pKTsKK30KKword2hpbGUgKChpcCA9IENPTlRBSU5FUl9GSVJTVChjKSkpCisgIENPTlRBSU5FUl9SRU1PVkUoYywgaXApOworQ09OVEFJTkVSX0ZSRUUoYyk7CisKK3NubXBfc2h1dGRvd24odGVzdF9uYW1lKTsKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAxNGdldGhvc3RieWFkZHJfY2xpYi5jIGIvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDE0Z2V0aG9zdGJ5YWRkcl9jbGliLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFhNTc4ZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAxNGdldGhvc3RieWFkZHJfY2xpYi5jCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBIRUFERVIgVGVzdGluZyBuZXRzbm1wX2dldGhvc3RieWFkZHIoKSAKKyAqLworCitTT0NLX1NUQVJUVVA7CisKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmFuX3Rlc3QgPSAwOworI2lmZGVmIEhBVkVfR0VUSE9TVEJZQUREUgorICAgIHN0cnVjdCBob3N0ZW50ICpoLCAqaDIgPSBOVUxMOworICAgIHN0cnVjdCBpbl9hZGRyICB2NGxvb3A7CisgICAgc3RydWN0IHNvY2thZGRyX2luIHNpbl9hZGRyOworICAgIGludCAgICAgICAgICAgICBzOworCisgICAgdjRsb29wLnNfYWRkciA9IGh0b25sKElOQUREUl9MT09QQkFDSyk7CisgICAgbWVtc2V0KCZzaW5fYWRkciwgMCwgc2l6ZW9mKHNpbl9hZGRyKSk7CisgICAgc2luX2FkZHIuc2luX2ZhbWlseSA9IEFGX0lORVQ7CisgICAgc2luX2FkZHIuc2luX2FkZHIgPSB2NGxvb3A7CisgICAgcyA9IHNvY2tldChBRl9JTkVULCBTT0NLX0RHUkFNLCAwKTsKKyAgICBpZiAocyA+PSAwKSB7CisgICAgICAgIGlmIChiaW5kKHMsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNpbl9hZGRyLCBzaXplb2Yoc2luX2FkZHIpKSA+PSAwKSB7CisgICAgICAgICAgICBoID0gbmV0c25tcF9nZXRob3N0YnlhZGRyKCZ2NGxvb3AsIHNpemVvZih2NGxvb3ApLCBBRl9JTkVUKTsKKyAgICAgICAgICAgIGlmIChoKQorICAgICAgICAgICAgICAgIGgyID0gZ2V0aG9zdGJ5bmFtZShoLT5oX25hbWUpOworICAgICAgICAgICAgT0tGKGggJiYgKHN0cmNtcChoLT5oX25hbWUsICJsb2NhbGhvc3QiKSA9PSAwIHx8CisgICAgICAgICAgICAgICAgICAgICAgKGgyICYmIG1lbWNtcChoMi0+aF9hZGRyLCAmdjRsb29wLnNfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih2NGxvb3Auc19hZGRyKSkgPT0gMCkpLAorICAgICAgICAgICAgICAgICgiMTI3LjAuMC4xIGxvb2t1cCAoJXMgLT4gJXMpIiwgaCA/IGgtPmhfbmFtZSA6ICIoZmFpbGVkKSIsCisgICAgICAgICAgICAgICAgIGgyID8gaW5ldF9udG9hKCooc3RydWN0IGluX2FkZHIgKikgaDItPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoX2FkZHIpIDogIihmYWlsZWQpIikpOworICAgICAgICAgICAgcmFuX3Rlc3QgPSAxOworICAgICAgICB9CisgICAgICAgIGNsb3NlKHMpOworICAgIH0KKyNlbmRpZgorICAgIGlmICghcmFuX3Rlc3QpCisgICAgICAgIE9LRigxLCAoIlNraXBwZWQgSVB2NCB0ZXN0IikpOworfQorCit7CisgICAgc3RydWN0IGhvc3RlbnQgKmg7CisjaWZkZWYgY3lnd2luCisgICAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbjZfYWRkciB2Nmxvb3AgPSB7IHsgSU42QUREUl9MT09QQkFDS19JTklUIH0gfTsKKyNlbHNlCisgICAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbjZfYWRkciB2Nmxvb3AgPSBJTjZBRERSX0xPT1BCQUNLX0lOSVQ7CisjZW5kaWYKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW42IHNpbjZfYWRkcjsKKyAgICBzdHJ1Y3QgYWRkcmluZm8gaGludHMsICphZGRyID0gTlVMTCwgKmFwOworICAgIGNoYXIgICAgICAgICAgICBidWZbNjRdOworICAgIGludCAgICAgICAgICAgICBzLCByZXMsIHJhbl90ZXN0ID0gMDsKKworICAgIG1lbXNldCgmc2luNl9hZGRyLCAwLCBzaXplb2Yoc2luNl9hZGRyKSk7CisgICAgc2luNl9hZGRyLnNpbjZfZmFtaWx5ID0gQUZfSU5FVDY7CisgICAgc2luNl9hZGRyLnNpbjZfYWRkciA9IHY2bG9vcDsKKyAgICBzID0gc29ja2V0KEFGX0lORVQ2LCBTT0NLX0RHUkFNLCAwKTsKKyAgICBpZiAocyA+PSAwKSB7CisgICAgICAgIGlmIChiaW5kKHMsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNpbjZfYWRkciwgc2l6ZW9mKHNpbjZfYWRkcikpID49CisgICAgICAgICAgICAwKSB7CisgICAgICAgICAgICBzdHJjcHkoYnVmLCAiKGZhaWxlZCkiKTsKKyAgICAgICAgICAgIGggPSBuZXRzbm1wX2dldGhvc3RieWFkZHIoJnY2bG9vcCwgc2l6ZW9mKHY2bG9vcCksIEFGX0lORVQ2KTsKKyAgICAgICAgICAgIGlmIChoKSB7CisgICAgICAgICAgICAgICAgbWVtc2V0KCZoaW50cywgMCwgc2l6ZW9mKGhpbnRzKSk7CisgICAgICAgICAgICAgICAgaGludHMuYWlfZmFtaWx5ID0gQUZfSU5FVDY7CisgICAgICAgICAgICAgICAgcmVzID0gZ2V0YWRkcmluZm8oaC0+aF9uYW1lLCBOVUxMLCAmaGludHMsICZhZGRyKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChhcCA9IGFkZHI7IGFwOyBhcCA9IGFwLT5haV9uZXh0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXAtPmFpX2ZhbWlseSA9PSBBRl9JTkVUNikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZXRfbnRvcChhcC0+YWlfZmFtaWx5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopIGFwLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhaV9hZGRyKS0+c2luNl9hZGRyLCBidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihidWYpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoIWFwKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RyY3B5KGJ1ZiwgIm5vIEFGX0lORVQ2IGFkZHJlc3MgZm91bmQiKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFkZHIpCisgICAgICAgICAgICAgICAgICAgICAgICBmcmVlYWRkcmluZm8oYWRkcik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgImdldGFkZHJpbmZvKCkgZmFpbGVkOiAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgT0tGKGggJiYgKHN0cmNtcChoLT5oX25hbWUsICJsb2NhbGhvc3QiKSA9PSAwIHx8CisgICAgICAgICAgICAgICAgICAgICAgKHJlcyA9PSAwICYmIG1lbWNtcChhZGRyLT5haV9hZGRyLCAmc2luNl9hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHNpbjZfYWRkcikpID09IDApKSwKKyAgICAgICAgICAgICAgICAoIjo6MSBsb29rdXAgKCVzIC0+ICVzKSIsIGggPyBoLT5oX25hbWUgOiAiKGZhaWxlZCkiLAorICAgICAgICAgICAgICAgICBidWYpKTsKKyAgICAgICAgICAgIHJhbl90ZXN0ID0gMTsKKyAgICAgICAgfQorICAgICAgICBjbG9zZShzKTsKKyAgICB9CisgICAgaWYgKCFyYW5fdGVzdCkKKyAgICAgICAgT0tGKDEsICgiU2tpcHBlZCBJUHY2IHRlc3QiKSk7Cit9CisKK1NPQ0tfQ0xFQU5VUDsKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDEwMXBkdV90eXBlX2NsaWIuYyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDEwMXBkdV90eXBlX2NsaWIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzFhYTYxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMTAxcGR1X3R5cGVfY2xpYi5jCkBAIC0wLDAgKzEsMTMgQEAKKy8qIEhFQURFUiBQRFUgdHlwZSBkZXNjcmlwdGlvbnMgKi8KK2NvbnN0IGNoYXIgKnBkdV9kZXNjcmlwdGlvbjsKK3BkdV9kZXNjcmlwdGlvbiA9IHNubXBfcGR1X3R5cGUoU05NUF9NU0dfR0VUKTsKK09LRigoc3RyY21wKHBkdV9kZXNjcmlwdGlvbiwgIkdFVCIpID09IDApLAorICAgICgiU05NUCBHRVQgUERVIHR5cGUgZGlkIG5vdCByZXR1cm4gdGhlIGV4cGVjdGVkIGlkZW50aWZpZXIgKEdFVCk6ICVzIiwKKyAgICAgcGR1X2Rlc2NyaXB0aW9uKSk7CisKKyNpZmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK3BkdV9kZXNjcmlwdGlvbiA9IHNubXBfcGR1X3R5cGUoMTYzKTsKK09LRigoc3RyY21wKHBkdV9kZXNjcmlwdGlvbiwgIj8weEEzPyIpID09IDApLAorICAgICgiU05NUCBTRVQgUERVIHR5cGUgZGlkIG5vdCByZXR1cm4gdGhlIGV4cGVjdGVkIHVua25vd24gaWRlbnRpZmllciAoPzB4QTM/KTogJXMiLAorICAgICBwZHVfZGVzY3JpcHRpb24pKTsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDEwMnBkdV9idWlsZF9jbGliLmMgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QxMDJwZHVfYnVpbGRfY2xpYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmYmE2OWUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QxMDJwZHVfYnVpbGRfY2xpYi5jCkBAIC0wLDAgKzEsNjcgQEAKKy8qIEhFQURFUiBQRFUgYnVpbGRpbmcgKi8KKworU09DS19TVEFSVFVQOworCituZXRzbm1wX3BkdSAqcGR1OwordV9jaGFyICpwYWNrZXQ7CitzaXplX3QgcGFja2V0X2xlbiwgb2Zmc2V0ID0gMDsKK25ldHNubXBfc2Vzc2lvbiBzZXNzaW9uLCAqc3M7CitpbnQgcmM7CisKKy8qIHByb3RvdHlwZSBjb3BpZWQgZnJvbSBzbm1wX2FwaS5jICovCitpbnQgICAgICAgICAgICAgc25tcF9idWlsZCh1X2NoYXIgKiogcGt0LCBzaXplX3QgKiBwa3RfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICogb2Zmc2V0LCBuZXRzbm1wX3Nlc3Npb24gKiBwc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3BkdSAqcGR1KTsKKworaW5pdF9zbm1wKCJ0ZXN0aW5nIik7Citzbm1wX3Nlc3NfaW5pdCgmc2Vzc2lvbik7CitzZXNzaW9uLnZlcnNpb24gPSBTTk1QX1ZFUlNJT05fMmM7CitzZXNzaW9uLnBlZXJuYW1lID0gc3RyZHVwKCJ1ZHA6MTI3LjAuMC4xIik7IC8qIHdlIHdvbid0IGFjdHVhbGx5IGNvbm5lY3QgKi8KK3Nlc3Npb24uY29tbXVuaXR5ID0gKHVfY2hhciAqKSBzdHJkdXAoImJvZ3VzIik7CitzZXNzaW9uLmNvbW11bml0eV9sZW4gPSBzdHJsZW4oKGNoYXIgKikgc2Vzc2lvbi5jb21tdW5pdHkpOworc3MgPSBzbm1wX29wZW4oJnNlc3Npb24pOworCitPS0YoKHNzICE9IE5VTEwpLCAoIkNyZWF0aW5nIGEgc2Vzc2lvbiBmYWlsZWQiKSk7CitpZiAoc3MgPT0gTlVMTCkKKyAgICBzbm1wX3BlcnJvcigiYWNrIik7CisKK3BhY2tldF9sZW4gPSA0MDk2OworcGFja2V0ID0gbWFsbG9jKHBhY2tldF9sZW4pOworCitwZHUgPSBzbm1wX3BkdV9jcmVhdGUoU05NUF9NU0dfR0VUKTsKK3BkdS0+dmVyc2lvbiA9IHNlc3Npb24udmVyc2lvbjsKKworT0tGKChwZHUgIT0gTlVMTCksICgiQ3JlYXRpbmcgYSBHRVQgUERVIGZhaWxlZCIpKTsKKworcmMgPSBzbm1wX2J1aWxkKCZwYWNrZXQsICZwYWNrZXRfbGVuLCAmb2Zmc2V0LCBzcywgcGR1KTsKKworI2lmbmRlZiBORVRTTk1QX05PVElGWV9PTkxZCitPS0YoKHJjID09IFNOTVBFUlJfU1VDQ0VTUyksCisgICAgKCJCdWlsZGluZyBhIEdFVCBQRFUvcGFja2V0IHNob3VsZCBoYXZlIHdvcmtlZDogJWQiLCByYykpOworI2Vsc2UgLyogTkVUU05NUF9OT1RJRllfT05MWSAqLworT0tGKChyYyAhPSBTTk1QRVJSX1NVQ0NFU1MpLAorICAgICgiQnVpbGRpbmcgYSBHRVQgUERVL3BhY2tldCBzaG91bGQgaGF2ZSBmYWlsZWQ6ICVkIiwgcmMpKTsKKyNlbmRpZiAvKiBORVRTTk1QX05PVElGWV9PTkxZICovCisKK29mZnNldCA9IDA7CitwZHUtPmNvbW1hbmQgPSAxNjM7IC8qIGEgU0VUIG1lc3NhZ2UgKi8KK3JjID0gc25tcF9idWlsZCgmcGFja2V0LCAmcGFja2V0X2xlbiwgJm9mZnNldCwgc3MsIHBkdSk7CisKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCitPS0YoKHJjID09IFNOTVBFUlJfU1VDQ0VTUyksCisgICAgKCJCdWlsZGluZyBhIFNFVCBQRFUvcGFja2V0IHNob3VsZCBoYXZlIHN1Y2NlZWRlZDogJWQiLCByYykpOworI2Vsc2UgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCitPS0YoKHJjICE9IFNOTVBFUlJfU1VDQ0VTUyksCisgICAgKCJCdWlsZGluZyBhIFNFVCBQRFUvcGFja2V0IHNob3VsZCBoYXZlIGZhaWxlZDogJWQiLCByYykpOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCisKKworb2Zmc2V0ID0gMDsKK3BkdS0+Y29tbWFuZCA9IFNOTVBfTVNHX0lORk9STTsKK3JjID0gc25tcF9idWlsZCgmcGFja2V0LCAmcGFja2V0X2xlbiwgJm9mZnNldCwgc3MsIHBkdSk7CisKK09LRigocmMgPT0gU05NUEVSUl9TVUNDRVNTKSwKKyAgICAoIkJ1aWxkaW5nIGFuIElORk9STSBQRFUvcGFja2V0IHNob3VsZCBoYXZlIHN1Y2NlZWQ6ICVkIiwgcmMpKTsKKworU09DS19DTEVBTlVQOwpkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMTAzcGR1X3BhcnNlX2NsaWIuYyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDEwM3BkdV9wYXJzZV9jbGliLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ1ODgyZAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDEwM3BkdV9wYXJzZV9jbGliLmMKQEAgLTAsMCArMSwyMiBAQAorLyogSEVBREVSIFBhcnNpbmcgb2YgUERVcyAqLworbmV0c25tcF9wZHUgcGR1OworaW50IHJjOwordV9jaGFyIGRhdGFbXSA9IHsgCisgICAgMHhBMiwgMHgxRCwgMHgwMiwgMHgwNCwgMHg0RSwgMHgzOSwKKyAgICAweEIyLCAweDhFLCAweDAyLCAweDAxLCAweDAwLCAweDAyLCAweDAxLCAweDAwLAorICAgIDB4MzAsIDB4MEYsIDB4MzAsIDB4MEQsIDB4MDYsIDB4MDgsIDB4MkIsIDB4MDYsCisgICAgMHgwMSwgMHgwMiwgMHgwMSwgMHgwMSwgMHgwNCwgMHgwMCwgMHgwNCwgMHgwMSwKKyAgICAweDY2Cit9Oworc2l6ZV90IGRhdGFfbGVuZ3RoPXNpemVvZihkYXRhKTsKKworcmMgPSBzbm1wX3BkdV9wYXJzZSgmcGR1LCBkYXRhLCAmZGF0YV9sZW5ndGgpOworCitPS0YoKHJjID09IDApLCAoIlBhcnNpbmcgb2YgYSBnZW5lcmljIFBEVSBmYWlsZWQiKSk7CisKKyNpZmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK2RhdGFbMF0gPSAweEEzOyAvKiBjaGFuZ2VzIGl0IHRvIGEgU0VUIHBkdSAqLworcmMgPSBzbm1wX3BkdV9wYXJzZSgmcGR1LCBkYXRhLCAmZGF0YV9sZW5ndGgpOworCitPS0YoKHJjICE9IDApLCAoIlBhcnNpbmcgb2YgYSBnZW5lcmljIFNFVCBQRFUgc3VjY2VlZGVkIikpOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwpkaWZmIC0tZ2l0IGEvd2luMzIvQ29uZmlndXJlIGIvd2luMzIvQ29uZmlndXJlCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggYmM2OGFmZS4uYTM2ZGIwYgotLS0gYS93aW4zMi9Db25maWd1cmUKKysrIGIvd2luMzIvQ29uZmlndXJlCkBAIC0xMDQsNDcgKzEwNCw1NSBAQAogICB9CiB9CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jCi0jIENyZWF0ZSBtYWluIE1ha2VmaWxlCi0jCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBBcmd1bWVudHM6CisjICQxOiBOYW1lIG9mIG91dHB1dCBmaWxlCisjICQyOiBOYW1lIG9mIGlucHV0IGZpbGUKKyMgJDM6IFJlZmVyZW5jZSB0byBhIGhhc2ggd2l0aCBzdWJzdGl0dXRpb25zLiBBIHN1YnN0aXR1dGlvbiBpcyBhbiBhcnJheSB3aXRoCisjICAgICB0d28gZWxlbWVudHMgd2hlcmUgZWxlbWVudCBbMF0gaXMgdGhlIHBhdHRlcm4gdG8gc2VhcmNoIGZvciBhbmQgZWxlbWVudAorIyAgICAgWzFdIHRoZSByZXBsYWNlbWVudCB0ZXh0Lgorc3ViIHN1YnN0aXR1dGUKIHsKLSAgbXkgJG1ha2VmaWxlX291dCA9ICJNYWtlZmlsZSI7Ci0gIG15ICRtYWtlZmlsZV9pbiAgPSAiTWFrZWZpbGUuaW4iOworICBteSAkb3V0ICA9IHNoaWZ0OworICBteSAkaW4gICA9IHNoaWZ0OworICBteSAkc3VicyA9IHNoaWZ0OwogCi0gIG9wZW4gKE1BS0VfT1VULCAiPiRtYWtlZmlsZV9vdXQiKSB8fCBkaWUgIkNhbid0IE9wZW4gJG1ha2VmaWxlX291dFxuIjsKLSAgb3BlbiAoTUFLRV9JTiwgIjwkbWFrZWZpbGVfaW4iKSB8fCBkaWUgIkNhbid0IE9wZW4gJG1ha2VmaWxlX2luXG4iOworICBvcGVuIChPVVQsICI+JG91dCIpIHx8IGRpZSAiQ2FuJ3Qgb3BlbiAkb3V0XG4iOworICBvcGVuIChJTiwgICI8JGluIikgIHx8IGRpZSAiQ2FuJ3Qgb3BlbiAkaW5cbiI7CiAKLSAgcHJpbnQgImNyZWF0aW5nICRtYWtlZmlsZV9vdXRcbiI7CisgIHByaW50ICJjcmVhdGluZyAkb3V0XG4iOwogCi0gIHdoaWxlICg8TUFLRV9JTj4pCi0gIHsKKyAgd2hpbGUgKDxJTj4pIHsKICAgICBjaG9tcDsKLSAgICBpZiAoJHNkayA9PSAxKSB7Ci0gICAgICBzL15TREs9L1NESz10cnVlLzsKKyAgICBmb3JlYWNoIG15ICRlIChrZXlzICUkc3VicykgeworICAgICAgICBteSAkcCA9ICQkc3Vic3skZX1bMF07CisgICAgICAgIG15ICRxID0gJCRzdWJzeyRlfVsxXTsKKyAgICAgICAgcy8kcC8kcS87CiAgICAgfQotICAgIGVsc2UgewotICAgICAgcy9eU0RLPS9TREs9ZmFsc2UvOwotICAgIH0KLQotICAgIHMvXkxJTktUWVBFPS9MSU5LVFlQRT0kbGlua3R5cGUvOwotICAgIHMvXkNGRz0vQ0ZHPSRjb25maWcvOwotICAgIHMvXlBSRUZJWD0vUFJFRklYPSRwcmVmaXgvOwotICAgIHMvXlBSRUZJWF9ET1M9L1BSRUZJWF9ET1M9JHByZWZpeGRvcy87Ci0gICAgcy9eU1NMPS4qL1NTTD0kb3BlbnNzbC87Ci0KLSAgICBwcmludCBNQUtFX09VVCAkXyAuICJcbiI7CisgICAgcHJpbnQgT1VUICRfIC4gIlxuIjsKICAgfQorCisgIGNsb3NlIElOOworICBjbG9zZSBPVVQ7CiB9CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjCi0jIENyZWF0ZSBNYWtlZmlsZXMgZm9yIGFwcGxpY2F0aW9ucyBmcm9tCi0jIE1ha2VmaWxlLWFwcHMuaW4KLSMgKGV4Y2VwdCBmb3Igc25tcG5ldHN0YXQpCisjIFBlcmZvcm0gc3Vic3RpdHV0aW9ucwogIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICVzdWJzID0gKAorICAgICJjZmciID0+IFsgIl5DRkc9IiwgICAgICAgICJDRkc9JGNvbmZpZyIgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICJpbnQiID0+IFsgIl5JTlRESVI9IiwgICAgICJJTlRESVI9LlxcJGNvbmZpZyIgICAgICAgICAgICAgICAgICBdLAorICAgICJsbmsiID0+IFsgIl5MSU5LVFlQRT0iLCAgICJMSU5LVFlQRT0kbGlua3R5cGUiICAgICAgICAgICAgICAgICBdLAorICAgICJvdXQiID0+IFsgIl5PVVRESVI9IiwgICAgICJPVVRESVI9LlxcJGNvbmZpZyIgICAgICAgICAgICAgICAgICBdLAorICAgICJwZngiID0+IFsgIl5QUkVGSVg9IiwgICAgICJQUkVGSVg9JHByZWZpeCIgICAgICAgICAgICAgICAgICAgICBdLAorICAgICJkb3MiID0+IFsgIl5QUkVGSVhfRE9TPSIsICJQUkVGSVhfRE9TPSRwcmVmaXhkb3MiICAgICAgICAgICAgICBdLAorICAgICJzZGsiID0+IFsgIl5TREs9IiwgICAgICAgICRzZGsgPT0gMSA/ICJTREs9dHJ1ZSIgOiAiU0RLPWZhbHNlIiBdLAorICAgICk7CisKK3N1YnN0aXR1dGUoIk1ha2VmaWxlIiwgIk1ha2VmaWxlLmluIiwgXCVzdWJzKTsKK3N1YnN0aXR1dGUoImxvY2FsL01ha2VmaWxlIiwgImxvY2FsL01ha2VmaWxlLmluIiwgXCVzdWJzKTsKKwogbXkgQHByb2dyYW1zID0gcXcKIC9lbmNvZGVfa2V5Y2hhbmdlCiBzbm1wYnVsa2dldApAQCAtMTY1LDI0MCArMTczLDUxIEBACiAvOwogCiBmb3JlYWNoIG15ICRwcm9nTmFtZSAoQHByb2dyYW1zKSB7Ci0KLSAgbXkgJG1ha2VmaWxlX291dCA9ICIkcHJvZ05hbWVcXE1ha2VmaWxlIjsKLSAgbXkgJG1ha2VmaWxlX2luID0gIk1ha2VmaWxlLWFwcHMuaW4iOwotCi0gIG15ICRvdXRkaXIgPSAkY29uZmlnOwotICBteSAkaW50ZGlyID0gJGNvbmZpZzsKLQotICBvcGVuIChNQUtFX09VVCwgIj4kbWFrZWZpbGVfb3V0IikgfHwgZGllICJDYW4ndCBPcGVuICRtYWtlZmlsZV9vdXRcbiI7Ci0gIG9wZW4gKE1BS0VfSU4sICI8JG1ha2VmaWxlX2luIikgfHwgZGllICJDYW4ndCBPcGVuICRtYWtlZmlsZV9pblxuIjsKLQotICBwcmludCAiY3JlYXRpbmcgJG1ha2VmaWxlX291dFxuIjsKLQotICB3aGlsZSAoPE1BS0VfSU4+KQotICB7Ci0gICAgY2hvbXA7Ci0KLSAgICBzL15MSU5LVFlQRT0vTElOS1RZUEU9JGxpbmt0eXBlLzsKLSAgICBzL15QUk9HTkFNRT0vUFJPR05BTUU9JHByb2dOYW1lLzsKLSAgICBzL15DRkc9L0NGRz0kY29uZmlnLzsKLSAgICBzL15PVVRESVI9L09VVERJUj0uXFwkb3V0ZGlyLzsKLSAgICBzL15JTlRESVI9L0lOVERJUj0uXFwkaW50ZGlyLzsKLSAgICBzL15TU0w9LiovU1NMPSRvcGVuc3NsLzsKLQotICAgIHByaW50IE1BS0VfT1VUICRfIC4gIlxuIjsKLSAgfQorICAgICRzdWJzeyJwcmcifSA9IFsgIl5QUk9HTkFNRT0iLCAiUFJPR05BTUU9JHByb2dOYW1lIiBdOworICAgIHN1YnN0aXR1dGUoIiRwcm9nTmFtZS9NYWtlZmlsZSIsICJNYWtlZmlsZS1hcHBzLmluIiwgXCVzdWJzKTsKIH0KIAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgQ3JlYXRlIE1ha2VmaWxlcyBmb3Igc25tcG5ldHN0YXQgZnJvbQotIyBzbm1wbmV0c3RhdFxNYWtlZmlsZS5pbgotIwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLW15IEBwcm9ncmFtcyA9IHF3Ci0vc25tcG5ldHN0YXQKLS87Ci0KLWZvcmVhY2ggbXkgJHByb2dOYW1lIChAcHJvZ3JhbXMpIHsKLQotICBteSAkbWFrZWZpbGVfb3V0ID0gIiRwcm9nTmFtZVxcTWFrZWZpbGUiOwotICBteSAkbWFrZWZpbGVfaW4gPSAiJHByb2dOYW1lXFxNYWtlZmlsZS5pbiI7Ci0KLSAgbXkgJG91dGRpciA9ICRjb25maWc7Ci0gIG15ICRpbnRkaXIgPSAkY29uZmlnOwotCi0gIG9wZW4gKE1BS0VfT1VULCAiPiRtYWtlZmlsZV9vdXQiKSB8fCBkaWUgIkNhbid0IE9wZW4gJG1ha2VmaWxlX291dFxuIjsKLSAgb3BlbiAoTUFLRV9JTiwgIjwkbWFrZWZpbGVfaW4iKSB8fCBkaWUgIkNhbid0IE9wZW4gJG1ha2VmaWxlX2luXG4iOwotCi0gIHByaW50ICJjcmVhdGluZyAkbWFrZWZpbGVfb3V0XG4iOwotCi0gIHdoaWxlICg8TUFLRV9JTj4pCi0gIHsKLSAgICBjaG9tcDsKLQotICAgIHMvXkxJTktUWVBFPS9MSU5LVFlQRT0kbGlua3R5cGUvOwotICAgIHMvXlBST0dOQU1FPS9QUk9HTkFNRT0kcHJvZ05hbWUvOwotICAgIHMvXkNGRz0vQ0ZHPSRjb25maWcvOwotICAgIHMvXk9VVERJUj0vT1VURElSPS5cXCRvdXRkaXIvOwotICAgIHMvXklOVERJUj0vSU5URElSPS5cXCRpbnRkaXIvOwotICAgIHMvXlNTTD0uKi9TU0w9JG9wZW5zc2wvOwotCi0gICAgcHJpbnQgTUFLRV9PVVQgJF8gLiAiXG4iOwotICB9Citmb3JlYWNoIG15ICRwcm9nTmFtZSAoImxpYmFnZW50IiwgImxpYm5ldHNubXB0cmFwZCIsICJsb2NhbCIsCisgICAgICAgICAgICAgICAgICAgICAgIm5ldHNubXBtaWJzIiwgInNubXBkIiwgInNubXB0cmFwZCIsICJzbm1wbmV0c3RhdCIsCisgICAgICAgICAgICAgICAgICAgICAgJGxpbmt0eXBlIGVxICJkeW5hbWljIiA/ICJsaWJzbm1wX2RsbCIgOiAibGlic25tcCIpIHsKKyAgICAkc3Vic3sicHJnIn0gPSBbICJeUFJPR05BTUU9IiwgIlBST0dOQU1FPSRwcm9nTmFtZSIgXTsKKyAgICBzdWJzdGl0dXRlKCIkcHJvZ05hbWUvTWFrZWZpbGUiLCAiJHByb2dOYW1lL01ha2VmaWxlLmluIiwgXCVzdWJzKTsKIH0KIAorbXkgJXN1YnMgPSAoCisgICAgImVudiIgPT4gWyAiXEBFTlZfU0VQQVJBVE9SXEAiLCAiOyIgXQorKTsKIAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgQ3JlYXRlIE1ha2VmaWxlcyBmb3IgbGlicmFyaWVzCi0jIGZyb20gbmFtZVxNYWtlZmlsZS5pbgotIwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLW15IEBwcm9ncmFtcyA9IHF3Ci0vbGliYWdlbnQKLWxpYm5ldHNubXB0cmFwZAotbmV0c25tcG1pYnMKLS87CitzdWJzdGl0dXRlKCIuLi9sb2NhbC9zbm1wY29uZiIsICIuLi9sb2NhbC9zbm1wY29uZi5pbiIsIFwlc3Vicyk7CiAKKworbXkgJXN1YnMgPSAoCisgICAgInZlciIgPT4gWyAiXiNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OLioiLAorICAgICAgICAgICAgICAgIiNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OIFwiJHZlcnNpb25cIiIgXQorICAgICk7CitpZiAoJHByZWZpeCBuZSAiIikgeworICAgICRzdWJzeyJwZngifSA9IFsgIl4jZGVmaW5lIElOU1RBTExfQkFTRS4qIiwgIiNkZWZpbmUgSU5TVEFMTF9CQVNFIFwiJHByZWZpeFwiIiBdOworfQogaWYgKCRsaW5rdHlwZSBlcSAiZHluYW1pYyIpIHsKLSAgcHVzaCAoQHByb2dyYW1zLCAibGlic25tcF9kbGwiKTsKKyAgICAkc3Vic3siZGxsIn0gPSBbICJeLiojdW5kZWYgTkVUU05NUF9VU0VfRExMLioiLCAiI2RlZmluZSBORVRTTk1QX1VTRV9ETEwgMSIgXTsKIH0KLWVsc2UgewotICBwdXNoIChAcHJvZ3JhbXMsICJsaWJzbm1wIik7CitpZiAoJHNkayA9PSAxKSB7CisgICAgJHN1YnN7InNkayJ9ID0gWyAiXi4qI3VuZGVmIEhBVkVfV0lOMzJfUExBVEZPUk1fU0RLLioiLCAiI2RlZmluZSBIQVZFX1dJTjMyX1BMQVRGT1JNX1NESyAxIiBdOworfQoraWYgKCRvcGVuc3NsID09IDEpIHsKKyAgICAkc3Vic3sic3NsIn0gPSBbICJeLiojdW5kZWYgTkVUU05NUF9VU0VfT1BFTlNTTC4qIiwgIiNkZWZpbmUgTkVUU05NUF9VU0VfT1BFTlNTTCAxIiBdOworfSBlbHNlIHsKKyAgICAkc3Vic3sic3NsIn0gPSBbICJeLiojdW5kZWYgTkVUU05NUF9VU0VfSU5URVJOQUxfTUQ1LioiLCAiI2RlZmluZSBORVRTTk1QX1VTRV9JTlRFUk5BTF9NRDUgMSIgXTsKK30KK2lmICgkYl9pcHY2ID09IDEpIHsKKyAgICAkc3Vic3siaXB2NiJ9ID0gWyAiXi4qI3VuZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYuKiIsICIjZGVmaW5lIE5FVFNOTVBfRU5BQkxFX0lQVjYgMSIgXTsKK30KK2lmICgkYl93aW5leHRkbGwgPT0gMSkgeworICAgICRzdWJzeyJ3aW5leHRkbGwifSA9IFsgIl4uKiN1bmRlZiBVU0lOR19XSU5FWFRETExfTU9EVUxFLioiLCAiI2RlZmluZSBVU0lOR19XSU5FWFRETExfTU9EVUxFIDEiIF07CiB9CiAKLWZvcmVhY2ggbXkgJHByb2dOYW1lIChAcHJvZ3JhbXMpIHsKLQotICBteSAkbWFrZWZpbGVfb3V0ID0gIiRwcm9nTmFtZVxcTWFrZWZpbGUiOwotICBteSAkbWFrZWZpbGVfaW4gPSAiJHByb2dOYW1lXFxNYWtlZmlsZS5pbiI7Ci0KLSAgbXkgJG91dGRpciA9ICRjb25maWc7Ci0gIG15ICRpbnRkaXIgPSAkY29uZmlnOwotCi0gIG9wZW4gKE1BS0VfT1VULCAiPiRtYWtlZmlsZV9vdXQiKSB8fCBkaWUgIkNhbid0IE9wZW4gJG1ha2VmaWxlX291dFxuIjsKLSAgb3BlbiAoTUFLRV9JTiwgIjwkbWFrZWZpbGVfaW4iKSB8fCBkaWUgIkNhbid0IE9wZW4gJG1ha2VmaWxlX2luXG4iOwotCi0gIHByaW50ICJjcmVhdGluZyAkbWFrZWZpbGVfb3V0XG4iOwotCi0gIHdoaWxlICg8TUFLRV9JTj4pCi0gIHsKLSAgICBjaG9tcDsKLQotICAgIGlmICgkc2RrID09IDEpIHsKLSAgICAgIHMvXlNESz0vU0RLPXRydWUvOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHMvXlNESz0vU0RLPWZhbHNlLzsKLSAgICB9Ci0KLSAgICBzL15QUk9HTkFNRT0vUFJPR05BTUU9JHByb2dOYW1lLzsKLSAgICBzL15DRkc9L0NGRz0kY29uZmlnLzsKLSAgICBzL15PVVRESVI9L09VVERJUj0uXFwkb3V0ZGlyLzsKLSAgICBzL15JTlRESVI9L0lOVERJUj0uXFwkaW50ZGlyLzsKLSAgICBzL15TU0w9LiovU1NMPSRvcGVuc3NsLzsKLSAgICBwcmludCBNQUtFX09VVCAkXyAuICJcbiI7Ci0gIH0KLX0KLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgQ3JlYXRlIE1ha2VmaWxlcyBmb3IgZGFlbW9ucwotIyBmcm9tIG5hbWVcTWFrZWZpbGUuaW4KLSMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1teSBAcHJvZ3JhbXMgPSBxdwotL3NubXBkCi1zbm1wdHJhcGQKLS87Ci0KLWZvcmVhY2ggbXkgJHByb2dOYW1lIChAcHJvZ3JhbXMpIHsKLQotICBteSAkbWFrZWZpbGVfb3V0ID0gIiRwcm9nTmFtZVxcTWFrZWZpbGUiOwotICBteSAkbWFrZWZpbGVfaW4gPSAiJHByb2dOYW1lXFxNYWtlZmlsZS5pbiI7Ci0KLSAgbXkgJG91dGRpciA9ICRjb25maWc7Ci0gIG15ICRpbnRkaXIgPSAkY29uZmlnOwotCi0gIG9wZW4gKE1BS0VfT1VULCAiPiRtYWtlZmlsZV9vdXQiKSB8fCBkaWUgIkNhbid0IE9wZW4gJG1ha2VmaWxlX291dFxuIjsKLSAgb3BlbiAoTUFLRV9JTiwgIjwkbWFrZWZpbGVfaW4iKSB8fCBkaWUgIkNhbid0IE9wZW4gJG1ha2VmaWxlX2luXG4iOwotCi0gIHByaW50ICJjcmVhdGluZyAkbWFrZWZpbGVfb3V0XG4iOwotCi0gIHdoaWxlICg8TUFLRV9JTj4pCi0gIHsKLSAgICBjaG9tcDsKLQotICAgIGlmICgkc2RrID09IDEpIHsKLSAgICAgIHMvXlNESz0vU0RLPXRydWUvOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHMvXlNESz0vU0RLPWZhbHNlLzsKLSAgICB9Ci0KLSAgICBzL15MSU5LVFlQRT0vTElOS1RZUEU9JGxpbmt0eXBlLzsKLSAgICBzL15QUk9HTkFNRT0vUFJPR05BTUU9JHByb2dOYW1lLzsKLSAgICBzL15DRkc9L0NGRz0kY29uZmlnLzsKLSAgICBzL15PVVRESVI9L09VVERJUj0uXFwkb3V0ZGlyLzsKLSAgICBzL15JTlRESVI9L0lOVERJUj0uXFwkaW50ZGlyLzsKLSAgICBzL15TU0w9LiovU1NMPSRvcGVuc3NsLzsKLQotICAgIHByaW50IE1BS0VfT1VUICRfIC4gIlxuIjsKLSAgfQotfQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIwotIyBDcmVhdGUgTWFrZWZpbGUgZm9yIFBlcmwgc2NyaXB0cyBpbiBsb2NhbAotIyBmcm9tIGxvY2FsXE1ha2VmaWxlLmluCi0jCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi1teSAkbWFrZWZpbGVfb3V0ID0gImxvY2FsXFxNYWtlZmlsZSI7Ci1teSAkbWFrZWZpbGVfaW4gPSAibG9jYWxcXE1ha2VmaWxlLmluIjsKLQotbXkgJG91dGRpciA9ICRjb25maWc7Ci0KLW9wZW4gKE1BS0VfT1VULCAiPiRtYWtlZmlsZV9vdXQiKSB8fCBkaWUgIkNhbid0IE9wZW4gJG1ha2VmaWxlX291dFxuIjsKLW9wZW4gKE1BS0VfSU4sICI8JG1ha2VmaWxlX2luIikgfHwgZGllICJDYW4ndCBPcGVuICRtYWtlZmlsZV9pblxuIjsKLQotcHJpbnQgImNyZWF0aW5nICRtYWtlZmlsZV9vdXRcbiI7Ci0KLXdoaWxlICg8TUFLRV9JTj4pCi17Ci0gIGNob21wOwotCi0gIHMvXk9VVERJUj0vT1VURElSPS5cXCRvdXRkaXIvOwotICBzL15QUkVGSVg9L1BSRUZJWD0kcHJlZml4LzsKLSAgcy9eUFJFRklYX0RPUz0vUFJFRklYX0RPUz0kcHJlZml4ZG9zLzsKLQotICBwcmludCBNQUtFX09VVCAkXyAuICJcbiI7Ci19Ci0KLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgQ3JlYXRlIG5ldC1zbm1wLWNvbmZpZy5oCi0jCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotewotICBteSAkZmlsZV9vdXQgPSAibmV0LXNubXBcXG5ldC1zbm1wLWNvbmZpZy5oIjsKLSAgbXkgJGZpbGVfaW4gPSAibmV0LXNubXBcXG5ldC1zbm1wLWNvbmZpZy5oLmluIjsKLQotICBvcGVuIChGSUxFX09VVCwgIj4kZmlsZV9vdXQiKSB8fCBkaWUgIkNhbid0IE9wZW4gJGZpbGVfb3V0XG4iOwotICBvcGVuIChGSUxFX0lOLCAiPCRmaWxlX2luIikgfHwgZGllICJDYW4ndCBPcGVuICRmaWxlX2luXG4iOwotCi0gIHByaW50ICJjcmVhdGluZyAkZmlsZV9vdXRcbiI7Ci0KLSAgd2hpbGUgKDxGSUxFX0lOPikKLSAgewotICAgIGNob21wOwotICAgIHMvXiNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OLiovI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gXCIkdmVyc2lvblwiLzsKLSAgICBpZiAoJHByZWZpeCBuZSAiIikgewotICAgICAgcy9eI2RlZmluZSBJTlNUQUxMX0JBU0UuKi8jZGVmaW5lIElOU1RBTExfQkFTRSBcIiRwcmVmaXhcIi87Ci0gICAgfQotICAgIGlmICgkbGlua3R5cGUgZXEgImR5bmFtaWMiKSB7Ci0gICAgICBzL14uKiN1bmRlZiBORVRTTk1QX1VTRV9ETEwuKi8jZGVmaW5lIE5FVFNOTVBfVVNFX0RMTCAxLzsKLSAgICB9Ci0gICAgaWYgKCRzZGsgPT0gMSkgewotICAgICAgcy9eLiojdW5kZWYgSEFWRV9XSU4zMl9QTEFURk9STV9TREsuKi8jZGVmaW5lIEhBVkVfV0lOMzJfUExBVEZPUk1fU0RLIDEvOwotICAgIH0KLSAgICBpZiAoJG9wZW5zc2wgPT0gMSkgewotICAgICAgcy9eLiojdW5kZWYgTkVUU05NUF9VU0VfT1BFTlNTTC4qLyNkZWZpbmUgTkVUU05NUF9VU0VfT1BFTlNTTCAxLzsKLSAgICB9Ci0gICAgaWYgKCRiX2lwdjYgPT0gMSkgewotICAgICAgcy9eLiojdW5kZWYgTkVUU05NUF9FTkFCTEVfSVBWNi4qLyNkZWZpbmUgTkVUU05NUF9FTkFCTEVfSVBWNiAxLzsKLSAgICB9Ci0gICAgaWYgKCRiX3dpbmV4dGRsbCA9PSAxKSB7Ci0gICAgICBzL14uKiN1bmRlZiBVU0lOR19XSU5FWFRETExfTU9EVUxFLiovI2RlZmluZSBVU0lOR19XSU5FWFRETExfTU9EVUxFIDEvOwotICAgIH0KLQotICAgIHByaW50IEZJTEVfT1VUICRfIC4gIlxuIjsKLSAgfQotfQotCitzdWJzdGl0dXRlKCJuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCIsICJuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiIsCisgICAgICAgICAgIFwlc3Vicyk7CiAKIHByaW50IHFxLwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS93aW4zMi9NYWtlZmlsZS1hcHBzLmluIGIvd2luMzIvTWFrZWZpbGUtYXBwcy5pbgppbmRleCAyMTEzYWRlLi5iY2ZiMjZlIDEwMDY0NAotLS0gYS93aW4zMi9NYWtlZmlsZS1hcHBzLmluCisrKyBiL3dpbjMyL01ha2VmaWxlLWFwcHMuaW4KQEAgLTMsNyArMyw2IEBACiBPVVRESVI9CiBJTlRESVI9CiBMSU5LVFlQRT0KLVNTTD0KIAogIyBTZXQgdG8gMSB0byBhbGxvdyB0aGUgYnVpbGRpbmcgdXNpbmcgdGhlIERMTCB2ZXJzaW9uIG9mIFNOTVBMSUIuCiBBTExPV19ETEw9MQpkaWZmIC0tZ2l0IGEvd2luMzIvYnVpbGQucGwgYi93aW4zMi9idWlsZC5wbAppbmRleCBjMTkxZjI4Li42YWFhNTdmIDEwMDY0NAotLS0gYS93aW4zMi9idWlsZC5wbAorKysgYi93aW4zMi9idWlsZC5wbApAQCAtNSwzMiArNSwzNiBAQAogIyBNYXJjaCAxMnRoLCAyMDA0CiAjCiB1c2Ugc3RyaWN0OwotbXkgJG9wZW5zc2wgPSAiZGlzYWJsZWQiOwotbXkgJGJfaXB2NiA9ICJkaXNhYmxlZCI7Ci1teSAkYl93aW5leHRkbGwgPSAiZGlzYWJsZWQiOwotbXkgJHNkayA9ICJkaXNhYmxlZCI7Cit1c2Ugd2FybmluZ3M7Cit1c2UgQ3dkICdhYnNfcGF0aCc7Cit1c2UgRmlsZTo6QmFzZW5hbWU7Cit1c2UgY29uc3RhbnQgZmFsc2UgPT4gMDsKK3VzZSBjb25zdGFudCB0cnVlID0+IDE7CitteSAkb3BlbnNzbCA9IGZhbHNlOworbXkgJGRlZmF1bHRfb3BlbnNzbGRpciA9ICRFTlZ7VEFSR0VUX0NQVX0gZXEgIng2NCIgPyAiQzpcXE9wZW5TU0wtV2luNjQiIDogIkM6XFxPcGVuU1NMLVdpbjMyIjsKK215ICRkZWZhdWx0X29wZW5zc2xpbmNkaXIgPSAkZGVmYXVsdF9vcGVuc3NsZGlyIC4gIlxcaW5jbHVkZSI7CitteSAkb3BlbnNzbGluY2RpciA9ICRkZWZhdWx0X29wZW5zc2xpbmNkaXI7CitteSAkZGVmYXVsdF9vcGVuc3NsbGliZGlyID0gJGRlZmF1bHRfb3BlbnNzbGRpciAuICJcXGxpYlxcVkMiOworbXkgJG9wZW5zc2xsaWJkaXIgPSAkZGVmYXVsdF9vcGVuc3NsbGliZGlyOworbXkgJGJfaXB2NiA9IGZhbHNlOworbXkgJGJfd2luZXh0ZGxsID0gZmFsc2U7CitteSAkc2RrID0gZmFsc2U7CiBteSAkZGVmYXVsdF9pbnN0YWxsX2Jhc2UgPSAiYzovdXNyIjsKIG15ICRpbnN0YWxsX2Jhc2UgPSAkZGVmYXVsdF9pbnN0YWxsX2Jhc2U7Ci1teSAkaW5zdGFsbCA9ICJlbmFibGVkIjsKLW15ICRpbnN0YWxsX2RldmVsID0gImRpc2FibGVkIjsKLW15ICRwZXJsID0gImRpc2FibGVkIjsKLW15ICRwZXJsX2luc3RhbGwgPSAiZGlzYWJsZWQiOwotbXkgJGxvZ2dpbmcgPSAiZW5hYmxlZCI7Ci1teSAkZGVidWcgPSAiZGlzYWJsZWQiOworbXkgJGluc3RhbGwgPSB0cnVlOworbXkgJGluc3RhbGxfZGV2ZWwgPSBmYWxzZTsKK215ICRwZXJsID0gZmFsc2U7CitteSAkcGVybF9pbnN0YWxsID0gZmFsc2U7CitteSAkbG9nZ2luZyA9IHRydWU7CitteSAkZGVidWcgPSBmYWxzZTsKIG15ICRjb25maWdPcHRzID0gIiI7Ci1teSAkbGlua3R5cGUgPSAic3RhdGljIjsKK215ICRsaW5rX2R5bmFtaWMgPSBmYWxzZTsKIG15ICRvcHRpb247CiAKLSMgUHJlcGVuZCB3aW4zMlwgaWYgcnVubmluZyBmcm9tIG1haW4gZGlyZWN0b3J5Ci1teSAkY3VycmVudF9wd2QgPSBgJUNPTVNQRUMlIC9jIGNkYDsKLWNob21wICRjdXJyZW50X3B3ZDsKLWlmICghICgkY3VycmVudF9wd2QgPX4gL1xcd2luMzIkLykpIHsKLSAgY2hkaXIgKCJ3aW4zMiIpOwotICAkY3VycmVudF9wd2QgPSBgJUNPTVNQRUMlIC9jIGNkYDsKLSAgY2hvbXAgJGN1cnJlbnRfcHdkOwotfQorIyBQYXRoIG9mIHRoaXMgc2NyaXB0IChzb3VyY2UgdHJlZSBwYXRoICsgIndpbjMyIikuCitteSAkY3VycmVudF9wd2QgPSBkaXJuYW1lKGFic19wYXRoKCQwKSk7CiAKLWlmICggLWQgJEVOVntNU1ZDRGlyfSB8fCAtZCAkRU5We1ZDSU5TVEFMTERJUn0pIHsKK2lmICggLWQgJEVOVntNU1ZDRGlyfSB8fCAtZCAkRU5We1ZDSU5TVEFMTERJUn0gfHwgZGVmaW5lZCgkRU5We1RBUkdFVF9DUFV9KSApIHsKIH0KIGVsc2UgewogICBwcmludCAiXG5QbGVhc2UgcnVuIFZDVkFSUzMyLkJBVCBmaXJzdCB0byBzZXQgdXAgdGhlIFZpc3VhbCBTdHVkaW8gYnVpbGRcbiIgLgpAQCAtNDIsMTMyICs0Niw4OSBAQAogd2hpbGUgKDEpIHsKICAgcHJpbnQgIlxuXG5OZXQtU05NUCBidWlsZCBhbmQgaW5zdGFsbCBvcHRpb25zXG4iOwogICBwcmludCAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iOwotICBwcmludCAiMS4gIE9wZW5TU0wgc3VwcG9ydDogICAgICAgICAgICAgICAgIiAuICRvcGVuc3NsLiAiXG4iOwotICBwcmludCAiMi4gIFBsYXRmb3JtIFNESyBzdXBwb3J0OiAgICAgICAgICAgIiAuICRzZGsgLiAiXG4iOworICBwcmludCAiMS4gIE9wZW5TU0wgc3VwcG9ydDogICAgICAgICAgICAgICAgIiAuICgkb3BlbnNzbCA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpLiAiXG4iOworICBwcmludCAiMi4gIE9wZW5TU0wgaW5jbHVkZSBkaXJlY3Rvcnk6ICAgICAgIiAuICRvcGVuc3NsaW5jZGlyLiAiXG4iOworICBwcmludCAiMy4gIE9wZW5TU0wgbGlicmFyeSBkaXJlY3RvcjogICAgICAgIiAuICRvcGVuc3NsbGliZGlyLiAiXG4iOworICBwcmludCAiNC4gIFBsYXRmb3JtIFNESyBzdXBwb3J0OiAgICAgICAgICAgIiAuICgkc2RrID8gImVuYWJsZWQiIDogImRpc2FibGVkIikgLiAiXG4iOwogICBwcmludCAiXG4iOwotICBwcmludCAiMy4gIEluc3RhbGwgcGF0aDogICAgICAgICAgICAgICAgICAgIiAuICRpbnN0YWxsX2Jhc2UgLiAiXG4iOwotICBwcmludCAiNC4gIEluc3RhbGwgYWZ0ZXIgYnVpbGQ6ICAgICAgICAgICAgIiAuICRpbnN0YWxsIC4gIlxuIjsKKyAgcHJpbnQgIjUuICBJbnN0YWxsIHBhdGg6ICAgICAgICAgICAgICAgICAgICIgLiAkaW5zdGFsbF9iYXNlIC4gIlxuIjsKKyAgcHJpbnQgIjYuICBJbnN0YWxsIGFmdGVyIGJ1aWxkOiAgICAgICAgICAgICIgLiAoJGluc3RhbGwgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKSAuICJcbiI7CiAgIHByaW50ICJcbiI7Ci0gIHByaW50ICI1LiAgUGVybCBtb2R1bGVzOiAgICAgICAgICAgICAgICAgICAiIC4gJHBlcmwgLiAiXG4iOwotICBwcmludCAiNi4gIEluc3RhbGwgcGVybCBtb2R1bGVzOiAgICAgICAgICAgIiAuICRwZXJsX2luc3RhbGwgLiAiXG4iOworICBwcmludCAiNy4gIFBlcmwgbW9kdWxlczogICAgICAgICAgICAgICAgICAgIiAuICgkcGVybCA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpIC4gIlxuIjsKKyAgcHJpbnQgIjguICBJbnN0YWxsIHBlcmwgbW9kdWxlczogICAgICAgICAgICIgLiAoJHBlcmxfaW5zdGFsbCA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpIC4gIlxuIjsKICAgcHJpbnQgIlxuIjsKLSAgcHJpbnQgIjcuICBRdWlldCBidWlsZCAobG9nZ2VkKTogICAgICAgICAgICIgLiAkbG9nZ2luZyAuICJcbiI7Ci0gIHByaW50ICI4LiAgRGVidWcgbW9kZTogICAgICAgICAgICAgICAgICAgICAiIC4gJGRlYnVnIC4gIlxuIjsKKyAgcHJpbnQgIjkuICBRdWlldCBidWlsZCAobG9nZ2VkKTogICAgICAgICAgICIgLiAoJGxvZ2dpbmcgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKSAuICJcbiI7CisgIHByaW50ICIxMC4gRGVidWcgbW9kZTogICAgICAgICAgICAgICAgICAgICAiIC4gKCRkZWJ1ZyA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpIC4gIlxuIjsKICAgcHJpbnQgIlxuIjsKLSAgcHJpbnQgIjkuICBJUHY2IHRyYW5zcG9ydHMgKHJlcXVpcmVzIFNESyk6ICIgLiAkYl9pcHY2IC4gIlxuIjsKLSAgcHJpbnQgIjEwLiB3aW5FeHRETEwgYWdlbnQgKHJlcXVpcmVzIFNESyk6ICIgLiAkYl93aW5leHRkbGwgLiAiXG4iOworICBwcmludCAiMTEuIElQdjYgdHJhbnNwb3J0cyAocmVxdWlyZXMgU0RLKTogIiAuICgkYl9pcHY2ID8gImVuYWJsZWQiIDogImRpc2FibGVkIikgLiAiXG4iOworICBwcmludCAiMTIuIHdpbkV4dERMTCBhZ2VudCAocmVxdWlyZXMgU0RLKTogIiAuICgkYl93aW5leHRkbGwgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKSAuICJcbiI7CiAgIHByaW50ICJcbiI7Ci0gIHByaW50ICIxMS4gTGluayB0eXBlOiAgICAgICAgICAgICAgICAgICAgICAiIC4gJGxpbmt0eXBlIC4gIlxuIjsKKyAgcHJpbnQgIjEzLiBMaW5rIHR5cGU6ICAgICAgICAgICAgICAgICAgICAgICIgLiAoJGxpbmtfZHluYW1pYyA/ICJkeW5hbWljIiA6ICJzdGF0aWMiKSAuICJcbiI7CiAgIHByaW50ICJcbiI7Ci0gIHByaW50ICIxMi4gSW5zdGFsbCBkZXZlbG9wbWVudCBmaWxlcyAgICAgICAiIC4gJGluc3RhbGxfZGV2ZWwgLiAiXG4iOworICBwcmludCAiMTQuIEluc3RhbGwgZGV2ZWxvcG1lbnQgZmlsZXMgICAgICAgIiAuICgkaW5zdGFsbF9kZXZlbCA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpIC4gIlxuIjsKICAgcHJpbnQgIlxuRi4gIEZpbmlzaGVkIC0gc3RhcnQgYnVpbGRcbiI7CiAgIHByaW50ICJRLiAgUXVpdCAtIGFib3J0IGJ1aWxkXG5cbiI7CiAgIHByaW50ICJTZWxlY3Qgb3B0aW9uIHRvIHNldCAvIHRvZ2dsZTogIjsKIAogICBjaG9tcCAoJG9wdGlvbiA9IDw+KTsKICAgaWYgKCRvcHRpb24gZXEgIjEiKSB7Ci0gICAgaWYgKCRvcGVuc3NsIGVxICJlbmFibGVkIikgewotICAgICAgJG9wZW5zc2wgPSAiZGlzYWJsZWQiOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICRvcGVuc3NsID0gImVuYWJsZWQiOwotICAgIH0KKyAgICAkb3BlbnNzbCA9ICEkb3BlbnNzbDsKICAgfQogICBlbHNpZiAoJG9wdGlvbiBlcSAiMiIpIHsKLSAgICBpZiAoJHNkayBlcSAiZW5hYmxlZCIpIHsKLSAgICAgICRzZGsgPSAiZGlzYWJsZWQiOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICRzZGsgPSAiZW5hYmxlZCI7Ci0gICAgfQotICB9Ci0gIGVsc2lmICgkb3B0aW9uIGVxICI5IikgewotICAgIGlmICgkYl9pcHY2IGVxICJlbmFibGVkIikgewotICAgICAgJGJfaXB2NiA9ICJkaXNhYmxlZCI7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgJGJfaXB2NiA9ICJlbmFibGVkIjsKLSAgICAgIGlmICgkc2RrID0gImRpc2FibGVkIikgewotICAgICAgICBwcmludCAiXG5cbiogU0RLIHJlcXVpcmVkIGZvciBJUHY2IGFuZCBoYXMgYmVlbiBhdXRvbWF0aWNhbGx5IGVuYWJsZWQiOwotICAgICAgICAkc2RrID0gImVuYWJsZWQiOwotICAgICAgfQotICAgIH0KLSAgfQotICBlbHNpZiAoJG9wdGlvbiBlcSAiMTAiKSB7Ci0gICAgaWYgKCRiX3dpbmV4dGRsbCBlcSAiZW5hYmxlZCIpIHsKLSAgICAgICRiX3dpbmV4dGRsbCA9ICJkaXNhYmxlZCI7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgJGJfd2luZXh0ZGxsID0gImVuYWJsZWQiOwotICAgICAgaWYgKCRzZGsgPSAiZGlzYWJsZWQiKSB7Ci0gICAgICAgIHByaW50ICJcblxuKiBTREsgcmVxdWlyZWQgZm9yIElQdjYgYW5kIGhhcyBiZWVuIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCI7Ci0gICAgICAgICRzZGsgPSAiZW5hYmxlZCI7Ci0gICAgICB9Ci0gICAgfQorICAgIHByaW50ICJQbGVhc2UgZW50ZXIgdGhlIE9wZW5TU0wgaW5jbHVkZSBkaXJlY3RvcnkgWyRvcGVuc3NsaW5jZGlyXTogIjsKKyAgICBjaG9tcCAoJG9wZW5zc2xpbmNkaXIgPSA8Pik7CisgICAgJG9wZW5zc2xpbmNkaXIgPX4gcy9cXC9cLy9nOworICAgICRvcGVuc3NsaW5jZGlyID0gJGRlZmF1bHRfb3BlbnNzbGluY2RpciBpZiAoJG9wZW5zc2xpbmNkaXIgZXEgIiIpOwogICB9CiAgIGVsc2lmICgkb3B0aW9uIGVxICIzIikgewotICAgIHByaW50ICJQbGVhc2UgZW50ZXIgdGhlIG5ldyBpbnN0YWxsIHBhdGggWyRkZWZhdWx0X2luc3RhbGxfYmFzZV06ICI7Ci0gICAgY2hvbXAgKCRpbnN0YWxsX2Jhc2UgPSA8Pik7Ci0gICAgaWYgKCRpbnN0YWxsX2Jhc2UgZXEgIiIpIHsKLSAgICAgICRpbnN0YWxsX2Jhc2UgPSAkZGVmYXVsdF9pbnN0YWxsX2Jhc2U7Ci0gICAgfQotICAgICRpbnN0YWxsX2Jhc2UgPX4gcy9cXC9cLy9nOworICAgIHByaW50ICJQbGVhc2UgZW50ZXIgdGhlIE9wZW5TU0wgbGlicmFyeSBkaXJlY3RvcnkgWyRvcGVuc3NsbGliZGlyXTogIjsKKyAgICBjaG9tcCAoJG9wZW5zc2xsaWJkaXIgPSA8Pik7CisgICAgJG9wZW5zc2xsaWJkaXIgPX4gcy9cXC9cLy9nOworICAgICRvcGVuc3NsbGliZGlyID0gJGRlZmF1bHRfb3BlbnNzbGxpYmRpciBpZiAoJG9wZW5zc2xsaWJkaXIgZXEgIiIpOwogICB9CiAgIGVsc2lmICgkb3B0aW9uIGVxICI0IikgewotICAgIGlmICgkaW5zdGFsbCBlcSAiZW5hYmxlZCIpIHsKLSAgICAgICRpbnN0YWxsID0gImRpc2FibGVkIjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAkaW5zdGFsbCA9ICJlbmFibGVkIjsKKyAgICAkc2RrID0gISRzZGs7CisgIH0KKyAgZWxzaWYgKCRvcHRpb24gZXEgIjExIikgeworICAgICRiX2lwdjYgPSAhJGJfaXB2NjsKKyAgICBpZiAoJGJfaXB2NiAmJiAhJHNkaykgeworICAgICAgcHJpbnQgIlxuXG4qIFNESyByZXF1aXJlZCBmb3IgSVB2NiBhbmQgaGFzIGJlZW4gYXV0b21hdGljYWxseSBlbmFibGVkIjsKKyAgICAgICRzZGsgPSB0cnVlOwogICAgIH0KICAgfQogICBlbHNpZiAoJG9wdGlvbiBlcSAiMTIiKSB7Ci0gICAgaWYgKCRpbnN0YWxsX2RldmVsIGVxICJlbmFibGVkIikgewotICAgICAgJGluc3RhbGxfZGV2ZWwgPSAiZGlzYWJsZWQiOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICRpbnN0YWxsX2RldmVsID0gImVuYWJsZWQiOworICAgICRiX3dpbmV4dGRsbCA9ICEkYl93aW5leHRkbGw7CisgICAgaWYgKCRiX3dpbmV4dGRsbCAmJiAhJHNkaykgeworICAgICAgcHJpbnQgIlxuXG4qIFNESyByZXF1aXJlZCBmb3IgSVB2NiBhbmQgaGFzIGJlZW4gYXV0b21hdGljYWxseSBlbmFibGVkIjsKKyAgICAgICRzZGsgPSB0cnVlOwogICAgIH0KICAgfQogICBlbHNpZiAoJG9wdGlvbiBlcSAiNSIpIHsKLSAgICBpZiAoJHBlcmwgZXEgImVuYWJsZWQiKSB7Ci0gICAgICAkcGVybCA9ICJkaXNhYmxlZCI7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgJHBlcmwgPSAiZW5hYmxlZCI7Ci0gICAgfQorICAgIHByaW50ICJQbGVhc2UgZW50ZXIgdGhlIG5ldyBpbnN0YWxsIHBhdGggWyRkZWZhdWx0X2luc3RhbGxfYmFzZV06ICI7CisgICAgY2hvbXAgKCRpbnN0YWxsX2Jhc2UgPSA8Pik7CisgICAgJGluc3RhbGxfYmFzZSA9fiBzL1xcL1wvL2c7CisgICAgJGluc3RhbGxfYmFzZSA9ICRkZWZhdWx0X2luc3RhbGxfYmFzZSBpZiAoJGluc3RhbGxfYmFzZSBlcSAiIik7CiAgIH0KICAgZWxzaWYgKCRvcHRpb24gZXEgIjYiKSB7Ci0gICAgaWYgKCRwZXJsX2luc3RhbGwgZXEgImVuYWJsZWQiKSB7Ci0gICAgICAkcGVybF9pbnN0YWxsID0gImRpc2FibGVkIjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAkcGVybF9pbnN0YWxsID0gImVuYWJsZWQiOwotICAgIH0KKyAgICAkaW5zdGFsbCA9ICEkaW5zdGFsbDsKKyAgfQorICBlbHNpZiAoJG9wdGlvbiBlcSAiMTQiKSB7CisgICAgJGluc3RhbGxfZGV2ZWwgPSAhJGluc3RhbGxfZGV2ZWw7CiAgIH0KICAgZWxzaWYgKCRvcHRpb24gZXEgIjciKSB7Ci0gICAgaWYgKCRsb2dnaW5nIGVxICJlbmFibGVkIikgewotICAgICAgJGxvZ2dpbmcgPSAiZGlzYWJsZWQiOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICRsb2dnaW5nID0gImVuYWJsZWQiOwotICAgIH0KKyAgICAkcGVybCA9ICEkcGVybDsKICAgfQogICBlbHNpZiAoJG9wdGlvbiBlcSAiOCIpIHsKLSAgICBpZiAoJGRlYnVnIGVxICJlbmFibGVkIikgewotICAgICAgJGRlYnVnID0gImRpc2FibGVkIjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAkZGVidWcgPSAiZW5hYmxlZCI7Ci0gICAgfQorICAgICRwZXJsX2luc3RhbGwgPSAhJHBlcmxfaW5zdGFsbDsKICAgfQotICBlbHNpZiAoJG9wdGlvbiBlcSAiMTEiKSB7Ci0gICAgaWYgKCRsaW5rdHlwZSBlcSAic3RhdGljIikgewotICAgICAgJGxpbmt0eXBlID0gImR5bmFtaWMiOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICRsaW5rdHlwZSA9ICJzdGF0aWMiOwotICAgIH0KKyAgZWxzaWYgKCRvcHRpb24gZXEgIjkiKSB7CisgICAgJGxvZ2dpbmcgPSAhJGxvZ2dpbmc7CisgIH0KKyAgZWxzaWYgKCRvcHRpb24gZXEgIjEwIikgeworICAgICRkZWJ1ZyA9ICEkZGVidWc7CisgIH0KKyAgZWxzaWYgKCRvcHRpb24gZXEgIjEzIikgeworICAgICRsaW5rX2R5bmFtaWMgPSAhJGxpbmtfZHluYW1pYzsKICAgfQogICBlbHNpZiAobGMoJG9wdGlvbikgZXEgImYiKSB7CiAgICAgbGFzdDsKQEAgLTE3NywxNSArMTM4LDE2IEBACiAgIH0KIH0KIAotJGNvbmZpZ09wdHMgLj0gJG9wZW5zc2wgZXEgImVuYWJsZWQiID8gIi0td2l0aC1zc2wiIDogIiI7CitteSAkbGlua3R5cGUgPSAkbGlua19keW5hbWljID8gImR5bmFtaWMiIDogInN0YXRpYyI7CiskY29uZmlnT3B0cyAuPSAkb3BlbnNzbCA/ICItLXdpdGgtc3NsIiA6ICIiOwogJGNvbmZpZ09wdHMgLj0gIiAiOwotJGNvbmZpZ09wdHMgLj0gJHNkayBlcSAiZW5hYmxlZCIgPyAiLS13aXRoLXNkayIgOiAiIjsKKyRjb25maWdPcHRzIC49ICRzZGsgPyAiLS13aXRoLXNkayIgOiAiIjsKICRjb25maWdPcHRzIC49ICIgIjsKLSRjb25maWdPcHRzIC49ICRiX2lwdjYgZXEgImVuYWJsZWQiID8gIi0td2l0aC1pcHY2IiA6ICIiOworJGNvbmZpZ09wdHMgLj0gJGJfaXB2NiA/ICItLXdpdGgtaXB2NiIgOiAiIjsKICRjb25maWdPcHRzIC49ICIgIjsKLSRjb25maWdPcHRzIC49ICRiX3dpbmV4dGRsbCBlcSAiZW5hYmxlZCIgPyAiLS13aXRoLXdpbmV4dGRsbCIgOiAiIjsKKyRjb25maWdPcHRzIC49ICRiX3dpbmV4dGRsbCA/ICItLXdpdGgtd2luZXh0ZGxsIiA6ICIiOwogJGNvbmZpZ09wdHMgLj0gIiAiOwotJGNvbmZpZ09wdHMgLj0gJGRlYnVnIGVxICJlbmFibGVkIiA/ICItLWNvbmZpZz1kZWJ1ZyIgOiAiLS1jb25maWc9cmVsZWFzZSI7CiskY29uZmlnT3B0cyAuPSAkZGVidWcgPyAiLS1jb25maWc9ZGVidWciIDogIi0tY29uZmlnPXJlbGVhc2UiOwogCiAjIFNldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKIApAQCAtMTkzLDE0NCArMTU1LDk0IEBACiAkRU5We05PX0VYVEVSTkFMX0RFUFN9PSIxIjsKIAogIyBTZXQgUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBzbyBQZXJsIG1ha2UgdGVzdHMgY2FuIGxvY2F0ZSB0aGUgRExMCi0kRU5We1BBVEh9ID0gIiRjdXJyZW50X3B3ZFxcYmluXFwiIC4gKCRkZWJ1ZyBlcSAiZW5hYmxlZCIgPyAiZGVidWciIDogInJlbGVhc2UiICkgLiAiOyRFTlZ7UEFUSH0iOworJEVOVntQQVRIfSA9ICIkY3VycmVudF9wd2RcXGJpblxcIiAuICgkZGVidWcgPyAiZGVidWciIDogInJlbGVhc2UiICkgLiAiOyRFTlZ7UEFUSH0iOworCiskRU5We0lOQ0xVREV9IC49ICI7JG9wZW5zc2xpbmNkaXIiOworJEVOVntMSUJ9ICAgICAuPSAiOyRvcGVuc3NsbGliZGlyIjsKIAogIyBTZXQgTUlCRElSUyBlbnZpcm9ubWVudCB2YXJpYWJsZSBzbyBQZXJsIG1ha2UgdGVzdHMgY2FuIGxvY2F0ZSB0aGUgbWlicwotbXkgJHRlbXBfbWliZGlyID0gIiRjdXJyZW50X3B3ZC8uLi9taWJzIjsKLSR0ZW1wX21pYmRpciA9fiBzL1xcL1wvL2c7Ci0kRU5We01JQkRJUlN9PSR0ZW1wX21pYmRpcjsKKyRFTlZ7TUlCRElSU30gPSBkaXJuYW1lKCRjdXJyZW50X3B3ZCkgLiAiL21pYnMiOwogCiAjIFNldCBTTk1QQ09ORlBBVEggZW52aXJvbm1lbnQgdmFyaWFibGUgc28gUGVybCBjb25mLnQgdGVzdCBjYW4gbG9jYXRlCiAjIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzLgogIyBTZWUgdGhlIG5vdGUgYWJvdXQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluIHRoZSBXaW4zMiBzZWN0aW9uIG9mCiAjIHBlcmwvU05NUC9SRUFETUUgZm9yIGRldGFpbHMgb24gd2h5IHRoaXMgaXMgbmVlZGVkLgotJEVOVntTTk1QQ09ORlBBVEh9PSJ0IjskRU5We1NOTVBDT05GUEFUSH07CiskRU5We1NOTVBDT05GUEFUSH09InQiOwogCiBwcmludCAiXG5CdWlsZGluZy4uLlxuIjsKIAotaWYgKCRsb2dnaW5nIGVxICJlbmFibGVkIikgewotICBwcmludCAiXG5DcmVhdGluZyAqLm91dCBsb2cgZmlsZXMuXG5cbiI7CitwcmludCAiXG5DcmVhdGluZyAqLm91dCBsb2cgZmlsZXMuXG5cbiI7CisKK3ByaW50ICJEZWxldGluZyBvbGQgbG9nIGZpbGVzLi4uXG4iOworc3lzdGVtKCJkZWwgKi5vdXQiIC4gKCRsb2dnaW5nID8gIiA+IE5VTDogMj4mMSIgOiAiIikpOworCisjIERlbGV0ZSBuZXQtc25tcC1jb25maWcuaCBmcm9tIG1haW4gaW5jbHVkZSBmb2xkZXIganVzdCBpbiBjYXNlIGl0IHdhcyBjcmVhdGVkIGJ5IGEgQ3lnd2luIG9yIE1pbkdXIGJ1aWxkCit1bmxpbmsgIi4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgiOwordW5saW5rICIuLi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcF90cmFuc3BvcnRfaW5pdHMuaCI7CisKK3ByaW50ICJSdW5uaW5nIENvbmZpZ3VyZS4uLlxuIjsKK3N5c3RlbSgicGVybCBDb25maWd1cmUgJGNvbmZpZ09wdHMgLS1saW5rdHlwZT0kbGlua3R5cGUgLS1wcmVmaXg9XCIkaW5zdGFsbF9iYXNlXCIiIC4gKCRsb2dnaW5nID8gIiA+IGNvbmZpZ3VyZS5vdXQgMj4mMSIgOiAiIikpID09IDAgfHwgZGllICgkbG9nZ2luZyA/ICJCdWlsZCBlcnJvciAoc2VlIGNvbmZpZ3VyZS5vdXQpIiA6ICJCdWlsZCBlcnJvciAoc2VlIGFib3ZlKSIpOworCitwcmludCAiQ2xlYW5pbmcuLi5cbiI7CitzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gY2xlYW4iIC4gKCRsb2dnaW5nID8gIiA+IGNsZWFuLm91dCAyPiYxIiA6ICIiKSkgPT0gMCB8fCBkaWUgKCRsb2dnaW5nID8gIkJ1aWxkIGVycm9yIChzZWUgY2xlYW4ub3V0KSIgOiAiQnVpbGQgZXJyb3IgKHNlZSBhYm92ZSkiKTsKKworcHJpbnQgIkJ1aWxkaW5nIG1haW4gcGFja2FnZS4uLlxuIjsKK3N5c3RlbSgibm1ha2UgL25vbG9nbyIgLiAoJGxvZ2dpbmcgPyAiID4gbWFrZS5vdXQgMj4mMSIgOiAiIikpID09IDAgfHwgZGllICgkbG9nZ2luZyA/ICJCdWlsZCBlcnJvciAoc2VlIG1ha2Uub3V0KSIgOiAiQnVpbGQgZXJyb3IgKHNlZSBhYm92ZSkiKTsKKworaWYgKCRwZXJsKSB7CisgIGlmICghJGxpbmtfZHluYW1pYykgeworICAgIHByaW50ICJSdW5uaW5nIENvbmZpZ3VyZSBmb3IgRExMLi4uXG4iOworICAgIHN5c3RlbSgicGVybCBDb25maWd1cmUgJGNvbmZpZ09wdHMgLS1saW5rdHlwZT1keW5hbWljIC0tcHJlZml4PVwiJGluc3RhbGxfYmFzZVwiIiAuICgkbG9nZ2luZyA/ICIgPiBwZXJsY29uZmlndXJlLm91dCAyPiYxIiA6ICIiKSkgPT0gMCB8fCBkaWUgKCRsb2dnaW5nID8gIkJ1aWxkIGVycm9yIChzZWUgcGVybGNvbmZpZ3VyZS5vdXQpIiA6ICJCdWlsZCBlcnJvciAoc2VlIGFib3ZlKSIpOworCisgICAgcHJpbnQgIkNsZWFuaW5nIGxpYnJhcmllcy4uLlxuIjsKKyAgICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gbGlic19jbGVhbiIgLiAoJGxvZ2dpbmcgPyAiID4+IGNsZWFuLm91dCAyPiYxIiA6ICIiKSkgPT0gMCB8fCBkaWUgKCRsb2dnaW5nID8gIkJ1aWxkIGVycm9yIChzZWUgY2xlYW4ub3V0KSIgOiAiQnVpbGQgZXJyb3IgKHNlZSBhYm92ZSkiKTsKKworICAgIHByaW50ICJCdWlsZGluZyBETEwgbGlicmFyaWVzLi4uXG4iOworICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBsaWJzIiAuICgkbG9nZ2luZyA/ICIgPiBkbGwub3V0IDI+JjEiIDogIiIpKSA9PSAwIHx8IGRpZSAoJGxvZ2dpbmcgPyAiQnVpbGQgZXJyb3IgKHNlZSBkbGwub3V0KSIgOiAiQnVpbGQgZXJyb3IgKHNlZSBhYm92ZSkiKTsKKyAgfQorCisgIHByaW50ICJDbGVhbmluZyBQZXJsLi4uLlxuIjsKKyAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIHBlcmxfY2xlYW4iIC4gKCRsb2dnaW5nID8gIiA+PiBjbGVhbi5vdXQgMj4mMSIgOiAiIikpOyAjIElmIGFscmVhZHkgY2xlYW5lZCwgTWFrZWZpbGUgaXMgZ29uZSBzbyBkb24ndCB3b3JyeSBhYm91dCBlcnJvcnMhCisKKyAgcHJpbnQgIkJ1aWxkaW5nIFBlcmwgbW9kdWxlcy4uLlxuIjsKKyAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIHBlcmwiIC4gKCRsb2dnaW5nID8gIiA+IHBlcmxtYWtlLm91dCAyPiYxIiA6ICIiKSkgPT0gMCB8fCBkaWUgKCRsb2dnaW5nID8gIkJ1aWxkIGVycm9yIChzZWUgcGVybG1ha2Uub3V0KSIgOiAiQnVpbGQgZXJyb3IgKHNlZSBhYm92ZSkiKTsKKworICBwcmludCAiVGVzdGluZyBQZXJsIG1vZHVsZXMuLi5cbiI7CisgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBwZXJsX3Rlc3QiIC4gKCRsb2dnaW5nID8gIiA+IHBlcmx0ZXN0Lm91dCAyPiYxIiA6ICIiKSk7ICMgRG9uJ3QgZGllIGlmIGFsbCB0aGUgdGVzdHMgZG9uJ3QgcGFzcy4uCisKKyAgaWYgKCRwZXJsX2luc3RhbGwpIHsKKyAgICBwcmludCAiSW5zdGFsbGluZyBQZXJsIG1vZHVsZXMuLi5cbiI7CisgICAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIHBlcmxfaW5zdGFsbCIgLiAoJGxvZ2dpbmcgPyAiID4gcGVybGluc3RhbGwub3V0IDI+JjEiIDogIiIpKSA9PSAwIHx8IGRpZSAoJGxvZ2dpbmcgPyAiQnVpbGQgZXJyb3IgKHNlZSBwZXJsaW5zdGFsbC5vdXQpIiA6ICJCdWlsZCBlcnJvciAoc2VlIGFib3ZlKSIpOworICB9CisKKyAgcHJpbnQgIlxuU2VlIHBlcmx0ZXN0Lm91dCBmb3IgUGVybCB0ZXN0IHJlc3VsdHNcbiI7CiB9CiAKLWlmICgkbG9nZ2luZyBlcSAiZW5hYmxlZCIpIHsKLSAgcHJpbnQgIkRlbGV0aW5nIG9sZCBsb2cgZmlsZXMuLi5cbiI7Ci0gIHN5c3RlbSgiZGVsICoub3V0ID4gTlVMOiAyPiYxIik7Ci0KLSAgIyBEZWxldGUgbmV0LXNubXAtY29uZmlnLmggZnJvbSBtYWluIGluY2x1ZGUgZm9sZGVyIGp1c3QgaW4gY2FzZSBpdCB3YXMgY3JlYXRlZCBieSBhIEN5Z3dpbiBvciBNaW5HVyBidWlsZAotICBzeXN0ZW0oImRlbCAuLlxcaW5jbHVkZVxcbmV0LXNubXBcXG5ldC1zbm1wLWNvbmZpZy5oID4gTlVMOiAyPiYxIik7Ci0gIHVubGluayAiLi4vc25tcGxpYi90cmFuc3BvcnRzL3NubXBfdHJhbnNwb3J0X2luaXRzLmgiOwotCi0gIHByaW50ICJSdW5uaW5nIENvbmZpZ3VyZS4uLlxuIjsKLSAgc3lzdGVtKCJwZXJsIENvbmZpZ3VyZSAkY29uZmlnT3B0cyAtLWxpbmt0eXBlPSRsaW5rdHlwZSAtLXByZWZpeD1cIiRpbnN0YWxsX2Jhc2VcIiA+IGNvbmZpZ3VyZS5vdXQgMj4mMSIpID09IDAgfHwgZGllICJCdWlsZCBlcnJvciAoc2VlIGNvbmZpZ3VyZS5vdXQpIjsKLQotICBwcmludCAiQ2xlYW5pbmcuLi5cbiI7Ci0gIHN5c3RlbSgibm1ha2UgL25vbG9nbyBjbGVhbiA+IGNsZWFuLm91dCAyPiYxIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgY2xlYW4ub3V0KSI7Ci0KLSAgcHJpbnQgIkJ1aWxkaW5nIG1haW4gcGFja2FnZS4uLlxuIjsKLSAgc3lzdGVtKCJubWFrZSAvbm9sb2dvID4gbWFrZS5vdXQgMj4mMSIpID09IDAgfHwgZGllICJCdWlsZCBlcnJvciAoc2VlIG1ha2Uub3V0KSI7Ci0KLSAgaWYgKCRwZXJsIGVxICJlbmFibGVkIikgewotICAgIGlmICgkbGlua3R5cGUgZXEgInN0YXRpYyIpIHsKLSAgICAgIHByaW50ICJSdW5uaW5nIENvbmZpZ3VyZSBmb3IgRExMLi4uXG4iOwotICAgICAgc3lzdGVtKCJwZXJsIENvbmZpZ3VyZSAkY29uZmlnT3B0cyAtLWxpbmt0eXBlPWR5bmFtaWMgLS1wcmVmaXg9XCIkaW5zdGFsbF9iYXNlXCIgPiBwZXJsY29uZmlndXJlLm91dCAyPiYxIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgcGVybGNvbmZpZ3VyZS5vdXQpIjsKLQotICAgICAgcHJpbnQgIkNsZWFuaW5nIGxpYnJhcmllcy4uLlxuIjsKLSAgICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBsaWJzX2NsZWFuID4+IGNsZWFuLm91dCAyPiYxIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgY2xlYW4ub3V0KSI7Ci0KLSAgICAgIHByaW50ICJCdWlsZGluZyBETEwgbGlicmFyaWVzLi4uXG4iOwotICAgICAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIGxpYnMgPiBkbGwub3V0IDI+JjEiKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBkbGwub3V0KSI7Ci0gICAgfQotCi0gICAgcHJpbnQgIkNsZWFuaW5nIFBlcmwuLi4uXG4iOwotICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBwZXJsX2NsZWFuID4+IGNsZWFuLm91dCAyPiYxIik7ICMgSWYgYWxyZWFkeSBjbGVhbmVkLCBNYWtlZmlsZSBpcyBnb25lIHNvIGRvbid0IHdvcnJ5IGFib3V0IGVycm9ycyEKLQotICAgIHByaW50ICJCdWlsZGluZyBQZXJsIG1vZHVsZXMuLi5cbiI7Ci0gICAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIHBlcmwgPiBwZXJsbWFrZS5vdXQgMj4mMSIpID09IDAgfHwgZGllICJCdWlsZCBlcnJvciAoc2VlIHBlcmxtYWtlLm91dCkiOwotCi0gICAgcHJpbnQgIlRlc3RpbmcgUGVybCBtb2R1bGVzLi4uXG4iOwotICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBwZXJsX3Rlc3QgPiBwZXJsdGVzdC5vdXQgMj4mMSIpOyAjIERvbid0IGRpZSBpZiBhbGwgdGhlIHRlc3RzIGRvbid0IHBhc3MuLgotCi0gICAgaWYgKCRwZXJsX2luc3RhbGwgZXEgImVuYWJsZWQiKSB7Ci0gICAgICBwcmludCAiSW5zdGFsbGluZyBQZXJsIG1vZHVsZXMuLi5cbiI7Ci0gICAgICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gcGVybF9pbnN0YWxsID4gcGVybGluc3RhbGwub3V0IDI+JjEiKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBwZXJsaW5zdGFsbC5vdXQpIjsKLSAgICB9Ci0KLSAgICBwcmludCAiXG5TZWUgcGVybHRlc3Qub3V0IGZvciBQZXJsIHRlc3QgcmVzdWx0c1xuIjsKLSAgfQotCi0gIHByaW50ICJcbiI7Ci0gIGlmICgkaW5zdGFsbCBlcSAiZW5hYmxlZCIpIHsKLSAgICBwcmludCAiSW5zdGFsbGluZyBtYWluIHBhY2thZ2UuLi5cbiI7Ci0gICAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIGluc3RhbGwgPiBpbnN0YWxsLm91dCAyPiYxIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgaW5zdGFsbC5vdXQpIjsKLSAgfQotICBlbHNlIHsKLSAgICBwcmludCAiVHlwZSBubWFrZSBpbnN0YWxsIHRvIGluc3RhbGwgdGhlIHBhY2thZ2UgdG8gJGluc3RhbGxfYmFzZVxuIjsKLSAgfQotCi0gIGlmICgkaW5zdGFsbF9kZXZlbCBlcSAiZW5hYmxlZCIpIHsKLSAgICBwcmludCAiSW5zdGFsbGluZyBkZXZlbG9wbWVudCBmaWxlcy4uLlxuIjsKLSAgICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gaW5zdGFsbF9kZXZlbCA+IGluc3RhbGxfZGV2ZWwub3V0IDI+JjEiKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBpbnN0YWxsX2RldmVsLm91dCkiOwotICB9Ci0gIGVsc2UgewotICAgIHByaW50ICJUeXBlIG5tYWtlIGluc3RhbGxfZGV2ZWwgdG8gaW5zdGFsbCB0aGUgZGV2ZWxvcG1lbnQgZmlsZXMgdG8gJGluc3RhbGxfYmFzZVxuIjsKLSAgfQotCi0gIGlmICgkcGVybF9pbnN0YWxsIGVxICJkaXNhYmxlZCIgJiYgJHBlcmwgZXEgImVuYWJsZWQiKSB7Ci0gICAgcHJpbnQgIlR5cGUgbm1ha2UgcGVybF9pbnN0YWxsIHRvIGluc3RhbGwgdGhlIFBlcmwgbW9kdWxlc1xuIjsKLSAgfQorcHJpbnQgIlxuIjsKK2lmICgkaW5zdGFsbCkgeworICBwcmludCAiSW5zdGFsbGluZyBtYWluIHBhY2thZ2UuLi5cbiI7CisgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBpbnN0YWxsIiAuICgkbG9nZ2luZyA/ICIgPiBpbnN0YWxsLm91dCAyPiYxIiA6ICIiKSkgPT0gMCB8fCBkaWUgKCRsb2dnaW5nID8gIkJ1aWxkIGVycm9yIChzZWUgaW5zdGFsbC5vdXQpIiA6ICJCdWlsZCBlcnJvciAoc2VlIGFib3ZlKSIpOwogfQogZWxzZSB7Ci0gIHN5c3RlbSgiZGVsICoub3V0Iik7CisgIHByaW50ICJUeXBlIG5tYWtlIGluc3RhbGwgdG8gaW5zdGFsbCB0aGUgcGFja2FnZSB0byAkaW5zdGFsbF9iYXNlXG4iOworfQogCi0gICMgRGVsZXRlIG5ldC1zbm1wLWNvbmZpZy5oIGZyb20gbWFpbiBpbmNsdWRlIGZvbGRlciBqdXN0IGluIGNhc2UgaXQgd2FzIGNyZWF0ZWQgYnkgYSBDeWd3aW4gb3IgTWluR1cgYnVpbGQKLSAgc3lzdGVtKCJkZWwgLi5cXGluY2x1ZGVcXG5ldC1zbm1wXFxuZXQtc25tcC1jb25maWcuaCA+IE5VTDogMj4mMSIpOworaWYgKCRpbnN0YWxsX2RldmVsKSB7CisgIHByaW50ICJJbnN0YWxsaW5nIGRldmVsb3BtZW50IGZpbGVzLi4uXG4iOworICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gaW5zdGFsbF9kZXZlbCA+IGluc3RhbGxfZGV2ZWwub3V0IDI+JjEiKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBpbnN0YWxsX2RldmVsLm91dCkiOworfQorZWxzZSB7CisgIHByaW50ICJUeXBlIG5tYWtlIGluc3RhbGxfZGV2ZWwgdG8gaW5zdGFsbCB0aGUgZGV2ZWxvcG1lbnQgZmlsZXMgdG8gJGluc3RhbGxfYmFzZVxuIjsKK30KIAotICBzeXN0ZW0oInBlcmwgQ29uZmlndXJlICRjb25maWdPcHRzIC0tbGlua3R5cGU9JGxpbmt0eXBlIC0tcHJlZml4PVwiJGluc3RhbGxfYmFzZVwiIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgYWJvdmUpIjsKLSAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIGNsZWFuIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgYWJvdmUpIjsKLSAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgYWJvdmUpIjsKLQotICBpZiAoJHBlcmwgZXEgImVuYWJsZWQiKSB7Ci0gICAgaWYgKCRsaW5rdHlwZSBlcSAic3RhdGljIikgewotICAgICAgc3lzdGVtKCJwZXJsIENvbmZpZ3VyZSAkY29uZmlnT3B0cyAtLWxpbmt0eXBlPWR5bmFtaWMgLS1wcmVmaXg9XCIkaW5zdGFsbF9iYXNlXCIiKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBhYm92ZSkiOwotICAgICAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIGxpYnNfY2xlYW4iKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBhYm92ZSkiOwotICAgICAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIGxpYnMiKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBhYm92ZSkiOwotICAgIH0KLQotICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBwZXJsX2NsZWFuIik7ICMgSWYgYWxyZWFkeSBjbGVhbmVkLCBNYWtlZmlsZSBpcyBnb25lIHNvIGRvbid0IHdvcnJ5IGFib3V0IGVycm9ycyEKLSAgICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gcGVybCIpID09IDAgfHwgZGllICJCdWlsZCBlcnJvciAoc2VlIGFib3ZlKSI7Ci0KLSAgICBteSAkcGF0aF9vbGQgPSAkRU5We1BBVEh9OwotICAgICRFTlZ7UEFUSH0gPSAiJGN1cnJlbnRfcHdkXFxiaW5cXCIgLiAoJGRlYnVnIGVxICJlbmFibGVkIiA/ICJkZWJ1ZyIgOiAicmVsZWFzZSIgKSAuICI7JEVOVntQQVRIfSI7Ci0gICAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIHBlcmxfdGVzdCIpOyAjIERvbid0IGRpZSBpZiBhbGwgdGhlIHRlc3RzIGRvbid0IHBhc3MuLgotICAgICRFTlZ7UEFUSH0gPSAkcGF0aF9vbGQ7Ci0KLSAgICBpZiAoJHBlcmxfaW5zdGFsbCBlcSAiZW5hYmxlZCIpIHsKLSAgICAgIHByaW50ICJJbnN0YWxsaW5nIFBlcmwgbW9kdWxlcy4uLlxuIjsKLSAgICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBwZXJsX2luc3RhbGwiKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBhYm92ZSkiOwotICAgIH0KLSAgfQotCi0gIHByaW50ICJcbiI7Ci0gIGlmICgkaW5zdGFsbCBlcSAiZW5hYmxlZCIpIHsKLSAgICBwcmludCAiSW5zdGFsbGluZyBtYWluIHBhY2thZ2UuLi5cbiI7Ci0gICAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIGluc3RhbGwiKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBhYm92ZSkiOwotICB9Ci0gIGVsc2UgewotICAgIHByaW50ICJUeXBlIG5tYWtlIGluc3RhbGwgdG8gaW5zdGFsbCB0aGUgcGFja2FnZSB0byAkaW5zdGFsbF9iYXNlXG4iOwotICB9Ci0KLSAgaWYgKCRpbnN0YWxsX2RldmVsIGVxICJlbmFibGVkIikgewotICAgIHByaW50ICJJbnN0YWxsaW5nIGRldmVsb3BtZW50IGZpbGVzLi4uXG4iOwotICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBpbnN0YWxsX2RldmVsID4gaW5zdGFsbF9kZXZlbC5vdXQgMj4mMSIpID09IDAgfHwgZGllICJCdWlsZCBlcnJvciAoc2VlIGluc3RhbGxfZGV2ZWwub3V0KSI7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcHJpbnQgIlR5cGUgbm1ha2UgaW5zdGFsbF9kZXZlbCB0byBpbnN0YWxsIHRoZSBkZXZlbG9wbWVudCBmaWxlcyB0byAkaW5zdGFsbF9iYXNlXG4iOwotICB9Ci0KLSAgaWYgKCRwZXJsX2luc3RhbGwgZXEgImRpc2FibGVkIiAmJiAkcGVybCBlcSAiZW5hYmxlZCIpIHsKLSAgICBwcmludCAiVHlwZSBubWFrZSBwZXJsX2luc3RhbGwgdG8gaW5zdGFsbCB0aGUgUGVybCBtb2R1bGVzXG4iOwotICB9CitpZiAoJHBlcmwgJiYgISRwZXJsX2luc3RhbGwpIHsKKyAgcHJpbnQgIlR5cGUgbm1ha2UgcGVybF9pbnN0YWxsIHRvIGluc3RhbGwgdGhlIFBlcmwgbW9kdWxlc1xuIjsKIH0KIAogcHJpbnQgIlxuRG9uZSFcbiI7CiAKKyMgTG9jYWwgVmFyaWFibGVzOgorIyBtb2RlOiBwZXJsCisjIHBlcmwtaW5kZW50LWxldmVsOiAyCisjIGluZGVudC10YWJzLW1vZGU6IG5pbAorIyBFbmQ6CmRpZmYgLS1naXQgYS93aW4zMi9jb25maWcuaCBiL3dpbjMyL2NvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDFjYjlhLi4wMDAwMDAwCi0tLSBhL3dpbjMyL2NvbmZpZy5oCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0vKgotICogRXZlcnlvbmUgc2hvdWxkIGJlIGluY2x1ZGluZyB0aGUgbmV3IHN0eWxlIGNvbmZpZyBoZWFkZXIuCi0gKiBGb3Igbm93LCB3ZSdsbCBkbyBpdCBmb3IgdGhlbSBmb3IgYmFja3dhcmRzIGNvbXBhdGFiaWxpdHkuCi0gKi8KLSNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KZGlmZiAtLWdpdCBhL3dpbjMyL2Rpc3QvYnVpbGQtYmluYXJ5LmJhdCBiL3dpbjMyL2Rpc3QvYnVpbGQtYmluYXJ5LmJhdAppbmRleCBiYTIzNGJhLi42MGUxNzI4IDEwMDc1NQotLS0gYS93aW4zMi9kaXN0L2J1aWxkLWJpbmFyeS5iYXQKKysrIGIvd2luMzIvZGlzdC9idWlsZC1iaW5hcnkuYmF0CkBAIC0xLDUgKzEsMyBAQAogQGVjaG8gb2ZmCiAKLWNkIHdpbjMyID4gTlVMOiAyPiYxCi1wZXJsIGJ1aWxkLWJpbmFyeS5wbAotCitwZXJsICV+ZHAwXGJ1aWxkLWJpbmFyeS5wbApkaWZmIC0tZ2l0IGEvd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGwgYi93aW4zMi9kaXN0L2J1aWxkLWJpbmFyeS5wbAppbmRleCBkMTAyZGZiLi4wYTg4YjNiIDEwMDc1NQotLS0gYS93aW4zMi9kaXN0L2J1aWxkLWJpbmFyeS5wbAorKysgYi93aW4zMi9kaXN0L2J1aWxkLWJpbmFyeS5wbApAQCAtNSwyNyArNSw0NSBAQAogIyBNYXkgMTB0aCwgMjAwOQogIwogdXNlIHN0cmljdDsKK3VzZSBGaWxlOjpCYXNlbmFtZTsKIHVzZSBGaWxlOjpDb3B5OwordXNlIEZpbGU6OlNwZWM7CiB1c2UgQ3dkICdhYnNfcGF0aCc7CiAKIHByaW50ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7CiAKLW15ICR0YXJfY29tbWFuZCA9ICdDOlxtc3lzXDEuMFxiaW5cdGFyLmV4ZSc7Ci1teSAkZ3ppcF9jb21tYW5kID0gJ0M6XG1zeXNcMS4wXGJpblxnemlwLmV4ZSc7CitteSAkdGFyX2NvbW1hbmQ7CitteSAkZ3ppcF9jb21tYW5kOworZm9yIG15ICRtc3lzYmluZGlyICgoIkM6XFxtc3lzXFwxLjBcXGJpbiIsICJDOlxcbWluZ3dcXG1zeXNcXDEuMFxcYmluIikpIHsKKyAgICAkdGFyX2NvbW1hbmQgPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRtc3lzYmluZGlyLCAidGFyLmV4ZSIpOworICAgICRnemlwX2NvbW1hbmQgPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRtc3lzYmluZGlyLCAiZ3ppcC5leGUiKTsKKyAgICBsYXN0IGlmICgtZiAkdGFyX2NvbW1hbmQpOworfQogCiBpZiAoISAoLWYgJHRhcl9jb21tYW5kKSkgewotICBkaWUgKCJDb3VsZCBub3QgZmluZCB0YXIgY29tbWFuZCAoJHRhcl9jb21tYW5kKSIpOworICBkaWUgKCJDb3VsZCBub3QgZmluZCB0YXIgY29tbWFuZCIpOwogfQogZWxzZSB7CiAgIHByaW50ICJ0YXIgY29tbWFuZDogICR0YXJfY29tbWFuZFxuIjsKIH0KIGlmICghICgtZiAkZ3ppcF9jb21tYW5kKSkgewotICBkaWUgKCJDb3VsZCBub3QgZmluZCBnemlwIGNvbW1hbmQgKCRnemlwX2NvbW1hbmQpIik7CisgIGRpZSAoIkNvdWxkIG5vdCBmaW5kIGd6aXAgY29tbWFuZCIpOwogfQogZWxzZSB7CiAgIHByaW50ICJnemlwIGNvbW1hbmQ6ICRnemlwX2NvbW1hbmRcbiI7CiB9CiAKK215ICRtYWtlbnNpczsKK2ZvciBteSAkbnNpc2RpciAoKCJDOlxcUHJvZ3JhbSBGaWxlc1xcTlNJUyIsICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTlNJUyIpKSB7CisgICAgJG1ha2Vuc2lzID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkbnNpc2RpciwgIm1ha2Vuc2lzLmV4ZSIpOworICAgIGxhc3QgaWYgKC1mICRtYWtlbnNpcyk7Cit9CitkaWUoIm1ha2Vuc2lzLmV4ZSBub3QgZm91bmQiKSBpZiAoISgtZiAkbWFrZW5zaXMpKTsKKworbXkgJG9wZW5zc2xkaXIgPSAkRU5We1RBUkdFVF9DUFV9IGVxICJ4NjQiID8gIkM6XFxPcGVuU1NMLVdpbjY0IiA6ICJDOlxcT3BlblNTTC1XaW4zMiI7CitteSAkb3BlbnNzbGluY2RpciA9ICRvcGVuc3NsZGlyIC4gIlxcaW5jbHVkZSI7CitteSAkb3BlbnNzbGxpYmRpciA9ICRvcGVuc3NsZGlyIC4gIlxcbGliXFxWQyI7CisKIG15ICR2ZXJzaW9uID0gInVua25vd24iOwogbXkgJHZlcnNpb25fZm9yX3BlcmwgPSAidW5rbm93biI7CiBteSAkdmVyc2lvbl9tYWo7CkBAIC00OSwzMyArNjcsMTAgQEAKIG15ICRsaW5rdHlwZSA9ICJzdGF0aWMiOwogbXkgJG9wdGlvbjsKIAotIyBQcmVwZW5kIHdpbjMyXCBpZiBydW5uaW5nIGZyb20gbWFpbiBkaXJlY3RvcnkKLW15ICRjdXJyZW50X3B3ZCA9IGAlQ09NU1BFQyUgL2MgY2RgOwotY2hvbXAgJGN1cnJlbnRfcHdkOwotbXkgJHRvcF9kaXI7Ci1teSAkd2luMzJfZGlyOwotbXkgJHBlcmxfZGlyOwotCi1pZiAoJGN1cnJlbnRfcHdkID1+IC9cXHdpbjMyXFxkaXN0JC8pIHsKLSAgJHdpbjMyX2RpciA9ICIkY3VycmVudF9wd2QvLi4vIjsKLSAgJHRvcF9kaXIgPSAiJGN1cnJlbnRfcHdkLy4uLy4uLyI7Ci0gICRwZXJsX2RpciA9ICIkY3VycmVudF9wd2QvLi4vLi4vcGVybC8iOwotfQotZWxzaWYgKCRjdXJyZW50X3B3ZCA9fiAvXFx3aW4zMiQvKSB7Ci0gICR3aW4zMl9kaXIgPSAkY3VycmVudF9wd2Q7Ci0gICR0b3BfZGlyID0gIiRjdXJyZW50X3B3ZC8uLi8iOwotICAkcGVybF9kaXIgPSAiJGN1cnJlbnRfcHdkLy4uL3BlcmwvIjsKLX0KLWVsc2UgeyAgIyBBc3N1bWUgdG9wIGxldmVsIGZvbGRlcgotICAkd2luMzJfZGlyID0gIiRjdXJyZW50X3B3ZC93aW4zMi8iOwotICAkdG9wX2RpciA9ICRjdXJyZW50X3B3ZDsKLSAgJHBlcmxfZGlyID0gIiRjdXJyZW50X3B3ZC9wZXJsLyI7Ci19Ci0KLSR0b3BfZGlyID0gYWJzX3BhdGgoJHRvcF9kaXIpOwotJHdpbjMyX2RpciA9IGFic19wYXRoKCR3aW4zMl9kaXIpOwotJHBlcmxfZGlyID0gYWJzX3BhdGgoJHBlcmxfZGlyKTsKLQorbXkgJHNjcmlwdGRpciA9IGRpcm5hbWUoYWJzX3BhdGgoJDApKTsKK215ICR3aW4zMl9kaXIgPSBkaXJuYW1lKCRzY3JpcHRkaXIpOworbXkgJHRvcF9kaXIgPSBkaXJuYW1lKCR3aW4zMl9kaXIpOworbXkgJHBlcmxfZGlyID0gRmlsZTo6U3BlYy0+Y2F0ZGlyKCR0b3BfZGlyLCAicGVybCIpOwogCiBwcmludCAiXG50b3BfZGlyOiAgICAgICR0b3BfZGlyXG4iOwogcHJpbnQgIndpbjMyX2RpcjogICAgJHdpbjMyX2RpclxuIjsKQEAgLTkwLDkgKzg1LDcgQEAKICAgZXhpdDsKIH0KIAotaWYgKCAtZCAkRU5We01TVkNEaXJ9IHx8IC1kICRFTlZ7VkNJTlNUQUxMRElSfSkgewotfQotZWxzZSB7CitpZiAoISgtZCAkRU5We01TVkNEaXJ9KSAmJiAhKC1kICRFTlZ7VkNJTlNUQUxMRElSfSkgJiYgIWRlZmluZWQoJEVOVntUQVJHRVRfQ1BVfSkpIHsKICAgcHJpbnQgIlxuUGxlYXNlIHJ1biBWQ1ZBUlMzMi5CQVQgZmlyc3QgdG8gc2V0IHVwIHRoZSBWaXN1YWwgU3R1ZGlvIGJ1aWxkXG4iIC4KICAgICAgICAgImVudmlyb25tZW50LlxuXG4iOwogICBleGl0OwpAQCAtMTg5LDI3ICsxODIsNiBAQAogJGluc3RhbGwgPSAiZW5hYmxlZCI7CiAkaW5zdGFsbF9kZXZlbCA9ICJlbmFibGVkIjsKIAotcHJpbnQgIlxuXG5CdWlsZGluZyB3aXRoIG9wdGlvbnM6XG4iOwotcHJpbnQgIj09PT09PT09PT09PT09PT09PT09PT1cblxuIjsKLXByaW50ICIxLiAgT3BlblNTTCBzdXBwb3J0OiAgICAgICAgICAgICAgICAiIC4gJG9wZW5zc2wuICJcbiI7Ci1wcmludCAiMi4gIFBsYXRmb3JtIFNESyBzdXBwb3J0OiAgICAgICAgICAgIiAuICRzZGsgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICIzLiAgSW5zdGFsbCBwYXRoOiAgICAgICAgICAgICAgICAgICAiIC4gJGluc3RhbGxfYmFzZSAuICJcbiI7Ci1wcmludCAiNC4gIEluc3RhbGwgYWZ0ZXIgYnVpbGQ6ICAgICAgICAgICAgIiAuICRpbnN0YWxsIC4gIlxuIjsKLXByaW50ICJcbiI7Ci1wcmludCAiNS4gIFBlcmwgbW9kdWxlczogICAgICAgICAgICAgICAgICAgIiAuICRwZXJsIC4gIlxuIjsKLXByaW50ICI2LiAgSW5zdGFsbCBwZXJsIG1vZHVsZXM6ICAgICAgICAgICAiIC4gJHBlcmxfaW5zdGFsbCAuICJcbiI7Ci1wcmludCAiXG4iOwotcHJpbnQgIjcuICBRdWlldCBidWlsZCAobG9nZ2VkKTogICAgICAgICAgICIgLiAkbG9nZ2luZyAuICJcbiI7Ci1wcmludCAiOC4gIERlYnVnIG1vZGU6ICAgICAgICAgICAgICAgICAgICAgIiAuICRkZWJ1ZyAuICJcbiI7Ci1wcmludCAiXG4iOwotcHJpbnQgIjkuICBJUHY2IHRyYW5zcG9ydHMgKHJlcXVpcmVzIFNESyk6ICIgLiAkYl9pcHY2IC4gIlxuIjsKLXByaW50ICIxMC4gd2luRXh0RExMIGFnZW50IChyZXF1aXJlcyBTREspOiAiIC4gJGJfd2luZXh0ZGxsIC4gIlxuIjsKLXByaW50ICJcbiI7Ci1wcmludCAiMTEuIExpbmsgdHlwZTogICAgICAgICAgICAgICAgICAgICAgIiAuICRsaW5rdHlwZSAuICJcbiI7Ci1wcmludCAiXG4iOwotcHJpbnQgIjEyLiBJbnN0YWxsIGRldmVsb3BtZW50IGZpbGVzICAgICAgICIgLiAkaW5zdGFsbF9kZXZlbCAuICJcbiI7Ci0KIGNoZGlyICR3aW4zMl9kaXI7CiAmYnVpbGQoKTsKICZjcmVhdGVfcGVybF9wYWNrYWdlKCk7CkBAIC0yMjgsMjcgKzIwMCw2IEBACiAkaW5zdGFsbCA9ICJkaXNhYmxlZCI7CiAkaW5zdGFsbF9kZXZlbCA9ICJkaXNhYmxlZCI7CiAKLXByaW50ICJcblxuQnVpbGRpbmcgd2l0aCBvcHRpb25zOlxuIjsKLXByaW50ICI9PT09PT09PT09PT09PT09PT09PT09XG5cbiI7Ci1wcmludCAiMS4gIE9wZW5TU0wgc3VwcG9ydDogICAgICAgICAgICAgICAgIiAuICRvcGVuc3NsLiAiXG4iOwotcHJpbnQgIjIuICBQbGF0Zm9ybSBTREsgc3VwcG9ydDogICAgICAgICAgICIgLiAkc2RrIC4gIlxuIjsKLXByaW50ICJcbiI7Ci1wcmludCAiMy4gIEluc3RhbGwgcGF0aDogICAgICAgICAgICAgICAgICAgIiAuICRpbnN0YWxsX2Jhc2UgLiAiXG4iOwotcHJpbnQgIjQuICBJbnN0YWxsIGFmdGVyIGJ1aWxkOiAgICAgICAgICAgICIgLiAkaW5zdGFsbCAuICJcbiI7Ci1wcmludCAiXG4iOwotcHJpbnQgIjUuICBQZXJsIG1vZHVsZXM6ICAgICAgICAgICAgICAgICAgICIgLiAkcGVybCAuICJcbiI7Ci1wcmludCAiNi4gIEluc3RhbGwgcGVybCBtb2R1bGVzOiAgICAgICAgICAgIiAuICRwZXJsX2luc3RhbGwgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICI3LiAgUXVpZXQgYnVpbGQgKGxvZ2dlZCk6ICAgICAgICAgICAiIC4gJGxvZ2dpbmcgLiAiXG4iOwotcHJpbnQgIjguICBEZWJ1ZyBtb2RlOiAgICAgICAgICAgICAgICAgICAgICIgLiAkZGVidWcgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICI5LiAgSVB2NiB0cmFuc3BvcnRzIChyZXF1aXJlcyBTREspOiAiIC4gJGJfaXB2NiAuICJcbiI7Ci1wcmludCAiMTAuIHdpbkV4dERMTCBhZ2VudCAocmVxdWlyZXMgU0RLKTogIiAuICRiX3dpbmV4dGRsbCAuICJcbiI7Ci1wcmludCAiXG4iOwotcHJpbnQgIjExLiBMaW5rIHR5cGU6ICAgICAgICAgICAgICAgICAgICAgICIgLiAkbGlua3R5cGUgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICIxMi4gSW5zdGFsbCBkZXZlbG9wbWVudCBmaWxlcyAgICAgICAiIC4gJGluc3RhbGxfZGV2ZWwgLiAiXG4iOwotCiBjaGRpciAkd2luMzJfZGlyOwogJmJ1aWxkKCk7CiAKQEAgLTI4MCwyNyArMjMxLDYgQEAKICRpbnN0YWxsID0gImVuYWJsZWQiOwogJGluc3RhbGxfZGV2ZWwgPSAiZW5hYmxlZCI7CiAKLXByaW50ICJcblxuQnVpbGRpbmcgd2l0aCBvcHRpb25zOlxuIjsKLXByaW50ICI9PT09PT09PT09PT09PT09PT09PT09XG5cbiI7Ci1wcmludCAiMS4gIE9wZW5TU0wgc3VwcG9ydDogICAgICAgICAgICAgICAgIiAuICRvcGVuc3NsLiAiXG4iOwotcHJpbnQgIjIuICBQbGF0Zm9ybSBTREsgc3VwcG9ydDogICAgICAgICAgICIgLiAkc2RrIC4gIlxuIjsKLXByaW50ICJcbiI7Ci1wcmludCAiMy4gIEluc3RhbGwgcGF0aDogICAgICAgICAgICAgICAgICAgIiAuICRpbnN0YWxsX2Jhc2UgLiAiXG4iOwotcHJpbnQgIjQuICBJbnN0YWxsIGFmdGVyIGJ1aWxkOiAgICAgICAgICAgICIgLiAkaW5zdGFsbCAuICJcbiI7Ci1wcmludCAiXG4iOwotcHJpbnQgIjUuICBQZXJsIG1vZHVsZXM6ICAgICAgICAgICAgICAgICAgICIgLiAkcGVybCAuICJcbiI7Ci1wcmludCAiNi4gIEluc3RhbGwgcGVybCBtb2R1bGVzOiAgICAgICAgICAgIiAuICRwZXJsX2luc3RhbGwgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICI3LiAgUXVpZXQgYnVpbGQgKGxvZ2dlZCk6ICAgICAgICAgICAiIC4gJGxvZ2dpbmcgLiAiXG4iOwotcHJpbnQgIjguICBEZWJ1ZyBtb2RlOiAgICAgICAgICAgICAgICAgICAgICIgLiAkZGVidWcgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICI5LiAgSVB2NiB0cmFuc3BvcnRzIChyZXF1aXJlcyBTREspOiAiIC4gJGJfaXB2NiAuICJcbiI7Ci1wcmludCAiMTAuIHdpbkV4dERMTCBhZ2VudCAocmVxdWlyZXMgU0RLKTogIiAuICRiX3dpbmV4dGRsbCAuICJcbiI7Ci1wcmludCAiXG4iOwotcHJpbnQgIjExLiBMaW5rIHR5cGU6ICAgICAgICAgICAgICAgICAgICAgICIgLiAkbGlua3R5cGUgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICIxMi4gSW5zdGFsbCBkZXZlbG9wbWVudCBmaWxlcyAgICAgICAiIC4gJGluc3RhbGxfZGV2ZWwgLiAiXG4iOwotCiBjaGRpciAkd2luMzJfZGlyOwogJmJ1aWxkKCk7CiAmY3JlYXRlX3BlcmxfcGFja2FnZSgpOwpAQCAtMzE5LDI3ICsyNDksNiBAQAogJGluc3RhbGwgPSAiZGlzYWJsZWQiOwogJGluc3RhbGxfZGV2ZWwgPSAiZGlzYWJsZWQiOwogCi1wcmludCAiXG5cbkJ1aWxkaW5nIHdpdGggb3B0aW9uczpcbiI7Ci1wcmludCAiPT09PT09PT09PT09PT09PT09PT09PVxuXG4iOwotcHJpbnQgIjEuICBPcGVuU1NMIHN1cHBvcnQ6ICAgICAgICAgICAgICAgICIgLiAkb3BlbnNzbC4gIlxuIjsKLXByaW50ICIyLiAgUGxhdGZvcm0gU0RLIHN1cHBvcnQ6ICAgICAgICAgICAiIC4gJHNkayAuICJcbiI7Ci1wcmludCAiXG4iOwotcHJpbnQgIjMuICBJbnN0YWxsIHBhdGg6ICAgICAgICAgICAgICAgICAgICIgLiAkaW5zdGFsbF9iYXNlIC4gIlxuIjsKLXByaW50ICI0LiAgSW5zdGFsbCBhZnRlciBidWlsZDogICAgICAgICAgICAiIC4gJGluc3RhbGwgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICI1LiAgUGVybCBtb2R1bGVzOiAgICAgICAgICAgICAgICAgICAiIC4gJHBlcmwgLiAiXG4iOwotcHJpbnQgIjYuICBJbnN0YWxsIHBlcmwgbW9kdWxlczogICAgICAgICAgICIgLiAkcGVybF9pbnN0YWxsIC4gIlxuIjsKLXByaW50ICJcbiI7Ci1wcmludCAiNy4gIFF1aWV0IGJ1aWxkIChsb2dnZWQpOiAgICAgICAgICAgIiAuICRsb2dnaW5nIC4gIlxuIjsKLXByaW50ICI4LiAgRGVidWcgbW9kZTogICAgICAgICAgICAgICAgICAgICAiIC4gJGRlYnVnIC4gIlxuIjsKLXByaW50ICJcbiI7Ci1wcmludCAiOS4gIElQdjYgdHJhbnNwb3J0cyAocmVxdWlyZXMgU0RLKTogIiAuICRiX2lwdjYgLiAiXG4iOwotcHJpbnQgIjEwLiB3aW5FeHRETEwgYWdlbnQgKHJlcXVpcmVzIFNESyk6ICIgLiAkYl93aW5leHRkbGwgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICIxMS4gTGluayB0eXBlOiAgICAgICAgICAgICAgICAgICAgICAiIC4gJGxpbmt0eXBlIC4gIlxuIjsKLXByaW50ICJcbiI7Ci1wcmludCAiMTIuIEluc3RhbGwgZGV2ZWxvcG1lbnQgZmlsZXMgICAgICAgIiAuICRpbnN0YWxsX2RldmVsIC4gIlxuIjsKLQogY2hkaXIgJHdpbjMyX2RpcjsKICZidWlsZCgpOwogCkBAIC0zNzYsNyArMjg1LDcgQEAKIAogY2hkaXIgJHRvcF9kaXI7CiBjb3B5KCd3aW4zMlxkaXN0XGluc3RhbGxlclxTZXRFblZhci5uc2knLCIkaW5zdGFsbF9iYXNlLyIpIHx8IGRpZSAoIkNvdWxkIG5vdCBjb3B5IGZpbGU6ICQ/Iik7Ci1jb3B5KCd3aW4zMlxkaXN0XGluc3RhbGxlclxuZXQtc25tcC5uc2knLCIkaW5zdGFsbF9iYXNlL25ldC1zbm1wLm5zaS5pbiIpIHx8IGRpZSAoIkNvdWxkIG5vdCBjb3B5IGZpbGU6ICQ/Iik7Citjb3B5KCd3aW4zMlxkaXN0XGluc3RhbGxlclxuZXQtc25tcC5uc2knLCIkaW5zdGFsbF9iYXNlL25ldC1zbm1wLm5zaSIpIHx8IGRpZSAoIkNvdWxkIG5vdCBjb3B5IGZpbGU6ICQ/Iik7CiBjb3B5KCd3aW4zMlxkaXN0XGluc3RhbGxlclxBZGQyUGF0aC5uc2knLCIkaW5zdGFsbF9iYXNlLyIpIHx8IGRpZSAoIkNvdWxkIG5vdCBjb3B5IGZpbGU6ICQ/Iik7CiBjb3B5KCd3aW4zMlxkaXN0XGluc3RhbGxlclxuZXQtc25tcC1oZWFkZXIxLmJtcCcsIiRpbnN0YWxsX2Jhc2UvIikgfHwgZGllICgiQ291bGQgbm90IGNvcHkgZmlsZTogJD8iKTsKIApAQCAtMzkxLDQyICszMDAsMjAgQEAKIG9wZW4gKFRFTVAsICI+JGluc3RhbGxfYmFzZS9ldGMvc25tcC9zbm1wLmNvbmYiKSB8fCBkaWUgKCJDb3VsZCBub3QgY3JlYXRlIGZpbGU6ICQ/Iik7CiBjbG9zZSBURU1QOwogCi0jCi0jIEJ1aWxkIG5ldC1zbm1wLm5zaSBmaWxlCi0jCi0gIHsKLSAgICBteSAkZmlsZV9vdXQgPSAiJGluc3RhbGxfYmFzZS9uZXQtc25tcC5uc2kiOwotICAgIG15ICRmaWxlX2luID0gIiRpbnN0YWxsX2Jhc2UvbmV0LXNubXAubnNpLmluIjsKLSAgCi0gICAgb3BlbiAoRklMRV9PVVQsICI+JGZpbGVfb3V0IikgfHwgZGllICJDYW4ndCBPcGVuICRmaWxlX291dFxuIjsKLSAgICBvcGVuIChGSUxFX0lOLCAiPCRmaWxlX2luIikgfHwgZGllICJDYW4ndCBPcGVuICRmaWxlX2luXG4iOwotICAgIAotICAgIHByaW50ICJjcmVhdGluZyAkZmlsZV9vdXRcbiI7Ci0JICAKLSAgICB3aGlsZSAoPEZJTEVfSU4+KQotICAgIHsKLSAgICAgIGNob21wOwotICAgICAgcy8hZGVmaW5lIFBST0RVQ1RfTUFKX1ZFUlNJT04uKi8hZGVmaW5lIFBST0RVQ1RfTUFKX1ZFUlNJT04gXCIkdmVyc2lvbl9tYWpcIi87Ci0gICAgICBzLyFkZWZpbmUgUFJPRFVDVF9NSU5fVkVSU0lPTi4qLyFkZWZpbmUgUFJPRFVDVF9NSU5fVkVSU0lPTiBcIiR2ZXJzaW9uX21pblwiLzsKLSAgICAgIHMvIWRlZmluZSBQUk9EVUNUX1JFVklTSU9OLiovIWRlZmluZSBQUk9EVUNUX1JFVklTSU9OIFwiJHZlcnNpb25fcmV2XCIvOwotICAgICAgcy8hZGVmaW5lIFBST0RVQ1RfRVhFX1ZFUlNJT04uKi8hZGVmaW5lIFBST0RVQ1RfRVhFX1ZFUlNJT04gXCIkaW5zdGFsbGVyX2V4ZV92ZXJzaW9uXCIvOwotCSAgaWYgKCRFTlZ7TElCfSA9fiAvXFx4NjQvKSB7Ci0gICAgICAgICAgICBzLyFkZWZpbmUgSU5TVEFMTEVSX1BMQVRGT1JNLiovIWRlZmluZSBJTlNUQUxMRVJfUExBVEZPUk0gXCJ4NjRcIi87Ci0gICAgICAgICAgICBzLyFkZWZpbmUgUFJPRFVDVF9FWEVfU1VGRklYLiovIWRlZmluZSBQUk9EVUNUX0VYRV9TVUZGSVggXCIueDY0LmV4ZVwiLzsKLSAgICAgICAgICAgIHMvIWRlZmluZSBXSU4zMl9QTEFURk9STS4qLyFkZWZpbmUgUFJPRFVDVF9FWEVfU1VGRklYIFwieDY0XCIvOwotCSAgfQotCSAgZWxzZSB7Ci0gICAgICAgICAgICBzLyFkZWZpbmUgSU5TVEFMTEVSX1BMQVRGT1JNLiovIWRlZmluZSBJTlNUQUxMRVJfUExBVEZPUk0gXCJ4ODZcIi87Ci0gICAgICAgICAgICBzLyFkZWZpbmUgUFJPRFVDVF9FWEVfU1VGRklYLiovIWRlZmluZSBQUk9EVUNUX0VYRV9TVUZGSVggXCIueDg2LmV4ZSIvOwotICAgICAgICAgICAgcy8hZGVmaW5lIFBST0RVQ1RfRVhFX1NVRkZJWC4qLyFkZWZpbmUgUFJPRFVDVF9FWEVfU1VGRklYIFwiLng4Ni5leGUiLzsKLSAgICAgICAgICAgIHMvIWRlZmluZSBXSU4zMl9QTEFURk9STS4qLyFkZWZpbmUgUFJPRFVDVF9FWEVfU1VGRklYIFwieDg2XCIvOwotCSAgfQotICAKLSAgICAgIHByaW50IEZJTEVfT1VUICRfIC4gIlxuIjsKLSAgICB9Ci0gICAgY2xvc2UgRklMRV9JTjsKLSAgICBjbG9zZSBGSUxFX09VVDsKLSAgfQorcHJpbnQgIlxuXG5Db3B5aW5nIGRvY3VtZW50YXRpb246XG4iOworcHJpbnQgIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiI7CisKKyMgVG8gZG86IHJlcGxhY2UgdGhlIHR3byBsaW5lcyBiZWxvdyB3aXRoIGNvbW1hbmRzIHRoYXQgYnVpbGQgdGhlIC5jaG0gZmlsZS4KK29wZW4gb3V0LCAiPiRpbnN0YWxsX2Jhc2UvZG9jcy9uZXQtc25tcC5jaG0iOworY2xvc2Ugb3V0OworCitwcmludCAiXG5cbkJ1aWxkaW5nIGluc3RhbGxlcjpcbiI7CitwcmludCAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIjsKKworbXkgJHN1ZmZpeCA9ICRFTlZ7TElCfSA9fiAvXFx4NjR8XFxhbWQ2NC8gPyAieDY0IiA6ICJ4ODYiOworaWYgKHN5c3RlbSgiXCIkbWFrZW5zaXNcIiAvRFBST0RVQ1RfTUFKX1ZFUlNJT049XCIkdmVyc2lvbl9tYWpcIiAvRFBST0RVQ1RfTUlOX1ZFUlNJT049XCIkdmVyc2lvbl9taW5cIiAvRFBST0RVQ1RfUkVWSVNJT049XCIkdmVyc2lvbl9yZXZcIiAvRFBST0RVQ1RfRVhFX1ZFUlNJT049XCIkaW5zdGFsbGVyX2V4ZV92ZXJzaW9uXCIgL0RJTlNUQUxMRVJfUExBVEZPUk09XCIkc3VmZml4XCIgXCIkaW5zdGFsbF9iYXNlL25ldC1zbm1wLm5zaVwiIikgIT0gMCkgeworICAgIGRpZSgiQnVpbGRpbmcgaW5zdGFsbGVyIGZhaWxlZCIpOworfQogCiBwcmludCAiXG49PT09PT09XG4iOwogcHJpbnQgIkRvbmUhISFcbiI7CkBAIC00NTcsNiArMzQ0LDI2IEBACiAKICMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIHN1YiBidWlsZCB7CisgIHByaW50ICJcblxuQnVpbGRpbmcgd2l0aCBvcHRpb25zOlxuIjsKKyAgcHJpbnQgIj09PT09PT09PT09PT09PT09PT09PT1cblxuIjsKKyAgcHJpbnQgIjEuICBPcGVuU1NMIHN1cHBvcnQ6ICAgICAgICAgICAgICAgICIgLiAkb3BlbnNzbC4gIlxuIjsKKyAgcHJpbnQgIjIuICBQbGF0Zm9ybSBTREsgc3VwcG9ydDogICAgICAgICAgICIgLiAkc2RrIC4gIlxuIjsKKyAgcHJpbnQgIlxuIjsKKyAgcHJpbnQgIjMuICBJbnN0YWxsIHBhdGg6ICAgICAgICAgICAgICAgICAgICIgLiAkaW5zdGFsbF9iYXNlIC4gIlxuIjsKKyAgcHJpbnQgIjQuICBJbnN0YWxsIGFmdGVyIGJ1aWxkOiAgICAgICAgICAgICIgLiAkaW5zdGFsbCAuICJcbiI7CisgIHByaW50ICJcbiI7CisgIHByaW50ICI1LiAgUGVybCBtb2R1bGVzOiAgICAgICAgICAgICAgICAgICAiIC4gJHBlcmwgLiAiXG4iOworICBwcmludCAiNi4gIEluc3RhbGwgcGVybCBtb2R1bGVzOiAgICAgICAgICAgIiAuICRwZXJsX2luc3RhbGwgLiAiXG4iOworICBwcmludCAiXG4iOworICBwcmludCAiNy4gIFF1aWV0IGJ1aWxkIChsb2dnZWQpOiAgICAgICAgICAgIiAuICRsb2dnaW5nIC4gIlxuIjsKKyAgcHJpbnQgIjguICBEZWJ1ZyBtb2RlOiAgICAgICAgICAgICAgICAgICAgICIgLiAkZGVidWcgLiAiXG4iOworICBwcmludCAiXG4iOworICBwcmludCAiOS4gIElQdjYgdHJhbnNwb3J0cyAocmVxdWlyZXMgU0RLKTogIiAuICRiX2lwdjYgLiAiXG4iOworICBwcmludCAiMTAuIHdpbkV4dERMTCBhZ2VudCAocmVxdWlyZXMgU0RLKTogIiAuICRiX3dpbmV4dGRsbCAuICJcbiI7CisgIHByaW50ICJcbiI7CisgIHByaW50ICIxMS4gTGluayB0eXBlOiAgICAgICAgICAgICAgICAgICAgICAiIC4gJGxpbmt0eXBlIC4gIlxuIjsKKyAgcHJpbnQgIlxuIjsKKyAgcHJpbnQgIjEyLiBJbnN0YWxsIGRldmVsb3BtZW50IGZpbGVzICAgICAgICIgLiAkaW5zdGFsbF9kZXZlbCAuICJcbiI7CiAKICAgJGNUbXAgPSAoJG9wZW5zc2wgZXEgImVuYWJsZWQiID8gIi0td2l0aC1zc2wiIDogIiIgKTsKICAgJGNvbmZpZ09wdHMgPSAiJGNUbXAiOwpAQCAtNDczLDEyICszODAsMTUgQEAKICAgCiAgICMgU2V0IHRvIG5vdCBzZWFyY2ggZm9yIG5vbi1leGlzdGVudCAiLmRlcCIgZmlsZXMKICAgJEVOVntOT19FWFRFUk5BTF9ERVBTfT0iMSI7Ci0gIAorCisgICRFTlZ7SU5DTFVERX0gLj0gIjskb3BlbnNzbGluY2RpciI7CisgICRFTlZ7TElCfSAgICAgLj0gIjskb3BlbnNzbGxpYmRpciI7CisKICAgIyBTZXQgUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBzbyBQZXJsIG1ha2UgdGVzdHMgY2FuIGxvY2F0ZSB0aGUgRExMCi0gICRFTlZ7UEFUSH0gPSAiJGN1cnJlbnRfcHdkXFxiaW5cXCIgLiAoJGRlYnVnIGVxICJlbmFibGVkIiA/ICJkZWJ1ZyIgOiAicmVsZWFzZSIgKSAuICI7JEVOVntQQVRIfSI7CisgICRFTlZ7UEFUSH0gPSBGaWxlOjpTcGVjLT5jYXRkaXIoJHRvcF9kaXIsICJiaW4iLCAkZGVidWcgZXEgImVuYWJsZWQiID8gImRlYnVnIiA6ICJyZWxlYXNlIikgLiAiOyRFTlZ7UEFUSH0iOwogICAKICAgIyBTZXQgTUlCRElSUyBlbnZpcm9ubWVudCB2YXJpYWJsZSBzbyBQZXJsIG1ha2UgdGVzdHMgY2FuIGxvY2F0ZSB0aGUgbWlicwotICBteSAkdGVtcF9taWJkaXIgPSAiJGN1cnJlbnRfcHdkLy4uL21pYnMiOworICBteSAkdGVtcF9taWJkaXIgPSBGaWxlOjpTcGVjLT5jYXRkaXIoJHRvcF9kaXIsICJtaWJzIik7CiAgICR0ZW1wX21pYmRpciA9fiBzL1xcL1wvL2c7CiAgICRFTlZ7TUlCRElSU309JHRlbXBfbWliZGlyOwogICAKZGlmZiAtLWdpdCBhL3dpbjMyL2Rpc3QvaW5zdGFsbGVyL25ldC1zbm1wLm5zaSBiL3dpbjMyL2Rpc3QvaW5zdGFsbGVyL25ldC1zbm1wLm5zaQppbmRleCA1ZTZmYzc1Li4yNDAzZDc3IDEwMDY0NAotLS0gYS93aW4zMi9kaXN0L2luc3RhbGxlci9uZXQtc25tcC5uc2kKKysrIGIvd2luMzIvZGlzdC9pbnN0YWxsZXIvbmV0LXNubXAubnNpCkBAIC0zLDE3ICszLDE0IEBACiAKICFpbmNsdWRlIHg2NC5uc2gKICFpbmNsdWRlICJTZWN0aW9ucy5uc2giCi0KLTsgQnVpbGRpbmcgYSB4ODYgb3IgeDY0IGJpbmFyeQotIWRlZmluZSBJTlNUQUxMRVJfUExBVEZPUk0gIng2NCIJCQorIWluY2x1ZGUgRmlsZUZ1bmMubnNoCishaW5zZXJ0bWFjcm8gR2V0UGFyYW1ldGVycworIWluc2VydG1hY3JvIEdldE9wdGlvbnMKK3ZhciBjbWRMaW5lUGFyYW1ldGVycwogCiA7IEhNIE5JUyBFZGl0IFdpemFyZCBoZWxwZXIgZGVmaW5lcwogIWRlZmluZSBQUk9EVUNUX05BTUUgIk5ldC1TTk1QIgotIWRlZmluZSBQUk9EVUNUX01BSl9WRVJTSU9OICI1IgotIWRlZmluZSBQUk9EVUNUX01JTl9WRVJTSU9OICI1IgotIWRlZmluZSBQUk9EVUNUX1JFVklTSU9OICJwcmUyIgotIWRlZmluZSBQUk9EVUNUX0VYRV9WRVJTSU9OICIxIgotIWRlZmluZSBQUk9EVUNUX0VYRV9TVUZGSVggIi54NjQuZXhlIgorIWRlZmluZSBQUk9EVUNUX0VYRV9TVUZGSVggIi4ke0lOU1RBTExFUl9QTEFURk9STX0uZXhlIgogIWRlZmluZSBQUk9EVUNUX1dFQl9TSVRFICJodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZyIKICFkZWZpbmUgUFJPRFVDVF9ESVJfUkVHS0VZICJTb2Z0d2FyZVxOZXQtU05NUCIKICFkZWZpbmUgUFJPRFVDVF9VTklOU1RfS0VZICJTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxVbmluc3RhbGxcJHtQUk9EVUNUX05BTUV9IgpAQCAtNzUsNyArNzIsNyBAQAogOyBNVUkgZW5kIC0tLS0tLQogCiBOYW1lICIke1BST0RVQ1RfTkFNRX0gJHtQUk9EVUNUX01BSl9WRVJTSU9OfS4ke1BST0RVQ1RfTUlOX1ZFUlNJT059LiR7UFJPRFVDVF9SRVZJU0lPTn0iCi1PdXRGaWxlICIuLlxcbmV0LXNubXAtJHtQUk9EVUNUX01BSl9WRVJTSU9OfS5cCitPdXRGaWxlICJuZXQtc25tcC0ke1BST0RVQ1RfTUFKX1ZFUlNJT059LlwKICAgICAgICAgICAgICAgICAgICR7UFJPRFVDVF9NSU5fVkVSU0lPTn0uXAogICAgICAgICAgICAgICAgICAgJHtQUk9EVUNUX1JFVklTSU9OfVwKICAgICAgICAgICAgICAgICAgIC0ke1BST0RVQ1RfRVhFX1ZFUlNJT059XApAQCAtMTAxLDExICs5OCw2IEBACiAgIEZpbGUgIlJFQURNRS50eHQiCiAgIFNldE91dFBhdGggIiRJTlNURElSXGJpbiIKIAotICBGaWxlICJiaW5cbXN2Y205MC5kbGwiCi0gIEZpbGUgImJpblxtc3ZjcDkwLmRsbCIKLSAgRmlsZSAiYmluXG1zdmNyOTAuZGxsIgotICBGaWxlICJiaW5cTWljcm9zb2Z0LlZDOTAuQ1JULm1hbmlmZXN0IgotCiAgIEZpbGUgImJpblxuZXRzbm1wLmRsbCIKICAgRmlsZSAiYmluXGVuY29kZV9rZXljaGFuZ2UuZXhlIgogICBGaWxlICJiaW5cc25tcHZhY20uZXhlIgpAQCAtMTMyLDExICsxMjQsNiBAQAogICBGaWxlICJSRUFETUUudHh0IgogICBTZXRPdXRQYXRoICIkSU5TVERJUlxiaW4iCiAKLSAgRmlsZSAiYmluXG1zdmNtOTAuZGxsIgotICBGaWxlICJiaW5cbXN2Y3A5MC5kbGwiCi0gIEZpbGUgImJpblxtc3ZjcjkwLmRsbCIKLSAgRmlsZSAiYmluXE1pY3Jvc29mdC5WQzkwLkNSVC5tYW5pZmVzdCIKLQogICBGaWxlICJiaW4uc3NsXG5ldHNubXAuZGxsIgogICBGaWxlICJiaW4uc3NsXGVuY29kZV9rZXljaGFuZ2UuZXhlIgogICBGaWxlICJiaW4uc3NsXHNubXB2YWNtLmV4ZSIKQEAgLTIwOCwxMSArMTk1LDYgQEAKICAgICA7IERlbGV0ZSBhZ2VudCBvdGhlcndpc2UgcmUtaW5zdGFsbGluZyBhIGRpZmZlcmVudCBhZ2VudCBtYXkgbm90IHdvcmsgYmVjYXVzZSBvZiBkYXRlIHN0YW1wcwogICAgIERlbGV0ZSAiJElOU1RESVJcYmluXHNubXBkLmV4ZSIgIAogCi0gICAgRmlsZSAiYmluXG1zdmNtOTAuZGxsIgotICAgIEZpbGUgImJpblxtc3ZjcDkwLmRsbCIKLSAgICBGaWxlICJiaW5cbXN2Y3I5MC5kbGwiCi0gICAgRmlsZSAiYmluXE1pY3Jvc29mdC5WQzkwLkNSVC5tYW5pZmVzdCIKLQogICAgIFN0ckNtcCAkb3BlblNTTCAiZmFsc2UiIFNFQzAyX25vT3BlblNTTCBTRUMwMl9PcGVuU1NMCiAgICAgU0VDMDJfbm9PcGVuU1NMOgogICAgICAgRmlsZSAiYmluXHNubXBkLmV4ZSIKQEAgLTIzMyw2ICsyMTUsOCBAQAogICAgIEZpbGUgInVucmVnaXN0ZXJhZ2VudC5iYXQiCiAgICAgQ2FsbCBDcmVhdGVBZ2VudEJhdHMKIAorCUNsZWFyRXJyb3JzCisJU3RyQ21wICRJQ09OU19HUk9VUCAiIiBTRUMwMl9Ob1NlcnZpY2UKICAgICBDcmVhdGVEaXJlY3RvcnkgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlIgogICAgIENyZWF0ZVNob3J0Q3V0ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxSZWdpc3RlciBBZ2VudCBTZXJ2aWNlLmxuayIgIiRJTlNURElSXHJlZ2lzdGVyYWdlbnQuYmF0IgogICAgIENyZWF0ZVNob3J0Q3V0ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxVbnJlZ2lzdGVyIEFnZW50IFNlcnZpY2UubG5rIiAiJElOU1RESVJcdW5yZWdpc3RlcmFnZW50LmJhdCIKQEAgLTI0OCwxMSArMjMyLDYgQEAKICAgICA7IERlbGV0ZSBhZ2VudCBvdGhlcndpc2UgcmUtaW5zdGFsbGluZyBhIGRpZmZlcmVudCBhZ2VudCBtYXkgbm90IHdvcmsgYmVjYXVzZSBvZiBkYXRlIHN0YW1wcwogICAgIERlbGV0ZSAiJElOU1RESVJcYmluXHNubXBkLmV4ZSIgIAogCi0gICAgRmlsZSAiYmluXG1zdmNtOTAuZGxsIgotICAgIEZpbGUgImJpblxtc3ZjcDkwLmRsbCIKLSAgICBGaWxlICJiaW5cbXN2Y3I5MC5kbGwiCi0gICAgRmlsZSAiYmluXE1pY3Jvc29mdC5WQzkwLkNSVC5tYW5pZmVzdCIKLQogICAgIFN0ckNtcCAkb3BlblNTTCAiZmFsc2UiIFNFQzAzX25vT3BlblNTTCBTRUMwM19PcGVuU1NMCiAgICAgU0VDMDNfbm9PcGVuU1NMOgogICAgICAgRmlsZSAvb25hbWU9c25tcGQuZXhlICJiaW5cc25tcGQtd2luRXh0RExMLmV4ZSIKQEAgLTI3Myw2ICsyNTIsOCBAQAogICAgIEZpbGUgInVucmVnaXN0ZXJhZ2VudC5iYXQiCiAgICAgQ2FsbCBDcmVhdGVBZ2VudEJhdHMKIAorCUNsZWFyRXJyb3JzCisJU3RyQ21wICRJQ09OU19HUk9VUCAiIiBTRUMwM19Ob1NlcnZpY2UKICAgICBDcmVhdGVEaXJlY3RvcnkgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlIgogICAgIENyZWF0ZVNob3J0Q3V0ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxSZWdpc3RlciBBZ2VudCBTZXJ2aWNlLmxuayIgIiRJTlNURElSXHJlZ2lzdGVyYWdlbnQuYmF0IgogICAgIENyZWF0ZVNob3J0Q3V0ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxVbnJlZ2lzdGVyIEFnZW50IFNlcnZpY2UubG5rIiAiJElOU1RESVJcdW5yZWdpc3RlcmFnZW50LmJhdCIKQEAgLTI4OSwxMSArMjcwLDYgQEAKIAogICBTdHJDbXAgJG9wZW5TU0wgImZhbHNlIiBTRUMwNF9ub09wZW5TU0wgU0VDMDRfT3BlblNTTAogCi0gIEZpbGUgImJpblxtc3ZjbTkwLmRsbCIKLSAgRmlsZSAiYmluXG1zdmNwOTAuZGxsIgotICBGaWxlICJiaW5cbXN2Y3I5MC5kbGwiCi0gIEZpbGUgImJpblxNaWNyb3NvZnQuVkM5MC5DUlQubWFuaWZlc3QiCi0KICAgU0VDMDRfbm9PcGVuU1NMOgogICBGaWxlICJiaW5cc25tcHRyYXBkLmV4ZSIKICAgZ290byBTRUMwNF9jb250aW51ZQpAQCAtMzE3LDYgKzI5Myw4IEBACiAgIEZpbGUgInVucmVnaXN0ZXJ0cmFwZC5iYXQiCiAgIENhbGwgQ3JlYXRlVHJhcGRCYXRzCiAgIAorICBDbGVhckVycm9ycworICBTdHJDbXAgJElDT05TX0dST1VQICIiIE5vVHJhcFNlcnZpY2UKICAgQ3JlYXRlU2hvcnRDdXQgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlXFJlZ2lzdGVyIFRyYXAgU2VydmljZS5sbmsiICIkSU5TVERJUlxyZWdpc3RlcnRyYXBkLmJhdCIKICAgQ3JlYXRlU2hvcnRDdXQgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlXFVucmVnaXN0ZXIgVHJhcCBTZXJ2aWNlLmxuayIgIiRJTlNURElSXHVucmVnaXN0ZXJ0cmFwZC5iYXQiCiAgIApAQCAtMzc4LDEwICszNTYsMTQgQEAKIFNlY3Rpb25FbmQKIAogU2VjdGlvbiAtQWRkaXRpb25hbEljb25zCisgIENsZWFyRXJyb3JzCisgIFN0ckNtcCAkSUNPTlNfR1JPVVAgIiIgbm9BZGRpdGlvbmFsSXRlbXMKICAgQ3JlYXRlRGlyZWN0b3J5ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVAiCiAgIENyZWF0ZVNob3J0Q3V0ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcVW5pbnN0YWxsLmxuayIgIiRJTlNURElSXHVuaW5zdC5leGUiCiAgIENyZWF0ZVNob3J0Q3V0ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcTmV0LVNOTVAgSGVscC5sbmsiICIkSU5TVERJUlxkb2NzXE5ldC1TTk1QLmNobSIKICAgQ3JlYXRlU2hvcnRDdXQgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxSRUFETUUubG5rIiAiJElOU1RESVJcUkVBRE1FLnR4dCIKKyAgCisgIG5vQWRkaXRpb25hbEl0ZW1zOgogU2VjdGlvbkVuZAogCiBTZWN0aW9uIC1Qb3N0CkBAIC02ODksNiArNjcxLDE2IEBACiBTZXRSZWdWaWV3IDY0CQk7IFByZXZlbnQgdGhlIGluc3RhbGxlciBmcm9tIHVzaW5nIHRoZSBXb3c2NDMyTm9kZSBIS0xNIHN1YmtleSBvbiA2NC1iaXQgc3lzdGVtcwogUHVzaCAkMAogUHVzaCAkUjAKK1B1c2ggJFIxCisKKzsgQ2hlY2sgZm9yIC8/IGNvbW1hbmQgbGluZSB1c2FnZSBvcHRpb24KKyR7R2V0UGFyYW1ldGVyc30gJFIxCitTdHJDcHkgJGNtZExpbmVQYXJhbWV0ZXJzICRSMQorQ2xlYXJFcnJvcnMKKyR7R2V0T3B0aW9uc30gJGNtZExpbmVQYXJhbWV0ZXJzICcvPycgJFIwCitJZkVycm9ycyArMyAwCitNZXNzYWdlQm94IE1CX09LICJPcHRpb25zOiRcbiAgXFN0YXJ0TWVudT17R3JvdXBOYW1lfSRcbiAgXEFnZW50PXN0YW5kYXJkfGV4dERMTHxub25lICAgKGRlZmF1bHQgc3RhbmRhcmQpJFxuICBcbm9UcmFwZCRcdChkZWZhdWx0IFxUcmFwZCkkXG4gIFxub1BlcmwkXHQkXHQoZGVmYXVsdCBcUGVybCkkXG4gIFxEZXYkXHQkXHQoZGVmYXVsdCBcbm9EZXYpJFxuICBcT3BlblNTTCRcdChkZWZhdWx0IFxub09wZW5TU0wpIgorQWJvcnQKIAogOyBNYWtlIHN1cmUgd2UncmUgcnVubmluZyBXaW5kb3dzIDIwMDAgKDUuMCkgb3IgaGlnaGVyCiBDbGVhckVycm9ycwpAQCAtNzQ2LDEwICs3MzgsMTIxIEBACiA7IFN0b3JlIGN1cnJlbnQgc3RhdHVzIG9mIFNFQzA3IChTU0wpLiAgVXNlZCBmb3IgY2hlY2tpbmcgaWYgT3BlblNTTCBpcyBpbnN0YWxsZWQuCiBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwN30gJFI5CiAKKzsgcHJvY2VzcyBvdGhlciBjb21tYW5kIGxpbmUgcGFyYW1ldGVycworQ2FsbCBwYXJzZVBhcmFtZXRlcnMKKwogUG9wICRSMAogUG9wICQwCiBGdW5jdGlvbkVuZAogCitGdW5jdGlvbiBwYXJzZVBhcmFtZXRlcnMKKyAgUHVzaCAkUjAKKyAgUHVzaCAkMAorCisgIDsgL1N0YXJ0TWVudT0KKyAgQ2xlYXJFcnJvcnMKKyAgJHtHZXRPcHRpb25zfSAkY21kTGluZVBhcmFtZXRlcnMgIi9TdGFydE1lbnU9IiAgJFIwCisgIElmRXJyb3JzICsyIDAKKyAgU3RyQ3B5ICRJQ09OU19HUk9VUCAkUjAKKworICA7IC97bm8sfVRyYXBkICAKKyAgQ2xlYXJFcnJvcnMKKyAgJHtHZXRPcHRpb25zfSAkY21kTGluZVBhcmFtZXRlcnMgIi9UcmFwZCIgICRSMAorICBJZkVycm9ycyArNCAwCisgIFNlY3Rpb25HZXRGbGFncyAke1NFQzA0fSAkMAorICBJbnRPcCAkMCAkMCB8ICR7U0ZfU0VMRUNURUR9CisgIFNlY3Rpb25TZXRGbGFncyAke1NFQzA0fSAkMAorICBDbGVhckVycm9ycworICAke0dldE9wdGlvbnN9ICRjbWRMaW5lUGFyYW1ldGVycyAiL25vVHJhcGQiICAkUjAKKyAgSWZFcnJvcnMgKzQgMAorICBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwNH0gJDAKKyAgSW50T3AgJDAgJDAgJiAke1NFQ1RJT05fT0ZGfQorICBTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwNH0gJDAKKworICA7IC97bm8sfVBlcmwgIAorICBDbGVhckVycm9ycworICAke0dldE9wdGlvbnN9ICRjbWRMaW5lUGFyYW1ldGVycyAiL1BlcmwiICAkUjAKKyAgSWZFcnJvcnMgKzQgMAorICBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwNX0gJDAKKyAgSW50T3AgJDAgJDAgfCAke1NGX1NFTEVDVEVEfQorICBTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwNX0gJDAKKyAgQ2xlYXJFcnJvcnMKKyAgJHtHZXRPcHRpb25zfSAkY21kTGluZVBhcmFtZXRlcnMgIi9ub1BlcmwiICAkUjAKKyAgSWZFcnJvcnMgKzQgMAorICBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwNX0gJDAKKyAgSW50T3AgJDAgJDAgJiAke1NFQ1RJT05fT0ZGfQorICBTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwNX0gJDAKKworICA7IC97bm8sfURldiAgCisgIENsZWFyRXJyb3JzCisgICR7R2V0T3B0aW9uc30gJGNtZExpbmVQYXJhbWV0ZXJzICIvRGV2IiAgJFIwCisgIElmRXJyb3JzICs0IDAKKyAgU2VjdGlvbkdldEZsYWdzICR7U0VDMDZ9ICQwCisgIEludE9wICQwICQwIHwgJHtTRl9TRUxFQ1RFRH0KKyAgU2VjdGlvblNldEZsYWdzICR7U0VDMDZ9ICQwCisgIENsZWFyRXJyb3JzCisgICR7R2V0T3B0aW9uc30gJGNtZExpbmVQYXJhbWV0ZXJzICIvbm9EZXYiICAkUjAKKyAgSWZFcnJvcnMgKzQgMAorICBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwNn0gJDAKKyAgSW50T3AgJDAgJDAgJiAke1NFQ1RJT05fT0ZGfQorICBTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwNn0gJDAKKworICA7IC97bm8sfU9wZW5TU0wgIAorICBDbGVhckVycm9ycworICAke0dldE9wdGlvbnN9ICRjbWRMaW5lUGFyYW1ldGVycyAiL09wZW5TU0wiICAkUjAKKyAgSWZFcnJvcnMgKzQgMAorICBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwN30gJDAKKyAgSW50T3AgJDAgJDAgfCAke1NGX1NFTEVDVEVEfQorICBTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwN30gJDAKKyAgQ2xlYXJFcnJvcnMKKyAgJHtHZXRPcHRpb25zfSAkY21kTGluZVBhcmFtZXRlcnMgIi9ub09wZW5TU0wiICAkUjAKKyAgSWZFcnJvcnMgKzQgMAorICBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwN30gJDAKKyAgSW50T3AgJDAgJDAgJiAke1NFQ1RJT05fT0ZGfQorICBTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwN30gJDAKKworICA7IC9BZ2VudD0gIAorICBDbGVhckVycm9ycworICAke0dldE9wdGlvbnN9ICRjbWRMaW5lUGFyYW1ldGVycyAiL0FnZW50PSIgICRSMAorICBJZkVycm9ycyBlbmRPZkFnZW50IDAKKyAgOyAvQWdlbnQ9bm9uZQorICBDbGVhckVycm9ycworICBTdHJDbXAgJFIwICJub25lIiAwIHN0YW5kYXJkQWdlbnQKKyAgU2VjdGlvbkdldEZsYWdzICR7U0VDMDJ9ICQwCisgIEludE9wICQwICQwICYgJHtTRUNUSU9OX09GRn0KKyAgU2VjdGlvblNldEZsYWdzICR7U0VDMDJ9ICQwCisgIFNlY3Rpb25HZXRGbGFncyAke1NFQzAzfSAkMAorICBJbnRPcCAkMCAkMCAmICR7U0VDVElPTl9PRkZ9CisgIFNlY3Rpb25TZXRGbGFncyAke1NFQzAzfSAkMAorICBHb3RvIGVuZE9mQWdlbnQKKyAgCisgIHN0YW5kYXJkQWdlbnQ6CisgIDsgL0FnZW50PXN0YW5kYXJkCisgIENsZWFyRXJyb3JzCisgIFN0ckNtcCAkUjAgInN0YW5kYXJkIiAwIHdpbkV4dERMTEFnZW50CisgIFNlY3Rpb25HZXRGbGFncyAke1NFQzAyfSAkMAorICBJbnRPcCAkMCAkMCB8ICR7U0ZfU0VMRUNURUR9CisgIFNlY3Rpb25TZXRGbGFncyAke1NFQzAyfSAkMAorICBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwM30gJDAKKyAgSW50T3AgJDAgJDAgJiAke1NFQ1RJT05fT0ZGfQorICBTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwM30gJDAKKyAgR290byBlbmRPZkFnZW50CisgIAorICB3aW5FeHRETExBZ2VudDoKKyAgOyAvQWdlbnQ9ZXh0RExMCisgIENsZWFyRXJyb3JzCisgIFN0ckNtcCAkUjAgImV4dERMTCIgMCBlbmRPZkFnZW50CisgIFNlY3Rpb25HZXRGbGFncyAke1NFQzAyfSAkMAorICBJbnRPcCAkMCAkMCAmICR7U0VDVElPTl9PRkZ9CisgIFNlY3Rpb25TZXRGbGFncyAke1NFQzAyfSAkMAorICBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwM30gJDAKKyAgSW50T3AgJDAgJDAgfCAke1NGX1NFTEVDVEVEfQorICBTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwM30gJDAKKyAgZW5kT2ZBZ2VudDoKKyAgCisgIFBvcCAkUjAgIAorRnVuY3Rpb25FbmQKKwogRnVuY3Rpb24gLm9uU2VsQ2hhbmdlCiAKIDsgICFpbnNlcnRtYWNybyBTdGFydFJhZGlvQnV0dG9ucyAkMgpAQCAtODM5LDExICs5NDIsOCBAQAogICBEZWxldGUgIiRJTlNURElSXGRvY3NcQ09QWUlORyIKICAgRGVsZXRlICIkSU5TVERJUlxkb2NzXE5ldC1TTk1QLmNobSIKICAgRGVsZXRlICIkSU5TVERJUlxiaW5cbmV0LXNubXAtcGVybC10ZXN0LnBsIgotCi0gIERlbGV0ZSAiJElOU1RESVJcYmluXG1zdmNtOTAuZGxsIgotICBEZWxldGUgIiRJTlNURElSXGJpblxtc3ZjcDkwLmRsbCIKLSAgRGVsZXRlICIkSU5TVERJUlxiaW5cbXN2Y3I5MC5kbGwiCi0gIERlbGV0ZSAiJElOU1RESVJcYmluXE1pY3Jvc29mdC5WQzkwLkNSVC5tYW5pZmVzdCIKKyAgOyBpZGVhbGx5IHdlIHNob3VsZCBjaGVjayB3aGV0aGVyIHRoaXMgZmlsZSBoYXMgY2hhbmdlZAorICBEZWxldGUgIiRJTlNURElSXGV0Y1xzbm1wXHNubXAuY29uZiIKIAogICBEZWxldGUgIiRJTlNURElSXGJpblxzbm1wdHJhcGQuZXhlIgogICBEZWxldGUgIiRJTlNURElSXGJpblxzbm1wZC5leGUiCkBAIC04OTMsNiArOTkzLDcgQEAKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXHNubXBjb25mLWRhdGFcc25tcHRyYXBkLWRhdGFcbG9nZ2luZyIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXHNubXBjb25mLWRhdGFcc25tcHRyYXBkLWRhdGFccnVudGltZSIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYnNcQUdFTlRYLU1JQi50eHQiCisgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXEJSSURHRS1NSUIudHh0IgogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWlic1xESVNNQU4tRVZFTlQtTUlCLnR4dCIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYnNcRElTTUFOLUVYUFJFU1NJT04tTUlCLnR4dCIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYnNcRElTTUFOLU5TTE9PS1VQLU1JQi50eHQiCkBAIC05MjcsNiArMTAyOCw3IEBACiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXE5FVC1TTk1QLU1JQi50eHQiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXE5FVC1TTk1QLU1PTklUT1ItTUlCLnR4dCIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYnNcTkVULVNOTVAtUEFTUy1NSUIudHh0IgorICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWlic1xORVQtU05NUC1QRVJJT0RJQy1OT1RJRlktTUlCLnR4dCIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYnNcTkVULVNOTVAtU1lTVEVNLU1JQi50eHQiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXE5FVC1TTk1QLVRDLnR4dCIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYnNcTkVULVNOTVAtVkFDTS1NSUIudHh0IgpAQCAtOTQ0LDYgKzEwNDYsOCBAQAogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWlic1xTTk1QLU5PVElGSUNBVElPTi1NSUIudHh0IgogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWlic1xTTk1QLVBST1hZLU1JQi50eHQiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXFNOTVAtVEFSR0VULU1JQi50eHQiCisgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXFNOTVAtVExTLVRNLU1JQi50eHQiCisgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXFNOTVAtVFNNLU1JQi50eHQiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXFNOTVAtVVNFUi1CQVNFRC1TTS1NSUIudHh0IgogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWlic1xTTk1QLVVTTS1BRVMtTUlCLnR4dCIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYnNcU05NUC1VU00tREgtT0JKRUNUUy1NSUIudHh0IgpAQCAtOTY1LDggKzEwNjksOCBAQAogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWlic1xVQ0QtU05NUC1NSUItT0xELnR4dCIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYnNcVURQLU1JQi50eHQiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXC5pbmRleCIKKyAgRGVsZXRlICIkSU5TVERJUlxzbm1wXHBlcnNpc3RcbWliX2luZGV4ZXNcMCIKIAotICBTZXRPdXRQYXRoICIkSU5TVERJUlxzaGFyZVxzbm1wIgogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWliMmMuYWNjZXNzX2Z1bmN0aW9ucy5jb25mIgogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWliMmMuYXJyYXktdXNlci5jb25mIgogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWliMmMuY2hlY2tfdmFsdWVzLmNvbmYiCkBAIC05OTEsNyArMTA5NSw2IEBACiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy5zY2FsYXIuY29uZiIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYjJjLnRhYmxlX2RhdGEuY29uZiIKIAotICBTZXRPdXRQYXRoICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYjJjLWRhdGEiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy1kYXRhXGRlZmF1bHQtbWZkLXRvcC5tMmMiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy1kYXRhXGRldGFpbHMtZW51bXMubTJpIgogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWliMmMtZGF0YVxkZXRhaWxzLW5vZGUubTJpIgpAQCAtMTAzNCw3ICsxMTM3LDcgQEAKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYjJjLWRhdGFcbWZkLWludGVyYWN0aXZlLXNldHVwLm0yYyIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYjJjLWRhdGFcbWZkLWludGVyZmFjZS5tMmMiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy1kYXRhXG1mZC1tYWtlZmlsZS5tMm0iCi0gIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy1kYXRhXG1mZC1wZXJzaXN0ZW5jZS5tMm0iCisgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy1kYXRhXG1mZC1wZXJzaXN0ZW5jZS5tMmkiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy1kYXRhXG1mZC1yZWFkbWUubTJjIgogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWliMmMtZGF0YVxtZmQtdG9wLm0yYyIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYjJjLWRhdGFcbm9kZS1nZXQubTJpIgpAQCAtMTA1OCw3ICsxMTYxLDYgQEAKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYjJjLWRhdGFcc3ludGF4LVJvd1N0YXR1cy12YXJiaW5kLXZhbGlkYXRlLm0yaSIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYjJjLWRhdGFcc3ludGF4LVN0b3JhZ2VUeXBlLWRlcGVuZGVuY2llcy5tMmkiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy1kYXRhXHN5bnRheC1UZXN0QW5kSW5jci1nZXQubTJpIgotICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWliMmMtZGF0YVwiCiAKICAgRGVsZXRlICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcTmV0LVNOTVAgSGVscC5sbmsiCiAgIERlbGV0ZSAiJFNNUFJPR1JBTVNcJElDT05TX0dST1VQXFVuaW5zdGFsbC5sbmsiCkBAIC0xMjcwLDggKzEzNzIsNiBAQAogICBEZWxldGUgIiRJTlNURElSXGxpYlxuZXRzbm1wbWlicy5saWIiCiAgIERlbGV0ZSAiJElOU1RESVJcbGliXG5ldHNubXAuZXhwIgogICAKLSAgUk1EaXIgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlIgotICBSTURpciAiJFNNUFJPR1JBTVNcJElDT05TX0dST1VQIgogICBSTURpciAiJElOU1RESVJccGVybFx4ODYiCiAgIFJNRGlyICIkSU5TVERJUlxwZXJsIgogICBSTURpciAiJElOU1RESVJcbGliIgpAQCAtMTI5NSw2ICsxMzk1LDcgQEAKICAgUk1EaXIgIiRJTlNURElSXHNoYXJlIgogCiAgIFJNRGlyICIkSU5TVERJUlx0ZW1wIgorICBSTURpciAiJElOU1RESVJcc25tcFxwZXJzaXN0XG1pYl9pbmRleGVzIgogICBSTURpciAiJElOU1RESVJcc25tcFxwZXJzaXN0IgogICBSTURpciAiJElOU1RESVJcc25tcCIKICAgUk1EaXIgIiRJTlNURElSXGV0Y1xzbm1wIgpAQCAtMTMwNCw2ICsxNDA1LDMxIEBACiAgIFJNRGlyICIkSU5TVERJUlxpbmNsdWRlIgogICBSTURpciAiJElOU1RESVJcbG9nIgogICBSTURpciAiJElOU1RESVIiCisgIAorICA7IFN0YXJ0IE1lbnUgZW50cmllcyBtYXkgaGF2ZSBiZWVuIGluc3RhbGxlZCBmb3IgdGhlIGN1cnJlbnQgdXNlciBvbmx5LAorICA7IG9yIGZvciBBbGwgVXNlcnMuICBTbyBsZXQncyBkZWxldGUgYm90aCBzZXRzLi4uLgorICBTZXRTaGVsbFZhckNvbnRleHQgY3VycmVudAorICBEZWxldGUgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxVbmluc3RhbGwubG5rIgorICBEZWxldGUgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxOZXQtU05NUCBIZWxwLmxuayIKKyAgRGVsZXRlICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcUkVBRE1FLmxuayIKKyAgRGVsZXRlICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxSZWdpc3RlciBBZ2VudCBTZXJ2aWNlLmxuayIKKyAgRGVsZXRlICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxVbnJlZ2lzdGVyIEFnZW50IFNlcnZpY2UubG5rIgorICBEZWxldGUgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlXFJlZ2lzdGVyIFRyYXAgU2VydmljZS5sbmsiCisgIERlbGV0ZSAiJFNNUFJPR1JBTVNcJElDT05TX0dST1VQXFNlcnZpY2VcVW5yZWdpc3RlciBUcmFwIFNlcnZpY2UubG5rIgorICBSTURpciAiJFNNUFJPR1JBTVNcJElDT05TX0dST1VQXFNlcnZpY2UiCisgIFJNRGlyICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVAiCisKKyAgU2V0U2hlbGxWYXJDb250ZXh0IGFsbAorICBEZWxldGUgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxVbmluc3RhbGwubG5rIgorICBEZWxldGUgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxOZXQtU05NUCBIZWxwLmxuayIKKyAgRGVsZXRlICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcUkVBRE1FLmxuayIKKyAgRGVsZXRlICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxSZWdpc3RlciBBZ2VudCBTZXJ2aWNlLmxuayIKKyAgRGVsZXRlICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxVbnJlZ2lzdGVyIEFnZW50IFNlcnZpY2UubG5rIgorICBEZWxldGUgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlXFJlZ2lzdGVyIFRyYXAgU2VydmljZS5sbmsiCisgIERlbGV0ZSAiJFNNUFJPR1JBTVNcJElDT05TX0dST1VQXFNlcnZpY2VcVW5yZWdpc3RlciBUcmFwIFNlcnZpY2UubG5rIgorICBSTURpciAiJFNNUFJPR1JBTVNcJElDT05TX0dST1VQXFNlcnZpY2UiCisgIFJNRGlyICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVAiCisgIAogICA7IERlbGV0ZSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzCiAgIDtQdXNoICJTTk1QQ09ORlBBVEgiCiAgIDtDYWxsIHVuLkRlbGV0ZUVudlN0cgpAQCAtMTMyMSwxMyArMTQ0NywyMyBAQAogCiBGdW5jdGlvbiBJc1NTTEluc3RhbGxlZAogICBQdXNoICRSMAotICBSZWFkRW52U3RyICRSMCAiT1BFTlNTTF9DT05GIgotICBJZkZpbGVFeGlzdHMgIiRSMCIgMCBub1NTTAotICAgIEdvdG8gY29udGludWVJbnN0YWxsCisgIFB1c2ggJFIxCisKKyAgR2V0RExMVmVyc2lvbiBsaWJlYXkzMi5kbGwgJFIwICRSMQorICBJZkVycm9ycyBub1NTTAorCisgIDsgQ29udGludWUgaW5zdGFsbGluZyBpZiB0aGUgRExMIHZlcnNpb24gaXMgPj0gMS4wLjAuMAorICBJbnRDbXBVIDY1NTM2ICRSMCBjb250aW51ZUluc3RhbGwgY29udGludWVJbnN0YWxsCisKKyAgTWVzc2FnZUJveCBNQl9PSyAiVGhpcyBwYWNrYWdlIGlzIGtub3duIG5vdCB0byB3b3JrIHdpdGggT3BlblNTTCB2ZXJzaW9ucyBiZWZvcmUgMS4wLjAuICBQbGVhc2UgaW5zdGFsbCB0aGUgbGF0ZXN0IE9wZW5TU0wgdmVyc2lvbiBmcm9tIGh0dHA6Ly93d3cuc2xwcm93ZWIuY29tL3Byb2R1Y3RzL1dpbjMyT3BlblNTTC5odG1sIGFuZCB0cnkgYWdhaW4uIgorICBRdWl0CisKICAgbm9TU0w6CiAgICAgTWVzc2FnZUJveCBNQl9ZRVNOT3xNQl9JQ09OUVVFU1RJT04gIk9wZW5TU0wgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGluc3RhbGxlZC4gIE9wZW5TU0wgaXMgcmVxdWlyZWQgZm9yIHRoaXMgaW5zdGFsbGF0aW9uIG9mIE5ldC1TTk1QLiAgUGxlYXNlIGluc3RhbGwgT3BlblNTTCBmcm9tIGh0dHA6Ly93d3cuc2xwcm93ZWIuY29tL3Byb2R1Y3RzL1dpbjMyT3BlblNTTC5odG1sIGFuZCB0cnkgYWdhaW4uICBXb3VsZCB5b3UgbGlrZSB0byBjb250aW51ZSBpbnN0YWxsaW5nIGFueXdheXM/IiBJRFlFUyBjb250aW51ZUluc3RhbGwKICAgUXVpdAorICAKICAgY29udGludWVJbnN0YWxsOgorICBQb3AgJFIxCiAgIFBvcCAkUjAKIEZ1bmN0aW9uRW5kCiAKZGlmZiAtLWdpdCBhL3dpbjMyL2VuY29kZV9rZXljaGFuZ2UvZW5jb2RlX2tleWNoYW5nZS5kc3AgYi93aW4zMi9lbmNvZGVfa2V5Y2hhbmdlL2VuY29kZV9rZXljaGFuZ2UuZHNwCmluZGV4IDVlMTkzNjYuLjVhMjUyZjUgMTAwNjQ0Ci0tLSBhL3dpbjMyL2VuY29kZV9rZXljaGFuZ2UvZW5jb2RlX2tleWNoYW5nZS5kc3AKKysrIGIvd2luMzIvZW5jb2RlX2tleWNoYW5nZS9lbmNvZGVfa2V5Y2hhbmdlLmRzcApAQCAtNTAsNyArNTAsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL2VuY29kZV9rZXljaGFuZ2UuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL2VuY29kZV9rZXljaGFuZ2UuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQogDQogIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImVuY29kZV9rZXljaGFuZ2UgLSBXaW4zMiBEZWJ1ZyINCiANCkBAIC03NCw3ICs3NCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9lbmNvZGVfa2V5Y2hhbmdlLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL2VuY29kZV9rZXljaGFuZ2UuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQogDQogIUVORElGIA0KIA0KZGlmZiAtLWdpdCBhL3dpbjMyL2xpYnNubXAvTWFrZWZpbGUuaW4gYi93aW4zMi9saWJzbm1wL01ha2VmaWxlLmluCmluZGV4IDUxZjVkNGYuLjk4ZDgzYzggMTAwNjQ0Ci0tLSBhL3dpbjMyL2xpYnNubXAvTWFrZWZpbGUuaW4KKysrIGIvd2luMzIvbGlic25tcC9NYWtlZmlsZS5pbgpAQCAtMTcsNyArMTcsNiBAQAogCSIkKElOVERJUilcY2FsbGJhY2sub2JqIiBcCiAJIiQoSU5URElSKVxjaGVja192YXJiaW5kLm9iaiIgXAogCSIkKElOVERJUilcY2xvc2VkaXIub2JqIiBcCi0JIiQoSU5URElSKVxjbXVfY29tcGF0Lm9iaiIgXAogCSIkKElOVERJUilcY29udGFpbmVyLm9iaiIgXAogCSIkKElOVERJUilcY29udGFpbmVyX2JpbmFyeV9hcnJheS5vYmoiIFwKIAkiJChJTlRESVIpXGNvbnRhaW5lcl9pdGVyYXRvci5vYmoiIFwKQEAgLTk1LDkgKzk0LDkgQEAKIAogQ1BQPWNsLmV4ZQogIUlGICAiJChDRkcpIiA9PSAicmVsZWFzZSIKLUNQUF9QUk9KPS9ub2xvZ28gL01EIC9XMyAvRUhzYyAvWmkgL08yIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIgL0QgIl9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyIgL0QgIl9NQkNTIiAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAorQ1BQX1BST0o9L25vbG9nbyAvTUQgL1czIC9FSHNjIC9aaSAvTzIgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiIC9EICJfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiIC9EICJfTUJDUyIgL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKICFFTFNFSUYgICIkKENGRykiID09ICJkZWJ1ZyIKLUNQUF9QUk9KPS9ub2xvZ28gL01EZCAvVzMgL0dtIC9FSHNjIC9aaSAvT2QgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIiAvRCAiX0NSVF9OT05TVERDX05PX1dBUk5JTkdTIiAvRCAiX01CQ1MiIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCitDUFBfUFJPSj0vbm9sb2dvIC9NRGQgL1czIC9HbSAvRUhzYyAvWmkgL09kIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIiAvRCAiX0NSVF9OT05TVERDX05PX1dBUk5JTkdTIiAvRCAiX01CQ1MiIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCiAhRU5ESUYKIAogLmN7JChJTlRESVIpfS5vYmo6OgpAQCAtMTU4LDEyICsxNTcsNiBAQAogCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKIAogCi1TT1VSQ0U9Li5cLi5cc25tcGxpYlxjbXVfY29tcGF0LmMKLQotIiQoSU5URElSKVxjbXVfY29tcGF0Lm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQogU09VUkNFPS4uXC4uXHNubXBsaWJcY29udGFpbmVyLmMKIAogIiQoSU5URElSKVxjb250YWluZXIub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgpkaWZmIC0tZ2l0IGEvd2luMzIvbGlic25tcC9saWJzbm1wLmRzcCBiL3dpbjMyL2xpYnNubXAvbGlic25tcC5kc3AKaW5kZXggNjQ0ODgwMi4uMjM4NjMzMSAxMDA2NDQKLS0tIGEvd2luMzIvbGlic25tcC9saWJzbm1wLmRzcAorKysgYi93aW4zMi9saWJzbm1wL2xpYnNubXAuZHNwCkBAIC0xMDEsMTAgKzEwMSw2IEBACiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCiANCi1TT1VSQ0U9Li5cLi5cc25tcGxpYlxjbXVfY29tcGF0LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCiBTT1VSQ0U9Li5cLi5cc25tcGxpYlxjb250YWluZXIuYw0KICMgRW5kIFNvdXJjZSBGaWxlDQogIyBCZWdpbiBTb3VyY2UgRmlsZQ0KQEAgLTM2OSwxMCArMzY1LDYgQEAKICMgRW5kIFNvdXJjZSBGaWxlDQogIyBCZWdpbiBTb3VyY2UgRmlsZQ0KIA0KLVNPVVJDRT0iLi5cLi5caW5jbHVkZVxuZXQtc25tcFxsaWJyYXJ5XGNtdV9jb21wYXQuaCINCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCiBTT1VSQ0U9Ii4uXC4uXGluY2x1ZGVcbmV0LXNubXBcbGlicmFyeVxjb250YWluZXIuaCINCiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCmRpZmYgLS1naXQgYS93aW4zMi9saWJzbm1wX2RsbC9NYWtlZmlsZS5pbiBiL3dpbjMyL2xpYnNubXBfZGxsL01ha2VmaWxlLmluCmluZGV4IDMxYWUxYmQuLjBhYWY0MWIgMTAwNjQ0Ci0tLSBhL3dpbjMyL2xpYnNubXBfZGxsL01ha2VmaWxlLmluCisrKyBiL3dpbjMyL2xpYnNubXBfZGxsL01ha2VmaWxlLmluCkBAIC0yLDcgKzIsNiBAQAogQ0ZHPQogT1VURElSPQogSU5URElSPQotU1NMPQogU0RLPQogCiAhSUYgIiQoT1MpIiA9PSAiV2luZG93c19OVCIKQEAgLTE4LDcgKzE3LDYgQEAKIAkiJChJTlRESVIpXGNhbGxiYWNrLm9iaiIgXAogCSIkKElOVERJUilcY2hlY2tfdmFyYmluZC5vYmoiIFwKIAkiJChJTlRESVIpXGNsb3NlZGlyLm9iaiIgXAotCSIkKElOVERJUilcY211X2NvbXBhdC5vYmoiIFwKIAkiJChJTlRESVIpXGNvbnRhaW5lci5vYmoiIFwKIAkiJChJTlRESVIpXGNvbnRhaW5lcl9iaW5hcnlfYXJyYXkub2JqIiBcCiAJIiQoSU5URElSKVxjb250YWluZXJfaXRlcmF0b3Iub2JqIiBcCkBAIC0xNzQsMTIgKzE3Miw2IEBACiAJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQogCiAKLVNPVVJDRT0uLlwuLlxzbm1wbGliXGNtdV9jb21wYXQuYwotCi0iJChJTlRESVIpXGNtdV9jb21wYXQub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCiBTT1VSQ0U9Li5cLi5cc25tcGxpYlxjb250YWluZXIuYwogCiAiJChJTlRESVIpXGNvbnRhaW5lci5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCmRpZmYgLS1naXQgYS93aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wX2RsbC5kc3AgYi93aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wX2RsbC5kc3AKaW5kZXggNjQwN2Q0Mi4uMTJjMDQxNCAxMDA2NDQKLS0tIGEvd2luMzIvbGlic25tcF9kbGwvbGlic25tcF9kbGwuZHNwCisrKyBiL3dpbjMyL2xpYnNubXBfZGxsL2xpYnNubXBfZGxsLmRzcApAQCAtMTA4LDEwICsxMDgsNiBAQAogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQogDQotU09VUkNFPS4uXC4uXHNubXBsaWJcY211X2NvbXBhdC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQogU09VUkNFPS4uXC4uXHNubXBsaWJcY29udGFpbmVyLmMNCiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCkBAIC0zNzYsMTAgKzM3Miw2IEBACiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCiANCi1TT1VSQ0U9Ii4uXC4uXGluY2x1ZGVcbmV0LXNubXBcbGlicmFyeVxjbXVfY29tcGF0LmgiDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQogU09VUkNFPSIuLlwuLlxpbmNsdWRlXG5ldC1zbm1wXGxpYnJhcnlcY29udGFpbmVyLmgiDQogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQpkaWZmIC0tZ2l0IGEvd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmggYi93aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAppbmRleCA3ZDZlM2I3Li4xMzExOTFiIDEwMDY0NAotLS0gYS93aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorKysgYi93aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaApAQCAtMTU4MiwxNSArMTU4MiwxNCBAQAogI2lmbmRlZiBIQVZFX1NURElOVF9ICiB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludDhfdDsKIHR5cGVkZWYgY2hhciBpbnQ4X3Q7Ci10eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVpbnQxNl90OwotdHlwZWRlZiBzaG9ydCBpbnQxNl90OwordHlwZWRlZiB1bnNpZ25lZCBfX2ludDE2IHVpbnQxNl90OwordHlwZWRlZiBfX2ludDE2IGludDE2X3Q7CiB0eXBlZGVmIHVuc2lnbmVkIF9faW50MzIgdWludDMyX3Q7Ci10eXBlZGVmIGxvbmcgaW50MzJfdDsKK3R5cGVkZWYgX19pbnQzMiBpbnQzMl90OwogdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IHVpbnQ2NF90OwogdHlwZWRlZiBfX2ludDY0IGludDY0X3Q7CiB0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgdWludG1heF90OwogdHlwZWRlZiBfX2ludDY0IGludG1heF90OwotdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCAgIHVpbnQxNl90OwogI2Vsc2UgLyogSEFWRV9TVERJTlRfSCAqLwogI2luY2x1ZGUgPHN0ZGludC5oPgogI2VuZGlmIC8qIEhBVkVfU1RESU5UX0ggKi8KQEAgLTE2NzcsNyArMTY3Niw3IEBACiAvKiBNU1ZDIE9wZW5TU0wgbGlua2VyIHNldHRpbmdzLiAqLwogI2lmIGRlZmluZWQoX01TQ19WRVIpCiAjICBpZiBkZWZpbmVkKE5FVFNOTVBfVVNFX09QRU5TU0wpCi0jICAgIGlmZGVmIE5FVFNOTVBfVVNFX0RMTAorIyAgICBpZmRlZiBfRExMCiAjICAgICAgaWZkZWYgX0RFQlVHCiAjICAgICAgICBwcmFnbWEgY29tbWVudChsaWIsICJsaWJlYXkzMk1EZC5saWIiKQogIyAgICAgIGVsc2UKQEAgLTE2OTEsNiArMTY5MCw3IEBACiAjICAgICAgZW5kaWYKICMgICAgZW5kaWYKICMgICAgcHJhZ21hIGNvbW1lbnQobGliLCAiZ2RpMzIubGliIikKKyMgICAgcHJhZ21hIGNvbW1lbnQobGliLCAidXNlcjMyLmxpYiIpCiAjICBlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL3dpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluIGIvd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4KaW5kZXggMDRhYTk5Yy4uZjIzNTc1OCAxMDA2NDQKLS0tIGEvd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4KKysrIGIvd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4KQEAgLTE1ODIsMTUgKzE1ODIsMTQgQEAKICNpZm5kZWYgSEFWRV9TVERJTlRfSAogdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4X3Q7CiB0eXBlZGVmIGNoYXIgaW50OF90OwotdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1aW50MTZfdDsKLXR5cGVkZWYgc2hvcnQgaW50MTZfdDsKK3R5cGVkZWYgdW5zaWduZWQgX19pbnQxNiB1aW50MTZfdDsKK3R5cGVkZWYgX19pbnQxNiBpbnQxNl90OwogdHlwZWRlZiB1bnNpZ25lZCBfX2ludDMyIHVpbnQzMl90OwotdHlwZWRlZiBsb25nIGludDMyX3Q7Cit0eXBlZGVmIF9faW50MzIgaW50MzJfdDsKIHR5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCB1aW50NjRfdDsKIHR5cGVkZWYgX19pbnQ2NCBpbnQ2NF90OwogdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IHVpbnRtYXhfdDsKIHR5cGVkZWYgX19pbnQ2NCBpbnRtYXhfdDsKLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgICB1aW50MTZfdDsKICNlbHNlIC8qIEhBVkVfU1RESU5UX0ggKi8KICNpbmNsdWRlIDxzdGRpbnQuaD4KICNlbmRpZiAvKiBIQVZFX1NURElOVF9IICovCkBAIC0xNjc3LDcgKzE2NzYsNyBAQAogLyogTVNWQyBPcGVuU1NMIGxpbmtlciBzZXR0aW5ncy4gKi8KICNpZiBkZWZpbmVkKF9NU0NfVkVSKQogIyAgaWYgZGVmaW5lZChORVRTTk1QX1VTRV9PUEVOU1NMKQotIyAgICBpZmRlZiBORVRTTk1QX1VTRV9ETEwKKyMgICAgaWZkZWYgX0RMTAogIyAgICAgIGlmZGVmIF9ERUJVRwogIyAgICAgICAgcHJhZ21hIGNvbW1lbnQobGliLCAibGliZWF5MzJNRGQubGliIikKICMgICAgICBlbHNlCkBAIC0xNjkxLDYgKzE2OTAsNyBAQAogIyAgICAgIGVuZGlmCiAjICAgIGVuZGlmCiAjICAgIHByYWdtYSBjb21tZW50KGxpYiwgImdkaTMyLmxpYiIpCisjICAgIHByYWdtYSBjb21tZW50KGxpYiwgInVzZXIzMi5saWIiKQogIyAgZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wYnVsa2dldC9zbm1wYnVsa2dldC5kc3AgYi93aW4zMi9zbm1wYnVsa2dldC9zbm1wYnVsa2dldC5kc3AKaW5kZXggZmU1ZTVhZS4uMzk1OTlkYiAxMDA2NDQKLS0tIGEvd2luMzIvc25tcGJ1bGtnZXQvc25tcGJ1bGtnZXQuZHNwCisrKyBiL3dpbjMyL3NubXBidWxrZ2V0L3NubXBidWxrZ2V0LmRzcApAQCAtNTAsNyArNTAsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXBidWxrZ2V0LmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wYnVsa2dldC5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCiANCiAhRUxTRUlGICAiJChDRkcpIiA9PSAic25tcGJ1bGtnZXQgLSBXaW4zMiBEZWJ1ZyINCiANCkBAIC03NCw3ICs3NCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wYnVsa2dldC5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wYnVsa2dldC5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCiANCiAhRU5ESUYgDQogDQpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcGJ1bGt3YWxrL3NubXBidWxrd2Fsay5kc3AgYi93aW4zMi9zbm1wYnVsa3dhbGsvc25tcGJ1bGt3YWxrLmRzcAppbmRleCBlYThiYjBjLi45MWU5NGQzIDEwMDY0NAotLS0gYS93aW4zMi9zbm1wYnVsa3dhbGsvc25tcGJ1bGt3YWxrLmRzcAorKysgYi93aW4zMi9zbm1wYnVsa3dhbGsvc25tcGJ1bGt3YWxrLmRzcApAQCAtNTAsNyArNTAsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXBidWxrd2Fsay5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcGJ1bGt3YWxrLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KIA0KICFFTFNFSUYgICIkKENGRykiID09ICJzbm1wYnVsa3dhbGsgLSBXaW4zMiBEZWJ1ZyINCiANCkBAIC03NCw3ICs3NCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wYnVsa3dhbGsuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcGJ1bGt3YWxrLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KIA0KICFFTkRJRiANCiANCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wZC9NYWtlZmlsZS5pbiBiL3dpbjMyL3NubXBkL01ha2VmaWxlLmluCmluZGV4IDY1MmRkODAuLjFiMWIzYWMgMTAwNjQ0Ci0tLSBhL3dpbjMyL3NubXBkL01ha2VmaWxlLmluCisrKyBiL3dpbjMyL3NubXBkL01ha2VmaWxlLmluCkBAIC0zLDcgKzMsNiBAQAogT1VURElSPQogSU5URElSPQogU0RLPQotU1NMPQogTElOS1RZUEU9CiAKICMgU2V0IHRvIDEgdG8gYWxsb3cgdGhlIGJ1aWxkaW5nIHVzaW5nIHRoZSBETEwgdmVyc2lvbiBvZiBTTk1QTElCLgpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcGQvc25tcGQuZHNwIGIvd2luMzIvc25tcGQvc25tcGQuZHNwCmluZGV4IDU1MzQzMDYuLjQ1ZTJjYWQgMTAwNjQ0Ci0tLSBhL3dpbjMyL3NubXBkL3NubXBkLmRzcAorKysgYi93aW4zMi9zbm1wZC9zbm1wZC5kc3AKQEAgLTUwLDcgKzUwLDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBuZXRzbm1wYWdlbnQubGliIG5ldHNubXBtaWJzLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wZC5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcGQuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQogDQogIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInNubXBkIC0gV2luMzIgRGVidWciDQogDQpAQCAtNzQsNyArNzQsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIG5ldHNubXBhZ2VudC5saWIgbmV0c25tcG1pYnMubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcGQuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcGQuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQogDQogIUVORElGIA0KIA0KZGlmZiAtLWdpdCBhL3dpbjMyL3NubXBkZWx0YS9zbm1wZGVsdGEuZHNwIGIvd2luMzIvc25tcGRlbHRhL3NubXBkZWx0YS5kc3AKaW5kZXggYjE3YjgyMi4uN2Y1YTVkMyAxMDA2NDQKLS0tIGEvd2luMzIvc25tcGRlbHRhL3NubXBkZWx0YS5kc3AKKysrIGIvd2luMzIvc25tcGRlbHRhL3NubXBkZWx0YS5kc3AKQEAgLTUwLDcgKzUwLDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wZGVsdGEuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXBkZWx0YS5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCiANCiAhRUxTRUlGICAiJChDRkcpIiA9PSAic25tcGRlbHRhIC0gV2luMzIgRGVidWciDQogDQpAQCAtNzQsNyArNzQsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcGRlbHRhLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXBkZWx0YS5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCiANCiAhRU5ESUYgDQogDQpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcGRmL3NubXBkZi5kc3AgYi93aW4zMi9zbm1wZGYvc25tcGRmLmRzcAppbmRleCA4OGMzZjZkLi5lMmU0Yjk0IDEwMDY0NAotLS0gYS93aW4zMi9zbm1wZGYvc25tcGRmLmRzcAorKysgYi93aW4zMi9zbm1wZGYvc25tcGRmLmRzcApAQCAtNTAsNyArNTAsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXBkZi5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcGRmLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KIA0KICFFTFNFSUYgICIkKENGRykiID09ICJzbm1wZGYgLSBXaW4zMiBEZWJ1ZyINCiANCkBAIC03NCw3ICs3NCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wZGYuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcGRmLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KIA0KICFFTkRJRiANCiANCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wZ2V0L3NubXBnZXQuZHNwIGIvd2luMzIvc25tcGdldC9zbm1wZ2V0LmRzcAppbmRleCA2NDk4MGVkLi4wNjAzMjMyIDEwMDY0NAotLS0gYS93aW4zMi9zbm1wZ2V0L3NubXBnZXQuZHNwCisrKyBiL3dpbjMyL3NubXBnZXQvc25tcGdldC5kc3AKQEAgLTUwLDcgKzUwLDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wZ2V0LmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wZ2V0LmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KIA0KICFFTFNFSUYgICIkKENGRykiID09ICJzbm1wZ2V0IC0gV2luMzIgRGVidWciDQogDQpAQCAtNzQsNyArNzQsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcGdldC5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wZ2V0LmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KIA0KICFFTkRJRiANCiANCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wZ2V0bmV4dC9zbm1wZ2V0bmV4dC5kc3AgYi93aW4zMi9zbm1wZ2V0bmV4dC9zbm1wZ2V0bmV4dC5kc3AKaW5kZXggMjMzMTk5ZC4uY2I2M2M4NCAxMDA2NDQKLS0tIGEvd2luMzIvc25tcGdldG5leHQvc25tcGdldG5leHQuZHNwCisrKyBiL3dpbjMyL3NubXBnZXRuZXh0L3NubXBnZXRuZXh0LmRzcApAQCAtNTAsNyArNTAsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXBnZXRuZXh0LmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wZ2V0bmV4dC5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCiANCiAhRUxTRUlGICAiJChDRkcpIiA9PSAic25tcGdldG5leHQgLSBXaW4zMiBEZWJ1ZyINCiANCkBAIC03NCw3ICs3NCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wZ2V0bmV4dC5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wZ2V0bmV4dC5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCiANCiAhRU5ESUYgDQogDQpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4gYi93aW4zMi9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbgppbmRleCBlMjdkOTdkLi4wNWEwMWU4IDEwMDY0NAotLS0gYS93aW4zMi9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbgorKysgYi93aW4zMi9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbgpAQCAtMiw3ICsyLDYgQEAKIENGRz0KIE9VVERJUj0KIElOVERJUj0KLVNTTD0KIExJTktUWVBFPQogCiAjIFNldCB0byAxIHRvIGFsbG93IHRoZSBidWlsZGluZyB1c2luZyB0aGUgRExMIHZlcnNpb24gb2YgU05NUExJQi4KQEAgLTIzLDggKzIyLDEwIEBACiAJLUBlcmFzZSAiJChJTlRESVIpXGlmLm9iaiIKIAktQGVyYXNlICIkKElOVERJUilcaW5ldC5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXGluZXQ2Lm9iaiIKKwktQGVyYXNlICIkKElOVERJUilcaW5ldHgub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVxtYWluLm9iaiIKIAktQGVyYXNlICIkKElOVERJUilccm91dGUub2JqIgorCS1AZXJhc2UgIiQoSU5URElSKVxyb3V0ZXgub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVxmZnMub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVx2Yz8/LmlkYiIKIAktQGVyYXNlICIkKElOVERJUilcd2luc3R1Yi5vYmoiCkBAIC04Niw4ICs4NywxMCBAQAogCSIkKElOVERJUilcaWYub2JqIiBcCiAJIiQoSU5URElSKVxpbmV0Lm9iaiIgXAogCSIkKElOVERJUilcaW5ldDYub2JqIiBcCisJIiQoSU5URElSKVxpbmV0eC5vYmoiIFwKIAkiJChJTlRESVIpXG1haW4ub2JqIiBcCiAJIiQoSU5URElSKVxyb3V0ZS5vYmoiIFwKKwkiJChJTlRESVIpXHJvdXRleC5vYmoiIFwKIAkiJChJTlRESVIpXGZmcy5vYmoiIFwKIAkiJChJTlRESVIpXHdpbnN0dWIub2JqIgogCkBAIC0xMTYsMTAgKzExOSwxNCBAQAogCS1AZXJhc2UgIiQoSU5URElSKVxpbmV0LnNiciIKIAktQGVyYXNlICIkKElOVERJUilcaW5ldDYub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVxpbmV0Ni5zYnIiCisJLUBlcmFzZSAiJChJTlRESVIpXGluZXR4Lm9iaiIKKwktQGVyYXNlICIkKElOVERJUilcaW5ldHguc2JyIgogCS1AZXJhc2UgIiQoSU5URElSKVxtYWluLm9iaiIKIAktQGVyYXNlICIkKElOVERJUilcbWFpbi5zYnIiCiAJLUBlcmFzZSAiJChJTlRESVIpXHJvdXRlLm9iaiIKIAktQGVyYXNlICIkKElOVERJUilccm91dGUuc2JyIgorCS1AZXJhc2UgIiQoSU5URElSKVxyb3V0ZXgub2JqIgorCS1AZXJhc2UgIiQoSU5URElSKVxyb3V0ZXguc2JyIgogCS1AZXJhc2UgIiQoSU5URElSKVxmZnMub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVxmZnMuc2JyIgogCS1AZXJhc2UgIiQoSU5URElSKVx2Yz8/LmlkYiIKQEAgLTE4Miw4ICsxODksMTAgQEAKIAkiJChJTlRESVIpXGlmLnNiciIgXAogCSIkKElOVERJUilcaW5ldC5zYnIiIFwKIAkiJChJTlRESVIpXGluZXQ2LnNiciIgXAorCSIkKElOVERJUilcaW5ldHguc2JyIiBcCiAJIiQoSU5URElSKVxtYWluLnNiciIgXAogCSIkKElOVERJUilccm91dGUuc2JyIiBcCisJIiQoSU5URElSKVxyb3V0ZXguc2JyIiBcCiAJIiQoSU5URElSKVxmZnMuc2JyIiBcCiAJIiQoSU5URElSKVx3aW5zdHViLnNiciIKIApAQCAtMTk4LDggKzIwNywxMCBAQAogCSIkKElOVERJUilcaWYub2JqIiBcCiAJIiQoSU5URElSKVxpbmV0Lm9iaiIgXAogCSIkKElOVERJUilcaW5ldDYub2JqIiBcCisJIiQoSU5URElSKVxpbmV0eC5vYmoiIFwKIAkiJChJTlRESVIpXG1haW4ub2JqIiBcCiAJIiQoSU5URElSKVxyb3V0ZS5vYmoiIFwKKwkiJChJTlRESVIpXHJvdXRleC5vYmoiIFwKIAkiJChJTlRESVIpXGZmcy5vYmoiIFwKIAkiJChJTlRESVIpXHdpbnN0dWIub2JqIgogCkBAIC0yODMsNiArMjk0LDExIEBACiAKICFFTkRJRiAKIAorU09VUkNFPS4uXC4uXGFwcHNcJChQUk9HTkFNRSlcaW5ldHguYworCisiJChJTlRESVIpXGluZXR4Lm9iaiIJIiQoSU5URElSKVxpbmV0eC5zYnIiIDogJChTT1VSQ0UpICIkKElOVERJUikiCisJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQorCiBTT1VSQ0U9Li5cLi5cYXBwc1wkKFBST0dOQU1FKVxtYWluLmMKIAogIUlGICAiJChDRkcpIiA9PSAicmVsZWFzZSIKQEAgLTMxOSw2ICszMzUsMTEgQEAKIAogIUVORElGIAogCitTT1VSQ0U9Li5cLi5cYXBwc1wkKFBST0dOQU1FKVxyb3V0ZXguYworCisiJChJTlRESVIpXHJvdXRleC5vYmoiCSIkKElOVERJUilccm91dGV4LnNiciIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKKwkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCisKIFNPVVJDRT0uLlwuLlxhcHBzXCQoUFJPR05BTUUpXGZmcy5jCiAKICFJRiAgIiQoQ0ZHKSIgPT0gInJlbGVhc2UiCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wbmV0c3RhdC9zbm1wbmV0c3RhdC5kc3AgYi93aW4zMi9zbm1wbmV0c3RhdC9zbm1wbmV0c3RhdC5kc3AKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAyNWVjMDMxLi4yZWRhNTc1Ci0tLSBhL3dpbjMyL3NubXBuZXRzdGF0L3NubXBuZXRzdGF0LmRzcAorKysgYi93aW4zMi9zbm1wbmV0c3RhdC9zbm1wbmV0c3RhdC5kc3AKQEAgLTUwLDcgKzUwLDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wbmV0c3RhdC5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcG5ldHN0YXQuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQogDQogIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInNubXBuZXRzdGF0IC0gV2luMzIgRGVidWciDQogDQpAQCAtNzQsNyArNzQsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcG5ldHN0YXQuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcG5ldHN0YXQuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQogDQogIUVORElGIA0KIA0KQEAgLTg0LDYgKzg0LDEwIEBACiAjIE5hbWUgInNubXBuZXRzdGF0IC0gV2luMzIgRGVidWciDQogIyBCZWdpbiBTb3VyY2UgRmlsZQ0KIA0KK1NPVVJDRT0uLlwuLlxhcHBzXHNubXBuZXRzdGF0XGZmcy5jDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQogU09VUkNFPS4uXC4uXGFwcHNcc25tcG5ldHN0YXRcaWYuYw0KICMgRW5kIFNvdXJjZSBGaWxlDQogIyBCZWdpbiBTb3VyY2UgRmlsZQ0KQEAgLTk2LDYgKzEwMCwxMCBAQAogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQogDQorU09VUkNFPS4uXC4uXGFwcHNcc25tcG5ldHN0YXRcaW5ldHguYw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KIFNPVVJDRT0uLlwuLlxhcHBzXHNubXBuZXRzdGF0XG1haW4uYw0KICMgRW5kIFNvdXJjZSBGaWxlDQogIyBCZWdpbiBTb3VyY2UgRmlsZQ0KQEAgLTEwNCw3ICsxMTIsNyBAQAogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQogDQotU09VUkNFPS4uXC4uXGFwcHNcc25tcG5ldHN0YXRcZmZzLmMNCitTT1VSQ0U9Li5cLi5cYXBwc1xzbm1wbmV0c3RhdFxyb3V0ZXguYw0KICMgRW5kIFNvdXJjZSBGaWxlDQogIyBCZWdpbiBTb3VyY2UgRmlsZQ0KIA0KZGlmZiAtLWdpdCBhL3dpbjMyL3NubXBzZXQvc25tcHNldC5kc3AgYi93aW4zMi9zbm1wc2V0L3NubXBzZXQuZHNwCmluZGV4IGZkZWNhMzAuLmFkMGY1MDkgMTAwNjQ0Ci0tLSBhL3dpbjMyL3NubXBzZXQvc25tcHNldC5kc3AKKysrIGIvd2luMzIvc25tcHNldC9zbm1wc2V0LmRzcApAQCAtNTAsNyArNTAsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXBzZXQuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXBzZXQuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQogDQogIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInNubXBzZXQgLSBXaW4zMiBEZWJ1ZyINCiANCkBAIC03NCw3ICs3NCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wc2V0LmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXBzZXQuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQogDQogIUVORElGIA0KIA0KZGlmZiAtLWdpdCBhL3dpbjMyL3NubXBzbV9pbml0LmggYi93aW4zMi9zbm1wc21faW5pdC5oCmluZGV4IDgwMTVmZjYuLmM4YTQxMGIgMTAwNjQ0Ci0tLSBhL3dpbjMyL3NubXBzbV9pbml0LmgKKysrIGIvd2luMzIvc25tcHNtX2luaXQuaApAQCAtMSwyICsxIEBACi0vKiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgY29uZmlndXJlLiAgRG8gbm90IG1vZGlmeSBieSBoYW5kLiAqLwogaW5pdF91c20oKTsKZGlmZiAtLWdpdCBhL3dpbjMyL3NubXBzbV9zaHV0ZG93bi5oIGIvd2luMzIvc25tcHNtX3NodXRkb3duLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGUwYzU1MQotLS0gL2Rldi9udWxsCisrKyBiL3dpbjMyL3NubXBzbV9zaHV0ZG93bi5oCkBAIC0wLDAgKzEgQEAKK3NodXRkb3duX3VzbSgpOwpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcHN0YXR1cy9zbm1wc3RhdHVzLmRzcCBiL3dpbjMyL3NubXBzdGF0dXMvc25tcHN0YXR1cy5kc3AKaW5kZXggMWI2ODM3My4uZTZhNDEwMCAxMDA2NDQKLS0tIGEvd2luMzIvc25tcHN0YXR1cy9zbm1wc3RhdHVzLmRzcAorKysgYi93aW4zMi9zbm1wc3RhdHVzL3NubXBzdGF0dXMuZHNwCkBAIC01MCw3ICs1MCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcHN0YXR1cy5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcHN0YXR1cy5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCiANCiAhRUxTRUlGICAiJChDRkcpIiA9PSAic25tcHN0YXR1cyAtIFdpbjMyIERlYnVnIg0KIA0KQEAgLTc0LDcgKzc0LDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXBzdGF0dXMuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcHN0YXR1cy5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCiANCiAhRU5ESUYgDQogDQpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcHRhYmxlL3NubXB0YWJsZS5kc3AgYi93aW4zMi9zbm1wdGFibGUvc25tcHRhYmxlLmRzcAppbmRleCA3NWY5NjRmLi4xZGZjMTM4IDEwMDY0NAotLS0gYS93aW4zMi9zbm1wdGFibGUvc25tcHRhYmxlLmRzcAorKysgYi93aW4zMi9zbm1wdGFibGUvc25tcHRhYmxlLmRzcApAQCAtNTAsNyArNTAsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXB0YWJsZS5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcHRhYmxlLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KIA0KICFFTFNFSUYgICIkKENGRykiID09ICJzbm1wdGFibGUgLSBXaW4zMiBEZWJ1ZyINCiANCkBAIC03NCw3ICs3NCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wdGFibGUuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcHRhYmxlLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KIA0KICFFTkRJRiANCiANCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wdGVzdC9zbm1wdGVzdC5kc3AgYi93aW4zMi9zbm1wdGVzdC9zbm1wdGVzdC5kc3AKaW5kZXggZGZiMGNmMS4uODljMDhlOSAxMDA2NDQKLS0tIGEvd2luMzIvc25tcHRlc3Qvc25tcHRlc3QuZHNwCisrKyBiL3dpbjMyL3NubXB0ZXN0L3NubXB0ZXN0LmRzcApAQCAtNTAsNyArNTAsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXB0ZXN0LmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wdGVzdC5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCiANCiAhRUxTRUlGICAiJChDRkcpIiA9PSAic25tcHRlc3QgLSBXaW4zMiBEZWJ1ZyINCiANCkBAIC03NCw3ICs3NCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wdGVzdC5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wdGVzdC5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCiANCiAhRU5ESUYgDQogDQpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcHRyYW5zbGF0ZS9zbm1wdHJhbnNsYXRlLmRzcCBiL3dpbjMyL3NubXB0cmFuc2xhdGUvc25tcHRyYW5zbGF0ZS5kc3AKaW5kZXggYTNlYmRlNS4uYzNlY2EwMiAxMDA2NDQKLS0tIGEvd2luMzIvc25tcHRyYW5zbGF0ZS9zbm1wdHJhbnNsYXRlLmRzcAorKysgYi93aW4zMi9zbm1wdHJhbnNsYXRlL3NubXB0cmFuc2xhdGUuZHNwCkBAIC01MCw3ICs1MCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcHRyYW5zbGF0ZS5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcHRyYW5zbGF0ZS5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCiANCiAhRUxTRUlGICAiJChDRkcpIiA9PSAic25tcHRyYW5zbGF0ZSAtIFdpbjMyIERlYnVnIg0KIA0KQEAgLTc0LDcgKzc0LDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXB0cmFuc2xhdGUuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcHRyYW5zbGF0ZS5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCiANCiAhRU5ESUYgDQogDQpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcHRyYXAvc25tcHRyYXAuZHNwIGIvd2luMzIvc25tcHRyYXAvc25tcHRyYXAuZHNwCmluZGV4IDhkMjdlZTEuLmMzNGZmZDggMTAwNjQ0Ci0tLSBhL3dpbjMyL3NubXB0cmFwL3NubXB0cmFwLmRzcAorKysgYi93aW4zMi9zbm1wdHJhcC9zbm1wdHJhcC5kc3AKQEAgLTUwLDcgKzUwLDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wdHJhcC5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcHRyYXAuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQogDQogIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInNubXB0cmFwIC0gV2luMzIgRGVidWciDQogDQpAQCAtNzQsNyArNzQsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcHRyYXAuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcHRyYXAuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQogDQogIUVORElGIA0KIA0KZGlmZiAtLWdpdCBhL3dpbjMyL3NubXB0cmFwZC9NYWtlZmlsZS5pbiBiL3dpbjMyL3NubXB0cmFwZC9NYWtlZmlsZS5pbgppbmRleCBkYzRmZTUwLi4yZmE1Y2NiIDEwMDY0NAotLS0gYS93aW4zMi9zbm1wdHJhcGQvTWFrZWZpbGUuaW4KKysrIGIvd2luMzIvc25tcHRyYXBkL01ha2VmaWxlLmluCkBAIC0yLDcgKzIsNiBAQAogQ0ZHPQogT1VURElSPQogSU5URElSPQotU1NMPQogTElOS1RZUEU9CiAKICMgU2V0IHRvIDEgdG8gYWxsb3cgdGhlIGJ1aWxkaW5nIHVzaW5nIHRoZSBETEwgdmVyc2lvbiBvZiBTTk1QTElCLgpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcHRyYXBkL3NubXB0cmFwZC5kc3AgYi93aW4zMi9zbm1wdHJhcGQvc25tcHRyYXBkLmRzcAppbmRleCA1MDM5MThhLi45ZjQ5Mzg5IDEwMDY0NAotLS0gYS93aW4zMi9zbm1wdHJhcGQvc25tcHRyYXBkLmRzcAorKysgYi93aW4zMi9zbm1wdHJhcGQvc25tcHRyYXBkLmRzcApAQCAtNTAsNyArNTAsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIG5ldHNubXBhZ2VudC5saWIgbmV0c25tcG1pYnMubGliIG5ldHNubXB0cmFwZC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcHRyYXBkLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wdHJhcGQuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQogDQogIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInNubXB0cmFwZCAtIFdpbjMyIERlYnVnIg0KIA0KQEAgLTc0LDcgKzc0LDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBuZXRzbm1wYWdlbnQubGliIG5ldHNubXBtaWJzLmxpYiBuZXRzbm1wdHJhcGQubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcHRyYXBkLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXB0cmFwZC5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCiANCiAhRU5ESUYgDQogDQpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcHVzbS9zbm1wdXNtLmRzcCBiL3dpbjMyL3NubXB1c20vc25tcHVzbS5kc3AKaW5kZXggZGI0M2YyZS4uYTFjMDEyNCAxMDA2NDQKLS0tIGEvd2luMzIvc25tcHVzbS9zbm1wdXNtLmRzcAorKysgYi93aW4zMi9zbm1wdXNtL3NubXB1c20uZHNwCkBAIC01MCw3ICs1MCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcHVzbS5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcHVzbS5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCiANCiAhRUxTRUlGICAiJChDRkcpIiA9PSAic25tcHVzbSAtIFdpbjMyIERlYnVnIg0KIA0KQEAgLTc0LDcgKzc0LDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXB1c20uZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcHVzbS5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCiANCiAhRU5ESUYgDQogDQpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmggYi93aW4zMi9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzYzY2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvd2luMzIvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oPgpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcHZhY20vc25tcHZhY20uZHNwIGIvd2luMzIvc25tcHZhY20vc25tcHZhY20uZHNwCmluZGV4IDA4NTY4MzIuLjJmZDUzZmQgMTAwNjQ0Ci0tLSBhL3dpbjMyL3NubXB2YWNtL3NubXB2YWNtLmRzcAorKysgYi93aW4zMi9zbm1wdmFjbS9zbm1wdmFjbS5kc3AKQEAgLTUwLDcgKzUwLDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wdmFjbS5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcHZhY20uZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQogDQogIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInNubXB2YWNtIC0gV2luMzIgRGVidWciDQogDQpAQCAtNzQsNyArNzQsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcHZhY20uZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcHZhY20uZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQogDQogIUVORElGIA0KIA0KZGlmZiAtLWdpdCBhL3dpbjMyL3NubXB3YWxrL3NubXB3YWxrLmRzcCBiL3dpbjMyL3NubXB3YWxrL3NubXB3YWxrLmRzcAppbmRleCA1ZDgxOTU3Li42NzU5OGYxIDEwMDY0NAotLS0gYS93aW4zMi9zbm1wd2Fsay9zbm1wd2Fsay5kc3AKKysrIGIvd2luMzIvc25tcHdhbGsvc25tcHdhbGsuZHNwCkBAIC01MCw3ICs1MCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcHdhbGsuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXB3YWxrLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KIA0KICFFTFNFSUYgICIkKENGRykiID09ICJzbm1wd2FsayAtIFdpbjMyIERlYnVnIg0KIA0KQEAgLTc0LDcgKzc0LDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXB3YWxrLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXB3YWxrLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KIA0KICFFTkRJRiANCiANCg==