ZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGEyMTNlOGUuLmQ5YWRjZTUgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtNTEsNiArNTEsNyBAQAogZ2l0LWdldC10YXItY29tbWl0LWlkCiBnaXQtZ3JlcAogZ2l0LWhhc2gtb2JqZWN0CitnaXQtaGVscAogZ2l0LWh0dHAtZmV0Y2gKIGdpdC1odHRwLXB1c2gKIGdpdC1pbWFwLXNlbmQKQEAgLTExNyw2ICsxMTgsNyBAQAogZ2l0LXNob3ctYnJhbmNoCiBnaXQtc2hvdy1pbmRleAogZ2l0LXNob3ctcmVmCitnaXQtc3RhZ2UKIGdpdC1zdGFzaAogZ2l0LXN0YXR1cwogZ2l0LXN0cmlwc3BhY2UKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vTWFrZWZpbGUgYi9Eb2N1bWVudGF0aW9uL01ha2VmaWxlCmluZGV4IDYyMjY5ZTMuLmMzNGMxY2EgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vTWFrZWZpbGUKKysrIGIvRG9jdW1lbnRhdGlvbi9NYWtlZmlsZQpAQCAtNiw3ICs2LDcgQEAKIAlnaXRyZXBvc2l0b3J5LWxheW91dC50eHQKIE1BTjdfVFhUPWdpdGNsaS50eHQgZ2l0dHV0b3JpYWwudHh0IGdpdHR1dG9yaWFsLTIudHh0IFwKIAlnaXRjdnMtbWlncmF0aW9uLnR4dCBnaXRjb3JlLXR1dG9yaWFsLnR4dCBnaXRnbG9zc2FyeS50eHQgXAotCWdpdGRpZmZjb3JlLnR4dAorCWdpdGRpZmZjb3JlLnR4dCBnaXR3b3JrZmxvd3MudHh0CiAKIE1BTl9UWFQgPSAkKE1BTjFfVFhUKSAkKE1BTjVfVFhUKSAkKE1BTjdfVFhUKQogTUFOX1hNTD0kKHBhdHN1YnN0ICUudHh0LCUueG1sLCQoTUFOX1RYVCkpCkBAIC00NCw2ICs0NCw3IEBACiBJTlNUQUxMPz1pbnN0YWxsCiBSTSA/PSBybSAtZgogRE9DX1JFRiA9IG9yaWdpbi9tYW4KK0hUTUxfUkVGID0gb3JpZ2luL2h0bWwKIAogaW5mb2Rpcj89JChwcmVmaXgpL3NoYXJlL2luZm8KIE1BS0VJTkZPPW1ha2VpbmZvCkBAIC04Niw3ICs4Nyw5IEBACiAKIGluZm86IGdpdC5pbmZvIGdpdG1hbi5pbmZvCiAKLWluc3RhbGw6IG1hbgoraW5zdGFsbDogaW5zdGFsbC1tYW4KKworaW5zdGFsbC1tYW46IG1hbgogCSQoSU5TVEFMTCkgLWQgLW0gNzU1ICQoREVTVERJUikkKG1hbjFkaXIpCiAJJChJTlNUQUxMKSAtZCAtbSA3NTUgJChERVNURElSKSQobWFuNWRpcikKIAkkKElOU1RBTEwpIC1kIC1tIDc1NSAkKERFU1RESVIpJChtYW43ZGlyKQpAQCAtMjE5LDcgKzIyMiwxMiBAQAogaW5zdGFsbC13ZWJkb2MgOiBodG1sCiAJc2ggLi9pbnN0YWxsLXdlYmRvYy5zaCAkKFdFQkRPQ19ERVNUKQogCi1xdWljay1pbnN0YWxsOgorcXVpY2staW5zdGFsbDogcXVpY2staW5zdGFsbC1tYW4KKworcXVpY2staW5zdGFsbC1tYW46CiAJc2ggLi9pbnN0YWxsLWRvYy1xdWljay5zaCAkKERPQ19SRUYpICQoREVTVERJUikkKG1hbmRpcikKIAorcXVpY2staW5zdGFsbC1odG1sOgorCXNoIC4vaW5zdGFsbC1kb2MtcXVpY2suc2ggJChIVE1MX1JFRikgJChERVNURElSKSQoaHRtbGRpcikKKwogLlBIT05ZOiAuRk9SQ0UtR0lULVZFUlNJT04tRklMRQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy0xLjYuMS4xLnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMtMS42LjEuMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg0NTRjMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMtMS42LjEuMS50eHQKQEAgLTAsMCArMSw1OSBAQAorR0lUIHYxLjYuMS4xIFJlbGVhc2UgTm90ZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZpeGVzIHNpbmNlIHYxLjYuMQorLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogImdpdCBhZGQgZnJvdHovbml0Zm9sIiB3aGVuICJmcm90eiIgaXMgYSBzdWJtb2R1bGUgc2hvdWxkIGhhdmUgZXJyb3JlZAorICBvdXQsIGJ1dCBpdCBkaWRuJ3QuCisKKyogImdpdCBhcHBseSIgdG9vayBmaWxlIG1vZGVzIGZyb20gdGhlIHBhdGNoIHRleHQgYW5kIHVwZGF0ZWQgdGhlIG1vZGUKKyAgYml0cyBvZiB0aGUgdGFyZ2V0IHRyZWUgZXZlbiB3aGVuIHRoZSBwYXRjaCB3YXMgbm90IGFib3V0IG1vZGUgY2hhbmdlcy4KKworKiAiZ2l0IGJpc2VjdCB2aWV3IiBvbiBDeWd3aW4gZGlkIG5vdCBsYXVuY2ggZ2l0aworCisqICJnaXQgY2hlY2tvdXQgJHRyZWUiIGRpZCBub3QgdHJpZ2dlciBhbiBlcnJvci4KKworKiAiZ2l0IGNvbW1pdCIgdHJpZWQgdG8gcmVtb3ZlIENPTU1JVF9FRElUTVNHIGZyb20gdGhlIHdvcmsgdHJlZSBieSBtaXN0YWtlLgorCisqICJnaXQgZGVzY3JpYmUgLS1hbGwiIGNvbXBsYWluZWQgd2hlbiBhIGNvbW1pdCBpcyBkZXNjcmliZWQgd2l0aCBhIHRhZywKKyAgd2hpY2ggd2FzIG5vbnNlbnNlLgorCisqICJnaXQgZGlmZiAtLW5vLWluZGV4IC0tIiBkaWQgbm90IHRyaWdnZXIgbm8taW5kZXggKGFrYSAidXNlIGdpdC1kaWZmIGFzCisgIGEgcmVwbGFjZW1lbnQgb2YgZGlmZiBvbiB1bnRyYWNrZWQgZmlsZXMiKSBiZWhhdmlvdXIuCisKKyogImdpdCBmb3JtYXQtcGF0Y2ggLTEgSEVBRCIgb24gYSByb290IGNvbW1pdCBmYWlsZWQgdG8gcHJvZHVjZSBwYXRjaAorICB0ZXh0LgorCisqICJnaXQgZnNjayBicmFuY2giIGRpZCBub3Qgd29yayBhcyBhZHZlcnRpc2VkOyBpbnN0ZWFkIGl0IGJlaGF2ZWQgdGhlIHNhbWUKKyAgd2F5IGFzICJnaXQgZnNjayIuCisKKyogImdpdCBsb2cgLS1wcmV0dHk9Zm9ybWF0OiVzIiBkaWQgbm90IGhhbmRsZSBhIG11bHRpLWxpbmUgc3ViamVjdCB0aGUKKyAgc2FtZSB3YXkgYXMgYnVpbHQtaW4gbG9nIGxpc3RlcnMgKGkuZS4gc2hvcnRsb2csIC0tcHJldHR5PW9uZWxpbmUsIGV0Yy4pCisKKyogImdpdCBkYWVtb24iLCBhbmQgImdpdCBtZXJnZS1maWxlIiBhcmUgbW9yZSBjYXJlZnVsIHdoZW4gZnJlb3BlbiBmYWlscworICBhbmQgYmFyZiwgaW5zdGVhZCBvZiBnb2luZyBvbiBhbmQgd3JpdGluZyB0byB1bm9wZW5lZCBmaWxlaGFuZGxlLgorCisqICJnaXQgaHR0cC1wdXNoIiBkaWQgbm90IGxpa2Ugc29tZSBSRkMgNDkxOCBjb21wbGlhbnQgREFWIHNlcnZlcgorICByZXNwb25zZXMuCisKKyogImdpdCBtZXJnZSAtcyByZWN1cnNpdmUiIG1pc3Rha2VubHkgb3ZlcndyaXR0ZW4gYW4gdW50cmFja2VkIGZpbGUgaW4gdGhlCisgIHdvcmsgdHJlZSB1cG9uIGRlbGV0ZS9tb2RpZnkgY29uZmxpY3QuCisKKyogImdpdCBtZXJnZSAtcyByZWN1cnNpdmUiIGRpZG4ndCBsZWF2ZSB0aGUgaW5kZXggdW5tZXJnZWQgZm9yIGVudHJpZXMgd2l0aAorICByZW5hbWUvZGVsZXRlIGNvbmZsaWN0ZC4KKworKiAiZ2l0IG1lcmdlIC1zIHJlY3Vyc2l2ZSIgY2xvYmJlcmVkIHVudHJhY2tlZCBmaWxlcyBpbiB0aGUgd29yayB0cmVlLgorCisqICJnaXQgbXYgLWsiIHdpdGggbW9yZSB0aGFuIG9uZSBlcnJvcm5lb3VzIHBhdGhzIG1pc2JlaGF2ZWQuCisKKyogImdpdCByZWFkLXRyZWUgLW0gLXUiIGhlbmNlIGJyYW5jaCBzd2l0Y2hpbmcgaW5jb3JyZWN0bHkgbG9zdCBhCisgIHN1YmRpcmVjdG9yeSBpbiByYXJlIGNhc2VzLgorCisqICJnaXQgcmViYXNlIC1pIiBpc3N1ZWQgYW4gdW5uZWNlc3NhcnkgZXJyb3IgbWVzc2FnZSB1cG9uIGEgdXNlciBlcnJvciBvZgorICBtYXJraW5nIHRoZSBmaXJzdCBjb21taXQgdG8gYmUgInNxdWFzaCJlZC4KKworKiAiZ2l0IHNob3J0bG9nIiBkaWQgbm90IGZvcm1hdCBhIGNvbW1pdCBtZXNzYWdlIHdpdGggbXVsdGktbGluZQorICBzdWJqZWN0IGNvcnJlY3RseS4KKworTWFueSBkb2N1bWVudGF0aW9uIHVwZGF0ZXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLTEuNi4xLjIudHh0IGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy0xLjYuMS4yLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzBhYTNkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy0xLjYuMS4yLnR4dApAQCAtMCwwICsxLDM5IEBACitHSVQgdjEuNi4xLjIgUmVsZWFzZSBOb3RlcworPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4ZXMgc2luY2UgdjEuNi4xLjEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogVGhlIGxvZ2ljIGZvciByZW5hbWUgZGV0ZWN0aW4gaW4gaW50ZXJuYWwgZGlmZiB1c2VkIGJ5IGNvbW1hbmRzIGxpa2UKKyAgImdpdCBkaWZmIiBhbmQgImdpdCBibGFtZSIgaGF2ZSBiZWVuIG9wdGltaXplZCB0byBhdm9pZCBsb2FkaW5nIHRoZSBzYW1lCisgIGJsb2IgcmVwZWF0ZWRseS4KKworKiBXZSBkaWQgbm90IGFsbG93IHdyaXRpbmcgb3V0IGEgYmxvYiB0aGF0IGlzIGxhcmdlciB0aGFuIDJHQiBmb3Igbm8gZ29vZAorICByZWFzb24uCisKKyogImdpdCBmb3JtYXQtcGF0Y2ggLW8gJGRpciIsIHdoZW4gJGRpciBpcyBhIHJlbGF0aXZlIGRpcmVjdG9yeSwgdXNlZCBpdAorICBhcyByZWxhdGl2ZSB0byB0aGUgcm9vdCBvZiB0aGUgd29yayB0cmVlLCBub3QgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQKKyAgZGlyZWN0b3J5LgorCisqIHYxLjYuMSBpbnRyb2R1Y2VkIGFuIG9wdGltaXphdGlvbiBmb3IgImdpdCBwdXNoIiBpbnRvIGEgcmVwb3NpdG9yeSAoQSkKKyAgdGhhdCBib3Jyb3dzIGl0cyBvYmplY3RzIGZyb20gYW5vdGhlciByZXBvc2l0b3J5IChCKSB0byBhdm9pZCBzZW5kaW5nCisgIG9iamVjdHMgdGhhdCBhcmUgYXZhaWxhYmxlIGluIHJlcG9zaXRvcnkgQiwgd2hlbiB0aGV5IGFyZSBub3QgeWV0IHVzZWQKKyAgYnkgcmVwb3NpdG9yeSBBLiAgSG93ZXZlciB0aGUgY29kZSBvbiB0aGUgImdpdCBwdXNoIiBzZW5kZXIgc2lkZSB3YXMKKyAgYnVnZ3kgYW5kIGRpZCBub3Qgd29yayB3aGVuIHJlcG9zaXRvcnkgQiBoYWQgbmV3IG9iamVjdHMgdGhhdCBhcmUgbm90CisgIGtub3duIGJ5IHRoZSBzZW5kZXIuICBUaGlzIGNhdXNlZCBwdXNoaW5nIGludG8gYSAiZm9ya2VkIiByZXBvc2l0b3J5CisgIHNlcnZlZCBieSB2MS42LjEgc29mdHdhcmUgdXNpbmcgImdpdCBwdXNoIiBmcm9tIHYxLjYuMSBzb21ldGltZXMgZGlkIG5vdAorICB3b3JrLiAgVGhlIGJ1ZyB3YXMgcHVyZWx5IG9uIHRoZSAiZ2l0IHB1c2giIHNlbmRlciBzaWRlLCBhbmQgaGFzIGJlZW4KKyAgY29ycmVjdGVkLgorCisqICJnaXQgc3RhdHVzIC12IiBkaWQgbm90IHBhaW50IGl0cyBkaWZmIG91dHB1dCBpbiBjb2xvdXIgZXZlbiB3aGVuCisgIGNvbG9yLnVpIGNvbmZpZ3VyYXRpb24gd2FzIHNldC4KKworKiAiZ2l0IGxzLXRyZWUiIGxlYXJuZWQgLS1mdWxsLXRyZWUgb3B0aW9uIHRvIGhlbHAgUG9yY2VsYWluIHNjcmlwdHMgdGhhdAorICB3YW50IHRvIGFsd2F5cyBzZWUgdGhlIGZ1bGwgcGF0aCByZWdhcmRsZXNzIG9mIHRoZSBjdXJyZW50IHdvcmtpbmcKKyAgZGlyZWN0b3J5LgorCisqICJnaXQgZ3JlcCIgaW5jb3JyZWN0bHkgc2VhcmNoZWQgaW4gd29yayB0cmVlIHBhdGhzIGV2ZW4gd2hlbiB0aGV5IGFyZQorICBtYXJrZWQgYXMgYXNzdW1lLXVuY2hhbmdlZC4gIEl0IG5vdyBzZWFyY2hlcyBpbiB0aGUgaW5kZXggZW50cmllcy4KKworKiAiZ2l0IGdjIiB3aXRoIG5vIGdyYWNlIHBlcmlvZCBuZWVkbGVzc2x5IGVqZWN0ZWQgcGFja2VkIGJ1dCB1bnJlYWNoYWJsZQorICBvYmplY3RzIGluIHRoZWlyIGxvb3NlIGZvcm0sIG9ubHkgdG8gZGVsZXRlIHRoZW0gcmlnaHQgYXdheS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMtMS42LjEuMy50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLTEuNi4xLjMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmMGJkZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLTEuNi4xLjMudHh0CkBAIC0wLDAgKzEsMzIgQEAKK0dJVCB2MS42LjEuMyBSZWxlYXNlIE5vdGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXhlcyBzaW5jZSB2MS42LjEuMgorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiAiZ2l0IGRpZmYgLS1iaW5hcnkgfCBnaXQgYXBwbHkiIHBpcGVsaW5lIGRpZCBub3Qgd29yayB3ZWxsIHdoZW4KKyAgYSBiaW5hcnkgYmxvYiBpcyBjaGFuZ2VkIHRvIGEgc3ltYm9saWMgbGluay4KKworKiBTb21lIGNvbWJpbmF0aW9ucyBvZiAtYi8tdy8tLWlnbm9yZS1zcGFjZS1hdC1lb2wgdG8gImdpdCBkaWZmIiBkaWQKKyAgbm90IHdvcmsgYXMgZXhwZWN0ZWQuCisKKyogImdpdCBncmVwIiBkaWQgbm90IHBhc3MgdGhlIC1JIChpZ25vcmUgYmluYXJ5KSBvcHRpb24gd2hlbgorICBjYWxsaW5nIG91dCBhbiBleHRlcm5hbCBncmVwIHByb2dyYW0uCisKKyogImdpdCBsb2ciIGFuZCBmcmllbmRzIGluY2x1ZGUgSEVBRCB0byB0aGUgc2V0IG9mIHN0YXJ0aW5nIHBvaW50cworICB3aGVuIC0tYWxsIGlzIGdpdmVuLiAgVGhpcyBtYWtlcyBhIGRpZmZlcmVuY2Ugd2hlbiB5b3UgYXJlIG5vdAorICBvbiBhbnkgYnJhbmNoLgorCisqICJnaXQgbXYiIHRvIG1vdmUgYW4gdW50cmFja2VkIGZpbGUgdG8gb3ZlcndyaXRlIGEgdHJhY2tlZAorICBjb250ZW50cyBtaXNiZWhhdmVkLgorCisqICJnaXQgbWVyZ2UgLXMgb2N0b3B1cyIgd2l0aCBtYW55IHBvdGVudGlhbCBtZXJnZSBiYXNlcyBkaWQgbm90CisgIHdvcmsgY29ycmVjdGx5LgorCisqIFJQTSBiaW5hcnkgcGFja2FnZSBpbnN0YWxsZWQgdGhlIGh0bWwgbWFucGFnZXMgaW4gYSB3cm9uZyBwbGFjZS4KKworQWxzbyBpbmNsdWRlcyBtaW5vciBkb2N1bWVudGF0aW9uIGZpeGVzIGFuZCB1cGRhdGVzLgorCisKKy0tCitnaXQgc2hvcnRsb2cgLS1uby1tZXJnZXMgdjEuNi4xLjItMzMtZ2M3ODkzNTAuLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy0xLjYuMS40LnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMtMS42LjEuNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTlmMWE2YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMtMS42LjEuNC50eHQKQEAgLTAsMCArMSwxOSBAQAorR0lUIHYxLjYuMS40IFJlbGVhc2UgTm90ZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZpeGVzIHNpbmNlIHYxLjYuMS4zCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqICJnaXQgZmFzdC1leHBvcnQiIHByb2R1Y2VkIHdyb25nIG91dHB1dCB3aXRoIHNvbWUgcGFyZW50cyBtaXNzaW5nIGZyb20KKyAgY29tbWl0cywgd2hlbiB0aGUgaGlzdG9yeSBpcyBjbG9jay1za2V3ZWQuCisKKyogImdpdCBmYXN0LWltcG9ydCIgc29tZXRpbWVzIGZhaWxlZCB0byByZWFkIGJhY2sgb2JqZWN0cyBpdCBqdXN0IHdyb3RlCisgIG91dCBhbmQgYWJvcnRlZCwgYmVjYXVzZSBpdCBmYWlsZWQgdG8gZmx1c2ggc3RhbGUgY2FjaGVkIGRhdGEuCisKKyogImdpdCByZXBhY2siIGRpZCBub3QgZXJyb3Igb3V0IHdoZW4gbmVjZXNzYXJ5IG9iamVjdCB3YXMgbWlzc2luZyBpbiB0aGUKKyAgcmVwb3NpdG9yeS4KKworQWxzbyBpbmNsdWRlcyBtaW5vciBkb2N1bWVudGF0aW9uIGZpeGVzIGFuZCB1cGRhdGVzLgorCistLQorZ2l0IHNob3J0bG9nIC0tbm8tbWVyZ2VzIHYxLjYuMS4zLi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMtMS42LjEudHh0IGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy0xLjYuMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWRiN2NjYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMtMS42LjEudHh0CkBAIC0wLDAgKzEsMjg2IEBACitHSVQgdjEuNi4xIFJlbGVhc2UgTm90ZXMKKz09PT09PT09PT09PT09PT09PT09PT09PQorCitVcGRhdGVzIHNpbmNlIHYxLjYuMAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2hlbiBzb21lIGNvbW1hbmRzIChlLmcuICJnaXQgbG9nIiwgImdpdCBkaWZmIikgc3Bhd24gcGFnZXIgaW50ZXJuYWxseSwgd2UKK3VzZWQgdG8gbWFrZSB0aGUgcGFnZXIgdGhlIHBhcmVudCBwcm9jZXNzIG9mIHRoZSBnaXQgY29tbWFuZCB0aGF0IHByb2R1Y2VzCitvdXRwdXQuICBUaGlzIG1lYW50IHRoYXQgdGhlIGV4aXQgc3RhdHVzIG9mIHRoZSB3aG9sZSB0aGluZyBjb21lcyBmcm9tIHRoZQorcGFnZXIsIG5vdCB0aGUgdW5kZXJseWluZyBnaXQgY29tbWFuZC4gIFdlIHN3YXBwZWQgdGhlIG9yZGVyIG9mIHRoZQorcHJvY2Vzc2VzIGFyb3VuZCBhbmQgeW91IHdpbGwgc2VlIHRoZSBleGl0IGNvZGUgZnJvbSB0aGUgY29tbWFuZCBmcm9tIG5vdworb24uCisKKyhzdWJzeXN0ZW1zKQorCisqIGdpdGsgY2FuIGNhbGwgb3V0IHRvIGdpdC1ndWkgdG8gdmlldyAiZ2l0IGJsYW1lIiBvdXRwdXQ7IGdpdC1ndWkgaW4gdHVybgorICBjYW4gcnVuIGdpdGsgZnJvbSBpdHMgYmxhbWUgdmlldy4KKworKiBWYXJpb3VzIGdpdC1ndWkgdXBkYXRlcyBpbmNsdWRpbmcgdXBkYXRlZCB0cmFuc2xhdGlvbnMuCisKKyogVmFyaW91cyBnaXR3ZWIgdXBkYXRlcyBmcm9tIHJlcG8ub3IuY3ogaW5zdGFsbGF0aW9uLgorCisqIFVwZGF0ZXMgdG8gZW1hY3MgYmluZGluZ3MuCisKKyhwb3J0YWJpbGl0eSkKKworKiBBIGZldyB0ZXN0IHNjcmlwdHMgdXNlZCBub25wb3J0YWJsZSAiZ3JlcCIgdGhhdCBkaWQgbm90IHdvcmsgd2VsbCBvbgorICBzb21lIHBsYXRmb3JtcywgZS5nLiBTb2xhcmlzLgorCisqIFNhbXBsZSBwcmUtYXV0by1nYyBzY3JpcHQgaGFzIE9TIFggc3VwcG9ydC4KKworKiBNYWtlZmlsZSBoYXMgc3VwcG9ydCBmb3IgKGFuY2llbnQpIEZyZWVCU0QgNC45LgorCisocGVyZm9ybWFuY2UpCisKKyogTWFueSBvcGVyYXRpb25zIHRoYXQgYXJlIGxzdGF0KDMpIGhlYXZ5IGNhbiBiZSB0b2xkIHRvIHByZS1leGVjdXRlCisgIG5lY2Vzc2FyeSBsc3RhdCgzKSBpbiBwYXJhbGxlbCBiZWZvcmUgdGhlaXIgbWFpbiBvcGVyYXRpb25zLCB3aGljaAorICBwb3RlbnRpYWxseSBnaXZlcyBtdWNoIGltcHJvdmVkIHBlcmZvcm1hbmNlIGZvciBjb2xkLWNhY2hlIGNhc2VzIG9yIGluCisgIGVudmlyb25tZW50cyB3aXRoIHdlYWsgbWV0YWRhdGEgY2FjaGluZyAoZS5nLiBORlMpLgorCisqIFRoZSB1bmRlcmx5aW5nIGRpZmYgbWFjaGluZXJ5IHRvIHByb2R1Y2UgdGV4dHVhbCBvdXRwdXQgaGFzIGJlZW4KKyAgb3B0aW1pemVkLCB3aGljaCB3b3VsZCByZXN1bHQgaW4gZmFzdGVyICJnaXQgYmxhbWUiIHByb2Nlc3NpbmcuCisKKyogTW9zdCBvZiB0aGUgdGVzdCBzY3JpcHRzIChidXQgbm90IHRoZSBvbmVzIHRoYXQgdHJ5IHRvIHJ1biBzZXJ2ZXJzKQorICBjYW4gYmUgcnVuIGluIHBhcmFsbGVsLgorCisqIEJhc2ggY29tcGxldGlvbiBvZiByZWZuYW1lcyBpbiBhIHJlcG9zaXRvcnkgd2l0aCBtYXNzaXZlIG51bWJlciBvZgorICByZWZzIGhhcyBiZWVuIG9wdGltaXplZC4KKworKiBDeWd3aW4gcG9ydCB1c2VzIG5hdGl2ZSBzdGF0L2xzdGF0IGltcGxlbWVudGF0aW9ucyB3aGVuIGFwcGxpY2FibGUsCisgIHdoaWNoIGxlYWRzIHRvIGltcHJvdmVkIHBlcmZvcm1hbmNlLgorCisqICJnaXQgcHVzaCIgcGF5cyBhdHRlbnRpb24gdG8gYWx0ZXJuYXRlIHJlcG9zaXRvcmllcyB0byBhdm9pZCBzZW5kaW5nCisgIHVubmVjZXNzYXJ5IG9iamVjdHMuCisKKyogImdpdCBzdm4iIGNhbiByZWJ1aWxkIGFuIG91dC1vZi1kYXRlIHJldl9tYXAgZmlsZS4KKworKHVzYWJpbGl0eSwgYmVsbHMgYW5kIHdoaXN0bGVzKQorCisqIFdoZW4geW91IG1pc3R5cGUgYSBjb21tYW5kIG5hbWUsIGdpdCBoZWxwZnVsbHkgc3VnZ2VzdHMgd2hhdCBpdCBndWVzc2VzCisgIHlvdSBtaWdodCBoYXZlIG1lYW50IHRvIHNheS4gIGhlbHAuYXV0b2NvcnJlY3QgY29uZmlndXJhdGlvbiBjYW4gYmUgc2V0CisgIHRvIGEgbm9uLXplcm8gdmFsdWUgdG8gYWNjZXB0IHRoZSBzdWdnZXN0aW9uIHdoZW4gZ2l0IGNhbiB1bmlxdWVseQorICBndWVzcy4KKworKiBUaGUgcGFja2ZpbGUgbWFjaGluZXJ5IGhvcGVmdWxseSBpcyBtb3JlIHJvYnVzdCB3aGVuIGRlYWxpbmcgd2l0aAorICBjb3JydXB0IHBhY2tzIGlmIHJlZHVuZGFudCBvYmplY3RzIGludm9sdmVkIGluIHRoZSBjb3JydXB0aW9uIGFyZQorICBhdmFpbGFibGUgZWxzZXdoZXJlLgorCisqICJnaXQgYWRkIC1OIHBhdGguLi4iIGFkZHMgdGhlIG5hbWVkIHBhdGhzIGFzIGFuIGVtcHR5IGJsb2IsIHNvIHRoYXQKKyAgc3Vic2VxdWVudCAiZ2l0IGRpZmYiIHdpbGwgc2hvdyBhIGRpZmYgYXMgaWYgdGhleSBhcmUgY3JlYXRpb24gZXZlbnRzLgorCisqICJnaXQgYWRkIiBnYWluZWQgYSBidWlsdC1pbiBzeW5vbnltIGZvciBwZW9wbGUgd2hvIHdhbnQgdG8gc2F5ICJzdGFnZQorICBjaGFuZ2VzIiBpbnN0ZWFkIG9mICJhZGQgY29udGVudHMgdG8gdGhlIHN0YWdpbmcgYXJlYSIgd2hpY2ggYW1vdW50cworICB0byB0aGUgc2FtZSB0aGluZy4KKworKiAiZ2l0IGFwcGx5IiBsZWFybmVkIC0taW5jbHVkZT1wYXRocyBvcHRpb24sIHNpbWlsYXIgdG8gdGhlIGV4aXN0aW5nCisgIC0tZXhjbHVkZT1wYXRocyBvcHRpb24uCisKKyogImdpdCBiaXNlY3QiIGlzIGNhcmVmdWwgYWJvdXQgYSB1c2VyIG1pc3Rha2UgYW5kIHN1Z2dlc3RzIHRlc3Rpbmcgb2YKKyAgbWVyZ2UgYmFzZSBmaXJzdCB3aGVuIGdvb2QgaXMgbm90IGEgc3RyaWN0IGFuY2VzdG9yIG9mIGJhZC4KKworKiAiZ2l0IGJpc2VjdCBza2lwIiBjYW4gdGFrZSBhIHJhbmdlIG9mIGNvbW1pdHMuCisKKyogImdpdCBibGFtZSIgcmUtZW5jb2RlcyB0aGUgY29tbWl0IG1ldGFpbmZvIHRvIFVURi04IGZyb20gaTE4bi5jb21taXRFbmNvZGluZworICBieSBkZWZhdWx0LgorCisqICJnaXQgY2hlY2stYXR0ciAtLXN0ZGluIiBjYW4gY2hlY2sgYXR0cmlidXRlcyBmb3IgbXVsdGlwbGUgcGF0aHMuCisKKyogImdpdCBjaGVja291dCAtLXRyYWNrIG9yaWdpbi9oYWNrIiB1c2VkIHRvIGJlIGEgc3ludGF4IGVycm9yLiAgSXQgbm93CisgIERXSU1zIHRvIGNyZWF0ZSBhIGNvcnJlc3BvbmRpbmcgbG9jYWwgYnJhbmNoICJoYWNrIiwgaS5lLiBhY3RzIGFzIGlmIHlvdQorICBzYWlkICJnaXQgY2hlY2tvdXQgLS10cmFjayAtYiBoYWNrIG9yaWdpbi9oYWNrIi4KKworKiAiZ2l0IGNoZWNrb3V0IC0tb3Vycy8tLXRoZWlycyIgY2FuIGJlIHVzZWQgdG8gY2hlY2sgb3V0IG9uZSBzaWRlIG9mIGEKKyAgY29uZmxpY3RpbmcgbWVyZ2UgZHVyaW5nIGNvbmZsaWN0IHJlc29sdXRpb24uCisKKyogImdpdCBjaGVja291dCAtbSIgY2FuIGJlIHVzZWQgdG8gcmVjcmVhdGUgdGhlIGluaXRpYWwgY29uZmxpY3RlZCBzdGF0ZQorICBkdXJpbmcgY29uZmxpY3QgcmVzb2x1dGlvbi4KKworKiAiZ2l0IGNoZXJyeS1waWNrIiBjYW4gYWxzbyB1dGlsaXplIHJlcmVyZSBmb3IgY29uZmxpY3QgcmVzb2x1dGlvbi4KKworKiAiZ2l0IGNsb25lIiBsZWFybmVkIHRvIGJlIHZlcmJvc2Ugd2l0aCAtdgorCisqICJnaXQgY29tbWl0IC0tYXV0aG9yPSRuYW1lIiBjYW4gbG9vayB1cCBhdXRob3IgbmFtZSBmcm9tIGV4aXN0aW5nCisgIGNvbW1pdHMuCisKKyogb3V0cHV0IGZyb20gImdpdCBjb21taXQiIGhhcyBiZWVuIHJld29yZGVkIGluIGEgbW9yZSBjb25jaXNlIGFuZCB5ZXQKKyAgbW9yZSBpbmZvcm1hdGl2ZSB3YXkuCisKKyogImdpdCBjb3VudC1vYmplY3RzIiByZXBvcnRzIHRoZSBvbi1kaXNrIGZvb3RwcmludCBmb3IgcGFja2ZpbGVzIGFuZAorICB0aGVpciBjb3JyZXNwb25kaW5nIGlkeCBmaWxlcy4KKworKiAiZ2l0IGRhZW1vbiIgbGVhcm5lZCAtLW1heC1jb25uZWN0aW9ucz08Y291bnQ+IG9wdGlvbi4KKworKiAiZ2l0IGRhZW1vbiIgZXhwb3J0cyBSRU1PVEVfQUREUiB0byByZWNvcmQgY2xpZW50IGFkZHJlc3MsIHNvIHRoYXQKKyAgc3Bhd25lZCBwcm9ncmFtcyBjYW4gYWN0IGRpZmZlcmVudGx5IG9uIGl0LgorCisqICJnaXQgZGVzY3JpYmUgLS10YWdzIiBmYXZvdXJzIGNsb3NlciBsaWdodHdlaWdodCB0YWdzIHRoYW4gZmFydGhlcgorICBhbm5vdGF0ZWQgdGFncyBub3cuCisKKyogImdpdCBkaWZmIiBsZWFybmVkIHRvIG1pbWljIC0tc3VwcHJlc3MtYmxhbmstZW1wdHkgZnJvbSBHTlUgZGlmZiB2aWEgYQorICBjb25maWd1cmF0aW9uIG9wdGlvbi4KKworKiAiZ2l0IGRpZmYiIGxlYXJuZWQgdG8gcHV0IG1vcmUgc2Vuc2libGUgaHVuayBoZWFkZXJzIGZvciBQeXRob24sCisgIEhUTUwgYW5kIE9iakMgY29udGVudHMuCisKKyogImdpdCBkaWZmIiBsZWFybmVkIHRvIHZhcnkgdGhlIGEvIHZzIGIvIHByZWZpeCBkZXBlbmRpbmcgb24gd2hhdCBhcmUKKyAgYmVpbmcgY29tcGFyZWQsIGNvbnRyb2xsZWQgYnkgZGlmZi5tbmVtb25pY3ByZWZpeCBjb25maWd1cmF0aW9uLgorCisqICJnaXQgZGlmZiIgbGVhcm5lZCAtLWRpcnN0YXQtYnktZmlsZSB0byBjb3VudCBjaGFuZ2VkIGZpbGVzLCBub3QgbnVtYmVyCisgIG9mIGxpbmVzLCB3aGVuIHN1bW1hcml6aW5nIHRoZSBnbG9iYWwgcGljdHVyZS4KKworKiAiZ2l0IGRpZmYiIGxlYXJuZWQgInRleHRjb252IiBmaWx0ZXJzIC0tLSBhIGJpbmFyeSBvciBoYXJkLXRvLXJlYWQKKyAgY29udGVudHMgY2FuIGJlIG11bmdlZCBpbnRvIGh1bWFuIHJlYWRhYmxlIGZvcm0gYW5kIHRoZSBkaWZmZXJlbmNlCisgIGJldHdlZW4gdGhlIHJlc3VsdHMgb2YgdGhlIGNvbnZlcnNpb24gY2FuIGJlIHZpZXdlZCAob2J2aW91c2x5IHRoaXMKKyAgY2Fubm90IHByb2R1Y2UgYSBwYXRjaCB0aGF0IGNhbiBiZSBhcHBsaWVkLCBzbyB0aGlzIGlzIGRpc2FibGVkIGluCisgIGZvcm1hdC1wYXRjaCBhbW9uZyBvdGhlciB0aGluZ3MpLgorCisqICItLWNhY2hlZCIgb3B0aW9uIHRvICJnaXQgZGlmZiBoYXMgYW4gZWFzaWVyIHRvIHJlbWVtYmVyIHN5bm9ueW0gIi0tc3RhZ2VkIiwKKyAgdG8gYXNrICJ3aGF0IGlzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGdpdmVuIGNvbW1pdCBhbmQgdGhlCisgIGNvbnRlbnRzIHN0YWdlZCBpbiB0aGUgaW5kZXg/IgorCisqICJnaXQgZm9yLWVhY2gtcmVmIiBsZWFybmVkICJyZWZuYW1lOnNob3J0IiB0b2tlbiB0aGF0IGdpdmVzIGFuCisgIHVuYW1iaWd1b3VzbHkgYWJicmV2aWF0ZWQgcmVmbmFtZS4KKworKiBBdXRvLW51bWJlcmluZyBvZiB0aGUgc3ViamVjdCBsaW5lcyBpcyB0aGUgZGVmYXVsdCBmb3IgImdpdAorICBmb3JtYXQtcGF0Y2giIG5vdy4KKworKiAiZ2l0IGdyZXAiIGxlYXJuZWQgdG8gYWNjZXB0IC16IHNpbWlsYXIgdG8gR05VIGdyZXAuCisKKyogImdpdCBoZWxwIiBsZWFybmVkIHRvIHVzZSBHSVRfTUFOX1ZJRVdFUiBlbnZpcm9ubWVudCB2YXJpYWJsZSBiZWZvcmUKKyAgdXNpbmcgIm1hbiIgcHJvZ3JhbS4KKworKiAiZ2l0IGltYXAtc2VuZCIgY2FuIG9wdGlvbmFsbHkgdGFsayBTU0wuCisKKyogImdpdCBpbmRleC1wYWNrIiBpcyBtb3JlIGNhcmVmdWwgYWdhaW5zdCBkaXNrIGNvcnJ1cHRpb24gd2hpbGUKKyAgY29tcGxldGluZyBhIHRoaW4gcGFjay4KKworKiAiZ2l0IGxvZyAtLWNoZWNrIiBhbmQgImdpdCBsb2cgLS1leGl0LWNvZGUiIHBhc3NlcyB0aGVpciB1bmRlcmx5aW5nIGRpZmYKKyAgc3RhdHVzIHdpdGggdGhlaXIgZXhpdCBzdGF0dXMgY29kZS4KKworKiAiZ2l0IGxvZyIgbGVhcm5lZCAtLXNpbXBsaWZ5LW1lcmdlcywgYSBtaWxkZXIgdmFyaWFudCBvZiAtLWZ1bGwtaGlzdG9yeTsKKyAgImdpdGsgLS1zaW1wbGlmeS1tZXJnZXMiIGlzIGVhc2llciB0byB2aWV3IHRoYW4gd2l0aCAtLWZ1bGwtaGlzdG9yeS4KKworKiAiZ2l0IGxvZyIgbGVhcm5lZCAiLS1zb3VyY2UiIHRvIHNob3cgd2hhdCByZWYgZWFjaCBjb21taXQgd2FzIHJlYWNoZWQKKyAgZnJvbS4KKworKiAiZ2l0IGxvZyIgYWxzbyBsZWFybmVkICItLXNpbXBsaWZ5LWJ5LWRlY29yYXRpb24iIHRvIHNob3cgdGhlCisgIGJpcmRzLWV5ZS12aWV3IG9mIHRoZSB0b3BvbG9neSBvZiB0aGUgaGlzdG9yeS4KKworKiAiZ2l0IGxvZyAtLXByZXR0eT1mb3JtYXQ6IiBsZWFybmVkICIlZCIgZm9ybWF0IGVsZW1lbnQgdGhhdCBpbnNlcnRzCisgIG5hbWVzIG9mIHRhZ3MgdGhhdCBwb2ludCBhdCB0aGUgY29tbWl0LgorCisqICJnaXQgbWVyZ2UgLS1zcXVhc2giIGFuZCAiZ2l0IG1lcmdlIC0tbm8tZmYiIGludG8gYW4gdW5ib3JuIGJyYW5jaCBhcmUKKyAgbm90aWNlZCBhcyB1c2VyIGVycm9ycy4KKworKiAiZ2l0IG1lcmdlIC1zICRzdHJhdGVneSIgY2FuIHVzZSBhIGN1c3RvbSBidWlsdCBzdHJhdGVneSBpZiB5b3UgaGF2ZSBhCisgIGNvbW1hbmQgImdpdC1tZXJnZS0kc3RyYXRlZ3kiIG9uIHlvdXIgJFBBVEguCisKKyogImdpdCBwdWxsIiAoYW5kICJnaXQgZmV0Y2giKSBjYW4gYmUgdG9sZCB0byBvcGVyYXRlICItdiJlcmJvc2VseSBvcgorICAiLXEidWlldGx5LgorCisqICJnaXQgcHVzaCIgY2FuIGJlIHRvbGQgdG8gcmVqZWN0IGRlbGV0aW9uIG9mIHJlZnMgd2l0aCByZWNlaXZlLmRlbnlEZWxldGVzCisgIGNvbmZpZ3VyYXRpb24uCisKKyogImdpdCByZWJhc2UiIGhvbm91cnMgcHJlLXJlYmFzZSBob29rOyB1c2UgLS1uby12ZXJpZnkgdG8gYnlwYXNzIGl0LgorCisqICJnaXQgcmViYXNlIC1wIiB1c2VzIGludGVyYWN0aXZlIHJlYmFzZSBtYWNoaW5lcnkgbm93IHRvIHByZXNlcnZlIHRoZSBtZXJnZXMuCisKKyogImdpdCByZWZsb2cgZXhwaXJlIGJyYW5jaCIgY2FuIGJlIHVzZWQgaW4gcGxhY2Ugb2YgImdpdCByZWZsb2cgZXhwaXJlCisgIHJlZnMvaGVhZHMvYnJhbmNoIi4KKworKiAiZ2l0IHJlbW90ZSBzaG93ICRyZW1vdGUiIGxpc3RzIHJlbW90ZSBicmFuY2hlcyBvbmUtcGVyLWxpbmUgbm93LgorCisqICJnaXQgc2VuZC1lbWFpbCIgY2FuIGJlIGdpdmVuIHJldmlzaW9uIHJhbmdlIGluc3RlYWQgb2YgZmlsZXMgYW5kCisgIG1haWxkaXJzIG9uIHRoZSBjb21tYW5kIGxpbmUsIGFuZCBhdXRvbWF0aWNhbGx5IHJ1bnMgZm9ybWF0LXBhdGNoIHRvCisgIGdlbmVyYXRlIHBhdGNoZXMgZm9yIHRoZSBnaXZlbiByZXZpc2lvbiByYW5nZS4KKworKiAiZ2l0IHN1Ym1vZHVsZSBmb3JlYWNoIiBzdWJjb21tYW5kIGFsbG93cyB5b3UgdG8gaXRlcmF0ZSBvdmVyIGNoZWNrZWQKKyAgb3V0IHN1Ym1vZHVsZXMuCisKKyogImdpdCBzdWJtb2R1bGUgc3luYyIgc3ViY29tbWFuZHMgYWxsb3dzIHlvdSB0byB1cGRhdGUgdGhlIG9yaWdpbiBVUkwKKyAgcmVjb3JkZWQgaW4gc3VibW9kdWxlIGRpcmVjdG9yaWVzIGZyb20gdGhlIHRvcGxldmVsIC5naXRtb2R1bGVzIGZpbGUuCisKKyogImdpdCBzdm4gYnJhbmNoIiBjYW4gY3JlYXRlIG5ldyBicmFuY2hlcyBvbiB0aGUgb3RoZXIgZW5kLgorCisqICJnaXR3ZWIiIGNhbiB1c2UgbW9yZSBzYW5lciBQQVRIX0lORk8gYmFzZWQgVVJMLgorCisoaW50ZXJuYWwpCisKKyogImdpdCBoYXNoLW9iamVjdCIgbGVhcm5lZCB0byBsaWUgYWJvdXQgdGhlIHBhdGggYmVpbmcgaGFzaGVkLCBzbyB0aGF0CisgIGNvcnJlY3QgZ2l0YXR0cmlidXRlcyBwcm9jZXNzaW5nIGNhbiBiZSBkb25lIHdoaWxlIGhhc2hpbmcgY29udGVudHMKKyAgc3RvcmVkIGluIGEgdGVtcG9yYXJ5IGZpbGUuCisKKyogdmFyaW91cyBjYWxsZXJzIG9mIGdpdC1tZXJnZS1yZWN1cnNpdmUgYXZvaWQgZm9ya2luZyBpdCBhcyBhbiBleHRlcm5hbAorICBwcm9jZXNzLgorCisqIEdpdCBjbGFzcyBkZWZpbmVkIGluICJHaXQucG0iIGNhbiBiZSBzdWJjbGFzc2VzIGEgYml0IG1vcmUgZWFzaWx5LgorCisqIFdlIHVzZWQgdG8gbGluayBHTlUgcmVnZXggbGlicmFyeSBhcyBhIGNvbXBhdGliaWxpdHkgbGF5ZXIgZm9yIHNvbWUKKyAgcGxhdGZvcm1zLCBidXQgaXQgdHVybnMgb3V0IGl0IGlzIG5vdCBuZWNlc3Nhcnkgb24gbW9zdCBvZiB0aGVtLgorCisqIFNvbWUgcGF0aCBoYW5kbGluZyByb3V0aW5lcyB1c2VkIGZpeGVkIG51bWJlciBvZiBidWZmZXJzIHVzZWQgYWx0ZXJuYXRlbHkKKyAgYnV0IGRlcGVuZGluZyBvbiB0aGUgY2FsbCBkZXB0aCwgdGhpcyBhcnJhbmdlbWVudCBsZWQgdG8gaGFyZCB0byB0cmFjaworICBidWdzLiAgVGhpcyBpc3N1ZSBpcyBiZWluZyBhZGRyZXNzZWQuCisKKworRml4ZXMgc2luY2UgdjEuNi4wCistLS0tLS0tLS0tLS0tLS0tLS0KKworQWxsIG9mIHRoZSBmaXhlcyBpbiB2MS42LjAuWCBtYWludGVuYW5jZSBzZXJpZXMgYXJlIGluY2x1ZGVkIGluIHRoaXMKK3JlbGVhc2UsIHVubGVzcyBvdGhlcndpc2Ugbm90ZWQuCisKKyogUG9yY2VsYWlucyBpbXBsZW1lbnRlZCBhcyBzaGVsbCBzY3JpcHRzIHdlcmUgdXR0ZXJseSBjb25mdXNlZCB3aGVuIHlvdQorICBlbnRlcmVkIHRvIGEgc3ViZGlyZWN0b3J5IG9mIGEgd29yayB0cmVlIGZyb20gc2lkZXdheXMsIGZvbGxvd2luZyBhCisgIHN5bWJvbGljIGxpbmsgKHRoaXMgbWF5IG5lZWQgdG8gYmUgYmFja3BvcnRlZCB0byBvbGRlciByZWxlYXNlcyBsYXRlcikuCisKKyogVHJhY2tpbmcgc3ltYm9saWMgbGlua3Mgd291bGQgd29yayBiZXR0ZXIgb24gZmlsZXN5c3RlbXMgd2hvc2UgbHN0YXQoKQorICByZXR1cm5zIGluY29ycmVjdCBzdF9zaXplIHZhbHVlIGZvciB0aGVtLgorCisqICJnaXQgYWRkIiBhbmQgImdpdCB1cGRhdGUtaW5kZXgiIGluY29ycmVjdGx5IGFsbG93ZWQgYWRkaW5nIFMvRiB3aGVuIFMKKyAgaXMgYSB0cmFja2VkIHN5bWxpbmsgdGhhdCBwb2ludHMgYXQgYSBkaXJlY3RvcnkgRCB0aGF0IGhhcyBhIHBhdGggRiBpbgorICBpdCAod2Ugc3RpbGwgbmVlZCB0byBmaXggYSBzaW1pbGFyIG5vbnNlbnNlIHdoZW4gUyBpcyBhIHN1Ym1vZHVsZSBhbmQgRgorICBpcyBhIHBhdGggaW4gaXQpLgorCisqICJnaXQgYW0iIGFmdGVyIHN0b3BwaW5nIGF0IGEgYnJva2VuIHBhdGNoIGxvc3QgLS13aGl0ZXNwYWNlLCAtQywgLXAgYW5kCisgIC0tM3dheSBvcHRpb25zIGdpdmVuIGZyb20gdGhlIGNvbW1hbmQgbGluZSBpbml0aWFsbHkuCisKKyogImdpdCBkaWZmIC0tc3RkaW4iIHVzZWQgdG8gdGFrZSB0d28gdHJlZXMgb24gYSBsaW5lIGFuZCBjb21wYXJlZCB0aGVtLAorICBidXQgd2UgZHJvcHBlZCBzdXBwb3J0IGZvciBzdWNoIGEgdXNlIGNhc2UgbG9uZyB0aW1lIGFnby4gIFRoaXMgaGFzCisgIGJlZW4gcmVzdXJyZWN0ZWQuCisKKyogImdpdCBmaWx0ZXItYnJhbmNoIiBmYWlsZWQgdG8gcmV3cml0ZSBhIHRhZyBuYW1lIHdpdGggc2xhc2hlcyBpbiBpdC4KKworKiAiZ2l0IGh0dHAtcHVzaCIgZGlkIG5vdCB1bmRlcnN0YW5kIFVSSSBzY2hlbWUgb3RoZXIgdGhhbiBvcGFxdWVsb2NrdG9rZW4KKyAgd2hlbiBhY3F1aXJpbmcgYSBsb2NrIGZyb20gdGhlIHNlcnZlciAodGhpcyBtYXkgbmVlZCB0byBiZSBiYWNrcG9ydGVkIHRvCisgIG9sZGVyIHJlbGVhc2VzIGxhdGVyKS4KKworKiBBZnRlciAiZ2l0IHJlYmFzZSAtcCIgc3RvcHBlZCB3aXRoIGNvbmZsaWN0cyB3aGlsZSByZXBsYXlpbmcgYSBtZXJnZSwKKyAiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlIiBkaWQgbm90IHdvcmsgKG1heSBuZWVkIHRvIGJlIGJhY2twb3J0ZWQgdG8gb2xkZXIKKyAgcmVsZWFzZXMpLgorCisqICJnaXQgcmV2ZXJ0IiByZWNvcmRzIHJlbGF0aXZlIHRvIHdoaWNoIHBhcmVudCBhIHJldmVydCB3YXMgbWFkZSB3aGVuCisgIHJldmVydGluZyBhIG1lcmdlLiAgVG9nZXRoZXIgd2l0aCBuZXcgZG9jdW1lbnRhdGlvbiB0aGF0IGV4cGxhaW5zIGlzc3VlcworICBhcm91bmQgcmV2ZXJ0aW5nIGEgbWVyZ2UgYW5kIG1lcmdpbmcgZnJvbSB0aGUgdXBkYXRlZCBicmFuY2ggbGF0ZXIsIHRoaXMKKyAgaG9wZWZ1bGx5IHdpbGwgcmVkdWNlIHVzZXIgY29uZnVzaW9uICh0aGlzIG1heSBuZWVkIHRvIGJlIGJhY2twb3J0ZWQgdG8KKyAgb2xkZXIgcmVsZWFzZXMgbGF0ZXIpLgorCisqICJnaXQgcm0gLS1jYWNoZWQiIHVzZWQgdG8gYWxsb3cgYW4gZW1wdHkgYmxvYiB0aGF0IHdhcyBhZGRlZCBlYXJsaWVyIHRvCisgIGJlIHJlbW92ZWQgd2l0aG91dCAtLWZvcmNlLCBldmVuIHdoZW4gdGhlIGZpbGUgaW4gdGhlIHdvcmsgdHJlZSBoYXMKKyAgc2luY2UgYmVlbiBtb2RpZmllZC4KKworKiAiZ2l0IHB1c2ggLS10YWdzIC0tYWxsICR0aGVyZSIgZmFpbGVkIHdpdGggZ2VuZXJpYyB1c2FnZSBtZXNzYWdlIHdpdGhvdXQKKyAgdGVsbGluZyBzYXlpbmcgdGhlc2UgdHdvIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4KKworKiAiZ2l0IGxvZyAtLWF1dGhvci8tLWNvbW1pdHRlciIgbWF0Y2ggdXNlZCB0byBwb3RlbnRpYWxseSBtYXRjaCB0aGUKKyAgdGltZXN0YW1wIHBhcnQsIGV4cG9zaW5nIGludGVybmFsIGltcGxlbWVudGF0aW9uIGRldGFpbC4gIEFsc28gdGhlc2UgZGlkCisgIG5vdCB3b3JrIHdpdGggLS1maXhlZC1zdHJpbmdzIG1hdGNoIGF0IGFsbC4KKworKiAiZ2l0d2ViIiBkaWQgbm90IG1hcmsgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW1wb3J0ZWQgZnJvbSBleHRlcm5hbCBIVE1MIGZyYWdtZW50cworICBjb3JyZWN0bHkuCisKKy0tCitleGVjID4vdmFyL3RtcC8xCitPPXYxLjYuMS1yYzMtNzQtZ2Y2NmJjNWYKK2VjaG8gTz0kKGdpdCBkZXNjcmliZSBtYXN0ZXIpCitnaXQgc2hvcnRsb2cgLS1uby1tZXJnZXMgJE8uLm1hc3RlciBebWFpbnQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vU3VibWl0dGluZ1BhdGNoZXMgYi9Eb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdQYXRjaGVzCmluZGV4IDM0ZmRjODMuLmJhMDdjOGMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vU3VibWl0dGluZ1BhdGNoZXMKKysrIGIvRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nUGF0Y2hlcwpAQCAtNzEsNyArNzEsNyBAQAogCiAoMWEpIFRyeSB0byBiZSBuaWNlIHRvIG9sZGVyIEMgY29tcGlsZXJzCiAKLVdlIHRyeSB0byBzdXBwb3J0IHdpZGUgcmFuZ2Ugb2YgQyBjb21waWxlcnMgdG8gY29tcGlsZQorV2UgdHJ5IHRvIHN1cHBvcnQgYSB3aWRlIHJhbmdlIG9mIEMgY29tcGlsZXJzIHRvIGNvbXBpbGUKIGdpdCB3aXRoLiBUaGF0IG1lYW5zIHRoYXQgeW91IHNob3VsZCBub3QgdXNlIEM5OSBpbml0aWFsaXplcnMsIGV2ZW4KIGlmIGEgbG90IG9mIGNvbXBpbGVycyBncm9rIGl0LgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FzY2lpZG9jLmNvbmYgYi9Eb2N1bWVudGF0aW9uL2FzY2lpZG9jLmNvbmYKaW5kZXggMmRhODY3ZC4uMWU3MzVkZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9hc2NpaWRvYy5jb25mCisrKyBiL0RvY3VtZW50YXRpb24vYXNjaWlkb2MuY29uZgpAQCAtNyw2ICs3LDkgQEAKICMgU2hvdyBHSVQgbGluayBhczogPGNvbW1hbmQ+KDxzZWN0aW9uPik7IGlmIHNlY3Rpb24gaXMgZGVmaW5lZCwgZWxzZSBqdXN0IHNob3cKICMgdGhlIGNvbW1hbmQuCiAKK1ttYWNyb3NdCisoP3N1KVtcXF0/KD9QPG5hbWU+bGlua2dpdCk6KD9QPHRhcmdldD5cUyo/KVxbKD9QPGF0dHJsaXN0Pi4qPylcXT0KKwogW2F0dHJpYnV0ZXNdCiBhc3Rlcmlzaz0mIzQyOwogcGx1cz0mIzQzOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ibGFtZS1vcHRpb25zLnR4dCBiL0RvY3VtZW50YXRpb24vYmxhbWUtb3B0aW9ucy50eHQKaW5kZXggNTQyODExMS4uN2YyODQzMiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9ibGFtZS1vcHRpb25zLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2JsYW1lLW9wdGlvbnMudHh0CkBAIC00MSw2ICs0MSwxMyBAQAogLVMgPHJldnMtZmlsZT46OgogCVVzZSByZXZzIGZyb20gcmV2cy1maWxlIGluc3RlYWQgb2YgY2FsbGluZyBsaW5rZ2l0OmdpdC1yZXYtbGlzdFsxXS4KIAorLS1yZXZlcnNlOjoKKwlXYWxrIGhpc3RvcnkgZm9yd2FyZCBpbnN0ZWFkIG9mIGJhY2t3YXJkLiBJbnN0ZWFkIG9mIHNob3dpbmcKKwl0aGUgcmV2aXNpb24gaW4gd2hpY2ggYSBsaW5lIGFwcGVhcmVkLCB0aGlzIHNob3dzIHRoZSBsYXN0CisJcmV2aXNpb24gaW4gd2hpY2ggYSBsaW5lIGhhcyBleGlzdGVkLiBUaGlzIHJlcXVpcmVzIGEgcmFuZ2Ugb2YKKwlyZXZpc2lvbiBsaWtlIFNUQVJULi5FTkQgd2hlcmUgdGhlIHBhdGggdG8gYmxhbWUgZXhpc3RzIGluCisJU1RBUlQuCisKIC1wOjoKIC0tcG9yY2VsYWluOjoKIAlTaG93IGluIGEgZm9ybWF0IGRlc2lnbmVkIGZvciBtYWNoaW5lIGNvbnN1bXB0aW9uLgpAQCAtNDksNiArNTYsMTMgQEAKIAlTaG93IHRoZSByZXN1bHQgaW5jcmVtZW50YWxseSBpbiBhIGZvcm1hdCBkZXNpZ25lZCBmb3IKIAltYWNoaW5lIGNvbnN1bXB0aW9uLgogCistLWVuY29kaW5nPTxlbmNvZGluZz46OgorCVNwZWNpZmllcyB0aGUgZW5jb2RpbmcgdXNlZCB0byBvdXRwdXQgYXV0aG9yIG5hbWVzCisJYW5kIGNvbW1pdCBzdW1tYXJpZXMuIFNldHRpbmcgaXQgdG8gYG5vbmVgIG1ha2VzIGJsYW1lCisJb3V0cHV0IHVuY29udmVydGVkIGRhdGEuIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUKKwlkaXNjdXNzaW9uIGFib3V0IGVuY29kaW5nIGluIHRoZSBsaW5rZ2l0OmdpdC1sb2dbMV0KKwltYW51YWwgcGFnZS4KKwogLS1jb250ZW50cyA8ZmlsZT46OgogCVdoZW4gPHJldj4gaXMgbm90IHNwZWNpZmllZCwgdGhlIGNvbW1hbmQgYW5ub3RhdGVzIHRoZQogCWNoYW5nZXMgc3RhcnRpbmcgYmFja3dhcmRzIGZyb20gdGhlIHdvcmtpbmcgdHJlZSBjb3B5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9jb25maWcudHh0IGIvRG9jdW1lbnRhdGlvbi9jb25maWcudHh0CmluZGV4IDExM2Q5ZDEuLjJlZDg2OGMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vY29uZmlnLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2NvbmZpZy50eHQKQEAgLTExNyw2ICsxMTcsMTcgQEAKIAl0aGUgd29ya2luZyBjb3B5IGFyZSBpZ25vcmVkOyB1c2VmdWwgb24gYnJva2VuIGZpbGVzeXN0ZW1zIGxpa2UgRkFULgogCVNlZSBsaW5rZ2l0OmdpdC11cGRhdGUtaW5kZXhbMV0uIFRydWUgYnkgZGVmYXVsdC4KIAorY29yZS5pZ25vcmVDeWd3aW5GU1RyaWNrczo6CisJVGhpcyBvcHRpb24gaXMgb25seSB1c2VkIGJ5IEN5Z3dpbiBpbXBsZW1lbnRhdGlvbiBvZiBHaXQuIElmIGZhbHNlLAorCXRoZSBDeWd3aW4gc3RhdCgpIGFuZCBsc3RhdCgpIGZ1bmN0aW9ucyBhcmUgdXNlZC4gVGhpcyBtYXkgYmUgdXNlZnVsCisJaWYgeW91ciByZXBvc2l0b3J5IGNvbnNpc3RzIG9mIGEgZmV3IHNlcGFyYXRlIGRpcmVjdG9yaWVzIGpvaW5lZCBpbgorCW9uZSBoaWVyYXJjaHkgdXNpbmcgQ3lnd2luIG1vdW50LiBJZiB0cnVlLCBHaXQgdXNlcyBuYXRpdmUgV2luMzIgQVBJCisJd2hlbmV2ZXIgaXQgaXMgcG9zc2libGUgYW5kIGZhbGxzIGJhY2sgdG8gQ3lnd2luIGZ1bmN0aW9ucyBvbmx5IHRvCisJaGFuZGxlIHN5bWJvbCBsaW5rcy4gVGhlIG5hdGl2ZSBtb2RlIGlzIG1vcmUgdGhhbiB0d2ljZSBmYXN0ZXIgdGhhbgorCW5vcm1hbCBDeWd3aW4gbC9zdGF0KCkgZnVuY3Rpb25zLiBUcnVlIGJ5IGRlZmF1bHQsIHVubGVzcyBjb3JlLmZpbGVtb2RlCisJaXMgdHJ1ZSwgaW4gd2hpY2ggY2FzZSBpZ25vcmVDeWd3aW5GU1RyaWNrcyBpcyBpZ25vcmVkIGFzIEN5Z3dpbidzCisJUE9TSVggZW11bGF0aW9uIGlzIHJlcXVpcmVkIHRvIHN1cHBvcnQgY29yZS5maWxlbW9kZS4KKwogY29yZS50cnVzdGN0aW1lOjoKIAlJZiBmYWxzZSwgdGhlIGN0aW1lIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGluZGV4IGFuZCB0aGUKIAl3b3JraW5nIGNvcHkgYXJlIGlnbm9yZWQ7IHVzZWZ1bCB3aGVuIHRoZSBpbm9kZSBjaGFuZ2UgdGltZQpAQCAtNDAyLDYgKzQxMywxNSBAQAogam91cm5hbGxpbmcgKHRyYWRpdGlvbmFsIFVOSVggZmlsZXN5c3RlbXMpIG9yIHRoYXQgb25seSBqb3VybmFsIG1ldGFkYXRhCiBhbmQgbm90IGZpbGUgY29udGVudHMgKE9TIFgncyBIRlMrLCBvciBMaW51eCBleHQzIHdpdGggImRhdGE9d3JpdGViYWNrIikuCiAKK2NvcmUucHJlbG9hZGluZGV4OjoKKwlFbmFibGUgcGFyYWxsZWwgaW5kZXggcHJlbG9hZCBmb3Igb3BlcmF0aW9ucyBsaWtlICdnaXQgZGlmZicKKysKK1RoaXMgY2FuIHNwZWVkIHVwIG9wZXJhdGlvbnMgbGlrZSAnZ2l0IGRpZmYnIGFuZCAnZ2l0IHN0YXR1cycgZXNwZWNpYWxseQorb24gZmlsZXN5c3RlbXMgbGlrZSBORlMgdGhhdCBoYXZlIHdlYWsgY2FjaGluZyBzZW1hbnRpY3MgYW5kIHRodXMKK3JlbGF0aXZlbHkgaGlnaCBJTyBsYXRlbmNpZXMuICBXaXRoIHRoaXMgc2V0IHRvICd0cnVlJywgZ2l0IHdpbGwgZG8gdGhlCitpbmRleCBjb21wYXJpc29uIHRvIHRoZSBmaWxlc3lzdGVtIGRhdGEgaW4gcGFyYWxsZWwsIGFsbG93aW5nCitvdmVybGFwcGluZyBJTydzLgorCiBhbGlhcy4qOjoKIAlDb21tYW5kIGFsaWFzZXMgZm9yIHRoZSBsaW5rZ2l0OmdpdFsxXSBjb21tYW5kIHdyYXBwZXIgLSBlLmcuCiAJYWZ0ZXIgZGVmaW5pbmcgImFsaWFzLmxhc3QgPSBjYXQtZmlsZSBjb21taXQgSEVBRCIsIHRoZSBpbnZvY2F0aW9uCkBAIC01OTAsNiArNjEwLDIyIEBACiAJeW91IHdhbnQgdG8gdXNlIGFuIGV4dGVybmFsIGRpZmYgcHJvZ3JhbSBvbmx5IG9uIGEgc3Vic2V0IG9mCiAJeW91ciBmaWxlcywgeW91CW1pZ2h0IHdhbnQgdG8gdXNlIGxpbmtnaXQ6Z2l0YXR0cmlidXRlc1s1XSBpbnN0ZWFkLgogCitkaWZmLm1uZW1vbmljcHJlZml4OjoKKwlJZiBzZXQsICdnaXQtZGlmZicgdXNlcyBhIHByZWZpeCBwYWlyIHRoYXQgaXMgZGlmZmVyZW50IGZyb20gdGhlCisJc3RhbmRhcmQgImEvIiBhbmQgImIvIiBkZXBlbmRpbmcgb24gd2hhdCBpcyBiZWluZyBjb21wYXJlZC4gIFdoZW4KKwl0aGlzIGNvbmZpZ3VyYXRpb24gaXMgaW4gZWZmZWN0LCByZXZlcnNlIGRpZmYgb3V0cHV0IGFsc28gc3dhcHMKKwl0aGUgb3JkZXIgb2YgdGhlIHByZWZpeGVzOgorJ2dpdC1kaWZmJzs7CisJY29tcGFyZXMgdGhlIChpKW5kZXggYW5kIHRoZSAodylvcmsgdHJlZTsKKydnaXQtZGlmZiBIRUFEJzs7CisJIGNvbXBhcmVzIGEgKGMpb21taXQgYW5kIHRoZSAodylvcmsgdHJlZTsKKydnaXQgZGlmZiAtLWNhY2hlZCc7OworCWNvbXBhcmVzIGEgKGMpb21taXQgYW5kIHRoZSAoaSluZGV4OworJ2dpdC1kaWZmIEhFQUQ6ZmlsZTEgZmlsZTInOzsKKwljb21wYXJlcyBhbiAobyliamVjdCBhbmQgYSAodylvcmsgdHJlZSBlbnRpdHk7CisnZ2l0IGRpZmYgLS1uby1pbmRleCBhIGInOzsKKwljb21wYXJlcyB0d28gbm9uLWdpdCB0aGluZ3MgKDEpIGFuZCAoMikuCisKIGRpZmYucmVuYW1lTGltaXQ6OgogCVRoZSBudW1iZXIgb2YgZmlsZXMgdG8gY29uc2lkZXIgd2hlbiBwZXJmb3JtaW5nIHRoZSBjb3B5L3JlbmFtZQogCWRldGVjdGlvbjsgZXF1aXZhbGVudCB0byB0aGUgJ2dpdC1kaWZmJyBvcHRpb24gJy1sJy4KQEAgLTU5OSw2ICs2MzUsMTAgQEAKIAl3aWxsIGVuYWJsZSBiYXNpYyByZW5hbWUgZGV0ZWN0aW9uLiAgSWYgc2V0IHRvICJjb3BpZXMiIG9yCiAJImNvcHkiLCBpdCB3aWxsIGRldGVjdCBjb3BpZXMsIGFzIHdlbGwuCiAKK2RpZmYuc3VwcHJlc3NCbGFua0VtcHR5OjoKKwlBIGJvb2xlYW4gdG8gaW5oaWJpdCB0aGUgc3RhbmRhcmQgYmVoYXZpb3Igb2YgcHJpbnRpbmcgYSBzcGFjZQorCWJlZm9yZSBlYWNoIGVtcHR5IG91dHB1dCBsaW5lLiBEZWZhdWx0cyB0byBmYWxzZS4KKwogZmV0Y2gudW5wYWNrTGltaXQ6OgogCUlmIHRoZSBudW1iZXIgb2Ygb2JqZWN0cyBmZXRjaGVkIG92ZXIgdGhlIGdpdCBuYXRpdmUKIAl0cmFuc2ZlciBpcyBiZWxvdyB0aGlzCkBAIC02MTEsMTAgKzY1MSwxMSBAQAogCWB0cmFuc2Zlci51bnBhY2tMaW1pdGAgaXMgdXNlZCBpbnN0ZWFkLgogCiBmb3JtYXQubnVtYmVyZWQ6OgotCUEgYm9vbGVhbiB3aGljaCBjYW4gZW5hYmxlIHNlcXVlbmNlIG51bWJlcnMgaW4gcGF0Y2ggc3ViamVjdHMuCi0JU2V0dGluZyB0aGlzIG9wdGlvbiB0byAiYXV0byIgd2lsbCBlbmFibGUgaXQgb25seSBpZiB0aGVyZSBpcwotCW1vcmUgdGhhbiBvbmUgcGF0Y2guICBTZWUgLS1udW1iZXJlZCBvcHRpb24gaW4KLQlsaW5rZ2l0OmdpdC1mb3JtYXQtcGF0Y2hbMV0uCisJQSBib29sZWFuIHdoaWNoIGNhbiBlbmFibGUgb3IgZGlzYWJsZSBzZXF1ZW5jZSBudW1iZXJzIGluIHBhdGNoCisJc3ViamVjdHMuICBJdCBkZWZhdWx0cyB0byAiYXV0byIgd2hpY2ggZW5hYmxlcyBpdCBvbmx5IGlmIHRoZXJlCisJaXMgbW9yZSB0aGFuIG9uZSBwYXRjaC4gIEl0IGNhbiBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGZvciBhbGwKKwltZXNzYWdlcyBieSBzZXR0aW5nIGl0IHRvICJ0cnVlIiBvciAiZmFsc2UiLiAgU2VlIC0tbnVtYmVyZWQKKwlvcHRpb24gaW4gbGlua2dpdDpnaXQtZm9ybWF0LXBhdGNoWzFdLgogCiBmb3JtYXQuaGVhZGVyczo6CiAJQWRkaXRpb25hbCBlbWFpbCBoZWFkZXJzIHRvIGluY2x1ZGUgaW4gYSBwYXRjaCB0byBiZSBzdWJtaXR0ZWQKQEAgLTY2MSw3ICs3MDIsOSBAQAogCiBnYy5wcnVuZWV4cGlyZTo6CiAJV2hlbiAnZ2l0LWdjJyBpcyBydW4sIGl0IHdpbGwgY2FsbCAncHJ1bmUgLS1leHBpcmUgMi53ZWVrcy5hZ28nLgotCU92ZXJyaWRlIHRoZSBncmFjZSBwZXJpb2Qgd2l0aCB0aGlzIGNvbmZpZyB2YXJpYWJsZS4KKwlPdmVycmlkZSB0aGUgZ3JhY2UgcGVyaW9kIHdpdGggdGhpcyBjb25maWcgdmFyaWFibGUuICBUaGUgdmFsdWUKKwkibm93IiBtYXkgYmUgdXNlZCB0byBkaXNhYmxlIHRoaXMgIGdyYWNlIHBlcmlvZCBhbmQgYWx3YXlzIHBydW5lCisJdW5yZWFjaGFibGUgb2JqZWN0cyBpbW1lZGlhdGVseS4KIAogZ2MucmVmbG9nZXhwaXJlOjoKIAknZ2l0LXJlZmxvZyBleHBpcmUnIHJlbW92ZXMgcmVmbG9nIGVudHJpZXMgb2xkZXIgdGhhbgpAQCAtNzUyLDYgKzc5NSwxNCBAQAogCVNwZWNpZmllcyBob3cgbWFueSBjb250ZXh0IGxpbmVzIHNob3VsZCBiZSB1c2VkIGluIGNhbGxzIHRvIGRpZmYKIAltYWRlIGJ5IHRoZSBsaW5rZ2l0OmdpdC1ndWlbMV0uIFRoZSBkZWZhdWx0IGlzICI1Ii4KIAorZ3VpLmVuY29kaW5nOjoKKwlTcGVjaWZpZXMgdGhlIGRlZmF1bHQgZW5jb2RpbmcgdG8gdXNlIGZvciBkaXNwbGF5aW5nIG9mCisJZmlsZSBjb250ZW50cyBpbiBsaW5rZ2l0OmdpdC1ndWlbMV0gYW5kIGxpbmtnaXQ6Z2l0a1sxXS4KKwlJdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBzZXR0aW5nIHRoZSAnZW5jb2RpbmcnIGF0dHJpYnV0ZQorCWZvciByZWxldmFudCBmaWxlcyAoc2VlIGxpbmtnaXQ6Z2l0YXR0cmlidXRlc1s1XSkuCisJSWYgdGhpcyBvcHRpb24gaXMgbm90IHNldCwgdGhlIHRvb2xzIGRlZmF1bHQgdG8gdGhlCisJbG9jYWxlIGVuY29kaW5nLgorCiBndWkubWF0Y2h0cmFja2luZ2JyYW5jaDo6CiAJRGV0ZXJtaW5lcyBpZiBuZXcgYnJhbmNoZXMgY3JlYXRlZCB3aXRoIGxpbmtnaXQ6Z2l0LWd1aVsxXSBzaG91bGQKIAlkZWZhdWx0IHRvIHRyYWNraW5nIHJlbW90ZSBicmFuY2hlcyB3aXRoIG1hdGNoaW5nIG5hbWVzIG9yCkBAIC03NzQsNiArODI1LDczIEBACiAJdGhlIGxpbmtnaXQ6Z2l0LWd1aVsxXS4gV2hlbiBzZXQgdG8gIm5vbmUiIHNwZWxsIGNoZWNraW5nIGlzIHR1cm5lZAogCW9mZi4KIAorZ3VpLmZhc3Rjb3B5YmxhbWU6OgorCUlmIHRydWUsICdnaXQgZ3VpIGJsYW1lJyB1c2VzICctQycgaW5zdGVhZCBvZiAnLUMgLUMnIGZvciBvcmlnaW5hbAorCWxvY2F0aW9uIGRldGVjdGlvbi4gSXQgbWFrZXMgYmxhbWUgc2lnbmlmaWNhbnRseSBmYXN0ZXIgb24gaHVnZQorCXJlcG9zaXRvcmllcyBhdCB0aGUgZXhwZW5zZSBvZiBsZXNzIHRob3JvdWdoIGNvcHkgZGV0ZWN0aW9uLgorCitndWkuY29weWJsYW1ldGhyZXNob2xkOjoKKwlTcGVjaWZpZXMgdGhlIHRocmVzaG9sZCB0byB1c2UgaW4gJ2dpdCBndWkgYmxhbWUnIG9yaWdpbmFsIGxvY2F0aW9uCisJZGV0ZWN0aW9uLCBtZWFzdXJlZCBpbiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4gU2VlIHRoZQorCWxpbmtnaXQ6Z2l0LWJsYW1lWzFdIG1hbnVhbCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb3B5IGRldGVjdGlvbi4KKworZ3VpLmJsYW1laGlzdG9yeWN0eDo6CisJU3BlY2lmaWVzIHRoZSByYWRpdXMgb2YgaGlzdG9yeSBjb250ZXh0IGluIGRheXMgdG8gc2hvdyBpbgorCWxpbmtnaXQ6Z2l0a1sxXSBmb3IgdGhlIHNlbGVjdGVkIGNvbW1pdCwgd2hlbiB0aGUgYFNob3cgSGlzdG9yeQorCUNvbnRleHRgIG1lbnUgaXRlbSBpcyBpbnZva2VkIGZyb20gJ2dpdCBndWkgYmxhbWUnLiBJZiB0aGlzCisJdmFyaWFibGUgaXMgc2V0IHRvIHplcm8sIHRoZSB3aG9sZSBoaXN0b3J5IGlzIHNob3duLgorCitndWl0b29sLjxuYW1lPi5jbWQ6OgorCVNwZWNpZmllcyB0aGUgc2hlbGwgY29tbWFuZCBsaW5lIHRvIGV4ZWN1dGUgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBpdGVtCisJb2YgdGhlIGxpbmtnaXQ6Z2l0LWd1aVsxXSBgVG9vbHNgIG1lbnUgaXMgaW52b2tlZC4gVGhpcyBvcHRpb24gaXMKKwltYW5kYXRvcnkgZm9yIGV2ZXJ5IHRvb2wuIFRoZSBjb21tYW5kIGlzIGV4ZWN1dGVkIGZyb20gdGhlIHJvb3Qgb2YKKwl0aGUgd29ya2luZyBkaXJlY3RvcnksIGFuZCBpbiB0aGUgZW52aXJvbm1lbnQgaXQgcmVjZWl2ZXMgdGhlIG5hbWUgb2YKKwl0aGUgdG9vbCBhcyAnR0lUX0dVSVRPT0wnLCB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGZpbGUgYXMKKwknRklMRU5BTUUnLCBhbmQgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgYnJhbmNoIGFzICdDVVJfQlJBTkNIJyAoaWYKKwl0aGUgaGVhZCBpcyBkZXRhY2hlZCwgJ0NVUl9CUkFOQ0gnIGlzIGVtcHR5KS4KKworZ3VpdG9vbC48bmFtZT4ubmVlZHNmaWxlOjoKKwlSdW4gdGhlIHRvb2wgb25seSBpZiBhIGRpZmYgaXMgc2VsZWN0ZWQgaW4gdGhlIEdVSS4gSXQgZ3VhcmFudGVlcworCXRoYXQgJ0ZJTEVOQU1FJyBpcyBub3QgZW1wdHkuCisKK2d1aXRvb2wuPG5hbWU+Lm5vY29uc29sZTo6CisJUnVuIHRoZSBjb21tYW5kIHNpbGVudGx5LCB3aXRob3V0IGNyZWF0aW5nIGEgd2luZG93IHRvIGRpc3BsYXkgaXRzCisJb3V0cHV0LgorCitndWl0b29sLjxuYW1lPi5ub3Jlc2Nhbjo6CisJRG9uJ3QgcmVzY2FuIHRoZSB3b3JraW5nIGRpcmVjdG9yeSBmb3IgY2hhbmdlcyBhZnRlciB0aGUgdG9vbAorCWZpbmlzaGVzIGV4ZWN1dGlvbi4KKworZ3VpdG9vbC48bmFtZT4uY29uZmlybTo6CisJU2hvdyBhIGNvbmZpcm1hdGlvbiBkaWFsb2cgYmVmb3JlIGFjdHVhbGx5IHJ1bm5pbmcgdGhlIHRvb2wuCisKK2d1aXRvb2wuPG5hbWU+LmFyZ3Byb21wdDo6CisJUmVxdWVzdCBhIHN0cmluZyBhcmd1bWVudCBmcm9tIHRoZSB1c2VyLCBhbmQgcGFzcyBpdCB0byB0aGUgdG9vbAorCXRocm91Z2ggdGhlICdBUkdTJyBlbnZpcm9ubWVudCB2YXJpYWJsZS4gU2luY2UgcmVxdWVzdGluZyBhbgorCWFyZ3VtZW50IGltcGxpZXMgY29uZmlybWF0aW9uLCB0aGUgJ2NvbmZpcm0nIG9wdGlvbiBoYXMgbm8gZWZmZWN0CisJaWYgdGhpcyBpcyBlbmFibGVkLiBJZiB0aGUgb3B0aW9uIGlzIHNldCB0byAndHJ1ZScsICd5ZXMnLCBvciAnMScsCisJdGhlIGRpYWxvZyB1c2VzIGEgYnVpbHQtaW4gZ2VuZXJpYyBwcm9tcHQ7IG90aGVyd2lzZSB0aGUgZXhhY3QKKwl2YWx1ZSBvZiB0aGUgdmFyaWFibGUgaXMgdXNlZC4KKworZ3VpdG9vbC48bmFtZT4ucmV2cHJvbXB0OjoKKwlSZXF1ZXN0IGEgc2luZ2xlIHZhbGlkIHJldmlzaW9uIGZyb20gdGhlIHVzZXIsIGFuZCBzZXQgdGhlCisJJ1JFVklTSU9OJyBlbnZpcm9ubWVudCB2YXJpYWJsZS4gSW4gb3RoZXIgYXNwZWN0cyB0aGlzIG9wdGlvbgorCWlzIHNpbWlsYXIgdG8gJ2FyZ3Byb21wdCcsIGFuZCBjYW4gYmUgdXNlZCB0b2dldGhlciB3aXRoIGl0LgorCitndWl0b29sLjxuYW1lPi5yZXZ1bm1lcmdlZDo6CisJU2hvdyBvbmx5IHVubWVyZ2VkIGJyYW5jaGVzIGluIHRoZSAncmV2cHJvbXB0JyBzdWJkaWFsb2cuCisJVGhpcyBpcyB1c2VmdWwgZm9yIHRvb2xzIHNpbWlsYXIgdG8gbWVyZ2Ugb3IgcmViYXNlLCBidXQgbm90CisJZm9yIHRoaW5ncyBsaWtlIGNoZWNrb3V0IG9yIHJlc2V0LgorCitndWl0b29sLjxuYW1lPi50aXRsZTo6CisJU3BlY2lmaWVzIHRoZSB0aXRsZSB0byB1c2UgZm9yIHRoZSBwcm9tcHQgZGlhbG9nLiBUaGUgZGVmYXVsdAorCWlzIHRoZSB0b29sIG5hbWUuCisKK2d1aXRvb2wuPG5hbWU+LnByb21wdDo6CisJU3BlY2lmaWVzIHRoZSBnZW5lcmFsIHByb21wdCBzdHJpbmcgdG8gZGlzcGxheSBhdCB0aGUgdG9wIG9mCisJdGhlIGRpYWxvZywgYmVmb3JlIHN1YnNlY3Rpb25zIGZvciAnYXJncHJvbXB0JyBhbmQgJ3JldnByb21wdCcuCisJVGhlIGRlZmF1bHQgdmFsdWUgaW5jbHVkZXMgdGhlIGFjdHVhbCBjb21tYW5kLgorCiBoZWxwLmJyb3dzZXI6OgogCVNwZWNpZnkgdGhlIGJyb3dzZXIgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZGlzcGxheSBoZWxwIGluIHRoZQogCSd3ZWInIGZvcm1hdC4gU2VlIGxpbmtnaXQ6Z2l0LWhlbHBbMV0uCkBAIC03ODMsNiArOTAxLDE1IEBACiAJVmFsdWVzICdtYW4nLCAnaW5mbycsICd3ZWInIGFuZCAnaHRtbCcgYXJlIHN1cHBvcnRlZC4gJ21hbicgaXMKIAl0aGUgZGVmYXVsdC4gJ3dlYicgYW5kICdodG1sJyBhcmUgdGhlIHNhbWUuCiAKK2hlbHAuYXV0b2NvcnJlY3Q6OgorCUF1dG9tYXRpY2FsbHkgY29ycmVjdCBhbmQgZXhlY3V0ZSBtaXN0eXBlZCBjb21tYW5kcyBhZnRlcgorCXdhaXRpbmcgZm9yIHRoZSBnaXZlbiBudW1iZXIgb2YgZGVjaXNlY29uZHMgKDAuMSBzZWMpLiBJZiBtb3JlCisJdGhhbiBvbmUgY29tbWFuZCBjYW4gYmUgZGVkdWNlZCBmcm9tIHRoZSBlbnRlcmVkIHRleHQsIG5vdGhpbmcKKwl3aWxsIGJlIGV4ZWN1dGVkLiAgSWYgdGhlIHZhbHVlIG9mIHRoaXMgb3B0aW9uIGlzIG5lZ2F0aXZlLAorCXRoZSBjb3JyZWN0ZWQgY29tbWFuZCB3aWxsIGJlIGV4ZWN1dGVkIGltbWVkaWF0ZWx5LiBJZiB0aGUKKwl2YWx1ZSBpcyAwIC0gdGhlIGNvbW1hbmQgd2lsbCBiZSBqdXN0IHNob3duIGJ1dCBub3QgZXhlY3V0ZWQuCisJVGhpcyBpcyB0aGUgZGVmYXVsdC4KKwogaHR0cC5wcm94eTo6CiAJT3ZlcnJpZGUgdGhlIEhUVFAgcHJveHksIG5vcm1hbGx5IGNvbmZpZ3VyZWQgdXNpbmcgdGhlICdodHRwX3Byb3h5JwogCWVudmlyb25tZW50IHZhcmlhYmxlIChzZWUgbGlua2dpdDpjdXJsWzFdKS4gIFRoaXMgY2FuIGJlIG92ZXJyaWRkZW4KQEAgLTEwMTQsNiArMTE0MSwxOSBAQAogCWVzcGVjaWFsbHkgb24gc2xvdyBmaWxlc3lzdGVtcy4gIElmIG5vdCBzZXQsIHRoZSB2YWx1ZSBvZgogCWB0cmFuc2Zlci51bnBhY2tMaW1pdGAgaXMgdXNlZCBpbnN0ZWFkLgogCityZWNlaXZlLmRlbnlEZWxldGVzOjoKKwlJZiBzZXQgdG8gdHJ1ZSwgZ2l0LXJlY2VpdmUtcGFjayB3aWxsIGRlbnkgYSByZWYgdXBkYXRlIHRoYXQgZGVsZXRlcworCXRoZSByZWYuIFVzZSB0aGlzIHRvIHByZXZlbnQgc3VjaCBhIHJlZiBkZWxldGlvbiB2aWEgYSBwdXNoLgorCityZWNlaXZlLmRlbnlDdXJyZW50QnJhbmNoOjoKKwlJZiBzZXQgdG8gdHJ1ZSBvciAicmVmdXNlIiwgcmVjZWl2ZS1wYWNrIHdpbGwgZGVueSBhIHJlZiB1cGRhdGUKKwl0byB0aGUgY3VycmVudGx5IGNoZWNrZWQgb3V0IGJyYW5jaCBvZiBhIG5vbi1iYXJlIHJlcG9zaXRvcnkuCisJU3VjaCBhIHB1c2ggaXMgcG90ZW50aWFsbHkgZGFuZ2Vyb3VzIGJlY2F1c2UgaXQgYnJpbmdzIHRoZSBIRUFECisJb3V0IG9mIHN5bmMgd2l0aCB0aGUgaW5kZXggYW5kIHdvcmtpbmcgdHJlZS4gSWYgc2V0IHRvICJ3YXJuIiwKKwlwcmludCBhIHdhcm5pbmcgb2Ygc3VjaCBhIHB1c2ggdG8gc3RkZXJyLCBidXQgYWxsb3cgdGhlIHB1c2ggdG8KKwlwcm9jZWVkLiBJZiBzZXQgdG8gZmFsc2Ugb3IgImlnbm9yZSIsIGFsbG93IHN1Y2ggcHVzaGVzIHdpdGggbm8KKwltZXNzYWdlLiBEZWZhdWx0cyB0byAid2FybiIuCisKIHJlY2VpdmUuZGVueU5vbkZhc3RGb3J3YXJkczo6CiAJSWYgc2V0IHRvIHRydWUsIGdpdC1yZWNlaXZlLXBhY2sgd2lsbCBkZW55IGEgcmVmIHVwZGF0ZSB3aGljaCBpcwogCW5vdCBhIGZhc3QgZm9yd2FyZC4gVXNlIHRoaXMgdG8gcHJldmVudCBzdWNoIGFuIHVwZGF0ZSB2aWEgYSBwdXNoLApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kaWZmLW9wdGlvbnMudHh0IGIvRG9jdW1lbnRhdGlvbi9kaWZmLW9wdGlvbnMudHh0CmluZGV4IDQ1ODg1YmIuLmI0MzJkMjUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZGlmZi1vcHRpb25zLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2RpZmYtb3B0aW9ucy50eHQKQEAgLTE5LDE2ICsxOSwxMiBAQAogCiBpZm5kZWY6OmdpdC1mb3JtYXQtcGF0Y2hbXQogLXA6OgorLXU6OgogCUdlbmVyYXRlIHBhdGNoIChzZWUgc2VjdGlvbiBvbiBnZW5lcmF0aW5nIHBhdGNoZXMpLgogCXtnaXQtZGlmZj8gVGhpcyBpcyB0aGUgZGVmYXVsdC59CiBlbmRpZjo6Z2l0LWZvcm1hdC1wYXRjaFtdCiAKLS11OjoKLQlTeW5vbnltIGZvciAiLXAiLgotCiAtVTxuPjo6Ci0JU2hvcnRoYW5kIGZvciAiLS11bmlmaWVkPTxuPiIuCi0KIC0tdW5pZmllZD08bj46OgogCUdlbmVyYXRlIGRpZmZzIHdpdGggPG4+IGxpbmVzIG9mIGNvbnRleHQgaW5zdGVhZCBvZgogCXRoZSB1c3VhbCB0aHJlZS4gSW1wbGllcyAiLXAiLgpAQCAtNjUsNiArNjEsOSBAQAogCWNhbiBiZSBzZXQgd2l0aCAiLS1kaXJzdGF0PWxpbWl0Ii4gQ2hhbmdlcyBpbiBhIGNoaWxkIGRpcmVjdG9yeSBpcyBub3QKIAljb3VudGVkIGZvciB0aGUgcGFyZW50IGRpcmVjdG9yeSwgdW5sZXNzICItLWN1bXVsYXRpdmUiIGlzIHVzZWQuCiAKKy0tZGlyc3RhdC1ieS1maWxlWz1saW1pdF06OgorCVNhbWUgYXMgLS1kaXJzdGF0LCBidXQgY291bnRzIGNoYW5nZWQgZmlsZXMgaW5zdGVhZCBvZiBsaW5lcy4KKwogLS1zdW1tYXJ5OjoKIAlPdXRwdXQgYSBjb25kZW5zZWQgc3VtbWFyeSBvZiBleHRlbmRlZCBoZWFkZXIgaW5mb3JtYXRpb24KIAlzdWNoIGFzIGNyZWF0aW9ucywgcmVuYW1lcyBhbmQgbW9kZSBjaGFuZ2VzLgpAQCAtMTA2LDkgKzEwNSw5IEBACiAJLS1leGl0LWNvZGUuCiAKIC0tZnVsbC1pbmRleDo6Ci0JSW5zdGVhZCBvZiB0aGUgZmlyc3QgaGFuZGZ1bCBjaGFyYWN0ZXJzLCBzaG93IGZ1bGwKLQlvYmplY3QgbmFtZSBvZiBwcmUtIGFuZCBwb3N0LWltYWdlIGJsb2Igb24gdGhlICJpbmRleCIKLQlsaW5lIHdoZW4gZ2VuZXJhdGluZyBhIHBhdGNoIGZvcm1hdCBvdXRwdXQuCisJSW5zdGVhZCBvZiB0aGUgZmlyc3QgaGFuZGZ1bCBvZiBjaGFyYWN0ZXJzLCBzaG93IHRoZSBmdWxsCisJcHJlLSBhbmQgcG9zdC1pbWFnZSBibG9iIG9iamVjdCBuYW1lcyBvbiB0aGUgImluZGV4IgorCWxpbmUgd2hlbiBnZW5lcmF0aW5nIHBhdGNoIGZvcm1hdCBvdXRwdXQuCiAKIC0tYmluYXJ5OjoKIAlJbiBhZGRpdGlvbiB0byAtLWZ1bGwtaW5kZXgsIG91dHB1dCAiYmluYXJ5IGRpZmYiIHRoYXQKQEAgLTE4NywzMSArMTg2LDI1IEBACiAJY2FuIG5hbWUgd2hpY2ggc3ViZGlyZWN0b3J5IHRvIG1ha2UgdGhlIG91dHB1dCByZWxhdGl2ZQogCXRvIGJ5IGdpdmluZyBhIDxwYXRoPiBhcyBhbiBhcmd1bWVudC4KIAorLWE6OgogLS10ZXh0OjoKIAlUcmVhdCBhbGwgZmlsZXMgYXMgdGV4dC4KIAotLWE6OgotCVNob3J0aGFuZCBmb3IgIi0tdGV4dCIuCi0KIC0taWdub3JlLXNwYWNlLWF0LWVvbDo6CiAJSWdub3JlIGNoYW5nZXMgaW4gd2hpdGVzcGFjZSBhdCBFT0wuCiAKKy1iOjoKIC0taWdub3JlLXNwYWNlLWNoYW5nZTo6CiAJSWdub3JlIGNoYW5nZXMgaW4gYW1vdW50IG9mIHdoaXRlc3BhY2UuICBUaGlzIGlnbm9yZXMgd2hpdGVzcGFjZQogCWF0IGxpbmUgZW5kLCBhbmQgY29uc2lkZXJzIGFsbCBvdGhlciBzZXF1ZW5jZXMgb2Ygb25lIG9yCiAJbW9yZSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgdG8gYmUgZXF1aXZhbGVudC4KIAotLWI6OgotCVNob3J0aGFuZCBmb3IgIi0taWdub3JlLXNwYWNlLWNoYW5nZSIuCi0KKy13OjoKIC0taWdub3JlLWFsbC1zcGFjZTo6CiAJSWdub3JlIHdoaXRlc3BhY2Ugd2hlbiBjb21wYXJpbmcgbGluZXMuICBUaGlzIGlnbm9yZXMKIAlkaWZmZXJlbmNlcyBldmVuIGlmIG9uZSBsaW5lIGhhcyB3aGl0ZXNwYWNlIHdoZXJlIHRoZSBvdGhlcgogCWxpbmUgaGFzIG5vbmUuCiAKLS13OjoKLQlTaG9ydGhhbmQgZm9yICItLWlnbm9yZS1hbGwtc3BhY2UiLgotCiAtLWV4aXQtY29kZTo6CiAJTWFrZSB0aGUgcHJvZ3JhbSBleGl0IHdpdGggY29kZXMgc2ltaWxhciB0byBkaWZmKDEpLgogCVRoYXQgaXMsIGl0IGV4aXRzIHdpdGggMSBpZiB0aGVyZSB3ZXJlIGRpZmZlcmVuY2VzIGFuZApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtYWRkLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWFkZC50eHQKaW5kZXggMmI2ZDZjOC4uZTRjNzExYiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtYWRkLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1hZGQudHh0CkBAIC05LDggKzksOCBAQAogLS0tLS0tLS0KIFt2ZXJzZV0KICdnaXQgYWRkJyBbLW5dIFstdl0gWy0tZm9yY2UgfCAtZl0gWy0taW50ZXJhY3RpdmUgfCAtaV0gWy0tcGF0Y2ggfCAtcF0KLQkgIFstLWFsbCB8IFstLXVwZGF0ZSB8IC11XV0gWy0tcmVmcmVzaF0gWy0taWdub3JlLWVycm9yc10gWy0tXQotCSAgPGZpbGVwYXR0ZXJuPi4uLgorCSAgWy0tYWxsIHwgWy0tdXBkYXRlIHwgLXVdXSBbLS1pbnRlbnQtdG8tYWRkIHwgLU5dCisJICBbLS1yZWZyZXNoXSBbLS1pZ25vcmUtZXJyb3JzXSBbLS1dIDxmaWxlcGF0dGVybj4uLi4KIAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCkBAIC05Miw2ICs5MiwxNSBAQAogCWFuZCBhZGQgYWxsIHVudHJhY2tlZCBmaWxlcyB0aGF0IGFyZSBub3QgaWdub3JlZCBieSAnLmdpdGlnbm9yZScKIAltZWNoYW5pc20uCiAKKworLU46OgorLS1pbnRlbnQtdG8tYWRkOjoKKwlSZWNvcmQgb25seSB0aGUgZmFjdCB0aGF0IHRoZSBwYXRoIHdpbGwgYmUgYWRkZWQgbGF0ZXIuIEFuIGVudHJ5CisJZm9yIHRoZSBwYXRoIGlzIHBsYWNlZCBpbiB0aGUgaW5kZXggd2l0aCBubyBjb250ZW50LiBUaGlzIGlzCisJdXNlZnVsIGZvciwgYW1vbmcgb3RoZXIgdGhpbmdzLCBzaG93aW5nIHRoZSB1bnN0YWdlZCBjb250ZW50IG9mCisJc3VjaCBmaWxlcyB3aXRoICdnaXQgZGlmZicgYW5kIGNvbW1pdHRpbmcgdGhlbSB3aXRoICdnaXQgY29tbWl0CisJLWEnLgorCiAtLXJlZnJlc2g6OgogCURvbid0IGFkZCB0aGUgZmlsZShzKSwgYnV0IG9ubHkgcmVmcmVzaCB0aGVpciBzdGF0KCkKIAlpbmZvcm1hdGlvbiBpbiB0aGUgaW5kZXguCkBAIC0xMjcsNyArMTM2LDcgQEAKIC0tLS0tLS0tLS0tLQogKwogTm90ZSB0aGF0IHRoZSBhc3RlcmlzayBgXCpgIGlzIHF1b3RlZCBmcm9tIHRoZSBzaGVsbCBpbiB0aGlzCi1leGFtcGxlOyB0aGlzIGxldHMgdGhlIGNvbW1hbmQgdG8gaW5jbHVkZSB0aGUgZmlsZXMgZnJvbQorZXhhbXBsZTsgdGhpcyBsZXRzIHRoZSBjb21tYW5kIGluY2x1ZGUgdGhlIGZpbGVzIGZyb20KIHN1YmRpcmVjdG9yaWVzIG9mIGBEb2N1bWVudGF0aW9uL2AgZGlyZWN0b3J5LgogCiAqIENvbnNpZGVycyBhZGRpbmcgY29udGVudCBmcm9tIGFsbCBnaXQtKi5zaCBzY3JpcHRzOgpAQCAtMTM2LDcgKzE0NSw3IEBACiAkIGdpdCBhZGQgZ2l0LSouc2gKIC0tLS0tLS0tLS0tLQogKwotQmVjYXVzZSB0aGlzIGV4YW1wbGUgbGV0cyBzaGVsbCBleHBhbmQgdGhlIGFzdGVyaXNrIChpLmUuIHlvdSBhcmUKK0JlY2F1c2UgdGhpcyBleGFtcGxlIGxldHMgdGhlIHNoZWxsIGV4cGFuZCB0aGUgYXN0ZXJpc2sgKGkuZS4geW91IGFyZQogbGlzdGluZyB0aGUgZmlsZXMgZXhwbGljaXRseSksIGl0IGRvZXMgbm90IGNvbnNpZGVyCiBgc3ViZGlyL2dpdC1mb28uc2hgLgogCkBAIC0xODksOCArMTk4LDggQEAKIAogdXBkYXRlOjoKIAotICAgVGhpcyBzaG93cyB0aGUgc3RhdHVzIGluZm9ybWF0aW9uIGFuZCBnaXZlcyBwcm9tcHQKLSAgICJVcGRhdGU+PiIuICBXaGVuIHRoZSBwcm9tcHQgZW5kcyB3aXRoIGRvdWJsZSAnPj4nLCB5b3UgY2FuCisgICBUaGlzIHNob3dzIHRoZSBzdGF0dXMgaW5mb3JtYXRpb24gYW5kIGlzc3VlcyBhbiAiVXBkYXRlPj4iCisgICBwcm9tcHQuICBXaGVuIHRoZSBwcm9tcHQgZW5kcyB3aXRoIGRvdWJsZSAnPj4nLCB5b3UgY2FuCiAgICBtYWtlIG1vcmUgdGhhbiBvbmUgc2VsZWN0aW9uLCBjb25jYXRlbmF0ZWQgd2l0aCB3aGl0ZXNwYWNlIG9yCiAgICBjb21tYS4gIEFsc28geW91IGNhbiBzYXkgcmFuZ2VzLiAgRS5nLiAiMi01IDcsOSIgdG8gY2hvb3NlCiAgICAyLDMsNCw1LDcsOSBmcm9tIHRoZSBsaXN0LiAgSWYgdGhlIHNlY29uZCBudW1iZXIgaW4gYSByYW5nZSBpcwpAQCAtMjI5LDggKzIzOCw4IEBACiAKIHBhdGNoOjoKIAotICBUaGlzIGxldHMgeW91IGNob29zZSBvbmUgcGF0aCBvdXQgb2YgJ3N0YXR1cycgbGlrZSBzZWxlY3Rpb24uCi0gIEFmdGVyIGNob29zaW5nIHRoZSBwYXRoLCBpdCBwcmVzZW50cyBkaWZmIGJldHdlZW4gdGhlIGluZGV4CisgIFRoaXMgbGV0cyB5b3UgY2hvb3NlIG9uZSBwYXRoIG91dCBvZiBhICdzdGF0dXMnIGxpa2Ugc2VsZWN0aW9uLgorICBBZnRlciBjaG9vc2luZyB0aGUgcGF0aCwgaXQgcHJlc2VudHMgdGhlIGRpZmYgYmV0d2VlbiB0aGUgaW5kZXgKICAgYW5kIHRoZSB3b3JraW5nIHRyZWUgZmlsZSBhbmQgYXNrcyB5b3UgaWYgeW91IHdhbnQgdG8gc3RhZ2UKICAgdGhlIGNoYW5nZSBvZiBlYWNoIGh1bmsuICBZb3UgY2FuIHNheToKIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtYXBwbHkudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtYXBwbHkudHh0CmluZGV4IDQ0ZTE5NjguLjMyZjJiODUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWFwcGx5LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1hcHBseS50eHQKQEAgLTE0LDcgKzE0LDggQEAKIAkgIFstLWFsbG93LWJpbmFyeS1yZXBsYWNlbWVudCB8IC0tYmluYXJ5XSBbLS1yZWplY3RdIFstel0KIAkgIFstcE5VTV0gWy1DTlVNXSBbLS1pbmFjY3VyYXRlLWVvZl0gWy0tcmVjb3VudF0gWy0tY2FjaGVkXQogCSAgWy0td2hpdGVzcGFjZT08bm93YXJufHdhcm58Zml4fGVycm9yfGVycm9yLWFsbD5dCi0JICBbLS1leGNsdWRlPVBBVEhdIFstLWRpcmVjdG9yeT08cm9vdD5dIFstLXZlcmJvc2VdIFs8cGF0Y2g+Li4uXQorCSAgWy0tZXhjbHVkZT1QQVRIXSBbLS1pbmNsdWRlPVBBVEhdIFstLWRpcmVjdG9yeT08cm9vdD5dCisJICBbLS12ZXJib3NlXSBbPHBhdGNoPi4uLl0KIAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCkBAIC0xMzcsNiArMTM4LDE3IEBACiAJYmUgdXNlZnVsIHdoZW4gaW1wb3J0aW5nIHBhdGNoc2V0cywgd2hlcmUgeW91IHdhbnQgdG8gZXhjbHVkZSBjZXJ0YWluCiAJZmlsZXMgb3IgZGlyZWN0b3JpZXMuCiAKKy0taW5jbHVkZT08cGF0aC1wYXR0ZXJuPjo6CisJQXBwbHkgY2hhbmdlcyB0byBmaWxlcyBtYXRjaGluZyB0aGUgZ2l2ZW4gcGF0aCBwYXR0ZXJuLiBUaGlzIGNhbgorCWJlIHVzZWZ1bCB3aGVuIGltcG9ydGluZyBwYXRjaHNldHMsIHdoZXJlIHlvdSB3YW50IHRvIGluY2x1ZGUgY2VydGFpbgorCWZpbGVzIG9yIGRpcmVjdG9yaWVzLgorKworV2hlbiAtLWV4Y2x1ZGUgYW5kIC0taW5jbHVkZSBwYXR0ZXJucyBhcmUgdXNlZCwgdGhleSBhcmUgZXhhbWluZWQgaW4gdGhlCitvcmRlciB0aGV5IGFwcGVhciBvbiB0aGUgY29tbWFuZCBsaW5lLCBhbmQgdGhlIGZpcnN0IG1hdGNoIGRldGVybWluZXMgaWYgYQorcGF0Y2ggdG8gZWFjaCBwYXRoIGlzIHVzZWQuICBBIHBhdGNoIHRvIGEgcGF0aCB0aGF0IGRvZXMgbm90IG1hdGNoIGFueQoraW5jbHVkZS9leGNsdWRlIHBhdHRlcm4gaXMgdXNlZCBieSBkZWZhdWx0IGlmIHRoZXJlIGlzIG5vIGluY2x1ZGUgcGF0dGVybgorb24gdGhlIGNvbW1hbmQgbGluZSwgYW5kIGlnbm9yZWQgaWYgdGhlcmUgaXMgYW55IGluY2x1ZGUgcGF0dGVybi4KKwogLS13aGl0ZXNwYWNlPTxhY3Rpb24+OjoKIAlXaGVuIGFwcGx5aW5nIGEgcGF0Y2gsIGRldGVjdCBhIG5ldyBvciBtb2RpZmllZCBsaW5lIHRoYXQgaGFzCiAJd2hpdGVzcGFjZSBlcnJvcnMuICBXaGF0IGFyZSBjb25zaWRlcmVkIHdoaXRlc3BhY2UgZXJyb3JzIGlzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1iaXNlY3QudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtYmlzZWN0LnR4dAppbmRleCAzOTAzNGVjLi4xNDdlYTM4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1iaXNlY3QudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWJpc2VjdC50eHQKQEAgLTE5LDcgKzE5LDcgQEAKICBnaXQgYmlzZWN0IHN0YXJ0IFs8YmFkPiBbPGdvb2Q+Li4uXV0gWy0tXSBbPHBhdGhzPi4uLl0KICBnaXQgYmlzZWN0IGJhZCBbPHJldj5dCiAgZ2l0IGJpc2VjdCBnb29kIFs8cmV2Pi4uLl0KLSBnaXQgYmlzZWN0IHNraXAgWzxyZXY+Li4uXQorIGdpdCBiaXNlY3Qgc2tpcCBbKDxyZXY+fDxyYW5nZT4pLi4uXQogIGdpdCBiaXNlY3QgcmVzZXQgWzxicmFuY2g+XQogIGdpdCBiaXNlY3QgdmlzdWFsaXplCiAgZ2l0IGJpc2VjdCByZXBsYXkgPGxvZ2ZpbGU+CkBAIC0xNjQsNiArMTY0LDI1IEBACiBldmVudHVhbGx5IG5vdCBiZSBhYmxlIHRvIHRlbGwgdGhlIGZpcnN0IGJhZCBhbW9uZyBhIGJhZCBhbmQgb25lIG9yCiBtb3JlICJza2lwInBlZCBjb21taXRzLgogCitZb3UgY2FuIGV2ZW4gc2tpcCBhIHJhbmdlIG9mIGNvbW1pdHMsIGluc3RlYWQgb2YganVzdCBvbmUgY29tbWl0LAordXNpbmcgdGhlICInPGNvbW1pdDE+Jy4uJzxjb21taXQyPiciIG5vdGF0aW9uLiBGb3IgZXhhbXBsZToKKworLS0tLS0tLS0tLS0tCiskIGdpdCBiaXNlY3Qgc2tpcCB2Mi41Li52Mi42CistLS0tLS0tLS0tLS0KKword291bGQgbWVhbiB0aGF0IG5vIGNvbW1pdCBiZXR3ZWVuIGB2Mi41YCBleGNsdWRlZCBhbmQgYHYyLjZgIGluY2x1ZGVkCitjYW4gYmUgdGVzdGVkLgorCitOb3RlIHRoYXQgaWYgeW91IHdhbnQgdG8gYWxzbyBza2lwIHRoZSBmaXJzdCBjb21taXQgb2YgYSByYW5nZSB5b3UgY2FuCit1c2Ugc29tZXRoaW5nIGxpa2U6CisKKy0tLS0tLS0tLS0tLQorJCBnaXQgYmlzZWN0IHNraXAgdjIuNSB2Mi41Li52Mi42CistLS0tLS0tLS0tLS0KKworYW5kIHRoZSBjb21taXQgcG9pbnRlZCB0byBieSBgdjIuNWAgd2lsbCBiZSBza2lwcGVkIHRvby4KKwogQ3V0dGluZyBkb3duIGJpc2VjdGlvbiBieSBnaXZpbmcgbW9yZSBwYXJhbWV0ZXJzIHRvIGJpc2VjdCBzdGFydAogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1ibGFtZS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1ibGFtZS50eHQKaW5kZXggZmJhMzc0ZC4uY2M5MzRlNSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtYmxhbWUudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWJsYW1lLnR4dApAQCAtMTAsNyArMTAsNyBAQAogW3ZlcnNlXQogJ2dpdCBibGFtZScgWy1jXSBbLWJdIFstbF0gWy0tcm9vdF0gWy10XSBbLWZdIFstbl0gWy1zXSBbLXBdIFstd10gWy0taW5jcmVtZW50YWxdIFstTCBuLG1dCiAgICAgICAgICAgICBbLVMgPHJldnMtZmlsZT5dIFstTV0gWy1DXSBbLUNdIFstLXNpbmNlPTxkYXRlPl0KLSAgICAgICAgICAgIFs8cmV2PiB8IC0tY29udGVudHMgPGZpbGU+XSBbLS1dIDxmaWxlPgorCSAgICBbPHJldj4gfCAtLWNvbnRlbnRzIDxmaWxlPiB8IC0tcmV2ZXJzZSA8cmV2Pl0gWy0tXSA8ZmlsZT4KIAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1jaGVjay1hdHRyLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWNoZWNrLWF0dHIudHh0CmluZGV4IDA0MzI3NGIuLjhjMmFjMTIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWNoZWNrLWF0dHIudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWNoZWNrLWF0dHIudHh0CkBAIC04LDcgKzgsOSBAQAogCiBTWU5PUFNJUwogLS0tLS0tLS0KK1t2ZXJzZV0KICdnaXQgY2hlY2stYXR0cicgYXR0ci4uLiBbLS1dIHBhdGhuYW1lLi4uCisnZ2l0IGNoZWNrLWF0dHInIC0tc3RkaW4gWy16XSBhdHRyLi4uIDwgPGxpc3Qtb2YtcGF0aHM+CiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQpAQCAtMTcsNiArMTksMTMgQEAKIAogT1BUSU9OUwogLS0tLS0tLQorLS1zdGRpbjo6CisJUmVhZCBmaWxlIG5hbWVzIGZyb20gc3RkaW4gaW5zdGVhZCBvZiBmcm9tIHRoZSBjb21tYW5kLWxpbmUuCisKKy16OjoKKwlPbmx5IG1lYW5pbmdmdWwgd2l0aCBgLS1zdGRpbmA7IHBhdGhzIGFyZSBzZXBhcmF0ZWQgd2l0aAorCU5VTCBjaGFyYWN0ZXIgaW5zdGVhZCBvZiBMRi4KKwogXC0tOjoKIAlJbnRlcnByZXQgYWxsIHByZWNlZGluZyBhcmd1bWVudHMgYXMgYXR0cmlidXRlcywgYW5kIGFsbCBmb2xsb3dpbmcKIAlhcmd1bWVudHMgYXMgcGF0aCBuYW1lcy4gSWYgbm90IHN1cHBsaWVkLCBvbmx5IHRoZSBmaXJzdCBhcmd1bWVudCB3aWxsCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1jaGVja291dC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1jaGVja291dC50eHQKaW5kZXggNWFhNjljMC4uOWNkNTE1MSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtY2hlY2tvdXQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWNoZWNrb3V0LnR4dApAQCAtOCw4ICs4LDggQEAKIFNZTk9QU0lTCiAtLS0tLS0tLQogW3ZlcnNlXQotJ2dpdCBjaGVja291dCcgWy1xXSBbLWZdIFtbLS10cmFjayB8IC0tbm8tdHJhY2tdIC1iIDxuZXdfYnJhbmNoPiBbLWxdXSBbLW1dIFs8YnJhbmNoPl0KLSdnaXQgY2hlY2tvdXQnIFs8dHJlZS1pc2g+XSBbLS1dIDxwYXRocz4uLi4KKydnaXQgY2hlY2tvdXQnIFstcV0gWy1mXSBbLS10cmFjayB8IC0tbm8tdHJhY2tdIFstYiA8bmV3X2JyYW5jaD4gWy1sXV0gWy1tXSBbPGJyYW5jaD5dCisnZ2l0IGNoZWNrb3V0JyBbLWZ8LS1vdXJzfC0tdGhlaXJzfC1tfC0tY29uZmxpY3Q9PHN0eWxlPl0gWzx0cmVlLWlzaD5dIFstLV0gPHBhdGhzPi4uLgogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KQEAgLTIxLDE2ICsyMSwyNiBAQAogYmUgY3JlYXRlZDsgaW4gdGhpcyBjYXNlIHlvdSBjYW4gdXNlIHRoZSAtLXRyYWNrIG9yIC0tbm8tdHJhY2sKIG9wdGlvbnMsIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRvIGBnaXQgYnJhbmNoYC4KIAorQXMgYSBjb252ZW5pZW5jZSwgLS10cmFjayB3aWxsIGRlZmF1bHQgdG8gY3JlYXRlIGEgYnJhbmNoIHdob3NlCituYW1lIGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlIHNwZWNpZmllZCBicmFuY2ggbmFtZSBieSBzdHJpcHBpbmcKK3RoZSBmaXJzdCBuYW1lc3BhY2UgbGV2ZWwuCisKIFdoZW4gPHBhdGhzPiBhcmUgZ2l2ZW4sIHRoaXMgY29tbWFuZCBkb2VzICpub3QqIHN3aXRjaAogYnJhbmNoZXMuICBJdCB1cGRhdGVzIHRoZSBuYW1lZCBwYXRocyBpbiB0aGUgd29ya2luZyB0cmVlIGZyb20KLXRoZSBpbmRleCBmaWxlIChpLmUuIGl0IHJ1bnMgYGdpdCBjaGVja291dC1pbmRleCAtZiAtdWApLCBvcgotZnJvbSBhIG5hbWVkIGNvbW1pdC4gIEluCi10aGlzIGNhc2UsIHRoZSBgLWZgIGFuZCBgLWJgIG9wdGlvbnMgYXJlIG1lYW5pbmdsZXNzIGFuZCBnaXZpbmcKK3RoZSBpbmRleCBmaWxlLCBvciBmcm9tIGEgbmFtZWQgPHRyZWUtaXNoPiAobW9zdCBvZnRlbiBhIGNvbW1pdCkuICBJbgordGhpcyBjYXNlLCB0aGUgYC1iYCBvcHRpb25zIGlzIG1lYW5pbmdsZXNzIGFuZCBnaXZpbmcKIGVpdGhlciBvZiB0aGVtIHJlc3VsdHMgaW4gYW4gZXJyb3IuICA8dHJlZS1pc2g+IGFyZ3VtZW50IGNhbiBiZQogdXNlZCB0byBzcGVjaWZ5IGEgc3BlY2lmaWMgdHJlZS1pc2ggKGkuZS4gY29tbWl0LCB0YWcgb3IgdHJlZSkKIHRvIHVwZGF0ZSB0aGUgaW5kZXggZm9yIHRoZSBnaXZlbiBwYXRocyBiZWZvcmUgdXBkYXRpbmcgdGhlCiB3b3JraW5nIHRyZWUuCiAKK1RoZSBpbmRleCBtYXkgY29udGFpbiB1bm1lcmdlZCBlbnRyaWVzIGFmdGVyIGEgZmFpbGVkIG1lcmdlLiAgQnkKK2RlZmF1bHQsIGlmIHlvdSB0cnkgdG8gY2hlY2sgb3V0IHN1Y2ggYW4gZW50cnkgZnJvbSB0aGUgaW5kZXgsIHRoZQorY2hlY2tvdXQgb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgbm90aGluZyB3aWxsIGJlIGNoZWNrZWQgb3V0LgorVXNpbmcgLWYgd2lsbCBpZ25vcmUgdGhlc2UgdW5tZXJnZWQgZW50cmllcy4gIFRoZSBjb250ZW50cyBmcm9tIGEKK3NwZWNpZmljIHNpZGUgb2YgdGhlIG1lcmdlIGNhbiBiZSBjaGVja2VkIG91dCBvZiB0aGUgaW5kZXggYnkKK3VzaW5nIC0tb3VycyBvciAtLXRoZWlycy4gIFdpdGggLW0sIGNoYW5nZXMgbWFkZSB0byB0aGUgd29ya2luZyB0cmVlCitmaWxlIGNhbiBiZSBkaXNjYXJkZWQgdG8gcmVjcmVhdGUgdGhlIG9yaWdpbmFsIGNvbmZsaWN0ZWQgbWVyZ2UgcmVzdWx0LgogCiBPUFRJT05TCiAtLS0tLS0tCkBAIC0zOCw4ICs0OCwxNyBAQAogCVF1aWV0LCBzdXBwcmVzcyBmZWVkYmFjayBtZXNzYWdlcy4KIAogLWY6OgotCVByb2NlZWQgZXZlbiBpZiB0aGUgaW5kZXggb3IgdGhlIHdvcmtpbmcgdHJlZSBkaWZmZXJzCi0JZnJvbSBIRUFELiAgVGhpcyBpcyB1c2VkIHRvIHRocm93IGF3YXkgbG9jYWwgY2hhbmdlcy4KKwlXaGVuIHN3aXRjaGluZyBicmFuY2hlcywgcHJvY2VlZCBldmVuIGlmIHRoZSBpbmRleCBvciB0aGUKKwl3b3JraW5nIHRyZWUgZGlmZmVycyBmcm9tIEhFQUQuICBUaGlzIGlzIHVzZWQgdG8gdGhyb3cgYXdheQorCWxvY2FsIGNoYW5nZXMuCisrCitXaGVuIGNoZWNraW5nIG91dCBwYXRocyBmcm9tIHRoZSBpbmRleCwgZG8gbm90IGZhaWwgdXBvbiB1bm1lcmdlZAorZW50cmllczsgaW5zdGVhZCwgdW5tZXJnZWQgZW50cmllcyBhcmUgaWdub3JlZC4KKworLS1vdXJzOjoKKy0tdGhlaXJzOjoKKwlXaGVuIGNoZWNraW5nIG91dCBwYXRocyBmcm9tIHRoZSBpbmRleCwgY2hlY2sgb3V0IHN0YWdlICMyCisJKCdvdXJzJykgb3IgIzMgKCd0aGVpcnMnKSBmb3IgdW5tZXJnZWQgcGF0aHMuCiAKIC1iOjoKIAlDcmVhdGUgYSBuZXcgYnJhbmNoIG5hbWVkIDxuZXdfYnJhbmNoPiBhbmQgc3RhcnQgaXQgYXQKQEAgLTU5LDYgKzc4LDE3IEBACiAJJ2dpdC1jaGVja291dCcgYW5kICdnaXQtYnJhbmNoJyB0byBhbHdheXMgYmVoYXZlIGFzIGlmICctLW5vLXRyYWNrJyB3ZXJlCiAJZ2l2ZW4uIFNldCBpdCB0byBgYWx3YXlzYCBpZiB5b3Ugd2FudCB0aGlzIGJlaGF2aW9yIHdoZW4gdGhlCiAJc3RhcnQtcG9pbnQgaXMgZWl0aGVyIGEgbG9jYWwgb3IgcmVtb3RlIGJyYW5jaC4KKysKK0lmIG5vICctYicgb3B0aW9uIHdhcyBnaXZlbiwgdGhlIG5hbWUgb2YgdGhlIG5ldyBicmFuY2ggd2lsbCBiZQorZGVyaXZlZCBmcm9tIHRoZSByZW1vdGUgYnJhbmNoLCBieSBhdHRlbXB0aW5nIHRvIGd1ZXNzIHRoZSBuYW1lCitvZiB0aGUgYnJhbmNoIG9uIHJlbW90ZSBzeXN0ZW0uICBJZiAicmVtb3Rlcy8iIG9yICJyZWZzL3JlbW90ZXMvIgorYXJlIHByZWZpeGVkLCBpdCBpcyBzdHJpcHBlZCBhd2F5LCBhbmQgdGhlbiB0aGUgcGFydCB1cCB0byB0aGUKK25leHQgc2xhc2ggKHdoaWNoIHdvdWxkIGJlIHRoZSBuaWNrbmFtZSBvZiB0aGUgcmVtb3RlKSBpcyByZW1vdmVkLgorVGhpcyB3b3VsZCB0ZWxsIHVzIHRvIHVzZSAiaGFjayIgYXMgdGhlIGxvY2FsIGJyYW5jaCB3aGVuIGJyYW5jaGluZworb2ZmIG9mICJvcmlnaW4vaGFjayIgKG9yICJyZW1vdGVzL29yaWdpbi9oYWNrIiwgb3IgZXZlbgorInJlZnMvcmVtb3Rlcy9vcmlnaW4vaGFjayIpLiAgSWYgdGhlIGdpdmVuIG5hbWUgaGFzIG5vIHNsYXNoLCBvciB0aGUgYWJvdmUKK2d1ZXNzaW5nIHJlc3VsdHMgaW4gYW4gZW1wdHkgbmFtZSwgdGhlIGd1ZXNzaW5nIGlzIGFib3J0ZWQuICBZb3UgY2FuCitleHBsaWNpdGx5IGdpdmUgYSBuYW1lIHdpdGggJy1iJyBpbiBzdWNoIGEgY2FzZS4KIAogLS1uby10cmFjazo6CiAJSWdub3JlIHRoZSBicmFuY2guYXV0b3NldHVwbWVyZ2UgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4KQEAgLTY5LDcgKzk5LDkgQEAKIAliYXNlZCBzaGExIGV4cHJlc3Npb25zIHN1Y2ggYXMgIjxicmFuY2huYW1lPkBce3llc3RlcmRheX0iLgogCiAtbTo6Ci0JSWYgeW91IGhhdmUgbG9jYWwgbW9kaWZpY2F0aW9ucyB0byBvbmUgb3IgbW9yZSBmaWxlcyB0aGF0CistLW1lcmdlOjoKKwlXaGVuIHN3aXRjaGluZyBicmFuY2hlcywKKwlpZiB5b3UgaGF2ZSBsb2NhbCBtb2RpZmljYXRpb25zIHRvIG9uZSBvciBtb3JlIGZpbGVzIHRoYXQKIAlhcmUgZGlmZmVyZW50IGJldHdlZW4gdGhlIGN1cnJlbnQgYnJhbmNoIGFuZCB0aGUgYnJhbmNoIHRvCiAJd2hpY2ggeW91IGFyZSBzd2l0Y2hpbmcsIHRoZSBjb21tYW5kIHJlZnVzZXMgdG8gc3dpdGNoCiAJYnJhbmNoZXMgaW4gb3JkZXIgdG8gcHJlc2VydmUgeW91ciBtb2RpZmljYXRpb25zIGluIGNvbnRleHQuCkBAIC04MSw2ICsxMTMsMTYgQEAKIHBhdGhzIGFyZSBsZWZ0IHVubWVyZ2VkLCBhbmQgeW91IG5lZWQgdG8gcmVzb2x2ZSB0aGUgY29uZmxpY3RzCiBhbmQgbWFyayB0aGUgcmVzb2x2ZWQgcGF0aHMgd2l0aCBgZ2l0IGFkZGAgKG9yIGBnaXQgcm1gIGlmIHRoZSBtZXJnZQogc2hvdWxkIHJlc3VsdCBpbiBkZWxldGlvbiBvZiB0aGUgcGF0aCkuCisrCitXaGVuIGNoZWNraW5nIG91dCBwYXRocyBmcm9tIHRoZSBpbmRleCwgdGhpcyBvcHRpb24gbGV0cyB5b3UgcmVjcmVhdGUKK3RoZSBjb25mbGljdGVkIG1lcmdlIGluIHRoZSBzcGVjaWZpZWQgcGF0aHMuCisKKy0tY29uZmxpY3Q9PHN0eWxlPjo6CisJVGhlIHNhbWUgYXMgLS1tZXJnZSBvcHRpb24gYWJvdmUsIGJ1dCBjaGFuZ2VzIHRoZSB3YXkgdGhlCisJY29uZmxpY3RpbmcgaHVua3MgYXJlIHByZXNlbnRlZCwgb3ZlcnJpZGluZyB0aGUKKwltZXJnZS5jb25mbGljdHN0eWxlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICBQb3NzaWJsZSB2YWx1ZXMgYXJlCisJIm1lcmdlIiAoZGVmYXVsdCkgYW5kICJkaWZmMyIgKGluIGFkZGl0aW9uIHRvIHdoYXQgaXMgc2hvd24gYnkKKwkibWVyZ2UiIHN0eWxlLCBzaG93cyB0aGUgb3JpZ2luYWwgY29udGVudHMpLgogCiA8bmV3X2JyYW5jaD46OgogCU5hbWUgZm9yIHRoZSBuZXcgYnJhbmNoLgpAQCAtMTkwLDcgKzIzMiw2IEBACiAtLS0tLS0tLS0tLS0KICQgZ2l0IGNoZWNrb3V0IC1tIG15dG9waWMKIEF1dG8tbWVyZ2luZyBmcm90egotbWVyZ2U6IHdhcm5pbmc6IGNvbmZsaWN0cyBkdXJpbmcgbWVyZ2UKIEVSUk9SOiBNZXJnZSBjb25mbGljdCBpbiBmcm90egogZmF0YWw6IG1lcmdlIHByb2dyYW0gZmFpbGVkCiAtLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWNsb25lLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWNsb25lLnR4dAppbmRleCAwZTE0ZTczLi45NWYwOGI5IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1jbG9uZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtY2xvbmUudHh0CkBAIC05MCw2ICs5MCwxMSBAQAogCU9wZXJhdGUgcXVpZXRseS4gIFRoaXMgZmxhZyBpcyBhbHNvIHBhc3NlZCB0byB0aGUgYHJzeW5jJwogCWNvbW1hbmQgd2hlbiBnaXZlbi4KIAorLS12ZXJib3NlOjoKKy12OjoKKwlEaXNwbGF5IHRoZSBwcm9ncmVzc2JhciwgZXZlbiBpbiBjYXNlIHRoZSBzdGFuZGFyZCBvdXRwdXQgaXMgbm90CisJYSB0ZXJtaW5hbC4KKwogLS1uby1jaGVja291dDo6CiAtbjo6CiAJTm8gY2hlY2tvdXQgb2YgSEVBRCBpcyBwZXJmb3JtZWQgYWZ0ZXIgdGhlIGNsb25lIGlzIGNvbXBsZXRlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtY29tbWl0LnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWNvbW1pdC50eHQKaW5kZXggNWNjZTNhMy4uYjVkODFiZSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtY29tbWl0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1jb21taXQudHh0CkBAIC0yOSw3ICsyOSw4IEBACiAKIDMuIGJ5IGxpc3RpbmcgZmlsZXMgYXMgYXJndW1lbnRzIHRvIHRoZSAnY29tbWl0JyBjb21tYW5kLCBpbiB3aGljaAogICAgY2FzZSB0aGUgY29tbWl0IHdpbGwgaWdub3JlIGNoYW5nZXMgc3RhZ2VkIGluIHRoZSBpbmRleCwgYW5kIGluc3RlYWQKLSAgIHJlY29yZCB0aGUgY3VycmVudCBjb250ZW50IG9mIHRoZSBsaXN0ZWQgZmlsZXM7CisgICByZWNvcmQgdGhlIGN1cnJlbnQgY29udGVudCBvZiB0aGUgbGlzdGVkIGZpbGVzICh3aGljaCBtdXN0IGFscmVhZHkKKyAgIGJlIGtub3duIHRvIGdpdCk7CiAKIDQuIGJ5IHVzaW5nIHRoZSAtYSBzd2l0Y2ggd2l0aCB0aGUgJ2NvbW1pdCcgY29tbWFuZCB0byBhdXRvbWF0aWNhbGx5CiAgICAiYWRkIiBjaGFuZ2VzIGZyb20gYWxsIGtub3duIGZpbGVzIChpLmUuIGFsbCBmaWxlcyB0aGF0IGFyZSBhbHJlYWR5CkBAIC03NSw4ICs3NiwxMCBAQAogCXJlYWQgdGhlIG1lc3NhZ2UgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQuCiAKIC0tYXV0aG9yPTxhdXRob3I+OjoKLQlPdmVycmlkZSB0aGUgYXV0aG9yIG5hbWUgdXNlZCBpbiB0aGUgY29tbWl0LiAgVXNlCi0JYEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+YCBmb3JtYXQuCisJT3ZlcnJpZGUgdGhlIGF1dGhvciBuYW1lIHVzZWQgaW4gdGhlIGNvbW1pdC4gIFlvdSBjYW4gdXNlIHRoZQorCXN0YW5kYXJkIGBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPmAgZm9ybWF0LiAgT3RoZXJ3aXNlLAorCWFuIGV4aXN0aW5nIGNvbW1pdCB0aGF0IG1hdGNoZXMgdGhlIGdpdmVuIHN0cmluZyBhbmQgaXRzIGF1dGhvcgorCW5hbWUgaXMgdXNlZC4KIAogLW0gPG1zZz46OgogLS1tZXNzYWdlPTxtc2c+OjoKQEAgLTE0Myw2ICsxNDYsMTAgQEAKIC0tLS0tLQogYnV0IGNhbiBiZSB1c2VkIHRvIGFtZW5kIGEgbWVyZ2UgY29tbWl0LgogLS0KKysKK1lvdSBzaG91bGQgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHJld3JpdGluZyBoaXN0b3J5IGlmIHlvdQorYW1lbmQgYSBjb21taXQgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIHB1Ymxpc2hlZC4gIChTZWUgdGhlICJSRUNPVkVSSU5HCitGUk9NIFVQU1RSRUFNIFJFQkFTRSIgc2VjdGlvbiBpbiBsaW5rZ2l0OmdpdC1yZWJhc2VbMV0uKQogCiAtaTo6CiAtLWluY2x1ZGU6OgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtY291bnQtb2JqZWN0cy50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1jb3VudC1vYmplY3RzLnR4dAppbmRleCA3NWE4ZGExLi42YmMxYzIxIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1jb3VudC1vYmplY3RzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1jb3VudC1vYmplY3RzLnR4dApAQCAtMjEsOCArMjEsOSBAQAogLS12ZXJib3NlOjoKIAlJbiBhZGRpdGlvbiB0byB0aGUgbnVtYmVyIG9mIGxvb3NlIG9iamVjdHMgYW5kIGRpc2sKIAlzcGFjZSBjb25zdW1lZCwgaXQgcmVwb3J0cyB0aGUgbnVtYmVyIG9mIGluLXBhY2sKLQlvYmplY3RzLCBudW1iZXIgb2YgcGFja3MsIGFuZCBudW1iZXIgb2Ygb2JqZWN0cyB0aGF0IGNhbiBiZQotCXJlbW92ZWQgYnkgcnVubmluZyBgZ2l0IHBydW5lLXBhY2tlZGAuCisJb2JqZWN0cywgbnVtYmVyIG9mIHBhY2tzLCBkaXNrIHNwYWNlIGNvbnN1bWVkIGJ5IHRob3NlIHBhY2tzLAorCWFuZCBudW1iZXIgb2Ygb2JqZWN0cyB0aGF0IGNhbiBiZSByZW1vdmVkIGJ5IHJ1bm5pbmcKKwlgZ2l0IHBydW5lLXBhY2tlZGAuCiAKIAogQXV0aG9yCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1kYWVtb24udHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZGFlbW9uLnR4dAppbmRleCA0YmE0Yjc1Li4zNmYwMGFlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1kYWVtb24udHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWRhZW1vbi50eHQKQEAgLTksOCArOSw5IEBACiAtLS0tLS0tLQogW3ZlcnNlXQogJ2dpdCBkYWVtb24nIFstLXZlcmJvc2VdIFstLXN5c2xvZ10gWy0tZXhwb3J0LWFsbF0KLQkgICAgIFstLXRpbWVvdXQ9bl0gWy0taW5pdC10aW1lb3V0PW5dIFstLXN0cmljdC1wYXRoc10KLQkgICAgIFstLWJhc2UtcGF0aD1wYXRoXSBbLS11c2VyLXBhdGggfCAtLXVzZXItcGF0aD1wYXRoXQorCSAgICAgWy0tdGltZW91dD1uXSBbLS1pbml0LXRpbWVvdXQ9bl0gWy0tbWF4LWNvbm5lY3Rpb25zPW5dCisJICAgICBbLS1zdHJpY3QtcGF0aHNdIFstLWJhc2UtcGF0aD1wYXRoXSBbLS1iYXNlLXBhdGgtcmVsYXhlZF0KKwkgICAgIFstLXVzZXItcGF0aCB8IC0tdXNlci1wYXRoPXBhdGhdCiAJICAgICBbLS1pbnRlcnBvbGF0ZWQtcGF0aD1wYXRodGVtcGxhdGVdCiAJICAgICBbLS1yZXVzZWFkZHJdIFstLWRldGFjaF0gWy0tcGlkLWZpbGU9ZmlsZV0KIAkgICAgIFstLWVuYWJsZT1zZXJ2aWNlXSBbLS1kaXNhYmxlPXNlcnZpY2VdCkBAIC05OSwxNSArMTAwLDE5IEBACiAJaXQgdGFrZXMgZm9yIHRoZSBzZXJ2ZXIgdG8gcHJvY2VzcyB0aGUgc3ViLXJlcXVlc3QgYW5kIHRpbWUgc3BlbnQKIAl3YWl0aW5nIGZvciBuZXh0IGNsaWVudCdzIHJlcXVlc3QuCiAKKy0tbWF4LWNvbm5lY3Rpb25zOjoKKwlNYXhpbXVtIG51bWJlciBvZiBjb25jdXJyZW50IGNsaWVudHMsIGRlZmF1bHRzIHRvIDMyLiAgU2V0IGl0IHRvCisJemVybyBmb3Igbm8gbGltaXQuCisKIC0tc3lzbG9nOjoKIAlMb2cgdG8gc3lzbG9nIGluc3RlYWQgb2Ygc3RkZXJyLiBOb3RlIHRoYXQgdGhpcyBvcHRpb24gZG9lcyBub3QgaW1wbHkKIAktLXZlcmJvc2UsIHRodXMgYnkgZGVmYXVsdCBvbmx5IGVycm9yIGNvbmRpdGlvbnMgd2lsbCBiZSBsb2dnZWQuCiAKIC0tdXNlci1wYXRoOjoKIC0tdXNlci1wYXRoPXBhdGg6OgotCUFsbG93IH51c2VyIG5vdGF0aW9uIHRvIGJlIHVzZWQgaW4gcmVxdWVzdHMuICBXaGVuCisJQWxsb3cge3RpbGRlfXVzZXIgbm90YXRpb24gdG8gYmUgdXNlZCBpbiByZXF1ZXN0cy4gIFdoZW4KIAlzcGVjaWZpZWQgd2l0aCBubyBwYXJhbWV0ZXIsIHJlcXVlc3RzIHRvCi0JZ2l0Oi8vaG9zdC9+YWxpY2UvZm9vIGlzIHRha2VuIGFzIGEgcmVxdWVzdCB0byBhY2Nlc3MKKwlnaXQ6Ly9ob3N0L3t0aWxkZX1hbGljZS9mb28gaXMgdGFrZW4gYXMgYSByZXF1ZXN0IHRvIGFjY2VzcwogCSdmb28nIHJlcG9zaXRvcnkgaW4gdGhlIGhvbWUgZGlyZWN0b3J5IG9mIHVzZXIgYGFsaWNlYC4KIAlJZiBgLS11c2VyLXBhdGg9cGF0aGAgaXMgc3BlY2lmaWVkLCB0aGUgc2FtZSByZXF1ZXN0IGlzCiAJdGFrZW4gYXMgYSByZXF1ZXN0IHRvIGFjY2VzcyBgcGF0aC9mb29gIHJlcG9zaXRvcnkgaW4KQEAgLTI2NSw2ICsyNzAsMTUgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogCitFTlZJUk9OTUVOVAorLS0tLS0tLS0tLS0KKydnaXQtZGFlbW9uJyB3aWxsIHNldCBSRU1PVEVfQUREUiB0byB0aGUgSVAgYWRkcmVzcyBvZiB0aGUgY2xpZW50Cit0aGF0IGNvbm5lY3RlZCB0byBpdCwgaWYgdGhlIElQIGFkZHJlc3MgaXMgYXZhaWxhYmxlLiBSRU1PVEVfQUREUiB3aWxsCitiZSBhdmFpbGFibGUgaW4gdGhlIGVudmlyb25tZW50IG9mIGhvb2tzIGNhbGxlZCB3aGVuCitzZXJ2aWNlcyBhcmUgcGVyZm9ybWVkLgorCisKKwogQXV0aG9yCiAtLS0tLS0KIFdyaXR0ZW4gYnkgTGludXMgVG9ydmFsZHMgPHRvcnZhbGRzQG9zZGwub3JnPiwgWU9TSElGVUpJIEhpZGVha2kKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWRlc2NyaWJlLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWRlc2NyaWJlLnR4dAppbmRleCA1OWE2ZmQxLi5hMzBjNWFjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1kZXNjcmliZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtZGVzY3JpYmUudHh0CkBAIC0xOCw2ICsxOCw5IEBACiBhZGRpdGlvbmFsIGNvbW1pdHMgb24gdG9wIG9mIHRoZSB0YWdnZWQgb2JqZWN0IGFuZCB0aGUKIGFiYnJldmlhdGVkIG9iamVjdCBuYW1lIG9mIHRoZSBtb3N0IHJlY2VudCBjb21taXQuCiAKK0J5IGRlZmF1bHQgKHdpdGhvdXQgLS1hbGwgb3IgLS10YWdzKSBgZ2l0IGRlc2NyaWJlYCBvbmx5IHNob3dzCithbm5vdGF0ZWQgdGFncy4gIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGNyZWF0aW5nIGFubm90YXRlZCB0YWdzCitzZWUgdGhlIC1hIGFuZCAtcyBvcHRpb25zIHRvIGxpbmtnaXQ6Z2l0LXRhZ1sxXS4KIAogT1BUSU9OUwogLS0tLS0tLQpAQCAtMjYsMTEgKzI5LDEzIEBACiAKIC0tYWxsOjoKIAlJbnN0ZWFkIG9mIHVzaW5nIG9ubHkgdGhlIGFubm90YXRlZCB0YWdzLCB1c2UgYW55IHJlZgotCWZvdW5kIGluIGAuZ2l0L3JlZnMvYC4KKwlmb3VuZCBpbiBgLmdpdC9yZWZzL2AuICBUaGlzIG9wdGlvbiBlbmFibGVzIG1hdGNoaW5nCisJYW55IGtub3duIGJyYW5jaCwgcmVtb3RlIGJyYW5jaCwgb3IgbGlnaHR3ZWlnaHQgdGFnLgogCiAtLXRhZ3M6OgogCUluc3RlYWQgb2YgdXNpbmcgb25seSB0aGUgYW5ub3RhdGVkIHRhZ3MsIHVzZSBhbnkgdGFnCi0JZm91bmQgaW4gYC5naXQvcmVmcy90YWdzYC4KKwlmb3VuZCBpbiBgLmdpdC9yZWZzL3RhZ3NgLiAgVGhpcyBvcHRpb24gZW5hYmxlcyBtYXRjaGluZworCWEgbGlnaHR3ZWlnaHQgKG5vbi1hbm5vdGF0ZWQpIHRhZy4KIAogLS1jb250YWluczo6CiAJSW5zdGVhZCBvZiBmaW5kaW5nIHRoZSB0YWcgdGhhdCBwcmVkYXRlcyB0aGUgY29tbWl0LCBmaW5kCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1kaWZmLXRyZWUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZGlmZi10cmVlLnR4dAppbmRleCA0ZTgzMDY3Li4yM2I3YWJkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1kaWZmLXRyZWUudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWRpZmYtdHJlZS50eHQKQEAgLTQ5LDEzICs0OSwyMiBAQAogLS1zdGRpbjo6CiAJV2hlbiAnLS1zdGRpbicgaXMgc3BlY2lmaWVkLCB0aGUgY29tbWFuZCBkb2VzIG5vdCB0YWtlCiAJPHRyZWUtaXNoPiBhcmd1bWVudHMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLiAgSW5zdGVhZCwgaXQKLQlyZWFkcyBlaXRoZXIgb25lIDxjb21taXQ+IG9yIGEgbGlzdCBvZiA8Y29tbWl0PgotCXNlcGFyYXRlZCB3aXRoIGEgc2luZ2xlIHNwYWNlIGZyb20gaXRzIHN0YW5kYXJkIGlucHV0LgorCXJlYWRzIGxpbmVzIGNvbnRhaW5pbmcgZWl0aGVyIHR3byA8dHJlZT4sIG9uZSA8Y29tbWl0Piwgb3IgYQorCWxpc3Qgb2YgPGNvbW1pdD4gZnJvbSBpdHMgc3RhbmRhcmQgaW5wdXQuICAoVXNlIGEgc2luZ2xlIHNwYWNlCisJYXMgc2VwYXJhdG9yLikKICsKLVdoZW4gYSBzaW5nbGUgY29tbWl0IGlzIGdpdmVuIG9uIG9uZSBsaW5lIG9mIHN1Y2ggaW5wdXQsIGl0IGNvbXBhcmVzCi10aGUgY29tbWl0IHdpdGggaXRzIHBhcmVudHMuICBUaGUgZm9sbG93aW5nIGZsYWdzIGZ1cnRoZXIgYWZmZWN0cyBpdHMKLWJlaGF2aW9yLiAgVGhlIHJlbWFpbmluZyBjb21taXRzLCB3aGVuIGdpdmVuLCBhcmUgdXNlZCBhcyBpZiB0aGV5IGFyZQorV2hlbiB0d28gdHJlZXMgYXJlIGdpdmVuLCBpdCBjb21wYXJlcyB0aGUgZmlyc3QgdHJlZSB3aXRoIHRoZSBzZWNvbmQuCitXaGVuIGEgc2luZ2xlIGNvbW1pdCBpcyBnaXZlbiwgaXQgY29tcGFyZXMgdGhlIGNvbW1pdCB3aXRoIGl0cworcGFyZW50cy4gIFRoZSByZW1haW5pbmcgY29tbWl0cywgd2hlbiBnaXZlbiwgYXJlIHVzZWQgYXMgaWYgdGhleSBhcmUKIHBhcmVudHMgb2YgdGhlIGZpcnN0IGNvbW1pdC4KKysKK1doZW4gY29tcGFyaW5nIHR3byB0cmVlcywgdGhlIElEIG9mIGJvdGggdHJlZXMgKHNlcGFyYXRlZCBieSBhIHNwYWNlCithbmQgdGVybWluYXRlZCBieSBhIG5ld2xpbmUpIGlzIHByaW50ZWQgYmVmb3JlIHRoZSBkaWZmZXJlbmNlLiAgV2hlbgorY29tcGFyaW5nIGNvbW1pdHMsIHRoZSBJRCBvZiB0aGUgZmlyc3QgKG9yIG9ubHkpIGNvbW1pdCwgZm9sbG93ZWQgYnkgYQorbmV3bGluZSwgaXMgcHJpbnRlZC4KKysKK1RoZSBmb2xsb3dpbmcgZmxhZ3MgZnVydGhlciBhZmZlY3QgdGhlIGJlaGF2aW9yIHdoZW4gY29tcGFyaW5nCitjb21taXRzIChidXQgbm90IHRyZWVzKS4KIAogLW06OgogCUJ5IGRlZmF1bHQsICdnaXQtZGlmZi10cmVlIC0tc3RkaW4nIGRvZXMgbm90IHNob3cKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWRpZmYudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZGlmZi50eHQKaW5kZXggYzUzZWJhNS4uYTJmMTkyZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtZGlmZi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtZGlmZi50eHQKQEAgLTMzLDYgKzMzLDcgQEAKIAljb21taXQgcmVsYXRpdmUgdG8gdGhlIG5hbWVkIDxjb21taXQ+LiAgVHlwaWNhbGx5IHlvdQogCXdvdWxkIHdhbnQgY29tcGFyaXNvbiB3aXRoIHRoZSBsYXRlc3QgY29tbWl0LCBzbyBpZiB5b3UKIAlkbyBub3QgZ2l2ZSA8Y29tbWl0PiwgaXQgZGVmYXVsdHMgdG8gSEVBRC4KKwktLXN0YWdlZCBpcyBhIHN5bm9ueW0gb2YgLS1jYWNoZWQuCiAKICdnaXQgZGlmZicgWy0tb3B0aW9uc10gPGNvbW1pdD4gWy0tXSBbPHBhdGg+Li4uXTo6CiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWZhc3QtZXhwb3J0LnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWZhc3QtZXhwb3J0LnR4dAppbmRleCA1MzlkZWNiLi4wYzllYjU2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1mYXN0LWV4cG9ydC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtZmFzdC1leHBvcnQudHh0CkBAIC0xNSw3ICsxNSw3IEBACiBUaGlzIHByb2dyYW0gZHVtcHMgdGhlIGdpdmVuIHJldmlzaW9ucyBpbiBhIGZvcm0gc3VpdGFibGUgdG8gYmUgcGlwZWQKIGludG8gJ2dpdC1mYXN0LWltcG9ydCcuCiAKLVlvdSBjYW4gdXNlIGl0IGFzIGEgaHVtYW4gcmVhZGFibGUgYnVuZGxlIHJlcGxhY2VtZW50IChzZWUKK1lvdSBjYW4gdXNlIGl0IGFzIGEgaHVtYW4tcmVhZGFibGUgYnVuZGxlIHJlcGxhY2VtZW50IChzZWUKIGxpbmtnaXQ6Z2l0LWJ1bmRsZVsxXSksIG9yIGFzIGEga2luZCBvZiBhbiBpbnRlcmFjdGl2ZQogJ2dpdC1maWx0ZXItYnJhbmNoJy4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtZmlsdGVyLWJyYW5jaC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1maWx0ZXItYnJhbmNoLnR4dAppbmRleCBiMGU3MTBkLi5mZWQ2ZGU2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1maWx0ZXItYnJhbmNoLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1maWx0ZXItYnJhbmNoLnR4dApAQCAtMzYsNyArMzYsOSBAQAogYmUgYWJsZSB0byBlYXNpbHkgcHVzaCBhbmQgZGlzdHJpYnV0ZSB0aGUgcmV3cml0dGVuIGJyYW5jaCBvbiB0b3Agb2YgdGhlCiBvcmlnaW5hbCBicmFuY2guICBQbGVhc2UgZG8gbm90IHVzZSB0aGlzIGNvbW1hbmQgaWYgeW91IGRvIG5vdCBrbm93IHRoZQogZnVsbCBpbXBsaWNhdGlvbnMsIGFuZCBhdm9pZCB1c2luZyBpdCBhbnl3YXksIGlmIGEgc2ltcGxlIHNpbmdsZSBjb21taXQKLXdvdWxkIHN1ZmZpY2UgdG8gZml4IHlvdXIgcHJvYmxlbS4KK3dvdWxkIHN1ZmZpY2UgdG8gZml4IHlvdXIgcHJvYmxlbS4gIChTZWUgdGhlICJSRUNPVkVSSU5HIEZST00gVVBTVFJFQU0KK1JFQkFTRSIgc2VjdGlvbiBpbiBsaW5rZ2l0OmdpdC1yZWJhc2VbMV0gZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gYWJvdXQKK3Jld3JpdGluZyBwdWJsaXNoZWQgaGlzdG9yeS4pCiAKIEFsd2F5cyB2ZXJpZnkgdGhhdCB0aGUgcmV3cml0dGVuIHZlcnNpb24gaXMgY29ycmVjdDogVGhlIG9yaWdpbmFsIHJlZnMsCiBpZiBkaWZmZXJlbnQgZnJvbSB0aGUgcmV3cml0dGVuIG9uZXMsIHdpbGwgYmUgc3RvcmVkIGluIHRoZSBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWZvci1lYWNoLXJlZi50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1mb3ItZWFjaC1yZWYudHh0CmluZGV4IGViZDdjNWYuLjUwNjFkM2UgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWZvci1lYWNoLXJlZi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtZm9yLWVhY2gtcmVmLnR4dApAQCAtNzQsNiArNzQsNyBAQAogCiByZWZuYW1lOjoKIAlUaGUgbmFtZSBvZiB0aGUgcmVmICh0aGUgcGFydCBhZnRlciAkR0lUX0RJUi8pLgorCUZvciBhIG5vbi1hbWJpZ3VvdXMgc2hvcnQgbmFtZSBvZiB0aGUgcmVmIGFwcGVuZCBgOnNob3J0YC4KIAogb2JqZWN0dHlwZTo6CiAJVGhlIHR5cGUgb2YgdGhlIG9iamVjdCAoYGJsb2JgLCBgdHJlZWAsIGBjb21taXRgLCBgdGFnYCkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1mb3JtYXQtcGF0Y2gudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZm9ybWF0LXBhdGNoLnR4dAppbmRleCA3NDI2MTA5Li4xMWE3ZDc3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1mb3JtYXQtcGF0Y2gudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWZvcm1hdC1wYXRjaC50eHQKQEAgLTU5LDggKzU5LDEwIEBACiBJZiAtbyBpcyBzcGVjaWZpZWQsIG91dHB1dCBmaWxlcyBhcmUgY3JlYXRlZCBpbiA8ZGlyPi4gIE90aGVyd2lzZQogdGhleSBhcmUgY3JlYXRlZCBpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KIAotSWYgLW4gaXMgc3BlY2lmaWVkLCBpbnN0ZWFkIG9mICJbUEFUQ0hdIFN1YmplY3QiLCB0aGUgZmlyc3QgbGluZQotaXMgZm9ybWF0dGVkIGFzICJbUEFUQ0ggbi9tXSBTdWJqZWN0Ii4KK0J5IGRlZmF1bHQsIHRoZSBzdWJqZWN0IG9mIGEgc2luZ2xlIHBhdGNoIGlzICJbUEFUQ0hdIEZpcnN0IExpbmUiIGFuZAordGhlIHN1YmplY3Qgd2hlbiBtdWx0aXBsZSBwYXRjaGVzIGFyZSBvdXRwdXQgaXMgIltQQVRDSCBuL21dIEZpcnN0CitMaW5lIi4gVG8gZm9yY2UgMS8xIHRvIGJlIGFkZGVkIGZvciBhIHNpbmdsZSBwYXRjaCwgdXNlIC1uLiAgVG8gb21pdAorcGF0Y2ggbnVtYmVycyBmcm9tIHRoZSBzdWJqZWN0LCB1c2UgLU4KIAogSWYgZ2l2ZW4gLS10aHJlYWQsICdnaXQtZm9ybWF0LXBhdGNoJyB3aWxsIGdlbmVyYXRlIEluLVJlcGx5LVRvIGFuZAogUmVmZXJlbmNlcyBoZWFkZXJzIHRvIG1ha2UgdGhlIHNlY29uZCBhbmQgc3Vic2VxdWVudCBwYXRjaCBtYWlscyBhcHBlYXIKQEAgLTgyLDcgKzg0LDcgQEAKIAogLW46OgogLS1udW1iZXJlZDo6Ci0JTmFtZSBvdXRwdXQgaW4gJ1tQQVRDSCBuL21dJyBmb3JtYXQuCisJTmFtZSBvdXRwdXQgaW4gJ1tQQVRDSCBuL21dJyBmb3JtYXQsIGV2ZW4gd2l0aCBhIHNpbmdsZSBwYXRjaC4KIAogLU46OgogLS1uby1udW1iZXJlZDo6CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1ncmVwLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWdyZXAudHh0CmluZGV4IGZhNGQxMzMuLjU1M2RhNmMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWdyZXAudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWdyZXAudHh0CkBAIC0xNSw2ICsxNSw3IEBACiAJICAgWy1FIHwgLS1leHRlbmRlZC1yZWdleHBdIFstRyB8IC0tYmFzaWMtcmVnZXhwXQogCSAgIFstRiB8IC0tZml4ZWQtc3RyaW5nc10gWy1uXQogCSAgIFstbCB8IC0tZmlsZXMtd2l0aC1tYXRjaGVzXSBbLUwgfCAtLWZpbGVzLXdpdGhvdXQtbWF0Y2hdCisJICAgWy16IHwgLS1udWxsXQogCSAgIFstYyB8IC0tY291bnRdIFstLWFsbC1tYXRjaF0KIAkgICBbLUEgPHBvc3QtY29udGV4dD5dIFstQiA8cHJlLWNvbnRleHQ+XSBbLUMgPGNvbnRleHQ+XQogCSAgIFstZiA8ZmlsZT5dIFstZV0gPHBhdHRlcm4+CkBAIC05NCw2ICs5NSwxMSBAQAogCUZvciBiZXR0ZXIgY29tcGF0aWJpbGl0eSB3aXRoICdnaXQtZGlmZicsIC0tbmFtZS1vbmx5IGlzIGEKIAlzeW5vbnltIGZvciAtLWZpbGVzLXdpdGgtbWF0Y2hlcy4KIAorLXo6OgorLS1udWxsOjoKKwlPdXRwdXQgXDAgaW5zdGVhZCBvZiB0aGUgY2hhcmFjdGVyIHRoYXQgbm9ybWFsbHkgZm9sbG93cyBhCisJZmlsZSBuYW1lLgorCiAtYzo6CiAtLWNvdW50OjoKIAlJbnN0ZWFkIG9mIHNob3dpbmcgZXZlcnkgbWF0Y2hlZCBsaW5lLCBzaG93IHRoZSBudW1iZXIgb2YKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWd1aS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1ndWkudHh0CmluZGV4IDBlNjUwZjQuLmQwYmM5OGIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWd1aS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtZ3VpLnR4dApAQCAtNjUsOSArNjUsMjggQEAKIAlleGFtcGxlIHRoZSBmaWxlIGlzIHJlYWQgZnJvbSB0aGUgb2JqZWN0IGRhdGFiYXNlIGFuZCBub3QKIAl0aGUgd29ya2luZyBkaXJlY3RvcnkuCiAKK2dpdCBndWkgYmxhbWUgLS1saW5lPTEwMCBNYWtlZmlsZTo6CisKKwlMb2FkcyBhbm5vdGF0aW9ucyBhcyBkZXNjcmliZWQgYWJvdmUgYW5kIGF1dG9tYXRpY2FsbHkKKwlzY3JvbGxzIHRoZSB2aWV3IHRvIGNlbnRlciBvbiBsaW5lICcxMDAnLgorCiBnaXQgZ3VpIGNpdG9vbDo6CiAKIAlNYWtlIG9uZSBjb21taXQgYW5kIHJldHVybiB0byB0aGUgc2hlbGwgd2hlbiBpdCBpcyBjb21wbGV0ZS4KKwlUaGlzIGNvbW1hbmQgcmV0dXJucyBhIG5vbi16ZXJvIGV4aXQgY29kZSBpZiB0aGUgd2luZG93IHdhcworCWNsb3NlZCBpbiBhbnkgd2F5IG90aGVyIHRoYW4gYnkgbWFraW5nIGEgY29tbWl0LgorCitnaXQgZ3VpIGNpdG9vbCAtLWFtZW5kOjoKKworCUF1dG9tYXRpY2FsbHkgZW50ZXIgdGhlICdBbWVuZCBMYXN0IENvbW1pdCcgbW9kZSBvZgorCXRoZSBpbnRlcmZhY2UuCisKK2dpdCBndWkgY2l0b29sIC0tbm9jb21taXQ6OgorCisJQmVoYXZlIGFzIG5vcm1hbCBjaXRvb2wsIGJ1dCBpbnN0ZWFkIG9mIG1ha2luZyBhIGNvbW1pdAorCXNpbXBseSB0ZXJtaW5hdGUgd2l0aCBhIHplcm8gZXhpdCBjb2RlLiBJdCBzdGlsbCBjaGVja3MKKwl0aGF0IHRoZSBpbmRleCBkb2VzIG5vdCBjb250YWluIGFueSB1bm1lcmdlZCBlbnRyaWVzLCBzbworCXlvdSBjYW4gdXNlIGl0IGFzIGEgR1VJIHZlcnNpb24gb2YgbGlua2dpdDpnaXQtbWVyZ2V0b29sWzFdCiAKIGdpdCBjaXRvb2w6OgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1oYXNoLW9iamVjdC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1oYXNoLW9iamVjdC50eHQKaW5kZXggYWM5MjhlMS4uMGFmNDBjZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtaGFzaC1vYmplY3QudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWhhc2gtb2JqZWN0LnR4dApAQCAtOCw3ICs4LDkgQEAKIAogU1lOT1BTSVMKIC0tLS0tLS0tCi0nZ2l0IGhhc2gtb2JqZWN0JyBbLXQgPHR5cGU+XSBbLXddIFstLXN0ZGluIHwgLS1zdGRpbi1wYXRoc10gWy0tXSA8ZmlsZT4uLi4KK1t2ZXJzZV0KKydnaXQgaGFzaC1vYmplY3QnIFstdCA8dHlwZT5dIFstd10gWy0tcGF0aD08ZmlsZT58LS1uby1maWx0ZXJzXSBbLS1zdGRpbl0gWy0tXSA8ZmlsZT4uLi4KKydnaXQgaGFzaC1vYmplY3QnIFstdCA8dHlwZT5dIFstd10gLS1zdGRpbi1wYXRocyA8IDxsaXN0LW9mLXBhdGhzPgogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KQEAgLTM1LDYgKzM3LDIyIEBACiAtLXN0ZGluLXBhdGhzOjoKIAlSZWFkIGZpbGUgbmFtZXMgZnJvbSBzdGRpbiBpbnN0ZWFkIG9mIGZyb20gdGhlIGNvbW1hbmQtbGluZS4KIAorLS1wYXRoOjoKKwlIYXNoIG9iamVjdCBhcyBpdCB3ZXJlIGxvY2F0ZWQgYXQgdGhlIGdpdmVuIHBhdGguIFRoZSBsb2NhdGlvbiBvZgorCWZpbGUgZG9lcyBub3QgZGlyZWN0bHkgaW5mbHVlbmNlIG9uIHRoZSBoYXNoIHZhbHVlLCBidXQgcGF0aCBpcworCXVzZWQgdG8gZGV0ZXJtaW5lIHdoYXQgZ2l0IGZpbHRlcnMgc2hvdWxkIGJlIGFwcGxpZWQgdG8gdGhlIG9iamVjdAorCWJlZm9yZSBpdCBjYW4gYmUgcGxhY2VkIHRvIHRoZSBvYmplY3QgZGF0YWJhc2UsIGFuZCwgYXMgcmVzdWx0IG9mCisJYXBwbHlpbmcgZmlsdGVycywgdGhlIGFjdHVhbCBibG9iIHB1dCBpbnRvIHRoZSBvYmplY3QgZGF0YWJhc2UgbWF5CisJZGlmZmVyIGZyb20gdGhlIGdpdmVuIGZpbGUuIFRoaXMgb3B0aW9uIGlzIG1haW5seSB1c2VmdWwgZm9yIGhhc2hpbmcKKwl0ZW1wb3JhcnkgZmlsZXMgbG9jYXRlZCBvdXRzaWRlIG9mIHRoZSB3b3JraW5nIGRpcmVjdG9yeSBvciBmaWxlcworCXJlYWQgZnJvbSBzdGRpbi4KKworLS1uby1maWx0ZXJzOjoKKwlIYXNoIHRoZSBjb250ZW50cyBhcyBpcywgaWdub3JpbmcgYW55IGlucHV0IGZpbHRlciB0aGF0IHdvdWxkCisJaGF2ZSBiZWVuIGNob3NlbiBieSB0aGUgYXR0cmlidXRlcyBtZWNoYW5pc20sIGluY2x1ZGluZyBjcmxmCisJY29udmVyc2lvbi4gSWYgdGhlIGZpbGUgaXMgcmVhZCBmcm9tIHN0YW5kYXJkIGlucHV0IHRoZW4gdGhpcworCWlzIGFsd2F5cyBpbXBsaWVkLCB1bmxlc3MgdGhlIC0tcGF0aCBvcHRpb24gaXMgZ2l2ZW4uCisKIEF1dGhvcgogLS0tLS0tCiBXcml0dGVuIGJ5IEp1bmlvIEMgSGFtYW5vIDxnaXRzdGVyQHBvYm94LmNvbT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWhlbHAudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtaGVscC50eHQKaW5kZXggZjQxNDU4My4uZDliOWMzNCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtaGVscC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtaGVscC50eHQKQEAgLTExMiw3ICsxMTIsOSBAQAogd2lsbCB0cnkgdG8gdXNlIGtvbnF1ZXJvciBmaXJzdC4gQnV0IHRoaXMgbWF5IGZhaWwgKGZvciBleGFtcGxlIGlmCiBESVNQTEFZIGlzIG5vdCBzZXQpIGFuZCBpbiB0aGF0IGNhc2UgZW1hY3MnIHdvbWFuIG1vZGUgd2lsbCBiZSB0cmllZC4KIAotSWYgZXZlcnl0aGluZyBmYWlscyB0aGUgJ21hbicgcHJvZ3JhbSB3aWxsIGJlIHRyaWVkIGFueXdheS4KK0lmIGV2ZXJ5dGhpbmcgZmFpbHMsIG9yIGlmIG5vIHZpZXdlciBpcyBjb25maWd1cmVkLCB0aGUgdmlld2VyIHNwZWNpZmllZAoraW4gdGhlIEdJVF9NQU5fVklFV0VSIGVudmlyb25tZW50IHZhcmlhYmxlIHdpbGwgYmUgdHJpZWQuICBJZiB0aGF0CitmYWlscyB0b28sIHRoZSAnbWFuJyBwcm9ncmFtIHdpbGwgYmUgdHJpZWQgYW55d2F5LgogCiBtYW4uPHRvb2w+LnBhdGgKIH5+fn5+fn5+fn5+fn5+fgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtaW1hcC1zZW5kLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWltYXAtc2VuZC50eHQKaW5kZXggYjNkOGRhMy4uYmQ0OWEwYSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtaW1hcC1zZW5kLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1pbWFwLXNlbmQudHh0CkBAIC0zLDcgKzMsNyBAQAogCiBOQU1FCiAtLS0tCi1naXQtaW1hcC1zZW5kIC0gRHVtcCBhIG1haWxib3ggZnJvbSBzdGRpbiBpbnRvIGFuIGltYXAgZm9sZGVyCitnaXQtaW1hcC1zZW5kIC0gU2VuZCBhIGNvbGxlY3Rpb24gb2YgcGF0Y2hlcyBmcm9tIHN0ZGluIHRvIGFuIElNQVAgZm9sZGVyCiAKIAogU1lOT1BTSVMKQEAgLTEzLDkgKzEzLDkgQEAKIAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCi1UaGlzIGNvbW1hbmQgdXBsb2FkcyBhIG1haWxib3ggZ2VuZXJhdGVkIHdpdGggZ2l0LWZvcm1hdC1wYXRjaAotaW50byBhbiBpbWFwIGRyYWZ0cyBmb2xkZXIuICBUaGlzIGFsbG93cyBwYXRjaGVzIHRvIGJlIHNlbnQgYXMKLW90aGVyIGVtYWlsIGlzIHNlbnQgd2l0aCBtYWlsIGNsaWVudHMgdGhhdCBjYW5ub3QgcmVhZCBtYWlsYm94CitUaGlzIGNvbW1hbmQgdXBsb2FkcyBhIG1haWxib3ggZ2VuZXJhdGVkIHdpdGggJ2dpdC1mb3JtYXQtcGF0Y2gnCitpbnRvIGFuIElNQVAgZHJhZnRzIGZvbGRlci4gIFRoaXMgYWxsb3dzIHBhdGNoZXMgdG8gYmUgc2VudCBhcworb3RoZXIgZW1haWwgaXMgd2hlbiB1c2luZyBtYWlsIGNsaWVudHMgdGhhdCBjYW5ub3QgcmVhZCBtYWlsYm94CiBmaWxlcyBkaXJlY3RseS4KIAogVHlwaWNhbCB1c2FnZSBpcyBzb21ldGhpbmcgbGlrZToKQEAgLTI2LDIxICsyNiw3NSBAQAogQ09ORklHVVJBVElPTgogLS0tLS0tLS0tLS0tLQogCi0nZ2l0LWltYXAtc2VuZCcgcmVxdWlyZXMgdGhlIGZvbGxvd2luZyB2YWx1ZXMgaW4gdGhlIHJlcG9zaXRvcnkKLWNvbmZpZ3VyYXRpb24gZmlsZSAoc2hvd24gd2l0aCBleGFtcGxlcyk6CitUbyB1c2UgdGhlIHRvb2wsIGltYXAuZm9sZGVyIGFuZCBlaXRoZXIgaW1hcC50dW5uZWwgb3IgaW1hcC5ob3N0IG11c3QgYmUgc2V0Cit0byBhcHByb3ByaWF0ZSB2YWx1ZXMuCisKK1ZhcmlhYmxlcworfn5+fn5+fn5+CisKK2ltYXAuZm9sZGVyOjoKKwlUaGUgZm9sZGVyIHRvIGRyb3AgdGhlIG1haWxzIGludG8sIHdoaWNoIGlzIHR5cGljYWxseSB0aGUgRHJhZnRzCisJZm9sZGVyLiBGb3IgZXhhbXBsZTogIklOQk9YLkRyYWZ0cyIsICJJTkJPWC9EcmFmdHMiIG9yCisJIltHbWFpbF0vRHJhZnRzIi4gUmVxdWlyZWQgdG8gdXNlIGltYXAtc2VuZC4KKworaW1hcC50dW5uZWw6OgorCUNvbW1hbmQgdXNlZCB0byBzZXR1cCBhIHR1bm5lbCB0byB0aGUgSU1BUCBzZXJ2ZXIgdGhyb3VnaCB3aGljaAorCWNvbW1hbmRzIHdpbGwgYmUgcGlwZWQgaW5zdGVhZCBvZiB1c2luZyBhIGRpcmVjdCBuZXR3b3JrIGNvbm5lY3Rpb24KKwl0byB0aGUgc2VydmVyLiBSZXF1aXJlZCB3aGVuIGltYXAuaG9zdCBpcyBub3Qgc2V0IHRvIHVzZSBpbWFwLXNlbmQuCisKK2ltYXAuaG9zdDo6CisJQSBVUkwgaWRlbnRpZnlpbmcgdGhlIHNlcnZlci4gVXNlIGEgYGltYXA6Ly9gIHByZWZpeCBmb3Igbm9uLXNlY3VyZQorCWNvbm5lY3Rpb25zIGFuZCBhIGBpbWFwczovL2AgcHJlZml4IGZvciBzZWN1cmUgY29ubmVjdGlvbnMuCisJSWdub3JlZCB3aGVuIGltYXAudHVubmVsIGlzIHNldCwgYnV0IHJlcXVpcmVkIHRvIHVzZSBpbWFwLXNlbmQKKwlvdGhlcndpc2UuCisKK2ltYXAudXNlcjo6CisJVGhlIHVzZXJuYW1lIHRvIHVzZSB3aGVuIGxvZ2dpbmcgaW4gdG8gdGhlIHNlcnZlci4KKworaW1hcC5wYXNzd29yZDo6CisJVGhlIHBhc3N3b3JkIHRvIHVzZSB3aGVuIGxvZ2dpbmcgaW4gdG8gdGhlIHNlcnZlci4KKworaW1hcC5wb3J0OjoKKwlBbiBpbnRlZ2VyIHBvcnQgbnVtYmVyIHRvIGNvbm5lY3QgdG8gb24gdGhlIHNlcnZlci4KKwlEZWZhdWx0cyB0byAxNDMgZm9yIGltYXA6Ly8gaG9zdHMgYW5kIDk5MyBmb3IgaW1hcHM6Ly8gaG9zdHMuCisJSWdub3JlZCB3aGVuIGltYXAudHVubmVsIGlzIHNldC4KKworaW1hcC5zc2x2ZXJpZnk6OgorCUEgYm9vbGVhbiB0byBlbmFibGUvZGlzYWJsZSB2ZXJpZmljYXRpb24gb2YgdGhlIHNlcnZlciBjZXJ0aWZpY2F0ZQorCXVzZWQgYnkgdGhlIFNTTC9UTFMgY29ubmVjdGlvbi4gRGVmYXVsdCBpcyBgdHJ1ZWAuIElnbm9yZWQgd2hlbgorCWltYXAudHVubmVsIGlzIHNldC4KKworRXhhbXBsZXMKK35+fn5+fn5+CisKK1VzaW5nIHR1bm5lbCBtb2RlOgogCiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgogW2ltYXBdCi0gICAgRm9sZGVyID0gIklOQk9YLkRyYWZ0cyIKKyAgICBmb2xkZXIgPSAiSU5CT1guRHJhZnRzIgorICAgIHR1bm5lbCA9ICJzc2ggLXEgLUMgdXNlckBleGFtcGxlLmNvbSAvdXNyL2Jpbi9pbWFwZCAuL01haWxkaXIgMj4gL2Rldi9udWxsIgorLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KIAotW2ltYXBdCi0gICAgVHVubmVsID0gInNzaCAtcSB1c2VyQHNlcnZlci5jb20gL3Vzci9iaW4vaW1hcGQgLi9NYWlsZGlyIDI+IC9kZXYvbnVsbCIKK1VzaW5nIGRpcmVjdCBtb2RlOgogCisuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCiBbaW1hcF0KLSAgICBIb3N0ID0gaW1hcC5zZXJ2ZXIuY29tCi0gICAgVXNlciA9IGJvYgotICAgIFBhc3MgPSBwd2QKLSAgICBQb3J0ID0gMTQzCisgICAgZm9sZGVyID0gIklOQk9YLkRyYWZ0cyIKKyAgICBob3N0ID0gaW1hcDovL2ltYXAuZXhhbXBsZS5jb20KKyAgICB1c2VyID0gYm9iCisgICAgcGFzcyA9IHA0c3N3MHJkCisuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorCitVc2luZyBkaXJlY3QgbW9kZSB3aXRoIFNTTDoKKworLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorW2ltYXBdCisgICAgZm9sZGVyID0gIklOQk9YLkRyYWZ0cyIKKyAgICBob3N0ID0gaW1hcHM6Ly9pbWFwLmV4YW1wbGUuY29tCisgICAgdXNlciA9IGJvYgorICAgIHBhc3MgPSBwNHNzdzByZAorICAgIHBvcnQgPSAxMjMKKyAgICBzc2x2ZXJpZnkgPSBmYWxzZQogLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KIAogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1sb2cudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtbG9nLnR4dAppbmRleCA5M2EyYTIyLi4zNGNmNGU1IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1sb2cudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWxvZy50eHQKQEAgLTQwLDYgKzQwLDEwIEBACiAtLWRlY29yYXRlOjoKIAlQcmludCBvdXQgdGhlIHJlZiBuYW1lcyBvZiBhbnkgY29tbWl0cyB0aGF0IGFyZSBzaG93bi4KIAorLS1zb3VyY2U6OgorCVByaW50IG91dCB0aGUgcmVmIG5hbWUgZ2l2ZW4gb24gdGhlIGNvbW1hbmQgbGluZSBieSB3aGljaCBlYWNoCisJY29tbWl0IHdhcyByZWFjaGVkLgorCiAtLWZ1bGwtZGlmZjo6CiAJV2l0aG91dCB0aGlzIGZsYWcsICJnaXQgbG9nIC1wIDxwYXRoPi4uLiIgc2hvd3MgY29tbWl0cyB0aGF0CiAJdG91Y2ggdGhlIHNwZWNpZmllZCBwYXRocywgYW5kIGRpZmZzIGFib3V0IHRoZSBzYW1lIHNwZWNpZmllZApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtbHMtdHJlZS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1scy10cmVlLnR4dAppbmRleCA0YzcyNjJmLi5kYjZlYmNjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1scy10cmVlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1scy10cmVlLnR4dApAQCAtMTAsNyArMTAsNyBAQAogLS0tLS0tLS0KIFt2ZXJzZV0KICdnaXQgbHMtdHJlZScgWy1kXSBbLXJdIFstdF0gWy1sXSBbLXpdCi0JICAgIFstLW5hbWUtb25seV0gWy0tbmFtZS1zdGF0dXNdIFstLWZ1bGwtbmFtZV0gWy0tYWJicmV2PVs8bj5dXQorCSAgICBbLS1uYW1lLW9ubHldIFstLW5hbWUtc3RhdHVzXSBbLS1mdWxsLW5hbWVdIFstLWZ1bGwtdHJlZV0gWy0tYWJicmV2PVs8bj5dXQogCSAgICA8dHJlZS1pc2g+IFtwYXRocy4uLl0KIAogREVTQ1JJUFRJT04KQEAgLTMwLDYgKzMwLDggQEAKICAgICdzdWIvZGlyJyBpbiAnSEVBRCcpLiAgWW91IGRvbid0IHdhbnQgdG8gZ2l2ZSBhIHRyZWUgdGhhdCBpcyBub3QgYXQgdGhlCiAgICByb290IGxldmVsIChlLmcuICdnaXQgbHMtdHJlZSAtciBIRUFEOnN1YiBkaXInKSBpbiB0aGlzIGNhc2UsIGFzIHRoYXQKICAgIHdvdWxkIHJlc3VsdCBpbiBhc2tpbmcgZm9yICdzdWIvc3ViL2RpcicgaW4gdGhlICdIRUFEJyBjb21taXQuCisgICBIb3dldmVyLCB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBjYW4gYmUgaWdub3JlZCBieSBwYXNzaW5nCisgICAtLWZ1bGwtdHJlZSBvcHRpb24uCiAKIE9QVElPTlMKIC0tLS0tLS0KQEAgLTY2LDYgKzY4LDEwIEBACiAJSW5zdGVhZCBvZiBzaG93aW5nIHRoZSBwYXRoIG5hbWVzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcKIAlkaXJlY3RvcnksIHNob3cgdGhlIGZ1bGwgcGF0aCBuYW1lcy4KIAorLS1mdWxsLXRyZWU6OgorCURvIG5vdCBsaW1pdCB0aGUgbGlzdGluZyB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KKwlJbXBsaWVzIC0tZnVsbC1uYW1lLgorCiBwYXRoczo6CiAJV2hlbiBwYXRocyBhcmUgZ2l2ZW4sIHNob3cgdGhlbSAobm90ZSB0aGF0IHRoaXMgaXNuJ3QgcmVhbGx5IHJhdwogCXBhdGhuYW1lcywgYnV0IHJhdGhlciBhIGxpc3Qgb2YgcGF0dGVybnMgdG8gbWF0Y2gpLiAgT3RoZXJ3aXNlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZS1iYXNlLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LW1lcmdlLWJhc2UudHh0CmluZGV4IDFhN2VjYmYuLjc2NzQ4NmMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LW1lcmdlLWJhc2UudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LW1lcmdlLWJhc2UudHh0CkBAIC04LDI2ICs4LDgwIEBACiAKIFNZTk9QU0lTCiAtLS0tLS0tLQotJ2dpdCBtZXJnZS1iYXNlJyBbLS1hbGxdIDxjb21taXQ+IDxjb21taXQ+CisnZ2l0IG1lcmdlLWJhc2UnIFstLWFsbF0gPGNvbW1pdD4gPGNvbW1pdD4uLi4KIAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCiAKLSdnaXQtbWVyZ2UtYmFzZScgZmluZHMgYXMgZ29vZCBhIGNvbW1vbiBhbmNlc3RvciBhcyBwb3NzaWJsZSBiZXR3ZWVuCi10aGUgdHdvIGNvbW1pdHMuIFRoYXQgaXMsIGdpdmVuIHR3byBjb21taXRzIEEgYW5kIEIsIGBnaXQgbWVyZ2UtYmFzZSBBCi1CYCB3aWxsIG91dHB1dCBhIGNvbW1pdCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSBib3RoIEEgYW5kIEIgdGhyb3VnaAotdGhlIHBhcmVudCByZWxhdGlvbnNoaXAuCisnZ2l0LW1lcmdlLWJhc2UnIGZpbmRzIGJlc3QgY29tbW9uIGFuY2VzdG9yKHMpIGJldHdlZW4gdHdvIGNvbW1pdHMgdG8gdXNlCitpbiBhIHRocmVlLXdheSBtZXJnZS4gIE9uZSBjb21tb24gYW5jZXN0b3IgaXMgJ2JldHRlcicgdGhhbiBhbm90aGVyIGNvbW1vbgorYW5jZXN0b3IgaWYgdGhlIGxhdHRlciBpcyBhbiBhbmNlc3RvciBvZiB0aGUgZm9ybWVyLiAgQSBjb21tb24gYW5jZXN0b3IKK3RoYXQgZG9lcyBub3QgaGF2ZSBhbnkgYmV0dGVyIGNvbW1vbiBhbmNlc3RvciBpcyBhICdiZXN0IGNvbW1vbgorYW5jZXN0b3InLCBpLmUuIGEgJ21lcmdlIGJhc2UnLiAgTm90ZSB0aGF0IHRoZXJlIGNhbiBiZSBtb3JlIHRoYW4gb25lCittZXJnZSBiYXNlIGZvciBhIHBhaXIgb2YgY29tbWl0cy4KIAotR2l2ZW4gYSBzZWxlY3Rpb24gb2YgZXF1YWxseSBnb29kIGNvbW1vbiBhbmNlc3RvcnMgaXQgc2hvdWxkIG5vdCBiZQotcmVsaWVkIG9uIHRvIGRlY2lkZSBpbiBhbnkgcGFydGljdWxhciB3YXkuCi0KLVRoZSAnZ2l0LW1lcmdlLWJhc2UnIGFsZ29yaXRobSBpcyBzdGlsbCBpbiBmbHV4IC0gdXNlIHRoZSBzb3VyY2UuLi4KK0Ftb25nIHRoZSB0d28gY29tbWl0cyB0byBjb21wdXRlIHRoZSBtZXJnZSBiYXNlIGZyb20sIG9uZSBpcyBzcGVjaWZpZWQgYnkKK3RoZSBmaXJzdCBjb21taXQgYXJndW1lbnQgb24gdGhlIGNvbW1hbmQgbGluZTsgdGhlIG90aGVyIGNvbW1pdCBpcyBhCisocG9zc2libHkgaHlwb3RoZXRpY2FsKSBjb21taXQgdGhhdCBpcyBhIG1lcmdlIGFjcm9zcyBhbGwgdGhlIHJlbWFpbmluZworY29tbWl0cyBvbiB0aGUgY29tbWFuZCBsaW5lLiAgQXMgdGhlIG1vc3QgY29tbW9uIHNwZWNpYWwgY2FzZSwgc3BlY2lmeWluZyBvbmx5Cit0d28gY29tbWl0cyBvbiB0aGUgY29tbWFuZCBsaW5lIG1lYW5zIGNvbXB1dGluZyB0aGUgbWVyZ2UgYmFzZSBiZXR3ZWVuCit0aGUgZ2l2ZW4gdHdvIGNvbW1pdHMuCiAKIE9QVElPTlMKIC0tLS0tLS0KIC0tYWxsOjoKLQlPdXRwdXQgYWxsIGNvbW1vbiBhbmNlc3RvcnMgZm9yIHRoZSB0d28gY29tbWl0cyBpbnN0ZWFkIG9mCi0JanVzdCBvbmUuCisJT3V0cHV0IGFsbCBtZXJnZSBiYXNlcyBmb3IgdGhlIGNvbW1pdHMsIGluc3RlYWQgb2YganVzdCBvbmUuCisKK0RJU0NVU1NJT04KKy0tLS0tLS0tLS0KKworR2l2ZW4gdHdvIGNvbW1pdHMgJ0EnIGFuZCAnQicsIGBnaXQgbWVyZ2UtYmFzZSBBIEJgIHdpbGwgb3V0cHV0IGEgY29tbWl0Cit3aGljaCBpcyByZWFjaGFibGUgZnJvbSBib3RoICdBJyBhbmQgJ0InIHRocm91Z2ggdGhlIHBhcmVudCByZWxhdGlvbnNoaXAuCisKK0ZvciBleGFtcGxlLCB3aXRoIHRoaXMgdG9wb2xvZ3k6CisKKwkJIG8tLS1vLS0tby0tLUIKKwkJLworCS0tLW8tLS0xLS0tby0tLW8tLS1vLS0tQQorCit0aGUgbWVyZ2UgYmFzZSBiZXR3ZWVuICdBJyBhbmQgJ0InIGlzICcxJy4KKworR2l2ZW4gdGhyZWUgY29tbWl0cyAnQScsICdCJyBhbmQgJ0MnLCBgZ2l0IG1lcmdlLWJhc2UgQSBCIENgIHdpbGwgY29tcHV0ZSB0aGUKK21lcmdlIGJhc2UgYmV0d2VlbiAnQScgYW5kIGEgaHlwb3RoZXRpY2FsIGNvbW1pdCAnTScsIHdoaWNoIGlzIGEgbWVyZ2UKK2JldHdlZW4gJ0InIGFuZCAnQycuICBGb3IgZXhhbXBsZSwgd2l0aCB0aGlzIHRvcG9sb2d5OgorCisJICAgICAgIG8tLS1vLS0tby0tLW8tLS1DCisJICAgICAgLworCSAgICAgLyAgIG8tLS1vLS0tby0tLUIKKwkgICAgLyAgIC8KKwktLS0yLS0tMS0tLW8tLS1vLS0tby0tLUEKKwordGhlIHJlc3VsdCBvZiBgZ2l0IG1lcmdlLWJhc2UgQSBCIENgIGlzICcxJy4gIFRoaXMgaXMgYmVjYXVzZSB0aGUKK2VxdWl2YWxlbnQgdG9wb2xvZ3kgd2l0aCBhIG1lcmdlIGNvbW1pdCAnTScgYmV0d2VlbiAnQicgYW5kICdDJyBpczoKKworCisJICAgICAgIG8tLS1vLS0tby0tLW8tLS1vCisJICAgICAgLyAgICAgICAgICAgICAgICAgXAorCSAgICAgLyAgIG8tLS1vLS0tby0tLW8tLS1NCisJICAgIC8gICAvCisJLS0tMi0tLTEtLS1vLS0tby0tLW8tLS1BCisKK2FuZCB0aGUgcmVzdWx0IG9mIGBnaXQgbWVyZ2UtYmFzZSBBIE1gIGlzICcxJy4gIENvbW1pdCAnMicgaXMgYWxzbyBhCitjb21tb24gYW5jZXN0b3IgYmV0d2VlbiAnQScgYW5kICdNJywgYnV0ICcxJyBpcyBhIGJldHRlciBjb21tb24gYW5jZXN0b3IsCitiZWNhdXNlICcyJyBpcyBhbiBhbmNlc3RvciBvZiAnMScuICBIZW5jZSwgJzInIGlzIG5vdCBhIG1lcmdlIGJhc2UuCisKK1doZW4gdGhlIGhpc3RvcnkgaW52b2x2ZXMgY3Jpc3MtY3Jvc3MgbWVyZ2VzLCB0aGVyZSBjYW4gYmUgbW9yZSB0aGFuIG9uZQorJ2Jlc3QnIGNvbW1vbiBhbmNlc3RvciBmb3IgdHdvIGNvbW1pdHMuICBGb3IgZXhhbXBsZSwgd2l0aCB0aGlzIHRvcG9sb2d5OgorCisgICAgICAgLS0tMS0tLW8tLS1BCisJICAgXCAvCisJICAgIFgKKwkgICAvIFwKKyAgICAgICAtLS0yLS0tby0tLW8tLS1CCisKK2JvdGggJzEnIGFuZCAnMicgYXJlIG1lcmdlLWJhc2VzIG9mIEEgYW5kIEIuICBOZWl0aGVyIG9uZSBpcyBiZXR0ZXIgdGhhbgordGhlIG90aGVyIChib3RoIGFyZSAnYmVzdCcgbWVyZ2UgYmFzZXMpLiAgV2hlbiB0aGUgYC0tYWxsYCBvcHRpb24gaXMgbm90IGdpdmVuLAoraXQgaXMgdW5zcGVjaWZpZWQgd2hpY2ggYmVzdCBvbmUgaXMgb3V0cHV0LgogCiBBdXRob3IKIC0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2UtZmlsZS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZS1maWxlLnR4dAppbmRleCAwMjRlYzAxLi4zMDM1MzczIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZS1maWxlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZS1maWxlLnR4dApAQCAtMTUsMTcgKzE1LDE3IEBACiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQotJ2dpdC1maWxlLW1lcmdlJyBpbmNvcnBvcmF0ZXMgYWxsIGNoYW5nZXMgdGhhdCBsZWFkIGZyb20gdGhlIGA8YmFzZS1maWxlPmAKKydnaXQtbWVyZ2UtZmlsZScgaW5jb3Jwb3JhdGVzIGFsbCBjaGFuZ2VzIHRoYXQgbGVhZCBmcm9tIHRoZSBgPGJhc2UtZmlsZT5gCiB0byBgPG90aGVyLWZpbGU+YCBpbnRvIGA8Y3VycmVudC1maWxlPmAuIFRoZSByZXN1bHQgb3JkaW5hcmlseSBnb2VzIGludG8KIGA8Y3VycmVudC1maWxlPmAuICdnaXQtbWVyZ2UtZmlsZScgaXMgdXNlZnVsIGZvciBjb21iaW5pbmcgc2VwYXJhdGUgY2hhbmdlcwogdG8gYW4gb3JpZ2luYWwuIFN1cHBvc2UgYDxiYXNlLWZpbGU+YCBpcyB0aGUgb3JpZ2luYWwsIGFuZCBib3RoCi1gPGN1cnJlbnQtZmlsZT5gIGFuZCBgPG90aGVyLWZpbGU+YCBhcmUgbW9kaWZpY2F0aW9ucyBvZiBgPGJhc2UtZmlsZT5gLgotVGhlbiAnZ2l0LW1lcmdlLWZpbGUnIGNvbWJpbmVzIGJvdGggY2hhbmdlcy4KK2A8Y3VycmVudC1maWxlPmAgYW5kIGA8b3RoZXItZmlsZT5gIGFyZSBtb2RpZmljYXRpb25zIG9mIGA8YmFzZS1maWxlPmAsCit0aGVuICdnaXQtbWVyZ2UtZmlsZScgY29tYmluZXMgYm90aCBjaGFuZ2VzLgogCiBBIGNvbmZsaWN0IG9jY3VycyBpZiBib3RoIGA8Y3VycmVudC1maWxlPmAgYW5kIGA8b3RoZXItZmlsZT5gIGhhdmUgY2hhbmdlcwogaW4gYSBjb21tb24gc2VnbWVudCBvZiBsaW5lcy4gSWYgYSBjb25mbGljdCBpcyBmb3VuZCwgJ2dpdC1tZXJnZS1maWxlJwotbm9ybWFsbHkgb3V0cHV0cyBhIHdhcm5pbmcgYW5kIGJyYWNrZXRzIHRoZSBjb25mbGljdCB3aXRoIDw8PDw8PDwgYW5kCi0+Pj4+Pj4+IGxpbmVzLiBBIHR5cGljYWwgY29uZmxpY3Qgd2lsbCBsb29rIGxpa2UgdGhpczoKK25vcm1hbGx5IG91dHB1dHMgYSB3YXJuaW5nIGFuZCBicmFja2V0cyB0aGUgY29uZmxpY3Qgd2l0aCBsaW5lcyBjb250YWluaW5nCis8PDw8PDw8IGFuZCA+Pj4+Pj4+IG1hcmtlcnMuIEEgdHlwaWNhbCBjb25mbGljdCB3aWxsIGxvb2sgbGlrZSB0aGlzOgogCiAJPDw8PDw8PCBBCiAJbGluZXMgaW4gZmlsZSBBCkBAIC02MCw3ICs2MCw3IEBACiAJYDxjdXJyZW50LWZpbGU+YC4KIAogLXE6OgotCVF1aWV0OyAgZG8gIG5vdCAgd2FybiBhYm91dCBjb25mbGljdHMuCisJUXVpZXQ7IGRvIG5vdCB3YXJuIGFib3V0IGNvbmZsaWN0cy4KIAogCiBFWEFNUExFUwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2UtaW5kZXgudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2UtaW5kZXgudHh0CmluZGV4IGZmMDg4YzUuLjEyM2U2ZDAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LW1lcmdlLWluZGV4LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZS1pbmRleC50eHQKQEAgLTI5LDExICsyOSwxMSBAQAogCUluc3RlYWQgb2Ygc3RvcHBpbmcgYXQgdGhlIGZpcnN0IGZhaWxlZCBtZXJnZSwgZG8gYWxsIG9mIHRoZW0KIAlpbiBvbmUgc2hvdCAtIGNvbnRpbnVlIHdpdGggbWVyZ2luZyBldmVuIHdoZW4gcHJldmlvdXMgbWVyZ2VzCiAJcmV0dXJuZWQgZXJyb3JzLCBhbmQgb25seSByZXR1cm4gdGhlIGVycm9yIGNvZGUgYWZ0ZXIgYWxsIHRoZQotCW1lcmdlcyBhcmUgb3Zlci4KKwltZXJnZXMuCiAKIC1xOjoKLQlEbyBub3QgY29tcGxhaW4gYWJvdXQgZmFpbGVkIG1lcmdlIHByb2dyYW0gKHRoZSBtZXJnZSBwcm9ncmFtCi0JZmFpbHVyZSB1c3VhbGx5IGluZGljYXRlcyBjb25mbGljdHMgZHVyaW5nIG1lcmdlKS4gVGhpcyBpcyBmb3IKKwlEbyBub3QgY29tcGxhaW4gYWJvdXQgYSBmYWlsZWQgbWVyZ2UgcHJvZ3JhbSAoYSBtZXJnZSBwcm9ncmFtCisJZmFpbHVyZSB1c3VhbGx5IGluZGljYXRlcyBjb25mbGljdHMgZHVyaW5nIHRoZSBtZXJnZSkuIFRoaXMgaXMgZm9yCiAJcG9yY2VsYWlucyB3aGljaCBtaWdodCB3YW50IHRvIGVtaXQgY3VzdG9tIG1lc3NhZ2VzLgogCiBJZiAnZ2l0LW1lcmdlLWluZGV4JyBpcyBjYWxsZWQgd2l0aCBtdWx0aXBsZSA8ZmlsZT5zIChvciAtYSkgdGhlbiBpdApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2UtdHJlZS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZS10cmVlLnR4dAppbmRleCBkYmIwYzE4Li5mODY5YTdmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZS10cmVlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZS10cmVlLnR4dApAQCAtMTQsMTQgKzE0LDE0IEBACiAtLS0tLS0tLS0tLQogUmVhZHMgdGhyZWUgdHJlZWlzaCwgYW5kIG91dHB1dCB0cml2aWFsIG1lcmdlIHJlc3VsdHMgYW5kCiBjb25mbGljdGluZyBzdGFnZXMgdG8gdGhlIHN0YW5kYXJkIG91dHB1dC4gIFRoaXMgaXMgc2ltaWxhciB0bwotd2hhdCB0aHJlZS13YXkgcmVhZC10cmVlIC1tIGRvZXMsIGJ1dCBpbnN0ZWFkIG9mIHN0b3JpbmcgdGhlCit3aGF0IHRocmVlLXdheSAnZ2l0IHJlYWQtdHJlZSAtbScgZG9lcywgYnV0IGluc3RlYWQgb2Ygc3RvcmluZyB0aGUKIHJlc3VsdHMgaW4gdGhlIGluZGV4LCB0aGUgY29tbWFuZCBvdXRwdXRzIHRoZSBlbnRyaWVzIHRvIHRoZQogc3RhbmRhcmQgb3V0cHV0LgogCiBUaGlzIGlzIG1lYW50IHRvIGJlIHVzZWQgYnkgaGlnaGVyIGxldmVsIHNjcmlwdHMgdG8gY29tcHV0ZQotbWVyZ2UgcmVzdWx0cyBvdXRzaWRlIGluZGV4LCBhbmQgc3R1ZmYgdGhlIHJlc3VsdHMgYmFjayBpbnRvIHRoZQorbWVyZ2UgcmVzdWx0cyBvdXRzaWRlIG9mIHRoZSBpbmRleCwgYW5kIHN0dWZmIHRoZSByZXN1bHRzIGJhY2sgaW50byB0aGUKIGluZGV4LiAgRm9yIHRoaXMgcmVhc29uLCB0aGUgb3V0cHV0IGZyb20gdGhlIGNvbW1hbmQgb21pdHMKLWVudHJpZXMgdGhhdCBtYXRjaCA8YnJhbmNoMT4gdHJlZS4KK2VudHJpZXMgdGhhdCBtYXRjaCB0aGUgPGJyYW5jaDE+IHRyZWUuCiAKIEF1dGhvcgogLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZS50eHQKaW5kZXggMTdhMTVhYy4uZjdiZTU4NCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2UudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LW1lcmdlLnR4dApAQCAtNjksMjAgKzY5LDIwIEBACiAgIHNpbXBsZXN0IGNhc2UsIGNhbGxlZCAiQWxyZWFkeSB1cC10by1kYXRlLiIKIAogKiBgSEVBRGAgaXMgYWxyZWFkeSBjb250YWluZWQgaW4gdGhlIG1lcmdlZCBjb21taXQuIFRoaXMgaXMgdGhlCi0gIG1vc3QgY29tbW9uIGNhc2UgZXNwZWNpYWxseSB3aGVuIGludm9sdmVkIHRocm91Z2ggJ2dpdCBwdWxsJzoKLSAgeW91IGFyZSB0cmFja2luZyBhbiB1cHN0cmVhbSByZXBvc2l0b3J5LCBjb21taXR0ZWQgbm8gbG9jYWwKKyAgbW9zdCBjb21tb24gY2FzZSBlc3BlY2lhbGx5IHdoZW4gaW52b2tlZCBmcm9tICdnaXQgcHVsbCc6CisgIHlvdSBhcmUgdHJhY2tpbmcgYW4gdXBzdHJlYW0gcmVwb3NpdG9yeSwgaGF2ZSBjb21taXR0ZWQgbm8gbG9jYWwKICAgY2hhbmdlcyBhbmQgbm93IHlvdSB3YW50IHRvIHVwZGF0ZSB0byBhIG5ld2VyIHVwc3RyZWFtIHJldmlzaW9uLgotICBZb3VyIGBIRUFEYCAoYW5kIHRoZSBpbmRleCkgaXMgdXBkYXRlZCB0byBhdCBwb2ludCB0aGUgbWVyZ2VkCisgIFlvdXIgYEhFQURgIChhbmQgdGhlIGluZGV4KSBpcyB1cGRhdGVkIHRvIHBvaW50IGF0IHRoZSBtZXJnZWQKICAgY29tbWl0LCB3aXRob3V0IGNyZWF0aW5nIGFuIGV4dHJhIG1lcmdlIGNvbW1pdC4gIFRoaXMgaXMKICAgY2FsbGVkICJGYXN0LWZvcndhcmQiLgogCiAqIEJvdGggdGhlIG1lcmdlZCBjb21taXQgYW5kIGBIRUFEYCBhcmUgaW5kZXBlbmRlbnQgYW5kIG11c3QgYmUKLSAgdGllZCB0b2dldGhlciBieSBhIG1lcmdlIGNvbW1pdCB0aGF0IGhhcyB0aGVtIGJvdGggYXMgaXRzIHBhcmVudHMuCisgIHRpZWQgdG9nZXRoZXIgYnkgYSBtZXJnZSBjb21taXQgdGhhdCBoYXMgYm90aCBvZiB0aGVtIGFzIGl0cyBwYXJlbnRzLgogICBUaGUgcmVzdCBvZiB0aGlzIHNlY3Rpb24gZGVzY3JpYmVzIHRoaXMgIlRydWUgbWVyZ2UiIGNhc2UuCiAKIFRoZSBjaG9zZW4gbWVyZ2Ugc3RyYXRlZ3kgbWVyZ2VzIHRoZSB0d28gY29tbWl0cyBpbnRvIGEgc2luZ2xlCiBuZXcgc291cmNlIHRyZWUuCi1XaGVuIHRoaW5ncyBjbGVhbmx5IG1lcmdlLCB0aGVzZSB0aGluZ3MgaGFwcGVuOgorV2hlbiB0aGluZ3MgbWVyZ2UgY2xlYW5seSwgdGhpcyBpcyB3aGF0IGhhcHBlbnM6CiAKIDEuIFRoZSByZXN1bHRzIGFyZSB1cGRhdGVkIGJvdGggaW4gdGhlIGluZGV4IGZpbGUgYW5kIGluIHlvdXIKICAgIHdvcmtpbmcgdHJlZTsKQEAgLTkxLDE2ICs5MSwxNiBAQAogNC4gVGhlIGBIRUFEYCBwb2ludGVyIGdldHMgYWR2YW5jZWQuCiAKIEJlY2F1c2Ugb2YgMi4sIHdlIHJlcXVpcmUgdGhhdCB0aGUgb3JpZ2luYWwgc3RhdGUgb2YgdGhlIGluZGV4Ci1maWxlIHRvIG1hdGNoIGV4YWN0bHkgdGhlIGN1cnJlbnQgYEhFQURgIGNvbW1pdDsgb3RoZXJ3aXNlIHdlCitmaWxlIG1hdGNoZXMgZXhhY3RseSB0aGUgY3VycmVudCBgSEVBRGAgY29tbWl0OyBvdGhlcndpc2Ugd2UKIHdpbGwgd3JpdGUgb3V0IHlvdXIgbG9jYWwgY2hhbmdlcyBhbHJlYWR5IHJlZ2lzdGVyZWQgaW4geW91cgogaW5kZXggZmlsZSBhbG9uZyB3aXRoIHRoZSBtZXJnZSByZXN1bHQsIHdoaWNoIGlzIG5vdCBnb29kLgotQmVjYXVzZSAxLiBpbnZvbHZlcyBvbmx5IHRoZSBwYXRocyBkaWZmZXJlbnQgYmV0d2VlbiB5b3VyCitCZWNhdXNlIDEuIGludm9sdmVzIG9ubHkgdGhvc2UgcGF0aHMgZGlmZmVyaW5nIGJldHdlZW4geW91cgogYnJhbmNoIGFuZCB0aGUgcmVtb3RlIGJyYW5jaCB5b3UgYXJlIHB1bGxpbmcgZnJvbSBkdXJpbmcgdGhlCiBtZXJnZSAod2hpY2ggaXMgdHlwaWNhbGx5IGEgZnJhY3Rpb24gb2YgdGhlIHdob2xlIHRyZWUpLCB5b3UgY2FuCiBoYXZlIGxvY2FsIG1vZGlmaWNhdGlvbnMgaW4geW91ciB3b3JraW5nIHRyZWUgYXMgbG9uZyBhcyB0aGV5IGRvCiBub3Qgb3ZlcmxhcCB3aXRoIHdoYXQgdGhlIG1lcmdlIHVwZGF0ZXMuCiAKLVdoZW4gdGhlcmUgYXJlIGNvbmZsaWN0cywgdGhlc2UgdGhpbmdzIGhhcHBlbjoKK1doZW4gdGhlcmUgYXJlIGNvbmZsaWN0cywgdGhlIGZvbGxvd2luZyBoYXBwZW5zOgogCiAxLiBgSEVBRGAgc3RheXMgdGhlIHNhbWUuCiAKQEAgLTExMSwyOCArMTExLDEwNSBAQAogICAgdmVyc2lvbnM7IHN0YWdlMSBzdG9yZXMgdGhlIHZlcnNpb24gZnJvbSB0aGUgY29tbW9uIGFuY2VzdG9yLAogICAgc3RhZ2UyIGZyb20gYEhFQURgLCBhbmQgc3RhZ2UzIGZyb20gdGhlIHJlbW90ZSBicmFuY2ggKHlvdQogICAgY2FuIGluc3BlY3QgdGhlIHN0YWdlcyB3aXRoIGBnaXQgbHMtZmlsZXMgLXVgKS4gIFRoZSB3b3JraW5nCi0gICB0cmVlIGZpbGVzIGhhdmUgdGhlIHJlc3VsdCBvZiAibWVyZ2UiIHByb2dyYW07IGkuZS4gMy13YXkKLSAgIG1lcmdlIHJlc3VsdCB3aXRoIGZhbWlsaWFyIGNvbmZsaWN0IG1hcmtlcnMgYDw8PCA9PT0gPj4+YC4KKyAgIHRyZWUgZmlsZXMgY29udGFpbiB0aGUgcmVzdWx0IG9mIHRoZSAibWVyZ2UiIHByb2dyYW07IGkuZS4gMy13YXkKKyAgIG1lcmdlIHJlc3VsdHMgd2l0aCBmYW1pbGlhciBjb25mbGljdCBtYXJrZXJzIGA8PDwgPT09ID4+PmAuCiAKIDQuIE5vIG90aGVyIGNoYW5nZXMgYXJlIGRvbmUuICBJbiBwYXJ0aWN1bGFyLCB0aGUgbG9jYWwKICAgIG1vZGlmaWNhdGlvbnMgeW91IGhhZCBiZWZvcmUgeW91IHN0YXJ0ZWQgbWVyZ2Ugd2lsbCBzdGF5IHRoZQogICAgc2FtZSBhbmQgdGhlIGluZGV4IGVudHJpZXMgZm9yIHRoZW0gc3RheSBhcyB0aGV5IHdlcmUsCiAgICBpLmUuIG1hdGNoaW5nIGBIRUFEYC4KIAorSE9XIENPTkZMSUNUUyBBUkUgUFJFU0VOVEVECistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRHVyaW5nIGEgbWVyZ2UsIHRoZSB3b3JraW5nIHRyZWUgZmlsZXMgYXJlIHVwZGF0ZWQgdG8gcmVmbGVjdCB0aGUgcmVzdWx0CitvZiB0aGUgbWVyZ2UuICBBbW9uZyB0aGUgY2hhbmdlcyBtYWRlIHRvIHRoZSBjb21tb24gYW5jZXN0b3IncyB2ZXJzaW9uLAorbm9uLW92ZXJsYXBwaW5nIG9uZXMgKHRoYXQgaXMsIHlvdSBjaGFuZ2VkIGFuIGFyZWEgb2YgdGhlIGZpbGUgd2hpbGUgdGhlCitvdGhlciBzaWRlIGxlZnQgdGhhdCBhcmVhIGludGFjdCwgb3IgdmljZSB2ZXJzYSkgYXJlIGluY29ycG9yYXRlZCBpbiB0aGUKK2ZpbmFsIHJlc3VsdCB2ZXJiYXRpbS4gIFdoZW4gYm90aCBzaWRlcyBtYWRlIGNoYW5nZXMgdG8gdGhlIHNhbWUgYXJlYSwKK2hvd2V2ZXIsIGdpdCBjYW5ub3QgcmFuZG9tbHkgcGljayBvbmUgc2lkZSBvdmVyIHRoZSBvdGhlciwgYW5kIGFza3MgeW91IHRvCityZXNvbHZlIGl0IGJ5IGxlYXZpbmcgd2hhdCBib3RoIHNpZGVzIGRpZCB0byB0aGF0IGFyZWEuCisKK0J5IGRlZmF1bHQsIGdpdCB1c2VzIHRoZSBzYW1lIHN0eWxlIGFzIHRoYXQgaXMgdXNlZCBieSAibWVyZ2UiIHByb2dyYW0KK2Zyb20gdGhlIFJDUyBzdWl0ZSB0byBwcmVzZW50IHN1Y2ggYSBjb25mbGljdGVkIGh1bmssIGxpa2UgdGhpczoKKworLS0tLS0tLS0tLS0tCitIZXJlIGFyZSBsaW5lcyB0aGF0IGFyZSBlaXRoZXIgdW5jaGFuZ2VkIGZyb20gdGhlIGNvbW1vbgorYW5jZXN0b3IsIG9yIGNsZWFubHkgcmVzb2x2ZWQgYmVjYXVzZSBvbmx5IG9uZSBzaWRlIGNoYW5nZWQuCis8PDw8PDw8IHlvdXJzOnNhbXBsZS50eHQKK0NvbmZsaWN0IHJlc29sdXRpb24gaXMgaGFyZDsKK2xldCdzIGdvIHNob3BwaW5nLgorPT09PT09PQorR2l0IG1ha2VzIGNvbmZsaWN0IHJlc29sdXRpb24gZWFzeS4KKz4+Pj4+Pj4gdGhlaXJzOnNhbXBsZS50eHQKK0FuZCBoZXJlIGlzIGFub3RoZXIgbGluZSB0aGF0IGlzIGNsZWFubHkgcmVzb2x2ZWQgb3IgdW5tb2RpZmllZC4KKy0tLS0tLS0tLS0tLQorCitUaGUgYXJlYSB3aGVyZSBhIHBhaXIgb2YgY29uZmxpY3RpbmcgY2hhbmdlcyBoYXBwZW5lZCBpcyBtYXJrZWQgd2l0aCBtYXJrZXJzCisiYDw8PDw8PDxgIiwgImA9PT09PT09YCIsIGFuZCAiYD4+Pj4+Pj5gIi4gIFRoZSBwYXJ0IGJlZm9yZSB0aGUgImA9PT09PT09YCIKK2lzIHR5cGljYWxseSB5b3VyIHNpZGUsIGFuZCB0aGUgcGFydCBhZnRlcndhcmRzIGlzIHR5cGljYWxseSB0aGVpciBzaWRlLgorCitUaGUgZGVmYXVsdCBmb3JtYXQgZG9lcyBub3Qgc2hvdyB3aGF0IHRoZSBvcmlnaW5hbCBzYWlkIGluIHRoZSBjb25mbGljdGluZworYXJlYS4gIFlvdSBjYW5ub3QgdGVsbCBob3cgbWFueSBsaW5lcyBhcmUgZGVsZXRlZCBhbmQgcmVwbGFjZWQgd2l0aAorQmFyYmllJ3MgcmVtYXJrIG9uIHlvdXIgc2lkZS4gIFRoZSBvbmx5IHRoaW5nIHlvdSBjYW4gdGVsbCBpcyB0aGF0IHlvdXIKK3NpZGUgd2FudHMgdG8gc2F5IGl0IGlzIGhhcmQgYW5kIHlvdSdkIHByZWZlciB0byBnbyBzaG9wcGluZywgd2hpbGUgdGhlCitvdGhlciBzaWRlIHdhbnRzIHRvIGNsYWltIGl0IGlzIGVhc3kuCisKK0FuIGFsdGVybmF0aXZlIHN0eWxlIGNhbiBiZSB1c2VkIGJ5IHNldHRpbmcgdGhlICJtZXJnZS5jb25mbGljdHN0eWxlIgorY29uZmlndXJhdGlvbiB2YXJpYWJsZSB0byAiZGlmZjMiLiAgSW4gImRpZmYzIiBzdHlsZSwgdGhlIGFib3ZlIGNvbmZsaWN0CittYXkgbG9vayBsaWtlIHRoaXM6CisKKy0tLS0tLS0tLS0tLQorSGVyZSBhcmUgbGluZXMgdGhhdCBhcmUgZWl0aGVyIHVuY2hhbmdlZCBmcm9tIHRoZSBjb21tb24KK2FuY2VzdG9yLCBvciBjbGVhbmx5IHJlc29sdmVkIGJlY2F1c2Ugb25seSBvbmUgc2lkZSBjaGFuZ2VkLgorPDw8PDw8PCB5b3VyczpzYW1wbGUudHh0CitDb25mbGljdCByZXNvbHV0aW9uIGlzIGhhcmQ7CitsZXQncyBnbyBzaG9wcGluZy4KK3x8fHx8fHwKK0NvbmZsaWN0IHJlc29sdXRpb24gaXMgaGFyZC4KKz09PT09PT0KK0dpdCBtYWtlcyBjb25mbGljdCByZXNvbHV0aW9uIGVhc3kuCis+Pj4+Pj4+IHRoZWlyczpzYW1wbGUudHh0CitBbmQgaGVyZSBpcyBhbm90aGVyIGxpbmUgdGhhdCBpcyBjbGVhbmx5IHJlc29sdmVkIG9yIHVubW9kaWZpZWQuCistLS0tLS0tLS0tLS0KKworSW4gYWRkaXRpb24gdG8gdGhlICJgPDw8PDw8PGAiLCAiYD09PT09PT1gIiwgYW5kICJgPj4+Pj4+PmAiIG1hcmtlcnMsIGl0IHVzZXMKK2Fub3RoZXIgImB8fHx8fHx8YCIgbWFya2VyIHRoYXQgaXMgZm9sbG93ZWQgYnkgdGhlIG9yaWdpbmFsIHRleHQuICBZb3UgY2FuCit0ZWxsIHRoYXQgdGhlIG9yaWdpbmFsIGp1c3Qgc3RhdGVkIGEgZmFjdCwgYW5kIHlvdXIgc2lkZSBzaW1wbHkgZ2F2ZSBpbiB0bwordGhhdCBzdGF0ZW1lbnQgYW5kIGdhdmUgdXAsIHdoaWxlIHRoZSBvdGhlciBzaWRlIHRyaWVkIHRvIGhhdmUgYSBtb3JlCitwb3NpdGl2ZSBhdHRpdHVkZS4gIFlvdSBjYW4gc29tZXRpbWVzIGNvbWUgdXAgd2l0aCBhIGJldHRlciByZXNvbHV0aW9uIGJ5Cit2aWV3aW5nIHRoZSBvcmlnaW5hbC4KKworCitIT1cgVE8gUkVTT0xWRSBDT05GTElDVFMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiBBZnRlciBzZWVpbmcgYSBjb25mbGljdCwgeW91IGNhbiBkbyB0d28gdGhpbmdzOgogCi0gKiBEZWNpZGUgbm90IHRvIG1lcmdlLiAgVGhlIG9ubHkgY2xlYW4tdXAgeW91IG5lZWQgYXJlIHRvIHJlc2V0CisgKiBEZWNpZGUgbm90IHRvIG1lcmdlLiAgVGhlIG9ubHkgY2xlYW4tdXBzIHlvdSBuZWVkIGFyZSB0byByZXNldAogICAgdGhlIGluZGV4IGZpbGUgdG8gdGhlIGBIRUFEYCBjb21taXQgdG8gcmV2ZXJzZSAyLiBhbmQgdG8gY2xlYW4KICAgIHVwIHdvcmtpbmcgdHJlZSBjaGFuZ2VzIG1hZGUgYnkgMi4gYW5kIDMuOyAnZ2l0LXJlc2V0IC0taGFyZCcgY2FuCiAgICBiZSB1c2VkIGZvciB0aGlzLgogCi0gKiBSZXNvbHZlIHRoZSBjb25mbGljdHMuICBgZ2l0IGRpZmZgIHdvdWxkIHJlcG9ydCBvbmx5IHRoZQotICAgY29uZmxpY3RpbmcgcGF0aHMgYmVjYXVzZSBvZiB0aGUgYWJvdmUgMi4gYW5kIDMuCi0gICBFZGl0IHRoZSB3b3JraW5nIHRyZWUgZmlsZXMgaW50byBhIGRlc2lyYWJsZSBzaGFwZQotICAgKCdnaXQgbWVyZ2V0b29sJyBjYW4gZWFzZSB0aGlzIHRhc2spLCAnZ2l0LWFkZCcgb3IgJ2dpdC1ybScKLSAgIHRoZW0sIHRvIG1ha2UgdGhlIGluZGV4IGZpbGUgY29udGFpbiB3aGF0IHRoZSBtZXJnZSByZXN1bHQKLSAgIHNob3VsZCBiZSwgYW5kIHJ1biAnZ2l0LWNvbW1pdCcgdG8gY29tbWl0IHRoZSByZXN1bHQuCisgKiBSZXNvbHZlIHRoZSBjb25mbGljdHMuICBHaXQgd2lsbCBtYXJrIHRoZSBjb25mbGljdHMgaW4KKyAgIHRoZSB3b3JraW5nIHRyZWUuICBFZGl0IHRoZSBmaWxlcyBpbnRvIHNoYXBlIGFuZAorICAgJ2dpdC1hZGQnIHRoZW0gdG8gdGhlIGluZGV4LiAgVXNlICdnaXQtY29tbWl0JyB0byBzZWFsIHRoZSBkZWFsLgogCitZb3UgY2FuIHdvcmsgdGhyb3VnaCB0aGUgY29uZmxpY3Qgd2l0aCBhIG51bWJlciBvZiB0b29sczoKKworICogVXNlIGEgbWVyZ2V0b29sLiAgJ2dpdCBtZXJnZXRvb2wnIHRvIGxhdW5jaCBhIGdyYXBoaWNhbAorICAgbWVyZ2V0b29sIHdoaWNoIHdpbGwgd29yayB5b3UgdGhyb3VnaCB0aGUgbWVyZ2UuCisKKyAqIExvb2sgYXQgdGhlIGRpZmZzLiAgJ2dpdCBkaWZmJyB3aWxsIHNob3cgYSB0aHJlZS13YXkgZGlmZiwKKyAgIGhpZ2hsaWdodGluZyBjaGFuZ2VzIGZyb20gYm90aCB0aGUgSEVBRCBhbmQgcmVtb3RlIHZlcnNpb25zLgorCisgKiBMb29rIGF0IHRoZSBkaWZmcyBvbiB0aGVpciBvd24uICdnaXQgbG9nIC0tbWVyZ2UgLXAgPHBhdGg+JworICAgd2lsbCBzaG93IGRpZmZzIGZpcnN0IGZvciB0aGUgSEVBRCB2ZXJzaW9uIGFuZCB0aGVuIHRoZQorICAgcmVtb3RlIHZlcnNpb24uCisKKyAqIExvb2sgYXQgdGhlIG9yaWdpbmFscy4gICdnaXQgc2hvdyA6MTpmaWxlbmFtZScgc2hvd3MgdGhlCisgICBjb21tb24gYW5jZXN0b3IsICdnaXQgc2hvdyA6MjpmaWxlbmFtZScgc2hvd3MgdGhlIEhFQUQKKyAgIHZlcnNpb24gYW5kICdnaXQgc2hvdyA6MzpmaWxlbmFtZScgc2hvd3MgdGhlIHJlbW90ZSB2ZXJzaW9uLgogCiBTRUUgQUxTTwogLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LW1lcmdldG9vbC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZXRvb2wudHh0CmluZGV4IGUwYjI3MDMuLjYwMmU3YzYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LW1lcmdldG9vbC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2V0b29sLnR4dApAQCAtMzgsNyArMzgsNyBAQAogYG1lcmdldG9vbC5rZGlmZjMucGF0aGAuIE90aGVyd2lzZSwgJ2dpdC1tZXJnZXRvb2wnIGFzc3VtZXMgdGhlCiB0b29sIGlzIGF2YWlsYWJsZSBpbiBQQVRILgogKwotSW5zdGVhZCBvZiBydW5uaW5nIG9uZSBvZiB0aGUga25vd24gbWVyZ2UgdG9vbCBwcm9ncmFtcworSW5zdGVhZCBvZiBydW5uaW5nIG9uZSBvZiB0aGUga25vd24gbWVyZ2UgdG9vbCBwcm9ncmFtcywKICdnaXQtbWVyZ2V0b29sJyBjYW4gYmUgY3VzdG9taXplZCB0byBydW4gYW4gYWx0ZXJuYXRpdmUgcHJvZ3JhbQogYnkgc3BlY2lmeWluZyB0aGUgY29tbWFuZCBsaW5lIHRvIGludm9rZSBpbiBhIGNvbmZpZ3VyYXRpb24KIHZhcmlhYmxlIGBtZXJnZXRvb2wuPHRvb2w+LmNtZGAuCkBAIC01NSw3ICs1NSw3IEBACiBtZXJnZSByZXNvbHV0aW9uLgogKwogSWYgdGhlIGN1c3RvbSBtZXJnZSB0b29sIGNvcnJlY3RseSBpbmRpY2F0ZXMgdGhlIHN1Y2Nlc3Mgb2YgYQotbWVyZ2UgcmVzb2x1dGlvbiB3aXRoIGl0cyBleGl0IGNvZGUgdGhlbiB0aGUgY29uZmlndXJhdGlvbgorbWVyZ2UgcmVzb2x1dGlvbiB3aXRoIGl0cyBleGl0IGNvZGUsIHRoZW4gdGhlIGNvbmZpZ3VyYXRpb24KIHZhcmlhYmxlIGBtZXJnZXRvb2wuPHRvb2w+LnRydXN0RXhpdENvZGVgIGNhbiBiZSBzZXQgdG8gYHRydWVgLgogT3RoZXJ3aXNlLCAnZ2l0LW1lcmdldG9vbCcgd2lsbCBwcm9tcHQgdGhlIHVzZXIgdG8gaW5kaWNhdGUgdGhlCiBzdWNjZXNzIG9mIHRoZSByZXNvbHV0aW9uIGFmdGVyIHRoZSBjdXN0b20gdG9vbCBoYXMgZXhpdGVkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtcHJ1bmUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcHJ1bmUudHh0CmluZGV4IDU0ZjFkYWIuLmRhNjA1NWQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXBydW5lLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1wcnVuZS50eHQKQEAgLTgsNyArOCw3IEBACiAKIFNZTk9QU0lTCiAtLS0tLS0tLQotJ2dpdC1wcnVuZScgWy1uXSBbLS1leHBpcmUgPGV4cGlyZT5dIFstLV0gWzxoZWFkPi4uLl0KKydnaXQtcHJ1bmUnIFstbl0gWy12XSBbLS1leHBpcmUgPGV4cGlyZT5dIFstLV0gWzxoZWFkPi4uLl0KIAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCkBAIC0zNCw2ICszNCw5IEBACiAJRG8gbm90IHJlbW92ZSBhbnl0aGluZzsganVzdCByZXBvcnQgd2hhdCBpdCB3b3VsZAogCXJlbW92ZS4KIAorLXY6OgorCVJlcG9ydCBhbGwgcmVtb3ZlZCBvYmplY3RzLgorCiBcLS06OgogCURvIG5vdCBpbnRlcnByZXQgYW55IG1vcmUgYXJndW1lbnRzIGFzIG9wdGlvbnMuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXB1c2gudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcHVzaC50eHQKaW5kZXggNjE1MGIxYi4uYWM2NDIxMSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtcHVzaC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtcHVzaC50eHQKQEAgLTksNyArOSw3IEBACiBTWU5PUFNJUwogLS0tLS0tLS0KIFt2ZXJzZV0KLSdnaXQgcHVzaCcgWy0tYWxsIHwgLS1taXJyb3JdIFstLWRyeS1ydW5dIFstLXRhZ3NdIFstLXJlY2VpdmUtcGFjaz08Z2l0LXJlY2VpdmUtcGFjaz5dCisnZ2l0IHB1c2gnIFstLWFsbCB8IC0tbWlycm9yIHwgLS10YWdzXSBbLS1kcnktcnVuXSBbLS1yZWNlaXZlLXBhY2s9PGdpdC1yZWNlaXZlLXBhY2s+XQogCSAgIFstLXJlcG89PHJlcG9zaXRvcnk+XSBbLWYgfCAtLWZvcmNlXSBbLXYgfCAtLXZlcmJvc2VdCiAJICAgWzxyZXBvc2l0b3J5PiA8cmVmc3BlYz4uLi5dCiAKQEAgLTI4LDM2ICsyOCwzOSBAQAogLS0tLS0tLQogPHJlcG9zaXRvcnk+OjoKIAlUaGUgInJlbW90ZSIgcmVwb3NpdG9yeSB0aGF0IGlzIGRlc3RpbmF0aW9uIG9mIGEgcHVzaAotCW9wZXJhdGlvbi4gIFNlZSB0aGUgc2VjdGlvbiA8PFVSTFMsR0lUIFVSTFM+PiBiZWxvdy4KKwlvcGVyYXRpb24uICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgZWl0aGVyIGEgVVJMCisJKHNlZSB0aGUgc2VjdGlvbiA8PFVSTFMsR0lUIFVSTFM+PiBiZWxvdykgb3IgdGhlIG5hbWUKKwlvZiBhIHJlbW90ZSAoc2VlIHRoZSBzZWN0aW9uIDw8UkVNT1RFUyxSRU1PVEVTPj4gYmVsb3cpLgogCiA8cmVmc3BlYz4uLi46OgotCVRoZSBjYW5vbmljYWwgZm9ybWF0IG9mIGEgPHJlZnNwZWM+IHBhcmFtZXRlciBpcwotCWArPzxzcmM+Ojxkc3Q+YDsgdGhhdCBpcywgYW4gb3B0aW9uYWwgcGx1cyBge3BsdXN9YCwgZm9sbG93ZWQKLQlieSB0aGUgc291cmNlIHJlZiwgZm9sbG93ZWQgYnkgYSBjb2xvbiBgOmAsIGZvbGxvd2VkIGJ5Ci0JdGhlIGRlc3RpbmF0aW9uIHJlZi4KKwlUaGUgZm9ybWF0IG9mIGEgPHJlZnNwZWM+IHBhcmFtZXRlciBpcyBhbiBvcHRpb25hbCBwbHVzCisJYHtwbHVzfWAsIGZvbGxvd2VkIGJ5IHRoZSBzb3VyY2UgcmVmIDxzcmM+LCBmb2xsb3dlZAorCWJ5IGEgY29sb24gYDpgLCBmb2xsb3dlZCBieSB0aGUgZGVzdGluYXRpb24gcmVmIDxkc3Q+LgorCUl0IGlzIHVzZWQgdG8gc3BlY2lmeSB3aXRoIHdoYXQgPHNyYz4gb2JqZWN0IHRoZSA8ZHN0PiByZWYKKwlpbiB0aGUgcmVtb3RlIHJlcG9zaXRvcnkgaXMgdG8gYmUgdXBkYXRlZC4KICsKLVRoZSA8c3JjPiBzaWRlIHJlcHJlc2VudHMgdGhlIHNvdXJjZSBicmFuY2ggKG9yIGFyYml0cmFyeQotIlNIQTEgZXhwcmVzc2lvbiIsIHN1Y2ggYXMgYG1hc3Rlcn40YCAoZm91ciBwYXJlbnRzIGJlZm9yZSB0aGUKLXRpcCBvZiBgbWFzdGVyYCBicmFuY2gpOyBzZWUgbGlua2dpdDpnaXQtcmV2LXBhcnNlWzFdKSB0aGF0IHlvdQotd2FudCB0byBwdXNoLiAgVGhlIDxkc3Q+IHNpZGUgcmVwcmVzZW50cyB0aGUgZGVzdGluYXRpb24gbG9jYXRpb24uCitUaGUgPHNyYz4gaXMgb2Z0ZW4gdGhlIG5hbWUgb2YgdGhlIGJyYW5jaCB5b3Ugd291bGQgd2FudCB0byBwdXNoLCBidXQKK2l0IGNhbiBiZSBhbnkgYXJiaXRyYXJ5ICJTSEEtMSBleHByZXNzaW9uIiwgc3VjaCBhcyBgbWFzdGVyfjRgIG9yCitgSEVBRGAgKHNlZSBsaW5rZ2l0OmdpdC1yZXYtcGFyc2VbMV0pLgogKwotVGhlIGxvY2FsIHJlZiB0aGF0IG1hdGNoZXMgPHNyYz4gaXMgdXNlZAotdG8gZmFzdCBmb3J3YXJkIHRoZSByZW1vdGUgcmVmIHRoYXQgbWF0Y2hlcyA8ZHN0PiAob3IsIGlmIG5vIDxkc3Q+IHdhcwotc3BlY2lmaWVkLCB0aGUgc2FtZSByZWYgdGhhdCA8c3JjPiByZWZlcnJlZCB0byBsb2NhbGx5KS4gIElmCi10aGUgb3B0aW9uYWwgbGVhZGluZyBwbHVzIGArYCBpcyB1c2VkLCB0aGUgcmVtb3RlIHJlZiBpcyB1cGRhdGVkCi1ldmVuIGlmIGl0IGRvZXMgbm90IHJlc3VsdCBpbiBhIGZhc3QgZm9yd2FyZCB1cGRhdGUuCitUaGUgPGRzdD4gdGVsbHMgd2hpY2ggcmVmIG9uIHRoZSByZW1vdGUgc2lkZSBpcyB1cGRhdGVkIHdpdGggdGhpcworcHVzaC4gQXJiaXRyYXJ5IGV4cHJlc3Npb25zIGNhbm5vdCBiZSB1c2VkIGhlcmUsIGFuIGFjdHVhbCByZWYgbXVzdAorYmUgbmFtZWQuIElmIGA6YDxkc3Q+IGlzIG9taXR0ZWQsIHRoZSBzYW1lIHJlZiBhcyA8c3JjPiB3aWxsIGJlCit1cGRhdGVkLgorKworVGhlIG9iamVjdCByZWZlcmVuY2VkIGJ5IDxzcmM+IGlzIHVzZWQgdG8gZmFzdCBmb3J3YXJkIHRoZSByZWYgPGRzdD4KK29uIHRoZSByZW1vdGUgc2lkZS4gSWYgdGhlIG9wdGlvbmFsIGxlYWRpbmcgcGx1cyBge3BsdXN9YCBpcyB1c2VkLCB0aGUKK3JlbW90ZSByZWYgaXMgdXBkYXRlZCBldmVuIGlmIGl0IGRvZXMgbm90IHJlc3VsdCBpbiBhIGZhc3QgZm9yd2FyZAordXBkYXRlLgogKwogYHRhZyA8dGFnPmAgbWVhbnMgdGhlIHNhbWUgYXMgYHJlZnMvdGFncy88dGFnPjpyZWZzL3RhZ3MvPHRhZz5gLgogKwotQSBwYXJhbWV0ZXIgPHJlZj4gd2l0aG91dCBhIGNvbG9uIHB1c2hlcyB0aGUgPHJlZj4gZnJvbSB0aGUgc291cmNlCi1yZXBvc2l0b3J5IHRvIHRoZSBkZXN0aW5hdGlvbiByZXBvc2l0b3J5IHVuZGVyIHRoZSBzYW1lIG5hbWUuCi0rCiBQdXNoaW5nIGFuIGVtcHR5IDxzcmM+IGFsbG93cyB5b3UgdG8gZGVsZXRlIHRoZSA8ZHN0PiByZWYgZnJvbQogdGhlIHJlbW90ZSByZXBvc2l0b3J5LgogKwogVGhlIHNwZWNpYWwgcmVmc3BlYyBgOmAgKG9yIGArOmAgdG8gYWxsb3cgbm9uLWZhc3QgZm9yd2FyZCB1cGRhdGVzKQotZGlyZWN0cyBnaXQgdG8gcHVzaCAibWF0Y2hpbmciIGhlYWRzOiBmb3IgZXZlcnkgaGVhZCB0aGF0IGV4aXN0cyBvbgotdGhlIGxvY2FsIHNpZGUsIHRoZSByZW1vdGUgc2lkZSBpcyB1cGRhdGVkIGlmIGEgaGVhZCBvZiB0aGUgc2FtZSBuYW1lCitkaXJlY3RzIGdpdCB0byBwdXNoICJtYXRjaGluZyIgYnJhbmNoZXM6IGZvciBldmVyeSBicmFuY2ggdGhhdCBleGlzdHMgb24KK3RoZSBsb2NhbCBzaWRlLCB0aGUgcmVtb3RlIHNpZGUgaXMgdXBkYXRlZCBpZiBhIGJyYW5jaCBvZiB0aGUgc2FtZSBuYW1lCiBhbHJlYWR5IGV4aXN0cyBvbiB0aGUgcmVtb3RlIHNpZGUuICBUaGlzIGlzIHRoZSBkZWZhdWx0IG9wZXJhdGlvbiBtb2RlCiBpZiBubyBleHBsaWNpdCByZWZzcGVjIGlzIGZvdW5kICh0aGF0IGlzIG5laXRoZXIgb24gdGhlIGNvbW1hbmQgbGluZQogbm9yIGluIGFueSBQdXNoIGxpbmUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgcmVtb3RlcyBmaWxlLS0tc2VlIGJlbG93KS4KQEAgLTg2LDE0ICs4OSwxMiBAQAogCWxpbmUuCiAKIC0tcmVjZWl2ZS1wYWNrPTxnaXQtcmVjZWl2ZS1wYWNrPjo6CistLWV4ZWM9PGdpdC1yZWNlaXZlLXBhY2s+OjoKIAlQYXRoIHRvIHRoZSAnZ2l0LXJlY2VpdmUtcGFjaycgcHJvZ3JhbSBvbiB0aGUgcmVtb3RlCiAJZW5kLiAgU29tZXRpbWVzIHVzZWZ1bCB3aGVuIHB1c2hpbmcgdG8gYSByZW1vdGUKIAlyZXBvc2l0b3J5IG92ZXIgc3NoLCBhbmQgeW91IGRvIG5vdCBoYXZlIHRoZSBwcm9ncmFtIGluCiAJYSBkaXJlY3Rvcnkgb24gdGhlIGRlZmF1bHQgJFBBVEguCiAKLS0tZXhlYz08Z2l0LXJlY2VpdmUtcGFjaz46OgotCVNhbWUgYXMgXC0tcmVjZWl2ZS1wYWNrPTxnaXQtcmVjZWl2ZS1wYWNrPi4KLQogLWY6OgogLS1mb3JjZTo6CiAJVXN1YWxseSwgdGhlIGNvbW1hbmQgcmVmdXNlcyB0byB1cGRhdGUgYSByZW1vdGUgcmVmIHRoYXQgaXMKQEAgLTE5MSw5ICsxOTIsOSBAQAogCXdpdGggaXQuICBJZiBgbWFzdGVyYCBkaWQgbm90IGV4aXN0IHJlbW90ZWx5LCBpdCB3b3VsZCBiZQogCWNyZWF0ZWQuCiAKLWdpdCBwdXNoIG9yaWdpbiA6ZXhwZXJpbWVudGFsOjoKLQlGaW5kIGEgcmVmIHRoYXQgbWF0Y2hlcyBgZXhwZXJpbWVudGFsYCBpbiB0aGUgYG9yaWdpbmAgcmVwb3NpdG9yeQotCShlLmcuIGByZWZzL2hlYWRzL2V4cGVyaW1lbnRhbGApLCBhbmQgZGVsZXRlIGl0LgorZ2l0IHB1c2ggb3JpZ2luIEhFQUQ6OgorCUEgaGFuZHkgd2F5IHRvIHB1c2ggdGhlIGN1cnJlbnQgYnJhbmNoIHRvIHRoZSBzYW1lIG5hbWUgb24gdGhlCisJcmVtb3RlLgogCiBnaXQgcHVzaCBvcmlnaW4gbWFzdGVyOnNhdGVsbGl0ZS9tYXN0ZXIgZGV2OnNhdGVsbGl0ZS9kZXY6OgogCVVzZSB0aGUgc291cmNlIHJlZiB0aGF0IG1hdGNoZXMgYG1hc3RlcmAgKGUuZy4gYHJlZnMvaGVhZHMvbWFzdGVyYCkKQEAgLTIwMSw2ICsyMDIsMTEgQEAKIAlgcmVmcy9yZW1vdGVzL3NhdGVsbGl0ZS9tYXN0ZXJgKSBpbiB0aGUgYG9yaWdpbmAgcmVwb3NpdG9yeSwgdGhlbgogCWRvIHRoZSBzYW1lIGZvciBgZGV2YCBhbmQgYHNhdGVsbGl0ZS9kZXZgLgogCitnaXQgcHVzaCBvcmlnaW4gSEVBRDptYXN0ZXI6OgorCVB1c2ggdGhlIGN1cnJlbnQgYnJhbmNoIHRvIHRoZSByZW1vdGUgcmVmIG1hdGNoaW5nIGBtYXN0ZXJgIGluIHRoZQorCWBvcmlnaW5gIHJlcG9zaXRvcnkuIFRoaXMgZm9ybSBpcyBjb252ZW5pZW50IHRvIHB1c2ggdGhlIGN1cnJlbnQKKwlicmFuY2ggd2l0aG91dCB0aGlua2luZyBhYm91dCBpdHMgbG9jYWwgbmFtZS4KKwogZ2l0IHB1c2ggb3JpZ2luIG1hc3RlcjpyZWZzL2hlYWRzL2V4cGVyaW1lbnRhbDo6CiAJQ3JlYXRlIHRoZSBicmFuY2ggYGV4cGVyaW1lbnRhbGAgaW4gdGhlIGBvcmlnaW5gIHJlcG9zaXRvcnkKIAlieSBjb3B5aW5nIHRoZSBjdXJyZW50IGBtYXN0ZXJgIGJyYW5jaC4gIFRoaXMgZm9ybSBpcyBvbmx5CkBAIC0yMDgsNiArMjE0LDExIEBACiAJdGhlIGxvY2FsIG5hbWUgYW5kIHRoZSByZW1vdGUgbmFtZSBhcmUgZGlmZmVyZW50OyBvdGhlcndpc2UsCiAJdGhlIHJlZiBuYW1lIG9uIGl0cyBvd24gd2lsbCB3b3JrLgogCitnaXQgcHVzaCBvcmlnaW4gOmV4cGVyaW1lbnRhbDo6CisJRmluZCBhIHJlZiB0aGF0IG1hdGNoZXMgYGV4cGVyaW1lbnRhbGAgaW4gdGhlIGBvcmlnaW5gIHJlcG9zaXRvcnkKKwkoZS5nLiBgcmVmcy9oZWFkcy9leHBlcmltZW50YWxgKSwgYW5kIGRlbGV0ZSBpdC4KKworCiBBdXRob3IKIC0tLS0tLQogV3JpdHRlbiBieSBKdW5pbyBDIEhhbWFubyA8Z2l0c3RlckBwb2JveC5jb20+LCBsYXRlciByZXdyaXR0ZW4gaW4gQwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtcmVhZC10cmVlLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXJlYWQtdHJlZS50eHQKaW5kZXggMzA5ZGVhYy4uNzE2MGZhMSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtcmVhZC10cmVlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1yZWFkLXRyZWUudHh0CkBAIC0yMTIsNyArMjEyLDcgQEAKIAogQ2FzZSAjMyBpcyBzbGlnaHRseSB0cmlja3kgYW5kIG5lZWRzIGV4cGxhbmF0aW9uLiAgVGhlIHJlc3VsdCBmcm9tIHRoaXMKIHJ1bGUgbG9naWNhbGx5IHNob3VsZCBiZSB0byByZW1vdmUgdGhlIHBhdGggaWYgdGhlIHVzZXIgc3RhZ2VkIHRoZSByZW1vdmFsCi1vZiB0aGUgcGF0aCBhbmQgdGhlbiBzd2ljaGluZyB0byBhIG5ldyBicmFuY2guICBUaGF0IGhvd2V2ZXIgd2lsbCBwcmV2ZW50CitvZiB0aGUgcGF0aCBhbmQgdGhlbiBzd2l0Y2hpbmcgdG8gYSBuZXcgYnJhbmNoLiAgVGhhdCBob3dldmVyIHdpbGwgcHJldmVudAogdGhlIGluaXRpYWwgY2hlY2tvdXQgZnJvbSBoYXBwZW5pbmcsIHNvIHRoZSBydWxlIGlzIG1vZGlmaWVkIHRvIHVzZSBNIChuZXcKIHRyZWUpIG9ubHkgd2hlbiB0aGUgY29udGVudHMgb2YgdGhlIGluZGV4IGlzIGVtcHR5LiAgT3RoZXJ3aXNlIHRoZSByZW1vdmFsCiBvZiB0aGUgcGF0aCBpcyBrZXB0IGFzIGxvbmcgYXMgJEggYW5kICRNIGFyZSB0aGUgc2FtZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXJlYmFzZS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1yZWJhc2UudHh0CmluZGV4IDU5YzFiMDIuLmM4YWQ4NmEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXJlYmFzZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtcmViYXNlLnR4dApAQCAtOSw3ICs5LDcgQEAKIC0tLS0tLS0tCiBbdmVyc2VdCiAnZ2l0IHJlYmFzZScgWy1pIHwgLS1pbnRlcmFjdGl2ZV0gWy12IHwgLS12ZXJib3NlXSBbLW0gfCAtLW1lcmdlXQotCVstcyA8c3RyYXRlZ3k+IHwgLS1zdHJhdGVneT08c3RyYXRlZ3k+XQorCVstcyA8c3RyYXRlZ3k+IHwgLS1zdHJhdGVneT08c3RyYXRlZ3k+XSBbLS1uby12ZXJpZnldCiAJWy1DPG4+XSBbIC0td2hpdGVzcGFjZT08b3B0aW9uPl0gWy1wIHwgLS1wcmVzZXJ2ZS1tZXJnZXNdCiAJWy0tb250byA8bmV3YmFzZT5dIDx1cHN0cmVhbT4gWzxicmFuY2g+XQogJ2dpdCByZWJhc2UnIC0tY29udGludWUgfCAtLXNraXAgfCAtLWFib3J0CkBAIC05Miw3ICs5Miw3IEBACiBmcm9tIHRoZSBsYXR0ZXIgYnJhbmNoLCB1c2luZyBgcmViYXNlIC0tb250b2AuCiAKIEZpcnN0IGxldCdzIGFzc3VtZSB5b3VyICd0b3BpYycgaXMgYmFzZWQgb24gYnJhbmNoICduZXh0Jy4KLUZvciBleGFtcGxlIGZlYXR1cmUgZGV2ZWxvcGVkIGluICd0b3BpYycgZGVwZW5kcyBvbiBzb21lCitGb3IgZXhhbXBsZSwgYSBmZWF0dXJlIGRldmVsb3BlZCBpbiAndG9waWMnIGRlcGVuZHMgb24gc29tZQogZnVuY3Rpb25hbGl0eSB3aGljaCBpcyBmb3VuZCBpbiAnbmV4dCcuCiAKIC0tLS0tLS0tLS0tLQpAQCAtMTAzLDkgKzEwMyw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby0tLW8tLS1vICB0b3BpYwogLS0tLS0tLS0tLS0tCiAKLVdlIHdvdWxkIHdhbnQgdG8gbWFrZSAndG9waWMnIGZvcmtlZCBmcm9tIGJyYW5jaCAnbWFzdGVyJywKLWZvciBleGFtcGxlIGJlY2F1c2UgdGhlIGZ1bmN0aW9uYWxpdHkgJ3RvcGljJyBicmFuY2ggZGVwZW5kIG9uCi1nb3QgbWVyZ2VkIGludG8gbW9yZSBzdGFibGUgJ21hc3RlcicgYnJhbmNoLCBsaWtlIHRoaXM6CitXZSB3YW50IHRvIG1ha2UgJ3RvcGljJyBmb3JrZWQgZnJvbSBicmFuY2ggJ21hc3Rlcic7IGZvciBleGFtcGxlLAorYmVjYXVzZSB0aGUgZnVuY3Rpb25hbGl0eSBvbiB3aGljaCAndG9waWMnIGRlcGVuZHMgd2FzIG1lcmdlZCBpbnRvIHRoZQorbW9yZSBzdGFibGUgJ21hc3RlcicgYnJhbmNoLiBXZSB3YW50IG91ciB0cmVlIHRvIGxvb2sgbGlrZSB0aGlzOgogCiAtLS0tLS0tLS0tLS0KICAgICBvLS0tby0tLW8tLS1vLS0tbyAgbWFzdGVyCkBAIC0yMzIsNiArMjMyLDkgQEAKIC0tdmVyYm9zZTo6CiAJRGlzcGxheSBhIGRpZmZzdGF0IG9mIHdoYXQgY2hhbmdlZCB1cHN0cmVhbSBzaW5jZSB0aGUgbGFzdCByZWJhc2UuCiAKKy0tbm8tdmVyaWZ5OjoKKwlUaGlzIG9wdGlvbiBieXBhc3NlcyB0aGUgcHJlLXJlYmFzZSBob29rLiAgU2VlIGFsc28gbGlua2dpdDpnaXRob29rc1s1XS4KKwogLUM8bj46OgogCUVuc3VyZSBhdCBsZWFzdCA8bj4gbGluZXMgb2Ygc3Vycm91bmRpbmcgY29udGV4dCBtYXRjaCBiZWZvcmUKIAlhbmQgYWZ0ZXIgZWFjaCBjaGFuZ2UuICBXaGVuIGZld2VyIGxpbmVzIG9mIHN1cnJvdW5kaW5nCkBAIC0yNTAsMTggKzI1MywxNiBAQAogCiAtcDo6CiAtLXByZXNlcnZlLW1lcmdlczo6Ci0JSW5zdGVhZCBvZiBpZ25vcmluZyBtZXJnZXMsIHRyeSB0byByZWNyZWF0ZSB0aGVtLiAgVGhpcyBvcHRpb24KLQlvbmx5IHdvcmtzIGluIGludGVyYWN0aXZlIG1vZGUuCisJSW5zdGVhZCBvZiBpZ25vcmluZyBtZXJnZXMsIHRyeSB0byByZWNyZWF0ZSB0aGVtLgogCiBpbmNsdWRlOjptZXJnZS1zdHJhdGVnaWVzLnR4dFtdCiAKIE5PVEVTCiAtLS0tLQotV2hlbiB5b3UgcmViYXNlIGEgYnJhbmNoLCB5b3UgYXJlIGNoYW5naW5nIGl0cyBoaXN0b3J5IGluIGEgd2F5IHRoYXQKLXdpbGwgY2F1c2UgcHJvYmxlbXMgZm9yIGFueW9uZSB3aG8gYWxyZWFkeSBoYXMgYSBjb3B5IG9mIHRoZSBicmFuY2gKLWluIHRoZWlyIHJlcG9zaXRvcnkgYW5kIHRyaWVzIHRvIHB1bGwgdXBkYXRlcyBmcm9tIHlvdS4gIFlvdSBzaG91bGQKLXVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB1c2luZyAnZ2l0LXJlYmFzZScgb24gYSByZXBvc2l0b3J5IHRoYXQKLXlvdSBzaGFyZS4KKworWW91IHNob3VsZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdXNpbmcgJ2dpdC1yZWJhc2UnIG9uIGEKK3JlcG9zaXRvcnkgdGhhdCB5b3Ugc2hhcmUuICBTZWUgYWxzbyBSRUNPVkVSSU5HIEZST00gVVBTVFJFQU0gUkVCQVNFCitiZWxvdy4KIAogV2hlbiB0aGUgZ2l0LXJlYmFzZSBjb21tYW5kIGlzIHJ1biwgaXQgd2lsbCBmaXJzdCBleGVjdXRlIGEgInByZS1yZWJhc2UiCiBob29rIGlmIG9uZSBleGlzdHMuICBZb3UgY2FuIHVzZSB0aGlzIGhvb2sgdG8gZG8gc2FuaXR5IGNoZWNrcyBhbmQKQEAgLTM5Niw2ICszOTcsMTI3IEBACiBhZnRlciBlYWNoIGNvbW1pdCwgdGVzdCwgYW5kIGFtZW5kIHRoZSBjb21taXQgaWYgZml4ZXMgYXJlIG5lY2Vzc2FyeS4KIAogCitSRUNPVkVSSU5HIEZST00gVVBTVFJFQU0gUkVCQVNFCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlYmFzaW5nIChvciBhbnkgb3RoZXIgZm9ybSBvZiByZXdyaXRpbmcpIGEgYnJhbmNoIHRoYXQgb3RoZXJzIGhhdmUKK2Jhc2VkIHdvcmsgb24gaXMgYSBiYWQgaWRlYTogYW55b25lIGRvd25zdHJlYW0gb2YgaXQgaXMgZm9yY2VkIHRvCittYW51YWxseSBmaXggdGhlaXIgaGlzdG9yeS4gIFRoaXMgc2VjdGlvbiBleHBsYWlucyBob3cgdG8gZG8gdGhlIGZpeAorZnJvbSB0aGUgZG93bnN0cmVhbSdzIHBvaW50IG9mIHZpZXcuICBUaGUgcmVhbCBmaXgsIGhvd2V2ZXIsIHdvdWxkIGJlCit0byBhdm9pZCByZWJhc2luZyB0aGUgdXBzdHJlYW0gaW4gdGhlIGZpcnN0IHBsYWNlLgorCitUbyBpbGx1c3RyYXRlLCBzdXBwb3NlIHlvdSBhcmUgaW4gYSBzaXR1YXRpb24gd2hlcmUgc29tZW9uZSBkZXZlbG9wcyBhCisnc3Vic3lzdGVtJyBicmFuY2gsIGFuZCB5b3UgYXJlIHdvcmtpbmcgb24gYSAndG9waWMnIHRoYXQgaXMgZGVwZW5kZW50CitvbiB0aGlzICdzdWJzeXN0ZW0nLiAgWW91IG1pZ2h0IGVuZCB1cCB3aXRoIGEgaGlzdG9yeSBsaWtlIHRoZQorZm9sbG93aW5nOgorCistLS0tLS0tLS0tLS0KKyAgICBvLS0tby0tLW8tLS1vLS0tby0tLW8tLS1vLS0tby0tLW8gIG1hc3RlcgorCSBcCisJICBvLS0tby0tLW8tLS1vLS0tbyAgc3Vic3lzdGVtCisJCQkgICBcCisJCQkgICAgKi0tLSotLS0qICB0b3BpYworLS0tLS0tLS0tLS0tCisKK0lmICdzdWJzeXN0ZW0nIGlzIHJlYmFzZWQgYWdhaW5zdCAnbWFzdGVyJywgdGhlIGZvbGxvd2luZyBoYXBwZW5zOgorCistLS0tLS0tLS0tLS0KKyAgICBvLS0tby0tLW8tLS1vLS0tby0tLW8tLS1vLS0tbyAgbWFzdGVyCisJIFwJCQkgXAorCSAgby0tLW8tLS1vLS0tby0tLW8JICBvJy0tbyctLW8nLS1vJy0tbycgIHN1YnN5c3RlbQorCQkJICAgXAorCQkJICAgICotLS0qLS0tKiAgdG9waWMKKy0tLS0tLS0tLS0tLQorCitJZiB5b3Ugbm93IGNvbnRpbnVlIGRldmVsb3BtZW50IGFzIHVzdWFsLCBhbmQgZXZlbnR1YWxseSBtZXJnZSAndG9waWMnCit0byAnc3Vic3lzdGVtJywgdGhlIGNvbW1pdHMgZnJvbSAnc3Vic3lzdGVtJyB3aWxsIHJlbWFpbiBkdXBsaWNhdGVkIGZvcmV2ZXI6CisKKy0tLS0tLS0tLS0tLQorICAgIG8tLS1vLS0tby0tLW8tLS1vLS0tby0tLW8tLS1vICBtYXN0ZXIKKwkgXAkJCSBcCisJICBvLS0tby0tLW8tLS1vLS0tbwkgIG8nLS1vJy0tbyctLW8nLS1vJy0tTQkgc3Vic3lzdGVtCisJCQkgICBcCQkJICAgICAvCisJCQkgICAgKi0tLSotLS0qLS4uLi4uLi4uLi4tKi0tKiAgdG9waWMKKy0tLS0tLS0tLS0tLQorCitTdWNoIGR1cGxpY2F0ZXMgYXJlIGdlbmVyYWxseSBmcm93bmVkIHVwb24gYmVjYXVzZSB0aGV5IGNsdXR0ZXIgdXAKK2hpc3RvcnksIG1ha2luZyBpdCBoYXJkZXIgdG8gZm9sbG93LiAgVG8gY2xlYW4gdGhpbmdzIHVwLCB5b3UgbmVlZCB0bwordHJhbnNwbGFudCB0aGUgY29tbWl0cyBvbiAndG9waWMnIHRvIHRoZSBuZXcgJ3N1YnN5c3RlbScgdGlwLCBpLmUuLAorcmViYXNlICd0b3BpYycuICBUaGlzIGJlY29tZXMgYSByaXBwbGUgZWZmZWN0OiBhbnlvbmUgZG93bnN0cmVhbSBmcm9tCisndG9waWMnIGlzIGZvcmNlZCB0byByZWJhc2UgdG9vLCBhbmQgc28gb24hCisKK1RoZXJlIGFyZSB0d28ga2luZHMgb2YgZml4ZXMsIGRpc2N1c3NlZCBpbiB0aGUgZm9sbG93aW5nIHN1YnNlY3Rpb25zOgorCitFYXN5IGNhc2U6IFRoZSBjaGFuZ2VzIGFyZSBsaXRlcmFsbHkgdGhlIHNhbWUuOjoKKworCVRoaXMgaGFwcGVucyBpZiB0aGUgJ3N1YnN5c3RlbScgcmViYXNlIHdhcyBhIHNpbXBsZSByZWJhc2UgYW5kCisJaGFkIG5vIGNvbmZsaWN0cy4KKworSGFyZCBjYXNlOiBUaGUgY2hhbmdlcyBhcmUgbm90IHRoZSBzYW1lLjo6CisKKwlUaGlzIGhhcHBlbnMgaWYgdGhlICdzdWJzeXN0ZW0nIHJlYmFzZSBoYWQgY29uZmxpY3RzLCBvciB1c2VkCisJYFwtLWludGVyYWN0aXZlYCB0byBvbWl0LCBlZGl0LCBvciBzcXVhc2ggY29tbWl0czsgb3IgaWYgdGhlCisJdXBzdHJlYW0gdXNlZCBvbmUgb2YgYGNvbW1pdCBcLS1hbWVuZGAsIGByZXNldGAsIG9yCisJYGZpbHRlci1icmFuY2hgLgorCisKK1RoZSBlYXN5IGNhc2UKK35+fn5+fn5+fn5+fn4KKworT25seSB3b3JrcyBpZiB0aGUgY2hhbmdlcyAocGF0Y2ggSURzIGJhc2VkIG9uIHRoZSBkaWZmIGNvbnRlbnRzKSBvbgorJ3N1YnN5c3RlbScgYXJlIGxpdGVyYWxseSB0aGUgc2FtZSBiZWZvcmUgYW5kIGFmdGVyIHRoZSByZWJhc2UKKydzdWJzeXN0ZW0nIGRpZC4KKworSW4gdGhhdCBjYXNlLCB0aGUgZml4IGlzIGVhc3kgYmVjYXVzZSAnZ2l0LXJlYmFzZScga25vd3MgdG8gc2tpcAorY2hhbmdlcyB0aGF0IGFyZSBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIG5ldyB1cHN0cmVhbS4gIFNvIGlmIHlvdSBzYXkKKyhhc3N1bWluZyB5b3UncmUgb24gJ3RvcGljJykKKy0tLS0tLS0tLS0tLQorICAgICQgZ2l0IHJlYmFzZSBzdWJzeXN0ZW0KKy0tLS0tLS0tLS0tLQoreW91IHdpbGwgZW5kIHVwIHdpdGggdGhlIGZpeGVkIGhpc3RvcnkKKy0tLS0tLS0tLS0tLQorICAgIG8tLS1vLS0tby0tLW8tLS1vLS0tby0tLW8tLS1vICBtYXN0ZXIKKwkJCQkgXAorCQkJCSAgbyctLW8nLS1vJy0tbyctLW8nICBzdWJzeXN0ZW0KKwkJCQkJCSAgIFwKKwkJCQkJCSAgICAqLS0tKi0tLSogIHRvcGljCistLS0tLS0tLS0tLS0KKworCitUaGUgaGFyZCBjYXNlCit+fn5+fn5+fn5+fn5+CisKK1RoaW5ncyBnZXQgbW9yZSBjb21wbGljYXRlZCBpZiB0aGUgJ3N1YnN5c3RlbScgY2hhbmdlcyBkbyBub3QgZXhhY3RseQorY29ycmVzcG9uZCB0byB0aGUgb25lcyBiZWZvcmUgdGhlIHJlYmFzZS4KKworTk9URTogV2hpbGUgYW4gImVhc3kgY2FzZSByZWNvdmVyeSIgc29tZXRpbWVzIGFwcGVhcnMgdG8gYmUgc3VjY2Vzc2Z1bAorICAgICAgZXZlbiBpbiB0aGUgaGFyZCBjYXNlLCBpdCBtYXkgaGF2ZSB1bmludGVuZGVkIGNvbnNlcXVlbmNlcy4gIEZvcgorICAgICAgZXhhbXBsZSwgYSBjb21taXQgdGhhdCB3YXMgcmVtb3ZlZCB2aWEgYGdpdCByZWJhc2UKKyAgICAgIFwtLWludGVyYWN0aXZlYCB3aWxsIGJlICoqcmVzdXJyZWN0ZWQqKiEKKworVGhlIGlkZWEgaXMgdG8gbWFudWFsbHkgdGVsbCAnZ2l0LXJlYmFzZScgIndoZXJlIHRoZSBvbGQgJ3N1YnN5c3RlbScKK2VuZGVkIGFuZCB5b3VyICd0b3BpYycgYmVnYW4iLCB0aGF0IGlzLCB3aGF0IHRoZSBvbGQgbWVyZ2UtYmFzZQorYmV0d2VlbiB0aGVtIHdhcy4gIFlvdSB3aWxsIGhhdmUgdG8gZmluZCBhIHdheSB0byBuYW1lIHRoZSBsYXN0IGNvbW1pdAorb2YgdGhlIG9sZCAnc3Vic3lzdGVtJywgZm9yIGV4YW1wbGU6CisKKyogV2l0aCB0aGUgJ3N1YnN5c3RlbScgcmVmbG9nOiBhZnRlciAnZ2l0LWZldGNoJywgdGhlIG9sZCB0aXAgb2YKKyAgJ3N1YnN5c3RlbScgaXMgYXQgYHN1YnN5c3RlbUBcezF9YC4gIFN1YnNlcXVlbnQgZmV0Y2hlcyB3aWxsCisgIGluY3JlYXNlIHRoZSBudW1iZXIuICAoU2VlIGxpbmtnaXQ6Z2l0LXJlZmxvZ1sxXS4pCisKKyogUmVsYXRpdmUgdG8gdGhlIHRpcCBvZiAndG9waWMnOiBrbm93aW5nIHRoYXQgeW91ciAndG9waWMnIGhhcyB0aHJlZQorICBjb21taXRzLCB0aGUgb2xkIHRpcCBvZiAnc3Vic3lzdGVtJyBtdXN0IGJlIGB0b3BpY34zYC4KKworWW91IGNhbiB0aGVuIHRyYW5zcGxhbnQgdGhlIG9sZCBgc3Vic3lzdGVtLi50b3BpY2AgdG8gdGhlIG5ldyB0aXAgYnkKK3NheWluZyAoZm9yIHRoZSByZWZsb2cgY2FzZSwgYW5kIGFzc3VtaW5nIHlvdSBhcmUgb24gJ3RvcGljJyBhbHJlYWR5KToKKy0tLS0tLS0tLS0tLQorICAgICQgZ2l0IHJlYmFzZSAtLW9udG8gc3Vic3lzdGVtIHN1YnN5c3RlbUB7MX0KKy0tLS0tLS0tLS0tLQorCitUaGUgcmlwcGxlIGVmZmVjdCBvZiBhICJoYXJkIGNhc2UiIHJlY292ZXJ5IGlzIGVzcGVjaWFsbHkgYmFkOgorJ2V2ZXJ5b25lJyBkb3duc3RyZWFtIGZyb20gJ3RvcGljJyB3aWxsIG5vdyBoYXZlIHRvIHBlcmZvcm0gYSAiaGFyZAorY2FzZSIgcmVjb3ZlcnkgdG9vIQorCisKIEF1dGhvcnMKIC0tLS0tLQogV3JpdHRlbiBieSBKdW5pbyBDIEhhbWFubyA8Z2l0c3RlckBwb2JveC5jb20+IGFuZApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtcmVtb3RlLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXJlbW90ZS50eHQKaW5kZXggYmI5OTgxMC4uZmFkOTgzZSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtcmVtb3RlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1yZW1vdGUudHh0CkBAIC0xMSw2ICsxMSw3IEBACiBbdmVyc2VdCiAnZ2l0IHJlbW90ZScgWy12IHwgLS12ZXJib3NlXQogJ2dpdCByZW1vdGUgYWRkJyBbLXQgPGJyYW5jaD5dIFstbSA8bWFzdGVyPl0gWy1mXSBbLS1taXJyb3JdIDxuYW1lPiA8dXJsPgorJ2dpdCByZW1vdGUgcmVuYW1lJyA8b2xkPiA8bmV3PgogJ2dpdCByZW1vdGUgcm0nIDxuYW1lPgogJ2dpdCByZW1vdGUgc2hvdycgWy1uXSA8bmFtZT4KICdnaXQgcmVtb3RlIHBydW5lJyBbLW4gfCAtLWRyeS1ydW5dIDxuYW1lPgpAQCAtNjEsNiArNjIsMTUgQEAKIG1vZGUsIGZ1cnRoZXJtb3JlLCBgZ2l0IHB1c2hgIHdpbGwgYWx3YXlzIGJlaGF2ZSBhcyBpZiBgXC0tbWlycm9yYAogd2FzIHBhc3NlZC4KIAorJ3JlbmFtZSc6OgorCitSZW5hbWUgdGhlIHJlbW90ZSBuYW1lZCA8b2xkPiB0byA8bmV3Pi4gQWxsIHJlbW90ZSB0cmFja2luZyBicmFuY2hlcyBhbmQKK2NvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIHRoZSByZW1vdGUgYXJlIHVwZGF0ZWQuCisrCitJbiBjYXNlIDxvbGQ+IGFuZCA8bmV3PiBhcmUgdGhlIHNhbWUsIGFuZCA8b2xkPiBpcyBhIGZpbGUgdW5kZXIKK2AkR0lUX0RJUi9yZW1vdGVzYCBvciBgJEdJVF9ESVIvYnJhbmNoZXNgLCB0aGUgcmVtb3RlIGlzIGNvbnZlcnRlZCB0bwordGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3JtYXQuCisKICdybSc6OgogCiBSZW1vdmUgdGhlIHJlbW90ZSBuYW1lZCA8bmFtZT4uIEFsbCByZW1vdGUgdHJhY2tpbmcgYnJhbmNoZXMgYW5kCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1yZXNldC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1yZXNldC50eHQKaW5kZXggNmFiYWVhYy4uMjA0OWYzZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtcmVzZXQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXJlc2V0LnR4dApAQCAtODIsNyArODIsOSBAQAogKwogPDE+IFRoZSBsYXN0IHRocmVlIGNvbW1pdHMgKEhFQUQsIEhFQUReLCBhbmQgSEVBRH4yKSB3ZXJlIGJhZAogYW5kIHlvdSBkbyBub3Qgd2FudCB0byBldmVyIHNlZSB0aGVtIGFnYWluLiAgRG8gKm5vdCogZG8gdGhpcyBpZgoteW91IGhhdmUgYWxyZWFkeSBnaXZlbiB0aGVzZSBjb21taXRzIHRvIHNvbWVib2R5IGVsc2UuCit5b3UgaGF2ZSBhbHJlYWR5IGdpdmVuIHRoZXNlIGNvbW1pdHMgdG8gc29tZWJvZHkgZWxzZS4gIChTZWUgdGhlCisiUkVDT1ZFUklORyBGUk9NIFVQU1RSRUFNIFJFQkFTRSIgc2VjdGlvbiBpbiBsaW5rZ2l0OmdpdC1yZWJhc2VbMV0gZm9yCit0aGUgaW1wbGljYXRpb25zIG9mIGRvaW5nIHNvLikKIAogVW5kbyBhIGNvbW1pdCwgbWFraW5nIGl0IGEgdG9waWMgYnJhbmNoOjoKICsKQEAgLTEyOCw3ICsxMzAsNyBAQAogJCBnaXQgcHVsbCAgICAgICAgICAgICAgICAgICAgICAgICA8MT4KIEF1dG8tbWVyZ2luZyBuaXRmb2wKIENPTkZMSUNUIChjb250ZW50KTogTWVyZ2UgY29uZmxpY3QgaW4gbml0Zm9sCi1BdXRvbWF0aWMgbWVyZ2UgZmFpbGVkL3ByZXZlbnRlZDsgZml4IHVwIGJ5IGhhbmQKK0F1dG9tYXRpYyBtZXJnZSBmYWlsZWQ7IGZpeCBjb25mbGljdHMgYW5kIHRoZW4gY29tbWl0IHRoZSByZXN1bHQuCiAkIGdpdCByZXNldCAtLWhhcmQgICAgICAgICAgICAgICAgIDwyPgogJCBnaXQgcHVsbCAuIHRvcGljL2JyYW5jaCAgICAgICAgICA8Mz4KIFVwZGF0aW5nIGZyb20gNDEyMjMuLi4gdG8gMTMxMzQuLi4KQEAgLTE3NSw2ICsxNzcsOCBAQAogPDM+IEF0IHRoaXMgcG9pbnQgdGhlIGluZGV4IGZpbGUgc3RpbGwgaGFzIGFsbCB0aGUgV0lQIGNoYW5nZXMgeW91CiAgICAgY29tbWl0dGVkIGFzICdzbmFwc2hvdCBXSVAnLiAgVGhpcyB1cGRhdGVzIHRoZSBpbmRleCB0byBzaG93IHlvdXIKICAgICBXSVAgZmlsZXMgYXMgdW5jb21taXR0ZWQuCisrCitTZWUgYWxzbyBsaW5rZ2l0OmdpdC1zdGFzaFsxXS4KIAogUmVzZXQgYSBzaW5nbGUgZmlsZSBpbiB0aGUgaW5kZXg6OgogKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtcmV2ZXJ0LnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXJldmVydC50eHQKaW5kZXggY2FhMDcyOS4uNWUxMTc1OCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtcmV2ZXJ0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1yZXZlcnQudHh0CkBAIC00NCw2ICs0NCwxNCBAQAogCW9wdGlvbiBzcGVjaWZpZXMgdGhlIHBhcmVudCBudW1iZXIgKHN0YXJ0aW5nIGZyb20gMSkgb2YKIAl0aGUgbWFpbmxpbmUgYW5kIGFsbG93cyByZXZlcnQgdG8gcmV2ZXJzZSB0aGUgY2hhbmdlCiAJcmVsYXRpdmUgdG8gdGhlIHNwZWNpZmllZCBwYXJlbnQuCisrCitSZXZlcnRpbmcgYSBtZXJnZSBjb21taXQgZGVjbGFyZXMgdGhhdCB5b3Ugd2lsbCBuZXZlciB3YW50IHRoZSB0cmVlIGNoYW5nZXMKK2Jyb3VnaHQgaW4gYnkgdGhlIG1lcmdlLiAgQXMgYSByZXN1bHQsIGxhdGVyIG1lcmdlcyB3aWxsIG9ubHkgYnJpbmcgaW4gdHJlZQorY2hhbmdlcyBpbnRyb2R1Y2VkIGJ5IGNvbW1pdHMgdGhhdCBhcmUgbm90IGFuY2VzdG9ycyBvZiB0aGUgcHJldmlvdXNseQorcmV2ZXJ0ZWQgbWVyZ2UuICBUaGlzIG1heSBvciBtYXkgbm90IGJlIHdoYXQgeW91IHdhbnQuCisrCitTZWUgdGhlIGxpbms6aG93dG8vcmV2ZXJ0LWEtZmF1bHR5LW1lcmdlLnR4dFtyZXZlcnQtYS1mYXVsdHktbWVyZ2UgSG93LVRvXSBmb3IKK21vcmUgZGV0YWlscy4KIAogLS1uby1lZGl0OjoKIAlXaXRoIHRoaXMgb3B0aW9uLCAnZ2l0LXJldmVydCcgd2lsbCBub3Qgc3RhcnQgdGhlIGNvbW1pdApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtc2VuZC1lbWFpbC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1zZW5kLWVtYWlsLnR4dAppbmRleCAzYzNlMWIwLi42NmJmM2IyIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1zZW5kLWVtYWlsLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1zZW5kLWVtYWlsLnR4dApAQCAtOCw4ICs4LDcgQEAKIAogU1lOT1BTSVMKIC0tLS0tLS0tCi0nZ2l0IHNlbmQtZW1haWwnIFtvcHRpb25zXSA8ZmlsZXxkaXJlY3Rvcnk+IFsuLi4gZmlsZXxkaXJlY3RvcnldCi0KKydnaXQgc2VuZC1lbWFpbCcgW29wdGlvbnNdIDxmaWxlfGRpcmVjdG9yeXxyZXYtbGlzdCBvcHRpb25zPi4uLgogCiAKIERFU0NSSVBUSU9OCkBAIC0yMCwzOSArMTksNTUgQEAKIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lLCB0aGUgdXNlciB3aWxsIGJlIHByb21wdGVkIHdpdGggYSBSZWFkTGluZQogZW5hYmxlZCBpbnRlcmZhY2UgdG8gcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uLgogCitUaGVyZSBhcmUgdHdvIGZvcm1hdHMgYWNjZXB0ZWQgZm9yIHBhdGNoIGZpbGVzOgorCisxLiBtYm94IGZvcm1hdCBmaWxlcworKworVGhpcyBpcyB3aGF0IGxpbmtnaXQ6Z2l0LWZvcm1hdC1wYXRjaFsxXSBnZW5lcmF0ZXMuICBNb3N0IGhlYWRlcnMgYW5kIE1JTUUKK2Zvcm1hdHRpbmcgYXJlIGlnbm9yZWQuCisKKzIuIFRoZSBvcmlnaW5hbCBmb3JtYXQgdXNlZCBieSBHcmVnIEtyb2FoLUhhcnRtYW4ncyAnc2VuZF9sb3RzX29mX2VtYWlsLnBsJworc2NyaXB0CisrCitUaGlzIGZvcm1hdCBleHBlY3RzIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBmaWxlIHRvIGNvbnRhaW4gdGhlICJDYzoiIHZhbHVlCithbmQgdGhlICJTdWJqZWN0OiIgb2YgdGhlIG1lc3NhZ2UgYXMgdGhlIHNlY29uZCBsaW5lLgorCisKIE9QVElPTlMKIC0tLS0tLS0KLVRoZSBvcHRpb25zIGF2YWlsYWJsZSBhcmU6CisKK0NvbXBvc2luZworfn5+fn5+fn5+CiAKIC0tYmNjOjoKLQlTcGVjaWZ5IGEgIkJjYzoiIHZhbHVlIGZvciBlYWNoIGVtYWlsLgorCVNwZWNpZnkgYSAiQmNjOiIgdmFsdWUgZm9yIGVhY2ggZW1haWwuIERlZmF1bHQgaXMgdGhlIHZhbHVlIG9mCisJJ3NlbmRlbWFpbC5iY2MnLgogKwogVGhlIC0tYmNjIG9wdGlvbiBtdXN0IGJlIHJlcGVhdGVkIGZvciBlYWNoIHVzZXIgeW91IHdhbnQgb24gdGhlIGJjYyBsaXN0LgogCiAtLWNjOjoKIAlTcGVjaWZ5IGEgc3RhcnRpbmcgIkNjOiIgdmFsdWUgZm9yIGVhY2ggZW1haWwuCisJRGVmYXVsdCBpcyB0aGUgdmFsdWUgb2YgJ3NlbmRlbWFpbC5jYycuCiArCiBUaGUgLS1jYyBvcHRpb24gbXVzdCBiZSByZXBlYXRlZCBmb3IgZWFjaCB1c2VyIHlvdSB3YW50IG9uIHRoZSBjYyBsaXN0LgogCi0tLWNjLWNtZDo6Ci0JU3BlY2lmeSBhIGNvbW1hbmQgdG8gZXhlY3V0ZSBvbmNlIHBlciBwYXRjaCBmaWxlIHdoaWNoCi0Jc2hvdWxkIGdlbmVyYXRlIHBhdGNoIGZpbGUgc3BlY2lmaWMgIkNjOiIgZW50cmllcy4KLQlPdXRwdXQgb2YgdGhpcyBjb21tYW5kIG11c3QgYmUgc2luZ2xlIGVtYWlsIGFkZHJlc3MgcGVyIGxpbmUuCi0JRGVmYXVsdCBpcyB0aGUgdmFsdWUgb2YgJ3NlbmRlbWFpbC5jY2NtZCcgY29uZmlndXJhdGlvbiB2YWx1ZS4KLQotLS1jaGFpbi1yZXBseS10bzo6Ci0tLW5vLWNoYWluLXJlcGx5LXRvOjoKLQlJZiB0aGlzIGlzIHNldCwgZWFjaCBlbWFpbCB3aWxsIGJlIHNlbnQgYXMgYSByZXBseSB0byB0aGUgcHJldmlvdXMKLQllbWFpbCBzZW50LiAgSWYgZGlzYWJsZWQgd2l0aCAiLS1uby1jaGFpbi1yZXBseS10byIsIGFsbCBlbWFpbHMgYWZ0ZXIKLQl0aGUgZmlyc3Qgd2lsbCBiZSBzZW50IGFzIHJlcGxpZXMgdG8gdGhlIGZpcnN0IGVtYWlsIHNlbnQuICBXaGVuIHVzaW5nCi0JdGhpcywgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB0aGUgZmlyc3QgZmlsZSBnaXZlbiBiZSBhbiBvdmVydmlldyBvZiB0aGUKLQllbnRpcmUgcGF0Y2ggc2VyaWVzLgotCURlZmF1bHQgaXMgdGhlIHZhbHVlIG9mIHRoZSAnc2VuZGVtYWlsLmNoYWlucmVwbHl0bycgY29uZmlndXJhdGlvbgotCXZhbHVlOyBpZiB0aGF0IGlzIHVuc3BlY2lmaWVkLCBkZWZhdWx0IHRvIC0tY2hhaW4tcmVwbHktdG8uCistLWFubm90YXRlOjoKKwlSZXZpZXcgZWFjaCBwYXRjaCB5b3UncmUgYWJvdXQgdG8gc2VuZCBpbiBhbiBlZGl0b3IuIFRoZSBzZXR0aW5nCisJJ3NlbmRlbWFpbC5tdWx0aWVkaXQnIGRlZmluZXMgaWYgdGhpcyB3aWxsIHNwYXduIG9uZSBlZGl0b3IgcGVyIHBhdGNoCisJb3Igb25lIGZvciBhbGwgb2YgdGhlbSBhdCBvbmNlLgogCiAtLWNvbXBvc2U6OgogCVVzZSAkR0lUX0VESVRPUiwgY29yZS5lZGl0b3IsICRWSVNVQUwsIG9yICRFRElUT1IgdG8gZWRpdCBhbgogCWludHJvZHVjdG9yeSBtZXNzYWdlIGZvciB0aGUgcGF0Y2ggc2VyaWVzLgorKworV2hlbiAnLS1jb21wb3NlJyBpcyB1c2VkLCBnaXQgc2VuZC1lbWFpbCBnZXRzIGxlc3MgaW50ZXJhY3RpdmUgd2lsbCB1c2UgdGhlCit2YWx1ZXMgb2YgdGhlIGhlYWRlcnMgeW91IHNldCB0aGVyZS4gSWYgdGhlIGJvZHkgb2YgdGhlIGVtYWlsICh3aGF0IHlvdSB0eXBlCithZnRlciB0aGUgaGVhZGVycyBhbmQgYSBibGFuayBsaW5lKSBvbmx5IGNvbnRhaW5zIGJsYW5rIChvciBHSVQ6IHByZWZpeGVkKQorbGluZXMsIHRoZSBzdW1tYXJ5IHdvbid0IGJlIHNlbnQsIGJ1dCBnaXQtc2VuZC1lbWFpbCB3aWxsIHN0aWxsIHVzZSB0aGUKK0hlYWRlcnMgdmFsdWVzIGlmIHlvdSBkb24ndCByZW1vdmVkIHRoZW0uCisrCitJZiBpdCB3YXNuJ3QgYWJsZSB0byBzZWUgYSBoZWFkZXIgaW4gdGhlIHN1bW1hcnkgaXQgd2lsbCBhc2sgeW91IGFib3V0IGl0CitpbnRlcmFjdGl2ZWx5IGFmdGVyIHF1aXR0aW5nIHlvdXIgZWRpdG9yLgogCiAtLWZyb206OgogCVNwZWNpZnkgdGhlIHNlbmRlciBvZiB0aGUgZW1haWxzLiAgVGhpcyB3aWxsIGRlZmF1bHQgdG8KQEAgLTY2LDIyICs4MSw0NyBAQAogCU9ubHkgbmVjZXNzYXJ5IGlmIC0tY29tcG9zZSBpcyBhbHNvIHNldC4gIElmIC0tY29tcG9zZQogCWlzIG5vdCBzZXQsIHRoaXMgd2lsbCBiZSBwcm9tcHRlZCBmb3IuCiAKLS0tc2lnbmVkLW9mZi1ieS1jYzo6Ci0tLW5vLXNpZ25lZC1vZmYtYnktY2M6OgotICAgICAgICBJZiB0aGlzIGlzIHNldCwgYWRkIGVtYWlscyBmb3VuZCBpbiBTaWduZWQtb2ZmLWJ5OiBvciBDYzogbGluZXMgdG8gdGhlCi0gICAgICAgIGNjIGxpc3QuCi0gICAgICAgIERlZmF1bHQgaXMgdGhlIHZhbHVlIG9mICdzZW5kZW1haWwuc2lnbmVkb2ZmY2MnIGNvbmZpZ3VyYXRpb24gdmFsdWU7Ci0gICAgICAgIGlmIHRoYXQgaXMgdW5zcGVjaWZpZWQsIGRlZmF1bHQgdG8gLS1zaWduZWQtb2ZmLWJ5LWNjLgorLS1zdWJqZWN0OjoKKwlTcGVjaWZ5IHRoZSBpbml0aWFsIHN1YmplY3Qgb2YgdGhlIGVtYWlsIHRocmVhZC4KKwlPbmx5IG5lY2Vzc2FyeSBpZiAtLWNvbXBvc2UgaXMgYWxzbyBzZXQuICBJZiAtLWNvbXBvc2UKKwlpcyBub3Qgc2V0LCB0aGlzIHdpbGwgYmUgcHJvbXB0ZWQgZm9yLgogCi0tLXF1aWV0OjoKLQlNYWtlIGdpdC1zZW5kLWVtYWlsIGxlc3MgdmVyYm9zZS4gIE9uZSBsaW5lIHBlciBlbWFpbCBzaG91bGQgYmUKLQlhbGwgdGhhdCBpcyBvdXRwdXQuCistLXRvOjoKKwlTcGVjaWZ5IHRoZSBwcmltYXJ5IHJlY2lwaWVudCBvZiB0aGUgZW1haWxzIGdlbmVyYXRlZC4gR2VuZXJhbGx5LCB0aGlzCisJd2lsbCBiZSB0aGUgdXBzdHJlYW0gbWFpbnRhaW5lciBvZiB0aGUgcHJvamVjdCBpbnZvbHZlZC4gRGVmYXVsdCBpcyB0aGUKKwl2YWx1ZSBvZiB0aGUgJ3NlbmRlbWFpbC50bycgY29uZmlndXJhdGlvbiB2YWx1ZTsgaWYgdGhhdCBpcyB1bnNwZWNpZmllZCwKKwl0aGlzIHdpbGwgYmUgcHJvbXB0ZWQgZm9yLgorKworVGhlIC0tdG8gb3B0aW9uIG11c3QgYmUgcmVwZWF0ZWQgZm9yIGVhY2ggdXNlciB5b3Ugd2FudCBvbiB0aGUgdG8gbGlzdC4KIAotLS1pZGVudGl0eTo6Ci0JQSBjb25maWd1cmF0aW9uIGlkZW50aXR5LiBXaGVuIGdpdmVuLCBjYXVzZXMgdmFsdWVzIGluIHRoZQotCSdzZW5kZW1haWwuPGlkZW50aXR5Picgc3Vic2VjdGlvbiB0byB0YWtlIHByZWNlZGVuY2Ugb3ZlcgotCXZhbHVlcyBpbiB0aGUgJ3NlbmRlbWFpbCcgc2VjdGlvbi4gVGhlIGRlZmF1bHQgaWRlbnRpdHkgaXMKLQl0aGUgdmFsdWUgb2YgJ3NlbmRlbWFpbC5pZGVudGl0eScuCisKK1NlbmRpbmcKK35+fn5+fn4KKworLS1lbnZlbG9wZS1zZW5kZXI6OgorCVNwZWNpZnkgdGhlIGVudmVsb3BlIHNlbmRlciB1c2VkIHRvIHNlbmQgdGhlIGVtYWlscy4KKwlUaGlzIGlzIHVzZWZ1bCBpZiB5b3VyIGRlZmF1bHQgYWRkcmVzcyBpcyBub3QgdGhlIGFkZHJlc3MgdGhhdCBpcworCXN1YnNjcmliZWQgdG8gYSBsaXN0LiBJZiB5b3UgdXNlIHRoZSBzZW5kbWFpbCBiaW5hcnksIHlvdSBtdXN0IGhhdmUKKwlzdWl0YWJsZSBwcml2aWxlZ2VzIGZvciB0aGUgLWYgcGFyYW1ldGVyLiBEZWZhdWx0IGlzIHRoZSB2YWx1ZSBvZgorCXRoZSAnc2VuZGVtYWlsLmVudmVsb3Blc2VuZGVyJyBjb25maWd1cmF0aW9uIHZhcmlhYmxlOyBpZiB0aGF0IGlzCisJdW5zcGVjaWZpZWQsIGNob29zaW5nIHRoZSBlbnZlbG9wZSBzZW5kZXIgaXMgbGVmdCB0byB5b3VyIE1UQS4KKworLS1zbXRwLWVuY3J5cHRpb246OgorCVNwZWNpZnkgdGhlIGVuY3J5cHRpb24gdG8gdXNlLCBlaXRoZXIgJ3NzbCcgb3IgJ3RscycuICBBbnkgb3RoZXIKKwl2YWx1ZSByZXZlcnRzIHRvIHBsYWluIFNNVFAuICBEZWZhdWx0IGlzIHRoZSB2YWx1ZSBvZgorCSdzZW5kZW1haWwuc210cGVuY3J5cHRpb24nLgorCistLXNtdHAtcGFzczo6CisJUGFzc3dvcmQgZm9yIFNNVFAtQVVUSC4gVGhlIGFyZ3VtZW50IGlzIG9wdGlvbmFsOiBJZiBubworCWFyZ3VtZW50IGlzIHNwZWNpZmllZCwgdGhlbiB0aGUgZW1wdHkgc3RyaW5nIGlzIHVzZWQgYXMKKwl0aGUgcGFzc3dvcmQuIERlZmF1bHQgaXMgdGhlIHZhbHVlIG9mICdzZW5kZW1haWwuc210cHBhc3MnLAorCWhvd2V2ZXIgJy0tc210cC1wYXNzJyBhbHdheXMgb3ZlcnJpZGVzIHRoaXMgdmFsdWUuCisrCitGdXJ0aGVybW9yZSwgcGFzc3dvcmRzIG5lZWQgbm90IGJlIHNwZWNpZmllZCBpbiBjb25maWd1cmF0aW9uIGZpbGVzCitvciBvbiB0aGUgY29tbWFuZCBsaW5lLiBJZiBhIHVzZXJuYW1lIGhhcyBiZWVuIHNwZWNpZmllZCAod2l0aAorJy0tc210cC11c2VyJyBvciBhICdzZW5kZW1haWwuc210cHVzZXInKSwgYnV0IG5vIHBhc3N3b3JkIGhhcyBiZWVuCitzcGVjaWZpZWQgKHdpdGggJy0tc210cC1wYXNzJyBvciAnc2VuZGVtYWlsLnNtdHBwYXNzJyksIHRoZW4gdGhlCit1c2VyIGlzIHByb21wdGVkIGZvciBhIHBhc3N3b3JkIHdoaWxlIHRoZSBpbnB1dCBpcyBtYXNrZWQgZm9yIHByaXZhY3kuCiAKIC0tc210cC1zZXJ2ZXI6OgogCUlmIHNldCwgc3BlY2lmaWVzIHRoZSBvdXRnb2luZyBTTVRQIHNlcnZlciB0byB1c2UgKGUuZy4KQEAgLTk2LDYxICsxMzYsNDQgQEAKIC0tc210cC1zZXJ2ZXItcG9ydDo6CiAJU3BlY2lmaWVzIGEgcG9ydCBkaWZmZXJlbnQgZnJvbSB0aGUgZGVmYXVsdCBwb3J0IChTTVRQCiAJc2VydmVycyB0eXBpY2FsbHkgbGlzdGVuIHRvIHNtdHAgcG9ydCAyNSBhbmQgc3NtdHAgcG9ydAotCTQ2NSkuCi0KLS0tc210cC11c2VyOjoKLQlVc2VybmFtZSBmb3IgU01UUC1BVVRILiBJbiBwbGFjZSBvZiB0aGlzIG9wdGlvbiwgdGhlIGZvbGxvd2luZwotCWNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGNhbiBiZSBzcGVjaWZpZWQ6Ci0rCi0tLQotCQkqIHNlbmRlbWFpbC5zbXRwdXNlcgotCQkqIHNlbmRlbWFpbC48aWRlbnRpdHk+LnNtdHB1c2VyIChzZWUgc2VuZGVtYWlsLmlkZW50aXR5KS4KLS0tCi0rCi1Ib3dldmVyLCAtLXNtdHAtdXNlciBhbHdheXMgb3ZlcnJpZGVzIHRoZXNlIHZhcmlhYmxlcy4KLSsKLUlmIGEgdXNlcm5hbWUgaXMgbm90IHNwZWNpZmllZCAod2l0aCAtLXNtdHAtdXNlciBvciBhCi1jb25maWd1cmF0aW9uIHZhcmlhYmxlKSwgdGhlbiBhdXRoZW50aWNhdGlvbiBpcyBub3QgYXR0ZW1wdGVkLgotCi0tLXNtdHAtcGFzczo6Ci0JUGFzc3dvcmQgZm9yIFNNVFAtQVVUSC4gVGhlIGFyZ3VtZW50IGlzIG9wdGlvbmFsOiBJZiBubwotCWFyZ3VtZW50IGlzIHNwZWNpZmllZCwgdGhlbiB0aGUgZW1wdHkgc3RyaW5nIGlzIHVzZWQgYXMKLQl0aGUgcGFzc3dvcmQuCi0rCi1JbiBwbGFjZSBvZiB0aGlzIG9wdGlvbiwgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIHZhcmlhYmxlcwotY2FuIGJlIHNwZWNpZmllZDoKLSsKLS0tCi0JCSogc2VuZGVtYWlsLnNtdHBwYXNzCi0JCSogc2VuZGVtYWlsLjxpZGVudGl0eT4uc210cHBhc3MgKHNlZSBzZW5kZW1haWwuaWRlbnRpdHkpLgotLS0KLSsKLUhvd2V2ZXIsIC0tc210cC1wYXNzIGFsd2F5cyBvdmVycmlkZXMgdGhlc2UgdmFyaWFibGVzLgotKwotRnVydGhlcm1vcmUsIHBhc3N3b3JkcyBuZWVkIG5vdCBiZSBzcGVjaWZpZWQgaW4gY29uZmlndXJhdGlvbiBmaWxlcwotb3Igb24gdGhlIGNvbW1hbmQgbGluZS4gSWYgYSB1c2VybmFtZSBoYXMgYmVlbiBzcGVjaWZpZWQgKHdpdGgKLS0tc210cC11c2VyIG9yIGEgY29uZmlndXJhdGlvbiB2YXJpYWJsZSksIGJ1dCBubyBwYXNzd29yZCBoYXMgYmVlbgotc3BlY2lmaWVkICh3aXRoIC0tc210cC1wYXNzIG9yIGEgY29uZmlndXJhdGlvbiB2YXJpYWJsZSksIHRoZW4gdGhlCi11c2VyIGlzIHByb21wdGVkIGZvciBhIHBhc3N3b3JkIHdoaWxlIHRoZSBpbnB1dCBpcyBtYXNrZWQgZm9yIHByaXZhY3kuCi0KLS0tc210cC1lbmNyeXB0aW9uOjoKLQlTcGVjaWZ5IHRoZSBlbmNyeXB0aW9uIHRvIHVzZSwgZWl0aGVyICdzc2wnIG9yICd0bHMnLiAgQW55IG90aGVyCi0JdmFsdWUgcmV2ZXJ0cyB0byBwbGFpbiBTTVRQLiAgRGVmYXVsdCBpcyB0aGUgdmFsdWUgb2YKLQknc2VuZGVtYWlsLnNtdHBlbmNyeXB0aW9uJy4KKwk0NjUpLiBUaGlzIGNhbiBiZSBzZXQgd2l0aCAnc2VuZGVtYWlsLnNtdHBzZXJ2ZXJwb3J0Jy4KIAogLS1zbXRwLXNzbDo6Ci0JTGVnYWN5IGFsaWFzIGZvciAnLS1zbXRwLWVuY3J5cHRpb249c3NsJy4KKwlMZWdhY3kgYWxpYXMgZm9yICctLXNtdHAtZW5jcnlwdGlvbiBzc2wnLgogCi0tLXN1YmplY3Q6OgotCVNwZWNpZnkgdGhlIGluaXRpYWwgc3ViamVjdCBvZiB0aGUgZW1haWwgdGhyZWFkLgotCU9ubHkgbmVjZXNzYXJ5IGlmIC0tY29tcG9zZSBpcyBhbHNvIHNldC4gIElmIC0tY29tcG9zZQotCWlzIG5vdCBzZXQsIHRoaXMgd2lsbCBiZSBwcm9tcHRlZCBmb3IuCistLXNtdHAtdXNlcjo6CisJVXNlcm5hbWUgZm9yIFNNVFAtQVVUSC4gRGVmYXVsdCBpcyB0aGUgdmFsdWUgb2YgJ3NlbmRlbWFpbC5zbXRwdXNlcic7CisJaWYgYSB1c2VybmFtZSBpcyBub3Qgc3BlY2lmaWVkICh3aXRoICctLXNtdHAtdXNlcicgb3IgJ3NlbmRlbWFpbC5zbXRwdXNlcicpLAorCXRoZW4gYXV0aGVudGljYXRpb24gaXMgbm90IGF0dGVtcHRlZC4KIAotLS1zdXBwcmVzcy1mcm9tOjoKLS0tbm8tc3VwcHJlc3MtZnJvbTo6Ci0gICAgICAgIElmIHRoaXMgaXMgc2V0LCBkbyBub3QgYWRkIHRoZSBGcm9tOiBhZGRyZXNzIHRvIHRoZSBjYzogbGlzdC4KLSAgICAgICAgRGVmYXVsdCBpcyB0aGUgdmFsdWUgb2YgJ3NlbmRlbWFpbC5zdXBwcmVzc2Zyb20nIGNvbmZpZ3VyYXRpb24gdmFsdWU7Ci0gICAgICAgIGlmIHRoYXQgaXMgdW5zcGVjaWZpZWQsIGRlZmF1bHQgdG8gLS1uby1zdXBwcmVzcy1mcm9tLgorCitBdXRvbWF0aW5nCit+fn5+fn5+fn5+CisKKy0tY2MtY21kOjoKKwlTcGVjaWZ5IGEgY29tbWFuZCB0byBleGVjdXRlIG9uY2UgcGVyIHBhdGNoIGZpbGUgd2hpY2gKKwlzaG91bGQgZ2VuZXJhdGUgcGF0Y2ggZmlsZSBzcGVjaWZpYyAiQ2M6IiBlbnRyaWVzLgorCU91dHB1dCBvZiB0aGlzIGNvbW1hbmQgbXVzdCBiZSBzaW5nbGUgZW1haWwgYWRkcmVzcyBwZXIgbGluZS4KKwlEZWZhdWx0IGlzIHRoZSB2YWx1ZSBvZiAnc2VuZGVtYWlsLmNjY21kJyBjb25maWd1cmF0aW9uIHZhbHVlLgorCistLVtuby1dY2hhaW4tcmVwbHktdG86OgorCUlmIHRoaXMgaXMgc2V0LCBlYWNoIGVtYWlsIHdpbGwgYmUgc2VudCBhcyBhIHJlcGx5IHRvIHRoZSBwcmV2aW91cworCWVtYWlsIHNlbnQuICBJZiBkaXNhYmxlZCB3aXRoICItLW5vLWNoYWluLXJlcGx5LXRvIiwgYWxsIGVtYWlscyBhZnRlcgorCXRoZSBmaXJzdCB3aWxsIGJlIHNlbnQgYXMgcmVwbGllcyB0byB0aGUgZmlyc3QgZW1haWwgc2VudC4gIFdoZW4gdXNpbmcKKwl0aGlzLCBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHRoZSBmaXJzdCBmaWxlIGdpdmVuIGJlIGFuIG92ZXJ2aWV3IG9mIHRoZQorCWVudGlyZSBwYXRjaCBzZXJpZXMuIERlZmF1bHQgaXMgdGhlIHZhbHVlIG9mIHRoZSAnc2VuZGVtYWlsLmNoYWlucmVwbHl0bycKKwljb25maWd1cmF0aW9uIHZhbHVlOyBpZiB0aGF0IGlzIHVuc3BlY2lmaWVkLCBkZWZhdWx0IHRvIC0tY2hhaW4tcmVwbHktdG8uCisKKy0taWRlbnRpdHk6OgorCUEgY29uZmlndXJhdGlvbiBpZGVudGl0eS4gV2hlbiBnaXZlbiwgY2F1c2VzIHZhbHVlcyBpbiB0aGUKKwknc2VuZGVtYWlsLjxpZGVudGl0eT4nIHN1YnNlY3Rpb24gdG8gdGFrZSBwcmVjZWRlbmNlIG92ZXIKKwl2YWx1ZXMgaW4gdGhlICdzZW5kZW1haWwnIHNlY3Rpb24uIFRoZSBkZWZhdWx0IGlkZW50aXR5IGlzCisJdGhlIHZhbHVlIG9mICdzZW5kZW1haWwuaWRlbnRpdHknLgorCistLVtuby1dc2lnbmVkLW9mZi1ieS1jYzo6CisJSWYgdGhpcyBpcyBzZXQsIGFkZCBlbWFpbHMgZm91bmQgaW4gU2lnbmVkLW9mZi1ieTogb3IgQ2M6IGxpbmVzIHRvIHRoZQorCWNjIGxpc3QuIERlZmF1bHQgaXMgdGhlIHZhbHVlIG9mICdzZW5kZW1haWwuc2lnbmVkb2ZmYnljYycgY29uZmlndXJhdGlvbgorCXZhbHVlOyBpZiB0aGF0IGlzIHVuc3BlY2lmaWVkLCBkZWZhdWx0IHRvIC0tc2lnbmVkLW9mZi1ieS1jYy4KIAogLS1zdXBwcmVzcy1jYzo6CiAJU3BlY2lmeSBhbiBhZGRpdGlvbmFsIGNhdGVnb3J5IG9mIHJlY2lwaWVudHMgdG8gc3VwcHJlc3MgdGhlCkBAIC0xNjMsNDQgKzE4Niw0OSBAQAogCWlmIHRoYXQgaXMgdW5zcGVjaWZpZWQsIGRlZmF1bHQgdG8gJ3NlbGYnIGlmIC0tc3VwcHJlc3MtZnJvbSBpcwogCXNwZWNpZmllZCwgYXMgd2VsbCBhcyAnc29iJyBpZiAtLW5vLXNpZ25lZC1vZmYtY2MgaXMgc3BlY2lmaWVkLgogCi0tLXRocmVhZDo6Ci0tLW5vLXRocmVhZDo6CistLVtuby1dc3VwcHJlc3MtZnJvbTo6CisJSWYgdGhpcyBpcyBzZXQsIGRvIG5vdCBhZGQgdGhlIEZyb206IGFkZHJlc3MgdG8gdGhlIGNjOiBsaXN0LgorCURlZmF1bHQgaXMgdGhlIHZhbHVlIG9mICdzZW5kZW1haWwuc3VwcHJlc3Nmcm9tJyBjb25maWd1cmF0aW9uCisJdmFsdWU7IGlmIHRoYXQgaXMgdW5zcGVjaWZpZWQsIGRlZmF1bHQgdG8gLS1uby1zdXBwcmVzcy1mcm9tLgorCistLVtuby1ddGhyZWFkOjoKIAlJZiB0aGlzIGlzIHNldCwgdGhlIEluLVJlcGx5LVRvIGhlYWRlciB3aWxsIGJlIHNldCBvbiBlYWNoIGVtYWlsIHNlbnQuCiAJSWYgZGlzYWJsZWQgd2l0aCAiLS1uby10aHJlYWQiLCBubyBlbWFpbHMgd2lsbCBoYXZlIHRoZSBJbi1SZXBseS1UbwotCWhlYWRlciBzZXQuCi0JRGVmYXVsdCBpcyB0aGUgdmFsdWUgb2YgdGhlICdzZW5kZW1haWwudGhyZWFkJyBjb25maWd1cmF0aW9uIHZhbHVlOwotCWlmIHRoYXQgaXMgdW5zcGVjaWZpZWQsIGRlZmF1bHQgdG8gLS10aHJlYWQuCisJaGVhZGVyIHNldC4gRGVmYXVsdCBpcyB0aGUgdmFsdWUgb2YgdGhlICdzZW5kZW1haWwudGhyZWFkJyBjb25maWd1cmF0aW9uCisJdmFsdWU7IGlmIHRoYXQgaXMgdW5zcGVjaWZpZWQsIGRlZmF1bHQgdG8gLS10aHJlYWQuCisKKworQWRtaW5pc3RlcmluZworfn5+fn5+fn5+fn5+fgogCiAtLWRyeS1ydW46OgogCURvIGV2ZXJ5dGhpbmcgZXhjZXB0IGFjdHVhbGx5IHNlbmQgdGhlIGVtYWlscy4KIAotLS1lbnZlbG9wZS1zZW5kZXI6OgotCVNwZWNpZnkgdGhlIGVudmVsb3BlIHNlbmRlciB1c2VkIHRvIHNlbmQgdGhlIGVtYWlscy4KLQlUaGlzIGlzIHVzZWZ1bCBpZiB5b3VyIGRlZmF1bHQgYWRkcmVzcyBpcyBub3QgdGhlIGFkZHJlc3MgdGhhdCBpcwotCXN1YnNjcmliZWQgdG8gYSBsaXN0LiBJZiB5b3UgdXNlIHRoZSBzZW5kbWFpbCBiaW5hcnksIHlvdSBtdXN0IGhhdmUKLQlzdWl0YWJsZSBwcml2aWxlZ2VzIGZvciB0aGUgLWYgcGFyYW1ldGVyLgotCURlZmF1bHQgaXMgdGhlIHZhbHVlIG9mIHRoZSAnc2VuZGVtYWlsLmVudmVsb3Blc2VuZGVyJyBjb25maWd1cmF0aW9uCi0JdmFyaWFibGU7IGlmIHRoYXQgaXMgdW5zcGVjaWZpZWQsIGNob29zaW5nIHRoZSBlbnZlbG9wZSBzZW5kZXIgaXMgbGVmdAotCXRvIHlvdXIgTVRBLgorLS1xdWlldDo6CisJTWFrZSBnaXQtc2VuZC1lbWFpbCBsZXNzIHZlcmJvc2UuICBPbmUgbGluZSBwZXIgZW1haWwgc2hvdWxkIGJlCisJYWxsIHRoYXQgaXMgb3V0cHV0LgogCi0tLXRvOjoKLQlTcGVjaWZ5IHRoZSBwcmltYXJ5IHJlY2lwaWVudCBvZiB0aGUgZW1haWxzIGdlbmVyYXRlZC4KLQlHZW5lcmFsbHksIHRoaXMgd2lsbCBiZSB0aGUgdXBzdHJlYW0gbWFpbnRhaW5lciBvZiB0aGUKLQlwcm9qZWN0IGludm9sdmVkLgotCURlZmF1bHQgaXMgdGhlIHZhbHVlIG9mIHRoZSAnc2VuZGVtYWlsLnRvJyBjb25maWd1cmF0aW9uIHZhbHVlOwotCWlmIHRoYXQgaXMgdW5zcGVjaWZpZWQsIHRoaXMgd2lsbCBiZSBwcm9tcHRlZCBmb3IuCistLVtuby1ddmFsaWRhdGU6OgorCVBlcmZvcm0gc2FuaXR5IGNoZWNrcyBvbiBwYXRjaGVzLgorCUN1cnJlbnRseSwgdmFsaWRhdGlvbiBtZWFucyB0aGUgZm9sbG93aW5nOgogKwotVGhlIC0tdG8gb3B0aW9uIG11c3QgYmUgcmVwZWF0ZWQgZm9yIGVhY2ggdXNlciB5b3Ugd2FudCBvbiB0aGUgdG8gbGlzdC4KKy0tCisJCSoJV2FybiBvZiBwYXRjaGVzIHRoYXQgY29udGFpbiBsaW5lcyBsb25nZXIgdGhhbiA5OTggY2hhcmFjdGVyczsgdGhpcworCQkJaXMgZHVlIHRvIFNNVFAgbGltaXRzIGFzIGRlc2NyaWJlZCBieSBodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyODIxLnR4dC4KKy0tCisrCitEZWZhdWx0IGlzIHRoZSB2YWx1ZSBvZiAnc2VuZGVtYWlsLnZhbGlkYXRlJzsgaWYgdGhpcyBpcyBub3Qgc2V0LAorZGVmYXVsdCB0byAnLS12YWxpZGF0ZScuCisKKy0tW25vLV1mb3JtYXQtcGF0Y2g6OgorCVdoZW4gYW4gYXJndW1lbnQgbWF5IGJlIHVuZGVyc3Rvb2QgZWl0aGVyIGFzIGEgcmVmZXJlbmNlIG9yIGFzIGEgZmlsZSBuYW1lLAorCWNob29zZSB0byB1bmRlcnN0YW5kIGl0IGFzIGEgZm9ybWF0LXBhdGNoIGFyZ3VtZW50ICgnLS1mb3JtYXQtcGF0Y2gnKQorCW9yIGFzIGEgZmlsZSBuYW1lICgnLS1uby1mb3JtYXQtcGF0Y2gnKS4gQnkgZGVmYXVsdCwgd2hlbiBzdWNoIGEgY29uZmxpY3QKKwlvY2N1cnMsIGdpdCBzZW5kLWVtYWlsIHdpbGwgZmFpbC4KIAogCiBDT05GSUdVUkFUSU9OCiAtLS0tLS0tLS0tLS0tCi1zZW5kZW1haWwuaWRlbnRpdHk6OgotCVRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gaWRlbnRpdHkuIFdoZW4gc3BlY2lmaWVkLAotCSdzZW5kZW1haWwuPGlkZW50aXR5Pi48aXRlbT4nIHdpbGwgaGF2ZSBoaWdoZXIgcHJlY2VkZW5jZSB0aGFuCi0JJ3NlbmRlbWFpbC48aXRlbT4nLiBUaGlzIGlzIHVzZWZ1bCB0byBkZWNsYXJlIG11bHRpcGxlIFNNVFAKLQlpZGVudGl0aWVzIGFuZCB0byBob2lzdCBzZW5zaXRpdmUgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24KLQlvdXQgb2YgdGhlIHJlcG9zaXRvcnkgYW5kIGludG8gdGhlIGdsb2JhbCBjb25maWd1cmF0aW9uIGZpbGUuCiAKIHNlbmRlbWFpbC5hbGlhc2VzZmlsZTo6CiAJVG8gYXZvaWQgdHlwaW5nIGxvbmcgZW1haWwgYWRkcmVzc2VzLCBwb2ludCB0aGlzIHRvIG9uZSBvciBtb3JlCkBAIC0yMTAsMzggKzIzOCwxMiBAQAogCUZvcm1hdCBvZiB0aGUgZmlsZShzKSBzcGVjaWZpZWQgaW4gc2VuZGVtYWlsLmFsaWFzZXNmaWxlLiBNdXN0IGJlCiAJb25lIG9mICdtdXR0JywgJ21haWxyYycsICdwaW5lJywgb3IgJ2dudXMnLgogCi1zZW5kZW1haWwudG86OgotCUVtYWlsIGFkZHJlc3MgKG9yIGFsaWFzKSB0byBhbHdheXMgc2VuZCB0by4KK3NlbmRlbWFpbC5tdWx0aWVkaXQ6OgorCUlmIHRydWUgKGRlZmF1bHQpLCBhIHNpbmdsZSBlZGl0b3IgaW5zdGFuY2Ugd2lsbCBiZSBzcGF3bmVkIHRvIGVkaXQKKwlmaWxlcyB5b3UgaGF2ZSB0byBlZGl0IChwYXRjaGVzIHdoZW4gJy0tYW5ub3RhdGUnIGlzIHVzZWQsIGFuZCB0aGUKKwlzdW1tYXJ5IHdoZW4gJy0tY29tcG9zZScgaXMgdXNlZCkuIElmIGZhbHNlLCBmaWxlcyB3aWxsIGJlIGVkaXRlZCBvbmUKKwlhZnRlciB0aGUgb3RoZXIsIHNwYXduaW5nIGEgbmV3IGVkaXRvciBlYWNoIHRpbWUuCiAKLXNlbmRlbWFpbC5jY2NtZDo6Ci0JQ29tbWFuZCB0byBleGVjdXRlIHRvIGdlbmVyYXRlIHBlciBwYXRjaCBmaWxlIHNwZWNpZmljICJDYzoicy4KLQotc2VuZGVtYWlsLmJjYzo6Ci0JRW1haWwgYWRkcmVzcyAob3IgYWxpYXMpIHRvIGFsd2F5cyBiY2MuCi0KLXNlbmRlbWFpbC5jaGFpbnJlcGx5dG86OgotCUJvb2xlYW4gdmFsdWUgc3BlY2lmeWluZyB0aGUgZGVmYXVsdCB0byB0aGUgJy0tY2hhaW5fcmVwbHlfdG8nCi0JcGFyYW1ldGVyLgotCi1zZW5kZW1haWwuc210cHNlcnZlcjo6Ci0JRGVmYXVsdCBTTVRQIHNlcnZlciB0byB1c2UuCi0KLXNlbmRlbWFpbC5zbXRwc2VydmVycG9ydDo6Ci0JRGVmYXVsdCBTTVRQIHNlcnZlciBwb3J0IHRvIHVzZS4KLQotc2VuZGVtYWlsLnNtdHB1c2VyOjoKLQlEZWZhdWx0IFNNVFAtQVVUSCB1c2VybmFtZS4KLQotc2VuZGVtYWlsLnNtdHBwYXNzOjoKLQlEZWZhdWx0IFNNVFAtQVVUSCBwYXNzd29yZC4KLQotc2VuZGVtYWlsLnNtdHBlbmNyeXB0aW9uOjoKLQlEZWZhdWx0IGVuY3J5cHRpb24gbWV0aG9kLiAgVXNlICdzc2wnIGZvciBTU0wgKGFuZCBzcGVjaWZ5IGFuCi0JYXBwcm9wcmlhdGUgcG9ydCksIG9yICd0bHMnIGZvciBUTFMuICBUYWtlcyBwcmVjZWRlbmNlIG92ZXIKLQknc210cHNzbCcgaWYgYm90aCBhcmUgc3BlY2lmaWVkLgotCi1zZW5kZW1haWwuc210cHNzbDo6Ci0JTGVnYWN5IGJvb2xlYW4gdGhhdCBzZXRzICdzbXRwZW5jcnlwdGlvbj1zc2wnIGlmIGVuYWJsZWQuCiAKIEF1dGhvcgogLS0tLS0tCkBAIC0yNTAsMTAgKzI1MiwxMiBAQAogZ2l0LXNlbmQtZW1haWwgaXMgb3JpZ2luYWxseSBiYXNlZCB1cG9uCiBzZW5kX2xvdHNfb2ZfZW1haWwucGwgYnkgR3JlZyBLcm9haC1IYXJ0bWFuLgogCisKIERvY3VtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0tCiBEb2N1bWVudGF0aW9uIGJ5IFJ5YW4gQW5kZXJzb24KIAorCiBHSVQKIC0tLQogUGFydCBvZiB0aGUgbGlua2dpdDpnaXRbMV0gc3VpdGUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXNoZWxsLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXNoZWxsLnR4dAppbmRleCBmZjQyMGY4Li4zZjhkOTczIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1zaGVsbC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtc2hlbGwudHh0CkBAIC0xOCw4ICsxOCw5IEBACiBUaGUgY29tbWFuZHMgY2FuIGJlIGV4ZWN1dGVkIG9ubHkgYnkgdGhlICctYycgb3B0aW9uOyB0aGUgc2hlbGwgaXMgbm90CiBpbnRlcmFjdGl2ZS4KIAotQ3VycmVudGx5LCBvbmx5IHRoZSAnZ2l0LXJlY2VpdmUtcGFjaycgYW5kICdnaXQtdXBsb2FkLXBhY2snIGNvbW1hbmRzCi1hcmUgcGVybWl0dGVkIHRvIGJlIGNhbGxlZCwgd2l0aCBhIHNpbmdsZSByZXF1aXJlZCBhcmd1bWVudC4KK0N1cnJlbnRseSwgb25seSB0aHJlZSBjb21tYW5kcyBhcmUgcGVybWl0dGVkIHRvIGJlIGNhbGxlZCwgJ2dpdC1yZWNlaXZlLXBhY2snCisnZ2l0LXVwbG9hZC1wYWNrJyB3aXRoIGEgc2luZ2xlIHJlcXVpcmVkIGFyZ3VtZW50IG9yICdjdnMgc2VydmVyJyAodG8gaW52b2tlCisnZ2l0LWN2c3NlcnZlcicpLgogCiBBdXRob3IKIC0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtc2hvcnRsb2cudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtc2hvcnRsb2cudHh0CmluZGV4IDdjY2YzMWMuLjhmN2MwZTIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXNob3J0bG9nLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1zaG9ydGxvZy50eHQKQEAgLTQ4LDE1ICs0OCw0MSBAQAogRklMRVMKIC0tLS0tCiAKLUlmIHRoZSBmaWxlIGAubWFpbG1hcGAgZXhpc3RzLCBpdCB3aWxsIGJlIHVzZWQgZm9yIG1hcHBpbmcgYXV0aG9yCi1lbWFpbCBhZGRyZXNzZXMgdG8gYSByZWFsIGF1dGhvciBuYW1lLiBPbmUgbWFwcGluZyBwZXIgbGluZSwgZmlyc3QKLXRoZSBhdXRob3IgbmFtZSBmb2xsb3dlZCBieSB0aGUgZW1haWwgYWRkcmVzcyBlbmNsb3NlZCBieQotJzwnIGFuZCAnPicuIFVzZSBoYXNoICcjJyBmb3IgY29tbWVudHMuIEV4YW1wbGU6CitJZiBhIGZpbGUgYC5tYWlsbWFwYCBleGlzdHMgYXQgdGhlIHRvcGxldmVsIG9mIHRoZSByZXBvc2l0b3J5LAoraXQgaXMgdXNlZCB0byBtYXAgYW4gYXV0aG9yIGVtYWlsIGFkZHJlc3MgdG8gYSBjYW5vbmljYWwgcmVhbCBuYW1lLiBUaGlzCitjYW4gYmUgdXNlZCB0byBjb2FsZXNjZSB0b2dldGhlciBjb21taXRzIGJ5IHRoZSBzYW1lIHBlcnNvbiB3aGVyZSB0aGVpcgorbmFtZSB3YXMgc3BlbGxlZCBkaWZmZXJlbnRseSAod2hldGhlciB3aXRoIHRoZSBzYW1lIGVtYWlsIGFkZHJlc3Mgb3IKK25vdCkuCisKK0VhY2ggbGluZSBpbiB0aGUgZmlsZSBjb25zaXN0cywgaW4gdGhpcyBvcmRlciwgb2YgdGhlIGNhbm9uaWNhbCByZWFsIG5hbWUKK29mIGFuIGF1dGhvciwgd2hpdGVzcGFjZSwgYW5kIGFuIGVtYWlsIGFkZHJlc3MgKGVuY2xvc2VkIGJ5ICc8JyBhbmQgJz4nKQordG8gbWFwIHRvIHRoZSBuYW1lLiBVc2UgaGFzaCAnIycgZm9yIGNvbW1lbnRzLCBlaXRoZXIgb24gdGhlaXIgb3duIGxpbmUsCitvciBhZnRlciB0aGUgZW1haWwgYWRkcmVzcy4KKworQSBjYW5vbmljYWwgbmFtZSBtYXkgYXBwZWFyIGluIG1vcmUgdGhhbiBvbmUgbGluZSwgYXNzb2NpYXRlZCB3aXRoCitkaWZmZXJlbnQgZW1haWwgYWRkcmVzc2VzLCBidXQgaXQgZG9lc24ndCBtYWtlIHNlbnNlIGZvciBhIGdpdmVuIGFkZHJlc3MKK3RvIGFwcGVhciBtb3JlIHRoYW4gb25jZSAoaWYgdGhhdCBoYXBwZW5zLCBhIGxhdGVyIGxpbmUgb3ZlcnJpZGVzIHRoZQorZWFybGllciBvbmVzKS4KKworU28sIGZvciBleGFtcGxlLCBpZiB5b3VyIGhpc3RvcnkgY29udGFpbnMgY29tbWl0cyBieSB0d28gYXV0aG9ycywgSmFuZQorYW5kIEpvZSwgd2hvc2UgbmFtZXMgYXBwZWFyIGluIHRoZSByZXBvc2l0b3J5IHVuZGVyIHNldmVyYWwgZm9ybXM6CiAKIC0tLS0tLS0tLS0tLQotIyBLZWVwIGFscGhhYmV0aXplZAotQWRhbSBNb3Jyb3cgPGFkYW1AbG9jYWxob3N0LmxvY2FsZG9tYWluPgotRXZlIEpvbmVzIDxldmVAbGFwdG9wLihub25lKT4KK0pvZSBEZXZlbG9wZXIgPGpvZUBleGFtcGxlLmNvbT4KK0pvZSBSLiBEZXZlbG9wZXIgPGpvZUBleGFtcGxlLmNvbT4KK0phbmUgRG9lIDxqYW5lQGV4YW1wbGUuY29tPgorSmFuZSBEb2UgPGphbmVAbGFwdG9wLihub25lKT4KK0phbmUgRC4gPGphbmVAZGVza3RvcC4obm9uZSk+CistLS0tLS0tLS0tLS0KKworVGhlbiwgc3VwcG9zaW5nIEpvZSB3YW50cyBoaXMgbWlkZGxlIG5hbWUgaW5pdGlhbCB1c2VkLCBhbmQgSmFuZSBwcmVmZXJzCitoZXIgZmFtaWx5IG5hbWUgZnVsbHkgc3BlbGxlZCBvdXQsIGEgcHJvcGVyIGAubWFpbG1hcGAgZmlsZSB3b3VsZCBsb29rIGxpa2U6CisKKy0tLS0tLS0tLS0tLQorIyBOb3RlIGhvdyB3ZSBkb24ndCBuZWVkIGFuIGVudHJ5IGZvciA8amFuZUBsYXB0b3AuKG5vbmUpPiwgYmVjYXVzZSB0aGUKKyMgcmVhbCBuYW1lIG9mIHRoYXQgYXV0aG9yIGlzIGNvcnJlY3QgYWxyZWFkeSwgYW5kIGNvYWxlc2NlZCBkaXJlY3RseS4KK0phbmUgRG9lIDxqYW5lQGRlc2t0b3AuKG5vbmUpPgorSm9lIFIuIERldmVsb3BlciA8am9lQHJhbmRvbS5jb20+CiAtLS0tLS0tLS0tLS0KIAogQXV0aG9yCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1zaG93LWJyYW5jaC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1zaG93LWJyYW5jaC50eHQKaW5kZXggZmIyNjlmZi4uODI3NzU3NyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtc2hvdy1icmFuY2gudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXNob3ctYnJhbmNoLnR4dApAQCAtMTcyLDcgKzE3Miw3IEBACiB5b3VyIHRvcGljIGJyYW5jaCwgaXQgaXMgc2hvd24gYXMgd2VsbC4KIAogLS0tLS0tLS0tLS0tCi0kIGdpdCBzaG93LWJyYW5jaCAtLXJlZmxvZz0nMTAsMSBob3VyIGFnbycgLS1saXN0IG1hc3RlcgorJCBnaXQgc2hvdy1icmFuY2ggLS1yZWZsb2c9IjEwLDEgaG91ciBhZ28iIC0tbGlzdCBtYXN0ZXIKIC0tLS0tLS0tLS0tLQogCiBzaG93cyAxMCByZWZsb2cgZW50cmllcyBnb2luZyBiYWNrIGZyb20gdGhlIHRpcCBhcyBvZiAxIGhvdXIgYWdvLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtc3RhZ2UudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtc3RhZ2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmMjUxYTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1zdGFnZS50eHQKQEAgLTAsMCArMSwxOSBAQAorZ2l0LXN0YWdlKDEpCis9PT09PT09PT09PT09PQorCitOQU1FCistLS0tCitnaXQtc3RhZ2UgLSBBZGQgZmlsZSBjb250ZW50cyB0byB0aGUgc3RhZ2luZyBhcmVhCisKKworU1lOT1BTSVMKKy0tLS0tLS0tCitbdmVyc2VdCisnZ2l0IHN0YWdlJyBhcmdzLi4uCisKKworREVTQ1JJUFRJT04KKy0tLS0tLS0tLS0tCisKK1RoaXMgaXMgYSBzeW5vbnltIGZvciBsaW5rZ2l0OmdpdC1hZGRbMV0uICBQbGVhc2UgcmVmZXIgdG8gdGhlCitkb2N1bWVudGF0aW9uIG9mIHRoYXQgY29tbWFuZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXN1Ym1vZHVsZS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1zdWJtb2R1bGUudHh0CmluZGV4IGU2NjUyYTcuLjJmMjA3ZmIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXN1Ym1vZHVsZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtc3VibW9kdWxlLnR4dApAQCAtMTQsNiArMTQsOCBAQAogJ2dpdCBzdWJtb2R1bGUnIFstLXF1aWV0XSBpbml0IFstLV0gWzxwYXRoPi4uLl0KICdnaXQgc3VibW9kdWxlJyBbLS1xdWlldF0gdXBkYXRlIFstLWluaXRdIFstLV0gWzxwYXRoPi4uLl0KICdnaXQgc3VibW9kdWxlJyBbLS1xdWlldF0gc3VtbWFyeSBbLS1zdW1tYXJ5LWxpbWl0IDxuPl0gW2NvbW1pdF0gWy0tXSBbPHBhdGg+Li4uXQorJ2dpdCBzdWJtb2R1bGUnIFstLXF1aWV0XSBmb3JlYWNoIDxjb21tYW5kPgorJ2dpdCBzdWJtb2R1bGUnIFstLXF1aWV0XSBzeW5jIFstLV0gWzxwYXRoPi4uLl0KIAogCiBERVNDUklQVElPTgpAQCAtMTIzLDYgKzEyNSwzMCBAQAogCWluIHRoZSBzdWJtb2R1bGUgYmV0d2VlbiB0aGUgZ2l2ZW4gc3VwZXIgcHJvamVjdCBjb21taXQgYW5kIHRoZQogCWluZGV4IG9yIHdvcmtpbmcgdHJlZSAoc3dpdGNoZWQgYnkgLS1jYWNoZWQpIGFyZSBzaG93bi4KIAorZm9yZWFjaDo6CisJRXZhbHVhdGVzIGFuIGFyYml0cmFyeSBzaGVsbCBjb21tYW5kIGluIGVhY2ggY2hlY2tlZCBvdXQgc3VibW9kdWxlLgorCVRoZSBjb21tYW5kIGhhcyBhY2Nlc3MgdG8gdGhlIHZhcmlhYmxlcyAkcGF0aCBhbmQgJHNoYTE6CisJJHBhdGggaXMgdGhlIG5hbWUgb2YgdGhlIHN1Ym1vZHVsZSBkaXJlY3RvcnkgcmVsYXRpdmUgdG8gdGhlCisJc3VwZXJwcm9qZWN0LCBhbmQgJHNoYTEgaXMgdGhlIGNvbW1pdCBhcyByZWNvcmRlZCBpbiB0aGUgc3VwZXJwcm9qZWN0LgorCUFueSBzdWJtb2R1bGVzIGRlZmluZWQgaW4gdGhlIHN1cGVycHJvamVjdCBidXQgbm90IGNoZWNrZWQgb3V0IGFyZQorCWlnbm9yZWQgYnkgdGhpcyBjb21tYW5kLiBVbmxlc3MgZ2l2ZW4gLS1xdWlldCwgZm9yZWFjaCBwcmludHMgdGhlIG5hbWUKKwlvZiBlYWNoIHN1Ym1vZHVsZSBiZWZvcmUgZXZhbHVhdGluZyB0aGUgY29tbWFuZC4KKwlBIG5vbi16ZXJvIHJldHVybiBmcm9tIHRoZSBjb21tYW5kIGluIGFueSBzdWJtb2R1bGUgY2F1c2VzCisJdGhlIHByb2Nlc3NpbmcgdG8gdGVybWluYXRlLiBUaGlzIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGFkZGluZyAnfHwgOicKKwl0byB0aGUgZW5kIG9mIHRoZSBjb21tYW5kLgorKworQXMgYW4gZXhhbXBsZSwgImdpdCBzdWJtb2R1bGUgZm9yZWFjaCAnZWNobyAkcGF0aCBgZ2l0IHJldi1wYXJzZSBIRUFEYCcgd2lsbAorc2hvdyB0aGUgcGF0aCBhbmQgY3VycmVudGx5IGNoZWNrZWQgb3V0IGNvbW1pdCBmb3IgZWFjaCBzdWJtb2R1bGUuCisKK3N5bmM6OgorCVN5bmNocm9uaXplcyBzdWJtb2R1bGVzJyByZW1vdGUgVVJMIGNvbmZpZ3VyYXRpb24gc2V0dGluZworCXRvIHRoZSB2YWx1ZSBzcGVjaWZpZWQgaW4gLmdpdG1vZHVsZXMuICBUaGlzIGlzIHVzZWZ1bCB3aGVuCisJc3VibW9kdWxlIFVSTHMgY2hhbmdlIHVwc3RyZWFtIGFuZCB5b3UgbmVlZCB0byB1cGRhdGUgeW91ciBsb2NhbAorCXJlcG9zaXRvcmllcyBhY2NvcmRpbmdseS4KKysKKyJnaXQgc3VibW9kdWxlIHN5bmMiIHN5bmNocm9uaXplcyBhbGwgc3VibW9kdWxlcyB3aGlsZQorImdpdCBzdWJtb2R1bGUgc3luYyAtLSBBIiBzeW5jaHJvbml6ZXMgc3VibW9kdWxlICJBIiBvbmx5LgorCiBPUFRJT05TCiAtLS0tLS0tCiAtcTo6CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1zdm4udHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtc3ZuLnR4dAppbmRleCA1ZDZkMzBmLi44ZDBjNDIxIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1zdm4udHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXN2bi50eHQKQEAgLTE0OSw2ICsxNDksMjIgQEAKIAlpcyB2ZXJ5IHN0cm9uZ2x5IGRpc2NvdXJhZ2VkLgogLS0KIAorJ2JyYW5jaCc6OgorCUNyZWF0ZSBhIGJyYW5jaCBpbiB0aGUgU1ZOIHJlcG9zaXRvcnkuCisKKy1tOzsKKy0tbWVzc2FnZTs7CisJQWxsb3dzIHRvIHNwZWNpZnkgdGhlIGNvbW1pdCBtZXNzYWdlLgorCistdDs7CistLXRhZzs7CisJQ3JlYXRlIGEgdGFnIGJ5IHVzaW5nIHRoZSB0YWdzX3N1YmRpciBpbnN0ZWFkIG9mIHRoZSBicmFuY2hlc19zdWJkaXIKKwlzcGVjaWZpZWQgZHVyaW5nIGdpdCBzdm4gaW5pdC4KKworJ3RhZyc6OgorCUNyZWF0ZSBhIHRhZyBpbiB0aGUgU1ZOIHJlcG9zaXRvcnkuIFRoaXMgaXMgYSBzaG9ydGhhbmQgZm9yCisJJ2JyYW5jaCAtdCcuCisKICdsb2cnOjoKIAlUaGlzIHNob3VsZCBtYWtlIGl0IGVhc3kgdG8gbG9vayB1cCBzdm4gbG9nIG1lc3NhZ2VzIHdoZW4gc3ZuCiAJdXNlcnMgcmVmZXIgdG8gLXIvLS1yZXZpc2lvbiBudW1iZXJzLgpAQCAtMzcyLDcgKzM4OCw4IEBACiAtbjo6CiAtLWRyeS1ydW46OgogCi1UaGlzIGNhbiBiZSB1c2VkIHdpdGggdGhlICdkY29tbWl0JyBhbmQgJ3JlYmFzZScgY29tbWFuZHMuCitUaGlzIGNhbiBiZSB1c2VkIHdpdGggdGhlICdkY29tbWl0JywgJ3JlYmFzZScsICdicmFuY2gnIGFuZCAndGFnJworY29tbWFuZHMuCiAKIEZvciAnZGNvbW1pdCcsIHByaW50IG91dCB0aGUgc2VyaWVzIG9mIGdpdCBhcmd1bWVudHMgdGhhdCB3b3VsZCBzaG93CiB3aGljaCBkaWZmcyB3b3VsZCBiZSBjb21taXR0ZWQgdG8gU1ZOLgpAQCAtMzgxLDYgKzM5OCw5IEBACiByZXBvc2l0b3J5IGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBicmFuY2ggYW5kIHRoZSBVUkwgb2Ygc3ZuCiByZXBvc2l0b3J5IHRoYXQgd2lsbCBiZSBmZXRjaGVkIGZyb20uCiAKK0ZvciAnYnJhbmNoJyBhbmQgJ3RhZycsIGRpc3BsYXkgdGhlIHVybHMgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIGNvcHlpbmcgd2hlbgorY3JlYXRpbmcgdGhlIGJyYW5jaCBvciB0YWcuCisKIC0tCiAKIEFEVkFOQ0VEIE9QVElPTlMKQEAgLTQ5OCw2ICs1MTgsOCBAQAogCWdpdCBzdm4gY2xvbmUgaHR0cDovL3N2bi5leGFtcGxlLmNvbS9wcm9qZWN0IC1UIHRydW5rIC1iIGJyYW5jaGVzIC10IHRhZ3MKICMgVmlldyBhbGwgYnJhbmNoZXMgYW5kIHRhZ3MgeW91IGhhdmUgY2xvbmVkOgogCWdpdCBicmFuY2ggLXIKKyMgQ3JlYXRlIGEgbmV3IGJyYW5jaCBpbiBTVk4KKyAgICBnaXQgc3ZuIGJyYW5jaCB3YWxkbwogIyBSZXNldCB5b3VyIG1hc3RlciB0byB0cnVuayAob3IgYW55IG90aGVyIGJyYW5jaCwgcmVwbGFjaW5nICd0cnVuaycKICMgd2l0aCB0aGUgYXBwcm9wcmlhdGUgbmFtZSk6CiAJZ2l0IHJlc2V0IC0taGFyZCByZW1vdGVzL3RydW5rCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC10YWcudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtdGFnLnR4dAppbmRleCAwNDZhYjM1Li5lNDRmNTQzIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC10YWcudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXRhZy50eHQKQEAgLTcwLDcgKzcwLDcgQEAKIAogLW0gPG1zZz46OgogCVVzZSB0aGUgZ2l2ZW4gdGFnIG1lc3NhZ2UgKGluc3RlYWQgb2YgcHJvbXB0aW5nKS4KLQlJZiBtdWx0aXBsZSBgLW1gIG9wdGlvbnMgYXJlIGdpdmVuLCB0aGVyZSB2YWx1ZXMgYXJlCisJSWYgbXVsdGlwbGUgYC1tYCBvcHRpb25zIGFyZSBnaXZlbiwgdGhlaXIgdmFsdWVzIGFyZQogCWNvbmNhdGVuYXRlZCBhcyBzZXBhcmF0ZSBwYXJhZ3JhcGhzLgogCUltcGxpZXMgYC1hYCBpZiBub25lIG9mIGAtYWAsIGAtc2AsIG9yIGAtdSA8a2V5LWlkPmAKIAlpcyBnaXZlbi4KQEAgLTIwNyw3ICsyMDcsNyBAQAogCiBBIG9uZS1zaG90IHB1bGwgaXMgYSBzaWduIHRoYXQgYSBjb21taXQgaGlzdG9yeSBpcyBub3cgY3Jvc3NpbmcKIHRoZSBib3VuZGFyeSBiZXR3ZWVuIG9uZSBjaXJjbGUgb2YgcGVvcGxlIChlLmcuICJwZW9wbGUgd2hvIGFyZQotcHJpbWFyaWx5IGludGVyZXN0ZWQgaW4gbmV0d29ya2luZyBwYXJ0IG9mIHRoZSBrZXJuZWwiKSB3aG8gbWF5CitwcmltYXJpbHkgaW50ZXJlc3RlZCBpbiB0aGUgbmV0d29ya2luZyBwYXJ0IG9mIHRoZSBrZXJuZWwiKSB3aG8gbWF5CiBoYXZlIHRoZWlyIG93biBzZXQgb2YgdGFncyAoZS5nLiAidGhpcyBpcyB0aGUgdGhpcmQgcmVsZWFzZQogY2FuZGlkYXRlIGZyb20gdGhlIG5ldHdvcmtpbmcgZ3JvdXAgdG8gYmUgcHJvcG9zZWQgZm9yIGdlbmVyYWwKIGNvbnN1bXB0aW9uIHdpdGggMi42LjIxIHJlbGVhc2UiKSB0byBhbm90aGVyIGNpcmNsZSBvZiBwZW9wbGUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXdlYi0tYnJvd3NlLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXdlYi0tYnJvd3NlLnR4dAppbmRleCA3ZjdhNDViLi4yNzhjZjczIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC13ZWItLWJyb3dzZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtd2ViLS1icm93c2UudHh0CkBAIC0yNiw2ICsyNiw3IEBACiAqIGx5bngKICogZGlsbG8KICogb3BlbiAodGhpcyBpcyB0aGUgZGVmYXVsdCB1bmRlciBNYWMgT1MgWCBHVUkpCisqIHN0YXJ0ICh0aGlzIGlzIHRoZSBkZWZhdWx0IHVuZGVyIE1pbkdXKQogCiBDdXN0b20gY29tbWFuZHMgbWF5IGFsc28gYmUgc3BlY2lmaWVkLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC50eHQKaW5kZXggZGY0MjBhZS4uMTdkYzhiMiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LnR4dApAQCAtNDMsMTYgKzQzLDI2IEBACiBicmFuY2ggb2YgdGhlIGBnaXQuZ2l0YCByZXBvc2l0b3J5LgogRG9jdW1lbnRhdGlvbiBmb3Igb2xkZXIgcmVsZWFzZXMgYXJlIGF2YWlsYWJsZSBoZXJlOgogCi0qIGxpbms6djEuNi4wLjIvZ2l0Lmh0bWxbZG9jdW1lbnRhdGlvbiBmb3IgcmVsZWFzZSAxLjYuMC4yXQorKiBsaW5rOnYxLjYuMS9naXQuaHRtbFtkb2N1bWVudGF0aW9uIGZvciByZWxlYXNlIDEuNi4xXQogCiAqIHJlbGVhc2Ugbm90ZXMgZm9yCisgIGxpbms6UmVsTm90ZXMtMS42LjEudHh0WzEuNi4xXS4KKworKiBsaW5rOnYxLjYuMC42L2dpdC5odG1sW2RvY3VtZW50YXRpb24gZm9yIHJlbGVhc2UgMS42LjAuNl0KKworKiByZWxlYXNlIG5vdGVzIGZvcgorICBsaW5rOlJlbE5vdGVzLTEuNi4wLjYudHh0WzEuNi4wLjZdLAorICBsaW5rOlJlbE5vdGVzLTEuNi4wLjUudHh0WzEuNi4wLjVdLAorICBsaW5rOlJlbE5vdGVzLTEuNi4wLjQudHh0WzEuNi4wLjRdLAorICBsaW5rOlJlbE5vdGVzLTEuNi4wLjMudHh0WzEuNi4wLjNdLAogICBsaW5rOlJlbE5vdGVzLTEuNi4wLjIudHh0WzEuNi4wLjJdLAogICBsaW5rOlJlbE5vdGVzLTEuNi4wLjEudHh0WzEuNi4wLjFdLAogICBsaW5rOlJlbE5vdGVzLTEuNi4wLnR4dFsxLjYuMF0uCiAKLSogbGluazp2MS41LjYuNS9naXQuaHRtbFtkb2N1bWVudGF0aW9uIGZvciByZWxlYXNlIDEuNS42LjVdCisqIGxpbms6djEuNS42LjYvZ2l0Lmh0bWxbZG9jdW1lbnRhdGlvbiBmb3IgcmVsZWFzZSAxLjUuNi42XQogCiAqIHJlbGVhc2Ugbm90ZXMgZm9yCisgIGxpbms6UmVsTm90ZXMtMS41LjYuNi50eHRbMS41LjYuNl0sCiAgIGxpbms6UmVsTm90ZXMtMS41LjYuNS50eHRbMS41LjYuNV0sCiAgIGxpbms6UmVsTm90ZXMtMS41LjYuNC50eHRbMS41LjYuNF0sCiAgIGxpbms6UmVsTm90ZXMtMS41LjYuMy50eHRbMS41LjYuM10sCkBAIC02MCwxOCArNzAsMjIgQEAKICAgbGluazpSZWxOb3Rlcy0xLjUuNi4xLnR4dFsxLjUuNi4xXSwKICAgbGluazpSZWxOb3Rlcy0xLjUuNi50eHRbMS41LjZdLgogCi0qIGxpbms6djEuNS41LjQvZ2l0Lmh0bWxbZG9jdW1lbnRhdGlvbiBmb3IgcmVsZWFzZSAxLjUuNS40XQorKiBsaW5rOnYxLjUuNS42L2dpdC5odG1sW2RvY3VtZW50YXRpb24gZm9yIHJlbGVhc2UgMS41LjUuNl0KIAogKiByZWxlYXNlIG5vdGVzIGZvcgorICBsaW5rOlJlbE5vdGVzLTEuNS41LjYudHh0WzEuNS41LjZdLAorICBsaW5rOlJlbE5vdGVzLTEuNS41LjUudHh0WzEuNS41LjVdLAogICBsaW5rOlJlbE5vdGVzLTEuNS41LjQudHh0WzEuNS41LjRdLAogICBsaW5rOlJlbE5vdGVzLTEuNS41LjMudHh0WzEuNS41LjNdLAogICBsaW5rOlJlbE5vdGVzLTEuNS41LjIudHh0WzEuNS41LjJdLAogICBsaW5rOlJlbE5vdGVzLTEuNS41LjEudHh0WzEuNS41LjFdLAogICBsaW5rOlJlbE5vdGVzLTEuNS41LnR4dFsxLjUuNV0uCiAKLSogbGluazp2MS41LjQuNS9naXQuaHRtbFtkb2N1bWVudGF0aW9uIGZvciByZWxlYXNlIDEuNS40LjVdCisqIGxpbms6djEuNS40LjcvZ2l0Lmh0bWxbZG9jdW1lbnRhdGlvbiBmb3IgcmVsZWFzZSAxLjUuNC43XQogCiAqIHJlbGVhc2Ugbm90ZXMgZm9yCisgIGxpbms6UmVsTm90ZXMtMS41LjQuNy50eHRbMS41LjQuN10sCisgIGxpbms6UmVsTm90ZXMtMS41LjQuNi50eHRbMS41LjQuNl0sCiAgIGxpbms6UmVsTm90ZXMtMS41LjQuNS50eHRbMS41LjQuNV0sCiAgIGxpbms6UmVsTm90ZXMtMS41LjQuNC50eHRbMS41LjQuNF0sCiAgIGxpbms6UmVsTm90ZXMtMS41LjQuMy50eHRbMS41LjQuM10sCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdGF0dHJpYnV0ZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9naXRhdHRyaWJ1dGVzLnR4dAppbmRleCAzN2ZmZjIwLi44YWYyMmVjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdGF0dHJpYnV0ZXMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0YXR0cmlidXRlcy50eHQKQEAgLTIxNiwxMCArMjE2LDEyIEBACiBgZGlmZmAKIF5eXl5eXgogCi1UaGUgYXR0cmlidXRlIGBkaWZmYCBhZmZlY3RzIGlmICdnaXQtZGlmZicgZ2VuZXJhdGVzIHRleHR1YWwKLXBhdGNoIGZvciB0aGUgcGF0aCBvciBqdXN0IHNheXMgYEJpbmFyeSBmaWxlcyBkaWZmZXJgLiAgSXQgYWxzbwotY2FuIGFmZmVjdCB3aGF0IGxpbmUgaXMgc2hvd24gb24gdGhlIGh1bmsgaGVhZGVyIGBAQCAtayxsICtuLG0gQEBgCi1saW5lLgorVGhlIGF0dHJpYnV0ZSBgZGlmZmAgYWZmZWN0cyBob3cgJ2dpdCcgZ2VuZXJhdGVzIGRpZmZzIGZvciBwYXJ0aWN1bGFyCitmaWxlcy4gSXQgY2FuIHRlbGwgZ2l0IHdoZXRoZXIgdG8gZ2VuZXJhdGUgYSB0ZXh0dWFsIHBhdGNoIGZvciB0aGUgcGF0aAorb3IgdG8gdHJlYXQgdGhlIHBhdGggYXMgYSBiaW5hcnkgZmlsZS4gIEl0IGNhbiBhbHNvIGFmZmVjdCB3aGF0IGxpbmUgaXMKK3Nob3duIG9uIHRoZSBodW5rIGhlYWRlciBgQEAgLWssbCArbixtIEBAYCBsaW5lLCB0ZWxsIGdpdCB0byB1c2UgYW4KK2V4dGVybmFsIGNvbW1hbmQgdG8gZ2VuZXJhdGUgdGhlIGRpZmYsIG9yIGFzayBnaXQgdG8gY29udmVydCBiaW5hcnkKK2ZpbGVzIHRvIGEgdGV4dCBmb3JtYXQgYmVmb3JlIGdlbmVyYXRpbmcgdGhlIGRpZmYuCiAKIFNldDo6CiAKQEAgLTIzMCw3ICsyMzIsOCBAQAogVW5zZXQ6OgogCiAJQSBwYXRoIHRvIHdoaWNoIHRoZSBgZGlmZmAgYXR0cmlidXRlIGlzIHVuc2V0IHdpbGwKLQlnZW5lcmF0ZSBgQmluYXJ5IGZpbGVzIGRpZmZlcmAuCisJZ2VuZXJhdGUgYEJpbmFyeSBmaWxlcyBkaWZmZXJgIChvciBhIGJpbmFyeSBwYXRjaCwgaWYKKwliaW5hcnkgcGF0Y2hlcyBhcmUgZW5hYmxlZCkuCiAKIFVuc3BlY2lmaWVkOjoKIApAQCAtMjQxLDIxICsyNDQsMjEgQEAKIAogU3RyaW5nOjoKIAotCURpZmYgaXMgc2hvd24gdXNpbmcgdGhlIHNwZWNpZmllZCBjdXN0b20gZGlmZiBkcml2ZXIuCi0JVGhlIGRyaXZlciBwcm9ncmFtIGlzIGdpdmVuIGl0cyBpbnB1dCB1c2luZyB0aGUgc2FtZQotCWNhbGxpbmcgY29udmVudGlvbiBhcyB1c2VkIGZvciBHSVRfRVhURVJOQUxfRElGRgotCXByb2dyYW0uICBUaGlzIG5hbWUgaXMgYWxzbyB1c2VkIGZvciBjdXN0b20gaHVuayBoZWFkZXIKLQlzZWxlY3Rpb24uCisJRGlmZiBpcyBzaG93biB1c2luZyB0aGUgc3BlY2lmaWVkIGRpZmYgZHJpdmVyLiAgRWFjaCBkcml2ZXIgbWF5CisJc3BlY2lmeSBvbmUgb3IgbW9yZSBvcHRpb25zLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZvbGxvd2luZworCXNlY3Rpb24uIFRoZSBvcHRpb25zIGZvciB0aGUgZGlmZiBkcml2ZXIgImZvbyIgYXJlIGRlZmluZWQKKwlieSB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgaW4gdGhlICJkaWZmLmZvbyIgc2VjdGlvbiBvZiB0aGUKKwlnaXQgY29uZmlnIGZpbGUuCiAKIAotRGVmaW5pbmcgYSBjdXN0b20gZGlmZiBkcml2ZXIKLV5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCitEZWZpbmluZyBhbiBleHRlcm5hbCBkaWZmIGRyaXZlcgorXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KIAogVGhlIGRlZmluaXRpb24gb2YgYSBkaWZmIGRyaXZlciBpcyBkb25lIGluIGBnaXRjb25maWdgLCBub3QKIGBnaXRhdHRyaWJ1dGVzYCBmaWxlLCBzbyBzdHJpY3RseSBzcGVha2luZyB0aGlzIG1hbnVhbCBwYWdlIGlzIGEKIHdyb25nIHBsYWNlIHRvIHRhbGsgYWJvdXQgaXQuICBIb3dldmVyLi4uCiAKLVRvIGRlZmluZSBhIGN1c3RvbSBkaWZmIGRyaXZlciBgamNkaWZmYCwgYWRkIGEgc2VjdGlvbiB0byB5b3VyCitUbyBkZWZpbmUgYW4gZXh0ZXJuYWwgZGlmZiBkcml2ZXIgYGpjZGlmZmAsIGFkZCBhIHNlY3Rpb24gdG8geW91cgogYCRHSVRfRElSL2NvbmZpZ2AgZmlsZSAob3IgYCRIT01FLy5naXRjb25maWdgIGZpbGUpIGxpa2UgdGhpczoKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzE0LDE1ICszMTcsNjAgQEAKIAogLSBgYmlidGV4YCBzdWl0YWJsZSBmb3IgZmlsZXMgd2l0aCBCaWJUZVggY29kZWQgcmVmZXJlbmNlcy4KIAorLSBgaHRtbGAgc3VpdGFibGUgZm9yIEhUTUwvWEhUTUwgZG9jdW1lbnRzLgorCiAtIGBqYXZhYCBzdWl0YWJsZSBmb3Igc291cmNlIGNvZGUgaW4gdGhlIEphdmEgbGFuZ3VhZ2UuCiAKKy0gYG9iamNgIHN1aXRhYmxlIGZvciBzb3VyY2UgY29kZSBpbiB0aGUgT2JqZWN0aXZlLUMgbGFuZ3VhZ2UuCisKIC0gYHBhc2NhbGAgc3VpdGFibGUgZm9yIHNvdXJjZSBjb2RlIGluIHRoZSBQYXNjYWwvRGVscGhpIGxhbmd1YWdlLgogCistIGBwaHBgIHN1aXRhYmxlIGZvciBzb3VyY2UgY29kZSBpbiB0aGUgUEhQIGxhbmd1YWdlLgorCistIGBweXRob25gIHN1aXRhYmxlIGZvciBzb3VyY2UgY29kZSBpbiB0aGUgUHl0aG9uIGxhbmd1YWdlLgorCiAtIGBydWJ5YCBzdWl0YWJsZSBmb3Igc291cmNlIGNvZGUgaW4gdGhlIFJ1YnkgbGFuZ3VhZ2UuCiAKIC0gYHRleGAgc3VpdGFibGUgZm9yIHNvdXJjZSBjb2RlIGZvciBMYVRlWCBkb2N1bWVudHMuCiAKIAorUGVyZm9ybWluZyB0ZXh0IGRpZmZzIG9mIGJpbmFyeSBmaWxlcworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitTb21ldGltZXMgaXQgaXMgZGVzaXJhYmxlIHRvIHNlZSB0aGUgZGlmZiBvZiBhIHRleHQtY29udmVydGVkCit2ZXJzaW9uIG9mIHNvbWUgYmluYXJ5IGZpbGVzLiBGb3IgZXhhbXBsZSwgYSB3b3JkIHByb2Nlc3NvcgorZG9jdW1lbnQgY2FuIGJlIGNvbnZlcnRlZCB0byBhbiBBU0NJSSB0ZXh0IHJlcHJlc2VudGF0aW9uLCBhbmQKK3RoZSBkaWZmIG9mIHRoZSB0ZXh0IHNob3duLiBFdmVuIHRob3VnaCB0aGlzIGNvbnZlcnNpb24gbG9zZXMKK3NvbWUgaW5mb3JtYXRpb24sIHRoZSByZXN1bHRpbmcgZGlmZiBpcyB1c2VmdWwgZm9yIGh1bWFuCit2aWV3aW5nIChidXQgY2Fubm90IGJlIGFwcGxpZWQgZGlyZWN0bHkpLgorCitUaGUgYHRleHRjb252YCBjb25maWcgb3B0aW9uIGlzIHVzZWQgdG8gZGVmaW5lIGEgcHJvZ3JhbSBmb3IKK3BlcmZvcm1pbmcgc3VjaCBhIGNvbnZlcnNpb24uIFRoZSBwcm9ncmFtIHNob3VsZCB0YWtlIGEgc2luZ2xlCithcmd1bWVudCwgdGhlIG5hbWUgb2YgYSBmaWxlIHRvIGNvbnZlcnQsIGFuZCBwcm9kdWNlIHRoZQorcmVzdWx0aW5nIHRleHQgb24gc3Rkb3V0LgorCitGb3IgZXhhbXBsZSwgdG8gc2hvdyB0aGUgZGlmZiBvZiB0aGUgZXhpZiBpbmZvcm1hdGlvbiBvZiBhCitmaWxlIGluc3RlYWQgb2YgdGhlIGJpbmFyeSBpbmZvcm1hdGlvbiAoYXNzdW1pbmcgeW91IGhhdmUgdGhlCitleGlmIHRvb2wgaW5zdGFsbGVkKToKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitbZGlmZiAianBnIl0KKwl0ZXh0Y29udiA9IGV4aWYKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOT1RFOiBUaGUgdGV4dCBjb252ZXJzaW9uIGlzIGdlbmVyYWxseSBhIG9uZS13YXkgY29udmVyc2lvbjsKK2luIHRoaXMgZXhhbXBsZSwgd2UgbG9zZSB0aGUgYWN0dWFsIGltYWdlIGNvbnRlbnRzIGFuZCBmb2N1cworanVzdCBvbiB0aGUgdGV4dCBkYXRhLiBUaGlzIG1lYW5zIHRoYXQgZGlmZnMgZ2VuZXJhdGVkIGJ5Cit0ZXh0Y29udiBhcmUgX25vdF8gc3VpdGFibGUgZm9yIGFwcGx5aW5nLiBGb3IgdGhpcyByZWFzb24sCitvbmx5IGBnaXQgZGlmZmAgYW5kIHRoZSBgZ2l0IGxvZ2AgZmFtaWx5IG9mIGNvbW1hbmRzIChpLmUuLAorbG9nLCB3aGF0Y2hhbmdlZCwgc2hvdykgd2lsbCBwZXJmb3JtIHRleHQgY29udmVyc2lvbi4gYGdpdAorZm9ybWF0LXBhdGNoYCB3aWxsIG5ldmVyIGdlbmVyYXRlIHRoaXMgb3V0cHV0LiBJZiB5b3Ugd2FudCB0bworc2VuZCBzb21lYm9keSBhIHRleHQtY29udmVydGVkIGRpZmYgb2YgYSBiaW5hcnkgZmlsZSAoZS5nLiwKK2JlY2F1c2UgaXQgcXVpY2tseSBjb252ZXlzIHRoZSBjaGFuZ2VzIHlvdSBoYXZlIG1hZGUpLCB5b3UKK3Nob3VsZCBnZW5lcmF0ZSBpdCBzZXBhcmF0ZWx5IGFuZCBzZW5kIGl0IGFzIGEgY29tbWVudCBfaW4KK2FkZGl0aW9uIHRvXyB0aGUgdXN1YWwgYmluYXJ5IGRpZmYgdGhhdCB5b3UgbWlnaHQgc2VuZC4KKworCiBQZXJmb3JtaW5nIGEgdGhyZWUtd2F5IG1lcmdlCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKQEAgLTQ4Nyw2ICs1MzUsMjMgQEAKIGNvbW1pdCBoYXNoLgogCiAKK1ZpZXdpbmcgZmlsZXMgaW4gR1VJIHRvb2xzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitgZW5jb2RpbmdgCiteXl5eXl5eXl5eCisKK1RoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIGNoYXJhY3RlciBlbmNvZGluZyB0aGF0IHNob3VsZAorYmUgdXNlZCBieSBHVUkgdG9vbHMgKGUuZy4gbGlua2dpdDpnaXRrWzFdIGFuZCBsaW5rZ2l0OmdpdC1ndWlbMV0pIHRvCitkaXNwbGF5IHRoZSBjb250ZW50cyBvZiB0aGUgcmVsZXZhbnQgZmlsZS4gTm90ZSB0aGF0IGR1ZSB0byBwZXJmb3JtYW5jZQorY29uc2lkZXJhdGlvbnMgbGlua2dpdDpnaXRrWzFdIGRvZXMgbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSB1bmxlc3MgeW91CittYW51YWxseSBlbmFibGUgcGVyLWZpbGUgZW5jb2RpbmdzIGluIGl0cyBvcHRpb25zLgorCitJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc2V0IG9yIGhhcyBhbiBpbnZhbGlkIHZhbHVlLCB0aGUgdmFsdWUgb2YgdGhlCitgZ3VpLmVuY29kaW5nYCBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGlzIHVzZWQgaW5zdGVhZAorKFNlZSBsaW5rZ2l0OmdpdC1jb25maWdbMV0pLgorCisKIFVTSU5HIEFUVFJJQlVURSBNQUNST1MKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXRjb3JlLXR1dG9yaWFsLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0Y29yZS10dXRvcmlhbC50eHQKaW5kZXggODk2Y2JkZi4uZTRkZDU1MSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXRjb3JlLXR1dG9yaWFsLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdGNvcmUtdHV0b3JpYWwudHh0CkBAIC04OTksNyArODk5LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0KIAlBdXRvLW1lcmdpbmcgaGVsbG8KIAlDT05GTElDVCAoY29udGVudCk6IE1lcmdlIGNvbmZsaWN0IGluIGhlbGxvCi0JQXV0b21hdGljIG1lcmdlIGZhaWxlZDsgZml4IHVwIGJ5IGhhbmQKKwlBdXRvbWF0aWMgbWVyZ2UgZmFpbGVkOyBmaXggY29uZmxpY3RzIGFuZCB0aGVuIGNvbW1pdCB0aGUgcmVzdWx0LgogLS0tLS0tLS0tLS0tLS0tLQogCiBJdCB0ZWxscyB5b3UgdGhhdCBpdCBkaWQgYW4gIkF1dG9tYXRpYyBtZXJnZSIsIHdoaWNoCkBAIC05OTMsNyArOTkzLDcgQEAKIAogLS0tLS0tLS0tLS0tLS0tLQogVXBkYXRpbmcgZnJvbSBhZTNhMmRhLi4uIHRvIGE4MGI0YWEuLi4uCi1GYXN0IGZvcndhcmQKK0Zhc3QgZm9yd2FyZCAobm8gY29tbWl0IGNyZWF0ZWQ7IC1tIG9wdGlvbiBpZ25vcmVkKQogIGV4YW1wbGUgfCAgICAxICsKICBoZWxsbyAgIHwgICAgMSArCiAgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCkBAIC0xMjY1LDkgKzEyNjUsOCBAQAogCiAtLS0tLS0tLS0tLS0KICQgZ2l0IG1lcmdlLWluZGV4IGdpdC1tZXJnZS1vbmUtZmlsZSBoZWxsbwotQXV0by1tZXJnaW5nIGhlbGxvLgotbWVyZ2U6IHdhcm5pbmc6IGNvbmZsaWN0cyBkdXJpbmcgbWVyZ2UKLUVSUk9SOiBNZXJnZSBjb25mbGljdCBpbiBoZWxsby4KK0F1dG8tbWVyZ2luZyBoZWxsbworRVJST1I6IE1lcmdlIGNvbmZsaWN0IGluIGhlbGxvCiBmYXRhbDogbWVyZ2UgcHJvZ3JhbSBmYWlsZWQKIC0tLS0tLS0tLS0tLQogCkBAIC0xNDQ3LDcgKzE0NDYsNyBAQAogbmV2ZXIuCiAKIElmIHlvdSBydW4gYGdpdCByZXBhY2tgIGFnYWluIGF0IHRoaXMgcG9pbnQsIGl0IHdpbGwgc2F5Ci0iTm90aGluZyB0byBwYWNrIi4gT25jZSB5b3UgY29udGludWUgeW91ciBkZXZlbG9wbWVudCBhbmQKKyJOb3RoaW5nIG5ldyB0byBwYWNrLiIuIE9uY2UgeW91IGNvbnRpbnVlIHlvdXIgZGV2ZWxvcG1lbnQgYW5kCiBhY2N1bXVsYXRlIHRoZSBjaGFuZ2VzLCBydW5uaW5nIGBnaXQgcmVwYWNrYCBhZ2FpbiB3aWxsIGNyZWF0ZSBhCiBuZXcgcGFjaywgdGhhdCBjb250YWlucyBvYmplY3RzIGNyZWF0ZWQgc2luY2UgeW91IHBhY2tlZCB5b3VyCiByZXBvc2l0b3J5IHRoZSBsYXN0IHRpbWUuIFdlIHJlY29tbWVuZCB0aGF0IHlvdSBwYWNrIHlvdXIgcHJvamVjdApAQCAtMTY5Myw2ICsxNjkyLDcgQEAKIGxpbmtnaXQ6Z2l0dHV0b3JpYWxbN10sCiBsaW5rZ2l0OmdpdHR1dG9yaWFsLTJbN10sCiBsaW5rZ2l0OmdpdGN2cy1taWdyYXRpb25bN10sCitsaW5rZ2l0OmdpdC1oZWxwWzFdLAogbGluazpldmVyeWRheS5odG1sW0V2ZXJ5ZGF5IGdpdF0sCiBsaW5rOnVzZXItbWFudWFsLmh0bWxbVGhlIEdpdCBVc2VyJ3MgTWFudWFsXQogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdGhvb2tzLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0aG9va3MudHh0CmluZGV4IDAyNGFiYjIuLjI4YThhYmMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0aG9va3MudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0aG9va3MudHh0CkBAIC0yMCw2ICsyMCwxMCBAQAogYWxsIGRpc2FibGVkLiAgVG8gZW5hYmxlIGEgaG9vaywgcmVuYW1lIGl0IGJ5IHJlbW92aW5nIGl0cyBgLnNhbXBsZWAKIHN1ZmZpeC4KIAorTk9URTogSXQgaXMgYWxzbyBhIHJlcXVpcmVtZW50IGZvciBhIGdpdmVuIGhvb2sgdG8gYmUgZXhlY3V0YWJsZS4KK0hvd2V2ZXIgLSBpbiBhIGZyZXNobHkgaW5pdGlhbGl6ZWQgcmVwb3NpdG9yeSAtIHRoZSBgLnNhbXBsZWAgZmlsZXMgYXJlCitleGVjdXRhYmxlIGJ5IGRlZmF1bHQuCisKIFRoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBjdXJyZW50bHkgZGVmaW5lZCBob29rcy4KIAogYXBwbHlwYXRjaC1tc2cKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0ay50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdGsudHh0CmluZGV4IDVlZjM2ODcuLjQ2NzNhNzUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0ay50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXRrLnR4dApAQCAtNTYsNiArNTYsMTEgQEAKIAlVc2UgdGhpcyBpbnN0ZWFkIG9mIGV4cGxpY2l0bHkgc3BlY2lmeWluZyA8cmV2cz4gaWYgdGhlIHNldCBvZgogCWNvbW1pdHMgdG8gc2hvdyBtYXkgdmFyeSBiZXR3ZWVuIHJlZnJlc2hlcy4KIAorLS1zZWxlY3QtY29tbWl0PTxyZWY+OjoKKworCUF1dG9tYXRpY2FsbHkgc2VsZWN0IHRoZSBzcGVjaWZpZWQgY29tbWl0IGFmdGVyIGxvYWRpbmcgdGhlIGdyYXBoLgorCURlZmF1bHQgYmVoYXZpb3IgaXMgZXF1aXZhbGVudCB0byBzcGVjaWZ5aW5nICctLXNlbGVjdC1jb21taXQ9SEVBRCcuCisKIDxyZXZzPjo6CiAKIAlMaW1pdCB0aGUgcmV2aXNpb25zIHRvIHNob3cuIFRoaXMgY2FuIGJlIGVpdGhlciBhIHNpbmdsZSByZXZpc2lvbgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXRyZXBvc2l0b3J5LWxheW91dC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdHJlcG9zaXRvcnktbGF5b3V0LnR4dAppbmRleCBhOTY5YjNmLi4xYmVmY2E5IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdHJlcG9zaXRvcnktbGF5b3V0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdHJlcG9zaXRvcnktbGF5b3V0LnR4dApAQCAtMTM0LDcgKzEzNCw4IEBACiAJSG9va3MgYXJlIGN1c3RvbWl6YXRpb24gc2NyaXB0cyB1c2VkIGJ5IHZhcmlvdXMgZ2l0CiAJY29tbWFuZHMuICBBIGhhbmRmdWwgb2Ygc2FtcGxlIGhvb2tzIGFyZSBpbnN0YWxsZWQgd2hlbgogCSdnaXQtaW5pdCcgaXMgcnVuLCBidXQgYWxsIG9mIHRoZW0gYXJlIGRpc2FibGVkIGJ5Ci0JZGVmYXVsdC4gIFRvIGVuYWJsZSwgdGhleSBuZWVkIHRvIGJlIG1hZGUgZXhlY3V0YWJsZS4KKwlkZWZhdWx0LiAgVG8gZW5hYmxlLCB0aGUgYC5zYW1wbGVgIHN1ZmZpeCBoYXMgdG8gYmUKKwlyZW1vdmVkIGZyb20gdGhlIGZpbGVuYW1lIGJ5IHJlbmFtaW5nLgogCVJlYWQgbGlua2dpdDpnaXRob29rc1s1XSBmb3IgbW9yZSBkZXRhaWxzIGFib3V0CiAJZWFjaCBob29rLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdHR1dG9yaWFsLTIudHh0IGIvRG9jdW1lbnRhdGlvbi9naXR0dXRvcmlhbC0yLnR4dAppbmRleCA2NjA5MDQ2Li5hMDU3YjUwIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdHR1dG9yaWFsLTIudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0dHV0b3JpYWwtMi50eHQKQEAgLTMyLDIyICszMiwyNyBAQAogJCBlY2hvICdoZWxsbyB3b3JsZCcgPiBmaWxlLnR4dAogJCBnaXQgYWRkIC4KICQgZ2l0IGNvbW1pdCAtYSAtbSAiaW5pdGlhbCBjb21taXQiCi1DcmVhdGVkIGluaXRpYWwgY29tbWl0IDU0MTk2Y2MyNzAzZGMxNjVjYmQzNzNhNjVhNGRjZjIyZDUwYWU3ZjcKK1ttYXN0ZXIgKHJvb3QtY29tbWl0KV0gY3JlYXRlZCA1NDE5NmNjOiAiaW5pdGlhbCBjb21taXQiCisgMSBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGZpbGUudHh0CiAkIGVjaG8gJ2hlbGxvIHdvcmxkIScgPmZpbGUudHh0CiAkIGdpdCBjb21taXQgLWEgLW0gImFkZCBlbXBoYXNpcyIKLUNyZWF0ZWQgY29tbWl0IGM0ZDU5ZjM5MGI5Y2ZkNDMxODExN2FmZGUxMWQ2MDFjMTA4NWYyNDEKK1ttYXN0ZXJdIGNyZWF0ZWQgYzRkNTlmMzogImFkZCBlbXBoYXNpcyIKKyAxIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1XaGF0IGFyZSB0aGUgNDAgZGlnaXRzIG9mIGhleCB0aGF0IGdpdCByZXNwb25kZWQgdG8gdGhlIGNvbW1pdCB3aXRoPworV2hhdCBhcmUgdGhlIDcgZGlnaXRzIG9mIGhleCB0aGF0IGdpdCByZXNwb25kZWQgdG8gdGhlIGNvbW1pdCB3aXRoPwogCiBXZSBzYXcgaW4gcGFydCBvbmUgb2YgdGhlIHR1dG9yaWFsIHRoYXQgY29tbWl0cyBoYXZlIG5hbWVzIGxpa2UgdGhpcy4KIEl0IHR1cm5zIG91dCB0aGF0IGV2ZXJ5IG9iamVjdCBpbiB0aGUgZ2l0IGhpc3RvcnkgaXMgc3RvcmVkIHVuZGVyCi1zdWNoIGEgNDAtZGlnaXQgaGV4IG5hbWUuICBUaGF0IG5hbWUgaXMgdGhlIFNIQTEgaGFzaCBvZiB0aGUgb2JqZWN0J3MKK2EgNDAtZGlnaXQgaGV4IG5hbWUuICBUaGF0IG5hbWUgaXMgdGhlIFNIQTEgaGFzaCBvZiB0aGUgb2JqZWN0J3MKIGNvbnRlbnRzOyBhbW9uZyBvdGhlciB0aGluZ3MsIHRoaXMgZW5zdXJlcyB0aGF0IGdpdCB3aWxsIG5ldmVyIHN0b3JlCiB0aGUgc2FtZSBkYXRhIHR3aWNlIChzaW5jZSBpZGVudGljYWwgZGF0YSBpcyBnaXZlbiBhbiBpZGVudGljYWwgU0hBMQogbmFtZSksIGFuZCB0aGF0IHRoZSBjb250ZW50cyBvZiBhIGdpdCBvYmplY3Qgd2lsbCBuZXZlciBjaGFuZ2UgKHNpbmNlCi10aGF0IHdvdWxkIGNoYW5nZSB0aGUgb2JqZWN0J3MgbmFtZSBhcyB3ZWxsKS4KK3RoYXQgd291bGQgY2hhbmdlIHRoZSBvYmplY3QncyBuYW1lIGFzIHdlbGwpLiBUaGUgNyBjaGFyIGhleCBzdHJpbmdzCitoZXJlIGFyZSBzaW1wbHkgdGhlIGFiYnJldmlhdGlvbiBvZiBzdWNoIDQwIGNoYXJhY3RlciBsb25nIHN0cmluZ3MuCitBYmJyZXZpYXRpb25zIGNhbiBiZSB1c2VkIGV2ZXJ5d2hlcmUgd2hlcmUgdGhlIDQwIGNoYXJhY3RlciBzdHJpbmdzCitjYW4gYmUgdXNlZCwgc28gbG9uZyBhcyB0aGV5IGFyZSB1bmFtYmlndW91cy4KIAogSXQgaXMgZXhwZWN0ZWQgdGhhdCB0aGUgY29udGVudCBvZiB0aGUgY29tbWl0IG9iamVjdCB5b3UgY3JlYXRlZCB3aGlsZQogZm9sbG93aW5nIHRoZSBleGFtcGxlIGFib3ZlIGdlbmVyYXRlcyBhIGRpZmZlcmVudCBTSEExIGhhc2ggdGhhbgpAQCAtNDIwLDYgKzQyNSw3IEBACiBsaW5rZ2l0OmdpdGN2cy1taWdyYXRpb25bN10sCiBsaW5rZ2l0OmdpdGNvcmUtdHV0b3JpYWxbN10sCiBsaW5rZ2l0OmdpdGdsb3NzYXJ5WzddLAorbGlua2dpdDpnaXQtaGVscFsxXSwKIGxpbms6ZXZlcnlkYXkuaHRtbFtFdmVyeWRheSBnaXRdLAogbGluazp1c2VyLW1hbnVhbC5odG1sW1RoZSBHaXQgVXNlcidzIE1hbnVhbF0KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXR0dXRvcmlhbC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdHR1dG9yaWFsLnR4dAppbmRleCAzODQ5NzJjLi40NThmYWZkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdHR1dG9yaWFsLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdHR1dG9yaWFsLnR4dApAQCAtMjYsNiArMjYsMTUgQEAKICQgbWFuIGdpdC1sb2cKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCitvcjoKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiskIGdpdCBoZWxwIGxvZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1dpdGggdGhlIGxhdHRlciwgeW91IGNhbiB1c2UgdGhlIG1hbnVhbCB2aWV3ZXIgb2YgeW91ciBjaG9pY2U7IHNlZQorbGlua2dpdDpnaXQtaGVscFsxXSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKwogSXQgaXMgYSBnb29kIGlkZWEgdG8gaW50cm9kdWNlIHlvdXJzZWxmIHRvIGdpdCB3aXRoIHlvdXIgbmFtZSBhbmQKIHB1YmxpYyBlbWFpbCBhZGRyZXNzIGJlZm9yZSBkb2luZyBhbnkgb3BlcmF0aW9uLiAgVGhlIGVhc2llc3QKIHdheSB0byBkbyBzbyBpczoKQEAgLTU4MSw3ICs1OTAsNyBAQAogdGhlbiBtZXJnZWQgYmFjayB0b2dldGhlciwgdGhlIG9yZGVyIGluIHdoaWNoICdnaXQtbG9nJyBwcmVzZW50cwogdGhvc2UgY29tbWl0cyBpcyBtZWFuaW5nbGVzcy4KIAotTW9zdCBwcm9qZWN0cyB3aXRoIG11bHRpcGxlIGNvbnRyaWJ1dG9ycyAoc3VjaCBhcyB0aGUgbGludXgga2VybmVsLAorTW9zdCBwcm9qZWN0cyB3aXRoIG11bHRpcGxlIGNvbnRyaWJ1dG9ycyAoc3VjaCBhcyB0aGUgTGludXgga2VybmVsLAogb3IgZ2l0IGl0c2VsZikgaGF2ZSBmcmVxdWVudCBtZXJnZXMsIGFuZCAnZ2l0aycgZG9lcyBhIGJldHRlciBqb2Igb2YKIHZpc3VhbGl6aW5nIHRoZWlyIGhpc3RvcnkuICBGb3IgZXhhbXBsZSwKIApAQCAtNjMzLDcgKzY0Miw3IEBACiAKICAgKiBsaW5rZ2l0OmdpdC1mb3JtYXQtcGF0Y2hbMV0sIGxpbmtnaXQ6Z2l0LWFtWzFdOiBUaGVzZSBjb252ZXJ0CiAgICAgc2VyaWVzIG9mIGdpdCBjb21taXRzIGludG8gZW1haWxlZCBwYXRjaGVzLCBhbmQgdmljZSB2ZXJzYSwKLSAgICB1c2VmdWwgZm9yIHByb2plY3RzIHN1Y2ggYXMgdGhlIGxpbnV4IGtlcm5lbCB3aGljaCByZWx5IGhlYXZpbHkKKyAgICB1c2VmdWwgZm9yIHByb2plY3RzIHN1Y2ggYXMgdGhlIExpbnV4IGtlcm5lbCB3aGljaCByZWx5IGhlYXZpbHkKICAgICBvbiBlbWFpbGVkIHBhdGNoZXMuCiAKICAgKiBsaW5rZ2l0OmdpdC1iaXNlY3RbMV06IFdoZW4gdGhlcmUgaXMgYSByZWdyZXNzaW9uIGluIHlvdXIKQEAgLTY1Myw2ICs2NjIsNyBAQAogbGlua2dpdDpnaXRjdnMtbWlncmF0aW9uWzddLAogbGlua2dpdDpnaXRjb3JlLXR1dG9yaWFsWzddLAogbGlua2dpdDpnaXRnbG9zc2FyeVs3XSwKK2xpbmtnaXQ6Z2l0LWhlbHBbMV0sCiBsaW5rOmV2ZXJ5ZGF5Lmh0bWxbRXZlcnlkYXkgZ2l0XSwKIGxpbms6dXNlci1tYW51YWwuaHRtbFtUaGUgR2l0IFVzZXIncyBNYW51YWxdCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0d29ya2Zsb3dzLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0d29ya2Zsb3dzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjAyMWUzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9naXR3b3JrZmxvd3MudHh0CkBAIC0wLDAgKzEsMzY0IEBACitnaXR3b3JrZmxvd3MoNykKKz09PT09PT09PT09PT09PQorCitOQU1FCistLS0tCitnaXR3b3JrZmxvd3MgLSBBbiBvdmVydmlldyBvZiByZWNvbW1lbmRlZCB3b3JrZmxvd3Mgd2l0aCBnaXQKKworU1lOT1BTSVMKKy0tLS0tLS0tCitnaXQgKgorCisKK0RFU0NSSVBUSU9OCistLS0tLS0tLS0tLQorCitUaGlzIGRvY3VtZW50IGF0dGVtcHRzIHRvIHdyaXRlIGRvd24gYW5kIG1vdGl2YXRlIHNvbWUgb2YgdGhlIHdvcmtmbG93CitlbGVtZW50cyB1c2VkIGZvciBgZ2l0LmdpdGAgaXRzZWxmLiAgTWFueSBpZGVhcyBhcHBseSBpbiBnZW5lcmFsLAordGhvdWdoIHRoZSBmdWxsIHdvcmtmbG93IGlzIHJhcmVseSByZXF1aXJlZCBmb3Igc21hbGxlciBwcm9qZWN0cyB3aXRoCitmZXdlciBwZW9wbGUgaW52b2x2ZWQuCisKK1dlIGZvcm11bGF0ZSBhIHNldCBvZiAncnVsZXMnIGZvciBxdWljayByZWZlcmVuY2UsIHdoaWxlIHRoZSBwcm9zZQordHJpZXMgdG8gbW90aXZhdGUgZWFjaCBvZiB0aGVtLiAgRG8gbm90IGFsd2F5cyB0YWtlIHRoZW0gbGl0ZXJhbGx5OworeW91IHNob3VsZCB2YWx1ZSBnb29kIHJlYXNvbnMgZm9yIHlvdXIgYWN0aW9ucyBoaWdoZXIgdGhhbiBtYW5wYWdlcworc3VjaCBhcyB0aGlzIG9uZS4KKworCitTRVBBUkFURSBDSEFOR0VTCistLS0tLS0tLS0tLS0tLS0tCisKK0FzIGEgZ2VuZXJhbCBydWxlLCB5b3Ugc2hvdWxkIHRyeSB0byBzcGxpdCB5b3VyIGNoYW5nZXMgaW50byBzbWFsbAorbG9naWNhbCBzdGVwcywgYW5kIGNvbW1pdCBlYWNoIG9mIHRoZW0uICBUaGV5IHNob3VsZCBiZSBjb25zaXN0ZW50LAord29ya2luZyBpbmRlcGVuZGVudGx5IG9mIGFueSBsYXRlciBjb21taXRzLCBwYXNzIHRoZSB0ZXN0IHN1aXRlLCBldGMuCitUaGlzIG1ha2VzIHRoZSByZXZpZXcgcHJvY2VzcyBtdWNoIGVhc2llciwgYW5kIHRoZSBoaXN0b3J5IG11Y2ggbW9yZQordXNlZnVsIGZvciBsYXRlciBpbnNwZWN0aW9uIGFuZCBhbmFseXNpcywgZm9yIGV4YW1wbGUgd2l0aAorbGlua2dpdDpnaXQtYmxhbWVbMV0gYW5kIGxpbmtnaXQ6Z2l0LWJpc2VjdFsxXS4KKworVG8gYWNoaWV2ZSB0aGlzLCB0cnkgdG8gc3BsaXQgeW91ciB3b3JrIGludG8gc21hbGwgc3RlcHMgZnJvbSB0aGUgdmVyeQorYmVnaW5uaW5nLiBJdCBpcyBhbHdheXMgZWFzaWVyIHRvIHNxdWFzaCBhIGZldyBjb21taXRzIHRvZ2V0aGVyIHRoYW4KK3RvIHNwbGl0IG9uZSBiaWcgY29tbWl0IGludG8gc2V2ZXJhbC4gIERvbid0IGJlIGFmcmFpZCBvZiBtYWtpbmcgdG9vCitzbWFsbCBvciBpbXBlcmZlY3Qgc3RlcHMgYWxvbmcgdGhlIHdheS4gWW91IGNhbiBhbHdheXMgZ28gYmFjayBsYXRlcgorYW5kIGVkaXQgdGhlIGNvbW1pdHMgd2l0aCBgZ2l0IHJlYmFzZSBcLS1pbnRlcmFjdGl2ZWAgYmVmb3JlIHlvdQorcHVibGlzaCB0aGVtLiAgWW91IGNhbiB1c2UgYGdpdCBzdGFzaCBzYXZlIFwtLWtlZXAtaW5kZXhgIHRvIHJ1biB0aGUKK3Rlc3Qgc3VpdGUgaW5kZXBlbmRlbnQgb2Ygb3RoZXIgdW5jb21taXR0ZWQgY2hhbmdlczsgc2VlIHRoZSBFWEFNUExFUworc2VjdGlvbiBvZiBsaW5rZ2l0OmdpdC1zdGFzaFsxXS4KKworCitNQU5BR0lORyBCUkFOQ0hFUworLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlcmUgYXJlIHR3byBtYWluIHRvb2xzIHRoYXQgY2FuIGJlIHVzZWQgdG8gaW5jbHVkZSBjaGFuZ2VzIGZyb20gb25lCiticmFuY2ggb24gYW5vdGhlcjogbGlua2dpdDpnaXQtbWVyZ2VbMV0gYW5kCitsaW5rZ2l0OmdpdC1jaGVycnktcGlja1sxXS4KKworTWVyZ2VzIGhhdmUgbWFueSBhZHZhbnRhZ2VzLCBzbyB3ZSB0cnkgdG8gc29sdmUgYXMgbWFueSBwcm9ibGVtcyBhcworcG9zc2libGUgd2l0aCBtZXJnZXMgYWxvbmUuICBDaGVycnktcGlja2luZyBpcyBzdGlsbCBvY2Nhc2lvbmFsbHkKK3VzZWZ1bDsgc2VlICJNZXJnaW5nIHVwd2FyZHMiIGJlbG93IGZvciBhbiBleGFtcGxlLgorCitNb3N0IGltcG9ydGFudGx5LCBtZXJnaW5nIHdvcmtzIGF0IHRoZSBicmFuY2ggbGV2ZWwsIHdoaWxlCitjaGVycnktcGlja2luZyB3b3JrcyBhdCB0aGUgY29tbWl0IGxldmVsLiAgVGhpcyBtZWFucyB0aGF0IGEgbWVyZ2UgY2FuCitjYXJyeSBvdmVyIHRoZSBjaGFuZ2VzIGZyb20gMSwgMTAsIG9yIDEwMDAgY29tbWl0cyB3aXRoIGVxdWFsIGVhc2UsCit3aGljaCBpbiB0dXJuIG1lYW5zIHRoZSB3b3JrZmxvdyBzY2FsZXMgbXVjaCBiZXR0ZXIgdG8gYSBsYXJnZSBudW1iZXIKK29mIGNvbnRyaWJ1dG9ycyAoYW5kIGNvbnRyaWJ1dGlvbnMpLiAgTWVyZ2VzIGFyZSBhbHNvIGVhc2llciB0bwordW5kZXJzdGFuZCBiZWNhdXNlIGEgbWVyZ2UgY29tbWl0IGlzIGEgInByb21pc2UiIHRoYXQgYWxsIGNoYW5nZXMgZnJvbQorYWxsIGl0cyBwYXJlbnRzIGFyZSBub3cgaW5jbHVkZWQuCisKK1RoZXJlIGlzIGEgdHJhZGVvZmYgb2YgY291cnNlOiBtZXJnZXMgcmVxdWlyZSBhIG1vcmUgY2FyZWZ1bCBicmFuY2gKK21hbmFnZW1lbnQuICBUaGUgZm9sbG93aW5nIHN1YnNlY3Rpb25zIGRpc2N1c3MgdGhlIGltcG9ydGFudCBwb2ludHMuCisKKworR3JhZHVhdGlvbgorfn5+fn5+fn5+fgorCitBcyBhIGdpdmVuIGZlYXR1cmUgZ29lcyBmcm9tIGV4cGVyaW1lbnRhbCB0byBzdGFibGUsIGl0IGFsc28KKyJncmFkdWF0ZXMiIGJldHdlZW4gdGhlIGNvcnJlc3BvbmRpbmcgYnJhbmNoZXMgb2YgdGhlIHNvZnR3YXJlLgorYGdpdC5naXRgIHVzZXMgdGhlIGZvbGxvd2luZyAnaW50ZWdyYXRpb24gYnJhbmNoZXMnOgorCisqICdtYWludCcgdHJhY2tzIHRoZSBjb21taXRzIHRoYXQgc2hvdWxkIGdvIGludG8gdGhlIG5leHQgIm1haW50ZW5hbmNlCisgIHJlbGVhc2UiLCBpLmUuLCB1cGRhdGUgb2YgdGhlIGxhc3QgcmVsZWFzZWQgc3RhYmxlIHZlcnNpb247CisKKyogJ21hc3RlcicgdHJhY2tzIHRoZSBjb21taXRzIHRoYXQgc2hvdWxkIGdvIGludG8gdGhlIG5leHQgcmVsZWFzZTsKKworKiAnbmV4dCcgaXMgaW50ZW5kZWQgYXMgYSB0ZXN0aW5nIGJyYW5jaCBmb3IgdG9waWNzIGJlaW5nIHRlc3RlZCBmb3IKKyAgc3RhYmlsaXR5IGZvciBtYXN0ZXIuCisKK1RoZXJlIGlzIGEgZm91cnRoIG9mZmljaWFsIGJyYW5jaCB0aGF0IGlzIHVzZWQgc2xpZ2h0bHkgZGlmZmVyZW50bHk6CisKKyogJ3B1JyAocHJvcG9zZWQgdXBkYXRlcykgaXMgYW4gaW50ZWdyYXRpb24gYnJhbmNoIGZvciB0aGluZ3MgdGhhdCBhcmUKKyAgbm90IHF1aXRlIHJlYWR5IGZvciBpbmNsdXNpb24geWV0IChzZWUgIkludGVncmF0aW9uIEJyYW5jaGVzIgorICBiZWxvdykuCisKK0VhY2ggb2YgdGhlIGZvdXIgYnJhbmNoZXMgaXMgdXN1YWxseSBhIGRpcmVjdCBkZXNjZW5kYW50IG9mIHRoZSBvbmUKK2Fib3ZlIGl0LgorCitDb25jZXB0dWFsbHksIHRoZSBmZWF0dXJlIGVudGVycyBhdCBhbiB1bnN0YWJsZSBicmFuY2ggKHVzdWFsbHkgJ25leHQnCitvciAncHUnKSwgYW5kICJncmFkdWF0ZXMiIHRvICdtYXN0ZXInIGZvciB0aGUgbmV4dCByZWxlYXNlIG9uY2UgaXQgaXMKK2NvbnNpZGVyZWQgc3RhYmxlIGVub3VnaC4KKworCitNZXJnaW5nIHVwd2FyZHMKK35+fn5+fn5+fn5+fn5+fgorCitUaGUgImRvd253YXJkcyBncmFkdWF0aW9uIiBkaXNjdXNzZWQgYWJvdmUgY2Fubm90IGJlIGRvbmUgYnkgYWN0dWFsbHkKK21lcmdpbmcgZG93bndhcmRzLCBob3dldmVyLCBzaW5jZSB0aGF0IHdvdWxkIG1lcmdlICdhbGwnIGNoYW5nZXMgb24KK3RoZSB1bnN0YWJsZSBicmFuY2ggaW50byB0aGUgc3RhYmxlIG9uZS4gIEhlbmNlIHRoZSBmb2xsb3dpbmc6CisKKy5NZXJnZSB1cHdhcmRzCitbY2FwdGlvbj0iUnVsZTogIl0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0Fsd2F5cyBjb21taXQgeW91ciBmaXhlcyB0byB0aGUgb2xkZXN0IHN1cHBvcnRlZCBicmFuY2ggdGhhdCByZXF1aXJlCit0aGVtLiAgVGhlbiAocGVyaW9kaWNhbGx5KSBtZXJnZSB0aGUgaW50ZWdyYXRpb24gYnJhbmNoZXMgdXB3YXJkcyBpbnRvIGVhY2gKK290aGVyLgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGdpdmVzIGEgdmVyeSBjb250cm9sbGVkIGZsb3cgb2YgZml4ZXMuICBJZiB5b3Ugbm90aWNlIHRoYXQgeW91CitoYXZlIGFwcGxpZWQgYSBmaXggdG8gZS5nLiAnbWFzdGVyJyB0aGF0IGlzIGFsc28gcmVxdWlyZWQgaW4gJ21haW50JywKK3lvdSB3aWxsIG5lZWQgdG8gY2hlcnJ5LXBpY2sgaXQgKHVzaW5nIGxpbmtnaXQ6Z2l0LWNoZXJyeS1waWNrWzFdKQorZG93bndhcmRzLiAgVGhpcyB3aWxsIGhhcHBlbiBhIGZldyB0aW1lcyBhbmQgaXMgbm90aGluZyB0byB3b3JyeSBhYm91dAordW5sZXNzIHlvdSBkbyBpdCB2ZXJ5IGZyZXF1ZW50bHkuCisKKworVG9waWMgYnJhbmNoZXMKK35+fn5+fn5+fn5+fn5+CisKK0FueSBub250cml2aWFsIGZlYXR1cmUgd2lsbCByZXF1aXJlIHNldmVyYWwgcGF0Y2hlcyB0byBpbXBsZW1lbnQsIGFuZAorbWF5IGdldCBleHRyYSBidWdmaXhlcyBvciBpbXByb3ZlbWVudHMgZHVyaW5nIGl0cyBsaWZldGltZS4KKworQ29tbWl0dGluZyBldmVyeXRoaW5nIGRpcmVjdGx5IG9uIHRoZSBpbnRlZ3JhdGlvbiBicmFuY2hlcyBsZWFkcyB0byBtYW55Citwcm9ibGVtczogQmFkIGNvbW1pdHMgY2Fubm90IGJlIHVuZG9uZSwgc28gdGhleSBtdXN0IGJlIHJldmVydGVkIG9uZQorYnkgb25lLCB3aGljaCBjcmVhdGVzIGNvbmZ1c2luZyBoaXN0b3JpZXMgYW5kIGZ1cnRoZXIgZXJyb3IgcG90ZW50aWFsCit3aGVuIHlvdSBmb3JnZXQgdG8gcmV2ZXJ0IHBhcnQgb2YgYSBncm91cCBvZiBjaGFuZ2VzLiAgV29ya2luZyBpbgorcGFyYWxsZWwgbWl4ZXMgdXAgdGhlIGNoYW5nZXMsIGNyZWF0aW5nIGZ1cnRoZXIgY29uZnVzaW9uLgorCitVc2Ugb2YgInRvcGljIGJyYW5jaGVzIiBzb2x2ZXMgdGhlc2UgcHJvYmxlbXMuICBUaGUgbmFtZSBpcyBwcmV0dHkKK3NlbGYgZXhwbGFuYXRvcnksIHdpdGggYSBjYXZlYXQgdGhhdCBjb21lcyBmcm9tIHRoZSAibWVyZ2UgdXB3YXJkcyIKK3J1bGUgYWJvdmU6CisKKy5Ub3BpYyBicmFuY2hlcworW2NhcHRpb249IlJ1bGU6ICJdCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitNYWtlIGEgc2lkZSBicmFuY2ggZm9yIGV2ZXJ5IHRvcGljIChmZWF0dXJlLCBidWdmaXgsIC4uLikuIEZvcmsgaXQgb2ZmCithdCB0aGUgb2xkZXN0IGludGVncmF0aW9uIGJyYW5jaCB0aGF0IHlvdSB3aWxsIGV2ZW50dWFsbHkgd2FudCB0byBtZXJnZSBpdAoraW50by4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworTWFueSB0aGluZ3MgY2FuIHRoZW4gYmUgZG9uZSB2ZXJ5IG5hdHVyYWxseToKKworKiBUbyBnZXQgdGhlIGZlYXR1cmUvYnVnZml4IGludG8gYW4gaW50ZWdyYXRpb24gYnJhbmNoLCBzaW1wbHkgbWVyZ2UKKyAgaXQuICBJZiB0aGUgdG9waWMgaGFzIGV2b2x2ZWQgZnVydGhlciBpbiB0aGUgbWVhbnRpbWUsIG1lcmdlIGFnYWluLgorICAoTm90ZSB0aGF0IHlvdSBkbyBub3QgbmVjZXNzYXJpbHkgaGF2ZSB0byBtZXJnZSBpdCB0byB0aGUgb2xkZXN0CisgIGludGVncmF0aW9uIGJyYW5jaCBmaXJzdC4gIEZvciBleGFtcGxlLCB5b3UgY2FuIGZpcnN0IG1lcmdlIGEgYnVnZml4CisgIHRvICduZXh0JywgZ2l2ZSBpdCBzb21lIHRlc3RpbmcgdGltZSwgYW5kIG1lcmdlIHRvICdtYWludCcgd2hlbiB5b3UKKyAga25vdyBpdCBpcyBzdGFibGUuKQorCisqIElmIHlvdSBmaW5kIHlvdSBuZWVkIG5ldyBmZWF0dXJlcyBmcm9tIHRoZSBicmFuY2ggJ290aGVyJyB0byBjb250aW51ZQorICB3b3JraW5nIG9uIHlvdXIgdG9waWMsIG1lcmdlICdvdGhlcicgdG8gJ3RvcGljJy4gIChIb3dldmVyLCBkbyBub3QKKyAgZG8gdGhpcyAianVzdCBoYWJpdHVhbGx5Iiwgc2VlIGJlbG93LikKKworKiBJZiB5b3UgZmluZCB5b3UgZm9ya2VkIG9mZiB0aGUgd3JvbmcgYnJhbmNoIGFuZCB3YW50IHRvIG1vdmUgaXQKKyAgImJhY2sgaW4gdGltZSIsIHVzZSBsaW5rZ2l0OmdpdC1yZWJhc2VbMV0uCisKK05vdGUgdGhhdCB0aGUgbGFzdCBwb2ludCBjbGFzaGVzIHdpdGggdGhlIG90aGVyIHR3bzogYSB0b3BpYyB0aGF0IGhhcworYmVlbiBtZXJnZWQgZWxzZXdoZXJlIHNob3VsZCBub3QgYmUgcmViYXNlZC4gIFNlZSB0aGUgc2VjdGlvbiBvbgorUkVDT1ZFUklORyBGUk9NIFVQU1RSRUFNIFJFQkFTRSBpbiBsaW5rZ2l0OmdpdC1yZWJhc2VbMV0uCisKK1dlIHNob3VsZCBwb2ludCBvdXQgdGhhdCAiaGFiaXR1YWxseSIgKHJlZ3VsYXJseSBmb3Igbm8gcmVhbCByZWFzb24pCittZXJnaW5nIGFuIGludGVncmF0aW9uIGJyYW5jaCBpbnRvIHlvdXIgdG9waWNzIC0tIGFuZCBieSBleHRlbnNpb24sCittZXJnaW5nIGFueXRoaW5nIHVwc3RyZWFtIGludG8gYW55dGhpbmcgZG93bnN0cmVhbSBvbiBhIHJlZ3VsYXIgYmFzaXMKKy0tIGlzIGZyb3duZWQgdXBvbjoKKworLk1lcmdlIHRvIGRvd25zdHJlYW0gb25seSBhdCB3ZWxsLWRlZmluZWQgcG9pbnRzCitbY2FwdGlvbj0iUnVsZTogIl0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0RvIG5vdCBtZXJnZSB0byBkb3duc3RyZWFtIGV4Y2VwdCB3aXRoIGEgZ29vZCByZWFzb246IHVwc3RyZWFtIEFQSQorY2hhbmdlcyBhZmZlY3QgeW91ciBicmFuY2g7IHlvdXIgYnJhbmNoIG5vIGxvbmdlciBtZXJnZXMgdG8gdXBzdHJlYW0KK2NsZWFubHk7IGV0Yy4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworT3RoZXJ3aXNlLCB0aGUgdG9waWMgdGhhdCB3YXMgbWVyZ2VkIHRvIHN1ZGRlbmx5IGNvbnRhaW5zIG1vcmUgdGhhbiBhCitzaW5nbGUgKHdlbGwtc2VwYXJhdGVkKSBjaGFuZ2UuICBUaGUgbWFueSByZXN1bHRpbmcgc21hbGwgbWVyZ2VzIHdpbGwKK2dyZWF0bHkgY2x1dHRlciB1cCBoaXN0b3J5LiAgQW55b25lIHdobyBsYXRlciBpbnZlc3RpZ2F0ZXMgdGhlIGhpc3RvcnkKK29mIGEgZmlsZSB3aWxsIGhhdmUgdG8gZmluZCBvdXQgd2hldGhlciB0aGF0IG1lcmdlIGFmZmVjdGVkIHRoZSB0b3BpYworaW4gZGV2ZWxvcG1lbnQuICBBbiB1cHN0cmVhbSBtaWdodCBldmVuIGluYWR2ZXJ0ZW50bHkgYmUgbWVyZ2VkIGludG8gYQorIm1vcmUgc3RhYmxlIiBicmFuY2guICBBbmQgc28gb24uCisKKworVGhyb3ctYXdheSBpbnRlZ3JhdGlvbgorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitJZiB5b3UgZm9sbG93ZWQgdGhlIGxhc3QgcGFyYWdyYXBoLCB5b3Ugd2lsbCBub3cgaGF2ZSBtYW55IHNtYWxsIHRvcGljCiticmFuY2hlcywgYW5kIG9jY2FzaW9uYWxseSB3b25kZXIgaG93IHRoZXkgaW50ZXJhY3QuICBQZXJoYXBzIHRoZQorcmVzdWx0IG9mIG1lcmdpbmcgdGhlbSBkb2VzIG5vdCBldmVuIHdvcms/ICBCdXQgb24gdGhlIG90aGVyIGhhbmQsIHdlCit3YW50IHRvIGF2b2lkIG1lcmdpbmcgdGhlbSBhbnl3aGVyZSAic3RhYmxlIiBiZWNhdXNlIHN1Y2ggbWVyZ2VzCitjYW5ub3QgZWFzaWx5IGJlIHVuZG9uZS4KKworVGhlIHNvbHV0aW9uLCBvZiBjb3Vyc2UsIGlzIHRvIG1ha2UgYSBtZXJnZSB0aGF0IHdlIGNhbiB1bmRvOiBtZXJnZQoraW50byBhIHRocm93LWF3YXkgYnJhbmNoLgorCisuVGhyb3ctYXdheSBpbnRlZ3JhdGlvbiBicmFuY2hlcworW2NhcHRpb249IlJ1bGU6ICJdCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitUbyB0ZXN0IHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIHRvcGljcywgbWVyZ2UgdGhlbSBpbnRvIGEKK3Rocm93LWF3YXkgYnJhbmNoLiAgWW91IG11c3QgbmV2ZXIgYmFzZSBhbnkgd29yayBvbiBzdWNoIGEgYnJhbmNoIQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJZiB5b3UgbWFrZSBpdCAodmVyeSkgY2xlYXIgdGhhdCB0aGlzIGJyYW5jaCBpcyBnb2luZyB0byBiZSBkZWxldGVkCityaWdodCBhZnRlciB0aGUgdGVzdGluZywgeW91IGNhbiBldmVuIHB1Ymxpc2ggdGhpcyBicmFuY2gsIGZvciBleGFtcGxlCit0byBnaXZlIHRoZSB0ZXN0ZXJzIGEgY2hhbmNlIHRvIHdvcmsgd2l0aCBpdCwgb3Igb3RoZXIgZGV2ZWxvcGVycyBhCitjaGFuY2UgdG8gc2VlIGlmIHRoZWlyIGluLXByb2dyZXNzIHdvcmsgd2lsbCBiZSBjb21wYXRpYmxlLiAgYGdpdC5naXRgCitoYXMgc3VjaCBhbiBvZmZpY2lhbCB0aHJvdy1hd2F5IGludGVncmF0aW9uIGJyYW5jaCBjYWxsZWQgJ3B1Jy4KKworCitESVNUUklCVVRFRCBXT1JLRkxPV1MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBZnRlciB0aGUgbGFzdCBzZWN0aW9uLCB5b3Ugc2hvdWxkIGtub3cgaG93IHRvIG1hbmFnZSB0b3BpY3MuICBJbgorZ2VuZXJhbCwgeW91IHdpbGwgbm90IGJlIHRoZSBvbmx5IHBlcnNvbiB3b3JraW5nIG9uIHRoZSBwcm9qZWN0LCBzbworeW91IHdpbGwgaGF2ZSB0byBzaGFyZSB5b3VyIHdvcmsuCisKK1JvdWdobHkgc3BlYWtpbmcsIHRoZXJlIGFyZSB0d28gaW1wb3J0YW50IHdvcmtmbG93czogbWVyZ2UgYW5kIHBhdGNoLgorVGhlIGltcG9ydGFudCBkaWZmZXJlbmNlIGlzIHRoYXQgdGhlIG1lcmdlIHdvcmtmbG93IGNhbiBwcm9wYWdhdGUgZnVsbAoraGlzdG9yeSwgaW5jbHVkaW5nIG1lcmdlcywgd2hpbGUgcGF0Y2hlcyBjYW5ub3QuICBCb3RoIHdvcmtmbG93cyBjYW4KK2JlIHVzZWQgaW4gcGFyYWxsZWw6IGluIGBnaXQuZ2l0YCwgb25seSBzdWJzeXN0ZW0gbWFpbnRhaW5lcnMgdXNlCit0aGUgbWVyZ2Ugd29ya2Zsb3csIHdoaWxlIGV2ZXJ5b25lIGVsc2Ugc2VuZHMgcGF0Y2hlcy4KKworTm90ZSB0aGF0IHRoZSBtYWludGFpbmVyKHMpIG1heSBpbXBvc2UgcmVzdHJpY3Rpb25zLCBzdWNoIGFzCisiU2lnbmVkLW9mZi1ieSIgcmVxdWlyZW1lbnRzLCB0aGF0IGFsbCBjb21taXRzL3BhdGNoZXMgc3VibWl0dGVkIGZvcgoraW5jbHVzaW9uIG11c3QgYWRoZXJlIHRvLiAgQ29uc3VsdCB5b3VyIHByb2plY3QncyBkb2N1bWVudGF0aW9uIGZvcgorbW9yZSBpbmZvcm1hdGlvbi4KKworCitNZXJnZSB3b3JrZmxvdworfn5+fn5+fn5+fn5+fn4KKworVGhlIG1lcmdlIHdvcmtmbG93IHdvcmtzIGJ5IGNvcHlpbmcgYnJhbmNoZXMgYmV0d2VlbiB1cHN0cmVhbSBhbmQKK2Rvd25zdHJlYW0uICBVcHN0cmVhbSBjYW4gbWVyZ2UgY29udHJpYnV0aW9ucyBpbnRvIHRoZSBvZmZpY2lhbAoraGlzdG9yeTsgZG93bnN0cmVhbSBiYXNlIHRoZWlyIHdvcmsgb24gdGhlIG9mZmljaWFsIGhpc3RvcnkuCisKK1RoZXJlIGFyZSB0aHJlZSBtYWluIHRvb2xzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHRoaXM6CisKKyogbGlua2dpdDpnaXQtcHVzaFsxXSBjb3BpZXMgeW91ciBicmFuY2hlcyB0byBhIHJlbW90ZSByZXBvc2l0b3J5LAorICB1c3VhbGx5IHRvIG9uZSB0aGF0IGNhbiBiZSByZWFkIGJ5IGFsbCBpbnZvbHZlZCBwYXJ0aWVzOworCisqIGxpbmtnaXQ6Z2l0LWZldGNoWzFdIHRoYXQgY29waWVzIHJlbW90ZSBicmFuY2hlcyB0byB5b3VyIHJlcG9zaXRvcnk7CisgIGFuZAorCisqIGxpbmtnaXQ6Z2l0LXB1bGxbMV0gdGhhdCBkb2VzIGZldGNoIGFuZCBtZXJnZSBpbiBvbmUgZ28uCisKK05vdGUgdGhlIGxhc3QgcG9pbnQuICBEbyAnbm90JyB1c2UgJ2dpdC1wdWxsJyB1bmxlc3MgeW91IGFjdHVhbGx5IHdhbnQKK3RvIG1lcmdlIHRoZSByZW1vdGUgYnJhbmNoLgorCitHZXR0aW5nIGNoYW5nZXMgb3V0IGlzIGVhc3k6CisKKy5QdXNoL3B1bGw6IFB1Ymxpc2hpbmcgYnJhbmNoZXMvdG9waWNzCitbY2FwdGlvbj0iUmVjaXBlOiAiXQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorYGdpdCBwdXNoIDxyZW1vdGU+IDxicmFuY2g+YCBhbmQgdGVsbCBldmVyeW9uZSB3aGVyZSB0aGV5IGNhbiBmZXRjaAorZnJvbS4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworWW91IHdpbGwgc3RpbGwgaGF2ZSB0byB0ZWxsIHBlb3BsZSBieSBvdGhlciBtZWFucywgc3VjaCBhcyBtYWlsLiAgKEdpdAorcHJvdmlkZXMgdGhlIGxpbmtnaXQ6Z2l0LXJlcXVlc3QtcHVsbFsxXSB0byBzZW5kIHByZWZvcm1hdHRlZCBwdWxsCityZXF1ZXN0cyB0byB1cHN0cmVhbSBtYWludGFpbmVycyB0byBzaW1wbGlmeSB0aGlzIHRhc2suKQorCitJZiB5b3UganVzdCB3YW50IHRvIGdldCB0aGUgbmV3ZXN0IGNvcGllcyBvZiB0aGUgaW50ZWdyYXRpb24gYnJhbmNoZXMsCitzdGF5aW5nIHVwIHRvIGRhdGUgaXMgZWFzeSB0b286CisKKy5QdXNoL3B1bGw6IFN0YXlpbmcgdXAgdG8gZGF0ZQorW2NhcHRpb249IlJlY2lwZTogIl0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1VzZSBgZ2l0IGZldGNoIDxyZW1vdGU+YCBvciBgZ2l0IHJlbW90ZSB1cGRhdGVgIHRvIHN0YXkgdXAgdG8gZGF0ZS4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlbiBzaW1wbHkgZm9yayB5b3VyIHRvcGljIGJyYW5jaGVzIGZyb20gdGhlIHN0YWJsZSByZW1vdGVzIGFzCitleHBsYWluZWQgZWFybGllci4KKworSWYgeW91IGFyZSBhIG1haW50YWluZXIgYW5kIHdvdWxkIGxpa2UgdG8gbWVyZ2Ugb3RoZXIgcGVvcGxlJ3MgdG9waWMKK2JyYW5jaGVzIHRvIHRoZSBpbnRlZ3JhdGlvbiBicmFuY2hlcywgdGhleSB3aWxsIHR5cGljYWxseSBzZW5kIGEKK3JlcXVlc3QgdG8gZG8gc28gYnkgbWFpbC4gIFN1Y2ggYSByZXF1ZXN0IGxvb2tzIGxpa2UKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUGxlYXNlIHB1bGwgZnJvbQorICAgIDx1cmw+IDxicmFuY2g+CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0luIHRoYXQgY2FzZSwgJ2dpdC1wdWxsJyBjYW4gZG8gdGhlIGZldGNoIGFuZCBtZXJnZSBpbiBvbmUgZ28sIGFzCitmb2xsb3dzLgorCisuUHVzaC9wdWxsOiBNZXJnaW5nIHJlbW90ZSB0b3BpY3MKK1tjYXB0aW9uPSJSZWNpcGU6ICJdCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitgZ2l0IHB1bGwgPHVybD4gPGJyYW5jaD5gCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK09jY2FzaW9uYWxseSwgdGhlIG1haW50YWluZXIgbWF5IGdldCBtZXJnZSBjb25mbGljdHMgd2hlbiBoZSB0cmllcyB0bworcHVsbCBjaGFuZ2VzIGZyb20gZG93bnN0cmVhbS4gIEluIHRoaXMgY2FzZSwgaGUgY2FuIGFzayBkb3duc3RyZWFtIHRvCitkbyB0aGUgbWVyZ2UgYW5kIHJlc29sdmUgdGhlIGNvbmZsaWN0cyB0aGVtc2VsdmVzIChwZXJoYXBzIHRoZXkgd2lsbAora25vdyBiZXR0ZXIgaG93IHRvIHJlc29sdmUgdGhlbSkuICBJdCBpcyBvbmUgb2YgdGhlIHJhcmUgY2FzZXMgd2hlcmUKK2Rvd25zdHJlYW0gJ3Nob3VsZCcgbWVyZ2UgZnJvbSB1cHN0cmVhbS4KKworCitQYXRjaCB3b3JrZmxvdworfn5+fn5+fn5+fn5+fn4KKworSWYgeW91IGFyZSBhIGNvbnRyaWJ1dG9yIHRoYXQgc2VuZHMgY2hhbmdlcyB1cHN0cmVhbSBpbiB0aGUgZm9ybSBvZgorZW1haWxzLCB5b3Ugc2hvdWxkIHVzZSB0b3BpYyBicmFuY2hlcyBhcyB1c3VhbCAoc2VlIGFib3ZlKS4gIFRoZW4gdXNlCitsaW5rZ2l0OmdpdC1mb3JtYXQtcGF0Y2hbMV0gdG8gZ2VuZXJhdGUgdGhlIGNvcnJlc3BvbmRpbmcgZW1haWxzCisoaGlnaGx5IHJlY29tbWVuZGVkIG92ZXIgbWFudWFsbHkgZm9ybWF0dGluZyB0aGVtIGJlY2F1c2UgaXQgbWFrZXMgdGhlCittYWludGFpbmVyJ3MgbGlmZSBlYXNpZXIpLgorCisuZm9ybWF0LXBhdGNoL2FtOiBQdWJsaXNoaW5nIGJyYW5jaGVzL3RvcGljcworW2NhcHRpb249IlJlY2lwZTogIl0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyogYGdpdCBmb3JtYXQtcGF0Y2ggLU0gdXBzdHJlYW0uLnRvcGljYCB0byB0dXJuIHRoZW0gaW50byBwcmVmb3JtYXR0ZWQKKyAgcGF0Y2ggZmlsZXMKKyogYGdpdCBzZW5kLWVtYWlsIC0tdG89PHJlY2lwaWVudD4gPHBhdGNoZXM+YAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitTZWUgdGhlIGxpbmtnaXQ6Z2l0LWZvcm1hdC1wYXRjaFsxXSBhbmQgbGlua2dpdDpnaXQtc2VuZC1lbWFpbFsxXQorbWFucGFnZXMgZm9yIGZ1cnRoZXIgdXNhZ2Ugbm90ZXMuCisKK0lmIHRoZSBtYWludGFpbmVyIHRlbGxzIHlvdSB0aGF0IHlvdXIgcGF0Y2ggbm8gbG9uZ2VyIGFwcGxpZXMgdG8gdGhlCitjdXJyZW50IHVwc3RyZWFtLCB5b3Ugd2lsbCBoYXZlIHRvIHJlYmFzZSB5b3VyIHRvcGljICh5b3UgY2Fubm90IHVzZSBhCittZXJnZSBiZWNhdXNlIHlvdSBjYW5ub3QgZm9ybWF0LXBhdGNoIG1lcmdlcyk6CisKKy5mb3JtYXQtcGF0Y2gvYW06IEtlZXBpbmcgdG9waWNzIHVwIHRvIGRhdGUKK1tjYXB0aW9uPSJSZWNpcGU6ICJdCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitgZ2l0IHB1bGwgLS1yZWJhc2UgPHVybD4gPGJyYW5jaD5gCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1lvdSBjYW4gdGhlbiBmaXggdGhlIGNvbmZsaWN0cyBkdXJpbmcgdGhlIHJlYmFzZS4gIFByZXN1bWFibHkgeW91IGhhdmUKK25vdCBwdWJsaXNoZWQgeW91ciB0b3BpYyBvdGhlciB0aGFuIGJ5IG1haWwsIHNvIHJlYmFzaW5nIGl0IGlzIG5vdCBhCitwcm9ibGVtLgorCitJZiB5b3UgcmVjZWl2ZSBzdWNoIGEgcGF0Y2ggc2VyaWVzIChhcyBtYWludGFpbmVyLCBvciBwZXJoYXBzIGFzIGEKK3JlYWRlciBvZiB0aGUgbWFpbGluZyBsaXN0IGl0IHdhcyBzZW50IHRvKSwgc2F2ZSB0aGUgbWFpbHMgdG8gZmlsZXMsCitjcmVhdGUgYSBuZXcgdG9waWMgYnJhbmNoIGFuZCB1c2UgJ2dpdC1hbScgdG8gaW1wb3J0IHRoZSBjb21taXRzOgorCisuZm9ybWF0LXBhdGNoL2FtOiBJbXBvcnRpbmcgcGF0Y2hlcworW2NhcHRpb249IlJlY2lwZTogIl0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2BnaXQgYW0gPCBwYXRjaGAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworT25lIGZlYXR1cmUgd29ydGggcG9pbnRpbmcgb3V0IGlzIHRoZSB0aHJlZS13YXkgbWVyZ2UsIHdoaWNoIGNhbiBoZWxwCitpZiB5b3UgZ2V0IGNvbmZsaWN0czogYGdpdCBhbSAtM2Agd2lsbCB1c2UgaW5kZXggaW5mb3JtYXRpb24gY29udGFpbmVkCitpbiBwYXRjaGVzIHRvIGZpZ3VyZSBvdXQgdGhlIG1lcmdlIGJhc2UuICBTZWUgbGlua2dpdDpnaXQtYW1bMV0gZm9yCitvdGhlciBvcHRpb25zLgorCisKK1NFRSBBTFNPCistLS0tLS0tLQorbGlua2dpdDpnaXR0dXRvcmlhbFs3XSwKK2xpbmtnaXQ6Z2l0LXB1c2hbMV0sCitsaW5rZ2l0OmdpdC1wdWxsWzFdLAorbGlua2dpdDpnaXQtbWVyZ2VbMV0sCitsaW5rZ2l0OmdpdC1yZWJhc2VbMV0sCitsaW5rZ2l0OmdpdC1mb3JtYXQtcGF0Y2hbMV0sCitsaW5rZ2l0OmdpdC1zZW5kLWVtYWlsWzFdLAorbGlua2dpdDpnaXQtYW1bMV0KKworR0lUCistLS0KK1BhcnQgb2YgdGhlIGxpbmtnaXQ6Z2l0WzFdIHN1aXRlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9nbG9zc2FyeS1jb250ZW50LnR4dCBiL0RvY3VtZW50YXRpb24vZ2xvc3NhcnktY29udGVudC50eHQKaW5kZXggOWI0YTRmNC4uOWFmY2E3NSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9nbG9zc2FyeS1jb250ZW50LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dsb3NzYXJ5LWNvbnRlbnQudHh0CkBAIC0xODMsNyArMTgzLDggQEAKIAlhbmQgcG90ZW50aWFsbHkgYWJvcnRlZCwgYW5kIGFsbG93IGZvciBhIHBvc3Qtbm90aWZpY2F0aW9uIGFmdGVyIHRoZQogCW9wZXJhdGlvbiBpcyBkb25lLiBUaGUgaG9vayBzY3JpcHRzIGFyZSBmb3VuZCBpbiB0aGUKIAlgJEdJVF9ESVIvaG9va3MvYCBkaXJlY3RvcnksIGFuZCBhcmUgZW5hYmxlZCBieSBzaW1wbHkKLQltYWtpbmcgdGhlbSBleGVjdXRhYmxlLgorCXJlbW92aW5nIHRoZSBgLnNhbXBsZWAgc3VmZml4IGZyb20gdGhlIGZpbGVuYW1lLiBJbiBlYXJsaWVyIHZlcnNpb25zCisJb2YgZ2l0IHlvdSBoYWQgdG8gbWFrZSB0aGVtIGV4ZWN1dGFibGUuCiAKIFtbZGVmX2luZGV4XV1pbmRleDo6CiAJQSBjb2xsZWN0aW9uIG9mIGZpbGVzIHdpdGggc3RhdCBpbmZvcm1hdGlvbiwgd2hvc2UgY29udGVudHMgYXJlIHN0b3JlZApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ob3d0by9yZWJhc2UtYW5kLWVkaXQudHh0IGIvRG9jdW1lbnRhdGlvbi9ob3d0by9yZWJhc2UtYW5kLWVkaXQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTQ5MDlmLi4wMDAwMDAwCi0tLSBhL0RvY3VtZW50YXRpb24vaG93dG8vcmViYXNlLWFuZC1lZGl0LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLURhdGU6CVNhdCwgMTMgQXVnIDIwMDUgMjI6MTY6MDIgLTA3MDAgKFBEVCkKLUZyb206CUxpbnVzIFRvcnZhbGRzIDx0b3J2YWxkc0Bvc2RsLm9yZz4KLVRvOglTdGV2ZSBGcmVuY2ggPHNtZnJlbmNoQGF1c3Rpbi5yci5jb20+Ci1jYzoJZ2l0QHZnZXIua2VybmVsLm9yZwotU3ViamVjdDogUmU6IHNlbmRpbmcgY2hhbmdlc2V0cyBmcm9tIHRoZSBtaWRkbGUgb2YgYSBnaXQgdHJlZQotQWJzdHJhY3Q6IEluIHRoaXMgYXJ0aWNsZSwgTGludXMgZGVtb25zdHJhdGVzIGhvdyBhIGJyb2tlbiBjb21taXQKLSBpbiBhIHNlcXVlbmNlIG9mIGNvbW1pdHMgY2FuIGJlIHJlbW92ZWQgYnkgcmV3aW5kaW5nIHRoZSBoZWFkIGFuZAotIHJlYXBwbHlpbmcgc2VsZWN0ZWQgY2hhbmdlcy4KLQotT24gU2F0LCAxMyBBdWcgMjAwNSwgTGludXMgVG9ydmFsZHMgd3JvdGU6Ci0KLT4gVGhhdCdzIGNvcnJlY3QuIFNhbWUgdGhpbmdzIGFwcGx5OiB5b3UgY2FuIG1vdmUgYSBwYXRjaCBvdmVyLCBhbmQgY3JlYXRlIGEKLT4gbmV3IG9uZSB3aXRoIGEgbW9kaWZpZWQgY29tbWVudCwgYnV0IGJhc2ljYWxseSB0aGUgX29sZF8gY29tbWl0IHdpbGwgYmUKLT4gaW1tdXRhYmxlLgotCi1MZXQgbWUgY2xhcmlmeS4KLQotWW91IGNhbiBlbnRpcmVseSBfZHJvcF8gb2xkIGJyYW5jaGVzLCBzbyBjb21taXRzIG1heSBiZSBpbW11dGFibGUsIGJ1dAotbm90aGluZyBmb3JjZXMgeW91IHRvIGtlZXAgdGhlbS4gT2YgY291cnNlLCB3aGVuIHlvdSBkcm9wIGEgY29tbWl0LCB5b3UnbGwKLWFsd2F5cyBlbmQgdXAgZHJvcHBpbmcgYWxsIHRoZSBjb21taXRzIHRoYXQgZGVwZW5kZWQgb24gaXQsIGFuZCBpZiB5b3UKLWFjdHVhbGx5IGdvdCBzb21lYm9keSBlbHNlIHRvIHB1bGwgdGhhdCBjb21taXQgeW91IGNhbid0IGRyb3AgaXQgZnJvbQotX3RoZWlyXyByZXBvc2l0b3J5LCBidXQgdW5kb2luZyB0aGluZ3MgaXMgbm90IGltcG9zc2libGUuCi0KLUZvciBleGFtcGxlLCBsZXQncyBzYXkgdGhhdCB5b3UndmUgbWFkZSBhIG1lc3Mgb2YgdGhpbmdzOiB5b3UndmUgY29tbWl0dGVkCi10aHJlZSBjb21taXRzICJvbGQtPmEtPmItPmMiLCBhbmQgeW91IG5vdGljZSB0aGF0ICJhIiB3YXMgYnJva2VuLCBidXQgeW91Ci13YW50IHRvIHNhdmUgImIiIGFuZCAiYyIuIFdoYXQgeW91IGNhbiBkbyBpcwotCi0JIyBDcmVhdGUgYSBicmFuY2ggImJyb2tlbiIgdGhhdCBpcyB0aGUgY3VycmVudCBjb2RlCi0JIyBmb3IgcmVmZXJlbmNlCi0JZ2l0IGJyYW5jaCBicm9rZW4KLQotCSMgUmVzZXQgdGhlIG1haW4gYnJhbmNoIHRvIHRocmVlIHBhcmVudHMgYmFjazogdGhpcwotCSMgZWZmZWN0aXZlbHkgdW5kb2VzIHRoZSB0aHJlZSB0b3AgY29tbWl0cwotCWdpdCByZXNldCBIRUFEXl5eCi0JZ2l0IGNoZWNrb3V0IC1mCi0KLQkjIENoZWNrIHRoZSByZXN1bHQgdmlzdWFsbHkgdG8gbWFrZSBzdXJlIHlvdSBrbm93IHdoYXQncwotCSMgZ29pbmcgb24KLQlnaXRrIC0tYWxsCi0KLQkjIFJlLWFwcGx5IHRoZSB0d28gdG9wIG9uZXMgZnJvbSAiYnJva2VuIgotCSMKLQkjIEZpcnN0ICJwYXJlbnQgb2YgYnJva2VuIiAoYWthIGIpOgotCWdpdC1kaWZmLXRyZWUgLXAgYnJva2VuXiB8IGdpdC1hcHBseSAtLWluZGV4Ci0JZ2l0IGNvbW1pdCAtLXJlZWRpdD1icm9rZW5eCi0KLQkjIFRoZW4gInRvcCBvZiBicm9rZW4iIChha2EgYyk6Ci0JZ2l0LWRpZmYtdHJlZSAtcCBicm9rZW4gfCBnaXQtYXBwbHkgLS1pbmRleAotCWdpdCBjb21taXQgLS1yZWVkaXQ9YnJva2VuCi0KLWFuZCB5b3UndmUgbm93IHJlLWFwcGxpZWQgKGFuZCBwb3NzaWJseSBlZGl0ZWQgdGhlIGNvbW1lbnRzKSB0aGUgdHdvCi1jb21taXRzIGIvYywgYW5kIGNvbW1pdCAiYSIgaXMgYmFzaWNhbGx5IGdvbmUgKGl0IHN0aWxsIGV4aXN0cyBpbiB0aGUKLSJicm9rZW4iIGJyYW5jaCwgb2YgY291cnNlKS4KLQotRmluYWxseSwgY2hlY2sgb3V0IHRoZSBlbmQgcmVzdWx0IGFnYWluOgotCi0JIyBMb29rIGF0IHRoZSBuZXcgY29tbWl0IGhpc3RvcnkKLQlnaXRrIC0tYWxsCi0KLXRvIHNlZSB0aGF0IGV2ZXJ5dGhpbmcgbG9va3Mgc2Vuc2libGUuCi0KLUFuZCB0aGVuLCB5b3UgY2FuIGp1c3QgcmVtb3ZlIHRoZSBicm9rZW4gYnJhbmNoIGlmIHlvdSBkZWNpZGUgeW91IHJlYWxseQotZG9uJ3Qgd2FudCBpdDoKLQotCSMgcmVtb3ZlICdicm9rZW4nIGJyYW5jaAotCWdpdCBicmFuY2ggLWQgYnJva2VuCi0KLQkjIFBydW5lIG9sZCBvYmplY3RzIGlmIHlvdSdyZSByZWFsbHkgcmVhbGx5IHN1cmUKLQlnaXQgcHJ1bmUKLQotQW5kIHllYWgsIEknbSBzdXJlIHRoZXJlIGFyZSBvdGhlciB3YXlzIG9mIGRvaW5nIHRoaXMuIEFuZCBhcyB1c3VhbCwgdGhlCi1hYm92ZSBpcyB0b3RhbGx5IHVudGVzdGVkLCBhbmQgSSBqdXN0IHdyb3RlIGl0IGRvd24gaW4gdGhpcyBlbWFpbCwgc28gaWYKLUkndmUgZG9uZSBzb21ldGhpbmcgd3JvbmcsIHlvdSdsbCBoYXZlIHRvIGZpZ3VyZSBpdCBvdXQgb24geW91ciBvd24gOykKLQotCQkJTGludXMKLS0KLVRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRoZSBsaW5lICJ1bnN1YnNjcmliZSBnaXQiIGluCi10aGUgYm9keSBvZiBhIG1lc3NhZ2UgdG8gbWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZwotTW9yZSBtYWpvcmRvbW8gaW5mbyBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1sCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2hvd3RvL3JldmVydC1hLWZhdWx0eS1tZXJnZS50eHQgYi9Eb2N1bWVudGF0aW9uL2hvd3RvL3JldmVydC1hLWZhdWx0eS1tZXJnZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzliMWRhNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaG93dG8vcmV2ZXJ0LWEtZmF1bHR5LW1lcmdlLnR4dApAQCAtMCwwICsxLDE3OSBAQAorRGF0ZTogRnJpLCAxOSBEZWMgMjAwOCAwMDo0NToxOSAtMDgwMAorRnJvbTogTGludXMgVG9ydmFsZHMgPHRvcnZhbGRzQGxpbnV4LWZvdW5kYXRpb24ub3JnPiwgSnVuaW8gQyBIYW1hbm8gPGdpdHN0ZXJAcG9ib3guY29tPgorU3ViamVjdDogUmU6IE9kZCBtZXJnZSBiZWhhdmlvdXIgaW52b2x2aW5nIHJldmVydHMKK0Fic3RyYWN0OiBTb21ldGltZXMgYSBicmFuY2ggdGhhdCB3YXMgYWxyZWFkeSBtZXJnZWQgdG8gdGhlIG1haW5saW5lCisgaXMgbGF0ZXIgZm91bmQgdG8gYmUgZmF1bHR5LiAgTGludXMgYW5kIEp1bmlvIGdpdmUgZ3VpZGFuY2Ugb24KKyByZWNvdmVyaW5nIGZyb20gc3VjaCBhIHByZW1hdHVyZSBtZXJnZSBhbmQgY29udGludWluZyBkZXZlbG9wbWVudAorIGFmdGVyIHRoZSBvZmZlbmRpbmcgYnJhbmNoIGlzIGZpeGVkLgorTWVzc2FnZS1JRDogPDd2b2N6OGE2emsuZnNmQGdpdHN0ZXIuc2lhbWVzZS5keW5kbnMub3JnPgorUmVmZXJlbmNlczogPGFscGluZS5MRkQuMi4wMC4wODEyMTgxOTQ5NDUwLjE0MDE0QGxvY2FsaG9zdC5sb2NhbGRvbWFpbj4KKworQWxhbiA8YWxhbkBjbHVlc2VydmVyLm9yZz4gc2FpZDoKKworICAgIEkgaGF2ZSBhIG1hc3RlciBicmFuY2guICBXZSBoYXZlIGEgYnJhbmNoIG9mZiBvZiB0aGF0IHRoYXQgc29tZQorICAgIGRldmVsb3BlcnMgYXJlIGRvaW5nIHdvcmsgb24uICBUaGV5IGNsYWltIGl0IGlzIHJlYWR5LiBXZSBtZXJnZSBpdAorICAgIGludG8gdGhlIG1hc3RlciBicmFuY2guICBJdCBicmVha3Mgc29tZXRoaW5nIHNvIHdlIHJldmVydCB0aGUgbWVyZ2UuCisgICAgVGhleSBtYWtlIGNoYW5nZXMgdG8gdGhlIGNvZGUuICB0aGV5IGdldCBpdCB0byBhIHBvaW50IHdoZXJlIHRoZXkgc2F5CisgICAgaXQgaXMgb2sgYW5kIHdlIG1lcmdlIGFnYWluLgorCisgICAgV2hlbiBleGFtaW5lZCwgd2UgZmluZCB0aGF0IGNvZGUgY2hhbmdlcyBtYWRlIGJlZm9yZSB0aGUgcmV2ZXJ0IGFyZQorICAgIG5vdCBpbiB0aGUgbWFzdGVyIGJyYW5jaCwgYnV0IGNvZGUgY2hhbmdlcyBhZnRlciBhcmUgaW4gdGhlIG1hc3RlcgorICAgIGJyYW5jaC4KKworYW5kIGFza2VkIGZvciBoZWxwIHJlY292ZXJpbmcgZnJvbSB0aGlzIHNpdHVhdGlvbi4KKworVGhlIGhpc3RvcnkgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlICJyZXZlcnQgb2YgdGhlIG1lcmdlIiB3b3VsZCBsb29rIGxpa2UKK3RoaXM6CisKKyAtLS1vLS0tby0tLW8tLS1NLS0teC0tLXgtLS1XCisJICAgICAgIC8KKyAgICAgICAtLS1BLS0tQgorCit3aGVyZSBBIGFuZCBCIGFyZSBvbiB0aGUgc2lkZSBkZXZlbG9wbWVudCB0aGF0IHdhcyBub3Qgc28gZ29vZCwgTSBpcyB0aGUKK21lcmdlIHRoYXQgYnJpbmdzIHRoZXNlIHByZW1hdHVyZSBjaGFuZ2VzIGludG8gdGhlIG1haW5saW5lLCB4IGFyZSBjaGFuZ2VzCit1bnJlbGF0ZWQgdG8gd2hhdCB0aGUgc2lkZSBicmFuY2ggZGlkIGFuZCBhbHJlYWR5IG1hZGUgb24gdGhlIG1haW5saW5lLAorYW5kIFcgaXMgdGhlICJyZXZlcnQgb2YgdGhlIG1lcmdlIE0iIChkb2Vzbid0IFcgbG9vayBNIHVwc2lkZSBkb3duPykuCitJT1csICJkaWZmIFdeLi5XIiBpcyBzaW1pbGFyIHRvICJkaWZmIC1SIE1eLi5NIi4KKworU3VjaCBhICJyZXZlcnQiIG9mIGEgbWVyZ2UgY2FuIGJlIG1hZGUgd2l0aDoKKworICAgICQgZ2l0IHJldmVydCAtbSAxIE0KKworQWZ0ZXIgdGhlIGRldmVscGVycyBvZiB0aGUgc2lkZSBicmFuY2ggZml4ZXMgdGhlaXIgbWlzdGFrZXMsIHRoZSBoaXN0b3J5CittYXkgbG9vayBsaWtlIHRoaXM6CisKKyAtLS1vLS0tby0tLW8tLS1NLS0teC0tLXgtLS1XLS0teAorCSAgICAgICAvCisgICAgICAgLS0tQS0tLUItLS0tLS0tLS0tLS0tLS0tLS0tQy0tLUQKKword2hlcmUgQyBhbmQgRCBhcmUgdG8gZml4IHdoYXQgd2FzIGJyb2tlbiBpbiBBIGFuZCBCLCBhbmQgeW91IG1heSBhbHJlYWR5CitoYXZlIHNvbWUgb3RoZXIgY2hhbmdlcyBvbiB0aGUgbWFpbmxpbmUgYWZ0ZXIgVy4KKworSWYgeW91IG1lcmdlIHRoZSB1cGRhdGVkIHNpZGUgYnJhbmNoICh3aXRoIEQgYXQgaXRzIHRpcCksIG5vbmUgb2YgdGhlCitjaGFuZ2VzIG1hZGUgaW4gQSBub3IgQiB3aWxsIGJlIGluIHRoZSByZXN1bHQsIGJlY2F1c2UgdGhleSB3ZXJlIHJldmVydGVkCitieSBXLiAgVGhhdCBpcyB3aGF0IEFsYW4gc2F3LgorCitMaW51cyBleHBsYWlucyB0aGUgc2l0dWF0aW9uOgorCisgICAgUmV2ZXJ0aW5nIGEgcmVndWxhciBjb21taXQganVzdCBlZmZlY3RpdmVseSB1bmRvZXMgd2hhdCB0aGF0IGNvbW1pdAorICAgIGRpZCwgYW5kIGlzIGZhaXJseSBzdHJhaWdodGZvcndhcmQuIEJ1dCByZXZlcnRpbmcgYSBtZXJnZSBjb21taXQgYWxzbworICAgIHVuZG9lcyB0aGUgX2RhdGFfIHRoYXQgdGhlIGNvbW1pdCBjaGFuZ2VkLCBidXQgaXQgZG9lcyBhYnNvbHV0ZWx5CisgICAgbm90aGluZyB0byB0aGUgZWZmZWN0cyBvbiBfaGlzdG9yeV8gdGhhdCB0aGUgbWVyZ2UgaGFkLgorCisgICAgU28gdGhlIG1lcmdlIHdpbGwgc3RpbGwgZXhpc3QsIGFuZCBpdCB3aWxsIHN0aWxsIGJlIHNlZW4gYXMgam9pbmluZworICAgIHRoZSB0d28gYnJhbmNoZXMgdG9nZXRoZXIsIGFuZCBmdXR1cmUgbWVyZ2VzIHdpbGwgc2VlIHRoYXQgbWVyZ2UgYXMKKyAgICB0aGUgbGFzdCBzaGFyZWQgc3RhdGUgLSBhbmQgdGhlIHJldmVydCB0aGF0IHJldmVydGVkIHRoZSBtZXJnZSBicm91Z2h0CisgICAgaW4gd2lsbCBub3QgYWZmZWN0IHRoYXQgYXQgYWxsLgorCisgICAgU28gYSAicmV2ZXJ0IiB1bmRvZXMgdGhlIGRhdGEgY2hhbmdlcywgYnV0IGl0J3MgdmVyeSBtdWNoIF9ub3RfIGFuCisgICAgInVuZG8iIGluIHRoZSBzZW5zZSB0aGF0IGl0IGRvZXNuJ3QgdW5kbyB0aGUgZWZmZWN0cyBvZiBhIGNvbW1pdCBvbgorICAgIHRoZSByZXBvc2l0b3J5IGhpc3RvcnkuCisKKyAgICBTbyBpZiB5b3UgdGhpbmsgb2YgInJldmVydCIgYXMgInVuZG8iLCB0aGVuIHlvdSdyZSBnb2luZyB0byBhbHdheXMKKyAgICBtaXNzIHRoaXMgcGFydCBvZiByZXZlcnRzLiBZZXMsIGl0IHVuZG9lcyB0aGUgZGF0YSwgYnV0IG5vLCBpdCBkb2Vzbid0CisgICAgdW5kbyBoaXN0b3J5LgorCitJbiBzdWNoIGEgc2l0dWF0aW9uLCB5b3Ugd291bGQgd2FudCB0byBmaXJzdCByZXZlcnQgdGhlIHByZXZpb3VzIHJldmVydCwKK3doaWNoIHdvdWxkIG1ha2UgdGhlIGhpc3RvcnkgbG9vayBsaWtlIHRoaXM6CisKKyAtLS1vLS0tby0tLW8tLS1NLS0teC0tLXgtLS1XLS0teC0tLVkKKwkgICAgICAgLworICAgICAgIC0tLUEtLS1CLS0tLS0tLS0tLS0tLS0tLS0tLUMtLS1ECisKK3doZXJlIFkgaXMgdGhlIHJldmVydCBvZiBXLiAgU3VjaCBhICJyZXZlcnQgb2YgdGhlIHJldmVydCIgY2FuIGJlIGRvbmUKK3dpdGg6CisKKyAgICAkIGdpdCByZXZlcnQgVworCitUaGlzIGhpc3Rvcnkgd291bGQgKGlnbm9yaW5nIHBvc3NpYmxlIGNvbmZsaWN0cyBiZXR3ZWVuIHdoYXQgVyBhbmQgVy4uWQorY2hhbmdlZCkgYmUgZXF1aXZhbGVudCB0byBub3QgaGF2aW5nIFcgbm9yIFkgYXQgYWxsIGluIHRoZSBoaXN0b3J5OgorCisgLS0tby0tLW8tLS1vLS0tTS0tLXgtLS14LS0tLS0tLXgtLS0tCisJICAgICAgIC8KKyAgICAgICAtLS1BLS0tQi0tLS0tLS0tLS0tLS0tLS0tLS1DLS0tRAorCithbmQgbWVyZ2luZyB0aGUgc2lkZSBicmFuY2ggYWdhaW4gd2lsbCBub3QgaGF2ZSBjb25mbGljdCBhcmlzaW5nIGZyb20gYW4KK2VhcmxpZXIgcmV2ZXJ0IGFuZCByZXZlcnQgb2YgdGhlIHJldmVydC4KKworIC0tLW8tLS1vLS0tby0tLU0tLS14LS0teC0tLS0tLS14LS0tLS0tLSoKKwkgICAgICAgLyAgICAgICAgICAgICAgICAgICAgICAgLworICAgICAgIC0tLUEtLS1CLS0tLS0tLS0tLS0tLS0tLS0tLUMtLS1ECisKK09mIGNvdXJzZSB0aGUgY2hhbmdlcyBtYWRlIGluIEMgYW5kIEQgc3RpbGwgY2FuIGNvbmZsaWN0IHdpdGggd2hhdCB3YXMKK2RvbmUgYnkgYW55IG9mIHRoZSB4LCBidXQgdGhhdCBpcyBqdXN0IGEgbm9ybWFsIG1lcmdlIGNvbmZsaWN0LgorCitPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlIGRldmVsb3BlcnMgb2YgdGhlIHNpZGUgYnJhbmNoIGRpc2NhcmRlZCB0aGVpcgorZmF1bHR5IEEgYW5kIEIsIGFuZCByZWRvbmUgdGhlIGNoYW5nZXMgb24gdG9wIG9mIHRoZSB1cGRhdGVkIG1haW5saW5lCithZnRlciB0aGUgcmV2ZXJ0LCB0aGUgaGlzdG9yeSB3b3VsZCBoYXZlIGxvb2tlZCBsaWtlIHRoaXM6CisKKyAtLS1vLS0tby0tLW8tLS1NLS0teC0tLXgtLS1XLS0teC0tLXgKKwkgICAgICAgLyAgICAgICAgICAgICAgICAgXAorICAgICAgIC0tLUEtLS1CICAgICAgICAgICAgICAgICAgIEEnLS1CJy0tQycKKworSWYgeW91IHJldmVydGVkIHRoZSByZXZlcnQgaW4gc3VjaCBhIGNhc2UgYXMgaW4gdGhlIHByZXZpb3VzIGV4YW1wbGU6CisKKyAtLS1vLS0tby0tLW8tLS1NLS0teC0tLXgtLS1XLS0teC0tLXgtLS1ZLS0tKgorCSAgICAgICAvICAgICAgICAgICAgICAgICBcICAgICAgICAgLworICAgICAgIC0tLUEtLS1CICAgICAgICAgICAgICAgICAgIEEnLS1CJy0tQycKKword2hlcmUgWSBpcyB0aGUgcmV2ZXJ0IG9mIFcsIEEnIGFuZCBCJ2FyZSByZXJvbGxlZCBBIGFuZCBCLCBhbmQgdGhlcmUgbWF5CithbHNvIGJlIGEgZnVydGhlciBmaXgtdXAgQycgb24gdGhlIHNpZGUgYnJhbmNoLiAgImRpZmYgWV4uLlkiIGlzIHNpbWlsYXIKK3RvICJkaWZmIC1SIFdeLi5XIiAod2hpY2ggaW4gdHVybiBtZWFucyBpdCBpcyBzaW1pbGFyIHRvICJkaWZmIE1eLi5NIiksCithbmQgImRpZmYgQSdeLi5DJyIgYnkgZGVmaW5pdGlvbiB3b3VsZCBiZSBzaW1pbGFyIGJ1dCBkaWZmZXJlbnQgZnJvbSB0aGF0LAorYmVjYXVzZSBpdCBpcyBhIHJlcm9sbGVkIHNlcmllcyBvZiB0aGUgZWFybGllciBjaGFuZ2UuICBUaGVyZSB3aWxsIGJlIGEKK2xvdCBvZiBvdmVybGFwcGluZyBjaGFuZ2VzIHRoYXQgcmVzdWx0IGluIGNvbmZsaWN0cy4gIFNvIGRvIG5vdCBkbyAicmV2ZXJ0CitvZiByZXZlcnQiIGJsaW5kbHkgd2l0aG91dCB0aGlua2luZy4uCisKKyAtLS1vLS0tby0tLW8tLS1NLS0teC0tLXgtLS1XLS0teC0tLXgKKwkgICAgICAgLyAgICAgICAgICAgICAgICAgXAorICAgICAgIC0tLUEtLS1CICAgICAgICAgICAgICAgICAgIEEnLS1CJy0tQycKKworSW4gdGhlIGhpc3Rvcnkgd2l0aCByZWJhc2VkIHNpZGUgYnJhbmNoLCBXIChhbmQgTSkgYXJlIGJlaGluZCB0aGUgbWVyZ2UKK2Jhc2Ugb2YgdGhlIHVwZGF0ZWQgYnJhbmNoIGFuZCB0aGUgdGlwIG9mIHRoZSBtYWlubGluZSwgYW5kIHRoZXkgc2hvdWxkCittZXJnZSB3aXRob3V0IHRoZSBwYXN0IGZhdWx0eSBtZXJnZSBhbmQgaXRzIHJldmVydCBnZXR0aW5nIGluIHRoZSB3YXkuCisKK1RvIHJlY2FwLCB0aGVzZSBhcmUgdHdvIHZlcnkgZGlmZmVyZW50IHNjZW5hcmlvcywgYW5kIHRoZXkgd2FudCB0d28gdmVyeQorZGlmZmVyZW50IHJlc29sdXRpb24gc3RyYXRlZ2llczoKKworIC0gSWYgdGhlIGZhdWx0eSBzaWRlIGJyYW5jaCB3YXMgZml4ZWQgYnkgYWRkaW5nIGNvcnJlY3Rpb25zIG9uIHRvcCwgdGhlbgorICAgZG9pbmcgYSByZXZlcnQgb2YgdGhlIHByZXZpb3VzIHJldmVydCB3b3VsZCBiZSB0aGUgcmlnaHQgdGhpbmcgdG8gZG8uCisKKyAtIElmIHRoZSBmYXVsdHkgc2lkZSBicmFuY2ggd2hvc2UgZWZmZWN0cyB3ZXJlIGRpc2NhcmRlZCBieSBhbiBlYXJsaWVyCisgICByZXZlcnQgb2YgYSBtZXJnZSB3YXMgcmVidWlsdCBmcm9tIHNjcmF0Y2ggKGkuZS4gcmViYXNpbmcgYW5kIGZpeGluZywKKyAgIGFzIHlvdSBzZWVtIHRvIGhhdmUgaW50ZXJwcmV0ZWQpLCB0aGVuIHJlLW1lcmdpbmcgdGhlIHJlc3VsdCB3aXRob3V0CisgICBkb2luZyBhbnl0aGluZyBlbHNlIGZhbmN5IHdvdWxkIGJlIHRoZSByaWdodCB0aGluZyB0byBkby4KKworSG93ZXZlciwgdGhlcmUgYXJlIHRoaW5ncyB0byBrZWVwIGluIG1pbmQgd2hlbiByZXZlcnRpbmcgYSBtZXJnZSAoYW5kCityZXZlcnRpbmcgc3VjaCBhIHJldmVydCkuCisKK0ZvciBleGFtcGxlLCB0aGluayBhYm91dCB3aGF0IHJldmVydGluZyBhIG1lcmdlIChhbmQgdGhlbiByZXZlcnRpbmcgdGhlCityZXZlcnQpIGRvZXMgdG8gYmlzZWN0YWJpbGl0eS4gSWdub3JlIHRoZSBmYWN0IHRoYXQgdGhlIHJldmVydCBvZiBhIHJldmVydAoraXMgdW5kb2luZyBpdCAtIGp1c3QgdGhpbmsgb2YgaXQgYXMgYSAic2luZ2xlIGNvbW1pdCB0aGF0IGRvZXMgYSBsb3QiLgorQmVjYXVzZSB0aGF0IGlzIHdoYXQgaXQgZG9lcy4KKworV2hlbiB5b3UgaGF2ZSBhIHByb2JsZW0geW91IGFyZSBjaGFzaW5nIGRvd24sIGFuZCB5b3UgaGl0IGEgInJldmVydCB0aGlzCittZXJnZSIsIHdoYXQgeW91J3JlIGhpdHRpbmcgaXMgZXNzZW50aWFsbHkgYSBzaW5nbGUgY29tbWl0IHRoYXQgY29udGFpbnMKK2FsbCB0aGUgY2hhbmdlcyAoYnV0IG9idmlvdXNseSBpbiByZXZlcnNlKSBvZiBhbGwgdGhlIGNvbW1pdHMgdGhhdCBnb3QKK21lcmdlZC4gU28gaXQncyBkZWJ1Z2dpbmcgaGVsbCwgYmVjYXVzZSBub3cgeW91IGRvbid0IGhhdmUgbG90cyBvZiBzbWFsbAorY2hhbmdlcyB0aGF0IHlvdSBjYW4gdHJ5IHRvIHBpbnBvaW50IHdoaWNoIF9wYXJ0XyBvZiBpdCBjaGFuZ2VzLgorCitCdXQgZG9lcyBpdCBhbGwgd29yaz8gU3VyZSBpdCBkb2VzLiBZb3UgY2FuIHJldmVydCBhIG1lcmdlLCBhbmQgZnJvbSBhCitwdXJlbHkgdGVjaG5pY2FsIGFuZ2xlLCBnaXQgZGlkIGl0IHZlcnkgbmF0dXJhbGx5IGFuZCBoYWQgbm8gcmVhbAordHJvdWJsZXMuIEl0IGp1c3QgY29uc2lkZXJlZCBpdCBhIGNoYW5nZSBmcm9tICJzdGF0ZSBiZWZvcmUgbWVyZ2UiIHRvCisic3RhdGUgYWZ0ZXIgbWVyZ2UiLCBhbmQgdGhhdCB3YXMgaXQuIE5vdGhpbmcgY29tcGxpY2F0ZWQsIG5vdGhpbmcgb2RkLAorbm90aGluZyByZWFsbHkgZGFuZ2Vyb3VzLiBHaXQgd2lsbCBkbyBpdCB3aXRob3V0IGV2ZW4gdGhpbmtpbmcgYWJvdXQgaXQuCisKK1NvIGZyb20gYSB0ZWNobmljYWwgYW5nbGUsIHRoZXJlJ3Mgbm90aGluZyB3cm9uZyB3aXRoIHJldmVydGluZyBhIG1lcmdlLAorYnV0IGZyb20gYSB3b3JrZmxvdyBhbmdsZSBpdCdzIHNvbWV0aGluZyB0aGF0IHlvdSBnZW5lcmFsbHkgc2hvdWxkIHRyeSB0bworYXZvaWQuCisKK0lmIGF0IGFsbCBwb3NzaWJsZSwgZm9yIGV4YW1wbGUsIGlmIHlvdSBmaW5kIGEgcHJvYmxlbSB0aGF0IGdvdCBtZXJnZWQKK2ludG8gdGhlIG1haW4gdHJlZSwgcmF0aGVyIHRoYW4gcmV2ZXJ0IHRoZSBtZXJnZSwgdHJ5IF9yZWFsbHlfIGhhcmQgdG8KK2Jpc2VjdCB0aGUgcHJvYmxlbSBkb3duIGludG8gdGhlIGJyYW5jaCB5b3UgbWVyZ2VkLCBhbmQganVzdCBmaXggaXQsIG9yCit0cnkgdG8gcmV2ZXJ0IHRoZSBpbmRpdmlkdWFsIGNvbW1pdCB0aGF0IGNhdXNlZCBpdC4KKworWWVzLCBpdCdzIG1vcmUgY29tcGxleCwgYW5kIG5vLCBpdCdzIG5vdCBhbHdheXMgZ29pbmcgdG8gd29yayAoc29tZXRpbWVzCit0aGUgYW5zd2VyIGlzOiAib29wcywgSSByZWFsbHkgc2hvdWxkbid0IGhhdmUgbWVyZ2VkIGl0LCBiZWNhdXNlIGl0IHdhc24ndAorcmVhZHkgeWV0LCBhbmQgSSByZWFsbHkgbmVlZCB0byB1bmRvIF9hbGxfIG9mIHRoZSBtZXJnZSIpLiBTbyB0aGVuIHlvdQorcmVhbGx5IHNob3VsZCByZXZlcnQgdGhlIG1lcmdlLCBidXQgd2hlbiB5b3Ugd2FudCB0byByZS1kbyB0aGUgbWVyZ2UsIHlvdQorbm93IG5lZWQgdG8gZG8gaXQgYnkgcmV2ZXJ0aW5nIHRoZSByZXZlcnQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2kxOG4udHh0IGIvRG9jdW1lbnRhdGlvbi9pMThuLnR4dAppbmRleCBjNjczOTY2Li43MDhkYTZjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2kxOG4udHh0CisrKyBiL0RvY3VtZW50YXRpb24vaTE4bi50eHQKQEAgLTM3LDkgKzM3LDkgQEAKIGhlbHAgb3RoZXIgcGVvcGxlIHdobyBsb29rIGF0IHRoZW0gbGF0ZXIuICBMYWNrIG9mIHRoaXMgaGVhZGVyCiBpbXBsaWVzIHRoYXQgdGhlIGNvbW1pdCBsb2cgbWVzc2FnZSBpcyBlbmNvZGVkIGluIFVURi04LgogCi0uICdnaXQtbG9nJywgJ2dpdC1zaG93JyBhbmQgZnJpZW5kcyBsb29rcyBhdCB0aGUgYGVuY29kaW5nYAotICBoZWFkZXIgb2YgYSBjb21taXQgb2JqZWN0LCBhbmQgdHJpZXMgdG8gcmUtY29kZSB0aGUgbG9nCi0gIG1lc3NhZ2UgaW50byBVVEYtOCB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZC4gIFlvdSBjYW4KKy4gJ2dpdC1sb2cnLCAnZ2l0LXNob3cnLCAnZ2l0LWJsYW1lJyBhbmQgZnJpZW5kcyBsb29rIGF0IHRoZQorICBgZW5jb2RpbmdgIGhlYWRlciBvZiBhIGNvbW1pdCBvYmplY3QsIGFuZCB0cnkgdG8gcmUtY29kZSB0aGUKKyAgbG9nIG1lc3NhZ2UgaW50byBVVEYtOCB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZC4gIFlvdSBjYW4KICAgc3BlY2lmeSB0aGUgZGVzaXJlZCBvdXRwdXQgZW5jb2Rpbmcgd2l0aAogICBgaTE4bi5sb2dvdXRwdXRlbmNvZGluZ2AgaW4gYC5naXQvY29uZmlnYCBmaWxlLCBsaWtlIHRoaXM6CiArCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21lcmdlLWNvbmZpZy50eHQgYi9Eb2N1bWVudGF0aW9uL21lcmdlLWNvbmZpZy50eHQKaW5kZXggYzczNTc4OC4uMWZmMDhmZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9tZXJnZS1jb25maWcudHh0CisrKyBiL0RvY3VtZW50YXRpb24vbWVyZ2UtY29uZmlnLnR4dApAQCAtMSw2ICsxLDEwIEBACi1tZXJnZS5zdGF0OjoKLQlXaGV0aGVyIHRvIHByaW50IHRoZSBkaWZmc3RhdCBiZXR3ZWVuIE9SSUdfSEVBRCBhbmQgdGhlIG1lcmdlIHJlc3VsdAotCWF0IHRoZSBlbmQgb2YgdGhlIG1lcmdlLiAgVHJ1ZSBieSBkZWZhdWx0LgorbWVyZ2UuY29uZmxpY3RzdHlsZTo6CisJU3BlY2lmeSB0aGUgc3R5bGUgaW4gd2hpY2ggY29uZmxpY3RlZCBodW5rcyBhcmUgd3JpdHRlbiBvdXQgdG8KKwl3b3JraW5nIHRyZWUgZmlsZXMgdXBvbiBtZXJnZS4gIFRoZSBkZWZhdWx0IGlzICJtZXJnZSIsIHdoaWNoCisJc2hvd3MgYSBgPDw8PDw8PGAgY29uZmxpY3QgbWFya2VyLCBjaGFuZ2VzIG1hZGUgYnkgb25lIHNpZGUsCisJYSBgPT09PT09PWAgbWFya2VyLCBjaGFuZ2VzIG1hZGUgYnkgdGhlIG90aGVyIHNpZGUsIGFuZCB0aGVuCisJYSBgPj4+Pj4+PmAgbWFya2VyLiAgQW4gYWx0ZXJuYXRlIHN0eWxlLCAiZGlmZjMiLCBhZGRzIGEgYHx8fHx8fHxgCisJbWFya2VyIGFuZCB0aGUgb3JpZ2luYWwgdGV4dCBiZWZvcmUgdGhlIGA9PT09PT09YCBtYXJrZXIuCiAKIG1lcmdlLmxvZzo6CiAJV2hldGhlciB0byBpbmNsdWRlIHN1bW1hcmllcyBvZiBtZXJnZWQgY29tbWl0cyBpbiBuZXdseSBjcmVhdGVkCkBAIC0xMSw2ICsxNSwxMCBAQAogCWR1cmluZyBhIG1lcmdlOyBpZiBub3Qgc3BlY2lmaWVkLCBkZWZhdWx0cyB0byB0aGUgdmFsdWUgb2YKIAlkaWZmLnJlbmFtZUxpbWl0LgogCittZXJnZS5zdGF0OjoKKwlXaGV0aGVyIHRvIHByaW50IHRoZSBkaWZmc3RhdCBiZXR3ZWVuIE9SSUdfSEVBRCBhbmQgdGhlIG1lcmdlIHJlc3VsdAorCWF0IHRoZSBlbmQgb2YgdGhlIG1lcmdlLiAgVHJ1ZSBieSBkZWZhdWx0LgorCiBtZXJnZS50b29sOjoKIAlDb250cm9scyB3aGljaCBtZXJnZSByZXNvbHV0aW9uIHByb2dyYW0gaXMgdXNlZCBieQogCWxpbmtnaXQ6Z2l0LW1lcmdldG9vbFsxXS4gIFZhbGlkIGJ1aWx0LWluIHZhbHVlcyBhcmU6ICJrZGlmZjMiLApAQCAtMjQsMTAgKzMyLDEwIEBACiAJbWVzc2FnZSBpZiBjb25mbGljdHMgd2VyZSBkZXRlY3RlZC4gTGV2ZWwgMSBvdXRwdXRzIG9ubHkKIAljb25mbGljdHMsIDIgb3V0cHV0cyBjb25mbGljdHMgYW5kIGZpbGUgY2hhbmdlcy4gIExldmVsIDUgYW5kCiAJYWJvdmUgb3V0cHV0cyBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24uICBUaGUgZGVmYXVsdCBpcyBsZXZlbCAyLgotCUNhbiBiZSBvdmVycmlkZGVuIGJ5ICdHSVRfTUVSR0VfVkVSQk9TSVRZJyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKwlDYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgJ0dJVF9NRVJHRV9WRVJCT1NJVFknIGVudmlyb25tZW50IHZhcmlhYmxlLgogCiBtZXJnZS48ZHJpdmVyPi5uYW1lOjoKLQlEZWZpbmVzIGEgaHVtYW4gcmVhZGFibGUgbmFtZSBmb3IgYSBjdXN0b20gbG93LWxldmVsCisJRGVmaW5lcyBhIGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIGEgY3VzdG9tIGxvdy1sZXZlbAogCW1lcmdlIGRyaXZlci4gIFNlZSBsaW5rZ2l0OmdpdGF0dHJpYnV0ZXNbNV0gZm9yIGRldGFpbHMuCiAKIG1lcmdlLjxkcml2ZXI+LmRyaXZlcjo6CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21lcmdlLW9wdGlvbnMudHh0IGIvRG9jdW1lbnRhdGlvbi9tZXJnZS1vcHRpb25zLnR4dAppbmRleCAwMDc5MDlhLi42MzdiNTNmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL21lcmdlLW9wdGlvbnMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vbWVyZ2Utb3B0aW9ucy50eHQKQEAgLTEsMTAgKzEsMTggQEAKKy1xOjoKKy0tcXVpZXQ6OgorCU9wZXJhdGUgcXVpZXRseS4KKworLXY6OgorLS12ZXJib3NlOjoKKwlCZSB2ZXJib3NlLgorCiAtLXN0YXQ6OgogCVNob3cgYSBkaWZmc3RhdCBhdCB0aGUgZW5kIG9mIHRoZSBtZXJnZS4gVGhlIGRpZmZzdGF0IGlzIGFsc28KIAljb250cm9sbGVkIGJ5IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBtZXJnZS5zdGF0LgogCiAtbjo6CiAtLW5vLXN0YXQ6OgotCURvIG5vdCBzaG93IGRpZmZzdGF0IGF0IHRoZSBlbmQgb2YgdGhlIG1lcmdlLgorCURvIG5vdCBzaG93IGEgZGlmZnN0YXQgYXQgdGhlIGVuZCBvZiB0aGUgbWVyZ2UuCiAKIC0tc3VtbWFyeTo6CiAtLW5vLXN1bW1hcnk6OgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wcmV0dHktZm9ybWF0cy50eHQgYi9Eb2N1bWVudGF0aW9uL3ByZXR0eS1mb3JtYXRzLnR4dAppbmRleCAzODhkNDkyLi4wYThhOTQ4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3ByZXR0eS1mb3JtYXRzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3ByZXR0eS1mb3JtYXRzLnR4dApAQCAtMzAsNyArMzAsNyBAQAogCiAJICBjb21taXQgPHNoYTE+CiAJICBBdXRob3I6IDxhdXRob3I+Ci0JICBEYXRlOiA8YXV0aG9yIGRhdGU+CisJICBEYXRlOiAgIDxhdXRob3IgZGF0ZT4KIAogCSAgICAgIDx0aXRsZSBsaW5lPgogCkBAIC00OSw5ICs0OSw5IEBACiAqICdmdWxsZXInCiAKIAkgIGNvbW1pdCA8c2hhMT4KLQkgIEF1dGhvcjogPGF1dGhvcj4KKwkgIEF1dGhvcjogICAgIDxhdXRob3I+CiAJICBBdXRob3JEYXRlOiA8YXV0aG9yIGRhdGU+Ci0JICBDb21taXQ6IDxjb21taXR0ZXI+CisJICBDb21taXQ6ICAgICA8Y29tbWl0dGVyPgogCSAgQ29tbWl0RGF0ZTogPGNvbW1pdHRlciBkYXRlPgogCiAJICAgICAgIDx0aXRsZSBsaW5lPgpAQCAtMTE2LDYgKzExNiw3IEBACiAtICclY3InOiBjb21taXR0ZXIgZGF0ZSwgcmVsYXRpdmUKIC0gJyVjdCc6IGNvbW1pdHRlciBkYXRlLCBVTklYIHRpbWVzdGFtcAogLSAnJWNpJzogY29tbWl0dGVyIGRhdGUsIElTTyA4NjAxIGZvcm1hdAorLSAnJWQnOiByZWYgbmFtZXMsIGxpa2UgdGhlIC0tZGVjb3JhdGUgb3B0aW9uIG9mIGxpbmtnaXQ6Z2l0LWxvZ1sxXQogLSAnJWUnOiBlbmNvZGluZwogLSAnJXMnOiBzdWJqZWN0CiAtICclYic6IGJvZHkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcHVsbC1mZXRjaC1wYXJhbS50eHQgYi9Eb2N1bWVudGF0aW9uL3B1bGwtZmV0Y2gtcGFyYW0udHh0CmluZGV4IGViZGQ5NDguLmY5ODExZjIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vcHVsbC1mZXRjaC1wYXJhbS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9wdWxsLWZldGNoLXBhcmFtLnR4dApAQCAtNSwxNSArNSwxNCBAQAogCW9mIGEgcmVtb3RlIChzZWUgdGhlIHNlY3Rpb24gPDxSRU1PVEVTLFJFTU9URVM+PiBiZWxvdykuCiAKIDxyZWZzcGVjPjo6Ci0JVGhlIGNhbm9uaWNhbCBmb3JtYXQgb2YgYSA8cmVmc3BlYz4gcGFyYW1ldGVyIGlzCi0JYCs/PHNyYz46PGRzdD5gOyB0aGF0IGlzLCBhbiBvcHRpb25hbCBwbHVzIGB7cGx1c31gLCBmb2xsb3dlZAotCWJ5IHRoZSBzb3VyY2UgcmVmLCBmb2xsb3dlZCBieSBhIGNvbG9uIGA6YCwgZm9sbG93ZWQgYnkKLQl0aGUgZGVzdGluYXRpb24gcmVmLgorCVRoZSBmb3JtYXQgb2YgYSA8cmVmc3BlYz4gcGFyYW1ldGVyIGlzIGFuIG9wdGlvbmFsIHBsdXMKKwlge3BsdXN9YCwgZm9sbG93ZWQgYnkgdGhlIHNvdXJjZSByZWYgPHNyYz4sIGZvbGxvd2VkCisJYnkgYSBjb2xvbiBgOmAsIGZvbGxvd2VkIGJ5IHRoZSBkZXN0aW5hdGlvbiByZWYgPGRzdD4uCiArCiBUaGUgcmVtb3RlIHJlZiB0aGF0IG1hdGNoZXMgPHNyYz4KIGlzIGZldGNoZWQsIGFuZCBpZiA8ZHN0PiBpcyBub3QgZW1wdHkgc3RyaW5nLCB0aGUgbG9jYWwKIHJlZiB0aGF0IG1hdGNoZXMgaXQgaXMgZmFzdCBmb3J3YXJkZWQgdXNpbmcgPHNyYz4uCi1BZ2FpbiwgaWYgdGhlIG9wdGlvbmFsIHBsdXMgYCtgIGlzIHVzZWQsIHRoZSBsb2NhbCByZWYKK0lmIHRoZSBvcHRpb25hbCBwbHVzIGArYCBpcyB1c2VkLCB0aGUgbG9jYWwgcmVmCiBpcyB1cGRhdGVkIGV2ZW4gaWYgaXQgZG9lcyBub3QgcmVzdWx0IGluIGEgZmFzdCBmb3J3YXJkCiB1cGRhdGUuCiArCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Jldi1saXN0LW9wdGlvbnMudHh0IGIvRG9jdW1lbnRhdGlvbi9yZXYtbGlzdC1vcHRpb25zLnR4dAppbmRleCAxMDIzYWMyLi5iOWY2ZTRkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Jldi1saXN0LW9wdGlvbnMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vcmV2LWxpc3Qtb3B0aW9ucy50eHQKQEAgLTIyMiw2ICsyMjIsMjEgQEAKIAlQcmV0ZW5kIGFzIGlmIGFsbCB0aGUgcmVmcyBpbiBgJEdJVF9ESVIvcmVmcy9gIGFyZSBsaXN0ZWQgb24gdGhlCiAJY29tbWFuZCBsaW5lIGFzICc8Y29tbWl0PicuCiAKKy0tYnJhbmNoZXM6OgorCisJUHJldGVuZCBhcyBpZiBhbGwgdGhlIHJlZnMgaW4gYCRHSVRfRElSL3JlZnMvaGVhZHNgIGFyZSBsaXN0ZWQKKwlvbiB0aGUgY29tbWFuZCBsaW5lIGFzICc8Y29tbWl0PicuCisKKy0tdGFnczo6CisKKwlQcmV0ZW5kIGFzIGlmIGFsbCB0aGUgcmVmcyBpbiBgJEdJVF9ESVIvcmVmcy90YWdzYCBhcmUgbGlzdGVkCisJb24gdGhlIGNvbW1hbmQgbGluZSBhcyAnPGNvbW1pdD4nLgorCistLXJlbW90ZXM6OgorCisJUHJldGVuZCBhcyBpZiBhbGwgdGhlIHJlZnMgaW4gYCRHSVRfRElSL3JlZnMvcmVtb3Rlc2AgYXJlIGxpc3RlZAorCW9uIHRoZSBjb21tYW5kIGxpbmUgYXMgJzxjb21taXQ+Jy4KKwogaWZkZWY6OmdpdC1yZXYtbGlzdFtdCiAtLXN0ZGluOjoKIApAQCAtMjg1LDggKzMwMCw1MiBAQAogSGlzdG9yeSBTaW1wbGlmaWNhdGlvbgogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCi1XaGVuIG9wdGlvbmFsIHBhdGhzIGFyZSBnaXZlbiwgJ2dpdCByZXYtbGlzdCcgc2ltcGxpZmllcyBjb21taXRzIHdpdGgKLXZhcmlvdXMgc3RyYXRlZ2llcywgYWNjb3JkaW5nIHRvIHRoZSBvcHRpb25zIHlvdSBoYXZlIHNlbGVjdGVkLgorU29tZXRpbWVzIHlvdSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHBhcnRzIG9mIHRoZSBoaXN0b3J5LCBmb3IgZXhhbXBsZSB0aGUKK2NvbW1pdHMgbW9kaWZ5aW5nIGEgcGFydGljdWxhciA8cGF0aD4uIEJ1dCB0aGVyZSBhcmUgdHdvIHBhcnRzIG9mCisnSGlzdG9yeSBTaW1wbGlmaWNhdGlvbicsIG9uZSBwYXJ0IGlzIHNlbGVjdGluZyB0aGUgY29tbWl0cyBhbmQgdGhlIG90aGVyCitpcyBob3cgdG8gZG8gaXQsIGFzIHRoZXJlIGFyZSB2YXJpb3VzIHN0cmF0ZWdpZXMgdG8gc2ltcGxpZnkgdGhlIGhpc3RvcnkuCisKK1RoZSBmb2xsb3dpbmcgb3B0aW9ucyBzZWxlY3QgdGhlIGNvbW1pdHMgdG8gYmUgc2hvd246CisKKzxwYXRocz46OgorCisJQ29tbWl0cyBtb2RpZnlpbmcgdGhlIGdpdmVuIDxwYXRocz4gYXJlIHNlbGVjdGVkLgorCistLXNpbXBsaWZ5LWJ5LWRlY29yYXRpb246OgorCisJQ29tbWl0cyB0aGF0IGFyZSByZWZlcnJlZCBieSBzb21lIGJyYW5jaCBvciB0YWcgYXJlIHNlbGVjdGVkLgorCitOb3RlIHRoYXQgZXh0cmEgY29tbWl0cyBjYW4gYmUgc2hvd24gdG8gZ2l2ZSBhIG1lYW5pbmdmdWwgaGlzdG9yeS4KKworVGhlIGZvbGxvd2luZyBvcHRpb25zIGFmZmVjdCB0aGUgd2F5IHRoZSBzaW1wbGlmaWNhdGlvbiBpcyBwZXJmb3JtZWQ6CisKK0RlZmF1bHQgbW9kZTo6CisKKwlTaW1wbGlmaWVzIHRoZSBoaXN0b3J5IHRvIHRoZSBzaW1wbGVzdCBoaXN0b3J5IGV4cGxhaW5pbmcgdGhlCisJZmluYWwgc3RhdGUgb2YgdGhlIHRyZWUuIFNpbXBsZXN0IGJlY2F1c2UgaXQgcHJ1bmVzIHNvbWUgc2lkZQorCWJyYW5jaGVzIGlmIHRoZSBlbmQgcmVzdWx0IGlzIHRoZSBzYW1lIChpLmUuIG1lcmdpbmcgYnJhbmNoZXMKKwl3aXRoIHRoZSBzYW1lIGNvbnRlbnQpCisKKy0tZnVsbC1oaXN0b3J5OjoKKworCUFzIHRoZSBkZWZhdWx0IG1vZGUgYnV0IGRvZXMgbm90IHBydW5lIHNvbWUgaGlzdG9yeS4KKworLS1kZW5zZTo6CisKKwlPbmx5IHRoZSBzZWxlY3RlZCBjb21taXRzIGFyZSBzaG93biwgcGx1cyBzb21lIHRvIGhhdmUgYQorCW1lYW5pbmdmdWwgaGlzdG9yeS4KKworLS1zcGFyc2U6OgorCisJQWxsIGNvbW1pdHMgaW4gdGhlIHNpbXBsaWZpZWQgaGlzdG9yeSBhcmUgc2hvd24uCisKKy0tc2ltcGxpZnktbWVyZ2VzOjoKKworCUFkZGl0aW9uYWwgb3B0aW9uIHRvICctLWZ1bGwtaGlzdG9yeScgdG8gcmVtb3ZlIHNvbWUgbmVlZGxlc3MKKwltZXJnZXMgZnJvbSB0aGUgcmVzdWx0aW5nIGhpc3RvcnksIGFzIHRoZXJlIGFyZSBubyBzZWxlY3RlZAorCWNvbW1pdHMgY29udHJpYnV0aW5nIHRvIHRoaXMgbWVyZ2UuCisKK0EgbW9yZSBkZXRhaWxlZCBleHBsYW5hdGlvbiBmb2xsb3dzLgogCiBTdXBwb3NlIHlvdSBzcGVjaWZpZWQgYGZvb2AgYXMgdGhlIDxwYXRocz4uICBXZSBzaGFsbCBjYWxsIGNvbW1pdHMKIHRoYXQgbW9kaWZ5IGBmb29gICFUUkVFU0FNRSwgYW5kIHRoZSByZXN0IFRSRUVTQU1FLiAgKEluIGEgZGlmZgpAQCAtNDEzLDYgKzQ3Miw1NiBAQAogb25lIG9mIHRoZSBwYXJlbnRzIGlzIFRSRUVTQU1FLCB3ZSBmb2xsb3cgb25seSB0aGF0IG9uZSwgc28gdGhlIG90aGVyCiBzaWRlcyBvZiB0aGUgbWVyZ2UgYXJlIG5ldmVyIHdhbGtlZC4KIAorRmluYWxseSwgdGhlcmUgaXMgYSBmb3VydGggc2ltcGxpZmljYXRpb24gbW9kZSBhdmFpbGFibGU6CisKKy0tc2ltcGxpZnktbWVyZ2VzOjoKKworCUZpcnN0LCBidWlsZCBhIGhpc3RvcnkgZ3JhcGggaW4gdGhlIHNhbWUgd2F5IHRoYXQKKwknXC0tZnVsbC1oaXN0b3J5JyB3aXRoIHBhcmVudCByZXdyaXRpbmcgZG9lcyAoc2VlIGFib3ZlKS4KKysKK1RoZW4gc2ltcGxpZnkgZWFjaCBjb21taXQgYENgIHRvIGl0cyByZXBsYWNlbWVudCBgQydgIGluIHRoZSBmaW5hbAoraGlzdG9yeSBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBydWxlczoKKysKKy0tCisqIFNldCBgQydgIHRvIGBDYC4KKysKKyogUmVwbGFjZSBlYWNoIHBhcmVudCBgUGAgb2YgYEMnYCB3aXRoIGl0cyBzaW1wbGlmaWNhdGlvbiBgUCdgLiAgSW4KKyAgdGhlIHByb2Nlc3MsIGRyb3AgcGFyZW50cyB0aGF0IGFyZSBhbmNlc3RvcnMgb2Ygb3RoZXIgcGFyZW50cywgYW5kCisgIHJlbW92ZSBkdXBsaWNhdGVzLgorKworKiBJZiBhZnRlciB0aGlzIHBhcmVudCByZXdyaXRpbmcsIGBDJ2AgaXMgYSByb290IG9yIG1lcmdlIGNvbW1pdCAoaGFzCisgIHplcm8gb3IgPjEgcGFyZW50cyksIGEgYm91bmRhcnkgY29tbWl0LCBvciAhVFJFRVNBTUUsIGl0IHJlbWFpbnMuCisgIE90aGVyd2lzZSwgaXQgaXMgcmVwbGFjZWQgd2l0aCBpdHMgb25seSBwYXJlbnQuCistLQorKworVGhlIGVmZmVjdCBvZiB0aGlzIGlzIGJlc3Qgc2hvd24gYnkgd2F5IG9mIGNvbXBhcmluZyB0bworJ1wtLWZ1bGwtaGlzdG9yeScgd2l0aCBwYXJlbnQgcmV3cml0aW5nLiAgVGhlIGV4YW1wbGUgdHVybnMgaW50bzoKKysKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJICAuLUEtLS1NLS0tTi0tLU8KKwkgLyAgICAgLyAgICAgICAvCisJSSAgICAgQiAgICAgICBECisJIFwgICAvICAgICAgIC8KKwkgIGAtLS0tLS0tLS0nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKworTm90ZSB0aGUgbWFqb3IgZGlmZmVyZW5jZXMgaW4gYE5gIGFuZCBgUGAgb3ZlciAnXC0tZnVsbC1oaXN0b3J5JzoKKysKKy0tCisqIGBOYCdzIHBhcmVudCBsaXN0IGhhZCBgSWAgcmVtb3ZlZCwgYmVjYXVzZSBpdCBpcyBhbiBhbmNlc3RvciBvZiB0aGUKKyAgb3RoZXIgcGFyZW50IGBNYC4gIFN0aWxsLCBgTmAgcmVtYWluZWQgYmVjYXVzZSBpdCBpcyAhVFJFRVNBTUUuCisrCisqIGBQYCdzIHBhcmVudCBsaXN0IHNpbWlsYXJseSBoYWQgYElgIHJlbW92ZWQuICBgUGAgd2FzIHRoZW4KKyAgcmVtb3ZlZCBjb21wbGV0ZWx5LCBiZWNhdXNlIGl0IGhhZCBvbmUgcGFyZW50IGFuZCBpcyBUUkVFU0FNRS4KKy0tCisKK1RoZSAnXC0tc2ltcGxpZnktYnktZGVjb3JhdGlvbicgb3B0aW9uIGFsbG93cyB5b3UgdG8gdmlldyBvbmx5IHRoZQorYmlnIHBpY3R1cmUgb2YgdGhlIHRvcG9sb2d5IG9mIHRoZSBoaXN0b3J5LCBieSBvbWl0dGluZyBjb21taXRzCit0aGF0IGFyZSBub3QgcmVmZXJlbmNlZCBieSB0YWdzLiAgQ29tbWl0cyBhcmUgbWFya2VkIGFzICFUUkVFU0FNRQorKGluIG90aGVyIHdvcmRzLCBrZXB0IGFmdGVyIGhpc3Rvcnkgc2ltcGxpZmljYXRpb24gcnVsZXMgZGVzY3JpYmVkCithYm92ZSkgaWYgKDEpIHRoZXkgYXJlIHJlZmVyZW5jZWQgYnkgdGFncywgb3IgKDIpIHRoZXkgY2hhbmdlIHRoZQorY29udGVudHMgb2YgdGhlIHBhdGhzIGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUuICBBbGwgb3RoZXIKK2NvbW1pdHMgYXJlIG1hcmtlZCBhcyBUUkVFU0FNRSAoc3ViamVjdCB0byBiZSBzaW1wbGlmaWVkIGF3YXkpLgogCiBpZmRlZjo6Z2l0LXJldi1saXN0W10KIEJpc2VjdGlvbiBIZWxwZXJzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktcnVuLWNvbW1hbmQudHh0IGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXJ1bi1jb21tYW5kLnR4dAppbmRleCA3NWFhNWQ0Li44MmU5ZTgzIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktcnVuLWNvbW1hbmQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1ydW4tY29tbWFuZC50eHQKQEAgLTMwLDcgKzMwLDcgQEAKIAlzdGFydF9jb21tYW5kKCkgZm9sbG93ZWQgYnkgZmluaXNoX2NvbW1hbmQoKS4gVGFrZXMgYSBwb2ludGVyCiAJdG8gYSBgc3RydWN0IGNoaWxkX3Byb2Nlc3NgIHRoYXQgc3BlY2lmaWVzIHRoZSBkZXRhaWxzLgogCi1gcnVuX2NvbW1hbmRfdl9vcHRgLCBgcnVuX2NvbW1hbmRfdl9vcHRfY2RgLCBgcnVuX2NvbW1hbmRfdl9vcHRfY2RfZW52YDo6CitgcnVuX2NvbW1hbmRfdl9vcHRgLCBgcnVuX2NvbW1hbmRfdl9vcHRfY2RfZW52YDo6CiAKIAlDb252ZW5pZW5jZSBmdW5jdGlvbnMgdGhhdCBlbmNhcHN1bGF0ZSBhIHNlcXVlbmNlIG9mCiAJc3RhcnRfY29tbWFuZCgpIGZvbGxvd2VkIGJ5IGZpbmlzaF9jb21tYW5kKCkuIFRoZSBhcmd1bWVudCBhcmd2CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktc3RyYnVmLnR4dCBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1zdHJidWYudHh0CmluZGV4IDQyNDJkYzAuLjk4NTgwMGUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1zdHJidWYudHh0CisrKyBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1zdHJidWYudHh0CkBAIC0yMDUsNiArMjA1LDEzIEBACiBwYXJhbWV0ZXJzIHRvIHRoZSBjYWxsYmFjaywgYHN0cmJ1Zl9leHBhbmQoKWAgcGFzc2VzIGEgY29udGV4dCBwb2ludGVyLAogd2hpY2ggY2FuIGJlIHVzZWQgYnkgdGhlIHByb2dyYW1tZXIgb2YgdGhlIGNhbGxiYWNrIGFzIHNoZSBzZWVzIGZpdC4KIAorYHN0cmJ1Zl9leHBhbmRfZGljdF9jYmA6OgorCisJVXNlZCBhcyBjYWxsYmFjayBmb3IgYHN0cmJ1Zl9leHBhbmQoKWAsIGV4cGVjdHMgYW4gYXJyYXkgb2YKKwlzdHJ1Y3Qgc3RyYnVmX2V4cGFuZF9kaWN0X2VudHJ5IGFzIGNvbnRleHQsIGkuZS4gcGFpcnMgb2YKKwlwbGFjZWhvbGRlciBhbmQgcmVwbGFjZW1lbnQgc3RyaW5nLiAgVGhlIGFycmF5IG5lZWRzIHRvIGJlCisJdGVybWluYXRlZCBieSBhbiBlbnRyeSB3aXRoIHBsYWNlaG9sZGVyIHNldCB0byBOVUxMLgorCiBgc3RyYnVmX2FkZGZgOjoKIAogCUFkZCBhIGZvcm1hdHRlZCBzdHJpbmcgdG8gdGhlIGJ1ZmZlci4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3JhY3ktZ2l0LnR4dCBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3JhY3ktZ2l0LnR4dAppbmRleCA2YmRmMDM0Li40OGJiOTdmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9yYWN5LWdpdC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvcmFjeS1naXQudHh0CkBAIC0xMzUsNyArMTM1LDcgQEAKIAogVGhpcyB3aWxsIG1ha2UgYWxsIGluZGV4IGVudHJpZXMgcmFjaWx5IGNsZWFuLiAgVGhlIGxpbnV4LTIuNgogcHJvamVjdCwgZm9yIGV4YW1wbGUsIHRoZXJlIGFyZSBvdmVyIDIwLDAwMCBmaWxlcyBpbiB0aGUgd29ya2luZwotdHJlZS4gIE9uIG15IEF0aHJvbiA2NFgyIDM4MDArLCBhZnRlciB0aGUgYWJvdmU6Cit0cmVlLiAgT24gbXkgQXRobG9uIDY0IFgyIDM4MDArLCBhZnRlciB0aGUgYWJvdmU6CiAKICAgJCAvdXNyL2Jpbi90aW1lIGdpdCBkaWZmLWZpbGVzCiAgIDEuNjh1c2VyIDAuNTRzeXN0ZW0gMDowMi4yMmVsYXBzZWQgMTAwJUNQVSAoMGF2Z3RleHQrMGF2Z2RhdGEgMG1heHJlc2lkZW50KWsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXJscy50eHQgYi9Eb2N1bWVudGF0aW9uL3VybHMudHh0CmluZGV4IGZhMzRjNjcuLjUzNTVlYmMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdXJscy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi91cmxzLnR4dApAQCAtNiwxMCArNiwxMCBAQAogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0gcnN5bmM6Ly9ob3N0Lnh6L3BhdGgvdG8vcmVwby5naXQvCi0tIGh0dHA6Ly9ob3N0Lnh6L3BhdGgvdG8vcmVwby5naXQvCi0tIGh0dHBzOi8vaG9zdC54ei9wYXRoL3RvL3JlcG8uZ2l0LwotLSBnaXQ6Ly9ob3N0Lnh6L3BhdGgvdG8vcmVwby5naXQvCi0tIGdpdDovL2hvc3QueHovfnVzZXIvcGF0aC90by9yZXBvLmdpdC8KKy0gaHR0cDovL2hvc3QueHp7c3RhcnRzYn06cG9ydHtlbmRzYn0vcGF0aC90by9yZXBvLmdpdC8KKy0gaHR0cHM6Ly9ob3N0Lnh6e3N0YXJ0c2J9OnBvcnR7ZW5kc2J9L3BhdGgvdG8vcmVwby5naXQvCistIGdpdDovL2hvc3QueHp7c3RhcnRzYn06cG9ydHtlbmRzYn0vcGF0aC90by9yZXBvLmdpdC8KKy0gZ2l0Oi8vaG9zdC54entzdGFydHNifTpwb3J0e2VuZHNifS9+dXNlci9wYXRoL3RvL3JlcG8uZ2l0LwogLSBzc2g6Ly97c3RhcnRzYn11c2VyQHtlbmRzYn1ob3N0Lnh6e3N0YXJ0c2J9OnBvcnR7ZW5kc2J9L3BhdGgvdG8vcmVwby5naXQvCiAtIHNzaDovL3tzdGFydHNifXVzZXJAe2VuZHNifWhvc3QueHovcGF0aC90by9yZXBvLmdpdC8KIC0gc3NoOi8ve3N0YXJ0c2J9dXNlckB7ZW5kc2J9aG9zdC54ei9+dXNlci9wYXRoL3RvL3JlcG8uZ2l0LwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi91c2VyLW1hbnVhbC50eHQgYi9Eb2N1bWVudGF0aW9uL3VzZXItbWFudWFsLnR4dAppbmRleCAyYWU4OGM1Li45NmFmODk3NyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi91c2VyLW1hbnVhbC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi91c2VyLW1hbnVhbC50eHQKQEAgLTE4LDEyICsxOCwyMiBAQAogRnVydGhlciBjaGFwdGVycyBjb3ZlciBtb3JlIHNwZWNpYWxpemVkIHRvcGljcy4KIAogQ29tcHJlaGVuc2l2ZSByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgbWFuCi1wYWdlcy4gIEZvciBhIGNvbW1hbmQgc3VjaCBhcyAiZ2l0IGNsb25lIDxyZXBvPiIsIGp1c3QgdXNlCitwYWdlcywgb3IgbGlua2dpdDpnaXQtaGVscFsxXSBjb21tYW5kLiAgRm9yIGV4YW1wbGUsIGZvciB0aGUgY29tbWFuZAorImdpdCBjbG9uZSA8cmVwbz4iLCB5b3UgY2FuIGVpdGhlciB1c2U6CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogJCBtYW4gZ2l0LWNsb25lCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorb3I6CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorJCBnaXQgaGVscCBjbG9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1dpdGggdGhlIGxhdHRlciwgeW91IGNhbiB1c2UgdGhlIG1hbnVhbCB2aWV3ZXIgb2YgeW91ciBjaG9pY2U7IHNlZQorbGlua2dpdDpnaXQtaGVscFsxXSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKwogU2VlIGFsc28gPDxnaXQtcXVpY2stc3RhcnQ+PiBmb3IgYSBicmllZiBvdmVydmlldyBvZiBnaXQgY29tbWFuZHMsCiB3aXRob3V0IGFueSBleHBsYW5hdGlvbi4KIApAQCAtNDksNyArNTksNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAJIyBnaXQgaXRzZWxmIChhcHByb3guIDEwTUIgZG93bmxvYWQpOgogJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9naXQvZ2l0LmdpdAotCSMgdGhlIGxpbnV4IGtlcm5lbCAoYXBwcm94LiAxNTBNQiBkb3dubG9hZCk6CisJIyB0aGUgTGludXgga2VybmVsIChhcHByb3guIDE1ME1CIGRvd25sb2FkKToKICQgZ2l0IGNsb25lIGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90b3J2YWxkcy9saW51eC0yLjYuZ2l0CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtOTk5LDcgKzEwMDksNyBAQAogSWYgeW91IGhhdmUgc29tZSBpbml0aWFsIGNvbnRlbnQgKHNheSwgYSB0YXJiYWxsKToKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJCB0YXIgLXh6dmYgcHJvamVjdC50YXIuZ3oKKyQgdGFyIHh6dmYgcHJvamVjdC50YXIuZ3oKICQgY2QgcHJvamVjdAogJCBnaXQgaW5pdAogJCBnaXQgYWRkIC4gIyBpbmNsdWRlIGV2ZXJ5dGhpbmcgYmVsb3cgLi8gaW4gdGhlIGZpcnN0IGNvbW1pdDoKQEAgLTEzMzAsNyArMTM0MCw3IEBACiBNRVJHRV9IRUFELCBhbmQgd2hpY2ggdG91Y2ggYW4gdW5tZXJnZWQgZmlsZS4KIAogWW91IG1heSBhbHNvIHVzZSBsaW5rZ2l0OmdpdC1tZXJnZXRvb2xbMV0sIHdoaWNoIGxldHMgeW91IG1lcmdlIHRoZQotdW5tZXJnZWQgZmlsZXMgdXNpbmcgZXh0ZXJuYWwgdG9vbHMgc3VjaCBhcyBlbWFjcyBvciBrZGlmZjMuCit1bm1lcmdlZCBmaWxlcyB1c2luZyBleHRlcm5hbCB0b29scyBzdWNoIGFzIEVtYWNzIG9yIGtkaWZmMy4KIAogRWFjaCB0aW1lIHlvdSByZXNvbHZlIHRoZSBjb25mbGljdHMgaW4gYSBmaWxlIGFuZCB1cGRhdGUgdGhlIGluZGV4OgogCkBAIC00MzU2LDcgKzQzNjYsOSBAQAogKiByZW1vdGUgZXhhbXBsZQogICBVUkw6IGdpdDovL2V4YW1wbGUuY29tL3Byb2plY3QuZ2l0CiAgIFRyYWNrZWQgcmVtb3RlIGJyYW5jaGVzCi0gICAgbWFzdGVyIG5leHQgLi4uCisgICAgbWFzdGVyCisgICAgbmV4dAorICAgIC4uLgogJCBnaXQgZmV0Y2ggZXhhbXBsZQkJIyB1cGRhdGUgYnJhbmNoZXMgZnJvbSBleGFtcGxlCiAkIGdpdCBicmFuY2ggLXIJCQkjIGxpc3QgYWxsIHJlbW90ZSBicmFuY2hlcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0dJVC1WRVJTSU9OLUdFTiBiL0dJVC1WRVJTSU9OLUdFTgppbmRleCA2Yzc0NjVjLi41NTBhMGFlIDEwMDc1NQotLS0gYS9HSVQtVkVSU0lPTi1HRU4KKysrIGIvR0lULVZFUlNJT04tR0VOCkBAIC0xLDcgKzEsNyBAQAogIyEvYmluL3NoCiAKIEdWRj1HSVQtVkVSU0lPTi1GSUxFCi1ERUZfVkVSPXYxLjYuMC4yLkdJVAorREVGX1ZFUj12MS42LjEuMy5HSVQKIAogTEY9JwogJwpkaWZmIC0tZ2l0IGEvSU5TVEFMTCBiL0lOU1RBTEwKaW5kZXggMmJhZTUzZi4uZDFkZWIwYiAxMDA2NDQKLS0tIGEvSU5TVEFMTAorKysgYi9JTlNUQUxMCkBAIC02LDcgKzYsNyBAQAogdG8gZG8gYSBnbG9iYWwgaW5zdGFsbCwgeW91IGNhbiBkbwogCiAJJCBtYWtlIHByZWZpeD0vdXNyIGFsbCBkb2MgaW5mbyA7IyBhcyB5b3Vyc2VsZgotCSMgbWFrZSBwcmVmaXg9L3VzciBpbnN0YWxsIGluc3RhbGwtZG9jIGluc3RhbGwtaW5mbyA7IyBhcyByb290CisJIyBtYWtlIHByZWZpeD0vdXNyIGluc3RhbGwgaW5zdGFsbC1kb2MgaW5zdGFsbC1odG1sIGluc3RhbGwtaW5mbyA7IyBhcyByb290CiAKIChvciBwcmVmaXg9L3Vzci9sb2NhbCwgb2YgY291cnNlKS4gIEp1c3QgbGlrZSBhbnkgcHJvZ3JhbSBzdWl0ZQogdGhhdCB1c2VzICRwcmVmaXgsIHRoZSBidWlsdCByZXN1bHRzIGhhdmUgc29tZSBwYXRocyBlbmNvZGVkLApAQCAtMTksNyArMTksNyBAQAogCSQgbWFrZSBjb25maWd1cmUgOyMgYXMgeW91cnNlbGYKIAkkIC4vY29uZmlndXJlIC0tcHJlZml4PS91c3IgOyMgYXMgeW91cnNlbGYKIAkkIG1ha2UgYWxsIGRvYyA7IyBhcyB5b3Vyc2VsZgotCSMgbWFrZSBpbnN0YWxsIGluc3RhbGwtZG9jIDsjIGFzIHJvb3QKKwkjIG1ha2UgaW5zdGFsbCBpbnN0YWxsLWRvYyBpbnN0YWxsLWh0bWw7IyBhcyByb290CiAKIAogSXNzdWVzIG9mIG5vdGU6CkBAIC04OSwxMyArODksMjIgQEAKICAgIGluY2xpbmVkIHRvIGluc3RhbGwgdGhlIHRvb2xzLCB0aGUgZGVmYXVsdCBidWlsZCB0YXJnZXQKICAgICgibWFrZSBhbGwiKSBkb2VzIF9ub3RfIGJ1aWxkIHRoZW0uCiAKKyAgICJtYWtlIGRvYyIgYnVpbGRzIGRvY3VtZW50YXRpb24gaW4gbWFuIGFuZCBodG1sIGZvcm1hdHM7IHRoZXJlIGFyZQorICAgYWxzbyAibWFrZSBtYW4iLCAibWFrZSBodG1sIiBhbmQgIm1ha2UgaW5mbyIuIE5vdGUgdGhhdCAibWFrZSBodG1sIgorICAgcmVxdWlyZXMgYXNjaWlkb2MsIGJ1dCBub3QgeG1sdG8uICJtYWtlIG1hbiIgKGFuZCB0aHVzIG1ha2UgZG9jKQorICAgcmVxdWlyZXMgYm90aC4KKworICAgIm1ha2UgaW5zdGFsbC1kb2MiIGluc3RhbGxzIGRvY3VtZW50YXRpb24gaW4gbWFuIGZvcm1hdCBvbmx5OyB0aGVyZQorICAgYXJlIGFsc28gIm1ha2UgaW5zdGFsbC1tYW4iLCAibWFrZSBpbnN0YWxsLWh0bWwiIGFuZCAibWFrZQorICAgaW5zdGFsbC1pbmZvIi4KKwogICAgQnVpbGRpbmcgYW5kIGluc3RhbGxpbmcgdGhlIGluZm8gZmlsZSBhZGRpdGlvbmFsbHkgcmVxdWlyZXMKICAgIG1ha2VpbmZvIGFuZCBkb2Nib29rMlguICBWZXJzaW9uIDAuOC4zIGlzIGtub3duIHRvIHdvcmsuCiAKICAgIFRoZSBkb2N1bWVudGF0aW9uIGlzIHdyaXR0ZW4gZm9yIEFzY2lpRG9jIDcsIGJ1dCAibWFrZQogICAgQVNDSUlET0M4PVllc1BsZWFzZSBkb2MiIHdpbGwgbGV0IHlvdSBmb3JtYXQgd2l0aCBBc2NpaURvYyA4LgogCi0gICBBbHRlcm5hdGl2ZWx5LCBwcmUtZm9ybWF0dGVkIGRvY3VtZW50YXRpb24gYXJlIGF2YWlsYWJsZSBpbgorICAgQWx0ZXJuYXRpdmVseSwgcHJlLWZvcm1hdHRlZCBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBpbgogICAgImh0bWwiIGFuZCAibWFuIiBicmFuY2hlcyBvZiB0aGUgZ2l0IHJlcG9zaXRvcnkgaXRzZWxmLiAgRm9yCiAgICBleGFtcGxlLCB5b3UgY291bGQ6CiAKQEAgLTExNyw2ICsxMjYsMTMgQEAKIAogCWh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvc2NtL2dpdC9kb2NzLwogCisgICBUaGVyZSBhcmUgYWxzbyAibWFrZSBxdWljay1pbnN0YWxsLWRvYyIsICJtYWtlIHF1aWNrLWluc3RhbGwtbWFuIgorICAgYW5kICJtYWtlIHF1aWNrLWluc3RhbGwtaHRtbCIgd2hpY2ggaW5zdGFsbCBwcmVmb3JtYXR0ZWQgbWFuIHBhZ2VzCisgICBhbmQgaHRtbCBkb2N1bWVudGF0aW9uLgorICAgVGhpcyBkb2VzIG5vdCByZXF1aXJlIGFzY2lpZG9jL3htbHRvLCBidXQgaXQgb25seSB3b3JrcyBmcm9tIHdpdGhpbgorICAgYSBjbG9uZWQgY2hlY2tvdXQgb2YgZ2l0LmdpdCB3aXRoIHRoZXNlIHR3byBleHRyYSBicmFuY2hlcywgYW5kIHdpbGwKKyAgIG5vdCB3b3JrIGZvciB0aGUgbWFpbnRhaW5lciBmb3Igb2J2aW91cyBjaGlja2VuLWFuZC1lZ2cgcmVhc29ucy4KKwogICAgSXQgaGFzIGJlZW4gcmVwb3J0ZWQgdGhhdCBkb2Nib29rLXhzbCB2ZXJzaW9uIDEuNzIgYW5kIDEuNzMgYXJlCiAgICBidWdneTsgMS43MiBtaXNmb3JtYXRzIG1hbnVhbCBwYWdlcyBmb3IgY2FsbG91dHMsIGFuZCAxLjczIG5lZWRzCiAgICB0aGUgcGF0Y2ggaW4gY29udHJpYi9wYXRjaGVzL2RvY2Jvb2steHNsLW1hbnBhZ2VzLWNoYXJtYXAucGF0Y2gKZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKaW5kZXggNWRlNDI0Ny4uMDEyNDI4OCAxMDA2NDQKLS0tIGEvTWFrZWZpbGUKKysrIGIvTWFrZWZpbGUKQEAgLTkwLDYgKzkwLDggQEAKICMKICMgRGVmaW5lIE5PX01NQVAgaWYgeW91IHdhbnQgdG8gYXZvaWQgbW1hcC4KICMKKyMgRGVmaW5lIE5PX1BUSFJFQURTIGlmIHlvdSBkbyBub3QgaGF2ZSBvciBkbyBub3Qgd2FudCB0byB1c2UgUHRocmVhZHMuCisjCiAjIERlZmluZSBOT19QUkVBRCBpZiB5b3UgaGF2ZSBhIHByb2JsZW0gd2l0aCBwcmVhZCgpIHN5c3RlbSBjYWxsIChlLmcuCiAjIGN5Z3dpbi5kbGwgYmVmb3JlIHYxLjUuMjIpLgogIwpAQCAtMTI0LDYgKzEyNiw5IEBACiAjIERlZmluZSBVU0VfU1RERVYgYmVsb3cgaWYgeW91IHdhbnQgZ2l0IHRvIGNhcmUgYWJvdXQgdGhlIHVuZGVybHlpbmcgZGV2aWNlCiAjIGNoYW5nZSBiZWluZyBjb25zaWRlcmVkIGFuIGlub2RlIGNoYW5nZSBmcm9tIHRoZSB1cGRhdGUtaW5kZXggcGVyc3BlY3RpdmUuCiAjCisjIERlZmluZSBOT19TVF9CTE9DS1NfSU5fU1RSVUNUX1NUQVQgaWYgeW91ciBwbGF0Zm9ybSBkb2VzIG5vdCBoYXZlIHN0X2Jsb2NrcworIyBmaWVsZCB0aGF0IGNvdW50cyB0aGUgb24tZGlzayBmb290cHJpbnQgaW4gNTEyLWJ5dGUgYmxvY2tzLgorIwogIyBEZWZpbmUgQVNDSUlET0M4IGlmIHlvdSB3YW50IHRvIGZvcm1hdCBkb2N1bWVudGF0aW9uIHdpdGggQXNjaWlEb2MgOAogIwogIyBEZWZpbmUgRE9DQk9PS19YU0xfMTcyIGlmIHlvdSB3YW50IHRvIGZvcm1hdCBtYW4gcGFnZXMgd2l0aCBEb2NCb29rIFhTTCB2MS43Mi4KQEAgLTE2MSw2ICsxNjYsNyBAQAogdW5hbWVfTyA6PSAkKHNoZWxsIHNoIC1jICd1bmFtZSAtbyAyPi9kZXYvbnVsbCB8fCBlY2hvIG5vdCcpCiB1bmFtZV9SIDo9ICQoc2hlbGwgc2ggLWMgJ3VuYW1lIC1yIDI+L2Rldi9udWxsIHx8IGVjaG8gbm90JykKIHVuYW1lX1AgOj0gJChzaGVsbCBzaCAtYyAndW5hbWUgLXAgMj4vZGV2L251bGwgfHwgZWNobyBub3QnKQordW5hbWVfViA6PSAkKHNoZWxsIHNoIC1jICd1bmFtZSAtdiAyPi9kZXYvbnVsbCB8fCBlY2hvIG5vdCcpCiAKICMgQ0ZMQUdTIGFuZCBMREZMQUdTIGFyZSBmb3IgdGhlIHVzZXJzIHRvIG92ZXJyaWRlIGZyb20gdGhlIGNvbW1hbmQgbGluZS4KIApAQCAtMjI2LDYgKzIzMiw3IEBACiBSUE1CVUlMRCA9IHJwbWJ1aWxkCiBUQ0xfUEFUSCA9IHRjbHNoCiBUQ0xUS19QQVRIID0gd2lzaAorUFRIUkVBRF9MSUJTID0gLWxwdGhyZWFkCiAKIGV4cG9ydCBUQ0xfUEFUSCBUQ0xUS19QQVRICiAKQEAgLTI5MSw4ICsyOTgsOCBAQAogUFJPR1JBTVMgKz0gZ2l0LW1rdHJlZSRYCiBQUk9HUkFNUyArPSBnaXQtcGFjay1yZWR1bmRhbnQkWAogUFJPR1JBTVMgKz0gZ2l0LXBhdGNoLWlkJFgKLVBST0dSQU1TICs9IGdpdC1yZWNlaXZlLXBhY2skWAogUFJPR1JBTVMgKz0gZ2l0LXNlbmQtcGFjayRYCitQUk9HUkFNUyArPSBnaXQtc2hlbGwkWAogUFJPR1JBTVMgKz0gZ2l0LXNob3ctaW5kZXgkWAogUFJPR1JBTVMgKz0gZ2l0LXVucGFjay1maWxlJFgKIFBST0dSQU1TICs9IGdpdC11cGRhdGUtc2VydmVyLWluZm8kWApAQCAtMzEzLDYgKzMyMCw3IEBACiBCVUlMVF9JTlMgKz0gZ2l0LXBlZWstcmVtb3RlJFgKIEJVSUxUX0lOUyArPSBnaXQtcmVwby1jb25maWckWAogQlVJTFRfSU5TICs9IGdpdC1zaG93JFgKK0JVSUxUX0lOUyArPSBnaXQtc3RhZ2UkWAogQlVJTFRfSU5TICs9IGdpdC1zdGF0dXMkWAogQlVJTFRfSU5TICs9IGdpdC13aGF0Y2hhbmdlZCRYCiAKQEAgLTM0Myw2ICszNTEsNyBAQAogTElCX0ggKz0gY2FjaGUtdHJlZS5oCiBMSUJfSCArPSBjb21taXQuaAogTElCX0ggKz0gY29tcGF0L21pbmd3LmgKK0xJQl9IICs9IGNvbXBhdC9jeWd3aW4uaAogTElCX0ggKz0gY3N1bS1maWxlLmgKIExJQl9IICs9IGRlY29yYXRlLmgKIExJQl9IICs9IGRlbHRhLmgKQEAgLTM1NCw2ICszNjMsOCBAQAogTElCX0ggKz0gZ3JhcGguaAogTElCX0ggKz0gZ3JlcC5oCiBMSUJfSCArPSBoYXNoLmgKK0xJQl9IICs9IGhlbHAuaAorTElCX0ggKz0gbGV2ZW5zaHRlaW4uaAogTElCX0ggKz0gbGlzdC1vYmplY3RzLmgKIExJQl9IICs9IGxsLW1lcmdlLmgKIExJQl9IICs9IGxvZy10cmVlLmgKQEAgLTM4Myw2ICszOTQsNyBAQAogTElCX0ggKz0gdHJlZS5oCiBMSUJfSCArPSB0cmVlLXdhbGsuaAogTElCX0ggKz0gdW5wYWNrLXRyZWVzLmgKK0xJQl9IICs9IHVzZXJkaWZmLmgKIExJQl9IICs9IHV0ZjguaAogTElCX0ggKz0gd3Qtc3RhdHVzLmgKIApAQCAtNDI5LDcgKzQ0MSw3IEBACiBMSUJfT0JKUyArPSBoYXNoLm8KIExJQl9PQkpTICs9IGhlbHAubwogTElCX09CSlMgKz0gaWRlbnQubwotTElCX09CSlMgKz0gaW50ZXJwb2xhdGUubworTElCX09CSlMgKz0gbGV2ZW5zaHRlaW4ubwogTElCX09CSlMgKz0gbGlzdC1vYmplY3RzLm8KIExJQl9PQkpTICs9IGxsLW1lcmdlLm8KIExJQl9PQkpTICs9IGxvY2tmaWxlLm8KQEAgLTQzNyw2ICs0NDksNyBAQAogTElCX09CSlMgKz0gbWFpbG1hcC5vCiBMSUJfT0JKUyArPSBtYXRjaC10cmVlcy5vCiBMSUJfT0JKUyArPSBtZXJnZS1maWxlLm8KK0xJQl9PQkpTICs9IG1lcmdlLXJlY3Vyc2l2ZS5vCiBMSUJfT0JKUyArPSBuYW1lLWhhc2gubwogTElCX09CSlMgKz0gb2JqZWN0Lm8KIExJQl9PQkpTICs9IHBhY2stY2hlY2subwpAQCAtNDc3LDYgKzQ5MCw3IEBACiBMSUJfT0JKUyArPSB0cmVlLm8KIExJQl9PQkpTICs9IHRyZWUtd2Fsay5vCiBMSUJfT0JKUyArPSB1bnBhY2stdHJlZXMubworTElCX09CSlMgKz0gdXNlcmRpZmYubwogTElCX09CSlMgKz0gdXNhZ2UubwogTElCX09CSlMgKz0gdXRmOC5vCiBMSUJfT0JKUyArPSB3YWxrZXIubwpAQCAtNDg1LDYgKzQ5OSw3IEBACiBMSUJfT0JKUyArPSB3cy5vCiBMSUJfT0JKUyArPSB3dC1zdGF0dXMubwogTElCX09CSlMgKz0geGRpZmYtaW50ZXJmYWNlLm8KK0xJQl9PQkpTICs9IHByZWxvYWQtaW5kZXgubwogCiBCVUlMVElOX09CSlMgKz0gYnVpbHRpbi1hZGQubwogQlVJTFRJTl9PQkpTICs9IGJ1aWx0aW4tYW5ub3RhdGUubwpAQCAtNTE4LDYgKzUzMyw3IEBACiBCVUlMVElOX09CSlMgKz0gYnVpbHRpbi1mc2NrLm8KIEJVSUxUSU5fT0JKUyArPSBidWlsdGluLWdjLm8KIEJVSUxUSU5fT0JKUyArPSBidWlsdGluLWdyZXAubworQlVJTFRJTl9PQkpTICs9IGJ1aWx0aW4taGVscC5vCiBCVUlMVElOX09CSlMgKz0gYnVpbHRpbi1pbml0LWRiLm8KIEJVSUxUSU5fT0JKUyArPSBidWlsdGluLWxvZy5vCiBCVUlMVElOX09CSlMgKz0gYnVpbHRpbi1scy1maWxlcy5vCkBAIC01MzgsNiArNTU0LDcgQEAKIEJVSUxUSU5fT0JKUyArPSBidWlsdGluLXBydW5lLm8KIEJVSUxUSU5fT0JKUyArPSBidWlsdGluLXB1c2gubwogQlVJTFRJTl9PQkpTICs9IGJ1aWx0aW4tcmVhZC10cmVlLm8KK0JVSUxUSU5fT0JKUyArPSBidWlsdGluLXJlY2VpdmUtcGFjay5vCiBCVUlMVElOX09CSlMgKz0gYnVpbHRpbi1yZWZsb2cubwogQlVJTFRJTl9PQkpTICs9IGJ1aWx0aW4tcmVtb3RlLm8KIEJVSUxUSU5fT0JKUyArPSBidWlsdGluLXJlcmVyZS5vCkBAIC01NzUsOSArNTkyLDExIEBACiAKIGlmZXEgKCQodW5hbWVfUyksTGludXgpCiAJTk9fU1RSTENQWSA9IFllc1BsZWFzZQorCVRIUkVBREVEX0RFTFRBX1NFQVJDSCA9IFllc1BsZWFzZQogZW5kaWYKIGlmZXEgKCQodW5hbWVfUyksR05VL2tGcmVlQlNEKQogCU5PX1NUUkxDUFkgPSBZZXNQbGVhc2UKKwlUSFJFQURFRF9ERUxUQV9TRUFSQ0ggPSBZZXNQbGVhc2UKIGVuZGlmCiBpZmVxICgkKHVuYW1lX1MpLFVuaXhXYXJlKQogCUNDID0gY2MKQEAgLTYyNiw4ICs2NDUsNyBAQAogCWVuZGlmCiAJTk9fU1RSTENQWSA9IFllc1BsZWFzZQogCU5PX01FTU1FTSA9IFllc1BsZWFzZQotCUNPTVBBVF9DRkxBR1MgKz0gLUljb21wYXQvcmVnZXgKLQlDT01QQVRfT0JKUyArPSBjb21wYXQvcmVnZXgvcmVnZXgubworCVRIUkVBREVEX0RFTFRBX1NFQVJDSCA9IFllc1BsZWFzZQogZW5kaWYKIGlmZXEgKCQodW5hbWVfUyksU3VuT1MpCiAJTkVFRFNfU09DS0VUID0gWWVzUGxlYXNlCkBAIC02NzcsOCArNjk1LDEyIEBACiAJQkFTSUNfQ0ZMQUdTICs9IC1JL3Vzci9sb2NhbC9pbmNsdWRlCiAJQkFTSUNfTERGTEFHUyArPSAtTC91c3IvbG9jYWwvbGliCiAJRElSX0hBU19CU0RfR1JPVVBfU0VNQU5USUNTID0gWWVzUGxlYXNlCi0JQ09NUEFUX0NGTEFHUyArPSAtSWNvbXBhdC9yZWdleAotCUNPTVBBVF9PQkpTICs9IGNvbXBhdC9yZWdleC9yZWdleC5vCisJVEhSRUFERURfREVMVEFfU0VBUkNIID0gWWVzUGxlYXNlCisJaWZlcSAoJChzaGVsbCBleHByICIkKHVuYW1lX1IpIiA6ICc0XC4nKSwyKQorCQlQVEhSRUFEX0xJQlMgPSAtcHRocmVhZAorCQlOT19VSU5UTUFYX1QgPSBZZXNQbGVhc2UKKwkJTk9fU1RSVE9VTUFYID0gWWVzUGxlYXNlCisJZW5kaWYKIGVuZGlmCiBpZmVxICgkKHVuYW1lX1MpLE9wZW5CU0QpCiAJTk9fU1RSQ0FTRVNUUiA9IFllc1BsZWFzZQpAQCAtNjg2LDE0ICs3MDgsMTUgQEAKIAlORUVEU19MSUJJQ09OViA9IFllc1BsZWFzZQogCUJBU0lDX0NGTEFHUyArPSAtSS91c3IvbG9jYWwvaW5jbHVkZQogCUJBU0lDX0xERkxBR1MgKz0gLUwvdXNyL2xvY2FsL2xpYgorCVRIUkVBREVEX0RFTFRBX1NFQVJDSCA9IFllc1BsZWFzZQogZW5kaWYKIGlmZXEgKCQodW5hbWVfUyksTmV0QlNEKQogCWlmZXEgKCQoc2hlbGwgZXhwciAiJCh1bmFtZV9SKSIgOiAnWzAxXVwuJyksMikKIAkJTkVFRFNfTElCSUNPTlYgPSBZZXNQbGVhc2UKIAllbmRpZgogCUJBU0lDX0NGTEFHUyArPSAtSS91c3IvcGtnL2luY2x1ZGUKLQlCQVNJQ19MREZMQUdTICs9IC1ML3Vzci9wa2cvbGliCi0JQUxMX0xERkxBR1MgKz0gLVdsLC1ycGF0aCwvdXNyL3BrZy9saWIKKwlCQVNJQ19MREZMQUdTICs9IC1ML3Vzci9wa2cvbGliICQoQ0NfTERfRFlOUEFUSCkvdXNyL3BrZy9saWIKKwlUSFJFQURFRF9ERUxUQV9TRUFSQ0ggPSBZZXNQbGVhc2UKIGVuZGlmCiBpZmVxICgkKHVuYW1lX1MpLEFJWCkKIAlOT19TVFJDQVNFU1RSPVllc1BsZWFzZQpAQCAtNzA0LDggKzcyNywxMSBAQAogCUlOVEVSTkFMX1FTT1JUID0gVW5mb3J0dW5hdGVseVllcwogCU5FRURTX0xJQklDT05WPVllc1BsZWFzZQogCUJBU0lDX0NGTEFHUyArPSAtRF9MQVJHRV9GSUxFUwotCUNPTVBBVF9DRkxBR1MgKz0gLUljb21wYXQvcmVnZXgKLQlDT01QQVRfT0JKUyArPSBjb21wYXQvcmVnZXgvcmVnZXgubworCWlmbmVxICgkKHNoZWxsIGV4cHIgIiQodW5hbWVfVikiIDogJ1sxMjM0XScpLDEpCisJCVRIUkVBREVEX0RFTFRBX1NFQVJDSCA9IFllc1BsZWFzZQorCWVsc2UKKwkJTk9fUFRIUkVBRFMgPSBZZXNQbGVhc2UKKwllbmRpZgogZW5kaWYKIGlmZXEgKCQodW5hbWVfUyksR05VKQogCSMgR05VL0h1cmQKQEAgLTczNSw2ICs3NjEsOSBAQAogCU5PX1NZU19TRUxFQ1RfSCA9IFllc1BsZWFzZQogCVNOUFJJTlRGX1JFVFVSTlNfQk9HVVMgPSBZZXNQbGVhc2UKIGVuZGlmCitpZm5lcSAoLCQoZmluZHN0cmluZyBDWUdXSU4sJCh1bmFtZV9TKSkpCisJQ09NUEFUX09CSlMgKz0gY29tcGF0L2N5Z3dpbi5vCitlbmRpZgogaWZuZXEgKCwkKGZpbmRzdHJpbmcgTUlOR1csJCh1bmFtZV9TKSkpCiAJTk9fTU1BUCA9IFllc1BsZWFzZQogCU5PX1BSRUFEID0gWWVzUGxlYXNlCkBAIC03NDcsNiArNzc2LDcgQEAKIAlOT19TVFJDQVNFU1RSID0gWWVzUGxlYXNlCiAJTk9fU1RSTENQWSA9IFllc1BsZWFzZQogCU5PX01FTU1FTSA9IFllc1BsZWFzZQorCU5PX1BUSFJFQURTID0gWWVzUGxlYXNlCiAJTkVFRFNfTElCSUNPTlYgPSBZZXNQbGVhc2UKIAlPTERfSUNPTlYgPSBZZXNQbGVhc2UKIAlOT19DOTlfRk9STUFUID0gWWVzUGxlYXNlCkBAIC03NTYsNiArNzg2LDcgQEAKIAlOT19TVk5fVEVTVFMgPSBZZXNQbGVhc2UKIAlOT19QRVJMX01BS0VNQUtFUiA9IFllc1BsZWFzZQogCU5PX1BPU0lYX09OTFlfUFJPR1JBTVMgPSBZZXNQbGVhc2UKKwlOT19TVF9CTE9DS1NfSU5fU1RSVUNUX1NUQVQgPSBZZXNQbGVhc2UKIAlDT01QQVRfQ0ZMQUdTICs9IC1EX19VU0VfTUlOR1dfQUNDRVNTIC1ETk9HREkgLUljb21wYXQgLUljb21wYXQvcmVnZXggLUljb21wYXQvZm5tYXRjaAogCUNPTVBBVF9DRkxBR1MgKz0gLURTTlBSSU5URl9TSVpFX0NPUlI9MQogCUNPTVBBVF9DRkxBR1MgKz0gLURTVFJJUF9FWFRFTlNJT049XCIuZXhlXCIKQEAgLTc4OCwxMiArODE5LDE0IEBACiAJZW5kaWYKIGVuZGlmCiAKLWlmZGVmIE5PX1JfVE9fR0NDX0xJTktFUgotCSMgU29tZSBnY2MgZG9lcyBub3QgYWNjZXB0IGFuZCBwYXNzIC1SIHRvIHRoZSBsaW5rZXIgdG8gc3BlY2lmeQotCSMgdGhlIHJ1bnRpbWUgZHluYW1pYyBsaWJyYXJ5IHBhdGguCi0JQ0NfTERfRFlOUEFUSCA9IC1XbCwtcnBhdGg9Ci1lbHNlCi0JQ0NfTERfRFlOUEFUSCA9IC1SCitpZm5kZWYgQ0NfTERfRFlOUEFUSAorCWlmZGVmIE5PX1JfVE9fR0NDX0xJTktFUgorCQkjIFNvbWUgZ2NjIGRvZXMgbm90IGFjY2VwdCBhbmQgcGFzcyAtUiB0byB0aGUgbGlua2VyIHRvIHNwZWNpZnkKKwkJIyB0aGUgcnVudGltZSBkeW5hbWljIGxpYnJhcnkgcGF0aC4KKwkJQ0NfTERfRFlOUEFUSCA9IC1XbCwtcnBhdGgsCisJZWxzZQorCQlDQ19MRF9EWU5QQVRIID0gLVIKKwllbmRpZgogZW5kaWYKIAogaWZkZWYgTk9fQ1VSTApAQCAtODI5LDcgKzg2Miw2IEBACiBpZm5kZWYgTk9fUE9TSVhfT05MWV9QUk9HUkFNUwogCVBST0dSQU1TICs9IGdpdC1kYWVtb24kWAogCVBST0dSQU1TICs9IGdpdC1pbWFwLXNlbmQkWAotCVBST0dSQU1TICs9IGdpdC1zaGVsbCRYCiBlbmRpZgogaWZuZGVmIE5PX09QRU5TU0wKIAlPUEVOU1NMX0xJQlNTTCA9IC1sc3NsCkBAIC04NzAsNiArOTAyLDkgQEAKIGlmZGVmIE5PX0RfSU5PX0lOX0RJUkVOVAogCUJBU0lDX0NGTEFHUyArPSAtRE5PX0RfSU5PX0lOX0RJUkVOVAogZW5kaWYKK2lmZGVmIE5PX1NUX0JMT0NLU19JTl9TVFJVQ1RfU1RBVAorCUJBU0lDX0NGTEFHUyArPSAtRE5PX1NUX0JMT0NLU19JTl9TVFJVQ1RfU1RBVAorZW5kaWYKIGlmZGVmIE5PX0M5OV9GT1JNQVQKIAlCQVNJQ19DRkxBR1MgKz0gLUROT19DOTlfRk9STUFUCiBlbmRpZgpAQCAtOTMxLDYgKzk2Niw5IEBACiBpZmRlZiBOT19JUFY2CiAJQkFTSUNfQ0ZMQUdTICs9IC1ETk9fSVBWNgogZW5kaWYKK2lmZGVmIE5PX1VJTlRNQVhfVAorCUJBU0lDX0NGTEFHUyArPSAtRHVpbnRtYXhfdD11aW50MzJfdAorZW5kaWYKIGlmZGVmIE5PX1NPQ0tBRERSX1NUT1JBR0UKIGlmZGVmIE5PX0lQVjYKIAlCQVNJQ19DRkxBR1MgKz0gLURzb2NrYWRkcl9zdG9yYWdlPXNvY2thZGRyX2luCkBAIC05OTAsOSArMTAyOCwxNSBAQAogCUNPTVBBVF9PQkpTICs9IGNvbXBhdC9xc29ydC5vCiBlbmRpZgogCitpZmRlZiBOT19QVEhSRUFEUworCVRIUkVBREVEX0RFTFRBX1NFQVJDSCA9CisJQkFTSUNfQ0ZMQUdTICs9IC1ETk9fUFRIUkVBRFMKK2Vsc2UKKwlFWFRMSUJTICs9ICQoUFRIUkVBRF9MSUJTKQorZW5kaWYKKwogaWZkZWYgVEhSRUFERURfREVMVEFfU0VBUkNICiAJQkFTSUNfQ0ZMQUdTICs9IC1EVEhSRUFERURfREVMVEFfU0VBUkNICi0JRVhUTElCUyArPSAtbHB0aHJlYWQKIAlMSUJfT0JKUyArPSB0aHJlYWQtdXRpbHMubwogZW5kaWYKIGlmZGVmIERJUl9IQVNfQlNEX0dST1VQX1NFTUFOVElDUwpAQCAtMTA5OCw3ICsxMTQyLDcgQEAKIAkkKFFVSUVUX0xJTkspJChDQykgJChBTExfQ0ZMQUdTKSAtbyAkQCBnaXQubyBcCiAJCSQoQlVJTFRJTl9PQkpTKSAkKEFMTF9MREZMQUdTKSAkKExJQlMpCiAKLWhlbHAubzogaGVscC5jIGNvbW1vbi1jbWRzLmggR0lULUNGTEFHUworYnVpbHRpbi1oZWxwLm86IGJ1aWx0aW4taGVscC5jIGNvbW1vbi1jbWRzLmggR0lULUNGTEFHUwogCSQoUVVJRVRfQ0MpJChDQykgLW8gJCoubyAtYyAkKEFMTF9DRkxBR1MpIFwKIAkJJy1ER0lUX0hUTUxfUEFUSD0iJChodG1sZGlyX1NRKSInIFwKIAkJJy1ER0lUX01BTl9QQVRIPSIkKG1hbmRpcl9TUSkiJyBcCkBAIC0xMjI1LDcgKzEyNjksOSBAQAogZ2l0LSUkWDogJS5vICQoR0lUTElCUykKIAkkKFFVSUVUX0xJTkspJChDQykgJChBTExfQ0ZMQUdTKSAtbyAkQCAkKEFMTF9MREZMQUdTKSAkKGZpbHRlciAlLm8sJF4pICQoTElCUykKIAotZ2l0LWltYXAtc2VuZCRYOiBpbWFwLXNlbmQubyAkKExJQl9GSUxFKQorZ2l0LWltYXAtc2VuZCRYOiBpbWFwLXNlbmQubyAkKEdJVExJQlMpCisJJChRVUlFVF9MSU5LKSQoQ0MpICQoQUxMX0NGTEFHUykgLW8gJEAgJChBTExfTERGTEFHUykgJChmaWx0ZXIgJS5vLCReKSBcCisJCSQoTElCUykgJChPUEVOU1NMX0xJTkspICQoT1BFTlNTTF9MSUJTU0wpCiAKIGh0dHAubyBodHRwLXdhbGtlci5vIGh0dHAtcHVzaC5vIHRyYW5zcG9ydC5vOiBodHRwLmgKIApAQCAtMTI1Miw2ICsxMjk4LDEyIEBACiBkb2M6CiAJJChNQUtFKSAtQyBEb2N1bWVudGF0aW9uIGFsbAogCittYW46CisJJChNQUtFKSAtQyBEb2N1bWVudGF0aW9uIG1hbgorCitodG1sOgorCSQoTUFLRSkgLUMgRG9jdW1lbnRhdGlvbiBodG1sCisKIGluZm86CiAJJChNQUtFKSAtQyBEb2N1bWVudGF0aW9uIGluZm8KIApAQCAtMTM4OCw2ICsxNDQwLDkgQEAKIGluc3RhbGwtZG9jOgogCSQoTUFLRSkgLUMgRG9jdW1lbnRhdGlvbiBpbnN0YWxsCiAKK2luc3RhbGwtbWFuOgorCSQoTUFLRSkgLUMgRG9jdW1lbnRhdGlvbiBpbnN0YWxsLW1hbgorCiBpbnN0YWxsLWh0bWw6CiAJJChNQUtFKSAtQyBEb2N1bWVudGF0aW9uIGluc3RhbGwtaHRtbAogCkBAIC0xMzk3LDYgKzE0NTIsMTIgQEAKIHF1aWNrLWluc3RhbGwtZG9jOgogCSQoTUFLRSkgLUMgRG9jdW1lbnRhdGlvbiBxdWljay1pbnN0YWxsCiAKK3F1aWNrLWluc3RhbGwtbWFuOgorCSQoTUFLRSkgLUMgRG9jdW1lbnRhdGlvbiBxdWljay1pbnN0YWxsLW1hbgorCitxdWljay1pbnN0YWxsLWh0bWw6CisJJChNQUtFKSAtQyBEb2N1bWVudGF0aW9uIHF1aWNrLWluc3RhbGwtaHRtbAorCiAKIAogIyMjIE1haW50YWluZXIncyBkaXN0IHJ1bGVzCmRpZmYgLS1naXQgYS9SZWxOb3RlcyBiL1JlbE5vdGVzCmluZGV4IDAwOWQ4ZjAuLjU2OTM2YWQgMTIwMDAwCi0tLSBhL1JlbE5vdGVzCisrKyBiL1JlbE5vdGVzCkBAIC0xICsxIEBACi1Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLTEuNi4wLjYudHh0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy0xLjYuMS40LnR4dApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2Fic3BhdGguYyBiL2Fic3BhdGguYwppbmRleCAwZDU2MTI0Li42NDlmMzRmIDEwMDY0NAotLS0gYS9hYnNwYXRoLmMKKysrIGIvYWJzcGF0aC5jCkBAIC0xLDUgKzEsMTYgQEAKICNpbmNsdWRlICJjYWNoZS5oIgogCisvKgorICogRG8gbm90IHVzZSB0aGlzIGZvciBpbnNwZWN0aW5nICp0cmFja2VkKiBjb250ZW50LiAgV2hlbiBwYXRoIGlzIGEKKyAqIHN5bWxpbmsgdG8gYSBkaXJlY3RvcnksIHdlIGRvIG5vdCB3YW50IHRvIHNheSBpdCBpcyBhIGRpcmVjdG9yeSB3aGVuCisgKiBkZWFsaW5nIHdpdGggdHJhY2tlZCBjb250ZW50IGluIHRoZSB3b3JraW5nIHRyZWUuCisgKi8KK2ludCBpc19kaXJlY3RvcnkoY29uc3QgY2hhciAqcGF0aCkKK3sKKwlzdHJ1Y3Qgc3RhdCBzdDsKKwlyZXR1cm4gKCFzdGF0KHBhdGgsICZzdCkgJiYgU19JU0RJUihzdC5zdF9tb2RlKSk7Cit9CisKIC8qIFdlIGFsbG93ICJyZWN1cnNpdmUiIHN5bWJvbGljIGxpbmtzLiBPbmx5IHdpdGhpbiByZWFzb24sIHRob3VnaC4gKi8KICNkZWZpbmUgTUFYREVQVEggNQogCkBAIC0xNyw3ICsyOCw3IEBACiAJCWRpZSAoIlRvbyBsb25nIHBhdGg6ICUuKnMiLCA2MCwgcGF0aCk7CiAKIAl3aGlsZSAoZGVwdGgtLSkgewotCQlpZiAoc3RhdChidWYsICZzdCkgfHwgIVNfSVNESVIoc3Quc3RfbW9kZSkpIHsKKwkJaWYgKCFpc19kaXJlY3RvcnkoYnVmKSkgewogCQkJY2hhciAqbGFzdF9zbGFzaCA9IHN0cnJjaHIoYnVmLCAnLycpOwogCQkJaWYgKGxhc3Rfc2xhc2gpIHsKIAkJCQkqbGFzdF9zbGFzaCA9ICdcMCc7CkBAIC01Myw2ICs2NCw4IEBACiAJCQlsZW4gPSByZWFkbGluayhidWYsIG5leHRfYnVmLCBQQVRIX01BWCk7CiAJCQlpZiAobGVuIDwgMCkKIAkJCQlkaWUgKCJJbnZhbGlkIHN5bWxpbms6ICVzIiwgYnVmKTsKKwkJCWlmIChQQVRIX01BWCA8PSBsZW4pCisJCQkJZGllKCJzeW1ib2xpYyBsaW5rIHRvbyBsb25nOiAlcyIsIGJ1Zik7CiAJCQluZXh0X2J1ZltsZW5dID0gJ1wwJzsKIAkJCWJ1ZiA9IG5leHRfYnVmOwogCQkJYnVmX2luZGV4ID0gMSAtIGJ1Zl9pbmRleDsKZGlmZiAtLWdpdCBhL2FyY2hpdmUtdGFyLmMgYi9hcmNoaXZlLXRhci5jCmluZGV4IDEzMDI5NjEuLmJhODkwZWIgMTAwNjQ0Ci0tLSBhL2FyY2hpdmUtdGFyLmMKKysrIGIvYXJjaGl2ZS10YXIuYwpAQCAtMTI0LDExICsxMjQsMTAgQEAKIAkJdW5zaWduZWQgaW50IG1vZGUsIHZvaWQgKmJ1ZmZlciwgdW5zaWduZWQgbG9uZyBzaXplKQogewogCXN0cnVjdCB1c3Rhcl9oZWFkZXIgaGVhZGVyOwotCXN0cnVjdCBzdHJidWYgZXh0X2hlYWRlcjsKKwlzdHJ1Y3Qgc3RyYnVmIGV4dF9oZWFkZXIgPSBTVFJCVUZfSU5JVDsKIAlpbnQgZXJyID0gMDsKIAogCW1lbXNldCgmaGVhZGVyLCAwLCBzaXplb2YoaGVhZGVyKSk7Ci0Jc3RyYnVmX2luaXQoJmV4dF9oZWFkZXIsIDApOwogCiAJaWYgKCFzaGExKSB7CiAJCSpoZWFkZXIudHlwZWZsYWcgPSBUWVBFRkxBR19HTE9CQUxfSEVBREVSOwpAQCAtMjExLDEwICsyMTAsOSBAQAogc3RhdGljIGludCB3cml0ZV9nbG9iYWxfZXh0ZW5kZWRfaGVhZGVyKHN0cnVjdCBhcmNoaXZlcl9hcmdzICphcmdzKQogewogCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEgPSBhcmdzLT5jb21taXRfc2hhMTsKLQlzdHJ1Y3Qgc3RyYnVmIGV4dF9oZWFkZXI7CisJc3RydWN0IHN0cmJ1ZiBleHRfaGVhZGVyID0gU1RSQlVGX0lOSVQ7CiAJaW50IGVycjsKIAotCXN0cmJ1Zl9pbml0KCZleHRfaGVhZGVyLCAwKTsKIAlzdHJidWZfYXBwZW5kX2V4dF9oZWFkZXIoJmV4dF9oZWFkZXIsICJjb21tZW50Iiwgc2hhMV90b19oZXgoc2hhMSksIDQwKTsKIAllcnIgPSB3cml0ZV90YXJfZW50cnkoYXJncywgTlVMTCwgTlVMTCwgMCwgMCwgZXh0X2hlYWRlci5idWYsCiAJCQlleHRfaGVhZGVyLmxlbik7CmRpZmYgLS1naXQgYS9hcmNoaXZlLmMgYi9hcmNoaXZlLmMKaW5kZXggNDVkMjQyYi4uOWFjNDU1ZCAxMDA2NDQKLS0tIGEvYXJjaGl2ZS5jCisrKyBiL2FyY2hpdmUuYwpAQCAtMTUsNyArMTUsNyBAQAogCiAjZGVmaW5lIFVTRVNfWkxJQl9DT01QUkVTU0lPTiAxCiAKLWNvbnN0IHN0cnVjdCBhcmNoaXZlciB7CitzdGF0aWMgY29uc3Qgc3RydWN0IGFyY2hpdmVyIHsKIAljb25zdCBjaGFyICpuYW1lOwogCXdyaXRlX2FyY2hpdmVfZm5fdCB3cml0ZV9hcmNoaXZlOwogCXVuc2lnbmVkIGludCBmbGFnczsKQEAgLTI5LDExICsyOSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdHJidWYgKmJ1ZikKIHsKIAljaGFyICp0b19mcmVlID0gTlVMTDsKLQlzdHJ1Y3Qgc3RyYnVmIGZtdDsKKwlzdHJ1Y3Qgc3RyYnVmIGZtdCA9IFNUUkJVRl9JTklUOwogCiAJaWYgKHNyYyA9PSBidWYtPmJ1ZikKIAkJdG9fZnJlZSA9IHN0cmJ1Zl9kZXRhY2goYnVmLCBOVUxMKTsKLQlzdHJidWZfaW5pdCgmZm10LCAwKTsKIAlmb3IgKDs7KSB7CiAJCWNvbnN0IGNoYXIgKmIsICpjOwogCkBAIC02NSwxMCArNjQsOSBAQAogCiAJYnVmZmVyID0gcmVhZF9zaGExX2ZpbGUoc2hhMSwgdHlwZSwgc2l6ZXApOwogCWlmIChidWZmZXIgJiYgU19JU1JFRyhtb2RlKSkgewotCQlzdHJ1Y3Qgc3RyYnVmIGJ1ZjsKKwkJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAkJc2l6ZV90IHNpemUgPSAwOwogCi0JCXN0cmJ1Zl9pbml0KCZidWYsIDApOwogCQlzdHJidWZfYXR0YWNoKCZidWYsIGJ1ZmZlciwgKnNpemVwLCAqc2l6ZXAgKyAxKTsKIAkJY29udmVydF90b193b3JraW5nX3RyZWUocGF0aCwgYnVmLmJ1ZiwgYnVmLmxlbiwgJmJ1Zik7CiAJCWlmIChjb21taXQpCmRpZmYgLS1naXQgYS9hcm0vc2hhMS5jIGIvYXJtL3NoYTEuYwppbmRleCA5ZTNhZTAzLi5jNjFhZDRhIDEwMDY0NAotLS0gYS9hcm0vc2hhMS5jCisrKyBiL2FybS9zaGExLmMKQEAgLTgsOSArOCw5IEBACiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSAic2hhMS5oIgogCi1leHRlcm4gdm9pZCBzaGFfdHJhbnNmb3JtKHVpbnQzMl90ICpoYXNoLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1aW50MzJfdCAqVyk7CitleHRlcm4gdm9pZCBhcm1fc2hhX3RyYW5zZm9ybSh1aW50MzJfdCAqaGFzaCwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdWludDMyX3QgKlcpOwogCi12b2lkIFNIQTFfSW5pdChTSEFfQ1RYICpjKQordm9pZCBhcm1fU0hBMV9Jbml0KGFybV9TSEFfQ1RYICpjKQogewogCWMtPmxlbiA9IDA7CiAJYy0+aGFzaFswXSA9IDB4Njc0NTIzMDE7CkBAIC0yMCw3ICsyMCw3IEBACiAJYy0+aGFzaFs0XSA9IDB4YzNkMmUxZjA7CiB9CiAKLXZvaWQgU0hBMV9VcGRhdGUoU0hBX0NUWCAqYywgY29uc3Qgdm9pZCAqcCwgdW5zaWduZWQgbG9uZyBuKQordm9pZCBhcm1fU0hBMV9VcGRhdGUoYXJtX1NIQV9DVFggKmMsIGNvbnN0IHZvaWQgKnAsIHVuc2lnbmVkIGxvbmcgbikKIHsKIAl1aW50MzJfdCB3b3Jrc3BhY2VbODBdOwogCXVuc2lnbmVkIGludCBwYXJ0aWFsOwpAQCAtMzIsMTIgKzMyLDEyIEBACiAJCWlmIChwYXJ0aWFsKSB7CiAJCQlkb25lID0gNjQgLSBwYXJ0aWFsOwogCQkJbWVtY3B5KGMtPmJ1ZmZlciArIHBhcnRpYWwsIHAsIGRvbmUpOwotCQkJc2hhX3RyYW5zZm9ybShjLT5oYXNoLCBjLT5idWZmZXIsIHdvcmtzcGFjZSk7CisJCQlhcm1fc2hhX3RyYW5zZm9ybShjLT5oYXNoLCBjLT5idWZmZXIsIHdvcmtzcGFjZSk7CiAJCQlwYXJ0aWFsID0gMDsKIAkJfSBlbHNlCiAJCQlkb25lID0gMDsKIAkJd2hpbGUgKG4gPj0gZG9uZSArIDY0KSB7Ci0JCQlzaGFfdHJhbnNmb3JtKGMtPmhhc2gsIHAgKyBkb25lLCB3b3Jrc3BhY2UpOworCQkJYXJtX3NoYV90cmFuc2Zvcm0oYy0+aGFzaCwgcCArIGRvbmUsIHdvcmtzcGFjZSk7CiAJCQlkb25lICs9IDY0OwogCQl9CiAJfSBlbHNlCkBAIC00Niw3ICs0Niw3IEBACiAJCW1lbWNweShjLT5idWZmZXIgKyBwYXJ0aWFsLCBwICsgZG9uZSwgbiAtIGRvbmUpOwogfQogCi12b2lkIFNIQTFfRmluYWwodW5zaWduZWQgY2hhciAqaGFzaCwgU0hBX0NUWCAqYykKK3ZvaWQgYXJtX1NIQTFfRmluYWwodW5zaWduZWQgY2hhciAqaGFzaCwgYXJtX1NIQV9DVFggKmMpCiB7CiAJdWludDY0X3QgYml0bGVuOwogCXVpbnQzMl90IGJpdGxlbl9oaSwgYml0bGVuX2xvOwpAQCAtNTcsNyArNTcsNyBAQAogCWJpdGxlbiA9IGMtPmxlbiA8PCAzOwogCW9mZnNldCA9IGMtPmxlbiAmIDB4M2Y7CiAJcGFkbGVuID0gKChvZmZzZXQgPCA1NikgPyA1NiA6ICg2NCArIDU2KSkgLSBvZmZzZXQ7Ci0JU0hBMV9VcGRhdGUoYywgcGFkZGluZywgcGFkbGVuKTsKKwlhcm1fU0hBMV9VcGRhdGUoYywgcGFkZGluZywgcGFkbGVuKTsKIAogCWJpdGxlbl9oaSA9IGJpdGxlbiA+PiAzMjsKIAliaXRsZW5fbG8gPSBiaXRsZW4gJiAweGZmZmZmZmZmOwpAQCAtNjksNyArNjksNyBAQAogCWJpdHNbNV0gPSBiaXRsZW5fbG8gPj4gMTY7CiAJYml0c1s2XSA9IGJpdGxlbl9sbyA+PiA4OwogCWJpdHNbN10gPSBiaXRsZW5fbG87Ci0JU0hBMV9VcGRhdGUoYywgYml0cywgOCk7CisJYXJtX1NIQTFfVXBkYXRlKGMsIGJpdHMsIDgpOwogCiAJZm9yIChpID0gMDsgaSA8IDU7IGkrKykgewogCQl1aW50MzJfdCB2ID0gYy0+aGFzaFtpXTsKZGlmZiAtLWdpdCBhL2FybS9zaGExLmggYi9hcm0vc2hhMS5oCmluZGV4IDM5NTI2NDYuLmI2MWI2MTggMTAwNjQ0Ci0tLSBhL2FybS9zaGExLmgKKysrIGIvYXJtL3NoYTEuaApAQCAtNywxMiArNywxNyBAQAogCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAKLXR5cGVkZWYgc3RydWN0IHNoYV9jb250ZXh0IHsKK3R5cGVkZWYgc3RydWN0IHsKIAl1aW50NjRfdCBsZW47CiAJdWludDMyX3QgaGFzaFs1XTsKIAl1bnNpZ25lZCBjaGFyIGJ1ZmZlcls2NF07Ci19IFNIQV9DVFg7Cit9IGFybV9TSEFfQ1RYOwogCi12b2lkIFNIQTFfSW5pdChTSEFfQ1RYICpjKTsKLXZvaWQgU0hBMV9VcGRhdGUoU0hBX0NUWCAqYywgY29uc3Qgdm9pZCAqcCwgdW5zaWduZWQgbG9uZyBuKTsKLXZvaWQgU0hBMV9GaW5hbCh1bnNpZ25lZCBjaGFyICpoYXNoLCBTSEFfQ1RYICpjKTsKK3ZvaWQgYXJtX1NIQTFfSW5pdChhcm1fU0hBX0NUWCAqYyk7Cit2b2lkIGFybV9TSEExX1VwZGF0ZShhcm1fU0hBX0NUWCAqYywgY29uc3Qgdm9pZCAqcCwgdW5zaWduZWQgbG9uZyBuKTsKK3ZvaWQgYXJtX1NIQTFfRmluYWwodW5zaWduZWQgY2hhciAqaGFzaCwgYXJtX1NIQV9DVFggKmMpOworCisjZGVmaW5lIGdpdF9TSEFfQ1RYCWFybV9TSEFfQ1RYCisjZGVmaW5lIGdpdF9TSEExX0luaXQJYXJtX1NIQTFfSW5pdAorI2RlZmluZSBnaXRfU0hBMV9VcGRhdGUJYXJtX1NIQTFfVXBkYXRlCisjZGVmaW5lIGdpdF9TSEExX0ZpbmFsCWFybV9TSEExX0ZpbmFsCmRpZmYgLS1naXQgYS9hcm0vc2hhMV9hcm0uUyBiL2FybS9zaGExX2FybS5TCmluZGV4IDhjMWNiOTkuLjQxZTkyNjMgMTAwNjQ0Ci0tLSBhL2FybS9zaGExX2FybS5TCisrKyBiL2FybS9zaGExX2FybS5TCkBAIC0xMCw3ICsxMCw3IEBACiAgKi8KIAogCS50ZXh0Ci0JLmdsb2JsCXNoYV90cmFuc2Zvcm0KKwkuZ2xvYmwJYXJtX3NoYV90cmFuc2Zvcm0KIAogLyoKICAqIHZvaWQgc2hhX3RyYW5zZm9ybSh1aW50MzJfdCAqaGFzaCwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdWludDMyX3QgKlcpOwpAQCAtMTgsNyArMTgsNyBAQAogICogbm90ZTogdGhlICJkYXRhIiBwb2ludGVyIG1heSBiZSB1bmFsaWduZWQuCiAgKi8KIAotc2hhX3RyYW5zZm9ybToKK2FybV9zaGFfdHJhbnNmb3JtOgogCiAJc3RtZmQJc3AhLCB7cjQgLSByOCwgbHJ9CiAKZGlmZiAtLWdpdCBhL2JyYW5jaC5jIGIvYnJhbmNoLmMKaW5kZXggNmE3NTA1Ny4uYjFhYzgzNyAxMDA2NDQKLS0tIGEvYnJhbmNoLmMKKysrIGIvYnJhbmNoLmMKQEAgLTE3MCw1ICsxNzAsNiBAQAogCXVubGluayhnaXRfcGF0aCgiTUVSR0VfSEVBRCIpKTsKIAl1bmxpbmsoZ2l0X3BhdGgoIk1FUkdFX1JSIikpOwogCXVubGluayhnaXRfcGF0aCgiTUVSR0VfTVNHIikpOworCXVubGluayhnaXRfcGF0aCgiTUVSR0VfTU9ERSIpKTsKIAl1bmxpbmsoZ2l0X3BhdGgoIlNRVUFTSF9NU0ciKSk7CiB9CmRpZmYgLS1naXQgYS9idWlsdGluLWFkZC5jIGIvYnVpbHRpbi1hZGQuYwppbmRleCBmYzNmOTZlLi5hYzk4YzgzIDEwMDY0NAotLS0gYS9idWlsdGluLWFkZC5jCisrKyBiL2J1aWx0aW4tYWRkLmMKQEAgLTgsMTAgKzgsNiBAQAogI2luY2x1ZGUgImRpci5oIgogI2luY2x1ZGUgImV4ZWNfY21kLmgiCiAjaW5jbHVkZSAiY2FjaGUtdHJlZS5oIgotI2luY2x1ZGUgImRpZmYuaCIKLSNpbmNsdWRlICJkaWZmY29yZS5oIgotI2luY2x1ZGUgImNvbW1pdC5oIgotI2luY2x1ZGUgInJldmlzaW9uLmgiCiAjaW5jbHVkZSAicnVuLWNvbW1hbmQuaCIKICNpbmNsdWRlICJwYXJzZS1vcHRpb25zLmgiCiAKQEAgLTIyLDYgKzE4LDI3IEBACiBzdGF0aWMgaW50IHBhdGNoX2ludGVyYWN0aXZlID0gMCwgYWRkX2ludGVyYWN0aXZlID0gMDsKIHN0YXRpYyBpbnQgdGFrZV93b3JrdHJlZV9jaGFuZ2VzOwogCitzdGF0aWMgdm9pZCBmaWxsX3BhdGhzcGVjX21hdGNoZXMoY29uc3QgY2hhciAqKnBhdGhzcGVjLCBjaGFyICpzZWVuLCBpbnQgc3BlY3MpCit7CisJaW50IG51bV91bm1hdGNoZWQgPSAwLCBpOworCisJLyoKKwkgKiBTaW5jZSB3ZSBhcmUgd2Fsa2luZyB0aGUgaW5kZXggYXMgaWYgd2Ugd2VyZSB3YWxraW5nIHRoZSBkaXJlY3RvcnksCisJICogd2UgaGF2ZSB0byBtYXJrIHRoZSBtYXRjaGVkIHBhdGhzcGVjIGFzIHNlZW47IG90aGVyd2lzZSB3ZSB3aWxsCisJICogbWlzdGFrZW5seSB0aGluayB0aGF0IHRoZSB1c2VyIGdhdmUgYSBwYXRoc3BlYyB0aGF0IGRpZCBub3QgbWF0Y2gKKwkgKiBhbnl0aGluZy4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgc3BlY3M7IGkrKykKKwkJaWYgKCFzZWVuW2ldKQorCQkJbnVtX3VubWF0Y2hlZCsrOworCWlmICghbnVtX3VubWF0Y2hlZCkKKwkJcmV0dXJuOworCWZvciAoaSA9IDA7IGkgPCBhY3RpdmVfbnI7IGkrKykgeworCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOworCQltYXRjaF9wYXRoc3BlYyhwYXRoc3BlYywgY2UtPm5hbWUsIGNlX25hbWVsZW4oY2UpLCAwLCBzZWVuKTsKKwl9Cit9CisKIHN0YXRpYyB2b2lkIHBydW5lX2RpcmVjdG9yeShzdHJ1Y3QgZGlyX3N0cnVjdCAqZGlyLCBjb25zdCBjaGFyICoqcGF0aHNwZWMsIGludCBwcmVmaXgpCiB7CiAJY2hhciAqc2VlbjsKQEAgLTQxLDYgKzU4LDcgQEAKIAkJCSpkc3QrKyA9IGVudHJ5OwogCX0KIAlkaXItPm5yID0gZHN0IC0gZGlyLT5lbnRyaWVzOworCWZpbGxfcGF0aHNwZWNfbWF0Y2hlcyhwYXRoc3BlYywgc2Vlbiwgc3BlY3MpOwogCiAJZm9yIChpID0gMDsgaSA8IHNwZWNzOyBpKyspIHsKIAkJaWYgKCFzZWVuW2ldICYmICFmaWxlX2V4aXN0cyhwYXRoc3BlY1tpXSkpCkBAIC01MCw2ICs2OCwzMyBAQAogICAgICAgICBmcmVlKHNlZW4pOwogfQogCitzdGF0aWMgdm9pZCB0cmVhdF9naXRsaW5rcyhjb25zdCBjaGFyICoqcGF0aHNwZWMpCit7CisJaW50IGk7CisKKwlpZiAoIXBhdGhzcGVjIHx8ICEqcGF0aHNwZWMpCisJCXJldHVybjsKKworCWZvciAoaSA9IDA7IGkgPCBhY3RpdmVfbnI7IGkrKykgeworCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOworCQlpZiAoU19JU0dJVExJTksoY2UtPmNlX21vZGUpKSB7CisJCQlpbnQgbGVuID0gY2VfbmFtZWxlbihjZSksIGo7CisJCQlmb3IgKGogPSAwOyBwYXRoc3BlY1tqXTsgaisrKSB7CisJCQkJaW50IGxlbjIgPSBzdHJsZW4ocGF0aHNwZWNbal0pOworCQkJCWlmIChsZW4yIDw9IGxlbiB8fCBwYXRoc3BlY1tqXVtsZW5dICE9ICcvJyB8fAorCQkJCSAgICBtZW1jbXAoY2UtPm5hbWUsIHBhdGhzcGVjW2pdLCBsZW4pKQorCQkJCQljb250aW51ZTsKKwkJCQlpZiAobGVuMiA9PSBsZW4gKyAxKQorCQkJCQkvKiBzdHJpcCB0cmFpbGluZyBzbGFzaCAqLworCQkJCQlwYXRoc3BlY1tqXSA9IHhzdHJuZHVwKGNlLT5uYW1lLCBsZW4pOworCQkJCWVsc2UKKwkJCQkJZGllICgiUGF0aCAnJXMnIGlzIGluIHN1Ym1vZHVsZSAnJS4qcyciLAorCQkJCQkJcGF0aHNwZWNbal0sIGxlbiwgY2UtPm5hbWUpOworCQkJfQorCQl9CisJfQorfQorCiBzdGF0aWMgdm9pZCBmaWxsX2RpcmVjdG9yeShzdHJ1Y3QgZGlyX3N0cnVjdCAqZGlyLCBjb25zdCBjaGFyICoqcGF0aHNwZWMsCiAJCWludCBpZ25vcmVkX3RvbykKIHsKQEAgLTc5LDU5ICsxMjQsNiBAQAogCQlwcnVuZV9kaXJlY3RvcnkoZGlyLCBwYXRoc3BlYywgYmFzZWxlbik7CiB9CiAKLXN0cnVjdCB1cGRhdGVfY2FsbGJhY2tfZGF0YQotewotCWludCBmbGFnczsKLQlpbnQgYWRkX2Vycm9yczsKLX07Ci0KLXN0YXRpYyB2b2lkIHVwZGF0ZV9jYWxsYmFjayhzdHJ1Y3QgZGlmZl9xdWV1ZV9zdHJ1Y3QgKnEsCi0JCQkgICAgc3RydWN0IGRpZmZfb3B0aW9ucyAqb3B0LCB2b2lkICpjYmRhdGEpCi17Ci0JaW50IGk7Ci0Jc3RydWN0IHVwZGF0ZV9jYWxsYmFja19kYXRhICpkYXRhID0gY2JkYXRhOwotCi0JZm9yIChpID0gMDsgaSA8IHEtPm5yOyBpKyspIHsKLQkJc3RydWN0IGRpZmZfZmlsZXBhaXIgKnAgPSBxLT5xdWV1ZVtpXTsKLQkJY29uc3QgY2hhciAqcGF0aCA9IHAtPm9uZS0+cGF0aDsKLQkJc3dpdGNoIChwLT5zdGF0dXMpIHsKLQkJZGVmYXVsdDoKLQkJCWRpZSgidW5leHBlY3RlZCBkaWZmIHN0YXR1cyAlYyIsIHAtPnN0YXR1cyk7Ci0JCWNhc2UgRElGRl9TVEFUVVNfVU5NRVJHRUQ6Ci0JCWNhc2UgRElGRl9TVEFUVVNfTU9ESUZJRUQ6Ci0JCWNhc2UgRElGRl9TVEFUVVNfVFlQRV9DSEFOR0VEOgotCQkJaWYgKGFkZF9maWxlX3RvX2NhY2hlKHBhdGgsIGRhdGEtPmZsYWdzKSkgewotCQkJCWlmICghKGRhdGEtPmZsYWdzICYgQUREX0NBQ0hFX0lHTk9SRV9FUlJPUlMpKQotCQkJCQlkaWUoInVwZGF0aW5nIGZpbGVzIGZhaWxlZCIpOwotCQkJCWRhdGEtPmFkZF9lcnJvcnMrKzsKLQkJCX0KLQkJCWJyZWFrOwotCQljYXNlIERJRkZfU1RBVFVTX0RFTEVURUQ6Ci0JCQlpZiAoIShkYXRhLT5mbGFncyAmIEFERF9DQUNIRV9QUkVURU5EKSkKLQkJCQlyZW1vdmVfZmlsZV9mcm9tX2NhY2hlKHBhdGgpOwotCQkJaWYgKGRhdGEtPmZsYWdzICYgKEFERF9DQUNIRV9QUkVURU5EfEFERF9DQUNIRV9WRVJCT1NFKSkKLQkJCQlwcmludGYoInJlbW92ZSAnJXMnXG4iLCBwYXRoKTsKLQkJCWJyZWFrOwotCQl9Ci0JfQotfQotCi1pbnQgYWRkX2ZpbGVzX3RvX2NhY2hlKGNvbnN0IGNoYXIgKnByZWZpeCwgY29uc3QgY2hhciAqKnBhdGhzcGVjLCBpbnQgZmxhZ3MpCi17Ci0Jc3RydWN0IHVwZGF0ZV9jYWxsYmFja19kYXRhIGRhdGE7Ci0Jc3RydWN0IHJldl9pbmZvIHJldjsKLQlpbml0X3JldmlzaW9ucygmcmV2LCBwcmVmaXgpOwotCXNldHVwX3JldmlzaW9ucygwLCBOVUxMLCAmcmV2LCBOVUxMKTsKLQlyZXYucHJ1bmVfZGF0YSA9IHBhdGhzcGVjOwotCXJldi5kaWZmb3B0Lm91dHB1dF9mb3JtYXQgPSBESUZGX0ZPUk1BVF9DQUxMQkFDSzsKLQlyZXYuZGlmZm9wdC5mb3JtYXRfY2FsbGJhY2sgPSB1cGRhdGVfY2FsbGJhY2s7Ci0JZGF0YS5mbGFncyA9IGZsYWdzOwotCWRhdGEuYWRkX2Vycm9ycyA9IDA7Ci0JcmV2LmRpZmZvcHQuZm9ybWF0X2NhbGxiYWNrX2RhdGEgPSAmZGF0YTsKLQlydW5fZGlmZl9maWxlcygmcmV2LCBESUZGX1JBQ1lfSVNfTU9ESUZJRUQpOwotCXJldHVybiAhIWRhdGEuYWRkX2Vycm9yczsKLX0KLQogc3RhdGljIHZvaWQgcmVmcmVzaChpbnQgdmVyYm9zZSwgY29uc3QgY2hhciAqKnBhdGhzcGVjKQogewogCWNoYXIgKnNlZW47CkBAIC0xNTMsNiArMTQ1LDE2IEBACiB7CiAJY29uc3QgY2hhciAqKnBhdGhzcGVjID0gZ2V0X3BhdGhzcGVjKHByZWZpeCwgYXJndik7CiAKKwlpZiAocGF0aHNwZWMpIHsKKwkJY29uc3QgY2hhciAqKnA7CisJCWZvciAocCA9IHBhdGhzcGVjOyAqcDsgcCsrKSB7CisJCQlpZiAoaGFzX3N5bWxpbmtfbGVhZGluZ19wYXRoKHN0cmxlbigqcCksICpwKSkgeworCQkJCWludCBsZW4gPSBwcmVmaXggPyBzdHJsZW4ocHJlZml4KSA6IDA7CisJCQkJZGllKCInJXMnIGlzIGJleW9uZCBhIHN5bWJvbGljIGxpbmsiLCAqcCArIGxlbik7CisJCQl9CisJCX0KKwl9CisKIAlyZXR1cm4gcGF0aHNwZWM7CiB9CiAKQEAgLTE5MSw3ICsxOTMsNyBAQAogIlRoZSBmb2xsb3dpbmcgcGF0aHMgYXJlIGlnbm9yZWQgYnkgb25lIG9mIHlvdXIgLmdpdGlnbm9yZSBmaWxlczpcbiI7CiAKIHN0YXRpYyBpbnQgdmVyYm9zZSA9IDAsIHNob3dfb25seSA9IDAsIGlnbm9yZWRfdG9vID0gMCwgcmVmcmVzaF9vbmx5ID0gMDsKLXN0YXRpYyBpbnQgaWdub3JlX2FkZF9lcnJvcnMsIGFkZHJlbW92ZTsKK3N0YXRpYyBpbnQgaWdub3JlX2FkZF9lcnJvcnMsIGFkZHJlbW92ZSwgaW50ZW50X3RvX2FkZDsKIAogc3RhdGljIHN0cnVjdCBvcHRpb24gYnVpbHRpbl9hZGRfb3B0aW9uc1tdID0gewogCU9QVF9fRFJZX1JVTigmc2hvd19vbmx5KSwKQEAgLTIwMSw2ICsyMDMsNyBAQAogCU9QVF9CT09MRUFOKCdwJywgInBhdGNoIiwgJnBhdGNoX2ludGVyYWN0aXZlLCAiaW50ZXJhY3RpdmUgcGF0Y2hpbmciKSwKIAlPUFRfQk9PTEVBTignZicsICJmb3JjZSIsICZpZ25vcmVkX3RvbywgImFsbG93IGFkZGluZyBvdGhlcndpc2UgaWdub3JlZCBmaWxlcyIpLAogCU9QVF9CT09MRUFOKCd1JywgInVwZGF0ZSIsICZ0YWtlX3dvcmt0cmVlX2NoYW5nZXMsICJ1cGRhdGUgdHJhY2tlZCBmaWxlcyIpLAorCU9QVF9CT09MRUFOKCdOJywgImludGVudC10by1hZGQiLCAmaW50ZW50X3RvX2FkZCwgInJlY29yZCBvbmx5IHRoZSBmYWN0IHRoYXQgdGhlIHBhdGggd2lsbCBiZSBhZGRlZCBsYXRlciIpLAogCU9QVF9CT09MRUFOKCdBJywgImFsbCIsICZhZGRyZW1vdmUsICJhZGQgYWxsLCBub3RpY2luZyByZW1vdmFsIG9mIHRyYWNrZWQgZmlsZXMiKSwKIAlPUFRfQk9PTEVBTiggMCAsICJyZWZyZXNoIiwgJnJlZnJlc2hfb25seSwgImRvbid0IGFkZCwgb25seSByZWZyZXNoIHRoZSBpbmRleCIpLAogCU9QVF9CT09MRUFOKCAwICwgImlnbm9yZS1lcnJvcnMiLCAmaWdub3JlX2FkZF9lcnJvcnMsICJqdXN0IHNraXAgZmlsZXMgd2hpY2ggY2Fubm90IGJlIGFkZGVkIGJlY2F1c2Ugb2YgZXJyb3JzIiksCkBAIC0yNTgsNyArMjYxLDcgQEAKIAogCWlmIChhZGRyZW1vdmUgJiYgdGFrZV93b3JrdHJlZV9jaGFuZ2VzKQogCQlkaWUoIi1BIGFuZCAtdSBhcmUgbXV0dWFsbHkgaW5jb21wYXRpYmxlIik7Ci0JaWYgKGFkZHJlbW92ZSAmJiAhYXJnYykgeworCWlmICgoYWRkcmVtb3ZlIHx8IHRha2Vfd29ya3RyZWVfY2hhbmdlcykgJiYgIWFyZ2MpIHsKIAkJc3RhdGljIGNvbnN0IGNoYXIgKmhlcmVbMl0gPSB7ICIuIiwgTlVMTCB9OwogCQlhcmdjID0gMTsKIAkJYXJndiA9IGhlcmU7CkBAIC0yNzEsMzMgKzI3NCwzMiBAQAogCiAJZmxhZ3MgPSAoKHZlcmJvc2UgPyBBRERfQ0FDSEVfVkVSQk9TRSA6IDApIHwKIAkJIChzaG93X29ubHkgPyBBRERfQ0FDSEVfUFJFVEVORCA6IDApIHwKLQkJIChpZ25vcmVfYWRkX2Vycm9ycyA/IEFERF9DQUNIRV9JR05PUkVfRVJST1JTIDogMCkpOworCQkgKGludGVudF90b19hZGQgPyBBRERfQ0FDSEVfSU5URU5UIDogMCkgfAorCQkgKGlnbm9yZV9hZGRfZXJyb3JzID8gQUREX0NBQ0hFX0lHTk9SRV9FUlJPUlMgOiAwKSB8CisJCSAoIShhZGRyZW1vdmUgfHwgdGFrZV93b3JrdHJlZV9jaGFuZ2VzKQorCQkgID8gQUREX0NBQ0hFX0lHTk9SRV9SRU1PVkFMIDogMCkpOwogCiAJaWYgKHJlcXVpcmVfcGF0aHNwZWMgJiYgYXJnYyA9PSAwKSB7CiAJCWZwcmludGYoc3RkZXJyLCAiTm90aGluZyBzcGVjaWZpZWQsIG5vdGhpbmcgYWRkZWQuXG4iKTsKIAkJZnByaW50ZihzdGRlcnIsICJNYXliZSB5b3Ugd2FudGVkIHRvIHNheSAnZ2l0IGFkZCAuJz9cbiIpOwogCQlyZXR1cm4gMDsKIAl9Ci0JcGF0aHNwZWMgPSBnZXRfcGF0aHNwZWMocHJlZml4LCBhcmd2KTsKLQotCS8qCi0JICogSWYgd2UgYXJlIGFkZGluZyBuZXcgZmlsZXMsIHdlIG5lZWQgdG8gc2NhbiB0aGUgd29ya2luZwotCSAqIHRyZWUgdG8gZmluZCB0aGUgb25lcyB0aGF0IG1hdGNoIHBhdGhzcGVjczsgdGhpcyBuZWVkcwotCSAqIHRvIGJlIGRvbmUgYmVmb3JlIHdlIHJlYWQgdGhlIGluZGV4LgotCSAqLwotCWlmIChhZGRfbmV3X2ZpbGVzKQotCQlmaWxsX2RpcmVjdG9yeSgmZGlyLCBwYXRoc3BlYywgaWdub3JlZF90b28pOworCXBhdGhzcGVjID0gdmFsaWRhdGVfcGF0aHNwZWMoYXJnYywgYXJndiwgcHJlZml4KTsKIAogCWlmIChyZWFkX2NhY2hlKCkgPCAwKQogCQlkaWUoImluZGV4IGZpbGUgY29ycnVwdCIpOworCXRyZWF0X2dpdGxpbmtzKHBhdGhzcGVjKTsKKworCWlmIChhZGRfbmV3X2ZpbGVzKQorCQkvKiBUaGlzIHBpY2tzIHVwIHRoZSBwYXRocyB0aGF0IGFyZSBub3QgdHJhY2tlZCAqLworCQlmaWxsX2RpcmVjdG9yeSgmZGlyLCBwYXRoc3BlYywgaWdub3JlZF90b28pOwogCiAJaWYgKHJlZnJlc2hfb25seSkgewogCQlyZWZyZXNoKHZlcmJvc2UsIHBhdGhzcGVjKTsKIAkJZ290byBmaW5pc2g7CiAJfQogCi0JaWYgKHRha2Vfd29ya3RyZWVfY2hhbmdlcyB8fCBhZGRyZW1vdmUpCi0JCWV4aXRfc3RhdHVzIHw9IGFkZF9maWxlc190b19jYWNoZShwcmVmaXgsIHBhdGhzcGVjLCBmbGFncyk7CisJZXhpdF9zdGF0dXMgfD0gYWRkX2ZpbGVzX3RvX2NhY2hlKHByZWZpeCwgcGF0aHNwZWMsIGZsYWdzKTsKIAogCWlmIChhZGRfbmV3X2ZpbGVzKQogCQlleGl0X3N0YXR1cyB8PSBhZGRfZmlsZXMoJmRpciwgZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1hcHBseS5jIGIvYnVpbHRpbi1hcHBseS5jCmluZGV4IDdhMWZmMDQuLjU4ZDk5ODUgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tYXBwbHkuYworKysgYi9idWlsdGluLWFwcGx5LmMKQEAgLTMyMSwxMyArMzIxLDEyIEBACiAJY29uc3QgY2hhciAqc3RhcnQgPSBsaW5lOwogCiAJaWYgKCpsaW5lID09ICciJykgewotCQlzdHJ1Y3Qgc3RyYnVmIG5hbWU7CisJCXN0cnVjdCBzdHJidWYgbmFtZSA9IFNUUkJVRl9JTklUOwogCiAJCS8qCiAJCSAqIFByb3Bvc2VkICJuZXctc3R5bGUiIEdOVSBwYXRjaC9kaWZmIGZvcm1hdDsgc2VlCiAJCSAqIGh0dHA6Ly9tYXJjLnRoZWFpbXNncm91cC5jb20vP2w9Z2l0Jm09MTEyOTI3MzE2NDA4NjkwJnc9MgogCQkgKi8KLQkJc3RyYnVmX2luaXQoJm5hbWUsIDApOwogCQlpZiAoIXVucXVvdGVfY19zdHlsZSgmbmFtZSwgbGluZSwgTlVMTCkpIHsKIAkJCWNoYXIgKmNwOwogCkBAIC02MzEsNyArNjMwLDcgQEAKIAltZW1jcHkocGF0Y2gtPm5ld19zaGExX3ByZWZpeCwgbGluZSwgbGVuKTsKIAlwYXRjaC0+bmV3X3NoYTFfcHJlZml4W2xlbl0gPSAwOwogCWlmICgqcHRyID09ICcgJykKLQkJcGF0Y2gtPm5ld19tb2RlID0gcGF0Y2gtPm9sZF9tb2RlID0gc3RydG91bChwdHIrMSwgTlVMTCwgOCk7CisJCXBhdGNoLT5vbGRfbW9kZSA9IHN0cnRvdWwocHRyKzEsIE5VTEwsIDgpOwogCXJldHVybiAwOwogfQogCkBAIC02NzUsMTEgKzY3NCw4IEBACiAKIAlpZiAoKmxpbmUgPT0gJyInKSB7CiAJCWNvbnN0IGNoYXIgKmNwOwotCQlzdHJ1Y3Qgc3RyYnVmIGZpcnN0OwotCQlzdHJ1Y3Qgc3RyYnVmIHNwOwotCi0JCXN0cmJ1Zl9pbml0KCZmaXJzdCwgMCk7Ci0JCXN0cmJ1Zl9pbml0KCZzcCwgMCk7CisJCXN0cnVjdCBzdHJidWYgZmlyc3QgPSBTVFJCVUZfSU5JVDsKKwkJc3RydWN0IHN0cmJ1ZiBzcCA9IFNUUkJVRl9JTklUOwogCiAJCWlmICh1bnF1b3RlX2Nfc3R5bGUoJmZpcnN0LCBsaW5lLCAmc2Vjb25kKSkKIAkJCWdvdG8gZnJlZV9hbmRfZmFpbDE7CkBAIC03NDEsMTAgKzczNyw5IEBACiAJICovCiAJZm9yIChzZWNvbmQgPSBuYW1lOyBzZWNvbmQgPCBsaW5lICsgbGxlbjsgc2Vjb25kKyspIHsKIAkJaWYgKCpzZWNvbmQgPT0gJyInKSB7Ci0JCQlzdHJ1Y3Qgc3RyYnVmIHNwOworCQkJc3RydWN0IHN0cmJ1ZiBzcCA9IFNUUkJVRl9JTklUOwogCQkJY29uc3QgY2hhciAqbnA7CiAKLQkJCXN0cmJ1Zl9pbml0KCZzcCwgMCk7CiAJCQlpZiAodW5xdW90ZV9jX3N0eWxlKCZzcCwgc2Vjb25kLCBOVUxMKSkKIAkJCQlnb3RvIGZyZWVfYW5kX2ZhaWwyOwogCkBAIC0xMjU4LDggKzEyNTMsOSBAQAogCXN0cmVhbS5hdmFpbF9pbiA9IHNpemU7CiAJc3RyZWFtLm5leHRfb3V0ID0gb3V0ID0geG1hbGxvYyhpbmZsYXRlZF9zaXplKTsKIAlzdHJlYW0uYXZhaWxfb3V0ID0gaW5mbGF0ZWRfc2l6ZTsKLQlpbmZsYXRlSW5pdCgmc3RyZWFtKTsKLQlzdCA9IGluZmxhdGUoJnN0cmVhbSwgWl9GSU5JU0gpOworCWdpdF9pbmZsYXRlX2luaXQoJnN0cmVhbSk7CisJc3QgPSBnaXRfaW5mbGF0ZSgmc3RyZWFtLCBaX0ZJTklTSCk7CisJZ2l0X2luZmxhdGVfZW5kKCZzdHJlYW0pOwogCWlmICgoc3QgIT0gWl9TVFJFQU1fRU5EKSB8fCBzdHJlYW0udG90YWxfb3V0ICE9IGluZmxhdGVkX3NpemUpIHsKIAkJZnJlZShvdXQpOwogCQlyZXR1cm4gTlVMTDsKQEAgLTE1MTUsMTEgKzE1MTEsMTAgQEAKIAogc3RhdGljIHZvaWQgc2hvd19zdGF0cyhzdHJ1Y3QgcGF0Y2ggKnBhdGNoKQogewotCXN0cnVjdCBzdHJidWYgcW5hbWU7CisJc3RydWN0IHN0cmJ1ZiBxbmFtZSA9IFNUUkJVRl9JTklUOwogCWNoYXIgKmNwID0gcGF0Y2gtPm5ld19uYW1lID8gcGF0Y2gtPm5ld19uYW1lIDogcGF0Y2gtPm9sZF9uYW1lOwogCWludCBtYXgsIGFkZCwgZGVsOwogCi0Jc3RyYnVmX2luaXQoJnFuYW1lLCAwKTsKIAlxdW90ZV9jX3N0eWxlKGNwLCAmcW5hbWUsIE5VTEwsIDApOwogCiAJLyoKQEAgLTE1NjUsMTAgKzE1NjAsOCBAQAogewogCXN3aXRjaCAoc3QtPnN0X21vZGUgJiBTX0lGTVQpIHsKIAljYXNlIFNfSUZMTks6Ci0JCXN0cmJ1Zl9ncm93KGJ1Ziwgc3QtPnN0X3NpemUpOwotCQlpZiAocmVhZGxpbmsocGF0aCwgYnVmLT5idWYsIHN0LT5zdF9zaXplKSAhPSBzdC0+c3Rfc2l6ZSkKLQkJCXJldHVybiAtMTsKLQkJc3RyYnVmX3NldGxlbihidWYsIHN0LT5zdF9zaXplKTsKKwkJaWYgKHN0cmJ1Zl9yZWFkbGluayhidWYsIHBhdGgsIHN0LT5zdF9zaXplKSA8IDApCisJCQlyZXR1cm4gZXJyb3IoInVuYWJsZSB0byByZWFkIHN5bWxpbmsgJXMiLCBwYXRoKTsKIAkJcmV0dXJuIDA7CiAJY2FzZSBTX0lGUkVHOgogCQlpZiAoc3RyYnVmX3JlYWRfZmlsZShidWYsIHBhdGgsIHN0LT5zdF9zaXplKSAhPSBzdC0+c3Rfc2l6ZSkKQEAgLTIyOTksMTQgKzIyOTIsMTIgQEAKIAogc3RhdGljIGludCBhcHBseV9kYXRhKHN0cnVjdCBwYXRjaCAqcGF0Y2gsIHN0cnVjdCBzdGF0ICpzdCwgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSkKIHsKLQlzdHJ1Y3Qgc3RyYnVmIGJ1ZjsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCXN0cnVjdCBpbWFnZSBpbWFnZTsKIAlzaXplX3QgbGVuOwogCWNoYXIgKmltZzsKIAlzdHJ1Y3QgcGF0Y2ggKnRwYXRjaDsKIAotCXN0cmJ1Zl9pbml0KCZidWYsIDApOwotCiAJaWYgKCEocGF0Y2gtPmlzX2NvcHkgfHwgcGF0Y2gtPmlzX3JlbmFtZSkgJiYKIAkgICAgKCh0cGF0Y2ggPSBpbl9mbl90YWJsZShwYXRjaC0+b2xkX25hbWUpKSAhPSBOVUxMKSkgewogCQlpZiAodHBhdGNoID09IChzdHJ1Y3QgcGF0Y2ggKikgLTEpIHsKQEAgLTI0NTcsNiArMjQ0OCw4IEBACiAJaWYgKHN0X21vZGUgIT0gcGF0Y2gtPm9sZF9tb2RlKQogCQlmcHJpbnRmKHN0ZGVyciwgIndhcm5pbmc6ICVzIGhhcyB0eXBlICVvLCBleHBlY3RlZCAlb1xuIiwKIAkJCW9sZF9uYW1lLCBzdF9tb2RlLCBwYXRjaC0+b2xkX21vZGUpOworCWlmICghcGF0Y2gtPm5ld19tb2RlICYmICFwYXRjaC0+aXNfZGVsZXRlKQorCQlwYXRjaC0+bmV3X21vZGUgPSBzdF9tb2RlOwogCXJldHVybiAwOwogCiAgaXNfbmV3OgpAQCAtMjc4Niw3ICsyNzc5LDcgQEAKIHN0YXRpYyBpbnQgdHJ5X2NyZWF0ZV9maWxlKGNvbnN0IGNoYXIgKnBhdGgsIHVuc2lnbmVkIGludCBtb2RlLCBjb25zdCBjaGFyICpidWYsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKIHsKIAlpbnQgZmQ7Ci0Jc3RydWN0IHN0cmJ1ZiBuYnVmOworCXN0cnVjdCBzdHJidWYgbmJ1ZiA9IFNUUkJVRl9JTklUOwogCiAJaWYgKFNfSVNHSVRMSU5LKG1vZGUpKSB7CiAJCXN0cnVjdCBzdGF0IHN0OwpAQCAtMjgwNSw3ICsyNzk4LDYgQEAKIAlpZiAoZmQgPCAwKQogCQlyZXR1cm4gLTE7CiAKLQlzdHJidWZfaW5pdCgmbmJ1ZiwgMCk7CiAJaWYgKGNvbnZlcnRfdG9fd29ya2luZ190cmVlKHBhdGgsIGJ1Ziwgc2l6ZSwgJm5idWYpKSB7CiAJCXNpemUgPSBuYnVmLmxlbjsKIAkJYnVmICA9IG5idWYuYnVmOwpAQCAtMjk5NiwyOSArMjk4OCw0NSBAQAogCiBzdGF0aWMgc3RydWN0IGxvY2tfZmlsZSBsb2NrX2ZpbGU7CiAKLXN0YXRpYyBzdHJ1Y3QgZXhjbHVkZXMgewotCXN0cnVjdCBleGNsdWRlcyAqbmV4dDsKLQljb25zdCBjaGFyICpwYXRoOwotfSAqZXhjbHVkZXM7CitzdGF0aWMgc3RydWN0IHN0cmluZ19saXN0IGxpbWl0X2J5X25hbWU7CitzdGF0aWMgaW50IGhhc19pbmNsdWRlOworc3RhdGljIHZvaWQgYWRkX25hbWVfbGltaXQoY29uc3QgY2hhciAqbmFtZSwgaW50IGV4Y2x1ZGUpCit7CisJc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKml0OworCisJaXQgPSBzdHJpbmdfbGlzdF9hcHBlbmQobmFtZSwgJmxpbWl0X2J5X25hbWUpOworCWl0LT51dGlsID0gZXhjbHVkZSA/IE5VTEwgOiAodm9pZCAqKSAxOworfQogCiBzdGF0aWMgaW50IHVzZV9wYXRjaChzdHJ1Y3QgcGF0Y2ggKnApCiB7CiAJY29uc3QgY2hhciAqcGF0aG5hbWUgPSBwLT5uZXdfbmFtZSA/IHAtPm5ld19uYW1lIDogcC0+b2xkX25hbWU7Ci0Jc3RydWN0IGV4Y2x1ZGVzICp4ID0gZXhjbHVkZXM7Ci0Jd2hpbGUgKHgpIHsKLQkJaWYgKGZubWF0Y2goeC0+cGF0aCwgcGF0aG5hbWUsIDApID09IDApCi0JCQlyZXR1cm4gMDsKLQkJeCA9IHgtPm5leHQ7Ci0JfQorCWludCBpOworCisJLyogUGF0aHMgb3V0c2lkZSBhcmUgbm90IHRvdWNoZWQgcmVnYXJkbGVzcyBvZiAiLS1pbmNsdWRlIiAqLwogCWlmICgwIDwgcHJlZml4X2xlbmd0aCkgewogCQlpbnQgcGF0aGxlbiA9IHN0cmxlbihwYXRobmFtZSk7CiAJCWlmIChwYXRobGVuIDw9IHByZWZpeF9sZW5ndGggfHwKIAkJICAgIG1lbWNtcChwcmVmaXgsIHBhdGhuYW1lLCBwcmVmaXhfbGVuZ3RoKSkKIAkJCXJldHVybiAwOwogCX0KLQlyZXR1cm4gMTsKKworCS8qIFNlZSBpZiBpdCBtYXRjaGVzIGFueSBvZiBleGNsdWRlL2luY2x1ZGUgcnVsZSAqLworCWZvciAoaSA9IDA7IGkgPCBsaW1pdF9ieV9uYW1lLm5yOyBpKyspIHsKKwkJc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKml0ID0gJmxpbWl0X2J5X25hbWUuaXRlbXNbaV07CisJCWlmICghZm5tYXRjaChpdC0+c3RyaW5nLCBwYXRobmFtZSwgMCkpCisJCQlyZXR1cm4gKGl0LT51dGlsICE9IE5VTEwpOworCX0KKworCS8qCisJICogSWYgd2UgaGFkIGFueSBpbmNsdWRlLCBhIHBhdGggdGhhdCBkb2VzIG5vdCBtYXRjaCBhbnkgcnVsZSBpcworCSAqIG5vdCB1c2VkLiAgT3RoZXJ3aXNlLCB3ZSBzYXcgYnVuY2ggb2YgZXhjbHVkZSBydWxlcyAob3Igbm9uZSkKKwkgKiBhbmQgc3VjaCBhIHBhdGggaXMgdXNlZC4KKwkgKi8KKwlyZXR1cm4gIWhhc19pbmNsdWRlOwogfQogCisKIHN0YXRpYyB2b2lkIHByZWZpeF9vbmUoY2hhciAqKm5hbWUpCiB7CiAJY2hhciAqb2xkX25hbWUgPSAqbmFtZTsKQEAgLTMwNTEsMTMgKzMwNTksMTIgQEAKIHN0YXRpYyBpbnQgYXBwbHlfcGF0Y2goaW50IGZkLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IG9wdGlvbnMpCiB7CiAJc2l6ZV90IG9mZnNldDsKLQlzdHJ1Y3Qgc3RyYnVmIGJ1ZjsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCXN0cnVjdCBwYXRjaCAqbGlzdCA9IE5VTEwsICoqbGlzdHAgPSAmbGlzdDsKIAlpbnQgc2tpcHBlZF9wYXRjaCA9IDA7CiAKIAkvKiBGSVhNRSAtIG1lbW9yeSBsZWFrIHdoZW4gdXNpbmcgbXVsdGlwbGUgcGF0Y2ggZmlsZXMgYXMgaW5wdXRzICovCiAJbWVtc2V0KCZmbl90YWJsZSwgMCwgc2l6ZW9mKHN0cnVjdCBzdHJpbmdfbGlzdCkpOwotCXN0cmJ1Zl9pbml0KCZidWYsIDApOwogCXBhdGNoX2lucHV0X2ZpbGUgPSBmaWxlbmFtZTsKIAlyZWFkX3BhdGNoX2ZpbGUoJmJ1ZiwgZmQpOwogCW9mZnNldCA9IDA7CkBAIC0zMTU5LDEwICszMTY2LDEyIEBACiAJCQljb250aW51ZTsKIAkJfQogCQlpZiAoIXByZWZpeGNtcChhcmcsICItLWV4Y2x1ZGU9IikpIHsKLQkJCXN0cnVjdCBleGNsdWRlcyAqeCA9IHhtYWxsb2Moc2l6ZW9mKCp4KSk7Ci0JCQl4LT5wYXRoID0gYXJnICsgMTA7Ci0JCQl4LT5uZXh0ID0gZXhjbHVkZXM7Ci0JCQlleGNsdWRlcyA9IHg7CisJCQlhZGRfbmFtZV9saW1pdChhcmcgKyAxMCwgMSk7CisJCQljb250aW51ZTsKKwkJfQorCQlpZiAoIXByZWZpeGNtcChhcmcsICItLWluY2x1ZGU9IikpIHsKKwkJCWFkZF9uYW1lX2xpbWl0KGFyZyArIDEwLCAwKTsKKwkJCWhhc19pbmNsdWRlID0gMTsKIAkJCWNvbnRpbnVlOwogCQl9CiAJCWlmICghcHJlZml4Y21wKGFyZywgIi1wIikpIHsKZGlmZiAtLWdpdCBhL2J1aWx0aW4tYmxhbWUuYyBiL2J1aWx0aW4tYmxhbWUuYwppbmRleCAxMDFjNDE2Li45YjlmNTQ0IDEwMDY0NAotLS0gYS9idWlsdGluLWJsYW1lLmMKKysrIGIvYnVpbHRpbi1ibGFtZS5jCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAic3RyaW5nLWxpc3QuaCIKICNpbmNsdWRlICJtYWlsbWFwLmgiCiAjaW5jbHVkZSAicGFyc2Utb3B0aW9ucy5oIgorI2luY2x1ZGUgInV0ZjguaCIKIAogc3RhdGljIGNoYXIgYmxhbWVfdXNhZ2VbXSA9ICJnaXQgYmxhbWUgW29wdGlvbnNdIFtyZXYtb3B0c10gW3Jldl0gWy0tXSBmaWxlIjsKIApAQCAtNDQzLDEzNSArNDQ0LDYgQEAKIH0KIAogLyoKLSAqIFBhcnNpbmcgb2YgcGF0Y2ggY2h1bmtzLi4uCi0gKi8KLXN0cnVjdCBjaHVuayB7Ci0JLyogbGluZSBudW1iZXIgaW4gcG9zdGltYWdlOyB1cCB0byBidXQgbm90IGluY2x1ZGluZyB0aGlzCi0JICogbGluZSBpcyB0aGUgc2FtZSBhcyBwcmVpbWFnZQotCSAqLwotCWludCBzYW1lOwotCi0JLyogcHJlaW1hZ2UgbGluZSBudW1iZXIgYWZ0ZXIgdGhpcyBjaHVuayAqLwotCWludCBwX25leHQ7Ci0KLQkvKiBwb3N0aW1hZ2UgbGluZSBudW1iZXIgYWZ0ZXIgdGhpcyBjaHVuayAqLwotCWludCB0X25leHQ7Ci19OwotCi1zdHJ1Y3QgcGF0Y2ggewotCXN0cnVjdCBjaHVuayAqY2h1bmtzOwotCWludCBudW07Ci19OwotCi1zdHJ1Y3QgYmxhbWVfZGlmZl9zdGF0ZSB7Ci0Jc3RydWN0IHhkaWZmX2VtaXRfc3RhdGUgeG07Ci0Jc3RydWN0IHBhdGNoICpyZXQ7Ci0JdW5zaWduZWQgaHVua19wb3N0X2NvbnRleHQ7Ci0JdW5zaWduZWQgaHVua19pbl9wcmVfY29udGV4dCA6IDE7Ci19OwotCi1zdGF0aWMgdm9pZCBwcm9jZXNzX3VfZGlmZih2b2lkICpzdGF0ZV8sIGNoYXIgKmxpbmUsIHVuc2lnbmVkIGxvbmcgbGVuKQotewotCXN0cnVjdCBibGFtZV9kaWZmX3N0YXRlICpzdGF0ZSA9IHN0YXRlXzsKLQlzdHJ1Y3QgY2h1bmsgKmNodW5rOwotCWludCBvZmYxLCBvZmYyLCBsZW4xLCBsZW4yLCBudW07Ci0KLQludW0gPSBzdGF0ZS0+cmV0LT5udW07Ci0JaWYgKGxlbiA8IDQgfHwgbGluZVswXSAhPSAnQCcgfHwgbGluZVsxXSAhPSAnQCcpIHsKLQkJaWYgKHN0YXRlLT5odW5rX2luX3ByZV9jb250ZXh0ICYmIGxpbmVbMF0gPT0gJyAnKQotCQkJc3RhdGUtPnJldC0+Y2h1bmtzW251bSAtIDFdLnNhbWUrKzsKLQkJZWxzZSB7Ci0JCQlzdGF0ZS0+aHVua19pbl9wcmVfY29udGV4dCA9IDA7Ci0JCQlpZiAobGluZVswXSA9PSAnICcpCi0JCQkJc3RhdGUtPmh1bmtfcG9zdF9jb250ZXh0Kys7Ci0JCQllbHNlCi0JCQkJc3RhdGUtPmh1bmtfcG9zdF9jb250ZXh0ID0gMDsKLQkJfQotCQlyZXR1cm47Ci0JfQotCi0JaWYgKG51bSAmJiBzdGF0ZS0+aHVua19wb3N0X2NvbnRleHQpIHsKLQkJY2h1bmsgPSAmc3RhdGUtPnJldC0+Y2h1bmtzW251bSAtIDFdOwotCQljaHVuay0+cF9uZXh0IC09IHN0YXRlLT5odW5rX3Bvc3RfY29udGV4dDsKLQkJY2h1bmstPnRfbmV4dCAtPSBzdGF0ZS0+aHVua19wb3N0X2NvbnRleHQ7Ci0JfQotCXN0YXRlLT5yZXQtPm51bSA9ICsrbnVtOwotCXN0YXRlLT5yZXQtPmNodW5rcyA9IHhyZWFsbG9jKHN0YXRlLT5yZXQtPmNodW5rcywKLQkJCQkgICAgICBzaXplb2Yoc3RydWN0IGNodW5rKSAqIG51bSk7Ci0JY2h1bmsgPSAmc3RhdGUtPnJldC0+Y2h1bmtzW251bSAtIDFdOwotCWlmIChwYXJzZV9odW5rX2hlYWRlcihsaW5lLCBsZW4sICZvZmYxLCAmbGVuMSwgJm9mZjIsICZsZW4yKSkgewotCQlzdGF0ZS0+cmV0LT5udW0tLTsKLQkJcmV0dXJuOwotCX0KLQotCS8qIExpbmUgbnVtYmVycyBpbiBwYXRjaCBvdXRwdXQgYXJlIG9uZSBiYXNlZC4gKi8KLQlvZmYxLS07Ci0Jb2ZmMi0tOwotCi0JY2h1bmstPnNhbWUgPSBsZW4yID8gb2ZmMiA6IChvZmYyICsgMSk7Ci0KLQljaHVuay0+cF9uZXh0ID0gb2ZmMSArIChsZW4xID8gbGVuMSA6IDEpOwotCWNodW5rLT50X25leHQgPSBjaHVuay0+c2FtZSArIGxlbjI7Ci0Jc3RhdGUtPmh1bmtfaW5fcHJlX2NvbnRleHQgPSAxOwotCXN0YXRlLT5odW5rX3Bvc3RfY29udGV4dCA9IDA7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgcGF0Y2ggKmNvbXBhcmVfYnVmZmVyKG1tZmlsZV90ICpmaWxlX3AsIG1tZmlsZV90ICpmaWxlX28sCi0JCQkJICAgIGludCBjb250ZXh0KQotewotCXN0cnVjdCBibGFtZV9kaWZmX3N0YXRlIHN0YXRlOwotCXhwcGFyYW1fdCB4cHA7Ci0JeGRlbWl0Y29uZl90IHhlY2ZnOwotCXhkZW1pdGNiX3QgZWNiOwotCi0JeHBwLmZsYWdzID0geGRsX29wdHM7Ci0JbWVtc2V0KCZ4ZWNmZywgMCwgc2l6ZW9mKHhlY2ZnKSk7Ci0JeGVjZmcuY3R4bGVuID0gY29udGV4dDsKLQllY2Iub3V0ZiA9IHhkaWZmX291dGY7Ci0JZWNiLnByaXYgPSAmc3RhdGU7Ci0JbWVtc2V0KCZzdGF0ZSwgMCwgc2l6ZW9mKHN0YXRlKSk7Ci0Jc3RhdGUueG0uY29uc3VtZSA9IHByb2Nlc3NfdV9kaWZmOwotCXN0YXRlLnJldCA9IHhtYWxsb2Moc2l6ZW9mKHN0cnVjdCBwYXRjaCkpOwotCXN0YXRlLnJldC0+Y2h1bmtzID0gTlVMTDsKLQlzdGF0ZS5yZXQtPm51bSA9IDA7Ci0KLQl4ZGlfZGlmZihmaWxlX3AsIGZpbGVfbywgJnhwcCwgJnhlY2ZnLCAmZWNiKTsKLQotCWlmIChzdGF0ZS5yZXQtPm51bSkgewotCQlzdHJ1Y3QgY2h1bmsgKmNodW5rOwotCQljaHVuayA9ICZzdGF0ZS5yZXQtPmNodW5rc1tzdGF0ZS5yZXQtPm51bSAtIDFdOwotCQljaHVuay0+cF9uZXh0IC09IHN0YXRlLmh1bmtfcG9zdF9jb250ZXh0OwotCQljaHVuay0+dF9uZXh0IC09IHN0YXRlLmh1bmtfcG9zdF9jb250ZXh0OwotCX0KLQlyZXR1cm4gc3RhdGUucmV0OwotfQotCi0vKgotICogUnVuIGRpZmYgYmV0d2VlbiB0d28gb3JpZ2lucyBhbmQgZ3JhYiB0aGUgcGF0Y2ggb3V0cHV0LCBzbyB0aGF0Ci0gKiB3ZSBjYW4gcGFzcyBibGFtZSBmb3IgbGluZXMgb3JpZ2luIGlzIGN1cnJlbnRseSBzdXNwZWN0ZWQgZm9yCi0gKiB0byBpdHMgcGFyZW50LgotICovCi1zdGF0aWMgc3RydWN0IHBhdGNoICpnZXRfcGF0Y2goc3RydWN0IG9yaWdpbiAqcGFyZW50LCBzdHJ1Y3Qgb3JpZ2luICpvcmlnaW4pCi17Ci0JbW1maWxlX3QgZmlsZV9wLCBmaWxlX287Ci0Jc3RydWN0IHBhdGNoICpwYXRjaDsKLQotCWZpbGxfb3JpZ2luX2Jsb2IocGFyZW50LCAmZmlsZV9wKTsKLQlmaWxsX29yaWdpbl9ibG9iKG9yaWdpbiwgJmZpbGVfbyk7Ci0JaWYgKCFmaWxlX3AucHRyIHx8ICFmaWxlX28ucHRyKQotCQlyZXR1cm4gTlVMTDsKLQlwYXRjaCA9IGNvbXBhcmVfYnVmZmVyKCZmaWxlX3AsICZmaWxlX28sIDApOwotCW51bV9nZXRfcGF0Y2grKzsKLQlyZXR1cm4gcGF0Y2g7Ci19Ci0KLXN0YXRpYyB2b2lkIGZyZWVfcGF0Y2goc3RydWN0IHBhdGNoICpwKQotewotCWZyZWUocC0+Y2h1bmtzKTsKLQlmcmVlKHApOwotfQotCi0vKgogICogTGluayBpbiBhIG5ldyBibGFtZSBlbnRyeSB0byB0aGUgc2NvcmVib2FyZC4gIEVudHJpZXMgdGhhdCBjb3ZlciB0aGUKICAqIHNhbWUgbGluZSByYW5nZSBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBzY29yZWJvYXJkIHByZXZpb3VzbHkuCiAgKi8KQEAgLTgxNyw2ICs2ODksMjIgQEAKIAl9CiB9CiAKK3N0cnVjdCBibGFtZV9jaHVua19jYl9kYXRhIHsKKwlzdHJ1Y3Qgc2NvcmVib2FyZCAqc2I7CisJc3RydWN0IG9yaWdpbiAqdGFyZ2V0OworCXN0cnVjdCBvcmlnaW4gKnBhcmVudDsKKwlsb25nIHBsbm87CisJbG9uZyB0bG5vOworfTsKKworc3RhdGljIHZvaWQgYmxhbWVfY2h1bmtfY2Iodm9pZCAqZGF0YSwgbG9uZyBzYW1lLCBsb25nIHBfbmV4dCwgbG9uZyB0X25leHQpCit7CisJc3RydWN0IGJsYW1lX2NodW5rX2NiX2RhdGEgKmQgPSBkYXRhOworCWJsYW1lX2NodW5rKGQtPnNiLCBkLT50bG5vLCBkLT5wbG5vLCBzYW1lLCBkLT50YXJnZXQsIGQtPnBhcmVudCk7CisJZC0+cGxubyA9IHBfbmV4dDsKKwlkLT50bG5vID0gdF9uZXh0OworfQorCiAvKgogICogV2UgYXJlIGxvb2tpbmcgYXQgdGhlIG9yaWdpbiAndGFyZ2V0JyBhbmQgYWltaW5nIHRvIHBhc3MgYmxhbWUKICAqIGZvciB0aGUgbGluZXMgaXQgaXMgc3VzcGVjdGVkIHRvIGl0cyBwYXJlbnQuICBSdW4gZGlmZiB0byBmaW5kCkBAIC04MjYsMjYgKzcxNCwyOCBAQAogCQkJCXN0cnVjdCBvcmlnaW4gKnRhcmdldCwKIAkJCQlzdHJ1Y3Qgb3JpZ2luICpwYXJlbnQpCiB7Ci0JaW50IGksIGxhc3RfaW5fdGFyZ2V0LCBwbG5vLCB0bG5vOwotCXN0cnVjdCBwYXRjaCAqcGF0Y2g7CisJaW50IGxhc3RfaW5fdGFyZ2V0OworCW1tZmlsZV90IGZpbGVfcCwgZmlsZV9vOworCXN0cnVjdCBibGFtZV9jaHVua19jYl9kYXRhIGQgPSB7IHNiLCB0YXJnZXQsIHBhcmVudCwgMCwgMCB9OworCXhwcGFyYW1fdCB4cHA7CisJeGRlbWl0Y29uZl90IHhlY2ZnOwogCiAJbGFzdF9pbl90YXJnZXQgPSBmaW5kX2xhc3RfaW5fdGFyZ2V0KHNiLCB0YXJnZXQpOwogCWlmIChsYXN0X2luX3RhcmdldCA8IDApCiAJCXJldHVybiAxOyAvKiBub3RoaW5nIHJlbWFpbnMgZm9yIHRoaXMgdGFyZ2V0ICovCiAKLQlwYXRjaCA9IGdldF9wYXRjaChwYXJlbnQsIHRhcmdldCk7Ci0JcGxubyA9IHRsbm8gPSAwOwotCWZvciAoaSA9IDA7IGkgPCBwYXRjaC0+bnVtOyBpKyspIHsKLQkJc3RydWN0IGNodW5rICpjaHVuayA9ICZwYXRjaC0+Y2h1bmtzW2ldOworCWZpbGxfb3JpZ2luX2Jsb2IocGFyZW50LCAmZmlsZV9wKTsKKwlmaWxsX29yaWdpbl9ibG9iKHRhcmdldCwgJmZpbGVfbyk7CisJbnVtX2dldF9wYXRjaCsrOwogCi0JCWJsYW1lX2NodW5rKHNiLCB0bG5vLCBwbG5vLCBjaHVuay0+c2FtZSwgdGFyZ2V0LCBwYXJlbnQpOwotCQlwbG5vID0gY2h1bmstPnBfbmV4dDsKLQkJdGxubyA9IGNodW5rLT50X25leHQ7Ci0JfQorCW1lbXNldCgmeHBwLCAwLCBzaXplb2YoeHBwKSk7CisJeHBwLmZsYWdzID0geGRsX29wdHM7CisJbWVtc2V0KCZ4ZWNmZywgMCwgc2l6ZW9mKHhlY2ZnKSk7CisJeGVjZmcuY3R4bGVuID0gMDsKKwl4ZGlfZGlmZl9odW5rcygmZmlsZV9wLCAmZmlsZV9vLCBibGFtZV9jaHVua19jYiwgJmQsICZ4cHAsICZ4ZWNmZyk7CiAJLyogVGhlIHJlc3QgKGkuZS4gYW55dGhpbmcgYWZ0ZXIgdGxubykgYXJlIHRoZSBzYW1lIGFzIHRoZSBwYXJlbnQgKi8KLQlibGFtZV9jaHVuayhzYiwgdGxubywgcGxubywgbGFzdF9pbl90YXJnZXQsIHRhcmdldCwgcGFyZW50KTsKKwlibGFtZV9jaHVuayhzYiwgZC50bG5vLCBkLnBsbm8sIGxhc3RfaW5fdGFyZ2V0LCB0YXJnZXQsIHBhcmVudCk7CiAKLQlmcmVlX3BhdGNoKHBhdGNoKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtOTM3LDYgKzgyNywyMyBAQAogCX0KIH0KIAorc3RydWN0IGhhbmRsZV9zcGxpdF9jYl9kYXRhIHsKKwlzdHJ1Y3Qgc2NvcmVib2FyZCAqc2I7CisJc3RydWN0IGJsYW1lX2VudHJ5ICplbnQ7CisJc3RydWN0IG9yaWdpbiAqcGFyZW50OworCXN0cnVjdCBibGFtZV9lbnRyeSAqc3BsaXQ7CisJbG9uZyBwbG5vOworCWxvbmcgdGxubzsKK307CisKK3N0YXRpYyB2b2lkIGhhbmRsZV9zcGxpdF9jYih2b2lkICpkYXRhLCBsb25nIHNhbWUsIGxvbmcgcF9uZXh0LCBsb25nIHRfbmV4dCkKK3sKKwlzdHJ1Y3QgaGFuZGxlX3NwbGl0X2NiX2RhdGEgKmQgPSBkYXRhOworCWhhbmRsZV9zcGxpdChkLT5zYiwgZC0+ZW50LCBkLT50bG5vLCBkLT5wbG5vLCBzYW1lLCBkLT5wYXJlbnQsIGQtPnNwbGl0KTsKKwlkLT5wbG5vID0gcF9uZXh0OworCWQtPnRsbm8gPSB0X25leHQ7Cit9CisKIC8qCiAgKiBGaW5kIHRoZSBsaW5lcyBmcm9tIHBhcmVudCB0aGF0IGFyZSB0aGUgc2FtZSBhcyBlbnQgc28gdGhhdAogICogd2UgY2FuIHBhc3MgYmxhbWVzIHRvIGl0LiAgZmlsZV9wIGhhcyB0aGUgYmxvYiBjb250ZW50cyBmb3IKQEAgLTk1MSw4ICs4NTgsOSBAQAogCWNvbnN0IGNoYXIgKmNwOwogCWludCBjbnQ7CiAJbW1maWxlX3QgZmlsZV9vOwotCXN0cnVjdCBwYXRjaCAqcGF0Y2g7Ci0JaW50IGksIHBsbm8sIHRsbm87CisJc3RydWN0IGhhbmRsZV9zcGxpdF9jYl9kYXRhIGQgPSB7IHNiLCBlbnQsIHBhcmVudCwgc3BsaXQsIDAsIDAgfTsKKwl4cHBhcmFtX3QgeHBwOworCXhkZW1pdGNvbmZfdCB4ZWNmZzsKIAogCS8qCiAJICogUHJlcGFyZSBtbWZpbGUgdGhhdCBjb250YWlucyBvbmx5IHRoZSBsaW5lcyBpbiBlbnQuCkBAIC05NjcsMjQgKzg3NSwxOCBAQAogCX0KIAlmaWxlX28uc2l6ZSA9IGNwIC0gZmlsZV9vLnB0cjsKIAotCXBhdGNoID0gY29tcGFyZV9idWZmZXIoZmlsZV9wLCAmZmlsZV9vLCAxKTsKLQogCS8qCiAJICogZmlsZV9vIGlzIGEgcGFydCBvZiBmaW5hbCBpbWFnZSB3ZSBhcmUgYW5ub3RhdGluZy4KIAkgKiBmaWxlX3AgcGFydGlhbGx5IG1heSBtYXRjaCB0aGF0IGltYWdlLgogCSAqLworCW1lbXNldCgmeHBwLCAwLCBzaXplb2YoeHBwKSk7CisJeHBwLmZsYWdzID0geGRsX29wdHM7CisJbWVtc2V0KCZ4ZWNmZywgMCwgc2l6ZW9mKHhlY2ZnKSk7CisJeGVjZmcuY3R4bGVuID0gMTsKIAltZW1zZXQoc3BsaXQsIDAsIHNpemVvZihzdHJ1Y3QgYmxhbWVfZW50cnkgWzNdKSk7Ci0JcGxubyA9IHRsbm8gPSAwOwotCWZvciAoaSA9IDA7IGkgPCBwYXRjaC0+bnVtOyBpKyspIHsKLQkJc3RydWN0IGNodW5rICpjaHVuayA9ICZwYXRjaC0+Y2h1bmtzW2ldOwotCi0JCWhhbmRsZV9zcGxpdChzYiwgZW50LCB0bG5vLCBwbG5vLCBjaHVuay0+c2FtZSwgcGFyZW50LCBzcGxpdCk7Ci0JCXBsbm8gPSBjaHVuay0+cF9uZXh0OwotCQl0bG5vID0gY2h1bmstPnRfbmV4dDsKLQl9CisJeGRpX2RpZmZfaHVua3MoZmlsZV9wLCAmZmlsZV9vLCBoYW5kbGVfc3BsaXRfY2IsICZkLCAmeHBwLCAmeGVjZmcpOwogCS8qIHJlbWFpbmRlciwgaWYgYW55LCBhbGwgbWF0Y2ggdGhlIHByZWltYWdlICovCi0JaGFuZGxlX3NwbGl0KHNiLCBlbnQsIHRsbm8sIHBsbm8sIGVudC0+bnVtX2xpbmVzLCBwYXJlbnQsIHNwbGl0KTsKLQlmcmVlX3BhdGNoKHBhdGNoKTsKKwloYW5kbGVfc3BsaXQoc2IsIGVudCwgZC50bG5vLCBkLnBsbm8sIGVudC0+bnVtX2xpbmVzLCBwYXJlbnQsIHNwbGl0KTsKIH0KIAogLyoKQEAgLTE0MzUsNyArMTMzNyw3IEBACiAJCQkgICAgaW50IGRldGFpbGVkKQogewogCWludCBsZW47Ci0JY2hhciAqdG1wLCAqZW5kcDsKKwljaGFyICp0bXAsICplbmRwLCAqcmVlbmNvZGVkLCAqbWVzc2FnZTsKIAlzdGF0aWMgY2hhciBhdXRob3JfYnVmWzEwMjRdOwogCXN0YXRpYyBjaGFyIGNvbW1pdHRlcl9idWZbMTAyNF07CiAJc3RhdGljIGNoYXIgc3VtbWFyeV9idWZbMTAyNF07CkBAIC0xNDUzLDI0ICsxMzU1LDI5IEBACiAJCQlkaWUoIkNhbm5vdCByZWFkIGNvbW1pdCAlcyIsCiAJCQkgICAgc2hhMV90b19oZXgoY29tbWl0LT5vYmplY3Quc2hhMSkpOwogCX0KKwlyZWVuY29kZWQgPSByZWVuY29kZV9jb21taXRfbWVzc2FnZShjb21taXQsIE5VTEwpOworCW1lc3NhZ2UgICA9IHJlZW5jb2RlZCA/IHJlZW5jb2RlZCA6IGNvbW1pdC0+YnVmZmVyOwogCXJldC0+YXV0aG9yID0gYXV0aG9yX2J1ZjsKLQlnZXRfYWNfbGluZShjb21taXQtPmJ1ZmZlciwgIlxuYXV0aG9yICIsCisJZ2V0X2FjX2xpbmUobWVzc2FnZSwgIlxuYXV0aG9yICIsCiAJCSAgICBzaXplb2YoYXV0aG9yX2J1ZiksIGF1dGhvcl9idWYsICZyZXQtPmF1dGhvcl9tYWlsLAogCQkgICAgJnJldC0+YXV0aG9yX3RpbWUsICZyZXQtPmF1dGhvcl90eik7CiAKLQlpZiAoIWRldGFpbGVkKQorCWlmICghZGV0YWlsZWQpIHsKKwkJZnJlZShyZWVuY29kZWQpOwogCQlyZXR1cm47CisJfQogCiAJcmV0LT5jb21taXR0ZXIgPSBjb21taXR0ZXJfYnVmOwotCWdldF9hY19saW5lKGNvbW1pdC0+YnVmZmVyLCAiXG5jb21taXR0ZXIgIiwKKwlnZXRfYWNfbGluZShtZXNzYWdlLCAiXG5jb21taXR0ZXIgIiwKIAkJICAgIHNpemVvZihjb21taXR0ZXJfYnVmKSwgY29tbWl0dGVyX2J1ZiwgJnJldC0+Y29tbWl0dGVyX21haWwsCiAJCSAgICAmcmV0LT5jb21taXR0ZXJfdGltZSwgJnJldC0+Y29tbWl0dGVyX3R6KTsKIAogCXJldC0+c3VtbWFyeSA9IHN1bW1hcnlfYnVmOwotCXRtcCA9IHN0cnN0cihjb21taXQtPmJ1ZmZlciwgIlxuXG4iKTsKKwl0bXAgPSBzdHJzdHIobWVzc2FnZSwgIlxuXG4iKTsKIAlpZiAoIXRtcCkgewogCWVycm9yX291dDoKIAkJc3ByaW50ZihzdW1tYXJ5X2J1ZiwgIiglcykiLCBzaGExX3RvX2hleChjb21taXQtPm9iamVjdC5zaGExKSk7CisJCWZyZWUocmVlbmNvZGVkKTsKIAkJcmV0dXJuOwogCX0KIAl0bXAgKz0gMjsKQEAgLTE0ODIsNiArMTM4OSw3IEBACiAJCWdvdG8gZXJyb3Jfb3V0OwogCW1lbWNweShzdW1tYXJ5X2J1ZiwgdG1wLCBsZW4pOwogCXN1bW1hcnlfYnVmW2xlbl0gPSAwOworCWZyZWUocmVlbmNvZGVkKTsKIH0KIAogLyoKQEAgLTE3MTEsMTMgKzE2MTksMTQgQEAKIAkJCQlwcmludGYoIiAlKmQiLCBtYXhfb3JpZ19kaWdpdHMsCiAJCQkJICAgICAgIGVudC0+c19sbm8gKyAxICsgY250KTsKIAotCQkJaWYgKCEob3B0ICYgT1VUUFVUX05PX0FVVEhPUikpCi0JCQkJcHJpbnRmKCIgKCUtKi4qcyAlMTBzIiwKLQkJCQkgICAgICAgbG9uZ2VzdF9hdXRob3IsIGxvbmdlc3RfYXV0aG9yLAotCQkJCSAgICAgICBjaS5hdXRob3IsCisJCQlpZiAoIShvcHQgJiBPVVRQVVRfTk9fQVVUSE9SKSkgeworCQkJCWludCBwYWQgPSBsb25nZXN0X2F1dGhvciAtIHV0Zjhfc3Ryd2lkdGgoY2kuYXV0aG9yKTsKKwkJCQlwcmludGYoIiAoJXMlKnMgJTEwcyIsCisJCQkJICAgICAgIGNpLmF1dGhvciwgcGFkLCAiIiwKIAkJCQkgICAgICAgZm9ybWF0X3RpbWUoY2kuYXV0aG9yX3RpbWUsCiAJCQkJCQkgICBjaS5hdXRob3JfdHosCiAJCQkJCQkgICBzaG93X3Jhd190aW1lKSk7CisJCQl9CiAJCQlwcmludGYoIiAlKmQpICIsCiAJCQkgICAgICAgbWF4X2RpZ2l0cywgZW50LT5sbm8gKyAxICsgY250KTsKIAkJfQpAQCAtMTg0OCw3ICsxNzU3LDcgQEAKIAkJaWYgKCEoc3VzcGVjdC0+Y29tbWl0LT5vYmplY3QuZmxhZ3MgJiBNRVRBSU5GT19TSE9XTikpIHsKIAkJCXN1c3BlY3QtPmNvbW1pdC0+b2JqZWN0LmZsYWdzIHw9IE1FVEFJTkZPX1NIT1dOOwogCQkJZ2V0X2NvbW1pdF9pbmZvKHN1c3BlY3QtPmNvbW1pdCwgJmNpLCAxKTsKLQkJCW51bSA9IHN0cmxlbihjaS5hdXRob3IpOworCQkJbnVtID0gdXRmOF9zdHJ3aWR0aChjaS5hdXRob3IpOwogCQkJaWYgKGxvbmdlc3RfYXV0aG9yIDwgbnVtKQogCQkJCWxvbmdlc3RfYXV0aG9yID0gbnVtOwogCQl9CkBAIC0yMDY2LDcgKzE5NzUsNyBAQAogCXN0cnVjdCBjb21taXQgKmNvbW1pdDsKIAlzdHJ1Y3Qgb3JpZ2luICpvcmlnaW47CiAJdW5zaWduZWQgY2hhciBoZWFkX3NoYTFbMjBdOwotCXN0cnVjdCBzdHJidWYgYnVmOworCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAJY29uc3QgY2hhciAqaWRlbnQ7CiAJdGltZV90IG5vdzsKIAlpbnQgc2l6ZSwgbGVuOwpAQCAtMjA4NiwxMSArMTk5NSw5IEBACiAKIAlvcmlnaW4gPSBtYWtlX29yaWdpbihjb21taXQsIHBhdGgpOwogCi0Jc3RyYnVmX2luaXQoJmJ1ZiwgMCk7CiAJaWYgKCFjb250ZW50c19mcm9tIHx8IHN0cmNtcCgiLSIsIGNvbnRlbnRzX2Zyb20pKSB7CiAJCXN0cnVjdCBzdGF0IHN0OwogCQljb25zdCBjaGFyICpyZWFkX2Zyb207Ci0JCXVuc2lnbmVkIGxvbmcgZmluX3NpemU7CiAKIAkJaWYgKGNvbnRlbnRzX2Zyb20pIHsKIAkJCWlmIChzdGF0KGNvbnRlbnRzX2Zyb20sICZzdCkgPCAwKQpAQCAtMjEwMiw3ICsyMDA5LDYgQEAKIAkJCQlkaWUoIkNhbm5vdCBsc3RhdCAlcyIsIHBhdGgpOwogCQkJcmVhZF9mcm9tID0gcGF0aDsKIAkJfQotCQlmaW5fc2l6ZSA9IHhzaXplX3Qoc3Quc3Rfc2l6ZSk7CiAJCW1vZGUgPSBjYW5vbl9tb2RlKHN0LnN0X21vZGUpOwogCQlzd2l0Y2ggKHN0LnN0X21vZGUgJiBTX0lGTVQpIHsKIAkJY2FzZSBTX0lGUkVHOgpAQCAtMjExMCw5ICsyMDE2LDggQEAKIAkJCQlkaWUoImNhbm5vdCBvcGVuIG9yIHJlYWQgJXMiLCByZWFkX2Zyb20pOwogCQkJYnJlYWs7CiAJCWNhc2UgU19JRkxOSzoKLQkJCWlmIChyZWFkbGluayhyZWFkX2Zyb20sIGJ1Zi5idWYsIGJ1Zi5hbGxvYykgIT0gZmluX3NpemUpCisJCQlpZiAoc3RyYnVmX3JlYWRsaW5rKCZidWYsIHJlYWRfZnJvbSwgc3Quc3Rfc2l6ZSkgPCAwKQogCQkJCWRpZSgiY2Fubm90IHJlYWRsaW5rICVzIiwgcmVhZF9mcm9tKTsKLQkJCWJ1Zi5sZW4gPSBmaW5fc2l6ZTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZGllKCJ1bnN1cHBvcnRlZCBmaWxlIHR5cGUgJXMiLCByZWFkX2Zyb20pOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1icmFuY2guYyBiL2J1aWx0aW4tYnJhbmNoLmMKaW5kZXggNGI0YWJmZC4uMDJmYTM4ZiAxMDA2NDQKLS0tIGEvYnVpbHRpbi1icmFuY2guYworKysgYi9idWlsdGluLWJyYW5jaC5jCkBAIC05Nyw3ICs5Nyw2IEBACiAJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKIAljaGFyICpuYW1lID0gTlVMTDsKIAljb25zdCBjaGFyICpmbXQsICpyZW1vdGU7Ci0JY2hhciBzZWN0aW9uW1BBVEhfTUFYXTsKIAlpbnQgaTsKIAlpbnQgcmV0ID0gMDsKIApAQCAtMTY1LDExICsxNjQsMTMgQEAKIAkJCSAgICAgICBhcmd2W2ldKTsKIAkJCXJldCA9IDE7CiAJCX0gZWxzZSB7Ci0JCQlwcmludGYoIkRlbGV0ZWQgJXNicmFuY2ggJXMuXG4iLCByZW1vdGUsIGFyZ3ZbaV0pOwotCQkJc25wcmludGYoc2VjdGlvbiwgc2l6ZW9mKHNlY3Rpb24pLCAiYnJhbmNoLiVzIiwKLQkJCQkgYXJndltpXSk7Ci0JCQlpZiAoZ2l0X2NvbmZpZ19yZW5hbWVfc2VjdGlvbihzZWN0aW9uLCBOVUxMKSA8IDApCisJCQlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOworCQkJcHJpbnRmKCJEZWxldGVkICVzYnJhbmNoICVzICglcykuXG4iLCByZW1vdGUsIGFyZ3ZbaV0sCisJCQkJZmluZF91bmlxdWVfYWJicmV2KHNoYTEsIERFRkFVTFRfQUJCUkVWKSk7CisJCQlzdHJidWZfYWRkZigmYnVmLCAiYnJhbmNoLiVzIiwgYXJndltpXSk7CisJCQlpZiAoZ2l0X2NvbmZpZ19yZW5hbWVfc2VjdGlvbihidWYuYnVmLCBOVUxMKSA8IDApCiAJCQkJd2FybmluZygiVXBkYXRlIG9mIGNvbmZpZy1maWxlIGZhaWxlZCIpOworCQkJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CiAJCX0KIAl9CiAKQEAgLTI3OSw3ICsyODAsNyBAQAogCXJldHVybiBzdHJjbXAoYzEtPm5hbWUsIGMyLT5uYW1lKTsKIH0KIAotc3RhdGljIHZvaWQgZmlsbF90cmFja2luZ19pbmZvKGNoYXIgKnN0YXQsIGNvbnN0IGNoYXIgKmJyYW5jaF9uYW1lKQorc3RhdGljIHZvaWQgZmlsbF90cmFja2luZ19pbmZvKHN0cnVjdCBzdHJidWYgKnN0YXQsIGNvbnN0IGNoYXIgKmJyYW5jaF9uYW1lKQogewogCWludCBvdXJzLCB0aGVpcnM7CiAJc3RydWN0IGJyYW5jaCAqYnJhbmNoID0gYnJhbmNoX2dldChicmFuY2hfbmFtZSk7CkBAIC0yODcsMTEgKzI4OCwxMSBAQAogCWlmICghc3RhdF90cmFja2luZ19pbmZvKGJyYW5jaCwgJm91cnMsICZ0aGVpcnMpIHx8ICghb3VycyAmJiAhdGhlaXJzKSkKIAkJcmV0dXJuOwogCWlmICghb3VycykKLQkJc3ByaW50ZihzdGF0LCAiW2JlaGluZCAlZF0gIiwgdGhlaXJzKTsKKwkJc3RyYnVmX2FkZGYoc3RhdCwgIltiZWhpbmQgJWRdICIsIHRoZWlycyk7CiAJZWxzZSBpZiAoIXRoZWlycykKLQkJc3ByaW50ZihzdGF0LCAiW2FoZWFkICVkXSAiLCBvdXJzKTsKKwkJc3RyYnVmX2FkZGYoc3RhdCwgIlthaGVhZCAlZF0gIiwgb3Vycyk7CiAJZWxzZQotCQlzcHJpbnRmKHN0YXQsICJbYWhlYWQgJWQsIGJlaGluZCAlZF0gIiwgb3VycywgdGhlaXJzKTsKKwkJc3RyYnVmX2FkZGYoc3RhdCwgIlthaGVhZCAlZCwgYmVoaW5kICVkXSAiLCBvdXJzLCB0aGVpcnMpOwogfQogCiBzdGF0aWMgaW50IG1hdGNoZXNfbWVyZ2VfZmlsdGVyKHN0cnVjdCBjb21taXQgKmNvbW1pdCkKQEAgLTMzNCwxMiArMzM1LDggQEAKIAl9CiAKIAlpZiAodmVyYm9zZSkgewotCQlzdHJ1Y3Qgc3RyYnVmIHN1YmplY3Q7CisJCXN0cnVjdCBzdHJidWYgc3ViamVjdCA9IFNUUkJVRl9JTklULCBzdGF0ID0gU1RSQlVGX0lOSVQ7CiAJCWNvbnN0IGNoYXIgKnN1YiA9ICIgKioqKiBpbnZhbGlkIHJlZiAqKioqIjsKLQkJY2hhciBzdGF0WzEyOF07Ci0KLQkJc3RyYnVmX2luaXQoJnN1YmplY3QsIDApOwotCQlzdGF0WzBdID0gJ1wwJzsKIAogCQljb21taXQgPSBpdGVtLT5jb21taXQ7CiAJCWlmIChjb21taXQgJiYgIXBhcnNlX2NvbW1pdChjb21taXQpKSB7CkBAIC0zNDksMTMgKzM0NiwxNCBAQAogCQl9CiAKIAkJaWYgKGl0ZW0tPmtpbmQgPT0gUkVGX0xPQ0FMX0JSQU5DSCkKLQkJCWZpbGxfdHJhY2tpbmdfaW5mbyhzdGF0LCBpdGVtLT5uYW1lKTsKKwkJCWZpbGxfdHJhY2tpbmdfaW5mbygmc3RhdCwgaXRlbS0+bmFtZSk7CiAKIAkJcHJpbnRmKCIlYyAlcyUtKnMlcyAlcyAlcyVzXG4iLCBjLCBicmFuY2hfZ2V0X2NvbG9yKGNvbG9yKSwKIAkJICAgICAgIG1heHdpZHRoLCBpdGVtLT5uYW1lLAogCQkgICAgICAgYnJhbmNoX2dldF9jb2xvcihDT0xPUl9CUkFOQ0hfUkVTRVQpLAogCQkgICAgICAgZmluZF91bmlxdWVfYWJicmV2KGl0ZW0tPmNvbW1pdC0+b2JqZWN0LnNoYTEsIGFiYnJldiksCi0JCSAgICAgICBzdGF0LCBzdWIpOworCQkgICAgICAgc3RhdC5idWYsIHN1Yik7CisJCXN0cmJ1Zl9yZWxlYXNlKCZzdGF0KTsKIAkJc3RyYnVmX3JlbGVhc2UoJnN1YmplY3QpOwogCX0gZWxzZSB7CiAJCXByaW50ZigiJWMgJXMlcyVzXG4iLCBjLCBicmFuY2hfZ2V0X2NvbG9yKGNvbG9yKSwgaXRlbS0+bmFtZSwKQEAgLTQyNyw0MiArNDI1LDQ1IEBACiAKIHN0YXRpYyB2b2lkIHJlbmFtZV9icmFuY2goY29uc3QgY2hhciAqb2xkbmFtZSwgY29uc3QgY2hhciAqbmV3bmFtZSwgaW50IGZvcmNlKQogewotCWNoYXIgb2xkcmVmW1BBVEhfTUFYXSwgbmV3cmVmW1BBVEhfTUFYXSwgbG9nbXNnW1BBVEhfTUFYKjIgKyAxMDBdOworCXN0cnVjdCBzdHJidWYgb2xkcmVmID0gU1RSQlVGX0lOSVQsIG5ld3JlZiA9IFNUUkJVRl9JTklULCBsb2dtc2cgPSBTVFJCVUZfSU5JVDsKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwotCWNoYXIgb2xkc2VjdGlvbltQQVRIX01BWF0sIG5ld3NlY3Rpb25bUEFUSF9NQVhdOworCXN0cnVjdCBzdHJidWYgb2xkc2VjdGlvbiA9IFNUUkJVRl9JTklULCBuZXdzZWN0aW9uID0gU1RSQlVGX0lOSVQ7CiAKIAlpZiAoIW9sZG5hbWUpCiAJCWRpZSgiY2Fubm90IHJlbmFtZSB0aGUgY3VycmVudCBicmFuY2ggd2hpbGUgbm90IG9uIGFueS4iKTsKIAotCWlmIChzbnByaW50ZihvbGRyZWYsIHNpemVvZihvbGRyZWYpLCAicmVmcy9oZWFkcy8lcyIsIG9sZG5hbWUpID4gc2l6ZW9mKG9sZHJlZikpCi0JCWRpZSgiT2xkIGJyYW5jaG5hbWUgdG9vIGxvbmciKTsKKwlzdHJidWZfYWRkZigmb2xkcmVmLCAicmVmcy9oZWFkcy8lcyIsIG9sZG5hbWUpOwogCi0JaWYgKGNoZWNrX3JlZl9mb3JtYXQob2xkcmVmKSkKLQkJZGllKCJJbnZhbGlkIGJyYW5jaCBuYW1lOiAlcyIsIG9sZHJlZik7CisJaWYgKGNoZWNrX3JlZl9mb3JtYXQob2xkcmVmLmJ1ZikpCisJCWRpZSgiSW52YWxpZCBicmFuY2ggbmFtZTogJXMiLCBvbGRyZWYuYnVmKTsKIAotCWlmIChzbnByaW50ZihuZXdyZWYsIHNpemVvZihuZXdyZWYpLCAicmVmcy9oZWFkcy8lcyIsIG5ld25hbWUpID4gc2l6ZW9mKG5ld3JlZikpCi0JCWRpZSgiTmV3IGJyYW5jaG5hbWUgdG9vIGxvbmciKTsKKwlzdHJidWZfYWRkZigmbmV3cmVmLCAicmVmcy9oZWFkcy8lcyIsIG5ld25hbWUpOwogCi0JaWYgKGNoZWNrX3JlZl9mb3JtYXQobmV3cmVmKSkKLQkJZGllKCJJbnZhbGlkIGJyYW5jaCBuYW1lOiAlcyIsIG5ld3JlZik7CisJaWYgKGNoZWNrX3JlZl9mb3JtYXQobmV3cmVmLmJ1ZikpCisJCWRpZSgiSW52YWxpZCBicmFuY2ggbmFtZTogJXMiLCBuZXdyZWYuYnVmKTsKIAotCWlmIChyZXNvbHZlX3JlZihuZXdyZWYsIHNoYTEsIDEsIE5VTEwpICYmICFmb3JjZSkKKwlpZiAocmVzb2x2ZV9yZWYobmV3cmVmLmJ1Ziwgc2hhMSwgMSwgTlVMTCkgJiYgIWZvcmNlKQogCQlkaWUoIkEgYnJhbmNoIG5hbWVkICclcycgYWxyZWFkeSBleGlzdHMuIiwgbmV3bmFtZSk7CiAKLQlzbnByaW50Zihsb2dtc2csIHNpemVvZihsb2dtc2cpLCAiQnJhbmNoOiByZW5hbWVkICVzIHRvICVzIiwKLQkJIG9sZHJlZiwgbmV3cmVmKTsKKwlzdHJidWZfYWRkZigmbG9nbXNnLCAiQnJhbmNoOiByZW5hbWVkICVzIHRvICVzIiwKKwkJIG9sZHJlZi5idWYsIG5ld3JlZi5idWYpOwogCi0JaWYgKHJlbmFtZV9yZWYob2xkcmVmLCBuZXdyZWYsIGxvZ21zZykpCisJaWYgKHJlbmFtZV9yZWYob2xkcmVmLmJ1ZiwgbmV3cmVmLmJ1ZiwgbG9nbXNnLmJ1ZikpCiAJCWRpZSgiQnJhbmNoIHJlbmFtZSBmYWlsZWQiKTsKKwlzdHJidWZfcmVsZWFzZSgmbG9nbXNnKTsKIAogCS8qIG5vIG5lZWQgdG8gcGFzcyBsb2dtc2cgaGVyZSBhcyBIRUFEIGRpZG4ndCByZWFsbHkgbW92ZSAqLwotCWlmICghc3RyY21wKG9sZG5hbWUsIGhlYWQpICYmIGNyZWF0ZV9zeW1yZWYoIkhFQUQiLCBuZXdyZWYsIE5VTEwpKQorCWlmICghc3RyY21wKG9sZG5hbWUsIGhlYWQpICYmIGNyZWF0ZV9zeW1yZWYoIkhFQUQiLCBuZXdyZWYuYnVmLCBOVUxMKSkKIAkJZGllKCJCcmFuY2ggcmVuYW1lZCB0byAlcywgYnV0IEhFQUQgaXMgbm90IHVwZGF0ZWQhIiwgbmV3bmFtZSk7CiAKLQlzbnByaW50ZihvbGRzZWN0aW9uLCBzaXplb2Yob2xkc2VjdGlvbiksICJicmFuY2guJXMiLCBvbGRyZWYgKyAxMSk7Ci0Jc25wcmludGYobmV3c2VjdGlvbiwgc2l6ZW9mKG5ld3NlY3Rpb24pLCAiYnJhbmNoLiVzIiwgbmV3cmVmICsgMTEpOwotCWlmIChnaXRfY29uZmlnX3JlbmFtZV9zZWN0aW9uKG9sZHNlY3Rpb24sIG5ld3NlY3Rpb24pIDwgMCkKKwlzdHJidWZfYWRkZigmb2xkc2VjdGlvbiwgImJyYW5jaC4lcyIsIG9sZHJlZi5idWYgKyAxMSk7CisJc3RyYnVmX3JlbGVhc2UoJm9sZHJlZik7CisJc3RyYnVmX2FkZGYoJm5ld3NlY3Rpb24sICJicmFuY2guJXMiLCBuZXdyZWYuYnVmICsgMTEpOworCXN0cmJ1Zl9yZWxlYXNlKCZuZXdyZWYpOworCWlmIChnaXRfY29uZmlnX3JlbmFtZV9zZWN0aW9uKG9sZHNlY3Rpb24uYnVmLCBuZXdzZWN0aW9uLmJ1ZikgPCAwKQogCQlkaWUoIkJyYW5jaCBpcyByZW5hbWVkLCBidXQgdXBkYXRlIG9mIGNvbmZpZy1maWxlIGZhaWxlZCIpOworCXN0cmJ1Zl9yZWxlYXNlKCZvbGRzZWN0aW9uKTsKKwlzdHJidWZfcmVsZWFzZSgmbmV3c2VjdGlvbik7CiB9CiAKIHN0YXRpYyBpbnQgb3B0X3BhcnNlX3dpdGhfY29tbWl0KGNvbnN0IHN0cnVjdCBvcHRpb24gKm9wdCwgY29uc3QgY2hhciAqYXJnLCBpbnQgdW5zZXQpCmRpZmYgLS1naXQgYS9idWlsdGluLWNhdC1maWxlLmMgYi9idWlsdGluLWNhdC1maWxlLmMKaW5kZXggM2ZiYTZiOS4uMzBkMDBhNiAxMDA2NDQKLS0tIGEvYnVpbHRpbi1jYXQtZmlsZS5jCisrKyBiL2J1aWx0aW4tY2F0LWZpbGUuYwpAQCAtMTg5LDkgKzE4OSw4IEBACiAKIHN0YXRpYyBpbnQgYmF0Y2hfb2JqZWN0cyhpbnQgcHJpbnRfY29udGVudHMpCiB7Ci0Jc3RydWN0IHN0cmJ1ZiBidWY7CisJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAotCXN0cmJ1Zl9pbml0KCZidWYsIDApOwogCXdoaWxlIChzdHJidWZfZ2V0bGluZSgmYnVmLCBzdGRpbiwgJ1xuJykgIT0gRU9GKSB7CiAJCWludCBlcnJvciA9IGJhdGNoX29uZV9vYmplY3QoYnVmLmJ1ZiwgcHJpbnRfY29udGVudHMpOwogCQlpZiAoZXJyb3IpCmRpZmYgLS1naXQgYS9idWlsdGluLWNoZWNrLWF0dHIuYyBiL2J1aWx0aW4tY2hlY2stYXR0ci5jCmluZGV4IGNiNzgzZmMuLjE1YTA0YjcgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tY2hlY2stYXR0ci5jCisrKyBiL2J1aWx0aW4tY2hlY2stYXR0ci5jCkBAIC0yLDIxICsyLDg0IEBACiAjaW5jbHVkZSAiY2FjaGUuaCIKICNpbmNsdWRlICJhdHRyLmgiCiAjaW5jbHVkZSAicXVvdGUuaCIKKyNpbmNsdWRlICJwYXJzZS1vcHRpb25zLmgiCiAKLXN0YXRpYyBjb25zdCBjaGFyIGNoZWNrX2F0dHJfdXNhZ2VbXSA9Ci0iZ2l0IGNoZWNrLWF0dHIgYXR0ci4uLiBbLS1dIHBhdGhuYW1lLi4uIjsKK3N0YXRpYyBpbnQgc3RkaW5fcGF0aHM7CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGNoZWNrX2F0dHJfdXNhZ2VbXSA9IHsKKyJnaXQgY2hlY2stYXR0ciBhdHRyLi4uIFstLV0gcGF0aG5hbWUuLi4iLAorImdpdCBjaGVjay1hdHRyIC0tc3RkaW4gYXR0ci4uLiA8IDxsaXN0LW9mLXBhdGhzPiIsCitOVUxMCit9OworCitzdGF0aWMgaW50IG51bGxfdGVybV9saW5lOworCitzdGF0aWMgY29uc3Qgc3RydWN0IG9wdGlvbiBjaGVja19hdHRyX29wdGlvbnNbXSA9IHsKKwlPUFRfQk9PTEVBTigwICwgInN0ZGluIiwgJnN0ZGluX3BhdGhzLCAicmVhZCBmaWxlIG5hbWVzIGZyb20gc3RkaW4iKSwKKwlPUFRfQk9PTEVBTigneicsIE5VTEwsICZudWxsX3Rlcm1fbGluZSwKKwkJImlucHV0IHBhdGhzIGFyZSB0ZXJtaW5hdGVkIGJ5IGEgbnVsbCBjaGFyYWN0ZXIiKSwKKwlPUFRfRU5EKCkKK307CisKK3N0YXRpYyB2b2lkIGNoZWNrX2F0dHIoaW50IGNudCwgc3RydWN0IGdpdF9hdHRyX2NoZWNrICpjaGVjaywKKwljb25zdCBjaGFyKiogbmFtZSwgY29uc3QgY2hhciAqZmlsZSkKK3sKKwlpbnQgajsKKwlpZiAoZ2l0X2NoZWNrYXR0cihmaWxlLCBjbnQsIGNoZWNrKSkKKwkJZGllKCJnaXRfY2hlY2thdHRyIGRpZWQiKTsKKwlmb3IgKGogPSAwOyBqIDwgY250OyBqKyspIHsKKwkJY29uc3QgY2hhciAqdmFsdWUgPSBjaGVja1tqXS52YWx1ZTsKKworCQlpZiAoQVRUUl9UUlVFKHZhbHVlKSkKKwkJCXZhbHVlID0gInNldCI7CisJCWVsc2UgaWYgKEFUVFJfRkFMU0UodmFsdWUpKQorCQkJdmFsdWUgPSAidW5zZXQiOworCQllbHNlIGlmIChBVFRSX1VOU0VUKHZhbHVlKSkKKwkJCXZhbHVlID0gInVuc3BlY2lmaWVkIjsKKworCQlxdW90ZV9jX3N0eWxlKGZpbGUsIE5VTEwsIHN0ZG91dCwgMCk7CisJCXByaW50ZigiOiAlczogJXNcbiIsIG5hbWVbal0sIHZhbHVlKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGNoZWNrX2F0dHJfc3RkaW5fcGF0aHMoaW50IGNudCwgc3RydWN0IGdpdF9hdHRyX2NoZWNrICpjaGVjaywKKwljb25zdCBjaGFyKiogbmFtZSkKK3sKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiwgbmJ1ZjsKKwlpbnQgbGluZV90ZXJtaW5hdGlvbiA9IG51bGxfdGVybV9saW5lID8gMCA6ICdcbic7CisKKwlzdHJidWZfaW5pdCgmYnVmLCAwKTsKKwlzdHJidWZfaW5pdCgmbmJ1ZiwgMCk7CisJd2hpbGUgKHN0cmJ1Zl9nZXRsaW5lKCZidWYsIHN0ZGluLCBsaW5lX3Rlcm1pbmF0aW9uKSAhPSBFT0YpIHsKKwkJaWYgKGxpbmVfdGVybWluYXRpb24gJiYgYnVmLmJ1ZlswXSA9PSAnIicpIHsKKwkJCXN0cmJ1Zl9yZXNldCgmbmJ1Zik7CisJCQlpZiAodW5xdW90ZV9jX3N0eWxlKCZuYnVmLCBidWYuYnVmLCBOVUxMKSkKKwkJCQlkaWUoImxpbmUgaXMgYmFkbHkgcXVvdGVkIik7CisJCQlzdHJidWZfc3dhcCgmYnVmLCAmbmJ1Zik7CisJCX0KKwkJY2hlY2tfYXR0cihjbnQsIGNoZWNrLCBuYW1lLCBidWYuYnVmKTsKKwkJbWF5YmVfZmx1c2hfb3JfZGllKHN0ZG91dCwgImF0dHJpYnV0ZSB0byBzdGRvdXQiKTsKKwl9CisJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CisJc3RyYnVmX3JlbGVhc2UoJm5idWYpOworfQogCiBpbnQgY21kX2NoZWNrX2F0dHIoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCiB7CiAJc3RydWN0IGdpdF9hdHRyX2NoZWNrICpjaGVjazsKIAlpbnQgY250LCBpLCBkb3VibGVkYXNoOworCWNvbnN0IGNoYXIgKmVycnN0ciA9IE5VTEw7CisKKwlhcmdjID0gcGFyc2Vfb3B0aW9ucyhhcmdjLCBhcmd2LCBjaGVja19hdHRyX29wdGlvbnMsIGNoZWNrX2F0dHJfdXNhZ2UsCisJCVBBUlNFX09QVF9LRUVQX0RBU0hEQVNIKTsKKwlpZiAoIWFyZ2MpCisJCXVzYWdlX3dpdGhfb3B0aW9ucyhjaGVja19hdHRyX3VzYWdlLCBjaGVja19hdHRyX29wdGlvbnMpOwogCiAJaWYgKHJlYWRfY2FjaGUoKSA8IDApIHsKIAkJZGllKCJpbnZhbGlkIGNhY2hlIik7CiAJfQogCiAJZG91YmxlZGFzaCA9IC0xOwotCWZvciAoaSA9IDE7IGRvdWJsZWRhc2ggPCAwICYmIGkgPCBhcmdjOyBpKyspIHsKKwlmb3IgKGkgPSAwOyBkb3VibGVkYXNoIDwgMCAmJiBpIDwgYXJnYzsgaSsrKSB7CiAJCWlmICghc3RyY21wKGFyZ3ZbaV0sICItLSIpKQogCQkJZG91YmxlZGFzaCA9IGk7CiAJfQpAQCAtMjQsNDEgKzg3LDM3IEBACiAJLyogSWYgdGhlcmUgaXMgbm8gZG91YmxlIGRhc2gsIHdlIGhhbmRsZSBvbmx5IG9uZSBhdHRyaWJ1dGUgKi8KIAlpZiAoZG91YmxlZGFzaCA8IDApIHsKIAkJY250ID0gMTsKLQkJZG91YmxlZGFzaCA9IDE7CisJCWRvdWJsZWRhc2ggPSAwOwogCX0gZWxzZQotCQljbnQgPSBkb3VibGVkYXNoIC0gMTsKKwkJY250ID0gZG91YmxlZGFzaDsKIAlkb3VibGVkYXNoKys7CiAKLQlpZiAoY250IDw9IDAgfHwgYXJnYyA8IGRvdWJsZWRhc2gpCi0JCXVzYWdlKGNoZWNrX2F0dHJfdXNhZ2UpOworCWlmIChjbnQgPD0gMCkKKwkJZXJyc3RyID0gIk5vIGF0dHJpYnV0ZSBzcGVjaWZpZWQiOworCWVsc2UgaWYgKHN0ZGluX3BhdGhzICYmIGRvdWJsZWRhc2ggPCBhcmdjKQorCQllcnJzdHIgPSAiQ2FuJ3Qgc3BlY2lmeSBmaWxlcyB3aXRoIC0tc3RkaW4iOworCWlmIChlcnJzdHIpIHsKKwkJZXJyb3IoIiVzIiwgZXJyc3RyKTsKKwkJdXNhZ2Vfd2l0aF9vcHRpb25zKGNoZWNrX2F0dHJfdXNhZ2UsIGNoZWNrX2F0dHJfb3B0aW9ucyk7CisJfQorCiAJY2hlY2sgPSB4Y2FsbG9jKGNudCwgc2l6ZW9mKCpjaGVjaykpOwogCWZvciAoaSA9IDA7IGkgPCBjbnQ7IGkrKykgewogCQljb25zdCBjaGFyICpuYW1lOwogCQlzdHJ1Y3QgZ2l0X2F0dHIgKmE7Ci0JCW5hbWUgPSBhcmd2W2kgKyAxXTsKKwkJbmFtZSA9IGFyZ3ZbaV07CiAJCWEgPSBnaXRfYXR0cihuYW1lLCBzdHJsZW4obmFtZSkpOwogCQlpZiAoIWEpCiAJCQlyZXR1cm4gZXJyb3IoIiVzOiBub3QgYSB2YWxpZCBhdHRyaWJ1dGUgbmFtZSIsIG5hbWUpOwogCQljaGVja1tpXS5hdHRyID0gYTsKIAl9CiAKLQlmb3IgKGkgPSBkb3VibGVkYXNoOyBpIDwgYXJnYzsgaSsrKSB7Ci0JCWludCBqOwotCQlpZiAoZ2l0X2NoZWNrYXR0cihhcmd2W2ldLCBjbnQsIGNoZWNrKSkKLQkJCWRpZSgiZ2l0X2NoZWNrYXR0ciBkaWVkIik7Ci0JCWZvciAoaiA9IDA7IGogPCBjbnQ7IGorKykgewotCQkJY29uc3QgY2hhciAqdmFsdWUgPSBjaGVja1tqXS52YWx1ZTsKLQotCQkJaWYgKEFUVFJfVFJVRSh2YWx1ZSkpCi0JCQkJdmFsdWUgPSAic2V0IjsKLQkJCWVsc2UgaWYgKEFUVFJfRkFMU0UodmFsdWUpKQotCQkJCXZhbHVlID0gInVuc2V0IjsKLQkJCWVsc2UgaWYgKEFUVFJfVU5TRVQodmFsdWUpKQotCQkJCXZhbHVlID0gInVuc3BlY2lmaWVkIjsKLQotCQkJcXVvdGVfY19zdHlsZShhcmd2W2ldLCBOVUxMLCBzdGRvdXQsIDApOwotCQkJcHJpbnRmKCI6ICVzOiAlc1xuIiwgYXJndltqKzFdLCB2YWx1ZSk7Ci0JCX0KKwlpZiAoc3RkaW5fcGF0aHMpCisJCWNoZWNrX2F0dHJfc3RkaW5fcGF0aHMoY250LCBjaGVjaywgYXJndik7CisJZWxzZSB7CisJCWZvciAoaSA9IGRvdWJsZWRhc2g7IGkgPCBhcmdjOyBpKyspCisJCQljaGVja19hdHRyKGNudCwgY2hlY2ssIGFyZ3YsIGFyZ3ZbaV0pOworCQltYXliZV9mbHVzaF9vcl9kaWUoc3Rkb3V0LCAiYXR0cmlidXRlIHRvIHN0ZG91dCIpOwogCX0KIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2J1aWx0aW4tY2hlY2tvdXQtaW5kZXguYyBiL2J1aWx0aW4tY2hlY2tvdXQtaW5kZXguYwppbmRleCA1NWI3YWFmLi4wZDUzNGJjIDEwMDY0NAotLS0gYS9idWlsdGluLWNoZWNrb3V0LWluZGV4LmMKKysrIGIvYnVpbHRpbi1jaGVja291dC1pbmRleC5jCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiY2FjaGUuaCIKICNpbmNsdWRlICJxdW90ZS5oIgogI2luY2x1ZGUgImNhY2hlLXRyZWUuaCIKKyNpbmNsdWRlICJwYXJzZS1vcHRpb25zLmgiCiAKICNkZWZpbmUgQ0hFQ0tPVVRfQUxMIDQKIHN0YXRpYyBpbnQgbGluZV90ZXJtaW5hdGlvbiA9ICdcbic7CkBAIC0xNTMsMTEgKzE1NCw1OCBAQAogCQlleGl0KDEyOCk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyIGNoZWNrb3V0X2NhY2hlX3VzYWdlW10gPQotImdpdCBjaGVja291dC1pbmRleCBbLXVdIFstcV0gWy1hXSBbLWZdIFstbl0gWy0tc3RhZ2U9WzEyM118YWxsXSBbLS1wcmVmaXg9PHN0cmluZz5dIFstLXRlbXBdIFstLV0gPGZpbGU+Li4uIjsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYnVpbHRpbl9jaGVja291dF9pbmRleF91c2FnZVtdID0geworCSJnaXQgY2hlY2tvdXQtaW5kZXggW29wdGlvbnNdIFstLV0gPGZpbGU+Li4uIiwKKwlOVUxMCit9OwogCiBzdGF0aWMgc3RydWN0IGxvY2tfZmlsZSBsb2NrX2ZpbGU7CiAKK3N0YXRpYyBpbnQgb3B0aW9uX3BhcnNlX3UoY29uc3Qgc3RydWN0IG9wdGlvbiAqb3B0LAorCQkJICAgICAgY29uc3QgY2hhciAqYXJnLCBpbnQgdW5zZXQpCit7CisJaW50ICpuZXdmZCA9IG9wdC0+dmFsdWU7CisKKwlzdGF0ZS5yZWZyZXNoX2NhY2hlID0gMTsKKwlpZiAoKm5ld2ZkIDwgMCkKKwkJKm5ld2ZkID0gaG9sZF9sb2NrZWRfaW5kZXgoJmxvY2tfZmlsZSwgMSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgb3B0aW9uX3BhcnNlX3ooY29uc3Qgc3RydWN0IG9wdGlvbiAqb3B0LAorCQkJICBjb25zdCBjaGFyICphcmcsIGludCB1bnNldCkKK3sKKwlpZiAodW5zZXQpCisJCWxpbmVfdGVybWluYXRpb24gPSAnXG4nOworCWVsc2UKKwkJbGluZV90ZXJtaW5hdGlvbiA9IDA7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgb3B0aW9uX3BhcnNlX3ByZWZpeChjb25zdCBzdHJ1Y3Qgb3B0aW9uICpvcHQsCisJCQkgICAgICAgY29uc3QgY2hhciAqYXJnLCBpbnQgdW5zZXQpCit7CisJc3RhdGUuYmFzZV9kaXIgPSBhcmc7CisJc3RhdGUuYmFzZV9kaXJfbGVuID0gc3RybGVuKGFyZyk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgb3B0aW9uX3BhcnNlX3N0YWdlKGNvbnN0IHN0cnVjdCBvcHRpb24gKm9wdCwKKwkJCSAgICAgIGNvbnN0IGNoYXIgKmFyZywgaW50IHVuc2V0KQoreworCWlmICghc3RyY21wKGFyZywgImFsbCIpKSB7CisJCXRvX3RlbXBmaWxlID0gMTsKKwkJY2hlY2tvdXRfc3RhZ2UgPSBDSEVDS09VVF9BTEw7CisJfSBlbHNlIHsKKwkJaW50IGNoID0gYXJnWzBdOworCQlpZiAoJzEnIDw9IGNoICYmIGNoIDw9ICczJykKKwkJCWNoZWNrb3V0X3N0YWdlID0gYXJnWzBdIC0gJzAnOworCQllbHNlCisJCQlkaWUoInN0YWdlIHNob3VsZCBiZSBiZXR3ZWVuIDEgYW5kIDMgb3IgYWxsIik7CisJfQorCXJldHVybiAwOworfQorCiBpbnQgY21kX2NoZWNrb3V0X2luZGV4KGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQogewogCWludCBpOwpAQCAtMTY1LDYgKzIxMywzMyBAQAogCWludCBhbGwgPSAwOwogCWludCByZWFkX2Zyb21fc3RkaW4gPSAwOwogCWludCBwcmVmaXhfbGVuZ3RoOworCWludCBmb3JjZSA9IDAsIHF1aWV0ID0gMCwgbm90X25ldyA9IDA7CisJc3RydWN0IG9wdGlvbiBidWlsdGluX2NoZWNrb3V0X2luZGV4X29wdGlvbnNbXSA9IHsKKwkJT1BUX0JPT0xFQU4oJ2EnLCAiYWxsIiwgJmFsbCwKKwkJCSJjaGVja3Mgb3V0IGFsbCBmaWxlcyBpbiB0aGUgaW5kZXgiKSwKKwkJT1BUX0JPT0xFQU4oJ2YnLCAiZm9yY2UiLCAmZm9yY2UsCisJCQkiZm9yY2VzIG92ZXJ3cml0ZSBvZiBleGlzdGluZyBmaWxlcyIpLAorCQlPUFRfX1FVSUVUKCZxdWlldCksCisJCU9QVF9CT09MRUFOKCduJywgIm5vLWNyZWF0ZSIsICZub3RfbmV3LAorCQkJImRvbid0IGNoZWNrb3V0IG5ldyBmaWxlcyIpLAorCQl7IE9QVElPTl9DQUxMQkFDSywgJ3UnLCAiaW5kZXgiLCAmbmV3ZmQsIE5VTEwsCisJCQkidXBkYXRlIHN0YXQgaW5mb3JtYXRpb24gaW4gdGhlIGluZGV4IGZpbGUiLAorCQkJUEFSU0VfT1BUX05PQVJHLCBvcHRpb25fcGFyc2VfdSB9LAorCQl7IE9QVElPTl9DQUxMQkFDSywgJ3onLCBOVUxMLCBOVUxMLCBOVUxMLAorCQkJInBhdGhzIGFyZSBzZXBhcmF0ZWQgd2l0aCBOVUwgY2hhcmFjdGVyIiwKKwkJCVBBUlNFX09QVF9OT0FSRywgb3B0aW9uX3BhcnNlX3ogfSwKKwkJT1BUX0JPT0xFQU4oMCwgInN0ZGluIiwgJnJlYWRfZnJvbV9zdGRpbiwKKwkJCSJyZWFkIGxpc3Qgb2YgcGF0aHMgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQiKSwKKwkJT1BUX0JPT0xFQU4oMCwgInRlbXAiLCAmdG9fdGVtcGZpbGUsCisJCQkid3JpdGUgdGhlIGNvbnRlbnQgdG8gdGVtcG9yYXJ5IGZpbGVzIiksCisJCU9QVF9DQUxMQkFDSygwLCAicHJlZml4IiwgTlVMTCwgInN0cmluZyIsCisJCQkid2hlbiBjcmVhdGluZyBmaWxlcywgcHJlcGVuZCA8c3RyaW5nPiIsCisJCQlvcHRpb25fcGFyc2VfcHJlZml4KSwKKwkJT1BUX0NBTExCQUNLKDAsICJzdGFnZSIsIE5VTEwsIE5VTEwsCisJCQkiY29weSBvdXQgdGhlIGZpbGVzIGZyb20gbmFtZWQgc3RhZ2UiLAorCQkJb3B0aW9uX3BhcnNlX3N0YWdlKSwKKwkJT1BUX0VORCgpCisJfTsKIAogCWdpdF9jb25maWcoZ2l0X2RlZmF1bHRfY29uZmlnLCBOVUxMKTsKIAlzdGF0ZS5iYXNlX2RpciA9ICIiOwpAQCAtMTc0LDcyICsyNDksMTEgQEAKIAkJZGllKCJpbnZhbGlkIGNhY2hlIik7CiAJfQogCi0JZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykgewotCQljb25zdCBjaGFyICphcmcgPSBhcmd2W2ldOwotCi0JCWlmICghc3RyY21wKGFyZywgIi0tIikpIHsKLQkJCWkrKzsKLQkJCWJyZWFrOwotCQl9Ci0JCWlmICghc3RyY21wKGFyZywgIi1hIikgfHwgIXN0cmNtcChhcmcsICItLWFsbCIpKSB7Ci0JCQlhbGwgPSAxOwotCQkJY29udGludWU7Ci0JCX0KLQkJaWYgKCFzdHJjbXAoYXJnLCAiLWYiKSB8fCAhc3RyY21wKGFyZywgIi0tZm9yY2UiKSkgewotCQkJc3RhdGUuZm9yY2UgPSAxOwotCQkJY29udGludWU7Ci0JCX0KLQkJaWYgKCFzdHJjbXAoYXJnLCAiLXEiKSB8fCAhc3RyY21wKGFyZywgIi0tcXVpZXQiKSkgewotCQkJc3RhdGUucXVpZXQgPSAxOwotCQkJY29udGludWU7Ci0JCX0KLQkJaWYgKCFzdHJjbXAoYXJnLCAiLW4iKSB8fCAhc3RyY21wKGFyZywgIi0tbm8tY3JlYXRlIikpIHsKLQkJCXN0YXRlLm5vdF9uZXcgPSAxOwotCQkJY29udGludWU7Ci0JCX0KLQkJaWYgKCFzdHJjbXAoYXJnLCAiLXUiKSB8fCAhc3RyY21wKGFyZywgIi0taW5kZXgiKSkgewotCQkJc3RhdGUucmVmcmVzaF9jYWNoZSA9IDE7Ci0JCQlpZiAobmV3ZmQgPCAwKQotCQkJCW5ld2ZkID0gaG9sZF9sb2NrZWRfaW5kZXgoJmxvY2tfZmlsZSwgMSk7Ci0JCQljb250aW51ZTsKLQkJfQotCQlpZiAoIXN0cmNtcChhcmcsICIteiIpKSB7Ci0JCQlsaW5lX3Rlcm1pbmF0aW9uID0gMDsKLQkJCWNvbnRpbnVlOwotCQl9Ci0JCWlmICghc3RyY21wKGFyZywgIi0tc3RkaW4iKSkgewotCQkJaWYgKGkgIT0gYXJnYyAtIDEpCi0JCQkJZGllKCItLXN0ZGluIG11c3QgYmUgYXQgdGhlIGVuZCIpOwotCQkJcmVhZF9mcm9tX3N0ZGluID0gMTsKLQkJCWkrKzsgLyogZG8gbm90IGNvbnNpZGVyIGFyZyBhcyBhIGZpbGUgbmFtZSAqLwotCQkJYnJlYWs7Ci0JCX0KLQkJaWYgKCFzdHJjbXAoYXJnLCAiLS10ZW1wIikpIHsKLQkJCXRvX3RlbXBmaWxlID0gMTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0JCWlmICghcHJlZml4Y21wKGFyZywgIi0tcHJlZml4PSIpKSB7Ci0JCQlzdGF0ZS5iYXNlX2RpciA9IGFyZys5OwotCQkJc3RhdGUuYmFzZV9kaXJfbGVuID0gc3RybGVuKHN0YXRlLmJhc2VfZGlyKTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0JCWlmICghcHJlZml4Y21wKGFyZywgIi0tc3RhZ2U9IikpIHsKLQkJCWlmICghc3RyY21wKGFyZyArIDgsICJhbGwiKSkgewotCQkJCXRvX3RlbXBmaWxlID0gMTsKLQkJCQljaGVja291dF9zdGFnZSA9IENIRUNLT1VUX0FMTDsKLQkJCX0gZWxzZSB7Ci0JCQkJaW50IGNoID0gYXJnWzhdOwotCQkJCWlmICgnMScgPD0gY2ggJiYgY2ggPD0gJzMnKQotCQkJCQljaGVja291dF9zdGFnZSA9IGFyZ1s4XSAtICcwJzsKLQkJCQllbHNlCi0JCQkJCWRpZSgic3RhZ2Ugc2hvdWxkIGJlIGJldHdlZW4gMSBhbmQgMyBvciBhbGwiKTsKLQkJCX0KLQkJCWNvbnRpbnVlOwotCQl9Ci0JCWlmIChhcmdbMF0gPT0gJy0nKQotCQkJdXNhZ2UoY2hlY2tvdXRfY2FjaGVfdXNhZ2UpOwotCQlicmVhazsKLQl9CisJYXJnYyA9IHBhcnNlX29wdGlvbnMoYXJnYywgYXJndiwgYnVpbHRpbl9jaGVja291dF9pbmRleF9vcHRpb25zLAorCQkJYnVpbHRpbl9jaGVja291dF9pbmRleF91c2FnZSwgMCk7CisJc3RhdGUuZm9yY2UgPSBmb3JjZTsKKwlzdGF0ZS5xdWlldCA9IHF1aWV0OworCXN0YXRlLm5vdF9uZXcgPSBub3RfbmV3OwogCiAJaWYgKHN0YXRlLmJhc2VfZGlyX2xlbiB8fCB0b190ZW1wZmlsZSkgewogCQkvKiB3aGVuIC0tcHJlZml4IGlzIHNwZWNpZmllZCB3ZSBkbyBub3QKQEAgLTI1Myw3ICsyNjcsNyBAQAogCX0KIAogCS8qIENoZWNrIG91dCBuYW1lZCBmaWxlcyBmaXJzdCAqLwotCWZvciAoIDsgaSA8IGFyZ2M7IGkrKykgeworCWZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKIAkJY29uc3QgY2hhciAqYXJnID0gYXJndltpXTsKIAkJY29uc3QgY2hhciAqcDsKIApAQCAtMjY4LDEzICsyODIsMTEgQEAKIAl9CiAKIAlpZiAocmVhZF9mcm9tX3N0ZGluKSB7Ci0JCXN0cnVjdCBzdHJidWYgYnVmLCBuYnVmOworCQlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklULCBuYnVmID0gU1RSQlVGX0lOSVQ7CiAKIAkJaWYgKGFsbCkKIAkJCWRpZSgiZ2l0IGNoZWNrb3V0LWluZGV4OiBkb24ndCBtaXggJy0tYWxsJyBhbmQgJy0tc3RkaW4nIik7CiAKLQkJc3RyYnVmX2luaXQoJmJ1ZiwgMCk7Ci0JCXN0cmJ1Zl9pbml0KCZuYnVmLCAwKTsKIAkJd2hpbGUgKHN0cmJ1Zl9nZXRsaW5lKCZidWYsIHN0ZGluLCBsaW5lX3Rlcm1pbmF0aW9uKSAhPSBFT0YpIHsKIAkJCWNvbnN0IGNoYXIgKnA7CiAJCQlpZiAobGluZV90ZXJtaW5hdGlvbiAmJiBidWYuYnVmWzBdID09ICciJykgewpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1jaGVja291dC5jIGIvYnVpbHRpbi1jaGVja291dC5jCmluZGV4IGMxMDdmZDYuLmI1ZGQ5YzAgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tY2hlY2tvdXQuYworKysgYi9idWlsdGluLWNoZWNrb3V0LmMKQEAgLTEzLDYgKzEzLDkgQEAKICNpbmNsdWRlICJkaWZmLmgiCiAjaW5jbHVkZSAicmV2aXNpb24uaCIKICNpbmNsdWRlICJyZW1vdGUuaCIKKyNpbmNsdWRlICJibG9iLmgiCisjaW5jbHVkZSAieGRpZmYtaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAibGwtbWVyZ2UuaCIKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBjaGVja291dF91c2FnZVtdID0gewogCSJnaXQgY2hlY2tvdXQgW29wdGlvbnNdIDxicmFuY2g+IiwKQEAgLTIwLDYgKzIzLDE4IEBACiAJTlVMTCwKIH07CiAKK3N0cnVjdCBjaGVja291dF9vcHRzIHsKKwlpbnQgcXVpZXQ7CisJaW50IG1lcmdlOworCWludCBmb3JjZTsKKwlpbnQgd3JpdGVvdXRfc3RhZ2U7CisJaW50IHdyaXRlb3V0X2Vycm9yOworCisJY29uc3QgY2hhciAqbmV3X2JyYW5jaDsKKwlpbnQgbmV3X2JyYW5jaF9sb2c7CisJZW51bSBicmFuY2hfdHJhY2sgdHJhY2s7Cit9OworCiBzdGF0aWMgaW50IHBvc3RfY2hlY2tvdXRfaG9vayhzdHJ1Y3QgY29tbWl0ICpvbGQsIHN0cnVjdCBjb21taXQgKm5ldywKIAkJCSAgICAgIGludCBjaGFuZ2VkKQogewpAQCAtODQsOCArOTksMTIxIEBACiAJcmV0dXJuIHBvczsKIH0KIAorc3RhdGljIGludCBjaGVja19zdGFnZShpbnQgc3RhZ2UsIHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIGludCBwb3MpCit7CisJd2hpbGUgKHBvcyA8IGFjdGl2ZV9uciAmJgorCSAgICAgICAhc3RyY21wKGFjdGl2ZV9jYWNoZVtwb3NdLT5uYW1lLCBjZS0+bmFtZSkpIHsKKwkJaWYgKGNlX3N0YWdlKGFjdGl2ZV9jYWNoZVtwb3NdKSA9PSBzdGFnZSkKKwkJCXJldHVybiAwOworCQlwb3MrKzsKKwl9CisJcmV0dXJuIGVycm9yKCJwYXRoICclcycgZG9lcyBub3QgaGF2ZSAlcyB2ZXJzaW9uIiwKKwkJICAgICBjZS0+bmFtZSwKKwkJICAgICAoc3RhZ2UgPT0gMikgPyAib3VyIiA6ICJ0aGVpciIpOworfQogCi1zdGF0aWMgaW50IGNoZWNrb3V0X3BhdGhzKHN0cnVjdCB0cmVlICpzb3VyY2VfdHJlZSwgY29uc3QgY2hhciAqKnBhdGhzcGVjKQorc3RhdGljIGludCBjaGVja19hbGxfc3RhZ2VzKHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIGludCBwb3MpCit7CisJaWYgKGNlX3N0YWdlKGNlKSAhPSAxIHx8CisJICAgIGFjdGl2ZV9uciA8PSBwb3MgKyAyIHx8CisJICAgIHN0cmNtcChhY3RpdmVfY2FjaGVbcG9zKzFdLT5uYW1lLCBjZS0+bmFtZSkgfHwKKwkgICAgY2Vfc3RhZ2UoYWN0aXZlX2NhY2hlW3BvcysxXSkgIT0gMiB8fAorCSAgICBzdHJjbXAoYWN0aXZlX2NhY2hlW3BvcysyXS0+bmFtZSwgY2UtPm5hbWUpIHx8CisJICAgIGNlX3N0YWdlKGFjdGl2ZV9jYWNoZVtwb3MrMl0pICE9IDMpCisJCXJldHVybiBlcnJvcigicGF0aCAnJXMnIGRvZXMgbm90IGhhdmUgYWxsIHRocmVlIHZlcnNpb25zIiwKKwkJCSAgICAgY2UtPm5hbWUpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGNoZWNrb3V0X3N0YWdlKGludCBzdGFnZSwgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgaW50IHBvcywKKwkJCSAgc3RydWN0IGNoZWNrb3V0ICpzdGF0ZSkKK3sKKwl3aGlsZSAocG9zIDwgYWN0aXZlX25yICYmCisJICAgICAgICFzdHJjbXAoYWN0aXZlX2NhY2hlW3Bvc10tPm5hbWUsIGNlLT5uYW1lKSkgeworCQlpZiAoY2Vfc3RhZ2UoYWN0aXZlX2NhY2hlW3Bvc10pID09IHN0YWdlKQorCQkJcmV0dXJuIGNoZWNrb3V0X2VudHJ5KGFjdGl2ZV9jYWNoZVtwb3NdLCBzdGF0ZSwgTlVMTCk7CisJCXBvcysrOworCX0KKwlyZXR1cm4gZXJyb3IoInBhdGggJyVzJyBkb2VzIG5vdCBoYXZlICVzIHZlcnNpb24iLAorCQkgICAgIGNlLT5uYW1lLAorCQkgICAgIChzdGFnZSA9PSAyKSA/ICJvdXIiIDogInRoZWlyIik7Cit9CisKKy8qIE5FRURTV09SSzogc2hhcmUgd2l0aCBtZXJnZS1yZWN1cnNpdmUgKi8KK3N0YXRpYyB2b2lkIGZpbGxfbW0oY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgbW1maWxlX3QgKm1tKQoreworCXVuc2lnbmVkIGxvbmcgc2l6ZTsKKwllbnVtIG9iamVjdF90eXBlIHR5cGU7CisKKwlpZiAoIWhhc2hjbXAoc2hhMSwgbnVsbF9zaGExKSkgeworCQltbS0+cHRyID0geHN0cmR1cCgiIik7CisJCW1tLT5zaXplID0gMDsKKwkJcmV0dXJuOworCX0KKworCW1tLT5wdHIgPSByZWFkX3NoYTFfZmlsZShzaGExLCAmdHlwZSwgJnNpemUpOworCWlmICghbW0tPnB0ciB8fCB0eXBlICE9IE9CSl9CTE9CKQorCQlkaWUoInVuYWJsZSB0byByZWFkIGJsb2Igb2JqZWN0ICVzIiwgc2hhMV90b19oZXgoc2hhMSkpOworCW1tLT5zaXplID0gc2l6ZTsKK30KKworc3RhdGljIGludCBjaGVja291dF9tZXJnZWQoaW50IHBvcywgc3RydWN0IGNoZWNrb3V0ICpzdGF0ZSkKK3sKKwlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW3Bvc107CisJY29uc3QgY2hhciAqcGF0aCA9IGNlLT5uYW1lOworCW1tZmlsZV90IGFuY2VzdG9yLCBvdXJzLCB0aGVpcnM7CisJaW50IHN0YXR1czsKKwl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOworCW1tYnVmZmVyX3QgcmVzdWx0X2J1ZjsKKworCWlmIChjZV9zdGFnZShjZSkgIT0gMSB8fAorCSAgICBhY3RpdmVfbnIgPD0gcG9zICsgMiB8fAorCSAgICBzdHJjbXAoYWN0aXZlX2NhY2hlW3BvcysxXS0+bmFtZSwgcGF0aCkgfHwKKwkgICAgY2Vfc3RhZ2UoYWN0aXZlX2NhY2hlW3BvcysxXSkgIT0gMiB8fAorCSAgICBzdHJjbXAoYWN0aXZlX2NhY2hlW3BvcysyXS0+bmFtZSwgcGF0aCkgfHwKKwkgICAgY2Vfc3RhZ2UoYWN0aXZlX2NhY2hlW3BvcysyXSkgIT0gMykKKwkJcmV0dXJuIGVycm9yKCJwYXRoICclcycgZG9lcyBub3QgaGF2ZSBhbGwgMyB2ZXJzaW9ucyIsIHBhdGgpOworCisJZmlsbF9tbShhY3RpdmVfY2FjaGVbcG9zXS0+c2hhMSwgJmFuY2VzdG9yKTsKKwlmaWxsX21tKGFjdGl2ZV9jYWNoZVtwb3MrMV0tPnNoYTEsICZvdXJzKTsKKwlmaWxsX21tKGFjdGl2ZV9jYWNoZVtwb3MrMl0tPnNoYTEsICZ0aGVpcnMpOworCisJc3RhdHVzID0gbGxfbWVyZ2UoJnJlc3VsdF9idWYsIHBhdGgsICZhbmNlc3RvciwKKwkJCSAgJm91cnMsICJvdXJzIiwgJnRoZWlycywgInRoZWlycyIsIDEpOworCWZyZWUoYW5jZXN0b3IucHRyKTsKKwlmcmVlKG91cnMucHRyKTsKKwlmcmVlKHRoZWlycy5wdHIpOworCWlmIChzdGF0dXMgPCAwIHx8ICFyZXN1bHRfYnVmLnB0cikgeworCQlmcmVlKHJlc3VsdF9idWYucHRyKTsKKwkJcmV0dXJuIGVycm9yKCJwYXRoICclcyc6IGNhbm5vdCBtZXJnZSIsIHBhdGgpOworCX0KKworCS8qCisJICogTkVFRFNXT1JLOgorCSAqIFRoZXJlIGlzIGFic29sdXRlbHkgbm8gcmVhc29uIHRvIHdyaXRlIHRoaXMgYXMgYSBibG9iIG9iamVjdAorCSAqIGFuZCBjcmVhdGUgYSBwaG9uZXkgY2FjaGUgZW50cnkganVzdCB0byBsZWFrLiAgVGhpcyBoYWNrIGlzCisJICogcHJpbWFyaWx5IHRvIGdldCB0byB0aGUgd3JpdGVfZW50cnkoKSBtYWNoaW5lcnkgdGhhdCBtYXNzYWdlcworCSAqIHRoZSBjb250ZW50cyB0byB3b3JrLXRyZWUgZm9ybWF0IGFuZCB3cml0ZXMgb3V0IHdoaWNoIG9ubHkKKwkgKiBhbGxvd3MgaXQgZm9yIGEgY2FjaGUgZW50cnkuICBUaGUgY29kZSBpbiB3cml0ZV9lbnRyeSgpIG5lZWRzCisJICogdG8gYmUgcmVmYWN0b3JlZCB0byBhbGxvdyB1cyB0byBmZWVkIGEgPGJ1ZmZlciwgc2l6ZSwgbW9kZT4KKwkgKiBpbnN0ZWFkIG9mIGEgY2FjaGUgZW50cnkuICBTdWNoIGEgcmVmYWN0b3Jpbmcgd291bGQgaGVscAorCSAqIG1lcmdlX3JlY3Vyc2l2ZSBhcyB3ZWxsIChpdCBhbHNvIHdyaXRlcyB0aGUgbWVyZ2UgcmVzdWx0IHRvIHRoZQorCSAqIG9iamVjdCBkYXRhYmFzZSBldmVuIHdoZW4gaXQgbWF5IGNvbnRhaW4gY29uZmxpY3RzKS4KKwkgKi8KKwlpZiAod3JpdGVfc2hhMV9maWxlKHJlc3VsdF9idWYucHRyLCByZXN1bHRfYnVmLnNpemUsCisJCQkgICAgYmxvYl90eXBlLCBzaGExKSkKKwkJZGllKCJVbmFibGUgdG8gYWRkIG1lcmdlIHJlc3VsdCBmb3IgJyVzJyIsIHBhdGgpOworCWNlID0gbWFrZV9jYWNoZV9lbnRyeShjcmVhdGVfY2VfbW9kZShhY3RpdmVfY2FjaGVbcG9zKzFdLT5jZV9tb2RlKSwKKwkJCSAgICAgIHNoYTEsCisJCQkgICAgICBwYXRoLCAyLCAwKTsKKwlpZiAoIWNlKQorCQlkaWUoIm1ha2VfY2FjaGVfZW50cnkgZmFpbGVkIGZvciBwYXRoICclcyciLCBwYXRoKTsKKwlzdGF0dXMgPSBjaGVja291dF9lbnRyeShjZSwgc3RhdGUsIE5VTEwpOworCXJldHVybiBzdGF0dXM7Cit9CisKK3N0YXRpYyBpbnQgY2hlY2tvdXRfcGF0aHMoc3RydWN0IHRyZWUgKnNvdXJjZV90cmVlLCBjb25zdCBjaGFyICoqcGF0aHNwZWMsCisJCQkgIHN0cnVjdCBjaGVja291dF9vcHRzICpvcHRzKQogewogCWludCBwb3M7CiAJc3RydWN0IGNoZWNrb3V0IHN0YXRlOwpAQCAtOTQsMTIgKzIyMiwxNCBAQAogCWludCBmbGFnOwogCXN0cnVjdCBjb21taXQgKmhlYWQ7CiAJaW50IGVycnMgPSAwOwotCisJaW50IHN0YWdlID0gb3B0cy0+d3JpdGVvdXRfc3RhZ2U7CisJaW50IG1lcmdlID0gb3B0cy0+bWVyZ2U7CiAJaW50IG5ld2ZkOwogCXN0cnVjdCBsb2NrX2ZpbGUgKmxvY2tfZmlsZSA9IHhjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBsb2NrX2ZpbGUpKTsKIAogCW5ld2ZkID0gaG9sZF9sb2NrZWRfaW5kZXgobG9ja19maWxlLCAxKTsKLQlyZWFkX2NhY2hlKCk7CisJaWYgKHJlYWRfY2FjaGUoKSA8IDApCisJCXJldHVybiBlcnJvcigiY29ycnVwdCBpbmRleCBmaWxlIik7CiAKIAlpZiAoc291cmNlX3RyZWUpCiAJCXJlYWRfdHJlZV9zb21lKHNvdXJjZV90cmVlLCBwYXRoc3BlYyk7CkBAIC0xMjIsOCArMjUyLDE2IEBACiAJCWlmIChwYXRoc3BlY19tYXRjaChwYXRoc3BlYywgTlVMTCwgY2UtPm5hbWUsIDApKSB7CiAJCQlpZiAoIWNlX3N0YWdlKGNlKSkKIAkJCQljb250aW51ZTsKLQkJCWVycnMgPSAxOwotCQkJZXJyb3IoInBhdGggJyVzJyBpcyB1bm1lcmdlZCIsIGNlLT5uYW1lKTsKKwkJCWlmIChvcHRzLT5mb3JjZSkgeworCQkJCXdhcm5pbmcoInBhdGggJyVzJyBpcyB1bm1lcmdlZCIsIGNlLT5uYW1lKTsKKwkJCX0gZWxzZSBpZiAoc3RhZ2UpIHsKKwkJCQllcnJzIHw9IGNoZWNrX3N0YWdlKHN0YWdlLCBjZSwgcG9zKTsKKwkJCX0gZWxzZSBpZiAob3B0cy0+bWVyZ2UpIHsKKwkJCQllcnJzIHw9IGNoZWNrX2FsbF9zdGFnZXMoY2UsIHBvcyk7CisJCQl9IGVsc2UgeworCQkJCWVycnMgPSAxOworCQkJCWVycm9yKCJwYXRoICclcycgaXMgdW5tZXJnZWQiLCBjZS0+bmFtZSk7CisJCQl9CiAJCQlwb3MgPSBza2lwX3NhbWVfbmFtZShjZSwgcG9zKSAtIDE7CiAJCX0KIAl9CkBAIC0xNDEsNiArMjc5LDEwIEBACiAJCQkJZXJycyB8PSBjaGVja291dF9lbnRyeShjZSwgJnN0YXRlLCBOVUxMKTsKIAkJCQljb250aW51ZTsKIAkJCX0KKwkJCWlmIChzdGFnZSkKKwkJCQllcnJzIHw9IGNoZWNrb3V0X3N0YWdlKHN0YWdlLCBjZSwgcG9zLCAmc3RhdGUpOworCQkJZWxzZSBpZiAobWVyZ2UpCisJCQkJZXJycyB8PSBjaGVja291dF9tZXJnZWQocG9zLCAmc3RhdGUpOwogCQkJcG9zID0gc2tpcF9zYW1lX25hbWUoY2UsIHBvcykgLSAxOwogCQl9CiAJfQpAQCAtMTY5LDggKzMxMSw3IEBACiAKIHN0YXRpYyB2b2lkIGRlc2NyaWJlX2RldGFjaGVkX2hlYWQoY2hhciAqbXNnLCBzdHJ1Y3QgY29tbWl0ICpjb21taXQpCiB7Ci0Jc3RydWN0IHN0cmJ1ZiBzYjsKLQlzdHJidWZfaW5pdCgmc2IsIDApOworCXN0cnVjdCBzdHJidWYgc2IgPSBTVFJCVUZfSU5JVDsKIAlwYXJzZV9jb21taXQoY29tbWl0KTsKIAlwcmV0dHlfcHJpbnRfY29tbWl0KENNSVRfRk1UX09ORUxJTkUsIGNvbW1pdCwgJnNiLCAwLCBOVUxMLCBOVUxMLCAwLCAwKTsKIAlmcHJpbnRmKHN0ZGVyciwgIiVzICVzLi4uICVzXG4iLCBtc2csCkBAIC0xNzgsMTcgKzMxOSw2IEBACiAJc3RyYnVmX3JlbGVhc2UoJnNiKTsKIH0KIAotc3RydWN0IGNoZWNrb3V0X29wdHMgewotCWludCBxdWlldDsKLQlpbnQgbWVyZ2U7Ci0JaW50IGZvcmNlOwotCWludCB3cml0ZW91dF9lcnJvcjsKLQotCWNoYXIgKm5ld19icmFuY2g7Ci0JaW50IG5ld19icmFuY2hfbG9nOwotCWVudW0gYnJhbmNoX3RyYWNrIHRyYWNrOwotfTsKLQogc3RhdGljIGludCByZXNldF90cmVlKHN0cnVjdCB0cmVlICp0cmVlLCBzdHJ1Y3QgY2hlY2tvdXRfb3B0cyAqbywgaW50IHdvcmt0cmVlKQogewogCXN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyBvcHRzOwpAQCAtMjMwLDggKzM2MCw3IEBACiAKIHN0YXRpYyB2b2lkIHNldHVwX2JyYW5jaF9wYXRoKHN0cnVjdCBicmFuY2hfaW5mbyAqYnJhbmNoKQogewotCXN0cnVjdCBzdHJidWYgYnVmOwotCXN0cmJ1Zl9pbml0KCZidWYsIDApOworCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAJc3RyYnVmX2FkZHN0cigmYnVmLCAicmVmcy9oZWFkcy8iKTsKIAlzdHJidWZfYWRkc3RyKCZidWYsIGJyYW5jaC0+bmFtZSk7CiAJYnJhbmNoLT5wYXRoID0gc3RyYnVmX2RldGFjaCgmYnVmLCBOVUxMKTsKQEAgLTI0Myw3ICszNzIsOSBAQAogCWludCByZXQ7CiAJc3RydWN0IGxvY2tfZmlsZSAqbG9ja19maWxlID0geGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IGxvY2tfZmlsZSkpOwogCWludCBuZXdmZCA9IGhvbGRfbG9ja2VkX2luZGV4KGxvY2tfZmlsZSwgMSk7Ci0JcmVhZF9jYWNoZSgpOworCisJaWYgKHJlYWRfY2FjaGUoKSA8IDApCisJCXJldHVybiBlcnJvcigiY29ycnVwdCBpbmRleCBmaWxlIik7CiAKIAlpZiAob3B0cy0+Zm9yY2UpIHsKIAkJcmV0ID0gcmVzZXRfdHJlZShuZXctPmNvbW1pdC0+dHJlZSwgb3B0cywgMSk7CkBAIC0yOTIsNiArNDIzLDcgQEAKIAkJCSAqLwogCQkJc3RydWN0IHRyZWUgKnJlc3VsdDsKIAkJCXN0cnVjdCB0cmVlICp3b3JrOworCQkJc3RydWN0IG1lcmdlX29wdGlvbnMgbzsKIAkJCWlmICghb3B0cy0+bWVyZ2UpCiAJCQkJcmV0dXJuIDE7CiAJCQlwYXJzZV9jb21taXQob2xkLT5jb21taXQpOwpAQCAtMzEwLDEzICs0NDIsMTcgQEAKIAkJCSAqLwogCiAJCQlhZGRfZmlsZXNfdG9fY2FjaGUoTlVMTCwgTlVMTCwgMCk7Ci0JCQl3b3JrID0gd3JpdGVfdHJlZV9mcm9tX21lbW9yeSgpOworCQkJaW5pdF9tZXJnZV9vcHRpb25zKCZvKTsKKwkJCW8udmVyYm9zaXR5ID0gMDsKKwkJCXdvcmsgPSB3cml0ZV90cmVlX2Zyb21fbWVtb3J5KCZvKTsKIAogCQkJcmV0ID0gcmVzZXRfdHJlZShuZXctPmNvbW1pdC0+dHJlZSwgb3B0cywgMSk7CiAJCQlpZiAocmV0KQogCQkJCXJldHVybiByZXQ7Ci0JCQltZXJnZV90cmVlcyhuZXctPmNvbW1pdC0+dHJlZSwgd29yaywgb2xkLT5jb21taXQtPnRyZWUsCi0JCQkJICAgIG5ldy0+bmFtZSwgImxvY2FsIiwgJnJlc3VsdCk7CisJCQlvLmJyYW5jaDEgPSBuZXctPm5hbWU7CisJCQlvLmJyYW5jaDIgPSAibG9jYWwiOworCQkJbWVyZ2VfdHJlZXMoJm8sIG5ldy0+Y29tbWl0LT50cmVlLCB3b3JrLAorCQkJCW9sZC0+Y29tbWl0LT50cmVlLCAmcmVzdWx0KTsKIAkJCXJldCA9IHJlc2V0X3RyZWUobmV3LT5jb21taXQtPnRyZWUsIG9wdHMsIDApOwogCQkJaWYgKHJldCkKIAkJCQlyZXR1cm4gcmV0OwpAQCAtMzQ4LDcgKzQ4NCw3IEBACiAJCQkJICAgc3RydWN0IGJyYW5jaF9pbmZvICpvbGQsCiAJCQkJICAgc3RydWN0IGJyYW5jaF9pbmZvICpuZXcpCiB7Ci0Jc3RydWN0IHN0cmJ1ZiBtc2c7CisJc3RydWN0IHN0cmJ1ZiBtc2cgPSBTVFJCVUZfSU5JVDsKIAljb25zdCBjaGFyICpvbGRfZGVzYzsKIAlpZiAob3B0cy0+bmV3X2JyYW5jaCkgewogCQljcmVhdGVfYnJhbmNoKG9sZC0+bmFtZSwgb3B0cy0+bmV3X2JyYW5jaCwgbmV3LT5uYW1lLCAwLApAQCAtMzU3LDcgKzQ5Myw2IEBACiAJCXNldHVwX2JyYW5jaF9wYXRoKG5ldyk7CiAJfQogCi0Jc3RyYnVmX2luaXQoJm1zZywgMCk7CiAJb2xkX2Rlc2MgPSBvbGQtPm5hbWU7CiAJaWYgKCFvbGRfZGVzYyAmJiBvbGQtPmNvbW1pdCkKIAkJb2xkX2Rlc2MgPSBzaGExX3RvX2hleChvbGQtPmNvbW1pdC0+b2JqZWN0LnNoYTEpOwpAQCAtNDM5LDYgKzU3NCwxMSBAQAogCXJldHVybiByZXQgfHwgb3B0cy0+d3JpdGVvdXRfZXJyb3I7CiB9CiAKK3N0YXRpYyBpbnQgZ2l0X2NoZWNrb3V0X2NvbmZpZyhjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlLCB2b2lkICpjYikKK3sKKwlyZXR1cm4gZ2l0X3htZXJnZV9jb25maWcodmFyLCB2YWx1ZSwgY2IpOworfQorCiBpbnQgY21kX2NoZWNrb3V0KGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQogewogCXN0cnVjdCBjaGVja291dF9vcHRzIG9wdHM7CkBAIC00NDYsMTQgKzU4NiwyMSBAQAogCWNvbnN0IGNoYXIgKmFyZzsKIAlzdHJ1Y3QgYnJhbmNoX2luZm8gbmV3OwogCXN0cnVjdCB0cmVlICpzb3VyY2VfdHJlZSA9IE5VTEw7CisJY2hhciAqY29uZmxpY3Rfc3R5bGUgPSBOVUxMOwogCXN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0gewogCQlPUFRfX1FVSUVUKCZvcHRzLnF1aWV0KSwKIAkJT1BUX1NUUklORygnYicsIE5VTEwsICZvcHRzLm5ld19icmFuY2gsICJuZXcgYnJhbmNoIiwgImJyYW5jaCIpLAogCQlPUFRfQk9PTEVBTignbCcsIE5VTEwsICZvcHRzLm5ld19icmFuY2hfbG9nLCAibG9nIGZvciBuZXcgYnJhbmNoIiksCiAJCU9QVF9TRVRfSU5UKCd0JywgInRyYWNrIiwgICZvcHRzLnRyYWNrLCAidHJhY2siLAogCQkJQlJBTkNIX1RSQUNLX0VYUExJQ0lUKSwKKwkJT1BUX1NFVF9JTlQoJzInLCAib3VycyIsICZvcHRzLndyaXRlb3V0X3N0YWdlLCAic3RhZ2UiLAorCQkJICAgIDIpLAorCQlPUFRfU0VUX0lOVCgnMycsICJ0aGVpcnMiLCAmb3B0cy53cml0ZW91dF9zdGFnZSwgInN0YWdlIiwKKwkJCSAgICAzKSwKIAkJT1BUX0JPT0xFQU4oJ2YnLCBOVUxMLCAmb3B0cy5mb3JjZSwgImZvcmNlIiksCi0JCU9QVF9CT09MRUFOKCdtJywgTlVMTCwgJm9wdHMubWVyZ2UsICJtZXJnZSIpLAorCQlPUFRfQk9PTEVBTignbScsICJtZXJnZSIsICZvcHRzLm1lcmdlLCAibWVyZ2UiKSwKKwkJT1BUX1NUUklORygwLCAiY29uZmxpY3QiLCAmY29uZmxpY3Rfc3R5bGUsICJzdHlsZSIsCisJCQkgICAiY29uZmxpY3Qgc3R5bGUgKG1lcmdlIG9yIGRpZmYzKSIpLAogCQlPUFRfRU5EKCksCiAJfTsKIAlpbnQgaGFzX2Rhc2hfZGFzaDsKQEAgLTQ2MSwxNSArNjA4LDM0IEBACiAJbWVtc2V0KCZvcHRzLCAwLCBzaXplb2Yob3B0cykpOwogCW1lbXNldCgmbmV3LCAwLCBzaXplb2YobmV3KSk7CiAKLQlnaXRfY29uZmlnKGdpdF9kZWZhdWx0X2NvbmZpZywgTlVMTCk7CisJZ2l0X2NvbmZpZyhnaXRfY2hlY2tvdXRfY29uZmlnLCBOVUxMKTsKIAotCW9wdHMudHJhY2sgPSBnaXRfYnJhbmNoX3RyYWNrOworCW9wdHMudHJhY2sgPSBCUkFOQ0hfVFJBQ0tfVU5TUEVDSUZJRUQ7CiAKIAlhcmdjID0gcGFyc2Vfb3B0aW9ucyhhcmdjLCBhcmd2LCBvcHRpb25zLCBjaGVja291dF91c2FnZSwKIAkJCSAgICAgUEFSU0VfT1BUX0tFRVBfREFTSERBU0gpOwogCi0JaWYgKCFvcHRzLm5ld19icmFuY2ggJiYgKG9wdHMudHJhY2sgIT0gZ2l0X2JyYW5jaF90cmFjaykpCi0JCWRpZSgiZ2l0IGNoZWNrb3V0OiAtLXRyYWNrIGFuZCAtLW5vLXRyYWNrIHJlcXVpcmUgLWIiKTsKKwkvKiAtLXRyYWNrIHdpdGhvdXQgLWIgc2hvdWxkIERXSU0gKi8KKwlpZiAoMCA8IG9wdHMudHJhY2sgJiYgIW9wdHMubmV3X2JyYW5jaCkgeworCQljb25zdCBjaGFyICphcmd2MCA9IGFyZ3ZbMF07CisJCWlmICghYXJnYyB8fCAhc3RyY21wKGFyZ3YwLCAiLS0iKSkKKwkJCWRpZSAoIi0tdHJhY2sgbmVlZHMgYSBicmFuY2ggbmFtZSIpOworCQlpZiAoIXByZWZpeGNtcChhcmd2MCwgInJlZnMvIikpCisJCQlhcmd2MCArPSA1OworCQlpZiAoIXByZWZpeGNtcChhcmd2MCwgInJlbW90ZXMvIikpCisJCQlhcmd2MCArPSA4OworCQlhcmd2MCA9IHN0cmNocihhcmd2MCwgJy8nKTsKKwkJaWYgKCFhcmd2MCB8fCAhYXJndjBbMV0pCisJCQlkaWUgKCJNaXNzaW5nIGJyYW5jaCBuYW1lOyB0cnkgLWIiKTsKKwkJb3B0cy5uZXdfYnJhbmNoID0gYXJndjAgKyAxOworCX0KKworCWlmIChvcHRzLnRyYWNrID09IEJSQU5DSF9UUkFDS19VTlNQRUNJRklFRCkKKwkJb3B0cy50cmFjayA9IGdpdF9icmFuY2hfdHJhY2s7CisJaWYgKGNvbmZsaWN0X3N0eWxlKSB7CisJCW9wdHMubWVyZ2UgPSAxOyAvKiBpbXBsaWVkICovCisJCWdpdF94bWVyZ2VfY29uZmlnKCJtZXJnZS5jb25mbGljdHN0eWxlIiwgY29uZmxpY3Rfc3R5bGUsIE5VTEwpOworCX0KIAogCWlmIChvcHRzLmZvcmNlICYmIG9wdHMubWVyZ2UpCiAJCWRpZSgiZ2l0IGNoZWNrb3V0OiAtZiBhbmQgLW0gYXJlIGluY29tcGF0aWJsZSIpOwpAQCAtNTE1LDggKzY4MSw4IEBACiAJCWFyZ3YrKzsKIAkJYXJnYy0tOwogCisJCW5ldy5uYW1lID0gYXJnOwogCQlpZiAoKG5ldy5jb21taXQgPSBsb29rdXBfY29tbWl0X3JlZmVyZW5jZV9nZW50bHkocmV2LCAxKSkpIHsKLQkJCW5ldy5uYW1lID0gYXJnOwogCQkJc2V0dXBfYnJhbmNoX3BhdGgoJm5ldyk7CiAJCQlpZiAocmVzb2x2ZV9yZWYobmV3LnBhdGgsIHJldiwgMSwgTlVMTCkpCiAJCQkJbmV3LmNvbW1pdCA9IGxvb2t1cF9jb21taXRfcmVmZXJlbmNlKHJldik7CkBAIC01NTMsMjAgKzcxOSwyMiBAQAogCQkJZGllKCJpbnZhbGlkIHBhdGggc3BlY2lmaWNhdGlvbiIpOwogCiAJCS8qIENoZWNrb3V0IHBhdGhzICovCi0JCWlmIChvcHRzLm5ld19icmFuY2ggfHwgb3B0cy5mb3JjZSB8fCBvcHRzLm1lcmdlKSB7CisJCWlmIChvcHRzLm5ld19icmFuY2gpIHsKIAkJCWlmIChhcmdjID09IDEpIHsKLQkJCQlkaWUoImdpdCBjaGVja291dDogdXBkYXRpbmcgcGF0aHMgaXMgaW5jb21wYXRpYmxlIHdpdGggc3dpdGNoaW5nIGJyYW5jaGVzL2ZvcmNpbmdcbkRpZCB5b3UgaW50ZW5kIHRvIGNoZWNrb3V0ICclcycgd2hpY2ggY2FuIG5vdCBiZSByZXNvbHZlZCBhcyBjb21taXQ/IiwgYXJndlswXSk7CisJCQkJZGllKCJnaXQgY2hlY2tvdXQ6IHVwZGF0aW5nIHBhdGhzIGlzIGluY29tcGF0aWJsZSB3aXRoIHN3aXRjaGluZyBicmFuY2hlcy5cbkRpZCB5b3UgaW50ZW5kIHRvIGNoZWNrb3V0ICclcycgd2hpY2ggY2FuIG5vdCBiZSByZXNvbHZlZCBhcyBjb21taXQ/IiwgYXJndlswXSk7CiAJCQl9IGVsc2UgewotCQkJCWRpZSgiZ2l0IGNoZWNrb3V0OiB1cGRhdGluZyBwYXRocyBpcyBpbmNvbXBhdGlibGUgd2l0aCBzd2l0Y2hpbmcgYnJhbmNoZXMvZm9yY2luZyIpOworCQkJCWRpZSgiZ2l0IGNoZWNrb3V0OiB1cGRhdGluZyBwYXRocyBpcyBpbmNvbXBhdGlibGUgd2l0aCBzd2l0Y2hpbmcgYnJhbmNoZXMuIik7CiAJCQl9CiAJCX0KIAotCQlyZXR1cm4gY2hlY2tvdXRfcGF0aHMoc291cmNlX3RyZWUsIHBhdGhzcGVjKTsKKwkJaWYgKDEgPCAhIW9wdHMud3JpdGVvdXRfc3RhZ2UgKyAhIW9wdHMuZm9yY2UgKyAhIW9wdHMubWVyZ2UpCisJCQlkaWUoImdpdCBjaGVja291dDogLS1vdXJzLy0tdGhlaXJzLCAtLWZvcmNlIGFuZCAtLW1lcmdlIGFyZSBpbmNvbXBhdGlibGUgd2hlblxuY2hlY2tpbmcgb3V0IG9mIHRoZSBpbmRleC4iKTsKKworCQlyZXR1cm4gY2hlY2tvdXRfcGF0aHMoc291cmNlX3RyZWUsIHBhdGhzcGVjLCAmb3B0cyk7CiAJfQogCiAJaWYgKG9wdHMubmV3X2JyYW5jaCkgewotCQlzdHJ1Y3Qgc3RyYnVmIGJ1ZjsKLQkJc3RyYnVmX2luaXQoJmJ1ZiwgMCk7CisJCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAJCXN0cmJ1Zl9hZGRzdHIoJmJ1ZiwgInJlZnMvaGVhZHMvIik7CiAJCXN0cmJ1Zl9hZGRzdHIoJmJ1Ziwgb3B0cy5uZXdfYnJhbmNoKTsKIAkJaWYgKCFnZXRfc2hhMShidWYuYnVmLCByZXYpKQpAQCAtNTc5LDYgKzc0Nyw4IEBACiAJaWYgKG5ldy5uYW1lICYmICFuZXcuY29tbWl0KSB7CiAJCWRpZSgiQ2Fubm90IHN3aXRjaCBicmFuY2ggdG8gYSBub24tY29tbWl0LiIpOwogCX0KKwlpZiAob3B0cy53cml0ZW91dF9zdGFnZSkKKwkJZGllKCItLW91cnMvLS10aGVpcnMgaXMgaW5jb21wYXRpYmxlIHdpdGggc3dpdGNoaW5nIGJyYW5jaGVzLiIpOwogCiAJcmV0dXJuIHN3aXRjaF9icmFuY2hlcygmb3B0cywgJm5ldyk7CiB9CmRpZmYgLS1naXQgYS9idWlsdGluLWNsZWFuLmMgYi9idWlsdGluLWNsZWFuLmMKaW5kZXggNDhiZjI5Zi4uZjc4YzJmYiAxMDA2NDQKLS0tIGEvYnVpbHRpbi1jbGVhbi5jCisrKyBiL2J1aWx0aW4tY2xlYW4uYwpAQCAtMzEsMTEgKzMxLDExIEBACiAJaW50IGk7CiAJaW50IHNob3dfb25seSA9IDAsIHJlbW92ZV9kaXJlY3RvcmllcyA9IDAsIHF1aWV0ID0gMCwgaWdub3JlZCA9IDA7CiAJaW50IGlnbm9yZWRfb25seSA9IDAsIGJhc2VsZW4gPSAwLCBjb25maWdfc2V0ID0gMCwgZXJyb3JzID0gMDsKLQlzdHJ1Y3Qgc3RyYnVmIGRpcmVjdG9yeTsKKwlzdHJ1Y3Qgc3RyYnVmIGRpcmVjdG9yeSA9IFNUUkJVRl9JTklUOwogCXN0cnVjdCBkaXJfc3RydWN0IGRpcjsKIAljb25zdCBjaGFyICpwYXRoLCAqYmFzZTsKIAlzdGF0aWMgY29uc3QgY2hhciAqKnBhdGhzcGVjOwotCXN0cnVjdCBzdHJidWYgYnVmOworCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAJY29uc3QgY2hhciAqcW5hbWU7CiAJY2hhciAqc2VlbiA9IE5VTEw7CiAJc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7CkBAIC01OCw3ICs1OCw2IEBACiAKIAlhcmdjID0gcGFyc2Vfb3B0aW9ucyhhcmdjLCBhcmd2LCBvcHRpb25zLCBidWlsdGluX2NsZWFuX3VzYWdlLCAwKTsKIAotCXN0cmJ1Zl9pbml0KCZidWYsIDApOwogCW1lbXNldCgmZGlyLCAwLCBzaXplb2YoZGlyKSk7CiAJaWYgKGlnbm9yZWRfb25seSkKIAkJZGlyLnNob3dfaWdub3JlZCA9IDE7CkBAIC04OCw3ICs4Nyw2IEBACiAJaWYgKGJhc2VsZW4pCiAJCXBhdGggPSBiYXNlID0geG1lbWR1cHooKnBhdGhzcGVjLCBiYXNlbGVuKTsKIAlyZWFkX2RpcmVjdG9yeSgmZGlyLCBwYXRoLCBiYXNlLCBiYXNlbGVuLCBwYXRoc3BlYyk7Ci0Jc3RyYnVmX2luaXQoJmRpcmVjdG9yeSwgMCk7CiAKIAlpZiAocGF0aHNwZWMpCiAJCXNlZW4gPSB4bWFsbG9jKGFyZ2MgPiAwID8gYXJnYyA6IDEpOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1jbG9uZS5jIGIvYnVpbHRpbi1jbG9uZS5jCmluZGV4IDViNDBlMDcuLjJmZWFjOWMgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tY2xvbmUuYworKysgYi9idWlsdGluLWNsb25lLmMKQEAgLTM4LDkgKzM4LDExIEBACiBzdGF0aWMgY2hhciAqb3B0aW9uX3RlbXBsYXRlLCAqb3B0aW9uX3JlZmVyZW5jZSwgKm9wdGlvbl9kZXB0aDsKIHN0YXRpYyBjaGFyICpvcHRpb25fb3JpZ2luID0gTlVMTDsKIHN0YXRpYyBjaGFyICpvcHRpb25fdXBsb2FkX3BhY2sgPSAiZ2l0LXVwbG9hZC1wYWNrIjsKK3N0YXRpYyBpbnQgb3B0aW9uX3ZlcmJvc2U7CiAKIHN0YXRpYyBzdHJ1Y3Qgb3B0aW9uIGJ1aWx0aW5fY2xvbmVfb3B0aW9uc1tdID0gewogCU9QVF9fUVVJRVQoJm9wdGlvbl9xdWlldCksCisJT1BUX19WRVJCT1NFKCZvcHRpb25fdmVyYm9zZSksCiAJT1BUX0JPT0xFQU4oJ24nLCAibm8tY2hlY2tvdXQiLCAmb3B0aW9uX25vX2NoZWNrb3V0LAogCQkgICAgImRvbid0IGNyZWF0ZSBhIGNoZWNrb3V0IiksCiAJT1BUX0JPT0xFQU4oMCwgImJhcmUiLCAmb3B0aW9uX2JhcmUsICJjcmVhdGUgYSBiYXJlIHJlcG9zaXRvcnkiKSwKQEAgLTc3LDcgKzc5LDcgQEAKIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShzdWZmaXgpOyBpKyspIHsKIAkJY29uc3QgY2hhciAqcGF0aDsKIAkJcGF0aCA9IG1rcGF0aCgiJXMlcyIsIHJlcG8sIHN1ZmZpeFtpXSk7Ci0JCWlmICghc3RhdChwYXRoLCAmc3QpICYmIFNfSVNESVIoc3Quc3RfbW9kZSkpIHsKKwkJaWYgKGlzX2RpcmVjdG9yeShwYXRoKSkgewogCQkJKmlzX2J1bmRsZSA9IDA7CiAJCQlyZXR1cm4geHN0cmR1cChtYWtlX25vbnJlbGF0aXZlX3BhdGgocGF0aCkpOwogCQl9CkBAIC0xMzIsMjEgKzEzNCwxNCBAQAogCX0KIAogCWlmIChpc19iYXJlKSB7Ci0JCWNoYXIgKnJlc3VsdCA9IHhtYWxsb2MoZW5kIC0gc3RhcnQgKyA1KTsKLQkJc3ByaW50ZihyZXN1bHQsICIlLipzLmdpdCIsIChpbnQpKGVuZCAtIHN0YXJ0KSwgc3RhcnQpOwotCQlyZXR1cm4gcmVzdWx0OworCQlzdHJ1Y3Qgc3RyYnVmIHJlc3VsdCA9IFNUUkJVRl9JTklUOworCQlzdHJidWZfYWRkZigmcmVzdWx0LCAiJS4qcy5naXQiLCAoaW50KShlbmQgLSBzdGFydCksIHN0YXJ0KTsKKwkJcmV0dXJuIHN0cmJ1Zl9kZXRhY2goJnJlc3VsdCwgMCk7CiAJfQogCiAJcmV0dXJuIHhzdHJuZHVwKHN0YXJ0LCBlbmQgLSBzdGFydCk7CiB9CiAKLXN0YXRpYyBpbnQgaXNfZGlyZWN0b3J5KGNvbnN0IGNoYXIgKnBhdGgpCi17Ci0Jc3RydWN0IHN0YXQgYnVmOwotCi0JcmV0dXJuICFzdGF0KHBhdGgsICZidWYpICYmIFNfSVNESVIoYnVmLnN0X21vZGUpOwotfQotCiBzdGF0aWMgdm9pZCBzdHJpcF90cmFpbGluZ19zbGFzaGVzKGNoYXIgKmRpcikKIHsKIAljaGFyICplbmQgPSBkaXIgKyBzdHJsZW4oZGlyKTsKQEAgLTE4OCwzNiArMTgzLDM4IEBACiAJZnJlZShyZWZfZ2l0X2NvcHkpOwogfQogCi1zdGF0aWMgdm9pZCBjb3B5X29yX2xpbmtfZGlyZWN0b3J5KGNoYXIgKnNyYywgY2hhciAqZGVzdCkKK3N0YXRpYyB2b2lkIGNvcHlfb3JfbGlua19kaXJlY3Rvcnkoc3RydWN0IHN0cmJ1ZiAqc3JjLCBzdHJ1Y3Qgc3RyYnVmICpkZXN0KQogewogCXN0cnVjdCBkaXJlbnQgKmRlOwogCXN0cnVjdCBzdGF0IGJ1ZjsKIAlpbnQgc3JjX2xlbiwgZGVzdF9sZW47CiAJRElSICpkaXI7CiAKLQlkaXIgPSBvcGVuZGlyKHNyYyk7CisJZGlyID0gb3BlbmRpcihzcmMtPmJ1Zik7CiAJaWYgKCFkaXIpCi0JCWRpZSgiZmFpbGVkIHRvIG9wZW4gJXNcbiIsIHNyYyk7CisJCWRpZSgiZmFpbGVkIHRvIG9wZW4gJXNcbiIsIHNyYy0+YnVmKTsKIAotCWlmIChta2RpcihkZXN0LCAwNzc3KSkgeworCWlmIChta2RpcihkZXN0LT5idWYsIDA3NzcpKSB7CiAJCWlmIChlcnJubyAhPSBFRVhJU1QpCi0JCQlkaWUoImZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVzXG4iLCBkZXN0KTsKLQkJZWxzZSBpZiAoc3RhdChkZXN0LCAmYnVmKSkKLQkJCWRpZSgiZmFpbGVkIHRvIHN0YXQgJXNcbiIsIGRlc3QpOworCQkJZGllKCJmYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlc1xuIiwgZGVzdC0+YnVmKTsKKwkJZWxzZSBpZiAoc3RhdChkZXN0LT5idWYsICZidWYpKQorCQkJZGllKCJmYWlsZWQgdG8gc3RhdCAlc1xuIiwgZGVzdC0+YnVmKTsKIAkJZWxzZSBpZiAoIVNfSVNESVIoYnVmLnN0X21vZGUpKQotCQkJZGllKCIlcyBleGlzdHMgYW5kIGlzIG5vdCBhIGRpcmVjdG9yeVxuIiwgZGVzdCk7CisJCQlkaWUoIiVzIGV4aXN0cyBhbmQgaXMgbm90IGEgZGlyZWN0b3J5XG4iLCBkZXN0LT5idWYpOwogCX0KIAotCXNyY19sZW4gPSBzdHJsZW4oc3JjKTsKLQlzcmNbc3JjX2xlbl0gPSAnLyc7Ci0JZGVzdF9sZW4gPSBzdHJsZW4oZGVzdCk7Ci0JZGVzdFtkZXN0X2xlbl0gPSAnLyc7CisJc3RyYnVmX2FkZGNoKHNyYywgJy8nKTsKKwlzcmNfbGVuID0gc3JjLT5sZW47CisJc3RyYnVmX2FkZGNoKGRlc3QsICcvJyk7CisJZGVzdF9sZW4gPSBkZXN0LT5sZW47CiAKIAl3aGlsZSAoKGRlID0gcmVhZGRpcihkaXIpKSAhPSBOVUxMKSB7Ci0JCXN0cmNweShzcmMgKyBzcmNfbGVuICsgMSwgZGUtPmRfbmFtZSk7Ci0JCXN0cmNweShkZXN0ICsgZGVzdF9sZW4gKyAxLCBkZS0+ZF9uYW1lKTsKLQkJaWYgKHN0YXQoc3JjLCAmYnVmKSkgewotCQkJd2FybmluZyAoImZhaWxlZCB0byBzdGF0ICVzXG4iLCBzcmMpOworCQlzdHJidWZfc2V0bGVuKHNyYywgc3JjX2xlbik7CisJCXN0cmJ1Zl9hZGRzdHIoc3JjLCBkZS0+ZF9uYW1lKTsKKwkJc3RyYnVmX3NldGxlbihkZXN0LCBkZXN0X2xlbik7CisJCXN0cmJ1Zl9hZGRzdHIoZGVzdCwgZGUtPmRfbmFtZSk7CisJCWlmIChzdGF0KHNyYy0+YnVmLCAmYnVmKSkgeworCQkJd2FybmluZyAoImZhaWxlZCB0byBzdGF0ICVzXG4iLCBzcmMtPmJ1Zik7CiAJCQljb250aW51ZTsKIAkJfQogCQlpZiAoU19JU0RJUihidWYuc3RfbW9kZSkpIHsKQEAgLTIyNiwxNyArMjIzLDE3IEBACiAJCQljb250aW51ZTsKIAkJfQogCi0JCWlmICh1bmxpbmsoZGVzdCkgJiYgZXJybm8gIT0gRU5PRU5UKQotCQkJZGllKCJmYWlsZWQgdG8gdW5saW5rICVzXG4iLCBkZXN0KTsKKwkJaWYgKHVubGluayhkZXN0LT5idWYpICYmIGVycm5vICE9IEVOT0VOVCkKKwkJCWRpZSgiZmFpbGVkIHRvIHVubGluayAlc1xuIiwgZGVzdC0+YnVmKTsKIAkJaWYgKCFvcHRpb25fbm9faGFyZGxpbmtzKSB7Ci0JCQlpZiAoIWxpbmsoc3JjLCBkZXN0KSkKKwkJCWlmICghbGluayhzcmMtPmJ1ZiwgZGVzdC0+YnVmKSkKIAkJCQljb250aW51ZTsKIAkJCWlmIChvcHRpb25fbG9jYWwpCi0JCQkJZGllKCJmYWlsZWQgdG8gY3JlYXRlIGxpbmsgJXNcbiIsIGRlc3QpOworCQkJCWRpZSgiZmFpbGVkIHRvIGNyZWF0ZSBsaW5rICVzXG4iLCBkZXN0LT5idWYpOwogCQkJb3B0aW9uX25vX2hhcmRsaW5rcyA9IDE7CiAJCX0KLQkJaWYgKGNvcHlfZmlsZShkZXN0LCBzcmMsIDA2NjYpKQotCQkJZGllKCJmYWlsZWQgdG8gY29weSBmaWxlIHRvICVzXG4iLCBkZXN0KTsKKwkJaWYgKGNvcHlfZmlsZShkZXN0LT5idWYsIHNyYy0+YnVmLCAwNjY2KSkKKwkJCWRpZSgiZmFpbGVkIHRvIGNvcHkgZmlsZSB0byAlc1xuIiwgZGVzdC0+YnVmKTsKIAl9CiAJY2xvc2VkaXIoZGlyKTsKIH0KQEAgLTI0NSwxNyArMjQyLDE5IEBACiAJCQkJICAgICBjb25zdCBjaGFyICpkZXN0X3JlcG8pCiB7CiAJY29uc3Qgc3RydWN0IHJlZiAqcmV0OwotCWNoYXIgc3JjW1BBVEhfTUFYXTsKLQljaGFyIGRlc3RbUEFUSF9NQVhdOworCXN0cnVjdCBzdHJidWYgc3JjID0gU1RSQlVGX0lOSVQ7CisJc3RydWN0IHN0cmJ1ZiBkZXN0ID0gU1RSQlVGX0lOSVQ7CiAJc3RydWN0IHJlbW90ZSAqcmVtb3RlOwogCXN0cnVjdCB0cmFuc3BvcnQgKnRyYW5zcG9ydDsKIAogCWlmIChvcHRpb25fc2hhcmVkKQogCQlhZGRfdG9fYWx0ZXJuYXRlc19maWxlKHNyY19yZXBvKTsKIAllbHNlIHsKLQkJc25wcmludGYoc3JjLCBQQVRIX01BWCwgIiVzL29iamVjdHMiLCBzcmNfcmVwbyk7Ci0JCXNucHJpbnRmKGRlc3QsIFBBVEhfTUFYLCAiJXMvb2JqZWN0cyIsIGRlc3RfcmVwbyk7Ci0JCWNvcHlfb3JfbGlua19kaXJlY3Rvcnkoc3JjLCBkZXN0KTsKKwkJc3RyYnVmX2FkZGYoJnNyYywgIiVzL29iamVjdHMiLCBzcmNfcmVwbyk7CisJCXN0cmJ1Zl9hZGRmKCZkZXN0LCAiJXMvb2JqZWN0cyIsIGRlc3RfcmVwbyk7CisJCWNvcHlfb3JfbGlua19kaXJlY3RvcnkoJnNyYywgJmRlc3QpOworCQlzdHJidWZfcmVsZWFzZSgmc3JjKTsKKwkJc3RyYnVmX3JlbGVhc2UoJmRlc3QpOwogCX0KIAogCXJlbW90ZSA9IHJlbW90ZV9nZXQoc3JjX3JlcG8pOwpAQCAtMjcxLDEwICsyNzAsOSBAQAogCiBzdGF0aWMgdm9pZCByZW1vdmVfanVuayh2b2lkKQogewotCXN0cnVjdCBzdHJidWYgc2I7CisJc3RydWN0IHN0cmJ1ZiBzYiA9IFNUUkJVRl9JTklUOwogCWlmIChnZXRwaWQoKSAhPSBqdW5rX3BpZCkKIAkJcmV0dXJuOwotCXN0cmJ1Zl9pbml0KCZzYiwgMCk7CiAJaWYgKGp1bmtfZ2l0X2RpcikgewogCQlzdHJidWZfYWRkc3RyKCZzYiwganVua19naXRfZGlyKTsKIAkJcmVtb3ZlX2Rpcl9yZWN1cnNpdmVseSgmc2IsIDApOwpAQCAtMzYwLDggKzM1OCw4IEBACiAJY29uc3QgY2hhciAqcmVwb19uYW1lLCAqcmVwbywgKndvcmtfdHJlZSwgKmdpdF9kaXI7CiAJY2hhciAqcGF0aCwgKmRpcjsKIAljb25zdCBzdHJ1Y3QgcmVmICpyZWZzLCAqaGVhZF9wb2ludHNfYXQsICpyZW1vdGVfaGVhZCwgKm1hcHBlZF9yZWZzOwotCWNoYXIgYnJhbmNoX3RvcFsyNTZdLCBrZXlbMjU2XSwgdmFsdWVbMjU2XTsKLQlzdHJ1Y3Qgc3RyYnVmIHJlZmxvZ19tc2c7CisJc3RydWN0IHN0cmJ1ZiBrZXkgPSBTVFJCVUZfSU5JVCwgdmFsdWUgPSBTVFJCVUZfSU5JVDsKKwlzdHJ1Y3Qgc3RyYnVmIGJyYW5jaF90b3AgPSBTVFJCVUZfSU5JVCwgcmVmbG9nX21zZyA9IFNUUkJVRl9JTklUOwogCXN0cnVjdCB0cmFuc3BvcnQgKnRyYW5zcG9ydCA9IE5VTEw7CiAJY2hhciAqc3JjX3JlZl9wcmVmaXggPSAicmVmcy9oZWFkcy8iOwogCkBAIC00MTEsNyArNDA5LDYgQEAKIAlpZiAoIXN0YXQoZGlyLCAmYnVmKSkKIAkJZGllKCJkZXN0aW5hdGlvbiBkaXJlY3RvcnkgJyVzJyBhbHJlYWR5IGV4aXN0cy4iLCBkaXIpOwogCi0Jc3RyYnVmX2luaXQoJnJlZmxvZ19tc2csIDApOwogCXN0cmJ1Zl9hZGRmKCZyZWZsb2dfbXNnLCAiY2xvbmU6IGZyb20gJXMiLCByZXBvKTsKIAogCWlmIChvcHRpb25fYmFyZSkKQEAgLTQ2NiwzNSArNDYzLDM2IEBACiAJaWYgKG9wdGlvbl9iYXJlKSB7CiAJCWlmIChvcHRpb25fbWlycm9yKQogCQkJc3JjX3JlZl9wcmVmaXggPSAicmVmcy8iOwotCQlzdHJjcHkoYnJhbmNoX3RvcCwgc3JjX3JlZl9wcmVmaXgpOworCQlzdHJidWZfYWRkc3RyKCZicmFuY2hfdG9wLCBzcmNfcmVmX3ByZWZpeCk7CiAKIAkJZ2l0X2NvbmZpZ19zZXQoImNvcmUuYmFyZSIsICJ0cnVlIik7CiAJfSBlbHNlIHsKLQkJc25wcmludGYoYnJhbmNoX3RvcCwgc2l6ZW9mKGJyYW5jaF90b3ApLAotCQkJICJyZWZzL3JlbW90ZXMvJXMvIiwgb3B0aW9uX29yaWdpbik7CisJCXN0cmJ1Zl9hZGRmKCZicmFuY2hfdG9wLCAicmVmcy9yZW1vdGVzLyVzLyIsIG9wdGlvbl9vcmlnaW4pOwogCX0KIAogCWlmIChvcHRpb25fbWlycm9yIHx8ICFvcHRpb25fYmFyZSkgewogCQkvKiBDb25maWd1cmUgdGhlIHJlbW90ZSAqLwogCQlpZiAob3B0aW9uX21pcnJvcikgewotCQkJc25wcmludGYoa2V5LCBzaXplb2Yoa2V5KSwKLQkJCQkJInJlbW90ZS4lcy5taXJyb3IiLCBvcHRpb25fb3JpZ2luKTsKLQkJCWdpdF9jb25maWdfc2V0KGtleSwgInRydWUiKTsKKwkJCXN0cmJ1Zl9hZGRmKCZrZXksICJyZW1vdGUuJXMubWlycm9yIiwgb3B0aW9uX29yaWdpbik7CisJCQlnaXRfY29uZmlnX3NldChrZXkuYnVmLCAidHJ1ZSIpOworCQkJc3RyYnVmX3Jlc2V0KCZrZXkpOwogCQl9CiAKLQkJc25wcmludGYoa2V5LCBzaXplb2Yoa2V5KSwgInJlbW90ZS4lcy51cmwiLCBvcHRpb25fb3JpZ2luKTsKLQkJZ2l0X2NvbmZpZ19zZXQoa2V5LCByZXBvKTsKKwkJc3RyYnVmX2FkZGYoJmtleSwgInJlbW90ZS4lcy51cmwiLCBvcHRpb25fb3JpZ2luKTsKKwkJZ2l0X2NvbmZpZ19zZXQoa2V5LmJ1ZiwgcmVwbyk7CisJCQlzdHJidWZfcmVzZXQoJmtleSk7CiAKLQkJc25wcmludGYoa2V5LCBzaXplb2Yoa2V5KSwgInJlbW90ZS4lcy5mZXRjaCIsIG9wdGlvbl9vcmlnaW4pOwotCQlzbnByaW50Zih2YWx1ZSwgc2l6ZW9mKHZhbHVlKSwKLQkJCQkiKyVzKjolcyoiLCBzcmNfcmVmX3ByZWZpeCwgYnJhbmNoX3RvcCk7Ci0JCWdpdF9jb25maWdfc2V0X211bHRpdmFyKGtleSwgdmFsdWUsICJeJCIsIDApOworCQlzdHJidWZfYWRkZigma2V5LCAicmVtb3RlLiVzLmZldGNoIiwgb3B0aW9uX29yaWdpbik7CisJCXN0cmJ1Zl9hZGRmKCZ2YWx1ZSwgIislcyo6JXMqIiwgc3JjX3JlZl9wcmVmaXgsIGJyYW5jaF90b3AuYnVmKTsKKwkJZ2l0X2NvbmZpZ19zZXRfbXVsdGl2YXIoa2V5LmJ1ZiwgdmFsdWUuYnVmLCAiXiQiLCAwKTsKKwkJc3RyYnVmX3Jlc2V0KCZrZXkpOworCQlzdHJidWZfcmVzZXQoJnZhbHVlKTsKIAl9CiAKIAlyZWZzcGVjLmZvcmNlID0gMDsKIAlyZWZzcGVjLnBhdHRlcm4gPSAxOwogCXJlZnNwZWMuc3JjID0gc3JjX3JlZl9wcmVmaXg7Ci0JcmVmc3BlYy5kc3QgPSBicmFuY2hfdG9wOworCXJlZnNwZWMuZHN0ID0gYnJhbmNoX3RvcC5idWY7CiAKIAlpZiAocGF0aCAmJiAhaXNfYnVuZGxlKQogCQlyZWZzID0gY2xvbmVfbG9jYWwocGF0aCwgZ2l0X2Rpcik7CkBAIC01MTMsNiArNTExLDggQEAKIAogCQlpZiAob3B0aW9uX3F1aWV0KQogCQkJdHJhbnNwb3J0LT52ZXJib3NlID0gLTE7CisJCWVsc2UgaWYgKG9wdGlvbl92ZXJib3NlKQorCQkJdHJhbnNwb3J0LT5wcm9ncmVzcyA9IDE7CiAKIAkJaWYgKG9wdGlvbl91cGxvYWRfcGFjaykKIAkJCXRyYW5zcG9ydF9zZXRfb3B0aW9uKHRyYW5zcG9ydCwgVFJBTlNfT1BUX1VQTE9BRFBBQ0ssCkBAIC01MzMsNyArNTMzLDcgQEAKIAkJY3JlYXRlX3N5bXJlZigiSEVBRCIsIGhlYWRfcG9pbnRzX2F0LT5uYW1lLCBOVUxMKTsKIAogCQlpZiAoIW9wdGlvbl9iYXJlKSB7Ci0JCQlzdHJ1Y3Qgc3RyYnVmIGhlYWRfcmVmOworCQkJc3RydWN0IHN0cmJ1ZiBoZWFkX3JlZiA9IFNUUkJVRl9JTklUOwogCQkJY29uc3QgY2hhciAqaGVhZCA9IGhlYWRfcG9pbnRzX2F0LT5uYW1lOwogCiAJCQlpZiAoIXByZWZpeGNtcChoZWFkLCAicmVmcy9oZWFkcy8iKSkKQEAgLTU0Niw4ICs1NDYsNyBAQAogCQkJCSAgIGhlYWRfcG9pbnRzX2F0LT5vbGRfc2hhMSwKIAkJCQkgICBOVUxMLCAwLCBESUVfT05fRVJSKTsKIAotCQkJc3RyYnVmX2luaXQoJmhlYWRfcmVmLCAwKTsKLQkJCXN0cmJ1Zl9hZGRzdHIoJmhlYWRfcmVmLCBicmFuY2hfdG9wKTsKKwkJCXN0cmJ1Zl9hZGRzdHIoJmhlYWRfcmVmLCBicmFuY2hfdG9wLmJ1Zik7CiAJCQlzdHJidWZfYWRkc3RyKCZoZWFkX3JlZiwgIkhFQUQiKTsKIAogCQkJLyogUmVtb3RlIGJyYW5jaCBsaW5rICovCkBAIC01NTUsMTAgKzU1NCwxMSBAQAogCQkJCSAgICAgIGhlYWRfcG9pbnRzX2F0LT5wZWVyX3JlZi0+bmFtZSwKIAkJCQkgICAgICByZWZsb2dfbXNnLmJ1Zik7CiAKLQkJCXNucHJpbnRmKGtleSwgc2l6ZW9mKGtleSksICJicmFuY2guJXMucmVtb3RlIiwgaGVhZCk7Ci0JCQlnaXRfY29uZmlnX3NldChrZXksIG9wdGlvbl9vcmlnaW4pOwotCQkJc25wcmludGYoa2V5LCBzaXplb2Yoa2V5KSwgImJyYW5jaC4lcy5tZXJnZSIsIGhlYWQpOwotCQkJZ2l0X2NvbmZpZ19zZXQoa2V5LCBoZWFkX3BvaW50c19hdC0+bmFtZSk7CisJCQlzdHJidWZfYWRkZigma2V5LCAiYnJhbmNoLiVzLnJlbW90ZSIsIGhlYWQpOworCQkJZ2l0X2NvbmZpZ19zZXQoa2V5LmJ1Ziwgb3B0aW9uX29yaWdpbik7CisJCQlzdHJidWZfcmVzZXQoJmtleSk7CisJCQlzdHJidWZfYWRkZigma2V5LCAiYnJhbmNoLiVzLm1lcmdlIiwgaGVhZCk7CisJCQlnaXRfY29uZmlnX3NldChrZXkuYnVmLCBoZWFkX3BvaW50c19hdC0+bmFtZSk7CiAJCX0KIAl9IGVsc2UgaWYgKHJlbW90ZV9oZWFkKSB7CiAJCS8qIFNvdXJjZSBoYWQgZGV0YWNoZWQgSEVBRCBwb2ludGluZyBzb21ld2hlcmUuICovCkBAIC02MDgsNiArNjA4LDkgQEAKIAl9CiAKIAlzdHJidWZfcmVsZWFzZSgmcmVmbG9nX21zZyk7CisJc3RyYnVmX3JlbGVhc2UoJmJyYW5jaF90b3ApOworCXN0cmJ1Zl9yZWxlYXNlKCZrZXkpOworCXN0cmJ1Zl9yZWxlYXNlKCZ2YWx1ZSk7CiAJanVua19waWQgPSAwOwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1jb21taXQtdHJlZS5jIGIvYnVpbHRpbi1jb21taXQtdHJlZS5jCmluZGV4IDliODRjNDguLjA0NTM0MjUgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tY29tbWl0LXRyZWUuYworKysgYi9idWlsdGluLWNvbW1pdC10cmVlLmMKQEAgLTQ2LDggKzQ2LDEwIEBACiAidmFyaWFibGUgaTE4bi5jb21taXRlbmNvZGluZyB0byB0aGUgZW5jb2RpbmcgeW91ciBwcm9qZWN0IHVzZXMuXG4iOwogCiBpbnQgY29tbWl0X3RyZWUoY29uc3QgY2hhciAqbXNnLCB1bnNpZ25lZCBjaGFyICp0cmVlLAotCQlzdHJ1Y3QgY29tbWl0X2xpc3QgKnBhcmVudHMsIHVuc2lnbmVkIGNoYXIgKnJldCkKKwkJc3RydWN0IGNvbW1pdF9saXN0ICpwYXJlbnRzLCB1bnNpZ25lZCBjaGFyICpyZXQsCisJCWNvbnN0IGNoYXIgKmF1dGhvcikKIHsKKwlpbnQgcmVzdWx0OwogCWludCBlbmNvZGluZ19pc191dGY4OwogCXN0cnVjdCBzdHJidWYgYnVmZmVyOwogCkBAIC03Myw3ICs3NSw5IEBACiAJfQogCiAJLyogUGVyc29uL2RhdGUgaW5mb3JtYXRpb24gKi8KLQlzdHJidWZfYWRkZigmYnVmZmVyLCAiYXV0aG9yICVzXG4iLCBnaXRfYXV0aG9yX2luZm8oSURFTlRfRVJST1JfT05fTk9fTkFNRSkpOworCWlmICghYXV0aG9yKQorCQlhdXRob3IgPSBnaXRfYXV0aG9yX2luZm8oSURFTlRfRVJST1JfT05fTk9fTkFNRSk7CisJc3RyYnVmX2FkZGYoJmJ1ZmZlciwgImF1dGhvciAlc1xuIiwgYXV0aG9yKTsKIAlzdHJidWZfYWRkZigmYnVmZmVyLCAiY29tbWl0dGVyICVzXG4iLCBnaXRfY29tbWl0dGVyX2luZm8oSURFTlRfRVJST1JfT05fTk9fTkFNRSkpOwogCWlmICghZW5jb2RpbmdfaXNfdXRmOCkKIAkJc3RyYnVmX2FkZGYoJmJ1ZmZlciwgImVuY29kaW5nICVzXG4iLCBnaXRfY29tbWl0X2VuY29kaW5nKTsKQEAgLTg2LDcgKzkwLDkgQEAKIAlpZiAoZW5jb2RpbmdfaXNfdXRmOCAmJiAhaXNfdXRmOChidWZmZXIuYnVmKSkKIAkJZnByaW50ZihzdGRlcnIsIGNvbW1pdF91dGY4X3dhcm4pOwogCi0JcmV0dXJuIHdyaXRlX3NoYTFfZmlsZShidWZmZXIuYnVmLCBidWZmZXIubGVuLCBjb21taXRfdHlwZSwgcmV0KTsKKwlyZXN1bHQgPSB3cml0ZV9zaGExX2ZpbGUoYnVmZmVyLmJ1ZiwgYnVmZmVyLmxlbiwgY29tbWl0X3R5cGUsIHJldCk7CisJc3RyYnVmX3JlbGVhc2UoJmJ1ZmZlcik7CisJcmV0dXJuIHJlc3VsdDsKIH0KIAogaW50IGNtZF9jb21taXRfdHJlZShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKQEAgLTEyMCw3ICsxMjYsNyBAQAogCWlmIChzdHJidWZfcmVhZCgmYnVmZmVyLCAwLCAwKSA8IDApCiAJCWRpZSgiZ2l0IGNvbW1pdC10cmVlOiByZWFkIHJldHVybmVkICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKIAotCWlmICghY29tbWl0X3RyZWUoYnVmZmVyLmJ1ZiwgdHJlZV9zaGExLCBwYXJlbnRzLCBjb21taXRfc2hhMSkpIHsKKwlpZiAoIWNvbW1pdF90cmVlKGJ1ZmZlci5idWYsIHRyZWVfc2hhMSwgcGFyZW50cywgY29tbWl0X3NoYTEsIE5VTEwpKSB7CiAJCXByaW50ZigiJXNcbiIsIHNoYTFfdG9faGV4KGNvbW1pdF9zaGExKSk7CiAJCXJldHVybiAwOwogCX0KZGlmZiAtLWdpdCBhL2J1aWx0aW4tY29tbWl0LmMgYi9idWlsdGluLWNvbW1pdC5jCmluZGV4IDZjYmRkNTUuLjJmMGIwMGEgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tY29tbWl0LmMKKysrIGIvYnVpbHRpbi1jb21taXQuYwpAQCAtMjI1LDE4ICsyMjUsMTggQEAKIAogCWlmIChpbnRlcmFjdGl2ZSkgewogCQlpbnRlcmFjdGl2ZV9hZGQoYXJnYywgYXJndiwgcHJlZml4KTsKLQkJaWYgKHJlYWRfY2FjaGUoKSA8IDApCisJCWlmIChyZWFkX2NhY2hlX3ByZWxvYWQoTlVMTCkgPCAwKQogCQkJZGllKCJpbmRleCBmaWxlIGNvcnJ1cHQiKTsKIAkJY29tbWl0X3N0eWxlID0gQ09NTUlUX0FTX0lTOwogCQlyZXR1cm4gZ2V0X2luZGV4X2ZpbGUoKTsKIAl9CiAKLQlpZiAocmVhZF9jYWNoZSgpIDwgMCkKLQkJZGllKCJpbmRleCBmaWxlIGNvcnJ1cHQiKTsKLQogCWlmICgqYXJndikKIAkJcGF0aHNwZWMgPSBnZXRfcGF0aHNwZWMocHJlZml4LCBhcmd2KTsKIAorCWlmIChyZWFkX2NhY2hlX3ByZWxvYWQocGF0aHNwZWMpIDwgMCkKKwkJZGllKCJpbmRleCBmaWxlIGNvcnJ1cHQiKTsKKwogCS8qCiAJICogTm9uIHBhcnRpYWwsIG5vbiBhcy1pcyBjb21taXQuCiAJICoKQEAgLTMyMCw3ICszMjAsOCBAQAogCQlkaWUoInVuYWJsZSB0byB3cml0ZSBuZXdfaW5kZXggZmlsZSIpOwogCiAJZmQgPSBob2xkX2xvY2tfZmlsZV9mb3JfdXBkYXRlKCZmYWxzZV9sb2NrLAotCQkJCSAgICAgICBnaXRfcGF0aCgibmV4dC1pbmRleC0lZCIsIGdldHBpZCgpKSwKKwkJCQkgICAgICAgZ2l0X3BhdGgoIm5leHQtaW5kZXgtJSJQUkl1TUFYLAorCQkJCQkJKHVpbnRtYXhfdCkgZ2V0cGlkKCkpLAogCQkJCSAgICAgICBMT0NLX0RJRV9PTl9FUlJPUik7CiAKIAljcmVhdGVfYmFzZV9pbmRleCgpOwpAQCAtNDQ5LDcgKzQ1MCw3IEBACiB7CiAJc3RydWN0IHN0YXQgc3RhdGJ1ZjsKIAlpbnQgY29tbWl0YWJsZSwgc2F2ZWRfY29sb3Jfc2V0dGluZzsKLQlzdHJ1Y3Qgc3RyYnVmIHNiOworCXN0cnVjdCBzdHJidWYgc2IgPSBTVFJCVUZfSU5JVDsKIAljaGFyICpidWZmZXI7CiAJRklMRSAqZnA7CiAJY29uc3QgY2hhciAqaG9va19hcmcxID0gTlVMTDsKQEAgLTQ1OSw3ICs0NjAsNiBAQAogCWlmICghbm9fdmVyaWZ5ICYmIHJ1bl9ob29rKGluZGV4X2ZpbGUsICJwcmUtY29tbWl0IiwgTlVMTCkpCiAJCXJldHVybiAwOwogCi0Jc3RyYnVmX2luaXQoJnNiLCAwKTsKIAlpZiAobWVzc2FnZS5sZW4pIHsKIAkJc3RyYnVmX2FkZGJ1Zigmc2IsICZtZXNzYWdlKTsKIAkJaG9va19hcmcxID0gIm1lc3NhZ2UiOwpAQCAtNTEyLDEwICs1MTIsOSBAQAogCQlzdHJpcHNwYWNlKCZzYiwgMCk7CiAKIAlpZiAoc2lnbm9mZikgewotCQlzdHJ1Y3Qgc3RyYnVmIHNvYjsKKwkJc3RydWN0IHN0cmJ1ZiBzb2IgPSBTVFJCVUZfSU5JVDsKIAkJaW50IGk7CiAKLQkJc3RyYnVmX2luaXQoJnNvYiwgMCk7CiAJCXN0cmJ1Zl9hZGRzdHIoJnNvYiwgc2lnbl9vZmZfaGVhZGVyKTsKIAkJc3RyYnVmX2FkZHN0cigmc29iLCBmbXRfbmFtZShnZXRlbnYoIkdJVF9DT01NSVRURVJfTkFNRSIpLAogCQkJCQkgICAgIGdldGVudigiR0lUX0NPTU1JVFRFUl9FTUFJTCIpKSk7CkBAIC02MzksNyArNjM4LDcgQEAKIAkJYWN0aXZlX2NhY2hlX3RyZWUgPSBjYWNoZV90cmVlKCk7CiAJaWYgKGNhY2hlX3RyZWVfdXBkYXRlKGFjdGl2ZV9jYWNoZV90cmVlLAogCQkJICAgICAgYWN0aXZlX2NhY2hlLCBhY3RpdmVfbnIsIDAsIDApIDwgMCkgewotCQllcnJvcigiRXJyb3IgYnVpbGRpbmcgdHJlZXM7IHRoZSBpbmRleCBpcyB1bm1lcmdlZD8iKTsKKwkJZXJyb3IoIkVycm9yIGJ1aWxkaW5nIHRyZWVzIik7CiAJCXJldHVybiAwOwogCX0KIApAQCAtNjY3LDIwICs2NjYsMTkgQEAKIH0KIAogLyoKLSAqIEZpbmQgb3V0IGlmIHRoZSBtZXNzYWdlIHN0YXJ0aW5nIGF0IHBvc2l0aW9uICdzdGFydCcgaW4gdGhlIHN0cmJ1ZgotICogY29udGFpbnMgb25seSB3aGl0ZXNwYWNlIGFuZCBTaWduZWQtb2ZmLWJ5IGxpbmVzLgorICogRmluZCBvdXQgaWYgdGhlIG1lc3NhZ2UgaW4gdGhlIHN0cmJ1ZiBjb250YWlucyBvbmx5IHdoaXRlc3BhY2UgYW5kCisgKiBTaWduZWQtb2ZmLWJ5IGxpbmVzLgogICovCi1zdGF0aWMgaW50IG1lc3NhZ2VfaXNfZW1wdHkoc3RydWN0IHN0cmJ1ZiAqc2IsIGludCBzdGFydCkKK3N0YXRpYyBpbnQgbWVzc2FnZV9pc19lbXB0eShzdHJ1Y3Qgc3RyYnVmICpzYikKIHsKLQlzdHJ1Y3Qgc3RyYnVmIHRtcGw7CisJc3RydWN0IHN0cmJ1ZiB0bXBsID0gU1RSQlVGX0lOSVQ7CiAJY29uc3QgY2hhciAqbmw7Ci0JaW50IGVvbCwgaTsKKwlpbnQgZW9sLCBpLCBzdGFydCA9IDA7CiAKIAlpZiAoY2xlYW51cF9tb2RlID09IENMRUFOVVBfTk9ORSAmJiBzYi0+bGVuKQogCQlyZXR1cm4gMDsKIAogCS8qIFNlZSBpZiB0aGUgdGVtcGxhdGUgaXMganVzdCBhIHByZWZpeCBvZiB0aGUgbWVzc2FnZS4gKi8KLQlzdHJidWZfaW5pdCgmdG1wbCwgMCk7CiAJaWYgKHRlbXBsYXRlX2ZpbGUgJiYgc3RyYnVmX3JlYWRfZmlsZSgmdG1wbCwgdGVtcGxhdGVfZmlsZSwgMCkgPiAwKSB7CiAJCXN0cmlwc3BhY2UoJnRtcGwsIGNsZWFudXBfbW9kZSA9PSBDTEVBTlVQX0FMTCk7CiAJCWlmIChzdGFydCArIHRtcGwubGVuIDw9IHNiLT5sZW4gJiYKQEAgLTcxMCw2ICs3MDgsMzEgQEAKIAlyZXR1cm4gMTsKIH0KIAorc3RhdGljIGNvbnN0IGNoYXIgKmZpbmRfYXV0aG9yX2J5X25pY2tuYW1lKGNvbnN0IGNoYXIgKm5hbWUpCit7CisJc3RydWN0IHJldl9pbmZvIHJldnM7CisJc3RydWN0IGNvbW1pdCAqY29tbWl0OworCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CisJY29uc3QgY2hhciAqYXZbMjBdOworCWludCBhYyA9IDA7CisKKwlpbml0X3JldmlzaW9ucygmcmV2cywgTlVMTCk7CisJc3RyYnVmX2FkZGYoJmJ1ZiwgIi0tYXV0aG9yPSVzIiwgbmFtZSk7CisJYXZbKythY10gPSAiLS1hbGwiOworCWF2WysrYWNdID0gIi1pIjsKKwlhdlsrK2FjXSA9IGJ1Zi5idWY7CisJYXZbKythY10gPSBOVUxMOworCXNldHVwX3JldmlzaW9ucyhhYywgYXYsICZyZXZzLCBOVUxMKTsKKwlwcmVwYXJlX3JldmlzaW9uX3dhbGsoJnJldnMpOworCWNvbW1pdCA9IGdldF9yZXZpc2lvbigmcmV2cyk7CisJaWYgKGNvbW1pdCkgeworCQlzdHJidWZfcmVsZWFzZSgmYnVmKTsKKwkJZm9ybWF0X2NvbW1pdF9tZXNzYWdlKGNvbW1pdCwgIiVhbiA8JWFlPiIsICZidWYsIERBVEVfTk9STUFMKTsKKwkJcmV0dXJuIHN0cmJ1Zl9kZXRhY2goJmJ1ZiwgTlVMTCk7CisJfQorCWRpZSgiTm8gZXhpc3RpbmcgYXV0aG9yIGZvdW5kIHdpdGggJyVzJyIsIG5hbWUpOworfQorCiBzdGF0aWMgaW50IHBhcnNlX2FuZF92YWxpZGF0ZV9vcHRpb25zKGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10sCiAJCQkJICAgICAgY29uc3QgY2hhciAqIGNvbnN0IHVzYWdlW10sCiAJCQkJICAgICAgY29uc3QgY2hhciAqcHJlZml4KQpAQCAtNzIwLDYgKzc0Myw5IEBACiAJbG9nZmlsZSA9IHBhcnNlX29wdGlvbnNfZml4X2ZpbGVuYW1lKHByZWZpeCwgbG9nZmlsZSk7CiAJdGVtcGxhdGVfZmlsZSA9IHBhcnNlX29wdGlvbnNfZml4X2ZpbGVuYW1lKHByZWZpeCwgdGVtcGxhdGVfZmlsZSk7CiAKKwlpZiAoZm9yY2VfYXV0aG9yICYmICFzdHJjaHIoZm9yY2VfYXV0aG9yLCAnPicpKQorCQlmb3JjZV9hdXRob3IgPSBmaW5kX2F1dGhvcl9ieV9uaWNrbmFtZShmb3JjZV9hdXRob3IpOworCiAJaWYgKGxvZ2ZpbGUgfHwgbWVzc2FnZS5sZW4gfHwgdXNlX21lc3NhZ2UpCiAJCXVzZV9lZGl0b3IgPSAwOwogCWlmIChlZGl0X2ZsYWcpCkBAIC04MzksNiArODY1LDkgQEAKIAlpZiAod3Rfc3RhdHVzX3VzZV9jb2xvciA9PSAtMSkKIAkJd3Rfc3RhdHVzX3VzZV9jb2xvciA9IGdpdF91c2VfY29sb3JfZGVmYXVsdDsKIAorCWlmIChkaWZmX3VzZV9jb2xvcl9kZWZhdWx0ID09IC0xKQorCQlkaWZmX3VzZV9jb2xvcl9kZWZhdWx0ID0gZ2l0X3VzZV9jb2xvcl9kZWZhdWx0OworCiAJYXJnYyA9IHBhcnNlX2FuZF92YWxpZGF0ZV9vcHRpb25zKGFyZ2MsIGFyZ3YsIGJ1aWx0aW5fc3RhdHVzX3VzYWdlLCBwcmVmaXgpOwogCiAJaW5kZXhfZmlsZSA9IHByZXBhcmVfaW5kZXgoYXJnYywgYXJndiwgcHJlZml4KTsKQEAgLTg1NCw2ICs4ODMsOSBAQAogewogCXN0cnVjdCByZXZfaW5mbyByZXY7CiAJc3RydWN0IGNvbW1pdCAqY29tbWl0OworCXN0YXRpYyBjb25zdCBjaGFyICpmb3JtYXQgPSAiZm9ybWF0OiVoOiBcIiVzXCIiOworCXVuc2lnbmVkIGNoYXIganVua19zaGExWzIwXTsKKwljb25zdCBjaGFyICpoZWFkID0gcmVzb2x2ZV9yZWYoIkhFQUQiLCBqdW5rX3NoYTEsIDAsIE5VTEwpOwogCiAJY29tbWl0ID0gbG9va3VwX2NvbW1pdChzaGExKTsKIAlpZiAoIWNvbW1pdCkKQEAgLTg3MSwxOCArOTAzLDI0IEBACiAKIAlyZXYudmVyYm9zZV9oZWFkZXIgPSAxOwogCXJldi5zaG93X3Jvb3RfZGlmZiA9IDE7Ci0JZ2V0X2NvbW1pdF9mb3JtYXQoImZvcm1hdDolaDogJXMiLCAmcmV2KTsKKwlnZXRfY29tbWl0X2Zvcm1hdChmb3JtYXQsICZyZXYpOwogCXJldi5hbHdheXNfc2hvd19oZWFkZXIgPSAwOwogCXJldi5kaWZmb3B0LmRldGVjdF9yZW5hbWUgPSAxOwogCXJldi5kaWZmb3B0LnJlbmFtZV9saW1pdCA9IDEwMDsKIAlyZXYuZGlmZm9wdC5icmVha19vcHQgPSAwOwogCWRpZmZfc2V0dXBfZG9uZSgmcmV2LmRpZmZvcHQpOwogCi0JcHJpbnRmKCJDcmVhdGVkICVzY29tbWl0ICIsIGluaXRpYWxfY29tbWl0ID8gImluaXRpYWwgIiA6ICIiKTsKKwlwcmludGYoIlslcyVzXTogY3JlYXRlZCAiLAorCQkhcHJlZml4Y21wKGhlYWQsICJyZWZzL2hlYWRzLyIpID8KKwkJCWhlYWQgKyAxMSA6CisJCQkhc3RyY21wKGhlYWQsICJIRUFEIikgPworCQkJCSJkZXRhY2hlZCBIRUFEIiA6CisJCQkJaGVhZCwKKwkJaW5pdGlhbF9jb21taXQgPyAiIChyb290LWNvbW1pdCkiIDogIiIpOwogCiAJaWYgKCFsb2dfdHJlZV9jb21taXQoJnJldiwgY29tbWl0KSkgewogCQlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwotCQlmb3JtYXRfY29tbWl0X21lc3NhZ2UoY29tbWl0LCAiJWg6ICVzIiwgJmJ1ZiwgREFURV9OT1JNQUwpOworCQlmb3JtYXRfY29tbWl0X21lc3NhZ2UoY29tbWl0LCBmb3JtYXQgKyA3LCAmYnVmLCBEQVRFX05PUk1BTCk7CiAJCXByaW50ZigiJXNcbiIsIGJ1Zi5idWYpOwogCQlzdHJidWZfcmVsZWFzZSgmYnVmKTsKIAl9CkBAIC04OTYsNDIgKzkzNCwyMiBAQAogCXJldHVybiBnaXRfc3RhdHVzX2NvbmZpZyhrLCB2LCBjYik7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyIGNvbW1pdF91dGY4X3dhcm5bXSA9Ci0iV2FybmluZzogY29tbWl0IG1lc3NhZ2UgZG9lcyBub3QgY29uZm9ybSB0byBVVEYtOC5cbiIKLSJZb3UgbWF5IHdhbnQgdG8gYW1lbmQgaXQgYWZ0ZXIgZml4aW5nIHRoZSBtZXNzYWdlLCBvciBzZXQgdGhlIGNvbmZpZ1xuIgotInZhcmlhYmxlIGkxOG4uY29tbWl0ZW5jb2RpbmcgdG8gdGhlIGVuY29kaW5nIHlvdXIgcHJvamVjdCB1c2VzLlxuIjsKLQotc3RhdGljIHZvaWQgYWRkX3BhcmVudChzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSkKLXsKLQlzdHJ1Y3Qgb2JqZWN0ICpvYmogPSBwYXJzZV9vYmplY3Qoc2hhMSk7Ci0JY29uc3QgY2hhciAqcGFyZW50ID0gc2hhMV90b19oZXgoc2hhMSk7Ci0JY29uc3QgY2hhciAqY3A7Ci0KLQlpZiAoIW9iaikKLQkJZGllKCJVbmFibGUgdG8gZmluZCBjb21taXQgcGFyZW50ICVzIiwgcGFyZW50KTsKLQlpZiAob2JqLT50eXBlICE9IE9CSl9DT01NSVQpCi0JCWRpZSgiUGFyZW50ICVzIGlzbid0IGEgcHJvcGVyIGNvbW1pdCIsIHBhcmVudCk7Ci0KLQlmb3IgKGNwID0gc2ItPmJ1ZjsgY3AgJiYgKGNwID0gc3Ryc3RyKGNwLCAiXG5wYXJlbnQgIikpOyBjcCArPSA4KSB7Ci0JCWlmICghbWVtY21wKGNwICsgOCwgcGFyZW50LCA0MCkgJiYgY3BbNDhdID09ICdcbicpIHsKLQkJCWVycm9yKCJkdXBsaWNhdGUgcGFyZW50ICVzIGlnbm9yZWQiLCBwYXJlbnQpOwotCQkJcmV0dXJuOwotCQl9Ci0JfQotCXN0cmJ1Zl9hZGRmKHNiLCAicGFyZW50ICVzXG4iLCBwYXJlbnQpOwotfQotCiBpbnQgY21kX2NvbW1pdChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKIHsKLQlpbnQgaGVhZGVyX2xlbjsKLQlzdHJ1Y3Qgc3RyYnVmIHNiOworCXN0cnVjdCBzdHJidWYgc2IgPSBTVFJCVUZfSU5JVDsKIAljb25zdCBjaGFyICppbmRleF9maWxlLCAqcmVmbG9nX21zZzsKIAljaGFyICpubCwgKnA7CiAJdW5zaWduZWQgY2hhciBjb21taXRfc2hhMVsyMF07CiAJc3RydWN0IHJlZl9sb2NrICpyZWZfbG9jazsKKwlzdHJ1Y3QgY29tbWl0X2xpc3QgKnBhcmVudHMgPSBOVUxMLCAqKnBwdHIgPSAmcGFyZW50czsKKwlzdHJ1Y3Qgc3RhdCBzdGF0YnVmOworCWludCBhbGxvd19mYXN0X2ZvcndhcmQgPSAxOwogCiAJZ2l0X2NvbmZpZyhnaXRfY29tbWl0X2NvbmZpZywgTlVMTCk7CiAKKwlpZiAod3Rfc3RhdHVzX3VzZV9jb2xvciA9PSAtMSkKKwkJd3Rfc3RhdHVzX3VzZV9jb2xvciA9IGdpdF91c2VfY29sb3JfZGVmYXVsdDsKKwogCWFyZ2MgPSBwYXJzZV9hbmRfdmFsaWRhdGVfb3B0aW9ucyhhcmdjLCBhcmd2LCBidWlsdGluX2NvbW1pdF91c2FnZSwgcHJlZml4KTsKIAogCWluZGV4X2ZpbGUgPSBwcmVwYXJlX2luZGV4KGFyZ2MsIGFyZ3YsIHByZWZpeCk7CkBAIC05NDMsMTMgKzk2MSw2IEBACiAJCXJldHVybiAxOwogCX0KIAotCS8qCi0JICogVGhlIGNvbW1pdCBvYmplY3QKLQkgKi8KLQlzdHJidWZfaW5pdCgmc2IsIDApOwotCXN0cmJ1Zl9hZGRmKCZzYiwgInRyZWUgJXNcbiIsCi0JCSAgICBzaGExX3RvX2hleChhY3RpdmVfY2FjaGVfdHJlZS0+c2hhMSkpOwotCiAJLyogRGV0ZXJtaW5lIHBhcmVudHMgKi8KIAlpZiAoaW5pdGlhbF9jb21taXQpIHsKIAkJcmVmbG9nX21zZyA9ICJjb21taXQgKGluaXRpYWwpIjsKQEAgLTk2MywxNCArOTc0LDEzIEBACiAJCQlkaWUoImNvdWxkIG5vdCBwYXJzZSBIRUFEIGNvbW1pdCIpOwogCiAJCWZvciAoYyA9IGNvbW1pdC0+cGFyZW50czsgYzsgYyA9IGMtPm5leHQpCi0JCQlhZGRfcGFyZW50KCZzYiwgYy0+aXRlbS0+b2JqZWN0LnNoYTEpOworCQkJcHB0ciA9ICZjb21taXRfbGlzdF9pbnNlcnQoYy0+aXRlbSwgcHB0ciktPm5leHQ7CiAJfSBlbHNlIGlmIChpbl9tZXJnZSkgewotCQlzdHJ1Y3Qgc3RyYnVmIG07CisJCXN0cnVjdCBzdHJidWYgbSA9IFNUUkJVRl9JTklUOwogCQlGSUxFICpmcDsKIAogCQlyZWZsb2dfbXNnID0gImNvbW1pdCAobWVyZ2UpIjsKLQkJYWRkX3BhcmVudCgmc2IsIGhlYWRfc2hhMSk7Ci0JCXN0cmJ1Zl9pbml0KCZtLCAwKTsKKwkJcHB0ciA9ICZjb21taXRfbGlzdF9pbnNlcnQobG9va3VwX2NvbW1pdChoZWFkX3NoYTEpLCBwcHRyKS0+bmV4dDsKIAkJZnAgPSBmb3BlbihnaXRfcGF0aCgiTUVSR0VfSEVBRCIpLCAiciIpOwogCQlpZiAoZnAgPT0gTlVMTCkKIAkJCWRpZSgiY291bGQgbm90IG9wZW4gJXMgZm9yIHJlYWRpbmc6ICVzIiwKQEAgLTk3OSwyNCArOTg5LDI2IEBACiAJCQl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwogCQkJaWYgKGdldF9zaGExX2hleChtLmJ1Ziwgc2hhMSkgPCAwKQogCQkJCWRpZSgiQ29ycnVwdCBNRVJHRV9IRUFEIGZpbGUgKCVzKSIsIG0uYnVmKTsKLQkJCWFkZF9wYXJlbnQoJnNiLCBzaGExKTsKKwkJCXBwdHIgPSAmY29tbWl0X2xpc3RfaW5zZXJ0KGxvb2t1cF9jb21taXQoc2hhMSksIHBwdHIpLT5uZXh0OwogCQl9CiAJCWZjbG9zZShmcCk7CiAJCXN0cmJ1Zl9yZWxlYXNlKCZtKTsKKwkJaWYgKCFzdGF0KGdpdF9wYXRoKCJNRVJHRV9NT0RFIiksICZzdGF0YnVmKSkgeworCQkJaWYgKHN0cmJ1Zl9yZWFkX2ZpbGUoJnNiLCBnaXRfcGF0aCgiTUVSR0VfTU9ERSIpLCAwKSA8IDApCisJCQkJZGllKCJjb3VsZCBub3QgcmVhZCBNRVJHRV9NT0RFOiAlcyIsCisJCQkJCQlzdHJlcnJvcihlcnJubykpOworCQkJaWYgKCFzdHJjbXAoc2IuYnVmLCAibm8tZmYiKSkKKwkJCQlhbGxvd19mYXN0X2ZvcndhcmQgPSAwOworCQl9CisJCWlmIChhbGxvd19mYXN0X2ZvcndhcmQpCisJCQlwYXJlbnRzID0gcmVkdWNlX2hlYWRzKHBhcmVudHMpOwogCX0gZWxzZSB7CiAJCXJlZmxvZ19tc2cgPSAiY29tbWl0IjsKLQkJc3RyYnVmX2FkZGYoJnNiLCAicGFyZW50ICVzXG4iLCBzaGExX3RvX2hleChoZWFkX3NoYTEpKTsKKwkJcHB0ciA9ICZjb21taXRfbGlzdF9pbnNlcnQobG9va3VwX2NvbW1pdChoZWFkX3NoYTEpLCBwcHRyKS0+bmV4dDsKIAl9CiAKLQlzdHJidWZfYWRkZigmc2IsICJhdXRob3IgJXNcbiIsCi0JCSAgICBmbXRfaWRlbnQoYXV0aG9yX25hbWUsIGF1dGhvcl9lbWFpbCwgYXV0aG9yX2RhdGUsIElERU5UX0VSUk9SX09OX05PX05BTUUpKTsKLQlzdHJidWZfYWRkZigmc2IsICJjb21taXR0ZXIgJXNcbiIsIGdpdF9jb21taXR0ZXJfaW5mbyhJREVOVF9FUlJPUl9PTl9OT19OQU1FKSk7Ci0JaWYgKCFpc19lbmNvZGluZ191dGY4KGdpdF9jb21taXRfZW5jb2RpbmcpKQotCQlzdHJidWZfYWRkZigmc2IsICJlbmNvZGluZyAlc1xuIiwgZ2l0X2NvbW1pdF9lbmNvZGluZyk7Ci0Jc3RyYnVmX2FkZGNoKCZzYiwgJ1xuJyk7Ci0KIAkvKiBGaW5hbGx5LCBnZXQgdGhlIGNvbW1pdCBtZXNzYWdlICovCi0JaGVhZGVyX2xlbiA9IHNiLmxlbjsKKwlzdHJidWZfcmVzZXQoJnNiKTsKIAlpZiAoc3RyYnVmX3JlYWRfZmlsZSgmc2IsIGdpdF9wYXRoKGNvbW1pdF9lZGl0bXNnKSwgMCkgPCAwKSB7CiAJCXJvbGxiYWNrX2luZGV4X2ZpbGVzKCk7CiAJCWRpZSgiY291bGQgbm90IHJlYWQgY29tbWl0IG1lc3NhZ2UiKTsKQEAgLTEwMTEsMTYgKzEwMjMsMTUgQEAKIAogCWlmIChjbGVhbnVwX21vZGUgIT0gQ0xFQU5VUF9OT05FKQogCQlzdHJpcHNwYWNlKCZzYiwgY2xlYW51cF9tb2RlID09IENMRUFOVVBfQUxMKTsKLQlpZiAoc2IubGVuIDwgaGVhZGVyX2xlbiB8fCBtZXNzYWdlX2lzX2VtcHR5KCZzYiwgaGVhZGVyX2xlbikpIHsKKwlpZiAobWVzc2FnZV9pc19lbXB0eSgmc2IpKSB7CiAJCXJvbGxiYWNrX2luZGV4X2ZpbGVzKCk7CiAJCWZwcmludGYoc3RkZXJyLCAiQWJvcnRpbmcgY29tbWl0IGR1ZSB0byBlbXB0eSBjb21taXQgbWVzc2FnZS5cbiIpOwogCQlleGl0KDEpOwogCX0KLQlzdHJidWZfYWRkY2goJnNiLCAnXDAnKTsKLQlpZiAoaXNfZW5jb2RpbmdfdXRmOChnaXRfY29tbWl0X2VuY29kaW5nKSAmJiAhaXNfdXRmOChzYi5idWYpKQotCQlmcHJpbnRmKHN0ZGVyciwgY29tbWl0X3V0Zjhfd2Fybik7CiAKLQlpZiAod3JpdGVfc2hhMV9maWxlKHNiLmJ1Ziwgc2IubGVuIC0gMSwgY29tbWl0X3R5cGUsIGNvbW1pdF9zaGExKSkgeworCWlmIChjb21taXRfdHJlZShzYi5idWYsIGFjdGl2ZV9jYWNoZV90cmVlLT5zaGExLCBwYXJlbnRzLCBjb21taXRfc2hhMSwKKwkJCWZtdF9pZGVudChhdXRob3JfbmFtZSwgYXV0aG9yX2VtYWlsLCBhdXRob3JfZGF0ZSwKKwkJCQlJREVOVF9FUlJPUl9PTl9OT19OQU1FKSkpIHsKIAkJcm9sbGJhY2tfaW5kZXhfZmlsZXMoKTsKIAkJZGllKCJmYWlsZWQgdG8gd3JpdGUgY29tbWl0IG9iamVjdCIpOwogCX0KQEAgLTEwMjksMTIgKzEwNDAsMTEgQEAKIAkJCQkJICAgaW5pdGlhbF9jb21taXQgPyBOVUxMIDogaGVhZF9zaGExLAogCQkJCQkgICAwKTsKIAotCW5sID0gc3RyY2hyKHNiLmJ1ZiArIGhlYWRlcl9sZW4sICdcbicpOworCW5sID0gc3RyY2hyKHNiLmJ1ZiwgJ1xuJyk7CiAJaWYgKG5sKQogCQlzdHJidWZfc2V0bGVuKCZzYiwgbmwgKyAxIC0gc2IuYnVmKTsKIAllbHNlCiAJCXN0cmJ1Zl9hZGRjaCgmc2IsICdcbicpOwotCXN0cmJ1Zl9yZW1vdmUoJnNiLCAwLCBoZWFkZXJfbGVuKTsKIAlzdHJidWZfaW5zZXJ0KCZzYiwgMCwgcmVmbG9nX21zZywgc3RybGVuKHJlZmxvZ19tc2cpKTsKIAlzdHJidWZfaW5zZXJ0KCZzYiwgc3RybGVuKHJlZmxvZ19tc2cpLCAiOiAiLCAyKTsKIApAQCAtMTA0OSw2ICsxMDU5LDcgQEAKIAogCXVubGluayhnaXRfcGF0aCgiTUVSR0VfSEVBRCIpKTsKIAl1bmxpbmsoZ2l0X3BhdGgoIk1FUkdFX01TRyIpKTsKKwl1bmxpbmsoZ2l0X3BhdGgoIk1FUkdFX01PREUiKSk7CiAJdW5saW5rKGdpdF9wYXRoKCJTUVVBU0hfTVNHIikpOwogCiAJaWYgKGNvbW1pdF9pbmRleF9maWxlcygpKQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1jb3VudC1vYmplY3RzLmMgYi9idWlsdGluLWNvdW50LW9iamVjdHMuYwppbmRleCA5MWI1NDg3Li5hYjM1YjY1IDEwMDY0NAotLS0gYS9idWlsdGluLWNvdW50LW9iamVjdHMuYworKysgYi9idWlsdGluLWNvdW50LW9iamVjdHMuYwpAQCAtNDMsNyArNDMsNyBAQAogCQkJaWYgKGxzdGF0KHBhdGgsICZzdCkgfHwgIVNfSVNSRUcoc3Quc3RfbW9kZSkpCiAJCQkJYmFkID0gMTsKIAkJCWVsc2UKLQkJCQkoKmxvb3NlX3NpemUpICs9IHhzaXplX3Qoc3Quc3RfYmxvY2tzKTsKKwkJCQkoKmxvb3NlX3NpemUpICs9IHhzaXplX3Qob25fZGlza19ieXRlcyhzdCkpOwogCQl9CiAJCWlmIChiYWQpIHsKIAkJCWlmICh2ZXJib3NlKSB7CkBAIC0xMDQsNiArMTA0LDcgQEAKIAlpZiAodmVyYm9zZSkgewogCQlzdHJ1Y3QgcGFja2VkX2dpdCAqcDsKIAkJdW5zaWduZWQgbG9uZyBudW1fcGFjayA9IDA7CisJCXVuc2lnbmVkIGxvbmcgc2l6ZV9wYWNrID0gMDsKIAkJaWYgKCFwYWNrZWRfZ2l0KQogCQkJcHJlcGFyZV9wYWNrZWRfZ2l0KCk7CiAJCWZvciAocCA9IHBhY2tlZF9naXQ7IHA7IHAgPSBwLT5uZXh0KSB7CkBAIC0xMTIsMTcgKzExMywxOSBAQAogCQkJaWYgKG9wZW5fcGFja19pbmRleChwKSkKIAkJCQljb250aW51ZTsKIAkJCXBhY2tlZCArPSBwLT5udW1fb2JqZWN0czsKKwkJCXNpemVfcGFjayArPSBwLT5wYWNrX3NpemUgKyBwLT5pbmRleF9zaXplOwogCQkJbnVtX3BhY2srKzsKIAkJfQogCQlwcmludGYoImNvdW50OiAlbHVcbiIsIGxvb3NlKTsKLQkJcHJpbnRmKCJzaXplOiAlbHVcbiIsIGxvb3NlX3NpemUgLyAyKTsKKwkJcHJpbnRmKCJzaXplOiAlbHVcbiIsIGxvb3NlX3NpemUgLyAxMDI0KTsKIAkJcHJpbnRmKCJpbi1wYWNrOiAlbHVcbiIsIHBhY2tlZCk7CiAJCXByaW50ZigicGFja3M6ICVsdVxuIiwgbnVtX3BhY2spOworCQlwcmludGYoInNpemUtcGFjazogJWx1XG4iLCBzaXplX3BhY2sgLyAxMDI0KTsKIAkJcHJpbnRmKCJwcnVuZS1wYWNrYWJsZTogJWx1XG4iLCBwYWNrZWRfbG9vc2UpOwogCQlwcmludGYoImdhcmJhZ2U6ICVsdVxuIiwgZ2FyYmFnZSk7CiAJfQogCWVsc2UKIAkJcHJpbnRmKCIlbHUgb2JqZWN0cywgJWx1IGtpbG9ieXRlc1xuIiwKLQkJICAgICAgIGxvb3NlLCBsb29zZV9zaXplIC8gMik7CisJCSAgICAgICBsb29zZSwgbG9vc2Vfc2l6ZSAvIDEwMjQpOwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1kZXNjcmliZS5jIGIvYnVpbHRpbi1kZXNjcmliZS5jCmluZGV4IGVjNDA0YzguLjNhMDA3ZWQgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tZGVzY3JpYmUuYworKysgYi9idWlsdGluLWRlc2NyaWJlLmMKQEAgLTE1LDggKzE1LDggQEAKIH07CiAKIHN0YXRpYyBpbnQgZGVidWc7CS8qIERpc3BsYXkgbG90cyBvZiB2ZXJib3NlIGluZm8gKi8KLXN0YXRpYyBpbnQgYWxsOwkvKiBEZWZhdWx0IHRvIGFubm90YXRlZCB0YWdzIG9ubHkgKi8KLXN0YXRpYyBpbnQgdGFnczsJLyogQnV0IGFsbG93IGFueSB0YWdzIGlmIC0tdGFncyBpcyBzcGVjaWZpZWQgKi8KK3N0YXRpYyBpbnQgYWxsOwkvKiBBbnkgdmFsaWQgcmVmIGNhbiBiZSB1c2VkICovCitzdGF0aWMgaW50IHRhZ3M7CS8qIEFsbG93IGxpZ2h0d2VpZ2h0IHRhZ3MgKi8KIHN0YXRpYyBpbnQgbG9uZ2Zvcm1hdDsKIHN0YXRpYyBpbnQgYWJicmV2ID0gREVGQVVMVF9BQkJSRVY7CiBzdGF0aWMgaW50IG1heF9jYW5kaWRhdGVzID0gMTA7CkBAIC0xMTIsOCArMTEyLDYgQEAKIHsKIAlzdHJ1Y3QgcG9zc2libGVfdGFnICphID0gKHN0cnVjdCBwb3NzaWJsZV90YWcgKilhXzsKIAlzdHJ1Y3QgcG9zc2libGVfdGFnICpiID0gKHN0cnVjdCBwb3NzaWJsZV90YWcgKiliXzsKLQlpZiAoYS0+bmFtZS0+cHJpbyAhPSBiLT5uYW1lLT5wcmlvKQotCQlyZXR1cm4gYi0+bmFtZS0+cHJpbyAtIGEtPm5hbWUtPnByaW87CiAJaWYgKGEtPmRlcHRoICE9IGItPmRlcHRoKQogCQlyZXR1cm4gYS0+ZGVwdGggLSBiLT5kZXB0aDsKIAlpZiAoYS0+Zm91bmRfb3JkZXIgIT0gYi0+Zm91bmRfb3JkZXIpCkBAIC0xNjAsNyArMTU4LDcgQEAKIAkJbi0+dGFnID0gbG9va3VwX3RhZyhuLT5zaGExKTsKIAkJaWYgKCFuLT50YWcgfHwgcGFyc2VfdGFnKG4tPnRhZykgfHwgIW4tPnRhZy0+dGFnKQogCQkJZGllKCJhbm5vdGF0ZWQgdGFnICVzIG5vdCBhdmFpbGFibGUiLCBuLT5wYXRoKTsKLQkJaWYgKHN0cmNtcChuLT50YWctPnRhZywgbi0+cGF0aCkpCisJCWlmIChzdHJjbXAobi0+dGFnLT50YWcsIGFsbCA/IG4tPnBhdGggKyA1IDogbi0+cGF0aCkpCiAJCQl3YXJuaW5nKCJ0YWcgJyVzJyBpcyByZWFsbHkgJyVzJyBoZXJlIiwgbi0+dGFnLT50YWcsIG4tPnBhdGgpOwogCX0KIApkaWZmIC0tZ2l0IGEvYnVpbHRpbi1kaWZmLWZpbGVzLmMgYi9idWlsdGluLWRpZmYtZmlsZXMuYwppbmRleCAyYjU3OGM3Li41YjY0MDExIDEwMDY0NAotLS0gYS9idWlsdGluLWRpZmYtZmlsZXMuYworKysgYi9idWlsdGluLWRpZmYtZmlsZXMuYwpAQCAtNTksOCArNTksOCBAQAogCSAgICAocmV2LmRpZmZvcHQub3V0cHV0X2Zvcm1hdCAmIERJRkZfRk9STUFUX1BBVENIKSkKIAkJcmV2LmNvbWJpbmVfbWVyZ2VzID0gcmV2LmRlbnNlX2NvbWJpbmVkX21lcmdlcyA9IDE7CiAKLQlpZiAocmVhZF9jYWNoZSgpIDwgMCkgewotCQlwZXJyb3IoInJlYWRfY2FjaGUiKTsKKwlpZiAocmVhZF9jYWNoZV9wcmVsb2FkKHJldi5kaWZmb3B0LnBhdGhzKSA8IDApIHsKKwkJcGVycm9yKCJyZWFkX2NhY2hlX3ByZWxvYWQiKTsKIAkJcmV0dXJuIC0xOwogCX0KIAlyZXN1bHQgPSBydW5fZGlmZl9maWxlcygmcmV2LCBvcHRpb25zKTsKZGlmZiAtLWdpdCBhL2J1aWx0aW4tZGlmZi10cmVlLmMgYi9idWlsdGluLWRpZmYtdHJlZS5jCmluZGV4IDQxNWNiMTYuLjhlY2VmZDQgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tZGlmZi10cmVlLmMKKysrIGIvYnVpbHRpbi1kaWZmLXRyZWUuYwpAQCAtMTQsMjAgKzE0LDEwIEBACiAJcmV0dXJuIGxvZ190cmVlX2NvbW1pdCgmbG9nX3RyZWVfb3B0LCBjb21taXQpOwogfQogCi1zdGF0aWMgaW50IGRpZmZfdHJlZV9zdGRpbihjaGFyICpsaW5lKQorLyogRGlmZiBvbmUgb3IgbW9yZSBjb21taXRzLiAqLworc3RhdGljIGludCBzdGRpbl9kaWZmX2NvbW1pdChzdHJ1Y3QgY29tbWl0ICpjb21taXQsIGNoYXIgKmxpbmUsIGludCBsZW4pCiB7Ci0JaW50IGxlbiA9IHN0cmxlbihsaW5lKTsKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwotCXN0cnVjdCBjb21taXQgKmNvbW1pdDsKLQotCWlmICghbGVuIHx8IGxpbmVbbGVuLTFdICE9ICdcbicpCi0JCXJldHVybiAtMTsKLQlsaW5lW2xlbi0xXSA9IDA7Ci0JaWYgKGdldF9zaGExX2hleChsaW5lLCBzaGExKSkKLQkJcmV0dXJuIC0xOwotCWNvbW1pdCA9IGxvb2t1cF9jb21taXQoc2hhMSk7Ci0JaWYgKCFjb21taXQgfHwgcGFyc2VfY29tbWl0KGNvbW1pdCkpCi0JCXJldHVybiAtMTsKIAlpZiAoaXNzcGFjZShsaW5lWzQwXSkgJiYgIWdldF9zaGExX2hleChsaW5lKzQxLCBzaGExKSkgewogCQkvKiBHcmFmdCB0aGUgZmFrZSBwYXJlbnRzIGxvY2FsbHkgdG8gdGhlIGNvbW1pdCAqLwogCQlpbnQgcG9zID0gNDE7CkBAIC01Miw2ICs0Miw0OSBAQAogCXJldHVybiBsb2dfdHJlZV9jb21taXQoJmxvZ190cmVlX29wdCwgY29tbWl0KTsKIH0KIAorLyogRGlmZiB0d28gdHJlZXMuICovCitzdGF0aWMgaW50IHN0ZGluX2RpZmZfdHJlZXMoc3RydWN0IHRyZWUgKnRyZWUxLCBjaGFyICpsaW5lLCBpbnQgbGVuKQoreworCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CisJc3RydWN0IHRyZWUgKnRyZWUyOworCWlmIChsZW4gIT0gODIgfHwgIWlzc3BhY2UobGluZVs0MF0pIHx8IGdldF9zaGExX2hleChsaW5lICsgNDEsIHNoYTEpKQorCQlyZXR1cm4gZXJyb3IoIk5lZWQgZXhhY3RseSB0d28gdHJlZXMsIHNlcGFyYXRlZCBieSBhIHNwYWNlIik7CisJdHJlZTIgPSBsb29rdXBfdHJlZShzaGExKTsKKwlpZiAoIXRyZWUyIHx8IHBhcnNlX3RyZWUodHJlZTIpKQorCQlyZXR1cm4gLTE7CisJcHJpbnRmKCIlcyAlc1xuIiwgc2hhMV90b19oZXgodHJlZTEtPm9iamVjdC5zaGExKSwKKwkJCSAgc2hhMV90b19oZXgodHJlZTItPm9iamVjdC5zaGExKSk7CisJZGlmZl90cmVlX3NoYTEodHJlZTEtPm9iamVjdC5zaGExLCB0cmVlMi0+b2JqZWN0LnNoYTEsCisJCSAgICAgICAiIiwgJmxvZ190cmVlX29wdC5kaWZmb3B0KTsKKwlsb2dfdHJlZV9kaWZmX2ZsdXNoKCZsb2dfdHJlZV9vcHQpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRpZmZfdHJlZV9zdGRpbihjaGFyICpsaW5lKQoreworCWludCBsZW4gPSBzdHJsZW4obGluZSk7CisJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKKwlzdHJ1Y3Qgb2JqZWN0ICpvYmo7CisKKwlpZiAoIWxlbiB8fCBsaW5lW2xlbi0xXSAhPSAnXG4nKQorCQlyZXR1cm4gLTE7CisJbGluZVtsZW4tMV0gPSAwOworCWlmIChnZXRfc2hhMV9oZXgobGluZSwgc2hhMSkpCisJCXJldHVybiAtMTsKKwlvYmogPSBsb29rdXBfdW5rbm93bl9vYmplY3Qoc2hhMSk7CisJaWYgKCFvYmogfHwgIW9iai0+cGFyc2VkKQorCQlvYmogPSBwYXJzZV9vYmplY3Qoc2hhMSk7CisJaWYgKCFvYmopCisJCXJldHVybiAtMTsKKwlpZiAob2JqLT50eXBlID09IE9CSl9DT01NSVQpCisJCXJldHVybiBzdGRpbl9kaWZmX2NvbW1pdCgoc3RydWN0IGNvbW1pdCAqKW9iaiwgbGluZSwgbGVuKTsKKwlpZiAob2JqLT50eXBlID09IE9CSl9UUkVFKQorCQlyZXR1cm4gc3RkaW5fZGlmZl90cmVlcygoc3RydWN0IHRyZWUgKilvYmosIGxpbmUsIGxlbik7CisJZXJyb3IoIk9iamVjdCAlcyBpcyBhICVzLCBub3QgYSBjb21taXQgb3IgdHJlZSIsCisJICAgICAgc2hhMV90b19oZXgoc2hhMSksIHR5cGVuYW1lKG9iai0+dHlwZSkpOworCXJldHVybiAtMTsKK30KKwogc3RhdGljIGNvbnN0IGNoYXIgZGlmZl90cmVlX3VzYWdlW10gPQogImdpdCBkaWZmLXRyZWUgWy0tc3RkaW5dIFstbV0gWy1jXSBbLS1jY10gWy1zXSBbLXZdIFstLXByZXR0eV0gWy10XSBbLXJdIFstLXJvb3RdICIKICJbPGNvbW1vbiBkaWZmIG9wdGlvbnM+XSA8dHJlZS1pc2g+IFs8dHJlZS1pc2g+XSBbPHBhdGg+Li4uXVxuIgpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1kaWZmLmMgYi9idWlsdGluLWRpZmYuYwppbmRleCAzNzVhMGQzLi5kNzVkNjliIDEwMDY0NAotLS0gYS9idWlsdGluLWRpZmYuYworKysgYi9idWlsdGluLWRpZmYuYwpAQCAtNzQsNiArNzQsOCBAQAogCWlmICghKFNfSVNSRUcoc3Quc3RfbW9kZSkgfHwgU19JU0xOSyhzdC5zdF9tb2RlKSkpCiAJCWRpZSgiJyVzJzogbm90IGEgcmVndWxhciBmaWxlIG9yIHN5bWxpbmsiLCBwYXRoKTsKIAorCWRpZmZfc2V0X21uZW1vbmljX3ByZWZpeCgmcmV2cy0+ZGlmZm9wdCwgIm8vIiwgIncvIik7CisKIAlpZiAoYmxvYlswXS5tb2RlID09IFNfSUZJTlZBTElEKQogCQlibG9iWzBdLm1vZGUgPSBjYW5vbl9tb2RlKHN0LnN0X21vZGUpOwogCkBAIC0xMTYsNyArMTE4LDcgQEAKIAlpbnQgY2FjaGVkID0gMDsKIAl3aGlsZSAoMSA8IGFyZ2MpIHsKIAkJY29uc3QgY2hhciAqYXJnID0gYXJndlsxXTsKLQkJaWYgKCFzdHJjbXAoYXJnLCAiLS1jYWNoZWQiKSkKKwkJaWYgKCFzdHJjbXAoYXJnLCAiLS1jYWNoZWQiKSB8fCAhc3RyY21wKGFyZywgIi0tc3RhZ2VkIikpCiAJCQljYWNoZWQgPSAxOwogCQllbHNlCiAJCQl1c2FnZShidWlsdGluX2RpZmZfdXNhZ2UpOwpAQCAtMTMyLDggKzEzNCw4IEBACiAJICAgIHJldnMtPm1heF9jb3VudCAhPSAtMSB8fCByZXZzLT5taW5fYWdlICE9IC0xIHx8CiAJICAgIHJldnMtPm1heF9hZ2UgIT0gLTEpCiAJCXVzYWdlKGJ1aWx0aW5fZGlmZl91c2FnZSk7Ci0JaWYgKHJlYWRfY2FjaGUoKSA8IDApIHsKLQkJcGVycm9yKCJyZWFkX2NhY2hlIik7CisJaWYgKHJlYWRfY2FjaGVfcHJlbG9hZChyZXZzLT5kaWZmb3B0LnBhdGhzKSA8IDApIHsKKwkJcGVycm9yKCJyZWFkX2NhY2hlX3ByZWxvYWQiKTsKIAkJcmV0dXJuIC0xOwogCX0KIAlyZXR1cm4gcnVuX2RpZmZfaW5kZXgocmV2cywgY2FjaGVkKTsKQEAgLTIzMiw4ICsyMzQsOCBAQAogCQlyZXZzLT5jb21iaW5lX21lcmdlcyA9IHJldnMtPmRlbnNlX2NvbWJpbmVkX21lcmdlcyA9IDE7CiAKIAlzZXR1cF93b3JrX3RyZWUoKTsKLQlpZiAocmVhZF9jYWNoZSgpIDwgMCkgewotCQlwZXJyb3IoInJlYWRfY2FjaGUiKTsKKwlpZiAocmVhZF9jYWNoZV9wcmVsb2FkKHJldnMtPmRpZmZvcHQucGF0aHMpIDwgMCkgeworCQlwZXJyb3IoInJlYWRfY2FjaGVfcHJlbG9hZCIpOwogCQlyZXR1cm4gLTE7CiAJfQogCXJlc3VsdCA9IHJ1bl9kaWZmX2ZpbGVzKHJldnMsIG9wdGlvbnMpOwpAQCAtMjg4LDggKzI5MCw5IEBACiAJLyogT3RoZXJ3aXNlLCB3ZSBhcmUgZG9pbmcgdGhlIHVzdWFsICJnaXQiIGRpZmYgKi8KIAlyZXYuZGlmZm9wdC5za2lwX3N0YXRfdW5tYXRjaCA9ICEhZGlmZl9hdXRvX3JlZnJlc2hfaW5kZXg7CiAKLQkvKiBEZWZhdWx0IHRvIGxldCBleHRlcm5hbCBiZSB1c2VkICovCisJLyogRGVmYXVsdCB0byBsZXQgZXh0ZXJuYWwgYW5kIHRleHRjb252IGJlIHVzZWQgKi8KIAlESUZGX09QVF9TRVQoJnJldi5kaWZmb3B0LCBBTExPV19FWFRFUk5BTCk7CisJRElGRl9PUFRfU0VUKCZyZXYuZGlmZm9wdCwgQUxMT1dfVEVYVENPTlYpOwogCiAJaWYgKG5vbmdpdCkKIAkJZGllKCJOb3QgYSBnaXQgcmVwb3NpdG9yeSIpOwpAQCAtMzIwLDcgKzMyMyw4IEBACiAJCQljb25zdCBjaGFyICphcmcgPSBhcmd2W2ldOwogCQkJaWYgKCFzdHJjbXAoYXJnLCAiLS0iKSkKIAkJCQlicmVhazsKLQkJCWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1jYWNoZWQiKSkgeworCQkJZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLWNhY2hlZCIpIHx8CisJCQkJICFzdHJjbXAoYXJnLCAiLS1zdGFnZWQiKSkgewogCQkJCWFkZF9oZWFkX3RvX3BlbmRpbmcoJnJldik7CiAJCQkJaWYgKCFyZXYucGVuZGluZy5ucikKIAkJCQkJZGllKCJObyBIRUFEIGNvbW1pdCB0byBjb21wYXJlIHdpdGggKHlldCkiKTsKZGlmZiAtLWdpdCBhL2J1aWx0aW4tZmFzdC1leHBvcnQuYyBiL2J1aWx0aW4tZmFzdC1leHBvcnQuYwppbmRleCBjZGI3ZGY1Li5mZGY0YWU5IDEwMDY0NAotLS0gYS9idWlsdGluLWZhc3QtZXhwb3J0LmMKKysrIGIvYnVpbHRpbi1mYXN0LWV4cG9ydC5jCkBAIC00OTcsNiArNDk3LDkgQEAKIAkJT1BUX0VORCgpCiAJfTsKIAorCWlmIChhcmdjID09IDEpCisJCXVzYWdlX3dpdGhfb3B0aW9ucyAoZmFzdF9leHBvcnRfdXNhZ2UsIG9wdGlvbnMpOworCiAJLyogd2UgaGFuZGxlIGVuY29kaW5ncyAqLwogCWdpdF9jb25maWcoZ2l0X2RlZmF1bHRfY29uZmlnLCBOVUxMKTsKIApkaWZmIC0tZ2l0IGEvYnVpbHRpbi1mZXRjaC0tdG9vbC5jIGIvYnVpbHRpbi1mZXRjaC0tdG9vbC5jCmluZGV4IDc0NjBhYjcuLjQ2OWIwN2UgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tZmV0Y2gtLXRvb2wuYworKysgYi9idWlsdGluLWZldGNoLS10b29sLmMKQEAgLTUsOCArNSw3IEBACiAKIHN0YXRpYyBjaGFyICpnZXRfc3RkaW4odm9pZCkKIHsKLQlzdHJ1Y3Qgc3RyYnVmIGJ1ZjsKLQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCWlmIChzdHJidWZfcmVhZCgmYnVmLCAwLCAxMDI0KSA8IDApIHsKIAkJZGllKCJlcnJvciByZWFkaW5nIHN0YW5kYXJkIGlucHV0OiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CiAJfQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1mZXRjaC1wYWNrLmMgYi9idWlsdGluLWZldGNoLXBhY2suYwppbmRleCAyMmE1NzEyLi42N2ZiODBlIDEwMDY0NAotLS0gYS9idWlsdGluLWZldGNoLXBhY2suYworKysgYi9idWlsdGluLWZldGNoLXBhY2suYwpAQCAtNTQwLDcgKzU0MCw3IEBACiAJCQkqYXYrKyA9ICItLWZpeC10aGluIjsKIAkJaWYgKGFyZ3MubG9ja19wYWNrIHx8IHVucGFja19saW1pdCkgewogCQkJaW50IHMgPSBzcHJpbnRmKGtlZXBfYXJnLAotCQkJCQkiLS1rZWVwPWZldGNoLXBhY2sgJWQgb24gIiwgZ2V0cGlkKCkpOworCQkJCQkiLS1rZWVwPWZldGNoLXBhY2sgJSJQUkl1TUFYICIgb24gIiwgKHVpbnRtYXhfdCkgZ2V0cGlkKCkpOwogCQkJaWYgKGdldGhvc3RuYW1lKGtlZXBfYXJnICsgcywgc2l6ZW9mKGtlZXBfYXJnKSAtIHMpKQogCQkJCXN0cmNweShrZWVwX2FyZyArIHMsICJsb2NhbGhvc3QiKTsKIAkJCSphdisrID0ga2VlcF9hcmc7CkBAIC03MzUsNyArNzM1LDcgQEAKIAljb25uID0gZ2l0X2Nvbm5lY3QoZmQsIChjaGFyICopZGVzdCwgYXJncy51cGxvYWRwYWNrLAogCQkJICAgYXJncy52ZXJib3NlID8gQ09OTkVDVF9WRVJCT1NFIDogMCk7CiAJaWYgKGNvbm4pIHsKLQkJZ2V0X3JlbW90ZV9oZWFkcyhmZFswXSwgJnJlZiwgMCwgTlVMTCwgMCk7CisJCWdldF9yZW1vdGVfaGVhZHMoZmRbMF0sICZyZWYsIDAsIE5VTEwsIDAsIE5VTEwpOwogCiAJCXJlZiA9IGZldGNoX3BhY2soJmFyZ3MsIGZkLCBjb25uLCByZWYsIGRlc3QsIG5yX2hlYWRzLCBoZWFkcywgTlVMTCk7CiAJCWNsb3NlKGZkWzBdKTsKZGlmZiAtLWdpdCBhL2J1aWx0aW4tZmV0Y2guYyBiL2J1aWx0aW4tZmV0Y2guYwppbmRleCA1N2MxNjFkLi43NTY4MTYzIDEwMDY0NAotLS0gYS9idWlsdGluLWZldGNoLmMKKysrIGIvYnVpbHRpbi1mZXRjaC5jCkBAIC0yMiw3ICsyMiw3IEBACiAJVEFHU19TRVQgPSAyCiB9OwogCi1zdGF0aWMgaW50IGFwcGVuZCwgZm9yY2UsIGtlZXAsIHVwZGF0ZV9oZWFkX29rLCB2ZXJib3NlLCBxdWlldDsKK3N0YXRpYyBpbnQgYXBwZW5kLCBmb3JjZSwga2VlcCwgdXBkYXRlX2hlYWRfb2ssIHZlcmJvc2l0eTsKIHN0YXRpYyBpbnQgdGFncyA9IFRBR1NfREVGQVVMVDsKIHN0YXRpYyBjb25zdCBjaGFyICpkZXB0aDsKIHN0YXRpYyBjb25zdCBjaGFyICp1cGxvYWRfcGFjazsKQEAgLTMwLDggKzMwLDcgQEAKIHN0YXRpYyBzdHJ1Y3QgdHJhbnNwb3J0ICp0cmFuc3BvcnQ7CiAKIHN0YXRpYyBzdHJ1Y3Qgb3B0aW9uIGJ1aWx0aW5fZmV0Y2hfb3B0aW9uc1tdID0gewotCU9QVF9fUVVJRVQoJnF1aWV0KSwKLQlPUFRfX1ZFUkJPU0UoJnZlcmJvc2UpLAorCU9QVF9fVkVSQk9TSVRZKCZ2ZXJib3NpdHkpLAogCU9QVF9CT09MRUFOKCdhJywgImFwcGVuZCIsICZhcHBlbmQsCiAJCSAgICAiYXBwZW5kIHRvIC5naXQvRkVUQ0hfSEVBRCBpbnN0ZWFkIG9mIG92ZXJ3cml0aW5nIiksCiAJT1BUX1NUUklORygwLCAidXBsb2FkLXBhY2siLCAmdXBsb2FkX3BhY2ssICJQQVRIIiwKQEAgLTE5Miw3ICsxOTEsNiBAQAogCiBzdGF0aWMgaW50IHVwZGF0ZV9sb2NhbF9yZWYoc3RydWN0IHJlZiAqcmVmLAogCQkJICAgIGNvbnN0IGNoYXIgKnJlbW90ZSwKLQkJCSAgICBpbnQgdmVyYm9zZSwKIAkJCSAgICBjaGFyICpkaXNwbGF5KQogewogCXN0cnVjdCBjb21taXQgKmN1cnJlbnQgPSBOVUxMLCAqdXBkYXRlZDsKQEAgLTIxMCw3ICsyMDgsNyBAQAogCQlkaWUoIm9iamVjdCAlcyBub3QgZm91bmQiLCBzaGExX3RvX2hleChyZWYtPm5ld19zaGExKSk7CiAKIAlpZiAoIWhhc2hjbXAocmVmLT5vbGRfc2hhMSwgcmVmLT5uZXdfc2hhMSkpIHsKLQkJaWYgKHZlcmJvc2UpCisJCWlmICh2ZXJib3NpdHkgPiAwKQogCQkJc3ByaW50ZihkaXNwbGF5LCAiPSAlLSpzICUtKnMgLT4gJXMiLCBTVU1NQVJZX1dJRFRILAogCQkJCSJbdXAgdG8gZGF0ZV0iLCBSRUZDT0xfV0lEVEgsIHJlbW90ZSwKIAkJCQlwcmV0dHlfcmVmKTsKQEAgLTM2NiwxOCArMzY0LDE5IEBACiAJCQlub3RlKTsKIAogCQlpZiAocmVmKQotCQkJcmMgfD0gdXBkYXRlX2xvY2FsX3JlZihyZWYsIHdoYXQsIHZlcmJvc2UsIG5vdGUpOworCQkJcmMgfD0gdXBkYXRlX2xvY2FsX3JlZihyZWYsIHdoYXQsIG5vdGUpOwogCQllbHNlCiAJCQlzcHJpbnRmKG5vdGUsICIqICUtKnMgJS0qcyAtPiBGRVRDSF9IRUFEIiwKIAkJCQlTVU1NQVJZX1dJRFRILCAqa2luZCA/IGtpbmQgOiAiYnJhbmNoIiwKIAkJCQkgUkVGQ09MX1dJRFRILCAqd2hhdCA/IHdoYXQgOiAiSEVBRCIpOwogCQlpZiAoKm5vdGUpIHsKLQkJCWlmICghc2hvd25fdXJsKSB7CisJCQlpZiAodmVyYm9zaXR5ID49IDAgJiYgIXNob3duX3VybCkgewogCQkJCWZwcmludGYoc3RkZXJyLCAiRnJvbSAlLipzXG4iLAogCQkJCQkJdXJsX2xlbiwgdXJsKTsKIAkJCQlzaG93bl91cmwgPSAxOwogCQkJfQotCQkJZnByaW50ZihzdGRlcnIsICIgJXNcbiIsIG5vdGUpOworCQkJaWYgKHZlcmJvc2l0eSA+PSAwKQorCQkJCWZwcmludGYoc3RkZXJyLCAiICVzXG4iLCBub3RlKTsKIAkJfQogCX0KIAlmY2xvc2UoZnApOwpAQCAtNTIxLDggKzUyMCw4IEBACiAJCSAgICAgd2lsbF9mZXRjaChoZWFkLCByZWYtPm9sZF9zaGExKSkpIHsKIAkJCXN0cmluZ19saXN0X2luc2VydChyZWZfbmFtZSwgJm5ld19yZWZzKTsKIAotCQkJcm0gPSBhbGxvY19yZWZfZnJvbV9zdHIocmVmX25hbWUpOwotCQkJcm0tPnBlZXJfcmVmID0gYWxsb2NfcmVmX2Zyb21fc3RyKHJlZl9uYW1lKTsKKwkJCXJtID0gYWxsb2NfcmVmKHJlZl9uYW1lKTsKKwkJCXJtLT5wZWVyX3JlZiA9IGFsbG9jX3JlZihyZWZfbmFtZSk7CiAJCQloYXNoY3B5KHJtLT5vbGRfc2hhMSwgcmVmX3NoYTEpOwogCiAJCQkqKnRhaWwgPSBybTsKQEAgLTYzNyw5ICs2MzYsOSBAQAogCQlyZW1vdGUgPSByZW1vdGVfZ2V0KGFyZ3ZbMF0pOwogCiAJdHJhbnNwb3J0ID0gdHJhbnNwb3J0X2dldChyZW1vdGUsIHJlbW90ZS0+dXJsWzBdKTsKLQlpZiAodmVyYm9zZSA+PSAyKQorCWlmICh2ZXJib3NpdHkgPj0gMikKIAkJdHJhbnNwb3J0LT52ZXJib3NlID0gMTsKLQlpZiAocXVpZXQpCisJaWYgKHZlcmJvc2l0eSA8IDApCiAJCXRyYW5zcG9ydC0+dmVyYm9zZSA9IC0xOwogCWlmICh1cGxvYWRfcGFjaykKIAkJc2V0X29wdGlvbihUUkFOU19PUFRfVVBMT0FEUEFDSywgdXBsb2FkX3BhY2spOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1mbXQtbWVyZ2UtbXNnLmMgYi9idWlsdGluLWZtdC1tZXJnZS1tc2cuYwppbmRleCBkZjAyYmE3Li5kZjE4ZjQwIDEwMDY0NAotLS0gYS9idWlsdGluLWZtdC1tZXJnZS1tc2cuYworKysgYi9idWlsdGluLWZtdC1tZXJnZS1tc2cuYwpAQCAtNSw4ICs1LDEwIEBACiAjaW5jbHVkZSAicmV2aXNpb24uaCIKICNpbmNsdWRlICJ0YWcuaCIKIAotc3RhdGljIGNvbnN0IGNoYXIgKmZtdF9tZXJnZV9tc2dfdXNhZ2UgPQotCSJnaXQgZm10LW1lcmdlLW1zZyBbLS1sb2ddIFstLW5vLWxvZ10gWy0tZmlsZSA8ZmlsZT5dIjsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZm10X21lcmdlX21zZ191c2FnZVtdID0geworCSJnaXQgZm10LW1lcmdlLW1zZyBbLS1sb2d8LS1uby1sb2ddIFstLWZpbGUgPGZpbGU+XSIsCisJTlVMTAorfTsKIAogc3RhdGljIGludCBtZXJnZV9zdW1tYXJ5OwogCkBAIC0zNDcsNDYgKzM0OSwzNSBAQAogCiBpbnQgY21kX2ZtdF9tZXJnZV9tc2coaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCiB7CisJY29uc3QgY2hhciAqaW5wYXRoID0gTlVMTDsKKwlzdHJ1Y3Qgb3B0aW9uIG9wdGlvbnNbXSA9IHsKKwkJT1BUX0JPT0xFQU4oMCwgImxvZyIsICAgICAmbWVyZ2Vfc3VtbWFyeSwgInBvcHVsYXRlIGxvZyB3aXRoIHRoZSBzaG9ydGxvZyIpLAorCQlPUFRfQk9PTEVBTigwLCAic3VtbWFyeSIsICZtZXJnZV9zdW1tYXJ5LCAiYWxpYXMgZm9yIC0tbG9nIiksCisJCU9QVF9TVFJJTkcoJ0YnLCAiZmlsZSIsICAgJmlucGF0aCwgImZpbGUiLCAiZmlsZSB0byByZWFkIGZyb20iKSwKKwkJT1BUX0VORCgpCisJfTsKKwogCUZJTEUgKmluID0gc3RkaW47Ci0Jc3RydWN0IHN0cmJ1ZiBpbnB1dCwgb3V0cHV0OworCXN0cnVjdCBzdHJidWYgaW5wdXQgPSBTVFJCVUZfSU5JVCwgb3V0cHV0ID0gU1RSQlVGX0lOSVQ7CiAJaW50IHJldDsKIAogCWdpdF9jb25maWcoZm10X21lcmdlX21zZ19jb25maWcsIE5VTEwpOworCWFyZ2MgPSBwYXJzZV9vcHRpb25zKGFyZ2MsIGFyZ3YsIG9wdGlvbnMsIGZtdF9tZXJnZV9tc2dfdXNhZ2UsIDApOworCWlmIChhcmdjID4gMCkKKwkJdXNhZ2Vfd2l0aF9vcHRpb25zKGZtdF9tZXJnZV9tc2dfdXNhZ2UsIG9wdGlvbnMpOwogCi0Jd2hpbGUgKGFyZ2MgPiAxKSB7Ci0JCWlmICghc3RyY21wKGFyZ3ZbMV0sICItLWxvZyIpIHx8ICFzdHJjbXAoYXJndlsxXSwgIi0tc3VtbWFyeSIpKQotCQkJbWVyZ2Vfc3VtbWFyeSA9IDE7Ci0JCWVsc2UgaWYgKCFzdHJjbXAoYXJndlsxXSwgIi0tbm8tbG9nIikKLQkJCQl8fCAhc3RyY21wKGFyZ3ZbMV0sICItLW5vLXN1bW1hcnkiKSkKLQkJCW1lcmdlX3N1bW1hcnkgPSAwOwotCQllbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0sICItRiIpIHx8ICFzdHJjbXAoYXJndlsxXSwgIi0tZmlsZSIpKSB7Ci0JCQlpZiAoYXJnYyA8IDMpCi0JCQkJZGllICgiV2hpY2ggZmlsZT8iKTsKLQkJCWlmICghc3RyY21wKGFyZ3ZbMl0sICItIikpCi0JCQkJaW4gPSBzdGRpbjsKLQkJCWVsc2UgewotCQkJCWZjbG9zZShpbik7Ci0JCQkJaW4gPSBmb3Blbihhcmd2WzJdLCAiciIpOwotCQkJCWlmICghaW4pCi0JCQkJCWRpZSgiY2Fubm90IG9wZW4gJXMiLCBhcmd2WzJdKTsKLQkJCX0KLQkJCWFyZ2MtLTsgYXJndisrOwotCQl9IGVsc2UKLQkJCWJyZWFrOwotCQlhcmdjLS07IGFyZ3YrKzsKKwlpZiAoaW5wYXRoICYmIHN0cmNtcChpbnBhdGgsICItIikpIHsKKwkJaW4gPSBmb3BlbihpbnBhdGgsICJyIik7CisJCWlmICghaW4pCisJCQlkaWUoImNhbm5vdCBvcGVuICVzIiwgaW5wYXRoKTsKIAl9CiAKLQlpZiAoYXJnYyA+IDEpCi0JCXVzYWdlKGZtdF9tZXJnZV9tc2dfdXNhZ2UpOwotCi0Jc3RyYnVmX2luaXQoJmlucHV0LCAwKTsKIAlpZiAoc3RyYnVmX3JlYWQoJmlucHV0LCBmaWxlbm8oaW4pLCAwKSA8IDApCiAJCWRpZSgiY291bGQgbm90IHJlYWQgaW5wdXQgZmlsZSAlcyIsIHN0cmVycm9yKGVycm5vKSk7Ci0Jc3RyYnVmX2luaXQoJm91dHB1dCwgMCk7CiAKIAlyZXQgPSBmbXRfbWVyZ2VfbXNnKG1lcmdlX3N1bW1hcnksICZpbnB1dCwgJm91dHB1dCk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKLQlwcmludGYoIiVzIiwgb3V0cHV0LmJ1Zik7CisJd3JpdGVfaW5fZnVsbChTVERPVVRfRklMRU5PLCBvdXRwdXQuYnVmLCBvdXRwdXQubGVuKTsKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2J1aWx0aW4tZm9yLWVhY2gtcmVmLmMgYi9idWlsdGluLWZvci1lYWNoLXJlZi5jCmluZGV4IDcyYzA4NzguLmU0NmI3YWQgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tZm9yLWVhY2gtcmVmLmMKKysrIGIvYnVpbHRpbi1mb3ItZWFjaC1yZWYuYwpAQCAtNTQ0LDYgKzU0NCwxMDkgQEAKIH0KIAogLyoKKyAqIGdlbmVyYXRlIGEgZm9ybWF0IHN1aXRhYmxlIGZvciBzY2FuZiBmcm9tIGEgcmVmX3Jldl9wYXJzZV9ydWxlcworICogcnVsZSwgdGhhdCBpcyByZXBsYWNlIHRoZSAiJS4qcyIgc3BlYyB3aXRoIGEgIiVzIiBzcGVjCisgKi8KK3N0YXRpYyB2b2lkIGdlbl9zY2FuZl9mbXQoY2hhciAqc2NhbmZfZm10LCBjb25zdCBjaGFyICpydWxlKQoreworCWNoYXIgKnNwZWM7CisKKwlzcGVjID0gc3Ryc3RyKHJ1bGUsICIlLipzIik7CisJaWYgKCFzcGVjIHx8IHN0cnN0cihzcGVjICsgNCwgIiUuKnMiKSkKKwkJZGllKCJpbnZhbGlkIHJ1bGUgaW4gcmVmX3Jldl9wYXJzZV9ydWxlczogJXMiLCBydWxlKTsKKworCS8qIGNvcHkgYWxsIHVudGlsIHNwZWMgKi8KKwlzdHJuY3B5KHNjYW5mX2ZtdCwgcnVsZSwgc3BlYyAtIHJ1bGUpOworCXNjYW5mX2ZtdFtzcGVjIC0gcnVsZV0gPSAnXDAnOworCS8qIGNvcHkgbmV3IHNwZWMgKi8KKwlzdHJjYXQoc2NhbmZfZm10LCAiJXMiKTsKKwkvKiBjb3B5IHJlbWFpbmluZyBydWxlICovCisJc3RyY2F0KHNjYW5mX2ZtdCwgc3BlYyArIDQpOworCisJcmV0dXJuOworfQorCisvKgorICogU2hvcnRlbiB0aGUgcmVmbmFtZSB0byBhbiBub24tYW1iaWd1b3VzIGZvcm0KKyAqLworc3RhdGljIGNoYXIgKmdldF9zaG9ydF9yZWYoc3RydWN0IHJlZmluZm8gKnJlZikKK3sKKwlpbnQgaTsKKwlzdGF0aWMgY2hhciAqKnNjYW5mX2ZtdHM7CisJc3RhdGljIGludCBucl9ydWxlczsKKwljaGFyICpzaG9ydF9uYW1lOworCisJLyogcHJlIGdlbmVyYXRlIHNjYW5mIGZvcm1hdHMgZnJvbSByZWZfcmV2X3BhcnNlX3J1bGVzW10gKi8KKwlpZiAoIW5yX3J1bGVzKSB7CisJCXNpemVfdCB0b3RhbF9sZW4gPSAwOworCisJCS8qIHRoZSBydWxlIGxpc3QgaXMgTlVMTCB0ZXJtaW5hdGVkLCBjb3VudCB0aGVtIGZpcnN0ICovCisJCWZvciAoOyByZWZfcmV2X3BhcnNlX3J1bGVzW25yX3J1bGVzXTsgbnJfcnVsZXMrKykKKwkJCS8qIG5vICsxIGJlY2F1c2Ugc3RybGVuKCIlcyIpIDwgc3RybGVuKCIlLipzIikgKi8KKwkJCXRvdGFsX2xlbiArPSBzdHJsZW4ocmVmX3Jldl9wYXJzZV9ydWxlc1tucl9ydWxlc10pOworCisJCXNjYW5mX2ZtdHMgPSB4bWFsbG9jKG5yX3J1bGVzICogc2l6ZW9mKGNoYXIgKikgKyB0b3RhbF9sZW4pOworCisJCXRvdGFsX2xlbiA9IDA7CisJCWZvciAoaSA9IDA7IGkgPCBucl9ydWxlczsgaSsrKSB7CisJCQlzY2FuZl9mbXRzW2ldID0gKGNoYXIgKikmc2NhbmZfZm10c1tucl9ydWxlc10KKwkJCQkJKyB0b3RhbF9sZW47CisJCQlnZW5fc2NhbmZfZm10KHNjYW5mX2ZtdHNbaV0sIHJlZl9yZXZfcGFyc2VfcnVsZXNbaV0pOworCQkJdG90YWxfbGVuICs9IHN0cmxlbihyZWZfcmV2X3BhcnNlX3J1bGVzW2ldKTsKKwkJfQorCX0KKworCS8qIGJhaWwgb3V0IGlmIHRoZXJlIGFyZSBubyBydWxlcyAqLworCWlmICghbnJfcnVsZXMpCisJCXJldHVybiByZWYtPnJlZm5hbWU7CisKKwkvKiBidWZmZXIgZm9yIHNjYW5mIHJlc3VsdCwgYXQgbW9zdCByZWYtPnJlZm5hbWUgbXVzdCBmaXQgKi8KKwlzaG9ydF9uYW1lID0geHN0cmR1cChyZWYtPnJlZm5hbWUpOworCisJLyogc2tpcCBmaXJzdCBydWxlLCBpdCB3aWxsIGFsd2F5cyBtYXRjaCAqLworCWZvciAoaSA9IG5yX3J1bGVzIC0gMTsgaSA+IDAgOyAtLWkpIHsKKwkJaW50IGo7CisJCWludCBzaG9ydF9uYW1lX2xlbjsKKworCQlpZiAoMSAhPSBzc2NhbmYocmVmLT5yZWZuYW1lLCBzY2FuZl9mbXRzW2ldLCBzaG9ydF9uYW1lKSkKKwkJCWNvbnRpbnVlOworCisJCXNob3J0X25hbWVfbGVuID0gc3RybGVuKHNob3J0X25hbWUpOworCisJCS8qCisJCSAqIGNoZWNrIGlmIHRoZSBzaG9ydCBuYW1lIHJlc29sdmVzIHRvIGEgdmFsaWQgcmVmLAorCQkgKiBidXQgdXNlIG9ubHkgcnVsZXMgcHJpb3IgdG8gdGhlIG1hdGNoZWQgb25lCisJCSAqLworCQlmb3IgKGogPSAwOyBqIDwgaTsgaisrKSB7CisJCQljb25zdCBjaGFyICpydWxlID0gcmVmX3Jldl9wYXJzZV9ydWxlc1tqXTsKKwkJCXVuc2lnbmVkIGNoYXIgc2hvcnRfb2JqZWN0bmFtZVsyMF07CisJCQljaGFyIHJlZm5hbWVbUEFUSF9NQVhdOworCisJCQkvKgorCQkJICogdGhlIHNob3J0IG5hbWUgaXMgYW1iaWd1b3VzLCBpZiBpdCByZXNvbHZlcworCQkJICogKHdpdGggdGhpcyBwcmV2aW91cyBydWxlKSB0byBhIHZhbGlkIHJlZgorCQkJICogcmVhZF9yZWYoKSByZXR1cm5zIDAgb24gc3VjY2VzcworCQkJICovCisJCQlta3NucGF0aChyZWZuYW1lLCBzaXplb2YocmVmbmFtZSksCisJCQkJIHJ1bGUsIHNob3J0X25hbWVfbGVuLCBzaG9ydF9uYW1lKTsKKwkJCWlmICghcmVhZF9yZWYocmVmbmFtZSwgc2hvcnRfb2JqZWN0bmFtZSkpCisJCQkJYnJlYWs7CisJCX0KKworCQkvKgorCQkgKiBzaG9ydCBuYW1lIGlzIG5vbi1hbWJpZ3VvdXMgaWYgYWxsIHByZXZpb3VzIHJ1bGVzCisJCSAqIGhhdmVuJ3QgcmVzb2x2ZWQgdG8gYSB2YWxpZCByZWYKKwkJICovCisJCWlmIChqID09IGkpCisJCQlyZXR1cm4gc2hvcnRfbmFtZTsKKwl9CisKKwlmcmVlKHNob3J0X25hbWUpOworCXJldHVybiByZWYtPnJlZm5hbWU7Cit9CisKKworLyoKICAqIFBhcnNlIHRoZSBvYmplY3QgcmVmZXJyZWQgYnkgcmVmLCBhbmQgZ3JhYiBuZWVkZWQgdmFsdWUuCiAgKi8KIHN0YXRpYyB2b2lkIHBvcHVsYXRlX3ZhbHVlKHN0cnVjdCByZWZpbmZvICpyZWYpCkBAIC01NjgsMTMgKzY3MSwzMyBAQAogCWZvciAoaSA9IDA7IGkgPCB1c2VkX2F0b21fY250OyBpKyspIHsKIAkJY29uc3QgY2hhciAqbmFtZSA9IHVzZWRfYXRvbVtpXTsKIAkJc3RydWN0IGF0b21fdmFsdWUgKnYgPSAmcmVmLT52YWx1ZVtpXTsKLQkJaWYgKCFzdHJjbXAobmFtZSwgInJlZm5hbWUiKSkKLQkJCXYtPnMgPSByZWYtPnJlZm5hbWU7Ci0JCWVsc2UgaWYgKCFzdHJjbXAobmFtZSwgIipyZWZuYW1lIikpIHsKLQkJCWludCBsZW4gPSBzdHJsZW4ocmVmLT5yZWZuYW1lKTsKLQkJCWNoYXIgKnMgPSB4bWFsbG9jKGxlbiArIDQpOwotCQkJc3ByaW50ZihzLCAiJXNee30iLCByZWYtPnJlZm5hbWUpOwotCQkJdi0+cyA9IHM7CisJCWludCBkZXJlZiA9IDA7CisJCWlmICgqbmFtZSA9PSAnKicpIHsKKwkJCWRlcmVmID0gMTsKKwkJCW5hbWUrKzsKKwkJfQorCQlpZiAoIXByZWZpeGNtcChuYW1lLCAicmVmbmFtZSIpKSB7CisJCQljb25zdCBjaGFyICpmb3JtYXRwID0gc3RyY2hyKG5hbWUsICc6Jyk7CisJCQljb25zdCBjaGFyICpyZWZuYW1lID0gcmVmLT5yZWZuYW1lOworCisJCQkvKiBsb29rIGZvciAic2hvcnQiIHJlZm5hbWUgZm9ybWF0ICovCisJCQlpZiAoZm9ybWF0cCkgeworCQkJCWZvcm1hdHArKzsKKwkJCQlpZiAoIXN0cmNtcChmb3JtYXRwLCAic2hvcnQiKSkKKwkJCQkJcmVmbmFtZSA9IGdldF9zaG9ydF9yZWYocmVmKTsKKwkJCQllbHNlCisJCQkJCWRpZSgidW5rbm93biByZWZuYW1lIGZvcm1hdCAlcyIsCisJCQkJCSAgICBmb3JtYXRwKTsKKwkJCX0KKworCQkJaWYgKCFkZXJlZikKKwkJCQl2LT5zID0gcmVmbmFtZTsKKwkJCWVsc2UgeworCQkJCWludCBsZW4gPSBzdHJsZW4ocmVmbmFtZSk7CisJCQkJY2hhciAqcyA9IHhtYWxsb2MobGVuICsgNCk7CisJCQkJc3ByaW50ZihzLCAiJXNee30iLCByZWZuYW1lKTsKKwkJCQl2LT5zID0gczsKKwkJCX0KIAkJfQogCX0KIApkaWZmIC0tZ2l0IGEvYnVpbHRpbi1mc2NrLmMgYi9idWlsdGluLWZzY2suYwppbmRleCBhYTRiMjM5Li41YzRjNzdhIDEwMDY0NAotLS0gYS9idWlsdGluLWZzY2suYworKysgYi9idWlsdGluLWZzY2suYwpAQCAtMjIyLDEyICsyMjIsMTYgQEAKIAkJCQljaGFyICpidWYgPSByZWFkX3NoYTFfZmlsZShvYmotPnNoYTEsCiAJCQkJCQkmdHlwZSwgJnNpemUpOwogCQkJCWlmIChidWYpIHsKLQkJCQkJZndyaXRlKGJ1Ziwgc2l6ZSwgMSwgZik7CisJCQkJCWlmIChmd3JpdGUoYnVmLCBzaXplLCAxLCBmKSAhPSAxKQorCQkJCQkJZGllKCJDb3VsZCBub3Qgd3JpdGUgJXM6ICVzIiwKKwkJCQkJCSAgICBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKIAkJCQkJZnJlZShidWYpOwogCQkJCX0KIAkJCX0gZWxzZQogCQkJCWZwcmludGYoZiwgIiVzXG4iLCBzaGExX3RvX2hleChvYmotPnNoYTEpKTsKLQkJCWZjbG9zZShmKTsKKwkJCWlmIChmY2xvc2UoZikpCisJCQkJZGllKCJDb3VsZCBub3QgZmluaXNoICVzOiAlcyIsCisJCQkJICAgIGZpbGVuYW1lLCBzdHJlcnJvcihlcnJubykpOwogCQl9CiAJCXJldHVybjsKIAl9CmRpZmYgLS1naXQgYS9idWlsdGluLWdjLmMgYi9idWlsdGluLWdjLmMKaW5kZXggNTNhMGQ0My4uZjhlYWU0YSAxMDA2NDQKLS0tIGEvYnVpbHRpbi1nYy5jCisrKyBiL2J1aWx0aW4tZ2MuYwpAQCAtMjYsNyArMjYsNyBAQAogc3RhdGljIGludCBhZ2dyZXNzaXZlX3dpbmRvdyA9IC0xOwogc3RhdGljIGludCBnY19hdXRvX3RocmVzaG9sZCA9IDY3MDA7CiBzdGF0aWMgaW50IGdjX2F1dG9fcGFja19saW1pdCA9IDUwOwotc3RhdGljIGNoYXIgKnBydW5lX2V4cGlyZSA9ICIyLndlZWtzLmFnbyI7CitzdGF0aWMgY29uc3QgY2hhciAqcHJ1bmVfZXhwaXJlID0gIjIud2Vla3MuYWdvIjsKIAogI2RlZmluZSBNQVhfQUREIDEwCiBzdGF0aWMgY29uc3QgY2hhciAqYXJndl9wYWNrX3JlZnNbXSA9IHsicGFjay1yZWZzIiwgIi0tYWxsIiwgIi0tcHJ1bmUiLCBOVUxMfTsKQEAgLTU3LDE1ICs1NywxMiBAQAogCQlyZXR1cm4gMDsKIAl9CiAJaWYgKCFzdHJjbXAodmFyLCAiZ2MucHJ1bmVleHBpcmUiKSkgewotCQlpZiAoIXZhbHVlKQotCQkJcmV0dXJuIGNvbmZpZ19lcnJvcl9ub25ib29sKHZhcik7Ci0JCWlmIChzdHJjbXAodmFsdWUsICJub3ciKSkgeworCQlpZiAodmFsdWUgJiYgc3RyY21wKHZhbHVlLCAibm93IikpIHsKIAkJCXVuc2lnbmVkIGxvbmcgbm93ID0gYXBwcm94aWRhdGUoIm5vdyIpOwogCQkJaWYgKGFwcHJveGlkYXRlKHZhbHVlKSA+PSBub3cpCiAJCQkJcmV0dXJuIGVycm9yKCJJbnZhbGlkICVzOiAnJXMnIiwgdmFyLCB2YWx1ZSk7CiAJCX0KLQkJcHJ1bmVfZXhwaXJlID0geHN0cmR1cCh2YWx1ZSk7Ci0JCXJldHVybiAwOworCQlyZXR1cm4gZ2l0X2NvbmZpZ19zdHJpbmcoJnBydW5lX2V4cGlyZSwgdmFyLCB2YWx1ZSk7CiAJfQogCXJldHVybiBnaXRfZGVmYXVsdF9jb25maWcodmFyLCB2YWx1ZSwgY2IpOwogfQpAQCAtMTkxLDcgKzE4OCw5IEBACiAJICogdGhlcmUgaXMgbm8gbmVlZC4KIAkgKi8KIAlpZiAodG9vX21hbnlfcGFja3MoKSkKLQkJYXBwZW5kX29wdGlvbihhcmd2X3JlcGFjaywgIi1BIiwgTUFYX0FERCk7CisJCWFwcGVuZF9vcHRpb24oYXJndl9yZXBhY2ssCisJCQkgICAgICAhc3RyY21wKHBydW5lX2V4cGlyZSwgIm5vdyIpID8gIi1hIiA6ICItQSIsCisJCQkgICAgICBNQVhfQUREKTsKIAllbHNlIGlmICghdG9vX21hbnlfbG9vc2Vfb2JqZWN0cygpKQogCQlyZXR1cm4gMDsKIApAQCAtMjQ2LDcgKzI0NSw5IEBACiAJCQkicnVuIFwiZ2l0IGdjXCIgbWFudWFsbHkuIFNlZSAiCiAJCQkiXCJnaXQgaGVscCBnY1wiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIik7CiAJfSBlbHNlCi0JCWFwcGVuZF9vcHRpb24oYXJndl9yZXBhY2ssICItQSIsIE1BWF9BREQpOworCQlhcHBlbmRfb3B0aW9uKGFyZ3ZfcmVwYWNrLAorCQkJICAgICAgIXN0cmNtcChwcnVuZV9leHBpcmUsICJub3ciKSA/ICItYSIgOiAiLUEiLAorCQkJICAgICAgTUFYX0FERCk7CiAKIAlpZiAocGFja19yZWZzICYmIHJ1bl9jb21tYW5kX3Zfb3B0KGFyZ3ZfcGFja19yZWZzLCBSVU5fR0lUX0NNRCkpCiAJCXJldHVybiBlcnJvcihGQUlMRURfUlVOLCBhcmd2X3BhY2tfcmVmc1swXSk7CmRpZmYgLS1naXQgYS9idWlsdGluLWdyZXAuYyBiL2J1aWx0aW4tZ3JlcC5jCmluZGV4IGQzY2M3NWUuLjNmMTJiYTMgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tZ3JlcC5jCisrKyBiL2J1aWx0aW4tZ3JlcC5jCkBAIC0yMCw2ICsyMCw4IEBACiAjZW5kaWYKICNlbmRpZgogCitzdGF0aWMgaW50IGJ1aWx0aW5fZ3JlcDsKKwogLyoKICAqIGdpdCBncmVwIHBhdGhzcGVjcyBhcmUgc29tZXdoYXQgZGlmZmVyZW50IGZyb20gZGlmZi10cmVlIHBhdGhzcGVjczsKICAqIHBhdGhuYW1lIHdpbGRjYXJkcyBhcmUgYWxsb3dlZC4KQEAgLTI5Nyw2ICsyOTksOSBAQAogCQlwdXNoX2FyZygiLWwiKTsKIAlpZiAob3B0LT51bm1hdGNoX25hbWVfb25seSkKIAkJcHVzaF9hcmcoIi1MIik7CisJaWYgKG9wdC0+bnVsbF9mb2xsb3dpbmdfbmFtZSkKKwkJLyogaW4gR05VIGdyZXAgZ2l0J3MgIi16IiB0cmFuc2xhdGVzIHRvICItWiIgKi8KKwkJcHVzaF9hcmcoIi1aIik7CiAJaWYgKG9wdC0+Y291bnQpCiAJCXB1c2hfYXJnKCItYyIpOwogCWlmIChvcHQtPnBvc3RfY29udGV4dCB8fCBvcHQtPnByZV9jb250ZXh0KSB7CkBAIC0zODgsNyArMzkzLDcgQEAKIAkgKiB3ZSBncmVwIHRocm91Z2ggdGhlIGNoZWNrZWQtb3V0IGZpbGVzLiBJdCB0ZW5kcyB0bwogCSAqIGJlIGEgbG90IG1vcmUgb3B0aW1pemVkCiAJICovCi0JaWYgKCFjYWNoZWQpIHsKKwlpZiAoIWNhY2hlZCAmJiAhYnVpbHRpbl9ncmVwKSB7CiAJCWhpdCA9IGV4dGVybmFsX2dyZXAob3B0LCBwYXRocywgY2FjaGVkKTsKIAkJaWYgKGhpdCA+PSAwKQogCQkJcmV0dXJuIGhpdDsKQEAgLTQwMSw3ICs0MDYsMTIgQEAKIAkJCWNvbnRpbnVlOwogCQlpZiAoIXBhdGhzcGVjX21hdGNoZXMocGF0aHMsIGNlLT5uYW1lKSkKIAkJCWNvbnRpbnVlOwotCQlpZiAoY2FjaGVkKSB7CisJCS8qCisJCSAqIElmIENFX1ZBTElEIGlzIG9uLCB3ZSBhc3N1bWUgd29ya3RyZWUgZmlsZSBhbmQgaXRzIGNhY2hlIGVudHJ5CisJCSAqIGFyZSBpZGVudGljYWwsIGV2ZW4gaWYgd29ya3RyZWUgZmlsZSBoYXMgYmVlbiBtb2RpZmllZCwgc28gdXNlCisJCSAqIGNhY2hlIHZlcnNpb24gaW5zdGVhZAorCQkgKi8KKwkJaWYgKGNhY2hlZCB8fCAoY2UtPmNlX2ZsYWdzICYgQ0VfVkFMSUQpKSB7CiAJCQlpZiAoY2Vfc3RhZ2UoY2UpKQogCQkJCWNvbnRpbnVlOwogCQkJaGl0IHw9IGdyZXBfc2hhMShvcHQsIGNlLT5zaGExLCBjZS0+bmFtZSwgMCk7CkBAIC01NDQsNiArNTU0LDEwIEBACiAJCQljYWNoZWQgPSAxOwogCQkJY29udGludWU7CiAJCX0KKwkJaWYgKCFzdHJjbXAoIi0tbm8tZXh0LWdyZXAiLCBhcmcpKSB7CisJCQlidWlsdGluX2dyZXAgPSAxOworCQkJY29udGludWU7CisJCX0KIAkJaWYgKCFzdHJjbXAoIi1hIiwgYXJnKSB8fAogCQkgICAgIXN0cmNtcCgiLS10ZXh0IiwgYXJnKSkgewogCQkJb3B0LmJpbmFyeSA9IEdSRVBfQklOQVJZX1RFWFQ7CkBAIC02MDEsNiArNjE1LDExIEBACiAJCQlvcHQudW5tYXRjaF9uYW1lX29ubHkgPSAxOwogCQkJY29udGludWU7CiAJCX0KKwkJaWYgKCFzdHJjbXAoIi16IiwgYXJnKSB8fAorCQkgICAgIXN0cmNtcCgiLS1udWxsIiwgYXJnKSkgeworCQkJb3B0Lm51bGxfZm9sbG93aW5nX25hbWUgPSAxOworCQkJY29udGludWU7CisJCX0KIAkJaWYgKCFzdHJjbXAoIi1jIiwgYXJnKSB8fAogCQkgICAgIXN0cmNtcCgiLS1jb3VudCIsIGFyZykpIHsKIAkJCW9wdC5jb3VudCA9IDE7CmRpZmYgLS1naXQgYS9idWlsdGluLWhlbHAuYyBiL2J1aWx0aW4taGVscC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNzZlZmEKLS0tIC9kZXYvbnVsbAorKysgYi9idWlsdGluLWhlbHAuYwpAQCAtMCwwICsxLDQ2MyBAQAorLyoKKyAqIGJ1aWx0aW4taGVscC5jCisgKgorICogQnVpbHRpbiBoZWxwIGNvbW1hbmQKKyAqLworI2luY2x1ZGUgImNhY2hlLmgiCisjaW5jbHVkZSAiYnVpbHRpbi5oIgorI2luY2x1ZGUgImV4ZWNfY21kLmgiCisjaW5jbHVkZSAiY29tbW9uLWNtZHMuaCIKKyNpbmNsdWRlICJwYXJzZS1vcHRpb25zLmgiCisjaW5jbHVkZSAicnVuLWNvbW1hbmQuaCIKKyNpbmNsdWRlICJoZWxwLmgiCisKK3N0YXRpYyBzdHJ1Y3QgbWFuX3ZpZXdlcl9saXN0IHsKKwlzdHJ1Y3QgbWFuX3ZpZXdlcl9saXN0ICpuZXh0OworCWNoYXIgbmFtZVtGTEVYX0FSUkFZXTsKK30gKm1hbl92aWV3ZXJfbGlzdDsKKworc3RhdGljIHN0cnVjdCBtYW5fdmlld2VyX2luZm9fbGlzdCB7CisJc3RydWN0IG1hbl92aWV3ZXJfaW5mb19saXN0ICpuZXh0OworCWNvbnN0IGNoYXIgKmluZm87CisJY2hhciBuYW1lW0ZMRVhfQVJSQVldOworfSAqbWFuX3ZpZXdlcl9pbmZvX2xpc3Q7CisKK2VudW0gaGVscF9mb3JtYXQgeworCUhFTFBfRk9STUFUX01BTiwKKwlIRUxQX0ZPUk1BVF9JTkZPLAorCUhFTFBfRk9STUFUX1dFQiwKK307CisKK3N0YXRpYyBpbnQgc2hvd19hbGwgPSAwOworc3RhdGljIGVudW0gaGVscF9mb3JtYXQgaGVscF9mb3JtYXQgPSBIRUxQX0ZPUk1BVF9NQU47CitzdGF0aWMgc3RydWN0IG9wdGlvbiBidWlsdGluX2hlbHBfb3B0aW9uc1tdID0geworCU9QVF9CT09MRUFOKCdhJywgImFsbCIsICZzaG93X2FsbCwgInByaW50IGFsbCBhdmFpbGFibGUgY29tbWFuZHMiKSwKKwlPUFRfU0VUX0lOVCgnbScsICJtYW4iLCAmaGVscF9mb3JtYXQsICJzaG93IG1hbiBwYWdlIiwgSEVMUF9GT1JNQVRfTUFOKSwKKwlPUFRfU0VUX0lOVCgndycsICJ3ZWIiLCAmaGVscF9mb3JtYXQsICJzaG93IG1hbnVhbCBpbiB3ZWIgYnJvd3NlciIsCisJCQlIRUxQX0ZPUk1BVF9XRUIpLAorCU9QVF9TRVRfSU5UKCdpJywgImluZm8iLCAmaGVscF9mb3JtYXQsICJzaG93IGluZm8gcGFnZSIsCisJCQlIRUxQX0ZPUk1BVF9JTkZPKSwKKwlPUFRfRU5EKCksCit9OworCitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGJ1aWx0aW5faGVscF91c2FnZVtdID0geworCSJnaXQgaGVscCBbLS1hbGxdIFstLW1hbnwtLXdlYnwtLWluZm9dIFtjb21tYW5kXSIsCisJTlVMTAorfTsKKworc3RhdGljIGVudW0gaGVscF9mb3JtYXQgcGFyc2VfaGVscF9mb3JtYXQoY29uc3QgY2hhciAqZm9ybWF0KQoreworCWlmICghc3RyY21wKGZvcm1hdCwgIm1hbiIpKQorCQlyZXR1cm4gSEVMUF9GT1JNQVRfTUFOOworCWlmICghc3RyY21wKGZvcm1hdCwgImluZm8iKSkKKwkJcmV0dXJuIEhFTFBfRk9STUFUX0lORk87CisJaWYgKCFzdHJjbXAoZm9ybWF0LCAid2ViIikgfHwgIXN0cmNtcChmb3JtYXQsICJodG1sIikpCisJCXJldHVybiBIRUxQX0ZPUk1BVF9XRUI7CisJZGllKCJ1bnJlY29nbml6ZWQgaGVscCBmb3JtYXQgJyVzJyIsIGZvcm1hdCk7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICpnZXRfbWFuX3ZpZXdlcl9pbmZvKGNvbnN0IGNoYXIgKm5hbWUpCit7CisJc3RydWN0IG1hbl92aWV3ZXJfaW5mb19saXN0ICp2aWV3ZXI7CisKKwlmb3IgKHZpZXdlciA9IG1hbl92aWV3ZXJfaW5mb19saXN0OyB2aWV3ZXI7IHZpZXdlciA9IHZpZXdlci0+bmV4dCkKKwl7CisJCWlmICghc3RyY2FzZWNtcChuYW1lLCB2aWV3ZXItPm5hbWUpKQorCQkJcmV0dXJuIHZpZXdlci0+aW5mbzsKKwl9CisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBpbnQgY2hlY2tfZW1hY3NjbGllbnRfdmVyc2lvbih2b2lkKQoreworCXN0cnVjdCBzdHJidWYgYnVmZmVyID0gU1RSQlVGX0lOSVQ7CisJc3RydWN0IGNoaWxkX3Byb2Nlc3MgZWNfcHJvY2VzczsKKwljb25zdCBjaGFyICphcmd2X2VjW10gPSB7ICJlbWFjc2NsaWVudCIsICItLXZlcnNpb24iLCBOVUxMIH07CisJaW50IHZlcnNpb247CisKKwkvKiBlbWFjc2NsaWVudCBwcmludHMgaXRzIHZlcnNpb24gbnVtYmVyIG9uIHN0ZGVyciAqLworCW1lbXNldCgmZWNfcHJvY2VzcywgMCwgc2l6ZW9mKGVjX3Byb2Nlc3MpKTsKKwllY19wcm9jZXNzLmFyZ3YgPSBhcmd2X2VjOworCWVjX3Byb2Nlc3MuZXJyID0gLTE7CisJZWNfcHJvY2Vzcy5zdGRvdXRfdG9fc3RkZXJyID0gMTsKKwlpZiAoc3RhcnRfY29tbWFuZCgmZWNfcHJvY2VzcykpIHsKKwkJZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gc3RhcnQgZW1hY3NjbGllbnQuXG4iKTsKKwkJcmV0dXJuIC0xOworCX0KKwlzdHJidWZfcmVhZCgmYnVmZmVyLCBlY19wcm9jZXNzLmVyciwgMjApOworCWNsb3NlKGVjX3Byb2Nlc3MuZXJyKTsKKworCS8qCisJICogRG9uJ3QgYm90aGVyIGNoZWNraW5nIHJldHVybiB2YWx1ZSwgYmVjYXVzZSAiZW1hY3NjbGllbnQgLS12ZXJzaW9uIgorCSAqIHNlZW1zIHRvIGFsd2F5cyBleGl0cyB3aXRoIGNvZGUgMS4KKwkgKi8KKwlmaW5pc2hfY29tbWFuZCgmZWNfcHJvY2Vzcyk7CisKKwlpZiAocHJlZml4Y21wKGJ1ZmZlci5idWYsICJlbWFjc2NsaWVudCIpKSB7CisJCWZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIHBhcnNlIGVtYWNzY2xpZW50IHZlcnNpb24uXG4iKTsKKwkJc3RyYnVmX3JlbGVhc2UoJmJ1ZmZlcik7CisJCXJldHVybiAtMTsKKwl9CisKKwlzdHJidWZfcmVtb3ZlKCZidWZmZXIsIDAsIHN0cmxlbigiZW1hY3NjbGllbnQiKSk7CisJdmVyc2lvbiA9IGF0b2koYnVmZmVyLmJ1Zik7CisKKwlpZiAodmVyc2lvbiA8IDIyKSB7CisJCWZwcmludGYoc3RkZXJyLAorCQkJImVtYWNzY2xpZW50IHZlcnNpb24gJyVkJyB0b28gb2xkICg8IDIyKS5cbiIsCisJCQl2ZXJzaW9uKTsKKwkJc3RyYnVmX3JlbGVhc2UoJmJ1ZmZlcik7CisJCXJldHVybiAtMTsKKwl9CisKKwlzdHJidWZfcmVsZWFzZSgmYnVmZmVyKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZXhlY193b21hbl9lbWFjcyhjb25zdCBjaGFyKiBwYXRoLCBjb25zdCBjaGFyICpwYWdlKQoreworCWlmICghY2hlY2tfZW1hY3NjbGllbnRfdmVyc2lvbigpKSB7CisJCS8qIFRoaXMgd29ya3Mgb25seSB3aXRoIGVtYWNzY2xpZW50IHZlcnNpb24gPj0gMjIuICovCisJCXN0cnVjdCBzdHJidWYgbWFuX3BhZ2UgPSBTVFJCVUZfSU5JVDsKKworCQlpZiAoIXBhdGgpCisJCQlwYXRoID0gImVtYWNzY2xpZW50IjsKKwkJc3RyYnVmX2FkZGYoJm1hbl9wYWdlLCAiKHdvbWFuIFwiJXNcIikiLCBwYWdlKTsKKwkJZXhlY2xwKHBhdGgsICJlbWFjc2NsaWVudCIsICItZSIsIG1hbl9wYWdlLmJ1ZiwgTlVMTCk7CisJCXdhcm5pbmcoImZhaWxlZCB0byBleGVjICclcyc6ICVzIiwgcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGV4ZWNfbWFuX2tvbnF1ZXJvcihjb25zdCBjaGFyKiBwYXRoLCBjb25zdCBjaGFyICpwYWdlKQoreworCWNvbnN0IGNoYXIgKmRpc3BsYXkgPSBnZXRlbnYoIkRJU1BMQVkiKTsKKwlpZiAoZGlzcGxheSAmJiAqZGlzcGxheSkgeworCQlzdHJ1Y3Qgc3RyYnVmIG1hbl9wYWdlID0gU1RSQlVGX0lOSVQ7CisJCWNvbnN0IGNoYXIgKmZpbGVuYW1lID0gImtmbWNsaWVudCI7CisKKwkJLyogSXQncyBzaW1wbGVyIHRvIGxhdW5jaCBrb25xdWVyb3IgdXNpbmcga2ZtY2xpZW50LiAqLworCQlpZiAocGF0aCkgeworCQkJY29uc3QgY2hhciAqZmlsZSA9IHN0cnJjaHIocGF0aCwgJy8nKTsKKwkJCWlmIChmaWxlICYmICFzdHJjbXAoZmlsZSArIDEsICJrb25xdWVyb3IiKSkgeworCQkJCWNoYXIgKm5ldyA9IHhzdHJkdXAocGF0aCk7CisJCQkJY2hhciAqZGVzdCA9IHN0cnJjaHIobmV3LCAnLycpOworCisJCQkJLyogc3RybGVuKCJrb25xdWVyb3IiKSA9PSBzdHJsZW4oImtmbWNsaWVudCIpICovCisJCQkJc3RyY3B5KGRlc3QgKyAxLCAia2ZtY2xpZW50Iik7CisJCQkJcGF0aCA9IG5ldzsKKwkJCX0KKwkJCWlmIChmaWxlKQorCQkJCWZpbGVuYW1lID0gZmlsZTsKKwkJfSBlbHNlCisJCQlwYXRoID0gImtmbWNsaWVudCI7CisJCXN0cmJ1Zl9hZGRmKCZtYW5fcGFnZSwgIm1hbjolcygxKSIsIHBhZ2UpOworCQlleGVjbHAocGF0aCwgZmlsZW5hbWUsICJuZXdUYWIiLCBtYW5fcGFnZS5idWYsIE5VTEwpOworCQl3YXJuaW5nKCJmYWlsZWQgdG8gZXhlYyAnJXMnOiAlcyIsIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJfQorfQorCitzdGF0aWMgdm9pZCBleGVjX21hbl9tYW4oY29uc3QgY2hhciogcGF0aCwgY29uc3QgY2hhciAqcGFnZSkKK3sKKwlpZiAoIXBhdGgpCisJCXBhdGggPSAibWFuIjsKKwlleGVjbHAocGF0aCwgIm1hbiIsIHBhZ2UsIE5VTEwpOworCXdhcm5pbmcoImZhaWxlZCB0byBleGVjICclcyc6ICVzIiwgcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKK30KKworc3RhdGljIHZvaWQgZXhlY19tYW5fY21kKGNvbnN0IGNoYXIgKmNtZCwgY29uc3QgY2hhciAqcGFnZSkKK3sKKwlzdHJ1Y3Qgc3RyYnVmIHNoZWxsX2NtZCA9IFNUUkJVRl9JTklUOworCXN0cmJ1Zl9hZGRmKCZzaGVsbF9jbWQsICIlcyAlcyIsIGNtZCwgcGFnZSk7CisJZXhlY2woIi9iaW4vc2giLCAic2giLCAiLWMiLCBzaGVsbF9jbWQuYnVmLCBOVUxMKTsKKwl3YXJuaW5nKCJmYWlsZWQgdG8gZXhlYyAnJXMnOiAlcyIsIGNtZCwgc3RyZXJyb3IoZXJybm8pKTsKK30KKworc3RhdGljIHZvaWQgYWRkX21hbl92aWV3ZXIoY29uc3QgY2hhciAqbmFtZSkKK3sKKwlzdHJ1Y3QgbWFuX3ZpZXdlcl9saXN0ICoqcCA9ICZtYW5fdmlld2VyX2xpc3Q7CisJc2l6ZV90IGxlbiA9IHN0cmxlbihuYW1lKTsKKworCXdoaWxlICgqcCkKKwkJcCA9ICYoKCpwKS0+bmV4dCk7CisJKnAgPSB4Y2FsbG9jKDEsIChzaXplb2YoKipwKSArIGxlbiArIDEpKTsKKwlzdHJuY3B5KCgqcCktPm5hbWUsIG5hbWUsIGxlbik7Cit9CisKK3N0YXRpYyBpbnQgc3VwcG9ydGVkX21hbl92aWV3ZXIoY29uc3QgY2hhciAqbmFtZSwgc2l6ZV90IGxlbikKK3sKKwlyZXR1cm4gKCFzdHJuY2FzZWNtcCgibWFuIiwgbmFtZSwgbGVuKSB8fAorCQkhc3RybmNhc2VjbXAoIndvbWFuIiwgbmFtZSwgbGVuKSB8fAorCQkhc3RybmNhc2VjbXAoImtvbnF1ZXJvciIsIG5hbWUsIGxlbikpOworfQorCitzdGF0aWMgdm9pZCBkb19hZGRfbWFuX3ZpZXdlcl9pbmZvKGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJICAgc2l6ZV90IGxlbiwKKwkJCQkgICBjb25zdCBjaGFyICp2YWx1ZSkKK3sKKwlzdHJ1Y3QgbWFuX3ZpZXdlcl9pbmZvX2xpc3QgKm5ldyA9IHhjYWxsb2MoMSwgc2l6ZW9mKCpuZXcpICsgbGVuICsgMSk7CisKKwlzdHJuY3B5KG5ldy0+bmFtZSwgbmFtZSwgbGVuKTsKKwluZXctPmluZm8gPSB4c3RyZHVwKHZhbHVlKTsKKwluZXctPm5leHQgPSBtYW5fdmlld2VyX2luZm9fbGlzdDsKKwltYW5fdmlld2VyX2luZm9fbGlzdCA9IG5ldzsKK30KKworc3RhdGljIGludCBhZGRfbWFuX3ZpZXdlcl9wYXRoKGNvbnN0IGNoYXIgKm5hbWUsCisJCQkgICAgICAgc2l6ZV90IGxlbiwKKwkJCSAgICAgICBjb25zdCBjaGFyICp2YWx1ZSkKK3sKKwlpZiAoc3VwcG9ydGVkX21hbl92aWV3ZXIobmFtZSwgbGVuKSkKKwkJZG9fYWRkX21hbl92aWV3ZXJfaW5mbyhuYW1lLCBsZW4sIHZhbHVlKTsKKwllbHNlCisJCXdhcm5pbmcoIiclcyc6IHBhdGggZm9yIHVuc3VwcG9ydGVkIG1hbiB2aWV3ZXIuXG4iCisJCQkiUGxlYXNlIGNvbnNpZGVyIHVzaW5nICdtYW4uPHRvb2w+LmNtZCcgaW5zdGVhZC4iLAorCQkJbmFtZSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBhZGRfbWFuX3ZpZXdlcl9jbWQoY29uc3QgY2hhciAqbmFtZSwKKwkJCSAgICAgIHNpemVfdCBsZW4sCisJCQkgICAgICBjb25zdCBjaGFyICp2YWx1ZSkKK3sKKwlpZiAoc3VwcG9ydGVkX21hbl92aWV3ZXIobmFtZSwgbGVuKSkKKwkJd2FybmluZygiJyVzJzogY21kIGZvciBzdXBwb3J0ZWQgbWFuIHZpZXdlci5cbiIKKwkJCSJQbGVhc2UgY29uc2lkZXIgdXNpbmcgJ21hbi48dG9vbD4ucGF0aCcgaW5zdGVhZC4iLAorCQkJbmFtZSk7CisJZWxzZQorCQlkb19hZGRfbWFuX3ZpZXdlcl9pbmZvKG5hbWUsIGxlbiwgdmFsdWUpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYWRkX21hbl92aWV3ZXJfaW5mbyhjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlKQoreworCWNvbnN0IGNoYXIgKm5hbWUgPSB2YXIgKyA0OworCWNvbnN0IGNoYXIgKnN1YmtleSA9IHN0cnJjaHIobmFtZSwgJy4nKTsKKworCWlmICghc3Via2V5KQorCQlyZXR1cm4gZXJyb3IoIkNvbmZpZyB3aXRoIG5vIGtleSBmb3IgbWFuIHZpZXdlcjogJXMiLCBuYW1lKTsKKworCWlmICghc3RyY21wKHN1YmtleSwgIi5wYXRoIikpIHsKKwkJaWYgKCF2YWx1ZSkKKwkJCXJldHVybiBjb25maWdfZXJyb3Jfbm9uYm9vbCh2YXIpOworCQlyZXR1cm4gYWRkX21hbl92aWV3ZXJfcGF0aChuYW1lLCBzdWJrZXkgLSBuYW1lLCB2YWx1ZSk7CisJfQorCWlmICghc3RyY21wKHN1YmtleSwgIi5jbWQiKSkgeworCQlpZiAoIXZhbHVlKQorCQkJcmV0dXJuIGNvbmZpZ19lcnJvcl9ub25ib29sKHZhcik7CisJCXJldHVybiBhZGRfbWFuX3ZpZXdlcl9jbWQobmFtZSwgc3Via2V5IC0gbmFtZSwgdmFsdWUpOworCX0KKworCXdhcm5pbmcoIiclcyc6IHVuc3VwcG9ydGVkIG1hbiB2aWV3ZXIgc3ViIGtleS4iLCBzdWJrZXkpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGdpdF9oZWxwX2NvbmZpZyhjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlLCB2b2lkICpjYikKK3sKKwlpZiAoIXN0cmNtcCh2YXIsICJoZWxwLmZvcm1hdCIpKSB7CisJCWlmICghdmFsdWUpCisJCQlyZXR1cm4gY29uZmlnX2Vycm9yX25vbmJvb2wodmFyKTsKKwkJaGVscF9mb3JtYXQgPSBwYXJzZV9oZWxwX2Zvcm1hdCh2YWx1ZSk7CisJCXJldHVybiAwOworCX0KKwlpZiAoIXN0cmNtcCh2YXIsICJtYW4udmlld2VyIikpIHsKKwkJaWYgKCF2YWx1ZSkKKwkJCXJldHVybiBjb25maWdfZXJyb3Jfbm9uYm9vbCh2YXIpOworCQlhZGRfbWFuX3ZpZXdlcih2YWx1ZSk7CisJCXJldHVybiAwOworCX0KKwlpZiAoIXByZWZpeGNtcCh2YXIsICJtYW4uIikpCisJCXJldHVybiBhZGRfbWFuX3ZpZXdlcl9pbmZvKHZhciwgdmFsdWUpOworCisJcmV0dXJuIGdpdF9kZWZhdWx0X2NvbmZpZyh2YXIsIHZhbHVlLCBjYik7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgY21kbmFtZXMgbWFpbl9jbWRzLCBvdGhlcl9jbWRzOworCit2b2lkIGxpc3RfY29tbW9uX2NtZHNfaGVscCh2b2lkKQoreworCWludCBpLCBsb25nZXN0ID0gMDsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGNvbW1vbl9jbWRzKTsgaSsrKSB7CisJCWlmIChsb25nZXN0IDwgc3RybGVuKGNvbW1vbl9jbWRzW2ldLm5hbWUpKQorCQkJbG9uZ2VzdCA9IHN0cmxlbihjb21tb25fY21kc1tpXS5uYW1lKTsKKwl9CisKKwlwdXRzKCJUaGUgbW9zdCBjb21tb25seSB1c2VkIGdpdCBjb21tYW5kcyBhcmU6Iik7CisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY29tbW9uX2NtZHMpOyBpKyspIHsKKwkJcHJpbnRmKCIgICAlcyAgICIsIGNvbW1vbl9jbWRzW2ldLm5hbWUpOworCQltcHV0X2NoYXIoJyAnLCBsb25nZXN0IC0gc3RybGVuKGNvbW1vbl9jbWRzW2ldLm5hbWUpKTsKKwkJcHV0cyhjb21tb25fY21kc1tpXS5oZWxwKTsKKwl9Cit9CisKK3N0YXRpYyBpbnQgaXNfZ2l0X2NvbW1hbmQoY29uc3QgY2hhciAqcykKK3sKKwlyZXR1cm4gaXNfaW5fY21kbGlzdCgmbWFpbl9jbWRzLCBzKSB8fAorCQlpc19pbl9jbWRsaXN0KCZvdGhlcl9jbWRzLCBzKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKnByZXBlbmQoY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICpjbWQpCit7CisJc2l6ZV90IHByZV9sZW4gPSBzdHJsZW4ocHJlZml4KTsKKwlzaXplX3QgY21kX2xlbiA9IHN0cmxlbihjbWQpOworCWNoYXIgKnAgPSB4bWFsbG9jKHByZV9sZW4gKyBjbWRfbGVuICsgMSk7CisJbWVtY3B5KHAsIHByZWZpeCwgcHJlX2xlbik7CisJc3RyY3B5KHAgKyBwcmVfbGVuLCBjbWQpOworCXJldHVybiBwOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqY21kX3RvX3BhZ2UoY29uc3QgY2hhciAqZ2l0X2NtZCkKK3sKKwlpZiAoIWdpdF9jbWQpCisJCXJldHVybiAiZ2l0IjsKKwllbHNlIGlmICghcHJlZml4Y21wKGdpdF9jbWQsICJnaXQiKSkKKwkJcmV0dXJuIGdpdF9jbWQ7CisJZWxzZSBpZiAoaXNfZ2l0X2NvbW1hbmQoZ2l0X2NtZCkpCisJCXJldHVybiBwcmVwZW5kKCJnaXQtIiwgZ2l0X2NtZCk7CisJZWxzZQorCQlyZXR1cm4gcHJlcGVuZCgiZ2l0IiwgZ2l0X2NtZCk7Cit9CisKK3N0YXRpYyB2b2lkIHNldHVwX21hbl9wYXRoKHZvaWQpCit7CisJc3RydWN0IHN0cmJ1ZiBuZXdfcGF0aCA9IFNUUkJVRl9JTklUOworCWNvbnN0IGNoYXIgKm9sZF9wYXRoID0gZ2V0ZW52KCJNQU5QQVRIIik7CisKKwkvKiBXZSBzaG91bGQgYWx3YXlzIHB1dCAnOicgYWZ0ZXIgb3VyIHBhdGguIElmIHRoZXJlIGlzIG5vCisJICogb2xkX3BhdGgsIHRoZSAnOicgYXQgdGhlIGVuZCB3aWxsIGxldCAnbWFuJyB0byB0cnkKKwkgKiBzeXN0ZW0td2lkZSBwYXRocyBhZnRlciBvdXJzIHRvIGZpbmQgdGhlIG1hbnVhbCBwYWdlLiBJZgorCSAqIHRoZXJlIGlzIG9sZF9wYXRoLCB3ZSBuZWVkICc6JyBhcyBkZWxpbWl0ZXIuICovCisJc3RyYnVmX2FkZHN0cigmbmV3X3BhdGgsIEdJVF9NQU5fUEFUSCk7CisJc3RyYnVmX2FkZGNoKCZuZXdfcGF0aCwgJzonKTsKKwlpZiAob2xkX3BhdGgpCisJCXN0cmJ1Zl9hZGRzdHIoJm5ld19wYXRoLCBvbGRfcGF0aCk7CisKKwlzZXRlbnYoIk1BTlBBVEgiLCBuZXdfcGF0aC5idWYsIDEpOworCisJc3RyYnVmX3JlbGVhc2UoJm5ld19wYXRoKTsKK30KKworc3RhdGljIHZvaWQgZXhlY192aWV3ZXIoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqcGFnZSkKK3sKKwljb25zdCBjaGFyICppbmZvID0gZ2V0X21hbl92aWV3ZXJfaW5mbyhuYW1lKTsKKworCWlmICghc3RyY2FzZWNtcChuYW1lLCAibWFuIikpCisJCWV4ZWNfbWFuX21hbihpbmZvLCBwYWdlKTsKKwllbHNlIGlmICghc3RyY2FzZWNtcChuYW1lLCAid29tYW4iKSkKKwkJZXhlY193b21hbl9lbWFjcyhpbmZvLCBwYWdlKTsKKwllbHNlIGlmICghc3RyY2FzZWNtcChuYW1lLCAia29ucXVlcm9yIikpCisJCWV4ZWNfbWFuX2tvbnF1ZXJvcihpbmZvLCBwYWdlKTsKKwllbHNlIGlmIChpbmZvKQorCQlleGVjX21hbl9jbWQoaW5mbywgcGFnZSk7CisJZWxzZQorCQl3YXJuaW5nKCInJXMnOiB1bmtub3duIG1hbiB2aWV3ZXIuIiwgbmFtZSk7Cit9CisKK3N0YXRpYyB2b2lkIHNob3dfbWFuX3BhZ2UoY29uc3QgY2hhciAqZ2l0X2NtZCkKK3sKKwlzdHJ1Y3QgbWFuX3ZpZXdlcl9saXN0ICp2aWV3ZXI7CisJY29uc3QgY2hhciAqcGFnZSA9IGNtZF90b19wYWdlKGdpdF9jbWQpOworCWNvbnN0IGNoYXIgKmZhbGxiYWNrID0gZ2V0ZW52KCJHSVRfTUFOX1ZJRVdFUiIpOworCisJc2V0dXBfbWFuX3BhdGgoKTsKKwlmb3IgKHZpZXdlciA9IG1hbl92aWV3ZXJfbGlzdDsgdmlld2VyOyB2aWV3ZXIgPSB2aWV3ZXItPm5leHQpCisJeworCQlleGVjX3ZpZXdlcih2aWV3ZXItPm5hbWUsIHBhZ2UpOyAvKiB3aWxsIHJldHVybiB3aGVuIHVuYWJsZSAqLworCX0KKwlpZiAoZmFsbGJhY2spCisJCWV4ZWNfdmlld2VyKGZhbGxiYWNrLCBwYWdlKTsKKwlleGVjX3ZpZXdlcigibWFuIiwgcGFnZSk7CisJZGllKCJubyBtYW4gdmlld2VyIGhhbmRsZWQgdGhlIHJlcXVlc3QiKTsKK30KKworc3RhdGljIHZvaWQgc2hvd19pbmZvX3BhZ2UoY29uc3QgY2hhciAqZ2l0X2NtZCkKK3sKKwljb25zdCBjaGFyICpwYWdlID0gY21kX3RvX3BhZ2UoZ2l0X2NtZCk7CisJc2V0ZW52KCJJTkZPUEFUSCIsIEdJVF9JTkZPX1BBVEgsIDEpOworCWV4ZWNscCgiaW5mbyIsICJpbmZvIiwgImdpdG1hbiIsIHBhZ2UsIE5VTEwpOworfQorCitzdGF0aWMgdm9pZCBnZXRfaHRtbF9wYWdlX3BhdGgoc3RydWN0IHN0cmJ1ZiAqcGFnZV9wYXRoLCBjb25zdCBjaGFyICpwYWdlKQoreworCXN0cnVjdCBzdGF0IHN0OworCWNvbnN0IGNoYXIgKmh0bWxfcGF0aCA9IHN5c3RlbV9wYXRoKEdJVF9IVE1MX1BBVEgpOworCisJLyogQ2hlY2sgdGhhdCB3ZSBoYXZlIGEgZ2l0IGRvY3VtZW50YXRpb24gZGlyZWN0b3J5LiAqLworCWlmIChzdGF0KG1rcGF0aCgiJXMvZ2l0Lmh0bWwiLCBodG1sX3BhdGgpLCAmc3QpCisJICAgIHx8ICFTX0lTUkVHKHN0LnN0X21vZGUpKQorCQlkaWUoIiclcyc6IG5vdCBhIGRvY3VtZW50YXRpb24gZGlyZWN0b3J5LiIsIGh0bWxfcGF0aCk7CisKKwlzdHJidWZfaW5pdChwYWdlX3BhdGgsIDApOworCXN0cmJ1Zl9hZGRmKHBhZ2VfcGF0aCwgIiVzLyVzLmh0bWwiLCBodG1sX3BhdGgsIHBhZ2UpOworfQorCisvKgorICogSWYgb3Blbl9odG1sIGlzIG5vdCBkZWZpbmVkIGluIGEgcGxhdGZvcm0tc3BlY2lmaWMgd2F5IChzZWUgZm9yCisgKiBleGFtcGxlIGNvbXBhdC9taW5ndy5oKSwgd2UgdXNlIHRoZSBzY3JpcHQgd2ViLS1icm93c2UgdG8gZGlzcGxheQorICogSFRNTC4KKyAqLworI2lmbmRlZiBvcGVuX2h0bWwKK3ZvaWQgb3Blbl9odG1sKGNvbnN0IGNoYXIgKnBhdGgpCit7CisJZXhlY2xfZ2l0X2NtZCgid2ViLS1icm93c2UiLCAiLWMiLCAiaGVscC5icm93c2VyIiwgcGF0aCwgTlVMTCk7Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQgc2hvd19odG1sX3BhZ2UoY29uc3QgY2hhciAqZ2l0X2NtZCkKK3sKKwljb25zdCBjaGFyICpwYWdlID0gY21kX3RvX3BhZ2UoZ2l0X2NtZCk7CisJc3RydWN0IHN0cmJ1ZiBwYWdlX3BhdGg7IC8qIGl0IGxlYWtzIGJ1dCB3ZSBleGVjIGJlbGxvdyAqLworCisJZ2V0X2h0bWxfcGFnZV9wYXRoKCZwYWdlX3BhdGgsIHBhZ2UpOworCisJb3Blbl9odG1sKHBhZ2VfcGF0aC5idWYpOworfQorCitpbnQgY21kX2hlbHAoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCit7CisJaW50IG5vbmdpdDsKKwljb25zdCBjaGFyICphbGlhczsKKwlsb2FkX2NvbW1hbmRfbGlzdCgiZ2l0LSIsICZtYWluX2NtZHMsICZvdGhlcl9jbWRzKTsKKworCXNldHVwX2dpdF9kaXJlY3RvcnlfZ2VudGx5KCZub25naXQpOworCWdpdF9jb25maWcoZ2l0X2hlbHBfY29uZmlnLCBOVUxMKTsKKworCWFyZ2MgPSBwYXJzZV9vcHRpb25zKGFyZ2MsIGFyZ3YsIGJ1aWx0aW5faGVscF9vcHRpb25zLAorCQkJYnVpbHRpbl9oZWxwX3VzYWdlLCAwKTsKKworCWlmIChzaG93X2FsbCkgeworCQlwcmludGYoInVzYWdlOiAlc1xuXG4iLCBnaXRfdXNhZ2Vfc3RyaW5nKTsKKwkJbGlzdF9jb21tYW5kcygiZ2l0IGNvbW1hbmRzIiwgJm1haW5fY21kcywgJm90aGVyX2NtZHMpOworCQlwcmludGYoIiVzXG4iLCBnaXRfbW9yZV9pbmZvX3N0cmluZyk7CisJCXJldHVybiAwOworCX0KKworCWlmICghYXJndlswXSkgeworCQlwcmludGYoInVzYWdlOiAlc1xuXG4iLCBnaXRfdXNhZ2Vfc3RyaW5nKTsKKwkJbGlzdF9jb21tb25fY21kc19oZWxwKCk7CisJCXByaW50ZigiXG4lc1xuIiwgZ2l0X21vcmVfaW5mb19zdHJpbmcpOworCQlyZXR1cm4gMDsKKwl9CisKKwlhbGlhcyA9IGFsaWFzX2xvb2t1cChhcmd2WzBdKTsKKwlpZiAoYWxpYXMgJiYgIWlzX2dpdF9jb21tYW5kKGFyZ3ZbMF0pKSB7CisJCXByaW50ZigiYGdpdCAlcycgaXMgYWxpYXNlZCB0byBgJXMnXG4iLCBhcmd2WzBdLCBhbGlhcyk7CisJCXJldHVybiAwOworCX0KKworCXN3aXRjaCAoaGVscF9mb3JtYXQpIHsKKwljYXNlIEhFTFBfRk9STUFUX01BTjoKKwkJc2hvd19tYW5fcGFnZShhcmd2WzBdKTsKKwkJYnJlYWs7CisJY2FzZSBIRUxQX0ZPUk1BVF9JTkZPOgorCQlzaG93X2luZm9fcGFnZShhcmd2WzBdKTsKKwkJYnJlYWs7CisJY2FzZSBIRUxQX0ZPUk1BVF9XRUI6CisJCXNob3dfaHRtbF9wYWdlKGFyZ3ZbMF0pOworCQlicmVhazsKKwl9CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2J1aWx0aW4taHR0cC1mZXRjaC5jIGIvYnVpbHRpbi1odHRwLWZldGNoLmMKaW5kZXggMDNmMzRkNy4uZjNlNjNkNyAxMDA2NDQKLS0tIGEvYnVpbHRpbi1odHRwLWZldGNoLmMKKysrIGIvYnVpbHRpbi1odHRwLWZldGNoLmMKQEAgLTUzLDcgKzUzLDcgQEAKIAl9CiAJdXJsID0gYXJndlthcmddOwogCWlmICh1cmwgJiYgdXJsW3N0cmxlbih1cmwpLTFdICE9ICcvJykgewotCQlyZXdyaXR0ZW5fdXJsID0gbWFsbG9jKHN0cmxlbih1cmwpKzIpOworCQlyZXdyaXR0ZW5fdXJsID0geG1hbGxvYyhzdHJsZW4odXJsKSsyKTsKIAkJc3RyY3B5KHJld3JpdHRlbl91cmwsIHVybCk7CiAJCXN0cmNhdChyZXdyaXR0ZW5fdXJsLCAiLyIpOwogCQl1cmwgPSByZXdyaXR0ZW5fdXJsOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1sb2cuYyBiL2J1aWx0aW4tbG9nLmMKaW5kZXggZGI3MWUwZC4uNjBmOGRkOCAxMDA2NDQKLS0tIGEvYnVpbHRpbi1sb2cuYworKysgYi9idWlsdGluLWxvZy5jCkBAIC0xNCw3ICsxNCw2IEBACiAjaW5jbHVkZSAidGFnLmgiCiAjaW5jbHVkZSAicmVmbG9nLXdhbGsuaCIKICNpbmNsdWRlICJwYXRjaC1pZHMuaCIKLSNpbmNsdWRlICJyZWZzLmgiCiAjaW5jbHVkZSAicnVuLWNvbW1hbmQuaCIKICNpbmNsdWRlICJzaG9ydGxvZy5oIgogCkBAIC0yNSwzNiArMjQsMTAgQEAKIHN0YXRpYyBjb25zdCBjaGFyICpmbXRfcGF0Y2hfc3ViamVjdF9wcmVmaXggPSAiUEFUQ0giOwogc3RhdGljIGNvbnN0IGNoYXIgKmZtdF9wcmV0dHk7CiAKLXN0YXRpYyB2b2lkIGFkZF9uYW1lX2RlY29yYXRpb24oY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3Qgb2JqZWN0ICpvYmopCi17Ci0JaW50IHBsZW4gPSBzdHJsZW4ocHJlZml4KTsKLQlpbnQgbmxlbiA9IHN0cmxlbihuYW1lKTsKLQlzdHJ1Y3QgbmFtZV9kZWNvcmF0aW9uICpyZXMgPSB4bWFsbG9jKHNpemVvZihzdHJ1Y3QgbmFtZV9kZWNvcmF0aW9uKSArIHBsZW4gKyBubGVuKTsKLQltZW1jcHkocmVzLT5uYW1lLCBwcmVmaXgsIHBsZW4pOwotCW1lbWNweShyZXMtPm5hbWUgKyBwbGVuLCBuYW1lLCBubGVuICsgMSk7Ci0JcmVzLT5uZXh0ID0gYWRkX2RlY29yYXRpb24oJm5hbWVfZGVjb3JhdGlvbiwgb2JqLCByZXMpOwotfQotCi1zdGF0aWMgaW50IGFkZF9yZWZfZGVjb3JhdGlvbihjb25zdCBjaGFyICpyZWZuYW1lLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBpbnQgZmxhZ3MsIHZvaWQgKmNiX2RhdGEpCi17Ci0Jc3RydWN0IG9iamVjdCAqb2JqID0gcGFyc2Vfb2JqZWN0KHNoYTEpOwotCWlmICghb2JqKQotCQlyZXR1cm4gMDsKLQlhZGRfbmFtZV9kZWNvcmF0aW9uKCIiLCByZWZuYW1lLCBvYmopOwotCXdoaWxlIChvYmotPnR5cGUgPT0gT0JKX1RBRykgewotCQlvYmogPSAoKHN0cnVjdCB0YWcgKilvYmopLT50YWdnZWQ7Ci0JCWlmICghb2JqKQotCQkJYnJlYWs7Ci0JCWFkZF9uYW1lX2RlY29yYXRpb24oInRhZzogIiwgcmVmbmFtZSwgb2JqKTsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyB2b2lkIGNtZF9sb2dfaW5pdChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCwKIAkJICAgICAgc3RydWN0IHJldl9pbmZvICpyZXYpCiB7CiAJaW50IGk7Ci0JaW50IGRlY29yYXRlID0gMDsKIAogCXJldi0+YWJicmV2ID0gREVGQVVMVF9BQkJSRVY7CiAJcmV2LT5jb21taXRfZm9ybWF0ID0gQ01JVF9GTVRfREVGQVVMVDsKQEAgLTY0LDYgKzM3LDcgQEAKIAlESUZGX09QVF9TRVQoJnJldi0+ZGlmZm9wdCwgUkVDVVJTSVZFKTsKIAlyZXYtPnNob3dfcm9vdF9kaWZmID0gZGVmYXVsdF9zaG93X3Jvb3Q7CiAJcmV2LT5zdWJqZWN0X3ByZWZpeCA9IGZtdF9wYXRjaF9zdWJqZWN0X3ByZWZpeDsKKwlESUZGX09QVF9TRVQoJnJldi0+ZGlmZm9wdCwgQUxMT1dfVEVYVENPTlYpOwogCiAJaWYgKGRlZmF1bHRfZGF0ZV9tb2RlKQogCQlyZXYtPmRhdGVfbW9kZSA9IHBhcnNlX2RhdGVfZm9ybWF0KGRlZmF1bHRfZGF0ZV9tb2RlKTsKQEAgLTgwLDkgKzU0LDEwIEBACiAJZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykgewogCQljb25zdCBjaGFyICphcmcgPSBhcmd2W2ldOwogCQlpZiAoIXN0cmNtcChhcmcsICItLWRlY29yYXRlIikpIHsKLQkJCWlmICghZGVjb3JhdGUpCi0JCQkJZm9yX2VhY2hfcmVmKGFkZF9yZWZfZGVjb3JhdGlvbiwgTlVMTCk7Ci0JCQlkZWNvcmF0ZSA9IDE7CisJCQlsb2FkX3JlZl9kZWNvcmF0aW9ucygpOworCQkJcmV2LT5zaG93X2RlY29yYXRpb25zID0gMTsKKwkJfSBlbHNlIGlmICghc3RyY21wKGFyZywgIi0tc291cmNlIikpIHsKKwkJCXJldi0+c2hvd19zb3VyY2UgPSAxOwogCQl9IGVsc2UKIAkJCWRpZSgidW5yZWNvZ25pemVkIGFyZ3VtZW50OiAlcyIsIGFyZyk7CiAJfQpAQCAtMjE3LDYgKzE5MiwxMSBAQAogCWlmIChyZXYtPmVhcmx5X291dHB1dCkKIAkJZmluaXNoX2Vhcmx5X291dHB1dChyZXYpOwogCisJLyoKKwkgKiBGb3IgLS1jaGVjayBhbmQgLS1leGl0LWNvZGUsIHRoZSBleGl0IGNvZGUgaXMgYmFzZWQgb24gQ0hFQ0tfRkFJTEVECisJICogYW5kIEhBU19DSEFOR0VTIGJlaW5nIGFjY3VtdWxhdGVkIGluIHJldi0+ZGlmZm9wdCwgc28gYmUgY2FyZWZ1bCB0bworCSAqIHJldGFpbiB0aGF0IHN0YXRlIGluZm9ybWF0aW9uIGlmIHJlcGxhY2luZyByZXYtPmRpZmZvcHQgaW4gdGhpcyBsb29wCisJICovCiAJd2hpbGUgKChjb21taXQgPSBnZXRfcmV2aXNpb24ocmV2KSkgIT0gTlVMTCkgewogCQlsb2dfdHJlZV9jb21taXQocmV2LCBjb21taXQpOwogCQlpZiAoIXJldi0+cmVmbG9nX2luZm8pIHsKQEAgLTIyNyw3ICsyMDcsMTEgQEAKIAkJZnJlZV9jb21taXRfbGlzdChjb21taXQtPnBhcmVudHMpOwogCQljb21taXQtPnBhcmVudHMgPSBOVUxMOwogCX0KLQlyZXR1cm4gMDsKKwlpZiAocmV2LT5kaWZmb3B0Lm91dHB1dF9mb3JtYXQgJiBESUZGX0ZPUk1BVF9DSEVDS0RJRkYgJiYKKwkgICAgRElGRl9PUFRfVFNUKCZyZXYtPmRpZmZvcHQsIENIRUNLX0ZBSUxFRCkpIHsKKwkJcmV0dXJuIDAyOworCX0KKwlyZXR1cm4gZGlmZl9yZXN1bHRfY29kZSgmcmV2LT5kaWZmb3B0LCAwKTsKIH0KIAogc3RhdGljIGludCBnaXRfbG9nX2NvbmZpZyhjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlLCB2b2lkICpjYikKQEAgLTQ1MCw3ICs0MzQsNyBAQAogCiBzdGF0aWMgY29uc3QgY2hhciAqZm10X3BhdGNoX3N1ZmZpeCA9ICIucGF0Y2giOwogc3RhdGljIGludCBudW1iZXJlZCA9IDA7Ci1zdGF0aWMgaW50IGF1dG9fbnVtYmVyID0gMDsKK3N0YXRpYyBpbnQgYXV0b19udW1iZXIgPSAxOwogCiBzdGF0aWMgY2hhciAqKmV4dHJhX2hkcjsKIHN0YXRpYyBpbnQgZXh0cmFfaGRyX25yOwpAQCAtNTA5LDYgKzQ5Myw3IEBACiAJCQlyZXR1cm4gMDsKIAkJfQogCQludW1iZXJlZCA9IGdpdF9jb25maWdfYm9vbCh2YXIsIHZhbHVlKTsKKwkJYXV0b19udW1iZXIgPSBhdXRvX251bWJlciAmJiBudW1iZXJlZDsKIAkJcmV0dXJuIDA7CiAJfQogCkBAIC01NjgsNiArNTUzLDcgQEAKIAogc3RhdGljIEZJTEUgKnJlYWxzdGRvdXQgPSBOVUxMOwogc3RhdGljIGNvbnN0IGNoYXIgKm91dHB1dF9kaXJlY3RvcnkgPSBOVUxMOworc3RhdGljIGludCBvdXRkaXJfb2Zmc2V0OwogCiBzdGF0aWMgaW50IHJlb3Blbl9zdGRvdXQoY29uc3QgY2hhciAqb25lbGluZSwgaW50IG5yLCBpbnQgdG90YWwpCiB7CkBAIC01OTQsNyArNTgwLDcgQEAKIAkJc3RyY3B5KGZpbGVuYW1lICsgbGVuLCBmbXRfcGF0Y2hfc3VmZml4KTsKIAl9CiAKLQlmcHJpbnRmKHJlYWxzdGRvdXQsICIlc1xuIiwgZmlsZW5hbWUpOworCWZwcmludGYocmVhbHN0ZG91dCwgIiVzXG4iLCBmaWxlbmFtZSArIG91dGRpcl9vZmZzZXQpOwogCWlmIChmcmVvcGVuKGZpbGVuYW1lLCAidyIsIHN0ZG91dCkgPT0gTlVMTCkKIAkJcmV0dXJuIGVycm9yKCJDYW5ub3Qgb3BlbiBwYXRjaCBmaWxlICVzIixmaWxlbmFtZSk7CiAKQEAgLTY1MiwxMCArNjM4LDkgQEAKIAljb25zdCBjaGFyICpjb21taXR0ZXIgPSBnaXRfY29tbWl0dGVyX2luZm8oSURFTlRfV0FSTl9PTl9OT19OQU1FKTsKIAljb25zdCBjaGFyICplbWFpbF9zdGFydCA9IHN0cnJjaHIoY29tbWl0dGVyLCAnPCcpOwogCWNvbnN0IGNoYXIgKmVtYWlsX2VuZCA9IHN0cnJjaHIoY29tbWl0dGVyLCAnPicpOwotCXN0cnVjdCBzdHJidWYgYnVmOworCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAJaWYgKCFlbWFpbF9zdGFydCB8fCAhZW1haWxfZW5kIHx8IGVtYWlsX3N0YXJ0ID4gZW1haWxfZW5kIC0gMSkKIAkJZGllKCJDb3VsZCBub3QgZXh0cmFjdCBlbWFpbCBmcm9tIGNvbW1pdHRlciBpZGVudGl0eS4iKTsKLQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKIAlzdHJidWZfYWRkZigmYnVmLCAiJXMuJWx1LmdpdC4lLipzIiwgYmFzZSwKIAkJICAgICh1bnNpZ25lZCBsb25nKSB0aW1lKE5VTEwpLAogCQkgICAgKGludCkoZW1haWxfZW5kIC0gZW1haWxfc3RhcnQgLSAxKSwgZW1haWxfc3RhcnQgKyAxKTsKQEAgLTY3NCw3ICs2NTksNyBAQAogCWNvbnN0IGNoYXIgKm1zZzsKIAljb25zdCBjaGFyICpleHRyYV9oZWFkZXJzID0gcmV2LT5leHRyYV9oZWFkZXJzOwogCXN0cnVjdCBzaG9ydGxvZyBsb2c7Ci0Jc3RydWN0IHN0cmJ1ZiBzYjsKKwlzdHJ1Y3Qgc3RyYnVmIHNiID0gU1RSQlVGX0lOSVQ7CiAJaW50IGk7CiAJY29uc3QgY2hhciAqZW5jb2RpbmcgPSAidXRmLTgiOwogCXN0cnVjdCBkaWZmX29wdGlvbnMgb3B0czsKQEAgLTY5NSw3ICs2ODAsNiBAQAogCWNvbW1pdHRlciA9IGdpdF9jb21taXR0ZXJfaW5mbygwKTsKIAogCW1zZyA9IGJvZHk7Ci0Jc3RyYnVmX2luaXQoJnNiLCAwKTsKIAlwcF91c2VyX2luZm8oTlVMTCwgQ01JVF9GTVRfRU1BSUwsICZzYiwgY29tbWl0dGVyLCBEQVRFX1JGQzI4MjIsCiAJCSAgICAgZW5jb2RpbmcpOwogCXBwX3RpdGxlX2xpbmUoQ01JVF9GTVRfRU1BSUwsICZtc2csICZzYiwgc3ViamVjdF9zdGFydCwgZXh0cmFfaGVhZGVycywKQEAgLTc1Nyw2ICs3NDEsMjcgQEAKIAlyZXR1cm4geG1lbWR1cHooYSwgeiAtIGEpOwogfQogCitzdGF0aWMgY29uc3QgY2hhciAqc2V0X291dGRpcihjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKm91dHB1dF9kaXJlY3RvcnkpCit7CisJaWYgKG91dHB1dF9kaXJlY3RvcnkgJiYgaXNfYWJzb2x1dGVfcGF0aChvdXRwdXRfZGlyZWN0b3J5KSkKKwkJcmV0dXJuIG91dHB1dF9kaXJlY3Rvcnk7CisKKwlpZiAoIXByZWZpeCB8fCAhKnByZWZpeCkgeworCQlpZiAob3V0cHV0X2RpcmVjdG9yeSkKKwkJCXJldHVybiBvdXRwdXRfZGlyZWN0b3J5OworCQkvKiBUaGUgdXNlciBkaWQgbm90IGV4cGxpY2l0bHkgYXNrIGZvciAiLi8iICovCisJCW91dGRpcl9vZmZzZXQgPSAyOworCQlyZXR1cm4gIi4vIjsKKwl9CisKKwlvdXRkaXJfb2Zmc2V0ID0gc3RybGVuKHByZWZpeCk7CisJaWYgKCFvdXRwdXRfZGlyZWN0b3J5KQorCQlyZXR1cm4gcHJlZml4OworCisJcmV0dXJuIHhzdHJkdXAocHJlZml4X2ZpbGVuYW1lKHByZWZpeCwgb3V0ZGlyX29mZnNldCwKKwkJCQkgICAgICAgb3V0cHV0X2RpcmVjdG9yeSkpOworfQorCiBpbnQgY21kX2Zvcm1hdF9wYXRjaChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKIHsKIAlzdHJ1Y3QgY29tbWl0ICpjb21taXQ7CkBAIC03NzcsNyArNzgyLDcgQEAKIAljb25zdCBjaGFyICppbl9yZXBseV90byA9IE5VTEw7CiAJc3RydWN0IHBhdGNoX2lkcyBpZHM7CiAJY2hhciAqYWRkX3NpZ25vZmYgPSBOVUxMOwotCXN0cnVjdCBzdHJidWYgYnVmOworCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAKIAlnaXRfY29uZmlnKGdpdF9mb3JtYXRfY29uZmlnLCBOVUxMKTsKIAlpbml0X3JldmlzaW9ucygmcmV2LCBwcmVmaXgpOwpAQCAtODg1LDggKzg5MCw2IEBACiAJfQogCWFyZ2MgPSBqOwogCi0Jc3RyYnVmX2luaXQoJmJ1ZiwgMCk7Ci0KIAlmb3IgKGkgPSAwOyBpIDwgZXh0cmFfaGRyX25yOyBpKyspIHsKIAkJc3RyYnVmX2FkZHN0cigmYnVmLCBleHRyYV9oZHJbaV0pOwogCQlzdHJidWZfYWRkY2goJmJ1ZiwgJ1xuJyk7CkBAIC05MjksMTQgKzkzMiwxNSBAQAogCWlmIChhcmdjID4gMSkKIAkJZGllICgidW5yZWNvZ25pemVkIGFyZ3VtZW50OiAlcyIsIGFyZ3ZbMV0pOwogCi0JaWYgKCFyZXYuZGlmZm9wdC5vdXRwdXRfZm9ybWF0KQorCWlmICghcmV2LmRpZmZvcHQub3V0cHV0X2Zvcm1hdAorCQl8fCByZXYuZGlmZm9wdC5vdXRwdXRfZm9ybWF0ID09IERJRkZfRk9STUFUX1BBVENIKQogCQlyZXYuZGlmZm9wdC5vdXRwdXRfZm9ybWF0ID0gRElGRl9GT1JNQVRfRElGRlNUQVQgfCBESUZGX0ZPUk1BVF9TVU1NQVJZIHwgRElGRl9GT1JNQVRfUEFUQ0g7CiAKIAlpZiAoIURJRkZfT1BUX1RTVCgmcmV2LmRpZmZvcHQsIFRFWFQpICYmICFub19iaW5hcnlfZGlmZikKIAkJRElGRl9PUFRfU0VUKCZyZXYuZGlmZm9wdCwgQklOQVJZKTsKIAotCWlmICghb3V0cHV0X2RpcmVjdG9yeSAmJiAhdXNlX3N0ZG91dCkKLQkJb3V0cHV0X2RpcmVjdG9yeSA9IHByZWZpeDsKKwlpZiAoIXVzZV9zdGRvdXQpCisJCW91dHB1dF9kaXJlY3RvcnkgPSBzZXRfb3V0ZGlyKHByZWZpeCwgb3V0cHV0X2RpcmVjdG9yeSk7CiAKIAlpZiAob3V0cHV0X2RpcmVjdG9yeSkgewogCQlpZiAodXNlX3N0ZG91dCkKQEAgLTk2Miw2ICs5NjYsMTMgQEAKIAkJICogZ2V0X3JldmlzaW9uKCkgdG8gZG8gdGhlIHVzdWFsIHRyYXZlcnNhbC4KIAkJICovCiAJfQorCisJLyoKKwkgKiBXZSBjYW5ub3QgbW92ZSB0aGlzIGFueXdoZXJlIGVhcmxpZXIgYmVjYXVzZSB3ZSBkbyB3YW50IHRvCisJICoga25vdyBpZiAtLXJvb3Qgd2FzIGdpdmVuIGV4cGxpY2l0bHkgZnJvbSB0aGUgY29tYW5kIGxpbmUuCisJICovCisJcmV2LnNob3dfcm9vdF9kaWZmID0gMTsKKwogCWlmIChjb3Zlcl9sZXR0ZXIpIHsKIAkJLyogcmVtZW1iZXIgdGhlIHJhbmdlICovCiAJCWludCBpOwpAQCAtMTE2Miw4ICsxMTczLDcgQEAKIAkJCXNpZ24gPSAnLSc7CiAKIAkJaWYgKHZlcmJvc2UpIHsKLQkJCXN0cnVjdCBzdHJidWYgYnVmOwotCQkJc3RyYnVmX2luaXQoJmJ1ZiwgMCk7CisJCQlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCQkJcHJldHR5X3ByaW50X2NvbW1pdChDTUlUX0ZNVF9PTkVMSU5FLCBjb21taXQsCiAJCQkgICAgICAgICAgICAgICAgICAgICZidWYsIDAsIE5VTEwsIE5VTEwsIDAsIDApOwogCQkJcHJpbnRmKCIlYyAlcyAlc1xuIiwgc2lnbiwKZGlmZiAtLWdpdCBhL2J1aWx0aW4tbHMtdHJlZS5jIGIvYnVpbHRpbi1scy10cmVlLmMKaW5kZXggY2I2MTcxNy4uNWI2M2U2ZSAxMDA2NDQKLS0tIGEvYnVpbHRpbi1scy10cmVlLmMKKysrIGIvYnVpbHRpbi1scy10cmVlLmMKQEAgLTIzLDcgKzIzLDcgQEAKIHN0YXRpYyBjb25zdCBjaGFyICpsc190cmVlX3ByZWZpeDsKIAogc3RhdGljIGNvbnN0IGNoYXIgbHNfdHJlZV91c2FnZVtdID0KLQkiZ2l0IGxzLXRyZWUgWy1kXSBbLXJdIFstdF0gWy1sXSBbLXpdIFstLW5hbWUtb25seV0gWy0tbmFtZS1zdGF0dXNdIFstLWZ1bGwtbmFtZV0gWy0tYWJicmV2Wz08bj5dXSA8dHJlZS1pc2g+IFtwYXRoLi4uXSI7CisJImdpdCBscy10cmVlIFstZF0gWy1yXSBbLXRdIFstbF0gWy16XSBbLS1uYW1lLW9ubHldIFstLW5hbWUtc3RhdHVzXSBbLS1mdWxsLW5hbWVdIFstLWZ1bGwtdHJlZV0gWy0tYWJicmV2Wz08bj5dXSA8dHJlZS1pc2g+IFtwYXRoLi4uXSI7CiAKIHN0YXRpYyBpbnQgc2hvd19yZWN1cnNpdmUoY29uc3QgY2hhciAqYmFzZSwgaW50IGJhc2VsZW4sIGNvbnN0IGNoYXIgKnBhdGhuYW1lKQogewpAQCAtMTU2LDYgKzE1NiwxMSBAQAogCQkJCWNob21wX3ByZWZpeCA9IDA7CiAJCQkJYnJlYWs7CiAJCQl9CisJCQlpZiAoIXN0cmNtcChhcmd2WzFdKzIsICJmdWxsLXRyZWUiKSkgeworCQkJCWxzX3RyZWVfcHJlZml4ID0gcHJlZml4ID0gTlVMTDsKKwkJCQljaG9tcF9wcmVmaXggPSAwOworCQkJCWJyZWFrOworCQkJfQogCQkJaWYgKCFwcmVmaXhjbXAoYXJndlsxXSsyLCAiYWJicmV2PSIpKSB7CiAJCQkJYWJicmV2ID0gc3RydG91bChhcmd2WzFdKzksIE5VTEwsIDEwKTsKIAkJCQlpZiAoYWJicmV2ICYmIGFiYnJldiA8IE1JTklNVU1fQUJCUkVWKQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1tZXJnZS1iYXNlLmMgYi9idWlsdGluLW1lcmdlLWJhc2UuYwppbmRleCAzMzgyYjEzLi4wM2ZjMWMyIDEwMDY0NAotLS0gYS9idWlsdGluLW1lcmdlLWJhc2UuYworKysgYi9idWlsdGluLW1lcmdlLWJhc2UuYwpAQCAtMSwxMCArMSwxMyBAQAogI2luY2x1ZGUgImJ1aWx0aW4uaCIKICNpbmNsdWRlICJjYWNoZS5oIgogI2luY2x1ZGUgImNvbW1pdC5oIgorI2luY2x1ZGUgInBhcnNlLW9wdGlvbnMuaCIKIAotc3RhdGljIGludCBzaG93X21lcmdlX2Jhc2Uoc3RydWN0IGNvbW1pdCAqcmV2MSwgc3RydWN0IGNvbW1pdCAqcmV2MiwgaW50IHNob3dfYWxsKQorc3RhdGljIGludCBzaG93X21lcmdlX2Jhc2Uoc3RydWN0IGNvbW1pdCAqKnJldiwgaW50IHJldl9uciwgaW50IHNob3dfYWxsKQogewotCXN0cnVjdCBjb21taXRfbGlzdCAqcmVzdWx0ID0gZ2V0X21lcmdlX2Jhc2VzKHJldjEsIHJldjIsIDApOworCXN0cnVjdCBjb21taXRfbGlzdCAqcmVzdWx0OworCisJcmVzdWx0ID0gZ2V0X21lcmdlX2Jhc2VzX21hbnkocmV2WzBdLCByZXZfbnIgLSAxLCByZXYgKyAxLCAwKTsKIAogCWlmICghcmVzdWx0KQogCQlyZXR1cm4gMTsKQEAgLTE5LDggKzIyLDEwIEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyIG1lcmdlX2Jhc2VfdXNhZ2VbXSA9Ci0iZ2l0IG1lcmdlLWJhc2UgWy0tYWxsXSA8Y29tbWl0LWlkPiA8Y29tbWl0LWlkPiI7CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IG1lcmdlX2Jhc2VfdXNhZ2VbXSA9IHsKKwkiZ2l0IG1lcmdlLWJhc2UgWy0tYWxsXSA8Y29tbWl0LWlkPiA8Y29tbWl0LWlkPi4uLiIsCisJTlVMTAorfTsKIAogc3RhdGljIHN0cnVjdCBjb21taXQgKmdldF9jb21taXRfcmVmZXJlbmNlKGNvbnN0IGNoYXIgKmFyZykKIHsKQEAgLTM4LDIzICs0MywyMSBAQAogCiBpbnQgY21kX21lcmdlX2Jhc2UoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCiB7Ci0Jc3RydWN0IGNvbW1pdCAqcmV2MSwgKnJldjI7CisJc3RydWN0IGNvbW1pdCAqKnJldjsKKwlpbnQgcmV2X25yID0gMDsKIAlpbnQgc2hvd19hbGwgPSAwOwogCisJc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7CisJCU9QVF9CT09MRUFOKCdhJywgImFsbCIsICZzaG93X2FsbCwgIm91dHB1dHMgYWxsIGNvbW1vbiBhbmNlc3RvcnMiKSwKKwkJT1BUX0VORCgpCisJfTsKKwogCWdpdF9jb25maWcoZ2l0X2RlZmF1bHRfY29uZmlnLCBOVUxMKTsKLQotCXdoaWxlICgxIDwgYXJnYyAmJiBhcmd2WzFdWzBdID09ICctJykgewotCQljb25zdCBjaGFyICphcmcgPSBhcmd2WzFdOwotCQlpZiAoIXN0cmNtcChhcmcsICItYSIpIHx8ICFzdHJjbXAoYXJnLCAiLS1hbGwiKSkKLQkJCXNob3dfYWxsID0gMTsKLQkJZWxzZQotCQkJdXNhZ2UobWVyZ2VfYmFzZV91c2FnZSk7Ci0JCWFyZ2MtLTsgYXJndisrOwotCX0KLQlpZiAoYXJnYyAhPSAzKQotCQl1c2FnZShtZXJnZV9iYXNlX3VzYWdlKTsKLQlyZXYxID0gZ2V0X2NvbW1pdF9yZWZlcmVuY2UoYXJndlsxXSk7Ci0JcmV2MiA9IGdldF9jb21taXRfcmVmZXJlbmNlKGFyZ3ZbMl0pOwotCi0JcmV0dXJuIHNob3dfbWVyZ2VfYmFzZShyZXYxLCByZXYyLCBzaG93X2FsbCk7CisJYXJnYyA9IHBhcnNlX29wdGlvbnMoYXJnYywgYXJndiwgb3B0aW9ucywgbWVyZ2VfYmFzZV91c2FnZSwgMCk7CisJaWYgKGFyZ2MgPCAyKQorCQl1c2FnZV93aXRoX29wdGlvbnMobWVyZ2VfYmFzZV91c2FnZSwgb3B0aW9ucyk7CisJcmV2ID0geG1hbGxvYyhhcmdjICogc2l6ZW9mKCpyZXYpKTsKKwl3aGlsZSAoYXJnYy0tID4gMCkKKwkJcmV2W3Jldl9ucisrXSA9IGdldF9jb21taXRfcmVmZXJlbmNlKCphcmd2KyspOworCXJldHVybiBzaG93X21lcmdlX2Jhc2UocmV2LCByZXZfbnIsIHNob3dfYWxsKTsKIH0KZGlmZiAtLWdpdCBhL2J1aWx0aW4tbWVyZ2UtZmlsZS5jIGIvYnVpbHRpbi1tZXJnZS1maWxlLmMKaW5kZXggMzYwNTk2MC4uOTZlZGI5NyAxMDA2NDQKLS0tIGEvYnVpbHRpbi1tZXJnZS1maWxlLmMKKysrIGIvYnVpbHRpbi1tZXJnZS1maWxlLmMKQEAgLTIsNTcgKzIsNzkgQEAKICNpbmNsdWRlICJjYWNoZS5oIgogI2luY2x1ZGUgInhkaWZmL3hkaWZmLmgiCiAjaW5jbHVkZSAieGRpZmYtaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAicGFyc2Utb3B0aW9ucy5oIgogCi1zdGF0aWMgY29uc3QgY2hhciBtZXJnZV9maWxlX3VzYWdlW10gPQotImdpdCBtZXJnZS1maWxlIFstcCB8IC0tc3Rkb3V0XSBbLXEgfCAtLXF1aWV0XSBbLUwgbmFtZTEgWy1MIG9yaWcgWy1MIG5hbWUyXV1dIGZpbGUxIG9yaWdfZmlsZSBmaWxlMiI7CitzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgbWVyZ2VfZmlsZV91c2FnZVtdID0geworCSJnaXQgbWVyZ2UtZmlsZSBbb3B0aW9uc10gWy1MIG5hbWUxIFstTCBvcmlnIFstTCBuYW1lMl1dXSBmaWxlMSBvcmlnX2ZpbGUgZmlsZTIiLAorCU5VTEwKK307CisKK3N0YXRpYyBpbnQgbGFiZWxfY2IoY29uc3Qgc3RydWN0IG9wdGlvbiAqb3B0LCBjb25zdCBjaGFyICphcmcsIGludCB1bnNldCkKK3sKKwlzdGF0aWMgaW50IGxhYmVsX2NvdW50ID0gMDsKKwljb25zdCBjaGFyICoqbmFtZXMgPSAoY29uc3QgY2hhciAqKilvcHQtPnZhbHVlOworCisJaWYgKGxhYmVsX2NvdW50ID49IDMpCisJCXJldHVybiBlcnJvcigidG9vIG1hbnkgbGFiZWxzIG9uIHRoZSBjb21tYW5kIGxpbmUiKTsKKwluYW1lc1tsYWJlbF9jb3VudCsrXSA9IGFyZzsKKwlyZXR1cm4gMDsKK30KIAogaW50IGNtZF9tZXJnZV9maWxlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQogewotCWNvbnN0IGNoYXIgKm5hbWVzWzNdOworCWNvbnN0IGNoYXIgKm5hbWVzWzNdID0geyBOVUxMLCBOVUxMLCBOVUxMIH07CiAJbW1maWxlX3QgbW1mc1szXTsKIAltbWJ1ZmZlcl90IHJlc3VsdCA9IHtOVUxMLCAwfTsKIAl4cHBhcmFtX3QgeHBwID0ge1hERl9ORUVEX01JTklNQUx9OwogCWludCByZXQgPSAwLCBpID0gMCwgdG9fc3Rkb3V0ID0gMDsKKwlpbnQgbWVyZ2VfbGV2ZWwgPSBYRExfTUVSR0VfWkVBTE9VU19BTE5VTTsKKwlpbnQgbWVyZ2Vfc3R5bGUgPSAwLCBxdWlldCA9IDA7CisJaW50IG5vbmdpdDsKIAotCXdoaWxlIChhcmdjID4gNCkgewotCQlpZiAoIXN0cmNtcChhcmd2WzFdLCAiLUwiKSAmJiBpIDwgMykgewotCQkJbmFtZXNbaSsrXSA9IGFyZ3ZbMl07Ci0JCQlhcmdjLS07Ci0JCQlhcmd2Kys7Ci0JCX0gZWxzZSBpZiAoIXN0cmNtcChhcmd2WzFdLCAiLXAiKSB8fAotCQkJCSFzdHJjbXAoYXJndlsxXSwgIi0tc3Rkb3V0IikpCi0JCQl0b19zdGRvdXQgPSAxOwotCQllbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0sICItcSIpIHx8Ci0JCQkJIXN0cmNtcChhcmd2WzFdLCAiLS1xdWlldCIpKQotCQkJZnJlb3BlbigiL2Rldi9udWxsIiwgInciLCBzdGRlcnIpOwotCQllbHNlCi0JCQl1c2FnZShtZXJnZV9maWxlX3VzYWdlKTsKLQkJYXJnYy0tOwotCQlhcmd2Kys7CisJc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7CisJCU9QVF9CT09MRUFOKCdwJywgInN0ZG91dCIsICZ0b19zdGRvdXQsICJzZW5kIHJlc3VsdHMgdG8gc3RhbmRhcmQgb3V0cHV0IiksCisJCU9QVF9TRVRfSU5UKDAsICJkaWZmMyIsICZtZXJnZV9zdHlsZSwgInVzZSBhIGRpZmYzIGJhc2VkIG1lcmdlIiwgWERMX01FUkdFX0RJRkYzKSwKKwkJT1BUX19RVUlFVCgmcXVpZXQpLAorCQlPUFRfQ0FMTEJBQ0soJ0wnLCBOVUxMLCBuYW1lcywgIm5hbWUiLAorCQkJICAgICAic2V0IGxhYmVscyBmb3IgZmlsZTEvb3JpZ19maWxlL2ZpbGUyIiwgJmxhYmVsX2NiKSwKKwkJT1BUX0VORCgpLAorCX07CisKKwlwcmVmaXggPSBzZXR1cF9naXRfZGlyZWN0b3J5X2dlbnRseSgmbm9uZ2l0KTsKKwlpZiAoIW5vbmdpdCkgeworCQkvKiBSZWFkIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgKi8KKwkJZ2l0X2NvbmZpZyhnaXRfeG1lcmdlX2NvbmZpZywgTlVMTCk7CisJCWlmICgwIDw9IGdpdF94bWVyZ2Vfc3R5bGUpCisJCQltZXJnZV9zdHlsZSA9IGdpdF94bWVyZ2Vfc3R5bGU7CiAJfQogCi0JaWYgKGFyZ2MgIT0gNCkKLQkJdXNhZ2UobWVyZ2VfZmlsZV91c2FnZSk7Ci0KLQlmb3IgKDsgaSA8IDM7IGkrKykKLQkJbmFtZXNbaV0gPSBhcmd2W2kgKyAxXTsKKwlhcmdjID0gcGFyc2Vfb3B0aW9ucyhhcmdjLCBhcmd2LCBvcHRpb25zLCBtZXJnZV9maWxlX3VzYWdlLCAwKTsKKwlpZiAoYXJnYyAhPSAzKQorCQl1c2FnZV93aXRoX29wdGlvbnMobWVyZ2VfZmlsZV91c2FnZSwgb3B0aW9ucyk7CisJaWYgKHF1aWV0KSB7CisJCWlmICghZnJlb3BlbigiL2Rldi9udWxsIiwgInciLCBzdGRlcnIpKQorCQkJcmV0dXJuIGVycm9yKCJmYWlsZWQgdG8gcmVkaXJlY3Qgc3RkZXJyIHRvIC9kZXYvbnVsbDogIgorCQkJCSAgICAgIiVzXG4iLCBzdHJlcnJvcihlcnJubykpOworCX0KIAogCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKLQkJaWYgKHJlYWRfbW1maWxlKG1tZnMgKyBpLCBhcmd2W2kgKyAxXSkpCisJCWlmICghbmFtZXNbaV0pCisJCQluYW1lc1tpXSA9IGFyZ3ZbaV07CisJCWlmIChyZWFkX21tZmlsZShtbWZzICsgaSwgYXJndltpXSkpCiAJCQlyZXR1cm4gLTE7CiAJCWlmIChidWZmZXJfaXNfYmluYXJ5KG1tZnNbaV0ucHRyLCBtbWZzW2ldLnNpemUpKQogCQkJcmV0dXJuIGVycm9yKCJDYW5ub3QgbWVyZ2UgYmluYXJ5IGZpbGVzOiAlc1xuIiwKLQkJCQkJYXJndltpICsgMV0pOworCQkJCQlhcmd2W2ldKTsKIAl9CiAKIAlyZXQgPSB4ZGxfbWVyZ2UobW1mcyArIDEsIG1tZnMgKyAwLCBuYW1lc1swXSwgbW1mcyArIDIsIG5hbWVzWzJdLAotCQkJJnhwcCwgWERMX01FUkdFX1pFQUxPVVNfQUxOVU0sICZyZXN1bHQpOworCQkJJnhwcCwgbWVyZ2VfbGV2ZWwgfCBtZXJnZV9zdHlsZSwgJnJlc3VsdCk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKQogCQlmcmVlKG1tZnNbaV0ucHRyKTsKIAogCWlmIChyZXQgPj0gMCkgewotCQljb25zdCBjaGFyICpmaWxlbmFtZSA9IGFyZ3ZbMV07CisJCWNvbnN0IGNoYXIgKmZpbGVuYW1lID0gYXJndlswXTsKIAkJRklMRSAqZiA9IHRvX3N0ZG91dCA/IHN0ZG91dCA6IGZvcGVuKGZpbGVuYW1lLCAid2IiKTsKIAogCQlpZiAoIWYpCmRpZmYgLS1naXQgYS9idWlsdGluLW1lcmdlLXJlY3Vyc2l2ZS5jIGIvYnVpbHRpbi1tZXJnZS1yZWN1cnNpdmUuYwppbmRleCBiOTczODY1Li42YjUzNGMxIDEwMDY0NAotLS0gYS9idWlsdGluLW1lcmdlLXJlY3Vyc2l2ZS5jCisrKyBiL2J1aWx0aW4tbWVyZ2UtcmVjdXJzaXZlLmMKQEAgLTEsMTI4OCArMSw4IEBACi0vKgotICogUmVjdXJzaXZlIE1lcmdlIGFsZ29yaXRobSBzdG9sZW4gZnJvbSBnaXQtbWVyZ2UtcmVjdXJzaXZlLnB5IGJ5Ci0gKiBGcmVkcmlrIEt1aXZpbmVuLgotICogVGhlIHRoaWV2ZXMgd2VyZSBBbGV4IFJpZXNlbiBhbmQgSm9oYW5uZXMgU2NoaW5kZWxpbiwgaW4gSnVuZS9KdWx5IDIwMDYKLSAqLwogI2luY2x1ZGUgImNhY2hlLmgiCi0jaW5jbHVkZSAiY2FjaGUtdHJlZS5oIgogI2luY2x1ZGUgImNvbW1pdC5oIgotI2luY2x1ZGUgImJsb2IuaCIKLSNpbmNsdWRlICJidWlsdGluLmgiCi0jaW5jbHVkZSAidHJlZS13YWxrLmgiCi0jaW5jbHVkZSAiZGlmZi5oIgotI2luY2x1ZGUgImRpZmZjb3JlLmgiCiAjaW5jbHVkZSAidGFnLmgiCi0jaW5jbHVkZSAidW5wYWNrLXRyZWVzLmgiCi0jaW5jbHVkZSAic3RyaW5nLWxpc3QuaCIKLSNpbmNsdWRlICJ4ZGlmZi1pbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJsbC1tZXJnZS5oIgotI2luY2x1ZGUgImludGVycG9sYXRlLmgiCi0jaW5jbHVkZSAiYXR0ci5oIgotI2luY2x1ZGUgImRpci5oIgogI2luY2x1ZGUgIm1lcmdlLXJlY3Vyc2l2ZS5oIgogCi1zdGF0aWMgaW50IHN1YnRyZWVfbWVyZ2U7Ci0KLXN0YXRpYyBzdHJ1Y3QgdHJlZSAqc2hpZnRfdHJlZV9vYmplY3Qoc3RydWN0IHRyZWUgKm9uZSwgc3RydWN0IHRyZWUgKnR3bykKLXsKLQl1bnNpZ25lZCBjaGFyIHNoaWZ0ZWRbMjBdOwotCi0JLyoKLQkgKiBORUVEU1dPUks6IHRoaXMgbGltaXRzIHRoZSByZWN1cnNpb24gZGVwdGggdG8gaGFyZGNvZGVkCi0JICogdmFsdWUgJzInIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBvdmVyaGVhZC4KLQkgKi8KLQlzaGlmdF90cmVlKG9uZS0+b2JqZWN0LnNoYTEsIHR3by0+b2JqZWN0LnNoYTEsIHNoaWZ0ZWQsIDIpOwotCWlmICghaGFzaGNtcCh0d28tPm9iamVjdC5zaGExLCBzaGlmdGVkKSkKLQkJcmV0dXJuIHR3bzsKLQlyZXR1cm4gbG9va3VwX3RyZWUoc2hpZnRlZCk7Ci19Ci0KLS8qCi0gKiBBIHZpcnR1YWwgY29tbWl0IGhhcwotICogLSAoY29uc3QgY2hhciAqKWNvbW1pdC0+dXRpbCBzZXQgdG8gdGhlIG5hbWUsIGFuZAotICogLSAqKGludCAqKWNvbW1pdC0+b2JqZWN0LnNoYTEgc2V0IHRvIHRoZSB2aXJ0dWFsIGlkLgotICovCi0KLXN0YXRpYyBzdHJ1Y3QgY29tbWl0ICptYWtlX3ZpcnR1YWxfY29tbWl0KHN0cnVjdCB0cmVlICp0cmVlLCBjb25zdCBjaGFyICpjb21tZW50KQotewotCXN0cnVjdCBjb21taXQgKmNvbW1pdCA9IHhjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBjb21taXQpKTsKLQlzdGF0aWMgdW5zaWduZWQgdmlydHVhbF9pZCA9IDE7Ci0JY29tbWl0LT50cmVlID0gdHJlZTsKLQljb21taXQtPnV0aWwgPSAodm9pZCopY29tbWVudDsKLQkqKGludCopY29tbWl0LT5vYmplY3Quc2hhMSA9IHZpcnR1YWxfaWQrKzsKLQkvKiBhdm9pZCB3YXJuaW5ncyAqLwotCWNvbW1pdC0+b2JqZWN0LnBhcnNlZCA9IDE7Ci0JcmV0dXJuIGNvbW1pdDsKLX0KLQotLyoKLSAqIFNpbmNlIHdlIHVzZSBnZXRfdHJlZV9lbnRyeSgpLCB3aGljaCBkb2VzIG5vdCBwdXQgdGhlIHJlYWQgb2JqZWN0IGludG8KLSAqIHRoZSBvYmplY3QgcG9vbCwgd2UgY2Fubm90IHJlbHkgb24gYSA9PSBiLgotICovCi1zdGF0aWMgaW50IHNoYV9lcShjb25zdCB1bnNpZ25lZCBjaGFyICphLCBjb25zdCB1bnNpZ25lZCBjaGFyICpiKQotewotCWlmICghYSAmJiAhYikKLQkJcmV0dXJuIDI7Ci0JcmV0dXJuIGEgJiYgYiAmJiBoYXNoY21wKGEsIGIpID09IDA7Ci19Ci0KLS8qCi0gKiBTaW5jZSB3ZSB3YW50IHRvIHdyaXRlIHRoZSBpbmRleCBldmVudHVhbGx5LCB3ZSBjYW5ub3QgcmV1c2UgdGhlIGluZGV4Ci0gKiBmb3IgdGhlc2UgKHRlbXBvcmFyeSkgZGF0YS4KLSAqLwotc3RydWN0IHN0YWdlX2RhdGEKLXsKLQlzdHJ1Y3QKLQl7Ci0JCXVuc2lnbmVkIG1vZGU7Ci0JCXVuc2lnbmVkIGNoYXIgc2hhWzIwXTsKLQl9IHN0YWdlc1s0XTsKLQl1bnNpZ25lZCBwcm9jZXNzZWQ6MTsKLX07Ci0KLXN0YXRpYyBzdHJ1Y3Qgc3RyaW5nX2xpc3QgY3VycmVudF9maWxlX3NldCA9IHtOVUxMLCAwLCAwLCAxfTsKLXN0YXRpYyBzdHJ1Y3Qgc3RyaW5nX2xpc3QgY3VycmVudF9kaXJlY3Rvcnlfc2V0ID0ge05VTEwsIDAsIDAsIDF9OwotCi1zdGF0aWMgaW50IGNhbGxfZGVwdGggPSAwOwotc3RhdGljIGludCB2ZXJib3NpdHkgPSAyOwotc3RhdGljIGludCBkaWZmX3JlbmFtZV9saW1pdCA9IC0xOwotc3RhdGljIGludCBtZXJnZV9yZW5hbWVfbGltaXQgPSAtMTsKLXN0YXRpYyBpbnQgYnVmZmVyX291dHB1dCA9IDE7Ci1zdGF0aWMgc3RydWN0IHN0cmJ1ZiBvYnVmID0gU1RSQlVGX0lOSVQ7Ci0KLXN0YXRpYyBpbnQgc2hvdyhpbnQgdikKLXsKLQlyZXR1cm4gKCFjYWxsX2RlcHRoICYmIHZlcmJvc2l0eSA+PSB2KSB8fCB2ZXJib3NpdHkgPj0gNTsKLX0KLQotc3RhdGljIHZvaWQgZmx1c2hfb3V0cHV0KHZvaWQpCi17Ci0JaWYgKG9idWYubGVuKSB7Ci0JCWZwdXRzKG9idWYuYnVmLCBzdGRvdXQpOwotCQlzdHJidWZfcmVzZXQoJm9idWYpOwotCX0KLX0KLQotc3RhdGljIHZvaWQgb3V0cHV0KGludCB2LCBjb25zdCBjaGFyICpmbXQsIC4uLikKLXsKLQlpbnQgbGVuOwotCXZhX2xpc3QgYXA7Ci0KLQlpZiAoIXNob3codikpCi0JCXJldHVybjsKLQotCXN0cmJ1Zl9ncm93KCZvYnVmLCBjYWxsX2RlcHRoICogMiArIDIpOwotCW1lbXNldChvYnVmLmJ1ZiArIG9idWYubGVuLCAnICcsIGNhbGxfZGVwdGggKiAyKTsKLQlzdHJidWZfc2V0bGVuKCZvYnVmLCBvYnVmLmxlbiArIGNhbGxfZGVwdGggKiAyKTsKLQotCXZhX3N0YXJ0KGFwLCBmbXQpOwotCWxlbiA9IHZzbnByaW50ZihvYnVmLmJ1ZiArIG9idWYubGVuLCBzdHJidWZfYXZhaWwoJm9idWYpLCBmbXQsIGFwKTsKLQl2YV9lbmQoYXApOwotCi0JaWYgKGxlbiA8IDApCi0JCWxlbiA9IDA7Ci0JaWYgKGxlbiA+PSBzdHJidWZfYXZhaWwoJm9idWYpKSB7Ci0JCXN0cmJ1Zl9ncm93KCZvYnVmLCBsZW4gKyAyKTsKLQkJdmFfc3RhcnQoYXAsIGZtdCk7Ci0JCWxlbiA9IHZzbnByaW50ZihvYnVmLmJ1ZiArIG9idWYubGVuLCBzdHJidWZfYXZhaWwoJm9idWYpLCBmbXQsIGFwKTsKLQkJdmFfZW5kKGFwKTsKLQkJaWYgKGxlbiA+PSBzdHJidWZfYXZhaWwoJm9idWYpKSB7Ci0JCQlkaWUoInRoaXMgc2hvdWxkIG5vdCBoYXBwZW4sIHlvdXIgc25wcmludGYgaXMgYnJva2VuIik7Ci0JCX0KLQl9Ci0Jc3RyYnVmX3NldGxlbigmb2J1Ziwgb2J1Zi5sZW4gKyBsZW4pOwotCXN0cmJ1Zl9hZGQoJm9idWYsICJcbiIsIDEpOwotCWlmICghYnVmZmVyX291dHB1dCkKLQkJZmx1c2hfb3V0cHV0KCk7Ci19Ci0KLXN0YXRpYyB2b2lkIG91dHB1dF9jb21taXRfdGl0bGUoc3RydWN0IGNvbW1pdCAqY29tbWl0KQotewotCWludCBpOwotCWZsdXNoX291dHB1dCgpOwotCWZvciAoaSA9IGNhbGxfZGVwdGg7IGktLTspCi0JCWZwdXRzKCIgICIsIHN0ZG91dCk7Ci0JaWYgKGNvbW1pdC0+dXRpbCkKLQkJcHJpbnRmKCJ2aXJ0dWFsICVzXG4iLCAoY2hhciAqKWNvbW1pdC0+dXRpbCk7Ci0JZWxzZSB7Ci0JCXByaW50ZigiJXMgIiwgZmluZF91bmlxdWVfYWJicmV2KGNvbW1pdC0+b2JqZWN0LnNoYTEsIERFRkFVTFRfQUJCUkVWKSk7Ci0JCWlmIChwYXJzZV9jb21taXQoY29tbWl0KSAhPSAwKQotCQkJcHJpbnRmKCIoYmFkIGNvbW1pdClcbiIpOwotCQllbHNlIHsKLQkJCWNvbnN0IGNoYXIgKnM7Ci0JCQlpbnQgbGVuOwotCQkJZm9yIChzID0gY29tbWl0LT5idWZmZXI7ICpzOyBzKyspCi0JCQkJaWYgKCpzID09ICdcbicgJiYgc1sxXSA9PSAnXG4nKSB7Ci0JCQkJCXMgKz0gMjsKLQkJCQkJYnJlYWs7Ci0JCQkJfQotCQkJZm9yIChsZW4gPSAwOyBzW2xlbl0gJiYgJ1xuJyAhPSBzW2xlbl07IGxlbisrKQotCQkJCTsgLyogZG8gbm90aGluZyAqLwotCQkJcHJpbnRmKCIlLipzXG4iLCBsZW4sIHMpOwotCQl9Ci0JfQotfQotCi1zdGF0aWMgaW50IGFkZF9jYWNoZWluZm8odW5zaWduZWQgaW50IG1vZGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsCi0JCWNvbnN0IGNoYXIgKnBhdGgsIGludCBzdGFnZSwgaW50IHJlZnJlc2gsIGludCBvcHRpb25zKQotewotCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2U7Ci0JY2UgPSBtYWtlX2NhY2hlX2VudHJ5KG1vZGUsIHNoYTEgPyBzaGExIDogbnVsbF9zaGExLCBwYXRoLCBzdGFnZSwgcmVmcmVzaCk7Ci0JaWYgKCFjZSkKLQkJcmV0dXJuIGVycm9yKCJhZGRpbmZvX2NhY2hlIGZhaWxlZCBmb3IgcGF0aCAnJXMnIiwgcGF0aCk7Ci0JcmV0dXJuIGFkZF9jYWNoZV9lbnRyeShjZSwgb3B0aW9ucyk7Ci19Ci0KLS8qCi0gKiBUaGlzIGlzIGEgZ2xvYmFsIHZhcmlhYmxlIHdoaWNoIGlzIHVzZWQgaW4gYSBudW1iZXIgb2YgcGxhY2VzIGJ1dAotICogb25seSB3cml0dGVuIHRvIGluIHRoZSAnbWVyZ2UnIGZ1bmN0aW9uLgotICoKLSAqIGluZGV4X29ubHkgPT0gMSAgICA9PiBEb24ndCBsZWF2ZSBhbnkgbm9uLXN0YWdlIDAgZW50cmllcyBpbiB0aGUgY2FjaGUgYW5kCi0gKiAgICAgICAgICAgICAgICAgICAgICAgZG9uJ3QgdXBkYXRlIHRoZSB3b3JraW5nIGRpcmVjdG9yeS4KLSAqICAgICAgICAgICAgICAgMCAgICA9PiBMZWF2ZSB1bm1lcmdlZCBlbnRyaWVzIGluIHRoZSBjYWNoZSBhbmQgdXBkYXRlCi0gKiAgICAgICAgICAgICAgICAgICAgICAgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LgotICovCi1zdGF0aWMgaW50IGluZGV4X29ubHkgPSAwOwotCi1zdGF0aWMgdm9pZCBpbml0X3RyZWVfZGVzY19mcm9tX3RyZWUoc3RydWN0IHRyZWVfZGVzYyAqZGVzYywgc3RydWN0IHRyZWUgKnRyZWUpCi17Ci0JcGFyc2VfdHJlZSh0cmVlKTsKLQlpbml0X3RyZWVfZGVzYyhkZXNjLCB0cmVlLT5idWZmZXIsIHRyZWUtPnNpemUpOwotfQotCi1zdGF0aWMgaW50IGdpdF9tZXJnZV90cmVlcyhpbnQgaW5kZXhfb25seSwKLQkJCSAgIHN0cnVjdCB0cmVlICpjb21tb24sCi0JCQkgICBzdHJ1Y3QgdHJlZSAqaGVhZCwKLQkJCSAgIHN0cnVjdCB0cmVlICptZXJnZSkKLXsKLQlpbnQgcmM7Ci0Jc3RydWN0IHRyZWVfZGVzYyB0WzNdOwotCXN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyBvcHRzOwotCi0JbWVtc2V0KCZvcHRzLCAwLCBzaXplb2Yob3B0cykpOwotCWlmIChpbmRleF9vbmx5KQotCQlvcHRzLmluZGV4X29ubHkgPSAxOwotCWVsc2UKLQkJb3B0cy51cGRhdGUgPSAxOwotCW9wdHMubWVyZ2UgPSAxOwotCW9wdHMuaGVhZF9pZHggPSAyOwotCW9wdHMuZm4gPSB0aHJlZXdheV9tZXJnZTsKLQlvcHRzLnNyY19pbmRleCA9ICZ0aGVfaW5kZXg7Ci0Jb3B0cy5kc3RfaW5kZXggPSAmdGhlX2luZGV4OwotCi0JaW5pdF90cmVlX2Rlc2NfZnJvbV90cmVlKHQrMCwgY29tbW9uKTsKLQlpbml0X3RyZWVfZGVzY19mcm9tX3RyZWUodCsxLCBoZWFkKTsKLQlpbml0X3RyZWVfZGVzY19mcm9tX3RyZWUodCsyLCBtZXJnZSk7Ci0KLQlyYyA9IHVucGFja190cmVlcygzLCB0LCAmb3B0cyk7Ci0JY2FjaGVfdHJlZV9mcmVlKCZhY3RpdmVfY2FjaGVfdHJlZSk7Ci0JcmV0dXJuIHJjOwotfQotCi1zdHJ1Y3QgdHJlZSAqd3JpdGVfdHJlZV9mcm9tX21lbW9yeSh2b2lkKQotewotCXN0cnVjdCB0cmVlICpyZXN1bHQgPSBOVUxMOwotCi0JaWYgKHVubWVyZ2VkX2NhY2hlKCkpIHsKLQkJaW50IGk7Ci0JCW91dHB1dCgwLCAiVGhlcmUgYXJlIHVubWVyZ2VkIGluZGV4IGVudHJpZXM6Iik7Ci0JCWZvciAoaSA9IDA7IGkgPCBhY3RpdmVfbnI7IGkrKykgewotCQkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGFjdGl2ZV9jYWNoZVtpXTsKLQkJCWlmIChjZV9zdGFnZShjZSkpCi0JCQkJb3V0cHV0KDAsICIlZCAlLipzIiwgY2Vfc3RhZ2UoY2UpLCBjZV9uYW1lbGVuKGNlKSwgY2UtPm5hbWUpOwotCQl9Ci0JCXJldHVybiBOVUxMOwotCX0KLQotCWlmICghYWN0aXZlX2NhY2hlX3RyZWUpCi0JCWFjdGl2ZV9jYWNoZV90cmVlID0gY2FjaGVfdHJlZSgpOwotCi0JaWYgKCFjYWNoZV90cmVlX2Z1bGx5X3ZhbGlkKGFjdGl2ZV9jYWNoZV90cmVlKSAmJgotCSAgICBjYWNoZV90cmVlX3VwZGF0ZShhY3RpdmVfY2FjaGVfdHJlZSwKLQkJCSAgICAgIGFjdGl2ZV9jYWNoZSwgYWN0aXZlX25yLCAwLCAwKSA8IDApCi0JCWRpZSgiZXJyb3IgYnVpbGRpbmcgdHJlZXMiKTsKLQotCXJlc3VsdCA9IGxvb2t1cF90cmVlKGFjdGl2ZV9jYWNoZV90cmVlLT5zaGExKTsKLQotCXJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBpbnQgc2F2ZV9maWxlc19kaXJzKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsCi0JCWNvbnN0IGNoYXIgKmJhc2UsIGludCBiYXNlbGVuLCBjb25zdCBjaGFyICpwYXRoLAotCQl1bnNpZ25lZCBpbnQgbW9kZSwgaW50IHN0YWdlLCB2b2lkICpjb250ZXh0KQotewotCWludCBsZW4gPSBzdHJsZW4ocGF0aCk7Ci0JY2hhciAqbmV3cGF0aCA9IHhtYWxsb2MoYmFzZWxlbiArIGxlbiArIDEpOwotCW1lbWNweShuZXdwYXRoLCBiYXNlLCBiYXNlbGVuKTsKLQltZW1jcHkobmV3cGF0aCArIGJhc2VsZW4sIHBhdGgsIGxlbik7Ci0JbmV3cGF0aFtiYXNlbGVuICsgbGVuXSA9ICdcMCc7Ci0KLQlpZiAoU19JU0RJUihtb2RlKSkKLQkJc3RyaW5nX2xpc3RfaW5zZXJ0KG5ld3BhdGgsICZjdXJyZW50X2RpcmVjdG9yeV9zZXQpOwotCWVsc2UKLQkJc3RyaW5nX2xpc3RfaW5zZXJ0KG5ld3BhdGgsICZjdXJyZW50X2ZpbGVfc2V0KTsKLQlmcmVlKG5ld3BhdGgpOwotCi0JcmV0dXJuIFJFQURfVFJFRV9SRUNVUlNJVkU7Ci19Ci0KLXN0YXRpYyBpbnQgZ2V0X2ZpbGVzX2RpcnMoc3RydWN0IHRyZWUgKnRyZWUpCi17Ci0JaW50IG47Ci0JaWYgKHJlYWRfdHJlZV9yZWN1cnNpdmUodHJlZSwgIiIsIDAsIDAsIE5VTEwsIHNhdmVfZmlsZXNfZGlycywgTlVMTCkpCi0JCXJldHVybiAwOwotCW4gPSBjdXJyZW50X2ZpbGVfc2V0Lm5yICsgY3VycmVudF9kaXJlY3Rvcnlfc2V0Lm5yOwotCXJldHVybiBuOwotfQotCi0vKgotICogUmV0dXJucyBhbiBpbmRleF9lbnRyeSBpbnN0YW5jZSB3aGljaCBkb2Vzbid0IGhhdmUgdG8gY29ycmVzcG9uZCB0bwotICogYSByZWFsIGNhY2hlIGVudHJ5IGluIEdpdCdzIGluZGV4LgotICovCi1zdGF0aWMgc3RydWN0IHN0YWdlX2RhdGEgKmluc2VydF9zdGFnZV9kYXRhKGNvbnN0IGNoYXIgKnBhdGgsCi0JCXN0cnVjdCB0cmVlICpvLCBzdHJ1Y3QgdHJlZSAqYSwgc3RydWN0IHRyZWUgKmIsCi0JCXN0cnVjdCBzdHJpbmdfbGlzdCAqZW50cmllcykKLXsKLQlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXRlbTsKLQlzdHJ1Y3Qgc3RhZ2VfZGF0YSAqZSA9IHhjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBzdGFnZV9kYXRhKSk7Ci0JZ2V0X3RyZWVfZW50cnkoby0+b2JqZWN0LnNoYTEsIHBhdGgsCi0JCQllLT5zdGFnZXNbMV0uc2hhLCAmZS0+c3RhZ2VzWzFdLm1vZGUpOwotCWdldF90cmVlX2VudHJ5KGEtPm9iamVjdC5zaGExLCBwYXRoLAotCQkJZS0+c3RhZ2VzWzJdLnNoYSwgJmUtPnN0YWdlc1syXS5tb2RlKTsKLQlnZXRfdHJlZV9lbnRyeShiLT5vYmplY3Quc2hhMSwgcGF0aCwKLQkJCWUtPnN0YWdlc1szXS5zaGEsICZlLT5zdGFnZXNbM10ubW9kZSk7Ci0JaXRlbSA9IHN0cmluZ19saXN0X2luc2VydChwYXRoLCBlbnRyaWVzKTsKLQlpdGVtLT51dGlsID0gZTsKLQlyZXR1cm4gZTsKLX0KLQotLyoKLSAqIENyZWF0ZSBhIGRpY3Rpb25hcnkgbWFwcGluZyBmaWxlIG5hbWVzIHRvIHN0YWdlX2RhdGEgb2JqZWN0cy4gVGhlCi0gKiBkaWN0aW9uYXJ5IGNvbnRhaW5zIG9uZSBlbnRyeSBmb3IgZXZlcnkgcGF0aCB3aXRoIGEgbm9uLXplcm8gc3RhZ2UgZW50cnkuCi0gKi8KLXN0YXRpYyBzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmdldF91bm1lcmdlZCh2b2lkKQotewotCXN0cnVjdCBzdHJpbmdfbGlzdCAqdW5tZXJnZWQgPSB4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3Qgc3RyaW5nX2xpc3QpKTsKLQlpbnQgaTsKLQotCXVubWVyZ2VkLT5zdHJkdXBfc3RyaW5ncyA9IDE7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgYWN0aXZlX25yOyBpKyspIHsKLQkJc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKml0ZW07Ci0JCXN0cnVjdCBzdGFnZV9kYXRhICplOwotCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOwotCQlpZiAoIWNlX3N0YWdlKGNlKSkKLQkJCWNvbnRpbnVlOwotCi0JCWl0ZW0gPSBzdHJpbmdfbGlzdF9sb29rdXAoY2UtPm5hbWUsIHVubWVyZ2VkKTsKLQkJaWYgKCFpdGVtKSB7Ci0JCQlpdGVtID0gc3RyaW5nX2xpc3RfaW5zZXJ0KGNlLT5uYW1lLCB1bm1lcmdlZCk7Ci0JCQlpdGVtLT51dGlsID0geGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IHN0YWdlX2RhdGEpKTsKLQkJfQotCQllID0gaXRlbS0+dXRpbDsKLQkJZS0+c3RhZ2VzW2NlX3N0YWdlKGNlKV0ubW9kZSA9IGNlLT5jZV9tb2RlOwotCQloYXNoY3B5KGUtPnN0YWdlc1tjZV9zdGFnZShjZSldLnNoYSwgY2UtPnNoYTEpOwotCX0KLQotCXJldHVybiB1bm1lcmdlZDsKLX0KLQotc3RydWN0IHJlbmFtZQotewotCXN0cnVjdCBkaWZmX2ZpbGVwYWlyICpwYWlyOwotCXN0cnVjdCBzdGFnZV9kYXRhICpzcmNfZW50cnk7Ci0Jc3RydWN0IHN0YWdlX2RhdGEgKmRzdF9lbnRyeTsKLQl1bnNpZ25lZCBwcm9jZXNzZWQ6MTsKLX07Ci0KLS8qCi0gKiBHZXQgaW5mb3JtYXRpb24gb2YgYWxsIHJlbmFtZXMgd2hpY2ggb2NjdXJyZWQgYmV0d2VlbiAnb190cmVlJyBhbmQKLSAqICd0cmVlJy4gV2UgbmVlZCB0aGUgdGhyZWUgdHJlZXMgaW4gdGhlIG1lcmdlICgnb190cmVlJywgJ2FfdHJlZScgYW5kCi0gKiAnYl90cmVlJykgdG8gYmUgYWJsZSB0byBhc3NvY2lhdGUgdGhlIGNvcnJlY3QgY2FjaGUgZW50cmllcyB3aXRoCi0gKiB0aGUgcmVuYW1lIGluZm9ybWF0aW9uLiAndHJlZScgaXMgYWx3YXlzIGVxdWFsIHRvIGVpdGhlciBhX3RyZWUgb3IgYl90cmVlLgotICovCi1zdGF0aWMgc3RydWN0IHN0cmluZ19saXN0ICpnZXRfcmVuYW1lcyhzdHJ1Y3QgdHJlZSAqdHJlZSwKLQkJCQkJc3RydWN0IHRyZWUgKm9fdHJlZSwKLQkJCQkJc3RydWN0IHRyZWUgKmFfdHJlZSwKLQkJCQkJc3RydWN0IHRyZWUgKmJfdHJlZSwKLQkJCQkJc3RydWN0IHN0cmluZ19saXN0ICplbnRyaWVzKQotewotCWludCBpOwotCXN0cnVjdCBzdHJpbmdfbGlzdCAqcmVuYW1lczsKLQlzdHJ1Y3QgZGlmZl9vcHRpb25zIG9wdHM7Ci0KLQlyZW5hbWVzID0geGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IHN0cmluZ19saXN0KSk7Ci0JZGlmZl9zZXR1cCgmb3B0cyk7Ci0JRElGRl9PUFRfU0VUKCZvcHRzLCBSRUNVUlNJVkUpOwotCW9wdHMuZGV0ZWN0X3JlbmFtZSA9IERJRkZfREVURUNUX1JFTkFNRTsKLQlvcHRzLnJlbmFtZV9saW1pdCA9IG1lcmdlX3JlbmFtZV9saW1pdCA+PSAwID8gbWVyZ2VfcmVuYW1lX2xpbWl0IDoKLQkJCSAgICBkaWZmX3JlbmFtZV9saW1pdCA+PSAwID8gZGlmZl9yZW5hbWVfbGltaXQgOgotCQkJICAgIDUwMDsKLQlvcHRzLndhcm5fb25fdG9vX2xhcmdlX3JlbmFtZSA9IDE7Ci0Jb3B0cy5vdXRwdXRfZm9ybWF0ID0gRElGRl9GT1JNQVRfTk9fT1VUUFVUOwotCWlmIChkaWZmX3NldHVwX2RvbmUoJm9wdHMpIDwgMCkKLQkJZGllKCJkaWZmIHNldHVwIGZhaWxlZCIpOwotCWRpZmZfdHJlZV9zaGExKG9fdHJlZS0+b2JqZWN0LnNoYTEsIHRyZWUtPm9iamVjdC5zaGExLCAiIiwgJm9wdHMpOwotCWRpZmZjb3JlX3N0ZCgmb3B0cyk7Ci0JZm9yIChpID0gMDsgaSA8IGRpZmZfcXVldWVkX2RpZmYubnI7ICsraSkgewotCQlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXRlbTsKLQkJc3RydWN0IHJlbmFtZSAqcmU7Ci0JCXN0cnVjdCBkaWZmX2ZpbGVwYWlyICpwYWlyID0gZGlmZl9xdWV1ZWRfZGlmZi5xdWV1ZVtpXTsKLQkJaWYgKHBhaXItPnN0YXR1cyAhPSAnUicpIHsKLQkJCWRpZmZfZnJlZV9maWxlcGFpcihwYWlyKTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0JCXJlID0geG1hbGxvYyhzaXplb2YoKnJlKSk7Ci0JCXJlLT5wcm9jZXNzZWQgPSAwOwotCQlyZS0+cGFpciA9IHBhaXI7Ci0JCWl0ZW0gPSBzdHJpbmdfbGlzdF9sb29rdXAocmUtPnBhaXItPm9uZS0+cGF0aCwgZW50cmllcyk7Ci0JCWlmICghaXRlbSkKLQkJCXJlLT5zcmNfZW50cnkgPSBpbnNlcnRfc3RhZ2VfZGF0YShyZS0+cGFpci0+b25lLT5wYXRoLAotCQkJCQlvX3RyZWUsIGFfdHJlZSwgYl90cmVlLCBlbnRyaWVzKTsKLQkJZWxzZQotCQkJcmUtPnNyY19lbnRyeSA9IGl0ZW0tPnV0aWw7Ci0KLQkJaXRlbSA9IHN0cmluZ19saXN0X2xvb2t1cChyZS0+cGFpci0+dHdvLT5wYXRoLCBlbnRyaWVzKTsKLQkJaWYgKCFpdGVtKQotCQkJcmUtPmRzdF9lbnRyeSA9IGluc2VydF9zdGFnZV9kYXRhKHJlLT5wYWlyLT50d28tPnBhdGgsCi0JCQkJCW9fdHJlZSwgYV90cmVlLCBiX3RyZWUsIGVudHJpZXMpOwotCQllbHNlCi0JCQlyZS0+ZHN0X2VudHJ5ID0gaXRlbS0+dXRpbDsKLQkJaXRlbSA9IHN0cmluZ19saXN0X2luc2VydChwYWlyLT5vbmUtPnBhdGgsIHJlbmFtZXMpOwotCQlpdGVtLT51dGlsID0gcmU7Ci0JfQotCW9wdHMub3V0cHV0X2Zvcm1hdCA9IERJRkZfRk9STUFUX05PX09VVFBVVDsKLQlkaWZmX3F1ZXVlZF9kaWZmLm5yID0gMDsKLQlkaWZmX2ZsdXNoKCZvcHRzKTsKLQlyZXR1cm4gcmVuYW1lczsKLX0KLQotc3RhdGljIGludCB1cGRhdGVfc3RhZ2VzKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBkaWZmX2ZpbGVzcGVjICpvLAotCQkJIHN0cnVjdCBkaWZmX2ZpbGVzcGVjICphLCBzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqYiwKLQkJCSBpbnQgY2xlYXIpCi17Ci0JaW50IG9wdGlvbnMgPSBBRERfQ0FDSEVfT0tfVE9fQUREIHwgQUREX0NBQ0hFX09LX1RPX1JFUExBQ0U7Ci0JaWYgKGNsZWFyKQotCQlpZiAocmVtb3ZlX2ZpbGVfZnJvbV9jYWNoZShwYXRoKSkKLQkJCXJldHVybiAtMTsKLQlpZiAobykKLQkJaWYgKGFkZF9jYWNoZWluZm8oby0+bW9kZSwgby0+c2hhMSwgcGF0aCwgMSwgMCwgb3B0aW9ucykpCi0JCQlyZXR1cm4gLTE7Ci0JaWYgKGEpCi0JCWlmIChhZGRfY2FjaGVpbmZvKGEtPm1vZGUsIGEtPnNoYTEsIHBhdGgsIDIsIDAsIG9wdGlvbnMpKQotCQkJcmV0dXJuIC0xOwotCWlmIChiKQotCQlpZiAoYWRkX2NhY2hlaW5mbyhiLT5tb2RlLCBiLT5zaGExLCBwYXRoLCAzLCAwLCBvcHRpb25zKSkKLQkJCXJldHVybiAtMTsKLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCByZW1vdmVfZmlsZShpbnQgY2xlYW4sIGNvbnN0IGNoYXIgKnBhdGgsIGludCBub193ZCkKLXsKLQlpbnQgdXBkYXRlX2NhY2hlID0gaW5kZXhfb25seSB8fCBjbGVhbjsKLQlpbnQgdXBkYXRlX3dvcmtpbmdfZGlyZWN0b3J5ID0gIWluZGV4X29ubHkgJiYgIW5vX3dkOwotCi0JaWYgKHVwZGF0ZV9jYWNoZSkgewotCQlpZiAocmVtb3ZlX2ZpbGVfZnJvbV9jYWNoZShwYXRoKSkKLQkJCXJldHVybiAtMTsKLQl9Ci0JaWYgKHVwZGF0ZV93b3JraW5nX2RpcmVjdG9yeSkgewotCQlpZiAocmVtb3ZlX3BhdGgocGF0aCkpCi0JCQlyZXR1cm4gLTE7Ci0JfQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgY2hhciAqdW5pcXVlX3BhdGgoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqYnJhbmNoKQotewotCWNoYXIgKm5ld3BhdGggPSB4bWFsbG9jKHN0cmxlbihwYXRoKSArIDEgKyBzdHJsZW4oYnJhbmNoKSArIDggKyAxKTsKLQlpbnQgc3VmZml4ID0gMDsKLQlzdHJ1Y3Qgc3RhdCBzdDsKLQljaGFyICpwID0gbmV3cGF0aCArIHN0cmxlbihwYXRoKTsKLQlzdHJjcHkobmV3cGF0aCwgcGF0aCk7Ci0JKihwKyspID0gJ34nOwotCXN0cmNweShwLCBicmFuY2gpOwotCWZvciAoOyAqcDsgKytwKQotCQlpZiAoJy8nID09ICpwKQotCQkJKnAgPSAnXyc7Ci0Jd2hpbGUgKHN0cmluZ19saXN0X2hhc19zdHJpbmcoJmN1cnJlbnRfZmlsZV9zZXQsIG5ld3BhdGgpIHx8Ci0JICAgICAgIHN0cmluZ19saXN0X2hhc19zdHJpbmcoJmN1cnJlbnRfZGlyZWN0b3J5X3NldCwgbmV3cGF0aCkgfHwKLQkgICAgICAgbHN0YXQobmV3cGF0aCwgJnN0KSA9PSAwKQotCQlzcHJpbnRmKHAsICJfJWQiLCBzdWZmaXgrKyk7Ci0KLQlzdHJpbmdfbGlzdF9pbnNlcnQobmV3cGF0aCwgJmN1cnJlbnRfZmlsZV9zZXQpOwotCXJldHVybiBuZXdwYXRoOwotfQotCi1zdGF0aWMgdm9pZCBmbHVzaF9idWZmZXIoaW50IGZkLCBjb25zdCBjaGFyICpidWYsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKLXsKLQl3aGlsZSAoc2l6ZSA+IDApIHsKLQkJbG9uZyByZXQgPSB3cml0ZV9pbl9mdWxsKGZkLCBidWYsIHNpemUpOwotCQlpZiAocmV0IDwgMCkgewotCQkJLyogSWdub3JlIGVwaXBlICovCi0JCQlpZiAoZXJybm8gPT0gRVBJUEUpCi0JCQkJYnJlYWs7Ci0JCQlkaWUoIm1lcmdlLXJlY3Vyc2l2ZTogJXMiLCBzdHJlcnJvcihlcnJubykpOwotCQl9IGVsc2UgaWYgKCFyZXQpIHsKLQkJCWRpZSgibWVyZ2UtcmVjdXJzaXZlOiBkaXNrIGZ1bGw/Iik7Ci0JCX0KLQkJc2l6ZSAtPSByZXQ7Ci0JCWJ1ZiArPSByZXQ7Ci0JfQotfQotCi1zdGF0aWMgaW50IG1ha2Vfcm9vbV9mb3JfcGF0aChjb25zdCBjaGFyICpwYXRoKQotewotCWludCBzdGF0dXM7Ci0JY29uc3QgY2hhciAqbXNnID0gImZhaWxlZCB0byBjcmVhdGUgcGF0aCAnJXMnJXMiOwotCi0Jc3RhdHVzID0gc2FmZV9jcmVhdGVfbGVhZGluZ19kaXJlY3Rvcmllc19jb25zdChwYXRoKTsKLQlpZiAoc3RhdHVzKSB7Ci0JCWlmIChzdGF0dXMgPT0gLTMpIHsKLQkJCS8qIHNvbWV0aGluZyBlbHNlIGV4aXN0cyAqLwotCQkJZXJyb3IobXNnLCBwYXRoLCAiOiBwZXJoYXBzIGEgRC9GIGNvbmZsaWN0PyIpOwotCQkJcmV0dXJuIC0xOwotCQl9Ci0JCWRpZShtc2csIHBhdGgsICIiKTsKLQl9Ci0KLQkvKiBTdWNjZXNzZnVsIHVubGluayBpcyBnb29kLi4gKi8KLQlpZiAoIXVubGluayhwYXRoKSkKLQkJcmV0dXJuIDA7Ci0JLyogLi4gYW5kIHNvIGlzIG5vIGV4aXN0aW5nIGZpbGUgKi8KLQlpZiAoZXJybm8gPT0gRU5PRU5UKQotCQlyZXR1cm4gMDsKLQkvKiAuLiBidXQgbm90IHNvbWUgb3RoZXIgZXJyb3IgKHdobyByZWFsbHkgY2FyZXMgd2hhdD8pICovCi0JcmV0dXJuIGVycm9yKG1zZywgcGF0aCwgIjogcGVyaGFwcyBhIEQvRiBjb25mbGljdD8iKTsKLX0KLQotc3RhdGljIHZvaWQgdXBkYXRlX2ZpbGVfZmxhZ3MoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhLAotCQkJICAgICAgdW5zaWduZWQgbW9kZSwKLQkJCSAgICAgIGNvbnN0IGNoYXIgKnBhdGgsCi0JCQkgICAgICBpbnQgdXBkYXRlX2NhY2hlLAotCQkJICAgICAgaW50IHVwZGF0ZV93ZCkKLXsKLQlpZiAoaW5kZXhfb25seSkKLQkJdXBkYXRlX3dkID0gMDsKLQotCWlmICh1cGRhdGVfd2QpIHsKLQkJZW51bSBvYmplY3RfdHlwZSB0eXBlOwotCQl2b2lkICpidWY7Ci0JCXVuc2lnbmVkIGxvbmcgc2l6ZTsKLQotCQlpZiAoU19JU0dJVExJTksobW9kZSkpCi0JCQlkaWUoImNhbm5vdCByZWFkIG9iamVjdCAlcyAnJXMnOiBJdCBpcyBhIHN1Ym1vZHVsZSEiLAotCQkJICAgIHNoYTFfdG9faGV4KHNoYSksIHBhdGgpOwotCi0JCWJ1ZiA9IHJlYWRfc2hhMV9maWxlKHNoYSwgJnR5cGUsICZzaXplKTsKLQkJaWYgKCFidWYpCi0JCQlkaWUoImNhbm5vdCByZWFkIG9iamVjdCAlcyAnJXMnIiwgc2hhMV90b19oZXgoc2hhKSwgcGF0aCk7Ci0JCWlmICh0eXBlICE9IE9CSl9CTE9CKQotCQkJZGllKCJibG9iIGV4cGVjdGVkIGZvciAlcyAnJXMnIiwgc2hhMV90b19oZXgoc2hhKSwgcGF0aCk7Ci0JCWlmIChTX0lTUkVHKG1vZGUpKSB7Ci0JCQlzdHJ1Y3Qgc3RyYnVmIHN0cmJ1ZjsKLQkJCXN0cmJ1Zl9pbml0KCZzdHJidWYsIDApOwotCQkJaWYgKGNvbnZlcnRfdG9fd29ya2luZ190cmVlKHBhdGgsIGJ1Ziwgc2l6ZSwgJnN0cmJ1ZikpIHsKLQkJCQlmcmVlKGJ1Zik7Ci0JCQkJc2l6ZSA9IHN0cmJ1Zi5sZW47Ci0JCQkJYnVmID0gc3RyYnVmX2RldGFjaCgmc3RyYnVmLCBOVUxMKTsKLQkJCX0KLQkJfQotCi0JCWlmIChtYWtlX3Jvb21fZm9yX3BhdGgocGF0aCkgPCAwKSB7Ci0JCQl1cGRhdGVfd2QgPSAwOwotCQkJZnJlZShidWYpOwotCQkJZ290byB1cGRhdGVfaW5kZXg7Ci0JCX0KLQkJaWYgKFNfSVNSRUcobW9kZSkgfHwgKCFoYXNfc3ltbGlua3MgJiYgU19JU0xOSyhtb2RlKSkpIHsKLQkJCWludCBmZDsKLQkJCWlmIChtb2RlICYgMDEwMCkKLQkJCQltb2RlID0gMDc3NzsKLQkJCWVsc2UKLQkJCQltb2RlID0gMDY2NjsKLQkJCWZkID0gb3BlbihwYXRoLCBPX1dST05MWSB8IE9fVFJVTkMgfCBPX0NSRUFULCBtb2RlKTsKLQkJCWlmIChmZCA8IDApCi0JCQkJZGllKCJmYWlsZWQgdG8gb3BlbiAlczogJXMiLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOwotCQkJZmx1c2hfYnVmZmVyKGZkLCBidWYsIHNpemUpOwotCQkJY2xvc2UoZmQpOwotCQl9IGVsc2UgaWYgKFNfSVNMTksobW9kZSkpIHsKLQkJCWNoYXIgKmxuayA9IHhtZW1kdXB6KGJ1Ziwgc2l6ZSk7Ci0JCQlzYWZlX2NyZWF0ZV9sZWFkaW5nX2RpcmVjdG9yaWVzX2NvbnN0KHBhdGgpOwotCQkJdW5saW5rKHBhdGgpOwotCQkJc3ltbGluayhsbmssIHBhdGgpOwotCQkJZnJlZShsbmspOwotCQl9IGVsc2UKLQkJCWRpZSgiZG8gbm90IGtub3cgd2hhdCB0byBkbyB3aXRoICUwNm8gJXMgJyVzJyIsCi0JCQkgICAgbW9kZSwgc2hhMV90b19oZXgoc2hhKSwgcGF0aCk7Ci0JCWZyZWUoYnVmKTsKLQl9Ci0gdXBkYXRlX2luZGV4OgotCWlmICh1cGRhdGVfY2FjaGUpCi0JCWFkZF9jYWNoZWluZm8obW9kZSwgc2hhLCBwYXRoLCAwLCB1cGRhdGVfd2QsIEFERF9DQUNIRV9PS19UT19BREQpOwotfQotCi1zdGF0aWMgdm9pZCB1cGRhdGVfZmlsZShpbnQgY2xlYW4sCi0JCQljb25zdCB1bnNpZ25lZCBjaGFyICpzaGEsCi0JCQl1bnNpZ25lZCBtb2RlLAotCQkJY29uc3QgY2hhciAqcGF0aCkKLXsKLQl1cGRhdGVfZmlsZV9mbGFncyhzaGEsIG1vZGUsIHBhdGgsIGluZGV4X29ubHkgfHwgY2xlYW4sICFpbmRleF9vbmx5KTsKLX0KLQotLyogTG93IGxldmVsIGZpbGUgbWVyZ2luZywgdXBkYXRlIGFuZCByZW1vdmFsICovCi0KLXN0cnVjdCBtZXJnZV9maWxlX2luZm8KLXsKLQl1bnNpZ25lZCBjaGFyIHNoYVsyMF07Ci0JdW5zaWduZWQgbW9kZTsKLQl1bnNpZ25lZCBjbGVhbjoxLAotCQkgbWVyZ2U6MTsKLX07Ci0KLXN0YXRpYyB2b2lkIGZpbGxfbW0oY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgbW1maWxlX3QgKm1tKQotewotCXVuc2lnbmVkIGxvbmcgc2l6ZTsKLQllbnVtIG9iamVjdF90eXBlIHR5cGU7Ci0KLQlpZiAoIWhhc2hjbXAoc2hhMSwgbnVsbF9zaGExKSkgewotCQltbS0+cHRyID0geHN0cmR1cCgiIik7Ci0JCW1tLT5zaXplID0gMDsKLQkJcmV0dXJuOwotCX0KLQotCW1tLT5wdHIgPSByZWFkX3NoYTFfZmlsZShzaGExLCAmdHlwZSwgJnNpemUpOwotCWlmICghbW0tPnB0ciB8fCB0eXBlICE9IE9CSl9CTE9CKQotCQlkaWUoInVuYWJsZSB0byByZWFkIGJsb2Igb2JqZWN0ICVzIiwgc2hhMV90b19oZXgoc2hhMSkpOwotCW1tLT5zaXplID0gc2l6ZTsKLX0KLQotc3RhdGljIGludCBtZXJnZV8zd2F5KG1tYnVmZmVyX3QgKnJlc3VsdF9idWYsCi0JCSAgICAgIHN0cnVjdCBkaWZmX2ZpbGVzcGVjICpvLAotCQkgICAgICBzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqYSwKLQkJICAgICAgc3RydWN0IGRpZmZfZmlsZXNwZWMgKmIsCi0JCSAgICAgIGNvbnN0IGNoYXIgKmJyYW5jaDEsCi0JCSAgICAgIGNvbnN0IGNoYXIgKmJyYW5jaDIpCi17Ci0JbW1maWxlX3Qgb3JpZywgc3JjMSwgc3JjMjsKLQljaGFyICpuYW1lMSwgKm5hbWUyOwotCWludCBtZXJnZV9zdGF0dXM7Ci0KLQluYW1lMSA9IHhzdHJkdXAobWtwYXRoKCIlczolcyIsIGJyYW5jaDEsIGEtPnBhdGgpKTsKLQluYW1lMiA9IHhzdHJkdXAobWtwYXRoKCIlczolcyIsIGJyYW5jaDIsIGItPnBhdGgpKTsKLQotCWZpbGxfbW0oby0+c2hhMSwgJm9yaWcpOwotCWZpbGxfbW0oYS0+c2hhMSwgJnNyYzEpOwotCWZpbGxfbW0oYi0+c2hhMSwgJnNyYzIpOwotCi0JbWVyZ2Vfc3RhdHVzID0gbGxfbWVyZ2UocmVzdWx0X2J1ZiwgYS0+cGF0aCwgJm9yaWcsCi0JCQkJJnNyYzEsIG5hbWUxLCAmc3JjMiwgbmFtZTIsCi0JCQkJaW5kZXhfb25seSk7Ci0KLQlmcmVlKG5hbWUxKTsKLQlmcmVlKG5hbWUyKTsKLQlmcmVlKG9yaWcucHRyKTsKLQlmcmVlKHNyYzEucHRyKTsKLQlmcmVlKHNyYzIucHRyKTsKLQlyZXR1cm4gbWVyZ2Vfc3RhdHVzOwotfQotCi1zdGF0aWMgc3RydWN0IG1lcmdlX2ZpbGVfaW5mbyBtZXJnZV9maWxlKHN0cnVjdCBkaWZmX2ZpbGVzcGVjICpvLAotCQlzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqYSwgc3RydWN0IGRpZmZfZmlsZXNwZWMgKmIsCi0JCWNvbnN0IGNoYXIgKmJyYW5jaDEsIGNvbnN0IGNoYXIgKmJyYW5jaDIpCi17Ci0Jc3RydWN0IG1lcmdlX2ZpbGVfaW5mbyByZXN1bHQ7Ci0JcmVzdWx0Lm1lcmdlID0gMDsKLQlyZXN1bHQuY2xlYW4gPSAxOwotCi0JaWYgKChTX0lGTVQgJiBhLT5tb2RlKSAhPSAoU19JRk1UICYgYi0+bW9kZSkpIHsKLQkJcmVzdWx0LmNsZWFuID0gMDsKLQkJaWYgKFNfSVNSRUcoYS0+bW9kZSkpIHsKLQkJCXJlc3VsdC5tb2RlID0gYS0+bW9kZTsKLQkJCWhhc2hjcHkocmVzdWx0LnNoYSwgYS0+c2hhMSk7Ci0JCX0gZWxzZSB7Ci0JCQlyZXN1bHQubW9kZSA9IGItPm1vZGU7Ci0JCQloYXNoY3B5KHJlc3VsdC5zaGEsIGItPnNoYTEpOwotCQl9Ci0JfSBlbHNlIHsKLQkJaWYgKCFzaGFfZXEoYS0+c2hhMSwgby0+c2hhMSkgJiYgIXNoYV9lcShiLT5zaGExLCBvLT5zaGExKSkKLQkJCXJlc3VsdC5tZXJnZSA9IDE7Ci0KLQkJLyoKLQkJICogTWVyZ2UgbW9kZXMKLQkJICovCi0JCWlmIChhLT5tb2RlID09IGItPm1vZGUgfHwgYS0+bW9kZSA9PSBvLT5tb2RlKQotCQkJcmVzdWx0Lm1vZGUgPSBiLT5tb2RlOwotCQllbHNlIHsKLQkJCXJlc3VsdC5tb2RlID0gYS0+bW9kZTsKLQkJCWlmIChiLT5tb2RlICE9IG8tPm1vZGUpIHsKLQkJCQlyZXN1bHQuY2xlYW4gPSAwOwotCQkJCXJlc3VsdC5tZXJnZSA9IDE7Ci0JCQl9Ci0JCX0KLQotCQlpZiAoc2hhX2VxKGEtPnNoYTEsIGItPnNoYTEpIHx8IHNoYV9lcShhLT5zaGExLCBvLT5zaGExKSkKLQkJCWhhc2hjcHkocmVzdWx0LnNoYSwgYi0+c2hhMSk7Ci0JCWVsc2UgaWYgKHNoYV9lcShiLT5zaGExLCBvLT5zaGExKSkKLQkJCWhhc2hjcHkocmVzdWx0LnNoYSwgYS0+c2hhMSk7Ci0JCWVsc2UgaWYgKFNfSVNSRUcoYS0+bW9kZSkpIHsKLQkJCW1tYnVmZmVyX3QgcmVzdWx0X2J1ZjsKLQkJCWludCBtZXJnZV9zdGF0dXM7Ci0KLQkJCW1lcmdlX3N0YXR1cyA9IG1lcmdlXzN3YXkoJnJlc3VsdF9idWYsIG8sIGEsIGIsCi0JCQkJCQkgIGJyYW5jaDEsIGJyYW5jaDIpOwotCi0JCQlpZiAoKG1lcmdlX3N0YXR1cyA8IDApIHx8ICFyZXN1bHRfYnVmLnB0cikKLQkJCQlkaWUoIkZhaWxlZCB0byBleGVjdXRlIGludGVybmFsIG1lcmdlIik7Ci0KLQkJCWlmICh3cml0ZV9zaGExX2ZpbGUocmVzdWx0X2J1Zi5wdHIsIHJlc3VsdF9idWYuc2l6ZSwKLQkJCQkJICAgIGJsb2JfdHlwZSwgcmVzdWx0LnNoYSkpCi0JCQkJZGllKCJVbmFibGUgdG8gYWRkICVzIHRvIGRhdGFiYXNlIiwKLQkJCQkgICAgYS0+cGF0aCk7Ci0KLQkJCWZyZWUocmVzdWx0X2J1Zi5wdHIpOwotCQkJcmVzdWx0LmNsZWFuID0gKG1lcmdlX3N0YXR1cyA9PSAwKTsKLQkJfSBlbHNlIGlmIChTX0lTR0lUTElOSyhhLT5tb2RlKSkgewotCQkJcmVzdWx0LmNsZWFuID0gMDsKLQkJCWhhc2hjcHkocmVzdWx0LnNoYSwgYS0+c2hhMSk7Ci0JCX0gZWxzZSBpZiAoU19JU0xOSyhhLT5tb2RlKSkgewotCQkJaGFzaGNweShyZXN1bHQuc2hhLCBhLT5zaGExKTsKLQotCQkJaWYgKCFzaGFfZXEoYS0+c2hhMSwgYi0+c2hhMSkpCi0JCQkJcmVzdWx0LmNsZWFuID0gMDsKLQkJfSBlbHNlIHsKLQkJCWRpZSgidW5zdXBwb3J0ZWQgb2JqZWN0IHR5cGUgaW4gdGhlIHRyZWUiKTsKLQkJfQotCX0KLQotCXJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyB2b2lkIGNvbmZsaWN0X3JlbmFtZV9yZW5hbWUoc3RydWN0IHJlbmFtZSAqcmVuMSwKLQkJCQkgICBjb25zdCBjaGFyICpicmFuY2gxLAotCQkJCSAgIHN0cnVjdCByZW5hbWUgKnJlbjIsCi0JCQkJICAgY29uc3QgY2hhciAqYnJhbmNoMikKLXsKLQljaGFyICpkZWxbMl07Ci0JaW50IGRlbHAgPSAwOwotCWNvbnN0IGNoYXIgKnJlbjFfZHN0ID0gcmVuMS0+cGFpci0+dHdvLT5wYXRoOwotCWNvbnN0IGNoYXIgKnJlbjJfZHN0ID0gcmVuMi0+cGFpci0+dHdvLT5wYXRoOwotCWNvbnN0IGNoYXIgKmRzdF9uYW1lMSA9IHJlbjFfZHN0OwotCWNvbnN0IGNoYXIgKmRzdF9uYW1lMiA9IHJlbjJfZHN0OwotCWlmIChzdHJpbmdfbGlzdF9oYXNfc3RyaW5nKCZjdXJyZW50X2RpcmVjdG9yeV9zZXQsIHJlbjFfZHN0KSkgewotCQlkc3RfbmFtZTEgPSBkZWxbZGVscCsrXSA9IHVuaXF1ZV9wYXRoKHJlbjFfZHN0LCBicmFuY2gxKTsKLQkJb3V0cHV0KDEsICIlcyBpcyBhIGRpcmVjdG9yeSBpbiAlcyBhZGRlZCBhcyAlcyBpbnN0ZWFkIiwKLQkJICAgICAgIHJlbjFfZHN0LCBicmFuY2gyLCBkc3RfbmFtZTEpOwotCQlyZW1vdmVfZmlsZSgwLCByZW4xX2RzdCwgMCk7Ci0JfQotCWlmIChzdHJpbmdfbGlzdF9oYXNfc3RyaW5nKCZjdXJyZW50X2RpcmVjdG9yeV9zZXQsIHJlbjJfZHN0KSkgewotCQlkc3RfbmFtZTIgPSBkZWxbZGVscCsrXSA9IHVuaXF1ZV9wYXRoKHJlbjJfZHN0LCBicmFuY2gyKTsKLQkJb3V0cHV0KDEsICIlcyBpcyBhIGRpcmVjdG9yeSBpbiAlcyBhZGRlZCBhcyAlcyBpbnN0ZWFkIiwKLQkJICAgICAgIHJlbjJfZHN0LCBicmFuY2gxLCBkc3RfbmFtZTIpOwotCQlyZW1vdmVfZmlsZSgwLCByZW4yX2RzdCwgMCk7Ci0JfQotCWlmIChpbmRleF9vbmx5KSB7Ci0JCXJlbW92ZV9maWxlX2Zyb21fY2FjaGUoZHN0X25hbWUxKTsKLQkJcmVtb3ZlX2ZpbGVfZnJvbV9jYWNoZShkc3RfbmFtZTIpOwotCQkvKgotCQkgKiBVbmNvbW1lbnQgdG8gbGVhdmUgdGhlIGNvbmZsaWN0aW5nIG5hbWVzIGluIHRoZSByZXN1bHRpbmcgdHJlZQotCQkgKgotCQkgKiB1cGRhdGVfZmlsZSgwLCByZW4xLT5wYWlyLT50d28tPnNoYTEsIHJlbjEtPnBhaXItPnR3by0+bW9kZSwgZHN0X25hbWUxKTsKLQkJICogdXBkYXRlX2ZpbGUoMCwgcmVuMi0+cGFpci0+dHdvLT5zaGExLCByZW4yLT5wYWlyLT50d28tPm1vZGUsIGRzdF9uYW1lMik7Ci0JCSAqLwotCX0gZWxzZSB7Ci0JCXVwZGF0ZV9zdGFnZXMoZHN0X25hbWUxLCBOVUxMLCByZW4xLT5wYWlyLT50d28sIE5VTEwsIDEpOwotCQl1cGRhdGVfc3RhZ2VzKGRzdF9uYW1lMiwgTlVMTCwgTlVMTCwgcmVuMi0+cGFpci0+dHdvLCAxKTsKLQl9Ci0Jd2hpbGUgKGRlbHAtLSkKLQkJZnJlZShkZWxbZGVscF0pOwotfQotCi1zdGF0aWMgdm9pZCBjb25mbGljdF9yZW5hbWVfZGlyKHN0cnVjdCByZW5hbWUgKnJlbjEsCi0JCQkJY29uc3QgY2hhciAqYnJhbmNoMSkKLXsKLQljaGFyICpuZXdfcGF0aCA9IHVuaXF1ZV9wYXRoKHJlbjEtPnBhaXItPnR3by0+cGF0aCwgYnJhbmNoMSk7Ci0Jb3V0cHV0KDEsICJSZW5hbWVkICVzIHRvICVzIGluc3RlYWQiLCByZW4xLT5wYWlyLT5vbmUtPnBhdGgsIG5ld19wYXRoKTsKLQlyZW1vdmVfZmlsZSgwLCByZW4xLT5wYWlyLT50d28tPnBhdGgsIDApOwotCXVwZGF0ZV9maWxlKDAsIHJlbjEtPnBhaXItPnR3by0+c2hhMSwgcmVuMS0+cGFpci0+dHdvLT5tb2RlLCBuZXdfcGF0aCk7Ci0JZnJlZShuZXdfcGF0aCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNvbmZsaWN0X3JlbmFtZV9yZW5hbWVfMihzdHJ1Y3QgcmVuYW1lICpyZW4xLAotCQkJCSAgICAgY29uc3QgY2hhciAqYnJhbmNoMSwKLQkJCQkgICAgIHN0cnVjdCByZW5hbWUgKnJlbjIsCi0JCQkJICAgICBjb25zdCBjaGFyICpicmFuY2gyKQotewotCWNoYXIgKm5ld19wYXRoMSA9IHVuaXF1ZV9wYXRoKHJlbjEtPnBhaXItPnR3by0+cGF0aCwgYnJhbmNoMSk7Ci0JY2hhciAqbmV3X3BhdGgyID0gdW5pcXVlX3BhdGgocmVuMi0+cGFpci0+dHdvLT5wYXRoLCBicmFuY2gyKTsKLQlvdXRwdXQoMSwgIlJlbmFtZWQgJXMgdG8gJXMgYW5kICVzIHRvICVzIGluc3RlYWQiLAotCSAgICAgICByZW4xLT5wYWlyLT5vbmUtPnBhdGgsIG5ld19wYXRoMSwKLQkgICAgICAgcmVuMi0+cGFpci0+b25lLT5wYXRoLCBuZXdfcGF0aDIpOwotCXJlbW92ZV9maWxlKDAsIHJlbjEtPnBhaXItPnR3by0+cGF0aCwgMCk7Ci0JdXBkYXRlX2ZpbGUoMCwgcmVuMS0+cGFpci0+dHdvLT5zaGExLCByZW4xLT5wYWlyLT50d28tPm1vZGUsIG5ld19wYXRoMSk7Ci0JdXBkYXRlX2ZpbGUoMCwgcmVuMi0+cGFpci0+dHdvLT5zaGExLCByZW4yLT5wYWlyLT50d28tPm1vZGUsIG5ld19wYXRoMik7Ci0JZnJlZShuZXdfcGF0aDIpOwotCWZyZWUobmV3X3BhdGgxKTsKLX0KLQotc3RhdGljIGludCBwcm9jZXNzX3JlbmFtZXMoc3RydWN0IHN0cmluZ19saXN0ICphX3JlbmFtZXMsCi0JCQkgICBzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmJfcmVuYW1lcywKLQkJCSAgIGNvbnN0IGNoYXIgKmFfYnJhbmNoLAotCQkJICAgY29uc3QgY2hhciAqYl9icmFuY2gpCi17Ci0JaW50IGNsZWFuX21lcmdlID0gMSwgaSwgajsKLQlzdHJ1Y3Qgc3RyaW5nX2xpc3QgYV9ieV9kc3QgPSB7TlVMTCwgMCwgMCwgMH0sIGJfYnlfZHN0ID0ge05VTEwsIDAsIDAsIDB9OwotCWNvbnN0IHN0cnVjdCByZW5hbWUgKnNyZTsKLQotCWZvciAoaSA9IDA7IGkgPCBhX3JlbmFtZXMtPm5yOyBpKyspIHsKLQkJc3JlID0gYV9yZW5hbWVzLT5pdGVtc1tpXS51dGlsOwotCQlzdHJpbmdfbGlzdF9pbnNlcnQoc3JlLT5wYWlyLT50d28tPnBhdGgsICZhX2J5X2RzdCktPnV0aWwKLQkJCT0gc3JlLT5kc3RfZW50cnk7Ci0JfQotCWZvciAoaSA9IDA7IGkgPCBiX3JlbmFtZXMtPm5yOyBpKyspIHsKLQkJc3JlID0gYl9yZW5hbWVzLT5pdGVtc1tpXS51dGlsOwotCQlzdHJpbmdfbGlzdF9pbnNlcnQoc3JlLT5wYWlyLT50d28tPnBhdGgsICZiX2J5X2RzdCktPnV0aWwKLQkJCT0gc3JlLT5kc3RfZW50cnk7Ci0JfQotCi0JZm9yIChpID0gMCwgaiA9IDA7IGkgPCBhX3JlbmFtZXMtPm5yIHx8IGogPCBiX3JlbmFtZXMtPm5yOykgewotCQlpbnQgY29tcGFyZTsKLQkJY2hhciAqc3JjOwotCQlzdHJ1Y3Qgc3RyaW5nX2xpc3QgKnJlbmFtZXMxLCAqcmVuYW1lczIsICpyZW5hbWVzMkRzdDsKLQkJc3RydWN0IHJlbmFtZSAqcmVuMSA9IE5VTEwsICpyZW4yID0gTlVMTDsKLQkJY29uc3QgY2hhciAqYnJhbmNoMSwgKmJyYW5jaDI7Ci0JCWNvbnN0IGNoYXIgKnJlbjFfc3JjLCAqcmVuMV9kc3Q7Ci0KLQkJaWYgKGkgPj0gYV9yZW5hbWVzLT5ucikgewotCQkJY29tcGFyZSA9IDE7Ci0JCQlyZW4yID0gYl9yZW5hbWVzLT5pdGVtc1tqKytdLnV0aWw7Ci0JCX0gZWxzZSBpZiAoaiA+PSBiX3JlbmFtZXMtPm5yKSB7Ci0JCQljb21wYXJlID0gLTE7Ci0JCQlyZW4xID0gYV9yZW5hbWVzLT5pdGVtc1tpKytdLnV0aWw7Ci0JCX0gZWxzZSB7Ci0JCQljb21wYXJlID0gc3RyY21wKGFfcmVuYW1lcy0+aXRlbXNbaV0uc3RyaW5nLAotCQkJCQliX3JlbmFtZXMtPml0ZW1zW2pdLnN0cmluZyk7Ci0JCQlpZiAoY29tcGFyZSA8PSAwKQotCQkJCXJlbjEgPSBhX3JlbmFtZXMtPml0ZW1zW2krK10udXRpbDsKLQkJCWlmIChjb21wYXJlID49IDApCi0JCQkJcmVuMiA9IGJfcmVuYW1lcy0+aXRlbXNbaisrXS51dGlsOwotCQl9Ci0KLQkJLyogVE9ETzogcmVmYWN0b3IsIHNvIHRoYXQgMS8yIGFyZSBub3QgbmVlZGVkICovCi0JCWlmIChyZW4xKSB7Ci0JCQlyZW5hbWVzMSA9IGFfcmVuYW1lczsKLQkJCXJlbmFtZXMyID0gYl9yZW5hbWVzOwotCQkJcmVuYW1lczJEc3QgPSAmYl9ieV9kc3Q7Ci0JCQlicmFuY2gxID0gYV9icmFuY2g7Ci0JCQlicmFuY2gyID0gYl9icmFuY2g7Ci0JCX0gZWxzZSB7Ci0JCQlzdHJ1Y3QgcmVuYW1lICp0bXA7Ci0JCQlyZW5hbWVzMSA9IGJfcmVuYW1lczsKLQkJCXJlbmFtZXMyID0gYV9yZW5hbWVzOwotCQkJcmVuYW1lczJEc3QgPSAmYV9ieV9kc3Q7Ci0JCQlicmFuY2gxID0gYl9icmFuY2g7Ci0JCQlicmFuY2gyID0gYV9icmFuY2g7Ci0JCQl0bXAgPSByZW4yOwotCQkJcmVuMiA9IHJlbjE7Ci0JCQlyZW4xID0gdG1wOwotCQl9Ci0JCXNyYyA9IHJlbjEtPnBhaXItPm9uZS0+cGF0aDsKLQotCQlyZW4xLT5kc3RfZW50cnktPnByb2Nlc3NlZCA9IDE7Ci0JCXJlbjEtPnNyY19lbnRyeS0+cHJvY2Vzc2VkID0gMTsKLQotCQlpZiAocmVuMS0+cHJvY2Vzc2VkKQotCQkJY29udGludWU7Ci0JCXJlbjEtPnByb2Nlc3NlZCA9IDE7Ci0KLQkJcmVuMV9zcmMgPSByZW4xLT5wYWlyLT5vbmUtPnBhdGg7Ci0JCXJlbjFfZHN0ID0gcmVuMS0+cGFpci0+dHdvLT5wYXRoOwotCi0JCWlmIChyZW4yKSB7Ci0JCQljb25zdCBjaGFyICpyZW4yX3NyYyA9IHJlbjItPnBhaXItPm9uZS0+cGF0aDsKLQkJCWNvbnN0IGNoYXIgKnJlbjJfZHN0ID0gcmVuMi0+cGFpci0+dHdvLT5wYXRoOwotCQkJLyogUmVuYW1lZCBpbiAxIGFuZCByZW5hbWVkIGluIDIgKi8KLQkJCWlmIChzdHJjbXAocmVuMV9zcmMsIHJlbjJfc3JjKSAhPSAwKQotCQkJCWRpZSgicmVuMS5zcmMgIT0gcmVuMi5zcmMiKTsKLQkJCXJlbjItPmRzdF9lbnRyeS0+cHJvY2Vzc2VkID0gMTsKLQkJCXJlbjItPnByb2Nlc3NlZCA9IDE7Ci0JCQlpZiAoc3RyY21wKHJlbjFfZHN0LCByZW4yX2RzdCkgIT0gMCkgewotCQkJCWNsZWFuX21lcmdlID0gMDsKLQkJCQlvdXRwdXQoMSwgIkNPTkZMSUNUIChyZW5hbWUvcmVuYW1lKTogIgotCQkJCSAgICAgICAiUmVuYW1lIFwiJXNcIi0+XCIlc1wiIGluIGJyYW5jaCBcIiVzXCIgIgotCQkJCSAgICAgICAicmVuYW1lIFwiJXNcIi0+XCIlc1wiIGluIFwiJXNcIiVzIiwKLQkJCQkgICAgICAgc3JjLCByZW4xX2RzdCwgYnJhbmNoMSwKLQkJCQkgICAgICAgc3JjLCByZW4yX2RzdCwgYnJhbmNoMiwKLQkJCQkgICAgICAgaW5kZXhfb25seSA/ICIgKGxlZnQgdW5yZXNvbHZlZCkiOiAiIik7Ci0JCQkJaWYgKGluZGV4X29ubHkpIHsKLQkJCQkJcmVtb3ZlX2ZpbGVfZnJvbV9jYWNoZShzcmMpOwotCQkJCQl1cGRhdGVfZmlsZSgwLCByZW4xLT5wYWlyLT5vbmUtPnNoYTEsCi0JCQkJCQkgICAgcmVuMS0+cGFpci0+b25lLT5tb2RlLCBzcmMpOwotCQkJCX0KLQkJCQljb25mbGljdF9yZW5hbWVfcmVuYW1lKHJlbjEsIGJyYW5jaDEsIHJlbjIsIGJyYW5jaDIpOwotCQkJfSBlbHNlIHsKLQkJCQlzdHJ1Y3QgbWVyZ2VfZmlsZV9pbmZvIG1maTsKLQkJCQlyZW1vdmVfZmlsZSgxLCByZW4xX3NyYywgMSk7Ci0JCQkJbWZpID0gbWVyZ2VfZmlsZShyZW4xLT5wYWlyLT5vbmUsCi0JCQkJCQkgcmVuMS0+cGFpci0+dHdvLAotCQkJCQkJIHJlbjItPnBhaXItPnR3bywKLQkJCQkJCSBicmFuY2gxLAotCQkJCQkJIGJyYW5jaDIpOwotCQkJCWlmIChtZmkubWVyZ2UgfHwgIW1maS5jbGVhbikKLQkJCQkJb3V0cHV0KDEsICJSZW5hbWVkICVzLT4lcyIsIHNyYywgcmVuMV9kc3QpOwotCi0JCQkJaWYgKG1maS5tZXJnZSkKLQkJCQkJb3V0cHV0KDIsICJBdXRvLW1lcmdlZCAlcyIsIHJlbjFfZHN0KTsKLQotCQkJCWlmICghbWZpLmNsZWFuKSB7Ci0JCQkJCW91dHB1dCgxLCAiQ09ORkxJQ1QgKGNvbnRlbnQpOiBtZXJnZSBjb25mbGljdCBpbiAlcyIsCi0JCQkJCSAgICAgICByZW4xX2RzdCk7Ci0JCQkJCWNsZWFuX21lcmdlID0gMDsKLQotCQkJCQlpZiAoIWluZGV4X29ubHkpCi0JCQkJCQl1cGRhdGVfc3RhZ2VzKHJlbjFfZHN0LAotCQkJCQkJCSAgICAgIHJlbjEtPnBhaXItPm9uZSwKLQkJCQkJCQkgICAgICByZW4xLT5wYWlyLT50d28sCi0JCQkJCQkJICAgICAgcmVuMi0+cGFpci0+dHdvLAotCQkJCQkJCSAgICAgIDEgLyogY2xlYXIgKi8pOwotCQkJCX0KLQkJCQl1cGRhdGVfZmlsZShtZmkuY2xlYW4sIG1maS5zaGEsIG1maS5tb2RlLCByZW4xX2RzdCk7Ci0JCQl9Ci0JCX0gZWxzZSB7Ci0JCQkvKiBSZW5hbWVkIGluIDEsIG1heWJlIGNoYW5nZWQgaW4gMiAqLwotCQkJc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKml0ZW07Ci0JCQkvKiB3ZSBvbmx5IHVzZSBzaGExIGFuZCBtb2RlIG9mIHRoZXNlICovCi0JCQlzdHJ1Y3QgZGlmZl9maWxlc3BlYyBzcmNfb3RoZXIsIGRzdF9vdGhlcjsKLQkJCWludCB0cnlfbWVyZ2UsIHN0YWdlID0gYV9yZW5hbWVzID09IHJlbmFtZXMxID8gMzogMjsKLQotCQkJcmVtb3ZlX2ZpbGUoMSwgcmVuMV9zcmMsIGluZGV4X29ubHkgfHwgc3RhZ2UgPT0gMyk7Ci0KLQkJCWhhc2hjcHkoc3JjX290aGVyLnNoYTEsIHJlbjEtPnNyY19lbnRyeS0+c3RhZ2VzW3N0YWdlXS5zaGEpOwotCQkJc3JjX290aGVyLm1vZGUgPSByZW4xLT5zcmNfZW50cnktPnN0YWdlc1tzdGFnZV0ubW9kZTsKLQkJCWhhc2hjcHkoZHN0X290aGVyLnNoYTEsIHJlbjEtPmRzdF9lbnRyeS0+c3RhZ2VzW3N0YWdlXS5zaGEpOwotCQkJZHN0X290aGVyLm1vZGUgPSByZW4xLT5kc3RfZW50cnktPnN0YWdlc1tzdGFnZV0ubW9kZTsKLQotCQkJdHJ5X21lcmdlID0gMDsKLQotCQkJaWYgKHN0cmluZ19saXN0X2hhc19zdHJpbmcoJmN1cnJlbnRfZGlyZWN0b3J5X3NldCwgcmVuMV9kc3QpKSB7Ci0JCQkJY2xlYW5fbWVyZ2UgPSAwOwotCQkJCW91dHB1dCgxLCAiQ09ORkxJQ1QgKHJlbmFtZS9kaXJlY3RvcnkpOiBSZW5hbWVkICVzLT4lcyBpbiAlcyAiCi0JCQkJICAgICAgICIgZGlyZWN0b3J5ICVzIGFkZGVkIGluICVzIiwKLQkJCQkgICAgICAgcmVuMV9zcmMsIHJlbjFfZHN0LCBicmFuY2gxLAotCQkJCSAgICAgICByZW4xX2RzdCwgYnJhbmNoMik7Ci0JCQkJY29uZmxpY3RfcmVuYW1lX2RpcihyZW4xLCBicmFuY2gxKTsKLQkJCX0gZWxzZSBpZiAoc2hhX2VxKHNyY19vdGhlci5zaGExLCBudWxsX3NoYTEpKSB7Ci0JCQkJY2xlYW5fbWVyZ2UgPSAwOwotCQkJCW91dHB1dCgxLCAiQ09ORkxJQ1QgKHJlbmFtZS9kZWxldGUpOiBSZW5hbWVkICVzLT4lcyBpbiAlcyAiCi0JCQkJICAgICAgICJhbmQgZGVsZXRlZCBpbiAlcyIsCi0JCQkJICAgICAgIHJlbjFfc3JjLCByZW4xX2RzdCwgYnJhbmNoMSwKLQkJCQkgICAgICAgYnJhbmNoMik7Ci0JCQkJdXBkYXRlX2ZpbGUoMCwgcmVuMS0+cGFpci0+dHdvLT5zaGExLCByZW4xLT5wYWlyLT50d28tPm1vZGUsIHJlbjFfZHN0KTsKLQkJCX0gZWxzZSBpZiAoIXNoYV9lcShkc3Rfb3RoZXIuc2hhMSwgbnVsbF9zaGExKSkgewotCQkJCWNvbnN0IGNoYXIgKm5ld19wYXRoOwotCQkJCWNsZWFuX21lcmdlID0gMDsKLQkJCQl0cnlfbWVyZ2UgPSAxOwotCQkJCW91dHB1dCgxLCAiQ09ORkxJQ1QgKHJlbmFtZS9hZGQpOiBSZW5hbWVkICVzLT4lcyBpbiAlcy4gIgotCQkJCSAgICAgICAiJXMgYWRkZWQgaW4gJXMiLAotCQkJCSAgICAgICByZW4xX3NyYywgcmVuMV9kc3QsIGJyYW5jaDEsCi0JCQkJICAgICAgIHJlbjFfZHN0LCBicmFuY2gyKTsKLQkJCQluZXdfcGF0aCA9IHVuaXF1ZV9wYXRoKHJlbjFfZHN0LCBicmFuY2gyKTsKLQkJCQlvdXRwdXQoMSwgIkFkZGVkIGFzICVzIGluc3RlYWQiLCBuZXdfcGF0aCk7Ci0JCQkJdXBkYXRlX2ZpbGUoMCwgZHN0X290aGVyLnNoYTEsIGRzdF9vdGhlci5tb2RlLCBuZXdfcGF0aCk7Ci0JCQl9IGVsc2UgaWYgKChpdGVtID0gc3RyaW5nX2xpc3RfbG9va3VwKHJlbjFfZHN0LCByZW5hbWVzMkRzdCkpKSB7Ci0JCQkJcmVuMiA9IGl0ZW0tPnV0aWw7Ci0JCQkJY2xlYW5fbWVyZ2UgPSAwOwotCQkJCXJlbjItPnByb2Nlc3NlZCA9IDE7Ci0JCQkJb3V0cHV0KDEsICJDT05GTElDVCAocmVuYW1lL3JlbmFtZSk6IFJlbmFtZWQgJXMtPiVzIGluICVzLiAiCi0JCQkJICAgICAgICJSZW5hbWVkICVzLT4lcyBpbiAlcyIsCi0JCQkJICAgICAgIHJlbjFfc3JjLCByZW4xX2RzdCwgYnJhbmNoMSwKLQkJCQkgICAgICAgcmVuMi0+cGFpci0+b25lLT5wYXRoLCByZW4yLT5wYWlyLT50d28tPnBhdGgsIGJyYW5jaDIpOwotCQkJCWNvbmZsaWN0X3JlbmFtZV9yZW5hbWVfMihyZW4xLCBicmFuY2gxLCByZW4yLCBicmFuY2gyKTsKLQkJCX0gZWxzZQotCQkJCXRyeV9tZXJnZSA9IDE7Ci0KLQkJCWlmICh0cnlfbWVyZ2UpIHsKLQkJCQlzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqbywgKmEsICpiOwotCQkJCXN0cnVjdCBtZXJnZV9maWxlX2luZm8gbWZpOwotCQkJCXNyY19vdGhlci5wYXRoID0gKGNoYXIgKilyZW4xX3NyYzsKLQotCQkJCW8gPSByZW4xLT5wYWlyLT5vbmU7Ci0JCQkJaWYgKGFfcmVuYW1lcyA9PSByZW5hbWVzMSkgewotCQkJCQlhID0gcmVuMS0+cGFpci0+dHdvOwotCQkJCQliID0gJnNyY19vdGhlcjsKLQkJCQl9IGVsc2UgewotCQkJCQliID0gcmVuMS0+cGFpci0+dHdvOwotCQkJCQlhID0gJnNyY19vdGhlcjsKLQkJCQl9Ci0JCQkJbWZpID0gbWVyZ2VfZmlsZShvLCBhLCBiLAotCQkJCQkJYV9icmFuY2gsIGJfYnJhbmNoKTsKLQotCQkJCWlmIChtZmkuY2xlYW4gJiYKLQkJCQkgICAgc2hhX2VxKG1maS5zaGEsIHJlbjEtPnBhaXItPnR3by0+c2hhMSkgJiYKLQkJCQkgICAgbWZpLm1vZGUgPT0gcmVuMS0+cGFpci0+dHdvLT5tb2RlKQotCQkJCQkvKgotCQkJCQkgKiBUaGlzIG1lc3NhZ2VkIGlzIHBhcnQgb2YKLQkJCQkJICogdDYwMjIgdGVzdC4gSWYgeW91IGNoYW5nZQotCQkJCQkgKiBpdCB1cGRhdGUgdGhlIHRlc3QgdG9vLgotCQkJCQkgKi8KLQkJCQkJb3V0cHV0KDMsICJTa2lwcGVkICVzIChtZXJnZWQgc2FtZSBhcyBleGlzdGluZykiLCByZW4xX2RzdCk7Ci0JCQkJZWxzZSB7Ci0JCQkJCWlmIChtZmkubWVyZ2UgfHwgIW1maS5jbGVhbikKLQkJCQkJCW91dHB1dCgxLCAiUmVuYW1lZCAlcyA9PiAlcyIsIHJlbjFfc3JjLCByZW4xX2RzdCk7Ci0JCQkJCWlmIChtZmkubWVyZ2UpCi0JCQkJCQlvdXRwdXQoMiwgIkF1dG8tbWVyZ2VkICVzIiwgcmVuMV9kc3QpOwotCQkJCQlpZiAoIW1maS5jbGVhbikgewotCQkJCQkJb3V0cHV0KDEsICJDT05GTElDVCAocmVuYW1lL21vZGlmeSk6IE1lcmdlIGNvbmZsaWN0IGluICVzIiwKLQkJCQkJCSAgICAgICByZW4xX2RzdCk7Ci0JCQkJCQljbGVhbl9tZXJnZSA9IDA7Ci0KLQkJCQkJCWlmICghaW5kZXhfb25seSkKLQkJCQkJCQl1cGRhdGVfc3RhZ2VzKHJlbjFfZHN0LAotCQkJCQkJCQkgICAgICBvLCBhLCBiLCAxKTsKLQkJCQkJfQotCQkJCQl1cGRhdGVfZmlsZShtZmkuY2xlYW4sIG1maS5zaGEsIG1maS5tb2RlLCByZW4xX2RzdCk7Ci0JCQkJfQotCQkJfQotCQl9Ci0JfQotCXN0cmluZ19saXN0X2NsZWFyKCZhX2J5X2RzdCwgMCk7Ci0Jc3RyaW5nX2xpc3RfY2xlYXIoJmJfYnlfZHN0LCAwKTsKLQotCXJldHVybiBjbGVhbl9tZXJnZTsKLX0KLQotc3RhdGljIHVuc2lnbmVkIGNoYXIgKnN0YWdlX3NoYShjb25zdCB1bnNpZ25lZCBjaGFyICpzaGEsIHVuc2lnbmVkIG1vZGUpCi17Ci0JcmV0dXJuIChpc19udWxsX3NoYTEoc2hhKSB8fCBtb2RlID09IDApID8gTlVMTDogKHVuc2lnbmVkIGNoYXIgKilzaGE7Ci19Ci0KLS8qIFBlciBlbnRyeSBtZXJnZSBmdW5jdGlvbiAqLwotc3RhdGljIGludCBwcm9jZXNzX2VudHJ5KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGFnZV9kYXRhICplbnRyeSwKLQkJCSBjb25zdCBjaGFyICpicmFuY2gxLAotCQkJIGNvbnN0IGNoYXIgKmJyYW5jaDIpCi17Ci0JLyoKLQlwcmludGYoInByb2Nlc3NpbmcgZW50cnksIGNsZWFuIGNhY2hlOiAlc1xuIiwgaW5kZXhfb25seSA/ICJ5ZXMiOiAibm8iKTsKLQlwcmludF9pbmRleF9lbnRyeSgiXHRwYXRoOiAiLCBlbnRyeSk7Ci0JKi8KLQlpbnQgY2xlYW5fbWVyZ2UgPSAxOwotCXVuc2lnbmVkIG9fbW9kZSA9IGVudHJ5LT5zdGFnZXNbMV0ubW9kZTsKLQl1bnNpZ25lZCBhX21vZGUgPSBlbnRyeS0+c3RhZ2VzWzJdLm1vZGU7Ci0JdW5zaWduZWQgYl9tb2RlID0gZW50cnktPnN0YWdlc1szXS5tb2RlOwotCXVuc2lnbmVkIGNoYXIgKm9fc2hhID0gc3RhZ2Vfc2hhKGVudHJ5LT5zdGFnZXNbMV0uc2hhLCBvX21vZGUpOwotCXVuc2lnbmVkIGNoYXIgKmFfc2hhID0gc3RhZ2Vfc2hhKGVudHJ5LT5zdGFnZXNbMl0uc2hhLCBhX21vZGUpOwotCXVuc2lnbmVkIGNoYXIgKmJfc2hhID0gc3RhZ2Vfc2hhKGVudHJ5LT5zdGFnZXNbM10uc2hhLCBiX21vZGUpOwotCi0JaWYgKG9fc2hhICYmICghYV9zaGEgfHwgIWJfc2hhKSkgewotCQkvKiBDYXNlIEE6IERlbGV0ZWQgaW4gb25lICovCi0JCWlmICgoIWFfc2hhICYmICFiX3NoYSkgfHwKLQkJICAgIChzaGFfZXEoYV9zaGEsIG9fc2hhKSAmJiAhYl9zaGEpIHx8Ci0JCSAgICAoIWFfc2hhICYmIHNoYV9lcShiX3NoYSwgb19zaGEpKSkgewotCQkJLyogRGVsZXRlZCBpbiBib3RoIG9yIGRlbGV0ZWQgaW4gb25lIGFuZAotCQkJICogdW5jaGFuZ2VkIGluIHRoZSBvdGhlciAqLwotCQkJaWYgKGFfc2hhKQotCQkJCW91dHB1dCgyLCAiUmVtb3ZlZCAlcyIsIHBhdGgpOwotCQkJLyogZG8gbm90IHRvdWNoIHdvcmtpbmcgZmlsZSBpZiBpdCBkaWQgbm90IGV4aXN0ICovCi0JCQlyZW1vdmVfZmlsZSgxLCBwYXRoLCAhYV9zaGEpOwotCQl9IGVsc2UgewotCQkJLyogRGVsZXRlZCBpbiBvbmUgYW5kIGNoYW5nZWQgaW4gdGhlIG90aGVyICovCi0JCQljbGVhbl9tZXJnZSA9IDA7Ci0JCQlpZiAoIWFfc2hhKSB7Ci0JCQkJb3V0cHV0KDEsICJDT05GTElDVCAoZGVsZXRlL21vZGlmeSk6ICVzIGRlbGV0ZWQgaW4gJXMgIgotCQkJCSAgICAgICAiYW5kIG1vZGlmaWVkIGluICVzLiBWZXJzaW9uICVzIG9mICVzIGxlZnQgaW4gdHJlZS4iLAotCQkJCSAgICAgICBwYXRoLCBicmFuY2gxLAotCQkJCSAgICAgICBicmFuY2gyLCBicmFuY2gyLCBwYXRoKTsKLQkJCQl1cGRhdGVfZmlsZSgwLCBiX3NoYSwgYl9tb2RlLCBwYXRoKTsKLQkJCX0gZWxzZSB7Ci0JCQkJb3V0cHV0KDEsICJDT05GTElDVCAoZGVsZXRlL21vZGlmeSk6ICVzIGRlbGV0ZWQgaW4gJXMgIgotCQkJCSAgICAgICAiYW5kIG1vZGlmaWVkIGluICVzLiBWZXJzaW9uICVzIG9mICVzIGxlZnQgaW4gdHJlZS4iLAotCQkJCSAgICAgICBwYXRoLCBicmFuY2gyLAotCQkJCSAgICAgICBicmFuY2gxLCBicmFuY2gxLCBwYXRoKTsKLQkJCQl1cGRhdGVfZmlsZSgwLCBhX3NoYSwgYV9tb2RlLCBwYXRoKTsKLQkJCX0KLQkJfQotCi0JfSBlbHNlIGlmICgoIW9fc2hhICYmIGFfc2hhICYmICFiX3NoYSkgfHwKLQkJICAgKCFvX3NoYSAmJiAhYV9zaGEgJiYgYl9zaGEpKSB7Ci0JCS8qIENhc2UgQjogQWRkZWQgaW4gb25lLiAqLwotCQljb25zdCBjaGFyICphZGRfYnJhbmNoOwotCQljb25zdCBjaGFyICpvdGhlcl9icmFuY2g7Ci0JCXVuc2lnbmVkIG1vZGU7Ci0JCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTsKLQkJY29uc3QgY2hhciAqY29uZjsKLQotCQlpZiAoYV9zaGEpIHsKLQkJCWFkZF9icmFuY2ggPSBicmFuY2gxOwotCQkJb3RoZXJfYnJhbmNoID0gYnJhbmNoMjsKLQkJCW1vZGUgPSBhX21vZGU7Ci0JCQlzaGEgPSBhX3NoYTsKLQkJCWNvbmYgPSAiZmlsZS9kaXJlY3RvcnkiOwotCQl9IGVsc2UgewotCQkJYWRkX2JyYW5jaCA9IGJyYW5jaDI7Ci0JCQlvdGhlcl9icmFuY2ggPSBicmFuY2gxOwotCQkJbW9kZSA9IGJfbW9kZTsKLQkJCXNoYSA9IGJfc2hhOwotCQkJY29uZiA9ICJkaXJlY3RvcnkvZmlsZSI7Ci0JCX0KLQkJaWYgKHN0cmluZ19saXN0X2hhc19zdHJpbmcoJmN1cnJlbnRfZGlyZWN0b3J5X3NldCwgcGF0aCkpIHsKLQkJCWNvbnN0IGNoYXIgKm5ld19wYXRoID0gdW5pcXVlX3BhdGgocGF0aCwgYWRkX2JyYW5jaCk7Ci0JCQljbGVhbl9tZXJnZSA9IDA7Ci0JCQlvdXRwdXQoMSwgIkNPTkZMSUNUICglcyk6IFRoZXJlIGlzIGEgZGlyZWN0b3J5IHdpdGggbmFtZSAlcyBpbiAlcy4gIgotCQkJICAgICAgICJBZGRlZCAlcyBhcyAlcyIsCi0JCQkgICAgICAgY29uZiwgcGF0aCwgb3RoZXJfYnJhbmNoLCBwYXRoLCBuZXdfcGF0aCk7Ci0JCQlyZW1vdmVfZmlsZSgwLCBwYXRoLCAwKTsKLQkJCXVwZGF0ZV9maWxlKDAsIHNoYSwgbW9kZSwgbmV3X3BhdGgpOwotCQl9IGVsc2UgewotCQkJb3V0cHV0KDIsICJBZGRlZCAlcyIsIHBhdGgpOwotCQkJdXBkYXRlX2ZpbGUoMSwgc2hhLCBtb2RlLCBwYXRoKTsKLQkJfQotCX0gZWxzZSBpZiAoYV9zaGEgJiYgYl9zaGEpIHsKLQkJLyogQ2FzZSBDOiBBZGRlZCBpbiBib3RoIChjaGVjayBmb3Igc2FtZSBwZXJtaXNzaW9ucykgYW5kICovCi0JCS8qIGNhc2UgRDogTW9kaWZpZWQgaW4gYm90aCwgYnV0IGRpZmZlcmVudGx5LiAqLwotCQljb25zdCBjaGFyICpyZWFzb24gPSAiY29udGVudCI7Ci0JCXN0cnVjdCBtZXJnZV9maWxlX2luZm8gbWZpOwotCQlzdHJ1Y3QgZGlmZl9maWxlc3BlYyBvLCBhLCBiOwotCi0JCWlmICghb19zaGEpIHsKLQkJCXJlYXNvbiA9ICJhZGQvYWRkIjsKLQkJCW9fc2hhID0gKHVuc2lnbmVkIGNoYXIgKiludWxsX3NoYTE7Ci0JCX0KLQkJb3V0cHV0KDIsICJBdXRvLW1lcmdlZCAlcyIsIHBhdGgpOwotCQlvLnBhdGggPSBhLnBhdGggPSBiLnBhdGggPSAoY2hhciAqKXBhdGg7Ci0JCWhhc2hjcHkoby5zaGExLCBvX3NoYSk7Ci0JCW8ubW9kZSA9IG9fbW9kZTsKLQkJaGFzaGNweShhLnNoYTEsIGFfc2hhKTsKLQkJYS5tb2RlID0gYV9tb2RlOwotCQloYXNoY3B5KGIuc2hhMSwgYl9zaGEpOwotCQliLm1vZGUgPSBiX21vZGU7Ci0KLQkJbWZpID0gbWVyZ2VfZmlsZSgmbywgJmEsICZiLAotCQkJCSBicmFuY2gxLCBicmFuY2gyKTsKLQotCQljbGVhbl9tZXJnZSA9IG1maS5jbGVhbjsKLQkJaWYgKG1maS5jbGVhbikKLQkJCXVwZGF0ZV9maWxlKDEsIG1maS5zaGEsIG1maS5tb2RlLCBwYXRoKTsKLQkJZWxzZSBpZiAoU19JU0dJVExJTksobWZpLm1vZGUpKQotCQkJb3V0cHV0KDEsICJDT05GTElDVCAoc3VibW9kdWxlKTogTWVyZ2UgY29uZmxpY3QgaW4gJXMgIgotCQkJICAgICAgICItIG5lZWRzICVzIiwgcGF0aCwgc2hhMV90b19oZXgoYi5zaGExKSk7Ci0JCWVsc2UgewotCQkJb3V0cHV0KDEsICJDT05GTElDVCAoJXMpOiBNZXJnZSBjb25mbGljdCBpbiAlcyIsCi0JCQkJCXJlYXNvbiwgcGF0aCk7Ci0KLQkJCWlmIChpbmRleF9vbmx5KQotCQkJCXVwZGF0ZV9maWxlKDAsIG1maS5zaGEsIG1maS5tb2RlLCBwYXRoKTsKLQkJCWVsc2UKLQkJCQl1cGRhdGVfZmlsZV9mbGFncyhtZmkuc2hhLCBtZmkubW9kZSwgcGF0aCwKLQkJCQkJICAgICAgMCAvKiB1cGRhdGVfY2FjaGUgKi8sIDEgLyogdXBkYXRlX3dvcmtpbmdfZGlyZWN0b3J5ICovKTsKLQkJfQotCX0gZWxzZSBpZiAoIW9fc2hhICYmICFhX3NoYSAmJiAhYl9zaGEpIHsKLQkJLyoKLQkJICogdGhpcyBlbnRyeSB3YXMgZGVsZXRlZCBhbHRvZ2V0aGVyLiBhX21vZGUgPT0gMCBtZWFucwotCQkgKiB3ZSBoYWQgdGhhdCBwYXRoIGFuZCB3YW50IHRvIGFjdGl2ZWx5IHJlbW92ZSBpdC4KLQkJICovCi0JCXJlbW92ZV9maWxlKDEsIHBhdGgsICFhX21vZGUpOwotCX0gZWxzZQotCQlkaWUoIkZhdGFsIG1lcmdlIGZhaWx1cmUsIHNob3VsZG4ndCBoYXBwZW4uIik7Ci0KLQlyZXR1cm4gY2xlYW5fbWVyZ2U7Ci19Ci0KLWludCBtZXJnZV90cmVlcyhzdHJ1Y3QgdHJlZSAqaGVhZCwKLQkJc3RydWN0IHRyZWUgKm1lcmdlLAotCQlzdHJ1Y3QgdHJlZSAqY29tbW9uLAotCQljb25zdCBjaGFyICpicmFuY2gxLAotCQljb25zdCBjaGFyICpicmFuY2gyLAotCQlzdHJ1Y3QgdHJlZSAqKnJlc3VsdCkKLXsKLQlpbnQgY29kZSwgY2xlYW47Ci0KLQlpZiAoc3VidHJlZV9tZXJnZSkgewotCQltZXJnZSA9IHNoaWZ0X3RyZWVfb2JqZWN0KGhlYWQsIG1lcmdlKTsKLQkJY29tbW9uID0gc2hpZnRfdHJlZV9vYmplY3QoaGVhZCwgY29tbW9uKTsKLQl9Ci0KLQlpZiAoc2hhX2VxKGNvbW1vbi0+b2JqZWN0LnNoYTEsIG1lcmdlLT5vYmplY3Quc2hhMSkpIHsKLQkJb3V0cHV0KDAsICJBbHJlYWR5IHVwdG9kYXRlISIpOwotCQkqcmVzdWx0ID0gaGVhZDsKLQkJcmV0dXJuIDE7Ci0JfQotCi0JY29kZSA9IGdpdF9tZXJnZV90cmVlcyhpbmRleF9vbmx5LCBjb21tb24sIGhlYWQsIG1lcmdlKTsKLQotCWlmIChjb2RlICE9IDApCi0JCWRpZSgibWVyZ2luZyBvZiB0cmVlcyAlcyBhbmQgJXMgZmFpbGVkIiwKLQkJICAgIHNoYTFfdG9faGV4KGhlYWQtPm9iamVjdC5zaGExKSwKLQkJICAgIHNoYTFfdG9faGV4KG1lcmdlLT5vYmplY3Quc2hhMSkpOwotCi0JaWYgKHVubWVyZ2VkX2NhY2hlKCkpIHsKLQkJc3RydWN0IHN0cmluZ19saXN0ICplbnRyaWVzLCAqcmVfaGVhZCwgKnJlX21lcmdlOwotCQlpbnQgaTsKLQkJc3RyaW5nX2xpc3RfY2xlYXIoJmN1cnJlbnRfZmlsZV9zZXQsIDEpOwotCQlzdHJpbmdfbGlzdF9jbGVhcigmY3VycmVudF9kaXJlY3Rvcnlfc2V0LCAxKTsKLQkJZ2V0X2ZpbGVzX2RpcnMoaGVhZCk7Ci0JCWdldF9maWxlc19kaXJzKG1lcmdlKTsKLQotCQllbnRyaWVzID0gZ2V0X3VubWVyZ2VkKCk7Ci0JCXJlX2hlYWQgID0gZ2V0X3JlbmFtZXMoaGVhZCwgY29tbW9uLCBoZWFkLCBtZXJnZSwgZW50cmllcyk7Ci0JCXJlX21lcmdlID0gZ2V0X3JlbmFtZXMobWVyZ2UsIGNvbW1vbiwgaGVhZCwgbWVyZ2UsIGVudHJpZXMpOwotCQljbGVhbiA9IHByb2Nlc3NfcmVuYW1lcyhyZV9oZWFkLCByZV9tZXJnZSwKLQkJCQlicmFuY2gxLCBicmFuY2gyKTsKLQkJZm9yIChpID0gMDsgaSA8IGVudHJpZXMtPm5yOyBpKyspIHsKLQkJCWNvbnN0IGNoYXIgKnBhdGggPSBlbnRyaWVzLT5pdGVtc1tpXS5zdHJpbmc7Ci0JCQlzdHJ1Y3Qgc3RhZ2VfZGF0YSAqZSA9IGVudHJpZXMtPml0ZW1zW2ldLnV0aWw7Ci0JCQlpZiAoIWUtPnByb2Nlc3NlZAotCQkJCSYmICFwcm9jZXNzX2VudHJ5KHBhdGgsIGUsIGJyYW5jaDEsIGJyYW5jaDIpKQotCQkJCWNsZWFuID0gMDsKLQkJfQotCi0JCXN0cmluZ19saXN0X2NsZWFyKHJlX21lcmdlLCAwKTsKLQkJc3RyaW5nX2xpc3RfY2xlYXIocmVfaGVhZCwgMCk7Ci0JCXN0cmluZ19saXN0X2NsZWFyKGVudHJpZXMsIDEpOwotCi0JfQotCWVsc2UKLQkJY2xlYW4gPSAxOwotCi0JaWYgKGluZGV4X29ubHkpCi0JCSpyZXN1bHQgPSB3cml0ZV90cmVlX2Zyb21fbWVtb3J5KCk7Ci0KLQlyZXR1cm4gY2xlYW47Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgY29tbWl0X2xpc3QgKnJldmVyc2VfY29tbWl0X2xpc3Qoc3RydWN0IGNvbW1pdF9saXN0ICpsaXN0KQotewotCXN0cnVjdCBjb21taXRfbGlzdCAqbmV4dCA9IE5VTEwsICpjdXJyZW50LCAqYmFja3VwOwotCWZvciAoY3VycmVudCA9IGxpc3Q7IGN1cnJlbnQ7IGN1cnJlbnQgPSBiYWNrdXApIHsKLQkJYmFja3VwID0gY3VycmVudC0+bmV4dDsKLQkJY3VycmVudC0+bmV4dCA9IG5leHQ7Ci0JCW5leHQgPSBjdXJyZW50OwotCX0KLQlyZXR1cm4gbmV4dDsKLX0KLQotLyoKLSAqIE1lcmdlIHRoZSBjb21taXRzIGgxIGFuZCBoMiwgcmV0dXJuIHRoZSByZXN1bHRpbmcgdmlydHVhbAotICogY29tbWl0IG9iamVjdCBhbmQgYSBmbGFnIGluZGljYXRpbmcgdGhlIGNsZWFubmVzcyBvZiB0aGUgbWVyZ2UuCi0gKi8KLWludCBtZXJnZV9yZWN1cnNpdmUoc3RydWN0IGNvbW1pdCAqaDEsCi0JCSAgICBzdHJ1Y3QgY29tbWl0ICpoMiwKLQkJICAgIGNvbnN0IGNoYXIgKmJyYW5jaDEsCi0JCSAgICBjb25zdCBjaGFyICpicmFuY2gyLAotCQkgICAgc3RydWN0IGNvbW1pdF9saXN0ICpjYSwKLQkJICAgIHN0cnVjdCBjb21taXQgKipyZXN1bHQpCi17Ci0Jc3RydWN0IGNvbW1pdF9saXN0ICppdGVyOwotCXN0cnVjdCBjb21taXQgKm1lcmdlZF9jb21tb25fYW5jZXN0b3JzOwotCXN0cnVjdCB0cmVlICptcnRyZWUgPSBtcnRyZWU7Ci0JaW50IGNsZWFuOwotCi0JaWYgKHNob3coNCkpIHsKLQkJb3V0cHV0KDQsICJNZXJnaW5nOiIpOwotCQlvdXRwdXRfY29tbWl0X3RpdGxlKGgxKTsKLQkJb3V0cHV0X2NvbW1pdF90aXRsZShoMik7Ci0JfQotCi0JaWYgKCFjYSkgewotCQljYSA9IGdldF9tZXJnZV9iYXNlcyhoMSwgaDIsIDEpOwotCQljYSA9IHJldmVyc2VfY29tbWl0X2xpc3QoY2EpOwotCX0KLQotCWlmIChzaG93KDUpKSB7Ci0JCW91dHB1dCg1LCAiZm91bmQgJXUgY29tbW9uIGFuY2VzdG9yKHMpOiIsIGNvbW1pdF9saXN0X2NvdW50KGNhKSk7Ci0JCWZvciAoaXRlciA9IGNhOyBpdGVyOyBpdGVyID0gaXRlci0+bmV4dCkKLQkJCW91dHB1dF9jb21taXRfdGl0bGUoaXRlci0+aXRlbSk7Ci0JfQotCi0JbWVyZ2VkX2NvbW1vbl9hbmNlc3RvcnMgPSBwb3BfY29tbWl0KCZjYSk7Ci0JaWYgKG1lcmdlZF9jb21tb25fYW5jZXN0b3JzID09IE5VTEwpIHsKLQkJLyogaWYgdGhlcmUgaXMgbm8gY29tbW9uIGFuY2VzdG9yLCBtYWtlIGFuIGVtcHR5IHRyZWUgKi8KLQkJc3RydWN0IHRyZWUgKnRyZWUgPSB4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgdHJlZSkpOwotCi0JCXRyZWUtPm9iamVjdC5wYXJzZWQgPSAxOwotCQl0cmVlLT5vYmplY3QudHlwZSA9IE9CSl9UUkVFOwotCQlwcmV0ZW5kX3NoYTFfZmlsZShOVUxMLCAwLCBPQkpfVFJFRSwgdHJlZS0+b2JqZWN0LnNoYTEpOwotCQltZXJnZWRfY29tbW9uX2FuY2VzdG9ycyA9IG1ha2VfdmlydHVhbF9jb21taXQodHJlZSwgImFuY2VzdG9yIik7Ci0JfQotCi0JZm9yIChpdGVyID0gY2E7IGl0ZXI7IGl0ZXIgPSBpdGVyLT5uZXh0KSB7Ci0JCWNhbGxfZGVwdGgrKzsKLQkJLyoKLQkJICogV2hlbiB0aGUgbWVyZ2UgZmFpbHMsIHRoZSByZXN1bHQgY29udGFpbnMgZmlsZXMKLQkJICogd2l0aCBjb25mbGljdCBtYXJrZXJzLiBUaGUgY2xlYW5uZXNzIGZsYWcgaXMKLQkJICogaWdub3JlZCwgaXQgd2FzIG5ldmVyIGFjdHVhbGx5IHVzZWQsIGFzIHJlc3VsdCBvZgotCQkgKiBtZXJnZV90cmVlcyBoYXMgYWx3YXlzIG92ZXJ3cml0dGVuIGl0OiB0aGUgY29tbWl0dGVkCi0JCSAqICJjb25mbGljdHMiIHdlcmUgYWxyZWFkeSByZXNvbHZlZC4KLQkJICovCi0JCWRpc2NhcmRfY2FjaGUoKTsKLQkJbWVyZ2VfcmVjdXJzaXZlKG1lcmdlZF9jb21tb25fYW5jZXN0b3JzLCBpdGVyLT5pdGVtLAotCQkJCSJUZW1wb3JhcnkgbWVyZ2UgYnJhbmNoIDEiLAotCQkJCSJUZW1wb3JhcnkgbWVyZ2UgYnJhbmNoIDIiLAotCQkJCU5VTEwsCi0JCQkJJm1lcmdlZF9jb21tb25fYW5jZXN0b3JzKTsKLQkJY2FsbF9kZXB0aC0tOwotCi0JCWlmICghbWVyZ2VkX2NvbW1vbl9hbmNlc3RvcnMpCi0JCQlkaWUoIm1lcmdlIHJldHVybmVkIG5vIGNvbW1pdCIpOwotCX0KLQotCWRpc2NhcmRfY2FjaGUoKTsKLQlpZiAoIWNhbGxfZGVwdGgpIHsKLQkJcmVhZF9jYWNoZSgpOwotCQlpbmRleF9vbmx5ID0gMDsKLQl9IGVsc2UKLQkJaW5kZXhfb25seSA9IDE7Ci0KLQljbGVhbiA9IG1lcmdlX3RyZWVzKGgxLT50cmVlLCBoMi0+dHJlZSwgbWVyZ2VkX2NvbW1vbl9hbmNlc3RvcnMtPnRyZWUsCi0JCQkgICAgYnJhbmNoMSwgYnJhbmNoMiwgJm1ydHJlZSk7Ci0KLQlpZiAoaW5kZXhfb25seSkgewotCQkqcmVzdWx0ID0gbWFrZV92aXJ0dWFsX2NvbW1pdChtcnRyZWUsICJtZXJnZWQgdHJlZSIpOwotCQljb21taXRfbGlzdF9pbnNlcnQoaDEsICYoKnJlc3VsdCktPnBhcmVudHMpOwotCQljb21taXRfbGlzdF9pbnNlcnQoaDIsICYoKnJlc3VsdCktPnBhcmVudHMtPm5leHQpOwotCX0KLQlmbHVzaF9vdXRwdXQoKTsKLQlyZXR1cm4gY2xlYW47Ci19Ci0KIHN0YXRpYyBjb25zdCBjaGFyICpiZXR0ZXJfYnJhbmNoX25hbWUoY29uc3QgY2hhciAqYnJhbmNoKQogewogCXN0YXRpYyBjaGFyIGdpdGhlYWRfZW52WzggKyA0MCArIDFdOwpAQCAtMTI5NSwxMDMgKzE1LDU4IEBACiAJcmV0dXJuIG5hbWUgPyBuYW1lIDogYnJhbmNoOwogfQogCi1zdGF0aWMgc3RydWN0IGNvbW1pdCAqZ2V0X3JlZihjb25zdCBjaGFyICpyZWYpCi17Ci0JdW5zaWduZWQgY2hhciBzaGExWzIwXTsKLQlzdHJ1Y3Qgb2JqZWN0ICpvYmplY3Q7Ci0KLQlpZiAoZ2V0X3NoYTEocmVmLCBzaGExKSkKLQkJZGllKCJDb3VsZCBub3QgcmVzb2x2ZSByZWYgJyVzJyIsIHJlZik7Ci0Jb2JqZWN0ID0gZGVyZWZfdGFnKHBhcnNlX29iamVjdChzaGExKSwgcmVmLCBzdHJsZW4ocmVmKSk7Ci0JaWYgKCFvYmplY3QpCi0JCXJldHVybiBOVUxMOwotCWlmIChvYmplY3QtPnR5cGUgPT0gT0JKX1RSRUUpCi0JCXJldHVybiBtYWtlX3ZpcnR1YWxfY29tbWl0KChzdHJ1Y3QgdHJlZSopb2JqZWN0LAotCQkJYmV0dGVyX2JyYW5jaF9uYW1lKHJlZikpOwotCWlmIChvYmplY3QtPnR5cGUgIT0gT0JKX0NPTU1JVCkKLQkJcmV0dXJuIE5VTEw7Ci0JaWYgKHBhcnNlX2NvbW1pdCgoc3RydWN0IGNvbW1pdCAqKW9iamVjdCkpCi0JCWRpZSgiQ291bGQgbm90IHBhcnNlIGNvbW1pdCAnJXMnIiwgc2hhMV90b19oZXgob2JqZWN0LT5zaGExKSk7Ci0JcmV0dXJuIChzdHJ1Y3QgY29tbWl0ICopb2JqZWN0OwotfQotCi1zdGF0aWMgaW50IG1lcmdlX2NvbmZpZyhjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlLCB2b2lkICpjYikKLXsKLQlpZiAoIXN0cmNhc2VjbXAodmFyLCAibWVyZ2UudmVyYm9zaXR5IikpIHsKLQkJdmVyYm9zaXR5ID0gZ2l0X2NvbmZpZ19pbnQodmFyLCB2YWx1ZSk7Ci0JCXJldHVybiAwOwotCX0KLQlpZiAoIXN0cmNhc2VjbXAodmFyLCAiZGlmZi5yZW5hbWVsaW1pdCIpKSB7Ci0JCWRpZmZfcmVuYW1lX2xpbWl0ID0gZ2l0X2NvbmZpZ19pbnQodmFyLCB2YWx1ZSk7Ci0JCXJldHVybiAwOwotCX0KLQlpZiAoIXN0cmNhc2VjbXAodmFyLCAibWVyZ2UucmVuYW1lbGltaXQiKSkgewotCQltZXJnZV9yZW5hbWVfbGltaXQgPSBnaXRfY29uZmlnX2ludCh2YXIsIHZhbHVlKTsKLQkJcmV0dXJuIDA7Ci0JfQotCXJldHVybiBnaXRfZGVmYXVsdF9jb25maWcodmFyLCB2YWx1ZSwgY2IpOwotfQotCiBpbnQgY21kX21lcmdlX3JlY3Vyc2l2ZShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKIHsKLQlzdGF0aWMgY29uc3QgY2hhciAqYmFzZXNbMjBdOwotCXN0YXRpYyB1bnNpZ25lZCBiYXNlc19jb3VudCA9IDA7Ci0JaW50IGksIGNsZWFuOwotCWNvbnN0IGNoYXIgKmJyYW5jaDEsICpicmFuY2gyOwotCXN0cnVjdCBjb21taXQgKnJlc3VsdCwgKmgxLCAqaDI7Ci0Jc3RydWN0IGNvbW1pdF9saXN0ICpjYSA9IE5VTEw7Ci0Jc3RydWN0IGxvY2tfZmlsZSAqbG9jayA9IHhjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBsb2NrX2ZpbGUpKTsKLQlpbnQgaW5kZXhfZmQ7CisJY29uc3QgdW5zaWduZWQgY2hhciAqYmFzZXNbMjFdOworCXVuc2lnbmVkIGJhc2VzX2NvdW50ID0gMDsKKwlpbnQgaSwgZmFpbGVkOworCXVuc2lnbmVkIGNoYXIgaDFbMjBdLCBoMlsyMF07CisJc3RydWN0IG1lcmdlX29wdGlvbnMgbzsKKwlzdHJ1Y3QgY29tbWl0ICpyZXN1bHQ7CiAKKwlpbml0X21lcmdlX29wdGlvbnMoJm8pOwogCWlmIChhcmd2WzBdKSB7CiAJCWludCBuYW1lbGVuID0gc3RybGVuKGFyZ3ZbMF0pOwogCQlpZiAoOCA8IG5hbWVsZW4gJiYKIAkJICAgICFzdHJjbXAoYXJndlswXSArIG5hbWVsZW4gLSA4LCAiLXN1YnRyZWUiKSkKLQkJCXN1YnRyZWVfbWVyZ2UgPSAxOworCQkJby5zdWJ0cmVlX21lcmdlID0gMTsKIAl9CiAKLQlnaXRfY29uZmlnKG1lcmdlX2NvbmZpZywgTlVMTCk7Ci0JaWYgKGdldGVudigiR0lUX01FUkdFX1ZFUkJPU0lUWSIpKQotCQl2ZXJib3NpdHkgPSBzdHJ0b2woZ2V0ZW52KCJHSVRfTUVSR0VfVkVSQk9TSVRZIiksIE5VTEwsIDEwKTsKLQogCWlmIChhcmdjIDwgNCkKIAkJZGllKCJVc2FnZTogJXMgPGJhc2U+Li4uIC0tIDxoZWFkPiA8cmVtb3RlPiAuLi5cbiIsIGFyZ3ZbMF0pOwogCiAJZm9yIChpID0gMTsgaSA8IGFyZ2M7ICsraSkgewogCQlpZiAoIXN0cmNtcChhcmd2W2ldLCAiLS0iKSkKIAkJCWJyZWFrOwotCQlpZiAoYmFzZXNfY291bnQgPCBzaXplb2YoYmFzZXMpL3NpemVvZigqYmFzZXMpKQotCQkJYmFzZXNbYmFzZXNfY291bnQrK10gPSBhcmd2W2ldOworCQlpZiAoYmFzZXNfY291bnQgPCBBUlJBWV9TSVpFKGJhc2VzKS0xKSB7CisJCQl1bnNpZ25lZCBjaGFyICpzaGEgPSB4bWFsbG9jKDIwKTsKKwkJCWlmIChnZXRfc2hhMShhcmd2W2ldLCBzaGEpKQorCQkJCWRpZSgiQ291bGQgbm90IHBhcnNlIG9iamVjdCAnJXMnIiwgYXJndltpXSk7CisJCQliYXNlc1tiYXNlc19jb3VudCsrXSA9IHNoYTsKKwkJfQorCQllbHNlCisJCQl3YXJuaW5nKCJDYW5ub3QgaGFuZGxlIG1vcmUgdGhhbiAlenUgYmFzZXMuICIKKwkJCQkiSWdub3JpbmcgJXMuIiwgQVJSQVlfU0laRShiYXNlcyktMSwgYXJndltpXSk7CiAJfQogCWlmIChhcmdjIC0gaSAhPSAzKSAvKiAiLS0iICI8aGVhZD4iICI8cmVtb3RlPiIgKi8KIAkJZGllKCJOb3QgaGFuZGxpbmcgYW55dGhpbmcgb3RoZXIgdGhhbiB0d28gaGVhZHMgbWVyZ2UuIik7Ci0JaWYgKHZlcmJvc2l0eSA+PSA1KQotCQlidWZmZXJfb3V0cHV0ID0gMDsKIAotCWJyYW5jaDEgPSBhcmd2WysraV07Ci0JYnJhbmNoMiA9IGFyZ3ZbKytpXTsKKwlvLmJyYW5jaDEgPSBhcmd2WysraV07CisJby5icmFuY2gyID0gYXJndlsrK2ldOwogCi0JaDEgPSBnZXRfcmVmKGJyYW5jaDEpOwotCWgyID0gZ2V0X3JlZihicmFuY2gyKTsKKwlpZiAoZ2V0X3NoYTEoby5icmFuY2gxLCBoMSkpCisJCWRpZSgiQ291bGQgbm90IHJlc29sdmUgcmVmICclcyciLCBvLmJyYW5jaDEpOworCWlmIChnZXRfc2hhMShvLmJyYW5jaDIsIGgyKSkKKwkJZGllKCJDb3VsZCBub3QgcmVzb2x2ZSByZWYgJyVzJyIsIG8uYnJhbmNoMik7CiAKLQlicmFuY2gxID0gYmV0dGVyX2JyYW5jaF9uYW1lKGJyYW5jaDEpOwotCWJyYW5jaDIgPSBiZXR0ZXJfYnJhbmNoX25hbWUoYnJhbmNoMik7CisJby5icmFuY2gxID0gYmV0dGVyX2JyYW5jaF9uYW1lKG8uYnJhbmNoMSk7CisJby5icmFuY2gyID0gYmV0dGVyX2JyYW5jaF9uYW1lKG8uYnJhbmNoMik7CiAKLQlpZiAoc2hvdygzKSkKLQkJcHJpbnRmKCJNZXJnaW5nICVzIHdpdGggJXNcbiIsIGJyYW5jaDEsIGJyYW5jaDIpOworCWlmIChvLnZlcmJvc2l0eSA+PSAzKQorCQlwcmludGYoIk1lcmdpbmcgJXMgd2l0aCAlc1xuIiwgby5icmFuY2gxLCBvLmJyYW5jaDIpOwogCi0JaW5kZXhfZmQgPSBob2xkX2xvY2tlZF9pbmRleChsb2NrLCAxKTsKLQotCWZvciAoaSA9IDA7IGkgPCBiYXNlc19jb3VudDsgaSsrKSB7Ci0JCXN0cnVjdCBjb21taXQgKmFuY2VzdG9yID0gZ2V0X3JlZihiYXNlc1tpXSk7Ci0JCWNhID0gY29tbWl0X2xpc3RfaW5zZXJ0KGFuY2VzdG9yLCAmY2EpOwotCX0KLQljbGVhbiA9IG1lcmdlX3JlY3Vyc2l2ZShoMSwgaDIsIGJyYW5jaDEsIGJyYW5jaDIsIGNhLCAmcmVzdWx0KTsKLQotCWlmIChhY3RpdmVfY2FjaGVfY2hhbmdlZCAmJgotCSAgICAod3JpdGVfY2FjaGUoaW5kZXhfZmQsIGFjdGl2ZV9jYWNoZSwgYWN0aXZlX25yKSB8fAotCSAgICAgY29tbWl0X2xvY2tlZF9pbmRleChsb2NrKSkpCi0JCQlkaWUgKCJ1bmFibGUgdG8gd3JpdGUgJXMiLCBnZXRfaW5kZXhfZmlsZSgpKTsKLQotCXJldHVybiBjbGVhbiA/IDA6IDE7CisJZmFpbGVkID0gbWVyZ2VfcmVjdXJzaXZlX2dlbmVyaWMoJm8sIGgxLCBoMiwgYmFzZXNfY291bnQsIGJhc2VzLCAmcmVzdWx0KTsKKwlpZiAoZmFpbGVkIDwgMCkKKwkJcmV0dXJuIDEyODsgLyogZGllKCkgZXJyb3IgY29kZSAqLworCXJldHVybiBmYWlsZWQ7CiB9CmRpZmYgLS1naXQgYS9idWlsdGluLW1lcmdlLmMgYi9idWlsdGluLW1lcmdlLmMKaW5kZXggZDBiZjFmYy4uY2Y4Njk3NSAxMDA2NDQKLS0tIGEvYnVpbHRpbi1tZXJnZS5jCisrKyBiL2J1aWx0aW4tbWVyZ2UuYwpAQCAtMjIsNiArMjIsOCBAQAogI2luY2x1ZGUgImxvZy10cmVlLmgiCiAjaW5jbHVkZSAiY29sb3IuaCIKICNpbmNsdWRlICJyZXJlcmUuaCIKKyNpbmNsdWRlICJoZWxwLmgiCisjaW5jbHVkZSAibWVyZ2UtcmVjdXJzaXZlLmgiCiAKICNkZWZpbmUgREVGQVVMVF9UV09IRUFEICgxPDwwKQogI2RlZmluZSBERUZBVUxUX09DVE9QVVMgKDE8PDEpCkBAIC00OCw2ICs1MCw3IEBACiBzdGF0aWMgc3RydWN0IHN0cmF0ZWd5ICoqdXNlX3N0cmF0ZWdpZXM7CiBzdGF0aWMgc2l6ZV90IHVzZV9zdHJhdGVnaWVzX25yLCB1c2Vfc3RyYXRlZ2llc19hbGxvYzsKIHN0YXRpYyBjb25zdCBjaGFyICpicmFuY2g7CitzdGF0aWMgaW50IHZlcmJvc2l0eTsKIAogc3RhdGljIHN0cnVjdCBzdHJhdGVneSBhbGxfc3RyYXRlZ3lbXSA9IHsKIAl7ICJyZWN1cnNpdmUiLCAgREVGQVVMVF9UV09IRUFEIHwgTk9fVFJJVklBTCB9LApAQCAtNzcsNyArODAsOSBAQAogc3RhdGljIHN0cnVjdCBzdHJhdGVneSAqZ2V0X3N0cmF0ZWd5KGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAJaW50IGk7Ci0Jc3RydWN0IHN0cmJ1ZiBlcnI7CisJc3RydWN0IHN0cmF0ZWd5ICpyZXQ7CisJc3RhdGljIHN0cnVjdCBjbWRuYW1lcyBtYWluX2NtZHMsIG90aGVyX2NtZHM7CisJc3RhdGljIGludCBsb2FkZWQ7CiAKIAlpZiAoIW5hbWUpCiAJCXJldHVybiBOVUxMOwpAQCAtODYsMTIgKzkxLDQyIEBACiAJCWlmICghc3RyY21wKG5hbWUsIGFsbF9zdHJhdGVneVtpXS5uYW1lKSkKIAkJCXJldHVybiAmYWxsX3N0cmF0ZWd5W2ldOwogCi0Jc3RyYnVmX2luaXQoJmVyciwgMCk7Ci0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYWxsX3N0cmF0ZWd5KTsgaSsrKQotCQlzdHJidWZfYWRkZigmZXJyLCAiICVzIiwgYWxsX3N0cmF0ZWd5W2ldLm5hbWUpOwotCWZwcmludGYoc3RkZXJyLCAiQ291bGQgbm90IGZpbmQgbWVyZ2Ugc3RyYXRlZ3kgJyVzJy5cbiIsIG5hbWUpOwotCWZwcmludGYoc3RkZXJyLCAiQXZhaWxhYmxlIHN0cmF0ZWdpZXMgYXJlOiVzLlxuIiwgZXJyLmJ1Zik7Ci0JZXhpdCgxKTsKKwlpZiAoIWxvYWRlZCkgeworCQlzdHJ1Y3QgY21kbmFtZXMgbm90X3N0cmF0ZWdpZXM7CisJCWxvYWRlZCA9IDE7CisKKwkJbWVtc2V0KCZub3Rfc3RyYXRlZ2llcywgMCwgc2l6ZW9mKHN0cnVjdCBjbWRuYW1lcykpOworCQlsb2FkX2NvbW1hbmRfbGlzdCgiZ2l0LW1lcmdlLSIsICZtYWluX2NtZHMsICZvdGhlcl9jbWRzKTsKKwkJZm9yIChpID0gMDsgaSA8IG1haW5fY21kcy5jbnQ7IGkrKykgeworCQkJaW50IGosIGZvdW5kID0gMDsKKwkJCXN0cnVjdCBjbWRuYW1lICplbnQgPSBtYWluX2NtZHMubmFtZXNbaV07CisJCQlmb3IgKGogPSAwOyBqIDwgQVJSQVlfU0laRShhbGxfc3RyYXRlZ3kpOyBqKyspCisJCQkJaWYgKCFzdHJuY21wKGVudC0+bmFtZSwgYWxsX3N0cmF0ZWd5W2pdLm5hbWUsIGVudC0+bGVuKQorCQkJCQkJJiYgIWFsbF9zdHJhdGVneVtqXS5uYW1lW2VudC0+bGVuXSkKKwkJCQkJZm91bmQgPSAxOworCQkJaWYgKCFmb3VuZCkKKwkJCQlhZGRfY21kbmFtZSgmbm90X3N0cmF0ZWdpZXMsIGVudC0+bmFtZSwgZW50LT5sZW4pOworCQkJZXhjbHVkZV9jbWRzKCZtYWluX2NtZHMsICZub3Rfc3RyYXRlZ2llcyk7CisJCX0KKwl9CisJaWYgKCFpc19pbl9jbWRsaXN0KCZtYWluX2NtZHMsIG5hbWUpICYmICFpc19pbl9jbWRsaXN0KCZvdGhlcl9jbWRzLCBuYW1lKSkgeworCQlmcHJpbnRmKHN0ZGVyciwgIkNvdWxkIG5vdCBmaW5kIG1lcmdlIHN0cmF0ZWd5ICclcycuXG4iLCBuYW1lKTsKKwkJZnByaW50ZihzdGRlcnIsICJBdmFpbGFibGUgc3RyYXRlZ2llcyBhcmU6Iik7CisJCWZvciAoaSA9IDA7IGkgPCBtYWluX2NtZHMuY250OyBpKyspCisJCQlmcHJpbnRmKHN0ZGVyciwgIiAlcyIsIG1haW5fY21kcy5uYW1lc1tpXS0+bmFtZSk7CisJCWZwcmludGYoc3RkZXJyLCAiLlxuIik7CisJCWlmIChvdGhlcl9jbWRzLmNudCkgeworCQkJZnByaW50ZihzdGRlcnIsICJBdmFpbGFibGUgY3VzdG9tIHN0cmF0ZWdpZXMgYXJlOiIpOworCQkJZm9yIChpID0gMDsgaSA8IG90aGVyX2NtZHMuY250OyBpKyspCisJCQkJZnByaW50ZihzdGRlcnIsICIgJXMiLCBvdGhlcl9jbWRzLm5hbWVzW2ldLT5uYW1lKTsKKwkJCWZwcmludGYoc3RkZXJyLCAiLlxuIik7CisJCX0KKwkJZXhpdCgxKTsKKwl9CisKKwlyZXQgPSB4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3Qgc3RyYXRlZ3kpKTsKKwlyZXQtPm5hbWUgPSB4c3RyZHVwKG5hbWUpOworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyB2b2lkIGFwcGVuZF9zdHJhdGVneShzdHJ1Y3Qgc3RyYXRlZ3kgKnMpCkBAIC0xMzcsNiArMTcyLDcgQEAKIAlPUFRfQ0FMTEJBQ0soJ20nLCAibWVzc2FnZSIsICZtZXJnZV9tc2csICJtZXNzYWdlIiwKIAkJIm1lc3NhZ2UgdG8gYmUgdXNlZCBmb3IgdGhlIG1lcmdlIGNvbW1pdCAoaWYgYW55KSIsCiAJCW9wdGlvbl9wYXJzZV9tZXNzYWdlKSwKKwlPUFRfX1ZFUkJPU0lUWSgmdmVyYm9zaXR5KSwKIAlPUFRfRU5EKCkKIH07CiAKQEAgLTE0NSw2ICsxODEsNyBAQAogewogCXVubGluayhnaXRfcGF0aCgiTUVSR0VfSEVBRCIpKTsKIAl1bmxpbmsoZ2l0X3BhdGgoIk1FUkdFX01TRyIpKTsKKwl1bmxpbmsoZ2l0X3BhdGgoIk1FUkdFX01PREUiKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHNhdmVfc3RhdGUodm9pZCkKQEAgLTE5Miw3ICsyMjksNyBAQAogCiBzdGF0aWMgdm9pZCByZXN0b3JlX3N0YXRlKHZvaWQpCiB7Ci0Jc3RydWN0IHN0cmJ1ZiBzYjsKKwlzdHJ1Y3Qgc3RyYnVmIHNiID0gU1RSQlVGX0lOSVQ7CiAJY29uc3QgY2hhciAqYXJnc1tdID0geyAic3Rhc2giLCAiYXBwbHkiLCBOVUxMLCBOVUxMIH07CiAKIAlpZiAoaXNfbnVsbF9zaGExKHN0YXNoKSkKQEAgLTIwMCw3ICsyMzcsNiBAQAogCiAJcmVzZXRfaGFyZChoZWFkLCAxKTsKIAotCXN0cmJ1Zl9pbml0KCZzYiwgMCk7CiAJYXJnc1syXSA9IHNoYTFfdG9faGV4KHN0YXNoKTsKIAogCS8qCkBAIC0yMTYsNyArMjUyLDggQEAKIC8qIFRoaXMgaXMgY2FsbGVkIHdoZW4gbm8gbWVyZ2Ugd2FzIG5lY2Vzc2FyeS4gKi8KIHN0YXRpYyB2b2lkIGZpbmlzaF91cF90b19kYXRlKGNvbnN0IGNoYXIgKm1zZykKIHsKLQlwcmludGYoIiVzJXNcbiIsIHNxdWFzaCA/ICIgKG5vdGhpbmcgdG8gc3F1YXNoKSIgOiAiIiwgbXNnKTsKKwlpZiAodmVyYm9zaXR5ID49IDApCisJCXByaW50ZigiJXMlc1xuIiwgc3F1YXNoID8gIiAobm90aGluZyB0byBzcXVhc2gpIiA6ICIiLCBtc2cpOwogCWRyb3Bfc2F2ZSgpOwogfQogCkBAIC0yMjQsNyArMjYxLDcgQEAKIHsKIAlzdHJ1Y3QgcmV2X2luZm8gcmV2OwogCXN0cnVjdCBjb21taXQgKmNvbW1pdDsKLQlzdHJ1Y3Qgc3RyYnVmIG91dDsKKwlzdHJ1Y3Qgc3RyYnVmIG91dCA9IFNUUkJVRl9JTklUOwogCXN0cnVjdCBjb21taXRfbGlzdCAqajsKIAlpbnQgZmQ7CiAKQEAgLTI0OCw3ICsyODUsNiBAQAogCWlmIChwcmVwYXJlX3JldmlzaW9uX3dhbGsoJnJldikpCiAJCWRpZSgicmV2aXNpb24gd2FsayBzZXR1cCBmYWlsZWQiKTsKIAotCXN0cmJ1Zl9pbml0KCZvdXQsIDApOwogCXN0cmJ1Zl9hZGRzdHIoJm91dCwgIlNxdWFzaGVkIGNvbW1pdCBvZiB0aGUgZm9sbG93aW5nOlxuIik7CiAJd2hpbGUgKChjb21taXQgPSBnZXRfcmV2aXNpb24oJnJldikpICE9IE5VTEwpIHsKIAkJc3RyYnVmX2FkZGNoKCZvdXQsICdcbicpOwpAQCAtMjU3LDggKzI5MywxMCBAQAogCQlwcmV0dHlfcHJpbnRfY29tbWl0KHJldi5jb21taXRfZm9ybWF0LCBjb21taXQsICZvdXQsIHJldi5hYmJyZXYsCiAJCQlOVUxMLCBOVUxMLCByZXYuZGF0ZV9tb2RlLCAwKTsKIAl9Ci0Jd3JpdGUoZmQsIG91dC5idWYsIG91dC5sZW4pOwotCWNsb3NlKGZkKTsKKwlpZiAod3JpdGUoZmQsIG91dC5idWYsIG91dC5sZW4pIDwgMCkKKwkJZGllKCJXcml0aW5nIFNRVUFTSF9NU0c6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKwlpZiAoY2xvc2UoZmQpKQorCQlkaWUoIkZpbmlzaGluZyBTUVVBU0hfTVNHOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CiAJc3RyYnVmX3JlbGVhc2UoJm91dCk7CiB9CiAKQEAgLTI5MywyMCArMzMxLDIwIEBACiAKIHN0YXRpYyB2b2lkIGZpbmlzaChjb25zdCB1bnNpZ25lZCBjaGFyICpuZXdfaGVhZCwgY29uc3QgY2hhciAqbXNnKQogewotCXN0cnVjdCBzdHJidWYgcmVmbG9nX21lc3NhZ2U7CisJc3RydWN0IHN0cmJ1ZiByZWZsb2dfbWVzc2FnZSA9IFNUUkJVRl9JTklUOwogCi0Jc3RyYnVmX2luaXQoJnJlZmxvZ19tZXNzYWdlLCAwKTsKIAlpZiAoIW1zZykKIAkJc3RyYnVmX2FkZHN0cigmcmVmbG9nX21lc3NhZ2UsIGdldGVudigiR0lUX1JFRkxPR19BQ1RJT04iKSk7CiAJZWxzZSB7Ci0JCXByaW50ZigiJXNcbiIsIG1zZyk7CisJCWlmICh2ZXJib3NpdHkgPj0gMCkKKwkJCXByaW50ZigiJXNcbiIsIG1zZyk7CiAJCXN0cmJ1Zl9hZGRmKCZyZWZsb2dfbWVzc2FnZSwgIiVzOiAlcyIsCiAJCQlnZXRlbnYoIkdJVF9SRUZMT0dfQUNUSU9OIiksIG1zZyk7CiAJfQogCWlmIChzcXVhc2gpIHsKIAkJc3F1YXNoX21lc3NhZ2UoKTsKIAl9IGVsc2UgewotCQlpZiAoIW1lcmdlX21zZy5sZW4pCisJCWlmICh2ZXJib3NpdHkgPj0gMCAmJiAhbWVyZ2VfbXNnLmxlbikKIAkJCXByaW50ZigiTm8gbWVyZ2UgbWVzc2FnZSAtLSBub3QgdXBkYXRpbmcgSEVBRFxuIik7CiAJCWVsc2UgewogCQkJY29uc3QgY2hhciAqYXJndl9nY19hdXRvW10gPSB7ICJnYyIsICItLWF1dG8iLCBOVUxMIH07CkBAIC0zNDYsNyArMzg0LDcgQEAKIHsKIAlzdHJ1Y3Qgb2JqZWN0ICpyZW1vdGVfaGVhZDsKIAl1bnNpZ25lZCBjaGFyIGJyYW5jaF9oZWFkWzIwXSwgYnVmX3NoYVsyMF07Ci0Jc3RydWN0IHN0cmJ1ZiBidWY7CisJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAljb25zdCBjaGFyICpwdHI7CiAJaW50IGxlbiwgZWFybHk7CiAKQEAgLTM1NSw3ICszOTMsNiBAQAogCWlmICghcmVtb3RlX2hlYWQpCiAJCWRpZSgiJyVzJyBkb2VzIG5vdCBwb2ludCB0byBhIGNvbW1pdCIsIHJlbW90ZSk7CiAKLQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKIAlzdHJidWZfYWRkc3RyKCZidWYsICJyZWZzL2hlYWRzLyIpOwogCXN0cmJ1Zl9hZGRzdHIoJmJ1ZiwgcmVtb3RlKTsKIAlyZXNvbHZlX3JlZihidWYuYnVmLCBicmFuY2hfaGVhZCwgMCwgMCk7CkBAIC00MTAsMTAgKzQ0Nyw5IEBACiAJaWYgKCFzdHJjbXAocmVtb3RlLCAiRkVUQ0hfSEVBRCIpICYmCiAJCQkhYWNjZXNzKGdpdF9wYXRoKCJGRVRDSF9IRUFEIiksIFJfT0spKSB7CiAJCUZJTEUgKmZwOwotCQlzdHJ1Y3Qgc3RyYnVmIGxpbmU7CisJCXN0cnVjdCBzdHJidWYgbGluZSA9IFNUUkJVRl9JTklUOwogCQljaGFyICpwdHI7CiAKLQkJc3RyYnVmX2luaXQoJmxpbmUsIDApOwogCQlmcCA9IGZvcGVuKGdpdF9wYXRoKCJGRVRDSF9IRUFEIiksICJyIik7CiAJCWlmICghZnApCiAJCQlkaWUoImNvdWxkIG5vdCBvcGVuICVzIGZvciByZWFkaW5nOiAlcyIsCkBAIC01MTEsMzAgKzU0Nyw3NiBAQAogCWNvbnN0IGNoYXIgKiphcmdzOwogCWludCBpID0gMCwgcmV0OwogCXN0cnVjdCBjb21taXRfbGlzdCAqajsKLQlzdHJ1Y3Qgc3RyYnVmIGJ1ZjsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOworCWludCBpbmRleF9mZDsKKwlzdHJ1Y3QgbG9ja19maWxlICpsb2NrID0geGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IGxvY2tfZmlsZSkpOwogCi0JYXJncyA9IHhtYWxsb2MoKDQgKyBjb21taXRfbGlzdF9jb3VudChjb21tb24pICsKLQkJCWNvbW1pdF9saXN0X2NvdW50KHJlbW90ZWhlYWRzKSkgKiBzaXplb2YoY2hhciAqKSk7Ci0Jc3RyYnVmX2luaXQoJmJ1ZiwgMCk7Ci0Jc3RyYnVmX2FkZGYoJmJ1ZiwgIm1lcmdlLSVzIiwgc3RyYXRlZ3kpOwotCWFyZ3NbaSsrXSA9IGJ1Zi5idWY7Ci0JZm9yIChqID0gY29tbW9uOyBqOyBqID0gai0+bmV4dCkKLQkJYXJnc1tpKytdID0geHN0cmR1cChzaGExX3RvX2hleChqLT5pdGVtLT5vYmplY3Quc2hhMSkpOwotCWFyZ3NbaSsrXSA9ICItLSI7Ci0JYXJnc1tpKytdID0gaGVhZF9hcmc7Ci0JZm9yIChqID0gcmVtb3RlaGVhZHM7IGo7IGogPSBqLT5uZXh0KQotCQlhcmdzW2krK10gPSB4c3RyZHVwKHNoYTFfdG9faGV4KGotPml0ZW0tPm9iamVjdC5zaGExKSk7Ci0JYXJnc1tpXSA9IE5VTEw7Ci0JcmV0ID0gcnVuX2NvbW1hbmRfdl9vcHQoYXJncywgUlVOX0dJVF9DTUQpOwotCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOwotCWkgPSAxOwotCWZvciAoaiA9IGNvbW1vbjsgajsgaiA9IGotPm5leHQpCi0JCWZyZWUoKHZvaWQgKilhcmdzW2krK10pOwotCWkgKz0gMjsKLQlmb3IgKGogPSByZW1vdGVoZWFkczsgajsgaiA9IGotPm5leHQpCi0JCWZyZWUoKHZvaWQgKilhcmdzW2krK10pOwotCWZyZWUoYXJncyk7Ci0JcmV0dXJuIC1yZXQ7CisJaW5kZXhfZmQgPSBob2xkX2xvY2tlZF9pbmRleChsb2NrLCAxKTsKKwlyZWZyZXNoX2NhY2hlKFJFRlJFU0hfUVVJRVQpOworCWlmIChhY3RpdmVfY2FjaGVfY2hhbmdlZCAmJgorCQkJKHdyaXRlX2NhY2hlKGluZGV4X2ZkLCBhY3RpdmVfY2FjaGUsIGFjdGl2ZV9ucikgfHwKKwkJCSBjb21taXRfbG9ja2VkX2luZGV4KGxvY2spKSkKKwkJcmV0dXJuIGVycm9yKCJVbmFibGUgdG8gd3JpdGUgaW5kZXguIik7CisJcm9sbGJhY2tfbG9ja19maWxlKGxvY2spOworCisJaWYgKCFzdHJjbXAoc3RyYXRlZ3ksICJyZWN1cnNpdmUiKSB8fCAhc3RyY21wKHN0cmF0ZWd5LCAic3VidHJlZSIpKSB7CisJCWludCBjbGVhbjsKKwkJc3RydWN0IGNvbW1pdCAqcmVzdWx0OworCQlzdHJ1Y3QgbG9ja19maWxlICpsb2NrID0geGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IGxvY2tfZmlsZSkpOworCQlpbnQgaW5kZXhfZmQ7CisJCXN0cnVjdCBjb21taXRfbGlzdCAqcmV2ZXJzZWQgPSBOVUxMOworCQlzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyBvOworCisJCWlmIChyZW1vdGVoZWFkcy0+bmV4dCkgeworCQkJZXJyb3IoIk5vdCBoYW5kbGluZyBhbnl0aGluZyBvdGhlciB0aGFuIHR3byBoZWFkcyBtZXJnZS4iKTsKKwkJCXJldHVybiAyOworCQl9CisKKwkJaW5pdF9tZXJnZV9vcHRpb25zKCZvKTsKKwkJaWYgKCFzdHJjbXAoc3RyYXRlZ3ksICJzdWJ0cmVlIikpCisJCQlvLnN1YnRyZWVfbWVyZ2UgPSAxOworCisJCW8uYnJhbmNoMSA9IGhlYWRfYXJnOworCQlvLmJyYW5jaDIgPSByZW1vdGVoZWFkcy0+aXRlbS0+dXRpbDsKKworCQlmb3IgKGogPSBjb21tb247IGo7IGogPSBqLT5uZXh0KQorCQkJY29tbWl0X2xpc3RfaW5zZXJ0KGotPml0ZW0sICZyZXZlcnNlZCk7CisKKwkJaW5kZXhfZmQgPSBob2xkX2xvY2tlZF9pbmRleChsb2NrLCAxKTsKKwkJY2xlYW4gPSBtZXJnZV9yZWN1cnNpdmUoJm8sIGxvb2t1cF9jb21taXQoaGVhZCksCisJCQkJcmVtb3RlaGVhZHMtPml0ZW0sIHJldmVyc2VkLCAmcmVzdWx0KTsKKwkJaWYgKGFjdGl2ZV9jYWNoZV9jaGFuZ2VkICYmCisJCQkJKHdyaXRlX2NhY2hlKGluZGV4X2ZkLCBhY3RpdmVfY2FjaGUsIGFjdGl2ZV9ucikgfHwKKwkJCQkgY29tbWl0X2xvY2tlZF9pbmRleChsb2NrKSkpCisJCQlkaWUgKCJ1bmFibGUgdG8gd3JpdGUgJXMiLCBnZXRfaW5kZXhfZmlsZSgpKTsKKwkJcm9sbGJhY2tfbG9ja19maWxlKGxvY2spOworCQlyZXR1cm4gY2xlYW4gPyAwIDogMTsKKwl9IGVsc2UgeworCQlhcmdzID0geG1hbGxvYygoNCArIGNvbW1pdF9saXN0X2NvdW50KGNvbW1vbikgKworCQkJCQljb21taXRfbGlzdF9jb3VudChyZW1vdGVoZWFkcykpICogc2l6ZW9mKGNoYXIgKikpOworCQlzdHJidWZfYWRkZigmYnVmLCAibWVyZ2UtJXMiLCBzdHJhdGVneSk7CisJCWFyZ3NbaSsrXSA9IGJ1Zi5idWY7CisJCWZvciAoaiA9IGNvbW1vbjsgajsgaiA9IGotPm5leHQpCisJCQlhcmdzW2krK10gPSB4c3RyZHVwKHNoYTFfdG9faGV4KGotPml0ZW0tPm9iamVjdC5zaGExKSk7CisJCWFyZ3NbaSsrXSA9ICItLSI7CisJCWFyZ3NbaSsrXSA9IGhlYWRfYXJnOworCQlmb3IgKGogPSByZW1vdGVoZWFkczsgajsgaiA9IGotPm5leHQpCisJCQlhcmdzW2krK10gPSB4c3RyZHVwKHNoYTFfdG9faGV4KGotPml0ZW0tPm9iamVjdC5zaGExKSk7CisJCWFyZ3NbaV0gPSBOVUxMOworCQlyZXQgPSBydW5fY29tbWFuZF92X29wdChhcmdzLCBSVU5fR0lUX0NNRCk7CisJCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOworCQlpID0gMTsKKwkJZm9yIChqID0gY29tbW9uOyBqOyBqID0gai0+bmV4dCkKKwkJCWZyZWUoKHZvaWQgKilhcmdzW2krK10pOworCQlpICs9IDI7CisJCWZvciAoaiA9IHJlbW90ZWhlYWRzOyBqOyBqID0gai0+bmV4dCkKKwkJCWZyZWUoKHZvaWQgKilhcmdzW2krK10pOworCQlmcmVlKGFyZ3MpOworCQlkaXNjYXJkX2NhY2hlKCk7CisJCWlmIChyZWFkX2NhY2hlKCkgPCAwKQorCQkJZGllKCJmYWlsZWQgdG8gcmVhZCB0aGUgY2FjaGUiKTsKKwkJcmV0dXJuIC1yZXQ7CisJfQogfQogCiBzdGF0aWMgdm9pZCBjb3VudF9kaWZmX2ZpbGVzKHN0cnVjdCBkaWZmX3F1ZXVlX3N0cnVjdCAqcSwKQEAgLTY1OSw3ICs3NDEsNyBAQAogCXBhcmVudC0+bmV4dCA9IHhtYWxsb2Moc2l6ZW9mKCpwYXJlbnQtPm5leHQpKTsKIAlwYXJlbnQtPm5leHQtPml0ZW0gPSByZW1vdGVoZWFkcy0+aXRlbTsKIAlwYXJlbnQtPm5leHQtPm5leHQgPSBOVUxMOwotCWNvbW1pdF90cmVlKG1lcmdlX21zZy5idWYsIHJlc3VsdF90cmVlLCBwYXJlbnQsIHJlc3VsdF9jb21taXQpOworCWNvbW1pdF90cmVlKG1lcmdlX21zZy5idWYsIHJlc3VsdF90cmVlLCBwYXJlbnQsIHJlc3VsdF9jb21taXQsIE5VTEwpOwogCWZpbmlzaChyZXN1bHRfY29tbWl0LCAiSW4taW5kZXggbWVyZ2UiKTsKIAlkcm9wX3NhdmUoKTsKIAlyZXR1cm4gMDsKQEAgLTY4OCw3ICs3NzAsNyBAQAogCX0KIAlmcmVlX2NvbW1pdF9saXN0KHJlbW90ZWhlYWRzKTsKIAlzdHJidWZfYWRkY2goJm1lcmdlX21zZywgJ1xuJyk7Ci0JY29tbWl0X3RyZWUobWVyZ2VfbXNnLmJ1ZiwgcmVzdWx0X3RyZWUsIHBhcmVudHMsIHJlc3VsdF9jb21taXQpOworCWNvbW1pdF90cmVlKG1lcmdlX21zZy5idWYsIHJlc3VsdF90cmVlLCBwYXJlbnRzLCByZXN1bHRfY29tbWl0LCBOVUxMKTsKIAlzdHJidWZfYWRkZigmYnVmLCAiTWVyZ2UgbWFkZSBieSAlcy4iLCB3dF9zdHJhdGVneSk7CiAJZmluaXNoKHJlc3VsdF9jb21taXQsIGJ1Zi5idWYpOwogCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOwpAQCAtNzQ1LDEwICs4MjcsNiBAQAogCWludCBjbnQgPSAwOwogCXN0cnVjdCByZXZfaW5mbyByZXY7CiAKLQlkaXNjYXJkX2NhY2hlKCk7Ci0JaWYgKHJlYWRfY2FjaGUoKSA8IDApCi0JCWRpZSgiZmFpbGVkIHRvIHJlYWQgdGhlIGNhY2hlIik7Ci0KIAkvKiBDaGVjayBob3cgbWFueSBmaWxlcyBkaWZmZXIuICovCiAJaW5pdF9yZXZpc2lvbnMoJnJldiwgIiIpOwogCXNldHVwX3JldmlzaW9ucygwLCBOVUxMLCAmcmV2LCBOVUxMKTsKQEAgLTc3MCw3ICs4NDgsNyBAQAogaW50IGNtZF9tZXJnZShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKIHsKIAl1bnNpZ25lZCBjaGFyIHJlc3VsdF90cmVlWzIwXTsKLQlzdHJ1Y3Qgc3RyYnVmIGJ1ZjsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCWNvbnN0IGNoYXIgKmhlYWRfYXJnOwogCWludCBmbGFnLCBoZWFkX2ludmFsaWQgPSAwLCBpOwogCWludCBiZXN0X2NudCA9IC0xLCBtZXJnZV93YXNfb2sgPSAwLCBhdXRvbWVyZ2Vfd2FzX29rID0gMDsKQEAgLTgwMCw2ICs4NzgsOCBAQAogCiAJYXJnYyA9IHBhcnNlX29wdGlvbnMoYXJnYywgYXJndiwgYnVpbHRpbl9tZXJnZV9vcHRpb25zLAogCQkJYnVpbHRpbl9tZXJnZV91c2FnZSwgMCk7CisJaWYgKHZlcmJvc2l0eSA8IDApCisJCXNob3dfZGlmZnN0YXQgPSAwOwogCiAJaWYgKHNxdWFzaCkgewogCQlpZiAoIWFsbG93X2Zhc3RfZm9yd2FyZCkKQEAgLTgxOSw3ICs4OTksNiBAQAogCSAqIFRyYWRpdGlvbmFsIGZvcm1hdCBuZXZlciB3b3VsZCBoYXZlICItbSIgc28gaXQgaXMgYW4KIAkgKiBhZGRpdGlvbmFsIHNhZmV0eSBtZWFzdXJlIHRvIGNoZWNrIGZvciBpdC4KIAkgKi8KLQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKIAogCWlmICghaGF2ZV9tZXNzYWdlICYmIGlzX29sZF9zdHlsZV9pbnZvY2F0aW9uKGFyZ2MsIGFyZ3YpKSB7CiAJCXN0cmJ1Zl9hZGRzdHIoJm1lcmdlX21zZywgYXJndlswXSk7CkBAIC04MzYsNiArOTE1LDExIEBACiAJCWlmIChhcmdjICE9IDEpCiAJCQlkaWUoIkNhbiBtZXJnZSBvbmx5IGV4YWN0bHkgb25lIGNvbW1pdCBpbnRvICIKIAkJCQkiZW1wdHkgaGVhZCIpOworCQlpZiAoc3F1YXNoKQorCQkJZGllKCJTcXVhc2ggY29tbWl0IGludG8gZW1wdHkgaGVhZCBub3Qgc3VwcG9ydGVkIHlldCIpOworCQlpZiAoIWFsbG93X2Zhc3RfZm9yd2FyZCkKKwkJCWRpZSgiTm9uLWZhc3QtZm9yd2FyZCBjb21taXQgZG9lcyBub3QgbWFrZSBzZW5zZSBpbnRvICIKKwkJCSAgICAiYW4gZW1wdHkgaGVhZCIpOwogCQlyZW1vdGVfaGVhZCA9IHBlZWxfdG9fdHlwZShhcmd2WzBdLCAwLCBOVUxMLCBPQkpfQ09NTUlUKTsKIAkJaWYgKCFyZW1vdGVfaGVhZCkKIAkJCWRpZSgiJXMgLSBub3Qgc29tZXRoaW5nIHdlIGNhbiBtZXJnZSIsIGFyZ3ZbMF0pOwpAQCAtODQ0LDcgKzkyOCw3IEBACiAJCXJlc2V0X2hhcmQocmVtb3RlX2hlYWQtPnNoYTEsIDApOwogCQlyZXR1cm4gMDsKIAl9IGVsc2UgewotCQlzdHJ1Y3Qgc3RyYnVmIG1zZzsKKwkJc3RydWN0IHN0cmJ1ZiBtc2cgPSBTVFJCVUZfSU5JVDsKIAogCQkvKiBXZSBhcmUgaW52b2tlZCBkaXJlY3RseSBhcyB0aGUgZmlyc3QtY2xhc3MgVUkuICovCiAJCWhlYWRfYXJnID0gIkhFQUQiOwpAQCAtODU3LDcgKzk0MSw2IEBACiAJCSAqIGNvZGVwYXRoIHNvIHdlIGRpc2NhcmQgdGhlIGVycm9yIGluIHRoaXMKIAkJICogbG9vcC4KIAkJICovCi0JCXN0cmJ1Zl9pbml0KCZtc2csIDApOwogCQlmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKQogCQkJbWVyZ2VfbmFtZShhcmd2W2ldLCAmbXNnKTsKIAkJZm10X21lcmdlX21zZyhvcHRpb25fbG9nLCAmbXNnLCAmbWVyZ2VfbXNnKTsKQEAgLTg3NywxMiArOTYwLDE0IEBACiAKIAlmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7CiAJCXN0cnVjdCBvYmplY3QgKm87CisJCXN0cnVjdCBjb21taXQgKmNvbW1pdDsKIAogCQlvID0gcGVlbF90b190eXBlKGFyZ3ZbaV0sIDAsIE5VTEwsIE9CSl9DT01NSVQpOwogCQlpZiAoIW8pCiAJCQlkaWUoIiVzIC0gbm90IHNvbWV0aGluZyB3ZSBjYW4gbWVyZ2UiLCBhcmd2W2ldKTsKLQkJcmVtb3RlcyA9ICZjb21taXRfbGlzdF9pbnNlcnQobG9va3VwX2NvbW1pdChvLT5zaGExKSwKLQkJCXJlbW90ZXMpLT5uZXh0OworCQljb21taXQgPSBsb29rdXBfY29tbWl0KG8tPnNoYTEpOworCQljb21taXQtPnV0aWwgPSAodm9pZCAqKWFyZ3ZbaV07CisJCXJlbW90ZXMgPSAmY29tbWl0X2xpc3RfaW5zZXJ0KGNvbW1pdCwgcmVtb3RlcyktPm5leHQ7CiAKIAkJc3RyYnVmX2FkZGYoJmJ1ZiwgIkdJVEhFQURfJXMiLCBzaGExX3RvX2hleChvLT5zaGExKSk7CiAJCXNldGVudihidWYuYnVmLCBhcmd2W2ldLCAxKTsKQEAgLTkzMCwxNyArMTAxNSwxNyBAQAogCQkJIWNvbW1vbi0+bmV4dCAmJgogCQkJIWhhc2hjbXAoY29tbW9uLT5pdGVtLT5vYmplY3Quc2hhMSwgaGVhZCkpIHsKIAkJLyogQWdhaW4gdGhlIG1vc3QgY29tbW9uIGNhc2Ugb2YgbWVyZ2luZyBvbmUgcmVtb3RlLiAqLwotCQlzdHJ1Y3Qgc3RyYnVmIG1zZzsKKwkJc3RydWN0IHN0cmJ1ZiBtc2cgPSBTVFJCVUZfSU5JVDsKIAkJc3RydWN0IG9iamVjdCAqbzsKIAkJY2hhciBoZXhbNDFdOwogCiAJCXN0cmNweShoZXgsIGZpbmRfdW5pcXVlX2FiYnJldihoZWFkLCBERUZBVUxUX0FCQlJFVikpOwogCi0JCXByaW50ZigiVXBkYXRpbmcgJXMuLiVzXG4iLAotCQkJaGV4LAotCQkJZmluZF91bmlxdWVfYWJicmV2KHJlbW90ZWhlYWRzLT5pdGVtLT5vYmplY3Quc2hhMSwKLQkJCURFRkFVTFRfQUJCUkVWKSk7Ci0JCXN0cmJ1Zl9pbml0KCZtc2csIDApOworCQlpZiAodmVyYm9zaXR5ID49IDApCisJCQlwcmludGYoIlVwZGF0aW5nICVzLi4lc1xuIiwKKwkJCQloZXgsCisJCQkJZmluZF91bmlxdWVfYWJicmV2KHJlbW90ZWhlYWRzLT5pdGVtLT5vYmplY3Quc2hhMSwKKwkJCQlERUZBVUxUX0FCQlJFVikpOwogCQlzdHJidWZfYWRkc3RyKCZtc2csICJGYXN0IGZvcndhcmQiKTsKIAkJaWYgKGhhdmVfbWVzc2FnZSkKIAkJCXN0cmJ1Zl9hZGRzdHIoJm1zZywKQEAgLTEwNzYsNyArMTE2MSw2IEBACiAJCX0KIAogCQkvKiBBdXRvbWVyZ2Ugc3VjY2VlZGVkLiAqLwotCQlkaXNjYXJkX2NhY2hlKCk7CiAJCXdyaXRlX3RyZWVfdHJpdmlhbChyZXN1bHRfdHJlZSk7CiAJCWF1dG9tZXJnZV93YXNfb2sgPSAxOwogCQlicmVhazsKQEAgLTExMzYsNiArMTIyMCwxNSBAQAogCQkJbWVyZ2VfbXNnLmxlbikKIAkJCWRpZSgiQ291bGQgbm90IHdyaXRlIHRvICVzIiwgZ2l0X3BhdGgoIk1FUkdFX01TRyIpKTsKIAkJY2xvc2UoZmQpOworCQlmZCA9IG9wZW4oZ2l0X3BhdGgoIk1FUkdFX01PREUiKSwgT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQywgMDY2Nik7CisJCWlmIChmZCA8IDApCisJCQlkaWUoIkNvdWxkIG9wZW4gJXMgZm9yIHdyaXRpbmciLCBnaXRfcGF0aCgiTUVSR0VfTU9ERSIpKTsKKwkJc3RyYnVmX3Jlc2V0KCZidWYpOworCQlpZiAoIWFsbG93X2Zhc3RfZm9yd2FyZCkKKwkJCXN0cmJ1Zl9hZGRmKCZidWYsICJuby1mZiIpOworCQlpZiAod3JpdGVfaW5fZnVsbChmZCwgYnVmLmJ1ZiwgYnVmLmxlbikgIT0gYnVmLmxlbikKKwkJCWRpZSgiQ291bGQgbm90IHdyaXRlIHRvICVzIiwgZ2l0X3BhdGgoIk1FUkdFX01PREUiKSk7CisJCWNsb3NlKGZkKTsKIAl9CiAKIAlpZiAobWVyZ2Vfd2FzX29rKSB7CmRpZmYgLS1naXQgYS9idWlsdGluLXBhY2stb2JqZWN0cy5jIGIvYnVpbHRpbi1wYWNrLW9iamVjdHMuYwppbmRleCBmYjVlMTRkLi5iNjE2OTk0IDEwMDY0NAotLS0gYS9idWlsdGluLXBhY2stb2JqZWN0cy5jCisrKyBiL2J1aWx0aW4tcGFjay1vYmplY3RzLmMKQEAgLTE5NSwxNiArMTk1LDE2IEBACiAJaW50IHN0OwogCiAJbWVtc2V0KCZzdHJlYW0sIDAsIHNpemVvZihzdHJlYW0pKTsKLQlpbmZsYXRlSW5pdCgmc3RyZWFtKTsKKwlnaXRfaW5mbGF0ZV9pbml0KCZzdHJlYW0pOwogCWRvIHsKIAkJaW4gPSB1c2VfcGFjayhwLCB3X2N1cnMsIG9mZnNldCwgJnN0cmVhbS5hdmFpbF9pbik7CiAJCXN0cmVhbS5uZXh0X2luID0gaW47CiAJCXN0cmVhbS5uZXh0X291dCA9IGZha2VidWY7CiAJCXN0cmVhbS5hdmFpbF9vdXQgPSBzaXplb2YoZmFrZWJ1Zik7Ci0JCXN0ID0gaW5mbGF0ZSgmc3RyZWFtLCBaX0ZJTklTSCk7CisJCXN0ID0gZ2l0X2luZmxhdGUoJnN0cmVhbSwgWl9GSU5JU0gpOwogCQlvZmZzZXQgKz0gc3RyZWFtLm5leHRfaW4gLSBpbjsKIAl9IHdoaWxlIChzdCA9PSBaX09LIHx8IHN0ID09IFpfQlVGX0VSUk9SKTsKLQlpbmZsYXRlRW5kKCZzdHJlYW0pOworCWdpdF9pbmZsYXRlX2VuZCgmc3RyZWFtKTsKIAlyZXR1cm4gKHN0ID09IFpfU1RSRUFNX0VORCAmJgogCQlzdHJlYW0udG90YWxfb3V0ID09IGV4cGVjdCAmJgogCQlzdHJlYW0udG90YWxfaW4gPT0gbGVuKSA/IDAgOiAtMTsKQEAgLTI4Niw2ICsyODYsNyBAQAogCQkJCSAqLwogCiAJaWYgKCF0b19yZXVzZSkgeworCQlub19yZXVzZToKIAkJaWYgKCF1c2FibGVfZGVsdGEpIHsKIAkJCWJ1ZiA9IHJlYWRfc2hhMV9maWxlKGVudHJ5LT5pZHguc2hhMSwgJnR5cGUsICZzaXplKTsKIAkJCWlmICghYnVmKQpAQCAtMzY3LDQ2ICszNjgsNjAgQEAKIAkJc3RydWN0IHJldmluZGV4X2VudHJ5ICpyZXZpZHg7CiAJCW9mZl90IG9mZnNldDsKIAotCQlpZiAoZW50cnktPmRlbHRhKSB7CisJCWlmIChlbnRyeS0+ZGVsdGEpCiAJCQl0eXBlID0gKGFsbG93X29mc19kZWx0YSAmJiBlbnRyeS0+ZGVsdGEtPmlkeC5vZmZzZXQpID8KIAkJCQlPQkpfT0ZTX0RFTFRBIDogT0JKX1JFRl9ERUxUQTsKLQkJCXJldXNlZF9kZWx0YSsrOwotCQl9CiAJCWhkcmxlbiA9IGVuY29kZV9oZWFkZXIodHlwZSwgZW50cnktPnNpemUsIGhlYWRlcik7CisKIAkJb2Zmc2V0ID0gZW50cnktPmluX3BhY2tfb2Zmc2V0OwogCQlyZXZpZHggPSBmaW5kX3BhY2tfcmV2aW5kZXgocCwgb2Zmc2V0KTsKIAkJZGF0YWxlbiA9IHJldmlkeFsxXS5vZmZzZXQgLSBvZmZzZXQ7CiAJCWlmICghcGFja190b19zdGRvdXQgJiYgcC0+aW5kZXhfdmVyc2lvbiA+IDEgJiYKLQkJICAgIGNoZWNrX3BhY2tfY3JjKHAsICZ3X2N1cnMsIG9mZnNldCwgZGF0YWxlbiwgcmV2aWR4LT5ucikpCi0JCQlkaWUoImJhZCBwYWNrZWQgb2JqZWN0IENSQyBmb3IgJXMiLCBzaGExX3RvX2hleChlbnRyeS0+aWR4LnNoYTEpKTsKKwkJICAgIGNoZWNrX3BhY2tfY3JjKHAsICZ3X2N1cnMsIG9mZnNldCwgZGF0YWxlbiwgcmV2aWR4LT5ucikpIHsKKwkJCWVycm9yKCJiYWQgcGFja2VkIG9iamVjdCBDUkMgZm9yICVzIiwgc2hhMV90b19oZXgoZW50cnktPmlkeC5zaGExKSk7CisJCQl1bnVzZV9wYWNrKCZ3X2N1cnMpOworCQkJZ290byBub19yZXVzZTsKKwkJfQorCiAJCW9mZnNldCArPSBlbnRyeS0+aW5fcGFja19oZWFkZXJfc2l6ZTsKIAkJZGF0YWxlbiAtPSBlbnRyeS0+aW5fcGFja19oZWFkZXJfc2l6ZTsKKwkJaWYgKCFwYWNrX3RvX3N0ZG91dCAmJiBwLT5pbmRleF92ZXJzaW9uID09IDEgJiYKKwkJICAgIGNoZWNrX3BhY2tfaW5mbGF0ZShwLCAmd19jdXJzLCBvZmZzZXQsIGRhdGFsZW4sIGVudHJ5LT5zaXplKSkgeworCQkJZXJyb3IoImNvcnJ1cHQgcGFja2VkIG9iamVjdCBmb3IgJXMiLCBzaGExX3RvX2hleChlbnRyeS0+aWR4LnNoYTEpKTsKKwkJCXVudXNlX3BhY2soJndfY3Vycyk7CisJCQlnb3RvIG5vX3JldXNlOworCQl9CisKIAkJaWYgKHR5cGUgPT0gT0JKX09GU19ERUxUQSkgewogCQkJb2ZmX3Qgb2ZzID0gZW50cnktPmlkeC5vZmZzZXQgLSBlbnRyeS0+ZGVsdGEtPmlkeC5vZmZzZXQ7CiAJCQl1bnNpZ25lZCBwb3MgPSBzaXplb2YoZGhlYWRlcikgLSAxOwogCQkJZGhlYWRlcltwb3NdID0gb2ZzICYgMTI3OwogCQkJd2hpbGUgKG9mcyA+Pj0gNykKIAkJCQlkaGVhZGVyWy0tcG9zXSA9IDEyOCB8ICgtLW9mcyAmIDEyNyk7Ci0JCQlpZiAobGltaXQgJiYgaGRybGVuICsgc2l6ZW9mKGRoZWFkZXIpIC0gcG9zICsgZGF0YWxlbiArIDIwID49IGxpbWl0KQorCQkJaWYgKGxpbWl0ICYmIGhkcmxlbiArIHNpemVvZihkaGVhZGVyKSAtIHBvcyArIGRhdGFsZW4gKyAyMCA+PSBsaW1pdCkgeworCQkJCXVudXNlX3BhY2soJndfY3Vycyk7CiAJCQkJcmV0dXJuIDA7CisJCQl9CiAJCQlzaGExd3JpdGUoZiwgaGVhZGVyLCBoZHJsZW4pOwogCQkJc2hhMXdyaXRlKGYsIGRoZWFkZXIgKyBwb3MsIHNpemVvZihkaGVhZGVyKSAtIHBvcyk7CiAJCQloZHJsZW4gKz0gc2l6ZW9mKGRoZWFkZXIpIC0gcG9zOworCQkJcmV1c2VkX2RlbHRhKys7CiAJCX0gZWxzZSBpZiAodHlwZSA9PSBPQkpfUkVGX0RFTFRBKSB7Ci0JCQlpZiAobGltaXQgJiYgaGRybGVuICsgMjAgKyBkYXRhbGVuICsgMjAgPj0gbGltaXQpCisJCQlpZiAobGltaXQgJiYgaGRybGVuICsgMjAgKyBkYXRhbGVuICsgMjAgPj0gbGltaXQpIHsKKwkJCQl1bnVzZV9wYWNrKCZ3X2N1cnMpOwogCQkJCXJldHVybiAwOworCQkJfQogCQkJc2hhMXdyaXRlKGYsIGhlYWRlciwgaGRybGVuKTsKIAkJCXNoYTF3cml0ZShmLCBlbnRyeS0+ZGVsdGEtPmlkeC5zaGExLCAyMCk7CiAJCQloZHJsZW4gKz0gMjA7CisJCQlyZXVzZWRfZGVsdGErKzsKIAkJfSBlbHNlIHsKLQkJCWlmIChsaW1pdCAmJiBoZHJsZW4gKyBkYXRhbGVuICsgMjAgPj0gbGltaXQpCisJCQlpZiAobGltaXQgJiYgaGRybGVuICsgZGF0YWxlbiArIDIwID49IGxpbWl0KSB7CisJCQkJdW51c2VfcGFjaygmd19jdXJzKTsKIAkJCQlyZXR1cm4gMDsKKwkJCX0KIAkJCXNoYTF3cml0ZShmLCBoZWFkZXIsIGhkcmxlbik7CiAJCX0KLQotCQlpZiAoIXBhY2tfdG9fc3Rkb3V0ICYmIHAtPmluZGV4X3ZlcnNpb24gPT0gMSAmJgotCQkgICAgY2hlY2tfcGFja19pbmZsYXRlKHAsICZ3X2N1cnMsIG9mZnNldCwgZGF0YWxlbiwgZW50cnktPnNpemUpKQotCQkJZGllKCJjb3JydXB0IHBhY2tlZCBvYmplY3QgZm9yICVzIiwgc2hhMV90b19oZXgoZW50cnktPmlkeC5zaGExKSk7CiAJCWNvcHlfcGFja19kYXRhKGYsIHAsICZ3X2N1cnMsIG9mZnNldCwgZGF0YWxlbik7CiAJCXVudXNlX3BhY2soJndfY3Vycyk7CiAJCXJldXNlZCsrOwpAQCAtMTAxNyw5ICsxMDMyLDExIEBACiAJCSAqIFdlIHdhbnQgaW5fcGFja190eXBlIGV2ZW4gaWYgd2UgZG8gbm90IHJldXNlIGRlbHRhCiAJCSAqIHNpbmNlIG5vbi1kZWx0YSByZXByZXNlbnRhdGlvbnMgY291bGQgc3RpbGwgYmUgcmV1c2VkLgogCQkgKi8KLQkJdXNlZCA9IHVucGFja19vYmplY3RfaGVhZGVyX2dlbnRseShidWYsIGF2YWlsLAorCQl1c2VkID0gdW5wYWNrX29iamVjdF9oZWFkZXJfYnVmZmVyKGJ1ZiwgYXZhaWwsCiAJCQkJCQkgICAmZW50cnktPmluX3BhY2tfdHlwZSwKIAkJCQkJCSAgICZlbnRyeS0+c2l6ZSk7CisJCWlmICh1c2VkID09IDApCisJCQlnb3RvIGdpdmVfdXA7CiAKIAkJLyoKIAkJICogRGV0ZXJtaW5lIGlmIHRoaXMgaXMgYSBkZWx0YSBhbmQgaWYgc28gd2hldGhlciB3ZSBjYW4KQEAgLTEwMzEsNiArMTA0OCw4IEBACiAJCQkvKiBOb3QgYSBkZWx0YSBoZW5jZSB3ZSd2ZSBhbHJlYWR5IGdvdCBhbGwgd2UgbmVlZC4gKi8KIAkJCWVudHJ5LT50eXBlID0gZW50cnktPmluX3BhY2tfdHlwZTsKIAkJCWVudHJ5LT5pbl9wYWNrX2hlYWRlcl9zaXplID0gdXNlZDsKKwkJCWlmIChlbnRyeS0+dHlwZSA8IE9CSl9DT01NSVQgfHwgZW50cnktPnR5cGUgPiBPQkpfQkxPQikKKwkJCQlnb3RvIGdpdmVfdXA7CiAJCQl1bnVzZV9wYWNrKCZ3X2N1cnMpOwogCQkJcmV0dXJuOwogCQljYXNlIE9CSl9SRUZfREVMVEE6CkBAIC0xMDQ3LDE5ICsxMDY2LDI1IEBACiAJCQlvZnMgPSBjICYgMTI3OwogCQkJd2hpbGUgKGMgJiAxMjgpIHsKIAkJCQlvZnMgKz0gMTsKLQkJCQlpZiAoIW9mcyB8fCBNU0Iob2ZzLCA3KSkKLQkJCQkJZGllKCJkZWx0YSBiYXNlIG9mZnNldCBvdmVyZmxvdyBpbiBwYWNrIGZvciAlcyIsCi0JCQkJCSAgICBzaGExX3RvX2hleChlbnRyeS0+aWR4LnNoYTEpKTsKKwkJCQlpZiAoIW9mcyB8fCBNU0Iob2ZzLCA3KSkgeworCQkJCQllcnJvcigiZGVsdGEgYmFzZSBvZmZzZXQgb3ZlcmZsb3cgaW4gcGFjayBmb3IgJXMiLAorCQkJCQkgICAgICBzaGExX3RvX2hleChlbnRyeS0+aWR4LnNoYTEpKTsKKwkJCQkJZ290byBnaXZlX3VwOworCQkJCX0KIAkJCQljID0gYnVmW3VzZWRfMCsrXTsKIAkJCQlvZnMgPSAob2ZzIDw8IDcpICsgKGMgJiAxMjcpOwogCQkJfQotCQkJaWYgKG9mcyA+PSBlbnRyeS0+aW5fcGFja19vZmZzZXQpCi0JCQkJZGllKCJkZWx0YSBiYXNlIG9mZnNldCBvdXQgb2YgYm91bmQgZm9yICVzIiwKLQkJCQkgICAgc2hhMV90b19oZXgoZW50cnktPmlkeC5zaGExKSk7CiAJCQlvZnMgPSBlbnRyeS0+aW5fcGFja19vZmZzZXQgLSBvZnM7CisJCQlpZiAob2ZzIDw9IDAgfHwgb2ZzID49IGVudHJ5LT5pbl9wYWNrX29mZnNldCkgeworCQkJCWVycm9yKCJkZWx0YSBiYXNlIG9mZnNldCBvdXQgb2YgYm91bmQgZm9yICVzIiwKKwkJCQkgICAgICBzaGExX3RvX2hleChlbnRyeS0+aWR4LnNoYTEpKTsKKwkJCQlnb3RvIGdpdmVfdXA7CisJCQl9CiAJCQlpZiAocmV1c2VfZGVsdGEgJiYgIWVudHJ5LT5wcmVmZXJyZWRfYmFzZSkgewogCQkJCXN0cnVjdCByZXZpbmRleF9lbnRyeSAqcmV2aWR4OwogCQkJCXJldmlkeCA9IGZpbmRfcGFja19yZXZpbmRleChwLCBvZnMpOworCQkJCWlmICghcmV2aWR4KQorCQkJCQlnb3RvIGdpdmVfdXA7CiAJCQkJYmFzZV9yZWYgPSBudGhfcGFja2VkX29iamVjdF9zaGExKHAsIHJldmlkeC0+bnIpOwogCQkJfQogCQkJZW50cnktPmluX3BhY2tfaGVhZGVyX3NpemUgPSB1c2VkICsgdXNlZF8wOwpAQCAtMTA3OSw2ICsxMTA0LDcgQEAKIAkJCSAqLwogCQkJZW50cnktPnR5cGUgPSBlbnRyeS0+aW5fcGFja190eXBlOwogCQkJZW50cnktPmRlbHRhID0gYmFzZV9lbnRyeTsKKwkJCWVudHJ5LT5kZWx0YV9zaXplID0gZW50cnktPnNpemU7CiAJCQllbnRyeS0+ZGVsdGFfc2libGluZyA9IGJhc2VfZW50cnktPmRlbHRhX2NoaWxkOwogCQkJYmFzZV9lbnRyeS0+ZGVsdGFfY2hpbGQgPSBlbnRyeTsKIAkJCXVudXNlX3BhY2soJndfY3Vycyk7CkBAIC0xMDkzLDYgKzExMTksOCBAQAogCQkJICovCiAJCQllbnRyeS0+c2l6ZSA9IGdldF9zaXplX2Zyb21fZGVsdGEocCwgJndfY3VycywKIAkJCQkJZW50cnktPmluX3BhY2tfb2Zmc2V0ICsgZW50cnktPmluX3BhY2tfaGVhZGVyX3NpemUpOworCQkJaWYgKGVudHJ5LT5zaXplID09IDApCisJCQkJZ290byBnaXZlX3VwOwogCQkJdW51c2VfcGFjaygmd19jdXJzKTsKIAkJCXJldHVybjsKIAkJfQpAQCAtMTEwMiw2ICsxMTMwLDcgQEAKIAkJICogd2l0aCBzaGExX29iamVjdF9pbmZvKCkgdG8gZmluZCBhYm91dCB0aGUgb2JqZWN0IHR5cGUKIAkJICogYXQgdGhpcyBwb2ludC4uLgogCQkgKi8KKwkJZ2l2ZV91cDoKIAkJdW51c2VfcGFjaygmd19jdXJzKTsKIAl9CiAKQEAgLTEzODQsMTIgKzE0MTMsMTAgQEAKIAkJCWludCB3aW5kb3csIGludCBkZXB0aCwgdW5zaWduZWQgKnByb2Nlc3NlZCkKIHsKIAl1aW50MzJfdCBpLCBpZHggPSAwLCBjb3VudCA9IDA7Ci0JdW5zaWduZWQgaW50IGFycmF5X3NpemUgPSB3aW5kb3cgKiBzaXplb2Yoc3RydWN0IHVucGFja2VkKTsKIAlzdHJ1Y3QgdW5wYWNrZWQgKmFycmF5OwogCXVuc2lnbmVkIGxvbmcgbWVtX3VzYWdlID0gMDsKIAotCWFycmF5ID0geG1hbGxvYyhhcnJheV9zaXplKTsKLQltZW1zZXQoYXJyYXksIDAsIGFycmF5X3NpemUpOworCWFycmF5ID0geGNhbGxvYyh3aW5kb3csIHNpemVvZihzdHJ1Y3QgdW5wYWNrZWQpKTsKIAogCWZvciAoOzspIHsKIAkJc3RydWN0IG9iamVjdF9lbnRyeSAqZW50cnk7CkBAIC0xNzE1LDYgKzE3NDIsMTYgQEAKIAogCWdldF9vYmplY3RfZGV0YWlscygpOwogCisJLyoKKwkgKiBJZiB3ZSdyZSBsb2NhbGx5IHJlcGFja2luZyB0aGVuIHdlIG5lZWQgdG8gYmUgZG91Ymx5IGNhcmVmdWwKKwkgKiBmcm9tIG5vdyBvbiBpbiBvcmRlciB0byBtYWtlIHN1cmUgbm8gc3RlYWx0aCBjb3JydXB0aW9uIGdldHMKKwkgKiBwcm9wYWdhdGVkIHRvIHRoZSBuZXcgcGFjay4gIENsaWVudHMgcmVjZWl2aW5nIHN0cmVhbWVkIHBhY2tzCisJICogc2hvdWxkIHZhbGlkYXRlIGV2ZXJ5dGhpbmcgdGhleSBnZXQgYW55d2F5IHNvIG5vIG5lZWQgdG8gaW5jdXIKKwkgKiB0aGUgYWRkaXRpb25hbCBjb3N0IGhlcmUgaW4gdGhhdCBjYXNlLgorCSAqLworCWlmICghcGFja190b19zdGRvdXQpCisJCWRvX2NoZWNrX3BhY2tlZF9vYmplY3RfY3JjID0gMTsKKwogCWlmICghbnJfb2JqZWN0cyB8fCAhd2luZG93IHx8ICFkZXB0aCkKIAkJcmV0dXJuOwogCkBAIC0xNzQxLDYgKzE3NzgsMTQgQEAKIAkJCWlmIChlbnRyeS0+dHlwZSA8IDApCiAJCQkJZGllKCJ1bmFibGUgdG8gZ2V0IHR5cGUgb2Ygb2JqZWN0ICVzIiwKIAkJCQkgICAgc2hhMV90b19oZXgoZW50cnktPmlkeC5zaGExKSk7CisJCX0gZWxzZSB7CisJCQlpZiAoZW50cnktPnR5cGUgPCAwKSB7CisJCQkJLyoKKwkJCQkgKiBUaGlzIG9iamVjdCBpcyBub3QgZm91bmQsIGJ1dCB3ZQorCQkJCSAqIGRvbid0IGhhdmUgdG8gaW5jbHVkZSBpdCBhbnl3YXkuCisJCQkJICovCisJCQkJY29udGludWU7CisJCQl9CiAJCX0KIAogCQlkZWx0YV9saXN0W24rK10gPSBlbnRyeTsKZGlmZiAtLWdpdCBhL2J1aWx0aW4tcHJ1bmUuYyBiL2J1aWx0aW4tcHJ1bmUuYwppbmRleCAxNjYzZjhiLi43YjRlYzgwIDEwMDY0NAotLS0gYS9idWlsdGluLXBydW5lLmMKKysrIGIvYnVpbHRpbi1wcnVuZS5jCkBAIC03LDEwICs3LDExIEBACiAjaW5jbHVkZSAicGFyc2Utb3B0aW9ucy5oIgogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHBydW5lX3VzYWdlW10gPSB7Ci0JImdpdCBwcnVuZSBbLW5dIFstLWV4cGlyZSA8dGltZT5dIFstLV0gWzxoZWFkPi4uLl0iLAorCSJnaXQgcHJ1bmUgWy1uXSBbLXZdIFstLWV4cGlyZSA8dGltZT5dIFstLV0gWzxoZWFkPi4uLl0iLAogCU5VTEwKIH07CiBzdGF0aWMgaW50IHNob3dfb25seTsKK3N0YXRpYyBpbnQgdmVyYm9zZTsKIHN0YXRpYyB1bnNpZ25lZCBsb25nIGV4cGlyZTsKIAogc3RhdGljIGludCBwcnVuZV90bXBfb2JqZWN0KGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQpAQCAtMzksMTEgKzQwLDEyIEBACiAJCWlmIChzdC5zdF9tdGltZSA+IGV4cGlyZSkKIAkJCXJldHVybiAwOwogCX0KLQlpZiAoc2hvd19vbmx5KSB7CisJaWYgKHNob3dfb25seSB8fCB2ZXJib3NlKSB7CiAJCWVudW0gb2JqZWN0X3R5cGUgdHlwZSA9IHNoYTFfb2JqZWN0X2luZm8oc2hhMSwgTlVMTCk7CiAJCXByaW50ZigiJXMgJXNcbiIsIHNoYTFfdG9faGV4KHNoYTEpLAogCQkgICAgICAgKHR5cGUgPiAwKSA/IHR5cGVuYW1lKHR5cGUpIDogInVua25vd24iKTsKLQl9IGVsc2UKKwl9CisJaWYgKCFzaG93X29ubHkpCiAJCXVubGluayhmdWxscGF0aCk7CiAJcmV0dXJuIDA7CiB9CkBAIC0xMzUsNiArMTM3LDggQEAKIAljb25zdCBzdHJ1Y3Qgb3B0aW9uIG9wdGlvbnNbXSA9IHsKIAkJT1BUX0JPT0xFQU4oJ24nLCBOVUxMLCAmc2hvd19vbmx5LAogCQkJICAgICJkbyBub3QgcmVtb3ZlLCBzaG93IG9ubHkiKSwKKwkJT1BUX0JPT0xFQU4oJ3YnLCBOVUxMLCAmdmVyYm9zZSwKKwkJCSJyZXBvcnQgcHJ1bmVkIG9iamVjdHMiKSwKIAkJT1BUX0RBVEUoMCwgImV4cGlyZSIsICZleHBpcmUsCiAJCQkgImV4cGlyZSBvYmplY3RzIG9sZGVyIHRoYW4gPHRpbWU+IiksCiAJCU9QVF9FTkQoKQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1wdXNoLmMgYi9idWlsdGluLXB1c2guYwppbmRleCBmNWNjNzYyLi4xMjJmZGNmIDEwMDY0NAotLS0gYS9idWlsdGluLXB1c2guYworKysgYi9idWlsdGluLXB1c2guYwpAQCAtNTksOCArNTksMTcgQEAKIAlpZiAocmVtb3RlLT5taXJyb3IpCiAJCWZsYWdzIHw9IChUUkFOU1BPUlRfUFVTSF9NSVJST1J8VFJBTlNQT1JUX1BVU0hfRk9SQ0UpOwogCi0JaWYgKChmbGFncyAmIChUUkFOU1BPUlRfUFVTSF9BTEx8VFJBTlNQT1JUX1BVU0hfTUlSUk9SKSkgJiYgcmVmc3BlYykKLQkJcmV0dXJuIC0xOworCWlmICgoZmxhZ3MgJiBUUkFOU1BPUlRfUFVTSF9BTEwpICYmIHJlZnNwZWMpIHsKKwkJaWYgKCFzdHJjbXAoKnJlZnNwZWMsICJyZWZzL3RhZ3MvKiIpKQorCQkJcmV0dXJuIGVycm9yKCItLWFsbCBhbmQgLS10YWdzIGFyZSBpbmNvbXBhdGlibGUiKTsKKwkJcmV0dXJuIGVycm9yKCItLWFsbCBjYW4ndCBiZSBjb21iaW5lZCB3aXRoIHJlZnNwZWNzIik7CisJfQorCisJaWYgKChmbGFncyAmIFRSQU5TUE9SVF9QVVNIX01JUlJPUikgJiYgcmVmc3BlYykgeworCQlpZiAoIXN0cmNtcCgqcmVmc3BlYywgInJlZnMvdGFncy8qIikpCisJCQlyZXR1cm4gZXJyb3IoIi0tbWlycm9yIGFuZCAtLXRhZ3MgYXJlIGluY29tcGF0aWJsZSIpOworCQlyZXR1cm4gZXJyb3IoIi0tbWlycm9yIGNhbid0IGJlIGNvbWJpbmVkIHdpdGggcmVmc3BlY3MiKTsKKwl9CiAKIAlpZiAoKGZsYWdzICYgKFRSQU5TUE9SVF9QVVNIX0FMTHxUUkFOU1BPUlRfUFVTSF9NSVJST1IpKSA9PQogCQkJCShUUkFOU1BPUlRfUFVTSF9BTEx8VFJBTlNQT1JUX1BVU0hfTUlSUk9SKSkgewpkaWZmIC0tZ2l0IGEvcmVjZWl2ZS1wYWNrLmMgYi9idWlsdGluLXJlY2VpdmUtcGFjay5jCnNpbWlsYXJpdHkgaW5kZXggODElCnJlbmFtZSBmcm9tIHJlY2VpdmUtcGFjay5jCnJlbmFtZSB0byBidWlsdGluLXJlY2VpdmUtcGFjay5jCmluZGV4IGYwMTQ1YmQuLmRiNjdjMzEgMTAwNjQ0Ci0tLSBhL3JlY2VpdmUtcGFjay5jCisrKyBiL2J1aWx0aW4tcmVjZWl2ZS1wYWNrLmMKQEAgLTYsMTAgKzYsMjAgQEAKICNpbmNsdWRlICJleGVjX2NtZC5oIgogI2luY2x1ZGUgImNvbW1pdC5oIgogI2luY2x1ZGUgIm9iamVjdC5oIgorI2luY2x1ZGUgInJlbW90ZS5oIgorI2luY2x1ZGUgInRyYW5zcG9ydC5oIgogCiBzdGF0aWMgY29uc3QgY2hhciByZWNlaXZlX3BhY2tfdXNhZ2VbXSA9ICJnaXQtcmVjZWl2ZS1wYWNrIDxnaXQtZGlyPiI7CiAKK2VudW0gZGVueV9hY3Rpb24geworCURFTllfSUdOT1JFLAorCURFTllfV0FSTiwKKwlERU5ZX1JFRlVTRSwKK307CisKK3N0YXRpYyBpbnQgZGVueV9kZWxldGVzID0gMDsKIHN0YXRpYyBpbnQgZGVueV9ub25fZmFzdF9mb3J3YXJkcyA9IDA7CitzdGF0aWMgZW51bSBkZW55X2FjdGlvbiBkZW55X2N1cnJlbnRfYnJhbmNoID0gREVOWV9XQVJOOwogc3RhdGljIGludCByZWNlaXZlX2ZzY2tfb2JqZWN0czsKIHN0YXRpYyBpbnQgcmVjZWl2ZV91bnBhY2tfbGltaXQgPSAtMTsKIHN0YXRpYyBpbnQgdHJhbnNmZXJfdW5wYWNrX2xpbWl0ID0gLTE7CkBAIC0xOSw4ICsyOSwyOCBAQAogc3RhdGljIGNoYXIgY2FwYWJpbGl0aWVzW10gPSAiIHJlcG9ydC1zdGF0dXMgZGVsZXRlLXJlZnMgIjsKIHN0YXRpYyBpbnQgY2FwYWJpbGl0aWVzX3NlbnQ7CiAKK3N0YXRpYyBlbnVtIGRlbnlfYWN0aW9uIHBhcnNlX2RlbnlfYWN0aW9uKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUpCit7CisJaWYgKHZhbHVlKSB7CisJCWlmICghc3RyY2FzZWNtcCh2YWx1ZSwgImlnbm9yZSIpKQorCQkJcmV0dXJuIERFTllfSUdOT1JFOworCQlpZiAoIXN0cmNhc2VjbXAodmFsdWUsICJ3YXJuIikpCisJCQlyZXR1cm4gREVOWV9XQVJOOworCQlpZiAoIXN0cmNhc2VjbXAodmFsdWUsICJyZWZ1c2UiKSkKKwkJCXJldHVybiBERU5ZX1JFRlVTRTsKKwl9CisJaWYgKGdpdF9jb25maWdfYm9vbCh2YXIsIHZhbHVlKSkKKwkJcmV0dXJuIERFTllfUkVGVVNFOworCXJldHVybiBERU5ZX0lHTk9SRTsKK30KKwogc3RhdGljIGludCByZWNlaXZlX3BhY2tfY29uZmlnKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUsIHZvaWQgKmNiKQogeworCWlmIChzdHJjbXAodmFyLCAicmVjZWl2ZS5kZW55ZGVsZXRlcyIpID09IDApIHsKKwkJZGVueV9kZWxldGVzID0gZ2l0X2NvbmZpZ19ib29sKHZhciwgdmFsdWUpOworCQlyZXR1cm4gMDsKKwl9CisKIAlpZiAoc3RyY21wKHZhciwgInJlY2VpdmUuZGVueW5vbmZhc3Rmb3J3YXJkcyIpID09IDApIHsKIAkJZGVueV9ub25fZmFzdF9mb3J3YXJkcyA9IGdpdF9jb25maWdfYm9vbCh2YXIsIHZhbHVlKTsKIAkJcmV0dXJuIDA7CkBAIC00MSw2ICs3MSwxMSBAQAogCQlyZXR1cm4gMDsKIAl9CiAKKwlpZiAoIXN0cmNtcCh2YXIsICJyZWNlaXZlLmRlbnljdXJyZW50YnJhbmNoIikpIHsKKwkJZGVueV9jdXJyZW50X2JyYW5jaCA9IHBhcnNlX2RlbnlfYWN0aW9uKHZhciwgdmFsdWUpOworCQlyZXR1cm4gMDsKKwl9CisKIAlyZXR1cm4gZ2l0X2RlZmF1bHRfY29uZmlnKHZhciwgdmFsdWUsIGNiKTsKIH0KIApAQCAtMTY1LDYgKzIwMCwyMCBAQAogCXJldHVybiBob29rX3N0YXR1cyhydW5fY29tbWFuZCgmcHJvYyksIHVwZGF0ZV9ob29rKTsKIH0KIAorc3RhdGljIGludCBpc19yZWZfY2hlY2tlZF9vdXQoY29uc3QgY2hhciAqcmVmKQoreworCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CisJY29uc3QgY2hhciAqaGVhZDsKKworCWlmIChpc19iYXJlX3JlcG9zaXRvcnkoKSkKKwkJcmV0dXJuIDA7CisKKwloZWFkID0gcmVzb2x2ZV9yZWYoIkhFQUQiLCBzaGExLCAwLCBOVUxMKTsKKwlpZiAoIWhlYWQpCisJCXJldHVybiAwOworCXJldHVybiAhc3RyY21wKGhlYWQsIHJlZik7Cit9CisKIHN0YXRpYyBjb25zdCBjaGFyICp1cGRhdGUoc3RydWN0IGNvbW1hbmQgKmNtZCkKIHsKIAljb25zdCBjaGFyICpuYW1lID0gY21kLT5yZWZfbmFtZTsKQEAgLTE3OCwxMSArMjI3LDM1IEBACiAJCXJldHVybiAiZnVubnkgcmVmbmFtZSI7CiAJfQogCisJc3dpdGNoIChkZW55X2N1cnJlbnRfYnJhbmNoKSB7CisJY2FzZSBERU5ZX0lHTk9SRToKKwkJYnJlYWs7CisJY2FzZSBERU5ZX1dBUk46CisJCWlmICghaXNfcmVmX2NoZWNrZWRfb3V0KG5hbWUpKQorCQkJYnJlYWs7CisJCXdhcm5pbmcoInVwZGF0aW5nIHRoZSBjdXJyZW50bHkgY2hlY2tlZCBvdXQgYnJhbmNoOyB0aGlzIG1heSIKKwkJCSIgY2F1c2UgY29uZnVzaW9uLFxuIgorCQkJImFzIHRoZSBpbmRleCBhbmQgd29ya2luZyB0cmVlIGRvIG5vdCByZWZsZWN0IGNoYW5nZXMiCisJCQkiIHRoYXQgYXJlIG5vdyBpbiBIRUFELiIpOworCQlicmVhazsKKwljYXNlIERFTllfUkVGVVNFOgorCQlpZiAoIWlzX3JlZl9jaGVja2VkX291dChuYW1lKSkKKwkJCWJyZWFrOworCQllcnJvcigicmVmdXNpbmcgdG8gdXBkYXRlIGNoZWNrZWQgb3V0IGJyYW5jaDogJXMiLCBuYW1lKTsKKwkJcmV0dXJuICJicmFuY2ggaXMgY3VycmVudGx5IGNoZWNrZWQgb3V0IjsKKwl9CisKIAlpZiAoIWlzX251bGxfc2hhMShuZXdfc2hhMSkgJiYgIWhhc19zaGExX2ZpbGUobmV3X3NoYTEpKSB7CiAJCWVycm9yKCJ1bnBhY2sgc2hvdWxkIGhhdmUgZ2VuZXJhdGVkICVzLCAiCiAJCSAgICAgICJidXQgSSBjYW4ndCBmaW5kIGl0ISIsIHNoYTFfdG9faGV4KG5ld19zaGExKSk7CiAJCXJldHVybiAiYmFkIHBhY2siOwogCX0KKwlpZiAoZGVueV9kZWxldGVzICYmIGlzX251bGxfc2hhMShuZXdfc2hhMSkgJiYKKwkgICAgIWlzX251bGxfc2hhMShvbGRfc2hhMSkgJiYKKwkgICAgIXByZWZpeGNtcChuYW1lLCAicmVmcy9oZWFkcy8iKSkgeworCQllcnJvcigiZGVueWluZyByZWYgZGVsZXRpb24gZm9yICVzIiwgbmFtZSk7CisJCXJldHVybiAiZGVsZXRpb24gcHJvaGliaXRlZCI7CisJfQogCWlmIChkZW55X25vbl9mYXN0X2ZvcndhcmRzICYmICFpc19udWxsX3NoYTEobmV3X3NoYTEpICYmCiAJICAgICFpc19udWxsX3NoYTEob2xkX3NoYTEpICYmCiAJICAgICFwcmVmaXhjbXAobmFtZSwgInJlZnMvaGVhZHMvIikpIHsKQEAgLTQwNyw3ICs0ODAsNyBAQAogCQljaGFyIGtlZXBfYXJnWzI1Nl07CiAJCXN0cnVjdCBjaGlsZF9wcm9jZXNzIGlwOwogCi0JCXMgPSBzcHJpbnRmKGtlZXBfYXJnLCAiLS1rZWVwPXJlY2VpdmUtcGFjayAlaSBvbiAiLCBnZXRwaWQoKSk7CisJCXMgPSBzcHJpbnRmKGtlZXBfYXJnLCAiLS1rZWVwPXJlY2VpdmUtcGFjayAlIlBSSXVNQVgiIG9uICIsICh1aW50bWF4X3QpIGdldHBpZCgpKTsKIAkJaWYgKGdldGhvc3RuYW1lKGtlZXBfYXJnICsgcywgc2l6ZW9mKGtlZXBfYXJnKSAtIHMpKQogCQkJc3RyY3B5KGtlZXBfYXJnICsgcywgImxvY2FsaG9zdCIpOwogCkBAIC00NjIsMTQgKzUzNSw1MyBAQAogCXJldHVybiAxOwogfQogCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitzdGF0aWMgaW50IGFkZF9yZWZzX2Zyb21fYWx0ZXJuYXRlKHN0cnVjdCBhbHRlcm5hdGVfb2JqZWN0X2RhdGFiYXNlICplLCB2b2lkICp1bnVzZWQpCit7CisJY2hhciAqb3RoZXI7CisJc2l6ZV90IGxlbjsKKwlzdHJ1Y3QgcmVtb3RlICpyZW1vdGU7CisJc3RydWN0IHRyYW5zcG9ydCAqdHJhbnNwb3J0OworCWNvbnN0IHN0cnVjdCByZWYgKmV4dHJhOworCisJZS0+bmFtZVstMV0gPSAnXDAnOworCW90aGVyID0geHN0cmR1cChtYWtlX2Fic29sdXRlX3BhdGgoZS0+YmFzZSkpOworCWUtPm5hbWVbLTFdID0gJy8nOworCWxlbiA9IHN0cmxlbihvdGhlcik7CisKKwl3aGlsZSAob3RoZXJbbGVuLTFdID09ICcvJykKKwkJb3RoZXJbLS1sZW5dID0gJ1wwJzsKKwlpZiAobGVuIDwgOCB8fCBtZW1jbXAob3RoZXIgKyBsZW4gLSA4LCAiL29iamVjdHMiLCA4KSkKKwkJcmV0dXJuIDA7CisJLyogSXMgdGhpcyBhIGdpdCByZXBvc2l0b3J5IHdpdGggcmVmcz8gKi8KKwltZW1jcHkob3RoZXIgKyBsZW4gLSA4LCAiL3JlZnMiLCA2KTsKKwlpZiAoIWlzX2RpcmVjdG9yeShvdGhlcikpCisJCXJldHVybiAwOworCW90aGVyW2xlbiAtIDhdID0gJ1wwJzsKKwlyZW1vdGUgPSByZW1vdGVfZ2V0KG90aGVyKTsKKwl0cmFuc3BvcnQgPSB0cmFuc3BvcnRfZ2V0KHJlbW90ZSwgb3RoZXIpOworCWZvciAoZXh0cmEgPSB0cmFuc3BvcnRfZ2V0X3JlbW90ZV9yZWZzKHRyYW5zcG9ydCk7CisJICAgICBleHRyYTsKKwkgICAgIGV4dHJhID0gZXh0cmEtPm5leHQpIHsKKwkJYWRkX2V4dHJhX3JlZigiLmhhdmUiLCBleHRyYS0+b2xkX3NoYTEsIDApOworCX0KKwl0cmFuc3BvcnRfZGlzY29ubmVjdCh0cmFuc3BvcnQpOworCWZyZWUob3RoZXIpOworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBhZGRfYWx0ZXJuYXRlX3JlZnModm9pZCkKK3sKKwlmb3JlYWNoX2FsdF9vZGIoYWRkX3JlZnNfZnJvbV9hbHRlcm5hdGUsIE5VTEwpOworfQorCitpbnQgY21kX3JlY2VpdmVfcGFjayhpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKIHsKIAlpbnQgaTsKIAljaGFyICpkaXIgPSBOVUxMOwogCiAJYXJndisrOwogCWZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspIHsKLQkJY2hhciAqYXJnID0gKmFyZ3YrKzsKKwkJY29uc3QgY2hhciAqYXJnID0gKmFyZ3YrKzsKIAogCQlpZiAoKmFyZyA9PSAnLScpIHsKIAkJCS8qIERvIGZsYWcgaGFuZGxpbmcgaGVyZSAqLwpAQCAtNDc3LDcgKzU4OSw3IEBACiAJCX0KIAkJaWYgKGRpcikKIAkJCXVzYWdlKHJlY2VpdmVfcGFja191c2FnZSk7Ci0JCWRpciA9IGFyZzsKKwkJZGlyID0geHN0cmR1cChhcmcpOwogCX0KIAlpZiAoIWRpcikKIAkJdXNhZ2UocmVjZWl2ZV9wYWNrX3VzYWdlKTsKQEAgLTQ5Nyw3ICs2MDksOSBAQAogCWVsc2UgaWYgKDAgPD0gcmVjZWl2ZV91bnBhY2tfbGltaXQpCiAJCXVucGFja19saW1pdCA9IHJlY2VpdmVfdW5wYWNrX2xpbWl0OwogCisJYWRkX2FsdGVybmF0ZV9yZWZzKCk7CiAJd3JpdGVfaGVhZF9pbmZvKCk7CisJY2xlYXJfZXh0cmFfcmVmcygpOwogCiAJLyogRU9GICovCiAJcGFja2V0X2ZsdXNoKDEpOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1yZWZsb2cuYyBiL2J1aWx0aW4tcmVmbG9nLmMKaW5kZXggZGE5NmRhMy4uZDk1ZjUxNSAxMDA2NDQKLS0tIGEvYnVpbHRpbi1yZWZsb2cuYworKysgYi9idWlsdGluLXJlZmxvZy5jCkBAIC01NDAsMTEgKzU0MCwxMSBAQAogCQlmcmVlKGNvbGxlY3RlZC5lKTsKIAl9CiAKLQl3aGlsZSAoaSA8IGFyZ2MpIHsKLQkJY29uc3QgY2hhciAqcmVmID0gYXJndltpKytdOworCWZvciAoOyBpIDwgYXJnYzsgaSsrKSB7CisJCWNoYXIgKnJlZjsKIAkJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKLQkJaWYgKCFyZXNvbHZlX3JlZihyZWYsIHNoYTEsIDEsIE5VTEwpKSB7Ci0JCQlzdGF0dXMgfD0gZXJyb3IoIiVzIHBvaW50cyBub3doZXJlISIsIHJlZik7CisJCWlmICghZHdpbV9sb2coYXJndltpXSwgc3RybGVuKGFyZ3ZbaV0pLCBzaGExLCAmcmVmKSkgeworCQkJc3RhdHVzIHw9IGVycm9yKCIlcyBwb2ludHMgbm93aGVyZSEiLCBhcmd2W2ldKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAJCXNldF9yZWZsb2dfZXhwaXJ5X3BhcmFtKCZjYiwgZXhwbGljaXRfZXhwaXJ5LCByZWYpOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1yZW1vdGUuYyBiL2J1aWx0aW4tcmVtb3RlLmMKaW5kZXggNWFmNGU2NC4uZGIxOGJjZiAxMDA2NDQKLS0tIGEvYnVpbHRpbi1yZW1vdGUuYworKysgYi9idWlsdGluLXJlbW90ZS5jCkBAIC04LDEyICs4LDEzIEBACiAjaW5jbHVkZSAicmVmcy5oIgogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGJ1aWx0aW5fcmVtb3RlX3VzYWdlW10gPSB7Ci0JImdpdCByZW1vdGUiLAotCSJnaXQgcmVtb3RlIGFkZCA8bmFtZT4gPHVybD4iLAorCSJnaXQgcmVtb3RlIFstdiB8IC0tdmVyYm9zZV0iLAorCSJnaXQgcmVtb3RlIGFkZCBbLXQgPGJyYW5jaD5dIFstbSA8bWFzdGVyPl0gWy1mXSBbLS1taXJyb3JdIDxuYW1lPiA8dXJsPiIsCisJImdpdCByZW1vdGUgcmVuYW1lIDxvbGQ+IDxuZXc+IiwKIAkiZ2l0IHJlbW90ZSBybSA8bmFtZT4iLAotCSJnaXQgcmVtb3RlIHNob3cgPG5hbWU+IiwKLQkiZ2l0IHJlbW90ZSBwcnVuZSA8bmFtZT4iLAotCSJnaXQgcmVtb3RlIHVwZGF0ZSBbZ3JvdXBdIiwKKwkiZ2l0IHJlbW90ZSBzaG93IFstbl0gPG5hbWU+IiwKKwkiZ2l0IHJlbW90ZSBwcnVuZSBbLW4gfCAtLWRyeS1ydW5dIDxuYW1lPiIsCisJImdpdCByZW1vdGUgWy12IHwgLS12ZXJib3NlXSB1cGRhdGUgW2dyb3VwXSIsCiAJTlVMTAogfTsKIApAQCAtNDEsNyArNDIsMTEgQEAKIAogc3RhdGljIGludCBmZXRjaF9yZW1vdGUoY29uc3QgY2hhciAqbmFtZSkKIHsKLQljb25zdCBjaGFyICphcmd2W10gPSB7ICJmZXRjaCIsIG5hbWUsIE5VTEwgfTsKKwljb25zdCBjaGFyICphcmd2W10gPSB7ICJmZXRjaCIsIG5hbWUsIE5VTEwsIE5VTEwgfTsKKwlpZiAodmVyYm9zZSkgeworCQlhcmd2WzFdID0gIi12IjsKKwkJYXJndlsyXSA9IG5hbWU7CisJfQogCXByaW50ZigiVXBkYXRpbmcgJXNcbiIsIG5hbWUpOwogCWlmIChydW5fY29tbWFuZF92X29wdChhcmd2LCBSVU5fR0lUX0NNRCkpCiAJCXJldHVybiBlcnJvcigiQ291bGQgbm90IGZldGNoICVzIiwgbmFtZSk7CkBAIC01NCw3ICs1OSw3IEBACiAJc3RydWN0IHN0cmluZ19saXN0IHRyYWNrID0geyBOVUxMLCAwLCAwIH07CiAJY29uc3QgY2hhciAqbWFzdGVyID0gTlVMTDsKIAlzdHJ1Y3QgcmVtb3RlICpyZW1vdGU7Ci0Jc3RydWN0IHN0cmJ1ZiBidWYsIGJ1ZjI7CisJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVCwgYnVmMiA9IFNUUkJVRl9JTklUOwogCWNvbnN0IGNoYXIgKm5hbWUsICp1cmw7CiAJaW50IGk7CiAKQEAgLTgxLDkgKzg2LDYgQEAKIAkJCXJlbW90ZS0+ZmV0Y2hfcmVmc3BlY19ucikpCiAJCWRpZSgicmVtb3RlICVzIGFscmVhZHkgZXhpc3RzLiIsIG5hbWUpOwogCi0Jc3RyYnVmX2luaXQoJmJ1ZiwgMCk7Ci0Jc3RyYnVmX2luaXQoJmJ1ZjIsIDApOwotCiAJc3RyYnVmX2FkZGYoJmJ1ZjIsICJyZWZzL2hlYWRzL3Rlc3Q6cmVmcy9yZW1vdGVzLyVzL3Rlc3QiLCBuYW1lKTsKIAlpZiAoIXZhbGlkX2ZldGNoX3JlZnNwZWMoYnVmMi5idWYpKQogCQlkaWUoIiclcycgaXMgbm90IGEgdmFsaWQgcmVtb3RlIG5hbWUiLCBuYW1lKTsKQEAgLTI5Niw3ICsyOTgsNyBAQAogCiBzdHJ1Y3QgYnJhbmNoZXNfZm9yX3JlbW90ZSB7CiAJc3RydWN0IHJlbW90ZSAqcmVtb3RlOwotCXN0cnVjdCBzdHJpbmdfbGlzdCAqYnJhbmNoZXM7CisJc3RydWN0IHN0cmluZ19saXN0ICpicmFuY2hlcywgKnNraXBwZWQ7CiAJc3RydWN0IGtub3duX3JlbW90ZXMgKmtlZXA7CiB9OwogCkBAIC0zMjEsNiArMzIzLDE2IEBACiAJCQlyZXR1cm4gMDsKIAl9CiAKKwkvKiBkb24ndCBkZWxldGUgbm9uLXJlbW90ZSByZWZzICovCisJaWYgKHByZWZpeGNtcChyZWZuYW1lLCAicmVmcy9yZW1vdGVzIikpIHsKKwkJLyogYWR2aXNlIHVzZXIgaG93IHRvIGRlbGV0ZSBsb2NhbCBicmFuY2hlcyAqLworCQlpZiAoIXByZWZpeGNtcChyZWZuYW1lLCAicmVmcy9oZWFkcy8iKSkKKwkJCXN0cmluZ19saXN0X2FwcGVuZChhYmJyZXZfYnJhbmNoKHJlZm5hbWUpLAorCQkJCQkgICBicmFuY2hlcy0+c2tpcHBlZCk7CisJCS8qIHNpbGVudGx5IHNraXAgb3ZlciBvdGhlciBub24tcmVtb3RlIHJlZnMgKi8KKwkJcmV0dXJuIDA7CisJfQorCiAJLyogbWFrZSBzdXJlIHRoYXQgc3ltcmVmcyBhcmUgZGVsZXRlZCAqLwogCWlmIChmbGFncyAmIFJFRl9JU1NZTVJFRikKIAkJcmV0dXJuIHVubGluayhnaXRfcGF0aCgiJXMiLCByZWZuYW1lKSk7CkBAIC0zMzIsNiArMzQ0LDE5MSBAQAogCXJldHVybiAwOwogfQogCitzdHJ1Y3QgcmVuYW1lX2luZm8geworCWNvbnN0IGNoYXIgKm9sZDsKKwljb25zdCBjaGFyICpuZXc7CisJc3RydWN0IHN0cmluZ19saXN0ICpyZW1vdGVfYnJhbmNoZXM7Cit9OworCitzdGF0aWMgaW50IHJlYWRfcmVtb3RlX2JyYW5jaGVzKGNvbnN0IGNoYXIgKnJlZm5hbWUsCisJY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgaW50IGZsYWdzLCB2b2lkICpjYl9kYXRhKQoreworCXN0cnVjdCByZW5hbWVfaW5mbyAqcmVuYW1lID0gY2JfZGF0YTsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOworCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdGVtOworCWludCBmbGFnOworCXVuc2lnbmVkIGNoYXIgb3JpZ19zaGExWzIwXTsKKwljb25zdCBjaGFyICpzeW1yZWY7CisKKwlzdHJidWZfYWRkZigmYnVmLCAicmVmcy9yZW1vdGVzLyVzIiwgcmVuYW1lLT5vbGQpOworCWlmKCFwcmVmaXhjbXAocmVmbmFtZSwgYnVmLmJ1ZikpIHsKKwkJaXRlbSA9IHN0cmluZ19saXN0X2FwcGVuZCh4c3RyZHVwKHJlZm5hbWUpLCByZW5hbWUtPnJlbW90ZV9icmFuY2hlcyk7CisJCXN5bXJlZiA9IHJlc29sdmVfcmVmKHJlZm5hbWUsIG9yaWdfc2hhMSwgMSwgJmZsYWcpOworCQlpZiAoZmxhZyAmIFJFRl9JU1NZTVJFRikKKwkJCWl0ZW0tPnV0aWwgPSB4c3RyZHVwKHN5bXJlZik7CisJCWVsc2UKKwkJCWl0ZW0tPnV0aWwgPSBOVUxMOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1pZ3JhdGVfZmlsZShzdHJ1Y3QgcmVtb3RlICpyZW1vdGUpCit7CisJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKKwlpbnQgaTsKKwljaGFyICpwYXRoID0gTlVMTDsKKworCXN0cmJ1Zl9hZGRmKCZidWYsICJyZW1vdGUuJXMudXJsIiwgcmVtb3RlLT5uYW1lKTsKKwlmb3IgKGkgPSAwOyBpIDwgcmVtb3RlLT51cmxfbnI7IGkrKykKKwkJaWYgKGdpdF9jb25maWdfc2V0X211bHRpdmFyKGJ1Zi5idWYsIHJlbW90ZS0+dXJsW2ldLCAiXiQiLCAwKSkKKwkJCXJldHVybiBlcnJvcigiQ291bGQgbm90IGFwcGVuZCAnJXMnIHRvICclcyciLAorCQkJCQlyZW1vdGUtPnVybFtpXSwgYnVmLmJ1Zik7CisJc3RyYnVmX3Jlc2V0KCZidWYpOworCXN0cmJ1Zl9hZGRmKCZidWYsICJyZW1vdGUuJXMucHVzaCIsIHJlbW90ZS0+bmFtZSk7CisJZm9yIChpID0gMDsgaSA8IHJlbW90ZS0+cHVzaF9yZWZzcGVjX25yOyBpKyspCisJCWlmIChnaXRfY29uZmlnX3NldF9tdWx0aXZhcihidWYuYnVmLCByZW1vdGUtPnB1c2hfcmVmc3BlY1tpXSwgIl4kIiwgMCkpCisJCQlyZXR1cm4gZXJyb3IoIkNvdWxkIG5vdCBhcHBlbmQgJyVzJyB0byAnJXMnIiwKKwkJCQkJcmVtb3RlLT5wdXNoX3JlZnNwZWNbaV0sIGJ1Zi5idWYpOworCXN0cmJ1Zl9yZXNldCgmYnVmKTsKKwlzdHJidWZfYWRkZigmYnVmLCAicmVtb3RlLiVzLmZldGNoIiwgcmVtb3RlLT5uYW1lKTsKKwlmb3IgKGkgPSAwOyBpIDwgcmVtb3RlLT5mZXRjaF9yZWZzcGVjX25yOyBpKyspCisJCWlmIChnaXRfY29uZmlnX3NldF9tdWx0aXZhcihidWYuYnVmLCByZW1vdGUtPmZldGNoX3JlZnNwZWNbaV0sICJeJCIsIDApKQorCQkJcmV0dXJuIGVycm9yKCJDb3VsZCBub3QgYXBwZW5kICclcycgdG8gJyVzJyIsCisJCQkJCXJlbW90ZS0+ZmV0Y2hfcmVmc3BlY1tpXSwgYnVmLmJ1Zik7CisJaWYgKHJlbW90ZS0+b3JpZ2luID09IFJFTU9URV9SRU1PVEVTKQorCQlwYXRoID0gZ2l0X3BhdGgoInJlbW90ZXMvJXMiLCByZW1vdGUtPm5hbWUpOworCWVsc2UgaWYgKHJlbW90ZS0+b3JpZ2luID09IFJFTU9URV9CUkFOQ0hFUykKKwkJcGF0aCA9IGdpdF9wYXRoKCJicmFuY2hlcy8lcyIsIHJlbW90ZS0+bmFtZSk7CisJaWYgKHBhdGggJiYgdW5saW5rKHBhdGgpKQorCQl3YXJuaW5nKCJmYWlsZWQgdG8gcmVtb3ZlICclcyciLCBwYXRoKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtdihpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpCit7CisJc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7CisJCU9QVF9FTkQoKQorCX07CisJc3RydWN0IHJlbW90ZSAqb2xkcmVtb3RlLCAqbmV3cmVtb3RlOworCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQsIGJ1ZjIgPSBTVFJCVUZfSU5JVCwgYnVmMyA9IFNUUkJVRl9JTklUOworCXN0cnVjdCBzdHJpbmdfbGlzdCByZW1vdGVfYnJhbmNoZXMgPSB7IE5VTEwsIDAsIDAsIDAgfTsKKwlzdHJ1Y3QgcmVuYW1lX2luZm8gcmVuYW1lOworCWludCBpOworCisJaWYgKGFyZ2MgIT0gMykKKwkJdXNhZ2Vfd2l0aF9vcHRpb25zKGJ1aWx0aW5fcmVtb3RlX3VzYWdlLCBvcHRpb25zKTsKKworCXJlbmFtZS5vbGQgPSBhcmd2WzFdOworCXJlbmFtZS5uZXcgPSBhcmd2WzJdOworCXJlbmFtZS5yZW1vdGVfYnJhbmNoZXMgPSAmcmVtb3RlX2JyYW5jaGVzOworCisJb2xkcmVtb3RlID0gcmVtb3RlX2dldChyZW5hbWUub2xkKTsKKwlpZiAoIW9sZHJlbW90ZSkKKwkJZGllKCJObyBzdWNoIHJlbW90ZTogJXMiLCByZW5hbWUub2xkKTsKKworCWlmICghc3RyY21wKHJlbmFtZS5vbGQsIHJlbmFtZS5uZXcpICYmIG9sZHJlbW90ZS0+b3JpZ2luICE9IFJFTU9URV9DT05GSUcpCisJCXJldHVybiBtaWdyYXRlX2ZpbGUob2xkcmVtb3RlKTsKKworCW5ld3JlbW90ZSA9IHJlbW90ZV9nZXQocmVuYW1lLm5ldyk7CisJaWYgKG5ld3JlbW90ZSAmJiAobmV3cmVtb3RlLT51cmxfbnIgPiAxIHx8IG5ld3JlbW90ZS0+ZmV0Y2hfcmVmc3BlY19ucikpCisJCWRpZSgicmVtb3RlICVzIGFscmVhZHkgZXhpc3RzLiIsIHJlbmFtZS5uZXcpOworCisJc3RyYnVmX2FkZGYoJmJ1ZiwgInJlZnMvaGVhZHMvdGVzdDpyZWZzL3JlbW90ZXMvJXMvdGVzdCIsIHJlbmFtZS5uZXcpOworCWlmICghdmFsaWRfZmV0Y2hfcmVmc3BlYyhidWYuYnVmKSkKKwkJZGllKCInJXMnIGlzIG5vdCBhIHZhbGlkIHJlbW90ZSBuYW1lIiwgcmVuYW1lLm5ldyk7CisKKwlzdHJidWZfcmVzZXQoJmJ1Zik7CisJc3RyYnVmX2FkZGYoJmJ1ZiwgInJlbW90ZS4lcyIsIHJlbmFtZS5vbGQpOworCXN0cmJ1Zl9hZGRmKCZidWYyLCAicmVtb3RlLiVzIiwgcmVuYW1lLm5ldyk7CisJaWYgKGdpdF9jb25maWdfcmVuYW1lX3NlY3Rpb24oYnVmLmJ1ZiwgYnVmMi5idWYpIDwgMSkKKwkJcmV0dXJuIGVycm9yKCJDb3VsZCBub3QgcmVuYW1lIGNvbmZpZyBzZWN0aW9uICclcycgdG8gJyVzJyIsCisJCQkJYnVmLmJ1ZiwgYnVmMi5idWYpOworCisJc3RyYnVmX3Jlc2V0KCZidWYpOworCXN0cmJ1Zl9hZGRmKCZidWYsICJyZW1vdGUuJXMuZmV0Y2giLCByZW5hbWUubmV3KTsKKwlpZiAoZ2l0X2NvbmZpZ19zZXRfbXVsdGl2YXIoYnVmLmJ1ZiwgTlVMTCwgTlVMTCwgMSkpCisJCXJldHVybiBlcnJvcigiQ291bGQgbm90IHJlbW92ZSBjb25maWcgc2VjdGlvbiAnJXMnIiwgYnVmLmJ1Zik7CisJZm9yIChpID0gMDsgaSA8IG9sZHJlbW90ZS0+ZmV0Y2hfcmVmc3BlY19ucjsgaSsrKSB7CisJCWNoYXIgKnB0cjsKKworCQlzdHJidWZfcmVzZXQoJmJ1ZjIpOworCQlzdHJidWZfYWRkc3RyKCZidWYyLCBvbGRyZW1vdGUtPmZldGNoX3JlZnNwZWNbaV0pOworCQlwdHIgPSBzdHJzdHIoYnVmMi5idWYsIHJlbmFtZS5vbGQpOworCQlpZiAocHRyKQorCQkJc3RyYnVmX3NwbGljZSgmYnVmMiwgcHRyLWJ1ZjIuYnVmLCBzdHJsZW4ocmVuYW1lLm9sZCksCisJCQkJCXJlbmFtZS5uZXcsIHN0cmxlbihyZW5hbWUubmV3KSk7CisJCWlmIChnaXRfY29uZmlnX3NldF9tdWx0aXZhcihidWYuYnVmLCBidWYyLmJ1ZiwgIl4kIiwgMCkpCisJCQlyZXR1cm4gZXJyb3IoIkNvdWxkIG5vdCBhcHBlbmQgJyVzJyIsIGJ1Zi5idWYpOworCX0KKworCXJlYWRfYnJhbmNoZXMoKTsKKwlmb3IgKGkgPSAwOyBpIDwgYnJhbmNoX2xpc3QubnI7IGkrKykgeworCQlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXRlbSA9IGJyYW5jaF9saXN0Lml0ZW1zICsgaTsKKwkJc3RydWN0IGJyYW5jaF9pbmZvICppbmZvID0gaXRlbS0+dXRpbDsKKwkJaWYgKGluZm8tPnJlbW90ZSAmJiAhc3RyY21wKGluZm8tPnJlbW90ZSwgcmVuYW1lLm9sZCkpIHsKKwkJCXN0cmJ1Zl9yZXNldCgmYnVmKTsKKwkJCXN0cmJ1Zl9hZGRmKCZidWYsICJicmFuY2guJXMucmVtb3RlIiwgaXRlbS0+c3RyaW5nKTsKKwkJCWlmIChnaXRfY29uZmlnX3NldChidWYuYnVmLCByZW5hbWUubmV3KSkgeworCQkJCXJldHVybiBlcnJvcigiQ291bGQgbm90IHNldCAnJXMnIiwgYnVmLmJ1Zik7CisJCQl9CisJCX0KKwl9CisKKwkvKgorCSAqIEZpcnN0IHJlbW92ZSBzeW1yZWZzLCB0aGVuIHJlbmFtZSB0aGUgcmVzdCwgZmluYWxseSBjcmVhdGUKKwkgKiB0aGUgbmV3IHN5bXJlZnMuCisJICovCisJZm9yX2VhY2hfcmVmKHJlYWRfcmVtb3RlX2JyYW5jaGVzLCAmcmVuYW1lKTsKKwlmb3IgKGkgPSAwOyBpIDwgcmVtb3RlX2JyYW5jaGVzLm5yOyBpKyspIHsKKwkJc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKml0ZW0gPSByZW1vdGVfYnJhbmNoZXMuaXRlbXMgKyBpOworCQlpbnQgZmxhZyA9IDA7CisJCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CisJCWNvbnN0IGNoYXIgKnN5bXJlZjsKKworCQlzeW1yZWYgPSByZXNvbHZlX3JlZihpdGVtLT5zdHJpbmcsIHNoYTEsIDEsICZmbGFnKTsKKwkJaWYgKCEoZmxhZyAmIFJFRl9JU1NZTVJFRikpCisJCQljb250aW51ZTsKKwkJaWYgKGRlbGV0ZV9yZWYoaXRlbS0+c3RyaW5nLCBOVUxMLCBSRUZfTk9ERVJFRikpCisJCQlkaWUoImRlbGV0aW5nICclcycgZmFpbGVkIiwgaXRlbS0+c3RyaW5nKTsKKwl9CisJZm9yIChpID0gMDsgaSA8IHJlbW90ZV9icmFuY2hlcy5ucjsgaSsrKSB7CisJCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdGVtID0gcmVtb3RlX2JyYW5jaGVzLml0ZW1zICsgaTsKKworCQlpZiAoaXRlbS0+dXRpbCkKKwkJCWNvbnRpbnVlOworCQlzdHJidWZfcmVzZXQoJmJ1Zik7CisJCXN0cmJ1Zl9hZGRzdHIoJmJ1ZiwgaXRlbS0+c3RyaW5nKTsKKwkJc3RyYnVmX3NwbGljZSgmYnVmLCBzdHJsZW4oInJlZnMvcmVtb3Rlcy8iKSwgc3RybGVuKHJlbmFtZS5vbGQpLAorCQkJCXJlbmFtZS5uZXcsIHN0cmxlbihyZW5hbWUubmV3KSk7CisJCXN0cmJ1Zl9yZXNldCgmYnVmMik7CisJCXN0cmJ1Zl9hZGRmKCZidWYyLCAicmVtb3RlOiByZW5hbWVkICVzIHRvICVzIiwKKwkJCQlpdGVtLT5zdHJpbmcsIGJ1Zi5idWYpOworCQlpZiAocmVuYW1lX3JlZihpdGVtLT5zdHJpbmcsIGJ1Zi5idWYsIGJ1ZjIuYnVmKSkKKwkJCWRpZSgicmVuYW1pbmcgJyVzJyBmYWlsZWQiLCBpdGVtLT5zdHJpbmcpOworCX0KKwlmb3IgKGkgPSAwOyBpIDwgcmVtb3RlX2JyYW5jaGVzLm5yOyBpKyspIHsKKwkJc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKml0ZW0gPSByZW1vdGVfYnJhbmNoZXMuaXRlbXMgKyBpOworCisJCWlmICghaXRlbS0+dXRpbCkKKwkJCWNvbnRpbnVlOworCQlzdHJidWZfcmVzZXQoJmJ1Zik7CisJCXN0cmJ1Zl9hZGRzdHIoJmJ1ZiwgaXRlbS0+c3RyaW5nKTsKKwkJc3RyYnVmX3NwbGljZSgmYnVmLCBzdHJsZW4oInJlZnMvcmVtb3Rlcy8iKSwgc3RybGVuKHJlbmFtZS5vbGQpLAorCQkJCXJlbmFtZS5uZXcsIHN0cmxlbihyZW5hbWUubmV3KSk7CisJCXN0cmJ1Zl9yZXNldCgmYnVmMik7CisJCXN0cmJ1Zl9hZGRzdHIoJmJ1ZjIsIGl0ZW0tPnV0aWwpOworCQlzdHJidWZfc3BsaWNlKCZidWYyLCBzdHJsZW4oInJlZnMvcmVtb3Rlcy8iKSwgc3RybGVuKHJlbmFtZS5vbGQpLAorCQkJCXJlbmFtZS5uZXcsIHN0cmxlbihyZW5hbWUubmV3KSk7CisJCXN0cmJ1Zl9yZXNldCgmYnVmMyk7CisJCXN0cmJ1Zl9hZGRmKCZidWYzLCAicmVtb3RlOiByZW5hbWVkICVzIHRvICVzIiwKKwkJCQlpdGVtLT5zdHJpbmcsIGJ1Zi5idWYpOworCQlpZiAoY3JlYXRlX3N5bXJlZihidWYuYnVmLCBidWYyLmJ1ZiwgYnVmMy5idWYpKQorCQkJZGllKCJjcmVhdGluZyAnJXMnIGZhaWxlZCIsIGJ1Zi5idWYpOworCX0KKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGludCByZW1vdmVfYnJhbmNoZXMoc3RydWN0IHN0cmluZ19saXN0ICpicmFuY2hlcykKIHsKIAlpbnQgaSwgcmVzdWx0ID0gMDsKQEAgLTM1MiwxMSArNTQ5LDE0IEBACiAJCU9QVF9FTkQoKQogCX07CiAJc3RydWN0IHJlbW90ZSAqcmVtb3RlOwotCXN0cnVjdCBzdHJidWYgYnVmOworCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAJc3RydWN0IGtub3duX3JlbW90ZXMga25vd25fcmVtb3RlcyA9IHsgTlVMTCwgTlVMTCB9OwogCXN0cnVjdCBzdHJpbmdfbGlzdCBicmFuY2hlcyA9IHsgTlVMTCwgMCwgMCwgMSB9OwotCXN0cnVjdCBicmFuY2hlc19mb3JfcmVtb3RlIGNiX2RhdGEgPSB7IE5VTEwsICZicmFuY2hlcywgJmtub3duX3JlbW90ZXMgfTsKLQlpbnQgaTsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3Qgc2tpcHBlZCA9IHsgTlVMTCwgMCwgMCwgMSB9OworCXN0cnVjdCBicmFuY2hlc19mb3JfcmVtb3RlIGNiX2RhdGEgPSB7CisJCU5VTEwsICZicmFuY2hlcywgJnNraXBwZWQsICZrbm93bl9yZW1vdGVzCisJfTsKKwlpbnQgaSwgcmVzdWx0OwogCiAJaWYgKGFyZ2MgIT0gMikKIAkJdXNhZ2Vfd2l0aF9vcHRpb25zKGJ1aWx0aW5fcmVtb3RlX3VzYWdlLCBvcHRpb25zKTsKQEAgLTM2OCw3ICs1NjgsNiBAQAogCWtub3duX3JlbW90ZXMudG9fZGVsZXRlID0gcmVtb3RlOwogCWZvcl9lYWNoX3JlbW90ZShhZGRfa25vd25fcmVtb3RlLCAma25vd25fcmVtb3Rlcyk7CiAKLQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKIAlzdHJidWZfYWRkZigmYnVmLCAicmVtb3RlLiVzIiwgcmVtb3RlLT5uYW1lKTsKIAlpZiAoZ2l0X2NvbmZpZ19yZW5hbWVfc2VjdGlvbihidWYuYnVmLCBOVUxMKSA8IDEpCiAJCXJldHVybiBlcnJvcigiQ291bGQgbm90IHJlbW92ZSBjb25maWcgc2VjdGlvbiAnJXMnIiwgYnVmLmJ1Zik7CkBAIC0zOTcsMTQgKzU5NiwyNiBAQAogCSAqIHJlZnMsIHdoaWNoIGFyZSBpbnZhbGlkYXRlZCB3aGVuIGRlbGV0aW5nIGEgYnJhbmNoLgogCSAqLwogCWNiX2RhdGEucmVtb3RlID0gcmVtb3RlOwotCWkgPSBmb3JfZWFjaF9yZWYoYWRkX2JyYW5jaF9mb3JfcmVtb3ZhbCwgJmNiX2RhdGEpOworCXJlc3VsdCA9IGZvcl9lYWNoX3JlZihhZGRfYnJhbmNoX2Zvcl9yZW1vdmFsLCAmY2JfZGF0YSk7CiAJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CiAKLQlpZiAoIWkpCi0JCWkgPSByZW1vdmVfYnJhbmNoZXMoJmJyYW5jaGVzKTsKKwlpZiAoIXJlc3VsdCkKKwkJcmVzdWx0ID0gcmVtb3ZlX2JyYW5jaGVzKCZicmFuY2hlcyk7CiAJc3RyaW5nX2xpc3RfY2xlYXIoJmJyYW5jaGVzLCAxKTsKIAotCXJldHVybiBpOworCWlmIChza2lwcGVkLm5yKSB7CisJCWZwcmludGYoc3RkZXJyLCBza2lwcGVkLm5yID09IDEgPworCQkJIk5vdGU6IEEgbm9uLXJlbW90ZSBicmFuY2ggd2FzIG5vdCByZW1vdmVkOyAiCisJCQkidG8gZGVsZXRlIGl0LCB1c2U6XG4iIDoKKwkJCSJOb3RlOiBOb24tcmVtb3RlIGJyYW5jaGVzIHdlcmUgbm90IHJlbW92ZWQ7ICIKKwkJCSJ0byBkZWxldGUgdGhlbSwgdXNlOlxuIik7CisJCWZvciAoaSA9IDA7IGkgPCBza2lwcGVkLm5yOyBpKyspCisJCQlmcHJpbnRmKHN0ZGVyciwgIiAgZ2l0IGJyYW5jaCAtZCAlc1xuIiwKKwkJCQlza2lwcGVkLml0ZW1zW2ldLnN0cmluZyk7CisJfQorCXN0cmluZ19saXN0X2NsZWFyKCZza2lwcGVkLCAwKTsKKworCXJldHVybiByZXN1bHQ7CiB9CiAKIHN0YXRpYyB2b2lkIHNob3dfbGlzdChjb25zdCBjaGFyICp0aXRsZSwgc3RydWN0IHN0cmluZ19saXN0ICpsaXN0LApAQCAtNDE2LDEwICs2MjcsOSBAQAogCQlyZXR1cm47CiAKIAlwcmludGYodGl0bGUsIGxpc3QtPm5yID4gMSA/ICJlcyIgOiAiIiwgZXh0cmFfYXJnKTsKLQlwcmludGYoIlxuICAgICIpOwotCWZvciAoaSA9IDA7IGkgPCBsaXN0LT5ucjsgaSsrKQotCQlwcmludGYoIiVzJXMiLCBpID8gIiAiIDogIiIsIGxpc3QtPml0ZW1zW2ldLnN0cmluZyk7CiAJcHJpbnRmKCJcbiIpOworCWZvciAoaSA9IDA7IGkgPCBsaXN0LT5ucjsgaSsrKQorCQlwcmludGYoIiAgICAlc1xuIiwgbGlzdC0+aXRlbXNbaV0uc3RyaW5nKTsKIH0KIAogc3RhdGljIGludCBnZXRfcmVtb3RlX3JlZl9zdGF0ZXMoY29uc3QgY2hhciAqbmFtZSwKQEAgLTUxNSwxNyArNzI1LDE3IEBACiAJCXNob3dfbGlzdCgiICBUcmFja2VkIHJlbW90ZSBicmFuY2glcyIsICZzdGF0ZXMudHJhY2tlZCwgIiIpOwogCiAJCWlmIChzdGF0ZXMucmVtb3RlLT5wdXNoX3JlZnNwZWNfbnIpIHsKLQkJCXByaW50ZigiICBMb2NhbCBicmFuY2glcyBwdXNoZWQgd2l0aCAnZ2l0IHB1c2gnXG4gICAiLAorCQkJcHJpbnRmKCIgIExvY2FsIGJyYW5jaCVzIHB1c2hlZCB3aXRoICdnaXQgcHVzaCdcbiIsCiAJCQkJc3RhdGVzLnJlbW90ZS0+cHVzaF9yZWZzcGVjX25yID4gMSA/CiAJCQkJCSJlcyIgOiAiIik7CiAJCQlmb3IgKGkgPSAwOyBpIDwgc3RhdGVzLnJlbW90ZS0+cHVzaF9yZWZzcGVjX25yOyBpKyspIHsKIAkJCQlzdHJ1Y3QgcmVmc3BlYyAqc3BlYyA9IHN0YXRlcy5yZW1vdGUtPnB1c2ggKyBpOwotCQkJCXByaW50ZigiICVzJXMlcyVzIiwgc3BlYy0+Zm9yY2UgPyAiKyIgOiAiIiwKKwkJCQlwcmludGYoIiAgICAlcyVzJXMlc1xuIiwKKwkJCQkgICAgICAgc3BlYy0+Zm9yY2UgPyAiKyIgOiAiIiwKIAkJCQkgICAgICAgYWJicmV2X2JyYW5jaChzcGVjLT5zcmMpLAogCQkJCSAgICAgICBzcGVjLT5kc3QgPyAiOiIgOiAiIiwKIAkJCQkgICAgICAgc3BlYy0+ZHN0ID8gYWJicmV2X2JyYW5jaChzcGVjLT5kc3QpIDogIiIpOwogCQkJfQotCQkJcHJpbnRmKCJcbiIpOwogCQl9CiAKIAkJLyogTkVFRFNXT1JLOiBmcmVlIHJlbW90ZSAqLwpAQCAtNTg5LDcgKzc5OSw3IEBACiB7CiAJc3RydWN0IHN0cmluZ19saXN0ICpsaXN0ID0gcHJpdjsKIAlpZiAoIXJlbW90ZS0+c2tpcF9kZWZhdWx0X3VwZGF0ZSkKLQkJc3RyaW5nX2xpc3RfYXBwZW5kKHhzdHJkdXAocmVtb3RlLT5uYW1lKSwgbGlzdCk7CisJCXN0cmluZ19saXN0X2FwcGVuZChyZW1vdGUtPm5hbWUsIGxpc3QpOwogCXJldHVybiAwOwogfQogCkBAIC03MDAsNiArOTEwLDggQEAKIAkJcmVzdWx0ID0gc2hvd19hbGwoKTsKIAllbHNlIGlmICghc3RyY21wKGFyZ3ZbMF0sICJhZGQiKSkKIAkJcmVzdWx0ID0gYWRkKGFyZ2MsIGFyZ3YpOworCWVsc2UgaWYgKCFzdHJjbXAoYXJndlswXSwgInJlbmFtZSIpKQorCQlyZXN1bHQgPSBtdihhcmdjLCBhcmd2KTsKIAllbHNlIGlmICghc3RyY21wKGFyZ3ZbMF0sICJybSIpKQogCQlyZXN1bHQgPSBybShhcmdjLCBhcmd2KTsKIAllbHNlIGlmICghc3RyY21wKGFyZ3ZbMF0sICJzaG93IikpCmRpZmYgLS1naXQgYS9idWlsdGluLXJlcmVyZS5jIGIvYnVpbHRpbi1yZXJlcmUuYwppbmRleCBkZDQ1NzNmLi5kNGRlYzZiIDEwMDY0NAotLS0gYS9idWlsdGluLXJlcmVyZS5jCisrKyBiL2J1aWx0aW4tcmVyZXJlLmMKQEAgLTk4LDYgKzk4LDcgQEAKIAogCXByaW50ZigiLS0tIGEvJXNcbisrKyBiLyVzXG4iLCBsYWJlbDEsIGxhYmVsMik7CiAJZmZsdXNoKHN0ZG91dCk7CisJbWVtc2V0KCZ4cHAsIDAsIHNpemVvZih4cHApKTsKIAl4cHAuZmxhZ3MgPSBYREZfTkVFRF9NSU5JTUFMOwogCW1lbXNldCgmeGVjZmcsIDAsIHNpemVvZih4ZWNmZykpOwogCXhlY2ZnLmN0eGxlbiA9IDM7CmRpZmYgLS1naXQgYS9idWlsdGluLXJldi1saXN0LmMgYi9idWlsdGluLXJldi1saXN0LmMKaW5kZXggZmFjYWZmMi4uNDM2YWZhNCAxMDA2NDQKLS0tIGEvYnVpbHRpbi1yZXYtbGlzdC5jCisrKyBiL2J1aWx0aW4tcmV2LWxpc3QuYwpAQCAtMTAwLDE1ICsxMDAsMTQgQEAKIAkJCWNoaWxkcmVuID0gY2hpbGRyZW4tPm5leHQ7CiAJCX0KIAl9Ci0Jc2hvd19kZWNvcmF0aW9ucyhjb21taXQpOworCXNob3dfZGVjb3JhdGlvbnMoJnJldnMsIGNvbW1pdCk7CiAJaWYgKHJldnMuY29tbWl0X2Zvcm1hdCA9PSBDTUlUX0ZNVF9PTkVMSU5FKQogCQlwdXRjaGFyKCcgJyk7CiAJZWxzZQogCQlwdXRjaGFyKCdcbicpOwogCiAJaWYgKHJldnMudmVyYm9zZV9oZWFkZXIgJiYgY29tbWl0LT5idWZmZXIpIHsKLQkJc3RydWN0IHN0cmJ1ZiBidWY7Ci0JCXN0cmJ1Zl9pbml0KCZidWYsIDApOworCQlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCQlwcmV0dHlfcHJpbnRfY29tbWl0KHJldnMuY29tbWl0X2Zvcm1hdCwgY29tbWl0LAogCQkJCSAgICAmYnVmLCByZXZzLmFiYnJldiwgTlVMTCwgTlVMTCwKIAkJCQkgICAgcmV2cy5kYXRlX21vZGUsIDApOwpAQCAtNjA5LDYgKzYwOCw3IEBACiAJCWlmICghc3RyY21wKGFyZywgIi0tYmlzZWN0LWFsbCIpKSB7CiAJCQliaXNlY3RfbGlzdCA9IDE7CiAJCQliaXNlY3RfZmluZF9hbGwgPSAxOworCQkJcmV2cy5zaG93X2RlY29yYXRpb25zID0gMTsKIAkJCWNvbnRpbnVlOwogCQl9CiAJCWlmICghc3RyY21wKGFyZywgIi0tYmlzZWN0LXZhcnMiKSkgewpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1yZXYtcGFyc2UuYyBiL2J1aWx0aW4tcmV2LXBhcnNlLmMKaW5kZXggOWFhMDQ5ZS4uODFkNWE2ZiAxMDA2NDQKLS0tIGEvYnVpbHRpbi1yZXYtcGFyc2UuYworKysgYi9idWlsdGluLXJldi1wYXJzZS5jCkBAIC0zMDcsMTkgKzMwNywxNyBAQAogCQlPUFRfRU5EKCksCiAJfTsKIAotCXN0cnVjdCBzdHJidWYgc2IsIHBhcnNlZDsKKwlzdHJ1Y3Qgc3RyYnVmIHNiID0gU1RSQlVGX0lOSVQsIHBhcnNlZCA9IFNUUkJVRl9JTklUOwogCWNvbnN0IGNoYXIgKip1c2FnZSA9IE5VTEw7CiAJc3RydWN0IG9wdGlvbiAqb3B0cyA9IE5VTEw7CiAJaW50IG9uYiA9IDAsIG9zeiA9IDAsIHVuYiA9IDAsIHVzeiA9IDA7CiAKLQlzdHJidWZfaW5pdCgmcGFyc2VkLCAwKTsKIAlzdHJidWZfYWRkc3RyKCZwYXJzZWQsICJzZXQgLS0iKTsKIAlhcmdjID0gcGFyc2Vfb3B0aW9ucyhhcmdjLCBhcmd2LCBwYXJzZW9wdF9vcHRzLCBwYXJzZW9wdF91c2FnZSwKIAkgICAgICAgICAgICAgICAgICAgICBQQVJTRV9PUFRfS0VFUF9EQVNIREFTSCk7CiAJaWYgKGFyZ2MgPCAxIHx8IHN0cmNtcChhcmd2WzBdLCAiLS0iKSkKIAkJdXNhZ2Vfd2l0aF9vcHRpb25zKHBhcnNlb3B0X3VzYWdlLCBwYXJzZW9wdF9vcHRzKTsKIAotCXN0cmJ1Zl9pbml0KCZzYiwgMCk7CiAJLyogZ2V0IHRoZSB1c2FnZSB1cCB0byB0aGUgZmlyc3QgbGluZSB3aXRoIGEgLS0gb24gaXQgKi8KIAlmb3IgKDs7KSB7CiAJCWlmIChzdHJidWZfZ2V0bGluZSgmc2IsIHN0ZGluLCAnXG4nKSA9PSBFT0YpCmRpZmYgLS1naXQgYS9idWlsdGluLXJldmVydC5jIGIvYnVpbHRpbi1yZXZlcnQuYwppbmRleCA3NDg0NWVmLi4wOWQwOGZhIDEwMDY0NAotLS0gYS9idWlsdGluLXJldmVydC5jCisrKyBiL2J1aWx0aW4tcmV2ZXJ0LmMKQEAgLTExLDYgKzExLDggQEAKICNpbmNsdWRlICJjYWNoZS10cmVlLmgiCiAjaW5jbHVkZSAiZGlmZi5oIgogI2luY2x1ZGUgInJldmlzaW9uLmgiCisjaW5jbHVkZSAicmVyZXJlLmgiCisjaW5jbHVkZSAibWVyZ2UtcmVjdXJzaXZlLmgiCiAKIC8qCiAgKiBUaGlzIGltcGxlbWVudHMgdGhlIGJ1aWx0aW5zIHJldmVydCBhbmQgY2hlcnJ5LXBpY2suCkBAIC0yMDAsMzYgKzIwMiw2IEBACiAJCQlzaGExX3RvX2hleChjb21taXQtPm9iamVjdC5zaGExKSk7CiB9CiAKLXN0YXRpYyBpbnQgbWVyZ2VfcmVjdXJzaXZlKGNvbnN0IGNoYXIgKmJhc2Vfc2hhMSwKLQkJY29uc3QgY2hhciAqaGVhZF9zaGExLCBjb25zdCBjaGFyICpoZWFkX25hbWUsCi0JCWNvbnN0IGNoYXIgKm5leHRfc2hhMSwgY29uc3QgY2hhciAqbmV4dF9uYW1lKQotewotCWNoYXIgYnVmZmVyWzI1Nl07Ci0JY29uc3QgY2hhciAqYXJndls2XTsKLQlpbnQgaSA9IDA7Ci0KLQlzcHJpbnRmKGJ1ZmZlciwgIkdJVEhFQURfJXMiLCBoZWFkX3NoYTEpOwotCXNldGVudihidWZmZXIsIGhlYWRfbmFtZSwgMSk7Ci0Jc3ByaW50ZihidWZmZXIsICJHSVRIRUFEXyVzIiwgbmV4dF9zaGExKTsKLQlzZXRlbnYoYnVmZmVyLCBuZXh0X25hbWUsIDEpOwotCi0JLyoKLQkgKiBUaGlzIHRocmVlIHdheSBtZXJnZSBpcyBhbiBpbnRlcmVzdGluZyBvbmUuICBXZSBhcmUgYXQKLQkgKiAkaGVhZCwgYW5kIHdvdWxkIHdhbnQgdG8gYXBwbHkgdGhlIGNoYW5nZSBiZXR3ZWVuICRjb21taXQKLQkgKiBhbmQgJHByZXYgb24gdG9wIG9mIHVzICh3aGVuIHJldmVydGluZyksIG9yIHRoZSBjaGFuZ2UgYmV0d2VlbgotCSAqICRwcmV2IGFuZCAkY29tbWl0IG9uIHRvcCBvZiB1cyAod2hlbiBjaGVycnktcGlja2luZyBvciByZXBsYXlpbmcpLgotCSAqLwotCWFyZ3ZbaSsrXSA9ICJtZXJnZS1yZWN1cnNpdmUiOwotCWlmIChiYXNlX3NoYTEpCi0JCWFyZ3ZbaSsrXSA9IGJhc2Vfc2hhMTsKLQlhcmd2W2krK10gPSAiLS0iOwotCWFyZ3ZbaSsrXSA9IGhlYWRfc2hhMTsKLQlhcmd2W2krK10gPSBuZXh0X3NoYTE7Ci0JYXJndltpKytdID0gTlVMTDsKLQotCXJldHVybiBydW5fY29tbWFuZF92X29wdChhcmd2LCBSVU5fQ09NTUFORF9OT19TVERJTiB8IFJVTl9HSVRfQ01EKTsKLX0KLQogc3RhdGljIGNoYXIgKmhlbHBfbXNnKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEpCiB7CiAJc3RhdGljIGNoYXIgaGVscGJ1ZlsxMDI0XTsKQEAgLTI2MiwxNCArMjM0LDI3IEBACiAJcmV0dXJuICEhRElGRl9PUFRfVFNUKCZyZXYuZGlmZm9wdCwgSEFTX0NIQU5HRVMpOwogfQogCitzdGF0aWMgc3RydWN0IHRyZWUgKmVtcHR5X3RyZWUodm9pZCkKK3sKKwlzdHJ1Y3QgdHJlZSAqdHJlZSA9IHhjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCB0cmVlKSk7CisKKwl0cmVlLT5vYmplY3QucGFyc2VkID0gMTsKKwl0cmVlLT5vYmplY3QudHlwZSA9IE9CSl9UUkVFOworCXByZXRlbmRfc2hhMV9maWxlKE5VTEwsIDAsIE9CSl9UUkVFLCB0cmVlLT5vYmplY3Quc2hhMSk7CisJcmV0dXJuIHRyZWU7Cit9CisKIHN0YXRpYyBpbnQgcmV2ZXJ0X29yX2NoZXJyeV9waWNrKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKIHsKIAl1bnNpZ25lZCBjaGFyIGhlYWRbMjBdOwogCXN0cnVjdCBjb21taXQgKmJhc2UsICpuZXh0LCAqcGFyZW50OwotCWludCBpOworCWludCBpLCBpbmRleF9mZCwgY2xlYW47CiAJY2hhciAqb25lbGluZSwgKnJlZW5jb2RlZF9tZXNzYWdlID0gTlVMTDsKIAljb25zdCBjaGFyICptZXNzYWdlLCAqZW5jb2Rpbmc7CiAJY2hhciAqZGVmbXNnID0gZ2l0X3BhdGhkdXAoIk1FUkdFX01TRyIpOworCXN0cnVjdCBtZXJnZV9vcHRpb25zIG87CisJc3RydWN0IHRyZWUgKnJlc3VsdCwgKm5leHRfdHJlZSwgKmJhc2VfdHJlZSwgKmhlYWRfdHJlZTsKKwlzdGF0aWMgc3RydWN0IGxvY2tfZmlsZSBpbmRleF9sb2NrOwogCiAJZ2l0X2NvbmZpZyhnaXRfZGVmYXVsdF9jb25maWcsIE5VTEwpOwogCW1lID0gYWN0aW9uID09IFJFVkVSVCA/ICJyZXZlcnQiIDogImNoZXJyeS1waWNrIjsKQEAgLTI4MCw2ICsyNjUsOCBAQAogCWlmIChhY3Rpb24gPT0gUkVWRVJUICYmICFub19yZXBsYXkpCiAJCWRpZSgicmV2ZXJ0IGlzIGluY29tcGF0aWJsZSB3aXRoIHJlcGxheSIpOwogCisJaWYgKHJlYWRfY2FjaGUoKSA8IDApCisJCWRpZSgiZ2l0ICVzOiBmYWlsZWQgdG8gcmVhZCB0aGUgaW5kZXgiLCBtZSk7CiAJaWYgKG5vX2NvbW1pdCkgewogCQkvKgogCQkgKiBXZSBkbyBub3QgaW50ZW5kIHRvIGNvbW1pdCBpbW1lZGlhdGVseS4gIFdlIGp1c3Qgd2FudCB0bwpAQCAtMjkyLDEyICsyNzksMTIgQEAKIAl9IGVsc2UgewogCQlpZiAoZ2V0X3NoYTEoIkhFQUQiLCBoZWFkKSkKIAkJCWRpZSAoIllvdSBkbyBub3QgaGF2ZSBhIHZhbGlkIEhFQUQiKTsKLQkJaWYgKHJlYWRfY2FjaGUoKSA8IDApCi0JCQlkaWUoImNvdWxkIG5vdCByZWFkIHRoZSBpbmRleCIpOwogCQlpZiAoaW5kZXhfaXNfZGlydHkoKSkKIAkJCWRpZSAoIkRpcnR5IGluZGV4OiBjYW5ub3QgJXMiLCBtZSk7Ci0JCWRpc2NhcmRfY2FjaGUoKTsKIAl9CisJZGlzY2FyZF9jYWNoZSgpOworCisJaW5kZXhfZmQgPSBob2xkX2xvY2tlZF9pbmRleCgmaW5kZXhfbG9jaywgMSk7CiAKIAlpZiAoIWNvbW1pdC0+cGFyZW50cykgewogCQlpZiAoYWN0aW9uID09IFJFVkVSVCkKQEAgLTMzMSw2ICszMTgsMTAgQEAKIAkJZGllICgiQ2Fubm90IGdldCBjb21taXQgbWVzc2FnZSBmb3IgJXMiLAogCQkJCXNoYTFfdG9faGV4KGNvbW1pdC0+b2JqZWN0LnNoYTEpKTsKIAorCWlmIChwYXJlbnQgJiYgcGFyc2VfY29tbWl0KHBhcmVudCkgPCAwKQorCQlkaWUoIiVzOiBjYW5ub3QgcGFyc2UgcGFyZW50IGNvbW1pdCAlcyIsCisJCSAgICBtZSwgc2hhMV90b19oZXgocGFyZW50LT5vYmplY3Quc2hhMSkpOworCiAJLyoKIAkgKiAiY29tbWl0IiBpcyBhbiBleGlzdGluZyBjb21taXQuICBXZSB3b3VsZCB3YW50IHRvIGFwcGx5CiAJICogdGhlIGRpZmZlcmVuY2UgaXQgaW50cm9kdWNlcyBzaW5jZSBpdHMgZmlyc3QgcGFyZW50ICJwcmV2IgpAQCAtMzYxLDYgKzM1MiwxMSBAQAogCQlhZGRfdG9fbXNnKG9uZWxpbmVfYm9keSArIDEpOwogCQlhZGRfdG9fbXNnKCJcIlxuXG5UaGlzIHJldmVydHMgY29tbWl0ICIpOwogCQlhZGRfdG9fbXNnKHNoYTFfdG9faGV4KGNvbW1pdC0+b2JqZWN0LnNoYTEpKTsKKworCQlpZiAoY29tbWl0LT5wYXJlbnRzLT5uZXh0KSB7CisJCQlhZGRfdG9fbXNnKCIsIHJldmVyc2luZ1xuY2hhbmdlcyBtYWRlIHRvICIpOworCQkJYWRkX3RvX21zZyhzaGExX3RvX2hleChwYXJlbnQtPm9iamVjdC5zaGExKSk7CisJCX0KIAkJYWRkX3RvX21zZygiLlxuIik7CiAJfSBlbHNlIHsKIAkJYmFzZSA9IHBhcmVudDsKQEAgLTM3NCwxMyArMzcwLDI3IEBACiAJCX0KIAl9CiAKLQlpZiAobWVyZ2VfcmVjdXJzaXZlKGJhc2UgPT0gTlVMTCA/Ci0JCQkJTlVMTCA6IHNoYTFfdG9faGV4KGJhc2UtPm9iamVjdC5zaGExKSwKLQkJCQlzaGExX3RvX2hleChoZWFkKSwgIkhFQUQiLAotCQkJCXNoYTFfdG9faGV4KG5leHQtPm9iamVjdC5zaGExKSwgb25lbGluZSkgfHwKLQkJCXdyaXRlX2NhY2hlX2FzX3RyZWUoaGVhZCwgMCwgTlVMTCkpIHsKKwlyZWFkX2NhY2hlKCk7CisJaW5pdF9tZXJnZV9vcHRpb25zKCZvKTsKKwlvLmJyYW5jaDEgPSAiSEVBRCI7CisJby5icmFuY2gyID0gb25lbGluZTsKKworCWhlYWRfdHJlZSA9IHBhcnNlX3RyZWVfaW5kaXJlY3QoaGVhZCk7CisJbmV4dF90cmVlID0gbmV4dCA/IG5leHQtPnRyZWUgOiBlbXB0eV90cmVlKCk7CisJYmFzZV90cmVlID0gYmFzZSA/IGJhc2UtPnRyZWUgOiBlbXB0eV90cmVlKCk7CisKKwljbGVhbiA9IG1lcmdlX3RyZWVzKCZvLAorCQkJICAgIGhlYWRfdHJlZSwKKwkJCSAgICBuZXh0X3RyZWUsIGJhc2VfdHJlZSwgJnJlc3VsdCk7CisKKwlpZiAoYWN0aXZlX2NhY2hlX2NoYW5nZWQgJiYKKwkgICAgKHdyaXRlX2NhY2hlKGluZGV4X2ZkLCBhY3RpdmVfY2FjaGUsIGFjdGl2ZV9ucikgfHwKKwkgICAgIGNvbW1pdF9sb2NrZWRfaW5kZXgoJmluZGV4X2xvY2spKSkKKwkJZGllKCIlczogVW5hYmxlIHRvIHdyaXRlIG5ldyBpbmRleCBmaWxlIiwgbWUpOworCXJvbGxiYWNrX2xvY2tfZmlsZSgmaW5kZXhfbG9jayk7CisKKwlpZiAoIWNsZWFuKSB7CiAJCWFkZF90b19tc2coIlxuQ29uZmxpY3RzOlxuXG4iKTsKLQkJcmVhZF9jYWNoZSgpOwogCQlmb3IgKGkgPSAwOyBpIDwgYWN0aXZlX25yOykgewogCQkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGFjdGl2ZV9jYWNoZVtpKytdOwogCQkJaWYgKGNlX3N0YWdlKGNlKSkgewpAQCAtMzk2LDYgKzQwNiw3IEBACiAJCQlkaWUgKCJFcnJvciB3cmFwcGluZyB1cCAlcyIsIGRlZm1zZyk7CiAJCWZwcmludGYoc3RkZXJyLCAiQXV0b21hdGljICVzIGZhaWxlZC4lc1xuIiwKIAkJCW1lLCBoZWxwX21zZyhjb21taXQtPm9iamVjdC5zaGExKSk7CisJCXJlcmVyZSgpOwogCQlleGl0KDEpOwogCX0KIAlpZiAoY29tbWl0X2xvY2tfZmlsZSgmbXNnX2ZpbGUpIDwgMCkKZGlmZiAtLWdpdCBhL2J1aWx0aW4tcm0uYyBiL2J1aWx0aW4tcm0uYwppbmRleCBlMDY2NDBjLi5jMTFmNDU1IDEwMDY0NAotLS0gYS9idWlsdGluLXJtLmMKKysrIGIvYnVpbHRpbi1ybS5jCkBAIC0zMSw3ICszMSw4IEBACiAKIHN0YXRpYyBpbnQgY2hlY2tfbG9jYWxfbW9kKHVuc2lnbmVkIGNoYXIgKmhlYWQsIGludCBpbmRleF9vbmx5KQogewotCS8qIGl0ZW1zIGluIGxpc3QgYXJlIGFscmVhZHkgc29ydGVkIGluIHRoZSBjYWNoZSBvcmRlciwKKwkvKgorCSAqIEl0ZW1zIGluIGxpc3QgYXJlIGFscmVhZHkgc29ydGVkIGluIHRoZSBjYWNoZSBvcmRlciwKIAkgKiBzbyB3ZSBjb3VsZCBkbyB0aGlzIGEgbG90IG1vcmUgZWZmaWNpZW50bHkgYnkgdXNpbmcKIAkgKiB0cmVlX2Rlc2MgYmFzZWQgdHJhdmVyc2FsIGlmIHdlIHdhbnRlZCB0bywgYnV0IEkgYW0KIAkgKiBsYXp5LCBhbmQgd2hvIGNhcmVzIGlmIHJlbW92YWwgb2YgZmlsZXMgaXMgYSB0YWQKQEAgLTcxLDI0ICs3Miw1NSBAQAogCQkJICovCiAJCQljb250aW51ZTsKIAkJfQorCisJCS8qCisJCSAqICJybSIgb2YgYSBwYXRoIHRoYXQgaGFzIGNoYW5nZXMgbmVlZCB0byBiZSB0cmVhdGVkCisJCSAqIGNhcmVmdWxseSBub3QgdG8gYWxsb3cgbG9zaW5nIGxvY2FsIGNoYW5nZXMKKwkJICogYWNjaWRlbnRhbGx5LiAgQSBsb2NhbCBjaGFuZ2UgY291bGQgYmUgKDEpIGZpbGUgaW4KKwkJICogd29yayB0cmVlIGlzIGRpZmZlcmVudCBzaW5jZSB0aGUgaW5kZXg7IGFuZC9vciAoMikKKwkJICogdGhlIHVzZXIgc3RhZ2VkIGEgY29udGVudCB0aGF0IGlzIGRpZmZlcmVudCBmcm9tCisJCSAqIHRoZSBjdXJyZW50IGNvbW1pdCBpbiB0aGUgaW5kZXguCisJCSAqCisJCSAqIEluIHN1Y2ggYSBjYXNlLCB5b3Ugd291bGQgbmVlZCB0byAtLWZvcmNlIHRoZQorCQkgKiByZW1vdmFsLiAgSG93ZXZlciwgInJtIC0tY2FjaGVkIiAocmVtb3ZlIG9ubHkgZnJvbQorCQkgKiB0aGUgaW5kZXgpIGlzIHNhZmUgaWYgdGhlIGluZGV4IG1hdGNoZXMgdGhlIGZpbGUgaW4KKwkJICogdGhlIHdvcmsgdHJlZSBvciB0aGUgSEVBRCBjb21taXQsIGFzIGl0IG1lYW5zIHRoYXQKKwkJICogdGhlIGNvbnRlbnQgYmVpbmcgcmVtb3ZlZCBpcyBhdmFpbGFibGUgZWxzZXdoZXJlLgorCQkgKi8KKworCQkvKgorCQkgKiBJcyB0aGUgaW5kZXggZGlmZmVyZW50IGZyb20gdGhlIGZpbGUgaW4gdGhlIHdvcmsgdHJlZT8KKwkJICovCiAJCWlmIChjZV9tYXRjaF9zdGF0KGNlLCAmc3QsIDApKQogCQkJbG9jYWxfY2hhbmdlcyA9IDE7CisKKwkJLyoKKwkJICogSXMgdGhlIGluZGV4IGRpZmZlcmVudCBmcm9tIHRoZSBIRUFEIGNvbW1pdD8gIEJ5CisJCSAqIGRlZmluaXRpb24sIGJlZm9yZSB0aGUgdmVyeSBpbml0aWFsIGNvbW1pdCwKKwkJICogYW55dGhpbmcgc3RhZ2VkIGluIHRoZSBpbmRleCBpcyB0cmVhdGVkIGJ5IHRoZSBzYW1lCisJCSAqIHdheSBhcyBjaGFuZ2VkIGZyb20gdGhlIEhFQUQuCisJCSAqLwogCQlpZiAobm9faGVhZAogCQkgICAgIHx8IGdldF90cmVlX2VudHJ5KGhlYWQsIG5hbWUsIHNoYTEsICZtb2RlKQogCQkgICAgIHx8IGNlLT5jZV9tb2RlICE9IGNyZWF0ZV9jZV9tb2RlKG1vZGUpCiAJCSAgICAgfHwgaGFzaGNtcChjZS0+c2hhMSwgc2hhMSkpCiAJCQlzdGFnZWRfY2hhbmdlcyA9IDE7CiAKLQkJaWYgKGxvY2FsX2NoYW5nZXMgJiYgc3RhZ2VkX2NoYW5nZXMpCi0JCQllcnJzID0gZXJyb3IoIiclcycgaGFzIHN0YWdlZCBjb250ZW50IGRpZmZlcmVudCAiCi0JCQkJICAgICAiZnJvbSBib3RoIHRoZSBmaWxlIGFuZCB0aGUgSEVBRFxuIgotCQkJCSAgICAgIih1c2UgLWYgdG8gZm9yY2UgcmVtb3ZhbCkiLCBuYW1lKTsKKwkJLyoKKwkJICogSWYgdGhlIGluZGV4IGRvZXMgbm90IG1hdGNoIHRoZSBmaWxlIGluIHRoZSB3b3JrCisJCSAqIHRyZWUgYW5kIGlmIGl0IGRvZXMgbm90IG1hdGNoIHRoZSBIRUFEIGNvbW1pdAorCQkgKiBlaXRoZXIsICgxKSAiZ2l0IHJtIiB3aXRob3V0IC0tY2FjaGVkIGRlZmluaXRlbHkKKwkJICogd2lsbCBsb3NlIGluZm9ybWF0aW9uOyAoMikgImdpdCBybSAtLWNhY2hlZCIgd2lsbAorCQkgKiBsb3NlIGluZm9ybWF0aW9uIHVubGVzcyBpdCBpcyBhYm91dCByZW1vdmluZyBhbgorCQkgKiAiaW50ZW50IHRvIGFkZCIgZW50cnkuCisJCSAqLworCQlpZiAobG9jYWxfY2hhbmdlcyAmJiBzdGFnZWRfY2hhbmdlcykgeworCQkJaWYgKCFpbmRleF9vbmx5IHx8ICEoY2UtPmNlX2ZsYWdzICYgQ0VfSU5URU5UX1RPX0FERCkpCisJCQkJZXJycyA9IGVycm9yKCInJXMnIGhhcyBzdGFnZWQgY29udGVudCBkaWZmZXJlbnQgIgorCQkJCQkgICAgICJmcm9tIGJvdGggdGhlIGZpbGUgYW5kIHRoZSBIRUFEXG4iCisJCQkJCSAgICAgIih1c2UgLWYgdG8gZm9yY2UgcmVtb3ZhbCkiLCBuYW1lKTsKKwkJfQogCQllbHNlIGlmICghaW5kZXhfb25seSkgewotCQkJLyogSXQncyBub3QgZGFuZ2Vyb3VzIHRvICJnaXQgcm0gLS1jYWNoZWQiIGEKLQkJCSAqIGZpbGUgaWYgdGhlIGluZGV4IG1hdGNoZXMgdGhlIGZpbGUgb3IgdGhlCi0JCQkgKiBIRUFELCBzaW5jZSBpdCBtZWFucyB0aGUgZGVsZXRlZCBjb250ZW50IGlzCi0JCQkgKiBzdGlsbCBhdmFpbGFibGUgc29tZXdoZXJlLgotCQkJICovCiAJCQlpZiAoc3RhZ2VkX2NoYW5nZXMpCiAJCQkJZXJycyA9IGVycm9yKCInJXMnIGhhcyBjaGFuZ2VzIHN0YWdlZCBpbiB0aGUgaW5kZXhcbiIKIAkJCQkJICAgICAiKHVzZSAtLWNhY2hlZCB0byBrZWVwIHRoZSBmaWxlLCAiCmRpZmYgLS1naXQgYS9idWlsdGluLXNlbmQtcGFjay5jIGIvYnVpbHRpbi1zZW5kLXBhY2suYwppbmRleCBlNDI4ZWFjLi5kNjVkMDE5IDEwMDY0NAotLS0gYS9idWlsdGluLXNlbmQtcGFjay5jCisrKyBiL2J1aWx0aW4tc2VuZC1wYWNrLmMKQEAgLTE1LDEwICsxNSwyNCBAQAogCS8qIC5yZWNlaXZlcGFjayA9ICovICJnaXQtcmVjZWl2ZS1wYWNrIiwKIH07CiAKK3N0YXRpYyBpbnQgZmVlZF9vYmplY3QoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgaW50IGZkLCBpbnQgbmVnYXRpdmUpCit7CisJY2hhciBidWZbNDJdOworCisJaWYgKG5lZ2F0aXZlICYmICFoYXNfc2hhMV9maWxlKHNoYTEpKQorCQlyZXR1cm4gMTsKKworCW1lbWNweShidWYgKyBuZWdhdGl2ZSwgc2hhMV90b19oZXgoc2hhMSksIDQwKTsKKwlpZiAobmVnYXRpdmUpCisJCWJ1ZlswXSA9ICdeJzsKKwlidWZbNDAgKyBuZWdhdGl2ZV0gPSAnXG4nOworCXJldHVybiB3cml0ZV9vcl93aGluZShmZCwgYnVmLCA0MSArIG5lZ2F0aXZlLCAic2VuZC1wYWNrOiBzZW5kIHJlZnMiKTsKK30KKwogLyoKICAqIE1ha2UgYSBwYWNrIHN0cmVhbSBhbmQgc3BpdCBpdCBvdXQgaW50byBmaWxlIGRlc2NyaXB0b3IgZmQKICAqLwotc3RhdGljIGludCBwYWNrX29iamVjdHMoaW50IGZkLCBzdHJ1Y3QgcmVmICpyZWZzKQorc3RhdGljIGludCBwYWNrX29iamVjdHMoaW50IGZkLCBzdHJ1Y3QgcmVmICpyZWZzLCBzdHJ1Y3QgZXh0cmFfaGF2ZV9vYmplY3RzICpleHRyYSkKIHsKIAkvKgogCSAqIFRoZSBjaGlsZCBiZWNvbWVzIHBhY2stb2JqZWN0cyAtLXJldnM7IHdlIGZlZWQKQEAgLTM0LDYgKzQ4LDcgQEAKIAkJTlVMTCwKIAl9OwogCXN0cnVjdCBjaGlsZF9wcm9jZXNzIHBvOworCWludCBpOwogCiAJaWYgKGFyZ3MudXNlX3RoaW5fcGFjaykKIAkJYXJndls0XSA9ICItLXRoaW4iOwpAQCAtNDksMjUgKzY0LDE3IEBACiAJICogV2UgZmVlZCB0aGUgcGFjay1vYmplY3RzIHdlIGp1c3Qgc3Bhd25lZCB3aXRoIHJldmlzaW9uCiAJICogcGFyYW1ldGVycyBieSB3cml0aW5nIHRvIHRoZSBwaXBlLgogCSAqLwotCXdoaWxlIChyZWZzKSB7Ci0JCWNoYXIgYnVmWzQyXTsKKwlmb3IgKGkgPSAwOyBpIDwgZXh0cmEtPm5yOyBpKyspCisJCWlmICghZmVlZF9vYmplY3QoZXh0cmEtPmFycmF5W2ldLCBwby5pbiwgMSkpCisJCQlicmVhazsKIAorCXdoaWxlIChyZWZzKSB7CiAJCWlmICghaXNfbnVsbF9zaGExKHJlZnMtPm9sZF9zaGExKSAmJgotCQkgICAgaGFzX3NoYTFfZmlsZShyZWZzLT5vbGRfc2hhMSkpIHsKLQkJCW1lbWNweShidWYgKyAxLCBzaGExX3RvX2hleChyZWZzLT5vbGRfc2hhMSksIDQwKTsKLQkJCWJ1ZlswXSA9ICdeJzsKLQkJCWJ1Zls0MV0gPSAnXG4nOwotCQkJaWYgKCF3cml0ZV9vcl93aGluZShwby5pbiwgYnVmLCA0MiwKLQkJCQkJCSJzZW5kLXBhY2s6IHNlbmQgcmVmcyIpKQotCQkJCWJyZWFrOwotCQl9Ci0JCWlmICghaXNfbnVsbF9zaGExKHJlZnMtPm5ld19zaGExKSkgewotCQkJbWVtY3B5KGJ1Ziwgc2hhMV90b19oZXgocmVmcy0+bmV3X3NoYTEpLCA0MCk7Ci0JCQlidWZbNDBdID0gJ1xuJzsKLQkJCWlmICghd3JpdGVfb3Jfd2hpbmUocG8uaW4sIGJ1ZiwgNDEsCi0JCQkJCQkic2VuZC1wYWNrOiBzZW5kIHJlZnMiKSkKLQkJCQlicmVhazsKLQkJfQorCQkgICAgIWZlZWRfb2JqZWN0KHJlZnMtPm9sZF9zaGExLCBwby5pbiwgMSkpCisJCQlicmVhazsKKwkJaWYgKCFpc19udWxsX3NoYTEocmVmcy0+bmV3X3NoYTEpICYmCisJCSAgICAhZmVlZF9vYmplY3QocmVmcy0+bmV3X3NoYTEsIHBvLmluLCAwKSkKKwkJCWJyZWFrOwogCQlyZWZzID0gcmVmcy0+bmV4dDsKIAl9CiAKQEAgLTM4NywxNCArMzk0LDE3IEBACiAJaW50IGV4cGVjdF9zdGF0dXNfcmVwb3J0ID0gMDsKIAlpbnQgZmxhZ3MgPSBNQVRDSF9SRUZTX05PTkU7CiAJaW50IHJldDsKKwlzdHJ1Y3QgZXh0cmFfaGF2ZV9vYmplY3RzIGV4dHJhX2hhdmU7CiAKKwltZW1zZXQoJmV4dHJhX2hhdmUsIDAsIHNpemVvZihleHRyYV9oYXZlKSk7CiAJaWYgKGFyZ3Muc2VuZF9hbGwpCiAJCWZsYWdzIHw9IE1BVENIX1JFRlNfQUxMOwogCWlmIChhcmdzLnNlbmRfbWlycm9yKQogCQlmbGFncyB8PSBNQVRDSF9SRUZTX01JUlJPUjsKIAogCS8qIE5vIGZ1bm55IGJ1c2luZXNzIHdpdGggdGhlIG1hdGNoZXIgKi8KLQlyZW1vdGVfdGFpbCA9IGdldF9yZW1vdGVfaGVhZHMoaW4sICZyZW1vdGVfcmVmcywgMCwgTlVMTCwgUkVGX05PUk1BTCk7CisJcmVtb3RlX3RhaWwgPSBnZXRfcmVtb3RlX2hlYWRzKGluLCAmcmVtb3RlX3JlZnMsIDAsIE5VTEwsIFJFRl9OT1JNQUwsCisJCQkJICAgICAgICZleHRyYV9oYXZlKTsKIAlnZXRfbG9jYWxfaGVhZHMoKTsKIAogCS8qIERvZXMgdGhlIG90aGVyIGVuZCBzdXBwb3J0IHRoZSByZXBvcnRpbmc/ICovCkBAIC00OTYsNyArNTA2LDcgQEAKIAogCXBhY2tldF9mbHVzaChvdXQpOwogCWlmIChuZXdfcmVmcyAmJiAhYXJncy5kcnlfcnVuKSB7Ci0JCWlmIChwYWNrX29iamVjdHMob3V0LCByZW1vdGVfcmVmcykgPCAwKQorCQlpZiAocGFja19vYmplY3RzKG91dCwgcmVtb3RlX3JlZnMsICZleHRyYV9oYXZlKSA8IDApCiAJCQlyZXR1cm4gLTE7CiAJfQogCWVsc2UKZGlmZiAtLWdpdCBhL2J1aWx0aW4tc2hvcnRsb2cuYyBiL2J1aWx0aW4tc2hvcnRsb2cuYwppbmRleCBkMDNmMTRmLi5lNDkyOTA2IDEwMDY0NAotLS0gYS9idWlsdGluLXNob3J0bG9nLmMKKysrIGIvYnVpbHRpbi1zaG9ydGxvZy5jCkBAIC0yOSw2ICsyOSw5IEBACiAJCXJldHVybiAtMTsKIH0KIAorY29uc3QgY2hhciAqZm9ybWF0X3N1YmplY3Qoc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IGNoYXIgKm1zZywKKwkJCSAgIGNvbnN0IGNoYXIgKmxpbmVfc2VwYXJhdG9yKTsKKwogc3RhdGljIHZvaWQgaW5zZXJ0X29uZV9yZWNvcmQoc3RydWN0IHNob3J0bG9nICpsb2csCiAJCQkgICAgICBjb25zdCBjaGFyICphdXRob3IsCiAJCQkgICAgICBjb25zdCBjaGFyICpvbmVsaW5lKQpAQCAtNDEsNiArNDQsNyBAQAogCXNpemVfdCBsZW47CiAJY29uc3QgY2hhciAqZW9sOwogCWNvbnN0IGNoYXIgKmJvZW1haWwsICplb2VtYWlsOworCXN0cnVjdCBzdHJidWYgc3ViamVjdCA9IFNUUkJVRl9JTklUOwogCiAJYm9lbWFpbCA9IHN0cmNocihhdXRob3IsICc8Jyk7CiAJaWYgKCFib2VtYWlsKQpAQCAtODksOSArOTMsOCBAQAogCXdoaWxlICgqb25lbGluZSAmJiBpc3NwYWNlKCpvbmVsaW5lKSAmJiAqb25lbGluZSAhPSAnXG4nKQogCQlvbmVsaW5lKys7CiAJbGVuID0gZW9sIC0gb25lbGluZTsKLQl3aGlsZSAobGVuICYmIGlzc3BhY2Uob25lbGluZVtsZW4tMV0pKQotCQlsZW4tLTsKLQlidWZmZXIgPSB4bWVtZHVweihvbmVsaW5lLCBsZW4pOworCWZvcm1hdF9zdWJqZWN0KCZzdWJqZWN0LCBvbmVsaW5lLCAiICIpOworCWJ1ZmZlciA9IHN0cmJ1Zl9kZXRhY2goJnN1YmplY3QsIE5VTEwpOwogCiAJaWYgKGRvdDMpIHsKIAkJaW50IGRvdDNsZW4gPSBzdHJsZW4oZG90Myk7CmRpZmYgLS1naXQgYS9idWlsdGluLXNob3ctYnJhbmNoLmMgYi9idWlsdGluLXNob3ctYnJhbmNoLmMKaW5kZXggMjMzZWVkNC4uMzA2Yjg1MCAxMDA2NDQKLS0tIGEvYnVpbHRpbi1zaG93LWJyYW5jaC5jCisrKyBiL2J1aWx0aW4tc2hvdy1icmFuY2guYwpAQCAtMjU5LDExICsyNTksMTAgQEAKIAogc3RhdGljIHZvaWQgc2hvd19vbmVfY29tbWl0KHN0cnVjdCBjb21taXQgKmNvbW1pdCwgaW50IG5vX25hbWUpCiB7Ci0Jc3RydWN0IHN0cmJ1ZiBwcmV0dHk7CisJc3RydWN0IHN0cmJ1ZiBwcmV0dHkgPSBTVFJCVUZfSU5JVDsKIAljb25zdCBjaGFyICpwcmV0dHlfc3RyID0gIih1bmF2YWlsYWJsZSkiOwogCXN0cnVjdCBjb21taXRfbmFtZSAqbmFtZSA9IGNvbW1pdC0+dXRpbDsKIAotCXN0cmJ1Zl9pbml0KCZwcmV0dHksIDApOwogCWlmIChjb21taXQtPm9iamVjdC5wYXJzZWQpIHsKIAkJcHJldHR5X3ByaW50X2NvbW1pdChDTUlUX0ZNVF9PTkVMSU5FLCBjb21taXQsCiAJCQkJICAgICZwcmV0dHksIDAsIE5VTEwsIE5VTEwsIDAsIDApOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1zdHJpcHNwYWNlLmMgYi9idWlsdGluLXN0cmlwc3BhY2UuYwppbmRleCBjMGIyMTMwLi5kNmUzODk2IDEwMDY0NAotLS0gYS9idWlsdGluLXN0cmlwc3BhY2UuYworKysgYi9idWlsdGluLXN0cmlwc3BhY2UuYwpAQCAtNzAsMTQgKzcwLDEzIEBACiAKIGludCBjbWRfc3RyaXBzcGFjZShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKIHsKLQlzdHJ1Y3Qgc3RyYnVmIGJ1ZjsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCWludCBzdHJpcF9jb21tZW50cyA9IDA7CiAKIAlpZiAoYXJnYyA+IDEgJiYgKCFzdHJjbXAoYXJndlsxXSwgIi1zIikgfHwKIAkJCQkhc3RyY21wKGFyZ3ZbMV0sICItLXN0cmlwLWNvbW1lbnRzIikpKQogCQlzdHJpcF9jb21tZW50cyA9IDE7CiAKLQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKIAlpZiAoc3RyYnVmX3JlYWQoJmJ1ZiwgMCwgMTAyNCkgPCAwKQogCQlkaWUoImNvdWxkIG5vdCByZWFkIHRoZSBpbnB1dCIpOwogCmRpZmYgLS1naXQgYS9idWlsdGluLXRhZy5jIGIvYnVpbHRpbi10YWcuYwppbmRleCAyY2RlZmIxLi5hMzk4NDk5IDEwMDY0NAotLS0gYS9idWlsdGluLXRhZy5jCisrKyBiL2J1aWx0aW4tdGFnLmMKQEAgLTM1MCw3ICszNTAsNyBAQAogCiBpbnQgY21kX3RhZyhpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKIHsKLQlzdHJ1Y3Qgc3RyYnVmIGJ1ZjsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCXVuc2lnbmVkIGNoYXIgb2JqZWN0WzIwXSwgcHJldlsyMF07CiAJY2hhciByZWZbUEFUSF9NQVhdOwogCWNvbnN0IGNoYXIgKm9iamVjdF9yZWYsICp0YWc7CkBAIC00MTAsNyArNDEwLDYgQEAKIAlpZiAodmVyaWZ5KQogCQlyZXR1cm4gZm9yX2VhY2hfdGFnX25hbWUoYXJndiwgdmVyaWZ5X3RhZyk7CiAKLQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKIAlpZiAobXNnLmdpdmVuIHx8IG1zZ2ZpbGUpIHsKIAkJaWYgKG1zZy5naXZlbiAmJiBtc2dmaWxlKQogCQkJZGllKCJvbmx5IG9uZSAtRiBvciAtbSBvcHRpb24gaXMgYWxsb3dlZC4iKTsKZGlmZiAtLWdpdCBhL2J1aWx0aW4tdW5wYWNrLW9iamVjdHMuYyBiL2J1aWx0aW4tdW5wYWNrLW9iamVjdHMuYwppbmRleCA0MGIyMGYyLi45YTc3MzIzIDEwMDY0NAotLS0gYS9idWlsdGluLXVucGFjay1vYmplY3RzLmMKKysrIGIvYnVpbHRpbi11bnBhY2stb2JqZWN0cy5jCkBAIC0xOSw3ICsxOSw3IEBACiBzdGF0aWMgdW5zaWduZWQgY2hhciBidWZmZXJbNDA5Nl07CiBzdGF0aWMgdW5zaWduZWQgaW50IG9mZnNldCwgbGVuOwogc3RhdGljIG9mZl90IGNvbnN1bWVkX2J5dGVzOwotc3RhdGljIFNIQV9DVFggY3R4Oworc3RhdGljIGdpdF9TSEFfQ1RYIGN0eDsKIAogLyoKICAqIFdoZW4gcnVubmluZyB1bmRlciAtLXN0cmljdCBtb2RlLCBvYmplY3RzIHdob3NlIHJlYWNoYWJpbGl0eSBhcmUKQEAgLTU5LDcgKzU5LDcgQEAKIAlpZiAobWluID4gc2l6ZW9mKGJ1ZmZlcikpCiAJCWRpZSgiY2Fubm90IGZpbGwgJWQgYnl0ZXMiLCBtaW4pOwogCWlmIChvZmZzZXQpIHsKLQkJU0hBMV9VcGRhdGUoJmN0eCwgYnVmZmVyLCBvZmZzZXQpOworCQlnaXRfU0hBMV9VcGRhdGUoJmN0eCwgYnVmZmVyLCBvZmZzZXQpOwogCQltZW1tb3ZlKGJ1ZmZlciwgYnVmZmVyICsgb2Zmc2V0LCBsZW4pOwogCQlvZmZzZXQgPSAwOwogCX0KQEAgLTk5LDEwICs5OSwxMCBAQAogCXN0cmVhbS5hdmFpbF9vdXQgPSBzaXplOwogCXN0cmVhbS5uZXh0X2luID0gZmlsbCgxKTsKIAlzdHJlYW0uYXZhaWxfaW4gPSBsZW47Ci0JaW5mbGF0ZUluaXQoJnN0cmVhbSk7CisJZ2l0X2luZmxhdGVfaW5pdCgmc3RyZWFtKTsKIAogCWZvciAoOzspIHsKLQkJaW50IHJldCA9IGluZmxhdGUoJnN0cmVhbSwgMCk7CisJCWludCByZXQgPSBnaXRfaW5mbGF0ZSgmc3RyZWFtLCAwKTsKIAkJdXNlKGxlbiAtIHN0cmVhbS5hdmFpbF9pbik7CiAJCWlmIChzdHJlYW0udG90YWxfb3V0ID09IHNpemUgJiYgcmV0ID09IFpfU1RSRUFNX0VORCkKIAkJCWJyZWFrOwpAQCAtMTE4LDcgKzExOCw3IEBACiAJCXN0cmVhbS5uZXh0X2luID0gZmlsbCgxKTsKIAkJc3RyZWFtLmF2YWlsX2luID0gbGVuOwogCX0KLQlpbmZsYXRlRW5kKCZzdHJlYW0pOworCWdpdF9pbmZsYXRlX2VuZCgmc3RyZWFtKTsKIAlyZXR1cm4gYnVmOwogfQogCkBAIC0zNzAsNiArMzcwLDggQEAKIAkJCWJhc2Vfb2Zmc2V0ID0gKGJhc2Vfb2Zmc2V0IDw8IDcpICsgKGMgJiAxMjcpOwogCQl9CiAJCWJhc2Vfb2Zmc2V0ID0gb2JqX2xpc3RbbnJdLm9mZnNldCAtIGJhc2Vfb2Zmc2V0OworCQlpZiAoYmFzZV9vZmZzZXQgPD0gMCB8fCBiYXNlX29mZnNldCA+PSBvYmpfbGlzdFtucl0ub2Zmc2V0KQorCQkJZGllKCJvZmZzZXQgdmFsdWUgb3V0IG9mIGJvdW5kIGZvciBkZWx0YSBiYXNlIG9iamVjdCIpOwogCiAJCWRlbHRhX2RhdGEgPSBnZXRfZGF0YShkZWx0YV9zaXplKTsKIAkJaWYgKGRyeV9ydW4gfHwgIWRlbHRhX2RhdGEpIHsKQEAgLTQ3Nyw4ICs0NzksNyBAQAogCiAJaWYgKCFxdWlldCkKIAkJcHJvZ3Jlc3MgPSBzdGFydF9wcm9ncmVzcygiVW5wYWNraW5nIG9iamVjdHMiLCBucl9vYmplY3RzKTsKLQlvYmpfbGlzdCA9IHhtYWxsb2MobnJfb2JqZWN0cyAqIHNpemVvZigqb2JqX2xpc3QpKTsKLQltZW1zZXQob2JqX2xpc3QsIDAsIG5yX29iamVjdHMgKiBzaXplb2YoKm9ial9saXN0KSk7CisJb2JqX2xpc3QgPSB4Y2FsbG9jKG5yX29iamVjdHMsIHNpemVvZigqb2JqX2xpc3QpKTsKIAlmb3IgKGkgPSAwOyBpIDwgbnJfb2JqZWN0czsgaSsrKSB7CiAJCXVucGFja19vbmUoaSk7CiAJCWRpc3BsYXlfcHJvZ3Jlc3MocHJvZ3Jlc3MsIGkgKyAxKTsKQEAgLTUzOSwxMCArNTQwLDEwIEBACiAJCS8qIFdlIGRvbid0IHRha2UgYW55IG5vbi1mbGFnIGFyZ3VtZW50cyBub3cuLiBNYXliZSBzb21lIGRheSAqLwogCQl1c2FnZSh1bnBhY2tfdXNhZ2UpOwogCX0KLQlTSEExX0luaXQoJmN0eCk7CisJZ2l0X1NIQTFfSW5pdCgmY3R4KTsKIAl1bnBhY2tfYWxsKCk7Ci0JU0hBMV9VcGRhdGUoJmN0eCwgYnVmZmVyLCBvZmZzZXQpOwotCVNIQTFfRmluYWwoc2hhMSwgJmN0eCk7CisJZ2l0X1NIQTFfVXBkYXRlKCZjdHgsIGJ1ZmZlciwgb2Zmc2V0KTsKKwlnaXRfU0hBMV9GaW5hbChzaGExLCAmY3R4KTsKIAlpZiAoc3RyaWN0KQogCQl3cml0ZV9yZXN0KCk7CiAJaWYgKGhhc2hjbXAoZmlsbCgyMCksIHNoYTEpKQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi11cGRhdGUtaW5kZXguYyBiL2J1aWx0aW4tdXBkYXRlLWluZGV4LmMKaW5kZXggOWQxOWM1MS4uZGFjYTBmNyAxMDA2NDQKLS0tIGEvYnVpbHRpbi11cGRhdGUtaW5kZXguYworKysgYi9idWlsdGluLXVwZGF0ZS1pbmRleC5jCkBAIC0xOTQsNiArMTk0LDEwIEBACiAJaW50IGxlbjsKIAlzdHJ1Y3Qgc3RhdCBzdDsKIAorCWxlbiA9IHN0cmxlbihwYXRoKTsKKwlpZiAoaGFzX3N5bWxpbmtfbGVhZGluZ19wYXRoKGxlbiwgcGF0aCkpCisJCXJldHVybiBlcnJvcigiJyVzJyBpcyBiZXlvbmQgYSBzeW1ib2xpYyBsaW5rIiwgcGF0aCk7CisKIAkvKgogCSAqIEZpcnN0IHRoaW5ncyBmaXJzdDogZ2V0IHRoZSBzdGF0IGluZm9ybWF0aW9uLCB0byBkZWNpZGUKIAkgKiB3aGF0IHRvIGRvIGFib3V0IHRoZSBwYXRobmFtZSEKQEAgLTIwMSw3ICsyMDUsNiBAQAogCWlmIChsc3RhdChwYXRoLCAmc3QpIDwgMCkKIAkJcmV0dXJuIHByb2Nlc3NfbHN0YXRfZXJyb3IocGF0aCwgZXJybm8pOwogCi0JbGVuID0gc3RybGVuKHBhdGgpOwogCWlmIChTX0lTRElSKHN0LnN0X21vZGUpKQogCQlyZXR1cm4gcHJvY2Vzc19kaXJlY3RvcnkocGF0aCwgbGVuLCAmc3QpOwogCkBAIC0yMTUsNyArMjE4LDcgQEAKIAlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlOwogCiAJaWYgKCF2ZXJpZnlfcGF0aChwYXRoKSkKLQkJcmV0dXJuIC0xOworCQlyZXR1cm4gZXJyb3IoIkludmFsaWQgcGF0aCAnJXMnIiwgcGF0aCk7CiAKIAlsZW4gPSBzdHJsZW4ocGF0aCk7CiAJc2l6ZSA9IGNhY2hlX2VudHJ5X3NpemUobGVuKTsKQEAgLTI5NCwxMSArMjk3LDkgQEAKIAogc3RhdGljIHZvaWQgcmVhZF9pbmRleF9pbmZvKGludCBsaW5lX3Rlcm1pbmF0aW9uKQogewotCXN0cnVjdCBzdHJidWYgYnVmOwotCXN0cnVjdCBzdHJidWYgdXE7CisJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKKwlzdHJ1Y3Qgc3RyYnVmIHVxID0gU1RSQlVGX0lOSVQ7CiAKLQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKLQlzdHJidWZfaW5pdCgmdXEsIDApOwogCXdoaWxlIChzdHJidWZfZ2V0bGluZSgmYnVmLCBzdGRpbiwgbGluZV90ZXJtaW5hdGlvbikgIT0gRU9GKSB7CiAJCWNoYXIgKnB0ciwgKnRhYjsKIAkJY2hhciAqcGF0aF9uYW1lOwpAQCAtNzE0LDEwICs3MTUsOCBAQAogCQkJZnJlZSgoY2hhciopcCk7CiAJfQogCWlmIChyZWFkX2Zyb21fc3RkaW4pIHsKLQkJc3RydWN0IHN0cmJ1ZiBidWYsIG5idWY7CisJCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQsIG5idWYgPSBTVFJCVUZfSU5JVDsKIAotCQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKLQkJc3RyYnVmX2luaXQoJm5idWYsIDApOwogCQlzZXR1cF93b3JrX3RyZWUoKTsKIAkJd2hpbGUgKHN0cmJ1Zl9nZXRsaW5lKCZidWYsIHN0ZGluLCBsaW5lX3Rlcm1pbmF0aW9uKSAhPSBFT0YpIHsKIAkJCWNvbnN0IGNoYXIgKnA7CkBAIC03NDMsOCArNzQyLDcgQEAKIAkJaWYgKG5ld2ZkIDwgMCkgewogCQkJaWYgKHJlZnJlc2hfZmxhZ3MgJiBSRUZSRVNIX1FVSUVUKQogCQkJCWV4aXQoMTI4KTsKLQkJCWRpZSgidW5hYmxlIHRvIGNyZWF0ZSAnJXMubG9jayc6ICVzIiwKLQkJCSAgICBnZXRfaW5kZXhfZmlsZSgpLCBzdHJlcnJvcihsb2NrX2Vycm9yKSk7CisJCQl1bmFibGVfdG9fbG9ja19pbmRleF9kaWUoZ2V0X2luZGV4X2ZpbGUoKSwgbG9ja19lcnJvcik7CiAJCX0KIAkJaWYgKHdyaXRlX2NhY2hlKG5ld2ZkLCBhY3RpdmVfY2FjaGUsIGFjdGl2ZV9ucikgfHwKIAkJICAgIGNvbW1pdF9sb2NrZWRfaW5kZXgobG9ja19maWxlKSkKZGlmZiAtLWdpdCBhL2J1aWx0aW4td3JpdGUtdHJlZS5jIGIvYnVpbHRpbi13cml0ZS10cmVlLmMKaW5kZXggNTJhM2MwMS4uOWQ2NDA1MCAxMDA2NDQKLS0tIGEvYnVpbHRpbi13cml0ZS10cmVlLmMKKysrIGIvYnVpbHRpbi13cml0ZS10cmVlLmMKQEAgLTQyLDcgKzQyLDcgQEAKIAkJZGllKCIlczogZXJyb3IgcmVhZGluZyB0aGUgaW5kZXgiLCBtZSk7CiAJCWJyZWFrOwogCWNhc2UgV1JJVEVfVFJFRV9VTk1FUkdFRF9JTkRFWDoKLQkJZGllKCIlczogZXJyb3IgYnVpbGRpbmcgdHJlZXM7IHRoZSBpbmRleCBpcyB1bm1lcmdlZD8iLCBtZSk7CisJCWRpZSgiJXM6IGVycm9yIGJ1aWxkaW5nIHRyZWVzIiwgbWUpOwogCQlicmVhazsKIAljYXNlIFdSSVRFX1RSRUVfUFJFRklYX0VSUk9SOgogCQlkaWUoIiVzOiBwcmVmaXggJXMgbm90IGZvdW5kIiwgbWUsIHByZWZpeCk7CmRpZmYgLS1naXQgYS9idWlsdGluLmggYi9idWlsdGluLmgKaW5kZXggZjM1MDJkMy4uMTQ5NWNmNiAxMDA2NDQKLS0tIGEvYnVpbHRpbi5oCisrKyBiL2J1aWx0aW4uaApAQCAtMTEsMTMgKzExLDE0IEBACiBleHRlcm4gY29uc3QgY2hhciBnaXRfbW9yZV9pbmZvX3N0cmluZ1tdOwogCiBleHRlcm4gdm9pZCBsaXN0X2NvbW1vbl9jbWRzX2hlbHAodm9pZCk7Ci1leHRlcm4gdm9pZCBoZWxwX3Vua25vd25fY21kKGNvbnN0IGNoYXIgKmNtZCk7CitleHRlcm4gY29uc3QgY2hhciAqaGVscF91bmtub3duX2NtZChjb25zdCBjaGFyICpjbWQpOwogZXh0ZXJuIHZvaWQgcHJ1bmVfcGFja2VkX29iamVjdHMoaW50KTsKIGV4dGVybiBpbnQgcmVhZF9saW5lX3dpdGhfbnVsKGNoYXIgKmJ1ZiwgaW50IHNpemUsIEZJTEUgKmZpbGUpOwogZXh0ZXJuIGludCBmbXRfbWVyZ2VfbXNnKGludCBtZXJnZV9zdW1tYXJ5LCBzdHJ1Y3Qgc3RyYnVmICppbiwKIAlzdHJ1Y3Qgc3RyYnVmICpvdXQpOwogZXh0ZXJuIGludCBjb21taXRfdHJlZShjb25zdCBjaGFyICptc2csIHVuc2lnbmVkIGNoYXIgKnRyZWUsCi0JCXN0cnVjdCBjb21taXRfbGlzdCAqcGFyZW50cywgdW5zaWduZWQgY2hhciAqcmV0KTsKKwkJc3RydWN0IGNvbW1pdF9saXN0ICpwYXJlbnRzLCB1bnNpZ25lZCBjaGFyICpyZXQsCisJCWNvbnN0IGNoYXIgKmF1dGhvcik7CiBleHRlcm4gaW50IGNoZWNrX3BhZ2VyX2NvbmZpZyhjb25zdCBjaGFyICpjbWQpOwogCiBleHRlcm4gaW50IGNtZF9hZGQoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOwpAQCAtNzgsNiArNzksNyBAQAogZXh0ZXJuIGludCBjbWRfcHJ1bmVfcGFja2VkKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KTsKIGV4dGVybiBpbnQgY21kX3B1c2goaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOwogZXh0ZXJuIGludCBjbWRfcmVhZF90cmVlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KTsKK2V4dGVybiBpbnQgY21kX3JlY2VpdmVfcGFjayhpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCk7CiBleHRlcm4gaW50IGNtZF9yZWZsb2coaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOwogZXh0ZXJuIGludCBjbWRfcmVtb3RlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KTsKIGV4dGVybiBpbnQgY21kX2NvbmZpZyhpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCk7CmRpZmYgLS1naXQgYS9idW5kbGUuYyBiL2J1bmRsZS5jCmluZGV4IGRhZWNkOGUuLmIyMGYyMTAgMTAwNjQ0Ci0tLSBhL2J1bmRsZS5jCisrKyBiL2J1bmRsZS5jCkBAIC0yNDAsNiArMjQwLDggQEAKIAkJcmV0dXJuIGVycm9yKCJ1bnJlY29nbml6ZWQgYXJndW1lbnQ6ICVzJyIsIGFyZ3ZbaV0pOwogCX0KIAorCW9iamVjdF9hcnJheV9yZW1vdmVfZHVwbGljYXRlcygmcmV2cy5wZW5kaW5nKTsKKwogCWZvciAoaSA9IDA7IGkgPCByZXZzLnBlbmRpbmcubnI7IGkrKykgewogCQlzdHJ1Y3Qgb2JqZWN0X2FycmF5X2VudHJ5ICplID0gcmV2cy5wZW5kaW5nLm9iamVjdHMgKyBpOwogCQl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwpkaWZmIC0tZ2l0IGEvY2FjaGUtdHJlZS5jIGIvY2FjaGUtdHJlZS5jCmluZGV4IDVmOGVlODcuLjNkOGYyMTggMTAwNjQ0Ci0tLSBhL2NhY2hlLXRyZWUuYworKysgYi9jYWNoZS10cmVlLmMKQEAgLTE1NSwxMyArMTU1LDE3IEBACiAJZnVubnkgPSAwOwogCWZvciAoaSA9IDA7IGkgPCBlbnRyaWVzOyBpKyspIHsKIAkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGNhY2hlW2ldOwotCQlpZiAoY2Vfc3RhZ2UoY2UpKSB7CisJCWlmIChjZV9zdGFnZShjZSkgfHwgKGNlLT5jZV9mbGFncyAmIENFX0lOVEVOVF9UT19BREQpKSB7CiAJCQlpZiAoMTAgPCArK2Z1bm55KSB7CiAJCQkJZnByaW50ZihzdGRlcnIsICIuLi5cbiIpOwogCQkJCWJyZWFrOwogCQkJfQotCQkJZnByaW50ZihzdGRlcnIsICIlczogdW5tZXJnZWQgKCVzKVxuIiwKLQkJCQljZS0+bmFtZSwgc2hhMV90b19oZXgoY2UtPnNoYTEpKTsKKwkJCWlmIChjZV9zdGFnZShjZSkpCisJCQkJZnByaW50ZihzdGRlcnIsICIlczogdW5tZXJnZWQgKCVzKVxuIiwKKwkJCQkJY2UtPm5hbWUsIHNoYTFfdG9faGV4KGNlLT5zaGExKSk7CisJCQllbHNlCisJCQkJZnByaW50ZihzdGRlcnIsICIlczogbm90IGFkZGVkIHlldFxuIiwKKwkJCQkJY2UtPm5hbWUpOwogCQl9CiAJfQogCWlmIChmdW5ueSkKZGlmZiAtLWdpdCBhL2NhY2hlLmggYi9jYWNoZS5oCmluZGV4IDA5OWEzMmUuLjBlMmYyMTkgMTAwNjQ0Ci0tLSBhL2NhY2hlLmgKKysrIGIvY2FjaGUuaApAQCAtNiwxMiArNiwyMiBAQAogI2luY2x1ZGUgImhhc2guaCIKIAogI2luY2x1ZGUgU0hBMV9IRUFERVIKLSNpbmNsdWRlIDx6bGliLmg+CisjaWZuZGVmIGdpdF9TSEFfQ1RYCisjZGVmaW5lIGdpdF9TSEFfQ1RYCVNIQV9DVFgKKyNkZWZpbmUgZ2l0X1NIQTFfSW5pdAlTSEExX0luaXQKKyNkZWZpbmUgZ2l0X1NIQTFfVXBkYXRlCVNIQTFfVXBkYXRlCisjZGVmaW5lIGdpdF9TSEExX0ZpbmFsCVNIQTFfRmluYWwKKyNlbmRpZgogCisjaW5jbHVkZSA8emxpYi5oPgogI2lmIGRlZmluZWQoTk9fREVGTEFURV9CT1VORCkgfHwgWkxJQl9WRVJOVU0gPCAweDEyMDAKICNkZWZpbmUgZGVmbGF0ZUJvdW5kKGMscykgICgocykgKyAoKChzKSArIDcpID4+IDMpICsgKCgocykgKyA2MykgPj4gNikgKyAxMSkKICNlbmRpZgogCit2b2lkIGdpdF9pbmZsYXRlX2luaXQoel9zdHJlYW1wIHN0cm0pOwordm9pZCBnaXRfaW5mbGF0ZV9lbmQoel9zdHJlYW1wIHN0cm0pOworaW50IGdpdF9pbmZsYXRlKHpfc3RyZWFtcCBzdHJtLCBpbnQgZmx1c2gpOworCiAjaWYgZGVmaW5lZChEVF9VTktOT1dOKSAmJiAhZGVmaW5lZChOT19EX1RZUEVfSU5fRElSRU5UKQogI2RlZmluZSBEVFlQRShkZSkJKChkZSktPmRfdHlwZSkKICNlbHNlCkBAIC0xMDksNiArMTE5LDI2IEBACiAJY2hhciBuYW1lW0ZMRVhfQVJSQVldOyAvKiBtb3JlICovCiB9OwogCisvKgorICogVGhpcyBzdHJ1Y3QgaXMgdXNlZCB3aGVuIENFX0VYVEVOREVEIGJpdCBpcyAxCisgKiBUaGUgc3RydWN0IG11c3QgbWF0Y2ggb25kaXNrX2NhY2hlX2VudHJ5IGV4YWN0bHkgZnJvbQorICogY3RpbWUgdGlsbCBmbGFncworICovCitzdHJ1Y3Qgb25kaXNrX2NhY2hlX2VudHJ5X2V4dGVuZGVkIHsKKwlzdHJ1Y3QgY2FjaGVfdGltZSBjdGltZTsKKwlzdHJ1Y3QgY2FjaGVfdGltZSBtdGltZTsKKwl1bnNpZ25lZCBpbnQgZGV2OworCXVuc2lnbmVkIGludCBpbm87CisJdW5zaWduZWQgaW50IG1vZGU7CisJdW5zaWduZWQgaW50IHVpZDsKKwl1bnNpZ25lZCBpbnQgZ2lkOworCXVuc2lnbmVkIGludCBzaXplOworCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CisJdW5zaWduZWQgc2hvcnQgZmxhZ3M7CisJdW5zaWduZWQgc2hvcnQgZmxhZ3MyOworCWNoYXIgbmFtZVtGTEVYX0FSUkFZXTsgLyogbW9yZSAqLworfTsKKwogc3RydWN0IGNhY2hlX2VudHJ5IHsKIAl1bnNpZ25lZCBpbnQgY2VfY3RpbWU7CiAJdW5zaWduZWQgaW50IGNlX210aW1lOwpAQCAtMTI2LDEwICsxNTYsMTkgQEAKIAogI2RlZmluZSBDRV9OQU1FTUFTSyAgKDB4MGZmZikKICNkZWZpbmUgQ0VfU1RBR0VNQVNLICgweDMwMDApCisjZGVmaW5lIENFX0VYVEVOREVEICAoMHg0MDAwKQogI2RlZmluZSBDRV9WQUxJRCAgICAgKDB4ODAwMCkKICNkZWZpbmUgQ0VfU1RBR0VTSElGVCAxMgogCi0vKiBJbi1tZW1vcnkgb25seSAqLworLyoKKyAqIFJhbmdlIDB4RkZGRjAwMDAgaW4gY2VfZmxhZ3MgaXMgZGl2aWRlZCBpbnRvCisgKiB0d28gcGFydHM6IGluLW1lbW9yeSBmbGFncyBhbmQgb24tZGlzayBvbmVzLgorICogRmxhZ3MgaW4gQ0VfRVhURU5ERURfRkxBR1Mgd2lsbCBnZXQgc2F2ZWQgb24tZGlzaworICogaWYgeW91IHdhbnQgdG8gc2F2ZSBhIG5ldyBmbGFnLCBhZGQgaXQgaW4KKyAqIENFX0VYVEVOREVEX0ZMQUdTCisgKgorICogSW4tbWVtb3J5IG9ubHkgZmxhZ3MKKyAqLwogI2RlZmluZSBDRV9VUERBVEUgICAgKDB4MTAwMDApCiAjZGVmaW5lIENFX1JFTU9WRSAgICAoMHgyMDAwMCkKICNkZWZpbmUgQ0VfVVBUT0RBVEUgICgweDQwMDAwKQpAQCAtMTM5LDYgKzE3OCwyNSBAQAogI2RlZmluZSBDRV9VTkhBU0hFRCAgKDB4MjAwMDAwKQogCiAvKgorICogRXh0ZW5kZWQgb24tZGlzayBmbGFncworICovCisjZGVmaW5lIENFX0lOVEVOVF9UT19BREQgMHgyMDAwMDAwMAorLyogQ0VfRVhURU5ERUQyIGlzIGZvciBmdXR1cmUgZXh0ZW5zaW9uICovCisjZGVmaW5lIENFX0VYVEVOREVEMiAweDgwMDAwMDAwCisKKyNkZWZpbmUgQ0VfRVhURU5ERURfRkxBR1MgKENFX0lOVEVOVF9UT19BREQpCisKKy8qCisgKiBTYWZlZ3VhcmQgdG8gYXZvaWQgc2F2aW5nIHdyb25nIGZsYWdzOgorICogIC0gQ0VfRVhURU5ERUQyIHdvbid0IGdldCBzYXZlZCB1bnRpbCBpdHMgc2VtYW50aWMgaXMga25vd24KKyAqICAtIEJpdHMgaW4gMHgwMDAwRkZGRiBoYXZlIGJlZW4gc2F2ZWQgaW4gY2VfZmxhZ3MgYWxyZWFkeQorICogIC0gQml0cyBpbiAweDAwM0YwMDAwIGFyZSBjdXJyZW50bHkgaW4tbWVtb3J5IGZsYWdzCisgKi8KKyNpZiBDRV9FWFRFTkRFRF9GTEFHUyAmIDB4ODAzRkZGRkYKKyNlcnJvciAiQ0VfRVhURU5ERURfRkxBR1Mgb3V0IG9mIHJhbmdlIgorI2VuZGlmCisKKy8qCiAgKiBDb3B5IHRoZSBzaGExIGFuZCBzdGF0IHN0YXRlIG9mIGEgY2FjaGUgZW50cnkgZnJvbSBvbmUgdG8KICAqIGFub3RoZXIuIEJ1dCB3ZSBuZXZlciBjaGFuZ2UgdGhlIG5hbWUsIG9yIHRoZSBoYXNoIHN0YXRlIQogICovCkBAIC0xNzAsNyArMjI4LDkgQEAKIH0KIAogI2RlZmluZSBjZV9zaXplKGNlKSBjYWNoZV9lbnRyeV9zaXplKGNlX25hbWVsZW4oY2UpKQotI2RlZmluZSBvbmRpc2tfY2Vfc2l6ZShjZSkgb25kaXNrX2NhY2hlX2VudHJ5X3NpemUoY2VfbmFtZWxlbihjZSkpCisjZGVmaW5lIG9uZGlza19jZV9zaXplKGNlKSAoKChjZSktPmNlX2ZsYWdzICYgQ0VfRVhURU5ERUQpID8gXAorCQkJICAgIG9uZGlza19jYWNoZV9lbnRyeV9leHRlbmRlZF9zaXplKGNlX25hbWVsZW4oY2UpKSA6IFwKKwkJCSAgICBvbmRpc2tfY2FjaGVfZW50cnlfc2l6ZShjZV9uYW1lbGVuKGNlKSkpCiAjZGVmaW5lIGNlX3N0YWdlKGNlKSAoKENFX1NUQUdFTUFTSyAmIChjZSktPmNlX2ZsYWdzKSA+PiBDRV9TVEFHRVNISUZUKQogI2RlZmluZSBjZV91cHRvZGF0ZShjZSkgKChjZSktPmNlX2ZsYWdzICYgQ0VfVVBUT0RBVEUpCiAjZGVmaW5lIGNlX21hcmtfdXB0b2RhdGUoY2UpICgoY2UpLT5jZV9mbGFncyB8PSBDRV9VUFRPREFURSkKQEAgLTIxMyw4ICsyNzMsMTAgQEAKIAkoU19JU1JFRyhtb2RlKSA/IChTX0lGUkVHIHwgY2VfcGVybWlzc2lvbnMobW9kZSkpIDogXAogCVNfSVNMTksobW9kZSkgPyBTX0lGTE5LIDogU19JU0RJUihtb2RlKSA/IFNfSUZESVIgOiBTX0lGR0lUTElOSykKIAotI2RlZmluZSBjYWNoZV9lbnRyeV9zaXplKGxlbikgKChvZmZzZXRvZihzdHJ1Y3QgY2FjaGVfZW50cnksbmFtZSkgKyAobGVuKSArIDgpICYgfjcpCi0jZGVmaW5lIG9uZGlza19jYWNoZV9lbnRyeV9zaXplKGxlbikgKChvZmZzZXRvZihzdHJ1Y3Qgb25kaXNrX2NhY2hlX2VudHJ5LG5hbWUpICsgKGxlbikgKyA4KSAmIH43KQorI2RlZmluZSBmbGV4aWJsZV9zaXplKFNUUlVDVCxsZW4pICgob2Zmc2V0b2Yoc3RydWN0IFNUUlVDVCxuYW1lKSArIChsZW4pICsgOCkgJiB+NykKKyNkZWZpbmUgY2FjaGVfZW50cnlfc2l6ZShsZW4pIGZsZXhpYmxlX3NpemUoY2FjaGVfZW50cnksbGVuKQorI2RlZmluZSBvbmRpc2tfY2FjaGVfZW50cnlfc2l6ZShsZW4pIGZsZXhpYmxlX3NpemUob25kaXNrX2NhY2hlX2VudHJ5LGxlbikKKyNkZWZpbmUgb25kaXNrX2NhY2hlX2VudHJ5X2V4dGVuZGVkX3NpemUobGVuKSBmbGV4aWJsZV9zaXplKG9uZGlza19jYWNoZV9lbnRyeV9leHRlbmRlZCxsZW4pCiAKIHN0cnVjdCBpbmRleF9zdGF0ZSB7CiAJc3RydWN0IGNhY2hlX2VudHJ5ICoqY2FjaGU7CkBAIC0yNTUsNiArMzE3LDcgQEAKIAogI2RlZmluZSByZWFkX2NhY2hlKCkgcmVhZF9pbmRleCgmdGhlX2luZGV4KQogI2RlZmluZSByZWFkX2NhY2hlX2Zyb20ocGF0aCkgcmVhZF9pbmRleF9mcm9tKCZ0aGVfaW5kZXgsIChwYXRoKSkKKyNkZWZpbmUgcmVhZF9jYWNoZV9wcmVsb2FkKHBhdGhzcGVjKSByZWFkX2luZGV4X3ByZWxvYWQoJnRoZV9pbmRleCwgKHBhdGhzcGVjKSkKICNkZWZpbmUgaXNfY2FjaGVfdW5ib3JuKCkgaXNfaW5kZXhfdW5ib3JuKCZ0aGVfaW5kZXgpCiAjZGVmaW5lIHJlYWRfY2FjaGVfdW5tZXJnZWQoKSByZWFkX2luZGV4X3VubWVyZ2VkKCZ0aGVfaW5kZXgpCiAjZGVmaW5lIHdyaXRlX2NhY2hlKG5ld2ZkLCBjYWNoZSwgZW50cmllcykgd3JpdGVfaW5kZXgoJnRoZV9pbmRleCwgKG5ld2ZkKSkKQEAgLTMxNCw2ICszNzcsNyBAQAogZXh0ZXJuIGludCBpc19pbnNpZGVfZ2l0X2Rpcih2b2lkKTsKIGV4dGVybiBjaGFyICpnaXRfd29ya190cmVlX2NmZzsKIGV4dGVybiBpbnQgaXNfaW5zaWRlX3dvcmtfdHJlZSh2b2lkKTsKK2V4dGVybiBpbnQgaGF2ZV9naXRfZGlyKHZvaWQpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKmdldF9naXRfZGlyKHZvaWQpOwogZXh0ZXJuIGNoYXIgKmdldF9vYmplY3RfZGlyZWN0b3J5KHZvaWQpOwogZXh0ZXJuIGNoYXIgKmdldF9pbmRleF9maWxlKHZvaWQpOwpAQCAtMzYwLDYgKzQyNCw3IEBACiAKIC8qIEluaXRpYWxpemUgYW5kIHVzZSB0aGUgY2FjaGUgaW5mb3JtYXRpb24gKi8KIGV4dGVybiBpbnQgcmVhZF9pbmRleChzdHJ1Y3QgaW5kZXhfc3RhdGUgKik7CitleHRlcm4gaW50IHJlYWRfaW5kZXhfcHJlbG9hZChzdHJ1Y3QgaW5kZXhfc3RhdGUgKiwgY29uc3QgY2hhciAqKnBhdGhzcGVjKTsKIGV4dGVybiBpbnQgcmVhZF9pbmRleF9mcm9tKHN0cnVjdCBpbmRleF9zdGF0ZSAqLCBjb25zdCBjaGFyICpwYXRoKTsKIGV4dGVybiBpbnQgaXNfaW5kZXhfdW5ib3JuKHN0cnVjdCBpbmRleF9zdGF0ZSAqKTsKIGV4dGVybiBpbnQgcmVhZF9pbmRleF91bm1lcmdlZChzdHJ1Y3QgaW5kZXhfc3RhdGUgKik7CkBAIC0zNzMsNiArNDM4LDcgQEAKICNkZWZpbmUgQUREX0NBQ0hFX09LX1RPX1JFUExBQ0UgMgkvKiBPayB0byByZXBsYWNlIGZpbGUvZGlyZWN0b3J5ICovCiAjZGVmaW5lIEFERF9DQUNIRV9TS0lQX0RGQ0hFQ0sgNAkvKiBPayB0byBza2lwIERGIGNvbmZsaWN0IGNoZWNrcyAqLwogI2RlZmluZSBBRERfQ0FDSEVfSlVTVF9BUFBFTkQgOAkJLyogQXBwZW5kIG9ubHk7IHRyZWUuYzo6cmVhZF90cmVlKCkgKi8KKyNkZWZpbmUgQUREX0NBQ0hFX05FV19PTkxZIDE2CQkvKiBEbyBub3QgcmVwbGFjZSBleGlzdGluZyBvbmVzICovCiBleHRlcm4gaW50IGFkZF9pbmRleF9lbnRyeShzdHJ1Y3QgaW5kZXhfc3RhdGUgKiwgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgaW50IG9wdGlvbik7CiBleHRlcm4gc3RydWN0IGNhY2hlX2VudHJ5ICpyZWZyZXNoX2NhY2hlX2VudHJ5KHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIGludCByZWFsbHkpOwogZXh0ZXJuIHZvaWQgcmVuYW1lX2luZGV4X2VudHJ5X2F0KHN0cnVjdCBpbmRleF9zdGF0ZSAqLCBpbnQgcG9zLCBjb25zdCBjaGFyICpuZXdfbmFtZSk7CkBAIC0zODEsNiArNDQ3LDggQEAKICNkZWZpbmUgQUREX0NBQ0hFX1ZFUkJPU0UgMQogI2RlZmluZSBBRERfQ0FDSEVfUFJFVEVORCAyCiAjZGVmaW5lIEFERF9DQUNIRV9JR05PUkVfRVJST1JTCTQKKyNkZWZpbmUgQUREX0NBQ0hFX0lHTk9SRV9SRU1PVkFMIDgKKyNkZWZpbmUgQUREX0NBQ0hFX0lOVEVOVCAxNgogZXh0ZXJuIGludCBhZGRfdG9faW5kZXgoc3RydWN0IGluZGV4X3N0YXRlICosIGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ICosIGludCBmbGFncyk7CiBleHRlcm4gaW50IGFkZF9maWxlX3RvX2luZGV4KHN0cnVjdCBpbmRleF9zdGF0ZSAqLCBjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MpOwogZXh0ZXJuIHN0cnVjdCBjYWNoZV9lbnRyeSAqbWFrZV9jYWNoZV9lbnRyeSh1bnNpZ25lZCBpbnQgbW9kZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgY29uc3QgY2hhciAqcGF0aCwgaW50IHN0YWdlLCBpbnQgcmVmcmVzaCk7CkBAIC0zOTYsNyArNDY0LDYgQEAKIAogZXh0ZXJuIGludCBjZV9wYXRoX21hdGNoKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIGNvbnN0IGNoYXIgKipwYXRoc3BlYyk7CiBleHRlcm4gaW50IGluZGV4X2ZkKHVuc2lnbmVkIGNoYXIgKnNoYTEsIGludCBmZCwgc3RydWN0IHN0YXQgKnN0LCBpbnQgd3JpdGVfb2JqZWN0LCBlbnVtIG9iamVjdF90eXBlIHR5cGUsIGNvbnN0IGNoYXIgKnBhdGgpOwotZXh0ZXJuIGludCBpbmRleF9waXBlKHVuc2lnbmVkIGNoYXIgKnNoYTEsIGludCBmZCwgY29uc3QgY2hhciAqdHlwZSwgaW50IHdyaXRlX29iamVjdCk7CiBleHRlcm4gaW50IGluZGV4X3BhdGgodW5zaWduZWQgY2hhciAqc2hhMSwgY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKnN0LCBpbnQgd3JpdGVfb2JqZWN0KTsKIGV4dGVybiB2b2lkIGZpbGxfc3RhdF9jYWNoZV9pbmZvKHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIHN0cnVjdCBzdGF0ICpzdCk7CiAKQEAgLTQxNyw2ICs0ODQsNyBAQAogfTsKICNkZWZpbmUgTE9DS19ESUVfT05fRVJST1IgMQogI2RlZmluZSBMT0NLX05PREVSRUYgMgorZXh0ZXJuIE5PUkVUVVJOIHZvaWQgdW5hYmxlX3RvX2xvY2tfaW5kZXhfZGllKGNvbnN0IGNoYXIgKnBhdGgsIGludCBlcnIpOwogZXh0ZXJuIGludCBob2xkX2xvY2tfZmlsZV9mb3JfdXBkYXRlKHN0cnVjdCBsb2NrX2ZpbGUgKiwgY29uc3QgY2hhciAqcGF0aCwgaW50KTsKIGV4dGVybiBpbnQgaG9sZF9sb2NrX2ZpbGVfZm9yX2FwcGVuZChzdHJ1Y3QgbG9ja19maWxlICosIGNvbnN0IGNoYXIgKnBhdGgsIGludCk7CiBleHRlcm4gaW50IGNvbW1pdF9sb2NrX2ZpbGUoc3RydWN0IGxvY2tfZmlsZSAqKTsKQEAgLTQ0OCw2ICs1MTYsNyBAQAogZXh0ZXJuIHNpemVfdCBkZWx0YV9iYXNlX2NhY2hlX2xpbWl0OwogZXh0ZXJuIGludCBhdXRvX2NybGY7CiBleHRlcm4gaW50IGZzeW5jX29iamVjdF9maWxlczsKK2V4dGVybiBpbnQgY29yZV9wcmVsb2FkX2luZGV4OwogCiBlbnVtIHNhZmVfY3JsZiB7CiAJU0FGRV9DUkxGX0ZBTFNFID0gMCwKQEAgLTQ1OCw2ICs1MjcsNyBAQAogZXh0ZXJuIGVudW0gc2FmZV9jcmxmIHNhZmVfY3JsZjsKIAogZW51bSBicmFuY2hfdHJhY2sgeworCUJSQU5DSF9UUkFDS19VTlNQRUNJRklFRCA9IC0xLAogCUJSQU5DSF9UUkFDS19ORVZFUiA9IDAsCiAJQlJBTkNIX1RSQUNLX1JFTU9URSwKIAlCUkFOQ0hfVFJBQ0tfQUxXQVlTLApAQCAtNTE3LDYgKzU4NywxMyBAQAogewogCW1lbXNldChoYXNoLCAwLCAyMCk7CiB9CitleHRlcm4gaW50IGlzX2VtcHR5X2Jsb2Jfc2hhMShjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExKTsKKworI2RlZmluZSBFTVBUWV9UUkVFX1NIQTFfSEVYIFwKKwkiNGI4MjVkYzY0MmNiNmViOWEwNjBlNTRiZjhkNjkyODhmYmVlNDkwNCIKKyNkZWZpbmUgRU1QVFlfVFJFRV9TSEExX0JJTiBcCisJICJceDRiXHg4Mlx4NWRceGM2XHg0Mlx4Y2JceDZlXHhiOVx4YTBceDYwIiBcCisJICJceGU1XHg0Ylx4ZjhceGQ2XHg5Mlx4ODhceGZiXHhlZVx4NDlceDA0IgogCiBpbnQgZ2l0X21rc3RlbXAoY2hhciAqcGF0aCwgc2l6ZV90IG4sIGNvbnN0IGNoYXIgKnRlbXBsYXRlKTsKIApAQCAtNTQ0LDYgKzYyMSw3IEBACiB7CiAJcmV0dXJuIHBhdGhbMF0gPT0gJy8nIHx8IGhhc19kb3NfZHJpdmVfcHJlZml4KHBhdGgpOwogfQoraW50IGlzX2RpcmVjdG9yeShjb25zdCBjaGFyICopOwogY29uc3QgY2hhciAqbWFrZV9hYnNvbHV0ZV9wYXRoKGNvbnN0IGNoYXIgKnBhdGgpOwogY29uc3QgY2hhciAqbWFrZV9ub25yZWxhdGl2ZV9wYXRoKGNvbnN0IGNoYXIgKnBhdGgpOwogY29uc3QgY2hhciAqbWFrZV9yZWxhdGl2ZV9wYXRoKGNvbnN0IGNoYXIgKmFicywgY29uc3QgY2hhciAqYmFzZSk7CkBAIC01NjEsNiArNjM5LDkgQEAKIC8qIGp1c3QgbGlrZSByZWFkX3NoYTFfZmlsZSgpLCBidXQgbm9uIGZhdGFsIGluIHByZXNlbmNlIG9mIGJhZCBvYmplY3RzICovCiBleHRlcm4gdm9pZCAqcmVhZF9vYmplY3QoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgZW51bSBvYmplY3RfdHlwZSAqdHlwZSwgdW5zaWduZWQgbG9uZyAqc2l6ZSk7CiAKKy8qIGdsb2JhbCBmbGFnIHRvIGVuYWJsZSBleHRyYSBjaGVja3Mgd2hlbiBhY2Nlc3NpbmcgcGFja2VkIG9iamVjdHMgKi8KK2V4dGVybiBpbnQgZG9fY2hlY2tfcGFja2VkX29iamVjdF9jcmM7CisKIGV4dGVybiBpbnQgY2hlY2tfc2hhMV9zaWduYXR1cmUoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgdm9pZCAqYnVmLCB1bnNpZ25lZCBsb25nIHNpemUsIGNvbnN0IGNoYXIgKnR5cGUpOwogCiBleHRlcm4gaW50IG1vdmVfdGVtcF90b19maWxlKGNvbnN0IGNoYXIgKnRtcGZpbGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKQEAgLTY1Miw2ICs3MzMsOCBAQAogfSAqYWx0X29kYl9saXN0OwogZXh0ZXJuIHZvaWQgcHJlcGFyZV9hbHRfb2RiKHZvaWQpOwogZXh0ZXJuIHZvaWQgYWRkX3RvX2FsdGVybmF0ZXNfZmlsZShjb25zdCBjaGFyICpyZWZlcmVuY2UpOwordHlwZWRlZiBpbnQgYWx0X29kYl9mbihzdHJ1Y3QgYWx0ZXJuYXRlX29iamVjdF9kYXRhYmFzZSAqLCB2b2lkICopOworZXh0ZXJuIHZvaWQgZm9yZWFjaF9hbHRfb2RiKGFsdF9vZGJfZm4sIHZvaWQqKTsKIAogc3RydWN0IHBhY2tfd2luZG93IHsKIAlzdHJ1Y3QgcGFja193aW5kb3cgKm5leHQ7CkBAIC03MjEsNyArODA0LDExIEBACiBleHRlcm4gaW50IGZpbmlzaF9jb25uZWN0KHN0cnVjdCBjaGlsZF9wcm9jZXNzICpjb25uKTsKIGV4dGVybiBpbnQgcGF0aF9tYXRjaChjb25zdCBjaGFyICpwYXRoLCBpbnQgbnIsIGNoYXIgKiptYXRjaCk7CiBleHRlcm4gaW50IGdldF9hY2soaW50IGZkLCB1bnNpZ25lZCBjaGFyICpyZXN1bHRfc2hhMSk7Ci1leHRlcm4gc3RydWN0IHJlZiAqKmdldF9yZW1vdGVfaGVhZHMoaW50IGluLCBzdHJ1Y3QgcmVmICoqbGlzdCwgaW50IG5yX21hdGNoLCBjaGFyICoqbWF0Y2gsIHVuc2lnbmVkIGludCBmbGFncyk7CitzdHJ1Y3QgZXh0cmFfaGF2ZV9vYmplY3RzIHsKKwlpbnQgbnIsIGFsbG9jOworCXVuc2lnbmVkIGNoYXIgKCphcnJheSlbMjBdOworfTsKK2V4dGVybiBzdHJ1Y3QgcmVmICoqZ2V0X3JlbW90ZV9oZWFkcyhpbnQgaW4sIHN0cnVjdCByZWYgKipsaXN0LCBpbnQgbnJfbWF0Y2gsIGNoYXIgKiptYXRjaCwgdW5zaWduZWQgaW50IGZsYWdzLCBzdHJ1Y3QgZXh0cmFfaGF2ZV9vYmplY3RzICopOwogZXh0ZXJuIGludCBzZXJ2ZXJfc3VwcG9ydHMoY29uc3QgY2hhciAqZmVhdHVyZSk7CiAKIGV4dGVybiBzdHJ1Y3QgcGFja2VkX2dpdCAqcGFyc2VfcGFja19pbmRleCh1bnNpZ25lZCBjaGFyICpzaGExKTsKQEAgLTc0NSw3ICs4MzIsNyBAQAogZXh0ZXJuIG9mZl90IG50aF9wYWNrZWRfb2JqZWN0X29mZnNldChjb25zdCBzdHJ1Y3QgcGFja2VkX2dpdCAqLCB1aW50MzJfdCk7CiBleHRlcm4gb2ZmX3QgZmluZF9wYWNrX2VudHJ5X29uZShjb25zdCB1bnNpZ25lZCBjaGFyICosIHN0cnVjdCBwYWNrZWRfZ2l0ICopOwogZXh0ZXJuIHZvaWQgKnVucGFja19lbnRyeShzdHJ1Y3QgcGFja2VkX2dpdCAqLCBvZmZfdCwgZW51bSBvYmplY3RfdHlwZSAqLCB1bnNpZ25lZCBsb25nICopOwotZXh0ZXJuIHVuc2lnbmVkIGxvbmcgdW5wYWNrX29iamVjdF9oZWFkZXJfZ2VudGx5KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZiwgdW5zaWduZWQgbG9uZyBsZW4sIGVudW0gb2JqZWN0X3R5cGUgKnR5cGUsIHVuc2lnbmVkIGxvbmcgKnNpemVwKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIHVucGFja19vYmplY3RfaGVhZGVyX2J1ZmZlcihjb25zdCB1bnNpZ25lZCBjaGFyICpidWYsIHVuc2lnbmVkIGxvbmcgbGVuLCBlbnVtIG9iamVjdF90eXBlICp0eXBlLCB1bnNpZ25lZCBsb25nICpzaXplcCk7CiBleHRlcm4gdW5zaWduZWQgbG9uZyBnZXRfc2l6ZV9mcm9tX2RlbHRhKHN0cnVjdCBwYWNrZWRfZ2l0ICosIHN0cnVjdCBwYWNrX3dpbmRvdyAqKiwgb2ZmX3QpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKnBhY2tlZF9vYmplY3RfaW5mb19kZXRhaWwoc3RydWN0IHBhY2tlZF9naXQgKiwgb2ZmX3QsIHVuc2lnbmVkIGxvbmcgKiwgdW5zaWduZWQgbG9uZyAqLCB1bnNpZ25lZCBpbnQgKiwgdW5zaWduZWQgY2hhciAqKTsKIGV4dGVybiBpbnQgbWF0Y2hlc19wYWNrX25hbWUoc3RydWN0IHBhY2tlZF9naXQgKnAsIGNvbnN0IGNoYXIgKm5hbWUpOwpAQCAtNzU3LDcgKzg0NCw2IEBACiBleHRlcm4gaW50IGdpdF9kZWZhdWx0X2NvbmZpZyhjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgdm9pZCAqKTsKIGV4dGVybiBpbnQgZ2l0X2NvbmZpZ19mcm9tX2ZpbGUoY29uZmlnX2ZuX3QgZm4sIGNvbnN0IGNoYXIgKiwgdm9pZCAqKTsKIGV4dGVybiBpbnQgZ2l0X2NvbmZpZyhjb25maWdfZm5fdCBmbiwgdm9pZCAqKTsKLWV4dGVybiBpbnQgZ2l0X3BhcnNlX2xvbmcoY29uc3QgY2hhciAqLCBsb25nICopOwogZXh0ZXJuIGludCBnaXRfcGFyc2VfdWxvbmcoY29uc3QgY2hhciAqLCB1bnNpZ25lZCBsb25nICopOwogZXh0ZXJuIGludCBnaXRfY29uZmlnX2ludChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CiBleHRlcm4gdW5zaWduZWQgbG9uZyBnaXRfY29uZmlnX3Vsb25nKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZGlmZiAtLWdpdCBhL2NvbWJpbmUtZGlmZi5jIGIvY29tYmluZS1kaWZmLmMKaW5kZXggYWE5ZDc5ZS4uYmNjYzAxOCAxMDA2NDQKLS0tIGEvY29tYmluZS1kaWZmLmMKKysrIGIvY29tYmluZS1kaWZmLmMKQEAgLTE0Myw4ICsxNDMsNiBAQAogfQogCiBzdHJ1Y3QgY29tYmluZV9kaWZmX3N0YXRlIHsKLQlzdHJ1Y3QgeGRpZmZfZW1pdF9zdGF0ZSB4bTsKLQogCXVuc2lnbmVkIGludCBsbm87CiAJaW50IG9iLCBvbiwgbmIsIG5uOwogCXVuc2lnbmVkIGxvbmcgbm1hc2s7CkBAIC0yMTUsMTkgKzIxMywxOCBAQAogCiAJcGFyZW50X2ZpbGUucHRyID0gZ3JhYl9ibG9iKHBhcmVudCwgJnN6KTsKIAlwYXJlbnRfZmlsZS5zaXplID0gc3o7CisJbWVtc2V0KCZ4cHAsIDAsIHNpemVvZih4cHApKTsKIAl4cHAuZmxhZ3MgPSBYREZfTkVFRF9NSU5JTUFMOwogCW1lbXNldCgmeGVjZmcsIDAsIHNpemVvZih4ZWNmZykpOwotCWVjYi5vdXRmID0geGRpZmZfb3V0ZjsKLQllY2IucHJpdiA9ICZzdGF0ZTsKIAltZW1zZXQoJnN0YXRlLCAwLCBzaXplb2Yoc3RhdGUpKTsKLQlzdGF0ZS54bS5jb25zdW1lID0gY29uc3VtZV9saW5lOwogCXN0YXRlLm5tYXNrID0gbm1hc2s7CiAJc3RhdGUuc2xpbmUgPSBzbGluZTsKIAlzdGF0ZS5sbm8gPSAxOwogCXN0YXRlLm51bV9wYXJlbnQgPSBudW1fcGFyZW50OwogCXN0YXRlLm4gPSBuOwogCi0JeGRpX2RpZmYoJnBhcmVudF9maWxlLCByZXN1bHRfZmlsZSwgJnhwcCwgJnhlY2ZnLCAmZWNiKTsKKwl4ZGlfZGlmZl9vdXRmKCZwYXJlbnRfZmlsZSwgcmVzdWx0X2ZpbGUsIGNvbnN1bWVfbGluZSwgJnN0YXRlLAorCQkgICAgICAmeHBwLCAmeGVjZmcsICZlY2IpOwogCWZyZWUocGFyZW50X2ZpbGUucHRyKTsKIAogCS8qIEFzc2lnbiBsaW5lIG51bWJlcnMgZm9yIHRoaXMgcGFyZW50LgpAQCAtNjg3LDkgKzY4NCwxMyBAQAogCWludCBpLCBzaG93X2h1bmtzOwogCWludCB3b3JraW5nX3RyZWVfZmlsZSA9IGlzX251bGxfc2hhMShlbGVtLT5zaGExKTsKIAlpbnQgYWJicmV2ID0gRElGRl9PUFRfVFNUKG9wdCwgRlVMTF9JTkRFWCkgPyA0MCA6IERFRkFVTFRfQUJCUkVWOworCWNvbnN0IGNoYXIgKmFfcHJlZml4LCAqYl9wcmVmaXg7CiAJbW1maWxlX3QgcmVzdWx0X2ZpbGU7CiAKIAljb250ZXh0ID0gb3B0LT5jb250ZXh0OworCWFfcHJlZml4ID0gb3B0LT5hX3ByZWZpeCA/IG9wdC0+YV9wcmVmaXggOiAiYS8iOworCWJfcHJlZml4ID0gb3B0LT5iX3ByZWZpeCA/IG9wdC0+Yl9wcmVmaXggOiAiYi8iOworCiAJLyogUmVhZCB0aGUgcmVzdWx0IG9mIG1lcmdlIGZpcnN0ICovCiAJaWYgKCF3b3JraW5nX3RyZWVfZmlsZSkKIAkJcmVzdWx0ID0gZ3JhYl9ibG9iKGVsZW0tPnNoYTEsICZyZXN1bHRfc2l6ZSk7CkBAIC03MDIsMTUgKzcwMywxNSBAQAogCQkJZ290byBkZWxldGVkX2ZpbGU7CiAKIAkJaWYgKFNfSVNMTksoc3Quc3RfbW9kZSkpIHsKLQkJCXNpemVfdCBsZW4gPSB4c2l6ZV90KHN0LnN0X3NpemUpOwotCQkJcmVzdWx0X3NpemUgPSBsZW47Ci0JCQlyZXN1bHQgPSB4bWFsbG9jKGxlbiArIDEpOwotCQkJaWYgKHJlc3VsdF9zaXplICE9IHJlYWRsaW5rKGVsZW0tPnBhdGgsIHJlc3VsdCwgbGVuKSkgeworCQkJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKKworCQkJaWYgKHN0cmJ1Zl9yZWFkbGluaygmYnVmLCBlbGVtLT5wYXRoLCBzdC5zdF9zaXplKSA8IDApIHsKIAkJCQllcnJvcigicmVhZGxpbmsoJXMpOiAlcyIsIGVsZW0tPnBhdGgsCiAJCQkJICAgICAgc3RyZXJyb3IoZXJybm8pKTsKIAkJCQlyZXR1cm47CiAJCQl9Ci0JCQlyZXN1bHRbbGVuXSA9IDA7CisJCQlyZXN1bHRfc2l6ZSA9IGJ1Zi5sZW47CisJCQlyZXN1bHQgPSBzdHJidWZfZGV0YWNoKCZidWYsIE5VTEwpOwogCQkJZWxlbS0+bW9kZSA9IGNhbm9uX21vZGUoc3Quc3RfbW9kZSk7CiAJCX0KIAkJZWxzZSBpZiAoMCA8PSAoZmQgPSBvcGVuKGVsZW0tPnBhdGgsIE9fUkRPTkxZKSkgJiYKQEAgLTc0Miw5ICs3NDMsOCBAQAogCiAJCQkvKiBJZiBub3QgYSBmYWtlIHN5bWxpbmssIGFwcGx5IGZpbHRlcnMsIGUuZy4gYXV0b2NybGYgKi8KIAkJCWlmIChpc19maWxlKSB7Ci0JCQkJc3RydWN0IHN0cmJ1ZiBidWY7CisJCQkJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAotCQkJCXN0cmJ1Zl9pbml0KCZidWYsIDApOwogCQkJCWlmIChjb252ZXJ0X3RvX2dpdChlbGVtLT5wYXRoLCByZXN1bHQsIGxlbiwgJmJ1Ziwgc2FmZV9jcmxmKSkgewogCQkJCQlmcmVlKHJlc3VsdCk7CiAJCQkJCXJlc3VsdCA9IHN0cmJ1Zl9kZXRhY2goJmJ1ZiwgJmxlbik7CkBAIC04NjUsMTMgKzg2NSwxMyBAQAogCQkJZHVtcF9xdW90ZWRfcGF0aCgiLS0tICIsICIiLCAiL2Rldi9udWxsIiwKIAkJCQkJIGNfbWV0YSwgY19yZXNldCk7CiAJCWVsc2UKLQkJCWR1bXBfcXVvdGVkX3BhdGgoIi0tLSAiLCBvcHQtPmFfcHJlZml4LCBlbGVtLT5wYXRoLAorCQkJZHVtcF9xdW90ZWRfcGF0aCgiLS0tICIsIGFfcHJlZml4LCBlbGVtLT5wYXRoLAogCQkJCQkgY19tZXRhLCBjX3Jlc2V0KTsKIAkJaWYgKGRlbGV0ZWQpCiAJCQlkdW1wX3F1b3RlZF9wYXRoKCIrKysgIiwgIiIsICIvZGV2L251bGwiLAogCQkJCQkgY19tZXRhLCBjX3Jlc2V0KTsKIAkJZWxzZQotCQkJZHVtcF9xdW90ZWRfcGF0aCgiKysrICIsIG9wdC0+Yl9wcmVmaXgsIGVsZW0tPnBhdGgsCisJCQlkdW1wX3F1b3RlZF9wYXRoKCIrKysgIiwgYl9wcmVmaXgsIGVsZW0tPnBhdGgsCiAJCQkJCSBjX21ldGEsIGNfcmVzZXQpOwogCQlkdW1wX3NsaW5lKHNsaW5lLCBjbnQsIG51bV9wYXJlbnQsCiAJCQkgICBESUZGX09QVF9UU1Qob3B0LCBDT0xPUl9ESUZGKSk7CmRpZmYgLS1naXQgYS9jb21taXQuYyBiL2NvbW1pdC5jCmluZGV4IGRjMGM1YmYuLmM5OWRiMTYgMTAwNjQ0Ci0tLSBhL2NvbW1pdC5jCisrKyBiL2NvbW1pdC5jCkBAIC0xNjAsNyArMTYwLDcgQEAKIAlyZXR1cm4gZ3JhZnQ7CiB9CiAKLWludCByZWFkX2dyYWZ0X2ZpbGUoY29uc3QgY2hhciAqZ3JhZnRfZmlsZSkKK3N0YXRpYyBpbnQgcmVhZF9ncmFmdF9maWxlKGNvbnN0IGNoYXIgKmdyYWZ0X2ZpbGUpCiB7CiAJRklMRSAqZnAgPSBmb3BlbihncmFmdF9maWxlLCAiciIpOwogCWNoYXIgYnVmWzEwMjRdOwpkaWZmIC0tZ2l0IGEvY29tbWl0LmggYi9jb21taXQuaAppbmRleCBlY2RkNTczLi4zYTdiMDZhIDEwMDY0NAotLS0gYS9jb21taXQuaAorKysgYi9jb21taXQuaApAQCAtNjUsNiArNjUsOCBAQAogCiBleHRlcm4gaW50IG5vbl9hc2NpaShpbnQpOwogc3RydWN0IHJldl9pbmZvOyAvKiBpbiByZXZpc2lvbi5oLCBpdCBjaXJjdWxhcmx5IHVzZXMgZW51bSBjbWl0X2ZtdCAqLworZXh0ZXJuIGNoYXIgKnJlZW5jb2RlX2NvbW1pdF9tZXNzYWdlKGNvbnN0IHN0cnVjdCBjb21taXQgKmNvbW1pdCwKKwkJCQkgICAgIGNvbnN0IGNoYXIgKiplbmNvZGluZ19wKTsKIGV4dGVybiB2b2lkIGdldF9jb21taXRfZm9ybWF0KGNvbnN0IGNoYXIgKmFyZywgc3RydWN0IHJldl9pbmZvICopOwogZXh0ZXJuIHZvaWQgZm9ybWF0X2NvbW1pdF9tZXNzYWdlKGNvbnN0IHN0cnVjdCBjb21taXQgKmNvbW1pdCwKIAkJCQkgIGNvbnN0IHZvaWQgKmZvcm1hdCwgc3RydWN0IHN0cmJ1ZiAqc2IsCkBAIC0xMTgsMTAgKzEyMCwxMCBAQAogCiBzdHJ1Y3QgY29tbWl0X2dyYWZ0ICpyZWFkX2dyYWZ0X2xpbmUoY2hhciAqYnVmLCBpbnQgbGVuKTsKIGludCByZWdpc3Rlcl9jb21taXRfZ3JhZnQoc3RydWN0IGNvbW1pdF9ncmFmdCAqLCBpbnQpOwotaW50IHJlYWRfZ3JhZnRfZmlsZShjb25zdCBjaGFyICpncmFmdF9maWxlKTsKIHN0cnVjdCBjb21taXRfZ3JhZnQgKmxvb2t1cF9jb21taXRfZ3JhZnQoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSk7CiAKIGV4dGVybiBzdHJ1Y3QgY29tbWl0X2xpc3QgKmdldF9tZXJnZV9iYXNlcyhzdHJ1Y3QgY29tbWl0ICpyZXYxLCBzdHJ1Y3QgY29tbWl0ICpyZXYyLCBpbnQgY2xlYW51cCk7CitleHRlcm4gc3RydWN0IGNvbW1pdF9saXN0ICpnZXRfbWVyZ2VfYmFzZXNfbWFueShzdHJ1Y3QgY29tbWl0ICpvbmUsIGludCBuLCBzdHJ1Y3QgY29tbWl0ICoqdHdvcywgaW50IGNsZWFudXApOwogZXh0ZXJuIHN0cnVjdCBjb21taXRfbGlzdCAqZ2V0X29jdG9wdXNfbWVyZ2VfYmFzZXMoc3RydWN0IGNvbW1pdF9saXN0ICppbik7CiAKIGV4dGVybiBpbnQgcmVnaXN0ZXJfc2hhbGxvdyhjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExKTsKZGlmZiAtLWdpdCBhL2NvbXBhdC9jeWd3aW4uYyBiL2NvbXBhdC9jeWd3aW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmFjMTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvY29tcGF0L2N5Z3dpbi5jCkBAIC0wLDAgKzEsMTQzIEBACisjZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KKyNpbmNsdWRlICIuLi9naXQtY29tcGF0LXV0aWwuaCIKKyNpbmNsdWRlICJ3aW4zMi5oIgorI2luY2x1ZGUgIi4uL2NhY2hlLmgiIC8qIHRvIHJlYWQgY29uZmlndXJhdGlvbiAqLworCitzdGF0aWMgaW5saW5lIHZvaWQgZmlsZXRpbWVfdG9fdGltZXNwZWMoY29uc3QgRklMRVRJTUUgKmZ0LCBzdHJ1Y3QgdGltZXNwZWMgKnRzKQoreworCWxvbmcgbG9uZyB3aW5UaW1lID0gKChsb25nIGxvbmcpZnQtPmR3SGlnaERhdGVUaW1lIDw8IDMyKSArCisJCQlmdC0+ZHdMb3dEYXRlVGltZTsKKwl3aW5UaW1lIC09IDExNjQ0NDczNjAwMDAwMDAwMExMOyAvKiBXaW5kb3dzIHRvIFVuaXggRXBvY2ggY29udmVyc2lvbiAqLworCS8qIGNvbnZlcnQgMTAwLW5zZWNvbmQgaW50ZXJ2YWwgdG8gc2Vjb25kcyBhbmQgbmFub3NlY29uZHMgKi8KKwl0cy0+dHZfc2VjID0gKHRpbWVfdCkod2luVGltZS8xMDAwMDAwMCk7CisJdHMtPnR2X25zZWMgPSAobG9uZykod2luVGltZSAtIHRzLT50dl9zZWMqMTAwMDAwMDBMTCkgKiAxMDA7Cit9CisKKyNkZWZpbmUgc2l6ZV90b19ibG9ja3MocykgKCgocykrNTExKS81MTIpCisKKy8qIGRvX3N0YXQgaXMgYSBjb21tb24gaW1wbGVtZW50YXRpb24gZm9yIGN5Z3dpbl9sc3RhdCBhbmQgY3lnd2luX3N0YXQuCisgKgorICogVG8gc2ltcGxpZnkgaXRzIGxvZ2ljLCBpbiB0aGUgY2FzZSBvZiBjeWd3aW4gc3ltbGlua3MsIHRoaXMgaW1wbGVtZW50YXRpb24KKyAqIGZhbGxzIGJhY2sgdG8gdGhlIGN5Z3dpbiB2ZXJzaW9uIG9mIHN0YXQvbHN0YXQsIHdoaWNoIGlzIHByb3ZpZGVkIGFzIHRoZQorICogbGFzdCBhcmd1bWVudC4KKyAqLworc3RhdGljIGludCBkb19zdGF0KGNvbnN0IGNoYXIgKmZpbGVfbmFtZSwgc3RydWN0IHN0YXQgKmJ1Ziwgc3RhdF9mbl90IGN5Z3N0YXQpCit7CisJV0lOMzJfRklMRV9BVFRSSUJVVEVfREFUQSBmZGF0YTsKKworCWlmIChmaWxlX25hbWVbMF0gPT0gJy8nKQorCQlyZXR1cm4gY3lnc3RhdCAoZmlsZV9uYW1lLCBidWYpOworCisJaWYgKCEoZXJybm8gPSBnZXRfZmlsZV9hdHRyKGZpbGVfbmFtZSwgJmZkYXRhKSkpIHsKKwkJLyoKKwkJICogSWYgdGhlIHN5c3RlbSBhdHRyaWJ1dGUgaXMgc2V0IGFuZCBpdCBpcyBub3QgYSBkaXJlY3RvcnkgdGhlbgorCQkgKiBpdCBjb3VsZCBiZSBhIHN5bWJvbCBsaW5rIGNyZWF0ZWQgaW4gdGhlIG5vd2luc3ltbGlua3MgbW9kZS4KKwkJICogTm9ybWFsbHksIEN5Z3dpbiB3b3JrcyBpbiB0aGUgd2luc3ltbGlua3MgbW9kZSwgc28gdGhpcyBzaXR1YXRpb24KKwkJICogaXMgdmVyeSB1bmxpa2VseS4gRm9yIHRoZSBzYWtlIG9mIHNpbXBsaWNpdHkgb2Ygb3VyIGNvZGUsIGxldCdzCisJCSAqIEN5Z3dpbiB0byBoYW5kbGUgaXQuCisJCSAqLworCQlpZiAoKGZkYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9TWVNURU0pICYmCisJCSAgICAhKGZkYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpKQorCQkJcmV0dXJuIGN5Z3N0YXQoZmlsZV9uYW1lLCBidWYpOworCisJCS8qIGZpbGwgb3V0IHRoZSBzdGF0IHN0cnVjdHVyZSAqLworCQlidWYtPnN0X2RldiA9IGJ1Zi0+c3RfcmRldiA9IDA7IC8qIG5vdCB1c2VkIGJ5IEdpdCAqLworCQlidWYtPnN0X2lubyA9IDA7CisJCWJ1Zi0+c3RfbW9kZSA9IGZpbGVfYXR0cl90b19zdF9tb2RlKGZkYXRhLmR3RmlsZUF0dHJpYnV0ZXMpOworCQlidWYtPnN0X25saW5rID0gMTsKKwkJYnVmLT5zdF91aWQgPSBidWYtPnN0X2dpZCA9IDA7CisjaWZkZWYgX19DWUdXSU5fVVNFX0JJR19UWVBFU19fCisJCWJ1Zi0+c3Rfc2l6ZSA9ICgoX29mZjY0X3QpZmRhdGEubkZpbGVTaXplSGlnaCA8PCAzMikgKworCQkJZmRhdGEubkZpbGVTaXplTG93OworI2Vsc2UKKwkJYnVmLT5zdF9zaXplID0gKG9mZl90KWZkYXRhLm5GaWxlU2l6ZUxvdzsKKyNlbmRpZgorCQlidWYtPnN0X2Jsb2NrcyA9IHNpemVfdG9fYmxvY2tzKGJ1Zi0+c3Rfc2l6ZSk7CisJCWZpbGV0aW1lX3RvX3RpbWVzcGVjKCZmZGF0YS5mdExhc3RBY2Nlc3NUaW1lLCAmYnVmLT5zdF9hdGltKTsKKwkJZmlsZXRpbWVfdG9fdGltZXNwZWMoJmZkYXRhLmZ0TGFzdFdyaXRlVGltZSwgJmJ1Zi0+c3RfbXRpbSk7CisJCWZpbGV0aW1lX3RvX3RpbWVzcGVjKCZmZGF0YS5mdENyZWF0aW9uVGltZSwgJmJ1Zi0+c3RfY3RpbSk7CisJCXJldHVybiAwOworCX0gZWxzZSBpZiAoZXJybm8gPT0gRU5PRU5UKSB7CisJCS8qCisJCSAqIEluIHRoZSB3aW5zeW1saW5rcyBtb2RlICh3aGljaCBpcyB0aGUgZGVmYXVsdCksIEN5Z3dpbgorCQkgKiBlbXVsYXRlcyBzeW1ib2wgbGlua3MgdXNpbmcgV2luZG93cyBzaG9ydGN1dCBmaWxlcy4gVGhlc2UKKwkJICogZmlsZXMgYXJlIGZvcm1lZCBieSBhZGRpbmcgLmxuayBleHRlbnNpb24uIFNvLCBpZiB3ZSBoYXZlCisJCSAqIG5vdCBmb3VuZCB0aGUgc3BlY2lmaWVkIGZpbGUgbmFtZSwgaXQgY291bGQgYmUgdGhhdCBpdCBpcworCQkgKiBhIHN5bWJvbCBsaW5rLiBMZXQncyBDeWd3aW4gdG8gZGVhbCB3aXRoIHRoYXQuCisJCSAqLworCQlyZXR1cm4gY3lnc3RhdChmaWxlX25hbWUsIGJ1Zik7CisJfQorCXJldHVybiAtMTsKK30KKworLyogV2UgcHJvdmlkZSBvdXIgb3duIGxzdGF0L3N0YXQgZnVuY3Rpb25zLCBzaW5jZSB0aGUgcHJvdmlkZWQgQ3lnd2luIHZlcnNpb25zCisgKiBvZiB0aGVzZSBmdW5jdGlvbnMgYXJlIHRvbyBzbG93LiBUaGVzZSBzdGF0IGZ1bmN0aW9ucyBhcmUgdGFpbG9yZWQgZm9yIEdpdCdzCisgKiB1c2FnZSwgYW5kIHRoZXJlZm9yZSB0aGV5IGFyZSBub3QgbWVhbnQgdG8gYmUgY29tcGxldGUgYW5kIGNvcnJlY3QgZW11bGF0aW9uCisgKiBvZiBsc3RhdC9zdGF0IGZ1bmN0aW9uYWxpdHkuCisgKi8KK3N0YXRpYyBpbnQgY3lnd2luX2xzdGF0KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ICpidWYpCit7CisJcmV0dXJuIGRvX3N0YXQocGF0aCwgYnVmLCBsc3RhdCk7Cit9CisKK3N0YXRpYyBpbnQgY3lnd2luX3N0YXQoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKmJ1ZikKK3sKKwlyZXR1cm4gZG9fc3RhdChwYXRoLCBidWYsIHN0YXQpOworfQorCisKKy8qCisgKiBBdCBzdGFydCB1cCwgd2UgYXJlIHRyeWluZyB0byBkZXRlcm1pbmUgd2hldGhlciBXaW4zMiBBUEkgb3IgY3lnd2luIHN0YXQKKyAqIGZ1bmN0aW9ucyBzaG91bGQgYmUgdXNlZC4gVGhlIGNob2ljZSBpcyBkZXRlcm1pbmVkIGJ5IGNvcmUuaWdub3JlY3lnd2luZnN0cmlja3MuCisgKiBSZWFkaW5nIHRoaXMgb3B0aW9uIGlzIG5vdCBhbHdheXMgcG9zc2libGUgaW1tZWRpYXRlbHkgYXMgZ2l0X2RpciBtYXkgYmUKKyAqIG5vdCBiZSBzZXQgeWV0LiBTbyB1bnRpbCBpdCBpcyBzZXQsIHVzZSBjeWd3aW4gbHN0YXQvc3RhdCBmdW5jdGlvbnMuCisgKiBIb3dldmVyLCBpZiBjb3JlLmZpbGVtb2RlIGlzIHNldCwgd2UgbXVzdCB1c2UgdGhlIEN5Z3dpbiBwb3NpeAorICogc3RhdC9sc3RhdCBhcyB0aGUgV2luZG93cyBzdGF0IGZ1Y3Rpb25zIGRvIG5vdCBkZXRlcm1pbmUgcG9zaXggZmlsZW1vZGUuCisgKgorICogTm90ZSB0aGF0IGdpdF9jeWd3aW5fY29uZmlnKCkgZG9lcyBOT1QgY2FsbCBnaXRfZGVmYXVsdF9jb25maWcoKSBhbmQgdGhpcworICogaXMgZGVsaWJlcmF0ZS4gIE1hbnkgY29tbWFuZHMgcmVhZCBmcm9tIGNvbmZpZyB0byBlc3RhYmxpc2ggaW5pdGlhbAorICogdmFsdWVzIGluIHZhcmlhYmxlcyBhbmQgbGF0ZXIgdHdlYWsgdGhlbSBmcm9tIGVsc2V3aGVyZSAoZS5nLiBjb21tYW5kIGxpbmUpLgorICogaW5pdF9zdGF0KCkgaXMgY2FsbGVkIGxhemlseSBvbiBkZW1hbmQsIHR5cGljYWxseSBtdWNoIGxhdGUgaW4gdGhlIHByb2dyYW0sCisgKiBhbmQgY2FsbGluZyBnaXRfZGVmYXVsdF9jb25maWcoKSBmcm9tIGhlcmUgd291bGQgYnJlYWsgc3VjaCB2YXJpYWJsZXMuCisgKi8KK3N0YXRpYyBpbnQgbmF0aXZlX3N0YXQgPSAxOworc3RhdGljIGludCBjb3JlX2ZpbGVtb2RlOworCitzdGF0aWMgaW50IGdpdF9jeWd3aW5fY29uZmlnKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUsIHZvaWQgKmNiKQoreworCWlmICghc3RyY21wKHZhciwgImNvcmUuaWdub3JlY3lnd2luZnN0cmlja3MiKSkKKwkJbmF0aXZlX3N0YXQgPSBnaXRfY29uZmlnX2Jvb2wodmFyLCB2YWx1ZSk7CisJZWxzZSBpZiAoIXN0cmNtcCh2YXIsICJjb3JlLmZpbGVtb2RlIikpCisJCWNvcmVfZmlsZW1vZGUgPSBnaXRfY29uZmlnX2Jvb2wodmFyLCB2YWx1ZSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaW5pdF9zdGF0KHZvaWQpCit7CisJaWYgKGhhdmVfZ2l0X2RpcigpKSB7CisJCWdpdF9jb25maWcoZ2l0X2N5Z3dpbl9jb25maWcsIE5VTEwpOworCQlpZiAoIWNvcmVfZmlsZW1vZGUgJiYgbmF0aXZlX3N0YXQpIHsKKwkJCWN5Z3dpbl9zdGF0X2ZuID0gY3lnd2luX3N0YXQ7CisJCQljeWd3aW5fbHN0YXRfZm4gPSBjeWd3aW5fbHN0YXQ7CisJCX0gZWxzZSB7CisJCQljeWd3aW5fc3RhdF9mbiA9IHN0YXQ7CisJCQljeWd3aW5fbHN0YXRfZm4gPSBsc3RhdDsKKwkJfQorCQlyZXR1cm4gMDsKKwl9CisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQgY3lnd2luX3N0YXRfc3R1Yihjb25zdCBjaGFyICpmaWxlX25hbWUsIHN0cnVjdCBzdGF0ICpidWYpCit7CisJcmV0dXJuIChpbml0X3N0YXQoKSA/IHN0YXQgOiAqY3lnd2luX3N0YXRfZm4pKGZpbGVfbmFtZSwgYnVmKTsKK30KKworc3RhdGljIGludCBjeWd3aW5fbHN0YXRfc3R1Yihjb25zdCBjaGFyICpmaWxlX25hbWUsIHN0cnVjdCBzdGF0ICpidWYpCit7CisJcmV0dXJuIChpbml0X3N0YXQoKSA/IGxzdGF0IDogKmN5Z3dpbl9sc3RhdF9mbikoZmlsZV9uYW1lLCBidWYpOworfQorCitzdGF0X2ZuX3QgY3lnd2luX3N0YXRfZm4gPSBjeWd3aW5fc3RhdF9zdHViOworc3RhdF9mbl90IGN5Z3dpbl9sc3RhdF9mbiA9IGN5Z3dpbl9sc3RhdF9zdHViOworCmRpZmYgLS1naXQgYS9jb21wYXQvY3lnd2luLmggYi9jb21wYXQvY3lnd2luLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTMyMjlmNQotLS0gL2Rldi9udWxsCisrKyBiL2NvbXBhdC9jeWd3aW4uaApAQCAtMCwwICsxLDkgQEAKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorCit0eXBlZGVmIGludCAoKnN0YXRfZm5fdCkoY29uc3QgY2hhciosIHN0cnVjdCBzdGF0Kik7CitleHRlcm4gc3RhdF9mbl90IGN5Z3dpbl9zdGF0X2ZuOworZXh0ZXJuIHN0YXRfZm5fdCBjeWd3aW5fbHN0YXRfZm47CisKKyNkZWZpbmUgc3RhdChwYXRoLCBidWYpICgqY3lnd2luX3N0YXRfZm4pKHBhdGgsIGJ1ZikKKyNkZWZpbmUgbHN0YXQocGF0aCwgYnVmKSAoKmN5Z3dpbl9sc3RhdF9mbikocGF0aCwgYnVmKQpkaWZmIC0tZ2l0IGEvY29tcGF0L21pbmd3LmMgYi9jb21wYXQvbWluZ3cuYwppbmRleCA0NTczM2Y5Li4zZGJlNmE3IDEwMDY0NAotLS0gYS9jb21wYXQvbWluZ3cuYworKysgYi9jb21wYXQvbWluZ3cuYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlICIuLi9naXQtY29tcGF0LXV0aWwuaCIKKyNpbmNsdWRlICJ3aW4zMi5oIgogI2luY2x1ZGUgIi4uL3N0cmJ1Zi5oIgogCiB1bnNpZ25lZCBpbnQgX0NSVF9mbW9kZSA9IF9PX0JJTkFSWTsKQEAgLTMxLDEyICszMiw2IEBACiAJcmV0dXJuICh0aW1lX3Qpd2luVGltZTsKIH0KIAotc3RhdGljIGlubGluZSBzaXplX3Qgc2l6ZV90b19ibG9ja3Moc2l6ZV90IHMpCi17Ci0JcmV0dXJuIChzKzUxMSkvNTEyOwotfQotCi1leHRlcm4gaW50IF9nZXRkcml2ZSggdm9pZCApOwogLyogV2Uga2VlcCB0aGUgZG9fbHN0YXQgY29kZSBpbiBhIHNlcGFyYXRlIGZ1bmN0aW9uIHRvIGF2b2lkIHJlY3Vyc2lvbi4KICAqIFdoZW4gYSBwYXRoIGVuZHMgd2l0aCBhIHNsYXNoLCB0aGUgc3RhdCB3aWxsIGZhaWwgd2l0aCBFTk9FTlQuIEluCiAgKiB0aGlzIGNhc2UsIHdlIHN0cmlwIHRoZSB0cmFpbGluZyBzbGFzaGVzIGFuZCBzdGF0IGFnYWluLgpAQCAtNDUsNDYgKzQwLDE5IEBACiB7CiAJV0lOMzJfRklMRV9BVFRSSUJVVEVfREFUQSBmZGF0YTsKIAotCWlmIChHZXRGaWxlQXR0cmlidXRlc0V4QShmaWxlX25hbWUsIEdldEZpbGVFeEluZm9TdGFuZGFyZCwgJmZkYXRhKSkgewotCQlpbnQgZk1vZGUgPSBTX0lSRUFEOwotCQlpZiAoZmRhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkKLQkJCWZNb2RlIHw9IFNfSUZESVI7Ci0JCWVsc2UKLQkJCWZNb2RlIHw9IFNfSUZSRUc7Ci0JCWlmICghKGZkYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9SRUFET05MWSkpCi0JCQlmTW9kZSB8PSBTX0lXUklURTsKLQorCWlmICghKGVycm5vID0gZ2V0X2ZpbGVfYXR0cihmaWxlX25hbWUsICZmZGF0YSkpKSB7CiAJCWJ1Zi0+c3RfaW5vID0gMDsKIAkJYnVmLT5zdF9naWQgPSAwOwogCQlidWYtPnN0X3VpZCA9IDA7Ci0JCWJ1Zi0+c3RfbW9kZSA9IGZNb2RlOworCQlidWYtPnN0X25saW5rID0gMTsKKwkJYnVmLT5zdF9tb2RlID0gZmlsZV9hdHRyX3RvX3N0X21vZGUoZmRhdGEuZHdGaWxlQXR0cmlidXRlcyk7CiAJCWJ1Zi0+c3Rfc2l6ZSA9IGZkYXRhLm5GaWxlU2l6ZUxvdzsgLyogQ2FuJ3QgdXNlIG5GaWxlU2l6ZUhpZ2gsIHNpbmNlIGl0J3Mgbm90IGEgc3RhdDY0ICovCi0JCWJ1Zi0+c3RfYmxvY2tzID0gc2l6ZV90b19ibG9ja3MoYnVmLT5zdF9zaXplKTsKLQkJYnVmLT5zdF9kZXYgPSBfZ2V0ZHJpdmUoKSAtIDE7CisJCWJ1Zi0+c3RfZGV2ID0gYnVmLT5zdF9yZGV2ID0gMDsgLyogbm90IHVzZWQgYnkgR2l0ICovCiAJCWJ1Zi0+c3RfYXRpbWUgPSBmaWxldGltZV90b190aW1lX3QoJihmZGF0YS5mdExhc3RBY2Nlc3NUaW1lKSk7CiAJCWJ1Zi0+c3RfbXRpbWUgPSBmaWxldGltZV90b190aW1lX3QoJihmZGF0YS5mdExhc3RXcml0ZVRpbWUpKTsKIAkJYnVmLT5zdF9jdGltZSA9IGZpbGV0aW1lX3RvX3RpbWVfdCgmKGZkYXRhLmZ0Q3JlYXRpb25UaW1lKSk7Ci0JCWVycm5vID0gMDsKIAkJcmV0dXJuIDA7CiAJfQotCi0Jc3dpdGNoIChHZXRMYXN0RXJyb3IoKSkgewotCWNhc2UgRVJST1JfQUNDRVNTX0RFTklFRDoKLQljYXNlIEVSUk9SX1NIQVJJTkdfVklPTEFUSU9OOgotCWNhc2UgRVJST1JfTE9DS19WSU9MQVRJT046Ci0JY2FzZSBFUlJPUl9TSEFSSU5HX0JVRkZFUl9FWENFRURFRDoKLQkJZXJybm8gPSBFQUNDRVM7Ci0JCWJyZWFrOwotCWNhc2UgRVJST1JfQlVGRkVSX09WRVJGTE9XOgotCQllcnJubyA9IEVOQU1FVE9PTE9ORzsKLQkJYnJlYWs7Ci0JY2FzZSBFUlJPUl9OT1RfRU5PVUdIX01FTU9SWToKLQkJZXJybm8gPSBFTk9NRU07Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCWVycm5vID0gRU5PRU5UOwotCQlicmVhazsKLQl9CiAJcmV0dXJuIC0xOwogfQogCkBAIC05NCw3ICs2Miw3IEBACiAgKiBjb21wbGV0ZS4gTm90ZSB0aGF0IEdpdCBzdGF0KClzIGFyZSByZWRpcmVjdGVkIHRvIG1pbmd3X2xzdGF0KCkKICAqIHRvbywgc2luY2UgV2luZG93cyBkb2Vzbid0IHJlYWxseSBoYW5kbGUgc3ltbGlua3MgdGhhdCB3ZWxsLgogICovCi1pbnQgbWluZ3dfbHN0YXQoY29uc3QgY2hhciAqZmlsZV9uYW1lLCBzdHJ1Y3QgbWluZ3dfc3RhdCAqYnVmKQoraW50IG1pbmd3X2xzdGF0KGNvbnN0IGNoYXIgKmZpbGVfbmFtZSwgc3RydWN0IHN0YXQgKmJ1ZikKIHsKIAlpbnQgbmFtZWxlbjsKIAlzdGF0aWMgY2hhciBhbHRfbmFtZVtQQVRIX01BWF07CkBAIC0xMjIsOCArOTAsNyBAQAogfQogCiAjdW5kZWYgZnN0YXQKLSN1bmRlZiBzdGF0Ci1pbnQgbWluZ3dfZnN0YXQoaW50IGZkLCBzdHJ1Y3QgbWluZ3dfc3RhdCAqYnVmKQoraW50IG1pbmd3X2ZzdGF0KGludCBmZCwgc3RydWN0IHN0YXQgKmJ1ZikKIHsKIAlIQU5ETEUgZmggPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKTsKIAlCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiBmZGF0YTsKQEAgLTEzMywzOSArMTAwLDE3IEBACiAJCXJldHVybiAtMTsKIAl9CiAJLyogZGlyZWN0IG5vbi1maWxlIGhhbmRsZXMgdG8gTVMncyBmc3RhdCgpICovCi0JaWYgKEdldEZpbGVUeXBlKGZoKSAhPSBGSUxFX1RZUEVfRElTSykgewotCQlzdHJ1Y3Qgc3RhdCBzdDsKLQkJaWYgKGZzdGF0KGZkLCAmc3QpKQotCQkJcmV0dXJuIC0xOwotCQlidWYtPnN0X2lubyA9IHN0LnN0X2lubzsKLQkJYnVmLT5zdF9naWQgPSBzdC5zdF9naWQ7Ci0JCWJ1Zi0+c3RfdWlkID0gc3Quc3RfdWlkOwotCQlidWYtPnN0X21vZGUgPSBzdC5zdF9tb2RlOwotCQlidWYtPnN0X3NpemUgPSBzdC5zdF9zaXplOwotCQlidWYtPnN0X2Jsb2NrcyA9IHNpemVfdG9fYmxvY2tzKGJ1Zi0+c3Rfc2l6ZSk7Ci0JCWJ1Zi0+c3RfZGV2ID0gc3Quc3RfZGV2OwotCQlidWYtPnN0X2F0aW1lID0gc3Quc3RfYXRpbWU7Ci0JCWJ1Zi0+c3RfbXRpbWUgPSBzdC5zdF9tdGltZTsKLQkJYnVmLT5zdF9jdGltZSA9IHN0LnN0X2N0aW1lOwotCQlyZXR1cm4gMDsKLQl9CisJaWYgKEdldEZpbGVUeXBlKGZoKSAhPSBGSUxFX1RZUEVfRElTSykKKwkJcmV0dXJuIGZzdGF0KGZkLCBidWYpOwogCiAJaWYgKEdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKGZoLCAmZmRhdGEpKSB7Ci0JCWludCBmTW9kZSA9IFNfSVJFQUQ7Ci0JCWlmIChmZGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQotCQkJZk1vZGUgfD0gU19JRkRJUjsKLQkJZWxzZQotCQkJZk1vZGUgfD0gU19JRlJFRzsKLQkJaWYgKCEoZmRhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX1JFQURPTkxZKSkKLQkJCWZNb2RlIHw9IFNfSVdSSVRFOwotCiAJCWJ1Zi0+c3RfaW5vID0gMDsKIAkJYnVmLT5zdF9naWQgPSAwOwogCQlidWYtPnN0X3VpZCA9IDA7Ci0JCWJ1Zi0+c3RfbW9kZSA9IGZNb2RlOworCQlidWYtPnN0X25saW5rID0gMTsKKwkJYnVmLT5zdF9tb2RlID0gZmlsZV9hdHRyX3RvX3N0X21vZGUoZmRhdGEuZHdGaWxlQXR0cmlidXRlcyk7CiAJCWJ1Zi0+c3Rfc2l6ZSA9IGZkYXRhLm5GaWxlU2l6ZUxvdzsgLyogQ2FuJ3QgdXNlIG5GaWxlU2l6ZUhpZ2gsIHNpbmNlIGl0J3Mgbm90IGEgc3RhdDY0ICovCi0JCWJ1Zi0+c3RfYmxvY2tzID0gc2l6ZV90b19ibG9ja3MoYnVmLT5zdF9zaXplKTsKLQkJYnVmLT5zdF9kZXYgPSBfZ2V0ZHJpdmUoKSAtIDE7CisJCWJ1Zi0+c3RfZGV2ID0gYnVmLT5zdF9yZGV2ID0gMDsgLyogbm90IHVzZWQgYnkgR2l0ICovCiAJCWJ1Zi0+c3RfYXRpbWUgPSBmaWxldGltZV90b190aW1lX3QoJihmZGF0YS5mdExhc3RBY2Nlc3NUaW1lKSk7CiAJCWJ1Zi0+c3RfbXRpbWUgPSBmaWxldGltZV90b190aW1lX3QoJihmZGF0YS5mdExhc3RXcml0ZVRpbWUpKTsKIAkJYnVmLT5zdF9jdGltZSA9IGZpbGV0aW1lX3RvX3RpbWVfdCgmKGZkYXRhLmZ0Q3JlYXRpb25UaW1lKSk7CkBAIC0yODMsOCArMjI4LDEzIEBACiB7CiAJaW50IGksIHBlbmRpbmc7CiAKLQlpZiAodGltZW91dCAhPSAtMSkKKwlpZiAodGltZW91dCA+PSAwKSB7CisJCWlmIChuZmRzID09IDApIHsKKwkJCVNsZWVwKHRpbWVvdXQpOworCQkJcmV0dXJuIDA7CisJCX0KIAkJcmV0dXJuIGVycm5vID0gRUlOVkFMLCBlcnJvcigicG9sbCB0aW1lb3V0IG5vdCBzdXBwb3J0ZWQiKTsKKwl9CiAKIAkvKiBXaGVuIHRoZXJlIGlzIG9ubHkgb25lIGZkIHRvIHdhaXQgZm9yLCB0aGVuIHdlIHByZXRlbmQgdGhhdAogCSAqIGlucHV0IGlzIGF2YWlsYWJsZSBhbmQgbGV0IHRoZSBhY3R1YWwgd2FpdCBoYXBwZW4gd2hlbiB0aGUKQEAgLTU4NiwxMiArNTM2LDE2IEBACiAJCSAqIHdvdWxkIG5vcm1hbGx5IGNyZWF0ZSBhIGNvbnNvbGUgd2luZG93LiBCdXQKIAkJICogc2luY2Ugd2UnbGwgYmUgcmVkaXJlY3Rpbmcgc3RkIHN0cmVhbXMsIHdlIGRvCiAJCSAqIG5vdCBuZWVkIHRoZSBjb25zb2xlLgorCQkgKiBJdCBpcyBuZWNlc3NhcnkgdG8gdXNlIERFVEFDSEVEX1BST0NFU1MKKwkJICogaW5zdGVhZCBvZiBDUkVBVEVfTk9fV0lORE9XIHRvIG1ha2Ugc3NoCisJCSAqIHJlY29nbml6ZSB0aGF0IGl0IGhhcyBubyBjb25zb2xlLgogCQkgKi8KLQkJZmxhZ3MgPSBDUkVBVEVfTk9fV0lORE9XOworCQlmbGFncyA9IERFVEFDSEVEX1BST0NFU1M7CiAJfSBlbHNlIHsKIAkJLyogVGhlcmUgaXMgYWxyZWFkeSBhIGNvbnNvbGUuIElmIHdlIHNwZWNpZmllZAotCQkgKiBDUkVBVEVfTk9fV0lORE9XIGhlcmUsIHRvbywgV2luZG93cyB3b3VsZAorCQkgKiBERVRBQ0hFRF9QUk9DRVNTIGhlcmUsIHRvbywgV2luZG93cyB3b3VsZAogCQkgKiBkaXNhc3NvY2lhdGUgdGhlIGNoaWxkIGZyb20gdGhlIGNvbnNvbGUuCisJCSAqIFRoZSBzYW1lIGlzIHRydWUgZm9yIENSRUFURV9OT19XSU5ET1cuCiAJCSAqIEdvIGZpZ3VyZSEKIAkJICovCiAJCWZsYWdzID0gMDsKZGlmZiAtLWdpdCBhL2NvbXBhdC9taW5ndy5oIGIvY29tcGF0L21pbmd3LmgKaW5kZXggYTUyZTY1Ny4uNGYyNzVjYiAxMDA2NDQKLS0tIGEvY29tcGF0L21pbmd3LmgKKysrIGIvY29tcGF0L21pbmd3LmgKQEAgLTE2MiwyMiArMTYyLDEyIEBACiAKIC8qIFVzZSBtaW5nd19sc3RhdCgpIGluc3RlYWQgb2YgbHN0YXQoKS9zdGF0KCkgYW5kCiAgKiBtaW5nd19mc3RhdCgpIGluc3RlYWQgb2YgZnN0YXQoKSBvbiBXaW5kb3dzLgotICogc3RydWN0IHN0YXQgaXMgcmVkZWZpbmVkIGJlY2F1c2UgaXQgbGFja3MgdGhlIHN0X2Jsb2NrcyBtZW1iZXIuCiAgKi8KLXN0cnVjdCBtaW5nd19zdGF0IHsKLQl1bnNpZ25lZCBzdF9tb2RlOwotCXRpbWVfdCBzdF9tdGltZSwgc3RfYXRpbWUsIHN0X2N0aW1lOwotCXVuc2lnbmVkIHN0X2Rldiwgc3RfaW5vLCBzdF91aWQsIHN0X2dpZDsKLQlzaXplX3Qgc3Rfc2l6ZTsKLQlzaXplX3Qgc3RfYmxvY2tzOwotfTsKLWludCBtaW5nd19sc3RhdChjb25zdCBjaGFyICpmaWxlX25hbWUsIHN0cnVjdCBtaW5nd19zdGF0ICpidWYpOwotaW50IG1pbmd3X2ZzdGF0KGludCBmZCwgc3RydWN0IG1pbmd3X3N0YXQgKmJ1Zik7CitpbnQgbWluZ3dfbHN0YXQoY29uc3QgY2hhciAqZmlsZV9uYW1lLCBzdHJ1Y3Qgc3RhdCAqYnVmKTsKK2ludCBtaW5nd19mc3RhdChpbnQgZmQsIHN0cnVjdCBzdGF0ICpidWYpOwogI2RlZmluZSBmc3RhdCBtaW5nd19mc3RhdAogI2RlZmluZSBsc3RhdCBtaW5nd19sc3RhdAotI2RlZmluZSBzdGF0IG1pbmd3X3N0YXQKLXN0YXRpYyBpbmxpbmUgaW50IG1pbmd3X3N0YXQoY29uc3QgY2hhciAqZmlsZV9uYW1lLCBzdHJ1Y3QgbWluZ3dfc3RhdCAqYnVmKQoteyByZXR1cm4gbWluZ3dfbHN0YXQoZmlsZV9uYW1lLCBidWYpOyB9CisjZGVmaW5lIHN0YXQoeCx5KSBtaW5nd19sc3RhdCh4LHkpCiAKIGludCBtaW5nd191dGltZShjb25zdCBjaGFyICpmaWxlX25hbWUsIGNvbnN0IHN0cnVjdCB1dGltYnVmICp0aW1lcyk7CiAjZGVmaW5lIHV0aW1lIG1pbmd3X3V0aW1lCmRpZmYgLS1naXQgYS9jb21wYXQvd2luMzIuaCBiL2NvbXBhdC93aW4zMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyNjM4NGUKLS0tIC9kZXYvbnVsbAorKysgYi9jb21wYXQvd2luMzIuaApAQCAtMCwwICsxLDM0IEBACisvKiBjb21tb24gV2luMzIgZnVuY3Rpb25zIGZvciBNaW5HVyBhbmQgQ3lnd2luICovCisjaW5jbHVkZSA8d2luZG93cy5oPgorCitzdGF0aWMgaW5saW5lIGludCBmaWxlX2F0dHJfdG9fc3RfbW9kZSAoRFdPUkQgYXR0cikKK3sKKwlpbnQgZk1vZGUgPSBTX0lSRUFEOworCWlmIChhdHRyICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQorCQlmTW9kZSB8PSBTX0lGRElSOworCWVsc2UKKwkJZk1vZGUgfD0gU19JRlJFRzsKKwlpZiAoIShhdHRyICYgRklMRV9BVFRSSUJVVEVfUkVBRE9OTFkpKQorCQlmTW9kZSB8PSBTX0lXUklURTsKKwlyZXR1cm4gZk1vZGU7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGdldF9maWxlX2F0dHIoY29uc3QgY2hhciAqZm5hbWUsIFdJTjMyX0ZJTEVfQVRUUklCVVRFX0RBVEEgKmZkYXRhKQoreworCWlmIChHZXRGaWxlQXR0cmlidXRlc0V4QShmbmFtZSwgR2V0RmlsZUV4SW5mb1N0YW5kYXJkLCBmZGF0YSkpCisJCXJldHVybiAwOworCisJc3dpdGNoIChHZXRMYXN0RXJyb3IoKSkgeworCWNhc2UgRVJST1JfQUNDRVNTX0RFTklFRDoKKwljYXNlIEVSUk9SX1NIQVJJTkdfVklPTEFUSU9OOgorCWNhc2UgRVJST1JfTE9DS19WSU9MQVRJT046CisJY2FzZSBFUlJPUl9TSEFSSU5HX0JVRkZFUl9FWENFRURFRDoKKwkJcmV0dXJuIEVBQ0NFUzsKKwljYXNlIEVSUk9SX0JVRkZFUl9PVkVSRkxPVzoKKwkJcmV0dXJuIEVOQU1FVE9PTE9ORzsKKwljYXNlIEVSUk9SX05PVF9FTk9VR0hfTUVNT1JZOgorCQlyZXR1cm4gRU5PTUVNOworCWRlZmF1bHQ6CisJCXJldHVybiBFTk9FTlQ7CisJfQorfQpkaWZmIC0tZ2l0IGEvY29uZmlnLmMgYi9jb25maWcuYwppbmRleCA4MjgwN2M4Li43OTA0MDVhIDEwMDY0NAotLS0gYS9jb25maWcuYworKysgYi9jb25maWcuYwpAQCAtMjA1LDggKzIwNSwyNyBAQAogCWludCBiYXNlbGVuID0gMDsKIAlzdGF0aWMgY2hhciB2YXJbTUFYTkFNRV07CiAKKwkvKiBVK0ZFRkYgQnl0ZSBPcmRlciBNYXJrIGluIFVURjggKi8KKwlzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciAqdXRmOF9ib20gPSAodW5zaWduZWQgY2hhciAqKSAiXHhlZlx4YmJceGJmIjsKKwljb25zdCB1bnNpZ25lZCBjaGFyICpib21wdHIgPSB1dGY4X2JvbTsKKwogCWZvciAoOzspIHsKIAkJaW50IGMgPSBnZXRfbmV4dF9jaGFyKCk7CisJCWlmIChib21wdHIgJiYgKmJvbXB0cikgeworCQkJLyogV2UgYXJlIGF0IHRoZSBmaWxlIGJlZ2lubmluZzsgc2tpcCBVVEY4LWVuY29kZWQgQk9NCisJCQkgKiBpZiBwcmVzZW50LiBTYW5lIGVkaXRvcnMgd29uJ3QgcHV0IHRoaXMgaW4gb24gdGhlaXIKKwkJCSAqIG93biwgYnV0IGUuZy4gV2luZG93cyBOb3RlcGFkIHdpbGwgZG8gaXQgaGFwcGlseS4gKi8KKwkJCWlmICgodW5zaWduZWQgY2hhcikgYyA9PSAqYm9tcHRyKSB7CisJCQkJYm9tcHRyKys7CisJCQkJY29udGludWU7CisJCQl9IGVsc2UgeworCQkJCS8qIERvIG5vdCB0b2xlcmF0ZSBwYXJ0aWFsIEJPTS4gKi8KKwkJCQlpZiAoYm9tcHRyICE9IHV0ZjhfYm9tKQorCQkJCQlicmVhazsKKwkJCQkvKiBObyBCT00gYXQgZmlsZSBiZWdpbm5pbmcuIENvb2wuICovCisJCQkJYm9tcHRyID0gTlVMTDsKKwkJCX0KKwkJfQogCQlpZiAoYyA9PSAnXG4nKSB7CiAJCQlpZiAoY29uZmlnX2ZpbGVfZW9mKQogCQkJCXJldHVybiAwOwpAQCAtMjU1LDcgKzI3NCw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLWludCBnaXRfcGFyc2VfbG9uZyhjb25zdCBjaGFyICp2YWx1ZSwgbG9uZyAqcmV0KQorc3RhdGljIGludCBnaXRfcGFyc2VfbG9uZyhjb25zdCBjaGFyICp2YWx1ZSwgbG9uZyAqcmV0KQogewogCWlmICh2YWx1ZSAmJiAqdmFsdWUpIHsKIAkJY2hhciAqZW5kOwpAQCAtMjkxLDcgKzMxMCw3IEBACiAKIGludCBnaXRfY29uZmlnX2ludChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKIHsKLQlsb25nIHJldDsKKwlsb25nIHJldCA9IDA7CiAJaWYgKCFnaXRfcGFyc2VfbG9uZyh2YWx1ZSwgJnJldCkpCiAJCWRpZV9iYWRfY29uZmlnKG5hbWUpOwogCXJldHVybiByZXQ7CkBAIC00NzEsNiArNDkwLDExIEBACiAJCXJldHVybiAwOwogCX0KIAorCWlmICghc3RyY21wKHZhciwgImNvcmUucHJlbG9hZGluZGV4IikpIHsKKwkJY29yZV9wcmVsb2FkX2luZGV4ID0gZ2l0X2NvbmZpZ19ib29sKHZhciwgdmFsdWUpOworCQlyZXR1cm4gMDsKKwl9CisKIAkvKiBBZGQgb3RoZXIgY29uZmlnIHZhcmlhYmxlcyBoZXJlIGFuZCB0byBEb2N1bWVudGF0aW9uL2NvbmZpZy50eHQuICovCiAJcmV0dXJuIDA7CiB9CkBAIC02MTIsMTAgKzYzNiw3IEBACiAJY2hhciAqcmVwb19jb25maWcgPSBOVUxMOwogCWNvbnN0IGNoYXIgKmhvbWUgPSBOVUxMOwogCi0JLyogJEdJVF9DT05GSUcgbWFrZXMgZ2l0IHJlYWQgX29ubHlfIHRoZSBnaXZlbiBjb25maWcgZmlsZSwKLQkgKiAkR0lUX0NPTkZJR19MT0NBTCB3aWxsIG1ha2UgaXQgcHJvY2VzcyBpdCBpbiBhZGRpdGlvbiB0byB0aGUKLQkgKiBnbG9iYWwgY29uZmlnIGZpbGUsIHRoZSBzYW1lIHdheSBpdCB3b3VsZCB0aGUgcGVyLXJlcG9zaXRvcnkKLQkgKiBjb25maWcgZmlsZSBvdGhlcndpc2UuICovCisJLyogU2V0dGluZyAkR0lUX0NPTkZJRyBtYWtlcyBnaXQgcmVhZCBfb25seV8gdGhlIGdpdmVuIGNvbmZpZyBmaWxlLiAqLwogCWlmIChjb25maWdfZXhjbHVzaXZlX2ZpbGVuYW1lKQogCQlyZXR1cm4gZ2l0X2NvbmZpZ19mcm9tX2ZpbGUoZm4sIGNvbmZpZ19leGNsdXNpdmVfZmlsZW5hbWUsIGRhdGEpOwogCWlmIChnaXRfY29uZmlnX3N5c3RlbSgpICYmICFhY2Nlc3MoZ2l0X2V0Y19naXRjb25maWcoKSwgUl9PSykpCkBAIC03MzQsOSArNzU1LDggQEAKIHsKIAljb25zdCBjaGFyICpkb3Q7CiAJaW50IGksIHN1Y2Nlc3M7Ci0Jc3RydWN0IHN0cmJ1ZiBzYjsKKwlzdHJ1Y3Qgc3RyYnVmIHNiID0gU1RSQlVGX0lOSVQ7CiAKLQlzdHJidWZfaW5pdCgmc2IsIDApOwogCWRvdCA9IG1lbWNocihrZXksICcuJywgc3RvcmUuYmFzZWxlbik7CiAJaWYgKGRvdCkgewogCQlzdHJidWZfYWRkZigmc2IsICJbJS4qcyBcIiIsIChpbnQpKGRvdCAtIGtleSksIGtleSk7CkBAIC03NjEsNyArNzgxLDcgQEAKIAlpbnQgaSwgc3VjY2VzczsKIAlpbnQgbGVuZ3RoID0gc3RybGVuKGtleSArIHN0b3JlLmJhc2VsZW4gKyAxKTsKIAljb25zdCBjaGFyICpxdW90ZSA9ICIiOwotCXN0cnVjdCBzdHJidWYgc2I7CisJc3RydWN0IHN0cmJ1ZiBzYiA9IFNUUkJVRl9JTklUOwogCiAJLyoKIAkgKiBDaGVjayB0byBzZWUgaWYgdGhlIHZhbHVlIG5lZWRzIHRvIGJlIHN1cnJvdW5kZWQgd2l0aCBhIGRxIHBhaXIuCkBAIC03NzgsNyArNzk4LDYgQEAKIAlpZiAoaSAmJiB2YWx1ZVtpIC0gMV0gPT0gJyAnKQogCQlxdW90ZSA9ICJcIiI7CiAKLQlzdHJidWZfaW5pdCgmc2IsIDApOwogCXN0cmJ1Zl9hZGRmKCZzYiwgIlx0JS4qcyA9ICVzIiwKIAkJICAgIGxlbmd0aCwga2V5ICsgc3RvcmUuYmFzZWxlbiArIDEsIHF1b3RlKTsKIApkaWZmIC0tZ2l0IGEvY29uZmlnLm1hay5pbiBiL2NvbmZpZy5tYWsuaW4KaW5kZXggYjc3NjE0OS4uMTRkZmIyMSAxMDA2NDQKLS0tIGEvY29uZmlnLm1hay5pbgorKysgYi9jb25maWcubWFrLmluCkBAIC0zLDYgKzMsOCBAQAogCiBDQyA9IEBDQ0AKIENGTEFHUyA9IEBDRkxBR1NACitMREZMQUdTID0gQExERkxBR1NACitDQ19MRF9EWU5QQVRIID0gQENDX0xEX0RZTlBBVEhACiBBUiA9IEBBUkAKIFRBUiA9IEBUQVJACiAjSU5TVEFMTCA9IEBJTlNUQUxMQAkJIyBuZWVkcyBpbnN0YWxsLXNoIG9yIGluc3RhbGwuc2ggaW4gc291cmNlcwpAQCAtMzksNiArNDEsNyBAQAogTk9fU1RSQ0FTRVNUUj1ATk9fU1RSQ0FTRVNUUkAKIE5PX01FTU1FTT1ATk9fTUVNTUVNQAogTk9fU1RSTENQWT1ATk9fU1RSTENQWUAKK05PX1VJTlRNQVhfVD1ATk9fVUlOVE1BWF9UQAogTk9fU1RSVE9VTUFYPUBOT19TVFJUT1VNQVhACiBOT19TRVRFTlY9QE5PX1NFVEVOVkAKIE5PX1VOU0VURU5WPUBOT19VTlNFVEVOVkAKQEAgLTQ4LDMgKzUxLDUgQEAKIE5PX0RFRkxBVEVfQk9VTkQ9QE5PX0RFRkxBVEVfQk9VTkRACiBGUkVBRF9SRUFEU19ESVJFQ1RPUklFUz1ARlJFQURfUkVBRFNfRElSRUNUT1JJRVNACiBTTlBSSU5URl9SRVRVUk5TX0JPR1VTPUBTTlBSSU5URl9SRVRVUk5TX0JPR1VTQAorTk9fUFRIUkVBRFM9QE5PX1BUSFJFQURTQAorUFRIUkVBRF9MSUJTPUBQVEhSRUFEX0xJQlNACmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggN2MyODU2ZS4uMGE1ZmM4YyAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtNjUsNyArNjUsMTcgQEAKIGZpIFwKIF0pIyBHSVRfUEFSU0VfV0lUSAogCi0KK2RubAorZG5sIEdJVF9DSEVDS19GVU5DKEZVTkNUSU9OLCBJRlRSVUUsIElGRkFMU0UpCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBTaW1pbGFyIHRvIEFDX0NIRUNLX0ZVTkMsIGJ1dCBvbiBzeXN0ZW1zIHRoYXQgZG8gbm90IGdlbmVyYXRlCitkbmwgd2FybmluZ3MgZm9yIG1pc3NpbmcgcHJvdG90eXBlcyAoZS5nLiBGcmVlQlNEIHdoZW4gY29tcGlsaW5nIHdpdGhvdXQKK2RubCAtV2FsbCksIGl0IGRvZXMgbm90IHdvcmsuICBCeSBsb29raW5nIGZvciBmdW5jdGlvbiBkZWZpbml0aW9uIGluCitkbmwgbGlicmFyaWVzLCB0aGlzIHByb2JsZW0gY2FuIGJlIHdvcmtlZCBhcm91bmQuCitBQ19ERUZVTihbR0lUX0NIRUNLX0ZVTkNdLFtBQ19DSEVDS19GVU5DKFskMV0sWworICBBQ19TRUFSQ0hfTElCUyhbJDFdLCwKKyAgWyQyXSxbJDNdKQorXSxbJDNdKV0pCiAjIyBTaXRlIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byBwcm9ncmFtcyAoYmVmb3JlIHRlc3RzKQogIyMgLS13aXRoLVBBQ0tBR0VbPUFSR10gYW5kIC0td2l0aG91dC1QQUNLQUdFCiAjCkBAIC0xMDMsNiArMTEzLDM4IEBACiBBQ19NU0dfTk9USUNFKFtDSEVDS1MgZm9yIHByb2dyYW1zXSkKICMKIEFDX1BST0dfQ0MoW2NjIGdjY10pCisjIHdoaWNoIHN3aXRjaCB0byBwYXNzIHJ1bnRpbWUgcGF0aCB0byBkeW5hbWljIGxpYnJhcmllcyB0byB0aGUgbGlua2VyCitBQ19DQUNIRV9DSEVDSyhbaWYgbGlua2VyIHN1cHBvcnRzIC1SXSwgbGRfZGFzaHIsIFsKKyAgIFNBVkVfTERGTEFHUz0iJHtMREZMQUdTfSIKKyAgIExERkxBR1M9IiR7U0FWRV9MREZMQUdTfSAtUiAvIgorICAgQUNfTElOS19JRkVMU0UoQUNfTEFOR19QUk9HUkFNKFtdLCBbXSksIFtsZF9kYXNocj15ZXNdLCBbbGRfZGFzaHI9bm9dKQorICAgTERGTEFHUz0iJHtTQVZFX0xERkxBR1N9IgorXSkKK2lmIHRlc3QgIiRsZF9kYXNociIgPSAieWVzIjsgdGhlbgorICAgQUNfU1VCU1QoQ0NfTERfRFlOUEFUSCwgWy1SXSkKK2Vsc2UKKyAgIEFDX0NBQ0hFX0NIRUNLKFtpZiBsaW5rZXIgc3VwcG9ydHMgLVdsLC1ycGF0aCxdLCBsZF93bF9ycGF0aCwgWworICAgICAgU0FWRV9MREZMQUdTPSIke0xERkxBR1N9IgorICAgICAgTERGTEFHUz0iJHtTQVZFX0xERkxBR1N9IC1XbCwtcnBhdGgsLyIKKyAgICAgIEFDX0xJTktfSUZFTFNFKEFDX0xBTkdfUFJPR1JBTShbXSwgW10pLCBbbGRfd2xfcnBhdGg9eWVzXSwgW2xkX3dsX3JwYXRoPW5vXSkKKyAgICAgIExERkxBR1M9IiR7U0FWRV9MREZMQUdTfSIKKyAgIF0pCisgICBpZiB0ZXN0ICIkbGRfd2xfcnBhdGgiID0gInllcyI7IHRoZW4KKyAgICAgIEFDX1NVQlNUKENDX0xEX0RZTlBBVEgsIFstV2wsLXJwYXRoLF0pCisgICBlbHNlCisgICAgICBBQ19DQUNIRV9DSEVDSyhbaWYgbGlua2VyIHN1cHBvcnRzIC1ycGF0aF0sIGxkX3JwYXRoLCBbCisgICAgICAgICBTQVZFX0xERkxBR1M9IiR7TERGTEFHU30iCisgICAgICAgICBMREZMQUdTPSIke1NBVkVfTERGTEFHU30gLXJwYXRoIC8iCisgICAgICAgICBBQ19MSU5LX0lGRUxTRShBQ19MQU5HX1BST0dSQU0oW10sIFtdKSwgW2xkX3JwYXRoPXllc10sIFtsZF9ycGF0aD1ub10pCisgICAgICAgICBMREZMQUdTPSIke1NBVkVfTERGTEFHU30iCisgICAgICBdKQorICAgICAgaWYgdGVzdCAiJGxkX3JwYXRoIiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgICBBQ19TVUJTVChDQ19MRF9EWU5QQVRILCBbLXJwYXRoXSkKKyAgICAgIGVsc2UKKyAgICAgICAgIEFDX01TR19XQVJOKFtsaW5rZXIgZG9lcyBub3Qgc3VwcG9ydCBydW50aW1lIHBhdGggdG8gZHluYW1pYyBsaWJyYXJpZXNdKQorICAgICAgZmkKKyAgIGZpCitmaQogI0FDX1BST0dfSU5TVEFMTAkJIyBuZWVkcyBpbnN0YWxsLXNoIG9yIGluc3RhbGwuc2ggaW4gc291cmNlcwogQUNfQ0hFQ0tfVE9PTFMoQVIsIFtnYXIgYXJdLCA6KQogQUNfQ0hFQ0tfUFJPR1MoVEFSLCBbZ3RhciB0YXJdKQpAQCAtMjkzLDcgKzMzNSw3IEBACiAjCiAjIERlZmluZSBOT19JUFY2IGlmIHlvdSBsYWNrIElQdjYgc3VwcG9ydCBhbmQgZ2V0YWRkcmluZm8oKS4KIEFDX0NIRUNLX1RZUEUoW3N0cnVjdCBhZGRyaW5mb10sWwotIEFDX0NIRUNLX0ZVTkMoW2dldGFkZHJpbmZvXSwKKyBHSVRfQ0hFQ0tfRlVOQyhbZ2V0YWRkcmluZm9dLAogICBbTk9fSVBWNj1dLAogICBbTk9fSVBWNj1ZZXNQbGVhc2VdKQogXSxbTk9fSVBWNj1ZZXNQbGVhc2VdLFsKQEAgLTM4Nyw0MyArNDI5LDUxIEBACiBBQ19NU0dfTk9USUNFKFtDSEVDS1MgZm9yIGxpYnJhcnkgZnVuY3Rpb25zXSkKICMKICMgRGVmaW5lIE5PX1NUUkNBU0VTVFIgaWYgeW91IGRvbid0IGhhdmUgc3RyY2FzZXN0ci4KLUFDX0NIRUNLX0ZVTkMoc3RyY2FzZXN0ciwKK0dJVF9DSEVDS19GVU5DKHN0cmNhc2VzdHIsCiBbTk9fU1RSQ0FTRVNUUj1dLAogW05PX1NUUkNBU0VTVFI9WWVzUGxlYXNlXSkKIEFDX1NVQlNUKE5PX1NUUkNBU0VTVFIpCiAjCiAjIERlZmluZSBOT19NRU1NRU0gaWYgeW91IGRvbid0IGhhdmUgbWVtbWVtLgotQUNfQ0hFQ0tfRlVOQyhtZW1tZW0sCitHSVRfQ0hFQ0tfRlVOQyhtZW1tZW0sCiBbTk9fTUVNTUVNPV0sCiBbTk9fTUVNTUVNPVllc1BsZWFzZV0pCiBBQ19TVUJTVChOT19NRU1NRU0pCiAjCiAjIERlZmluZSBOT19TVFJMQ1BZIGlmIHlvdSBkb24ndCBoYXZlIHN0cmxjcHkuCi1BQ19DSEVDS19GVU5DKHN0cmxjcHksCitHSVRfQ0hFQ0tfRlVOQyhzdHJsY3B5LAogW05PX1NUUkxDUFk9XSwKIFtOT19TVFJMQ1BZPVllc1BsZWFzZV0pCiBBQ19TVUJTVChOT19TVFJMQ1BZKQogIworIyBEZWZpbmUgTk9fVUlOVE1BWF9UIGlmIHlvdXIgcGxhdGZvcm0gZG9lcyBub3QgaGF2ZSB1aW50bWF4X3QKK0FDX0NIRUNLX1RZUEUodWludG1heF90LAorW05PX1VJTlRNQVhfVD1dLAorW05PX1VJTlRNQVhfVD1ZZXNQbGVhc2VdLFsKKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorXSkKK0FDX1NVQlNUKE5PX1VJTlRNQVhfVCkKKyMKICMgRGVmaW5lIE5PX1NUUlRPVU1BWCBpZiB5b3UgZG9uJ3QgaGF2ZSBzdHJ0b3VtYXggaW4gdGhlIEMgbGlicmFyeS4KLUFDX0NIRUNLX0ZVTkMoc3RydG91bWF4LAorR0lUX0NIRUNLX0ZVTkMoc3RydG91bWF4LAogW05PX1NUUlRPVU1BWD1dLAogW05PX1NUUlRPVU1BWD1ZZXNQbGVhc2VdKQogQUNfU1VCU1QoTk9fU1RSVE9VTUFYKQogIwogIyBEZWZpbmUgTk9fU0VURU5WIGlmIHlvdSBkb24ndCBoYXZlIHNldGVudiBpbiB0aGUgQyBsaWJyYXJ5LgotQUNfQ0hFQ0tfRlVOQyhzZXRlbnYsCitHSVRfQ0hFQ0tfRlVOQyhzZXRlbnYsCiBbTk9fU0VURU5WPV0sCiBbTk9fU0VURU5WPVllc1BsZWFzZV0pCiBBQ19TVUJTVChOT19TRVRFTlYpCiAjCiAjIERlZmluZSBOT19VTlNFVEVOViBpZiB5b3UgZG9uJ3QgaGF2ZSB1bnNldGVudiBpbiB0aGUgQyBsaWJyYXJ5LgotQUNfQ0hFQ0tfRlVOQyh1bnNldGVudiwKK0dJVF9DSEVDS19GVU5DKHVuc2V0ZW52LAogW05PX1VOU0VURU5WPV0sCiBbTk9fVU5TRVRFTlY9WWVzUGxlYXNlXSkKIEFDX1NVQlNUKE5PX1VOU0VURU5WKQogIwogIyBEZWZpbmUgTk9fTUtEVEVNUCBpZiB5b3UgZG9uJ3QgaGF2ZSBta2R0ZW1wIGluIHRoZSBDIGxpYnJhcnkuCi1BQ19DSEVDS19GVU5DKG1rZHRlbXAsCitHSVRfQ0hFQ0tfRlVOQyhta2R0ZW1wLAogW05PX01LRFRFTVA9XSwKIFtOT19NS0RURU1QPVllc1BsZWFzZV0pCiBBQ19TVUJTVChOT19NS0RURU1QKQpAQCAtNDM5LDYgKzQ4OSwyNyBAQAogIwogIyBEZWZpbmUgTk9fU1lNTElOS19IRUFEIGlmIHlvdSBuZXZlciB3YW50IC5naXQvSEVBRCB0byBiZSBhIHN5bWJvbGljIGxpbmsuCiAjIEVuYWJsZSBpdCBvbiBXaW5kb3dzLiAgQnkgZGVmYXVsdCwgc3ltcmVmcyBhcmUgc3RpbGwgdXNlZC4KKyMKKyMgRGVmaW5lIE5PX1BUSFJFQURTIGlmIHdlIGRvIG5vdCBoYXZlIHB0aHJlYWRzCisjCisjIERlZmluZSBQVEhSRUFEX0xJQlMgdG8gdGhlIGxpbmtlciBmbGFnIHVzZWQgZm9yIFB0aHJlYWQgc3VwcG9ydC4KK0FDX0xBTkdfQ09ORlRFU1QoW0FDX0xBTkdfUFJPR1JBTSgKKyAgW1sjaW5jbHVkZSA8cHRocmVhZC5oPl1dLAorICBbW3B0aHJlYWRfbXV0ZXhfdCB0ZXN0X211dGV4O11dCispXSkKKyR7Q0N9IC1wdGhyZWFkIGNvbmZ0ZXN0LmMgLW8gY29uZnRlc3QubyA+IC9kZXYvbnVsbCAyPiYxCitpZiB0ZXN0ICQ/IC1lcSAwO3RoZW4KKyBQVEhSRUFEX0xJQlM9Ii1wdGhyZWFkIgorZWxzZQorICR7Q0N9IC1scHRocmVhZCBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0Lm8gPiAvZGV2L251bGwgMj4mMQorIGlmIHRlc3QgJD8gLWVxIDA7dGhlbgorICBQVEhSRUFEX0xJQlM9Ii1scHRocmVhZCIKKyBlbHNlCisgIE5PX1BUSFJFQURTPVVuZm9ydHVuYXRlbHlZZXMKKyBmaQorZmkKK0FDX1NVQlNUKFBUSFJFQURfTElCUykKK0FDX1NVQlNUKE5PX1BUSFJFQURTKQogCiAjIyBTaXRlIGNvbmZpZ3VyYXRpb24gKG92ZXJyaWRlIGF1dG9kZXRlY3Rpb24pCiAjIyAtLXdpdGgtUEFDS0FHRVs9QVJHXSBhbmQgLS13aXRob3V0LVBBQ0tBR0UKZGlmZiAtLWdpdCBhL2Nvbm5lY3QuYyBiL2Nvbm5lY3QuYwppbmRleCBkZDk2ZjhlLi4yZjU1YWQyIDEwMDY0NAotLS0gYS9jb25uZWN0LmMKKysrIGIvY29ubmVjdC5jCkBAIC00MSwxMiArNDEsMjAgQEAKIAlyZXR1cm4gY2hlY2tfcmVmKHJlZi0+bmFtZSwgc3RybGVuKHJlZi0+bmFtZSksIGZsYWdzKTsKIH0KIAorc3RhdGljIHZvaWQgYWRkX2V4dHJhX2hhdmUoc3RydWN0IGV4dHJhX2hhdmVfb2JqZWN0cyAqZXh0cmEsIHVuc2lnbmVkIGNoYXIgKnNoYTEpCit7CisJQUxMT0NfR1JPVyhleHRyYS0+YXJyYXksIGV4dHJhLT5uciArIDEsIGV4dHJhLT5hbGxvYyk7CisJaGFzaGNweSgmKGV4dHJhLT5hcnJheVtleHRyYS0+bnJdWzBdKSwgc2hhMSk7CisJZXh0cmEtPm5yKys7Cit9CisKIC8qCiAgKiBSZWFkIGFsbCB0aGUgcmVmcyBmcm9tIHRoZSBvdGhlciBlbmQKICAqLwogc3RydWN0IHJlZiAqKmdldF9yZW1vdGVfaGVhZHMoaW50IGluLCBzdHJ1Y3QgcmVmICoqbGlzdCwKIAkJCSAgICAgIGludCBucl9tYXRjaCwgY2hhciAqKm1hdGNoLAotCQkJICAgICAgdW5zaWduZWQgaW50IGZsYWdzKQorCQkJICAgICAgdW5zaWduZWQgaW50IGZsYWdzLAorCQkJICAgICAgc3RydWN0IGV4dHJhX2hhdmVfb2JqZWN0cyAqZXh0cmFfaGF2ZSkKIHsKIAkqbGlzdCA9IE5VTEw7CiAJZm9yICg7OykgewpAQCAtNjIsNiArNzAsOSBAQAogCQlpZiAoYnVmZmVyW2xlbi0xXSA9PSAnXG4nKQogCQkJYnVmZmVyWy0tbGVuXSA9IDA7CiAKKwkJaWYgKGxlbiA+IDQgJiYgIXByZWZpeGNtcChidWZmZXIsICJFUlIgIikpCisJCQlkaWUoInJlbW90ZSBlcnJvcjogJXMiLCBidWZmZXIgKyA0KTsKKwogCQlpZiAobGVuIDwgNDIgfHwgZ2V0X3NoYTFfaGV4KGJ1ZmZlciwgb2xkX3NoYTEpIHx8IGJ1ZmZlcls0MF0gIT0gJyAnKQogCQkJZGllKCJwcm90b2NvbCBlcnJvcjogZXhwZWN0ZWQgc2hhL3JlZiwgZ290ICclcyciLCBidWZmZXIpOwogCQluYW1lID0gYnVmZmVyICsgNDE7CkBAIC03MiwxMyArODMsMTggQEAKIAkJCXNlcnZlcl9jYXBhYmlsaXRpZXMgPSB4c3RyZHVwKG5hbWUgKyBuYW1lX2xlbiArIDEpOwogCQl9CiAKKwkJaWYgKGV4dHJhX2hhdmUgJiYKKwkJICAgIG5hbWVfbGVuID09IDUgJiYgIW1lbWNtcCgiLmhhdmUiLCBuYW1lLCA1KSkgeworCQkJYWRkX2V4dHJhX2hhdmUoZXh0cmFfaGF2ZSwgb2xkX3NoYTEpOworCQkJY29udGludWU7CisJCX0KKwogCQlpZiAoIWNoZWNrX3JlZihuYW1lLCBuYW1lX2xlbiwgZmxhZ3MpKQogCQkJY29udGludWU7CiAJCWlmIChucl9tYXRjaCAmJiAhcGF0aF9tYXRjaChuYW1lLCBucl9tYXRjaCwgbWF0Y2gpKQogCQkJY29udGludWU7Ci0JCXJlZiA9IGFsbG9jX3JlZihuYW1lX2xlbiArIDEpOworCQlyZWYgPSBhbGxvY19yZWYoYnVmZmVyICsgNDEpOwogCQloYXNoY3B5KHJlZi0+b2xkX3NoYTEsIG9sZF9zaGExKTsKLQkJbWVtY3B5KHJlZi0+bmFtZSwgYnVmZmVyICsgNDEsIG5hbWVfbGVuICsgMSk7CiAJCSpsaXN0ID0gcmVmOwogCQlsaXN0ID0gJnJlZi0+bmV4dDsKIAl9CkBAIC00NjQsOCArNDgwLDggQEAKIAljaGFyICpwID0gc3RyY2hyKGhvc3QsICc6Jyk7CiAKIAlpZiAocCkgewotCQlzdHJ0b2wocCsxLCAmZW5kLCAxMCk7Ci0JCWlmICgqZW5kID09ICdcMCcpIHsKKwkJbG9uZyBwb3J0ID0gc3RydG9sKHAgKyAxLCAmZW5kLCAxMCk7CisJCWlmIChlbmQgIT0gcCArIDEgJiYgKmVuZCA9PSAnXDAnICYmIDAgPD0gcG9ydCAmJiBwb3J0IDwgNjU1MzYpIHsKIAkJCSpwID0gJ1wwJzsKIAkJCXJldHVybiBwKzE7CiAJCX0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvY29tcGxldGlvbi9naXQtY29tcGxldGlvbi5iYXNoIGIvY29udHJpYi9jb21wbGV0aW9uL2dpdC1jb21wbGV0aW9uLmJhc2gKaW5kZXggNTU0YTAzZi4uZTAwNDU0OSAxMDA3NTUKLS0tIGEvY29udHJpYi9jb21wbGV0aW9uL2dpdC1jb21wbGV0aW9uLmJhc2gKKysrIGIvY29udHJpYi9jb21wbGV0aW9uL2dpdC1jb21wbGV0aW9uLmJhc2gKQEAgLTE1NCwxMSArMTU0LDggQEAKIHsKIAlsb2NhbCBjbWQgaSBpc19oYXNoPXkgZGlyPSIkKF9fZ2l0ZGlyICIkMSIpIgogCWlmIFsgLWQgIiRkaXIiIF07IHRoZW4KLQkJZm9yIGkgaW4gJChnaXQgLS1naXQtZGlyPSIkZGlyIiBcCi0JCQlmb3ItZWFjaC1yZWYgLS1mb3JtYXQ9JyUocmVmbmFtZSknIFwKLQkJCXJlZnMvaGVhZHMgKTsgZG8KLQkJCWVjaG8gIiR7aSNyZWZzL2hlYWRzL30iCi0JCWRvbmUKKwkJZ2l0IC0tZ2l0LWRpcj0iJGRpciIgZm9yLWVhY2gtcmVmIC0tZm9ybWF0PSclKHJlZm5hbWU6c2hvcnQpJyBcCisJCQlyZWZzL2hlYWRzCiAJCXJldHVybgogCWZpCiAJZm9yIGkgaW4gJChnaXQgbHMtcmVtb3RlICIkMSIgMj4vZGV2L251bGwpOyBkbwpAQCAtMTc1LDExICsxNzIsOCBAQAogewogCWxvY2FsIGNtZCBpIGlzX2hhc2g9eSBkaXI9IiQoX19naXRkaXIgIiQxIikiCiAJaWYgWyAtZCAiJGRpciIgXTsgdGhlbgotCQlmb3IgaSBpbiAkKGdpdCAtLWdpdC1kaXI9IiRkaXIiIFwKLQkJCWZvci1lYWNoLXJlZiAtLWZvcm1hdD0nJShyZWZuYW1lKScgXAotCQkJcmVmcy90YWdzICk7IGRvCi0JCQllY2hvICIke2kjcmVmcy90YWdzL30iCi0JCWRvbmUKKwkJZ2l0IC0tZ2l0LWRpcj0iJGRpciIgZm9yLWVhY2gtcmVmIC0tZm9ybWF0PSclKHJlZm5hbWU6c2hvcnQpJyBcCisJCQlyZWZzL3RhZ3MKIAkJcmV0dXJuCiAJZmkKIAlmb3IgaSBpbiAkKGdpdCBscy1yZW1vdGUgIiQxIiAyPi9kZXYvbnVsbCk7IGRvCkBAIC0xOTQsMTkgKzE4OCwyMiBAQAogCiBfX2dpdF9yZWZzICgpCiB7Ci0JbG9jYWwgY21kIGkgaXNfaGFzaD15IGRpcj0iJChfX2dpdGRpciAiJDEiKSIKKwlsb2NhbCBpIGlzX2hhc2g9eSBkaXI9IiQoX19naXRkaXIgIiQxIikiCisJbG9jYWwgY3VyPSIke0NPTVBfV09SRFNbQ09NUF9DV09SRF19IiBmb3JtYXQgcmVmcwogCWlmIFsgLWQgIiRkaXIiIF07IHRoZW4KLQkJaWYgWyAtZSAiJGRpci9IRUFEIiBdOyB0aGVuIGVjaG8gSEVBRDsgZmkKLQkJZm9yIGkgaW4gJChnaXQgLS1naXQtZGlyPSIkZGlyIiBcCi0JCQlmb3ItZWFjaC1yZWYgLS1mb3JtYXQ9JyUocmVmbmFtZSknIFwKLQkJCXJlZnMvdGFncyByZWZzL2hlYWRzIHJlZnMvcmVtb3Rlcyk7IGRvCi0JCQljYXNlICIkaSIgaW4KLQkJCQlyZWZzL3RhZ3MvKikgICAgZWNobyAiJHtpI3JlZnMvdGFncy99IiA7OwotCQkJCXJlZnMvaGVhZHMvKikgICBlY2hvICIke2kjcmVmcy9oZWFkcy99IiA7OwotCQkJCXJlZnMvcmVtb3Rlcy8qKSBlY2hvICIke2kjcmVmcy9yZW1vdGVzL30iIDs7Ci0JCQkJKikgICAgICAgICAgICAgIGVjaG8gIiRpIiA7OwotCQkJZXNhYwotCQlkb25lCisJCWNhc2UgIiRjdXIiIGluCisJCXJlZnN8cmVmcy8qKQorCQkJZm9ybWF0PSJyZWZuYW1lIgorCQkJcmVmcz0iJHtjdXIlLyp9IgorCQkJOzsKKwkJKikKKwkJCWlmIFsgLWUgIiRkaXIvSEVBRCIgXTsgdGhlbiBlY2hvIEhFQUQ7IGZpCisJCQlmb3JtYXQ9InJlZm5hbWU6c2hvcnQiCisJCQlyZWZzPSJyZWZzL3RhZ3MgcmVmcy9oZWFkcyByZWZzL3JlbW90ZXMiCisJCQk7OworCQllc2FjCisJCWdpdCAtLWdpdC1kaXI9IiRkaXIiIGZvci1lYWNoLXJlZiAtLWZvcm1hdD0iJSgkZm9ybWF0KSIgXAorCQkJJHJlZnMKIAkJcmV0dXJuCiAJZmkKIAlmb3IgaSBpbiAkKGdpdCBscy1yZW1vdGUgIiRkaXIiIDI+L2Rldi9udWxsKTsgZG8KQEAgLTg4MSw2ICs4NzgsNyBAQAogCQlhdHRyaWJ1dGVzIGNsaSBjb3JlLXR1dG9yaWFsIGN2cy1taWdyYXRpb24KIAkJZGlmZmNvcmUgZ2l0ayBnbG9zc2FyeSBob29rcyBpZ25vcmUgbW9kdWxlcwogCQlyZXBvc2l0b3J5LWxheW91dCB0dXRvcmlhbCB0dXRvcmlhbC0yCisJCXdvcmtmbG93cwogCQkiCiB9CiAKQEAgLTExMTIsNyArMTExMCw4IEBACiAJCQktLW5vLXN1cHByZXNzLWZyb20gLS1uby10aHJlYWQgLS1xdWlldAogCQkJLS1zaWduZWQtb2ZmLWJ5LWNjIC0tc210cC1wYXNzIC0tc210cC1zZXJ2ZXIKIAkJCS0tc210cC1zZXJ2ZXItcG9ydCAtLXNtdHAtc3NsIC0tc210cC11c2VyIC0tc3ViamVjdAotCQkJLS1zdXBwcmVzcy1jYyAtLXN1cHByZXNzLWZyb20gLS10aHJlYWQgLS10byIKKwkJCS0tc3VwcHJlc3MtY2MgLS1zdXBwcmVzcy1mcm9tIC0tdGhyZWFkIC0tdG8KKwkJCS0tdmFsaWRhdGUgLS1uby12YWxpZGF0ZSIKIAkJcmV0dXJuCiAJCTs7CiAJZXNhYwpAQCAtMTE1Niw3ICsxMTU1LDcgQEAKIAkJOzsKIAljb2xvci4qLiopCiAJCV9fZ2l0Y29tcCAiCi0JCQlibGFjayByZWQgZ3JlZW4geWVsbG93IGJsdWUgbWFnZW50YSBjeWFuIHdoaXRlCisJCQlub3JtYWwgYmxhY2sgcmVkIGdyZWVuIHllbGxvdyBibHVlIG1hZ2VudGEgY3lhbiB3aGl0ZQogCQkJYm9sZCBkaW0gdWwgYmxpbmsgcmV2ZXJzZQogCQkJIgogCQlyZXR1cm4KQEAgLTExODAsNyArMTE3OSw3IEBACiAJYnJhbmNoLiouKikKIAkJbG9jYWwgcGZ4PSIke2N1ciUuKn0uIgogCQljdXI9IiR7Y3VyIyMqLn0iCi0JCV9fZ2l0Y29tcCAicmVtb3RlIG1lcmdlIiAiJHBmeCIgIiRjdXIiCisJCV9fZ2l0Y29tcCAicmVtb3RlIG1lcmdlIG1lcmdlb3B0aW9ucyIgIiRwZngiICIkY3VyIgogCQlyZXR1cm4KIAkJOzsKIAlicmFuY2guKikKQEAgLTExOTMsNyArMTE5Miw3IEBACiAJCWxvY2FsIHBmeD0iJHtjdXIlLip9LiIKIAkJY3VyPSIke2N1ciMjKi59IgogCQlfX2dpdGNvbXAgIgotCQkJdXJsIGZldGNoIHB1c2ggc2tpcERlZmF1bHRVcGRhdGUKKwkJCXVybCBwcm94eSBmZXRjaCBwdXNoIG1pcnJvciBza2lwRGVmYXVsdFVwZGF0ZQogCQkJcmVjZWl2ZXBhY2sgdXBsb2FkcGFjayB0YWdvcHQKIAkJCSIgIiRwZngiICIkY3VyIgogCQlyZXR1cm4KQEAgLTEyMDcsODUgKzEyMDYsMTYxIEBACiAJZXNhYwogCV9fZ2l0Y29tcCAiCiAJCWFwcGx5LndoaXRlc3BhY2UKLQkJY29yZS5maWxlTW9kZQotCQljb3JlLmdpdFByb3h5Ci0JCWNvcmUuaWdub3JlU3RhdAotCQljb3JlLnByZWZlclN5bWxpbmtSZWZzCi0JCWNvcmUubG9nQWxsUmVmVXBkYXRlcwotCQljb3JlLmxvb3NlY29tcHJlc3Npb24KLQkJY29yZS5yZXBvc2l0b3J5Rm9ybWF0VmVyc2lvbgotCQljb3JlLnNoYXJlZFJlcG9zaXRvcnkKLQkJY29yZS53YXJuQW1iaWd1b3VzUmVmcwotCQljb3JlLmNvbXByZXNzaW9uCi0JCWNvcmUucGFja2VkR2l0V2luZG93U2l6ZQotCQljb3JlLnBhY2tlZEdpdExpbWl0CisJCWJyYW5jaC5hdXRvc2V0dXBtZXJnZQorCQlicmFuY2guYXV0b3NldHVwcmViYXNlCiAJCWNsZWFuLnJlcXVpcmVGb3JjZQogCQljb2xvci5icmFuY2gKIAkJY29sb3IuYnJhbmNoLmN1cnJlbnQKIAkJY29sb3IuYnJhbmNoLmxvY2FsCi0JCWNvbG9yLmJyYW5jaC5yZW1vdGUKIAkJY29sb3IuYnJhbmNoLnBsYWluCisJCWNvbG9yLmJyYW5jaC5yZW1vdGUKIAkJY29sb3IuZGlmZgotCQljb2xvci5kaWZmLnBsYWluCi0JCWNvbG9yLmRpZmYubWV0YQotCQljb2xvci5kaWZmLmZyYWcKLQkJY29sb3IuZGlmZi5vbGQKLQkJY29sb3IuZGlmZi5uZXcKIAkJY29sb3IuZGlmZi5jb21taXQKKwkJY29sb3IuZGlmZi5mcmFnCisJCWNvbG9yLmRpZmYubWV0YQorCQljb2xvci5kaWZmLm5ldworCQljb2xvci5kaWZmLm9sZAorCQljb2xvci5kaWZmLnBsYWluCiAJCWNvbG9yLmRpZmYud2hpdGVzcGFjZQorCQljb2xvci5pbnRlcmFjdGl2ZQorCQljb2xvci5pbnRlcmFjdGl2ZS5oZWFkZXIKKwkJY29sb3IuaW50ZXJhY3RpdmUuaGVscAorCQljb2xvci5pbnRlcmFjdGl2ZS5wcm9tcHQKIAkJY29sb3IucGFnZXIKIAkJY29sb3Iuc3RhdHVzCi0JCWNvbG9yLnN0YXR1cy5oZWFkZXIKIAkJY29sb3Iuc3RhdHVzLmFkZGVkCiAJCWNvbG9yLnN0YXR1cy5jaGFuZ2VkCisJCWNvbG9yLnN0YXR1cy5oZWFkZXIKKwkJY29sb3Iuc3RhdHVzLm5vYnJhbmNoCiAJCWNvbG9yLnN0YXR1cy51bnRyYWNrZWQKKwkJY29sb3Iuc3RhdHVzLnVwZGF0ZWQKKwkJY29sb3IudWkKKwkJY29tbWl0LnRlbXBsYXRlCisJCWNvcmUuYXV0b2NybGYKKwkJY29yZS5iYXJlCisJCWNvcmUuY29tcHJlc3Npb24KKwkJY29yZS5kZWx0YUJhc2VDYWNoZUxpbWl0CisJCWNvcmUuZWRpdG9yCisJCWNvcmUuZXhjbHVkZXNmaWxlCisJCWNvcmUuZmlsZU1vZGUKKwkJY29yZS5mc3luY29iamVjdGZpbGVzCisJCWNvcmUuZ2l0UHJveHkKKwkJY29yZS5pZ25vcmVDeWd3aW5GU1RyaWNrcworCQljb3JlLmlnbm9yZVN0YXQKKwkJY29yZS5sb2dBbGxSZWZVcGRhdGVzCisJCWNvcmUubG9vc2Vjb21wcmVzc2lvbgorCQljb3JlLnBhY2tlZEdpdExpbWl0CisJCWNvcmUucGFja2VkR2l0V2luZG93U2l6ZQorCQljb3JlLnBhZ2VyCisJCWNvcmUucHJlZmVyU3ltbGlua1JlZnMKKwkJY29yZS5wcmVsb2FkaW5kZXgKKwkJY29yZS5xdW90ZXBhdGgKKwkJY29yZS5yZXBvc2l0b3J5Rm9ybWF0VmVyc2lvbgorCQljb3JlLnNhZmVjcmxmCisJCWNvcmUuc2hhcmVkUmVwb3NpdG9yeQorCQljb3JlLnN5bWxpbmtzCisJCWNvcmUudHJ1c3RjdGltZQorCQljb3JlLndhcm5BbWJpZ3VvdXNSZWZzCisJCWNvcmUud2hpdGVzcGFjZQorCQljb3JlLndvcmt0cmVlCisJCWRpZmYuYXV0b3JlZnJlc2hpbmRleAorCQlkaWZmLmV4dGVybmFsCisJCWRpZmYubW5lbW9uaWNwcmVmaXgKIAkJZGlmZi5yZW5hbWVMaW1pdAorCQlkaWZmLnJlbmFtZUxpbWl0LgogCQlkaWZmLnJlbmFtZXMKIAkJZmV0Y2gudW5wYWNrTGltaXQKIAkJZm9ybWF0LmhlYWRlcnMKLQkJZm9ybWF0LnN1YmplY3RwcmVmaXgKLQkJZ2l0Y3ZzLmVuYWJsZWQKLQkJZ2l0Y3ZzLmxvZ2ZpbGUKLQkJZ2l0Y3ZzLmFsbGJpbmFyeQotCQlnaXRjdnMuZGJuYW1lIGdpdGN2cy5kYmRyaXZlciBnaXRjdnMuZGJ1c2VyIGdpdGN2cy5kYnBhc3MKLQkJZ2l0Y3ZzLmRidGFibGVuYW1lcHJlZml4CisJCWZvcm1hdC5udW1iZXJlZAorCQlmb3JtYXQucHJldHR5CisJCWZvcm1hdC5zdWZmaXgKKwkJZ2MuYWdncmVzc2l2ZVdpbmRvdworCQlnYy5hdXRvCisJCWdjLmF1dG9wYWNrbGltaXQKIAkJZ2MucGFja3JlZnMKKwkJZ2MucHJ1bmVleHBpcmUKIAkJZ2MucmVmbG9nZXhwaXJlCiAJCWdjLnJlZmxvZ2V4cGlyZXVucmVhY2hhYmxlCiAJCWdjLnJlcmVyZXJlc29sdmVkCiAJCWdjLnJlcmVyZXVucmVzb2x2ZWQKLQkJaHR0cC5zc2xWZXJpZnkKLQkJaHR0cC5zc2xDZXJ0Ci0JCWh0dHAuc3NsS2V5Ci0JCWh0dHAuc3NsQ0FJbmZvCi0JCWh0dHAuc3NsQ0FQYXRoCi0JCWh0dHAubWF4UmVxdWVzdHMKKwkJZ2l0Y3ZzLmFsbGJpbmFyeQorCQlnaXRjdnMuZGJUYWJsZU5hbWVQcmVmaXgKKwkJZ2l0Y3ZzLmRiZHJpdmVyCisJCWdpdGN2cy5kYm5hbWUKKwkJZ2l0Y3ZzLmRicGFzcworCQlnaXRjdnMuZGJ1c2VyCisJCWdpdGN2cy5lbmFibGVkCisJCWdpdGN2cy5sb2dmaWxlCisJCWdpdGN2cy51c2VjcmxmYXR0cgorCQlndWkuYmxhbWVoaXN0b3J5Y3R4CisJCWd1aS5jb21taXRtc2d3aWR0aAorCQlndWkuY29weWJsYW1ldGhyZXNob2xkCisJCWd1aS5kaWZmY29udGV4dAorCQlndWkuZW5jb2RpbmcKKwkJZ3VpLmZhc3Rjb3B5YmxhbWUKKwkJZ3VpLm1hdGNodHJhY2tpbmdicmFuY2gKKwkJZ3VpLm5ld2JyYW5jaHRlbXBsYXRlCisJCWd1aS5wcnVuZWR1cmluZ2ZldGNoCisJCWd1aS5zcGVsbGluZ2RpY3Rpb25hcnkKKwkJZ3VpLnRydXN0bXRpbWUKKwkJaGVscC5hdXRvY29ycmVjdAorCQloZWxwLmJyb3dzZXIKKwkJaGVscC5mb3JtYXQKIAkJaHR0cC5sb3dTcGVlZExpbWl0CiAJCWh0dHAubG93U3BlZWRUaW1lCisJCWh0dHAubWF4UmVxdWVzdHMKIAkJaHR0cC5ub0VQU1YKKwkJaHR0cC5wcm94eQorCQlodHRwLnNzbENBSW5mbworCQlodHRwLnNzbENBUGF0aAorCQlodHRwLnNzbENlcnQKKwkJaHR0cC5zc2xLZXkKKwkJaHR0cC5zc2xWZXJpZnkKIAkJaTE4bi5jb21taXRFbmNvZGluZwogCQlpMThuLmxvZ091dHB1dEVuY29kaW5nCisJCWluc3Rhd2ViLmJyb3dzZXIKKwkJaW5zdGF3ZWIuaHR0cGQKKwkJaW5zdGF3ZWIubG9jYWwKKwkJaW5zdGF3ZWIubW9kdWxlcGF0aAorCQlpbnN0YXdlYi5wb3J0CisJCWxvZy5kYXRlCiAJCWxvZy5zaG93cm9vdAorCQltYW4udmlld2VyCisJCW1lcmdlLmNvbmZsaWN0c3R5bGUKKwkJbWVyZ2UubG9nCisJCW1lcmdlLnJlbmFtZUxpbWl0CisJCW1lcmdlLnN0YXQKIAkJbWVyZ2UudG9vbAotCQltZXJnZS5zdW1tYXJ5CiAJCW1lcmdlLnZlcmJvc2l0eQotCQlwYWNrLndpbmRvdwotCQlwYWNrLmRlcHRoCi0JCXBhY2sud2luZG93TWVtb3J5CisJCW1lcmdldG9vbC5rZWVwQmFja3VwCiAJCXBhY2suY29tcHJlc3Npb24KLQkJcGFjay5kZWx0YUNhY2hlU2l6ZQogCQlwYWNrLmRlbHRhQ2FjaGVMaW1pdAorCQlwYWNrLmRlbHRhQ2FjaGVTaXplCisJCXBhY2suZGVwdGgKKwkJcGFjay5pbmRleFZlcnNpb24KKwkJcGFjay5wYWNrU2l6ZUxpbWl0CisJCXBhY2sudGhyZWFkcworCQlwYWNrLndpbmRvdworCQlwYWNrLndpbmRvd01lbW9yeQogCQlwdWxsLm9jdG9wdXMKIAkJcHVsbC50d29oZWFkCi0JCXJlcGFjay51c2VEZWx0YUJhc2VPZmZzZXQKKwkJcmVjZWl2ZS5kZW55Q3VycmVudEJyYW5jaAorCQlyZWNlaXZlLmRlbnlEZWxldGVzCisJCXJlY2VpdmUuZGVueU5vbkZhc3RGb3J3YXJkcworCQlyZWNlaXZlLmZzY2tPYmplY3RzCisJCXJlY2VpdmUudW5wYWNrTGltaXQKKwkJcmVwYWNrLnVzZWRlbHRhYmFzZW9mZnNldAorCQlyZXJlcmUuYXV0b3VwZGF0ZQorCQlyZXJlcmUuZW5hYmxlZAogCQlzaG93YnJhbmNoLmRlZmF1bHQKKwkJc3RhdHVzLnJlbGF0aXZlUGF0aHMKKwkJc3RhdHVzLnNob3dVbnRyYWNrZWRGaWxlcwogCQl0YXIudW1hc2sKIAkJdHJhbnNmZXIudW5wYWNrTGltaXQKLQkJcmVjZWl2ZS51bnBhY2tMaW1pdAotCQlyZWNlaXZlLmRlbnlOb25GYXN0Rm9yd2FyZHMKLQkJdXNlci5uYW1lCiAJCXVzZXIuZW1haWwKKwkJdXNlci5uYW1lCiAJCXVzZXIuc2lnbmluZ2tleQorCQl3ZWIuYnJvd3NlcgogCQlicmFuY2guIHJlbW90ZS4KIAkiCiB9CkBAIC0xNDUyLDcgKzE1MjcsNyBAQAogewogCV9fZ2l0X2hhc19kb3VibGVkYXNoICYmIHJldHVybgogCi0JbG9jYWwgc3ViY29tbWFuZHM9ImFkZCBzdGF0dXMgaW5pdCB1cGRhdGUiCisJbG9jYWwgc3ViY29tbWFuZHM9ImFkZCBzdGF0dXMgaW5pdCB1cGRhdGUgc3VtbWFyeSBmb3JlYWNoIHN5bmMiCiAJaWYgWyAteiAiJChfX2dpdF9maW5kX3N1YmNvbW1hbmQgIiRzdWJjb21tYW5kcyIpIiBdOyB0aGVuCiAJCWxvY2FsIGN1cj0iJHtDT01QX1dPUkRTW0NPTVBfQ1dPUkRdfSIKIAkJY2FzZSAiJGN1ciIgaW4KZGlmZiAtLWdpdCBhL2NvbnRyaWIvZW1hY3MvZ2l0LmVsIGIvY29udHJpYi9lbWFjcy9naXQuZWwKaW5kZXggYzFjZjFjYi4uMDllOGJhZSAxMDA2NDQKLS0tIGEvY29udHJpYi9lbWFjcy9naXQuZWwKKysrIGIvY29udHJpYi9lbWFjcy9naXQuZWwKQEAgLTE3Myw3ICsxNzMsNyBAQAogKGRlZmNvbnN0IGdpdC1sb2ctbXNnLXNlcGFyYXRvciAiLS0tIGxvZyBtZXNzYWdlIGZvbGxvd3MgdGhpcyBsaW5lIC0tLSIpCiAKIChkZWZ2YXIgZ2l0LWxvZy1lZGl0LWZvbnQtbG9jay1rZXl3b3JkcwotICBgKCgiXlxcKEF1dGhvcjpcXHxEYXRlOlxcfFBhcmVudDpcXHxTaWduZWQtb2ZmLWJ5OlxcKVxcKC4qXFwpJCIKKyAgYCgoIl5cXChBdXRob3I6XFx8RGF0ZTpcXHxNZXJnZTpcXHxTaWduZWQtb2ZmLWJ5OlxcKVxcKC4qXFwpJCIKICAgICAgKDEgZm9udC1sb2NrLWtleXdvcmQtZmFjZSkKICAgICAgKDIgZm9udC1sb2NrLWZ1bmN0aW9uLW5hbWUtZmFjZSkpCiAgICAgKCwoY29uY2F0ICJeXFwoIiAocmVnZXhwLXF1b3RlIGdpdC1sb2ctbXNnLXNlcGFyYXRvcikgIlxcKSQiKQpAQCAtMTgzLDExICsxODMsOSBAQAogICAiQnVpbGQgYSBsaXN0IG9mIE5BTUU9VkFMVUUgc3RyaW5ncyBmcm9tIGEgbGlzdCBvZiBlbnZpcm9ubWVudCBzdHJpbmdzLiIKICAgKG1hcGNhciAobGFtYmRhIChlbnRyeSkgKGNvbmNhdCAoY2FyIGVudHJ5KSAiPSIgKGNkciBlbnRyeSkpKSBlbnYpKQogCi0oZGVmdW4gZ2l0LWNhbGwtcHJvY2Vzcy1lbnYgKGJ1ZmZlciBlbnYgJnJlc3QgYXJncykKKyhkZWZ1biBnaXQtY2FsbC1wcm9jZXNzIChidWZmZXIgJnJlc3QgYXJncykKICAgIldyYXBwZXIgZm9yIGNhbGwtcHJvY2VzcyB0aGF0IHNldHMgZW52aXJvbm1lbnQgc3RyaW5ncy4iCi0gIChsZXQgKChwcm9jZXNzLWVudmlyb25tZW50IChhcHBlbmQgKGdpdC1nZXQtZW52LXN0cmluZ3MgZW52KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MtZW52aXJvbm1lbnQpKSkKLSAgICAoYXBwbHkgIydjYWxsLXByb2Nlc3MgImdpdCIgbmlsIGJ1ZmZlciBuaWwgYXJncykpKQorICAoYXBwbHkgIydjYWxsLXByb2Nlc3MgImdpdCIgbmlsIGJ1ZmZlciBuaWwgYXJncykpCiAKIChkZWZ1biBnaXQtY2FsbC1wcm9jZXNzLWRpc3BsYXktZXJyb3IgKCZyZXN0IGFyZ3MpCiAgICJXcmFwcGVyIGZvciBjYWxsLXByb2Nlc3MgdGhhdCBkaXNwbGF5cyBlcnJvciBtZXNzYWdlcy4iCkBAIC0xOTcsMTcgKzE5NSwyNiBAQAogICAgICAgICAgICAgICAgKGxldCAoKGRlZmF1bHQtZGlyZWN0b3J5IGRpcikKICAgICAgICAgICAgICAgICAgICAgIChidWZmZXItcmVhZC1vbmx5IG5pbCkpCiAgICAgICAgICAgICAgICAgIChlcmFzZS1idWZmZXIpCi0gICAgICAgICAgICAgICAgIChlcSAwIChhcHBseSAnY2FsbC1wcm9jZXNzICJnaXQiIG5pbCAobGlzdCBidWZmZXIgdCkgbmlsIGFyZ3MpKSkpKSkKKyAgICAgICAgICAgICAgICAgKGVxIDAgKGFwcGx5ICMnZ2l0LWNhbGwtcHJvY2VzcyAobGlzdCBidWZmZXIgdCkgYXJncykpKSkpKQogICAgICh1bmxlc3Mgb2sgKGRpc3BsYXktbWVzc2FnZS1vci1idWZmZXIgYnVmZmVyKSkKICAgICBvaykpCiAKLShkZWZ1biBnaXQtY2FsbC1wcm9jZXNzLWVudi1zdHJpbmcgKGVudiAmcmVzdCBhcmdzKQotICAiV3JhcHBlciBmb3IgY2FsbC1wcm9jZXNzIHRoYXQgc2V0cyBlbnZpcm9ubWVudCBzdHJpbmdzLAotYW5kIHJldHVybnMgdGhlIHByb2Nlc3Mgb3V0cHV0IGFzIGEgc3RyaW5nLCBvciBuaWwgaWYgdGhlIGdpdCBmYWlsZWQuIgorKGRlZnVuIGdpdC1jYWxsLXByb2Nlc3Mtc3RyaW5nICgmcmVzdCBhcmdzKQorICAiV3JhcHBlciBmb3IgY2FsbC1wcm9jZXNzIHRoYXQgcmV0dXJucyB0aGUgcHJvY2VzcyBvdXRwdXQgYXMgYSBzdHJpbmcsCitvciBuaWwgaWYgdGhlIGdpdCBjb21tYW5kIGZhaWxlZC4iCiAgICh3aXRoLXRlbXAtYnVmZmVyCi0gICAgKGFuZCAoZXEgMCAoYXBwbHkgIycgZ2l0LWNhbGwtcHJvY2Vzcy1lbnYgdCBlbnYgYXJncykpCisgICAgKGFuZCAoZXEgMCAoYXBwbHkgIydnaXQtY2FsbC1wcm9jZXNzIHQgYXJncykpCiAgICAgICAgICAoYnVmZmVyLXN0cmluZykpKSkKIAorKGRlZnVuIGdpdC1jYWxsLXByb2Nlc3Mtc3RyaW5nLWRpc3BsYXktZXJyb3IgKCZyZXN0IGFyZ3MpCisgICJXcmFwcGVyIGZvciBjYWxsLXByb2Nlc3MgdGhhdCBkaXNwbGF5cyBlcnJvciBtZXNzYWdlIGFuZCByZXR1cm5zCit0aGUgcHJvY2VzcyBvdXRwdXQgYXMgYSBzdHJpbmcsIG9yIG5pbCBpZiB0aGUgZ2l0IGNvbW1hbmQgZmFpbGVkLiIKKyAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAoaWYgKGVxIDAgKGFwcGx5ICMnZ2l0LWNhbGwtcHJvY2VzcyAobGlzdCB0IHQpIGFyZ3MpKQorICAgICAgICAoYnVmZmVyLXN0cmluZykKKyAgICAgIChkaXNwbGF5LW1lc3NhZ2Utb3ItYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpCisgICAgICBuaWwpKSkKKwogKGRlZnVuIGdpdC1ydW4tcHJvY2Vzcy1yZWdpb24gKGJ1ZmZlciBzdGFydCBlbmQgcHJvZ3JhbSBhcmdzKQogICAiUnVuIGEgZ2l0IHByb2Nlc3Mgd2l0aCBhIGJ1ZmZlciByZWdpb24gYXMgaW5wdXQuIgogICAobGV0ICgob3V0cHV0LWJ1ZmZlciAoY3VycmVudC1idWZmZXIpKQpAQCAtMjI2LDcgKzIzMyw3IEBACiAgICAgICAobGV0ICgoZGVmYXVsdC1kaXJlY3RvcnkgZGlyKQogICAgICAgICAgICAgKGJ1ZmZlci1yZWFkLW9ubHkgbmlsKSkKICAgICAgICAgKGVyYXNlLWJ1ZmZlcikKLSAgICAgICAgKGFwcGx5ICMnZ2l0LWNhbGwtcHJvY2Vzcy1lbnYgYnVmZmVyIG5pbCBhcmdzKSkpCisgICAgICAgIChhcHBseSAjJ2dpdC1jYWxsLXByb2Nlc3MgYnVmZmVyIGFyZ3MpKSkKICAgICAobWVzc2FnZSAiUnVubmluZyBnaXQgJXMuLi5kb25lIiAoY2FyIGFyZ3MpKQogICAgIGJ1ZmZlcikpCiAKQEAgLTMyNyw3ICszMzQsNyBAQAogICAobGV0ICgoY2R1cCAod2l0aC1vdXRwdXQtdG8tc3RyaW5nCiAgICAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgc3RhbmRhcmQtb3V0cHV0CiAgICAgICAgICAgICAgICAgICAoY2QgZGlyKQotICAgICAgICAgICAgICAgICAgKHVubGVzcyAoZXEgMCAoY2FsbC1wcm9jZXNzICJnaXQiIG5pbCB0IG5pbCAicmV2LXBhcnNlIiAiLS1zaG93LWNkdXAiKSkKKyAgICAgICAgICAgICAgICAgICh1bmxlc3MgKGVxIDAgKGdpdC1jYWxsLXByb2Nlc3MgdCAicmV2LXBhcnNlIiAiLS1zaG93LWNkdXAiKSkKICAgICAgICAgICAgICAgICAgICAgKGVycm9yICJjYW5ub3QgZmluZCB0b3AtbGV2ZWwgZ2l0IHRyZWUgZm9yICVzLiIgZGlyKSkpKSkpCiAgICAgKGV4cGFuZC1maWxlLW5hbWUgKGNvbmNhdCAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBkaXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FyIChzcGxpdC1zdHJpbmcgY2R1cCAiXG4iKSkpKSkpCkBAIC0zNDgsOCArMzU1LDggQEAKICAgICAoc29ydC1saW5lcyBuaWwgKHBvaW50LW1pbikgKHBvaW50LW1heCkpCiAgICAgKHNhdmUtYnVmZmVyKSkKICAgKHdoZW4gY3JlYXRlZAotICAgIChnaXQtY2FsbC1wcm9jZXNzLWVudiBuaWwgbmlsICJ1cGRhdGUtaW5kZXgiICItLWFkZCIgIi0tIiAoZmlsZS1yZWxhdGl2ZS1uYW1lIGlnbm9yZS1uYW1lKSkpCi0gIChnaXQtdXBkYXRlLXN0YXR1cy1maWxlcyAobGlzdCAoZmlsZS1yZWxhdGl2ZS1uYW1lIGlnbm9yZS1uYW1lKSkgJ3Vua25vd24pKSkKKyAgICAoZ2l0LWNhbGwtcHJvY2VzcyBuaWwgInVwZGF0ZS1pbmRleCIgIi0tYWRkIiAiLS0iIChmaWxlLXJlbGF0aXZlLW5hbWUgaWdub3JlLW5hbWUpKSkKKyAgKGdpdC11cGRhdGUtc3RhdHVzLWZpbGVzIChsaXN0IChmaWxlLXJlbGF0aXZlLW5hbWUgaWdub3JlLW5hbWUpKSkpKQogCiA7IHByb3BlcnRpemUgZGVmaW5pdGlvbiBmb3IgWEVtYWNzLCBzdG9sZW4gZnJvbSBlcmMtY29tcGF0CiAoZXZhbC13aGVuLWNvbXBpbGUKQEAgLTM2NywzOCArMzc0LDQxIEBACiAoZGVmdW4gZ2l0LXJldi1wYXJzZSAocmV2KQogICAiUGFyc2UgYSByZXZpc2lvbiBuYW1lIGFuZCByZXR1cm4gaXRzIFNIQTEuIgogICAoZ2l0LWdldC1zdHJpbmctc2hhMQotICAgKGdpdC1jYWxsLXByb2Nlc3MtZW52LXN0cmluZyBuaWwgInJldi1wYXJzZSIgcmV2KSkpCisgICAoZ2l0LWNhbGwtcHJvY2Vzcy1zdHJpbmcgInJldi1wYXJzZSIgcmV2KSkpCiAKIChkZWZ1biBnaXQtY29uZmlnIChrZXkpCiAgICJSZXRyaWV2ZSB0aGUgdmFsdWUgYXNzb2NpYXRlZCB0byBLRVkgaW4gdGhlIGdpdCByZXBvc2l0b3J5IGNvbmZpZyBmaWxlLiIKLSAgKGxldCAoKHN0ciAoZ2l0LWNhbGwtcHJvY2Vzcy1lbnYtc3RyaW5nIG5pbCAiY29uZmlnIiBrZXkpKSkKKyAgKGxldCAoKHN0ciAoZ2l0LWNhbGwtcHJvY2Vzcy1zdHJpbmcgImNvbmZpZyIga2V5KSkpCiAgICAgKGFuZCBzdHIgKGNhciAoc3BsaXQtc3RyaW5nIHN0ciAiXG4iKSkpKSkKIAogKGRlZnVuIGdpdC1zeW1ib2xpYy1yZWYgKHJlZikKICAgIldyYXBwZXIgZm9yIHRoZSBnaXQtc3ltYm9saWMtcmVmIGNvbW1hbmQuIgotICAobGV0ICgoc3RyIChnaXQtY2FsbC1wcm9jZXNzLWVudi1zdHJpbmcgbmlsICJzeW1ib2xpYy1yZWYiIHJlZikpKQorICAobGV0ICgoc3RyIChnaXQtY2FsbC1wcm9jZXNzLXN0cmluZyAic3ltYm9saWMtcmVmIiByZWYpKSkKICAgICAoYW5kIHN0ciAoY2FyIChzcGxpdC1zdHJpbmcgc3RyICJcbiIpKSkpKQogCiAoZGVmdW4gZ2l0LXVwZGF0ZS1yZWYgKHJlZiBuZXd2YWwgJm9wdGlvbmFsIG9sZHZhbCByZWFzb24pCiAgICJVcGRhdGUgYSByZWZlcmVuY2UgYnkgY2FsbGluZyBnaXQtdXBkYXRlLXJlZi4iCiAgIChsZXQgKChhcmdzIChhbmQgb2xkdmFsIChsaXN0IG9sZHZhbCkpKSkKLSAgICAocHVzaCBuZXd2YWwgYXJncykKKyAgICAod2hlbiBuZXd2YWwgKHB1c2ggbmV3dmFsIGFyZ3MpKQogICAgIChwdXNoIHJlZiBhcmdzKQogICAgICh3aGVuIHJlYXNvbgogICAgICAocHVzaCByZWFzb24gYXJncykKICAgICAgKHB1c2ggIi1tIiBhcmdzKSkKKyAgICAodW5sZXNzIG5ld3ZhbCAocHVzaCAiLWQiIGFyZ3MpKQogICAgIChhcHBseSAnZ2l0LWNhbGwtcHJvY2Vzcy1kaXNwbGF5LWVycm9yICJ1cGRhdGUtcmVmIiBhcmdzKSkpCiAKIChkZWZ1biBnaXQtcmVhZC10cmVlICh0cmVlICZvcHRpb25hbCBpbmRleC1maWxlKQogICAiUmVhZCBhIHRyZWUgaW50byB0aGUgaW5kZXggZmlsZS4iCi0gIChhcHBseSAjJ2dpdC1jYWxsLXByb2Nlc3MtZW52IG5pbAotICAgICAgICAgKGlmIGluZGV4LWZpbGUgYCgoIkdJVF9JTkRFWF9GSUxFIiAuICxpbmRleC1maWxlKSkgbmlsKQotICAgICAgICAgInJlYWQtdHJlZSIgKGlmIHRyZWUgKGxpc3QgdHJlZSkpKSkKKyAgKGxldCAoKHByb2Nlc3MtZW52aXJvbm1lbnQKKyAgICAgICAgIChhcHBlbmQgKGFuZCBpbmRleC1maWxlIChsaXN0IChjb25jYXQgIkdJVF9JTkRFWF9GSUxFPSIgaW5kZXgtZmlsZSkpKSBwcm9jZXNzLWVudmlyb25tZW50KSkpCisgICAgKGFwcGx5ICdnaXQtY2FsbC1wcm9jZXNzLWRpc3BsYXktZXJyb3IgInJlYWQtdHJlZSIgKGlmIHRyZWUgKGxpc3QgdHJlZSkpKSkpCiAKIChkZWZ1biBnaXQtd3JpdGUtdHJlZSAoJm9wdGlvbmFsIGluZGV4LWZpbGUpCiAgICJDYWxsIGdpdC13cml0ZS10cmVlIGFuZCByZXR1cm4gdGhlIHJlc3VsdGluZyB0cmVlIFNIQTEgYXMgYSBzdHJpbmcuIgotICAoZ2l0LWdldC1zdHJpbmctc2hhMQotICAgKGdpdC1jYWxsLXByb2Nlc3MtZW52LXN0cmluZyAoYW5kIGluZGV4LWZpbGUgYCgoIkdJVF9JTkRFWF9GSUxFIiAuICxpbmRleC1maWxlKSkpICJ3cml0ZS10cmVlIikpKQorICAobGV0ICgocHJvY2Vzcy1lbnZpcm9ubWVudAorICAgICAgICAgKGFwcGVuZCAoYW5kIGluZGV4LWZpbGUgKGxpc3QgKGNvbmNhdCAiR0lUX0lOREVYX0ZJTEU9IiBpbmRleC1maWxlKSkpIHByb2Nlc3MtZW52aXJvbm1lbnQpKSkKKyAgICAoZ2l0LWdldC1zdHJpbmctc2hhMQorICAgICAoZ2l0LWNhbGwtcHJvY2Vzcy1zdHJpbmctZGlzcGxheS1lcnJvciAid3JpdGUtdHJlZSIpKSkpCiAKIChkZWZ1biBnaXQtY29tbWl0LXRyZWUgKGJ1ZmZlciB0cmVlIGhlYWQpCiAgICJDYWxsIGdpdC1jb21taXQtdHJlZSB3aXRoIGJ1ZmZlciBhcyBpbnB1dCBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgY29tbWl0IFNIQTEuIgpAQCAtNDI0LDExICs0MzQsMTEgQEAKICAgICAgICAgICAgICh3aGVuIChyZS1zZWFyY2gtZm9yd2FyZCAiXkRhdGU6ICtcXCguKlxcKSQiIG5pbCB0KQogICAgICAgICAgICAgICAoc2V0cSBhdXRob3ItZGF0ZSAobWF0Y2gtc3RyaW5nIDEpKSkKICAgICAgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCi0gICAgICAgICAgICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkICJeUGFyZW50OiArXFwoWzAtOWEtZl0rXFwpIiBuaWwgdCkKLSAgICAgICAgICAgICAgKHVubGVzcyAoc3RyaW5nLWVxdWFsIGhlYWQgKG1hdGNoLXN0cmluZyAxKSkKLSAgICAgICAgICAgICAgICAoc2V0cSBzdWJqZWN0ICJjb21taXQgKG1lcmdlKTogIikKKyAgICAgICAgICAgICh3aGVuIChyZS1zZWFyY2gtZm9yd2FyZCAiXk1lcmdlOiArXFwoLipcXCkiIG5pbCB0KQorICAgICAgICAgICAgICAoc2V0cSBzdWJqZWN0ICJjb21taXQgKG1lcmdlKTogIikKKyAgICAgICAgICAgICAgKGRvbGlzdCAocGFyZW50IChzcGxpdC1zdHJpbmcgKG1hdGNoLXN0cmluZyAxKSAiICsiIHQpKQogICAgICAgICAgICAgICAgIChwdXNoICItcCIgYXJncykKLSAgICAgICAgICAgICAgICAocHVzaCAobWF0Y2gtc3RyaW5nIDEpIGFyZ3MpKSkpCisgICAgICAgICAgICAgICAgKHB1c2ggcGFyZW50IGFyZ3MpKSkpCiAgICAgICAgIChzZXRxIGxvZy1zdGFydCAocG9pbnQtbWluKSkpCiAgICAgICAoc2V0cSBsb2ctZW5kIChwb2ludC1tYXgpKQogICAgICAgKGdvdG8tY2hhciBsb2ctc3RhcnQpCkBAIC00NTIsNyArNDYyLDcgQEAKIAogKGRlZnVuIGdpdC1lbXB0eS1kYi1wICgpCiAgICJDaGVjayBpZiB0aGUgZ2l0IGRiIGlzIGVtcHR5IChubyBjb21taXQgZG9uZSB5ZXQpLiIKLSAgKG5vdCAoZXEgMCAoY2FsbC1wcm9jZXNzICJnaXQiIG5pbCBuaWwgbmlsICJyZXYtcGFyc2UiICItLXZlcmlmeSIgIkhFQUQiKSkpKQorICAobm90IChlcSAwIChnaXQtY2FsbC1wcm9jZXNzIG5pbCAicmV2LXBhcnNlIiAiLS12ZXJpZnkiICJIRUFEIikpKSkKIAogKGRlZnVuIGdpdC1nZXQtbWVyZ2UtaGVhZHMgKCkKICAgIlJldHJpZXZlIHRoZSBtZXJnZSBoZWFkcyBmcm9tIHRoZSBNRVJHRV9IRUFEIGZpbGUgaWYgcHJlc2VudC4iCkBAIC00NjgsNyArNDc4LDcgQEAKIChkZWZ1biBnaXQtZ2V0LWNvbW1pdC1kZXNjcmlwdGlvbiAoY29tbWl0KQogICAiR2V0IGEgb25lLWxpbmUgZGVzY3JpcHRpb24gb2YgQ09NTUlULiIKICAgKGxldCAoKGNvZGluZy1zeXN0ZW0tZm9yLXJlYWQgKGdpdC1nZXQtbG9nb3V0cHV0LWNvZGluZy1zeXN0ZW0pKSkKLSAgICAobGV0ICgoZGVzY3IgKGdpdC1jYWxsLXByb2Nlc3MtZW52LXN0cmluZyBuaWwgImxvZyIgIi0tbWF4LWNvdW50PTEiICItLXByZXR0eT1vbmVsaW5lIiBjb21taXQpKSkKKyAgICAobGV0ICgoZGVzY3IgKGdpdC1jYWxsLXByb2Nlc3Mtc3RyaW5nICJsb2ciICItLW1heC1jb3VudD0xIiAiLS1wcmV0dHk9b25lbGluZSIgY29tbWl0KSkpCiAgICAgICAoaWYgKGFuZCBkZXNjciAoc3RyaW5nLW1hdGNoICJcXGBcXChbMC05YS1mXVxcezQwXFx9XFwpICpcXCguKlxcKSQiIGRlc2NyKSkKICAgICAgICAgICAoY29uY2F0IChzdWJzdHJpbmcgKG1hdGNoLXN0cmluZyAxIGRlc2NyKSAwIDEwKSAiIC0gIiAobWF0Y2gtc3RyaW5nIDIgZGVzY3IpKQogICAgICAgICBkZXNjcikpKSkKQEAgLTQ4NywxNCArNDk3LDExIEBACiAgIG9sZC1wZXJtIG5ldy1wZXJtICAgOzsgcGVybWlzc2lvbiBmbGFncwogICByZW5hbWUtc3RhdGUgICAgICAgIDs7IHJlbmFtZSBvciBjb3B5IHN0YXRlCiAgIG9yaWctbmFtZSAgICAgICAgICAgOzsgb3JpZ2luYWwgbmFtZSBmb3IgcmVuYW1lcyBvciBjb3BpZXMKKyAgbmVlZHMtdXBkYXRlICAgICAgICA7OyB3aGV0aGVyIGZpbGUgbmVlZHMgdG8gYmUgdXBkYXRlZAogICBuZWVkcy1yZWZyZXNoKSAgICAgIDs7IHdoZXRoZXIgZmlsZSBuZWVkcyB0byBiZSByZWZyZXNoZWQKIAogKGRlZnZhciBnaXQtc3RhdHVzIG5pbCkKIAotKGRlZnVuIGdpdC1jbGVhci1zdGF0dXMgKHN0YXR1cykKLSAgIlJlbW92ZSBldmVyeXRoaW5nIGZyb20gdGhlIHN0YXR1cyBsaXN0LiIKLSAgKGV3b2MtZmlsdGVyIHN0YXR1cyAobGFtYmRhIChpbmZvKSBuaWwpKSkKLQogKGRlZnVuIGdpdC1zZXQtZmlsZWluZm8tc3RhdGUgKGluZm8gc3RhdGUpCiAgICJTZXQgdGhlIHN0YXRlIG9mIGEgZmlsZSBpbmZvLiIKICAgKHVubGVzcyAoZXEgKGdpdC1maWxlaW5mby0+c3RhdGUgaW5mbykgc3RhdGUpCkBAIC01MDIsNiArNTA5LDcgQEAKIAkgIChnaXQtZmlsZWluZm8tPm5ldy1wZXJtIGluZm8pIChnaXQtZmlsZWluZm8tPm9sZC1wZXJtIGluZm8pCiAgICAgICAgICAgKGdpdC1maWxlaW5mby0+cmVuYW1lLXN0YXRlIGluZm8pIG5pbAogICAgICAgICAgIChnaXQtZmlsZWluZm8tPm9yaWctbmFtZSBpbmZvKSBuaWwKKyAgICAgICAgICAoZ2l0LWZpbGVpbmZvLT5uZWVkcy11cGRhdGUgaW5mbykgbmlsCiAgICAgICAgICAgKGdpdC1maWxlaW5mby0+bmVlZHMtcmVmcmVzaCBpbmZvKSB0KSkpCiAKIChkZWZ1biBnaXQtc3RhdHVzLWZpbGVuYW1lcy1tYXAgKHN0YXR1cyBmdW5jIGZpbGVzICZyZXN0IGFyZ3MpCkBAIC01MTEsMTAgKzUxOSwxMSBAQAogICAgIChsZXQgKChmaWxlIChwb3AgZmlsZXMpKQogICAgICAgICAgIChub2RlIChld29jLW50aCBzdGF0dXMgMCkpKQogICAgICAgKHdoaWxlIChhbmQgZmlsZSBub2RlKQotICAgICAgICAobGV0ICgoaW5mbyAoZXdvYy1kYXRhIG5vZGUpKSkKLSAgICAgICAgICAoaWYgKHN0cmluZy1sZXNzcCAoZ2l0LWZpbGVpbmZvLT5uYW1lIGluZm8pIGZpbGUpCisgICAgICAgIChsZXQqICgoaW5mbyAoZXdvYy1kYXRhIG5vZGUpKQorICAgICAgICAgICAgICAgKG5hbWUgKGdpdC1maWxlaW5mby0+bmFtZSBpbmZvKSkpCisgICAgICAgICAgKGlmIChzdHJpbmctbGVzc3AgbmFtZSBmaWxlKQogICAgICAgICAgICAgICAoc2V0cSBub2RlIChld29jLW5leHQgc3RhdHVzIG5vZGUpKQotICAgICAgICAgICAgKGlmIChzdHJpbmctZXF1YWwgKGdpdC1maWxlaW5mby0+bmFtZSBpbmZvKSBmaWxlKQorICAgICAgICAgICAgKGlmIChzdHJpbmctZXF1YWwgbmFtZSBmaWxlKQogICAgICAgICAgICAgICAgIChhcHBseSBmdW5jIGluZm8gYXJncykpCiAgICAgICAgICAgICAoc2V0cSBmaWxlIChwb3AgZmlsZXMpKSkpKSkpKQogCkBAIC02MTIsMzkgKzYyMSw1MiBAQAogCQkgICAgKGdpdC1maWxlLXR5cGUtYXMtc3RyaW5nIG9sZC1wZXJtIG5ldy1wZXJtKQogCQkgICAgKGdpdC1yZW5hbWUtYXMtc3RyaW5nIGluZm8pKSkpKQogCi0oZGVmdW4gZ2l0LWluc2VydC1pbmZvLWxpc3QgKHN0YXR1cyBpbmZvbGlzdCkKLSAgIkluc2VydCBhIGxpc3Qgb2YgZmlsZSBpbmZvcyBpbiB0aGUgc3RhdHVzIGJ1ZmZlciwgcmVwbGFjaW5nIGV4aXN0aW5nIG9uZXMgaWYgYW55LiIKLSAgKHNldHEgaW5mb2xpc3QgKHNvcnQgaW5mb2xpc3QKLSAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoaW5mbzEgaW5mbzIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1sZXNzcCAoZ2l0LWZpbGVpbmZvLT5uYW1lIGluZm8xKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdpdC1maWxlaW5mby0+bmFtZSBpbmZvMikpKSkpCi0gIChsZXQgKChpbmZvIChwb3AgaW5mb2xpc3QpKQotICAgICAgICAobm9kZSAoZXdvYy1udGggc3RhdHVzIDApKSkKKyhkZWZ1biBnaXQtdXBkYXRlLW5vZGUtZmlsZWluZm8gKG5vZGUgaW5mbykKKyAgIlVwZGF0ZSB0aGUgZmlsZWluZm8gb2YgdGhlIHNwZWNpZmllZCBub2RlLiBUaGUgbmFtZXMgYXJlIGFzc3VtZWQgdG8gbWF0Y2ggYWxyZWFkeS4iCisgIChsZXQgKChkYXRhIChld29jLWRhdGEgbm9kZSkpKQorICAgIChzZXRmCisgICAgIDs7IHByZXNlcnZlIHRoZSBtYXJrZWQgZmxhZworICAgICAoZ2l0LWZpbGVpbmZvLT5tYXJrZWQgaW5mbykgKGdpdC1maWxlaW5mby0+bWFya2VkIGRhdGEpCisgICAgIChnaXQtZmlsZWluZm8tPm5lZWRzLXVwZGF0ZSBkYXRhKSBuaWwpCisgICAgKHdoZW4gKG5vdCAoZXF1YWwgaW5mbyBkYXRhKSkKKyAgICAgIChzZXRmIChnaXQtZmlsZWluZm8tPm5lZWRzLXJlZnJlc2ggaW5mbykgdAorICAgICAgICAgICAgKGV3b2MtZGF0YSBub2RlKSBpbmZvKSkpKQorCisoZGVmdW4gZ2l0LWluc2VydC1pbmZvLWxpc3QgKHN0YXR1cyBpbmZvbGlzdCBmaWxlcykKKyAgIkluc2VydCBhIHNvcnRlZCBsaXN0IG9mIGZpbGUgaW5mb3MgaW4gdGhlIHN0YXR1cyBidWZmZXIsIHJlcGxhY2luZyBleGlzdGluZyBvbmVzIGlmIGFueS4iCisgIChsZXQqICgoaW5mbyAocG9wIGluZm9saXN0KSkKKyAgICAgICAgIChub2RlIChld29jLW50aCBzdGF0dXMgMCkpCisgICAgICAgICAobmFtZSAoYW5kIGluZm8gKGdpdC1maWxlaW5mby0+bmFtZSBpbmZvKSkpCisgICAgICAgICByZW1haW5pbmcpCiAgICAgKHdoaWxlIGluZm8KLSAgICAgIChjb25kICgobm90IG5vZGUpCi0JICAgICAoc2V0cSBub2RlIChld29jLWVudGVyLWxhc3Qgc3RhdHVzIGluZm8pKQotICAgICAgICAgICAgIChzZXRxIGluZm8gKHBvcCBpbmZvbGlzdCkpKQotICAgICAgICAgICAgKChzdHJpbmctbGVzc3AgKGdpdC1maWxlaW5mby0+bmFtZSAoZXdvYy1kYXRhIG5vZGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdpdC1maWxlaW5mby0+bmFtZSBpbmZvKSkKLSAgICAgICAgICAgICAoc2V0cSBub2RlIChld29jLW5leHQgc3RhdHVzIG5vZGUpKSkKLSAgICAgICAgICAgICgoc3RyaW5nLWVxdWFsIChnaXQtZmlsZWluZm8tPm5hbWUgKGV3b2MtZGF0YSBub2RlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChnaXQtZmlsZWluZm8tPm5hbWUgaW5mbykpCi0gICAgICAgICAgICAgIDs7IHByZXNlcnZlIHRoZSBtYXJrZWQgZmxhZwotICAgICAgICAgICAgICAoc2V0ZiAoZ2l0LWZpbGVpbmZvLT5tYXJrZWQgaW5mbykgKGdpdC1maWxlaW5mby0+bWFya2VkIChld29jLWRhdGEgbm9kZSkpKQotCSAgICAgIChzZXRmIChnaXQtZmlsZWluZm8tPm5lZWRzLXJlZnJlc2ggaW5mbykgdCkKLSAgICAgICAgICAgICAgKHNldGYgKGV3b2MtZGF0YSBub2RlKSBpbmZvKQotICAgICAgICAgICAgICAoc2V0cSBpbmZvIChwb3AgaW5mb2xpc3QpKSkKLSAgICAgICAgICAgICh0Ci0JICAgICAoc2V0cSBub2RlIChld29jLWVudGVyLWJlZm9yZSBzdGF0dXMgbm9kZSBpbmZvKSkKLSAgICAgICAgICAgICAoc2V0cSBpbmZvIChwb3AgaW5mb2xpc3QpKSkpKSkpCisgICAgICAobGV0ICgobm9kZW5hbWUgKGFuZCBub2RlIChnaXQtZmlsZWluZm8tPm5hbWUgKGV3b2MtZGF0YSBub2RlKSkpKSkKKyAgICAgICAgKHdoaWxlIChhbmQgZmlsZXMgKHN0cmluZy1sZXNzcCAoY2FyIGZpbGVzKSBuYW1lKSkKKyAgICAgICAgICAocHVzaCAocG9wIGZpbGVzKSByZW1haW5pbmcpKQorICAgICAgICAod2hlbiAoYW5kIGZpbGVzIChzdHJpbmctZXF1YWwgKGNhciBmaWxlcykgbmFtZSkpCisgICAgICAgICAgKHNldHEgZmlsZXMgKGNkciBmaWxlcykpKQorICAgICAgICAoY29uZCAoKG5vdCBub2RlbmFtZSkKKyAgICAgICAgICAgICAgIChzZXRxIG5vZGUgKGV3b2MtZW50ZXItbGFzdCBzdGF0dXMgaW5mbykpCisgICAgICAgICAgICAgICAoc2V0cSBpbmZvIChwb3AgaW5mb2xpc3QpKQorICAgICAgICAgICAgICAgKHNldHEgbmFtZSAoYW5kIGluZm8gKGdpdC1maWxlaW5mby0+bmFtZSBpbmZvKSkpKQorICAgICAgICAgICAgICAoKHN0cmluZy1sZXNzcCBub2RlbmFtZSBuYW1lKQorICAgICAgICAgICAgICAgKHNldHEgbm9kZSAoZXdvYy1uZXh0IHN0YXR1cyBub2RlKSkpCisgICAgICAgICAgICAgICgoc3RyaW5nLWVxdWFsIG5vZGVuYW1lIG5hbWUpCisgICAgICAgICAgICAgICA7OyBwcmVzZXJ2ZSB0aGUgbWFya2VkIGZsYWcKKyAgICAgICAgICAgICAgIChnaXQtdXBkYXRlLW5vZGUtZmlsZWluZm8gbm9kZSBpbmZvKQorICAgICAgICAgICAgICAgKHNldHEgaW5mbyAocG9wIGluZm9saXN0KSkKKyAgICAgICAgICAgICAgIChzZXRxIG5hbWUgKGFuZCBpbmZvIChnaXQtZmlsZWluZm8tPm5hbWUgaW5mbykpKSkKKyAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAgIChzZXRxIG5vZGUgKGV3b2MtZW50ZXItYmVmb3JlIHN0YXR1cyBub2RlIGluZm8pKQorICAgICAgICAgICAgICAgKHNldHEgaW5mbyAocG9wIGluZm9saXN0KSkKKyAgICAgICAgICAgICAgIChzZXRxIG5hbWUgKGFuZCBpbmZvIChnaXQtZmlsZWluZm8tPm5hbWUgaW5mbykpKSkpKSkKKyAgICAobmNvbmMgKG5yZXZlcnNlIHJlbWFpbmluZykgZmlsZXMpKSkKIAogKGRlZnVuIGdpdC1ydW4tZGlmZi1pbmRleCAoc3RhdHVzIGZpbGVzKQogICAiUnVuIGdpdC1kaWZmLWluZGV4IG9uIEZJTEVTIGFuZCBwYXJzZSB0aGUgcmVzdWx0cyBpbnRvIFNUQVRVUy4KIFJldHVybiB0aGUgbGlzdCBvZiBmaWxlcyB0aGF0IGhhdmVuJ3QgYmVlbiBoYW5kbGVkLiIKLSAgKGxldCAoKHJlbWFpbmluZyAoY29weS1zZXF1ZW5jZSBmaWxlcykpCi0JaW5mb2xpc3QpCisgIChsZXQgKGluZm9saXN0KQogICAgICh3aXRoLXRlbXAtYnVmZmVyCi0gICAgICAoYXBwbHkgIydnaXQtY2FsbC1wcm9jZXNzLWVudiB0IG5pbCAiZGlmZi1pbmRleCIgIi16IiAiLU0iICJIRUFEIiAiLS0iIGZpbGVzKQorICAgICAgKGFwcGx5ICMnZ2l0LWNhbGwtcHJvY2VzcyB0ICJkaWZmLWluZGV4IiAiLXoiICItTSIgIkhFQUQiICItLSIgZmlsZXMpCiAgICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICAgICAgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZAogCSAgICAgICI6XFwoWzAtN11cXHs2XFx9XFwpIFxcKFswLTddXFx7NlxcfVxcKSBbMC05YS1mXVxcezQwXFx9IFswLTlhLWZdXFx7NDBcXH0gXFwoXFwoW0FETVVUXVxcKVwwXFwoW15cMF0rXFwpXFx8XFwoW0NSXVxcKVswLTldKlwwXFwoW15cMF0rXFwpXDBcXChbXlwwXStcXClcXClcMCIKQEAgLTY1OSwxMSArNjgxLDEyIEBACiAgICAgICAgICAgICAgICAgICAocHVzaCAoZ2l0LWNyZWF0ZS1maWxlaW5mbyAnYWRkZWQgbmV3LW5hbWUgb2xkLXBlcm0gbmV3LXBlcm0gJ2NvcHkgbmFtZSkgaW5mb2xpc3QpCiAgICAgICAgICAgICAgICAgKHB1c2ggKGdpdC1jcmVhdGUtZmlsZWluZm8gJ2RlbGV0ZWQgbmFtZSAwIDAgJ3JlbmFtZSBuZXctbmFtZSkgaW5mb2xpc3QpCiAgICAgICAgICAgICAgICAgKHB1c2ggKGdpdC1jcmVhdGUtZmlsZWluZm8gJ2FkZGVkIG5ldy1uYW1lIG9sZC1wZXJtIG5ldy1wZXJtICdyZW5hbWUgbmFtZSkgaW5mb2xpc3QpKQotICAgICAgICAgICAgKHB1c2ggKGdpdC1jcmVhdGUtZmlsZWluZm8gKGdpdC1zdGF0ZS1jb2RlIHN0YXRlKSBuYW1lIG9sZC1wZXJtIG5ldy1wZXJtKSBpbmZvbGlzdCkpCi0JICAoc2V0cSByZW1haW5pbmcgKGRlbGV0ZSBuYW1lIHJlbWFpbmluZykpCi0JICAod2hlbiBuZXctbmFtZSAoc2V0cSByZW1haW5pbmcgKGRlbGV0ZSBuZXctbmFtZSByZW1haW5pbmcpKSkpKSkKLSAgICAoZ2l0LWluc2VydC1pbmZvLWxpc3Qgc3RhdHVzIGluZm9saXN0KQotICAgIHJlbWFpbmluZykpCisgICAgICAgICAgICAocHVzaCAoZ2l0LWNyZWF0ZS1maWxlaW5mbyAoZ2l0LXN0YXRlLWNvZGUgc3RhdGUpIG5hbWUgb2xkLXBlcm0gbmV3LXBlcm0pIGluZm9saXN0KSkpKSkKKyAgICAoc2V0cSBpbmZvbGlzdCAoc29ydCAobnJldmVyc2UgaW5mb2xpc3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoaW5mbzEgaW5mbzIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWxlc3NwIChnaXQtZmlsZWluZm8tPm5hbWUgaW5mbzEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnaXQtZmlsZWluZm8tPm5hbWUgaW5mbzIpKSkpKQorICAgIChnaXQtaW5zZXJ0LWluZm8tbGlzdCBzdGF0dXMgaW5mb2xpc3QgZmlsZXMpKSkKIAogKGRlZnVuIGdpdC1maW5kLXN0YXR1cy1maWxlIChzdGF0dXMgZmlsZSkKICAgIkZpbmQgYSBnaXZlbiBmaWxlIGluIHRoZSBzdGF0dXMgZXdvYyBhbmQgcmV0dXJuIGl0cyBub2RlLiIKQEAgLTY3NywzOCArNzAwLDM1IEBACiBSZXR1cm4gdGhlIGxpc3Qgb2YgZmlsZXMgdGhhdCBoYXZlbid0IGJlZW4gaGFuZGxlZC4iCiAgIChsZXQgKGluZm9saXN0KQogICAgICh3aXRoLXRlbXAtYnVmZmVyCi0gICAgICAoYXBwbHkgIydnaXQtY2FsbC1wcm9jZXNzLWVudiB0IG5pbCAibHMtZmlsZXMiICIteiIgKGFwcGVuZCBvcHRpb25zIChsaXN0ICItLSIpIGZpbGVzKSkKKyAgICAgIChhcHBseSAjJ2dpdC1jYWxsLXByb2Nlc3MgdCAibHMtZmlsZXMiICIteiIgKGFwcGVuZCBvcHRpb25zIChsaXN0ICItLSIpIGZpbGVzKSkKICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAgICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkICJcXChbXlwwXSo/XFwpXFwoLz9cXClcMCIgbmlsIHQgMSkKICAgICAgICAgKGxldCAoKG5hbWUgKG1hdGNoLXN0cmluZyAxKSkpCiAgICAgICAgICAgKHB1c2ggKGdpdC1jcmVhdGUtZmlsZWluZm8gZGVmYXVsdC1zdGF0ZSBuYW1lIDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHN0cmluZy1lcXVhbCAiLyIgKG1hdGNoLXN0cmluZyAyKSkgKGxzaCA/XDExMCA5KSAwKSkKLSAgICAgICAgICAgICAgICBpbmZvbGlzdCkKLSAgICAgICAgICAoc2V0cSBmaWxlcyAoZGVsZXRlIG5hbWUgZmlsZXMpKSkpKQotICAgIChnaXQtaW5zZXJ0LWluZm8tbGlzdCBzdGF0dXMgaW5mb2xpc3QpCi0gICAgZmlsZXMpKQorICAgICAgICAgICAgICAgIGluZm9saXN0KSkpKQorICAgIChzZXRxIGluZm9saXN0IChucmV2ZXJzZSBpbmZvbGlzdCkpICA7OyBhc3N1bWUgaXQgaXMgc29ydGVkIGFscmVhZHkKKyAgICAoZ2l0LWluc2VydC1pbmZvLWxpc3Qgc3RhdHVzIGluZm9saXN0IGZpbGVzKSkpCiAKIChkZWZ1biBnaXQtcnVuLWxzLWZpbGVzLWNhY2hlZCAoc3RhdHVzIGZpbGVzIGRlZmF1bHQtc3RhdGUpCiAgICJSdW4gZ2l0LWxzLWZpbGVzIC1jIG9uIEZJTEVTIGFuZCBwYXJzZSB0aGUgcmVzdWx0cyBpbnRvIFNUQVRVUy4KIFJldHVybiB0aGUgbGlzdCBvZiBmaWxlcyB0aGF0IGhhdmVuJ3QgYmVlbiBoYW5kbGVkLiIKLSAgKGxldCAoKHJlbWFpbmluZyAoY29weS1zZXF1ZW5jZSBmaWxlcykpCi0JaW5mb2xpc3QpCisgIChsZXQgKGluZm9saXN0KQogICAgICh3aXRoLXRlbXAtYnVmZmVyCi0gICAgICAoYXBwbHkgIydnaXQtY2FsbC1wcm9jZXNzLWVudiB0IG5pbCAibHMtZmlsZXMiICIteiIgIi1zIiAiLWMiICItLSIgZmlsZXMpCisgICAgICAoYXBwbHkgIydnaXQtY2FsbC1wcm9jZXNzIHQgImxzLWZpbGVzIiAiLXoiICItcyIgIi1jIiAiLS0iIGZpbGVzKQogICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAgICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgIlxcKFswLTddXFx7NlxcfVxcKSBbMC05YS1mXVxcezQwXFx9IDBcdFxcKFteXDBdK1xcKVwwIiBuaWwgdCkKIAkobGV0KiAoKG5ldy1wZXJtIChzdHJpbmctdG8tbnVtYmVyIChtYXRjaC1zdHJpbmcgMSkgOCkpCiAJICAgICAgIChvbGQtcGVybSAoaWYgKGVxIGRlZmF1bHQtc3RhdGUgJ2FkZGVkKSAwIG5ldy1wZXJtKSkKIAkgICAgICAgKG5hbWUgKG1hdGNoLXN0cmluZyAyKSkpCi0JICAocHVzaCAoZ2l0LWNyZWF0ZS1maWxlaW5mbyBkZWZhdWx0LXN0YXRlIG5hbWUgb2xkLXBlcm0gbmV3LXBlcm0pIGluZm9saXN0KQotCSAgKHNldHEgcmVtYWluaW5nIChkZWxldGUgbmFtZSByZW1haW5pbmcpKSkpKQotICAgIChnaXQtaW5zZXJ0LWluZm8tbGlzdCBzdGF0dXMgaW5mb2xpc3QpCi0gICAgcmVtYWluaW5nKSkKKwkgIChwdXNoIChnaXQtY3JlYXRlLWZpbGVpbmZvIGRlZmF1bHQtc3RhdGUgbmFtZSBvbGQtcGVybSBuZXctcGVybSkgaW5mb2xpc3QpKSkpCisgICAgKHNldHEgaW5mb2xpc3QgKG5yZXZlcnNlIGluZm9saXN0KSkgIDs7IGFzc3VtZSBpdCBpcyBzb3J0ZWQgYWxyZWFkeQorICAgIChnaXQtaW5zZXJ0LWluZm8tbGlzdCBzdGF0dXMgaW5mb2xpc3QgZmlsZXMpKSkKIAogKGRlZnVuIGdpdC1ydW4tbHMtdW5tZXJnZWQgKHN0YXR1cyBmaWxlcykKICAgIlJ1biBnaXQtbHMtZmlsZXMgLXUgb24gRklMRVMgYW5kIHBhcnNlIHRoZSByZXN1bHRzIGludG8gU1RBVFVTLiIKICAgKHdpdGgtdGVtcC1idWZmZXIKLSAgICAoYXBwbHkgIydnaXQtY2FsbC1wcm9jZXNzLWVudiB0IG5pbCAibHMtZmlsZXMiICIteiIgIi11IiAiLS0iIGZpbGVzKQorICAgIChhcHBseSAjJ2dpdC1jYWxsLXByb2Nlc3MgdCAibHMtZmlsZXMiICIteiIgIi11IiAiLS0iIGZpbGVzKQogICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAgKGxldCAodW5tZXJnZWQtZmlsZXMpCiAgICAgICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkICJbMC03XVxcezZcXH0gWzAtOWEtZl1cXHs0MFxcfSBbMTIzXVx0XFwoW15cMF0rXFwpXDAiIG5pbCB0KQpAQCAtNzMyLDExICs3NTIsMTcgQEAKICAgICAgICAgICAgKGNvbmNhdCAiLS1leGNsdWRlLXBlci1kaXJlY3Rvcnk9IiBnaXQtcGVyLWRpci1pZ25vcmUtZmlsZSkKICAgICAgICAgICAgKGFwcGVuZCBvcHRpb25zIChtYXBjYXIgKGxhbWJkYSAoZikgKGNvbmNhdCAiLS1leGNsdWRlLWZyb209IiBmKSkgZXhjbHVkZS1maWxlcykpKSkpCiAKLShkZWZ1biBnaXQtdXBkYXRlLXN0YXR1cy1maWxlcyAoZmlsZXMgJm9wdGlvbmFsIGRlZmF1bHQtc3RhdGUpCisoZGVmdW4gZ2l0LXVwZGF0ZS1zdGF0dXMtZmlsZXMgKCZvcHRpb25hbCBmaWxlcyBtYXJrLWZpbGVzKQogICAiVXBkYXRlIHRoZSBzdGF0dXMgb2YgRklMRVMgZnJvbSB0aGUgaW5kZXguIgogICAodW5sZXNzIGdpdC1zdGF0dXMgKGVycm9yICJOb3QgaW4gZ2l0LXN0YXR1cyBidWZmZXIuIikpCi0gICh3aGVuIChvciBnaXQtc2hvdy11cHRvZGF0ZSBmaWxlcykKLSAgICAoZ2l0LXJ1bi1scy1maWxlcy1jYWNoZWQgZ2l0LXN0YXR1cyBmaWxlcyAndXB0b2RhdGUpKQorICA7OyBzZXQgdGhlIG5lZWRzLXVwZGF0ZSBmbGFnIG9uIGV4aXN0aW5nIGZpbGVzCisgIChpZiAoc2V0cSBmaWxlcyAoc29ydCBmaWxlcyAjJ3N0cmluZy1sZXNzcCkpCisgICAgICAoZ2l0LXN0YXR1cy1maWxlbmFtZXMtbWFwCisgICAgICAgZ2l0LXN0YXR1cyAobGFtYmRhIChpbmZvKSAoc2V0ZiAoZ2l0LWZpbGVpbmZvLT5uZWVkcy11cGRhdGUgaW5mbykgdCkpIGZpbGVzKQorICAgIChld29jLW1hcCAobGFtYmRhIChpbmZvKSAoc2V0ZiAoZ2l0LWZpbGVpbmZvLT5uZWVkcy11cGRhdGUgaW5mbykgdCkgbmlsKSBnaXQtc3RhdHVzKQorICAgIChnaXQtY2FsbC1wcm9jZXNzIG5pbCAidXBkYXRlLWluZGV4IiAiLS1yZWZyZXNoIikKKyAgICAod2hlbiBnaXQtc2hvdy11cHRvZGF0ZQorICAgICAgKGdpdC1ydW4tbHMtZmlsZXMtY2FjaGVkIGdpdC1zdGF0dXMgbmlsICd1cHRvZGF0ZSkpKQogICAobGV0KiAoKHJlbWFpbmluZy1maWxlcwogICAgICAgICAgIChpZiAoZ2l0LWVtcHR5LWRiLXApIDsgd2UgbmVlZCBzb21lIHNwZWNpYWwgaGFuZGxpbmcgZm9yIGFuIGVtcHR5IGRiCiAJICAgICAgKGdpdC1ydW4tbHMtZmlsZXMtY2FjaGVkIGdpdC1zdGF0dXMgZmlsZXMgJ2FkZGVkKQpAQCAtNzQ2LDEzICs3NzIsMTcgQEAKICAgICAgIChzZXRxIHJlbWFpbmluZy1maWxlcyAoZ2l0LXJ1bi1scy1maWxlcy13aXRoLWV4Y2x1ZGVzIGdpdC1zdGF0dXMgcmVtYWluaW5nLWZpbGVzICd1bmtub3duICItbyIpKSkKICAgICAod2hlbiAob3IgcmVtYWluaW5nLWZpbGVzIChhbmQgZ2l0LXNob3ctaWdub3JlZCAobm90IGZpbGVzKSkpCiAgICAgICAoc2V0cSByZW1haW5pbmctZmlsZXMgKGdpdC1ydW4tbHMtZmlsZXMtd2l0aC1leGNsdWRlcyBnaXQtc3RhdHVzIHJlbWFpbmluZy1maWxlcyAnaWdub3JlZCAiLW8iICItaSIpKSkKLSAgICAoZ2l0LXNldC1maWxlbmFtZXMtc3RhdGUgZ2l0LXN0YXR1cyByZW1haW5pbmctZmlsZXMgZGVmYXVsdC1zdGF0ZSkKKyAgICAodW5sZXNzIGZpbGVzCisgICAgICAoc2V0cSByZW1haW5pbmctZmlsZXMgKGdpdC1nZXQtZmlsZW5hbWVzIChld29jLWNvbGxlY3QgZ2l0LXN0YXR1cyAjJ2dpdC1maWxlaW5mby0+bmVlZHMtdXBkYXRlKSkpKQorICAgICh3aGVuIHJlbWFpbmluZy1maWxlcworICAgICAgKHNldHEgcmVtYWluaW5nLWZpbGVzIChnaXQtcnVuLWxzLWZpbGVzLWNhY2hlZCBnaXQtc3RhdHVzIHJlbWFpbmluZy1maWxlcyAndXB0b2RhdGUpKSkKKyAgICAoZ2l0LXNldC1maWxlbmFtZXMtc3RhdGUgZ2l0LXN0YXR1cyByZW1haW5pbmctZmlsZXMgbmlsKQorICAgICh3aGVuIG1hcmstZmlsZXMgKGdpdC1tYXJrLWZpbGVzIGdpdC1zdGF0dXMgZmlsZXMpKQogICAgIChnaXQtcmVmcmVzaC1maWxlcykKICAgICAoZ2l0LXJlZnJlc2gtZXdvYy1oZiBnaXQtc3RhdHVzKSkpCiAKIChkZWZ1biBnaXQtbWFyay1maWxlcyAoc3RhdHVzIGZpbGVzKQogICAiTWFyayBhbGwgdGhlIHNwZWNpZmllZCBGSUxFUywgYW5kIHVubWFyayB0aGUgb3RoZXJzLiIKLSAgKHNldHEgZmlsZXMgKHNvcnQgZmlsZXMgIydzdHJpbmctbGVzc3ApKQogICAobGV0ICgoZmlsZSAoYW5kIGZpbGVzIChwb3AgZmlsZXMpKSkKICAgICAgICAgKG5vZGUgKGV3b2MtbnRoIHN0YXR1cyAwKSkpCiAgICAgKHdoaWxlIG5vZGUKQEAgLTgyNCwxOSArODU0LDE4IEBACiAKIChkZWZ1biBnaXQtdXBkYXRlLWluZGV4IChpbmRleC1maWxlIGZpbGVzKQogICAiUnVuIGdpdC11cGRhdGUtaW5kZXggb24gYSBsaXN0IG9mIGZpbGVzLiIKLSAgKGxldCAoKGVudiAoYW5kIGluZGV4LWZpbGUgYCgoIkdJVF9JTkRFWF9GSUxFIiAuICxpbmRleC1maWxlKSkpKQorICAobGV0ICgocHJvY2Vzcy1lbnZpcm9ubWVudCAoYXBwZW5kIChhbmQgaW5kZXgtZmlsZSAobGlzdCAoY29uY2F0ICJHSVRfSU5ERVhfRklMRT0iIGluZGV4LWZpbGUpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLWVudmlyb25tZW50KSkKICAgICAgICAgYWRkZWQgZGVsZXRlZCBtb2RpZmllZCkKICAgICAoZG9saXN0IChpbmZvIGZpbGVzKQogICAgICAgKGNhc2UgKGdpdC1maWxlaW5mby0+c3RhdGUgaW5mbykKICAgICAgICAgKCdhZGRlZCAocHVzaCBpbmZvIGFkZGVkKSkKICAgICAgICAgKCdkZWxldGVkIChwdXNoIGluZm8gZGVsZXRlZCkpCiAgICAgICAgICgnbW9kaWZpZWQgKHB1c2ggaW5mbyBtb2RpZmllZCkpKSkKLSAgICAod2hlbiBhZGRlZAotICAgICAgKGFwcGx5ICMnZ2l0LWNhbGwtcHJvY2Vzcy1lbnYgbmlsIGVudiAidXBkYXRlLWluZGV4IiAiLS1hZGQiICItLSIgKGdpdC1nZXQtZmlsZW5hbWVzIGFkZGVkKSkpCi0gICAgKHdoZW4gZGVsZXRlZAotICAgICAgKGFwcGx5ICMnZ2l0LWNhbGwtcHJvY2Vzcy1lbnYgbmlsIGVudiAidXBkYXRlLWluZGV4IiAiLS1yZW1vdmUiICItLSIgKGdpdC1nZXQtZmlsZW5hbWVzIGRlbGV0ZWQpKSkKLSAgICAod2hlbiBtb2RpZmllZAotICAgICAgKGFwcGx5ICMnZ2l0LWNhbGwtcHJvY2Vzcy1lbnYgbmlsIGVudiAidXBkYXRlLWluZGV4IiAiLS0iIChnaXQtZ2V0LWZpbGVuYW1lcyBtb2RpZmllZCkpKSkpCisgICAgKGFuZAorICAgICAob3IgKG5vdCBhZGRlZCkgKGFwcGx5ICMnZ2l0LWNhbGwtcHJvY2Vzcy1kaXNwbGF5LWVycm9yICJ1cGRhdGUtaW5kZXgiICItLWFkZCIgIi0tIiAoZ2l0LWdldC1maWxlbmFtZXMgYWRkZWQpKSkKKyAgICAgKG9yIChub3QgZGVsZXRlZCkgKGFwcGx5ICMnZ2l0LWNhbGwtcHJvY2Vzcy1kaXNwbGF5LWVycm9yICJ1cGRhdGUtaW5kZXgiICItLXJlbW92ZSIgIi0tIiAoZ2l0LWdldC1maWxlbmFtZXMgZGVsZXRlZCkpKQorICAgICAob3IgKG5vdCBtb2RpZmllZCkgKGFwcGx5ICMnZ2l0LWNhbGwtcHJvY2Vzcy1kaXNwbGF5LWVycm9yICJ1cGRhdGUtaW5kZXgiICItLSIgKGdpdC1nZXQtZmlsZW5hbWVzIG1vZGlmaWVkKSkpKSkpCiAKIChkZWZ1biBnaXQtcnVuLXByZS1jb21taXQtaG9vayAoKQogICAiUnVuIHRoZSBwcmUtY29tbWl0IGhvb2sgaWYgYW55LiIKQEAgLTg2MiwzMyArODkxLDMwIEBACiAgICAgICAgICAgKG1lc3NhZ2UgIllvdSBjYW5ub3QgY29tbWl0IHVubWVyZ2VkIGZpbGVzLCByZXNvbHZlIHRoZW0gZmlyc3QuIikKICAgICAgICAgKHVud2luZC1wcm90ZWN0CiAgICAgICAgICAgICAobGV0ICgoZmlsZXMgKGdpdC1tYXJrZWQtZmlsZXMtc3RhdGUgJ2FkZGVkICdkZWxldGVkICdtb2RpZmllZCkpCi0gICAgICAgICAgICAgICAgICBoZWFkIGhlYWQtdHJlZSkKKyAgICAgICAgICAgICAgICAgIGhlYWQgdHJlZSBoZWFkLXRyZWUpCiAgICAgICAgICAgICAgICh1bmxlc3MgKGdpdC1lbXB0eS1kYi1wKQogICAgICAgICAgICAgICAgIChzZXRxIGhlYWQgKGdpdC1yZXYtcGFyc2UgIkhFQUQiKQogICAgICAgICAgICAgICAgICAgICAgIGhlYWQtdHJlZSAoZ2l0LXJldi1wYXJzZSAiSEVBRF57dHJlZX0iKSkpCi0gICAgICAgICAgICAgIChpZiBmaWxlcwotICAgICAgICAgICAgICAgICAgKHByb2duCi0gICAgICAgICAgICAgICAgICAgIChtZXNzYWdlICJSdW5uaW5nIGdpdCBjb21taXQuLi4iKQotICAgICAgICAgICAgICAgICAgICAoZ2l0LXJlYWQtdHJlZSBoZWFkLXRyZWUgaW5kZXgtZmlsZSkKLSAgICAgICAgICAgICAgICAgICAgKGdpdC11cGRhdGUtaW5kZXggbmlsIGZpbGVzKSAgICAgICAgIDt1cGRhdGUgYm90aCB0aGUgZGVmYXVsdCBpbmRleAotICAgICAgICAgICAgICAgICAgICAoZ2l0LXVwZGF0ZS1pbmRleCBpbmRleC1maWxlIGZpbGVzKSAgO2FuZCB0aGUgdGVtcG9yYXJ5IG9uZQotICAgICAgICAgICAgICAgICAgICAobGV0ICgodHJlZSAoZ2l0LXdyaXRlLXRyZWUgaW5kZXgtZmlsZSkpKQotICAgICAgICAgICAgICAgICAgICAgIChpZiAob3IgKG5vdCAoc3RyaW5nLWVxdWFsIHRyZWUgaGVhZC10cmVlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5ZXMtb3Itbm8tcCAiVGhlIHRyZWUgd2FzIG5vdCBtb2RpZmllZCwgZG8geW91IHJlYWxseSB3YW50IHRvIHBlcmZvcm0gYW4gZW1wdHkgY29tbWl0PyAiKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKGNvbW1pdCAoZ2l0LWNvbW1pdC10cmVlIGJ1ZmZlciB0cmVlIGhlYWQpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiBjb21taXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25kaXRpb24tY2FzZSBuaWwgKGRlbGV0ZS1maWxlICIuZ2l0L01FUkdFX0hFQUQiKSAoZXJyb3IgbmlsKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25kaXRpb24tY2FzZSBuaWwgKGRlbGV0ZS1maWxlICIuZ2l0L01FUkdFX01TRyIpIChlcnJvciBuaWwpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmZmVyIChlcmFzZS1idWZmZXIpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdpdC11cGRhdGUtc3RhdHVzLWZpbGVzIChnaXQtZ2V0LWZpbGVuYW1lcyBmaWxlcykgJ3VwdG9kYXRlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdpdC1jYWxsLXByb2Nlc3MtZW52IG5pbCBuaWwgInJlcmVyZSIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2l0LWNhbGwtcHJvY2Vzcy1lbnYgbmlsIG5pbCAiZ2MiICItLWF1dG8iKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdpdC1yZWZyZXNoLWZpbGVzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdpdC1yZWZyZXNoLWV3b2MtaGYgZ2l0LXN0YXR1cykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZXNzYWdlICJDb21taXR0ZWQgJXMuIiBjb21taXQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2l0LXJ1bi1ob29rICJwb3N0LWNvbW1pdCIgbmlsKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAobWVzc2FnZSAiQ29tbWl0IGFib3J0ZWQuIikpKSkKLSAgICAgICAgICAgICAgICAobWVzc2FnZSAiTm8gZmlsZXMgdG8gY29tbWl0LiIpKSkKKyAgICAgICAgICAgICAgKG1lc3NhZ2UgIlJ1bm5pbmcgZ2l0IGNvbW1pdC4uLiIpCisgICAgICAgICAgICAgICh3aGVuCisgICAgICAgICAgICAgICAgICAoYW5kCisgICAgICAgICAgICAgICAgICAgKGdpdC1yZWFkLXRyZWUgaGVhZC10cmVlIGluZGV4LWZpbGUpCisgICAgICAgICAgICAgICAgICAgKGdpdC11cGRhdGUtaW5kZXggbmlsIGZpbGVzKSAgICAgICAgIDt1cGRhdGUgYm90aCB0aGUgZGVmYXVsdCBpbmRleAorICAgICAgICAgICAgICAgICAgIChnaXQtdXBkYXRlLWluZGV4IGluZGV4LWZpbGUgZmlsZXMpICA7YW5kIHRoZSB0ZW1wb3Jhcnkgb25lCisgICAgICAgICAgICAgICAgICAgKHNldHEgdHJlZSAoZ2l0LXdyaXRlLXRyZWUgaW5kZXgtZmlsZSkpKQorICAgICAgICAgICAgICAgIChpZiAob3IgKG5vdCAoc3RyaW5nLWVxdWFsIHRyZWUgaGVhZC10cmVlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICh5ZXMtb3Itbm8tcCAiVGhlIHRyZWUgd2FzIG5vdCBtb2RpZmllZCwgZG8geW91IHJlYWxseSB3YW50IHRvIHBlcmZvcm0gYW4gZW1wdHkgY29tbWl0PyAiKSkKKyAgICAgICAgICAgICAgICAgICAgKGxldCAoKGNvbW1pdCAoZ2l0LWNvbW1pdC10cmVlIGJ1ZmZlciB0cmVlIGhlYWQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAod2hlbiBjb21taXQKKyAgICAgICAgICAgICAgICAgICAgICAgIChjb25kaXRpb24tY2FzZSBuaWwgKGRlbGV0ZS1maWxlICIuZ2l0L01FUkdFX0hFQUQiKSAoZXJyb3IgbmlsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChjb25kaXRpb24tY2FzZSBuaWwgKGRlbGV0ZS1maWxlICIuZ2l0L01FUkdFX01TRyIpIChlcnJvciBuaWwpKQorICAgICAgICAgICAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmZmVyIChlcmFzZS1idWZmZXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgKGdpdC11cGRhdGUtc3RhdHVzLWZpbGVzIChnaXQtZ2V0LWZpbGVuYW1lcyBmaWxlcykpCisgICAgICAgICAgICAgICAgICAgICAgICAoZ2l0LWNhbGwtcHJvY2VzcyBuaWwgInJlcmVyZSIpCisgICAgICAgICAgICAgICAgICAgICAgICAoZ2l0LWNhbGwtcHJvY2VzcyBuaWwgImdjIiAiLS1hdXRvIikKKyAgICAgICAgICAgICAgICAgICAgICAgIChtZXNzYWdlICJDb21taXR0ZWQgJXMuIiBjb21taXQpCisgICAgICAgICAgICAgICAgICAgICAgICAoZ2l0LXJ1bi1ob29rICJwb3N0LWNvbW1pdCIgbmlsKSkpCisgICAgICAgICAgICAgICAgICAobWVzc2FnZSAiQ29tbWl0IGFib3J0ZWQuIikpKSkKICAgICAgICAgICAoZGVsZXRlLWZpbGUgaW5kZXgtZmlsZSkpKSkpKQogCiAKQEAgLTk5MCw2ICsxMDE2LDExIEBACiAgICAgICAoc2V0cSBub2RlIChld29jLXByZXYgZ2l0LXN0YXR1cyBub2RlKSkpCiAgICAgKGV3b2MtZ290by1ub2RlIGdpdC1zdGF0dXMgbGFzdCkpKQogCisoZGVmdW4gZ2l0LWluc2VydC1maWxlIChmaWxlKQorICAiSW5zZXJ0IGZpbGUocykgaW50byB0aGUgZ2l0LXN0YXR1cyBidWZmZXIuIgorICAoaW50ZXJhY3RpdmUgImZJbnNlcnQgZmlsZTogIikKKyAgKGdpdC11cGRhdGUtc3RhdHVzLWZpbGVzIChsaXN0IChmaWxlLXJlbGF0aXZlLW5hbWUgZmlsZSkpKSkKKwogKGRlZnVuIGdpdC1hZGQtZmlsZSAoKQogICAiQWRkIG1hcmtlZCBmaWxlKHMpIHRvIHRoZSBpbmRleCBjYWNoZS4iCiAgIChpbnRlcmFjdGl2ZSkKQEAgLTk5OCw3ICsxMDI5LDcgQEAKICAgICAodW5sZXNzIGZpbGVzCiAgICAgICAocHVzaCAoZmlsZS1yZWxhdGl2ZS1uYW1lIChyZWFkLWZpbGUtbmFtZSAiRmlsZSB0byBhZGQ6ICIgbmlsIG5pbCB0KSkgZmlsZXMpKQogICAgICh3aGVuIChhcHBseSAnZ2l0LWNhbGwtcHJvY2Vzcy1kaXNwbGF5LWVycm9yICJ1cGRhdGUtaW5kZXgiICItLWFkZCIgIi0tIiBmaWxlcykKLSAgICAgIChnaXQtdXBkYXRlLXN0YXR1cy1maWxlcyBmaWxlcyAndXB0b2RhdGUpCisgICAgICAoZ2l0LXVwZGF0ZS1zdGF0dXMtZmlsZXMgZmlsZXMpCiAgICAgICAoZ2l0LXN1Y2Nlc3MtbWVzc2FnZSAiQWRkZWQiIGZpbGVzKSkpKQogCiAoZGVmdW4gZ2l0LWlnbm9yZS1maWxlICgpCkBAIC0xMDA4LDcgKzEwMzksNyBAQAogICAgICh1bmxlc3MgZmlsZXMKICAgICAgIChwdXNoIChmaWxlLXJlbGF0aXZlLW5hbWUgKHJlYWQtZmlsZS1uYW1lICJGaWxlIHRvIGlnbm9yZTogIiBuaWwgbmlsIHQpKSBmaWxlcykpCiAgICAgKGRvbGlzdCAoZiBmaWxlcykgKGdpdC1hcHBlbmQtdG8taWdub3JlIGYpKQotICAgIChnaXQtdXBkYXRlLXN0YXR1cy1maWxlcyBmaWxlcyAnaWdub3JlZCkKKyAgICAoZ2l0LXVwZGF0ZS1zdGF0dXMtZmlsZXMgZmlsZXMpCiAgICAgKGdpdC1zdWNjZXNzLW1lc3NhZ2UgIklnbm9yZWQiIGZpbGVzKSkpCiAKIChkZWZ1biBnaXQtcmVtb3ZlLWZpbGUgKCkKQEAgLTEwMjYsNyArMTA1Nyw3IEBACiAgICAgICAgICAgICAgICAgICAoZGVsZXRlLWRpcmVjdG9yeSBuYW1lKQogICAgICAgICAgICAgICAgIChkZWxldGUtZmlsZSBuYW1lKSkpKQogICAgICAgICAgICh3aGVuIChhcHBseSAnZ2l0LWNhbGwtcHJvY2Vzcy1kaXNwbGF5LWVycm9yICJ1cGRhdGUtaW5kZXgiICItLXJlbW92ZSIgIi0tIiBmaWxlcykKLSAgICAgICAgICAgIChnaXQtdXBkYXRlLXN0YXR1cy1maWxlcyBmaWxlcyBuaWwpCisgICAgICAgICAgICAoZ2l0LXVwZGF0ZS1zdGF0dXMtZmlsZXMgZmlsZXMpCiAgICAgICAgICAgICAoZ2l0LXN1Y2Nlc3MtbWVzc2FnZSAiUmVtb3ZlZCIgZmlsZXMpKSkKICAgICAgIChtZXNzYWdlICJBYm9ydGluZyIpKSkpCiAKQEAgLTEwNTQsNyArMTA4NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAoYXBwbHkgJ2dpdC1jYWxsLXByb2Nlc3MtZGlzcGxheS1lcnJvciAidXBkYXRlLWluZGV4IiAiLS1mb3JjZS1yZW1vdmUiICItLSIgYWRkZWQpKQogICAgICAgICAgICAgICAgICAob3IgKG5vdCBtb2RpZmllZCkKICAgICAgICAgICAgICAgICAgICAgIChhcHBseSAnZ2l0LWNhbGwtcHJvY2Vzcy1kaXNwbGF5LWVycm9yICJjaGVja291dCIgIkhFQUQiIG1vZGlmaWVkKSkpKSkKLSAgICAgICAgKGdpdC11cGRhdGUtc3RhdHVzLWZpbGVzIChhcHBlbmQgYWRkZWQgbW9kaWZpZWQpICd1cHRvZGF0ZSkKKyAgICAgICAgKGdpdC11cGRhdGUtc3RhdHVzLWZpbGVzIChhcHBlbmQgYWRkZWQgbW9kaWZpZWQpKQogICAgICAgICAod2hlbiBvawogICAgICAgICAgIChkb2xpc3QgKGZpbGUgbW9kaWZpZWQpCiAgICAgICAgICAgICAobGV0ICgoYnVmZmVyIChnZXQtZmlsZS1idWZmZXIgZmlsZSkpKQpAQCAtMTA2Nyw3ICsxMDk4LDcgQEAKICAgKGxldCAoKGZpbGVzIChnaXQtZ2V0LWZpbGVuYW1lcyAoZ2l0LW1hcmtlZC1maWxlcy1zdGF0ZSAndW5tZXJnZWQpKSkpCiAgICAgKHdoZW4gZmlsZXMKICAgICAgICh3aGVuIChhcHBseSAnZ2l0LWNhbGwtcHJvY2Vzcy1kaXNwbGF5LWVycm9yICJ1cGRhdGUtaW5kZXgiICItLSIgZmlsZXMpCi0gICAgICAgIChnaXQtdXBkYXRlLXN0YXR1cy1maWxlcyBmaWxlcyAndXB0b2RhdGUpCisgICAgICAgIChnaXQtdXBkYXRlLXN0YXR1cy1maWxlcyBmaWxlcykKICAgICAgICAgKGdpdC1zdWNjZXNzLW1lc3NhZ2UgIlJlc29sdmVkIiBmaWxlcykpKSkpCiAKIChkZWZ1biBnaXQtcmVtb3ZlLWhhbmRsZWQgKCkKQEAgLTEyMjUsMTEgKzEyNTYsMTAgQEAKICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1heCkpCiAgICAgICAoaW5zZXJ0IHNpZ24tb2ZmICJcbiIpKSkpCiAKLShkZWZ1biBnaXQtc2V0dXAtbG9nLWJ1ZmZlciAoYnVmZmVyICZvcHRpb25hbCBhdXRob3ItbmFtZSBhdXRob3ItZW1haWwgc3ViamVjdCBkYXRlIG1zZykKKyhkZWZ1biBnaXQtc2V0dXAtbG9nLWJ1ZmZlciAoYnVmZmVyICZvcHRpb25hbCBtZXJnZS1oZWFkcyBhdXRob3ItbmFtZSBhdXRob3ItZW1haWwgc3ViamVjdCBkYXRlIG1zZykKICAgIlNldHVwIHRoZSBsb2cgYnVmZmVyIGZvciBhIGNvbW1pdC4iCiAgICh1bmxlc3MgZ2l0LXN0YXR1cyAoZXJyb3IgIk5vdCBpbiBnaXQtc3RhdHVzIGJ1ZmZlci4iKSkKLSAgKGxldCAoKG1lcmdlLWhlYWRzIChnaXQtZ2V0LW1lcmdlLWhlYWRzKSkKLSAgICAgICAgKGRpciBkZWZhdWx0LWRpcmVjdG9yeSkKKyAgKGxldCAoKGRpciBkZWZhdWx0LWRpcmVjdG9yeSkKICAgICAgICAgKGNvbW1pdHRlci1uYW1lIChnaXQtZ2V0LWNvbW1pdHRlci1uYW1lKSkKICAgICAgICAgKGNvbW1pdHRlci1lbWFpbCAoZ2l0LWdldC1jb21taXR0ZXItZW1haWwpKQogICAgICAgICAoc2lnbi1vZmYgZ2l0LWFwcGVuZC1zaWduZWQtb2ZmLWJ5KSkKQEAgLTEyNDMsOSArMTI3Myw4IEBACiAgICAgICAgICAgICAgICAgKG9yIGF1dGhvci1lbWFpbCBjb21taXR0ZXItZW1haWwpCiAgICAgICAgICAgICAgICAgKGlmIGRhdGUgKGZvcm1hdCAiRGF0ZTogJXNcbiIgZGF0ZSkgIiIpCiAgICAgICAgICAgICAgICAgKGlmIG1lcmdlLWhlYWRzCi0gICAgICAgICAgICAgICAgICAgIChmb3JtYXQgIlBhcmVudDogJXNcbiVzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdpdC1yZXYtcGFyc2UgIkhFQUQiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXBjb25jYXQgKGxhbWJkYSAoc3RyKSAoY29uY2F0ICJQYXJlbnQ6ICIgc3RyKSkgbWVyZ2UtaGVhZHMgIlxuIikpCisgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgIk1lcmdlOiAlc1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXBjb25jYXQgJ2lkZW50aXR5IG1lcmdlLWhlYWRzICIgIikpCiAgICAgICAgICAgICAgICAgICAiIikpCiAgICAgICAgICdmYWNlICdnaXQtaGVhZGVyLWZhY2UpCiAgICAgICAgKHByb3BlcnRpemUgZ2l0LWxvZy1tc2ctc2VwYXJhdG9yICdmYWNlICdnaXQtc2VwYXJhdG9yLWZhY2UpCkBAIC0xMjg1LDcgKzEzMTQsNyBAQAogICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAgICAgICAgICh3aGVuIChyZS1zZWFyY2gtZm9yd2FyZCAiXkRhdGU6IFxcKC4qXFwpJCIgbmlsIHQpCiAgICAgICAgICAgICAgIChzZXRxIGRhdGUgKG1hdGNoLXN0cmluZyAxKSkpKSkKLSAgICAgICAgKGdpdC1zZXR1cC1sb2ctYnVmZmVyIGJ1ZmZlciBhdXRob3ItbmFtZSBhdXRob3ItZW1haWwgc3ViamVjdCBkYXRlKSkKKyAgICAgICAgKGdpdC1zZXR1cC1sb2ctYnVmZmVyIGJ1ZmZlciAoZ2l0LWdldC1tZXJnZS1oZWFkcykgYXV0aG9yLW5hbWUgYXV0aG9yLWVtYWlsIHN1YmplY3QgZGF0ZSkpCiAgICAgICAoaWYgKGJvdW5kcCAnbG9nLWVkaXQtZGlmZi1mdW5jdGlvbikKIAkgIChsb2ctZWRpdCAnZ2l0LWRvLWNvbW1pdCBuaWwgJygobG9nLWVkaXQtbGlzdGZ1biAuIGdpdC1sb2ctZWRpdC1maWxlcykKIAkJCQkJIChsb2ctZWRpdC1kaWZmLWZ1bmN0aW9uIC4gZ2l0LWxvZy1lZGl0LWRpZmYpKSBidWZmZXIpCkBAIC0xMjk2LDExICsxMzI1LDEzIEBACiAKIChkZWZ1biBnaXQtc2V0dXAtY29tbWl0LWJ1ZmZlciAoY29tbWl0KQogICAiU2V0dXAgdGhlIGNvbW1pdCBidWZmZXIgd2l0aCB0aGUgY29udGVudHMgb2YgQ09NTUlULiIKLSAgKGxldCAoYXV0aG9yLW5hbWUgYXV0aG9yLWVtYWlsIHN1YmplY3QgZGF0ZSBtc2cpCisgIChsZXQgKHBhcmVudHMgYXV0aG9yLW5hbWUgYXV0aG9yLWVtYWlsIHN1YmplY3QgZGF0ZSBtc2cpCiAgICAgKHdpdGgtdGVtcC1idWZmZXIKICAgICAgIChsZXQgKChjb2Rpbmctc3lzdGVtIChnaXQtZ2V0LWxvZ291dHB1dC1jb2Rpbmctc3lzdGVtKSkpCi0gICAgICAgIChnaXQtY2FsbC1wcm9jZXNzLWVudiB0IG5pbCAibG9nIiAiLTEiICItLXByZXR0eT1tZWRpdW0iIGNvbW1pdCkKKyAgICAgICAgKGdpdC1jYWxsLXByb2Nlc3MgdCAibG9nIiAiLTEiICItLXByZXR0eT1tZWRpdW0iICItLWFiYnJldj00MCIgY29tbWl0KQogICAgICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQorICAgICAgICAod2hlbiAocmUtc2VhcmNoLWZvcndhcmQgIl5NZXJnZTogKlxcKC4qXFwpJCIgbmlsIHQpCisgICAgICAgICAgKHNldHEgcGFyZW50cyAoY2RyIChzcGxpdC1zdHJpbmcgKG1hdGNoLXN0cmluZyAxKSAiICsiKSkpKQogICAgICAgICAod2hlbiAocmUtc2VhcmNoLWZvcndhcmQgIl5BdXRob3I6ICpcXCguKlxcKSA8XFwoLipcXCk+JCIgbmlsIHQpCiAgICAgICAgICAgKHNldHEgYXV0aG9yLW5hbWUgKG1hdGNoLXN0cmluZyAxKSkKICAgICAgICAgICAoc2V0cSBhdXRob3ItZW1haWwgKG1hdGNoLXN0cmluZyAyKSkpCkBAIC0xMzEyLDE0ICsxMzQzLDE0IEBACiAgICAgICAgIChzZXRxIHN1YmplY3QgKHBvcCBtc2cpKQogICAgICAgICAod2hpbGUgKGFuZCBtc2cgKHplcm9wIChsZW5ndGggKGNhciBtc2cpKSkgKHBvcCBtc2cpKSkpKQogICAgIChnaXQtc2V0dXAtbG9nLWJ1ZmZlciAoZ2V0LWJ1ZmZlci1jcmVhdGUgIipnaXQtY29tbWl0KiIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvci1uYW1lIGF1dGhvci1lbWFpbCBzdWJqZWN0IGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50cyBhdXRob3ItbmFtZSBhdXRob3ItZW1haWwgc3ViamVjdCBkYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXBjb25jYXQgIydpZGVudGl0eSBtc2cgIlxuIikpKSkKIAogKGRlZnVuIGdpdC1nZXQtY29tbWl0LWZpbGVzIChjb21taXQpCiAgICJSZXRyaWV2ZSB0aGUgbGlzdCBvZiBmaWxlcyBtb2RpZmllZCBieSBDT01NSVQuIgogICAobGV0IChmaWxlcykKICAgICAod2l0aC10ZW1wLWJ1ZmZlcgotICAgICAgKGdpdC1jYWxsLXByb2Nlc3MtZW52IHQgbmlsICJkaWZmLXRyZWUiICItciIgIi16IiAiLS1uYW1lLW9ubHkiICItLW5vLWNvbW1pdC1pZCIgY29tbWl0KQorICAgICAgKGdpdC1jYWxsLXByb2Nlc3MgdCAiZGlmZi10cmVlIiAiLW0iICItciIgIi16IiAiLS1uYW1lLW9ubHkiICItLW5vLWNvbW1pdC1pZCIgIi0tcm9vdCIgY29tbWl0KQogICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAgICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgIlxcKFteXDBdKlxcKVwwIiBuaWwgdCAxKQogICAgICAgICAocHVzaCAobWF0Y2gtc3RyaW5nIDEpIGZpbGVzKSkpCkBAIC0xMzMzLDEwICsxMzY0LDExIEBACiAgICh3aGVuIChnaXQtZW1wdHktZGItcCkgKGVycm9yICJObyBjb21taXQgdG8gYW1lbmQuIikpCiAgIChsZXQqICgoY29tbWl0IChnaXQtcmV2LXBhcnNlICJIRUFEIikpCiAgICAgICAgICAoZmlsZXMgKGdpdC1nZXQtY29tbWl0LWZpbGVzIGNvbW1pdCkpKQotICAgICh3aGVuIChnaXQtY2FsbC1wcm9jZXNzLWRpc3BsYXktZXJyb3IgInJlc2V0IiAiLS1zb2Z0IiAiSEVBRF4iKQotICAgICAgKGdpdC11cGRhdGUtc3RhdHVzLWZpbGVzIChjb3B5LXNlcXVlbmNlIGZpbGVzKSAndXB0b2RhdGUpCi0gICAgICAoZ2l0LW1hcmstZmlsZXMgZ2l0LXN0YXR1cyBmaWxlcykKLSAgICAgIChnaXQtcmVmcmVzaC1maWxlcykKKyAgICAod2hlbiAoaWYgKGdpdC1yZXYtcGFyc2UgIkhFQUReIikKKyAgICAgICAgICAgICAgKGdpdC1jYWxsLXByb2Nlc3MtZGlzcGxheS1lcnJvciAicmVzZXQiICItLXNvZnQiICJIRUFEXiIpCisgICAgICAgICAgICAoYW5kIChnaXQtdXBkYXRlLXJlZiAiT1JJR19IRUFEIiBjb21taXQpCisgICAgICAgICAgICAgICAgIChnaXQtdXBkYXRlLXJlZiAiSEVBRCIgbmlsIGNvbW1pdCkpKQorICAgICAgKGdpdC11cGRhdGUtc3RhdHVzLWZpbGVzIGZpbGVzIHQpCiAgICAgICAoZ2l0LXNldHVwLWNvbW1pdC1idWZmZXIgY29tbWl0KQogICAgICAgKGdpdC1jb21taXQtZmlsZSkpKSkKIApAQCAtMTM3NywyNyArMTQwOSwxMCBAQAogKGRlZnVuIGdpdC1yZWZyZXNoLXN0YXR1cyAoKQogICAiUmVmcmVzaCB0aGUgZ2l0IHN0YXR1cyBidWZmZXIuIgogICAoaW50ZXJhY3RpdmUpCi0gIChsZXQqICgoc3RhdHVzIGdpdC1zdGF0dXMpCi0gICAgICAgICAocG9zIChld29jLWxvY2F0ZSBzdGF0dXMpKQotICAgICAgICAgKG1hcmtlZC1maWxlcyAoZ2l0LWdldC1maWxlbmFtZXMgKGV3b2MtY29sbGVjdCBzdGF0dXMgKGxhbWJkYSAoaW5mbykgKGdpdC1maWxlaW5mby0+bWFya2VkIGluZm8pKSkpKQotICAgICAgICAgKGN1ci1uYW1lIChhbmQgcG9zIChnaXQtZmlsZWluZm8tPm5hbWUgKGV3b2MtZGF0YSBwb3MpKSkpKQotICAgICh1bmxlc3Mgc3RhdHVzIChlcnJvciAiTm90IGluIGdpdC1zdGF0dXMgYnVmZmVyLiIpKQotICAgIChtZXNzYWdlICJSZWZyZXNoaW5nIGdpdCBzdGF0dXMuLi4iKQotICAgIChnaXQtY2FsbC1wcm9jZXNzLWVudiBuaWwgbmlsICJ1cGRhdGUtaW5kZXgiICItLXJlZnJlc2giKQotICAgIChnaXQtY2xlYXItc3RhdHVzIHN0YXR1cykKLSAgICAoZ2l0LXVwZGF0ZS1zdGF0dXMtZmlsZXMgbmlsKQotICAgIDsgcmVzdG9yZSBmaWxlIG1hcmtzCi0gICAgKHdoZW4gbWFya2VkLWZpbGVzCi0gICAgICAoZ2l0LXN0YXR1cy1maWxlbmFtZXMtbWFwIHN0YXR1cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChpbmZvKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRmIChnaXQtZmlsZWluZm8tPm1hcmtlZCBpbmZvKSB0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRmIChnaXQtZmlsZWluZm8tPm5lZWRzLXJlZnJlc2ggaW5mbykgdCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlZC1maWxlcykKLSAgICAgIChnaXQtcmVmcmVzaC1maWxlcykpCi0gICAgOyBtb3ZlIHBvaW50IHRvIHRoZSBjdXJyZW50IGZpbGUgbmFtZSBpZiBhbnkKLSAgICAobWVzc2FnZSAiUmVmcmVzaGluZyBnaXQgc3RhdHVzLi4uZG9uZSIpCi0gICAgKGxldCAoKG5vZGUgKGFuZCBjdXItbmFtZSAoZ2l0LWZpbmQtc3RhdHVzLWZpbGUgc3RhdHVzIGN1ci1uYW1lKSkpKQotICAgICAgKHdoZW4gbm9kZSAoZXdvYy1nb3RvLW5vZGUgc3RhdHVzIG5vZGUpKSkpKQorICAodW5sZXNzIGdpdC1zdGF0dXMgKGVycm9yICJOb3QgaW4gZ2l0LXN0YXR1cyBidWZmZXIuIikpCisgIChtZXNzYWdlICJSZWZyZXNoaW5nIGdpdCBzdGF0dXMuLi4iKQorICAoZ2l0LXVwZGF0ZS1zdGF0dXMtZmlsZXMpCisgIChtZXNzYWdlICJSZWZyZXNoaW5nIGdpdCBzdGF0dXMuLi5kb25lIikpCiAKIChkZWZ1biBnaXQtc3RhdHVzLXF1aXQgKCkKICAgIlF1aXQgZ2l0LXN0YXR1cyBtb2RlLiIKQEAgLTE0MzQsNiArMTQ0OSw3IEBACiAgICAgKGRlZmluZS1rZXkgbWFwICJcciIgICdnaXQtZmluZC1maWxlKQogICAgIChkZWZpbmUta2V5IG1hcCAiZyIgICAnZ2l0LXJlZnJlc2gtc3RhdHVzKQogICAgIChkZWZpbmUta2V5IG1hcCAiaSIgICAnZ2l0LWlnbm9yZS1maWxlKQorICAgIChkZWZpbmUta2V5IG1hcCAiSSIgICAnZ2l0LWluc2VydC1maWxlKQogICAgIChkZWZpbmUta2V5IG1hcCAibCIgICAnZ2l0LWxvZy1maWxlKQogICAgIChkZWZpbmUta2V5IG1hcCAibSIgICAnZ2l0LW1hcmstZmlsZSkKICAgICAoZGVmaW5lLWtleSBtYXAgIk0iICAgJ2dpdC1tYXJrLWFsbCkKQEAgLTE0OTAsNiArMTUwNiw3IEBACiAgICAgICBbIlJldmVydCBGaWxlIiBnaXQtcmV2ZXJ0LWZpbGUgdF0KICAgICAgIFsiSWdub3JlIEZpbGUiIGdpdC1pZ25vcmUtZmlsZSB0XQogICAgICAgWyJSZW1vdmUgRmlsZSIgZ2l0LXJlbW92ZS1maWxlIHRdCisgICAgICBbIkluc2VydCBGaWxlIiBnaXQtaW5zZXJ0LWZpbGUgdF0KICAgICAgICItLS0tLS0tLSIKICAgICAgIFsiRmluZCBGaWxlIiBnaXQtZmluZC1maWxlIHRdCiAgICAgICBbIlZpZXcgRmlsZSIgZ2l0LXZpZXctZmlsZSB0XQpAQCAtMTU3Niw4ICsxNTkzLDggQEAKICAgICAgICAgKGxldCAoKGZpbGVuYW1lIChmaWxlLXJlbGF0aXZlLW5hbWUgZmlsZSBkaXIpKSkKICAgICAgICAgICA7IHNraXAgZmlsZXMgbG9jYXRlZCBpbnNpZGUgdGhlIC5naXQgZGlyZWN0b3J5CiAgICAgICAgICAgKHVubGVzcyAoc3RyaW5nLW1hdGNoICJeXFwuZ2l0LyIgZmlsZW5hbWUpCi0gICAgICAgICAgICAoZ2l0LWNhbGwtcHJvY2Vzcy1lbnYgbmlsIG5pbCAiYWRkIiAiLS1yZWZyZXNoIiAiLS0iIGZpbGVuYW1lKQotICAgICAgICAgICAgKGdpdC11cGRhdGUtc3RhdHVzLWZpbGVzIChsaXN0IGZpbGVuYW1lKSAndXB0b2RhdGUpKSkpKSkpCisgICAgICAgICAgICAoZ2l0LWNhbGwtcHJvY2VzcyBuaWwgImFkZCIgIi0tcmVmcmVzaCIgIi0tIiBmaWxlbmFtZSkKKyAgICAgICAgICAgIChnaXQtdXBkYXRlLXN0YXR1cy1maWxlcyAobGlzdCBmaWxlbmFtZSkpKSkpKSkpCiAKIChkZWZ1biBnaXQtaGVscCAoKQogICAiRGlzcGxheSBoZWxwIGZvciBHaXQgbW9kZS4iCmRpZmYgLS1naXQgYS9jb250cmliL2Zhc3QtaW1wb3J0L2dpdC1wNCBiL2NvbnRyaWIvZmFzdC1pbXBvcnQvZ2l0LXA0CmluZGV4IDJiMTIyZDMuLmE4NWE3YjIgMTAwNzU1Ci0tLSBhL2NvbnRyaWIvZmFzdC1pbXBvcnQvZ2l0LXA0CisrKyBiL2NvbnRyaWIvZmFzdC1pbXBvcnQvZ2l0LXA0CkBAIC0yNDUsNyArMjQ1LDIyIEBACiBkZWYgcDRXaGVyZShkZXBvdFBhdGgpOgogICAgIGlmIG5vdCBkZXBvdFBhdGguZW5kc3dpdGgoIi8iKToKICAgICAgICAgZGVwb3RQYXRoICs9ICIvIgotICAgIG91dHB1dCA9IHA0Q21kKCJ3aGVyZSAlcy4uLiIgJSBkZXBvdFBhdGgpCisgICAgZGVwb3RQYXRoID0gZGVwb3RQYXRoICsgIi4uLiIKKyAgICBvdXRwdXRMaXN0ID0gcDRDbWRMaXN0KCJ3aGVyZSAlcyIgJSBkZXBvdFBhdGgpCisgICAgb3V0cHV0ID0gTm9uZQorICAgIGZvciBlbnRyeSBpbiBvdXRwdXRMaXN0OgorICAgICAgICBpZiAiZGVwb3RGaWxlIiBpbiBlbnRyeToKKyAgICAgICAgICAgIGlmIGVudHJ5WyJkZXBvdEZpbGUiXSA9PSBkZXBvdFBhdGg6CisgICAgICAgICAgICAgICAgb3V0cHV0ID0gZW50cnkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbGlmICJkYXRhIiBpbiBlbnRyeToKKyAgICAgICAgICAgIGRhdGEgPSBlbnRyeS5nZXQoImRhdGEiKQorICAgICAgICAgICAgc3BhY2UgPSBkYXRhLmZpbmQoIiAiKQorICAgICAgICAgICAgaWYgZGF0YVs6c3BhY2VdID09IGRlcG90UGF0aDoKKyAgICAgICAgICAgICAgICBvdXRwdXQgPSBlbnRyeQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgaWYgb3V0cHV0ID09IE5vbmU6CisgICAgICAgIHJldHVybiAiIgogICAgIGlmIG91dHB1dFsiY29kZSJdID09ICJlcnJvciI6CiAgICAgICAgIHJldHVybiAiIgogICAgIGNsaWVudFBhdGggPSAiIgpAQCAtMzE2LDggKzMzMSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpOwogICAgIHJldHVybiBwcm9jLndhaXQoKSA9PSAwOwogCitfZ2l0Q29uZmlnID0ge30KIGRlZiBnaXRDb25maWcoa2V5KToKLSAgICByZXR1cm4gcmVhZF9waXBlKCJnaXQgY29uZmlnICVzIiAlIGtleSwgaWdub3JlX2Vycm9yPVRydWUpLnN0cmlwKCkKKyAgICBpZiBub3QgX2dpdENvbmZpZy5oYXNfa2V5KGtleSk6CisgICAgICAgIF9naXRDb25maWdba2V5XSA9IHJlYWRfcGlwZSgiZ2l0IGNvbmZpZyAlcyIgJSBrZXksIGlnbm9yZV9lcnJvcj1UcnVlKS5zdHJpcCgpCisgICAgcmV0dXJuIF9naXRDb25maWdba2V5XQogCiBkZWYgcDRCcmFuY2hlc0luR2l0KGJyYW5jaGVzQXJlSW5SZW1vdGVzID0gVHJ1ZSk6CiAgICAgYnJhbmNoZXMgPSB7fQpAQCAtNzA4LDYgKzcyNiw3IEBACiAgICAgICAgICAgICAgICAgbmV3ZGlmZiA9IG5ld2RpZmYucmVwbGFjZSgiXG4iLCAiXHJcbiIpCiAgICAgICAgICAgICB0bXBGaWxlLndyaXRlKHN1Ym1pdFRlbXBsYXRlICsgc2VwYXJhdG9yTGluZSArIGRpZmYgKyBuZXdkaWZmKQogICAgICAgICAgICAgdG1wRmlsZS5jbG9zZSgpCisgICAgICAgICAgICBtdGltZSA9IG9zLnN0YXQoZmlsZU5hbWUpLnN0X210aW1lCiAgICAgICAgICAgICBkZWZhdWx0RWRpdG9yID0gInZpIgogICAgICAgICAgICAgaWYgcGxhdGZvcm0uc3lzdGVtKCkgPT0gIldpbmRvd3MiOgogICAgICAgICAgICAgICAgIGRlZmF1bHRFZGl0b3IgPSAibm90ZXBhZCIKQEAgLTcxNiwxNSArNzM1LDI5IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGVkaXRvciA9IG9zLmVudmlyb24uZ2V0KCJFRElUT1IiLCBkZWZhdWx0RWRpdG9yKTsKICAgICAgICAgICAgIHN5c3RlbShlZGl0b3IgKyAiICIgKyBmaWxlTmFtZSkKLSAgICAgICAgICAgIHRtcEZpbGUgPSBvcGVuKGZpbGVOYW1lLCAicmIiKQotICAgICAgICAgICAgbWVzc2FnZSA9IHRtcEZpbGUucmVhZCgpCi0gICAgICAgICAgICB0bXBGaWxlLmNsb3NlKCkKLSAgICAgICAgICAgIG9zLnJlbW92ZShmaWxlTmFtZSkKLSAgICAgICAgICAgIHN1Ym1pdFRlbXBsYXRlID0gbWVzc2FnZVs6bWVzc2FnZS5pbmRleChzZXBhcmF0b3JMaW5lKV0KLSAgICAgICAgICAgIGlmIHNlbGYuaXNXaW5kb3dzOgotICAgICAgICAgICAgICAgIHN1Ym1pdFRlbXBsYXRlID0gc3VibWl0VGVtcGxhdGUucmVwbGFjZSgiXHJcbiIsICJcbiIpCiAKLSAgICAgICAgICAgIHA0X3dyaXRlX3BpcGUoInN1Ym1pdCAtaSIsIHN1Ym1pdFRlbXBsYXRlKQorICAgICAgICAgICAgcmVzcG9uc2UgPSAieSIKKyAgICAgICAgICAgIGlmIG9zLnN0YXQoZmlsZU5hbWUpLnN0X210aW1lIDw9IG10aW1lOgorICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gIngiCisgICAgICAgICAgICAgICAgd2hpbGUgcmVzcG9uc2UgIT0gInkiIGFuZCByZXNwb25zZSAhPSAibiI6CisgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gcmF3X2lucHV0KCJTdWJtaXQgdGVtcGxhdGUgdW5jaGFuZ2VkLiBTdWJtaXQgYW55d2F5PyBbeV1lcywgW25dbyAoc2tpcCB0aGlzIHBhdGNoKSAiKQorCisgICAgICAgICAgICBpZiByZXNwb25zZSA9PSAieSI6CisgICAgICAgICAgICAgICAgdG1wRmlsZSA9IG9wZW4oZmlsZU5hbWUsICJyYiIpCisgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHRtcEZpbGUucmVhZCgpCisgICAgICAgICAgICAgICAgdG1wRmlsZS5jbG9zZSgpCisgICAgICAgICAgICAgICAgc3VibWl0VGVtcGxhdGUgPSBtZXNzYWdlWzptZXNzYWdlLmluZGV4KHNlcGFyYXRvckxpbmUpXQorICAgICAgICAgICAgICAgIGlmIHNlbGYuaXNXaW5kb3dzOgorICAgICAgICAgICAgICAgICAgICBzdWJtaXRUZW1wbGF0ZSA9IHN1Ym1pdFRlbXBsYXRlLnJlcGxhY2UoIlxyXG4iLCAiXG4iKQorICAgICAgICAgICAgICAgIHA0X3dyaXRlX3BpcGUoInN1Ym1pdCAtaSIsIHN1Ym1pdFRlbXBsYXRlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmb3IgZiBpbiBlZGl0ZWRGaWxlczoKKyAgICAgICAgICAgICAgICAgICAgcDRfc3lzdGVtKCJyZXZlcnQgXCIlc1wiIiAlIGYpOworICAgICAgICAgICAgICAgIGZvciBmIGluIGZpbGVzVG9BZGQ6CisgICAgICAgICAgICAgICAgICAgIHA0X3N5c3RlbSgicmV2ZXJ0IFwiJXNcIiIgJSBmKTsKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtKCJybSAlcyIgJWYpCisKKyAgICAgICAgICAgIG9zLnJlbW92ZShmaWxlTmFtZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGZpbGVOYW1lID0gInN1Ym1pdC50eHQiCiAgICAgICAgICAgICBmaWxlID0gb3BlbihmaWxlTmFtZSwgIncrIikKQEAgLTkzMSw3ICs5NjQsNyBAQAogCiAgICAgICAgICAgICBpZiBpbmNsdWRlRmlsZToKICAgICAgICAgICAgICAgICBmaWxlc0ZvckNvbW1pdC5hcHBlbmQoZikKLSAgICAgICAgICAgICAgICBpZiBmWydhY3Rpb24nXSAhPSAnZGVsZXRlJzoKKyAgICAgICAgICAgICAgICBpZiBmWydhY3Rpb24nXSBub3QgaW4gKCdkZWxldGUnLCAncHVyZ2UnKToKICAgICAgICAgICAgICAgICAgICAgZmlsZXNUb1JlYWQuYXBwZW5kKGYpCiAKICAgICAgICAgZmlsZWRhdGEgPSBbXQpAQCAtOTUwLDExICs5ODMsMTEgQEAKICAgICAgICAgd2hpbGUgaiA8IGxlbihmaWxlZGF0YSk6CiAgICAgICAgICAgICBzdGF0ID0gZmlsZWRhdGFbal0KICAgICAgICAgICAgIGogKz0gMQotICAgICAgICAgICAgdGV4dCA9IFtdOworICAgICAgICAgICAgdGV4dCA9ICcnCiAgICAgICAgICAgICB3aGlsZSBqIDwgbGVuKGZpbGVkYXRhKSBhbmQgZmlsZWRhdGFbal1bJ2NvZGUnXSBpbiAoJ3RleHQnLCAndW5pY29kZScsICdiaW5hcnknKToKLSAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZChmaWxlZGF0YVtqXVsnZGF0YSddKQorICAgICAgICAgICAgICAgIHRleHQgKz0gZmlsZWRhdGFbal1bJ2RhdGEnXQorICAgICAgICAgICAgICAgIGRlbCBmaWxlZGF0YVtqXVsnZGF0YSddCiAgICAgICAgICAgICAgICAgaiArPSAxCi0gICAgICAgICAgICB0ZXh0ID0gJycuam9pbih0ZXh0KQogCiAgICAgICAgICAgICBpZiBub3Qgc3RhdC5oYXNfa2V5KCdkZXBvdEZpbGUnKToKICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJwNCBwcmludCBmYWlscyB3aXRoOiAlc1xuIiAlIHJlcHIoc3RhdCkpCkBAIC0xMDIzLDcgKzEwNTYsNyBAQAogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgIHJlbFBhdGggPSBzZWxmLnN0cmlwUmVwb1BhdGgoZmlsZVsncGF0aCddLCBicmFuY2hQcmVmaXhlcykKLSAgICAgICAgICAgIGlmIGZpbGVbImFjdGlvbiJdID09ICJkZWxldGUiOgorICAgICAgICAgICAgaWYgZmlsZVsiYWN0aW9uIl0gaW4gKCJkZWxldGUiLCAicHVyZ2UiKToKICAgICAgICAgICAgICAgICBzZWxmLmdpdFN0cmVhbS53cml0ZSgiRCAlc1xuIiAlIHJlbFBhdGgpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGRhdGEgPSBmaWxlWydkYXRhJ10KQEAgLTEwNjIsNyArMTA5NSw3IEBACiAKICAgICAgICAgICAgICAgICBjbGVhbmVkRmlsZXMgPSB7fQogICAgICAgICAgICAgICAgIGZvciBpbmZvIGluIGZpbGVzOgotICAgICAgICAgICAgICAgICAgICBpZiBpbmZvWyJhY3Rpb24iXSA9PSAiZGVsZXRlIjoKKyAgICAgICAgICAgICAgICAgICAgaWYgaW5mb1siYWN0aW9uIl0gaW4gKCJkZWxldGUiLCAicHVyZ2UiKToKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgIGNsZWFuZWRGaWxlc1tpbmZvWyJkZXBvdEZpbGUiXV0gPSBpbmZvWyJyZXYiXQogCkBAIC0xMzg1LDcgKzE0MTgsNyBAQAogICAgICAgICAgICAgaWYgY2hhbmdlID4gbmV3ZXN0UmV2aXNpb246CiAgICAgICAgICAgICAgICAgbmV3ZXN0UmV2aXNpb24gPSBjaGFuZ2UKIAotICAgICAgICAgICAgaWYgaW5mb1siYWN0aW9uIl0gPT0gImRlbGV0ZSI6CisgICAgICAgICAgICBpZiBpbmZvWyJhY3Rpb24iXSBpbiAoImRlbGV0ZSIsICJwdXJnZSIpOgogICAgICAgICAgICAgICAgICMgZG9uJ3QgaW5jcmVhc2UgdGhlIGZpbGUgY250LCBvdGhlcndpc2UgZGV0YWlsc1siZGVwb3RGaWxlMTIzIl0gd2lsbCBoYXZlIGdhcHMhCiAgICAgICAgICAgICAgICAgI2ZpbGVDbnQgPSBmaWxlQ250ICsgMQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC0xNzMzLDggKzE3NjYsMTIgQEAKICAgICAgICAgaWYgbm90IFA0U3luYy5ydW4oc2VsZiwgZGVwb3RQYXRocyk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgaWYgc2VsZi5icmFuY2ggIT0gIm1hc3RlciI6Ci0gICAgICAgICAgICBpZiBnaXRCcmFuY2hFeGlzdHMoInJlZnMvcmVtb3Rlcy9wNC9tYXN0ZXIiKToKLSAgICAgICAgICAgICAgICBzeXN0ZW0oImdpdCBicmFuY2ggbWFzdGVyIHJlZnMvcmVtb3Rlcy9wNC9tYXN0ZXIiKQorICAgICAgICAgICAgaWYgc2VsZi5pbXBvcnRJbnRvUmVtb3RlczoKKyAgICAgICAgICAgICAgICBtYXN0ZXJicmFuY2ggPSAicmVmcy9yZW1vdGVzL3A0L21hc3RlciIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbWFzdGVyYnJhbmNoID0gInJlZnMvaGVhZHMvcDQvbWFzdGVyIgorICAgICAgICAgICAgaWYgZ2l0QnJhbmNoRXhpc3RzKG1hc3RlcmJyYW5jaCk6CisgICAgICAgICAgICAgICAgc3lzdGVtKCJnaXQgYnJhbmNoIG1hc3RlciAlcyIgJSBtYXN0ZXJicmFuY2gpCiAgICAgICAgICAgICAgICAgc3lzdGVtKCJnaXQgY2hlY2tvdXQgLWYiKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBwcmludCAiQ291bGQgbm90IGRldGVjdCBtYWluIGJyYW5jaC4gTm8gY2hlY2tvdXQvbWFzdGVyIGJyYW5jaCBjcmVhdGVkLiIKZGlmZiAtLWdpdCBhL2NvbnRyaWIvaG9va3MvcG9zdC1yZWNlaXZlLWVtYWlsIGIvY29udHJpYi9ob29rcy9wb3N0LXJlY2VpdmUtZW1haWwKaW5kZXggNDEzNjg5NS4uMjhhM2MwZSAxMDA2NDQKLS0tIGEvY29udHJpYi9ob29rcy9wb3N0LXJlY2VpdmUtZW1haWwKKysrIGIvY29udHJpYi9ob29rcy9wb3N0LXJlY2VpdmUtZW1haWwKQEAgLTM4LDYgKzM4LDEyIEBACiAjIGhvb2tzLmVtYWlscHJlZml4CiAjICAgQWxsIGVtYWlscyBoYXZlIHRoZWlyIHN1YmplY3RzIHByZWZpeGVkIHdpdGggdGhpcyBwcmVmaXgsIG9yICJbU0NNXSIKICMgICBpZiBlbWFpbHByZWZpeCBpcyB1bnNldCwgdG8gYWlkIGZpbHRlcmluZworIyBob29rcy5zaG93cmV2CisjICAgVGhlIHNoZWxsIGNvbW1hbmQgdXNlZCB0byBmb3JtYXQgZWFjaCByZXZpc2lvbiBpbiB0aGUgZW1haWwsIHdpdGgKKyMgICAiJXMiIHJlcGxhY2VkIHdpdGggdGhlIGNvbW1pdCBpZC4gIERlZmF1bHRzIHRvICJnaXQgcmV2LWxpc3QgLTEKKyMgICAtLXByZXR0eSAlcyIsIGRpc3BsYXlpbmcgdGhlIGNvbW1pdCBpZCwgYXV0aG9yLCBkYXRlIGFuZCBsb2cKKyMgICBtZXNzYWdlLiAgVG8gbGlzdCBmdWxsIHBhdGNoZXMgc2VwYXJhdGVkIGJ5IGEgYmxhbmsgbGluZSwgeW91CisjICAgY291bGQgc2V0IHRoaXMgdG8gImdpdCBzaG93IC1DICVzOyBlY2hvIi4KICMKICMgTm90ZXMKICMgLS0tLS0KQEAgLTIyNCwxMyArMjMwLDcgQEAKIAllY2hvICIiCiAKIAllY2hvICRMT0dCRUdJTgotCSMgVGhpcyBzaG93cyBhbGwgbG9nIGVudHJpZXMgdGhhdCBhcmUgbm90IGFscmVhZHkgY292ZXJlZCBieQotCSMgYW5vdGhlciByZWYgLSBpLmUuIGNvbW1pdHMgdGhhdCBhcmUgbm93IGFjY2Vzc2libGUgZnJvbSB0aGlzCi0JIyByZWYgdGhhdCB3ZXJlIHByZXZpb3VzbHkgbm90IGFjY2Vzc2libGUKLQkjIChzZWUgZ2VuZXJhdGVfdXBkYXRlX2JyYW5jaF9lbWFpbCBmb3IgdGhlIGV4cGxhbmF0aW9uIG9mIHRoaXMKLQkjIGNvbW1hbmQpCi0JZ2l0IHJldi1wYXJzZSAtLW5vdCAtLWJyYW5jaGVzIHwgZ3JlcCAtdiAkKGdpdCByZXYtcGFyc2UgJHJlZm5hbWUpIHwKLQlnaXQgcmV2LWxpc3QgLS1wcmV0dHkgLS1zdGRpbiAkbmV3cmV2CisJc2hvd19uZXdfcmV2aXNpb25zCiAJZWNobyAkTE9HRU5ECiB9CiAKQEAgLTM5MCw4ICszOTAsNyBAQAogCiAJCWVjaG8gIiIKIAkJZWNobyAkTE9HQkVHSU4KLQkJZ2l0IHJldi1wYXJzZSAtLW5vdCAtLWJyYW5jaGVzIHwgZ3JlcCAtdiAkKGdpdCByZXYtcGFyc2UgJHJlZm5hbWUpIHwKLQkJZ2l0IHJldi1saXN0IC0tcHJldHR5IC0tc3RkaW4gJG9sZHJldi4uJG5ld3JldgorCQlzaG93X25ld19yZXZpc2lvbnMKIAogCQkjIFhYWDogTmVlZCBhIHdheSBvZiBkZXRlY3Rpbmcgd2hldGhlciBnaXQgcmV2LWxpc3QgYWN0dWFsbHkKIAkJIyBvdXRwdXR0ZWQgYW55dGhpbmcsIHNvIHRoYXQgd2UgY2FuIGlzc3VlIGEgIm5vIG5ldwpAQCAtNTkxLDYgKzU5MCw0NSBAQAogCWVjaG8gJExPR0VORAogfQogCisKKyMgLS0tLS0tLS0tLS0tLS0tIE1pc2NlbGxhbmVvdXMgdXRpbGl0aWVzCisKKyMKKyMgU2hvdyBuZXcgcmV2aXNpb25zIGFzIHRoZSB1c2VyIHdvdWxkIGxpa2UgdG8gc2VlIHRoZW0gaW4gdGhlIGVtYWlsLgorIworc2hvd19uZXdfcmV2aXNpb25zKCkKK3sKKwkjIFRoaXMgc2hvd3MgYWxsIGxvZyBlbnRyaWVzIHRoYXQgYXJlIG5vdCBhbHJlYWR5IGNvdmVyZWQgYnkKKwkjIGFub3RoZXIgcmVmIC0gaS5lLiBjb21taXRzIHRoYXQgYXJlIG5vdyBhY2Nlc3NpYmxlIGZyb20gdGhpcworCSMgcmVmIHRoYXQgd2VyZSBwcmV2aW91c2x5IG5vdCBhY2Nlc3NpYmxlCisJIyAoc2VlIGdlbmVyYXRlX3VwZGF0ZV9icmFuY2hfZW1haWwgZm9yIHRoZSBleHBsYW5hdGlvbiBvZiB0aGlzCisJIyBjb21tYW5kKQorCisJIyBSZXZpc2lvbiByYW5nZSBwYXNzZWQgdG8gcmV2LWxpc3QgZGlmZmVycyBmb3IgbmV3IHZzLiB1cGRhdGVkCisJIyBicmFuY2hlcy4KKwlpZiBbICIkY2hhbmdlX3R5cGUiID0gY3JlYXRlIF0KKwl0aGVuCisJCSMgU2hvdyBhbGwgcmV2aXNpb25zIGV4Y2x1c2l2ZSB0byB0aGlzIChuZXcpIGJyYW5jaC4KKwkJcmV2c3BlYz0kbmV3cmV2CisJZWxzZQorCQkjIEJyYW5jaCB1cGRhdGU7IHNob3cgcmV2aXNpb25zIG5vdCBwYXJ0IG9mICRvbGRyZXYuCisJCXJldnNwZWM9JG9sZHJldi4uJG5ld3JldgorCWZpCisKKwlnaXQgcmV2LXBhcnNlIC0tbm90IC0tYnJhbmNoZXMgfCBncmVwIC12ICQoZ2l0IHJldi1wYXJzZSAkcmVmbmFtZSkgfAorCWlmIFsgLXogIiRjdXN0b21fc2hvd3JldiIgXQorCXRoZW4KKwkJZ2l0IHJldi1saXN0IC0tcHJldHR5IC0tc3RkaW4gJHJldnNwZWMKKwllbHNlCisJCWdpdCByZXYtbGlzdCAtLXN0ZGluICRyZXZzcGVjIHwKKwkJd2hpbGUgcmVhZCBvbmVyZXYKKwkJZG8KKwkJCWV2YWwgJChwcmludGYgIiRjdXN0b21fc2hvd3JldiIgJG9uZXJldikKKwkJZG9uZQorCWZpCit9CisKKwogc2VuZF9tYWlsKCkKIHsKIAlpZiBbIC1uICIkZW52ZWxvcGVzZW5kZXIiIF07IHRoZW4KQEAgLTYyNyw2ICs2NjUsNyBAQAogYW5ub3VuY2VyZWNpcGllbnRzPSQoZ2l0IGNvbmZpZyBob29rcy5hbm5vdW5jZWxpc3QpCiBlbnZlbG9wZXNlbmRlcj0kKGdpdCBjb25maWcgaG9va3MuZW52ZWxvcGVzZW5kZXIpCiBlbWFpbHByZWZpeD0kKGdpdCBjb25maWcgaG9va3MuZW1haWxwcmVmaXggfHwgZWNobyAnW1NDTV0gJykKK2N1c3RvbV9zaG93cmV2PSQoZ2l0IGNvbmZpZyBob29rcy5zaG93cmV2KQogCiAjIC0tLSBNYWluIGxvb3AKICMgQWxsb3cgZHVhbCBtb2RlOiBydW4gZnJvbSB0aGUgY29tbWFuZCBsaW5lIGp1c3QgbGlrZSB0aGUgdXBkYXRlIGhvb2ssIG9yCmRpZmYgLS1naXQgYS9jb250cmliL2hvb2tzL3ByZS1hdXRvLWdjLWJhdHRlcnkgYi9jb250cmliL2hvb2tzL3ByZS1hdXRvLWdjLWJhdHRlcnkKaW5kZXggMDA5NmY1Ny4uMWY5MTRjOSAxMDA2NDQKLS0tIGEvY29udHJpYi9ob29rcy9wcmUtYXV0by1nYy1iYXR0ZXJ5CisrKyBiL2NvbnRyaWIvaG9va3MvcHJlLWF1dG8tZ2MtYmF0dGVyeQpAQCAtMSw5ICsxLDkgQEAKICMhL2Jpbi9zaAogIwogIyBBbiBleGFtcGxlIGhvb2sgc2NyaXB0IHRvIHZlcmlmeSBpZiB5b3UgYXJlIG9uIGJhdHRlcnksIGluIGNhc2UgeW91Ci0jIGFyZSBydW5uaW5nIExpbnV4LiBDYWxsZWQgYnkgZ2l0LWdjIC0tYXV0byB3aXRoIG5vIGFyZ3VtZW50cy4gVGhlIGhvb2sKLSMgc2hvdWxkIGV4aXQgd2l0aCBub24temVybyBzdGF0dXMgYWZ0ZXIgaXNzdWluZyBhbiBhcHByb3ByaWF0ZSBtZXNzYWdlCi0jIGlmIGl0IHdhbnRzIHRvIHN0b3AgdGhlIGF1dG8gcmVwYWNraW5nLgorIyBhcmUgcnVubmluZyBMaW51eCBvciBPUyBYLiBDYWxsZWQgYnkgZ2l0LWdjIC0tYXV0byB3aXRoIG5vIGFyZ3VtZW50cy4KKyMgVGhlIGhvb2sgc2hvdWxkIGV4aXQgd2l0aCBub24temVybyBzdGF0dXMgYWZ0ZXIgaXNzdWluZyBhbiBhcHByb3ByaWF0ZQorIyBtZXNzYWdlIGlmIGl0IHdhbnRzIHRvIHN0b3AgdGhlIGF1dG8gcmVwYWNraW5nLgogIwogIyBUaGlzIGhvb2sgaXMgc3RvcmVkIGluIHRoZSBjb250cmliL2hvb2tzIGRpcmVjdG9yeS4gWW91ciBkaXN0cmlidXRpb24KICMgbWF5IGhhdmUgcHV0IHRoaXMgc29tZXdoZXJlIGVsc2UuIElmIHlvdSB3YW50IHRvIHVzZSB0aGlzIGhvb2ssIHlvdQpAQCAtMzAsNiArMzAsMTMgQEAKIGVsaWYgZ3JlcCAtcSAnMHgwMSQnIC9wcm9jL2FwbSAyPi9kZXYvbnVsbAogdGhlbgogCWV4aXQgMAorZWxpZiBncmVwIC1xICJBQyBQb3dlciBcKzogMSIgL3Byb2MvcG11L2luZm8gMj4vZGV2L251bGwKK3RoZW4KKwlleGl0IDAKK2VsaWYgdGVzdCAteCAvdXNyL2Jpbi9wbXNldCAmJiAvdXNyL2Jpbi9wbXNldCAtZyBiYXR0IHwKKwlncmVwIC1xICJDdXJyZW50bHkgZHJhd2luZyBmcm9tICdBQyBQb3dlciciCit0aGVuCisJZXhpdCAwCiBmaQogCiBlY2hvICJBdXRvIHBhY2tpbmcgZGVmZXJyZWQ7IG5vdCBvbiBBQyIKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcmVyZXJlLXRyYWluLnNoIGIvY29udHJpYi9yZXJlcmUtdHJhaW4uc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMmNmZTFiOQotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvcmVyZXJlLXRyYWluLnNoCkBAIC0wLDAgKzEsNTIgQEAKKyMhL2Jpbi9zaAorIyBDb3B5cmlnaHQgKGMpIDIwMDgsIE5hbmFrbyBTaGlyYWlzaGkKKyMgUHJpbWUgcmVyZXJlIGRhdGFiYXNlIGZyb20gZXhpc3RpbmcgbWVyZ2UgY29tbWl0cworCittZT1yZXJlcmUtdHJhaW4KK1VTQUdFPSIkbWUgcmV2LWxpc3QtYXJncyIKKworU1VCRElSRUNUT1JZX09LPVllcworT1BUSU9OU19TUEVDPQorLiBnaXQtc2gtc2V0dXAKK3JlcXVpcmVfd29ya190cmVlCitjZF90b190b3BsZXZlbAorCisjIFJlbWVtYmVyIG9yaWdpbmFsIGJyYW5jaAorYnJhbmNoPSQoZ2l0IHN5bWJvbGljLXJlZiAtcSBIRUFEKSB8fAorb3JpZ2luYWxfSEVBRD0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCkgfHwgeworCWVjaG8gPiYyICJOb3Qgb24gYW55IGJyYW5jaCBhbmQgbm8gY29tbWl0IHlldD8iCisJZXhpdCAxCit9CisKK21rZGlyIC1wICIkR0lUX0RJUi9yci1jYWNoZSIgfHwgZXhpdAorCitnaXQgcmV2LWxpc3QgLS1wYXJlbnRzICIkQCIgfAord2hpbGUgcmVhZCBjb21taXQgcGFyZW50MSBvdGhlcl9wYXJlbnRzCitkbworCWlmIHRlc3QgLXogIiRvdGhlcl9wYXJlbnRzIgorCXRoZW4KKwkJIyBTa2lwIG5vbi1tZXJnZXMKKwkJY29udGludWUKKwlmaQorCWdpdCBjaGVja291dCAtcSAiJHBhcmVudDFeMCIKKwlpZiBnaXQgbWVyZ2UgJG90aGVyX3BhcmVudHMgPi9kZXYvbnVsbCAyPiYxCisJdGhlbgorCQkjIENsZWFubHkgbWVyZ2VzCisJCWNvbnRpbnVlCisJZmkKKwlpZiB0ZXN0IC1zICIkR0lUX0RJUi9NRVJHRV9SUiIKKwl0aGVuCisJCWdpdCBzaG93IC1zIC0tcHJldHR5PWZvcm1hdDoiTGVhcm5pbmcgZnJvbSAlaCAlcyIgIiRjb21taXQiCisJCWdpdCByZXJlcmUKKwkJZ2l0IGNoZWNrb3V0IC1xICRjb21taXQgLS0gLgorCQlnaXQgcmVyZXJlCisJZmkKKwlnaXQgcmVzZXQgLXEgLS1oYXJkCitkb25lCisKK2lmIHRlc3QgLXogIiRicmFuY2giCit0aGVuCisJZ2l0IGNoZWNrb3V0ICIkb3JpZ2luYWxfSEVBRCIKK2Vsc2UKKwlnaXQgY2hlY2tvdXQgIiR7YnJhbmNoI3JlZnMvaGVhZHMvfSIKK2ZpCmRpZmYgLS1naXQgYS9jb250cmliL3ZpbS9SRUFETUUgYi9jb250cmliL3ZpbS9SRUFETUUKaW5kZXggOWU3ODgxZi4uYzQ4NzM0NiAxMDA2NDQKLS0tIGEvY29udHJpYi92aW0vUkVBRE1FCisrKyBiL2NvbnRyaWIvdmltL1JFQURNRQpAQCAtMSw4ICsxLDMwIEBACi1UbyBzeW50YXggaGlnaGxpZ2h0IGdpdCdzIGNvbW1pdCBtZXNzYWdlcywgeW91IG5lZWQgdG86Ci0gIDEuIENvcHkgc3ludGF4L2dpdGNvbW1pdC52aW0gdG8gdmltJ3Mgc3ludGF4IGRpcmVjdG9yeToKLSAgICAgJCBta2RpciAtcCAkSE9NRS8udmltL3N5bnRheAotICAgICAkIGNwIHN5bnRheC9naXRjb21taXQudmltICRIT01FLy52aW0vc3ludGF4Ci0gIDIuIEF1dG8tZGV0ZWN0IHRoZSBlZGl0aW5nIG9mIGdpdCBjb21taXQgZmlsZXM6Ci0gICAgICQgY2F0ID4+JEhPTUUvLnZpbXJjIDw8J0VPRicKLSAgICAgYXV0b2NtZCBCdWZOZXdGaWxlLEJ1ZlJlYWQgQ09NTUlUX0VESVRNU0cgc2V0IGZpbGV0eXBlPWdpdGNvbW1pdAotICAgICBFT0YKK1N5bnRheCBoaWdobGlnaHRpbmcgZm9yIGdpdCBjb21taXQgbWVzc2FnZXMsIGNvbmZpZyBmaWxlcywgZXRjLiBpcworaW5jbHVkZWQgd2l0aCB0aGUgdmltIGRpc3RyaWJ1dGlvbiBhcyBvZiB2aW0gNy4yLCBhbmQgc2hvdWxkIHdvcmsKK2F1dG9tYXRpY2FsbHkuCisKK0lmIHlvdSBoYXZlIGFuIG9sZGVyIHZlcnNpb24gb2YgdmltLCB5b3UgY2FuIGdldCB0aGUgbGF0ZXN0IHN5bnRheAorZmlsZXMgZnJvbSB0aGUgdmltIHByb2plY3Q6CisKKyAgaHR0cDovL3ZpbS5zdm4uc291cmNlZm9yZ2UubmV0L3ZpZXd2Yy92aW0vdHJ1bmsvcnVudGltZS9zeW50YXgvZ2l0LnZpbQorICBodHRwOi8vdmltLnN2bi5zb3VyY2Vmb3JnZS5uZXQvdmlld3ZjL3ZpbS90cnVuay9ydW50aW1lL3N5bnRheC9naXRjb21taXQudmltCisgIGh0dHA6Ly92aW0uc3ZuLnNvdXJjZWZvcmdlLm5ldC92aWV3dmMvdmltL3RydW5rL3J1bnRpbWUvc3ludGF4L2dpdGNvbmZpZy52aW0KKyAgaHR0cDovL3ZpbS5zdm4uc291cmNlZm9yZ2UubmV0L3ZpZXd2Yy92aW0vdHJ1bmsvcnVudGltZS9zeW50YXgvZ2l0cmViYXNlLnZpbQorICBodHRwOi8vdmltLnN2bi5zb3VyY2Vmb3JnZS5uZXQvdmlld3ZjL3ZpbS90cnVuay9ydW50aW1lL3N5bnRheC9naXRzZW5kZW1haWwudmltCisKK1RvIGluc3RhbGw6CisKKyAgMS4gQ29weSB0aGVzZSBmaWxlcyB0byB2aW0ncyBzeW50YXggZGlyZWN0b3J5ICRIT01FLy52aW0vc3ludGF4CisgIDIuIFRvIGF1dG8tZGV0ZWN0IHRoZSBlZGl0aW5nIG9mIHZhcmlvdXMgZ2l0LXJlbGF0ZWQgZmlsZXR5cGVzOgorCSQgY2F0ID4+JEhPTUUvLnZpbS9maWxldHlwZS52aW0gPDwnRU9GJworCWF1dG9jbWQgQnVmTmV3RmlsZSxCdWZSZWFkICouZ2l0L0NPTU1JVF9FRElUTVNHICAgIHNldGYgZ2l0Y29tbWl0CisJYXV0b2NtZCBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5naXQvY29uZmlnLC5naXRjb25maWcgc2V0ZiBnaXRjb25maWcKKwlhdXRvY21kIEJ1Zk5ld0ZpbGUsQnVmUmVhZCBnaXQtcmViYXNlLXRvZG8gICAgICAgICBzZXRmIGdpdHJlYmFzZQorCWF1dG9jbWQgQnVmTmV3RmlsZSxCdWZSZWFkIC5tc2cuWzAtOV0qCisJCVwgaWYgZ2V0bGluZSgxKSA9fiAnXkZyb20uKiMgVGhpcyBsaW5lIGlzIGlnbm9yZWQuJCcgfAorCQlcICAgc2V0ZiBnaXRzZW5kZW1haWwgfAorCQlcIGVuZGlmCisJYXV0b2NtZCBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5naXQvKioKKwkJXCBpZiBnZXRsaW5lKDEpID1+ICdeXHhcezQwXH1cPlx8XnJlZjogJyB8CisJCVwgICBzZXRmIGdpdCB8CisJCVwgZW5kaWYKKwlFT0YKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdmltL3N5bnRheC9naXRjb21taXQudmltIGIvY29udHJpYi92aW0vc3ludGF4L2dpdGNvbW1pdC52aW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzMjEyMWIuLjAwMDAwMDAKLS0tIGEvY29udHJpYi92aW0vc3ludGF4L2dpdGNvbW1pdC52aW0KKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1zeW4gcmVnaW9uIGdpdExpbmUgc3RhcnQ9L14jLyBlbmQ9LyQvCi1zeW4gcmVnaW9uIGdpdENvbW1pdCBzdGFydD0vXiMgQ2hhbmdlcyB0byBiZSBjb21taXR0ZWQ6JC8gZW5kPS9eIyQvIGNvbnRhaW5zPWdpdEhlYWQsZ2l0Q29tbWl0RmlsZQotc3luIHJlZ2lvbiBnaXRIZWFkIGNvbnRhaW5lZCBzdGFydD0vXiMgICAoLiopLyBlbmQ9L14jJC8KLXN5biByZWdpb24gZ2l0Q2hhbmdlZCBzdGFydD0vXiMgQ2hhbmdlZCBidXQgbm90IHVwZGF0ZWQ6LyBlbmQ9L14jJC8gY29udGFpbnM9Z2l0SGVhZCxnaXRDaGFuZ2VkRmlsZQotc3luIHJlZ2lvbiBnaXRVbnRyYWNrZWQgc3RhcnQ9L14jIFVudHJhY2tlZCBmaWxlczovIGVuZD0vXiMkLyBjb250YWlucz1naXRIZWFkLGdpdFVudHJhY2tlZEZpbGUKLQotc3luIG1hdGNoIGdpdENvbW1pdEZpbGUgY29udGFpbmVkIC9eI1x0LiovaHM9cysyCi1zeW4gbWF0Y2ggZ2l0Q2hhbmdlZEZpbGUgY29udGFpbmVkIC9eI1x0LiovaHM9cysyCi1zeW4gbWF0Y2ggZ2l0VW50cmFja2VkRmlsZSBjb250YWluZWQgL14jXHQuKi9ocz1zKzIKLQotaGkgZGVmIGxpbmsgZ2l0TGluZSBDb21tZW50Ci1oaSBkZWYgbGluayBnaXRDb21taXQgQ29tbWVudAotaGkgZGVmIGxpbmsgZ2l0Q2hhbmdlZCBDb21tZW50Ci1oaSBkZWYgbGluayBnaXRIZWFkIENvbW1lbnQKLWhpIGRlZiBsaW5rIGdpdFVudHJhY2tlZCBDb21tZW50Ci1oaSBkZWYgbGluayBnaXRDb21taXRGaWxlIFR5cGUKLWhpIGRlZiBsaW5rIGdpdENoYW5nZWRGaWxlIENvbnN0YW50Ci1oaSBkZWYgbGluayBnaXRVbnRyYWNrZWRGaWxlIENvbnN0YW50CmRpZmYgLS1naXQgYS9jb250cmliL3dvcmtkaXIvZ2l0LW5ldy13b3JrZGlyIGIvY29udHJpYi93b3JrZGlyL2dpdC1uZXctd29ya2RpcgppbmRleCA3OTU5ZWFiLi45OTNjYWNmIDEwMDc1NQotLS0gYS9jb250cmliL3dvcmtkaXIvZ2l0LW5ldy13b3JrZGlyCisrKyBiL2NvbnRyaWIvd29ya2Rpci9naXQtbmV3LXdvcmtkaXIKQEAgLTIyLDcgKzIyLDcgQEAKICMgd2FudCB0byBtYWtlIHN1cmUgdGhhdCB3aGF0IGlzIHBvaW50ZWQgdG8gaGFzIGEgLmdpdCBkaXJlY3RvcnkgLi4uCiBnaXRfZGlyPSQoY2QgIiRvcmlnX2dpdCIgMj4vZGV2L251bGwgJiYKICAgZ2l0IHJldi1wYXJzZSAtLWdpdC1kaXIgMj4vZGV2L251bGwpIHx8Ci0gIGRpZSAiXCIkb3JpZ19naXRcIiBpcyBub3QgYSBnaXQgcmVwb3NpdG9yeSEiCisgIGRpZSAiTm90IGEgZ2l0IHJlcG9zaXRvcnk6IFwiJG9yaWdfZ2l0XCIiCiAKIGNhc2UgIiRnaXRfZGlyIiBpbgogLmdpdCkKZGlmZiAtLWdpdCBhL2NvbnZlcnQuYyBiL2NvbnZlcnQuYwppbmRleCA3OGVmZWQ4Li4xODE2ZTk3IDEwMDY0NAotLS0gYS9jb252ZXJ0LmMKKysrIGIvY29udmVydC5jCkBAIC0yODEsNyArMjgxLDcgQEAKIAkgKiAoY2hpbGQgLS0+IGNtZCkgLS0+IHVzCiAJICovCiAJaW50IHJldCA9IDE7Ci0Jc3RydWN0IHN0cmJ1ZiBuYnVmOworCXN0cnVjdCBzdHJidWYgbmJ1ZiA9IFNUUkJVRl9JTklUOwogCXN0cnVjdCBhc3luYyBhc3luYzsKIAlzdHJ1Y3QgZmlsdGVyX3BhcmFtcyBwYXJhbXM7CiAKQEAgLTI5OSw3ICsyOTksNiBAQAogCWlmIChzdGFydF9hc3luYygmYXN5bmMpKQogCQlyZXR1cm4gMDsJLyogZXJyb3Igd2FzIGFscmVhZHkgcmVwb3J0ZWQgKi8KIAotCXN0cmJ1Zl9pbml0KCZuYnVmLCAwKTsKIAlpZiAoc3RyYnVmX3JlYWQoJm5idWYsIGFzeW5jLm91dCwgbGVuKSA8IDApIHsKIAkJZXJyb3IoInJlYWQgZnJvbSBleHRlcm5hbCBmaWx0ZXIgJXMgZmFpbGVkIiwgY21kKTsKIAkJcmV0ID0gMDsKZGlmZiAtLWdpdCBhL2NzdW0tZmlsZS5jIGIvY3N1bS1maWxlLmMKaW5kZXggY2ZjMWFjNC4uMmRkYjEyYSAxMDA2NDQKLS0tIGEvY3N1bS1maWxlLmMKKysrIGIvY3N1bS1maWxlLmMKQEAgLTExLDEwICsxMSw4IEBACiAjaW5jbHVkZSAicHJvZ3Jlc3MuaCIKICNpbmNsdWRlICJjc3VtLWZpbGUuaCIKIAotc3RhdGljIHZvaWQgZmx1c2goc3RydWN0IHNoYTFmaWxlICpmLCB1bnNpZ25lZCBpbnQgY291bnQpCitzdGF0aWMgdm9pZCBmbHVzaChzdHJ1Y3Qgc2hhMWZpbGUgKmYsIHZvaWQgKiBidWYsIHVuc2lnbmVkIGludCBjb3VudCkKIHsKLQl2b2lkICpidWYgPSBmLT5idWZmZXI7Ci0KIAlmb3IgKDs7KSB7CiAJCWludCByZXQgPSB4d3JpdGUoZi0+ZmQsIGJ1ZiwgY291bnQpOwogCQlpZiAocmV0ID4gMCkgewpAQCAtMzcsOCArMzUsOCBAQAogCXVuc2lnbmVkIG9mZnNldCA9IGYtPm9mZnNldDsKIAogCWlmIChvZmZzZXQpIHsKLQkJU0hBMV9VcGRhdGUoJmYtPmN0eCwgZi0+YnVmZmVyLCBvZmZzZXQpOwotCQlmbHVzaChmLCBvZmZzZXQpOworCQlnaXRfU0hBMV9VcGRhdGUoJmYtPmN0eCwgZi0+YnVmZmVyLCBvZmZzZXQpOworCQlmbHVzaChmLCBmLT5idWZmZXIsIG9mZnNldCk7CiAJCWYtPm9mZnNldCA9IDA7CiAJfQogfQpAQCAtNDgsMTIgKzQ2LDEyIEBACiAJaW50IGZkOwogCiAJc2hhMWZsdXNoKGYpOwotCVNIQTFfRmluYWwoZi0+YnVmZmVyLCAmZi0+Y3R4KTsKKwlnaXRfU0hBMV9GaW5hbChmLT5idWZmZXIsICZmLT5jdHgpOwogCWlmIChyZXN1bHQpCiAJCWhhc2hjcHkocmVzdWx0LCBmLT5idWZmZXIpOwogCWlmIChmbGFncyAmIChDU1VNX0NMT1NFIHwgQ1NVTV9GU1lOQykpIHsKIAkJLyogd3JpdGUgY2hlY2tzdW0gYW5kIGNsb3NlIGZkICovCi0JCWZsdXNoKGYsIDIwKTsKKwkJZmx1c2goZiwgZi0+YnVmZmVyLCAyMCk7CiAJCWlmIChmbGFncyAmIENTVU1fRlNZTkMpCiAJCQlmc3luY19vcl9kaWUoZi0+ZmQsIGYtPm5hbWUpOwogCQlpZiAoY2xvc2UoZi0+ZmQpKQpAQCAtNjgsMjEgKzY2LDMwIEBACiAKIGludCBzaGExd3JpdGUoc3RydWN0IHNoYTFmaWxlICpmLCB2b2lkICpidWYsIHVuc2lnbmVkIGludCBjb3VudCkKIHsKLQlpZiAoZi0+ZG9fY3JjKQotCQlmLT5jcmMzMiA9IGNyYzMyKGYtPmNyYzMyLCBidWYsIGNvdW50KTsKIAl3aGlsZSAoY291bnQpIHsKIAkJdW5zaWduZWQgb2Zmc2V0ID0gZi0+b2Zmc2V0OwogCQl1bnNpZ25lZCBsZWZ0ID0gc2l6ZW9mKGYtPmJ1ZmZlcikgLSBvZmZzZXQ7CiAJCXVuc2lnbmVkIG5yID0gY291bnQgPiBsZWZ0ID8gbGVmdCA6IGNvdW50OworCQl2b2lkICpkYXRhOwogCi0JCW1lbWNweShmLT5idWZmZXIgKyBvZmZzZXQsIGJ1ZiwgbnIpOworCQlpZiAoZi0+ZG9fY3JjKQorCQkJZi0+Y3JjMzIgPSBjcmMzMihmLT5jcmMzMiwgYnVmLCBucik7CisKKwkJaWYgKG5yID09IHNpemVvZihmLT5idWZmZXIpKSB7CisJCQkvKiBwcm9jZXNzIGZ1bGwgYnVmZmVyIGRpcmVjdGx5IHdpdGhvdXQgY29weSAqLworCQkJZGF0YSA9IGJ1ZjsKKwkJfSBlbHNlIHsKKwkJCW1lbWNweShmLT5idWZmZXIgKyBvZmZzZXQsIGJ1ZiwgbnIpOworCQkJZGF0YSA9IGYtPmJ1ZmZlcjsKKwkJfQorCiAJCWNvdW50IC09IG5yOwogCQlvZmZzZXQgKz0gbnI7CiAJCWJ1ZiA9IChjaGFyICopIGJ1ZiArIG5yOwogCQlsZWZ0IC09IG5yOwogCQlpZiAoIWxlZnQpIHsKLQkJCVNIQTFfVXBkYXRlKCZmLT5jdHgsIGYtPmJ1ZmZlciwgb2Zmc2V0KTsKLQkJCWZsdXNoKGYsIG9mZnNldCk7CisJCQlnaXRfU0hBMV9VcGRhdGUoJmYtPmN0eCwgZGF0YSwgb2Zmc2V0KTsKKwkJCWZsdXNoKGYsIGRhdGEsIG9mZnNldCk7CiAJCQlvZmZzZXQgPSAwOwogCQl9CiAJCWYtPm9mZnNldCA9IG9mZnNldDsKQEAgLTEwNCw3ICsxMTEsNyBAQAogCWYtPnRwID0gdHA7CiAJZi0+bmFtZSA9IG5hbWU7CiAJZi0+ZG9fY3JjID0gMDsKLQlTSEExX0luaXQoJmYtPmN0eCk7CisJZ2l0X1NIQTFfSW5pdCgmZi0+Y3R4KTsKIAlyZXR1cm4gZjsKIH0KIApkaWZmIC0tZ2l0IGEvY3N1bS1maWxlLmggYi9jc3VtLWZpbGUuaAppbmRleCAwMWYxM2I1Li4yOTRhZGQyIDEwMDY0NAotLS0gYS9jc3VtLWZpbGUuaAorKysgYi9jc3VtLWZpbGUuaApAQCAtNyw3ICs3LDcgQEAKIHN0cnVjdCBzaGExZmlsZSB7CiAJaW50IGZkOwogCXVuc2lnbmVkIGludCBvZmZzZXQ7Ci0JU0hBX0NUWCBjdHg7CisJZ2l0X1NIQV9DVFggY3R4OwogCW9mZl90IHRvdGFsOwogCXN0cnVjdCBwcm9ncmVzcyAqdHA7CiAJY29uc3QgY2hhciAqbmFtZTsKZGlmZiAtLWdpdCBhL2N0eXBlLmMgYi9jdHlwZS5jCmluZGV4IGQyYmQzOGUuLjkyMDhkNjcgMTAwNjQ0Ci0tLSBhL2N0eXBlLmMKKysrIGIvY3R5cGUuYwpAQCAtOSwxOCArOSwyMCBAQAogI3VuZGVmIFNTCiAjdW5kZWYgQUEKICN1bmRlZiBERAorI3VuZGVmIEdTCiAKICNkZWZpbmUgU1MgR0lUX1NQQUNFCiAjZGVmaW5lIEFBIEdJVF9BTFBIQQogI2RlZmluZSBERCBHSVRfRElHSVQKKyNkZWZpbmUgR1MgR0lUX1NQRUNJQUwgIC8qIFwwLCAqLCA/LCBbLCBcXCAqLwogCiB1bnNpZ25lZCBjaGFyIHNhbmVfY3R5cGVbMjU2XSA9IHsKLQkgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCBTUywgU1MsICAwLCAgMCwgU1MsICAwLCAgMCwJCS8qIDAtMTUgKi8KKwlHUywgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCBTUywgU1MsICAwLCAgMCwgU1MsICAwLCAgMCwJCS8qIDAtMTUgKi8KIAkgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwJCS8qIDE2LTE1ICovCi0JU1MsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsCQkvKiAzMi0xNSAqLwotCURELCBERCwgREQsIERELCBERCwgREQsIERELCBERCwgREQsIERELCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLAkJLyogNDgtMTUgKi8KKwlTUywgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgR1MsICAwLCAgMCwgIDAsICAwLCAgMCwJCS8qIDMyLTE1ICovCisJREQsIERELCBERCwgREQsIERELCBERCwgREQsIERELCBERCwgREQsICAwLCAgMCwgIDAsICAwLCAgMCwgR1MsCQkvKiA0OC0xNSAqLwogCSAwLCBBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLAkJLyogNjQtMTUgKi8KLQlBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLCBBQSwgQUEsICAwLCAgMCwgIDAsICAwLCAgMCwJCS8qIDgwLTE1ICovCisJQUEsIEFBLCBBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLCBHUywgR1MsICAwLCAgMCwgIDAsCQkvKiA4MC0xNSAqLwogCSAwLCBBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLAkJLyogOTYtMTUgKi8KIAlBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLCBBQSwgQUEsICAwLCAgMCwgIDAsICAwLCAgMCwJCS8qIDExMi0xNSAqLwogCS8qIE5vdGhpbmcgaW4gdGhlIDEyOC4uIHJhbmdlICovCmRpZmYgLS1naXQgYS9kYWVtb24uYyBiL2RhZW1vbi5jCmluZGV4IDhkY2RlNzMuLjYwYmY2YzcgMTAwNjQ0Ci0tLSBhL2RhZW1vbi5jCisrKyBiL2RhZW1vbi5jCkBAIC0xLDcgKzEsNiBAQAogI2luY2x1ZGUgImNhY2hlLmgiCiAjaW5jbHVkZSAicGt0LWxpbmUuaCIKICNpbmNsdWRlICJleGVjX2NtZC5oIgotI2luY2x1ZGUgImludGVycG9sYXRlLmgiCiAKICNpbmNsdWRlIDxzeXNsb2cuaD4KIApAQCAtMTYsMTIgKzE1LDExIEBACiBzdGF0aWMgaW50IGxvZ19zeXNsb2c7CiBzdGF0aWMgaW50IHZlcmJvc2U7CiBzdGF0aWMgaW50IHJldXNlYWRkcjsKLXN0YXRpYyBpbnQgY2hpbGRfaGFuZGxlcl9waXBlWzJdOwogCiBzdGF0aWMgY29uc3QgY2hhciBkYWVtb25fdXNhZ2VbXSA9CiAiZ2l0IGRhZW1vbiBbLS12ZXJib3NlXSBbLS1zeXNsb2ddIFstLWV4cG9ydC1hbGxdXG4iCi0iICAgICAgICAgICBbLS10aW1lb3V0PW5dIFstLWluaXQtdGltZW91dD1uXSBbLS1zdHJpY3QtcGF0aHNdXG4iCi0iICAgICAgICAgICBbLS1iYXNlLXBhdGg9cGF0aF0gWy0tYmFzZS1wYXRoLXJlbGF4ZWRdXG4iCisiICAgICAgICAgICBbLS10aW1lb3V0PW5dIFstLWluaXQtdGltZW91dD1uXSBbLS1tYXgtY29ubmVjdGlvbnM9bl1cbiIKKyIgICAgICAgICAgIFstLXN0cmljdC1wYXRoc10gWy0tYmFzZS1wYXRoPXBhdGhdIFstLWJhc2UtcGF0aC1yZWxheGVkXVxuIgogIiAgICAgICAgICAgWy0tdXNlci1wYXRoIHwgLS11c2VyLXBhdGg9cGF0aF1cbiIKICIgICAgICAgICAgIFstLWludGVycG9sYXRlZC1wYXRoPXBhdGhdXG4iCiAiICAgICAgICAgICBbLS1yZXVzZWFkZHJdIFstLWRldGFjaF0gWy0tcGlkLWZpbGU9ZmlsZV1cbiIKQEAgLTU1LDYxICs1MywyNiBAQAogc3RhdGljIHVuc2lnbmVkIGludCB0aW1lb3V0Owogc3RhdGljIHVuc2lnbmVkIGludCBpbml0X3RpbWVvdXQ7CiAKLS8qCi0gKiBTdGF0aWMgdGFibGUgZm9yIG5vdy4gIFVnaC4KLSAqIEZlZWwgZnJlZSB0byBtYWtlIGR5bmFtaWMgYXMgbmVlZGVkLgotICovCi0jZGVmaW5lIElOVEVSUF9TTE9UX0hPU1QJKDApCi0jZGVmaW5lIElOVEVSUF9TTE9UX0NBTk9OX0hPU1QJKDEpCi0jZGVmaW5lIElOVEVSUF9TTE9UX0lQCQkoMikKLSNkZWZpbmUgSU5URVJQX1NMT1RfUE9SVAkoMykKLSNkZWZpbmUgSU5URVJQX1NMT1RfRElSCQkoNCkKLSNkZWZpbmUgSU5URVJQX1NMT1RfUEVSQ0VOVAkoNSkKLQotc3RhdGljIHN0cnVjdCBpbnRlcnAgaW50ZXJwX3RhYmxlW10gPSB7Ci0JeyAiJUgiLCAwfSwKLQl7ICIlQ0giLCAwfSwKLQl7ICIlSVAiLCAwfSwKLQl7ICIlUCIsIDB9LAotCXsgIiVEIiwgMH0sCi0JeyAiJSUiLCAwfSwKLX07Ci0KK3N0YXRpYyBjaGFyICpob3N0bmFtZTsKK3N0YXRpYyBjaGFyICpjYW5vbl9ob3N0bmFtZTsKK3N0YXRpYyBjaGFyICppcF9hZGRyZXNzOworc3RhdGljIGNoYXIgKnRjcF9wb3J0OwogCiBzdGF0aWMgdm9pZCBsb2dyZXBvcnQoaW50IHByaW9yaXR5LCBjb25zdCBjaGFyICplcnIsIHZhX2xpc3QgcGFyYW1zKQogewotCS8qIFdlIHNob3VsZCBkbyBhIHNpbmdsZSB3cml0ZSBzbyB0aGF0IGl0IGlzIGF0b21pYyBhbmQgb3V0cHV0Ci0JICogb2Ygc2V2ZXJhbCBwcm9jZXNzZXMgZG8gbm90IGdldCBpbnRlcm1pbmdsZWQuICovCi0JY2hhciBidWZbMTAyNF07Ci0JaW50IGJ1ZmxlbjsKLQlpbnQgbWF4bGVuLCBtc2dsZW47Ci0KLQkvKiBzaXplb2YoYnVmKSBzaG91bGQgYmUgYmlnIGVub3VnaCBmb3IgIltwaWRdIFxuIiAqLwotCWJ1ZmxlbiA9IHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJbJWxkXSAiLCAobG9uZykgZ2V0cGlkKCkpOwotCi0JbWF4bGVuID0gc2l6ZW9mKGJ1ZikgLSBidWZsZW4gLSAxOyAvKiAtMSBmb3Igb3VyIG93biBMRiAqLwotCW1zZ2xlbiA9IHZzbnByaW50ZihidWYgKyBidWZsZW4sIG1heGxlbiwgZXJyLCBwYXJhbXMpOwotCiAJaWYgKGxvZ19zeXNsb2cpIHsKKwkJY2hhciBidWZbMTAyNF07CisJCXZzbnByaW50ZihidWYsIHNpemVvZihidWYpLCBlcnIsIHBhcmFtcyk7CiAJCXN5c2xvZyhwcmlvcml0eSwgIiVzIiwgYnVmKTsKLQkJcmV0dXJuOworCX0gZWxzZSB7CisJCS8qCisJCSAqIFNpbmNlIHN0ZGVyciBpcyBzZXQgdG8gbGluZWJ1ZmZlcmVkIG1vZGUsIHRoZQorCQkgKiBsb2dnaW5nIG9mIGRpZmZlcmVudCBwcm9jZXNzZXMgd2lsbCBub3Qgb3ZlcmxhcAorCQkgKi8KKwkJZnByaW50ZihzdGRlcnIsICJbJSJQUkl1TUFYIl0gIiwgKHVpbnRtYXhfdClnZXRwaWQoKSk7CisJCXZmcHJpbnRmKHN0ZGVyciwgZXJyLCBwYXJhbXMpOworCQlmcHV0YygnXG4nLCBzdGRlcnIpOwogCX0KLQotCS8qIG1heGxlbiBjb3VudGVkIG91ciBvd24gTEYgYnV0IGFsc28gY291bnRzIHNwYWNlIGdpdmVuIHRvCi0JICogdnNucHJpbnRmIGZvciB0aGUgdGVybWluYXRpbmcgTlVMLiAgV2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdAotCSAqIHdlIGhhdmUgc3BhY2UgZm9yIG91ciBvd24gTEYgYW5kIE5VTCBhZnRlciB0aGUgIm1lYXQiIG9mIHRoZQotCSAqIG1lc3NhZ2UsIHNvIHRydW5jYXRlIGl0IGF0IG1heGxlbiAtIDEuCi0JICovCi0JaWYgKG1zZ2xlbiA+IG1heGxlbiAtIDEpCi0JCW1zZ2xlbiA9IG1heGxlbiAtIDE7Ci0JZWxzZSBpZiAobXNnbGVuIDwgMCkKLQkJbXNnbGVuID0gMDsgLyogUHJvdGVjdCBhZ2FpbnN0IHdlaXJkIHJldHVybiB2YWx1ZXMuICovCi0JYnVmbGVuICs9IG1zZ2xlbjsKLQotCWJ1ZltidWZsZW4rK10gPSAnXG4nOwotCWJ1ZltidWZsZW5dID0gJ1wwJzsKLQotCXdyaXRlX2luX2Z1bGwoMiwgYnVmLCBidWZsZW4pOwogfQogCiBzdGF0aWMgdm9pZCBsb2dlcnJvcihjb25zdCBjaGFyICplcnIsIC4uLikKQEAgLTE4MywxNSArMTQ2LDE0IEBACiAJfQogfQogCi1zdGF0aWMgY2hhciAqcGF0aF9vayhzdHJ1Y3QgaW50ZXJwICppdGFibGUpCitzdGF0aWMgY2hhciAqcGF0aF9vayhjaGFyICpkaXJlY3RvcnkpCiB7CiAJc3RhdGljIGNoYXIgcnBhdGhbUEFUSF9NQVhdOwogCXN0YXRpYyBjaGFyIGludGVycF9wYXRoW1BBVEhfTUFYXTsKLQlpbnQgcmV0cmllZF9wYXRoID0gMDsKIAljaGFyICpwYXRoOwogCWNoYXIgKmRpcjsKIAotCWRpciA9IGl0YWJsZVtJTlRFUlBfU0xPVF9ESVJdLnZhbHVlOworCWRpciA9IGRpcmVjdG9yeTsKIAogCWlmIChhdm9pZF9hbGlhcyhkaXIpKSB7CiAJCWxvZ2Vycm9yKCInJXMnOiBhbGlhc2VkIiwgZGlyKTsKQEAgLTIyMSwxNCArMTgzLDI3IEBACiAJCX0KIAl9CiAJZWxzZSBpZiAoaW50ZXJwb2xhdGVkX3BhdGggJiYgc2F3X2V4dGVuZGVkX2FyZ3MpIHsKKwkJc3RydWN0IHN0cmJ1ZiBleHBhbmRlZF9wYXRoID0gU1RSQlVGX0lOSVQ7CisJCXN0cnVjdCBzdHJidWZfZXhwYW5kX2RpY3RfZW50cnkgZGljdFtdID0geworCQkJeyAiSCIsIGhvc3RuYW1lIH0sCisJCQl7ICJDSCIsIGNhbm9uX2hvc3RuYW1lIH0sCisJCQl7ICJJUCIsIGlwX2FkZHJlc3MgfSwKKwkJCXsgIlAiLCB0Y3BfcG9ydCB9LAorCQkJeyAiRCIsIGRpcmVjdG9yeSB9LAorCQkJeyAiJSIsICIlIiB9LAorCQkJeyBOVUxMIH0KKwkJfTsKKwogCQlpZiAoKmRpciAhPSAnLycpIHsKIAkJCS8qIEFsbG93IG9ubHkgYWJzb2x1dGUgKi8KIAkJCWxvZ2Vycm9yKCInJXMnOiBOb24tYWJzb2x1dGUgcGF0aCBkZW5pZWQgKGludGVycG9sYXRlZC1wYXRoIGFjdGl2ZSkiLCBkaXIpOwogCQkJcmV0dXJuIE5VTEw7CiAJCX0KIAotCQlpbnRlcnBvbGF0ZShpbnRlcnBfcGF0aCwgUEFUSF9NQVgsIGludGVycG9sYXRlZF9wYXRoLAotCQkJICAgIGludGVycF90YWJsZSwgQVJSQVlfU0laRShpbnRlcnBfdGFibGUpKTsKKwkJc3RyYnVmX2V4cGFuZCgmZXhwYW5kZWRfcGF0aCwgaW50ZXJwb2xhdGVkX3BhdGgsCisJCQkJc3RyYnVmX2V4cGFuZF9kaWN0X2NiLCAmZGljdCk7CisJCXN0cmxjcHkoaW50ZXJwX3BhdGgsIGV4cGFuZGVkX3BhdGguYnVmLCBQQVRIX01BWCk7CisJCXN0cmJ1Zl9yZWxlYXNlKCZleHBhbmRlZF9wYXRoKTsKIAkJbG9naW5mbygiSW50ZXJwb2xhdGVkIGRpciAnJXMnIiwgaW50ZXJwX3BhdGgpOwogCiAJCWRpciA9IGludGVycF9wYXRoOwpAQCAtMjQzLDIyICsyMTgsMTUgQEAKIAkJZGlyID0gcnBhdGg7CiAJfQogCi0JZG8gewotCQlwYXRoID0gZW50ZXJfcmVwbyhkaXIsIHN0cmljdF9wYXRocyk7Ci0JCWlmIChwYXRoKQotCQkJYnJlYWs7Ci0KKwlwYXRoID0gZW50ZXJfcmVwbyhkaXIsIHN0cmljdF9wYXRocyk7CisJaWYgKCFwYXRoICYmIGJhc2VfcGF0aCAmJiBiYXNlX3BhdGhfcmVsYXhlZCkgewogCQkvKgogCQkgKiBpZiB3ZSBmYWlsIGFuZCBiYXNlX3BhdGhfcmVsYXhlZCBpcyBlbmFibGVkLCB0cnkgd2l0aG91dAogCQkgKiBwcmVmaXhpbmcgdGhlIGJhc2UgcGF0aAogCQkgKi8KLQkJaWYgKGJhc2VfcGF0aCAmJiBiYXNlX3BhdGhfcmVsYXhlZCAmJiAhcmV0cmllZF9wYXRoKSB7Ci0JCQlkaXIgPSBpdGFibGVbSU5URVJQX1NMT1RfRElSXS52YWx1ZTsKLQkJCXJldHJpZWRfcGF0aCA9IDE7Ci0JCQljb250aW51ZTsKLQkJfQotCQlicmVhazsKLQl9IHdoaWxlICgxKTsKKwkJZGlyID0gZGlyZWN0b3J5OworCQlwYXRoID0gZW50ZXJfcmVwbyhkaXIsIHN0cmljdF9wYXRocyk7CisJfQogCiAJaWYgKCFwYXRoKSB7CiAJCWxvZ2Vycm9yKCInJXMnOiB1bmFibGUgdG8gY2hkaXIgb3Igbm90IGEgZ2l0IGFyY2hpdmUiLCBkaXIpOwpAQCAtMzE5LDE0ICsyODcsMTIgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBydW5fc2VydmljZShzdHJ1Y3QgaW50ZXJwICppdGFibGUsIHN0cnVjdCBkYWVtb25fc2VydmljZSAqc2VydmljZSkKK3N0YXRpYyBpbnQgcnVuX3NlcnZpY2UoY2hhciAqZGlyLCBzdHJ1Y3QgZGFlbW9uX3NlcnZpY2UgKnNlcnZpY2UpCiB7CiAJY29uc3QgY2hhciAqcGF0aDsKIAlpbnQgZW5hYmxlZCA9IHNlcnZpY2UtPmVuYWJsZWQ7CiAKLQlsb2dpbmZvKCJSZXF1ZXN0ICVzIGZvciAnJXMnIiwKLQkJc2VydmljZS0+bmFtZSwKLQkJaXRhYmxlW0lOVEVSUF9TTE9UX0RJUl0udmFsdWUpOworCWxvZ2luZm8oIlJlcXVlc3QgJXMgZm9yICclcyciLCBzZXJ2aWNlLT5uYW1lLCBkaXIpOwogCiAJaWYgKCFlbmFibGVkICYmICFzZXJ2aWNlLT5vdmVycmlkYWJsZSkgewogCQlsb2dlcnJvcigiJyVzJzogc2VydmljZSBub3QgZW5hYmxlZC4iLCBzZXJ2aWNlLT5uYW1lKTsKQEAgLTMzNCw3ICszMDAsNyBAQAogCQlyZXR1cm4gLTE7CiAJfQogCi0JaWYgKCEocGF0aCA9IHBhdGhfb2soaXRhYmxlKSkpCisJaWYgKCEocGF0aCA9IHBhdGhfb2soZGlyKSkpCiAJCXJldHVybiAtMTsKIAogCS8qCkBAIC00MzEsMTEgKzM5NywxOCBAQAogCWRpZSgiTm8gc3VjaCBzZXJ2aWNlICVzIiwgbmFtZSk7CiB9CiAKK3N0YXRpYyBjaGFyICp4c3RyZHVwX3RvbG93ZXIoY29uc3QgY2hhciAqc3RyKQoreworCWNoYXIgKnAsICpkdXAgPSB4c3RyZHVwKHN0cik7CisJZm9yIChwID0gZHVwOyAqcDsgcCsrKQorCQkqcCA9IHRvbG93ZXIoKnApOworCXJldHVybiBkdXA7Cit9CisKIC8qCiAgKiBTZXBhcmF0ZSB0aGUgImV4dHJhIGFyZ3MiIGluZm9ybWF0aW9uIGFzIHN1cHBsaWVkIGJ5IHRoZSBjbGllbnQgY29ubmVjdGlvbi4KLSAqIEFueSByZXN1bHRpbmcgZGF0YSBpcyBzcXVpcnJlbGVkIGF3YXkgaW4gdGhlIGdpdmVuIGludGVycG9sYXRpb24gdGFibGUuCiAgKi8KLXN0YXRpYyB2b2lkIHBhcnNlX2V4dHJhX2FyZ3Moc3RydWN0IGludGVycCAqdGFibGUsIGNoYXIgKmV4dHJhX2FyZ3MsIGludCBidWZsZW4pCitzdGF0aWMgdm9pZCBwYXJzZV9leHRyYV9hcmdzKGNoYXIgKmV4dHJhX2FyZ3MsIGludCBidWZsZW4pCiB7CiAJY2hhciAqdmFsOwogCWludCB2YWxsZW47CkBAIC00NTMsMzUgKzQyNiwyMyBAQAogCQkJCWlmIChwb3J0KSB7CiAJCQkJCSpwb3J0ID0gMDsKIAkJCQkJcG9ydCsrOwotCQkJCQlpbnRlcnBfc2V0X2VudHJ5KHRhYmxlLCBJTlRFUlBfU0xPVF9QT1JULCBwb3J0KTsKKwkJCQkJZnJlZSh0Y3BfcG9ydCk7CisJCQkJCXRjcF9wb3J0ID0geHN0cmR1cChwb3J0KTsKIAkJCQl9Ci0JCQkJaW50ZXJwX3NldF9lbnRyeSh0YWJsZSwgSU5URVJQX1NMT1RfSE9TVCwgaG9zdCk7CisJCQkJZnJlZShob3N0bmFtZSk7CisJCQkJaG9zdG5hbWUgPSB4c3RyZHVwX3RvbG93ZXIoaG9zdCk7CiAJCQl9CiAKIAkJCS8qIE9uIHRvIHRoZSBuZXh0IG9uZSAqLwogCQkJZXh0cmFfYXJncyA9IHZhbCArIHZhbGxlbjsKIAkJfQogCX0KLX0KLQotc3RhdGljIHZvaWQgZmlsbF9pbl9leHRyYV90YWJsZV9lbnRyaWVzKHN0cnVjdCBpbnRlcnAgKml0YWJsZSkKLXsKLQljaGFyICpocDsKLQotCS8qCi0JICogUmVwbGFjZSBsaXRlcmFsIGhvc3Qgd2l0aCBsb3dlcmNhc2UtaXplZCBob3N0bmFtZS4KLQkgKi8KLQlocCA9IGludGVycF90YWJsZVtJTlRFUlBfU0xPVF9IT1NUXS52YWx1ZTsKLQlpZiAoIWhwKQotCQlyZXR1cm47Ci0JZm9yICggOyAqaHA7IGhwKyspCi0JCSpocCA9IHRvbG93ZXIoKmhwKTsKIAogCS8qCiAJICogTG9jYXRlIGNhbm9uaWNhbCBob3N0bmFtZSBhbmQgaXRzIElQIGFkZHJlc3MuCiAJICovCisJaWYgKGhvc3RuYW1lKSB7CiAjaWZuZGVmIE5PX0lQVjYKLQl7CiAJCXN0cnVjdCBhZGRyaW5mbyBoaW50czsKIAkJc3RydWN0IGFkZHJpbmZvICphaSwgKmFpMDsKIAkJaW50IGdhaTsKQEAgLTQ5MCwzMCArNDUxLDI4IEBACiAJCW1lbXNldCgmaGludHMsIDAsIHNpemVvZihoaW50cykpOwogCQloaW50cy5haV9mbGFncyA9IEFJX0NBTk9OTkFNRTsKIAotCQlnYWkgPSBnZXRhZGRyaW5mbyhpbnRlcnBfdGFibGVbSU5URVJQX1NMT1RfSE9TVF0udmFsdWUsIDAsICZoaW50cywgJmFpMCk7CisJCWdhaSA9IGdldGFkZHJpbmZvKGhvc3RuYW1lLCAwLCAmaGludHMsICZhaTApOwogCQlpZiAoIWdhaSkgewogCQkJZm9yIChhaSA9IGFpMDsgYWk7IGFpID0gYWktPmFpX25leHQpIHsKIAkJCQlzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbl9hZGRyID0gKHZvaWQgKilhaS0+YWlfYWRkcjsKIAogCQkJCWluZXRfbnRvcChBRl9JTkVULCAmc2luX2FkZHItPnNpbl9hZGRyLAogCQkJCQkgIGFkZHJidWYsIHNpemVvZihhZGRyYnVmKSk7Ci0JCQkJaW50ZXJwX3NldF9lbnRyeShpbnRlcnBfdGFibGUsCi0JCQkJCQkgSU5URVJQX1NMT1RfQ0FOT05fSE9TVCwgYWktPmFpX2Nhbm9ubmFtZSk7Ci0JCQkJaW50ZXJwX3NldF9lbnRyeShpbnRlcnBfdGFibGUsCi0JCQkJCQkgSU5URVJQX1NMT1RfSVAsIGFkZHJidWYpOworCQkJCWZyZWUoY2Fub25faG9zdG5hbWUpOworCQkJCWNhbm9uX2hvc3RuYW1lID0geHN0cmR1cChhaS0+YWlfY2Fub25uYW1lKTsKKwkJCQlmcmVlKGlwX2FkZHJlc3MpOworCQkJCWlwX2FkZHJlc3MgPSB4c3RyZHVwKGFkZHJidWYpOwogCQkJCWJyZWFrOwogCQkJfQogCQkJZnJlZWFkZHJpbmZvKGFpMCk7CiAJCX0KLQl9CiAjZWxzZQotCXsKIAkJc3RydWN0IGhvc3RlbnQgKmhlbnQ7CiAJCXN0cnVjdCBzb2NrYWRkcl9pbiBzYTsKIAkJY2hhciAqKmFwOwogCQlzdGF0aWMgY2hhciBhZGRyYnVmW0hPU1RfTkFNRV9NQVggKyAxXTsKIAotCQloZW50ID0gZ2V0aG9zdGJ5bmFtZShpbnRlcnBfdGFibGVbSU5URVJQX1NMT1RfSE9TVF0udmFsdWUpOworCQloZW50ID0gZ2V0aG9zdGJ5bmFtZShob3N0bmFtZSk7CiAKIAkJYXAgPSBoZW50LT5oX2FkZHJfbGlzdDsKIAkJbWVtc2V0KCZzYSwgMCwgc2l6ZW9mIHNhKTsKQEAgLTUyNCwxMCArNDgzLDEyIEBACiAJCWluZXRfbnRvcChoZW50LT5oX2FkZHJ0eXBlLCAmc2Euc2luX2FkZHIsCiAJCQkgIGFkZHJidWYsIHNpemVvZihhZGRyYnVmKSk7CiAKLQkJaW50ZXJwX3NldF9lbnRyeShpbnRlcnBfdGFibGUsIElOVEVSUF9TTE9UX0NBTk9OX0hPU1QsIGhlbnQtPmhfbmFtZSk7Ci0JCWludGVycF9zZXRfZW50cnkoaW50ZXJwX3RhYmxlLCBJTlRFUlBfU0xPVF9JUCwgYWRkcmJ1Zik7Ci0JfQorCQlmcmVlKGNhbm9uX2hvc3RuYW1lKTsKKwkJY2Fub25faG9zdG5hbWUgPSB4c3RyZHVwKGhlbnQtPmhfbmFtZSk7CisJCWZyZWUoaXBfYWRkcmVzcyk7CisJCWlwX2FkZHJlc3MgPSB4c3RyZHVwKGFkZHJidWYpOwogI2VuZGlmCisJfQogfQogCiAKQEAgLTU1Nyw2ICs1MTgsMTAgQEAKICNlbmRpZgogCQl9CiAJCWxvZ2luZm8oIkNvbm5lY3Rpb24gZnJvbSAlczolZCIsIGFkZHJidWYsIHBvcnQpOworCQlzZXRlbnYoIlJFTU9URV9BRERSIiwgYWRkcmJ1ZiwgMSk7CisJfQorCWVsc2UgeworCQl1bnNldGVudigiUkVNT1RFX0FERFIiKTsKIAl9CiAKIAlhbGFybShpbml0X3RpbWVvdXQgPyBpbml0X3RpbWVvdXQgOiB0aW1lb3V0KTsKQEAgLTU3MywxNiArNTM4LDE0IEBACiAJCXBrdGxlbi0tOwogCX0KIAotCS8qCi0JICogSW5pdGlhbGl6ZSB0aGUgcGF0aCBpbnRlcnBvbGF0aW9uIHRhYmxlIGZvciB0aGlzIGNvbm5lY3Rpb24uCi0JICovCi0JaW50ZXJwX2NsZWFyX3RhYmxlKGludGVycF90YWJsZSwgQVJSQVlfU0laRShpbnRlcnBfdGFibGUpKTsKLQlpbnRlcnBfc2V0X2VudHJ5KGludGVycF90YWJsZSwgSU5URVJQX1NMT1RfUEVSQ0VOVCwgIiUiKTsKKwlmcmVlKGhvc3RuYW1lKTsKKwlmcmVlKGNhbm9uX2hvc3RuYW1lKTsKKwlmcmVlKGlwX2FkZHJlc3MpOworCWZyZWUodGNwX3BvcnQpOworCWhvc3RuYW1lID0gY2Fub25faG9zdG5hbWUgPSBpcF9hZGRyZXNzID0gdGNwX3BvcnQgPSBOVUxMOwogCi0JaWYgKGxlbiAhPSBwa3RsZW4pIHsKLQkgICAgcGFyc2VfZXh0cmFfYXJncyhpbnRlcnBfdGFibGUsIGxpbmUgKyBsZW4gKyAxLCBwa3RsZW4gLSBsZW4gLSAxKTsKLQkgICAgZmlsbF9pbl9leHRyYV90YWJsZV9lbnRyaWVzKGludGVycF90YWJsZSk7Ci0JfQorCWlmIChsZW4gIT0gcGt0bGVuKQorCQlwYXJzZV9leHRyYV9hcmdzKGxpbmUgKyBsZW4gKyAxLCBwa3RsZW4gLSBsZW4gLSAxKTsKIAogCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGRhZW1vbl9zZXJ2aWNlKTsgaSsrKSB7CiAJCXN0cnVjdCBkYWVtb25fc2VydmljZSAqcyA9ICYoZGFlbW9uX3NlcnZpY2VbaV0pOwpAQCAtNTk0LDkgKzU1Nyw3IEBACiAJCQkgKiBOb3RlOiBUaGUgZGlyZWN0b3J5IGhlcmUgaXMgcHJvYmFibHkgY29udGV4dCBzZW5zaXRpdmUsCiAJCQkgKiBhbmQgbWlnaHQgZGVwZW5kIG9uIHRoZSBhY3R1YWwgc2VydmljZSBiZWluZyBwZXJmb3JtZWQuCiAJCQkgKi8KLQkJCWludGVycF9zZXRfZW50cnkoaW50ZXJwX3RhYmxlLAotCQkJCQkgSU5URVJQX1NMT1RfRElSLCBsaW5lICsgbmFtZWxlbiArIDUpOwotCQkJcmV0dXJuIHJ1bl9zZXJ2aWNlKGludGVycF90YWJsZSwgcyk7CisJCQlyZXR1cm4gcnVuX3NlcnZpY2UobGluZSArIG5hbWVsZW4gKyA1LCBzKTsKIAkJfQogCX0KIApAQCAtNjA0LDE2OSArNTY1LDEwNyBAQAogCXJldHVybiAtMTsKIH0KIAorc3RhdGljIGludCBtYXhfY29ubmVjdGlvbnMgPSAzMjsKIAotLyoKLSAqIFdlIGNvdW50IHNwYXduZWQvcmVhcGVkIHNlcGFyYXRlbHksIGp1c3QgdG8gYXZvaWQgYW55Ci0gKiByYWNlcyB3aGVuIHVwZGF0aW5nIHRoZW0gZnJvbSBzaWduYWxzLiBUaGUgU0lHQ0hMRCBoYW5kbGVyCi0gKiB3aWxsIG9ubHkgdXBkYXRlIGNoaWxkcmVuX3JlYXBlZCwgYW5kIHRoZSBmb3JrIGxvZ2ljIHdpbGwKLSAqIG9ubHkgdXBkYXRlIGNoaWxkcmVuX3NwYXduZWQuCi0gKgotICogTUFYX0NISUxEUkVOIHNob3VsZCBiZSBhIHBvd2VyLW9mLXR3byB0byBtYWtlIHRoZSBtb2R1bHVzCi0gKiBvcGVyYXRpb24gY2hlYXAuIEl0IHNob3VsZCBhbHNvIGJlIGF0IGxlYXN0IHR3aWNlCi0gKiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMgd2Ugd2lsbCBldmVyIGFsbG93LgotICovCi0jZGVmaW5lIE1BWF9DSElMRFJFTiAxMjgKLQotc3RhdGljIGludCBtYXhfY29ubmVjdGlvbnMgPSAyNTsKLQotLyogVGhlc2UgYXJlIHVwZGF0ZWQgYnkgdGhlIHNpZ25hbCBoYW5kbGVyICovCi1zdGF0aWMgdm9sYXRpbGUgdW5zaWduZWQgaW50IGNoaWxkcmVuX3JlYXBlZDsKLXN0YXRpYyBwaWRfdCBkZWFkX2NoaWxkW01BWF9DSElMRFJFTl07Ci0KLS8qIFRoZXNlIGFyZSB1cGRhdGVkIGJ5IHRoZSBtYWluIGxvb3AgKi8KLXN0YXRpYyB1bnNpZ25lZCBpbnQgY2hpbGRyZW5fc3Bhd25lZDsKLXN0YXRpYyB1bnNpZ25lZCBpbnQgY2hpbGRyZW5fZGVsZXRlZDsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgbGl2ZV9jaGlsZHJlbjsKIAogc3RhdGljIHN0cnVjdCBjaGlsZCB7CisJc3RydWN0IGNoaWxkICpuZXh0OwogCXBpZF90IHBpZDsKLQlpbnQgYWRkcmxlbjsKIAlzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBhZGRyZXNzOwotfSBsaXZlX2NoaWxkW01BWF9DSElMRFJFTl07Cit9ICpmaXJzdGJvcm47CiAKLXN0YXRpYyB2b2lkIGFkZF9jaGlsZChpbnQgaWR4LCBwaWRfdCBwaWQsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwgaW50IGFkZHJsZW4pCitzdGF0aWMgdm9pZCBhZGRfY2hpbGQocGlkX3QgcGlkLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIGludCBhZGRybGVuKQogewotCWxpdmVfY2hpbGRbaWR4XS5waWQgPSBwaWQ7Ci0JbGl2ZV9jaGlsZFtpZHhdLmFkZHJsZW4gPSBhZGRybGVuOwotCW1lbWNweSgmbGl2ZV9jaGlsZFtpZHhdLmFkZHJlc3MsIGFkZHIsIGFkZHJsZW4pOworCXN0cnVjdCBjaGlsZCAqbmV3Ym9ybiwgKipjcmFkbGU7CisKKwkvKgorCSAqIFRoaXMgbXVzdCBiZSB4Y2FsbG9jKCkgLS0gd2UnbGwgY29tcGFyZSB0aGUgd2hvbGUgc29ja2FkZHJfc3RvcmFnZQorCSAqIGJ1dCBpbmRpdmlkdWFsIGFkZHJlc3MgbWF5IGJlIHNob3J0ZXIuCisJICovCisJbmV3Ym9ybiA9IHhjYWxsb2MoMSwgc2l6ZW9mKCpuZXdib3JuKSk7CisJbGl2ZV9jaGlsZHJlbisrOworCW5ld2Jvcm4tPnBpZCA9IHBpZDsKKwltZW1jcHkoJm5ld2Jvcm4tPmFkZHJlc3MsIGFkZHIsIGFkZHJsZW4pOworCWZvciAoY3JhZGxlID0gJmZpcnN0Ym9ybjsgKmNyYWRsZTsgY3JhZGxlID0gJigqY3JhZGxlKS0+bmV4dCkKKwkJaWYgKCFtZW1jbXAoJigqY3JhZGxlKS0+YWRkcmVzcywgJm5ld2Jvcm4tPmFkZHJlc3MsCisJCQkgICAgc2l6ZW9mKG5ld2Jvcm4tPmFkZHJlc3MpKSkKKwkJCWJyZWFrOworCW5ld2Jvcm4tPm5leHQgPSAqY3JhZGxlOworCSpjcmFkbGUgPSBuZXdib3JuOwogfQogCi0vKgotICogV2FsayBmcm9tICJkZWxldGVkIiB0byAic3Bhd25lZCIsIGFuZCByZW1vdmUgY2hpbGQgInBpZCIuCi0gKgotICogV2UgbW92ZSBldmVyeXRoaW5nIHVwIGJ5IG9uZSwgc2luY2UgdGhlIG5ldyAiZGVsZXRlZCIgd2lsbAotICogYmUgb25lIGhpZ2hlci4KLSAqLwotc3RhdGljIHZvaWQgcmVtb3ZlX2NoaWxkKHBpZF90IHBpZCwgdW5zaWduZWQgZGVsZXRlZCwgdW5zaWduZWQgc3Bhd25lZCkKK3N0YXRpYyB2b2lkIHJlbW92ZV9jaGlsZChwaWRfdCBwaWQpCiB7Ci0Jc3RydWN0IGNoaWxkIG47CisJc3RydWN0IGNoaWxkICoqY3JhZGxlLCAqYmxhbmtldDsKIAotCWRlbGV0ZWQgJT0gTUFYX0NISUxEUkVOOwotCXNwYXduZWQgJT0gTUFYX0NISUxEUkVOOwotCWlmIChsaXZlX2NoaWxkW2RlbGV0ZWRdLnBpZCA9PSBwaWQpIHsKLQkJbGl2ZV9jaGlsZFtkZWxldGVkXS5waWQgPSAtMTsKLQkJcmV0dXJuOwotCX0KLQluID0gbGl2ZV9jaGlsZFtkZWxldGVkXTsKLQlmb3IgKDs7KSB7Ci0JCXN0cnVjdCBjaGlsZCBtOwotCQlkZWxldGVkID0gKGRlbGV0ZWQgKyAxKSAlIE1BWF9DSElMRFJFTjsKLQkJaWYgKGRlbGV0ZWQgPT0gc3Bhd25lZCkKLQkJCWRpZSgiY291bGQgbm90IGZpbmQgZGVhZCBjaGlsZCAlZFxuIiwgcGlkKTsKLQkJbSA9IGxpdmVfY2hpbGRbZGVsZXRlZF07Ci0JCWxpdmVfY2hpbGRbZGVsZXRlZF0gPSBuOwotCQlpZiAobS5waWQgPT0gcGlkKQotCQkJcmV0dXJuOwotCQluID0gbTsKLQl9CisJZm9yIChjcmFkbGUgPSAmZmlyc3Rib3JuOyAoYmxhbmtldCA9ICpjcmFkbGUpOyBjcmFkbGUgPSAmYmxhbmtldC0+bmV4dCkKKwkJaWYgKGJsYW5rZXQtPnBpZCA9PSBwaWQpIHsKKwkJCSpjcmFkbGUgPSBibGFua2V0LT5uZXh0OworCQkJbGl2ZV9jaGlsZHJlbi0tOworCQkJZnJlZShibGFua2V0KTsKKwkJCWJyZWFrOworCQl9CiB9CiAKIC8qCiAgKiBUaGlzIGdldHMgY2FsbGVkIGlmIHRoZSBudW1iZXIgb2YgY29ubmVjdGlvbnMgZ3Jvd3MKICAqIHBhc3QgIm1heF9jb25uZWN0aW9ucyIuCiAgKgotICogV2UgX3Nob3VsZF8gc3RhcnQgb2ZmIGJ5IHNlYXJjaGluZyBmb3IgY29ubmVjdGlvbnMKLSAqIGZyb20gdGhlIHNhbWUgSVAsIGFuZCBpZiB0aGVyZSBpcyBzb21lIGFkZHJlc3Mgd3RoCi0gKiBtdWx0aXBsZSBjb25uZWN0aW9ucywgd2Ugc2hvdWxkIGtpbGwgdGhhdCBmaXJzdC4KLSAqCi0gKiBBcyBpdCBpcywgd2UganVzdCAicmFuZG9tbHkiIGtpbGwgMjUlIG9mIHRoZSBjb25uZWN0aW9ucywKLSAqIGFuZCBvdXIgcHNldWRvLXJhbmRvbSBnZW5lcmF0b3Igc3Vja3MgdG9vLiBJIGhhdmUgbm8KLSAqIHNoYW1lLgotICoKLSAqIFJlYWxseSwgdGhpcyBpcyBqdXN0IGEgcGxhY2UtaG9sZGVyIGZvciBhIF9yZWFsXyBhbGdvcml0aG0uCisgKiBXZSBraWxsIHRoZSBuZXdlc3QgY29ubmVjdGlvbiBmcm9tIGEgZHVwbGljYXRlIElQLgogICovCi1zdGF0aWMgdm9pZCBraWxsX3NvbWVfY2hpbGRyZW4oaW50IHNpZ25vLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgc3RvcCkKK3N0YXRpYyB2b2lkIGtpbGxfc29tZV9jaGlsZCh2b2lkKQogewotCXN0YXJ0ICU9IE1BWF9DSElMRFJFTjsKLQlzdG9wICU9IE1BWF9DSElMRFJFTjsKLQl3aGlsZSAoc3RhcnQgIT0gc3RvcCkgewotCQlpZiAoIShzdGFydCAmIDMpKQotCQkJa2lsbChsaXZlX2NoaWxkW3N0YXJ0XS5waWQsIHNpZ25vKTsKLQkJc3RhcnQgPSAoc3RhcnQgKyAxKSAlIE1BWF9DSElMRFJFTjsKLQl9CisJY29uc3Qgc3RydWN0IGNoaWxkICpibGFua2V0LCAqbmV4dDsKKworCWlmICghKGJsYW5rZXQgPSBmaXJzdGJvcm4pKQorCQlyZXR1cm47CisKKwlmb3IgKDsgKG5leHQgPSBibGFua2V0LT5uZXh0KTsgYmxhbmtldCA9IG5leHQpCisJCWlmICghbWVtY21wKCZibGFua2V0LT5hZGRyZXNzLCAmbmV4dC0+YWRkcmVzcywKKwkJCSAgICBzaXplb2YobmV4dC0+YWRkcmVzcykpKSB7CisJCQlraWxsKGJsYW5rZXQtPnBpZCwgU0lHVEVSTSk7CisJCQlicmVhazsKKwkJfQogfQogCiBzdGF0aWMgdm9pZCBjaGVja19kZWFkX2NoaWxkcmVuKHZvaWQpCiB7Ci0JdW5zaWduZWQgc3Bhd25lZCwgcmVhcGVkLCBkZWxldGVkOworCWludCBzdGF0dXM7CisJcGlkX3QgcGlkOwogCi0Jc3Bhd25lZCA9IGNoaWxkcmVuX3NwYXduZWQ7Ci0JcmVhcGVkID0gY2hpbGRyZW5fcmVhcGVkOwotCWRlbGV0ZWQgPSBjaGlsZHJlbl9kZWxldGVkOwotCi0Jd2hpbGUgKGRlbGV0ZWQgPCByZWFwZWQpIHsKLQkJcGlkX3QgcGlkID0gZGVhZF9jaGlsZFtkZWxldGVkICUgTUFYX0NISUxEUkVOXTsKLQkJY29uc3QgY2hhciAqZGVhZCA9IHBpZCA8IDAgPyAiICh3aXRoIGVycm9yKSIgOiAiIjsKLQotCQlpZiAocGlkIDwgMCkKLQkJCXBpZCA9IC1waWQ7Ci0KLQkJLyogWFhYOiBDdXN0b20gbG9nZ2luZywgc2luY2Ugd2UgZG9uJ3Qgd2FubmEgZ2V0cGlkKCkgKi8KLQkJaWYgKHZlcmJvc2UpIHsKLQkJCWlmIChsb2dfc3lzbG9nKQotCQkJCXN5c2xvZyhMT0dfSU5GTywgIlslZF0gRGlzY29ubmVjdGVkJXMiLAotCQkJCQkJcGlkLCBkZWFkKTsKLQkJCWVsc2UKLQkJCQlmcHJpbnRmKHN0ZGVyciwgIlslZF0gRGlzY29ubmVjdGVkJXNcbiIsCi0JCQkJCQlwaWQsIGRlYWQpOwotCQl9Ci0JCXJlbW92ZV9jaGlsZChwaWQsIGRlbGV0ZWQsIHNwYXduZWQpOwotCQlkZWxldGVkKys7Ci0JfQotCWNoaWxkcmVuX2RlbGV0ZWQgPSBkZWxldGVkOwotfQotCi1zdGF0aWMgdm9pZCBjaGVja19tYXhfY29ubmVjdGlvbnModm9pZCkKLXsKLQlmb3IgKDs7KSB7Ci0JCWludCBhY3RpdmU7Ci0JCXVuc2lnbmVkIHNwYXduZWQsIGRlbGV0ZWQ7Ci0KLQkJY2hlY2tfZGVhZF9jaGlsZHJlbigpOwotCi0JCXNwYXduZWQgPSBjaGlsZHJlbl9zcGF3bmVkOwotCQlkZWxldGVkID0gY2hpbGRyZW5fZGVsZXRlZDsKLQotCQlhY3RpdmUgPSBzcGF3bmVkIC0gZGVsZXRlZDsKLQkJaWYgKGFjdGl2ZSA8PSBtYXhfY29ubmVjdGlvbnMpCi0JCQlicmVhazsKLQotCQkvKiBLaWxsIHNvbWUgdW5zdGFydGVkIGNvbm5lY3Rpb25zIHdpdGggU0lHVEVSTSAqLwotCQlraWxsX3NvbWVfY2hpbGRyZW4oU0lHVEVSTSwgZGVsZXRlZCwgc3Bhd25lZCk7Ci0JCWlmIChhY3RpdmUgPD0gbWF4X2Nvbm5lY3Rpb25zIDw8IDEpCi0JCQlicmVhazsKLQotCQkvKiBJZiB0aGUgU0lHVEVSTSB0aGluZyBpc24ndCBoZWxwaW5nIHVzZSBTSUdLSUxMICovCi0JCWtpbGxfc29tZV9jaGlsZHJlbihTSUdLSUxMLCBkZWxldGVkLCBzcGF3bmVkKTsKLQkJc2xlZXAoMSk7CisJd2hpbGUgKChwaWQgPSB3YWl0cGlkKC0xLCAmc3RhdHVzLCBXTk9IQU5HKSkgPiAwKSB7CisJCWNvbnN0IGNoYXIgKmRlYWQgPSAiIjsKKwkJcmVtb3ZlX2NoaWxkKHBpZCk7CisJCWlmICghV0lGRVhJVEVEKHN0YXR1cykgfHwgKFdFWElUU1RBVFVTKHN0YXR1cykgPiAwKSkKKwkJCWRlYWQgPSAiICh3aXRoIGVycm9yKSI7CisJCWxvZ2luZm8oIlslIlBSSXVNQVgiXSBEaXNjb25uZWN0ZWQlcyIsICh1aW50bWF4X3QpcGlkLCBkZWFkKTsKIAl9CiB9CiAKIHN0YXRpYyB2b2lkIGhhbmRsZShpbnQgaW5jb21pbmcsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwgaW50IGFkZHJsZW4pCiB7Ci0JcGlkX3QgcGlkID0gZm9yaygpOworCXBpZF90IHBpZDsKIAotCWlmIChwaWQpIHsKLQkJdW5zaWduZWQgaWR4OwotCi0JCWNsb3NlKGluY29taW5nKTsKLQkJaWYgKHBpZCA8IDApCisJaWYgKG1heF9jb25uZWN0aW9ucyAmJiBsaXZlX2NoaWxkcmVuID49IG1heF9jb25uZWN0aW9ucykgeworCQlraWxsX3NvbWVfY2hpbGQoKTsKKwkJc2xlZXAoMSk7ICAvKiBnaXZlIGl0IHNvbWUgdGltZSB0byBkaWUgKi8KKwkJY2hlY2tfZGVhZF9jaGlsZHJlbigpOworCQlpZiAobGl2ZV9jaGlsZHJlbiA+PSBtYXhfY29ubmVjdGlvbnMpIHsKKwkJCWNsb3NlKGluY29taW5nKTsKKwkJCWxvZ2Vycm9yKCJUb28gbWFueSBjaGlsZHJlbiwgZHJvcHBpbmcgY29ubmVjdGlvbiIpOwogCQkJcmV0dXJuOworCQl9CisJfQogCi0JCWlkeCA9IGNoaWxkcmVuX3NwYXduZWQgJSBNQVhfQ0hJTERSRU47Ci0JCWNoaWxkcmVuX3NwYXduZWQrKzsKLQkJYWRkX2NoaWxkKGlkeCwgcGlkLCBhZGRyLCBhZGRybGVuKTsKKwlpZiAoKHBpZCA9IGZvcmsoKSkpIHsKKwkJY2xvc2UoaW5jb21pbmcpOworCQlpZiAocGlkIDwgMCkgeworCQkJbG9nZXJyb3IoIkNvdWxkbid0IGZvcmsgJXMiLCBzdHJlcnJvcihlcnJubykpOworCQkJcmV0dXJuOworCQl9CiAKLQkJY2hlY2tfbWF4X2Nvbm5lY3Rpb25zKCk7CisJCWFkZF9jaGlsZChwaWQsIGFkZHIsIGFkZHJsZW4pOwogCQlyZXR1cm47CiAJfQogCkBAIC03NzksMjEgKzY3OCwxMSBAQAogCiBzdGF0aWMgdm9pZCBjaGlsZF9oYW5kbGVyKGludCBzaWdubykKIHsKLQlmb3IgKDs7KSB7Ci0JCWludCBzdGF0dXM7Ci0JCXBpZF90IHBpZCA9IHdhaXRwaWQoLTEsICZzdGF0dXMsIFdOT0hBTkcpOwotCi0JCWlmIChwaWQgPiAwKSB7Ci0JCQl1bnNpZ25lZCByZWFwZWQgPSBjaGlsZHJlbl9yZWFwZWQ7Ci0JCQlpZiAoIVdJRkVYSVRFRChzdGF0dXMpIHx8IFdFWElUU1RBVFVTKHN0YXR1cykgPiAwKQotCQkJCXBpZCA9IC1waWQ7Ci0JCQlkZWFkX2NoaWxkW3JlYXBlZCAlIE1BWF9DSElMRFJFTl0gPSBwaWQ7Ci0JCQljaGlsZHJlbl9yZWFwZWQgPSByZWFwZWQgKyAxOwotCQkJd3JpdGUoY2hpbGRfaGFuZGxlcl9waXBlWzFdLCAmc3RhdHVzLCAxKTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0JCWJyZWFrOwotCX0KKwkvKgorCSAqIE90aGVyd2lzZSBlbXB0eSBoYW5kbGVyIGJlY2F1c2Ugc3lzdGVtY2FsbHMgd2lsbCBnZXQgaW50ZXJydXB0ZWQKKwkgKiB1cG9uIHNpZ25hbCByZWNlaXB0CisJICogU3lzViBuZWVkcyB0aGUgaGFuZGxlciB0byBiZSByZWFybWVkCisJICovCiAJc2lnbmFsKFNJR0NITEQsIGNoaWxkX2hhbmRsZXIpOwogfQogCkBAIC04MzYsNyArNzI1LDcgQEAKIAkJaWYgKHNvY2tmZCA8IDApCiAJCQljb250aW51ZTsKIAkJaWYgKHNvY2tmZCA+PSBGRF9TRVRTSVpFKSB7Ci0JCQllcnJvcigidG9vIGxhcmdlIHNvY2tldCBkZXNjcmlwdG9yLiIpOworCQkJbG9nZXJyb3IoIlNvY2tldCBkZXNjcmlwdG9yIHRvbyBsYXJnZSIpOwogCQkJY2xvc2Uoc29ja2ZkKTsKIAkJCWNvbnRpbnVlOwogCQl9CkBAIC05MzYsMzUgKzgyNSwyOCBAQAogCXN0cnVjdCBwb2xsZmQgKnBmZDsKIAlpbnQgaTsKIAotCWlmIChwaXBlKGNoaWxkX2hhbmRsZXJfcGlwZSkgPCAwKQotCQlkaWUgKCJDb3VsZCBub3Qgc2V0IHVwIHBpcGUgZm9yIGNoaWxkIGhhbmRsZXIiKTsKLQotCXBmZCA9IHhjYWxsb2Moc29ja251bSArIDEsIHNpemVvZihzdHJ1Y3QgcG9sbGZkKSk7CisJcGZkID0geGNhbGxvYyhzb2NrbnVtLCBzaXplb2Yoc3RydWN0IHBvbGxmZCkpOwogCiAJZm9yIChpID0gMDsgaSA8IHNvY2tudW07IGkrKykgewogCQlwZmRbaV0uZmQgPSBzb2NrbGlzdFtpXTsKIAkJcGZkW2ldLmV2ZW50cyA9IFBPTExJTjsKIAl9Ci0JcGZkW3NvY2tudW1dLmZkID0gY2hpbGRfaGFuZGxlcl9waXBlWzBdOwotCXBmZFtzb2NrbnVtXS5ldmVudHMgPSBQT0xMSU47CiAKIAlzaWduYWwoU0lHQ0hMRCwgY2hpbGRfaGFuZGxlcik7CiAKIAlmb3IgKDs7KSB7CiAJCWludCBpOwogCi0JCWlmIChwb2xsKHBmZCwgc29ja251bSArIDEsIC0xKSA8IDApIHsKKwkJY2hlY2tfZGVhZF9jaGlsZHJlbigpOworCisJCWlmIChwb2xsKHBmZCwgc29ja251bSwgLTEpIDwgMCkgewogCQkJaWYgKGVycm5vICE9IEVJTlRSKSB7Ci0JCQkJZXJyb3IoInBvbGwgZmFpbGVkLCByZXN1bWluZzogJXMiLAorCQkJCWxvZ2Vycm9yKCJQb2xsIGZhaWxlZCwgcmVzdW1pbmc6ICVzIiwKIAkJCQkgICAgICBzdHJlcnJvcihlcnJubykpOwogCQkJCXNsZWVwKDEpOwogCQkJfQogCQkJY29udGludWU7CiAJCX0KLQkJaWYgKHBmZFtzb2NrbnVtXS5yZXZlbnRzICYgUE9MTElOKSB7Ci0JCQlyZWFkKGNoaWxkX2hhbmRsZXJfcGlwZVswXSwgJmksIDEpOwotCQkJY2hlY2tfZGVhZF9jaGlsZHJlbigpOwotCQl9CiAKIAkJZm9yIChpID0gMDsgaSA8IHNvY2tudW07IGkrKykgewogCQkJaWYgKHBmZFtpXS5yZXZlbnRzICYgUE9MTElOKSB7CkBAIC0xMDIyLDcgKzkwNCw3IEBACiAJRklMRSAqZiA9IGZvcGVuKHBhdGgsICJ3Iik7CiAJaWYgKCFmKQogCQlkaWUoImNhbm5vdCBvcGVuIHBpZCBmaWxlICVzOiAlcyIsIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7Ci0JaWYgKGZwcmludGYoZiwgIiVkXG4iLCBnZXRwaWQoKSkgPCAwIHx8IGZjbG9zZShmKSAhPSAwKQorCWlmIChmcHJpbnRmKGYsICIlIlBSSXVNQVgiXG4iLCAodWludG1heF90KSBnZXRwaWQoKSkgPCAwIHx8IGZjbG9zZShmKSAhPSAwKQogCQlkaWUoImZhaWxlZCB0byB3cml0ZSBwaWQgZmlsZSAlczogJXMiLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOwogfQogCkBAIC0xMDU1LDIxICs5MzcsMTIgQEAKIAlnaWRfdCBnaWQgPSAwOwogCWludCBpOwogCi0JLyogV2l0aG91dCB0aGlzIHdlIGNhbm5vdCByZWx5IG9uIHdhaXRwaWQoKSB0byB0ZWxsCi0JICogd2hhdCBoYXBwZW5lZCB0byBvdXIgY2hpbGRyZW4uCi0JICovCi0Jc2lnbmFsKFNJR0NITEQsIFNJR19ERkwpOwotCiAJZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykgewogCQljaGFyICphcmcgPSBhcmd2W2ldOwogCiAJCWlmICghcHJlZml4Y21wKGFyZywgIi0tbGlzdGVuPSIpKSB7Ci0JCSAgICBjaGFyICpwID0gYXJnICsgOTsKLQkJICAgIGNoYXIgKnBoID0gbGlzdGVuX2FkZHIgPSB4bWFsbG9jKHN0cmxlbihhcmcgKyA5KSArIDEpOwotCQkgICAgd2hpbGUgKCpwKQotCQkJKnBoKysgPSB0b2xvd2VyKCpwKyspOwotCQkgICAgKnBoID0gMDsKLQkJICAgIGNvbnRpbnVlOworCQkJbGlzdGVuX2FkZHIgPSB4c3RyZHVwX3RvbG93ZXIoYXJnICsgOSk7CisJCQljb250aW51ZTsKIAkJfQogCQlpZiAoIXByZWZpeGNtcChhcmcsICItLXBvcnQ9IikpIHsKIAkJCWNoYXIgKmVuZDsKQEAgLTExMDUsNiArOTc4LDEyIEBACiAJCQlpbml0X3RpbWVvdXQgPSBhdG9pKGFyZysxNSk7CiAJCQljb250aW51ZTsKIAkJfQorCQlpZiAoIXByZWZpeGNtcChhcmcsICItLW1heC1jb25uZWN0aW9ucz0iKSkgeworCQkJbWF4X2Nvbm5lY3Rpb25zID0gYXRvaShhcmcrMTgpOworCQkJaWYgKG1heF9jb25uZWN0aW9ucyA8IDApCisJCQkJbWF4X2Nvbm5lY3Rpb25zID0gMDsJICAgICAgICAvKiB1bmxpbWl0ZWQgKi8KKwkJCWNvbnRpbnVlOworCQl9CiAJCWlmICghc3RyY21wKGFyZywgIi0tc3RyaWN0LXBhdGhzIikpIHsKIAkJCXN0cmljdF9wYXRocyA9IDE7CiAJCQljb250aW51ZTsKQEAgLTExNzgsOSArMTA1NywxMSBAQAogCX0KIAogCWlmIChsb2dfc3lzbG9nKSB7Ci0JCW9wZW5sb2coImdpdC1kYWVtb24iLCAwLCBMT0dfREFFTU9OKTsKKwkJb3BlbmxvZygiZ2l0LWRhZW1vbiIsIExPR19QSUQsIExPR19EQUVNT04pOwogCQlzZXRfZGllX3JvdXRpbmUoZGFlbW9uX2RpZSk7Ci0JfQorCX0gZWxzZQorCQkvKiBhdm9pZCBzcGxpdHRpbmcgYSBtZXNzYWdlIGluIHRoZSBtaWRkbGUgKi8KKwkJc2V0dmJ1ZihzdGRlcnIsIE5VTEwsIF9JT0xCRiwgMCk7CiAKIAlpZiAoaW5ldGRfbW9kZSAmJiAoZ3JvdXBfbmFtZSB8fCB1c2VyX25hbWUpKQogCQlkaWUoIi0tdXNlciBhbmQgLS1ncm91cCBhcmUgaW5jb21wYXRpYmxlIHdpdGggLS1pbmV0ZCIpOwpAQCAtMTIxMiwyMCArMTA5MywxOCBAQAogCWlmIChzdHJpY3RfcGF0aHMgJiYgKCFva19wYXRocyB8fCAhKm9rX3BhdGhzKSkKIAkJZGllKCJvcHRpb24gLS1zdHJpY3QtcGF0aHMgcmVxdWlyZXMgYSB3aGl0ZWxpc3QiKTsKIAotCWlmIChiYXNlX3BhdGgpIHsKLQkJc3RydWN0IHN0YXQgc3Q7Ci0KLQkJaWYgKHN0YXQoYmFzZV9wYXRoLCAmc3QpIHx8ICFTX0lTRElSKHN0LnN0X21vZGUpKQotCQkJZGllKCJiYXNlLXBhdGggJyVzJyBkb2VzIG5vdCBleGlzdCBvciAiCi0JCQkgICAgImlzIG5vdCBhIGRpcmVjdG9yeSIsIGJhc2VfcGF0aCk7Ci0JfQorCWlmIChiYXNlX3BhdGggJiYgIWlzX2RpcmVjdG9yeShiYXNlX3BhdGgpKQorCQlkaWUoImJhc2UtcGF0aCAnJXMnIGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCBhIGRpcmVjdG9yeSIsCisJCSAgICBiYXNlX3BhdGgpOwogCiAJaWYgKGluZXRkX21vZGUpIHsKIAkJc3RydWN0IHNvY2thZGRyX3N0b3JhZ2Ugc3M7CiAJCXN0cnVjdCBzb2NrYWRkciAqcGVlciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikmc3M7CiAJCXNvY2tsZW5fdCBzbGVuID0gc2l6ZW9mKHNzKTsKIAotCQlmcmVvcGVuKCIvZGV2L251bGwiLCAidyIsIHN0ZGVycik7CisJCWlmICghZnJlb3BlbigiL2Rldi9udWxsIiwgInciLCBzdGRlcnIpKQorCQkJZGllKCJmYWlsZWQgdG8gcmVkaXJlY3Qgc3RkZXJyIHRvIC9kZXYvbnVsbDogJXMiLAorCQkJICAgIHN0cmVycm9yKGVycm5vKSk7CiAKIAkJaWYgKGdldHBlZXJuYW1lKDAsIHBlZXIsICZzbGVuKSkKIAkJCXBlZXIgPSBOVUxMOwpAQCAtMTIzMyw4ICsxMTEyLDEwIEBACiAJCXJldHVybiBleGVjdXRlKHBlZXIpOwogCX0KIAotCWlmIChkZXRhY2gpCisJaWYgKGRldGFjaCkgewogCQlkYWVtb25pemUoKTsKKwkJbG9naW5mbygiUmVhZHkgdG8gcnVtYmxlIik7CisJfQogCWVsc2UKIAkJc2FuaXRpemVfc3RkZmRzKCk7CiAKZGlmZiAtLWdpdCBhL2RpZmYtbGliLmMgYi9kaWZmLWxpYi5jCmluZGV4IGU3ZWFmZjkuLmFlOTZjNjQgMTAwNjQ0Ci0tLSBhL2RpZmYtbGliLmMKKysrIGIvZGlmZi1saWIuYwpAQCAtNjMsNiArNjMsOCBAQAogCQkJICAgICAgPyBDRV9NQVRDSF9SQUNZX0lTX0RJUlRZIDogMCk7CiAJY2hhciBzeW1jYWNoZVtQQVRIX01BWF07CiAKKwlkaWZmX3NldF9tbmVtb25pY19wcmVmaXgoJnJldnMtPmRpZmZvcHQsICJpLyIsICJ3LyIpOworCiAJaWYgKGRpZmZfdW5tZXJnZWRfc3RhZ2UgPCAwKQogCQlkaWZmX3VubWVyZ2VkX3N0YWdlID0gMjsKIAllbnRyaWVzID0gYWN0aXZlX25yOwpAQCAtNDY5LDYgKzQ3MSw3IEBACiAJaWYgKHVucGFja190cmVlcygxLCAmdCwgJm9wdHMpKQogCQlleGl0KDEyOCk7CiAKKwlkaWZmX3NldF9tbmVtb25pY19wcmVmaXgoJnJldnMtPmRpZmZvcHQsICJjLyIsIGNhY2hlZCA/ICJpLyIgOiAidy8iKTsKIAlkaWZmY29yZV9zdGQoJnJldnMtPmRpZmZvcHQpOwogCWRpZmZfZmx1c2goJnJldnMtPmRpZmZvcHQpOwogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZGlmZi1uby1pbmRleC5jIGIvZGlmZi1uby1pbmRleC5jCmluZGV4IDdkNjhiN2YuLjJkNTQxZDkgMTAwNjQ0Ci0tLSBhL2RpZmYtbm8taW5kZXguYworKysgYi9kaWZmLW5vLWluZGV4LmMKQEAgLTE3Myw4ICsxNzMsMTAgQEAKIAogCS8qIFdlcmUgd2UgYXNrZWQgdG8gZG8gLS1uby1pbmRleCBleHBsaWNpdGx5PyAqLwogCWZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspIHsKLQkJaWYgKCFzdHJjbXAoYXJndltpXSwgIi0tIikpCi0JCQlyZXR1cm47CisJCWlmICghc3RyY21wKGFyZ3ZbaV0sICItLSIpKSB7CisJCQlpKys7CisJCQlicmVhazsKKwkJfQogCQlpZiAoIXN0cmNtcChhcmd2W2ldLCAiLS1uby1pbmRleCIpKQogCQkJbm9faW5kZXggPSAxOwogCQlpZiAoYXJndltpXVswXSAhPSAnLScpCkBAIC0xOTgsMTMgKzIwMCw2IEBACiAJCWRpZSgiZ2l0IGRpZmYgJXMgdGFrZXMgdHdvIHBhdGhzIiwKIAkJICAgIG5vX2luZGV4ID8gIi0tbm8taW5kZXgiIDogIlstLW5vLWluZGV4XSIpOwogCi0JLyoKLQkgKiBJZiB0aGUgdXNlciBhc2tlZCBmb3Igb3VyIGV4aXQgY29kZSB0aGVuIGRvbid0IHN0YXJ0IGEKLQkgKiBwYWdlciBvciB3ZSB3b3VsZCBlbmQgdXAgcmVwb3J0aW5nIGl0cyBleGl0IGNvZGUgaW5zdGVhZC4KLQkgKi8KLQlpZiAoIURJRkZfT1BUX1RTVCgmcmV2cy0+ZGlmZm9wdCwgRVhJVF9XSVRIX1NUQVRVUykpCi0JCXNldHVwX3BhZ2VyKCk7Ci0KIAlkaWZmX3NldHVwKCZyZXZzLT5kaWZmb3B0KTsKIAlpZiAoIXJldnMtPmRpZmZvcHQub3V0cHV0X2Zvcm1hdCkKIAkJcmV2cy0+ZGlmZm9wdC5vdXRwdXRfZm9ybWF0ID0gRElGRl9GT1JNQVRfUEFUQ0g7CkBAIC0yMTIsOCArMjA3LDEyIEBACiAJCWludCBqOwogCQlpZiAoIXN0cmNtcChhcmd2W2ldLCAiLS1uby1pbmRleCIpKQogCQkJaSsrOwotCQllbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0sICItcSIpKQorCQllbHNlIGlmICghc3RyY21wKGFyZ3ZbaV0sICItcSIpKSB7CiAJCQlvcHRpb25zIHw9IERJRkZfU0lMRU5UX09OX1JFTU9WRUQ7CisJCQlpKys7CisJCX0KKwkJZWxzZSBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLS0iKSkKKwkJCWkrKzsKIAkJZWxzZSB7CiAJCQlqID0gZGlmZl9vcHRfcGFyc2UoJnJldnMtPmRpZmZvcHQsIGFyZ3YgKyBpLCBhcmdjIC0gaSk7CiAJCQlpZiAoIWopCkBAIC0yMjIsNiArMjIxLDEzIEBACiAJCX0KIAl9CiAKKwkvKgorCSAqIElmIHRoZSB1c2VyIGFza2VkIGZvciBvdXIgZXhpdCBjb2RlIHRoZW4gZG9uJ3Qgc3RhcnQgYQorCSAqIHBhZ2VyIG9yIHdlIHdvdWxkIGVuZCB1cCByZXBvcnRpbmcgaXRzIGV4aXQgY29kZSBpbnN0ZWFkLgorCSAqLworCWlmICghRElGRl9PUFRfVFNUKCZyZXZzLT5kaWZmb3B0LCBFWElUX1dJVEhfU1RBVFVTKSkKKwkJc2V0dXBfcGFnZXIoKTsKKwogCWlmIChwcmVmaXgpIHsKIAkJaW50IGxlbiA9IHN0cmxlbihwcmVmaXgpOwogCkBAIC0yNDEsNiArMjQ3LDcgQEAKIAllbHNlCiAJCXJldnMtPmRpZmZvcHQucGF0aHMgPSBhcmd2ICsgYXJnYyAtIDI7CiAJcmV2cy0+ZGlmZm9wdC5ucl9wYXRocyA9IDI7CisJcmV2cy0+ZGlmZm9wdC5za2lwX3N0YXRfdW5tYXRjaCA9IDE7CiAKIAlESUZGX09QVF9TRVQoJnJldnMtPmRpZmZvcHQsIEVYSVRfV0lUSF9TVEFUVVMpOwogCURJRkZfT1BUX1NFVCgmcmV2cy0+ZGlmZm9wdCwgTk9fSU5ERVgpOwpAQCAtMjUyLDYgKzI1OSw3IEBACiAJaWYgKHF1ZXVlX2RpZmYoJnJldnMtPmRpZmZvcHQsIHJldnMtPmRpZmZvcHQucGF0aHNbMF0sCiAJCSAgICAgICByZXZzLT5kaWZmb3B0LnBhdGhzWzFdKSkKIAkJZXhpdCgxKTsKKwlkaWZmX3NldF9tbmVtb25pY19wcmVmaXgoJnJldnMtPmRpZmZvcHQsICIxLyIsICIyLyIpOwogCWRpZmZjb3JlX3N0ZCgmcmV2cy0+ZGlmZm9wdCk7CiAJZGlmZl9mbHVzaCgmcmV2cy0+ZGlmZm9wdCk7CiAKZGlmZiAtLWdpdCBhL2RpZmYuYyBiL2RpZmYuYwppbmRleCA2ZmVhM2MwLi40MTZjNWFhIDEwMDY0NAotLS0gYS9kaWZmLmMKKysrIGIvZGlmZi5jCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSAiYXR0ci5oIgogI2luY2x1ZGUgInJ1bi1jb21tYW5kLmgiCiAjaW5jbHVkZSAidXRmOC5oIgorI2luY2x1ZGUgInVzZXJkaWZmLmgiCiAKICNpZmRlZiBOT19GQVNUX1dPUktJTkdfRElSRUNUT1JZCiAjZGVmaW5lIEZBU1RfV09SS0lOR19ESVJFQ1RPUlkgMApAQCAtMjAsOSArMjEsMTEgQEAKIAogc3RhdGljIGludCBkaWZmX2RldGVjdF9yZW5hbWVfZGVmYXVsdDsKIHN0YXRpYyBpbnQgZGlmZl9yZW5hbWVfbGltaXRfZGVmYXVsdCA9IDIwMDsKK3N0YXRpYyBpbnQgZGlmZl9zdXBwcmVzc19ibGFua19lbXB0eTsKIGludCBkaWZmX3VzZV9jb2xvcl9kZWZhdWx0ID0gLTE7CiBzdGF0aWMgY29uc3QgY2hhciAqZXh0ZXJuYWxfZGlmZl9jbWRfY2ZnOwogaW50IGRpZmZfYXV0b19yZWZyZXNoX2luZGV4ID0gMTsKK3N0YXRpYyBpbnQgZGlmZl9tbmVtb25pY19wcmVmaXg7CiAKIHN0YXRpYyBjaGFyIGRpZmZfY29sb3JzW11bQ09MT1JfTUFYTEVOXSA9IHsKIAkiXDAzM1ttIiwJLyogcmVzZXQgKi8KQEAgLTM1LDYgKzM4LDkgQEAKIAkiXDAzM1s0MW0iLAkvKiBXSElURVNQQUNFIChyZWQgYmFja2dyb3VuZCkgKi8KIH07CiAKK3N0YXRpYyB2b2lkIGRpZmZfZmlsZXNwZWNfbG9hZF9kcml2ZXIoc3RydWN0IGRpZmZfZmlsZXNwZWMgKm9uZSk7CitzdGF0aWMgY2hhciAqcnVuX3RleHRjb252KGNvbnN0IGNoYXIgKiwgc3RydWN0IGRpZmZfZmlsZXNwZWMgKiwgc2l6ZV90ICopOworCiBzdGF0aWMgaW50IHBhcnNlX2RpZmZfY29sb3Jfc2xvdChjb25zdCBjaGFyICp2YXIsIGludCBvZnMpCiB7CiAJaWYgKCFzdHJjYXNlY21wKHZhcitvZnMsICJwbGFpbiIpKQpAQCAtNTQsODAgKzYwLDYgQEAKIAlkaWUoImJhZCBjb25maWcgdmFyaWFibGUgJyVzJyIsIHZhcik7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgbGxfZGlmZl9kcml2ZXIgewotCWNvbnN0IGNoYXIgKm5hbWU7Ci0Jc3RydWN0IGxsX2RpZmZfZHJpdmVyICpuZXh0OwotCWNvbnN0IGNoYXIgKmNtZDsKLX0gKnVzZXJfZGlmZiwgKip1c2VyX2RpZmZfdGFpbDsKLQotLyoKLSAqIEN1cnJlbnRseSB0aGVyZSBpcyBvbmx5ICJkaWZmLjxkcml2ZXJuYW1lPi5jb21tYW5kIiB2YXJpYWJsZTsKLSAqIGJlY2F1c2UgdGhlcmUgYXJlICJkaWZmLmNvbG9yLjxzbG90PiIgdmFyaWFibGVzLCB3ZSBhcmUgcGFyc2luZwotICogdGhpcyBpbiBhIGJpdCBjb252b2x1dGVkIHdheSB0byBhbGxvdyBsb3cgbGV2ZWwgZGlmZiBkcml2ZXIKLSAqIGNhbGxlZCAiY29sb3IiLgotICovCi1zdGF0aWMgaW50IHBhcnNlX2xsZGlmZl9jb21tYW5kKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqZXAsIGNvbnN0IGNoYXIgKnZhbHVlKQotewotCWNvbnN0IGNoYXIgKm5hbWU7Ci0JaW50IG5hbWVsZW47Ci0Jc3RydWN0IGxsX2RpZmZfZHJpdmVyICpkcnY7Ci0KLQluYW1lID0gdmFyICsgNTsKLQluYW1lbGVuID0gZXAgLSBuYW1lOwotCWZvciAoZHJ2ID0gdXNlcl9kaWZmOyBkcnY7IGRydiA9IGRydi0+bmV4dCkKLQkJaWYgKCFzdHJuY21wKGRydi0+bmFtZSwgbmFtZSwgbmFtZWxlbikgJiYgIWRydi0+bmFtZVtuYW1lbGVuXSkKLQkJCWJyZWFrOwotCWlmICghZHJ2KSB7Ci0JCWRydiA9IHhjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBsbF9kaWZmX2RyaXZlcikpOwotCQlkcnYtPm5hbWUgPSB4bWVtZHVweihuYW1lLCBuYW1lbGVuKTsKLQkJaWYgKCF1c2VyX2RpZmZfdGFpbCkKLQkJCXVzZXJfZGlmZl90YWlsID0gJnVzZXJfZGlmZjsKLQkJKnVzZXJfZGlmZl90YWlsID0gZHJ2OwotCQl1c2VyX2RpZmZfdGFpbCA9ICYoZHJ2LT5uZXh0KTsKLQl9Ci0KLQlyZXR1cm4gZ2l0X2NvbmZpZ19zdHJpbmcoJihkcnYtPmNtZCksIHZhciwgdmFsdWUpOwotfQotCi0vKgotICogJ2RpZmYuPHdoYXQ+LmZ1bmNuYW1lJyBhdHRyaWJ1dGUgY2FuIGJlIHNwZWNpZmllZCBpbiB0aGUgY29uZmlndXJhdGlvbgotICogdG8gZGVmaW5lIGEgY3VzdG9taXplZCByZWdleHAgdG8gZmluZCB0aGUgYmVnaW5uaW5nIG9mIGEgZnVuY3Rpb24gdG8KLSAqIGJlIHVzZWQgZm9yIGh1bmsgaGVhZGVyIGxpbmVzIG9mICJkaWZmIC1wIiBzdHlsZSBvdXRwdXQuCi0gKi8KLXN0cnVjdCBmdW5jbmFtZV9wYXR0ZXJuX2VudHJ5IHsKLQljaGFyICpuYW1lOwotCWNoYXIgKnBhdHRlcm47Ci0JaW50IGNmbGFnczsKLX07Ci1zdGF0aWMgc3RydWN0IGZ1bmNuYW1lX3BhdHRlcm5fbGlzdCB7Ci0Jc3RydWN0IGZ1bmNuYW1lX3BhdHRlcm5fbGlzdCAqbmV4dDsKLQlzdHJ1Y3QgZnVuY25hbWVfcGF0dGVybl9lbnRyeSBlOwotfSAqZnVuY25hbWVfcGF0dGVybl9saXN0OwotCi1zdGF0aWMgaW50IHBhcnNlX2Z1bmNuYW1lX3BhdHRlcm4oY29uc3QgY2hhciAqdmFyLCBjb25zdCBjaGFyICplcCwgY29uc3QgY2hhciAqdmFsdWUsIGludCBjZmxhZ3MpCi17Ci0JY29uc3QgY2hhciAqbmFtZTsKLQlpbnQgbmFtZWxlbjsKLQlzdHJ1Y3QgZnVuY25hbWVfcGF0dGVybl9saXN0ICpwcDsKLQotCW5hbWUgPSB2YXIgKyA1OyAvKiAiZGlmZi4iICovCi0JbmFtZWxlbiA9IGVwIC0gbmFtZTsKLQotCWZvciAocHAgPSBmdW5jbmFtZV9wYXR0ZXJuX2xpc3Q7IHBwOyBwcCA9IHBwLT5uZXh0KQotCQlpZiAoIXN0cm5jbXAocHAtPmUubmFtZSwgbmFtZSwgbmFtZWxlbikgJiYgIXBwLT5lLm5hbWVbbmFtZWxlbl0pCi0JCQlicmVhazsKLQlpZiAoIXBwKSB7Ci0JCXBwID0geGNhbGxvYygxLCBzaXplb2YoKnBwKSk7Ci0JCXBwLT5lLm5hbWUgPSB4bWVtZHVweihuYW1lLCBuYW1lbGVuKTsKLQkJcHAtPm5leHQgPSBmdW5jbmFtZV9wYXR0ZXJuX2xpc3Q7Ci0JCWZ1bmNuYW1lX3BhdHRlcm5fbGlzdCA9IHBwOwotCX0KLQlmcmVlKHBwLT5lLnBhdHRlcm4pOwotCXBwLT5lLnBhdHRlcm4gPSB4c3RyZHVwKHZhbHVlKTsKLQlwcC0+ZS5jZmxhZ3MgPSBjZmxhZ3M7Ci0JcmV0dXJuIDA7Ci19Ci0KIC8qCiAgKiBUaGVzZSBhcmUgdG8gZ2l2ZSBVSSBsYXllciBkZWZhdWx0cy4KICAqIFRoZSBjb3JlLWxldmVsIGNvbW1hbmRzIHN1Y2ggYXMgZ2l0LWRpZmYtZmlsZXMgc2hvdWxkCkBAIC0xNTQsMTQgKzg2LDEyIEBACiAJCWRpZmZfYXV0b19yZWZyZXNoX2luZGV4ID0gZ2l0X2NvbmZpZ19ib29sKHZhciwgdmFsdWUpOwogCQlyZXR1cm4gMDsKIAl9CisJaWYgKCFzdHJjbXAodmFyLCAiZGlmZi5tbmVtb25pY3ByZWZpeCIpKSB7CisJCWRpZmZfbW5lbW9uaWNfcHJlZml4ID0gZ2l0X2NvbmZpZ19ib29sKHZhciwgdmFsdWUpOworCQlyZXR1cm4gMDsKKwl9CiAJaWYgKCFzdHJjbXAodmFyLCAiZGlmZi5leHRlcm5hbCIpKQogCQlyZXR1cm4gZ2l0X2NvbmZpZ19zdHJpbmcoJmV4dGVybmFsX2RpZmZfY21kX2NmZywgdmFyLCB2YWx1ZSk7Ci0JaWYgKCFwcmVmaXhjbXAodmFyLCAiZGlmZi4iKSkgewotCQljb25zdCBjaGFyICplcCA9IHN0cnJjaHIodmFyLCAnLicpOwotCi0JCWlmIChlcCAhPSB2YXIgKyA0ICYmICFzdHJjbXAoZXAsICIuY29tbWFuZCIpKQotCQkJcmV0dXJuIHBhcnNlX2xsZGlmZl9jb21tYW5kKHZhciwgZXAsIHZhbHVlKTsKLQl9CiAKIAlyZXR1cm4gZ2l0X2RpZmZfYmFzaWNfY29uZmlnKHZhciwgdmFsdWUsIGNiKTsKIH0KQEAgLTE3Myw2ICsxMDMsMTIgQEAKIAkJcmV0dXJuIDA7CiAJfQogCisJc3dpdGNoICh1c2VyZGlmZl9jb25maWcodmFyLCB2YWx1ZSkpIHsKKwkJY2FzZSAwOiBicmVhazsKKwkJY2FzZSAtMTogcmV0dXJuIC0xOworCQlkZWZhdWx0OiByZXR1cm4gMDsKKwl9CisKIAlpZiAoIXByZWZpeGNtcCh2YXIsICJkaWZmLmNvbG9yLiIpIHx8ICFwcmVmaXhjbXAodmFyLCAiY29sb3IuZGlmZi4iKSkgewogCQlpbnQgc2xvdCA9IHBhcnNlX2RpZmZfY29sb3Jfc2xvdCh2YXIsIDExKTsKIAkJaWYgKCF2YWx1ZSkKQEAgLTE4MSwyMSArMTE3LDEyIEBACiAJCXJldHVybiAwOwogCX0KIAotCWlmICghcHJlZml4Y21wKHZhciwgImRpZmYuIikpIHsKLQkJY29uc3QgY2hhciAqZXAgPSBzdHJyY2hyKHZhciwgJy4nKTsKLQkJaWYgKGVwICE9IHZhciArIDQpIHsKLQkJCWlmICghc3RyY21wKGVwLCAiLmZ1bmNuYW1lIikpIHsKLQkJCQlpZiAoIXZhbHVlKQotCQkJCQlyZXR1cm4gY29uZmlnX2Vycm9yX25vbmJvb2wodmFyKTsKLQkJCQlyZXR1cm4gcGFyc2VfZnVuY25hbWVfcGF0dGVybih2YXIsIGVwLCB2YWx1ZSwKLQkJCQkJMCk7Ci0JCQl9IGVsc2UgaWYgKCFzdHJjbXAoZXAsICIueGZ1bmNuYW1lIikpIHsKLQkJCQlpZiAoIXZhbHVlKQotCQkJCQlyZXR1cm4gY29uZmlnX2Vycm9yX25vbmJvb2wodmFyKTsKLQkJCQlyZXR1cm4gcGFyc2VfZnVuY25hbWVfcGF0dGVybih2YXIsIGVwLCB2YWx1ZSwKLQkJCQkJUkVHX0VYVEVOREVEKTsKLQkJCX0KLQkJfQorCS8qIGxpa2UgR05VIGRpZmYncyAtLXN1cHByZXNzLWJsYW5rLWVtcHR5IG9wdGlvbiAgKi8KKwlpZiAoIXN0cmNtcCh2YXIsICJkaWZmLnN1cHByZXNzYmxhbmtlbXB0eSIpIHx8CisJCQkvKiBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgKi8KKwkJCSFzdHJjbXAodmFyLCAiZGlmZi5zdXBwcmVzcy1ibGFuay1lbXB0eSIpKSB7CisJCWRpZmZfc3VwcHJlc3NfYmxhbmtfZW1wdHkgPSBnaXRfY29uZmlnX2Jvb2wodmFyLCB2YWx1ZSk7CisJCXJldHVybiAwOwogCX0KIAogCXJldHVybiBnaXRfY29sb3JfZGVmYXVsdF9jb25maWcodmFyLCB2YWx1ZSwgY2IpOwpAQCAtMjA1LDkgKzEzMiw4IEBACiB7CiAJaW50IG5lZWRfb25lID0gcXVvdGVfY19zdHlsZShvbmUsIE5VTEwsIE5VTEwsIDEpOwogCWludCBuZWVkX3R3byA9IHF1b3RlX2Nfc3R5bGUodHdvLCBOVUxMLCBOVUxMLCAxKTsKLQlzdHJ1Y3Qgc3RyYnVmIHJlczsKKwlzdHJ1Y3Qgc3RyYnVmIHJlcyA9IFNUUkJVRl9JTklUOwogCi0Jc3RyYnVmX2luaXQoJnJlcywgMCk7CiAJaWYgKG5lZWRfb25lICsgbmVlZF90d28pIHsKIAkJc3RyYnVmX2FkZGNoKCZyZXMsICciJyk7CiAJCXF1b3RlX2Nfc3R5bGUob25lLCAmcmVzLCBOVUxMLCAxKTsKQEAgLTMwNSw2ICsyMzEsOCBAQAogCQkJICAgICAgY29uc3QgY2hhciAqbmFtZV9iLAogCQkJICAgICAgc3RydWN0IGRpZmZfZmlsZXNwZWMgKm9uZSwKIAkJCSAgICAgIHN0cnVjdCBkaWZmX2ZpbGVzcGVjICp0d28sCisJCQkgICAgICBjb25zdCBjaGFyICp0ZXh0Y29udl9vbmUsCisJCQkgICAgICBjb25zdCBjaGFyICp0ZXh0Y29udl90d28sCiAJCQkgICAgICBzdHJ1Y3QgZGlmZl9vcHRpb25zICpvKQogewogCWludCBsY19hLCBsY19iOwpAQCAtMzE2LDYgKzI0NCwxNyBAQAogCWNvbnN0IGNoYXIgKm5ldyA9IGRpZmZfZ2V0X2NvbG9yKGNvbG9yX2RpZmYsIERJRkZfRklMRV9ORVcpOwogCWNvbnN0IGNoYXIgKnJlc2V0ID0gZGlmZl9nZXRfY29sb3IoY29sb3JfZGlmZiwgRElGRl9SRVNFVCk7CiAJc3RhdGljIHN0cnVjdCBzdHJidWYgYV9uYW1lID0gU1RSQlVGX0lOSVQsIGJfbmFtZSA9IFNUUkJVRl9JTklUOworCWNvbnN0IGNoYXIgKmFfcHJlZml4LCAqYl9wcmVmaXg7CisJY29uc3QgY2hhciAqZGF0YV9vbmUsICpkYXRhX3R3bzsKKwlzaXplX3Qgc2l6ZV9vbmUsIHNpemVfdHdvOworCisJaWYgKGRpZmZfbW5lbW9uaWNfcHJlZml4ICYmIERJRkZfT1BUX1RTVChvLCBSRVZFUlNFX0RJRkYpKSB7CisJCWFfcHJlZml4ID0gby0+Yl9wcmVmaXg7CisJCWJfcHJlZml4ID0gby0+YV9wcmVmaXg7CisJfSBlbHNlIHsKKwkJYV9wcmVmaXggPSBvLT5hX3ByZWZpeDsKKwkJYl9wcmVmaXggPSBvLT5iX3ByZWZpeDsKKwl9CiAKIAluYW1lX2EgKz0gKCpuYW1lX2EgPT0gJy8nKTsKIAluYW1lX2IgKz0gKCpuYW1lX2IgPT0gJy8nKTsKQEAgLTMyNCwxMyArMjYzLDMyIEBACiAKIAlzdHJidWZfcmVzZXQoJmFfbmFtZSk7CiAJc3RyYnVmX3Jlc2V0KCZiX25hbWUpOwotCXF1b3RlX3R3b19jX3N0eWxlKCZhX25hbWUsIG8tPmFfcHJlZml4LCBuYW1lX2EsIDApOwotCXF1b3RlX3R3b19jX3N0eWxlKCZiX25hbWUsIG8tPmJfcHJlZml4LCBuYW1lX2IsIDApOworCXF1b3RlX3R3b19jX3N0eWxlKCZhX25hbWUsIGFfcHJlZml4LCBuYW1lX2EsIDApOworCXF1b3RlX3R3b19jX3N0eWxlKCZiX25hbWUsIGJfcHJlZml4LCBuYW1lX2IsIDApOwogCiAJZGlmZl9wb3B1bGF0ZV9maWxlc3BlYyhvbmUsIDApOwogCWRpZmZfcG9wdWxhdGVfZmlsZXNwZWModHdvLCAwKTsKLQlsY19hID0gY291bnRfbGluZXMob25lLT5kYXRhLCBvbmUtPnNpemUpOwotCWxjX2IgPSBjb3VudF9saW5lcyh0d28tPmRhdGEsIHR3by0+c2l6ZSk7CisJaWYgKHRleHRjb252X29uZSkgeworCQlkYXRhX29uZSA9IHJ1bl90ZXh0Y29udih0ZXh0Y29udl9vbmUsIG9uZSwgJnNpemVfb25lKTsKKwkJaWYgKCFkYXRhX29uZSkKKwkJCWRpZSgidW5hYmxlIHRvIHJlYWQgZmlsZXMgdG8gZGlmZiIpOworCX0KKwllbHNlIHsKKwkJZGF0YV9vbmUgPSBvbmUtPmRhdGE7CisJCXNpemVfb25lID0gb25lLT5zaXplOworCX0KKwlpZiAodGV4dGNvbnZfdHdvKSB7CisJCWRhdGFfdHdvID0gcnVuX3RleHRjb252KHRleHRjb252X3R3bywgdHdvLCAmc2l6ZV90d28pOworCQlpZiAoIWRhdGFfdHdvKQorCQkJZGllKCJ1bmFibGUgdG8gcmVhZCBmaWxlcyB0byBkaWZmIik7CisJfQorCWVsc2UgeworCQlkYXRhX3R3byA9IHR3by0+ZGF0YTsKKwkJc2l6ZV90d28gPSB0d28tPnNpemU7CisJfQorCisJbGNfYSA9IGNvdW50X2xpbmVzKGRhdGFfb25lLCBzaXplX29uZSk7CisJbGNfYiA9IGNvdW50X2xpbmVzKGRhdGFfdHdvLCBzaXplX3R3byk7CiAJZnByaW50ZihvLT5maWxlLAogCQkiJXMtLS0gJXMlcyVzXG4lcysrKyAlcyVzJXNcbiVzQEAgLSIsCiAJCW1ldGFpbmZvLCBhX25hbWUuYnVmLCBuYW1lX2FfdGFiLCByZXNldCwKQEAgLTM0MCw5ICsyOTgsOSBAQAogCXByaW50X2xpbmVfY291bnQoby0+ZmlsZSwgbGNfYik7CiAJZnByaW50ZihvLT5maWxlLCAiIEBAJXNcbiIsIHJlc2V0KTsKIAlpZiAobGNfYSkKLQkJY29weV9maWxlX3dpdGhfcHJlZml4KG8tPmZpbGUsICctJywgb25lLT5kYXRhLCBvbmUtPnNpemUsIG9sZCwgcmVzZXQpOworCQljb3B5X2ZpbGVfd2l0aF9wcmVmaXgoby0+ZmlsZSwgJy0nLCBkYXRhX29uZSwgc2l6ZV9vbmUsIG9sZCwgcmVzZXQpOwogCWlmIChsY19iKQotCQljb3B5X2ZpbGVfd2l0aF9wcmVmaXgoby0+ZmlsZSwgJysnLCB0d28tPmRhdGEsIHR3by0+c2l6ZSwgbmV3LCByZXNldCk7CisJCWNvcHlfZmlsZV93aXRoX3ByZWZpeChvLT5maWxlLCAnKycsIGRhdGFfdHdvLCBzaXplX3R3bywgbmV3LCByZXNldCk7CiB9CiAKIHN0YXRpYyBpbnQgZmlsbF9tbWZpbGUobW1maWxlX3QgKm1mLCBzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqb25lKQpAQCAtMzU0LDYgKzMxMiw3IEBACiAJfQogCWVsc2UgaWYgKGRpZmZfcG9wdWxhdGVfZmlsZXNwZWMob25lLCAwKSkKIAkJcmV0dXJuIC0xOworCiAJbWYtPnB0ciA9IG9uZS0+ZGF0YTsKIAltZi0+c2l6ZSA9IG9uZS0+c2l6ZTsKIAlyZXR1cm4gMDsKQEAgLTM4MCw3ICszMzksNiBAQAogfQogCiBzdHJ1Y3QgZGlmZl93b3Jkc19kYXRhIHsKLQlzdHJ1Y3QgeGRpZmZfZW1pdF9zdGF0ZSB4bTsKIAlzdHJ1Y3QgZGlmZl93b3Jkc19idWZmZXIgbWludXMsIHBsdXM7CiAJRklMRSAqZmlsZTsKIH07CkBAIC00NTEsNiArNDA5LDcgQEAKIAltbWZpbGVfdCBtaW51cywgcGx1czsKIAlpbnQgaTsKIAorCW1lbXNldCgmeHBwLCAwLCBzaXplb2YoeHBwKSk7CiAJbWVtc2V0KCZ4ZWNmZywgMCwgc2l6ZW9mKHhlY2ZnKSk7CiAJbWludXMuc2l6ZSA9IGRpZmZfd29yZHMtPm1pbnVzLnRleHQuc2l6ZTsKIAltaW51cy5wdHIgPSB4bWFsbG9jKG1pbnVzLnNpemUpOwpAQCAtNDcwLDExICs0MjksOCBAQAogCiAJeHBwLmZsYWdzID0gWERGX05FRURfTUlOSU1BTDsKIAl4ZWNmZy5jdHhsZW4gPSBkaWZmX3dvcmRzLT5taW51cy5hbGxvYyArIGRpZmZfd29yZHMtPnBsdXMuYWxsb2M7Ci0JZWNiLm91dGYgPSB4ZGlmZl9vdXRmOwotCWVjYi5wcml2ID0gZGlmZl93b3JkczsKLQlkaWZmX3dvcmRzLT54bS5jb25zdW1lID0gZm5fb3V0X2RpZmZfd29yZHNfYXV4OwotCXhkaV9kaWZmKCZtaW51cywgJnBsdXMsICZ4cHAsICZ4ZWNmZywgJmVjYik7Ci0KKwl4ZGlfZGlmZl9vdXRmKCZtaW51cywgJnBsdXMsIGZuX291dF9kaWZmX3dvcmRzX2F1eCwgZGlmZl93b3JkcywKKwkJICAgICAgJnhwcCwgJnhlY2ZnLCAmZWNiKTsKIAlmcmVlKG1pbnVzLnB0cik7CiAJZnJlZShwbHVzLnB0cik7CiAJZGlmZl93b3Jkcy0+bWludXMudGV4dC5zaXplID0gZGlmZl93b3Jkcy0+cGx1cy50ZXh0LnNpemUgPSAwOwpAQCAtNDg4LDcgKzQ0NCw2IEBACiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgKCpzYW5lX3RydW5jYXRlX2ZuKShjaGFyICpsaW5lLCB1bnNpZ25lZCBsb25nIGxlbik7CiAKIHN0cnVjdCBlbWl0X2NhbGxiYWNrIHsKLQlzdHJ1Y3QgeGRpZmZfZW1pdF9zdGF0ZSB4bTsKIAlpbnQgbnBhcmVudHMsIGNvbG9yX2RpZmY7CiAJdW5zaWduZWQgd3NfcnVsZTsKIAlzYW5lX3RydW5jYXRlX2ZuIHRydW5jYXRlOwpAQCAtNTk4LDYgKzU1MywxMiBAQAogCQllY2JkYXRhLT5sYWJlbF9wYXRoWzBdID0gZWNiZGF0YS0+bGFiZWxfcGF0aFsxXSA9IE5VTEw7CiAJfQogCisJaWYgKGRpZmZfc3VwcHJlc3NfYmxhbmtfZW1wdHkKKwkgICAgJiYgbGVuID09IDIgJiYgbGluZVswXSA9PSAnICcgJiYgbGluZVsxXSA9PSAnXG4nKSB7CisJCWxpbmVbMF0gPSAnXG4nOworCQlsZW4gPSAxOworCX0KKwogCS8qIFRoaXMgaXMgbm90IHJlYWxseSBuZWNlc3NhcnkgZm9yIG5vdyBiZWNhdXNlCiAJICogdGhpcyBjb2RlcGF0aCBvbmx5IGRlYWxzIHdpdGggdHdvLXdheSBkaWZmcy4KIAkgKi8KQEAgLTY2MSw3ICs2MjIsNyBAQAogewogCWNvbnN0IGNoYXIgKm9sZCA9IGE7CiAJY29uc3QgY2hhciAqbmV3ID0gYjsKLQlzdHJ1Y3Qgc3RyYnVmIG5hbWU7CisJc3RydWN0IHN0cmJ1ZiBuYW1lID0gU1RSQlVGX0lOSVQ7CiAJaW50IHBmeF9sZW5ndGgsIHNmeF9sZW5ndGg7CiAJaW50IGxlbl9hID0gc3RybGVuKGEpOwogCWludCBsZW5fYiA9IHN0cmxlbihiKTsKQEAgLTY2OSw3ICs2MzAsNiBAQAogCWludCBxbGVuX2EgPSBxdW90ZV9jX3N0eWxlKGEsIE5VTEwsIE5VTEwsIDApOwogCWludCBxbGVuX2IgPSBxdW90ZV9jX3N0eWxlKGIsIE5VTEwsIE5VTEwsIDApOwogCi0Jc3RyYnVmX2luaXQoJm5hbWUsIDApOwogCWlmIChxbGVuX2EgfHwgcWxlbl9iKSB7CiAJCXF1b3RlX2Nfc3R5bGUoYSwgJm5hbWUsIE5VTEwsIDApOwogCQlzdHJidWZfYWRkc3RyKCZuYW1lLCAiID0+ICIpOwpAQCAtNzI2LDggKzY4Niw2IEBACiB9CiAKIHN0cnVjdCBkaWZmc3RhdF90IHsKLQlzdHJ1Y3QgeGRpZmZfZW1pdF9zdGF0ZSB4bTsKLQogCWludCBucjsKIAlpbnQgYWxsb2M7CiAJc3RydWN0IGRpZmZzdGF0X2ZpbGUgewpAQCAtODE0LDggKzc3Miw3IEBACiAJCXJldHVybjsKIAogCWlmICghZmlsZS0+aXNfcmVuYW1lZCkgewotCQlzdHJ1Y3Qgc3RyYnVmIGJ1ZjsKLQkJc3RyYnVmX2luaXQoJmJ1ZiwgMCk7CisJCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAJCWlmIChxdW90ZV9jX3N0eWxlKGZpbGUtPm5hbWUsICZidWYsIE5VTEwsIDApKSB7CiAJCQlwbmFtZSA9IHN0cmJ1Zl9kZXRhY2goJmJ1ZiwgTlVMTCk7CiAJCX0gZWxzZSB7CkBAIC0xMTIyLDkgKzEwNzksMTMgQEAKIAkJLyoKIAkJICogT3JpZ2luYWwgbWludXMgY29waWVkIGlzIHRoZSByZW1vdmVkIG1hdGVyaWFsLAogCQkgKiBhZGRlZCBpcyB0aGUgbmV3IG1hdGVyaWFsLiAgVGhleSBhcmUgYm90aCBkYW1hZ2VzCi0JCSAqIG1hZGUgdG8gdGhlIHByZWltYWdlLgorCQkgKiBtYWRlIHRvIHRoZSBwcmVpbWFnZS4gSW4gLS1kaXJzdGF0LWJ5LWZpbGUgbW9kZSwgY291bnQKKwkJICogZGFtYWdlZCBmaWxlcywgbm90IGRhbWFnZWQgbGluZXMuIFRoaXMgaXMgZG9uZSBieQorCQkgKiBjb3VudGluZyBvbmx5IGEgc2luZ2xlIGRhbWFnZWQgbGluZSBwZXIgZmlsZS4KIAkJICovCiAJCWRhbWFnZSA9IChwLT5vbmUtPnNpemUgLSBjb3BpZWQpICsgYWRkZWQ7CisJCWlmIChESUZGX09QVF9UU1Qob3B0aW9ucywgRElSU1RBVF9CWV9GSUxFKSAmJiBkYW1hZ2UgPiAwKQorCQkJZGFtYWdlID0gMTsKIAogCQlBTExPQ19HUk9XKGRpci5maWxlcywgZGlyLm5yICsgMSwgZGlyLmFsbG9jKTsKIAkJZGlyLmZpbGVzW2Rpci5ucl0ubmFtZSA9IG5hbWU7CkBAIC0xMTU3LDcgKzExMTgsNiBAQAogfQogCiBzdHJ1Y3QgY2hlY2tkaWZmX3QgewotCXN0cnVjdCB4ZGlmZl9lbWl0X3N0YXRlIHhtOwogCWNvbnN0IGNoYXIgKmZpbGVuYW1lOwogCWludCBsaW5lbm87CiAJc3RydWN0IGRpZmZfb3B0aW9ucyAqbzsKQEAgLTEzMzIsMTIzICsxMjkyLDU1IEBACiAJZW1pdF9iaW5hcnlfZGlmZl9ib2R5KGZpbGUsIHR3bywgb25lKTsKIH0KIAotc3RhdGljIHZvaWQgc2V0dXBfZGlmZl9hdHRyX2NoZWNrKHN0cnVjdCBnaXRfYXR0cl9jaGVjayAqY2hlY2spCitzdGF0aWMgdm9pZCBkaWZmX2ZpbGVzcGVjX2xvYWRfZHJpdmVyKHN0cnVjdCBkaWZmX2ZpbGVzcGVjICpvbmUpCiB7Ci0Jc3RhdGljIHN0cnVjdCBnaXRfYXR0ciAqYXR0cl9kaWZmOwotCi0JaWYgKCFhdHRyX2RpZmYpIHsKLQkJYXR0cl9kaWZmID0gZ2l0X2F0dHIoImRpZmYiLCA0KTsKLQl9Ci0JY2hlY2tbMF0uYXR0ciA9IGF0dHJfZGlmZjsKLX0KLQotc3RhdGljIHZvaWQgZGlmZl9maWxlc3BlY19jaGVja19hdHRyKHN0cnVjdCBkaWZmX2ZpbGVzcGVjICpvbmUpCi17Ci0Jc3RydWN0IGdpdF9hdHRyX2NoZWNrIGF0dHJfZGlmZl9jaGVjazsKLQlpbnQgY2hlY2tfZnJvbV9kYXRhID0gMDsKLQotCWlmIChvbmUtPmNoZWNrZWRfYXR0cikKLQkJcmV0dXJuOwotCi0Jc2V0dXBfZGlmZl9hdHRyX2NoZWNrKCZhdHRyX2RpZmZfY2hlY2spOwotCW9uZS0+aXNfYmluYXJ5ID0gMDsKLQlvbmUtPmZ1bmNuYW1lX3BhdHRlcm5faWRlbnQgPSBOVUxMOwotCi0JaWYgKCFnaXRfY2hlY2thdHRyKG9uZS0+cGF0aCwgMSwgJmF0dHJfZGlmZl9jaGVjaykpIHsKLQkJY29uc3QgY2hhciAqdmFsdWU7Ci0KLQkJLyogYmluYXJ5bmVzcyAqLwotCQl2YWx1ZSA9IGF0dHJfZGlmZl9jaGVjay52YWx1ZTsKLQkJaWYgKEFUVFJfVFJVRSh2YWx1ZSkpCi0JCQk7Ci0JCWVsc2UgaWYgKEFUVFJfRkFMU0UodmFsdWUpKQotCQkJb25lLT5pc19iaW5hcnkgPSAxOwotCQllbHNlCi0JCQljaGVja19mcm9tX2RhdGEgPSAxOwotCi0JCS8qIGZ1bmNuYW1lIHBhdHRlcm4gaWRlbnQgKi8KLQkJaWYgKEFUVFJfVFJVRSh2YWx1ZSkgfHwgQVRUUl9GQUxTRSh2YWx1ZSkgfHwgQVRUUl9VTlNFVCh2YWx1ZSkpCi0JCQk7Ci0JCWVsc2UKLQkJCW9uZS0+ZnVuY25hbWVfcGF0dGVybl9pZGVudCA9IHZhbHVlOwotCX0KLQotCWlmIChjaGVja19mcm9tX2RhdGEpIHsKLQkJaWYgKCFvbmUtPmRhdGEgJiYgRElGRl9GSUxFX1ZBTElEKG9uZSkpCi0JCQlkaWZmX3BvcHVsYXRlX2ZpbGVzcGVjKG9uZSwgMCk7Ci0KLQkJaWYgKG9uZS0+ZGF0YSkKLQkJCW9uZS0+aXNfYmluYXJ5ID0gYnVmZmVyX2lzX2JpbmFyeShvbmUtPmRhdGEsIG9uZS0+c2l6ZSk7Ci0JfQorCWlmICghb25lLT5kcml2ZXIpCisJCW9uZS0+ZHJpdmVyID0gdXNlcmRpZmZfZmluZF9ieV9wYXRoKG9uZS0+cGF0aCk7CisJaWYgKCFvbmUtPmRyaXZlcikKKwkJb25lLT5kcml2ZXIgPSB1c2VyZGlmZl9maW5kX2J5X25hbWUoImRlZmF1bHQiKTsKIH0KIAogaW50IGRpZmZfZmlsZXNwZWNfaXNfYmluYXJ5KHN0cnVjdCBkaWZmX2ZpbGVzcGVjICpvbmUpCiB7Ci0JZGlmZl9maWxlc3BlY19jaGVja19hdHRyKG9uZSk7CisJaWYgKG9uZS0+aXNfYmluYXJ5ID09IC0xKSB7CisJCWRpZmZfZmlsZXNwZWNfbG9hZF9kcml2ZXIob25lKTsKKwkJaWYgKG9uZS0+ZHJpdmVyLT5iaW5hcnkgIT0gLTEpCisJCQlvbmUtPmlzX2JpbmFyeSA9IG9uZS0+ZHJpdmVyLT5iaW5hcnk7CisJCWVsc2UgeworCQkJaWYgKCFvbmUtPmRhdGEgJiYgRElGRl9GSUxFX1ZBTElEKG9uZSkpCisJCQkJZGlmZl9wb3B1bGF0ZV9maWxlc3BlYyhvbmUsIDApOworCQkJaWYgKG9uZS0+ZGF0YSkKKwkJCQlvbmUtPmlzX2JpbmFyeSA9IGJ1ZmZlcl9pc19iaW5hcnkob25lLT5kYXRhLAorCQkJCQkJb25lLT5zaXplKTsKKwkJCWlmIChvbmUtPmlzX2JpbmFyeSA9PSAtMSkKKwkJCQlvbmUtPmlzX2JpbmFyeSA9IDA7CisJCX0KKwl9CiAJcmV0dXJuIG9uZS0+aXNfYmluYXJ5OwogfQogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGZ1bmNuYW1lX3BhdHRlcm5fZW50cnkgKmZ1bmNuYW1lX3BhdHRlcm4oY29uc3QgY2hhciAqaWRlbnQpCitzdGF0aWMgY29uc3Qgc3RydWN0IHVzZXJkaWZmX2Z1bmNuYW1lICpkaWZmX2Z1bmNuYW1lX3BhdHRlcm4oc3RydWN0IGRpZmZfZmlsZXNwZWMgKm9uZSkKIHsKLQlzdHJ1Y3QgZnVuY25hbWVfcGF0dGVybl9saXN0ICpwcDsKLQotCWZvciAocHAgPSBmdW5jbmFtZV9wYXR0ZXJuX2xpc3Q7IHBwOyBwcCA9IHBwLT5uZXh0KQotCQlpZiAoIXN0cmNtcChpZGVudCwgcHAtPmUubmFtZSkpCi0JCQlyZXR1cm4gJnBwLT5lOwotCXJldHVybiBOVUxMOworCWRpZmZfZmlsZXNwZWNfbG9hZF9kcml2ZXIob25lKTsKKwlyZXR1cm4gb25lLT5kcml2ZXItPmZ1bmNuYW1lLnBhdHRlcm4gPyAmb25lLT5kcml2ZXItPmZ1bmNuYW1lIDogTlVMTDsKIH0KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBmdW5jbmFtZV9wYXR0ZXJuX2VudHJ5IGJ1aWx0aW5fZnVuY25hbWVfcGF0dGVybltdID0gewotCXsgImphdmEiLAotCSAgIiFeWyBcdF0qKGNhdGNofGRvfGZvcnxpZnxpbnN0YW5jZW9mfG5ld3xyZXR1cm58c3dpdGNofHRocm93fHdoaWxlKVxuIgotCSAgIl5bIFx0XSooKFsgXHRdKltBLVphLXpfXVtBLVphLXpfMC05XSopezIsfVsgXHRdKlxcKFteO10qKSQiLAotCSAgUkVHX0VYVEVOREVEIH0sCi0JeyAicGFzY2FsIiwKLQkgICJeKChwcm9jZWR1cmV8ZnVuY3Rpb258Y29uc3RydWN0b3J8ZGVzdHJ1Y3RvcnxpbnRlcmZhY2V8IgotCQkiaW1wbGVtZW50YXRpb258aW5pdGlhbGl6YXRpb258ZmluYWxpemF0aW9uKVsgXHRdKi4qKSQiCi0JICAifCIKLQkgICJeKC4qPVsgXHRdKihjbGFzc3xyZWNvcmQpLiopJCIsCi0JICBSRUdfRVhURU5ERUQgfSwKLQl7ICJiaWJ0ZXgiLCAiKEBbYS16QS1aXXsxLH1bIFx0XSpcXHt7MCwxfVsgXHRdKlteIFx0XCJAJyxcXCN9e34lXSopLiokIiwKLQkgIFJFR19FWFRFTkRFRCB9LAotCXsgInRleCIsCi0JICAiXihcXFxcKChzdWIpKnNlY3Rpb258Y2hhcHRlcnxwYXJ0KVxcKnswLDF9XFx7LiopJCIsCi0JICBSRUdfRVhURU5ERUQgfSwKLQl7ICJydWJ5IiwgIl5bIFx0XSooKGNsYXNzfG1vZHVsZXxkZWYpWyBcdF0uKikkIiwKLQkgIFJFR19FWFRFTkRFRCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBmdW5jbmFtZV9wYXR0ZXJuX2VudHJ5ICpkaWZmX2Z1bmNuYW1lX3BhdHRlcm4oc3RydWN0IGRpZmZfZmlsZXNwZWMgKm9uZSkKK3ZvaWQgZGlmZl9zZXRfbW5lbW9uaWNfcHJlZml4KHN0cnVjdCBkaWZmX29wdGlvbnMgKm9wdGlvbnMsIGNvbnN0IGNoYXIgKmEsIGNvbnN0IGNoYXIgKmIpCiB7Ci0JY29uc3QgY2hhciAqaWRlbnQ7Ci0JY29uc3Qgc3RydWN0IGZ1bmNuYW1lX3BhdHRlcm5fZW50cnkgKnBlOwotCWludCBpOworCWlmICghb3B0aW9ucy0+YV9wcmVmaXgpCisJCW9wdGlvbnMtPmFfcHJlZml4ID0gYTsKKwlpZiAoIW9wdGlvbnMtPmJfcHJlZml4KQorCQlvcHRpb25zLT5iX3ByZWZpeCA9IGI7Cit9CiAKLQlkaWZmX2ZpbGVzcGVjX2NoZWNrX2F0dHIob25lKTsKLQlpZGVudCA9IG9uZS0+ZnVuY25hbWVfcGF0dGVybl9pZGVudDsKLQotCWlmICghaWRlbnQpCi0JCS8qCi0JCSAqIElmIHRoZSBjb25maWcgZmlsZSBoYXMgImZ1bmNuYW1lLmRlZmF1bHQiIGRlZmluZWQsIHRoYXQKLQkJICogcmVnZXhwIGlzIHVzZWQ7IG90aGVyd2lzZSBOVUxMIGlzIHJldHVybmVkIGFuZCB4ZW1pdCB1c2VzCi0JCSAqIHRoZSBidWlsdC1pbiBkZWZhdWx0LgotCQkgKi8KLQkJcmV0dXJuIGZ1bmNuYW1lX3BhdHRlcm4oImRlZmF1bHQiKTsKLQotCS8qIExvb2sgdXAgY3VzdG9tICJmdW5jbmFtZS4kaWRlbnQiIHJlZ2V4cCBmcm9tIGNvbmZpZy4gKi8KLQlwZSA9IGZ1bmNuYW1lX3BhdHRlcm4oaWRlbnQpOwotCWlmIChwZSkKLQkJcmV0dXJuIHBlOwotCi0JLyoKLQkgKiBBbmQgZGVmaW5lIGJ1aWx0LWluIGZhbGxiYWNrIHBhdHRlcm5zIGhlcmUuICBOb3RlIHRoYXQKLQkgKiB0aGVzZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgdXNlcidzIGNvbmZpZyBzZXR0aW5ncy4KLQkgKi8KLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShidWlsdGluX2Z1bmNuYW1lX3BhdHRlcm4pOyBpKyspCi0JCWlmICghc3RyY21wKGlkZW50LCBidWlsdGluX2Z1bmNuYW1lX3BhdHRlcm5baV0ubmFtZSkpCi0JCQlyZXR1cm4gJmJ1aWx0aW5fZnVuY25hbWVfcGF0dGVybltpXTsKLQotCXJldHVybiBOVUxMOworc3RhdGljIGNvbnN0IGNoYXIgKmdldF90ZXh0Y29udihzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqb25lKQoreworCWlmICghRElGRl9GSUxFX1ZBTElEKG9uZSkpCisJCXJldHVybiBOVUxMOworCWlmICghU19JU1JFRyhvbmUtPm1vZGUpKQorCQlyZXR1cm4gTlVMTDsKKwlkaWZmX2ZpbGVzcGVjX2xvYWRfZHJpdmVyKG9uZSk7CisJcmV0dXJuIG9uZS0+ZHJpdmVyLT50ZXh0Y29udjsKIH0KIAogc3RhdGljIHZvaWQgYnVpbHRpbl9kaWZmKGNvbnN0IGNoYXIgKm5hbWVfYSwKQEAgLTE0NjQsMTMgKzEzNTYsMjkgQEAKIAljaGFyICphX29uZSwgKmJfdHdvOwogCWNvbnN0IGNoYXIgKnNldCA9IGRpZmZfZ2V0X2NvbG9yX29wdChvLCBESUZGX01FVEFJTkZPKTsKIAljb25zdCBjaGFyICpyZXNldCA9IGRpZmZfZ2V0X2NvbG9yX29wdChvLCBESUZGX1JFU0VUKTsKKwljb25zdCBjaGFyICphX3ByZWZpeCwgKmJfcHJlZml4OworCWNvbnN0IGNoYXIgKnRleHRjb252X29uZSA9IE5VTEwsICp0ZXh0Y29udl90d28gPSBOVUxMOworCisJaWYgKERJRkZfT1BUX1RTVChvLCBBTExPV19URVhUQ09OVikpIHsKKwkJdGV4dGNvbnZfb25lID0gZ2V0X3RleHRjb252KG9uZSk7CisJCXRleHRjb252X3R3byA9IGdldF90ZXh0Y29udih0d28pOworCX0KKworCWRpZmZfc2V0X21uZW1vbmljX3ByZWZpeChvLCAiYS8iLCAiYi8iKTsKKwlpZiAoRElGRl9PUFRfVFNUKG8sIFJFVkVSU0VfRElGRikpIHsKKwkJYV9wcmVmaXggPSBvLT5iX3ByZWZpeDsKKwkJYl9wcmVmaXggPSBvLT5hX3ByZWZpeDsKKwl9IGVsc2UgeworCQlhX3ByZWZpeCA9IG8tPmFfcHJlZml4OworCQliX3ByZWZpeCA9IG8tPmJfcHJlZml4OworCX0KIAogCS8qIE5ldmVyIHVzZSBhIG5vbi12YWxpZCBmaWxlbmFtZSBhbnl3aGVyZSBpZiBhdCBhbGwgcG9zc2libGUgKi8KIAluYW1lX2EgPSBESUZGX0ZJTEVfVkFMSUQob25lKSA/IG5hbWVfYSA6IG5hbWVfYjsKIAluYW1lX2IgPSBESUZGX0ZJTEVfVkFMSUQodHdvKSA/IG5hbWVfYiA6IG5hbWVfYTsKIAotCWFfb25lID0gcXVvdGVfdHdvKG8tPmFfcHJlZml4LCBuYW1lX2EgKyAoKm5hbWVfYSA9PSAnLycpKTsKLQliX3R3byA9IHF1b3RlX3R3byhvLT5iX3ByZWZpeCwgbmFtZV9iICsgKCpuYW1lX2IgPT0gJy8nKSk7CisJYV9vbmUgPSBxdW90ZV90d28oYV9wcmVmaXgsIG5hbWVfYSArICgqbmFtZV9hID09ICcvJykpOworCWJfdHdvID0gcXVvdGVfdHdvKGJfcHJlZml4LCBuYW1lX2IgKyAoKm5hbWVfYiA9PSAnLycpKTsKIAlsYmxbMF0gPSBESUZGX0ZJTEVfVkFMSUQob25lKSA/IGFfb25lIDogIi9kZXYvbnVsbCI7CiAJbGJsWzFdID0gRElGRl9GSUxFX1ZBTElEKHR3bykgPyBiX3R3byA6ICIvZGV2L251bGwiOwogCWZwcmludGYoby0+ZmlsZSwgIiVzZGlmZiAtLWdpdCAlcyAlcyVzXG4iLCBzZXQsIGFfb25lLCBiX3R3bywgcmVzZXQpOwpAQCAtMTQ5OCw4ICsxNDA2LDExIEBACiAJCSAqLwogCQlpZiAoKG9uZS0+bW9kZSBeIHR3by0+bW9kZSkgJiBTX0lGTVQpCiAJCQlnb3RvIGZyZWVfYWJfYW5kX3JldHVybjsKLQkJaWYgKGNvbXBsZXRlX3Jld3JpdGUpIHsKLQkJCWVtaXRfcmV3cml0ZV9kaWZmKG5hbWVfYSwgbmFtZV9iLCBvbmUsIHR3bywgbyk7CisJCWlmIChjb21wbGV0ZV9yZXdyaXRlICYmCisJCSAgICAodGV4dGNvbnZfb25lIHx8ICFkaWZmX2ZpbGVzcGVjX2lzX2JpbmFyeShvbmUpKSAmJgorCQkgICAgKHRleHRjb252X3R3byB8fCAhZGlmZl9maWxlc3BlY19pc19iaW5hcnkodHdvKSkpIHsKKwkJCWVtaXRfcmV3cml0ZV9kaWZmKG5hbWVfYSwgbmFtZV9iLCBvbmUsIHR3bywKKwkJCQkJCXRleHRjb252X29uZSwgdGV4dGNvbnZfdHdvLCBvKTsKIAkJCW8tPmZvdW5kX2NoYW5nZXMgPSAxOwogCQkJZ290byBmcmVlX2FiX2FuZF9yZXR1cm47CiAJCX0KQEAgLTE1MDksNyArMTQyMCw4IEBACiAJCWRpZSgidW5hYmxlIHRvIHJlYWQgZmlsZXMgdG8gZGlmZiIpOwogCiAJaWYgKCFESUZGX09QVF9UU1QobywgVEVYVCkgJiYKLQkgICAgKGRpZmZfZmlsZXNwZWNfaXNfYmluYXJ5KG9uZSkgfHwgZGlmZl9maWxlc3BlY19pc19iaW5hcnkodHdvKSkpIHsKKwkgICAgKCAoZGlmZl9maWxlc3BlY19pc19iaW5hcnkob25lKSAmJiAhdGV4dGNvbnZfb25lKSB8fAorCSAgICAgIChkaWZmX2ZpbGVzcGVjX2lzX2JpbmFyeSh0d28pICYmICF0ZXh0Y29udl90d28pICkpIHsKIAkJLyogUXVpdGUgY29tbW9uIGNvbmZ1c2luZyBjYXNlICovCiAJCWlmIChtZjEuc2l6ZSA9PSBtZjIuc2l6ZSAmJgogCQkgICAgIW1lbWNtcChtZjEucHRyLCBtZjIucHRyLCBtZjEuc2l6ZSkpCkBAIC0xNTI4LDEyICsxNDQwLDI4IEBACiAJCXhkZW1pdGNvbmZfdCB4ZWNmZzsKIAkJeGRlbWl0Y2JfdCBlY2I7CiAJCXN0cnVjdCBlbWl0X2NhbGxiYWNrIGVjYmRhdGE7Ci0JCWNvbnN0IHN0cnVjdCBmdW5jbmFtZV9wYXR0ZXJuX2VudHJ5ICpwZTsKKwkJY29uc3Qgc3RydWN0IHVzZXJkaWZmX2Z1bmNuYW1lICpwZTsKKworCQlpZiAodGV4dGNvbnZfb25lKSB7CisJCQlzaXplX3Qgc2l6ZTsKKwkJCW1mMS5wdHIgPSBydW5fdGV4dGNvbnYodGV4dGNvbnZfb25lLCBvbmUsICZzaXplKTsKKwkJCWlmICghbWYxLnB0cikKKwkJCQlkaWUoInVuYWJsZSB0byByZWFkIGZpbGVzIHRvIGRpZmYiKTsKKwkJCW1mMS5zaXplID0gc2l6ZTsKKwkJfQorCQlpZiAodGV4dGNvbnZfdHdvKSB7CisJCQlzaXplX3Qgc2l6ZTsKKwkJCW1mMi5wdHIgPSBydW5fdGV4dGNvbnYodGV4dGNvbnZfdHdvLCB0d28sICZzaXplKTsKKwkJCWlmICghbWYyLnB0cikKKwkJCQlkaWUoInVuYWJsZSB0byByZWFkIGZpbGVzIHRvIGRpZmYiKTsKKwkJCW1mMi5zaXplID0gc2l6ZTsKKwkJfQogCiAJCXBlID0gZGlmZl9mdW5jbmFtZV9wYXR0ZXJuKG9uZSk7CiAJCWlmICghcGUpCiAJCQlwZSA9IGRpZmZfZnVuY25hbWVfcGF0dGVybih0d28pOwogCisJCW1lbXNldCgmeHBwLCAwLCBzaXplb2YoeHBwKSk7CiAJCW1lbXNldCgmeGVjZmcsIDAsIHNpemVvZih4ZWNmZykpOwogCQltZW1zZXQoJmVjYmRhdGEsIDAsIHNpemVvZihlY2JkYXRhKSk7CiAJCWVjYmRhdGEubGFiZWxfcGF0aCA9IGxibDsKQEAgLTE1NTIsMTcgKzE0ODAsMTkgQEAKIAkJCXhlY2ZnLmN0eGxlbiA9IHN0cnRvdWwoZGlmZm9wdHMgKyAxMCwgTlVMTCwgMTApOwogCQllbHNlIGlmICghcHJlZml4Y21wKGRpZmZvcHRzLCAiLXUiKSkKIAkJCXhlY2ZnLmN0eGxlbiA9IHN0cnRvdWwoZGlmZm9wdHMgKyAyLCBOVUxMLCAxMCk7Ci0JCWVjYi5vdXRmID0geGRpZmZfb3V0ZjsKLQkJZWNiLnByaXYgPSAmZWNiZGF0YTsKLQkJZWNiZGF0YS54bS5jb25zdW1lID0gZm5fb3V0X2NvbnN1bWU7CiAJCWlmIChESUZGX09QVF9UU1QobywgQ09MT1JfRElGRl9XT1JEUykpIHsKIAkJCWVjYmRhdGEuZGlmZl93b3JkcyA9CiAJCQkJeGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IGRpZmZfd29yZHNfZGF0YSkpOwogCQkJZWNiZGF0YS5kaWZmX3dvcmRzLT5maWxlID0gby0+ZmlsZTsKIAkJfQotCQl4ZGlfZGlmZigmbWYxLCAmbWYyLCAmeHBwLCAmeGVjZmcsICZlY2IpOworCQl4ZGlfZGlmZl9vdXRmKCZtZjEsICZtZjIsIGZuX291dF9jb25zdW1lLCAmZWNiZGF0YSwKKwkJCSAgICAgICZ4cHAsICZ4ZWNmZywgJmVjYik7CiAJCWlmIChESUZGX09QVF9UU1QobywgQ09MT1JfRElGRl9XT1JEUykpCiAJCQlmcmVlX2RpZmZfd29yZHNfZGF0YSgmZWNiZGF0YSk7CisJCWlmICh0ZXh0Y29udl9vbmUpCisJCQlmcmVlKG1mMS5wdHIpOworCQlpZiAodGV4dGNvbnZfdHdvKQorCQkJZnJlZShtZjIucHRyKTsKIAl9CiAKICBmcmVlX2FiX2FuZF9yZXR1cm46CkBAIC0xNjA5LDExICsxNTM5LDExIEBACiAJCXhkZW1pdGNvbmZfdCB4ZWNmZzsKIAkJeGRlbWl0Y2JfdCBlY2I7CiAKKwkJbWVtc2V0KCZ4cHAsIDAsIHNpemVvZih4cHApKTsKIAkJbWVtc2V0KCZ4ZWNmZywgMCwgc2l6ZW9mKHhlY2ZnKSk7CiAJCXhwcC5mbGFncyA9IFhERl9ORUVEX01JTklNQUwgfCBvLT54ZGxfb3B0czsKLQkJZWNiLm91dGYgPSB4ZGlmZl9vdXRmOwotCQllY2IucHJpdiA9IGRpZmZzdGF0OwotCQl4ZGlfZGlmZigmbWYxLCAmbWYyLCAmeHBwLCAmeGVjZmcsICZlY2IpOworCQl4ZGlfZGlmZl9vdXRmKCZtZjEsICZtZjIsIGRpZmZzdGF0X2NvbnN1bWUsIGRpZmZzdGF0LAorCQkJICAgICAgJnhwcCwgJnhlY2ZnLCAmZWNiKTsKIAl9CiAKICBmcmVlX2FuZF9yZXR1cm46CkBAIC0xNjM0LDcgKzE1NjQsNiBAQAogCQlyZXR1cm47CiAKIAltZW1zZXQoJmRhdGEsIDAsIHNpemVvZihkYXRhKSk7Ci0JZGF0YS54bS5jb25zdW1lID0gY2hlY2tkaWZmX2NvbnN1bWU7CiAJZGF0YS5maWxlbmFtZSA9IG5hbWVfYiA/IG5hbWVfYiA6IG5hbWVfYTsKIAlkYXRhLmxpbmVubyA9IDA7CiAJZGF0YS5vID0gbzsKQEAgLTE2NTcsMTIgKzE1ODYsMTIgQEAKIAkJeGRlbWl0Y29uZl90IHhlY2ZnOwogCQl4ZGVtaXRjYl90IGVjYjsKIAorCQltZW1zZXQoJnhwcCwgMCwgc2l6ZW9mKHhwcCkpOwogCQltZW1zZXQoJnhlY2ZnLCAwLCBzaXplb2YoeGVjZmcpKTsKIAkJeGVjZmcuY3R4bGVuID0gMTsgLyogYXQgbGVhc3Qgb25lIGNvbnRleHQgbGluZSAqLwogCQl4cHAuZmxhZ3MgPSBYREZfTkVFRF9NSU5JTUFMOwotCQllY2Iub3V0ZiA9IHhkaWZmX291dGY7Ci0JCWVjYi5wcml2ID0gJmRhdGE7Ci0JCXhkaV9kaWZmKCZtZjEsICZtZjIsICZ4cHAsICZ4ZWNmZywgJmVjYik7CisJCXhkaV9kaWZmX291dGYoJm1mMSwgJm1mMiwgY2hlY2tkaWZmX2NvbnN1bWUsICZkYXRhLAorCQkJICAgICAgJnhwcCwgJnhlY2ZnLCAmZWNiKTsKIAogCQlpZiAoKGRhdGEud3NfcnVsZSAmIFdTX1RSQUlMSU5HX1NQQUNFKSAmJgogCQkgICAgZGF0YS50cmFpbGluZ19ibGFua3Nfc3RhcnQpIHsKQEAgLTE2ODcsNiArMTYxNiw3IEBACiAJc3BlYy0+cGF0aCA9IChjaGFyICopKHNwZWMgKyAxKTsKIAltZW1jcHkoc3BlYy0+cGF0aCwgcGF0aCwgbmFtZWxlbisxKTsKIAlzcGVjLT5jb3VudCA9IDE7CisJc3BlYy0+aXNfYmluYXJ5ID0gLTE7CiAJcmV0dXJuIHNwZWM7CiB9CiAKQEAgLTE3NzEsMTAgKzE3MDEsOSBAQAogCiBzdGF0aWMgaW50IHBvcHVsYXRlX2Zyb21fc3RkaW4oc3RydWN0IGRpZmZfZmlsZXNwZWMgKnMpCiB7Ci0Jc3RydWN0IHN0cmJ1ZiBidWY7CisJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAlzaXplX3Qgc2l6ZSA9IDA7CiAKLQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKIAlpZiAoc3RyYnVmX3JlYWQoJmJ1ZiwgMCwgMCkgPCAwKQogCQlyZXR1cm4gZXJyb3IoImVycm9yIHdoaWxlIHJlYWRpbmcgZnJvbSBzdGRpbiAlcyIsCiAJCQkJICAgICBzdHJlcnJvcihlcnJubykpOwpAQCAtMTgyNiw3ICsxNzU1LDcgQEAKIAogCWlmICghcy0+c2hhMV92YWxpZCB8fAogCSAgICByZXVzZV93b3JrdHJlZV9maWxlKHMtPnBhdGgsIHMtPnNoYTEsIDApKSB7Ci0JCXN0cnVjdCBzdHJidWYgYnVmOworCQlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCQlzdHJ1Y3Qgc3RhdCBzdDsKIAkJaW50IGZkOwogCkBAIC0xODQ2LDE5ICsxNzc1LDE4IEBACiAJCXMtPnNpemUgPSB4c2l6ZV90KHN0LnN0X3NpemUpOwogCQlpZiAoIXMtPnNpemUpCiAJCQlnb3RvIGVtcHR5OwotCQlpZiAoc2l6ZV9vbmx5KQotCQkJcmV0dXJuIDA7CiAJCWlmIChTX0lTTE5LKHN0LnN0X21vZGUpKSB7Ci0JCQlpbnQgcmV0OwotCQkJcy0+ZGF0YSA9IHhtYWxsb2Mocy0+c2l6ZSk7Ci0JCQlzLT5zaG91bGRfZnJlZSA9IDE7Ci0JCQlyZXQgPSByZWFkbGluayhzLT5wYXRoLCBzLT5kYXRhLCBzLT5zaXplKTsKLQkJCWlmIChyZXQgPCAwKSB7Ci0JCQkJZnJlZShzLT5kYXRhKTsKKwkJCXN0cnVjdCBzdHJidWYgc2IgPSBTVFJCVUZfSU5JVDsKKworCQkJaWYgKHN0cmJ1Zl9yZWFkbGluaygmc2IsIHMtPnBhdGgsIHMtPnNpemUpKQogCQkJCWdvdG8gZXJyX2VtcHR5OwotCQkJfQorCQkJcy0+c2l6ZSA9IHNiLmxlbjsKKwkJCXMtPmRhdGEgPSBzdHJidWZfZGV0YWNoKCZzYiwgTlVMTCk7CisJCQlzLT5zaG91bGRfZnJlZSA9IDE7CiAJCQlyZXR1cm4gMDsKIAkJfQorCQlpZiAoc2l6ZV9vbmx5KQorCQkJcmV0dXJuIDA7CiAJCWZkID0gb3BlbihzLT5wYXRoLCBPX1JET05MWSk7CiAJCWlmIChmZCA8IDApCiAJCQlnb3RvIGVycl9lbXB0eTsKQEAgLTE4NjksNyArMTc5Nyw2IEBACiAJCS8qCiAJCSAqIENvbnZlcnQgZnJvbSB3b3JraW5nIHRyZWUgZm9ybWF0IHRvIGNhbm9uaWNhbCBnaXQgZm9ybWF0CiAJCSAqLwotCQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKIAkJaWYgKGNvbnZlcnRfdG9fZ2l0KHMtPnBhdGgsIHMtPmRhdGEsIHMtPnNpemUsICZidWYsIHNhZmVfY3JsZikpIHsKIAkJCXNpemVfdCBzaXplID0gMDsKIAkJCW11bm1hcChzLT5kYXRhLCBzLT5zaXplKTsKQEAgLTE5NTcsMTMgKzE4ODQsMTIgQEAKIAkJaWYgKFNfSVNMTksoc3Quc3RfbW9kZSkpIHsKIAkJCWludCByZXQ7CiAJCQljaGFyIGJ1ZltQQVRIX01BWCArIDFdOyAvKiBvdWdodCB0byBiZSBTWU1MSU5LX01BWCAqLwotCQkJc2l6ZV90IHN6ID0geHNpemVfdChzdC5zdF9zaXplKTsKLQkJCWlmIChzaXplb2YoYnVmKSA8PSBzdC5zdF9zaXplKQotCQkJCWRpZSgic3ltbGluayB0b28gbG9uZzogJXMiLCBuYW1lKTsKLQkJCXJldCA9IHJlYWRsaW5rKG5hbWUsIGJ1Ziwgc3opOworCQkJcmV0ID0gcmVhZGxpbmsobmFtZSwgYnVmLCBzaXplb2YoYnVmKSk7CiAJCQlpZiAocmV0IDwgMCkKIAkJCQlkaWUoInJlYWRsaW5rKCVzKSIsIG5hbWUpOwotCQkJcHJlcF90ZW1wX2Jsb2IodGVtcCwgYnVmLCBzeiwKKwkJCWlmIChyZXQgPT0gc2l6ZW9mKGJ1ZikpCisJCQkJZGllKCJzeW1saW5rIHRvbyBsb25nOiAlcyIsIG5hbWUpOworCQkJcHJlcF90ZW1wX2Jsb2IodGVtcCwgYnVmLCByZXQsCiAJCQkJICAgICAgIChvbmUtPnNoYTFfdmFsaWQgPwogCQkJCQlvbmUtPnNoYTEgOiBudWxsX3NoYTEpLAogCQkJCSAgICAgICAob25lLT5zaGExX3ZhbGlkID8KQEAgLTIwNzMsMjkgKzE5OTksNiBAQAogCX0KIH0KIAotc3RhdGljIGNvbnN0IGNoYXIgKmV4dGVybmFsX2RpZmZfYXR0cihjb25zdCBjaGFyICpuYW1lKQotewotCXN0cnVjdCBnaXRfYXR0cl9jaGVjayBhdHRyX2RpZmZfY2hlY2s7Ci0KLQlpZiAoIW5hbWUpCi0JCXJldHVybiBOVUxMOwotCi0Jc2V0dXBfZGlmZl9hdHRyX2NoZWNrKCZhdHRyX2RpZmZfY2hlY2spOwotCWlmICghZ2l0X2NoZWNrYXR0cihuYW1lLCAxLCAmYXR0cl9kaWZmX2NoZWNrKSkgewotCQljb25zdCBjaGFyICp2YWx1ZSA9IGF0dHJfZGlmZl9jaGVjay52YWx1ZTsKLQkJaWYgKCFBVFRSX1RSVUUodmFsdWUpICYmCi0JCSAgICAhQVRUUl9GQUxTRSh2YWx1ZSkgJiYKLQkJICAgICFBVFRSX1VOU0VUKHZhbHVlKSkgewotCQkJc3RydWN0IGxsX2RpZmZfZHJpdmVyICpkcnY7Ci0KLQkJCWZvciAoZHJ2ID0gdXNlcl9kaWZmOyBkcnY7IGRydiA9IGRydi0+bmV4dCkKLQkJCQlpZiAoIXN0cmNtcChkcnYtPm5hbWUsIHZhbHVlKSkKLQkJCQkJcmV0dXJuIGRydi0+Y21kOwotCQl9Ci0JfQotCXJldHVybiBOVUxMOwotfQotCiBzdGF0aWMgaW50IHNpbWlsYXJpdHlfaW5kZXgoc3RydWN0IGRpZmZfZmlsZXBhaXIgKnApCiB7CiAJcmV0dXJuIHAtPnNjb3JlICogMTAwIC8gTUFYX1NDT1JFOwpAQCAtMjE3OSw5ICsyMDgyLDkgQEAKIAlpZiAoIURJRkZfT1BUX1RTVChvLCBBTExPV19FWFRFUk5BTCkpCiAJCXBnbSA9IE5VTEw7CiAJZWxzZSB7Ci0JCWNvbnN0IGNoYXIgKmNtZCA9IGV4dGVybmFsX2RpZmZfYXR0cihhdHRyX3BhdGgpOwotCQlpZiAoY21kKQotCQkJcGdtID0gY21kOworCQlzdHJ1Y3QgdXNlcmRpZmZfZHJpdmVyICpkcnYgPSB1c2VyZGlmZl9maW5kX2J5X3BhdGgoYXR0cl9wYXRoKTsKKwkJaWYgKGRydiAmJiBkcnYtPmV4dGVybmFsKQorCQkJcGdtID0gZHJ2LT5leHRlcm5hbDsKIAl9CiAKIAlpZiAocGdtKSB7CkBAIC0yMzQ2LDggKzIyNDksMTAgQEAKIAkJRElGRl9PUFRfQ0xSKG9wdGlvbnMsIENPTE9SX0RJRkYpOwogCW9wdGlvbnMtPmRldGVjdF9yZW5hbWUgPSBkaWZmX2RldGVjdF9yZW5hbWVfZGVmYXVsdDsKIAotCW9wdGlvbnMtPmFfcHJlZml4ID0gImEvIjsKLQlvcHRpb25zLT5iX3ByZWZpeCA9ICJiLyI7CisJaWYgKCFkaWZmX21uZW1vbmljX3ByZWZpeCkgeworCQlvcHRpb25zLT5hX3ByZWZpeCA9ICJhLyI7CisJCW9wdGlvbnMtPmJfcHJlZml4ID0gImIvIjsKKwl9CiB9CiAKIGludCBkaWZmX3NldHVwX2RvbmUoc3RydWN0IGRpZmZfb3B0aW9ucyAqb3B0aW9ucykKQEAgLTI1MDQsNiArMjQwOSwxMCBAQAogCWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1jdW11bGF0aXZlIikpIHsKIAkJb3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCB8PSBESUZGX0ZPUk1BVF9ESVJTVEFUOwogCQlESUZGX09QVF9TRVQob3B0aW9ucywgRElSU1RBVF9DVU1VTEFUSVZFKTsKKwl9IGVsc2UgaWYgKG9wdF9hcmcoYXJnLCAwLCAiZGlyc3RhdC1ieS1maWxlIiwKKwkJCSAgICZvcHRpb25zLT5kaXJzdGF0X3BlcmNlbnQpKSB7CisJCW9wdGlvbnMtPm91dHB1dF9mb3JtYXQgfD0gRElGRl9GT1JNQVRfRElSU1RBVDsKKwkJRElGRl9PUFRfU0VUKG9wdGlvbnMsIERJUlNUQVRfQllfRklMRSk7CiAJfQogCWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1jaGVjayIpKQogCQlvcHRpb25zLT5vdXRwdXRfZm9ybWF0IHw9IERJRkZfRk9STUFUX0NIRUNLRElGRjsKQEAgLTI2MDgsNiArMjUxNywxMCBAQAogCQlESUZGX09QVF9TRVQob3B0aW9ucywgQUxMT1dfRVhURVJOQUwpOwogCWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1uby1leHQtZGlmZiIpKQogCQlESUZGX09QVF9DTFIob3B0aW9ucywgQUxMT1dfRVhURVJOQUwpOworCWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS10ZXh0Y29udiIpKQorCQlESUZGX09QVF9TRVQob3B0aW9ucywgQUxMT1dfVEVYVENPTlYpOworCWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1uby10ZXh0Y29udiIpKQorCQlESUZGX09QVF9DTFIob3B0aW9ucywgQUxMT1dfVEVYVENPTlYpOwogCWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1pZ25vcmUtc3VibW9kdWxlcyIpKQogCQlESUZGX09QVF9TRVQob3B0aW9ucywgSUdOT1JFX1NVQk1PRFVMRVMpOwogCkBAIC0zMDYwLDggKzI5NzMsNyBAQAogfQogCiBzdHJ1Y3QgcGF0Y2hfaWRfdCB7Ci0Jc3RydWN0IHhkaWZmX2VtaXRfc3RhdGUgeG07Ci0JU0hBX0NUWCAqY3R4OworCWdpdF9TSEFfQ1RYICpjdHg7CiAJaW50IHBhdGNobGVuOwogfTsKIApAQCAtMzA4OSw3ICszMDAxLDcgQEAKIAogCW5ld19sZW4gPSByZW1vdmVfc3BhY2UobGluZSwgbGVuKTsKIAotCVNIQTFfVXBkYXRlKGRhdGEtPmN0eCwgbGluZSwgbmV3X2xlbik7CisJZ2l0X1NIQTFfVXBkYXRlKGRhdGEtPmN0eCwgbGluZSwgbmV3X2xlbik7CiAJZGF0YS0+cGF0Y2hsZW4gKz0gbmV3X2xlbjsKIH0KIApAQCAtMzA5OCwxNCArMzAxMCwxMyBAQAogewogCXN0cnVjdCBkaWZmX3F1ZXVlX3N0cnVjdCAqcSA9ICZkaWZmX3F1ZXVlZF9kaWZmOwogCWludCBpOwotCVNIQV9DVFggY3R4OworCWdpdF9TSEFfQ1RYIGN0eDsKIAlzdHJ1Y3QgcGF0Y2hfaWRfdCBkYXRhOwogCWNoYXIgYnVmZmVyW1BBVEhfTUFYICogNCArIDIwXTsKIAotCVNIQTFfSW5pdCgmY3R4KTsKKwlnaXRfU0hBMV9Jbml0KCZjdHgpOwogCW1lbXNldCgmZGF0YSwgMCwgc2l6ZW9mKHN0cnVjdCBwYXRjaF9pZF90KSk7CiAJZGF0YS5jdHggPSAmY3R4OwotCWRhdGEueG0uY29uc3VtZSA9IHBhdGNoX2lkX2NvbnN1bWU7CiAKIAlmb3IgKGkgPSAwOyBpIDwgcS0+bnI7IGkrKykgewogCQl4cHBhcmFtX3QgeHBwOwpAQCAtMzExNSw2ICszMDI2LDcgQEAKIAkJc3RydWN0IGRpZmZfZmlsZXBhaXIgKnAgPSBxLT5xdWV1ZVtpXTsKIAkJaW50IGxlbjEsIGxlbjI7CiAKKwkJbWVtc2V0KCZ4cHAsIDAsIHNpemVvZih4cHApKTsKIAkJbWVtc2V0KCZ4ZWNmZywgMCwgc2l6ZW9mKHhlY2ZnKSk7CiAJCWlmIChwLT5zdGF0dXMgPT0gMCkKIAkJCXJldHVybiBlcnJvcigiaW50ZXJuYWwgZGlmZiBzdGF0dXMgZXJyb3IiKTsKQEAgLTMxNjUsMTcgKzMwNzcsMTYgQEAKIAkJCQkJbGVuMiwgcC0+dHdvLT5wYXRoLAogCQkJCQlsZW4xLCBwLT5vbmUtPnBhdGgsCiAJCQkJCWxlbjIsIHAtPnR3by0+cGF0aCk7Ci0JCVNIQTFfVXBkYXRlKCZjdHgsIGJ1ZmZlciwgbGVuMSk7CisJCWdpdF9TSEExX1VwZGF0ZSgmY3R4LCBidWZmZXIsIGxlbjEpOwogCiAJCXhwcC5mbGFncyA9IFhERl9ORUVEX01JTklNQUw7CiAJCXhlY2ZnLmN0eGxlbiA9IDM7CiAJCXhlY2ZnLmZsYWdzID0gWERMX0VNSVRfRlVOQ05BTUVTOwotCQllY2Iub3V0ZiA9IHhkaWZmX291dGY7Ci0JCWVjYi5wcml2ID0gJmRhdGE7Ci0JCXhkaV9kaWZmKCZtZjEsICZtZjIsICZ4cHAsICZ4ZWNmZywgJmVjYik7CisJCXhkaV9kaWZmX291dGYoJm1mMSwgJm1mMiwgcGF0Y2hfaWRfY29uc3VtZSwgJmRhdGEsCisJCQkgICAgICAmeHBwLCAmeGVjZmcsICZlY2IpOwogCX0KIAotCVNIQTFfRmluYWwoc2hhMSwgJmN0eCk7CisJZ2l0X1NIQTFfRmluYWwoc2hhMSwgJmN0eCk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTMyNDksNyArMzE2MCw2IEBACiAJCXN0cnVjdCBkaWZmc3RhdF90IGRpZmZzdGF0OwogCiAJCW1lbXNldCgmZGlmZnN0YXQsIDAsIHNpemVvZihzdHJ1Y3QgZGlmZnN0YXRfdCkpOwotCQlkaWZmc3RhdC54bS5jb25zdW1lID0gZGlmZnN0YXRfY29uc3VtZTsKIAkJZm9yIChpID0gMDsgaSA8IHEtPm5yOyBpKyspIHsKIAkJCXN0cnVjdCBkaWZmX2ZpbGVwYWlyICpwID0gcS0+cXVldWVbaV07CiAJCQlpZiAoY2hlY2tfcGFpcl9zdGF0dXMocCkpCkBAIC0zNTQ2LDMgKzM0NTYsMzQgQEAKIAlmaWxsX2ZpbGVzcGVjKG9uZSwgc2hhMSwgbW9kZSk7CiAJZGlmZl9xdWV1ZSgmZGlmZl9xdWV1ZWRfZGlmZiwgb25lLCB0d28pLT5pc191bm1lcmdlZCA9IDE7CiB9CisKK3N0YXRpYyBjaGFyICpydW5fdGV4dGNvbnYoY29uc3QgY2hhciAqcGdtLCBzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqc3BlYywKKwkJc2l6ZV90ICpvdXRzaXplKQoreworCXN0cnVjdCBkaWZmX3RlbXBmaWxlIHRlbXA7CisJY29uc3QgY2hhciAqYXJndlszXTsKKwljb25zdCBjaGFyICoqYXJnID0gYXJndjsKKwlzdHJ1Y3QgY2hpbGRfcHJvY2VzcyBjaGlsZDsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOworCisJcHJlcGFyZV90ZW1wX2ZpbGUoc3BlYy0+cGF0aCwgJnRlbXAsIHNwZWMpOworCSphcmcrKyA9IHBnbTsKKwkqYXJnKysgPSB0ZW1wLm5hbWU7CisJKmFyZyA9IE5VTEw7CisKKwltZW1zZXQoJmNoaWxkLCAwLCBzaXplb2YoY2hpbGQpKTsKKwljaGlsZC5hcmd2ID0gYXJndjsKKwljaGlsZC5vdXQgPSAtMTsKKwlpZiAoc3RhcnRfY29tbWFuZCgmY2hpbGQpICE9IDAgfHwKKwkgICAgc3RyYnVmX3JlYWQoJmJ1ZiwgY2hpbGQub3V0LCAwKSA8IDAgfHwKKwkgICAgZmluaXNoX2NvbW1hbmQoJmNoaWxkKSAhPSAwKSB7CisJCWlmICh0ZW1wLm5hbWUgPT0gdGVtcC50bXBfcGF0aCkKKwkJCXVubGluayh0ZW1wLm5hbWUpOworCQllcnJvcigiZXJyb3IgcnVubmluZyB0ZXh0Y29udiBjb21tYW5kICclcyciLCBwZ20pOworCQlyZXR1cm4gTlVMTDsKKwl9CisJaWYgKHRlbXAubmFtZSA9PSB0ZW1wLnRtcF9wYXRoKQorCQl1bmxpbmsodGVtcC5uYW1lKTsKKworCXJldHVybiBzdHJidWZfZGV0YWNoKCZidWYsIG91dHNpemUpOworfQpkaWZmIC0tZ2l0IGEvZGlmZi5oIGIvZGlmZi5oCmluZGV4IDdmNTNiZWIuLjQyNTgyZWQgMTAwNjQ0Ci0tLSBhL2RpZmYuaAorKysgYi9kaWZmLmgKQEAgLTY0LDYgKzY0LDggQEAKICNkZWZpbmUgRElGRl9PUFRfUkVMQVRJVkVfTkFNRSAgICAgICAoMSA8PCAxNykKICNkZWZpbmUgRElGRl9PUFRfSUdOT1JFX1NVQk1PRFVMRVMgICAoMSA8PCAxOCkKICNkZWZpbmUgRElGRl9PUFRfRElSU1RBVF9DVU1VTEFUSVZFICAoMSA8PCAxOSkKKyNkZWZpbmUgRElGRl9PUFRfRElSU1RBVF9CWV9GSUxFICAgICAoMSA8PCAyMCkKKyNkZWZpbmUgRElGRl9PUFRfQUxMT1dfVEVYVENPTlYgICAgICAoMSA8PCAyMSkKICNkZWZpbmUgRElGRl9PUFRfVFNUKG9wdHMsIGZsYWcpICAgICgob3B0cyktPmZsYWdzICYgRElGRl9PUFRfIyNmbGFnKQogI2RlZmluZSBESUZGX09QVF9TRVQob3B0cywgZmxhZykgICAgKChvcHRzKS0+ZmxhZ3MgfD0gRElGRl9PUFRfIyNmbGFnKQogI2RlZmluZSBESUZGX09QVF9DTFIob3B0cywgZmxhZykgICAgKChvcHRzKS0+ZmxhZ3MgJj0gfkRJRkZfT1BUXyMjZmxhZykKQEAgLTE2MCw2ICsxNjIsOCBAQAogCiBleHRlcm4gdm9pZCBkaWZmX3RyZWVfY29tYmluZWRfbWVyZ2UoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgaW50LCBzdHJ1Y3QgcmV2X2luZm8gKik7CiAKK3ZvaWQgZGlmZl9zZXRfbW5lbW9uaWNfcHJlZml4KHN0cnVjdCBkaWZmX29wdGlvbnMgKm9wdGlvbnMsIGNvbnN0IGNoYXIgKmEsIGNvbnN0IGNoYXIgKmIpOworCiBleHRlcm4gdm9pZCBkaWZmX2FkZHJlbW92ZShzdHJ1Y3QgZGlmZl9vcHRpb25zICosCiAJCQkgICBpbnQgYWRkcmVtb3ZlLAogCQkJICAgdW5zaWduZWQgbW9kZSwKZGlmZiAtLWdpdCBhL2RpZmZjb3JlLXJlbmFtZS5jIGIvZGlmZmNvcmUtcmVuYW1lLmMKaW5kZXggMTY4YTk1Yi4uMGIwZDZiOCAxMDA2NDQKLS0tIGEvZGlmZmNvcmUtcmVuYW1lLmMKKysrIGIvZGlmZmNvcmUtcmVuYW1lLmMKQEAgLTE1Myw5ICsxNTMsOSBAQAogCSAqIGlzIGEgcG9zc2libGUgc2l6ZSAtIHdlIHJlYWxseSBzaG91bGQgaGF2ZSBhIGZsYWcgdG8KIAkgKiBzYXkgd2hldGhlciB0aGUgc2l6ZSBpcyB2YWxpZCBvciBub3QhKQogCSAqLwotCWlmICghc3JjLT5jbnRfZGF0YSAmJiBkaWZmX3BvcHVsYXRlX2ZpbGVzcGVjKHNyYywgMCkpCisJaWYgKCFzcmMtPmNudF9kYXRhICYmIGRpZmZfcG9wdWxhdGVfZmlsZXNwZWMoc3JjLCAxKSkKIAkJcmV0dXJuIDA7Ci0JaWYgKCFkc3QtPmNudF9kYXRhICYmIGRpZmZfcG9wdWxhdGVfZmlsZXNwZWMoZHN0LCAwKSkKKwlpZiAoIWRzdC0+Y250X2RhdGEgJiYgZGlmZl9wb3B1bGF0ZV9maWxlc3BlYyhkc3QsIDEpKQogCQlyZXR1cm4gMDsKIAogCW1heF9zaXplID0gKChzcmMtPnNpemUgPiBkc3QtPnNpemUpID8gc3JjLT5zaXplIDogZHN0LT5zaXplKTsKQEAgLTE3Myw2ICsxNzMsMTEgQEAKIAlpZiAoYmFzZV9zaXplICogKE1BWF9TQ09SRS1taW5pbXVtX3Njb3JlKSA8IGRlbHRhX3NpemUgKiBNQVhfU0NPUkUpCiAJCXJldHVybiAwOwogCisJaWYgKCFzcmMtPmNudF9kYXRhICYmIGRpZmZfcG9wdWxhdGVfZmlsZXNwZWMoc3JjLCAwKSkKKwkJcmV0dXJuIDA7CisJaWYgKCFkc3QtPmNudF9kYXRhICYmIGRpZmZfcG9wdWxhdGVfZmlsZXNwZWMoZHN0LCAwKSkKKwkJcmV0dXJuIDA7CisKIAlkZWx0YV9saW1pdCA9ICh1bnNpZ25lZCBsb25nKQogCQkoYmFzZV9zaXplICogKE1BWF9TQ09SRS1taW5pbXVtX3Njb3JlKSAvIE1BWF9TQ09SRSk7CiAJaWYgKGRpZmZjb3JlX2NvdW50X2NoYW5nZXMoc3JjLCBkc3QsCmRpZmYgLS1naXQgYS9kaWZmY29yZS5oIGIvZGlmZmNvcmUuaAppbmRleCAxZWJmZGFlLi41YjYzNDU4IDEwMDY0NAotLS0gYS9kaWZmY29yZS5oCisrKyBiL2RpZmZjb3JlLmgKQEAgLTIyLDYgKzIyLDggQEAKIAogI2RlZmluZSBNSU5JTVVNX0JSRUFLX1NJWkUgICAgIDQwMCAvKiBkbyBub3QgYnJlYWsgYSBmaWxlIHNtYWxsZXIgdGhhbiB0aGlzICovCiAKK3N0cnVjdCB1c2VyZGlmZl9kcml2ZXI7CisKIHN0cnVjdCBkaWZmX2ZpbGVzcGVjIHsKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwogCWNoYXIgKnBhdGg7CkBAIC00MCw4ICs0MiwxMCBAQAogI2RlZmluZSBESUZGX0ZJTEVfVkFMSUQoc3BlYykgKCgoc3BlYyktPm1vZGUpICE9IDApCiAJdW5zaWduZWQgc2hvdWxkX2ZyZWUgOiAxOyAvKiBkYXRhIHNob3VsZCBiZSBmcmVlKCknZWQgKi8KIAl1bnNpZ25lZCBzaG91bGRfbXVubWFwIDogMTsgLyogZGF0YSBzaG91bGQgYmUgbXVubWFwKCknZWQgKi8KLQl1bnNpZ25lZCBjaGVja2VkX2F0dHIgOiAxOwotCXVuc2lnbmVkIGlzX2JpbmFyeSA6IDE7IC8qIGRhdGEgc2hvdWxkIGJlIGNvbnNpZGVyZWQgImJpbmFyeSIgKi8KKworCXN0cnVjdCB1c2VyZGlmZl9kcml2ZXIgKmRyaXZlcjsKKwkvKiBkYXRhIHNob3VsZCBiZSBjb25zaWRlcmVkICJiaW5hcnkiOyAtMSBtZWFucyAiZG9uJ3Qga25vdyB5ZXQiICovCisJaW50IGlzX2JpbmFyeTsKIH07CiAKIGV4dGVybiBzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqYWxsb2NfZmlsZXNwZWMoY29uc3QgY2hhciAqKTsKZGlmZiAtLWdpdCBhL2Rpci5jIGIvZGlyLmMKaW5kZXggMDRhNGI5OC4uMmMxOGU0MSAxMDA2NDQKLS0tIGEvZGlyLmMKKysrIGIvZGlyLmMKQEAgLTUyLDExICs1Miw2IEBACiAJcmV0dXJuIHByZWZpeDsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgc3BlY2lhbF9jaGFyKHVuc2lnbmVkIGNoYXIgYzEpCi17Ci0JcmV0dXJuICFjMSB8fCBjMSA9PSAnKicgfHwgYzEgPT0gJ1snIHx8IGMxID09ICc/JyB8fCBjMSA9PSAnXFwnOwotfQotCiAvKgogICogRG9lcyAnbWF0Y2gnIG1hdGNoZXMgdGhlIGdpdmVuIG5hbWU/CiAgKiBBIG1hdGNoIGlzIGZvdW5kIGlmCkBAIC04MCw3ICs3NSw3IEBACiAJZm9yICg7OykgewogCQl1bnNpZ25lZCBjaGFyIGMxID0gKm1hdGNoOwogCQl1bnNpZ25lZCBjaGFyIGMyID0gKm5hbWU7Ci0JCWlmIChzcGVjaWFsX2NoYXIoYzEpKQorCQlpZiAoaXNzcGVjaWFsKGMxKSkKIAkJCWJyZWFrOwogCQlpZiAoYzEgIT0gYzIpCiAJCQlyZXR1cm4gMDsKQEAgLTM4Nyw3ICszODIsNyBAQAogCXJldHVybiBlbnQ7CiB9CiAKLXN0cnVjdCBkaXJfZW50cnkgKmRpcl9hZGRfbmFtZShzdHJ1Y3QgZGlyX3N0cnVjdCAqZGlyLCBjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IGxlbikKK3N0YXRpYyBzdHJ1Y3QgZGlyX2VudHJ5ICpkaXJfYWRkX25hbWUoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBsZW4pCiB7CiAJaWYgKGNhY2hlX25hbWVfZXhpc3RzKHBhdGhuYW1lLCBsZW4sIGlnbm9yZV9jYXNlKSkKIAkJcmV0dXJuIE5VTEw7CkBAIC0zOTYsNyArMzkxLDcgQEAKIAlyZXR1cm4gZGlyLT5lbnRyaWVzW2Rpci0+bnIrK10gPSBkaXJfZW50cnlfbmV3KHBhdGhuYW1lLCBsZW4pOwogfQogCi1zdHJ1Y3QgZGlyX2VudHJ5ICpkaXJfYWRkX2lnbm9yZWQoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBsZW4pCitzdGF0aWMgc3RydWN0IGRpcl9lbnRyeSAqZGlyX2FkZF9pZ25vcmVkKHN0cnVjdCBkaXJfc3RydWN0ICpkaXIsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgbGVuKQogewogCWlmIChjYWNoZV9uYW1lX3BvcyhwYXRobmFtZSwgbGVuKSA+PSAwKQogCQlyZXR1cm4gTlVMTDsKQEAgLTY4MCwxNyArNjc1LDEyIEBACiAgKi8KIHN0YXRpYyBpbnQgc2ltcGxlX2xlbmd0aChjb25zdCBjaGFyICptYXRjaCkKIHsKLQljb25zdCBjaGFyIHNwZWNpYWxbMjU2XSA9IHsKLQkJWzBdID0gMSwgWyc/J10gPSAxLAotCQlbJ1xcJ10gPSAxLCBbJyonXSA9IDEsCi0JCVsnWyddID0gMQotCX07CiAJaW50IGxlbiA9IC0xOwogCiAJZm9yICg7OykgewogCQl1bnNpZ25lZCBjaGFyIGMgPSAqbWF0Y2grKzsKIAkJbGVuKys7Ci0JCWlmIChzcGVjaWFsW2NdKQorCQlpZiAoaXNzcGVjaWFsKGMpKQogCQkJcmV0dXJuIGxlbjsKIAl9CiB9CkBAIC03MjcsOCArNzE3LDEyIEBACiAKIGludCByZWFkX2RpcmVjdG9yeShzdHJ1Y3QgZGlyX3N0cnVjdCAqZGlyLCBjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICpiYXNlLCBpbnQgYmFzZWxlbiwgY29uc3QgY2hhciAqKnBhdGhzcGVjKQogewotCXN0cnVjdCBwYXRoX3NpbXBsaWZ5ICpzaW1wbGlmeSA9IGNyZWF0ZV9zaW1wbGlmeShwYXRoc3BlYyk7CisJc3RydWN0IHBhdGhfc2ltcGxpZnkgKnNpbXBsaWZ5OwogCisJaWYgKGhhc19zeW1saW5rX2xlYWRpbmdfcGF0aChzdHJsZW4ocGF0aCksIHBhdGgpKQorCQlyZXR1cm4gZGlyLT5ucjsKKworCXNpbXBsaWZ5ID0gY3JlYXRlX3NpbXBsaWZ5KHBhdGhzcGVjKTsKIAlyZWFkX2RpcmVjdG9yeV9yZWN1cnNpdmUoZGlyLCBwYXRoLCBiYXNlLCBiYXNlbGVuLCAwLCBzaW1wbGlmeSk7CiAJZnJlZV9zaW1wbGlmeShzaW1wbGlmeSk7CiAJcXNvcnQoZGlyLT5lbnRyaWVzLCBkaXItPm5yLCBzaXplb2Yoc3RydWN0IGRpcl9lbnRyeSAqKSwgY21wX25hbWUpOwpkaWZmIC0tZ2l0IGEvZGlyLmggYi9kaXIuaAppbmRleCAyNzhlZTQyLi43Njg0MjVhIDEwMDY0NAotLS0gYS9kaXIuaAorKysgYi9kaXIuaApAQCAtNzMsNyArNzMsNiBAQAogZXh0ZXJuIHZvaWQgYWRkX2V4Y2x1ZGUoY29uc3QgY2hhciAqc3RyaW5nLCBjb25zdCBjaGFyICpiYXNlLAogCQkJaW50IGJhc2VsZW4sIHN0cnVjdCBleGNsdWRlX2xpc3QgKndoaWNoKTsKIGV4dGVybiBpbnQgZmlsZV9leGlzdHMoY29uc3QgY2hhciAqKTsKLWV4dGVybiBzdHJ1Y3QgZGlyX2VudHJ5ICpkaXJfYWRkX25hbWUoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBsZW4pOwogCiBleHRlcm4gY2hhciAqZ2V0X3JlbGF0aXZlX2N3ZChjaGFyICpidWZmZXIsIGludCBzaXplLCBjb25zdCBjaGFyICpkaXIpOwogZXh0ZXJuIGludCBpc19pbnNpZGVfZGlyKGNvbnN0IGNoYXIgKmRpcik7CmRpZmYgLS1naXQgYS9lZGl0b3IuYyBiL2VkaXRvci5jCmluZGV4IGVlYmMzZTkuLjRkNDY5ZDAgMTAwNjQ0Ci0tLSBhL2VkaXRvci5jCisrKyBiL2VkaXRvci5jCkBAIC0yNiw5ICsyNiw4IEBACiAJCWludCBpID0gMDsKIAkJaW50IGZhaWxlZDsKIAkJY29uc3QgY2hhciAqYXJnc1s2XTsKLQkJc3RydWN0IHN0cmJ1ZiBhcmcwOworCQlzdHJ1Y3Qgc3RyYnVmIGFyZzAgPSBTVFJCVUZfSU5JVDsKIAotCQlzdHJidWZfaW5pdCgmYXJnMCwgMCk7CiAJCWlmIChzdHJjc3BuKGVkaXRvciwgIiQgXHQnIikgIT0gbGVuKSB7CiAJCQkvKiB0aGVyZSBhcmUgc3BlY2lhbHMgKi8KIAkJCXN0cmJ1Zl9hZGRmKCZhcmcwLCAiJXMgXCIkQFwiIiwgZWRpdG9yKTsKZGlmZiAtLWdpdCBhL2Vudmlyb25tZW50LmMgYi9lbnZpcm9ubWVudC5jCmluZGV4IDllYmY0ODUuLmUyNzhiY2UgMTAwNjQ0Ci0tLSBhL2Vudmlyb25tZW50LmMKKysrIGIvZW52aXJvbm1lbnQuYwpAQCAtNDMsNiArNDMsOSBAQAogZW51bSBicmFuY2hfdHJhY2sgZ2l0X2JyYW5jaF90cmFjayA9IEJSQU5DSF9UUkFDS19SRU1PVEU7CiBlbnVtIHJlYmFzZV9zZXR1cF90eXBlIGF1dG9yZWJhc2UgPSBBVVRPUkVCQVNFX05FVkVSOwogCisvKiBQYXJhbGxlbCBpbmRleCBzdGF0IGRhdGEgcHJlbG9hZD8gKi8KK2ludCBjb3JlX3ByZWxvYWRfaW5kZXggPSAwOworCiAvKiBUaGlzIGlzIHNldCBieSBzZXR1cF9naXRfZGlyX2dlbnRseSgpIGFuZC9vciBnaXRfZGVmYXVsdF9jb25maWcoKSAqLwogY2hhciAqZ2l0X3dvcmtfdHJlZV9jZmc7CiBzdGF0aWMgY2hhciAqd29ya190cmVlOwpAQCAtODAsNiArODMsMTEgQEAKIAlyZXR1cm4gaXNfYmFyZV9yZXBvc2l0b3J5X2NmZyAmJiAhZ2V0X2dpdF93b3JrX3RyZWUoKTsKIH0KIAoraW50IGhhdmVfZ2l0X2Rpcih2b2lkKQoreworCXJldHVybiAhIWdpdF9kaXI7Cit9CisKIGNvbnN0IGNoYXIgKmdldF9naXRfZGlyKHZvaWQpCiB7CiAJaWYgKCFnaXRfZGlyKQpkaWZmIC0tZ2l0IGEvZXhlY19jbWQuYyBiL2V4ZWNfY21kLmMKaW5kZXggY2U2NzQxZS4uY2RkMzVmOSAxMDA2NDQKLS0tIGEvZXhlY19jbWQuYworKysgYi9leGVjX2NtZC5jCkBAIC01OSw5ICs1OSw3IEBACiB2b2lkIHNldHVwX3BhdGgodm9pZCkKIHsKIAljb25zdCBjaGFyICpvbGRfcGF0aCA9IGdldGVudigiUEFUSCIpOwotCXN0cnVjdCBzdHJidWYgbmV3X3BhdGg7Ci0KLQlzdHJidWZfaW5pdCgmbmV3X3BhdGgsIDApOworCXN0cnVjdCBzdHJidWYgbmV3X3BhdGggPSBTVFJCVUZfSU5JVDsKIAogCWFkZF9wYXRoKCZuZXdfcGF0aCwgYXJndl9leGVjX3BhdGgpOwogCWFkZF9wYXRoKCZuZXdfcGF0aCwgZ2V0ZW52KEVYRUNfUEFUSF9FTlZJUk9OTUVOVCkpOwpkaWZmIC0tZ2l0IGEvZmFzdC1pbXBvcnQuYyBiL2Zhc3QtaW1wb3J0LmMKaW5kZXggNWJjOWNlMi4uMjNlOTcwZCAxMDA2NDQKLS0tIGEvZmFzdC1pbXBvcnQuYworKysgYi9mYXN0LWltcG9ydC5jCkBAIC0zNzYsNyArMzc2LDcgQEAKIAogc3RhdGljIHZvaWQgd3JpdGVfY3Jhc2hfcmVwb3J0KGNvbnN0IGNoYXIgKmVycikKIHsKLQljaGFyICpsb2MgPSBnaXRfcGF0aCgiZmFzdF9pbXBvcnRfY3Jhc2hfJWQiLCBnZXRwaWQoKSk7CisJY2hhciAqbG9jID0gZ2l0X3BhdGgoImZhc3RfaW1wb3J0X2NyYXNoXyUiUFJJdU1BWCwgKHVpbnRtYXhfdCkgZ2V0cGlkKCkpOwogCUZJTEUgKnJwdCA9IGZvcGVuKGxvYywgInciKTsKIAlzdHJ1Y3QgYnJhbmNoICpiOwogCXVuc2lnbmVkIGxvbmcgbHU7CkBAIC0zOTAsOCArMzkwLDggQEAKIAlmcHJpbnRmKHN0ZGVyciwgImZhc3QtaW1wb3J0OiBkdW1waW5nIGNyYXNoIHJlcG9ydCB0byAlc1xuIiwgbG9jKTsKIAogCWZwcmludGYocnB0LCAiZmFzdC1pbXBvcnQgY3Jhc2ggcmVwb3J0OlxuIik7Ci0JZnByaW50ZihycHQsICIgICAgZmFzdC1pbXBvcnQgcHJvY2VzczogJWRcbiIsIGdldHBpZCgpKTsKLQlmcHJpbnRmKHJwdCwgIiAgICBwYXJlbnQgcHJvY2VzcyAgICAgOiAlZFxuIiwgZ2V0cHBpZCgpKTsKKwlmcHJpbnRmKHJwdCwgIiAgICBmYXN0LWltcG9ydCBwcm9jZXNzOiAlIlBSSXVNQVgiXG4iLCAodWludG1heF90KSBnZXRwaWQoKSk7CisJZnByaW50ZihycHQsICIgICAgcGFyZW50IHByb2Nlc3MgICAgIDogJSJQUkl1TUFYIlxuIiwgKHVpbnRtYXhfdCkgZ2V0cHBpZCgpKTsKIAlmcHJpbnRmKHJwdCwgIiAgICBhdCAlc1xuIiwgc2hvd19kYXRlKHRpbWUoTlVMTCksIDAsIERBVEVfTE9DQUwpKTsKIAlmcHV0YygnXG4nLCBycHQpOwogCkBAIC01NTQsNiArNTU0LDEwIEBACiAJc3RydWN0IG1lbV9wb29sICpwOwogCXZvaWQgKnI7CiAKKwkvKiByb3VuZCB1cCB0byBhICd1aW50bWF4X3QnIGFsaWdubWVudCAqLworCWlmIChsZW4gJiAoc2l6ZW9mKHVpbnRtYXhfdCkgLSAxKSkKKwkJbGVuICs9IHNpemVvZih1aW50bWF4X3QpIC0gKGxlbiAmIChzaXplb2YodWludG1heF90KSAtIDEpKTsKKwogCWZvciAocCA9IG1lbV9wb29sOyBwOyBwID0gcC0+bmV4dF9wb29sKQogCQlpZiAoKHAtPmVuZCAtIHAtPm5leHRfZnJlZSA+PSBsZW4pKQogCQkJYnJlYWs7CkBAIC01NzIsOSArNTc2LDYgQEAKIAl9CiAKIAlyID0gcC0+bmV4dF9mcmVlOwotCS8qIHJvdW5kIG91dCB0byBhICd1aW50bWF4X3QnIGFsaWdubWVudCAqLwotCWlmIChsZW4gJiAoc2l6ZW9mKHVpbnRtYXhfdCkgLSAxKSkKLQkJbGVuICs9IHNpemVvZih1aW50bWF4X3QpIC0gKGxlbiAmIChzaXplb2YodWludG1heF90KSAtIDEpKTsKIAlwLT5uZXh0X2ZyZWUgKz0gbGVuOwogCXJldHVybiByOwogfQpAQCAtODQ1LDcgKzg0Niw3IEBACiBzdGF0aWMgY2hhciAqY3JlYXRlX2luZGV4KHZvaWQpCiB7CiAJc3RhdGljIGNoYXIgdG1wZmlsZVtQQVRIX01BWF07Ci0JU0hBX0NUWCBjdHg7CisJZ2l0X1NIQV9DVFggY3R4OwogCXN0cnVjdCBzaGExZmlsZSAqZjsKIAlzdHJ1Y3Qgb2JqZWN0X2VudHJ5ICoqaWR4LCAqKmMsICoqbGFzdCwgKmU7CiAJc3RydWN0IG9iamVjdF9lbnRyeV9wb29sICpvOwpAQCAtODgyLDE3ICs4ODMsMTcgQEAKIAlpZHhfZmQgPSB4bWtzdGVtcCh0bXBmaWxlKTsKIAlmID0gc2hhMWZkKGlkeF9mZCwgdG1wZmlsZSk7CiAJc2hhMXdyaXRlKGYsIGFycmF5LCAyNTYgKiBzaXplb2YoaW50KSk7Ci0JU0hBMV9Jbml0KCZjdHgpOworCWdpdF9TSEExX0luaXQoJmN0eCk7CiAJZm9yIChjID0gaWR4OyBjICE9IGxhc3Q7IGMrKykgewogCQl1aW50MzJfdCBvZmZzZXQgPSBodG9ubCgoKmMpLT5vZmZzZXQpOwogCQlzaGExd3JpdGUoZiwgJm9mZnNldCwgNCk7CiAJCXNoYTF3cml0ZShmLCAoKmMpLT5zaGExLCBzaXplb2YoKCpjKS0+c2hhMSkpOwotCQlTSEExX1VwZGF0ZSgmY3R4LCAoKmMpLT5zaGExLCAyMCk7CisJCWdpdF9TSEExX1VwZGF0ZSgmY3R4LCAoKmMpLT5zaGExLCAyMCk7CiAJfQogCXNoYTF3cml0ZShmLCBwYWNrX2RhdGEtPnNoYTEsIHNpemVvZihwYWNrX2RhdGEtPnNoYTEpKTsKIAlzaGExY2xvc2UoZiwgTlVMTCwgQ1NVTV9GU1lOQyk7CiAJZnJlZShpZHgpOwotCVNIQTFfRmluYWwocGFja19kYXRhLT5zaGExLCAmY3R4KTsKKwlnaXRfU0hBMV9GaW5hbChwYWNrX2RhdGEtPnNoYTEsICZjdHgpOwogCXJldHVybiB0bXBmaWxlOwogfQogCkBAIC0xMDM2LDE1ICsxMDM3LDE1IEBACiAJdW5zaWduZWQgY2hhciBoZHJbOTZdOwogCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CiAJdW5zaWduZWQgbG9uZyBoZHJsZW4sIGRlbHRhbGVuOwotCVNIQV9DVFggYzsKKwlnaXRfU0hBX0NUWCBjOwogCXpfc3RyZWFtIHM7CiAKIAloZHJsZW4gPSBzcHJpbnRmKChjaGFyKiloZHIsIiVzICVsdSIsIHR5cGVuYW1lKHR5cGUpLAogCQkodW5zaWduZWQgbG9uZylkYXQtPmxlbikgKyAxOwotCVNIQTFfSW5pdCgmYyk7Ci0JU0hBMV9VcGRhdGUoJmMsIGhkciwgaGRybGVuKTsKLQlTSEExX1VwZGF0ZSgmYywgZGF0LT5idWYsIGRhdC0+bGVuKTsKLQlTSEExX0ZpbmFsKHNoYTEsICZjKTsKKwlnaXRfU0hBMV9Jbml0KCZjKTsKKwlnaXRfU0hBMV9VcGRhdGUoJmMsIGhkciwgaGRybGVuKTsKKwlnaXRfU0hBMV9VcGRhdGUoJmMsIGRhdC0+YnVmLCBkYXQtPmxlbik7CisJZ2l0X1NIQTFfRmluYWwoc2hhMSwgJmMpOwogCWlmIChzaGExb3V0KQogCQloYXNoY3B5KHNoYTFvdXQsIHNoYTEpOwogCkBAIC0xNzQ4LDkgKzE3NDksMTIgQEAKIHsKIAljb25zdCBjaGFyICpvcmlnX3NyYyA9IHNyYzsKIAljaGFyICplbmRwLCBzaWduOworCXVuc2lnbmVkIGxvbmcgZGF0ZTsKIAotCXN0cnRvdWwoc3JjLCAmZW5kcCwgMTApOwotCWlmIChlbmRwID09IHNyYyB8fCAqZW5kcCAhPSAnICcpCisJZXJybm8gPSAwOworCisJZGF0ZSA9IHN0cnRvdWwoc3JjLCAmZW5kcCwgMTApOworCWlmIChlcnJubyB8fCBlbmRwID09IHNyYyB8fCAqZW5kcCAhPSAnICcpCiAJCXJldHVybiAtMTsKIAogCXNyYyA9IGVuZHAgKyAxOwpAQCAtMTc1OCw4ICsxNzYyLDggQEAKIAkJcmV0dXJuIC0xOwogCXNpZ24gPSAqc3JjOwogCi0Jc3RydG91bChzcmMgKyAxLCAmZW5kcCwgMTApOwotCWlmIChlbmRwID09IHNyYyB8fCAqZW5kcCB8fCAoZW5kcCAtIG9yaWdfc3JjKSA+PSBtYXhsZW4pCisJZGF0ZSA9IHN0cnRvdWwoc3JjICsgMSwgJmVuZHAsIDEwKTsKKwlpZiAoZXJybm8gfHwgZW5kcCA9PSBzcmMgfHwgKmVuZHAgfHwgKGVuZHAgLSBvcmlnX3NyYykgPj0gbWF4bGVuKQogCQlyZXR1cm4gLTE7CiAKIAlzdHJjcHkocmVzdWx0LCBvcmlnX3NyYyk7CmRpZmYgLS1naXQgYS9mc2NrLmMgYi9mc2NrLmMKaW5kZXggYWI2NGMxOC4uOTdmNzZjNSAxMDA2NDQKLS0tIGEvZnNjay5jCisrKyBiL2ZzY2suYwpAQCAtMzA3LDkgKzMwNyw4IEBACiB7CiAJdmFfbGlzdCBhcDsKIAlpbnQgbGVuOwotCXN0cnVjdCBzdHJidWYgc2I7CisJc3RydWN0IHN0cmJ1ZiBzYiA9IFNUUkJVRl9JTklUOwogCi0Jc3RyYnVmX2luaXQoJnNiLCAwKTsKIAlzdHJidWZfYWRkZigmc2IsICJvYmplY3QgJXM6Iiwgb2JqLT5zaGExP3NoYTFfdG9faGV4KG9iai0+c2hhMSk6IihudWxsKSIpOwogCiAJdmFfc3RhcnQoYXAsIGZtdCk7CmRpZmYgLS1naXQgYS9naXQtYW0uc2ggYi9naXQtYW0uc2gKaW5kZXggYWE2MDI2MS4uNGIxNTdmZSAxMDA3NTUKLS0tIGEvZ2l0LWFtLnNoCisrKyBiL2dpdC1hbS5zaApAQCAtMjQ3LDEwICsyNDcsMTEgQEAKIAkJZXhpdCAxCiAJfQogCi0JIyAtcywgLXUsIC1rIGFuZCAtLXdoaXRlc3BhY2UgZmxhZ3MgYXJlIGtlcHQgZm9yIHRoZQotCSMgcmVzdW1pbmcgc2Vzc2lvbiBhZnRlciBhIHBhdGNoIGZhaWx1cmUuCi0JIyAtMyBhbmQgLWkgY2FuIGFuZCBtdXN0IGJlIGdpdmVuIHdoZW4gcmVzdW1pbmcuCi0JZWNobyAiICR3cyIgPiIkZG90ZXN0L3doaXRlc3BhY2UiCisJIyAtcywgLXUsIC1rLCAtLXdoaXRlc3BhY2UsIC0zLCAtQyBhbmQgLXAgZmxhZ3MgYXJlIGtlcHQKKwkjIGZvciB0aGUgcmVzdW1pbmcgc2Vzc2lvbiBhZnRlciBhIHBhdGNoIGZhaWx1cmUuCisJIyAtaSBjYW4gYW5kIG11c3QgYmUgZ2l2ZW4gd2hlbiByZXN1bWluZy4KKwllY2hvICIgJGdpdF9hcHBseV9vcHQiID4iJGRvdGVzdC9hcHBseS1vcHQiCisJZWNobyAiJHRocmVld2F5IiA+IiRkb3Rlc3QvdGhyZWV3YXkiCiAJZWNobyAiJHNpZ24iID4iJGRvdGVzdC9zaWduIgogCWVjaG8gIiR1dGY4IiA+IiRkb3Rlc3QvdXRmOCIKIAllY2hvICIka2VlcCIgPiIkZG90ZXN0L2tlZXAiCkBAIC0yODMsNyArMjg0LDExIEBACiB0aGVuCiAJa2VlcD0tawogZmkKLXdzPWBjYXQgIiRkb3Rlc3Qvd2hpdGVzcGFjZSJgCitpZiB0ZXN0ICIkKGNhdCAiJGRvdGVzdC90aHJlZXdheSIpIiA9IHQKK3RoZW4KKwl0aHJlZXdheT10CitmaQorZ2l0X2FwcGx5X29wdD0kKGNhdCAiJGRvdGVzdC9hcHBseS1vcHQiKQogaWYgdGVzdCAiJChjYXQgIiRkb3Rlc3Qvc2lnbiIpIiA9IHQKIHRoZW4KIAlTSUdOT0ZGPWBnaXQgdmFyIEdJVF9DT01NSVRURVJfSURFTlQgfCBzZWQgLWUgJwpkaWZmIC0tZ2l0IGEvZ2l0LWJpc2VjdC5zaCBiL2dpdC1iaXNlY3Quc2gKaW5kZXggYjk1ZGJiYi4uMTBhZDM0MCAxMDA3NTUKLS0tIGEvZ2l0LWJpc2VjdC5zaAorKysgYi9naXQtYmlzZWN0LnNoCkBAIC05LDcgKzksNyBAQAogICAgICAgICBtYXJrIDxyZXY+IGEga25vd24tYmFkIHJldmlzaW9uLgogZ2l0IGJpc2VjdCBnb29kIFs8cmV2Pi4uLl0KICAgICAgICAgbWFyayA8cmV2Pi4uLiBrbm93bi1nb29kIHJldmlzaW9ucy4KLWdpdCBiaXNlY3Qgc2tpcCBbPHJldj4uLi5dCitnaXQgYmlzZWN0IHNraXAgWyg8cmV2Pnw8cmFuZ2U+KS4uLl0KICAgICAgICAgbWFyayA8cmV2Pi4uLiB1bnRlc3RhYmxlIHJldmlzaW9ucy4KIGdpdCBiaXNlY3QgbmV4dAogICAgICAgICBmaW5kIG5leHQgYmlzZWN0aW9uIHRvIHRlc3QgYW5kIGNoZWNrIGl0IG91dC4KQEAgLTE3Miw2ICsxNzIsNDAgQEAKIAl0ZXN0IC1uICIkbm9sb2ciIHx8IGVjaG8gImdpdCBiaXNlY3QgJHN0YXRlICRyZXYiID4+IiRHSVRfRElSL0JJU0VDVF9MT0ciCiB9CiAKK2lzX2V4cGVjdGVkX3JldigpIHsKKwl0ZXN0IC1mICIkR0lUX0RJUi9CSVNFQ1RfRVhQRUNURURfUkVWIiAmJgorCXRlc3QgIiQxIiA9ICQoY2F0ICIkR0lUX0RJUi9CSVNFQ1RfRVhQRUNURURfUkVWIikKK30KKworbWFya19leHBlY3RlZF9yZXYoKSB7CisJZWNobyAiJDEiID4gIiRHSVRfRElSL0JJU0VDVF9FWFBFQ1RFRF9SRVYiCit9CisKK2NoZWNrX2V4cGVjdGVkX3JldnMoKSB7CisJZm9yIF9yZXYgaW4gIiRAIjsgZG8KKwkJaWYgISBpc19leHBlY3RlZF9yZXYgIiRfcmV2IjsgdGhlbgorCQkJcm0gLWYgIiRHSVRfRElSL0JJU0VDVF9BTkNFU1RPUlNfT0siCisJCQlybSAtZiAiJEdJVF9ESVIvQklTRUNUX0VYUEVDVEVEX1JFViIKKwkJCXJldHVybgorCQlmaQorCWRvbmUKK30KKworYmlzZWN0X3NraXAoKSB7CisgICAgICAgIGFsbD0nJworCWZvciBhcmcgaW4gIiRAIgorCWRvCisJICAgIGNhc2UgIiRhcmciIGluCisgICAgICAgICAgICAqLi4qKQorICAgICAgICAgICAgICAgIHJldnM9JChnaXQgcmV2LWxpc3QgIiRhcmciKSB8fCBkaWUgIkJhZCByZXYgaW5wdXQ6ICRhcmciIDs7CisgICAgICAgICAgICAqKQorICAgICAgICAgICAgICAgIHJldnM9JChzcSAiJGFyZyIpIDs7CisJICAgIGVzYWMKKyAgICAgICAgICAgIGFsbD0iJGFsbCAkcmV2cyIKKyAgICAgICAgZG9uZQorICAgICAgICBldmFsIGJpc2VjdF9zdGF0ZSAnc2tpcCcgJGFsbAorfQorCiBiaXNlY3Rfc3RhdGUoKSB7CiAJYmlzZWN0X2F1dG9zdGFydAogCXN0YXRlPSQxCkBAIC0xODEsNyArMjE1LDggQEAKIAkxLGJhZHwxLGdvb2R8MSxza2lwKQogCQlyZXY9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQpIHx8CiAJCQlkaWUgIkJhZCByZXYgaW5wdXQ6IEhFQUQiCi0JCWJpc2VjdF93cml0ZSAiJHN0YXRlIiAiJHJldiIgOzsKKwkJYmlzZWN0X3dyaXRlICIkc3RhdGUiICIkcmV2IgorCQljaGVja19leHBlY3RlZF9yZXZzICIkcmV2IiA7OwogCTIsYmFkfCosZ29vZHwqLHNraXApCiAJCXNoaWZ0CiAJCWV2YWw9JycKQEAgLTE5MSw3ICsyMjYsOCBAQAogCQkJCWRpZSAiQmFkIHJldiBpbnB1dDogJHJldiIKIAkJCWV2YWw9IiRldmFsIGJpc2VjdF93cml0ZSAnJHN0YXRlJyAnJHNoYSc7ICIKIAkJZG9uZQotCQlldmFsICIkZXZhbCIgOzsKKwkJZXZhbCAiJGV2YWwiCisJCWNoZWNrX2V4cGVjdGVkX3JldnMgIiRAIiA7OwogCSosYmFkKQogCQlkaWUgIidnaXQgYmlzZWN0IGJhZCcgY2FuIHRha2Ugb25seSBvbmUgYXJndW1lbnQuIiA7OwogCSopCkBAIC0yNDMsMjcgKzI3OSwxMiBAQAogCWJpc2VjdF9uZXh0X2NoZWNrICYmIGJpc2VjdF9uZXh0IHx8IDoKIH0KIAotZXZhbF9yZXZfbGlzdCgpIHsKLQlfZXZhbD0iJDEiCi0KLQlldmFsICRfZXZhbAotCXJlcz0kPwotCi0JaWYgWyAkcmVzIC1uZSAwIF07IHRoZW4KLQkJZWNobyA+JjIgIidnaXQgcmV2LWxpc3QgLS1iaXNlY3QtdmFycycgZmFpbGVkOiIKLQkJZWNobyA+JjIgIm1heWJlIHlvdSBtaXN0YWtlIGdvb2QgYW5kIGJhZCByZXZzPyIKLQkJZXhpdCAkcmVzCi0JZmkKLQotCXJldHVybiAkcmVzCi19Ci0KIGZpbHRlcl9za2lwcGVkKCkgewogCV9ldmFsPSIkMSIKIAlfc2tpcD0iJDIiCiAKIAlpZiBbIC16ICIkX3NraXAiIF07IHRoZW4KLQkJZXZhbF9yZXZfbGlzdCAiJF9ldmFsIiB8IHsKKwkJZXZhbCAiJF9ldmFsIiB8IHsKIAkJCXdoaWxlIHJlYWQgbGluZQogCQkJZG8KIAkJCQllY2hvICIkbGluZSAmJiIKQEAgLTI3NSw3ICsyOTYsNyBAQAogCiAJIyBMZXQncyBwYXJzZSB0aGUgb3V0cHV0IG9mOgogCSMgImdpdCByZXYtbGlzdCAtLWJpc2VjdC12YXJzIC0tYmlzZWN0LWFsbCAuLi4iCi0JZXZhbF9yZXZfbGlzdCAiJF9ldmFsIiB8IHsKKwlldmFsICIkX2V2YWwiIHwgewogCQlWQVJTPSBGT1VORD0gVFJJRUQ9CiAJCXdoaWxlIHJlYWQgaGFzaCBsaW5lCiAJCWRvCkBAIC0zNDQsMjAgKzM2NSwxMzMgQEAKIAlmaQogfQogCitiaXNlY3RfY2hlY2tvdXQoKSB7CisJX3Jldj0iJDEiCisJX21zZz0iJDIiCisJZWNobyAiQmlzZWN0aW5nOiAkX21zZyIKKwltYXJrX2V4cGVjdGVkX3JldiAiJF9yZXYiCisJZ2l0IGNoZWNrb3V0IC1xICIkX3JldiIgfHwgZXhpdAorCWdpdCBzaG93LWJyYW5jaCAiJF9yZXYiCit9CisKK2lzX2Ftb25nKCkgeworCV9yZXY9IiQxIgorCV9saXN0PSIkMiIKKwljYXNlICIkX2xpc3QiIGluICokX3JldiopIHJldHVybiAwIDs7IGVzYWMKKwlyZXR1cm4gMQorfQorCitoYW5kbGVfYmFkX21lcmdlX2Jhc2UoKSB7CisJX2JhZG1iPSIkMSIKKwlfZ29vZD0iJDIiCisJaWYgaXNfZXhwZWN0ZWRfcmV2ICIkX2JhZG1iIjsgdGhlbgorCQljYXQgPiYyIDw8RU9GCitUaGUgbWVyZ2UgYmFzZSAkX2JhZG1iIGlzIGJhZC4KK1RoaXMgbWVhbnMgdGhlIGJ1ZyBoYXMgYmVlbiBmaXhlZCBiZXR3ZWVuICRfYmFkbWIgYW5kIFskX2dvb2RdLgorRU9GCisJCWV4aXQgMworCWVsc2UKKwkJY2F0ID4mMiA8PEVPRgorU29tZSBnb29kIHJldnMgYXJlIG5vdCBhbmNlc3RvciBvZiB0aGUgYmFkIHJldi4KK2dpdCBiaXNlY3QgY2Fubm90IHdvcmsgcHJvcGVybHkgaW4gdGhpcyBjYXNlLgorTWF5YmUgeW91IG1pc3Rha2UgZ29vZCBhbmQgYmFkIHJldnM/CitFT0YKKwkJZXhpdCAxCisJZmkKK30KKworaGFuZGxlX3NraXBwZWRfbWVyZ2VfYmFzZSgpIHsKKwlfbWI9IiQxIgorCV9iYWQ9IiQyIgorCV9nb29kPSIkMyIKKwljYXQgPiYyIDw8RU9GCitXYXJuaW5nOiB0aGUgbWVyZ2UgYmFzZSBiZXR3ZWVuICRfYmFkIGFuZCBbJF9nb29kXSBtdXN0IGJlIHNraXBwZWQuCitTbyB3ZSBjYW5ub3QgYmUgc3VyZSB0aGUgZmlyc3QgYmFkIGNvbW1pdCBpcyBiZXR3ZWVuICRfbWIgYW5kICRfYmFkLgorV2UgY29udGludWUgYW55d2F5LgorRU9GCit9CisKKyMKKyMgImNoZWNrX21lcmdlX2Jhc2VzIiBjaGVja3MgdGhhdCBtZXJnZSBiYXNlcyBhcmUgbm90ICJiYWQiLgorIworIyAtIElmIG9uZSBpcyAiZ29vZCIsIHRoYXQncyBnb29kLCB3ZSBoYXZlIG5vdGhpbmcgdG8gZG8uCisjIC0gSWYgb25lIGlzICJiYWQiLCBpdCBtZWFucyB0aGUgdXNlciBhc3N1bWVkIHNvbWV0aGluZyB3cm9uZworIyBhbmQgd2UgbXVzdCBleGl0LgorIyAtIElmIG9uZSBpcyAic2tpcHBlZCIsIHdlIGNhbid0IGtub3cgYnV0IHdlIHNob3VsZCB3YXJuLgorIyAtIElmIHdlIGRvbid0IGtub3csIHdlIHNob3VsZCBjaGVjayBpdCBvdXQgYW5kIGFzayB0aGUgdXNlciB0byB0ZXN0LgorIworIyBJbiB0aGUgbGFzdCBjYXNlIHdlIHdpbGwgcmV0dXJuIDEsIGFuZCBvdGhlcndpc2UgMC4KKyMKK2NoZWNrX21lcmdlX2Jhc2VzKCkgeworCV9iYWQ9IiQxIgorCV9nb29kPSIkMiIKKwlfc2tpcD0iJDMiCisJZm9yIF9tYiBpbiAkKGdpdCBtZXJnZS1iYXNlIC0tYWxsICRfYmFkICRfZ29vZCkKKwlkbworCQlpZiBpc19hbW9uZyAiJF9tYiIgIiRfZ29vZCI7IHRoZW4KKwkJCWNvbnRpbnVlCisJCWVsaWYgdGVzdCAiJF9tYiIgPSAiJF9iYWQiOyB0aGVuCisJCQloYW5kbGVfYmFkX21lcmdlX2Jhc2UgIiRfYmFkIiAiJF9nb29kIgorCQllbGlmIGlzX2Ftb25nICIkX21iIiAiJF9za2lwIjsgdGhlbgorCQkJaGFuZGxlX3NraXBwZWRfbWVyZ2VfYmFzZSAiJF9tYiIgIiRfYmFkIiAiJF9nb29kIgorCQllbHNlCisJCQliaXNlY3RfY2hlY2tvdXQgIiRfbWIiICJhIG1lcmdlIGJhc2UgbXVzdCBiZSB0ZXN0ZWQiCisJCQlyZXR1cm4gMQorCQlmaQorCWRvbmUKKwlyZXR1cm4gMAorfQorCisjCisjICJjaGVja19nb29kX2FyZV9hbmNlc3RvcnNfb2ZfYmFkIiBjaGVja3MgdGhhdCBhbGwgImdvb2QiIHJldnMgYXJlCisjIGFuY2VzdG9yIG9mIHRoZSAiYmFkIiByZXYuCisjCisjIElmIHRoYXQncyBub3QgdGhlIGNhc2UsIHdlIG5lZWQgdG8gY2hlY2sgdGhlIG1lcmdlIGJhc2VzLgorIyBJZiBhIG1lcmdlIGJhc2UgbXVzdCBiZSB0ZXN0ZWQgYnkgdGhlIHVzZXIgd2UgcmV0dXJuIDEgYW5kCisjIG90aGVyd2lzZSAwLgorIworY2hlY2tfZ29vZF9hcmVfYW5jZXN0b3JzX29mX2JhZCgpIHsKKwl0ZXN0IC1mICIkR0lUX0RJUi9CSVNFQ1RfQU5DRVNUT1JTX09LIiAmJgorCQlyZXR1cm4KKworCV9iYWQ9IiQxIgorCV9nb29kPSQoZWNobyAkMiB8IHNlZCAtZSAncy9cXi8vZycpCisJX3NraXA9IiQzIgorCisJIyBCaXNlY3Rpbmcgd2l0aCBubyBnb29kIHJldiBpcyBvaworCXRlc3QgLXogIiRfZ29vZCIgJiYgcmV0dXJuCisKKwlfc2lkZT0kKGdpdCByZXYtbGlzdCAkX2dvb2QgXiRfYmFkKQorCWlmIHRlc3QgLW4gIiRfc2lkZSI7IHRoZW4KKwkJIyBSZXR1cm4gaWYgYSBjaGVja291dCB3YXMgZG9uZQorCQljaGVja19tZXJnZV9iYXNlcyAiJF9iYWQiICIkX2dvb2QiICIkX3NraXAiIHx8IHJldHVybgorCWZpCisKKwk6ID4gIiRHSVRfRElSL0JJU0VDVF9BTkNFU1RPUlNfT0siCisKKwlyZXR1cm4gMAorfQorCiBiaXNlY3RfbmV4dCgpIHsKIAljYXNlICIkIyIgaW4gMCkgOzsgKikgdXNhZ2UgOzsgZXNhYwogCWJpc2VjdF9hdXRvc3RhcnQKIAliaXNlY3RfbmV4dF9jaGVjayBnb29kCiAKLQlza2lwPSQoZ2l0IGZvci1lYWNoLXJlZiAtLWZvcm1hdD0nJShvYmplY3RuYW1lKScgXAotCQkicmVmcy9iaXNlY3Qvc2tpcC0qIiB8IHRyICdcMDEyJyAnICcpIHx8IGV4aXQKLQotCUJJU0VDVF9PUFQ9JycKLQl0ZXN0IC1uICIkc2tpcCIgJiYgQklTRUNUX09QVD0nLS1iaXNlY3QtYWxsJwotCisJIyBHZXQgYmFkLCBnb29kIGFuZCBza2lwcGVkIHJldnMKIAliYWQ9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvYmlzZWN0L2JhZCkgJiYKIAlnb29kPSQoZ2l0IGZvci1lYWNoLXJlZiAtLWZvcm1hdD0nXiUob2JqZWN0bmFtZSknIFwKIAkJInJlZnMvYmlzZWN0L2dvb2QtKiIgfCB0ciAnXDAxMicgJyAnKSAmJgorCXNraXA9JChnaXQgZm9yLWVhY2gtcmVmIC0tZm9ybWF0PSclKG9iamVjdG5hbWUpJyBcCisJCSJyZWZzL2Jpc2VjdC9za2lwLSoiIHwgdHIgJ1wwMTInICcgJykgfHwgZXhpdAorCisJIyBNYXliZSBzb21lIG1lcmdlIGJhc2VzIG11c3QgYmUgdGVzdGVkIGZpcnN0CisJY2hlY2tfZ29vZF9hcmVfYW5jZXN0b3JzX29mX2JhZCAiJGJhZCIgIiRnb29kIiAiJHNraXAiCisJIyBSZXR1cm4gbm93IGlmIGEgY2hlY2tvdXQgaGFzIGFscmVhZHkgYmVlbiBkb25lCisJdGVzdCAiJD8iIC1lcSAiMSIgJiYgcmV0dXJuCisKKwkjIEdldCBiaXNlY3Rpb24gaW5mb3JtYXRpb24KKwlCSVNFQ1RfT1BUPScnCisJdGVzdCAtbiAiJHNraXAiICYmIEJJU0VDVF9PUFQ9Jy0tYmlzZWN0LWFsbCcKIAlldmFsPSJnaXQgcmV2LWxpc3QgLS1iaXNlY3QtdmFycyAkQklTRUNUX09QVCAkZ29vZCAkYmFkIC0tIiAmJgogCWV2YWw9IiRldmFsICQoY2F0ICIkR0lUX0RJUi9CSVNFQ1RfTkFNRVMiKSIgJiYKIAlldmFsPSQoZmlsdGVyX3NraXBwZWQgIiRldmFsIiAiJHNraXAiKSAmJgpAQCAtMzc4LDkgKzUxMiw3IEBACiAJIyBjb21taXQgaXMgYWxzbyBhICJza2lwIiBjb21taXQgKHNlZSBhYm92ZSkuCiAJZXhpdF9pZl9za2lwcGVkX2NvbW1pdHMgIiRiaXNlY3RfcmV2IgogCi0JZWNobyAiQmlzZWN0aW5nOiAkYmlzZWN0X25yIHJldmlzaW9ucyBsZWZ0IHRvIHRlc3QgYWZ0ZXIgdGhpcyIKLQlnaXQgY2hlY2tvdXQgLXEgIiRiaXNlY3RfcmV2IiB8fCBleGl0Ci0JZ2l0IHNob3ctYnJhbmNoICIkYmlzZWN0X3JldiIKKwliaXNlY3RfY2hlY2tvdXQgIiRiaXNlY3RfcmV2IiAiJGJpc2VjdF9uciByZXZpc2lvbnMgbGVmdCB0byB0ZXN0IGFmdGVyIHRoaXMiCiB9CiAKIGJpc2VjdF92aXN1YWxpemUoKSB7CkBAIC0zODgsNyArNTIwLDcgQEAKIAogCWlmIHRlc3QgJCMgPSAwCiAJdGhlbgotCQljYXNlICIke0RJU1BMQVkrc2V0fSR7TVNZU1RFTStzZXR9JHtTRUNVUklUWVNFU1NJT05JRCtzZXR9IiBpbgorCQljYXNlICIke0RJU1BMQVkrc2V0fSR7U0VTU0lPTk5BTUUrc2V0fSR7TVNZU1RFTStzZXR9JHtTRUNVUklUWVNFU1NJT05JRCtzZXR9IiBpbgogCQknJykJc2V0IGdpdCBsb2cgOzsKIAkJc2V0KikJc2V0IGdpdGsgOzsKIAkJZXNhYwpAQCAtNDI3LDYgKzU1OSw4IEBACiAJZG8KIAkJZ2l0IHVwZGF0ZS1yZWYgLWQgJHJlZiAkaGFzaCB8fCBleGl0CiAJZG9uZQorCXJtIC1mICIkR0lUX0RJUi9CSVNFQ1RfRVhQRUNURURfUkVWIiAmJgorCXJtIC1mICIkR0lUX0RJUi9CSVNFQ1RfQU5DRVNUT1JTX09LIiAmJgogCXJtIC1mICIkR0lUX0RJUi9CSVNFQ1RfTE9HIiAmJgogCXJtIC1mICIkR0lUX0RJUi9CSVNFQ1RfTkFNRVMiICYmCiAJcm0gLWYgIiRHSVRfRElSL0JJU0VDVF9SVU4iICYmCkBAIC01MjMsOCArNjU3LDEwIEBACiAgICAgICAgIGdpdCBiaXNlY3QgLWggOzsKICAgICBzdGFydCkKICAgICAgICAgYmlzZWN0X3N0YXJ0ICIkQCIgOzsKLSAgICBiYWR8Z29vZHxza2lwKQorICAgIGJhZHxnb29kKQogICAgICAgICBiaXNlY3Rfc3RhdGUgIiRjbWQiICIkQCIgOzsKKyAgICBza2lwKQorICAgICAgICBiaXNlY3Rfc2tpcCAiJEAiIDs7CiAgICAgbmV4dCkKICAgICAgICAgIyBOb3Qgc3VyZSB3ZSB3YW50ICJuZXh0IiBhdCB0aGUgVUkgbGV2ZWwgYW55bW9yZS4KICAgICAgICAgYmlzZWN0X25leHQgIiRAIiA7OwpkaWZmIC0tZ2l0IGEvZ2l0LWNvbXBhdC11dGlsLmggYi9naXQtY29tcGF0LXV0aWwuaAppbmRleCBjZjg5Y2RmLi5lMjBiMWU4IDEwMDY0NAotLS0gYS9naXQtY29tcGF0LXV0aWwuaAorKysgYi9naXQtY29tcGF0LXV0aWwuaApAQCAtODUsNiArODUsNyBAQAogI3VuZGVmIF9YT1BFTl9TT1VSQ0UKICNpbmNsdWRlIDxncnAuaD4KICNkZWZpbmUgX1hPUEVOX1NPVVJDRSA2MDAKKyNpbmNsdWRlICJjb21wYXQvY3lnd2luLmgiCiAjZWxzZQogI3VuZGVmIF9BTExfU09VUkNFIC8qIEFJWCA1LjNMIGRlZmluZXMgYSBzdHJ1Y3QgbGlzdCB3aXRoIF9BTExfU09VUkNFLiAqLwogI2luY2x1ZGUgPGdycC5oPgpAQCAtOTksNiArMTAwLDExIEBACiAjaW5jbHVkZSA8aWNvbnYuaD4KICNlbmRpZgogCisjaWZuZGVmIE5PX09QRU5TU0wKKyNpbmNsdWRlIDxvcGVuc3NsL3NzbC5oPgorI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisjZW5kaWYKKwogLyogT24gbW9zdCBzeXN0ZW1zIDxsaW1pdHMuaD4gd291bGQgaGF2ZSBnaXZlbiB1cyB0aGlzLCBidXQKICAqIG5vdCBvbiBzb21lIHN5c3RlbXMgKGUuZy4gR05VL0h1cmQpLgogICovCkBAIC0xNDksMTAgKzE1NSw3IEBACiBleHRlcm4gaW50IGVycm9yKGNvbnN0IGNoYXIgKmVyciwgLi4uKSBfX2F0dHJpYnV0ZV9fKChmb3JtYXQgKHByaW50ZiwgMSwgMikpKTsKIGV4dGVybiB2b2lkIHdhcm5pbmcoY29uc3QgY2hhciAqZXJyLCAuLi4pIF9fYXR0cmlidXRlX18oKGZvcm1hdCAocHJpbnRmLCAxLCAyKSkpOwogCi1leHRlcm4gdm9pZCBzZXRfdXNhZ2Vfcm91dGluZSh2b2lkICgqcm91dGluZSkoY29uc3QgY2hhciAqZXJyKSBOT1JFVFVSTik7CiBleHRlcm4gdm9pZCBzZXRfZGllX3JvdXRpbmUodm9pZCAoKnJvdXRpbmUpKGNvbnN0IGNoYXIgKmVyciwgdmFfbGlzdCBwYXJhbXMpIE5PUkVUVVJOKTsKLWV4dGVybiB2b2lkIHNldF9lcnJvcl9yb3V0aW5lKHZvaWQgKCpyb3V0aW5lKShjb25zdCBjaGFyICplcnIsIHZhX2xpc3QgcGFyYW1zKSk7Ci1leHRlcm4gdm9pZCBzZXRfd2Fybl9yb3V0aW5lKHZvaWQgKCpyb3V0aW5lKShjb25zdCBjaGFyICp3YXJuLCB2YV9saXN0IHBhcmFtcykpOwogCiBleHRlcm4gaW50IHByZWZpeGNtcChjb25zdCBjaGFyICpzdHIsIGNvbnN0IGNoYXIgKnByZWZpeCk7CiBleHRlcm4gdGltZV90IHRtX3RvX3RpbWVfdChjb25zdCBzdHJ1Y3QgdG0gKnRtKTsKQEAgLTE5Miw2ICsxOTUsMTIgQEAKIAogI2VuZGlmIC8qIE5PX01NQVAgKi8KIAorI2lmZGVmIE5PX1NUX0JMT0NLU19JTl9TVFJVQ1RfU1RBVAorI2RlZmluZSBvbl9kaXNrX2J5dGVzKHN0KSAoKHN0KS5zdF9zaXplKQorI2Vsc2UKKyNkZWZpbmUgb25fZGlza19ieXRlcyhzdCkgKChzdCkuc3RfYmxvY2tzICogNTEyKQorI2VuZGlmCisKICNkZWZpbmUgREVGQVVMVF9QQUNLRURfR0lUX0xJTUlUIFwKIAkoKDEwMjRMICogMTAyNEwpICogKHNpemVvZih2b2lkKikgPj0gOCA/IDgxOTIgOiAyNTYpKQogCkBAIC0zMTgsMTEgKzMyNywxMyBAQAogI2RlZmluZSBHSVRfU1BBQ0UgMHgwMQogI2RlZmluZSBHSVRfRElHSVQgMHgwMgogI2RlZmluZSBHSVRfQUxQSEEgMHgwNAorI2RlZmluZSBHSVRfU1BFQ0lBTCAweDA4CiAjZGVmaW5lIHNhbmVfaXN0ZXN0KHgsbWFzaykgKChzYW5lX2N0eXBlWyh1bnNpZ25lZCBjaGFyKSh4KV0gJiAobWFzaykpICE9IDApCiAjZGVmaW5lIGlzc3BhY2UoeCkgc2FuZV9pc3Rlc3QoeCxHSVRfU1BBQ0UpCiAjZGVmaW5lIGlzZGlnaXQoeCkgc2FuZV9pc3Rlc3QoeCxHSVRfRElHSVQpCiAjZGVmaW5lIGlzYWxwaGEoeCkgc2FuZV9pc3Rlc3QoeCxHSVRfQUxQSEEpCiAjZGVmaW5lIGlzYWxudW0oeCkgc2FuZV9pc3Rlc3QoeCxHSVRfQUxQSEEgfCBHSVRfRElHSVQpCisjZGVmaW5lIGlzc3BlY2lhbCh4KSBzYW5lX2lzdGVzdCh4LEdJVF9TUEVDSUFMKQogI2RlZmluZSB0b2xvd2VyKHgpIHNhbmVfY2FzZSgodW5zaWduZWQgY2hhcikoeCksIDB4MjApCiAjZGVmaW5lIHRvdXBwZXIoeCkgc2FuZV9jYXNlKCh1bnNpZ25lZCBjaGFyKSh4KSwgMCkKIApkaWZmIC0tZ2l0IGEvZ2l0LWZpbHRlci1icmFuY2guc2ggYi9naXQtZmlsdGVyLWJyYW5jaC5zaAppbmRleCBhMzI0Y2YwLi4wODk3YjU5IDEwMDc1NQotLS0gYS9naXQtZmlsdGVyLWJyYW5jaC5zaAorKysgYi9naXQtZmlsdGVyLWJyYW5jaC5zaApAQCAtOTgsNyArOTgsNyBAQAogLiBnaXQtc2gtc2V0dXAKIAogaWYgWyAiJChpc19iYXJlX3JlcG9zaXRvcnkpIiA9IGZhbHNlIF07IHRoZW4KLQlnaXQgZGlmZi1maWxlcyAtLXF1aWV0ICYmCisJZ2l0IGRpZmYtZmlsZXMgLS1pZ25vcmUtc3VibW9kdWxlcyAtLXF1aWV0ICYmCiAJZ2l0IGRpZmYtaW5kZXggLS1jYWNoZWQgLS1xdWlldCBIRUFEIC0tIHx8CiAJZGllICJDYW5ub3QgcmV3cml0ZSBicmFuY2goZXMpIHdpdGggYSBkaXJ0eSB3b3JraW5nIGRpcmVjdG9yeS4iCiBmaQpAQCAtMjMyLDExICsyMzIsMTEgQEAKIGNhc2UgIiRmaWx0ZXJfc3ViZGlyIiBpbgogIiIpCiAJZ2l0IHJldi1saXN0IC0tcmV2ZXJzZSAtLXRvcG8tb3JkZXIgLS1kZWZhdWx0IEhFQUQgXAotCQktLXBhcmVudHMgIiRAIgorCQktLXBhcmVudHMgLS1zaW1wbGlmeS1tZXJnZXMgIiRAIgogCTs7CiAqKQogCWdpdCByZXYtbGlzdCAtLXJldmVyc2UgLS10b3BvLW9yZGVyIC0tZGVmYXVsdCBIRUFEIFwKLQkJLS1wYXJlbnRzICIkQCIgLS0gIiRmaWx0ZXJfc3ViZGlyIgorCQktLXBhcmVudHMgLS1zaW1wbGlmeS1tZXJnZXMgIiRAIiAtLSAiJGZpbHRlcl9zdWJkaXIiCiBlc2FjID4gLi4vcmV2cyB8fCBkaWUgIkNvdWxkIG5vdCBnZXQgdGhlIGNvbW1pdHMiCiBjb21taXRzPSQod2MgLWwgPC4uL3JldnMgfCB0ciAtZCAiICIpCiAKQEAgLTI1Niw3ICsyNTYsNyBAQAogCSopCiAJCSMgVGhlIGNvbW1pdCBtYXkgbm90IGhhdmUgdGhlIHN1YmRpcmVjdG9yeSBhdCBhbGwKIAkJZXJyPSQoZ2l0IHJlYWQtdHJlZSAtaSAtbSAkY29tbWl0OiIkZmlsdGVyX3N1YmRpciIgMj4mMSkgfHwgewotCQkJaWYgISBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5ICRjb21taXQ6IiRmaWx0ZXJfc3ViZGlyIiAyPi9kZXYvbnVsbAorCQkJaWYgISBnaXQgcmV2LXBhcnNlIC1xIC0tdmVyaWZ5ICRjb21taXQ6IiRmaWx0ZXJfc3ViZGlyIgogCQkJdGhlbgogCQkJCXJtIC1mICIkR0lUX0lOREVYX0ZJTEUiCiAJCQllbHNlCkBAIC0zMTcsMjQgKzMxNywyMCBAQAogCiAjIEluIGNhc2Ugb2YgYSBzdWJkaXJlY3RvcnkgZmlsdGVyLCBpdCBpcyBwb3NzaWJsZSB0aGF0IGEgc3BlY2lmaWVkIGhlYWQKICMgaXMgbm90IGluIHRoZSBzZXQgb2YgcmV3cml0dGVuIGNvbW1pdHMsIGJlY2F1c2UgaXQgd2FzIHBydW5lZCBieSB0aGUKLSMgcmV2aXNpb24gd2Fsa2VyLiAgRml4IGl0IGJ5IG1hcHBpbmcgdGhlc2UgaGVhZHMgdG8gdGhlIG5leHQgcmV3cml0dGVuCi0jIGFuY2VzdG9yKHMpLCBpLmUuIHRoZSBib3VuZGFyaWVzIGluIHRoZSBzZXQgb2YgcmV3cml0dGVuIGNvbW1pdHMuCisjIHJldmlzaW9uIHdhbGtlci4gIEZpeCBpdCBieSBtYXBwaW5nIHRoZXNlIGhlYWRzIHRvIHRoZSB1bmlxdWUgbmVhcmVzdAorIyBhbmNlc3RvciB0aGF0IHN1cnZpdmVkIHRoZSBwcnVuaW5nLgogCi0jIE5FRURTV09SSzogd2Ugc2hvdWxkIHNvcnQgdGhlIHVubWFwcGVkIHJlZnMgdG9wb2xvZ2ljYWxseSBmaXJzdAotd2hpbGUgcmVhZCByZWYKLWRvCi0Jc2hhMT0kKGdpdCByZXYtcGFyc2UgIiRyZWYiXjApCi0JdGVzdCAtZiAiJHdvcmtkaXIiLy4uL21hcC8kc2hhMSAmJiBjb250aW51ZQotCSMgQXNzaWduIHRoZSBib3VuZGFyaWUocykgaW4gdGhlIHNldCBvZiByZXdyaXR0ZW4gY29tbWl0cwotCSMgYXMgdGhlIHJlcGxhY2VtZW50IGNvbW1pdChzKS4KLQkjIChUaGlzIHdvdWxkIGxvb2sgYSBiaXQgbmljZXIgaWYgLS1ub3QgLS1zdGRpbiB3b3JrZWQuKQotCWZvciBwIGluICQoIChjZCAiJHdvcmtkaXIiLy4uL21hcDsgbHMgfCBzZWQgInMvXi9eLyIpIHwKLQkJZ2l0IHJldi1saXN0ICRyZWYgLS1ib3VuZGFyeSAtLXN0ZGluIHwKLQkJc2VkIC1uICJzL14tLy9wIikKK2lmIHRlc3QgIiRmaWx0ZXJfc3ViZGlyIgordGhlbgorCXdoaWxlIHJlYWQgcmVmCiAJZG8KLQkJbWFwICRwID4+ICIkd29ya2RpciIvLi4vbWFwLyRzaGExCi0JZG9uZQotZG9uZSA8ICIkdGVtcGRpciIvaGVhZHMKKwkJc2hhMT0kKGdpdCByZXYtcGFyc2UgIiRyZWYiXjApCisJCXRlc3QgLWYgIiR3b3JrZGlyIi8uLi9tYXAvJHNoYTEgJiYgY29udGludWUKKwkJYW5jZXN0b3I9JChnaXQgcmV2LWxpc3QgLS1zaW1wbGlmeS1tZXJnZXMgLTEgXAorCQkJCSRyZWYgLS0gIiRmaWx0ZXJfc3ViZGlyIikKKwkJdGVzdCAiJGFuY2VzdG9yIiAmJiBlY2hvICQobWFwICRhbmNlc3RvcikgPj4gIiR3b3JrZGlyIi8uLi9tYXAvJHNoYTEKKwlkb25lIDwgIiR0ZW1wZGlyIi9oZWFkcworZmkKIAogIyBGaW5hbGx5IHVwZGF0ZSB0aGUgcmVmcwogCkBAIC00MTYsMTUgKzQxMiwxNyBAQAogCQllY2hvICIkcmVmIC0+ICRuZXdfcmVmICgkc2hhMSAtPiAkbmV3X3NoYTEpIgogCiAJCWlmIFsgIiR0eXBlIiA9ICJ0YWciIF07IHRoZW4KLQkJCW5ld19zaGExPSQoZ2l0IGNhdC1maWxlIHRhZyAiJHJlZiIgfAorCQkJbmV3X3NoYTE9JCggKCBwcmludGYgJ29iamVjdCAlc1xudHlwZSBjb21taXRcbnRhZyAlc1xuJyBcCisJCQkJCQkiJG5ld19zaGExIiAiJG5ld19yZWYiCisJCQkJZ2l0IGNhdC1maWxlIHRhZyAiJHJlZiIgfAogCQkJCXNlZCAtbiBcCiAJCQkJICAgIC1lICIxLC9eJC97Ci0JCQkJCSAgcy9eb2JqZWN0IC4qL29iamVjdCAkbmV3X3NoYTEvCi0JCQkJCSAgcy9edHlwZSAuKi90eXBlIGNvbW1pdC8KLQkJCQkJICBzL150YWcgLiovdGFnICRuZXdfcmVmLworCQkJCQkgIC9eb2JqZWN0IC9kCisJCQkJCSAgL150eXBlIC9kCisJCQkJCSAgL150YWcgL2QKIAkJCQkJfSIgXAogCQkJCSAgICAtZSAnL14tLS0tLUJFR0lOIFBHUCBTSUdOQVRVUkUtLS0tLS9xJyBcCi0JCQkJICAgIC1lICdwJyB8CisJCQkJICAgIC1lICdwJyApIHwKIAkJCQlnaXQgbWt0YWcpIHx8CiAJCQkJZGllICJDb3VsZCBub3QgY3JlYXRlIG5ldyB0YWcgb2JqZWN0IGZvciAkcmVmIgogCQkJaWYgZ2l0IGNhdC1maWxlIHRhZyAiJHJlZiIgfCBcCkBAIC00NDQsMTkgKzQ0MiwyMCBAQAogCiB0cmFwIC0gMAogCit1bnNldCBHSVRfRElSIEdJVF9XT1JLX1RSRUUgR0lUX0lOREVYX0ZJTEUKK3Rlc3QgLXogIiRPUklHX0dJVF9ESVIiIHx8IHsKKwlHSVRfRElSPSIkT1JJR19HSVRfRElSIiAmJiBleHBvcnQgR0lUX0RJUgorfQordGVzdCAteiAiJE9SSUdfR0lUX1dPUktfVFJFRSIgfHwgeworCUdJVF9XT1JLX1RSRUU9IiRPUklHX0dJVF9XT1JLX1RSRUUiICYmCisJZXhwb3J0IEdJVF9XT1JLX1RSRUUKK30KK3Rlc3QgLXogIiRPUklHX0dJVF9JTkRFWF9GSUxFIiB8fCB7CisJR0lUX0lOREVYX0ZJTEU9IiRPUklHX0dJVF9JTkRFWF9GSUxFIiAmJgorCWV4cG9ydCBHSVRfSU5ERVhfRklMRQorfQorCiBpZiBbICIkKGlzX2JhcmVfcmVwb3NpdG9yeSkiID0gZmFsc2UgXTsgdGhlbgotCXVuc2V0IEdJVF9ESVIgR0lUX1dPUktfVFJFRSBHSVRfSU5ERVhfRklMRQotCXRlc3QgLXogIiRPUklHX0dJVF9ESVIiIHx8IHsKLQkJR0lUX0RJUj0iJE9SSUdfR0lUX0RJUiIgJiYgZXhwb3J0IEdJVF9ESVIKLQl9Ci0JdGVzdCAteiAiJE9SSUdfR0lUX1dPUktfVFJFRSIgfHwgewotCQlHSVRfV09SS19UUkVFPSIkT1JJR19HSVRfV09SS19UUkVFIiAmJgotCQlleHBvcnQgR0lUX1dPUktfVFJFRQotCX0KLQl0ZXN0IC16ICIkT1JJR19HSVRfSU5ERVhfRklMRSIgfHwgewotCQlHSVRfSU5ERVhfRklMRT0iJE9SSUdfR0lUX0lOREVYX0ZJTEUiICYmCi0JCWV4cG9ydCBHSVRfSU5ERVhfRklMRQotCX0KIAlnaXQgcmVhZC10cmVlIC11IC1tIEhFQUQKIGZpCiAKZGlmZiAtLWdpdCBhL2dpdC1ndWkvLmdpdGF0dHJpYnV0ZXMgYi9naXQtZ3VpLy5naXRhdHRyaWJ1dGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NjExMmQKLS0tIC9kZXYvbnVsbAorKysgYi9naXQtZ3VpLy5naXRhdHRyaWJ1dGVzCkBAIC0wLDAgKzEsMyBAQAorKiAgICAgICAgICAgZW5jb2Rpbmc9VVMtQVNDSUkKK2dpdC1ndWkuc2ggIGVuY29kaW5nPVVURi04CisvcG8vKi5wbyAgICBlbmNvZGluZz1VVEYtOApkaWZmIC0tZ2l0IGEvZ2l0LWd1aS9HSVQtVkVSU0lPTi1HRU4gYi9naXQtZ3VpL0dJVC1WRVJTSU9OLUdFTgppbmRleCA0ZTcwOWViLi5iM2Y5MzdlIDEwMDc1NQotLS0gYS9naXQtZ3VpL0dJVC1WRVJTSU9OLUdFTgorKysgYi9naXQtZ3VpL0dJVC1WRVJTSU9OLUdFTgpAQCAtMSw3ICsxLDcgQEAKICMhL2Jpbi9zaAogCiBHVkY9R0lULVZFUlNJT04tRklMRQotREVGX1ZFUj0wLjExLkdJVEdVSQorREVGX1ZFUj0wLjEyLkdJVEdVSQogCiBMRj0nCiAnCmRpZmYgLS1naXQgYS9naXQtZ3VpL01ha2VmaWxlIGIvZ2l0LWd1aS9NYWtlZmlsZQppbmRleCA1NTc2NWM4Li4zYWQ4YTIxIDEwMDY0NAotLS0gYS9naXQtZ3VpL01ha2VmaWxlCisrKyBiL2dpdC1ndWkvTWFrZWZpbGUKQEAgLTI4NSw2ICsyODUsNyBAQAogaW5zdGFsbDogYWxsCiAJJChRVUlFVCkkKElOU1RBTExfRDApJyQoREVTVERJUl9TUSkkKGdpdGV4ZWNkaXJfU1EpJyAkKElOU1RBTExfRDEpCiAJJChRVUlFVCkkKElOU1RBTExfWDApZ2l0LWd1aSAkKElOU1RBTExfWDEpICckKERFU1RESVJfU1EpJChnaXRleGVjZGlyX1NRKScKKwkkKFFVSUVUKSQoSU5TVEFMTF9YMClnaXQtZ3VpLS1hc2twYXNzICQoSU5TVEFMTF9YMSkgJyQoREVTVERJUl9TUSkkKGdpdGV4ZWNkaXJfU1EpJwogCSQoUVVJRVQpJChmb3JlYWNoIHAsJChHSVRHVUlfQlVJTFRfSU5TKSwgJChJTlNUQUxMX0wwKSckKERFU1RESVJfU1EpJChnaXRleGVjZGlyX1NRKS8kcCcgJChJTlNUQUxMX0wxKSckKERFU1RESVJfU1EpJChnaXRleGVjZGlyX1NRKS9naXQtZ3VpJyAkKElOU1RBTExfTDIpJyQoREVTVERJUl9TUSkkKGdpdGV4ZWNkaXJfU1EpLyRwJyAkKElOU1RBTExfTDMpICYmKSB0cnVlCiBpZmRlZiBHSVRHVUlfV0lORE9XU19XUkFQUEVSCiAJJChRVUlFVCkkKElOU1RBTExfUjApZ2l0LWd1aS50Y2wgJChJTlNUQUxMX1IxKSAnJChERVNURElSX1NRKSQoZ2l0ZXhlY2Rpcl9TUSknCkBAIC0zMDIsNiArMzAzLDcgQEAKIHVuaW5zdGFsbDoKIAkkKFFVSUVUKSQoQ0xFQU5fRFNUKSAnJChERVNURElSX1NRKSQoZ2l0ZXhlY2Rpcl9TUSknCiAJJChRVUlFVCkkKFJFTU9WRV9GMCknJChERVNURElSX1NRKSQoZ2l0ZXhlY2Rpcl9TUSknL2dpdC1ndWkgJChSRU1PVkVfRjEpCisJJChRVUlFVCkkKFJFTU9WRV9GMCknJChERVNURElSX1NRKSQoZ2l0ZXhlY2Rpcl9TUSknL2dpdC1ndWktLWFza3Bhc3MgJChSRU1PVkVfRjEpCiAJJChRVUlFVCkkKGZvcmVhY2ggcCwkKEdJVEdVSV9CVUlMVF9JTlMpLCAkKFJFTU9WRV9GMCknJChERVNURElSX1NRKSQoZ2l0ZXhlY2Rpcl9TUSknLyRwICQoUkVNT1ZFX0YxKSAmJikgdHJ1ZQogaWZkZWYgR0lUR1VJX1dJTkRPV1NfV1JBUFBFUgogCSQoUVVJRVQpJChSRU1PVkVfRjApJyQoREVTVERJUl9TUSkkKGdpdGV4ZWNkaXJfU1EpJy9naXQtZ3VpLnRjbCAkKFJFTU9WRV9GMSkKZGlmZiAtLWdpdCBhL2dpdC1ndWkvZ2l0LWd1aS0tYXNrcGFzcyBiL2dpdC1ndWkvZ2l0LWd1aS0tYXNrcGFzcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xMmUxMTdlCi0tLSAvZGV2L251bGwKKysrIGIvZ2l0LWd1aS9naXQtZ3VpLS1hc2twYXNzCkBAIC0wLDAgKzEsNTkgQEAKKyMhL2Jpbi9zaAorIyBUY2wgaWdub3JlcyB0aGUgbmV4dCBsaW5lIC0qLSB0Y2wgLSotIFwKK2V4ZWMgd2lzaCAiJDAiIC0tICIkQCIKKworIyBUaGlzIGlzIGEgdHJpdmlhbCBpbXBsZW1lbnRhdGlvbiBvZiBhbiBTU0hfQVNLUEFTUyBoYW5kbGVyLgorIyBHaXQtZ3VpIHVzZXMgdGhpcyBzY3JpcHQgaWYgbm9uZSBhcmUgYWxyZWFkeSBjb25maWd1cmVkLgorCitzZXQgYW5zd2VyIHt9CitzZXQgeWVzbm8gIDAKK3NldCByYyAgICAgMjU1CisKK2lmIHskYXJnYyA8IDF9IHsKKwlzZXQgcHJvbXB0ICJFbnRlciB5b3VyIE9wZW5TU0ggcGFzc3BocmFzZToiCit9IGVsc2UgeworCXNldCBwcm9tcHQgW2pvaW4gJGFyZ3YgIiAiXQorCWlmIHtbcmVnZXhwIC1ub2Nhc2Uge1woeWVzXC9ub1wpXD9ccyokfSAkcHJvbXB0XX0geworCQlzZXQgeWVzbm8gMQorCX0KK30KKworbWVzc2FnZSAubSAtdGV4dCAkcHJvbXB0IC1qdXN0aWZ5IGNlbnRlciAtYXNwZWN0IDQwMDAKK3BhY2sgLm0gLXNpZGUgdG9wIC1maWxsIHggLXBhZHggMjAgLXBhZHkgMjAgLWV4cGFuZCAxCisKK2VudHJ5IC5lIC10ZXh0dmFyaWFibGUgYW5zd2VyIC13aWR0aCA1MAorcGFjayAuZSAtc2lkZSB0b3AgLWZpbGwgeCAtcGFkeCAxMCAtcGFkeSAxMAorCitpZiB7ISR5ZXNub30geworCS5lIGNvbmZpZ3VyZSAtc2hvdyAiKiIKK30KKworZnJhbWUgLmIKK2J1dHRvbiAuYi5vayAgICAgLXRleHQgT0sgICAgIC1jb21tYW5kIGZpbmlzaAorYnV0dG9uIC5iLmNhbmNlbCAtdGV4dCBDYW5jZWwgLWNvbW1hbmQge2Rlc3Ryb3kgLn0KKworcGFjayAuYi5vayAtc2lkZSBsZWZ0IC1leHBhbmQgMQorcGFjayAuYi5jYW5jZWwgLXNpZGUgcmlnaHQgLWV4cGFuZCAxCitwYWNrIC5iIC1zaWRlIGJvdHRvbSAtZmlsbCB4IC1wYWR4IDEwIC1wYWR5IDEwCisKK2JpbmQgLiA8VmlzaWJpbGl0eT4ge2ZvY3VzIC1mb3JjZSAuZX0KK2JpbmQgLiA8S2V5LVJldHVybj4gZmluaXNoCitiaW5kIC4gPEtleS1Fc2NhcGU+IHtkZXN0cm95IC59CitiaW5kIC4gPERlc3Ryb3k+ICAgIHtleGl0ICRyY30KKworcHJvYyBmaW5pc2gge30geworCWlmIHskOjp5ZXNub30geworCQlpZiB7JDo6YW5zd2VyIG5lICJ5ZXMiICYmICQ6OmFuc3dlciBuZSAibm8ifSB7CisJCQl0a19tZXNzYWdlQm94IC1pY29uIGVycm9yIC10aXRsZSAiRXJyb3IiIC10eXBlIG9rIFwKKwkJCQktbWVzc2FnZSAiT25seSAneWVzJyBvciAnbm8nIGlucHV0IGFsbG93ZWQuIgorCQkJcmV0dXJuCisJCX0KKwl9CisKKwlzZXQgOjpyYyAwCisJcHV0cyAkOjphbnN3ZXIKKwlkZXN0cm95IC4KK30KKword20gdGl0bGUgLiAiT3BlblNTSCIKK3RrOjpQbGFjZVdpbmRvdyAuCmRpZmYgLS1naXQgYS9naXQtZ3VpL2dpdC1ndWkuc2ggYi9naXQtZ3VpL2dpdC1ndWkuc2gKaW5kZXggODY0MDJkNC4uZTAxOGUwNyAxMDA3NTUKLS0tIGEvZ2l0LWd1aS9naXQtZ3VpLnNoCisrKyBiL2dpdC1ndWkvZ2l0LWd1aS5zaApAQCAtNTIxLDYgKzUyMSwxOSBAQAogCX0KIH0KIAorcHJvYyBnaXRhdHRyIHtwYXRoIGF0dHIgZGVmYXVsdH0geworCWlmIHtbY2F0Y2gge3NldCByIFtnaXQgY2hlY2stYXR0ciAkYXR0ciAtLSAkcGF0aF19XX0geworCQlzZXQgciB1bnNwZWNpZmllZAorCX0gZWxzZSB7CisJCXNldCByIFtqb2luIFtscmFuZ2UgW3NwbGl0ICRyIDpdIDIgZW5kXSA6XQorCQlyZWdzdWIge14gfSAkciB7fSByCisJfQorCWlmIHskciBlcSB7dW5zcGVjaWZpZWR9fSB7CisJCXJldHVybiAkZGVmYXVsdAorCX0KKwlyZXR1cm4gJHIKK30KKwogcHJvYyBzcSB7dmFsdWV9IHsKIAlyZWdzdWIgLWFsbCAnICR2YWx1ZSAiJ1xcJyciIHZhbHVlCiAJcmV0dXJuICInJHZhbHVlJyIKQEAgLTU3OCw2ICs1OTEsMzQgQEAKIAogaWYge1tpc19XaW5kb3dzXX0gewogCXdtIGljb25iaXRtYXAgLiAtZGVmYXVsdCAkb2d1aWxpYi9naXQtZ3VpLmljbworCXNldCA6OnRrOjpBbHdheXNTaG93U2VsZWN0aW9uIDEKKworCSMgU3Bvb2YgYW4gWDExIGRpc3BsYXkgZm9yIFNTSAorCWlmIHshW2luZm8gZXhpc3RzIGVudihESVNQTEFZKV19IHsKKwkJc2V0IGVudihESVNQTEFZKSA6OTk5OQorCX0KK30gZWxzZSB7CisJY2F0Y2ggeworCQlpbWFnZSBjcmVhdGUgcGhvdG8gZ2l0bG9nbyAtd2lkdGggMTYgLWhlaWdodCAxNgorCisJCWdpdGxvZ28gcHV0ICMzM0NDMzMgLXRvICA3ICAwICA5ICAyCisJCWdpdGxvZ28gcHV0ICMzM0NDMzMgLXRvICA0ICAyIDEyICA0CisJCWdpdGxvZ28gcHV0ICMzM0NDMzMgLXRvICA3ICA0ICA5ICA2CisJCWdpdGxvZ28gcHV0ICNDQzMzMzMgLXRvICA0ICA2IDEyICA4CisJCWdpdGxvZ28gcHV0IGdyYXkyNiAgLXRvICA0ICA5ICA2IDEwCisJCWdpdGxvZ28gcHV0IGdyYXkyNiAgLXRvICAzIDEwICA2IDEyCisJCWdpdGxvZ28gcHV0IGdyYXkyNiAgLXRvICA4ICA5IDEzIDExCisJCWdpdGxvZ28gcHV0IGdyYXkyNiAgLXRvICA4IDExIDEwIDEyCisJCWdpdGxvZ28gcHV0IGdyYXkyNiAgLXRvIDExIDExIDEzIDE0CisJCWdpdGxvZ28gcHV0IGdyYXkyNiAgLXRvICAzIDEyICA1IDE0CisJCWdpdGxvZ28gcHV0IGdyYXkyNiAgLXRvICA1IDEzCisJCWdpdGxvZ28gcHV0IGdyYXkyNiAgLXRvIDEwIDEzCisJCWdpdGxvZ28gcHV0IGdyYXkyNiAgLXRvICA0IDE0IDEyIDE1CisJCWdpdGxvZ28gcHV0IGdyYXkyNiAgLXRvICA1IDE1IDExIDE2CisJCWdpdGxvZ28gcmVkaXRoZXIKKworCQl3bSBpY29ucGhvdG8gLiAtZGVmYXVsdCBnaXRsb2dvCisJfQogfQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC02NTcsMTcgKzY5OCwyMSBAQAogfQogCiBzZXQgZGVmYXVsdF9jb25maWcoYnJhbmNoLmF1dG9zZXR1cG1lcmdlKSB0cnVlCitzZXQgZGVmYXVsdF9jb25maWcobWVyZ2UudG9vbCkge30KK3NldCBkZWZhdWx0X2NvbmZpZyhtZXJnZS5rZWVwYmFja3VwKSB0cnVlCiBzZXQgZGVmYXVsdF9jb25maWcobWVyZ2UuZGlmZnN0YXQpIHRydWUKIHNldCBkZWZhdWx0X2NvbmZpZyhtZXJnZS5zdW1tYXJ5KSBmYWxzZQogc2V0IGRlZmF1bHRfY29uZmlnKG1lcmdlLnZlcmJvc2l0eSkgMgogc2V0IGRlZmF1bHRfY29uZmlnKHVzZXIubmFtZSkge30KIHNldCBkZWZhdWx0X2NvbmZpZyh1c2VyLmVtYWlsKSB7fQogCitzZXQgZGVmYXVsdF9jb25maWcoZ3VpLmVuY29kaW5nKSBbZW5jb2Rpbmcgc3lzdGVtXQogc2V0IGRlZmF1bHRfY29uZmlnKGd1aS5tYXRjaHRyYWNraW5nYnJhbmNoKSBmYWxzZQogc2V0IGRlZmF1bHRfY29uZmlnKGd1aS5wcnVuZWR1cmluZ2ZldGNoKSBmYWxzZQogc2V0IGRlZmF1bHRfY29uZmlnKGd1aS50cnVzdG10aW1lKSBmYWxzZQogc2V0IGRlZmF1bHRfY29uZmlnKGd1aS5mYXN0Y29weWJsYW1lKSBmYWxzZQogc2V0IGRlZmF1bHRfY29uZmlnKGd1aS5jb3B5YmxhbWV0aHJlc2hvbGQpIDQwCitzZXQgZGVmYXVsdF9jb25maWcoZ3VpLmJsYW1laGlzdG9yeWN0eCkgNwogc2V0IGRlZmF1bHRfY29uZmlnKGd1aS5kaWZmY29udGV4dCkgNQogc2V0IGRlZmF1bHRfY29uZmlnKGd1aS5jb21taXRtc2d3aWR0aCkgNzUKIHNldCBkZWZhdWx0X2NvbmZpZyhndWkubmV3YnJhbmNodGVtcGxhdGUpIHt9CkBAIC04OTUsMTkgKzk0MCwyNSBAQAogfQogCiBwcm9jIGxvYWRfY29uZmlnIHtpbmNsdWRlX2dsb2JhbH0gewotCWdsb2JhbCByZXBvX2NvbmZpZyBnbG9iYWxfY29uZmlnIGRlZmF1bHRfY29uZmlnCisJZ2xvYmFsIHJlcG9fY29uZmlnIGdsb2JhbF9jb25maWcgc3lzdGVtX2NvbmZpZyBkZWZhdWx0X2NvbmZpZwogCiAJaWYgeyRpbmNsdWRlX2dsb2JhbH0geworCQlfcGFyc2VfY29uZmlnIHN5c3RlbV9jb25maWcgLS1zeXN0ZW0KIAkJX3BhcnNlX2NvbmZpZyBnbG9iYWxfY29uZmlnIC0tZ2xvYmFsCiAJfQogCV9wYXJzZV9jb25maWcgcmVwb19jb25maWcKIAogCWZvcmVhY2ggbmFtZSBbYXJyYXkgbmFtZXMgZGVmYXVsdF9jb25maWddIHsKKwkJaWYge1tjYXRjaCB7c2V0IHYgJHN5c3RlbV9jb25maWcoJG5hbWUpfV19IHsKKwkJCXNldCBzeXN0ZW1fY29uZmlnKCRuYW1lKSAkZGVmYXVsdF9jb25maWcoJG5hbWUpCisJCX0KKwl9CisJZm9yZWFjaCBuYW1lIFthcnJheSBuYW1lcyBzeXN0ZW1fY29uZmlnXSB7CiAJCWlmIHtbY2F0Y2gge3NldCB2ICRnbG9iYWxfY29uZmlnKCRuYW1lKX1dfSB7Ci0JCQlzZXQgZ2xvYmFsX2NvbmZpZygkbmFtZSkgJGRlZmF1bHRfY29uZmlnKCRuYW1lKQorCQkJc2V0IGdsb2JhbF9jb25maWcoJG5hbWUpICRzeXN0ZW1fY29uZmlnKCRuYW1lKQogCQl9CiAJCWlmIHtbY2F0Y2gge3NldCB2ICRyZXBvX2NvbmZpZygkbmFtZSl9XX0gewotCQkJc2V0IHJlcG9fY29uZmlnKCRuYW1lKSAkZGVmYXVsdF9jb25maWcoJG5hbWUpCisJCQlzZXQgcmVwb19jb25maWcoJG5hbWUpICRzeXN0ZW1fY29uZmlnKCRuYW1lKQogCQl9CiAJfQogfQpAQCAtOTQ1LDE3ICs5OTYsNTEgQEAKIH0KIGNpdG9vbCB7CiAJZW5hYmxlX29wdGlvbiBzaW5nbGVjb21taXQKKwllbmFibGVfb3B0aW9uIHJldGNvZGUKIAogCWRpc2FibGVfb3B0aW9uIG11bHRpY29tbWl0CiAJZGlzYWJsZV9vcHRpb24gYnJhbmNoCiAJZGlzYWJsZV9vcHRpb24gdHJhbnNwb3J0CisKKwl3aGlsZSB7W2xsZW5ndGggJGFyZ3ZdID4gMH0geworCQlzZXQgYSBbbGluZGV4ICRhcmd2IDBdCisJCXN3aXRjaCAtLSAkYSB7CisJCS0tYW1lbmQgeworCQkJZW5hYmxlX29wdGlvbiBpbml0aWFsYW1lbmQKKwkJfQorCQktLW5vY29tbWl0IHsKKwkJCWVuYWJsZV9vcHRpb24gbm9jb21taXQKKwkJCWVuYWJsZV9vcHRpb24gbm9jb21taXRtc2cKKwkJfQorCQktLWNvbW1pdG1zZyB7CisJCQlkaXNhYmxlX29wdGlvbiBub2NvbW1pdG1zZworCQl9CisJCWRlZmF1bHQgeworCQkJYnJlYWsKKwkJfQorCQl9CisKKwkJc2V0IGFyZ3YgW2xyYW5nZSAkYXJndiAxIGVuZF0KKwl9CiB9CiB9CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjCisjIyBleGVjdXRpb24gZW52aXJvbm1lbnQKKworc2V0IGhhdmVfdGs4NSBbZXhwciB7W3BhY2thZ2UgdmNvbXBhcmUgJHRrX3ZlcnNpb24gIjguNSJdID49IDB9XQorCisjIFN1Z2dlc3Qgb3VyIGltcGxlbWVudGF0aW9uIG9mIGFza3Bhc3MsIGlmIG5vbmUgaXMgc2V0CitpZiB7IVtpbmZvIGV4aXN0cyBlbnYoU1NIX0FTS1BBU1MpXX0geworCXNldCBlbnYoU1NIX0FTS1BBU1MpIFtnaXRleGVjIGdpdC1ndWktLWFza3Bhc3NdCit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjCiAjIyByZXBvc2l0b3J5IHNldHVwCiAKK3NldCBwaWNrZWQgMAogaWYge1tjYXRjaCB7CiAJCXNldCBfZ2l0ZGlyICRlbnYoR0lUX0RJUikKIAkJc2V0IF9wcmVmaXgge30KQEAgLTk2Nyw2ICsxMDUyLDcgQEAKIAlsb2FkX2NvbmZpZyAxCiAJYXBwbHlfY29uZmlnCiAJY2hvb3NlX3JlcG9zaXRvcnk6OnBpY2sKKwlzZXQgcGlja2VkIDEKIH0KIGlmIHshW2ZpbGUgaXNkaXJlY3RvcnkgJF9naXRkaXJdICYmIFtpc19DeWd3aW5dfSB7CiAJY2F0Y2gge3NldCBfZ2l0ZGlyIFtleGVjIGN5Z3BhdGggLS13aW5kb3dzICRfZ2l0ZGlyXX0KQEAgLTEwMjAsOCArMTEwNiwxMiBAQAogc2V0IGlzX2RldGFjaGVkIDAKIHNldCBjdXJyZW50X2RpZmZfcGF0aCB7fQogc2V0IGlzXzN3YXlfZGlmZiAwCitzZXQgaXNfY29uZmxpY3RfZGlmZiAwCiBzZXQgc2VsZWN0ZWRfY29tbWl0X3R5cGUgbmV3CiAKK3NldCBudWxsaWQgIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiCitzZXQgbnVsbGlkMiAiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMSIKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMKICMjIHRhc2sgbWFuYWdlbWVudApAQCAtMTEwMiw2ICsxMTkyLDIwIEBACiAJcmV0dXJuICRlbXB0eV90cmVlCiB9CiAKK3Byb2MgZm9yY2VfYW1lbmQge30geworCWdsb2JhbCBzZWxlY3RlZF9jb21taXRfdHlwZQorCWdsb2JhbCBIRUFEIFBBUkVOVCBNRVJHRV9IRUFEIGNvbW1pdF90eXBlCisKKwlyZXBvc2l0b3J5X3N0YXRlIG5ld1R5cGUgbmV3SEVBRCBuZXdNRVJHRV9IRUFECisJc2V0IEhFQUQgJG5ld0hFQUQKKwlzZXQgUEFSRU5UICRuZXdIRUFECisJc2V0IE1FUkdFX0hFQUQgJG5ld01FUkdFX0hFQUQKKwlzZXQgY29tbWl0X3R5cGUgJG5ld1R5cGUKKworCXNldCBzZWxlY3RlZF9jb21taXRfdHlwZSBhbWVuZAorCWRvX3NlbGVjdF9jb21taXRfdHlwZQorfQorCiBwcm9jIHJlc2NhbiB7YWZ0ZXIge2hvbm9yX3RydXN0bXRpbWUgMX19IHsKIAlnbG9iYWwgSEVBRCBQQVJFTlQgTUVSR0VfSEVBRCBjb21taXRfdHlwZQogCWdsb2JhbCB1aV9pbmRleCB1aV93b3JrZGlyIHVpX2NvbW0KQEAgLTExMjgsNiArMTIzMiw3IEBACiAJCXx8IFtzdHJpbmcgdHJpbSBbJHVpX2NvbW0gZ2V0IDAuMCBlbmRdXSBlcSB7fSl9IHsKIAkJaWYge1tzdHJpbmcgbWF0Y2ggYW1lbmQqICRjb21taXRfdHlwZV19IHsKIAkJfSBlbHNlaWYge1tsb2FkX21lc3NhZ2UgR0lUR1VJX01TR119IHsKKwkJfSBlbHNlaWYge1tydW5fcHJlcGFyZV9jb21taXRfbXNnX2hvb2tdfSB7CiAJCX0gZWxzZWlmIHtbbG9hZF9tZXNzYWdlIE1FUkdFX01TR119IHsKIAkJfSBlbHNlaWYge1tsb2FkX21lc3NhZ2UgU1FVQVNIX01TR119IHsKIAkJfQpAQCAtMTIyNyw2ICsxMzMyLDcwIEBACiAJcmV0dXJuIDAKIH0KIAorcHJvYyBydW5fcHJlcGFyZV9jb21taXRfbXNnX2hvb2sge30geworCWdsb2JhbCBwY2hfZXJyb3IKKworCSMgcHJlcGFyZS1jb21taXQtbXNnIHJlcXVpcmVzIFBSRVBBUkVfQ09NTUlUX01TRyBleGlzdC4gIEZyb20gZ2l0LWd1aQorCSMgaXQgd2lsbCBiZSAuZ2l0L01FUkdFX01TRyAobWVyZ2UpLCAuZ2l0L1NRVUFTSF9NU0cgKHNxdWFzaCksIG9yIGFuCisJIyBlbXB0eSBmaWxlIGJ1dCBleGlzdGFudCBmaWxlLgorCisJc2V0IGZkX3BjbSBbb3BlbiBbZ2l0ZGlyIFBSRVBBUkVfQ09NTUlUX01TR10gYV0KKworCWlmIHtbZmlsZSBpc2ZpbGUgW2dpdGRpciBNRVJHRV9NU0ddXX0geworCQlzZXQgcGNtX3NvdXJjZSAibWVyZ2UiCisJCXNldCBmZF9tbSBbb3BlbiBbZ2l0ZGlyIE1FUkdFX01TR10gcl0KKwkJcHV0cyAtbm9uZXdsaW5lICRmZF9wY20gW3JlYWQgJGZkX21tXQorCQljbG9zZSAkZmRfbW0KKwl9IGVsc2VpZiB7W2ZpbGUgaXNmaWxlIFtnaXRkaXIgU1FVQVNIX01TR11dfSB7CisJCXNldCBwY21fc291cmNlICJzcXVhc2giCisJCXNldCBmZF9zbSBbb3BlbiBbZ2l0ZGlyIFNRVUFTSF9NU0ddIHJdCisJCXB1dHMgLW5vbmV3bGluZSAkZmRfcGNtIFtyZWFkICRmZF9zbV0KKwkJY2xvc2UgJGZkX3NtCisJfSBlbHNlIHsKKwkJc2V0IHBjbV9zb3VyY2UgIiIKKwl9CisKKwljbG9zZSAkZmRfcGNtCisKKwlzZXQgZmRfcGggW2dpdGhvb2tfcmVhZCBwcmVwYXJlLWNvbW1pdC1tc2cgXAorCQkJW2dpdGRpciBQUkVQQVJFX0NPTU1JVF9NU0ddICRwY21fc291cmNlXQorCWlmIHskZmRfcGggZXEge319IHsKKwkJY2F0Y2gge2ZpbGUgZGVsZXRlIFtnaXRkaXIgUFJFUEFSRV9DT01NSVRfTVNHXX0KKwkJcmV0dXJuIDA7CisJfQorCisJdWlfc3RhdHVzIFttYyAiQ2FsbGluZyBwcmVwYXJlLWNvbW1pdC1tc2cgaG9vay4uLiJdCisJc2V0IHBjaF9lcnJvciB7fQorCisJZmNvbmZpZ3VyZSAkZmRfcGggLWJsb2NraW5nIDAgLXRyYW5zbGF0aW9uIGJpbmFyeSAtZW9mY2hhciB7fQorCWZpbGVldmVudCAkZmRfcGggcmVhZGFibGUgXAorCQlbbGlzdCBwcmVwYXJlX2NvbW1pdF9tc2dfaG9va193YWl0ICRmZF9waF0KKworCXJldHVybiAxOworfQorCitwcm9jIHByZXBhcmVfY29tbWl0X21zZ19ob29rX3dhaXQge2ZkX3BofSB7CisJZ2xvYmFsIHBjaF9lcnJvcgorCisJYXBwZW5kIHBjaF9lcnJvciBbcmVhZCAkZmRfcGhdCisJZmNvbmZpZ3VyZSAkZmRfcGggLWJsb2NraW5nIDEKKwlpZiB7W2VvZiAkZmRfcGhdfSB7CisJCWlmIHtbY2F0Y2gge2Nsb3NlICRmZF9waH1dfSB7CisJCQl1aV9zdGF0dXMgW21jICJDb21taXQgZGVjbGluZWQgYnkgcHJlcGFyZS1jb21taXQtbXNnIGhvb2suIl0KKwkJCWhvb2tfZmFpbGVkX3BvcHVwIHByZXBhcmUtY29tbWl0LW1zZyAkcGNoX2Vycm9yCisJCQljYXRjaCB7ZmlsZSBkZWxldGUgW2dpdGRpciBQUkVQQVJFX0NPTU1JVF9NU0ddfQorCQkJZXhpdCAxCisJCX0gZWxzZSB7CisJCQlsb2FkX21lc3NhZ2UgUFJFUEFSRV9DT01NSVRfTVNHCisJCX0KKwkJc2V0IHBjaF9lcnJvciB7fQorCQljYXRjaCB7ZmlsZSBkZWxldGUgW2dpdGRpciBQUkVQQVJFX0NPTU1JVF9NU0ddfQorCQlyZXR1cm4KKyAgICAgICAgfQorCWZjb25maWd1cmUgJGZkX3BoIC1ibG9ja2luZyAwCisJY2F0Y2gge2ZpbGUgZGVsZXRlIFtnaXRkaXIgUFJFUEFSRV9DT01NSVRfTVNHXX0KK30KKwogcHJvYyByZWFkX2RpZmZfaW5kZXgge2ZkIGFmdGVyfSB7CiAJZ2xvYmFsIGJ1Zl9yZGkKIApAQCAtMTMyMiw4ICsxNDkxLDggQEAKIAlwcnVuZV9zZWxlY3Rpb24KIAl1bmxvY2tfaW5kZXgKIAlkaXNwbGF5X2FsbF9maWxlcwotCWlmIHskY3VycmVudF9kaWZmX3BhdGggbmUge319IHJlc2hvd19kaWZmCi0JdXBsZXZlbCAjMCAkYWZ0ZXIKKwlpZiB7JGN1cnJlbnRfZGlmZl9wYXRoIG5lIHt9fSB7IHJlc2hvd19kaWZmICRhZnRlciB9CisJaWYgeyRjdXJyZW50X2RpZmZfcGF0aCBlcSB7fX0geyBzZWxlY3RfZmlyc3RfZGlmZiAkYWZ0ZXIgfQogfQogCiBwcm9jIHBydW5lX3NlbGVjdGlvbiB7fSB7CkBAIC0xNjE5LDYgKzE3ODgsMTUgQEAKICAgIDB4ZmEsIDB4MTcsIDB4MDIsIDB4MTAsIDB4ZmUsIDB4MWZ9OwogfSAtbWFza2RhdGEgJGZpbGVtYXNrCiAKK2ltYWdlIGNyZWF0ZSBiaXRtYXAgZmlsZV9zdGF0ZWNoYW5nZSAtYmFja2dyb3VuZCB3aGl0ZSAtZm9yZWdyb3VuZCBncmVlbiAtZGF0YSB7CisjZGVmaW5lIGZpbGVfbWVyZ2Vfd2lkdGggMTQKKyNkZWZpbmUgZmlsZV9tZXJnZV9oZWlnaHQgMTUKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIGZpbGVfc3RhdGVjaGFuZ2VfYml0c1tdID0geworICAgMHhmZSwgMHgwMSwgMHgwMiwgMHgwMywgMHgwMiwgMHgwNSwgMHgwMiwgMHgwOSwgMHgwMiwgMHgxZiwgMHg2MiwgMHgxMCwKKyAgIDB4NjIsIDB4MTAsIDB4YmEsIDB4MTEsIDB4YmEsIDB4MTEsIDB4NjIsIDB4MTAsIDB4NjIsIDB4MTAsIDB4MDIsIDB4MTAsCisgICAweDAyLCAweDEwLCAweDAyLCAweDEwLCAweGZlLCAweDFmfTsKK30gLW1hc2tkYXRhICRmaWxlbWFzaworCiBzZXQgdWlfaW5kZXggLnZwYW5lLmZpbGVzLmluZGV4Lmxpc3QKIHNldCB1aV93b3JrZGlyIC52cGFuZS5maWxlcy53b3JrZGlyLmxpc3QKIApAQCAtMTYyNywxMiArMTgwNSwxNCBAQAogc2V0IGFsbF9pY29ucyhNJHVpX2luZGV4KSAgIGZpbGVfZnVsbHRpY2sKIHNldCBhbGxfaWNvbnMoRCR1aV9pbmRleCkgICBmaWxlX3JlbW92ZWQKIHNldCBhbGxfaWNvbnMoVSR1aV9pbmRleCkgICBmaWxlX21lcmdlCitzZXQgYWxsX2ljb25zKFQkdWlfaW5kZXgpICAgZmlsZV9zdGF0ZWNoYW5nZQogCiBzZXQgYWxsX2ljb25zKF8kdWlfd29ya2RpcikgZmlsZV9wbGFpbgogc2V0IGFsbF9pY29ucyhNJHVpX3dvcmtkaXIpIGZpbGVfbW9kCiBzZXQgYWxsX2ljb25zKEQkdWlfd29ya2RpcikgZmlsZV9xdWVzdGlvbgogc2V0IGFsbF9pY29ucyhVJHVpX3dvcmtkaXIpIGZpbGVfbWVyZ2UKIHNldCBhbGxfaWNvbnMoTyR1aV93b3JrZGlyKSBmaWxlX3BsYWluCitzZXQgYWxsX2ljb25zKFQkdWlfd29ya2RpcikgZmlsZV9zdGF0ZWNoYW5nZQogCiBzZXQgbWF4X3N0YXR1c19kZXNjIDAKIGZvcmVhY2ggaSB7CkBAIC0xNjQzLDYgKzE4MjMsOSBAQAogCQl7TU0ge21jICJQb3J0aW9ucyBzdGFnZWQgZm9yIGNvbW1pdCJ9fQogCQl7TUQge21jICJTdGFnZWQgZm9yIGNvbW1pdCwgbWlzc2luZyJ9fQogCisJCXtfVCB7bWMgIkZpbGUgdHlwZSBjaGFuZ2VkLCBub3Qgc3RhZ2VkIn19CisJCXtUXyB7bWMgIkZpbGUgdHlwZSBjaGFuZ2VkLCBzdGFnZWQifX0KKwogCQl7X08ge21jICJVbnRyYWNrZWQsIG5vdCBzdGFnZWQifX0KIAkJe0FfIHttYyAiU3RhZ2VkIGZvciBjb21taXQifX0KIAkJe0FNIHttYyAiUG9ydGlvbnMgc3RhZ2VkIGZvciBjb21taXQifX0KQEAgLTE2NTIsMTAgKzE4MzUsMTIgQEAKIAkJe0RfIHttYyAiU3RhZ2VkIGZvciByZW1vdmFsIn19CiAJCXtETyB7bWMgIlN0YWdlZCBmb3IgcmVtb3ZhbCwgc3RpbGwgcHJlc2VudCJ9fQogCisJCXtfVSB7bWMgIlJlcXVpcmVzIG1lcmdlIHJlc29sdXRpb24ifX0KIAkJe1VfIHttYyAiUmVxdWlyZXMgbWVyZ2UgcmVzb2x1dGlvbiJ9fQogCQl7VVUge21jICJSZXF1aXJlcyBtZXJnZSByZXNvbHV0aW9uIn19CiAJCXtVTSB7bWMgIlJlcXVpcmVzIG1lcmdlIHJlc29sdXRpb24ifX0KIAkJe1VEIHttYyAiUmVxdWlyZXMgbWVyZ2UgcmVzb2x1dGlvbiJ9fQorCQl7VVQge21jICJSZXF1aXJlcyBtZXJnZSByZXNvbHV0aW9uIn19CiAJfSB7CiAJc2V0IHRleHQgW2V2YWwgW2xpbmRleCAkaSAxXV0KIAlpZiB7JG1heF9zdGF0dXNfZGVzYyA8IFtzdHJpbmcgbGVuZ3RoICR0ZXh0XX0gewpAQCAtMTcyOSwxMiArMTkxNCwzMyBAQAogCX0KIH0KIAotc2V0IGlzX3F1aXR0aW5nIDAKK3Byb2MgZG9fZXhwbG9yZSB7fSB7CisJc2V0IGV4cGxvcmVyIHt9CisJaWYge1tpc19DeWd3aW5dIHx8IFtpc19XaW5kb3dzXX0geworCQlzZXQgZXhwbG9yZXIgImV4cGxvcmVyLmV4ZSIKKwl9IGVsc2VpZiB7W2lzX01hY09TWF19IHsKKwkJc2V0IGV4cGxvcmVyICJvcGVuIgorCX0gZWxzZSB7CisJCSMgZnJlZWRlc2t0b3Aub3JnLWNvbmZvcm1pbmcgc3lzdGVtIGlzIG91ciBiZXN0IHNob3QKKwkJc2V0IGV4cGxvcmVyICJ4ZGctb3BlbiIKKwl9CisJZXZhbCBleGVjICRleHBsb3JlciBbZmlsZSBkaXJuYW1lIFtnaXRkaXJdXSAmCit9CiAKLXByb2MgZG9fcXVpdCB7fSB7CitzZXQgaXNfcXVpdHRpbmcgMAorc2V0IHJldF9jb2RlICAgIDEKKworcHJvYyB0ZXJtaW5hdGVfbWUge3dpbn0geworCWdsb2JhbCByZXRfY29kZQorCWlmIHskd2luIG5lIHsufX0gcmV0dXJuCisJZXhpdCAkcmV0X2NvZGUKK30KKworcHJvYyBkb19xdWl0IHt7cmMgezF9fX0gewogCWdsb2JhbCB1aV9jb21tIGlzX3F1aXR0aW5nIHJlcG9fY29uZmlnIGNvbW1pdF90eXBlCiAJZ2xvYmFsIEdJVEdVSV9CQ0tfZXhpc3RzIEdJVEdVSV9CQ0tfaQogCWdsb2JhbCB1aV9jb21tX3NwZWxsCisJZ2xvYmFsIHJldF9jb2RlCiAKIAlpZiB7JGlzX3F1aXR0aW5nfSByZXR1cm4KIAlzZXQgaXNfcXVpdHRpbmcgMQpAQCAtMTc4OSw2ICsxOTk1LDcgQEAKIAkJfQogCX0KIAorCXNldCByZXRfY29kZSAkcmMKIAlkZXN0cm95IC4KIH0KIApAQCAtMTc5NiwxMyArMjAwMywxMzcgQEAKIAlyZXNjYW4gdWlfcmVhZHkKIH0KIAorcHJvYyB1aV9kb19yZXNjYW4ge30geworCXJlc2NhbiB7Zm9yY2VfZmlyc3RfZGlmZiB1aV9yZWFkeX0KK30KKwogcHJvYyBkb19jb21taXQge30gewogCWNvbW1pdF90cmVlCiB9CiAKLXByb2MgbmV4dF9kaWZmIHt9IHsKK3Byb2MgbmV4dF9kaWZmIHt7YWZ0ZXIge319fSB7CiAJZ2xvYmFsIG5leHRfZGlmZl9wIG5leHRfZGlmZl93IG5leHRfZGlmZl9pCi0Jc2hvd19kaWZmICRuZXh0X2RpZmZfcCAkbmV4dF9kaWZmX3cgJG5leHRfZGlmZl9pCisJc2hvd19kaWZmICRuZXh0X2RpZmZfcCAkbmV4dF9kaWZmX3cge30ge30gJGFmdGVyCit9CisKK3Byb2MgZmluZF9hbmNob3JfcG9zIHtsc3QgbmFtZX0geworCXNldCBsaWQgW2xzZWFyY2ggLXNvcnRlZCAtZXhhY3QgJGxzdCAkbmFtZV0KKworCWlmIHskbGlkID09IC0xfSB7CisJCXNldCBsaWQgMAorCQlmb3JlYWNoIGxuYW1lICRsc3QgeworCQkJaWYgeyRsbmFtZSA+PSAkbmFtZX0gYnJlYWsKKwkJCWluY3IgbGlkCisJCX0KKwl9CisKKwlyZXR1cm4gJGxpZAorfQorCitwcm9jIGZpbmRfZmlsZV9mcm9tIHtmbGlzdCBpZHggZGVsdGEgcGF0aCBtbWFza30geworCWdsb2JhbCBmaWxlX3N0YXRlcworCisJc2V0IGxlbiBbbGxlbmd0aCAkZmxpc3RdCisJd2hpbGUgeyRpZHggPj0gMCAmJiAkaWR4IDwgJGxlbn0geworCQlzZXQgbmFtZSBbbGluZGV4ICRmbGlzdCAkaWR4XQorCisJCWlmIHskbmFtZSBuZSAkcGF0aCAmJiBbaW5mbyBleGlzdHMgZmlsZV9zdGF0ZXMoJG5hbWUpXX0geworCQkJc2V0IHN0YXRlIFtsaW5kZXggJGZpbGVfc3RhdGVzKCRuYW1lKSAwXQorCisJCQlpZiB7JG1tYXNrIGVxIHt9IHx8IFtyZWdleHAgJG1tYXNrICRzdGF0ZV19IHsKKwkJCQlyZXR1cm4gJGlkeAorCQkJfQorCQl9CisKKwkJaW5jciBpZHggJGRlbHRhCisJfQorCisJcmV0dXJuIHt9Cit9CisKK3Byb2MgZmluZF9uZXh0X2RpZmYge3cgcGF0aCB7bG5vIHt9fSB7bW1hc2sge319fSB7CisJZ2xvYmFsIG5leHRfZGlmZl9wIG5leHRfZGlmZl93IG5leHRfZGlmZl9pCisJZ2xvYmFsIGZpbGVfbGlzdHMgdWlfaW5kZXggdWlfd29ya2RpcgorCisJc2V0IGZsaXN0ICRmaWxlX2xpc3RzKCR3KQorCWlmIHskbG5vIGVxIHt9fSB7CisJCXNldCBsbm8gW2ZpbmRfYW5jaG9yX3BvcyAkZmxpc3QgJHBhdGhdCisJfSBlbHNlIHsKKwkJaW5jciBsbm8gLTEKKwl9CisKKwlpZiB7JG1tYXNrIG5lIHt9ICYmICFbcmVnZXhwIHsoXlxeKXwoXCQkKX0gJG1tYXNrXX0geworCQlpZiB7JHcgZXEgJHVpX2luZGV4fSB7CisJCQlzZXQgbW1hc2sgIl4kbW1hc2siCisJCX0gZWxzZSB7CisJCQlzZXQgbW1hc2sgIiRtbWFza1wkIgorCQl9CisJfQorCisJc2V0IGlkeCBbZmluZF9maWxlX2Zyb20gJGZsaXN0ICRsbm8gMSAkcGF0aCAkbW1hc2tdCisJaWYgeyRpZHggZXEge319IHsKKwkJaW5jciBsbm8gLTEKKwkJc2V0IGlkeCBbZmluZF9maWxlX2Zyb20gJGZsaXN0ICRsbm8gLTEgJHBhdGggJG1tYXNrXQorCX0KKworCWlmIHskaWR4IG5lIHt9fSB7CisJCXNldCBuZXh0X2RpZmZfdyAkdworCQlzZXQgbmV4dF9kaWZmX3AgW2xpbmRleCAkZmxpc3QgJGlkeF0KKwkJc2V0IG5leHRfZGlmZl9pIFtleHByIHskaWR4KzF9XQorCQlyZXR1cm4gMQorCX0gZWxzZSB7CisJCXJldHVybiAwCisJfQorfQorCitwcm9jIG5leHRfZGlmZl9hZnRlcl9hY3Rpb24ge3cgcGF0aCB7bG5vIHt9fSB7bW1hc2sge319fSB7CisJZ2xvYmFsIGN1cnJlbnRfZGlmZl9wYXRoCisKKwlpZiB7JHBhdGggbmUgJGN1cnJlbnRfZGlmZl9wYXRofSB7CisJCXJldHVybiB7fQorCX0gZWxzZWlmIHtbZmluZF9uZXh0X2RpZmYgJHcgJHBhdGggJGxubyAkbW1hc2tdfSB7CisJCXJldHVybiB7bmV4dF9kaWZmO30KKwl9IGVsc2UgeworCQlyZXR1cm4ge3Jlc2hvd19kaWZmO30KKwl9Cit9CisKK3Byb2Mgc2VsZWN0X2ZpcnN0X2RpZmYge2FmdGVyfSB7CisJZ2xvYmFsIHVpX3dvcmtkaXIKKworCWlmIHtbZmluZF9uZXh0X2RpZmYgJHVpX3dvcmtkaXIge30gMSB7Xl8/VX1dIHx8CisJICAgIFtmaW5kX25leHRfZGlmZiAkdWlfd29ya2RpciB7fSAxIHtbXk9dJH1dfSB7CisJCW5leHRfZGlmZiAkYWZ0ZXIKKwl9IGVsc2UgeworCQl1cGxldmVsICMwICRhZnRlcgorCX0KK30KKworcHJvYyBmb3JjZV9maXJzdF9kaWZmIHthZnRlcn0geworCWdsb2JhbCB1aV93b3JrZGlyIGN1cnJlbnRfZGlmZl9wYXRoIGZpbGVfc3RhdGVzCisKKwlpZiB7W2luZm8gZXhpc3RzIGZpbGVfc3RhdGVzKCRjdXJyZW50X2RpZmZfcGF0aCldfSB7CisJCXNldCBzdGF0ZSBbbGluZGV4ICRmaWxlX3N0YXRlcygkY3VycmVudF9kaWZmX3BhdGgpIDBdCisJfSBlbHNlIHsKKwkJc2V0IHN0YXRlIHtPT30KKwl9CisKKwlzZXQgcmVzZWxlY3QgMAorCWlmIHtbc3RyaW5nIGZpcnN0IHtVfSAkc3RhdGVdID49IDB9IHsKKwkJIyBBbHJlYWR5IGEgY29uZmxpY3QsIGRvIG5vdGhpbmcKKwl9IGVsc2VpZiB7W2ZpbmRfbmV4dF9kaWZmICR1aV93b3JrZGlyICRjdXJyZW50X2RpZmZfcGF0aCB7fSB7Xl8/VX1dfSB7CisJCXNldCByZXNlbGVjdCAxCisJfSBlbHNlaWYge1tzdHJpbmcgaW5kZXggJHN0YXRlIDFdIG5lIHtPfX0geworCQkjIEFscmVhZHkgYSBkaWZmICYgbm8gY29uZmxpY3RzLCBkbyBub3RoaW5nCisJfSBlbHNlaWYge1tmaW5kX25leHRfZGlmZiAkdWlfd29ya2RpciAkY3VycmVudF9kaWZmX3BhdGgge30ge1teT10kfV19IHsKKwkJc2V0IHJlc2VsZWN0IDEKKwl9CisKKwlpZiB7JHJlc2VsZWN0fSB7CisJCW5leHRfZGlmZiAkYWZ0ZXIKKwl9IGVsc2UgeworCQl1cGxldmVsICMwICRhZnRlcgorCX0KIH0KIAogcHJvYyB0b2dnbGVfb3JfZGlmZiB7dyB4IHl9IHsKQEAgLTE4MjMsMzQgKzIxNTQsMzEgQEAKIAkkdWlfaW5kZXggdGFnIHJlbW92ZSBpbl9zZWwgMC4wIGVuZAogCSR1aV93b3JrZGlyIHRhZyByZW1vdmUgaW5fc2VsIDAuMCBlbmQKIAorCSMgRGV0ZXJtaW5lIHRoZSBzdGF0ZSBvZiB0aGUgZmlsZQorCWlmIHtbaW5mbyBleGlzdHMgZmlsZV9zdGF0ZXMoJHBhdGgpXX0geworCQlzZXQgc3RhdGUgW2xpbmRleCAkZmlsZV9zdGF0ZXMoJHBhdGgpIDBdCisJfSBlbHNlIHsKKwkJc2V0IHN0YXRlIHtfX30KKwl9CisKKwkjIFJlc3RhZ2UgdGhlIGZpbGUsIG9yIHNpbXBseSBzaG93IHRoZSBkaWZmCiAJaWYgeyRjb2wgPT0gMCAmJiAkeSA+IDF9IHsKLQkJc2V0IGkgW2V4cHIgeyRsbm8tMX1dCi0JCXNldCBsbCBbZXhwciB7W2xsZW5ndGggJGZpbGVfbGlzdHMoJHcpXS0xfV0KLQotCQlpZiB7JGkgPT0gJGxsICYmICRpID09IDB9IHsKLQkJCXNldCBhZnRlciB7cmVzaG93X2RpZmY7fQotCQl9IGVsc2UgewotCQkJZ2xvYmFsIG5leHRfZGlmZl9wIG5leHRfZGlmZl93IG5leHRfZGlmZl9pCi0KLQkJCXNldCBuZXh0X2RpZmZfdyAkdwotCi0JCQlpZiB7JGkgPCAkbGx9IHsKLQkJCQlzZXQgaSBbZXhwciB7JGkgKyAxfV0KLQkJCQlzZXQgbmV4dF9kaWZmX2kgJGkKLQkJCX0gZWxzZSB7Ci0JCQkJc2V0IG5leHRfZGlmZl9pICRpCi0JCQkJc2V0IGkgW2V4cHIgeyRpIC0gMX1dCi0JCQl9Ci0KLQkJCXNldCBuZXh0X2RpZmZfcCBbbGluZGV4ICRmaWxlX2xpc3RzKCR3KSAkaV0KLQotCQkJaWYgeyRuZXh0X2RpZmZfcCBuZSB7fSAmJiAkY3VycmVudF9kaWZmX3BhdGggbmUge319IHsKLQkJCQlzZXQgYWZ0ZXIge25leHRfZGlmZjt9Ci0JCQl9IGVsc2UgewotCQkJCXNldCBhZnRlciB7fQotCQkJfQorCQkjIENvbmZsaWN0cyBuZWVkIHNwZWNpYWwgaGFuZGxpbmcKKwkJaWYge1tzdHJpbmcgZmlyc3Qge1V9ICRzdGF0ZV0gPj0gMH0geworCQkJIyAkdyBtdXN0IGFsd2F5cyBiZSAkdWlfd29ya2RpciwgYnV0Li4uCisJCQlpZiB7JHcgbmUgJHVpX3dvcmtkaXJ9IHsgc2V0IGxubyB7fSB9CisJCQltZXJnZV9zdGFnZV93b3JrZGlyICRwYXRoICRsbm8KKwkJCXJldHVybgogCQl9CiAKKwkJaWYge1tzdHJpbmcgaW5kZXggJHN0YXRlIDFdIGVxIHtPfX0geworCQkJc2V0IG1tYXNrIHt9CisJCX0gZWxzZSB7CisJCQlzZXQgbW1hc2sge1teT119CisJCX0KKworCQlzZXQgYWZ0ZXIgW25leHRfZGlmZl9hZnRlcl9hY3Rpb24gJHcgJHBhdGggJGxubyAkbW1hc2tdCisKIAkJaWYgeyR3IGVxICR1aV9pbmRleH0gewogCQkJdXBkYXRlX2luZGV4aW5mbyBcCiAJCQkJIlVuc3RhZ2luZyBbc2hvcnRfcGF0aCAkcGF0aF0gZnJvbSBjb21taXQiIFwKQEAgLTE5NjEsNiArMjI4OSw5IEBACiAJLm1iYXIgYWRkIGNhc2NhZGUgLWxhYmVsIFttYyBNZXJnZV0gLW1lbnUgLm1iYXIubWVyZ2UKIAkubWJhciBhZGQgY2FzY2FkZSAtbGFiZWwgW21jIFJlbW90ZV0gLW1lbnUgLm1iYXIucmVtb3RlCiB9CitpZiB7W2lzX2VuYWJsZWQgbXVsdGljb21taXRdIHx8IFtpc19lbmFibGVkIHNpbmdsZWNvbW1pdF19IHsKKwkubWJhciBhZGQgY2FzY2FkZSAtbGFiZWwgW21jIFRvb2xzXSAtbWVudSAubWJhci50b29scworfQogLiBjb25maWd1cmUgLW1lbnUgLm1iYXIKIAogIyAtLSBSZXBvc2l0b3J5IE1lbnUKQEAgLTE5NjgsNiArMjI5OSwxMSBAQAogbWVudSAubWJhci5yZXBvc2l0b3J5CiAKIC5tYmFyLnJlcG9zaXRvcnkgYWRkIGNvbW1hbmQgXAorCS1sYWJlbCBbbWMgIkV4cGxvcmUgV29ya2luZyBDb3B5Il0gXAorCS1jb21tYW5kIHtkb19leHBsb3JlfQorLm1iYXIucmVwb3NpdG9yeSBhZGQgc2VwYXJhdG9yCisKKy5tYmFyLnJlcG9zaXRvcnkgYWRkIGNvbW1hbmQgXAogCS1sYWJlbCBbbWMgIkJyb3dzZSBDdXJyZW50IEJyYW5jaCdzIEZpbGVzIl0gXAogCS1jb21tYW5kIHticm93c2VyOjpuZXcgJGN1cnJlbnRfYnJhbmNofQogc2V0IHVpX2Jyb3dzZV9jdXJyZW50IFsubWJhci5yZXBvc2l0b3J5IGluZGV4IGxhc3RdCkBAIC0yMDkxLDI5ICsyNDI3LDM5IEBACiAKICMgLS0gQ29tbWl0IE1lbnUKICMKK3Byb2MgY29tbWl0X2J0bl9jYXB0aW9uIHt9IHsKKwlpZiB7W2lzX2VuYWJsZWQgbm9jb21taXRdfSB7CisJCXJldHVybiBbbWMgIkRvbmUiXQorCX0gZWxzZSB7CisJCXJldHVybiBbbWMgQ29tbWl0QEB2ZXJiXQorCX0KK30KKwogaWYge1tpc19lbmFibGVkIG11bHRpY29tbWl0XSB8fCBbaXNfZW5hYmxlZCBzaW5nbGVjb21taXRdfSB7CiAJbWVudSAubWJhci5jb21taXQKIAotCS5tYmFyLmNvbW1pdCBhZGQgcmFkaW9idXR0b24gXAotCQktbGFiZWwgW21jICJOZXcgQ29tbWl0Il0gXAotCQktY29tbWFuZCBkb19zZWxlY3RfY29tbWl0X3R5cGUgXAotCQktdmFyaWFibGUgc2VsZWN0ZWRfY29tbWl0X3R5cGUgXAotCQktdmFsdWUgbmV3Ci0JbGFwcGVuZCBkaXNhYmxlX29uX2xvY2sgXAotCQlbbGlzdCAubWJhci5jb21taXQgZW50cnljb25mIFsubWJhci5jb21taXQgaW5kZXggbGFzdF0gLXN0YXRlXQorCWlmIHshW2lzX2VuYWJsZWQgbm9jb21taXRdfSB7CisJCS5tYmFyLmNvbW1pdCBhZGQgcmFkaW9idXR0b24gXAorCQkJLWxhYmVsIFttYyAiTmV3IENvbW1pdCJdIFwKKwkJCS1jb21tYW5kIGRvX3NlbGVjdF9jb21taXRfdHlwZSBcCisJCQktdmFyaWFibGUgc2VsZWN0ZWRfY29tbWl0X3R5cGUgXAorCQkJLXZhbHVlIG5ldworCQlsYXBwZW5kIGRpc2FibGVfb25fbG9jayBcCisJCQlbbGlzdCAubWJhci5jb21taXQgZW50cnljb25mIFsubWJhci5jb21taXQgaW5kZXggbGFzdF0gLXN0YXRlXQogCi0JLm1iYXIuY29tbWl0IGFkZCByYWRpb2J1dHRvbiBcCi0JCS1sYWJlbCBbbWMgIkFtZW5kIExhc3QgQ29tbWl0Il0gXAotCQktY29tbWFuZCBkb19zZWxlY3RfY29tbWl0X3R5cGUgXAotCQktdmFyaWFibGUgc2VsZWN0ZWRfY29tbWl0X3R5cGUgXAotCQktdmFsdWUgYW1lbmQKLQlsYXBwZW5kIGRpc2FibGVfb25fbG9jayBcCi0JCVtsaXN0IC5tYmFyLmNvbW1pdCBlbnRyeWNvbmYgWy5tYmFyLmNvbW1pdCBpbmRleCBsYXN0XSAtc3RhdGVdCisJCS5tYmFyLmNvbW1pdCBhZGQgcmFkaW9idXR0b24gXAorCQkJLWxhYmVsIFttYyAiQW1lbmQgTGFzdCBDb21taXQiXSBcCisJCQktY29tbWFuZCBkb19zZWxlY3RfY29tbWl0X3R5cGUgXAorCQkJLXZhcmlhYmxlIHNlbGVjdGVkX2NvbW1pdF90eXBlIFwKKwkJCS12YWx1ZSBhbWVuZAorCQlsYXBwZW5kIGRpc2FibGVfb25fbG9jayBcCisJCQlbbGlzdCAubWJhci5jb21taXQgZW50cnljb25mIFsubWJhci5jb21taXQgaW5kZXggbGFzdF0gLXN0YXRlXQogCi0JLm1iYXIuY29tbWl0IGFkZCBzZXBhcmF0b3IKKwkJLm1iYXIuY29tbWl0IGFkZCBzZXBhcmF0b3IKKwl9CiAKIAkubWJhci5jb21taXQgYWRkIGNvbW1hbmQgLWxhYmVsIFttYyBSZXNjYW5dIFwKLQkJLWNvbW1hbmQgZG9fcmVzY2FuIFwKKwkJLWNvbW1hbmQgdWlfZG9fcmVzY2FuIFwKIAkJLWFjY2VsZXJhdG9yIEY1CiAJbGFwcGVuZCBkaXNhYmxlX29uX2xvY2sgXAogCQlbbGlzdCAubWJhci5jb21taXQgZW50cnljb25mIFsubWJhci5jb21taXQgaW5kZXggbGFzdF0gLXN0YXRlXQpAQCAtMjE1MiwxMSArMjQ5OCwxMyBAQAogCiAJLm1iYXIuY29tbWl0IGFkZCBzZXBhcmF0b3IKIAotCS5tYmFyLmNvbW1pdCBhZGQgY29tbWFuZCAtbGFiZWwgW21jICJTaWduIE9mZiJdIFwKLQkJLWNvbW1hbmQgZG9fc2lnbm9mZiBcCi0JCS1hY2NlbGVyYXRvciAkTTFULVMKKwlpZiB7IVtpc19lbmFibGVkIG5vY29tbWl0bXNnXX0geworCQkubWJhci5jb21taXQgYWRkIGNvbW1hbmQgLWxhYmVsIFttYyAiU2lnbiBPZmYiXSBcCisJCQktY29tbWFuZCBkb19zaWdub2ZmIFwKKwkJCS1hY2NlbGVyYXRvciAkTTFULVMKKwl9CiAKLQkubWJhci5jb21taXQgYWRkIGNvbW1hbmQgLWxhYmVsIFttYyBDb21taXRAQHZlcmJdIFwKKwkubWJhci5jb21taXQgYWRkIGNvbW1hbmQgLWxhYmVsIFtjb21taXRfYnRuX2NhcHRpb25dIFwKIAkJLWNvbW1hbmQgZG9fY29tbWl0IFwKIAkJLWFjY2VsZXJhdG9yICRNMVQtUmV0dXJuCiAJbGFwcGVuZCBkaXNhYmxlX29uX2xvY2sgXApAQCAtMjE4NCwxMSArMjUzMiwxNSBAQAogCW1lbnUgLm1iYXIucmVtb3RlCiAKIAkubWJhci5yZW1vdGUgYWRkIGNvbW1hbmQgXAorCQktbGFiZWwgW21jICJBZGQuLi4iXSBcCisJCS1jb21tYW5kIHJlbW90ZV9hZGQ6OmRpYWxvZyBcCisJCS1hY2NlbGVyYXRvciAkTTFULUEKKwkubWJhci5yZW1vdGUgYWRkIGNvbW1hbmQgXAogCQktbGFiZWwgW21jICJQdXNoLi4uIl0gXAogCQktY29tbWFuZCBkb19wdXNoX2FueXdoZXJlIFwKIAkJLWFjY2VsZXJhdG9yICRNMVQtUAogCS5tYmFyLnJlbW90ZSBhZGQgY29tbWFuZCBcCi0JCS1sYWJlbCBbbWMgIkRlbGV0ZS4uLiJdIFwKKwkJLWxhYmVsIFttYyAiRGVsZXRlIEJyYW5jaC4uLiJdIFwKIAkJLWNvbW1hbmQgcmVtb3RlX2JyYW5jaF9kZWxldGU6OmRpYWxvZwogfQogCkBAIC0yMjE0LDYgKzI1NjYsMjAgQEAKIAkJLWNvbW1hbmQgZG9fb3B0aW9ucwogfQogCisjIC0tIFRvb2xzIE1lbnUKKyMKK2lmIHtbaXNfZW5hYmxlZCBtdWx0aWNvbW1pdF0gfHwgW2lzX2VuYWJsZWQgc2luZ2xlY29tbWl0XX0geworCXNldCB0b29sc19tZW51YmFyIC5tYmFyLnRvb2xzCisJbWVudSAkdG9vbHNfbWVudWJhcgorCSR0b29sc19tZW51YmFyIGFkZCBzZXBhcmF0b3IKKwkkdG9vbHNfbWVudWJhciBhZGQgY29tbWFuZCAtbGFiZWwgW21jICJBZGQuLi4iXSAtY29tbWFuZCB0b29sc19hZGQ6OmRpYWxvZworCSR0b29sc19tZW51YmFyIGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIlJlbW92ZS4uLiJdIC1jb21tYW5kIHRvb2xzX3JlbW92ZTo6ZGlhbG9nCisJc2V0IHRvb2xzX3RhaWxjbnQgMworCWlmIHtbYXJyYXkgbmFtZXMgcmVwb19jb25maWcgZ3VpdG9vbC4qLmNtZF0gbmUge319IHsKKwkJdG9vbHNfcG9wdWxhdGVfYWxsCisJfQorfQorCiAjIC0tIEhlbHAgTWVudQogIwogLm1iYXIgYWRkIGNhc2NhZGUgLWxhYmVsIFttYyBIZWxwXSAtbWVudSAubWJhci5oZWxwCkBAIC0yMjI0LDggKzI1OTAsNyBAQAogCQktY29tbWFuZCBkb19hYm91dAogfQogCi1zZXQgYnJvd3NlciB7fQotY2F0Y2gge3NldCBicm93c2VyICRyZXBvX2NvbmZpZyhpbnN0YXdlYi5icm93c2VyKX0KKwogc2V0IGRvY19wYXRoIFtmaWxlIGRpcm5hbWUgW2dpdGV4ZWNdXQogc2V0IGRvY19wYXRoIFtmaWxlIGpvaW4gJGRvY19wYXRoIERvY3VtZW50YXRpb24gaW5kZXguaHRtbF0KIApAQCAtMjIzMywzNCArMjU5OCwyMyBAQAogCXNldCBkb2NfcGF0aCBbZXhlYyBjeWdwYXRoIC0tbWl4ZWQgJGRvY19wYXRoXQogfQogCi1pZiB7JGJyb3dzZXIgZXEge319IHsKLQlpZiB7W2lzX01hY09TWF19IHsKLQkJc2V0IGJyb3dzZXIgb3BlbgotCX0gZWxzZWlmIHtbaXNfQ3lnd2luXX0gewotCQlzZXQgcHJvZ3JhbV9maWxlcyBbZmlsZSBkaXJuYW1lIFtleGVjIGN5Z3BhdGggLS13aW5kaXJdXQotCQlzZXQgcHJvZ3JhbV9maWxlcyBbZmlsZSBqb2luICRwcm9ncmFtX2ZpbGVzIHtQcm9ncmFtIEZpbGVzfV0KLQkJc2V0IGZpcmVmb3ggW2ZpbGUgam9pbiAkcHJvZ3JhbV9maWxlcyB7TW96aWxsYSBGaXJlZm94fSBmaXJlZm94LmV4ZV0KLQkJc2V0IGllIFtmaWxlIGpvaW4gJHByb2dyYW1fZmlsZXMge0ludGVybmV0IEV4cGxvcmVyfSBJRVhQTE9SRS5FWEVdCi0JCWlmIHtbZmlsZSBleGlzdHMgJGZpcmVmb3hdfSB7Ci0JCQlzZXQgYnJvd3NlciAkZmlyZWZveAotCQl9IGVsc2VpZiB7W2ZpbGUgZXhpc3RzICRpZV19IHsKLQkJCXNldCBicm93c2VyICRpZQotCQl9Ci0JCXVuc2V0IHByb2dyYW1fZmlsZXMgZmlyZWZveCBpZQotCX0KLX0KLQogaWYge1tmaWxlIGlzZmlsZSAkZG9jX3BhdGhdfSB7CiAJc2V0IGRvY191cmwgImZpbGU6JGRvY19wYXRoIgogfSBlbHNlIHsKIAlzZXQgZG9jX3VybCB7aHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9zb2Z0d2FyZS9zY20vZ2l0L2RvY3MvfQogfQogCi1pZiB7JGJyb3dzZXIgbmUge319IHsKLQkubWJhci5oZWxwIGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIk9ubGluZSBEb2N1bWVudGF0aW9uIl0gXAotCQktY29tbWFuZCBbbGlzdCBleGVjICRicm93c2VyICRkb2NfdXJsICZdCitwcm9jIHN0YXJ0X2Jyb3dzZXIge3VybH0geworCWdpdCAid2ViLS1icm93c2UiICR1cmwKIH0KLXVuc2V0IGJyb3dzZXIgZG9jX3BhdGggZG9jX3VybAorCisubWJhci5oZWxwIGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIk9ubGluZSBEb2N1bWVudGF0aW9uIl0gXAorCS1jb21tYW5kIFtsaXN0IHN0YXJ0X2Jyb3dzZXIgJGRvY191cmxdCisKKy5tYmFyLmhlbHAgYWRkIGNvbW1hbmQgLWxhYmVsIFttYyAiU2hvdyBTU0ggS2V5Il0gXAorCS1jb21tYW5kIGRvX3NzaF9rZXkKKwordW5zZXQgZG9jX3BhdGggZG9jX3VybAogCiAjIC0tIFN0YW5kYXJkIGJpbmRpbmdzCiAjCkBAIC0yMjc2LDIwICsyNjMwLDM5IEBACiAJZXhpdCAxCiB9CiAKK3Byb2Mgbm9ybWFsaXplX3JlbHBhdGgge3BhdGh9IHsKKwlzZXQgZWxlbWVudHMge30KKwlmb3JlYWNoIGl0ZW0gW2ZpbGUgc3BsaXQgJHBhdGhdIHsKKwkJaWYgeyRpdGVtIGVxIHsufX0gY29udGludWUKKwkJaWYgeyRpdGVtIGVxIHsuLn0gJiYgW2xsZW5ndGggJGVsZW1lbnRzXSA+IDAKKwkJICAgICYmIFtsaW5kZXggJGVsZW1lbnRzIGVuZF0gbmUgey4ufX0geworCQkJc2V0IGVsZW1lbnRzIFtscmFuZ2UgJGVsZW1lbnRzIDAgZW5kLTFdCisJCQljb250aW51ZQorCQl9CisJCWxhcHBlbmQgZWxlbWVudHMgJGl0ZW0KKwl9CisJcmV0dXJuIFtldmFsIGZpbGUgam9pbiAkZWxlbWVudHNdCit9CisKICMgLS0gTm90IGEgbm9ybWFsIGNvbW1pdCB0eXBlIGludm9jYXRpb24/ICBEbyB0aGF0IGluc3RlYWQhCiAjCiBzd2l0Y2ggLS0gJHN1YmNvbW1hbmQgewogYnJvd3NlciAtCiBibGFtZSB7Ci0Jc2V0IHN1YmNvbW1hbmRfYXJncyB7cmV2PyBwYXRofQorCWlmIHskc3ViY29tbWFuZCBlcSAiYmxhbWUifSB7CisJCXNldCBzdWJjb21tYW5kX2FyZ3Mge1stLWxpbmU9PG51bT5dIHJldj8gcGF0aH0KKwl9IGVsc2UgeworCQlzZXQgc3ViY29tbWFuZF9hcmdzIHtyZXY/IHBhdGh9CisJfQogCWlmIHskYXJndiBlcSB7fX0gdXNhZ2UKIAlzZXQgaGVhZCB7fQogCXNldCBwYXRoIHt9CisJc2V0IGp1bXBfc3BlYyB7fQogCXNldCBpc19wYXRoIDAKIAlmb3JlYWNoIGEgJGFyZ3YgewogCQlpZiB7JGlzX3BhdGggfHwgW2ZpbGUgZXhpc3RzICRfcHJlZml4JGFdfSB7CiAJCQlpZiB7JHBhdGggbmUge319IHVzYWdlCi0JCQlzZXQgcGF0aCAkX3ByZWZpeCRhCisJCQlzZXQgcGF0aCBbbm9ybWFsaXplX3JlbHBhdGggJF9wcmVmaXgkYV0KIAkJCWJyZWFrCiAJCX0gZWxzZWlmIHskYSBlcSB7LS19fSB7CiAJCQlpZiB7JHBhdGggbmUge319IHsKQEAgLTIyOTgsNiArMjY3MSw5IEBACiAJCQkJc2V0IHBhdGgge30KIAkJCX0KIAkJCXNldCBpc19wYXRoIDEKKwkJfSBlbHNlaWYge1tyZWdleHAge14tLWxpbmU9KFxkKykkfSAkYSBhIGxudW1dfSB7CisJCQlpZiB7JGp1bXBfc3BlYyBuZSB7fSB8fCAkaGVhZCBuZSB7fX0gdXNhZ2UKKwkJCXNldCBqdW1wX3NwZWMgW2xpc3QgJGxudW1dCiAJCX0gZWxzZWlmIHskaGVhZCBlcSB7fX0gewogCQkJaWYgeyRoZWFkIG5lIHt9fSB1c2FnZQogCQkJc2V0IGhlYWQgJGEKQEAgLTIzMDksNyArMjY4NSw3IEBACiAJdW5zZXQgaXNfcGF0aAogCiAJaWYgeyRoZWFkIG5lIHt9ICYmICRwYXRoIGVxIHt9fSB7Ci0JCXNldCBwYXRoICRfcHJlZml4JGhlYWQKKwkJc2V0IHBhdGggW25vcm1hbGl6ZV9yZWxwYXRoICRfcHJlZml4JGhlYWRdCiAJCXNldCBoZWFkIHt9CiAJfQogCkBAIC0yMzI5LDYgKzI3MDUsNyBAQAogCiAJc3dpdGNoIC0tICRzdWJjb21tYW5kIHsKIAlicm93c2VyIHsKKwkJaWYgeyRqdW1wX3NwZWMgbmUge319IHVzYWdlCiAJCWlmIHskaGVhZCBlcSB7fX0gewogCQkJaWYgeyRwYXRoIG5lIHt9ICYmIFtmaWxlIGlzZGlyZWN0b3J5ICRwYXRoXX0gewogCQkJCXNldCBoZWFkICRjdXJyZW50X2JyYW5jaApAQCAtMjM0NCw3ICsyNzIxLDcgQEAKIAkJCXB1dHMgc3RkZXJyIFttYyAiZmF0YWw6IGNhbm5vdCBzdGF0IHBhdGggJXM6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkiICRwYXRoXQogCQkJZXhpdCAxCiAJCX0KLQkJYmxhbWU6Om5ldyAkaGVhZCAkcGF0aAorCQlibGFtZTo6bmV3ICRoZWFkICRwYXRoICRqdW1wX3NwZWMKIAl9CiAJfQogCXJldHVybgpAQCAtMjQ2MCw3ICsyODM3LDcgQEAKIHBhY2sgLnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1dHRvbnMgLXNpZGUgbGVmdCAtZmlsbCB5CiAKIGJ1dHRvbiAudnBhbmUubG93ZXIuY29tbWFyZWEuYnV0dG9ucy5yZXNjYW4gLXRleHQgW21jIFJlc2Nhbl0gXAotCS1jb21tYW5kIGRvX3Jlc2NhbgorCS1jb21tYW5kIHVpX2RvX3Jlc2NhbgogcGFjayAudnBhbmUubG93ZXIuY29tbWFyZWEuYnV0dG9ucy5yZXNjYW4gLXNpZGUgdG9wIC1maWxsIHgKIGxhcHBlbmQgZGlzYWJsZV9vbl9sb2NrIFwKIAl7LnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1dHRvbnMucmVzY2FuIGNvbmYgLXN0YXRlfQpAQCAtMjQ3MSwxOSArMjg0OCwyMyBAQAogbGFwcGVuZCBkaXNhYmxlX29uX2xvY2sgXAogCXsudnBhbmUubG93ZXIuY29tbWFyZWEuYnV0dG9ucy5pbmNhbGwgY29uZiAtc3RhdGV9CiAKLWJ1dHRvbiAudnBhbmUubG93ZXIuY29tbWFyZWEuYnV0dG9ucy5zaWdub2ZmIC10ZXh0IFttYyAiU2lnbiBPZmYiXSBcCi0JLWNvbW1hbmQgZG9fc2lnbm9mZgotcGFjayAudnBhbmUubG93ZXIuY29tbWFyZWEuYnV0dG9ucy5zaWdub2ZmIC1zaWRlIHRvcCAtZmlsbCB4CitpZiB7IVtpc19lbmFibGVkIG5vY29tbWl0bXNnXX0geworCWJ1dHRvbiAudnBhbmUubG93ZXIuY29tbWFyZWEuYnV0dG9ucy5zaWdub2ZmIC10ZXh0IFttYyAiU2lnbiBPZmYiXSBcCisJCS1jb21tYW5kIGRvX3NpZ25vZmYKKwlwYWNrIC52cGFuZS5sb3dlci5jb21tYXJlYS5idXR0b25zLnNpZ25vZmYgLXNpZGUgdG9wIC1maWxsIHgKK30KIAotYnV0dG9uIC52cGFuZS5sb3dlci5jb21tYXJlYS5idXR0b25zLmNvbW1pdCAtdGV4dCBbbWMgQ29tbWl0QEB2ZXJiXSBcCitidXR0b24gLnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1dHRvbnMuY29tbWl0IC10ZXh0IFtjb21taXRfYnRuX2NhcHRpb25dIFwKIAktY29tbWFuZCBkb19jb21taXQKIHBhY2sgLnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1dHRvbnMuY29tbWl0IC1zaWRlIHRvcCAtZmlsbCB4CiBsYXBwZW5kIGRpc2FibGVfb25fbG9jayBcCiAJey52cGFuZS5sb3dlci5jb21tYXJlYS5idXR0b25zLmNvbW1pdCBjb25mIC1zdGF0ZX0KIAotYnV0dG9uIC52cGFuZS5sb3dlci5jb21tYXJlYS5idXR0b25zLnB1c2ggLXRleHQgW21jIFB1c2hdIFwKLQktY29tbWFuZCBkb19wdXNoX2FueXdoZXJlCi1wYWNrIC52cGFuZS5sb3dlci5jb21tYXJlYS5idXR0b25zLnB1c2ggLXNpZGUgdG9wIC1maWxsIHgKK2lmIHshW2lzX2VuYWJsZWQgbm9jb21taXRdfSB7CisJYnV0dG9uIC52cGFuZS5sb3dlci5jb21tYXJlYS5idXR0b25zLnB1c2ggLXRleHQgW21jIFB1c2hdIFwKKwkJLWNvbW1hbmQgZG9fcHVzaF9hbnl3aGVyZQorCXBhY2sgLnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1dHRvbnMucHVzaCAtc2lkZSB0b3AgLWZpbGwgeAorfQogCiAjIC0tIENvbW1pdCBNZXNzYWdlIEJ1ZmZlcgogIwpAQCAtMjQ5MSwyMCArMjg3MiwyNCBAQAogZnJhbWUgLnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1ZmZlci5oZWFkZXIKIHNldCB1aV9jb21tIC52cGFuZS5sb3dlci5jb21tYXJlYS5idWZmZXIudAogc2V0IHVpX2NvbWwgLnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1ZmZlci5oZWFkZXIubAotcmFkaW9idXR0b24gLnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1ZmZlci5oZWFkZXIubmV3IFwKLQktdGV4dCBbbWMgIk5ldyBDb21taXQiXSBcCi0JLWNvbW1hbmQgZG9fc2VsZWN0X2NvbW1pdF90eXBlIFwKLQktdmFyaWFibGUgc2VsZWN0ZWRfY29tbWl0X3R5cGUgXAotCS12YWx1ZSBuZXcKLWxhcHBlbmQgZGlzYWJsZV9vbl9sb2NrIFwKLQlbbGlzdCAudnBhbmUubG93ZXIuY29tbWFyZWEuYnVmZmVyLmhlYWRlci5uZXcgY29uZiAtc3RhdGVdCi1yYWRpb2J1dHRvbiAudnBhbmUubG93ZXIuY29tbWFyZWEuYnVmZmVyLmhlYWRlci5hbWVuZCBcCi0JLXRleHQgW21jICJBbWVuZCBMYXN0IENvbW1pdCJdIFwKLQktY29tbWFuZCBkb19zZWxlY3RfY29tbWl0X3R5cGUgXAotCS12YXJpYWJsZSBzZWxlY3RlZF9jb21taXRfdHlwZSBcCi0JLXZhbHVlIGFtZW5kCi1sYXBwZW5kIGRpc2FibGVfb25fbG9jayBcCi0JW2xpc3QgLnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1ZmZlci5oZWFkZXIuYW1lbmQgY29uZiAtc3RhdGVdCisKK2lmIHshW2lzX2VuYWJsZWQgbm9jb21taXRdfSB7CisJcmFkaW9idXR0b24gLnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1ZmZlci5oZWFkZXIubmV3IFwKKwkJLXRleHQgW21jICJOZXcgQ29tbWl0Il0gXAorCQktY29tbWFuZCBkb19zZWxlY3RfY29tbWl0X3R5cGUgXAorCQktdmFyaWFibGUgc2VsZWN0ZWRfY29tbWl0X3R5cGUgXAorCQktdmFsdWUgbmV3CisJbGFwcGVuZCBkaXNhYmxlX29uX2xvY2sgXAorCQlbbGlzdCAudnBhbmUubG93ZXIuY29tbWFyZWEuYnVmZmVyLmhlYWRlci5uZXcgY29uZiAtc3RhdGVdCisJcmFkaW9idXR0b24gLnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1ZmZlci5oZWFkZXIuYW1lbmQgXAorCQktdGV4dCBbbWMgIkFtZW5kIExhc3QgQ29tbWl0Il0gXAorCQktY29tbWFuZCBkb19zZWxlY3RfY29tbWl0X3R5cGUgXAorCQktdmFyaWFibGUgc2VsZWN0ZWRfY29tbWl0X3R5cGUgXAorCQktdmFsdWUgYW1lbmQKKwlsYXBwZW5kIGRpc2FibGVfb25fbG9jayBcCisJCVtsaXN0IC52cGFuZS5sb3dlci5jb21tYXJlYS5idWZmZXIuaGVhZGVyLmFtZW5kIGNvbmYgLXN0YXRlXQorfQorCiBsYWJlbCAkdWlfY29tbCBcCiAJLWFuY2hvciB3IFwKIAktanVzdGlmeSBsZWZ0CkBAIC0yNTIyLDggKzI5MDcsMTEgQEAKIH0KIHRyYWNlIGFkZCB2YXJpYWJsZSBjb21taXRfdHlwZSB3cml0ZSB0cmFjZV9jb21taXRfdHlwZQogcGFjayAkdWlfY29tbCAtc2lkZSBsZWZ0IC1maWxsIHgKLXBhY2sgLnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1ZmZlci5oZWFkZXIuYW1lbmQgLXNpZGUgcmlnaHQKLXBhY2sgLnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1ZmZlci5oZWFkZXIubmV3IC1zaWRlIHJpZ2h0CisKK2lmIHshW2lzX2VuYWJsZWQgbm9jb21taXRdfSB7CisJcGFjayAudnBhbmUubG93ZXIuY29tbWFyZWEuYnVmZmVyLmhlYWRlci5hbWVuZCAtc2lkZSByaWdodAorCXBhY2sgLnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1ZmZlci5oZWFkZXIubmV3IC1zaWRlIHJpZ2h0Cit9CiAKIHRleHQgJHVpX2NvbW0gLWJhY2tncm91bmQgd2hpdGUgLWZvcmVncm91bmQgYmxhY2sgXAogCS1ib3JkZXJ3aWR0aCAxIFwKQEAgLTI2ODksNiArMzA3Nyw1OSBAQAogCiAjIC0tIERpZmYgQm9keSBDb250ZXh0IE1lbnUKICMKKworcHJvYyBjcmVhdGVfY29tbW9uX2RpZmZfcG9wdXAge2N0eG19IHsKKwkkY3R4bSBhZGQgY29tbWFuZCBcCisJCS1sYWJlbCBbbWMgIlNob3cgTGVzcyBDb250ZXh0Il0gXAorCQktY29tbWFuZCBzaG93X2xlc3NfY29udGV4dAorCWxhcHBlbmQgZGlmZl9hY3Rpb25zIFtsaXN0ICRjdHhtIGVudHJ5Y29uZiBbJGN0eG0gaW5kZXggbGFzdF0gLXN0YXRlXQorCSRjdHhtIGFkZCBjb21tYW5kIFwKKwkJLWxhYmVsIFttYyAiU2hvdyBNb3JlIENvbnRleHQiXSBcCisJCS1jb21tYW5kIHNob3dfbW9yZV9jb250ZXh0CisJbGFwcGVuZCBkaWZmX2FjdGlvbnMgW2xpc3QgJGN0eG0gZW50cnljb25mIFskY3R4bSBpbmRleCBsYXN0XSAtc3RhdGVdCisJJGN0eG0gYWRkIHNlcGFyYXRvcgorCSRjdHhtIGFkZCBjb21tYW5kIFwKKwkJLWxhYmVsIFttYyBSZWZyZXNoXSBcCisJCS1jb21tYW5kIHJlc2hvd19kaWZmCisJbGFwcGVuZCBkaWZmX2FjdGlvbnMgW2xpc3QgJGN0eG0gZW50cnljb25mIFskY3R4bSBpbmRleCBsYXN0XSAtc3RhdGVdCisJJGN0eG0gYWRkIGNvbW1hbmQgXAorCQktbGFiZWwgW21jIENvcHldIFwKKwkJLWNvbW1hbmQge3RrX3RleHRDb3B5ICR1aV9kaWZmfQorCWxhcHBlbmQgZGlmZl9hY3Rpb25zIFtsaXN0ICRjdHhtIGVudHJ5Y29uZiBbJGN0eG0gaW5kZXggbGFzdF0gLXN0YXRlXQorCSRjdHhtIGFkZCBjb21tYW5kIFwKKwkJLWxhYmVsIFttYyAiU2VsZWN0IEFsbCJdIFwKKwkJLWNvbW1hbmQge2ZvY3VzICR1aV9kaWZmOyR1aV9kaWZmIHRhZyBhZGQgc2VsIDAuMCBlbmR9CisJbGFwcGVuZCBkaWZmX2FjdGlvbnMgW2xpc3QgJGN0eG0gZW50cnljb25mIFskY3R4bSBpbmRleCBsYXN0XSAtc3RhdGVdCisJJGN0eG0gYWRkIGNvbW1hbmQgXAorCQktbGFiZWwgW21jICJDb3B5IEFsbCJdIFwKKwkJLWNvbW1hbmQgeworCQkJJHVpX2RpZmYgdGFnIGFkZCBzZWwgMC4wIGVuZAorCQkJdGtfdGV4dENvcHkgJHVpX2RpZmYKKwkJCSR1aV9kaWZmIHRhZyByZW1vdmUgc2VsIDAuMCBlbmQKKwkJfQorCWxhcHBlbmQgZGlmZl9hY3Rpb25zIFtsaXN0ICRjdHhtIGVudHJ5Y29uZiBbJGN0eG0gaW5kZXggbGFzdF0gLXN0YXRlXQorCSRjdHhtIGFkZCBzZXBhcmF0b3IKKwkkY3R4bSBhZGQgY29tbWFuZCBcCisJCS1sYWJlbCBbbWMgIkRlY3JlYXNlIEZvbnQgU2l6ZSJdIFwKKwkJLWNvbW1hbmQge2luY3JfZm9udF9zaXplIGZvbnRfZGlmZiAtMX0KKwlsYXBwZW5kIGRpZmZfYWN0aW9ucyBbbGlzdCAkY3R4bSBlbnRyeWNvbmYgWyRjdHhtIGluZGV4IGxhc3RdIC1zdGF0ZV0KKwkkY3R4bSBhZGQgY29tbWFuZCBcCisJCS1sYWJlbCBbbWMgIkluY3JlYXNlIEZvbnQgU2l6ZSJdIFwKKwkJLWNvbW1hbmQge2luY3JfZm9udF9zaXplIGZvbnRfZGlmZiAxfQorCWxhcHBlbmQgZGlmZl9hY3Rpb25zIFtsaXN0ICRjdHhtIGVudHJ5Y29uZiBbJGN0eG0gaW5kZXggbGFzdF0gLXN0YXRlXQorCSRjdHhtIGFkZCBzZXBhcmF0b3IKKwlzZXQgZW1lbnUgJGN0eG0uZW5jCisJbWVudSAkZW1lbnUKKwlidWlsZF9lbmNvZGluZ19tZW51ICRlbWVudSBbbGlzdCBmb3JjZV9kaWZmX2VuY29kaW5nXQorCSRjdHhtIGFkZCBjYXNjYWRlIFwKKwkJLWxhYmVsIFttYyAiRW5jb2RpbmciXSBcCisJCS1tZW51ICRlbWVudQorCWxhcHBlbmQgZGlmZl9hY3Rpb25zIFtsaXN0ICRjdHhtIGVudHJ5Y29uZiBbJGN0eG0gaW5kZXggbGFzdF0gLXN0YXRlXQorCSRjdHhtIGFkZCBzZXBhcmF0b3IKKwkkY3R4bSBhZGQgY29tbWFuZCAtbGFiZWwgW21jICJPcHRpb25zLi4uIl0gXAorCQktY29tbWFuZCBkb19vcHRpb25zCit9CisKIHNldCBjdHhtIC52cGFuZS5sb3dlci5kaWZmLmJvZHkuY3R4bQogbWVudSAkY3R4bSAtdGVhcm9mZiAwCiAkY3R4bSBhZGQgY29tbWFuZCBcCkBAIC0yNzAyLDcxICszMTQzLDY1IEBACiBzZXQgdWlfZGlmZl9hcHBseWxpbmUgWyRjdHhtIGluZGV4IGxhc3RdCiBsYXBwZW5kIGRpZmZfYWN0aW9ucyBbbGlzdCAkY3R4bSBlbnRyeWNvbmYgJHVpX2RpZmZfYXBwbHlsaW5lIC1zdGF0ZV0KICRjdHhtIGFkZCBzZXBhcmF0b3IKLSRjdHhtIGFkZCBjb21tYW5kIFwKLQktbGFiZWwgW21jICJTaG93IExlc3MgQ29udGV4dCJdIFwKLQktY29tbWFuZCBzaG93X2xlc3NfY29udGV4dAotbGFwcGVuZCBkaWZmX2FjdGlvbnMgW2xpc3QgJGN0eG0gZW50cnljb25mIFskY3R4bSBpbmRleCBsYXN0XSAtc3RhdGVdCi0kY3R4bSBhZGQgY29tbWFuZCBcCi0JLWxhYmVsIFttYyAiU2hvdyBNb3JlIENvbnRleHQiXSBcCi0JLWNvbW1hbmQgc2hvd19tb3JlX2NvbnRleHQKLWxhcHBlbmQgZGlmZl9hY3Rpb25zIFtsaXN0ICRjdHhtIGVudHJ5Y29uZiBbJGN0eG0gaW5kZXggbGFzdF0gLXN0YXRlXQotJGN0eG0gYWRkIHNlcGFyYXRvcgotJGN0eG0gYWRkIGNvbW1hbmQgXAotCS1sYWJlbCBbbWMgUmVmcmVzaF0gXAotCS1jb21tYW5kIHJlc2hvd19kaWZmCi1sYXBwZW5kIGRpZmZfYWN0aW9ucyBbbGlzdCAkY3R4bSBlbnRyeWNvbmYgWyRjdHhtIGluZGV4IGxhc3RdIC1zdGF0ZV0KLSRjdHhtIGFkZCBjb21tYW5kIFwKLQktbGFiZWwgW21jIENvcHldIFwKLQktY29tbWFuZCB7dGtfdGV4dENvcHkgJHVpX2RpZmZ9Ci1sYXBwZW5kIGRpZmZfYWN0aW9ucyBbbGlzdCAkY3R4bSBlbnRyeWNvbmYgWyRjdHhtIGluZGV4IGxhc3RdIC1zdGF0ZV0KLSRjdHhtIGFkZCBjb21tYW5kIFwKLQktbGFiZWwgW21jICJTZWxlY3QgQWxsIl0gXAotCS1jb21tYW5kIHtmb2N1cyAkdWlfZGlmZjskdWlfZGlmZiB0YWcgYWRkIHNlbCAwLjAgZW5kfQotbGFwcGVuZCBkaWZmX2FjdGlvbnMgW2xpc3QgJGN0eG0gZW50cnljb25mIFskY3R4bSBpbmRleCBsYXN0XSAtc3RhdGVdCi0kY3R4bSBhZGQgY29tbWFuZCBcCi0JLWxhYmVsIFttYyAiQ29weSBBbGwiXSBcCi0JLWNvbW1hbmQgewotCQkkdWlfZGlmZiB0YWcgYWRkIHNlbCAwLjAgZW5kCi0JCXRrX3RleHRDb3B5ICR1aV9kaWZmCi0JCSR1aV9kaWZmIHRhZyByZW1vdmUgc2VsIDAuMCBlbmQKLQl9Ci1sYXBwZW5kIGRpZmZfYWN0aW9ucyBbbGlzdCAkY3R4bSBlbnRyeWNvbmYgWyRjdHhtIGluZGV4IGxhc3RdIC1zdGF0ZV0KLSRjdHhtIGFkZCBzZXBhcmF0b3IKLSRjdHhtIGFkZCBjb21tYW5kIFwKLQktbGFiZWwgW21jICJEZWNyZWFzZSBGb250IFNpemUiXSBcCi0JLWNvbW1hbmQge2luY3JfZm9udF9zaXplIGZvbnRfZGlmZiAtMX0KLWxhcHBlbmQgZGlmZl9hY3Rpb25zIFtsaXN0ICRjdHhtIGVudHJ5Y29uZiBbJGN0eG0gaW5kZXggbGFzdF0gLXN0YXRlXQotJGN0eG0gYWRkIGNvbW1hbmQgXAotCS1sYWJlbCBbbWMgIkluY3JlYXNlIEZvbnQgU2l6ZSJdIFwKLQktY29tbWFuZCB7aW5jcl9mb250X3NpemUgZm9udF9kaWZmIDF9Ci1sYXBwZW5kIGRpZmZfYWN0aW9ucyBbbGlzdCAkY3R4bSBlbnRyeWNvbmYgWyRjdHhtIGluZGV4IGxhc3RdIC1zdGF0ZV0KLSRjdHhtIGFkZCBzZXBhcmF0b3IKLSRjdHhtIGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIk9wdGlvbnMuLi4iXSBcCi0JLWNvbW1hbmQgZG9fb3B0aW9ucwotcHJvYyBwb3B1cF9kaWZmX21lbnUge2N0eG0geCB5IFggWX0geworY3JlYXRlX2NvbW1vbl9kaWZmX3BvcHVwICRjdHhtCisKK3NldCBjdHhtbWcgLnZwYW5lLmxvd2VyLmRpZmYuYm9keS5jdHhtbWcKK21lbnUgJGN0eG1tZyAtdGVhcm9mZiAwCiskY3R4bW1nIGFkZCBjb21tYW5kIFwKKwktbGFiZWwgW21jICJSdW4gTWVyZ2UgVG9vbCJdIFwKKwktY29tbWFuZCB7bWVyZ2VfcmVzb2x2ZV90b29sfQorbGFwcGVuZCBkaWZmX2FjdGlvbnMgW2xpc3QgJGN0eG1tZyBlbnRyeWNvbmYgWyRjdHhtbWcgaW5kZXggbGFzdF0gLXN0YXRlXQorJGN0eG1tZyBhZGQgc2VwYXJhdG9yCiskY3R4bW1nIGFkZCBjb21tYW5kIFwKKwktbGFiZWwgW21jICJVc2UgUmVtb3RlIFZlcnNpb24iXSBcCisJLWNvbW1hbmQge21lcmdlX3Jlc29sdmVfb25lIDN9CitsYXBwZW5kIGRpZmZfYWN0aW9ucyBbbGlzdCAkY3R4bW1nIGVudHJ5Y29uZiBbJGN0eG1tZyBpbmRleCBsYXN0XSAtc3RhdGVdCiskY3R4bW1nIGFkZCBjb21tYW5kIFwKKwktbGFiZWwgW21jICJVc2UgTG9jYWwgVmVyc2lvbiJdIFwKKwktY29tbWFuZCB7bWVyZ2VfcmVzb2x2ZV9vbmUgMn0KK2xhcHBlbmQgZGlmZl9hY3Rpb25zIFtsaXN0ICRjdHhtbWcgZW50cnljb25mIFskY3R4bW1nIGluZGV4IGxhc3RdIC1zdGF0ZV0KKyRjdHhtbWcgYWRkIGNvbW1hbmQgXAorCS1sYWJlbCBbbWMgIlJldmVydCBUbyBCYXNlIl0gXAorCS1jb21tYW5kIHttZXJnZV9yZXNvbHZlX29uZSAxfQorbGFwcGVuZCBkaWZmX2FjdGlvbnMgW2xpc3QgJGN0eG1tZyBlbnRyeWNvbmYgWyRjdHhtbWcgaW5kZXggbGFzdF0gLXN0YXRlXQorJGN0eG1tZyBhZGQgc2VwYXJhdG9yCitjcmVhdGVfY29tbW9uX2RpZmZfcG9wdXAgJGN0eG1tZworCitwcm9jIHBvcHVwX2RpZmZfbWVudSB7Y3R4bSBjdHhtbWcgeCB5IFggWX0gewogCWdsb2JhbCBjdXJyZW50X2RpZmZfcGF0aCBmaWxlX3N0YXRlcwogCXNldCA6OmN1cnNvclggJHgKIAlzZXQgOjpjdXJzb3JZICR5Ci0JaWYgeyQ6OnVpX2luZGV4IGVxICQ6OmN1cnJlbnRfZGlmZl9zaWRlfSB7Ci0JCXNldCBsIFttYyAiVW5zdGFnZSBIdW5rIEZyb20gQ29tbWl0Il0KLQkJc2V0IHQgW21jICJVbnN0YWdlIExpbmUgRnJvbSBDb21taXQiXQorCWlmIHtbaW5mbyBleGlzdHMgZmlsZV9zdGF0ZXMoJGN1cnJlbnRfZGlmZl9wYXRoKV19IHsKKwkJc2V0IHN0YXRlIFtsaW5kZXggJGZpbGVfc3RhdGVzKCRjdXJyZW50X2RpZmZfcGF0aCkgMF0KIAl9IGVsc2UgewotCQlzZXQgbCBbbWMgIlN0YWdlIEh1bmsgRm9yIENvbW1pdCJdCi0JCXNldCB0IFttYyAiU3RhZ2UgTGluZSBGb3IgQ29tbWl0Il0KKwkJc2V0IHN0YXRlIHtfX30KIAl9Ci0JaWYgeyQ6OmlzXzN3YXlfZGlmZgotCQl8fCAkY3VycmVudF9kaWZmX3BhdGggZXEge30KLQkJfHwgIVtpbmZvIGV4aXN0cyBmaWxlX3N0YXRlcygkY3VycmVudF9kaWZmX3BhdGgpXQotCQl8fCB7X099IGVxIFtsaW5kZXggJGZpbGVfc3RhdGVzKCRjdXJyZW50X2RpZmZfcGF0aCkgMF19IHsKLQkJc2V0IHMgZGlzYWJsZWQKKwlpZiB7W3N0cmluZyBmaXJzdCB7VX0gJHN0YXRlXSA+PSAwfSB7CisJCXRrX3BvcHVwICRjdHhtbWcgJFggJFkKIAl9IGVsc2UgewotCQlzZXQgcyBub3JtYWwKKwkJaWYgeyQ6OnVpX2luZGV4IGVxICQ6OmN1cnJlbnRfZGlmZl9zaWRlfSB7CisJCQlzZXQgbCBbbWMgIlVuc3RhZ2UgSHVuayBGcm9tIENvbW1pdCJdCisJCQlzZXQgdCBbbWMgIlVuc3RhZ2UgTGluZSBGcm9tIENvbW1pdCJdCisJCX0gZWxzZSB7CisJCQlzZXQgbCBbbWMgIlN0YWdlIEh1bmsgRm9yIENvbW1pdCJdCisJCQlzZXQgdCBbbWMgIlN0YWdlIExpbmUgRm9yIENvbW1pdCJdCisJCX0KKwkJaWYgeyQ6OmlzXzN3YXlfZGlmZgorCQkJfHwgJGN1cnJlbnRfZGlmZl9wYXRoIGVxIHt9CisJCQl8fCB7X199IGVxICRzdGF0ZQorCQkJfHwge19PfSBlcSAkc3RhdGUKKwkJCXx8IHtfVH0gZXEgJHN0YXRlCisJCQl8fCB7VF99IGVxICRzdGF0ZX0geworCQkJc2V0IHMgZGlzYWJsZWQKKwkJfSBlbHNlIHsKKwkJCXNldCBzIG5vcm1hbAorCQl9CisJCSRjdHhtIGVudHJ5Y29uZiAkOjp1aV9kaWZmX2FwcGx5aHVuayAtc3RhdGUgJHMgLWxhYmVsICRsCisJCSRjdHhtIGVudHJ5Y29uZiAkOjp1aV9kaWZmX2FwcGx5bGluZSAtc3RhdGUgJHMgLWxhYmVsICR0CisJCXRrX3BvcHVwICRjdHhtICRYICRZCiAJfQotCSRjdHhtIGVudHJ5Y29uZiAkOjp1aV9kaWZmX2FwcGx5aHVuayAtc3RhdGUgJHMgLWxhYmVsICRsCi0JJGN0eG0gZW50cnljb25mICQ6OnVpX2RpZmZfYXBwbHlsaW5lIC1zdGF0ZSAkcyAtbGFiZWwgJHQKLQl0a19wb3B1cCAkY3R4bSAkWCAkWQogfQotYmluZF9idXR0b24zICR1aV9kaWZmIFtsaXN0IHBvcHVwX2RpZmZfbWVudSAkY3R4bSAleCAleSAlWCAlWV0KK2JpbmRfYnV0dG9uMyAkdWlfZGlmZiBbbGlzdCBwb3B1cF9kaWZmX21lbnUgJGN0eG0gJGN0eG1tZyAleCAleSAlWCAlWV0KIAogIyAtLSBTdGF0dXMgQmFyCiAjCkBAIC0yODQyLDkgKzMyNzcsOSBAQAogCWJpbmQgLiA8JE0xQi1LZXktUD4gZG9fcHVzaF9hbnl3aGVyZQogfQogCi1iaW5kIC4gICA8S2V5LUY1PiAgICAgZG9fcmVzY2FuCi1iaW5kIC4gICA8JE0xQi1LZXktcj4gZG9fcmVzY2FuCi1iaW5kIC4gICA8JE0xQi1LZXktUj4gZG9fcmVzY2FuCitiaW5kIC4gICA8S2V5LUY1PiAgICAgdWlfZG9fcmVzY2FuCitiaW5kIC4gICA8JE0xQi1LZXktcj4gdWlfZG9fcmVzY2FuCitiaW5kIC4gICA8JE0xQi1LZXktUj4gdWlfZG9fcmVzY2FuCiBiaW5kIC4gICA8JE0xQi1LZXktcz4gZG9fc2lnbm9mZgogYmluZCAuICAgPCRNMUItS2V5LVM+IGRvX3NpZ25vZmYKIGJpbmQgLiAgIDwkTTFCLUtleS10PiBkb19hZGRfc2VsZWN0aW9uCkBAIC0yODk0LDcgKzMzMjksNiBAQAogCQl7XkdJVF9QQUdFUiR9IC0KIAkJe15HSVRfVFJBQ0UkfSAtCiAJCXteR0lUX0NPTkZJRyR9IC0KLQkJe15HSVRfQ09ORklHX0xPQ0FMJH0gLQogCQl7XkdJVF8oQVVUSE9SfENPTU1JVFRFUilfREFURSR9IHsKIAkJCWFwcGVuZCBtc2cgIiAtICRuYW1lXG4iCiAJCQlpbmNyIGlnbm9yZWRfZW52CkBAIC0yOTMxLDggKzMzNjUsNyBAQAogCWxvYWRfYWxsX3JlbW90ZXMKIAogCXNldCBuIFsubWJhci5yZW1vdGUgaW5kZXggZW5kXQotCXBvcHVsYXRlX3B1c2hfbWVudQotCXBvcHVsYXRlX2ZldGNoX21lbnUKKwlwb3B1bGF0ZV9yZW1vdGVzX21lbnUKIAlzZXQgbiBbZXhwciB7Wy5tYmFyLnJlbW90ZSBpbmRleCBlbmRdIC0gJG59XQogCWlmIHskbiA+IDB9IHsKIAkJaWYge1subWJhci5yZW1vdGUgdHlwZSAwXSBlcSAidGVhcm9mZiJ9IHsgaW5jciBuIH0KQEAgLTMwMjIsNyArMzQ1NSwyMyBAQAogaWYgeyFbd2luZm8gaXNtYXBwZWQgLl19IHsKIAl3bSBkZWljb25pZnkgLgogfQotYWZ0ZXIgMSBkb19yZXNjYW4KK2FmdGVyIDEgeworCWlmIHtbaXNfZW5hYmxlZCBpbml0aWFsYW1lbmRdfSB7CisJCWZvcmNlX2FtZW5kCisJfSBlbHNlIHsKKwkJZG9fcmVzY2FuCisJfQorCisJaWYge1tpc19lbmFibGVkIG5vY29tbWl0bXNnXX0geworCQkkdWlfY29tbSBjb25maWd1cmUgLXN0YXRlIGRpc2FibGVkIC1iYWNrZ3JvdW5kIGdyYXkKKwl9Cit9CiBpZiB7W2lzX2VuYWJsZWQgbXVsdGljb21taXRdfSB7CiAJYWZ0ZXIgMTAwMCBoaW50X2djCiB9CitpZiB7W2lzX2VuYWJsZWQgcmV0Y29kZV19IHsKKwliaW5kIC4gPERlc3Ryb3k+IHsrdGVybWluYXRlX21lICVXfQorfQoraWYgeyRwaWNrZWQgJiYgW2lzX2NvbmZpZ190cnVlIGd1aS5hdXRvZXhwbG9yZV19IHsKKwlkb19leHBsb3JlCit9CmRpZmYgLS1naXQgYS9naXQtZ3VpL2xpYi9ibGFtZS50Y2wgYi9naXQtZ3VpL2xpYi9ibGFtZS50Y2wKaW5kZXggYjZlNDJjYi4uMWYzYjA4ZiAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9saWIvYmxhbWUudGNsCisrKyBiL2dpdC1ndWkvbGliL2JsYW1lLnRjbApAQCAtMjEsOSArMjEsMTEgQEAKIGZpZWxkIHdfYXNpbSAgICAgOyAjIHRleHQgY29sdW1uOiBhbm5vdGF0aW9ucyAoc2ltcGxlIGNvbXB1dGF0aW9uKQogZmllbGQgd19maWxlICAgICA7ICMgdGV4dCBjb2x1bW46IGFjdHVhbCBmaWxlIGRhdGEKIGZpZWxkIHdfY3ZpZXdlciAgOyAjIHBhbmUgc2hvd2luZyBjb21taXQgbWVzc2FnZQorZmllbGQgZmluZGVyICAgICA7ICMgZmluZCBtaW5pLWRpYWxvZyBmcmFtZQogZmllbGQgc3RhdHVzICAgICA7ICMgc3RhdHVzIG1lZ2Etd2lkZ2V0IGluc3RhbmNlCiBmaWVsZCBvbGRfaGVpZ2h0IDsgIyBsYXN0IGtub3duIGhlaWdodCBvZiAkdy5maWxlX3BhbmUKIAorCiAjIFRrIFVJIGNvbG9ycwogIwogdmFyaWFibGUgYWN0aXZlX2NvbG9yICNjMGVkYzUKQEAgLTU4LDggKzYwLDggQEAKIGZpZWxkIHRvb2x0aXBfdGltZXIgICAgIHt9IDsgIyBDdXJyZW50IHRpbWVyIGV2ZW50IGZvciBvdXIgdG9vbHRpcAogZmllbGQgdG9vbHRpcF9jb21taXQgICAge30gOyAjIENvbW1pdChzKSBpbiB0b29sdGlwCiAKLWNvbnN0cnVjdG9yIG5ldyB7aV9jb21taXQgaV9wYXRofSB7Ci0JZ2xvYmFsIGN1cnNvcl9wdHIKK2NvbnN0cnVjdG9yIG5ldyB7aV9jb21taXQgaV9wYXRoIGlfanVtcH0geworCWdsb2JhbCBjdXJzb3JfcHRyIE0xQiBNMVQgaGF2ZV90azg1CiAJdmFyaWFibGUgYWN0aXZlX2NvbG9yCiAJdmFyaWFibGUgZ3JvdXBfY29sb3JzCiAKQEAgLTY5LDYgKzcxLDggQEAKIAltYWtlX3RvcGxldmVsIHRvcCB3CiAJd20gdGl0bGUgJHRvcCBbYXBwZW5kICJbYXBwbmFtZV0gKFtyZXBvbmFtZV0pOiAiIFttYyAiRmlsZSBWaWV3ZXIiXV0KIAorCXNldCBmb250X3cgW2ZvbnQgbWVhc3VyZSBmb250X2RpZmYgIjAiXQorCiAJZnJhbWUgJHcuaGVhZGVyIC1iYWNrZ3JvdW5kIGdvbGQKIAlsYWJlbCAkdy5oZWFkZXIuY29tbWl0X2wgXAogCQktdGV4dCBbbWMgIkNvbW1pdDoiXSBcCkBAIC0xMTQsOSArMTE4LDkgQEAKIAlwYWNrICR3X3BhdGggLWZpbGwgeCAtc2lkZSByaWdodAogCXBhY2sgJHcuaGVhZGVyLnBhdGhfbCAtc2lkZSByaWdodAogCi0JcGFuZWR3aW5kb3cgJHcuZmlsZV9wYW5lIC1vcmllbnQgdmVydGljYWwKLQlmcmFtZSAkdy5maWxlX3BhbmUub3V0Ci0JZnJhbWUgJHcuZmlsZV9wYW5lLmNtCisJcGFuZWR3aW5kb3cgJHcuZmlsZV9wYW5lIC1vcmllbnQgdmVydGljYWwgLWJvcmRlcndpZHRoIDAgLXNhc2h3aWR0aCAzCisJZnJhbWUgJHcuZmlsZV9wYW5lLm91dCAtcmVsaWVmIGZsYXQgLWJvcmRlcndpZHRoIDEKKwlmcmFtZSAkdy5maWxlX3BhbmUuY20gLXJlbGllZiBzdW5rZW4gLWJvcmRlcndpZHRoIDEKIAkkdy5maWxlX3BhbmUgYWRkICR3LmZpbGVfcGFuZS5vdXQgXAogCQktc3RpY2t5IG5zZXcgXAogCQktbWluc2l6ZSAxMDAgXApAQCAtMTk3LDYgKzIwMSwxMSBAQAogCQktd2lkdGggODAgXAogCQkteHNjcm9sbGNvbW1hbmQgW2xpc3QgJHcuZmlsZV9wYW5lLm91dC5zYnggc2V0XSBcCiAJCS1mb250IGZvbnRfZGlmZgorCWlmIHskaGF2ZV90azg1fSB7CisJCSR3X2ZpbGUgY29uZmlndXJlIC1pbmFjdGl2ZXNlbGVjdGJhY2tncm91bmQgZGFya2JsdWUKKwl9CisJJHdfZmlsZSB0YWcgY29uZiBmb3VuZCBcCisJCS1iYWNrZ3JvdW5kIHllbGxvdwogCiAJc2V0IHdfY29sdW1ucyBbbGlzdCAkd19hbW92ICR3X2FzaW0gJHdfbGluZSAkd19maWxlXQogCkBAIC0yMTcsNiArMjI2LDExIEBACiAJCS13ZWlnaHQgMQogCWdyaWQgcm93Y29uZmlndXJlICR3LmZpbGVfcGFuZS5vdXQgMCAtd2VpZ2h0IDEKIAorCXNldCBmaW5kZXIgWzo6c2VhcmNoYmFyOjpuZXcgXAorCQkkdy5maWxlX3BhbmUub3V0LmZmICR3X2ZpbGUgXAorCQktY29sdW1uIFtleHByIHtbbGxlbmd0aCAkd19jb2x1bW5zXSAtIDF9XSBcCisJCV0KKwogCXNldCB3X2N2aWV3ZXIgJHcuZmlsZV9wYW5lLmNtLnQKIAl0ZXh0ICR3X2N2aWV3ZXIgXAogCQktYmFja2dyb3VuZCB3aGl0ZSBcCkBAIC0yNTYsMTggKzI3MCw0MSBAQAogCSR3LmN0eG0gYWRkIGNvbW1hbmQgXAogCQktbGFiZWwgW21jICJDb3B5IENvbW1pdCJdIFwKIAkJLWNvbW1hbmQgW2NiIF9jb3B5Y29tbWl0XQorCSR3LmN0eG0gYWRkIHNlcGFyYXRvcgorCSR3LmN0eG0gYWRkIGNvbW1hbmQgXAorCQktbGFiZWwgW21jICJGaW5kIFRleHQuLi4iXSBcCisJCS1hY2NlbGVyYXRvciBGNyBcCisJCS1jb21tYW5kIFtsaXN0IHNlYXJjaGJhcjo6c2hvdyAkZmluZGVyXQorCW1lbnUgJHcuY3R4bS5lbmMKKwlidWlsZF9lbmNvZGluZ19tZW51ICR3LmN0eG0uZW5jIFtjYiBfc2V0ZW5jb2RpbmddCisJJHcuY3R4bSBhZGQgY2FzY2FkZSBcCisJCS1sYWJlbCBbbWMgIkVuY29kaW5nIl0gXAorCQktbWVudSAkdy5jdHhtLmVuYwogCSR3LmN0eG0gYWRkIGNvbW1hbmQgXAogCQktbGFiZWwgW21jICJEbyBGdWxsIENvcHkgRGV0ZWN0aW9uIl0gXAogCQktY29tbWFuZCBbY2IgX2Z1bGxjb3B5YmxhbWVdCisJJHcuY3R4bSBhZGQgc2VwYXJhdG9yCisJJHcuY3R4bSBhZGQgY29tbWFuZCBcCisJCS1sYWJlbCBbbWMgIlNob3cgSGlzdG9yeSBDb250ZXh0Il0gXAorCQktY29tbWFuZCBbY2IgX2dpdGtjb21taXRdCisJJHcuY3R4bSBhZGQgY29tbWFuZCBcCisJCS1sYWJlbCBbbWMgIkJsYW1lIFBhcmVudCBDb21taXQiXSBcCisJCS1jb21tYW5kIFtjYiBfYmxhbWVwYXJlbnRdCiAKIAlmb3JlYWNoIGkgJHdfY29sdW1ucyB7CiAJCWZvciB7c2V0IGcgMH0geyRnIDwgW2xsZW5ndGggJGdyb3VwX2NvbG9yc119IHtpbmNyIGd9IHsKIAkJCSRpIHRhZyBjb25mIGNvbG9yJGcgLWJhY2tncm91bmQgW2xpbmRleCAkZ3JvdXBfY29sb3JzICRnXQogCQl9CiAKKwkJaWYgeyRpIGVxICR3X2ZpbGV9IHsKKwkJCSR3X2ZpbGUgdGFnIHJhaXNlIGZvdW5kCisJCX0KKwkJJGkgdGFnIHJhaXNlIHNlbAorCiAJCSRpIGNvbmYgLWN1cnNvciAkY3Vyc29yX3B0cgotCQkkaSBjb25mIC15c2Nyb2xsY29tbWFuZCBbbGlzdCBtYW55MnNjcm9sbGJhciBcCi0JCQkkd19jb2x1bW5zIHl2aWV3ICR3LmZpbGVfcGFuZS5vdXQuc2J5XQorCQkkaSBjb25mIC15c2Nyb2xsY29tbWFuZCBcCisJCQkiW2xpc3QgOjpzZWFyY2hiYXI6OnNjcm9sbGVkICRmaW5kZXJdCisJCQkgW2xpc3QgbWFueTJzY3JvbGxiYXIgJHdfY29sdW1ucyB5dmlldyAkdy5maWxlX3BhbmUub3V0LnNieV0iCiAJCWJpbmQgJGkgPEJ1dHRvbi0xPiAiCiAJCQlbY2IgX2hpZGVfdG9vbHRpcF0KIAkJCVtjYiBfY2xpY2sgJGkgQCV4LCV5XQpAQCAtMjg0LDcgKzMyMSw3IEBACiAJCQl0a19wb3B1cCAkdy5jdHhtICVYICVZCiAJCSIKIAkJYmluZCAkaSA8U2hpZnQtVGFiPiAiW2xpc3QgZm9jdXMgJHdfY3ZpZXdlcl07YnJlYWsiCi0JCWJpbmQgJGkgPFRhYj4gICAgICAgIltsaXN0IGZvY3VzICR3X2N2aWV3ZXJdO2JyZWFrIgorCQliaW5kICRpIDxUYWI+ICAgICAgICJbY2IgX2ZvY3VzX3NlYXJjaCAkd19jdmlld2VyXTticmVhayIKIAl9CiAKIAlmb3JlYWNoIGkgW2NvbmNhdCAkd19jb2x1bW5zICR3X2N2aWV3ZXJdIHsKQEAgLTMwMCwxMCArMzM3LDE1IEBACiAJCWJpbmQgJGkgPENvbnRyb2wtS2V5LWY+IHtjYXRjaCB7JVcgeXZpZXcgc2Nyb2xsICAxIHBhZ2VzfTticmVha30KIAl9CiAKLQliaW5kICR3X2N2aWV3ZXIgPFNoaWZ0LVRhYj4gIltsaXN0IGZvY3VzICR3X2ZpbGVdO2JyZWFrIgorCWJpbmQgJHdfY3ZpZXdlciA8U2hpZnQtVGFiPiAiW2NiIF9mb2N1c19zZWFyY2ggJHdfZmlsZV07YnJlYWsiCiAJYmluZCAkd19jdmlld2VyIDxUYWI+ICAgICAgICJbbGlzdCBmb2N1cyAkd19maWxlXTticmVhayIKLQliaW5kICR3X2N2aWV3ZXIgPEJ1dHRvbi0xPiBbbGlzdCBmb2N1cyAkd19jdmlld2VyXQotCWJpbmQgJHdfZmlsZSAgICA8VmlzaWJpbGl0eT4gW2xpc3QgZm9jdXMgJHdfZmlsZV0KKwliaW5kICR3X2N2aWV3ZXIgPEJ1dHRvbi0xPiAgIFtsaXN0IGZvY3VzICR3X2N2aWV3ZXJdCisJYmluZCAkd19maWxlICAgIDxWaXNpYmlsaXR5PiBbY2IgX2ZvY3VzX3NlYXJjaCAkd19maWxlXQorCWJpbmQgJHRvcCAgICAgICA8Rjc+ICAgICAgICAgW2xpc3Qgc2VhcmNoYmFyOjpzaG93ICRmaW5kZXJdCisJYmluZCAkdG9wICAgICAgIDxFc2NhcGU+ICAgICBbbGlzdCBzZWFyY2hiYXI6OmhpZGUgJGZpbmRlcl0KKwliaW5kICR0b3AgICAgICAgPEYzPiAgICAgICAgIFtsaXN0IHNlYXJjaGJhcjo6ZmluZF9uZXh0ICRmaW5kZXJdCisJYmluZCAkdG9wICAgICAgIDxTaGlmdC1GMz4gICBbbGlzdCBzZWFyY2hiYXI6OmZpbmRfcHJldiAkZmluZGVyXQorCWNhdGNoIHsgYmluZCAkdG9wIDxTaGlmdC1LZXktWEY4Nl9Td2l0Y2hfVlRfMz4gW2xpc3Qgc2VhcmNoYmFyOjpmaW5kX3ByZXYgJGZpbmRlcl0gfQogCiAJZ3JpZCBjb25maWd1cmUgJHcuaGVhZGVyIC1zdGlja3kgZXcKIAlncmlkIGNvbmZpZ3VyZSAkdy5maWxlX3BhbmUgLXN0aWNreSBuc2V3CkBAIC0zMTUsOSArMzU3LDE0IEBACiAKIAlzZXQgcmVxX3cgW3dpbmZvIHJlcXdpZHRoICAkdG9wXQogCXNldCByZXFfaCBbd2luZm8gcmVxaGVpZ2h0ICR0b3BdCi0Jc2V0IHNjcl9oIFtleHByIHtbd2luZm8gc2NyZWVuaGVpZ2h0ICR0b3BdIC0gMTAwfV0KLQlpZiB7JHJlcV93IDwgNjAwfSB7c2V0IHJlcV93IDYwMH0KKwlzZXQgc2NyX3cgW2V4cHIge1t3aW5mbyBzY3JlZW53aWR0aCAkdG9wXSAtIDQwfV0KKwlzZXQgc2NyX2ggW2V4cHIge1t3aW5mbyBzY3JlZW5oZWlnaHQgJHRvcF0gLSAxMjB9XQorCXNldCBvcHRfdyBbZXhwciB7JGZvbnRfdyAqICg4MCArIDUqMyArIDMpfV0KKwlpZiB7JHJlcV93IDwgJG9wdF93fSB7c2V0IHJlcV93ICRvcHRfd30KKwlpZiB7JHJlcV93ID4gJHNjcl93fSB7c2V0IHJlcV93ICRzY3Jfd30KKwlzZXQgb3B0X2ggW2V4cHIgeyRyZXFfdyo0LzN9XQogCWlmIHskcmVxX2ggPCAkc2NyX2h9IHtzZXQgcmVxX2ggJHNjcl9ofQorCWlmIHskcmVxX2ggPiAkb3B0X2h9IHtzZXQgcmVxX2ggJG9wdF9ofQogCXNldCBnICIke3JlcV93fXgke3JlcV9ofSIKIAl3bSBnZW9tZXRyeSAkdG9wICRnCiAJdXBkYXRlCkBAIC0zMjUsMTQgKzM3MiwyOSBAQAogCXNldCBvbGRfaGVpZ2h0IFt3aW5mbyBoZWlnaHQgJHcuZmlsZV9wYW5lXQogCSR3LmZpbGVfcGFuZSBzYXNoIHBsYWNlIDAgXAogCQlbbGluZGV4IFskdy5maWxlX3BhbmUgc2FzaCBjb29yZCAwXSAwXSBcCi0JCVtleHByIHtpbnQoJG9sZF9oZWlnaHQgKiAwLjcwKX1dCisJCVtleHByIHtpbnQoJG9sZF9oZWlnaHQgKiAwLjgwKX1dCiAJYmluZCAkdy5maWxlX3BhbmUgPENvbmZpZ3VyZT4gXAogCSJpZiB7eyR3LmZpbGVfcGFuZX0gZXEgeyVXfX0ge1tjYiBfcmVzaXplICVoXX0iCiAKIAl3bSBwcm90b2NvbCAkdG9wIFdNX0RFTEVURV9XSU5ET1cgImRlc3Ryb3kgJHRvcCIKLQliaW5kICR0b3AgPERlc3Ryb3k+IFtjYiBfa2lsbF0KKwliaW5kICR0b3AgPERlc3Ryb3k+IFtjYiBfaGFuZGxlX2Rlc3Ryb3kgJVddCiAKLQlfbG9hZCAkdGhpcyB7fQorCV9sb2FkICR0aGlzICRpX2p1bXAKK30KKworbWV0aG9kIF9mb2N1c19zZWFyY2gge3dpbn0geworCWlmIHtbc2VhcmNoYmFyOjp2aXNpYmxlICRmaW5kZXJdfSB7CisJCWZvY3VzIFtzZWFyY2hiYXI6OmVkaXRvciAkZmluZGVyXQorCX0gZWxzZSB7CisJCWZvY3VzICR3aW4KKwl9Cit9CisKK21ldGhvZCBfaGFuZGxlX2Rlc3Ryb3kge3dpbn0geworCWlmIHskd2luIGVxICR3fSB7CisJCV9raWxsICR0aGlzCisJCWRlbGV0ZV90aGlzCisJfQogfQogCiBtZXRob2QgX2tpbGwge30gewpAQCAtMzkzLDcgKzQ1NSwxMCBAQAogCX0gZWxzZSB7CiAJCXNldCBmZCBbZ2l0X3JlYWQgY2F0LWZpbGUgYmxvYiAiJGNvbW1pdDokcGF0aCJdCiAJfQotCWZjb25maWd1cmUgJGZkIC1ibG9ja2luZyAwIC10cmFuc2xhdGlvbiBsZiAtZW5jb2RpbmcgYmluYXJ5CisJZmNvbmZpZ3VyZSAkZmQgXAorCQktYmxvY2tpbmcgMCBcCisJCS10cmFuc2xhdGlvbiBsZiBcCisJCS1lbmNvZGluZyBbZ2V0X3BhdGhfZW5jb2RpbmcgJHBhdGhdCiAJZmlsZWV2ZW50ICRmZCByZWFkYWJsZSBbY2IgX3JlYWRfZmlsZSAkZmQgJGp1bXBdCiAJc2V0IGN1cnJlbnRfZmQgJGZkCiB9CkBAIC00OTQsNyArNTU5LDcgQEAKIH0gaWZkZWxldGVkIHsgY2F0Y2gge2Nsb3NlICRmZH0gfQogCiBtZXRob2QgX2V4ZWNfYmxhbWUge2N1cl93IGN1cl9kIG9wdGlvbnMgY3VyX3N9IHsKLQlsYXBwZW5kIG9wdGlvbnMgLS1pbmNyZW1lbnRhbAorCWxhcHBlbmQgb3B0aW9ucyAtLWluY3JlbWVudGFsIC0tZW5jb2Rpbmc9dXRmLTgKIAlpZiB7JGNvbW1pdCBlcSB7fX0gewogCQlsYXBwZW5kIG9wdGlvbnMgLS1jb250ZW50cyAkcGF0aAogCX0gZWxzZSB7CkBAIC01MDIsNyArNTY3LDcgQEAKIAl9CiAJbGFwcGVuZCBvcHRpb25zIC0tICRwYXRoCiAJc2V0IGZkIFtldmFsIGdpdF9yZWFkIC0tbmljZSBibGFtZSAkb3B0aW9uc10KLQlmY29uZmlndXJlICRmZCAtYmxvY2tpbmcgMCAtdHJhbnNsYXRpb24gbGYgLWVuY29kaW5nIGJpbmFyeQorCWZjb25maWd1cmUgJGZkIC1ibG9ja2luZyAwIC10cmFuc2xhdGlvbiBsZiAtZW5jb2RpbmcgdXRmLTgKIAlmaWxlZXZlbnQgJGZkIHJlYWRhYmxlIFtjYiBfcmVhZF9ibGFtZSAkZmQgJGN1cl93ICRjdXJfZF0KIAlzZXQgY3VycmVudF9mZCAkZmQKIAlzZXQgYmxhbWVfbGluZXMgMApAQCAtNzgyLDI0ICs4NDcsNDIgQEAKIAlfc2hvd2NvbW1pdCAkdGhpcyAkY3VyX3cgJGxubwogfQogCittZXRob2QgX3NldGVuY29kaW5nIHtlbmN9IHsKKwlmb3JjZV9wYXRoX2VuY29kaW5nICRwYXRoICRlbmMKKwlfbG9hZCAkdGhpcyBbbGlzdCBcCisJCSRoaWdobGlnaHRfY29sdW1uIFwKKwkJJGhpZ2hsaWdodF9saW5lIFwKKwkJW2xpbmRleCBbJHdfZmlsZSB4dmlld10gMF0gXAorCQlbbGluZGV4IFskd19maWxlIHl2aWV3XSAwXSBcCisJCV0KK30KKwogbWV0aG9kIF9sb2FkX2NvbW1pdCB7Y3VyX3cgY3VyX2QgcG9zfSB7CiAJdXB2YXIgIzAgJGN1cl9kIGxpbmVfZGF0YQogCXNldCBsbm8gW2xpbmRleCBbc3BsaXQgWyRjdXJfdyBpbmRleCAkcG9zXSAuXSAwXQogCXNldCBkYXQgW2xpbmRleCAkbGluZV9kYXRhICRsbm9dCiAJaWYgeyRkYXQgbmUge319IHsKLQkJbGFwcGVuZCBoaXN0b3J5IFtsaXN0IFwKLQkJCSRjb21taXQgJHBhdGggXAotCQkJJGhpZ2hsaWdodF9jb2x1bW4gXAotCQkJJGhpZ2hsaWdodF9saW5lIFwKLQkJCVtsaW5kZXggWyR3X2ZpbGUgeHZpZXddIDBdIFwKLQkJCVtsaW5kZXggWyR3X2ZpbGUgeXZpZXddIDBdIFwKLQkJCV0KLQkJc2V0IGNvbW1pdCBbbGluZGV4ICRkYXQgMF0KLQkJc2V0IHBhdGggICBbbGluZGV4ICRkYXQgMV0KLQkJX2xvYWQgJHRoaXMgW2xpc3QgW2xpbmRleCAkZGF0IDJdXQorCQlfbG9hZF9uZXdfY29tbWl0ICR0aGlzICBcCisJCQlbbGluZGV4ICRkYXQgMF0gXAorCQkJW2xpbmRleCAkZGF0IDFdIFwKKwkJCVtsaXN0IFtsaW5kZXggJGRhdCAyXV0KIAl9CiB9CiAKK21ldGhvZCBfbG9hZF9uZXdfY29tbWl0IHtuZXdfY29tbWl0IG5ld19wYXRoIGp1bXB9IHsKKwlsYXBwZW5kIGhpc3RvcnkgW2xpc3QgXAorCQkkY29tbWl0ICRwYXRoIFwKKwkJJGhpZ2hsaWdodF9jb2x1bW4gXAorCQkkaGlnaGxpZ2h0X2xpbmUgXAorCQlbbGluZGV4IFskd19maWxlIHh2aWV3XSAwXSBcCisJCVtsaW5kZXggWyR3X2ZpbGUgeXZpZXddIDBdIFwKKwkJXQorCisJc2V0IGNvbW1pdCAkbmV3X2NvbW1pdAorCXNldCBwYXRoICAgJG5ld19wYXRoCisJX2xvYWQgJHRoaXMgJGp1bXAKK30KKwogbWV0aG9kIF9zaG93Y29tbWl0IHtjdXJfdyBsbm99IHsKIAlnbG9iYWwgcmVwb19jb25maWcKIAl2YXJpYWJsZSBhY3RpdmVfY29sb3IKQEAgLTgzMiw2ICs5MTUsMTAgQEAKIAkJZm9yZWFjaCBpICR3X2NvbHVtbnMgewogCQkJJGkgdGFnIGNvbmYgZyRjbWl0IC1iYWNrZ3JvdW5kICRhY3RpdmVfY29sb3IKIAkJCSRpIHRhZyByYWlzZSBnJGNtaXQKKwkJCWlmIHskaSBlcSAkd19maWxlfSB7CisJCQkJJHdfZmlsZSB0YWcgcmFpc2UgZm91bmQKKwkJCX0KKwkJCSRpIHRhZyByYWlzZSBzZWwKIAkJfQogCiAJCXNldCBhdXRob3JfbmFtZSB7fQpAQCAtODUzLDkgKzk0MCw4IEBACiAJCQljYXRjaCB7CiAJCQkJc2V0IGZkIFtnaXRfcmVhZCBjYXQtZmlsZSBjb21taXQgJGNtaXRdCiAJCQkJZmNvbmZpZ3VyZSAkZmQgLWVuY29kaW5nIGJpbmFyeSAtdHJhbnNsYXRpb24gbGYKLQkJCQlpZiB7W2NhdGNoIHtzZXQgZW5jICRyZXBvX2NvbmZpZyhpMThuLmNvbW1pdGVuY29kaW5nKX1dfSB7Ci0JCQkJCXNldCBlbmMgdXRmLTgKLQkJCQl9CisJCQkJIyBCeSBkZWZhdWx0IGNvbW1pdHMgYXJlIGFzc3VtZWQgdG8gYmUgaW4gdXRmLTgKKwkJCQlzZXQgZW5jIHV0Zi04CiAJCQkJd2hpbGUge1tnZXRzICRmZCBsaW5lXSA+IDB9IHsKIAkJCQkJaWYge1tzdHJpbmcgbWF0Y2gge2VuY29kaW5nICp9ICRsaW5lXX0gewogCQkJCQkJc2V0IGVuYyBbc3RyaW5nIHRvbG93ZXIgW3N0cmluZyByYW5nZSAkbGluZSA5IGVuZF1dCkBAIC04NjcsMTIgKzk1Myw2IEBACiAJCQkJc2V0IGVuYyBbdGNsX2VuY29kaW5nICRlbmNdCiAJCQkJaWYgeyRlbmMgbmUge319IHsKIAkJCQkJc2V0IG1zZyBbZW5jb2RpbmcgY29udmVydGZyb20gJGVuYyAkbXNnXQotCQkJCQlzZXQgYXV0aG9yX25hbWUgW2VuY29kaW5nIGNvbnZlcnRmcm9tICRlbmMgJGF1dGhvcl9uYW1lXQotCQkJCQlzZXQgY29tbWl0dGVyX25hbWUgW2VuY29kaW5nIGNvbnZlcnRmcm9tICRlbmMgJGNvbW1pdHRlcl9uYW1lXQotCQkJCQlzZXQgaGVhZGVyKCRjbWl0LGF1dGhvcikgJGF1dGhvcl9uYW1lCi0JCQkJCXNldCBoZWFkZXIoJGNtaXQsY29tbWl0dGVyKSAkY29tbWl0dGVyX25hbWUKLQkJCQkJc2V0IGhlYWRlcigkY21pdCxzdW1tYXJ5KSBcCi0JCQkJCVtlbmNvZGluZyBjb252ZXJ0ZnJvbSAkZW5jICRoZWFkZXIoJGNtaXQsc3VtbWFyeSldCiAJCQkJfQogCQkJCXNldCBtc2cgW3N0cmluZyB0cmltICRtc2ddCiAJCQl9CkBAIC05MDUsMTAgKzk4NSwxNCBAQAogCX0KIH0KIAotbWV0aG9kIF9jb3B5Y29tbWl0IHt9IHsKK21ldGhvZCBfZ2V0X2NsaWNrX2Ftb3ZfaW5mbyB7fSB7CiAJc2V0IHBvcyBAJDo6Y3Vyc29yWCwkOjpjdXJzb3JZCiAJc2V0IGxubyBbbGluZGV4IFtzcGxpdCBbJDo6Y3Vyc29yVyBpbmRleCAkcG9zXSAuXSAwXQotCXNldCBkYXQgW2xpbmRleCAkYW1vdl9kYXRhICRsbm9dCisJcmV0dXJuIFtsaW5kZXggJGFtb3ZfZGF0YSAkbG5vXQorfQorCittZXRob2QgX2NvcHljb21taXQge30geworCXNldCBkYXQgW19nZXRfY2xpY2tfYW1vdl9pbmZvICR0aGlzXQogCWlmIHskZGF0IG5lIHt9fSB7CiAJCWNsaXBib2FyZCBjbGVhcgogCQljbGlwYm9hcmQgYXBwZW5kIFwKQEAgLTkxOCw2ICsxMDAyLDE0NyBAQAogCX0KIH0KIAorbWV0aG9kIF9mb3JtYXRfb2Zmc2V0X2RhdGUge2Jhc2Ugb2Zmc2V0fSB7CisJc2V0IGV4dmFsIFtleHByIHskYmFzZSArICRvZmZzZXQqMjQqNjAqNjB9XQorCXJldHVybiBbY2xvY2sgZm9ybWF0ICRleHZhbCAtZm9ybWF0IHslWS0lbS0lZH1dCit9CisKK21ldGhvZCBfZ2l0a2NvbW1pdCB7fSB7CisJZ2xvYmFsIG51bGxpZAorCisJc2V0IGRhdCBbX2dldF9jbGlja19hbW92X2luZm8gJHRoaXNdCisJaWYgeyRkYXQgbmUge319IHsKKwkJc2V0IGNtaXQgW2xpbmRleCAkZGF0IDBdCisKKwkJIyBJZiB0aGUgbGluZSBiZWxvbmdzIHRvIHRoZSB3b3JraW5nIGNvcHksIHVzZSBIRUFEIGluc3RlYWQKKwkJaWYgeyRjbWl0IGVxICRudWxsaWR9IHsKKwkJCWlmIHtbY2F0Y2gge3NldCBjbWl0IFtnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQURdfSBlcnJdfSB7CisJCQkJZXJyb3JfcG9wdXAgW3N0cmNhdCBbbWMgIkNhbm5vdCBmaW5kIEhFQUQgY29tbWl0OiJdICJcblxuJGVyciJdCisJCQkJcmV0dXJuOworCQkJfQorCQl9CisKKwkJc2V0IHJhZGl1cyBbZ2V0X2NvbmZpZyBndWkuYmxhbWVoaXN0b3J5Y3R4XQorCQlzZXQgY21kbGluZSBbbGlzdCAtLXNlbGVjdC1jb21taXQ9JGNtaXRdCisKKyAgICAgICAgICAgICAgICBpZiB7JHJhZGl1cyA+IDB9IHsKKwkJCXNldCBhdXRob3JfdGltZSB7fQorCQkJc2V0IGNvbW1pdHRlcl90aW1lIHt9CisKKwkJCWNhdGNoIHtzZXQgYXV0aG9yX3RpbWUgJGhlYWRlcigkY21pdCxhdXRob3ItdGltZSl9CisJCQljYXRjaCB7c2V0IGNvbW1pdHRlcl90aW1lICRoZWFkZXIoJGNtaXQsY29tbWl0dGVyLXRpbWUpfQorCisJCQlpZiB7JGNvbW1pdHRlcl90aW1lIGVxIHt9fSB7CisJCQkJc2V0IGNvbW1pdHRlcl90aW1lICRhdXRob3JfdGltZQorCQkJfQorCisJCQlzZXQgYWZ0ZXJfdGltZSBbX2Zvcm1hdF9vZmZzZXRfZGF0ZSAkdGhpcyAkY29tbWl0dGVyX3RpbWUgW2V4cHIgey0kcmFkaXVzfV1dCisJCQlzZXQgYmVmb3JlX3RpbWUgW19mb3JtYXRfb2Zmc2V0X2RhdGUgJHRoaXMgJGNvbW1pdHRlcl90aW1lICRyYWRpdXNdCisKKwkJCWxhcHBlbmQgY21kbGluZSAtLWFmdGVyPSRhZnRlcl90aW1lIC0tYmVmb3JlPSRiZWZvcmVfdGltZQorCQl9CisKKwkJbGFwcGVuZCBjbWRsaW5lICRjbWl0CisKKwkJc2V0IGJhc2VfcmV2ICJIRUFEIgorCQlpZiB7JGNvbW1pdCBuZSB7fX0geworCQkJc2V0IGJhc2VfcmV2ICRjb21taXQKKwkJfQorCisJCWlmIHskYmFzZV9yZXYgbmUgJGNtaXR9IHsKKwkJCWxhcHBlbmQgY21kbGluZSAkYmFzZV9yZXYKKwkJfQorCisJCWRvX2dpdGsgJGNtZGxpbmUKKwl9Cit9CisKK21ldGhvZCBfYmxhbWVwYXJlbnQge30geworCWdsb2JhbCBudWxsaWQKKworCXNldCBkYXQgW19nZXRfY2xpY2tfYW1vdl9pbmZvICR0aGlzXQorCWlmIHskZGF0IG5lIHt9fSB7CisJCXNldCBjbWl0IFtsaW5kZXggJGRhdCAwXQorCQlzZXQgbmV3X3BhdGggW2xpbmRleCAkZGF0IDFdCisKKwkJIyBBbGxvdyB1c2luZyBCbGFtZSBQYXJlbnQgb24gbGluZXMgbW9kaWZpZWQgaW4gdGhlIHdvcmtpbmcgY29weQorCQlpZiB7JGNtaXQgZXEgJG51bGxpZH0geworCQkJc2V0IHBhcmVudF9yZWYgIkhFQUQiCisJCX0gZWxzZSB7CisJCQlzZXQgcGFyZW50X3JlZiAiJGNtaXReIgorCQl9CisJCWlmIHtbY2F0Y2gge3NldCBjcGFyZW50IFtnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5ICRwYXJlbnRfcmVmXX0gZXJyXX0geworCQkJZXJyb3JfcG9wdXAgW3N0cmNhdCBbbWMgIkNhbm5vdCBmaW5kIHBhcmVudCBjb21taXQ6Il0gIlxuXG4kZXJyIl0KKwkJCXJldHVybjsKKwkJfQorCisJCV9raWxsICR0aGlzCisKKwkJIyBHZW5lcmF0ZSBhIGRpZmYgYmV0d2VlbiB0aGUgY29tbWl0IGFuZCBpdHMgcGFyZW50LAorCQkjIGFuZCB1c2UgdGhlIGh1bmtzIHRvIHVwZGF0ZSB0aGUgbGluZSBudW1iZXIuCisJCSMgUmVxdWVzdCB6ZXJvIGNvbnRleHQgdG8gc2ltcGxpZnkgY2FsY3VsYXRpb25zLgorCQlpZiB7JGNtaXQgZXEgJG51bGxpZH0geworCQkJc2V0IGRpZmZjbWQgW2xpc3QgZGlmZi1pbmRleCAtLXVuaWZpZWQ9MCAkY3BhcmVudCAtLSAkbmV3X3BhdGhdCisJCX0gZWxzZSB7CisJCQlzZXQgZGlmZmNtZCBbbGlzdCBkaWZmLXRyZWUgLS11bmlmaWVkPTAgJGNwYXJlbnQgJGNtaXQgLS0gJG5ld19wYXRoXQorCQl9CisJCWlmIHtbY2F0Y2gge3NldCBmZCBbZXZhbCBnaXRfcmVhZCAkZGlmZmNtZF19IGVycl19IHsKKwkJCSRzdGF0dXMgc3RvcCBbbWMgIlVuYWJsZSB0byBkaXNwbGF5IHBhcmVudCJdCisJCQllcnJvcl9wb3B1cCBbc3RyY2F0IFttYyAiRXJyb3IgbG9hZGluZyBkaWZmOiJdICJcblxuJGVyciJdCisJCQlyZXR1cm4KKwkJfQorCisJCXNldCByX29yaWdfbGluZSBbbGluZGV4ICRkYXQgMl0KKworCQlmY29uZmlndXJlICRmZCBcCisJCQktYmxvY2tpbmcgMCBcCisJCQktZW5jb2RpbmcgYmluYXJ5IFwKKwkJCS10cmFuc2xhdGlvbiBiaW5hcnkKKwkJZmlsZWV2ZW50ICRmZCByZWFkYWJsZSBbY2IgX3JlYWRfZGlmZl9sb2FkX2NvbW1pdCBcCisJCQkkZmQgJGNwYXJlbnQgJG5ld19wYXRoICRyX29yaWdfbGluZV0KKwkJc2V0IGN1cnJlbnRfZmQgJGZkCisJfQorfQorCittZXRob2QgX3JlYWRfZGlmZl9sb2FkX2NvbW1pdCB7ZmQgY3BhcmVudCBuZXdfcGF0aCB0bGluZX0geworCWlmIHskZmQgbmUgJGN1cnJlbnRfZmR9IHsKKwkJY2F0Y2gge2Nsb3NlICRmZH0KKwkJcmV0dXJuCisJfQorCisJd2hpbGUge1tnZXRzICRmZCBsaW5lXSA+PSAwfSB7CisJCWlmIHtbcmVnZXhwIHteQEAgLShcZCspKCwoXGQrKSk/IFwrKFxkKykoLChcZCspKT8gQEB9ICRsaW5lIGxpbmUgXAorCQkJb2xkX2xpbmUgb3N6IG9sZF9zaXplIG5ld19saW5lIG5zeiBuZXdfc2l6ZV19IHsKKworCQkJaWYgeyRvc3ogZXEge319IHsgc2V0IG9sZF9zaXplIDEgfQorCQkJaWYgeyRuc3ogZXEge319IHsgc2V0IG5ld19zaXplIDEgfQorCisJCQlpZiB7JG5ld19saW5lIDw9ICR0bGluZX0geworCQkJCWlmIHtbZXhwciB7JG5ld19saW5lICsgJG5ld19zaXplfV0gPiAkdGxpbmV9IHsKKwkJCQkJIyBUYXJnZXQgbGluZSB3aXRoaW4gdGhlIGh1bmsKKwkJCQkJc2V0IGxpbmVfc2hpZnQgW2V4cHIgeworCQkJCQkJKCRuZXdfc2l6ZS0kb2xkX3NpemUpKigkdGxpbmUtJG5ld19saW5lKS8kbmV3X3NpemUKKwkJCQkJCX1dCisJCQkJfSBlbHNlIHsKKwkJCQkJc2V0IGxpbmVfc2hpZnQgW2V4cHIgeyRuZXdfc2l6ZS0kb2xkX3NpemV9XQorCQkJCX0KKworCQkJCXNldCByX29yaWdfbGluZSBbZXhwciB7JHJfb3JpZ19saW5lIC0gJGxpbmVfc2hpZnR9XQorCQkJfQorCQl9CisJfQorCisJaWYge1tlb2YgJGZkXX0geworCQljbG9zZSAkZmQ7CisJCXNldCBjdXJyZW50X2ZkIHt9CisKKwkJX2xvYWRfbmV3X2NvbW1pdCAkdGhpcyAgXAorCQkJJGNwYXJlbnQgICAgICAgIFwKKwkJCSRuZXdfcGF0aCAgICAgICBcCisJCQlbbGlzdCAkcl9vcmlnX2xpbmVdCisJfQorfSBpZmRlbGV0ZWQgeyBjYXRjaCB7Y2xvc2UgJGZkfSB9CisKIG1ldGhvZCBfc2hvd190b29sdGlwIHtjdXJfdyBwb3N9IHsKIAlpZiB7JHRvb2x0aXBfd20gbmUge319IHsKIAkJX29wZW5fdG9vbHRpcCAkdGhpcyAkY3VyX3cKZGlmZiAtLWdpdCBhL2dpdC1ndWkvbGliL2Jyb3dzZXIudGNsIGIvZ2l0LWd1aS9saWIvYnJvd3Nlci50Y2wKaW5kZXggYWI0NzBkMS4uMDQxMGNjNiAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9saWIvYnJvd3Nlci50Y2wKKysrIGIvZ2l0LWd1aS9saWIvYnJvd3Nlci50Y2wKQEAgLTE1MSw3ICsxNTEsNyBAQAogCQkJCWFwcGVuZCBwIFtsaW5kZXggJG4gMV0KIAkJCX0KIAkJCWFwcGVuZCBwICRuYW1lCi0JCQlibGFtZTo6bmV3ICRicm93c2VyX2NvbW1pdCAkcAorCQkJYmxhbWU6Om5ldyAkYnJvd3Nlcl9jb21taXQgJHAge30KIAkJfQogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvZ2l0LWd1aS9saWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsIGIvZ2l0LWd1aS9saWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsCmluZGV4IDMxODA3ODYuLmY5ZmY2MmEgMTAwNjQ0Ci0tLSBhL2dpdC1ndWkvbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbAorKysgYi9naXQtZ3VpL2xpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2wKQEAgLTQzLDEyICs0MywxOCBAQAogCQkJJHcubWJhci5hcHBsZSBhZGQgY29tbWFuZCBcCiAJCQkJLWxhYmVsIFttYyAiQWJvdXQgJXMiIFthcHBuYW1lXV0gXAogCQkJCS1jb21tYW5kIGRvX2Fib3V0CisJCQkkdy5tYmFyLmFwcGxlIGFkZCBjb21tYW5kIFwKKwkJCQktbGFiZWwgW21jICJTaG93IFNTSCBLZXkiXSBcCisJCQkJLWNvbW1hbmQgZG9fc3NoX2tleQogCQl9IGVsc2UgewogCQkJJHcubWJhciBhZGQgY2FzY2FkZSAtbGFiZWwgW21jIEhlbHBdIC1tZW51ICR3Lm1iYXIuaGVscAogCQkJbWVudSAkdy5tYmFyLmhlbHAKIAkJCSR3Lm1iYXIuaGVscCBhZGQgY29tbWFuZCBcCiAJCQkJLWxhYmVsIFttYyAiQWJvdXQgJXMiIFthcHBuYW1lXV0gXAogCQkJCS1jb21tYW5kIGRvX2Fib3V0CisJCQkkdy5tYmFyLmhlbHAgYWRkIGNvbW1hbmQgXAorCQkJCS1sYWJlbCBbbWMgIlNob3cgU1NIIEtleSJdIFwKKwkJCQktY29tbWFuZCBkb19zc2hfa2V5CiAJCX0KIAogCQl3bSBwcm90b2NvbCAkdG9wIFdNX0RFTEVURV9XSU5ET1cgZXhpdApAQCAtMzgxLDcgKzM4Nyw4IEBACiAJbGFiZWwgJHdfYm9keS53aGVyZS5sIC10ZXh0IFttYyAiRGlyZWN0b3J5OiJdCiAJZW50cnkgJHdfYm9keS53aGVyZS50IFwKIAkJLXRleHR2YXJpYWJsZSBAbG9jYWxfcGF0aCBcCi0JCS1mb250IGZvbnRfZGlmZiBcCisJCS1ib3JkZXJ3aWR0aCAxIFwKKwkJLXJlbGllZiBzdW5rZW4gXAogCQktd2lkdGggNTAKIAlidXR0b24gJHdfYm9keS53aGVyZS5iIFwKIAkJLXRleHQgW21jICJCcm93c2UiXSBcCkBAIC00NjMsMjAgKzQ3MCwyMiBAQAogCWZyYW1lICR3X2JvZHkuYXJncwogCXBhY2sgJGFyZ3MgLWZpbGwgYm90aAogCi0JbGFiZWwgJGFyZ3Mub3JpZ2luX2wgLXRleHQgW21jICJVUkw6Il0KKwlsYWJlbCAkYXJncy5vcmlnaW5fbCAtdGV4dCBbbWMgIlNvdXJjZSBMb2NhdGlvbjoiXQogCWVudHJ5ICRhcmdzLm9yaWdpbl90IFwKIAkJLXRleHR2YXJpYWJsZSBAb3JpZ2luX3VybCBcCi0JCS1mb250IGZvbnRfZGlmZiBcCisJCS1ib3JkZXJ3aWR0aCAxIFwKKwkJLXJlbGllZiBzdW5rZW4gXAogCQktd2lkdGggNTAKIAlidXR0b24gJGFyZ3Mub3JpZ2luX2IgXAogCQktdGV4dCBbbWMgIkJyb3dzZSJdIFwKIAkJLWNvbW1hbmQgW2NiIF9vcGVuX29yaWdpbl0KIAlncmlkICRhcmdzLm9yaWdpbl9sICRhcmdzLm9yaWdpbl90ICRhcmdzLm9yaWdpbl9iIC1zdGlja3kgZXcKIAotCWxhYmVsICRhcmdzLndoZXJlX2wgLXRleHQgW21jICJEaXJlY3Rvcnk6Il0KKwlsYWJlbCAkYXJncy53aGVyZV9sIC10ZXh0IFttYyAiVGFyZ2V0IERpcmVjdG9yeToiXQogCWVudHJ5ICRhcmdzLndoZXJlX3QgXAogCQktdGV4dHZhcmlhYmxlIEBsb2NhbF9wYXRoIFwKLQkJLWZvbnQgZm9udF9kaWZmIFwKKwkJLWJvcmRlcndpZHRoIDEgXAorCQktcmVsaWVmIHN1bmtlbiBcCiAJCS13aWR0aCA1MAogCWJ1dHRvbiAkYXJncy53aGVyZV9iIFwKIAkJLXRleHQgW21jICJCcm93c2UiXSBcCkBAIC05NzksNyArOTg4LDggQEAKIAlsYWJlbCAkd19ib2R5LndoZXJlLmwgLXRleHQgW21jICJSZXBvc2l0b3J5OiJdCiAJZW50cnkgJHdfYm9keS53aGVyZS50IFwKIAkJLXRleHR2YXJpYWJsZSBAbG9jYWxfcGF0aCBcCi0JCS1mb250IGZvbnRfZGlmZiBcCisJCS1ib3JkZXJ3aWR0aCAxIFwKKwkJLXJlbGllZiBzdW5rZW4gXAogCQktd2lkdGggNTAKIAlidXR0b24gJHdfYm9keS53aGVyZS5iIFwKIAkJLXRleHQgW21jICJCcm93c2UiXSBcCmRpZmYgLS1naXQgYS9naXQtZ3VpL2xpYi9jb21taXQudGNsIGIvZ2l0LWd1aS9saWIvY29tbWl0LnRjbAppbmRleCA0MGE3MTAzLi45Y2M4NDEwIDEwMDY0NAotLS0gYS9naXQtZ3VpL2xpYi9jb21taXQudGNsCisrKyBiL2dpdC1ndWkvbGliL2NvbW1pdC50Y2wKQEAgLTI3LDkgKzI3LDggQEAKIAlpZiB7W2NhdGNoIHsKIAkJCXNldCBmZCBbZ2l0X3JlYWQgY2F0LWZpbGUgY29tbWl0ICRjdXJIRUFEXQogCQkJZmNvbmZpZ3VyZSAkZmQgLWVuY29kaW5nIGJpbmFyeSAtdHJhbnNsYXRpb24gbGYKLQkJCWlmIHtbY2F0Y2gge3NldCBlbmMgJHJlcG9fY29uZmlnKGkxOG4uY29tbWl0ZW5jb2RpbmcpfV19IHsKLQkJCQlzZXQgZW5jIHV0Zi04Ci0JCQl9CisJCQkjIEJ5IGRlZmF1bHQgY29tbWl0cyBhcmUgYXNzdW1lZCB0byBiZSBpbiB1dGYtOAorCQkJc2V0IGVuYyB1dGYtOAogCQkJd2hpbGUge1tnZXRzICRmZCBsaW5lXSA+IDB9IHsKIAkJCQlpZiB7W3N0cmluZyBtYXRjaCB7cGFyZW50ICp9ICRsaW5lXX0gewogCQkJCQlsYXBwZW5kIHBhcmVudHMgW3N0cmluZyByYW5nZSAkbGluZSA3IGVuZF0KQEAgLTE0OSw3ICsxNDgsOSBAQAogCQlfPyB7Y29udGludWV9CiAJCUE/IC0KIAkJRD8gLQorCQlUXyAtCiAJCU0/IHtzZXQgZmlsZXNfcmVhZHkgMX0KKwkJX1UgLQogCQlVPyB7CiAJCQllcnJvcl9wb3B1cCBbbWMgIlVubWVyZ2VkIGZpbGVzIGNhbm5vdCBiZSBjb21taXR0ZWQuCiAKQEAgLTE2Niw3ICsxNjcsNyBAQAogCQl9CiAJCX0KIAl9Ci0JaWYgeyEkZmlsZXNfcmVhZHkgJiYgIVtzdHJpbmcgbWF0Y2ggKm1lcmdlICRjdXJUeXBlXX0geworCWlmIHshJGZpbGVzX3JlYWR5ICYmICFbc3RyaW5nIG1hdGNoICptZXJnZSAkY3VyVHlwZV0gJiYgIVtpc19lbmFibGVkIG5vY29tbWl0XX0gewogCQlpbmZvX3BvcHVwIFttYyAiTm8gY2hhbmdlcyB0byBjb21taXQuCiAKIFlvdSBtdXN0IHN0YWdlIGF0IGxlYXN0IDEgZmlsZSBiZWZvcmUgeW91IGNhbiBjb21taXQuCkBAIC0xNzUsNiArMTc2LDggQEAKIAkJcmV0dXJuCiAJfQogCisJaWYge1tpc19lbmFibGVkIG5vY29tbWl0bXNnXX0geyBkb19xdWl0IDAgfQorCiAJIyAtLSBBIG1lc3NhZ2UgaXMgcmVxdWlyZWQuCiAJIwogCXNldCBtc2cgW3N0cmluZyB0cmltIFskdWlfY29tbSBnZXQgMS4wIGVuZF1dCkBAIC0yMDQsMTIgKzIwNywxNCBAQAogCWlmIHskdXNlX2VuYyBuZSB7fX0gewogCQlmY29uZmlndXJlICRtc2dfd3QgLWVuY29kaW5nICR1c2VfZW5jCiAJfSBlbHNlIHsKLQkJcHV0cyBzdGRlcnIgW21jICJ3YXJuaW5nOiBUY2wgZG9lcyBub3Qgc3VwcG9ydCBlbmNvZGluZyAnJXMnLiIgJGVuY10KKwkJZXJyb3JfcG9wdXAgW21jICJ3YXJuaW5nOiBUY2wgZG9lcyBub3Qgc3VwcG9ydCBlbmNvZGluZyAnJXMnLiIgJGVuY10KIAkJZmNvbmZpZ3VyZSAkbXNnX3d0IC1lbmNvZGluZyB1dGYtOAogCX0KIAlwdXRzICRtc2dfd3QgJG1zZwogCWNsb3NlICRtc2dfd3QKIAorCWlmIHtbaXNfZW5hYmxlZCBub2NvbW1pdF19IHsgZG9fcXVpdCAwIH0KKwogCSMgLS0gUnVuIHRoZSBwcmUtY29tbWl0IGhvb2suCiAJIwogCXNldCBmZF9waCBbZ2l0aG9va19yZWFkIHByZS1jb21taXRdCkBAIC00MDgsNyArNDEzLDcgQEAKIAkJc2V0IDo6R0lUR1VJX0JDS19leGlzdHMgMAogCX0KIAotCWlmIHtbaXNfZW5hYmxlZCBzaW5nbGVjb21taXRdfSBkb19xdWl0CisJaWYge1tpc19lbmFibGVkIHNpbmdsZWNvbW1pdF19IHsgZG9fcXVpdCAwIH0KIAogCSMgLS0gVXBkYXRlIGluIG1lbW9yeSBzdGF0dXMKIAkjCkBAIC00MjgsNiArNDMzLDcgQEAKIAkJX18gLQogCQlBXyAtCiAJCU1fIC0KKwkJVF8gLQogCQlEXyB7CiAJCQl1bnNldCBmaWxlX3N0YXRlcygkcGF0aCkKIAkJCWNhdGNoIHt1bnNldCBzZWxlY3RlZF9wYXRocygkcGF0aCl9CmRpZmYgLS1naXQgYS9naXQtZ3VpL2xpYi9kaWZmLnRjbCBiL2dpdC1ndWkvbGliL2RpZmYudGNsCmluZGV4IDE5NzBiNjAuLmJiYmYxNWMgMTAwNjQ0Ci0tLSBhL2dpdC1ndWkvbGliL2RpZmYudGNsCisrKyBiL2dpdC1ndWkvbGliL2RpZmYudGNsCkBAIC0xNiw3ICsxNiw3IEBACiAJJHVpX3dvcmtkaXIgdGFnIHJlbW92ZSBpbl9kaWZmIDAuMCBlbmQKIH0KIAotcHJvYyByZXNob3dfZGlmZiB7fSB7Citwcm9jIHJlc2hvd19kaWZmIHt7YWZ0ZXIge319fSB7CiAJZ2xvYmFsIGZpbGVfc3RhdGVzIGZpbGVfbGlzdHMKIAlnbG9iYWwgY3VycmVudF9kaWZmX3BhdGggY3VycmVudF9kaWZmX3NpZGUKIAlnbG9iYWwgdWlfZGlmZgpAQCAtMjQsMTMgKzI0LDI4IEBACiAJc2V0IHAgJGN1cnJlbnRfZGlmZl9wYXRoCiAJaWYgeyRwIGVxIHt9fSB7CiAJCSMgTm8gZGlmZiBpcyBiZWluZyBzaG93bi4KLQl9IGVsc2VpZiB7JGN1cnJlbnRfZGlmZl9zaWRlIGVxIHt9Ci0JCXx8IFtjYXRjaCB7c2V0IHMgJGZpbGVfc3RhdGVzKCRwKX1dCi0JCXx8IFtsc2VhcmNoIC1zb3J0ZWQgLWV4YWN0ICRmaWxlX2xpc3RzKCRjdXJyZW50X2RpZmZfc2lkZSkgJHBdID09IC0xfSB7CisJfSBlbHNlaWYgeyRjdXJyZW50X2RpZmZfc2lkZSBlcSB7fX0gewogCQljbGVhcl9kaWZmCisJfSBlbHNlaWYge1tjYXRjaCB7c2V0IHMgJGZpbGVfc3RhdGVzKCRwKX1dCisJCXx8IFtsc2VhcmNoIC1zb3J0ZWQgLWV4YWN0ICRmaWxlX2xpc3RzKCRjdXJyZW50X2RpZmZfc2lkZSkgJHBdID09IC0xfSB7CisKKwkJaWYge1tmaW5kX25leHRfZGlmZiAkY3VycmVudF9kaWZmX3NpZGUgJHAge30ge1teT119XX0geworCQkJbmV4dF9kaWZmICRhZnRlcgorCQl9IGVsc2UgeworCQkJY2xlYXJfZGlmZgorCQl9CiAJfSBlbHNlIHsKIAkJc2V0IHNhdmVfcG9zIFtsaW5kZXggWyR1aV9kaWZmIHl2aWV3XSAwXQotCQlzaG93X2RpZmYgJHAgJGN1cnJlbnRfZGlmZl9zaWRlIHt9ICRzYXZlX3BvcworCQlzaG93X2RpZmYgJHAgJGN1cnJlbnRfZGlmZl9zaWRlIHt9ICRzYXZlX3BvcyAkYWZ0ZXIKKwl9Cit9CisKK3Byb2MgZm9yY2VfZGlmZl9lbmNvZGluZyB7ZW5jfSB7CisJZ2xvYmFsIGN1cnJlbnRfZGlmZl9wYXRoCisJCisJaWYgeyRjdXJyZW50X2RpZmZfcGF0aCBuZSB7fX0geworCQlmb3JjZV9wYXRoX2VuY29kaW5nICRjdXJyZW50X2RpZmZfcGF0aCAkZW5jCisJCXJlc2hvd19kaWZmCiAJfQogfQogCkBAIC01NCwxMSArNjksMTIgQEAKIAlyZXNjYW4gdWlfcmVhZHkgMAogfQogCi1wcm9jIHNob3dfZGlmZiB7cGF0aCB3IHtsbm8ge319IHtzY3JvbGxfcG9zIHt9fX0geworcHJvYyBzaG93X2RpZmYge3BhdGggdyB7bG5vIHt9fSB7c2Nyb2xsX3BvcyB7fX0ge2NhbGxiYWNrIHt9fX0gewogCWdsb2JhbCBmaWxlX3N0YXRlcyBmaWxlX2xpc3RzCi0JZ2xvYmFsIGlzXzN3YXlfZGlmZiBkaWZmX2FjdGl2ZSByZXBvX2NvbmZpZworCWdsb2JhbCBpc18zd2F5X2RpZmYgaXNfY29uZmxpY3RfZGlmZiBkaWZmX2FjdGl2ZSByZXBvX2NvbmZpZwogCWdsb2JhbCB1aV9kaWZmIHVpX2luZGV4IHVpX3dvcmtkaXIKIAlnbG9iYWwgY3VycmVudF9kaWZmX3BhdGggY3VycmVudF9kaWZmX3NpZGUgY3VycmVudF9kaWZmX2hlYWRlcgorCWdsb2JhbCBjdXJyZW50X2RpZmZfcXVldWUKIAogCWlmIHskZGlmZl9hY3RpdmUgfHwgIVtsb2NrX2luZGV4IHJlYWRdfSByZXR1cm4KIApAQCAtNzEsMjEgKzg3LDg0IEBACiAJfQogCWlmIHskbG5vID49IDF9IHsKIAkJJHcgdGFnIGFkZCBpbl9kaWZmICRsbm8uMCBbZXhwciB7JGxubyArIDF9XS4wCisJCSR3IHNlZSAkbG5vLjAKIAl9CiAKIAlzZXQgcyAkZmlsZV9zdGF0ZXMoJHBhdGgpCiAJc2V0IG0gW2xpbmRleCAkcyAwXQotCXNldCBpc18zd2F5X2RpZmYgMAotCXNldCBkaWZmX2FjdGl2ZSAxCisJc2V0IGlzX2NvbmZsaWN0X2RpZmYgMAogCXNldCBjdXJyZW50X2RpZmZfcGF0aCAkcGF0aAogCXNldCBjdXJyZW50X2RpZmZfc2lkZSAkdwotCXNldCBjdXJyZW50X2RpZmZfaGVhZGVyIHt9CisJc2V0IGN1cnJlbnRfZGlmZl9xdWV1ZSB7fQogCXVpX3N0YXR1cyBbbWMgIkxvYWRpbmcgZGlmZiBvZiAlcy4uLiIgW2VzY2FwZV9wYXRoICRwYXRoXV0KIAorCXNldCBjb250X2luZm8gW2xpc3QgJHNjcm9sbF9wb3MgJGNhbGxiYWNrXQorCisJaWYge1tzdHJpbmcgZmlyc3Qge1V9ICRtXSA+PSAwfSB7CisJCW1lcmdlX2xvYWRfc3RhZ2VzICRwYXRoIFtsaXN0IHNob3dfdW5tZXJnZWRfZGlmZiAkY29udF9pbmZvXQorCX0gZWxzZWlmIHskbSBlcSB7X099fSB7CisJCXNob3dfb3RoZXJfZGlmZiAkcGF0aCAkdyAkbSAkY29udF9pbmZvCisJfSBlbHNlIHsKKwkJc3RhcnRfc2hvd19kaWZmICRjb250X2luZm8KKwl9Cit9CisKK3Byb2Mgc2hvd191bm1lcmdlZF9kaWZmIHtjb250X2luZm99IHsKKwlnbG9iYWwgY3VycmVudF9kaWZmX3BhdGggY3VycmVudF9kaWZmX3NpZGUKKwlnbG9iYWwgbWVyZ2Vfc3RhZ2VzIHVpX2RpZmYgaXNfY29uZmxpY3RfZGlmZgorCWdsb2JhbCBjdXJyZW50X2RpZmZfcXVldWUKKworCWlmIHskbWVyZ2Vfc3RhZ2VzKDIpIGVxIHt9fSB7CisJCXNldCBpc19jb25mbGljdF9kaWZmIDEKKwkJbGFwcGVuZCBjdXJyZW50X2RpZmZfcXVldWUgXAorCQkJW2xpc3QgW21jICJMT0NBTDogZGVsZXRlZFxuUkVNT1RFOlxuIl0gZD09PT09PT0gXAorCQkJICAgIFtsaXN0ICI6MTokY3VycmVudF9kaWZmX3BhdGgiICI6MzokY3VycmVudF9kaWZmX3BhdGgiXV0KKwl9IGVsc2VpZiB7JG1lcmdlX3N0YWdlcygzKSBlcSB7fX0geworCQlzZXQgaXNfY29uZmxpY3RfZGlmZiAxCisJCWxhcHBlbmQgY3VycmVudF9kaWZmX3F1ZXVlIFwKKwkJCVtsaXN0IFttYyAiUkVNT1RFOiBkZWxldGVkXG5MT0NBTDpcbiJdIGQ9PT09PT09IFwKKwkJCSAgICBbbGlzdCAiOjE6JGN1cnJlbnRfZGlmZl9wYXRoIiAiOjI6JGN1cnJlbnRfZGlmZl9wYXRoIl1dCisJfSBlbHNlaWYge1tsaW5kZXggJG1lcmdlX3N0YWdlcygxKSAwXSBlcSB7MTIwMDAwfQorCQl8fCBbbGluZGV4ICRtZXJnZV9zdGFnZXMoMikgMF0gZXEgezEyMDAwMH0KKwkJfHwgW2xpbmRleCAkbWVyZ2Vfc3RhZ2VzKDMpIDBdIGVxIHsxMjAwMDB9fSB7CisJCXNldCBpc19jb25mbGljdF9kaWZmIDEKKwkJbGFwcGVuZCBjdXJyZW50X2RpZmZfcXVldWUgXAorCQkJW2xpc3QgW21jICJMT0NBTDpcbiJdIGQ9PT09PT09IFwKKwkJCSAgICBbbGlzdCAiOjE6JGN1cnJlbnRfZGlmZl9wYXRoIiAiOjI6JGN1cnJlbnRfZGlmZl9wYXRoIl1dCisJCWxhcHBlbmQgY3VycmVudF9kaWZmX3F1ZXVlIFwKKwkJCVtsaXN0IFttYyAiUkVNT1RFOlxuIl0gZD09PT09PT0gXAorCQkJICAgIFtsaXN0ICI6MTokY3VycmVudF9kaWZmX3BhdGgiICI6MzokY3VycmVudF9kaWZmX3BhdGgiXV0KKwl9IGVsc2UgeworCQlzdGFydF9zaG93X2RpZmYgJGNvbnRfaW5mbworCQlyZXR1cm4KKwl9CisKKwlhZHZhbmNlX2RpZmZfcXVldWUgJGNvbnRfaW5mbworfQorCitwcm9jIGFkdmFuY2VfZGlmZl9xdWV1ZSB7Y29udF9pbmZvfSB7CisJZ2xvYmFsIGN1cnJlbnRfZGlmZl9xdWV1ZSB1aV9kaWZmCisKKwlzZXQgaXRlbSBbbGluZGV4ICRjdXJyZW50X2RpZmZfcXVldWUgMF0KKwlzZXQgY3VycmVudF9kaWZmX3F1ZXVlIFtscmFuZ2UgJGN1cnJlbnRfZGlmZl9xdWV1ZSAxIGVuZF0KKworCSR1aV9kaWZmIGNvbmYgLXN0YXRlIG5vcm1hbAorCSR1aV9kaWZmIGluc2VydCBlbmQgW2xpbmRleCAkaXRlbSAwXSBbbGluZGV4ICRpdGVtIDFdCisJJHVpX2RpZmYgY29uZiAtc3RhdGUgZGlzYWJsZWQKKworCXN0YXJ0X3Nob3dfZGlmZiAkY29udF9pbmZvIFtsaW5kZXggJGl0ZW0gMl0KK30KKworcHJvYyBzaG93X290aGVyX2RpZmYge3BhdGggdyBtIGNvbnRfaW5mb30geworCWdsb2JhbCBmaWxlX3N0YXRlcyBmaWxlX2xpc3RzCisJZ2xvYmFsIGlzXzN3YXlfZGlmZiBkaWZmX2FjdGl2ZSByZXBvX2NvbmZpZworCWdsb2JhbCB1aV9kaWZmIHVpX2luZGV4IHVpX3dvcmtkaXIKKwlnbG9iYWwgY3VycmVudF9kaWZmX3BhdGggY3VycmVudF9kaWZmX3NpZGUgY3VycmVudF9kaWZmX2hlYWRlcgorCiAJIyAtIEdpdCB3b24ndCBnaXZlIHVzIHRoZSBkaWZmLCB0aGVyZSdzIG5vdGhpbmcgdG8gY29tcGFyZSB0byEKIAkjCiAJaWYgeyRtIGVxIHtfT319IHsKLQkJc2V0IG1heF9zeiBbZXhwciB7MTI4ICogMTAyNH1dCisJCXNldCBtYXhfc3ogMTAwMDAwCiAJCXNldCB0eXBlIHVua25vd24KIAkJaWYge1tjYXRjaCB7CiAJCQkJc2V0IHR5cGUgW2ZpbGUgdHlwZSAkcGF0aF0KQEAgLTEwMSw3ICsxODAsOSBAQAogCQkJCX0KIAkJCQlmaWxlIHsKIAkJCQkJc2V0IGZkIFtvcGVuICRwYXRoIHJdCi0JCQkJCWZjb25maWd1cmUgJGZkIC1lb2ZjaGFyIHt9CisJCQkJCWZjb25maWd1cmUgJGZkIFwKKwkJCQkJCS1lb2ZjaGFyIHt9IFwKKwkJCQkJCS1lbmNvZGluZyBbZ2V0X3BhdGhfZW5jb2RpbmcgJHBhdGhdCiAJCQkJCXNldCBjb250ZW50IFtyZWFkICRmZCAkbWF4X3N6XQogCQkJCQljbG9zZSAkZmQKIAkJCQkJc2V0IHN6IFtmaWxlIHNpemUgJHBhdGhdCkBAIC0xMzcsMzYgKzIxOCw1NyBAQAogCQkJCWRfQAogCQl9IGVsc2UgewogCQkJaWYgeyRzeiA+ICRtYXhfc3p9IHsKLQkJCQkkdWlfZGlmZiBpbnNlcnQgZW5kIFwKLSIqIFVudHJhY2tlZCBmaWxlIGlzICRzeiBieXRlcy4KLSogU2hvd2luZyBvbmx5IGZpcnN0ICRtYXhfc3ogYnl0ZXMuCi0iIGRfQAorCQkJCSR1aV9kaWZmIGluc2VydCBlbmQgW21jIFwKKyIqIFVudHJhY2tlZCBmaWxlIGlzICVkIGJ5dGVzLgorKiBTaG93aW5nIG9ubHkgZmlyc3QgJWQgYnl0ZXMuCisiICRzeiAkbWF4X3N6XSBkX0AKIAkJCX0KIAkJCSR1aV9kaWZmIGluc2VydCBlbmQgJGNvbnRlbnQKIAkJCWlmIHskc3ogPiAkbWF4X3N6fSB7Ci0JCQkJJHVpX2RpZmYgaW5zZXJ0IGVuZCAiCi0qIFVudHJhY2tlZCBmaWxlIGNsaXBwZWQgaGVyZSBieSBbYXBwbmFtZV0uCisJCQkJJHVpX2RpZmYgaW5zZXJ0IGVuZCBbbWMgIgorKiBVbnRyYWNrZWQgZmlsZSBjbGlwcGVkIGhlcmUgYnkgJXMuCiAqIFRvIHNlZSB0aGUgZW50aXJlIGZpbGUsIHVzZSBhbiBleHRlcm5hbCBlZGl0b3IuCi0iIGRfQAorIiBbYXBwbmFtZV1dIGRfQAogCQkJfQogCQl9CiAJCSR1aV9kaWZmIGNvbmYgLXN0YXRlIGRpc2FibGVkCiAJCXNldCBkaWZmX2FjdGl2ZSAwCiAJCXVubG9ja19pbmRleAorCQlzZXQgc2Nyb2xsX3BvcyBbbGluZGV4ICRjb250X2luZm8gMF0KIAkJaWYgeyRzY3JvbGxfcG9zIG5lIHt9fSB7CiAJCQl1cGRhdGUKIAkJCSR1aV9kaWZmIHl2aWV3IG1vdmV0byAkc2Nyb2xsX3BvcwogCQl9CiAJCXVpX3JlYWR5CisJCXNldCBjYWxsYmFjayBbbGluZGV4ICRjb250X2luZm8gMV0KKwkJaWYgeyRjYWxsYmFjayBuZSB7fX0geworCQkJZXZhbCAkY2FsbGJhY2sKKwkJfQogCQlyZXR1cm4KIAl9Cit9CisKK3Byb2Mgc3RhcnRfc2hvd19kaWZmIHtjb250X2luZm8ge2FkZF9vcHRzIHt9fX0geworCWdsb2JhbCBmaWxlX3N0YXRlcyBmaWxlX2xpc3RzCisJZ2xvYmFsIGlzXzN3YXlfZGlmZiBkaWZmX2FjdGl2ZSByZXBvX2NvbmZpZworCWdsb2JhbCB1aV9kaWZmIHVpX2luZGV4IHVpX3dvcmtkaXIKKwlnbG9iYWwgY3VycmVudF9kaWZmX3BhdGggY3VycmVudF9kaWZmX3NpZGUgY3VycmVudF9kaWZmX2hlYWRlcgorCisJc2V0IHBhdGggJGN1cnJlbnRfZGlmZl9wYXRoCisJc2V0IHcgJGN1cnJlbnRfZGlmZl9zaWRlCisKKwlzZXQgcyAkZmlsZV9zdGF0ZXMoJHBhdGgpCisJc2V0IG0gW2xpbmRleCAkcyAwXQorCXNldCBpc18zd2F5X2RpZmYgMAorCXNldCBkaWZmX2FjdGl2ZSAxCisJc2V0IGN1cnJlbnRfZGlmZl9oZWFkZXIge30KIAogCXNldCBjbWQgW2xpc3RdCiAJaWYgeyR3IGVxICR1aV9pbmRleH0gewogCQlsYXBwZW5kIGNtZCBkaWZmLWluZGV4CiAJCWxhcHBlbmQgY21kIC0tY2FjaGVkCiAJfSBlbHNlaWYgeyR3IGVxICR1aV93b3JrZGlyfSB7Ci0JCWlmIHtbc3RyaW5nIGluZGV4ICRtIDBdIGVxIHtVfX0geworCQlpZiB7W3N0cmluZyBmaXJzdCB7VX0gJG1dID49IDB9IHsKIAkJCWxhcHBlbmQgY21kIGRpZmYKIAkJfSBlbHNlIHsKIAkJCWxhcHBlbmQgY21kIGRpZmYtZmlsZXMKQEAgLTE4MSw4ICsyODMsMTIgQEAKIAlpZiB7JHcgZXEgJHVpX2luZGV4fSB7CiAJCWxhcHBlbmQgY21kIFtQQVJFTlRdCiAJfQotCWxhcHBlbmQgY21kIC0tCi0JbGFwcGVuZCBjbWQgJHBhdGgKKwlpZiB7JGFkZF9vcHRzIG5lIHt9fSB7CisJCWV2YWwgbGFwcGVuZCBjbWQgJGFkZF9vcHRzCisJfSBlbHNlIHsKKwkJbGFwcGVuZCBjbWQgLS0KKwkJbGFwcGVuZCBjbWQgJHBhdGgKKwl9CiAKIAlpZiB7W2NhdGNoIHtzZXQgZmQgW2V2YWwgZ2l0X3JlYWQgLS1uaWNlICRjbWRdfSBlcnJdfSB7CiAJCXNldCBkaWZmX2FjdGl2ZSAwCkBAIC0xOTUsMTQgKzMwMSwxNSBAQAogCXNldCA6OmN1cnJlbnRfZGlmZl9pbmhlYWRlciAxCiAJZmNvbmZpZ3VyZSAkZmQgXAogCQktYmxvY2tpbmcgMCBcCi0JCS1lbmNvZGluZyBiaW5hcnkgXAotCQktdHJhbnNsYXRpb24gYmluYXJ5Ci0JZmlsZWV2ZW50ICRmZCByZWFkYWJsZSBbbGlzdCByZWFkX2RpZmYgJGZkICRzY3JvbGxfcG9zXQorCQktZW5jb2RpbmcgW2dldF9wYXRoX2VuY29kaW5nICRwYXRoXSBcCisJCS10cmFuc2xhdGlvbiBsZgorCWZpbGVldmVudCAkZmQgcmVhZGFibGUgW2xpc3QgcmVhZF9kaWZmICRmZCAkY29udF9pbmZvXQogfQogCi1wcm9jIHJlYWRfZGlmZiB7ZmQgc2Nyb2xsX3Bvc30geworcHJvYyByZWFkX2RpZmYge2ZkIGNvbnRfaW5mb30gewogCWdsb2JhbCB1aV9kaWZmIGRpZmZfYWN0aXZlCi0JZ2xvYmFsIGlzXzN3YXlfZGlmZiBjdXJyZW50X2RpZmZfaGVhZGVyCisJZ2xvYmFsIGlzXzN3YXlfZGlmZiBpc19jb25mbGljdF9kaWZmIGN1cnJlbnRfZGlmZl9oZWFkZXIKKwlnbG9iYWwgY3VycmVudF9kaWZmX3F1ZXVlCiAKIAkkdWlfZGlmZiBjb25mIC1zdGF0ZSBub3JtYWwKIAl3aGlsZSB7W2dldHMgJGZkIGxpbmVdID49IDB9IHsKQEAgLTI0OSw2ICszNTYsNyBAQAogCQkJey0tfSB7c2V0IHRhZ3MgZF8tLX0KIAkJCXsrK30gewogCQkJCWlmIHtbcmVnZXhwIHteXCtcKyhbPD5dezd9IHw9ezd9KX0gJGxpbmUgX2cgb3BdfSB7CisJCQkJCXNldCBpc19jb25mbGljdF9kaWZmIDEKIAkJCQkJc2V0IGxpbmUgW3N0cmluZyByZXBsYWNlICRsaW5lIDAgMSB7ICB9XQogCQkJCQlzZXQgdGFncyBkJG9wCiAJCQkJfSBlbHNlIHsKQEAgLTI2OCw3ICszNzYsNyBAQAogCQkJey19IHtzZXQgdGFncyBkXy19CiAJCQl7K30gewogCQkJCWlmIHtbcmVnZXhwIHteXCsoWzw+XXs3fSB8PXs3fSl9ICRsaW5lIF9nIG9wXX0gewotCQkJCQlzZXQgbGluZSBbc3RyaW5nIHJlcGxhY2UgJGxpbmUgMCAwIHsgfV0KKwkJCQkJc2V0IGlzX2NvbmZsaWN0X2RpZmYgMQogCQkJCQlzZXQgdGFncyBkJG9wCiAJCQkJfSBlbHNlIHsKIAkJCQkJc2V0IHRhZ3MgZF8rCkBAIC0yOTAsOCArMzk4LDE1IEBACiAKIAlpZiB7W2VvZiAkZmRdfSB7CiAJCWNsb3NlICRmZAorCisJCWlmIHskY3VycmVudF9kaWZmX3F1ZXVlIG5lIHt9fSB7CisJCQlhZHZhbmNlX2RpZmZfcXVldWUgJGNvbnRfaW5mbworCQkJcmV0dXJuCisJCX0KKwogCQlzZXQgZGlmZl9hY3RpdmUgMAogCQl1bmxvY2tfaW5kZXgKKwkJc2V0IHNjcm9sbF9wb3MgW2xpbmRleCAkY29udF9pbmZvIDBdCiAJCWlmIHskc2Nyb2xsX3BvcyBuZSB7fX0gewogCQkJdXBkYXRlCiAJCQkkdWlfZGlmZiB5dmlldyBtb3ZldG8gJHNjcm9sbF9wb3MKQEAgLTMwMSw2ICs0MTYsMTAgQEAKIAkJaWYge1skdWlfZGlmZiBpbmRleCBlbmRdIGVxIHsyLjB9fSB7CiAJCQloYW5kbGVfZW1wdHlfZGlmZgogCQl9CisJCXNldCBjYWxsYmFjayBbbGluZGV4ICRjb250X2luZm8gMV0KKwkJaWYgeyRjYWxsYmFjayBuZSB7fX0geworCQkJZXZhbCAkY2FsbGJhY2sKKwkJfQogCX0KIH0KIApAQCAtMzQxLDggKzQ2MCw5IEBACiAJfQogCiAJaWYge1tjYXRjaCB7CisJCXNldCBlbmMgW2dldF9wYXRoX2VuY29kaW5nICRjdXJyZW50X2RpZmZfcGF0aF0KIAkJc2V0IHAgW2V2YWwgZ2l0X3dyaXRlICRhcHBseV9jbWRdCi0JCWZjb25maWd1cmUgJHAgLXRyYW5zbGF0aW9uIGJpbmFyeSAtZW5jb2RpbmcgYmluYXJ5CisJCWZjb25maWd1cmUgJHAgLXRyYW5zbGF0aW9uIGJpbmFyeSAtZW5jb2RpbmcgJGVuYwogCQlwdXRzIC1ub25ld2xpbmUgJHAgJGN1cnJlbnRfZGlmZl9oZWFkZXIKIAkJcHV0cyAtbm9uZXdsaW5lICRwIFskdWlfZGlmZiBnZXQgJHNfbG5vICRlX2xub10KIAkJY2xvc2UgJHB9IGVycl19IHsKQEAgLTM3MCwxMCArNDkwLDkgQEAKIAl9CiAJdW5sb2NrX2luZGV4CiAJZGlzcGxheV9maWxlICRjdXJyZW50X2RpZmZfcGF0aCAkbWkKKwkjIFRoaXMgc2hvdWxkIHRyaWdnZXIgc2hpZnQgdG8gdGhlIG5leHQgY2hhbmdlZCBmaWxlCiAJaWYgeyRvIGVxIHtffX0gewotCQljbGVhcl9kaWZmCi0JfSBlbHNlIHsKLQkJc2V0IGN1cnJlbnRfZGlmZl9wYXRoICRjdXJyZW50X2RpZmZfcGF0aAorCQlyZXNob3dfZGlmZgogCX0KIH0KIApAQCAtNTExLDggKzYzMCw5IEBACiAJc2V0IHBhdGNoICJAQCAtJGhsbiwkbiArJGhsbixbZXZhbCBleHByICRuICRzaWduIDFdIEBAXG4kcGF0Y2giCiAKIAlpZiB7W2NhdGNoIHsKKwkJc2V0IGVuYyBbZ2V0X3BhdGhfZW5jb2RpbmcgJGN1cnJlbnRfZGlmZl9wYXRoXQogCQlzZXQgcCBbZXZhbCBnaXRfd3JpdGUgJGFwcGx5X2NtZF0KLQkJZmNvbmZpZ3VyZSAkcCAtdHJhbnNsYXRpb24gYmluYXJ5IC1lbmNvZGluZyBiaW5hcnkKKwkJZmNvbmZpZ3VyZSAkcCAtdHJhbnNsYXRpb24gYmluYXJ5IC1lbmNvZGluZyAkZW5jCiAJCXB1dHMgLW5vbmV3bGluZSAkcCAkY3VycmVudF9kaWZmX2hlYWRlcgogCQlwdXRzIC1ub25ld2xpbmUgJHAgJHBhdGNoCiAJCWNsb3NlICRwfSBlcnJdfSB7CmRpZmYgLS1naXQgYS9naXQtZ3VpL2xpYi9lbmNvZGluZy50Y2wgYi9naXQtZ3VpL2xpYi9lbmNvZGluZy50Y2wKaW5kZXggN2YwNmIwZC4uMzI2NjhmYyAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9saWIvZW5jb2RpbmcudGNsCisrKyBiL2dpdC1ndWkvbGliL2VuY29kaW5nLnRjbApAQCAtMjA2LDcgKzIwNiw3IEBACiAgICAgeyBJU08tODg1OS0xNiBpc28taXItMjI2IElTT184ODU5LTE2OjIwMDEgSVNPXzg4NTktMTYgbGF0aW4xMCBsMTAgfQogICAgIHsgR0JLIENQOTM2IE1TOTM2IHdpbmRvd3MtOTM2IH0KICAgICB7IEpJU19FbmNvZGluZyBjc0pJU0VuY29kaW5nIH0KLSAgICB7IFNoaWZ0X0pJUyBNU19LYW5qaSBjc1NoaWZ0SklTIH0KKyAgICB7IFNoaWZ0X0pJUyBNU19LYW5qaSBjc1NoaWZ0SklTIFNoaWZ0SklTIFNoaWZ0LUpJUyB9CiAgICAgeyBFeHRlbmRlZF9VTklYX0NvZGVfUGFja2VkX0Zvcm1hdF9mb3JfSmFwYW5lc2UgY3NFVUNQa2RGbXRKYXBhbmVzZQogICAgICAgRVVDLUpQIH0KICAgICB7IEV4dGVuZGVkX1VOSVhfQ29kZV9GaXhlZF9XaWR0aF9mb3JfSmFwYW5lc2UgY3NFVUNGaXhXaWRKYXBhbmVzZSB9CkBAIC0yNDAsMzcgKzI0MCwyMjcgQEAKICAgICB7IEJpZzUgY3NCaWc1IH0KIH0KIAotcHJvYyB0Y2xfZW5jb2Rpbmcge2VuY30gewotICAgIGdsb2JhbCBlbmNvZGluZ19hbGlhc2VzCi0gICAgc2V0IG5hbWVzIFtlbmNvZGluZyBuYW1lc10KLSAgICBzZXQgbGNuYW1lcyBbc3RyaW5nIHRvbG93ZXIgJG5hbWVzXQotICAgIHNldCBlbmMgW3N0cmluZyB0b2xvd2VyICRlbmNdCi0gICAgc2V0IGkgW2xzZWFyY2ggLWV4YWN0ICRsY25hbWVzICRlbmNdCi0gICAgaWYgeyRpIDwgMH0gewotCSMgbG9vayBmb3IgImlzb25ubiIgaW5zdGVhZCBvZiAiaXNvLW5ubiIgb3IgImlzb19ubm4iCi0JaWYge1tyZWdzdWIge15pc29bLV9dfSAkZW5jIGlzbyBlbmN4XX0gewotCSAgICBzZXQgaSBbbHNlYXJjaCAtZXhhY3QgJGxjbmFtZXMgJGVuY3hdCitzZXQgZW5jb2RpbmdfZ3JvdXBzIHsKKyAgICB7IiIgIiIKKwl7IlVuaWNvZGUiIFVURi04fQorCXsiV2VzdGVybiIgSVNPLTg4NTktMX19CisgICAge3dlICJXZXN0IEV1cm9wZWFuIgorCXsiV2VzdGVybiIgSVNPLTg4NTktMTUgQ1AtNDM3IENQLTg1MCBNYWNSb21hbiBDUC0xMjUyIFdpbmRvd3MtMTI1Mn0KKwl7IkNlbHRpYyIgSVNPLTg4NTktMTR9CisJeyJHcmVlayIgSVNPLTg4NTktMTQgSVNPLTg4NTktNyBDUC03MzcgQ1AtODY5IE1hY0dyZWVrIENQLTEyNTMgV2luZG93cy0xMjUzfQorCXsiSWNlbGFuZGljIiBNYWNJY2VsYW5kIE1hY0ljZWxhbmRpYyBDUC04NjF9CisJeyJOb3JkaWMiIElTTy04ODU5LTEwIENQLTg2NX0KKwl7IlBvcnR1Z3Vlc2UiIENQLTg2MH0KKwl7IlNvdXRoIEV1cm9wZWFuIiBJU08tODg1OS0zfX0KKyAgICB7ZWUgIkVhc3QgRXVyb3BlYW4iCisJeyJCYWx0aWMiIENQLTc3NSBJU08tODg1OS00IElTTy04ODU5LTEzIENQLTEyNTcgV2luZG93cy0xMjU3fQorCXsiQ2VudHJhbCBFdXJvcGVhbiIgQ1AtODUyIElTTy04ODU5LTIgTWFjQ0UgQ1AtMTI1MCBXaW5kb3dzLTEyNTB9CisJeyJDcm9hdGlhbiIgTWFjQ3JvYXRpYW59CisJeyJDeXJpbGxpYyIgQ1AtODU1IElTTy04ODU5LTUgSVNPLUlSLTExMSBLT0k4LVIgTWFjQ3lyaWxsaWMgQ1AtMTI1MSBXaW5kb3dzLTEyNTF9CisJeyJSdXNzaWFuIiBDUC04NjZ9CisJeyJVa3JhaW5pYW4iIEtPSTgtVSBNYWNVa3JhaW5lIE1hY1VrcmFpbmlhbn0KKwl7IlJvbWFuaWFuIiBJU08tODg1OS0xNiBNYWNSb21hbmlhIE1hY1JvbWFuaWFufX0KKyAgICB7ZWEgIkVhc3QgQXNpYW4iCisJeyJHZW5lcmljIiBJU08tMjAyMn0KKwl7IkNoaW5lc2UgU2ltcGxpZmllZCIgR0IyMzEyIEdCMTk4OCBHQjEyMzQ1IEdCMjMxMi1SQVcgR0JLIEVVQy1DTiBHQjE4MDMwIEhaIElTTy0yMDIyLUNOfQorCXsiQ2hpbmVzZSBUcmFkaXRpb25hbCIgQmlnNSBCaWc1LUhLU0NTIEVVQy1UVyBDUC05NTB9CisJeyJKYXBhbmVzZSIgRVVDLUpQIElTTy0yMDIyLUpQIFNoaWZ0LUpJUyBKSVMtMDIxMiBKSVMtMDIwOCBKSVMtMDIwMSBDUC05MzIgTWFjSmFwYW59CisJeyJLb3JlYW4iIEVVQy1LUiBVSEMgSk9IQUIgSVNPLTIwMjItS1IgQ1AtOTQ5IEtTQzU2MDF9fQorICAgIHtzYSAiU0UgJiBTVyBBc2lhbiIKKwl7IkFybWVuaWFuIiBBUk1TQ0lJLTh9CisJeyJHZW9yZ2lhbiIgR0VPU1REOH0KKwl7IlRoYWkiIFRJUy02MjAgSVNPLTg4NTktMTEgQ1AtODc0IFdpbmRvd3MtODc0IE1hY1RoYWl9CisJeyJUdXJraXNoIiBDUC04NTcgQ1A4NTcgSVNPLTg4NTktOSBNYWNUdXJraXNoIENQLTEyNTQgV2luZG93cy0xMjU0fQorCXsiVmlldG5hbWVzZSIgVENWTiBWSVNDSUkgVlBTIENQLTEyNTggV2luZG93cy0xMjU4fQorCXsiSGluZGkiIE1hY0RldmFuYWdhcml9CisJeyJHdWphcmF0aSIgTWFjR3VqYXJhdGl9CisJeyJHdXJtdWtoaSIgTWFjR3VybXVraGl9fQorICAgIHttZSAiTWlkZGxlIEVhc3Rlcm4iCisJeyJBcmFiaWMiIElTTy04ODU5LTYgV2luZG93cy0xMjU2IENQLTEyNTYgQ1AtODY0IE1hY0FyYWJpY30KKwl7IkZhcnNpIiBNYWNGYXJzaX0KKwl7IkhlYnJldyIgSVNPLTg4NTktOC1JIFdpbmRvd3MtMTI1NSBDUC0xMjU1IElTTy04ODU5LTggQ1AtODYyIE1hY0hlYnJld319CisgICAge21pICJNaXNjIgorCXsiNy1iaXQiIEFTQ0lJfQorCXsiMTYtYml0IiBVbmljb2RlfQorCXsiTGVnYWN5IiBDUC04NjMgRUJDRElDfQorCXsiU3ltYm9sIiBTeW1ib2wgRGluZ2JhdHMgTWFjRGluZ2JhdHMgTWFjQ2VudEV1cm99fQorfQorCitwcm9jIGJ1aWxkX2VuY29kaW5nX3RhYmxlIHt9IHsKKwlnbG9iYWwgZW5jb2RpbmdfYWxpYXNlcyBlbmNvZGluZ19sb29rdXBfdGFibGUKKworCSMgUHJlcGFyZSB0aGUgbG9va3VwIGxpc3Q7IGNhbm5vdCB1c2UgbHNvcnQgLW5vY2FzZSBiZWNhdXNlCisJIyBvZiBjb21wYXRpYmlsaXR5IGlzc3VlcyB3aXRoIG9sZGVyIFRjbCAoZS5nLiBpbiBtc3lzZ2l0KQorCXNldCBuYW1lcyBbbGlzdF0KKwlmb3JlYWNoIGl0ZW0gW2VuY29kaW5nIG5hbWVzXSB7CisJCWxhcHBlbmQgbmFtZXMgW2xpc3QgW3N0cmluZyB0b2xvd2VyICRpdGVtXSAkaXRlbV0KIAl9Ci0gICAgfQotICAgIGlmIHskaSA8IDB9IHsKLQlmb3JlYWNoIGwgJGVuY29kaW5nX2FsaWFzZXMgewotCSAgICBzZXQgbGwgW3N0cmluZyB0b2xvd2VyICRsXQotCSAgICBpZiB7W2xzZWFyY2ggLWV4YWN0ICRsbCAkZW5jXSA8IDB9IGNvbnRpbnVlCi0JICAgICMgbG9vayB0aHJvdWdoIHRoZSBhbGlhc2VzIGZvciBvbmUgdGhhdCB0Y2wga25vd3MgYWJvdXQKLQkgICAgZm9yZWFjaCBlICRsbCB7Ci0JCXNldCBpIFtsc2VhcmNoIC1leGFjdCAkbGNuYW1lcyAkZV0KLQkJaWYgeyRpIDwgMH0gewotCQkgICAgaWYge1tyZWdzdWIge15pc29bLV9dfSAkZSBpc28gZXhdfSB7Ci0JCQlzZXQgaSBbbHNlYXJjaCAtZXhhY3QgJGxjbmFtZXMgJGV4XQotCQkgICAgfQorCXNldCBuYW1lcyBbbHNvcnQgLWFzY2lpIC1pbmRleCAwICRuYW1lc10KKwkjIG5laXRoZXIgY2FuIHdlIHVzZSBsc2VhcmNoIC1pbmRleAorCXNldCBsbmFtZXMgW2xpc3RdCisJZm9yZWFjaCBpdGVtICRuYW1lcyB7CisJCWxhcHBlbmQgbG5hbWVzIFtsaW5kZXggJGl0ZW0gMF0KKwl9CisKKwlmb3JlYWNoIGdycCAkZW5jb2RpbmdfYWxpYXNlcyB7CisJCXNldCB0YXJnZXQge30KKwkJZm9yZWFjaCBpdGVtICRncnAgeworCQkJc2V0IGkgW2xzZWFyY2ggLXNvcnRlZCAtYXNjaWkgJGxuYW1lcyBcCisJCQkJCVtzdHJpbmcgdG9sb3dlciAkaXRlbV1dCisJCQlpZiB7JGkgPj0gMH0geworCQkJCXNldCB0YXJnZXQgW2xpbmRleCAkbmFtZXMgJGkgMV0KKwkJCQlicmVhaworCQkJfQogCQl9Ci0JCWlmIHskaSA+PSAwfSBicmVhawotCSAgICB9Ci0JICAgIGJyZWFrCisJCWlmIHskdGFyZ2V0IGVxIHt9fSBjb250aW51ZQorCQlmb3JlYWNoIGl0ZW0gJGdycCB7CisJCQlzZXQgZW5jb2RpbmdfbG9va3VwX3RhYmxlKFtzdHJpbmcgdG9sb3dlciAkaXRlbV0pICR0YXJnZXQKKwkJfQogCX0KLSAgICB9Ci0gICAgaWYgeyRpID49IDB9IHsKLQlyZXR1cm4gW2xpbmRleCAkbmFtZXMgJGldCi0gICAgfQotICAgIHJldHVybiB7fQorCisJZm9yZWFjaCBpdGVtICRuYW1lcyB7CisJCXNldCBlbmNvZGluZ19sb29rdXBfdGFibGUoW2xpbmRleCAkaXRlbSAwXSkgW2xpbmRleCAkaXRlbSAxXQorCX0KK30KKworcHJvYyB0Y2xfZW5jb2Rpbmcge2VuY30geworCWdsb2JhbCBlbmNvZGluZ19sb29rdXBfdGFibGUKKwlpZiB7JGVuYyBlcSB7fX0geworCQlyZXR1cm4ge30KKwl9CisJaWYgeyFbaW5mbyBleGlzdHMgZW5jb2RpbmdfbG9va3VwX3RhYmxlXX0geworCQlidWlsZF9lbmNvZGluZ190YWJsZQorCX0KKwlzZXQgZW5jIFtzdHJpbmcgdG9sb3dlciAkZW5jXQorCWlmIHshW2luZm8gZXhpc3RzIGVuY29kaW5nX2xvb2t1cF90YWJsZSgkZW5jKV19IHsKKwkJIyBsb29rIGZvciAiaXNvbm5uIiBpbnN0ZWFkIG9mICJpc28tbm5uIiBvciAiaXNvX25ubiIKKwkJaWYge1tyZWdzdWIge14oaXNvfGNwfGlibXxqaXMpWy1fXX0gJGVuYyB7XDF9IGVuY3hdfSB7CisJCQlzZXQgZW5jICRlbmN4CisJCX0KKwl9CisJaWYge1tpbmZvIGV4aXN0cyBlbmNvZGluZ19sb29rdXBfdGFibGUoJGVuYyldfSB7CisJCXJldHVybiAkZW5jb2RpbmdfbG9va3VwX3RhYmxlKCRlbmMpCisJfSBlbHNlIHsKKwkJcmV0dXJuIHt9CisJfQorfQorCitwcm9jIGZvcmNlX3BhdGhfZW5jb2Rpbmcge3BhdGggZW5jfSB7CisJZ2xvYmFsIHBhdGhfZW5jb2Rpbmdfb3ZlcnJpZGVzIGxhc3RfZW5jb2Rpbmdfb3ZlcnJpZGUKKworCXNldCBlbmMgW3RjbF9lbmNvZGluZyAkZW5jXQorCWlmIHskZW5jIGVxIHt9fSB7CisJCWNhdGNoIHsgdW5zZXQgbGFzdF9lbmNvZGluZ19vdmVycmlkZSB9CisJCWNhdGNoIHsgdW5zZXQgcGF0aF9lbmNvZGluZ19vdmVycmlkZXMoJHBhdGgpIH0KKwl9IGVsc2UgeworCQlzZXQgbGFzdF9lbmNvZGluZ19vdmVycmlkZSAkZW5jCisJCWlmIHskcGF0aCBuZSB7fX0geworCQkJc2V0IHBhdGhfZW5jb2Rpbmdfb3ZlcnJpZGVzKCRwYXRoKSAkZW5jCisJCX0KKwl9Cit9CisKK3Byb2MgZ2V0X3BhdGhfZW5jb2Rpbmcge3BhdGh9IHsKKwlnbG9iYWwgcGF0aF9lbmNvZGluZ19vdmVycmlkZXMgbGFzdF9lbmNvZGluZ19vdmVycmlkZQorCisJaWYge1tpbmZvIGV4aXN0cyBsYXN0X2VuY29kaW5nX292ZXJyaWRlXX0geworCQlzZXQgdGNsX2VuYyAkbGFzdF9lbmNvZGluZ19vdmVycmlkZQorCX0gZWxzZSB7CisJCXNldCB0Y2xfZW5jIFt0Y2xfZW5jb2RpbmcgW2dldF9jb25maWcgZ3VpLmVuY29kaW5nXV0KKwl9CisJaWYgeyR0Y2xfZW5jIGVxIHt9fSB7CisJCXNldCB0Y2xfZW5jIFtlbmNvZGluZyBzeXN0ZW1dCisJfQorCWlmIHskcGF0aCBuZSB7fX0geworCQlpZiB7W2luZm8gZXhpc3RzIHBhdGhfZW5jb2Rpbmdfb3ZlcnJpZGVzKCRwYXRoKV19IHsKKwkJCXNldCBlbmMyICRwYXRoX2VuY29kaW5nX292ZXJyaWRlcygkcGF0aCkKKwkJfSBlbHNlIHsKKwkJCXNldCBlbmMyIFt0Y2xfZW5jb2RpbmcgW2dpdGF0dHIgJHBhdGggZW5jb2RpbmcgJHRjbF9lbmNdXQorCQl9CisJCWlmIHskZW5jMiBuZSB7fX0geworCQkJc2V0IHRjbF9lbmMgJGVuYzIKKwkJfQorCX0KKwlyZXR1cm4gJHRjbF9lbmMKK30KKworcHJvYyBidWlsZF9lbmNvZGluZ19zdWJtZW51IHtwYXJlbnQgZ3JwIGNtZH0geworCWdsb2JhbCB1c2VkX2VuY29kaW5ncworCisJc2V0IG1pZCBbbGluZGV4ICRncnAgMF0KKwlzZXQgZ25hbWUgW21jIFtsaW5kZXggJGdycCAxXV0KKworCXNldCBzbWVudSB7fQorCWZvcmVhY2ggc3Vic2V0IFtscmFuZ2UgJGdycCAyIGVuZF0geworCQlzZXQgbmFtZSBbbWMgW2xpbmRleCAkc3Vic2V0IDBdXQorCisJCWZvcmVhY2ggZW5jIFtscmFuZ2UgJHN1YnNldCAxIGVuZF0geworCQkJc2V0IHRjbF9lbmMgW3RjbF9lbmNvZGluZyAkZW5jXQorCQkJaWYgeyR0Y2xfZW5jIGVxIHt9fSBjb250aW51ZQorCisJCQlpZiB7JHNtZW51IGVxIHt9fSB7CisJCQkJaWYgeyRtaWQgZXEge319IHsKKwkJCQkJc2V0IHNtZW51ICRwYXJlbnQKKwkJCQl9IGVsc2UgeworCQkJCQlzZXQgc21lbnUgIiRwYXJlbnQuJG1pZCIKKwkJCQkJbWVudSAkc21lbnUKKwkJCQkJJHBhcmVudCBhZGQgY2FzY2FkZSBcCisJCQkJCQktbGFiZWwgJGduYW1lIFwKKwkJCQkJCS1tZW51ICRzbWVudQorCQkJCX0KKwkJCX0KKworCQkJaWYgeyRuYW1lIG5lIHt9fSB7CisJCQkJc2V0IGxibCAiJG5hbWUgKCRlbmMpIgorCQkJfSBlbHNlIHsKKwkJCQlzZXQgbGJsICRlbmMKKwkJCX0KKwkJCSRzbWVudSBhZGQgY29tbWFuZCBcCisJCQkJLWxhYmVsICRsYmwgXAorCQkJCS1jb21tYW5kIFtjb25jYXQgJGNtZCBbbGlzdCAkdGNsX2VuY11dCisKKwkJCWxhcHBlbmQgdXNlZF9lbmNvZGluZ3MgJHRjbF9lbmMKKwkJfQorCX0KK30KKworcHJvYyBwb3B1cF9idG5fbWVudSB7bSBifSB7CisJdGtfcG9wdXAgJG0gW3dpbmZvIHBvaW50ZXJ4ICRiXSBbd2luZm8gcG9pbnRlcnkgJGJdCit9CisKK3Byb2MgYnVpbGRfZW5jb2RpbmdfbWVudSB7ZW1lbnUgY21kIHtub2RlZiAwfX0geworCSRlbWVudSBjb25maWd1cmUgLXBvc3Rjb21tYW5kIFwKKwkJW2xpc3QgZG9fYnVpbGRfZW5jb2RpbmdfbWVudSAkZW1lbnUgJGNtZCAkbm9kZWZdCit9CisKK3Byb2MgZG9fYnVpbGRfZW5jb2RpbmdfbWVudSB7ZW1lbnUgY21kIHtub2RlZiAwfX0geworCWdsb2JhbCB1c2VkX2VuY29kaW5ncyBlbmNvZGluZ19ncm91cHMKKworCSRlbWVudSBjb25maWd1cmUgLXBvc3Rjb21tYW5kIHt9CisKKwlpZiB7ISRub2RlZn0geworCQkkZW1lbnUgYWRkIGNvbW1hbmQgXAorCQkJLWxhYmVsIFttYyAiRGVmYXVsdCJdIFwKKwkJCS1jb21tYW5kIFtjb25jYXQgJGNtZCBbbGlzdCB7fV1dCisJfQorCXNldCBzeXNlbmMgW2VuY29kaW5nIHN5c3RlbV0KKwkkZW1lbnUgYWRkIGNvbW1hbmQgXAorCQktbGFiZWwgW21jICJTeXN0ZW0gKCVzKSIgJHN5c2VuY10gXAorCQktY29tbWFuZCBbY29uY2F0ICRjbWQgW2xpc3QgJHN5c2VuY11dCisKKwkjIE1haW4gZW5jb2RpbmcgdHJlZQorCXNldCB1c2VkX2VuY29kaW5ncyBbbGlzdCBpZGVudGl0eV0KKwkkZW1lbnUgYWRkIHNlcGFyYXRvcgorCWZvcmVhY2ggZ3JwICRlbmNvZGluZ19ncm91cHMgeworCQlidWlsZF9lbmNvZGluZ19zdWJtZW51ICRlbWVudSAkZ3JwICRjbWQKKwl9CisKKwkjIEFkZCB1bmNsYXNzaWZpZWQgZW5jb2RpbmdzCisJc2V0IHVudXNlZF9ncnAgW2xpc3QgW21jIE90aGVyXV0KKwlmb3JlYWNoIGVuYyBbZW5jb2RpbmcgbmFtZXNdIHsKKwkJaWYge1tsc2VhcmNoIC1leGFjdCAkdXNlZF9lbmNvZGluZ3MgJGVuY10gPCAwfSB7CisJCQlsYXBwZW5kIHVudXNlZF9ncnAgJGVuYworCQl9CisJfQorCWJ1aWxkX2VuY29kaW5nX3N1Ym1lbnUgJGVtZW51IFtsaXN0IG90aGVyIFttYyBPdGhlcl0gJHVudXNlZF9ncnBdICRjbWQKIH0KZGlmZiAtLWdpdCBhL2dpdC1ndWkvbGliL2luZGV4LnRjbCBiL2dpdC1ndWkvbGliL2luZGV4LnRjbAppbmRleCAzYzFmY2U3Li5kMzM4OTZhIDEwMDY0NAotLS0gYS9naXQtZ3VpL2xpYi9pbmRleC50Y2wKKysrIGIvZ2l0LWd1aS9saWIvaW5kZXgudGNsCkBAIC05OSw2ICs5OSw3IEBACiAJCXN3aXRjaCAtZ2xvYiAtLSBbbGluZGV4ICRzIDBdIHsKIAkJQT8ge3NldCBuZXcgX099CiAJCU0/IHtzZXQgbmV3IF9NfQorCQlUXyB7c2V0IG5ldyBfVH0KIAkJRF8ge3NldCBuZXcgX0R9CiAJCUQ/IHtzZXQgbmV3IF8/fQogCQk/PyB7Y29udGludWV9CkBAIC0xNjIsNiArMTYzLDggQEAKIAkJP0Qge3NldCBuZXcgRF99CiAJCV9PIC0KIAkJQU0ge3NldCBuZXcgQV99CisJCV9UIHtzZXQgbmV3IFRffQorCQlfVSAtCiAJCVU/IHsKIAkJCWlmIHtbZmlsZSBleGlzdHMgJHBhdGhdfSB7CiAJCQkJc2V0IG5ldyBNXwpAQCAtMjMxLDYgKzIzNCw3IEBACiAJCXN3aXRjaCAtZ2xvYiAtLSBbbGluZGV4ICRmaWxlX3N0YXRlcygkcGF0aCkgMF0gewogCQlVPyB7Y29udGludWV9CiAJCT9NIC0KKwkJP1QgLQogCQk/RCB7CiAJCQlwdXRzIC1ub25ld2xpbmUgJGZkICJbZW5jb2RpbmcgY29udmVydHRvICRwYXRoXVwwIgogCQkJZGlzcGxheV9maWxlICRwYXRoID9fCkBAIC0yNTIsNiArMjU2LDcgQEAKIAkJc3dpdGNoIC1nbG9iIC0tIFtsaW5kZXggJGZpbGVfc3RhdGVzKCRwYXRoKSAwXSB7CiAJCUE/IC0KIAkJTT8gLQorCQlUXyAtCiAJCUQ/IHsKIAkJCWxhcHBlbmQgcGF0aExpc3QgJHBhdGgKIAkJCWlmIHskcGF0aCBlcSAkY3VycmVudF9kaWZmX3BhdGh9IHsKQEAgLTI5MywxMCArMjk4LDE4IEBACiAJc2V0IGFmdGVyIHt9CiAJZm9yZWFjaCBwYXRoICRwYXRocyB7CiAJCXN3aXRjaCAtZ2xvYiAtLSBbbGluZGV4ICRmaWxlX3N0YXRlcygkcGF0aCkgMF0geworCQlfVSAtCisJCVU/IHsKKwkJCWlmIHskcGF0aCBlcSAkY3VycmVudF9kaWZmX3BhdGh9IHsKKwkJCQl1bmxvY2tfaW5kZXgKKwkJCQltZXJnZV9zdGFnZV93b3JrZGlyICRwYXRoCisJCQkJcmV0dXJuCisJCQl9CisJCX0KIAkJX08gLQogCQk/TSAtCiAJCT9EIC0KLQkJVT8geworCQk/VCB7CiAJCQlsYXBwZW5kIHBhdGhMaXN0ICRwYXRoCiAJCQlpZiB7JHBhdGggZXEgJGN1cnJlbnRfZGlmZl9wYXRofSB7CiAJCQkJc2V0IGFmdGVyIHtyZXNob3dfZGlmZjt9CkBAIC0zMzYsNiArMzQ5LDcgQEAKIAkJc3dpdGNoIC1nbG9iIC0tIFtsaW5kZXggJGZpbGVfc3RhdGVzKCRwYXRoKSAwXSB7CiAJCVU/IHtjb250aW51ZX0KIAkJP00gLQorCQk/VCAtCiAJCT9EIHtsYXBwZW5kIHBhdGhzICRwYXRofQogCQl9CiAJfQpAQCAtMzUzLDYgKzM2Nyw3IEBACiAJCXN3aXRjaCAtZ2xvYiAtLSBbbGluZGV4ICRmaWxlX3N0YXRlcygkcGF0aCkgMF0gewogCQlVPyB7Y29udGludWV9CiAJCT9NIC0KKwkJP1QgLQogCQk/RCB7CiAJCQlsYXBwZW5kIHBhdGhMaXN0ICRwYXRoCiAJCQlpZiB7JHBhdGggZXEgJGN1cnJlbnRfZGlmZl9wYXRofSB7CkBAIC00MDksMTEgKzQyNCwxMSBAQAogCiAJaWYge1thcnJheSBzaXplIHNlbGVjdGVkX3BhdGhzXSA+IDB9IHsKIAkJcmV2ZXJ0X2hlbHBlciBcCi0JCQl7UmV2ZXJ0aW5nIHNlbGVjdGVkIGZpbGVzfSBcCisJCQlbbWMgIlJldmVydGluZyBzZWxlY3RlZCBmaWxlcyJdIFwKIAkJCVthcnJheSBuYW1lcyBzZWxlY3RlZF9wYXRoc10KIAl9IGVsc2VpZiB7JGN1cnJlbnRfZGlmZl9wYXRoIG5lIHt9fSB7CiAJCXJldmVydF9oZWxwZXIgXAotCQkJIlJldmVydGluZyBbc2hvcnRfcGF0aCAkY3VycmVudF9kaWZmX3BhdGhdIiBcCisJCQlbbWMgIlJldmVydGluZyAlcyIgW3Nob3J0X3BhdGggJGN1cnJlbnRfZGlmZl9wYXRoXV0gXAogCQkJW2xpc3QgJGN1cnJlbnRfZGlmZl9wYXRoXQogCX0KIH0KZGlmZiAtLWdpdCBhL2dpdC1ndWkvbGliL21lcmdlLnRjbCBiL2dpdC1ndWkvbGliL21lcmdlLnRjbAppbmRleCA1YzAxODc1Li4yODNlNDkxIDEwMDY0NAotLS0gYS9naXQtZ3VpL2xpYi9tZXJnZS50Y2wKKysrIGIvZ2l0LWd1aS9saWIvbWVyZ2UudGNsCkBAIC00MCw2ICs0MCw3IEBACiAJCV9PIHsKIAkJCWNvbnRpbnVlOyAjIGFuZCBwcmF5IGl0IHdvcmtzIQogCQl9CisJCV9VIC0KIAkJVT8gewogCQkJZXJyb3JfcG9wdXAgW21jICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBjb25mbGljdGVkIG1lcmdlLgogCmRpZmYgLS1naXQgYS9naXQtZ3VpL2xpYi9tZXJnZXRvb2wudGNsIGIvZ2l0LWd1aS9saWIvbWVyZ2V0b29sLnRjbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjJiNGI1Ci0tLSAvZGV2L251bGwKKysrIGIvZ2l0LWd1aS9saWIvbWVyZ2V0b29sLnRjbApAQCAtMCwwICsxLDM5MyBAQAorIyBnaXQtZ3VpIG1lcmdlIGNvbmZsaWN0IHJlc29sdXRpb24KKyMgcGFydHMgYmFzZWQgb24gZ2l0LW1lcmdldG9vbCAoYykgMjAwNiBUaGVvZG9yZSBZLiBUcydvCisKK3Byb2MgbWVyZ2VfcmVzb2x2ZV9vbmUge3N0YWdlfSB7CisJZ2xvYmFsIGN1cnJlbnRfZGlmZl9wYXRoCisKKwlzd2l0Y2ggLS0gJHN0YWdlIHsKKwkJMSB7IHNldCB0YXJnZXRxdWVzdGlvbiBbbWMgIkZvcmNlIHJlc29sdXRpb24gdG8gdGhlIGJhc2UgdmVyc2lvbj8iXSB9CisJCTIgeyBzZXQgdGFyZ2V0cXVlc3Rpb24gW21jICJGb3JjZSByZXNvbHV0aW9uIHRvIHRoaXMgYnJhbmNoPyJdIH0KKwkJMyB7IHNldCB0YXJnZXRxdWVzdGlvbiBbbWMgIkZvcmNlIHJlc29sdXRpb24gdG8gdGhlIG90aGVyIGJyYW5jaD8iXSB9CisJfQorCisJc2V0IG9wX3F1ZXN0aW9uIFtzdHJjYXQgJHRhcmdldHF1ZXN0aW9uICJcbiIgXAorW21jICJOb3RlIHRoYXQgdGhlIGRpZmYgc2hvd3Mgb25seSBjb25mbGljdGluZyBjaGFuZ2VzLgorCislcyB3aWxsIGJlIG92ZXJ3cml0dGVuLgorCitUaGlzIG9wZXJhdGlvbiBjYW4gYmUgdW5kb25lIG9ubHkgYnkgcmVzdGFydGluZyB0aGUgbWVyZ2UuIiBcCisJCVtzaG9ydF9wYXRoICRjdXJyZW50X2RpZmZfcGF0aF1dXQorCisJaWYge1thc2tfcG9wdXAgJG9wX3F1ZXN0aW9uXSBlcSB7eWVzfX0geworCQltZXJnZV9sb2FkX3N0YWdlcyAkY3VycmVudF9kaWZmX3BhdGggW2xpc3QgbWVyZ2VfZm9yY2Vfc3RhZ2UgJHN0YWdlXQorCX0KK30KKworcHJvYyBtZXJnZV9zdGFnZV93b3JrZGlyIHtwYXRoIHtsbm8ge319fSB7CisJZ2xvYmFsIGN1cnJlbnRfZGlmZl9wYXRoIGRpZmZfYWN0aXZlCisJZ2xvYmFsIGN1cnJlbnRfZGlmZl9zaWRlIHVpX3dvcmtkaXIKKworCWlmIHskZGlmZl9hY3RpdmV9IHJldHVybgorCisJaWYgeyRwYXRoIG5lICRjdXJyZW50X2RpZmZfcGF0aCB8fCAkdWlfd29ya2RpciBuZSAkY3VycmVudF9kaWZmX3NpZGV9IHsKKwkJc2hvd19kaWZmICRwYXRoICR1aV93b3JrZGlyICRsbm8ge30gW2xpc3QgZG9fbWVyZ2Vfc3RhZ2Vfd29ya2RpciAkcGF0aF0KKwl9IGVsc2UgeworCQlkb19tZXJnZV9zdGFnZV93b3JrZGlyICRwYXRoCisJfQorfQorCitwcm9jIGRvX21lcmdlX3N0YWdlX3dvcmtkaXIge3BhdGh9IHsKKwlnbG9iYWwgY3VycmVudF9kaWZmX3BhdGggaXNfY29uZmxpY3RfZGlmZgorCisJaWYgeyRwYXRoIG5lICRjdXJyZW50X2RpZmZfcGF0aH0gcmV0dXJuOworCisJaWYgeyRpc19jb25mbGljdF9kaWZmfSB7CisJCWlmIHtbYXNrX3BvcHVwIFttYyAiRmlsZSAlcyBzZWVtcyB0byBoYXZlIHVucmVzb2x2ZWQgY29uZmxpY3RzLCBzdGlsbCBzdGFnZT8iIFwKKwkJCQlbc2hvcnRfcGF0aCAkcGF0aF1dXSBuZSB7eWVzfX0geworCQkJcmV0dXJuCisJCX0KKwl9CisKKwltZXJnZV9hZGRfcmVzb2x1dGlvbiAkcGF0aAorfQorCitwcm9jIG1lcmdlX2FkZF9yZXNvbHV0aW9uIHtwYXRofSB7CisJZ2xvYmFsIGN1cnJlbnRfZGlmZl9wYXRoIHVpX3dvcmtkaXIKKworCXNldCBhZnRlciBbbmV4dF9kaWZmX2FmdGVyX2FjdGlvbiAkdWlfd29ya2RpciAkcGF0aCB7fSB7Xl8/VX1dCisKKwl1cGRhdGVfaW5kZXggXAorCQlbbWMgIkFkZGluZyByZXNvbHV0aW9uIGZvciAlcyIgW3Nob3J0X3BhdGggJHBhdGhdXSBcCisJCVtsaXN0ICRwYXRoXSBcCisJCVtjb25jYXQgJGFmdGVyIFtsaXN0IHVpX3JlYWR5XV0KK30KKworcHJvYyBtZXJnZV9mb3JjZV9zdGFnZSB7c3RhZ2V9IHsKKwlnbG9iYWwgY3VycmVudF9kaWZmX3BhdGggbWVyZ2Vfc3RhZ2VzCisKKwlpZiB7JG1lcmdlX3N0YWdlcygkc3RhZ2UpIG5lIHt9fSB7CisJCWdpdCBjaGVja291dC1pbmRleCAtZiAtLXN0YWdlPSRzdGFnZSAtLSAkY3VycmVudF9kaWZmX3BhdGgKKwl9IGVsc2UgeworCQlmaWxlIGRlbGV0ZSAtLSAkY3VycmVudF9kaWZmX3BhdGgKKwl9CisKKwltZXJnZV9hZGRfcmVzb2x1dGlvbiAkY3VycmVudF9kaWZmX3BhdGgKK30KKworcHJvYyBtZXJnZV9sb2FkX3N0YWdlcyB7cGF0aCBjb250fSB7CisJZ2xvYmFsIG1lcmdlX3N0YWdlc19mZCBtZXJnZV9zdGFnZXMgbWVyZ2Vfc3RhZ2VzX2J1ZgorCisJaWYge1tpbmZvIGV4aXN0cyBtZXJnZV9zdGFnZXNfZmRdfSB7CisJCWNhdGNoIHsga2lsbF9maWxlX3Byb2Nlc3MgJG1lcmdlX3N0YWdlc19mZCB9CisJCWNhdGNoIHsgY2xvc2UgJG1lcmdlX3N0YWdlc19mZCB9CisJfQorCisJc2V0IG1lcmdlX3N0YWdlcygwKSB7fQorCXNldCBtZXJnZV9zdGFnZXMoMSkge30KKwlzZXQgbWVyZ2Vfc3RhZ2VzKDIpIHt9CisJc2V0IG1lcmdlX3N0YWdlcygzKSB7fQorCXNldCBtZXJnZV9zdGFnZXNfYnVmIHt9CisKKwlzZXQgbWVyZ2Vfc3RhZ2VzX2ZkIFtldmFsIGdpdF9yZWFkIGxzLWZpbGVzIC11IC16IC0tICRwYXRoXQorCisJZmNvbmZpZ3VyZSAkbWVyZ2Vfc3RhZ2VzX2ZkIC1ibG9ja2luZyAwIC10cmFuc2xhdGlvbiBiaW5hcnkgLWVuY29kaW5nIGJpbmFyeQorCWZpbGVldmVudCAkbWVyZ2Vfc3RhZ2VzX2ZkIHJlYWRhYmxlIFtsaXN0IHJlYWRfbWVyZ2Vfc3RhZ2VzICRtZXJnZV9zdGFnZXNfZmQgJGNvbnRdCit9CisKK3Byb2MgcmVhZF9tZXJnZV9zdGFnZXMge2ZkIGNvbnR9IHsKKwlnbG9iYWwgbWVyZ2Vfc3RhZ2VzX2J1ZiBtZXJnZV9zdGFnZXNfZmQgbWVyZ2Vfc3RhZ2VzCisKKwlhcHBlbmQgbWVyZ2Vfc3RhZ2VzX2J1ZiBbcmVhZCAkZmRdCisJc2V0IHBjayBbc3BsaXQgJG1lcmdlX3N0YWdlc19idWYgIlwwIl0KKwlzZXQgbWVyZ2Vfc3RhZ2VzX2J1ZiBbbGluZGV4ICRwY2sgZW5kXQorCisJaWYge1tlb2YgJGZkXSAmJiAkbWVyZ2Vfc3RhZ2VzX2J1ZiBuZSB7fX0geworCQlsYXBwZW5kIHBjayB7fQorCQlzZXQgbWVyZ2Vfc3RhZ2VzX2J1ZiB7fQorCX0KKworCWZvcmVhY2ggcCBbbHJhbmdlICRwY2sgMCBlbmQtMV0geworCQlzZXQgZmNvbHMgW3NwbGl0ICRwICJcdCJdCisJCXNldCBjb2xzICBbc3BsaXQgW2xpbmRleCAkZmNvbHMgMF0gIiAiXQorCQlzZXQgc3RhZ2UgW2xpbmRleCAkY29scyAyXQorCQkKKwkJc2V0IG1lcmdlX3N0YWdlcygkc3RhZ2UpIFtscmFuZ2UgJGNvbHMgMCAxXQorCX0KKworCWlmIHtbZW9mICRmZF19IHsKKwkJY2xvc2UgJGZkCisJCXVuc2V0IG1lcmdlX3N0YWdlc19mZAorCQlldmFsICRjb250CisJfQorfQorCitwcm9jIG1lcmdlX3Jlc29sdmVfdG9vbCB7fSB7CisJZ2xvYmFsIGN1cnJlbnRfZGlmZl9wYXRoCisKKwltZXJnZV9sb2FkX3N0YWdlcyAkY3VycmVudF9kaWZmX3BhdGggW2xpc3QgbWVyZ2VfcmVzb2x2ZV90b29sMl0KK30KKworcHJvYyBtZXJnZV9yZXNvbHZlX3Rvb2wyIHt9IHsKKwlnbG9iYWwgY3VycmVudF9kaWZmX3BhdGggbWVyZ2Vfc3RhZ2VzCisKKwkjIFZhbGlkYXRlIHRoZSBzdGFnZXMKKwlpZiB7JG1lcmdlX3N0YWdlcygyKSBlcSB7fSB8fAorCSAgICBbbGluZGV4ICRtZXJnZV9zdGFnZXMoMikgMF0gZXEgezEyMDAwMH0gfHwKKwkgICAgW2xpbmRleCAkbWVyZ2Vfc3RhZ2VzKDIpIDBdIGVxIHsxNjAwMDB9IHx8CisJICAgICRtZXJnZV9zdGFnZXMoMykgZXEge30gfHwKKwkgICAgW2xpbmRleCAkbWVyZ2Vfc3RhZ2VzKDMpIDBdIGVxIHsxMjAwMDB9IHx8CisJICAgIFtsaW5kZXggJG1lcmdlX3N0YWdlcygzKSAwXSBlcSB7MTYwMDAwfQorCX0geworCQllcnJvcl9wb3B1cCBbbWMgIkNhbm5vdCByZXNvbHZlIGRlbGV0aW9uIG9yIGxpbmsgY29uZmxpY3RzIHVzaW5nIGEgdG9vbCJdCisJCXJldHVybgorCX0KKworCWlmIHshW2ZpbGUgZXhpc3RzICRjdXJyZW50X2RpZmZfcGF0aF19IHsKKwkJZXJyb3JfcG9wdXAgW21jICJDb25mbGljdCBmaWxlIGRvZXMgbm90IGV4aXN0Il0KKwkJcmV0dXJuCisJfQorCisJIyBEZXRlcm1pbmUgdGhlIHRvb2wgdG8gdXNlCisJc2V0IHRvb2wgW2dldF9jb25maWcgbWVyZ2UudG9vbF0KKwlpZiB7JHRvb2wgZXEge319IHsgc2V0IHRvb2wgbWVsZCB9CisKKwlzZXQgbWVyZ2VfdG9vbF9wYXRoIFtnZXRfY29uZmlnICJtZXJnZXRvb2wuJHRvb2wucGF0aCJdCisJaWYgeyRtZXJnZV90b29sX3BhdGggZXEge319IHsKKwkJc3dpdGNoIC0tICR0b29sIHsKKwkJZW1lcmdlIHsgc2V0IG1lcmdlX3Rvb2xfcGF0aCAiZW1hY3MiIH0KKwkJYXJheGlzIHsgc2V0IG1lcmdlX3Rvb2xfcGF0aCAiY29tcGFyZSIgfQorCQlkZWZhdWx0IHsgc2V0IG1lcmdlX3Rvb2xfcGF0aCAkdG9vbCB9CisJCX0KKwl9CisKKwkjIE1ha2UgZmlsZSBuYW1lcworCXNldCBmaWxlYmFzZSBbZmlsZSByb290bmFtZSAkY3VycmVudF9kaWZmX3BhdGhdCisJc2V0IGZpbGVleHQgIFtmaWxlIGV4dGVuc2lvbiAkY3VycmVudF9kaWZmX3BhdGhdCisJc2V0IGJhc2VuYW1lIFtsaW5kZXggW2ZpbGUgc3BsaXQgJGN1cnJlbnRfZGlmZl9wYXRoXSBlbmRdCisKKwlzZXQgTUVSR0VEICAgJGN1cnJlbnRfZGlmZl9wYXRoCisJc2V0IEJBU0UgICAgICIuLyRNRVJHRUQuQkFTRSRmaWxlZXh0IgorCXNldCBMT0NBTCAgICAiLi8kTUVSR0VELkxPQ0FMJGZpbGVleHQiCisJc2V0IFJFTU9URSAgICIuLyRNRVJHRUQuUkVNT1RFJGZpbGVleHQiCisJc2V0IEJBQ0tVUCAgICIuLyRNRVJHRUQuQkFDS1VQJGZpbGVleHQiCisKKwlzZXQgYmFzZV9zdGFnZSAkbWVyZ2Vfc3RhZ2VzKDEpCisKKwkjIEJ1aWxkIHRoZSBjb21tYW5kIGxpbmUKKwlzd2l0Y2ggLS0gJHRvb2wgeworCWtkaWZmMyB7CisJCWlmIHskYmFzZV9zdGFnZSBuZSB7fX0geworCQkJc2V0IGNtZGxpbmUgW2xpc3QgIiRtZXJnZV90b29sX3BhdGgiIC0tYXV0byAtLUwxICIkTUVSR0VEIChCYXNlKSIgXAorCQkJCS0tTDIgIiRNRVJHRUQgKExvY2FsKSIgLS1MMyAiJE1FUkdFRCAoUmVtb3RlKSIgLW8gIiRNRVJHRUQiICIkQkFTRSIgIiRMT0NBTCIgIiRSRU1PVEUiXQorCQl9IGVsc2UgeworCQkJc2V0IGNtZGxpbmUgW2xpc3QgIiRtZXJnZV90b29sX3BhdGgiIC0tYXV0byAtLUwxICIkTUVSR0VEIChMb2NhbCkiIFwKKwkJCQktLUwyICIkTUVSR0VEIChSZW1vdGUpIiAtbyAiJE1FUkdFRCIgIiRMT0NBTCIgIiRSRU1PVEUiXQorCQl9CisJfQorCXRrZGlmZiB7CisJCWlmIHskYmFzZV9zdGFnZSBuZSB7fX0geworCQkJc2V0IGNtZGxpbmUgW2xpc3QgIiRtZXJnZV90b29sX3BhdGgiIC1hICIkQkFTRSIgLW8gIiRNRVJHRUQiICIkTE9DQUwiICIkUkVNT1RFIl0KKwkJfSBlbHNlIHsKKwkJCXNldCBjbWRsaW5lIFtsaXN0ICIkbWVyZ2VfdG9vbF9wYXRoIiAtbyAiJE1FUkdFRCIgIiRMT0NBTCIgIiRSRU1PVEUiXQorCQl9CisJfQorCW1lbGQgeworCQlzZXQgY21kbGluZSBbbGlzdCAiJG1lcmdlX3Rvb2xfcGF0aCIgIiRMT0NBTCIgIiRNRVJHRUQiICIkUkVNT1RFIl0KKwl9CisJZ3ZpbWRpZmYgeworCQlzZXQgY21kbGluZSBbbGlzdCAiJG1lcmdlX3Rvb2xfcGF0aCIgLWYgIiRMT0NBTCIgIiRNRVJHRUQiICIkUkVNT1RFIl0KKwl9CisJeHhkaWZmIHsKKwkJaWYgeyRiYXNlX3N0YWdlIG5lIHt9fSB7CisJCQlzZXQgY21kbGluZSBbbGlzdCAiJG1lcmdlX3Rvb2xfcGF0aCIgLVggLS1zaG93LW1lcmdlZC1wYW5lIFwKKwkJCQkJICAgIC1SIHtBY2NlbC5TYXZlQXNNZXJnZWQ6ICJDdHJsLVMifSBcCisJCQkJCSAgICAtUiB7QWNjZWwuU2VhcmNoOiAiQ3RybCtGIn0gXAorCQkJCQkgICAgLVIge0FjY2VsLlNlYXJjaEZvcndhcmQ6ICJDdHJsLUcifSBcCisJCQkJCSAgICAtLW1lcmdlZC1maWxlICIkTUVSR0VEIiAiJExPQ0FMIiAiJEJBU0UiICIkUkVNT1RFIl0KKwkJfSBlbHNlIHsKKwkJCXNldCBjbWRsaW5lIFtsaXN0ICIkbWVyZ2VfdG9vbF9wYXRoIiAtWCAtLXNob3ctbWVyZ2VkLXBhbmUgXAorCQkJCQkgICAgLVIge0FjY2VsLlNhdmVBc01lcmdlZDogIkN0cmwtUyJ9IFwKKwkJCQkJICAgIC1SIHtBY2NlbC5TZWFyY2g6ICJDdHJsK0YifSBcCisJCQkJCSAgICAtUiB7QWNjZWwuU2VhcmNoRm9yd2FyZDogIkN0cmwtRyJ9IFwKKwkJCQkJICAgIC0tbWVyZ2VkLWZpbGUgIiRNRVJHRUQiICIkTE9DQUwiICIkUkVNT1RFIl0KKwkJfQorCX0KKwlvcGVuZGlmZiB7CisJCWlmIHskYmFzZV9zdGFnZSBuZSB7fX0geworCQkJc2V0IGNtZGxpbmUgW2xpc3QgIiRtZXJnZV90b29sX3BhdGgiICIkTE9DQUwiICIkUkVNT1RFIiAtYW5jZXN0b3IgIiRCQVNFIiAtbWVyZ2UgIiRNRVJHRUQiXQorCQl9IGVsc2UgeworCQkJc2V0IGNtZGxpbmUgW2xpc3QgIiRtZXJnZV90b29sX3BhdGgiICIkTE9DQUwiICIkUkVNT1RFIiAtbWVyZ2UgIiRNRVJHRUQiXQorCQl9CisJfQorCWVjbWVyZ2UgeworCQlpZiB7JGJhc2Vfc3RhZ2UgbmUge319IHsKKwkJCXNldCBjbWRsaW5lIFtsaXN0ICIkbWVyZ2VfdG9vbF9wYXRoIiAiJEJBU0UiICIkTE9DQUwiICIkUkVNT1RFIiAtLWRlZmF1bHQgLS1tb2RlPW1lcmdlMyAtLXRvPSIkTUVSR0VEIl0KKwkJfSBlbHNlIHsKKwkJCXNldCBjbWRsaW5lIFtsaXN0ICIkbWVyZ2VfdG9vbF9wYXRoIiAiJExPQ0FMIiAiJFJFTU9URSIgLS1kZWZhdWx0IC0tbW9kZT1tZXJnZTIgLS10bz0iJE1FUkdFRCJdCisJCX0KKwl9CisJZW1lcmdlIHsKKwkJaWYgeyRiYXNlX3N0YWdlIG5lIHt9fSB7CisJCQlzZXQgY21kbGluZSBbbGlzdCAiJG1lcmdlX3Rvb2xfcGF0aCIgLWYgZW1lcmdlLWZpbGVzLXdpdGgtYW5jZXN0b3ItY29tbWFuZCBcCisJCQkJCSIkTE9DQUwiICIkUkVNT1RFIiAiJEJBU0UiICIkYmFzZW5hbWUiXQorCQl9IGVsc2UgeworCQkJc2V0IGNtZGxpbmUgW2xpc3QgIiRtZXJnZV90b29sX3BhdGgiIC1mIGVtZXJnZS1maWxlcy1jb21tYW5kIFwKKwkJCQkJIiRMT0NBTCIgIiRSRU1PVEUiICIkYmFzZW5hbWUiXQorCQl9CisJfQorCXdpbm1lcmdlIHsKKwkJaWYgeyRiYXNlX3N0YWdlIG5lIHt9fSB7CisJCQkjIFRoaXMgdG9vbCBkb2VzIG5vdCBzdXBwb3J0IDMtd2F5IG1lcmdlcy4KKwkJCSMgVXNlIHRoZSAnY29uZmxpY3QgZmlsZScgcmVzb2x1dGlvbiBmZWF0dXJlIGluc3RlYWQuCisJCQlzZXQgY21kbGluZSBbbGlzdCAiJG1lcmdlX3Rvb2xfcGF0aCIgLWUgLXViICIkTUVSR0VEIl0KKwkJfSBlbHNlIHsKKwkJCXNldCBjbWRsaW5lIFtsaXN0ICIkbWVyZ2VfdG9vbF9wYXRoIiAtZSAtdWIgLXdsIFwKKwkJCQktZGwgIlRoZWlycyBGaWxlIiAtZHIgIk1pbmUgRmlsZSIgIiRSRU1PVEUiICIkTE9DQUwiICIkTUVSR0VEIl0KKwkJfQorCX0KKwlhcmF4aXMgeworCQlpZiB7JGJhc2Vfc3RhZ2UgbmUge319IHsKKwkJCXNldCBjbWRsaW5lIFtsaXN0ICIkbWVyZ2VfdG9vbF9wYXRoIiAtd2FpdCAtbWVyZ2UgLTMgLWExIFwKKwkJCQktdGl0bGUxOiInJE1FUkdFRCAoQmFzZSknIiAtdGl0bGUyOiInJE1FUkdFRCAoTG9jYWwpJyIgXAorCQkJCS10aXRsZTM6IickTUVSR0VEIChSZW1vdGUpJyIgXAorCQkJCSIkQkFTRSIgIiRMT0NBTCIgIiRSRU1PVEUiICIkTUVSR0VEIl0KKwkJfSBlbHNlIHsKKwkJCXNldCBjbWRsaW5lIFtsaXN0ICIkbWVyZ2VfdG9vbF9wYXRoIiAtd2FpdCAtMiBcCisJCQkJIC10aXRsZTE6IickTUVSR0VEIChMb2NhbCknIiAtdGl0bGUyOiInJE1FUkdFRCAoUmVtb3RlKSciIFwKKwkJCQkgIiRMT0NBTCIgIiRSRU1PVEUiICIkTUVSR0VEIl0KKwkJfQorCX0KKwlwNG1lcmdlIHsKKwkJc2V0IGNtZGxpbmUgW2xpc3QgIiRtZXJnZV90b29sX3BhdGgiICIkQkFTRSIgIiRSRU1PVEUiICIkTE9DQUwiICIkTUVSR0VEIl0KKwl9CisJdmltZGlmZiB7CisJCWVycm9yX3BvcHVwIFttYyAiTm90IGEgR1VJIG1lcmdlIHRvb2w6ICclcyciICR0b29sXQorCQlyZXR1cm4KKwl9CisJZGVmYXVsdCB7CisJCWVycm9yX3BvcHVwIFttYyAiVW5zdXBwb3J0ZWQgbWVyZ2UgdG9vbCAnJXMnIiAkdG9vbF0KKwkJcmV0dXJuCisJfQorCX0KKworCW1lcmdlX3Rvb2xfc3RhcnQgJGNtZGxpbmUgJE1FUkdFRCAkQkFDS1VQIFtsaXN0ICRCQVNFICRMT0NBTCAkUkVNT1RFXQorfQorCitwcm9jIGRlbGV0ZV90ZW1wX2ZpbGVzIHtmaWxlc30geworCWZvcmVhY2ggZm5hbWUgJGZpbGVzIHsKKwkJZmlsZSBkZWxldGUgJGZuYW1lCisJfQorfQorCitwcm9jIG1lcmdlX3Rvb2xfZ2V0X3N0YWdlcyB7dGFyZ2V0IHN0YWdlc30geworCWdsb2JhbCBtZXJnZV9zdGFnZXMKKworCXNldCBpIDEKKwlmb3JlYWNoIGZuYW1lICRzdGFnZXMgeworCQlpZiB7JG1lcmdlX3N0YWdlcygkaSkgZXEge319IHsKKwkJCWZpbGUgZGVsZXRlICRmbmFtZQorCQkJY2F0Y2ggeyBjbG9zZSBbb3BlbiAkZm5hbWUgd10gfQorCQl9IGVsc2UgeworCQkJIyBBIGhhY2sgdG8gc3VwcG9ydCBhdXRvY3JsZiBwcm9wZXJseQorCQkJZ2l0IGNoZWNrb3V0LWluZGV4IC1mIC0tc3RhZ2U9JGkgLS0gJHRhcmdldAorCQkJZmlsZSByZW5hbWUgLWZvcmNlIC0tICR0YXJnZXQgJGZuYW1lCisJCX0KKwkJaW5jciBpCisJfQorfQorCitwcm9jIG1lcmdlX3Rvb2xfc3RhcnQge2NtZGxpbmUgdGFyZ2V0IGJhY2t1cCBzdGFnZXN9IHsKKwlnbG9iYWwgbWVyZ2Vfc3RhZ2VzIG10b29sX3RhcmdldCBtdG9vbF90bXBmaWxlcyBtdG9vbF9mZCBtdG9vbF9tdGltZQorCisJaWYge1tpbmZvIGV4aXN0cyBtdG9vbF9mZF19IHsKKwkJaWYge1thc2tfcG9wdXAgW21jICJNZXJnZSB0b29sIGlzIGFscmVhZHkgcnVubmluZywgdGVybWluYXRlIGl0PyJdXSBlcSB7eWVzfX0geworCQkJY2F0Y2ggeyBraWxsX2ZpbGVfcHJvY2VzcyAkbXRvb2xfZmQgfQorCQkJY2F0Y2ggeyBjbG9zZSAkbXRvb2xfZmQgfQorCQkJdW5zZXQgbXRvb2xfZmQKKworCQkJc2V0IG9sZF9iYWNrdXAgW2xpbmRleCAkbXRvb2xfdG1wZmlsZXMgZW5kXQorCQkJZmlsZSByZW5hbWUgLWZvcmNlIC0tICRvbGRfYmFja3VwICRtdG9vbF90YXJnZXQKKwkJCWRlbGV0ZV90ZW1wX2ZpbGVzICRtdG9vbF90bXBmaWxlcworCQl9IGVsc2UgeworCQkJcmV0dXJuCisJCX0KKwl9CisKKwkjIFNhdmUgdGhlIG9yaWdpbmFsIGZpbGUKKwlmaWxlIHJlbmFtZSAtZm9yY2UgLS0gJHRhcmdldCAkYmFja3VwCisKKwkjIEdldCB0aGUgYmxvYnM7IGl0IGRlc3Ryb3lzICR0YXJnZXQKKwlpZiB7W2NhdGNoIHttZXJnZV90b29sX2dldF9zdGFnZXMgJHRhcmdldCAkc3RhZ2VzfSBlcnJdfSB7CisJCWZpbGUgcmVuYW1lIC1mb3JjZSAtLSAkYmFja3VwICR0YXJnZXQKKwkJZGVsZXRlX3RlbXBfZmlsZXMgJHN0YWdlcworCQllcnJvcl9wb3B1cCBbbWMgIkVycm9yIHJldHJpZXZpbmcgdmVyc2lvbnM6XG4lcyIgJGVycl0KKwkJcmV0dXJuCisJfQorCisJIyBSZXN0b3JlIHRoZSBjb25mbGljdCBmaWxlCisJZmlsZSBjb3B5IC1mb3JjZSAtLSAkYmFja3VwICR0YXJnZXQKKworCSMgSW5pdGlhbGl6ZSBnbG9iYWwgc3RhdGUKKwlzZXQgbXRvb2xfdGFyZ2V0ICR0YXJnZXQKKwlzZXQgbXRvb2xfbXRpbWUgW2ZpbGUgbXRpbWUgJHRhcmdldF0KKwlzZXQgbXRvb2xfdG1wZmlsZXMgJHN0YWdlcworCisJbGFwcGVuZCBtdG9vbF90bXBmaWxlcyAkYmFja3VwCisKKwkjIEZvcmNlIHJlZGlyZWN0aW9uIHRvIGF2b2lkIGludGVycHJldGluZyBvdXRwdXQgb24gc3RkZXJyCisJIyBhcyBhbiBlcnJvciwgYW5kIGxhdW5jaCB0aGUgdG9vbAorCWxhcHBlbmQgY21kbGluZSB7Mj5AMX0KKworCWlmIHtbY2F0Y2ggeyBzZXQgbXRvb2xfZmQgW19vcGVuX3N0ZG91dF9zdGRlcnIgJGNtZGxpbmVdIH0gZXJyXX0geworCQlkZWxldGVfdGVtcF9maWxlcyAkbXRvb2xfdG1wZmlsZXMKKwkJZXJyb3JfcG9wdXAgW21jICJDb3VsZCBub3Qgc3RhcnQgdGhlIG1lcmdlIHRvb2w6XG5cbiVzIiAkZXJyXQorCQlyZXR1cm4KKwl9CisKKwl1aV9zdGF0dXMgW21jICJSdW5uaW5nIG1lcmdlIHRvb2wuLi4iXQorCisJZmNvbmZpZ3VyZSAkbXRvb2xfZmQgLWJsb2NraW5nIDAgLXRyYW5zbGF0aW9uIGJpbmFyeSAtZW5jb2RpbmcgYmluYXJ5CisJZmlsZWV2ZW50ICRtdG9vbF9mZCByZWFkYWJsZSBbbGlzdCByZWFkX210b29sX291dHB1dCAkbXRvb2xfZmRdCit9CisKK3Byb2MgcmVhZF9tdG9vbF9vdXRwdXQge2ZkfSB7CisJZ2xvYmFsIG10b29sX2ZkIG10b29sX3RtcGZpbGVzCisKKwlyZWFkICRmZAorCWlmIHtbZW9mICRmZF19IHsKKwkJdW5zZXQgbXRvb2xfZmQKKworCQlmY29uZmlndXJlICRmZCAtYmxvY2tpbmcgMQorCQltZXJnZV90b29sX2ZpbmlzaCAkZmQKKwl9Cit9CisKK3Byb2MgbWVyZ2VfdG9vbF9maW5pc2gge2ZkfSB7CisJZ2xvYmFsIG10b29sX3RtcGZpbGVzIG10b29sX3RhcmdldCBtdG9vbF9tdGltZQorCisJc2V0IGJhY2t1cCBbbGluZGV4ICRtdG9vbF90bXBmaWxlcyBlbmRdCisJc2V0IGZhaWxlZCAwCisKKwkjIENoZWNrIHRoZSByZXR1cm4gY29kZQorCWlmIHtbY2F0Y2gge2Nsb3NlICRmZH0gZXJyXX0geworCQlzZXQgZmFpbGVkIDEKKwkJaWYgeyRlcnIgbmUge2NoaWxkIHByb2Nlc3MgZXhpdGVkIGFibm9ybWFsbHl9fSB7CisJCQllcnJvcl9wb3B1cCBbc3RyY2F0IFttYyAiTWVyZ2UgdG9vbCBmYWlsZWQuIl0gIlxuXG4kZXJyIl0KKwkJfQorCX0KKworCSMgRmluaXNoCisJaWYgeyRmYWlsZWR9IHsKKwkJZmlsZSByZW5hbWUgLWZvcmNlIC0tICRiYWNrdXAgJG10b29sX3RhcmdldAorCQlkZWxldGVfdGVtcF9maWxlcyAkbXRvb2xfdG1wZmlsZXMKKwkJdWlfc3RhdHVzIFttYyAiTWVyZ2UgdG9vbCBmYWlsZWQuIl0KKwl9IGVsc2UgeworCQlpZiB7W2lzX2NvbmZpZ190cnVlIG1lcmdlLmtlZXBiYWNrdXBdfSB7CisJCQlmaWxlIHJlbmFtZSAtZm9yY2UgLS0gJGJhY2t1cCAiJG10b29sX3RhcmdldC5vcmlnIgorCQl9CisKKwkJZGVsZXRlX3RlbXBfZmlsZXMgJG10b29sX3RtcGZpbGVzCisKKwkJcmVzaG93X2RpZmYKKwl9Cit9CmRpZmYgLS1naXQgYS9naXQtZ3VpL2xpYi9vcHRpb24udGNsIGIvZ2l0LWd1aS9saWIvb3B0aW9uLnRjbAppbmRleCA1ZTEzNDZlLi4xZDU1YjQ5IDEwMDY0NAotLS0gYS9naXQtZ3VpL2xpYi9vcHRpb24udGNsCisrKyBiL2dpdC1ndWkvbGliL29wdGlvbi50Y2wKQEAgLTEsOSArMSwzMSBAQAogIyBnaXQtZ3VpIG9wdGlvbnMgZWRpdG9yCiAjIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBTaGF3biBQZWFyY2UKIAorcHJvYyBjb25maWdfY2hlY2tfZW5jb2RpbmdzIHt9IHsKKwlnbG9iYWwgcmVwb19jb25maWdfbmV3IGdsb2JhbF9jb25maWdfbmV3CisKKwlzZXQgZW5jICRnbG9iYWxfY29uZmlnX25ldyhndWkuZW5jb2RpbmcpCisJaWYgeyRlbmMgZXEge319IHsKKwkJc2V0IGdsb2JhbF9jb25maWdfbmV3KGd1aS5lbmNvZGluZykgW2VuY29kaW5nIHN5c3RlbV0KKwl9IGVsc2VpZiB7W3RjbF9lbmNvZGluZyAkZW5jXSBlcSB7fX0geworCQllcnJvcl9wb3B1cCBbbWMgIkludmFsaWQgZ2xvYmFsIGVuY29kaW5nICclcyciICRlbmNdCisJCXJldHVybiAwCisJfQorCisJc2V0IGVuYyAkcmVwb19jb25maWdfbmV3KGd1aS5lbmNvZGluZykKKwlpZiB7JGVuYyBlcSB7fX0geworCQlzZXQgcmVwb19jb25maWdfbmV3KGd1aS5lbmNvZGluZykgW2VuY29kaW5nIHN5c3RlbV0KKwl9IGVsc2VpZiB7W3RjbF9lbmNvZGluZyAkZW5jXSBlcSB7fX0geworCQllcnJvcl9wb3B1cCBbbWMgIkludmFsaWQgcmVwbyBlbmNvZGluZyAnJXMnIiAkZW5jXQorCQlyZXR1cm4gMAorCX0KKworCXJldHVybiAxCit9CisKIHByb2Mgc2F2ZV9jb25maWcge30gewogCWdsb2JhbCBkZWZhdWx0X2NvbmZpZyBmb250X2Rlc2NzCi0JZ2xvYmFsIHJlcG9fY29uZmlnIGdsb2JhbF9jb25maWcKKwlnbG9iYWwgcmVwb19jb25maWcgZ2xvYmFsX2NvbmZpZyBzeXN0ZW1fY29uZmlnCiAJZ2xvYmFsIHJlcG9fY29uZmlnX25ldyBnbG9iYWxfY29uZmlnX25ldwogCWdsb2JhbCB1aV9jb21tX3NwZWxsCiAKQEAgLTI3LDcgKzQ5LDcgQEAKIAlmb3JlYWNoIG5hbWUgW2FycmF5IG5hbWVzIGRlZmF1bHRfY29uZmlnXSB7CiAJCXNldCB2YWx1ZSAkZ2xvYmFsX2NvbmZpZ19uZXcoJG5hbWUpCiAJCWlmIHskdmFsdWUgbmUgJGdsb2JhbF9jb25maWcoJG5hbWUpfSB7Ci0JCQlpZiB7JHZhbHVlIGVxICRkZWZhdWx0X2NvbmZpZygkbmFtZSl9IHsKKwkJCWlmIHskdmFsdWUgZXEgJHN5c3RlbV9jb25maWcoJG5hbWUpfSB7CiAJCQkJY2F0Y2gge2dpdCBjb25maWcgLS1nbG9iYWwgLS11bnNldCAkbmFtZX0KIAkJCX0gZWxzZSB7CiAJCQkJcmVnc3ViIC1hbGwgIlxbe31cXSIgJHZhbHVlIHsifSB2YWx1ZQpAQCAtMTE5LDE1ICsxNDEsMTggQEAKIAkJe2IgbWVyZ2Uuc3VtbWFyeSB7bWMgIlN1bW1hcml6ZSBNZXJnZSBDb21taXRzIn19CiAJCXtpLTEuLjUgbWVyZ2UudmVyYm9zaXR5IHttYyAiTWVyZ2UgVmVyYm9zaXR5In19CiAJCXtiIG1lcmdlLmRpZmZzdGF0IHttYyAiU2hvdyBEaWZmc3RhdCBBZnRlciBNZXJnZSJ9fQorCQl7dCBtZXJnZS50b29sIHttYyAiVXNlIE1lcmdlIFRvb2wifX0KIAogCQl7YiBndWkudHJ1c3RtdGltZSAge21jICJUcnVzdCBGaWxlIE1vZGlmaWNhdGlvbiBUaW1lc3RhbXBzIn19CiAJCXtiIGd1aS5wcnVuZWR1cmluZ2ZldGNoIHttYyAiUHJ1bmUgVHJhY2tpbmcgQnJhbmNoZXMgRHVyaW5nIEZldGNoIn19CiAJCXtiIGd1aS5tYXRjaHRyYWNraW5nYnJhbmNoIHttYyAiTWF0Y2ggVHJhY2tpbmcgQnJhbmNoZXMifX0KIAkJe2IgZ3VpLmZhc3Rjb3B5YmxhbWUge21jICJCbGFtZSBDb3B5IE9ubHkgT24gQ2hhbmdlZCBGaWxlcyJ9fQogCQl7aS0yMC4uMjAwIGd1aS5jb3B5YmxhbWV0aHJlc2hvbGQge21jICJNaW5pbXVtIExldHRlcnMgVG8gQmxhbWUgQ29weSBPbiJ9fQorCQl7aS0wLi4zMDAgZ3VpLmJsYW1laGlzdG9yeWN0eCB7bWMgIkJsYW1lIEhpc3RvcnkgQ29udGV4dCBSYWRpdXMgKGRheXMpIn19CiAJCXtpLTEuLjk5IGd1aS5kaWZmY29udGV4dCB7bWMgIk51bWJlciBvZiBEaWZmIENvbnRleHQgTGluZXMifX0KIAkJe2ktMC4uOTkgZ3VpLmNvbW1pdG1zZ3dpZHRoIHttYyAiQ29tbWl0IE1lc3NhZ2UgVGV4dCBXaWR0aCJ9fQogCQl7dCBndWkubmV3YnJhbmNodGVtcGxhdGUge21jICJOZXcgQnJhbmNoIE5hbWUgVGVtcGxhdGUifX0KKwkJe2MgZ3VpLmVuY29kaW5nIHttYyAiRGVmYXVsdCBGaWxlIENvbnRlbnRzIEVuY29kaW5nIn19CiAJCX0gewogCQlzZXQgdHlwZSBbbGluZGV4ICRvcHRpb24gMF0KIAkJc2V0IG5hbWUgW2xpbmRleCAkb3B0aW9uIDFdCkBAIC0xNTcsNiArMTgyLDcgQEAKIAkJCQlwYWNrICR3LiRmLiRvcHRpZC52IC1zaWRlIHJpZ2h0IC1hbmNob3IgZSAtcGFkeCA1CiAJCQkJcGFjayAkdy4kZi4kb3B0aWQgLXNpZGUgdG9wIC1hbmNob3IgdyAtZmlsbCB4CiAJCQl9CisJCQljIC0KIAkJCXQgewogCQkJCWZyYW1lICR3LiRmLiRvcHRpZAogCQkJCWxhYmVsICR3LiRmLiRvcHRpZC5sIC10ZXh0ICIkdGV4dDoiCkBAIC0xNjksNiArMTk1LDE2IEBACiAJCQkJcGFjayAkdy4kZi4kb3B0aWQudiAtc2lkZSBsZWZ0IC1hbmNob3IgdyBcCiAJCQkJCS1maWxsIHggLWV4cGFuZCAxIFwKIAkJCQkJLXBhZHggNQorCQkJCWlmIHskdHlwZSBlcSB7Y319IHsKKwkJCQkJbWVudSAkdy4kZi4kb3B0aWQubQorCQkJCQlidWlsZF9lbmNvZGluZ19tZW51ICR3LiRmLiRvcHRpZC5tIFwKKwkJCQkJCVtsaXN0IHNldCAke2Z9X2NvbmZpZ19uZXcoJG5hbWUpXSAxCisJCQkJCWJ1dHRvbiAkdy4kZi4kb3B0aWQuYiBcCisJCQkJCQktdGV4dCBbbWMgIkNoYW5nZSJdIFwKKwkJCQkJCS1jb21tYW5kIFtsaXN0IHBvcHVwX2J0bl9tZW51IFwKKwkJCQkJCQkkdy4kZi4kb3B0aWQubSAkdy4kZi4kb3B0aWQuYl0KKwkJCQkJcGFjayAkdy4kZi4kb3B0aWQuYiAtc2lkZSBsZWZ0IC1hbmNob3IgdworCQkJCX0KIAkJCQlwYWNrICR3LiRmLiRvcHRpZCAtc2lkZSB0b3AgLWFuY2hvciB3IC1maWxsIHgKIAkJCX0KIAkJCX0KQEAgLTI0OCwxNyArMjg0LDE3IEBACiB9CiAKIHByb2MgZG9fcmVzdG9yZV9kZWZhdWx0cyB7fSB7Ci0JZ2xvYmFsIGZvbnRfZGVzY3MgZGVmYXVsdF9jb25maWcgcmVwb19jb25maWcKKwlnbG9iYWwgZm9udF9kZXNjcyBkZWZhdWx0X2NvbmZpZyByZXBvX2NvbmZpZyBzeXN0ZW1fY29uZmlnCiAJZ2xvYmFsIHJlcG9fY29uZmlnX25ldyBnbG9iYWxfY29uZmlnX25ldwogCiAJZm9yZWFjaCBuYW1lIFthcnJheSBuYW1lcyBkZWZhdWx0X2NvbmZpZ10gewotCQlzZXQgcmVwb19jb25maWdfbmV3KCRuYW1lKSAkZGVmYXVsdF9jb25maWcoJG5hbWUpCi0JCXNldCBnbG9iYWxfY29uZmlnX25ldygkbmFtZSkgJGRlZmF1bHRfY29uZmlnKCRuYW1lKQorCQlzZXQgcmVwb19jb25maWdfbmV3KCRuYW1lKSAkc3lzdGVtX2NvbmZpZygkbmFtZSkKKwkJc2V0IGdsb2JhbF9jb25maWdfbmV3KCRuYW1lKSAkc3lzdGVtX2NvbmZpZygkbmFtZSkKIAl9CiAKIAlmb3JlYWNoIG9wdGlvbiAkZm9udF9kZXNjcyB7CiAJCXNldCBuYW1lIFtsaW5kZXggJG9wdGlvbiAwXQotCQlzZXQgcmVwb19jb25maWcoZ3VpLiRuYW1lKSAkZGVmYXVsdF9jb25maWcoZ3VpLiRuYW1lKQorCQlzZXQgcmVwb19jb25maWcoZ3VpLiRuYW1lKSAkc3lzdGVtX2NvbmZpZyhndWkuJG5hbWUpCiAJfQogCWFwcGx5X2NvbmZpZwogCkBAIC0yNzMsNiArMzA5LDcgQEAKIH0KIAogcHJvYyBkb19zYXZlX2NvbmZpZyB7d30geworCWlmIHshW2NvbmZpZ19jaGVja19lbmNvZGluZ3NdfSByZXR1cm4KIAlpZiB7W2NhdGNoIHtzYXZlX2NvbmZpZ30gZXJyXX0gewogCQllcnJvcl9wb3B1cCBbc3RyY2F0IFttYyAiRmFpbGVkIHRvIGNvbXBsZXRlbHkgc2F2ZSBvcHRpb25zOiJdICJcblxuJGVyciJdCiAJfQpkaWZmIC0tZ2l0IGEvZ2l0LWd1aS9saWIvcmVtb3RlLnRjbCBiL2dpdC1ndWkvbGliL3JlbW90ZS50Y2wKaW5kZXggMGU4NmRkYS4uYjkyYjQyOSAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9saWIvcmVtb3RlLnRjbAorKysgYi9naXQtZ3VpL2xpYi9yZW1vdGUudGNsCkBAIC0xMzIsOTEgKzEzMiwxNDUgQEAKIAlzZXQgYWxsX3JlbW90ZXMgW2xzb3J0IC11bmlxdWUgJGFsbF9yZW1vdGVzXQogfQogCi1wcm9jIHBvcHVsYXRlX2ZldGNoX21lbnUge30gewotCWdsb2JhbCBhbGxfcmVtb3RlcyByZXBvX2NvbmZpZwotCitwcm9jIGFkZF9mZXRjaF9lbnRyeSB7cn0geworCWdsb2JhbCByZXBvX2NvbmZpZwogCXNldCByZW1vdGVfbSAubWJhci5yZW1vdGUKIAlzZXQgZmV0Y2hfbSAkcmVtb3RlX20uZmV0Y2gKIAlzZXQgcHJ1bmVfbSAkcmVtb3RlX20ucHJ1bmUKLQotCWZvcmVhY2ggciAkYWxsX3JlbW90ZXMgewotCQlzZXQgZW5hYmxlIDAKLQkJaWYgeyFbY2F0Y2gge3NldCBhICRyZXBvX2NvbmZpZyhyZW1vdGUuJHIudXJsKX1dfSB7Ci0JCQlpZiB7IVtjYXRjaCB7c2V0IGEgJHJlcG9fY29uZmlnKHJlbW90ZS4kci5mZXRjaCl9XX0gewotCQkJCXNldCBlbmFibGUgMQotCQkJfQotCQl9IGVsc2UgewotCQkJY2F0Y2ggewotCQkJCXNldCBmZCBbb3BlbiBbZ2l0ZGlyIHJlbW90ZXMgJHJdIHJdCi0JCQkJd2hpbGUge1tnZXRzICRmZCBuXSA+PSAwfSB7Ci0JCQkJCWlmIHtbcmVnZXhwIHteUHVsbDpbIFx0XSooW146XSspOn0gJG5dfSB7Ci0JCQkJCQlzZXQgZW5hYmxlIDEKLQkJCQkJCWJyZWFrCi0JCQkJCX0KKwlzZXQgcmVtb3ZlX20gJHJlbW90ZV9tLnJlbW92ZQorCXNldCBlbmFibGUgMAorCWlmIHshW2NhdGNoIHtzZXQgYSAkcmVwb19jb25maWcocmVtb3RlLiRyLnVybCl9XX0geworCQlpZiB7IVtjYXRjaCB7c2V0IGEgJHJlcG9fY29uZmlnKHJlbW90ZS4kci5mZXRjaCl9XX0geworCQkJc2V0IGVuYWJsZSAxCisJCX0KKwl9IGVsc2UgeworCQljYXRjaCB7CisJCQlzZXQgZmQgW29wZW4gW2dpdGRpciByZW1vdGVzICRyXSByXQorCQkJd2hpbGUge1tnZXRzICRmZCBuXSA+PSAwfSB7CisJCQkJaWYge1tyZWdleHAge15QdWxsOlsgXHRdKihbXjpdKyk6fSAkbl19IHsKKwkJCQkJc2V0IGVuYWJsZSAxCisJCQkJCWJyZWFrCiAJCQkJfQotCQkJCWNsb3NlICRmZAogCQkJfQorCQkJY2xvc2UgJGZkCisJCX0KKwl9CisKKwlpZiB7JGVuYWJsZX0geworCQlpZiB7IVt3aW5mbyBleGlzdHMgJGZldGNoX21dfSB7CisJCQltZW51ICRyZW1vdmVfbQorCQkJJHJlbW90ZV9tIGluc2VydCAwIGNhc2NhZGUgXAorCQkJCS1sYWJlbCBbbWMgIlJlbW92ZSBSZW1vdGUiXSBcCisJCQkJLW1lbnUgJHJlbW92ZV9tCisKKwkJCW1lbnUgJHBydW5lX20KKwkJCSRyZW1vdGVfbSBpbnNlcnQgMCBjYXNjYWRlIFwKKwkJCQktbGFiZWwgW21jICJQcnVuZSBmcm9tIl0gXAorCQkJCS1tZW51ICRwcnVuZV9tCisKKwkJCW1lbnUgJGZldGNoX20KKwkJCSRyZW1vdGVfbSBpbnNlcnQgMCBjYXNjYWRlIFwKKwkJCQktbGFiZWwgW21jICJGZXRjaCBmcm9tIl0gXAorCQkJCS1tZW51ICRmZXRjaF9tCiAJCX0KIAotCQlpZiB7JGVuYWJsZX0gewotCQkJaWYgeyFbd2luZm8gZXhpc3RzICRmZXRjaF9tXX0gewotCQkJCW1lbnUgJHBydW5lX20KLQkJCQkkcmVtb3RlX20gaW5zZXJ0IDAgY2FzY2FkZSBcCi0JCQkJCS1sYWJlbCBbbWMgIlBydW5lIGZyb20iXSBcCi0JCQkJCS1tZW51ICRwcnVuZV9tCi0KLQkJCQltZW51ICRmZXRjaF9tCi0JCQkJJHJlbW90ZV9tIGluc2VydCAwIGNhc2NhZGUgXAotCQkJCQktbGFiZWwgW21jICJGZXRjaCBmcm9tIl0gXAotCQkJCQktbWVudSAkZmV0Y2hfbQotCQkJfQotCi0JCQkkZmV0Y2hfbSBhZGQgY29tbWFuZCBcCi0JCQkJLWxhYmVsICRyIFwKLQkJCQktY29tbWFuZCBbbGlzdCBmZXRjaF9mcm9tICRyXQotCQkJJHBydW5lX20gYWRkIGNvbW1hbmQgXAotCQkJCS1sYWJlbCAkciBcCi0JCQkJLWNvbW1hbmQgW2xpc3QgcHJ1bmVfZnJvbSAkcl0KLQkJfQorCQkkZmV0Y2hfbSBhZGQgY29tbWFuZCBcCisJCQktbGFiZWwgJHIgXAorCQkJLWNvbW1hbmQgW2xpc3QgZmV0Y2hfZnJvbSAkcl0KKwkJJHBydW5lX20gYWRkIGNvbW1hbmQgXAorCQkJLWxhYmVsICRyIFwKKwkJCS1jb21tYW5kIFtsaXN0IHBydW5lX2Zyb20gJHJdCisJCSRyZW1vdmVfbSBhZGQgY29tbWFuZCBcCisJCQktbGFiZWwgJHIgXAorCQkJLWNvbW1hbmQgW2xpc3QgcmVtb3ZlX3JlbW90ZSAkcl0KIAl9CiB9CiAKLXByb2MgcG9wdWxhdGVfcHVzaF9tZW51IHt9IHsKLQlnbG9iYWwgYWxsX3JlbW90ZXMgcmVwb19jb25maWcKLQorcHJvYyBhZGRfcHVzaF9lbnRyeSB7cn0geworCWdsb2JhbCByZXBvX2NvbmZpZwogCXNldCByZW1vdGVfbSAubWJhci5yZW1vdGUKIAlzZXQgcHVzaF9tICRyZW1vdGVfbS5wdXNoCi0KLQlmb3JlYWNoIHIgJGFsbF9yZW1vdGVzIHsKLQkJc2V0IGVuYWJsZSAwCi0JCWlmIHshW2NhdGNoIHtzZXQgYSAkcmVwb19jb25maWcocmVtb3RlLiRyLnVybCl9XX0gewotCQkJaWYgeyFbY2F0Y2gge3NldCBhICRyZXBvX2NvbmZpZyhyZW1vdGUuJHIucHVzaCl9XX0gewotCQkJCXNldCBlbmFibGUgMQotCQkJfQotCQl9IGVsc2UgewotCQkJY2F0Y2ggewotCQkJCXNldCBmZCBbb3BlbiBbZ2l0ZGlyIHJlbW90ZXMgJHJdIHJdCi0JCQkJd2hpbGUge1tnZXRzICRmZCBuXSA+PSAwfSB7Ci0JCQkJCWlmIHtbcmVnZXhwIHteUHVzaDpbIFx0XSooW146XSspOn0gJG5dfSB7Ci0JCQkJCQlzZXQgZW5hYmxlIDEKLQkJCQkJCWJyZWFrCi0JCQkJCX0KLQkJCQl9Ci0JCQkJY2xvc2UgJGZkCi0JCQl9CisJc2V0IGVuYWJsZSAwCisJaWYgeyFbY2F0Y2gge3NldCBhICRyZXBvX2NvbmZpZyhyZW1vdGUuJHIudXJsKX1dfSB7CisJCWlmIHshW2NhdGNoIHtzZXQgYSAkcmVwb19jb25maWcocmVtb3RlLiRyLnB1c2gpfV19IHsKKwkJCXNldCBlbmFibGUgMQogCQl9Ci0KLQkJaWYgeyRlbmFibGV9IHsKLQkJCWlmIHshW3dpbmZvIGV4aXN0cyAkcHVzaF9tXX0gewotCQkJCW1lbnUgJHB1c2hfbQotCQkJCSRyZW1vdGVfbSBpbnNlcnQgMCBjYXNjYWRlIFwKLQkJCQkJLWxhYmVsIFttYyAiUHVzaCB0byJdIFwKLQkJCQkJLW1lbnUgJHB1c2hfbQorCX0gZWxzZSB7CisJCWNhdGNoIHsKKwkJCXNldCBmZCBbb3BlbiBbZ2l0ZGlyIHJlbW90ZXMgJHJdIHJdCisJCQl3aGlsZSB7W2dldHMgJGZkIG5dID49IDB9IHsKKwkJCQlpZiB7W3JlZ2V4cCB7XlB1c2g6WyBcdF0qKFteOl0rKTp9ICRuXX0geworCQkJCQlzZXQgZW5hYmxlIDEKKwkJCQkJYnJlYWsKKwkJCQl9CiAJCQl9Ci0KLQkJCSRwdXNoX20gYWRkIGNvbW1hbmQgXAotCQkJCS1sYWJlbCAkciBcCi0JCQkJLWNvbW1hbmQgW2xpc3QgcHVzaF90byAkcl0KKwkJCWNsb3NlICRmZAogCQl9CiAJfQorCisJaWYgeyRlbmFibGV9IHsKKwkJaWYgeyFbd2luZm8gZXhpc3RzICRwdXNoX21dfSB7CisJCQltZW51ICRwdXNoX20KKwkJCSRyZW1vdGVfbSBpbnNlcnQgMCBjYXNjYWRlIFwKKwkJCQktbGFiZWwgW21jICJQdXNoIHRvIl0gXAorCQkJCS1tZW51ICRwdXNoX20KKwkJfQorCisJCSRwdXNoX20gYWRkIGNvbW1hbmQgXAorCQkJLWxhYmVsICRyIFwKKwkJCS1jb21tYW5kIFtsaXN0IHB1c2hfdG8gJHJdCisJfQorfQorCitwcm9jIHBvcHVsYXRlX3JlbW90ZXNfbWVudSB7fSB7CisJZ2xvYmFsIGFsbF9yZW1vdGVzCisKKwlmb3JlYWNoIHIgJGFsbF9yZW1vdGVzIHsKKwkJYWRkX2ZldGNoX2VudHJ5ICRyCisJCWFkZF9wdXNoX2VudHJ5ICRyCisJfQorfQorCitwcm9jIGFkZF9zaW5nbGVfcmVtb3RlIHtuYW1lIGxvY2F0aW9ufSB7CisJZ2xvYmFsIGFsbF9yZW1vdGVzIHJlcG9fY29uZmlnCisJbGFwcGVuZCBhbGxfcmVtb3RlcyAkbmFtZQorCisJZ2l0IHJlbW90ZSBhZGQgJG5hbWUgJGxvY2F0aW9uCisKKwkjIFhYWDogQmV0dGVyIHJlLXJlYWQgdGhlIGNvbmZpZyBzbyB0aGF0IHdlIHdpbGwgbmV2ZXIgZ2V0IG91dAorCSMgb2Ygc3luYyB3aXRoIGdpdCByZW1vdGUgaW1wbGVtZW50YXRpb24/CisJc2V0IHJlcG9fY29uZmlnKHJlbW90ZS4kbmFtZS51cmwpICRsb2NhdGlvbgorCXNldCByZXBvX2NvbmZpZyhyZW1vdGUuJG5hbWUuZmV0Y2gpICIrcmVmcy9oZWFkcy8qOnJlZnMvcmVtb3Rlcy8kbmFtZS8qIgorCisJYWRkX2ZldGNoX2VudHJ5ICRuYW1lCisJYWRkX3B1c2hfZW50cnkgJG5hbWUKK30KKworcHJvYyBkZWxldGVfZnJvbV9tZW51IHttZW51IG5hbWV9IHsKKwlpZiB7W3dpbmZvIGV4aXN0cyAkbWVudV19IHsKKwkJJG1lbnUgZGVsZXRlICRuYW1lCisJfQorfQorCitwcm9jIHJlbW92ZV9yZW1vdGUge25hbWV9IHsKKwlnbG9iYWwgYWxsX3JlbW90ZXMgcmVwb19jb25maWcKKworCWdpdCByZW1vdGUgcm0gJG5hbWUKKworCWNhdGNoIHsKKwkJIyBNaXNzaW5nIHZhbHVlcyBhcmUgb2sKKwkJdW5zZXQgcmVwb19jb25maWcocmVtb3RlLiRuYW1lLnVybCkKKwkJdW5zZXQgcmVwb19jb25maWcocmVtb3RlLiRuYW1lLmZldGNoKQorCQl1bnNldCByZXBvX2NvbmZpZyhyZW1vdGUuJG5hbWUucHVzaCkKKwl9CisKKwlzZXQgaSBbbHNlYXJjaCAtZXhhY3QgYWxsX3JlbW90ZXMgJG5hbWVdCisJbHJlcGxhY2UgYWxsX3JlbW90ZXMgJGkgJGkKKworCXNldCByZW1vdGVfbSAubWJhci5yZW1vdGUKKwlkZWxldGVfZnJvbV9tZW51ICRyZW1vdGVfbS5mZXRjaCAkbmFtZQorCWRlbGV0ZV9mcm9tX21lbnUgJHJlbW90ZV9tLnBydW5lICRuYW1lCisJZGVsZXRlX2Zyb21fbWVudSAkcmVtb3RlX20ucmVtb3ZlICRuYW1lCisJIyBOb3QgYWxsIHJlbW90ZXMgYXJlIGluIHRoZSBwdXNoIG1lbnUKKwljYXRjaCB7IGRlbGV0ZV9mcm9tX21lbnUgJHJlbW90ZV9tLnB1c2ggJG5hbWUgfQogfQpkaWZmIC0tZ2l0IGEvZ2l0LWd1aS9saWIvcmVtb3RlX2FkZC50Y2wgYi9naXQtZ3VpL2xpYi9yZW1vdGVfYWRkLnRjbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjI5NDIyCi0tLSAvZGV2L251bGwKKysrIGIvZ2l0LWd1aS9saWIvcmVtb3RlX2FkZC50Y2wKQEAgLTAsMCArMSwxOTEgQEAKKyMgZ2l0LWd1aSByZW1vdGUgYWRkaW5nIHN1cHBvcnQKKyMgQ29weXJpZ2h0IChDKSAyMDA4IFBldHIgQmF1ZGlzCisKK2NsYXNzIHJlbW90ZV9hZGQgeworCitmaWVsZCB3ICAgICAgICAgICAgICA7ICMgd2lkZ2V0IHBhdGgKK2ZpZWxkIHdfbmFtZSAgICAgICAgIDsgIyBuZXcgcmVtb3RlIG5hbWUgd2lkZ2V0CitmaWVsZCB3X2xvYyAgICAgICAgICA7ICMgbmV3IHJlbW90ZSBsb2NhdGlvbiB3aWRnZXQKKworZmllbGQgbmFtZSAgICAgICAgIHt9OyAjIG5hbWUgb2YgdGhlIHJlbW90ZSB0aGUgdXNlciBoYXMgY2hvc2VuCitmaWVsZCBsb2NhdGlvbiAgICAge307ICMgbG9jYXRpb24gb2YgdGhlIHJlbW90ZSB0aGUgdXNlciBoYXMgY2hvc2VuCisKK2ZpZWxkIG9wdF9hY3Rpb24gZmV0Y2g7ICMgYWN0aW9uIHRvIGRvIGFmdGVyIHJlZ2lzdGVyaW5nIHRoZSByZW1vdGUgbG9jYWxseQorCitjb25zdHJ1Y3RvciBkaWFsb2cge30geworCWdsb2JhbCByZXBvX2NvbmZpZworCisJbWFrZV90b3BsZXZlbCB0b3AgdworCXdtIHRpdGxlICR0b3AgW2FwcGVuZCAiW2FwcG5hbWVdIChbcmVwb25hbWVdKTogIiBbbWMgIkFkZCBSZW1vdGUiXV0KKwlpZiB7JHRvcCBuZSB7Ln19IHsKKwkJd20gZ2VvbWV0cnkgJHRvcCAiK1t3aW5mbyByb290eCAuXStbd2luZm8gcm9vdHkgLl0iCisJfQorCisJbGFiZWwgJHcuaGVhZGVyIC10ZXh0IFttYyAiQWRkIE5ldyBSZW1vdGUiXSAtZm9udCBmb250X3VpYm9sZAorCXBhY2sgJHcuaGVhZGVyIC1zaWRlIHRvcCAtZmlsbCB4CisKKwlmcmFtZSAkdy5idXR0b25zCisJYnV0dG9uICR3LmJ1dHRvbnMuY3JlYXRlIC10ZXh0IFttYyBBZGRdIFwKKwkJLWRlZmF1bHQgYWN0aXZlIFwKKwkJLWNvbW1hbmQgW2NiIF9hZGRdCisJcGFjayAkdy5idXR0b25zLmNyZWF0ZSAtc2lkZSByaWdodAorCWJ1dHRvbiAkdy5idXR0b25zLmNhbmNlbCAtdGV4dCBbbWMgQ2FuY2VsXSBcCisJCS1jb21tYW5kIFtsaXN0IGRlc3Ryb3kgJHddCisJcGFjayAkdy5idXR0b25zLmNhbmNlbCAtc2lkZSByaWdodCAtcGFkeCA1CisJcGFjayAkdy5idXR0b25zIC1zaWRlIGJvdHRvbSAtZmlsbCB4IC1wYWR5IDEwIC1wYWR4IDEwCisKKwlsYWJlbGZyYW1lICR3LmRlc2MgLXRleHQgW21jICJSZW1vdGUgRGV0YWlscyJdCisKKwlsYWJlbCAkdy5kZXNjLm5hbWVfbCAtdGV4dCBbbWMgIk5hbWU6Il0KKwlzZXQgd19uYW1lICR3LmRlc2MubmFtZV90CisJZW50cnkgJHdfbmFtZSBcCisJCS1ib3JkZXJ3aWR0aCAxIFwKKwkJLXJlbGllZiBzdW5rZW4gXAorCQktd2lkdGggNDAgXAorCQktdGV4dHZhcmlhYmxlIEBuYW1lIFwKKwkJLXZhbGlkYXRlIGtleSBcCisJCS12YWxpZGF0ZWNvbW1hbmQgW2NiIF92YWxpZGF0ZV9uYW1lICVkICVTXQorCWdyaWQgJHcuZGVzYy5uYW1lX2wgJHdfbmFtZSAtc3RpY2t5IHdlIC1wYWR4IHswIDV9CisKKwlsYWJlbCAkdy5kZXNjLmxvY19sIC10ZXh0IFttYyAiTG9jYXRpb246Il0KKwlzZXQgd19sb2MgJHcuZGVzYy5sb2NfdAorCWVudHJ5ICR3X2xvYyBcCisJCS1ib3JkZXJ3aWR0aCAxIFwKKwkJLXJlbGllZiBzdW5rZW4gXAorCQktd2lkdGggNDAgXAorCQktdGV4dHZhcmlhYmxlIEBsb2NhdGlvbgorCWdyaWQgJHcuZGVzYy5sb2NfbCAkd19sb2MgLXN0aWNreSB3ZSAtcGFkeCB7MCA1fQorCisJZ3JpZCBjb2x1bW5jb25maWd1cmUgJHcuZGVzYyAxIC13ZWlnaHQgMQorCXBhY2sgJHcuZGVzYyAtYW5jaG9yIG53IC1maWxsIHggLXBhZHkgNSAtcGFkeCA1CisKKwlsYWJlbGZyYW1lICR3LmFjdGlvbiAtdGV4dCBbbWMgIkZ1cnRoZXIgQWN0aW9uIl0KKworCXJhZGlvYnV0dG9uICR3LmFjdGlvbi5mZXRjaCBcCisJCS10ZXh0IFttYyAiRmV0Y2ggSW1tZWRpYXRlbHkiXSBcCisJCS12YWx1ZSBmZXRjaCBcCisJCS12YXJpYWJsZSBAb3B0X2FjdGlvbgorCXBhY2sgJHcuYWN0aW9uLmZldGNoIC1hbmNob3IgbncKKworCXJhZGlvYnV0dG9uICR3LmFjdGlvbi5wdXNoIFwKKwkJLXRleHQgW21jICJJbml0aWFsaXplIFJlbW90ZSBSZXBvc2l0b3J5IGFuZCBQdXNoIl0gXAorCQktdmFsdWUgcHVzaCBcCisJCS12YXJpYWJsZSBAb3B0X2FjdGlvbgorCXBhY2sgJHcuYWN0aW9uLnB1c2ggLWFuY2hvciBudworCisJcmFkaW9idXR0b24gJHcuYWN0aW9uLm5vbmUgXAorCQktdGV4dCBbbWMgIkRvIE5vdGhpbmcgRWxzZSBOb3ciXSBcCisJCS12YWx1ZSBub25lIFwKKwkJLXZhcmlhYmxlIEBvcHRfYWN0aW9uCisJcGFjayAkdy5hY3Rpb24ubm9uZSAtYW5jaG9yIG53CisKKwlncmlkIGNvbHVtbmNvbmZpZ3VyZSAkdy5hY3Rpb24gMSAtd2VpZ2h0IDEKKwlwYWNrICR3LmFjdGlvbiAtYW5jaG9yIG53IC1maWxsIHggLXBhZHkgNSAtcGFkeCA1CisKKwliaW5kICR3IDxWaXNpYmlsaXR5PiBbY2IgX3Zpc2libGVdCisJYmluZCAkdyA8S2V5LUVzY2FwZT4gW2xpc3QgZGVzdHJveSAkd10KKwliaW5kICR3IDxLZXktUmV0dXJuPiBbY2IgX2FkZF1cO2JyZWFrCisJdGt3YWl0IHdpbmRvdyAkdworfQorCittZXRob2QgX2FkZCB7fSB7CisJZ2xvYmFsIHJlcG9fY29uZmlnIGVudgorCWdsb2JhbCBNMUIKKworCWlmIHskbmFtZSBlcSB7fX0geworCQl0a19tZXNzYWdlQm94IFwKKwkJCS1pY29uIGVycm9yIFwKKwkJCS10eXBlIG9rIFwKKwkJCS10aXRsZSBbd20gdGl0bGUgJHddIFwKKwkJCS1wYXJlbnQgJHcgXAorCQkJLW1lc3NhZ2UgW21jICJQbGVhc2Ugc3VwcGx5IGEgcmVtb3RlIG5hbWUuIl0KKwkJZm9jdXMgJHdfbmFtZQorCQlyZXR1cm4KKwl9CisKKwkjIFhYWDogV2UgYWJ1c2UgY2hlY2stcmVmLWZvcm1hdCBoZXJlLCBidXQKKwkjIHRoYXQgc2hvdWxkIGJlIG9rLgorCWlmIHtbY2F0Y2gge2dpdCBjaGVjay1yZWYtZm9ybWF0ICJyZW1vdGVzLyRuYW1lIn1dfSB7CisJCXRrX21lc3NhZ2VCb3ggXAorCQkJLWljb24gZXJyb3IgXAorCQkJLXR5cGUgb2sgXAorCQkJLXRpdGxlIFt3bSB0aXRsZSAkd10gXAorCQkJLXBhcmVudCAkdyBcCisJCQktbWVzc2FnZSBbbWMgIiclcycgaXMgbm90IGFuIGFjY2VwdGFibGUgcmVtb3RlIG5hbWUuIiAkbmFtZV0KKwkJZm9jdXMgJHdfbmFtZQorCQlyZXR1cm4KKwl9CisKKwlpZiB7W2NhdGNoIHthZGRfc2luZ2xlX3JlbW90ZSAkbmFtZSAkbG9jYXRpb259XX0geworCQl0a19tZXNzYWdlQm94IFwKKwkJCS1pY29uIGVycm9yIFwKKwkJCS10eXBlIG9rIFwKKwkJCS10aXRsZSBbd20gdGl0bGUgJHddIFwKKwkJCS1wYXJlbnQgJHcgXAorCQkJLW1lc3NhZ2UgW21jICJGYWlsZWQgdG8gYWRkIHJlbW90ZSAnJXMnIG9mIGxvY2F0aW9uICclcycuIiAkbmFtZSAkbG9jYXRpb25dCisJCWZvY3VzICR3X25hbWUKKwkJcmV0dXJuCisJfQorCisJc3dpdGNoIC0tICRvcHRfYWN0aW9uIHsKKwlmZXRjaCB7CisJCXNldCBjIFtjb25zb2xlOjpuZXcgXAorCQkJW21jICJmZXRjaCAlcyIgJG5hbWVdIFwKKwkJCVttYyAiRmV0Y2hpbmcgdGhlICVzIiAkbmFtZV1dCisJCWNvbnNvbGU6OmV4ZWMgJGMgW2xpc3QgZ2l0IGZldGNoICRuYW1lXQorCX0KKwlwdXNoIHsKKwkJc2V0IGNtZHMgW2xpc3RdCisKKwkJIyBQYXJzZSB0aGUgbG9jYXRpb24KKwkJaWYgeyBbcmVnZXhwIHsoPzpnaXRcKyk/c3NoOi8vKFteL10rKSgvLispfSAkbG9jYXRpb24geHggaG9zdCBwYXRoXQorCQkgICAgIHx8IFtyZWdleHAgeyhbXjpdW146XSspOiguKyl9ICRsb2NhdGlvbiB4eCBob3N0IHBhdGhdfSB7CisJCQlzZXQgc3NoIHNzaAorCQkJaWYge1tpbmZvIGV4aXN0cyBlbnYoR0lUX1NTSCldfSB7CisJCQkJc2V0IHNzaCAkZW52KEdJVF9TU0gpCisJCQl9CisJCQlsYXBwZW5kIGNtZHMgW2xpc3QgZXhlYyAkc3NoICRob3N0IG1rZGlyIC1wICRsb2NhdGlvbiAmJiBnaXQgLS1naXQtZGlyPSRwYXRoIGluaXQgLS1iYXJlXQorCQl9IGVsc2VpZiB7ICEgW3JlZ2V4cCB7Oi8vfSAkbG9jYXRpb24geHhdIH0geworCQkJbGFwcGVuZCBjbWRzIFtsaXN0IGV4ZWMgbWtkaXIgLXAgJGxvY2F0aW9uXQorCQkJbGFwcGVuZCBjbWRzIFtsaXN0IGV4ZWMgZ2l0IC0tZ2l0LWRpcj0kbG9jYXRpb24gaW5pdCAtLWJhcmVdCisJCX0gZWxzZSB7CisJCQl0a19tZXNzYWdlQm94IFwKKwkJCQktaWNvbiBlcnJvciBcCisJCQkJLXR5cGUgb2sgXAorCQkJCS10aXRsZSBbd20gdGl0bGUgJHddIFwKKwkJCQktcGFyZW50ICR3IFwKKwkJCQktbWVzc2FnZSBbbWMgIkRvIG5vdCBrbm93IGhvdyB0byBpbml0aWFsaXplIHJlcG9zaXRvcnkgYXQgbG9jYXRpb24gJyVzJy4iICRsb2NhdGlvbl0KKwkJCWRlc3Ryb3kgJHcKKwkJCXJldHVybgorCQl9CisKKwkJc2V0IGMgW2NvbnNvbGU6Om5ldyBcCisJCQlbbWMgInB1c2ggJXMiICRuYW1lXSBcCisJCQlbbWMgIlNldHRpbmcgdXAgdGhlICVzIChhdCAlcykiICRuYW1lICRsb2NhdGlvbl1dCisKKwkJbGFwcGVuZCBjbWRzIFtsaXN0IGV4ZWMgZ2l0IHB1c2ggLXYgLS1hbGwgJG5hbWVdCisJCWNvbnNvbGU6OmNoYWluICRjICRjbWRzCisJfQorCW5vbmUgeworCX0KKwl9CisKKwlkZXN0cm95ICR3Cit9CisKK21ldGhvZCBfdmFsaWRhdGVfbmFtZSB7ZCBTfSB7CisJaWYgeyRkID09IDF9IHsKKwkJaWYge1tyZWdleHAge1t+Xjo/KlxbXDAtIF19ICRTXX0geworCQkJcmV0dXJuIDAKKwkJfQorCX0KKwlyZXR1cm4gMQorfQorCittZXRob2QgX3Zpc2libGUge30geworCWdyYWIgJHcKKwkkd19uYW1lIGljdXJzb3IgZW5kCisJZm9jdXMgJHdfbmFtZQorfQorCit9CmRpZmYgLS1naXQgYS9naXQtZ3VpL2xpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2wgYi9naXQtZ3VpL2xpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2wKaW5kZXggYzdiODE0OC4uODllYjBmNyAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9saWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsCisrKyBiL2dpdC1ndWkvbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbApAQCAtMjYsMTIgKzI2LDEyIEBACiAJZ2xvYmFsIGFsbF9yZW1vdGVzIE0xQgogCiAJbWFrZV90b3BsZXZlbCB0b3AgdwotCXdtIHRpdGxlICR0b3AgW2FwcGVuZCAiW2FwcG5hbWVdIChbcmVwb25hbWVdKTogIiBbbWMgIkRlbGV0ZSBSZW1vdGUgQnJhbmNoIl1dCisJd20gdGl0bGUgJHRvcCBbYXBwZW5kICJbYXBwbmFtZV0gKFtyZXBvbmFtZV0pOiAiIFttYyAiRGVsZXRlIEJyYW5jaCBSZW1vdGVseSJdXQogCWlmIHskdG9wIG5lIHsufX0gewogCQl3bSBnZW9tZXRyeSAkdG9wICIrW3dpbmZvIHJvb3R4IC5dK1t3aW5mbyByb290eSAuXSIKIAl9CiAKLQlsYWJlbCAkdy5oZWFkZXIgLXRleHQgW21jICJEZWxldGUgUmVtb3RlIEJyYW5jaCJdIC1mb250IGZvbnRfdWlib2xkCisJbGFiZWwgJHcuaGVhZGVyIC10ZXh0IFttYyAiRGVsZXRlIEJyYW5jaCBSZW1vdGVseSJdIC1mb250IGZvbnRfdWlib2xkCiAJcGFjayAkdy5oZWFkZXIgLXNpZGUgdG9wIC1maWxsIHgKIAogCWZyYW1lICR3LmJ1dHRvbnMKQEAgLTYzLDcgKzYzLDcgQEAKIAkJc2V0IHVybHR5cGUgdXJsCiAJfQogCXJhZGlvYnV0dG9uICR3LmRlc3QudXJsX3IgXAotCQktdGV4dCBbbWMgIkFyYml0cmFyeSBVUkw6Il0gXAorCQktdGV4dCBbbWMgIkFyYml0cmFyeSBMb2NhdGlvbjoiXSBcCiAJCS12YWx1ZSB1cmwgXAogCQktdmFyaWFibGUgQHVybHR5cGUKIAllbnRyeSAkdy5kZXN0LnVybF90IFwKZGlmZiAtLWdpdCBhL2dpdC1ndWkvbGliL3NlYXJjaC50Y2wgYi9naXQtZ3VpL2xpYi9zZWFyY2gudGNsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNzFlOWEKLS0tIC9kZXYvbnVsbAorKysgYi9naXQtZ3VpL2xpYi9zZWFyY2gudGNsCkBAIC0wLDAgKzEsMTk4IEBACisjIGluY3JlbWVudGFsIHNlYXJjaCBwYW5lbAorIyBiYXNlZCBvbiBjb2RlIGZyb20gZ2l0aywgQ29weXJpZ2h0IChDKSBQYXVsIE1hY2tlcnJhcworCitjbGFzcyBzZWFyY2hiYXIgeworCitmaWVsZCB3CitmaWVsZCBjdGV4dAorCitmaWVsZCBzZWFyY2hzdHJpbmcgICB7fQorZmllbGQgY2FzZXNlbnNpdGl2ZSAgMQorZmllbGQgc2VhcmNoZGlybiAgICAgLWZvcndhcmRzCisKK2ZpZWxkIHNtYXJrdG9wCitmaWVsZCBzbWFya2JvdAorCitjb25zdHJ1Y3RvciBuZXcge2lfdyBpX3RleHQgYXJnc30geworCXNldCB3ICAgICAgJGlfdworCXNldCBjdGV4dCAgJGlfdGV4dAorCisJZnJhbWUgICR3CisJbGFiZWwgICR3LmwgICAgICAgLXRleHQgW21jIEZpbmQ6XQorCWVudHJ5ICAkdy5lbnQgLXRleHR2YXJpYWJsZSAke19fdGhpc306OnNlYXJjaHN0cmluZyAtYmFja2dyb3VuZCBsaWdodGdyZWVuCisJYnV0dG9uICR3LmJuICAgICAgLXRleHQgW21jIE5leHRdIC1jb21tYW5kIFtjYiBmaW5kX25leHRdCisJYnV0dG9uICR3LmJwICAgICAgLXRleHQgW21jIFByZXZdIC1jb21tYW5kIFtjYiBmaW5kX3ByZXZdCisJY2hlY2tidXR0b24gJHcuY3MgLXRleHQgW21jIENhc2UtU2Vuc2l0aXZlXSBcCisJCS12YXJpYWJsZSAke19fdGhpc306OmNhc2VzZW5zaXRpdmUgLWNvbW1hbmQgW2NiIF9pbmNyc2VhcmNoXQorCXBhY2sgICAkdy5sICAgLXNpZGUgbGVmdAorCXBhY2sgICAkdy5jcyAgLXNpZGUgcmlnaHQKKwlwYWNrICAgJHcuYnAgIC1zaWRlIHJpZ2h0CisJcGFjayAgICR3LmJuICAtc2lkZSByaWdodAorCXBhY2sgICAkdy5lbnQgLXNpZGUgbGVmdCAtZXhwYW5kIDEgLWZpbGwgeAorCisJZXZhbCBncmlkIGNvbmYgJHcgLXN0aWNreSB3ZSAkYXJncworCWdyaWQgcmVtb3ZlICR3CisKKwl0cmFjZSBhZGQgdmFyaWFibGUgc2VhcmNoc3RyaW5nIHdyaXRlIFtjYiBfaW5jcnNlYXJjaF9jYl0KKwkKKwliaW5kICR3IDxEZXN0cm95PiBbbGlzdCBkZWxldGVfdGhpcyAkdGhpc10KKwlyZXR1cm4gJHRoaXMKK30KKworbWV0aG9kIHNob3cge30geworCWlmIHshW3Zpc2libGUgJHRoaXNdfSB7CisJCWdyaWQgJHcKKwl9CisJZm9jdXMgLWZvcmNlICR3LmVudAorfQorCittZXRob2QgaGlkZSB7fSB7CisJaWYge1t2aXNpYmxlICR0aGlzXX0geworCQlmb2N1cyAkY3RleHQKKwkJZ3JpZCByZW1vdmUgJHcKKwl9Cit9CisKK21ldGhvZCB2aXNpYmxlIHt9IHsKKwlyZXR1cm4gW3dpbmZvIGlzbWFwcGVkICR3XQorfQorCittZXRob2QgZWRpdG9yIHt9IHsKKwlyZXR1cm4gJHcuZW50Cit9CisKK21ldGhvZCBfZ2V0X25ld19hbmNob3Ige30geworCSMgdXNlIHN0YXJ0IG9mIHNlbGVjdGlvbiBpZiBpdCBpcyB2aXNpYmxlLAorCSMgb3IgdGhlIGJvdW5kcyBvZiB0aGUgdmlzaWJsZSBhcmVhCisJc2V0IHRvcCAgICBbJGN0ZXh0IGluZGV4IEAwLDBdCisJc2V0IGJvdHRvbSBbJGN0ZXh0IGluZGV4IEAwLFt3aW5mbyBoZWlnaHQgJGN0ZXh0XV0KKwlzZXQgc2VsICAgIFskY3RleHQgdGFnIHJhbmdlcyBzZWxdCisJaWYgeyRzZWwgbmUge319IHsKKwkJc2V0IHNwb3MgW2xpbmRleCAkc2VsIDBdCisJCWlmIHtbbGluZGV4ICRzcG9zIDBdID49IFtsaW5kZXggJHRvcCAwXSAmJgorCQkgICAgW2xpbmRleCAkc3BvcyAwXSA8PSBbbGluZGV4ICRib3R0b20gMF19IHsKKwkJCXJldHVybiAkc3BvcworCQl9CisJfQorCWlmIHskc2VhcmNoZGlybiBlcSAiLWZvcndhcmRzIn0geworCQlyZXR1cm4gJHRvcAorCX0gZWxzZSB7CisJCXJldHVybiAkYm90dG9tCisJfQorfQorCittZXRob2QgX2dldF93cmFwX2FuY2hvciB7ZGlyfSB7CisJaWYgeyRkaXIgZXEgIi1mb3J3YXJkcyJ9IHsKKwkJcmV0dXJuIDEuMAorCX0gZWxzZSB7CisJCXJldHVybiBlbmQKKwl9Cit9CisKK21ldGhvZCBfZG9fc2VhcmNoIHtzdGFydCB7bWxlbnZhciB7fX0ge2RpciB7fX0ge2VuZGJvdW5kIHt9fX0geworCXNldCBjbWQgW2xpc3QgJGN0ZXh0IHNlYXJjaF0KKwlpZiB7JG1sZW52YXIgbmUge319IHsKKwkJdXB2YXIgJG1sZW52YXIgbWxlbgorCQlsYXBwZW5kIGNtZCAtY291bnQgbWxlbgorCX0KKwlpZiB7ISRjYXNlc2Vuc2l0aXZlfSB7CisJCWxhcHBlbmQgY21kIC1ub2Nhc2UKKwl9CisJaWYgeyRkaXIgZXEge319IHsKKwkJc2V0IGRpciAkc2VhcmNoZGlybgorCX0KKwlsYXBwZW5kIGNtZCAkZGlyIC0tICRzZWFyY2hzdHJpbmcKKwlpZiB7JGVuZGJvdW5kIG5lIHt9fSB7CisJCXNldCBoZXJlIFtldmFsICRjbWQgW2xpc3QgJHN0YXJ0XSBbbGlzdCAkZW5kYm91bmRdXQorCX0gZWxzZSB7CisJCXNldCBoZXJlIFtldmFsICRjbWQgW2xpc3QgJHN0YXJ0XV0KKwkJaWYgeyRoZXJlIGVxIHt9fSB7CisJCQlzZXQgaGVyZSBbZXZhbCAkY21kIFtfZ2V0X3dyYXBfYW5jaG9yICR0aGlzICRkaXJdXQorCQl9CisJfQorCXJldHVybiAkaGVyZQorfQorCittZXRob2QgX2luY3JzZWFyY2hfY2Ige25hbWUgaXggb3B9IHsKKwlhZnRlciBpZGxlIFtjYiBfaW5jcnNlYXJjaF0KK30KKworbWV0aG9kIF9pbmNyc2VhcmNoIHt9IHsKKwkkY3RleHQgdGFnIHJlbW92ZSBmb3VuZCAxLjAgZW5kCisJaWYge1tjYXRjaCB7JGN0ZXh0IGluZGV4IGFuY2hvcn1dfSB7CisJCSRjdGV4dCBtYXJrIHNldCBhbmNob3IgW19nZXRfbmV3X2FuY2hvciAkdGhpc10KKwl9CisJaWYgeyRzZWFyY2hzdHJpbmcgbmUge319IHsKKwkJc2V0IGhlcmUgW19kb19zZWFyY2ggJHRoaXMgYW5jaG9yIG1sZW5dCisJCWlmIHskaGVyZSBuZSB7fX0geworCQkJJGN0ZXh0IHNlZSAkaGVyZQorCQkJJGN0ZXh0IHRhZyByZW1vdmUgc2VsIDEuMCBlbmQKKwkJCSRjdGV4dCB0YWcgYWRkIHNlbCAkaGVyZSAiJGhlcmUgKyAkbWxlbiBjIgorCQkJJHcuZW50IGNvbmZpZ3VyZSAtYmFja2dyb3VuZCBsaWdodGdyZWVuCisJCQlfc2V0X21hcmtzICR0aGlzIDEKKwkJfSBlbHNlIHsKKwkJCSR3LmVudCBjb25maWd1cmUgLWJhY2tncm91bmQgbGlnaHRwaW5rCisJCX0KKwl9Cit9CisKK21ldGhvZCBmaW5kX3ByZXYge30geworCWZpbmRfbmV4dCAkdGhpcyAtYmFja3dhcmRzCit9CisKK21ldGhvZCBmaW5kX25leHQge3tkaXIgLWZvcndhcmRzfX0geworCWZvY3VzICR3LmVudAorCSR3LmVudCBpY3Vyc29yIGVuZAorCXNldCBzZWFyY2hkaXJuICRkaXIKKwkkY3RleHQgbWFyayB1bnNldCBhbmNob3IKKwlpZiB7JHNlYXJjaHN0cmluZyBuZSB7fX0geworCQlzZXQgc3RhcnQgW19nZXRfbmV3X2FuY2hvciAkdGhpc10KKwkJaWYgeyRkaXIgZXEgIi1mb3J3YXJkcyJ9IHsKKwkJCXNldCBzdGFydCAiJHN0YXJ0ICsgMWMiCisJCX0KKwkJc2V0IG1hdGNoIFtfZG9fc2VhcmNoICR0aGlzICRzdGFydCBtbGVuXQorCQkkY3RleHQgdGFnIHJlbW92ZSBzZWwgMS4wIGVuZAorCQlpZiB7JG1hdGNoIG5lIHt9fSB7CisJCQkkY3RleHQgc2VlICRtYXRjaAorCQkJJGN0ZXh0IHRhZyBhZGQgc2VsICRtYXRjaCAiJG1hdGNoICsgJG1sZW4gYyIKKwkJfQorCX0KK30KKworbWV0aG9kIF9tYXJrX3JhbmdlIHtmaXJzdCBsYXN0fSB7CisJc2V0IG1lbmQgJGZpcnN0LjAKKwl3aGlsZSB7MX0geworCQlzZXQgbWF0Y2ggW19kb19zZWFyY2ggJHRoaXMgJG1lbmQgbWxlbiAtZm9yd2FyZHMgJGxhc3QuZW5kXQorCQlpZiB7JG1hdGNoIGVxIHt9fSBicmVhaworCQlzZXQgbWVuZCAiJG1hdGNoICsgJG1sZW4gYyIKKwkJJGN0ZXh0IHRhZyBhZGQgZm91bmQgJG1hdGNoICRtZW5kCisJfQorfQorCittZXRob2QgX3NldF9tYXJrcyB7ZG9hbGx9IHsKKwlzZXQgdG9wbGluZSBbbGluZGV4IFtzcGxpdCBbJGN0ZXh0IGluZGV4IEAwLDBdIC5dIDBdCisJc2V0IGJvdGxpbmUgW2xpbmRleCBbc3BsaXQgWyRjdGV4dCBpbmRleCBAMCxbd2luZm8gaGVpZ2h0ICRjdGV4dF1dIC5dIDBdCisJaWYgeyRkb2FsbCB8fCAkYm90bGluZSA8ICRzbWFya3RvcCB8fCAkdG9wbGluZSA+ICRzbWFya2JvdH0geworCQkjIG5vIG92ZXJsYXAgd2l0aCBwcmV2aW91cworCQlfbWFya19yYW5nZSAkdGhpcyAkdG9wbGluZSAkYm90bGluZQorCQlzZXQgc21hcmt0b3AgJHRvcGxpbmUKKwkJc2V0IHNtYXJrYm90ICRib3RsaW5lCisJfSBlbHNlIHsKKwkJaWYgeyR0b3BsaW5lIDwgJHNtYXJrdG9wfSB7CisJCQlfbWFya19yYW5nZSAkdGhpcyAkdG9wbGluZSBbZXhwciB7JHNtYXJrdG9wLTF9XQorCQkJc2V0IHNtYXJrdG9wICR0b3BsaW5lCisJCX0KKwkJaWYgeyRib3RsaW5lID4gJHNtYXJrYm90fSB7CisJCQlfbWFya19yYW5nZSAkdGhpcyBbZXhwciB7JHNtYXJrYm90KzF9XSAkYm90bGluZQorCQkJc2V0IHNtYXJrYm90ICRib3RsaW5lCisJCX0KKwl9Cit9CisKK21ldGhvZCBzY3JvbGxlZCB7fSB7CisJaWYgeyRzZWFyY2hzdHJpbmcgbmUge319IHsKKwkJYWZ0ZXIgaWRsZSBbY2IgX3NldF9tYXJrcyAwXQorCX0KK30KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dpdC1ndWkvbGliL3NwZWxsY2hlY2sudGNsIGIvZ2l0LWd1aS9saWIvc3BlbGxjaGVjay50Y2wKaW5kZXggYTQ3OWIyZi4uZTYxMjAzMCAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9saWIvc3BlbGxjaGVjay50Y2wKKysrIGIvZ2l0LWd1aS9saWIvc3BlbGxjaGVjay50Y2wKQEAgLTMxNCw2ICszMTQsNyBAQAogbWV0aG9kIF9yZWFkIHt9IHsKIAl3aGlsZSB7W2dldHMgJHNfZmQgbGluZV0gPj0gMH0gewogCQlzZXQgbGluZW5vIFtsaW5kZXggJHNfcGVuZGluZyAwIDBdCisJCXNldCBsaW5lIFtzdHJpbmcgdHJpbSAkbGluZV0KIAogCQlpZiB7JHNfY2xlYXJ9IHsKIAkJCSR3X3RleHQgdGFnIHJlbW92ZSBtaXNzcGVsbGVkICIkbGluZW5vLjAiICIkbGluZW5vLmVuZCIKZGlmZiAtLWdpdCBhL2dpdC1ndWkvbGliL3NzaGtleS50Y2wgYi9naXQtZ3VpL2xpYi9zc2hrZXkudGNsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyYTFhODAKLS0tIC9kZXYvbnVsbAorKysgYi9naXQtZ3VpL2xpYi9zc2hrZXkudGNsCkBAIC0wLDAgKzEsMTI2IEBACisjIGdpdC1ndWkgYWJvdXQgZ2l0LWd1aSBkaWFsb2cKKyMgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IFNoYXduIFBlYXJjZQorCitwcm9jIGZpbmRfc3NoX2tleSB7fSB7CisJZm9yZWFjaCBuYW1lIHt+Ly5zc2gvaWRfZHNhLnB1YiB+Ly5zc2gvaWRfcnNhLnB1YiB+Ly5zc2gvaWRlbnRpdHkucHVifSB7CisJCWlmIHtbZmlsZSBleGlzdHMgJG5hbWVdfSB7CisJCQlzZXQgZmggICAgW29wZW4gJG5hbWUgcl0KKwkJCXNldCBjb250ICBbcmVhZCAkZmhdCisJCQljbG9zZSAkZmgKKwkJCXJldHVybiBbbGlzdCAkbmFtZSAkY29udF0KKwkJfQorCX0KKworCXJldHVybiB7fQorfQorCitwcm9jIGRvX3NzaF9rZXkge30geworCWdsb2JhbCBzc2hrZXlfdGl0bGUgaGF2ZV90azg1IHNzaGtleV9mZAorCisJc2V0IHcgLnNzaGtleV9kaWFsb2cKKwlpZiB7W3dpbmZvIGV4aXN0cyAkd119IHsKKwkJcmFpc2UgJHcKKwkJcmV0dXJuCisJfQorCisJdG9wbGV2ZWwgJHcKKwl3bSB0cmFuc2llbnQgJHcgLgorCisJc2V0IGZpbmZvIFtmaW5kX3NzaF9rZXldCisJaWYgeyRmaW5mbyBlcSB7fX0geworCQlzZXQgc3Noa2V5X3RpdGxlIFttYyAiTm8ga2V5cyBmb3VuZC4iXQorCQlzZXQgZ2VuX3N0YXRlICAgbm9ybWFsCisJfSBlbHNlIHsKKwkJc2V0IHNzaGtleV90aXRsZSBbbWMgIkZvdW5kIGEgcHVibGljIGtleSBpbjogJXMiIFtsaW5kZXggJGZpbmZvIDBdXQorCQlzZXQgZ2VuX3N0YXRlICAgZGlzYWJsZWQKKwl9CisKKwlmcmFtZSAkdy5oZWFkZXIgLXJlbGllZiBmbGF0CisJbGFiZWwgJHcuaGVhZGVyLmxibCAtdGV4dHZhcmlhYmxlIHNzaGtleV90aXRsZSAtYW5jaG9yIHcKKwlidXR0b24gJHcuaGVhZGVyLmdlbiAtdGV4dCBbbWMgIkdlbmVyYXRlIEtleSJdIFwKKwkJLWNvbW1hbmQgW2xpc3QgbWFrZV9zc2hfa2V5ICR3XSAtc3RhdGUgJGdlbl9zdGF0ZQorCXBhY2sgJHcuaGVhZGVyLmxibCAtc2lkZSBsZWZ0IC1leHBhbmQgMSAtZmlsbCB4CisJcGFjayAkdy5oZWFkZXIuZ2VuIC1zaWRlIHJpZ2h0CisJcGFjayAkdy5oZWFkZXIgLWZpbGwgeCAtcGFkeSA1IC1wYWR4IDUKKworCXRleHQgJHcuY29udGVudHMgLXdpZHRoIDYwIC1oZWlnaHQgMTAgLXdyYXAgY2hhciAtcmVsaWVmIHN1bmtlbgorCXBhY2sgJHcuY29udGVudHMgLWZpbGwgYm90aCAtZXhwYW5kIDEKKwlpZiB7JGhhdmVfdGs4NX0geworCQkkdy5jb250ZW50cyBjb25maWd1cmUgLWluYWN0aXZlc2VsZWN0YmFja2dyb3VuZCBkYXJrYmx1ZQorCX0KKworCWZyYW1lICR3LmJ1dHRvbnMKKwlidXR0b24gJHcuYnV0dG9ucy5jbG9zZSAtdGV4dCBbbWMgQ2xvc2VdIFwKKwkJLWRlZmF1bHQgYWN0aXZlIC1jb21tYW5kIFtsaXN0IGRlc3Ryb3kgJHddCisJcGFjayAkdy5idXR0b25zLmNsb3NlIC1zaWRlIHJpZ2h0CisJYnV0dG9uICR3LmJ1dHRvbnMuY29weSAtdGV4dCBbbWMgIkNvcHkgVG8gQ2xpcGJvYXJkIl0gXAorCQktY29tbWFuZCBbbGlzdCB0a190ZXh0Q29weSAkdy5jb250ZW50c10KKwlwYWNrICR3LmJ1dHRvbnMuY29weSAtc2lkZSBsZWZ0CisJcGFjayAkdy5idXR0b25zIC1zaWRlIGJvdHRvbSAtZmlsbCB4IC1wYWR5IDUgLXBhZHggNQorCisJaWYgeyRmaW5mbyBuZSB7fX0geworCQkkdy5jb250ZW50cyBpbnNlcnQgZW5kIFtsaW5kZXggJGZpbmZvIDFdIHNlbAorCX0KKwkkdy5jb250ZW50cyBjb25maWd1cmUgLXN0YXRlIGRpc2FibGVkCisKKwliaW5kICR3IDxWaXNpYmlsaXR5PiAiZ3JhYiAkdzsgZm9jdXMgJHcuYnV0dG9ucy5jbG9zZSIKKwliaW5kICR3IDxLZXktRXNjYXBlPiAiZGVzdHJveSAkdyIKKwliaW5kICR3IDxLZXktUmV0dXJuPiAiZGVzdHJveSAkdyIKKwliaW5kICR3IDxEZXN0cm95PiBraWxsX3NzaGtleQorCXdtIHRpdGxlICR3IFttYyAiWW91ciBPcGVuU1NIIFB1YmxpYyBLZXkiXQorCXRrOjpQbGFjZVdpbmRvdyAkdyB3aWRnZXQgLgorCXRrd2FpdCB3aW5kb3cgJHcKK30KKworcHJvYyBtYWtlX3NzaF9rZXkge3d9IHsKKwlnbG9iYWwgc3Noa2V5X3RpdGxlIHNzaGtleV9vdXRwdXQgc3Noa2V5X2ZkCisKKwlzZXQgc3Noa2V5X3RpdGxlIFttYyAiR2VuZXJhdGluZy4uLiJdCisJJHcuaGVhZGVyLmdlbiBjb25maWd1cmUgLXN0YXRlIGRpc2FibGVkCisKKwlzZXQgY21kbGluZSBbbGlzdCBzaCAtYyB7ZWNobyB8IHNzaC1rZXlnZW4gLXEgLXQgcnNhIC1mIH4vLnNzaC9pZF9yc2EgMj4mMX1dCisKKwlpZiB7W2NhdGNoIHsgc2V0IHNzaGtleV9mZCBbX29wZW5fc3Rkb3V0X3N0ZGVyciAkY21kbGluZV0gfSBlcnJdfSB7CisJCWVycm9yX3BvcHVwIFttYyAiQ291bGQgbm90IHN0YXJ0IHNzaC1rZXlnZW46XG5cbiVzIiAkZXJyXQorCQlyZXR1cm4KKwl9CisKKwlzZXQgc3Noa2V5X291dHB1dCB7fQorCWZjb25maWd1cmUgJHNzaGtleV9mZCAtYmxvY2tpbmcgMAorCWZpbGVldmVudCAkc3Noa2V5X2ZkIHJlYWRhYmxlIFtsaXN0IHJlYWRfc3Noa2V5X291dHB1dCAkc3Noa2V5X2ZkICR3XQorfQorCitwcm9jIGtpbGxfc3Noa2V5IHt9IHsKKwlnbG9iYWwgc3Noa2V5X2ZkCisJaWYgeyFbaW5mbyBleGlzdHMgc3Noa2V5X2ZkXX0gcmV0dXJuCisJY2F0Y2ggeyBraWxsX2ZpbGVfcHJvY2VzcyAkc3Noa2V5X2ZkIH0KKwljYXRjaCB7IGNsb3NlICRzc2hrZXlfZmQgfQorfQorCitwcm9jIHJlYWRfc3Noa2V5X291dHB1dCB7ZmQgd30geworCWdsb2JhbCBzc2hrZXlfZmQgc3Noa2V5X291dHB1dCBzc2hrZXlfdGl0bGUKKworCXNldCBzc2hrZXlfb3V0cHV0ICIkc3Noa2V5X291dHB1dFtyZWFkICRmZF0iCisJaWYgeyFbZW9mICRmZF19IHJldHVybgorCisJZmNvbmZpZ3VyZSAkZmQgLWJsb2NraW5nIDEKKwl1bnNldCBzc2hrZXlfZmQKKworCSR3LmNvbnRlbnRzIGNvbmZpZ3VyZSAtc3RhdGUgbm9ybWFsCisJaWYge1tjYXRjaCB7Y2xvc2UgJGZkfSBlcnJdfSB7CisJCXNldCBzc2hrZXlfdGl0bGUgW21jICJHZW5lcmF0aW9uIGZhaWxlZC4iXQorCQkkdy5jb250ZW50cyBpbnNlcnQgZW5kICRlcnIKKwkJJHcuY29udGVudHMgaW5zZXJ0IGVuZCAiXG4iCisJCSR3LmNvbnRlbnRzIGluc2VydCBlbmQgJHNzaGtleV9vdXRwdXQKKwl9IGVsc2UgeworCQlzZXQgZmluZm8gW2ZpbmRfc3NoX2tleV0KKwkJaWYgeyRmaW5mbyBlcSB7fX0geworCQkJc2V0IHNzaGtleV90aXRsZSBbbWMgIkdlbmVyYXRpb24gc3VjY2VkZWQsIGJ1dCBubyBrZXlzIGZvdW5kLiJdCisJCQkkdy5jb250ZW50cyBpbnNlcnQgZW5kICRzc2hrZXlfb3V0cHV0CisJCX0gZWxzZSB7CisJCQlzZXQgc3Noa2V5X3RpdGxlIFttYyAiWW91ciBrZXkgaXMgaW46ICVzIiBbbGluZGV4ICRmaW5mbyAwXV0KKwkJCSR3LmNvbnRlbnRzIGluc2VydCBlbmQgW2xpbmRleCAkZmluZm8gMV0gc2VsCisJCX0KKwl9CisJJHcuY29udGVudHMgY29uZmlndXJlIC1zdGF0ZSBkaXNhYmxlCit9CmRpZmYgLS1naXQgYS9naXQtZ3VpL2xpYi90b29scy50Y2wgYi9naXQtZ3VpL2xpYi90b29scy50Y2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFlNjNiNgotLS0gL2Rldi9udWxsCisrKyBiL2dpdC1ndWkvbGliL3Rvb2xzLnRjbApAQCAtMCwwICsxLDE1OSBAQAorIyBnaXQtZ3VpIFRvb2xzIG1lbnUgaW1wbGVtZW50YXRpb24KKworcHJvYyB0b29sc19saXN0IHt9IHsKKwlnbG9iYWwgcmVwb19jb25maWcKKworCXNldCBuYW1lcyB7fQorCWZvcmVhY2ggaXRlbSBbYXJyYXkgbmFtZXMgcmVwb19jb25maWcgZ3VpdG9vbC4qLmNtZF0geworCQlsYXBwZW5kIG5hbWVzIFtzdHJpbmcgcmFuZ2UgJGl0ZW0gOCBlbmQtNF0KKwl9CisJcmV0dXJuIFtsc29ydCAkbmFtZXNdCit9CisKK3Byb2MgdG9vbHNfcG9wdWxhdGVfYWxsIHt9IHsKKwlnbG9iYWwgdG9vbHNfbWVudWJhciB0b29sc19tZW51dGJsCisJZ2xvYmFsIHRvb2xzX3RhaWxjbnQKKworCXNldCBtYmFyX2VuZCBbJHRvb2xzX21lbnViYXIgaW5kZXggZW5kXQorCXNldCBtYmFyX2Jhc2UgW2V4cHIgeyRtYmFyX2VuZCAtICR0b29sc190YWlsY250fV0KKwlpZiB7JG1iYXJfYmFzZSA+PSAwfSB7CisJCSR0b29sc19tZW51YmFyIGRlbGV0ZSAwICRtYmFyX2Jhc2UKKwl9CisKKwlhcnJheSB1bnNldCB0b29sc19tZW51dGJsCisKKwlmb3JlYWNoIGZ1bGxuYW1lIFt0b29sc19saXN0XSB7CisJCXRvb2xzX3BvcHVsYXRlX29uZSAkZnVsbG5hbWUKKwl9Cit9CisKK3Byb2MgdG9vbHNfY3JlYXRlX2l0ZW0ge3BhcmVudCBhcmdzfSB7CisJZ2xvYmFsIHRvb2xzX21lbnViYXIgdG9vbHNfdGFpbGNudAorCWlmIHskcGFyZW50IGVxICR0b29sc19tZW51YmFyfSB7CisJCXNldCBwb3MgW2V4cHIge1skcGFyZW50IGluZGV4IGVuZF0tJHRvb2xzX3RhaWxjbnQrMX1dCisJCWV2YWwgW2xpc3QgJHBhcmVudCBpbnNlcnQgJHBvc10gJGFyZ3MKKwl9IGVsc2UgeworCQlldmFsIFtsaXN0ICRwYXJlbnQgYWRkXSAkYXJncworCX0KK30KKworcHJvYyB0b29sc19wb3B1bGF0ZV9vbmUge2Z1bGxuYW1lfSB7CisJZ2xvYmFsIHRvb2xzX21lbnViYXIgdG9vbHNfbWVudXRibCB0b29sc19pZAorCisJaWYgeyFbaW5mbyBleGlzdHMgdG9vbHNfaWRdfSB7CisJCXNldCB0b29sc19pZCAwCisJfQorCisJc2V0IG5hbWVzIFtzcGxpdCAkZnVsbG5hbWUgJy8nXQorCXNldCBwYXJlbnQgJHRvb2xzX21lbnViYXIKKwlmb3Ige3NldCBpIDB9IHskaSA8IFtsbGVuZ3RoICRuYW1lc10tMX0ge2luY3IgaX0geworCQlzZXQgc3VibmFtZSBbam9pbiBbbHJhbmdlICRuYW1lcyAwICRpXSAnLyddCisJCWlmIHtbaW5mbyBleGlzdHMgdG9vbHNfbWVudXRibCgkc3VibmFtZSldfSB7CisJCQlzZXQgcGFyZW50ICR0b29sc19tZW51dGJsKCRzdWJuYW1lKQorCQl9IGVsc2UgeworCQkJc2V0IHN1YmlkICRwYXJlbnQudCR0b29sc19pZAorCQkJdG9vbHNfY3JlYXRlX2l0ZW0gJHBhcmVudCBjYXNjYWRlIFwKKwkJCQkJLWxhYmVsIFtsaW5kZXggJG5hbWVzICRpXSAtbWVudSAkc3ViaWQKKwkJCW1lbnUgJHN1YmlkCisJCQlzZXQgdG9vbHNfbWVudXRibCgkc3VibmFtZSkgJHN1YmlkCisJCQlzZXQgcGFyZW50ICRzdWJpZAorCQkJaW5jciB0b29sc19pZAorCQl9CisJfQorCisJdG9vbHNfY3JlYXRlX2l0ZW0gJHBhcmVudCBjb21tYW5kIFwKKwkJLWxhYmVsIFtsaW5kZXggJG5hbWVzIGVuZF0gXAorCQktY29tbWFuZCBbbGlzdCB0b29sc19leGVjICRmdWxsbmFtZV0KK30KKworcHJvYyB0b29sc19leGVjIHtmdWxsbmFtZX0geworCWdsb2JhbCByZXBvX2NvbmZpZyBlbnYgY3VycmVudF9kaWZmX3BhdGgKKwlnbG9iYWwgY3VycmVudF9icmFuY2ggaXNfZGV0YWNoZWQKKworCWlmIHtbaXNfY29uZmlnX3RydWUgImd1aXRvb2wuJGZ1bGxuYW1lLm5lZWRzZmlsZSJdfSB7CisJCWlmIHskY3VycmVudF9kaWZmX3BhdGggZXEge319IHsKKwkJCWVycm9yX3BvcHVwIFttYyAiUnVubmluZyAlcyByZXF1aXJlcyBhIHNlbGVjdGVkIGZpbGUuIiAkZnVsbG5hbWVdCisJCQlyZXR1cm4KKwkJfQorCX0KKworCWNhdGNoIHsgdW5zZXQgZW52KEFSR1MpIH0KKwljYXRjaCB7IHVuc2V0IGVudihSRVZJU0lPTikgfQorCisJaWYge1tnZXRfY29uZmlnICJndWl0b29sLiRmdWxsbmFtZS5yZXZwcm9tcHQiXSBuZSB7fSB8fAorCSAgICBbZ2V0X2NvbmZpZyAiZ3VpdG9vbC4kZnVsbG5hbWUuYXJncHJvbXB0Il0gbmUge319IHsKKwkJc2V0IGRsZyBbdG9vbHNfYXNrZGxnOjpkaWFsb2cgJGZ1bGxuYW1lXQorCQlpZiB7IVt0b29sc19hc2tkbGc6OmV4ZWN1dGUgJGRsZ119IHsKKwkJCXJldHVybgorCQl9CisJfSBlbHNlaWYge1tpc19jb25maWdfdHJ1ZSAiZ3VpdG9vbC4kZnVsbG5hbWUuY29uZmlybSJdfSB7CisJCWlmIHtbYXNrX3BvcHVwIFttYyAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJ1biAlcz8iICRmdWxsbmFtZV1dIG5lIHt5ZXN9fSB7CisJCQlyZXR1cm4KKwkJfQorCX0KKworCXNldCBlbnYoR0lUX0dVSVRPT0wpICRmdWxsbmFtZQorCXNldCBlbnYoRklMRU5BTUUpICRjdXJyZW50X2RpZmZfcGF0aAorCWlmIHskaXNfZGV0YWNoZWR9IHsKKwkJc2V0IGVudihDVVJfQlJBTkNIKSAiIgorCX0gZWxzZSB7CisJCXNldCBlbnYoQ1VSX0JSQU5DSCkgJGN1cnJlbnRfYnJhbmNoCisJfQorCisJc2V0IGNtZGxpbmUgJHJlcG9fY29uZmlnKGd1aXRvb2wuJGZ1bGxuYW1lLmNtZCkKKwlpZiB7W2lzX2NvbmZpZ190cnVlICJndWl0b29sLiRmdWxsbmFtZS5ub2NvbnNvbGUiXX0geworCQl0b29sc19ydW5fc2lsZW50IFtsaXN0IHNoIC1jICRjbWRsaW5lXSBcCisJCQkJIFtsaXN0IHRvb2xzX2NvbXBsZXRlICRmdWxsbmFtZSB7fV0KKwl9IGVsc2UgeworCQlyZWdzdWIgey99ICRmdWxsbmFtZSB7IC8gfSB0aXRsZQorCQlzZXQgdyBbY29uc29sZTo6bmV3IFwKKwkJCVttYyAiVG9vbDogJXMiICR0aXRsZV0gXAorCQkJW21jICJSdW5uaW5nOiAlcyIgJGNtZGxpbmVdXQorCQljb25zb2xlOjpleGVjICR3IFtsaXN0IHNoIC1jICRjbWRsaW5lXSBcCisJCQkJIFtsaXN0IHRvb2xzX2NvbXBsZXRlICRmdWxsbmFtZSAkd10KKwl9CisKKwl1bnNldCBlbnYoR0lUX0dVSVRPT0wpCisJdW5zZXQgZW52KEZJTEVOQU1FKQorCXVuc2V0IGVudihDVVJfQlJBTkNIKQorCWNhdGNoIHsgdW5zZXQgZW52KEFSR1MpIH0KKwljYXRjaCB7IHVuc2V0IGVudihSRVZJU0lPTikgfQorfQorCitwcm9jIHRvb2xzX3J1bl9zaWxlbnQge2NtZCBhZnRlcn0geworCWxhcHBlbmQgY21kIDI+QDEKKwlzZXQgZmQgW19vcGVuX3N0ZG91dF9zdGRlcnIgJGNtZF0KKworCWZjb25maWd1cmUgJGZkIC1ibG9ja2luZyAwIC10cmFuc2xhdGlvbiBiaW5hcnkKKwlmaWxlZXZlbnQgJGZkIHJlYWRhYmxlIFtsaXN0IHRvb2xzX2NvbnN1bWVfaW5wdXQgJGZkICRhZnRlcl0KK30KKworcHJvYyB0b29sc19jb25zdW1lX2lucHV0IHtmZCBhZnRlcn0geworCXJlYWQgJGZkCisJaWYge1tlb2YgJGZkXX0geworCQlmY29uZmlndXJlICRmZCAtYmxvY2tpbmcgMQorCQlpZiB7W2NhdGNoIHtjbG9zZSAkZmR9XX0geworCQkJdXBsZXZlbCAjMCAkYWZ0ZXIgMAorCQl9IGVsc2UgeworCQkJdXBsZXZlbCAjMCAkYWZ0ZXIgMQorCQl9CisJfQorfQorCitwcm9jIHRvb2xzX2NvbXBsZXRlIHtmdWxsbmFtZSB3IHtvayAxfX0geworCWlmIHskdyBuZSB7fX0geworCQljb25zb2xlOjpkb25lICR3ICRvaworCX0KKworCWlmIHskb2t9IHsKKwkJc2V0IG1zZyBbbWMgIlRvb2wgY29tcGxldGVkIHN1Y2Nlc2Z1bGx5OiAlcyIgJGZ1bGxuYW1lXQorCX0gZWxzZSB7CisJCXNldCBtc2cgW21jICJUb29sIGZhaWxlZDogJXMiICRmdWxsbmFtZV0KKwl9CisKKwlpZiB7W2lzX2NvbmZpZ190cnVlICJndWl0b29sLiRmdWxsbmFtZS5ub3Jlc2NhbiJdfSB7CisJCXVpX3N0YXR1cyAkbXNnCisJfSBlbHNlIHsKKwkJcmVzY2FuIFtsaXN0IHVpX3N0YXR1cyAkbXNnXQorCX0KK30KZGlmZiAtLWdpdCBhL2dpdC1ndWkvbGliL3Rvb2xzX2RsZy50Y2wgYi9naXQtZ3VpL2xpYi90b29sc19kbGcudGNsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmN2YwOGUKLS0tIC9kZXYvbnVsbAorKysgYi9naXQtZ3VpL2xpYi90b29sc19kbGcudGNsCkBAIC0wLDAgKzEsNDIxIEBACisjIGdpdC1ndWkgVG9vbHMgbWVudSBkaWFsb2dzCisKK2NsYXNzIHRvb2xzX2FkZCB7CisKK2ZpZWxkIHcgICAgICAgICAgICAgIDsgIyB3aWRnZXQgcGF0aAorZmllbGQgd19uYW1lICAgICAgICAgOyAjIG5ldyByZW1vdGUgbmFtZSB3aWRnZXQKK2ZpZWxkIHdfY21kICAgICAgICAgIDsgIyBuZXcgcmVtb3RlIGxvY2F0aW9uIHdpZGdldAorCitmaWVsZCBuYW1lICAgICAgICAge307ICMgbmFtZSBvZiB0aGUgdG9vbAorZmllbGQgY29tbWFuZCAgICAgIHt9OyAjIGNvbW1hbmQgdG8gZXhlY3V0ZQorZmllbGQgYWRkX2dsb2JhbCAgICAwOyAjIGFkZCB0byB0aGUgLS1nbG9iYWwgY29uZmlnCitmaWVsZCBub19jb25zb2xlICAgIDA7ICMgZGlzYWJsZSB1c2luZyB0aGUgY29uc29sZQorZmllbGQgbmVlZHNfZmlsZSAgICAwOyAjIGVuc3VyZSBmaWxlbmFtZSBpcyBzZXQKK2ZpZWxkIGNvbmZpcm0gICAgICAgMDsgIyBhc2sgZm9yIGNvbmZpcm1hdGlvbgorZmllbGQgYXNrX2JyYW5jaCAgICAwOyAjIGFzayBmb3IgYSByZXZpc2lvbgorZmllbGQgYXNrX2FyZ3MgICAgICAwOyAjIGFzayBmb3IgYWRkaXRpb25hbCBhcmdzCisKK2NvbnN0cnVjdG9yIGRpYWxvZyB7fSB7CisJZ2xvYmFsIHJlcG9fY29uZmlnCisKKwltYWtlX3RvcGxldmVsIHRvcCB3CisJd20gdGl0bGUgJHRvcCBbYXBwZW5kICJbYXBwbmFtZV0gKFtyZXBvbmFtZV0pOiAiIFttYyAiQWRkIFRvb2wiXV0KKwlpZiB7JHRvcCBuZSB7Ln19IHsKKwkJd20gZ2VvbWV0cnkgJHRvcCAiK1t3aW5mbyByb290eCAuXStbd2luZm8gcm9vdHkgLl0iCisJCXdtIHRyYW5zaWVudCAkdG9wIC4KKwl9CisKKwlsYWJlbCAkdy5oZWFkZXIgLXRleHQgW21jICJBZGQgTmV3IFRvb2wgQ29tbWFuZCJdIC1mb250IGZvbnRfdWlib2xkCisJcGFjayAkdy5oZWFkZXIgLXNpZGUgdG9wIC1maWxsIHgKKworCWZyYW1lICR3LmJ1dHRvbnMKKwljaGVja2J1dHRvbiAkdy5idXR0b25zLmdsb2JhbCBcCisJCS10ZXh0IFttYyAiQWRkIGdsb2JhbGx5Il0gXAorCQktdmFyaWFibGUgQGFkZF9nbG9iYWwKKwlwYWNrICR3LmJ1dHRvbnMuZ2xvYmFsIC1zaWRlIGxlZnQgLXBhZHggNQorCWJ1dHRvbiAkdy5idXR0b25zLmNyZWF0ZSAtdGV4dCBbbWMgQWRkXSBcCisJCS1kZWZhdWx0IGFjdGl2ZSBcCisJCS1jb21tYW5kIFtjYiBfYWRkXQorCXBhY2sgJHcuYnV0dG9ucy5jcmVhdGUgLXNpZGUgcmlnaHQKKwlidXR0b24gJHcuYnV0dG9ucy5jYW5jZWwgLXRleHQgW21jIENhbmNlbF0gXAorCQktY29tbWFuZCBbbGlzdCBkZXN0cm95ICR3XQorCXBhY2sgJHcuYnV0dG9ucy5jYW5jZWwgLXNpZGUgcmlnaHQgLXBhZHggNQorCXBhY2sgJHcuYnV0dG9ucyAtc2lkZSBib3R0b20gLWZpbGwgeCAtcGFkeSAxMCAtcGFkeCAxMAorCisJbGFiZWxmcmFtZSAkdy5kZXNjIC10ZXh0IFttYyAiVG9vbCBEZXRhaWxzIl0KKworCWxhYmVsICR3LmRlc2MubmFtZV9jbW50IC1hbmNob3Igd1wKKwkJLXRleHQgW21jICJVc2UgJy8nIHNlcGFyYXRvcnMgdG8gY3JlYXRlIGEgc3VibWVudSB0cmVlOiJdCisJZ3JpZCB4ICR3LmRlc2MubmFtZV9jbW50IC1zdGlja3kgd2UgLXBhZHggezAgNX0gLXBhZHkgezAgMn0KKwlsYWJlbCAkdy5kZXNjLm5hbWVfbCAtdGV4dCBbbWMgIk5hbWU6Il0KKwlzZXQgd19uYW1lICR3LmRlc2MubmFtZV90CisJZW50cnkgJHdfbmFtZSBcCisJCS1ib3JkZXJ3aWR0aCAxIFwKKwkJLXJlbGllZiBzdW5rZW4gXAorCQktd2lkdGggNDAgXAorCQktdGV4dHZhcmlhYmxlIEBuYW1lIFwKKwkJLXZhbGlkYXRlIGtleSBcCisJCS12YWxpZGF0ZWNvbW1hbmQgW2NiIF92YWxpZGF0ZV9uYW1lICVkICVTXQorCWdyaWQgJHcuZGVzYy5uYW1lX2wgJHdfbmFtZSAtc3RpY2t5IHdlIC1wYWR4IHswIDV9CisKKwlsYWJlbCAkdy5kZXNjLmNtZF9sIC10ZXh0IFttYyAiQ29tbWFuZDoiXQorCXNldCB3X2NtZCAkdy5kZXNjLmNtZF90CisJZW50cnkgJHdfY21kIFwKKwkJLWJvcmRlcndpZHRoIDEgXAorCQktcmVsaWVmIHN1bmtlbiBcCisJCS13aWR0aCA0MCBcCisJCS10ZXh0dmFyaWFibGUgQGNvbW1hbmQKKwlncmlkICR3LmRlc2MuY21kX2wgJHdfY21kIC1zdGlja3kgd2UgLXBhZHggezAgNX0gLXBhZHkgezAgM30KKworCWdyaWQgY29sdW1uY29uZmlndXJlICR3LmRlc2MgMSAtd2VpZ2h0IDEKKwlwYWNrICR3LmRlc2MgLWFuY2hvciBudyAtZmlsbCB4IC1wYWR5IDUgLXBhZHggNQorCisJY2hlY2tidXR0b24gJHcuY29uZmlybSBcCisJCS10ZXh0IFttYyAiU2hvdyBhIGRpYWxvZyBiZWZvcmUgcnVubmluZyJdIFwKKwkJLXZhcmlhYmxlIEBjb25maXJtIC1jb21tYW5kIFtjYiBfY2hlY2tfZW5hYmxlX2RsZ10KKworCWxhYmVsZnJhbWUgJHcuZGxnIC1sYWJlbHdpZGdldCAkdy5jb25maXJtCisKKwljaGVja2J1dHRvbiAkdy5kbGcuYXNrYnJhbmNoIFwKKwkJLXRleHQgW21jICJBc2sgdGhlIHVzZXIgdG8gc2VsZWN0IGEgcmV2aXNpb24gKHNldHMgXCRSRVZJU0lPTikiXSBcCisJCS12YXJpYWJsZSBAYXNrX2JyYW5jaCAtc3RhdGUgZGlzYWJsZWQKKwlwYWNrICR3LmRsZy5hc2ticmFuY2ggLWFuY2hvciB3IC1wYWR4IDE1CisKKwljaGVja2J1dHRvbiAkdy5kbGcuYXNrYXJncyBcCisJCS10ZXh0IFttYyAiQXNrIHRoZSB1c2VyIGZvciBhZGRpdGlvbmFsIGFyZ3VtZW50cyAoc2V0cyBcJEFSR1MpIl0gXAorCQktdmFyaWFibGUgQGFza19hcmdzIC1zdGF0ZSBkaXNhYmxlZAorCXBhY2sgJHcuZGxnLmFza2FyZ3MgLWFuY2hvciB3IC1wYWR4IDE1CisKKwlwYWNrICR3LmRsZyAtYW5jaG9yIG53IC1maWxsIHggLXBhZHkgezAgOH0gLXBhZHggNQorCisJY2hlY2tidXR0b24gJHcubm9jb25zb2xlIFwKKwkJLXRleHQgW21jICJEb24ndCBzaG93IHRoZSBjb21tYW5kIG91dHB1dCB3aW5kb3ciXSBcCisJCS12YXJpYWJsZSBAbm9fY29uc29sZQorCXBhY2sgJHcubm9jb25zb2xlIC1hbmNob3IgdyAtcGFkeCA1CisKKwljaGVja2J1dHRvbiAkdy5uZWVkc2ZpbGUgXAorCQktdGV4dCBbbWMgIlJ1biBvbmx5IGlmIGEgZGlmZiBpcyBzZWxlY3RlZCAoXCRGSUxFTkFNRSBub3QgZW1wdHkpIl0gXAorCQktdmFyaWFibGUgQG5lZWRzX2ZpbGUKKwlwYWNrICR3Lm5lZWRzZmlsZSAtYW5jaG9yIHcgLXBhZHggNQorCisJYmluZCAkdyA8VmlzaWJpbGl0eT4gW2NiIF92aXNpYmxlXQorCWJpbmQgJHcgPEtleS1Fc2NhcGU+IFtsaXN0IGRlc3Ryb3kgJHddCisJYmluZCAkdyA8S2V5LVJldHVybj4gW2NiIF9hZGRdXDticmVhaworCXRrd2FpdCB3aW5kb3cgJHcKK30KKworbWV0aG9kIF9jaGVja19lbmFibGVfZGxnIHt9IHsKKwlpZiB7JGNvbmZpcm19IHsKKwkJJHcuZGxnLmFza2JyYW5jaCBjb25maWd1cmUgLXN0YXRlIG5vcm1hbAorCQkkdy5kbGcuYXNrYXJncyBjb25maWd1cmUgLXN0YXRlIG5vcm1hbAorCX0gZWxzZSB7CisJCSR3LmRsZy5hc2ticmFuY2ggY29uZmlndXJlIC1zdGF0ZSBkaXNhYmxlZAorCQkkdy5kbGcuYXNrYXJncyBjb25maWd1cmUgLXN0YXRlIGRpc2FibGVkCisJfQorfQorCittZXRob2QgX2FkZCB7fSB7CisJZ2xvYmFsIHJlcG9fY29uZmlnCisKKwlpZiB7JG5hbWUgZXEge319IHsKKwkJZXJyb3JfcG9wdXAgW21jICJQbGVhc2Ugc3VwcGx5IGEgbmFtZSBmb3IgdGhlIHRvb2wuIl0KKwkJZm9jdXMgJHdfbmFtZQorCQlyZXR1cm4KKwl9CisKKwlzZXQgaXRlbSAiZ3VpdG9vbC4kbmFtZS5jbWQiCisKKwlpZiB7W2luZm8gZXhpc3RzIHJlcG9fY29uZmlnKCRpdGVtKV19IHsKKwkJZXJyb3JfcG9wdXAgW21jICJUb29sICclcycgYWxyZWFkeSBleGlzdHMuIiAkbmFtZV0KKwkJZm9jdXMgJHdfbmFtZQorCQlyZXR1cm4KKwl9CisKKwlzZXQgY21kIFtsaXN0IGdpdCBjb25maWddCisJaWYgeyRhZGRfZ2xvYmFsfSB7IGxhcHBlbmQgY21kIC0tZ2xvYmFsIH0KKwlzZXQgaXRlbXMge30KKwlpZiB7JG5vX2NvbnNvbGV9IHsgbGFwcGVuZCBpdGVtcyAiZ3VpdG9vbC4kbmFtZS5ub2NvbnNvbGUiIH0KKwlpZiB7JG5lZWRzX2ZpbGV9IHsgbGFwcGVuZCBpdGVtcyAiZ3VpdG9vbC4kbmFtZS5uZWVkc2ZpbGUiIH0KKwlpZiB7JGNvbmZpcm19IHsKKwkJaWYgeyRhc2tfYXJnc30gICB7IGxhcHBlbmQgaXRlbXMgImd1aXRvb2wuJG5hbWUuYXJncHJvbXB0IiB9CisJCWlmIHskYXNrX2JyYW5jaH0geyBsYXBwZW5kIGl0ZW1zICJndWl0b29sLiRuYW1lLnJldnByb21wdCIgfQorCQlpZiB7ISRhc2tfYXJncyAmJiAhJGFza19icmFuY2h9IHsKKwkJCWxhcHBlbmQgaXRlbXMgImd1aXRvb2wuJG5hbWUuY29uZmlybSIKKwkJfQorCX0KKworCWlmIHtbY2F0Y2ggeworCQlldmFsICRjbWQgW2xpc3QgJGl0ZW0gJGNvbW1hbmRdCisJCWZvcmVhY2ggY2l0ZW0gJGl0ZW1zIHsgZXZhbCAkY21kIFtsaXN0ICRjaXRlbSB5ZXNdIH0KKwkgICAgfSBlcnJdfSB7CisJCWVycm9yX3BvcHVwIFttYyAiQ291bGQgbm90IGFkZCB0b29sOlxuJXMiICRlcnJdCisJfSBlbHNlIHsKKwkJc2V0IHJlcG9fY29uZmlnKCRpdGVtKSAkY29tbWFuZAorCQlmb3JlYWNoIGNpdGVtICRpdGVtcyB7IHNldCByZXBvX2NvbmZpZygkY2l0ZW0pIHllcyB9CisKKwkJdG9vbHNfcG9wdWxhdGVfYWxsCisJfQorCisJZGVzdHJveSAkdworfQorCittZXRob2QgX3ZhbGlkYXRlX25hbWUge2QgU30geworCWlmIHskZCA9PSAxfSB7CisJCWlmIHtbcmVnZXhwIHtbfj8qJlxbXDBcIlxcXHtdfSAkU119IHsKKwkJCXJldHVybiAwCisJCX0KKwl9CisJcmV0dXJuIDEKK30KKworbWV0aG9kIF92aXNpYmxlIHt9IHsKKwlncmFiICR3CisJJHdfbmFtZSBpY3Vyc29yIGVuZAorCWZvY3VzICR3X25hbWUKK30KKworfQorCitjbGFzcyB0b29sc19yZW1vdmUgeworCitmaWVsZCB3ICAgICAgICAgICAgICA7ICMgd2lkZ2V0IHBhdGgKK2ZpZWxkIHdfbmFtZXMgICAgICAgIDsgIyBuYW1lIGxpc3QKKworY29uc3RydWN0b3IgZGlhbG9nIHt9IHsKKwlnbG9iYWwgcmVwb19jb25maWcgZ2xvYmFsX2NvbmZpZyBzeXN0ZW1fY29uZmlnCisKKwlsb2FkX2NvbmZpZyAxCisKKwltYWtlX3RvcGxldmVsIHRvcCB3CisJd20gdGl0bGUgJHRvcCBbYXBwZW5kICJbYXBwbmFtZV0gKFtyZXBvbmFtZV0pOiAiIFttYyAiUmVtb3ZlIFRvb2wiXV0KKwlpZiB7JHRvcCBuZSB7Ln19IHsKKwkJd20gZ2VvbWV0cnkgJHRvcCAiK1t3aW5mbyByb290eCAuXStbd2luZm8gcm9vdHkgLl0iCisJCXdtIHRyYW5zaWVudCAkdG9wIC4KKwl9CisKKwlsYWJlbCAkdy5oZWFkZXIgLXRleHQgW21jICJSZW1vdmUgVG9vbCBDb21tYW5kcyJdIC1mb250IGZvbnRfdWlib2xkCisJcGFjayAkdy5oZWFkZXIgLXNpZGUgdG9wIC1maWxsIHgKKworCWZyYW1lICR3LmJ1dHRvbnMKKwlidXR0b24gJHcuYnV0dG9ucy5jcmVhdGUgLXRleHQgW21jIFJlbW92ZV0gXAorCQktZGVmYXVsdCBhY3RpdmUgXAorCQktY29tbWFuZCBbY2IgX3JlbW92ZV0KKwlwYWNrICR3LmJ1dHRvbnMuY3JlYXRlIC1zaWRlIHJpZ2h0CisJYnV0dG9uICR3LmJ1dHRvbnMuY2FuY2VsIC10ZXh0IFttYyBDYW5jZWxdIFwKKwkJLWNvbW1hbmQgW2xpc3QgZGVzdHJveSAkd10KKwlwYWNrICR3LmJ1dHRvbnMuY2FuY2VsIC1zaWRlIHJpZ2h0IC1wYWR4IDUKKwlwYWNrICR3LmJ1dHRvbnMgLXNpZGUgYm90dG9tIC1maWxsIHggLXBhZHkgMTAgLXBhZHggMTAKKworCWZyYW1lICR3Lmxpc3QKKwlzZXQgd19uYW1lcyAkdy5saXN0LmwKKwlsaXN0Ym94ICR3X25hbWVzIFwKKwkJLWhlaWdodCAxMCBcCisJCS13aWR0aCAzMCBcCisJCS1zZWxlY3Rtb2RlIGV4dGVuZGVkIFwKKwkJLWV4cG9ydHNlbGVjdGlvbiBmYWxzZSBcCisJCS15c2Nyb2xsY29tbWFuZCBbbGlzdCAkdy5saXN0LnNieSBzZXRdCisJc2Nyb2xsYmFyICR3Lmxpc3Quc2J5IC1jb21tYW5kIFtsaXN0ICR3Lmxpc3QubCB5dmlld10KKwlwYWNrICR3Lmxpc3Quc2J5IC1zaWRlIHJpZ2h0IC1maWxsIHkKKwlwYWNrICR3Lmxpc3QubCAtc2lkZSBsZWZ0IC1maWxsIGJvdGggLWV4cGFuZCAxCisJcGFjayAkdy5saXN0IC1maWxsIGJvdGggLWV4cGFuZCAxIC1wYWR5IDUgLXBhZHggNQorCisJc2V0IGxvY2FsX2NudCAwCisJZm9yZWFjaCBmdWxsbmFtZSBbdG9vbHNfbGlzdF0geworCQkjIENhbm5vdCBkZWxldGUgc3lzdGVtIHRvb2xzCisJCWlmIHtbaW5mbyBleGlzdHMgc3lzdGVtX2NvbmZpZyhndWl0b29sLiRmdWxsbmFtZS5jbWQpXX0gY29udGludWUKKworCQkkd19uYW1lcyBpbnNlcnQgZW5kICRmdWxsbmFtZQorCQlpZiB7IVtpbmZvIGV4aXN0cyBnbG9iYWxfY29uZmlnKGd1aXRvb2wuJGZ1bGxuYW1lLmNtZCldfSB7CisJCQkkd19uYW1lcyBpdGVtY29uZmlndXJlIGVuZCAtZm9yZWdyb3VuZCBibHVlCisJCQlpbmNyIGxvY2FsX2NudAorCQl9CisJfQorCisJaWYgeyRsb2NhbF9jbnQgPiAwfSB7CisJCWxhYmVsICR3LmNvbG9ybGJsIC1mb3JlZ3JvdW5kIGJsdWUgXAorCQkJLXRleHQgW21jICIoQmx1ZSBkZW5vdGVzIHJlcG9zaXRvcnktbG9jYWwgdG9vbHMpIl0KKwkJcGFjayAkdy5jb2xvcmxibCAtZmlsbCB4IC1wYWR5IDUgLXBhZHggNQorCX0KKworCWJpbmQgJHcgPFZpc2liaWxpdHk+IFtjYiBfdmlzaWJsZV0KKwliaW5kICR3IDxLZXktRXNjYXBlPiBbbGlzdCBkZXN0cm95ICR3XQorCWJpbmQgJHcgPEtleS1SZXR1cm4+IFtjYiBfcmVtb3ZlXVw7YnJlYWsKKwl0a3dhaXQgd2luZG93ICR3Cit9CisKK21ldGhvZCBfcmVtb3ZlIHt9IHsKKwlmb3JlYWNoIGkgWyR3X25hbWVzIGN1cnNlbGVjdGlvbl0geworCQlzZXQgbmFtZSBbJHdfbmFtZXMgZ2V0ICRpXQorCisJCWNhdGNoIHsgZ2l0IGNvbmZpZyAtLXJlbW92ZS1zZWN0aW9uIGd1aXRvb2wuJG5hbWUgfQorCQljYXRjaCB7IGdpdCBjb25maWcgLS1nbG9iYWwgLS1yZW1vdmUtc2VjdGlvbiBndWl0b29sLiRuYW1lIH0KKwl9CisKKwlsb2FkX2NvbmZpZyAwCisJdG9vbHNfcG9wdWxhdGVfYWxsCisKKwlkZXN0cm95ICR3Cit9CisKK21ldGhvZCBfdmlzaWJsZSB7fSB7CisJZ3JhYiAkdworCWZvY3VzICR3X25hbWVzCit9CisKK30KKworY2xhc3MgdG9vbHNfYXNrZGxnIHsKKworZmllbGQgdyAgICAgICAgICAgICAgOyAjIHdpZGdldCBwYXRoCitmaWVsZCB3X3JldiAgICAgICAge307ICMgcmV2aXNpb24gYnJvd3NlcgorZmllbGQgd19hcmdzICAgICAgIHt9OyAjIGFyZ3VtZW50cworCitmaWVsZCBpc19hc2tfYXJncyAgIDA7ICMgaGFzIGFyZ3VtZW50cyBmaWVsZAorZmllbGQgaXNfYXNrX3JldnMgICAwOyAjIGhhcyByZXZpc2lvbiBicm93c2VyCisKK2ZpZWxkIGlzX29rICAgICAgICAgMDsgIyBvayB0byBzdGFydAorZmllbGQgYXJnc3RyICAgICAgIHt9OyAjIGFyZ3VtZW50cworCitjb25zdHJ1Y3RvciBkaWFsb2cge2Z1bGxuYW1lfSB7CisJZ2xvYmFsIE0xQgorCisJc2V0IHRpdGxlIFtnZXRfY29uZmlnICJndWl0b29sLiRmdWxsbmFtZS50aXRsZSJdCisJaWYgeyR0aXRsZSBlcSB7fX0geworCQlyZWdzdWIgey99ICRmdWxsbmFtZSB7IC8gfSB0aXRsZQorCX0KKworCW1ha2VfdG9wbGV2ZWwgdG9wIHcgLWF1dG9kZWxldGUgMAorCXdtIHRpdGxlICR0b3AgW2FwcGVuZCAiW2FwcG5hbWVdIChbcmVwb25hbWVdKTogIiAkdGl0bGVdCisJaWYgeyR0b3AgbmUgey59fSB7CisJCXdtIGdlb21ldHJ5ICR0b3AgIitbd2luZm8gcm9vdHggLl0rW3dpbmZvIHJvb3R5IC5dIgorCQl3bSB0cmFuc2llbnQgJHRvcCAuCisJfQorCisJc2V0IHByb21wdCBbZ2V0X2NvbmZpZyAiZ3VpdG9vbC4kZnVsbG5hbWUucHJvbXB0Il0KKwlpZiB7JHByb21wdCBlcSB7fX0geworCQlzZXQgY29tbWFuZCBbZ2V0X2NvbmZpZyAiZ3VpdG9vbC4kZnVsbG5hbWUuY21kIl0KKwkJc2V0IHByb21wdCBbbWMgIlJ1biBDb21tYW5kOiAlcyIgJGNvbW1hbmRdCisJfQorCisJbGFiZWwgJHcuaGVhZGVyIC10ZXh0ICRwcm9tcHQgLWZvbnQgZm9udF91aWJvbGQKKwlwYWNrICR3LmhlYWRlciAtc2lkZSB0b3AgLWZpbGwgeAorCisJc2V0IGFyZ3Byb21wdCBbZ2V0X2NvbmZpZyAiZ3VpdG9vbC4kZnVsbG5hbWUuYXJncHJvbXB0Il0KKwlzZXQgcmV2cHJvbXB0IFtnZXRfY29uZmlnICJndWl0b29sLiRmdWxsbmFtZS5yZXZwcm9tcHQiXQorCisJc2V0IGlzX2Fza19hcmdzIFtleHByIHskYXJncHJvbXB0IG5lIHt9fV0KKwlzZXQgaXNfYXNrX3JldnMgW2V4cHIgeyRyZXZwcm9tcHQgbmUge319XQorCisJaWYgeyRpc19hc2tfYXJnc30geworCQlpZiB7JGFyZ3Byb21wdCBlcSB7eWVzfSB8fCAkYXJncHJvbXB0IGVxIHt0cnVlfSB8fCAkYXJncHJvbXB0IGVxIHsxfX0geworCQkJc2V0IGFyZ3Byb21wdCBbbWMgIkFyZ3VtZW50cyJdCisJCX0KKworCQlsYWJlbGZyYW1lICR3LmFyZyAtdGV4dCAkYXJncHJvbXB0CisKKwkJc2V0IHdfYXJncyAkdy5hcmcudHh0CisJCWVudHJ5ICR3X2FyZ3MgXAorCQkJLWJvcmRlcndpZHRoIDEgXAorCQkJLXJlbGllZiBzdW5rZW4gXAorCQkJLXdpZHRoIDQwIFwKKwkJCS10ZXh0dmFyaWFibGUgQGFyZ3N0cgorCQlwYWNrICR3X2FyZ3MgLXBhZHggNSAtcGFkeSA1IC1maWxsIGJvdGgKKwkJcGFjayAkdy5hcmcgLWFuY2hvciBudyAtZmlsbCBib3RoIC1wYWR5IDUgLXBhZHggNQorCX0KKworCWlmIHskaXNfYXNrX3JldnN9IHsKKwkJaWYgeyRyZXZwcm9tcHQgZXEge3llc30gfHwgJHJldnByb21wdCBlcSB7dHJ1ZX0gfHwgJHJldnByb21wdCBlcSB7MX19IHsKKwkJCXNldCByZXZwcm9tcHQgW21jICJSZXZpc2lvbiJdCisJCX0KKworCQlpZiB7W2lzX2NvbmZpZ190cnVlICJndWl0b29sLiRmdWxsbmFtZS5yZXZ1bm1lcmdlZCJdfSB7CisJCQlzZXQgd19yZXYgWzo6Y2hvb3NlX3Jldjo6bmV3X3VubWVyZ2VkICR3LnJldiAkcmV2cHJvbXB0XQorCQl9IGVsc2UgeworCQkJc2V0IHdfcmV2IFs6OmNob29zZV9yZXY6Om5ldyAkdy5yZXYgJHJldnByb21wdF0KKwkJfQorCisJCXBhY2sgJHcucmV2IC1hbmNob3IgbncgLWZpbGwgYm90aCAtZXhwYW5kIDEgLXBhZHkgNSAtcGFkeCA1CisJfQorCisJZnJhbWUgJHcuYnV0dG9ucworCWlmIHskaXNfYXNrX3JldnN9IHsKKwkJYnV0dG9uICR3LmJ1dHRvbnMudmlzdWFsaXplIFwKKwkJCS10ZXh0IFttYyBWaXN1YWxpemVdIFwKKwkJCS1jb21tYW5kIFtjYiBfdmlzdWFsaXplXQorCQlwYWNrICR3LmJ1dHRvbnMudmlzdWFsaXplIC1zaWRlIGxlZnQKKwl9CisJYnV0dG9uICR3LmJ1dHRvbnMub2sgXAorCQktdGV4dCBbbWMgT0tdIFwKKwkJLWNvbW1hbmQgW2NiIF9zdGFydF0KKwlwYWNrICR3LmJ1dHRvbnMub2sgLXNpZGUgcmlnaHQKKwlidXR0b24gJHcuYnV0dG9ucy5jYW5jZWwgXAorCQktdGV4dCBbbWMgIkNhbmNlbCJdIFwKKwkJLWNvbW1hbmQgW2NiIF9jYW5jZWxdCisJcGFjayAkdy5idXR0b25zLmNhbmNlbCAtc2lkZSByaWdodCAtcGFkeCA1CisJcGFjayAkdy5idXR0b25zIC1zaWRlIGJvdHRvbSAtZmlsbCB4IC1wYWR5IDEwIC1wYWR4IDEwCisKKwliaW5kICR3IDwkTTFCLUtleS1SZXR1cm4+IFtjYiBfc3RhcnRdCisJYmluZCAkdyA8S2V5LVJldHVybj4gW2NiIF9zdGFydF0KKwliaW5kICR3IDxLZXktRXNjYXBlPiBbY2IgX2NhbmNlbF0KKwl3bSBwcm90b2NvbCAkdyBXTV9ERUxFVEVfV0lORE9XIFtjYiBfY2FuY2VsXQorCisJYmluZCAkdyA8VmlzaWJpbGl0eT4gW2NiIF92aXNpYmxlXQorCXJldHVybiAkdGhpcworfQorCittZXRob2QgZXhlY3V0ZSB7fSB7CisJdGt3YWl0IHdpbmRvdyAkdworCXNldCBydiAkaXNfb2sKKwlkZWxldGVfdGhpcworCXJldHVybiAkcnYKK30KKworbWV0aG9kIF92aXNpYmxlIHt9IHsKKwlncmFiICR3CisJaWYgeyRpc19hc2tfYXJnc30geworCQlmb2N1cyAkd19hcmdzCisJfSBlbHNlaWYgeyRpc19hc2tfcmV2c30geworCQkkd19yZXYgZm9jdXNfZmlsdGVyCisJfQorfQorCittZXRob2QgX2NhbmNlbCB7fSB7CisJd20gcHJvdG9jb2wgJHcgV01fREVMRVRFX1dJTkRPVyB7fQorCWRlc3Ryb3kgJHcKK30KKworbWV0aG9kIF9yZXYge30geworCWlmIHtbY2F0Y2ggeyR3X3JldiBjb21taXRfb3JfZGllfV19IHsKKwkJcmV0dXJuIHt9CisJfQorCXJldHVybiBbJHdfcmV2IGdldF0KK30KKworbWV0aG9kIF92aXN1YWxpemUge30geworCWdsb2JhbCBjdXJyZW50X2JyYW5jaAorCXNldCByZXYgW19yZXYgJHRoaXNdCisJaWYgeyRyZXYgbmUge319IHsKKwkJZG9fZ2l0ayBbbGlzdCAtLWxlZnQtcmlnaHQgIiRjdXJyZW50X2JyYW5jaC4uLiRyZXYiXQorCX0KK30KKworbWV0aG9kIF9zdGFydCB7fSB7CisJZ2xvYmFsIGVudgorCisJaWYgeyRpc19hc2tfcmV2c30geworCQlzZXQgbmFtZSBbX3JldiAkdGhpc10KKwkJaWYgeyRuYW1lIGVxIHt9fSB7CisJCQlyZXR1cm4KKwkJfQorCQlzZXQgZW52KFJFVklTSU9OKSAkbmFtZQorCX0KKworCWlmIHskaXNfYXNrX2FyZ3N9IHsKKwkJc2V0IGVudihBUkdTKSAkYXJnc3RyCisJfQorCisJc2V0IGlzX29rIDEKKwlfY2FuY2VsICR0aGlzCit9CisKK30KZGlmZiAtLWdpdCBhL2dpdC1ndWkvbGliL3RyYW5zcG9ydC50Y2wgYi9naXQtZ3VpL2xpYi90cmFuc3BvcnQudGNsCmluZGV4IDhlNmE5ZDAuLmIxOGQ5YzcgMTAwNjQ0Ci0tLSBhL2dpdC1ndWkvbGliL3RyYW5zcG9ydC50Y2wKKysrIGIvZ2l0LWd1aS9saWIvdHJhbnNwb3J0LnRjbApAQCAtMzMsMTAgKzMzLDE1IEBACiBwcm9jIHN0YXJ0X3B1c2hfYW55d2hlcmVfYWN0aW9uIHt3fSB7CiAJZ2xvYmFsIHB1c2hfdXJsdHlwZSBwdXNoX3JlbW90ZSBwdXNoX3VybCBwdXNoX3RoaW4gcHVzaF90YWdzCiAJZ2xvYmFsIHB1c2hfZm9yY2UKKwlnbG9iYWwgcmVwb19jb25maWcKIAorCXNldCBpc19taXJyb3IgMAogCXNldCByX3VybCB7fQogCXN3aXRjaCAtLSAkcHVzaF91cmx0eXBlIHsKLQlyZW1vdGUge3NldCByX3VybCAkcHVzaF9yZW1vdGV9CisJcmVtb3RlIHsKKwkJc2V0IHJfdXJsICRwdXNoX3JlbW90ZQorCQljYXRjaCB7c2V0IGlzX21pcnJvciAkcmVwb19jb25maWcocmVtb3RlLiRwdXNoX3JlbW90ZS5taXJyb3IpfQorCX0KIAl1cmwge3NldCByX3VybCAkcHVzaF91cmx9CiAJfQogCWlmIHskcl91cmwgZXEge319IHJldHVybgpAQCAtNTMsMjMgKzU4LDI5IEBACiAJCWxhcHBlbmQgY21kIC0tdGFncwogCX0KIAlsYXBwZW5kIGNtZCAkcl91cmwKLQlzZXQgY250IDAKLQlmb3JlYWNoIGkgWyR3LnNvdXJjZS5sIGN1cnNlbGVjdGlvbl0gewotCQlzZXQgYiBbJHcuc291cmNlLmwgZ2V0ICRpXQotCQlsYXBwZW5kIGNtZCAicmVmcy9oZWFkcy8kYjpyZWZzL2hlYWRzLyRiIgotCQlpbmNyIGNudAotCX0KLQlpZiB7JGNudCA9PSAwfSB7Ci0JCXJldHVybgotCX0gZWxzZWlmIHskY250ID09IDF9IHsKLQkJc2V0IHVuaXQgYnJhbmNoCisJaWYgeyRpc19taXJyb3J9IHsKKwkJc2V0IGNvbnMgW2NvbnNvbGU6Om5ldyBcCisJCQlbbWMgInB1c2ggJXMiICRyX3VybF0gXAorCQkJW21jICJNaXJyb3JpbmcgdG8gJXMiICRyX3VybF1dCiAJfSBlbHNlIHsKLQkJc2V0IHVuaXQgYnJhbmNoZXMKLQl9CisJCXNldCBjbnQgMAorCQlmb3JlYWNoIGkgWyR3LnNvdXJjZS5sIGN1cnNlbGVjdGlvbl0geworCQkJc2V0IGIgWyR3LnNvdXJjZS5sIGdldCAkaV0KKwkJCWxhcHBlbmQgY21kICJyZWZzL2hlYWRzLyRiOnJlZnMvaGVhZHMvJGIiCisJCQlpbmNyIGNudAorCQl9CisJCWlmIHskY250ID09IDB9IHsKKwkJCXJldHVybgorCQl9IGVsc2VpZiB7JGNudCA9PSAxfSB7CisJCQlzZXQgdW5pdCBicmFuY2gKKwkJfSBlbHNlIHsKKwkJCXNldCB1bml0IGJyYW5jaGVzCisJCX0KIAotCXNldCBjb25zIFtjb25zb2xlOjpuZXcgXAotCQlbbWMgInB1c2ggJXMiICRyX3VybF0gXAotCQlbbWMgIlB1c2hpbmcgJXMgJXMgdG8gJXMiICRjbnQgJHVuaXQgJHJfdXJsXV0KKwkJc2V0IGNvbnMgW2NvbnNvbGU6Om5ldyBcCisJCQlbbWMgInB1c2ggJXMiICRyX3VybF0gXAorCQkJW21jICJQdXNoaW5nICVzICVzIHRvICVzIiAkY250ICR1bml0ICRyX3VybF1dCisJfQogCWNvbnNvbGU6OmV4ZWMgJGNvbnMgJGNtZAogCWRlc3Ryb3kgJHcKIH0KQEAgLTEzNSw3ICsxNDYsNyBAQAogCQlzZXQgcHVzaF91cmx0eXBlIHVybAogCX0KIAlyYWRpb2J1dHRvbiAkdy5kZXN0LnVybF9yIFwKLQkJLXRleHQgW21jICJBcmJpdHJhcnkgVVJMOiJdIFwKKwkJLXRleHQgW21jICJBcmJpdHJhcnkgTG9jYXRpb246Il0gXAogCQktdmFsdWUgdXJsIFwKIAkJLXZhcmlhYmxlIHB1c2hfdXJsdHlwZQogCWVudHJ5ICR3LmRlc3QudXJsX3QgXApkaWZmIC0tZ2l0IGEvZ2l0LWd1aS9wby9kZS5wbyBiL2dpdC1ndWkvcG8vZGUucG8KaW5kZXggZmE0Mzk0Ny4uYTZmNzMwYiAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9wby9kZS5wbworKysgYi9naXQtZ3VpL3BvL2RlLnBvCkBAIC03LDggKzcsOCBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnaXQtZ3VpXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IFxuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA4LTA4LTAyIDA4OjU4KzAyMDBcbiIKLSJQTy1SZXZpc2lvbi1EYXRlOiAyMDA4LTA4LTAyIDA5OjA5KzAyMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwOC0xMi0wNiAyMDo1MSswMTAwXG4iCisiUE8tUmV2aXNpb24tRGF0ZTogMjAwOC0xMi0wNiAyMToyMiswMTAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBDaHJpc3RpYW4gU3RpbW1pbmcgPHN0aW1taW5nQHR1aGguZGU+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogR2VybWFuXG4iCiAiTUlNRS1WZXJzaW9uOiAxLjBcbiIKQEAgLTg2LDcgKzg2LDE1IEBACiBtc2dpZCAiU2Nhbm5pbmcgZm9yIG1vZGlmaWVkIGZpbGVzIC4uLiIKIG1zZ3N0ciAiTmFjaCBnZcOkbmRlcnRlbiBEYXRlaWVuIHN1Y2hlbi4uLiIKIAotIzogZ2l0LWd1aS5zaDoxMzI0IGxpYi9icm93c2VyLnRjbDoyNDYKKyM6IGdpdC1ndWkuc2g6MTM2NworbXNnaWQgIkNhbGxpbmcgcHJlcGFyZS1jb21taXQtbXNnIGhvb2suLi4iCittc2dzdHIgIkF1ZnJ1ZmVuIGRlciBFaW50cmFnZW4tVm9yYmVyZWl0ZW4tS29udHJvbGxlLi4uIgorCisjOiBnaXQtZ3VpLnNoOjEzODQKK21zZ2lkICJDb21taXQgZGVjbGluZWQgYnkgcHJlcGFyZS1jb21taXQtbXNnIGhvb2suIgorbXNnc3RyICJFaW50cmFnZW4gYWJnZWxlaG50IGR1cmNoIEVpbnRyYWdlbi1Wb3JiZXJlaXRlbi1Lb250cm9sbGUgKMK7cHJlcGFyZS1jb21taXQgaG9va8KrKS4iCisKKyM6IGdpdC1ndWkuc2g6MTU0MiBsaWIvYnJvd3Nlci50Y2w6MjQ2CiBtc2dpZCAiUmVhZHkuIgogbXNnc3RyICJCZXJlaXQuIgogCkBAIC0xMTAsNyArMTE4LDE1IEBACiBtc2dpZCAiU3RhZ2VkIGZvciBjb21taXQsIG1pc3NpbmciCiBtc2dzdHIgIkJlcmVpdGdlc3RlbGx0IHp1bSBFaW50cmFnZW4sIGZlaGxlbmQiCiAKLSM6IGdpdC1ndWkuc2g6MTU5NworIzogZ2l0LWd1aS5zaDoxNjU4Cittc2dpZCAiRmlsZSB0eXBlIGNoYW5nZWQsIG5vdCBzdGFnZWQiCittc2dzdHIgIkRhdGVpdHlwIGdlw6RuZGVydCwgbmljaHQgYmVyZWl0Z2VzdGVsbHQiCisKKyM6IGdpdC1ndWkuc2g6MTY1OQorbXNnaWQgIkZpbGUgdHlwZSBjaGFuZ2VkLCBzdGFnZWQiCittc2dzdHIgIkRhdGVpdHlwIGdlw6RuZGVydCwgYmVyZWl0Z2VzdGVsbHQiCisKKyM6IGdpdC1ndWkuc2g6MTY2MQogbXNnaWQgIlVudHJhY2tlZCwgbm90IHN0YWdlZCIKIG1zZ3N0ciAiTmljaHQgdW50ZXIgVmVyc2lvbnNrb250cm9sbGUsIG5pY2h0IGJlcmVpdGdlc3RlbGx0IgogCkBAIC0xNjIsNyArMTc4LDE1IEBACiBtc2dpZCAiUmVtb3RlIgogbXNnc3RyICJBbmRlcmUgQXJjaGl2ZSIKIAotIzogZ2l0LWd1aS5zaDoxODc5CisjOiBnaXQtZ3VpLnNoOjIyOTMKK21zZ2lkICJUb29scyIKK21zZ3N0ciAiV2Vya3pldWdlIgorCisjOiBnaXQtZ3VpLnNoOjIzMDIKK21zZ2lkICJFeHBsb3JlIFdvcmtpbmcgQ29weSIKK21zZ3N0ciAiQXJiZWl0c2tvcGllIGltIERhdGVpbWFuYWdlciIKKworIzogZ2l0LWd1aS5zaDoyMjQ3CiBtc2dpZCAiQnJvd3NlIEN1cnJlbnQgQnJhbmNoJ3MgRmlsZXMiCiBtc2dzdHIgIkFrdHVlbGxlbiBad2VpZyBkdXJjaGJsw6R0dGVybiIKIApAQCAtMjU5LDcgKzI4MywxNSBAQAogbXNnaWQgIlJlc2V0Li4uIgogbXNnc3RyICJadXLDvGNrc2V0emVuLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIwMDIgZ2l0LWd1aS5zaDoyMzg5CisjOiBnaXQtZ3VpLnNoOjIzNzIKK21zZ2lkICJEb25lIgorbXNnc3RyICJGZXJ0aWciCisKKyM6IGdpdC1ndWkuc2g6MjM3NAorbXNnaWQgIkNvbW1pdEBAdmVyYiIKK21zZ3N0ciAiRWludHJhZ2VuIgorCisjOiBnaXQtZ3VpLnNoOjIzODMgZ2l0LWd1aS5zaDoyNzg2CiBtc2dpZCAiTmV3IENvbW1pdCIKIG1zZ3N0ciAiTmV1ZSBWZXJzaW9uIgogCkBAIC0yOTksMTEgKzMzMSw3IEBACiBtc2dpZCAiU2lnbiBPZmYiCiBtc2dzdHIgIkFiemVpY2huZW4iCiAKLSM6IGdpdC1ndWkuc2g6MjA1MyBnaXQtZ3VpLnNoOjIzNzIKLW1zZ2lkICJDb21taXRAQHZlcmIiCi1tc2dzdHIgIkVpbnRyYWdlbiIKLQotIzogZ2l0LWd1aS5zaDoyMDY0CisjOiBnaXQtZ3VpLnNoOjI0NTgKIG1zZ2lkICJMb2NhbCBNZXJnZS4uLiIKIG1zZ3N0ciAiTG9rYWxlcyBadXNhbW1lbmbDvGhyZW4uLi4iCiAKQEAgLTMxMSwxMSArMzM5LDE5IEBACiBtc2dpZCAiQWJvcnQgTWVyZ2UuLi4iCiBtc2dzdHIgIlp1c2FtbWVuZsO8aHJlbiBhYmJyZWNoZW4uLi4iCiAKLSM6IGdpdC1ndWkuc2g6MjA4MQorIzogZ2l0LWd1aS5zaDoyNDc1Cittc2dpZCAiQWRkLi4uIgorbXNnc3RyICJIaW56dWbDvGdlbi4uLiIKKworIzogZ2l0LWd1aS5zaDoyNDc5CiBtc2dpZCAiUHVzaC4uLiIKIG1zZ3N0ciAiVmVyc2VuZGVuLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIxOTcgZ2l0LWd1aS5zaDoyMjE5IGxpYi9hYm91dC50Y2w6MTQKKyM6IGdpdC1ndWkuc2g6MjQ4MworbXNnaWQgIkRlbGV0ZSBCcmFuY2guLi4iCittc2dzdHIgIlp3ZWlnIGzDtnNjaGVuLi4uIgorCisjOiBnaXQtZ3VpLnNoOjI0OTMgZ2l0LWd1aS5zaDoyNTE1IGxpYi9hYm91dC50Y2w6MTQKICM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkFib3V0ICVzIgpAQCAtMzI5LDcgKzM2NSwxMSBAQAogbXNnaWQgIk9wdGlvbnMuLi4iCiBtc2dzdHIgIk9wdGlvbmVuLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIxMTMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NworIzogZ2l0LWd1aS5zaDoyNTc2Cittc2dpZCAiUmVtb3ZlLi4uIgorbXNnc3RyICJFbnRmZXJuZW4uLi4iCisKKyM6IGdpdC1ndWkuc2g6MjU4NSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwCiBtc2dpZCAiSGVscCIKIG1zZ3N0ciAiSGlsZmUiCiAKQEAgLTMzNyw3ICszNzcsMTEgQEAKIG1zZ2lkICJPbmxpbmUgRG9jdW1lbnRhdGlvbiIKIG1zZ3N0ciAiT25saW5lLURva3VtZW50YXRpb24iCiAKLSM6IGdpdC1ndWkuc2g6MjIzOAorIzogZ2l0LWd1aS5zaDoyNjE0IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDcgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1NgorbXNnaWQgIlNob3cgU1NIIEtleSIKK21zZ3N0ciAiU1NILVNjaGzDvHNzZWwgYW56ZWlnZW4iCisKKyM6IGdpdC1ndWkuc2g6MjcwNwogIywgdGNsLWZvcm1hdAogbXNnaWQgImZhdGFsOiBjYW5ub3Qgc3RhdCBwYXRoICVzOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IgogbXNnc3RyICIiCkBAIC0zOTYsMTUgKzQ0MCw3IEBACiBtc2dpZCAiRmlsZToiCiBtc2dzdHIgIkRhdGVpOiIKIAotIzogZ2l0LWd1aS5zaDoyNTg5Ci1tc2dpZCAiQXBwbHkvUmV2ZXJzZSBIdW5rIgotbXNnc3RyICJLb250ZXh0IGFud2VuZGVuL3Vta2VocmVuIgotCi0jOiBnaXQtZ3VpLnNoOjI2OTYKLW1zZ2lkICJBcHBseS9SZXZlcnNlIExpbmUiCi1tc2dzdHIgIlplaWxlIGFud2VuZGVuL3Vta2VocmVuIgotCi0jOiBnaXQtZ3VpLnNoOjI3MTEKKyM6IGdpdC1ndWkuc2g6MjgzNAogbXNnaWQgIlJlZnJlc2giCiBtc2dzdHIgIkFrdHVhbGlzaWVyZW4iCiAKQEAgLTQxNiw3ICs0NTIsMzUgQEAKIG1zZ2lkICJJbmNyZWFzZSBGb250IFNpemUiCiBtc2dzdHIgIlNjaHJpZnRncsO2w59lIHZlcmdyw7bDn2VybiIKIAotIzogZ2l0LWd1aS5zaDoyNjQ2CisjOiBnaXQtZ3VpLnNoOjMwMzMgbGliL2JsYW1lLnRjbDoyODEKK21zZ2lkICJFbmNvZGluZyIKK21zZ3N0ciAiWmVpY2hlbmtvZGllcnVuZyIKKworIzogZ2l0LWd1aS5zaDozMDQ0Cittc2dpZCAiQXBwbHkvUmV2ZXJzZSBIdW5rIgorbXNnc3RyICJLb250ZXh0IGFud2VuZGVuL3Vta2VocmVuIgorCisjOiBnaXQtZ3VpLnNoOjI4NzUKK21zZ2lkICJBcHBseS9SZXZlcnNlIExpbmUiCittc2dzdHIgIlplaWxlIGFud2VuZGVuL3Vta2VocmVuIgorCisjOiBnaXQtZ3VpLnNoOjI4ODUKK21zZ2lkICJSdW4gTWVyZ2UgVG9vbCIKK21zZ3N0ciAiWnVzYW1tZW5mw7xocnVuZ3N3ZXJremV1ZyIKKworIzogZ2l0LWd1aS5zaDoyODkwCittc2dpZCAiVXNlIFJlbW90ZSBWZXJzaW9uIgorbXNnc3RyICJFbnRmZXJudGUgVmVyc2lvbiBiZW51dHplbiIKKworIzogZ2l0LWd1aS5zaDoyODk0Cittc2dpZCAiVXNlIExvY2FsIFZlcnNpb24iCittc2dzdHIgIkxva2FsZSBWZXJzaW9uIGJlbnV0emVuIgorCisjOiBnaXQtZ3VpLnNoOjI4OTgKK21zZ2lkICJSZXZlcnQgVG8gQmFzZSIKK21zZ3N0ciAiVXJzcHLDvG5nbGljaGUgVmVyc2lvbiBiZW51dHplbiIKKworIzogZ2l0LWd1aS5zaDozMDkxCiBtc2dpZCAiVW5zdGFnZSBIdW5rIEZyb20gQ29tbWl0IgogbXNnc3RyICJLb250ZXh0IGF1cyBCZXJlaXRzdGVsbHVuZyBoZXJhdXNuZWhtZW4iCiAKQEAgLTQ5NCwxMSArNTU4LDIzIEBACiBtc2dpZCAiQ29weSBDb21taXQiCiBtc2dzdHIgIlZlcnNpb24ga29waWVyZW4iCiAKLSM6IGxpYi9ibGFtZS50Y2w6MjYwCisjOiBsaWIvYmxhbWUudGNsOjI3NQorbXNnaWQgIkZpbmQgVGV4dC4uLiIKK21zZ3N0ciAiVGV4dCBzdWNoZW4uLi4iCisKKyM6IGxpYi9ibGFtZS50Y2w6Mjg0CiBtc2dpZCAiRG8gRnVsbCBDb3B5IERldGVjdGlvbiIKIG1zZ3N0ciAiVm9sbGUgS29waWUtRXJrZW5udW5nIgogCi0jOiBsaWIvYmxhbWUudGNsOjM4OAorIzogbGliL2JsYW1lLnRjbDoyNjMKK21zZ2lkICJTaG93IEhpc3RvcnkgQ29udGV4dCIKK21zZ3N0ciAiSGlzdG9yaWVuLUtvbnRleHQgYW56ZWlnZW4iCisKKyM6IGxpYi9ibGFtZS50Y2w6MjY2Cittc2dpZCAiQmxhbWUgUGFyZW50IENvbW1pdCIKK21zZ3N0ciAiRWx0ZXJudmVyc2lvbiBhbm5vdGllcmVuIgorCisjOiBsaWIvYmxhbWUudGNsOjM5NAogIywgdGNsLWZvcm1hdAogbXNnaWQgIlJlYWRpbmcgJXMuLi4iCiBtc2dzdHIgIiVzIGxlc2VuLi4uIgpAQCAtNTQ3LDcgKzYyMywyMyBAQAogbXNnaWQgIk9yaWdpbmFsIEZpbGU6IgogbXNnc3RyICJVcnNwcsO8bmdsaWNoZSBEYXRlaToiCiAKLSM6IGxpYi9ibGFtZS50Y2w6OTI1CisjOiBsaWIvYmxhbWUudGNsOjEwMjEKK21zZ2lkICJDYW5ub3QgZmluZCBIRUFEIGNvbW1pdDoiCittc2dzdHIgIlp3ZWlnc3BpdHplICjCu0hFQUTCqykga2FubiBuaWNodCBnZWZ1bmRlbiB3ZXJkZW46IgorCisjOiBsaWIvYmxhbWUudGNsOjEwNzYKK21zZ2lkICJDYW5ub3QgZmluZCBwYXJlbnQgY29tbWl0OiIKK21zZ3N0ciAiRWx0ZXJudmVyc2lvbiBrYW5uIG5pY2h0IGdlZnVuZGVuIHdlcmRlbjoiCisKKyM6IGxpYi9ibGFtZS50Y2w6MTAwMQorbXNnaWQgIlVuYWJsZSB0byBkaXNwbGF5IHBhcmVudCIKK21zZ3N0ciAiRWx0ZXJudmVyc2lvbiBrYW5uIG5pY2h0IGFuZ2V6ZWlndCB3ZXJkZW4iCisKKyM6IGxpYi9ibGFtZS50Y2w6MTAwMiBsaWIvZGlmZi50Y2w6MTkxCittc2dpZCAiRXJyb3IgbG9hZGluZyBkaWZmOiIKK21zZ3N0ciAiRmVobGVyIGJlaW0gTGFkZW4gZGVzIFZlcmdsZWljaHM6IgorCisjOiBsaWIvYmxhbWUudGNsOjExNDIKIG1zZ2lkICJPcmlnaW5hbGx5IEJ5OiIKIG1zZ3N0ciAiVXJzcHLDvG5nbGljaCB2b246IgogCkBAIC05NzAsNyArMTA2Miw3IEBACiBtc2dpZCAiRmFpbGVkIHRvIGNyZWF0ZSByZXBvc2l0b3J5ICVzOiIKIG1zZ3N0ciAiUHJvamVrdGFyY2hpdiDCuyVzwqsga29ubnRlIG5pY2h0IGVyc3RlbGx0IHdlcmRlbjoiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzgxIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDc4CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM4NwogbXNnaWQgIkRpcmVjdG9yeToiCiBtc2dzdHIgIlZlcnplaWNobmlzOiIKIApAQCAtOTc5LDEyICsxMDcxLDEyIEBACiBtc2dpZCAiR2l0IFJlcG9zaXRvcnkiCiBtc2dzdHIgIkdpdCBQcm9qZWt0YXJjaGl2IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQzNworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NDIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJEaXJlY3RvcnkgJXMgYWxyZWFkeSBleGlzdHMuIgogbXNnc3RyICJWZXJ6ZWljaG5pcyDCuyVzwqsgZXhpc3RpZXJ0IGJlcmVpdHMuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ0MQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NDYKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJGaWxlICVzIGFscmVhZHkgZXhpc3RzLiIKIG1zZ3N0ciAiRGF0ZWkgwrslc8KrIGV4aXN0aWVydCBiZXJlaXRzLiIKQEAgLTk5MywxMSArMTA4NSwxNSBAQAogbXNnaWQgIkNsb25lIgogbXNnc3RyICJLbG9uZW4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDY4Ci1tc2dpZCAiVVJMOiIKLW1zZ3N0ciAiVVJMOiIKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDczCittc2dpZCAiU291cmNlIExvY2F0aW9uOiIKK21zZ3N0ciAiSGVya3VuZnQ6IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ4OQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0ODQKK21zZ2lkICJUYXJnZXQgRGlyZWN0b3J5OiIKK21zZ3N0ciAiWmllbHZlcnplaWNobmlzOiIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0OTAKIG1zZ2lkICJDbG9uZSBUeXBlOiIKIG1zZ3N0ciAiQXJ0IGRlcyBLbG9uZW5zOiIKIApAQCAtMTQ3Nyw3ICsxNTczLDMxIEBACiBtc2dpZCAiTG9hZGluZyBkaWZmIG9mICVzLi4uIgogbXNnc3RyICJWZXJnbGVpY2ggdm9uIMK7JXPCqyBsYWRlbi4uLiIKIAotIzogbGliL2RpZmYudGNsOjExNCBsaWIvZGlmZi50Y2w6MTg0CisjOiBsaWIvZGlmZi50Y2w6MTIwCittc2dpZCAiIgorIkxPQ0FMOiBkZWxldGVkXG4iCisiUkVNT1RFOlxuIgorbXNnc3RyICIiCisiTE9LQUw6IGdlbMO2c2NodFxuIgorIkFOREVSRVM6XG4iCisKKyM6IGxpYi9kaWZmLnRjbDoxMjUKK21zZ2lkICIiCisiUkVNT1RFOiBkZWxldGVkXG4iCisiTE9DQUw6XG4iCittc2dzdHIgIiIKKyJBTkRFUkVTOiBnZWzDtnNjaHRcbiIKKyJMT0tBTDpcbiIKKworIzogbGliL2RpZmYudGNsOjEzMgorbXNnaWQgIkxPQ0FMOlxuIgorbXNnc3RyICJMT0tBTDpcbiIKKworIzogbGliL2RpZmYudGNsOjEzNQorbXNnaWQgIlJFTU9URTpcbiIKK21zZ3N0ciAiQU5ERVJFUzpcbiIKKworIzogbGliL2RpZmYudGNsOjE5NyBsaWIvZGlmZi50Y2w6Mjk2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGRpc3BsYXkgJXMiCiBtc2dzdHIgIkRhdGVpIMK7JXPCqyBrYW5uIG5pY2h0IGFuZ2V6ZWlndCB3ZXJkZW4iCkBAIC0xNDk0LDExICsxNjE0LDI3IEBACiBtc2dpZCAiKiBCaW5hcnkgZmlsZSAobm90IHNob3dpbmcgY29udGVudCkuIgogbXNnc3RyICIqIEJpbsOkcmRhdGVpIChJbmhhbHQgd2lyZCBuaWNodCBhbmdlemVpZ3QpIgogCi0jOiBsaWIvZGlmZi50Y2w6MTg1Ci1tc2dpZCAiRXJyb3IgbG9hZGluZyBkaWZmOiIKLW1zZ3N0ciAiRmVobGVyIGJlaW0gTGFkZW4gZGVzIFZlcmdsZWljaHM6IgorIzogbGliL2RpZmYudGNsOjIyMgorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyIqIFVudHJhY2tlZCBmaWxlIGlzICVkIGJ5dGVzLlxuIgorIiogU2hvd2luZyBvbmx5IGZpcnN0ICVkIGJ5dGVzLlxuIgorbXNnc3RyICIiCisiKiBEYXRlaSBuaWNodCB1bnRlciBWZXJzaW9uc2tvbnRyb2xsZSwgRGF0ZWlncsO2w59lICVkIEJ5dGVzLlxuIgorIiogTnVyIGVyc3RlICVkIEJ5dGVzIHdlcmRlbiBhbmdlemVpZ3QuXG4iCiAKLSM6IGxpYi9kaWZmLnRjbDozMDMKKyM6IGxpYi9kaWZmLnRjbDoyMjgKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiKiBVbnRyYWNrZWQgZmlsZSBjbGlwcGVkIGhlcmUgYnkgJXMuXG4iCisiKiBUbyBzZWUgdGhlIGVudGlyZSBmaWxlLCB1c2UgYW4gZXh0ZXJuYWwgZWRpdG9yLlxuIgorbXNnc3RyICIiCisiXG4iCisiKiBEYXRlaSBuaWNodCB1bnRlciBWZXJzaW9uc2tvbnRyb2xsZSwgaGllciBhYmdlc2Nobml0dGVuIGR1cmNoICVzLlxuIgorIiogWnVtIEFuc2VoZW4gZGVyIHZvbGxzdMOkbmRpZ2VuIERhdGVpIGV4dGVybmVuIEVkaXRvciBiZW51dHplbi5cbiIKKworIzogbGliL2RpZmYudGNsOjQzNgogbXNnaWQgIkZhaWxlZCB0byB1bnN0YWdlIHNlbGVjdGVkIGh1bmsuIgogbXNnc3RyICIiCiAiRmVobGVyIGJlaW0gSGVyYXVzbmVobWVuIGRlcyBnZXfDpGhsdGVuIEtvbnRleHRzIGF1cyBkZXIgQmVyZWl0c3RlbGx1bmcuIgpAQCAtMTUxNSw2ICsxNjUxLDE5IEBACiBtc2dpZCAiRmFpbGVkIHRvIHN0YWdlIHNlbGVjdGVkIGxpbmUuIgogbXNnc3RyICJGZWhsZXIgYmVpbSBCZXJlaXRzdGVsbGVuIGRlciBnZXfDpGhsdGVuIFplaWxlLiIKIAorIzogbGliL2VuY29kaW5nLnRjbDo0NDMKK21zZ2lkICJEZWZhdWx0IgorbXNnc3RyICJWb3JlaW5zdGVsbHVuZyIKKworIzogbGliL2VuY29kaW5nLnRjbDo0NDgKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJTeXN0ZW0gKCVzKSIKK21zZ3N0ciAiU3lzdGVtd2VpdCAoJXMpIgorCisjOiBsaWIvZW5jb2RpbmcudGNsOjQ1OSBsaWIvZW5jb2RpbmcudGNsOjQ2NQorbXNnaWQgIk90aGVyIgorbXNnc3RyICJBbmRlcmUiCisKICM6IGxpYi9lcnJvci50Y2w6MjAgbGliL2Vycm9yLnRjbDoxMTQKIG1zZ2lkICJlcnJvciIKIG1zZ3N0ciAiRmVobGVyIgpAQCAtMTU4Niw2ICsxNzM1LDE1IEBACiBtc2dpZCAiRG8gTm90aGluZyIKIG1zZ3N0ciAiTmljaHRzIHR1biIKIAorIzogbGliL2luZGV4LnRjbDo0MTkKK21zZ2lkICJSZXZlcnRpbmcgc2VsZWN0ZWQgZmlsZXMiCittc2dzdHIgIsOEbmRlcnVuZ2VuIGluIGdld8OkaGx0ZW4gRGF0ZWllbiB2ZXJ3ZXJmZW4iCisKKyM6IGxpYi9pbmRleC50Y2w6NDIzCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiUmV2ZXJ0aW5nICVzIgorbXNnc3RyICLDhG5kZXJ1bmdlbiBpbiAlcyB2ZXJ3ZXJmZW4iCisKICM6IGxpYi9tZXJnZS50Y2w6MTMKIG1zZ2lkICIiCiAiQ2Fubm90IG1lcmdlIHdoaWxlIGFtZW5kaW5nLlxuIgpAQCAtMTczMCw3ICsxODg4LDEwNyBAQAogbXNnaWQgIkFib3J0IGNvbXBsZXRlZC4gIFJlYWR5LiIKIG1zZ3N0ciAiQWJicnVjaCBkdXJjaGdlZsO8aHJ0LiBCZXJlaXQuIgogCi0jOiBsaWIvb3B0aW9uLnRjbDo5NQorIzogbGliL21lcmdldG9vbC50Y2w6MTQKK21zZ2lkICJGb3JjZSByZXNvbHV0aW9uIHRvIHRoZSBiYXNlIHZlcnNpb24/IgorbXNnc3RyICJLb25mbGlrdCBkdXJjaCBCYXNpc3ZlcnNpb24gZXJzZXR6ZW4/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoxNQorbXNnaWQgIkZvcmNlIHJlc29sdXRpb24gdG8gdGhpcyBicmFuY2g/IgorbXNnc3RyICJLb25mbGlrdCBkdXJjaCBkaWVzZW4gWndlaWcgZXJzZXR6ZW4/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoxNgorbXNnaWQgIkZvcmNlIHJlc29sdXRpb24gdG8gdGhlIG90aGVyIGJyYW5jaD8iCittc2dzdHIgIktvbmZsaWt0IGR1cmNoIGFuZGVyZW4gWndlaWcgZXJzZXR6ZW4/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoyMAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJOb3RlIHRoYXQgdGhlIGRpZmYgc2hvd3Mgb25seSBjb25mbGljdGluZyBjaGFuZ2VzLlxuIgorIlxuIgorIiVzIHdpbGwgYmUgb3ZlcndyaXR0ZW4uXG4iCisiXG4iCisiVGhpcyBvcGVyYXRpb24gY2FuIGJlIHVuZG9uZSBvbmx5IGJ5IHJlc3RhcnRpbmcgdGhlIG1lcmdlLiIKK21zZ3N0ciAiIgorIkhpbndlaXM6IERlciBWZXJnbGVpY2ggemVpZ3QgbnVyIGtvbmZsaWt0dmVydXJzYWNoZW5kZSDDhG5kZXJ1bmdlbiBhbi5cbiIKKyJcbiIKKyLCuyVzwqsgd2lyZCDDvGJlcnNjaHJpZWJlbi5cbiIKKyJcbiIKKyJEaWVzZSBPcGVyYXRpb24ga2FubiBudXIgcsO8Y2tnw6RuZ2lnIGdlbWFjaHQgd2VyZGVuLCB3ZW5uIGRpZVxuIgorIlp1c2FtbWVuZsO8aHJ1bmcgZXJuZXV0IGdlc3RhcnRldCB3aXJkLiIKKworIzogbGliL21lcmdldG9vbC50Y2w6NDUKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGaWxlICVzIHNlZW1zIHRvIGhhdmUgdW5yZXNvbHZlZCBjb25mbGljdHMsIHN0aWxsIHN0YWdlPyIKK21zZ3N0ciAiRGF0ZWkgwrslc8KrIGhhdCBuaWNodCBhdWZnZWzDtnN0ZSBLb25mbGlrdGUuIFRyb3R6ZGVtIGJlcmVpdHN0ZWxsZW4/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDo2MAorIywgdGNsLWZvcm1hdAorbXNnaWQgIkFkZGluZyByZXNvbHV0aW9uIGZvciAlcyIKK21zZ3N0ciAiQXVmbMO2c3VuZyBoaW56dWdlZsO8Z3QgZsO8ciAlcyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MTE5Cittc2dpZCAiQ2Fubm90IHJlc29sdmUgZGVsZXRpb24gb3IgbGluayBjb25mbGljdHMgdXNpbmcgYSB0b29sIgorbXNnc3RyICIiCisiS29uZmxpa3RlIGR1cmNoIGdlbMO2c2NodGUgRGF0ZWllbiBvZGVyIHN5bWJvbGlzY2hlIExpbmtzIGvDtm5uZW4gbmljaHQgZHVyY2ggIgorImRhcyBadXNhbWVuZsO8aHJ1bmdzd2Vya3pldWcgZ2Vsw7ZzdCB3ZXJkZW4uIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoxMjQKK21zZ2lkICJDb25mbGljdCBmaWxlIGRvZXMgbm90IGV4aXN0IgorbXNnc3RyICJLb25mbGlrdC1EYXRlaSBleGlzdGllcnQgbmljaHQiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjIzNgorIywgdGNsLWZvcm1hdAorbXNnaWQgIk5vdCBhIEdVSSBtZXJnZSB0b29sOiAnJXMnIgorbXNnc3RyICJLZWluIEdVSSBadXNhbW1lbmbDvGhydW5nc3dlcmt6ZXVnOiDCuyVzwqsiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjI0MAorIywgdGNsLWZvcm1hdAorbXNnaWQgIlVuc3VwcG9ydGVkIG1lcmdlIHRvb2wgJyVzJyIKK21zZ3N0ciAiVW5iZWthbm50ZXMgWnVzYW1tZW5mw7xocnVuZ3N3ZXJremV1Zzogwrslc8KrIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoyNzUKK21zZ2lkICJNZXJnZSB0b29sIGlzIGFscmVhZHkgcnVubmluZywgdGVybWluYXRlIGl0PyIKK21zZ3N0ciAiWnVzYW1tZW5mw7xocnVuZ3N3ZXJremV1ZyBsw6R1ZnQgYmVyZWl0cy4gU29sbCBlcyBhYmdlYnJvY2hlbiB3ZXJkZW4/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoyOTUKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiRXJyb3IgcmV0cmlldmluZyB2ZXJzaW9uczpcbiIKKyIlcyIKK21zZ3N0ciAiIgorIkZlaGxlciBiZWltIEFicnVmZW4gZGVyIERhdGVpdmVyc2lvbmVuOlxuIgorIiVzIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDozMTUKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiQ291bGQgbm90IHN0YXJ0IHRoZSBtZXJnZSB0b29sOlxuIgorIlxuIgorIiVzIgorbXNnc3RyICIiCisiWnVzYW1tZW5mw7xocnVuZ3N3ZXJremV1ZyBrb25udGUgbmljaHQgZ2VzdGFydGV0IHdlcmRlbjpcbiIKKyJcbiIKKyIlcyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MzE5Cittc2dpZCAiUnVubmluZyBtZXJnZSB0b29sLi4uIgorbXNnc3RyICJadXNhbW1lbmbDvGhydW5nc3dlcmt6ZXVnIHN0YXJ0ZW4uLi4iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjM0NyBsaWIvbWVyZ2V0b29sLnRjbDozNjMKK21zZ2lkICJNZXJnZSB0b29sIGZhaWxlZC4iCittc2dzdHIgIlp1c2FtbWVuZsO8aHJ1bmdzd2Vya3pldWcgZmVobGdlc2NobGFnZW4uIgorCisjOiBsaWIvb3B0aW9uLnRjbDoxMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIkludmFsaWQgZ2xvYmFsIGVuY29kaW5nICclcyciCittc2dzdHIgIlVuZ8O8bHRpZ2UgZ2xvYmFsZSBaZWljaGVua29kaWVydW5nIMK7JXPCqyIKKworIzogbGliL29wdGlvbi50Y2w6MTkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHJlcG8gZW5jb2RpbmcgJyVzJyIKK21zZ3N0ciAiVW5nw7xsdGlnZSBBcmNoaXYtWmVpY2hlbmtvZGllcnVuZyDCuyVzwqsiCisKKyM6IGxpYi9vcHRpb24udGNsOjExNwogbXNnaWQgIlJlc3RvcmUgRGVmYXVsdHMiCiBtc2dzdHIgIlZvcmVpbnN0ZWxsdW5nZW4gd2llZGVyaGVyc3RlbGxlbiIKIApAQCAtMTc2Nyw3ICsyMDI1LDExIEBACiBtc2dpZCAiU2hvdyBEaWZmc3RhdCBBZnRlciBNZXJnZSIKIG1zZ3N0ciAiVmVyZ2xlaWNoc3N0YXRpc3RpayBuYWNoIFp1c2FtbWVuZsO8aHJlbiBhbnplaWdlbiIKIAotIzogbGliL29wdGlvbi50Y2w6MTIzCisjOiBsaWIvb3B0aW9uLnRjbDoxMjIKK21zZ2lkICJVc2UgTWVyZ2UgVG9vbCIKK21zZ3N0ciAiWnVzYW1tZW5mw7xocnVuZ3N3ZXJremV1ZyIKKworIzogbGliL29wdGlvbi50Y2w6MTI0CiBtc2dpZCAiVHJ1c3QgRmlsZSBNb2RpZmljYXRpb24gVGltZXN0YW1wcyIKIG1zZ3N0ciAiQXVmIERhdGVpw6RuZGVydW5nc2RhdHVtIHZlcmxhc3NlbiIKIApAQCAtMTc4OCw2ICsyMDUwLDEwIEBACiBtc2dzdHIgIk1pbmRlc3R6YWhsIFplaWNoZW4gZsO8ciBLb3BpZS1Bbm5vdGllcmVuIgogCiAjOiBsaWIvb3B0aW9uLnRjbDoxMjgKK21zZ2lkICJCbGFtZSBIaXN0b3J5IENvbnRleHQgUmFkaXVzIChkYXlzKSIKK21zZ3N0ciAiQW56YWhsIFRhZ2UgZsO8ciBIaXN0b3JpZW4tS29udGV4dCIKKworIzogbGliL29wdGlvbi50Y2w6MTI5CiBtc2dpZCAiTnVtYmVyIG9mIERpZmYgQ29udGV4dCBMaW5lcyIKIG1zZ3N0ciAiQW56YWhsIGRlciBLb250ZXh0emVpbGVuIGJlaW0gVmVyZ2xlaWNoIgogCkBAIC0xNzk5LDcgKzIwNjUsMTUgQEAKIG1zZ2lkICJOZXcgQnJhbmNoIE5hbWUgVGVtcGxhdGUiCiBtc2dzdHIgIk5hbWVuc3ZvcnNjaGxhZyBmw7xyIG5ldWUgWndlaWdlIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxOTIKKyM6IGxpYi9vcHRpb24udGNsOjE1NQorbXNnaWQgIkRlZmF1bHQgRmlsZSBDb250ZW50cyBFbmNvZGluZyIKK21zZ3N0ciAiVm9yZWluZ2VzdGVsbHRlIFplaWNoZW5rb2RpZXJ1bmciCisKKyM6IGxpYi9vcHRpb24udGNsOjIwMworbXNnaWQgIkNoYW5nZSIKK21zZ3N0ciAiw4RuZGVybiIKKworIzogbGliL29wdGlvbi50Y2w6MjMwCiBtc2dpZCAiU3BlbGxpbmcgRGljdGlvbmFyeToiCiBtc2dzdHIgIlfDtnJ0ZXJidWNoIFJlY2h0c2NocmVpYnByw7xmdW5nOiIKIApAQCAtMTgyNCw5ICsyMDk4LDg2IEBACiBtc2dpZCAiRmFpbGVkIHRvIGNvbXBsZXRlbHkgc2F2ZSBvcHRpb25zOiIKIG1zZ3N0ciAiT3B0aW9uZW4ga29ubnRlbiBuaWNodCBnZXNwZWljaGVydCB3ZXJkZW46IgogCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTkKK21zZ2lkICJBZGQgUmVtb3RlIgorbXNnc3RyICJBbmRlcmVzIEFyY2hpdiBoaW56dWbDvGdlbiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjI0Cittc2dpZCAiQWRkIE5ldyBSZW1vdGUiCittc2dzdHIgIk5ldWVzIGFuZGVyZXMgQXJjaGl2IGhpbnp1ZsO8Z2VuIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MjgKK21zZ2lkICJBZGQiCittc2dzdHIgIkhpbnp1ZsO8Z2VuIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MzcKK21zZ2lkICJSZW1vdGUgRGV0YWlscyIKK21zZ3N0ciAiRWluemVsaGVpdGVuIGRlcyBhbmRlcmVuIEFyY2hpdnMiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo1MAorbXNnaWQgIkxvY2F0aW9uOiIKK21zZ3N0ciAiQWRyZXNzZToiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo2MgorbXNnaWQgIkZ1cnRoZXIgQWN0aW9uIgorbXNnc3RyICJXZWl0ZXJlIEFrdGlvbiBqZXR6dCIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjY1Cittc2dpZCAiRmV0Y2ggSW1tZWRpYXRlbHkiCittc2dzdHIgIkdsZWljaCBhbmZvcmRlcm4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo3MQorbXNnaWQgIkluaXRpYWxpemUgUmVtb3RlIFJlcG9zaXRvcnkgYW5kIFB1c2giCittc2dzdHIgIkFuZGVyZXMgQXJjaGl2IGluaXRpYWxpc2llcmVuIHVuZCBkYWhpbiB2ZXJzZW5kZW4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo3NworbXNnaWQgIkRvIE5vdGhpbmcgRWxzZSBOb3ciCittc2dzdHIgIk5pY2h0cyB0dW4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMDEKK21zZ2lkICJQbGVhc2Ugc3VwcGx5IGEgcmVtb3RlIG5hbWUuIgorbXNnc3RyICJCaXR0ZSBnZWJlbiBTaWUgZWluZW4gTmFtZW4gZGVzIGFuZGVyZW4gQXJjaGl2cyBhbi4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMTQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICInJXMnIGlzIG5vdCBhbiBhY2NlcHRhYmxlIHJlbW90ZSBuYW1lLiIKK21zZ3N0ciAiwrslc8KrIGlzdCBrZWluIHp1bMOkc3NpZ2VyIE5hbWUgZWluZXMgYW5kZXJlbiBBcmNoaXZzLiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjEyNQorIywgdGNsLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byBhZGQgcmVtb3RlICclcycgb2YgbG9jYXRpb24gJyVzJy4iCittc2dzdHIgIkZlaGxlciBiZWltIEhpbnp1ZsO8Z2VuIGRlcyBhbmRlcmVuIEFyY2hpdnMgwrslc8KrIGF1cyBIZXJrdW5mdHNvcnQgwrslc8KrLiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjEzMyBsaWIvdHJhbnNwb3J0LnRjbDo2CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiZmV0Y2ggJXMiCittc2dzdHIgIsK7JXPCqyBhbmZvcmRlcm4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMzQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGZXRjaGluZyB0aGUgJXMiCittc2dzdHIgIsK7JXPCqyBhbmZvcmRlcm4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxNTcKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJEbyBub3Qga25vdyBob3cgdG8gaW5pdGlhbGl6ZSByZXBvc2l0b3J5IGF0IGxvY2F0aW9uICclcycuIgorbXNnc3RyICIiCisiSW5pdGlhbGlzaWVyZW4gZWluZXMgYW5kZXJlbiBBcmNoaXZzIGFuIEFkcmVzc2Ugwrslc8KrIGlzdCBuaWNodCBtw7ZnbGljaC4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxNjMgbGliL3RyYW5zcG9ydC50Y2w6MjUgbGliL3RyYW5zcG9ydC50Y2w6NjMKKyM6IGxpYi90cmFuc3BvcnQudGNsOjgxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAicHVzaCAlcyIKK21zZ3N0ciAiwrslc8KrIHZlcnNlbmRlbi4uLiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjE2NAorIywgdGNsLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgdXAgdGhlICVzIChhdCAlcykiCittc2dzdHIgIkVpbnJpY2h0ZW4gdm9uIMK7JXPCqyBhbiDCuyVzwqsiCisKICM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6MjkgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDozNAotbXNnaWQgIkRlbGV0ZSBSZW1vdGUgQnJhbmNoIgotbXNnc3RyICJad2VpZyBpbiBhbmRlcmVtIFByb2pla3RhcmNoaXYgbMO2c2NoZW4iCittc2dpZCAiRGVsZXRlIEJyYW5jaCBSZW1vdGVseSIKK21zZ3N0ciAiWndlaWcgaW4gYW5kZXJlbSBBcmNoaXYgbMO2c2NoZW4iCiAKICM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NDcKIG1zZ2lkICJGcm9tIFJlcG9zaXRvcnkiCkBAIC0xODM3LDggKzIxODgsOCBAQAogbXNnc3RyICJBbmRlcmVzIEFyY2hpdjoiCiAKICM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NjYgbGliL3RyYW5zcG9ydC50Y2w6MTM4Ci1tc2dpZCAiQXJiaXRyYXJ5IFVSTDoiCi1tc2dzdHIgIkFyY2hpdi1VUkw6IgorbXNnaWQgIkFyYml0cmFyeSBMb2NhdGlvbjoiCittc2dzdHIgIkFkcmVzc2U6IgogCiAjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjg0CiBtc2dpZCAiQnJhbmNoZXMiCkBAIC0xOTEwLDcgKzIyNjEsMTEgQEAKIG1zZ2lkICJTY2FubmluZyAlcy4uLiIKIG1zZ3N0ciAiwrslc8KrIGxhZGVuLi4uIgogCi0jOiBsaWIvcmVtb3RlLnRjbDoxNjUKKyM6IGxpYi9yZW1vdGUudGNsOjE2MworbXNnaWQgIlJlbW92ZSBSZW1vdGUiCittc2dzdHIgIkFuZGVyZXMgQXJjaGl2IGVudGZlcm5lbiIKKworIzogbGliL3JlbW90ZS50Y2w6MTY4CiBtc2dpZCAiUHJ1bmUgZnJvbSIKIG1zZ3N0ciAiQXVmcsOkdW1lbiB2b24iCiAKQEAgLTE5MjIsNiArMjI3NywyMiBAQAogbXNnaWQgIlB1c2ggdG8iCiBtc2dzdHIgIlZlcnNlbmRlbiBuYWNoIgogCisjOiBsaWIvc2VhcmNoLnRjbDoyMQorbXNnaWQgIkZpbmQ6IgorbXNnc3RyICJTdWNoZW46IgorCisjOiBsaWIvc2VhcmNoLnRjbDoyMgorbXNnaWQgIk5leHQiCittc2dzdHIgIk7DpGNoc3RlciIKKworIzogbGliL3NlYXJjaC50Y2w6MjMKK21zZ2lkICJQcmV2IgorbXNnc3RyICJWb3JpZ2VyIgorCisjOiBsaWIvc2VhcmNoLnRjbDoyNQorbXNnaWQgIkNhc2UtU2Vuc2l0aXZlIgorbXNnc3RyICJHcm/Dny0vS2xlaW5zY2hyZWlidW5nIHVudGVyc2NoZWlkZW4iCisKICM6IGxpYi9zaG9ydGN1dC50Y2w6MjAgbGliL3Nob3J0Y3V0LnRjbDo2MQogbXNnaWQgIkNhbm5vdCB3cml0ZSBzaG9ydGN1dDoiCiBtc2dzdHIgIkZlaGxlciBiZWltIFNjaHJlaWJlbiBkZXIgVmVya27DvHBmdW5nOiIKQEAgLTE5NjcsMTUgKzIzMzgsMTgxIEBACiBtc2dpZCAiU3BlbGwgQ2hlY2tlciBGYWlsZWQiCiBtc2dzdHIgIlJlY2h0c2NocmVpYnByw7xmdW5nIGZlaGxnZXNjaGxhZ2VuIgogCisjOiBsaWIvc3Noa2V5LnRjbDozMQorbXNnaWQgIk5vIGtleXMgZm91bmQuIgorbXNnc3RyICJLZWluZSBTY2hsw7xzc2VsIGdlZnVuZGVuLiIKKworIzogbGliL3NzaGtleS50Y2w6MzQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGb3VuZCBhIHB1YmxpYyBrZXkgaW46ICVzIgorbXNnc3RyICLDlmZmZW50bGljaGVyIFNjaGzDvHNzZWwgZ2VmdW5kZW4gaW46ICVzIgorCisjOiBsaWIvc3Noa2V5LnRjbDo0MAorbXNnaWQgIkdlbmVyYXRlIEtleSIKK21zZ3N0ciAiU2NobMO8c3NlbCBlcnpldWdlbiIKKworIzogbGliL3NzaGtleS50Y2w6NTYKK21zZ2lkICJDb3B5IFRvIENsaXBib2FyZCIKK21zZ3N0ciAiSW4gWndpc2NoZW5hYmxhZ2Uga29waWVyZW4iCisKKyM6IGxpYi9zc2hrZXkudGNsOjcwCittc2dpZCAiWW91ciBPcGVuU1NIIFB1YmxpYyBLZXkiCittc2dzdHIgIklociBPcGVuU1NIIMO2ZmZlbmxpY2hlciBTY2hsw7xzc2VsIgorCisjOiBsaWIvc3Noa2V5LnRjbDo3OAorbXNnaWQgIkdlbmVyYXRpbmcuLi4iCittc2dzdHIgIkVyemV1Z2VuLi4uIgorCisjOiBsaWIvc3Noa2V5LnRjbDo4NAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZCBub3Qgc3RhcnQgc3NoLWtleWdlbjpcbiIKKyJcbiIKKyIlcyIKK21zZ3N0ciAiIgorIktvbm50ZSDCu3NzaC1rZXlnZW7CqyBuaWNodCBzdGFydGVuOlxuIgorIlxuIgorIiVzIgorCisjOiBsaWIvc3Noa2V5LnRjbDoxMTEKK21zZ2lkICJHZW5lcmF0aW9uIGZhaWxlZC4iCittc2dzdHIgIlNjaGzDvHNzZWxlcnpldWd1bmcgZmVobGdlc2NobGFnZW4uIgorCisjOiBsaWIvc3Noa2V5LnRjbDoxMTgKK21zZ2lkICJHZW5lcmF0aW9uIHN1Y2NlZGVkLCBidXQgbm8ga2V5cyBmb3VuZC4iCittc2dzdHIgIlNjaGzDvHNzZWxlcnpldWd1bmcgZXJmb2xncmVpY2gsIGFiZXIga2VpbmUgU2NobMO8c3NlbCBnZWZ1bmRlbi4iCisKKyM6IGxpYi9zc2hrZXkudGNsOjEyMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIllvdXIga2V5IGlzIGluOiAlcyIKK21zZ3N0ciAiSWhyIFNjaGzDvHNzZWwgaXN0IGFiZ2VsZWd0IGluOiAlcyIKKwogIzogbGliL3N0YXR1c19iYXIudGNsOjgzCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiJXMgLi4uICUqaSBvZiAlKmkgJXMgKCUzaSUlKSIKIG1zZ3N0ciAiJXMgLi4uICUqaSB2b24gJSppICVzICglM2klJSkiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjYKKyM6IGxpYi90b29sc19kbGcudGNsOjIyCittc2dpZCAiQWRkIFRvb2wiCittc2dzdHIgIldlcmt6ZXVnIGhpbnp1ZsO8Z2VuIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoyOAorbXNnaWQgIkFkZCBOZXcgVG9vbCBDb21tYW5kIgorbXNnc3RyICJOZXVlcyBLb21tYW5kbyBmw7xyIFdlcmt6ZXVnIGhpbnp1ZsO8Z2VuIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDozMworbXNnaWQgIkFkZCBnbG9iYWxseSIKK21zZ3N0ciAiR2xvYmFsIGhpbnp1ZsO8Z2VuIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo0NQorbXNnaWQgIlRvb2wgRGV0YWlscyIKK21zZ3N0ciAiRWluemVsaGVpdGVuIGRlcyBXZXJremV1Z3MiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjQ4Cittc2dpZCAiVXNlICcvJyBzZXBhcmF0b3JzIHRvIGNyZWF0ZSBhIHN1Ym1lbnUgdHJlZToiCittc2dzdHIgIkJlbnV0emVuIFNpZSBlaW5lbiBTY2hyw6Rnc3RyaWNoIMK7L8KrLCB1bSBVbnRlcm1lbsO8cyB6dSBlcnN0ZWxsZW46IgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo2MQorbXNnaWQgIkNvbW1hbmQ6IgorbXNnc3RyICJLb21tYW5kbzoiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjc0Cittc2dpZCAiU2hvdyBhIGRpYWxvZyBiZWZvcmUgcnVubmluZyIKK21zZ3N0ciAiQmVzdMOkdGlndW5nc2ZyYWdlIHZvciBTdGFydGVuIGFuemVpZ2VuIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo4MAorbXNnaWQgIkFzayB0aGUgdXNlciB0byBzZWxlY3QgYSByZXZpc2lvbiAoc2V0cyAkUkVWSVNJT04pIgorbXNnc3RyICJCZW51dHplciBuYWNoIFZlcnNpb24gZnJhZ2VuIChzZXR6dCAkUkVWSVNJT04pIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo4NQorbXNnaWQgIkFzayB0aGUgdXNlciBmb3IgYWRkaXRpb25hbCBhcmd1bWVudHMgKHNldHMgJEFSR1MpIgorbXNnc3RyICJCZW51dHplciBuYWNoIHp1c8OkdHpsaWNoZW4gQXJndW1lbnRlbiBmcmFnZW4gKHNldHp0ICRBUkdTKSIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6OTIKK21zZ2lkICJEb24ndCBzaG93IHRoZSBjb21tYW5kIG91dHB1dCB3aW5kb3ciCittc2dzdHIgIktlaW4gQXVzZ2FiZWZlbnN0ZXIgemVpZ2VuIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo5NworbXNnaWQgIlJ1biBvbmx5IGlmIGEgZGlmZiBpcyBzZWxlY3RlZCAoJEZJTEVOQU1FIG5vdCBlbXB0eSkiCittc2dzdHIgIk51ciBzdGFydGVuLCB3ZW5uIGVpbiBWZXJnbGVpY2ggZ2V3w6RobHQgaXN0ICgkRklMRU5BTUUgaXN0IG5pY2h0IGxlZXIpIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoxMjEKK21zZ2lkICJQbGVhc2Ugc3VwcGx5IGEgbmFtZSBmb3IgdGhlIHRvb2wuIgorbXNnc3RyICJCaXR0ZSBnZWJlbiBTaWUgZWluZW4gV2Vya3pldWduYW1lbiBhbi4iCisKKyM6IGxpYi90b29sc19kbGcudGNsOjEyOQogIywgdGNsLWZvcm1hdAotbXNnaWQgImZldGNoICVzIgotbXNnc3RyICLCuyVzwqsgYW5mb3JkZXJuIgorbXNnaWQgIlRvb2wgJyVzJyBhbHJlYWR5IGV4aXN0cy4iCittc2dzdHIgIldlcmt6ZXVnIMK7JXPCqyBleGlzdGllcnQgYmVyZWl0cy4iCisKKyM6IGxpYi90b29sc19kbGcudGNsOjE1MQorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZCBub3QgYWRkIHRvb2w6XG4iCisiJXMiCittc2dzdHIgIiIKKyJXZXJremV1ZyBrb25udGUgbmljaHQgaGluenVnZWbDvGd0IHdlcmRlbjpcbiIKKyJcbiIKKyIlcyIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTkwCittc2dpZCAiUmVtb3ZlIFRvb2wiCittc2dzdHIgIldlcmt6ZXVnIGVudGZlcm5lbiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTk2Cittc2dpZCAiUmVtb3ZlIFRvb2wgQ29tbWFuZHMiCittc2dzdHIgIldlcmt6ZXVna29tbWFuZG9zIGVudGZlcm5lbiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjAwCittc2dpZCAiUmVtb3ZlIgorbXNnc3RyICJFbnRmZXJuZW4iCisKKyM6IGxpYi90b29sc19kbGcudGNsOjIzNgorbXNnaWQgIihCbHVlIGRlbm90ZXMgcmVwb3NpdG9yeS1sb2NhbCB0b29scykiCittc2dzdHIgIihXZXJremV1Z2UgZsO8ciBsb2thbGVzIEFyY2hpdiB3ZXJkZW4gaW4gQmxhdSBhbmdlemVpZ3QpIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoyOTcKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJSdW4gQ29tbWFuZDogJXMiCittc2dzdHIgIktvbW1hbmRvIGF1ZnJ1ZmVuOiAlcyIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MzExCittc2dpZCAiQXJndW1lbnRzIgorbXNnc3RyICJBcmd1bWVudGUiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjM0OAorbXNnaWQgIk9LIgorbXNnc3RyICJPayIKKworIzogbGliL3Rvb2xzLnRjbDo3NQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlJ1bm5pbmcgJXMgcmVxdWlyZXMgYSBzZWxlY3RlZCBmaWxlLiIKK21zZ3N0ciAiVW0gwrslc8KrIHp1IHN0YXJ0ZW4sIG11c3MgZWluZSBEYXRlaSBhdXNnZXfDpGhsdCBzZWluLiIKKworIzogbGliL3Rvb2xzLnRjbDo5MAorIywgdGNsLWZvcm1hdAorbXNnaWQgIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBydW4gJXM/IgorbXNnc3RyICJXb2xsZW4gU2llICVzIHdpcmtsaWNoIHN0YXJ0ZW4/IgorCisjOiBsaWIvdG9vbHMudGNsOjExMAorIywgdGNsLWZvcm1hdAorbXNnaWQgIlRvb2w6ICVzIgorbXNnc3RyICJXZXJremV1ZzogJXMiCisKKyM6IGxpYi90b29scy50Y2w6MTExCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiUnVubmluZzogJXMiCittc2dzdHIgIlN0YXJ0ZW46ICVzIgorCisjOiBsaWIvdG9vbHMudGNsOjE0OQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlRvb2wgY29tcGxldGVkIHN1Y2Nlc2Z1bGx5OiAlcyIKK21zZ3N0ciAiV2Vya3pldWcgZXJmb2xncmVpY2ggYWJnZXNjaGxvc3NlbjogJXMiCisKKyM6IGxpYi90b29scy50Y2w6MTUxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVG9vbCBmYWlsZWQ6ICVzIgorbXNnc3RyICJXZXJremV1ZyBmZWhsZ2VzY2hsYWdlbjogJXMiCiAKICM6IGxpYi90cmFuc3BvcnQudGNsOjcKICMsIHRjbC1mb3JtYXQKQEAgLTE5OTIsMTcgKzI1MjksMTcgQEAKIG1zZ2lkICJQcnVuaW5nIHRyYWNraW5nIGJyYW5jaGVzIGRlbGV0ZWQgZnJvbSAlcyIKIG1zZ3N0ciAiw5xiZXJuYWhtZXp3ZWlnZSBhdWZyw6R1bWVuIHVuZCBlbnRmZXJuZW4sIGRpZSBpbiDCuyVzwqsgZ2Vsw7ZzY2h0IHd1cmRlbiIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6MjUgbGliL3RyYW5zcG9ydC50Y2w6NzEKLSMsIHRjbC1mb3JtYXQKLW1zZ2lkICJwdXNoICVzIgotbXNnc3RyICLCuyVzwqsgdmVyc2VuZGVuLi4uIgotCiAjOiBsaWIvdHJhbnNwb3J0LnRjbDoyNgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlB1c2hpbmcgY2hhbmdlcyB0byAlcyIKIG1zZ3N0ciAiw4RuZGVydW5nZW4gbmFjaCDCuyVzwqsgdmVyc2VuZGVuIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDo3MgorIzogbGliL3RyYW5zcG9ydC50Y2w6NjQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJNaXJyb3JpbmcgdG8gJXMiCittc2dzdHIgIlNwaWVnZWxuIG5hY2ggJXMiCisKKyM6IGxpYi90cmFuc3BvcnQudGNsOjgyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUHVzaGluZyAlcyAlcyB0byAlcyIKIG1zZ3N0ciAiJXMgJXMgbmFjaCAlcyB2ZXJzZW5kZW4iCmRpZmYgLS1naXQgYS9naXQtZ3VpL3BvL2ZyLnBvIGIvZ2l0LWd1aS9wby9mci5wbwppbmRleCAyNmI4NjZmLi40NTc3M2FiIDEwMDY0NAotLS0gYS9naXQtZ3VpL3BvL2ZyLnBvCisrKyBiL2dpdC1ndWkvcG8vZnIucG8KQEAgLTEsNCArMSw0IEBACi0jIHRyYW5zbGF0aW9uIG9mIGZyLnBvIHRvIEZyYW7Dp2FpcworIyB0cmFuc2xhdGlvbiBvZiBmci5wbyB0byBGcmVuY2gKICMgVHJhbnNsYXRpb24gb2YgZ2l0LWd1aSB0byBGcmVuY2guCiAjIENvcHlyaWdodCAoQykgMjAwOCBTaGF3biBQZWFyY2UsIGV0IGFsLgogIyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgbGljZW5zZSBhcyB0aGUgZ2l0IHBhY2thZ2UuCkBAIC05LDQzICs5LDQzIEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGZyXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IFxuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA4LTA4LTAyIDE0OjQ1LTA3MDBcbiIKLSJQTy1SZXZpc2lvbi1EYXRlOiAyMDA4LTA4LTExIDE3OjEyLTA0MDBcbiIKLSJMYXN0LVRyYW5zbGF0b3I6IEFsZXhhbmRyZSBCb3VyZ2V0IDxhbGV4YW5kcmUuYm91cmdldEBzYXZvaXJmYWlyZWxpbnV4LmNvbT5cbiIKLSJMYW5ndWFnZS1UZWFtOiBGcmFuw6dhaXMgPGZyQGxpLm9yZz5cbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwOC0xMS0xNiAxMzo1Ni0wODAwXG4iCisiUE8tUmV2aXNpb24tRGF0ZTogMjAwOC0xMS0yMCAxMDoyMCswMTAwXG4iCisiTGFzdC1UcmFuc2xhdG9yOiBDaHJpc3RpYW4gQ291ZGVyIDxjaHJpc2Nvb2xAdHV4ZmFtaWx5Lm9yZz5cbiIKKyJMYW5ndWFnZS1UZWFtOiBGcmVuY2hcbiIKICJNSU1FLVZlcnNpb246IDEuMFxuIgogIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOFxuIgogIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKICJYLUdlbmVyYXRvcjogS0JhYmVsIDEuMTEuNFxuIgogIlBsdXJhbC1Gb3JtczogIG5wbHVyYWxzPTI7IHBsdXJhbD0obiA+IDEpO1xuIgogCi0jOiBnaXQtZ3VpLnNoOjQxIGdpdC1ndWkuc2g6Njg4IGdpdC1ndWkuc2g6NzAyIGdpdC1ndWkuc2g6NzE1IGdpdC1ndWkuc2g6Nzk4Ci0jOiBnaXQtZ3VpLnNoOjgxNworIzogZ2l0LWd1aS5zaDo0MSBnaXQtZ3VpLnNoOjczNyBnaXQtZ3VpLnNoOjc1MSBnaXQtZ3VpLnNoOjc2NCBnaXQtZ3VpLnNoOjg0NworIzogZ2l0LWd1aS5zaDo4NjYKIG1zZ2lkICJnaXQtZ3VpOiBmYXRhbCBlcnJvciIKIG1zZ3N0ciAiZ2l0LWd1aTogZXJyZXVyIGZhdGFsZSIKIAotIzogZ2l0LWd1aS5zaDo2NDQKKyM6IGdpdC1ndWkuc2g6Njg5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCBmb250IHNwZWNpZmllZCBpbiAlczoiCiBtc2dzdHIgIlBvbGljZSBpbnZhbGlkZSBzcMOpY2lmacOpZSBkYW5zICVzIDoiCiAKLSM6IGdpdC1ndWkuc2g6Njc0CisjOiBnaXQtZ3VpLnNoOjcyMwogbXNnaWQgIk1haW4gRm9udCIKIG1zZ3N0ciAiUG9saWNlIHByaW5jaXBhbGUiCiAKLSM6IGdpdC1ndWkuc2g6Njc1CisjOiBnaXQtZ3VpLnNoOjcyNAogbXNnaWQgIkRpZmYvQ29uc29sZSBGb250IgogbXNnc3RyICJQb2xpY2UgZGlmZi9jb25zb2xlIgogCi0jOiBnaXQtZ3VpLnNoOjY4OQorIzogZ2l0LWd1aS5zaDo3MzgKIG1zZ2lkICJDYW5ub3QgZmluZCBnaXQgaW4gUEFUSC4iCiBtc2dzdHIgIkltcG9zc2libGUgZGUgdHJvdXZlciBnaXQgZGFucyBQQVRILiIKIAotIzogZ2l0LWd1aS5zaDo3MTYKKyM6IGdpdC1ndWkuc2g6NzY1CiBtc2dpZCAiQ2Fubm90IHBhcnNlIEdpdCB2ZXJzaW9uIHN0cmluZzoiCiBtc2dzdHIgIkltcG9zc2libGUgZGUgcGFyc2VyIGxhIHZlcnNpb24gZGUgR2l0IDoiCiAKLSM6IGdpdC1ndWkuc2g6NzM0CisjOiBnaXQtZ3VpLnNoOjc4MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJHaXQgdmVyc2lvbiBjYW5ub3QgYmUgZGV0ZXJtaW5lZC5cbiIKQEAgLTY0LDM4MSArNjQsNDQ2IEBACiAiXG4iCiAiUGV1dCdvbiBjb25zaWTDqXJlciBxdWUgJyVzJyBlc3QgZW4gdmVyc2lvbiAxLjUuMCA/XG4iCiAKLSM6IGdpdC1ndWkuc2g6OTcyCisjOiBnaXQtZ3VpLnNoOjEwNjIKIG1zZ2lkICJHaXQgZGlyZWN0b3J5IG5vdCBmb3VuZDoiCiBtc2dzdHIgIkltcG9zc2libGUgZGUgdHJvdXZlciBsZSByw6lwZXJ0b2lyZSBnaXQgOiIKIAotIzogZ2l0LWd1aS5zaDo5NzkKKyM6IGdpdC1ndWkuc2g6MTA2OQogbXNnaWQgIkNhbm5vdCBtb3ZlIHRvIHRvcCBvZiB3b3JraW5nIGRpcmVjdG9yeToiCiBtc2dzdHIgIkltcG9zc2libGUgZCdhbGxlciDDoCBsYSByYWNpbmUgZHUgcsOpcGVydG9pcmUgZGUgdHJhdmFpbCA6IgogCi0jOiBnaXQtZ3VpLnNoOjk4NgorIzogZ2l0LWd1aS5zaDoxMDc2CiBtc2dpZCAiQ2Fubm90IHVzZSBmdW5ueSAuZ2l0IGRpcmVjdG9yeToiCiBtc2dzdHIgIkltcG9zc2libGUgZCd1dGlsaXNlciBsZSByw6lwZXJ0b2lyZSAuZ2l0OiIKIAotIzogZ2l0LWd1aS5zaDo5OTEKKyM6IGdpdC1ndWkuc2g6MTA4MQogbXNnaWQgIk5vIHdvcmtpbmcgZGlyZWN0b3J5IgogbXNnc3RyICJBdWN1biByw6lwZXJ0b2lyZSBkZSB0cmF2YWlsIgogCi0jOiBnaXQtZ3VpLnNoOjExMzggbGliL2NoZWNrb3V0X29wLnRjbDozMDUKKyM6IGdpdC1ndWkuc2g6MTI0NyBsaWIvY2hlY2tvdXRfb3AudGNsOjMwNQogbXNnaWQgIlJlZnJlc2hpbmcgZmlsZSBzdGF0dXMuLi4iCiBtc2dzdHIgIlJhZnJhaWNoaXNzZW1lbnQgZHUgc3RhdHVzIGRlcyBmaWNoaWVycy4uLiIKIAotIzogZ2l0LWd1aS5zaDoxMTk0CisjOiBnaXQtZ3VpLnNoOjEzMDMKIG1zZ2lkICJTY2FubmluZyBmb3IgbW9kaWZpZWQgZmlsZXMgLi4uIgogbXNnc3RyICJSZWNoZXJjaGUgZGUgZmljaGllcnMgbW9kaWZpw6lzLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjEzNjkgbGliL2Jyb3dzZXIudGNsOjI0NgorIzogZ2l0LWd1aS5zaDoxMzY3Cittc2dpZCAiQ2FsbGluZyBwcmVwYXJlLWNvbW1pdC1tc2cgaG9vay4uLiIKK21zZ3N0ciAiTGFuY2VtZW50IGRlIGwnYWN0aW9uIGRlIHByw6lwYXJhdGlvbiBkdSBtZXNzYWdlIGRlIGNvbW1pdC4uLiIKKworIzogZ2l0LWd1aS5zaDoxMzg0Cittc2dpZCAiQ29tbWl0IGRlY2xpbmVkIGJ5IHByZXBhcmUtY29tbWl0LW1zZyBob29rLiIKK21zZ3N0ciAiQ29tbWl0IHJlZnVzw6kgcGFyIGwnYWN0aW9uIGRlIHByw6lwYXJhdGlvbiBkdSBtZXNzYWdlIGRlIGNvbW1pdC4iCisKKyM6IGdpdC1ndWkuc2g6MTU0MiBsaWIvYnJvd3Nlci50Y2w6MjQ2CiBtc2dpZCAiUmVhZHkuIgogbXNnc3RyICJQcsOqdC4iCiAKLSM6IGdpdC1ndWkuc2g6MTYzNQorIzogZ2l0LWd1aS5zaDoxODE5CiBtc2dpZCAiVW5tb2RpZmllZCIKIG1zZ3N0ciAiTm9uIG1vZGlmacOpIgogCi0jOiBnaXQtZ3VpLnNoOjE2MzcKKyM6IGdpdC1ndWkuc2g6MTgyMQogbXNnaWQgIk1vZGlmaWVkLCBub3Qgc3RhZ2VkIgogbXNnc3RyICJNb2RpZmnDqSwgcGFzIGluZGV4w6kiCiAKLSM6IGdpdC1ndWkuc2g6MTYzOCBnaXQtZ3VpLnNoOjE2NDMKKyM6IGdpdC1ndWkuc2g6MTgyMiBnaXQtZ3VpLnNoOjE4MzAKIG1zZ2lkICJTdGFnZWQgZm9yIGNvbW1pdCIKIG1zZ3N0ciAiSW5kZXjDqSIKIAotIzogZ2l0LWd1aS5zaDoxNjM5IGdpdC1ndWkuc2g6MTY0NAorIzogZ2l0LWd1aS5zaDoxODIzIGdpdC1ndWkuc2g6MTgzMQogbXNnaWQgIlBvcnRpb25zIHN0YWdlZCBmb3IgY29tbWl0IgogbXNnc3RyICJQb3J0aW9ucyBpbmRleMOpZXMiCiAKLSM6IGdpdC1ndWkuc2g6MTY0MCBnaXQtZ3VpLnNoOjE2NDUKKyM6IGdpdC1ndWkuc2g6MTgyNCBnaXQtZ3VpLnNoOjE4MzIKIG1zZ2lkICJTdGFnZWQgZm9yIGNvbW1pdCwgbWlzc2luZyIKIG1zZ3N0ciAiSW5kZXjDqXMsIG1hbnF1YW50IgogCi0jOiBnaXQtZ3VpLnNoOjE2NDIKKyM6IGdpdC1ndWkuc2g6MTgyNgorbXNnaWQgIkZpbGUgdHlwZSBjaGFuZ2VkLCBub3Qgc3RhZ2VkIgorbXNnc3RyICJMZSB0eXBlIGRlIGZpY2hpZXIgYSBjaGFuZ8OpLCBub24gaW5kZXjDqSIKKworIzogZ2l0LWd1aS5zaDoxODI3Cittc2dpZCAiRmlsZSB0eXBlIGNoYW5nZWQsIHN0YWdlZCIKK21zZ3N0ciAiTGUgdHlwZSBkZSBmaWNoaWVyIGEgY2hhbmfDqSwgaW5kZXjDqSIKKworIzogZ2l0LWd1aS5zaDoxODI5CiBtc2dpZCAiVW50cmFja2VkLCBub3Qgc3RhZ2VkIgogbXNnc3RyICJOb24gdmVyc2lvbm7DqSwgbm9uIGluZGV4w6kiCiAKLSM6IGdpdC1ndWkuc2g6MTY0NworIzogZ2l0LWd1aS5zaDoxODM0CiBtc2dpZCAiTWlzc2luZyIKIG1zZ3N0ciAiTWFucXVhbnQiCiAKLSM6IGdpdC1ndWkuc2g6MTY0OAorIzogZ2l0LWd1aS5zaDoxODM1CiBtc2dpZCAiU3RhZ2VkIGZvciByZW1vdmFsIgogbXNnc3RyICJJbmRleMOpIHBvdXIgc3VwcHJlc3Npb24iCiAKLSM6IGdpdC1ndWkuc2g6MTY0OQorIzogZ2l0LWd1aS5zaDoxODM2CiBtc2dpZCAiU3RhZ2VkIGZvciByZW1vdmFsLCBzdGlsbCBwcmVzZW50IgogbXNnc3RyICJJbmRleMOpIHBvdXIgc3VwcHJlc3Npb24sIHRvdWpvdXJzIHByw6lzZW50IgogCi0jOiBnaXQtZ3VpLnNoOjE2NTEgZ2l0LWd1aS5zaDoxNjUyIGdpdC1ndWkuc2g6MTY1MyBnaXQtZ3VpLnNoOjE2NTQKKyM6IGdpdC1ndWkuc2g6MTgzOCBnaXQtZ3VpLnNoOjE4MzkgZ2l0LWd1aS5zaDoxODQwIGdpdC1ndWkuc2g6MTg0MQorIzogZ2l0LWd1aS5zaDoxODQyIGdpdC1ndWkuc2g6MTg0MwogbXNnaWQgIlJlcXVpcmVzIG1lcmdlIHJlc29sdXRpb24iCiBtc2dzdHIgIk7DqWNlc3NpdGUgbGEgcsOpc29sdXRpb24gZCd1bmUgZnVzaW9uIgogCi0jOiBnaXQtZ3VpLnNoOjE2ODkKKyM6IGdpdC1ndWkuc2g6MTg3OAogbXNnaWQgIlN0YXJ0aW5nIGdpdGsuLi4gcGxlYXNlIHdhaXQuLi4iCiBtc2dzdHIgIkxhbmNlbWVudCBkZSBnaXRrLi4uIHVuIGluc3RhbnQuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MTY5OAorIzogZ2l0LWd1aS5zaDoxODg3CiBtc2dpZCAiQ291bGRuJ3QgZmluZCBnaXRrIGluIFBBVEgiCiBtc2dzdHIgIkltcG9zc2libGUgZGUgdHJvdXZlciBnaXRrIGRhbnMgUEFUSC4iCiAKLSM6IGdpdC1ndWkuc2g6MTk0OCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM2CisjOiBnaXQtZ3VpLnNoOjIyODAgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozNgogbXNnaWQgIlJlcG9zaXRvcnkiCiBtc2dzdHIgIkTDqXDDtHQiCiAKLSM6IGdpdC1ndWkuc2g6MTk0OQorIzogZ2l0LWd1aS5zaDoyMjgxCiBtc2dpZCAiRWRpdCIKIG1zZ3N0ciAiRWRpdGlvbiIKIAotIzogZ2l0LWd1aS5zaDoxOTUxIGxpYi9jaG9vc2VfcmV2LnRjbDo1NjEKKyM6IGdpdC1ndWkuc2g6MjI4MyBsaWIvY2hvb3NlX3Jldi50Y2w6NTYxCiBtc2dpZCAiQnJhbmNoIgogbXNnc3RyICJCcmFuY2hlIgogCi0jOiBnaXQtZ3VpLnNoOjE5NTQgbGliL2Nob29zZV9yZXYudGNsOjU0OAorIzogZ2l0LWd1aS5zaDoyMjg2IGxpYi9jaG9vc2VfcmV2LnRjbDo1NDgKIG1zZ2lkICJDb21taXRAQG5vdW4iCiBtc2dzdHIgIkNvbW1pdCIKIAotIzogZ2l0LWd1aS5zaDoxOTU3IGxpYi9tZXJnZS50Y2w6MTIwIGxpYi9tZXJnZS50Y2w6MTQ5IGxpYi9tZXJnZS50Y2w6MTY3CisjOiBnaXQtZ3VpLnNoOjIyODkgbGliL21lcmdlLnRjbDoxMjEgbGliL21lcmdlLnRjbDoxNTAgbGliL21lcmdlLnRjbDoxNjgKIG1zZ2lkICJNZXJnZSIKIG1zZ3N0ciAiRnVzaW9ubmVyIgogCi0jOiBnaXQtZ3VpLnNoOjE5NTggbGliL2Nob29zZV9yZXYudGNsOjU1NworIzogZ2l0LWd1aS5zaDoyMjkwIGxpYi9jaG9vc2VfcmV2LnRjbDo1NTcKIG1zZ2lkICJSZW1vdGUiCiBtc2dzdHIgIkTDqXDDtHQgZGlzdGFudCIKIAotIzogZ2l0LWd1aS5zaDoxOTY3CisjOiBnaXQtZ3VpLnNoOjIyOTMKK21zZ2lkICJUb29scyIKK21zZ3N0ciAiT3V0aWxzIgorCisjOiBnaXQtZ3VpLnNoOjIzMDIKK21zZ2lkICJFeHBsb3JlIFdvcmtpbmcgQ29weSIKK21zZ3N0ciAiRXhwbG9yZXIgbGEgY29waWUgZGUgdHJhdmFpbCIKKworIzogZ2l0LWd1aS5zaDoyMzA3CiBtc2dpZCAiQnJvd3NlIEN1cnJlbnQgQnJhbmNoJ3MgRmlsZXMiCiBtc2dzdHIgIk5hdmlndWVyIGRhbnMgbGEgYnJhbmNoZSBjb3VyYW50ZSIKIAotIzogZ2l0LWd1aS5zaDoxOTcxCisjOiBnaXQtZ3VpLnNoOjIzMTEKIG1zZ2lkICJCcm93c2UgQnJhbmNoIEZpbGVzLi4uIgogbXNnc3RyICJOYXZpZ3VlciBkYW5zIGxhIGJyYW5jaGUuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MTk3NgorIzogZ2l0LWd1aS5zaDoyMzE2CiBtc2dpZCAiVmlzdWFsaXplIEN1cnJlbnQgQnJhbmNoJ3MgSGlzdG9yeSIKIG1zZ3N0ciAiVmlzdWFsaXNlciBoaXN0b3JpcXVlIGJyYW5jaGUgY291cmFudGUiCiAKLSM6IGdpdC1ndWkuc2g6MTk4MAorIzogZ2l0LWd1aS5zaDoyMzIwCiBtc2dpZCAiVmlzdWFsaXplIEFsbCBCcmFuY2ggSGlzdG9yeSIKIG1zZ3N0ciAiVm9pciBsJ2hpc3RvcmlxdWUgZGUgdG91dGVzIGxlcyBicmFuY2hlcyIKIAotIzogZ2l0LWd1aS5zaDoxOTg3CisjOiBnaXQtZ3VpLnNoOjIzMjcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJCcm93c2UgJXMncyBGaWxlcyIKIG1zZ3N0ciAiTmF2aWd1ZXIgbCdhcmJvcmVzY2VuY2UgZGUgJXMiCiAKLSM6IGdpdC1ndWkuc2g6MTk4OQorIzogZ2l0LWd1aS5zaDoyMzI5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVmlzdWFsaXplICVzJ3MgSGlzdG9yeSIKIG1zZ3N0ciAiVm9pciBsJ2hpc3RvcmlxdWUgZGUgbGEgYnJhbmNoZTogJXMiCiAKLSM6IGdpdC1ndWkuc2g6MTk5NCBsaWIvZGF0YWJhc2UudGNsOjI3IGxpYi9kYXRhYmFzZS50Y2w6NjcKKyM6IGdpdC1ndWkuc2g6MjMzNCBsaWIvZGF0YWJhc2UudGNsOjI3IGxpYi9kYXRhYmFzZS50Y2w6NjcKIG1zZ2lkICJEYXRhYmFzZSBTdGF0aXN0aWNzIgogbXNnc3RyICJTdGF0aXN0aXF1ZXMgZHUgZMOpcMO0dCIKIAotIzogZ2l0LWd1aS5zaDoxOTk3IGxpYi9kYXRhYmFzZS50Y2w6MzQKKyM6IGdpdC1ndWkuc2g6MjMzNyBsaWIvZGF0YWJhc2UudGNsOjM0CiBtc2dpZCAiQ29tcHJlc3MgRGF0YWJhc2UiCiBtc2dzdHIgIkNvbXByaW1lciBsZSBkw6lww7R0IgogCi0jOiBnaXQtZ3VpLnNoOjIwMDAKKyM6IGdpdC1ndWkuc2g6MjM0MAogbXNnaWQgIlZlcmlmeSBEYXRhYmFzZSIKIG1zZ3N0ciAiVsOpcmlmaWVyIGxlIGTDqXDDtHQiCiAKLSM6IGdpdC1ndWkuc2g6MjAwNyBnaXQtZ3VpLnNoOjIwMTEgZ2l0LWd1aS5zaDoyMDE1IGxpYi9zaG9ydGN1dC50Y2w6NworIzogZ2l0LWd1aS5zaDoyMzQ3IGdpdC1ndWkuc2g6MjM1MSBnaXQtZ3VpLnNoOjIzNTUgbGliL3Nob3J0Y3V0LnRjbDo3CiAjOiBsaWIvc2hvcnRjdXQudGNsOjM5IGxpYi9zaG9ydGN1dC50Y2w6NzEKIG1zZ2lkICJDcmVhdGUgRGVza3RvcCBJY29uIgogbXNnc3RyICJDcsOpZXIgaWPDtG5lIHN1ciBidXJlYXUiCiAKLSM6IGdpdC1ndWkuc2g6MjAyMyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjE3NyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjE4NQorIzogZ2l0LWd1aS5zaDoyMzYzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTgzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTkxCiBtc2dpZCAiUXVpdCIKIG1zZ3N0ciAiUXVpdHRlciIKIAotIzogZ2l0LWd1aS5zaDoyMDMxCisjOiBnaXQtZ3VpLnNoOjIzNzEKIG1zZ2lkICJVbmRvIgogbXNnc3RyICJEw6lmYWlyZSIKIAotIzogZ2l0LWd1aS5zaDoyMDM0CisjOiBnaXQtZ3VpLnNoOjIzNzQKIG1zZ2lkICJSZWRvIgogbXNnc3RyICJSZWZhaXJlIgogCi0jOiBnaXQtZ3VpLnNoOjIwMzggZ2l0LWd1aS5zaDoyNTQ1CisjOiBnaXQtZ3VpLnNoOjIzNzggZ2l0LWd1aS5zaDoyOTIzCiBtc2dpZCAiQ3V0IgogbXNnc3RyICJDb3VwZXIiCiAKLSM6IGdpdC1ndWkuc2g6MjA0MSBnaXQtZ3VpLnNoOjI1NDggZ2l0LWd1aS5zaDoyNjIyIGdpdC1ndWkuc2g6MjcxNQorIzogZ2l0LWd1aS5zaDoyMzgxIGdpdC1ndWkuc2g6MjkyNiBnaXQtZ3VpLnNoOjMwMDAgZ2l0LWd1aS5zaDozMDgyCiAjOiBsaWIvY29uc29sZS50Y2w6NjkKIG1zZ2lkICJDb3B5IgogbXNnc3RyICJDb3BpZXIiCiAKLSM6IGdpdC1ndWkuc2g6MjA0NCBnaXQtZ3VpLnNoOjI1NTEKKyM6IGdpdC1ndWkuc2g6MjM4NCBnaXQtZ3VpLnNoOjI5MjkKIG1zZ2lkICJQYXN0ZSIKIG1zZ3N0ciAiQ29sbGVyIgogCi0jOiBnaXQtZ3VpLnNoOjIwNDcgZ2l0LWd1aS5zaDoyNTU0IGxpYi9icmFuY2hfZGVsZXRlLnRjbDoyNgorIzogZ2l0LWd1aS5zaDoyMzg3IGdpdC1ndWkuc2g6MjkzMiBsaWIvYnJhbmNoX2RlbGV0ZS50Y2w6MjYKICM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6MzgKIG1zZ2lkICJEZWxldGUiCiBtc2dzdHIgIlN1cHByaW1lciIKIAotIzogZ2l0LWd1aS5zaDoyMDUxIGdpdC1ndWkuc2g6MjU1OCBnaXQtZ3VpLnNoOjI3MTkgbGliL2NvbnNvbGUudGNsOjcxCisjOiBnaXQtZ3VpLnNoOjIzOTEgZ2l0LWd1aS5zaDoyOTM2IGdpdC1ndWkuc2g6MzA4NiBsaWIvY29uc29sZS50Y2w6NzEKIG1zZ2lkICJTZWxlY3QgQWxsIgogbXNnc3RyICJUb3V0IHPDqWxlY3Rpb25uZXIiCiAKLSM6IGdpdC1ndWkuc2g6MjA2MAorIzogZ2l0LWd1aS5zaDoyNDAwCiBtc2dpZCAiQ3JlYXRlLi4uIgogbXNnc3RyICJDcsOpZXIuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MjA2NgorIzogZ2l0LWd1aS5zaDoyNDA2CiBtc2dpZCAiQ2hlY2tvdXQuLi4iCiBtc2dzdHIgIkNoYXJnZXIgKGNoZWNrb3V0KS4uLiIKIAotIzogZ2l0LWd1aS5zaDoyMDcyCisjOiBnaXQtZ3VpLnNoOjI0MTIKIG1zZ2lkICJSZW5hbWUuLi4iCiBtc2dzdHIgIlJlbm9tbWVyLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIwNzcgZ2l0LWd1aS5zaDoyMTg3CisjOiBnaXQtZ3VpLnNoOjI0MTcKIG1zZ2lkICJEZWxldGUuLi4iCiBtc2dzdHIgIlN1cHByaW1lci4uLiIKIAotIzogZ2l0LWd1aS5zaDoyMDgyCisjOiBnaXQtZ3VpLnNoOjI0MjIKIG1zZ2lkICJSZXNldC4uLiIKIG1zZ3N0ciAiUsOpaW5pdGlhbGlzZXIuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MjA5NCBnaXQtZ3VpLnNoOjI0OTEKKyM6IGdpdC1ndWkuc2g6MjQzMgorbXNnaWQgIkRvbmUiCittc2dzdHIgIkVmZmVjdHXDqSIKKworIzogZ2l0LWd1aS5zaDoyNDM0Cittc2dpZCAiQ29tbWl0QEB2ZXJiIgorbXNnc3RyICJDb21taXRlckBAdmVyYiIKKworIzogZ2l0LWd1aS5zaDoyNDQzIGdpdC1ndWkuc2g6Mjg2NAogbXNnaWQgIk5ldyBDb21taXQiCiBtc2dzdHIgIk5vdXZlYXUgY29tbWl0IgogCi0jOiBnaXQtZ3VpLnNoOjIxMDIgZ2l0LWd1aS5zaDoyNDk4CisjOiBnaXQtZ3VpLnNoOjI0NTEgZ2l0LWd1aS5zaDoyODcxCiBtc2dpZCAiQW1lbmQgTGFzdCBDb21taXQiCiBtc2dzdHIgIkNvcnJpZ2VyIGRlcm5pZXIgY29tbWl0IgogCi0jOiBnaXQtZ3VpLnNoOjIxMTEgZ2l0LWd1aS5zaDoyNDU4IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6OTkKKyM6IGdpdC1ndWkuc2g6MjQ2MSBnaXQtZ3VpLnNoOjI4MjUgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo5OQogbXNnaWQgIlJlc2NhbiIKIG1zZ3N0ciAiUmVjaGFyZ2VyIG1vZGlmcy4iCiAKLSM6IGdpdC1ndWkuc2g6MjExNworIzogZ2l0LWd1aS5zaDoyNDY3CiBtc2dpZCAiU3RhZ2UgVG8gQ29tbWl0IgogbXNnc3RyICJJbmRleGVyIgogCi0jOiBnaXQtZ3VpLnNoOjIxMjMKKyM6IGdpdC1ndWkuc2g6MjQ3MwogbXNnaWQgIlN0YWdlIENoYW5nZWQgRmlsZXMgVG8gQ29tbWl0IgogbXNnc3RyICJJbmRleGVyIHRvdXRlcyBtb2RpZmljYXRpb25zIgogCi0jOiBnaXQtZ3VpLnNoOjIxMjkKKyM6IGdpdC1ndWkuc2g6MjQ3OQogbXNnaWQgIlVuc3RhZ2UgRnJvbSBDb21taXQiCiBtc2dzdHIgIkTDqXNpbmRleGVyIgogCi0jOiBnaXQtZ3VpLnNoOjIxMzQgbGliL2luZGV4LnRjbDozOTUKKyM6IGdpdC1ndWkuc2g6MjQ4NCBsaWIvaW5kZXgudGNsOjQxMAogbXNnaWQgIlJldmVydCBDaGFuZ2VzIgogbXNnc3RyICJBbm51bGVyIGxlcyBtb2RpZmljYXRpb25zIChyZXZlcnQpIgogCi0jOiBnaXQtZ3VpLnNoOjIxNDEgZ2l0LWd1aS5zaDoyNzAyCisjOiBnaXQtZ3VpLnNoOjI0OTEgZ2l0LWd1aS5zaDozMDY5CiBtc2dpZCAiU2hvdyBMZXNzIENvbnRleHQiCiBtc2dzdHIgIk1vbnRyZXIgbW9pbnMgZGUgY29udGV4dGUiCiAKLSM6IGdpdC1ndWkuc2g6MjE0NSBnaXQtZ3VpLnNoOjI3MDYKKyM6IGdpdC1ndWkuc2g6MjQ5NSBnaXQtZ3VpLnNoOjMwNzMKIG1zZ2lkICJTaG93IE1vcmUgQ29udGV4dCIKIG1zZ3N0ciAiTW9udHJlciBwbHVzIGRlIGNvbnRleHRlIgogCi0jOiBnaXQtZ3VpLnNoOjIxNTEgZ2l0LWd1aS5zaDoyNDcwIGdpdC1ndWkuc2g6MjU2OQorIzogZ2l0LWd1aS5zaDoyNTAyIGdpdC1ndWkuc2g6MjgzOCBnaXQtZ3VpLnNoOjI5NDcKIG1zZ2lkICJTaWduIE9mZiIKIG1zZ3N0ciAiU2lnbmVyIgogCi0jOiBnaXQtZ3VpLnNoOjIxNTUgZ2l0LWd1aS5zaDoyNDc0Ci1tc2dpZCAiQ29tbWl0QEB2ZXJiIgotbXNnc3RyICJDb21taXRlciIKLQotIzogZ2l0LWd1aS5zaDoyMTY2CisjOiBnaXQtZ3VpLnNoOjI1MTgKIG1zZ2lkICJMb2NhbCBNZXJnZS4uLiIKIG1zZ3N0ciAiRnVzaW9uIGxvY2FsZS4uLiIKIAotIzogZ2l0LWd1aS5zaDoyMTcxCisjOiBnaXQtZ3VpLnNoOjI1MjMKIG1zZ2lkICJBYm9ydCBNZXJnZS4uLiIKIG1zZ3N0ciAiQWJhbmRvbm5lciBmdXNpb24uLi4iCiAKLSM6IGdpdC1ndWkuc2g6MjE4MworIzogZ2l0LWd1aS5zaDoyNTM1IGdpdC1ndWkuc2g6MjU3NQorbXNnaWQgIkFkZC4uLiIKK21zZ3N0ciAiQWpvdXRlci4uLiIKKworIzogZ2l0LWd1aS5zaDoyNTM5CiBtc2dpZCAiUHVzaC4uLiIKIG1zZ3N0ciAiUG91c3Nlci4uLiIKIAotIzogZ2l0LWd1aS5zaDoyMTk3IGdpdC1ndWkuc2g6MjIxOSBsaWIvYWJvdXQudGNsOjE0Ci0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ0IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTAKKyM6IGdpdC1ndWkuc2g6MjU0MworbXNnaWQgIkRlbGV0ZSBCcmFuY2guLi4iCittc2dzdHIgIlN1cHByaW1lciBicmFuY2hlLi4uIgorCisjOiBnaXQtZ3VpLnNoOjI1NTMgZ2l0LWd1aS5zaDoyNTg5IGxpYi9hYm91dC50Y2w6MTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIkFib3V0ICVzIgogbXNnc3RyICLDgCBwcm9wb3MgZGUgJXMiCiAKLSM6IGdpdC1ndWkuc2g6MjIwMQorIzogZ2l0LWd1aS5zaDoyNTU3CiBtc2dpZCAiUHJlZmVyZW5jZXMuLi4iCiBtc2dzdHIgIlByw6lmw6lyZW5jZXMuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MjIwOSBnaXQtZ3VpLnNoOjI3NDAKKyM6IGdpdC1ndWkuc2g6MjU2NSBnaXQtZ3VpLnNoOjMxMTUKIG1zZ2lkICJPcHRpb25zLi4uIgogbXNnc3RyICJPcHRpb25zLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIyMTUgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NworIzogZ2l0LWd1aS5zaDoyNTc2Cittc2dpZCAiUmVtb3ZlLi4uIgorbXNnc3RyICJTdXBwcmltZXIuLi4iCisKKyM6IGdpdC1ndWkuc2g6MjU4NSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwCiBtc2dpZCAiSGVscCIKIG1zZ3N0ciAiQWlkZSIKIAotIzogZ2l0LWd1aS5zaDoyMjU2CisjOiBnaXQtZ3VpLnNoOjI2MTEKIG1zZ2lkICJPbmxpbmUgRG9jdW1lbnRhdGlvbiIKIG1zZ3N0ciAiRG9jdW1lbnRhdGlvbiBlbiBsaWduZSIKIAotIzogZ2l0LWd1aS5zaDoyMzQwCisjOiBnaXQtZ3VpLnNoOjI2MTQgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU2Cittc2dpZCAiU2hvdyBTU0ggS2V5IgorbXNnc3RyICJNb250cmVyIGNsw6kgU1NIIgorCisjOiBnaXQtZ3VpLnNoOjI3MDcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJmYXRhbDogY2Fubm90IHN0YXQgcGF0aCAlczogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSIKIG1zZ3N0ciAiIgogImVycmV1ciBmYXRhbGUgOiBwYXMgZCdpbmZvcyBzdXIgbGUgY2hlbWluICVzIDogRmljaGllciBvdSByw6lwZXJ0b2lyZSAiCiAiaW5leGlzdGFudCIKIAotIzogZ2l0LWd1aS5zaDoyMzczCisjOiBnaXQtZ3VpLnNoOjI3NDAKIG1zZ2lkICJDdXJyZW50IEJyYW5jaDoiCiBtc2dzdHIgIkJyYW5jaGUgY291cmFudGUgOiIKIAotIzogZ2l0LWd1aS5zaDoyMzk0CisjOiBnaXQtZ3VpLnNoOjI3NjEKIG1zZ2lkICJTdGFnZWQgQ2hhbmdlcyAoV2lsbCBDb21taXQpIgogbXNnc3RyICJNb2RpZnMuIGluZGV4w6llcyAocG91ciBjb21taXQpIgogCi0jOiBnaXQtZ3VpLnNoOjI0MTQKKyM6IGdpdC1ndWkuc2g6Mjc4MQogbXNnaWQgIlVuc3RhZ2VkIENoYW5nZXMiCiBtc2dzdHIgIk1vZGlmcy4gbm9uIGluZGV4w6llcyIKIAotIzogZ2l0LWd1aS5zaDoyNDY0CisjOiBnaXQtZ3VpLnNoOjI4MzEKIG1zZ2lkICJTdGFnZSBDaGFuZ2VkIgogbXNnc3RyICJJbmRleGVyIG1vZGlmcy4iCiAKLSM6IGdpdC1ndWkuc2g6MjQ4MCBsaWIvdHJhbnNwb3J0LnRjbDo5MyBsaWIvdHJhbnNwb3J0LnRjbDoxODIKKyM6IGdpdC1ndWkuc2g6Mjg1MCBsaWIvdHJhbnNwb3J0LnRjbDo5MyBsaWIvdHJhbnNwb3J0LnRjbDoxODIKIG1zZ2lkICJQdXNoIgogbXNnc3RyICJQb3Vzc2VyIgogCi0jOiBnaXQtZ3VpLnNoOjI1MTAKKyM6IGdpdC1ndWkuc2g6Mjg4NQogbXNnaWQgIkluaXRpYWwgQ29tbWl0IE1lc3NhZ2U6IgogbXNnc3RyICJNZXNzYWdlIGRlIGNvbW1pdCBpbml0aWFsIDoiCiAKLSM6IGdpdC1ndWkuc2g6MjUxMQorIzogZ2l0LWd1aS5zaDoyODg2CiBtc2dpZCAiQW1lbmRlZCBDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIk1lc3NhZ2UgZGUgY29tbWl0IGNvcnJpZ8OpIDoiCiAKLSM6IGdpdC1ndWkuc2g6MjUxMgorIzogZ2l0LWd1aS5zaDoyODg3CiBtc2dpZCAiQW1lbmRlZCBJbml0aWFsIENvbW1pdCBNZXNzYWdlOiIKIG1zZ3N0ciAiTWVzc2FnZSBkZSBjb21taXQgaW5pdGlhbCBjb3JyaWfDqSA6IgogCi0jOiBnaXQtZ3VpLnNoOjI1MTMKKyM6IGdpdC1ndWkuc2g6Mjg4OAogbXNnaWQgIkFtZW5kZWQgTWVyZ2UgQ29tbWl0IE1lc3NhZ2U6IgogbXNnc3RyICJNZXNzYWdlIGRlIGNvbW1pdCBkZSBmdXNpb24gY29ycmlnw6kgOiIKIAotIzogZ2l0LWd1aS5zaDoyNTE0CisjOiBnaXQtZ3VpLnNoOjI4ODkKIG1zZ2lkICJNZXJnZSBDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIk1lc3NhZ2UgZGUgY29tbWl0IGRlIGZ1c2lvbiA6IgogCi0jOiBnaXQtZ3VpLnNoOjI1MTUKKyM6IGdpdC1ndWkuc2g6Mjg5MAogbXNnaWQgIkNvbW1pdCBNZXNzYWdlOiIKIG1zZ3N0ciAiTWVzc2FnZSBkZSBjb21taXQgOiIKIAotIzogZ2l0LWd1aS5zaDoyNTYxIGdpdC1ndWkuc2g6MjcyMyBsaWIvY29uc29sZS50Y2w6NzMKKyM6IGdpdC1ndWkuc2g6MjkzOSBnaXQtZ3VpLnNoOjMwOTAgbGliL2NvbnNvbGUudGNsOjczCiBtc2dpZCAiQ29weSBBbGwiCiBtc2dzdHIgIkNvcGllciB0b3V0IgogCi0jOiBnaXQtZ3VpLnNoOjI1ODUgbGliL2JsYW1lLnRjbDoxMDAKKyM6IGdpdC1ndWkuc2g6Mjk2MyBsaWIvYmxhbWUudGNsOjEwNAogbXNnaWQgIkZpbGU6IgogbXNnc3RyICJGaWNoaWVyIDoiCiAKLSM6IGdpdC1ndWkuc2g6MjY5MQotbXNnaWQgIkFwcGx5L1JldmVyc2UgSHVuayIKLW1zZ3N0ciAiQXBwbGlxdWVyL0ludmVyc2VyIHNlY3Rpb24iCi0KLSM6IGdpdC1ndWkuc2g6MjY5NgotbXNnaWQgIkFwcGx5L1JldmVyc2UgTGluZSIKLW1zZ3N0ciAiQXBwbGlxdWVyL0ludmVyc2VyIGxhIGxpZ25lIgotCi0jOiBnaXQtZ3VpLnNoOjI3MTEKKyM6IGdpdC1ndWkuc2g6MzA3OAogbXNnaWQgIlJlZnJlc2giCiBtc2dzdHIgIlJhZnJhaWNoaXIiCiAKLSM6IGdpdC1ndWkuc2g6MjczMgorIzogZ2l0LWd1aS5zaDozMDk5CiBtc2dpZCAiRGVjcmVhc2UgRm9udCBTaXplIgogbXNnc3RyICJEaW1pbnVlciBsYSBwb2xpY2UiCiAKLSM6IGdpdC1ndWkuc2g6MjczNgorIzogZ2l0LWd1aS5zaDozMTAzCiBtc2dpZCAiSW5jcmVhc2UgRm9udCBTaXplIgogbXNnc3RyICJBZ3JhbmRpciBsYSBwb2xpY2UiCiAKLSM6IGdpdC1ndWkuc2g6Mjc0NworIzogZ2l0LWd1aS5zaDozMTExIGxpYi9ibGFtZS50Y2w6MjgxCittc2dpZCAiRW5jb2RpbmciCittc2dzdHIgIkVuY29kYWdlIgorCisjOiBnaXQtZ3VpLnNoOjMxMjIKK21zZ2lkICJBcHBseS9SZXZlcnNlIEh1bmsiCittc2dzdHIgIkFwcGxpcXVlci9JbnZlcnNlciBzZWN0aW9uIgorCisjOiBnaXQtZ3VpLnNoOjMxMjcKK21zZ2lkICJBcHBseS9SZXZlcnNlIExpbmUiCittc2dzdHIgIkFwcGxpcXVlci9JbnZlcnNlciBsYSBsaWduZSIKKworIzogZ2l0LWd1aS5zaDozMTM3Cittc2dpZCAiUnVuIE1lcmdlIFRvb2wiCittc2dzdHIgIkxhbmNlciBvdXRpbCBkZSBtZXJnZSIKKworIzogZ2l0LWd1aS5zaDozMTQyCittc2dpZCAiVXNlIFJlbW90ZSBWZXJzaW9uIgorbXNnc3RyICJVdGlsaXNlciBsYSB2ZXJzaW9uIGRpc3RhbnRlIgorCisjOiBnaXQtZ3VpLnNoOjMxNDYKK21zZ2lkICJVc2UgTG9jYWwgVmVyc2lvbiIKK21zZ3N0ciAiVXRpbGlzZXIgbGEgdmVyc2lvbiBsb2NhbGUiCisKKyM6IGdpdC1ndWkuc2g6MzE1MAorbXNnaWQgIlJldmVydCBUbyBCYXNlIgorbXNnc3RyICJSZXZlbmlyIMOgIGxhIHZlcnNpb24gZGUgYmFzZSIKKworIzogZ2l0LWd1aS5zaDozMTY5CiBtc2dpZCAiVW5zdGFnZSBIdW5rIEZyb20gQ29tbWl0IgogbXNnc3RyICJEw6lzaW5kZXhlciBsYSBzZWN0aW9uIgogCi0jOiBnaXQtZ3VpLnNoOjI3NDgKKyM6IGdpdC1ndWkuc2g6MzE3MAogbXNnaWQgIlVuc3RhZ2UgTGluZSBGcm9tIENvbW1pdCIKIG1zZ3N0ciAiRMOpc2luZGV4ZXIgbGEgbGlnbmUiCiAKLSM6IGdpdC1ndWkuc2g6Mjc1MAorIzogZ2l0LWd1aS5zaDozMTcyCiBtc2dpZCAiU3RhZ2UgSHVuayBGb3IgQ29tbWl0IgogbXNnc3RyICJJbmRleGVyIGxhIHNlY3Rpb24iCiAKLSM6IGdpdC1ndWkuc2g6Mjc1MQorIzogZ2l0LWd1aS5zaDozMTczCiBtc2dpZCAiU3RhZ2UgTGluZSBGb3IgQ29tbWl0IgogbXNnc3RyICJJbmRleGVyIGxhIGxpZ25lIgogCi0jOiBnaXQtZ3VpLnNoOjI3NzEKKyM6IGdpdC1ndWkuc2g6MzE5NgogbXNnaWQgIkluaXRpYWxpemluZy4uLiIKIG1zZ3N0ciAiSW5pdGlhbGlzYXRpb24uLi4iCiAKLSM6IGdpdC1ndWkuc2g6Mjg3NgorIzogZ2l0LWd1aS5zaDozMzAxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIlBvc3NpYmxlIGVudmlyb25tZW50IGlzc3VlcyBleGlzdC5cbiIKQEAgLTQ1NSw3ICs1MjAsNyBAQAogInNvdXMtcHJvY2Vzc3VzIGRlIEdpdCBsYW5jw6lzIHBhciAlc1xuIgogIlxuIgogCi0jOiBnaXQtZ3VpLnNoOjI5MDYKKyM6IGdpdC1ndWkuc2g6MzMzMQogbXNnaWQgIiIKICJcbiIKICJUaGlzIGlzIGR1ZSB0byBhIGtub3duIGlzc3VlIHdpdGggdGhlXG4iCkBAIC00NjUsNyArNTMwLDcgQEAKICJDZWNpIGVzdCBkdSDDoCB1biBwcm9ibMOobWUgY29ubnUgYXZlY1xuIgogImxlIGJpbmFpcmUgVGNsIGRpc3RyaWJ1w6kgcGFyIEN5Z3dpbi4iCiAKLSM6IGdpdC1ndWkuc2g6MjkxMQorIzogZ2l0LWd1aS5zaDozMzM2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgpAQCAtNDg2LDgwICs1NTEsMTA4IEBACiBtc2dpZCAiZ2l0LWd1aSAtIGEgZ3JhcGhpY2FsIHVzZXIgaW50ZXJmYWNlIGZvciBHaXQuIgogbXNnc3RyICJnaXQtZ3VpIC0gdW5lIGludGVyZmFjZSBncmFwaGlxdWUgdXRpbGlzYXRldXIgcG91ciBHaXQiCiAKLSM6IGxpYi9ibGFtZS50Y2w6NzAKKyM6IGxpYi9ibGFtZS50Y2w6NzIKIG1zZ2lkICJGaWxlIFZpZXdlciIKIG1zZ3N0ciAiVmlzaW9ubmV1ciBkZSBmaWNoaWVyIgogCi0jOiBsaWIvYmxhbWUudGNsOjc0CisjOiBsaWIvYmxhbWUudGNsOjc4CiBtc2dpZCAiQ29tbWl0OiIKIG1zZ3N0ciAiQ29tbWl0IDoiCiAKLSM6IGxpYi9ibGFtZS50Y2w6MjU3CisjOiBsaWIvYmxhbWUudGNsOjI3MQogbXNnaWQgIkNvcHkgQ29tbWl0IgogbXNnc3RyICJDb3BpZXIgY29tbWl0IgogCi0jOiBsaWIvYmxhbWUudGNsOjI2MAorIzogbGliL2JsYW1lLnRjbDoyNzUKK21zZ2lkICJGaW5kIFRleHQuLi4iCittc2dzdHIgIkNoZXJjaGVyIHRleHRlLi4uIgorCisjOiBsaWIvYmxhbWUudGNsOjI4NAogbXNnaWQgIkRvIEZ1bGwgQ29weSBEZXRlY3Rpb24iCiBtc2dzdHIgIkxhbmNlciBsYSBkw6l0ZWN0aW9uIGFwcHJvZm9uZGllIGRlcyBjb3BpZXMiCiAKLSM6IGxpYi9ibGFtZS50Y2w6Mzg4CisjOiBsaWIvYmxhbWUudGNsOjI4OAorbXNnaWQgIlNob3cgSGlzdG9yeSBDb250ZXh0IgorbXNnc3RyICJNb250cmVyIGwnaGlzdG9yaXF1ZSIKKworIzogbGliL2JsYW1lLnRjbDoyOTEKK21zZ2lkICJCbGFtZSBQYXJlbnQgQ29tbWl0IgorbXNnc3RyICJCbMOibWVyIGxlIGNvbW1pdCBwYXJlbnQiCisKKyM6IGxpYi9ibGFtZS50Y2w6NDUwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmVhZGluZyAlcy4uLiIKIG1zZ3N0ciAiTGVjdHVyZSBkZSAlcy4uLiIKIAotIzogbGliL2JsYW1lLnRjbDo0OTIKKyM6IGxpYi9ibGFtZS50Y2w6NTU3CiBtc2dpZCAiTG9hZGluZyBjb3B5L21vdmUgdHJhY2tpbmcgYW5ub3RhdGlvbnMuLi4iCiBtc2dzdHIgIkNoYXJnZW1lbnQgZGVzIGFubm90YXRpb25zIGRlIHN1aXZpIGRlcyBjb3BpZXMvZMOpcGxhY2VtZW50cy4uLiIKIAotIzogbGliL2JsYW1lLnRjbDo1MTIKKyM6IGxpYi9ibGFtZS50Y2w6NTc3CiBtc2dpZCAibGluZXMgYW5ub3RhdGVkIgogbXNnc3RyICJsaWduZXMgYW5ub3TDqWVzIgogCi0jOiBsaWIvYmxhbWUudGNsOjcwNAorIzogbGliL2JsYW1lLnRjbDo3NjkKIG1zZ2lkICJMb2FkaW5nIG9yaWdpbmFsIGxvY2F0aW9uIGFubm90YXRpb25zLi4uIgogbXNnc3RyICJDaGFyZ2VtZW50IGRlcyBhbm5vdGF0aW9ucyBkJ2VtcGxhY2VtZW50IG9yaWdpbmFsIgogCi0jOiBsaWIvYmxhbWUudGNsOjcwNworIzogbGliL2JsYW1lLnRjbDo3NzIKIG1zZ2lkICJBbm5vdGF0aW9uIGNvbXBsZXRlLiIKIG1zZ3N0ciAiQW5ub3RhdGlvbiB0ZXJtaW7DqWUuIgogCi0jOiBsaWIvYmxhbWUudGNsOjczNworIzogbGliL2JsYW1lLnRjbDo4MDIKIG1zZ2lkICJCdXN5IgogbXNnc3RyICJPY2N1cMOpIgogCi0jOiBsaWIvYmxhbWUudGNsOjczOAorIzogbGliL2JsYW1lLnRjbDo4MDMKIG1zZ2lkICJBbm5vdGF0aW9uIHByb2Nlc3MgaXMgYWxyZWFkeSBydW5uaW5nLiIKIG1zZ3N0ciAiQW5ub3RhdGlvbiBlbiBjb3VycyBkJ2V4w6ljdXRpb24uIgogCi0jOiBsaWIvYmxhbWUudGNsOjc3NworIzogbGliL2JsYW1lLnRjbDo4NDIKIG1zZ2lkICJSdW5uaW5nIHRob3JvdWdoIGNvcHkgZGV0ZWN0aW9uLi4uIgogbXNnc3RyICJSZWNoZXJjaGUgZGUgY29waWUgYXBwcm9mb25kaWUgZW4gY291cnMuLi4iCiAKLSM6IGxpYi9ibGFtZS50Y2w6ODI3CisjOiBsaWIvYmxhbWUudGNsOjkxMAogbXNnaWQgIkxvYWRpbmcgYW5ub3RhdGlvbi4uLiIKIG1zZ3N0ciAiQ2hhcmdlbWVudCBkZXMgYW5ub3RhdGlvbnMuLi4iCiAKLSM6IGxpYi9ibGFtZS50Y2w6ODgzCisjOiBsaWIvYmxhbWUudGNsOjk2NAogbXNnaWQgIkF1dGhvcjoiCiBtc2dzdHIgIkF1dGV1ciA6IgogCi0jOiBsaWIvYmxhbWUudGNsOjg4NworIzogbGliL2JsYW1lLnRjbDo5NjgKIG1zZ2lkICJDb21taXR0ZXI6IgogbXNnc3RyICJDb21taXRldXIgOiIKIAotIzogbGliL2JsYW1lLnRjbDo4OTIKKyM6IGxpYi9ibGFtZS50Y2w6OTczCiBtc2dpZCAiT3JpZ2luYWwgRmlsZToiCiBtc2dzdHIgIkZpY2hpZXIgb3JpZ2luYWwgOiIKIAotIzogbGliL2JsYW1lLnRjbDoxMDA2CisjOiBsaWIvYmxhbWUudGNsOjEwMjEKK21zZ2lkICJDYW5ub3QgZmluZCBIRUFEIGNvbW1pdDoiCittc2dzdHIgIkltcG9zc2libGUgZGUgdHJvdXZlciBsZSBjb21taXQgSEVBRDoiCisKKyM6IGxpYi9ibGFtZS50Y2w6MTA3NgorbXNnaWQgIkNhbm5vdCBmaW5kIHBhcmVudCBjb21taXQ6IgorbXNnc3RyICJJbXBvc3NpYmxlIGRlIHRyb3V2ZXIgbGUgY29tbWl0IHBhcmVudDoiCisKKyM6IGxpYi9ibGFtZS50Y2w6MTA5MQorbXNnaWQgIlVuYWJsZSB0byBkaXNwbGF5IHBhcmVudCIKK21zZ3N0ciAiSW1wb3NzaWJsZSBkJ2FmZmljaGVyIGxlIHBhcmVudCIKKworIzogbGliL2JsYW1lLnRjbDoxMDkyIGxpYi9kaWZmLnRjbDoyOTcKK21zZ2lkICJFcnJvciBsb2FkaW5nIGRpZmY6IgorbXNnc3RyICJFcnJldXIgbG9ycyBkdSBjaGFyZ2VtZW50IGRlcyBkaWZmw6lyZW5jZXMgOiIKKworIzogbGliL2JsYW1lLnRjbDoxMjMyCiBtc2dpZCAiT3JpZ2luYWxseSBCeToiCiBtc2dzdHIgIkEgbCdvcmlnaW5lIHBhciA6IgogCi0jOiBsaWIvYmxhbWUudGNsOjEwMTIKKyM6IGxpYi9ibGFtZS50Y2w6MTIzOAogbXNnaWQgIkluIEZpbGU6IgogbXNnc3RyICJEYW5zIGxlIGZpY2hpZXIgOiIKIAotIzogbGliL2JsYW1lLnRjbDoxMDE3CisjOiBsaWIvYmxhbWUudGNsOjEyNDMKIG1zZ2lkICJDb3BpZWQgT3IgTW92ZWQgSGVyZSBCeToiCiBtc2dzdHIgIkNvcGnDqSBvdSBkw6lwbGFjw6kgaWNpIHBhciA6IgogCkBAIC01NzMsMTYgKzY2NiwxOCBAQAogCiAjOiBsaWIvYnJhbmNoX2NoZWNrb3V0LnRjbDoyNyBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6MzUKICM6IGxpYi9icmFuY2hfZGVsZXRlLnRjbDozMiBsaWIvYnJhbmNoX3JlbmFtZS50Y2w6MzAgbGliL2Jyb3dzZXIudGNsOjI4MgotIzogbGliL2NoZWNrb3V0X29wLnRjbDo1NDQgbGliL2Nob29zZV9mb250LnRjbDo0MyBsaWIvbWVyZ2UudGNsOjE3MQotIzogbGliL29wdGlvbi50Y2w6MTAzIGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NDIgbGliL3RyYW5zcG9ydC50Y2w6OTcKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6NTQ0IGxpYi9jaG9vc2VfZm9udC50Y2w6NDMgbGliL21lcmdlLnRjbDoxNzIKKyM6IGxpYi9vcHRpb24udGNsOjEyNSBsaWIvcmVtb3RlX2FkZC50Y2w6MzIgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo0MgorIzogbGliL3Rvb2xzX2RsZy50Y2w6NDAgbGliL3Rvb2xzX2RsZy50Y2w6MjA0IGxpYi90b29sc19kbGcudGNsOjM1MgorIzogbGliL3RyYW5zcG9ydC50Y2w6OTcKIG1zZ2lkICJDYW5jZWwiCiBtc2dzdHIgIkFubnVsZXIiCiAKLSM6IGxpYi9icmFuY2hfY2hlY2tvdXQudGNsOjMyIGxpYi9icm93c2VyLnRjbDoyODcKKyM6IGxpYi9icmFuY2hfY2hlY2tvdXQudGNsOjMyIGxpYi9icm93c2VyLnRjbDoyODcgbGliL3Rvb2xzX2RsZy50Y2w6MzI4CiBtc2dpZCAiUmV2aXNpb24iCiBtc2dzdHIgIlLDqXZpc2lvbiIKIAotIzogbGliL2JyYW5jaF9jaGVja291dC50Y2w6MzYgbGliL2JyYW5jaF9jcmVhdGUudGNsOjY5IGxpYi9vcHRpb24udGNsOjI0NAorIzogbGliL2JyYW5jaF9jaGVja291dC50Y2w6MzYgbGliL2JyYW5jaF9jcmVhdGUudGNsOjY5IGxpYi9vcHRpb24udGNsOjI4MAogbXNnaWQgIk9wdGlvbnMiCiBtc2dzdHIgIk9wdGlvbnMiCiAKQEAgLTYwMiw3ICs2OTcsNyBAQAogbXNnaWQgIkNyZWF0ZSBOZXcgQnJhbmNoIgogbXNnc3RyICJDcsOpZXIgbm91dmVsbGUgYnJhbmNoZSIKIAotIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjMxIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzcxCisjOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6MzEgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozNzcKIG1zZ2lkICJDcmVhdGUiCiBtc2dzdHIgIkNyw6llciIKIApAQCAtNjEwLDcgKzcwNSw3IEBACiBtc2dpZCAiQnJhbmNoIE5hbWUiCiBtc2dzdHIgIk5vbSBkZSBicmFuY2hlIgogCi0jOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6NDMKKyM6IGxpYi9icmFuY2hfY3JlYXRlLnRjbDo0MyBsaWIvcmVtb3RlX2FkZC50Y2w6MzkgbGliL3Rvb2xzX2RsZy50Y2w6NTAKIG1zZ2lkICJOYW1lOiIKIG1zZ3N0ciAiTm9tIDoiCiAKQEAgLTc1NSw5ICs4NTAsOSBAQAogbXNnaWQgIkJyb3dzZSBCcmFuY2ggRmlsZXMiCiBtc2dzdHIgIk5hdmlndWVyIGRhbnMgbGVzIGZpY2hpZXJzIGRlIGxlIGJyYW5jaGUiCiAKLSM6IGxpYi9icm93c2VyLnRjbDoyNzggbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozODcKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDcyIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDgyCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk4NQorIzogbGliL2Jyb3dzZXIudGNsOjI3OCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM5NAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0ODAgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0OTEKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTk1CiBtc2dpZCAiQnJvd3NlIgogbXNnc3RyICJOYXZpZ3VlciIKIApAQCAtNzcyLDYgKzg2Nyw3IEBACiBtc2dzdHIgImVycmV1ciBmYXRhbGUgOiBJbXBvc3NpYmxlIGRlIHLDqXNvdWRyZSAlcyIKIAogIzogbGliL2NoZWNrb3V0X29wLnRjbDoxNDUgbGliL2NvbnNvbGUudGNsOjgxIGxpYi9kYXRhYmFzZS50Y2w6MzEKKyM6IGxpYi9zc2hrZXkudGNsOjUzCiBtc2dpZCAiQ2xvc2UiCiBtc2dzdHIgIkZlcm1lciIKIApAQCAtODg0LDcgKzk4MCw3IEBACiBtc2dpZCAiUmVzZXQgJyVzJz8iCiBtc2dzdHIgIlLDqWluaXRpYWxpc2VyICclcycgPyIKIAotIzogbGliL2NoZWNrb3V0X29wLnRjbDo1MzIgbGliL21lcmdlLnRjbDoxNjMKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6NTMyIGxpYi9tZXJnZS50Y2w6MTY0IGxpYi90b29sc19kbGcudGNsOjM0MwogbXNnaWQgIlZpc3VhbGl6ZSIKIG1zZ3N0ciAiVmlzdWFsaXNlciIKIApAQCAtOTM0LDIyNSArMTAzMCwyMjkgQEAKIG1zZ2lkICJHaXQgR3VpIgogbXNnc3RyICJHaXQgR3VpIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjgxIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Mzc2CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg3IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzgyCiBtc2dpZCAiQ3JlYXRlIE5ldyBSZXBvc2l0b3J5IgogbXNnc3RyICJDcsOpZXIgbm91dmVhdSBkw6lww7R0IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkzCiBtc2dpZCAiTmV3Li4uIgogbXNnc3RyICJOb3V2ZWF1Li4uIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk0IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDU4CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ2NQogbXNnaWQgIkNsb25lIEV4aXN0aW5nIFJlcG9zaXRvcnkiCiBtc2dzdHIgIkNsb25lciBkw6lww7R0IGV4aXN0YW50IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDYKIG1zZ2lkICJDbG9uZS4uLiIKIG1zZ3N0ciAiQ2xvbmVyLi4uIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwNyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk3NAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMTMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5ODMKIG1zZ2lkICJPcGVuIEV4aXN0aW5nIFJlcG9zaXRvcnkiCiBtc2dzdHIgIk91dnJpciBkw6lww7R0IGV4aXN0YW50IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjExMworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMTkKIG1zZ2lkICJPcGVuLi4uIgogbXNnc3RyICJPdXZyaXIuLi4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTI2CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEzMgogbXNnaWQgIlJlY2VudCBSZXBvc2l0b3JpZXMiCiBtc2dzdHIgIkTDqXDDtHQgcsOpY2VtbWVudCB1dGlsaXPDqXMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTMyCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEzOAogbXNnaWQgIk9wZW4gUmVjZW50IFJlcG9zaXRvcnk6IgogbXNnc3RyICJPdXZyaXIgZMOpcMO0dCByw6ljZW50IDoiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Mjk2IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzAzCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjMxMAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozMDIgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozMDkKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzE2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIGNyZWF0ZSByZXBvc2l0b3J5ICVzOiIKIG1zZ3N0ciAiTGEgY3LDqWF0aW9uIGR1IGTDqXDDtHQgJXMgYSDDqWNob3XDqWUgOiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozODEgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NzYKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Mzg3CiBtc2dpZCAiRGlyZWN0b3J5OiIKIG1zZ3N0ciAiUsOpcGVydG9pcmUgOiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0MTAgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MzUKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAwNworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0MTcgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1NDQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAxNwogbXNnaWQgIkdpdCBSZXBvc2l0b3J5IgogbXNnc3RyICJEw6lww7R0IEdpdCIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0MzUKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiRGlyZWN0b3J5ICVzIGFscmVhZHkgZXhpc3RzLiIKIG1zZ3N0ciAiTGUgcsOpcGVydG9pcmUgJXMgZXhpc3RlIGTDqWrDoC4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDM5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ0NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIkZpbGUgJXMgYWxyZWFkeSBleGlzdHMuIgogbXNnc3RyICJMZSBmaWNoaWVyICVzIGV4aXN0ZSBkw6lqw6AuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ1MworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NjAKIG1zZ2lkICJDbG9uZSIKIG1zZ3N0ciAiQ2xvbmVyIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ2NgotbXNnaWQgIlVSTDoiCi1tc2dzdHIgIlVSTCA6IgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NzMKK21zZ2lkICJTb3VyY2UgTG9jYXRpb246IgorbXNnc3RyICJFbXBsYWNlbWVudCBzb3VyY2U6IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ4NworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0ODQKK21zZ2lkICJUYXJnZXQgRGlyZWN0b3J5OiIKK21zZ3N0ciAiUsOpcGVydG9pcmUgY2libGU6IgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ5NgogbXNnaWQgIkNsb25lIFR5cGU6IgogbXNnc3RyICJUeXBlIGRlIGNsb25hZ2UgOiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0OTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTAyCiBtc2dpZCAiU3RhbmRhcmQgKEZhc3QsIFNlbWktUmVkdW5kYW50LCBIYXJkbGlua3MpIgogbXNnc3RyICJTdGFuZGFyZCAocmFwaWRlLCBzZW1pLXJlZG9uZGFudCwgbGllbnMgZHVycykiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDk5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwOAogbXNnaWQgIkZ1bGwgQ29weSAoU2xvd2VyLCBSZWR1bmRhbnQgQmFja3VwKSIKIG1zZ3N0ciAiQ29weSBjb21wbMOodGUgKHBsdXMgbGVudCwgc2F1dmVnYXJkZSByZWRvbmRhbnRlKSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MDUKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTE0CiBtc2dpZCAiU2hhcmVkIChGYXN0ZXN0LCBOb3QgUmVjb21tZW5kZWQsIE5vIEJhY2t1cCkiCiBtc2dzdHIgIlBhcnRhZ8OpIChsZSBwbHVzIHJhcGlkZSwgbm9uIHJlY29tbWFuZMOpLCBwYXMgZGUgc2F1dmVnYXJkZSkiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTQxIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTg4Ci0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjczNCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjgwNAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDEzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAyMQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1NTAgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1OTcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzQzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODEzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMjMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDMxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiTm90IGEgR2l0IHJlcG9zaXRvcnk6ICVzIgogbXNnc3RyICInJXMnIG4nZXN0IHBhcyB1biBkw6lww7R0IEdpdC4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTc3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU4NgogbXNnaWQgIlN0YW5kYXJkIG9ubHkgYXZhaWxhYmxlIGZvciBsb2NhbCByZXBvc2l0b3J5LiIKIG1zZ3N0ciAiU3RhbmRhcmQgbidlc3QgZGlzcG9uaWJsZSBxdWUgcG91ciB1biBkw6lww7R0IGxvY2FsLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1ODEKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTkwCiBtc2dpZCAiU2hhcmVkIG9ubHkgYXZhaWxhYmxlIGZvciBsb2NhbCByZXBvc2l0b3J5LiIKIG1zZ3N0ciAiUGFydGFnw6kgbidlc3QgZGlzcG9uaWJsZSBxdWUgcG91ciB1biBkw6lww7R0IGxvY2FsLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MDIKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjExCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiTG9jYXRpb24gJXMgYWxyZWFkeSBleGlzdHMuIgogbXNnc3RyICJMJ2VtcGxhY2VtZW50ICVzIGV4aXN0ZSBkw6lqw6AuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYxMworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MjIKIG1zZ2lkICJGYWlsZWQgdG8gY29uZmlndXJlIG9yaWdpbiIKIG1zZ3N0ciAiTGEgY29uZmlndXJhdGlvbiBkZSBsJ29yaWdpbmUgYSDDqWNob3XDqWUuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYyNQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MzQKIG1zZ2lkICJDb3VudGluZyBvYmplY3RzIgogbXNnc3RyICJEw6ljb21wdGUgZGVzIG9iamV0cyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MjYKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjM1CiBtc2dpZCAiYnVja2V0cyIKIG1zZ3N0ciAicGFuaWVycyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2NTAKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjU5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGNvcHkgb2JqZWN0cy9pbmZvL2FsdGVybmF0ZXM6ICVzIgogbXNnc3RyICJJbXBvc3NpYmxlIGRlIGNvcGllciAnb2JqZWN0cy9pbmZvL2FsdGVybmF0ZXMnIDogJXMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Njg2CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjY5NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIk5vdGhpbmcgdG8gY2xvbmUgZnJvbSAlcy4iCiBtc2dzdHIgIklsIG4neSBhIHJpZW4gw6AgY2xvbmVyIGRlcHVpcyAlcy4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Njg4IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTAyCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkxNAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2OTcgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MTEKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTIzCiBtc2dpZCAiVGhlICdtYXN0ZXInIGJyYW5jaCBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQuIgogbXNnc3RyICJMYSBicmFuY2hlICdtYXN0ZXInIG4nYSBwYXMgw6l0w6kgaW5pdGlhbGlzw6llLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3MDEKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzEwCiBtc2dpZCAiSGFyZGxpbmtzIGFyZSB1bmF2YWlsYWJsZS4gIEZhbGxpbmcgYmFjayB0byBjb3B5aW5nLiIKIG1zZ3N0ciAiTGVzIGxpZW5zIGR1cnMgbmUgc29udCBwYXMgc3VwcG9ydMOpcy4gVW5lIGNvcGllIHNlcmEgZWZmZWN0dcOpZSDDoCBsYSBwbGFjZS4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzEzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjcyMgogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNsb25pbmcgZnJvbSAlcyIKIG1zZ3N0ciAiQ2xvbmFnZSBkZXB1aXMgJXMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzQ0CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc1MwogbXNnaWQgIkNvcHlpbmcgb2JqZWN0cyIKIG1zZ3N0ciAiQ29waWUgZGVzIG9iamV0cyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NDUKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzU0CiBtc2dpZCAiS2lCIgogbXNnc3RyICJLaUIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzY5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc3OAogIywgdGNsLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBjb3B5IG9iamVjdDogJXMiCiBtc2dzdHIgIkltcG9zc2libGUgZGUgY29waWVyIGwnb2JqZXQgOiAlcyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NzkKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Nzg4CiBtc2dpZCAiTGlua2luZyBvYmplY3RzIgogbXNnc3RyICJMaWFpc29uIGRlcyBvYmpldHMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzgwCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc4OQogbXNnaWQgIm9iamVjdHMiCiBtc2dzdHIgIm9iamV0cyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3ODgKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Nzk3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGhhcmRsaW5rIG9iamVjdDogJXMiCiBtc2dzdHIgIkltcG9zc2libGUgY3LDqWVyIHVuIGxpZW4gZHVyIHBvdXIgbCdvYmpldCA6ICVzIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg0MworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NTIKIG1zZ2lkICJDYW5ub3QgZmV0Y2ggYnJhbmNoZXMgYW5kIG9iamVjdHMuICBTZWUgY29uc29sZSBvdXRwdXQgZm9yIGRldGFpbHMuIgogbXNnc3RyICIiCiAiSW1wb3NzaWJsZSBkZSByw6ljdXDDqXJlciBsZXMgYnJhbmNoZXMgZXQgb2JqZXRzLiBWb2lyIGxhIHNvcnRpZSBjb25zb2xlIHBvdXIgIgogInBsdXMgZGUgZMOpdGFpbHMuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg1NAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NjMKIG1zZ2lkICJDYW5ub3QgZmV0Y2ggdGFncy4gIFNlZSBjb25zb2xlIG91dHB1dCBmb3IgZGV0YWlscy4iCiBtc2dzdHIgIiIKICJJbXBvc3NpYmxlIGRlIHLDqWN1cMOpcmVyIGxlcyBtYXJxdWVzICh0YWdzKS4gVm9pciBsYSBzb3J0aWUgY29uc29sZSBwb3VyIHBsdXMgIgogImRlIGTDqXRhaWxzLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NzgKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODg3CiBtc2dpZCAiQ2Fubm90IGRldGVybWluZSBIRUFELiAgU2VlIGNvbnNvbGUgb3V0cHV0IGZvciBkZXRhaWxzLiIKIG1zZ3N0ciAiSW1wb3NzaWJsZSBkZSBkw6l0ZXJtaW5lciBIRUFELiBWb2lyIGxhIHNvcnRpZSBjb25zb2xlIHBvdXIgcGx1cyBkZSBkw6l0YWlscy4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODg3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg5NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBjbGVhbnVwICVzIgogbXNnc3RyICJJbXBvc3NpYmxlIGRlIG5ldHRveWVyICVzIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg5MworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MDIKIG1zZ2lkICJDbG9uZSBmYWlsZWQuIgogbXNnc3RyICJMZSBjbG9uYWdlIGEgw6ljaG91w6kuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkwMAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MDkKIG1zZ2lkICJObyBkZWZhdWx0IGJyYW5jaCBvYnRhaW5lZC4iCiBtc2dzdHIgIkF1Y3VuZSBicmFuY2hlIHBhciBkw6lmYXV0IG4nYSDDqXTDqSBvYnRlbnVlLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MTEKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTIwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IHJlc29sdmUgJXMgYXMgYSBjb21taXQuIgogbXNnc3RyICJJbXBvc3NpYmxlIGRlIHLDqXNvdWRyZSAlcyBjb21tZSBjb21taXQuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkyMworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MzIKIG1zZ2lkICJDcmVhdGluZyB3b3JraW5nIGRpcmVjdG9yeSIKIG1zZ3N0ciAiQ3LDqWF0aW9uIGR1IHLDqXBlcnRvaXJlIGRlIHRyYXZhaWwiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTI0IGxpYi9pbmRleC50Y2w6NjUgbGliL2luZGV4LnRjbDoxMjcKLSM6IGxpYi9pbmRleC50Y2w6MTkzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkzMyBsaWIvaW5kZXgudGNsOjY1IGxpYi9pbmRleC50Y2w6MTI4CisjOiBsaWIvaW5kZXgudGNsOjE5NgogbXNnaWQgImZpbGVzIgogbXNnc3RyICJmaWNoaWVycyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTYyCiBtc2dpZCAiSW5pdGlhbCBmaWxlIGNoZWNrb3V0IGZhaWxlZC4iCiBtc2dzdHIgIkNoYXJnZW1lbnQgaW5pdGlhbCBkdSBmaWNoaWVyIMOpY2hvdcOpLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NjkKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTc4CiBtc2dpZCAiT3BlbiIKIG1zZ3N0ciAiT3V2cmlyIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk3OQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5ODgKIG1zZ2lkICJSZXBvc2l0b3J5OiIKIG1zZ3N0ciAiRMOpcMO0dCA6IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMjcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAzNwogIywgdGNsLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byBvcGVuIHJlcG9zaXRvcnkgJXM6IgogbXNnc3RyICJJbXBvc3NpYmxlIGQnb3V2cmlyIGxlIGTDqXDDtHQgJXMgOiIKQEAgLTEyNTQsNyArMTM1NCw3IEBACiAiXG4iCiAiQ2VsYSB2YSDDqnRyZSBmYWl0IHRvdXQgZGUgc3VpdGUgYXV0b21hdGlxdWVtZW50LlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoxNTQKKyM6IGxpYi9jb21taXQudGNsOjE1NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJVbm1lcmdlZCBmaWxlcyBjYW5ub3QgYmUgY29tbWl0dGVkLlxuIgpAQCAtMTI2Nyw3ICsxMzY3LDcgQEAKICJMZSBmaWNoaWVyICVzIGEgZGVzIGNvbmZsaWN0cyBkZSBmdXNpb24uIFZvdXMgZGV2ZXogbGVzIHLDqXNvdWRyZSBldCBwcsOpLSIKICJjb21taXRlciBsZSBmaWNoaWVyIGF2YW50IGRlIHBvdXZvaXIgY29tbWl0ZXIuXG4iCiAKLSM6IGxpYi9jb21taXQudGNsOjE2MgorIzogbGliL2NvbW1pdC50Y2w6MTY0CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIlVua25vd24gZmlsZSBzdGF0ZSAlcyBkZXRlY3RlZC5cbiIKQEAgLTEyNzgsNyArMTM3OCw3IEBACiAiXG4iCiAiTGUgZmljaGllciAlcyBuZSBwZXV0IHBhcyDDqnRyZSBjb21taXTDqSBwYXIgY2UgcHJvZ3JhbW1lLlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoxNzAKKyM6IGxpYi9jb21taXQudGNsOjE3MgogbXNnaWQgIiIKICJObyBjaGFuZ2VzIHRvIGNvbW1pdC5cbiIKICJcbiIKQEAgLTEyODgsNyArMTM4OCw3IEBACiAiXG4iCiAiVm91cyBkZXZleiBpbmRleGVyIGF1IG1vaW5zIDEgZmljaGllciBhdmFudCBkZSBwb3V2b2lyIGNvbW1pdGVyLlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoxODMKKyM6IGxpYi9jb21taXQudGNsOjE4NwogbXNnaWQgIiIKICJQbGVhc2Ugc3VwcGx5IGEgY29tbWl0IG1lc3NhZ2UuXG4iCiAiXG4iCkBAIC0xMzA2LDQ1ICsxNDA2LDQ1IEBACiAiLSBEZXV4acOobWUgbGlnbmUgOiByaWVuLlxuIgogIi0gTGlnbmVzIHN1aXZhbnRlcyA6IETDqWNyaXJlIHBvdXJxdW9pIGNlcyBtb2RpZmljYXRpb25zIHNvbnQgYm9ubmVzLlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoyMDcKKyM6IGxpYi9jb21taXQudGNsOjIxMQogIywgdGNsLWZvcm1hdAogbXNnaWQgIndhcm5pbmc6IFRjbCBkb2VzIG5vdCBzdXBwb3J0IGVuY29kaW5nICclcycuIgogbXNnc3RyICJhdHRlbnRpb24gOiBUY2wgbmUgc3VwcG9ydGUgcGFzIGwnZW5jb2RhZ2UgJyVzJy4iCiAKLSM6IGxpYi9jb21taXQudGNsOjIyMQorIzogbGliL2NvbW1pdC50Y2w6MjI3CiBtc2dpZCAiQ2FsbGluZyBwcmUtY29tbWl0IGhvb2suLi4iCiBtc2dzdHIgIkxhbmNlbWVudCBkZSBsJ2FjdGlvbiBkJ2F2YW50LWNvbW1pdC4uLiIKIAotIzogbGliL2NvbW1pdC50Y2w6MjM2CisjOiBsaWIvY29tbWl0LnRjbDoyNDIKIG1zZ2lkICJDb21taXQgZGVjbGluZWQgYnkgcHJlLWNvbW1pdCBob29rLiIKIG1zZ3N0ciAiQ29tbWl0IHJlZnVzw6kgcGFyIGwnYWN0aW9uIGQnYXZhbnQtY29tbWl0LiIKIAotIzogbGliL2NvbW1pdC50Y2w6MjU5CisjOiBsaWIvY29tbWl0LnRjbDoyNjUKIG1zZ2lkICJDYWxsaW5nIGNvbW1pdC1tc2cgaG9vay4uLiIKIG1zZ3N0ciAiTGFuY2VtZW50IGRlIGwnYWN0aW9uIFwibWVzc2FnZSBkZSBjb21taXRcIi4uLiIKIAotIzogbGliL2NvbW1pdC50Y2w6Mjc0CisjOiBsaWIvY29tbWl0LnRjbDoyODAKIG1zZ2lkICJDb21taXQgZGVjbGluZWQgYnkgY29tbWl0LW1zZyBob29rLiIKIG1zZ3N0ciAiQ29tbWl0IHJlZnVzw6kgcGFyIGwnYWN0aW9uIFwibWVzc2FnZSBkZSBjb21taXRcIi4iCiAKLSM6IGxpYi9jb21taXQudGNsOjI4NworIzogbGliL2NvbW1pdC50Y2w6MjkzCiBtc2dpZCAiQ29tbWl0dGluZyBjaGFuZ2VzLi4uIgogbXNnc3RyICJDb21taXQgZGVzIG1vZGlmaWNhdGlvbnMuLi4iCiAKLSM6IGxpYi9jb21taXQudGNsOjMwMworIzogbGliL2NvbW1pdC50Y2w6MzA5CiBtc2dpZCAid3JpdGUtdHJlZSBmYWlsZWQ6IgogbXNnc3RyICJ3cml0ZS10cmVlIGEgw6ljaG91w6kgOiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzA0IGxpYi9jb21taXQudGNsOjM0OCBsaWIvY29tbWl0LnRjbDozNjgKKyM6IGxpYi9jb21taXQudGNsOjMxMCBsaWIvY29tbWl0LnRjbDozNTQgbGliL2NvbW1pdC50Y2w6Mzc0CiBtc2dpZCAiQ29tbWl0IGZhaWxlZC4iCiBtc2dzdHIgIkxlIGNvbW1pdCBhIMOpY2hvdcOpLiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzIxCisjOiBsaWIvY29tbWl0LnRjbDozMjcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJDb21taXQgJXMgYXBwZWFycyB0byBiZSBjb3JydXB0IgogbXNnc3RyICJMZSBjb21taXQgJXMgc2VtYmxlIMOqdHJlIGNvcnJvbXB1IgogCi0jOiBsaWIvY29tbWl0LnRjbDozMjYKKyM6IGxpYi9jb21taXQudGNsOjMzMgogbXNnaWQgIiIKICJObyBjaGFuZ2VzIHRvIGNvbW1pdC5cbiIKICJcbiIKQEAgLTEzNTksMTkgKzE0NTksMTkgQEAKICJcbiIKICJVbmUgcmVzeW5jaHJvbmlzYXRpb24gdmEgw6p0cmUgbGFuY8OpZSB0b3V0IGRlIHN1aXRlIGF1dG9tYXRpcXVlbWVudC5cbiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzMzCisjOiBsaWIvY29tbWl0LnRjbDozMzkKIG1zZ2lkICJObyBjaGFuZ2VzIHRvIGNvbW1pdC4iCiBtc2dzdHIgIlBhcyBkZSBtb2RpZmljYXRpb25zIMOgIGNvbW1pdGVyLiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzQ3CisjOiBsaWIvY29tbWl0LnRjbDozNTMKIG1zZ2lkICJjb21taXQtdHJlZSBmYWlsZWQ6IgogbXNnc3RyICJjb21taXQtdHJlZSBhIMOpY2hvdcOpIDoiCiAKLSM6IGxpYi9jb21taXQudGNsOjM2NworIzogbGliL2NvbW1pdC50Y2w6MzczCiBtc2dpZCAidXBkYXRlLXJlZiBmYWlsZWQ6IgogbXNnc3RyICJ1cGRhdGUtcmVmIGEgw6ljaG91w6kiCiAKLSM6IGxpYi9jb21taXQudGNsOjQ1NAorIzogbGliL2NvbW1pdC50Y2w6NDYxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ3JlYXRlZCBjb21taXQgJXM6ICVzIgogbXNnc3RyICJDb21taXQgY3LDqcOpICVzIDogJXMiCkBAIC0xNDQ4LDcgKzE1NDgsNyBAQAogbXNnaWQgIkludmFsaWQgZGF0ZSBmcm9tIEdpdDogJXMiCiBtc2dzdHIgIkRhdGUgaW52YWxpZGUgZGUgR2l0IDogJXMiCiAKLSM6IGxpYi9kaWZmLnRjbDo0NAorIzogbGliL2RpZmYudGNsOjU5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIk5vIGRpZmZlcmVuY2VzIGRldGVjdGVkLlxuIgpAQCAtMTQ3MSw0OCArMTU3MSwxMDEgQEAKICJVbmUgcmVzeW5jaHJvbmlzYXRpb24gdmEgw6p0cmUgbGFuY8OpZSBhdXRvbWF0aXF1ZW1lbnQgcG91ciB0cm91dmVyIGQnYXV0cmVzICIKICJmaWNoaWVycyBxdWkgcG91cnJhaWVudCBzZSB0cm91dmVyIGRhbnMgbGUgbcOqbWUgw6l0YXQuIgogCi0jOiBsaWIvZGlmZi50Y2w6ODMKKyM6IGxpYi9kaWZmLnRjbDo5OQogIywgdGNsLWZvcm1hdAogbXNnaWQgIkxvYWRpbmcgZGlmZiBvZiAlcy4uLiIKIG1zZ3N0ciAiQ2hhcmdlbWVudCBkZXMgZGlmZsOpcmVuY2VzIGRlICVzLi4uIgogCi0jOiBsaWIvZGlmZi50Y2w6MTE2IGxpYi9kaWZmLnRjbDoxOTAKKyM6IGxpYi9kaWZmLnRjbDoxMjAKK21zZ2lkICIiCisiTE9DQUw6IGRlbGV0ZWRcbiIKKyJSRU1PVEU6XG4iCittc2dzdHIgIiIKKyJMT0NBTDogc3VwcHJpbcOpXG4iCisiRElTVEFOVDpcbiIKKworIzogbGliL2RpZmYudGNsOjEyNQorbXNnaWQgIiIKKyJSRU1PVEU6IGRlbGV0ZWRcbiIKKyJMT0NBTDpcbiIKK21zZ3N0ciAiIgorIkRJU1RBTlQ6IHN1cHByaW3DqVxuIgorIkxPQ0FMOlxuIgorCisjOiBsaWIvZGlmZi50Y2w6MTMyCittc2dpZCAiTE9DQUw6XG4iCittc2dzdHIgIkxPQ0FMOlxuIgorCisjOiBsaWIvZGlmZi50Y2w6MTM1Cittc2dpZCAiUkVNT1RFOlxuIgorbXNnc3RyICJESVNUQU5UOlxuIgorCisjOiBsaWIvZGlmZi50Y2w6MTk3IGxpYi9kaWZmLnRjbDoyOTYKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gZGlzcGxheSAlcyIKIG1zZ3N0ciAiSW1wb3NzaWJsZSBkJ2FmZmljaGVyICVzIgogCi0jOiBsaWIvZGlmZi50Y2w6MTE3CisjOiBsaWIvZGlmZi50Y2w6MTk4CiBtc2dpZCAiRXJyb3IgbG9hZGluZyBmaWxlOiIKIG1zZ3N0ciAiRXJyZXVyIGxvcnMgZHUgY2hhcmdlbWVudCBkdSBmaWNoaWVyIDoiCiAKLSM6IGxpYi9kaWZmLnRjbDoxMjQKKyM6IGxpYi9kaWZmLnRjbDoyMDUKIG1zZ2lkICJHaXQgUmVwb3NpdG9yeSAoc3VicHJvamVjdCkiCiBtc2dzdHIgIkTDqXDDtHQgR2l0IChzb3VzIHByb2pldCkiCiAKLSM6IGxpYi9kaWZmLnRjbDoxMzYKKyM6IGxpYi9kaWZmLnRjbDoyMTcKIG1zZ2lkICIqIEJpbmFyeSBmaWxlIChub3Qgc2hvd2luZyBjb250ZW50KS4iCiBtc2dzdHIgIiogRmljaGllciBiaW5haXJlIChwYXMgZCdhcHBlcsOndSBkdSBjb250ZW51KS4iCiAKLSM6IGxpYi9kaWZmLnRjbDoxOTEKLW1zZ2lkICJFcnJvciBsb2FkaW5nIGRpZmY6IgotbXNnc3RyICJFcnJldXIgbG9ycyBkdSBjaGFyZ2VtZW50IGRlcyBkaWZmw6lyZW5jZXMgOiIKKyM6IGxpYi9kaWZmLnRjbDoyMjIKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiKiBVbnRyYWNrZWQgZmlsZSBpcyAlZCBieXRlcy5cbiIKKyIqIFNob3dpbmcgb25seSBmaXJzdCAlZCBieXRlcy5cbiIKK21zZ3N0ciAiIgorIiogTGUgZmljaGllciBub24gc3VpdmkgZmFpdCAlZCBvY3RldHMuXG4iCisiKiBPbiBtb250cmUgc2V1bGVtZW50IGxlcyBwcmVtaWVycyAlZCBvY3RldHMuXG4iCiAKLSM6IGxpYi9kaWZmLnRjbDozMTMKKyM6IGxpYi9kaWZmLnRjbDoyMjgKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiKiBVbnRyYWNrZWQgZmlsZSBjbGlwcGVkIGhlcmUgYnkgJXMuXG4iCisiKiBUbyBzZWUgdGhlIGVudGlyZSBmaWxlLCB1c2UgYW4gZXh0ZXJuYWwgZWRpdG9yLlxuIgorbXNnc3RyICIiCisiXG4iCisiKiBGaWNoaWVyIHN1aXZpIHJhY2NvdXJjaXMgaWNpIGRlICVzLlxuIgorIiogUG91ciB2b2lyIGxlIGZpY2hpZXIgZW50aWVyLCB1dGlsaXNlciB1biDDqWRpdGV1ciBleHRlcm5lLlxuIgorCisjOiBsaWIvZGlmZi50Y2w6NDM2CiBtc2dpZCAiRmFpbGVkIHRvIHVuc3RhZ2Ugc2VsZWN0ZWQgaHVuay4iCiBtc2dzdHIgIsOJY2hlYyBsb3JzIGRlIGxhIGTDqXNpbmRleGF0aW9uIGRlIGxhIHNlY3Rpb24gc8OpbGVjdGlvbm7DqWUuIgogCi0jOiBsaWIvZGlmZi50Y2w6MzIwCisjOiBsaWIvZGlmZi50Y2w6NDQzCiBtc2dpZCAiRmFpbGVkIHRvIHN0YWdlIHNlbGVjdGVkIGh1bmsuIgogbXNnc3RyICLDiWNoZWMgbG9ycyBkZSBsJ2luZGV4YXRpb24gZGUgbGEgc2VjdGlvbi4iCiAKLSM6IGxpYi9kaWZmLnRjbDozODYKKyM6IGxpYi9kaWZmLnRjbDo1MDkKIG1zZ2lkICJGYWlsZWQgdG8gdW5zdGFnZSBzZWxlY3RlZCBsaW5lLiIKIG1zZ3N0ciAiw4ljaGVjIGxvcnMgZGUgbGEgZMOpc2luZGV4YXRpb24gZGUgbGEgbGlnbmUgc8OpbGVjdGlvbm7DqWUuIgogCi0jOiBsaWIvZGlmZi50Y2w6Mzk0CisjOiBsaWIvZGlmZi50Y2w6NTE3CiBtc2dpZCAiRmFpbGVkIHRvIHN0YWdlIHNlbGVjdGVkIGxpbmUuIgogbXNnc3RyICLDiWNoZWMgbG9ycyBkZSBsJ2luZGV4YXRpb24gZGUgbGEgbGlnbmUuIgogCisjOiBsaWIvZW5jb2RpbmcudGNsOjQ0MworbXNnaWQgIkRlZmF1bHQiCittc2dzdHIgIkTDqWZhdXQiCisKKyM6IGxpYi9lbmNvZGluZy50Y2w6NDQ4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiU3lzdGVtICglcykiCittc2dzdHIgIlN5c3TDqG1lICglcykiCisKKyM6IGxpYi9lbmNvZGluZy50Y2w6NDU5IGxpYi9lbmNvZGluZy50Y2w6NDY1Cittc2dpZCAiT3RoZXIiCittc2dzdHIgIkF1dHJlIgorCiAjOiBsaWIvZXJyb3IudGNsOjIwIGxpYi9lcnJvci50Y2w6MTE0CiBtc2dpZCAiZXJyb3IiCiBtc2dzdHIgImVycmV1ciIKQEAgLTE1NDksNDAgKzE3MDIsNDkgQEAKIG1zZ2lkICJVbmxvY2sgSW5kZXgiCiBtc2dzdHIgIkTDqXZlcm91aWxsZXIgbCdpbmRleCIKIAotIzogbGliL2luZGV4LnRjbDoyODIKKyM6IGxpYi9pbmRleC50Y2w6Mjg3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5zdGFnaW5nICVzIGZyb20gY29tbWl0IgogbXNnc3RyICJEw6lzaW5kZXhhdGlvbiBkZTogJXMiCiAKLSM6IGxpYi9pbmRleC50Y2w6MzEzCisjOiBsaWIvaW5kZXgudGNsOjMyNgogbXNnaWQgIlJlYWR5IHRvIGNvbW1pdC4iCiBtc2dzdHIgIlByw6p0IMOgIMOqdHJlIGNvbW1pdMOpLiIKIAotIzogbGliL2luZGV4LnRjbDozMjYKKyM6IGxpYi9pbmRleC50Y2w6MzM5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQWRkaW5nICVzIgogbXNnc3RyICJBam91dCBkZSAlcyIKIAotIzogbGliL2luZGV4LnRjbDozODEKKyM6IGxpYi9pbmRleC50Y2w6Mzk2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmV2ZXJ0IGNoYW5nZXMgaW4gZmlsZSAlcz8iCiBtc2dzdHIgIkFubnVsZXIgbGVzIG1vZGlmaWNhdGlvbnMgZGFucyBsZSBmaWNoaWVyICVzID8gIgogCi0jOiBsaWIvaW5kZXgudGNsOjM4MworIzogbGliL2luZGV4LnRjbDozOTgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJSZXZlcnQgY2hhbmdlcyBpbiB0aGVzZSAlaSBmaWxlcz8iCiBtc2dzdHIgIkFubnVsZXIgbGVzIG1vZGlmaWNhdGlvbnMgZGFucyBjZXMgJWkgZmljaGllcnMgPyIKIAotIzogbGliL2luZGV4LnRjbDozOTEKKyM6IGxpYi9pbmRleC50Y2w6NDA2CiBtc2dpZCAiQW55IHVuc3RhZ2VkIGNoYW5nZXMgd2lsbCBiZSBwZXJtYW5lbnRseSBsb3N0IGJ5IHRoZSByZXZlcnQuIgogbXNnc3RyICIiCiAiVG91dGVzIGxlcyBtb2RpZmljYXRpb25zIG5vbi1pbmRleMOpZXMgc2Vyb250IGTDqWZpbml0aXZlbWVudCBwZXJkdWVzIHBhciAiCiAibCdhbm51bGF0aW9uLiIKIAotIzogbGliL2luZGV4LnRjbDozOTQKKyM6IGxpYi9pbmRleC50Y2w6NDA5CiBtc2dpZCAiRG8gTm90aGluZyIKIG1zZ3N0ciAiTmUgcmllbiBmYWlyZSIKIAorIzogbGliL2luZGV4LnRjbDo0MjcKK21zZ2lkICJSZXZlcnRpbmcgc2VsZWN0ZWQgZmlsZXMiCittc2dzdHIgIkFubnVsZXIgbW9kaWZpY2F0aW9ucyBkYW5zIGZpY2hpZXJzIHNlbGVjdGlvbm7DqXMiCisKKyM6IGxpYi9pbmRleC50Y2w6NDMxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiUmV2ZXJ0aW5nICVzIgorbXNnc3RyICJBbm51bGF0aW9uIGRlcyBtb2RpZmljYXRpb25zIGRhbnMgJXMiCisKICM6IGxpYi9tZXJnZS50Y2w6MTMKIG1zZ2lkICIiCiAiQ2Fubm90IG1lcmdlIHdoaWxlIGFtZW5kaW5nLlxuIgpAQCAtMTYxMiw3ICsxNzc0LDcgQEAKICJcbiIKICJDZWxhIHZhIMOqdHJlIGZhaXQgdG91dCBkZSBzdWl0ZSBhdXRvbWF0aXF1ZW1lbnRcbiIKIAotIzogbGliL21lcmdlLnRjbDo0NAorIzogbGliL21lcmdlLnRjbDo0NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBjb25mbGljdGVkIG1lcmdlLlxuIgpAQCAtMTYzMCw3ICsxNzkyLDcgQEAKICJ0ZXJtaW5lciBsYSBmdXNpb24gY291cmFudGUuIFNldWxlbWVudCDDoCBjZSBtb21lbnQgbMOgIHNlcmEtdC1pbCBwb3NzaWJsZSAiCiAiZCdlZmZlY3R1ZXIgdW5lIG5vdXZlbGxlIGZ1c2lvbi5cbiIKIAotIzogbGliL21lcmdlLnRjbDo1NAorIzogbGliL21lcmdlLnRjbDo1NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBjaGFuZ2UuXG4iCkBAIC0xNjQ4LDM0ICsxODEwLDM0IEBACiAiZmFpc2FpdCBjb21tZSBjZWxhLCB2b3VzIMOpdml0ZXJleiBkZSBkZXZvaXIgw6l2ZW50dWVsbGVtZW50IGFiYW5kb25uZXIgdW5lICIKICJmdXNpb24gYXlhbnQgw6ljaG91w6llLlxuIgogCi0jOiBsaWIvbWVyZ2UudGNsOjEwNgorIzogbGliL21lcmdlLnRjbDoxMDcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIlcyBvZiAlcyIKIG1zZ3N0ciAiJXMgZGUgJXMiCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTE5CisjOiBsaWIvbWVyZ2UudGNsOjEyMAogIywgdGNsLWZvcm1hdAogbXNnaWQgIk1lcmdpbmcgJXMgYW5kICVzLi4uIgogbXNnc3RyICJGdXNpb24gZGUgJXMgZXQgJXMuLi4iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTMwCisjOiBsaWIvbWVyZ2UudGNsOjEzMQogbXNnaWQgIk1lcmdlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIgogbXNnc3RyICJMYSBmdXNpb24gcydlc3QgZmFpdGUgYXZlYyBzdWNjw6hzLiIKIAotIzogbGliL21lcmdlLnRjbDoxMzIKKyM6IGxpYi9tZXJnZS50Y2w6MTMzCiBtc2dpZCAiTWVyZ2UgZmFpbGVkLiAgQ29uZmxpY3QgcmVzb2x1dGlvbiBpcyByZXF1aXJlZC4iCiBtc2dzdHIgIkxhIGZ1c2lvbiBhIGVjaG91w6llLiBJbCBlc3QgbsOpY2Vzc2FpcmUgZGUgcsOpc291ZHJlIGxlcyBjb25mbGljdHMuIgogCi0jOiBsaWIvbWVyZ2UudGNsOjE1NworIzogbGliL21lcmdlLnRjbDoxNTgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJNZXJnZSBJbnRvICVzIgogbXNnc3RyICJGdXNpb24gZGFucyAlcyIKIAotIzogbGliL21lcmdlLnRjbDoxNzYKKyM6IGxpYi9tZXJnZS50Y2w6MTc3CiBtc2dpZCAiUmV2aXNpb24gVG8gTWVyZ2UiCiBtc2dzdHIgIlLDqXZpc2lvbiDDoCBmdXNpb25uZXIiCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjExCisjOiBsaWIvbWVyZ2UudGNsOjIxMgogbXNnaWQgIiIKICJDYW5ub3QgYWJvcnQgd2hpbGUgYW1lbmRpbmcuXG4iCiAiXG4iCkBAIC0xNjg1LDcgKzE4NDcsNyBAQAogIlxuIgogIlZvdXMgZGV2ZXogZmluaXIgZGUgY29ycmlnZXIgY2UgY29tbWl0LlxuIgogCi0jOiBsaWIvbWVyZ2UudGNsOjIyMQorIzogbGliL21lcmdlLnRjbDoyMjIKIG1zZ2lkICIiCiAiQWJvcnQgbWVyZ2U/XG4iCiAiXG4iCkBAIC0xNzAwLDcgKzE4NjIsNyBAQAogIlxuIgogIkFiYW5kb25uZXIgcXVhbmQgbcOqbWUgbGEgZnVzaW9uIGNvdXJhbnRlID8iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjI3CisjOiBsaWIvbWVyZ2UudGNsOjIyOAogbXNnaWQgIiIKICJSZXNldCBjaGFuZ2VzP1xuIgogIlxuIgpAQCAtMTcxNSwxMzEgKzE4NzcsMzIzIEBACiAiXG4iCiAiUsOpaW5pdGlhbGlzZXIgcXVhbmQgbcOqbWUgbGVzIG1vZGlmaWNhdGlvbnMgY291cmFudGVzID8iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjM4CisjOiBsaWIvbWVyZ2UudGNsOjIzOQogbXNnaWQgIkFib3J0aW5nIgogbXNnc3RyICJBYmFuZG9uIgogCi0jOiBsaWIvbWVyZ2UudGNsOjIzOAorIzogbGliL21lcmdlLnRjbDoyMzkKIG1zZ2lkICJmaWxlcyByZXNldCIKIG1zZ3N0ciAiZmljaGllcnMgcsOpaW5pdGlhbGlzw6lzIgogCi0jOiBsaWIvbWVyZ2UudGNsOjI2NgorIzogbGliL21lcmdlLnRjbDoyNjcKIG1zZ2lkICJBYm9ydCBmYWlsZWQuIgogbXNnc3RyICJMJ2FiYW5kb24gYSDDqWNob3XDqS4iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjY4CisjOiBsaWIvbWVyZ2UudGNsOjI2OQogbXNnaWQgIkFib3J0IGNvbXBsZXRlZC4gIFJlYWR5LiIKIG1zZ3N0ciAiQWJhbmRvbiB0ZW1pbsOpLiBQcsOqdC4iCiAKLSM6IGxpYi9vcHRpb24udGNsOjk1CisjOiBsaWIvbWVyZ2V0b29sLnRjbDo4Cittc2dpZCAiRm9yY2UgcmVzb2x1dGlvbiB0byB0aGUgYmFzZSB2ZXJzaW9uPyIKK21zZ3N0ciAiRm9yY2VyIGxhIHLDqXNvbHV0aW9uIMOgIGxhIHZlcnNpb24gZGUgYmFzZSA/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDo5Cittc2dpZCAiRm9yY2UgcmVzb2x1dGlvbiB0byB0aGlzIGJyYW5jaD8iCittc2dzdHIgIkZvcmNlciBsYSByw6lzb2x1dGlvbiDDoCBjZXR0ZSBicmFuY2hlID8iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjEwCittc2dpZCAiRm9yY2UgcmVzb2x1dGlvbiB0byB0aGUgb3RoZXIgYnJhbmNoPyIKK21zZ3N0ciAiRm9yY2VyIGxhIHLDqXNvbHV0aW9uIMOgIGwnYXV0cmUgYnJhbmNoZSA/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoxNAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJOb3RlIHRoYXQgdGhlIGRpZmYgc2hvd3Mgb25seSBjb25mbGljdGluZyBjaGFuZ2VzLlxuIgorIlxuIgorIiVzIHdpbGwgYmUgb3ZlcndyaXR0ZW4uXG4iCisiXG4iCisiVGhpcyBvcGVyYXRpb24gY2FuIGJlIHVuZG9uZSBvbmx5IGJ5IHJlc3RhcnRpbmcgdGhlIG1lcmdlLiIKK21zZ3N0ciAiIgorIk5vdGVyIHF1ZSBsZSBkaWZmIG5lIG1vbnRyZSBxdWUgbGVzIG1vZGlmaWNhdGlvbnMgZW4gY29uZmxpY3QuXG4iCisiXG4iCisiJXMgc2VyYSDDqWNyYXPDqS5cbiIKKyJcbiIKKyJDZXR0ZSBvcMOpcmF0aW9uIG5lIHBldXQgw6p0cmUgZMOpZmFpdGUgcXUnZW4gcmVsYW7Dp2FudCBsYSBmdXNpb24uIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDo0NQorIywgdGNsLWZvcm1hdAorbXNnaWQgIkZpbGUgJXMgc2VlbXMgdG8gaGF2ZSB1bnJlc29sdmVkIGNvbmZsaWN0cywgc3RpbGwgc3RhZ2U/IgorbXNnc3RyICJMZSBmaWNoaWVyICVzIHNlbWJsZSBhdm9pciBkZXMgY29uZmxpY3RzIG5vbiByw6lzb2x1cywgaW5kw6l4ZXIgcXVhbmQgbcOqbWUgPyIKKworIzogbGliL21lcmdldG9vbC50Y2w6NjAKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJBZGRpbmcgcmVzb2x1dGlvbiBmb3IgJXMiCittc2dzdHIgIkFqb3V0ZXIgdW5lIHLDqXNvbHV0aW9uIHBvdXIgJXMiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjE0MQorbXNnaWQgIkNhbm5vdCByZXNvbHZlIGRlbGV0aW9uIG9yIGxpbmsgY29uZmxpY3RzIHVzaW5nIGEgdG9vbCIKK21zZ3N0ciAiSW1wb3NzaWJsZSBkZSByw6lzb3VkcmUgbGEgc3VwcHJlc3Npb24gb3UgZGUgcmVsaWVyIGRlcyBjb25mbGljdHMgZW4gdXRpbGlzYW50IHVuIG91dGlsIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoxNDYKK21zZ2lkICJDb25mbGljdCBmaWxlIGRvZXMgbm90IGV4aXN0IgorbXNnc3RyICJMZSBmaWNoaWVyIGVuIGNvbmZsaWN0IG4nZXhpc3RlIHBhcy4iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjI2NAorIywgdGNsLWZvcm1hdAorbXNnaWQgIk5vdCBhIEdVSSBtZXJnZSB0b29sOiAnJXMnIgorbXNnc3RyICInJXMnIG4nZXN0IHBhcyB1biBvdXRpbCBncmFwaGlxdWUgcG91ciBmdXNpb25uZXIgZGVzIGZpY2hpZXJzLiIKKworIzogbGliL21lcmdldG9vbC50Y2w6MjY4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVW5zdXBwb3J0ZWQgbWVyZ2UgdG9vbCAnJXMnIgorbXNnc3RyICJPdXRpbCBkZSBmdXNpb24gJyVzJyBub24gc3VwcG9ydMOpIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDozMDMKK21zZ2lkICJNZXJnZSB0b29sIGlzIGFscmVhZHkgcnVubmluZywgdGVybWluYXRlIGl0PyIKK21zZ3N0ciAiTCdvdXRpbCBkZSBmdXNpb24gdG91cm5lIGTDqWrDoCwgZmF1dC1pbCBsZSB0ZXJtaW5lciA/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDozMjMKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiRXJyb3IgcmV0cmlldmluZyB2ZXJzaW9uczpcbiIKKyIlcyIKK21zZ3N0ciAiIgorIkVycmV1ciBsb3JzIGRlIGxhIHLDqWN1cMOpcmF0aW9uIGRlcyB2ZXJzaW9uczpcbiIKKyIlcyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MzQzCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkIG5vdCBzdGFydCB0aGUgbWVyZ2UgdG9vbDpcbiIKKyJcbiIKKyIlcyIKK21zZ3N0ciAiIgorIkltcG9zc2libGUgZGUgbGFuY2VyIGwnb3V0aWwgZGUgZnVzaW9uOlxuIgorIlxuIgorIiVzIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDozNDcKK21zZ2lkICJSdW5uaW5nIG1lcmdlIHRvb2wuLi4iCittc2dzdHIgIkxhbmNlbWVudCBkZSBsJ291dGlsIGRlIGZ1c2lvbi4uLiIKKworIzogbGliL21lcmdldG9vbC50Y2w6Mzc1IGxpYi9tZXJnZXRvb2wudGNsOjM4MworbXNnaWQgIk1lcmdlIHRvb2wgZmFpbGVkLiIKK21zZ3N0ciAiTCdvdXRpbCBkZSBmdXNpb24gYSDDqWNob3XDqS4iCisKKyM6IGxpYi9vcHRpb24udGNsOjExCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBnbG9iYWwgZW5jb2RpbmcgJyVzJyIKK21zZ3N0ciAiRW5jb2RhZ2UgZ2xvYmFsIGludmFsaWRlICclcyciCisKKyM6IGxpYi9vcHRpb24udGNsOjE5CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByZXBvIGVuY29kaW5nICclcyciCittc2dzdHIgIkVuY29kYWdlIGRlIGTDqXDDtHQgaW52YWxpZGUgJyVzJyIKKworIzogbGliL29wdGlvbi50Y2w6MTE3CiBtc2dpZCAiUmVzdG9yZSBEZWZhdWx0cyIKIG1zZ3N0ciAiUmVtZXR0cmUgbGVzIHZhbGV1cnMgcGFyIGTDqWZhdXQiCiAKLSM6IGxpYi9vcHRpb24udGNsOjk5CisjOiBsaWIvb3B0aW9uLnRjbDoxMjEKIG1zZ2lkICJTYXZlIgogbXNnc3RyICJTYXV2ZWdhcmRlciIKIAotIzogbGliL29wdGlvbi50Y2w6MTA5CisjOiBsaWIvb3B0aW9uLnRjbDoxMzEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIlcyBSZXBvc2l0b3J5IgogbXNnc3RyICJEw6lww7R0OiAlcyIKIAotIzogbGliL29wdGlvbi50Y2w6MTEwCisjOiBsaWIvb3B0aW9uLnRjbDoxMzIKIG1zZ2lkICJHbG9iYWwgKEFsbCBSZXBvc2l0b3JpZXMpIgogbXNnc3RyICJHbG9iYWxlcyAodG91cyBsZXMgZMOpcMO0dHMpIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMTYKKyM6IGxpYi9vcHRpb24udGNsOjEzOAogbXNnaWQgIlVzZXIgTmFtZSIKIG1zZ3N0ciAiTm9tIGQndXRpbGlzYXRldXIiCiAKLSM6IGxpYi9vcHRpb24udGNsOjExNworIzogbGliL29wdGlvbi50Y2w6MTM5CiBtc2dpZCAiRW1haWwgQWRkcmVzcyIKIG1zZ3N0ciAiQWRyZXNzZSBlbWFpbCIKIAotIzogbGliL29wdGlvbi50Y2w6MTE5CisjOiBsaWIvb3B0aW9uLnRjbDoxNDEKIG1zZ2lkICJTdW1tYXJpemUgTWVyZ2UgQ29tbWl0cyIKIG1zZ3N0ciAiUsOpc3VtZXIgbGVzIGNvbW1pdHMgZGUgZnVzaW9uIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjAKKyM6IGxpYi9vcHRpb24udGNsOjE0MgogbXNnaWQgIk1lcmdlIFZlcmJvc2l0eSIKIG1zZ3N0ciAiRnVzaW9uIGJhdmFyZGUiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyMQorIzogbGliL29wdGlvbi50Y2w6MTQzCiBtc2dpZCAiU2hvdyBEaWZmc3RhdCBBZnRlciBNZXJnZSIKIG1zZ3N0ciAiTW9udHJlciBzdGF0aXN0aXF1ZXMgZGUgZGlmZiBhcHLDqHMgZnVzaW9uIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjMKKyM6IGxpYi9vcHRpb24udGNsOjE0NAorbXNnaWQgIlVzZSBNZXJnZSBUb29sIgorbXNnc3RyICJVdGlsaXNlciBvdXRpbCBkZSBmdXNpb24iCisKKyM6IGxpYi9vcHRpb24udGNsOjE0NgogbXNnaWQgIlRydXN0IEZpbGUgTW9kaWZpY2F0aW9uIFRpbWVzdGFtcHMiCiBtc2dzdHIgIkZhaXJlIGNvbmZpYW5jZSBhdXggZGF0ZXMgZGUgbW9kaWZpY2F0aW9uIGRlIGZpY2hpZXJzICIKIAotIzogbGliL29wdGlvbi50Y2w6MTI0CisjOiBsaWIvb3B0aW9uLnRjbDoxNDcKIG1zZ2lkICJQcnVuZSBUcmFja2luZyBCcmFuY2hlcyBEdXJpbmcgRmV0Y2giCiBtc2dzdHIgIlB1cmdlciBsZXMgYnJhbmNoZXMgZGUgc3VpdmkgcGVuZGFudCBsYSByw6ljdXDDqXJhdGlvbiIKIAotIzogbGliL29wdGlvbi50Y2w6MTI1CisjOiBsaWIvb3B0aW9uLnRjbDoxNDgKIG1zZ2lkICJNYXRjaCBUcmFja2luZyBCcmFuY2hlcyIKIG1zZ3N0ciAiRmFpcmUgY29ycmVzcG9uZHJlIGxlcyBicmFuY2hlcyBkZSBzdWl2aSIKIAotIzogbGliL29wdGlvbi50Y2w6MTI2CisjOiBsaWIvb3B0aW9uLnRjbDoxNDkKIG1zZ2lkICJCbGFtZSBDb3B5IE9ubHkgT24gQ2hhbmdlZCBGaWxlcyIKIG1zZ3N0ciAiQW5ub3RlciBsZXMgY29waWVzIHNldWxlbWVudCBzdXIgZmljaGllcnMgbW9kaWZpw6lzIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjcKKyM6IGxpYi9vcHRpb24udGNsOjE1MAogbXNnaWQgIk1pbmltdW0gTGV0dGVycyBUbyBCbGFtZSBDb3B5IE9uIgogbXNnc3RyICJNaW5pbXVtIGRlIGNhcmF0w6hyZXMgcG91ciBhbm5vdGVyIHVuZSBjb3BpZSIKIAotIzogbGliL29wdGlvbi50Y2w6MTI4CisjOiBsaWIvb3B0aW9uLnRjbDoxNTEKK21zZ2lkICJCbGFtZSBIaXN0b3J5IENvbnRleHQgUmFkaXVzIChkYXlzKSIKK21zZ3N0ciAiRGlzdGFuY2UgZGUgYmzDom1lIGRhbnMgbCdoaXN0b3JpcXVlIChqb3VycykiCisKKyM6IGxpYi9vcHRpb24udGNsOjE1MgogbXNnaWQgIk51bWJlciBvZiBEaWZmIENvbnRleHQgTGluZXMiCiBtc2dzdHIgIk5vbWJyZSBkZSBsaWduZXMgZGUgY29udGV4dGUgZGFucyBsZXMgZGlmZnMiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyOQorIzogbGliL29wdGlvbi50Y2w6MTUzCiBtc2dpZCAiQ29tbWl0IE1lc3NhZ2UgVGV4dCBXaWR0aCIKIG1zZ3N0ciAiTGFyZ2V1ciBkdSB0ZXh0ZSBkZSBtZXNzYWdlIGRlIGNvbW1pdCIKIAotIzogbGliL29wdGlvbi50Y2w6MTMwCisjOiBsaWIvb3B0aW9uLnRjbDoxNTQKIG1zZ2lkICJOZXcgQnJhbmNoIE5hbWUgVGVtcGxhdGUiCiBtc2dzdHIgIk5vdXZlYXUgbW9kw6hsZSBkZSBub20gZGUgYnJhbmNoZSIKIAotIzogbGliL29wdGlvbi50Y2w6MTk0CisjOiBsaWIvb3B0aW9uLnRjbDoxNTUKK21zZ2lkICJEZWZhdWx0IEZpbGUgQ29udGVudHMgRW5jb2RpbmciCittc2dzdHIgIkVuY29kYWdlIGR1IGNvbnRlbnUgZGVzIGZpY2hpZXJzIHBhciBkw6lmYXV0IgorCisjOiBsaWIvb3B0aW9uLnRjbDoyMDMKK21zZ2lkICJDaGFuZ2UiCittc2dzdHIgIk1vZGlmaWVyIgorCisjOiBsaWIvb3B0aW9uLnRjbDoyMzAKIG1zZ2lkICJTcGVsbGluZyBEaWN0aW9uYXJ5OiIKIG1zZ3N0ciAiRGljdGlvbm5haXJlIGQnb3J0aG9ncmFwaGUgOiIKIAotIzogbGliL29wdGlvbi50Y2w6MjE4CisjOiBsaWIvb3B0aW9uLnRjbDoyNTQKIG1zZ2lkICJDaGFuZ2UgRm9udCIKIG1zZ3N0ciAiTW9kaWZpZXIgbGVzIHBvbGljZXMiCiAKLSM6IGxpYi9vcHRpb24udGNsOjIyMgorIzogbGliL29wdGlvbi50Y2w6MjU4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ2hvb3NlICVzIgogbXNnc3RyICJDaG9pc2lyICVzIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoyMjgKKyM6IGxpYi9vcHRpb24udGNsOjI2NAogbXNnaWQgInB0LiIKIG1zZ3N0ciAicHQuIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoyNDIKKyM6IGxpYi9vcHRpb24udGNsOjI3OAogbXNnaWQgIlByZWZlcmVuY2VzIgogbXNnc3RyICJQcsOpZsOpcmVuY2VzIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoyNzcKKyM6IGxpYi9vcHRpb24udGNsOjMxNAogbXNnaWQgIkZhaWxlZCB0byBjb21wbGV0ZWx5IHNhdmUgb3B0aW9uczoiCiBtc2dzdHIgIkxhIHNhdXZlZ2FyZGUgY29tcGzDqHRlIGRlcyBvcHRpb25zIGEgw6ljaG91w6llIDoiCiAKLSM6IGxpYi9yZW1vdGUudGNsOjE2NQorIzogbGliL3JlbW90ZS50Y2w6MTYzCittc2dpZCAiUmVtb3ZlIFJlbW90ZSIKK21zZ3N0ciAiU3VwcHJpbWVyIGTDqXDDtHQgZGlzdGFudCIKKworIzogbGliL3JlbW90ZS50Y2w6MTY4CiBtc2dpZCAiUHJ1bmUgZnJvbSIKIG1zZ3N0ciAiUHVyZ2VyIGRlIgogCi0jOiBsaWIvcmVtb3RlLnRjbDoxNzAKKyM6IGxpYi9yZW1vdGUudGNsOjE3MwogbXNnaWQgIkZldGNoIGZyb20iCiBtc2dzdHIgIlLDqWN1cMOpcmVyIGRlIgogCi0jOiBsaWIvcmVtb3RlLnRjbDoyMTMKKyM6IGxpYi9yZW1vdGUudGNsOjIxNQogbXNnaWQgIlB1c2ggdG8iCiBtc2dzdHIgIlBvdXNzZXIgdmVycyIKIAorIzogbGliL3JlbW90ZV9hZGQudGNsOjE5Cittc2dpZCAiQWRkIFJlbW90ZSIKK21zZ3N0ciAiQWpvdXRlciBkw6lww7R0IGRpc3RhbnQiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoyNAorbXNnaWQgIkFkZCBOZXcgUmVtb3RlIgorbXNnc3RyICJBam91dGVyIG5vdXZlYXUgZMOpcMO0dCBkaXN0YW50IgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MjggbGliL3Rvb2xzX2RsZy50Y2w6MzYKK21zZ2lkICJBZGQiCittc2dzdHIgIkFqb3V0ZXIiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDozNworbXNnaWQgIlJlbW90ZSBEZXRhaWxzIgorbXNnc3RyICJEw6l0YWlscyBkZXMgZMOpcMO0dHMgZGlzdGFudHMiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo1MAorbXNnaWQgIkxvY2F0aW9uOiIKK21zZ3N0ciAiRW1wbGFjZW1lbnQ6IgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NjIKK21zZ2lkICJGdXJ0aGVyIEFjdGlvbiIKK21zZ3N0ciAiQWN0aW9uIHN1cHBsw6ltZW50YWlyZSIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjY1Cittc2dpZCAiRmV0Y2ggSW1tZWRpYXRlbHkiCittc2dzdHIgIlLDqWN1cMOpcmVyIGltbcOpZGlhdGVtZW50IgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NzEKK21zZ2lkICJJbml0aWFsaXplIFJlbW90ZSBSZXBvc2l0b3J5IGFuZCBQdXNoIgorbXNnc3RyICJJbml0aWFsaXNlciBkw6lww7R0IGRpc3RhbnQgZXQgcG91c3NlciIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjc3Cittc2dpZCAiRG8gTm90aGluZyBFbHNlIE5vdyIKK21zZ3N0ciAiTmUgcmllbiBmYWlyZSBkJ2F1dHJlIG1haW50ZW5hbnQiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMDEKK21zZ2lkICJQbGVhc2Ugc3VwcGx5IGEgcmVtb3RlIG5hbWUuIgorbXNnc3RyICJNZXJjaSBkZSBmb3VybmlyIHVuIG5vbSBkZSBkw6lww7R0IGRpc3RhbnQuIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTE0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiJyVzJyBpcyBub3QgYW4gYWNjZXB0YWJsZSByZW1vdGUgbmFtZS4iCittc2dzdHIgIiclcycgbidlc3QgcGFzIHVuIG5vbSBkZSBkw6lww7R0IGRpc3RhbnQgYWNjZXB0YWJsZS4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMjUKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gYWRkIHJlbW90ZSAnJXMnIG9mIGxvY2F0aW9uICclcycuIgorbXNnc3RyICLDiWNoZWMgZGUgbCdham91dCBkdSBkw6lww7R0IGRpc3RhbnQgJyVzJyDDoCBsJ2VtcGxhY2VtZW50ICclcycuIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTMzIGxpYi90cmFuc3BvcnQudGNsOjYKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJmZXRjaCAlcyIKK21zZ3N0ciAicsOpY3Vww6lyZXIgJXMiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMzQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGZXRjaGluZyB0aGUgJXMiCittc2dzdHIgIlLDqWN1cMOpcmF0aW9uIGRlICVzIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTU3CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRG8gbm90IGtub3cgaG93IHRvIGluaXRpYWxpemUgcmVwb3NpdG9yeSBhdCBsb2NhdGlvbiAnJXMnLiIKK21zZ3N0ciAiUGFzIGRlIG3DqXRob2RlIGNvbm51ZSBwb3VyIGluaXRpYWxpc2VyIGxlIGTDqXDDtHQgw6AgbCdlbXBsYWNlbWVudCAnJXMnLiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjE2MyBsaWIvdHJhbnNwb3J0LnRjbDoyNSBsaWIvdHJhbnNwb3J0LnRjbDo3MQorIywgdGNsLWZvcm1hdAorbXNnaWQgInB1c2ggJXMiCittc2dzdHIgInBvdXNzZXIgJXMiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxNjQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHVwIHRoZSAlcyAoYXQgJXMpIgorbXNnc3RyICJNaXNlIGVuIHBsYWNlIGRlICVzICjDoCAlcykiCisKICM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6MjkgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDozNAotbXNnaWQgIkRlbGV0ZSBSZW1vdGUgQnJhbmNoIgotbXNnc3RyICJTdXBwcmltZXIgYnJhbmNoZSBkaXN0YW50ZSIKK21zZ2lkICJEZWxldGUgQnJhbmNoIFJlbW90ZWx5IgorbXNnc3RyICJTdXBwcmltZXIgYnJhbmNoZSDDoCBkaXN0YW5jZSIKIAogIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo0NwogbXNnaWQgIkZyb20gUmVwb3NpdG9yeSIKQEAgLTE4NTAsOCArMjIwNCw4IEBACiBtc2dzdHIgIkJyYW5jaGUgZGlzdGFudGUgOiIKIAogIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo2NiBsaWIvdHJhbnNwb3J0LnRjbDoxMzgKLW1zZ2lkICJBcmJpdHJhcnkgVVJMOiIKLW1zZ3N0ciAiVVJMIGFyYml0cmFpcmUgOiIKK21zZ2lkICJBcmJpdHJhcnkgTG9jYXRpb246IgorbXNnc3RyICJFbXBsYWNlbWVudCBhcmJpdHJhaXJlIDoiCiAKICM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6ODQKIG1zZ2lkICJCcmFuY2hlcyIKQEAgLTE5MjEsNiArMjI3NSwyMiBAQAogbXNnaWQgIlNjYW5uaW5nICVzLi4uIgogbXNnc3RyICJTeW5jaHJvbmlzYXRpb24gZGUgJXMuLi4iCiAKKyM6IGxpYi9zZWFyY2gudGNsOjIxCittc2dpZCAiRmluZDoiCittc2dzdHIgIkNoZXJjaGVyIDoiCisKKyM6IGxpYi9zZWFyY2gudGNsOjIzCittc2dpZCAiTmV4dCIKK21zZ3N0ciAiU3VpdmFudCIKKworIzogbGliL3NlYXJjaC50Y2w6MjQKK21zZ2lkICJQcmV2IgorbXNnc3RyICJQcsOpY8OpZGFudCIKKworIzogbGliL3NlYXJjaC50Y2w6MjUKK21zZ2lkICJDYXNlLVNlbnNpdGl2ZSIKK21zZ3N0ciAiU2Vuc2libGUgw6AgbGEgY2Fzc2UiCisKICM6IGxpYi9zaG9ydGN1dC50Y2w6MjAgbGliL3Nob3J0Y3V0LnRjbDo2MQogbXNnaWQgIkNhbm5vdCB3cml0ZSBzaG9ydGN1dDoiCiBtc2dzdHIgIkltcG9zc2libGUgZCfDqWNyaXJlIGxlIHJhY2NvdXJjaXMgOiIKQEAgLTE5NTgsMjMgKzIzMjgsMTg4IEBACiBtc2dpZCAiTm8gU3VnZ2VzdGlvbnMiCiBtc2dzdHIgIkF1Y3VuZSBzdWdnZXN0aW9uIgogCi0jOiBsaWIvc3BlbGxjaGVjay50Y2w6Mzg3CisjOiBsaWIvc3BlbGxjaGVjay50Y2w6Mzg4CiBtc2dpZCAiVW5leHBlY3RlZCBFT0YgZnJvbSBzcGVsbCBjaGVja2VyIgogbXNnc3RyICJFT0YgaW5hdHRlbmR1ZSBlbnZvecOpZSBwYXIgbGUgdsOpcmlmaWNhdGV1ciBkJ29ydGhvZ3JhcGhlIgogCi0jOiBsaWIvc3BlbGxjaGVjay50Y2w6MzkxCisjOiBsaWIvc3BlbGxjaGVjay50Y2w6MzkyCiBtc2dpZCAiU3BlbGwgQ2hlY2tlciBGYWlsZWQiCiBtc2dzdHIgIkxlIHbDqXJpZmljYXRldXIgZCdvcnRob2dyYXBoZSBhIMOpY2hvdcOpIgogCisjOiBsaWIvc3Noa2V5LnRjbDozMQorbXNnaWQgIk5vIGtleXMgZm91bmQuIgorbXNnc3RyICJBdWN1bmUgY2zDqSB0cm91dsOpZS4iCisKKyM6IGxpYi9zc2hrZXkudGNsOjM0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRm91bmQgYSBwdWJsaWMga2V5IGluOiAlcyIKK21zZ3N0ciAiQ2zDqSBwdWJsaXF1ZSB0cm91dsOpZSBkYW5zIDogJXMiCisKKyM6IGxpYi9zc2hrZXkudGNsOjQwCittc2dpZCAiR2VuZXJhdGUgS2V5IgorbXNnc3RyICJHw6luw6lyZXIgdW5lIGNsw6kiCisKKyM6IGxpYi9zc2hrZXkudGNsOjU2Cittc2dpZCAiQ29weSBUbyBDbGlwYm9hcmQiCittc2dzdHIgIkNvcGllciBkYW5zIGxlIHByZXNzZSBwYXBpZXIiCisKKyM6IGxpYi9zc2hrZXkudGNsOjcwCittc2dpZCAiWW91ciBPcGVuU1NIIFB1YmxpYyBLZXkiCittc2dzdHIgIlZvdHJlIGNsw6kgcHVibGlxdWUgT3BlbiBTU0giCisKKyM6IGxpYi9zc2hrZXkudGNsOjc4Cittc2dpZCAiR2VuZXJhdGluZy4uLiIKK21zZ3N0ciAiR8OpbsOpcmF0aW9uLi4uIgorCisjOiBsaWIvc3Noa2V5LnRjbDo4NAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZCBub3Qgc3RhcnQgc3NoLWtleWdlbjpcbiIKKyJcbiIKKyIlcyIKK21zZ3N0ciAiIgorIkltcG9zc2libGUgZGUgbGFuY2VyIHNzaC1rZXlnZW46XG4iCisiXG4iCisiJXMiCisKKyM6IGxpYi9zc2hrZXkudGNsOjExMQorbXNnaWQgIkdlbmVyYXRpb24gZmFpbGVkLiIKK21zZ3N0ciAiTGEgZ8OpbsOpcmF0aW9uIGEgw6ljaG91w6kuIgorCisjOiBsaWIvc3Noa2V5LnRjbDoxMTgKK21zZ2lkICJHZW5lcmF0aW9uIHN1Y2NlZGVkLCBidXQgbm8ga2V5cyBmb3VuZC4iCittc2dzdHIgIkxhIGfDqW7DqXJhdGlvbiBhIHLDqXVzc2ksIG1haXMgYXVjdW5lIGNsw6kgbidhIMOpdMOpIHRyb3V2w6llLiIKKworIzogbGliL3NzaGtleS50Y2w6MTIxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiWW91ciBrZXkgaXMgaW46ICVzIgorbXNnc3RyICJWb3RyZSBjbMOpIGVzdCBkYW5zIDogJXMiCisKICM6IGxpYi9zdGF0dXNfYmFyLnRjbDo4MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIiVzIC4uLiAlKmkgb2YgJSppICVzICglM2klJSkiCiBtc2dzdHIgIiVzIC4uLiAlKmkgZGUgJSppICVzICglM2klJSkiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjYKKyM6IGxpYi90b29scy50Y2w6NzUKICMsIHRjbC1mb3JtYXQKLW1zZ2lkICJmZXRjaCAlcyIKLW1zZ3N0ciAicsOpY3Vww6lyZXIgJXMiCittc2dpZCAiUnVubmluZyAlcyByZXF1aXJlcyBhIHNlbGVjdGVkIGZpbGUuIgorbXNnc3RyICJMYW5jZXIgJXMgbsOpY2Vzc2l0ZSBxdSd1biBmaWNoaWVyIHNvaXQgc8OpbGVjdGlvbm7DqS4iCisKKyM6IGxpYi90b29scy50Y2w6OTAKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcnVuICVzPyIKK21zZ3N0ciAiw4p0ZXMgdm91cyBzw7tyIGRlIHZvdWxvaXIgbGFuY2VyICVzID8iCisKKyM6IGxpYi90b29scy50Y2w6MTEwCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVG9vbDogJXMiCittc2dzdHIgIk91dGlsIDogJXMiCisKKyM6IGxpYi90b29scy50Y2w6MTExCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiUnVubmluZzogJXMiCittc2dzdHIgIkxhbmNlbWVudCBkZSA6ICVzIgorCisjOiBsaWIvdG9vbHMudGNsOjE0OQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlRvb2wgY29tcGxldGVkIHN1Y2Nlc2Z1bGx5OiAlcyIKK21zZ3N0ciAiTCdvdXRpbCBhIHRlcm1pbsOpIGF2ZWMgc3VjY8OocyA6ICVzIgorCisjOiBsaWIvdG9vbHMudGNsOjE1MQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlRvb2wgZmFpbGVkOiAlcyIKK21zZ3N0ciAiTCdvdXRpbCBhIMOpY2hvdcOpIDogJXMiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjIyCittc2dpZCAiQWRkIFRvb2wiCittc2dzdHIgIkFqb3V0ZXIgb3V0aWwiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjI4Cittc2dpZCAiQWRkIE5ldyBUb29sIENvbW1hbmQiCittc2dzdHIgIkFqb3V0ZXIgbm91dmVsbGUgY29tbWFuZGUgZCdvdXRpbCIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MzMKK21zZ2lkICJBZGQgZ2xvYmFsbHkiCittc2dzdHIgIkFqb3V0ZXIgZ2xvYmFsZW1lbnQiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjQ1Cittc2dpZCAiVG9vbCBEZXRhaWxzIgorbXNnc3RyICJEw6l0YWlscyBzdXIgbCdvdXRpbCIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6NDgKK21zZ2lkICJVc2UgJy8nIHNlcGFyYXRvcnMgdG8gY3JlYXRlIGEgc3VibWVudSB0cmVlOiIKK21zZ3N0ciAiVXRpbGlzZXIgbGVzIHPDqXBhcmF0ZXVycyAnLycgcG91ciBjcsOpZXIgdW4gYXJicmUgZGUgc291cyBtZW51cyA6IgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo2MQorbXNnaWQgIkNvbW1hbmQ6IgorbXNnc3RyICJDb21tYW5kZSA6IgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo3NAorbXNnaWQgIlNob3cgYSBkaWFsb2cgYmVmb3JlIHJ1bm5pbmciCittc2dzdHIgIk1vbnRyZXIgdW5lIGJvw650ZSBkZSBkaWFsb2d1ZSBhdmFudCBsZSBsYW5jZW1lbnQiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjgwCittc2dpZCAiQXNrIHRoZSB1c2VyIHRvIHNlbGVjdCBhIHJldmlzaW9uIChzZXRzICRSRVZJU0lPTikiCittc2dzdHIgIkRlbWFuZGVyIMOgIGwndXRpbGlzYXRldXIgZGUgc8OpbGVjdGlvbm5lciB1bmUgcsOpdmlzaW9uIChjaGFuZ2UgJFJFVklTSU9OKSIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6ODUKK21zZ2lkICJBc2sgdGhlIHVzZXIgZm9yIGFkZGl0aW9uYWwgYXJndW1lbnRzIChzZXRzICRBUkdTKSIKK21zZ3N0ciAiRGVtYW5kZXIgw6AgbCd1dGlsaXNhdGV1ciBkZXMgYXJndW1lbnRzIHN1cHBsw6ltZW50YWlyZXMgKGNoYW5nZSAkQVJHUykiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjkyCittc2dpZCAiRG9uJ3Qgc2hvdyB0aGUgY29tbWFuZCBvdXRwdXQgd2luZG93IgorbXNnc3RyICJOZSBwYXMgbW9udHJlciBsYSBmZW7DqnRyZSBkZSBzb3J0aWUgZGVzIGNvbW1hbmRlcyIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6OTcKK21zZ2lkICJSdW4gb25seSBpZiBhIGRpZmYgaXMgc2VsZWN0ZWQgKCRGSUxFTkFNRSBub3QgZW1wdHkpIgorbXNnc3RyICJMYW5jZXIgc2V1bGVtZW50IHNpIHVuIGRpZmYgZXN0IHNlbGVjdGlvbm7DqSAoJEZJTEVOQU1FIG5vbiB2aWRlKSIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTIxCittc2dpZCAiUGxlYXNlIHN1cHBseSBhIG5hbWUgZm9yIHRoZSB0b29sLiIKK21zZ3N0ciAiTWVyY2kgZGUgZm91cm5pciB1biBub20gcG91ciBsJ291dGlsLiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTI5CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVG9vbCAnJXMnIGFscmVhZHkgZXhpc3RzLiIKK21zZ3N0ciAiTCdvdXRpbCAnJXMnIGV4aXN0ZSBkw6lqw6AuIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoxNTEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiQ291bGQgbm90IGFkZCB0b29sOlxuIgorIiVzIgorbXNnc3RyICIiCisiSW1wb3NzaWJsZSBkJ2Fqb3V0ZXIgbCdvdXRpbDpcbiIKKyIlcyIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTkwCittc2dpZCAiUmVtb3ZlIFRvb2wiCittc2dzdHIgIlN1cHByaW1lciBsJ291dGlsIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoxOTYKK21zZ2lkICJSZW1vdmUgVG9vbCBDb21tYW5kcyIKK21zZ3N0ciAiU3VwcHJpbWVyIGRlcyBjb21tYW5kZXMgZCdvdXRpbCIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjAwCittc2dpZCAiUmVtb3ZlIgorbXNnc3RyICJTdXBwcmltZXIiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjIzNgorbXNnaWQgIihCbHVlIGRlbm90ZXMgcmVwb3NpdG9yeS1sb2NhbCB0b29scykiCittc2dzdHIgIihMZSBibGV1IGluZGlxdWUgZGVzIG91dGlscyBsb2NhdXggYXUgZMOpcMO0dCkiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjI5NworIywgdGNsLWZvcm1hdAorbXNnaWQgIlJ1biBDb21tYW5kOiAlcyIKK21zZ3N0ciAiTGFuY2VyIGNvbW1hbmRlIDogJXMiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjMxMQorbXNnaWQgIkFyZ3VtZW50cyIKK21zZ3N0ciAiQXJndW1lbnRzIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDozNDgKK21zZ2lkICJPSyIKK21zZ3N0ciAiT0siCiAKICM6IGxpYi90cmFuc3BvcnQudGNsOjcKICMsIHRjbC1mb3JtYXQKQEAgLTE5OTEsMTEgKzI1MjYsNiBAQAogbXNnaWQgIlBydW5pbmcgdHJhY2tpbmcgYnJhbmNoZXMgZGVsZXRlZCBmcm9tICVzIgogbXNnc3RyICJOZXR0b3llciBsZXMgYnJhbmNoZXMgZGUgc3Vpdmkgc3VwcHJpbcOpZXMgZGUgJXMiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjI1IGxpYi90cmFuc3BvcnQudGNsOjcxCi0jLCB0Y2wtZm9ybWF0Ci1tc2dpZCAicHVzaCAlcyIKLW1zZ3N0ciAicG91c3NlciAlcyIKLQogIzogbGliL3RyYW5zcG9ydC50Y2w6MjYKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJQdXNoaW5nIGNoYW5nZXMgdG8gJXMiCmRpZmYgLS1naXQgYS9naXQtZ3VpL3BvL2dpdC1ndWkucG90IGIvZ2l0LWd1aS9wby9naXQtZ3VpLnBvdAppbmRleCBlMjk1MDAwLi4xNWFlYTBkIDEwMDY0NAotLS0gYS9naXQtZ3VpL3BvL2dpdC1ndWkucG90CisrKyBiL2dpdC1ndWkvcG8vZ2l0LWd1aS5wb3QKQEAgLTgsNyArOCw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IFBBQ0tBR0UgVkVSU0lPTlxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBcbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwOC0wOC0wMiAxNDo0NS0wNzAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMDgtMTItMDggMDg6MzEtMDgwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IFlFQVItTU8tREEgSE86TUkrWk9ORVxuIgogIkxhc3QtVHJhbnNsYXRvcjogRlVMTCBOQU1FIDxFTUFJTEBBRERSRVNTPlxuIgogIkxhbmd1YWdlLVRlYW06IExBTkdVQUdFIDxMTEBsaS5vcmc+XG4iCkBAIC0xNiwzMyArMTYsMzMgQEAKICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9Q0hBUlNFVFxuIgogIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKIAotIzogZ2l0LWd1aS5zaDo0MSBnaXQtZ3VpLnNoOjY4OCBnaXQtZ3VpLnNoOjcwMiBnaXQtZ3VpLnNoOjcxNSBnaXQtZ3VpLnNoOjc5OAotIzogZ2l0LWd1aS5zaDo4MTcKKyM6IGdpdC1ndWkuc2g6NDEgZ2l0LWd1aS5zaDo3MzcgZ2l0LWd1aS5zaDo3NTEgZ2l0LWd1aS5zaDo3NjQgZ2l0LWd1aS5zaDo4NDcKKyM6IGdpdC1ndWkuc2g6ODY2CiBtc2dpZCAiZ2l0LWd1aTogZmF0YWwgZXJyb3IiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDo2NDQKKyM6IGdpdC1ndWkuc2g6Njg5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCBmb250IHNwZWNpZmllZCBpbiAlczoiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDo2NzQKKyM6IGdpdC1ndWkuc2g6NzIzCiBtc2dpZCAiTWFpbiBGb250IgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6Njc1CisjOiBnaXQtZ3VpLnNoOjcyNAogbXNnaWQgIkRpZmYvQ29uc29sZSBGb250IgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6Njg5CisjOiBnaXQtZ3VpLnNoOjczOAogbXNnaWQgIkNhbm5vdCBmaW5kIGdpdCBpbiBQQVRILiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjcxNgorIzogZ2l0LWd1aS5zaDo3NjUKIG1zZ2lkICJDYW5ub3QgcGFyc2UgR2l0IHZlcnNpb24gc3RyaW5nOiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjczNAorIzogZ2l0LWd1aS5zaDo3ODMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiR2l0IHZlcnNpb24gY2Fubm90IGJlIGRldGVybWluZWQuXG4iCkBAIC01NCwzNzkgKzU0LDQ0NCBAQAogIkFzc3VtZSAnJXMnIGlzIHZlcnNpb24gMS41LjA/XG4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDo5NzIKKyM6IGdpdC1ndWkuc2g6MTA2MgogbXNnaWQgIkdpdCBkaXJlY3Rvcnkgbm90IGZvdW5kOiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjk3OQorIzogZ2l0LWd1aS5zaDoxMDY5CiBtc2dpZCAiQ2Fubm90IG1vdmUgdG8gdG9wIG9mIHdvcmtpbmcgZGlyZWN0b3J5OiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjk4NgorIzogZ2l0LWd1aS5zaDoxMDc2CiBtc2dpZCAiQ2Fubm90IHVzZSBmdW5ueSAuZ2l0IGRpcmVjdG9yeToiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDo5OTEKKyM6IGdpdC1ndWkuc2g6MTA4MQogbXNnaWQgIk5vIHdvcmtpbmcgZGlyZWN0b3J5IgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MTEzOCBsaWIvY2hlY2tvdXRfb3AudGNsOjMwNQorIzogZ2l0LWd1aS5zaDoxMjQ3IGxpYi9jaGVja291dF9vcC50Y2w6MzA1CiBtc2dpZCAiUmVmcmVzaGluZyBmaWxlIHN0YXR1cy4uLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjExOTQKKyM6IGdpdC1ndWkuc2g6MTMwMwogbXNnaWQgIlNjYW5uaW5nIGZvciBtb2RpZmllZCBmaWxlcyAuLi4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoxMzY5IGxpYi9icm93c2VyLnRjbDoyNDYKKyM6IGdpdC1ndWkuc2g6MTM2NworbXNnaWQgIkNhbGxpbmcgcHJlcGFyZS1jb21taXQtbXNnIGhvb2suLi4iCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDoxMzg0Cittc2dpZCAiQ29tbWl0IGRlY2xpbmVkIGJ5IHByZXBhcmUtY29tbWl0LW1zZyBob29rLiIKK21zZ3N0ciAiIgorCisjOiBnaXQtZ3VpLnNoOjE1NDIgbGliL2Jyb3dzZXIudGNsOjI0NgogbXNnaWQgIlJlYWR5LiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjE2MzUKKyM6IGdpdC1ndWkuc2g6MTgxOQogbXNnaWQgIlVubW9kaWZpZWQiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoxNjM3CisjOiBnaXQtZ3VpLnNoOjE4MjEKIG1zZ2lkICJNb2RpZmllZCwgbm90IHN0YWdlZCIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjE2MzggZ2l0LWd1aS5zaDoxNjQzCisjOiBnaXQtZ3VpLnNoOjE4MjIgZ2l0LWd1aS5zaDoxODMwCiBtc2dpZCAiU3RhZ2VkIGZvciBjb21taXQiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoxNjM5IGdpdC1ndWkuc2g6MTY0NAorIzogZ2l0LWd1aS5zaDoxODIzIGdpdC1ndWkuc2g6MTgzMQogbXNnaWQgIlBvcnRpb25zIHN0YWdlZCBmb3IgY29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MTY0MCBnaXQtZ3VpLnNoOjE2NDUKKyM6IGdpdC1ndWkuc2g6MTgyNCBnaXQtZ3VpLnNoOjE4MzIKIG1zZ2lkICJTdGFnZWQgZm9yIGNvbW1pdCwgbWlzc2luZyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjE2NDIKKyM6IGdpdC1ndWkuc2g6MTgyNgorbXNnaWQgIkZpbGUgdHlwZSBjaGFuZ2VkLCBub3Qgc3RhZ2VkIgorbXNnc3RyICIiCisKKyM6IGdpdC1ndWkuc2g6MTgyNworbXNnaWQgIkZpbGUgdHlwZSBjaGFuZ2VkLCBzdGFnZWQiCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDoxODI5CiBtc2dpZCAiVW50cmFja2VkLCBub3Qgc3RhZ2VkIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MTY0NworIzogZ2l0LWd1aS5zaDoxODM0CiBtc2dpZCAiTWlzc2luZyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjE2NDgKKyM6IGdpdC1ndWkuc2g6MTgzNQogbXNnaWQgIlN0YWdlZCBmb3IgcmVtb3ZhbCIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjE2NDkKKyM6IGdpdC1ndWkuc2g6MTgzNgogbXNnaWQgIlN0YWdlZCBmb3IgcmVtb3ZhbCwgc3RpbGwgcHJlc2VudCIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjE2NTEgZ2l0LWd1aS5zaDoxNjUyIGdpdC1ndWkuc2g6MTY1MyBnaXQtZ3VpLnNoOjE2NTQKKyM6IGdpdC1ndWkuc2g6MTgzOCBnaXQtZ3VpLnNoOjE4MzkgZ2l0LWd1aS5zaDoxODQwIGdpdC1ndWkuc2g6MTg0MQorIzogZ2l0LWd1aS5zaDoxODQyIGdpdC1ndWkuc2g6MTg0MwogbXNnaWQgIlJlcXVpcmVzIG1lcmdlIHJlc29sdXRpb24iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoxNjg5CisjOiBnaXQtZ3VpLnNoOjE4NzgKIG1zZ2lkICJTdGFydGluZyBnaXRrLi4uIHBsZWFzZSB3YWl0Li4uIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MTY5OAorIzogZ2l0LWd1aS5zaDoxODg3CiBtc2dpZCAiQ291bGRuJ3QgZmluZCBnaXRrIGluIFBBVEgiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoxOTQ4IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzYKKyM6IGdpdC1ndWkuc2g6MjI4MCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM2CiBtc2dpZCAiUmVwb3NpdG9yeSIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjE5NDkKKyM6IGdpdC1ndWkuc2g6MjI4MQogbXNnaWQgIkVkaXQiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoxOTUxIGxpYi9jaG9vc2VfcmV2LnRjbDo1NjEKKyM6IGdpdC1ndWkuc2g6MjI4MyBsaWIvY2hvb3NlX3Jldi50Y2w6NTYxCiBtc2dpZCAiQnJhbmNoIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MTk1NCBsaWIvY2hvb3NlX3Jldi50Y2w6NTQ4CisjOiBnaXQtZ3VpLnNoOjIyODYgbGliL2Nob29zZV9yZXYudGNsOjU0OAogbXNnaWQgIkNvbW1pdEBAbm91biIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjE5NTcgbGliL21lcmdlLnRjbDoxMjAgbGliL21lcmdlLnRjbDoxNDkgbGliL21lcmdlLnRjbDoxNjcKKyM6IGdpdC1ndWkuc2g6MjI4OSBsaWIvbWVyZ2UudGNsOjEyMSBsaWIvbWVyZ2UudGNsOjE1MCBsaWIvbWVyZ2UudGNsOjE2OAogbXNnaWQgIk1lcmdlIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MTk1OCBsaWIvY2hvb3NlX3Jldi50Y2w6NTU3CisjOiBnaXQtZ3VpLnNoOjIyOTAgbGliL2Nob29zZV9yZXYudGNsOjU1NwogbXNnaWQgIlJlbW90ZSIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjE5NjcKKyM6IGdpdC1ndWkuc2g6MjI5MworbXNnaWQgIlRvb2xzIgorbXNnc3RyICIiCisKKyM6IGdpdC1ndWkuc2g6MjMwMgorbXNnaWQgIkV4cGxvcmUgV29ya2luZyBDb3B5IgorbXNnc3RyICIiCisKKyM6IGdpdC1ndWkuc2g6MjMwNwogbXNnaWQgIkJyb3dzZSBDdXJyZW50IEJyYW5jaCdzIEZpbGVzIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MTk3MQorIzogZ2l0LWd1aS5zaDoyMzExCiBtc2dpZCAiQnJvd3NlIEJyYW5jaCBGaWxlcy4uLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjE5NzYKKyM6IGdpdC1ndWkuc2g6MjMxNgogbXNnaWQgIlZpc3VhbGl6ZSBDdXJyZW50IEJyYW5jaCdzIEhpc3RvcnkiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoxOTgwCisjOiBnaXQtZ3VpLnNoOjIzMjAKIG1zZ2lkICJWaXN1YWxpemUgQWxsIEJyYW5jaCBIaXN0b3J5IgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MTk4NworIzogZ2l0LWd1aS5zaDoyMzI3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQnJvd3NlICVzJ3MgRmlsZXMiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoxOTg5CisjOiBnaXQtZ3VpLnNoOjIzMjkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJWaXN1YWxpemUgJXMncyBIaXN0b3J5IgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MTk5NCBsaWIvZGF0YWJhc2UudGNsOjI3IGxpYi9kYXRhYmFzZS50Y2w6NjcKKyM6IGdpdC1ndWkuc2g6MjMzNCBsaWIvZGF0YWJhc2UudGNsOjI3IGxpYi9kYXRhYmFzZS50Y2w6NjcKIG1zZ2lkICJEYXRhYmFzZSBTdGF0aXN0aWNzIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MTk5NyBsaWIvZGF0YWJhc2UudGNsOjM0CisjOiBnaXQtZ3VpLnNoOjIzMzcgbGliL2RhdGFiYXNlLnRjbDozNAogbXNnaWQgIkNvbXByZXNzIERhdGFiYXNlIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MjAwMAorIzogZ2l0LWd1aS5zaDoyMzQwCiBtc2dpZCAiVmVyaWZ5IERhdGFiYXNlIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MjAwNyBnaXQtZ3VpLnNoOjIwMTEgZ2l0LWd1aS5zaDoyMDE1IGxpYi9zaG9ydGN1dC50Y2w6NworIzogZ2l0LWd1aS5zaDoyMzQ3IGdpdC1ndWkuc2g6MjM1MSBnaXQtZ3VpLnNoOjIzNTUgbGliL3Nob3J0Y3V0LnRjbDo3CiAjOiBsaWIvc2hvcnRjdXQudGNsOjM5IGxpYi9zaG9ydGN1dC50Y2w6NzEKIG1zZ2lkICJDcmVhdGUgRGVza3RvcCBJY29uIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MjAyMyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjE3NyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjE4NQorIzogZ2l0LWd1aS5zaDoyMzYzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTgzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTkxCiBtc2dpZCAiUXVpdCIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjIwMzEKKyM6IGdpdC1ndWkuc2g6MjM3MQogbXNnaWQgIlVuZG8iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyMDM0CisjOiBnaXQtZ3VpLnNoOjIzNzQKIG1zZ2lkICJSZWRvIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MjAzOCBnaXQtZ3VpLnNoOjI1NDUKKyM6IGdpdC1ndWkuc2g6MjM3OCBnaXQtZ3VpLnNoOjI5MzcKIG1zZ2lkICJDdXQiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyMDQxIGdpdC1ndWkuc2g6MjU0OCBnaXQtZ3VpLnNoOjI2MjIgZ2l0LWd1aS5zaDoyNzE1CisjOiBnaXQtZ3VpLnNoOjIzODEgZ2l0LWd1aS5zaDoyOTQwIGdpdC1ndWkuc2g6MzAxNCBnaXQtZ3VpLnNoOjMwOTYKICM6IGxpYi9jb25zb2xlLnRjbDo2OQogbXNnaWQgIkNvcHkiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyMDQ0IGdpdC1ndWkuc2g6MjU1MQorIzogZ2l0LWd1aS5zaDoyMzg0IGdpdC1ndWkuc2g6Mjk0MwogbXNnaWQgIlBhc3RlIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MjA0NyBnaXQtZ3VpLnNoOjI1NTQgbGliL2JyYW5jaF9kZWxldGUudGNsOjI2CisjOiBnaXQtZ3VpLnNoOjIzODcgZ2l0LWd1aS5zaDoyOTQ2IGxpYi9icmFuY2hfZGVsZXRlLnRjbDoyNgogIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDozOAogbXNnaWQgIkRlbGV0ZSIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjIwNTEgZ2l0LWd1aS5zaDoyNTU4IGdpdC1ndWkuc2g6MjcxOSBsaWIvY29uc29sZS50Y2w6NzEKKyM6IGdpdC1ndWkuc2g6MjM5MSBnaXQtZ3VpLnNoOjI5NTAgZ2l0LWd1aS5zaDozMTAwIGxpYi9jb25zb2xlLnRjbDo3MQogbXNnaWQgIlNlbGVjdCBBbGwiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyMDYwCisjOiBnaXQtZ3VpLnNoOjI0MDAKIG1zZ2lkICJDcmVhdGUuLi4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyMDY2CisjOiBnaXQtZ3VpLnNoOjI0MDYKIG1zZ2lkICJDaGVja291dC4uLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjIwNzIKKyM6IGdpdC1ndWkuc2g6MjQxMgogbXNnaWQgIlJlbmFtZS4uLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjIwNzcgZ2l0LWd1aS5zaDoyMTg3CisjOiBnaXQtZ3VpLnNoOjI0MTcKIG1zZ2lkICJEZWxldGUuLi4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyMDgyCisjOiBnaXQtZ3VpLnNoOjI0MjIKIG1zZ2lkICJSZXNldC4uLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjIwOTQgZ2l0LWd1aS5zaDoyNDkxCi1tc2dpZCAiTmV3IENvbW1pdCIKKyM6IGdpdC1ndWkuc2g6MjQzMgorbXNnaWQgIkRvbmUiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyMTAyIGdpdC1ndWkuc2g6MjQ5OAotbXNnaWQgIkFtZW5kIExhc3QgQ29tbWl0IgotbXNnc3RyICIiCi0KLSM6IGdpdC1ndWkuc2g6MjExMSBnaXQtZ3VpLnNoOjI0NTggbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo5OQotbXNnaWQgIlJlc2NhbiIKLW1zZ3N0ciAiIgotCi0jOiBnaXQtZ3VpLnNoOjIxMTcKLW1zZ2lkICJTdGFnZSBUbyBDb21taXQiCi1tc2dzdHIgIiIKLQotIzogZ2l0LWd1aS5zaDoyMTIzCi1tc2dpZCAiU3RhZ2UgQ2hhbmdlZCBGaWxlcyBUbyBDb21taXQiCi1tc2dzdHIgIiIKLQotIzogZ2l0LWd1aS5zaDoyMTI5Ci1tc2dpZCAiVW5zdGFnZSBGcm9tIENvbW1pdCIKLW1zZ3N0ciAiIgotCi0jOiBnaXQtZ3VpLnNoOjIxMzQgbGliL2luZGV4LnRjbDozOTUKLW1zZ2lkICJSZXZlcnQgQ2hhbmdlcyIKLW1zZ3N0ciAiIgotCi0jOiBnaXQtZ3VpLnNoOjIxNDEgZ2l0LWd1aS5zaDoyNzAyCi1tc2dpZCAiU2hvdyBMZXNzIENvbnRleHQiCi1tc2dzdHIgIiIKLQotIzogZ2l0LWd1aS5zaDoyMTQ1IGdpdC1ndWkuc2g6MjcwNgotbXNnaWQgIlNob3cgTW9yZSBDb250ZXh0IgotbXNnc3RyICIiCi0KLSM6IGdpdC1ndWkuc2g6MjE1MSBnaXQtZ3VpLnNoOjI0NzAgZ2l0LWd1aS5zaDoyNTY5Ci1tc2dpZCAiU2lnbiBPZmYiCi1tc2dzdHIgIiIKLQotIzogZ2l0LWd1aS5zaDoyMTU1IGdpdC1ndWkuc2g6MjQ3NAorIzogZ2l0LWd1aS5zaDoyNDM0CiBtc2dpZCAiQ29tbWl0QEB2ZXJiIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MjE2NgorIzogZ2l0LWd1aS5zaDoyNDQzIGdpdC1ndWkuc2g6Mjg3OAorbXNnaWQgIk5ldyBDb21taXQiCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDoyNDUxIGdpdC1ndWkuc2g6Mjg4NQorbXNnaWQgIkFtZW5kIExhc3QgQ29tbWl0IgorbXNnc3RyICIiCisKKyM6IGdpdC1ndWkuc2g6MjQ2MSBnaXQtZ3VpLnNoOjI4MzkgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo5OQorbXNnaWQgIlJlc2NhbiIKK21zZ3N0ciAiIgorCisjOiBnaXQtZ3VpLnNoOjI0NjcKK21zZ2lkICJTdGFnZSBUbyBDb21taXQiCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDoyNDczCittc2dpZCAiU3RhZ2UgQ2hhbmdlZCBGaWxlcyBUbyBDb21taXQiCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDoyNDc5Cittc2dpZCAiVW5zdGFnZSBGcm9tIENvbW1pdCIKK21zZ3N0ciAiIgorCisjOiBnaXQtZ3VpLnNoOjI0ODQgbGliL2luZGV4LnRjbDo0MTAKK21zZ2lkICJSZXZlcnQgQ2hhbmdlcyIKK21zZ3N0ciAiIgorCisjOiBnaXQtZ3VpLnNoOjI0OTEgZ2l0LWd1aS5zaDozMDgzCittc2dpZCAiU2hvdyBMZXNzIENvbnRleHQiCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDoyNDk1IGdpdC1ndWkuc2g6MzA4NworbXNnaWQgIlNob3cgTW9yZSBDb250ZXh0IgorbXNnc3RyICIiCisKKyM6IGdpdC1ndWkuc2g6MjUwMiBnaXQtZ3VpLnNoOjI4NTIgZ2l0LWd1aS5zaDoyOTYxCittc2dpZCAiU2lnbiBPZmYiCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDoyNTE4CiBtc2dpZCAiTG9jYWwgTWVyZ2UuLi4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyMTcxCisjOiBnaXQtZ3VpLnNoOjI1MjMKIG1zZ2lkICJBYm9ydCBNZXJnZS4uLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjIxODMKKyM6IGdpdC1ndWkuc2g6MjUzNSBnaXQtZ3VpLnNoOjI1NzUKK21zZ2lkICJBZGQuLi4iCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDoyNTM5CiBtc2dpZCAiUHVzaC4uLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjIxOTcgZ2l0LWd1aS5zaDoyMjE5IGxpYi9hYm91dC50Y2w6MTQKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MAorIzogZ2l0LWd1aS5zaDoyNTQzCittc2dpZCAiRGVsZXRlIEJyYW5jaC4uLiIKK21zZ3N0ciAiIgorCisjOiBnaXQtZ3VpLnNoOjI1NTMgZ2l0LWd1aS5zaDoyNTg5IGxpYi9hYm91dC50Y2w6MTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIkFib3V0ICVzIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MjIwMQorIzogZ2l0LWd1aS5zaDoyNTU3CiBtc2dpZCAiUHJlZmVyZW5jZXMuLi4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyMjA5IGdpdC1ndWkuc2g6Mjc0MAorIzogZ2l0LWd1aS5zaDoyNTY1IGdpdC1ndWkuc2g6MzEyOQogbXNnaWQgIk9wdGlvbnMuLi4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyMjE1IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDcKKyM6IGdpdC1ndWkuc2g6MjU3NgorbXNnaWQgIlJlbW92ZS4uLiIKK21zZ3N0ciAiIgorCisjOiBnaXQtZ3VpLnNoOjI1ODUgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MAogbXNnaWQgIkhlbHAiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyMjU2CisjOiBnaXQtZ3VpLnNoOjI2MTEKIG1zZ2lkICJPbmxpbmUgRG9jdW1lbnRhdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjIzNDAKKyM6IGdpdC1ndWkuc2g6MjYxNCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ3IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTYKK21zZ2lkICJTaG93IFNTSCBLZXkiCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDoyNzIxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiZmF0YWw6IGNhbm5vdCBzdGF0IHBhdGggJXM6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyMzczCisjOiBnaXQtZ3VpLnNoOjI3NTQKIG1zZ2lkICJDdXJyZW50IEJyYW5jaDoiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyMzk0CisjOiBnaXQtZ3VpLnNoOjI3NzUKIG1zZ2lkICJTdGFnZWQgQ2hhbmdlcyAoV2lsbCBDb21taXQpIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MjQxNAorIzogZ2l0LWd1aS5zaDoyNzk1CiBtc2dpZCAiVW5zdGFnZWQgQ2hhbmdlcyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjI0NjQKKyM6IGdpdC1ndWkuc2g6Mjg0NQogbXNnaWQgIlN0YWdlIENoYW5nZWQiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyNDgwIGxpYi90cmFuc3BvcnQudGNsOjkzIGxpYi90cmFuc3BvcnQudGNsOjE4MgorIzogZ2l0LWd1aS5zaDoyODY0IGxpYi90cmFuc3BvcnQudGNsOjEwNCBsaWIvdHJhbnNwb3J0LnRjbDoxOTMKIG1zZ2lkICJQdXNoIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MjUxMAorIzogZ2l0LWd1aS5zaDoyODk5CiBtc2dpZCAiSW5pdGlhbCBDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyNTExCisjOiBnaXQtZ3VpLnNoOjI5MDAKIG1zZ2lkICJBbWVuZGVkIENvbW1pdCBNZXNzYWdlOiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjI1MTIKKyM6IGdpdC1ndWkuc2g6MjkwMQogbXNnaWQgIkFtZW5kZWQgSW5pdGlhbCBDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyNTEzCisjOiBnaXQtZ3VpLnNoOjI5MDIKIG1zZ2lkICJBbWVuZGVkIE1lcmdlIENvbW1pdCBNZXNzYWdlOiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjI1MTQKKyM6IGdpdC1ndWkuc2g6MjkwMwogbXNnaWQgIk1lcmdlIENvbW1pdCBNZXNzYWdlOiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjI1MTUKKyM6IGdpdC1ndWkuc2g6MjkwNAogbXNnaWQgIkNvbW1pdCBNZXNzYWdlOiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjI1NjEgZ2l0LWd1aS5zaDoyNzIzIGxpYi9jb25zb2xlLnRjbDo3MworIzogZ2l0LWd1aS5zaDoyOTUzIGdpdC1ndWkuc2g6MzEwNCBsaWIvY29uc29sZS50Y2w6NzMKIG1zZ2lkICJDb3B5IEFsbCIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjI1ODUgbGliL2JsYW1lLnRjbDoxMDAKKyM6IGdpdC1ndWkuc2g6Mjk3NyBsaWIvYmxhbWUudGNsOjEwNAogbXNnaWQgIkZpbGU6IgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MjY5MQotbXNnaWQgIkFwcGx5L1JldmVyc2UgSHVuayIKLW1zZ3N0ciAiIgotCi0jOiBnaXQtZ3VpLnNoOjI2OTYKLW1zZ2lkICJBcHBseS9SZXZlcnNlIExpbmUiCi1tc2dzdHIgIiIKLQotIzogZ2l0LWd1aS5zaDoyNzExCisjOiBnaXQtZ3VpLnNoOjMwOTIKIG1zZ2lkICJSZWZyZXNoIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MjczMgorIzogZ2l0LWd1aS5zaDozMTEzCiBtc2dpZCAiRGVjcmVhc2UgRm9udCBTaXplIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MjczNgorIzogZ2l0LWd1aS5zaDozMTE3CiBtc2dpZCAiSW5jcmVhc2UgRm9udCBTaXplIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6Mjc0NworIzogZ2l0LWd1aS5zaDozMTI1IGxpYi9ibGFtZS50Y2w6MjgxCittc2dpZCAiRW5jb2RpbmciCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDozMTM2Cittc2dpZCAiQXBwbHkvUmV2ZXJzZSBIdW5rIgorbXNnc3RyICIiCisKKyM6IGdpdC1ndWkuc2g6MzE0MQorbXNnaWQgIkFwcGx5L1JldmVyc2UgTGluZSIKK21zZ3N0ciAiIgorCisjOiBnaXQtZ3VpLnNoOjMxNTEKK21zZ2lkICJSdW4gTWVyZ2UgVG9vbCIKK21zZ3N0ciAiIgorCisjOiBnaXQtZ3VpLnNoOjMxNTYKK21zZ2lkICJVc2UgUmVtb3RlIFZlcnNpb24iCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDozMTYwCittc2dpZCAiVXNlIExvY2FsIFZlcnNpb24iCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDozMTY0Cittc2dpZCAiUmV2ZXJ0IFRvIEJhc2UiCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDozMTgzCiBtc2dpZCAiVW5zdGFnZSBIdW5rIEZyb20gQ29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6Mjc0OAorIzogZ2l0LWd1aS5zaDozMTg0CiBtc2dpZCAiVW5zdGFnZSBMaW5lIEZyb20gQ29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6Mjc1MAorIzogZ2l0LWd1aS5zaDozMTg2CiBtc2dpZCAiU3RhZ2UgSHVuayBGb3IgQ29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6Mjc1MQorIzogZ2l0LWd1aS5zaDozMTg3CiBtc2dpZCAiU3RhZ2UgTGluZSBGb3IgQ29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6Mjc3MQorIzogZ2l0LWd1aS5zaDozMjEwCiBtc2dpZCAiSW5pdGlhbGl6aW5nLi4uIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6Mjg3NgorIzogZ2l0LWd1aS5zaDozMzE1CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIlBvc3NpYmxlIGVudmlyb25tZW50IGlzc3VlcyBleGlzdC5cbiIKQEAgLTQzNywxNCArNTAyLDE0IEBACiAiXG4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyOTA2CisjOiBnaXQtZ3VpLnNoOjMzNDUKIG1zZ2lkICIiCiAiXG4iCiAiVGhpcyBpcyBkdWUgdG8gYSBrbm93biBpc3N1ZSB3aXRoIHRoZVxuIgogIlRjbCBiaW5hcnkgZGlzdHJpYnV0ZWQgYnkgQ3lnd2luLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjI5MTEKKyM6IGdpdC1ndWkuc2g6MzM1MAogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKQEAgLTQ1OSw4MCArNTI0LDEwOCBAQAogbXNnaWQgImdpdC1ndWkgLSBhIGdyYXBoaWNhbCB1c2VyIGludGVyZmFjZSBmb3IgR2l0LiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvYmxhbWUudGNsOjcwCisjOiBsaWIvYmxhbWUudGNsOjcyCiBtc2dpZCAiRmlsZSBWaWV3ZXIiCiBtc2dzdHIgIiIKIAotIzogbGliL2JsYW1lLnRjbDo3NAorIzogbGliL2JsYW1lLnRjbDo3OAogbXNnaWQgIkNvbW1pdDoiCiBtc2dzdHIgIiIKIAotIzogbGliL2JsYW1lLnRjbDoyNTcKKyM6IGxpYi9ibGFtZS50Y2w6MjcxCiBtc2dpZCAiQ29weSBDb21taXQiCiBtc2dzdHIgIiIKIAotIzogbGliL2JsYW1lLnRjbDoyNjAKKyM6IGxpYi9ibGFtZS50Y2w6Mjc1Cittc2dpZCAiRmluZCBUZXh0Li4uIgorbXNnc3RyICIiCisKKyM6IGxpYi9ibGFtZS50Y2w6Mjg0CiBtc2dpZCAiRG8gRnVsbCBDb3B5IERldGVjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvYmxhbWUudGNsOjM4OAorIzogbGliL2JsYW1lLnRjbDoyODgKK21zZ2lkICJTaG93IEhpc3RvcnkgQ29udGV4dCIKK21zZ3N0ciAiIgorCisjOiBsaWIvYmxhbWUudGNsOjI5MQorbXNnaWQgIkJsYW1lIFBhcmVudCBDb21taXQiCittc2dzdHIgIiIKKworIzogbGliL2JsYW1lLnRjbDo0NTAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJSZWFkaW5nICVzLi4uIgogbXNnc3RyICIiCiAKLSM6IGxpYi9ibGFtZS50Y2w6NDkyCisjOiBsaWIvYmxhbWUudGNsOjU1NwogbXNnaWQgIkxvYWRpbmcgY29weS9tb3ZlIHRyYWNraW5nIGFubm90YXRpb25zLi4uIgogbXNnc3RyICIiCiAKLSM6IGxpYi9ibGFtZS50Y2w6NTEyCisjOiBsaWIvYmxhbWUudGNsOjU3NwogbXNnaWQgImxpbmVzIGFubm90YXRlZCIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvYmxhbWUudGNsOjcwNAorIzogbGliL2JsYW1lLnRjbDo3NjkKIG1zZ2lkICJMb2FkaW5nIG9yaWdpbmFsIGxvY2F0aW9uIGFubm90YXRpb25zLi4uIgogbXNnc3RyICIiCiAKLSM6IGxpYi9ibGFtZS50Y2w6NzA3CisjOiBsaWIvYmxhbWUudGNsOjc3MgogbXNnaWQgIkFubm90YXRpb24gY29tcGxldGUuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9ibGFtZS50Y2w6NzM3CisjOiBsaWIvYmxhbWUudGNsOjgwMgogbXNnaWQgIkJ1c3kiCiBtc2dzdHIgIiIKIAotIzogbGliL2JsYW1lLnRjbDo3MzgKKyM6IGxpYi9ibGFtZS50Y2w6ODAzCiBtc2dpZCAiQW5ub3RhdGlvbiBwcm9jZXNzIGlzIGFscmVhZHkgcnVubmluZy4iCiBtc2dzdHIgIiIKIAotIzogbGliL2JsYW1lLnRjbDo3NzcKKyM6IGxpYi9ibGFtZS50Y2w6ODQyCiBtc2dpZCAiUnVubmluZyB0aG9yb3VnaCBjb3B5IGRldGVjdGlvbi4uLiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvYmxhbWUudGNsOjgyNworIzogbGliL2JsYW1lLnRjbDo5MTAKIG1zZ2lkICJMb2FkaW5nIGFubm90YXRpb24uLi4iCiBtc2dzdHIgIiIKIAotIzogbGliL2JsYW1lLnRjbDo4ODMKKyM6IGxpYi9ibGFtZS50Y2w6OTYzCiBtc2dpZCAiQXV0aG9yOiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvYmxhbWUudGNsOjg4NworIzogbGliL2JsYW1lLnRjbDo5NjcKIG1zZ2lkICJDb21taXR0ZXI6IgogbXNnc3RyICIiCiAKLSM6IGxpYi9ibGFtZS50Y2w6ODkyCisjOiBsaWIvYmxhbWUudGNsOjk3MgogbXNnaWQgIk9yaWdpbmFsIEZpbGU6IgogbXNnc3RyICIiCiAKLSM6IGxpYi9ibGFtZS50Y2w6MTAwNgorIzogbGliL2JsYW1lLnRjbDoxMDIwCittc2dpZCAiQ2Fubm90IGZpbmQgSEVBRCBjb21taXQ6IgorbXNnc3RyICIiCisKKyM6IGxpYi9ibGFtZS50Y2w6MTA3NQorbXNnaWQgIkNhbm5vdCBmaW5kIHBhcmVudCBjb21taXQ6IgorbXNnc3RyICIiCisKKyM6IGxpYi9ibGFtZS50Y2w6MTA5MAorbXNnaWQgIlVuYWJsZSB0byBkaXNwbGF5IHBhcmVudCIKK21zZ3N0ciAiIgorCisjOiBsaWIvYmxhbWUudGNsOjEwOTEgbGliL2RpZmYudGNsOjI5NworbXNnaWQgIkVycm9yIGxvYWRpbmcgZGlmZjoiCittc2dzdHIgIiIKKworIzogbGliL2JsYW1lLnRjbDoxMjMxCiBtc2dpZCAiT3JpZ2luYWxseSBCeToiCiBtc2dzdHIgIiIKIAotIzogbGliL2JsYW1lLnRjbDoxMDEyCisjOiBsaWIvYmxhbWUudGNsOjEyMzcKIG1zZ2lkICJJbiBGaWxlOiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvYmxhbWUudGNsOjEwMTcKKyM6IGxpYi9ibGFtZS50Y2w6MTI0MgogbXNnaWQgIkNvcGllZCBPciBNb3ZlZCBIZXJlIEJ5OiIKIG1zZ3N0ciAiIgogCkBAIC01NDYsMTYgKzYzOSwxOCBAQAogCiAjOiBsaWIvYnJhbmNoX2NoZWNrb3V0LnRjbDoyNyBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6MzUKICM6IGxpYi9icmFuY2hfZGVsZXRlLnRjbDozMiBsaWIvYnJhbmNoX3JlbmFtZS50Y2w6MzAgbGliL2Jyb3dzZXIudGNsOjI4MgotIzogbGliL2NoZWNrb3V0X29wLnRjbDo1NDQgbGliL2Nob29zZV9mb250LnRjbDo0MyBsaWIvbWVyZ2UudGNsOjE3MQotIzogbGliL29wdGlvbi50Y2w6MTAzIGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NDIgbGliL3RyYW5zcG9ydC50Y2w6OTcKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6NTQ0IGxpYi9jaG9vc2VfZm9udC50Y2w6NDMgbGliL21lcmdlLnRjbDoxNzIKKyM6IGxpYi9vcHRpb24udGNsOjEyNSBsaWIvcmVtb3RlX2FkZC50Y2w6MzIgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo0MgorIzogbGliL3Rvb2xzX2RsZy50Y2w6NDAgbGliL3Rvb2xzX2RsZy50Y2w6MjA0IGxpYi90b29sc19kbGcudGNsOjM1MgorIzogbGliL3RyYW5zcG9ydC50Y2w6MTA4CiBtc2dpZCAiQ2FuY2VsIgogbXNnc3RyICIiCiAKLSM6IGxpYi9icmFuY2hfY2hlY2tvdXQudGNsOjMyIGxpYi9icm93c2VyLnRjbDoyODcKKyM6IGxpYi9icmFuY2hfY2hlY2tvdXQudGNsOjMyIGxpYi9icm93c2VyLnRjbDoyODcgbGliL3Rvb2xzX2RsZy50Y2w6MzI4CiBtc2dpZCAiUmV2aXNpb24iCiBtc2dzdHIgIiIKIAotIzogbGliL2JyYW5jaF9jaGVja291dC50Y2w6MzYgbGliL2JyYW5jaF9jcmVhdGUudGNsOjY5IGxpYi9vcHRpb24udGNsOjI0NAorIzogbGliL2JyYW5jaF9jaGVja291dC50Y2w6MzYgbGliL2JyYW5jaF9jcmVhdGUudGNsOjY5IGxpYi9vcHRpb24udGNsOjI4MAogbXNnaWQgIk9wdGlvbnMiCiBtc2dzdHIgIiIKIApAQCAtNTc1LDcgKzY3MCw3IEBACiBtc2dpZCAiQ3JlYXRlIE5ldyBCcmFuY2giCiBtc2dzdHIgIiIKIAotIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjMxIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzcxCisjOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6MzEgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozNzcKIG1zZ2lkICJDcmVhdGUiCiBtc2dzdHIgIiIKIApAQCAtNTgzLDcgKzY3OCw3IEBACiBtc2dpZCAiQnJhbmNoIE5hbWUiCiBtc2dzdHIgIiIKIAotIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjQzCisjOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6NDMgbGliL3JlbW90ZV9hZGQudGNsOjM5IGxpYi90b29sc19kbGcudGNsOjUwCiBtc2dpZCAiTmFtZToiCiBtc2dzdHIgIiIKIApAQCAtNzIzLDkgKzgxOCw5IEBACiBtc2dpZCAiQnJvd3NlIEJyYW5jaCBGaWxlcyIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvYnJvd3Nlci50Y2w6Mjc4IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Mzg3Ci0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ3MiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ4MgotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5ODUKKyM6IGxpYi9icm93c2VyLnRjbDoyNzggbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozOTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDgwIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDkxCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk5NQogbXNnaWQgIkJyb3dzZSIKIG1zZ3N0ciAiIgogCkBAIC03NDAsNiArODM1LDcgQEAKIG1zZ3N0ciAiIgogCiAjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjE0NSBsaWIvY29uc29sZS50Y2w6ODEgbGliL2RhdGFiYXNlLnRjbDozMQorIzogbGliL3NzaGtleS50Y2w6NTMKIG1zZ2lkICJDbG9zZSIKIG1zZ3N0ciAiIgogCkBAIC04MzYsNyArOTMyLDcgQEAKIG1zZ2lkICJSZXNldCAnJXMnPyIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hlY2tvdXRfb3AudGNsOjUzMiBsaWIvbWVyZ2UudGNsOjE2MworIzogbGliL2NoZWNrb3V0X29wLnRjbDo1MzIgbGliL21lcmdlLnRjbDoxNjQgbGliL3Rvb2xzX2RsZy50Y2w6MzQzCiBtc2dpZCAiVmlzdWFsaXplIgogbXNnc3RyICIiCiAKQEAgLTg3NywyMjEgKzk3MywyMjUgQEAKIG1zZ2lkICJHaXQgR3VpIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODEgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozNzYKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODcgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozODIKIG1zZ2lkICJDcmVhdGUgTmV3IFJlcG9zaXRvcnkiCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MwogbXNnaWQgIk5ldy4uLiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk0IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDU4CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ2NQogbXNnaWQgIkNsb25lIEV4aXN0aW5nIFJlcG9zaXRvcnkiCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDAKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTA2CiBtc2dpZCAiQ2xvbmUuLi4iCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDcgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NzQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTEzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTgzCiBtc2dpZCAiT3BlbiBFeGlzdGluZyBSZXBvc2l0b3J5IgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTEzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjExOQogbXNnaWQgIk9wZW4uLi4iCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMjYKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTMyCiBtc2dpZCAiUmVjZW50IFJlcG9zaXRvcmllcyIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEzMgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMzgKIG1zZ2lkICJPcGVuIFJlY2VudCBSZXBvc2l0b3J5OiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjI5NiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjMwMwotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozMTAKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzAyIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzA5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjMxNgogIywgdGNsLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byBjcmVhdGUgcmVwb3NpdG9yeSAlczoiCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozODEgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NzYKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Mzg3CiBtc2dpZCAiRGlyZWN0b3J5OiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQxMCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUzNQotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDA3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQxNyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU0NAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDE3CiBtc2dpZCAiR2l0IFJlcG9zaXRvcnkiCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0MzUKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiRGlyZWN0b3J5ICVzIGFscmVhZHkgZXhpc3RzLiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQzOQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NDYKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJGaWxlICVzIGFscmVhZHkgZXhpc3RzLiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ1MworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NjAKIG1zZ2lkICJDbG9uZSIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ2NgotbXNnaWQgIlVSTDoiCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ3MworbXNnaWQgIlNvdXJjZSBMb2NhdGlvbjoiCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0ODcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDg0Cittc2dpZCAiVGFyZ2V0IERpcmVjdG9yeToiCittc2dzdHIgIiIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0OTYKIG1zZ2lkICJDbG9uZSBUeXBlOiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ5MworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MDIKIG1zZ2lkICJTdGFuZGFyZCAoRmFzdCwgU2VtaS1SZWR1bmRhbnQsIEhhcmRsaW5rcykiCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0OTkKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTA4CiBtc2dpZCAiRnVsbCBDb3B5IChTbG93ZXIsIFJlZHVuZGFudCBCYWNrdXApIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTA1CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUxNAogbXNnaWQgIlNoYXJlZCAoRmFzdGVzdCwgTm90IFJlY29tbWVuZGVkLCBObyBCYWNrdXApIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTQxIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTg4Ci0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjczNCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjgwNAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDEzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAyMQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1NTAgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1OTcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzQzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODEzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMjMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDMxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiTm90IGEgR2l0IHJlcG9zaXRvcnk6ICVzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTc3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU4NgogbXNnaWQgIlN0YW5kYXJkIG9ubHkgYXZhaWxhYmxlIGZvciBsb2NhbCByZXBvc2l0b3J5LiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU4MQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1OTAKIG1zZ2lkICJTaGFyZWQgb25seSBhdmFpbGFibGUgZm9yIGxvY2FsIHJlcG9zaXRvcnkuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjAyCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYxMQogIywgdGNsLWZvcm1hdAogbXNnaWQgIkxvY2F0aW9uICVzIGFscmVhZHkgZXhpc3RzLiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYxMworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MjIKIG1zZ2lkICJGYWlsZWQgdG8gY29uZmlndXJlIG9yaWdpbiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYyNQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MzQKIG1zZ2lkICJDb3VudGluZyBvYmplY3RzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjI2CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYzNQogbXNnaWQgImJ1Y2tldHMiCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2NTAKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjU5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGNvcHkgb2JqZWN0cy9pbmZvL2FsdGVybmF0ZXM6ICVzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Njg2CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjY5NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIk5vdGhpbmcgdG8gY2xvbmUgZnJvbSAlcy4iCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2ODggbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MDIKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTE0CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjY5NyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkxMQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MjMKIG1zZ2lkICJUaGUgJ21hc3RlcicgYnJhbmNoIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZC4iCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3MDEKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzEwCiBtc2dpZCAiSGFyZGxpbmtzIGFyZSB1bmF2YWlsYWJsZS4gIEZhbGxpbmcgYmFjayB0byBjb3B5aW5nLiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjcxMworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3MjIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJDbG9uaW5nIGZyb20gJXMiCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NDQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzUzCiBtc2dpZCAiQ29weWluZyBvYmplY3RzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzQ1CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc1NAogbXNnaWQgIktpQiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc2OQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NzgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gY29weSBvYmplY3Q6ICVzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Nzc5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc4OAogbXNnaWQgIkxpbmtpbmcgb2JqZWN0cyIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc4MAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3ODkKIG1zZ2lkICJvYmplY3RzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Nzg4CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc5NwogIywgdGNsLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBoYXJkbGluayBvYmplY3Q6ICVzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODQzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg1MgogbXNnaWQgIkNhbm5vdCBmZXRjaCBicmFuY2hlcyBhbmQgb2JqZWN0cy4gIFNlZSBjb25zb2xlIG91dHB1dCBmb3IgZGV0YWlscy4iCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODYzCiBtc2dpZCAiQ2Fubm90IGZldGNoIHRhZ3MuICBTZWUgY29uc29sZSBvdXRwdXQgZm9yIGRldGFpbHMuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODc4CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg4NwogbXNnaWQgIkNhbm5vdCBkZXRlcm1pbmUgSEVBRC4gIFNlZSBjb25zb2xlIG91dHB1dCBmb3IgZGV0YWlscy4iCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4ODcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODk2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGNsZWFudXAgJXMiCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4OTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTAyCiBtc2dpZCAiQ2xvbmUgZmFpbGVkLiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkwMAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MDkKIG1zZ2lkICJObyBkZWZhdWx0IGJyYW5jaCBvYnRhaW5lZC4iCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MTEKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTIwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IHJlc29sdmUgJXMgYXMgYSBjb21taXQuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTIzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkzMgogbXNnaWQgIkNyZWF0aW5nIHdvcmtpbmcgZGlyZWN0b3J5IgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTI0IGxpYi9pbmRleC50Y2w6NjUgbGliL2luZGV4LnRjbDoxMjcKLSM6IGxpYi9pbmRleC50Y2w6MTkzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkzMyBsaWIvaW5kZXgudGNsOjY1IGxpYi9pbmRleC50Y2w6MTI4CisjOiBsaWIvaW5kZXgudGNsOjE5NgogbXNnaWQgImZpbGVzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTUzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk2MgogbXNnaWQgIkluaXRpYWwgZmlsZSBjaGVja291dCBmYWlsZWQuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTY5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk3OAogbXNnaWQgIk9wZW4iCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NzkKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTg4CiBtc2dpZCAiUmVwb3NpdG9yeToiCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDI3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMzcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gb3BlbiByZXBvc2l0b3J5ICVzOiIKIG1zZ3N0ciAiIgpAQCAtMTE1NCwxOSArMTI1NCwxOSBAQAogImN1cnJlbnQgbWVyZ2UgYWN0aXZpdHkuXG4iCiBtc2dzdHIgIiIKIAotIzogbGliL2NvbW1pdC50Y2w6NDkKKyM6IGxpYi9jb21taXQudGNsOjQ4CiBtc2dpZCAiRXJyb3IgbG9hZGluZyBjb21taXQgZGF0YSBmb3IgYW1lbmQ6IgogbXNnc3RyICIiCiAKLSM6IGxpYi9jb21taXQudGNsOjc2CisjOiBsaWIvY29tbWl0LnRjbDo3NQogbXNnaWQgIlVuYWJsZSB0byBvYnRhaW4geW91ciBpZGVudGl0eToiCiBtc2dzdHIgIiIKIAotIzogbGliL2NvbW1pdC50Y2w6ODEKKyM6IGxpYi9jb21taXQudGNsOjgwCiBtc2dpZCAiSW52YWxpZCBHSVRfQ09NTUlUVEVSX0lERU5UOiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY29tbWl0LnRjbDoxMzMKKyM6IGxpYi9jb21taXQudGNsOjEzMgogbXNnaWQgIiIKICJMYXN0IHNjYW5uZWQgc3RhdGUgZG9lcyBub3QgbWF0Y2ggcmVwb3NpdG9yeSBzdGF0ZS5cbiIKICJcbiIKQEAgLTExNzYsNyArMTI3Niw3IEBACiAiVGhlIHJlc2NhbiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgc3RhcnRlZCBub3cuXG4iCiBtc2dzdHIgIiIKIAotIzogbGliL2NvbW1pdC50Y2w6MTU0CisjOiBsaWIvY29tbWl0LnRjbDoxNTUKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiVW5tZXJnZWQgZmlsZXMgY2Fubm90IGJlIGNvbW1pdHRlZC5cbiIKQEAgLTExODUsNyArMTI4NSw3IEBACiAiYmVmb3JlIGNvbW1pdHRpbmcuXG4iCiBtc2dzdHIgIiIKIAotIzogbGliL2NvbW1pdC50Y2w6MTYyCisjOiBsaWIvY29tbWl0LnRjbDoxNjMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiVW5rbm93biBmaWxlIHN0YXRlICVzIGRldGVjdGVkLlxuIgpAQCAtMTE5MywxNCArMTI5MywxNCBAQAogIkZpbGUgJXMgY2Fubm90IGJlIGNvbW1pdHRlZCBieSB0aGlzIHByb2dyYW0uXG4iCiBtc2dzdHIgIiIKIAotIzogbGliL2NvbW1pdC50Y2w6MTcwCisjOiBsaWIvY29tbWl0LnRjbDoxNzEKIG1zZ2lkICIiCiAiTm8gY2hhbmdlcyB0byBjb21taXQuXG4iCiAiXG4iCiAiWW91IG11c3Qgc3RhZ2UgYXQgbGVhc3QgMSBmaWxlIGJlZm9yZSB5b3UgY2FuIGNvbW1pdC5cbiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY29tbWl0LnRjbDoxODMKKyM6IGxpYi9jb21taXQudGNsOjE4NgogbXNnaWQgIiIKICJQbGVhc2Ugc3VwcGx5IGEgY29tbWl0IG1lc3NhZ2UuXG4iCiAiXG4iCkBAIC0xMjExLDQ1ICsxMzExLDQ1IEBACiAiLSBSZW1haW5pbmcgbGluZXM6IERlc2NyaWJlIHdoeSB0aGlzIGNoYW5nZSBpcyBnb29kLlxuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jb21taXQudGNsOjIwNworIzogbGliL2NvbW1pdC50Y2w6MjEwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAid2FybmluZzogVGNsIGRvZXMgbm90IHN1cHBvcnQgZW5jb2RpbmcgJyVzJy4iCiBtc2dzdHIgIiIKIAotIzogbGliL2NvbW1pdC50Y2w6MjIxCisjOiBsaWIvY29tbWl0LnRjbDoyMjYKIG1zZ2lkICJDYWxsaW5nIHByZS1jb21taXQgaG9vay4uLiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY29tbWl0LnRjbDoyMzYKKyM6IGxpYi9jb21taXQudGNsOjI0MQogbXNnaWQgIkNvbW1pdCBkZWNsaW5lZCBieSBwcmUtY29tbWl0IGhvb2suIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jb21taXQudGNsOjI1OQorIzogbGliL2NvbW1pdC50Y2w6MjY0CiBtc2dpZCAiQ2FsbGluZyBjb21taXQtbXNnIGhvb2suLi4iCiBtc2dzdHIgIiIKIAotIzogbGliL2NvbW1pdC50Y2w6Mjc0CisjOiBsaWIvY29tbWl0LnRjbDoyNzkKIG1zZ2lkICJDb21taXQgZGVjbGluZWQgYnkgY29tbWl0LW1zZyBob29rLiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY29tbWl0LnRjbDoyODcKKyM6IGxpYi9jb21taXQudGNsOjI5MgogbXNnaWQgIkNvbW1pdHRpbmcgY2hhbmdlcy4uLiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY29tbWl0LnRjbDozMDMKKyM6IGxpYi9jb21taXQudGNsOjMwOAogbXNnaWQgIndyaXRlLXRyZWUgZmFpbGVkOiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY29tbWl0LnRjbDozMDQgbGliL2NvbW1pdC50Y2w6MzQ4IGxpYi9jb21taXQudGNsOjM2OAorIzogbGliL2NvbW1pdC50Y2w6MzA5IGxpYi9jb21taXQudGNsOjM1MyBsaWIvY29tbWl0LnRjbDozNzMKIG1zZ2lkICJDb21taXQgZmFpbGVkLiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY29tbWl0LnRjbDozMjEKKyM6IGxpYi9jb21taXQudGNsOjMyNgogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNvbW1pdCAlcyBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQiCiBtc2dzdHIgIiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzI2CisjOiBsaWIvY29tbWl0LnRjbDozMzEKIG1zZ2lkICIiCiAiTm8gY2hhbmdlcyB0byBjb21taXQuXG4iCiAiXG4iCkBAIC0xMjU4LDE5ICsxMzU4LDE5IEBACiAiQSByZXNjYW4gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHN0YXJ0ZWQgbm93LlxuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jb21taXQudGNsOjMzMworIzogbGliL2NvbW1pdC50Y2w6MzM4CiBtc2dpZCAiTm8gY2hhbmdlcyB0byBjb21taXQuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jb21taXQudGNsOjM0NworIzogbGliL2NvbW1pdC50Y2w6MzUyCiBtc2dpZCAiY29tbWl0LXRyZWUgZmFpbGVkOiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY29tbWl0LnRjbDozNjcKKyM6IGxpYi9jb21taXQudGNsOjM3MgogbXNnaWQgInVwZGF0ZS1yZWYgZmFpbGVkOiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY29tbWl0LnRjbDo0NTQKKyM6IGxpYi9jb21taXQudGNsOjQ2MAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNyZWF0ZWQgY29tbWl0ICVzOiAlcyIKIG1zZ3N0ciAiIgpAQCAtMTMzOSw3ICsxNDM5LDcgQEAKIG1zZ2lkICJJbnZhbGlkIGRhdGUgZnJvbSBHaXQ6ICVzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9kaWZmLnRjbDo0NAorIzogbGliL2RpZmYudGNsOjU5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIk5vIGRpZmZlcmVuY2VzIGRldGVjdGVkLlxuIgpAQCAtMTM1Myw0OCArMTQ1Myw5MiBAQAogInRoZSBzYW1lIHN0YXRlLiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvZGlmZi50Y2w6ODMKKyM6IGxpYi9kaWZmLnRjbDo5OQogIywgdGNsLWZvcm1hdAogbXNnaWQgIkxvYWRpbmcgZGlmZiBvZiAlcy4uLiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvZGlmZi50Y2w6MTE2IGxpYi9kaWZmLnRjbDoxOTAKKyM6IGxpYi9kaWZmLnRjbDoxMjAKK21zZ2lkICIiCisiTE9DQUw6IGRlbGV0ZWRcbiIKKyJSRU1PVEU6XG4iCittc2dzdHIgIiIKKworIzogbGliL2RpZmYudGNsOjEyNQorbXNnaWQgIiIKKyJSRU1PVEU6IGRlbGV0ZWRcbiIKKyJMT0NBTDpcbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvZGlmZi50Y2w6MTMyCittc2dpZCAiTE9DQUw6XG4iCittc2dzdHIgIiIKKworIzogbGliL2RpZmYudGNsOjEzNQorbXNnaWQgIlJFTU9URTpcbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvZGlmZi50Y2w6MTk3IGxpYi9kaWZmLnRjbDoyOTYKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gZGlzcGxheSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvZGlmZi50Y2w6MTE3CisjOiBsaWIvZGlmZi50Y2w6MTk4CiBtc2dpZCAiRXJyb3IgbG9hZGluZyBmaWxlOiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvZGlmZi50Y2w6MTI0CisjOiBsaWIvZGlmZi50Y2w6MjA1CiBtc2dpZCAiR2l0IFJlcG9zaXRvcnkgKHN1YnByb2plY3QpIgogbXNnc3RyICIiCiAKLSM6IGxpYi9kaWZmLnRjbDoxMzYKKyM6IGxpYi9kaWZmLnRjbDoyMTcKIG1zZ2lkICIqIEJpbmFyeSBmaWxlIChub3Qgc2hvd2luZyBjb250ZW50KS4iCiBtc2dzdHIgIiIKIAotIzogbGliL2RpZmYudGNsOjE5MQotbXNnaWQgIkVycm9yIGxvYWRpbmcgZGlmZjoiCisjOiBsaWIvZGlmZi50Y2w6MjIyCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIiogVW50cmFja2VkIGZpbGUgaXMgJWQgYnl0ZXMuXG4iCisiKiBTaG93aW5nIG9ubHkgZmlyc3QgJWQgYnl0ZXMuXG4iCiBtc2dzdHIgIiIKIAotIzogbGliL2RpZmYudGNsOjMxMworIzogbGliL2RpZmYudGNsOjIyOAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIqIFVudHJhY2tlZCBmaWxlIGNsaXBwZWQgaGVyZSBieSAlcy5cbiIKKyIqIFRvIHNlZSB0aGUgZW50aXJlIGZpbGUsIHVzZSBhbiBleHRlcm5hbCBlZGl0b3IuXG4iCittc2dzdHIgIiIKKworIzogbGliL2RpZmYudGNsOjQzNgogbXNnaWQgIkZhaWxlZCB0byB1bnN0YWdlIHNlbGVjdGVkIGh1bmsuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9kaWZmLnRjbDozMjAKKyM6IGxpYi9kaWZmLnRjbDo0NDMKIG1zZ2lkICJGYWlsZWQgdG8gc3RhZ2Ugc2VsZWN0ZWQgaHVuay4iCiBtc2dzdHIgIiIKIAotIzogbGliL2RpZmYudGNsOjM4NgorIzogbGliL2RpZmYudGNsOjUwOQogbXNnaWQgIkZhaWxlZCB0byB1bnN0YWdlIHNlbGVjdGVkIGxpbmUuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9kaWZmLnRjbDozOTQKKyM6IGxpYi9kaWZmLnRjbDo1MTcKIG1zZ2lkICJGYWlsZWQgdG8gc3RhZ2Ugc2VsZWN0ZWQgbGluZS4iCiBtc2dzdHIgIiIKIAorIzogbGliL2VuY29kaW5nLnRjbDo0NDMKK21zZ2lkICJEZWZhdWx0IgorbXNnc3RyICIiCisKKyM6IGxpYi9lbmNvZGluZy50Y2w6NDQ4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiU3lzdGVtICglcykiCittc2dzdHIgIiIKKworIzogbGliL2VuY29kaW5nLnRjbDo0NTkgbGliL2VuY29kaW5nLnRjbDo0NjUKK21zZ2lkICJPdGhlciIKK21zZ3N0ciAiIgorCiAjOiBsaWIvZXJyb3IudGNsOjIwIGxpYi9lcnJvci50Y2w6MTE0CiBtc2dpZCAiZXJyb3IiCiBtc2dzdHIgIiIKQEAgLTE0MjksMzggKzE1NzMsNDcgQEAKIG1zZ2lkICJVbmxvY2sgSW5kZXgiCiBtc2dzdHIgIiIKIAotIzogbGliL2luZGV4LnRjbDoyODIKKyM6IGxpYi9pbmRleC50Y2w6Mjg3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5zdGFnaW5nICVzIGZyb20gY29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGxpYi9pbmRleC50Y2w6MzEzCisjOiBsaWIvaW5kZXgudGNsOjMyNgogbXNnaWQgIlJlYWR5IHRvIGNvbW1pdC4iCiBtc2dzdHIgIiIKIAotIzogbGliL2luZGV4LnRjbDozMjYKKyM6IGxpYi9pbmRleC50Y2w6MzM5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQWRkaW5nICVzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9pbmRleC50Y2w6MzgxCisjOiBsaWIvaW5kZXgudGNsOjM5NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlJldmVydCBjaGFuZ2VzIGluIGZpbGUgJXM/IgogbXNnc3RyICIiCiAKLSM6IGxpYi9pbmRleC50Y2w6MzgzCisjOiBsaWIvaW5kZXgudGNsOjM5OAogIywgdGNsLWZvcm1hdAogbXNnaWQgIlJldmVydCBjaGFuZ2VzIGluIHRoZXNlICVpIGZpbGVzPyIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvaW5kZXgudGNsOjM5MQorIzogbGliL2luZGV4LnRjbDo0MDYKIG1zZ2lkICJBbnkgdW5zdGFnZWQgY2hhbmdlcyB3aWxsIGJlIHBlcm1hbmVudGx5IGxvc3QgYnkgdGhlIHJldmVydC4iCiBtc2dzdHIgIiIKIAotIzogbGliL2luZGV4LnRjbDozOTQKKyM6IGxpYi9pbmRleC50Y2w6NDA5CiBtc2dpZCAiRG8gTm90aGluZyIKIG1zZ3N0ciAiIgogCisjOiBsaWIvaW5kZXgudGNsOjQyNworbXNnaWQgIlJldmVydGluZyBzZWxlY3RlZCBmaWxlcyIKK21zZ3N0ciAiIgorCisjOiBsaWIvaW5kZXgudGNsOjQzMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlJldmVydGluZyAlcyIKK21zZ3N0ciAiIgorCiAjOiBsaWIvbWVyZ2UudGNsOjEzCiBtc2dpZCAiIgogIkNhbm5vdCBtZXJnZSB3aGlsZSBhbWVuZGluZy5cbiIKQEAgLTE0NzgsNyArMTYzMSw3IEBACiAiVGhlIHJlc2NhbiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgc3RhcnRlZCBub3cuXG4iCiBtc2dzdHIgIiIKIAotIzogbGliL21lcmdlLnRjbDo0NAorIzogbGliL21lcmdlLnRjbDo0NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBjb25mbGljdGVkIG1lcmdlLlxuIgpAQCAtMTQ4OSw3ICsxNjQyLDcgQEAKICJtZXJnZS4gIE9ubHkgdGhlbiBjYW4geW91IGJlZ2luIGFub3RoZXIgbWVyZ2UuXG4iCiBtc2dzdHIgIiIKIAotIzogbGliL21lcmdlLnRjbDo1NAorIzogbGliL21lcmdlLnRjbDo1NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBjaGFuZ2UuXG4iCkBAIC0xNTAwLDQxICsxNjUzLDQxIEBACiAid2lsbCBoZWxwIHlvdSBhYm9ydCBhIGZhaWxlZCBtZXJnZSwgc2hvdWxkIHRoZSBuZWVkIGFyaXNlLlxuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTA2CisjOiBsaWIvbWVyZ2UudGNsOjEwNwogIywgdGNsLWZvcm1hdAogbXNnaWQgIiVzIG9mICVzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTE5CisjOiBsaWIvbWVyZ2UudGNsOjEyMAogIywgdGNsLWZvcm1hdAogbXNnaWQgIk1lcmdpbmcgJXMgYW5kICVzLi4uIgogbXNnc3RyICIiCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTMwCisjOiBsaWIvbWVyZ2UudGNsOjEzMQogbXNnaWQgIk1lcmdlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTMyCisjOiBsaWIvbWVyZ2UudGNsOjEzMwogbXNnaWQgIk1lcmdlIGZhaWxlZC4gIENvbmZsaWN0IHJlc29sdXRpb24gaXMgcmVxdWlyZWQuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTU3CisjOiBsaWIvbWVyZ2UudGNsOjE1OAogIywgdGNsLWZvcm1hdAogbXNnaWQgIk1lcmdlIEludG8gJXMiCiBtc2dzdHIgIiIKIAotIzogbGliL21lcmdlLnRjbDoxNzYKKyM6IGxpYi9tZXJnZS50Y2w6MTc3CiBtc2dpZCAiUmV2aXNpb24gVG8gTWVyZ2UiCiBtc2dzdHIgIiIKIAotIzogbGliL21lcmdlLnRjbDoyMTEKKyM6IGxpYi9tZXJnZS50Y2w6MjEyCiBtc2dpZCAiIgogIkNhbm5vdCBhYm9ydCB3aGlsZSBhbWVuZGluZy5cbiIKICJcbiIKICJZb3UgbXVzdCBmaW5pc2ggYW1lbmRpbmcgdGhpcyBjb21taXQuXG4iCiBtc2dzdHIgIiIKIAotIzogbGliL21lcmdlLnRjbDoyMjEKKyM6IGxpYi9tZXJnZS50Y2w6MjIyCiBtc2dpZCAiIgogIkFib3J0IG1lcmdlP1xuIgogIlxuIgpAQCAtMTU0Myw3ICsxNjk2LDcgQEAKICJDb250aW51ZSB3aXRoIGFib3J0aW5nIHRoZSBjdXJyZW50IG1lcmdlPyIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvbWVyZ2UudGNsOjIyNworIzogbGliL21lcmdlLnRjbDoyMjgKIG1zZ2lkICIiCiAiUmVzZXQgY2hhbmdlcz9cbiIKICJcbiIKQEAgLTE1NTIsMTQyICsxNzA1LDMyNSBAQAogIkNvbnRpbnVlIHdpdGggcmVzZXR0aW5nIHRoZSBjdXJyZW50IGNoYW5nZXM/IgogbXNnc3RyICIiCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjM4CisjOiBsaWIvbWVyZ2UudGNsOjIzOQogbXNnaWQgIkFib3J0aW5nIgogbXNnc3RyICIiCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjM4CisjOiBsaWIvbWVyZ2UudGNsOjIzOQogbXNnaWQgImZpbGVzIHJlc2V0IgogbXNnc3RyICIiCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjY2CisjOiBsaWIvbWVyZ2UudGNsOjI2NwogbXNnaWQgIkFib3J0IGZhaWxlZC4iCiBtc2dzdHIgIiIKIAotIzogbGliL21lcmdlLnRjbDoyNjgKKyM6IGxpYi9tZXJnZS50Y2w6MjY5CiBtc2dpZCAiQWJvcnQgY29tcGxldGVkLiAgUmVhZHkuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9vcHRpb24udGNsOjk1CisjOiBsaWIvbWVyZ2V0b29sLnRjbDo4Cittc2dpZCAiRm9yY2UgcmVzb2x1dGlvbiB0byB0aGUgYmFzZSB2ZXJzaW9uPyIKK21zZ3N0ciAiIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDo5Cittc2dpZCAiRm9yY2UgcmVzb2x1dGlvbiB0byB0aGlzIGJyYW5jaD8iCittc2dzdHIgIiIKKworIzogbGliL21lcmdldG9vbC50Y2w6MTAKK21zZ2lkICJGb3JjZSByZXNvbHV0aW9uIHRvIHRoZSBvdGhlciBicmFuY2g/IgorbXNnc3RyICIiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjE0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIk5vdGUgdGhhdCB0aGUgZGlmZiBzaG93cyBvbmx5IGNvbmZsaWN0aW5nIGNoYW5nZXMuXG4iCisiXG4iCisiJXMgd2lsbCBiZSBvdmVyd3JpdHRlbi5cbiIKKyJcbiIKKyJUaGlzIG9wZXJhdGlvbiBjYW4gYmUgdW5kb25lIG9ubHkgYnkgcmVzdGFydGluZyB0aGUgbWVyZ2UuIgorbXNnc3RyICIiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjQ1CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRmlsZSAlcyBzZWVtcyB0byBoYXZlIHVucmVzb2x2ZWQgY29uZmxpY3RzLCBzdGlsbCBzdGFnZT8iCittc2dzdHIgIiIKKworIzogbGliL21lcmdldG9vbC50Y2w6NjAKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJBZGRpbmcgcmVzb2x1dGlvbiBmb3IgJXMiCittc2dzdHIgIiIKKworIzogbGliL21lcmdldG9vbC50Y2w6MTQxCittc2dpZCAiQ2Fubm90IHJlc29sdmUgZGVsZXRpb24gb3IgbGluayBjb25mbGljdHMgdXNpbmcgYSB0b29sIgorbXNnc3RyICIiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjE0NgorbXNnaWQgIkNvbmZsaWN0IGZpbGUgZG9lcyBub3QgZXhpc3QiCittc2dzdHIgIiIKKworIzogbGliL21lcmdldG9vbC50Y2w6MjY0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiTm90IGEgR1VJIG1lcmdlIHRvb2w6ICclcyciCittc2dzdHIgIiIKKworIzogbGliL21lcmdldG9vbC50Y2w6MjY4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVW5zdXBwb3J0ZWQgbWVyZ2UgdG9vbCAnJXMnIgorbXNnc3RyICIiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjMwMworbXNnaWQgIk1lcmdlIHRvb2wgaXMgYWxyZWFkeSBydW5uaW5nLCB0ZXJtaW5hdGUgaXQ/IgorbXNnc3RyICIiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjMyMworIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJFcnJvciByZXRyaWV2aW5nIHZlcnNpb25zOlxuIgorIiVzIgorbXNnc3RyICIiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjM0MworIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZCBub3Qgc3RhcnQgdGhlIG1lcmdlIHRvb2w6XG4iCisiXG4iCisiJXMiCittc2dzdHIgIiIKKworIzogbGliL21lcmdldG9vbC50Y2w6MzQ3Cittc2dpZCAiUnVubmluZyBtZXJnZSB0b29sLi4uIgorbXNnc3RyICIiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjM3NSBsaWIvbWVyZ2V0b29sLnRjbDozODMKK21zZ2lkICJNZXJnZSB0b29sIGZhaWxlZC4iCittc2dzdHIgIiIKKworIzogbGliL29wdGlvbi50Y2w6MTEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGdsb2JhbCBlbmNvZGluZyAnJXMnIgorbXNnc3RyICIiCisKKyM6IGxpYi9vcHRpb24udGNsOjE5CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByZXBvIGVuY29kaW5nICclcyciCittc2dzdHIgIiIKKworIzogbGliL29wdGlvbi50Y2w6MTE3CiBtc2dpZCAiUmVzdG9yZSBEZWZhdWx0cyIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvb3B0aW9uLnRjbDo5OQorIzogbGliL29wdGlvbi50Y2w6MTIxCiBtc2dpZCAiU2F2ZSIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMDkKKyM6IGxpYi9vcHRpb24udGNsOjEzMQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiVzIFJlcG9zaXRvcnkiCiBtc2dzdHIgIiIKIAotIzogbGliL29wdGlvbi50Y2w6MTEwCisjOiBsaWIvb3B0aW9uLnRjbDoxMzIKIG1zZ2lkICJHbG9iYWwgKEFsbCBSZXBvc2l0b3JpZXMpIgogbXNnc3RyICIiCiAKLSM6IGxpYi9vcHRpb24udGNsOjExNgorIzogbGliL29wdGlvbi50Y2w6MTM4CiBtc2dpZCAiVXNlciBOYW1lIgogbXNnc3RyICIiCiAKLSM6IGxpYi9vcHRpb24udGNsOjExNworIzogbGliL29wdGlvbi50Y2w6MTM5CiBtc2dpZCAiRW1haWwgQWRkcmVzcyIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMTkKKyM6IGxpYi9vcHRpb24udGNsOjE0MQogbXNnaWQgIlN1bW1hcml6ZSBNZXJnZSBDb21taXRzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyMAorIzogbGliL29wdGlvbi50Y2w6MTQyCiBtc2dpZCAiTWVyZ2UgVmVyYm9zaXR5IgogbXNnc3RyICIiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyMQorIzogbGliL29wdGlvbi50Y2w6MTQzCiBtc2dpZCAiU2hvdyBEaWZmc3RhdCBBZnRlciBNZXJnZSIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjMKKyM6IGxpYi9vcHRpb24udGNsOjE0NAorbXNnaWQgIlVzZSBNZXJnZSBUb29sIgorbXNnc3RyICIiCisKKyM6IGxpYi9vcHRpb24udGNsOjE0NgogbXNnaWQgIlRydXN0IEZpbGUgTW9kaWZpY2F0aW9uIFRpbWVzdGFtcHMiCiBtc2dzdHIgIiIKIAotIzogbGliL29wdGlvbi50Y2w6MTI0CisjOiBsaWIvb3B0aW9uLnRjbDoxNDcKIG1zZ2lkICJQcnVuZSBUcmFja2luZyBCcmFuY2hlcyBEdXJpbmcgRmV0Y2giCiBtc2dzdHIgIiIKIAotIzogbGliL29wdGlvbi50Y2w6MTI1CisjOiBsaWIvb3B0aW9uLnRjbDoxNDgKIG1zZ2lkICJNYXRjaCBUcmFja2luZyBCcmFuY2hlcyIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjYKKyM6IGxpYi9vcHRpb24udGNsOjE0OQogbXNnaWQgIkJsYW1lIENvcHkgT25seSBPbiBDaGFuZ2VkIEZpbGVzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyNworIzogbGliL29wdGlvbi50Y2w6MTUwCiBtc2dpZCAiTWluaW11bSBMZXR0ZXJzIFRvIEJsYW1lIENvcHkgT24iCiBtc2dzdHIgIiIKIAotIzogbGliL29wdGlvbi50Y2w6MTI4CisjOiBsaWIvb3B0aW9uLnRjbDoxNTEKK21zZ2lkICJCbGFtZSBIaXN0b3J5IENvbnRleHQgUmFkaXVzIChkYXlzKSIKK21zZ3N0ciAiIgorCisjOiBsaWIvb3B0aW9uLnRjbDoxNTIKIG1zZ2lkICJOdW1iZXIgb2YgRGlmZiBDb250ZXh0IExpbmVzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyOQorIzogbGliL29wdGlvbi50Y2w6MTUzCiBtc2dpZCAiQ29tbWl0IE1lc3NhZ2UgVGV4dCBXaWR0aCIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMzAKKyM6IGxpYi9vcHRpb24udGNsOjE1NAogbXNnaWQgIk5ldyBCcmFuY2ggTmFtZSBUZW1wbGF0ZSIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxOTQKKyM6IGxpYi9vcHRpb24udGNsOjE1NQorbXNnaWQgIkRlZmF1bHQgRmlsZSBDb250ZW50cyBFbmNvZGluZyIKK21zZ3N0ciAiIgorCisjOiBsaWIvb3B0aW9uLnRjbDoyMDMKK21zZ2lkICJDaGFuZ2UiCittc2dzdHIgIiIKKworIzogbGliL29wdGlvbi50Y2w6MjMwCiBtc2dpZCAiU3BlbGxpbmcgRGljdGlvbmFyeToiCiBtc2dzdHIgIiIKIAotIzogbGliL29wdGlvbi50Y2w6MjE4CisjOiBsaWIvb3B0aW9uLnRjbDoyNTQKIG1zZ2lkICJDaGFuZ2UgRm9udCIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoyMjIKKyM6IGxpYi9vcHRpb24udGNsOjI1OAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNob29zZSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoyMjgKKyM6IGxpYi9vcHRpb24udGNsOjI2NAogbXNnaWQgInB0LiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoyNDIKKyM6IGxpYi9vcHRpb24udGNsOjI3OAogbXNnaWQgIlByZWZlcmVuY2VzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9vcHRpb24udGNsOjI3NworIzogbGliL29wdGlvbi50Y2w6MzE0CiBtc2dpZCAiRmFpbGVkIHRvIGNvbXBsZXRlbHkgc2F2ZSBvcHRpb25zOiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvcmVtb3RlLnRjbDoxNjUKKyM6IGxpYi9yZW1vdGUudGNsOjE2MworbXNnaWQgIlJlbW92ZSBSZW1vdGUiCittc2dzdHIgIiIKKworIzogbGliL3JlbW90ZS50Y2w6MTY4CiBtc2dpZCAiUHJ1bmUgZnJvbSIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvcmVtb3RlLnRjbDoxNzAKKyM6IGxpYi9yZW1vdGUudGNsOjE3MwogbXNnaWQgIkZldGNoIGZyb20iCiBtc2dzdHIgIiIKIAotIzogbGliL3JlbW90ZS50Y2w6MjEzCisjOiBsaWIvcmVtb3RlLnRjbDoyMTUKIG1zZ2lkICJQdXNoIHRvIgogbXNnc3RyICIiCiAKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxOQorbXNnaWQgIkFkZCBSZW1vdGUiCittc2dzdHIgIiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjI0Cittc2dpZCAiQWRkIE5ldyBSZW1vdGUiCittc2dzdHIgIiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjI4IGxpYi90b29sc19kbGcudGNsOjM2Cittc2dpZCAiQWRkIgorbXNnc3RyICIiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDozNworbXNnaWQgIlJlbW90ZSBEZXRhaWxzIgorbXNnc3RyICIiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo1MAorbXNnaWQgIkxvY2F0aW9uOiIKK21zZ3N0ciAiIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NjIKK21zZ2lkICJGdXJ0aGVyIEFjdGlvbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NjUKK21zZ2lkICJGZXRjaCBJbW1lZGlhdGVseSIKK21zZ3N0ciAiIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NzEKK21zZ2lkICJJbml0aWFsaXplIFJlbW90ZSBSZXBvc2l0b3J5IGFuZCBQdXNoIgorbXNnc3RyICIiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo3NworbXNnaWQgIkRvIE5vdGhpbmcgRWxzZSBOb3ciCittc2dzdHIgIiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjEwMQorbXNnaWQgIlBsZWFzZSBzdXBwbHkgYSByZW1vdGUgbmFtZS4iCittc2dzdHIgIiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjExNAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiclcycgaXMgbm90IGFuIGFjY2VwdGFibGUgcmVtb3RlIG5hbWUuIgorbXNnc3RyICIiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMjUKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gYWRkIHJlbW90ZSAnJXMnIG9mIGxvY2F0aW9uICclcycuIgorbXNnc3RyICIiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMzMgbGliL3RyYW5zcG9ydC50Y2w6NgorIywgdGNsLWZvcm1hdAorbXNnaWQgImZldGNoICVzIgorbXNnc3RyICIiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMzQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGZXRjaGluZyB0aGUgJXMiCittc2dzdHIgIiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjE1NworIywgdGNsLWZvcm1hdAorbXNnaWQgIkRvIG5vdCBrbm93IGhvdyB0byBpbml0aWFsaXplIHJlcG9zaXRvcnkgYXQgbG9jYXRpb24gJyVzJy4iCittc2dzdHIgIiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjE2MyBsaWIvdHJhbnNwb3J0LnRjbDoyNSBsaWIvdHJhbnNwb3J0LnRjbDo2MworIzogbGliL3RyYW5zcG9ydC50Y2w6ODEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJwdXNoICVzIgorbXNnc3RyICIiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxNjQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHVwIHRoZSAlcyAoYXQgJXMpIgorbXNnc3RyICIiCisKICM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6MjkgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDozNAotbXNnaWQgIkRlbGV0ZSBSZW1vdGUgQnJhbmNoIgorbXNnaWQgIkRlbGV0ZSBCcmFuY2ggUmVtb3RlbHkiCiBtc2dzdHIgIiIKIAogIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo0NwogbXNnaWQgIkZyb20gUmVwb3NpdG9yeSIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjUwIGxpYi90cmFuc3BvcnQudGNsOjEyMworIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo1MCBsaWIvdHJhbnNwb3J0LnRjbDoxMzQKIG1zZ2lkICJSZW1vdGU6IgogbXNnc3RyICIiCiAKLSM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NjYgbGliL3RyYW5zcG9ydC50Y2w6MTM4Ci1tc2dpZCAiQXJiaXRyYXJ5IFVSTDoiCisjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjY2IGxpYi90cmFuc3BvcnQudGNsOjE0OQorbXNnaWQgIkFyYml0cmFyeSBMb2NhdGlvbjoiCiBtc2dzdHIgIiIKIAogIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo4NApAQCAtMTc1MCw2ICsyMDg2LDIyIEBACiBtc2dpZCAiU2Nhbm5pbmcgJXMuLi4iCiBtc2dzdHIgIiIKIAorIzogbGliL3NlYXJjaC50Y2w6MjEKK21zZ2lkICJGaW5kOiIKK21zZ3N0ciAiIgorCisjOiBsaWIvc2VhcmNoLnRjbDoyMworbXNnaWQgIk5leHQiCittc2dzdHIgIiIKKworIzogbGliL3NlYXJjaC50Y2w6MjQKK21zZ2lkICJQcmV2IgorbXNnc3RyICIiCisKKyM6IGxpYi9zZWFyY2gudGNsOjI1Cittc2dpZCAiQ2FzZS1TZW5zaXRpdmUiCittc2dzdHIgIiIKKwogIzogbGliL3Nob3J0Y3V0LnRjbDoyMCBsaWIvc2hvcnRjdXQudGNsOjYxCiBtc2dpZCAiQ2Fubm90IHdyaXRlIHNob3J0Y3V0OiIKIG1zZ3N0ciAiIgpAQCAtMTc4NywyMiArMjEzOSwxODIgQEAKIG1zZ2lkICJObyBTdWdnZXN0aW9ucyIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvc3BlbGxjaGVjay50Y2w6Mzg3CisjOiBsaWIvc3BlbGxjaGVjay50Y2w6Mzg4CiBtc2dpZCAiVW5leHBlY3RlZCBFT0YgZnJvbSBzcGVsbCBjaGVja2VyIgogbXNnc3RyICIiCiAKLSM6IGxpYi9zcGVsbGNoZWNrLnRjbDozOTEKKyM6IGxpYi9zcGVsbGNoZWNrLnRjbDozOTIKIG1zZ2lkICJTcGVsbCBDaGVja2VyIEZhaWxlZCIKIG1zZ3N0ciAiIgogCisjOiBsaWIvc3Noa2V5LnRjbDozMQorbXNnaWQgIk5vIGtleXMgZm91bmQuIgorbXNnc3RyICIiCisKKyM6IGxpYi9zc2hrZXkudGNsOjM0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRm91bmQgYSBwdWJsaWMga2V5IGluOiAlcyIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3Noa2V5LnRjbDo0MAorbXNnaWQgIkdlbmVyYXRlIEtleSIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3Noa2V5LnRjbDo1NgorbXNnaWQgIkNvcHkgVG8gQ2xpcGJvYXJkIgorbXNnc3RyICIiCisKKyM6IGxpYi9zc2hrZXkudGNsOjcwCittc2dpZCAiWW91ciBPcGVuU1NIIFB1YmxpYyBLZXkiCittc2dzdHIgIiIKKworIzogbGliL3NzaGtleS50Y2w6NzgKK21zZ2lkICJHZW5lcmF0aW5nLi4uIgorbXNnc3RyICIiCisKKyM6IGxpYi9zc2hrZXkudGNsOjg0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkIG5vdCBzdGFydCBzc2gta2V5Z2VuOlxuIgorIlxuIgorIiVzIgorbXNnc3RyICIiCisKKyM6IGxpYi9zc2hrZXkudGNsOjExMQorbXNnaWQgIkdlbmVyYXRpb24gZmFpbGVkLiIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3Noa2V5LnRjbDoxMTgKK21zZ2lkICJHZW5lcmF0aW9uIHN1Y2NlZGVkLCBidXQgbm8ga2V5cyBmb3VuZC4iCittc2dzdHIgIiIKKworIzogbGliL3NzaGtleS50Y2w6MTIxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiWW91ciBrZXkgaXMgaW46ICVzIgorbXNnc3RyICIiCisKICM6IGxpYi9zdGF0dXNfYmFyLnRjbDo4MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIiVzIC4uLiAlKmkgb2YgJSppICVzICglM2klJSkiCiBtc2dzdHIgIiIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6NgorIzogbGliL3Rvb2xzLnRjbDo3NQogIywgdGNsLWZvcm1hdAotbXNnaWQgImZldGNoICVzIgorbXNnaWQgIlJ1bm5pbmcgJXMgcmVxdWlyZXMgYSBzZWxlY3RlZCBmaWxlLiIKK21zZ3N0ciAiIgorCisjOiBsaWIvdG9vbHMudGNsOjkwCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJ1biAlcz8iCittc2dzdHIgIiIKKworIzogbGliL3Rvb2xzLnRjbDoxMTAKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJUb29sOiAlcyIKK21zZ3N0ciAiIgorCisjOiBsaWIvdG9vbHMudGNsOjExMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlJ1bm5pbmc6ICVzIgorbXNnc3RyICIiCisKKyM6IGxpYi90b29scy50Y2w6MTQ5CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVG9vbCBjb21wbGV0ZWQgc3VjY2VzZnVsbHk6ICVzIgorbXNnc3RyICIiCisKKyM6IGxpYi90b29scy50Y2w6MTUxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVG9vbCBmYWlsZWQ6ICVzIgorbXNnc3RyICIiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjIyCittc2dpZCAiQWRkIFRvb2wiCittc2dzdHIgIiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjgKK21zZ2lkICJBZGQgTmV3IFRvb2wgQ29tbWFuZCIKK21zZ3N0ciAiIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDozMworbXNnaWQgIkFkZCBnbG9iYWxseSIKK21zZ3N0ciAiIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo0NQorbXNnaWQgIlRvb2wgRGV0YWlscyIKK21zZ3N0ciAiIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo0OAorbXNnaWQgIlVzZSAnLycgc2VwYXJhdG9ycyB0byBjcmVhdGUgYSBzdWJtZW51IHRyZWU6IgorbXNnc3RyICIiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjYxCittc2dpZCAiQ29tbWFuZDoiCittc2dzdHIgIiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6NzQKK21zZ2lkICJTaG93IGEgZGlhbG9nIGJlZm9yZSBydW5uaW5nIgorbXNnc3RyICIiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjgwCittc2dpZCAiQXNrIHRoZSB1c2VyIHRvIHNlbGVjdCBhIHJldmlzaW9uIChzZXRzICRSRVZJU0lPTikiCittc2dzdHIgIiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6ODUKK21zZ2lkICJBc2sgdGhlIHVzZXIgZm9yIGFkZGl0aW9uYWwgYXJndW1lbnRzIChzZXRzICRBUkdTKSIKK21zZ3N0ciAiIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo5MgorbXNnaWQgIkRvbid0IHNob3cgdGhlIGNvbW1hbmQgb3V0cHV0IHdpbmRvdyIKK21zZ3N0ciAiIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo5NworbXNnaWQgIlJ1biBvbmx5IGlmIGEgZGlmZiBpcyBzZWxlY3RlZCAoJEZJTEVOQU1FIG5vdCBlbXB0eSkiCittc2dzdHIgIiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTIxCittc2dpZCAiUGxlYXNlIHN1cHBseSBhIG5hbWUgZm9yIHRoZSB0b29sLiIKK21zZ3N0ciAiIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoxMjkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJUb29sICclcycgYWxyZWFkeSBleGlzdHMuIgorbXNnc3RyICIiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjE1MQorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZCBub3QgYWRkIHRvb2w6XG4iCisiJXMiCittc2dzdHIgIiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTkwCittc2dpZCAiUmVtb3ZlIFRvb2wiCittc2dzdHIgIiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTk2Cittc2dpZCAiUmVtb3ZlIFRvb2wgQ29tbWFuZHMiCittc2dzdHIgIiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjAwCittc2dpZCAiUmVtb3ZlIgorbXNnc3RyICIiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjIzNgorbXNnaWQgIihCbHVlIGRlbm90ZXMgcmVwb3NpdG9yeS1sb2NhbCB0b29scykiCittc2dzdHIgIiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6Mjk3CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiUnVuIENvbW1hbmQ6ICVzIgorbXNnc3RyICIiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjMxMQorbXNnaWQgIkFyZ3VtZW50cyIKK21zZ3N0ciAiIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDozNDgKK21zZ2lkICJPSyIKIG1zZ3N0ciAiIgogCiAjOiBsaWIvdHJhbnNwb3J0LnRjbDo3CkBAIC0xODIwLDQ1ICsyMzMyLDQ1IEBACiBtc2dpZCAiUHJ1bmluZyB0cmFja2luZyBicmFuY2hlcyBkZWxldGVkIGZyb20gJXMiCiBtc2dzdHIgIiIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6MjUgbGliL3RyYW5zcG9ydC50Y2w6NzEKLSMsIHRjbC1mb3JtYXQKLW1zZ2lkICJwdXNoICVzIgotbXNnc3RyICIiCi0KICM6IGxpYi90cmFuc3BvcnQudGNsOjI2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUHVzaGluZyBjaGFuZ2VzIHRvICVzIgogbXNnc3RyICIiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjcyCisjOiBsaWIvdHJhbnNwb3J0LnRjbDo2NAorIywgdGNsLWZvcm1hdAorbXNnaWQgIk1pcnJvcmluZyB0byAlcyIKK21zZ3N0ciAiIgorCisjOiBsaWIvdHJhbnNwb3J0LnRjbDo4MgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlB1c2hpbmcgJXMgJXMgdG8gJXMiCiBtc2dzdHIgIiIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6ODkKKyM6IGxpYi90cmFuc3BvcnQudGNsOjEwMAogbXNnaWQgIlB1c2ggQnJhbmNoZXMiCiBtc2dzdHIgIiIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6MTAzCisjOiBsaWIvdHJhbnNwb3J0LnRjbDoxMTQKIG1zZ2lkICJTb3VyY2UgQnJhbmNoZXMiCiBtc2dzdHIgIiIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6MTIwCisjOiBsaWIvdHJhbnNwb3J0LnRjbDoxMzEKIG1zZ2lkICJEZXN0aW5hdGlvbiBSZXBvc2l0b3J5IgogbXNnc3RyICIiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjE1OAorIzogbGliL3RyYW5zcG9ydC50Y2w6MTY5CiBtc2dpZCAiVHJhbnNmZXIgT3B0aW9ucyIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDoxNjAKKyM6IGxpYi90cmFuc3BvcnQudGNsOjE3MQogbXNnaWQgIkZvcmNlIG92ZXJ3cml0ZSBleGlzdGluZyBicmFuY2ggKG1heSBkaXNjYXJkIGNoYW5nZXMpIgogbXNnc3RyICIiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjE2NAorIzogbGliL3RyYW5zcG9ydC50Y2w6MTc1CiBtc2dpZCAiVXNlIHRoaW4gcGFjayAoZm9yIHNsb3cgbmV0d29yayBjb25uZWN0aW9ucykiCiBtc2dzdHIgIiIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6MTY4CisjOiBsaWIvdHJhbnNwb3J0LnRjbDoxNzkKIG1zZ2lkICJJbmNsdWRlIHRhZ3MiCiBtc2dzdHIgIiIKZGlmZiAtLWdpdCBhL2dpdC1ndWkvcG8vaHUucG8gYi9naXQtZ3VpL3BvL2h1LnBvCmluZGV4IDI4NzYwZWQuLmY3NjFiNjQgMTAwNjQ0Ci0tLSBhL2dpdC1ndWkvcG8vaHUucG8KKysrIGIvZ2l0LWd1aS9wby9odS5wbwpAQCAtNyw4ICs3LDggQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogZ2l0LWd1aS1pIDE4blxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBcbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwOC0wMy0xNCAwNzoxOCswMTAwXG4iCi0iUE8tUmV2aXNpb24tRGF0ZTogMjAwOC0wMy0xNCAxNzoyNCswMTAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMDgtMTItMDggMDg6MzEtMDgwMFxuIgorIlBPLVJldmlzaW9uLURhdGU6IDIwMDgtMTItMTAgMTU6MDArMDEwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogTWlrbG9zIFZham5hIDx2bWlrbG9zQGZydWdhbHdhcmUub3JnPlxuIgogIkxhbmd1YWdlLVRlYW06IEh1bmdhcmlhblxuIgogIk1JTUUtVmVyc2lvbjogMS4wXG4iCkBAIC0xNiwzMyArMTYsMzMgQEAKICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiAiUGx1cmFsLUZvcm1zOiBucGx1cmFscz0yOyBwbHVyYWw9KG4gIT0gMSk7XG4iCiAKLSM6IGdpdC1ndWkuc2g6NDEgZ2l0LWd1aS5zaDo2MzQgZ2l0LWd1aS5zaDo2NDggZ2l0LWd1aS5zaDo2NjEgZ2l0LWd1aS5zaDo3NDQKLSM6IGdpdC1ndWkuc2g6NzYzCisjOiBnaXQtZ3VpLnNoOjQxIGdpdC1ndWkuc2g6NzM3IGdpdC1ndWkuc2g6NzUxIGdpdC1ndWkuc2g6NzY0IGdpdC1ndWkuc2g6ODQ3CisjOiBnaXQtZ3VpLnNoOjg2NgogbXNnaWQgImdpdC1ndWk6IGZhdGFsIGVycm9yIgogbXNnc3RyICJnaXQtZ3VpOiB2w6lnemV0ZXMgaGliYSIKIAotIzogZ2l0LWd1aS5zaDo1OTMKKyM6IGdpdC1ndWkuc2g6Njg5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCBmb250IHNwZWNpZmllZCBpbiAlczoiCiBtc2dzdHIgIsOJcnbDqW55dGVsZW4gZm9udCBsZXR0IG1lZ2FkdmEgaXR0OiAlczoiCiAKLSM6IGdpdC1ndWkuc2g6NjIwCisjOiBnaXQtZ3VpLnNoOjcyMwogbXNnaWQgIk1haW4gRm9udCIKIG1zZ3N0ciAiRsWRIGJldMWxdMOtcHVzIgogCi0jOiBnaXQtZ3VpLnNoOjYyMQorIzogZ2l0LWd1aS5zaDo3MjQKIG1zZ2lkICJEaWZmL0NvbnNvbGUgRm9udCIKIG1zZ3N0ciAiRGlmZi9rb256b2wgYmV0xbF0w61wdXMiCiAKLSM6IGdpdC1ndWkuc2g6NjM1CisjOiBnaXQtZ3VpLnNoOjczOAogbXNnaWQgIkNhbm5vdCBmaW5kIGdpdCBpbiBQQVRILiIKIG1zZ3N0ciAiQSBnaXQgbmVtIHRhbMOhbGhhdMOzIGEgUEFUSC1iYW4uIgogCi0jOiBnaXQtZ3VpLnNoOjY2MgorIzogZ2l0LWd1aS5zaDo3NjUKIG1zZ2lkICJDYW5ub3QgcGFyc2UgR2l0IHZlcnNpb24gc3RyaW5nOiIKIG1zZ3N0ciAiTmVtIMOpcnRlbG1lemhldMWRIGEgR2l0IHZlcnppw7Mgc3p0cmluZzoiCiAKLSM6IGdpdC1ndWkuc2g6NjgwCisjOiBnaXQtZ3VpLnNoOjc4MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJHaXQgdmVyc2lvbiBjYW5ub3QgYmUgZGV0ZXJtaW5lZC5cbiIKQEAgLTYxLDM3OSArNjEsNDQ1IEBACiAiXG4iCiAiRmVsdMOpdGVsZXpoZXRqw7xrLCBob2d5IGEoeikgJyVzJyB2ZXJ6acOzamEgbGVnYWzDoWJiIDEuNS4wP1xuIgogCi0jOiBnaXQtZ3VpLnNoOjkxOAorIzogZ2l0LWd1aS5zaDoxMDYyCiBtc2dpZCAiR2l0IGRpcmVjdG9yeSBub3QgZm91bmQ6IgogbXNnc3RyICJBIEdpdCBrw7ZueXZ0w6FyIG5lbSB0YWzDoWxoYXTDszoiCiAKLSM6IGdpdC1ndWkuc2g6OTI1CisjOiBnaXQtZ3VpLnNoOjEwNjkKIG1zZ2lkICJDYW5ub3QgbW92ZSB0byB0b3Agb2Ygd29ya2luZyBkaXJlY3Rvcnk6IgogbXNnc3RyICJOZW0gbGVoZXQgYSBtdW5rYWvDtm55dnTDoXIgdGV0ZWrDqXJlIGzDqXBuaToiCiAKLSM6IGdpdC1ndWkuc2g6OTMyCisjOiBnaXQtZ3VpLnNoOjEwNzYKIG1zZ2lkICJDYW5ub3QgdXNlIGZ1bm55IC5naXQgZGlyZWN0b3J5OiIKIG1zZ3N0ciAiTmVtIGhhc3puw6FsaGF0w7MgdmljY2VzIC5naXQga8O2bnl2dMOhcjoiCiAKLSM6IGdpdC1ndWkuc2g6OTM3CisjOiBnaXQtZ3VpLnNoOjEwODEKIG1zZ2lkICJObyB3b3JraW5nIGRpcmVjdG9yeSIKIG1zZ3N0ciAiTmluY3MgbXVua2Frw7ZueXZ0w6FyIgogCi0jOiBnaXQtZ3VpLnNoOjEwODQgbGliL2NoZWNrb3V0X29wLnRjbDoyODMKKyM6IGdpdC1ndWkuc2g6MTI0NyBsaWIvY2hlY2tvdXRfb3AudGNsOjMwNQogbXNnaWQgIlJlZnJlc2hpbmcgZmlsZSBzdGF0dXMuLi4iCiBtc2dzdHIgIkEgZsOhamxvayBzdMOhdHVzesOhbmFrIGZyaXNzw610w6lzZS4uLiIKIAotIzogZ2l0LWd1aS5zaDoxMTQ5CisjOiBnaXQtZ3VpLnNoOjEzMDMKIG1zZ2lkICJTY2FubmluZyBmb3IgbW9kaWZpZWQgZmlsZXMgLi4uIgogbXNnc3RyICJNw7Nkb3PDrXRvdHQgZsOhamxvayBrZXJlc8Opc2UgLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjEzMjQgbGliL2Jyb3dzZXIudGNsOjI0NgorIzogZ2l0LWd1aS5zaDoxMzY3Cittc2dpZCAiQ2FsbGluZyBwcmVwYXJlLWNvbW1pdC1tc2cgaG9vay4uLiIKK21zZ3N0ciAiQSBwcmVwYXJlLWNvbW1pdC1tc2cgaHVyb2sgbWVnaMOtdsOhc2EuLi4iCisKKyM6IGdpdC1ndWkuc2g6MTM4NAorbXNnaWQgIkNvbW1pdCBkZWNsaW5lZCBieSBwcmVwYXJlLWNvbW1pdC1tc2cgaG9vay4iCittc2dzdHIgIkEgY29tbWl0b3QgbWVnYWthZMOhbHlvenRhIGEgcHJlcGFyZS1jb21taXQtbXNnIGh1cm9rLiIKKworIzogZ2l0LWd1aS5zaDoxNTQyIGxpYi9icm93c2VyLnRjbDoyNDYKIG1zZ2lkICJSZWFkeS4iCiBtc2dzdHIgIkvDqXN6LiIKIAotIzogZ2l0LWd1aS5zaDoxNTkwCisjOiBnaXQtZ3VpLnNoOjE4MTkKIG1zZ2lkICJVbm1vZGlmaWVkIgogbXNnc3RyICJOZW0gbcOzZG9zw610b3R0IgogCi0jOiBnaXQtZ3VpLnNoOjE1OTIKKyM6IGdpdC1ndWkuc2g6MTgyMQogbXNnaWQgIk1vZGlmaWVkLCBub3Qgc3RhZ2VkIgogbXNnc3RyICJNw7Nkb3PDrXRvdHQsIGRlIG5lbSBraXbDoWxhc3p0b3R0IgogCi0jOiBnaXQtZ3VpLnNoOjE1OTMgZ2l0LWd1aS5zaDoxNTk4CisjOiBnaXQtZ3VpLnNoOjE4MjIgZ2l0LWd1aS5zaDoxODMwCiBtc2dpZCAiU3RhZ2VkIGZvciBjb21taXQiCiBtc2dzdHIgIktpdsOhbGFzenR2YSBjb21taXRvbMOhc3JhIgogCi0jOiBnaXQtZ3VpLnNoOjE1OTQgZ2l0LWd1aS5zaDoxNTk5CisjOiBnaXQtZ3VpLnNoOjE4MjMgZ2l0LWd1aS5zaDoxODMxCiBtc2dpZCAiUG9ydGlvbnMgc3RhZ2VkIGZvciBjb21taXQiCiBtc2dzdHIgIlLDqXN6ZWsga2l2w6FsYXN6dHZhIGNvbW1pdG9sw6FzcmEiCiAKLSM6IGdpdC1ndWkuc2g6MTU5NSBnaXQtZ3VpLnNoOjE2MDAKKyM6IGdpdC1ndWkuc2g6MTgyNCBnaXQtZ3VpLnNoOjE4MzIKIG1zZ2lkICJTdGFnZWQgZm9yIGNvbW1pdCwgbWlzc2luZyIKIG1zZ3N0ciAiS2l2w6FsYXN6dHZhIGNvbW1pdG9sw6FzcmEsIGhpw6FueXrDsyIKIAotIzogZ2l0LWd1aS5zaDoxNTk3CisjOiBnaXQtZ3VpLnNoOjE4MjYKK21zZ2lkICJGaWxlIHR5cGUgY2hhbmdlZCwgbm90IHN0YWdlZCIKK21zZ3N0ciAiRsOhamwgdMOtcHVzIG1lZ3bDoWx0b3pvdHQsIG5lbSBraXbDoWxhc3p0b3R0IgorCisjOiBnaXQtZ3VpLnNoOjE4MjcKK21zZ2lkICJGaWxlIHR5cGUgY2hhbmdlZCwgc3RhZ2VkIgorbXNnc3RyICJBIGbDoWpsdMOtcHVzIG1lZ3bDoWx0b3pvdHQsIGtpdsOhbGFzenRvdHQiCisKKyM6IGdpdC1ndWkuc2g6MTgyOQogbXNnaWQgIlVudHJhY2tlZCwgbm90IHN0YWdlZCIKIG1zZ3N0ciAiTmVtIGvDtnZldGV0dCwgbmVtIGtpdsOhbGFzenRvdHQiCiAKLSM6IGdpdC1ndWkuc2g6MTYwMgorIzogZ2l0LWd1aS5zaDoxODM0CiBtc2dpZCAiTWlzc2luZyIKIG1zZ3N0ciAiSGnDoW55esOzIgogCi0jOiBnaXQtZ3VpLnNoOjE2MDMKKyM6IGdpdC1ndWkuc2g6MTgzNQogbXNnaWQgIlN0YWdlZCBmb3IgcmVtb3ZhbCIKIG1zZ3N0ciAiS2l2w6FsYXN6dHZhIGVsdMOhdm9sw610w6FzcmEiCiAKLSM6IGdpdC1ndWkuc2g6MTYwNAorIzogZ2l0LWd1aS5zaDoxODM2CiBtc2dpZCAiU3RhZ2VkIGZvciByZW1vdmFsLCBzdGlsbCBwcmVzZW50IgogbXNnc3RyICJLaXbDoWxhc3p0dmEgZWx0w6F2b2zDrXTDoXNyYSwgamVsZW5sZWcgaXMgZWzDqXJoZXTFkSIKIAotIzogZ2l0LWd1aS5zaDoxNjA2IGdpdC1ndWkuc2g6MTYwNyBnaXQtZ3VpLnNoOjE2MDggZ2l0LWd1aS5zaDoxNjA5CisjOiBnaXQtZ3VpLnNoOjE4MzggZ2l0LWd1aS5zaDoxODM5IGdpdC1ndWkuc2g6MTg0MCBnaXQtZ3VpLnNoOjE4NDEKKyM6IGdpdC1ndWkuc2g6MTg0MiBnaXQtZ3VpLnNoOjE4NDMKIG1zZ2lkICJSZXF1aXJlcyBtZXJnZSByZXNvbHV0aW9uIgogbXNnc3RyICJNZXJnZSBmZWxvbGTDoXMgc3rDvGtzw6lnZXMiCiAKLSM6IGdpdC1ndWkuc2g6MTY0NAorIzogZ2l0LWd1aS5zaDoxODc4CiBtc2dpZCAiU3RhcnRpbmcgZ2l0ay4uLiBwbGVhc2Ugd2FpdC4uLiIKIG1zZ3N0ciAiQSBnaXRrIGluZMOtdMOhc2EuLi4gdsOhcmp1bmsuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MTY1MwotIywgdGNsLWZvcm1hdAotbXNnaWQgIiIKLSJVbmFibGUgdG8gc3RhcnQgZ2l0azpcbiIKLSJcbiIKLSIlcyBkb2VzIG5vdCBleGlzdCIKLW1zZ3N0ciAiIgotIkEgZ2l0ayBpbmTDrXTDoXNhIHNpa2VydGVsZW46XG4iCi0iXG4iCi0iQSh6KSAlcyBuZW0gbMOpdGV6aWsiCisjOiBnaXQtZ3VpLnNoOjE4ODcKK21zZ2lkICJDb3VsZG4ndCBmaW5kIGdpdGsgaW4gUEFUSCIKK21zZ3N0ciAiQSBnaXRrIG5lbSB0YWzDoWxoYXTDsyBhIFBBVEgtYmFuLiIKIAotIzogZ2l0LWd1aS5zaDoxODYwIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzYKKyM6IGdpdC1ndWkuc2g6MjI4MCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM2CiBtc2dpZCAiUmVwb3NpdG9yeSIKIG1zZ3N0ciAiUmVww7MiCiAKLSM6IGdpdC1ndWkuc2g6MTg2MQorIzogZ2l0LWd1aS5zaDoyMjgxCiBtc2dpZCAiRWRpdCIKIG1zZ3N0ciAiU3plcmtlc3p0w6lzIgogCi0jOiBnaXQtZ3VpLnNoOjE4NjMgbGliL2Nob29zZV9yZXYudGNsOjU2MQorIzogZ2l0LWd1aS5zaDoyMjgzIGxpYi9jaG9vc2VfcmV2LnRjbDo1NjEKIG1zZ2lkICJCcmFuY2giCiBtc2dzdHIgIkJyYW5jaCIKIAotIzogZ2l0LWd1aS5zaDoxODY2IGxpYi9jaG9vc2VfcmV2LnRjbDo1NDgKKyM6IGdpdC1ndWkuc2g6MjI4NiBsaWIvY2hvb3NlX3Jldi50Y2w6NTQ4CiBtc2dpZCAiQ29tbWl0QEBub3VuIgogbXNnc3RyICJDb21taXRAQGbFkW7DqXYiCiAKLSM6IGdpdC1ndWkuc2g6MTg2OSBsaWIvbWVyZ2UudGNsOjEyMCBsaWIvbWVyZ2UudGNsOjE0OSBsaWIvbWVyZ2UudGNsOjE2NworIzogZ2l0LWd1aS5zaDoyMjg5IGxpYi9tZXJnZS50Y2w6MTIxIGxpYi9tZXJnZS50Y2w6MTUwIGxpYi9tZXJnZS50Y2w6MTY4CiBtc2dpZCAiTWVyZ2UiCiBtc2dzdHIgIk1lcmdlIgogCi0jOiBnaXQtZ3VpLnNoOjE4NzAgbGliL2Nob29zZV9yZXYudGNsOjU1NworIzogZ2l0LWd1aS5zaDoyMjkwIGxpYi9jaG9vc2VfcmV2LnRjbDo1NTcKIG1zZ2lkICJSZW1vdGUiCiBtc2dzdHIgIlTDoXZvbGkiCiAKLSM6IGdpdC1ndWkuc2g6MTg3OQorIzogZ2l0LWd1aS5zaDoyMjkzCittc2dpZCAiVG9vbHMiCittc2dzdHIgIkVzemvDtnrDtmsiCisKKyM6IGdpdC1ndWkuc2g6MjMwMgorbXNnaWQgIkV4cGxvcmUgV29ya2luZyBDb3B5IgorbXNnc3RyICJNdW5rYW3DoXNvbGF0IGZlbGZlZGV6w6lzZSIKKworIzogZ2l0LWd1aS5zaDoyMzA3CiBtc2dpZCAiQnJvd3NlIEN1cnJlbnQgQnJhbmNoJ3MgRmlsZXMiCiBtc2dzdHIgIkEgamVsZW5sZWdpIGJyYW5jaCBmw6FqbGphaW5hayBiw7ZuZ8Opc3rDqXNlIgogCi0jOiBnaXQtZ3VpLnNoOjE4ODMKKyM6IGdpdC1ndWkuc2g6MjMxMQogbXNnaWQgIkJyb3dzZSBCcmFuY2ggRmlsZXMuLi4iCiBtc2dzdHIgIkEgYnJhbmNoIGbDoWpsamFpbmFrIGLDtm5nw6lzesOpc2UuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MTg4OAorIzogZ2l0LWd1aS5zaDoyMzE2CiBtc2dpZCAiVmlzdWFsaXplIEN1cnJlbnQgQnJhbmNoJ3MgSGlzdG9yeSIKIG1zZ3N0ciAiQSBqZWxlbmxlZ2kgYnJhbmNoIHTDtnJ0w6luZXTDqW5layB2aXp1YWxpesOhbMOhc2EiCiAKLSM6IGdpdC1ndWkuc2g6MTg5MgorIzogZ2l0LWd1aS5zaDoyMzIwCiBtc2dpZCAiVmlzdWFsaXplIEFsbCBCcmFuY2ggSGlzdG9yeSIKIG1zZ3N0ciAiQXogw7Zzc3plcyBicmFuY2ggdMO2cnTDqW5ldMOpbmVrIHZpenVhbGl6w6Fsw6FzYSIKIAotIzogZ2l0LWd1aS5zaDoxODk5CisjOiBnaXQtZ3VpLnNoOjIzMjcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJCcm93c2UgJXMncyBGaWxlcyIKIG1zZ3N0ciAiQSh6KSAlcyBicmFuY2ggZsOhamxqYWluYWsgYsO2bmfDqXN6w6lzZSIKIAotIzogZ2l0LWd1aS5zaDoxOTAxCisjOiBnaXQtZ3VpLnNoOjIzMjkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJWaXN1YWxpemUgJXMncyBIaXN0b3J5IgogbXNnc3RyICJBKHopICVzIGJyYW5jaCB0w7ZydMOpbmV0w6luZWsgdml6dWFsaXrDoWzDoXNhIgogCi0jOiBnaXQtZ3VpLnNoOjE5MDYgbGliL2RhdGFiYXNlLnRjbDoyNyBsaWIvZGF0YWJhc2UudGNsOjY3CisjOiBnaXQtZ3VpLnNoOjIzMzQgbGliL2RhdGFiYXNlLnRjbDoyNyBsaWIvZGF0YWJhc2UudGNsOjY3CiBtc2dpZCAiRGF0YWJhc2UgU3RhdGlzdGljcyIKIG1zZ3N0ciAiQWRhdGLDoXppcyBzdGF0aXN6dGlrw6FrIgogCi0jOiBnaXQtZ3VpLnNoOjE5MDkgbGliL2RhdGFiYXNlLnRjbDozNAorIzogZ2l0LWd1aS5zaDoyMzM3IGxpYi9kYXRhYmFzZS50Y2w6MzQKIG1zZ2lkICJDb21wcmVzcyBEYXRhYmFzZSIKIG1zZ3N0ciAiQWRhdGLDoXppcyB0w7Ztw7Zyw610w6lzZSIKIAotIzogZ2l0LWd1aS5zaDoxOTEyCisjOiBnaXQtZ3VpLnNoOjIzNDAKIG1zZ2lkICJWZXJpZnkgRGF0YWJhc2UiCiBtc2dzdHIgIkFkYXRiw6F6aXMgZWxsZW7FkXJ6w6lzZSIKIAotIzogZ2l0LWd1aS5zaDoxOTE5IGdpdC1ndWkuc2g6MTkyMyBnaXQtZ3VpLnNoOjE5MjcgbGliL3Nob3J0Y3V0LnRjbDo3CisjOiBnaXQtZ3VpLnNoOjIzNDcgZ2l0LWd1aS5zaDoyMzUxIGdpdC1ndWkuc2g6MjM1NSBsaWIvc2hvcnRjdXQudGNsOjcKICM6IGxpYi9zaG9ydGN1dC50Y2w6MzkgbGliL3Nob3J0Y3V0LnRjbDo3MQogbXNnaWQgIkNyZWF0ZSBEZXNrdG9wIEljb24iCiBtc2dzdHIgIkFzenRhbCBpa29uIGzDqXRyZWhvesOhc2EiCiAKLSM6IGdpdC1ndWkuc2g6MTkzMiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjE3NyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjE4NQorIzogZ2l0LWd1aS5zaDoyMzYzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTgzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTkxCiBtc2dpZCAiUXVpdCIKIG1zZ3N0ciAiS2lsw6lww6lzIgogCi0jOiBnaXQtZ3VpLnNoOjE5MzkKKyM6IGdpdC1ndWkuc2g6MjM3MQogbXNnaWQgIlVuZG8iCiBtc2dzdHIgIlZpc3N6YXZvbsOhcyIKIAotIzogZ2l0LWd1aS5zaDoxOTQyCisjOiBnaXQtZ3VpLnNoOjIzNzQKIG1zZ2lkICJSZWRvIgogbXNnc3RyICJNw6lnaXMiCiAKLSM6IGdpdC1ndWkuc2g6MTk0NiBnaXQtZ3VpLnNoOjI0NDMKKyM6IGdpdC1ndWkuc2g6MjM3OCBnaXQtZ3VpLnNoOjI5MzcKIG1zZ2lkICJDdXQiCiBtc2dzdHIgIktpdsOhZ8OhcyIKIAotIzogZ2l0LWd1aS5zaDoxOTQ5IGdpdC1ndWkuc2g6MjQ0NiBnaXQtZ3VpLnNoOjI1MjAgZ2l0LWd1aS5zaDoyNjE0CisjOiBnaXQtZ3VpLnNoOjIzODEgZ2l0LWd1aS5zaDoyOTQwIGdpdC1ndWkuc2g6MzAxNCBnaXQtZ3VpLnNoOjMwOTYKICM6IGxpYi9jb25zb2xlLnRjbDo2OQogbXNnaWQgIkNvcHkiCiBtc2dzdHIgIk3DoXNvbMOhcyIKIAotIzogZ2l0LWd1aS5zaDoxOTUyIGdpdC1ndWkuc2g6MjQ0OQorIzogZ2l0LWd1aS5zaDoyMzg0IGdpdC1ndWkuc2g6Mjk0MwogbXNnaWQgIlBhc3RlIgogbXNnc3RyICJCZWlsbGVzenTDqXMiCiAKLSM6IGdpdC1ndWkuc2g6MTk1NSBnaXQtZ3VpLnNoOjI0NTIgbGliL2JyYW5jaF9kZWxldGUudGNsOjI2CisjOiBnaXQtZ3VpLnNoOjIzODcgZ2l0LWd1aS5zaDoyOTQ2IGxpYi9icmFuY2hfZGVsZXRlLnRjbDoyNgogIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDozOAogbXNnaWQgIkRlbGV0ZSIKIG1zZ3N0ciAiVMO2cmzDqXMiCiAKLSM6IGdpdC1ndWkuc2g6MTk1OSBnaXQtZ3VpLnNoOjI0NTYgZ2l0LWd1aS5zaDoyNjE4IGxpYi9jb25zb2xlLnRjbDo3MQorIzogZ2l0LWd1aS5zaDoyMzkxIGdpdC1ndWkuc2g6Mjk1MCBnaXQtZ3VpLnNoOjMxMDAgbGliL2NvbnNvbGUudGNsOjcxCiBtc2dpZCAiU2VsZWN0IEFsbCIKIG1zZ3N0ciAiTWluZGVudCBraXbDoWxhc3p0IgogCi0jOiBnaXQtZ3VpLnNoOjE5NjgKKyM6IGdpdC1ndWkuc2g6MjQwMAogbXNnaWQgIkNyZWF0ZS4uLiIKIG1zZ3N0ciAiTMOpdHJlaG96w6FzLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjE5NzQKKyM6IGdpdC1ndWkuc2g6MjQwNgogbXNnaWQgIkNoZWNrb3V0Li4uIgogbXNnc3RyICJDaGVja291dC4uLiIKIAotIzogZ2l0LWd1aS5zaDoxOTgwCisjOiBnaXQtZ3VpLnNoOjI0MTIKIG1zZ2lkICJSZW5hbWUuLi4iCiBtc2dzdHIgIsOBdG5ldmV6w6lzLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjE5ODUgZ2l0LWd1aS5zaDoyMDg1CisjOiBnaXQtZ3VpLnNoOjI0MTcKIG1zZ2lkICJEZWxldGUuLi4iCiBtc2dzdHIgIlTDtnJsw6lzLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjE5OTAKKyM6IGdpdC1ndWkuc2g6MjQyMgogbXNnaWQgIlJlc2V0Li4uIgogbXNnc3RyICJWaXNzemHDoWxsw610w6FzLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIwMDIgZ2l0LWd1aS5zaDoyMzg5Ci1tc2dpZCAiTmV3IENvbW1pdCIKLW1zZ3N0ciAiw5pqIGNvbW1pdCIKKyM6IGdpdC1ndWkuc2g6MjQzMgorbXNnaWQgIkRvbmUiCittc2dzdHIgIkvDqXN6IgogCi0jOiBnaXQtZ3VpLnNoOjIwMTAgZ2l0LWd1aS5zaDoyMzk2Ci1tc2dpZCAiQW1lbmQgTGFzdCBDb21taXQiCi1tc2dzdHIgIlV0b2xzw7MgY29tbWl0IGphdsOtdMOhc2EiCi0KLSM6IGdpdC1ndWkuc2g6MjAxOSBnaXQtZ3VpLnNoOjIzNTYgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo5OQotbXNnaWQgIlJlc2NhbiIKLW1zZ3N0ciAiS2VyZXPDqXMgw7pqcmEiCi0KLSM6IGdpdC1ndWkuc2g6MjAyNQotbXNnaWQgIlN0YWdlIFRvIENvbW1pdCIKLW1zZ3N0ciAiS2l2w6FsYXN6dMOhcyBjb21taXRvbMOhc3JhIgotCi0jOiBnaXQtZ3VpLnNoOjIwMzEKLW1zZ2lkICJTdGFnZSBDaGFuZ2VkIEZpbGVzIFRvIENvbW1pdCIKLW1zZ3N0ciAiTcOzZG9zw610b3R0IGbDoWpsb2sga2l2w6FsYXN6dMOhc2EgY29tbWl0b2zDoXNyYSIKLQotIzogZ2l0LWd1aS5zaDoyMDM3Ci1tc2dpZCAiVW5zdGFnZSBGcm9tIENvbW1pdCIKLW1zZ3N0ciAiQ29tbWl0YmEgdmFsw7Mga2l2w6FsYXN6dMOhcyB2aXNzemF2b27DoXNhIgotCi0jOiBnaXQtZ3VpLnNoOjIwNDIgbGliL2luZGV4LnRjbDozOTUKLW1zZ2lkICJSZXZlcnQgQ2hhbmdlcyIKLW1zZ3N0ciAiVsOhbHRvenRhdMOhc29rIHZpc3N6YcOhbGzDrXTDoXNhIgotCi0jOiBnaXQtZ3VpLnNoOjIwNDkgZ2l0LWd1aS5zaDoyMzY4IGdpdC1ndWkuc2g6MjQ2NwotbXNnaWQgIlNpZ24gT2ZmIgotbXNnc3RyICJBbMOhw61yIgotCi0jOiBnaXQtZ3VpLnNoOjIwNTMgZ2l0LWd1aS5zaDoyMzcyCisjOiBnaXQtZ3VpLnNoOjI0MzQKIG1zZ2lkICJDb21taXRAQHZlcmIiCiBtc2dzdHIgIkNvbW1pdEBAaWdlIgogCi0jOiBnaXQtZ3VpLnNoOjIwNjQKKyM6IGdpdC1ndWkuc2g6MjQ0MyBnaXQtZ3VpLnNoOjI4NzgKK21zZ2lkICJOZXcgQ29tbWl0IgorbXNnc3RyICLDmmogY29tbWl0IgorCisjOiBnaXQtZ3VpLnNoOjI0NTEgZ2l0LWd1aS5zaDoyODg1Cittc2dpZCAiQW1lbmQgTGFzdCBDb21taXQiCittc2dzdHIgIlV0b2xzw7MgY29tbWl0IGphdsOtdMOhc2EiCisKKyM6IGdpdC1ndWkuc2g6MjQ2MSBnaXQtZ3VpLnNoOjI4MzkgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo5OQorbXNnaWQgIlJlc2NhbiIKK21zZ3N0ciAiS2VyZXPDqXMgw7pqcmEiCisKKyM6IGdpdC1ndWkuc2g6MjQ2NworbXNnaWQgIlN0YWdlIFRvIENvbW1pdCIKK21zZ3N0ciAiS2l2w6FsYXN6dMOhcyBjb21taXRvbMOhc3JhIgorCisjOiBnaXQtZ3VpLnNoOjI0NzMKK21zZ2lkICJTdGFnZSBDaGFuZ2VkIEZpbGVzIFRvIENvbW1pdCIKK21zZ3N0ciAiTcOzZG9zw610b3R0IGbDoWpsb2sga2l2w6FsYXN6dMOhc2EgY29tbWl0b2zDoXNyYSIKKworIzogZ2l0LWd1aS5zaDoyNDc5Cittc2dpZCAiVW5zdGFnZSBGcm9tIENvbW1pdCIKK21zZ3N0ciAiQ29tbWl0YmEgdmFsw7Mga2l2w6FsYXN6dMOhcyB2aXNzemF2b27DoXNhIgorCisjOiBnaXQtZ3VpLnNoOjI0ODQgbGliL2luZGV4LnRjbDo0MTAKK21zZ2lkICJSZXZlcnQgQ2hhbmdlcyIKK21zZ3N0ciAiVsOhbHRvenRhdMOhc29rIHZpc3N6YcOhbGzDrXTDoXNhIgorCisjOiBnaXQtZ3VpLnNoOjI0OTEgZ2l0LWd1aS5zaDozMDgzCittc2dpZCAiU2hvdyBMZXNzIENvbnRleHQiCittc2dzdHIgIktldmVzZWJiIGvDtnJueWV6ZXQgbXV0YXTDoXNhIgorCisjOiBnaXQtZ3VpLnNoOjI0OTUgZ2l0LWd1aS5zaDozMDg3Cittc2dpZCAiU2hvdyBNb3JlIENvbnRleHQiCittc2dzdHIgIlTDtmJiIGvDtnJueWV6ZXQgbXV0YXTDoXNhIgorCisjOiBnaXQtZ3VpLnNoOjI1MDIgZ2l0LWd1aS5zaDoyODUyIGdpdC1ndWkuc2g6Mjk2MQorbXNnaWQgIlNpZ24gT2ZmIgorbXNnc3RyICJBbMOhw61yIgorCisjOiBnaXQtZ3VpLnNoOjI1MTgKIG1zZ2lkICJMb2NhbCBNZXJnZS4uLiIKIG1zZ3N0ciAiSGVseWkgbWVyZ2UuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MjA2OQorIzogZ2l0LWd1aS5zaDoyNTIzCiBtc2dpZCAiQWJvcnQgTWVyZ2UuLi4iCiBtc2dzdHIgIk1lcmdlIG1lZ3N6YWvDrXTDoXNhLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIwODEKKyM6IGdpdC1ndWkuc2g6MjUzNSBnaXQtZ3VpLnNoOjI1NzUKK21zZ2lkICJBZGQuLi4iCittc2dzdHIgIkhvenrDoWFkw6FzLi4uIgorCisjOiBnaXQtZ3VpLnNoOjI1MzkKIG1zZ2lkICJQdXNoLi4uIgogbXNnc3RyICJQdXNoLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIwOTIgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0MQotbXNnaWQgIkFwcGxlIgotbXNnc3RyICJBcHBsZSIKKyM6IGdpdC1ndWkuc2g6MjU0MworbXNnaWQgIkRlbGV0ZSBCcmFuY2guLi4iCittc2dzdHIgIkJyYW5jaCB0w7ZybMOpc2UuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MjA5NSBnaXQtZ3VpLnNoOjIxMTcgbGliL2Fib3V0LnRjbDoxNAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwCisjOiBnaXQtZ3VpLnNoOjI1NTMgZ2l0LWd1aS5zaDoyNTg5IGxpYi9hYm91dC50Y2w6MTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIkFib3V0ICVzIgogbXNnc3RyICJOw6l2amVneTogJXMiCiAKLSM6IGdpdC1ndWkuc2g6MjA5OQorIzogZ2l0LWd1aS5zaDoyNTU3CiBtc2dpZCAiUHJlZmVyZW5jZXMuLi4iCiBtc2dzdHIgIkJlw6FsbMOtdMOhc29rLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIxMDcgZ2l0LWd1aS5zaDoyNjM5CisjOiBnaXQtZ3VpLnNoOjI1NjUgZ2l0LWd1aS5zaDozMTI5CiBtc2dpZCAiT3B0aW9ucy4uLiIKIG1zZ3N0ciAiT3BjacOzay4uLiIKIAotIzogZ2l0LWd1aS5zaDoyMTEzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDcKKyM6IGdpdC1ndWkuc2g6MjU3NgorbXNnaWQgIlJlbW92ZS4uLiIKK21zZ3N0ciAiRWx0w6F2b2zDrXTDoXMuLi4iCisKKyM6IGdpdC1ndWkuc2g6MjU4NSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwCiBtc2dpZCAiSGVscCIKIG1zZ3N0ciAiU2Vnw610c8OpZyIKIAotIzogZ2l0LWd1aS5zaDoyMTU0CisjOiBnaXQtZ3VpLnNoOjI2MTEKIG1zZ2lkICJPbmxpbmUgRG9jdW1lbnRhdGlvbiIKIG1zZ3N0ciAiT25saW5lIGRva3VtZW50w6FjacOzIgogCi0jOiBnaXQtZ3VpLnNoOjIyMzgKKyM6IGdpdC1ndWkuc2g6MjYxNCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ3IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTYKK21zZ2lkICJTaG93IFNTSCBLZXkiCittc2dzdHIgIlNTSCBrdWxjcyBtdXRhdMOhc2EiCisKKyM6IGdpdC1ndWkuc2g6MjcyMQogIywgdGNsLWZvcm1hdAogbXNnaWQgImZhdGFsOiBjYW5ub3Qgc3RhdCBwYXRoICVzOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IgogbXNnc3RyICIiCiAidsOpZ3pldGVzIGhpYmE6IG5lbSDDqXJoZXTFkSBlbCBhKHopICVzIMO6dHZvbmFsOiBOaW5jcyBpbHllbiBmw6FqbCB2YWd5IGvDtm55dnTDoXIiCiAKLSM6IGdpdC1ndWkuc2g6MjI3MQorIzogZ2l0LWd1aS5zaDoyNzU0CiBtc2dpZCAiQ3VycmVudCBCcmFuY2g6IgogbXNnc3RyICJKZWxlbmxlZ2kgYnJhbmNoOiIKIAotIzogZ2l0LWd1aS5zaDoyMjkyCisjOiBnaXQtZ3VpLnNoOjI3NzUKIG1zZ2lkICJTdGFnZWQgQ2hhbmdlcyAoV2lsbCBDb21taXQpIgogbXNnc3RyICJLaXbDoWxhc3p0b3R0IHbDoWx0b3p0YXTDoXNvayAoY29tbWl0b2x2YSBsZXN6KSIKIAotIzogZ2l0LWd1aS5zaDoyMzEyCisjOiBnaXQtZ3VpLnNoOjI3OTUKIG1zZ2lkICJVbnN0YWdlZCBDaGFuZ2VzIgogbXNnc3RyICJLaXbDoWxhc3p0YXRsYW4gdsOhbHRvenRhdMOhc29rIgogCi0jOiBnaXQtZ3VpLnNoOjIzNjIKKyM6IGdpdC1ndWkuc2g6Mjg0NQogbXNnaWQgIlN0YWdlIENoYW5nZWQiCiBtc2dzdHIgIlbDoWx0b3p0YXTDoXNvayBraXbDoWxhc3p0w6FzYSIKIAotIzogZ2l0LWd1aS5zaDoyMzc4IGxpYi90cmFuc3BvcnQudGNsOjkzIGxpYi90cmFuc3BvcnQudGNsOjE4MgorIzogZ2l0LWd1aS5zaDoyODY0IGxpYi90cmFuc3BvcnQudGNsOjEwNCBsaWIvdHJhbnNwb3J0LnRjbDoxOTMKIG1zZ2lkICJQdXNoIgogbXNnc3RyICJQdXNoIgogCi0jOiBnaXQtZ3VpLnNoOjI0MDgKKyM6IGdpdC1ndWkuc2g6Mjg5OQogbXNnaWQgIkluaXRpYWwgQ29tbWl0IE1lc3NhZ2U6IgogbXNnc3RyICJLZXpkZXRpIGNvbW1pdCDDvHplbmV0OiIKIAotIzogZ2l0LWd1aS5zaDoyNDA5CisjOiBnaXQtZ3VpLnNoOjI5MDAKIG1zZ2lkICJBbWVuZGVkIENvbW1pdCBNZXNzYWdlOiIKIG1zZ3N0ciAiSmF2w610w7MgY29tbWl0IMO8emVuZXQ6IgogCi0jOiBnaXQtZ3VpLnNoOjI0MTAKKyM6IGdpdC1ndWkuc2g6MjkwMQogbXNnaWQgIkFtZW5kZWQgSW5pdGlhbCBDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIktlemRldGkgamF2w610w7MgY29tbWl0IMO8emVuZXQ6IgogCi0jOiBnaXQtZ3VpLnNoOjI0MTEKKyM6IGdpdC1ndWkuc2g6MjkwMgogbXNnaWQgIkFtZW5kZWQgTWVyZ2UgQ29tbWl0IE1lc3NhZ2U6IgogbXNnc3RyICJKYXbDrXTDsyBtZXJnZSBjb21taXQgw7x6ZW5ldDoiCiAKLSM6IGdpdC1ndWkuc2g6MjQxMgorIzogZ2l0LWd1aS5zaDoyOTAzCiBtc2dpZCAiTWVyZ2UgQ29tbWl0IE1lc3NhZ2U6IgogbXNnc3RyICJNZXJnZSBjb21taXQgw7x6ZW5ldDoiCiAKLSM6IGdpdC1ndWkuc2g6MjQxMworIzogZ2l0LWd1aS5zaDoyOTA0CiBtc2dpZCAiQ29tbWl0IE1lc3NhZ2U6IgogbXNnc3RyICJDb21taXQgw7x6ZW5ldDoiCiAKLSM6IGdpdC1ndWkuc2g6MjQ1OSBnaXQtZ3VpLnNoOjI2MjIgbGliL2NvbnNvbGUudGNsOjczCisjOiBnaXQtZ3VpLnNoOjI5NTMgZ2l0LWd1aS5zaDozMTA0IGxpYi9jb25zb2xlLnRjbDo3MwogbXNnaWQgIkNvcHkgQWxsIgogbXNnc3RyICLDlnNzemVzIG3DoXNvbMOhc2EiCiAKLSM6IGdpdC1ndWkuc2g6MjQ4MyBsaWIvYmxhbWUudGNsOjEwNworIzogZ2l0LWd1aS5zaDoyOTc3IGxpYi9ibGFtZS50Y2w6MTA0CiBtc2dpZCAiRmlsZToiCiBtc2dzdHIgIkbDoWpsOiIKIAotIzogZ2l0LWd1aS5zaDoyNTg5Ci1tc2dpZCAiQXBwbHkvUmV2ZXJzZSBIdW5rIgotbXNnc3RyICJIdW5rIGFsa2FsbWF6w6FzYS92aXNzemHDoWxsw610w6FzYSIKLQotIzogZ2l0LWd1aS5zaDoyNTk1Ci1tc2dpZCAiU2hvdyBMZXNzIENvbnRleHQiCi1tc2dzdHIgIktldmVzZWJiIGvDtnJueWV6ZXQgbXV0YXTDoXNhIgotCi0jOiBnaXQtZ3VpLnNoOjI2MDIKLW1zZ2lkICJTaG93IE1vcmUgQ29udGV4dCIKLW1zZ3N0ciAiVMO2YmIga8O2cm55ZXpldCBtdXRhdMOhc2EiCi0KLSM6IGdpdC1ndWkuc2g6MjYxMAorIzogZ2l0LWd1aS5zaDozMDkyCiBtc2dpZCAiUmVmcmVzaCIKIG1zZ3N0ciAiRnJpc3PDrXTDqXMiCiAKLSM6IGdpdC1ndWkuc2g6MjYzMQorIzogZ2l0LWd1aS5zaDozMTEzCiBtc2dpZCAiRGVjcmVhc2UgRm9udCBTaXplIgogbXNnc3RyICJGb250IG3DqXJldCBjc8O2a2tlbnTDqXNlIgogCi0jOiBnaXQtZ3VpLnNoOjI2MzUKKyM6IGdpdC1ndWkuc2g6MzExNwogbXNnaWQgIkluY3JlYXNlIEZvbnQgU2l6ZSIKIG1zZ3N0ciAiRsO2bnQgbcOpcmV0IG7DtnZlbMOpc2UiCiAKLSM6IGdpdC1ndWkuc2g6MjY0NgorIzogZ2l0LWd1aS5zaDozMTI1IGxpYi9ibGFtZS50Y2w6MjgxCittc2dpZCAiRW5jb2RpbmciCittc2dzdHIgIkvDs2RvbMOhcyIKKworIzogZ2l0LWd1aS5zaDozMTM2Cittc2dpZCAiQXBwbHkvUmV2ZXJzZSBIdW5rIgorbXNnc3RyICJIdW5rIGFsa2FsbWF6w6FzYS92aXNzemHDoWxsw610w6FzYSIKKworIzogZ2l0LWd1aS5zaDozMTQxCittc2dpZCAiQXBwbHkvUmV2ZXJzZSBMaW5lIgorbXNnc3RyICJTb3IgYWxrYWxtYXrDoXNhL3Zpc3N6YcOhbGzDrXTDoXNhIgorCisjOiBnaXQtZ3VpLnNoOjMxNTEKK21zZ2lkICJSdW4gTWVyZ2UgVG9vbCIKK21zZ3N0ciAiTWVyZ2UgZXN6a8O2eiBmdXR0YXTDoXNhIgorCisjOiBnaXQtZ3VpLnNoOjMxNTYKK21zZ2lkICJVc2UgUmVtb3RlIFZlcnNpb24iCittc2dzdHIgIlTDoXZvbGkgdmVyemnDsyBoYXN6bsOhbGF0YSIKKworIzogZ2l0LWd1aS5zaDozMTYwCittc2dpZCAiVXNlIExvY2FsIFZlcnNpb24iCittc2dzdHIgIkhlbHlpIHZlcnppw7MgaGFzem7DoWxhdGEiCisKKyM6IGdpdC1ndWkuc2g6MzE2NAorbXNnaWQgIlJldmVydCBUbyBCYXNlIgorbXNnc3RyICJWaXNzemHDoWxsw610w6FzIGF6IGFsYXBob3oiCisKKyM6IGdpdC1ndWkuc2g6MzE4MwogbXNnaWQgIlVuc3RhZ2UgSHVuayBGcm9tIENvbW1pdCIKIG1zZ3N0ciAiSHVuayB0w7ZybMOpc2UgY29tbWl0YsOzbCIKIAotIzogZ2l0LWd1aS5zaDoyNjQ4CisjOiBnaXQtZ3VpLnNoOjMxODQKK21zZ2lkICJVbnN0YWdlIExpbmUgRnJvbSBDb21taXQiCittc2dzdHIgIkEgc29yIGtpdsOhbGFzenTDoXPDoW5hayB0w7ZybMOpc2UiCisKKyM6IGdpdC1ndWkuc2g6MzE4NgogbXNnaWQgIlN0YWdlIEh1bmsgRm9yIENvbW1pdCIKIG1zZ3N0ciAiSHVuayBraXbDoWxhc3p0w6FzYSBjb21taXRiYSIKIAotIzogZ2l0LWd1aS5zaDoyNjY3CisjOiBnaXQtZ3VpLnNoOjMxODcKK21zZ2lkICJTdGFnZSBMaW5lIEZvciBDb21taXQiCittc2dzdHIgIlNvciBraXbDoWxhc3p0w6FzYSBjb21taXRiYSIKKworIzogZ2l0LWd1aS5zaDozMjEwCiBtc2dpZCAiSW5pdGlhbGl6aW5nLi4uIgogbXNnc3RyICJJbmljaWFsaXrDoWzDoXMuLi4iCiAKLSM6IGdpdC1ndWkuc2g6Mjc2MgorIzogZ2l0LWd1aS5zaDozMzE1CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIlBvc3NpYmxlIGVudmlyb25tZW50IGlzc3VlcyBleGlzdC5cbiIKQEAgLTQ1MCw3ICs1MTYsNyBAQAogImluZMOtdG90dCBmb2x5YW1hdG9rIMOhbHRhbDpcbiIKICJcbiIKIAotIzogZ2l0LWd1aS5zaDoyNzkyCisjOiBnaXQtZ3VpLnNoOjMzNDUKIG1zZ2lkICIiCiAiXG4iCiAiVGhpcyBpcyBkdWUgdG8gYSBrbm93biBpc3N1ZSB3aXRoIHRoZVxuIgpAQCAtNDYwLDcgKzUyNiw3IEBACiAiRXogYSBDeWd3aW4gw6FsdGFsIHRlcmplc3p0ZXR0IFRjbCBiaW7DoXJpc2JhblxuIgogImzDqXbFkSBpc21lcnQgaGliYSBtaWF0dCB2YW4uIgogCi0jOiBnaXQtZ3VpLnNoOjI3OTcKKyM6IGdpdC1ndWkuc2g6MzM1MAogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKQEAgLTQ4MSw2NCArNTQ3LDEwOCBAQAogbXNnaWQgImdpdC1ndWkgLSBhIGdyYXBoaWNhbCB1c2VyIGludGVyZmFjZSBmb3IgR2l0LiIKIG1zZ3N0ciAiZ2l0LWd1aSAtIGVneSBncmFmaWt1cyBmZWzDvGxldCBhIEdpdGhlei4iCiAKLSM6IGxpYi9ibGFtZS50Y2w6NzcKKyM6IGxpYi9ibGFtZS50Y2w6NzIKIG1zZ2lkICJGaWxlIFZpZXdlciIKIG1zZ3N0ciAiRsOhamwgbsOpesWRIgogCi0jOiBsaWIvYmxhbWUudGNsOjgxCisjOiBsaWIvYmxhbWUudGNsOjc4CiBtc2dpZCAiQ29tbWl0OiIKIG1zZ3N0ciAiQ29tbWl0OiIKIAotIzogbGliL2JsYW1lLnRjbDoyNjQKKyM6IGxpYi9ibGFtZS50Y2w6MjcxCiBtc2dpZCAiQ29weSBDb21taXQiCiBtc2dzdHIgIkNvbW1pdCBtw6Fzb2zDoXNhIgogCi0jOiBsaWIvYmxhbWUudGNsOjM4NAorIzogbGliL2JsYW1lLnRjbDoyNzUKK21zZ2lkICJGaW5kIFRleHQuLi4iCittc2dzdHIgIlN6w7Z2ZWcga2VyZXPDqXNlLi4uIgorCisjOiBsaWIvYmxhbWUudGNsOjI4NAorbXNnaWQgIkRvIEZ1bGwgQ29weSBEZXRlY3Rpb24iCittc2dzdHIgIlRlbGplcyBtw6Fzb2xhdC3DqXJ6w6lrZWzDqXMgYmVrYXBjc29sw6FzYSIKKworIzogbGliL2JsYW1lLnRjbDoyODgKK21zZ2lkICJTaG93IEhpc3RvcnkgQ29udGV4dCIKK21zZ3N0ciAiVMO2cnTDqW5ldGkga8O2cm55ZXpldCBtdXRhdMOhc2EiCisKKyM6IGxpYi9ibGFtZS50Y2w6MjkxCittc2dpZCAiQmxhbWUgUGFyZW50IENvbW1pdCIKK21zZ3N0ciAiU3rDvGzFkSBjb21taXQgdml6c2fDoWxhdGEiCisKKyM6IGxpYi9ibGFtZS50Y2w6NDUwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmVhZGluZyAlcy4uLiIKIG1zZ3N0ciAiQSh6KSAlcyBvbHZhc8Ohc2EuLi4iCiAKLSM6IGxpYi9ibGFtZS50Y2w6NDg4CisjOiBsaWIvYmxhbWUudGNsOjU1NwogbXNnaWQgIkxvYWRpbmcgY29weS9tb3ZlIHRyYWNraW5nIGFubm90YXRpb25zLi4uIgogbXNnc3RyICJBIG3DoXNvbMOhc3Qvw6F0bmV2ZXrDqXN0IGvDtnZldMWRIGFubm90w6FjacOzayBiZXTDtmx0w6lzZS4uLiIKIAotIzogbGliL2JsYW1lLnRjbDo1MDgKKyM6IGxpYi9ibGFtZS50Y2w6NTc3CiBtc2dpZCAibGluZXMgYW5ub3RhdGVkIgogbXNnc3RyICJzb3IgYW5ub3TDoWx2YSIKIAotIzogbGliL2JsYW1lLnRjbDo2ODkKKyM6IGxpYi9ibGFtZS50Y2w6NzY5CiBtc2dpZCAiTG9hZGluZyBvcmlnaW5hbCBsb2NhdGlvbiBhbm5vdGF0aW9ucy4uLiIKIG1zZ3N0ciAiQXogZXJlZGV0aSBoZWx5IGFubm90w6FjacOzayBiZXTDtmx0w6lzZS4uLiIKIAotIzogbGliL2JsYW1lLnRjbDo2OTIKKyM6IGxpYi9ibGFtZS50Y2w6NzcyCiBtc2dpZCAiQW5ub3RhdGlvbiBjb21wbGV0ZS4iCiBtc2dzdHIgIkF6IGFubm90w6FjacOzIGvDqXN6LiIKIAotIzogbGliL2JsYW1lLnRjbDo3NDYKKyM6IGxpYi9ibGFtZS50Y2w6ODAyCittc2dpZCAiQnVzeSIKK21zZ3N0ciAiRWxmb2dsYWx0IgorCisjOiBsaWIvYmxhbWUudGNsOjgwMworbXNnaWQgIkFubm90YXRpb24gcHJvY2VzcyBpcyBhbHJlYWR5IHJ1bm5pbmcuIgorbXNnc3RyICJBeiBhbm5vdMOhY2nDs3MgZm9seWFtYXQgbcOhciBmdXQuIgorCisjOiBsaWIvYmxhbWUudGNsOjg0MgorbXNnaWQgIlJ1bm5pbmcgdGhvcm91Z2ggY29weSBkZXRlY3Rpb24uLi4iCittc2dzdHIgIkZ1dHRhdMOhcyBtw6Fzb2zDoXMtw6lyesOpa2Vsw6lzZW4ga2VyZXN6dMO8bC4uLiIKKworIzogbGliL2JsYW1lLnRjbDo5MTAKIG1zZ2lkICJMb2FkaW5nIGFubm90YXRpb24uLi4iCiBtc2dzdHIgIkF6IGFubm90w6FjacOzIGJldMO2bHTDqXNlLi4uIgogCi0jOiBsaWIvYmxhbWUudGNsOjgwMgorIzogbGliL2JsYW1lLnRjbDo5NjMKIG1zZ2lkICJBdXRob3I6IgogbXNnc3RyICJTemVyesWROiIKIAotIzogbGliL2JsYW1lLnRjbDo4MDYKKyM6IGxpYi9ibGFtZS50Y2w6OTY3CiBtc2dpZCAiQ29tbWl0dGVyOiIKIG1zZ3N0ciAiQ29tbWl0ZXI6IgogCi0jOiBsaWIvYmxhbWUudGNsOjgxMQorIzogbGliL2JsYW1lLnRjbDo5NzIKIG1zZ2lkICJPcmlnaW5hbCBGaWxlOiIKIG1zZ3N0ciAiRXJlZGV0aSBmw6FqbDoiCiAKLSM6IGxpYi9ibGFtZS50Y2w6OTI1CisjOiBsaWIvYmxhbWUudGNsOjEwMjAKK21zZ2lkICJDYW5ub3QgZmluZCBIRUFEIGNvbW1pdDoiCittc2dzdHIgIk5lbSB0YWzDoWxoYXTDsyBhIEhFQUQgY29tbWl0OiIKKworIzogbGliL2JsYW1lLnRjbDoxMDc1Cittc2dpZCAiQ2Fubm90IGZpbmQgcGFyZW50IGNvbW1pdDoiCittc2dzdHIgIk5lbSB0YWzDoWxoYXTDsyBhIHN6w7xsxZEgY29tbWl0OiIKKworIzogbGliL2JsYW1lLnRjbDoxMDkwCittc2dpZCAiVW5hYmxlIHRvIGRpc3BsYXkgcGFyZW50IgorbXNnc3RyICJOZW0gbGVoZXQgbWVnamVsZW7DrXRlbmkgYSBzesO8bMWRdCIKKworIzogbGliL2JsYW1lLnRjbDoxMDkxIGxpYi9kaWZmLnRjbDoyOTcKK21zZ2lkICJFcnJvciBsb2FkaW5nIGRpZmY6IgorbXNnc3RyICJIaWJhIGEgZGlmZiBiZXTDtmx0w6lzZSBrw7Z6YmVuOiIKKworIzogbGliL2JsYW1lLnRjbDoxMjMxCiBtc2dpZCAiT3JpZ2luYWxseSBCeToiCiBtc2dzdHIgIkVyZWRldGkgc3plcnrFkToiCiAKLSM6IGxpYi9ibGFtZS50Y2w6OTMxCisjOiBsaWIvYmxhbWUudGNsOjEyMzcKIG1zZ2lkICJJbiBGaWxlOiIKIG1zZ3N0ciAiRWJiZW4gYSBmw6FqbGJhbjoiCiAKLSM6IGxpYi9ibGFtZS50Y2w6OTM2CisjOiBsaWIvYmxhbWUudGNsOjEyNDIKIG1zZ2lkICJDb3BpZWQgT3IgTW92ZWQgSGVyZSBCeToiCiBtc2dzdHIgIklkZSBtw6Fzb2x0YSB2YWd5IGhlbHllenRlOiIKIApAQCAtNTUyLDE2ICs2NjIsMTggQEAKIAogIzogbGliL2JyYW5jaF9jaGVja291dC50Y2w6MjcgbGliL2JyYW5jaF9jcmVhdGUudGNsOjM1CiAjOiBsaWIvYnJhbmNoX2RlbGV0ZS50Y2w6MzIgbGliL2JyYW5jaF9yZW5hbWUudGNsOjMwIGxpYi9icm93c2VyLnRjbDoyODIKLSM6IGxpYi9jaGVja291dF9vcC50Y2w6NTIyIGxpYi9jaG9vc2VfZm9udC50Y2w6NDMgbGliL21lcmdlLnRjbDoxNzEKLSM6IGxpYi9vcHRpb24udGNsOjEwMyBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjQyIGxpYi90cmFuc3BvcnQudGNsOjk3CisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjU0NCBsaWIvY2hvb3NlX2ZvbnQudGNsOjQzIGxpYi9tZXJnZS50Y2w6MTcyCisjOiBsaWIvb3B0aW9uLnRjbDoxMjUgbGliL3JlbW90ZV9hZGQudGNsOjMyIGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NDIKKyM6IGxpYi90b29sc19kbGcudGNsOjQwIGxpYi90b29sc19kbGcudGNsOjIwNCBsaWIvdG9vbHNfZGxnLnRjbDozNTIKKyM6IGxpYi90cmFuc3BvcnQudGNsOjEwOAogbXNnaWQgIkNhbmNlbCIKIG1zZ3N0ciAiTcOpZ3NlbSIKIAotIzogbGliL2JyYW5jaF9jaGVja291dC50Y2w6MzIgbGliL2Jyb3dzZXIudGNsOjI4NworIzogbGliL2JyYW5jaF9jaGVja291dC50Y2w6MzIgbGliL2Jyb3dzZXIudGNsOjI4NyBsaWIvdG9vbHNfZGxnLnRjbDozMjgKIG1zZ2lkICJSZXZpc2lvbiIKIG1zZ3N0ciAiUmV2w616acOzIgogCi0jOiBsaWIvYnJhbmNoX2NoZWNrb3V0LnRjbDozNiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6NjkgbGliL29wdGlvbi50Y2w6MjQyCisjOiBsaWIvYnJhbmNoX2NoZWNrb3V0LnRjbDozNiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6NjkgbGliL29wdGlvbi50Y2w6MjgwCiBtc2dpZCAiT3B0aW9ucyIKIG1zZ3N0ciAiT3BjacOzayIKIApAQCAtNTgxLDcgKzY5Myw3IEBACiBtc2dpZCAiQ3JlYXRlIE5ldyBCcmFuY2giCiBtc2dzdHIgIsOaaiBicmFuY2ggbMOpdHJlaG96w6FzYSIKIAotIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjMxIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzcxCisjOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6MzEgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozNzcKIG1zZ2lkICJDcmVhdGUiCiBtc2dzdHIgIkzDqXRyZWhvesOhcyIKIApAQCAtNTg5LDcgKzcwMSw3IEBACiBtc2dpZCAiQnJhbmNoIE5hbWUiCiBtc2dzdHIgIkJyYW5jaCBuZXZlIgogCi0jOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6NDMKKyM6IGxpYi9icmFuY2hfY3JlYXRlLnRjbDo0MyBsaWIvcmVtb3RlX2FkZC50Y2w6MzkgbGliL3Rvb2xzX2RsZy50Y2w6NTAKIG1zZ2lkICJOYW1lOiIKIG1zZ3N0ciAiTsOpdjoiCiAKQEAgLTYxMyw3ICs3MjUsNyBAQAogbXNnaWQgIkZhc3QgRm9yd2FyZCBPbmx5IgogbXNnc3RyICJDc2FrIGZhc3QgZm9yd2FyZCIKIAotIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjg1IGxpYi9jaGVja291dF9vcC50Y2w6NTE0CisjOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6ODUgbGliL2NoZWNrb3V0X29wLnRjbDo1MzYKIG1zZ2lkICJSZXNldCIKIG1zZ3N0ciAiVmlzc3phw6FsbMOtdMOhcyIKIApAQCAtNzAzLDcgKzgxNSw3IEBACiBtc2dpZCAiUGxlYXNlIHNlbGVjdCBhIGJyYW5jaCB0byByZW5hbWUuIgogbXNnc3RyICJWw6FsYXNzenVuayBraSBlZ3kgw6F0bmV2ZXplbmTFkSBicmFuY2hldC4iCiAKLSM6IGxpYi9icmFuY2hfcmVuYW1lLnRjbDo5NiBsaWIvY2hlY2tvdXRfb3AudGNsOjE3OQorIzogbGliL2JyYW5jaF9yZW5hbWUudGNsOjk2IGxpYi9jaGVja291dF9vcC50Y2w6MjAxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQnJhbmNoICclcycgYWxyZWFkeSBleGlzdHMuIgogbXNnc3RyICJBKHopICclcycgYnJhbmNoIG3DoXIgbMOpdGV6aWsuIgpAQCAtNzM0LDMyICs4NDYsMzkgQEAKIG1zZ2lkICJCcm93c2UgQnJhbmNoIEZpbGVzIgogbXNnc3RyICJBIGJyYW5jaCBmw6FqbGphaW5hayBiw7ZuZ8Opc3rDqXNlIgogCi0jOiBsaWIvYnJvd3Nlci50Y2w6Mjc4IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Mzg3Ci0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ3NCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ4NAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5ODcKKyM6IGxpYi9icm93c2VyLnRjbDoyNzggbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozOTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDgwIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDkxCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk5NQogbXNnaWQgIkJyb3dzZSIKIG1zZ3N0ciAiQsO2bmfDqXN6w6lzIgogCi0jOiBsaWIvY2hlY2tvdXRfb3AudGNsOjc5CisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjg0CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiRmV0Y2hpbmcgJXMgZnJvbSAlcyIKIG1zZ3N0ciAiQSh6KSAlcyBsZXTDtmx0w6lzZSBpbm5lbjogJXMiCiAKLSM6IGxpYi9jaGVja291dF9vcC50Y2w6MTI3CisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjEzMgogIywgdGNsLWZvcm1hdAogbXNnaWQgImZhdGFsOiBDYW5ub3QgcmVzb2x2ZSAlcyIKIG1zZ3N0ciAidsOpZ3pldGVzOiBOZW0gbGVoZXQgZmVsb2xkYW5pIGEga8O2dmV0a2V6xZF0OiAlcyIKIAotIzogbGliL2NoZWNrb3V0X29wLnRjbDoxNDAgbGliL2NvbnNvbGUudGNsOjgxIGxpYi9kYXRhYmFzZS50Y2w6MzEKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6MTQ1IGxpYi9jb25zb2xlLnRjbDo4MSBsaWIvZGF0YWJhc2UudGNsOjMxCisjOiBsaWIvc3Noa2V5LnRjbDo1MwogbXNnaWQgIkNsb3NlIgogbXNnc3RyICJCZXrDoXLDoXMiCiAKLSM6IGxpYi9jaGVja291dF9vcC50Y2w6MTY5CisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjE3NAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkJyYW5jaCAnJXMnIGRvZXMgbm90IGV4aXN0LiIKIG1zZ3N0ciAiQSh6KSAnJXMnIGJyYW5jaCBuZW0gbMOpdGV6aWsuIgogCi0jOiBsaWIvY2hlY2tvdXRfb3AudGNsOjIwNgorIzogbGliL2NoZWNrb3V0X29wLnRjbDoxOTMKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gY29uZmlndXJlIHNpbXBsaWZpZWQgZ2l0LXB1bGwgZm9yICclcycuIgorbXNnc3RyICIiCisiTmVtIHNpa2Vyw7xsdCBiZcOhbGzDrXRhbmkgYXogZWd5c3plcsWxc8OtdGV0dCBnaXQtcHVsbC10IGEoeikgJyVzJyBzesOhbcOhcmEuIgorCisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjIyOAogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJCcmFuY2ggJyVzJyBhbHJlYWR5IGV4aXN0cy5cbiIKQEAgLTc3MiwyMSArODkxLDIxIEBACiAiTmVtIGxlaGV0IGZhc3QtZm9yd2FyZG9sbmkgYSBrw7Z2ZXRrZXrFkWjDtno6ICVzLlxuIgogIkVneSBtZXJnZSBzesO8a3PDqWdlcy4iCiAKLSM6IGxpYi9jaGVja291dF9vcC50Y2w6MjIwCisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjI0MgogIywgdGNsLWZvcm1hdAogbXNnaWQgIk1lcmdlIHN0cmF0ZWd5ICclcycgbm90IHN1cHBvcnRlZC4iCiBtc2dzdHIgIkEoeikgJyVzJyBtZXJnZSBzdHJhdGVneSBuZW0gdMOhbW9nYXRvdHQuIgogCi0jOiBsaWIvY2hlY2tvdXRfb3AudGNsOjIzOQorIzogbGliL2NoZWNrb3V0X29wLnRjbDoyNjEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gdXBkYXRlICclcycuIgogbXNnc3RyICJOZW0gc2lrZXLDvGx0IGZyaXNzw610ZW5pIGEga8O2dmV0a2V6xZF0OiAnJXMnLiIKIAotIzogbGliL2NoZWNrb3V0X29wLnRjbDoyNTEKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6MjczCiBtc2dpZCAiU3RhZ2luZyBhcmVhIChpbmRleCkgaXMgYWxyZWFkeSBsb2NrZWQuIgogbXNnc3RyICJBIGtpdsOhbGFzenTDoXNpIHRlcsO8bGV0IChpbmRleCkgbcOhciB6w6Fyb2x2YSB2YW4uIgogCi0jOiBsaWIvY2hlY2tvdXRfb3AudGNsOjI2NgorIzogbGliL2NoZWNrb3V0X29wLnRjbDoyODgKIG1zZ2lkICIiCiAiTGFzdCBzY2FubmVkIHN0YXRlIGRvZXMgbm90IG1hdGNoIHJlcG9zaXRvcnkgc3RhdGUuXG4iCiAiXG4iCkBAIC04MDMsMzAgKzkyMiwzMCBAQAogIlxuIgogIkF6IMO6anJha2VyZXPDqXMgbW9zdCBhdXRvbWF0aWt1c2FuIGVsIGZvZyBpbmR1bG5pLlxuIgogCi0jOiBsaWIvY2hlY2tvdXRfb3AudGNsOjMyMgorIzogbGliL2NoZWNrb3V0X29wLnRjbDozNDQKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJVcGRhdGluZyB3b3JraW5nIGRpcmVjdG9yeSB0byAnJXMnLi4uIgogbXNnc3RyICJBIG11bmtrw7ZueXZ0w6FyIGZyaXNzacOtdMOpc2UgYSBrw7Z2ZXRrZXrFkXJlOiAnJXMnLi4uIgogCi0jOiBsaWIvY2hlY2tvdXRfb3AudGNsOjMyMworIzogbGliL2NoZWNrb3V0X29wLnRjbDozNDUKIG1zZ2lkICJmaWxlcyBjaGVja2VkIG91dCIKIG1zZ3N0ciAiZsOhamwgZnJpc3PDrXR2ZSIKIAotIzogbGliL2NoZWNrb3V0X29wLnRjbDozNTMKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6Mzc1CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQWJvcnRlZCBjaGVja291dCBvZiAnJXMnIChmaWxlIGxldmVsIG1lcmdpbmcgaXMgcmVxdWlyZWQpLiIKIG1zZ3N0ciAiQSh6KSAnJXMnIGNoZWNrb3V0amEgbWVnc3pha8OtdHZhIChmw6FqbHN6aW50xbEgbWVyZ2Utw7Zsw6lzIHN6w7xrc8OpZ2VzKS4iCiAKLSM6IGxpYi9jaGVja291dF9vcC50Y2w6MzU0CisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjM3NgogbXNnaWQgIkZpbGUgbGV2ZWwgbWVyZ2UgcmVxdWlyZWQuIgogbXNnc3RyICJGw6FqbHN6aW50xbEgbWVyZ2Utw7Zsw6lzIHN6w7xrc8OpZ2VzLiIKIAotIzogbGliL2NoZWNrb3V0X29wLnRjbDozNTgKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6MzgwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiU3RheWluZyBvbiBicmFuY2ggJyVzJy4iCiBtc2dzdHIgIkplbGVubGVnIGEoeikgJyVzJyBicmFuY2hlbi4iCiAKLSM6IGxpYi9jaGVja291dF9vcC50Y2w6NDI5CisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjQ1MQogbXNnaWQgIiIKICJZb3UgYXJlIG5vIGxvbmdlciBvbiBhIGxvY2FsIGJyYW5jaC5cbiIKICJcbiIKQEAgLTgzOCwzMSArOTU3LDMxIEBACiAiSGEgZWd5IGJyYW5jaGVuIHN6ZXJldG7DqW5rIGxlbm5pLCBob3p6dW5rIGzDqXRyZSBlZ3lldCBheiAnRXogYSBsZXbDoWxhc3p0b3R0ICIKICJjaGVja291dCctYsOzbC4iCiAKLSM6IGxpYi9jaGVja291dF9vcC50Y2w6NDQ2IGxpYi9jaGVja291dF9vcC50Y2w6NDUwCisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjQ2OCBsaWIvY2hlY2tvdXRfb3AudGNsOjQ3MgogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNoZWNrZWQgb3V0ICclcycuIgogbXNnc3RyICInJXMnIGtpZmVqdHZlLiIKIAotIzogbGliL2NoZWNrb3V0X29wLnRjbDo0NzgKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6NTAwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmVzZXR0aW5nICclcycgdG8gJyVzJyB3aWxsIGxvc2UgdGhlIGZvbGxvd2luZyBjb21taXRzOiIKIG1zZ3N0ciAiIgogIkEoeikgJyVzJyAtPiAnJXMnIHZpc3N6YcOhbGzDrXTDoXMgYSBrw7Z2ZXRrZXrFkSBjb21taXRvayBlbHZlc3p0w6lzw6l0IGplbGVudGk6IgogCi0jOiBsaWIvY2hlY2tvdXRfb3AudGNsOjUwMAorIzogbGliL2NoZWNrb3V0X29wLnRjbDo1MjIKIG1zZ2lkICJSZWNvdmVyaW5nIGxvc3QgY29tbWl0cyBtYXkgbm90IGJlIGVhc3kuIgogbXNnc3RyICJBeiBlbHZlc3pldHQgY29tbWl0b2sgaGVseXJlw6FsbMOtdMOhc2EgbmVtIGJpenRvcywgaG9neSBlZ3lzemVyxbEuIgogCi0jOiBsaWIvY2hlY2tvdXRfb3AudGNsOjUwNQorIzogbGliL2NoZWNrb3V0X29wLnRjbDo1MjcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJSZXNldCAnJXMnPyIKIG1zZ3N0ciAiVmlzc3phw6FsbMOtdGp1ayBhIGvDtnZldGtlesWRdDogJyVzJz8iCiAKLSM6IGxpYi9jaGVja291dF9vcC50Y2w6NTEwIGxpYi9tZXJnZS50Y2w6MTYzCisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjUzMiBsaWIvbWVyZ2UudGNsOjE2NCBsaWIvdG9vbHNfZGxnLnRjbDozNDMKIG1zZ2lkICJWaXN1YWxpemUiCiBtc2dzdHIgIlZpenVhbGl6w6Fsw6FzIgogCi0jOiBsaWIvY2hlY2tvdXRfb3AudGNsOjU3OAorIzogbGliL2NoZWNrb3V0X29wLnRjbDo2MDAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiRmFpbGVkIHRvIHNldCBjdXJyZW50IGJyYW5jaC5cbiIKQEAgLTkwNywyMjMgKzEwMjYsMjI3IEBACiBtc2dpZCAiR2l0IEd1aSIKIG1zZ3N0ciAiR2l0IEd1aSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4MSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM3NgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM4MgogbXNnaWQgIkNyZWF0ZSBOZXcgUmVwb3NpdG9yeSIKIG1zZ3N0ciAiw5pqIHJlcMOzIGzDqXRyZWhvesOhc2EiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTMKIG1zZ2lkICJOZXcuLi4iCiBtc2dzdHIgIsOaai4uLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ2MAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDAgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NjUKIG1zZ2lkICJDbG9uZSBFeGlzdGluZyBSZXBvc2l0b3J5IgogbXNnc3RyICJMw6l0ZXrFkSByZXDDsyBtw6Fzb2zDoXNhIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDYKIG1zZ2lkICJDbG9uZS4uLiIKIG1zZ3N0ciAiTcOhc29sw6FzLi4uIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwNyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk3NgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMTMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5ODMKIG1zZ2lkICJPcGVuIEV4aXN0aW5nIFJlcG9zaXRvcnkiCiBtc2dzdHIgIkzDqXRlesWRIGvDtm55dnTDoXIgbWVnbnlpdMOhc2EiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTEzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjExOQogbXNnaWQgIk9wZW4uLi4iCiBtc2dzdHIgIk1lZ2d5aXTDoXMuLi4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTI2CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEzMgogbXNnaWQgIlJlY2VudCBSZXBvc2l0b3JpZXMiCiBtc2dzdHIgIkxlZ3V0w7NiYmkgcmVww7NrIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEzMgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMzgKIG1zZ2lkICJPcGVuIFJlY2VudCBSZXBvc2l0b3J5OiIKIG1zZ3N0ciAiTGVndXTDs2JiaSByZXDDs2sgbWVnbnlpdMOhc2E6IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjI5NiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjMwMwotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozMTAKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzAyIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzA5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjMxNgogIywgdGNsLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byBjcmVhdGUgcmVwb3NpdG9yeSAlczoiCiBtc2dzdHIgIk5lbSBzaWtlcsO8bHQgbGV0cmVob3puaSBhKHopICVzIHJlcMOzdDoiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzgxIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDc4CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM4NwogbXNnaWQgIkRpcmVjdG9yeToiCiBtc2dzdHIgIkvDtm55dnTDoXI6IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQxMiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUzNwotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDExCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQxNyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU0NAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDE3CiBtc2dpZCAiR2l0IFJlcG9zaXRvcnkiCiBtc2dzdHIgIkdpdCByZXDDsyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0MzcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiRGlyZWN0b3J5ICVzIGFscmVhZHkgZXhpc3RzLiIKIG1zZ3N0ciAiQSh6KSAnJXMnIGvDtm55dnTDoXIgbcOhciBsw6l0ZXppay4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQxCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ0NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIkZpbGUgJXMgYWxyZWFkeSBleGlzdHMuIgogbXNnc3RyICJBKHopICclcycgZsOhamwgbcOhciBsw6l0ZXppay4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDU1CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ2MAogbXNnaWQgIkNsb25lIgogbXNnc3RyICJCZXrDoXLDoXMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDY4Ci1tc2dpZCAiVVJMOiIKLW1zZ3N0ciAiVVJMOiIKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDczCittc2dpZCAiU291cmNlIExvY2F0aW9uOiIKK21zZ3N0ciAiRm9ycsOhcyBoZWx5ZToiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDg5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ4NAorbXNnaWQgIlRhcmdldCBEaXJlY3Rvcnk6IgorbXNnc3RyICJDw6lsIGvDtm55dnTDoXI6IgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ5NgogbXNnaWQgIkNsb25lIFR5cGU6IgogbXNnc3RyICJNw6Fzb2zDoXMgdMOtcHVzYToiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDk1CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwMgogbXNnaWQgIlN0YW5kYXJkIChGYXN0LCBTZW1pLVJlZHVuZGFudCwgSGFyZGxpbmtzKSIKIG1zZ3N0ciAiw4FsdGFsw6Fub3MgKEd5b3JzLCBmw6lsaWctcmVkdW5kw6FucywgaGFyZGxpbmtlaykiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTAxCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwOAogbXNnaWQgIkZ1bGwgQ29weSAoU2xvd2VyLCBSZWR1bmRhbnQgQmFja3VwKSIKIG1zZ3N0ciAiVGVsamVzIG3DoXNvbMOhcyAoTGFzc2FiYiwgcmVkdW5kw6FucyBiaXp0b25zw6FnaSBtZW50w6lzKSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MDcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTE0CiBtc2dpZCAiU2hhcmVkIChGYXN0ZXN0LCBOb3QgUmVjb21tZW5kZWQsIE5vIEJhY2t1cCkiCiBtc2dzdHIgIk1lZ29zenRvdHQgKExlZ2d5b3JzYWJiLCBuZW0gYWrDoW5sb3R0LCBuaW5jcyBtZW50w6lzKSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1NDMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1OTAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzM2IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODA2Ci0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMTcgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDI1CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU1MCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU5NworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NDMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4MTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAyMyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMzEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJOb3QgYSBHaXQgcmVwb3NpdG9yeTogJXMiCiBtc2dzdHIgIk5lbSBHaXQgcmVww7M6ICVzIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU3OQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1ODYKIG1zZ2lkICJTdGFuZGFyZCBvbmx5IGF2YWlsYWJsZSBmb3IgbG9jYWwgcmVwb3NpdG9yeS4iCiBtc2dzdHIgIkEgc3RhbmRhcmQgY3NhayBoZWx5aSByZXDDs2tyYSDDqXJoZXTFkSBlbC4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTgzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU5MAogbXNnaWQgIlNoYXJlZCBvbmx5IGF2YWlsYWJsZSBmb3IgbG9jYWwgcmVwb3NpdG9yeS4iCiBtc2dzdHIgIkEgbWVnb3N6dG90dCBjc2FrIGhlbHlpIHJlcMOza3JhIMOpcmhldMWRIGVsLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MDQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjExCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiTG9jYXRpb24gJXMgYWxyZWFkeSBleGlzdHMuIgogbXNnc3RyICJBKHopICclcycgaGVseSBtw6FyIGzDqXRlemlrLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MTUKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjIyCiBtc2dpZCAiRmFpbGVkIHRvIGNvbmZpZ3VyZSBvcmlnaW4iCiBtc2dzdHIgIk5lbSBzaWtlcsO8bHQgYmXDoWxsw610YW5pIGF6IG9yaWdpbnQiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjI3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYzNAogbXNnaWQgIkNvdW50aW5nIG9iamVjdHMiCiBtc2dzdHIgIk9iamVrdHVtb2sgc3rDoW1vbMOhc2EiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjI4CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYzNQogbXNnaWQgImJ1Y2tldHMiCiBtc2dzdHIgInbDtmRyw7ZrIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjY1MgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2NTkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gY29weSBvYmplY3RzL2luZm8vYWx0ZXJuYXRlczogJXMiCiBtc2dzdHIgIk5lbSBzaWtlcsO8bHQgbcOhc29sbmkgYXogb2JqZWN0cy9pbmZvL2FsdGVybmF0ZXMtdDogJXMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Njg4CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjY5NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIk5vdGhpbmcgdG8gY2xvbmUgZnJvbSAlcy4iCiBtc2dzdHIgIlNlbW1pIG3DoXNvbG5pIHZhbMOzIG5pbmNzIGlubmVuOiAlcyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2OTAgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MDQKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTE2CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjY5NyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkxMQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MjMKIG1zZ2lkICJUaGUgJ21hc3RlcicgYnJhbmNoIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZC4iCiBtc2dzdHIgIkEgJ21hc3RlcicgYnJhbmNoIG5pbmNzIGluaWNpYWxpesOhbHZhLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3MDMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzEwCiBtc2dpZCAiSGFyZGxpbmtzIGFyZSB1bmF2YWlsYWJsZS4gIEZhbGxpbmcgYmFjayB0byBjb3B5aW5nLiIKIG1zZ3N0ciAiTmVtIMOpcmhldMWRZWsgZWwgaGFyZGxpbmtlay4gIE3DoXNvbMOhcyBoYXN6bsOhbGF0YS4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzE1CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjcyMgogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNsb25pbmcgZnJvbSAlcyIKIG1zZ3N0ciAiTcOhc29sw6FzIGlubmVuOiAlcyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NDYKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzUzCiBtc2dpZCAiQ29weWluZyBvYmplY3RzIgogbXNnc3RyICJPYmpla3R1bW9rIG3DoXNvbMOhc2EiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzQ3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc1NAogbXNnaWQgIktpQiIKIG1zZ3N0ciAiS2lCIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc3MQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NzgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gY29weSBvYmplY3Q6ICVzIgogbXNnc3RyICJOZW0gc2lrZXLDvGx0IG3DoXNvbG5pIGF6IG9iamVrdHVtb3Q6ICVzIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc4MQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3ODgKIG1zZ2lkICJMaW5raW5nIG9iamVjdHMiCiBtc2dzdHIgIk9iamVrdHVtb2sgw7Zzc3plZsWxesOpc2UiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzgyCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc4OQogbXNnaWQgIm9iamVjdHMiCiBtc2dzdHIgIm9iamVrdHVtIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc5MAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3OTcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gaGFyZGxpbmsgb2JqZWN0OiAlcyIKIG1zZ3N0ciAiTmVtIHNpa2Vyw7xsdCBoYXJkbGlua2VsbmkgYXogb2JqZWt0dW1vdDogJXMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODQ1CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg1MgogbXNnaWQgIkNhbm5vdCBmZXRjaCBicmFuY2hlcyBhbmQgb2JqZWN0cy4gIFNlZSBjb25zb2xlIG91dHB1dCBmb3IgZGV0YWlscy4iCiBtc2dzdHIgIiIKICJOZW0gc2lrZXLDvGx0IGxldMO2bHRlbmkgYSBicmFuY2gtZWtldCDDqXMgYXogb2JqZWt0dW1va2F0LiAgQsWRdmViYmVuIGEgIgogImtvbnpvbG9zIGtpbWVuZXRiZW4uIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg1NgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NjMKIG1zZ2lkICJDYW5ub3QgZmV0Y2ggdGFncy4gIFNlZSBjb25zb2xlIG91dHB1dCBmb3IgZGV0YWlscy4iCiBtc2dzdHIgIk5lbSBzaWtlcsO8bHQgbGV0w7ZsdGVuaSBhIHRhZ2VrZXQuICBCxZF2ZWJiZW4gYSBrb256b2xvcyBraW1lbmV0YmVuLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4ODAKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODg3CiBtc2dpZCAiQ2Fubm90IGRldGVybWluZSBIRUFELiAgU2VlIGNvbnNvbGUgb3V0cHV0IGZvciBkZXRhaWxzLiIKIG1zZ3N0ciAiTmVtIHNpa2Vyw7xsdCBtZWfDoWxsYXDDrXRhbmkgYSBIRUFELWV0LiAgQsWRdmViYmVuIGEga29uem9sb3Mga2ltZW5ldGJlbi4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODg5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg5NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBjbGVhbnVwICVzIgogbXNnc3RyICJOZW0gc2lrZXLDvGx0IHRpc3rDrXRhbmk6ICVzLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4OTUKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTAyCiBtc2dpZCAiQ2xvbmUgZmFpbGVkLiIKIG1zZ3N0ciAiQSBtw6Fzb2zDoXMgbmVtIHNpa2Vyw7xsdC4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTAyCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkwOQogbXNnaWQgIk5vIGRlZmF1bHQgYnJhbmNoIG9idGFpbmVkLiIKIG1zZ3N0ciAiTmluY3MgYWxhcMOpcnRlbG1lemV0dCBicmFuY2guIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkxMworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MjAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgcmVzb2x2ZSAlcyBhcyBhIGNvbW1pdC4iCiBtc2dzdHIgIk5lbSBzaWtlcsO8bHQgZmVsw7ZsZGFuaSBhKHopICVzIG9iamVrdHVtb3QgY29tbWl0a8OpbnQuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkyNQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MzIKIG1zZ2lkICJDcmVhdGluZyB3b3JraW5nIGRpcmVjdG9yeSIKIG1zZ3N0ciAiTXVua2Frw7ZueXZ0w6FyIGzDqXRyZWhvesOhc2EiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTI2IGxpYi9pbmRleC50Y2w6NjUgbGliL2luZGV4LnRjbDoxMjcKLSM6IGxpYi9pbmRleC50Y2w6MTkzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkzMyBsaWIvaW5kZXgudGNsOjY1IGxpYi9pbmRleC50Y2w6MTI4CisjOiBsaWIvaW5kZXgudGNsOjE5NgogbXNnaWQgImZpbGVzIgogbXNnc3RyICJmw6FqbCIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NTUKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTYyCiBtc2dpZCAiSW5pdGlhbCBmaWxlIGNoZWNrb3V0IGZhaWxlZC4iCiBtc2dzdHIgIkEga2V6ZGV0aSBmw6FqbC1raWJvbnTDoXMgc2lrZXJ0ZWxlbi4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTcxCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk3OAogbXNnaWQgIk9wZW4iCiBtc2dzdHIgIk1lZ255aXTDoXMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTgxCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk4OAogbXNnaWQgIlJlcG9zaXRvcnk6IgogbXNnc3RyICJSZXDDszoiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAzMQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDM3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIG9wZW4gcmVwb3NpdG9yeSAlczoiCiBtc2dzdHIgIk5lbSBzaWtlcsO8bHQgbWVnbnlpdG5pIGEoeikgJXMgcmVww7N0OiIKQEAgLTExOTQsMTkgKzEzMTcsMTkgQEAKICJBIGplbGVubGVnaSBtZXJnZSBtw6lnIG5lbSB0ZWxqZXNlbiBmZWplesWRZMO2dHQgYmUuIENzYWsgYWtrb3IgamF2w610aGF0IGVneSAiCiAiZWzFkWJiaSBjb21taXRvdCwgaG9neWhhIG1lZ3N6YWvDrXRqYSBhIGplbGVubGVnaSBtZXJnZSBmb2x5YW1hdG90LlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDo0OQorIzogbGliL2NvbW1pdC50Y2w6NDgKIG1zZ2lkICJFcnJvciBsb2FkaW5nIGNvbW1pdCBkYXRhIGZvciBhbWVuZDoiCiBtc2dzdHIgIkhpYmEgYSBqYXbDrXRhbmTDsyBjb21taXQgYWRhdCBiZXTDtmx0w6lzZSBrw7Z6YmVuOiIKIAotIzogbGliL2NvbW1pdC50Y2w6NzYKKyM6IGxpYi9jb21taXQudGNsOjc1CiBtc2dpZCAiVW5hYmxlIHRvIG9idGFpbiB5b3VyIGlkZW50aXR5OiIKIG1zZ3N0ciAiTmVtIHNpa2Vyw7xsdCBtZWfDoWxsYXDDrXRhbmkgYXogYXpvbm9zw610w7N0OiIKIAotIzogbGliL2NvbW1pdC50Y2w6ODEKKyM6IGxpYi9jb21taXQudGNsOjgwCiBtc2dpZCAiSW52YWxpZCBHSVRfQ09NTUlUVEVSX0lERU5UOiIKIG1zZ3N0ciAiw4lydsOpbnl0ZWxlbiBHSVRfQ09NTUlUVEVSX0lERU5UOiIKIAotIzogbGliL2NvbW1pdC50Y2w6MTMzCisjOiBsaWIvY29tbWl0LnRjbDoxMzIKIG1zZ2lkICIiCiAiTGFzdCBzY2FubmVkIHN0YXRlIGRvZXMgbm90IG1hdGNoIHJlcG9zaXRvcnkgc3RhdGUuXG4iCiAiXG4iCkBAIC0xMjIzLDcgKzEzNDYsNyBAQAogIlxuIgogIkF6IMO6anJha2VyZXPDqXMgbW9zdCBhdXRvbWF0aWt1c2FuIGVsIGZvZyBpbmR1bG5pLlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoxNTQKKyM6IGxpYi9jb21taXQudGNsOjE1NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJVbm1lcmdlZCBmaWxlcyBjYW5ub3QgYmUgY29tbWl0dGVkLlxuIgpAQCAtMTIzNiw3ICsxMzU5LDcgQEAKICJBKHopICVzIGbDoWpsYmFuIMO8dGvDtnrDqXNlayB2YW5uYWsuIEVneXN6ZXIgYXpva2F0IGtpIGtlbGwgamF2w610YW5pLCBtYWpkICIKICJob3p6w6Ega2kga2VsbCB2w6FsYXN6dGFuaSBhIGbDoWpsdCBtaWVsxZF0dCBjb21taXRvbG5pIGxlaGV0bmUuXG4iCiAKLSM6IGxpYi9jb21taXQudGNsOjE2MgorIzogbGliL2NvbW1pdC50Y2w6MTYzCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIlVua25vd24gZmlsZSBzdGF0ZSAlcyBkZXRlY3RlZC5cbiIKQEAgLTEyNDcsNyArMTM3MCw3IEBACiAiXG4iCiAiQSh6KSAlcyBmw6FqbHQgbmVtIHR1ZGphIGV6IGEgcHJvZ3JhbSBjb21taXRvbG5pLlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoxNzAKKyM6IGxpYi9jb21taXQudGNsOjE3MQogbXNnaWQgIiIKICJObyBjaGFuZ2VzIHRvIGNvbW1pdC5cbiIKICJcbiIKQEAgLTEyNTcsNyArMTM4MCw3IEBACiAiXG4iCiAiTGVnYWzDoWJiIGVneSBmw6FqbCBraSBrZWxsIHbDoWxhc3p0YW5pLCBob2d5IGNvbW1pdG9sbmkgbGVoZXNzZW4uXG4iCiAKLSM6IGxpYi9jb21taXQudGNsOjE4MworIzogbGliL2NvbW1pdC50Y2w6MTg2CiBtc2dpZCAiIgogIlBsZWFzZSBzdXBwbHkgYSBjb21taXQgbWVzc2FnZS5cbiIKICJcbiIKQEAgLTEyNzUsNDUgKzEzOTgsNDUgQEAKICItIE3DoXNvZGlrIHNvcjogw5xyZXNcbiIKICItIEEgdMO2YmJpIHNvcjogTGXDrXJqYSwgaG9neSBtacOpcnQgasOzIGV6IGEgdsOhbHRvenRhdMOhcy5cbiIKIAotIzogbGliL2NvbW1pdC50Y2w6MjA3CisjOiBsaWIvY29tbWl0LnRjbDoyMTAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJ3YXJuaW5nOiBUY2wgZG9lcyBub3Qgc3VwcG9ydCBlbmNvZGluZyAnJXMnLiIKIG1zZ3N0ciAiZmlneWVsbWV6dGV0w6lzOiBhIFRjbCBuZW0gdMOhbW9nYXRqYSBhKHopICclcycga8OzZG9sw6FzdC4iCiAKLSM6IGxpYi9jb21taXQudGNsOjIyMQorIzogbGliL2NvbW1pdC50Y2w6MjI2CiBtc2dpZCAiQ2FsbGluZyBwcmUtY29tbWl0IGhvb2suLi4iCiBtc2dzdHIgIkEgcHJlLWNvbW1pdCBodXJvayBtZWdow612w6FzYS4uLiIKIAotIzogbGliL2NvbW1pdC50Y2w6MjM2CisjOiBsaWIvY29tbWl0LnRjbDoyNDEKIG1zZ2lkICJDb21taXQgZGVjbGluZWQgYnkgcHJlLWNvbW1pdCBob29rLiIKIG1zZ3N0ciAiQSBjb21taXRvdCBtZWdha2Fkw6FseW96dGEgYSBwcmUtY29tbWl0IGh1cm9rLiAiCiAKLSM6IGxpYi9jb21taXQudGNsOjI1OQorIzogbGliL2NvbW1pdC50Y2w6MjY0CiBtc2dpZCAiQ2FsbGluZyBjb21taXQtbXNnIGhvb2suLi4iCiBtc2dzdHIgIkEgY29tbWl0LW1zZyBodXJvayBtZWdow612w6FzYS4uLiIKIAotIzogbGliL2NvbW1pdC50Y2w6Mjc0CisjOiBsaWIvY29tbWl0LnRjbDoyNzkKIG1zZ2lkICJDb21taXQgZGVjbGluZWQgYnkgY29tbWl0LW1zZyBob29rLiIKIG1zZ3N0ciAiQSBjb21taW90IG1lZ2FrYWTDoWx5b3p0YSBhIGNvbW1pdC1tc2cgaHVyb2suIgogCi0jOiBsaWIvY29tbWl0LnRjbDoyODcKKyM6IGxpYi9jb21taXQudGNsOjI5MgogbXNnaWQgIkNvbW1pdHRpbmcgY2hhbmdlcy4uLiIKIG1zZ3N0ciAiQSB2w6FsdG96dGF0w6Fzb2sgY29tbWl0b2zDoXNhLi4uIgogCi0jOiBsaWIvY29tbWl0LnRjbDozMDMKKyM6IGxpYi9jb21taXQudGNsOjMwOAogbXNnaWQgIndyaXRlLXRyZWUgZmFpbGVkOiIKIG1zZ3N0ciAiYSB3cml0ZS10cmVlIHNpa2VydGVsZW46IgogCi0jOiBsaWIvY29tbWl0LnRjbDozMDQgbGliL2NvbW1pdC50Y2w6MzQ4IGxpYi9jb21taXQudGNsOjM2OAorIzogbGliL2NvbW1pdC50Y2w6MzA5IGxpYi9jb21taXQudGNsOjM1MyBsaWIvY29tbWl0LnRjbDozNzMKIG1zZ2lkICJDb21taXQgZmFpbGVkLiIKIG1zZ3N0ciAiQSBjb21taXQgbmVtIHNpa2Vyw7xsdC4iCiAKLSM6IGxpYi9jb21taXQudGNsOjMyMQorIzogbGliL2NvbW1pdC50Y2w6MzI2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ29tbWl0ICVzIGFwcGVhcnMgdG8gYmUgY29ycnVwdCIKIG1zZ3N0ciAiQSh6KSAlcyBjb21taXQgc8OpcsO8bHRuZWsgdMWxbmlrIgogCi0jOiBsaWIvY29tbWl0LnRjbDozMjYKKyM6IGxpYi9jb21taXQudGNsOjMzMQogbXNnaWQgIiIKICJObyBjaGFuZ2VzIHRvIGNvbW1pdC5cbiIKICJcbiIKQEAgLTEzMjcsMTkgKzE0NTAsMTkgQEAKICJcbiIKICJBeiDDumpyYWtlcmVzw6lzIG1vc3QgYXV0b21hdGlrdXNhbiBlbCBmb2cgaW5kdWxuaS5cbiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzMzCisjOiBsaWIvY29tbWl0LnRjbDozMzgKIG1zZ2lkICJObyBjaGFuZ2VzIHRvIGNvbW1pdC4iCiBtc2dzdHIgIk5pbmNzIGNvbW1pdG9sYW5kw7MgdsOhbHRvenRhdMOhcy4iCiAKLSM6IGxpYi9jb21taXQudGNsOjM0NworIzogbGliL2NvbW1pdC50Y2w6MzUyCiBtc2dpZCAiY29tbWl0LXRyZWUgZmFpbGVkOiIKIG1zZ3N0ciAiYSBjb21taXQtdHJlZSBzaWtlcnRlbGVuOiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzY3CisjOiBsaWIvY29tbWl0LnRjbDozNzIKIG1zZ2lkICJ1cGRhdGUtcmVmIGZhaWxlZDoiCiBtc2dzdHIgImF6IHVwZGF0ZS1yZWYgc2lrZXJ0ZWxlbjoiCiAKLSM6IGxpYi9jb21taXQudGNsOjQ1NAorIzogbGliL2NvbW1pdC50Y2w6NDYwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ3JlYXRlZCBjb21taXQgJXM6ICVzIgogbXNnc3RyICJMw6l0cmVqw7Z0dCBhICVzIGNvbW1pdDogJXMiCkBAIC0xNDE0LDcgKzE1MzcsNyBAQAogbXNnaWQgIkludmFsaWQgZGF0ZSBmcm9tIEdpdDogJXMiCiBtc2dzdHIgIsOJcnbDqW55dGVsZW4gZMOhdHVtIGEgR2l0LXTFkWw6ICVzIgogCi0jOiBsaWIvZGlmZi50Y2w6NDIKKyM6IGxpYi9kaWZmLnRjbDo1OQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJObyBkaWZmZXJlbmNlcyBkZXRlY3RlZC5cbiIKQEAgLTE0MzYsNDAgKzE1NTksMTAxIEBACiAiXG4iCiAiRWd5IMO6anJha2VyZXPDqXMgZm9nIGluZHVsbmkgYSBoYXNvbmzDsyDDoWxsYXBvdMO6IGbDoWpsb2sgbWVndGFsw6Fsw6FzYSDDqXJkZWvDqWJlbi4iCiAKLSM6IGxpYi9kaWZmLnRjbDo4MQorIzogbGliL2RpZmYudGNsOjk5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiTG9hZGluZyBkaWZmIG9mICVzLi4uIgogbXNnc3RyICJBKHopICVzIGRpZmYtasOpbmVrIGJldMO2bHTDqXNlLi4uIgogCi0jOiBsaWIvZGlmZi50Y2w6MTE0IGxpYi9kaWZmLnRjbDoxODQKKyM6IGxpYi9kaWZmLnRjbDoxMjAKK21zZ2lkICIiCisiTE9DQUw6IGRlbGV0ZWRcbiIKKyJSRU1PVEU6XG4iCittc2dzdHIgIiIKKyJIRUxZSTogdMO2csO2bHZlXG4iCisiVMOBVk9MSTpcbiIKKworIzogbGliL2RpZmYudGNsOjEyNQorbXNnaWQgIiIKKyJSRU1PVEU6IGRlbGV0ZWRcbiIKKyJMT0NBTDpcbiIKK21zZ3N0ciAiIgorIlTDgVZPTEk6IHTDtnLDtmx2ZVxuIgorIkhFTFlJOlxuIgorCisjOiBsaWIvZGlmZi50Y2w6MTMyCittc2dpZCAiTE9DQUw6XG4iCittc2dzdHIgIkhFTFlJOlxuIgorCisjOiBsaWIvZGlmZi50Y2w6MTM1Cittc2dpZCAiUkVNT1RFOlxuIgorbXNnc3RyICJUw4FWT0xJOlxuIgorCisjOiBsaWIvZGlmZi50Y2w6MTk3IGxpYi9kaWZmLnRjbDoyOTYKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gZGlzcGxheSAlcyIKIG1zZ3N0ciAiTmVtIGxlaGV0IG1lZ2plbGVuw610ZW5pIGEga8O2dmV0a2V6xZF0OiAlcyIKIAotIzogbGliL2RpZmYudGNsOjExNQorIzogbGliL2RpZmYudGNsOjE5OAogbXNnaWQgIkVycm9yIGxvYWRpbmcgZmlsZToiCiBtc2dzdHIgIkhpYmEgYSBmw6FqbCBiZXTDtmx0w6lzZSBrw7Z6YmVuOiIKIAotIzogbGliL2RpZmYudGNsOjEyMgorIzogbGliL2RpZmYudGNsOjIwNQogbXNnaWQgIkdpdCBSZXBvc2l0b3J5IChzdWJwcm9qZWN0KSIKIG1zZ3N0ciAiR2l0IHJlcMOzIChhbHByb2pla3QpIgogCi0jOiBsaWIvZGlmZi50Y2w6MTM0CisjOiBsaWIvZGlmZi50Y2w6MjE3CiBtc2dpZCAiKiBCaW5hcnkgZmlsZSAobm90IHNob3dpbmcgY29udGVudCkuIgogbXNnc3RyICIqIEJpbsOhcmlzIGbDoWpsICh0YXJ0YWxvbSBlbHJlanTDqXNlKS4iCiAKLSM6IGxpYi9kaWZmLnRjbDoxODUKLW1zZ2lkICJFcnJvciBsb2FkaW5nIGRpZmY6IgotbXNnc3RyICJIaWJhIGEgZGlmZiBiZXTDtmx0w6lzZSBrw7Z6YmVuOiIKKyM6IGxpYi9kaWZmLnRjbDoyMjIKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiKiBVbnRyYWNrZWQgZmlsZSBpcyAlZCBieXRlcy5cbiIKKyIqIFNob3dpbmcgb25seSBmaXJzdCAlZCBieXRlcy5cbiIKK21zZ3N0ciAiIgorIiogTmVtIGvDtnZldGV0dCBmw6FqbCAlZCBiw6FqdHRhbC5cbiIKKyIqIENzYWsgYXogZWxzxZEgJWQgYsOhanQgbXV0YXTDoXNhLlxuIgogCi0jOiBsaWIvZGlmZi50Y2w6MzAzCisjOiBsaWIvZGlmZi50Y2w6MjI4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiogVW50cmFja2VkIGZpbGUgY2xpcHBlZCBoZXJlIGJ5ICVzLlxuIgorIiogVG8gc2VlIHRoZSBlbnRpcmUgZmlsZSwgdXNlIGFuIGV4dGVybmFsIGVkaXRvci5cbiIKK21zZ3N0ciAiIgorIlxuIgorIiogTmVtIGvDtnZldGV0dCBmw6FqbHQgbGV2w6FndGEgYSh6KSAlcy5cbiIKKyIqIEEgdGVsamVzIHRhcnRhbG9tIG1lZ2plbGVuw610w6lzw6loZXogaGFzem7DoWxqdW5rIGvDvGxzxZEgc3rDtnZlZ3N6ZXJrZXN6dMWRdC5cbiIKKworIzogbGliL2RpZmYudGNsOjQzNgogbXNnaWQgIkZhaWxlZCB0byB1bnN0YWdlIHNlbGVjdGVkIGh1bmsuIgogbXNnc3RyICJOZW0gdmlzc3phdm9ubmkgYSBodW5rIGtpdsOhbGFzenTDoXPDoXQuIgogCi0jOiBsaWIvZGlmZi50Y2w6MzEwCisjOiBsaWIvZGlmZi50Y2w6NDQzCiBtc2dpZCAiRmFpbGVkIHRvIHN0YWdlIHNlbGVjdGVkIGh1bmsuIgogbXNnc3RyICJOZW0gc2lrZXLDvGx0IGtpdsOhbGFzenRhbmkgYSBodW5rb3QuIgogCisjOiBsaWIvZGlmZi50Y2w6NTA5Cittc2dpZCAiRmFpbGVkIHRvIHVuc3RhZ2Ugc2VsZWN0ZWQgbGluZS4iCittc2dzdHIgIk5lbSBzaWtlcsO8bHQgdmlzc3phdm9ubmkgYSBzb3Iga2l2w6FsYXN6dMOhc8OhdC4iCisKKyM6IGxpYi9kaWZmLnRjbDo1MTcKK21zZ2lkICJGYWlsZWQgdG8gc3RhZ2Ugc2VsZWN0ZWQgbGluZS4iCittc2dzdHIgIk5lbSBzaWtlcsO8bHQga2l2w6FsYXN6dGFuaSBhIHNvcnQuIgorCisjOiBsaWIvZW5jb2RpbmcudGNsOjQ0MworbXNnaWQgIkRlZmF1bHQiCittc2dzdHIgIkFsYXDDqXJ0ZWxtZXrDqXMiCisKKyM6IGxpYi9lbmNvZGluZy50Y2w6NDQ4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiU3lzdGVtICglcykiCittc2dzdHIgIlJlbmRzemVyICglcykiCisKKyM6IGxpYi9lbmNvZGluZy50Y2w6NDU5IGxpYi9lbmNvZGluZy50Y2w6NDY1Cittc2dpZCAiT3RoZXIiCittc2dzdHIgIk3DoXMiCisKICM6IGxpYi9lcnJvci50Y2w6MjAgbGliL2Vycm9yLnRjbDoxMTQKIG1zZ2lkICJlcnJvciIKIG1zZ3N0ciAiaGliYSIKQEAgLTE1MDYsNDAgKzE2OTAsNDkgQEAKIG1zZ2lkICJVbmxvY2sgSW5kZXgiCiBtc2dzdHIgIkluZGV4IHrDoXJvbMOhc8OhbmFrIGZlbG9sZMOhc2EiCiAKLSM6IGxpYi9pbmRleC50Y2w6MjgyCisjOiBsaWIvaW5kZXgudGNsOjI4NwogIywgdGNsLWZvcm1hdAogbXNnaWQgIlVuc3RhZ2luZyAlcyBmcm9tIGNvbW1pdCIKIG1zZ3N0ciAiQSh6KSAlcyBjb21taXRiYSB2YWzDsyBraXbDoWxhc3p0w6Fzw6FuYWsgdmlzc3phdm9uw6FzYSIKIAotIzogbGliL2luZGV4LnRjbDozMTMKKyM6IGxpYi9pbmRleC50Y2w6MzI2CiBtc2dpZCAiUmVhZHkgdG8gY29tbWl0LiIKIG1zZ3N0ciAiQ29tbWl0b2zDoXNyYSBrw6lzei4iCiAKLSM6IGxpYi9pbmRleC50Y2w6MzI2CisjOiBsaWIvaW5kZXgudGNsOjMzOQogIywgdGNsLWZvcm1hdAogbXNnaWQgIkFkZGluZyAlcyIKIG1zZ3N0ciAiQSh6KSAlcyBob3p6w6FhZMOhc2EuLi4iCiAKLSM6IGxpYi9pbmRleC50Y2w6MzgxCisjOiBsaWIvaW5kZXgudGNsOjM5NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlJldmVydCBjaGFuZ2VzIGluIGZpbGUgJXM/IgogbXNnc3RyICJWaXNzemHDoWxsw610amEgYSB2w6FsdG96dGF0w6Fzb2thdCBhKHopICVzIGbDoWpsYmFuPyIKIAotIzogbGliL2luZGV4LnRjbDozODMKKyM6IGxpYi9pbmRleC50Y2w6Mzk4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmV2ZXJ0IGNoYW5nZXMgaW4gdGhlc2UgJWkgZmlsZXM/IgogbXNnc3RyICJWaXNzemHDoWxsw610amEgYSB2w6FsdG96dGF0w6Fzb2thdCBlYmJlbiBlICVpIGbDoWpsYmFuPyIKIAotIzogbGliL2luZGV4LnRjbDozOTEKKyM6IGxpYi9pbmRleC50Y2w6NDA2CiBtc2dpZCAiQW55IHVuc3RhZ2VkIGNoYW5nZXMgd2lsbCBiZSBwZXJtYW5lbnRseSBsb3N0IGJ5IHRoZSByZXZlcnQuIgogbXNnc3RyICIiCiAiTWluZGVuIG5lbSBraXbDoWxhc3p0b3R0IHbDoWx0b3p0YXTDoXMgZWwgZm9nIHZlc3puaSBlesOhbHRhbCBhIHZpc3N6YcOhbGzDrXTDoXMgIgogIsOhbHRhbC4iCiAKLSM6IGxpYi9pbmRleC50Y2w6Mzk0CisjOiBsaWIvaW5kZXgudGNsOjQwOQogbXNnaWQgIkRvIE5vdGhpbmciCiBtc2dzdHIgIk5lIGNzaW7DoWxqdW5rIHNlbW1pdCIKIAorIzogbGliL2luZGV4LnRjbDo0MjcKK21zZ2lkICJSZXZlcnRpbmcgc2VsZWN0ZWQgZmlsZXMiCittc2dzdHIgIkEga2l2w6FsYXN6dG90dCBmw6FqbG9rIHZpc3N6YcOhbGzDrXTDoXNhIgorCisjOiBsaWIvaW5kZXgudGNsOjQzMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlJldmVydGluZyAlcyIKK21zZ3N0ciAiJXMgdmlzc3phw6FsbMOtdMOhc2EiCisKICM6IGxpYi9tZXJnZS50Y2w6MTMKIG1zZ2lkICIiCiAiQ2Fubm90IG1lcmdlIHdoaWxlIGFtZW5kaW5nLlxuIgpAQCAtMTU2OCw3ICsxNzYxLDcgQEAKICJcbiIKICJBeiDDumpyYWtlcmVzw6lzIG1vc3QgYXV0b21hdGlrdXNhbiBlbCBmb2cgaW5kdWxuaS5cbiIKIAotIzogbGliL21lcmdlLnRjbDo0NAorIzogbGliL21lcmdlLnRjbDo0NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBjb25mbGljdGVkIG1lcmdlLlxuIgpAQCAtMTU4NSw3ICsxNzc4LDcgQEAKICJGZWwga2VsbCBvbGRhbnVuayDFkWtldCwga2l2w6FsYXN6dGFuaSBhIGbDoWpsdCwgw6lzIGNvbW1pdG9sbmkgaG9neSBiZWZlamV6esO8ayAiCiAiYSBqZWxlbmxlZ2kgbWVyZ2UtdC4gQ3NhayBlenV0w6FuIGtlemRoZXTDvG5rIGVsIGVneSDDumphYmJhdC5cbiIKIAotIzogbGliL21lcmdlLnRjbDo1NAorIzogbGliL21lcmdlLnRjbDo1NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBjaGFuZ2UuXG4iCkBAIC0xNjAyLDM0ICsxNzk1LDM0IEBACiAiRWzFkXN6w7ZyIGJlIGtlbGwgZmVqZXpuw7xuayBhIGplbGVubGVnaSBjb21taXRvdCwgaG9neSBlbGtlemRoZXNzw7xuayBlZ3kgbWVyZ2UtIgogInQuIEV6IHNlZ8OtdGVuaSBmb2csIGhvZ3kgZsOpbGJlc3pha8OtdGhhc3N1bmsgZWd5IG1lcmdlLXQuXG4iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTA2CisjOiBsaWIvbWVyZ2UudGNsOjEwNwogIywgdGNsLWZvcm1hdAogbXNnaWQgIiVzIG9mICVzIgogbXNnc3RyICIlcyAvICVzIgogCi0jOiBsaWIvbWVyZ2UudGNsOjExOQorIzogbGliL21lcmdlLnRjbDoxMjAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJNZXJnaW5nICVzIGFuZCAlcy4uLiIKIG1zZ3N0ciAiQSh6KSAlcyDDqXMgYSh6KSAlcyBtZXJnZS3DtmzDqXNlLi4uIgogCi0jOiBsaWIvbWVyZ2UudGNsOjEzMAorIzogbGliL21lcmdlLnRjbDoxMzEKIG1zZ2lkICJNZXJnZSBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LiIKIG1zZ3N0ciAiQSBtZXJnZSBzaWtlcmVzZW4gYmVmZWplesWRZMO2dHQuIgogCi0jOiBsaWIvbWVyZ2UudGNsOjEzMgorIzogbGliL21lcmdlLnRjbDoxMzMKIG1zZ2lkICJNZXJnZSBmYWlsZWQuICBDb25mbGljdCByZXNvbHV0aW9uIGlzIHJlcXVpcmVkLiIKIG1zZ3N0ciAiQSBtZXJnZSBzaWtlcnRlbGVuLiBGZWwga2VsbCBvbGRhbnVuayBheiDDvHRrw7Z6w6lzZWtldC4iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTU3CisjOiBsaWIvbWVyZ2UudGNsOjE1OAogIywgdGNsLWZvcm1hdAogbXNnaWQgIk1lcmdlIEludG8gJXMiCiBtc2dzdHIgIk1lcmdlLcO2bMOpcyBhIGvDtnZldGtlesWRYmU6ICVzIgogCi0jOiBsaWIvbWVyZ2UudGNsOjE3NgorIzogbGliL21lcmdlLnRjbDoxNzcKIG1zZ2lkICJSZXZpc2lvbiBUbyBNZXJnZSIKIG1zZ3N0ciAiTWVyZ2Utw7Zsbmkgc3rDoW5kw6lrb3pvdHQgcmV2w616acOzIgogCi0jOiBsaWIvbWVyZ2UudGNsOjIxMQorIzogbGliL21lcmdlLnRjbDoyMTIKIG1zZ2lkICIiCiAiQ2Fubm90IGFib3J0IHdoaWxlIGFtZW5kaW5nLlxuIgogIlxuIgpAQCAtMTYzOSw3ICsxODMyLDcgQEAKICJcbiIKICJCZSBrZWxsIGZlamV6bsO8bmsgZW5uZWsgYSBjb21taXRuYWsgYSBqYXbDrXTDoXPDoXQuXG4iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjIxCisjOiBsaWIvbWVyZ2UudGNsOjIyMgogbXNnaWQgIiIKICJBYm9ydCBtZXJnZT9cbiIKICJcbiIKQEAgLTE2NTQsNyArMTg0Nyw3IEBACiAiXG4iCiAiRm9seXRhdGp1ayBhIGplbGVubGVnaSBtZXJnZSBtZWdzemFrw610w6Fzw6F0PyIKIAotIzogbGliL21lcmdlLnRjbDoyMjcKKyM6IGxpYi9tZXJnZS50Y2w6MjI4CiBtc2dpZCAiIgogIlJlc2V0IGNoYW5nZXM/XG4iCiAiXG4iCkBAIC0xNjY5LDEyMyArMTg2MiwzMzggQEAKICJcbiIKICJGb2x5dGF0anVrIGEgamVsZW5sZWdpIG3Ds2Rvc8OtdMOhc29rIHZpc3N6YXZvbsOhc8OhdD8iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjM4CisjOiBsaWIvbWVyZ2UudGNsOjIzOQogbXNnaWQgIkFib3J0aW5nIgogbXNnc3RyICJGw6lsYmVzemFrw610w6FzIgogCi0jOiBsaWIvbWVyZ2UudGNsOjIzOAorIzogbGliL21lcmdlLnRjbDoyMzkKIG1zZ2lkICJmaWxlcyByZXNldCIKIG1zZ3N0ciAiZsOhamwgdmlzc3phw6FsbMOtdHZhIgogCi0jOiBsaWIvbWVyZ2UudGNsOjI2NQorIzogbGliL21lcmdlLnRjbDoyNjcKIG1zZ2lkICJBYm9ydCBmYWlsZWQuIgogbXNnc3RyICJBIGbDqWxiZXN6YWvDrXTDoXMgbmVtIHNpa2Vyw7xsdC4iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjY3CisjOiBsaWIvbWVyZ2UudGNsOjI2OQogbXNnaWQgIkFib3J0IGNvbXBsZXRlZC4gIFJlYWR5LiIKIG1zZ3N0ciAiQSBtZWdrZXN6YWvDrXTDoXMgYmVmZWplesWRZMO2dHQuIEvDqXN6LiIKIAotIzogbGliL29wdGlvbi50Y2w6OTUKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjgKK21zZ2lkICJGb3JjZSByZXNvbHV0aW9uIHRvIHRoZSBiYXNlIHZlcnNpb24/IgorbXNnc3RyICJGZWxvbGTDoXMgZXLFkWx0ZXTDqXNlIGF6IGFsYXAgdmVyemnDs2hvej8iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjkKK21zZ2lkICJGb3JjZSByZXNvbHV0aW9uIHRvIHRoaXMgYnJhbmNoPyIKK21zZ3N0ciAiRmVsb2xkw6FzIGVyxZFsdGV0w6lzZSBlaGhleiBhIGJyYW5jaC1oZXo/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoxMAorbXNnaWQgIkZvcmNlIHJlc29sdXRpb24gdG8gdGhlIG90aGVyIGJyYW5jaD8iCittc2dzdHIgIkZlbG9sZMOhcyBlcsWRbHRldMOpc2UgYSBtw6FzaWsgYnJhbmNoLWhlej8iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjE0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIk5vdGUgdGhhdCB0aGUgZGlmZiBzaG93cyBvbmx5IGNvbmZsaWN0aW5nIGNoYW5nZXMuXG4iCisiXG4iCisiJXMgd2lsbCBiZSBvdmVyd3JpdHRlbi5cbiIKKyJcbiIKKyJUaGlzIG9wZXJhdGlvbiBjYW4gYmUgdW5kb25lIG9ubHkgYnkgcmVzdGFydGluZyB0aGUgbWVyZ2UuIgorbXNnc3RyICIiCisiTWVnamVneXrDqXM6IGNzYWsgYXogw7x0a8O2esWRIGvDvGzDtm5ic8OpZ2VrIGzDoXRzemFuYWsuXG4iCisiXG4iCisiQSh6KSAlcyBmZWzDvGwgbGVzeiDDrXJ2YS5cbiIKKyJcbiIKKyJFeiBhIG3FsXZlbGV0IGNzYWsgYSBtZXJnZSDDumpyYWluZMOtdMOhc8OhdmFsIGxlc3ogdmlzc3phdm9uaGF0w7MuIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDo0NQorIywgdGNsLWZvcm1hdAorbXNnaWQgIkZpbGUgJXMgc2VlbXMgdG8gaGF2ZSB1bnJlc29sdmVkIGNvbmZsaWN0cywgc3RpbGwgc3RhZ2U/IgorbXNnc3RyICIiCisiQSh6KSAlcyBmw6FqbCBuZW0gZmVsb2xkb3R0IMO8dGvDtnrDqXNla2V0IHRhcnRhbG1heiwgbcOpZ2lzIGxlZ3llbiBraXbDoWxhc3p0dmE/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDo2MAorIywgdGNsLWZvcm1hdAorbXNnaWQgIkFkZGluZyByZXNvbHV0aW9uIGZvciAlcyIKK21zZ3N0ciAiRmVsb2xkw6FzIGhvenrDoWFkw6FzYSBhKHopICVzIHN6w6Ftw6FyYSIKKworIzogbGliL21lcmdldG9vbC50Y2w6MTQxCittc2dpZCAiQ2Fubm90IHJlc29sdmUgZGVsZXRpb24gb3IgbGluayBjb25mbGljdHMgdXNpbmcgYSB0b29sIgorbXNnc3RyICJOZW0gbGVoZXQgZmVsb2xkYW5pIHTDtnJsw6lzaSB2YWd5IGxpbmsgw7x0a8O2esOpc3QgZWd5IGVzemvDtnp6ZWwiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjE0NgorbXNnaWQgIkNvbmZsaWN0IGZpbGUgZG9lcyBub3QgZXhpc3QiCittc2dzdHIgIkEga29uZmlrbHVzLWbDoWpsIG5lbSBsw6l0ZXppay4iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjI2NAorIywgdGNsLWZvcm1hdAorbXNnaWQgIk5vdCBhIEdVSSBtZXJnZSB0b29sOiAnJXMnIgorbXNnc3RyICJOZW0gR1VJIG1lcmdlIGVzemvDtno6ICVzIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoyNjgKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJVbnN1cHBvcnRlZCBtZXJnZSB0b29sICclcyciCittc2dzdHIgIkEoeikgJyVzJyBtZXJnZSBlc3prw7Z6IG5lbSB0w6Ftb2dhdG90dCIKKworIzogbGliL21lcmdldG9vbC50Y2w6MzAzCittc2dpZCAiTWVyZ2UgdG9vbCBpcyBhbHJlYWR5IHJ1bm5pbmcsIHRlcm1pbmF0ZSBpdD8iCittc2dzdHIgIkEgbWVyZ2UgZXN6a8O2eiBtw6FyIGZ1dCwgbGUgbGVneWVuIMOhbGzDrXR2YT8iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjMyMworIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJFcnJvciByZXRyaWV2aW5nIHZlcnNpb25zOlxuIgorIiVzIgorbXNnc3RyICIiCisiSGliYSBhIHZlcnppw7NrIGtpbnllcsOpc2Uga8O2emJlbjpcbiIKKyIlcyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MzQzCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkIG5vdCBzdGFydCB0aGUgbWVyZ2UgdG9vbDpcbiIKKyJcbiIKKyIlcyIKK21zZ3N0ciAiIgorIkEgbWVyZ2UgZXN6a8O2eiBpbmTDrXTDoXNhIHNpa2VydGVsZW46XG4iCisiXG4iCisiJXMiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjM0NworbXNnaWQgIlJ1bm5pbmcgbWVyZ2UgdG9vbC4uLiIKK21zZ3N0ciAiQSBtZXJnZSBlc3prw7Z6IGZ1dHRhdMOhc2EuLi4iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjM3NSBsaWIvbWVyZ2V0b29sLnRjbDozODMKK21zZ2lkICJNZXJnZSB0b29sIGZhaWxlZC4iCittc2dzdHIgIkEgbWVyZ2UgZXN6a8O2eiBuZW0gc2lrZXLDvGx0LiIKKworIzogbGliL29wdGlvbi50Y2w6MTEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGdsb2JhbCBlbmNvZGluZyAnJXMnIgorbXNnc3RyICLDiXJ2w6lueXRlbGVuIGdsb2LDoWxpcyBrw7Nkb2zDoXMgJyVzJyIKKworIzogbGliL29wdGlvbi50Y2w6MTkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHJlcG8gZW5jb2RpbmcgJyVzJyIKK21zZ3N0ciAiw4lydsOpbnl0ZWxlbiByZXDDsyBrw7Nkb2zDoXMgJyVzJyIKKworIzogbGliL29wdGlvbi50Y2w6MTE3CiBtc2dpZCAiUmVzdG9yZSBEZWZhdWx0cyIKIG1zZ3N0ciAiQWxhcMOpcnRlbG1lesOpcyB2aXNzemHDoWxsw610w6FzYSIKIAotIzogbGliL29wdGlvbi50Y2w6OTkKKyM6IGxpYi9vcHRpb24udGNsOjEyMQogbXNnaWQgIlNhdmUiCiBtc2dzdHIgIk1lbnTDqXMiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEwOQorIzogbGliL29wdGlvbi50Y2w6MTMxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiJXMgUmVwb3NpdG9yeSIKIG1zZ3N0ciAiJXMgUmVww7MiCiAKLSM6IGxpYi9vcHRpb24udGNsOjExMAorIzogbGliL29wdGlvbi50Y2w6MTMyCiBtc2dpZCAiR2xvYmFsIChBbGwgUmVwb3NpdG9yaWVzKSIKIG1zZ3N0ciAiR2xvYsOhbGlzIChtaW5kZW4gcmVww7MpIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMTYKKyM6IGxpYi9vcHRpb24udGNsOjEzOAogbXNnaWQgIlVzZXIgTmFtZSIKIG1zZ3N0ciAiRmVsaGFzem7DoWzDs27DqXYiCiAKLSM6IGxpYi9vcHRpb24udGNsOjExNworIzogbGliL29wdGlvbi50Y2w6MTM5CiBtc2dpZCAiRW1haWwgQWRkcmVzcyIKIG1zZ3N0ciAiRW1haWwgY8OtbSIKIAotIzogbGliL29wdGlvbi50Y2w6MTE5CisjOiBsaWIvb3B0aW9uLnRjbDoxNDEKIG1zZ2lkICJTdW1tYXJpemUgTWVyZ2UgQ29tbWl0cyIKIG1zZ3N0ciAiQSBtZXJnZSBjb21taXRvayDDtnNzemVnesOpc2UiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyMAorIzogbGliL29wdGlvbi50Y2w6MTQyCiBtc2dpZCAiTWVyZ2UgVmVyYm9zaXR5IgogbXNnc3RyICJNZXJnZSBiZXN6w6lkZXNzw6lnIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjEKKyM6IGxpYi9vcHRpb24udGNsOjE0MwogbXNnaWQgIlNob3cgRGlmZnN0YXQgQWZ0ZXIgTWVyZ2UiCiBtc2dzdHIgIkRpZmZzdGF0IG11dGF0w6FzYSBtZXJnZSB1dMOhbiIKIAotIzogbGliL29wdGlvbi50Y2w6MTIzCisjOiBsaWIvb3B0aW9uLnRjbDoxNDQKK21zZ2lkICJVc2UgTWVyZ2UgVG9vbCIKK21zZ3N0ciAiTWVyZ2UgZXN6a8O2eiBoYXN6bsOhbGF0YSIKKworIzogbGliL29wdGlvbi50Y2w6MTQ2CiBtc2dpZCAiVHJ1c3QgRmlsZSBNb2RpZmljYXRpb24gVGltZXN0YW1wcyIKIG1zZ3N0ciAiQSBmw6FqbCBtw7Nkb3PDrXTDoXNpIGTDoXR1bW9rIG1lZ2LDrXpoYXTDs2FrIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjQKKyM6IGxpYi9vcHRpb24udGNsOjE0NwogbXNnaWQgIlBydW5lIFRyYWNraW5nIEJyYW5jaGVzIER1cmluZyBGZXRjaCIKIG1zZ3N0ciAiQSBrw7Z2ZXTFkSBicmFuY2hlayBlbHTDoXZvbMOtdMOhc2EgbGV0w7ZsdMOpcyBhbGF0dCIKIAotIzogbGliL29wdGlvbi50Y2w6MTI1CisjOiBsaWIvb3B0aW9uLnRjbDoxNDgKIG1zZ2lkICJNYXRjaCBUcmFja2luZyBCcmFuY2hlcyIKIG1zZ3N0ciAiQSBrw7Z2ZXTFkSBicmFuY2hlayBlZ3llenRldMOpc2UiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyNgorIzogbGliL29wdGlvbi50Y2w6MTQ5Cittc2dpZCAiQmxhbWUgQ29weSBPbmx5IE9uIENoYW5nZWQgRmlsZXMiCittc2dzdHIgIkEgYmxhbWUgbcOhc29sw6FzIGJla2FwY3NvbMOhc2EgY3NhayBtZWd2w6FsdG96b3R0IGbDoWpsb2tyYSIKKworIzogbGliL29wdGlvbi50Y2w6MTUwCittc2dpZCAiTWluaW11bSBMZXR0ZXJzIFRvIEJsYW1lIENvcHkgT24iCittc2dzdHIgIk1pbmltdW0gYmV0xbFzesOhbSBibGFtZSBtw6Fzb2zDoXMtw6lyesOpa2Vsw6lzaGV6IgorCisjOiBsaWIvb3B0aW9uLnRjbDoxNTEKK21zZ2lkICJCbGFtZSBIaXN0b3J5IENvbnRleHQgUmFkaXVzIChkYXlzKSIKK21zZ3N0ciAiQmxhbWUgdMO2cnTDqW5ldCBrw7ZybnllemV0IHN1Z8OhciAobmFwb2tiYW4pIgorCisjOiBsaWIvb3B0aW9uLnRjbDoxNTIKIG1zZ2lkICJOdW1iZXIgb2YgRGlmZiBDb250ZXh0IExpbmVzIgogbXNnc3RyICJBIGRpZmYga8O2cm55ZXpldGkgc29yb2sgc3rDoW1hIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjcKKyM6IGxpYi9vcHRpb24udGNsOjE1MwogbXNnaWQgIkNvbW1pdCBNZXNzYWdlIFRleHQgV2lkdGgiCiBtc2dzdHIgIkNvbW1pdCDDvHplbmV0IHN6w7Z2ZWfDqW5layBzesOpbGVzc8OpZ2UiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyOAorIzogbGliL29wdGlvbi50Y2w6MTU0CiBtc2dpZCAiTmV3IEJyYW5jaCBOYW1lIFRlbXBsYXRlIgogbXNnc3RyICLDmmogYnJhbmNoIG7DqXYgc2FibG9uIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxOTIKKyM6IGxpYi9vcHRpb24udGNsOjE1NQorbXNnaWQgIkRlZmF1bHQgRmlsZSBDb250ZW50cyBFbmNvZGluZyIKK21zZ3N0ciAiQWxhcMOpcnRlbG1lemV0dCBmw6FqbHRhcnRhbG9tLWvDs2RvbMOhcyIKKworIzogbGliL29wdGlvbi50Y2w6MjAzCittc2dpZCAiQ2hhbmdlIgorbXNnc3RyICJNZWd2w6FsdG96dGF0w6FzIgorCisjOiBsaWIvb3B0aW9uLnRjbDoyMzAKIG1zZ2lkICJTcGVsbGluZyBEaWN0aW9uYXJ5OiIKIG1zZ3N0ciAiSGVseWVzw61yw6FzLWVsbGVuxZFyesWRIHN6w7N0w6FyOiIKIAotIzogbGliL29wdGlvbi50Y2w6MjE2CisjOiBsaWIvb3B0aW9uLnRjbDoyNTQKIG1zZ2lkICJDaGFuZ2UgRm9udCIKIG1zZ3N0ciAiQmV0xbF0w61wdXMgbWVndsOhbHRvenRhdMOhc2EiCiAKLSM6IGxpYi9vcHRpb24udGNsOjIyMAorIzogbGliL29wdGlvbi50Y2w6MjU4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ2hvb3NlICVzIgogbXNnc3RyICIlcyB2w6FsYXN6dMOhc2EiCiAKLSM6IGxpYi9vcHRpb24udGNsOjIyNgorIzogbGliL29wdGlvbi50Y2w6MjY0CiBtc2dpZCAicHQuIgogbXNnc3RyICJwdC4iCiAKLSM6IGxpYi9vcHRpb24udGNsOjI0MAorIzogbGliL29wdGlvbi50Y2w6Mjc4CiBtc2dpZCAiUHJlZmVyZW5jZXMiCiBtc2dzdHIgIkJlw6FsbMOtdMOhc29rIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoyNzUKKyM6IGxpYi9vcHRpb24udGNsOjMxNAogbXNnaWQgIkZhaWxlZCB0byBjb21wbGV0ZWx5IHNhdmUgb3B0aW9uczoiCiBtc2dzdHIgIk5lbSBzaWtlcsO8bHQgdGVsamVzZW4gZWxtZW50ZW5pIGEgYmXDoWxsw610w6Fzb2thdDoiCiAKKyM6IGxpYi9yZW1vdGUudGNsOjE2MworbXNnaWQgIlJlbW92ZSBSZW1vdGUiCittc2dzdHIgIlJlbW90ZSBlbHTDoXZvbMOtdMOhc2EiCisKKyM6IGxpYi9yZW1vdGUudGNsOjE2OAorbXNnaWQgIlBydW5lIGZyb20iCittc2dzdHIgIlTDtnJsw6lzIGlubmVuIgorCisjIHRjbC1mb3JtYXQKKyM6IGxpYi9yZW1vdGUudGNsOjE3MworbXNnaWQgIkZldGNoIGZyb20iCittc2dzdHIgIkxldMO2bHTDqXMgaW5uZW4iCisKKyM6IGxpYi9yZW1vdGUudGNsOjIxNQorbXNnaWQgIlB1c2ggdG8iCittc2dzdHIgIlB1c2ggaWRlIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTkKK21zZ2lkICJBZGQgUmVtb3RlIgorbXNnc3RyICJSZW1vdGUgaG96esOhYWTDoXNhIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MjQKK21zZ2lkICJBZGQgTmV3IFJlbW90ZSIKK21zZ3N0ciAiw5pqIHJlbW90ZSBob3p6w6FhZMOhc2EiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoyOCBsaWIvdG9vbHNfZGxnLnRjbDozNgorbXNnaWQgIkFkZCIKK21zZ3N0ciAiSG96esOhYWTDoXMiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDozNworbXNnaWQgIlJlbW90ZSBEZXRhaWxzIgorbXNnc3RyICJSZW1vdGUgcsOpc3psZXRlaSIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjUwCittc2dpZCAiTG9jYXRpb246IgorbXNnc3RyICJIZWx5OiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjYyCittc2dpZCAiRnVydGhlciBBY3Rpb24iCittc2dzdHIgIkvDtnZldGtlesWRIG3FsXZlbGV0IgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NjUKK21zZ2lkICJGZXRjaCBJbW1lZGlhdGVseSIKK21zZ3N0ciAiTGV0w7ZsdMOpcyBtb3N0IgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NzEKK21zZ2lkICJJbml0aWFsaXplIFJlbW90ZSBSZXBvc2l0b3J5IGFuZCBQdXNoIgorbXNnc3RyICJUw6F2b2xpIHJlcMOzIGluaWNpYWxpesOhbMOhc2Egw6lzIHB1c2giCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo3NworbXNnaWQgIkRvIE5vdGhpbmcgRWxzZSBOb3ciCittc2dzdHIgIk5lIGNzaW7DoWxqdW5rIHNlbW1pdCIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjEwMQorbXNnaWQgIlBsZWFzZSBzdXBwbHkgYSByZW1vdGUgbmFtZS4iCittc2dzdHIgIkFkanVuayBtZWd5IGVneSByZW1vdGUgbmV2ZXQuIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTE0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiJyVzJyBpcyBub3QgYW4gYWNjZXB0YWJsZSByZW1vdGUgbmFtZS4iCittc2dzdHIgIkEoeikgJyVzJyBuZW0gZWd5IGVsZm9nYWRoYXTDsyByZW1vdGUgbsOpdi4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMjUKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gYWRkIHJlbW90ZSAnJXMnIG9mIGxvY2F0aW9uICclcycuIgorbXNnc3RyICJOZW0gc2lrZXLDvGx0IGEodCkgJyVzJyByZW1vdGUgaG96esOhYWTDoXNhIGlubmVuOiAnJXMnLiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjEzMyBsaWIvdHJhbnNwb3J0LnRjbDo2CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiZmV0Y2ggJXMiCittc2dzdHIgImEoeikgJXMgbGV0w7ZsdMOpc2UiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMzQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGZXRjaGluZyB0aGUgJXMiCittc2dzdHIgIkEoeikgJXMgbGV0w7ZsdMOpc2UiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxNTcKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJEbyBub3Qga25vdyBob3cgdG8gaW5pdGlhbGl6ZSByZXBvc2l0b3J5IGF0IGxvY2F0aW9uICclcycuIgorbXNnc3RyICJOZW0gdHVkbmksIGhvZ3kgaG9neSBrZWxsIGEoeikgJyVzJyBoZWx5ZW4gcmVww7N0IGluaWNpYWxpesOhbG5pLiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjE2MyBsaWIvdHJhbnNwb3J0LnRjbDoyNSBsaWIvdHJhbnNwb3J0LnRjbDo2MworIzogbGliL3RyYW5zcG9ydC50Y2w6ODEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJwdXNoICVzIgorbXNnc3RyICIlcyBwdXNoLW9sw6FzYSIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjE2NAorIywgdGNsLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgdXAgdGhlICVzIChhdCAlcykiCittc2dzdHIgIkEoeikgJXMgYmXDoWxsw610w6FzYSBpdHQ6ICVzIgorCiAjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjI5IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6MzQKLW1zZ2lkICJEZWxldGUgUmVtb3RlIEJyYW5jaCIKLW1zZ3N0ciAiVMOhdm9saSBicmFuY2ggdMO2cmzDqXNlIgorbXNnaWQgIkRlbGV0ZSBCcmFuY2ggUmVtb3RlbHkiCittc2dzdHIgIlTDoXZvbGkgQnJhbmNoIHTDtnJsw6lzZSIKIAogIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo0NwogbXNnaWQgIkZyb20gUmVwb3NpdG9yeSIKIG1zZ3N0ciAiRm9ycsOhcyByZXDDsyIKIAotIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo1MCBsaWIvdHJhbnNwb3J0LnRjbDoxMjMKKyM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NTAgbGliL3RyYW5zcG9ydC50Y2w6MTM0CiBtc2dpZCAiUmVtb3RlOiIKIG1zZ3N0ciAiVMOhdm9saToiCiAKLSM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NjYgbGliL3RyYW5zcG9ydC50Y2w6MTM4Ci1tc2dpZCAiQXJiaXRyYXJ5IFVSTDoiCi1tc2dzdHIgIlRldHN6xZFsZWdlcyBVUkw6IgorIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo2NiBsaWIvdHJhbnNwb3J0LnRjbDoxNDkKK21zZ2lkICJBcmJpdHJhcnkgTG9jYXRpb246IgorbXNnc3RyICLDlm5rw6lueWVzIGhlbHk6IgogCiAjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjg0CiBtc2dpZCAiQnJhbmNoZXMiCkBAIC0xODU0LDE4ICsyMjYyLDIxIEBACiBtc2dpZCAiU2Nhbm5pbmcgJXMuLi4iCiBtc2dzdHIgIktlcmVzw6lzIGl0dDogJXMuLi4iCiAKLSM6IGxpYi9yZW1vdGUudGNsOjE2NQotbXNnaWQgIlBydW5lIGZyb20iCi1tc2dzdHIgIlTDtnJsw6lzIGlubmVuIgorIzogbGliL3NlYXJjaC50Y2w6MjEKK21zZ2lkICJGaW5kOiIKK21zZ3N0ciAiS2VyZXPDqXM6IgogCi0jIHRjbC1mb3JtYXQKLSM6IGxpYi9yZW1vdGUudGNsOjE3MAotbXNnaWQgIkZldGNoIGZyb20iCi1tc2dzdHIgIkxldMO2bHTDqXMgaW5uZW4iCisjOiBsaWIvc2VhcmNoLnRjbDoyMworbXNnaWQgIk5leHQiCittc2dzdHIgIkvDtnZldGtlesWRIgogCi0jOiBsaWIvcmVtb3RlLnRjbDoyMTMKLW1zZ2lkICJQdXNoIHRvIgotbXNnc3RyICJQdXNoIGlkZSIKKyM6IGxpYi9zZWFyY2gudGNsOjI0Cittc2dpZCAiUHJldiIKK21zZ3N0ciAiRWzFkXrFkSIKKworIzogbGliL3NlYXJjaC50Y2w6MjUKK21zZ2lkICJDYXNlLVNlbnNpdGl2ZSIKK21zZ3N0ciAiS2lzYmV0xbEtbmFneWJldMWxIHN6w6Ftw610IgogCiAjOiBsaWIvc2hvcnRjdXQudGNsOjIwIGxpYi9zaG9ydGN1dC50Y2w6NjEKIG1zZ2lkICJDYW5ub3Qgd3JpdGUgc2hvcnRjdXQ6IgpAQCAtMTkwMCwyNyArMjMxMSwxOTQgQEAKIG1zZ2lkICJVbnJlY29nbml6ZWQgc3BlbGwgY2hlY2tlciIKIG1zZ3N0ciAiSXNtZXJldGxlbiBoZWx5ZXPDrXLDoXMtZWxsZW7FkXJ6xZEiCiAKLSM6IGxpYi9zcGVsbGNoZWNrLnRjbDoxODAKKyM6IGxpYi9zcGVsbGNoZWNrLnRjbDoxODYKIG1zZ2lkICJObyBTdWdnZXN0aW9ucyIKIG1zZ3N0ciAiTmluY3MgamF2YXNsYXQiCiAKLSM6IGxpYi9zcGVsbGNoZWNrLnRjbDozODEKKyM6IGxpYi9zcGVsbGNoZWNrLnRjbDozODgKIG1zZ2lkICJVbmV4cGVjdGVkIEVPRiBmcm9tIHNwZWxsIGNoZWNrZXIiCiBtc2dzdHIgIk5lbSB2w6FydCBFT0YgYSBoZWx5ZXPDrXLDoXMtZWxsZW7FkXJ6xZF0xZFsIgogCi0jOiBsaWIvc3BlbGxjaGVjay50Y2w6Mzg1CisjOiBsaWIvc3BlbGxjaGVjay50Y2w6MzkyCiBtc2dpZCAiU3BlbGwgQ2hlY2tlciBGYWlsZWQiCiBtc2dzdHIgIkEgaGVseWVzw61yw6FzLWVsbGVuxZFyesOpcyBzaWtlcnRlbGVuIgogCisjOiBsaWIvc3Noa2V5LnRjbDozMQorbXNnaWQgIk5vIGtleXMgZm91bmQuIgorbXNnc3RyICJOaW5jc2VuZWsga3VsY3Nvay4iCisKKyM6IGxpYi9zc2hrZXkudGNsOjM0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRm91bmQgYSBwdWJsaWMga2V5IGluOiAlcyIKK21zZ3N0ciAiTnlpbHbDoW5vcyBrdWxjcyB0YWzDoWxoYXTDsyBlYmJlbjogJXMiCisKKyM6IGxpYi9zc2hrZXkudGNsOjQwCittc2dpZCAiR2VuZXJhdGUgS2V5IgorbXNnc3RyICJLdWxjcyBnZW5lcsOhbMOhc2EiCisKKyM6IGxpYi9zc2hrZXkudGNsOjU2Cittc2dpZCAiQ29weSBUbyBDbGlwYm9hcmQiCittc2dzdHIgIk3DoXNvbMOhcyB2w6Fnw7NsYXByYSIKKworIzogbGliL3NzaGtleS50Y2w6NzAKK21zZ2lkICJZb3VyIE9wZW5TU0ggUHVibGljIEtleSIKK21zZ3N0ciAiQXogT3BlblNTSCBwdWJsaWt1cyBrdWxjc3VuayIKKworIzogbGliL3NzaGtleS50Y2w6NzgKK21zZ2lkICJHZW5lcmF0aW5nLi4uIgorbXNnc3RyICJHZW5lcsOhbMOhcy4uLiIKKworIzogbGliL3NzaGtleS50Y2w6ODQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiQ291bGQgbm90IHN0YXJ0IHNzaC1rZXlnZW46XG4iCisiXG4iCisiJXMiCittc2dzdHIgIiIKKyJBeiBzc2gta2V5Z2VuIGluZMOtdMOhc2Egc2lrZXJ0ZWxlbjpcbiIKKyJcbiIKKyIlcyIKKworIzogbGliL3NzaGtleS50Y2w6MTExCittc2dpZCAiR2VuZXJhdGlvbiBmYWlsZWQuIgorbXNnc3RyICJBIGdlbmVyw6Fsw6FzIG5lbSBzaWtlcsO8bHQuIgorCisjOiBsaWIvc3Noa2V5LnRjbDoxMTgKK21zZ2lkICJHZW5lcmF0aW9uIHN1Y2NlZGVkLCBidXQgbm8ga2V5cyBmb3VuZC4iCittc2dzdHIgIkEgZ2VuZXLDoWzDoXMgc2lrZXJlcywgZGUgZWd5IGt1bGNzIHNlIHRhbMOhbGhhdMOzLiIKKworIzogbGliL3NzaGtleS50Y2w6MTIxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiWW91ciBrZXkgaXMgaW46ICVzIgorbXNnc3RyICJBIGt1bGNzdW5rIGl0dCB2YW46ICVzIgorCiAjOiBsaWIvc3RhdHVzX2Jhci50Y2w6ODMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIlcyAuLi4gJSppIG9mICUqaSAlcyAoJTNpJSUpIgogbXNnc3RyICIlcyAuLi4gJSppIC8gJSppICVzICglM2klJSkiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjYKKyM6IGxpYi90b29scy50Y2w6NzUKICMsIHRjbC1mb3JtYXQKLW1zZ2lkICJmZXRjaCAlcyIKLW1zZ3N0ciAiYSh6KSAlcyBsZXTDtmx0w6lzZSIKK21zZ2lkICJSdW5uaW5nICVzIHJlcXVpcmVzIGEgc2VsZWN0ZWQgZmlsZS4iCittc2dzdHIgIkEoeikgJXMgZnV0dGF0w6FzYSBlZ3kga2l2w6FsYXN6dG90dCBmw6FqbHQgaWfDqW55ZWwuIgorCisjOiBsaWIvdG9vbHMudGNsOjkwCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJ1biAlcz8iCittc2dzdHIgIkJpenRvcyBiZW5uZSwgaG9neSBmdXR0YXRuaSBrw612w6FuamE6ICVzPyIKKworIzogbGliL3Rvb2xzLnRjbDoxMTAKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJUb29sOiAlcyIKK21zZ3N0ciAiRXN6a8O2ejogJXMiCisKKyM6IGxpYi90b29scy50Y2w6MTExCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiUnVubmluZzogJXMiCittc2dzdHIgIkZ1dHRhdMOhczogJXMuLi4iCisKKyM6IGxpYi90b29scy50Y2w6MTQ5CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVG9vbCBjb21wbGV0ZWQgc3VjY2VzZnVsbHk6ICVzIgorbXNnc3RyICJBeiBlc3prw7Z6IHNpa2VyZXNlbiBiZWZlamV6xZFkw7Z0dDogJXMiCisKKyM6IGxpYi90b29scy50Y2w6MTUxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVG9vbCBmYWlsZWQ6ICVzIgorbXNnc3RyICJBeiBlc3prw7Z6IHNpa2VydGVsZW46ICVzIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoyMgorbXNnaWQgIkFkZCBUb29sIgorbXNnc3RyICJFc3prw7Z6IGhvenrDoWFkw6FzYSIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjgKK21zZ2lkICJBZGQgTmV3IFRvb2wgQ29tbWFuZCIKK21zZ3N0ciAiw5pqIGVzemvDtnotcGFyYW5jcyBob3p6w6FhZMOhc2EiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjMzCittc2dpZCAiQWRkIGdsb2JhbGx5IgorbXNnc3RyICJHbG9iw6FsaXMgaG96esOhYWTDoXMiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjQ1Cittc2dpZCAiVG9vbCBEZXRhaWxzIgorbXNnc3RyICJFc3prw7Z6IHLDqXN6bGV0ZWkiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjQ4Cittc2dpZCAiVXNlICcvJyBzZXBhcmF0b3JzIHRvIGNyZWF0ZSBhIHN1Ym1lbnUgdHJlZToiCittc2dzdHIgIkhhc3puw6FsanVuayAnLycgc3plcGFyw6F0b3Jva2F0IGFsbWVuw7wtZmEgbMOpdHJlaG96w6Fzw6Fob3o6IgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo2MQorbXNnaWQgIkNvbW1hbmQ6IgorbXNnc3RyICJQYXJhbmNzOiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6NzQKK21zZ2lkICJTaG93IGEgZGlhbG9nIGJlZm9yZSBydW5uaW5nIgorbXNnc3RyICJQYXJhbmNzYWJsYWsgbXV0YXTDoXNhIGZ1dHRhdMOhcyBlbMWRdHQiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjgwCittc2dpZCAiQXNrIHRoZSB1c2VyIHRvIHNlbGVjdCBhIHJldmlzaW9uIChzZXRzICRSRVZJU0lPTikiCittc2dzdHIgIiIKKyJNZWdrw6lyaSBhIGZlbGhhc3puw6Fsw7N0LCBob2d5IHbDoWxhc3N6b24ga2kgZWd5IHJldsOtemnDs3QgKGEgJFJFVklTSU9OLXQgIgorIsOhbGzDrXRqYSkiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjg1Cittc2dpZCAiQXNrIHRoZSB1c2VyIGZvciBhZGRpdGlvbmFsIGFyZ3VtZW50cyAoc2V0cyAkQVJHUykiCittc2dzdHIgIk1lZ2vDqXJkZXppIGEgZmVsaGFzem7DoWzDs3QgdG92w6FiYmkgYXJndW1lbnR1bW9rw6lydCAoYSAkQVJHUy1vdCDDoWxsw610amEpIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo5MgorbXNnaWQgIkRvbid0IHNob3cgdGhlIGNvbW1hbmQgb3V0cHV0IHdpbmRvdyIKK21zZ3N0ciAiTmUgbXV0YXNzYSBhIHBhcmFuY3Mga2ltZW5ldGkgYWJsYWvDoXQiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjk3Cittc2dpZCAiUnVuIG9ubHkgaWYgYSBkaWZmIGlzIHNlbGVjdGVkICgkRklMRU5BTUUgbm90IGVtcHR5KSIKK21zZ3N0ciAiRnV0dGF0w6FzIGNzYWsgaGEgZWd5IGRpZmYga2kgdmFuIHbDoWxhc3p0dmEgKGEgJEZJTEVOQU1FIG5lbSDDvHJlcykiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjEyMQorbXNnaWQgIlBsZWFzZSBzdXBwbHkgYSBuYW1lIGZvciB0aGUgdG9vbC4iCittc2dzdHIgIkFkanVuayBtZWcgZWd5IGVzemvDtnogbmV2ZXQuIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoxMjkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJUb29sICclcycgYWxyZWFkeSBleGlzdHMuIgorbXNnc3RyICJBKHopICclcycgZXN6a8O2eiBtw6FyIGzDqXRlemlrLiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTUxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkIG5vdCBhZGQgdG9vbDpcbiIKKyIlcyIKK21zZ3N0ciAiIgorIkF6IGVzemvDtnogbmVtIGhvenrDoWFkaGF0w7M6XG4iCisiJXMiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjE5MAorbXNnaWQgIlJlbW92ZSBUb29sIgorbXNnc3RyICJFc3prw7Z6IGVsdMOhdm9sw610w6FzYSIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTk2Cittc2dpZCAiUmVtb3ZlIFRvb2wgQ29tbWFuZHMiCittc2dzdHIgIkVzemvDtnogcGFyYW5jc29rIGVsdMOhdm9sw610w6FzYSIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjAwCittc2dpZCAiUmVtb3ZlIgorbXNnc3RyICJFbHTDoXZvbMOtdMOhcyIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjM2Cittc2dpZCAiKEJsdWUgZGVub3RlcyByZXBvc2l0b3J5LWxvY2FsIHRvb2xzKSIKK21zZ3N0ciAiKEvDqWsgamVsemkgYSByZXDDsy1zcGVjaWZpa3VzIGVzemvDtnrDtmtldCkiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjI5NworIywgdGNsLWZvcm1hdAorbXNnaWQgIlJ1biBDb21tYW5kOiAlcyIKK21zZ3N0ciAiUGFyYW5jcyBmdXR0YXTDoXNhOiAlcyIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MzExCittc2dpZCAiQXJndW1lbnRzIgorbXNnc3RyICJBcmd1bWVudHVtb2siCisKKyM6IGxpYi90b29sc19kbGcudGNsOjM0OAorbXNnaWQgIk9LIgorbXNnc3RyICJPSyIKIAogIzogbGliL3RyYW5zcG9ydC50Y2w6NwogIywgdGNsLWZvcm1hdApAQCAtMTkzNyw3MiArMjUxNSw4MSBAQAogbXNnaWQgIlBydW5pbmcgdHJhY2tpbmcgYnJhbmNoZXMgZGVsZXRlZCBmcm9tICVzIgogbXNnc3RyICJBICVzIHJlcMOzYsOzbCB0w7Zyw7ZsdCBrw7Z2ZXTFkSBicmFuY2hlayB0w7ZybMOpc2UiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjI1IGxpYi90cmFuc3BvcnQudGNsOjcxCi0jLCB0Y2wtZm9ybWF0Ci1tc2dpZCAicHVzaCAlcyIKLW1zZ3N0ciAiJXMgcHVzaC1vbMOhc2EiCi0KICM6IGxpYi90cmFuc3BvcnQudGNsOjI2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUHVzaGluZyBjaGFuZ2VzIHRvICVzIgogbXNnc3RyICJWw6FsdG96w6Fzb2sgcHVzaG9sw6FzYSBpZGU6ICVzIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDo3MgorIzogbGliL3RyYW5zcG9ydC50Y2w6NjQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJNaXJyb3JpbmcgdG8gJXMiCittc2dzdHIgIlTDvGtyw7Z6w6lzIGEga8O2dmV0a2V6xZEgaGVseXJlOiAlcyIKKworIzogbGliL3RyYW5zcG9ydC50Y2w6ODIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJQdXNoaW5nICVzICVzIHRvICVzIgogbXNnc3RyICJQdXNob2zDoXM6ICVzICVzLCBpZGU6ICVzIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDo4OQorIzogbGliL3RyYW5zcG9ydC50Y2w6MTAwCiBtc2dpZCAiUHVzaCBCcmFuY2hlcyIKIG1zZ3N0ciAiQnJhbmNoZWsgcHVzaG9sw6FzYSIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6MTAzCisjOiBsaWIvdHJhbnNwb3J0LnRjbDoxMTQKIG1zZ2lkICJTb3VyY2UgQnJhbmNoZXMiCiBtc2dzdHIgIkZvcnLDoXMgYnJhbmNoZWsiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjEyMAorIzogbGliL3RyYW5zcG9ydC50Y2w6MTMxCiBtc2dpZCAiRGVzdGluYXRpb24gUmVwb3NpdG9yeSIKIG1zZ3N0ciAiQ8OpbCByZXDDsyIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6MTU4CisjOiBsaWIvdHJhbnNwb3J0LnRjbDoxNjkKIG1zZ2lkICJUcmFuc2ZlciBPcHRpb25zIgogbXNnc3RyICLDgXR2aXRlbGkgb3BjacOzayIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6MTYwCisjOiBsaWIvdHJhbnNwb3J0LnRjbDoxNzEKIG1zZ2lkICJGb3JjZSBvdmVyd3JpdGUgZXhpc3RpbmcgYnJhbmNoIChtYXkgZGlzY2FyZCBjaGFuZ2VzKSIKIG1zZ3N0ciAiIgogIkzDqXRlesWRIGJyYW5jaCBmZWzDvGzDrXLDoXPDoW5hayBlcsWRbHRldMOpc2UgKGxlaGV0LCBob2d5IGVsIGZvZyBkb2JuaSAiCiAidsOhbHRvenRhdMOhc29rYXQpIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDoxNjQKKyM6IGxpYi90cmFuc3BvcnQudGNsOjE3NQogbXNnaWQgIlVzZSB0aGluIHBhY2sgKGZvciBzbG93IG5ldHdvcmsgY29ubmVjdGlvbnMpIgogbXNnc3RyICJWw6lrb255IGNzb21hZ29rIGhhc3puw6FsYXRhIChsYXNzw7ogaMOhbMOzemF0aSBrYXBjc29sYXRvayBzesOhbcOhcmEpIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDoxNjgKKyM6IGxpYi90cmFuc3BvcnQudGNsOjE3OQogbXNnaWQgIkluY2x1ZGUgdGFncyIKIG1zZ3N0ciAiVGFnZWtldCBpcyIKIAorI34gbXNnaWQgIiIKKyN+ICJVbmFibGUgdG8gc3RhcnQgZ2l0azpcbiIKKyN+ICJcbiIKKyN+ICIlcyBkb2VzIG5vdCBleGlzdCIKKyN+IG1zZ3N0ciAiIgorI34gIkEgZ2l0ayBpbmTDrXTDoXNhIHNpa2VydGVsZW46XG4iCisjfiAiXG4iCisjfiAiQSh6KSAlcyBuZW0gbMOpdGV6aWsiCisKKyN+IG1zZ2lkICJBcHBsZSIKKyN+IG1zZ3N0ciAiQXBwbGUiCisKKyN+IG1zZ2lkICJVUkw6IgorI34gbXNnc3RyICJVUkw6IgorCisjfiBtc2dpZCAiRGVsZXRlIFJlbW90ZSBCcmFuY2giCisjfiBtc2dzdHIgIlTDoXZvbGkgYnJhbmNoIHTDtnJsw6lzZSIKKwogI34gbXNnaWQgIk5vdCBjb25uZWN0ZWQgdG8gYXNwZWxsIgogI34gbXNnc3RyICJOaW5jcyBrYXBjc29sYXQgYXogYXNwZWxsaGV6IgogCi0jfiBtc2dpZCAiQ2Fubm90IGZpbmQgdGhlIGdpdCBkaXJlY3Rvcnk6IgotI34gbXNnc3RyICJOZW0gdGFsw6FsaGF0w7MgYSBnaXQga8O2bnl2dMOhcjoiCi0KICN+IG1zZ2lkICJVbnN0YWdlZCBDaGFuZ2VzIChXaWxsIE5vdCBCZSBDb21taXR0ZWQpIgogI34gbXNnc3RyICJOZW0ga2l2w6FsYXN6dG90dCB2w6FsdG96dGF0w6Fzb2sgKG5lbSBsZXN6IGNvbW1pdG9sdmEpIgogCiAjfiBtc2dpZCAiUHVzaCB0byAlcy4uLiIKICN+IG1zZ3N0ciAiUHVzaG9sw6FzIGlkZTogJXMuLi4iCiAKLSN+IG1zZ2lkICJBZGQgVG8gQ29tbWl0IgotI34gbXNnc3RyICJIb3p6w6FhZMOhcyBhIGNvbW1pdGhveiIKLQogI34gbXNnaWQgIkFkZCBFeGlzdGluZyBUbyBDb21taXQiCiAjfiBtc2dzdHIgIkhvenrDoWFkw6FzIGzDqXRlesWRIGNvbW1pdGhveiIKIAotI34gbXNnaWQgIlJ1bm5pbmcgbWlnYS4uLiIKLSN+IG1zZ3N0ciAiQSBtaWdhIGZ1dHRhdMOhc2EuLi4iCi0KICN+IG1zZ2lkICJBZGQgRXhpc3RpbmciCiAjfiBtc2dzdHIgIkzDqXRlesWRIGhvenrDoWFkw6FzYSIKIApkaWZmIC0tZ2l0IGEvZ2l0LWd1aS9wby9pdC5wbyBiL2dpdC1ndWkvcG8vaXQucG8KaW5kZXggM2RiNGZiNi4uMjk0ZTU5NSAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9wby9pdC5wbworKysgYi9naXQtZ3VpL3BvL2l0LnBvCkBAIC05LDQxICs5LDQxIEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdpdC1ndWlcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMDgtMDgtMDIgMTQ6NDUtMDcwMFxuIgotIlBPLVJldmlzaW9uLURhdGU6IDIwMDgtMDgtMDMgMTY6MDQrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA4LTEyLTA4IDA4OjMxLTA4MDBcbiIKKyJQTy1SZXZpc2lvbi1EYXRlOiAyMDA4LTEyLTA5IDEzOjA0KzAxMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IE1pY2hlbGUgQmFsbGFiaW8gPGJhcnJhX2N1ZGFAa2F0YW1haWwuY29tPlxuIgogIkxhbmd1YWdlLVRlYW06IEl0YWxpYW4gPHRwQGxpc3RzLmxpbnV4Lml0PlxuIgogIk1JTUUtVmVyc2lvbjogMS4wXG4iCiAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCiAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgogCi0jOiBnaXQtZ3VpLnNoOjQxIGdpdC1ndWkuc2g6Njg4IGdpdC1ndWkuc2g6NzAyIGdpdC1ndWkuc2g6NzE1IGdpdC1ndWkuc2g6Nzk4Ci0jOiBnaXQtZ3VpLnNoOjgxNworIzogZ2l0LWd1aS5zaDo0MSBnaXQtZ3VpLnNoOjczNyBnaXQtZ3VpLnNoOjc1MSBnaXQtZ3VpLnNoOjc2NCBnaXQtZ3VpLnNoOjg0NworIzogZ2l0LWd1aS5zaDo4NjYKIG1zZ2lkICJnaXQtZ3VpOiBmYXRhbCBlcnJvciIKIG1zZ3N0ciAiZ2l0LWd1aTogZXJyb3JlIGdyYXZlIgogCi0jOiBnaXQtZ3VpLnNoOjY0NAorIzogZ2l0LWd1aS5zaDo2ODkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIGZvbnQgc3BlY2lmaWVkIGluICVzOiIKIG1zZ3N0ciAiQ2FyYXR0ZXJpIG5vbiB2YWxpZGkgc3BlY2lmaWNhdGkgaW4gJXM6IgogCi0jOiBnaXQtZ3VpLnNoOjY3NAorIzogZ2l0LWd1aS5zaDo3MjMKIG1zZ2lkICJNYWluIEZvbnQiCiBtc2dzdHIgIkNhcmF0dGVyaSBwcmluY2lwYWxpIgogCi0jOiBnaXQtZ3VpLnNoOjY3NQorIzogZ2l0LWd1aS5zaDo3MjQKIG1zZ2lkICJEaWZmL0NvbnNvbGUgRm9udCIKIG1zZ3N0ciAiQ2FyYXR0ZXJpIHBlciBjb25mcm9udGkgZSB0ZXJtaW5hbGUiCiAKLSM6IGdpdC1ndWkuc2g6Njg5CisjOiBnaXQtZ3VpLnNoOjczOAogbXNnaWQgIkNhbm5vdCBmaW5kIGdpdCBpbiBQQVRILiIKIG1zZ3N0ciAiSW1wb3NzaWJpbGUgdHJvdmFyZSBnaXQgbmVsIFBBVEgiCiAKLSM6IGdpdC1ndWkuc2g6NzE2CisjOiBnaXQtZ3VpLnNoOjc2NQogbXNnaWQgIkNhbm5vdCBwYXJzZSBHaXQgdmVyc2lvbiBzdHJpbmc6IgogbXNnc3RyICJJbXBvc3NpYmlsZSBkZXRlcm1pbmFyZSBsYSB2ZXJzaW9uZSBkaSBHaXQ6IgogCi0jOiBnaXQtZ3VpLnNoOjczNAorIzogZ2l0LWd1aS5zaDo3ODMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiR2l0IHZlcnNpb24gY2Fubm90IGJlIGRldGVybWluZWQuXG4iCkBAIC02MiwzODEgKzYyLDQ0NiBAQAogIlxuIgogIkFzc3VtZXJlIGNoZSAnJXMnIHNpYSBhbGxhIHZlcnNpb25lIDEuNS4wP1xuIgogCi0jOiBnaXQtZ3VpLnNoOjk3MgorIzogZ2l0LWd1aS5zaDoxMDYyCiBtc2dpZCAiR2l0IGRpcmVjdG9yeSBub3QgZm91bmQ6IgogbXNnc3RyICJOb24gdHJvdm8gbGEgZGlyZWN0b3J5IGRpIGdpdDogIgogCi0jOiBnaXQtZ3VpLnNoOjk3OQorIzogZ2l0LWd1aS5zaDoxMDY5CiBtc2dpZCAiQ2Fubm90IG1vdmUgdG8gdG9wIG9mIHdvcmtpbmcgZGlyZWN0b3J5OiIKIG1zZ3N0ciAiSW1wb3NzaWJpbGUgc3Bvc3RhcnNpIHN1bGxhIGRpcmVjdG9yeSBwcmluY2lwYWxlIGRlbCBwcm9nZXR0bzoiCiAKLSM6IGdpdC1ndWkuc2g6OTg2CisjOiBnaXQtZ3VpLnNoOjEwNzYKIG1zZ2lkICJDYW5ub3QgdXNlIGZ1bm55IC5naXQgZGlyZWN0b3J5OiIKIG1zZ3N0ciAiSW1wb3NzaWJpbGUgdXNhcmUgdW5hIC5naXQgZGlyZWN0b3J5IHN0cmFuYToiCiAKLSM6IGdpdC1ndWkuc2g6OTkxCisjOiBnaXQtZ3VpLnNoOjEwODEKIG1zZ2lkICJObyB3b3JraW5nIGRpcmVjdG9yeSIKIG1zZ3N0ciAiTmVzc3VuYSBkaXJlY3RvcnkgZGkgbGF2b3JvIgogCi0jOiBnaXQtZ3VpLnNoOjExMzggbGliL2NoZWNrb3V0X29wLnRjbDozMDUKKyM6IGdpdC1ndWkuc2g6MTI0NyBsaWIvY2hlY2tvdXRfb3AudGNsOjMwNQogbXNnaWQgIlJlZnJlc2hpbmcgZmlsZSBzdGF0dXMuLi4iCiBtc2dzdHIgIkNvbnRyb2xsbyBkZWxsbyBzdGF0byBkZWkgZmlsZSBpbiBjb3Jzby4uLiIKIAotIzogZ2l0LWd1aS5zaDoxMTk0CisjOiBnaXQtZ3VpLnNoOjEzMDMKIG1zZ2lkICJTY2FubmluZyBmb3IgbW9kaWZpZWQgZmlsZXMgLi4uIgogbXNnc3RyICJSaWNlcmNhIGRpIGZpbGUgbW9kaWZpY2F0aSBpbiBjb3Jzby4uLiIKIAotIzogZ2l0LWd1aS5zaDoxMzY5IGxpYi9icm93c2VyLnRjbDoyNDYKKyM6IGdpdC1ndWkuc2g6MTM2NworbXNnaWQgIkNhbGxpbmcgcHJlcGFyZS1jb21taXQtbXNnIGhvb2suLi4iCittc2dzdHIgIkF2dmlvIHByZXBhcmUtY29tbWl0LW1zZyBob29rLi4uIgorCisjOiBnaXQtZ3VpLnNoOjEzODQKK21zZ2lkICJDb21taXQgZGVjbGluZWQgYnkgcHJlcGFyZS1jb21taXQtbXNnIGhvb2suIgorbXNnc3RyICJSZXZpc2lvbmUgcmlmaXV0YXRhIGRhbCBwcmVwYXJlLWNvbW1pdC1tc2cgaG9vay4iCisKKyM6IGdpdC1ndWkuc2g6MTU0MiBsaWIvYnJvd3Nlci50Y2w6MjQ2CiBtc2dpZCAiUmVhZHkuIgogbXNnc3RyICJQcm9udG8uIgogCi0jOiBnaXQtZ3VpLnNoOjE2MzUKKyM6IGdpdC1ndWkuc2g6MTgxOQogbXNnaWQgIlVubW9kaWZpZWQiCiBtc2dzdHIgIk5vbiBtb2RpZmljYXRvIgogCi0jOiBnaXQtZ3VpLnNoOjE2MzcKKyM6IGdpdC1ndWkuc2g6MTgyMQogbXNnaWQgIk1vZGlmaWVkLCBub3Qgc3RhZ2VkIgogbXNnc3RyICJNb2RpZmljYXRvLCBub24gcHJlcGFyYXRvIHBlciB1bmEgbnVvdmEgcmV2aXNpb25lIgogCi0jOiBnaXQtZ3VpLnNoOjE2MzggZ2l0LWd1aS5zaDoxNjQzCisjOiBnaXQtZ3VpLnNoOjE4MjIgZ2l0LWd1aS5zaDoxODMwCiBtc2dpZCAiU3RhZ2VkIGZvciBjb21taXQiCiBtc2dzdHIgIlByZXBhcmF0byBwZXIgdW5hIG51b3ZhIHJldmlzaW9uZSIKIAotIzogZ2l0LWd1aS5zaDoxNjM5IGdpdC1ndWkuc2g6MTY0NAorIzogZ2l0LWd1aS5zaDoxODIzIGdpdC1ndWkuc2g6MTgzMQogbXNnaWQgIlBvcnRpb25zIHN0YWdlZCBmb3IgY29tbWl0IgogbXNnc3RyICJQYXJ0aSBwcmVwYXJhdGUgcGVyIHVuYSBudW92YSByZXZpc2lvbmUiCiAKLSM6IGdpdC1ndWkuc2g6MTY0MCBnaXQtZ3VpLnNoOjE2NDUKKyM6IGdpdC1ndWkuc2g6MTgyNCBnaXQtZ3VpLnNoOjE4MzIKIG1zZ2lkICJTdGFnZWQgZm9yIGNvbW1pdCwgbWlzc2luZyIKIG1zZ3N0ciAiUHJlcGFyYXRvIHBlciB1bmEgbnVvdmEgcmV2aXNpb25lLCBtYW5jYW50ZSIKIAotIzogZ2l0LWd1aS5zaDoxNjQyCisjOiBnaXQtZ3VpLnNoOjE4MjYKK21zZ2lkICJGaWxlIHR5cGUgY2hhbmdlZCwgbm90IHN0YWdlZCIKK21zZ3N0ciAiVGlwbyBkaSBmaWxlIG1vZGlmaWNhdG8sIG5vbiBwcmVwYXJhdG8gcGVyIHVuYSBudW92YSByZXZpc2lvbmUiCisKKyM6IGdpdC1ndWkuc2g6MTgyNworbXNnaWQgIkZpbGUgdHlwZSBjaGFuZ2VkLCBzdGFnZWQiCittc2dzdHIgIlRpcG8gZGkgZmlsZSBtb2RpZmljYXRvLCBwcmVwYXJhdG8gcGVyIHVuYSBudW92YSByZXZpc2lvbmUiCisKKyM6IGdpdC1ndWkuc2g6MTgyOQogbXNnaWQgIlVudHJhY2tlZCwgbm90IHN0YWdlZCIKIG1zZ3N0ciAiTm9uIHRyYWNjaWF0bywgbm9uIHByZXBhcmF0byBwZXIgdW5hIG51b3ZhIHJldmlzaW9uZSIKIAotIzogZ2l0LWd1aS5zaDoxNjQ3CisjOiBnaXQtZ3VpLnNoOjE4MzQKIG1zZ2lkICJNaXNzaW5nIgogbXNnc3RyICJNYW5jYW50ZSIKIAotIzogZ2l0LWd1aS5zaDoxNjQ4CisjOiBnaXQtZ3VpLnNoOjE4MzUKIG1zZ2lkICJTdGFnZWQgZm9yIHJlbW92YWwiCiBtc2dzdHIgIlByZXBhcmF0byBwZXIgbGEgcmltb3ppb25lIgogCi0jOiBnaXQtZ3VpLnNoOjE2NDkKKyM6IGdpdC1ndWkuc2g6MTgzNgogbXNnaWQgIlN0YWdlZCBmb3IgcmVtb3ZhbCwgc3RpbGwgcHJlc2VudCIKIG1zZ3N0ciAiUHJlcGFyYXRvIGFsbGEgcmltb3ppb25lLCBhbmNvcmEgcHJlc2VudGUiCiAKLSM6IGdpdC1ndWkuc2g6MTY1MSBnaXQtZ3VpLnNoOjE2NTIgZ2l0LWd1aS5zaDoxNjUzIGdpdC1ndWkuc2g6MTY1NAorIzogZ2l0LWd1aS5zaDoxODM4IGdpdC1ndWkuc2g6MTgzOSBnaXQtZ3VpLnNoOjE4NDAgZ2l0LWd1aS5zaDoxODQxCisjOiBnaXQtZ3VpLnNoOjE4NDIgZ2l0LWd1aS5zaDoxODQzCiBtc2dpZCAiUmVxdWlyZXMgbWVyZ2UgcmVzb2x1dGlvbiIKIG1zZ3N0ciAiUmljaGllZGUgcmlzb2x1emlvbmUgZGVpIGNvbmZsaXR0aSIKIAotIzogZ2l0LWd1aS5zaDoxNjg5CisjOiBnaXQtZ3VpLnNoOjE4NzgKIG1zZ2lkICJTdGFydGluZyBnaXRrLi4uIHBsZWFzZSB3YWl0Li4uIgogbXNnc3RyICJBdnZpbyBkaSBnaXRrLi4uIGF0dGVuZGVyZS4uLiIKIAotIzogZ2l0LWd1aS5zaDoxNjk4CisjOiBnaXQtZ3VpLnNoOjE4ODcKIG1zZ2lkICJDb3VsZG4ndCBmaW5kIGdpdGsgaW4gUEFUSCIKIG1zZ3N0ciAiSW1wb3NzaWJpbGUgdHJvdmFyZSBnaXRrIG5lbCBQQVRIIgogCi0jOiBnaXQtZ3VpLnNoOjE5NDggbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozNgorIzogZ2l0LWd1aS5zaDoyMjgwIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzYKIG1zZ2lkICJSZXBvc2l0b3J5IgogbXNnc3RyICJBcmNoaXZpbyIKIAotIzogZ2l0LWd1aS5zaDoxOTQ5CisjOiBnaXQtZ3VpLnNoOjIyODEKIG1zZ2lkICJFZGl0IgogbXNnc3RyICJNb2RpZmljYSIKIAotIzogZ2l0LWd1aS5zaDoxOTUxIGxpYi9jaG9vc2VfcmV2LnRjbDo1NjEKKyM6IGdpdC1ndWkuc2g6MjI4MyBsaWIvY2hvb3NlX3Jldi50Y2w6NTYxCiBtc2dpZCAiQnJhbmNoIgogbXNnc3RyICJSYW1vIgogCi0jOiBnaXQtZ3VpLnNoOjE5NTQgbGliL2Nob29zZV9yZXYudGNsOjU0OAorIzogZ2l0LWd1aS5zaDoyMjg2IGxpYi9jaG9vc2VfcmV2LnRjbDo1NDgKIG1zZ2lkICJDb21taXRAQG5vdW4iCiBtc2dzdHIgIlJldmlzaW9uZSIKIAotIzogZ2l0LWd1aS5zaDoxOTU3IGxpYi9tZXJnZS50Y2w6MTIwIGxpYi9tZXJnZS50Y2w6MTQ5IGxpYi9tZXJnZS50Y2w6MTY3CisjOiBnaXQtZ3VpLnNoOjIyODkgbGliL21lcmdlLnRjbDoxMjEgbGliL21lcmdlLnRjbDoxNTAgbGliL21lcmdlLnRjbDoxNjgKIG1zZ2lkICJNZXJnZSIKIG1zZ3N0ciAiRnVzaW9uZSAoTWVyZ2UpIgogCi0jOiBnaXQtZ3VpLnNoOjE5NTggbGliL2Nob29zZV9yZXYudGNsOjU1NworIzogZ2l0LWd1aS5zaDoyMjkwIGxpYi9jaG9vc2VfcmV2LnRjbDo1NTcKIG1zZ2lkICJSZW1vdGUiCiBtc2dzdHIgIlJlbW90byIKIAotIzogZ2l0LWd1aS5zaDoxOTY3CisjOiBnaXQtZ3VpLnNoOjIyOTMKK21zZ2lkICJUb29scyIKK21zZ3N0ciAiU3RydW1lbnRpIgorCisjOiBnaXQtZ3VpLnNoOjIzMDIKK21zZ2lkICJFeHBsb3JlIFdvcmtpbmcgQ29weSIKK21zZ3N0ciAiRXNwbG9yYSBjb3BpYSBkaSBsYXZvcm8iCisKKyM6IGdpdC1ndWkuc2g6MjMwNwogbXNnaWQgIkJyb3dzZSBDdXJyZW50IEJyYW5jaCdzIEZpbGVzIgogbXNnc3RyICJFc3Bsb3JhIGkgZmlsZSBkZWwgcmFtbyBhdHR1YWxlIgogCi0jOiBnaXQtZ3VpLnNoOjE5NzEKKyM6IGdpdC1ndWkuc2g6MjMxMQogbXNnaWQgIkJyb3dzZSBCcmFuY2ggRmlsZXMuLi4iCiBtc2dzdHIgIkVzcGxvcmEgaSBmaWxlIGRlbCByYW1vLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjE5NzYKKyM6IGdpdC1ndWkuc2g6MjMxNgogbXNnaWQgIlZpc3VhbGl6ZSBDdXJyZW50IEJyYW5jaCdzIEhpc3RvcnkiCiBtc2dzdHIgIlZpc3VhbGl6emEgbGEgY3Jvbm9sb2dpYSBkZWwgcmFtbyBhdHR1YWxlIgogCi0jOiBnaXQtZ3VpLnNoOjE5ODAKKyM6IGdpdC1ndWkuc2g6MjMyMAogbXNnaWQgIlZpc3VhbGl6ZSBBbGwgQnJhbmNoIEhpc3RvcnkiCiBtc2dzdHIgIlZpc3VhbGl6emEgbGEgY3Jvbm9sb2dpYSBkaSB0dXR0aSBpIHJhbWkiCiAKLSM6IGdpdC1ndWkuc2g6MTk4NworIzogZ2l0LWd1aS5zaDoyMzI3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQnJvd3NlICVzJ3MgRmlsZXMiCiBtc2dzdHIgIkVzcGxvcmEgaSBmaWxlIGRpICVzIgogCi0jOiBnaXQtZ3VpLnNoOjE5ODkKKyM6IGdpdC1ndWkuc2g6MjMyOQogIywgdGNsLWZvcm1hdAogbXNnaWQgIlZpc3VhbGl6ZSAlcydzIEhpc3RvcnkiCiBtc2dzdHIgIlZpc3VhbGl6emEgbGEgY3Jvbm9sb2dpYSBkaSAlcyIKIAotIzogZ2l0LWd1aS5zaDoxOTk0IGxpYi9kYXRhYmFzZS50Y2w6MjcgbGliL2RhdGFiYXNlLnRjbDo2NworIzogZ2l0LWd1aS5zaDoyMzM0IGxpYi9kYXRhYmFzZS50Y2w6MjcgbGliL2RhdGFiYXNlLnRjbDo2NwogbXNnaWQgIkRhdGFiYXNlIFN0YXRpc3RpY3MiCiBtc2dzdHIgIlN0YXRpc3RpY2hlIGRlbGwnYXJjaGl2aW8iCiAKLSM6IGdpdC1ndWkuc2g6MTk5NyBsaWIvZGF0YWJhc2UudGNsOjM0CisjOiBnaXQtZ3VpLnNoOjIzMzcgbGliL2RhdGFiYXNlLnRjbDozNAogbXNnaWQgIkNvbXByZXNzIERhdGFiYXNlIgogbXNnc3RyICJDb21wcmltaSBsJ2FyY2hpdmlvIgogCi0jOiBnaXQtZ3VpLnNoOjIwMDAKKyM6IGdpdC1ndWkuc2g6MjM0MAogbXNnaWQgIlZlcmlmeSBEYXRhYmFzZSIKIG1zZ3N0ciAiVmVyaWZpY2EgbCdhcmNoaXZpbyIKIAotIzogZ2l0LWd1aS5zaDoyMDA3IGdpdC1ndWkuc2g6MjAxMSBnaXQtZ3VpLnNoOjIwMTUgbGliL3Nob3J0Y3V0LnRjbDo3CisjOiBnaXQtZ3VpLnNoOjIzNDcgZ2l0LWd1aS5zaDoyMzUxIGdpdC1ndWkuc2g6MjM1NSBsaWIvc2hvcnRjdXQudGNsOjcKICM6IGxpYi9zaG9ydGN1dC50Y2w6MzkgbGliL3Nob3J0Y3V0LnRjbDo3MQogbXNnaWQgIkNyZWF0ZSBEZXNrdG9wIEljb24iCiBtc2dzdHIgIkNyZWEgaWNvbmEgZGVza3RvcCIKIAotIzogZ2l0LWd1aS5zaDoyMDIzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTc3IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTg1CisjOiBnaXQtZ3VpLnNoOjIzNjMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxODMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxOTEKIG1zZ2lkICJRdWl0IgogbXNnc3RyICJFc2NpIgogCi0jOiBnaXQtZ3VpLnNoOjIwMzEKKyM6IGdpdC1ndWkuc2g6MjM3MQogbXNnaWQgIlVuZG8iCiBtc2dzdHIgIkFubnVsbGEiCiAKLSM6IGdpdC1ndWkuc2g6MjAzNAorIzogZ2l0LWd1aS5zaDoyMzc0CiBtc2dpZCAiUmVkbyIKIG1zZ3N0ciAiUmlwZXRpIgogCi0jOiBnaXQtZ3VpLnNoOjIwMzggZ2l0LWd1aS5zaDoyNTQ1CisjOiBnaXQtZ3VpLnNoOjIzNzggZ2l0LWd1aS5zaDoyOTM3CiBtc2dpZCAiQ3V0IgogbXNnc3RyICJUYWdsaWEiCiAKLSM6IGdpdC1ndWkuc2g6MjA0MSBnaXQtZ3VpLnNoOjI1NDggZ2l0LWd1aS5zaDoyNjIyIGdpdC1ndWkuc2g6MjcxNQorIzogZ2l0LWd1aS5zaDoyMzgxIGdpdC1ndWkuc2g6Mjk0MCBnaXQtZ3VpLnNoOjMwMTQgZ2l0LWd1aS5zaDozMDk2CiAjOiBsaWIvY29uc29sZS50Y2w6NjkKIG1zZ2lkICJDb3B5IgogbXNnc3RyICJDb3BpYSIKIAotIzogZ2l0LWd1aS5zaDoyMDQ0IGdpdC1ndWkuc2g6MjU1MQorIzogZ2l0LWd1aS5zaDoyMzg0IGdpdC1ndWkuc2g6Mjk0MwogbXNnaWQgIlBhc3RlIgogbXNnc3RyICJJbmNvbGxhIgogCi0jOiBnaXQtZ3VpLnNoOjIwNDcgZ2l0LWd1aS5zaDoyNTU0IGxpYi9icmFuY2hfZGVsZXRlLnRjbDoyNgorIzogZ2l0LWd1aS5zaDoyMzg3IGdpdC1ndWkuc2g6Mjk0NiBsaWIvYnJhbmNoX2RlbGV0ZS50Y2w6MjYKICM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6MzgKIG1zZ2lkICJEZWxldGUiCiBtc2dzdHIgIkVsaW1pbmEiCiAKLSM6IGdpdC1ndWkuc2g6MjA1MSBnaXQtZ3VpLnNoOjI1NTggZ2l0LWd1aS5zaDoyNzE5IGxpYi9jb25zb2xlLnRjbDo3MQorIzogZ2l0LWd1aS5zaDoyMzkxIGdpdC1ndWkuc2g6Mjk1MCBnaXQtZ3VpLnNoOjMxMDAgbGliL2NvbnNvbGUudGNsOjcxCiBtc2dpZCAiU2VsZWN0IEFsbCIKIG1zZ3N0ciAiU2VsZXppb25hIHR1dHRvIgogCi0jOiBnaXQtZ3VpLnNoOjIwNjAKKyM6IGdpdC1ndWkuc2g6MjQwMAogbXNnaWQgIkNyZWF0ZS4uLiIKIG1zZ3N0ciAiQ3JlYS4uLiIKIAotIzogZ2l0LWd1aS5zaDoyMDY2CisjOiBnaXQtZ3VpLnNoOjI0MDYKIG1zZ2lkICJDaGVja291dC4uLiIKIG1zZ3N0ciAiQXR0aXZhLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIwNzIKKyM6IGdpdC1ndWkuc2g6MjQxMgogbXNnaWQgIlJlbmFtZS4uLiIKIG1zZ3N0ciAiUmlub21pbmEiCiAKLSM6IGdpdC1ndWkuc2g6MjA3NyBnaXQtZ3VpLnNoOjIxODcKKyM6IGdpdC1ndWkuc2g6MjQxNwogbXNnaWQgIkRlbGV0ZS4uLiIKIG1zZ3N0ciAiRWxpbWluYS4uLiIKIAotIzogZ2l0LWd1aS5zaDoyMDgyCisjOiBnaXQtZ3VpLnNoOjI0MjIKIG1zZ2lkICJSZXNldC4uLiIKIG1zZ3N0ciAiUmlwcmlzdGluYS4uLiIKIAotIzogZ2l0LWd1aS5zaDoyMDk0IGdpdC1ndWkuc2g6MjQ5MQotbXNnaWQgIk5ldyBDb21taXQiCi1tc2dzdHIgIk51b3ZhIHJldmlzaW9uZSIKKyM6IGdpdC1ndWkuc2g6MjQzMgorbXNnaWQgIkRvbmUiCittc2dzdHIgIkZhdHRvIgogCi0jOiBnaXQtZ3VpLnNoOjIxMDIgZ2l0LWd1aS5zaDoyNDk4Ci1tc2dpZCAiQW1lbmQgTGFzdCBDb21taXQiCi1tc2dzdHIgIkNvcnJlZ2dpIGwndWx0aW1hIHJldmlzaW9uZSIKLQotIzogZ2l0LWd1aS5zaDoyMTExIGdpdC1ndWkuc2g6MjQ1OCBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjk5Ci1tc2dpZCAiUmVzY2FuIgotbXNnc3RyICJBbmFsaXp6YSBudW92YW1lbnRlIgotCi0jOiBnaXQtZ3VpLnNoOjIxMTcKLW1zZ2lkICJTdGFnZSBUbyBDb21taXQiCi1tc2dzdHIgIlByZXBhcmEgcGVyIHVuYSBudW92YSByZXZpc2lvbmUiCi0KLSM6IGdpdC1ndWkuc2g6MjEyMwotbXNnaWQgIlN0YWdlIENoYW5nZWQgRmlsZXMgVG8gQ29tbWl0IgotbXNnc3RyICJQcmVwYXJhIGkgZmlsZSBtb2RpZmljYXRpIHBlciB1bmEgbnVvdmEgcmV2aXNpb25lIgotCi0jOiBnaXQtZ3VpLnNoOjIxMjkKLW1zZ2lkICJVbnN0YWdlIEZyb20gQ29tbWl0IgotbXNnc3RyICJBbm51bGxhIHByZXBhcmF6aW9uZSIKLQotIzogZ2l0LWd1aS5zaDoyMTM0IGxpYi9pbmRleC50Y2w6Mzk1Ci1tc2dpZCAiUmV2ZXJ0IENoYW5nZXMiCi1tc2dzdHIgIkFubnVsbGEgbW9kaWZpY2hlIgotCi0jOiBnaXQtZ3VpLnNoOjIxNDEgZ2l0LWd1aS5zaDoyNzAyCi1tc2dpZCAiU2hvdyBMZXNzIENvbnRleHQiCi1tc2dzdHIgIk1vc3RyYSBtZW5vIGNvbnRlc3RvIgotCi0jOiBnaXQtZ3VpLnNoOjIxNDUgZ2l0LWd1aS5zaDoyNzA2Ci1tc2dpZCAiU2hvdyBNb3JlIENvbnRleHQiCi1tc2dzdHIgIk1vc3RyYSBwacO5IGNvbnRlc3RvIgotCi0jOiBnaXQtZ3VpLnNoOjIxNTEgZ2l0LWd1aS5zaDoyNDcwIGdpdC1ndWkuc2g6MjU2OQotbXNnaWQgIlNpZ24gT2ZmIgotbXNnc3RyICJTaWduIE9mZiIKLQotIzogZ2l0LWd1aS5zaDoyMTU1IGdpdC1ndWkuc2g6MjQ3NAorIzogZ2l0LWd1aS5zaDoyNDM0CiBtc2dpZCAiQ29tbWl0QEB2ZXJiIgogbXNnc3RyICJOdW92YSByZXZpc2lvbmUiCiAKLSM6IGdpdC1ndWkuc2g6MjE2NgorIzogZ2l0LWd1aS5zaDoyNDQzIGdpdC1ndWkuc2g6Mjg3OAorbXNnaWQgIk5ldyBDb21taXQiCittc2dzdHIgIk51b3ZhIHJldmlzaW9uZSIKKworIzogZ2l0LWd1aS5zaDoyNDUxIGdpdC1ndWkuc2g6Mjg4NQorbXNnaWQgIkFtZW5kIExhc3QgQ29tbWl0IgorbXNnc3RyICJDb3JyZWdnaSBsJ3VsdGltYSByZXZpc2lvbmUiCisKKyM6IGdpdC1ndWkuc2g6MjQ2MSBnaXQtZ3VpLnNoOjI4MzkgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo5OQorbXNnaWQgIlJlc2NhbiIKK21zZ3N0ciAiQW5hbGl6emEgbnVvdmFtZW50ZSIKKworIzogZ2l0LWd1aS5zaDoyNDY3Cittc2dpZCAiU3RhZ2UgVG8gQ29tbWl0IgorbXNnc3RyICJQcmVwYXJhIHBlciB1bmEgbnVvdmEgcmV2aXNpb25lIgorCisjOiBnaXQtZ3VpLnNoOjI0NzMKK21zZ2lkICJTdGFnZSBDaGFuZ2VkIEZpbGVzIFRvIENvbW1pdCIKK21zZ3N0ciAiUHJlcGFyYSBpIGZpbGUgbW9kaWZpY2F0aSBwZXIgdW5hIG51b3ZhIHJldmlzaW9uZSIKKworIzogZ2l0LWd1aS5zaDoyNDc5Cittc2dpZCAiVW5zdGFnZSBGcm9tIENvbW1pdCIKK21zZ3N0ciAiQW5udWxsYSBwcmVwYXJhemlvbmUiCisKKyM6IGdpdC1ndWkuc2g6MjQ4NCBsaWIvaW5kZXgudGNsOjQxMAorbXNnaWQgIlJldmVydCBDaGFuZ2VzIgorbXNnc3RyICJBbm51bGxhIG1vZGlmaWNoZSIKKworIzogZ2l0LWd1aS5zaDoyNDkxIGdpdC1ndWkuc2g6MzA4MworbXNnaWQgIlNob3cgTGVzcyBDb250ZXh0IgorbXNnc3RyICJNb3N0cmEgbWVubyBjb250ZXN0byIKKworIzogZ2l0LWd1aS5zaDoyNDk1IGdpdC1ndWkuc2g6MzA4NworbXNnaWQgIlNob3cgTW9yZSBDb250ZXh0IgorbXNnc3RyICJNb3N0cmEgcGnDuSBjb250ZXN0byIKKworIzogZ2l0LWd1aS5zaDoyNTAyIGdpdC1ndWkuc2g6Mjg1MiBnaXQtZ3VpLnNoOjI5NjEKK21zZ2lkICJTaWduIE9mZiIKK21zZ3N0ciAiU2lnbiBPZmYiCisKKyM6IGdpdC1ndWkuc2g6MjUxOAogbXNnaWQgIkxvY2FsIE1lcmdlLi4uIgogbXNnc3RyICJGdXNpb25lIGxvY2FsZS4uLiIKIAotIzogZ2l0LWd1aS5zaDoyMTcxCisjOiBnaXQtZ3VpLnNoOjI1MjMKIG1zZ2lkICJBYm9ydCBNZXJnZS4uLiIKIG1zZ3N0ciAiSW50ZXJyb21waSBmdXNpb25lLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIxODMKKyM6IGdpdC1ndWkuc2g6MjUzNSBnaXQtZ3VpLnNoOjI1NzUKK21zZ2lkICJBZGQuLi4iCittc2dzdHIgIkFnZ2l1bmdpLi4uIgorCisjOiBnaXQtZ3VpLnNoOjI1MzkKIG1zZ2lkICJQdXNoLi4uIgogbXNnc3RyICJQcm9wYWdhLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIxOTcgZ2l0LWd1aS5zaDoyMjE5IGxpYi9hYm91dC50Y2w6MTQKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MAorIzogZ2l0LWd1aS5zaDoyNTQzCittc2dpZCAiRGVsZXRlIEJyYW5jaC4uLiIKK21zZ3N0ciAiRWxpbWluYSByYW1vLi4uIgorCisjOiBnaXQtZ3VpLnNoOjI1NTMgZ2l0LWd1aS5zaDoyNTg5IGxpYi9hYm91dC50Y2w6MTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIkFib3V0ICVzIgogbXNnc3RyICJJbmZvcm1hemlvbmkgc3UgJXMiCiAKLSM6IGdpdC1ndWkuc2g6MjIwMQorIzogZ2l0LWd1aS5zaDoyNTU3CiBtc2dpZCAiUHJlZmVyZW5jZXMuLi4iCiBtc2dzdHIgIlByZWZlcmVuemUuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MjIwOSBnaXQtZ3VpLnNoOjI3NDAKKyM6IGdpdC1ndWkuc2g6MjU2NSBnaXQtZ3VpLnNoOjMxMjkKIG1zZ2lkICJPcHRpb25zLi4uIgogbXNnc3RyICJPcHppb25pLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIyMTUgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NworIzogZ2l0LWd1aS5zaDoyNTc2Cittc2dpZCAiUmVtb3ZlLi4uIgorbXNnc3RyICJSaW11b3ZpLi4uIgorCisjOiBnaXQtZ3VpLnNoOjI1ODUgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MAogbXNnaWQgIkhlbHAiCiBtc2dzdHIgIkFpdXRvIgogCi0jOiBnaXQtZ3VpLnNoOjIyNTYKKyM6IGdpdC1ndWkuc2g6MjYxMQogbXNnaWQgIk9ubGluZSBEb2N1bWVudGF0aW9uIgogbXNnc3RyICJEb2N1bWVudGF6aW9uZSBzdWwgd2ViIgogCi0jOiBnaXQtZ3VpLnNoOjIzNDAKKyM6IGdpdC1ndWkuc2g6MjYxNCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ3IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTYKK21zZ2lkICJTaG93IFNTSCBLZXkiCittc2dzdHIgIk1vc3RyYSBjaGF2ZSBTU0giCisKKyM6IGdpdC1ndWkuc2g6MjcyMQogIywgdGNsLWZvcm1hdAogbXNnaWQgImZhdGFsOiBjYW5ub3Qgc3RhdCBwYXRoICVzOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IgogbXNnc3RyICIiCiAiZXJyb3JlIGdyYXZlOiBpbXBvc3NpYmlsZSBlZmZldHR1YXJlIGxvIHN0YXQgZGVsIHBhdGggJXM6IGZpbGUgbyBkaXJlY3RvcnkgIgogIm5vbiB0cm92YXRhIgogCi0jOiBnaXQtZ3VpLnNoOjIzNzMKKyM6IGdpdC1ndWkuc2g6Mjc1NAogbXNnaWQgIkN1cnJlbnQgQnJhbmNoOiIKIG1zZ3N0ciAiUmFtbyBhdHR1YWxlOiIKIAotIzogZ2l0LWd1aS5zaDoyMzk0CisjOiBnaXQtZ3VpLnNoOjI3NzUKIG1zZ2lkICJTdGFnZWQgQ2hhbmdlcyAoV2lsbCBDb21taXQpIgogbXNnc3RyICJNb2RpZmljaGUgcHJlcGFyYXRlIChzYXJhbm5vIG5lbGxhIG51b3ZhIHJldmlzaW9uZSkiCiAKLSM6IGdpdC1ndWkuc2g6MjQxNAorIzogZ2l0LWd1aS5zaDoyNzk1CiBtc2dpZCAiVW5zdGFnZWQgQ2hhbmdlcyIKIG1zZ3N0ciAiTW9kaWZpY2hlIG5vbiBwcmVwYXJhdGUiCiAKLSM6IGdpdC1ndWkuc2g6MjQ2NAorIzogZ2l0LWd1aS5zaDoyODQ1CiBtc2dpZCAiU3RhZ2UgQ2hhbmdlZCIKIG1zZ3N0ciAiUHJlcGFyYSBtb2RpZmljYXRpIgogCi0jOiBnaXQtZ3VpLnNoOjI0ODAgbGliL3RyYW5zcG9ydC50Y2w6OTMgbGliL3RyYW5zcG9ydC50Y2w6MTgyCisjOiBnaXQtZ3VpLnNoOjI4NjQgbGliL3RyYW5zcG9ydC50Y2w6MTA0IGxpYi90cmFuc3BvcnQudGNsOjE5MwogbXNnaWQgIlB1c2giCiBtc2dzdHIgIlByb3BhZ2EgKFB1c2gpIgogCi0jOiBnaXQtZ3VpLnNoOjI1MTAKKyM6IGdpdC1ndWkuc2g6Mjg5OQogbXNnaWQgIkluaXRpYWwgQ29tbWl0IE1lc3NhZ2U6IgogbXNnc3RyICJNZXNzYWdnaW8gZGkgcmV2aXNpb25lIGluaXppYWxlOiIKIAotIzogZ2l0LWd1aS5zaDoyNTExCisjOiBnaXQtZ3VpLnNoOjI5MDAKIG1zZ2lkICJBbWVuZGVkIENvbW1pdCBNZXNzYWdlOiIKIG1zZ3N0ciAiTWVzc2FnZ2lvIGRpIHJldmlzaW9uZSBjb3JyZXR0bzoiCiAKLSM6IGdpdC1ndWkuc2g6MjUxMgorIzogZ2l0LWd1aS5zaDoyOTAxCiBtc2dpZCAiQW1lbmRlZCBJbml0aWFsIENvbW1pdCBNZXNzYWdlOiIKIG1zZ3N0ciAiTWVzc2FnZ2lvIGluaXppYWxlIGRpIHJldmlzaW9uZSBjb3JyZXR0bzoiCiAKLSM6IGdpdC1ndWkuc2g6MjUxMworIzogZ2l0LWd1aS5zaDoyOTAyCiBtc2dpZCAiQW1lbmRlZCBNZXJnZSBDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIk1lc3NhZ2dpbyBkaSBmdXNpb25lIGNvcnJldHRvOiIKIAotIzogZ2l0LWd1aS5zaDoyNTE0CisjOiBnaXQtZ3VpLnNoOjI5MDMKIG1zZ2lkICJNZXJnZSBDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIk1lc3NhZ2dpbyBkaSBmdXNpb25lOiIKIAotIzogZ2l0LWd1aS5zaDoyNTE1CisjOiBnaXQtZ3VpLnNoOjI5MDQKIG1zZ2lkICJDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIk1lc3NhZ2dpbyBkaSByZXZpc2lvbmU6IgogCi0jOiBnaXQtZ3VpLnNoOjI1NjEgZ2l0LWd1aS5zaDoyNzIzIGxpYi9jb25zb2xlLnRjbDo3MworIzogZ2l0LWd1aS5zaDoyOTUzIGdpdC1ndWkuc2g6MzEwNCBsaWIvY29uc29sZS50Y2w6NzMKIG1zZ2lkICJDb3B5IEFsbCIKIG1zZ3N0ciAiQ29waWEgdHV0dG8iCiAKLSM6IGdpdC1ndWkuc2g6MjU4NSBsaWIvYmxhbWUudGNsOjEwMAorIzogZ2l0LWd1aS5zaDoyOTc3IGxpYi9ibGFtZS50Y2w6MTA0CiBtc2dpZCAiRmlsZToiCiBtc2dzdHIgIkZpbGU6IgogCi0jOiBnaXQtZ3VpLnNoOjI2OTEKLW1zZ2lkICJBcHBseS9SZXZlcnNlIEh1bmsiCi1tc2dzdHIgIkFwcGxpY2EvSW52ZXJ0aSBzZXppb25lIgotCi0jOiBnaXQtZ3VpLnNoOjI2OTYKLW1zZ2lkICJBcHBseS9SZXZlcnNlIExpbmUiCi1tc2dzdHIgIkFwcGxpY2EvSW52ZXJ0aSByaWdhIgotCi0jOiBnaXQtZ3VpLnNoOjI3MTEKKyM6IGdpdC1ndWkuc2g6MzA5MgogbXNnaWQgIlJlZnJlc2giCiBtc2dzdHIgIlJpbmZyZXNjYSIKIAotIzogZ2l0LWd1aS5zaDoyNzMyCisjOiBnaXQtZ3VpLnNoOjMxMTMKIG1zZ2lkICJEZWNyZWFzZSBGb250IFNpemUiCiBtc2dzdHIgIkRpbWludWlzY2kgZGltZW5zaW9uZSBjYXJhdHRlcmkiCiAKLSM6IGdpdC1ndWkuc2g6MjczNgorIzogZ2l0LWd1aS5zaDozMTE3CiBtc2dpZCAiSW5jcmVhc2UgRm9udCBTaXplIgogbXNnc3RyICJBdW1lbnRhIGRpbWVuc2lvbmUgY2FyYXR0ZXJpIgogCi0jOiBnaXQtZ3VpLnNoOjI3NDcKKyM6IGdpdC1ndWkuc2g6MzEyNSBsaWIvYmxhbWUudGNsOjI4MQorbXNnaWQgIkVuY29kaW5nIgorbXNnc3RyICJDb2RpZmljYSIKKworIzogZ2l0LWd1aS5zaDozMTM2Cittc2dpZCAiQXBwbHkvUmV2ZXJzZSBIdW5rIgorbXNnc3RyICJBcHBsaWNhL0ludmVydGkgc2V6aW9uZSIKKworIzogZ2l0LWd1aS5zaDozMTQxCittc2dpZCAiQXBwbHkvUmV2ZXJzZSBMaW5lIgorbXNnc3RyICJBcHBsaWNhL0ludmVydGkgcmlnYSIKKworIzogZ2l0LWd1aS5zaDozMTUxCittc2dpZCAiUnVuIE1lcmdlIFRvb2wiCittc2dzdHIgIkF2dmlhIHByb2dyYW1tYSBlc3Rlcm5vIHBlciBsYSByaXNvbHV6aW9uZSBkZWkgY29uZmxpdHRpIgorCisjOiBnaXQtZ3VpLnNoOjMxNTYKK21zZ2lkICJVc2UgUmVtb3RlIFZlcnNpb24iCittc2dzdHIgIlVzYSB2ZXJzaW9uZSByZW1vdGEiCisKKyM6IGdpdC1ndWkuc2g6MzE2MAorbXNnaWQgIlVzZSBMb2NhbCBWZXJzaW9uIgorbXNnc3RyICJVc2EgdmVyc2lvbmUgbG9jYWxlIgorCisjOiBnaXQtZ3VpLnNoOjMxNjQKK21zZ2lkICJSZXZlcnQgVG8gQmFzZSIKK21zZ3N0ciAiUml0b3JuYSBhbGxhIHJldmlzaW9uZSBjb211bmUiCisKKyM6IGdpdC1ndWkuc2g6MzE4MwogbXNnaWQgIlVuc3RhZ2UgSHVuayBGcm9tIENvbW1pdCIKIG1zZ3N0ciAiQW5udWxsYSBwcmVwYXJhemlvbmUgZGVsbGEgc2V6aW9uZSBwZXIgdW5hIG51b3ZhIHJldmlzaW9uZSIKIAotIzogZ2l0LWd1aS5zaDoyNzQ4CisjOiBnaXQtZ3VpLnNoOjMxODQKIG1zZ2lkICJVbnN0YWdlIExpbmUgRnJvbSBDb21taXQiCiBtc2dzdHIgIkFubnVsbGEgcHJlcGFyYXppb25lIGRlbGxhIGxpbmVhIHBlciB1bmEgbnVvdmEgcmV2aXNpb25lIgogCi0jOiBnaXQtZ3VpLnNoOjI3NTAKKyM6IGdpdC1ndWkuc2g6MzE4NgogbXNnaWQgIlN0YWdlIEh1bmsgRm9yIENvbW1pdCIKIG1zZ3N0ciAiUHJlcGFyYSBzZXppb25lIHBlciB1bmEgbnVvdmEgcmV2aXNpb25lIgogCi0jOiBnaXQtZ3VpLnNoOjI3NTEKKyM6IGdpdC1ndWkuc2g6MzE4NwogbXNnaWQgIlN0YWdlIExpbmUgRm9yIENvbW1pdCIKIG1zZ3N0ciAiUHJlcGFyYSBsaW5lYSBwZXIgdW5hIG51b3ZhIHJldmlzaW9uZSIKIAotIzogZ2l0LWd1aS5zaDoyNzcxCisjOiBnaXQtZ3VpLnNoOjMyMTAKIG1zZ2lkICJJbml0aWFsaXppbmcuLi4iCiBtc2dzdHIgIkluaXppYWxpenphemlvbmUuLi4iCiAKLSM6IGdpdC1ndWkuc2g6Mjg3NgorIzogZ2l0LWd1aS5zaDozMzE1CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIlBvc3NpYmxlIGVudmlyb25tZW50IGlzc3VlcyBleGlzdC5cbiIKQEAgLTQ1Myw3ICs1MTgsNyBAQAogImRhICVzOlxuIgogIlxuIgogCi0jOiBnaXQtZ3VpLnNoOjI5MDYKKyM6IGdpdC1ndWkuc2g6MzM0NQogbXNnaWQgIiIKICJcbiIKICJUaGlzIGlzIGR1ZSB0byBhIGtub3duIGlzc3VlIHdpdGggdGhlXG4iCkBAIC00NjMsNyArNTI4LDcgQEAKICJDacOyIMOoIGRvdnV0byBhIHVuIHByb2JsZW1hIGNvbm9zY2l1dG9cbiIKICJjYXVzYXRvIGRhbGwnZXNlZ3VpYmlsZSBUY2wgZGlzdHJpYnVpdG8gZGEgQ3lnd2luLiIKIAotIzogZ2l0LWd1aS5zaDoyOTExCisjOiBnaXQtZ3VpLnNoOjMzNTAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCkBAIC00ODMsODAgKzU0OCwxMDggQEAKIG1zZ2lkICJnaXQtZ3VpIC0gYSBncmFwaGljYWwgdXNlciBpbnRlcmZhY2UgZm9yIEdpdC4iCiBtc2dzdHIgImdpdC1ndWkgLSB1bidpbnRlcmZhY2NpYSBncmFmaWNhIHBlciBHaXQuIgogCi0jOiBsaWIvYmxhbWUudGNsOjcwCisjOiBsaWIvYmxhbWUudGNsOjcyCiBtc2dpZCAiRmlsZSBWaWV3ZXIiCiBtc2dzdHIgIk1vc3RyYSBmaWxlIgogCi0jOiBsaWIvYmxhbWUudGNsOjc0CisjOiBsaWIvYmxhbWUudGNsOjc4CiBtc2dpZCAiQ29tbWl0OiIKIG1zZ3N0ciAiUmV2aXNpb25lOiIKIAotIzogbGliL2JsYW1lLnRjbDoyNTcKKyM6IGxpYi9ibGFtZS50Y2w6MjcxCiBtc2dpZCAiQ29weSBDb21taXQiCiBtc2dzdHIgIkNvcGlhIHJldmlzaW9uZSIKIAotIzogbGliL2JsYW1lLnRjbDoyNjAKKyM6IGxpYi9ibGFtZS50Y2w6Mjc1Cittc2dpZCAiRmluZCBUZXh0Li4uIgorbXNnc3RyICJUcm92YSB0ZXN0by4uLiIKKworIzogbGliL2JsYW1lLnRjbDoyODQKIG1zZ2lkICJEbyBGdWxsIENvcHkgRGV0ZWN0aW9uIgogbXNnc3RyICJSaWNlcmNhIGFjY3VyYXRhIGRlbGxlIGNvcGllIgogCi0jOiBsaWIvYmxhbWUudGNsOjM4OAorIzogbGliL2JsYW1lLnRjbDoyODgKK21zZ2lkICJTaG93IEhpc3RvcnkgQ29udGV4dCIKK21zZ3N0ciAiTW9zdHJhIGNvbnRlc3RvIG5lbGxhIGNyb25vbG9naWEiCisKKyM6IGxpYi9ibGFtZS50Y2w6MjkxCittc2dpZCAiQmxhbWUgUGFyZW50IENvbW1pdCIKK21zZ3N0ciAiQW5ub3RhIGxhIHJldmlzaW9uZSBwcmVjZWRlbnRlIgorCisjOiBsaWIvYmxhbWUudGNsOjQ1MAogIywgdGNsLWZvcm1hdAogbXNnaWQgIlJlYWRpbmcgJXMuLi4iCiBtc2dzdHIgIkxldHR1cmEgZGkgJXMuLi4iCiAKLSM6IGxpYi9ibGFtZS50Y2w6NDkyCisjOiBsaWIvYmxhbWUudGNsOjU1NwogbXNnaWQgIkxvYWRpbmcgY29weS9tb3ZlIHRyYWNraW5nIGFubm90YXRpb25zLi4uIgogbXNnc3RyICJDYXJpY2FtZW50byBhbm5vdGF6aW9uaSBwZXIgY29waWUvc3Bvc3RhbWVudGkuLi4iCiAKLSM6IGxpYi9ibGFtZS50Y2w6NTEyCisjOiBsaWIvYmxhbWUudGNsOjU3NwogbXNnaWQgImxpbmVzIGFubm90YXRlZCIKIG1zZ3N0ciAibGluZWUgYW5ub3RhdGUiCiAKLSM6IGxpYi9ibGFtZS50Y2w6NzA0CisjOiBsaWIvYmxhbWUudGNsOjc2OQogbXNnaWQgIkxvYWRpbmcgb3JpZ2luYWwgbG9jYXRpb24gYW5ub3RhdGlvbnMuLi4iCiBtc2dzdHIgIkNhcmljYW1lbnRvIGFubm90YXppb25pIHBlciBwb3NpemlvbmUgb3JpZ2luYXJpYS4uLiIKIAotIzogbGliL2JsYW1lLnRjbDo3MDcKKyM6IGxpYi9ibGFtZS50Y2w6NzcyCiBtc2dpZCAiQW5ub3RhdGlvbiBjb21wbGV0ZS4iCiBtc2dzdHIgIkFubm90YXppb25lIGNvbXBsZXRhdGEuIgogCi0jOiBsaWIvYmxhbWUudGNsOjczNworIzogbGliL2JsYW1lLnRjbDo4MDIKIG1zZ2lkICJCdXN5IgogbXNnc3RyICJPY2N1cGF0byIKIAotIzogbGliL2JsYW1lLnRjbDo3MzgKKyM6IGxpYi9ibGFtZS50Y2w6ODAzCiBtc2dpZCAiQW5ub3RhdGlvbiBwcm9jZXNzIGlzIGFscmVhZHkgcnVubmluZy4iCiBtc2dzdHIgIklsIHByb2Nlc3NvIGRpIGFubm90YXppb25lIMOoIGdpw6AgaW4gY29yc28uIgogCi0jOiBsaWIvYmxhbWUudGNsOjc3NworIzogbGliL2JsYW1lLnRjbDo4NDIKIG1zZ2lkICJSdW5uaW5nIHRob3JvdWdoIGNvcHkgZGV0ZWN0aW9uLi4uIgogbXNnc3RyICJSaWNlcmNhIGFjY3VyYXRhIGRlbGxlIGNvcGllIGluIGNvcnNvLi4uIgogCi0jOiBsaWIvYmxhbWUudGNsOjgyNworIzogbGliL2JsYW1lLnRjbDo5MTAKIG1zZ2lkICJMb2FkaW5nIGFubm90YXRpb24uLi4iCiBtc2dzdHIgIkNhcmljYW1lbnRvIGFubm90YXppb25pLi4uIgogCi0jOiBsaWIvYmxhbWUudGNsOjg4MworIzogbGliL2JsYW1lLnRjbDo5NjMKIG1zZ2lkICJBdXRob3I6IgogbXNnc3RyICJBdXRvcmU6IgogCi0jOiBsaWIvYmxhbWUudGNsOjg4NworIzogbGliL2JsYW1lLnRjbDo5NjcKIG1zZ2lkICJDb21taXR0ZXI6IgogbXNnc3RyICJSZXZpc2lvbmUgY3JlYXRhIGRhOiIKIAotIzogbGliL2JsYW1lLnRjbDo4OTIKKyM6IGxpYi9ibGFtZS50Y2w6OTcyCiBtc2dpZCAiT3JpZ2luYWwgRmlsZToiCiBtc2dzdHIgIkZpbGUgb3JpZ2luYXJpbzoiCiAKLSM6IGxpYi9ibGFtZS50Y2w6MTAwNgorIzogbGliL2JsYW1lLnRjbDoxMDIwCittc2dpZCAiQ2Fubm90IGZpbmQgSEVBRCBjb21taXQ6IgorbXNnc3RyICJJbXBvc3NpYmlsZSB0cm92YXJlIGxhIHJldmlzaW9uZSBIRUFEOiIKKworIzogbGliL2JsYW1lLnRjbDoxMDc1Cittc2dpZCAiQ2Fubm90IGZpbmQgcGFyZW50IGNvbW1pdDoiCittc2dzdHIgIkltcG9zc2liaWxlIHRyb3ZhcmUgbGEgcmV2aXNpb25lIHByZWNlZGVudGU6IgorCisjOiBsaWIvYmxhbWUudGNsOjEwOTAKK21zZ2lkICJVbmFibGUgdG8gZGlzcGxheSBwYXJlbnQiCittc2dzdHIgIkltcG9zc2liaWxlIHZpc3VhbGl6emFyZSBsYSByZXZpc2lvbmUgcHJlY2VkZW50ZSIKKworIzogbGliL2JsYW1lLnRjbDoxMDkxIGxpYi9kaWZmLnRjbDoyOTcKK21zZ2lkICJFcnJvciBsb2FkaW5nIGRpZmY6IgorbXNnc3RyICJFcnJvcmUgbmVsIGNhcmljYW1lbnRvIGRlbGxlIGRpZmZlcmVuemU6IgorCisjOiBsaWIvYmxhbWUudGNsOjEyMzEKIG1zZ2lkICJPcmlnaW5hbGx5IEJ5OiIKIG1zZ3N0ciAiSW4gb3JpZ2luZSBkYToiCiAKLSM6IGxpYi9ibGFtZS50Y2w6MTAxMgorIzogbGliL2JsYW1lLnRjbDoxMjM3CiBtc2dpZCAiSW4gRmlsZToiCiBtc2dzdHIgIk5lbCBmaWxlOiIKIAotIzogbGliL2JsYW1lLnRjbDoxMDE3CisjOiBsaWIvYmxhbWUudGNsOjEyNDIKIG1zZ2lkICJDb3BpZWQgT3IgTW92ZWQgSGVyZSBCeToiCiBtc2dzdHIgIkNvcGlhdG8gbyBzcG9zdGF0byBxdWkgZGE6IgogCkBAIC01NzAsMTYgKzY2MywxOCBAQAogCiAjOiBsaWIvYnJhbmNoX2NoZWNrb3V0LnRjbDoyNyBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6MzUKICM6IGxpYi9icmFuY2hfZGVsZXRlLnRjbDozMiBsaWIvYnJhbmNoX3JlbmFtZS50Y2w6MzAgbGliL2Jyb3dzZXIudGNsOjI4MgotIzogbGliL2NoZWNrb3V0X29wLnRjbDo1NDQgbGliL2Nob29zZV9mb250LnRjbDo0MyBsaWIvbWVyZ2UudGNsOjE3MQotIzogbGliL29wdGlvbi50Y2w6MTAzIGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NDIgbGliL3RyYW5zcG9ydC50Y2w6OTcKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6NTQ0IGxpYi9jaG9vc2VfZm9udC50Y2w6NDMgbGliL21lcmdlLnRjbDoxNzIKKyM6IGxpYi9vcHRpb24udGNsOjEyNSBsaWIvcmVtb3RlX2FkZC50Y2w6MzIgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo0MgorIzogbGliL3Rvb2xzX2RsZy50Y2w6NDAgbGliL3Rvb2xzX2RsZy50Y2w6MjA0IGxpYi90b29sc19kbGcudGNsOjM1MgorIzogbGliL3RyYW5zcG9ydC50Y2w6MTA4CiBtc2dpZCAiQ2FuY2VsIgogbXNnc3RyICJBbm51bGxhIgogCi0jOiBsaWIvYnJhbmNoX2NoZWNrb3V0LnRjbDozMiBsaWIvYnJvd3Nlci50Y2w6Mjg3CisjOiBsaWIvYnJhbmNoX2NoZWNrb3V0LnRjbDozMiBsaWIvYnJvd3Nlci50Y2w6Mjg3IGxpYi90b29sc19kbGcudGNsOjMyOAogbXNnaWQgIlJldmlzaW9uIgogbXNnc3RyICJSZXZpc2lvbmUiCiAKLSM6IGxpYi9icmFuY2hfY2hlY2tvdXQudGNsOjM2IGxpYi9icmFuY2hfY3JlYXRlLnRjbDo2OSBsaWIvb3B0aW9uLnRjbDoyNDQKKyM6IGxpYi9icmFuY2hfY2hlY2tvdXQudGNsOjM2IGxpYi9icmFuY2hfY3JlYXRlLnRjbDo2OSBsaWIvb3B0aW9uLnRjbDoyODAKIG1zZ2lkICJPcHRpb25zIgogbXNnc3RyICJPcHppb25pIgogCkBAIC01OTksNyArNjk0LDcgQEAKIG1zZ2lkICJDcmVhdGUgTmV3IEJyYW5jaCIKIG1zZ3N0ciAiQ3JlYSBudW92byByYW1vIgogCi0jOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6MzEgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozNzEKKyM6IGxpYi9icmFuY2hfY3JlYXRlLnRjbDozMSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM3NwogbXNnaWQgIkNyZWF0ZSIKIG1zZ3N0ciAiQ3JlYSIKIApAQCAtNjA3LDcgKzcwMiw3IEBACiBtc2dpZCAiQnJhbmNoIE5hbWUiCiBtc2dzdHIgIk5vbWUgZGVsIHJhbW8iCiAKLSM6IGxpYi9icmFuY2hfY3JlYXRlLnRjbDo0MworIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjQzIGxpYi9yZW1vdGVfYWRkLnRjbDozOSBsaWIvdG9vbHNfZGxnLnRjbDo1MAogbXNnaWQgIk5hbWU6IgogbXNnc3RyICJOb21lOiIKIApAQCAtNzUzLDkgKzg0OCw5IEBACiBtc2dpZCAiQnJvd3NlIEJyYW5jaCBGaWxlcyIKIG1zZ3N0ciAiRXNwbG9yYSBpIGZpbGUgZGVsIHJhbW8iCiAKLSM6IGxpYi9icm93c2VyLnRjbDoyNzggbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozODcKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDcyIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDgyCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk4NQorIzogbGliL2Jyb3dzZXIudGNsOjI3OCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM5NAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0ODAgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0OTEKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTk1CiBtc2dpZCAiQnJvd3NlIgogbXNnc3RyICJFc3Bsb3JhIgogCkBAIC03NzAsNiArODY1LDcgQEAKIG1zZ3N0ciAiZXJyb3JlIGdyYXZlOiBpbXBvc3NpYmlsZSByaXNvbHZlcmUgJXMiCiAKICM6IGxpYi9jaGVja291dF9vcC50Y2w6MTQ1IGxpYi9jb25zb2xlLnRjbDo4MSBsaWIvZGF0YWJhc2UudGNsOjMxCisjOiBsaWIvc3Noa2V5LnRjbDo1MwogbXNnaWQgIkNsb3NlIgogbXNnc3RyICJDaGl1ZGkiCiAKQEAgLTg4Myw3ICs5NzksNyBAQAogbXNnaWQgIlJlc2V0ICclcyc/IgogbXNnc3RyICJSaXByaXN0aW5hcmUgJyVzJz8iCiAKLSM6IGxpYi9jaGVja291dF9vcC50Y2w6NTMyIGxpYi9tZXJnZS50Y2w6MTYzCisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjUzMiBsaWIvbWVyZ2UudGNsOjE2NCBsaWIvdG9vbHNfZGxnLnRjbDozNDMKIG1zZ2lkICJWaXN1YWxpemUiCiBtc2dzdHIgIlZpc3VhbGl6emEiCiAKQEAgLTkzMywyMjYgKzEwMjksMjMwIEBACiBtc2dpZCAiR2l0IEd1aSIKIG1zZ3N0ciAiR2l0IEd1aSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4MSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM3NgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM4MgogbXNnaWQgIkNyZWF0ZSBOZXcgUmVwb3NpdG9yeSIKIG1zZ3N0ciAiQ3JlYSBudW92byBhcmNoaXZpbyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MwogbXNnaWQgIk5ldy4uLiIKIG1zZ3N0ciAiTnVvdm8uLi4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTQgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NTgKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAwIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDY1CiBtc2dpZCAiQ2xvbmUgRXhpc3RpbmcgUmVwb3NpdG9yeSIKIG1zZ3N0ciAiQ2xvbmEgYXJjaGl2aW8gZXNpc3RlbnRlIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDYKIG1zZ2lkICJDbG9uZS4uLiIKIG1zZ3N0ciAiQ2xvbmEuLi4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTA3IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTc0CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjExMyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk4MwogbXNnaWQgIk9wZW4gRXhpc3RpbmcgUmVwb3NpdG9yeSIKIG1zZ3N0ciAiQXByaSBhcmNoaXZpbyBlc2lzdGVudGUiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTEzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjExOQogbXNnaWQgIk9wZW4uLi4iCiBtc2dzdHIgIkFwcmkuLi4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTI2CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEzMgogbXNnaWQgIlJlY2VudCBSZXBvc2l0b3JpZXMiCiBtc2dzdHIgIkFyY2hpdmkgcmVjZW50aSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMzIKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTM4CiBtc2dpZCAiT3BlbiBSZWNlbnQgUmVwb3NpdG9yeToiCiBtc2dzdHIgIkFwcmkgYXJjaGl2aW8gcmVjZW50ZToiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Mjk2IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzAzCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjMxMAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozMDIgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozMDkKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzE2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIGNyZWF0ZSByZXBvc2l0b3J5ICVzOiIKIG1zZ3N0ciAiSW1wb3NzaWJpbGUgY3JlYXJlIGwnYXJjaGl2aW8gJXM6IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM4MSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ3NgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozODcKIG1zZ2lkICJEaXJlY3Rvcnk6IgogbXNnc3RyICJEaXJlY3Rvcnk6IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQxMCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUzNQotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDA3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQxNyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU0NAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDE3CiBtc2dpZCAiR2l0IFJlcG9zaXRvcnkiCiBtc2dzdHIgIkFyY2hpdmlvIEdpdCIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0MzUKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiRGlyZWN0b3J5ICVzIGFscmVhZHkgZXhpc3RzLiIKIG1zZ3N0ciAiTGEgZGlyZWN0b3J5ICVzIGVzaXN0ZSBnacOgLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0MzkKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQ2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiRmlsZSAlcyBhbHJlYWR5IGV4aXN0cy4iCiBtc2dzdHIgIklsIGZpbGUgJXMgZXNpc3RlIGdpw6AuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ1MworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NjAKIG1zZ2lkICJDbG9uZSIKIG1zZ3N0ciAiQ2xvbmEiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDY2Ci1tc2dpZCAiVVJMOiIKLW1zZ3N0ciAiVVJMOiIKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDczCittc2dpZCAiU291cmNlIExvY2F0aW9uOiIKK21zZ3N0ciAiUG9zaXppb25lIHNvcmdlbnRlOiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0ODcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDg0Cittc2dpZCAiVGFyZ2V0IERpcmVjdG9yeToiCittc2dzdHIgIkRpcmVjdG9yeSBkaSBkZXN0aW5hemlvbmU6IgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ5NgogbXNnaWQgIkNsb25lIFR5cGU6IgogbXNnc3RyICJUaXBvIGRpIGNsb25lOiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0OTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTAyCiBtc2dpZCAiU3RhbmRhcmQgKEZhc3QsIFNlbWktUmVkdW5kYW50LCBIYXJkbGlua3MpIgogbXNnc3RyICJTdGFuZGFyZCAodmVsb2NlLCBzZW1pLXJpZG9uZGFudGUsIGNvbiBoYXJkbGluaykiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDk5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwOAogbXNnaWQgIkZ1bGwgQ29weSAoU2xvd2VyLCBSZWR1bmRhbnQgQmFja3VwKSIKIG1zZ3N0ciAiQ29waWEgY29tcGxldGEgKHBpw7kgbGVudG8sIGJhY2t1cCByaWRvbmRhbnRlKSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MDUKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTE0CiBtc2dpZCAiU2hhcmVkIChGYXN0ZXN0LCBOb3QgUmVjb21tZW5kZWQsIE5vIEJhY2t1cCkiCiBtc2dzdHIgIlNoYXJlZCAoaWwgcGnDuSB2ZWxvY2UsIG5vbiByYWNjb21hbmRhdG8sIG5lc3N1biBiYWNrdXApIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU0MSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU4OAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3MzQgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4MDQKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAxMyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMjEKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTUwIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTk3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc0MyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjgxMworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDIzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAzMQogIywgdGNsLWZvcm1hdAogbXNnaWQgIk5vdCBhIEdpdCByZXBvc2l0b3J5OiAlcyIKIG1zZ3N0ciAiJXMgbm9uIMOoIHVuIGFyY2hpdmlvIEdpdC4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTc3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU4NgogbXNnaWQgIlN0YW5kYXJkIG9ubHkgYXZhaWxhYmxlIGZvciBsb2NhbCByZXBvc2l0b3J5LiIKIG1zZ3N0ciAiU3RhbmRhcmQgw6ggZGlzcG9uaWJpbGUgc29sbyBwZXIgYXJjaGl2aSBsb2NhbGkuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU4MQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1OTAKIG1zZ2lkICJTaGFyZWQgb25seSBhdmFpbGFibGUgZm9yIGxvY2FsIHJlcG9zaXRvcnkuIgogbXNnc3RyICJTaGFyZWQgw6ggZGlzcG9uaWJpbGUgc29sbyBwZXIgYXJjaGl2aSBsb2NhbGkuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYwMgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MTEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJMb2NhdGlvbiAlcyBhbHJlYWR5IGV4aXN0cy4iCiBtc2dzdHIgIklsIGZpbGUvZGlyZWN0b3J5ICVzIGVzaXN0ZSBnacOgLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjIyCiBtc2dpZCAiRmFpbGVkIHRvIGNvbmZpZ3VyZSBvcmlnaW4iCiBtc2dzdHIgIkltcG9zc2liaWxlIGNvbmZpZ3VyYXJlIG9yaWdpbiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MjUKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjM0CiBtc2dpZCAiQ291bnRpbmcgb2JqZWN0cyIKIG1zZ3N0ciAiQ2FsY29sbyBvZ2dldHRpIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYyNgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MzUKIG1zZ2lkICJidWNrZXRzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjUwCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjY1OQogIywgdGNsLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBjb3B5IG9iamVjdHMvaW5mby9hbHRlcm5hdGVzOiAlcyIKIG1zZ3N0ciAiSW1wb3NzaWJpbGUgY29waWFyZSBvZ2dldHRpL2luZm8vYWx0ZXJuYXRlOiAlcyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2ODYKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Njk1CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiTm90aGluZyB0byBjbG9uZSBmcm9tICVzLiIKIG1zZ3N0ciAiTmllbnRlIGRhIGNsb25hcmUgZGEgJXMuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjY4OCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkwMgotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Njk3IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTExCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkyMwogbXNnaWQgIlRoZSAnbWFzdGVyJyBicmFuY2ggaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkLiIKIG1zZ3N0ciAiSWwgcmFtbyAnbWFzdGVyJyBub24gw6ggc3RhdG8gaW5pemlhbGl6emF0by4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzAxCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjcxMAogbXNnaWQgIkhhcmRsaW5rcyBhcmUgdW5hdmFpbGFibGUuICBGYWxsaW5nIGJhY2sgdG8gY29weWluZy4iCiBtc2dzdHIgIkltcG9zc2liaWxlIHV0aWxpenphcmUgZ2xpIGhhcmRsaW5rLiBTaSByaWNvcnJlcsOgIGFsbGEgY29waWEuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjcxMworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3MjIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJDbG9uaW5nIGZyb20gJXMiCiBtc2dzdHIgIkNsb25hemlvbmUgZGEgJXMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzQ0CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc1MwogbXNnaWQgIkNvcHlpbmcgb2JqZWN0cyIKIG1zZ3N0ciAiQ29waWEgZGVnbGkgb2dnZXR0aSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NDUKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzU0CiBtc2dpZCAiS2lCIgogbXNnc3RyICJLaUIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzY5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc3OAogIywgdGNsLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBjb3B5IG9iamVjdDogJXMiCiBtc2dzdHIgIkltcG9zc2liaWxlIGNvcGlhcmUgb2dnZXR0bzogJXMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Nzc5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc4OAogbXNnaWQgIkxpbmtpbmcgb2JqZWN0cyIKIG1zZ3N0ciAiQ29sbGVnYW1lbnRvIG9nZ2V0dGkiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzgwCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc4OQogbXNnaWQgIm9iamVjdHMiCiBtc2dzdHIgIm9nZ2V0dGkiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Nzg4CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc5NwogIywgdGNsLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBoYXJkbGluayBvYmplY3Q6ICVzIgogbXNnc3RyICJIYXJkbGluayBpbXBvc3NpYmlsZSBzdWxsJ29nZ2V0dG86ICVzIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg0MworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NTIKIG1zZ2lkICJDYW5ub3QgZmV0Y2ggYnJhbmNoZXMgYW5kIG9iamVjdHMuICBTZWUgY29uc29sZSBvdXRwdXQgZm9yIGRldGFpbHMuIgogbXNnc3RyICIiCiAiSW1wb3NzaWJpbGUgcmVjdXBlcmFyZSByYW1pIGUgb2dnZXR0aS4gQ29udHJvbGxhcmUgaSBkZXR0YWdsaSBmb3JuaXRpIGRhbGxhICIKICJjb25zb2xlLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODYzCiBtc2dpZCAiQ2Fubm90IGZldGNoIHRhZ3MuICBTZWUgY29uc29sZSBvdXRwdXQgZm9yIGRldGFpbHMuIgogbXNnc3RyICIiCiAiSW1wb3NzaWJpbGUgcmVjdXBlcmFyZSBsZSBldGljaGV0dGUuIENvbnRyb2xsYXJlIGkgZGV0dGFnbGkgZm9ybml0aSBkYWxsYSAiCiAiY29uc29sZS4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODc4CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg4NwogbXNnaWQgIkNhbm5vdCBkZXRlcm1pbmUgSEVBRC4gIFNlZSBjb25zb2xlIG91dHB1dCBmb3IgZGV0YWlscy4iCiBtc2dzdHIgIiIKICJJbXBvc3NpYmlsZSBkZXRlcm1pbmFyZSBIRUFELiBDb250cm9sbGFyZSBpIGRldHRhZ2xpIGZvcm5pdGkgZGFsbGEgY29uc29sZS4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODg3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg5NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBjbGVhbnVwICVzIgogbXNnc3RyICJJbXBvc3NpYmlsZSByaXB1bGlyZSAlcyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4OTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTAyCiBtc2dpZCAiQ2xvbmUgZmFpbGVkLiIKIG1zZ3N0ciAiQ2xvbmF6aW9uZSBub24gcml1c2NpdGEuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkwMAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MDkKIG1zZ2lkICJObyBkZWZhdWx0IGJyYW5jaCBvYnRhaW5lZC4iCiBtc2dzdHIgIk5vbiDDqCBzdGF0byB0cm92YXRvIHVuIHJhbW8gcHJlZGVmaW5pdG8uIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkxMQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MjAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgcmVzb2x2ZSAlcyBhcyBhIGNvbW1pdC4iCiBtc2dzdHIgIkltcG9zc2liaWxlIHJpc29sdmVyZSAlcyBjb21lIHVuYSByZXZpc2lvbmUuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkyMworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MzIKIG1zZ2lkICJDcmVhdGluZyB3b3JraW5nIGRpcmVjdG9yeSIKIG1zZ3N0ciAiQ3JlYXppb25lIGRpcmVjdG9yeSBkaSBsYXZvcm8iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTI0IGxpYi9pbmRleC50Y2w6NjUgbGliL2luZGV4LnRjbDoxMjcKLSM6IGxpYi9pbmRleC50Y2w6MTkzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkzMyBsaWIvaW5kZXgudGNsOjY1IGxpYi9pbmRleC50Y2w6MTI4CisjOiBsaWIvaW5kZXgudGNsOjE5NgogbXNnaWQgImZpbGVzIgogbXNnc3RyICJmaWxlIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk1MworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NjIKIG1zZ2lkICJJbml0aWFsIGZpbGUgY2hlY2tvdXQgZmFpbGVkLiIKIG1zZ3N0ciAiQXR0aXZhemlvbmUgaW5pemlhbGUgbm9uIHJpdXNjaXRhLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NjkKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTc4CiBtc2dpZCAiT3BlbiIKIG1zZ3N0ciAiQXByaSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NzkKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTg4CiBtc2dpZCAiUmVwb3NpdG9yeToiCiBtc2dzdHIgIkFyY2hpdmlvOiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDI3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMzcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gb3BlbiByZXBvc2l0b3J5ICVzOiIKIG1zZ3N0ciAiSW1wb3NzaWJpbGUgYWNjZWRlcmUgYWxsJ2FyY2hpdmlvICVzOiIKQEAgLTEyMjQsMTkgKzEzMjQsMTkgQEAKICJjb21wbGV0YXRhLiBOb24gcHVvaSBjb3JyZWdnZXJlIGxhIHJldmlzaW9uZSBwcmVjZWRlbnRlIGEgbWVubyBjaGUgcHJpbWEgdHUgIgogIm5vbiBpbnRlcnJvbXBhIGwnb3BlcmF6aW9uZSBkaSBmdXNpb25lIGluIGNvcnNvLlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDo0OQorIzogbGliL2NvbW1pdC50Y2w6NDgKIG1zZ2lkICJFcnJvciBsb2FkaW5nIGNvbW1pdCBkYXRhIGZvciBhbWVuZDoiCiBtc2dzdHIgIkVycm9yZSBkdXJhbnRlIGlsIGNhcmljYW1lbnRvIGRlaSBkYXRpIGRlbGxhIHJldmlzaW9uZSBkYSBjb3JyZWdnZXJlOiIKIAotIzogbGliL2NvbW1pdC50Y2w6NzYKKyM6IGxpYi9jb21taXQudGNsOjc1CiBtc2dpZCAiVW5hYmxlIHRvIG9idGFpbiB5b3VyIGlkZW50aXR5OiIKIG1zZ3N0ciAiSW1wb3NzaWJpbGUgb3R0ZW5lcmUgbGEgdHVhIGlkZW50aXTDoDoiCiAKLSM6IGxpYi9jb21taXQudGNsOjgxCisjOiBsaWIvY29tbWl0LnRjbDo4MAogbXNnaWQgIkludmFsaWQgR0lUX0NPTU1JVFRFUl9JREVOVDoiCiBtc2dzdHIgIkdJVF9DT01NSVRURVJfSURFTlQgbm9uIHZhbGlkYToiCiAKLSM6IGxpYi9jb21taXQudGNsOjEzMworIzogbGliL2NvbW1pdC50Y2w6MTMyCiBtc2dpZCAiIgogIkxhc3Qgc2Nhbm5lZCBzdGF0ZSBkb2VzIG5vdCBtYXRjaCByZXBvc2l0b3J5IHN0YXRlLlxuIgogIlxuIgpAQCAtMTI1Myw3ICsxMzUzLDcgQEAKICJcbiIKICJMYSBudW92YSBhbmFsaXNpIGNvbWluY2Vyw6Agb3JhLlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoxNTQKKyM6IGxpYi9jb21taXQudGNsOjE1NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJVbm1lcmdlZCBmaWxlcyBjYW5ub3QgYmUgY29tbWl0dGVkLlxuIgpAQCAtMTI2Niw3ICsxMzY2LDcgQEAKICJJbCBmaWxlICVzIHByZXNlbnRhIGRlaSBjb25mbGl0dGkuIERldmkgcmlzb2x2ZXJsaSBlIHByZXBhcmFyZSBpbCBmaWxlIHBlciAiCiAiY3JlYXJlIHVuYSBudW92YSByZXZpc2lvbmUgcHJpbWEgZGkgZWZmZXR0dWFyZSBxdWVzdGEgYXppb25lLlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoxNjIKKyM6IGxpYi9jb21taXQudGNsOjE2MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJVbmtub3duIGZpbGUgc3RhdGUgJXMgZGV0ZWN0ZWQuXG4iCkBAIC0xMjc3LDcgKzEzNzcsNyBAQAogIlxuIgogIlF1ZXN0byBwcm9ncmFtbWEgbm9uIHB1w7IgY3JlYXJlIHVuYSByZXZpc2lvbmUgY29udGVuZW50ZSBpbCBmaWxlICVzLlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoxNzAKKyM6IGxpYi9jb21taXQudGNsOjE3MQogbXNnaWQgIiIKICJObyBjaGFuZ2VzIHRvIGNvbW1pdC5cbiIKICJcbiIKQEAgLTEyODgsNyArMTM4OCw3IEBACiAiRGV2aSBwcmVwYXJhcmUgcGVyIHVuYSBudW92YSByZXZpc2lvbmUgYWxtZW5vIDEgZmlsZSBwcmltYSBkaSBlZmZldHR1YXJlICIKICJxdWVzdGEgb3BlcmF6aW9uZS5cbiIKIAotIzogbGliL2NvbW1pdC50Y2w6MTgzCisjOiBsaWIvY29tbWl0LnRjbDoxODYKIG1zZ2lkICIiCiAiUGxlYXNlIHN1cHBseSBhIGNvbW1pdCBtZXNzYWdlLlxuIgogIlxuIgpAQCAtMTMwNiw0NSArMTQwNiw0NSBAQAogIi0gU2Vjb25kYSBsaW5lYTogdnVvdGEuXG4iCiAiLSBUZXJ6YSBsaW5lYTogc3BpZWdhIGEgY29zYSBzZXJ2ZSBsYSB0dWEgbW9kaWZpY2EuXG4iCiAKLSM6IGxpYi9jb21taXQudGNsOjIwNworIzogbGliL2NvbW1pdC50Y2w6MjEwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAid2FybmluZzogVGNsIGRvZXMgbm90IHN1cHBvcnQgZW5jb2RpbmcgJyVzJy4iCiBtc2dzdHIgImF0dGVuemlvbmU6IFRjbCBub24gc3VwcG9ydGEgbGEgY29kaWZpY2EgJyVzJy4iCiAKLSM6IGxpYi9jb21taXQudGNsOjIyMQorIzogbGliL2NvbW1pdC50Y2w6MjI2CiBtc2dpZCAiQ2FsbGluZyBwcmUtY29tbWl0IGhvb2suLi4iCiBtc2dzdHIgIkF2dmlvIHByZS1jb21taXQgaG9vay4uLiIKIAotIzogbGliL2NvbW1pdC50Y2w6MjM2CisjOiBsaWIvY29tbWl0LnRjbDoyNDEKIG1zZ2lkICJDb21taXQgZGVjbGluZWQgYnkgcHJlLWNvbW1pdCBob29rLiIKIG1zZ3N0ciAiUmV2aXNpb25lIHJpZml1dGF0YSBkYWwgcHJlLWNvbW1pdCBob29rLiIKIAotIzogbGliL2NvbW1pdC50Y2w6MjU5CisjOiBsaWIvY29tbWl0LnRjbDoyNjQKIG1zZ2lkICJDYWxsaW5nIGNvbW1pdC1tc2cgaG9vay4uLiIKIG1zZ3N0ciAiQXZ2aW8gY29tbWl0LW1zZyBob29rLi4uIgogCi0jOiBsaWIvY29tbWl0LnRjbDoyNzQKKyM6IGxpYi9jb21taXQudGNsOjI3OQogbXNnaWQgIkNvbW1pdCBkZWNsaW5lZCBieSBjb21taXQtbXNnIGhvb2suIgogbXNnc3RyICJSZXZpc2lvbmUgcmlmaXV0YXRhIGRhbCBjb21taXQtbXNnIGhvb2suIgogCi0jOiBsaWIvY29tbWl0LnRjbDoyODcKKyM6IGxpYi9jb21taXQudGNsOjI5MgogbXNnaWQgIkNvbW1pdHRpbmcgY2hhbmdlcy4uLiIKIG1zZ3N0ciAiQXJjaGl2aWF6aW9uZSBtb2RpZmljaGUuLi4iCiAKLSM6IGxpYi9jb21taXQudGNsOjMwMworIzogbGliL2NvbW1pdC50Y2w6MzA4CiBtc2dpZCAid3JpdGUtdHJlZSBmYWlsZWQ6IgogbXNnc3RyICJ3cml0ZS10cmVlIG5vbiByaXVzY2l0bzoiCiAKLSM6IGxpYi9jb21taXQudGNsOjMwNCBsaWIvY29tbWl0LnRjbDozNDggbGliL2NvbW1pdC50Y2w6MzY4CisjOiBsaWIvY29tbWl0LnRjbDozMDkgbGliL2NvbW1pdC50Y2w6MzUzIGxpYi9jb21taXQudGNsOjM3MwogbXNnaWQgIkNvbW1pdCBmYWlsZWQuIgogbXNnc3RyICJJbXBvc3NpYmlsZSBjcmVhcmUgdW5hIG51b3ZhIHJldmlzaW9uZS4iCiAKLSM6IGxpYi9jb21taXQudGNsOjMyMQorIzogbGliL2NvbW1pdC50Y2w6MzI2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ29tbWl0ICVzIGFwcGVhcnMgdG8gYmUgY29ycnVwdCIKIG1zZ3N0ciAiTGEgcmV2aXNpb25lICVzIHNlbWJyYSBlc3NlcmUgZGFubmVnZ2lhdGEiCiAKLSM6IGxpYi9jb21taXQudGNsOjMyNgorIzogbGliL2NvbW1pdC50Y2w6MzMxCiBtc2dpZCAiIgogIk5vIGNoYW5nZXMgdG8gY29tbWl0LlxuIgogIlxuIgpAQCAtMTM1OCwxOSArMTQ1OCwxOSBAQAogIlxuIgogIlNpIHByb2NlZGVyw6Agc3ViaXRvIGFkIHVuYSBudW92YSBhbmFsaXNpLlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDozMzMKKyM6IGxpYi9jb21taXQudGNsOjMzOAogbXNnaWQgIk5vIGNoYW5nZXMgdG8gY29tbWl0LiIKIG1zZ3N0ciAiTmVzc3VuYSBtb2RpZmljYSBwZXIgbGEgbnVvdmEgcmV2aXNpb25lLiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzQ3CisjOiBsaWIvY29tbWl0LnRjbDozNTIKIG1zZ2lkICJjb21taXQtdHJlZSBmYWlsZWQ6IgogbXNnc3RyICJjb21taXQtdHJlZSBub24gcml1c2NpdG86IgogCi0jOiBsaWIvY29tbWl0LnRjbDozNjcKKyM6IGxpYi9jb21taXQudGNsOjM3MgogbXNnaWQgInVwZGF0ZS1yZWYgZmFpbGVkOiIKIG1zZ3N0ciAidXBkYXRlLXJlZiBub24gcml1c2NpdG86IgogCi0jOiBsaWIvY29tbWl0LnRjbDo0NTQKKyM6IGxpYi9jb21taXQudGNsOjQ2MAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNyZWF0ZWQgY29tbWl0ICVzOiAlcyIKIG1zZ3N0ciAiQ3JlYXRhIHJldmlzaW9uZSAlczogJXMiCkBAIC0xNDQ1LDcgKzE1NDUsNyBAQAogbXNnaWQgIkludmFsaWQgZGF0ZSBmcm9tIEdpdDogJXMiCiBtc2dzdHIgIkdpdCBoYSByZXN0aXR1aXRvIHVuYSBkYXRhIG5vbiB2YWxpZGE6ICVzIgogCi0jOiBsaWIvZGlmZi50Y2w6NDQKKyM6IGxpYi9kaWZmLnRjbDo1OQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJObyBkaWZmZXJlbmNlcyBkZXRlY3RlZC5cbiIKQEAgLTE0NjgsNDggKzE1NjgsMTAxIEBACiAiU2kgcHJvY2VkZXLDoCBhdXRvbWF0aWNhbWVudGUgYWQgdW5hIG51b3ZhIGFuYWxpc2kgcGVyIHRyb3ZhcmUgYWx0cmkgZmlsZSBjaGUgIgogInBvdHJlYmJlcm8gYXZlcmUgbG8gc3Rlc3NvIHN0YXRvLiIKIAotIzogbGliL2RpZmYudGNsOjgzCisjOiBsaWIvZGlmZi50Y2w6OTkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJMb2FkaW5nIGRpZmYgb2YgJXMuLi4iCiBtc2dzdHIgIkNhcmljYW1lbnRvIGRlbGxlIGRpZmZlcmVuemUgZGkgJXMuLi4iCiAKLSM6IGxpYi9kaWZmLnRjbDoxMTYgbGliL2RpZmYudGNsOjE5MAorIzogbGliL2RpZmYudGNsOjEyMAorbXNnaWQgIiIKKyJMT0NBTDogZGVsZXRlZFxuIgorIlJFTU9URTpcbiIKK21zZ3N0ciAiIgorIkxPQ0FMRTogY2FuY2VsbGF0b1xuIgorIlJFTU9UTzpcbiIKKworIzogbGliL2RpZmYudGNsOjEyNQorbXNnaWQgIiIKKyJSRU1PVEU6IGRlbGV0ZWRcbiIKKyJMT0NBTDpcbiIKK21zZ3N0ciAiIgorIlJFTU9UTzogY2FuY2VsbGF0b1xuIgorIkxPQ0FMRTpcbiIKKworIzogbGliL2RpZmYudGNsOjEzMgorbXNnaWQgIkxPQ0FMOlxuIgorbXNnc3RyICJMT0NBTEU6XG4iCisKKyM6IGxpYi9kaWZmLnRjbDoxMzUKK21zZ2lkICJSRU1PVEU6XG4iCittc2dzdHIgIlJFTU9UTzpcbiIKKworIzogbGliL2RpZmYudGNsOjE5NyBsaWIvZGlmZi50Y2w6Mjk2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGRpc3BsYXkgJXMiCiBtc2dzdHIgIkltcG9zc2liaWxlIHZpc3VhbGl6emFyZSAlcyIKIAotIzogbGliL2RpZmYudGNsOjExNworIzogbGliL2RpZmYudGNsOjE5OAogbXNnaWQgIkVycm9yIGxvYWRpbmcgZmlsZToiCiBtc2dzdHIgIkVycm9yZSBuZWwgY2FyaWNhbWVudG8gZGVsIGZpbGU6IgogCi0jOiBsaWIvZGlmZi50Y2w6MTI0CisjOiBsaWIvZGlmZi50Y2w6MjA1CiBtc2dpZCAiR2l0IFJlcG9zaXRvcnkgKHN1YnByb2plY3QpIgogbXNnc3RyICJBcmNoaXZpbyBHaXQgKHNvdHRvcHJvZ2V0dG8pIgogCi0jOiBsaWIvZGlmZi50Y2w6MTM2CisjOiBsaWIvZGlmZi50Y2w6MjE3CiBtc2dpZCAiKiBCaW5hcnkgZmlsZSAobm90IHNob3dpbmcgY29udGVudCkuIgogbXNnc3RyICIqIEZpbGUgYmluYXJpbyAoaWwgY29udGVudXRvIG5vbiBzYXLDoCBtb3N0cmF0bykuIgogCi0jOiBsaWIvZGlmZi50Y2w6MTkxCi1tc2dpZCAiRXJyb3IgbG9hZGluZyBkaWZmOiIKLW1zZ3N0ciAiRXJyb3JlIG5lbCBjYXJpY2FtZW50byBkZWxsZSBkaWZmZXJlbnplOiIKKyM6IGxpYi9kaWZmLnRjbDoyMjIKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiKiBVbnRyYWNrZWQgZmlsZSBpcyAlZCBieXRlcy5cbiIKKyIqIFNob3dpbmcgb25seSBmaXJzdCAlZCBieXRlcy5cbiIKK21zZ3N0ciAiIgorIiogSWwgZmlsZSBub24gdHJhY2NpYXRvIMOoIGRpICVkIGJ5dGUuXG4iCisiKiBTYXJhbm5vIHZpc3VhbGl6emF0aSBzb2xvIGkgcHJpbWkgJWQgYnl0ZS5cbiIKIAotIzogbGliL2RpZmYudGNsOjMxMworIzogbGliL2RpZmYudGNsOjIyOAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIqIFVudHJhY2tlZCBmaWxlIGNsaXBwZWQgaGVyZSBieSAlcy5cbiIKKyIqIFRvIHNlZSB0aGUgZW50aXJlIGZpbGUsIHVzZSBhbiBleHRlcm5hbCBlZGl0b3IuXG4iCittc2dzdHIgIiIKKyJcbiIKKyIqICVzIG5vbiB2aXN1YWxpenphIGNvbXBsZXRhbWVudGUgcXVlc3RvIGZpbGUgbm9uIHRyYWNjaWF0by5cbiIKKyIqIFBlciB2aXN1YWxpenphcmUgaWwgZmlsZSBjb21wbGV0bywgdXNhcmUgdW4gcHJvZ3JhbW1hIGVzdGVybm8uXG4iCisKKyM6IGxpYi9kaWZmLnRjbDo0MzYKIG1zZ2lkICJGYWlsZWQgdG8gdW5zdGFnZSBzZWxlY3RlZCBodW5rLiIKIG1zZ3N0ciAiSW1wb3NzaWJpbGUgcmltdW92ZXJlIGxhIHNlemlvbmUgc2NlbHRhIGRhbGxhIG51b3ZhIHJldmlzaW9uZS4iCiAKLSM6IGxpYi9kaWZmLnRjbDozMjAKKyM6IGxpYi9kaWZmLnRjbDo0NDMKIG1zZ2lkICJGYWlsZWQgdG8gc3RhZ2Ugc2VsZWN0ZWQgaHVuay4iCiBtc2dzdHIgIkltcG9zc2liaWxlIHByZXBhcmFyZSBsYSBzZXppb25lIHNjZWx0YSBwZXIgdW5hIG51b3ZhIHJldmlzaW9uZS4iCiAKLSM6IGxpYi9kaWZmLnRjbDozODYKKyM6IGxpYi9kaWZmLnRjbDo1MDkKIG1zZ2lkICJGYWlsZWQgdG8gdW5zdGFnZSBzZWxlY3RlZCBsaW5lLiIKIG1zZ3N0ciAiSW1wb3NzaWJpbGUgcmltdW92ZXJlIGxhIHJpZ2Egc2NlbHRhIGRhbGxhIG51b3ZhIHJldmlzaW9uZS4iCiAKLSM6IGxpYi9kaWZmLnRjbDozOTQKKyM6IGxpYi9kaWZmLnRjbDo1MTcKIG1zZ2lkICJGYWlsZWQgdG8gc3RhZ2Ugc2VsZWN0ZWQgbGluZS4iCiBtc2dzdHIgIkltcG9zc2liaWxlIHByZXBhcmFyZSBsYSByaWdhIHNjZWx0YSBwZXIgdW5hIG51b3ZhIHJldmlzaW9uZS4iCiAKKyM6IGxpYi9lbmNvZGluZy50Y2w6NDQzCittc2dpZCAiRGVmYXVsdCIKK21zZ3N0ciAiUHJlZGVmaW5pdG8iCisKKyM6IGxpYi9lbmNvZGluZy50Y2w6NDQ4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiU3lzdGVtICglcykiCittc2dzdHIgIkNvZGlmaWNhIGRpIHNpc3RlbWEgKCVzKSIKKworIzogbGliL2VuY29kaW5nLnRjbDo0NTkgbGliL2VuY29kaW5nLnRjbDo0NjUKK21zZ2lkICJPdGhlciIKK21zZ3N0ciAiQWx0cm8iCisKICM6IGxpYi9lcnJvci50Y2w6MjAgbGliL2Vycm9yLnRjbDoxMTQKIG1zZ2lkICJlcnJvciIKIG1zZ3N0ciAiZXJyb3JlIgpAQCAtMTU0Nyw0MCArMTcwMCw0OSBAQAogbXNnaWQgIlVubG9jayBJbmRleCIKIG1zZ3N0ciAiU2Jsb2NjYSBsJ2FjY2Vzc28gYWxsJ2luZGljZSIKIAotIzogbGliL2luZGV4LnRjbDoyODIKKyM6IGxpYi9pbmRleC50Y2w6Mjg3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5zdGFnaW5nICVzIGZyb20gY29tbWl0IgogbXNnc3RyICIlcyBub24gZmFyw6AgcGFydGUgZGVsbGEgcHJvc3NpbWEgcmV2aXNpb25lIgogCi0jOiBsaWIvaW5kZXgudGNsOjMxMworIzogbGliL2luZGV4LnRjbDozMjYKIG1zZ2lkICJSZWFkeSB0byBjb21taXQuIgogbXNnc3RyICJQcm9udG8gcGVyIGNyZWFyZSB1bmEgbnVvdmEgcmV2aXNpb25lLiIKIAotIzogbGliL2luZGV4LnRjbDozMjYKKyM6IGxpYi9pbmRleC50Y2w6MzM5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQWRkaW5nICVzIgogbXNnc3RyICJBZ2dpdW50YSBkaSAlcyBpbiBjb3JzbyIKIAotIzogbGliL2luZGV4LnRjbDozODEKKyM6IGxpYi9pbmRleC50Y2w6Mzk2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmV2ZXJ0IGNoYW5nZXMgaW4gZmlsZSAlcz8iCiBtc2dzdHIgIkFubnVsbGFyZSBsZSBtb2RpZmljaGUgbmVsIGZpbGUgJXM/IgogCi0jOiBsaWIvaW5kZXgudGNsOjM4MworIzogbGliL2luZGV4LnRjbDozOTgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJSZXZlcnQgY2hhbmdlcyBpbiB0aGVzZSAlaSBmaWxlcz8iCiBtc2dzdHIgIkFubnVsbGFyZSBsZSBtb2RpZmljaGUgaW4gcXVlc3RpICVpIGZpbGU/IgogCi0jOiBsaWIvaW5kZXgudGNsOjM5MQorIzogbGliL2luZGV4LnRjbDo0MDYKIG1zZ2lkICJBbnkgdW5zdGFnZWQgY2hhbmdlcyB3aWxsIGJlIHBlcm1hbmVudGx5IGxvc3QgYnkgdGhlIHJldmVydC4iCiBtc2dzdHIgIiIKICJUdXR0ZSBsZSBtb2RpZmljaGUgbm9uIHByZXBhcmF0ZSBwZXIgdW5hIG51b3ZhIHJldmlzaW9uZSBzYXJhbm5vIHBlcnNlIHBlciAiCiAic2VtcHJlLiIKIAotIzogbGliL2luZGV4LnRjbDozOTQKKyM6IGxpYi9pbmRleC50Y2w6NDA5CiBtc2dpZCAiRG8gTm90aGluZyIKIG1zZ3N0ciAiTm9uIGZhcmUgbmllbnRlIgogCisjOiBsaWIvaW5kZXgudGNsOjQyNworbXNnaWQgIlJldmVydGluZyBzZWxlY3RlZCBmaWxlcyIKK21zZ3N0ciAiQW5udWxsbyBsZSBtb2RpZmljaGUgbmVpIGZpbGUgc2VsZXppb25hdGkiCisKKyM6IGxpYi9pbmRleC50Y2w6NDMxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiUmV2ZXJ0aW5nICVzIgorbXNnc3RyICJBbm51bGxvIGxlIG1vZGlmaWNoZSBpbiAlcyIKKwogIzogbGliL21lcmdlLnRjbDoxMwogbXNnaWQgIiIKICJDYW5ub3QgbWVyZ2Ugd2hpbGUgYW1lbmRpbmcuXG4iCkBAIC0xNjA4LDcgKzE3NzAsNyBAQAogIlxuIgogIkxhIG51b3ZhIGFuYWxpc2kgY29taW5jZXLDoCBvcmEuXG4iCiAKLSM6IGxpYi9tZXJnZS50Y2w6NDQKKyM6IGxpYi9tZXJnZS50Y2w6NDUKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiWW91IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGEgY29uZmxpY3RlZCBtZXJnZS5cbiIKQEAgLTE2MjYsNyArMTc4OCw3IEBACiAiaW5maW5lIGNyZWFybGEgcGVyIGNvbXBsZXRhcmUgbGEgZnVzaW9uZSBhdHR1YWxlLiBTb2xvIGEgcXVlc3RvIHB1bnRvIHBvdHJhaSAiCiAiaW5pemlhcmUgdW4nYWx0cmEgZnVzaW9uZS5cbiIKIAotIzogbGliL21lcmdlLnRjbDo1NAorIzogbGliL21lcmdlLnRjbDo1NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBjaGFuZ2UuXG4iCkBAIC0xNjQ0LDM0ICsxODA2LDM0IEBACiAidW5hIGZ1c2lvbmUuIEluIHF1ZXN0byBtb2RvIHNhcsOgIHBpw7kgZmFjaWxlIGludGVycm9tcGVyZSB1bmEgZnVzaW9uZSBub24gIgogInJpdXNjaXRhLCBuZWwgY2FzbyBjZSBuZSBmb3NzZSBiaXNvZ25vLlxuIgogCi0jOiBsaWIvbWVyZ2UudGNsOjEwNgorIzogbGliL21lcmdlLnRjbDoxMDcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIlcyBvZiAlcyIKIG1zZ3N0ciAiJXMgZGkgJXMiCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTE5CisjOiBsaWIvbWVyZ2UudGNsOjEyMAogIywgdGNsLWZvcm1hdAogbXNnaWQgIk1lcmdpbmcgJXMgYW5kICVzLi4uIgogbXNnc3RyICJGdXNpb25lIGRpICVzIGUgJXMgaW4gY29yc28uLi4iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTMwCisjOiBsaWIvbWVyZ2UudGNsOjEzMQogbXNnaWQgIk1lcmdlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIgogbXNnc3RyICJGdXNpb25lIGNvbXBsZXRhdGEgY29uIHN1Y2Nlc3NvLiIKIAotIzogbGliL21lcmdlLnRjbDoxMzIKKyM6IGxpYi9tZXJnZS50Y2w6MTMzCiBtc2dpZCAiTWVyZ2UgZmFpbGVkLiAgQ29uZmxpY3QgcmVzb2x1dGlvbiBpcyByZXF1aXJlZC4iCiBtc2dzdHIgIkZ1c2lvbmUgbm9uIHJpdXNjaXRhLiBCaXNvZ25hIHJpc29sdmVyZSBpIGNvbmZsaXR0aS4iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTU3CisjOiBsaWIvbWVyZ2UudGNsOjE1OAogIywgdGNsLWZvcm1hdAogbXNnaWQgIk1lcmdlIEludG8gJXMiCiBtc2dzdHIgIkZ1c2lvbmUgaW4gJXMiCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTc2CisjOiBsaWIvbWVyZ2UudGNsOjE3NwogbXNnaWQgIlJldmlzaW9uIFRvIE1lcmdlIgogbXNnc3RyICJSZXZpc2lvbmUgZGEgZm9uZGVyZSIKIAotIzogbGliL21lcmdlLnRjbDoyMTEKKyM6IGxpYi9tZXJnZS50Y2w6MjEyCiBtc2dpZCAiIgogIkNhbm5vdCBhYm9ydCB3aGlsZSBhbWVuZGluZy5cbiIKICJcbiIKQEAgLTE2ODEsNyArMTg0Myw3IEBACiAiXG4iCiAiQmlzb2duYSBmaW5pcmUgZGkgY29ycmVnZ2VyZSBxdWVzdGEgcmV2aXNpb25lLlxuIgogCi0jOiBsaWIvbWVyZ2UudGNsOjIyMQorIzogbGliL21lcmdlLnRjbDoyMjIKIG1zZ2lkICIiCiAiQWJvcnQgbWVyZ2U/XG4iCiAiXG4iCkBAIC0xNjk2LDcgKzE4NTgsNyBAQAogIlxuIgogIkNvbnRpbnVhcmUgY29uIGwnaW50ZXJydXppb25lIGRlbGxhIGZ1c2lvbmUgYXR0dWFsZT8iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjI3CisjOiBsaWIvbWVyZ2UudGNsOjIyOAogbXNnaWQgIiIKICJSZXNldCBjaGFuZ2VzP1xuIgogIlxuIgpAQCAtMTcwNCwxNTEgKzE4NjYsMzUyIEBACiAiXG4iCiAiQ29udGludWUgd2l0aCByZXNldHRpbmcgdGhlIGN1cnJlbnQgY2hhbmdlcz8iCiBtc2dzdHIgIiIKLSJSaXByaXN0aW5hcmUgbGEgcmV2aXNpb25lIGNvcnJlbnRlIGUgYW5udWxsYXJlIGxlIG1vZGlmaWNoZT9cbiIKKyJSaXByaXN0aW5hcmUgbGEgcmV2aXNpb25lIGF0dHVhbGUgZSBhbm51bGxhcmUgbGUgbW9kaWZpY2hlP1xuIgogIlxuIgogIkwnYW5udWxsYW1lbnRvIGRlbGxlIG1vZGlmaWNoZSBjYXVzZXLDoCBsYSBwZXJkaXRhIGRpICpUVVRURSogbGUgbW9kaWZpY2hlICIKICJub24gYW5jb3JhIHByZXNlbnRpIG5lbGwnYXJjaGl2aW8uXG4iCiAiXG4iCiAiQ29udGludWFyZSBjb24gbCdhbm51bGxhbWVudG8gZGVsbGUgbW9kaWZpY2hlIGF0dHVhbGk/IgogCi0jOiBsaWIvbWVyZ2UudGNsOjIzOAorIzogbGliL21lcmdlLnRjbDoyMzkKIG1zZ2lkICJBYm9ydGluZyIKIG1zZ3N0ciAiSW50ZXJydXppb25lIgogCi0jOiBsaWIvbWVyZ2UudGNsOjIzOAorIzogbGliL21lcmdlLnRjbDoyMzkKIG1zZ2lkICJmaWxlcyByZXNldCIKIG1zZ3N0ciAicmlwcmlzdGlubyBmaWxlIgogCi0jOiBsaWIvbWVyZ2UudGNsOjI2NgorIzogbGliL21lcmdlLnRjbDoyNjcKIG1zZ2lkICJBYm9ydCBmYWlsZWQuIgogbXNnc3RyICJJbnRlcnJ1emlvbmUgbm9uIHJpdXNjaXRhLiIKIAotIzogbGliL21lcmdlLnRjbDoyNjgKKyM6IGxpYi9tZXJnZS50Y2w6MjY5CiBtc2dpZCAiQWJvcnQgY29tcGxldGVkLiAgUmVhZHkuIgogbXNnc3RyICJJbnRlcnJ1emlvbmUgY29tcGxldGF0YS4gUHJvbnRvLiIKIAotIzogbGliL29wdGlvbi50Y2w6OTUKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjgKK21zZ2lkICJGb3JjZSByZXNvbHV0aW9uIHRvIHRoZSBiYXNlIHZlcnNpb24/IgorbXNnc3RyICJJbXBvcnJlIGxhIHJpc29sdXppb25lIGFsbGEgcmV2aXNpb25lIGNvbXVuZT8iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjkKK21zZ2lkICJGb3JjZSByZXNvbHV0aW9uIHRvIHRoaXMgYnJhbmNoPyIKK21zZ3N0ciAiSW1wb3JyZSBsYSByaXNvbHV6aW9uZSBhbCByYW1vIGF0dHVhbGU/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoxMAorbXNnaWQgIkZvcmNlIHJlc29sdXRpb24gdG8gdGhlIG90aGVyIGJyYW5jaD8iCittc2dzdHIgIkltcG9ycmUgbGEgcmlzb2x1emlvbmUgYWxsJ2FsdHJvIHJhbW8/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoxNAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJOb3RlIHRoYXQgdGhlIGRpZmYgc2hvd3Mgb25seSBjb25mbGljdGluZyBjaGFuZ2VzLlxuIgorIlxuIgorIiVzIHdpbGwgYmUgb3ZlcndyaXR0ZW4uXG4iCisiXG4iCisiVGhpcyBvcGVyYXRpb24gY2FuIGJlIHVuZG9uZSBvbmx5IGJ5IHJlc3RhcnRpbmcgdGhlIG1lcmdlLiIKK21zZ3N0ciAiIgorIlNpIHN0YW5ubyBtb3N0cmFuZG8gc29sbyBsZSBtb2RpZmljaGUgY29uIGNvbmZsaXR0aS5cbiIKKyJcbiIKKyIlcyBzYXLDoCBzb3ZyYXNjcml0dG8uXG4iCisiXG4iCisiUXVlc3RhIG9wZXJhemlvbmUgcHXDsiBlc3NlcmUgbW9kaWZpY2F0YSBzb2xvIHJpY29taW5jaWFuZG8gbGEgZnVzaW9uZS4iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjQ1CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRmlsZSAlcyBzZWVtcyB0byBoYXZlIHVucmVzb2x2ZWQgY29uZmxpY3RzLCBzdGlsbCBzdGFnZT8iCittc2dzdHIgIiIKKyJJbCBmaWxlICVzIHNlbWJyYSBjb250ZW5lcmUgY29uZmxpdHRpIG5vbiByaXNvbHRpLCBwcmVwYXJhcmUgcGVyIGxhIHByb3NzaW1hICIKKyJyZXZpc2lvbmU/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDo2MAorIywgdGNsLWZvcm1hdAorbXNnaWQgIkFkZGluZyByZXNvbHV0aW9uIGZvciAlcyIKK21zZ3N0ciAiIgorIkxhIHJpc29sdXppb25lIGRlaSBjb25mbGl0dGkgcGVyICVzIMOoIHByZXBhcmF0YSBwZXIgbGEgcHJvc3NpbWEgcmV2aXNpb25lIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoxNDEKK21zZ2lkICJDYW5ub3QgcmVzb2x2ZSBkZWxldGlvbiBvciBsaW5rIGNvbmZsaWN0cyB1c2luZyBhIHRvb2wiCittc2dzdHIgIiIKKyJOb24gw6ggcG9zc2liaWxlIHJpc29sdmVyZSBpIGNvbmZsaXR0aSBwZXIgY2FuY2VsbGF6aW9uaSBvIGxpbmsgY29uIHVuICIKKyJwcm9ncmFtbWEgZXN0ZXJubyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MTQ2Cittc2dpZCAiQ29uZmxpY3QgZmlsZSBkb2VzIG5vdCBleGlzdCIKK21zZ3N0ciAiTm9uIGVzaXN0ZSB1biBmaWxlIGNvbiBjb25mbGl0dGkuIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoyNjQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJOb3QgYSBHVUkgbWVyZ2UgdG9vbDogJyVzJyIKK21zZ3N0ciAiJyVzJyBub24gw6ggdW5hIEdVSSBwZXIgbGEgcmlzb2x1emlvbmUgZGVpIGNvbmZsaXR0aS4iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjI2OAorIywgdGNsLWZvcm1hdAorbXNnaWQgIlVuc3VwcG9ydGVkIG1lcmdlIHRvb2wgJyVzJyIKK21zZ3N0ciAiSWwgcHJvZ3JhbW1hICclcycgbm9uIMOoIHN1cHBvcnRhdG8iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjMwMworbXNnaWQgIk1lcmdlIHRvb2wgaXMgYWxyZWFkeSBydW5uaW5nLCB0ZXJtaW5hdGUgaXQ/IgorbXNnc3RyICJMYSByaXNvbHV6aW9uZSBkZWkgY29uZmxpdHRpIMOoIGdpw6AgYXZ2aWF0YSwgdGVybWluYXJsYT8iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjMyMworIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJFcnJvciByZXRyaWV2aW5nIHZlcnNpb25zOlxuIgorIiVzIgorbXNnc3RyICIiCisiRXJyb3JlOiByZXZpc2lvbmUgbm9uIHRyb3ZhdGE6XG4iCisiJXMiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjM0MworIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZCBub3Qgc3RhcnQgdGhlIG1lcmdlIHRvb2w6XG4iCisiXG4iCisiJXMiCittc2dzdHIgIiIKKyJJbXBvc3NpYmlsZSBhdnZpYXJlIGxhIHJpc29sdXppb25lIGRlaSBjb25mbGl0dGk6XG4iCisiXG4iCisiJXMiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjM0NworbXNnaWQgIlJ1bm5pbmcgbWVyZ2UgdG9vbC4uLiIKK21zZ3N0ciAiQXZ2aW8gZGVsIHByb2dyYW1tYSBwZXIgbGEgcmlzb2x1emlvbmUgZGVpIGNvbmZsaXR0aSBpbiBjb3Jzby4uLiIKKworIzogbGliL21lcmdldG9vbC50Y2w6Mzc1IGxpYi9tZXJnZXRvb2wudGNsOjM4MworbXNnaWQgIk1lcmdlIHRvb2wgZmFpbGVkLiIKK21zZ3N0ciAiUmlzb2x1emlvbmUgZGVpIGNvbmZsaXR0aSBub24gcml1c2NpdGEuIgorCisjOiBsaWIvb3B0aW9uLnRjbDoxMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIkludmFsaWQgZ2xvYmFsIGVuY29kaW5nICclcyciCittc2dzdHIgIiIKKyJMYSBjb2RpZmljYSBkZWkgY2FyYXR0ZXJpICclcycgc3BlY2lmaWNhdGEgcGVyIHR1dHRpIGdsaSBhcmNoaXZpIG5vbiDDqCB2YWxpZGEiCisKKyM6IGxpYi9vcHRpb24udGNsOjE5CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByZXBvIGVuY29kaW5nICclcyciCittc2dzdHIgIiIKKyJMYSBjb2RpZmljYSBkZWkgY2FyYXR0ZXJpICclcycgc3BlY2lmaWNhdGEgcGVyIGwnYXJjaGl2aW8gYXR0dWFsZSAgbm9uIMOoICIKKyJ2YWxpZGEiCisKKyM6IGxpYi9vcHRpb24udGNsOjExNwogbXNnaWQgIlJlc3RvcmUgRGVmYXVsdHMiCiBtc2dzdHIgIlJpcHJpc3RpbmEgdmFsb3JpIHByZWRlZmluaXRpIgogCi0jOiBsaWIvb3B0aW9uLnRjbDo5OQorIzogbGliL29wdGlvbi50Y2w6MTIxCiBtc2dpZCAiU2F2ZSIKIG1zZ3N0ciAiU2FsdmEiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEwOQorIzogbGliL29wdGlvbi50Y2w6MTMxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiJXMgUmVwb3NpdG9yeSIKIG1zZ3N0ciAiQXJjaGl2aW8gZGkgJXMiCiAKLSM6IGxpYi9vcHRpb24udGNsOjExMAorIzogbGliL29wdGlvbi50Y2w6MTMyCiBtc2dpZCAiR2xvYmFsIChBbGwgUmVwb3NpdG9yaWVzKSIKIG1zZ3N0ciAiVHV0dGkgZ2xpIGFyY2hpdmkiCiAKLSM6IGxpYi9vcHRpb24udGNsOjExNgorIzogbGliL29wdGlvbi50Y2w6MTM4CiBtc2dpZCAiVXNlciBOYW1lIgogbXNnc3RyICJOb21lIHV0ZW50ZSIKIAotIzogbGliL29wdGlvbi50Y2w6MTE3CisjOiBsaWIvb3B0aW9uLnRjbDoxMzkKIG1zZ2lkICJFbWFpbCBBZGRyZXNzIgogbXNnc3RyICJJbmRpcml6em8gRW1haWwiCiAKLSM6IGxpYi9vcHRpb24udGNsOjExOQorIzogbGliL29wdGlvbi50Y2w6MTQxCiBtc2dpZCAiU3VtbWFyaXplIE1lcmdlIENvbW1pdHMiCiBtc2dzdHIgIlJpZXBpbG9nbyBuZWxsZSByZXZpc2lvbmkgZGkgZnVzaW9uZSIKIAotIzogbGliL29wdGlvbi50Y2w6MTIwCisjOiBsaWIvb3B0aW9uLnRjbDoxNDIKIG1zZ2lkICJNZXJnZSBWZXJib3NpdHkiCiBtc2dzdHIgIlByb2xpc3NpdMOgIGRlbGxhIGZ1c2lvbmUiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyMQorIzogbGliL29wdGlvbi50Y2w6MTQzCiBtc2dpZCAiU2hvdyBEaWZmc3RhdCBBZnRlciBNZXJnZSIKIG1zZ3N0ciAiTW9zdHJhIHN0YXRpc3RpY2hlIGRlbGxlIGRpZmZlcmVuemUgZG9wbyBsYSBmdXNpb25lIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjMKKyM6IGxpYi9vcHRpb24udGNsOjE0NAorbXNnaWQgIlVzZSBNZXJnZSBUb29sIgorbXNnc3RyICJQcm9ncmFtbWEgZGEgdXRpbGl6emFyZSBwZXIgbGEgcmlzb2x1emlvbmUgZGVpIGNvbmZsaXR0aSIKKworIzogbGliL29wdGlvbi50Y2w6MTQ2CiBtc2dpZCAiVHJ1c3QgRmlsZSBNb2RpZmljYXRpb24gVGltZXN0YW1wcyIKIG1zZ3N0ciAiRmlkYXRpIGRlbGxlIGRhdGUgZGkgbW9kaWZpY2EgZGVpIGZpbGUiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyNAorIzogbGliL29wdGlvbi50Y2w6MTQ3CiBtc2dpZCAiUHJ1bmUgVHJhY2tpbmcgQnJhbmNoZXMgRHVyaW5nIEZldGNoIgogbXNnc3RyICIiCiAiRWZmZXR0dWEgcG90YXR1cmEgZGVpIGR1cGxpY2F0aSBsb2NhbGkgZGkgcmFtaSByZW1vdGkgZHVyYW50ZSBpbCByZWN1cGVybyIKIAotIzogbGliL29wdGlvbi50Y2w6MTI1CisjOiBsaWIvb3B0aW9uLnRjbDoxNDgKIG1zZ2lkICJNYXRjaCBUcmFja2luZyBCcmFuY2hlcyIKIG1zZ3N0ciAiQXBwYWlhIGR1cGxpY2F0aSBsb2NhbGkgZGkgcmFtaSByZW1vdGkiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyNgorIzogbGliL29wdGlvbi50Y2w6MTQ5CiBtc2dpZCAiQmxhbWUgQ29weSBPbmx5IE9uIENoYW5nZWQgRmlsZXMiCiBtc2dzdHIgIlJpY2VyY2EgY29waWUgc29sbyBuZWkgZmlsZSBtb2RpZmljYXRpIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjcKKyM6IGxpYi9vcHRpb24udGNsOjE1MAogbXNnaWQgIk1pbmltdW0gTGV0dGVycyBUbyBCbGFtZSBDb3B5IE9uIgogbXNnc3RyICJOdW1lcm8gbWluaW1vIGRpIGxldHRlcmUgY2hlIGF0dGl2YW5vIGxhIHJpY2VyY2EgZGVsbGUgY29waWUiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyOAorIzogbGliL29wdGlvbi50Y2w6MTUxCittc2dpZCAiQmxhbWUgSGlzdG9yeSBDb250ZXh0IFJhZGl1cyAoZGF5cykiCittc2dzdHIgIkdpb3JuaSBkaSBjb250ZXN0byBuZWxsYSBjcm9ub2xvZ2lhIGRlbGxlIGFubm90YXppb25pIgorCisjOiBsaWIvb3B0aW9uLnRjbDoxNTIKIG1zZ2lkICJOdW1iZXIgb2YgRGlmZiBDb250ZXh0IExpbmVzIgogbXNnc3RyICJOdW1lcm8gZGkgbGluZWUgZGkgY29udGVzdG8gbmVsbGUgZGlmZmVyZW56ZSIKIAotIzogbGliL29wdGlvbi50Y2w6MTI5CisjOiBsaWIvb3B0aW9uLnRjbDoxNTMKIG1zZ2lkICJDb21taXQgTWVzc2FnZSBUZXh0IFdpZHRoIgogbXNnc3RyICJMYXJnaGV6emEgZGVsIG1lc3NhZ2dpbyBkaSByZXZpc2lvbmUiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEzMAorIzogbGliL29wdGlvbi50Y2w6MTU0CiBtc2dpZCAiTmV3IEJyYW5jaCBOYW1lIFRlbXBsYXRlIgogbXNnc3RyICJNb2RlbGxvIHBlciBpbCBub21lIGRpIHVuIG51b3ZvIHJhbW8iCiAKLSM6IGxpYi9vcHRpb24udGNsOjE5NAorIzogbGliL29wdGlvbi50Y2w6MTU1Cittc2dpZCAiRGVmYXVsdCBGaWxlIENvbnRlbnRzIEVuY29kaW5nIgorbXNnc3RyICJDb2RpZmljYSBwcmVkZWZpbml0YSBwZXIgaWwgY29udGVudXRvIGRlaSBmaWxlIgorCisjOiBsaWIvb3B0aW9uLnRjbDoyMDMKK21zZ2lkICJDaGFuZ2UiCittc2dzdHIgIkNhbWJpYSIKKworIzogbGliL29wdGlvbi50Y2w6MjMwCiBtc2dpZCAiU3BlbGxpbmcgRGljdGlvbmFyeToiCiBtc2dzdHIgIkxpbmd1YSBkaXppb25hcmlvOiIKIAotIzogbGliL29wdGlvbi50Y2w6MjE4CisjOiBsaWIvb3B0aW9uLnRjbDoyNTQKIG1zZ2lkICJDaGFuZ2UgRm9udCIKIG1zZ3N0ciAiQ2FtYmlhIGNhcmF0dGVyaSIKIAotIzogbGliL29wdGlvbi50Y2w6MjIyCisjOiBsaWIvb3B0aW9uLnRjbDoyNTgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJDaG9vc2UgJXMiCiBtc2dzdHIgIlNjZWdsaSAlcyIKIAotIzogbGliL29wdGlvbi50Y2w6MjI4CisjOiBsaWIvb3B0aW9uLnRjbDoyNjQKIG1zZ2lkICJwdC4iCiBtc2dzdHIgInB0LiIKIAotIzogbGliL29wdGlvbi50Y2w6MjQyCisjOiBsaWIvb3B0aW9uLnRjbDoyNzgKIG1zZ2lkICJQcmVmZXJlbmNlcyIKIG1zZ3N0ciAiUHJlZmVyZW56ZSIKIAotIzogbGliL29wdGlvbi50Y2w6Mjc3CisjOiBsaWIvb3B0aW9uLnRjbDozMTQKIG1zZ2lkICJGYWlsZWQgdG8gY29tcGxldGVseSBzYXZlIG9wdGlvbnM6IgogbXNnc3RyICJJbXBvc3NpYmlsZSBzYWx2YXJlIGNvbXBsZXRhbWVudGUgbGUgb3B6aW9uaToiCiAKLSM6IGxpYi9yZW1vdGUudGNsOjE2NQorIzogbGliL3JlbW90ZS50Y2w6MTYzCittc2dpZCAiUmVtb3ZlIFJlbW90ZSIKK21zZ3N0ciAiUmltdW92aSBhcmNoaXZpbyByZW1vdG8iCisKKyM6IGxpYi9yZW1vdGUudGNsOjE2OAogbXNnaWQgIlBydW5lIGZyb20iCiBtc2dzdHIgIkVmZmV0dHVhIHBvdGF0dXJhIGRhIgogCi0jOiBsaWIvcmVtb3RlLnRjbDoxNzAKKyM6IGxpYi9yZW1vdGUudGNsOjE3MwogbXNnaWQgIkZldGNoIGZyb20iCiBtc2dzdHIgIlJlY3VwZXJhIGRhIgogCi0jOiBsaWIvcmVtb3RlLnRjbDoyMTMKKyM6IGxpYi9yZW1vdGUudGNsOjIxNQogbXNnaWQgIlB1c2ggdG8iCiBtc2dzdHIgIlByb3BhZ2EgdmVyc28iCiAKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxOQorbXNnaWQgIkFkZCBSZW1vdGUiCittc2dzdHIgIkFnZ2l1bmdpIGFyY2hpdmlvIHJlbW90byIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjI0Cittc2dpZCAiQWRkIE5ldyBSZW1vdGUiCittc2dzdHIgIkFnZ2l1bmdpIG51b3ZvIGFyY2hpdmlvIHJlbW90byIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjI4IGxpYi90b29sc19kbGcudGNsOjM2Cittc2dpZCAiQWRkIgorbXNnc3RyICJBZ2dpdW5naSIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjM3Cittc2dpZCAiUmVtb3RlIERldGFpbHMiCittc2dzdHIgIkRldHRhZ2xpIHN1bGwnYXJjaGl2aW8gcmVtb3RvIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NTAKK21zZ2lkICJMb2NhdGlvbjoiCittc2dzdHIgIlBvc2l6aW9uZToiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo2MgorbXNnaWQgIkZ1cnRoZXIgQWN0aW9uIgorbXNnc3RyICJBbHRyYSBhemlvbmUiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo2NQorbXNnaWQgIkZldGNoIEltbWVkaWF0ZWx5IgorbXNnc3RyICJSZWN1cGVyYSBzdWJpdG8iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo3MQorbXNnaWQgIkluaXRpYWxpemUgUmVtb3RlIFJlcG9zaXRvcnkgYW5kIFB1c2giCittc2dzdHIgIkluaXppYWxpenphIGwnYXJjaGl2aW8gcmVtb3RvIGUgcHJvcGFnYSIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjc3Cittc2dpZCAiRG8gTm90aGluZyBFbHNlIE5vdyIKK21zZ3N0ciAiTm9uIGZhcmUgYWx0cm8iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMDEKK21zZ2lkICJQbGVhc2Ugc3VwcGx5IGEgcmVtb3RlIG5hbWUuIgorbXNnc3RyICJJbnNlcmlyZSB1biBub21lIHBlciBsJ2FyY2hpdmlvIHJlbW90by4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMTQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICInJXMnIGlzIG5vdCBhbiBhY2NlcHRhYmxlIHJlbW90ZSBuYW1lLiIKK21zZ3N0ciAiJyVzJyBub24gw6ggdXRpbGl6emFiaWxlIGNvbWUgbm9tZSBkaSBhcmNoaXZpbyByZW1vdG8uIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTI1CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIGFkZCByZW1vdGUgJyVzJyBvZiBsb2NhdGlvbiAnJXMnLiIKK21zZ3N0ciAiSW1wb3NzaWJpbGUgYWdnaXVuZ2VyZSBsJ2FyY2hpdmlvIHJlbW90byAnJXMnIHBvc3RvIGluICclcycuIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTMzIGxpYi90cmFuc3BvcnQudGNsOjYKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJmZXRjaCAlcyIKK21zZ3N0ciAicmVjdXBlcmEgZGEgJXMiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMzQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGZXRjaGluZyB0aGUgJXMiCittc2dzdHIgIlJlY3VwZXJvICVzIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTU3CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRG8gbm90IGtub3cgaG93IHRvIGluaXRpYWxpemUgcmVwb3NpdG9yeSBhdCBsb2NhdGlvbiAnJXMnLiIKK21zZ3N0ciAiSW1wb3NzaWJpbGUgaW5pemlhbGl6emFyZSBsJ2FyY2hpdmlvIHBvc3RvIGluICclcycuIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTYzIGxpYi90cmFuc3BvcnQudGNsOjI1IGxpYi90cmFuc3BvcnQudGNsOjYzCisjOiBsaWIvdHJhbnNwb3J0LnRjbDo4MQorIywgdGNsLWZvcm1hdAorbXNnaWQgInB1c2ggJXMiCittc2dzdHIgInByb3BhZ2EgdmVyc28gJXMiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxNjQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHVwIHRoZSAlcyAoYXQgJXMpIgorbXNnc3RyICJJbXBvc3RvICVzIChpbiAlcykiCisKICM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6MjkgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDozNAotbXNnaWQgIkRlbGV0ZSBSZW1vdGUgQnJhbmNoIgotbXNnc3RyICJDYW5jZWxsYSByYW1vIHJlbW90byIKK21zZ2lkICJEZWxldGUgQnJhbmNoIFJlbW90ZWx5IgorbXNnc3RyICJFbGltaW5hIHJhbW8gcmVtb3RvIgogCiAjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjQ3CiBtc2dpZCAiRnJvbSBSZXBvc2l0b3J5IgogbXNnc3RyICJEYSBhcmNoaXZpbyIKIAotIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo1MCBsaWIvdHJhbnNwb3J0LnRjbDoxMjMKKyM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NTAgbGliL3RyYW5zcG9ydC50Y2w6MTM0CiBtc2dpZCAiUmVtb3RlOiIKIG1zZ3N0ciAiUmVtb3RvOiIKIAotIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo2NiBsaWIvdHJhbnNwb3J0LnRjbDoxMzgKLW1zZ2lkICJBcmJpdHJhcnkgVVJMOiIKLW1zZ3N0ciAiVVJMIHNwZWNpZmljbzoiCisjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjY2IGxpYi90cmFuc3BvcnQudGNsOjE0OQorbXNnaWQgIkFyYml0cmFyeSBMb2NhdGlvbjoiCittc2dzdHIgIlBvc2l6aW9uZSBzcGVjaWZpY2E6IgogCiAjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjg0CiBtc2dpZCAiQnJhbmNoZXMiCkBAIC0xOTE4LDYgKzIyODEsMjIgQEAKIG1zZ2lkICJTY2FubmluZyAlcy4uLiIKIG1zZ3N0ciAiQW5hbGlzaSBpbiBjb3JzbyAlcy4uLiIKIAorIzogbGliL3NlYXJjaC50Y2w6MjEKK21zZ2lkICJGaW5kOiIKK21zZ3N0ciAiVHJvdmE6IgorCisjOiBsaWIvc2VhcmNoLnRjbDoyMworbXNnaWQgIk5leHQiCittc2dzdHIgIlN1Y2MiCisKKyM6IGxpYi9zZWFyY2gudGNsOjI0Cittc2dpZCAiUHJldiIKK21zZ3N0ciAiUHJlYyIKKworIzogbGliL3NlYXJjaC50Y2w6MjUKK21zZ2lkICJDYXNlLVNlbnNpdGl2ZSIKK21zZ3N0ciAiRGlzdGluZ3VpIG1haXVzY29sZSIKKwogIzogbGliL3Nob3J0Y3V0LnRjbDoyMCBsaWIvc2hvcnRjdXQudGNsOjYxCiBtc2dpZCAiQ2Fubm90IHdyaXRlIHNob3J0Y3V0OiIKIG1zZ3N0ciAiSW1wb3NzaWJpbGUgc2NyaXZlcmUgc2hvcnRjdXQ6IgpAQCAtMTk1NSwyMyArMjMzNCwxODkgQEAKIG1zZ2lkICJObyBTdWdnZXN0aW9ucyIKIG1zZ3N0ciAiTmVzc3VuIHN1Z2dlcmltZW50byIKIAotIzogbGliL3NwZWxsY2hlY2sudGNsOjM4NworIzogbGliL3NwZWxsY2hlY2sudGNsOjM4OAogbXNnaWQgIlVuZXhwZWN0ZWQgRU9GIGZyb20gc3BlbGwgY2hlY2tlciIKIG1zZ3N0ciAiSWwgY29ycmV0dG9yZSBvcnRvZ3JhZmljbyBoYSBtYW5kYXRvIHVuIEVPRiBpbmFzcGV0dGF0byIKIAotIzogbGliL3NwZWxsY2hlY2sudGNsOjM5MQorIzogbGliL3NwZWxsY2hlY2sudGNsOjM5MgogbXNnaWQgIlNwZWxsIENoZWNrZXIgRmFpbGVkIgogbXNnc3RyICJFcnJvcmUgbmVsIGNvcnJldHRvcmUgb3J0b2dyYWZpY28iCiAKKyM6IGxpYi9zc2hrZXkudGNsOjMxCittc2dpZCAiTm8ga2V5cyBmb3VuZC4iCittc2dzdHIgIkNoaWF2aSBub24gdHJvdmF0ZS4iCisKKyM6IGxpYi9zc2hrZXkudGNsOjM0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRm91bmQgYSBwdWJsaWMga2V5IGluOiAlcyIKK21zZ3N0ciAiQ2hpYXZlIHB1YmJsaWNhIHRyb3ZhdGEgaW46ICVzIgorCisjOiBsaWIvc3Noa2V5LnRjbDo0MAorbXNnaWQgIkdlbmVyYXRlIEtleSIKK21zZ3N0ciAiQ3JlYSBjaGlhdmUiCisKKyM6IGxpYi9zc2hrZXkudGNsOjU2Cittc2dpZCAiQ29weSBUbyBDbGlwYm9hcmQiCittc2dzdHIgIkNvcGlhIG5lZ2xpIGFwcHVudGkiCisKKyM6IGxpYi9zc2hrZXkudGNsOjcwCittc2dpZCAiWW91ciBPcGVuU1NIIFB1YmxpYyBLZXkiCittc2dzdHIgIkxhIHR1YSBjaGlhdmUgcHViYmxpY2EgT3BlblNTSCIKKworIzogbGliL3NzaGtleS50Y2w6NzgKK21zZ2lkICJHZW5lcmF0aW5nLi4uIgorbXNnc3RyICJDcmVhemlvbmUgY2hpYXZlIGluIGNvcnNvLi4uIgorCisjOiBsaWIvc3Noa2V5LnRjbDo4NAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZCBub3Qgc3RhcnQgc3NoLWtleWdlbjpcbiIKKyJcbiIKKyIlcyIKK21zZ3N0ciAiIgorIkltcG9zc2liaWxlIGF2dmlhcmUgc3NoLWtleWdlbjpcbiIKKyJcbiIKKyIlcyIKKworIzogbGliL3NzaGtleS50Y2w6MTExCittc2dpZCAiR2VuZXJhdGlvbiBmYWlsZWQuIgorbXNnc3RyICJFcnJvcmUgZHVyYW50ZSBsYSBjcmVhemlvbmUgZGVsbGEgY2hpYXZlLiIKKworIzogbGliL3NzaGtleS50Y2w6MTE4Cittc2dpZCAiR2VuZXJhdGlvbiBzdWNjZWRlZCwgYnV0IG5vIGtleXMgZm91bmQuIgorbXNnc3RyICJMYSBjaGlhdmUgw6ggc3RhdGEgY3JlYXRhIGNvbiBzdWNjZXNzbywgbWEgbm9uIMOoIHN0YXRhIHRyb3ZhdGEuIgorCisjOiBsaWIvc3Noa2V5LnRjbDoxMjEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJZb3VyIGtleSBpcyBpbjogJXMiCittc2dzdHIgIkxhIGNoaWF2ZSDDqCBpbjogJXMiCisKICM6IGxpYi9zdGF0dXNfYmFyLnRjbDo4MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIiVzIC4uLiAlKmkgb2YgJSppICVzICglM2klJSkiCiBtc2dzdHIgIiUxJHMgLi4uICU2JHM6ICUyJCppIGRpICU0JCppICglNyQzaSUlKSIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6NgorIzogbGliL3Rvb2xzLnRjbDo3NQogIywgdGNsLWZvcm1hdAotbXNnaWQgImZldGNoICVzIgotbXNnc3RyICJyZWN1cGVyYSBkYSAlcyIKK21zZ2lkICJSdW5uaW5nICVzIHJlcXVpcmVzIGEgc2VsZWN0ZWQgZmlsZS4iCittc2dzdHIgIkJpc29nbmEgc2VsZXppb25hcmUgdW4gZmlsZSBwcmltYSBkaSBlc2VndWlyZSAlcy4iCisKKyM6IGxpYi90b29scy50Y2w6OTAKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcnVuICVzPyIKK21zZ3N0ciAiVnVvaSBkYXZ2ZXJvIGVzZWd1aXJlICVzPyIKKworIzogbGliL3Rvb2xzLnRjbDoxMTAKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJUb29sOiAlcyIKK21zZ3N0ciAiU3RydW1lbnRvOiAlcyIKKworIzogbGliL3Rvb2xzLnRjbDoxMTEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJSdW5uaW5nOiAlcyIKK21zZ3N0ciAiRXNlZ3VvOiAlcyIKKworIzogbGliL3Rvb2xzLnRjbDoxNDkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJUb29sIGNvbXBsZXRlZCBzdWNjZXNmdWxseTogJXMiCittc2dzdHIgIklsIHByb2dyYW1tYSBlc3Rlcm5vIMOoIHRlcm1pbmF0byBjb24gc3VjY2Vzc286ICVzIgorCisjOiBsaWIvdG9vbHMudGNsOjE1MQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlRvb2wgZmFpbGVkOiAlcyIKK21zZ3N0ciAiSWwgcHJvZ3JhbW1hIGVzdGVybm8gaGEgcmlwb3J0YXRvIHVuIGVycm9yZTogJXMiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjIyCittc2dpZCAiQWRkIFRvb2wiCittc2dzdHIgIkFnZ2l1bmdpIHN0cnVtZW50byIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjgKK21zZ2lkICJBZGQgTmV3IFRvb2wgQ29tbWFuZCIKK21zZ3N0ciAiQWdnaXVuZ2kgdW4gbnVvdm8gY29tYW5kbyIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MzMKK21zZ2lkICJBZGQgZ2xvYmFsbHkiCittc2dzdHIgIkFnZ2l1bmdpIHBlciB0dXR0aSBnbGkgYXJjaGl2aSIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6NDUKK21zZ2lkICJUb29sIERldGFpbHMiCittc2dzdHIgIkRldHRhZ2xpIHN1bGxvIHN0cnVtZW50byIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6NDgKK21zZ2lkICJVc2UgJy8nIHNlcGFyYXRvcnMgdG8gY3JlYXRlIGEgc3VibWVudSB0cmVlOiIKK21zZ3N0ciAiVXRpbGl6emEgaWwgc2VwYXJhdG9yZSAnLycgcGVyIGNyZWFyZSB1biBhbGJlcm8gZGkgc290dG9tZW51OiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6NjEKK21zZ2lkICJDb21tYW5kOiIKK21zZ3N0ciAiQ29tYW5kbzoiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjc0Cittc2dpZCAiU2hvdyBhIGRpYWxvZyBiZWZvcmUgcnVubmluZyIKK21zZ3N0ciAiTW9zdHJhIHVuYSBmaW5lc3RyYSBkaSBkaWFsb2dvIHByaW1hIGRlbGwnYXZ2aW8iCisKKyM6IGxpYi90b29sc19kbGcudGNsOjgwCittc2dpZCAiQXNrIHRoZSB1c2VyIHRvIHNlbGVjdCBhIHJldmlzaW9uIChzZXRzICRSRVZJU0lPTikiCittc2dzdHIgIkNoaWVkaSBhbGwndXRlbnRlIGRpIHNjZWdsaWVyZSB1bmEgcmV2aXNpb25lIChpbXBvc3RhICRSRVZJU0lPTikiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjg1Cittc2dpZCAiQXNrIHRoZSB1c2VyIGZvciBhZGRpdGlvbmFsIGFyZ3VtZW50cyAoc2V0cyAkQVJHUykiCittc2dzdHIgIkNoaWVkaSBhbGwndXRlbnRlIGRpIGZvcm5pcmUgYXJnb21lbnRpIGFnZ2l1bnRpdmkgKGltcG9zdGEgJEFSR1MpIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo5MgorbXNnaWQgIkRvbid0IHNob3cgdGhlIGNvbW1hbmQgb3V0cHV0IHdpbmRvdyIKK21zZ3N0ciAiTm9uIG1vc3RyYXJlIGxhIGZpbmVzdHJhIGRpIGNvbWFuZG8iCisKKyM6IGxpYi90b29sc19kbGcudGNsOjk3Cittc2dpZCAiUnVuIG9ubHkgaWYgYSBkaWZmIGlzIHNlbGVjdGVkICgkRklMRU5BTUUgbm90IGVtcHR5KSIKK21zZ3N0ciAiQXZ2aWEgc29sbyBzZSDDqCBzZWxlemlvbmF0YSB1bmEgZGlmZmVyZW56YSAoJEZJTEVOQU1FIG5vbiDDqCB2dW90bykiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjEyMQorbXNnaWQgIlBsZWFzZSBzdXBwbHkgYSBuYW1lIGZvciB0aGUgdG9vbC4iCittc2dzdHIgIkJpc29nbmEgZGFyZSB1biBub21lIGFsbG8gc3RydW1lbnRvLiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTI5CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVG9vbCAnJXMnIGFscmVhZHkgZXhpc3RzLiIKK21zZ3N0ciAiTG8gc3RydW1lbnRvICclcycgZXNpc3RlIGdpw6AuIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoxNTEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiQ291bGQgbm90IGFkZCB0b29sOlxuIgorIiVzIgorbXNnc3RyICIiCisiSW1wb3NzaWJpbGUgYWdnaXVuZ2VyZSBsbyBzdHJ1bWVudG86XG4iCisiXG4iCisiJXMiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjE5MAorbXNnaWQgIlJlbW92ZSBUb29sIgorbXNnc3RyICJSaW11b3ZpIHN0cnVtZW50byIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTk2Cittc2dpZCAiUmVtb3ZlIFRvb2wgQ29tbWFuZHMiCittc2dzdHIgIlJpbXVvdmkgaSBjb21hbmRpIGRlbGxvIHN0cnVtZW50byIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjAwCittc2dpZCAiUmVtb3ZlIgorbXNnc3RyICJSaW11b3ZpIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoyMzYKK21zZ2lkICIoQmx1ZSBkZW5vdGVzIHJlcG9zaXRvcnktbG9jYWwgdG9vbHMpIgorbXNnc3RyICIoSWwgY29sb3JlIGJsdSBpbmRpY2Egc3RydW1lbnRpIHBlciBsJ2FyY2hpdmlvIGxvY2FsZSkiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjI5NworIywgdGNsLWZvcm1hdAorbXNnaWQgIlJ1biBDb21tYW5kOiAlcyIKK21zZ3N0ciAiQXZ2aWEgaWwgY29tYW5kbzogJXMiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjMxMQorbXNnaWQgIkFyZ3VtZW50cyIKK21zZ3N0ciAiQXJnb21lbnRpIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDozNDgKK21zZ2lkICJPSyIKK21zZ3N0ciAiT0siCiAKICM6IGxpYi90cmFuc3BvcnQudGNsOjcKICMsIHRjbC1mb3JtYXQKQEAgLTE5ODgsNDUgKzI1MzMsNDUgQEAKIG1zZ2lkICJQcnVuaW5nIHRyYWNraW5nIGJyYW5jaGVzIGRlbGV0ZWQgZnJvbSAlcyIKIG1zZ3N0ciAiRWZmZXR0dWEgcG90YXR1cmEgZGVpIGR1cGxpY2F0aSBsb2NhbGkgZGkgcmFtaSByZW1vdGkgY2FuY2VsbGF0aSBkYSAlcyIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6MjUgbGliL3RyYW5zcG9ydC50Y2w6NzEKLSMsIHRjbC1mb3JtYXQKLW1zZ2lkICJwdXNoICVzIgotbXNnc3RyICJwcm9wYWdhIHZlcnNvICVzIgotCiAjOiBsaWIvdHJhbnNwb3J0LnRjbDoyNgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlB1c2hpbmcgY2hhbmdlcyB0byAlcyIKIG1zZ3N0ciAiUHJvcGFnYXppb25lIG1vZGlmaWNoZSBhICVzIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDo3MgorIzogbGliL3RyYW5zcG9ydC50Y2w6NjQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJNaXJyb3JpbmcgdG8gJXMiCittc2dzdHIgIk1pcnJvcmluZyB2ZXJzbyAlcyIKKworIzogbGliL3RyYW5zcG9ydC50Y2w6ODIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJQdXNoaW5nICVzICVzIHRvICVzIgogbXNnc3RyICJQcm9wYWdhemlvbmUgJXMgJXMgYSAlcyIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6ODkKKyM6IGxpYi90cmFuc3BvcnQudGNsOjEwMAogbXNnaWQgIlB1c2ggQnJhbmNoZXMiCiBtc2dzdHIgIlByb3BhZ2EgcmFtaSIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6MTAzCisjOiBsaWIvdHJhbnNwb3J0LnRjbDoxMTQKIG1zZ2lkICJTb3VyY2UgQnJhbmNoZXMiCiBtc2dzdHIgIlJhbWkgZGkgb3JpZ2luZSIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6MTIwCisjOiBsaWIvdHJhbnNwb3J0LnRjbDoxMzEKIG1zZ2lkICJEZXN0aW5hdGlvbiBSZXBvc2l0b3J5IgogbXNnc3RyICJBcmNoaXZpbyBkaSBkZXN0aW5hemlvbmUiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjE1OAorIzogbGliL3RyYW5zcG9ydC50Y2w6MTY5CiBtc2dpZCAiVHJhbnNmZXIgT3B0aW9ucyIKIG1zZ3N0ciAiT3B6aW9uaSBkaSB0cmFzZmVyaW1lbnRvIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDoxNjAKKyM6IGxpYi90cmFuc3BvcnQudGNsOjE3MQogbXNnaWQgIkZvcmNlIG92ZXJ3cml0ZSBleGlzdGluZyBicmFuY2ggKG1heSBkaXNjYXJkIGNoYW5nZXMpIgogbXNnc3RyICJTb3ZyYXNjcml2aSByYW1vIGVzaXN0ZW50ZSAoYWxjdW5lIG1vZGlmaWNoZSBwb3RyZWJiZXJvIGVzc2VyZSBwZXJzZSkiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjE2NAorIzogbGliL3RyYW5zcG9ydC50Y2w6MTc1CiBtc2dpZCAiVXNlIHRoaW4gcGFjayAoZm9yIHNsb3cgbmV0d29yayBjb25uZWN0aW9ucykiCiBtc2dzdHIgIlV0aWxpenphICd0aGluIHBhY2snIChwZXIgY29ubmVzc2lvbmkgbGVudGUpIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDoxNjgKKyM6IGxpYi90cmFuc3BvcnQudGNsOjE3OQogbXNnaWQgIkluY2x1ZGUgdGFncyIKIG1zZ3N0ciAiSW5jbHVkaSBldGljaGV0dGUiCmRpZmYgLS1naXQgYS9naXQtZ3VpL3BvL2phLnBvIGIvZ2l0LWd1aS9wby9qYS5wbwppbmRleCA1ZGI0NGE0Li4wOWQ2MGJlIDEwMDY0NAotLS0gYS9naXQtZ3VpL3BvL2phLnBvCisrKyBiL2dpdC1ndWkvcG8vamEucG8KQEAgLTgsNDEgKzgsNDEgQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogZ2l0LWd1aVxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBcbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwOC0wOC0wMiAxNDo0NS0wNzAwXG4iCi0iUE8tUmV2aXNpb24tRGF0ZTogMjAwOC0wOC0wMyAxNzowMCswOTAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMDgtMTItMDggMDg6MzEtMDgwMFxuIgorIlBPLVJldmlzaW9uLURhdGU6IDIwMDgtMTItMDkgMDY6MjcrMDkwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjog44GX44KJ44GE44GXIOOBquOBquOBkyA8bmFuYWtvM0BsYXZhYml0LmNvbT5cbiIKICJMYW5ndWFnZS1UZWFtOiBKYXBhbmVzZVxuIgogIk1JTUUtVmVyc2lvbjogMS4wXG4iCiAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCiAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgogCi0jOiBnaXQtZ3VpLnNoOjQxIGdpdC1ndWkuc2g6Njg4IGdpdC1ndWkuc2g6NzAyIGdpdC1ndWkuc2g6NzE1IGdpdC1ndWkuc2g6Nzk4Ci0jOiBnaXQtZ3VpLnNoOjgxNworIzogZ2l0LWd1aS5zaDo0MSBnaXQtZ3VpLnNoOjczNyBnaXQtZ3VpLnNoOjc1MSBnaXQtZ3VpLnNoOjc2NCBnaXQtZ3VpLnNoOjg0NworIzogZ2l0LWd1aS5zaDo4NjYKIG1zZ2lkICJnaXQtZ3VpOiBmYXRhbCBlcnJvciIKIG1zZ3N0ciAiZ2l0LWd1aTog6Ie05ZG955qE44Gq44Ko44Op44O8IgogCi0jOiBnaXQtZ3VpLnNoOjY0NAorIzogZ2l0LWd1aS5zaDo2ODkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIGZvbnQgc3BlY2lmaWVkIGluICVzOiIKIG1zZ3N0ciAiJXMg44Gr54Sh5Yq544Gq44OV44Kp44Oz44OI44GM5oyH5a6a44GV44KM44Gm44GE44G+44GZOiIKIAotIzogZ2l0LWd1aS5zaDo2NzQKKyM6IGdpdC1ndWkuc2g6NzIzCiBtc2dpZCAiTWFpbiBGb250IgogbXNnc3RyICLkuLvjg5Xjgqnjg7Pjg4giCiAKLSM6IGdpdC1ndWkuc2g6Njc1CisjOiBnaXQtZ3VpLnNoOjcyNAogbXNnaWQgIkRpZmYvQ29uc29sZSBGb250IgogbXNnc3RyICJkaWZmL+OCs+ODs+OCveODvOODq+ODu+ODleOCqeODs+ODiCIKIAotIzogZ2l0LWd1aS5zaDo2ODkKKyM6IGdpdC1ndWkuc2g6NzM4CiBtc2dpZCAiQ2Fubm90IGZpbmQgZ2l0IGluIFBBVEguIgogbXNnc3RyICJQQVRIIOS4reOBqyBnaXQg44GM6KaL44Gk44GL44KK44G+44Gb44KTIgogCi0jOiBnaXQtZ3VpLnNoOjcxNgorIzogZ2l0LWd1aS5zaDo3NjUKIG1zZ2lkICJDYW5ub3QgcGFyc2UgR2l0IHZlcnNpb24gc3RyaW5nOiIKIG1zZ3N0ciAiR2l0IOODkOODvOOCuOODp+ODs+WQjeOBjOeQhuino+OBp+OBjeOBvuOBm+OCkzoiCiAKLSM6IGdpdC1ndWkuc2g6NzM0CisjOiBnaXQtZ3VpLnNoOjc4MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJHaXQgdmVyc2lvbiBjYW5ub3QgYmUgZGV0ZXJtaW5lZC5cbiIKQEAgLTYxLDM4MSArNjEsNDQ2IEBACiAiXG4iCiAiJyVzJyDjga/jg5Djg7zjgrjjg6fjg7MgMS41LjAg44Go5oCd44Gj44Gm6Imv44GE44Gn44GZ44GL77yfXG4iCiAKLSM6IGdpdC1ndWkuc2g6OTcyCisjOiBnaXQtZ3VpLnNoOjEwNjIKIG1zZ2lkICJHaXQgZGlyZWN0b3J5IG5vdCBmb3VuZDoiCiBtc2dzdHIgIkdpdCDjg4fjgqPjg6zjgq/jg4jjg6rjgYzopovjgaTjgYvjgorjgb7jgZvjgpM6IgogCi0jOiBnaXQtZ3VpLnNoOjk3OQorIzogZ2l0LWd1aS5zaDoxMDY5CiBtc2dpZCAiQ2Fubm90IG1vdmUgdG8gdG9wIG9mIHdvcmtpbmcgZGlyZWN0b3J5OiIKIG1zZ3N0ciAi5L2c5qWt44OH44Kj44Os44Kv44OI44Oq44Gu5pyA5LiK5L2N44Gr56e75YuV44Gn44GN44G+44Gb44KTIgogCi0jOiBnaXQtZ3VpLnNoOjk4NgorIzogZ2l0LWd1aS5zaDoxMDc2CiBtc2dpZCAiQ2Fubm90IHVzZSBmdW5ueSAuZ2l0IGRpcmVjdG9yeToiCiBtc2dzdHIgIuWkieOBqiAuZ2l0IOODh+OCo+ODrOOCr+ODiOODquOBr+S9v+OBiOOBvuOBm+OCkyIKIAotIzogZ2l0LWd1aS5zaDo5OTEKKyM6IGdpdC1ndWkuc2g6MTA4MQogbXNnaWQgIk5vIHdvcmtpbmcgZGlyZWN0b3J5IgogbXNnc3RyICLkvZzmpa3jg4fjgqPjg6zjgq/jg4jjg6rjgYzjgYLjgorjgb7jgZvjgpMiCiAKLSM6IGdpdC1ndWkuc2g6MTEzOCBsaWIvY2hlY2tvdXRfb3AudGNsOjMwNQorIzogZ2l0LWd1aS5zaDoxMjQ3IGxpYi9jaGVja291dF9vcC50Y2w6MzA1CiBtc2dpZCAiUmVmcmVzaGluZyBmaWxlIHN0YXR1cy4uLiIKIG1zZ3N0ciAi44OV44Kh44Kk44Or54q25oWL44KS5pu05paw44GX44Gm44GE44G+44GZ4oCmIgogCi0jOiBnaXQtZ3VpLnNoOjExOTQKKyM6IGdpdC1ndWkuc2g6MTMwMwogbXNnaWQgIlNjYW5uaW5nIGZvciBtb2RpZmllZCBmaWxlcyAuLi4iCiBtc2dzdHIgIuWkieabtOOBleOCjOOBn+ODleOCoeOCpOODq+OCkuOCueOCreODo+ODs+OBl+OBpuOBhOOBvuOBmeKApiIKIAotIzogZ2l0LWd1aS5zaDoxMzY5IGxpYi9icm93c2VyLnRjbDoyNDYKKyM6IGdpdC1ndWkuc2g6MTM2NworbXNnaWQgIkNhbGxpbmcgcHJlcGFyZS1jb21taXQtbXNnIGhvb2suLi4iCittc2dzdHIgInByZXBhcmUtY29tbWl0LW1zZyDjg5Xjg4Pjgq/jgpLlrp/ooYzkuK3jg7vjg7vjg7siCisKKyM6IGdpdC1ndWkuc2g6MTM4NAorbXNnaWQgIkNvbW1pdCBkZWNsaW5lZCBieSBwcmVwYXJlLWNvbW1pdC1tc2cgaG9vay4iCittc2dzdHIgInByZXBhcmUtY29tbWl0LW1zZyDjg5Xjg4Pjgq/jgYzjgrPjg5/jg4Pjg4jjgpLmi5LlkKbjgZfjgb7jgZfjgZ8iCisKKyM6IGdpdC1ndWkuc2g6MTU0MiBsaWIvYnJvd3Nlci50Y2w6MjQ2CiBtc2dpZCAiUmVhZHkuIgogbXNnc3RyICLmupblgpnlrozkuoYiCiAKLSM6IGdpdC1ndWkuc2g6MTYzNQorIzogZ2l0LWd1aS5zaDoxODE5CiBtc2dpZCAiVW5tb2RpZmllZCIKIG1zZ3N0ciAi5aSJ5pu054Sh44GXIgogCi0jOiBnaXQtZ3VpLnNoOjE2MzcKKyM6IGdpdC1ndWkuc2g6MTgyMQogbXNnaWQgIk1vZGlmaWVkLCBub3Qgc3RhZ2VkIgogbXNnc3RyICLlpInmm7TjgYLjgorjgIHjgrPjg5/jg4Pjg4jmnKrkuojlrpoiCiAKLSM6IGdpdC1ndWkuc2g6MTYzOCBnaXQtZ3VpLnNoOjE2NDMKKyM6IGdpdC1ndWkuc2g6MTgyMiBnaXQtZ3VpLnNoOjE4MzAKIG1zZ2lkICJTdGFnZWQgZm9yIGNvbW1pdCIKIG1zZ3N0ciAi44Kz44Of44OD44OI5LqI5a6a5riIIgogCi0jOiBnaXQtZ3VpLnNoOjE2MzkgZ2l0LWd1aS5zaDoxNjQ0CisjOiBnaXQtZ3VpLnNoOjE4MjMgZ2l0LWd1aS5zaDoxODMxCiBtc2dpZCAiUG9ydGlvbnMgc3RhZ2VkIGZvciBjb21taXQiCiBtc2dzdHIgIumDqOWIhueahOOBq+OCs+ODn+ODg+ODiOS6iOWumua4iCIKIAotIzogZ2l0LWd1aS5zaDoxNjQwIGdpdC1ndWkuc2g6MTY0NQorIzogZ2l0LWd1aS5zaDoxODI0IGdpdC1ndWkuc2g6MTgzMgogbXNnaWQgIlN0YWdlZCBmb3IgY29tbWl0LCBtaXNzaW5nIgogbXNnc3RyICLjgrPjg5/jg4Pjg4jkuojlrprmuIjjgIHjg5XjgqHjgqTjg6vnhKHjgZciCiAKLSM6IGdpdC1ndWkuc2g6MTY0MgorIzogZ2l0LWd1aS5zaDoxODI2Cittc2dpZCAiRmlsZSB0eXBlIGNoYW5nZWQsIG5vdCBzdGFnZWQiCittc2dzdHIgIuODleOCoeOCpOODq+Wei+WkieabtOOAgeOCs+ODn+ODg+ODiOacquS6iOWumiIKKworIzogZ2l0LWd1aS5zaDoxODI3Cittc2dpZCAiRmlsZSB0eXBlIGNoYW5nZWQsIHN0YWdlZCIKK21zZ3N0ciAi44OV44Kh44Kk44Or5Z6L5aSJ5pu044CB44Kz44Of44OD44OI5LqI5a6a5riIIgorCisjOiBnaXQtZ3VpLnNoOjE4MjkKIG1zZ2lkICJVbnRyYWNrZWQsIG5vdCBzdGFnZWQiCiBtc2dzdHIgIueuoeeQhuWkluOAgeOCs+ODn+ODg+ODiOacquS6iOWumiIKIAotIzogZ2l0LWd1aS5zaDoxNjQ3CisjOiBnaXQtZ3VpLnNoOjE4MzQKIG1zZ2lkICJNaXNzaW5nIgogbXNnc3RyICLjg5XjgqHjgqTjg6vnhKHjgZciCiAKLSM6IGdpdC1ndWkuc2g6MTY0OAorIzogZ2l0LWd1aS5zaDoxODM1CiBtc2dpZCAiU3RhZ2VkIGZvciByZW1vdmFsIgogbXNnc3RyICLliYrpmaTkuojlrprmuIgiCiAKLSM6IGdpdC1ndWkuc2g6MTY0OQorIzogZ2l0LWd1aS5zaDoxODM2CiBtc2dpZCAiU3RhZ2VkIGZvciByZW1vdmFsLCBzdGlsbCBwcmVzZW50IgogbXNnc3RyICLliYrpmaTkuojlrprmuIjjgIHjg5XjgqHjgqTjg6vmnKrliYrpmaQiCiAKLSM6IGdpdC1ndWkuc2g6MTY1MSBnaXQtZ3VpLnNoOjE2NTIgZ2l0LWd1aS5zaDoxNjUzIGdpdC1ndWkuc2g6MTY1NAorIzogZ2l0LWd1aS5zaDoxODM4IGdpdC1ndWkuc2g6MTgzOSBnaXQtZ3VpLnNoOjE4NDAgZ2l0LWd1aS5zaDoxODQxCisjOiBnaXQtZ3VpLnNoOjE4NDIgZ2l0LWd1aS5zaDoxODQzCiBtc2dpZCAiUmVxdWlyZXMgbWVyZ2UgcmVzb2x1dGlvbiIKIG1zZ3N0ciAi6KaB44Oe44O844K46Kej5rG6IgogCi0jOiBnaXQtZ3VpLnNoOjE2ODkKKyM6IGdpdC1ndWkuc2g6MTg3OAogbXNnaWQgIlN0YXJ0aW5nIGdpdGsuLi4gcGxlYXNlIHdhaXQuLi4iCiBtc2dzdHIgImdpdGsg44KS6LW35YuV5Lit4oCm44GK5b6F44Gh5LiL44GV44GE4oCmIgogCi0jOiBnaXQtZ3VpLnNoOjE2OTgKKyM6IGdpdC1ndWkuc2g6MTg4NwogbXNnaWQgIkNvdWxkbid0IGZpbmQgZ2l0ayBpbiBQQVRIIgogbXNnc3RyICJQQVRIIOS4reOBqyBnaXRrIOOBjOimi+OBpOOBi+OCiuOBvuOBm+OCkyIKIAotIzogZ2l0LWd1aS5zaDoxOTQ4IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzYKKyM6IGdpdC1ndWkuc2g6MjI4MCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM2CiBtc2dpZCAiUmVwb3NpdG9yeSIKIG1zZ3N0ciAi44Oq44Od44K444OI44OqIgogCi0jOiBnaXQtZ3VpLnNoOjE5NDkKKyM6IGdpdC1ndWkuc2g6MjI4MQogbXNnaWQgIkVkaXQiCiBtc2dzdHIgIue3qOmbhiIKIAotIzogZ2l0LWd1aS5zaDoxOTUxIGxpYi9jaG9vc2VfcmV2LnRjbDo1NjEKKyM6IGdpdC1ndWkuc2g6MjI4MyBsaWIvY2hvb3NlX3Jldi50Y2w6NTYxCiBtc2dpZCAiQnJhbmNoIgogbXNnc3RyICLjg5bjg6njg7Pjg4EiCiAKLSM6IGdpdC1ndWkuc2g6MTk1NCBsaWIvY2hvb3NlX3Jldi50Y2w6NTQ4CisjOiBnaXQtZ3VpLnNoOjIyODYgbGliL2Nob29zZV9yZXYudGNsOjU0OAogbXNnaWQgIkNvbW1pdEBAbm91biIKIG1zZ3N0ciAi44Kz44Of44OD44OIIgogCi0jOiBnaXQtZ3VpLnNoOjE5NTcgbGliL21lcmdlLnRjbDoxMjAgbGliL21lcmdlLnRjbDoxNDkgbGliL21lcmdlLnRjbDoxNjcKKyM6IGdpdC1ndWkuc2g6MjI4OSBsaWIvbWVyZ2UudGNsOjEyMSBsaWIvbWVyZ2UudGNsOjE1MCBsaWIvbWVyZ2UudGNsOjE2OAogbXNnaWQgIk1lcmdlIgogbXNnc3RyICLjg57jg7zjgrgiCiAKLSM6IGdpdC1ndWkuc2g6MTk1OCBsaWIvY2hvb3NlX3Jldi50Y2w6NTU3CisjOiBnaXQtZ3VpLnNoOjIyOTAgbGliL2Nob29zZV9yZXYudGNsOjU1NwogbXNnaWQgIlJlbW90ZSIKIG1zZ3N0ciAi44Oq44Oi44O844OIIgogCi0jOiBnaXQtZ3VpLnNoOjE5NjcKKyM6IGdpdC1ndWkuc2g6MjI5MworbXNnaWQgIlRvb2xzIgorbXNnc3RyICLjg4Tjg7zjg6siCisKKyM6IGdpdC1ndWkuc2g6MjMwMgorbXNnaWQgIkV4cGxvcmUgV29ya2luZyBDb3B5IgorbXNnc3RyICLjg6/jg7zjgq3jg7PjgrDjgrPjg5Tjg7zjgpLjg5bjg6njgqbjgroiCisKKyM6IGdpdC1ndWkuc2g6MjMwNwogbXNnaWQgIkJyb3dzZSBDdXJyZW50IEJyYW5jaCdzIEZpbGVzIgogbXNnc3RyICLnj77lnKjjga7jg5bjg6njg7Pjg4Hjga7jg5XjgqHjgqTjg6vjgpLopovjgosiCiAKLSM6IGdpdC1ndWkuc2g6MTk3MQorIzogZ2l0LWd1aS5zaDoyMzExCiBtc2dpZCAiQnJvd3NlIEJyYW5jaCBGaWxlcy4uLiIKIG1zZ3N0ciAi44OW44Op44Oz44OB44Gu44OV44Kh44Kk44Or44KS6KaL44KL4oCmIgogCi0jOiBnaXQtZ3VpLnNoOjE5NzYKKyM6IGdpdC1ndWkuc2g6MjMxNgogbXNnaWQgIlZpc3VhbGl6ZSBDdXJyZW50IEJyYW5jaCdzIEhpc3RvcnkiCiBtc2dzdHIgIuePvuWcqOOBruODluODqeODs+ODgeOBruWxpeattOOCkuimi+OCiyIKIAotIzogZ2l0LWd1aS5zaDoxOTgwCisjOiBnaXQtZ3VpLnNoOjIzMjAKIG1zZ2lkICJWaXN1YWxpemUgQWxsIEJyYW5jaCBIaXN0b3J5IgogbXNnc3RyICLlhajjgabjga7jg5bjg6njg7Pjg4Hjga7lsaXmrbTjgpLopovjgosiCiAKLSM6IGdpdC1ndWkuc2g6MTk4NworIzogZ2l0LWd1aS5zaDoyMzI3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQnJvd3NlICVzJ3MgRmlsZXMiCiBtc2dzdHIgIuODluODqeODs+ODgSAlcyDjga7jg5XjgqHjgqTjg6vjgpLopovjgosiCiAKLSM6IGdpdC1ndWkuc2g6MTk4OQorIzogZ2l0LWd1aS5zaDoyMzI5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVmlzdWFsaXplICVzJ3MgSGlzdG9yeSIKIG1zZ3N0ciAi44OW44Op44Oz44OBICVzIOOBruWxpeattOOCkuimi+OCiyIKIAotIzogZ2l0LWd1aS5zaDoxOTk0IGxpYi9kYXRhYmFzZS50Y2w6MjcgbGliL2RhdGFiYXNlLnRjbDo2NworIzogZ2l0LWd1aS5zaDoyMzM0IGxpYi9kYXRhYmFzZS50Y2w6MjcgbGliL2RhdGFiYXNlLnRjbDo2NwogbXNnaWQgIkRhdGFiYXNlIFN0YXRpc3RpY3MiCiBtc2dzdHIgIuODh+ODvOOCv+ODmeODvOOCuee1seioiCIKIAotIzogZ2l0LWd1aS5zaDoxOTk3IGxpYi9kYXRhYmFzZS50Y2w6MzQKKyM6IGdpdC1ndWkuc2g6MjMzNyBsaWIvZGF0YWJhc2UudGNsOjM0CiBtc2dpZCAiQ29tcHJlc3MgRGF0YWJhc2UiCiBtc2dzdHIgIuODh+ODvOOCv+ODmeODvOOCueWcp+e4riIKIAotIzogZ2l0LWd1aS5zaDoyMDAwCisjOiBnaXQtZ3VpLnNoOjIzNDAKIG1zZ2lkICJWZXJpZnkgRGF0YWJhc2UiCiBtc2dzdHIgIuODh+ODvOOCv+ODmeODvOOCueaknOiovCIKIAotIzogZ2l0LWd1aS5zaDoyMDA3IGdpdC1ndWkuc2g6MjAxMSBnaXQtZ3VpLnNoOjIwMTUgbGliL3Nob3J0Y3V0LnRjbDo3CisjOiBnaXQtZ3VpLnNoOjIzNDcgZ2l0LWd1aS5zaDoyMzUxIGdpdC1ndWkuc2g6MjM1NSBsaWIvc2hvcnRjdXQudGNsOjcKICM6IGxpYi9zaG9ydGN1dC50Y2w6MzkgbGliL3Nob3J0Y3V0LnRjbDo3MQogbXNnaWQgIkNyZWF0ZSBEZXNrdG9wIEljb24iCiBtc2dzdHIgIuODh+OCueOCr+ODiOODg+ODl+ODu+OCouOCpOOCs+ODs+OCkuS9nOOCiyIKIAotIzogZ2l0LWd1aS5zaDoyMDIzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTc3IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTg1CisjOiBnaXQtZ3VpLnNoOjIzNjMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxODMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxOTEKIG1zZ2lkICJRdWl0IgogbXNnc3RyICLntYLkuoYiCiAKLSM6IGdpdC1ndWkuc2g6MjAzMQorIzogZ2l0LWd1aS5zaDoyMzcxCiBtc2dpZCAiVW5kbyIKIG1zZ3N0ciAi5YWD44Gr5oi744GZIgogCi0jOiBnaXQtZ3VpLnNoOjIwMzQKKyM6IGdpdC1ndWkuc2g6MjM3NAogbXNnaWQgIlJlZG8iCiBtc2dzdHIgIuOChOOCiuebtOOBlyIKIAotIzogZ2l0LWd1aS5zaDoyMDM4IGdpdC1ndWkuc2g6MjU0NQorIzogZ2l0LWd1aS5zaDoyMzc4IGdpdC1ndWkuc2g6MjkyMwogbXNnaWQgIkN1dCIKIG1zZ3N0ciAi5YiH44KK5Y+W44KKIgogCi0jOiBnaXQtZ3VpLnNoOjIwNDEgZ2l0LWd1aS5zaDoyNTQ4IGdpdC1ndWkuc2g6MjYyMiBnaXQtZ3VpLnNoOjI3MTUKKyM6IGdpdC1ndWkuc2g6MjM4MSBnaXQtZ3VpLnNoOjI5MjYgZ2l0LWd1aS5zaDozMDAwIGdpdC1ndWkuc2g6MzA4MgogIzogbGliL2NvbnNvbGUudGNsOjY5CiBtc2dpZCAiQ29weSIKIG1zZ3N0ciAi44Kz44OU44O8IgogCi0jOiBnaXQtZ3VpLnNoOjIwNDQgZ2l0LWd1aS5zaDoyNTUxCisjOiBnaXQtZ3VpLnNoOjIzODQgZ2l0LWd1aS5zaDoyOTI5CiBtc2dpZCAiUGFzdGUiCiBtc2dzdHIgIuiyvOOCiuS7mOOBkSIKIAotIzogZ2l0LWd1aS5zaDoyMDQ3IGdpdC1ndWkuc2g6MjU1NCBsaWIvYnJhbmNoX2RlbGV0ZS50Y2w6MjYKKyM6IGdpdC1ndWkuc2g6MjM4NyBnaXQtZ3VpLnNoOjI5MzIgbGliL2JyYW5jaF9kZWxldGUudGNsOjI2CiAjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjM4CiBtc2dpZCAiRGVsZXRlIgogbXNnc3RyICLliYrpmaQiCiAKLSM6IGdpdC1ndWkuc2g6MjA1MSBnaXQtZ3VpLnNoOjI1NTggZ2l0LWd1aS5zaDoyNzE5IGxpYi9jb25zb2xlLnRjbDo3MQorIzogZ2l0LWd1aS5zaDoyMzkxIGdpdC1ndWkuc2g6MjkzNiBnaXQtZ3VpLnNoOjMwODYgbGliL2NvbnNvbGUudGNsOjcxCiBtc2dpZCAiU2VsZWN0IEFsbCIKIG1zZ3N0ciAi5YWo44Gm6YG45oqeIgogCi0jOiBnaXQtZ3VpLnNoOjIwNjAKKyM6IGdpdC1ndWkuc2g6MjQwMAogbXNnaWQgIkNyZWF0ZS4uLiIKIG1zZ3N0ciAi5L2c5oiQ4oCmIgogCi0jOiBnaXQtZ3VpLnNoOjIwNjYKKyM6IGdpdC1ndWkuc2g6MjQwNgogbXNnaWQgIkNoZWNrb3V0Li4uIgogbXNnc3RyICLjg4Hjgqfjg4Pjgq/jgqLjgqbjg4giCiAKLSM6IGdpdC1ndWkuc2g6MjA3MgorIzogZ2l0LWd1aS5zaDoyNDEyCiBtc2dpZCAiUmVuYW1lLi4uIgogbXNnc3RyICLlkI3liY3lpInmm7TigKYiCiAKLSM6IGdpdC1ndWkuc2g6MjA3NyBnaXQtZ3VpLnNoOjIxODcKKyM6IGdpdC1ndWkuc2g6MjQxNwogbXNnaWQgIkRlbGV0ZS4uLiIKIG1zZ3N0ciAi5YmK6Zmk4oCmIgogCi0jOiBnaXQtZ3VpLnNoOjIwODIKKyM6IGdpdC1ndWkuc2g6MjQyMgogbXNnaWQgIlJlc2V0Li4uIgogbXNnc3RyICLjg6rjgrvjg4Pjg4jigKYiCiAKLSM6IGdpdC1ndWkuc2g6MjA5NCBnaXQtZ3VpLnNoOjI0OTEKLW1zZ2lkICJOZXcgQ29tbWl0IgotbXNnc3RyICLmlrDopo/jgrPjg5/jg4Pjg4giCisjOiBnaXQtZ3VpLnNoOjI0MzIKK21zZ2lkICJEb25lIgorbXNnc3RyICLlrozkuoYiCiAKLSM6IGdpdC1ndWkuc2g6MjEwMiBnaXQtZ3VpLnNoOjI0OTgKLW1zZ2lkICJBbWVuZCBMYXN0IENvbW1pdCIKLW1zZ3N0ciAi5pyA5paw44Kz44Of44OD44OI44KS6KiC5q2jIgotCi0jOiBnaXQtZ3VpLnNoOjIxMTEgZ2l0LWd1aS5zaDoyNDU4IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6OTkKLW1zZ2lkICJSZXNjYW4iCi1tc2dzdHIgIuWGjeOCueOCreODo+ODsyIKLQotIzogZ2l0LWd1aS5zaDoyMTE3Ci1tc2dpZCAiU3RhZ2UgVG8gQ29tbWl0IgotbXNnc3RyICLjgrPjg5/jg4Pjg4jkuojlrprjgZnjgosiCi0KLSM6IGdpdC1ndWkuc2g6MjEyMwotbXNnaWQgIlN0YWdlIENoYW5nZWQgRmlsZXMgVG8gQ29tbWl0IgotbXNnc3RyICLlpInmm7TjgZXjgozjgZ/jg5XjgqHjgqTjg6vjgpLjgrPjg5/jg4Pjg4jkuojlrpoiCi0KLSM6IGdpdC1ndWkuc2g6MjEyOQotbXNnaWQgIlVuc3RhZ2UgRnJvbSBDb21taXQiCi1tc2dzdHIgIuOCs+ODn+ODg+ODiOOBi+OCiemZjeOCjeOBmSIKLQotIzogZ2l0LWd1aS5zaDoyMTM0IGxpYi9pbmRleC50Y2w6Mzk1Ci1tc2dpZCAiUmV2ZXJ0IENoYW5nZXMiCi1tc2dzdHIgIuWkieabtOOCkuWFg+OBq+aIu+OBmSIKLQotIzogZ2l0LWd1aS5zaDoyMTQxIGdpdC1ndWkuc2g6MjcwMgotbXNnaWQgIlNob3cgTGVzcyBDb250ZXh0IgotbXNnc3RyICLmlofohIjjgpLlsJHjgarjgY8iCi0KLSM6IGdpdC1ndWkuc2g6MjE0NSBnaXQtZ3VpLnNoOjI3MDYKLW1zZ2lkICJTaG93IE1vcmUgQ29udGV4dCIKLW1zZ3N0ciAi5paH6ISI44KS5aSa44GPIgotCi0jOiBnaXQtZ3VpLnNoOjIxNTEgZ2l0LWd1aS5zaDoyNDcwIGdpdC1ndWkuc2g6MjU2OQotbXNnaWQgIlNpZ24gT2ZmIgotbXNnc3RyICLnvbLlkI0iCi0KLSM6IGdpdC1ndWkuc2g6MjE1NSBnaXQtZ3VpLnNoOjI0NzQKKyM6IGdpdC1ndWkuc2g6MjQzNAogbXNnaWQgIkNvbW1pdEBAdmVyYiIKIG1zZ3N0ciAi44Kz44Of44OD44OIIgogCi0jOiBnaXQtZ3VpLnNoOjIxNjYKKyM6IGdpdC1ndWkuc2g6MjQ0MyBnaXQtZ3VpLnNoOjI4NjQKK21zZ2lkICJOZXcgQ29tbWl0IgorbXNnc3RyICLmlrDopo/jgrPjg5/jg4Pjg4giCisKKyM6IGdpdC1ndWkuc2g6MjQ1MSBnaXQtZ3VpLnNoOjI4NzEKK21zZ2lkICJBbWVuZCBMYXN0IENvbW1pdCIKK21zZ3N0ciAi5pyA5paw44Kz44Of44OD44OI44KS6KiC5q2jIgorCisjOiBnaXQtZ3VpLnNoOjI0NjEgZ2l0LWd1aS5zaDoyODI1IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6OTkKK21zZ2lkICJSZXNjYW4iCittc2dzdHIgIuWGjeOCueOCreODo+ODsyIKKworIzogZ2l0LWd1aS5zaDoyNDY3Cittc2dpZCAiU3RhZ2UgVG8gQ29tbWl0IgorbXNnc3RyICLjgrPjg5/jg4Pjg4jkuojlrprjgZnjgosiCisKKyM6IGdpdC1ndWkuc2g6MjQ3MworbXNnaWQgIlN0YWdlIENoYW5nZWQgRmlsZXMgVG8gQ29tbWl0IgorbXNnc3RyICLlpInmm7TjgZXjgozjgZ/jg5XjgqHjgqTjg6vjgpLjgrPjg5/jg4Pjg4jkuojlrpoiCisKKyM6IGdpdC1ndWkuc2g6MjQ3OQorbXNnaWQgIlVuc3RhZ2UgRnJvbSBDb21taXQiCittc2dzdHIgIuOCs+ODn+ODg+ODiOOBi+OCiemZjeOCjeOBmSIKKworIzogZ2l0LWd1aS5zaDoyNDg0IGxpYi9pbmRleC50Y2w6NDEwCittc2dpZCAiUmV2ZXJ0IENoYW5nZXMiCittc2dzdHIgIuWkieabtOOCkuWFg+OBq+aIu+OBmSIKKworIzogZ2l0LWd1aS5zaDoyNDkxIGdpdC1ndWkuc2g6MzA2OQorbXNnaWQgIlNob3cgTGVzcyBDb250ZXh0IgorbXNnc3RyICLmlofohIjjgpLlsJHjgarjgY8iCisKKyM6IGdpdC1ndWkuc2g6MjQ5NSBnaXQtZ3VpLnNoOjMwNzMKK21zZ2lkICJTaG93IE1vcmUgQ29udGV4dCIKK21zZ3N0ciAi5paH6ISI44KS5aSa44GPIgorCisjOiBnaXQtZ3VpLnNoOjI1MDIgZ2l0LWd1aS5zaDoyODM4IGdpdC1ndWkuc2g6Mjk0NworbXNnaWQgIlNpZ24gT2ZmIgorbXNnc3RyICLnvbLlkI0iCisKKyM6IGdpdC1ndWkuc2g6MjUxOAogbXNnaWQgIkxvY2FsIE1lcmdlLi4uIgogbXNnc3RyICLjg63jg7zjgqvjg6vjg7vjg57jg7zjgrjigKYiCiAKLSM6IGdpdC1ndWkuc2g6MjE3MQorIzogZ2l0LWd1aS5zaDoyNTIzCiBtc2dpZCAiQWJvcnQgTWVyZ2UuLi4iCiBtc2dzdHIgIuODnuODvOOCuOS4reatouKApiIKIAotIzogZ2l0LWd1aS5zaDoyMTgzCisjOiBnaXQtZ3VpLnNoOjI1MzUgZ2l0LWd1aS5zaDoyNTc1Cittc2dpZCAiQWRkLi4uIgorbXNnc3RyICLov73liqAiCisKKyM6IGdpdC1ndWkuc2g6MjUzOQogbXNnaWQgIlB1c2guLi4iCiBtc2dzdHIgIuODl+ODg+OCt+ODpeKApiIKIAotIzogZ2l0LWd1aS5zaDoyMTk3IGdpdC1ndWkuc2g6MjIxOSBsaWIvYWJvdXQudGNsOjE0Ci0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ0IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTAKKyM6IGdpdC1ndWkuc2g6MjU0MworbXNnaWQgIkRlbGV0ZSBCcmFuY2guLi4iCittc2dzdHIgIuODluODqeODs+ODgeWJiumZpC4uLiIKKworIzogZ2l0LWd1aS5zaDoyNTUzIGdpdC1ndWkuc2g6MjU4OSBsaWIvYWJvdXQudGNsOjE0CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ0IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJBYm91dCAlcyIKIG1zZ3N0ciAiJXMg44Gr44Gk44GE44GmIgogCi0jOiBnaXQtZ3VpLnNoOjIyMDEKKyM6IGdpdC1ndWkuc2g6MjU1NwogbXNnaWQgIlByZWZlcmVuY2VzLi4uIgogbXNnc3RyICLoqK3lrprigKYiCiAKLSM6IGdpdC1ndWkuc2g6MjIwOSBnaXQtZ3VpLnNoOjI3NDAKKyM6IGdpdC1ndWkuc2g6MjU2NSBnaXQtZ3VpLnNoOjMxMTUKIG1zZ2lkICJPcHRpb25zLi4uIgogbXNnc3RyICLjgqrjg5fjgrfjg6fjg7PigKYiCiAKLSM6IGdpdC1ndWkuc2g6MjIxNSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ3CisjOiBnaXQtZ3VpLnNoOjI1NzYKK21zZ2lkICJSZW1vdmUuLi4iCittc2dzdHIgIuWJiumZpC4uLiIKKworIzogZ2l0LWd1aS5zaDoyNTg1IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTAKIG1zZ2lkICJIZWxwIgogbXNnc3RyICLjg5jjg6vjg5ciCiAKLSM6IGdpdC1ndWkuc2g6MjI1NgorIzogZ2l0LWd1aS5zaDoyNjExCiBtc2dpZCAiT25saW5lIERvY3VtZW50YXRpb24iCiBtc2dzdHIgIuOCquODs+ODqeOCpOODs+ODu+ODieOCreODpeODoeODs+ODiCIKIAotIzogZ2l0LWd1aS5zaDoyMzQwCisjOiBnaXQtZ3VpLnNoOjI2MTQgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU2Cittc2dpZCAiU2hvdyBTU0ggS2V5IgorbXNnc3RyICJTU0gg44Kt44O844KS6KGo56S6IgorCisjOiBnaXQtZ3VpLnNoOjI3MDcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJmYXRhbDogY2Fubm90IHN0YXQgcGF0aCAlczogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSIKIG1zZ3N0ciAiIgogIuiHtOWRveeahDog44OR44K5ICVzIOOBjCBzdGF0IOOBp+OBjeOBvuOBm+OCk+OAguOBneOBruOCiOOBhuOBquODleOCoeOCpOODq+OChOODh+OCo+ODrOOCr+ODiOODquOBr+OBguOCiuOBviIKICLjgZvjgpMiCiAKLSM6IGdpdC1ndWkuc2g6MjM3MworIzogZ2l0LWd1aS5zaDoyNzQwCiBtc2dpZCAiQ3VycmVudCBCcmFuY2g6IgogbXNnc3RyICLnj77lnKjjga7jg5bjg6njg7Pjg4EiCiAKLSM6IGdpdC1ndWkuc2g6MjM5NAorIzogZ2l0LWd1aS5zaDoyNzYxCiBtc2dpZCAiU3RhZ2VkIENoYW5nZXMgKFdpbGwgQ29tbWl0KSIKIG1zZ3N0ciAi44K544OG44O844K444Oz44Kw44GV44KM44Gf77yI44Kz44Of44OD44OI5LqI5a6a5riI44Gu77yJ5aSJ5pu0IgogCi0jOiBnaXQtZ3VpLnNoOjI0MTQKKyM6IGdpdC1ndWkuc2g6Mjc4MQogbXNnaWQgIlVuc3RhZ2VkIENoYW5nZXMiCiBtc2dzdHIgIuOCs+ODn+ODg+ODiOS6iOWumuOBq+WFpeOBo+OBpuOBhOOBquOBhOWkieabtCIKIAotIzogZ2l0LWd1aS5zaDoyNDY0CisjOiBnaXQtZ3VpLnNoOjI4MzEKIG1zZ2lkICJTdGFnZSBDaGFuZ2VkIgogbXNnc3RyICLlpInmm7TjgpLjgrPjg5/jg4Pjg4jkuojlrprjgavlhaXjgozjgosiCiAKLSM6IGdpdC1ndWkuc2g6MjQ4MCBsaWIvdHJhbnNwb3J0LnRjbDo5MyBsaWIvdHJhbnNwb3J0LnRjbDoxODIKKyM6IGdpdC1ndWkuc2g6Mjg1MCBsaWIvdHJhbnNwb3J0LnRjbDo5MyBsaWIvdHJhbnNwb3J0LnRjbDoxODIKIG1zZ2lkICJQdXNoIgogbXNnc3RyICLjg5fjg4Pjgrfjg6UiCiAKLSM6IGdpdC1ndWkuc2g6MjUxMAorIzogZ2l0LWd1aS5zaDoyODg1CiBtc2dpZCAiSW5pdGlhbCBDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIuacgOWIneOBruOCs+ODn+ODg+ODiOODoeODg+OCu+ODvOOCuDoiCiAKLSM6IGdpdC1ndWkuc2g6MjUxMQorIzogZ2l0LWd1aS5zaDoyODg2CiBtc2dpZCAiQW1lbmRlZCBDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIuioguato+OBl+OBn+OCs+ODn+ODg+ODiOODoeODg+OCu+ODvOOCuDoiCiAKLSM6IGdpdC1ndWkuc2g6MjUxMgorIzogZ2l0LWd1aS5zaDoyODg3CiBtc2dpZCAiQW1lbmRlZCBJbml0aWFsIENvbW1pdCBNZXNzYWdlOiIKIG1zZ3N0ciAi6KiC5q2j44GX44Gf5pyA5Yid44Gu44Kz44Of44OD44OI44Oh44OD44K744O844K4OiIKIAotIzogZ2l0LWd1aS5zaDoyNTEzCisjOiBnaXQtZ3VpLnNoOjI4ODgKIG1zZ2lkICJBbWVuZGVkIE1lcmdlIENvbW1pdCBNZXNzYWdlOiIKIG1zZ3N0ciAi6KiC5q2j44GX44Gf44Oe44O844K444Kz44Of44OD44OI44Oh44OD44K744O844K4OiIKIAotIzogZ2l0LWd1aS5zaDoyNTE0CisjOiBnaXQtZ3VpLnNoOjI4ODkKIG1zZ2lkICJNZXJnZSBDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIuODnuODvOOCuOOCs+ODn+ODg+ODiOODoeODg+OCu+ODvOOCuDoiCiAKLSM6IGdpdC1ndWkuc2g6MjUxNQorIzogZ2l0LWd1aS5zaDoyODkwCiBtc2dpZCAiQ29tbWl0IE1lc3NhZ2U6IgogbXNnc3RyICLjgrPjg5/jg4Pjg4jjg6Hjg4Pjgrvjg7zjgrg6IgogCi0jOiBnaXQtZ3VpLnNoOjI1NjEgZ2l0LWd1aS5zaDoyNzIzIGxpYi9jb25zb2xlLnRjbDo3MworIzogZ2l0LWd1aS5zaDoyOTM5IGdpdC1ndWkuc2g6MzA5MCBsaWIvY29uc29sZS50Y2w6NzMKIG1zZ2lkICJDb3B5IEFsbCIKIG1zZ3N0ciAi5YWo44Gm44Kz44OU44O8IgogCi0jOiBnaXQtZ3VpLnNoOjI1ODUgbGliL2JsYW1lLnRjbDoxMDAKKyM6IGdpdC1ndWkuc2g6Mjk2MyBsaWIvYmxhbWUudGNsOjEwNAogbXNnaWQgIkZpbGU6IgogbXNnc3RyICLjg5XjgqHjgqTjg6s6IgogCi0jOiBnaXQtZ3VpLnNoOjI2OTEKLW1zZ2lkICJBcHBseS9SZXZlcnNlIEh1bmsiCi1tc2dzdHIgIuODkeODg+ODgeOCkumBqeeUqC/lj5bjgormtojjgZkiCi0KLSM6IGdpdC1ndWkuc2g6MjY5NgotbXNnaWQgIkFwcGx5L1JldmVyc2UgTGluZSIKLW1zZ3N0ciAi44OR44OD44OB6KGM44KS6YGp55SoL+WPluOCiua2iOOBmSIKLQotIzogZ2l0LWd1aS5zaDoyNzExCisjOiBnaXQtZ3VpLnNoOjMwNzgKIG1zZ2lkICJSZWZyZXNoIgogbXNnc3RyICLlho3oqq3jgb/ovrzjgb8iCiAKLSM6IGdpdC1ndWkuc2g6MjczMgorIzogZ2l0LWd1aS5zaDozMDk5CiBtc2dpZCAiRGVjcmVhc2UgRm9udCBTaXplIgogbXNnc3RyICLjg5Xjgqnjg7Pjg4jjgpLlsI/jgZXjgY8iCiAKLSM6IGdpdC1ndWkuc2g6MjczNgorIzogZ2l0LWd1aS5zaDozMTAzCiBtc2dpZCAiSW5jcmVhc2UgRm9udCBTaXplIgogbXNnc3RyICLjg5Xjgqnjg7Pjg4jjgpLlpKfjgY3jgY8iCiAKLSM6IGdpdC1ndWkuc2g6Mjc0NworIzogZ2l0LWd1aS5zaDozMTExIGxpYi9ibGFtZS50Y2w6MjgxCittc2dpZCAiRW5jb2RpbmciCittc2dzdHIgIuOCqOODs+OCs+ODvOODh+OCo+ODs+OCsCIKKworIzogZ2l0LWd1aS5zaDozMTIyCittc2dpZCAiQXBwbHkvUmV2ZXJzZSBIdW5rIgorbXNnc3RyICLjg5Hjg4Pjg4HjgpLpgannlKgv5Y+W44KK5raI44GZIgorCisjOiBnaXQtZ3VpLnNoOjMxMjcKK21zZ2lkICJBcHBseS9SZXZlcnNlIExpbmUiCittc2dzdHIgIuODkeODg+ODgeihjOOCkumBqeeUqC/lj5bjgormtojjgZkiCisKKyM6IGdpdC1ndWkuc2g6MzEzNworbXNnaWQgIlJ1biBNZXJnZSBUb29sIgorbXNnc3RyICLjg57jg7zjgrjjg4Tjg7zjg6vjgpLotbfli5UiCisKKyM6IGdpdC1ndWkuc2g6MzE0MgorbXNnaWQgIlVzZSBSZW1vdGUgVmVyc2lvbiIKK21zZ3N0ciAi44Oq44Oi44O844OI44Gu5pa544KS5o6h55SoIgorCisjOiBnaXQtZ3VpLnNoOjMxNDYKK21zZ2lkICJVc2UgTG9jYWwgVmVyc2lvbiIKK21zZ3N0ciAi44Ot44O844Kr44Or44Gu5pa544KS5o6h55SoIgorCisjOiBnaXQtZ3VpLnNoOjMxNTAKK21zZ2lkICJSZXZlcnQgVG8gQmFzZSIKK21zZ3N0ciAi44OZ44O844K554mI44KS5o6h55SoIgorCisjOiBnaXQtZ3VpLnNoOjMxNjkKIG1zZ2lkICJVbnN0YWdlIEh1bmsgRnJvbSBDb21taXQiCiBtc2dzdHIgIuODkeODg+ODgeOCkuOCs+ODn+ODg+ODiOS6iOWumuOBi+OCieWkluOBmSIKIAotIzogZ2l0LWd1aS5zaDoyNzQ4CisjOiBnaXQtZ3VpLnNoOjMxNzAKIG1zZ2lkICJVbnN0YWdlIExpbmUgRnJvbSBDb21taXQiCiBtc2dzdHIgIuOCs+ODn+ODg+ODiOS6iOWumuOBi+OCieihjOOCkuWkluOBmSIKIAotIzogZ2l0LWd1aS5zaDoyNzUwCisjOiBnaXQtZ3VpLnNoOjMxNzIKIG1zZ2lkICJTdGFnZSBIdW5rIEZvciBDb21taXQiCiBtc2dzdHIgIuODkeODg+ODgeOCkuOCs+ODn+ODg+ODiOS6iOWumuOBq+WKoOOBiOOCiyIKIAotIzogZ2l0LWd1aS5zaDoyNzUxCisjOiBnaXQtZ3VpLnNoOjMxNzMKIG1zZ2lkICJTdGFnZSBMaW5lIEZvciBDb21taXQiCiBtc2dzdHIgIuODkeODg+ODgeihjOOCkuOCs+ODn+ODg+ODiOS6iOWumuOBq+WKoOOBiOOCiyIKIAotIzogZ2l0LWd1aS5zaDoyNzcxCisjOiBnaXQtZ3VpLnNoOjMxOTYKIG1zZ2lkICJJbml0aWFsaXppbmcuLi4iCiBtc2dzdHIgIuWIneacn+WMluOBl+OBpuOBhOOBvuOBmeKApiIKIAotIzogZ2l0LWd1aS5zaDoyODc2CisjOiBnaXQtZ3VpLnNoOjMzMDEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiUG9zc2libGUgZW52aXJvbm1lbnQgaXNzdWVzIGV4aXN0LlxuIgpAQCAtNDUwLDcgKzUxNSw3IEBACiAi5Lul5LiL44Gu55Kw5aKD5aSJ5pWw44GvICVzIOOBjOi1t+WLleOBmeOCiyBHaXQg44K144OW44OX44Ot44K744K544Gr44KI44Gj44Gm54Sh6KaW44GV44KM44KL44Gn44GX44KH44GGOlxuIgogIlxuIgogCi0jOiBnaXQtZ3VpLnNoOjI5MDYKKyM6IGdpdC1ndWkuc2g6MzMzMQogbXNnaWQgIiIKICJcbiIKICJUaGlzIGlzIGR1ZSB0byBhIGtub3duIGlzc3VlIHdpdGggdGhlXG4iCkBAIC00NjAsNyArNTI1LDcgQEAKICLjgZPjgozjga8gQ3lnd2luIOOBp+mFjeW4g+OBleOCjOOBpuOBhOOCiyBUY2wg44OQ44Kk44OK44Oq44GrXG4iCiAi6Zai44GX44Gm44Gu5pei55+l44Gu5ZWP6aGM44Gr44KI44KK44G+44GZIgogCi0jOiBnaXQtZ3VpLnNoOjI5MTEKKyM6IGdpdC1ndWkuc2g6MzMzNgogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKQEAgLTQ3OSw4MCArNTQ0LDEwOCBAQAogbXNnaWQgImdpdC1ndWkgLSBhIGdyYXBoaWNhbCB1c2VyIGludGVyZmFjZSBmb3IgR2l0LiIKIG1zZ3N0ciAiR2l0IOOBruOCsOODqeODleOCo+OCq+ODq1VJIGdpdC1ndWkiCiAKLSM6IGxpYi9ibGFtZS50Y2w6NzAKKyM6IGxpYi9ibGFtZS50Y2w6NzIKIG1zZ2lkICJGaWxlIFZpZXdlciIKIG1zZ3N0ciAi44OV44Kh44Kk44Or44OU44Ol44O844OvIgogCi0jOiBsaWIvYmxhbWUudGNsOjc0CisjOiBsaWIvYmxhbWUudGNsOjc4CiBtc2dpZCAiQ29tbWl0OiIKIG1zZ3N0ciAi44Kz44Of44OD44OIOiIKIAotIzogbGliL2JsYW1lLnRjbDoyNTcKKyM6IGxpYi9ibGFtZS50Y2w6MjcxCiBtc2dpZCAiQ29weSBDb21taXQiCiBtc2dzdHIgIuOCs+ODn+ODg+ODiOOCkuOCs+ODlOODvCIKIAotIzogbGliL2JsYW1lLnRjbDoyNjAKKyM6IGxpYi9ibGFtZS50Y2w6Mjc1Cittc2dpZCAiRmluZCBUZXh0Li4uIgorbXNnc3RyICLjg4bjgq3jgrnjg4jjgpLmpJzntKIiCisKKyM6IGxpYi9ibGFtZS50Y2w6Mjg0CiBtc2dpZCAiRG8gRnVsbCBDb3B5IERldGVjdGlvbiIKIG1zZ3N0ciAi44Kz44OU44O85qSc55+lIgogCi0jOiBsaWIvYmxhbWUudGNsOjM4OAorIzogbGliL2JsYW1lLnRjbDoyODgKK21zZ2lkICJTaG93IEhpc3RvcnkgQ29udGV4dCIKK21zZ3N0ciAi5paH6ISI44KS6KaL44Gb44KLIgorCisjOiBsaWIvYmxhbWUudGNsOjI5MQorbXNnaWQgIkJsYW1lIFBhcmVudCBDb21taXQiCittc2dzdHIgIuimquOCs+ODn+ODg+ODiOOCkuiou+mHiCIKKworIzogbGliL2JsYW1lLnRjbDo0NTAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJSZWFkaW5nICVzLi4uIgogbXNnc3RyICIlcyDjgpLoqq3jgpPjgafjgYTjgb7jgZnigKYiCiAKLSM6IGxpYi9ibGFtZS50Y2w6NDkyCisjOiBsaWIvYmxhbWUudGNsOjU1NwogbXNnaWQgIkxvYWRpbmcgY29weS9tb3ZlIHRyYWNraW5nIGFubm90YXRpb25zLi4uIgogbXNnc3RyICLjgrPjg5Tjg7zjg7vnp7vli5Xov73ot6Hjg4fjg7zjgr/jgpLoqq3jgpPjgafjgYTjgb7jgZnigKYiCiAKLSM6IGxpYi9ibGFtZS50Y2w6NTEyCisjOiBsaWIvYmxhbWUudGNsOjU3NwogbXNnaWQgImxpbmVzIGFubm90YXRlZCIKIG1zZ3N0ciAi6KGM44KS5rOo6YeI44GX44G+44GX44GfIgogCi0jOiBsaWIvYmxhbWUudGNsOjcwNAorIzogbGliL2JsYW1lLnRjbDo3NjkKIG1zZ2lkICJMb2FkaW5nIG9yaWdpbmFsIGxvY2F0aW9uIGFubm90YXRpb25zLi4uIgogbXNnc3RyICLlhYPkvY3nva7ooYzjga7ms6jph4jjg4fjg7zjgr/jgpLoqq3jgpPjgafjgYTjgb7jgZnigKYiCiAKLSM6IGxpYi9ibGFtZS50Y2w6NzA3CisjOiBsaWIvYmxhbWUudGNsOjc3MgogbXNnaWQgIkFubm90YXRpb24gY29tcGxldGUuIgogbXNnc3RyICLms6jph4jlrozkuobjgZfjgb7jgZfjgZ8iCiAKLSM6IGxpYi9ibGFtZS50Y2w6NzM3CisjOiBsaWIvYmxhbWUudGNsOjgwMgogbXNnaWQgIkJ1c3kiCiBtc2dzdHIgIuWun+ihjOS4rSIKIAotIzogbGliL2JsYW1lLnRjbDo3MzgKKyM6IGxpYi9ibGFtZS50Y2w6ODAzCiBtc2dpZCAiQW5ub3RhdGlvbiBwcm9jZXNzIGlzIGFscmVhZHkgcnVubmluZy4iCiBtc2dzdHIgIuOBmeOBp+OBqyBibGFtZSDjg5fjg63jgrvjgrnjgpLlrp/ooYzkuK3jgafjgZnjgIIiCiAKLSM6IGxpYi9ibGFtZS50Y2w6Nzc3CisjOiBsaWIvYmxhbWUudGNsOjg0MgogbXNnaWQgIlJ1bm5pbmcgdGhvcm91Z2ggY29weSBkZXRlY3Rpb24uLi4iCiBtc2dzdHIgIuOCs+ODlOODvOaknOefpeOCkuWun+ihjOS4reKApiIKIAotIzogbGliL2JsYW1lLnRjbDo4MjcKKyM6IGxpYi9ibGFtZS50Y2w6OTEwCiBtc2dpZCAiTG9hZGluZyBhbm5vdGF0aW9uLi4uIgogbXNnc3RyICLms6jph4jjgpLoqq3jgb/ovrzjgpPjgafjgYTjgb7jgZnigKYiCiAKLSM6IGxpYi9ibGFtZS50Y2w6ODgzCisjOiBsaWIvYmxhbWUudGNsOjk2NAogbXNnaWQgIkF1dGhvcjoiCiBtc2dzdHIgIuS9nOiAhToiCiAKLSM6IGxpYi9ibGFtZS50Y2w6ODg3CisjOiBsaWIvYmxhbWUudGNsOjk2OAogbXNnaWQgIkNvbW1pdHRlcjoiCiBtc2dzdHIgIuOCs+ODn+ODg+ODiOiAhToiCiAKLSM6IGxpYi9ibGFtZS50Y2w6ODkyCisjOiBsaWIvYmxhbWUudGNsOjk3MwogbXNnaWQgIk9yaWdpbmFsIEZpbGU6IgogbXNnc3RyICLlhYPjg5XjgqHjgqTjg6siCiAKLSM6IGxpYi9ibGFtZS50Y2w6MTAwNgorIzogbGliL2JsYW1lLnRjbDoxMDIxCittc2dpZCAiQ2Fubm90IGZpbmQgSEVBRCBjb21taXQ6IgorbXNnc3RyICJIRUFEIOOCs+ODn+ODg+ODiOOBjOimi+OBpOOBi+OCiuOBvuOBm+OCkyIKKworIzogbGliL2JsYW1lLnRjbDoxMDc2Cittc2dpZCAiQ2Fubm90IGZpbmQgcGFyZW50IGNvbW1pdDoiCittc2dzdHIgIuimquOCs+ODn+ODg+ODiOOBjOimi+OBpOOBi+OCiuOBvuOBm+OCkzoiCisKKyM6IGxpYi9ibGFtZS50Y2w6MTA5MQorbXNnaWQgIlVuYWJsZSB0byBkaXNwbGF5IHBhcmVudCIKK21zZ3N0ciAi6Kaq44KS6KGo56S644Gn44GN44G+44Gb44KTIgorCisjOiBsaWIvYmxhbWUudGNsOjEwOTIgbGliL2RpZmYudGNsOjI5NworbXNnaWQgIkVycm9yIGxvYWRpbmcgZGlmZjoiCittc2dzdHIgImRpZmYg44KS6Kqt44KA6Zqb44Gu44Ko44Op44O844Gn44GZOiIKKworIzogbGliL2JsYW1lLnRjbDoxMjMyCiBtc2dpZCAiT3JpZ2luYWxseSBCeToiCiBtc2dzdHIgIuWOn+S9nOiAhToiCiAKLSM6IGxpYi9ibGFtZS50Y2w6MTAxMgorIzogbGliL2JsYW1lLnRjbDoxMjM4CiBtc2dpZCAiSW4gRmlsZToiCiBtc2dzdHIgIuODleOCoeOCpOODqzoiCiAKLSM6IGxpYi9ibGFtZS50Y2w6MTAxNworIzogbGliL2JsYW1lLnRjbDoxMjQzCiBtc2dpZCAiQ29waWVkIE9yIE1vdmVkIEhlcmUgQnk6IgogbXNnc3RyICLopIflhpnjg7vnp7vli5XogIU6IgogCkBAIC01NjYsMTYgKzY1OSwxOCBAQAogCiAjOiBsaWIvYnJhbmNoX2NoZWNrb3V0LnRjbDoyNyBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6MzUKICM6IGxpYi9icmFuY2hfZGVsZXRlLnRjbDozMiBsaWIvYnJhbmNoX3JlbmFtZS50Y2w6MzAgbGliL2Jyb3dzZXIudGNsOjI4MgotIzogbGliL2NoZWNrb3V0X29wLnRjbDo1NDQgbGliL2Nob29zZV9mb250LnRjbDo0MyBsaWIvbWVyZ2UudGNsOjE3MQotIzogbGliL29wdGlvbi50Y2w6MTAzIGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NDIgbGliL3RyYW5zcG9ydC50Y2w6OTcKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6NTQ0IGxpYi9jaG9vc2VfZm9udC50Y2w6NDMgbGliL21lcmdlLnRjbDoxNzIKKyM6IGxpYi9vcHRpb24udGNsOjEyNSBsaWIvcmVtb3RlX2FkZC50Y2w6MzIgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo0MgorIzogbGliL3Rvb2xzX2RsZy50Y2w6NDAgbGliL3Rvb2xzX2RsZy50Y2w6MjA0IGxpYi90b29sc19kbGcudGNsOjM1MgorIzogbGliL3RyYW5zcG9ydC50Y2w6OTcKIG1zZ2lkICJDYW5jZWwiCiBtc2dzdHIgIuS4reatoiIKIAotIzogbGliL2JyYW5jaF9jaGVja291dC50Y2w6MzIgbGliL2Jyb3dzZXIudGNsOjI4NworIzogbGliL2JyYW5jaF9jaGVja291dC50Y2w6MzIgbGliL2Jyb3dzZXIudGNsOjI4NyBsaWIvdG9vbHNfZGxnLnRjbDozMjgKIG1zZ2lkICJSZXZpc2lvbiIKIG1zZ3N0ciAi44Oq44OT44K444On44OzIgogCi0jOiBsaWIvYnJhbmNoX2NoZWNrb3V0LnRjbDozNiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6NjkgbGliL29wdGlvbi50Y2w6MjQ0CisjOiBsaWIvYnJhbmNoX2NoZWNrb3V0LnRjbDozNiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6NjkgbGliL29wdGlvbi50Y2w6MjgwCiBtc2dpZCAiT3B0aW9ucyIKIG1zZ3N0ciAi44Kq44OX44K344On44OzIgogCkBAIC01OTUsNyArNjkwLDcgQEAKIG1zZ2lkICJDcmVhdGUgTmV3IEJyYW5jaCIKIG1zZ3N0ciAi44OW44Op44Oz44OB44KS5paw6KaP5L2c5oiQIgogCi0jOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6MzEgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozNzEKKyM6IGxpYi9icmFuY2hfY3JlYXRlLnRjbDozMSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM3NwogbXNnaWQgIkNyZWF0ZSIKIG1zZ3N0ciAi5L2c5oiQIgogCkBAIC02MDMsNyArNjk4LDcgQEAKIG1zZ2lkICJCcmFuY2ggTmFtZSIKIG1zZ3N0ciAi44OW44Op44Oz44OB5ZCNIgogCi0jOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6NDMKKyM6IGxpYi9icmFuY2hfY3JlYXRlLnRjbDo0MyBsaWIvcmVtb3RlX2FkZC50Y2w6MzkgbGliL3Rvb2xzX2RsZy50Y2w6NTAKIG1zZ2lkICJOYW1lOiIKIG1zZ3N0ciAi5ZCN5YmNOiIKIApAQCAtNzQ4LDkgKzg0Myw5IEBACiBtc2dpZCAiQnJvd3NlIEJyYW5jaCBGaWxlcyIKIG1zZ3N0ciAi54++5Zyo44Gu44OW44Op44Oz44OB44Gu44OV44Kh44Kk44Or44KS6KaL44KLIgogCi0jOiBsaWIvYnJvd3Nlci50Y2w6Mjc4IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Mzg3Ci0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ3MiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ4MgotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5ODUKKyM6IGxpYi9icm93c2VyLnRjbDoyNzggbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozOTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDgwIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDkxCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk5NQogbXNnaWQgIkJyb3dzZSIKIG1zZ3N0ciAi44OW44Op44Km44K6IgogCkBAIC03NjUsNiArODYwLDcgQEAKIG1zZ3N0ciAi6Ie05ZG955qE44Ko44Op44O8OiAlcyDjgpLop6PmsbrjgafjgY3jgb7jgZvjgpMiCiAKICM6IGxpYi9jaGVja291dF9vcC50Y2w6MTQ1IGxpYi9jb25zb2xlLnRjbDo4MSBsaWIvZGF0YWJhc2UudGNsOjMxCisjOiBsaWIvc3Noa2V5LnRjbDo1MwogbXNnaWQgIkNsb3NlIgogbXNnc3RyICLplonjgZjjgosiCiAKQEAgLTg3NSw3ICs5NzEsNyBAQAogbXNnaWQgIlJlc2V0ICclcyc/IgogbXNnc3RyICInJXMnIOOCkuODquOCu+ODg+ODiOOBl+OBvuOBmeOBi++8nyIKIAotIzogbGliL2NoZWNrb3V0X29wLnRjbDo1MzIgbGliL21lcmdlLnRjbDoxNjMKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6NTMyIGxpYi9tZXJnZS50Y2w6MTY0IGxpYi90b29sc19kbGcudGNsOjM0MwogbXNnaWQgIlZpc3VhbGl6ZSIKIG1zZ3N0ciAi5Y+v6KaW5YyWIgogCkBAIC05MjMsMjIxICsxMDE5LDIyNSBAQAogbXNnaWQgIkdpdCBHdWkiCiBtc2dzdHIgIkdpdCBHVUkiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODEgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozNzYKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODcgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozODIKIG1zZ2lkICJDcmVhdGUgTmV3IFJlcG9zaXRvcnkiCiBtc2dzdHIgIuaWsOOBl+OBhOODquODneOCuOODiOODquOCkuS9nOOCiyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MwogbXNnaWQgIk5ldy4uLiIKIG1zZ3N0ciAi5paw6KaP4oCmIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk0IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDU4CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ2NQogbXNnaWQgIkNsb25lIEV4aXN0aW5nIFJlcG9zaXRvcnkiCiBtc2dzdHIgIuaXouWtmOODquODneOCuOODiOODquOCkuikh+ijveOBmeOCiyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDAKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTA2CiBtc2dpZCAiQ2xvbmUuLi4iCiBtc2dzdHIgIuikh+ijveKApiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDcgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NzQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTEzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTgzCiBtc2dpZCAiT3BlbiBFeGlzdGluZyBSZXBvc2l0b3J5IgogbXNnc3RyICLml6LlrZjjg6rjg53jgrjjg4jjg6rjgpLplovjgY8iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTEzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjExOQogbXNnaWQgIk9wZW4uLi4iCiBtc2dzdHIgIumWi+OBj+KApiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMjYKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTMyCiBtc2dpZCAiUmVjZW50IFJlcG9zaXRvcmllcyIKIG1zZ3N0ciAi5pyA6L+R5L2/44Gj44Gf44Oq44Od44K444OI44OqIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEzMgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMzgKIG1zZ2lkICJPcGVuIFJlY2VudCBSZXBvc2l0b3J5OiIKIG1zZ3N0ciAi5pyA6L+R5L2/44Gj44Gf44Oq44Od44K444OI44Oq44KS6ZaL44GPIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjI5NiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjMwMwotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozMTAKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzAyIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzA5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjMxNgogIywgdGNsLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byBjcmVhdGUgcmVwb3NpdG9yeSAlczoiCiBtc2dzdHIgIuODquODneOCuOODiOODqiAlcyDjgpLkvZzoo73jgafjgY3jgb7jgZvjgpM6IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM4MSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ3NgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozODcKIG1zZ2lkICJEaXJlY3Rvcnk6IgogbXNnc3RyICLjg4fjgqPjg6zjgq/jg4jjg6o6IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQxMCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUzNQotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDA3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQxNyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU0NAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDE3CiBtc2dpZCAiR2l0IFJlcG9zaXRvcnkiCiBtc2dzdHIgIkdJVCDjg6rjg53jgrjjg4jjg6oiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDM1CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ0MgogIywgdGNsLWZvcm1hdAogbXNnaWQgIkRpcmVjdG9yeSAlcyBhbHJlYWR5IGV4aXN0cy4iCiBtc2dzdHIgIuODh+OCo+ODrOOCr+ODiOODqiAnJXMnIOOBr+aXouOBq+WtmOWcqOOBl+OBvuOBmeOAgiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0MzkKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQ2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiRmlsZSAlcyBhbHJlYWR5IGV4aXN0cy4iCiBtc2dzdHIgIuODleOCoeOCpOODqyAnJXMnIOOBr+aXouOBq+WtmOWcqOOBl+OBvuOBmeOAgiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDYwCiBtc2dpZCAiQ2xvbmUiCiBtc2dzdHIgIuikh+ijvSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NjYKLW1zZ2lkICJVUkw6IgotbXNnc3RyICJVUkw6IgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NzMKK21zZ2lkICJTb3VyY2UgTG9jYXRpb246IgorbXNnc3RyICLjgr3jg7zjgrnjga7kvY3nva4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDg3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ4NAorbXNnaWQgIlRhcmdldCBEaXJlY3Rvcnk6IgorbXNnc3RyICLlhYjjg4fjgqPjg6zjgq/jg4jjg6o6IgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ5NgogbXNnaWQgIkNsb25lIFR5cGU6IgogbXNnc3RyICLopIfoo73mlrnlvI86IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ5MworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MDIKIG1zZ2lkICJTdGFuZGFyZCAoRmFzdCwgU2VtaS1SZWR1bmRhbnQsIEhhcmRsaW5rcykiCiBtc2dzdHIgIuaomea6lijpq5jpgJ/jg7vkuK3lhpfplbfluqbjg7vjg4/jg7zjg4njg6rjg7Pjgq8pIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ5OQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MDgKIG1zZ2lkICJGdWxsIENvcHkgKFNsb3dlciwgUmVkdW5kYW50IEJhY2t1cCkiCiBtc2dzdHIgIuWFqOikh+WGmSjkvY7pgJ/jg7vlhpfplbfjg5Djg4Pjgq/jgqLjg4Pjg5cpIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwNQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MTQKIG1zZ2lkICJTaGFyZWQgKEZhc3Rlc3QsIE5vdCBSZWNvbW1lbmRlZCwgTm8gQmFja3VwKSIKIG1zZ3N0ciAi5YWx5pyJKOacgOmrmOmAn+ODu+mdnuaOqOWlqOODu+ODkOODg+OCr+OCouODg+ODl+eEoeOBlykiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTQxIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTg4Ci0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjczNCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjgwNAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDEzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAyMQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1NTAgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1OTcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzQzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODEzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMjMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDMxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiTm90IGEgR2l0IHJlcG9zaXRvcnk6ICVzIgogbXNnc3RyICJHaXQg44Oq44Od44K444OI44Oq44Gn44Gv44GC44KK44G+44Gb44KTOiAlcyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1NzcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTg2CiBtc2dpZCAiU3RhbmRhcmQgb25seSBhdmFpbGFibGUgZm9yIGxvY2FsIHJlcG9zaXRvcnkuIgogbXNnc3RyICLmqJnmupbmlrnlvI/jga/lkIzkuIDoqIjnrpfmqZ/kuIrjga7jg6rjg53jgrjjg4jjg6rjgavjga7jgb/kvb/jgYjjgb7jgZnjgIIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTgxCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU5MAogbXNnaWQgIlNoYXJlZCBvbmx5IGF2YWlsYWJsZSBmb3IgbG9jYWwgcmVwb3NpdG9yeS4iCiBtc2dzdHIgIuWFseacieaWueW8j+OBr+WQjOS4gOioiOeul+apn+S4iuOBruODquODneOCuOODiOODquOBq+OBruOBv+S9v+OBiOOBvuOBmeOAgiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MDIKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjExCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiTG9jYXRpb24gJXMgYWxyZWFkeSBleGlzdHMuIgogbXNnc3RyICInJXMnIOOBr+aXouOBq+WtmOWcqOOBl+OBvuOBmeOAgiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjIyCiBtc2dpZCAiRmFpbGVkIHRvIGNvbmZpZ3VyZSBvcmlnaW4iCiBtc2dzdHIgIm9yaWdpbiDjgpLoqK3lrprjgafjgY3jgb7jgZvjgpPjgafjgZfjgZ8iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjI1CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYzNAogbXNnaWQgIkNvdW50aW5nIG9iamVjdHMiCiBtc2dzdHIgIuOCquODluOCuOOCp+OCr+ODiOOCkuaVsOOBiOOBpuOBhOOBvuOBmSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MjYKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjM1CiBtc2dpZCAiYnVja2V0cyIKIG1zZ3N0ciAi44OQ44Kx44OEIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjY1MAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2NTkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gY29weSBvYmplY3RzL2luZm8vYWx0ZXJuYXRlczogJXMiCiBtc2dzdHIgIm9iamVjdHMvaW5mby9hbHRlcm5hdGVzIOOCkuikh+WGmeOBp+OBjeOBvuOBm+OCkzogJXMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Njg2CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjY5NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIk5vdGhpbmcgdG8gY2xvbmUgZnJvbSAlcy4iCiBtc2dzdHIgIiVzIOOBi+OCieikh+ijveOBmeOCi+WGheWuueOBr+OBguOCiuOBvuOBm+OCkyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2ODggbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MDIKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTE0CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjY5NyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkxMQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MjMKIG1zZ2lkICJUaGUgJ21hc3RlcicgYnJhbmNoIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZC4iCiBtc2dzdHIgIidtYXN0ZXInIOODluODqeODs+ODgeOBjOWIneacn+WMluOBleOCjOOBpuOBhOOBvuOBm+OCkyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3MDEKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzEwCiBtc2dpZCAiSGFyZGxpbmtzIGFyZSB1bmF2YWlsYWJsZS4gIEZhbGxpbmcgYmFjayB0byBjb3B5aW5nLiIKIG1zZ3N0ciAi44OP44O844OJ44Oq44Oz44Kv44GM5L2c44KM44Gq44GE44Gu44Gn44CB44Kz44OU44O844GX44G+44GZIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjcxMworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3MjIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJDbG9uaW5nIGZyb20gJXMiCiBtc2dzdHIgIiVzIOOBi+OCieikh+ijveOBl+OBpuOBhOOBvuOBmSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NDQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzUzCiBtc2dpZCAiQ29weWluZyBvYmplY3RzIgogbXNnc3RyICLjgqrjg5bjgrjjgqfjgq/jg4jjgpLopIflhpnjgZfjgabjgYTjgb7jgZkiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzQ1CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc1NAogbXNnaWQgIktpQiIKIG1zZ3N0ciAiS2lCIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc2OQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NzgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gY29weSBvYmplY3Q6ICVzIgogbXNnc3RyICLjgqrjg5bjgrjjgqfjgq/jg4jjgpLopIflhpnjgafjgY3jgb7jgZvjgpM6ICVzIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc3OQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3ODgKIG1zZ2lkICJMaW5raW5nIG9iamVjdHMiCiBtc2dzdHIgIuOCquODluOCuOOCp+OCr+ODiOOCkumAo+e1kOOBl+OBpuOBhOOBvuOBmSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3ODAKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Nzg5CiBtc2dpZCAib2JqZWN0cyIKIG1zZ3N0ciAi44Kq44OW44K444Kn44Kv44OIIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc4OAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3OTcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gaGFyZGxpbmsgb2JqZWN0OiAlcyIKIG1zZ3N0ciAi44Kq44OW44K444Kn44Kv44OI44KS44OP44O844OJ44Oq44Oz44Kv44Gn44GN44G+44Gb44KTOiAlcyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NDMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODUyCiBtc2dpZCAiQ2Fubm90IGZldGNoIGJyYW5jaGVzIGFuZCBvYmplY3RzLiAgU2VlIGNvbnNvbGUgb3V0cHV0IGZvciBkZXRhaWxzLiIKIG1zZ3N0ciAi44OW44Op44Oz44OB44KE44Kq44OW44K444Kn44Kv44OI44KS5Y+W5b6X44Gn44GN44G+44Gb44KT44CC44Kz44Oz44K944O844Or5Ye65Yqb44KS6KaL44Gm5LiL44GV44GEIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg1NAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NjMKIG1zZ2lkICJDYW5ub3QgZmV0Y2ggdGFncy4gIFNlZSBjb25zb2xlIG91dHB1dCBmb3IgZGV0YWlscy4iCiBtc2dzdHIgIuOCv+OCsOOCkuWPluW+l+OBp+OBjeOBvuOBm+OCk+OAguOCs+ODs+OCveODvOODq+WHuuWKm+OCkuimi+OBpuS4i+OBleOBhCIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NzgKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODg3CiBtc2dpZCAiQ2Fubm90IGRldGVybWluZSBIRUFELiAgU2VlIGNvbnNvbGUgb3V0cHV0IGZvciBkZXRhaWxzLiIKIG1zZ3N0ciAiSEVBRCDjgpLnorrlrprjgafjgY3jgb7jgZvjgpPjgILjgrPjg7Pjgr3jg7zjg6vlh7rlipvjgpLopovjgabkuIvjgZXjgYQiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODg3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg5NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBjbGVhbnVwICVzIgogbXNnc3RyICIlcyDjgpLmjoPpmaTjgafjgY3jgb7jgZvjgpMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODkzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkwMgogbXNnaWQgIkNsb25lIGZhaWxlZC4iCiBtc2dzdHIgIuikh+WGmeOBq+WkseaVl+OBl+OBvuOBl+OBn+OAgiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MDAKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTA5CiBtc2dpZCAiTm8gZGVmYXVsdCBicmFuY2ggb2J0YWluZWQuIgogbXNnc3RyICLjg4fjg5Xjgqnjg7zjg6vjg4jjg7vjg5bjg6njg7Pjg4HjgYzlj5blvpfjgZXjgozjgb7jgZvjgpPjgafjgZfjgZ8iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTExCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkyMAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNhbm5vdCByZXNvbHZlICVzIGFzIGEgY29tbWl0LiIKIG1zZ3N0ciAiJXMg44KS44Kz44Of44OD44OI44Go44GX44Gm6Kej6YeI44Gn44GN44G+44Gb44KTIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkyMworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MzIKIG1zZ2lkICJDcmVhdGluZyB3b3JraW5nIGRpcmVjdG9yeSIKIG1zZ3N0ciAi5L2c5qWt44OH44Kj44Os44Kv44OI44Oq44KS5L2c5oiQ44GX44Gm44GE44G+44GZIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkyNCBsaWIvaW5kZXgudGNsOjY1IGxpYi9pbmRleC50Y2w6MTI3Ci0jOiBsaWIvaW5kZXgudGNsOjE5MworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MzMgbGliL2luZGV4LnRjbDo2NSBsaWIvaW5kZXgudGNsOjEyOAorIzogbGliL2luZGV4LnRjbDoxOTYKIG1zZ2lkICJmaWxlcyIKIG1zZ3N0ciAi44OV44Kh44Kk44OrIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk1MworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NjIKIG1zZ2lkICJJbml0aWFsIGZpbGUgY2hlY2tvdXQgZmFpbGVkLiIKIG1zZ3N0ciAi5Yid5pyf44OB44Kn44OD44Kv44Ki44Km44OI44Gr5aSx5pWX44GX44G+44GX44GfIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk2OQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NzgKIG1zZ2lkICJPcGVuIgogbXNnc3RyICLplovjgY8iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTc5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk4OAogbXNnaWQgIlJlcG9zaXRvcnk6IgogbXNnc3RyICLjg6rjg53jgrjjg4jjg6o6IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMjcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAzNwogIywgdGNsLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byBvcGVuIHJlcG9zaXRvcnkgJXM6IgogbXNnc3RyICLjg6rjg53jgrjjg4jjg6ogJXMg44KS6ZaL44GR44G+44Gb44KTOiIKQEAgLTEyMzYsNyArMTMzNiw3IEBACiAiXG4iCiAi6Ieq5YuV55qE44Gr5YaN44K544Kt44Oj44Oz44KS6ZaL5aeL44GX44G+44GZ44CCXG4iCiAKLSM6IGxpYi9jb21taXQudGNsOjE1NAorIzogbGliL2NvbW1pdC50Y2w6MTU2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIlVubWVyZ2VkIGZpbGVzIGNhbm5vdCBiZSBjb21taXR0ZWQuXG4iCkBAIC0xMjQ5LDcgKzEzNDksNyBAQAogIuODleOCoeOCpOODqyAlcyDjgavjga/jg57jg7zjgrjooZ3nqoHjgYzmrovjgaPjgabjgYTjgb7jgZnjgILjgb7jgZrop6PmsbrjgZfjgabjgrPjg5/jg4Pjg4jkuojlrprjgavliqDjgYjjgovlv4UiCiAi6KaB44GM44GC44KK44G+44GZ44CCXG4iCiAKLSM6IGxpYi9jb21taXQudGNsOjE2MgorIzogbGliL2NvbW1pdC50Y2w6MTY0CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIlVua25vd24gZmlsZSBzdGF0ZSAlcyBkZXRlY3RlZC5cbiIKQEAgLTEyNjAsNyArMTM2MCw3IEBACiAiXG4iCiAi44OV44Kh44Kk44OrICVzIOOBr+acrOODl+ODreOCsOODqeODoOOBp+OBr+OCs+ODn+ODg+ODiOOBp+OBjeOBvuOBm+OCk+OAglxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoxNzAKKyM6IGxpYi9jb21taXQudGNsOjE3MgogbXNnaWQgIiIKICJObyBjaGFuZ2VzIHRvIGNvbW1pdC5cbiIKICJcbiIKQEAgLTEyNzAsNyArMTM3MCw3IEBACiAiXG4iCiAi5pyA5L2O5LiA44Gk44Gu5aSJ5pu044KS44Kz44Of44OD44OI5LqI5a6a44Gr5Yqg44GI44Gm44GL44KJ44Kz44Of44OD44OI44GX44Gm5LiL44GV44GE44CCXG4iCiAKLSM6IGxpYi9jb21taXQudGNsOjE4MworIzogbGliL2NvbW1pdC50Y2w6MTg3CiBtc2dpZCAiIgogIlBsZWFzZSBzdXBwbHkgYSBjb21taXQgbWVzc2FnZS5cbiIKICJcbiIKQEAgLTEyODgsNDUgKzEzODgsNDUgQEAKICItIOesrO+8kuihjDog56m655m9XG4iCiAiLSDmrovjgorjga7ooYw6IOOBquOBnOOAgeOBk+OBruWkieabtOOBjOiJr+OBhOWkieabtOOBi+OAgeOBruiqrOaYjuOAglxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoyMDcKKyM6IGxpYi9jb21taXQudGNsOjIxMQogIywgdGNsLWZvcm1hdAogbXNnaWQgIndhcm5pbmc6IFRjbCBkb2VzIG5vdCBzdXBwb3J0IGVuY29kaW5nICclcycuIgogbXNnc3RyICLorablkYo6IFRjbCDjga/jgqjjg7PjgrPjg7zjg4fjgqPjg7PjgrAgJyVzJyDjgpLjgrXjg53jg7zjg4jjgZfjgabjgYTjgb7jgZvjgpMiCiAKLSM6IGxpYi9jb21taXQudGNsOjIyMQorIzogbGliL2NvbW1pdC50Y2w6MjI3CiBtc2dpZCAiQ2FsbGluZyBwcmUtY29tbWl0IGhvb2suLi4iCiBtc2dzdHIgIuOCs+ODn+ODg+ODiOWJjeODleODg+OCr+OCkuWun+ihjOS4reODu+ODu+ODuyIKIAotIzogbGliL2NvbW1pdC50Y2w6MjM2CisjOiBsaWIvY29tbWl0LnRjbDoyNDIKIG1zZ2lkICJDb21taXQgZGVjbGluZWQgYnkgcHJlLWNvbW1pdCBob29rLiIKIG1zZ3N0ciAi44Kz44Of44OD44OI5YmN44OV44OD44Kv44GM44Kz44Of44OD44OI44KS5ouS5ZCm44GX44G+44GX44GfIgogCi0jOiBsaWIvY29tbWl0LnRjbDoyNTkKKyM6IGxpYi9jb21taXQudGNsOjI2NQogbXNnaWQgIkNhbGxpbmcgY29tbWl0LW1zZyBob29rLi4uIgogbXNnc3RyICLjgrPjg5/jg4Pjg4jjg7vjg6Hjg4Pjgrvjg7zjgrjjg7vjg5Xjg4Pjgq/jgpLlrp/ooYzkuK3jg7vjg7vjg7siCiAKLSM6IGxpYi9jb21taXQudGNsOjI3NAorIzogbGliL2NvbW1pdC50Y2w6MjgwCiBtc2dpZCAiQ29tbWl0IGRlY2xpbmVkIGJ5IGNvbW1pdC1tc2cgaG9vay4iCiBtc2dzdHIgIuOCs+ODn+ODg+ODiOODu+ODoeODg+OCu+ODvOOCuOODu+ODleODg+OCr+OBjOOCs+ODn+ODg+ODiOOCkuaLkuWQpuOBl+OBvuOBl+OBnyIKIAotIzogbGliL2NvbW1pdC50Y2w6Mjg3CisjOiBsaWIvY29tbWl0LnRjbDoyOTMKIG1zZ2lkICJDb21taXR0aW5nIGNoYW5nZXMuLi4iCiBtc2dzdHIgIuWkieabtOeCueOCkuOCs+ODn+ODg+ODiOS4reODu+ODu+ODuyIKIAotIzogbGliL2NvbW1pdC50Y2w6MzAzCisjOiBsaWIvY29tbWl0LnRjbDozMDkKIG1zZ2lkICJ3cml0ZS10cmVlIGZhaWxlZDoiCiBtc2dzdHIgIndyaXRlLXRyZWUg44GM5aSx5pWX44GX44G+44GX44GfOiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzA0IGxpYi9jb21taXQudGNsOjM0OCBsaWIvY29tbWl0LnRjbDozNjgKKyM6IGxpYi9jb21taXQudGNsOjMxMCBsaWIvY29tbWl0LnRjbDozNTQgbGliL2NvbW1pdC50Y2w6Mzc0CiBtc2dpZCAiQ29tbWl0IGZhaWxlZC4iCiBtc2dzdHIgIuOCs+ODn+ODg+ODiOOBq+WkseaVl+OBl+OBvuOBl+OBn+OAgiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzIxCisjOiBsaWIvY29tbWl0LnRjbDozMjcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJDb21taXQgJXMgYXBwZWFycyB0byBiZSBjb3JydXB0IgogbXNnc3RyICLjgrPjg5/jg4Pjg4ggJXMg44Gv5aOK44KM44Gm44GE44G+44GZIgogCi0jOiBsaWIvY29tbWl0LnRjbDozMjYKKyM6IGxpYi9jb21taXQudGNsOjMzMgogbXNnaWQgIiIKICJObyBjaGFuZ2VzIHRvIGNvbW1pdC5cbiIKICJcbiIKQEAgLTEzNDAsMTkgKzE0NDAsMTkgQEAKICJcbiIKICLoh6rli5XnmoTjgavlho3jgrnjgq3jg6Pjg7PjgpLplovlp4vjgZfjgb7jgZnjgIJcbiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzMzCisjOiBsaWIvY29tbWl0LnRjbDozMzkKIG1zZ2lkICJObyBjaGFuZ2VzIHRvIGNvbW1pdC4iCiBtc2dzdHIgIuOCs+ODn+ODg+ODiOOBmeOCi+WkieabtOOBjOOBguOCiuOBvuOBm+OCk+OAgiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzQ3CisjOiBsaWIvY29tbWl0LnRjbDozNTMKIG1zZ2lkICJjb21taXQtdHJlZSBmYWlsZWQ6IgogbXNnc3RyICJjb21taXQtdHJlZSDjgYzlpLHmlZfjgZfjgb7jgZfjgZ86IgogCi0jOiBsaWIvY29tbWl0LnRjbDozNjcKKyM6IGxpYi9jb21taXQudGNsOjM3MwogbXNnaWQgInVwZGF0ZS1yZWYgZmFpbGVkOiIKIG1zZ3N0ciAidXBkYXRlLXJlZiDjgYzlpLHmlZfjgZfjgb7jgZfjgZ86IgogCi0jOiBsaWIvY29tbWl0LnRjbDo0NTQKKyM6IGxpYi9jb21taXQudGNsOjQ2MQogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNyZWF0ZWQgY29tbWl0ICVzOiAlcyIKIG1zZ3N0ciAi44Kz44Of44OD44OIICVzIOOCkuS9nOaIkOOBl+OBvuOBl+OBnzogJXMiCkBAIC0xNDI3LDcgKzE1MjcsNyBAQAogbXNnaWQgIkludmFsaWQgZGF0ZSBmcm9tIEdpdDogJXMiCiBtc2dzdHIgIkdpdCDjgYvjgonlh7rjgZ/nhKHlirnjgarml6Xku5g6ICVzIgogCi0jOiBsaWIvZGlmZi50Y2w6NDQKKyM6IGxpYi9kaWZmLnRjbDo1OQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJObyBkaWZmZXJlbmNlcyBkZXRlY3RlZC5cbiIKQEAgLTE0NDksNDggKzE1NDksMTAyIEBACiAiXG4iCiAi5ZCM5qeY44Gq54q25oWL44Gu44OV44Kh44Kk44Or44KS5o6i44GZ44Gf44KB44Gr44CB6Ieq5YuV55qE44Gr5YaN44K544Kt44Oj44Oz44KS6ZaL5aeL44GX44G+44GZ44CCIgogCi0jOiBsaWIvZGlmZi50Y2w6ODMKKyM6IGxpYi9kaWZmLnRjbDo5OQogIywgdGNsLWZvcm1hdAogbXNnaWQgIkxvYWRpbmcgZGlmZiBvZiAlcy4uLiIKIG1zZ3N0ciAiJXMg44Gu5aSJ5pu054K544KS44Ot44O844OJ5Lit4oCmIgogCi0jOiBsaWIvZGlmZi50Y2w6MTE2IGxpYi9kaWZmLnRjbDoxOTAKKyM6IGxpYi9kaWZmLnRjbDoxMjAKK21zZ2lkICIiCisiTE9DQUw6IGRlbGV0ZWRcbiIKKyJSRU1PVEU6XG4iCittc2dzdHIgIiIKKyJMT0NBTDog5YmK6ZmkXG4iCisiUmVtb3RlOlxuIgorCisjOiBsaWIvZGlmZi50Y2w6MTI1Cittc2dpZCAiIgorIlJFTU9URTogZGVsZXRlZFxuIgorIkxPQ0FMOlxuIgorbXNnc3RyICIiCisiUkVNT1RFOiDliYrpmaRcbiIKKyJMT0NBTDpcbiIKKworIzogbGliL2RpZmYudGNsOjEzMgorbXNnaWQgIkxPQ0FMOlxuIgorbXNnc3RyICJMT0NBTDpcbiIKKworIzogbGliL2RpZmYudGNsOjEzNQorbXNnaWQgIlJFTU9URTpcbiIKK21zZ3N0ciAiUkVNT1RFXG4iCisKKyM6IGxpYi9kaWZmLnRjbDoxOTcgbGliL2RpZmYudGNsOjI5NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBkaXNwbGF5ICVzIgogbXNnc3RyICIlcyDjgpLooajnpLrjgafjgY3jgb7jgZvjgpMiCiAKLSM6IGxpYi9kaWZmLnRjbDoxMTcKKyM6IGxpYi9kaWZmLnRjbDoxOTgKIG1zZ2lkICJFcnJvciBsb2FkaW5nIGZpbGU6IgogbXNnc3RyICLjg5XjgqHjgqTjg6vjgpLoqq3jgoDpmpvjga7jgqjjg6njg7zjgafjgZk6IgogCi0jOiBsaWIvZGlmZi50Y2w6MTI0CisjOiBsaWIvZGlmZi50Y2w6MjA1CiBtc2dpZCAiR2l0IFJlcG9zaXRvcnkgKHN1YnByb2plY3QpIgogbXNnc3RyICJHaXQg44Oq44Od44K444OI44OqKOOCteODluODl+ODreOCuOOCp+OCr+ODiCkiCiAKLSM6IGxpYi9kaWZmLnRjbDoxMzYKKyM6IGxpYi9kaWZmLnRjbDoyMTcKIG1zZ2lkICIqIEJpbmFyeSBmaWxlIChub3Qgc2hvd2luZyBjb250ZW50KS4iCiBtc2dzdHIgIiog44OQ44Kk44OK44Oq44OV44Kh44Kk44OrKOWGheWuueOBr+ihqOekuuOBl+OBvuOBm+OCkykiCiAKLSM6IGxpYi9kaWZmLnRjbDoxOTEKLW1zZ2lkICJFcnJvciBsb2FkaW5nIGRpZmY6IgotbXNnc3RyICJkaWZmIOOCkuiqreOCgOmam+OBruOCqOODqeODvOOBp+OBmToiCisjOiBsaWIvZGlmZi50Y2w6MjIyCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIiogVW50cmFja2VkIGZpbGUgaXMgJWQgYnl0ZXMuXG4iCisiKiBTaG93aW5nIG9ubHkgZmlyc3QgJWQgYnl0ZXMuXG4iCittc2dzdHIgIiIKKyIqIOeuoeeQhuWkluOBruODleOCoeOCpOODq+OBruWkp+OBjeOBleOBryAlZCDjg5DjgqTjg4jjgafjgZnjgIJcbiIKKyIqIOacgOWIneOBriAlZCDjg5DjgqTjg4jjgaDjgZHooajnpLrjgZfjgabjgYTjgb7jgZnjgIJcbiIKIAotIzogbGliL2RpZmYudGNsOjMxMworIzogbGliL2RpZmYudGNsOjIyOAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIqIFVudHJhY2tlZCBmaWxlIGNsaXBwZWQgaGVyZSBieSAlcy5cbiIKKyIqIFRvIHNlZSB0aGUgZW50aXJlIGZpbGUsIHVzZSBhbiBleHRlcm5hbCBlZGl0b3IuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJcbiIKKyIqICVzIOOBr+euoeeQhuWkluOBruODleOCoeOCpOODq+OCkuOBk+OBk+OBp+WIh+OCiuOBiuOBqOOBl+OBvuOBl+OBn+OAglxuIgorIiog5YWo5L2T44KS6KaL44KL44Gr44Gv5aSW6YOo44Ko44OH44Kj44K/44KS5L2/44Gj44Gm44GP44Gg44GV44GE44CCXG4iCisKKyM6IGxpYi9kaWZmLnRjbDo0MzYKIG1zZ2lkICJGYWlsZWQgdG8gdW5zdGFnZSBzZWxlY3RlZCBodW5rLiIKIG1zZ3N0ciAi6YG45oqe44GV44KM44Gf44OR44OD44OB44KS44Kz44Of44OD44OI5LqI5a6a44GL44KJ5aSW44Gb44G+44Gb44KT44CCIgogCi0jOiBsaWIvZGlmZi50Y2w6MzIwCisjOiBsaWIvZGlmZi50Y2w6NDQzCiBtc2dpZCAiRmFpbGVkIHRvIHN0YWdlIHNlbGVjdGVkIGh1bmsuIgogbXNnc3RyICLpgbjmip7jgZXjgozjgZ/jg5Hjg4Pjg4HjgpLjgrPjg5/jg4Pjg4jkuojlrprjgavliqDjgYjjgonjgozjgb7jgZvjgpPjgIIiCiAKLSM6IGxpYi9kaWZmLnRjbDozODYKKyM6IGxpYi9kaWZmLnRjbDo1MDkKIG1zZ2lkICJGYWlsZWQgdG8gdW5zdGFnZSBzZWxlY3RlZCBsaW5lLiIKIG1zZ3N0ciAi6YG45oqe44GV44KM44Gf44OR44OD44OB6KGM44KS44Kz44Of44OD44OI5LqI5a6a44GL44KJ5aSW44Gb44G+44Gb44KT44CCIgogCi0jOiBsaWIvZGlmZi50Y2w6Mzk0CisjOiBsaWIvZGlmZi50Y2w6NTE3CiBtc2dpZCAiRmFpbGVkIHRvIHN0YWdlIHNlbGVjdGVkIGxpbmUuIgogbXNnc3RyICLpgbjmip7jgZXjgozjgZ/jg5Hjg4Pjg4HooYzjgpLjgrPjg5/jg4Pjg4jkuojlrprjgavliqDjgYjjgonjgozjgb7jgZvjgpPjgIIiCiAKKyM6IGxpYi9lbmNvZGluZy50Y2w6NDQzCittc2dpZCAiRGVmYXVsdCIKK21zZ3N0ciAi44OH44OV44Kp44O844Or44OIIgorCisjOiBsaWIvZW5jb2RpbmcudGNsOjQ0OAorIywgdGNsLWZvcm1hdAorbXNnaWQgIlN5c3RlbSAoJXMpIgorbXNnc3RyICLjgrfjgrnjg4bjg6AgKCVzKSIKKworIzogbGliL2VuY29kaW5nLnRjbDo0NTkgbGliL2VuY29kaW5nLnRjbDo0NjUKK21zZ2lkICJPdGhlciIKK21zZ3N0ciAi44Gd44Gu5LuWIgorCiAjOiBsaWIvZXJyb3IudGNsOjIwIGxpYi9lcnJvci50Y2w6MTE0CiBtc2dpZCAiZXJyb3IiCiBtc2dzdHIgIuOCqOODqeODvCIKQEAgLTE1MjcsMzggKzE2ODEsNDcgQEAKIG1zZ2lkICJVbmxvY2sgSW5kZXgiCiBtc2dzdHIgIuOCpOODs+ODh+ODg+OCr+OCueOBruODreODg+OCr+ino+mZpCIKIAotIzogbGliL2luZGV4LnRjbDoyODIKKyM6IGxpYi9pbmRleC50Y2w6Mjg3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5zdGFnaW5nICVzIGZyb20gY29tbWl0IgogbXNnc3RyICLjgrPjg5/jg4Pjg4jjgYvjgokgJyVzJyDjgpLpmY3jgo3jgZkiCiAKLSM6IGxpYi9pbmRleC50Y2w6MzEzCisjOiBsaWIvaW5kZXgudGNsOjMyNgogbXNnaWQgIlJlYWR5IHRvIGNvbW1pdC4iCiBtc2dzdHIgIuOCs+ODn+ODg+ODiOa6luWCmeWujOS6hiIKIAotIzogbGliL2luZGV4LnRjbDozMjYKKyM6IGxpYi9pbmRleC50Y2w6MzM5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQWRkaW5nICVzIgogbXNnc3RyICLjgrPjg5/jg4Pjg4jjgasgJXMg44KS5Yqg44GI44Gm44GE44G+44GZIgogCi0jOiBsaWIvaW5kZXgudGNsOjM4MQorIzogbGliL2luZGV4LnRjbDozOTYKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJSZXZlcnQgY2hhbmdlcyBpbiBmaWxlICVzPyIKIG1zZ3N0ciAi44OV44Kh44Kk44OrICVzIOOBq+OBl+OBn+WkieabtOOCkuWFg+OBq+aIu+OBl+OBvuOBmeOBi++8nyIKIAotIzogbGliL2luZGV4LnRjbDozODMKKyM6IGxpYi9pbmRleC50Y2w6Mzk4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmV2ZXJ0IGNoYW5nZXMgaW4gdGhlc2UgJWkgZmlsZXM/IgogbXNnc3RyICLjgZPjgozjgokgJWkg5YCL44Gu44OV44Kh44Kk44Or44Gr44GX44Gf5aSJ5pu044KS5YWD44Gr5oi744GX44G+44GZ44GL77yfIgogCi0jOiBsaWIvaW5kZXgudGNsOjM5MQorIzogbGliL2luZGV4LnRjbDo0MDYKIG1zZ2lkICJBbnkgdW5zdGFnZWQgY2hhbmdlcyB3aWxsIGJlIHBlcm1hbmVudGx5IGxvc3QgYnkgdGhlIHJldmVydC4iCiBtc2dzdHIgIuWkieabtOOCkuWFg+OBq+aIu+OBmeOBqOOCs+ODn+ODg+ODiOS6iOWumuOBl+OBpuOBhOOBquOBhOWkieabtOOBr+WFqOOBpuWkseOCj+OCjOOBvuOBmeOAgiIKIAotIzogbGliL2luZGV4LnRjbDozOTQKKyM6IGxpYi9pbmRleC50Y2w6NDA5CiBtc2dpZCAiRG8gTm90aGluZyIKIG1zZ3N0ciAi5L2V44KC44GX44Gq44GEIgogCisjOiBsaWIvaW5kZXgudGNsOjQyNworbXNnaWQgIlJldmVydGluZyBzZWxlY3RlZCBmaWxlcyIKK21zZ3N0ciAi6YG45oqe44GV44KM44Gf44OV44Kh44Kk44Or44Gr44GX44Gf5aSJ5pu044KS5YWD44Gr5oi744GX44G+44GZIgorCisjOiBsaWIvaW5kZXgudGNsOjQzMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlJldmVydGluZyAlcyIKK21zZ3N0ciAiJXMg44Gr44GX44Gf5aSJ5pu044KS5YWD44Gr5oi744GX44G+44GZIgorCiAjOiBsaWIvbWVyZ2UudGNsOjEzCiBtc2dpZCAiIgogIkNhbm5vdCBtZXJnZSB3aGlsZSBhbWVuZGluZy5cbiIKQEAgLTE1ODUsNyArMTc0OCw3IEBACiAiXG4iCiAi6Ieq5YuV55qE44Gr5YaN44K544Kt44Oj44Oz44KS6ZaL5aeL44GX44G+44GZ44CCXG4iCiAKLSM6IGxpYi9tZXJnZS50Y2w6NDQKKyM6IGxpYi9tZXJnZS50Y2w6NDUKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiWW91IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGEgY29uZmxpY3RlZCBtZXJnZS5cbiIKQEAgLTE2MDIsNyArMTc2NSw3IEBACiAi44GT44Gu44OV44Kh44Kk44Or44Gu6KGd56qB44KS6Kej5rG644GX44CB44Kz44Of44OD44OI5LqI5a6a44Gr5Yqg44GI44Gm44CB44Kz44Of44OD44OI44GZ44KL44GT44Go44Gn44Oe44O844K444KSIgogIuWujOS6huOBl+OBvuOBmeOAguOBneOBhuOChOOBo+OBpuWni+OCgeOBpuOAgeaWsOOBn+OBquODnuODvOOCuOOCkumWi+Wni+OBp+OBjeOCi+OCiOOBhuOBq+OBquOCiuOBvuOBmeOAglxuIgogCi0jOiBsaWIvbWVyZ2UudGNsOjU0CisjOiBsaWIvbWVyZ2UudGNsOjU1CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIllvdSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhIGNoYW5nZS5cbiIKQEAgLTE2MTksMzQgKzE3ODIsMzQgQEAKICLnj77lnKjjga7jgrPjg5/jg4Pjg4jjgpLlrozkuobjgZfjgabjgYvjgonjg57jg7zjgrjjgpLplovlp4vjgZfjgabkuIvjgZXjgYTjgILjgZ3jgYbjgZnjgovmlrnjgYzjg57jg7zjgrjjgavlpLHmlZciCiAi44GX44Gf44Go44GN44Gu5Zue5b6p44GM5qW944Gn44GZ44CCXG4iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTA2CisjOiBsaWIvbWVyZ2UudGNsOjEwNwogIywgdGNsLWZvcm1hdAogbXNnaWQgIiVzIG9mICVzIgogbXNnc3RyICIlcyDjga4gJXMg44OW44Op44Oz44OBIgogCi0jOiBsaWIvbWVyZ2UudGNsOjExOQorIzogbGliL21lcmdlLnRjbDoxMjAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJNZXJnaW5nICVzIGFuZCAlcy4uLiIKIG1zZ3N0ciAiJXMg44GoICVzIOOCkuODnuODvOOCuOS4reODu+ODu+ODuyIKIAotIzogbGliL21lcmdlLnRjbDoxMzAKKyM6IGxpYi9tZXJnZS50Y2w6MTMxCiBtc2dpZCAiTWVyZ2UgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4iCiBtc2dzdHIgIuODnuODvOOCuOOBjOWujOS6huOBl+OBvuOBl+OBnyIKIAotIzogbGliL21lcmdlLnRjbDoxMzIKKyM6IGxpYi9tZXJnZS50Y2w6MTMzCiBtc2dpZCAiTWVyZ2UgZmFpbGVkLiAgQ29uZmxpY3QgcmVzb2x1dGlvbiBpcyByZXF1aXJlZC4iCiBtc2dzdHIgIuODnuODvOOCuOOBjOWkseaVl+OBl+OBvuOBl+OBn+OAguihneeqgeOBruino+axuuOBjOW/heimgeOBp+OBmeOAgiIKIAotIzogbGliL21lcmdlLnRjbDoxNTcKKyM6IGxpYi9tZXJnZS50Y2w6MTU4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiTWVyZ2UgSW50byAlcyIKIG1zZ3N0ciAiJXMg44Gr44Oe44O844K4IgogCi0jOiBsaWIvbWVyZ2UudGNsOjE3NgorIzogbGliL21lcmdlLnRjbDoxNzcKIG1zZ2lkICJSZXZpc2lvbiBUbyBNZXJnZSIKIG1zZ3N0ciAi44Oe44O844K444GZ44KL44Oq44OT44K444On44OzIgogCi0jOiBsaWIvbWVyZ2UudGNsOjIxMQorIzogbGliL21lcmdlLnRjbDoyMTIKIG1zZ2lkICIiCiAiQ2Fubm90IGFib3J0IHdoaWxlIGFtZW5kaW5nLlxuIgogIlxuIgpAQCAtMTY1Niw3ICsxODE5LDcgQEAKICJcbiIKICLjgb7jgZrku4rjga7jgrPjg5/jg4Pjg4joqILmraPjgpLlrozkuobjgZXjgZvjgabkuIvjgZXjgYTjgIJcbiIKIAotIzogbGliL21lcmdlLnRjbDoyMjEKKyM6IGxpYi9tZXJnZS50Y2w6MjIyCiBtc2dpZCAiIgogIkFib3J0IG1lcmdlP1xuIgogIlxuIgpAQCAtMTY3MCw3ICsxODMzLDcgQEAKICJcbiIKICLjg57jg7zjgrjjgpLkuK3mlq3jgZfjgabjgojjgo3jgZfjgYTjgafjgZnjgYvvvJ8iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjI3CisjOiBsaWIvbWVyZ2UudGNsOjIyOAogbXNnaWQgIiIKICJSZXNldCBjaGFuZ2VzP1xuIgogIlxuIgpAQCAtMTY4NCwxMzEgKzE4NDcsMzIzIEBACiAiXG4iCiAi44Oq44K744OD44OI44GX44Gm44KI44KN44GX44GE44Gn44GZ44GL77yfIgogCi0jOiBsaWIvbWVyZ2UudGNsOjIzOAorIzogbGliL21lcmdlLnRjbDoyMzkKIG1zZ2lkICJBYm9ydGluZyIKIG1zZ3N0ciAi5Lit5pat44GX44Gm44GE44G+44GZIgogCi0jOiBsaWIvbWVyZ2UudGNsOjIzOAorIzogbGliL21lcmdlLnRjbDoyMzkKIG1zZ2lkICJmaWxlcyByZXNldCIKIG1zZ3N0ciAi44Oq44K744OD44OI44GX44Gf44OV44Kh44Kk44OrIgogCi0jOiBsaWIvbWVyZ2UudGNsOjI2NgorIzogbGliL21lcmdlLnRjbDoyNjcKIG1zZ2lkICJBYm9ydCBmYWlsZWQuIgogbXNnc3RyICLkuK3mlq3jgavlpLHmlZfjgZfjgb7jgZfjgZ/jgIIiCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjY4CisjOiBsaWIvbWVyZ2UudGNsOjI2OQogbXNnaWQgIkFib3J0IGNvbXBsZXRlZC4gIFJlYWR5LiIKIG1zZ3N0ciAi5Lit5pat5a6M5LqG44CCIgogCi0jOiBsaWIvb3B0aW9uLnRjbDo5NQorIzogbGliL21lcmdldG9vbC50Y2w6OAorbXNnaWQgIkZvcmNlIHJlc29sdXRpb24gdG8gdGhlIGJhc2UgdmVyc2lvbj8iCittc2dzdHIgIuWFsemAmuOBrueJiOOCkuS9v+OBhOOBvuOBmeOBiz8iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjkKK21zZ2lkICJGb3JjZSByZXNvbHV0aW9uIHRvIHRoaXMgYnJhbmNoPyIKK21zZ3N0ciAi6Ieq5YiG44Gu5YG044Gu54mI44KS5L2/44GE44G+44GZ44GLPyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MTAKK21zZ2lkICJGb3JjZSByZXNvbHV0aW9uIHRvIHRoZSBvdGhlciBicmFuY2g/IgorbXNnc3RyICLnm7jmiYvliLbjga7niYjjgpLkvb/jgYTjgb7jgZnjgYs/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoxNAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJOb3RlIHRoYXQgdGhlIGRpZmYgc2hvd3Mgb25seSBjb25mbGljdGluZyBjaGFuZ2VzLlxuIgorIlxuIgorIiVzIHdpbGwgYmUgb3ZlcndyaXR0ZW4uXG4iCisiXG4iCisiVGhpcyBvcGVyYXRpb24gY2FuIGJlIHVuZG9uZSBvbmx5IGJ5IHJlc3RhcnRpbmcgdGhlIG1lcmdlLiIKK21zZ3N0ciAiIgorIuertuWQiOOBmeOCi+WkieabtOeCueOBoOOBkeOBjOihqOekuuOBleOCjOOBpuOBhOOCi+OBk+OBqOOBq+azqOaEj+OBl+OBpuOBj+OBoOOBleOBhOOAglxuIgorIlxuIgorIiVzIOOBr+S4iuabuOOBjeOBleOCjOOBvuOBmeOAglxuIgorIlxuIgorIuOChOOCiuebtOOBmeOBq+OBr+ODnuODvOOCuOWFqOS9k+OCkuOChOOCiuebtOOBl+OBpuOBj+OBoOOBleOBhOOAgiIKKworIzogbGliL21lcmdldG9vbC50Y2w6NDUKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGaWxlICVzIHNlZW1zIHRvIGhhdmUgdW5yZXNvbHZlZCBjb25mbGljdHMsIHN0aWxsIHN0YWdlPyIKK21zZ3N0ciAi44OV44Kh44Kk44OrICVzIOOBq+OBr+ino+axuuOBl+OBpuOBhOOBquOBhOertuWQiOmDqOWIhuOBjOOBvuOBoOOBguOCi+OCiOOBhuOBp+OBmeOBjOOAgeOBhOOBhOOBp+OBmeOBiz8iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjYwCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQWRkaW5nIHJlc29sdXRpb24gZm9yICVzIgorbXNnc3RyICIlcyDjgbjjga7op6PmsbrjgpLjgrnjg4bjg7zjgrjjgZfjgb7jgZkiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjE0MQorbXNnaWQgIkNhbm5vdCByZXNvbHZlIGRlbGV0aW9uIG9yIGxpbmsgY29uZmxpY3RzIHVzaW5nIGEgdG9vbCIKK21zZ3N0ciAi44OE44O844Or44Gn44Gv5YmK6Zmk44KE44Oq44Oz44Kv56u25ZCI44Gv5omx44GI44G+44Gb44KTIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoxNDYKK21zZ2lkICJDb25mbGljdCBmaWxlIGRvZXMgbm90IGV4aXN0IgorbXNnc3RyICLnq7blkIjjg5XjgqHjgqTjg6vjga/lrZjlnKjjgZfjgb7jgZvjgpPjgIIiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjI2NAorIywgdGNsLWZvcm1hdAorbXNnaWQgIk5vdCBhIEdVSSBtZXJnZSB0b29sOiAnJXMnIgorbXNnc3RyICJHVUkg44Oe44O844K444OE44O844Or44Gn44Gv44GC44KK44G+44Gb44KTOiAlcyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MjY4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVW5zdXBwb3J0ZWQgbWVyZ2UgdG9vbCAnJXMnIgorbXNnc3RyICLjg57jg7zjgrjjg4Tjg7zjg6sgJyVzJyDjga/jgrXjg53jg7zjg4jjgZfjgabjgYTjgb7jgZvjgpMiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjMwMworbXNnaWQgIk1lcmdlIHRvb2wgaXMgYWxyZWFkeSBydW5uaW5nLCB0ZXJtaW5hdGUgaXQ/IgorbXNnc3RyICLjg57jg7zjgrjjg4Tjg7zjg6vjga/jgZnjgafjgavotbfli5XjgZfjgabjgYTjgb7jgZnjgILntYLkuobjgZfjgb7jgZnjgYs/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDozMjMKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiRXJyb3IgcmV0cmlldmluZyB2ZXJzaW9uczpcbiIKKyIlcyIKK21zZ3N0ciAiIgorIueJiOOBruWPluOCiuWHuuOBl+aZguOBq+OCqOODqeODvOOBjOWHuuOBvuOBl+OBnzpcbiIKKyIlcyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MzQzCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkIG5vdCBzdGFydCB0aGUgbWVyZ2UgdG9vbDpcbiIKKyJcbiIKKyIlcyIKK21zZ3N0ciAiIgorIuODnuODvOOCuOODhOODvOODq+OBjOi1t+WLleOBp+OBjeOBvuOBm+OCkzpcbiIKKyJcbiIKKyIlcyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MzQ3Cittc2dpZCAiUnVubmluZyBtZXJnZSB0b29sLi4uIgorbXNnc3RyICLjg57jg7zjgrjjg4Tjg7zjg6vjgpLlrp/ooYzjgZfjgabjgYTjgb7jgZkuLi4iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjM3NSBsaWIvbWVyZ2V0b29sLnRjbDozODMKK21zZ2lkICJNZXJnZSB0b29sIGZhaWxlZC4iCittc2dzdHIgIuODnuODvOOCuOODhOODvOODq+OBjOWkseaVl+OBl+OBvuOBl+OBn+OAgiIKKworIzogbGliL29wdGlvbi50Y2w6MTEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGdsb2JhbCBlbmNvZGluZyAnJXMnIgorbXNnc3RyICLlhajkvZPjgqjjg7PjgrPjg7zjg4fjgqPjg7PjgrDjgasg54Sh5Yq544GqICVzIOOBjOaMh+WumuOBleOCjOOBpuOBhOOBvuOBmSIKKworIzogbGliL29wdGlvbi50Y2w6MTkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHJlcG8gZW5jb2RpbmcgJyVzJyIKK21zZ3N0ciAi44Oq44Od44K444OI44Oq44Ko44Oz44Kz44O844OH44Kj44Oz44Kw44GrIOeEoeWKueOBqiAlcyDjgYzmjIflrprjgZXjgozjgabjgYTjgb7jgZkiCisKKyM6IGxpYi9vcHRpb24udGNsOjExNwogbXNnaWQgIlJlc3RvcmUgRGVmYXVsdHMiCiBtc2dzdHIgIuaXouWumuWApOOBq+aIu+OBmSIKIAotIzogbGliL29wdGlvbi50Y2w6OTkKKyM6IGxpYi9vcHRpb24udGNsOjEyMQogbXNnaWQgIlNhdmUiCiBtc2dzdHIgIuS/neWtmCIKIAotIzogbGliL29wdGlvbi50Y2w6MTA5CisjOiBsaWIvb3B0aW9uLnRjbDoxMzEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIlcyBSZXBvc2l0b3J5IgogbXNnc3RyICIlcyDjg6rjg53jgrjjg4jjg6oiCiAKLSM6IGxpYi9vcHRpb24udGNsOjExMAorIzogbGliL29wdGlvbi50Y2w6MTMyCiBtc2dpZCAiR2xvYmFsIChBbGwgUmVwb3NpdG9yaWVzKSIKIG1zZ3N0ciAi5aSn5Z+f77yI5YWo44Gm44Gu44Oq44Od44K444OI44Oq77yJIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMTYKKyM6IGxpYi9vcHRpb24udGNsOjEzOAogbXNnaWQgIlVzZXIgTmFtZSIKIG1zZ3N0ciAi44Om44O844K25ZCNIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMTcKKyM6IGxpYi9vcHRpb24udGNsOjEzOQogbXNnaWQgIkVtYWlsIEFkZHJlc3MiCiBtc2dzdHIgIumbu+WtkOODoeODvOODq+OCouODieODrOOCuSIKIAotIzogbGliL29wdGlvbi50Y2w6MTE5CisjOiBsaWIvb3B0aW9uLnRjbDoxNDEKIG1zZ2lkICJTdW1tYXJpemUgTWVyZ2UgQ29tbWl0cyIKIG1zZ3N0ciAi44Oe44O844K444Kz44Of44OD44OI44Gu6KaB57SEIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjAKKyM6IGxpYi9vcHRpb24udGNsOjE0MgogbXNnaWQgIk1lcmdlIFZlcmJvc2l0eSIKIG1zZ3N0ciAi44Oe44O844K444Gu5YaX6ZW35bqmIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjEKKyM6IGxpYi9vcHRpb24udGNsOjE0MwogbXNnaWQgIlNob3cgRGlmZnN0YXQgQWZ0ZXIgTWVyZ2UiCiBtc2dzdHIgIuODnuODvOOCuOW+jOOBqyBkaWZmc3RhdCDjgpLooajnpLoiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyMworIzogbGliL29wdGlvbi50Y2w6MTQ0Cittc2dpZCAiVXNlIE1lcmdlIFRvb2wiCittc2dzdHIgIuODnuODvOOCuOODhOODvOODq+OCkuS9v+eUqCIKKworIzogbGliL29wdGlvbi50Y2w6MTQ2CiBtc2dpZCAiVHJ1c3QgRmlsZSBNb2RpZmljYXRpb24gVGltZXN0YW1wcyIKIG1zZ3N0ciAi44OV44Kh44Kk44Or5aSJ5pu05pmC5Yi744KS5L+h6aC844GZ44KLIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjQKKyM6IGxpYi9vcHRpb24udGNsOjE0NwogbXNnaWQgIlBydW5lIFRyYWNraW5nIEJyYW5jaGVzIER1cmluZyBGZXRjaCIKIG1zZ3N0ciAi44OV44Kn44OD44OB5Lit44Gr44OI44Op44OD44Kt44Oz44Kw44OW44Op44Oz44OB44KS5YiI44KLIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjUKKyM6IGxpYi9vcHRpb24udGNsOjE0OAogbXNnaWQgIk1hdGNoIFRyYWNraW5nIEJyYW5jaGVzIgogbXNnc3RyICLjg4jjg6njg4Pjgq3jg7PjgrDjg5bjg6njg7Pjg4HjgpLlkIjjgo/jgZvjgosiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyNgorIzogbGliL29wdGlvbi50Y2w6MTQ5CiBtc2dpZCAiQmxhbWUgQ29weSBPbmx5IE9uIENoYW5nZWQgRmlsZXMiCiBtc2dzdHIgIuWkieabtOOBleOCjOOBn+ODleOCoeOCpOODq+OBruOBv+OCs+ODlOODvOaknOefpeOCkuihjOOBquOBhiIKIAotIzogbGliL29wdGlvbi50Y2w6MTI3CisjOiBsaWIvb3B0aW9uLnRjbDoxNTAKIG1zZ2lkICJNaW5pbXVtIExldHRlcnMgVG8gQmxhbWUgQ29weSBPbiIKIG1zZ3N0ciAi44Kz44OU44O844KS5qSc55+l44GZ44KL5pyA5bCR5paH5a2X5pWwIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjgKKyM6IGxpYi9vcHRpb24udGNsOjE1MQorbXNnaWQgIkJsYW1lIEhpc3RvcnkgQ29udGV4dCBSYWRpdXMgKGRheXMpIgorbXNnc3RyICLoqLvph4jjgZnjgovlsaXmrbTljYrlvoTvvIjml6XmlbDvvIkiCisKKyM6IGxpYi9vcHRpb24udGNsOjE1MgogbXNnaWQgIk51bWJlciBvZiBEaWZmIENvbnRleHQgTGluZXMiCiBtc2dzdHIgImRpZmYg44Gu5paH6ISI6KGM5pWwIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjkKKyM6IGxpYi9vcHRpb24udGNsOjE1MwogbXNnaWQgIkNvbW1pdCBNZXNzYWdlIFRleHQgV2lkdGgiCiBtc2dzdHIgIuOCs+ODn+ODg+ODiOODoeODg+OCu+ODvOOCuOOBruODhuOCreOCueODiOW5hSIKIAotIzogbGliL29wdGlvbi50Y2w6MTMwCisjOiBsaWIvb3B0aW9uLnRjbDoxNTQKIG1zZ2lkICJOZXcgQnJhbmNoIE5hbWUgVGVtcGxhdGUiCiBtc2dzdHIgIuaWsOOBl+OBhOODluODqeODs+ODgeWQjeOBruODhuODs+ODl+ODrOODvOODiCIKIAotIzogbGliL29wdGlvbi50Y2w6MTk0CisjOiBsaWIvb3B0aW9uLnRjbDoxNTUKK21zZ2lkICJEZWZhdWx0IEZpbGUgQ29udGVudHMgRW5jb2RpbmciCittc2dzdHIgIuODleOCoeOCpOODq+WGheWuueOBruODh+ODleOCqeODvOODq+ODiOOCqOODs+OCs+ODvOODh+OCo+ODs+OCsCIKKworIzogbGliL29wdGlvbi50Y2w6MjAzCittc2dpZCAiQ2hhbmdlIgorbXNnc3RyICLlpInmm7QiCisKKyM6IGxpYi9vcHRpb24udGNsOjIzMAogbXNnaWQgIlNwZWxsaW5nIERpY3Rpb25hcnk6IgogbXNnc3RyICLjgrnjg5rjg6vjg4Hjgqfjg4Pjgq/ovp7mm7giCiAKLSM6IGxpYi9vcHRpb24udGNsOjIxOAorIzogbGliL29wdGlvbi50Y2w6MjU0CiBtc2dpZCAiQ2hhbmdlIEZvbnQiCiBtc2dzdHIgIuODleOCqeODs+ODiOOCkuWkieabtCIKIAotIzogbGliL29wdGlvbi50Y2w6MjIyCisjOiBsaWIvb3B0aW9uLnRjbDoyNTgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJDaG9vc2UgJXMiCiBtc2dzdHIgIiVzIOOCkumBuOaKniIKIAotIzogbGliL29wdGlvbi50Y2w6MjI4CisjOiBsaWIvb3B0aW9uLnRjbDoyNjQKIG1zZ2lkICJwdC4iCiBtc2dzdHIgIuODneOCpOODs+ODiCIKIAotIzogbGliL29wdGlvbi50Y2w6MjQyCisjOiBsaWIvb3B0aW9uLnRjbDoyNzgKIG1zZ2lkICJQcmVmZXJlbmNlcyIKIG1zZ3N0ciAi6Kit5a6aIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoyNzcKKyM6IGxpYi9vcHRpb24udGNsOjMxNAogbXNnaWQgIkZhaWxlZCB0byBjb21wbGV0ZWx5IHNhdmUgb3B0aW9uczoiCiBtc2dzdHIgIuWujOWFqOOBq+OCquODl+OCt+ODp+ODs+OCkuS/neWtmOOBp+OBjeOBvuOBm+OCkzoiCiAKLSM6IGxpYi9yZW1vdGUudGNsOjE2NQorIzogbGliL3JlbW90ZS50Y2w6MTYzCittc2dpZCAiUmVtb3ZlIFJlbW90ZSIKK21zZ3N0ciAi44Oq44Oi44O844OI44KS5YmK6ZmkIgorCisjOiBsaWIvcmVtb3RlLnRjbDoxNjgKIG1zZ2lkICJQcnVuZSBmcm9tIgogbXNnc3RyICLjgYvjgonliIjovrzjgoDigKYiCiAKLSM6IGxpYi9yZW1vdGUudGNsOjE3MAorIzogbGliL3JlbW90ZS50Y2w6MTczCiBtc2dpZCAiRmV0Y2ggZnJvbSIKIG1zZ3N0ciAi5Y+W5b6X5YWDIgogCi0jOiBsaWIvcmVtb3RlLnRjbDoyMTMKKyM6IGxpYi9yZW1vdGUudGNsOjIxNQogbXNnaWQgIlB1c2ggdG8iCiBtc2dzdHIgIuODl+ODg+OCt+ODpeWFiCIKIAorIzogbGliL3JlbW90ZV9hZGQudGNsOjE5Cittc2dpZCAiQWRkIFJlbW90ZSIKK21zZ3N0ciAi44Oq44Oi44O844OI44KS6L+95YqgIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MjQKK21zZ2lkICJBZGQgTmV3IFJlbW90ZSIKK21zZ3N0ciAi44Oq44Oi44O844OI44KS5paw6KaP44Gr6L+95YqgIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MjggbGliL3Rvb2xzX2RsZy50Y2w6MzYKK21zZ2lkICJBZGQiCittc2dzdHIgIui/veWKoCIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjM3Cittc2dpZCAiUmVtb3RlIERldGFpbHMiCittc2dzdHIgIuODquODouODvOODiOOBruips+e0sCIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjUwCittc2dpZCAiTG9jYXRpb246IgorbXNnc3RyICLloLTmiYA6IgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NjIKK21zZ2lkICJGdXJ0aGVyIEFjdGlvbiIKK21zZ3N0ciAi44Gd44Gu5LuW44Gu5YuV5L2cIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NjUKK21zZ2lkICJGZXRjaCBJbW1lZGlhdGVseSIKK21zZ3N0ciAi5Y2z5bqn44Gr5Y+W5b6XIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NzEKK21zZ2lkICJJbml0aWFsaXplIFJlbW90ZSBSZXBvc2l0b3J5IGFuZCBQdXNoIgorbXNnc3RyICLjg6rjg6Ljg7zjg4jjg6zjg53jgrjjg4jjg6rjgpLliJ3mnJ/ljJbjgZfjgabjg5fjg4Pjgrfjg6UiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo3NworbXNnaWQgIkRvIE5vdGhpbmcgRWxzZSBOb3ciCittc2dzdHIgIuS9leOCguOBl+OBquOBhCIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjEwMQorbXNnaWQgIlBsZWFzZSBzdXBwbHkgYSByZW1vdGUgbmFtZS4iCittc2dzdHIgIuODquODouODvOODiOWQjeOCkuaMh+WumuOBl+OBpuS4i+OBleOBhOOAgiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjExNAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiclcycgaXMgbm90IGFuIGFjY2VwdGFibGUgcmVtb3RlIG5hbWUuIgorbXNnc3RyICInJXMnIOOBr+ODquODouODvOODiOWQjeOBq+S9v+OBiOOBvuOBm+OCk+OAgiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjEyNQorIywgdGNsLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byBhZGQgcmVtb3RlICclcycgb2YgbG9jYXRpb24gJyVzJy4iCittc2dzdHIgIuWgtOaJgCAnJTIkcycg44Gu44Oq44Oi44O844OIICclMSRzJ+OBruWQjeWJjeWkieabtOOBq+WkseaVl+OBl+OBvuOBl+OBn+OAgiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjEzMyBsaWIvdHJhbnNwb3J0LnRjbDo2CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiZmV0Y2ggJXMiCittc2dzdHIgIiVzIOOCkuWPluW+lyIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjEzNAorIywgdGNsLWZvcm1hdAorbXNnaWQgIkZldGNoaW5nIHRoZSAlcyIKK21zZ3N0ciAiJXMg44GL44KJ44OV44Kn44OD44OB44GX44Gm44GE44G+44GZIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTU3CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRG8gbm90IGtub3cgaG93IHRvIGluaXRpYWxpemUgcmVwb3NpdG9yeSBhdCBsb2NhdGlvbiAnJXMnLiIKK21zZ3N0ciAi44Oq44Od44K444OI44OqICclcycg44KS5Yid5pyf5YyW44Gn44GN44G+44Gb44KT44CCIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTYzIGxpYi90cmFuc3BvcnQudGNsOjI1IGxpYi90cmFuc3BvcnQudGNsOjcxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAicHVzaCAlcyIKK21zZ3N0ciAiJXMg44KS44OX44OD44K344OlIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTY0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiU2V0dGluZyB1cCB0aGUgJXMgKGF0ICVzKSIKK21zZ3N0ciAiJTIkcyDjgavjgYLjgosgJTEkcyDjgpLjgrvjg4Pjg4jjgqLjg4Pjg5fjgZfjgb7jgZkiCisKICM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6MjkgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDozNAotbXNnaWQgIkRlbGV0ZSBSZW1vdGUgQnJhbmNoIgotbXNnc3RyICLjg6rjg6Ljg7zjg4jjg7vjg5bjg6njg7Pjg4HjgpLliYrpmaQiCittc2dpZCAiRGVsZXRlIEJyYW5jaCBSZW1vdGVseSIKK21zZ3N0ciAi6YGg6ZqU44Gn44OW44Op44Oz44OB5YmK6ZmkIgogCiAjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjQ3CiBtc2dpZCAiRnJvbSBSZXBvc2l0b3J5IgpAQCAtMTgxOSw4ICsyMTc0LDggQEAKIG1zZ3N0ciAi44Oq44Oi44O844OIOiIKIAogIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo2NiBsaWIvdHJhbnNwb3J0LnRjbDoxMzgKLW1zZ2lkICJBcmJpdHJhcnkgVVJMOiIKLW1zZ3N0ciAi5Lu75oSP44GuIFVSTDoiCittc2dpZCAiQXJiaXRyYXJ5IExvY2F0aW9uOiIKK21zZ3N0ciAi5Lu75oSP44Gu5L2N572uOiIKIAogIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo4NAogbXNnaWQgIkJyYW5jaGVzIgpAQCAtMTg5MCw2ICsyMjQ1LDIyIEBACiBtc2dpZCAiU2Nhbm5pbmcgJXMuLi4iCiBtc2dzdHIgIiVzIOOCkuOCueOCreODo+ODs+OBl+OBpuOBhOOBvuOBmeKApiIKIAorIzogbGliL3NlYXJjaC50Y2w6MjEKK21zZ2lkICJGaW5kOiIKK21zZ3N0ciAi5qSc57SiOiIKKworIzogbGliL3NlYXJjaC50Y2w6MjMKK21zZ2lkICJOZXh0IgorbXNnc3RyICLmrKEiCisKKyM6IGxpYi9zZWFyY2gudGNsOjI0Cittc2dpZCAiUHJldiIKK21zZ3N0ciAi5YmNIgorCisjOiBsaWIvc2VhcmNoLnRjbDoyNQorbXNnaWQgIkNhc2UtU2Vuc2l0aXZlIgorbXNnc3RyICLlpKfmloflrZflsI/mloflrZfjgpLljLrliKUiCisKICM6IGxpYi9zaG9ydGN1dC50Y2w6MjAgbGliL3Nob3J0Y3V0LnRjbDo2MQogbXNnaWQgIkNhbm5vdCB3cml0ZSBzaG9ydGN1dDoiCiBtc2dzdHIgIuOCt+ODp+ODvOODiOOCq+ODg+ODiOOBjOabuOOBkeOBvuOBm+OCkzoiCkBAIC0xOTI3LDIzICsyMjk4LDE4OCBAQAogbXNnaWQgIk5vIFN1Z2dlc3Rpb25zIgogbXNnc3RyICLmj5DmoYjjgarjgZciCiAKLSM6IGxpYi9zcGVsbGNoZWNrLnRjbDozODcKKyM6IGxpYi9zcGVsbGNoZWNrLnRjbDozODgKIG1zZ2lkICJVbmV4cGVjdGVkIEVPRiBmcm9tIHNwZWxsIGNoZWNrZXIiCiBtc2dzdHIgIuOCueODmuODq+ODgeOCp+ODg+OCq+ODvOOBjOS6iOaDs+WkluOBriBFT0Yg44KS6L+U44GX44G+44GX44GfIgogCi0jOiBsaWIvc3BlbGxjaGVjay50Y2w6MzkxCisjOiBsaWIvc3BlbGxjaGVjay50Y2w6MzkyCiBtc2dpZCAiU3BlbGwgQ2hlY2tlciBGYWlsZWQiCiBtc2dzdHIgIuOCueODmuODq+ODgeOCp+ODg+OCr+WkseaVlyIKIAorIzogbGliL3NzaGtleS50Y2w6MzEKK21zZ2lkICJObyBrZXlzIGZvdW5kLiIKK21zZ3N0ciAi44Kt44O844GM44GC44KK44G+44Gb44KT44CCIgorCisjOiBsaWIvc3Noa2V5LnRjbDozNAorIywgdGNsLWZvcm1hdAorbXNnaWQgIkZvdW5kIGEgcHVibGljIGtleSBpbjogJXMiCittc2dzdHIgIuWFrOmWi+mNteOBjOOBguOCiuOBvuOBl+OBnzogJXMiCisKKyM6IGxpYi9zc2hrZXkudGNsOjQwCittc2dpZCAiR2VuZXJhdGUgS2V5IgorbXNnc3RyICLpjbXjgpLnlJ/miJAiCisKKyM6IGxpYi9zc2hrZXkudGNsOjU2Cittc2dpZCAiQ29weSBUbyBDbGlwYm9hcmQiCittc2dzdHIgIuOCr+ODquODg+ODl+ODnOODvOODieOBq+OCs+ODlOODvCIKKworIzogbGliL3NzaGtleS50Y2w6NzAKK21zZ2lkICJZb3VyIE9wZW5TU0ggUHVibGljIEtleSIKK21zZ3N0ciAi44GC44Gq44Gf44GuIE9wZW5TU0gg5YWs6ZaL6Y21IgorCisjOiBsaWIvc3Noa2V5LnRjbDo3OAorbXNnaWQgIkdlbmVyYXRpbmcuLi4iCittc2dzdHIgIueUn+aIkOS4rS4uLiIKKworIzogbGliL3NzaGtleS50Y2w6ODQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiQ291bGQgbm90IHN0YXJ0IHNzaC1rZXlnZW46XG4iCisiXG4iCisiJXMiCittc2dzdHIgIiIKKyJzc2gta2V5Z2VuIOOCkui1t+WLleOBp+OBjeOBvuOBm+OCkzpcbiIKKyJcbiIKKyIlcyIKKworIzogbGliL3NzaGtleS50Y2w6MTExCittc2dpZCAiR2VuZXJhdGlvbiBmYWlsZWQuIgorbXNnc3RyICLnlJ/miJDjgavlpLHmlZfjgZfjgb7jgZfjgZ/jgIIiCisKKyM6IGxpYi9zc2hrZXkudGNsOjExOAorbXNnaWQgIkdlbmVyYXRpb24gc3VjY2VkZWQsIGJ1dCBubyBrZXlzIGZvdW5kLiIKK21zZ3N0ciAi55Sf5oiQ44Gr44Gv5oiQ5Yqf44GX44G+44GX44Gf44GM44CB6Y2144GM6KaL44Gk44GL44KK44G+44Gb44KT44CCIgorCisjOiBsaWIvc3Noa2V5LnRjbDoxMjEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJZb3VyIGtleSBpcyBpbjogJXMiCittc2dzdHIgIuOBguOBquOBn+OBrumNteOBryAlcyDjgavjgYLjgorjgb7jgZkiCisKICM6IGxpYi9zdGF0dXNfYmFyLnRjbDo4MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIiVzIC4uLiAlKmkgb2YgJSppICVzICglM2klJSkiCiBtc2dzdHIgIiUxJHMgLi4uICU0JCppICU2JHMg5Lit44GuICUyJCppICglNyQzaSUlKSIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6NgorIzogbGliL3Rvb2xzLnRjbDo3NQogIywgdGNsLWZvcm1hdAotbXNnaWQgImZldGNoICVzIgotbXNnc3RyICIlcyDjgpLlj5blvpciCittc2dpZCAiUnVubmluZyAlcyByZXF1aXJlcyBhIHNlbGVjdGVkIGZpbGUuIgorbXNnc3RyICLjg5XjgqHjgqTjg6vjgpLpgbjmip7jgZfjgabjgYvjgokgJXMg44KS6LW35YuV44GX44Gm44GP44Gg44GV44GE44CCIgorCisjOiBsaWIvdG9vbHMudGNsOjkwCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJ1biAlcz8iCittc2dzdHIgIuacrOW9k+OBqyAlcyDjgpLotbfli5XjgZfjgb7jgZnjgYs/IgorCisjOiBsaWIvdG9vbHMudGNsOjExMAorIywgdGNsLWZvcm1hdAorbXNnaWQgIlRvb2w6ICVzIgorbXNnc3RyICLjg4Tjg7zjg6s6ICVzIgorCisjOiBsaWIvdG9vbHMudGNsOjExMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlJ1bm5pbmc6ICVzIgorbXNnc3RyICLlrp/ooYzkuK06ICVzIgorCisjOiBsaWIvdG9vbHMudGNsOjE0OQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlRvb2wgY29tcGxldGVkIHN1Y2Nlc2Z1bGx5OiAlcyIKK21zZ3N0ciAi44OE44O844Or44GM5a6M5LqG44GX44G+44GX44GfOiAlcyIKKworIzogbGliL3Rvb2xzLnRjbDoxNTEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJUb29sIGZhaWxlZDogJXMiCittc2dzdHIgIuODhOODvOODq+OBjOWkseaVl+OBl+OBvuOBl+OBnzogJXMiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjIyCittc2dpZCAiQWRkIFRvb2wiCittc2dzdHIgIuODhOODvOODq+OBrui/veWKoCIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjgKK21zZ2lkICJBZGQgTmV3IFRvb2wgQ29tbWFuZCIKK21zZ3N0ciAi5paw6KaP44OE44O844Or44Kz44Oe44Oz44OJ44Gu6L+95YqgIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDozMworbXNnaWQgIkFkZCBnbG9iYWxseSIKK21zZ3N0ciAi5YWo5L2T44Gr6L+95YqgIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo0NQorbXNnaWQgIlRvb2wgRGV0YWlscyIKK21zZ3N0ciAi44OE44O844Or44Gu6Kmz57SwIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo0OAorbXNnaWQgIlVzZSAnLycgc2VwYXJhdG9ycyB0byBjcmVhdGUgYSBzdWJtZW51IHRyZWU6IgorbXNnc3RyICInLycg44Gn44K144OW44Oh44OL44Ol44O844KS5Yy65YiH44KK44G+44GZOiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6NjEKK21zZ2lkICJDb21tYW5kOiIKK21zZ3N0ciAi44Kz44Oe44Oz44OJOiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6NzQKK21zZ2lkICJTaG93IGEgZGlhbG9nIGJlZm9yZSBydW5uaW5nIgorbXNnc3RyICLotbfli5XjgZnjgovliY3jgavjg4DjgqTjgqLjg63jgrDjgpLooajnpLoiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjgwCittc2dpZCAiQXNrIHRoZSB1c2VyIHRvIHNlbGVjdCBhIHJldmlzaW9uIChzZXRzICRSRVZJU0lPTikiCittc2dzdHIgIuODpuODvOOCtuOBq+OCs+ODn+ODg+ODiOOCkuS4gOOBpOmBuOOBsOOBm+OCiyAoJFJFVklTSU9OIOOBq+OCu+ODg+ODiOOBl+OBvuOBmSkiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjg1Cittc2dpZCAiQXNrIHRoZSB1c2VyIGZvciBhZGRpdGlvbmFsIGFyZ3VtZW50cyAoc2V0cyAkQVJHUykiCittc2dzdHIgIuODpuODvOOCtuOBq+S7luOBruW8leaVsOOCkui/veWKoOOBleOBm+OCiyAoJEFSR1Mg44Gr44K744OD44OI44GX44G+44GZKSIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6OTIKK21zZ2lkICJEb24ndCBzaG93IHRoZSBjb21tYW5kIG91dHB1dCB3aW5kb3ciCittc2dzdHIgIuOCs+ODnuODs+ODieOBi+OCieOBruWHuuWKm+OCpuOCo+ODs+ODieOCpuOCkuimi+OBm+OBquOBhCIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6OTcKK21zZ2lkICJSdW4gb25seSBpZiBhIGRpZmYgaXMgc2VsZWN0ZWQgKCRGSUxFTkFNRSBub3QgZW1wdHkpIgorbXNnc3RyICLjg5Hjg4Pjg4HjgYzpgbjjgbDjgozjgabjgYTjgovjgajjgY3jgaDjgZHli5XjgYvjgZkoJEZJTEVOQU1FIOOBjOepuuOBp+OBquOBhCkiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjEyMQorbXNnaWQgIlBsZWFzZSBzdXBwbHkgYSBuYW1lIGZvciB0aGUgdG9vbC4iCittc2dzdHIgIuODhOODvOODq+WQjeOCkuaMh+WumuOBl+OBpuS4i+OBleOBhOOAgiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTI5CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVG9vbCAnJXMnIGFscmVhZHkgZXhpc3RzLiIKK21zZ3N0ciAi44OE44O844OrICclcycg44Gv5pei44Gr5a2Y5Zyo44GX44G+44GZ44CCIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoxNTEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiQ291bGQgbm90IGFkZCB0b29sOlxuIgorIiVzIgorbXNnc3RyICIiCisi44OE44O844Or44KS6L+95Yqg44Gn44GN44G+44Gb44KTOlxuIgorIiVzIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoxOTAKK21zZ2lkICJSZW1vdmUgVG9vbCIKK21zZ3N0ciAi44OE44O844Or44Gu5YmK6ZmkIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoxOTYKK21zZ2lkICJSZW1vdmUgVG9vbCBDb21tYW5kcyIKK21zZ3N0ciAi44OE44O844Or44Kz44Oe44Oz44OJ44Gu5YmK6ZmkIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoyMDAKK21zZ2lkICJSZW1vdmUiCittc2dzdHIgIuWJiumZpCIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjM2Cittc2dpZCAiKEJsdWUgZGVub3RlcyByZXBvc2l0b3J5LWxvY2FsIHRvb2xzKSIKK21zZ3N0ciAiKOmdkuiJsuOBr+ODreODvOOCq+ODq+ODrOODneOCuOODiOODquOBruODhOODvOODq+OBp+OBmSkiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjI5NworIywgdGNsLWZvcm1hdAorbXNnaWQgIlJ1biBDb21tYW5kOiAlcyIKK21zZ3N0ciAi44Kz44Oe44Oz44OJ44KS6LW35YuVOiAlcyIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MzExCittc2dpZCAiQXJndW1lbnRzIgorbXNnc3RyICLlvJXmlbAiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjM0OAorbXNnaWQgIk9LIgorbXNnc3RyICJPSyIKIAogIzogbGliL3RyYW5zcG9ydC50Y2w6NwogIywgdGNsLWZvcm1hdApAQCAtMTk2MCwxNyArMjQ5NiwxNyBAQAogbXNnaWQgIlBydW5pbmcgdHJhY2tpbmcgYnJhbmNoZXMgZGVsZXRlZCBmcm9tICVzIgogbXNnc3RyICIlcyDjgYvjgonliYrpmaTjgZXjgozjgZ/jg4jjg6njg4Pjgq3jg7PjgrDjg7vjg5bjg6njg7Pjg4HjgpLliIjjgaPjgabjgYTjgb7jgZkiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjI1IGxpYi90cmFuc3BvcnQudGNsOjcxCi0jLCB0Y2wtZm9ybWF0Ci1tc2dpZCAicHVzaCAlcyIKLW1zZ3N0ciAiJXMg44KS44OX44OD44K344OlIgotCiAjOiBsaWIvdHJhbnNwb3J0LnRjbDoyNgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlB1c2hpbmcgY2hhbmdlcyB0byAlcyIKIG1zZ3N0ciAiJXMg44G45aSJ5pu044KS44OX44OD44K344Ol44GX44Gm44GE44G+44GZIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDo3MgorIzogbGliL3RyYW5zcG9ydC50Y2w6NjQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJNaXJyb3JpbmcgdG8gJXMiCittc2dzdHIgIiVzIOOBuOODn+ODqeODvOOBl+OBpuOBhOOBvuOBmSIKKworIzogbGliL3RyYW5zcG9ydC50Y2w6ODIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJQdXNoaW5nICVzICVzIHRvICVzIgogbXNnc3RyICIlMyRzIOOBuCAlMSRzICUyJHMg44KS44OX44OD44K344Ol44GX44Gm44GE44G+44GZIgpkaWZmIC0tZ2l0IGEvZ2l0LWd1aS9wby9uYi5wbyBiL2dpdC1ndWkvcG8vbmIucG8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM1MTM3ZAotLS0gL2Rldi9udWxsCisrKyBiL2dpdC1ndWkvcG8vbmIucG8KQEAgLTAsMCArMSwyNDg0IEBACisjIE5vcndlZ2lhbiAoQm9rbcOlbCkgdHJhbnNsYXRpb24gb2YgZ2l0LWd1aS4KKyMgQ29weXJpZ2h0IChDKSAyMDA3LTIwMDggU2hhd24gUGVhcmNlLCBldCBhbC4KKyMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIGxpY2Vuc2UgYXMgdGhlIGdpdC1ndWkgcGFja2FnZS4KKyMKKyMgRnJlZHJpayBTa29sbWxpIDxmcmVkcmlrQGZyc2submV0PiwgMjAwOC4KKyMKK21zZ2lkICIiCittc2dzdHIgIiIKKyJQcm9qZWN0LUlkLVZlcnNpb246IG5iXG4iCisiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA4LTExLTE2IDEzOjU2LTA4MDBcbiIKKyJQTy1SZXZpc2lvbi1EYXRlOiAyMDA4LTEyLTAzIDE2OjA1KzAxMDBcbiIKKyJMYXN0LVRyYW5zbGF0b3I6IEZyZWRyaWsgU2tvbG1saSA8ZnJlZHJpa0BmcnNrLm5ldD5cbiIKKyJMYW5ndWFnZS1UZWFtOiBOb3J3ZWdpYW4gQm9rbcOlbFxuIgorIk1JTUUtVmVyc2lvbjogMS4wXG4iCisiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCisiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgorCisjOiBnaXQtZ3VpLnNoOjQxIGdpdC1ndWkuc2g6NzM3IGdpdC1ndWkuc2g6NzUxIGdpdC1ndWkuc2g6NzY0IGdpdC1ndWkuc2g6ODQ3CisjOiBnaXQtZ3VpLnNoOjg2NgorbXNnaWQgImdpdC1ndWk6IGZhdGFsIGVycm9yIgorbXNnc3RyICJnaXQtZ3VpOiBLcml0aXNrIGZlaWwiCisKKyM6IGdpdC1ndWkuc2g6Njg5CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBmb250IHNwZWNpZmllZCBpbiAlczoiCittc2dzdHIgIlVneWxkaWcgZm9udCBzcGVzaWZpc2VydCBpICVzOiIKKworIzogZ2l0LWd1aS5zaDo3MjMKK21zZ2lkICJNYWluIEZvbnQiCittc2dzdHIgIkhvdmVkc2tyaWZ0dHlwZSIKKworIzogZ2l0LWd1aS5zaDo3MjQKK21zZ2lkICJEaWZmL0NvbnNvbGUgRm9udCIKK21zZ3N0ciAiRGlmZi0vS29uc29sbHNrcmlmdHR5cGUiCisKKyM6IGdpdC1ndWkuc2g6NzM4Cittc2dpZCAiQ2Fubm90IGZpbmQgZ2l0IGluIFBBVEguIgorbXNnc3RyICJLYW4gaWtrZSBmaW5uZSBnaXQgaSBQQVRIIgorCisjOiBnaXQtZ3VpLnNoOjc2NQorbXNnaWQgIkNhbm5vdCBwYXJzZSBHaXQgdmVyc2lvbiBzdHJpbmc6IgorbXNnc3RyICJLYW4gaWtrZSB0eWRlIEdpdCdzIG9wcGdpdHRlIHZlcnNqb246IgorCisjOiBnaXQtZ3VpLnNoOjc4MworIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJHaXQgdmVyc2lvbiBjYW5ub3QgYmUgZGV0ZXJtaW5lZC5cbiIKKyJcbiIKKyIlcyBjbGFpbXMgaXQgaXMgdmVyc2lvbiAnJXMnLlxuIgorIlxuIgorIiVzIHJlcXVpcmVzIGF0IGxlYXN0IEdpdCAxLjUuMCBvciBsYXRlci5cbiIKKyJcbiIKKyJBc3N1bWUgJyVzJyBpcyB2ZXJzaW9uIDEuNS4wP1xuIgorbXNnc3RyICIiCisiS2FuIGlra2UgYXZnasO4cmUgaHZpbGtlbiBHaXQtdmVyc2pvbiBkdSBoYXIuXG4iCisiXG4iCisiJXMgc2llciB2ZXJzam9uZW4gZXIgJyVzJy5cbiIKKyJcbiIKKyIlcyBrcmV2ZXIgR2l0IHZlcnNqb24gMS41LjAgZWxsZXIgbnllcmUuXG4iCisiXG4iCisiQW50YSBhdCAnJXMnIGVyIHZlcnNqb24gMS41LjA/XG4iCisKKyM6IGdpdC1ndWkuc2g6MTA2MgorbXNnaWQgIkdpdCBkaXJlY3Rvcnkgbm90IGZvdW5kOiIKK21zZ3N0ciAiR2l0LWthdGFsb2cgaWtrZSBmdW5uZXQ6IgorCisjOiBnaXQtZ3VpLnNoOjEwNjkKK21zZ2lkICJDYW5ub3QgbW92ZSB0byB0b3Agb2Ygd29ya2luZyBkaXJlY3Rvcnk6IgorbXNnc3RyICJLYW4gaWtrZSBnw6UgdGlsIHRvcHBlbiBhdiBhcmJlaWRza2F0YWxvZ2VuOiIKKworIzogZ2l0LWd1aS5zaDoxMDc2Cittc2dpZCAiQ2Fubm90IHVzZSBmdW5ueSAuZ2l0IGRpcmVjdG9yeToiCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDoxMDgxCittc2dpZCAiTm8gd29ya2luZyBkaXJlY3RvcnkiCittc2dzdHIgIkluZ2VuIGFyYmVpZHNrYXRhbG9nIgorCisjOiBnaXQtZ3VpLnNoOjEyNDcgbGliL2NoZWNrb3V0X29wLnRjbDozMDUKK21zZ2lkICJSZWZyZXNoaW5nIGZpbGUgc3RhdHVzLi4uIgorbXNnc3RyICJPcHBkYXRlcmVyIGZpbHN0YXR1cy4uLiIKKworIzogZ2l0LWd1aS5zaDoxMzAzCittc2dpZCAiU2Nhbm5pbmcgZm9yIG1vZGlmaWVkIGZpbGVzIC4uLiIKK21zZ3N0ciAiU8O4a2VyIGV0dGVyIGVuZHJlZGUgZmlsZXIuLi4iCisKKyM6IGdpdC1ndWkuc2g6MTM2NworbXNnaWQgIkNhbGxpbmcgcHJlcGFyZS1jb21taXQtbXNnIGhvb2suLi4iCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDoxMzg0Cittc2dpZCAiQ29tbWl0IGRlY2xpbmVkIGJ5IHByZXBhcmUtY29tbWl0LW1zZyBob29rLiIKK21zZ3N0ciAiIgorCisjOiBnaXQtZ3VpLnNoOjE1NDIgbGliL2Jyb3dzZXIudGNsOjI0NgorbXNnaWQgIlJlYWR5LiIKK21zZ3N0ciAiS2xhci4iCisKKyM6IGdpdC1ndWkuc2g6MTgxOQorbXNnaWQgIlVubW9kaWZpZWQiCittc2dzdHIgIlVlbmRyZXQiCisKKyM6IGdpdC1ndWkuc2g6MTgyMQorbXNnaWQgIk1vZGlmaWVkLCBub3Qgc3RhZ2VkIgorbXNnc3RyICJFbmRyZXQsIGlra2Uga8O4ZXQiCisKKyM6IGdpdC1ndWkuc2g6MTgyMiBnaXQtZ3VpLnNoOjE4MzAKK21zZ2lkICJTdGFnZWQgZm9yIGNvbW1pdCIKK21zZ3N0ciAiS8O4ZXQgZm9yIGlubnNqZWtraW5nIgorCisjOiBnaXQtZ3VpLnNoOjE4MjMgZ2l0LWd1aS5zaDoxODMxCittc2dpZCAiUG9ydGlvbnMgc3RhZ2VkIGZvciBjb21taXQiCittc2dzdHIgIkRlbHZpcyBrw7hldCBmb3IgaW5uc2pla2tpbmciCisKKyM6IGdpdC1ndWkuc2g6MTgyNCBnaXQtZ3VpLnNoOjE4MzIKK21zZ2lkICJTdGFnZWQgZm9yIGNvbW1pdCwgbWlzc2luZyIKK21zZ3N0ciAiS2xhciBmb3IgaW5uc2pla2tpbmcsIGZyYXbDpnJlbmRlIgorCisjOiBnaXQtZ3VpLnNoOjE4MjYKK21zZ2lkICJGaWxlIHR5cGUgY2hhbmdlZCwgbm90IHN0YWdlZCIKK21zZ3N0ciAiRmlsdHlwZSBlbmRyZXQsIGlra2Uga8O4ZXQiCisKKyM6IGdpdC1ndWkuc2g6MTgyNworbXNnaWQgIkZpbGUgdHlwZSBjaGFuZ2VkLCBzdGFnZWQiCittc2dzdHIgIkZpbHR5cGUgZW5kcmV0LCBrw7hldCIKKworIzogZ2l0LWd1aS5zaDoxODI5Cittc2dpZCAiVW50cmFja2VkLCBub3Qgc3RhZ2VkIgorbXNnc3RyICJVc3BvcmV0LCBpa2tlIGvDuGV0IgorCisjOiBnaXQtZ3VpLnNoOjE4MzQKK21zZ2lkICJNaXNzaW5nIgorbXNnc3RyICJGcmF2w6ZyZW5kZSIKKworIzogZ2l0LWd1aS5zaDoxODM1Cittc2dpZCAiU3RhZ2VkIGZvciByZW1vdmFsIgorbXNnc3RyICJLw7hldCBmb3IgZmplcm5pbmciCisKKyM6IGdpdC1ndWkuc2g6MTgzNgorbXNnaWQgIlN0YWdlZCBmb3IgcmVtb3ZhbCwgc3RpbGwgcHJlc2VudCIKK21zZ3N0ciAiS8O4ZXQgZm9yIGZqZXJuaW5nLCBmb3J0c2F0dCB0aWxzdGVkZSIKKworIzogZ2l0LWd1aS5zaDoxODM4IGdpdC1ndWkuc2g6MTgzOSBnaXQtZ3VpLnNoOjE4NDAgZ2l0LWd1aS5zaDoxODQxCisjOiBnaXQtZ3VpLnNoOjE4NDIgZ2l0LWd1aS5zaDoxODQzCittc2dpZCAiUmVxdWlyZXMgbWVyZ2UgcmVzb2x1dGlvbiIKK21zZ3N0ciAiU2FtbWVuc2zDpWluZ2VuIGtyZXZlciBrb25mbGlrdGjDpW5kdGVyaW5nIgorCisjOiBnaXQtZ3VpLnNoOjE4NzgKK21zZ2lkICJTdGFydGluZyBnaXRrLi4uIHBsZWFzZSB3YWl0Li4uIgorbXNnc3RyICJTdGFydGVyIGdpdGsuLi4gVmVubmxpZ3N0IHZlbnQuLi4iCisKKyM6IGdpdC1ndWkuc2g6MTg4NworbXNnaWQgIkNvdWxkbid0IGZpbmQgZ2l0ayBpbiBQQVRIIgorbXNnc3RyICJLdW5uZSBpa2tlIGZpbm5lIGdpdGsgaSBQQVRIIgorCisjOiBnaXQtZ3VpLnNoOjIyODAgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozNgorbXNnaWQgIlJlcG9zaXRvcnkiCittc2dzdHIgIkFya2l2IgorCisjOiBnaXQtZ3VpLnNoOjIyODEKK21zZ2lkICJFZGl0IgorbXNnc3RyICJSZWRpZ2VyZSIKKworIzogZ2l0LWd1aS5zaDoyMjgzIGxpYi9jaG9vc2VfcmV2LnRjbDo1NjEKK21zZ2lkICJCcmFuY2giCittc2dzdHIgIkdyZW4iCisKKyM6IGdpdC1ndWkuc2g6MjI4NiBsaWIvY2hvb3NlX3Jldi50Y2w6NTQ4Cittc2dpZCAiQ29tbWl0QEBub3VuIgorbXNnc3RyICJJbm5zamVra2luZyIKKworIzogZ2l0LWd1aS5zaDoyMjg5IGxpYi9tZXJnZS50Y2w6MTIxIGxpYi9tZXJnZS50Y2w6MTUwIGxpYi9tZXJnZS50Y2w6MTY4Cittc2dpZCAiTWVyZ2UiCittc2dzdHIgIlNhbW1lbnNsw6VpbmciCisKKyM6IGdpdC1ndWkuc2g6MjI5MCBsaWIvY2hvb3NlX3Jldi50Y2w6NTU3Cittc2dpZCAiUmVtb3RlIgorbXNnc3RyICJGamVybmFya2l2IgorCisjOiBnaXQtZ3VpLnNoOjIyOTMKK21zZ2lkICJUb29scyIKK21zZ3N0ciAiVmVya3TDuHkiCisKKyM6IGdpdC1ndWkuc2g6MjMwMgorbXNnaWQgIkV4cGxvcmUgV29ya2luZyBDb3B5IgorbXNnc3RyICJVdGZvcnNrIGFyYmVpZHNrb3BpZW4iCisKKyM6IGdpdC1ndWkuc2g6MjMwNworbXNnaWQgIkJyb3dzZSBDdXJyZW50IEJyYW5jaCdzIEZpbGVzIgorbXNnc3RyICJVdGZvcnNrIGRlbm5lIGdyZW5zIGZpbGVyIgorCisjOiBnaXQtZ3VpLnNoOjIzMTEKK21zZ2lkICJCcm93c2UgQnJhbmNoIEZpbGVzLi4uIgorbXNnc3RyICJCbGEgaWdqZW5ub20gZmlsZXIgcMOlIGdyZW4uLi4iCisKKyM6IGdpdC1ndWkuc2g6MjMxNgorbXNnaWQgIlZpc3VhbGl6ZSBDdXJyZW50IEJyYW5jaCdzIEhpc3RvcnkiCittc2dzdHIgIlZpc3VhbGlzZXIgZGVubmUgZ3JlbnMgaGlzdG9yaWtrIgorCisjOiBnaXQtZ3VpLnNoOjIzMjAKK21zZ2lkICJWaXN1YWxpemUgQWxsIEJyYW5jaCBIaXN0b3J5IgorbXNnc3RyICJWaXN1YWxpc2VyIGFsbGUgZ3JlbmVycyBoaXN0b3Jpa2siCisKKyM6IGdpdC1ndWkuc2g6MjMyNworIywgdGNsLWZvcm1hdAorbXNnaWQgIkJyb3dzZSAlcydzIEZpbGVzIgorbXNnc3RyICJCbGEgaSBmaWxlbmUgdGlsICVzIgorCisjOiBnaXQtZ3VpLnNoOjIzMjkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJWaXN1YWxpemUgJXMncyBIaXN0b3J5IgorbXNnc3RyICJWaXN1YWxpc2VyIGhpc3RvcmllbiB0aWwgJXMiCisKKyM6IGdpdC1ndWkuc2g6MjMzNCBsaWIvZGF0YWJhc2UudGNsOjI3IGxpYi9kYXRhYmFzZS50Y2w6NjcKK21zZ2lkICJEYXRhYmFzZSBTdGF0aXN0aWNzIgorbXNnc3RyICJEYXRhYmFzZXN0YXRpc3Rpa2siCisKKyM6IGdpdC1ndWkuc2g6MjMzNyBsaWIvZGF0YWJhc2UudGNsOjM0Cittc2dpZCAiQ29tcHJlc3MgRGF0YWJhc2UiCittc2dzdHIgIktvbXByZXNzIGRhdGFiYXNlbiIKKworIzogZ2l0LWd1aS5zaDoyMzQwCittc2dpZCAiVmVyaWZ5IERhdGFiYXNlIgorbXNnc3RyICJWZXJpZmlzZXIgZGF0YWJhc2VuIgorCisjOiBnaXQtZ3VpLnNoOjIzNDcgZ2l0LWd1aS5zaDoyMzUxIGdpdC1ndWkuc2g6MjM1NSBsaWIvc2hvcnRjdXQudGNsOjcKKyM6IGxpYi9zaG9ydGN1dC50Y2w6MzkgbGliL3Nob3J0Y3V0LnRjbDo3MQorbXNnaWQgIkNyZWF0ZSBEZXNrdG9wIEljb24iCittc2dzdHIgIkxhZyBza3JpdmVib3Jkc2lrb24iCisKKyM6IGdpdC1ndWkuc2g6MjM2MyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjE4MyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjE5MQorbXNnaWQgIlF1aXQiCittc2dzdHIgIkF2c2x1dHQiCisKKyM6IGdpdC1ndWkuc2g6MjM3MQorbXNnaWQgIlVuZG8iCittc2dzdHIgIkFuZ3JlIgorCisjOiBnaXQtZ3VpLnNoOjIzNzQKK21zZ2lkICJSZWRvIgorbXNnc3RyICJHasO4ciBvbSIKKworIzogZ2l0LWd1aS5zaDoyMzc4IGdpdC1ndWkuc2g6MjkyMworbXNnaWQgIkN1dCIKK21zZ3N0ciAiS2xpcHAgdXQiCisKKyM6IGdpdC1ndWkuc2g6MjM4MSBnaXQtZ3VpLnNoOjI5MjYgZ2l0LWd1aS5zaDozMDAwIGdpdC1ndWkuc2g6MzA4MgorIzogbGliL2NvbnNvbGUudGNsOjY5Cittc2dpZCAiQ29weSIKK21zZ3N0ciAiS29waWVyIgorCisjOiBnaXQtZ3VpLnNoOjIzODQgZ2l0LWd1aS5zaDoyOTI5Cittc2dpZCAiUGFzdGUiCittc2dzdHIgIkxpbSBpbm4iCisKKyM6IGdpdC1ndWkuc2g6MjM4NyBnaXQtZ3VpLnNoOjI5MzIgbGliL2JyYW5jaF9kZWxldGUudGNsOjI2CisjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjM4Cittc2dpZCAiRGVsZXRlIgorbXNnc3RyICJTbGV0dCIKKworIzogZ2l0LWd1aS5zaDoyMzkxIGdpdC1ndWkuc2g6MjkzNiBnaXQtZ3VpLnNoOjMwODYgbGliL2NvbnNvbGUudGNsOjcxCittc2dpZCAiU2VsZWN0IEFsbCIKK21zZ3N0ciAiVmVsZyBhbGxlIgorCisjOiBnaXQtZ3VpLnNoOjI0MDAKK21zZ2lkICJDcmVhdGUuLi4iCittc2dzdHIgIk9wcHJldHQuLi4iCisKKyM6IGdpdC1ndWkuc2g6MjQwNgorbXNnaWQgIkNoZWNrb3V0Li4uIgorbXNnc3RyICJTamVrayB1dC4uLiIKKworIzogZ2l0LWd1aS5zaDoyNDEyCittc2dpZCAiUmVuYW1lLi4uIgorbXNnc3RyICJFbmRyZSBuYXZuLi4uIgorCisjOiBnaXQtZ3VpLnNoOjI0MTcKK21zZ2lkICJEZWxldGUuLi4iCittc2dzdHIgIlNsZXR0Li4uIgorCisjOiBnaXQtZ3VpLnNoOjI0MjIKK21zZ2lkICJSZXNldC4uLiIKK21zZ3N0ciAiVGlsYmFrZXN0aWxsLi4uIgorCisjOiBnaXQtZ3VpLnNoOjI0MzIKK21zZ2lkICJEb25lIgorbXNnc3RyICJGZXJkaWciCisKKyM6IGdpdC1ndWkuc2g6MjQzNAorbXNnaWQgIkNvbW1pdEBAdmVyYiIKK21zZ3N0ciAiU2pla2sgaW5uIgorCisjOiBnaXQtZ3VpLnNoOjI0NDMgZ2l0LWd1aS5zaDoyODY0Cittc2dpZCAiTmV3IENvbW1pdCIKK21zZ3N0ciAiTnkgaW5uc2pla2tpbmciCisKKyM6IGdpdC1ndWkuc2g6MjQ1MSBnaXQtZ3VpLnNoOjI4NzEKK21zZ2lkICJBbWVuZCBMYXN0IENvbW1pdCIKK21zZ3N0ciAiTGVnZyB0aWwgZm9ycmlnZSBpbm5zamVra2luZyIKKworIzogZ2l0LWd1aS5zaDoyNDYxIGdpdC1ndWkuc2g6MjgyNSBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjk5Cittc2dpZCAiUmVzY2FuIgorbXNnc3RyICJTw7hrIHDDpSBueSIKKworIzogZ2l0LWd1aS5zaDoyNDY3Cittc2dpZCAiU3RhZ2UgVG8gQ29tbWl0IgorbXNnc3RyICJMZWdnIHRpbCBpIGlubnNqZWtraW5nc2vDuGVuIgorCisjOiBnaXQtZ3VpLnNoOjI0NzMKK21zZ2lkICJTdGFnZSBDaGFuZ2VkIEZpbGVzIFRvIENvbW1pdCIKK21zZ3N0ciAiTGVnZyB0aWwgZW5kcmVkZSBmaWxlciBpIGlubnNqZWtraW5nc2vDuGVuIgorCisjOiBnaXQtZ3VpLnNoOjI0NzkKK21zZ2lkICJVbnN0YWdlIEZyb20gQ29tbWl0IgorbXNnc3RyICJGamVybiBmcmEgaW5uc2pla2tpbmdza8O4ZW4iCisKKyM6IGdpdC1ndWkuc2g6MjQ4NCBsaWIvaW5kZXgudGNsOjQxMAorbXNnaWQgIlJldmVydCBDaGFuZ2VzIgorbXNnc3RyICJUaWxiYWtlc3RpbGwgZW5kcmluZ2VyIgorCisjOiBnaXQtZ3VpLnNoOjI0OTEgZ2l0LWd1aS5zaDozMDY5Cittc2dpZCAiU2hvdyBMZXNzIENvbnRleHQiCittc2dzdHIgIlZpcyBtaW5kcmUgaW5uaG9sZCIKKworIzogZ2l0LWd1aS5zaDoyNDk1IGdpdC1ndWkuc2g6MzA3MworbXNnaWQgIlNob3cgTW9yZSBDb250ZXh0IgorbXNnc3RyICJWaXMgbWVyIGlubmhvbGQiCisKKyM6IGdpdC1ndWkuc2g6MjUwMiBnaXQtZ3VpLnNoOjI4MzggZ2l0LWd1aS5zaDoyOTQ3Cittc2dpZCAiU2lnbiBPZmYiCittc2dzdHIgIlNpZ27DqXIiCisKKyM6IGdpdC1ndWkuc2g6MjUxOAorbXNnaWQgIkxvY2FsIE1lcmdlLi4uIgorbXNnc3RyICJMb2thbCBzYW1tZW5zbMOlaW5nLi4uIgorCisjOiBnaXQtZ3VpLnNoOjI1MjMKK21zZ2lkICJBYm9ydCBNZXJnZS4uLiIKK21zZ3N0ciAiQXZicnl0IHNhbW1lbnNsw6VpbmcuLi4iCisKKyM6IGdpdC1ndWkuc2g6MjUzNSBnaXQtZ3VpLnNoOjI1NzUKK21zZ2lkICJBZGQuLi4iCittc2dzdHIgIkxlZ2cgdGlsLi4uIgorCisjOiBnaXQtZ3VpLnNoOjI1MzkKK21zZ2lkICJQdXNoLi4uIgorbXNnc3RyICJTZW5kLi4uIgorCisjOiBnaXQtZ3VpLnNoOjI1NDMKK21zZ2lkICJEZWxldGUgQnJhbmNoLi4uIgorbXNnc3RyICJGamVybiBncmVuLi4uIgorCisjOiBnaXQtZ3VpLnNoOjI1NTMgZ2l0LWd1aS5zaDoyNTg5IGxpYi9hYm91dC50Y2w6MTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MworIywgdGNsLWZvcm1hdAorbXNnaWQgIkFib3V0ICVzIgorbXNnc3RyICJPbSAlcyIKKworIzogZ2l0LWd1aS5zaDoyNTU3Cittc2dpZCAiUHJlZmVyZW5jZXMuLi4iCittc2dzdHIgIklubnN0aWxsaW5nZXIuLi4iCisKKyM6IGdpdC1ndWkuc2g6MjU2NSBnaXQtZ3VpLnNoOjMxMTUKK21zZ2lkICJPcHRpb25zLi4uIgorbXNnc3RyICJBbHRlcm5hdGl2ZXIuLi4iCisKKyM6IGdpdC1ndWkuc2g6MjU3NgorbXNnaWQgIlJlbW92ZS4uLiIKK21zZ3N0ciAiRmplcm4uLi4iCisKKyM6IGdpdC1ndWkuc2g6MjU4NSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwCittc2dpZCAiSGVscCIKK21zZ3N0ciAiSGplbHAiCisKKyM6IGdpdC1ndWkuc2g6MjYxMQorbXNnaWQgIk9ubGluZSBEb2N1bWVudGF0aW9uIgorbXNnc3RyICJPbmxpbmUgZG9rdW1lbnRhc2pvbiIKKworIzogZ2l0LWd1aS5zaDoyNjE0IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDcgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1NgorbXNnaWQgIlNob3cgU1NIIEtleSIKK21zZ3N0ciAiVmlzIFNTSC1uw7hra2VsIgorCisjOiBnaXQtZ3VpLnNoOjI3MDcKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJmYXRhbDogY2Fubm90IHN0YXQgcGF0aCAlczogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSIKK21zZ3N0ciAiIgorImtyaXRpc2s6IGt1bm5lIGlra2UgZmlubmUgc3RhdHVzIGZvciBzdGkgJXM6IEluZ2VuIHNsaWsgZmlsIGVsbGVyIGthdGFsb2ciCisKKyM6IGdpdC1ndWkuc2g6Mjc0MAorbXNnaWQgIkN1cnJlbnQgQnJhbmNoOiIKK21zZ3N0ciAiTsOldsOmcmVuZGUgZ3JlbjoiCisKKyM6IGdpdC1ndWkuc2g6Mjc2MQorbXNnaWQgIlN0YWdlZCBDaGFuZ2VzIChXaWxsIENvbW1pdCkiCittc2dzdHIgIkvDuGVkZSBlbmRyaW5nZXIgKHRpbCBpbm5zamVra2luZykiCisKKyM6IGdpdC1ndWkuc2g6Mjc4MQorbXNnaWQgIlVuc3RhZ2VkIENoYW5nZXMiCittc2dzdHIgIlVrw7hlZGUgZW5kcmluZ2VyIgorCisjOiBnaXQtZ3VpLnNoOjI4MzEKK21zZ2lkICJTdGFnZSBDaGFuZ2VkIgorbXNnc3RyICJLw7ggZW5kcmV0IgorCisjOiBnaXQtZ3VpLnNoOjI4NTAgbGliL3RyYW5zcG9ydC50Y2w6OTMgbGliL3RyYW5zcG9ydC50Y2w6MTgyCittc2dpZCAiUHVzaCIKK21zZ3N0ciAiU2VuZCIKKworIzogZ2l0LWd1aS5zaDoyODg1Cittc2dpZCAiSW5pdGlhbCBDb21taXQgTWVzc2FnZToiCittc2dzdHIgIklubmxlZGVuZGUgaW5uc2pla2tpbmdzbWVsZGluZzoiCisKKyM6IGdpdC1ndWkuc2g6Mjg4NgorbXNnaWQgIkFtZW5kZWQgQ29tbWl0IE1lc3NhZ2U6IgorbXNnc3RyICJVdGR5cHQgaW5uc2pla2tpbmdzbWVsZGluZyIKKworIzogZ2l0LWd1aS5zaDoyODg3Cittc2dpZCAiQW1lbmRlZCBJbml0aWFsIENvbW1pdCBNZXNzYWdlOiIKK21zZ3N0ciAiVXRkeXB0IGlubmxlZGVuZGUgaW5uc2pla2tpbmdzbWVsZGluZzoiCisKKyM6IGdpdC1ndWkuc2g6Mjg4OAorbXNnaWQgIkFtZW5kZWQgTWVyZ2UgQ29tbWl0IE1lc3NhZ2U6IgorbXNnc3RyICJVdGR5cHQgaW5uc2pla2tpbmdzbWVsZGluZyBmb3Igc2FtbWVuc2zDpWluZzoiCisKKyM6IGdpdC1ndWkuc2g6Mjg4OQorbXNnaWQgIk1lcmdlIENvbW1pdCBNZXNzYWdlOiIKK21zZ3N0ciAiUmV2aXNqb25zbWVsZGluZyBmb3Igc2FtbWVuc2zDpWluZzoiCisKKyM6IGdpdC1ndWkuc2g6Mjg5MAorbXNnaWQgIkNvbW1pdCBNZXNzYWdlOiIKK21zZ3N0ciAiUmV2aXNqb25zbWVsZGluZzoiCisKKyM6IGdpdC1ndWkuc2g6MjkzOSBnaXQtZ3VpLnNoOjMwOTAgbGliL2NvbnNvbGUudGNsOjczCittc2dpZCAiQ29weSBBbGwiCittc2dzdHIgIktvcGllciBhbGxlIgorCisjOiBnaXQtZ3VpLnNoOjI5NjMgbGliL2JsYW1lLnRjbDoxMDQKK21zZ2lkICJGaWxlOiIKK21zZ3N0ciAiRmlsOiIKKworIzogZ2l0LWd1aS5zaDozMDc4Cittc2dpZCAiUmVmcmVzaCIKK21zZ3N0ciAiT3BwZGF0ZXIiCisKKyM6IGdpdC1ndWkuc2g6MzA5OQorbXNnaWQgIkRlY3JlYXNlIEZvbnQgU2l6ZSIKK21zZ3N0ciAiR2rDuHIgdGVrc3RlbiBtaW5kcmUiCisKKyM6IGdpdC1ndWkuc2g6MzEwMworbXNnaWQgIkluY3JlYXNlIEZvbnQgU2l6ZSIKK21zZ3N0ciAiR2rDuHIgdGVrc3RlbiBzdMO4cnJlIgorCisjOiBnaXQtZ3VpLnNoOjMxMTEgbGliL2JsYW1lLnRjbDoyODEKK21zZ2lkICJFbmNvZGluZyIKK21zZ3N0ciAiVGVrc3Rrb2RpbmciCisKKyM6IGdpdC1ndWkuc2g6MzEyMgorbXNnaWQgIkFwcGx5L1JldmVyc2UgSHVuayIKK21zZ3N0ciAiQnJ1ay90aWxiYWtlc3RpbGwgZGVsIgorCisjOiBnaXQtZ3VpLnNoOjMxMjcKK21zZ2lkICJBcHBseS9SZXZlcnNlIExpbmUiCittc2dzdHIgIkJydWsvdGlsYmFrZXN0aWxsIGxpbmplIgorCisjOiBnaXQtZ3VpLnNoOjMxMzcKK21zZ2lkICJSdW4gTWVyZ2UgVG9vbCIKK21zZ3N0ciAiU3RhcnQgc2FtbWVuc2zDpWluZ3Nwcm9zZXNzIgorCisjOiBnaXQtZ3VpLnNoOjMxNDIKK21zZ2lkICJVc2UgUmVtb3RlIFZlcnNpb24iCittc2dzdHIgIkJydWsgdmVyc2pvbiBmcmEgZmplcm5hcmtpdiIKKworIzogZ2l0LWd1aS5zaDozMTQ2Cittc2dpZCAiVXNlIExvY2FsIFZlcnNpb24iCittc2dzdHIgIkJydWsgbG9rYWwgdmVyc2pvbiIKKworIzogZ2l0LWd1aS5zaDozMTUwCittc2dpZCAiUmV2ZXJ0IFRvIEJhc2UiCittc2dzdHIgIlRpbGJha2VzdGlsbCB0aWwgYmFzZXZlcnNqb25lbiIKKworIzogZ2l0LWd1aS5zaDozMTY5Cittc2dpZCAiVW5zdGFnZSBIdW5rIEZyb20gQ29tbWl0IgorbXNnc3RyICJGamVybiBkZWxlbiBmcmEgaW5uc2pla2tpbmdza8O4ZW4iCisKKyM6IGdpdC1ndWkuc2g6MzE3MAorbXNnaWQgIlVuc3RhZ2UgTGluZSBGcm9tIENvbW1pdCIKK21zZ3N0ciAiRmplcm4gbGluamVuIGZyYSBpbm5zamVra2luZ3Nrw7hlbiIKKworIzogZ2l0LWd1aS5zaDozMTcyCittc2dpZCAiU3RhZ2UgSHVuayBGb3IgQ29tbWl0IgorbXNnc3RyICJMZWdnIGRlbCBpIGlubnNqZWtraW5nc2vDuGVuIgorCisjOiBnaXQtZ3VpLnNoOjMxNzMKK21zZ2lkICJTdGFnZSBMaW5lIEZvciBDb21taXQiCittc2dzdHIgIkxlZ2cgdGlsIGxpbmplIGkgaW5uc2pla2tpbmdza8O4ZW4iCisKKyM6IGdpdC1ndWkuc2g6MzE5NgorbXNnaWQgIkluaXRpYWxpemluZy4uLiIKK21zZ3N0ciAiSW5pdHNpYWxpc2VyZXIuLi4iCisKKyM6IGdpdC1ndWkuc2g6MzMwMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJQb3NzaWJsZSBlbnZpcm9ubWVudCBpc3N1ZXMgZXhpc3QuXG4iCisiXG4iCisiVGhlIGZvbGxvd2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIHByb2JhYmx5XG4iCisiZ29pbmcgdG8gYmUgaWdub3JlZCBieSBhbnkgR2l0IHN1YnByb2Nlc3MgcnVuXG4iCisiYnkgJXM6XG4iCisiXG4iCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDozMzMxCittc2dpZCAiIgorIlxuIgorIlRoaXMgaXMgZHVlIHRvIGEga25vd24gaXNzdWUgd2l0aCB0aGVcbiIKKyJUY2wgYmluYXJ5IGRpc3RyaWJ1dGVkIGJ5IEN5Z3dpbi4iCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDozMzM2CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlxuIgorIkEgZ29vZCByZXBsYWNlbWVudCBmb3IgJXNcbiIKKyJpcyBwbGFjaW5nIHZhbHVlcyBmb3IgdGhlIHVzZXIubmFtZSBhbmRcbiIKKyJ1c2VyLmVtYWlsIHNldHRpbmdzIGludG8geW91ciBwZXJzb25hbFxuIgorIn4vLmdpdGNvbmZpZyBmaWxlLlxuIgorbXNnc3RyICIiCisKKyM6IGxpYi9hYm91dC50Y2w6MjYKK21zZ2lkICJnaXQtZ3VpIC0gYSBncmFwaGljYWwgdXNlciBpbnRlcmZhY2UgZm9yIEdpdC4iCittc2dzdHIgImdpdC1ndWkgLSBFdCBncmFmaXNrIGJydWtlcmdyZW5zZXNuaXR0IGZvciBHaXQuIgorCisjOiBsaWIvYmxhbWUudGNsOjcyCittc2dpZCAiRmlsZSBWaWV3ZXIiCittc2dzdHIgIkZpbHZpc2VyIgorCisjOiBsaWIvYmxhbWUudGNsOjc4Cittc2dpZCAiQ29tbWl0OiIKK21zZ3N0ciAiSW5uc2pla2tpbmc6IgorCisjOiBsaWIvYmxhbWUudGNsOjI3MQorbXNnaWQgIkNvcHkgQ29tbWl0IgorbXNnc3RyICJLb3BpZXIgaW5uc2pla2tpbmciCisKKyM6IGxpYi9ibGFtZS50Y2w6Mjc1Cittc2dpZCAiRmluZCBUZXh0Li4uIgorbXNnc3RyICJTw7hrIGV0dGVyIHRla3N0Li4uIgorCisjOiBsaWIvYmxhbWUudGNsOjI4NAorbXNnaWQgIkRvIEZ1bGwgQ29weSBEZXRlY3Rpb24iCittc2dzdHIgIkdqZW5ub21mw7hyIGZ1bGwgZGV0ZWtzam9uIGF2IGtvcGllcmluZ2VyIgorCisjOiBsaWIvYmxhbWUudGNsOjI4OAorbXNnaWQgIlNob3cgSGlzdG9yeSBDb250ZXh0IgorbXNnc3RyICJWaXMgaGlzdG9yaWtrZW5zIGlubmhvbGQiCisKKyM6IGxpYi9ibGFtZS50Y2w6MjkxCittc2dpZCAiQmxhbWUgUGFyZW50IENvbW1pdCIKK21zZ3N0ciAiIgorCisjOiBsaWIvYmxhbWUudGNsOjQ1MAorIywgdGNsLWZvcm1hdAorbXNnaWQgIlJlYWRpbmcgJXMuLi4iCittc2dzdHIgIkxlc2VyICVzLi4uIgorCisjOiBsaWIvYmxhbWUudGNsOjU1NworbXNnaWQgIkxvYWRpbmcgY29weS9tb3ZlIHRyYWNraW5nIGFubm90YXRpb25zLi4uIgorbXNnc3RyICIiCisKKyM6IGxpYi9ibGFtZS50Y2w6NTc3Cittc2dpZCAibGluZXMgYW5ub3RhdGVkIgorbXNnc3RyICIiCisKKyM6IGxpYi9ibGFtZS50Y2w6NzY5Cittc2dpZCAiTG9hZGluZyBvcmlnaW5hbCBsb2NhdGlvbiBhbm5vdGF0aW9ucy4uLiIKK21zZ3N0ciAiIgorCisjOiBsaWIvYmxhbWUudGNsOjc3MgorbXNnaWQgIkFubm90YXRpb24gY29tcGxldGUuIgorbXNnc3RyICIiCisKKyM6IGxpYi9ibGFtZS50Y2w6ODAyCittc2dpZCAiQnVzeSIKK21zZ3N0ciAiT3BwdGF0dCIKKworIzogbGliL2JsYW1lLnRjbDo4MDMKK21zZ2lkICJBbm5vdGF0aW9uIHByb2Nlc3MgaXMgYWxyZWFkeSBydW5uaW5nLiIKK21zZ3N0ciAiIgorCisjOiBsaWIvYmxhbWUudGNsOjg0MgorbXNnaWQgIlJ1bm5pbmcgdGhvcm91Z2ggY29weSBkZXRlY3Rpb24uLi4iCittc2dzdHIgIktqw7hyZXIga29waWRldGVrdGVyaW5nLi4uIgorCisjOiBsaWIvYmxhbWUudGNsOjkxMAorbXNnaWQgIkxvYWRpbmcgYW5ub3RhdGlvbi4uLiIKK21zZ3N0ciAiIgorCisjOiBsaWIvYmxhbWUudGNsOjk2NAorbXNnaWQgIkF1dGhvcjoiCittc2dzdHIgIkZvcmZhdHRlcjoiCisKKyM6IGxpYi9ibGFtZS50Y2w6OTY4Cittc2dpZCAiQ29tbWl0dGVyOiIKK21zZ3N0ciAiSW5uc2pla2tlcjoiCisKKyM6IGxpYi9ibGFtZS50Y2w6OTczCittc2dpZCAiT3JpZ2luYWwgRmlsZToiCittc2dzdHIgIk9wcHJpbm5lbGlnIGZpbDoiCisKKyM6IGxpYi9ibGFtZS50Y2w6MTAyMQorbXNnaWQgIkNhbm5vdCBmaW5kIEhFQUQgY29tbWl0OiIKK21zZ3N0ciAiRmlubmVyIGlra2UgSEVBRCdzIGlubnNqZWtraW5nOiIKKworIzogbGliL2JsYW1lLnRjbDoxMDc2Cittc2dpZCAiQ2Fubm90IGZpbmQgcGFyZW50IGNvbW1pdDoiCittc2dzdHIgIkthbiBpa2tlIGZpbm5lIGlubnNqZWtraW5nZW5zIGZvcmVsZGVyOiIKKworIzogbGliL2JsYW1lLnRjbDoxMDkxCittc2dpZCAiVW5hYmxlIHRvIGRpc3BsYXkgcGFyZW50IgorbXNnc3RyICJLYW4gaWtrZSB2aXNlIGZvcmVsZGVyIgorCisjOiBsaWIvYmxhbWUudGNsOjEwOTIgbGliL2RpZmYudGNsOjI5NworbXNnaWQgIkVycm9yIGxvYWRpbmcgZGlmZjoiCittc2dzdHIgIkZlaWwgdmVkIGlubmxhc3RpbmcgYXYgZm9yc2tqZWxsOiIKKworIzogbGliL2JsYW1lLnRjbDoxMjMyCittc2dpZCAiT3JpZ2luYWxseSBCeToiCittc2dzdHIgIk9wcHJpbm5lbGlnIGF2OiIKKworIzogbGliL2JsYW1lLnRjbDoxMjM4Cittc2dpZCAiSW4gRmlsZToiCittc2dzdHIgIkkgZmlsOiIKKworIzogbGliL2JsYW1lLnRjbDoxMjQzCittc2dpZCAiQ29waWVkIE9yIE1vdmVkIEhlcmUgQnk6IgorbXNnc3RyICJLb3BpZXJ0IGVsbGVyIGZseXR0ZXQgaGl0IGF2OiIKKworIzogbGliL2JyYW5jaF9jaGVja291dC50Y2w6MTQgbGliL2JyYW5jaF9jaGVja291dC50Y2w6MTkKK21zZ2lkICJDaGVja291dCBCcmFuY2giCittc2dzdHIgIlNqZWtrIHV0IGdyZW4iCisKKyM6IGxpYi9icmFuY2hfY2hlY2tvdXQudGNsOjIzCittc2dpZCAiQ2hlY2tvdXQiCittc2dzdHIgIlV0c2pla2tpbmciCisKKyM6IGxpYi9icmFuY2hfY2hlY2tvdXQudGNsOjI3IGxpYi9icmFuY2hfY3JlYXRlLnRjbDozNQorIzogbGliL2JyYW5jaF9kZWxldGUudGNsOjMyIGxpYi9icmFuY2hfcmVuYW1lLnRjbDozMCBsaWIvYnJvd3Nlci50Y2w6MjgyCisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjU0NCBsaWIvY2hvb3NlX2ZvbnQudGNsOjQzIGxpYi9tZXJnZS50Y2w6MTcyCisjOiBsaWIvb3B0aW9uLnRjbDoxMjUgbGliL3JlbW90ZV9hZGQudGNsOjMyIGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NDIKKyM6IGxpYi90b29sc19kbGcudGNsOjQwIGxpYi90b29sc19kbGcudGNsOjIwNCBsaWIvdG9vbHNfZGxnLnRjbDozNTIKKyM6IGxpYi90cmFuc3BvcnQudGNsOjk3Cittc2dpZCAiQ2FuY2VsIgorbXNnc3RyICJBdmJyeXQiCisKKyM6IGxpYi9icmFuY2hfY2hlY2tvdXQudGNsOjMyIGxpYi9icm93c2VyLnRjbDoyODcgbGliL3Rvb2xzX2RsZy50Y2w6MzI4Cittc2dpZCAiUmV2aXNpb24iCittc2dzdHIgIlJldmlzam9uIgorCisjOiBsaWIvYnJhbmNoX2NoZWNrb3V0LnRjbDozNiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6NjkgbGliL29wdGlvbi50Y2w6MjgwCittc2dpZCAiT3B0aW9ucyIKK21zZ3N0ciAiVmFsZyIKKworIzogbGliL2JyYW5jaF9jaGVja291dC50Y2w6MzkgbGliL2JyYW5jaF9jcmVhdGUudGNsOjkyCittc2dpZCAiRmV0Y2ggVHJhY2tpbmcgQnJhbmNoIgorbXNnc3RyICJIZW50IHNwb3JldCBncmVuIgorCisjOiBsaWIvYnJhbmNoX2NoZWNrb3V0LnRjbDo0NAorbXNnaWQgIkRldGFjaCBGcm9tIExvY2FsIEJyYW5jaCIKK21zZ3N0ciAiS29ibGUgYm9ydCBsb2thbCBncmVuIgorCisjOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6MjIKK21zZ2lkICJDcmVhdGUgQnJhbmNoIgorbXNnc3RyICJPcHByZXR0IGdyZW4iCisKKyM6IGxpYi9icmFuY2hfY3JlYXRlLnRjbDoyNworbXNnaWQgIkNyZWF0ZSBOZXcgQnJhbmNoIgorbXNnc3RyICJPcHByZXR0IG55IGdyZW4iCisKKyM6IGxpYi9icmFuY2hfY3JlYXRlLnRjbDozMSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM3NworbXNnaWQgIkNyZWF0ZSIKK21zZ3N0ciAiT3BwcmV0dCIKKworIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjQwCittc2dpZCAiQnJhbmNoIE5hbWUiCittc2dzdHIgIk5hdm4gcMOlIGdyZW4iCisKKyM6IGxpYi9icmFuY2hfY3JlYXRlLnRjbDo0MyBsaWIvcmVtb3RlX2FkZC50Y2w6MzkgbGliL3Rvb2xzX2RsZy50Y2w6NTAKK21zZ2lkICJOYW1lOiIKK21zZ3N0ciAiTmF2bjoiCisKKyM6IGxpYi9icmFuY2hfY3JlYXRlLnRjbDo1OAorbXNnaWQgIk1hdGNoIFRyYWNraW5nIEJyYW5jaCBOYW1lIgorbXNnc3RyICJCcnVrIG5hdm4gcMOlIHNwb3JldCBncmVuIgorCisjOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6NjYKK21zZ2lkICJTdGFydGluZyBSZXZpc2lvbiIKK21zZ3N0ciAiU3RhcnRlciByZXZpc2pvbiIKKworIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjcyCittc2dpZCAiVXBkYXRlIEV4aXN0aW5nIEJyYW5jaDoiCittc2dzdHIgIk9wcGRhdGVyIGVrc2lzdGVyZW5kZSBncmVuOiIKKworIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjc1Cittc2dpZCAiTm8iCittc2dzdHIgIk5laSIKKworIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjgwCittc2dpZCAiRmFzdCBGb3J3YXJkIE9ubHkiCittc2dzdHIgIkt1biBodXJ0aWdmcmVtc3BvbGluZyIKKworIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjg1IGxpYi9jaGVja291dF9vcC50Y2w6NTM2Cittc2dpZCAiUmVzZXQiCittc2dzdHIgIlRpbGJha2VzdGlsbCIKKworIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjk3Cittc2dpZCAiQ2hlY2tvdXQgQWZ0ZXIgQ3JlYXRpb24iCittc2dzdHIgIlNqZWtrIHV0IGV0dGVyIG9wcHJldHRpbmciCisKKyM6IGxpYi9icmFuY2hfY3JlYXRlLnRjbDoxMzEKK21zZ2lkICJQbGVhc2Ugc2VsZWN0IGEgdHJhY2tpbmcgYnJhbmNoLiIKK21zZ3N0ciAiVmVsZyBlbiBncmVuIHNvbSBza2FsIGbDuGxnZXMuIgorCisjOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6MTQwCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVHJhY2tpbmcgYnJhbmNoICVzIGlzIG5vdCBhIGJyYW5jaCBpbiB0aGUgcmVtb3RlIHJlcG9zaXRvcnkuIgorbXNnc3RyICJEZW4gZnVsZ3RlIGdyZW5lbiAlcyBlciBpa2tlIGVuIGdyZW4gaSBmamVybmFya2l2ZXQuIgorCisjOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6MTUzIGxpYi9icmFuY2hfcmVuYW1lLnRjbDo4NgorbXNnaWQgIlBsZWFzZSBzdXBwbHkgYSBicmFuY2ggbmFtZS4iCittc2dzdHIgIkFuZ2kgZXQgbmF2biBmb3IgZ3JlbmVuLiIKKworIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjE2NCBsaWIvYnJhbmNoX3JlbmFtZS50Y2w6MTA2CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiJyVzJyBpcyBub3QgYW4gYWNjZXB0YWJsZSBicmFuY2ggbmFtZS4iCittc2dzdHIgIiclcycga2FuIGlra2UgYnJ1a2VzIHNvbSBuYXZuIHDDpSBlbiBncmVuLiIKKworIzogbGliL2JyYW5jaF9kZWxldGUudGNsOjE1Cittc2dpZCAiRGVsZXRlIEJyYW5jaCIKK21zZ3N0ciAiRmplcm4gZ3JlbiIKKworIzogbGliL2JyYW5jaF9kZWxldGUudGNsOjIwCittc2dpZCAiRGVsZXRlIExvY2FsIEJyYW5jaCIKK21zZ3N0ciAiRmplcm4gbG9rYWwgZ3JlbiIKKworIzogbGliL2JyYW5jaF9kZWxldGUudGNsOjM3Cittc2dpZCAiTG9jYWwgQnJhbmNoZXMiCittc2dzdHIgIkxva2FsZSBncmVuZXIiCisKKyM6IGxpYi9icmFuY2hfZGVsZXRlLnRjbDo1MgorbXNnaWQgIkRlbGV0ZSBPbmx5IElmIE1lcmdlZCBJbnRvIgorbXNnc3RyICJGamVybiBrdW4gdmVkIHNhbW1lbnNsw6VpbmciCisKKyM6IGxpYi9icmFuY2hfZGVsZXRlLnRjbDo1NAorbXNnaWQgIkFsd2F5cyAoRG8gbm90IHBlcmZvcm0gbWVyZ2UgdGVzdC4pIgorbXNnc3RyICJBbGx0aWQgKElra2UgdXRmw7hyIHNhbW1lbnNsw6VpbmdzdGVzdC4pIgorCisjOiBsaWIvYnJhbmNoX2RlbGV0ZS50Y2w6MTAzCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVGhlIGZvbGxvd2luZyBicmFuY2hlcyBhcmUgbm90IGNvbXBsZXRlbHkgbWVyZ2VkIGludG8gJXM6IgorbXNnc3RyICJGw7hsZ2VuZGUgZ3JlbmVyIGVyIGlra2UgZnVsbHN0ZW5kaWcgc2zDpXR0IHNhbW1lbiBtZWQgJXM6IgorCisjOiBsaWIvYnJhbmNoX2RlbGV0ZS50Y2w6MTE1Cittc2dpZCAiIgorIlJlY292ZXJpbmcgZGVsZXRlZCBicmFuY2hlcyBpcyBkaWZmaWN1bHQuIFxuIgorIlxuIgorIiBEZWxldGUgdGhlIHNlbGVjdGVkIGJyYW5jaGVzPyIKK21zZ3N0ciAiIgorIkdqZW5vcHByZXR0aW5nIGF2IGZqZXJuZWRlIGdyZW5lciBlciB2YW5za2VsaWcuIFxuIgorIlxuIgorIiBGamVybiB2YWxndGUgZ3JlbmVyPyIKKworIzogbGliL2JyYW5jaF9kZWxldGUudGNsOjE0MQorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJGYWlsZWQgdG8gZGVsZXRlIGJyYW5jaGVzOlxuIgorIiVzIgorbXNnc3RyICIiCisiS3VubmUgaWtrZSBmamVybmUgZ3JlbmVyOlxuIgorIiVzIgorCisjOiBsaWIvYnJhbmNoX3JlbmFtZS50Y2w6MTQgbGliL2JyYW5jaF9yZW5hbWUudGNsOjIyCittc2dpZCAiUmVuYW1lIEJyYW5jaCIKK21zZ3N0ciAiR2kgZ3JlbiBueXR0IG5hdm4iCisKKyM6IGxpYi9icmFuY2hfcmVuYW1lLnRjbDoyNgorbXNnaWQgIlJlbmFtZSIKK21zZ3N0ciAiRW5kcmUgbmF2biIKKworIzogbGliL2JyYW5jaF9yZW5hbWUudGNsOjM2Cittc2dpZCAiQnJhbmNoOiIKK21zZ3N0ciAiR3JlbjoiCisKKyM6IGxpYi9icmFuY2hfcmVuYW1lLnRjbDozOQorbXNnaWQgIk5ldyBOYW1lOiIKK21zZ3N0ciAiTnl0dCBuYXZuOiIKKworIzogbGliL2JyYW5jaF9yZW5hbWUudGNsOjc1Cittc2dpZCAiUGxlYXNlIHNlbGVjdCBhIGJyYW5jaCB0byByZW5hbWUuIgorbXNnc3RyICJWZW5ubGlnc3QgdmVsZyBncmVuZW4gZHUgdmlsIGVuZHJlIG5hdm4gcMOlLiIKKworIzogbGliL2JyYW5jaF9yZW5hbWUudGNsOjk2IGxpYi9jaGVja291dF9vcC50Y2w6MjAxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQnJhbmNoICclcycgYWxyZWFkeSBleGlzdHMuIgorbXNnc3RyICJHcmVuZW4gJyVzJyBla3Npc3RlcmVyIGFsbGVyZWRlLiIKKworIzogbGliL2JyYW5jaF9yZW5hbWUudGNsOjExNworIywgdGNsLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byByZW5hbWUgJyVzJy4iCittc2dzdHIgIkt1bm5lIGlra2UgZW5kcmUgbmF2bmV0ICclcycuIgorCisjOiBsaWIvYnJvd3Nlci50Y2w6MTcKK21zZ2lkICJTdGFydGluZy4uLiIKK21zZ3N0ciAiU3RhcnRlci4uLiIKKworIzogbGliL2Jyb3dzZXIudGNsOjI2Cittc2dpZCAiRmlsZSBCcm93c2VyIgorbXNnc3RyICJVdGZvcnNrZXIiCisKKyM6IGxpYi9icm93c2VyLnRjbDoxMjYgbGliL2Jyb3dzZXIudGNsOjE0MworIywgdGNsLWZvcm1hdAorbXNnaWQgIkxvYWRpbmcgJXMuLi4iCittc2dzdHIgIkxhc3RlciAlcy4uLiIKKworIzogbGliL2Jyb3dzZXIudGNsOjE4NworbXNnaWQgIltVcCBUbyBQYXJlbnRdIgorbXNnc3RyICJbT3BwIHRpbCBmb3JlbGRlcl0iCisKKyM6IGxpYi9icm93c2VyLnRjbDoyNjcgbGliL2Jyb3dzZXIudGNsOjI3MworbXNnaWQgIkJyb3dzZSBCcmFuY2ggRmlsZXMiCittc2dzdHIgIkJsYSBpZ2plbm5vbSBncmVuZW5zIGZpbGVyIgorCisjOiBsaWIvYnJvd3Nlci50Y2w6Mjc4IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Mzk0CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ4MCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ5MQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5OTUKK21zZ2lkICJCcm93c2UiCittc2dzdHIgIkJsYSBpZ2plbm5vbSIKKworIzogbGliL2NoZWNrb3V0X29wLnRjbDo4NAorIywgdGNsLWZvcm1hdAorbXNnaWQgIkZldGNoaW5nICVzIGZyb20gJXMiCittc2dzdHIgIkhlbnRlciAlcyBmcmEgJXMiCisKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6MTMyCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiZmF0YWw6IENhbm5vdCByZXNvbHZlICVzIgorbXNnc3RyICJrcml0aXNrOiBLYW4gaWtrZSDDpXBuZSAlcyIKKworIzogbGliL2NoZWNrb3V0X29wLnRjbDoxNDUgbGliL2NvbnNvbGUudGNsOjgxIGxpYi9kYXRhYmFzZS50Y2w6MzEKKyM6IGxpYi9zc2hrZXkudGNsOjUzCittc2dpZCAiQ2xvc2UiCittc2dzdHIgIkx1a2siCisKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6MTc0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQnJhbmNoICclcycgZG9lcyBub3QgZXhpc3QuIgorbXNnc3RyICJHcmVuZW4gJyVzJyBla3Npc3RlcmVyIGlra2UuIgorCisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjE5MworIywgdGNsLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byBjb25maWd1cmUgc2ltcGxpZmllZCBnaXQtcHVsbCBmb3IgJyVzJy4iCittc2dzdHIgIkt1bm5lIGlra2Uga29uZmlndXJlcmUgZm9yZW5rbGV0IGdpdC1wdWxsIGZvciAnJXMnLiIKKworIzogbGliL2NoZWNrb3V0X29wLnRjbDoyMjgKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiQnJhbmNoICclcycgYWxyZWFkeSBleGlzdHMuXG4iCisiXG4iCisiSXQgY2Fubm90IGZhc3QtZm9yd2FyZCB0byAlcy5cbiIKKyJBIG1lcmdlIGlzIHJlcXVpcmVkLiIKK21zZ3N0ciAiIgorIkdyZW5lbiAnJXMnIGVrc2lzdGVyZXIgYWxsZXJlZGUuXG4iCisiXG4iCisiRGVuIGthbiBpa2tlIGh1cnRpZ2ZyZW1zcG9sZXMgdGlsICVzLlxuIgorIkVuIHNhbW1lbnNsw6VpbmcgZXIgcMOla3JldmQuIgorCisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjI0MgorIywgdGNsLWZvcm1hdAorbXNnaWQgIk1lcmdlIHN0cmF0ZWd5ICclcycgbm90IHN1cHBvcnRlZC4iCittc2dzdHIgIlNhbW1lbnNsw6Vpbmdzc3RyYXRlZ2llbiAnJXMnIGVyIGlra2Ugc3TDuHR0ZXQuIgorCisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjI2MQorIywgdGNsLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byB1cGRhdGUgJyVzJy4iCittc2dzdHIgIkt1bm5lIGlra2Ugb3BwZGF0ZXJlICclcycuIgorCisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjI3MworbXNnaWQgIlN0YWdpbmcgYXJlYSAoaW5kZXgpIGlzIGFscmVhZHkgbG9ja2VkLiIKK21zZ3N0ciAiS8O4b21yw6VkZXQgKGluZGV4KSBlciBhbGxlcmVkZSBsw6VzdC4iCisKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6Mjg4Cittc2dpZCAiIgorIkxhc3Qgc2Nhbm5lZCBzdGF0ZSBkb2VzIG5vdCBtYXRjaCByZXBvc2l0b3J5IHN0YXRlLlxuIgorIlxuIgorIkFub3RoZXIgR2l0IHByb2dyYW0gaGFzIG1vZGlmaWVkIHRoaXMgcmVwb3NpdG9yeSBzaW5jZSB0aGUgbGFzdCBzY2FuLiAgQSAiCisicmVzY2FuIG11c3QgYmUgcGVyZm9ybWVkIGJlZm9yZSB0aGUgY3VycmVudCBicmFuY2ggY2FuIGJlIGNoYW5nZWQuXG4iCisiXG4iCisiVGhlIHJlc2NhbiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgc3RhcnRlZCBub3cuXG4iCittc2dzdHIgIiIKKworIzogbGliL2NoZWNrb3V0X29wLnRjbDozNDQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJVcGRhdGluZyB3b3JraW5nIGRpcmVjdG9yeSB0byAnJXMnLi4uIgorbXNnc3RyICJPcHBkYXRlcmVyIGFyYmVpZHNrYXRhbG9nZW4gdGlsICclcycuLi4iCisKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6MzQ1Cittc2dpZCAiZmlsZXMgY2hlY2tlZCBvdXQiCittc2dzdHIgImZpbGVyIHNqZWtrZXQgdXQiCisKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6Mzc1CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQWJvcnRlZCBjaGVja291dCBvZiAnJXMnIChmaWxlIGxldmVsIG1lcmdpbmcgaXMgcmVxdWlyZWQpLiIKK21zZ3N0ciAiQXZicsO4dCB1dHNqZWtraW5nZW4gYXYgJyVzJyAoc2FtbWVuc2zDpWluZyBww6UgZmlsbml2w6Uga3JldmVzKS4iCisKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6Mzc2Cittc2dpZCAiRmlsZSBsZXZlbCBtZXJnZSByZXF1aXJlZC4iCittc2dzdHIgIlNhbW1lbnNsw6VpbmcgcMOlIGZpbG5pdsOlIGtyZXZlcyIKKworIzogbGliL2NoZWNrb3V0X29wLnRjbDozODAKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJTdGF5aW5nIG9uIGJyYW5jaCAnJXMnLiIKK21zZ3N0ciAiQmxpciBzdMOlZW5kZSBww6UgZ3JlbmVuICclcycuIgorCisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjQ1MQorbXNnaWQgIiIKKyJZb3UgYXJlIG5vIGxvbmdlciBvbiBhIGxvY2FsIGJyYW5jaC5cbiIKKyJcbiIKKyJJZiB5b3Ugd2FudGVkIHRvIGJlIG9uIGEgYnJhbmNoLCBjcmVhdGUgb25lIG5vdyBzdGFydGluZyBmcm9tICdUaGlzIERldGFjaGVkICIKKyJDaGVja291dCcuIgorbXNnc3RyICIiCisKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6NDY4IGxpYi9jaGVja291dF9vcC50Y2w6NDcyCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQ2hlY2tlZCBvdXQgJyVzJy4iCittc2dzdHIgIlNqZWtrZXQgdXQgJyVzJy4iCisKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6NTAwCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiUmVzZXR0aW5nICclcycgdG8gJyVzJyB3aWxsIGxvc2UgdGhlIGZvbGxvd2luZyBjb21taXRzOiIKK21zZ3N0ciAiIgorIlRpbGJha2VzdGlsbGluZyBhdiAnJXMnIHRpbCAnJXMnIHZpbCBtZWRmw7hyZSB0YXAgYXYgZsO4bGdlbmRlIGlubnNqZWtraW5nZXI6IgorCisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjUyMgorbXNnaWQgIlJlY292ZXJpbmcgbG9zdCBjb21taXRzIG1heSBub3QgYmUgZWFzeS4iCittc2dzdHIgIiIKKyJEZXQgdmlsIGthbnNramUgaWtrZSB2w6ZyZSBzw6UgZW5rZWx0IMOlIGdqZW5vcHByZXR0ZSBlbiB0YXB0IGlubnNqZWtraW5nLiIKKworIzogbGliL2NoZWNrb3V0X29wLnRjbDo1MjcKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJSZXNldCAnJXMnPyIKK21zZ3N0ciAiVGlsYmFrZXN0aWxsICclcyc/IgorCisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjUzMiBsaWIvbWVyZ2UudGNsOjE2NCBsaWIvdG9vbHNfZGxnLnRjbDozNDMKK21zZ2lkICJWaXN1YWxpemUiCittc2dzdHIgIlZpc3VhbGlzZXIiCisKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6NjAwCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIkZhaWxlZCB0byBzZXQgY3VycmVudCBicmFuY2guXG4iCisiXG4iCisiVGhpcyB3b3JraW5nIGRpcmVjdG9yeSBpcyBvbmx5IHBhcnRpYWxseSBzd2l0Y2hlZC4gIFdlIHN1Y2Nlc3NmdWxseSB1cGRhdGVkICIKKyJ5b3VyIGZpbGVzLCBidXQgZmFpbGVkIHRvIHVwZGF0ZSBhbiBpbnRlcm5hbCBHaXQgZmlsZS5cbiIKKyJcbiIKKyJUaGlzIHNob3VsZCBub3QgaGF2ZSBvY2N1cnJlZC4gICVzIHdpbGwgbm93IGNsb3NlIGFuZCBnaXZlIHVwLiIKK21zZ3N0ciAiIgorCisjOiBsaWIvY2hvb3NlX2ZvbnQudGNsOjM5Cittc2dpZCAiU2VsZWN0IgorbXNnc3RyICJWZWxnIgorCisjOiBsaWIvY2hvb3NlX2ZvbnQudGNsOjUzCittc2dpZCAiRm9udCBGYW1pbHkiCittc2dzdHIgIlNrcmlmdHR5cGUtZmFtaWxpZSIKKworIzogbGliL2Nob29zZV9mb250LnRjbDo3NAorbXNnaWQgIkZvbnQgU2l6ZSIKK21zZ3N0ciAiU2tyaWZ0c3TDuHJyZWxzZSIKKworIzogbGliL2Nob29zZV9mb250LnRjbDo5MQorbXNnaWQgIkZvbnQgRXhhbXBsZSIKK21zZ3N0ciAiU2tyaWZ0ZWtzZW1wZWwiCisKKyM6IGxpYi9jaG9vc2VfZm9udC50Y2w6MTAzCittc2dpZCAiIgorIlRoaXMgaXMgZXhhbXBsZSB0ZXh0LlxuIgorIklmIHlvdSBsaWtlIHRoaXMgdGV4dCwgaXQgY2FuIGJlIHlvdXIgZm9udC4iCittc2dzdHIgIiIKKyJEZXR0ZSBlciBlbiBla3NlbXBlbHRla3N0LlxuIgorIkh2aXMgZHUgbGlrZXIgaHZvcmRhbiB0ZWtzdGVuIHNlciB1dCwga2FuIGR1IHZlbGdlIGRldHRlIHNvbSBkaW4gc2tyaWZ0dHlwZS4iCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MjgKK21zZ2lkICJHaXQgR3VpIgorbXNnc3RyICJHaXQgR3VpIgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg3IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzgyCittc2dpZCAiQ3JlYXRlIE5ldyBSZXBvc2l0b3J5IgorbXNnc3RyICJPcHByZXR0IG55dHQgYXJraXYiCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTMKK21zZ2lkICJOZXcuLi4iCittc2dzdHIgIk55Li4uIgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ2NQorbXNnaWQgIkNsb25lIEV4aXN0aW5nIFJlcG9zaXRvcnkiCittc2dzdHIgIktsb24gZWtzaXN0ZXJlcmVuZGUgYXJraXYiCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTA2Cittc2dpZCAiQ2xvbmUuLi4iCittc2dzdHIgIktsb24uLi4iCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTEzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTgzCittc2dpZCAiT3BlbiBFeGlzdGluZyBSZXBvc2l0b3J5IgorbXNnc3RyICLDhXBuZSBla3Npc3RlcmVyZW5kZSBhcmtpdiIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMTkKK21zZ2lkICJPcGVuLi4uIgorbXNnc3RyICLDhXBuZS4uLiIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMzIKK21zZ2lkICJSZWNlbnQgUmVwb3NpdG9yaWVzIgorbXNnc3RyICJOeWxpZyBicnVrdGUgYXJraXYiCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTM4Cittc2dpZCAiT3BlbiBSZWNlbnQgUmVwb3NpdG9yeToiCittc2dzdHIgIsOFcG5lIG55bGlnIGJydWt0IGFya2l2OiIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozMDIgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozMDkKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzE2CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIGNyZWF0ZSByZXBvc2l0b3J5ICVzOiIKK21zZ3N0ciAiS3VubmUgaWtrZSBvcHByZXR0ZSBhcmtpdmV0ICVzOiIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozODcKK21zZ2lkICJEaXJlY3Rvcnk6IgorbXNnc3RyICJNYXBwZToiCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDE3IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTQ0CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMTcKK21zZ2lkICJHaXQgUmVwb3NpdG9yeSIKK21zZ3N0ciAiR2l0IGFya2l2IgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ0MgorIywgdGNsLWZvcm1hdAorbXNnaWQgIkRpcmVjdG9yeSAlcyBhbHJlYWR5IGV4aXN0cy4iCittc2dzdHIgIk1hcHBlbiAlcyBla3Npc3RlcmVyIGFsbGVyZWRlLiIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NDYKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGaWxlICVzIGFscmVhZHkgZXhpc3RzLiIKK21zZ3N0ciAiRmlsZW4gJXMgZWtzaXN0ZXJlciBhbGxlcmVkZS4iCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDYwCittc2dpZCAiQ2xvbmUiCittc2dzdHIgIktsb24iCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDczCittc2dpZCAiU291cmNlIExvY2F0aW9uOiIKK21zZ3N0ciAiS2lsZGVwbGFzc2VyaW5nOiIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0ODQKK21zZ2lkICJUYXJnZXQgRGlyZWN0b3J5OiIKK21zZ3N0ciAiRGVzdGluYXNqb25zbWFwcGU6IgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ5NgorbXNnaWQgIkNsb25lIFR5cGU6IgorbXNnc3RyICJLbG9udHlwZToiCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTAyCittc2dpZCAiU3RhbmRhcmQgKEZhc3QsIFNlbWktUmVkdW5kYW50LCBIYXJkbGlua3MpIgorbXNnc3RyICJTdGFuZGFyZCAocmFzaywgZGVsdmlzIHJlZHVuZGFudCwgaGFyZGxpbmtlcikiCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTA4Cittc2dpZCAiRnVsbCBDb3B5IChTbG93ZXIsIFJlZHVuZGFudCBCYWNrdXApIgorbXNnc3RyICJGdWxsIGtvcGkgKHRyZWdlcmUsIHJlZHVuZGFudCBzaWtrZXJoZXRza29waSkiCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTE0Cittc2dpZCAiU2hhcmVkIChGYXN0ZXN0LCBOb3QgUmVjb21tZW5kZWQsIE5vIEJhY2t1cCkiCittc2dzdHIgIkRlbHQgKHJhc2tlc3QsIGlra2UgYW5iZWZhbHQsIGluZ2VuIHNpa2tlcmhldHNrb3BpZXJpbmcpIgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU1MCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU5NworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NDMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4MTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAyMyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMzEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJOb3QgYSBHaXQgcmVwb3NpdG9yeTogJXMiCittc2dzdHIgIklra2UgZXQgR2l0LWFya2l2OiAlcyIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1ODYKK21zZ2lkICJTdGFuZGFyZCBvbmx5IGF2YWlsYWJsZSBmb3IgbG9jYWwgcmVwb3NpdG9yeS4iCittc2dzdHIgIlN0YW5kYXJkIGVyIGt1biB0aWxnamVuZ2VsaWcgZm9yIGxva2FsdCBhcmtpdi4iCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTkwCittc2dpZCAiU2hhcmVkIG9ubHkgYXZhaWxhYmxlIGZvciBsb2NhbCByZXBvc2l0b3J5LiIKK21zZ3N0ciAiRGVsdCBlciBrdW4gdGlsZ2plbmdlbGlnIGZvciBsb2thbHQgYXJraXYuIgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYxMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIkxvY2F0aW9uICVzIGFscmVhZHkgZXhpc3RzLiIKK21zZ3N0ciAiU3RlZGV0ICVzIGVrc2lzdGVyZXIgYWxsZXJlZGUuIgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYyMgorbXNnaWQgIkZhaWxlZCB0byBjb25maWd1cmUgb3JpZ2luIgorbXNnc3RyICJLdW5uZSBpa2tlIGtvbmZpZ3VyZXJlIGtpbGRlb3BwZsO4cmluZyIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MzQKK21zZ2lkICJDb3VudGluZyBvYmplY3RzIgorbXNnc3RyICJUZWxsZXIgb2JqZWt0ZXIiCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjM1Cittc2dpZCAiYnVja2V0cyIKK21zZ3N0ciAiYsO4dHRlciIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2NTkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJVbmFibGUgdG8gY29weSBvYmplY3RzL2luZm8vYWx0ZXJuYXRlczogJXMiCittc2dzdHIgIkt1bm5lIGlra2Uga29waWVyZSBvYmpla3Rlci9pbmZvcm1hc2pvbi9hbHRlcm5hdGl2dDogJXMiCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Njk1CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiTm90aGluZyB0byBjbG9uZSBmcm9tICVzLiIKK21zZ3N0ciAiSW5nZW50aW5nIMOlIGtsb25lIGZyYSAlcy4iCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Njk3IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTExCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkyMworbXNnaWQgIlRoZSAnbWFzdGVyJyBicmFuY2ggaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkLiIKK21zZ3N0ciAiR3JlbmVuICdtYXN0ZXInIGhhciBpa2tlIGJsaXR0IGluaXRzaWFsaXNlcnQuIgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjcxMAorbXNnaWQgIkhhcmRsaW5rcyBhcmUgdW5hdmFpbGFibGUuICBGYWxsaW5nIGJhY2sgdG8gY29weWluZy4iCittc2dzdHIgIkhhcmRlIGxpbmtlciBlciB1dGlsZ2plbmdlbGlnLiBHw6VyIHRpbGJha2UgdGlsIGtvcGllcmluZy4iCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzIyCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQ2xvbmluZyBmcm9tICVzIgorbXNnc3RyICJLbG9uZXIgZnJhICVzIgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc1MworbXNnaWQgIkNvcHlpbmcgb2JqZWN0cyIKK21zZ3N0ciAiS29waWVyZXIgb2JqZWt0ZXIiCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzU0Cittc2dpZCAiS2lCIgorbXNnc3RyICJrQiIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NzgKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJVbmFibGUgdG8gY29weSBvYmplY3Q6ICVzIgorbXNnc3RyICJLdW5uZSBpa2tlIGtvcGllcmUgb2JqZWt0OiAlcyIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3ODgKK21zZ2lkICJMaW5raW5nIG9iamVjdHMiCittc2dzdHIgIkxlbmtlciBvYmpla3RlciIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3ODkKK21zZ2lkICJvYmplY3RzIgorbXNnc3RyICJvYmpla3RlciIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3OTcKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJVbmFibGUgdG8gaGFyZGxpbmsgb2JqZWN0OiAlcyIKK21zZ3N0ciAiS3VubmUgaWtrZSBvcHByZXR0ZSBoYXJkbGluayBtZWQgb2JqZWt0ZXQ6ICVzIgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg1MgorbXNnaWQgIkNhbm5vdCBmZXRjaCBicmFuY2hlcyBhbmQgb2JqZWN0cy4gIFNlZSBjb25zb2xlIG91dHB1dCBmb3IgZGV0YWlscy4iCittc2dzdHIgIkt1bm5lIGlra2UgaGVudGUgZ3JlbmVyIG9nIG9iamVrdGVyLiBTZSB1dGRhdGEgaSBrb25zb2xsIGZvciBkZXRhbGplci4iCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODYzCittc2dpZCAiQ2Fubm90IGZldGNoIHRhZ3MuICBTZWUgY29uc29sZSBvdXRwdXQgZm9yIGRldGFpbHMuIgorbXNnc3RyICJLdW5uZSBpa2tlIGhlbnRlIHRhZ2dlci4gU2UgdXRkYXRhIGkga29uc29sbCBmb3IgZGV0YWxqZXIuIgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg4NworbXNnaWQgIkNhbm5vdCBkZXRlcm1pbmUgSEVBRC4gIFNlZSBjb25zb2xlIG91dHB1dCBmb3IgZGV0YWlscy4iCittc2dzdHIgIkthbiBpa2tlIGJlc3RlbW1lIEhFQUQuIFNlIHV0ZGF0YSBpIGtvbnNvbGwgZm9yIGRldGFsamVyLiIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4OTYKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJVbmFibGUgdG8gY2xlYW51cCAlcyIKK21zZ3N0ciAiS3VubmUgaWtrZSByeWRkZSBvcHAgJXMiCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTAyCittc2dpZCAiQ2xvbmUgZmFpbGVkLiIKK21zZ3N0ciAiS2xvbmluZyBmZWlsZXQuIgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkwOQorbXNnaWQgIk5vIGRlZmF1bHQgYnJhbmNoIG9idGFpbmVkLiIKK21zZ3N0ciAiSW5nZW4gc3RhbmRhcmRncmVuIGhlbnRldC4iCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTIwCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQ2Fubm90IHJlc29sdmUgJXMgYXMgYSBjb21taXQuIgorbXNnc3RyICJLYW4gaWtrZSBmaW5uZSAlcyBzb20gZW4gaW5uc2pla2tpbmcuIgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkzMgorbXNnaWQgIkNyZWF0aW5nIHdvcmtpbmcgZGlyZWN0b3J5IgorbXNnc3RyICJPcHByZXR0ZXIgYXJiZWlkc2thdGFsb2ciCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTMzIGxpYi9pbmRleC50Y2w6NjUgbGliL2luZGV4LnRjbDoxMjgKKyM6IGxpYi9pbmRleC50Y2w6MTk2Cittc2dpZCAiZmlsZXMiCittc2dzdHIgImZpbGVyIgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk2MgorbXNnaWQgIkluaXRpYWwgZmlsZSBjaGVja291dCBmYWlsZWQuIgorbXNnc3RyICJJbml0c2lhbGlzZXJlbmRlIHV0c2pla2tpbmcgZmVpbGV0LiIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NzgKK21zZ2lkICJPcGVuIgorbXNnc3RyICLDhXBuZSIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5ODgKK21zZ2lkICJSZXBvc2l0b3J5OiIKK21zZ3N0ciAiQXJraXY6IgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMzcKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gb3BlbiByZXBvc2l0b3J5ICVzOiIKK21zZ3N0ciAiS3VubmUgaWtrZSDDpXBuZSBhcmtpdmV0ICVzOiIKKworIzogbGliL2Nob29zZV9yZXYudGNsOjUzCittc2dpZCAiVGhpcyBEZXRhY2hlZCBDaGVja291dCIKK21zZ3N0ciAiRGVubmUgZnJha29ibGVkZSB1dHNqZWtraW5nZW4iCisKKyM6IGxpYi9jaG9vc2VfcmV2LnRjbDo2MAorbXNnaWQgIlJldmlzaW9uIEV4cHJlc3Npb246IgorbXNnc3RyICJSZXZpc2pvbnN1dHRyeWtrOiIKKworIzogbGliL2Nob29zZV9yZXYudGNsOjc0Cittc2dpZCAiTG9jYWwgQnJhbmNoIgorbXNnc3RyICJMb2thbCBncmVuIgorCisjOiBsaWIvY2hvb3NlX3Jldi50Y2w6NzkKK21zZ2lkICJUcmFja2luZyBCcmFuY2giCittc2dzdHIgIlNwb3JldCBncmVuIgorCisjOiBsaWIvY2hvb3NlX3Jldi50Y2w6ODQgbGliL2Nob29zZV9yZXYudGNsOjUzOAorbXNnaWQgIlRhZyIKK21zZ3N0ciAiVGFnIgorCisjOiBsaWIvY2hvb3NlX3Jldi50Y2w6MzE3CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByZXZpc2lvbjogJXMiCittc2dzdHIgIlVneWxkaWcgcmV2aXNqb246ICVzIgorCisjOiBsaWIvY2hvb3NlX3Jldi50Y2w6MzM4Cittc2dpZCAiTm8gcmV2aXNpb24gc2VsZWN0ZWQuIgorbXNnc3RyICJJbmdlbiByZXZpc2pvbmVyIHZhbGd0LiIKKworIzogbGliL2Nob29zZV9yZXYudGNsOjM0NgorbXNnaWQgIlJldmlzaW9uIGV4cHJlc3Npb24gaXMgZW1wdHkuIgorbXNnc3RyICJSZXZpc2pvbnN1dHRyeWtrIGVyIHRvbXQuIgorCisjOiBsaWIvY2hvb3NlX3Jldi50Y2w6NTMxCittc2dpZCAiVXBkYXRlZCIKK21zZ3N0ciAiT3BwZGF0ZXJ0IgorCisjOiBsaWIvY2hvb3NlX3Jldi50Y2w6NTU5Cittc2dpZCAiVVJMIgorbXNnc3RyICJVUkwiCisKKyM6IGxpYi9jb21taXQudGNsOjkKK21zZ2lkICIiCisiVGhlcmUgaXMgbm90aGluZyB0byBhbWVuZC5cbiIKKyJcbiIKKyJZb3UgYXJlIGFib3V0IHRvIGNyZWF0ZSB0aGUgaW5pdGlhbCBjb21taXQuICBUaGVyZSBpcyBubyBjb21taXQgYmVmb3JlIHRoaXMgIgorInRvIGFtZW5kLlxuIgorbXNnc3RyICIiCisiRGV0IGVyIGluZ2VudGluZyDDpSBsZWdnZSB0aWwuXG4iCisiXG4iCisiRHUgZXIgaSBmZXJkIG1lZCDDpSBsYWdlIGRlbiBpbml0c2lhbGlzZXJlbmRlIHJldmlzam9uZW4uIERldCBlciBpbmdlbiAiCisidGlkbGlnZXJlIHJldmlzam9uZXIgw6UgdGlsZsO4eWUuXG4iCisKKyM6IGxpYi9jb21taXQudGNsOjE4Cittc2dpZCAiIgorIkNhbm5vdCBhbWVuZCB3aGlsZSBtZXJnaW5nLlxuIgorIlxuIgorIllvdSBhcmUgY3VycmVudGx5IGluIHRoZSBtaWRkbGUgb2YgYSBtZXJnZSB0aGF0IGhhcyBub3QgYmVlbiBmdWxseSAiCisiY29tcGxldGVkLiAgWW91IGNhbm5vdCBhbWVuZCB0aGUgcHJpb3IgY29tbWl0IHVubGVzcyB5b3UgZmlyc3QgYWJvcnQgdGhlICIKKyJjdXJyZW50IG1lcmdlIGFjdGl2aXR5LlxuIgorbXNnc3RyICIiCisiS2FuIGlra2UgdGlsZsO4eWUgdW5kZXIgc2FtbWVuc2zDpWluZy5cbiIKKyJcbiIKKyJEdSBlciBmb3Igw7h5ZWJsaWtrZXQgdW5kZXIgZW4gcMOlZ8OlZW5kZSBzYW1tZW5zbMOlaW5nIHNvbSBpa2tlIGVyIGZ1bGxmw7hydC4gRHUgIgorImthbiBpa2tlIHRpbGbDuHllIGVuIHRpZGxpZ2VyZSByZXZpc2pvbiBtZWQgbWluZHJlIGR1IGbDuHJzdCBhdmJyeXRlciBkZW5uZSAiCisic2FtbWVuc2zDpWluZ2VuLlxuIgorCisjOiBsaWIvY29tbWl0LnRjbDo0OQorbXNnaWQgIkVycm9yIGxvYWRpbmcgY29tbWl0IGRhdGEgZm9yIGFtZW5kOiIKK21zZ3N0ciAiRmVpbCB2ZWQgaW5uaGVudGluZyBhdiByZXZpc2pvbnNkYXRhIGZvciB0aWxmw7h5aW5nOiIKKworIzogbGliL2NvbW1pdC50Y2w6NzYKK21zZ2lkICJVbmFibGUgdG8gb2J0YWluIHlvdXIgaWRlbnRpdHk6IgorbXNnc3RyICJLdW5uZSBpa2tlIGF2Z2rDuHJlIGRpbiBpZGVudGl0ZXQ6IgorCisjOiBsaWIvY29tbWl0LnRjbDo4MQorbXNnaWQgIkludmFsaWQgR0lUX0NPTU1JVFRFUl9JREVOVDoiCittc2dzdHIgIlVneWxkaWcgR0lUX0NPTU1JVFRFUl9JREVOVDoiCisKKyM6IGxpYi9jb21taXQudGNsOjEzMworbXNnaWQgIiIKKyJMYXN0IHNjYW5uZWQgc3RhdGUgZG9lcyBub3QgbWF0Y2ggcmVwb3NpdG9yeSBzdGF0ZS5cbiIKKyJcbiIKKyJBbm90aGVyIEdpdCBwcm9ncmFtIGhhcyBtb2RpZmllZCB0aGlzIHJlcG9zaXRvcnkgc2luY2UgdGhlIGxhc3Qgc2Nhbi4gIEEgIgorInJlc2NhbiBtdXN0IGJlIHBlcmZvcm1lZCBiZWZvcmUgYW5vdGhlciBjb21taXQgY2FuIGJlIGNyZWF0ZWQuXG4iCisiXG4iCisiVGhlIHJlc2NhbiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgc3RhcnRlZCBub3cuXG4iCittc2dzdHIgIiIKKworIzogbGliL2NvbW1pdC50Y2w6MTU2CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIlVubWVyZ2VkIGZpbGVzIGNhbm5vdCBiZSBjb21taXR0ZWQuXG4iCisiXG4iCisiRmlsZSAlcyBoYXMgbWVyZ2UgY29uZmxpY3RzLiAgWW91IG11c3QgcmVzb2x2ZSB0aGVtIGFuZCBzdGFnZSB0aGUgZmlsZSAiCisiYmVmb3JlIGNvbW1pdHRpbmcuXG4iCittc2dzdHIgIiIKKworIzogbGliL2NvbW1pdC50Y2w6MTY0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIlVua25vd24gZmlsZSBzdGF0ZSAlcyBkZXRlY3RlZC5cbiIKKyJcbiIKKyJGaWxlICVzIGNhbm5vdCBiZSBjb21taXR0ZWQgYnkgdGhpcyBwcm9ncmFtLlxuIgorbXNnc3RyICIiCisiVWtqZW50IGZpbHN0YXR1cyAlcyBlciBmdW5uZXQuXG4iCisiXG4iCisiRmlsZW4gJXMga2FuIGlra2Ugc2pla2tlcyBpbm4gYXYgZGV0dGUgcHJvZ3JhbW1ldC5cbiIKKworIzogbGliL2NvbW1pdC50Y2w6MTcyCittc2dpZCAiIgorIk5vIGNoYW5nZXMgdG8gY29tbWl0LlxuIgorIlxuIgorIllvdSBtdXN0IHN0YWdlIGF0IGxlYXN0IDEgZmlsZSBiZWZvcmUgeW91IGNhbiBjb21taXQuXG4iCittc2dzdHIgIiIKKyJJbmdlbiBlbmRyaW5nZXIgw6Ugc2pla2tlIGlubi5cbiIKKyJcbiIKKyJEdSBtw6Uga8O4ZSBtaW5zdCBlbiBmaWwgZsO4ciBkdSBrYW4gc2pla2tlIGlubiBub2UuXG4iCisKKyM6IGxpYi9jb21taXQudGNsOjE4NworbXNnaWQgIiIKKyJQbGVhc2Ugc3VwcGx5IGEgY29tbWl0IG1lc3NhZ2UuXG4iCisiXG4iCisiQSBnb29kIGNvbW1pdCBtZXNzYWdlIGhhcyB0aGUgZm9sbG93aW5nIGZvcm1hdDpcbiIKKyJcbiIKKyItIEZpcnN0IGxpbmU6IERlc2NyaWJlIGluIG9uZSBzZW50ZW5jZSB3aGF0IHlvdSBkaWQuXG4iCisiLSBTZWNvbmQgbGluZTogQmxhbmtcbiIKKyItIFJlbWFpbmluZyBsaW5lczogRGVzY3JpYmUgd2h5IHRoaXMgY2hhbmdlIGlzIGdvb2QuXG4iCittc2dzdHIgIiIKKyJWZW5ubGlnc3QgYW5naSBlbiByZXZpc2pvbnNtZWxkaW5nLlxuIgorIlxuIgorIkVuIGdvZCBtZWxkaW5nIGhhciBmw7hsZ2VuZGUgZm9ybWF0OlxuIgorIlxuIgorIi0gRsO4cnN0ZSBsaW5qZTogRW4gYmVza3JpdmVsc2UgYXYgaHZhIGR1IGhhciBnam9ydCBpIMOpbiBzZXRuaW5nLlxuIgorIi0gQW5kcmUgbGluamU6IEJsYW5rXG4iCisiLSBSZXN0ZXJlbmRlIGxpbmplcjogRm9ya2xhciBodm9yZm9yIGRlbm5lIGVuZHJpbmdlbiBlciBicmEuXG4iCisKKyM6IGxpYi9jb21taXQudGNsOjIxMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIndhcm5pbmc6IFRjbCBkb2VzIG5vdCBzdXBwb3J0IGVuY29kaW5nICclcycuIgorbXNnc3RyICJhZHZhcnNlbDogVGNsIHN0w7h0dGVyIGlra2UgZGVubmUgdGVnbmtvZGluZ2VuICclcycuIgorCisjOiBsaWIvY29tbWl0LnRjbDoyMjcKK21zZ2lkICJDYWxsaW5nIHByZS1jb21taXQgaG9vay4uLiIKK21zZ3N0ciAiIgorCisjOiBsaWIvY29tbWl0LnRjbDoyNDIKK21zZ2lkICJDb21taXQgZGVjbGluZWQgYnkgcHJlLWNvbW1pdCBob29rLiIKK21zZ3N0ciAiIgorCisjOiBsaWIvY29tbWl0LnRjbDoyNjUKK21zZ2lkICJDYWxsaW5nIGNvbW1pdC1tc2cgaG9vay4uLiIKK21zZ3N0ciAiIgorCisjOiBsaWIvY29tbWl0LnRjbDoyODAKK21zZ2lkICJDb21taXQgZGVjbGluZWQgYnkgY29tbWl0LW1zZyBob29rLiIKK21zZ3N0ciAiIgorCisjOiBsaWIvY29tbWl0LnRjbDoyOTMKK21zZ2lkICJDb21taXR0aW5nIGNoYW5nZXMuLi4iCittc2dzdHIgIlNqZWtrZXIgaW5uIGVuZHJpbmdlci4uLiIKKworIzogbGliL2NvbW1pdC50Y2w6MzA5Cittc2dpZCAid3JpdGUtdHJlZSBmYWlsZWQ6IgorbXNnc3RyICJTa3JpdmluZyB0aWwgdHJlIGZlaWxldDoiCisKKyM6IGxpYi9jb21taXQudGNsOjMxMCBsaWIvY29tbWl0LnRjbDozNTQgbGliL2NvbW1pdC50Y2w6Mzc0Cittc2dpZCAiQ29tbWl0IGZhaWxlZC4iCittc2dzdHIgIklubnNqZWtraW5nIGZlaWxldC4iCisKKyM6IGxpYi9jb21taXQudGNsOjMyNworIywgdGNsLWZvcm1hdAorbXNnaWQgIkNvbW1pdCAlcyBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQiCittc2dzdHIgIlJldmlzam9uICVzIHNlciB1dCB0aWwgw6UgdsOmcmUga29ycnVwdCIKKworIzogbGliL2NvbW1pdC50Y2w6MzMyCittc2dpZCAiIgorIk5vIGNoYW5nZXMgdG8gY29tbWl0LlxuIgorIlxuIgorIk5vIGZpbGVzIHdlcmUgbW9kaWZpZWQgYnkgdGhpcyBjb21taXQgYW5kIGl0IHdhcyBub3QgYSBtZXJnZSBjb21taXQuXG4iCisiXG4iCisiQSByZXNjYW4gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHN0YXJ0ZWQgbm93LlxuIgorbXNnc3RyICIiCisiSW5nZW4gZW5kcmluZ2VyIHRpbCBpbm5zamVra2luZy5cbiIKKyJcbiIKKyJJbmdlbiBmaWxlciBibGUgZW5kcmV0IGF2IGRlbm5lIHJldmlzam9uZW4sIG9nIGRldCB2YXIgaWtrZSBlbiByZXZpc2pvbiBmcmEgIgorImVuIHNhbW1lbnNsw6VpbmcuXG4iCisiXG4iCisiRXQgbnl0dCBzw7hrIHZpbCBibGkgc3RhcnRldCBhdXRvbWF0aXNrLlxuIgorCisjOiBsaWIvY29tbWl0LnRjbDozMzkKK21zZ2lkICJObyBjaGFuZ2VzIHRvIGNvbW1pdC4iCittc2dzdHIgIkluZ2VuIGVuZHJpbmdlciB0aWwgaW5uc2Vra2luZy4iCisKKyM6IGxpYi9jb21taXQudGNsOjM1MworbXNnaWQgImNvbW1pdC10cmVlIGZhaWxlZDoiCittc2dzdHIgImNvbW1pdC10cmVlIGZlaWxldDoiCisKKyM6IGxpYi9jb21taXQudGNsOjM3MworbXNnaWQgInVwZGF0ZS1yZWYgZmFpbGVkOiIKK21zZ3N0ciAidXBkYXRlLXJlZiBmZWlsZXQ6IgorCisjOiBsaWIvY29tbWl0LnRjbDo0NjEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJDcmVhdGVkIGNvbW1pdCAlczogJXMiCittc2dzdHIgIk9wcHJldHRldCBpbm5zamVra2luZyAlczogJXMiCisKKyM6IGxpYi9jb25zb2xlLnRjbDo1OQorbXNnaWQgIldvcmtpbmcuLi4gcGxlYXNlIHdhaXQuLi4iCittc2dzdHIgIkpvYmJlci4uLiBWZW5ubGlnc3QgdmVudC4uLiIKKworIzogbGliL2NvbnNvbGUudGNsOjE4NgorbXNnaWQgIlN1Y2Nlc3MiCittc2dzdHIgIlN1a3Nlc3MiCisKKyM6IGxpYi9jb25zb2xlLnRjbDoyMDAKK21zZ2lkICJFcnJvcjogQ29tbWFuZCBGYWlsZWQiCittc2dzdHIgIkZlaWw6IEtvbW1hbmRvZW4gZmVpbGV0IgorCisjOiBsaWIvZGF0YWJhc2UudGNsOjQzCittc2dpZCAiTnVtYmVyIG9mIGxvb3NlIG9iamVjdHMiCittc2dzdHIgIkFudGFsbCBsw7hzZSBvYmpla3RlciIKKworIzogbGliL2RhdGFiYXNlLnRjbDo0NAorbXNnaWQgIkRpc2sgc3BhY2UgdXNlZCBieSBsb29zZSBvYmplY3RzIgorbXNnc3RyICJEaXNrcGxhc3MgYnJ1a3QgYXYgbMO4c2Ugb2JqZWt0ZXIiCisKKyM6IGxpYi9kYXRhYmFzZS50Y2w6NDUKK21zZ2lkICJOdW1iZXIgb2YgcGFja2VkIG9iamVjdHMiCittc2dzdHIgIkFudGFsbCBwYWtrZWRlIG9iamVrdGVyIgorCisjOiBsaWIvZGF0YWJhc2UudGNsOjQ2Cittc2dpZCAiTnVtYmVyIG9mIHBhY2tzIgorbXNnc3RyICJBbnRhbGwgcGFra2VyIgorCisjOiBsaWIvZGF0YWJhc2UudGNsOjQ3Cittc2dpZCAiRGlzayBzcGFjZSB1c2VkIGJ5IHBhY2tlZCBvYmplY3RzIgorbXNnc3RyICJEaXNrcGxhc3MgYnJ1a3QgYXYgcGFra2VkZSBvYmpla3RlciIKKworIzogbGliL2RhdGFiYXNlLnRjbDo0OAorbXNnaWQgIlBhY2tlZCBvYmplY3RzIHdhaXRpbmcgZm9yIHBydW5pbmciCittc2dzdHIgIlBha2tlZGUgb2JqZWt0ZXIgc29tIGF2dmVudGVyIGZqZXJuaW5nIgorCisjOiBsaWIvZGF0YWJhc2UudGNsOjQ5Cittc2dpZCAiR2FyYmFnZSBmaWxlcyIKK21zZ3N0ciAiQXZmYWxsc2ZpbGVyIgorCisjOiBsaWIvZGF0YWJhc2UudGNsOjcyCittc2dpZCAiQ29tcHJlc3NpbmcgdGhlIG9iamVjdCBkYXRhYmFzZSIKK21zZ3N0ciAiS29tcHJpbWVyZXIgb2JqZWt0ZGF0YWJhc2VuIgorCisjOiBsaWIvZGF0YWJhc2UudGNsOjgzCittc2dpZCAiVmVyaWZ5aW5nIHRoZSBvYmplY3QgZGF0YWJhc2Ugd2l0aCBmc2NrLW9iamVjdHMiCittc2dzdHIgIlZlcmlmaXNlcmVyIG9iamVrdGRhdGFiYXNlbiBtZWQgZnNjay1vYmplY3RzIgorCisjOiBsaWIvZGF0YWJhc2UudGNsOjEwOAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJUaGlzIHJlcG9zaXRvcnkgY3VycmVudGx5IGhhcyBhcHByb3hpbWF0ZWx5ICVpIGxvb3NlIG9iamVjdHMuXG4iCisiXG4iCisiVG8gbWFpbnRhaW4gb3B0aW1hbCBwZXJmb3JtYW5jZSBpdCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCB0aGF0IHlvdSBjb21wcmVzcyAiCisidGhlIGRhdGFiYXNlIHdoZW4gbW9yZSB0aGFuICVpIGxvb3NlIG9iamVjdHMgZXhpc3QuXG4iCisiXG4iCisiQ29tcHJlc3MgdGhlIGRhdGFiYXNlIG5vdz8iCittc2dzdHIgIiIKKyJEZXR0ZSBhcmtpdmV0IGlubmVob2xkZXIgb210cmVudCAlaSAnbMO4c2UnIG9iamVrdGVyLlxuIgorIlxuIgorIkZvciDDpSBzaWtyZSBlbiBvcHRpbWFsIHl0ZWxzZSBlciBkZXQgc3Rlcmt0IGFuYmVmYWx0IGF0IGR1IGtvbXByaW1lcmVyICIKKyJkYXRhYmFzZW4gbsOlciBkZXQgZXIgZmxlcmUgZW5uICVpICdsw7hzZScgb2JqZWt0ZXIgaSBkZW4uXG4iCisiXG4iCisiS29tcHJpbWVyZSBkYXRhYmFzZW4gbsOlPyIKKworIzogbGliL2RhdGUudGNsOjI1CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBkYXRlIGZyb20gR2l0OiAlcyIKK21zZ3N0ciAiVWd5bGRpZyBkYXRvIGZyYSBHaXQ6ICVzIgorCisjOiBsaWIvZGlmZi50Y2w6NTkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiTm8gZGlmZmVyZW5jZXMgZGV0ZWN0ZWQuXG4iCisiXG4iCisiJXMgaGFzIG5vIGNoYW5nZXMuXG4iCisiXG4iCisiVGhlIG1vZGlmaWNhdGlvbiBkYXRlIG9mIHRoaXMgZmlsZSB3YXMgdXBkYXRlZCBieSBhbm90aGVyIGFwcGxpY2F0aW9uLCBidXQgIgorInRoZSBjb250ZW50IHdpdGhpbiB0aGUgZmlsZSB3YXMgbm90IGNoYW5nZWQuXG4iCisiXG4iCisiQSByZXNjYW4gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHN0YXJ0ZWQgdG8gZmluZCBvdGhlciBmaWxlcyB3aGljaCBtYXkgaGF2ZSAiCisidGhlIHNhbWUgc3RhdGUuIgorbXNnc3RyICIiCisiSW5nZW4gZm9yYW5kcmluZ2VyIGZ1bm5ldC5cbiIKKyJcbiIKKyIlcyBoYXIgaW5nZW4gZW5kcmluZ2VyLlxuIgorIlxuIgorIlRpZHNzdGVtcGVsZXQgZm9yIGVuZHJpbmcgcMOlIGRlbm5lIGZpbGVuIGJsZSBvcHBkYXRlcnQgYXYgZW4gYW5uZW4gIgorIiBhcHBsaWthc2pvbiwgbWVuIGlubmhvbGRldCBlciB1ZW5kcmV0LlxuIgorIlxuIgorIkVuIGdqZW5ub21zw7hraW5nIHZpbCBuw6Ugc3RhcnRlIGF1dG9tYXRpc2sgZm9yIMOlIHNlIG9tIGFuZHJlIGZpbGVyIGhhciAiCisic3RhdHVzLiIKKworIzogbGliL2RpZmYudGNsOjk5CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiTG9hZGluZyBkaWZmIG9mICVzLi4uIgorbXNnc3RyICJMYXN0ZXIgaW5uIGZvcnNramVsbGVuZSBhdiAlcy4uLiIKKworIzogbGliL2RpZmYudGNsOjEyMAorbXNnaWQgIiIKKyJMT0NBTDogZGVsZXRlZFxuIgorIlJFTU9URTpcbiIKK21zZ3N0ciAiTE9LQUw6IHNsZXR0ZXRcbiIKKyJGSkVSTjpcbiIKKworIzogbGliL2RpZmYudGNsOjEyNQorbXNnaWQgIiIKKyJSRU1PVEU6IGRlbGV0ZWRcbiIKKyJMT0NBTDpcbiIKK21zZ3N0ciAiRkpFUk46IHNsZXR0ZXRcbiIKKyJMT0tBTDpcbiIKKworIzogbGliL2RpZmYudGNsOjEzMgorbXNnaWQgIkxPQ0FMOlxuIgorbXNnc3RyICJMT0tBTDpcbiIKKworIzogbGliL2RpZmYudGNsOjEzNQorbXNnaWQgIlJFTU9URTpcbiIKK21zZ3N0ciAiRkpFUk46XG4iCisKKyM6IGxpYi9kaWZmLnRjbDoxOTcgbGliL2RpZmYudGNsOjI5NgorIywgdGNsLWZvcm1hdAorbXNnaWQgIlVuYWJsZSB0byBkaXNwbGF5ICVzIgorbXNnc3RyICJLYW4gaWtrZSB2aXNlICVzIgorCisjOiBsaWIvZGlmZi50Y2w6MTk4Cittc2dpZCAiRXJyb3IgbG9hZGluZyBmaWxlOiIKK21zZ3N0ciAiRmVpbCB2ZWQgbGVzaW5nIGF2IGZpbDogJXMiCisKKyM6IGxpYi9kaWZmLnRjbDoyMDUKK21zZ2lkICJHaXQgUmVwb3NpdG9yeSAoc3VicHJvamVjdCkiCittc2dzdHIgIkdpdC1hcmtpdiAodW5kZXJwcm9zamVrdCkiCisKKyM6IGxpYi9kaWZmLnRjbDoyMTcKK21zZ2lkICIqIEJpbmFyeSBmaWxlIChub3Qgc2hvd2luZyBjb250ZW50KS4iCittc2dzdHIgIiogQmluw6ZyZmlsICh2aXNlciBpa2tlIGlubmhvbGQpIgorCisjOiBsaWIvZGlmZi50Y2w6MjIyCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIiogVW50cmFja2VkIGZpbGUgaXMgJWQgYnl0ZXMuXG4iCisiKiBTaG93aW5nIG9ubHkgZmlyc3QgJWQgYnl0ZXMuXG4iCittc2dzdHIgIiIKKyIqIFVzcG9yZXQgZmlsIGVyICVkIGJ5dGVzLlxuIgorIiogVmlzZXIgYmFyZSAlZCBmw7hyc3RlIGJ5dGVzLlxuIgorCisjOiBsaWIvZGlmZi50Y2w6MjI4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiogVW50cmFja2VkIGZpbGUgY2xpcHBlZCBoZXJlIGJ5ICVzLlxuIgorIiogVG8gc2VlIHRoZSBlbnRpcmUgZmlsZSwgdXNlIGFuIGV4dGVybmFsIGVkaXRvci5cbiIKK21zZ3N0ciAiIgorIlxuIgorIiogVXNwb3JlZGUgZmlsZXIga2xpcHBldCBoZXIgYXYgJXMuXG4iCisiKiBGb3Igw6Ugc2UgaGVsZSBmaWxlbiwgYnJ1ayBldCBla3N0ZXJudCByZWRpZ2VyaW5nc3Zlcmt0w7h5LlxuIgorCisjOiBsaWIvZGlmZi50Y2w6NDM2Cittc2dpZCAiRmFpbGVkIHRvIHVuc3RhZ2Ugc2VsZWN0ZWQgaHVuay4iCittc2dzdHIgIkt1bm5lIGlra2UgZmplcm5lIGRlbiB2YWxndGUgZGVsZW4gZnJhIGlubnNqZWtraW5nc2vDuGVuLiIKKworIzogbGliL2RpZmYudGNsOjQ0MworbXNnaWQgIkZhaWxlZCB0byBzdGFnZSBzZWxlY3RlZCBodW5rLiIKK21zZ3N0ciAiS3VubmUgaWtrZSBsZWdnZSB0aWwgZGVuIHZhbGd0ZSBkZWxlbiBpIGlubnNqZWtraW5nc2vDuGVuLiIKKworIzogbGliL2RpZmYudGNsOjUwOQorbXNnaWQgIkZhaWxlZCB0byB1bnN0YWdlIHNlbGVjdGVkIGxpbmUuIgorbXNnc3RyICJLdW5uZSBpa2tlIGZqZXJuZSBkZW4gdmFsZ3RlIGxpbmplbiBmcmEgaW5uc2pla2tpbmdza8O4ZW4uIgorCisjOiBsaWIvZGlmZi50Y2w6NTE3Cittc2dpZCAiRmFpbGVkIHRvIHN0YWdlIHNlbGVjdGVkIGxpbmUuIgorbXNnc3RyICJLdW5uZSBpa2tlIGxlZ2dlIHRpbCBkZW4gdmFsZ3RlIGxpbmplbiBpIGlubnNqZWtraW5nc2vDuGVuLiIKKworIzogbGliL2VuY29kaW5nLnRjbDo0NDMKK21zZ2lkICJEZWZhdWx0IgorbXNnc3RyICJTdGFuZGFyZCIKKworIzogbGliL2VuY29kaW5nLnRjbDo0NDgKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJTeXN0ZW0gKCVzKSIKK21zZ3N0ciAiU3lzdGVtZXRzICglcykiCisKKyM6IGxpYi9lbmNvZGluZy50Y2w6NDU5IGxpYi9lbmNvZGluZy50Y2w6NDY1Cittc2dpZCAiT3RoZXIiCittc2dzdHIgIkFuZHJlIgorCisjOiBsaWIvZXJyb3IudGNsOjIwIGxpYi9lcnJvci50Y2w6MTE0Cittc2dpZCAiZXJyb3IiCittc2dzdHIgImZlaWwiCisKKyM6IGxpYi9lcnJvci50Y2w6MzYKK21zZ2lkICJ3YXJuaW5nIgorbXNnc3RyICJhZHZhcnNlbCIKKworIzogbGliL2Vycm9yLnRjbDo5NAorbXNnaWQgIllvdSBtdXN0IGNvcnJlY3QgdGhlIGFib3ZlIGVycm9ycyBiZWZvcmUgY29tbWl0dGluZy4iCittc2dzdHIgIkR1IG3DpSByZXR0ZSBkZSBvdmVuc3TDpWVuZGUgZmVpbGVuZSBmw7hyIGlubnNqZWtraW5nLiIKKworIzogbGliL2luZGV4LnRjbDo2Cittc2dpZCAiVW5hYmxlIHRvIHVubG9jayB0aGUgaW5kZXguIgorbXNnc3RyICJLdW5uZSBpa2tlIGzDpXNlIG9wcCBpbmRleGVuLiIKKworIzogbGliL2luZGV4LnRjbDoxNQorbXNnaWQgIkluZGV4IEVycm9yIgorbXNnc3RyICJGZWlsIHDDpSBpbmRleCIKKworIzogbGliL2luZGV4LnRjbDoyMQorbXNnaWQgIiIKKyJVcGRhdGluZyB0aGUgR2l0IGluZGV4IGZhaWxlZC4gIEEgcmVzY2FuIHdpbGwgYmUgYXV0b21hdGljYWxseSBzdGFydGVkIHRvICIKKyJyZXN5bmNocm9uaXplIGdpdC1ndWkuIgorbXNnc3RyICIiCisiT3BwZGF0ZXJpbmcgYXYgR2l0J3MgaW5kZXggbWlzbHlrdGVzLiBFdCBueXR0IHPDuGsgdmlsIGJsaSBzdGFydGV0IGZvciDDpSAiCisicmVzeW5rcm9uaXNlcmUgZ2l0LWd1aS4iCisKKyM6IGxpYi9pbmRleC50Y2w6MjcKK21zZ2lkICJDb250aW51ZSIKK21zZ3N0ciAiRm9ydHNldHQiCisKKyM6IGxpYi9pbmRleC50Y2w6MzEKK21zZ2lkICJVbmxvY2sgSW5kZXgiCittc2dzdHIgIkzDpXMgb3BwIGluZGV4IgorCisjOiBsaWIvaW5kZXgudGNsOjI4NworIywgdGNsLWZvcm1hdAorbXNnaWQgIlVuc3RhZ2luZyAlcyBmcm9tIGNvbW1pdCIKK21zZ3N0ciAiRmplcm5lciAlcyBmcmEgaW5uc2pla2tpbmdza8O4ZW4iCisKKyM6IGxpYi9pbmRleC50Y2w6MzI2Cittc2dpZCAiUmVhZHkgdG8gY29tbWl0LiIKK21zZ3N0ciAiS2xhciB0aWwgaW5uc2pla2tpbmcuIgorCisjOiBsaWIvaW5kZXgudGNsOjMzOQorIywgdGNsLWZvcm1hdAorbXNnaWQgIkFkZGluZyAlcyIKK21zZ3N0ciAiTGVnZ2VyIHRpbCAlcyIKKworIzogbGliL2luZGV4LnRjbDozOTYKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJSZXZlcnQgY2hhbmdlcyBpbiBmaWxlICVzPyIKK21zZ3N0ciAiUmV2ZXJ0ZXIgZW5kcmluZ2VuZSBpIGZpbGVuICVzPyIKKworIzogbGliL2luZGV4LnRjbDozOTgKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJSZXZlcnQgY2hhbmdlcyBpbiB0aGVzZSAlaSBmaWxlcz8iCittc2dzdHIgIlJldmVydGVyIGVuZHJpbmdlbmUgaSBkaXNzZSAlaSBmaWxlbmU/IgorCisjOiBsaWIvaW5kZXgudGNsOjQwNgorbXNnaWQgIkFueSB1bnN0YWdlZCBjaGFuZ2VzIHdpbGwgYmUgcGVybWFuZW50bHkgbG9zdCBieSB0aGUgcmV2ZXJ0LiIKK21zZ3N0ciAiRW5kcmluZ2VyIHNvbSBpa2tlIGxpZ2dlciBpIGlubnNqZWtraW5nc2vDuGVuIHZpbCBibGkgdGFwdCBhdiBkZW5uZSAiCisicmV2ZXJ0ZXJpbmdlbiIKKworIzogbGliL2luZGV4LnRjbDo0MDkKK21zZ2lkICJEbyBOb3RoaW5nIgorbXNnc3RyICJJa2tlIGdqw7hyIG5vZSIKKworIzogbGliL2luZGV4LnRjbDo0MjcKK21zZ2lkICJSZXZlcnRpbmcgc2VsZWN0ZWQgZmlsZXMiCittc2dzdHIgIlJldmVydGVyZXIgdmFsZ3RlIGZpbGVyIgorCisjOiBsaWIvaW5kZXgudGNsOjQzMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlJldmVydGluZyAlcyIKK21zZ3N0ciAiUmV2ZXJ0ZXJlciAlcyIKKworIzogbGliL21lcmdlLnRjbDoxMworbXNnaWQgIiIKKyJDYW5ub3QgbWVyZ2Ugd2hpbGUgYW1lbmRpbmcuXG4iCisiXG4iCisiWW91IG11c3QgZmluaXNoIGFtZW5kaW5nIHRoaXMgY29tbWl0IGJlZm9yZSBzdGFydGluZyBhbnkgdHlwZSBvZiBtZXJnZS5cbiIKK21zZ3N0ciAiIgorIkt1bm5lIGlra2Ugc2zDpSBzYW1tZW4gdW5kZXIgdXR2aWRlbHNlLlxuIgorIlxuIgorIkR1IG3DpSBmw7hyc3QgZnVsbGbDuHJlIHV0dmlkZWxzZW4gYXYgZGVubmUgcmV2aXNqb25lbiBmw7hyIGR1IGthbiBzdGFydGUgZW4gIgorInNhbW1lbnNsw6VpbmcuXG4iCisKKyM6IGxpYi9tZXJnZS50Y2w6MjcKK21zZ2lkICIiCisiTGFzdCBzY2FubmVkIHN0YXRlIGRvZXMgbm90IG1hdGNoIHJlcG9zaXRvcnkgc3RhdGUuXG4iCisiXG4iCisiQW5vdGhlciBHaXQgcHJvZ3JhbSBoYXMgbW9kaWZpZWQgdGhpcyByZXBvc2l0b3J5IHNpbmNlIHRoZSBsYXN0IHNjYW4uICBBICIKKyJyZXNjYW4gbXVzdCBiZSBwZXJmb3JtZWQgYmVmb3JlIGEgbWVyZ2UgY2FuIGJlIHBlcmZvcm1lZC5cbiIKKyJcbiIKKyJUaGUgcmVzY2FuIHdpbGwgYmUgYXV0b21hdGljYWxseSBzdGFydGVkIG5vdy5cbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvbWVyZ2UudGNsOjQ1CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIllvdSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhIGNvbmZsaWN0ZWQgbWVyZ2UuXG4iCisiXG4iCisiRmlsZSAlcyBoYXMgbWVyZ2UgY29uZmxpY3RzLlxuIgorIlxuIgorIllvdSBtdXN0IHJlc29sdmUgdGhlbSwgc3RhZ2UgdGhlIGZpbGUsIGFuZCBjb21taXQgdG8gY29tcGxldGUgdGhlIGN1cnJlbnQgIgorIm1lcmdlLiAgT25seSB0aGVuIGNhbiB5b3UgYmVnaW4gYW5vdGhlciBtZXJnZS5cbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvbWVyZ2UudGNsOjU1CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIllvdSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhIGNoYW5nZS5cbiIKKyJcbiIKKyJGaWxlICVzIGlzIG1vZGlmaWVkLlxuIgorIlxuIgorIllvdSBzaG91bGQgY29tcGxldGUgdGhlIGN1cnJlbnQgY29tbWl0IGJlZm9yZSBzdGFydGluZyBhIG1lcmdlLiAgRG9pbmcgc28gIgorIndpbGwgaGVscCB5b3UgYWJvcnQgYSBmYWlsZWQgbWVyZ2UsIHNob3VsZCB0aGUgbmVlZCBhcmlzZS5cbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvbWVyZ2UudGNsOjEwNworIywgdGNsLWZvcm1hdAorbXNnaWQgIiVzIG9mICVzIgorbXNnc3RyICIlcyBhdiAlcyIKKworIzogbGliL21lcmdlLnRjbDoxMjAKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJNZXJnaW5nICVzIGFuZCAlcy4uLiIKK21zZ3N0ciAiU2zDpXIgc2FtbWVuICVzIG9nICVzIgorCisjOiBsaWIvbWVyZ2UudGNsOjEzMQorbXNnaWQgIk1lcmdlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIgorbXNnc3RyICJWZWxseWtrZXQgc2FtbWVuc2zDpWluZyBmdWxsZsO4cnQuIgorCisjOiBsaWIvbWVyZ2UudGNsOjEzMworbXNnaWQgIk1lcmdlIGZhaWxlZC4gIENvbmZsaWN0IHJlc29sdXRpb24gaXMgcmVxdWlyZWQuIgorbXNnc3RyICJTYW1tZW5zbMOlaW5nIGZlaWxldC4gSMOlbmR0ZXJpbmcgYXYga29uZmxpa3RlbiBrcmV2ZXMuIgorCisjOiBsaWIvbWVyZ2UudGNsOjE1OAorIywgdGNsLWZvcm1hdAorbXNnaWQgIk1lcmdlIEludG8gJXMiCittc2dzdHIgIlNsw6Ugc2FtbWVuIGlubiBpICVzIgorCisjOiBsaWIvbWVyZ2UudGNsOjE3NworbXNnaWQgIlJldmlzaW9uIFRvIE1lcmdlIgorbXNnc3RyICJSZXZpc2pvbiB0aWwgc2FtbWVuc2zDpWluZyIKKworIzogbGliL21lcmdlLnRjbDoyMTIKK21zZ2lkICIiCisiQ2Fubm90IGFib3J0IHdoaWxlIGFtZW5kaW5nLlxuIgorIlxuIgorIllvdSBtdXN0IGZpbmlzaCBhbWVuZGluZyB0aGlzIGNvbW1pdC5cbiIKK21zZ3N0ciAiIgorIkthbiBpa2tlIGF2YnJ5dGUgdW5kZXIgdXR2aWRlbHNlIGF2IHJldmlzam9uLlxuIgorIlxuIgorIkR1IG3DpSBmdWxsZsO4cmUgdXR2aWRlbHNlbiBhdiBkZW5uZSByZXZpc2pvbmVuLlxuIgorCisjOiBsaWIvbWVyZ2UudGNsOjIyMgorbXNnaWQgIiIKKyJBYm9ydCBtZXJnZT9cbiIKKyJcbiIKKyJBYm9ydGluZyB0aGUgY3VycmVudCBtZXJnZSB3aWxsIGNhdXNlICpBTEwqIHVuY29tbWl0dGVkIGNoYW5nZXMgdG8gYmUgbG9zdC5cbiIKKyJcbiIKKyJDb250aW51ZSB3aXRoIGFib3J0aW5nIHRoZSBjdXJyZW50IG1lcmdlPyIKK21zZ3N0ciAiIgorIkF2YnJ5dCBzYW1tZW5zbMOlaW5nP1xuIgorIlxuIgorIkF2YnJ5dGluZyBhdiBww6Vnw6VlbmRlIHNhbW1lbnNsw6VpbmcgdmlsIGbDuHJlIHRpbCBhdCAqYWxsZSogZW5kcmluZ2VyIHNvbSBpa2tlICIKKyIgZXIgc2pla2tldCBpbm4sIHZpbCBnw6UgdGFwdC5cbiIKKyJcbiIKKyJGb3J0c2V0dGUgbWVkIMOlIGF2YnJ5dGUgZGVuIHDDpWfDpWVuZGUgc2FtbWVuc2zDpWluZ2VuPyIKKworIzogbGliL21lcmdlLnRjbDoyMjgKK21zZ2lkICIiCisiUmVzZXQgY2hhbmdlcz9cbiIKKyJcbiIKKyJSZXNldHRpbmcgdGhlIGNoYW5nZXMgd2lsbCBjYXVzZSAqQUxMKiB1bmNvbW1pdHRlZCBjaGFuZ2VzIHRvIGJlIGxvc3QuXG4iCisiXG4iCisiQ29udGludWUgd2l0aCByZXNldHRpbmcgdGhlIGN1cnJlbnQgY2hhbmdlcz8iCittc2dzdHIgIiIKKyJOdWxsc3RpbGwgZW5kcmluZ2VyP1xuIgorIlxuIgorIk51bGxzdGlsbGluZyBhdiBlbmRyaW5nZXIgdmlsIGbDuHJlIHRpbCBhdCAqYWxsZSogZW5kcmluZ2VyIHNvbSBpa2tlIGVyICIKKyJzamVra2V0IGlubiBnw6VyIHRhcHQuXG4iCisiXG4iCisiRm9ydHNldHRlIG1lZCBudWxsc3RpbGxpbmcgYXYgZW5kcmluZ2VyPyIKKworIzogbGliL21lcmdlLnRjbDoyMzkKK21zZ2lkICJBYm9ydGluZyIKK21zZ3N0ciAiQXZicnl0ZXIiCisKKyM6IGxpYi9tZXJnZS50Y2w6MjM5Cittc2dpZCAiZmlsZXMgcmVzZXQiCittc2dzdHIgImZpbGVyIHRpbGJha2VzdGlsdCIKKworIzogbGliL21lcmdlLnRjbDoyNjcKK21zZ2lkICJBYm9ydCBmYWlsZWQuIgorbXNnc3RyICJBdmJyeXRpbmcgZmVpbGV0LiIKKworIzogbGliL21lcmdlLnRjbDoyNjkKK21zZ2lkICJBYm9ydCBjb21wbGV0ZWQuICBSZWFkeS4iCittc2dzdHIgIkF2YnJ5dGluZyBmdWxsZsO4cnQuIEtsYXIuIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDo4Cittc2dpZCAiRm9yY2UgcmVzb2x1dGlvbiB0byB0aGUgYmFzZSB2ZXJzaW9uPyIKK21zZ3N0ciAiVHZpbmcgaMOlbmR0ZXJpbmcgdGlsIG9wcHJpbm5lbGlnIHZlcnNqb24/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDo5Cittc2dpZCAiRm9yY2UgcmVzb2x1dGlvbiB0byB0aGlzIGJyYW5jaD8iCittc2dzdHIgIlR2aW5nIGjDpW5kdGVyaW5nIGkgZGVubmUgZ3JlbmVuPyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MTAKK21zZ2lkICJGb3JjZSByZXNvbHV0aW9uIHRvIHRoZSBvdGhlciBicmFuY2g/IgorbXNnc3RyICJUdmluZyBow6VuZHRlcmluZyBpIGRlbiBhbmRyZSBncmVuZW4/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoxNAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJOb3RlIHRoYXQgdGhlIGRpZmYgc2hvd3Mgb25seSBjb25mbGljdGluZyBjaGFuZ2VzLlxuIgorIlxuIgorIiVzIHdpbGwgYmUgb3ZlcndyaXR0ZW4uXG4iCisiXG4iCisiVGhpcyBvcGVyYXRpb24gY2FuIGJlIHVuZG9uZSBvbmx5IGJ5IHJlc3RhcnRpbmcgdGhlIG1lcmdlLiIKK21zZ3N0ciAiIgorIk1lcmsgZGVnIGF0IGVuZHJpbmdzdmlzbmluZ2VuIGt1biB2aXNlciBtb3RzdHJpZGVuZGUgZW5kcmluZ2VyLlxuIgorIlxuIgorIiVzIHZpbCBibGkgb3ZlcnNrcmV2ZXQuXG4iCisiXG4iCisiRGVubmUgb3BlcmFzam9uZW4ga2FuIGt1biBibGkgYW5ncmV0IHZlZCDDpSBzdGFydGUgc2FtbWVuc2zDpWluZ2VuIHDDpSBueS4iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjQ1CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRmlsZSAlcyBzZWVtcyB0byBoYXZlIHVucmVzb2x2ZWQgY29uZmxpY3RzLCBzdGlsbCBzdGFnZT8iCittc2dzdHIgIkZpbGVuICVzIHNlciB1dCB0aWwgw6UgaGEgdWzDuHN0ZSBrb25mbGlrdGVyLCBza2FsIGZpbGVuIGxpa2V2ZWwga8O4ZXM/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDo2MAorIywgdGNsLWZvcm1hdAorbXNnaWQgIkFkZGluZyByZXNvbHV0aW9uIGZvciAlcyIKK21zZ3N0ciAiTGVnZ2VyIHRpbCBsw7hzbmluZ2UgcMOlIGtvbmZsaWt0IGZvciAlcyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MTQxCittc2dpZCAiQ2Fubm90IHJlc29sdmUgZGVsZXRpb24gb3IgbGluayBjb25mbGljdHMgdXNpbmcgYSB0b29sIgorbXNnc3RyICIiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjE0NgorbXNnaWQgIkNvbmZsaWN0IGZpbGUgZG9lcyBub3QgZXhpc3QiCittc2dzdHIgIktvbmZsaWt0ZmlsIGVrc2lzdGVyZXIgaWtrZSIKKworIzogbGliL21lcmdldG9vbC50Y2w6MjY0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiTm90IGEgR1VJIG1lcmdlIHRvb2w6ICclcyciCittc2dzdHIgIiIKKworIzogbGliL21lcmdldG9vbC50Y2w6MjY4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVW5zdXBwb3J0ZWQgbWVyZ2UgdG9vbCAnJXMnIgorbXNnc3RyICIiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjMwMworbXNnaWQgIk1lcmdlIHRvb2wgaXMgYWxyZWFkeSBydW5uaW5nLCB0ZXJtaW5hdGUgaXQ/IgorbXNnc3RyICIiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjMyMworIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJFcnJvciByZXRyaWV2aW5nIHZlcnNpb25zOlxuIgorIiVzIgorbXNnc3RyICIiCisiS3VubmUgaWtrZSBoZW50ZSB2ZXJzam9uZXI6XG4iCisiJXMiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjM0MworIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZCBub3Qgc3RhcnQgdGhlIG1lcmdlIHRvb2w6XG4iCisiXG4iCisiJXMiCittc2dzdHIgIiIKKworIzogbGliL21lcmdldG9vbC50Y2w6MzQ3Cittc2dpZCAiUnVubmluZyBtZXJnZSB0b29sLi4uIgorbXNnc3RyICIiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjM3NSBsaWIvbWVyZ2V0b29sLnRjbDozODMKK21zZ2lkICJNZXJnZSB0b29sIGZhaWxlZC4iCittc2dzdHIgIiIKKworIzogbGliL29wdGlvbi50Y2w6MTEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGdsb2JhbCBlbmNvZGluZyAnJXMnIgorbXNnc3RyICIiCisKKyM6IGxpYi9vcHRpb24udGNsOjE5CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByZXBvIGVuY29kaW5nICclcyciCittc2dzdHIgIiIKKworIzogbGliL29wdGlvbi50Y2w6MTE3Cittc2dpZCAiUmVzdG9yZSBEZWZhdWx0cyIKK21zZ3N0ciAiR2plbm5vcHByZXR0IHN0YW5kYXJkdmVyZGllciIKKworIzogbGliL29wdGlvbi50Y2w6MTIxCittc2dpZCAiU2F2ZSIKK21zZ3N0ciAiTGFncmUiCisKKyM6IGxpYi9vcHRpb24udGNsOjEzMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIiVzIFJlcG9zaXRvcnkiCittc2dzdHIgIiVzIGFya2l2IgorCisjOiBsaWIvb3B0aW9uLnRjbDoxMzIKK21zZ2lkICJHbG9iYWwgKEFsbCBSZXBvc2l0b3JpZXMpIgorbXNnc3RyICJHbG9iYWx0IChhbGxlIGFya2l2KSIKKworIzogbGliL29wdGlvbi50Y2w6MTM4Cittc2dpZCAiVXNlciBOYW1lIgorbXNnc3RyICJOYXZuIgorCisjOiBsaWIvb3B0aW9uLnRjbDoxMzkKK21zZ2lkICJFbWFpbCBBZGRyZXNzIgorbXNnc3RyICJFcG9zdC1hZHJlc3NlIgorCisjOiBsaWIvb3B0aW9uLnRjbDoxNDEKK21zZ2lkICJTdW1tYXJpemUgTWVyZ2UgQ29tbWl0cyIKK21zZ3N0ciAiT3Bwc3VtbWVyIGlubnNqZWtraW5nZXIgZnJhIHNhbW1lbnNsw6VpbmdlciIKKworIzogbGliL29wdGlvbi50Y2w6MTQyCittc2dpZCAiTWVyZ2UgVmVyYm9zaXR5IgorbXNnc3RyICJEZXRhbGplbml2w6UgcMOlIHNhbW1lbnNsw6VpbmciCisKKyM6IGxpYi9vcHRpb24udGNsOjE0MworbXNnaWQgIlNob3cgRGlmZnN0YXQgQWZ0ZXIgTWVyZ2UiCittc2dzdHIgIlZpcyBlbmRyaW5nc3N0YXRpc3Rpa2sgZXR0ZXIgc2FtbWVuc2zDpWluZyIKKworIzogbGliL29wdGlvbi50Y2w6MTQ0Cittc2dpZCAiVXNlIE1lcmdlIFRvb2wiCittc2dzdHIgIkJydWsgc2FtbWVuc2zDpWluZ3N2ZXJrdMO4eSIKKworIzogbGliL29wdGlvbi50Y2w6MTQ2Cittc2dpZCAiVHJ1c3QgRmlsZSBNb2RpZmljYXRpb24gVGltZXN0YW1wcyIKK21zZ3N0ciAiU3RvbCBww6UgZmlsZXJzIHRpZCBmb3IgZW5kcmluZyIKKworIzogbGliL29wdGlvbi50Y2w6MTQ3Cittc2dpZCAiUHJ1bmUgVHJhY2tpbmcgQnJhbmNoZXMgRHVyaW5nIEZldGNoIgorbXNnc3RyICIiCisKKyM6IGxpYi9vcHRpb24udGNsOjE0OAorbXNnaWQgIk1hdGNoIFRyYWNraW5nIEJyYW5jaGVzIgorbXNnc3RyICIiCisKKyM6IGxpYi9vcHRpb24udGNsOjE0OQorbXNnaWQgIkJsYW1lIENvcHkgT25seSBPbiBDaGFuZ2VkIEZpbGVzIgorbXNnc3RyICIiCisKKyM6IGxpYi9vcHRpb24udGNsOjE1MAorbXNnaWQgIk1pbmltdW0gTGV0dGVycyBUbyBCbGFtZSBDb3B5IE9uIgorbXNnc3RyICIiCisKKyM6IGxpYi9vcHRpb24udGNsOjE1MQorbXNnaWQgIkJsYW1lIEhpc3RvcnkgQ29udGV4dCBSYWRpdXMgKGRheXMpIgorbXNnc3RyICIiCisKKyM6IGxpYi9vcHRpb24udGNsOjE1MgorbXNnaWQgIk51bWJlciBvZiBEaWZmIENvbnRleHQgTGluZXMiCittc2dzdHIgIkFudGFsbCBsaW5qZXIgc2FtbWVuaGVuZ2VuZGUgZW5kcmluZ2VyIgorCisjOiBsaWIvb3B0aW9uLnRjbDoxNTMKK21zZ2lkICJDb21taXQgTWVzc2FnZSBUZXh0IFdpZHRoIgorbXNnc3RyICJUZWtzdGJyZWRkZSBmb3IgdmluZHUgdGlsIGlubnNqZWtraW5nc21lbGRpbmdlciIKKworIzogbGliL29wdGlvbi50Y2w6MTU0Cittc2dpZCAiTmV3IEJyYW5jaCBOYW1lIFRlbXBsYXRlIgorbXNnc3RyICJNYWwgZm9yIG5hdm4gcMOlIG55ZSBncmVuZXIiCisKKyM6IGxpYi9vcHRpb24udGNsOjE1NQorbXNnaWQgIkRlZmF1bHQgRmlsZSBDb250ZW50cyBFbmNvZGluZyIKK21zZ3N0ciAiU3RhbmRhcmQgdGVrc3RlbmtvZGluZyBmb3IgaW5uaG9sZCBpIGZpbGVyIgorCisjOiBsaWIvb3B0aW9uLnRjbDoyMDMKK21zZ2lkICJDaGFuZ2UiCittc2dzdHIgIkVuZHJlIgorCisjOiBsaWIvb3B0aW9uLnRjbDoyMzAKK21zZ2lkICJTcGVsbGluZyBEaWN0aW9uYXJ5OiIKK21zZ3N0ciAiU3RhdmVib2tvcmRsaXN0ZXI6IgorCisjOiBsaWIvb3B0aW9uLnRjbDoyNTQKK21zZ2lkICJDaGFuZ2UgRm9udCIKK21zZ3N0ciAiRW5kcmUgc2tyaWZ0dHlwZSIKKworIzogbGliL29wdGlvbi50Y2w6MjU4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQ2hvb3NlICVzIgorbXNnc3RyICJWZWxnICVzIgorCisjOiBsaWIvb3B0aW9uLnRjbDoyNjQKK21zZ2lkICJwdC4iCittc2dzdHIgInB0LiIKKworIzogbGliL29wdGlvbi50Y2w6Mjc4Cittc2dpZCAiUHJlZmVyZW5jZXMiCittc2dzdHIgIkVnZW5za2FwZXIiCisKKyM6IGxpYi9vcHRpb24udGNsOjMxNAorbXNnaWQgIkZhaWxlZCB0byBjb21wbGV0ZWx5IHNhdmUgb3B0aW9uczoiCittc2dzdHIgIkt1bm5lIGlra2UgbGFncmUgYWx0ZXJuYXRpdjoiCisKKyM6IGxpYi9yZW1vdGUudGNsOjE2MworbXNnaWQgIlJlbW92ZSBSZW1vdGUiCittc2dzdHIgIkZqZXJuIGZqZXJuYXJraXYiCisKKyM6IGxpYi9yZW1vdGUudGNsOjE2OAorbXNnaWQgIlBydW5lIGZyb20iCittc2dzdHIgIkZqZXJuIGZyYSIKKworIzogbGliL3JlbW90ZS50Y2w6MTczCittc2dpZCAiRmV0Y2ggZnJvbSIKK21zZ3N0ciAiSGVudCBmcmEiCisKKyM6IGxpYi9yZW1vdGUudGNsOjIxNQorbXNnaWQgIlB1c2ggdG8iCittc2dzdHIgIlNlbmQgdGlsIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTkKK21zZ2lkICJBZGQgUmVtb3RlIgorbXNnc3RyICJMZWdnIHRpbCBmamVybmFya2l2IgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MjQKK21zZ2lkICJBZGQgTmV3IFJlbW90ZSIKK21zZ3N0ciAiTGVnZyB0aWwgbnl0dCBmamVybmFya2l2IgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MjggbGliL3Rvb2xzX2RsZy50Y2w6MzYKK21zZ2lkICJBZGQiCittc2dzdHIgIkxlZ2cgdGlsIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MzcKK21zZ2lkICJSZW1vdGUgRGV0YWlscyIKK21zZ3N0ciAiRGV0YWxqZXIgZm9yIGZqZXJuYXJraXYiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo1MAorbXNnaWQgIkxvY2F0aW9uOiIKK21zZ3N0ciAiTG9rYXNqb246IgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NjIKK21zZ2lkICJGdXJ0aGVyIEFjdGlvbiIKK21zZ3N0ciAiVmlkZXJlIGhhbmRsaW5nIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NjUKK21zZ2lkICJGZXRjaCBJbW1lZGlhdGVseSIKK21zZ3N0ciAiSGVudCB1bWlkZGVsYmFydCIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjcxCittc2dpZCAiSW5pdGlhbGl6ZSBSZW1vdGUgUmVwb3NpdG9yeSBhbmQgUHVzaCIKK21zZ3N0ciAiSW5pdHNpYWxpc2VyIG9nIHNlbmQgdGlsIGZqZXJuYXJraXYiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo3NworbXNnaWQgIkRvIE5vdGhpbmcgRWxzZSBOb3ciCittc2dzdHIgIklra2UgZ2rDuHIgbWVyIG7DpSIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjEwMQorbXNnaWQgIlBsZWFzZSBzdXBwbHkgYSByZW1vdGUgbmFtZS4iCittc2dzdHIgIlZlbm5saWdzdCBhbmdpIGV0IG5hdm4gZm9yIGZqZXJuYXJraXZldC4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMTQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICInJXMnIGlzIG5vdCBhbiBhY2NlcHRhYmxlIHJlbW90ZSBuYW1lLiIKK21zZ3N0ciAiJyVzJyBlciBpa2tlIGV0IHRpbGxhdHQgbmF2biBmb3IgZXQgZmplcm5hcmtpdi4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMjUKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gYWRkIHJlbW90ZSAnJXMnIG9mIGxvY2F0aW9uICclcycuIgorbXNnc3RyICJLdW5uZSBpa2tlIGxlZ2dlIHRpbCBmamVybmFya2l2ZXQgJyVzJyBww6UgJyVzJy4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMzMgbGliL3RyYW5zcG9ydC50Y2w6NgorIywgdGNsLWZvcm1hdAorbXNnaWQgImZldGNoICVzIgorbXNnc3RyICJoZW50ICVzIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTM0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRmV0Y2hpbmcgdGhlICVzIgorbXNnc3RyICJIZW50ZXIgJXMiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxNTcKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJEbyBub3Qga25vdyBob3cgdG8gaW5pdGlhbGl6ZSByZXBvc2l0b3J5IGF0IGxvY2F0aW9uICclcycuIgorbXNnc3RyICJWZXQgaWtrZSBodm9yZGFuIGFya2l2IHDDpSAnJXMnIHNrYWwgb3BwcmV0dGVzLiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjE2MyBsaWIvdHJhbnNwb3J0LnRjbDoyNSBsaWIvdHJhbnNwb3J0LnRjbDo3MQorIywgdGNsLWZvcm1hdAorbXNnaWQgInB1c2ggJXMiCittc2dzdHIgInNlbmQgJXMiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxNjQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHVwIHRoZSAlcyAoYXQgJXMpIgorbXNnc3RyICJJbml0c2lhbGlzZXJlciAlcyAocMOlICVzKSIKKworIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDoyOSBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjM0Cittc2dpZCAiRGVsZXRlIEJyYW5jaCBSZW1vdGVseSIKK21zZ3N0ciAiRmplcm4gZ3JlbiBmcmEgZmplcm5hcmtpdiIKKworIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo0NworbXNnaWQgIkZyb20gUmVwb3NpdG9yeSIKK21zZ3N0ciAiRnJhIGFya2l2IgorCisjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjUwIGxpYi90cmFuc3BvcnQudGNsOjEyMworbXNnaWQgIlJlbW90ZToiCittc2dzdHIgIkZqZXJuYXJraXY6IgorCisjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjY2IGxpYi90cmFuc3BvcnQudGNsOjEzOAorbXNnaWQgIkFyYml0cmFyeSBMb2NhdGlvbjoiCittc2dzdHIgIlZpbGvDpXJsaWcgbG9rYXNqb246IgorCisjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjg0Cittc2dpZCAiQnJhbmNoZXMiCittc2dzdHIgIkdyZW5lciIKKworIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDoxMDkKK21zZ2lkICJEZWxldGUgT25seSBJZiIKK21zZ3N0ciAiU2xldHQga3VuIGh2aXMiCisKKyM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6MTExCittc2dpZCAiTWVyZ2VkIEludG86IgorbXNnc3RyICJTbMOldHQgc2FtbWVuIGk6IgorCisjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjExOQorbXNnaWQgIkFsd2F5cyAoRG8gbm90IHBlcmZvcm0gbWVyZ2UgY2hlY2tzKSIKK21zZ3N0ciAiQWxsdGlkIChJa2tlIHV0ZsO4ciBzYW1tZW5zbMOlaW5nc2tvbnRyb2xsKSIKKworIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDoxNTIKK21zZ2lkICJBIGJyYW5jaCBpcyByZXF1aXJlZCBmb3IgJ01lcmdlZCBJbnRvJy4iCittc2dzdHIgIkVuIGdyZW4ga3JldmVzIGZvciAnc2FtbWVuc2zDpWluZyBpJy4iCisKKyM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6MTg0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBmb2xsb3dpbmcgYnJhbmNoZXMgYXJlIG5vdCBjb21wbGV0ZWx5IG1lcmdlZCBpbnRvICVzOlxuIgorIlxuIgorIiAtICVzIgorbXNnc3RyICIiCisiRsO4bGdlbmRlIGdyZW5lciBlciBpa2tlIGZ1bGxlc3RlbmRpZyBzYW1tZW5zbMOldHQgbWVkICVzOlxuIgorIlxuIgorIiAtICVzIgorCisjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjE4OQorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJPbmUgb3IgbW9yZSBvZiB0aGUgbWVyZ2UgdGVzdHMgZmFpbGVkIGJlY2F1c2UgeW91IGhhdmUgbm90IGZldGNoZWQgdGhlICIKKyJuZWNlc3NhcnkgY29tbWl0cy4gIFRyeSBmZXRjaGluZyBmcm9tICVzIGZpcnN0LiIKK21zZ3N0ciAiIgorIkVuIGVsbGVyIGZsZXJlIGF2IHRlc3RlbmUgc29tIGJsaXIga2rDuHJ0IHVuZGVyIHNhbW1lbnNsw6VpbmcgZmVpbGV0IGZvcmRpIGR1IgorImlra2UgaGFyIGhlbnRldCBpbm4gZGUgbsO4ZHZlbmRpZ2UgaW5uc2pla2tpbmdlbmUuIFByw7h2IMOlIGhlbnQgZGlzc2UgZnJhICVzIgorImbDuHJzdCIKKworIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDoyMDcKK21zZ2lkICJQbGVhc2Ugc2VsZWN0IG9uZSBvciBtb3JlIGJyYW5jaGVzIHRvIGRlbGV0ZS4iCittc2dzdHIgIlZlbGcgZW4gZWxsZXIgZmxlcmUgZ3JlbmVyIHNvbSBza2FsIGZqZXJuZXMuIgorCisjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjIxNgorbXNnaWQgIiIKKyJSZWNvdmVyaW5nIGRlbGV0ZWQgYnJhbmNoZXMgaXMgZGlmZmljdWx0LlxuIgorIlxuIgorIkRlbGV0ZSB0aGUgc2VsZWN0ZWQgYnJhbmNoZXM/IgorbXNnc3RyICIiCisiR2plbm9wcHJldHRpbmcgYXYgZmplcm5lZGUgZ3JlbmVyIGVyIHZhbnNrZWxpZy5cbiIKKyJcbiIKKyJGamVybiBkZW4gbWVya2VkZSBncmVuZW4/IgorCisjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjIyNgorIywgdGNsLWZvcm1hdAorbXNnaWQgIkRlbGV0aW5nIGJyYW5jaGVzIGZyb20gJXMiCittc2dzdHIgIkZqZXJuZXIgZ3JlbmVuZSBmcmEgJXMiCisKKyM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6Mjg2Cittc2dpZCAiTm8gcmVwb3NpdG9yeSBzZWxlY3RlZC4iCittc2dzdHIgIkluZ2VuIGFya2l2IHZhbGd0LiIKKworIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDoyOTEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJTY2FubmluZyAlcy4uLiIKK21zZ3N0ciAiU8O4a2VyICVzLi4uIgorCisjOiBsaWIvc2VhcmNoLnRjbDoyMQorbXNnaWQgIkZpbmQ6IgorbXNnc3RyICJGaW5uOiIKKworIzogbGliL3NlYXJjaC50Y2w6MjMKK21zZ2lkICJOZXh0IgorbXNnc3RyICJOZXN0ZSIKKworIzogbGliL3NlYXJjaC50Y2w6MjQKK21zZ2lkICJQcmV2IgorbXNnc3RyICJGb3JyaWdlIgorCisjOiBsaWIvc2VhcmNoLnRjbDoyNQorbXNnaWQgIkNhc2UtU2Vuc2l0aXZlIgorbXNnc3RyICJTa2lsbGVyIHDDpSBzdG9yZSBvZyBzbcOlIGJva3N0YXZlciIKKworIzogbGliL3Nob3J0Y3V0LnRjbDoyMCBsaWIvc2hvcnRjdXQudGNsOjYxCittc2dpZCAiQ2Fubm90IHdyaXRlIHNob3J0Y3V0OiIKK21zZ3N0ciAiS2FuIGlra2Ugb3BwcmV0dGUgc25hcnZlaToiCisKKyM6IGxpYi9zaG9ydGN1dC50Y2w6MTM2Cittc2dpZCAiQ2Fubm90IHdyaXRlIGljb246IgorbXNnc3RyICJLYW4gaWtrZSBvcHByZXR0ZSBpa29uOiIKKworIzogbGliL3NwZWxsY2hlY2sudGNsOjU3Cittc2dpZCAiVW5zdXBwb3J0ZWQgc3BlbGwgY2hlY2tlciIKK21zZ3N0ciAiU3RhdmVrb250cm9sbGVyZW4gZXIgaWtrZSBzdMO4dHRldCIKKworIzogbGliL3NwZWxsY2hlY2sudGNsOjY1Cittc2dpZCAiU3BlbGwgY2hlY2tpbmcgaXMgdW5hdmFpbGFibGUiCittc2dzdHIgIlN0YXZla29udHJvbGwgZXIgaWtrZSB0aWxnamVuZ2VsaWciCisKKyM6IGxpYi9zcGVsbGNoZWNrLnRjbDo2OAorbXNnaWQgIkludmFsaWQgc3BlbGwgY2hlY2tpbmcgY29uZmlndXJhdGlvbiIKK21zZ3N0ciAiVWd5bGRpZyBzdGF2ZWtvbnRyb2xsLWtvbmZpZ3VyYXNqb24iCisKKyM6IGxpYi9zcGVsbGNoZWNrLnRjbDo3MAorIywgdGNsLWZvcm1hdAorbXNnaWQgIlJldmVydGluZyBkaWN0aW9uYXJ5IHRvICVzLiIKK21zZ3N0ciAiUmV2ZXJ0ZXJlciBvcmRib2sgdGlsICVzLiIKKworIzogbGliL3NwZWxsY2hlY2sudGNsOjczCittc2dpZCAiU3BlbGwgY2hlY2tlciBzaWxlbnRseSBmYWlsZWQgb24gc3RhcnR1cCIKK21zZ3N0ciAiU3RhdmVrb250cm9sbGVuIGZlaWxldCBzdGlsbGUgdW5kZXIgb3Bwc3RhcnQiCisKKyM6IGxpYi9zcGVsbGNoZWNrLnRjbDo4MAorbXNnaWQgIlVucmVjb2duaXplZCBzcGVsbCBjaGVja2VyIgorbXNnc3RyICJTdGF2ZWtvbnRyb2xsZXJlbiBlciB1a2plbnQiCisKKyM6IGxpYi9zcGVsbGNoZWNrLnRjbDoxODYKK21zZ2lkICJObyBTdWdnZXN0aW9ucyIKK21zZ3N0ciAiSW5nZW4gZm9yc2xhZyIKKworIzogbGliL3NwZWxsY2hlY2sudGNsOjM4OAorbXNnaWQgIlVuZXhwZWN0ZWQgRU9GIGZyb20gc3BlbGwgY2hlY2tlciIKK21zZ3N0ciAiVXZlbnRldCBzbHV0dCBww6UgZmlsZW4gZnJhIHN0YXZla29udHJvbGxlbiIKKworIzogbGliL3NwZWxsY2hlY2sudGNsOjM5MgorbXNnaWQgIlNwZWxsIENoZWNrZXIgRmFpbGVkIgorbXNnc3RyICJTdGF2ZWtvbnRyb2xsIG1pc2x5a3RlcyIKKworIzogbGliL3NzaGtleS50Y2w6MzEKK21zZ2lkICJObyBrZXlzIGZvdW5kLiIKK21zZ3N0ciAiSW5nZW4gbsO4a2xlciBmdW5uZXQuIgorCisjOiBsaWIvc3Noa2V5LnRjbDozNAorIywgdGNsLWZvcm1hdAorbXNnaWQgIkZvdW5kIGEgcHVibGljIGtleSBpbjogJXMiCittc2dzdHIgIkZ1bm5ldCBlbiBvZmZlbnRsaWcgbsO4a2tlbCBpOiAlcyIKKworIzogbGliL3NzaGtleS50Y2w6NDAKK21zZ2lkICJHZW5lcmF0ZSBLZXkiCittc2dzdHIgIkdlbmVyZXIgbsO4a2tlbCIKKworIzogbGliL3NzaGtleS50Y2w6NTYKK21zZ2lkICJDb3B5IFRvIENsaXBib2FyZCIKK21zZ3N0ciAiS29waWVyIHRpbCB1dGtsaXBwc3RhdmxlbiIKKworIzogbGliL3NzaGtleS50Y2w6NzAKK21zZ2lkICJZb3VyIE9wZW5TU0ggUHVibGljIEtleSIKK21zZ3N0ciAiRGluIG9mZmVudGxpZ2UgT3BlblNTSC1uw7hra2VsIgorCisjOiBsaWIvc3Noa2V5LnRjbDo3OAorbXNnaWQgIkdlbmVyYXRpbmcuLi4iCittc2dzdHIgIkdlbmVyZXJlci4uLiIKKworIzogbGliL3NzaGtleS50Y2w6ODQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiQ291bGQgbm90IHN0YXJ0IHNzaC1rZXlnZW46XG4iCisiXG4iCisiJXMiCittc2dzdHIgIiIKKyJLdW5uZSBpa2tlIHN0YXJ0ZSBzc2gta2V5Z2VuOlxuIgorIlxuIgorIiVzIgorCisjOiBsaWIvc3Noa2V5LnRjbDoxMTEKK21zZ2lkICJHZW5lcmF0aW9uIGZhaWxlZC4iCittc2dzdHIgIkdlbmVyZXJpbmcgZmVpbGV0LiIKKworIzogbGliL3NzaGtleS50Y2w6MTE4Cittc2dpZCAiR2VuZXJhdGlvbiBzdWNjZWRlZCwgYnV0IG5vIGtleXMgZm91bmQuIgorbXNnc3RyICJHZW5lcmVyaW5nIHZlbGx5a2tldCwgbWVuIGluZ2VuIG7DuGtsZXIgZXIgZnVubmV0LiIKKworIzogbGliL3NzaGtleS50Y2w6MTIxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiWW91ciBrZXkgaXMgaW46ICVzIgorbXNnc3RyICJOw7hra2VsZW4gZGluIGxpZ2dlciBpOiAlcyIKKworIzogbGliL3N0YXR1c19iYXIudGNsOjgzCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiJXMgLi4uICUqaSBvZiAlKmkgJXMgKCUzaSUlKSIKK21zZ3N0ciAiJXMgLi4uICUqaSBhdiAlKmkgJXMgKCUzaSUlKSIKKworIzogbGliL3Rvb2xzLnRjbDo3NQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlJ1bm5pbmcgJXMgcmVxdWlyZXMgYSBzZWxlY3RlZCBmaWxlLiIKK21zZ3N0ciAiw4Uga2rDuHJlICVzIGtyZXZlciBhdCBlbiBmaWwgZXIgdmFsZ3QiCisKKyM6IGxpYi90b29scy50Y2w6OTAKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcnVuICVzPyIKK21zZ3N0ciAiRXIgZHUgc2lra2VyIHDDpSBhdCBkdSB2aWwga2rDuHJlICVzPyIKKworIzogbGliL3Rvb2xzLnRjbDoxMTAKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJUb29sOiAlcyIKK21zZ3N0ciAiVmVya3TDuHk6ICVzIgorCisjOiBsaWIvdG9vbHMudGNsOjExMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlJ1bm5pbmc6ICVzIgorbXNnc3RyICJLasO4cmVyOiAlcyIKKworIzogbGliL3Rvb2xzLnRjbDoxNDkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJUb29sIGNvbXBsZXRlZCBzdWNjZXNmdWxseTogJXMiCittc2dzdHIgIlZlcmt0w7h5ZXQgYmxlIGZ1bGxmw7hydCBtZWQgc3Vrc2VzczogJXMiCisKKyM6IGxpYi90b29scy50Y2w6MTUxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVG9vbCBmYWlsZWQ6ICVzIgorbXNnc3RyICJWZXJrdMO4eSBmZWlsZXQ6ICVzIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoyMgorbXNnaWQgIkFkZCBUb29sIgorbXNnc3RyICJMZWdnIHRpbCB2ZXJrdMO4eSIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjgKK21zZ2lkICJBZGQgTmV3IFRvb2wgQ29tbWFuZCIKK21zZ3N0ciAiTGVnZyB0aWwgbnkgdmVya3TDuHlrb21tYW5kbyIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MzMKK21zZ2lkICJBZGQgZ2xvYmFsbHkiCittc2dzdHIgIkxlZ2cgdGlsIGdsb2JhbHQiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjQ1Cittc2dpZCAiVG9vbCBEZXRhaWxzIgorbXNnc3RyICJWZXJrdMO4eWRldGFsamVyIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo0OAorbXNnaWQgIlVzZSAnLycgc2VwYXJhdG9ycyB0byBjcmVhdGUgYSBzdWJtZW51IHRyZWU6IgorbXNnc3RyICJCcnVrICcvJy1zZXBhcmF0b3IgZm9yIMOlIGxhZ2UgdW5kZXJtZW55ZXI6IgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo2MQorbXNnaWQgIkNvbW1hbmQ6IgorbXNnc3RyICJLb21tYW5kbzoiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjc0Cittc2dpZCAiU2hvdyBhIGRpYWxvZyBiZWZvcmUgcnVubmluZyIKK21zZ3N0ciAiVmlzIGVuIGRpYWxvZyBmw7hyIHN0YXJ0IgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo4MAorbXNnaWQgIkFzayB0aGUgdXNlciB0byBzZWxlY3QgYSByZXZpc2lvbiAoc2V0cyAkUkVWSVNJT04pIgorbXNnc3RyICJTcMO4ciBicnVrZXJlbiBvbSDDpSB2ZWxnZSBlbiByZXZpc2pvbiAoc2V0dGVyICRSRVZJU0lPTikiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjg1Cittc2dpZCAiQXNrIHRoZSB1c2VyIGZvciBhZGRpdGlvbmFsIGFyZ3VtZW50cyAoc2V0cyAkQVJHUykiCittc2dzdHIgIlNww7hyIGJydWtlcmVuIGZvciB5dHRlcmxpZ2VyZSBwYXJhbXRlcmUgKHNldHRlciAkQVJHUykiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjkyCittc2dpZCAiRG9uJ3Qgc2hvdyB0aGUgY29tbWFuZCBvdXRwdXQgd2luZG93IgorbXNnc3RyICJJa2tlIHZpcyBrb21tYW5kb2VucyB1dGRhdGEgaSB2aW5kdWV0IgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo5NworbXNnaWQgIlJ1biBvbmx5IGlmIGEgZGlmZiBpcyBzZWxlY3RlZCAoJEZJTEVOQU1FIG5vdCBlbXB0eSkiCittc2dzdHIgIktqw7hyIGt1biBvbSBmb3Jza2plbGxlbmUgZXIgbWFya2VydCAoJEZJTEVOQU1FIGVyIGlra2UgdG9tKSIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTIxCittc2dpZCAiUGxlYXNlIHN1cHBseSBhIG5hbWUgZm9yIHRoZSB0b29sLiIKK21zZ3N0ciAiVmVubmxpZ3N0IGFuZ2kgZXQgbmF2biBmb3IgZGV0dGUgdmVya3TDuHlldC4iCisKKyM6IGxpYi90b29sc19kbGcudGNsOjEyOQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlRvb2wgJyVzJyBhbHJlYWR5IGV4aXN0cy4iCittc2dzdHIgIlZlcmt0w7h5ZXQgJyVzJyBla3Npc3RlcmVyIGFsbGVyZWRlLiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTUxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkIG5vdCBhZGQgdG9vbDpcbiIKKyIlcyIKK21zZ3N0ciAiIgorIkt1bm5lIGlra2UgbGVnZ2UgdGlsIHZlcmt0w7h5ZXQ6XG4iCisiJXMiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjE5MAorbXNnaWQgIlJlbW92ZSBUb29sIgorbXNnc3RyICJGamVybiB2ZXJrdMO4eWV0IgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoxOTYKK21zZ2lkICJSZW1vdmUgVG9vbCBDb21tYW5kcyIKK21zZ3N0ciAiRmplcm4gdmVya3TDuHlza29tbWFuZG9lbiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjAwCittc2dpZCAiUmVtb3ZlIgorbXNnc3RyICJGamVybiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjM2Cittc2dpZCAiKEJsdWUgZGVub3RlcyByZXBvc2l0b3J5LWxvY2FsIHRvb2xzKSIKK21zZ3N0ciAiKEJsdWUgYW5naXIgbG9rYWxlIHZlcmt0w7h5IHRpbCBhcmtpdmV0KSIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6Mjk3CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiUnVuIENvbW1hbmQ6ICVzIgorbXNnc3RyICJLasO4ciBrb21tYW5kbzogJXMiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjMxMQorbXNnaWQgIkFyZ3VtZW50cyIKK21zZ3N0ciAiQXJndW1lbnRlciIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MzQ4Cittc2dpZCAiT0siCittc2dzdHIgIk9LIgorCisjOiBsaWIvdHJhbnNwb3J0LnRjbDo3CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRmV0Y2hpbmcgbmV3IGNoYW5nZXMgZnJvbSAlcyIKK21zZ3N0ciAiSGVudGVyIG55ZSBlbmRyaW5nZXIgZnJhICVzIgorCisjOiBsaWIvdHJhbnNwb3J0LnRjbDoxOAorIywgdGNsLWZvcm1hdAorbXNnaWQgInJlbW90ZSBwcnVuZSAlcyIKK21zZ3N0ciAic2xldHQgZmplcm5hcmtpdiAlcyIKKworIzogbGliL3RyYW5zcG9ydC50Y2w6MTkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJQcnVuaW5nIHRyYWNraW5nIGJyYW5jaGVzIGRlbGV0ZWQgZnJvbSAlcyIKK21zZ3N0ciAiRmpybmVyIHNwb3JpbmcgYXYgZ3JlbmVyIHNsZXR0ZXQgZnJhICVzIgorCisjOiBsaWIvdHJhbnNwb3J0LnRjbDoyNgorIywgdGNsLWZvcm1hdAorbXNnaWQgIlB1c2hpbmcgY2hhbmdlcyB0byAlcyIKK21zZ3N0ciAiU2VuZGVyIGVuZHJpbmdlciB0aWwgJXMiCisKKyM6IGxpYi90cmFuc3BvcnQudGNsOjcyCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiUHVzaGluZyAlcyAlcyB0byAlcyIKK21zZ3N0ciAiU2VuZGVyICVzICVzIHRpbCAlcyIKKworIzogbGliL3RyYW5zcG9ydC50Y2w6ODkKK21zZ2lkICJQdXNoIEJyYW5jaGVzIgorbXNnc3RyICJTZW5kIGdyZW5lciIKKworIzogbGliL3RyYW5zcG9ydC50Y2w6MTAzCittc2dpZCAiU291cmNlIEJyYW5jaGVzIgorbXNnc3RyICJLaWxkZWdyZW5lciIKKworIzogbGliL3RyYW5zcG9ydC50Y2w6MTIwCittc2dpZCAiRGVzdGluYXRpb24gUmVwb3NpdG9yeSIKK21zZ3N0ciAiRGVzdGluYXNqb25zYXJraXYiCisKKyM6IGxpYi90cmFuc3BvcnQudGNsOjE1OAorbXNnaWQgIlRyYW5zZmVyIE9wdGlvbnMiCittc2dzdHIgIk92ZXJmw7hyaW5nc2FsdGVybmF0aXZlciIKKworIzogbGliL3RyYW5zcG9ydC50Y2w6MTYwCittc2dpZCAiRm9yY2Ugb3ZlcndyaXRlIGV4aXN0aW5nIGJyYW5jaCAobWF5IGRpc2NhcmQgY2hhbmdlcykiCittc2dzdHIgIlR2aW5nIG92ZXJza3Jpdm5pbmcgYXYgZWtzaXN0ZXJlbmRlIGdyZW4gKGthbiBmb3JrYXN0ZSBlbmRyaW5nZXIpIgorCisjOiBsaWIvdHJhbnNwb3J0LnRjbDoxNjQKK21zZ2lkICJVc2UgdGhpbiBwYWNrIChmb3Igc2xvdyBuZXR3b3JrIGNvbm5lY3Rpb25zKSIKK21zZ3N0ciAiQnJ1ayB0eW5uZSBwYWtrZXIgKGZvciB0cmVnZXJlIG5ldHR2ZXJrc3RpbGtvYmxpbmdlcikiCisKKyM6IGxpYi90cmFuc3BvcnQudGNsOjE2OAorbXNnaWQgIkluY2x1ZGUgdGFncyIKK21zZ3N0ciAiSW5rbHVkZXIgdGFnZ2VyIgpkaWZmIC0tZ2l0IGEvZ2l0LWd1aS9wby9zdi5wbyBiL2dpdC1ndWkvcG8vc3YucG8KaW5kZXggMDE5NmJhOC4uMTY3NjU0YyAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9wby9zdi5wbworKysgYi9naXQtZ3VpL3BvL3N2LnBvCkBAIC0xLDQ4ICsxLDQ4IEBACiAjIFN3ZWRpc2ggdHJhbnNsYXRpb24gb2YgZ2l0LWd1aS4KLSMgQ29weXJpZ2h0IChDKSAyMDA3IFNoYXduIFBlYXJjZSwgZXQgYWwuCisjIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFNoYXduIFBlYXJjZSwgZXQgYWwuCiAjIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBsaWNlbnNlIGFzIHRoZSBnaXQtZ3VpIHBhY2thZ2UuCiAjCi0jIFBldGVyIEthcmxzc29uIDxwZXRlckBzb2Z0d29sdmVzLnBwLnNlPiwgMjAwNy0yMDA4LgorIyBQZXRlciBLcmVmdGluZyA8cGV0ZXJAc29mdHdvbHZlcy5wcC5zZT4sIDIwMDctMjAwOC4KICMgTWlrYWVsIE1hZ251c3NvbiA8bWlrYWNodUBnbWFpbC5jb20+LCAyMDA4LgogbXNnaWQgIiIKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogc3ZcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMDgtMDgtMDMgMDE6MzQrMDIwMFxuIgotIlBPLVJldmlzaW9uLURhdGU6IDIwMDgtMDgtMDMgMDE6NDUrMDIwMFxuIgotIkxhc3QtVHJhbnNsYXRvcjogTWlrYWVsIE1hZ251c3NvbiA8bWlrYWNodUBnbWFpbC5jb20+XG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMDgtMTItMDggMDg6MzEtMDgwMFxuIgorIlBPLVJldmlzaW9uLURhdGU6IDIwMDgtMTItMTAgMDk6NDkrMDEwMFxuIgorIkxhc3QtVHJhbnNsYXRvcjogUGV0ZXIgS3JlZnRpbmcgPHBldGVyQHNvZnR3b2x2ZXMucHAuc2U+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogU3dlZGlzaCA8dHAtc3ZAbGlzdG9yLnRwLXN2LnNlPlxuIgogIk1JTUUtVmVyc2lvbjogMS4wXG4iCiAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCiAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgogCi0jOiBnaXQtZ3VpLnNoOjQxIGdpdC1ndWkuc2g6Njg4IGdpdC1ndWkuc2g6NzAyIGdpdC1ndWkuc2g6NzE1IGdpdC1ndWkuc2g6Nzk4Ci0jOiBnaXQtZ3VpLnNoOjgxNworIzogZ2l0LWd1aS5zaDo0MSBnaXQtZ3VpLnNoOjczNyBnaXQtZ3VpLnNoOjc1MSBnaXQtZ3VpLnNoOjc2NCBnaXQtZ3VpLnNoOjg0NworIzogZ2l0LWd1aS5zaDo4NjYKIG1zZ2lkICJnaXQtZ3VpOiBmYXRhbCBlcnJvciIKIG1zZ3N0ciAiZ2l0LWd1aTogw7ZkZXNkaWdlcnQgZmVsIgogCi0jOiBnaXQtZ3VpLnNoOjY0NAorIzogZ2l0LWd1aS5zaDo2ODkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIGZvbnQgc3BlY2lmaWVkIGluICVzOiIKIG1zZ3N0ciAiT2dpbHRpZ3QgdGVja2Vuc25pdHQgYW5naXZldCBpICVzOiIKIAotIzogZ2l0LWd1aS5zaDo2NzQKKyM6IGdpdC1ndWkuc2g6NzIzCiBtc2dpZCAiTWFpbiBGb250IgogbXNnc3RyICJIdXZ1ZHRlY2tlbnNuaXR0IgogCi0jOiBnaXQtZ3VpLnNoOjY3NQorIzogZ2l0LWd1aS5zaDo3MjQKIG1zZ2lkICJEaWZmL0NvbnNvbGUgRm9udCIKIG1zZ3N0ciAiRGlmZi9rb25zb2x0ZWNrZW5zbml0dCIKIAotIzogZ2l0LWd1aS5zaDo2ODkKKyM6IGdpdC1ndWkuc2g6NzM4CiBtc2dpZCAiQ2Fubm90IGZpbmQgZ2l0IGluIFBBVEguIgogbXNnc3RyICJIaXR0YXIgaW50ZSBnaXQgaSBQQVRILiIKIAotIzogZ2l0LWd1aS5zaDo3MTYKKyM6IGdpdC1ndWkuc2g6NzY1CiBtc2dpZCAiQ2Fubm90IHBhcnNlIEdpdCB2ZXJzaW9uIHN0cmluZzoiCiBtc2dzdHIgIkthbiBpbnRlIHRvbGthIHZlcnNpb25zc3Ryw6RuZyBmcsOlbiBHaXQ6IgogCi0jOiBnaXQtZ3VpLnNoOjczNAorIzogZ2l0LWd1aS5zaDo3ODMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiR2l0IHZlcnNpb24gY2Fubm90IGJlIGRldGVybWluZWQuXG4iCkBAIC02MSwzODAgKzYxLDQ0OSBAQAogIlxuIgogIkFudGEgYXR0IFwiJXNcIiDDpHIgdmVyc2lvbiAxLjUuMD9cbiIKIAotIzogZ2l0LWd1aS5zaDo5NzIKKyM6IGdpdC1ndWkuc2g6MTA2MgogbXNnaWQgIkdpdCBkaXJlY3Rvcnkgbm90IGZvdW5kOiIKIG1zZ3N0ciAiR2l0LWthdGFsb2dlbiBoaXR0YWRlcyBpbnRlOiIKIAotIzogZ2l0LWd1aS5zaDo5NzkKKyM6IGdpdC1ndWkuc2g6MTA2OQogbXNnaWQgIkNhbm5vdCBtb3ZlIHRvIHRvcCBvZiB3b3JraW5nIGRpcmVjdG9yeToiCiBtc2dzdHIgIkthbiBpbnRlIGfDpSB0aWxsIGLDtnJqYW4gcMOlIGFyYmV0c2thdGFsb2dlbjoiCiAKLSM6IGdpdC1ndWkuc2g6OTg2CisjOiBnaXQtZ3VpLnNoOjEwNzYKIG1zZ2lkICJDYW5ub3QgdXNlIGZ1bm55IC5naXQgZGlyZWN0b3J5OiIKIG1zZ3N0ciAiS2FuIGludGUgYW52w6RuZGEgdW5kZXJsaWcgLmdpdC1rYXRhbG9nOiIKIAotIzogZ2l0LWd1aS5zaDo5OTEKKyM6IGdpdC1ndWkuc2g6MTA4MQogbXNnaWQgIk5vIHdvcmtpbmcgZGlyZWN0b3J5IgogbXNnc3RyICJJbmdlbiBhcmJldHNrYXRhbG9nIgogCi0jOiBnaXQtZ3VpLnNoOjExMzggbGliL2NoZWNrb3V0X29wLnRjbDozMDUKKyM6IGdpdC1ndWkuc2g6MTI0NyBsaWIvY2hlY2tvdXRfb3AudGNsOjMwNQogbXNnaWQgIlJlZnJlc2hpbmcgZmlsZSBzdGF0dXMuLi4iCiBtc2dzdHIgIlVwcGRhdGVyYXIgZmlsc3RhdHVzLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjExOTQKKyM6IGdpdC1ndWkuc2g6MTMwMwogbXNnaWQgIlNjYW5uaW5nIGZvciBtb2RpZmllZCBmaWxlcyAuLi4iCiBtc2dzdHIgIlPDtmtlciBlZnRlciDDpG5kcmFkZSBmaWxlci4uLiIKIAotIzogZ2l0LWd1aS5zaDoxMzY5IGxpYi9icm93c2VyLnRjbDoyNDYKKyM6IGdpdC1ndWkuc2g6MTM2NworbXNnaWQgIkNhbGxpbmcgcHJlcGFyZS1jb21taXQtbXNnIGhvb2suLi4iCittc2dzdHIgIiIKKyJBbnJvcGFyIGtyb2tlbiBmw7ZyIGbDtnJiZXJlZGVsc2UgYXYgaW5jaGVja25pbmdzbWVkZGVsYW5kZSAocHJlcGFyZS1jb21taXQtIgorIm1zZykuLi4iCisKKyM6IGdpdC1ndWkuc2g6MTM4NAorbXNnaWQgIkNvbW1pdCBkZWNsaW5lZCBieSBwcmVwYXJlLWNvbW1pdC1tc2cgaG9vay4iCittc2dzdHIgIiIKKyJJbmNoZWNrbmluZ2VuIGF2dmlzYWRlcyBhdiBrcm9rZW4gZsO2ciBmw7ZyYmVyZWRlbHNlIGF2IGluY2hlY2tuaW5nc21lZGRlbGFuZGUgIgorIihwcmVwYXJlLWNvbW1pdC1tc2cpLiIKKworIzogZ2l0LWd1aS5zaDoxNTQyIGxpYi9icm93c2VyLnRjbDoyNDYKIG1zZ2lkICJSZWFkeS4iCiBtc2dzdHIgIktsYXIuIgogCi0jOiBnaXQtZ3VpLnNoOjE2MzUKKyM6IGdpdC1ndWkuc2g6MTgxOQogbXNnaWQgIlVubW9kaWZpZWQiCiBtc2dzdHIgIk9mw7Zyw6RuZHJhZGUiCiAKLSM6IGdpdC1ndWkuc2g6MTYzNworIzogZ2l0LWd1aS5zaDoxODIxCiBtc2dpZCAiTW9kaWZpZWQsIG5vdCBzdGFnZWQiCiBtc2dzdHIgIkbDtnLDpG5kcmFkZSwgZWoga8O2YWRlIgogCi0jOiBnaXQtZ3VpLnNoOjE2MzggZ2l0LWd1aS5zaDoxNjQzCisjOiBnaXQtZ3VpLnNoOjE4MjIgZ2l0LWd1aS5zaDoxODMwCiBtc2dpZCAiU3RhZ2VkIGZvciBjb21taXQiCiBtc2dzdHIgIkvDtmFkZSBmw7ZyIGluY2hlY2tuaW5nIgogCi0jOiBnaXQtZ3VpLnNoOjE2MzkgZ2l0LWd1aS5zaDoxNjQ0CisjOiBnaXQtZ3VpLnNoOjE4MjMgZ2l0LWd1aS5zaDoxODMxCiBtc2dpZCAiUG9ydGlvbnMgc3RhZ2VkIGZvciBjb21taXQiCiBtc2dzdHIgIkRlbGFyIGvDtmFkZSBmw7ZyIGluY2hlY2tuaW5nIgogCi0jOiBnaXQtZ3VpLnNoOjE2NDAgZ2l0LWd1aS5zaDoxNjQ1CisjOiBnaXQtZ3VpLnNoOjE4MjQgZ2l0LWd1aS5zaDoxODMyCiBtc2dpZCAiU3RhZ2VkIGZvciBjb21taXQsIG1pc3NpbmciCiBtc2dzdHIgIkvDtmFkZSBmw7ZyIGluY2hlY2tuaW5nLCBzYWtuYWRlIgogCi0jOiBnaXQtZ3VpLnNoOjE2NDIKKyM6IGdpdC1ndWkuc2g6MTgyNgorbXNnaWQgIkZpbGUgdHlwZSBjaGFuZ2VkLCBub3Qgc3RhZ2VkIgorbXNnc3RyICJGaWx0eXAgw6RuZHJhZCwgZWoga8O2YWRlIgorCisjOiBnaXQtZ3VpLnNoOjE4MjcKK21zZ2lkICJGaWxlIHR5cGUgY2hhbmdlZCwgc3RhZ2VkIgorbXNnc3RyICJGaWx0eXAgw6RuZHJhZCwga8O2YWRlIgorCisjOiBnaXQtZ3VpLnNoOjE4MjkKIG1zZ2lkICJVbnRyYWNrZWQsIG5vdCBzdGFnZWQiCiBtc2dzdHIgIkVqIHNww6VyYWRlLCBlaiBrw7ZhZGUiCiAKLSM6IGdpdC1ndWkuc2g6MTY0NworIzogZ2l0LWd1aS5zaDoxODM0CiBtc2dpZCAiTWlzc2luZyIKIG1zZ3N0ciAiU2FrbmFkZSIKIAotIzogZ2l0LWd1aS5zaDoxNjQ4CisjOiBnaXQtZ3VpLnNoOjE4MzUKIG1zZ2lkICJTdGFnZWQgZm9yIHJlbW92YWwiCiBtc2dzdHIgIkvDtmFkZSBmw7ZyIGJvcnR0YWduaW5nIgogCi0jOiBnaXQtZ3VpLnNoOjE2NDkKKyM6IGdpdC1ndWkuc2g6MTgzNgogbXNnaWQgIlN0YWdlZCBmb3IgcmVtb3ZhbCwgc3RpbGwgcHJlc2VudCIKIG1zZ3N0ciAiS8O2YWRlIGbDtnIgYm9ydHRhZ25pbmcsIGZvcnRmYXJhbmRlIG7DpHJ2YXJhbmRlIgogCi0jOiBnaXQtZ3VpLnNoOjE2NTEgZ2l0LWd1aS5zaDoxNjUyIGdpdC1ndWkuc2g6MTY1MyBnaXQtZ3VpLnNoOjE2NTQKKyM6IGdpdC1ndWkuc2g6MTgzOCBnaXQtZ3VpLnNoOjE4MzkgZ2l0LWd1aS5zaDoxODQwIGdpdC1ndWkuc2g6MTg0MQorIzogZ2l0LWd1aS5zaDoxODQyIGdpdC1ndWkuc2g6MTg0MwogbXNnaWQgIlJlcXVpcmVzIG1lcmdlIHJlc29sdXRpb24iCiBtc2dzdHIgIktyw6R2ZXIga29uZmxpa3RoYW50ZXJpbmcgZWZ0ZXIgc2FtbWFuc2xhZ25pbmciCiAKLSM6IGdpdC1ndWkuc2g6MTY4OQorIzogZ2l0LWd1aS5zaDoxODc4CiBtc2dpZCAiU3RhcnRpbmcgZ2l0ay4uLiBwbGVhc2Ugd2FpdC4uLiIKIG1zZ3N0ciAiU3RhcnRhciBnaXRrLi4uIHbDpG50YS4uLiIKIAotIzogZ2l0LWd1aS5zaDoxNjk4CisjOiBnaXQtZ3VpLnNoOjE4ODcKIG1zZ2lkICJDb3VsZG4ndCBmaW5kIGdpdGsgaW4gUEFUSCIKIG1zZ3N0ciAiSGl0dGFyIGludGUgZ2l0ayBpIFBBVEguIgogCi0jOiBnaXQtZ3VpLnNoOjE5NDggbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozNgorIzogZ2l0LWd1aS5zaDoyMjgwIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzYKIG1zZ2lkICJSZXBvc2l0b3J5IgogbXNnc3RyICJBcmtpdiIKIAotIzogZ2l0LWd1aS5zaDoxOTQ5CisjOiBnaXQtZ3VpLnNoOjIyODEKIG1zZ2lkICJFZGl0IgogbXNnc3RyICJSZWRpZ2VyYSIKIAotIzogZ2l0LWd1aS5zaDoxOTUxIGxpYi9jaG9vc2VfcmV2LnRjbDo1NjEKKyM6IGdpdC1ndWkuc2g6MjI4MyBsaWIvY2hvb3NlX3Jldi50Y2w6NTYxCiBtc2dpZCAiQnJhbmNoIgogbXNnc3RyICJHcmVuIgogCi0jOiBnaXQtZ3VpLnNoOjE5NTQgbGliL2Nob29zZV9yZXYudGNsOjU0OAorIzogZ2l0LWd1aS5zaDoyMjg2IGxpYi9jaG9vc2VfcmV2LnRjbDo1NDgKIG1zZ2lkICJDb21taXRAQG5vdW4iCiBtc2dzdHIgIkluY2hlY2tuaW5nIgogCi0jOiBnaXQtZ3VpLnNoOjE5NTcgbGliL21lcmdlLnRjbDoxMjAgbGliL21lcmdlLnRjbDoxNDkgbGliL21lcmdlLnRjbDoxNjcKKyM6IGdpdC1ndWkuc2g6MjI4OSBsaWIvbWVyZ2UudGNsOjEyMSBsaWIvbWVyZ2UudGNsOjE1MCBsaWIvbWVyZ2UudGNsOjE2OAogbXNnaWQgIk1lcmdlIgogbXNnc3RyICJTbMOlIGlob3AiCiAKLSM6IGdpdC1ndWkuc2g6MTk1OCBsaWIvY2hvb3NlX3Jldi50Y2w6NTU3CisjOiBnaXQtZ3VpLnNoOjIyOTAgbGliL2Nob29zZV9yZXYudGNsOjU1NwogbXNnaWQgIlJlbW90ZSIKLW1zZ3N0ciAiRmrDpHJyIgorbXNnc3RyICJGasOkcnJhcmtpdiIKIAotIzogZ2l0LWd1aS5zaDoxOTY3CisjOiBnaXQtZ3VpLnNoOjIyOTMKK21zZ2lkICJUb29scyIKK21zZ3N0ciAiVmVya3R5ZyIKKworIzogZ2l0LWd1aS5zaDoyMzAyCittc2dpZCAiRXhwbG9yZSBXb3JraW5nIENvcHkiCittc2dzdHIgIlV0Zm9yc2thIGFyYmV0c2tvcGlhIgorCisjOiBnaXQtZ3VpLnNoOjIzMDcKIG1zZ2lkICJCcm93c2UgQ3VycmVudCBCcmFuY2gncyBGaWxlcyIKIG1zZ3N0ciAiQmzDpGRkcmEgaSBncmVuZW5zIGZpbGVyIgogCi0jOiBnaXQtZ3VpLnNoOjE5NzEKKyM6IGdpdC1ndWkuc2g6MjMxMQogbXNnaWQgIkJyb3dzZSBCcmFuY2ggRmlsZXMuLi4iCiBtc2dzdHIgIkJsw6RkZHJhIGZpbGVyIHDDpSBncmVuLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjE5NzYKKyM6IGdpdC1ndWkuc2g6MjMxNgogbXNnaWQgIlZpc3VhbGl6ZSBDdXJyZW50IEJyYW5jaCdzIEhpc3RvcnkiCiBtc2dzdHIgIlZpc3VhbGlzZXJhIGdyZW5lbnMgaGlzdG9yaWsiCiAKLSM6IGdpdC1ndWkuc2g6MTk4MAorIzogZ2l0LWd1aS5zaDoyMzIwCiBtc2dpZCAiVmlzdWFsaXplIEFsbCBCcmFuY2ggSGlzdG9yeSIKIG1zZ3N0ciAiVmlzdWFsaXNlcmEgYWxsYSBncmVuYXJzIGhpc3RvcmlrIgogCi0jOiBnaXQtZ3VpLnNoOjE5ODcKKyM6IGdpdC1ndWkuc2g6MjMyNwogIywgdGNsLWZvcm1hdAogbXNnaWQgIkJyb3dzZSAlcydzIEZpbGVzIgogbXNnc3RyICJCbMOkZGRyYSBpIGZpbGVyIGbDtnIgJXMiCiAKLSM6IGdpdC1ndWkuc2g6MTk4OQorIzogZ2l0LWd1aS5zaDoyMzI5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVmlzdWFsaXplICVzJ3MgSGlzdG9yeSIKIG1zZ3N0ciAiVmlzdWFsaXNlcmEgaGlzdG9yaWsgZsO2ciAlcyIKIAotIzogZ2l0LWd1aS5zaDoxOTk0IGxpYi9kYXRhYmFzZS50Y2w6MjcgbGliL2RhdGFiYXNlLnRjbDo2NworIzogZ2l0LWd1aS5zaDoyMzM0IGxpYi9kYXRhYmFzZS50Y2w6MjcgbGliL2RhdGFiYXNlLnRjbDo2NwogbXNnaWQgIkRhdGFiYXNlIFN0YXRpc3RpY3MiCiBtc2dzdHIgIkRhdGFiYXNzdGF0aXN0aWsiCiAKLSM6IGdpdC1ndWkuc2g6MTk5NyBsaWIvZGF0YWJhc2UudGNsOjM0CisjOiBnaXQtZ3VpLnNoOjIzMzcgbGliL2RhdGFiYXNlLnRjbDozNAogbXNnaWQgIkNvbXByZXNzIERhdGFiYXNlIgogbXNnc3RyICJLb21wcmltZXJhIGRhdGFiYXMiCiAKLSM6IGdpdC1ndWkuc2g6MjAwMAorIzogZ2l0LWd1aS5zaDoyMzQwCiBtc2dpZCAiVmVyaWZ5IERhdGFiYXNlIgogbXNnc3RyICJWZXJpZmllcmEgZGF0YWJhcyIKIAotIzogZ2l0LWd1aS5zaDoyMDA3IGdpdC1ndWkuc2g6MjAxMSBnaXQtZ3VpLnNoOjIwMTUgbGliL3Nob3J0Y3V0LnRjbDo3CisjOiBnaXQtZ3VpLnNoOjIzNDcgZ2l0LWd1aS5zaDoyMzUxIGdpdC1ndWkuc2g6MjM1NSBsaWIvc2hvcnRjdXQudGNsOjcKICM6IGxpYi9zaG9ydGN1dC50Y2w6MzkgbGliL3Nob3J0Y3V0LnRjbDo3MQogbXNnaWQgIkNyZWF0ZSBEZXNrdG9wIEljb24iCiBtc2dzdHIgIlNrYXBhIHNrcml2Ym9yZHNpa29uIgogCi0jOiBnaXQtZ3VpLnNoOjIwMjMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxNzcgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxODUKKyM6IGdpdC1ndWkuc2g6MjM2MyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjE4MyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjE5MQogbXNnaWQgIlF1aXQiCiBtc2dzdHIgIkF2c2x1dGEiCiAKLSM6IGdpdC1ndWkuc2g6MjAzMQorIzogZ2l0LWd1aS5zaDoyMzcxCiBtc2dpZCAiVW5kbyIKIG1zZ3N0ciAiw4VuZ3JhIgogCi0jOiBnaXQtZ3VpLnNoOjIwMzQKKyM6IGdpdC1ndWkuc2g6MjM3NAogbXNnaWQgIlJlZG8iCiBtc2dzdHIgIkfDtnIgb20iCiAKLSM6IGdpdC1ndWkuc2g6MjAzOCBnaXQtZ3VpLnNoOjI1NDUKKyM6IGdpdC1ndWkuc2g6MjM3OCBnaXQtZ3VpLnNoOjI5MzcKIG1zZ2lkICJDdXQiCiBtc2dzdHIgIktsaXBwIHV0IgogCi0jOiBnaXQtZ3VpLnNoOjIwNDEgZ2l0LWd1aS5zaDoyNTQ4IGdpdC1ndWkuc2g6MjYyMiBnaXQtZ3VpLnNoOjI3MTUKKyM6IGdpdC1ndWkuc2g6MjM4MSBnaXQtZ3VpLnNoOjI5NDAgZ2l0LWd1aS5zaDozMDE0IGdpdC1ndWkuc2g6MzA5NgogIzogbGliL2NvbnNvbGUudGNsOjY5CiBtc2dpZCAiQ29weSIKIG1zZ3N0ciAiS29waWVyYSIKIAotIzogZ2l0LWd1aS5zaDoyMDQ0IGdpdC1ndWkuc2g6MjU1MQorIzogZ2l0LWd1aS5zaDoyMzg0IGdpdC1ndWkuc2g6Mjk0MwogbXNnaWQgIlBhc3RlIgogbXNnc3RyICJLbGlzdHJhIGluIgogCi0jOiBnaXQtZ3VpLnNoOjIwNDcgZ2l0LWd1aS5zaDoyNTU0IGxpYi9icmFuY2hfZGVsZXRlLnRjbDoyNgorIzogZ2l0LWd1aS5zaDoyMzg3IGdpdC1ndWkuc2g6Mjk0NiBsaWIvYnJhbmNoX2RlbGV0ZS50Y2w6MjYKICM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6MzgKIG1zZ2lkICJEZWxldGUiCiBtc2dzdHIgIlRhIGJvcnQiCiAKLSM6IGdpdC1ndWkuc2g6MjA1MSBnaXQtZ3VpLnNoOjI1NTggZ2l0LWd1aS5zaDoyNzE5IGxpYi9jb25zb2xlLnRjbDo3MQorIzogZ2l0LWd1aS5zaDoyMzkxIGdpdC1ndWkuc2g6Mjk1MCBnaXQtZ3VpLnNoOjMxMDAgbGliL2NvbnNvbGUudGNsOjcxCiBtc2dpZCAiU2VsZWN0IEFsbCIKIG1zZ3N0ciAiTWFya2VyYSBhbGxhIgogCi0jOiBnaXQtZ3VpLnNoOjIwNjAKKyM6IGdpdC1ndWkuc2g6MjQwMAogbXNnaWQgIkNyZWF0ZS4uLiIKIG1zZ3N0ciAiU2thcGEuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MjA2NgorIzogZ2l0LWd1aS5zaDoyNDA2CiBtc2dpZCAiQ2hlY2tvdXQuLi4iCiBtc2dzdHIgIkNoZWNrYSB1dC4uLiIKIAotIzogZ2l0LWd1aS5zaDoyMDcyCisjOiBnaXQtZ3VpLnNoOjI0MTIKIG1zZ2lkICJSZW5hbWUuLi4iCiBtc2dzdHIgIkJ5dCBuYW1uLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIwNzcgZ2l0LWd1aS5zaDoyMTg3CisjOiBnaXQtZ3VpLnNoOjI0MTcKIG1zZ2lkICJEZWxldGUuLi4iCiBtc2dzdHIgIlRhIGJvcnQuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MjA4MgorIzogZ2l0LWd1aS5zaDoyNDIyCiBtc2dpZCAiUmVzZXQuLi4iCiBtc2dzdHIgIsOFdGVyc3TDpGxsLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIwOTQgZ2l0LWd1aS5zaDoyNDkxCi1tc2dpZCAiTmV3IENvbW1pdCIKLW1zZ3N0ciAiTnkgaW5jaGVja25pbmciCisjOiBnaXQtZ3VpLnNoOjI0MzIKK21zZ2lkICJEb25lIgorbXNnc3RyICJGw6RyZGlnIgogCi0jOiBnaXQtZ3VpLnNoOjIxMDIgZ2l0LWd1aS5zaDoyNDk4Ci1tc2dpZCAiQW1lbmQgTGFzdCBDb21taXQiCi1tc2dzdHIgIkzDpGdnIHRpbGwgZsO2cmVnw6VlbmRlIGluY2hlY2tuaW5nIgotCi0jOiBnaXQtZ3VpLnNoOjIxMTEgZ2l0LWd1aS5zaDoyNDU4IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6OTkKLW1zZ2lkICJSZXNjYW4iCi1tc2dzdHIgIlPDtmsgcMOlIG55dHQiCi0KLSM6IGdpdC1ndWkuc2g6MjExNwotbXNnaWQgIlN0YWdlIFRvIENvbW1pdCIKLW1zZ3N0ciAiS8O2YSBmw7ZyIGluY2hlY2tuaW5nIgotCi0jOiBnaXQtZ3VpLnNoOjIxMjMKLW1zZ2lkICJTdGFnZSBDaGFuZ2VkIEZpbGVzIFRvIENvbW1pdCIKLW1zZ3N0ciAiS8O2YSDDpG5kcmFkZSBmaWxlciBmw7ZyIGluY2hlY2tuaW5nIgotCi0jOiBnaXQtZ3VpLnNoOjIxMjkKLW1zZ2lkICJVbnN0YWdlIEZyb20gQ29tbWl0IgotbXNnc3RyICJUYSBib3J0IGZyw6VuIGluY2hlY2tuaW5nc2vDtiIKLQotIzogZ2l0LWd1aS5zaDoyMTM0IGxpYi9pbmRleC50Y2w6Mzk1Ci1tc2dpZCAiUmV2ZXJ0IENoYW5nZXMiCi1tc2dzdHIgIsOFdGVyc3TDpGxsIMOkbmRyaW5nYXIiCi0KLSM6IGdpdC1ndWkuc2g6MjE0MSBnaXQtZ3VpLnNoOjI3MDIKLW1zZ2lkICJTaG93IExlc3MgQ29udGV4dCIKLW1zZ3N0ciAiVmlzYSBtaW5kcmUgc2FtbWFuaGFuZyIKLQotIzogZ2l0LWd1aS5zaDoyMTQ1IGdpdC1ndWkuc2g6MjcwNgotbXNnaWQgIlNob3cgTW9yZSBDb250ZXh0IgotbXNnc3RyICJWaXNhIG1lciBzYW1tYW5oYW5nIgotCi0jOiBnaXQtZ3VpLnNoOjIxNTEgZ2l0LWd1aS5zaDoyNDcwIGdpdC1ndWkuc2g6MjU2OQotbXNnaWQgIlNpZ24gT2ZmIgotbXNnc3RyICJTa3JpdiB1bmRlciIKLQotIzogZ2l0LWd1aS5zaDoyMTU1IGdpdC1ndWkuc2g6MjQ3NAorIzogZ2l0LWd1aS5zaDoyNDM0CiBtc2dpZCAiQ29tbWl0QEB2ZXJiIgogbXNnc3RyICJDaGVja2EgaW4iCiAKLSM6IGdpdC1ndWkuc2g6MjE2NgorIzogZ2l0LWd1aS5zaDoyNDQzIGdpdC1ndWkuc2g6Mjg3OAorbXNnaWQgIk5ldyBDb21taXQiCittc2dzdHIgIk55IGluY2hlY2tuaW5nIgorCisjOiBnaXQtZ3VpLnNoOjI0NTEgZ2l0LWd1aS5zaDoyODg1Cittc2dpZCAiQW1lbmQgTGFzdCBDb21taXQiCittc2dzdHIgIkzDpGdnIHRpbGwgZsO2cmVnw6VlbmRlIGluY2hlY2tuaW5nIgorCisjOiBnaXQtZ3VpLnNoOjI0NjEgZ2l0LWd1aS5zaDoyODM5IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6OTkKK21zZ2lkICJSZXNjYW4iCittc2dzdHIgIlPDtmsgcMOlIG55dHQiCisKKyM6IGdpdC1ndWkuc2g6MjQ2NworbXNnaWQgIlN0YWdlIFRvIENvbW1pdCIKK21zZ3N0ciAiS8O2YSBmw7ZyIGluY2hlY2tuaW5nIgorCisjOiBnaXQtZ3VpLnNoOjI0NzMKK21zZ2lkICJTdGFnZSBDaGFuZ2VkIEZpbGVzIFRvIENvbW1pdCIKK21zZ3N0ciAiS8O2YSDDpG5kcmFkZSBmaWxlciBmw7ZyIGluY2hlY2tuaW5nIgorCisjOiBnaXQtZ3VpLnNoOjI0NzkKK21zZ2lkICJVbnN0YWdlIEZyb20gQ29tbWl0IgorbXNnc3RyICJUYSBib3J0IGZyw6VuIGluY2hlY2tuaW5nc2vDtiIKKworIzogZ2l0LWd1aS5zaDoyNDg0IGxpYi9pbmRleC50Y2w6NDEwCittc2dpZCAiUmV2ZXJ0IENoYW5nZXMiCittc2dzdHIgIsOFdGVyc3TDpGxsIMOkbmRyaW5nYXIiCisKKyM6IGdpdC1ndWkuc2g6MjQ5MSBnaXQtZ3VpLnNoOjMwODMKK21zZ2lkICJTaG93IExlc3MgQ29udGV4dCIKK21zZ3N0ciAiVmlzYSBtaW5kcmUgc2FtbWFuaGFuZyIKKworIzogZ2l0LWd1aS5zaDoyNDk1IGdpdC1ndWkuc2g6MzA4NworbXNnaWQgIlNob3cgTW9yZSBDb250ZXh0IgorbXNnc3RyICJWaXNhIG1lciBzYW1tYW5oYW5nIgorCisjOiBnaXQtZ3VpLnNoOjI1MDIgZ2l0LWd1aS5zaDoyODUyIGdpdC1ndWkuc2g6Mjk2MQorbXNnaWQgIlNpZ24gT2ZmIgorbXNnc3RyICJTa3JpdiB1bmRlciIKKworIzogZ2l0LWd1aS5zaDoyNTE4CiBtc2dpZCAiTG9jYWwgTWVyZ2UuLi4iCiBtc2dzdHIgIkxva2FsIHNhbW1hbnNsYWduaW5nLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIxNzEKKyM6IGdpdC1ndWkuc2g6MjUyMwogbXNnaWQgIkFib3J0IE1lcmdlLi4uIgogbXNnc3RyICJBdmJyeXQgc2FtbWFuc2xhZ25pbmcuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MjE4MworIzogZ2l0LWd1aS5zaDoyNTM1IGdpdC1ndWkuc2g6MjU3NQorbXNnaWQgIkFkZC4uLiIKK21zZ3N0ciAiTMOkZ2cgdGlsbC4uLiIKKworIzogZ2l0LWd1aS5zaDoyNTM5CiBtc2dpZCAiUHVzaC4uLiIKIG1zZ3N0ciAiU8OkbmQuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MjE5NyBnaXQtZ3VpLnNoOjIyMTkgbGliL2Fib3V0LnRjbDoxNAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwCisjOiBnaXQtZ3VpLnNoOjI1NDMKK21zZ2lkICJEZWxldGUgQnJhbmNoLi4uIgorbXNnc3RyICJUYSBib3J0IGdyZW4uLi4iCisKKyM6IGdpdC1ndWkuc2g6MjU1MyBnaXQtZ3VpLnNoOjI1ODkgbGliL2Fib3V0LnRjbDoxNAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUzCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQWJvdXQgJXMiCiBtc2dzdHIgIk9tICVzIgogCi0jOiBnaXQtZ3VpLnNoOjIyMDEKKyM6IGdpdC1ndWkuc2g6MjU1NwogbXNnaWQgIlByZWZlcmVuY2VzLi4uIgogbXNnc3RyICJJbnN0w6RsbG5pbmdhci4uLiIKIAotIzogZ2l0LWd1aS5zaDoyMjA5IGdpdC1ndWkuc2g6Mjc0MAorIzogZ2l0LWd1aS5zaDoyNTY1IGdpdC1ndWkuc2g6MzEyOQogbXNnaWQgIk9wdGlvbnMuLi4iCiBtc2dzdHIgIkFsdGVybmF0aXYuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MjIxNSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ3CisjOiBnaXQtZ3VpLnNoOjI1NzYKK21zZ2lkICJSZW1vdmUuLi4iCittc2dzdHIgIlRhIGJvcnQuLi4iCisKKyM6IGdpdC1ndWkuc2g6MjU4NSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwCiBtc2dpZCAiSGVscCIKIG1zZ3N0ciAiSGrDpGxwIgogCi0jOiBnaXQtZ3VpLnNoOjIyNTYKKyM6IGdpdC1ndWkuc2g6MjYxMQogbXNnaWQgIk9ubGluZSBEb2N1bWVudGF0aW9uIgogbXNnc3RyICJXZWJiZG9rdW1lbnRhdGlvbiIKIAotIzogZ2l0LWd1aS5zaDoyMzQwCisjOiBnaXQtZ3VpLnNoOjI2MTQgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU2Cittc2dpZCAiU2hvdyBTU0ggS2V5IgorbXNnc3RyICJWaXNhIFNTSC1ueWNrZWwiCisKKyM6IGdpdC1ndWkuc2g6MjcyMQogIywgdGNsLWZvcm1hdAogbXNnaWQgImZhdGFsOiBjYW5ub3Qgc3RhdCBwYXRoICVzOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IgogbXNnc3RyICIiCiAiw7ZkZXNkaWdlcnQ6IGt1bmRlIGludGUgdGEgc3RhdHVzIHDDpSBzw7ZrdsOkZ2VuICVzOiBGaWwgZWxsZXIga2F0YWxvZyBzYWtuYXMiCiAKLSM6IGdpdC1ndWkuc2g6MjM3MworIzogZ2l0LWd1aS5zaDoyNzU0CiBtc2dpZCAiQ3VycmVudCBCcmFuY2g6IgogbXNnc3RyICJBa3R1ZWxsIGdyZW46IgogCi0jOiBnaXQtZ3VpLnNoOjIzOTQKKyM6IGdpdC1ndWkuc2g6Mjc3NQogbXNnaWQgIlN0YWdlZCBDaGFuZ2VzIChXaWxsIENvbW1pdCkiCiBtc2dzdHIgIkvDtmFkZSDDpG5kcmluZ2FyIChrb21tZXIgYXR0IGNoZWNrYXMgaW4pIgogCi0jOiBnaXQtZ3VpLnNoOjI0MTQKKyM6IGdpdC1ndWkuc2g6Mjc5NQogbXNnaWQgIlVuc3RhZ2VkIENoYW5nZXMiCiBtc2dzdHIgIk9rw7ZhZGUgw6RuZHJpbmdhciIKIAotIzogZ2l0LWd1aS5zaDoyNDY0CisjOiBnaXQtZ3VpLnNoOjI4NDUKIG1zZ2lkICJTdGFnZSBDaGFuZ2VkIgogbXNnc3RyICJLw7ZhIMOkbmRyYWRlIgogCi0jOiBnaXQtZ3VpLnNoOjI0ODAgbGliL3RyYW5zcG9ydC50Y2w6OTMgbGliL3RyYW5zcG9ydC50Y2w6MTgyCisjOiBnaXQtZ3VpLnNoOjI4NjQgbGliL3RyYW5zcG9ydC50Y2w6MTA0IGxpYi90cmFuc3BvcnQudGNsOjE5MwogbXNnaWQgIlB1c2giCiBtc2dzdHIgIlPDpG5kIgogCi0jOiBnaXQtZ3VpLnNoOjI1MTAKKyM6IGdpdC1ndWkuc2g6Mjg5OQogbXNnaWQgIkluaXRpYWwgQ29tbWl0IE1lc3NhZ2U6IgogbXNnc3RyICJJbmxlZGFuZGUgaW5jaGVja25pbmdzbWVkZGVsYW5kZToiCiAKLSM6IGdpdC1ndWkuc2g6MjUxMQorIzogZ2l0LWd1aS5zaDoyOTAwCiBtc2dpZCAiQW1lbmRlZCBDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIlV0w7ZrYXQgaW5jaGVja25pbmdzbWVkZGVsYW5kZToiCiAKLSM6IGdpdC1ndWkuc2g6MjUxMgorIzogZ2l0LWd1aS5zaDoyOTAxCiBtc2dpZCAiQW1lbmRlZCBJbml0aWFsIENvbW1pdCBNZXNzYWdlOiIKIG1zZ3N0ciAiVXTDtmthdCBpbmxlZGFuZGUgaW5jaGVja25pbmdzbWVkZGVsYW5kZToiCiAKLSM6IGdpdC1ndWkuc2g6MjUxMworIzogZ2l0LWd1aS5zaDoyOTAyCiBtc2dpZCAiQW1lbmRlZCBNZXJnZSBDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIlV0w7ZrYXQgaW5jaGVja25pbmdzbWVkZGVsYW5kZSBmw7ZyIHNhbW1hbnNsYWduaW5nOiIKIAotIzogZ2l0LWd1aS5zaDoyNTE0CisjOiBnaXQtZ3VpLnNoOjI5MDMKIG1zZ2lkICJNZXJnZSBDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIkluY2hlY2tuaW5nc21lZGRlbGFuZGUgZsO2ciBzYW1tYW5zbGFnbmluZzoiCiAKLSM6IGdpdC1ndWkuc2g6MjUxNQorIzogZ2l0LWd1aS5zaDoyOTA0CiBtc2dpZCAiQ29tbWl0IE1lc3NhZ2U6IgogbXNnc3RyICJJbmNoZWNrbmluZ3NtZWRkZWxhbmRlOiIKIAotIzogZ2l0LWd1aS5zaDoyNTYxIGdpdC1ndWkuc2g6MjcyMyBsaWIvY29uc29sZS50Y2w6NzMKKyM6IGdpdC1ndWkuc2g6Mjk1MyBnaXQtZ3VpLnNoOjMxMDQgbGliL2NvbnNvbGUudGNsOjczCiBtc2dpZCAiQ29weSBBbGwiCiBtc2dzdHIgIktvcGllcmEgYWxsYSIKIAotIzogZ2l0LWd1aS5zaDoyNTg1IGxpYi9ibGFtZS50Y2w6MTAwCisjOiBnaXQtZ3VpLnNoOjI5NzcgbGliL2JsYW1lLnRjbDoxMDQKIG1zZ2lkICJGaWxlOiIKIG1zZ3N0ciAiRmlsOiIKIAotIzogZ2l0LWd1aS5zaDoyNjkxCi1tc2dpZCAiQXBwbHkvUmV2ZXJzZSBIdW5rIgotbXNnc3RyICJBbnbDpG5kL8OldGVyc3TDpGxsIGRlbCIKLQotIzogZ2l0LWd1aS5zaDoyNjk2Ci1tc2dpZCAiQXBwbHkvUmV2ZXJzZSBMaW5lIgotbXNnc3RyICJBbnbDpG5kL8OldGVyc3TDpGxsIHJhZCIKLQotIzogZ2l0LWd1aS5zaDoyNzExCisjOiBnaXQtZ3VpLnNoOjMwOTIKIG1zZ2lkICJSZWZyZXNoIgogbXNnc3RyICJVcHBkYXRlcmEiCiAKLSM6IGdpdC1ndWkuc2g6MjczMgorIzogZ2l0LWd1aS5zaDozMTEzCiBtc2dpZCAiRGVjcmVhc2UgRm9udCBTaXplIgogbXNnc3RyICJNaW5za2EgdGVja2Vuc25pdHRzc3RvcmxlayIKIAotIzogZ2l0LWd1aS5zaDoyNzM2CisjOiBnaXQtZ3VpLnNoOjMxMTcKIG1zZ2lkICJJbmNyZWFzZSBGb250IFNpemUiCiBtc2dzdHIgIsOWa2EgdGVja2Vuc25pdHRzc3RvcmxlayIKIAotIzogZ2l0LWd1aS5zaDoyNzQ3CisjOiBnaXQtZ3VpLnNoOjMxMjUgbGliL2JsYW1lLnRjbDoyODEKK21zZ2lkICJFbmNvZGluZyIKK21zZ3N0ciAiVGVja2Vua29kbmluZyIKKworIzogZ2l0LWd1aS5zaDozMTM2Cittc2dpZCAiQXBwbHkvUmV2ZXJzZSBIdW5rIgorbXNnc3RyICJBbnbDpG5kL8OldGVyc3TDpGxsIGRlbCIKKworIzogZ2l0LWd1aS5zaDozMTQxCittc2dpZCAiQXBwbHkvUmV2ZXJzZSBMaW5lIgorbXNnc3RyICJBbnbDpG5kL8OldGVyc3TDpGxsIHJhZCIKKworIzogZ2l0LWd1aS5zaDozMTUxCittc2dpZCAiUnVuIE1lcmdlIFRvb2wiCittc2dzdHIgIlN0YXJ0YSB2ZXJrdHlnIGbDtnIgc2FtbWFuc2xhZ25pbmciCisKKyM6IGdpdC1ndWkuc2g6MzE1NgorbXNnaWQgIlVzZSBSZW1vdGUgVmVyc2lvbiIKK21zZ3N0ciAiQW52w6RuZCB2ZXJzaW9uZW4gZnLDpW4gZmrDpHJyYXJraXZldCIKKworIzogZ2l0LWd1aS5zaDozMTYwCittc2dpZCAiVXNlIExvY2FsIFZlcnNpb24iCittc2dzdHIgIkFudsOkbmQgbG9rYWxhIHZlcnNpb25lbiIKKworIzogZ2l0LWd1aS5zaDozMTY0Cittc2dpZCAiUmV2ZXJ0IFRvIEJhc2UiCittc2dzdHIgIsOFdGVyc3TDpGxsIHRpbGwgYmFzdmVyc2lvbmVuIgorCisjOiBnaXQtZ3VpLnNoOjMxODMKIG1zZ2lkICJVbnN0YWdlIEh1bmsgRnJvbSBDb21taXQiCiBtc2dzdHIgIlRhIGJvcnQgZGVsIHVyIGluY2hlY2tuaW5nc2vDtiIKIAotIzogZ2l0LWd1aS5zaDoyNzQ4CisjOiBnaXQtZ3VpLnNoOjMxODQKIG1zZ2lkICJVbnN0YWdlIExpbmUgRnJvbSBDb21taXQiCiBtc2dzdHIgIlRhIGJvcnQgcmFkIHVyIGluY2hlY2tuaW5nc2vDtiIKIAotIzogZ2l0LWd1aS5zaDoyNzUwCisjOiBnaXQtZ3VpLnNoOjMxODYKIG1zZ2lkICJTdGFnZSBIdW5rIEZvciBDb21taXQiCiBtc2dzdHIgIlN0w6RsbCBkZWwgaSBpbmNoZWNrbmluZ3Nrw7YiCiAKLSM6IGdpdC1ndWkuc2g6Mjc1MQorIzogZ2l0LWd1aS5zaDozMTg3CiBtc2dpZCAiU3RhZ2UgTGluZSBGb3IgQ29tbWl0IgogbXNnc3RyICJTdMOkbGwgcmFkIGkgaW5jaGVja25pbmdza8O2IgogCi0jOiBnaXQtZ3VpLnNoOjI3NzEKKyM6IGdpdC1ndWkuc2g6MzIxMAogbXNnaWQgIkluaXRpYWxpemluZy4uLiIKIG1zZ3N0ciAiSW5pdGllcmFyLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjI4NzYKKyM6IGdpdC1ndWkuc2g6MzMxNQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJQb3NzaWJsZSBlbnZpcm9ubWVudCBpc3N1ZXMgZXhpc3QuXG4iCkBAIC00NTEsNyArNTIwLDcgQEAKICJhdiAlczpcbiIKICJcbiIKIAotIzogZ2l0LWd1aS5zaDoyOTA2CisjOiBnaXQtZ3VpLnNoOjMzNDUKIG1zZ2lkICIiCiAiXG4iCiAiVGhpcyBpcyBkdWUgdG8gYSBrbm93biBpc3N1ZSB3aXRoIHRoZVxuIgpAQCAtNDYxLDcgKzUzMCw3IEBACiAiRGV0dGEgYmVyb3IgcMOlIGV0dCBrw6RudCBwcm9ibGVtIG1lZFxuIgogIlRjbC1iaW7DpHJlbiBzb20gZsO2bGplciBtZWQgQ3lnd2luLiIKIAotIzogZ2l0LWd1aS5zaDoyOTExCisjOiBnaXQtZ3VpLnNoOjMzNTAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCkBAIC00ODIsODAgKzU1MSwxMDggQEAKIG1zZ2lkICJnaXQtZ3VpIC0gYSBncmFwaGljYWwgdXNlciBpbnRlcmZhY2UgZm9yIEdpdC4iCiBtc2dzdHIgImdpdC1ndWkgLSBldHQgZ3JhZmlza3QgYW52w6RuZGFyZ3LDpG5zc25pdHQgZsO2ciBHaXQuIgogCi0jOiBsaWIvYmxhbWUudGNsOjcwCisjOiBsaWIvYmxhbWUudGNsOjcyCiBtc2dpZCAiRmlsZSBWaWV3ZXIiCiBtc2dzdHIgIkZpbHZpc2FyZSIKIAotIzogbGliL2JsYW1lLnRjbDo3NAorIzogbGliL2JsYW1lLnRjbDo3OAogbXNnaWQgIkNvbW1pdDoiCiBtc2dzdHIgIkluY2hlY2tuaW5nOiIKIAotIzogbGliL2JsYW1lLnRjbDoyNTcKKyM6IGxpYi9ibGFtZS50Y2w6MjcxCiBtc2dpZCAiQ29weSBDb21taXQiCiBtc2dzdHIgIktvcGllcmEgaW5jaGVja25pbmciCiAKLSM6IGxpYi9ibGFtZS50Y2w6MjYwCisjOiBsaWIvYmxhbWUudGNsOjI3NQorbXNnaWQgIkZpbmQgVGV4dC4uLiIKK21zZ3N0ciAiU8O2ayB0ZXh0Li4uIgorCisjOiBsaWIvYmxhbWUudGNsOjI4NAogbXNnaWQgIkRvIEZ1bGwgQ29weSBEZXRlY3Rpb24iCiBtc2dzdHIgIkfDtnIgZnVsbCBrb3BpZXJpbmdzaWdlbmvDpG5uaW5nIgogCi0jOiBsaWIvYmxhbWUudGNsOjM4OAorIzogbGliL2JsYW1lLnRjbDoyODgKK21zZ2lkICJTaG93IEhpc3RvcnkgQ29udGV4dCIKK21zZ3N0ciAiVmlzYSBoaXN0b3Jpa3NhbW1hbmhhbmciCisKKyM6IGxpYi9ibGFtZS50Y2w6MjkxCittc2dpZCAiQmxhbWUgUGFyZW50IENvbW1pdCIKK21zZ3N0ciAiS2xhbmRyYSBmw7Zyw6RsZHJhaW5jaGVja25pbmciCisKKyM6IGxpYi9ibGFtZS50Y2w6NDUwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmVhZGluZyAlcy4uLiIKIG1zZ3N0ciAiTMOkc2VyICVzLi4uIgogCi0jOiBsaWIvYmxhbWUudGNsOjQ5MgorIzogbGliL2JsYW1lLnRjbDo1NTcKIG1zZ2lkICJMb2FkaW5nIGNvcHkvbW92ZSB0cmFja2luZyBhbm5vdGF0aW9ucy4uLiIKIG1zZ3N0ciAiTMOkc2VyIGFubm90ZXJpbmdhciBmw7ZyIGtvcGllcmluZy9mbHl0dG5pbmcuLi4iCiAKLSM6IGxpYi9ibGFtZS50Y2w6NTEyCisjOiBsaWIvYmxhbWUudGNsOjU3NwogbXNnaWQgImxpbmVzIGFubm90YXRlZCIKIG1zZ3N0ciAicmFkZXIgYW5ub3RlcmFkZSIKIAotIzogbGliL2JsYW1lLnRjbDo3MDQKKyM6IGxpYi9ibGFtZS50Y2w6NzY5CiBtc2dpZCAiTG9hZGluZyBvcmlnaW5hbCBsb2NhdGlvbiBhbm5vdGF0aW9ucy4uLiIKIG1zZ3N0ciAiTMOkc2VyIGluIGFubm90ZXJpbmcgYXYgb3JpZ2luYWxwbGFjZXJpbmcuLi4iCiAKLSM6IGxpYi9ibGFtZS50Y2w6NzA3CisjOiBsaWIvYmxhbWUudGNsOjc3MgogbXNnaWQgIkFubm90YXRpb24gY29tcGxldGUuIgogbXNnc3RyICJBbm5vdGVyaW5nIGZ1bGxib3JkYWQuIgogCi0jOiBsaWIvYmxhbWUudGNsOjczNworIzogbGliL2JsYW1lLnRjbDo4MDIKIG1zZ2lkICJCdXN5IgogbXNnc3RyICJVcHB0YWdlbiIKIAotIzogbGliL2JsYW1lLnRjbDo3MzgKKyM6IGxpYi9ibGFtZS50Y2w6ODAzCiBtc2dpZCAiQW5ub3RhdGlvbiBwcm9jZXNzIGlzIGFscmVhZHkgcnVubmluZy4iCiBtc2dzdHIgIkFubm90ZXJpbmdzcHJvY2VzcyBrw7ZycyByZWRhbi4iCiAKLSM6IGxpYi9ibGFtZS50Y2w6Nzc3CisjOiBsaWIvYmxhbWUudGNsOjg0MgogbXNnaWQgIlJ1bm5pbmcgdGhvcm91Z2ggY29weSBkZXRlY3Rpb24uLi4iCiBtc2dzdHIgIkvDtnIgZ3J1bmRsaWcga29waWVyaW5nc2lnZW5rw6RubmluZy4uLiIKIAotIzogbGliL2JsYW1lLnRjbDo4MjcKKyM6IGxpYi9ibGFtZS50Y2w6OTEwCiBtc2dpZCAiTG9hZGluZyBhbm5vdGF0aW9uLi4uIgogbXNnc3RyICJMw6RzZXIgaW4gYW5ub3RlcmluZy4uLiIKIAotIzogbGliL2JsYW1lLnRjbDo4ODMKKyM6IGxpYi9ibGFtZS50Y2w6OTYzCiBtc2dpZCAiQXV0aG9yOiIKIG1zZ3N0ciAiRsO2cmZhdHRhcmU6IgogCi0jOiBsaWIvYmxhbWUudGNsOjg4NworIzogbGliL2JsYW1lLnRjbDo5NjcKIG1zZ2lkICJDb21taXR0ZXI6IgogbXNnc3RyICJJbmNoZWNrYXJlOiIKIAotIzogbGliL2JsYW1lLnRjbDo4OTIKKyM6IGxpYi9ibGFtZS50Y2w6OTcyCiBtc2dpZCAiT3JpZ2luYWwgRmlsZToiCiBtc2dzdHIgIlVyc3BydW5nbGlnIGZpbDoiCiAKLSM6IGxpYi9ibGFtZS50Y2w6MTAwNgorIzogbGliL2JsYW1lLnRjbDoxMDIwCittc2dpZCAiQ2Fubm90IGZpbmQgSEVBRCBjb21taXQ6IgorbXNnc3RyICJIaXR0YXIgaW50ZSBpbmNoZWNrbmluZyBmw7ZyIEhFQUQ6IgorCisjOiBsaWIvYmxhbWUudGNsOjEwNzUKK21zZ2lkICJDYW5ub3QgZmluZCBwYXJlbnQgY29tbWl0OiIKK21zZ3N0ciAiSGl0dGFyIGludGUgZsO2csOkbGRyYWluY2hlY2tuaW5nOiIKKworIzogbGliL2JsYW1lLnRjbDoxMDkwCittc2dpZCAiVW5hYmxlIHRvIGRpc3BsYXkgcGFyZW50IgorbXNnc3RyICJLYW4gaW50ZSB2aXNhIGbDtnLDpGxkZXIiCisKKyM6IGxpYi9ibGFtZS50Y2w6MTA5MSBsaWIvZGlmZi50Y2w6Mjk3Cittc2dpZCAiRXJyb3IgbG9hZGluZyBkaWZmOiIKK21zZ3N0ciAiRmVsIHZpZCBpbmzDpHNuaW5nIGF2IGRpZmZlcmVuczoiCisKKyM6IGxpYi9ibGFtZS50Y2w6MTIzMQogbXNnaWQgIk9yaWdpbmFsbHkgQnk6IgogbXNnc3RyICJVcnNwcnVuZ2xpZ2VuIGF2OiIKIAotIzogbGliL2JsYW1lLnRjbDoxMDEyCisjOiBsaWIvYmxhbWUudGNsOjEyMzcKIG1zZ2lkICJJbiBGaWxlOiIKIG1zZ3N0ciAiSSBmaWxlbjoiCiAKLSM6IGxpYi9ibGFtZS50Y2w6MTAxNworIzogbGliL2JsYW1lLnRjbDoxMjQyCiBtc2dpZCAiQ29waWVkIE9yIE1vdmVkIEhlcmUgQnk6IgogbXNnc3RyICJLb3BpZXJhZCBlbGxlciBmbHl0dGFkIGhpdCBhdjoiCiAKQEAgLTU2OSwxNiArNjY2LDE4IEBACiAKICM6IGxpYi9icmFuY2hfY2hlY2tvdXQudGNsOjI3IGxpYi9icmFuY2hfY3JlYXRlLnRjbDozNQogIzogbGliL2JyYW5jaF9kZWxldGUudGNsOjMyIGxpYi9icmFuY2hfcmVuYW1lLnRjbDozMCBsaWIvYnJvd3Nlci50Y2w6MjgyCi0jOiBsaWIvY2hlY2tvdXRfb3AudGNsOjU0NCBsaWIvY2hvb3NlX2ZvbnQudGNsOjQzIGxpYi9tZXJnZS50Y2w6MTcxCi0jOiBsaWIvb3B0aW9uLnRjbDoxMDMgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo0MiBsaWIvdHJhbnNwb3J0LnRjbDo5NworIzogbGliL2NoZWNrb3V0X29wLnRjbDo1NDQgbGliL2Nob29zZV9mb250LnRjbDo0MyBsaWIvbWVyZ2UudGNsOjE3MgorIzogbGliL29wdGlvbi50Y2w6MTI1IGxpYi9yZW1vdGVfYWRkLnRjbDozMiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjQyCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo0MCBsaWIvdG9vbHNfZGxnLnRjbDoyMDQgbGliL3Rvb2xzX2RsZy50Y2w6MzUyCisjOiBsaWIvdHJhbnNwb3J0LnRjbDoxMDgKIG1zZ2lkICJDYW5jZWwiCiBtc2dzdHIgIkF2YnJ5dCIKIAotIzogbGliL2JyYW5jaF9jaGVja291dC50Y2w6MzIgbGliL2Jyb3dzZXIudGNsOjI4NworIzogbGliL2JyYW5jaF9jaGVja291dC50Y2w6MzIgbGliL2Jyb3dzZXIudGNsOjI4NyBsaWIvdG9vbHNfZGxnLnRjbDozMjgKIG1zZ2lkICJSZXZpc2lvbiIKIG1zZ3N0ciAiUmV2aXNpb24iCiAKLSM6IGxpYi9icmFuY2hfY2hlY2tvdXQudGNsOjM2IGxpYi9icmFuY2hfY3JlYXRlLnRjbDo2OSBsaWIvb3B0aW9uLnRjbDoyNDQKKyM6IGxpYi9icmFuY2hfY2hlY2tvdXQudGNsOjM2IGxpYi9icmFuY2hfY3JlYXRlLnRjbDo2OSBsaWIvb3B0aW9uLnRjbDoyODAKIG1zZ2lkICJPcHRpb25zIgogbXNnc3RyICJBbHRlcm5hdGl2IgogCkBAIC01OTgsNyArNjk3LDcgQEAKIG1zZ2lkICJDcmVhdGUgTmV3IEJyYW5jaCIKIG1zZ3N0ciAiU2thcGEgbnkgZ3JlbiIKIAotIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjMxIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzcxCisjOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6MzEgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozNzcKIG1zZ2lkICJDcmVhdGUiCiBtc2dzdHIgIlNrYXBhIgogCkBAIC02MDYsNyArNzA1LDcgQEAKIG1zZ2lkICJCcmFuY2ggTmFtZSIKIG1zZ3N0ciAiTmFtbiBww6UgZ3JlbiIKIAotIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjQzCisjOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6NDMgbGliL3JlbW90ZV9hZGQudGNsOjM5IGxpYi90b29sc19kbGcudGNsOjUwCiBtc2dpZCAiTmFtZToiCiBtc2dzdHIgIk5hbW46IgogCkBAIC03NTEsOSArODUwLDkgQEAKIG1zZ2lkICJCcm93c2UgQnJhbmNoIEZpbGVzIgogbXNnc3RyICJCbMOkZGRyYSBmaWxlciBww6UgZ3JlbmVuIgogCi0jOiBsaWIvYnJvd3Nlci50Y2w6Mjc4IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Mzg3Ci0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ3MiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ4MgotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5ODUKKyM6IGxpYi9icm93c2VyLnRjbDoyNzggbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozOTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDgwIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDkxCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk5NQogbXNnaWQgIkJyb3dzZSIKIG1zZ3N0ciAiQmzDpGRkcmEiCiAKQEAgLTc2OCw2ICs4NjcsNyBAQAogbXNnc3RyICLDtmRlc2RpZ2VydDogS3VuZGUgaW50ZSBzbMOlIHVwcCAlcyIKIAogIzogbGliL2NoZWNrb3V0X29wLnRjbDoxNDUgbGliL2NvbnNvbGUudGNsOjgxIGxpYi9kYXRhYmFzZS50Y2w6MzEKKyM6IGxpYi9zc2hrZXkudGNsOjUzCiBtc2dpZCAiQ2xvc2UiCiBtc2dzdHIgIlN0w6RuZyIKIApAQCAtODc5LDcgKzk3OSw3IEBACiBtc2dpZCAiUmVzZXQgJyVzJz8iCiBtc2dzdHIgIsOFdGVyc3TDpGxsYSBcIiVzXCI/IgogCi0jOiBsaWIvY2hlY2tvdXRfb3AudGNsOjUzMiBsaWIvbWVyZ2UudGNsOjE2MworIzogbGliL2NoZWNrb3V0X29wLnRjbDo1MzIgbGliL21lcmdlLnRjbDoxNjQgbGliL3Rvb2xzX2RsZy50Y2w6MzQzCiBtc2dpZCAiVmlzdWFsaXplIgogbXNnc3RyICJWaXN1YWxpc2VyYSIKIApAQCAtOTI4LDIyMSArMTAyOCwyMjUgQEAKIG1zZ2lkICJHaXQgR3VpIgogbXNnc3RyICJHaXQgR3VpIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjgxIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Mzc2CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg3IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzgyCiBtc2dpZCAiQ3JlYXRlIE5ldyBSZXBvc2l0b3J5IgogbXNnc3RyICJTa2FwYSBueXR0IGFya2l2IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkzCiBtc2dpZCAiTmV3Li4uIgogbXNnc3RyICJOeXR0Li4uIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk0IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDU4CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ2NQogbXNnaWQgIkNsb25lIEV4aXN0aW5nIFJlcG9zaXRvcnkiCiBtc2dzdHIgIktsb25hIGJlZmludGxpZ3QgYXJraXYiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAwCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwNgogbXNnaWQgIkNsb25lLi4uIgogbXNnc3RyICJLbG9uYS4uLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDcgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NzQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTEzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTgzCiBtc2dpZCAiT3BlbiBFeGlzdGluZyBSZXBvc2l0b3J5IgogbXNnc3RyICLDlnBwbmEgYmVmaW50bGlndCBhcmtpdiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTE5CiBtc2dpZCAiT3Blbi4uLiIKIG1zZ3N0ciAiw5ZwcG5hLi4uIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEyNgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMzIKIG1zZ2lkICJSZWNlbnQgUmVwb3NpdG9yaWVzIgogbXNnc3RyICJTZW5hc3RlIGFya2l2ZW4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTMyCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEzOAogbXNnaWQgIk9wZW4gUmVjZW50IFJlcG9zaXRvcnk6IgogbXNnc3RyICLDlnBwbmEgdGlkaWdhcmUgYXJraXY6IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjI5NiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjMwMwotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozMTAKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzAyIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzA5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjMxNgogIywgdGNsLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byBjcmVhdGUgcmVwb3NpdG9yeSAlczoiCiBtc2dzdHIgIkt1bmRlIGludGUgc2thcGEgYXJraXZldCAlczoiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzgxIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDc2CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM4NwogbXNnaWQgIkRpcmVjdG9yeToiCiBtc2dzdHIgIkthdGFsb2c6IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQxMCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUzNQotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDA3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQxNyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU0NAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDE3CiBtc2dpZCAiR2l0IFJlcG9zaXRvcnkiCiBtc2dzdHIgIkdpdGFya2l2IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQzNQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NDIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJEaXJlY3RvcnkgJXMgYWxyZWFkeSBleGlzdHMuIgogbXNnc3RyICJLYXRhbG9nZW4gJXMgZmlubnMgcmVkYW4uIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQzOQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NDYKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJGaWxlICVzIGFscmVhZHkgZXhpc3RzLiIKIG1zZ3N0ciAiRmlsZW4gJXMgZmlubnMgcmVkYW4uIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ1MworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NjAKIG1zZ2lkICJDbG9uZSIKIG1zZ3N0ciAiS2xvbmEiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDY2Ci1tc2dpZCAiVVJMOiIKLW1zZ3N0ciAiV2ViYmFkcmVzczoiCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ3MworbXNnaWQgIlNvdXJjZSBMb2NhdGlvbjoiCittc2dzdHIgIlBsYXRzIGbDtnIga8OkbGxrb2Q6IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ4NworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0ODQKK21zZ2lkICJUYXJnZXQgRGlyZWN0b3J5OiIKK21zZ3N0ciAiTcOlbGthdGFsb2c6IgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ5NgogbXNnaWQgIkNsb25lIFR5cGU6IgogbXNnc3RyICJUeXAgYXYga2xvbjoiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDkzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwMgogbXNnaWQgIlN0YW5kYXJkIChGYXN0LCBTZW1pLVJlZHVuZGFudCwgSGFyZGxpbmtzKSIKIG1zZ3N0ciAiU3RhbmRhcmQgKHNuYWJiLCBzZW1pcmVkdW5kYW50LCBow6VyZGEgbMOkbmthcikiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDk5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwOAogbXNnaWQgIkZ1bGwgQ29weSAoU2xvd2VyLCBSZWR1bmRhbnQgQmFja3VwKSIKIG1zZ3N0ciAiRnVsbCBrb3BpYSAobMOlbmdzYW1tYXJlLCByZWR1bmRhbnQgc8Oka2VyaGV0c2tvcGlhKSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MDUKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTE0CiBtc2dpZCAiU2hhcmVkIChGYXN0ZXN0LCBOb3QgUmVjb21tZW5kZWQsIE5vIEJhY2t1cCkiCiBtc2dzdHIgIkRlbGFkIChzbmFiYmFzdCwgcmVrb21tZW5kZXJhcyBlaiwgaW5nZW4gc8Oka2VyaGV0c2tvcGlhKSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1NDEgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1ODgKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzM0IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODA0Ci0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMTMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDIxCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU1MCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU5NworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NDMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4MTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAyMyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMzEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJOb3QgYSBHaXQgcmVwb3NpdG9yeTogJXMiCiBtc2dzdHIgIkludGUgZXR0IEdpdGFya2l2OiAlcyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1NzcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTg2CiBtc2dpZCAiU3RhbmRhcmQgb25seSBhdmFpbGFibGUgZm9yIGxvY2FsIHJlcG9zaXRvcnkuIgogbXNnc3RyICJTdGFuZGFyZCDDpHIgZW5kYXN0IHRpbGxnw6RuZ2xpZ3QgZsO2ciBsb2thbGEgYXJraXYuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU4MQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1OTAKIG1zZ2lkICJTaGFyZWQgb25seSBhdmFpbGFibGUgZm9yIGxvY2FsIHJlcG9zaXRvcnkuIgogbXNnc3RyICJEZWxhdCDDpHIgZW5kYXN0IHRpbGxnw6RuZ2xpZ3QgZsO2ciBsb2thbGEgYXJraXYuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYwMgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MTEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJMb2NhdGlvbiAlcyBhbHJlYWR5IGV4aXN0cy4iCiBtc2dzdHIgIlBsYXRzZW4gJXMgZmlubnMgcmVkYW4uIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYxMworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MjIKIG1zZ2lkICJGYWlsZWQgdG8gY29uZmlndXJlIG9yaWdpbiIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBrb25maWd1cmVyYSB1cnNwcnVuZyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MjUKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjM0CiBtc2dpZCAiQ291bnRpbmcgb2JqZWN0cyIKIG1zZ3N0ciAiUsOka25hciBvYmpla3QiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjI2CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYzNQogbXNnaWQgImJ1Y2tldHMiCiBtc2dzdHIgImhpbmthciIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2NTAKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjU5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGNvcHkgb2JqZWN0cy9pbmZvL2FsdGVybmF0ZXM6ICVzIgogbXNnc3RyICJLdW5kZSBpbnRlIGtvcGllcmEgb2JqZWt0L2luZm8vYWx0ZXJuYXRpdjogJXMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Njg2CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjY5NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIk5vdGhpbmcgdG8gY2xvbmUgZnJvbSAlcy4iCiBtc2dzdHIgIkluZ2VudGluZyBhdHQga2xvbmEgZnLDpW4gJXMuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjY4OCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkwMgotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Njk3IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTExCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkyMwogbXNnaWQgIlRoZSAnbWFzdGVyJyBicmFuY2ggaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkLiIKIG1zZ3N0ciAiR3JlbmVuIFwibWFzdGVyXCIgaGFyIGludGUgaW5pdGllcmF0cy4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzAxCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjcxMAogbXNnaWQgIkhhcmRsaW5rcyBhcmUgdW5hdmFpbGFibGUuICBGYWxsaW5nIGJhY2sgdG8gY29weWluZy4iCiBtc2dzdHIgIkjDpXJkYSBsw6Rua2FyIMOkciBpbnRlIHRpbGxnw6RuZ2xpZ2EuIEZhbGxlciB0aWxsYmFrYSBww6Uga29waWVyaW5nLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3MTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzIyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ2xvbmluZyBmcm9tICVzIgogbXNnc3RyICJLbG9uYXIgZnLDpW4gJXMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzQ0CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc1MwogbXNnaWQgIkNvcHlpbmcgb2JqZWN0cyIKIG1zZ3N0ciAiS29waWVyYXIgb2JqZWt0IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc0NQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NTQKIG1zZ2lkICJLaUIiCiBtc2dzdHIgIktpQiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NjkKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Nzc4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGNvcHkgb2JqZWN0OiAlcyIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBrb3BpZXJhIG9iamVrdDogJXMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Nzc5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc4OAogbXNnaWQgIkxpbmtpbmcgb2JqZWN0cyIKIG1zZ3N0ciAiTMOkbmthciBvYmpla3QiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzgwCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc4OQogbXNnaWQgIm9iamVjdHMiCiBtc2dzdHIgIm9iamVrdCIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3ODgKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Nzk3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGhhcmRsaW5rIG9iamVjdDogJXMiCiBtc2dzdHIgIkt1bmRlIGludGUgaMOlcmRsw6Rua2Egb2JqZWt0OiAlcyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NDMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODUyCiBtc2dpZCAiQ2Fubm90IGZldGNoIGJyYW5jaGVzIGFuZCBvYmplY3RzLiAgU2VlIGNvbnNvbGUgb3V0cHV0IGZvciBkZXRhaWxzLiIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBow6RtdGEgZ3JlbmFyIG9jaCBvYmpla3QuIFNlIGtvbnNvbHV0ZGF0YSBmw7ZyIGRldGFsamVyLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODYzCiBtc2dpZCAiQ2Fubm90IGZldGNoIHRhZ3MuICBTZWUgY29uc29sZSBvdXRwdXQgZm9yIGRldGFpbHMuIgogbXNnc3RyICJLdW5kZSBpbnRlIGjDpG10YSB0YWdnYXIuIFNlIGtvbnNvbHV0ZGF0YSBmw7ZyIGRldGFsamVyLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NzgKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODg3CiBtc2dpZCAiQ2Fubm90IGRldGVybWluZSBIRUFELiAgU2VlIGNvbnNvbGUgb3V0cHV0IGZvciBkZXRhaWxzLiIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBhdmfDtnJhIEhFQUQuIFNlIGtvbnNvbHV0ZGF0YSBmw7ZyIGRldGFsamVyLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4ODcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODk2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGNsZWFudXAgJXMiCiBtc2dzdHIgIkt1bmRlIGludGUgc3TDpGRhIHVwcCAlcyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4OTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTAyCiBtc2dpZCAiQ2xvbmUgZmFpbGVkLiIKIG1zZ3N0ciAiS2xvbmluZyBtaXNzbHlja2FkZXMuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkwMAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MDkKIG1zZ2lkICJObyBkZWZhdWx0IGJyYW5jaCBvYnRhaW5lZC4iCiBtc2dzdHIgIkjDpG10YWRlIGluZ2VuIHN0YW5kYXJkZ3Jlbi4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTExCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkyMAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNhbm5vdCByZXNvbHZlICVzIGFzIGEgY29tbWl0LiIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBzbMOlIHVwcCAlcyB0aWxsIG7DpWdvbiBpbmNoZWNrbmluZy4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTIzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkzMgogbXNnaWQgIkNyZWF0aW5nIHdvcmtpbmcgZGlyZWN0b3J5IgogbXNnc3RyICJTa2FwYXIgYXJiZXRza2F0YWxvZyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MjQgbGliL2luZGV4LnRjbDo2NSBsaWIvaW5kZXgudGNsOjEyNwotIzogbGliL2luZGV4LnRjbDoxOTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTMzIGxpYi9pbmRleC50Y2w6NjUgbGliL2luZGV4LnRjbDoxMjgKKyM6IGxpYi9pbmRleC50Y2w6MTk2CiBtc2dpZCAiZmlsZXMiCiBtc2dzdHIgImZpbGVyIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk1MworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NjIKIG1zZ2lkICJJbml0aWFsIGZpbGUgY2hlY2tvdXQgZmFpbGVkLiIKIG1zZ3N0ciAiSW5sZWRhbmRlIGZpbHV0Y2hlY2tuaW5nIG1pc3NseWNrYWRlcy4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTY5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk3OAogbXNnaWQgIk9wZW4iCiBtc2dzdHIgIsOWcHBuYSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NzkKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTg4CiBtc2dpZCAiUmVwb3NpdG9yeToiCiBtc2dzdHIgIkFya2l2OiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDI3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMzcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gb3BlbiByZXBvc2l0b3J5ICVzOiIKIG1zZ3N0ciAiS3VuZGUgaW50ZSDDtnBwbmEgYXJraXZldCAlczoiCkBAIC0xMjE0LDE5ICsxMzE4LDE5IEBACiAidXTDtmthIHRpZGlnYXJlIGluY2hlY2tuaW5nYXIgb20gZHUgaW50ZSBmw7Zyc3QgYXZicnl0ZXIgZGVuIHDDpWfDpWVuZGUgIgogInNhbW1hbnNsYWduaW5nZW4uXG4iCiAKLSM6IGxpYi9jb21taXQudGNsOjQ5CisjOiBsaWIvY29tbWl0LnRjbDo0OAogbXNnaWQgIkVycm9yIGxvYWRpbmcgY29tbWl0IGRhdGEgZm9yIGFtZW5kOiIKIG1zZ3N0ciAiRmVsIHZpZCBpbmzDpHNuaW5nIGF2IGluY2hlY2tuaW5nc2RhdGEgZsO2ciB1dMO2a25pbmc6IgogCi0jOiBsaWIvY29tbWl0LnRjbDo3NgorIzogbGliL2NvbW1pdC50Y2w6NzUKIG1zZ2lkICJVbmFibGUgdG8gb2J0YWluIHlvdXIgaWRlbnRpdHk6IgogbXNnc3RyICJLdW5kZSBpbnRlIGjDpG10YSBkaW4gaWRlbnRpdGV0OiIKIAotIzogbGliL2NvbW1pdC50Y2w6ODEKKyM6IGxpYi9jb21taXQudGNsOjgwCiBtc2dpZCAiSW52YWxpZCBHSVRfQ09NTUlUVEVSX0lERU5UOiIKIG1zZ3N0ciAiRmVsYWt0aWcgR0lUX0NPTU1JVFRFUl9JREVOVDoiCiAKLSM6IGxpYi9jb21taXQudGNsOjEzMworIzogbGliL2NvbW1pdC50Y2w6MTMyCiBtc2dpZCAiIgogIkxhc3Qgc2Nhbm5lZCBzdGF0ZSBkb2VzIG5vdCBtYXRjaCByZXBvc2l0b3J5IHN0YXRlLlxuIgogIlxuIgpAQCAtMTI0Miw3ICsxMzQ2LDcgQEAKICJcbiIKICJTw7ZrbmluZ2VuIGtvbW1lciBhdHQgc3RhcnRhcyBhdXRvbWF0aXNrdCBudS5cbiIKIAotIzogbGliL2NvbW1pdC50Y2w6MTU0CisjOiBsaWIvY29tbWl0LnRjbDoxNTUKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiVW5tZXJnZWQgZmlsZXMgY2Fubm90IGJlIGNvbW1pdHRlZC5cbiIKQEAgLTEyNTUsNyArMTM1OSw3IEBACiAiRmlsZW4gJXMgaGFyIHNhbW1hbnNsYWduaW5nc2tvbmZsaWt0ZXIuIER1IG3DpXN0ZSBsw7ZzYSBkZW0gb2NoIGvDtmEgZmlsZW4gIgogImlubmFuIGR1IGNoZWNrYXIgaW4gZGVuLlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoxNjIKKyM6IGxpYi9jb21taXQudGNsOjE2MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJVbmtub3duIGZpbGUgc3RhdGUgJXMgZGV0ZWN0ZWQuXG4iCkBAIC0xMjY2LDcgKzEzNzAsNyBAQAogIlxuIgogIkZpbGVuICVzIGthbiBpbnRlIGNoZWNrYXMgaW4gYXYgcHJvZ3JhbW1ldC5cbiIKIAotIzogbGliL2NvbW1pdC50Y2w6MTcwCisjOiBsaWIvY29tbWl0LnRjbDoxNzEKIG1zZ2lkICIiCiAiTm8gY2hhbmdlcyB0byBjb21taXQuXG4iCiAiXG4iCkBAIC0xMjc2LDcgKzEzODAsNyBAQAogIlxuIgogIkR1IG3DpXN0ZSBrw7ZhIMOldG1pbnN0b25lIGVuIGZpbCBpbm5hbiBkdSBrYW4gY2hlY2thIGluLlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoxODMKKyM6IGxpYi9jb21taXQudGNsOjE4NgogbXNnaWQgIiIKICJQbGVhc2Ugc3VwcGx5IGEgY29tbWl0IG1lc3NhZ2UuXG4iCiAiXG4iCkBAIC0xMjk0LDQ1ICsxMzk4LDQ1IEBACiAiLSBBbmRyYSByYWRlbjogVG9tXG4iCiAiLSBGw7ZsamFuZGUgcmFkZXI6IEJlc2tyaXYgdmFyZsO2ciBkZXQgaMOkciDDpHIgZW4gYnJhIMOkbmRyaW5nLlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoyMDcKKyM6IGxpYi9jb21taXQudGNsOjIxMAogIywgdGNsLWZvcm1hdAogbXNnaWQgIndhcm5pbmc6IFRjbCBkb2VzIG5vdCBzdXBwb3J0IGVuY29kaW5nICclcycuIgogbXNnc3RyICJ2YXJuaW5nOiBUY2wgc3TDtmRlciBpbnRlIHRlY2tlbmtvZG5pbmdlbiBcIiVzXCIuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoyMjEKKyM6IGxpYi9jb21taXQudGNsOjIyNgogbXNnaWQgIkNhbGxpbmcgcHJlLWNvbW1pdCBob29rLi4uIgotbXNnc3RyICJBbnJvcGFyIGtyb2sgZsO2cmUgaW5jaGVja25pbmcuLi4iCittc2dzdHIgIkFucm9wYXIga3Jva2VuIGbDtnJlIGluY2hlY2tuaW5nIChwcmUtY29tbWl0KS4uLiIKIAotIzogbGliL2NvbW1pdC50Y2w6MjM2CisjOiBsaWIvY29tbWl0LnRjbDoyNDEKIG1zZ2lkICJDb21taXQgZGVjbGluZWQgYnkgcHJlLWNvbW1pdCBob29rLiIKLW1zZ3N0ciAiSW5jaGVja25pbmdlbiBhdnZpc2FkZXMgYXYga3JvayBmw7ZyZSBpbmNoZWNrbmluZy4iCittc2dzdHIgIkluY2hlY2tuaW5nZW4gYXZ2aXNhZGVzIGF2IGtyb2tlbiBmw7ZyZSBpbmNoZWNrbmluZyAocHJlLWNvbW1pdCkuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoyNTkKKyM6IGxpYi9jb21taXQudGNsOjI2NAogbXNnaWQgIkNhbGxpbmcgY29tbWl0LW1zZyBob29rLi4uIgotbXNnc3RyICJBbnJvcGFyIGtyb2sgZsO2ciBpbmNoZWNrbmluZ3NtZWRkZWxhbmRlLi4uIgorbXNnc3RyICJBbnJvcGFyIGtyb2tlbiBmw7ZyIGluY2hlY2tuaW5nc21lZGRlbGFuZGUgKGNvbW1pdC1tc2cpLi4uIgogCi0jOiBsaWIvY29tbWl0LnRjbDoyNzQKKyM6IGxpYi9jb21taXQudGNsOjI3OQogbXNnaWQgIkNvbW1pdCBkZWNsaW5lZCBieSBjb21taXQtbXNnIGhvb2suIgotbXNnc3RyICJJbmNoZWNrbmluZyBhdnZpc2FkIGF2IGtyb2sgZsO2ciBpbmNoZWNrbmluZ3NtZWRkZWxhbmRlLiIKK21zZ3N0ciAiSW5jaGVja25pbmcgYXZ2aXNhZCBhdiBrcm9rZW4gZsO2ciBpbmNoZWNrbmluZ3NtZWRkZWxhbmRlIChjb21taXQtbXNnKS4iCiAKLSM6IGxpYi9jb21taXQudGNsOjI4NworIzogbGliL2NvbW1pdC50Y2w6MjkyCiBtc2dpZCAiQ29tbWl0dGluZyBjaGFuZ2VzLi4uIgogbXNnc3RyICJDaGVja2FyIGluIMOkbmRyaW5nYXIuLi4iCiAKLSM6IGxpYi9jb21taXQudGNsOjMwMworIzogbGliL2NvbW1pdC50Y2w6MzA4CiBtc2dpZCAid3JpdGUtdHJlZSBmYWlsZWQ6IgogbXNnc3RyICJ3cml0ZS10cmVlIG1pc3NseWNrYWRlczoiCiAKLSM6IGxpYi9jb21taXQudGNsOjMwNCBsaWIvY29tbWl0LnRjbDozNDggbGliL2NvbW1pdC50Y2w6MzY4CisjOiBsaWIvY29tbWl0LnRjbDozMDkgbGliL2NvbW1pdC50Y2w6MzUzIGxpYi9jb21taXQudGNsOjM3MwogbXNnaWQgIkNvbW1pdCBmYWlsZWQuIgogbXNnc3RyICJJbmNoZWNrbmluZ2VuIG1pc3NseWNrYWRlcy4iCiAKLSM6IGxpYi9jb21taXQudGNsOjMyMQorIzogbGliL2NvbW1pdC50Y2w6MzI2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ29tbWl0ICVzIGFwcGVhcnMgdG8gYmUgY29ycnVwdCIKIG1zZ3N0ciAiSW5jaGVja25pbmdlbiAlcyB2ZXJrYXIgdmFyYSB0cmFzaWciCiAKLSM6IGxpYi9jb21taXQudGNsOjMyNgorIzogbGliL2NvbW1pdC50Y2w6MzMxCiBtc2dpZCAiIgogIk5vIGNoYW5nZXMgdG8gY29tbWl0LlxuIgogIlxuIgpAQCAtMTM0NiwxOSArMTQ1MCwxOSBAQAogIlxuIgogIkVuIHPDtmtuaW5nIGtvbW1lciBhdHQgc3RhcnRhcyBhdXRvbWF0aXNrdCBudS5cbiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzMzCisjOiBsaWIvY29tbWl0LnRjbDozMzgKIG1zZ2lkICJObyBjaGFuZ2VzIHRvIGNvbW1pdC4iCiBtc2dzdHIgIkluZ2Egw6RuZHJpbmdhciBhdHQgY2hlY2thIGluLiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzQ3CisjOiBsaWIvY29tbWl0LnRjbDozNTIKIG1zZ2lkICJjb21taXQtdHJlZSBmYWlsZWQ6IgogbXNnc3RyICJjb21taXQtdHJlZSBtaXNzbHlja2FkZXM6IgogCi0jOiBsaWIvY29tbWl0LnRjbDozNjcKKyM6IGxpYi9jb21taXQudGNsOjM3MgogbXNnaWQgInVwZGF0ZS1yZWYgZmFpbGVkOiIKIG1zZ3N0ciAidXBkYXRlLXJlZiBtaXNzbHlja2FkZXM6IgogCi0jOiBsaWIvY29tbWl0LnRjbDo0NTQKKyM6IGxpYi9jb21taXQudGNsOjQ2MAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNyZWF0ZWQgY29tbWl0ICVzOiAlcyIKIG1zZ3N0ciAiU2thcGFkZSBpbmNoZWNrbmluZ2VuICVzOiAlcyIKQEAgLTE0MzMsNyArMTUzNyw3IEBACiBtc2dpZCAiSW52YWxpZCBkYXRlIGZyb20gR2l0OiAlcyIKIG1zZ3N0ciAiT2dpbHRpZ3QgZGF0dW0gZnLDpW4gR2l0OiAlcyIKIAotIzogbGliL2RpZmYudGNsOjQ0CisjOiBsaWIvZGlmZi50Y2w6NTkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiTm8gZGlmZmVyZW5jZXMgZGV0ZWN0ZWQuXG4iCkBAIC0xNDU2LDQ4ICsxNTYwLDEwMSBAQAogIkVuIHPDtmtuaW5nIGtvbW1lciBhdXRvbWF0aXNrdCBhdHQgc3RhcnRhcyBmw7ZyIGF0dCBoaXR0YSBhbmRyYSBmaWxlciBzb20ga2FuICIKICJ2YXJhIGkgc2FtbWEgdGlsbHN0w6VuZC4iCiAKLSM6IGxpYi9kaWZmLnRjbDo4MworIzogbGliL2RpZmYudGNsOjk5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiTG9hZGluZyBkaWZmIG9mICVzLi4uIgogbXNnc3RyICJMw6RzZXIgZGlmZmVyZW5zIGbDtnIgJXMuLi4iCiAKLSM6IGxpYi9kaWZmLnRjbDoxMTYgbGliL2RpZmYudGNsOjE5MAorIzogbGliL2RpZmYudGNsOjEyMAorbXNnaWQgIiIKKyJMT0NBTDogZGVsZXRlZFxuIgorIlJFTU9URTpcbiIKK21zZ3N0ciAiIgorIkxPS0FMOiBib3J0dGFnZW5cbiIKKyJGSsOEUlI6XG4iCisKKyM6IGxpYi9kaWZmLnRjbDoxMjUKK21zZ2lkICIiCisiUkVNT1RFOiBkZWxldGVkXG4iCisiTE9DQUw6XG4iCittc2dzdHIgIiIKKyJGSsOEUlI6IGJvcnR0YWdlblxuIgorIkxPS0FMOlxuIgorCisjOiBsaWIvZGlmZi50Y2w6MTMyCittc2dpZCAiTE9DQUw6XG4iCittc2dzdHIgIkxPS0FMOlxuIgorCisjOiBsaWIvZGlmZi50Y2w6MTM1Cittc2dpZCAiUkVNT1RFOlxuIgorbXNnc3RyICJGSsOEUlI6XG4iCisKKyM6IGxpYi9kaWZmLnRjbDoxOTcgbGliL2RpZmYudGNsOjI5NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBkaXNwbGF5ICVzIgogbXNnc3RyICJLYW4gaW50ZSB2aXNhICVzIgogCi0jOiBsaWIvZGlmZi50Y2w6MTE3CisjOiBsaWIvZGlmZi50Y2w6MTk4CiBtc2dpZCAiRXJyb3IgbG9hZGluZyBmaWxlOiIKIG1zZ3N0ciAiRmVsIHZpZCBsw6RzbmluZyBhdiBmaWw6IgogCi0jOiBsaWIvZGlmZi50Y2w6MTI0CisjOiBsaWIvZGlmZi50Y2w6MjA1CiBtc2dpZCAiR2l0IFJlcG9zaXRvcnkgKHN1YnByb2plY3QpIgogbXNnc3RyICJHaXRhcmtpdiAodW5kZXJwcm9qZWt0KSIKIAotIzogbGliL2RpZmYudGNsOjEzNgorIzogbGliL2RpZmYudGNsOjIxNwogbXNnaWQgIiogQmluYXJ5IGZpbGUgKG5vdCBzaG93aW5nIGNvbnRlbnQpLiIKIG1zZ3N0ciAiKiBCaW7DpHJmaWwgKHZpc2FyIGludGUgaW5uZWjDpWxsZXQpLiIKIAotIzogbGliL2RpZmYudGNsOjE5MQotbXNnaWQgIkVycm9yIGxvYWRpbmcgZGlmZjoiCi1tc2dzdHIgIkZlbCB2aWQgaW5sw6RzbmluZyBhdiBkaWZmZXJlbnM6IgorIzogbGliL2RpZmYudGNsOjIyMgorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyIqIFVudHJhY2tlZCBmaWxlIGlzICVkIGJ5dGVzLlxuIgorIiogU2hvd2luZyBvbmx5IGZpcnN0ICVkIGJ5dGVzLlxuIgorbXNnc3RyICIiCisiKiBEZW4gb3Nww6VyYWRlIGZpbGVuIMOkciAlZCBieXRlLlxuIgorIiogVmlzYXIgZW5kYXN0IGlubGVkYW5kZSAlZCBieXRlLlxuIgogCi0jOiBsaWIvZGlmZi50Y2w6MzEzCisjOiBsaWIvZGlmZi50Y2w6MjI4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiogVW50cmFja2VkIGZpbGUgY2xpcHBlZCBoZXJlIGJ5ICVzLlxuIgorIiogVG8gc2VlIHRoZSBlbnRpcmUgZmlsZSwgdXNlIGFuIGV4dGVybmFsIGVkaXRvci5cbiIKK21zZ3N0ciAiIgorIlxuIgorIiogRGVuIG9zcMOlcmFkZSBmaWxlbiBrbGlwcHRlcyBow6RyIGF2ICVzLlxuIgorIiogRsO2ciBhdHQgc2UgaGVsYSBmaWxlbiwgYW52w6RuZCBldHQgZXh0ZXJudCByZWRpZ2VyaW5nc3Byb2dyYW0uXG4iCisKKyM6IGxpYi9kaWZmLnRjbDo0MzYKIG1zZ2lkICJGYWlsZWQgdG8gdW5zdGFnZSBzZWxlY3RlZCBodW5rLiIKIG1zZ3N0ciAiS3VuZGUgaW50ZSB0YSBib3J0IGRlbiB2YWxkYSBkZWxlbiBmcsOlbiBrw7ZuLiIKIAotIzogbGliL2RpZmYudGNsOjMyMAorIzogbGliL2RpZmYudGNsOjQ0MwogbXNnaWQgIkZhaWxlZCB0byBzdGFnZSBzZWxlY3RlZCBodW5rLiIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBsw6RnZ2EgdGlsbCBkZW4gdmFsZGEgZGVsZW4gdGlsbCBrw7ZuLiIKIAotIzogbGliL2RpZmYudGNsOjM4NgorIzogbGliL2RpZmYudGNsOjUwOQogbXNnaWQgIkZhaWxlZCB0byB1bnN0YWdlIHNlbGVjdGVkIGxpbmUuIgogbXNnc3RyICJLdW5kZSBpbnRlIHRhIGJvcnQgZGVuIHZhbGRhIHJhZGVuIGZyw6VuIGvDtm4uIgogCi0jOiBsaWIvZGlmZi50Y2w6Mzk0CisjOiBsaWIvZGlmZi50Y2w6NTE3CiBtc2dpZCAiRmFpbGVkIHRvIHN0YWdlIHNlbGVjdGVkIGxpbmUuIgogbXNnc3RyICJLdW5kZSBpbnRlIGzDpGdnYSB0aWxsIGRlbiB2YWxkYSByYWRlbiB0aWxsIGvDtm4uIgogCisjOiBsaWIvZW5jb2RpbmcudGNsOjQ0MworbXNnaWQgIkRlZmF1bHQiCittc2dzdHIgIlN0YW5kYXJkIgorCisjOiBsaWIvZW5jb2RpbmcudGNsOjQ0OAorIywgdGNsLWZvcm1hdAorbXNnaWQgIlN5c3RlbSAoJXMpIgorbXNnc3RyICJTeXN0ZW1ldHMgKCVzKSIKKworIzogbGliL2VuY29kaW5nLnRjbDo0NTkgbGliL2VuY29kaW5nLnRjbDo0NjUKK21zZ2lkICJPdGhlciIKK21zZ3N0ciAiQW5uYW4iCisKICM6IGxpYi9lcnJvci50Y2w6MjAgbGliL2Vycm9yLnRjbDoxMTQKIG1zZ2lkICJlcnJvciIKIG1zZ3N0ciAiZmVsIgpAQCAtMTUzNCwzOSArMTY5MSw0OCBAQAogbXNnaWQgIlVubG9jayBJbmRleCIKIG1zZ3N0ciAiTMOlcyB1cHAgaW5kZXgiCiAKLSM6IGxpYi9pbmRleC50Y2w6MjgyCisjOiBsaWIvaW5kZXgudGNsOjI4NwogIywgdGNsLWZvcm1hdAogbXNnaWQgIlVuc3RhZ2luZyAlcyBmcm9tIGNvbW1pdCIKIG1zZ3N0ciAiVGFyIGJvcnQgJXMgZsO2ciBpbmNoZWNrbmluZ3Nrw7ZuIgogCi0jOiBsaWIvaW5kZXgudGNsOjMxMworIzogbGliL2luZGV4LnRjbDozMjYKIG1zZ2lkICJSZWFkeSB0byBjb21taXQuIgogbXNnc3RyICJSZWRvIGF0dCBjaGVja2EgaW4uIgogCi0jOiBsaWIvaW5kZXgudGNsOjMyNgorIzogbGliL2luZGV4LnRjbDozMzkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJBZGRpbmcgJXMiCiBtc2dzdHIgIkzDpGdnZXIgdGlsbCAlcyIKIAotIzogbGliL2luZGV4LnRjbDozODEKKyM6IGxpYi9pbmRleC50Y2w6Mzk2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmV2ZXJ0IGNoYW5nZXMgaW4gZmlsZSAlcz8iCiBtc2dzdHIgIsOFdGVyc3TDpGxsIMOkbmRyaW5nYXJuYSBpIGZpbGVuICVzPyIKIAotIzogbGliL2luZGV4LnRjbDozODMKKyM6IGxpYi9pbmRleC50Y2w6Mzk4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmV2ZXJ0IGNoYW5nZXMgaW4gdGhlc2UgJWkgZmlsZXM/IgogbXNnc3RyICLDhXRlcnN0w6RsbCDDpG5kcmluZ2FybmEgaSBkZXNzYSAlaSBmaWxlcj8iCiAKLSM6IGxpYi9pbmRleC50Y2w6MzkxCisjOiBsaWIvaW5kZXgudGNsOjQwNgogbXNnaWQgIkFueSB1bnN0YWdlZCBjaGFuZ2VzIHdpbGwgYmUgcGVybWFuZW50bHkgbG9zdCBieSB0aGUgcmV2ZXJ0LiIKIG1zZ3N0ciAiIgogIkFsbGEgb2vDtmFkZSDDpG5kcmluZ2FyIGtvbW1lciBwZXJtYW5lbnQgZ8OlIGbDtnJsb3JhZGUgdmlkIMOldGVyc3TDpGxsbmluZ2VuLiIKIAotIzogbGliL2luZGV4LnRjbDozOTQKKyM6IGxpYi9pbmRleC50Y2w6NDA5CiBtc2dpZCAiRG8gTm90aGluZyIKIG1zZ3N0ciAiR8O2ciBpbmdlbnRpbmciCiAKKyM6IGxpYi9pbmRleC50Y2w6NDI3Cittc2dpZCAiUmV2ZXJ0aW5nIHNlbGVjdGVkIGZpbGVzIgorbXNnc3RyICLDhXRlcnN0w6RsbGVyIHZhbGRhIGZpbGVyIgorCisjOiBsaWIvaW5kZXgudGNsOjQzMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlJldmVydGluZyAlcyIKK21zZ3N0ciAiw4V0ZXJzdMOkbGxlciAlcyIKKwogIzogbGliL21lcmdlLnRjbDoxMwogbXNnaWQgIiIKICJDYW5ub3QgbWVyZ2Ugd2hpbGUgYW1lbmRpbmcuXG4iCkBAIC0xNTk0LDcgKzE3NjAsNyBAQAogIlxuIgogIlPDtmtuaW5nZW4ga29tbWVyIGF0dCBzdGFydGFzIGF1dG9tYXRpc2t0IG51LlxuIgogCi0jOiBsaWIvbWVyZ2UudGNsOjQ0CisjOiBsaWIvbWVyZ2UudGNsOjQ1CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIllvdSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhIGNvbmZsaWN0ZWQgbWVyZ2UuXG4iCkBAIC0xNjExLDcgKzE3NzcsNyBAQAogIkR1IG3DpXN0ZSBsw7ZzYSBkZW0sIGvDtmEgZmlsZW4gb2NoIGNoZWNrYSBpbiBmw7ZyIGF0dCBmdWxsYm9yZGEgZGVuIGFrdHVlbGxhICIKICJzYW1tYW5zbGFnbmluZ2VuLiBOw6RyIGR1IGdqb3J0IGRldCBrYW4gZHUgcMOlYsO2cmphIGVuIG55IHNhbW1hbnNsYWduaW5nLlxuIgogCi0jOiBsaWIvbWVyZ2UudGNsOjU0CisjOiBsaWIvbWVyZ2UudGNsOjU1CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIllvdSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhIGNoYW5nZS5cbiIKQEAgLTE2MjksMzQgKzE3OTUsMzQgQEAKICJzYW1tYW5zbGFnbmluZy4gT20gZHUgZ8O2ciBkZXQgYmxpciBkZXQgZW5rbGFyZSBhdHQgYXZicnl0YSBlbiBtaXNzbHlja2FkICIKICJzYW1tYW5zbGFnbmluZywgb20gZGV0IHNrdWxsZSB2YXJhIG7DtmR2w6RuZGlndC5cbiIKIAotIzogbGliL21lcmdlLnRjbDoxMDYKKyM6IGxpYi9tZXJnZS50Y2w6MTA3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiJXMgb2YgJXMiCiBtc2dzdHIgIiVzIGF2ICVzIgogCi0jOiBsaWIvbWVyZ2UudGNsOjExOQorIzogbGliL21lcmdlLnRjbDoxMjAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJNZXJnaW5nICVzIGFuZCAlcy4uLiIKIG1zZ3N0ciAiU2zDpXIgaWhvcCAlcyBvY2ggJXMuLi4iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTMwCisjOiBsaWIvbWVyZ2UudGNsOjEzMQogbXNnaWQgIk1lcmdlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIgogbXNnc3RyICJTYW1tYW5zbGFnbmluZ2VuIGF2c2x1dGFkZXMgZnJhbWfDpW5nc3Jpa3QuIgogCi0jOiBsaWIvbWVyZ2UudGNsOjEzMgorIzogbGliL21lcmdlLnRjbDoxMzMKIG1zZ2lkICJNZXJnZSBmYWlsZWQuICBDb25mbGljdCByZXNvbHV0aW9uIGlzIHJlcXVpcmVkLiIKIG1zZ3N0ciAiU2FtbWFuc2xhZ25pbmdlbiBtaXNzbHlja2FkZXMuIER1IG3DpXN0ZSBsw7ZzYSBrb25mbGlrdGVybmEuIgogCi0jOiBsaWIvbWVyZ2UudGNsOjE1NworIzogbGliL21lcmdlLnRjbDoxNTgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJNZXJnZSBJbnRvICVzIgogbXNnc3RyICJTbMOlIGlob3AgaSAlcyIKIAotIzogbGliL21lcmdlLnRjbDoxNzYKKyM6IGxpYi9tZXJnZS50Y2w6MTc3CiBtc2dpZCAiUmV2aXNpb24gVG8gTWVyZ2UiCiBtc2dzdHIgIlJldmlzaW9uZXIgYXR0IHNsw6UgaWhvcCIKIAotIzogbGliL21lcmdlLnRjbDoyMTEKKyM6IGxpYi9tZXJnZS50Y2w6MjEyCiBtc2dpZCAiIgogIkNhbm5vdCBhYm9ydCB3aGlsZSBhbWVuZGluZy5cbiIKICJcbiIKQEAgLTE2NjYsNyArMTgzMiw3IEBACiAiXG4iCiAiRHUgbcOlc3RlIGfDtnJhIGRpZyBmw6RyZGlnIG1lZCBhdHQgdXTDtmthIGluY2hlY2tuaW5nZW4uXG4iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjIxCisjOiBsaWIvbWVyZ2UudGNsOjIyMgogbXNnaWQgIiIKICJBYm9ydCBtZXJnZT9cbiIKICJcbiIKQEAgLTE2ODEsNyArMTg0Nyw3IEBACiAiXG4iCiAiR8OlIHZpZGFyZSBtZWQgYXR0IGF2YnJ5dGEgZGVuIGFrdHVlbGxhIHNhbW1hbnNsYWduaW5nZW4/IgogCi0jOiBsaWIvbWVyZ2UudGNsOjIyNworIzogbGliL21lcmdlLnRjbDoyMjgKIG1zZ2lkICIiCiAiUmVzZXQgY2hhbmdlcz9cbiIKICJcbiIKQEAgLTE2OTYsMTMxICsxODYyLDMzNiBAQAogIlxuIgogIkfDpSB2aWRhcmUgbWVkIGF0dCDDpXRlcnN0w6RsbGEgZGUgYWt0dWVsbGEgw6RuZHJpbmdhcm5hPyIKIAotIzogbGliL21lcmdlLnRjbDoyMzgKKyM6IGxpYi9tZXJnZS50Y2w6MjM5CiBtc2dpZCAiQWJvcnRpbmciCiBtc2dzdHIgIkF2YnJ5dGVyIgogCi0jOiBsaWIvbWVyZ2UudGNsOjIzOAorIzogbGliL21lcmdlLnRjbDoyMzkKIG1zZ2lkICJmaWxlcyByZXNldCIKIG1zZ3N0ciAiZmlsZXIgw6V0ZXJzdMOkbGxkYSIKIAotIzogbGliL21lcmdlLnRjbDoyNjYKKyM6IGxpYi9tZXJnZS50Y2w6MjY3CiBtc2dpZCAiQWJvcnQgZmFpbGVkLiIKIG1zZ3N0ciAiTWlzc2x5Y2thZGVzIGF2YnJ5dGEuIgogCi0jOiBsaWIvbWVyZ2UudGNsOjI2OAorIzogbGliL21lcmdlLnRjbDoyNjkKIG1zZ2lkICJBYm9ydCBjb21wbGV0ZWQuICBSZWFkeS4iCiBtc2dzdHIgIkF2YnJ5dG5pbmcgZnVsbGJvcmRhZC4gUmVkby4iCiAKLSM6IGxpYi9vcHRpb24udGNsOjk1CisjOiBsaWIvbWVyZ2V0b29sLnRjbDo4Cittc2dpZCAiRm9yY2UgcmVzb2x1dGlvbiB0byB0aGUgYmFzZSB2ZXJzaW9uPyIKK21zZ3N0ciAiVHZpbmdhIGzDtnNuaW5nIGF0dCBhbnbDpG5kYSBiYXN2ZXJzaW9uZW4/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDo5Cittc2dpZCAiRm9yY2UgcmVzb2x1dGlvbiB0byB0aGlzIGJyYW5jaD8iCittc2dzdHIgIlR2aW5nYSBsw7ZzbmluZyBhdHQgYW52w6RuZGEgZGVuIGFrdHVlbGxhIGdyZW5lbj8iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjEwCittc2dpZCAiRm9yY2UgcmVzb2x1dGlvbiB0byB0aGUgb3RoZXIgYnJhbmNoPyIKK21zZ3N0ciAiVHZpbmdhIGzDtnNuaW5nIGF0dCBhbnbDpG5kYSBkZW4gYW5kcmEgZ3JlbmVuPyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MTQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiTm90ZSB0aGF0IHRoZSBkaWZmIHNob3dzIG9ubHkgY29uZmxpY3RpbmcgY2hhbmdlcy5cbiIKKyJcbiIKKyIlcyB3aWxsIGJlIG92ZXJ3cml0dGVuLlxuIgorIlxuIgorIlRoaXMgb3BlcmF0aW9uIGNhbiBiZSB1bmRvbmUgb25seSBieSByZXN0YXJ0aW5nIHRoZSBtZXJnZS4iCittc2dzdHIgIiIKKyJPYnNlcnZlcmEgYXR0IGRpZmZlbiBlbmRhc3QgdmlzYXIgZGUgw6RuZHJpbmdhciBzb20gc3TDpXIgaSBrb25mbGlrdC5cbiIKKyJcbiIKKyIlcyBrb21tZXIgYXR0IHNrcml2YXMgw7Z2ZXIuXG4iCisiXG4iCisiRHUgbcOlc3RlIHN0YXJ0YSBvbSBzYW1tYW5zbGFnbmluZ2VuIGbDtnIgYXR0IGfDtnJhIGRlbiBow6RyIG9wZXJhdGlvbmVuIG9nam9yZC4iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjQ1CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRmlsZSAlcyBzZWVtcyB0byBoYXZlIHVucmVzb2x2ZWQgY29uZmxpY3RzLCBzdGlsbCBzdGFnZT8iCittc2dzdHIgIkZpbGVuICVzIHZlcmthciBpbm5laMOlbGxhIG9sw7ZzdGEga29uZmxpa3Rlci4gVmlsbCBkdSBrw7ZhIMOkbmTDpT8iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjYwCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQWRkaW5nIHJlc29sdXRpb24gZm9yICVzIgorbXNnc3RyICJMw6RnZ2VyIHRpbGwgbMO2c25pbmcgZsO2ciAlcyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MTQxCittc2dpZCAiQ2Fubm90IHJlc29sdmUgZGVsZXRpb24gb3IgbGluayBjb25mbGljdHMgdXNpbmcgYSB0b29sIgorbXNnc3RyICJLYW4gaW50ZSBsw7ZzYSBib3J0dGFnbmluZ3MtIGVsbGVyIGzDpG5ra29uZmxpa3RlciBtZWQgZXR0IHZlcmt0eWciCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjE0NgorbXNnaWQgIkNvbmZsaWN0IGZpbGUgZG9lcyBub3QgZXhpc3QiCittc2dzdHIgIktvbmZsaWt0ZmlsIGV4aXN0ZXJhciBpbnRlIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoyNjQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJOb3QgYSBHVUkgbWVyZ2UgdG9vbDogJyVzJyIKK21zZ3N0ciAiSW50ZSBldHQgZ3JhZmlza3QgdmVya3R5ZyBmw7ZyIHNhbW1hbnNsYWduaW5nOiAlcyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MjY4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVW5zdXBwb3J0ZWQgbWVyZ2UgdG9vbCAnJXMnIgorbXNnc3RyICJWZXJrdHlnZXQgXCIlc1wiIGbDtnIgc2FtbWFuc2xhZ25pbmcgc3TDtmRzIGludGUiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjMwMworbXNnaWQgIk1lcmdlIHRvb2wgaXMgYWxyZWFkeSBydW5uaW5nLCB0ZXJtaW5hdGUgaXQ/IgorbXNnc3RyICJWZXJrdHlnZXQgZsO2ciBzYW1tYW5zbGFnbmluZyBrw7ZycyByZWRhbi4gVmlsbCBkdSBhdnNsdXRhIGRldD8iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjMyMworIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJFcnJvciByZXRyaWV2aW5nIHZlcnNpb25zOlxuIgorIiVzIgorbXNnc3RyICIiCisiRmVsIHZpZCBow6RtdG5pbmcgYXYgdmVyc2lvbmVyOlxuIgorIiVzIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDozNDMKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiQ291bGQgbm90IHN0YXJ0IHRoZSBtZXJnZSB0b29sOlxuIgorIlxuIgorIiVzIgorbXNnc3RyICIiCisiS3VuZGUgaW50ZSBzdGFydGEgdmVya3R5ZyBmw7ZyIHNhbW1hbnNsYWduaW5nOlxuIgorIlxuIgorIiVzIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDozNDcKK21zZ2lkICJSdW5uaW5nIG1lcmdlIHRvb2wuLi4iCittc2dzdHIgIkvDtnIgdmVya3R5ZyBmw7ZyIHNhbW1hbnNsYWduaW5nLi4uIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDozNzUgbGliL21lcmdldG9vbC50Y2w6MzgzCittc2dpZCAiTWVyZ2UgdG9vbCBmYWlsZWQuIgorbXNnc3RyICJWZXJrdHlnZXQgZsO2ciBzYW1tYW5zbGFnbmluZyBtaXNzbHlja2FkZXMuIgorCisjOiBsaWIvb3B0aW9uLnRjbDoxMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIkludmFsaWQgZ2xvYmFsIGVuY29kaW5nICclcyciCittc2dzdHIgIkRlbiBnbG9iYWxhIHRlY2tlbmtvZG5pbmdlbiBcIiVzXCIgw6RyIG9naWx0aWciCisKKyM6IGxpYi9vcHRpb24udGNsOjE5CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByZXBvIGVuY29kaW5nICclcyciCittc2dzdHIgIkFya2l2ZXRzIHRlY2tlbmtvZG5pbmcgXCIlc1wiIMOkciBvZ2lsdGlnIgorCisjOiBsaWIvb3B0aW9uLnRjbDoxMTcKIG1zZ2lkICJSZXN0b3JlIERlZmF1bHRzIgogbXNnc3RyICLDhXRlcnN0w6RsbCBzdGFuZGFyZHbDpHJkZW4iCiAKLSM6IGxpYi9vcHRpb24udGNsOjk5CisjOiBsaWIvb3B0aW9uLnRjbDoxMjEKIG1zZ2lkICJTYXZlIgogbXNnc3RyICJTcGFyYSIKIAotIzogbGliL29wdGlvbi50Y2w6MTA5CisjOiBsaWIvb3B0aW9uLnRjbDoxMzEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIlcyBSZXBvc2l0b3J5IgogbXNnc3RyICJBcmtpdmV0ICVzIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMTAKKyM6IGxpYi9vcHRpb24udGNsOjEzMgogbXNnaWQgIkdsb2JhbCAoQWxsIFJlcG9zaXRvcmllcykiCiBtc2dzdHIgIkdsb2JhbHQgKGFsbGEgYXJraXYpIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMTYKKyM6IGxpYi9vcHRpb24udGNsOjEzOAogbXNnaWQgIlVzZXIgTmFtZSIKIG1zZ3N0ciAiQW52w6RuZGFybmFtbiIKIAotIzogbGliL29wdGlvbi50Y2w6MTE3CisjOiBsaWIvb3B0aW9uLnRjbDoxMzkKIG1zZ2lkICJFbWFpbCBBZGRyZXNzIgogbXNnc3RyICJFLXBvc3RhZHJlc3MiCiAKLSM6IGxpYi9vcHRpb24udGNsOjExOQorIzogbGliL29wdGlvbi50Y2w6MTQxCiBtc2dpZCAiU3VtbWFyaXplIE1lcmdlIENvbW1pdHMiCiBtc2dzdHIgIlN1bW1lcmEgc2FtbWFuc2xhZ25pbmdzaW5jaGVja25pbmdhciIKIAotIzogbGliL29wdGlvbi50Y2w6MTIwCisjOiBsaWIvb3B0aW9uLnRjbDoxNDIKIG1zZ2lkICJNZXJnZSBWZXJib3NpdHkiCiBtc2dzdHIgIlByYXRzYW1oZXQgZsO2ciBzYW1tYW5zbGFnbmluZ2FyIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjEKKyM6IGxpYi9vcHRpb24udGNsOjE0MwogbXNnaWQgIlNob3cgRGlmZnN0YXQgQWZ0ZXIgTWVyZ2UiCiBtc2dzdHIgIlZpc2EgZGlmZnN0YXRpc3RpayBlZnRlciBzYW1tYW5zbGFnbmluZyIKIAotIzogbGliL29wdGlvbi50Y2w6MTIzCisjOiBsaWIvb3B0aW9uLnRjbDoxNDQKK21zZ2lkICJVc2UgTWVyZ2UgVG9vbCIKK21zZ3N0ciAiQW52w6RuZCB2ZXJrdHlnIGbDtnIgc2FtbWFuc2xhZ25pbmciCisKKyM6IGxpYi9vcHRpb24udGNsOjE0NgogbXNnaWQgIlRydXN0IEZpbGUgTW9kaWZpY2F0aW9uIFRpbWVzdGFtcHMiCiBtc2dzdHIgIkxpdGEgcMOlIGZpbMOkbmRyaW5nc3RpZHNzdMOkbXBsYXIiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyNAorIzogbGliL29wdGlvbi50Y2w6MTQ3CiBtc2dpZCAiUHJ1bmUgVHJhY2tpbmcgQnJhbmNoZXMgRHVyaW5nIEZldGNoIgogbXNnc3RyICJTdMOkZGEgc3DDpXJhZGUgZ3JlbmFyIHZpZCBow6RtdG5pbmciCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyNQorIzogbGliL29wdGlvbi50Y2w6MTQ4CiBtc2dpZCAiTWF0Y2ggVHJhY2tpbmcgQnJhbmNoZXMiCiBtc2dzdHIgIk1hdGNoYSBzcMOlcmFkZSBncmVuYXIiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyNgorIzogbGliL29wdGlvbi50Y2w6MTQ5CiBtc2dpZCAiQmxhbWUgQ29weSBPbmx5IE9uIENoYW5nZWQgRmlsZXMiCiBtc2dzdHIgIktsYW5kcmEga29waWVyaW5nIGJhcmEgaSDDpG5kcmFkZSBmaWxlciIKIAotIzogbGliL29wdGlvbi50Y2w6MTI3CisjOiBsaWIvb3B0aW9uLnRjbDoxNTAKIG1zZ2lkICJNaW5pbXVtIExldHRlcnMgVG8gQmxhbWUgQ29weSBPbiIKIG1zZ3N0ciAiTWluc3RhIGFudGFsIHRlY2tlbiBhdHQga2xhbmRyYSBrb3BpZXJpbmcgZsO2ciIKIAotIzogbGliL29wdGlvbi50Y2w6MTI4CisjOiBsaWIvb3B0aW9uLnRjbDoxNTEKK21zZ2lkICJCbGFtZSBIaXN0b3J5IENvbnRleHQgUmFkaXVzIChkYXlzKSIKK21zZ3N0ciAiSGlzdG9yaWtyYWRpZSBmw7ZyIGtsYW5kcmluZyAoZGFnYXIpIgorCisjOiBsaWIvb3B0aW9uLnRjbDoxNTIKIG1zZ2lkICJOdW1iZXIgb2YgRGlmZiBDb250ZXh0IExpbmVzIgogbXNnc3RyICJBbnRhbCByYWRlciBzYW1tYW5oYW5nIGkgZGlmZmVyZW5zZXIiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyOQorIzogbGliL29wdGlvbi50Y2w6MTUzCiBtc2dpZCAiQ29tbWl0IE1lc3NhZ2UgVGV4dCBXaWR0aCIKIG1zZ3N0ciAiVGV4dGJyZWRkIGbDtnIgaW5jaGVja25pbmdzbWVkZGVsYW5kZSIKIAotIzogbGliL29wdGlvbi50Y2w6MTMwCisjOiBsaWIvb3B0aW9uLnRjbDoxNTQKIG1zZ2lkICJOZXcgQnJhbmNoIE5hbWUgVGVtcGxhdGUiCiBtc2dzdHIgIk1hbGwgZsO2ciBuYW1uIHDDpSBueWEgZ3JlbmFyIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxOTQKKyM6IGxpYi9vcHRpb24udGNsOjE1NQorbXNnaWQgIkRlZmF1bHQgRmlsZSBDb250ZW50cyBFbmNvZGluZyIKK21zZ3N0ciAiU3RhbmRhcmR0ZWNrZW5rb2RuaW5nIGbDtnIgZmlsaW5uZWjDpWxsIgorCisjOiBsaWIvb3B0aW9uLnRjbDoyMDMKK21zZ2lkICJDaGFuZ2UiCittc2dzdHIgIsOEbmRyYSIKKworIzogbGliL29wdGlvbi50Y2w6MjMwCiBtc2dpZCAiU3BlbGxpbmcgRGljdGlvbmFyeToiCiBtc2dzdHIgIlN0YXZuaW5nc29yZGxpc3RhOiIKIAotIzogbGliL29wdGlvbi50Y2w6MjE4CisjOiBsaWIvb3B0aW9uLnRjbDoyNTQKIG1zZ2lkICJDaGFuZ2UgRm9udCIKIG1zZ3N0ciAiQnl0IHRlY2tlbnNuaXR0IgogCi0jOiBsaWIvb3B0aW9uLnRjbDoyMjIKKyM6IGxpYi9vcHRpb24udGNsOjI1OAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNob29zZSAlcyIKIG1zZ3N0ciAiVsOkbGogJXMiCiAKLSM6IGxpYi9vcHRpb24udGNsOjIyOAorIzogbGliL29wdGlvbi50Y2w6MjY0CiBtc2dpZCAicHQuIgogbXNnc3RyICJwLiIKIAotIzogbGliL29wdGlvbi50Y2w6MjQyCisjOiBsaWIvb3B0aW9uLnRjbDoyNzgKIG1zZ2lkICJQcmVmZXJlbmNlcyIKIG1zZ3N0ciAiSW5zdMOkbGxuaW5nYXIiCiAKLSM6IGxpYi9vcHRpb24udGNsOjI3NworIzogbGliL29wdGlvbi50Y2w6MzE0CiBtc2dpZCAiRmFpbGVkIHRvIGNvbXBsZXRlbHkgc2F2ZSBvcHRpb25zOiIKIG1zZ3N0ciAiTWlzc2x5Y2thZGVzIG1lZCBhdHQgaGVsdCBzcGFyYSBhbHRlcm5hdGl2OiIKIAorIzogbGliL3JlbW90ZS50Y2w6MTYzCittc2dpZCAiUmVtb3ZlIFJlbW90ZSIKK21zZ3N0ciAiVGEgYm9ydCBmasOkcnJhcmtpdiIKKworIzogbGliL3JlbW90ZS50Y2w6MTY4Cittc2dpZCAiUHJ1bmUgZnJvbSIKK21zZ3N0ciAiVGEgYm9ydCBmcsOlbiIKKworIzogbGliL3JlbW90ZS50Y2w6MTczCittc2dpZCAiRmV0Y2ggZnJvbSIKK21zZ3N0ciAiSMOkbXRhIGZyw6VuIgorCisjOiBsaWIvcmVtb3RlLnRjbDoyMTUKK21zZ2lkICJQdXNoIHRvIgorbXNnc3RyICJTw6RuZCB0aWxsIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTkKK21zZ2lkICJBZGQgUmVtb3RlIgorbXNnc3RyICJMw6RnZyB0aWxsIGZqw6RycmFya2l2IgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MjQKK21zZ2lkICJBZGQgTmV3IFJlbW90ZSIKK21zZ3N0ciAiTMOkZ2cgdGlsbCBueXR0IGZqw6RycmFya2l2IgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MjggbGliL3Rvb2xzX2RsZy50Y2w6MzYKK21zZ2lkICJBZGQiCittc2dzdHIgIkzDpGdnIHRpbGwiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDozNworbXNnaWQgIlJlbW90ZSBEZXRhaWxzIgorbXNnc3RyICJEZXRhbGplciBmw7ZyIGZqw6RycmFya2l2IgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NTAKK21zZ2lkICJMb2NhdGlvbjoiCittc2dzdHIgIlBsYXRzOiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjYyCittc2dpZCAiRnVydGhlciBBY3Rpb24iCittc2dzdHIgIll0dGVybGlnYXJlIMOldGfDpHJkIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NjUKK21zZ2lkICJGZXRjaCBJbW1lZGlhdGVseSIKK21zZ3N0ciAiSMOkbXRhIG9tZWRlbGJhcnQiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo3MQorbXNnaWQgIkluaXRpYWxpemUgUmVtb3RlIFJlcG9zaXRvcnkgYW5kIFB1c2giCittc2dzdHIgIkluaXRpZXJhIGZqw6RycmFya2l2IG9jaCBzw6RuZCB0aWxsIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NzcKK21zZ2lkICJEbyBOb3RoaW5nIEVsc2UgTm93IgorbXNnc3RyICJHw7ZyIGluZ2VudCBtZXIgbnUiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMDEKK21zZ2lkICJQbGVhc2Ugc3VwcGx5IGEgcmVtb3RlIG5hbWUuIgorbXNnc3RyICJBbmdlIGV0dCBuYW1uIGbDtnIgZmrDpHJyYXJraXZldC4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMTQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICInJXMnIGlzIG5vdCBhbiBhY2NlcHRhYmxlIHJlbW90ZSBuYW1lLiIKK21zZ3N0ciAiXCIlc1wiIGthbiBpbnRlIGFudsOkbmRhcyBzb20gbmFtbiBww6UgZmrDpHJyYXJraXZldC4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMjUKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gYWRkIHJlbW90ZSAnJXMnIG9mIGxvY2F0aW9uICclcycuIgorbXNnc3RyICJLdW5kZSBpbnRlIGzDpGdnYSB0aWxsIGZqw6RycmFya2l2ZXQgXCIlc1wiIHDDpSBwbGF0c2VuIFwiJXNcIi4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMzMgbGliL3RyYW5zcG9ydC50Y2w6NgorIywgdGNsLWZvcm1hdAorbXNnaWQgImZldGNoICVzIgorbXNnc3RyICJow6RtdGEgJXMiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMzQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGZXRjaGluZyB0aGUgJXMiCittc2dzdHIgIkjDpG10YXIgJXMiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxNTcKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJEbyBub3Qga25vdyBob3cgdG8gaW5pdGlhbGl6ZSByZXBvc2l0b3J5IGF0IGxvY2F0aW9uICclcycuIgorbXNnc3RyICJWZXQgaW50ZSBodXIgYXJraXZldCBww6UgcGxhdHNlbiBcIiVzXCIgc2thbGwgaW5pdGllcmFzLiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjE2MyBsaWIvdHJhbnNwb3J0LnRjbDoyNSBsaWIvdHJhbnNwb3J0LnRjbDo2MworIzogbGliL3RyYW5zcG9ydC50Y2w6ODEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJwdXNoICVzIgorbXNnc3RyICJzw6RuZCAlcyIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjE2NAorIywgdGNsLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgdXAgdGhlICVzIChhdCAlcykiCittc2dzdHIgIktvbmZpZ3VyZXJhciAlcyAocMOlICVzKSIKKwogIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDoyOSBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjM0Ci1tc2dpZCAiRGVsZXRlIFJlbW90ZSBCcmFuY2giCi1tc2dzdHIgIlRhIGJvcnQgZmrDpHJyZ3JlbiIKK21zZ2lkICJEZWxldGUgQnJhbmNoIFJlbW90ZWx5IgorbXNnc3RyICJUYSBib3J0IGdyZW4gZnLDpW4gZmrDpHJyYXJraXYiCiAKICM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NDcKIG1zZ2lkICJGcm9tIFJlcG9zaXRvcnkiCiBtc2dzdHIgIkZyw6VuIGFya2l2IgogCi0jOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjUwIGxpYi90cmFuc3BvcnQudGNsOjEyMworIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo1MCBsaWIvdHJhbnNwb3J0LnRjbDoxMzQKIG1zZ2lkICJSZW1vdGU6IgotbXNnc3RyICJGasOkcnI6IgorbXNnc3RyICJGasOkcnJhcmtpdjoiCiAKLSM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NjYgbGliL3RyYW5zcG9ydC50Y2w6MTM4Ci1tc2dpZCAiQXJiaXRyYXJ5IFVSTDoiCi1tc2dzdHIgIkdvZHR5Y2tsaWcgd2ViYmFkcmVzczoiCisjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjY2IGxpYi90cmFuc3BvcnQudGNsOjE0OQorbXNnaWQgIkFyYml0cmFyeSBMb2NhdGlvbjoiCittc2dzdHIgIkdvZHR5Y2tsaWcgcGxhdHM6IgogCiAjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjg0CiBtc2dpZCAiQnJhbmNoZXMiCkBAIC0xODkwLDE3ICsyMjYxLDIxIEBACiBtc2dpZCAiU2Nhbm5pbmcgJXMuLi4iCiBtc2dzdHIgIlPDtmtlciAlcy4uLiIKIAotIzogbGliL3JlbW90ZS50Y2w6MTY1Ci1tc2dpZCAiUHJ1bmUgZnJvbSIKLW1zZ3N0ciAiVGEgYm9ydCBmcsOlbiIKKyM6IGxpYi9zZWFyY2gudGNsOjIxCittc2dpZCAiRmluZDoiCittc2dzdHIgIlPDtms6IgogCi0jOiBsaWIvcmVtb3RlLnRjbDoxNzAKLW1zZ2lkICJGZXRjaCBmcm9tIgotbXNnc3RyICJIw6RtdGEgZnLDpW4iCisjOiBsaWIvc2VhcmNoLnRjbDoyMworbXNnaWQgIk5leHQiCittc2dzdHIgIk7DpHN0YSIKIAotIzogbGliL3JlbW90ZS50Y2w6MjEzCi1tc2dpZCAiUHVzaCB0byIKLW1zZ3N0ciAiU8OkbmQgdGlsbCIKKyM6IGxpYi9zZWFyY2gudGNsOjI0Cittc2dpZCAiUHJldiIKK21zZ3N0ciAiRsO2cmVnIgorCisjOiBsaWIvc2VhcmNoLnRjbDoyNQorbXNnaWQgIkNhc2UtU2Vuc2l0aXZlIgorbXNnc3RyICJTa2lsaiBww6UgVkVSU0FMRVIvZ2VtZW5lciIKIAogIzogbGliL3Nob3J0Y3V0LnRjbDoyMCBsaWIvc2hvcnRjdXQudGNsOjYxCiBtc2dpZCAiQ2Fubm90IHdyaXRlIHNob3J0Y3V0OiIKQEAgLTE5MzksMjMgKzIzMTQsMTg4IEBACiBtc2dpZCAiTm8gU3VnZ2VzdGlvbnMiCiBtc2dzdHIgIkluZ2EgZsO2cnNsYWciCiAKLSM6IGxpYi9zcGVsbGNoZWNrLnRjbDozODcKKyM6IGxpYi9zcGVsbGNoZWNrLnRjbDozODgKIG1zZ2lkICJVbmV4cGVjdGVkIEVPRiBmcm9tIHNwZWxsIGNoZWNrZXIiCiBtc2dzdHIgIk92w6RudGF0IGZpbHNsdXQgZnLDpW4gc3Rhdm5pbmdza29udHJvbGwiCiAKLSM6IGxpYi9zcGVsbGNoZWNrLnRjbDozOTEKKyM6IGxpYi9zcGVsbGNoZWNrLnRjbDozOTIKIG1zZ2lkICJTcGVsbCBDaGVja2VyIEZhaWxlZCIKIG1zZ3N0ciAiU3Rhdm5pbmdza29udHJvbGwgbWlzc2x5Y2thZGVzIgogCisjOiBsaWIvc3Noa2V5LnRjbDozMQorbXNnaWQgIk5vIGtleXMgZm91bmQuIgorbXNnc3RyICJJbmdhIG55Y2tsYXIgaGl0dGFkZXMuIgorCisjOiBsaWIvc3Noa2V5LnRjbDozNAorIywgdGNsLWZvcm1hdAorbXNnaWQgIkZvdW5kIGEgcHVibGljIGtleSBpbjogJXMiCittc2dzdHIgIkhpdHRhZGUgw7ZwcGVuIG55Y2tlbCBpOiAlcyIKKworIzogbGliL3NzaGtleS50Y2w6NDAKK21zZ2lkICJHZW5lcmF0ZSBLZXkiCittc2dzdHIgIlNrYXBhIG55Y2tlbCIKKworIzogbGliL3NzaGtleS50Y2w6NTYKK21zZ2lkICJDb3B5IFRvIENsaXBib2FyZCIKK21zZ3N0ciAiS29waWVyYSB0aWxsIFVya2xpcHAiCisKKyM6IGxpYi9zc2hrZXkudGNsOjcwCittc2dpZCAiWW91ciBPcGVuU1NIIFB1YmxpYyBLZXkiCittc2dzdHIgIkRpbiDDtnBwbmEgT3BlblNTSC1ueWNrZWwiCisKKyM6IGxpYi9zc2hrZXkudGNsOjc4Cittc2dpZCAiR2VuZXJhdGluZy4uLiIKK21zZ3N0ciAiU2thcGFyLi4uIgorCisjOiBsaWIvc3Noa2V5LnRjbDo4NAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZCBub3Qgc3RhcnQgc3NoLWtleWdlbjpcbiIKKyJcbiIKKyIlcyIKK21zZ3N0ciAiIgorIkt1bmRlIGludGUgc3RhcnRhIHNzaC1rZXlnZW46XG4iCisiXG4iCisiJXMiCisKKyM6IGxpYi9zc2hrZXkudGNsOjExMQorbXNnaWQgIkdlbmVyYXRpb24gZmFpbGVkLiIKK21zZ3N0ciAiTWlzc2x5Y2thZGVzIG1lZCBhdHQgc2thcGEuIgorCisjOiBsaWIvc3Noa2V5LnRjbDoxMTgKK21zZ2lkICJHZW5lcmF0aW9uIHN1Y2NlZGVkLCBidXQgbm8ga2V5cyBmb3VuZC4iCittc2dzdHIgIkx5Y2thZGVzIHNrYXBhIG55Y2tlbG4sIG1lbiBoaXR0YXIgaW50ZSBuw6Vnb24gbnlja2VsLiIKKworIzogbGliL3NzaGtleS50Y2w6MTIxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiWW91ciBrZXkgaXMgaW46ICVzIgorbXNnc3RyICJEaW4gbnlja2VsIGZpbm5zIGk6ICVzIgorCiAjOiBsaWIvc3RhdHVzX2Jhci50Y2w6ODMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIlcyAuLi4gJSppIG9mICUqaSAlcyAoJTNpJSUpIgogbXNnc3RyICIlcy4uLiAlKmkgYXYgJSppICVzICglM2klJSkiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjYKKyM6IGxpYi90b29scy50Y2w6NzUKICMsIHRjbC1mb3JtYXQKLW1zZ2lkICJmZXRjaCAlcyIKLW1zZ3N0ciAiaMOkbXRhICVzIgorbXNnaWQgIlJ1bm5pbmcgJXMgcmVxdWlyZXMgYSBzZWxlY3RlZCBmaWxlLiIKK21zZ3N0ciAiRsO2ciBhdHQgc3RhcnRhICVzIG3DpXN0ZSBkdSB2w6RsamEgZW4gZmlsLiIKKworIzogbGliL3Rvb2xzLnRjbDo5MAorIywgdGNsLWZvcm1hdAorbXNnaWQgIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBydW4gJXM/IgorbXNnc3RyICLDhHIgZHUgc8Oka2VyIHDDpSBhdHQgZHUgdmlsbCBzdGFydGEgJXM/IgorCisjOiBsaWIvdG9vbHMudGNsOjExMAorIywgdGNsLWZvcm1hdAorbXNnaWQgIlRvb2w6ICVzIgorbXNnc3RyICJWZXJrdHlnOiAlcyIKKworIzogbGliL3Rvb2xzLnRjbDoxMTEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJSdW5uaW5nOiAlcyIKK21zZ3N0ciAiRXhla3ZlcmFyOiAlcyIKKworIzogbGliL3Rvb2xzLnRjbDoxNDkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJUb29sIGNvbXBsZXRlZCBzdWNjZXNmdWxseTogJXMiCittc2dzdHIgIlZlcmt0eWdldCBhdnNsdXRhZGVzIGZyYW1nw6VuZ3NyaWt0OiAlcyIKKworIzogbGliL3Rvb2xzLnRjbDoxNTEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJUb29sIGZhaWxlZDogJXMiCittc2dzdHIgIlZlcmt0eWdldCBtaXNzbHlja2FkZXM6ICVzIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoyMgorbXNnaWQgIkFkZCBUb29sIgorbXNnc3RyICJMw6RnZyB0aWxsIHZlcmt0eWciCisKKyM6IGxpYi90b29sc19kbGcudGNsOjI4Cittc2dpZCAiQWRkIE5ldyBUb29sIENvbW1hbmQiCittc2dzdHIgIkzDpGdnIHRpbGwgbnl0dCB2ZXJrdHlnc2tvbW1hbmRvIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDozMworbXNnaWQgIkFkZCBnbG9iYWxseSIKK21zZ3N0ciAiTMOkZ2cgdGlsbCBnbG9iYWx0IgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo0NQorbXNnaWQgIlRvb2wgRGV0YWlscyIKK21zZ3N0ciAiRGV0YWxqZXIgZsO2ciB2ZXJrdHlnIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo0OAorbXNnaWQgIlVzZSAnLycgc2VwYXJhdG9ycyB0byBjcmVhdGUgYSBzdWJtZW51IHRyZWU6IgorbXNnc3RyICJBbnbDpG5kIFwiL1wiLWF2ZGVsYXJlIGbDtnIgYXR0IHNrYXBhIGV0dCB1bmRlcm1lbnl0csOkZDoiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjYxCittc2dpZCAiQ29tbWFuZDoiCittc2dzdHIgIktvbW1hbmRvOiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6NzQKK21zZ2lkICJTaG93IGEgZGlhbG9nIGJlZm9yZSBydW5uaW5nIgorbXNnc3RyICJWaXNhIGRpYWxvZyBpbm5hbiBwcm9ncmFtbWV0IHN0YXJ0YXMiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjgwCittc2dpZCAiQXNrIHRoZSB1c2VyIHRvIHNlbGVjdCBhIHJldmlzaW9uIChzZXRzICRSRVZJU0lPTikiCittc2dzdHIgIkJlIGFudsOkbmRhcmVuIHbDpGxqYSBlbiB2ZXJzaW9uIChzw6R0dGVyICRSRVZJU0lPTikiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjg1Cittc2dpZCAiQXNrIHRoZSB1c2VyIGZvciBhZGRpdGlvbmFsIGFyZ3VtZW50cyAoc2V0cyAkQVJHUykiCittc2dzdHIgIkJlIGFudsOkbmRhcmVuIG9tIHl0dGVybGlnYXJlIHBhcmFtZXRyYXIgKHPDpHR0ZXIgJEFSR1MpIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo5MgorbXNnaWQgIkRvbid0IHNob3cgdGhlIGNvbW1hbmQgb3V0cHV0IHdpbmRvdyIKK21zZ3N0ciAiVmlzYSBpbnRlIGtvbW1hbmRvdHMgdXRkYXRhZsO2bnN0ZXIiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjk3Cittc2dpZCAiUnVuIG9ubHkgaWYgYSBkaWZmIGlzIHNlbGVjdGVkICgkRklMRU5BTUUgbm90IGVtcHR5KSIKK21zZ3N0ciAiS8O2ciBlbmRhc3Qgb20gZW4gZGlmZiBoYXIgbWFya2VyYXRzICgkRklMRU5BTUUgw6RyIGludGUgdG9tdCkiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjEyMQorbXNnaWQgIlBsZWFzZSBzdXBwbHkgYSBuYW1lIGZvciB0aGUgdG9vbC4iCittc2dzdHIgIkFuZ2UgZXR0IG5hbW4gZsO2ciB2ZXJrdHlnZXQuIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoxMjkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJUb29sICclcycgYWxyZWFkeSBleGlzdHMuIgorbXNnc3RyICJWZXJrdHlnZXQgXCIlc1wiIGZpbm5zIHJlZGFuLiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTUxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkIG5vdCBhZGQgdG9vbDpcbiIKKyIlcyIKK21zZ3N0ciAiIgorIkt1bmRlIGludGUgbMOkZ2dhIHRpbGwgdmVya3R5Z2V0OlxuIgorIiVzIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoxOTAKK21zZ2lkICJSZW1vdmUgVG9vbCIKK21zZ3N0ciAiVGEgYm9ydCB2ZXJrdHlnIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoxOTYKK21zZ2lkICJSZW1vdmUgVG9vbCBDb21tYW5kcyIKK21zZ3N0ciAiVGEgYm9ydCB2ZXJrdHlnc2tvbW1hbmRvbiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjAwCittc2dpZCAiUmVtb3ZlIgorbXNnc3RyICJUYSBib3J0IgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoyMzYKK21zZ2lkICIoQmx1ZSBkZW5vdGVzIHJlcG9zaXRvcnktbG9jYWwgdG9vbHMpIgorbXNnc3RyICIoQmzDpXR0IGFuZ2VyIHZlcmt0eWcgbG9rYWxhIGbDtnIgYXJraXZldCkiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjI5NworIywgdGNsLWZvcm1hdAorbXNnaWQgIlJ1biBDb21tYW5kOiAlcyIKK21zZ3N0ciAiS8O2ciBrb21tYW5kb3Q6ICVzIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDozMTEKK21zZ2lkICJBcmd1bWVudHMiCittc2dzdHIgIkFyZ3VtZW50IgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDozNDgKK21zZ2lkICJPSyIKK21zZ3N0ciAiT0siCiAKICM6IGxpYi90cmFuc3BvcnQudGNsOjcKICMsIHRjbC1mb3JtYXQKQEAgLTE5NzIsNDkgKzI1MTIsNTUgQEAKIG1zZ2lkICJQcnVuaW5nIHRyYWNraW5nIGJyYW5jaGVzIGRlbGV0ZWQgZnJvbSAlcyIKIG1zZ3N0ciAiVGFyIGJvcnQgc3DDpXJhbmRlIGdyZW5hciBzb20gdGFnaXRzIGJvcnQgZnLDpW4gJXMiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjI1IGxpYi90cmFuc3BvcnQudGNsOjcxCi0jLCB0Y2wtZm9ybWF0Ci1tc2dpZCAicHVzaCAlcyIKLW1zZ3N0ciAic8OkbmQgJXMiCi0KICM6IGxpYi90cmFuc3BvcnQudGNsOjI2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUHVzaGluZyBjaGFuZ2VzIHRvICVzIgogbXNnc3RyICJTw6RuZGVyIMOkbmRyaW5nYXIgdGlsbCAlcyIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6NzIKKyM6IGxpYi90cmFuc3BvcnQudGNsOjY0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiTWlycm9yaW5nIHRvICVzIgorbXNnc3RyICJTcGVnbGFyIHRpbGwgJXMiCisKKyM6IGxpYi90cmFuc3BvcnQudGNsOjgyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUHVzaGluZyAlcyAlcyB0byAlcyIKIG1zZ3N0ciAiU8OkbmRlciAlcyAlcyB0aWxsICVzIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDo4OQorIzogbGliL3RyYW5zcG9ydC50Y2w6MTAwCiBtc2dpZCAiUHVzaCBCcmFuY2hlcyIKLW1zZ3N0ciAiU8OkbmRlciBncmVuYXIiCittc2dzdHIgIlPDpG5kIGdyZW5hciIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6MTAzCisjOiBsaWIvdHJhbnNwb3J0LnRjbDoxMTQKIG1zZ2lkICJTb3VyY2UgQnJhbmNoZXMiCiBtc2dzdHIgIkvDpGxsZ3JlbmFyIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDoxMjAKKyM6IGxpYi90cmFuc3BvcnQudGNsOjEzMQogbXNnaWQgIkRlc3RpbmF0aW9uIFJlcG9zaXRvcnkiCiBtc2dzdHIgIkRlc3RpbmF0aW9uc2Fya2l2IgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDoxNTgKKyM6IGxpYi90cmFuc3BvcnQudGNsOjE2OQogbXNnaWQgIlRyYW5zZmVyIE9wdGlvbnMiCiBtc2dzdHIgIsOWdmVyZsO2cmluZ3NhbHRlcm5hdGl2IgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDoxNjAKKyM6IGxpYi90cmFuc3BvcnQudGNsOjE3MQogbXNnaWQgIkZvcmNlIG92ZXJ3cml0ZSBleGlzdGluZyBicmFuY2ggKG1heSBkaXNjYXJkIGNoYW5nZXMpIgogbXNnc3RyICJUdmluZ2Egw7Z2ZXJza3Jpdm5pbmcgYXYgYmVmaW50bGlnIGdyZW4gKGthbiBrYXN0YSBib3J0IMOkbmRyaW5nYXIpIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDoxNjQKKyM6IGxpYi90cmFuc3BvcnQudGNsOjE3NQogbXNnaWQgIlVzZSB0aGluIHBhY2sgKGZvciBzbG93IG5ldHdvcmsgY29ubmVjdGlvbnMpIgogbXNnc3RyICJBbnbDpG5kIHR1bnQgcGFrZXQgKGbDtnIgbMOlbmdzYW1tYSBuw6R0dmVya3NhbnNsdXRuaW5nYXIpIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDoxNjgKKyM6IGxpYi90cmFuc3BvcnQudGNsOjE3OQogbXNnaWQgIkluY2x1ZGUgdGFncyIKIG1zZ3N0ciAiVGEgbWVkIHRhZ2dhciIKIAorI34gbXNnaWQgIlVSTDoiCisjfiBtc2dzdHIgIldlYmJhZHJlc3M6IgorCisjfiBtc2dpZCAiRGVsZXRlIFJlbW90ZSBCcmFuY2giCisjfiBtc2dzdHIgIlRhIGJvcnQgZmrDpHJyZ3JlbiIKKwogI34gbXNnaWQgIiIKICN+ICJVbmFibGUgdG8gc3RhcnQgZ2l0azpcbiIKICN+ICJcbiIKZGlmZiAtLWdpdCBhL2dpdC1sb3N0LWZvdW5kLnNoIGIvZ2l0LWxvc3QtZm91bmQuc2gKaW5kZXggOWNlZGFmOC4uMGIzZThjNyAxMDA3NTUKLS0tIGEvZ2l0LWxvc3QtZm91bmQuc2gKKysrIGIvZ2l0LWxvc3QtZm91bmQuc2gKQEAgLTIwLDcgKzIwLDcgQEAKIGRvCiAJY2FzZSAiJGRhbmdsaW5nIiBpbgogCWRhbmdsaW5nKQotCQlpZiBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5ICIkc2hhMV4wIiA+L2Rldi9udWxsIDI+L2Rldi9udWxsCisJCWlmIGdpdCByZXYtcGFyc2UgLXEgLS12ZXJpZnkgIiRzaGExXjAiID4vZGV2L251bGwKIAkJdGhlbgogCQkJZGlyPSIkbGFmL2NvbW1pdCIKIAkJCWdpdCBzaG93LWJyYW5jaCAiJHNoYTEiCmRpZmYgLS1naXQgYS9naXQtbWVyZ2Utb2N0b3B1cy5zaCBiL2dpdC1tZXJnZS1vY3RvcHVzLnNoCmluZGV4IDY0NWUxMTQuLjFkYWRiYjQgMTAwNzU1Ci0tLSBhL2dpdC1tZXJnZS1vY3RvcHVzLnNoCisrKyBiL2dpdC1tZXJnZS1vY3RvcHVzLnNoCkBAIC02MSw3ICs2MSw3IEBACiAJCWV4aXQgMgogCWVzYWMKIAotCWNvbW1vbj0kKGdpdCBtZXJnZS1iYXNlIC0tYWxsICRNUkMgJFNIQTEpIHx8CisJY29tbW9uPSQoZ2l0IG1lcmdlLWJhc2UgLS1hbGwgJFNIQTEgJE1SQykgfHwKIAkJZGllICJVbmFibGUgdG8gZmluZCBjb21tb24gY29tbWl0IHdpdGggJFNIQTEiCiAKIAljYXNlICIkTEYkY29tbW9uJExGIiBpbgpAQCAtMTAwLDE0ICsxMDAsNyBAQAogCQluZXh0PSQoZ2l0IHdyaXRlLXRyZWUgMj4vZGV2L251bGwpCiAJZmkKIAotCSMgV2UgaGF2ZSBtZXJnZWQgdGhlIG90aGVyIGJyYW5jaCBzdWNjZXNzZnVsbHkuICBJZGVhbGx5Ci0JIyB3ZSBjb3VsZCBpbXBsZW1lbnQgT1InZWQgaGVhZHMgaW4gbWVyZ2UtYmFzZSwgYW5kIGtlZXAKLQkjIGEgbGlzdCBvZiBjb21taXRzIHdlIGhhdmUgbWVyZ2VkIHNvIGZhciBpbiBNUkMgdG8gZmVlZAotCSMgdGhlbSB0byBtZXJnZS1iYXNlLCBidXQgd2UgYXBwcm94aW1hdGUgaXQgYnkga2VlcCB1c2luZwotCSMgdGhlIGN1cnJlbnQgTVJDLiAgV2UgdXNlZCB0byB1cGRhdGUgaXQgdG8gJGNvbW1vbiwgd2hpY2gKLQkjIHdhcyBpbmNvcnJlY3RseSBkb2luZyBBTkQnZWQgbWVyZ2UtYmFzZSBoZXJlLCB3aGljaCB3YXMKLQkjIHVubmVlZGVkLgotCisJTVJDPSIkTVJDICRTSEExIgogCU1SVD0kbmV4dAogZG9uZQogCmRpZmYgLS1naXQgYS9naXQtcHVsbC5zaCBiL2dpdC1wdWxsLnNoCmluZGV4IDY2NGZlMzQuLjJjN2Y0MzIgMTAwNzU1Ci0tLSBhL2dpdC1wdWxsLnNoCisrKyBiL2dpdC1wdWxsLnNoCkBAIC0xNiwxMyArMTYsMTcgQEAKIHRlc3QgLXogIiQoZ2l0IGxzLWZpbGVzIC11KSIgfHwKIAlkaWUgIllvdSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhIGNvbmZsaWN0ZWQgbWVyZ2UuIgogCi1zdHJhdGVneV9hcmdzPSBub19zdGF0PSBub19jb21taXQ9IHNxdWFzaD0gbm9fZmY9IGxvZ19hcmc9CitzdHJhdGVneV9hcmdzPSBub19zdGF0PSBub19jb21taXQ9IHNxdWFzaD0gbm9fZmY9IGxvZ19hcmc9IHZlcmJvc2l0eT0KIGN1cnJfYnJhbmNoPSQoZ2l0IHN5bWJvbGljLXJlZiAtcSBIRUFEKQogY3Vycl9icmFuY2hfc2hvcnQ9JChlY2hvICIkY3Vycl9icmFuY2giIHwgc2VkICJzfHJlZnMvaGVhZHMvfHwiKQogcmViYXNlPSQoZ2l0IGNvbmZpZyAtLWJvb2wgYnJhbmNoLiRjdXJyX2JyYW5jaF9zaG9ydC5yZWJhc2UpCiB3aGlsZSA6CiBkbwogCWNhc2UgIiQxIiBpbgorCS1xfC0tcXVpZXQpCisJCXZlcmJvc2l0eT0iJHZlcmJvc2l0eSAtcSIgOzsKKwktdnwtLXZlcmJvc2UpCisJCXZlcmJvc2l0eT0iJHZlcmJvc2l0eSAtdiIgOzsKIAktbnwtLW5vLXN0YXR8LS1uby1zdW1tYXJ5KQogCQlub19zdGF0PS1uIDs7CiAJLS1zdGF0fC0tc3VtbWFyeSkKQEAgLTExNywxMyArMTIxLDEzIEBACiAJdGVzdCAteiAiJG9yaWdpbiIgJiYgb3JpZ2luPSQoZ2V0X2RlZmF1bHRfcmVtb3RlKQogCXJlZmxpc3Q9IiQoZ2V0X3JlbW90ZV9yZWZzX2Zvcl9mZXRjaCAiJEAiIDI+L2Rldi9udWxsIHwKIAkJc2VkICJzfHJlZnMvaGVhZHMvXCguKlwpOnxcMXwiKSIgJiYKLQlvbGRyZW1vdGVyZWY9IiQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBcCi0JCSJyZWZzL3JlbW90ZXMvJG9yaWdpbi8kcmVmbGlzdCIgMj4vZGV2L251bGwpIgorCW9sZHJlbW90ZXJlZj0iJChnaXQgcmV2LXBhcnNlIC1xIC0tdmVyaWZ5IFwKKwkJInJlZnMvcmVtb3Rlcy8kb3JpZ2luLyRyZWZsaXN0IikiCiB9Ci1vcmlnX2hlYWQ9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQgMj4vZGV2L251bGwpCi1naXQgZmV0Y2ggLS11cGRhdGUtaGVhZC1vayAiJEAiIHx8IGV4aXQgMQorb3JpZ19oZWFkPSQoZ2l0IHJldi1wYXJzZSAtcSAtLXZlcmlmeSBIRUFEKQorZ2l0IGZldGNoICR2ZXJib3NpdHkgLS11cGRhdGUtaGVhZC1vayAiJEAiIHx8IGV4aXQgMQogCi1jdXJyX2hlYWQ9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQgMj4vZGV2L251bGwpCitjdXJyX2hlYWQ9JChnaXQgcmV2LXBhcnNlIC1xIC0tdmVyaWZ5IEhFQUQpCiBpZiB0ZXN0IC1uICIkb3JpZ19oZWFkIiAmJiB0ZXN0ICIkY3Vycl9oZWFkIiAhPSAiJG9yaWdfaGVhZCIKIHRoZW4KIAkjIFRoZSBmZXRjaCBpbnZvbHZlZCB1cGRhdGluZyB0aGUgY3VycmVudCBicmFuY2guCkBAIC0xODIsNCArMTg2LDQgQEAKIAlleGVjIGdpdC1yZWJhc2UgJHN0cmF0ZWd5X2FyZ3MgLS1vbnRvICRtZXJnZV9oZWFkIFwKIAkke29sZHJlbW90ZXJlZjotJG1lcmdlX2hlYWR9CiBleGVjIGdpdC1tZXJnZSAkbm9fc3RhdCAkbm9fY29tbWl0ICRzcXVhc2ggJG5vX2ZmICRsb2dfYXJnICRzdHJhdGVneV9hcmdzIFwKLQkiJG1lcmdlX25hbWUiIEhFQUQgJG1lcmdlX2hlYWQKKwkiJG1lcmdlX25hbWUiIEhFQUQgJG1lcmdlX2hlYWQgJHZlcmJvc2l0eQpkaWZmIC0tZ2l0IGEvZ2l0LXJlYmFzZS0taW50ZXJhY3RpdmUuc2ggYi9naXQtcmViYXNlLS1pbnRlcmFjdGl2ZS5zaAppbmRleCA1OWMxNDhmLi4xY2ViNTdhIDEwMDc1NQotLS0gYS9naXQtcmViYXNlLS1pbnRlcmFjdGl2ZS5zaAorKysgYi9naXQtcmViYXNlLS1pbnRlcmFjdGl2ZS5zaApAQCAtMjYsNiArMjYsNyBAQAogY29udGludWUgICAgICAgICAgIGNvbnRpbnVlIHJlYmFzaW5nIHByb2Nlc3MKIGFib3J0ICAgICAgICAgICAgICBhYm9ydCByZWJhc2luZyBwcm9jZXNzIGFuZCByZXN0b3JlIG9yaWdpbmFsIGJyYW5jaAogc2tpcCAgICAgICAgICAgICAgIHNraXAgY3VycmVudCBwYXRjaCBhbmQgY29udGludWUgcmViYXNpbmcgcHJvY2Vzcworbm8tdmVyaWZ5ICAgICAgICAgIG92ZXJyaWRlIHByZS1yZWJhc2UgaG9vayBmcm9tIHN0b3BwaW5nIHRoZSBvcGVyYXRpb24KICIKIAogLiBnaXQtc2gtc2V0dXAKQEAgLTM3LDEwICszOCwxMiBAQAogTVNHPSIkRE9URVNUIi9tZXNzYWdlCiBTUVVBU0hfTVNHPSIkRE9URVNUIi9tZXNzYWdlLXNxdWFzaAogUkVXUklUVEVOPSIkRE9URVNUIi9yZXdyaXR0ZW4KK0RST1BQRUQ9IiRET1RFU1QiL2Ryb3BwZWQKIFBSRVNFUlZFX01FUkdFUz0KIFNUUkFURUdZPQogT05UTz0KIFZFUkJPU0U9CitPS19UT19TS0lQX1BSRV9SRUJBU0U9CiAKIEdJVF9DSEVSUllfUElDS19IRUxQPSIgIEFmdGVyIHJlc29sdmluZyB0aGUgY29uZmxpY3RzLAogbWFyayB0aGUgY29ycmVjdGVkIHBhdGhzIHdpdGggJ2dpdCBhZGQgPHBhdGhzPicsIGFuZApAQCAtNjYsNyArNjksOCBAQAogfQogCiBydW5fcHJlX3JlYmFzZV9ob29rICgpIHsKLQlpZiB0ZXN0IC14ICIkR0lUX0RJUi9ob29rcy9wcmUtcmViYXNlIgorCWlmIHRlc3QgLXogIiRPS19UT19TS0lQX1BSRV9SRUJBU0UiICYmCisJICAgdGVzdCAteCAiJEdJVF9ESVIvaG9va3MvcHJlLXJlYmFzZSIKIAl0aGVuCiAJCSIkR0lUX0RJUi9ob29rcy9wcmUtcmViYXNlIiAkezErIiRAIn0gfHwgewogCQkJZWNobyA+JjIgIlRoZSBwcmUtcmViYXNlIGhvb2sgcmVmdXNlZCB0byByZWJhc2UuIgpAQCAtMTExLDkgKzExNSwxOCBAQAogfQogCiBtYWtlX3BhdGNoICgpIHsKLQlwYXJlbnRfc2hhMT0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgIiQxIl4pIHx8Ci0JCWRpZSAiQ2Fubm90IGdldCBwYXRjaCBmb3IgJDFeIgotCWdpdCBkaWZmLXRyZWUgLXAgIiRwYXJlbnRfc2hhMSIuLiIkMSIgPiAiJERPVEVTVCIvcGF0Y2gKKwlzaGExX2FuZF9wYXJlbnRzPSIkKGdpdCByZXYtbGlzdCAtLXBhcmVudHMgLTEgIiQxIikiCisJY2FzZSAiJHNoYTFfYW5kX3BhcmVudHMiIGluCisJPyonICc/KicgJz8qKQorCQlnaXQgZGlmZiAtLWNjICRzaGExX2FuZF9wYXJlbnRzCisJCTs7CisJPyonICc/KikKKwkJZ2l0IGRpZmYtdHJlZSAtcCAiJDFeISIKKwkJOzsKKwkqKQorCQllY2hvICJSb290IGNvbW1pdCIKKwkJOzsKKwllc2FjID4gIiRET1RFU1QiL3BhdGNoCiAJdGVzdCAtZiAiJERPVEVTVCIvbWVzc2FnZSB8fAogCQlnaXQgY2F0LWZpbGUgY29tbWl0ICIkMSIgfCBzZWQgIjEsL14kL2QiID4gIiRET1RFU1QiL21lc3NhZ2UKIAl0ZXN0IC1mICIkRE9URVNUIi9hdXRob3Itc2NyaXB0IHx8CkBAIC0xNjksMjEgKzE4MiwzOSBAQAogCiAJaWYgdGVzdCAtZiAiJERPVEVTVCIvY3VycmVudC1jb21taXQKIAl0aGVuCi0JCWN1cnJlbnRfY29tbWl0PSQoY2F0ICIkRE9URVNUIi9jdXJyZW50LWNvbW1pdCkgJiYKLQkJZ2l0IHJldi1wYXJzZSBIRUFEID4gIiRSRVdSSVRURU4iLyRjdXJyZW50X2NvbW1pdCAmJgotCQlybSAiJERPVEVTVCIvY3VycmVudC1jb21taXQgfHwKLQkJZGllICJDYW5ub3Qgd3JpdGUgY3VycmVudCBjb21taXQncyByZXBsYWNlbWVudCBzaGExIgorCQlpZiB0ZXN0ICIkZmFzdF9mb3J3YXJkIiA9IHQKKwkJdGhlbgorCQkJY2F0ICIkRE9URVNUIi9jdXJyZW50LWNvbW1pdCB8IHdoaWxlIHJlYWQgY3VycmVudF9jb21taXQKKwkJCWRvCisJCQkJZ2l0IHJldi1wYXJzZSBIRUFEID4gIiRSRVdSSVRURU4iLyRjdXJyZW50X2NvbW1pdAorCQkJZG9uZQorCQkJcm0gIiRET1RFU1QiL2N1cnJlbnQtY29tbWl0IHx8CisJCQlkaWUgIkNhbm5vdCB3cml0ZSBjdXJyZW50IGNvbW1pdCdzIHJlcGxhY2VtZW50IHNoYTEiCisJCWZpCiAJZmkKIAotCWVjaG8gJHNoYTEgPiAiJERPVEVTVCIvY3VycmVudC1jb21taXQKKwllY2hvICRzaGExID4+ICIkRE9URVNUIi9jdXJyZW50LWNvbW1pdAogCiAJIyByZXdyaXRlIHBhcmVudHM7IGlmIG5vbmUgd2VyZSByZXdyaXR0ZW4sIHdlIGNhbiBmYXN0LWZvcndhcmQuCiAJbmV3X3BhcmVudHM9Ci0JZm9yIHAgaW4gJChnaXQgcmV2LWxpc3QgLS1wYXJlbnRzIC0xICRzaGExIHwgY3V0IC1kJyAnIC1mMi0pCisJcGVuZD0iICQoZ2l0IHJldi1saXN0IC0tcGFyZW50cyAtMSAkc2hhMSB8IGN1dCAtZCcgJyAtZjItKSIKKwl3aGlsZSBbICIkcGVuZCIgIT0gIiIgXQogCWRvCisJCXA9JChleHByICIkcGVuZCIgOiAnIFwoW14gXSpcKScpCisJCXBlbmQ9IiR7cGVuZCMgJHB9IgorCiAJCWlmIHRlc3QgLWYgIiRSRVdSSVRURU4iLyRwCiAJCXRoZW4KIAkJCW5ld19wPSQoY2F0ICIkUkVXUklUVEVOIi8kcCkKKworCQkJIyBJZiB0aGUgdG9kbyByZW9yZGVyZWQgY29tbWl0cywgYW5kIG91ciBwYXJlbnQgaXMgbWFya2VkIGZvcgorCQkJIyByZXdyaXRpbmcsIGJ1dCBoYXNuJ3QgYmVlbiBnb3R0ZW4gdG8geWV0LCBhc3N1bWUgdGhlIHVzZXIgbWVhbnQgdG8KKwkJCSMgZHJvcCBpdCBvbiB0b3Agb2YgdGhlIGN1cnJlbnQgSEVBRAorCQkJaWYgdGVzdCAteiAiJG5ld19wIgorCQkJdGhlbgorCQkJCW5ld19wPSQoZ2l0IHJldi1wYXJzZSBIRUFEKQorCQkJZmkKKwogCQkJdGVzdCAkcCAhPSAkbmV3X3AgJiYgZmFzdF9mb3J3YXJkPWYKIAkJCWNhc2UgIiRuZXdfcGFyZW50cyIgaW4KIAkJCSokbmV3X3AqKQpAQCAtMTkzLDcgKzIyNCwxMyBAQAogCQkJCTs7CiAJCQllc2FjCiAJCWVsc2UKLQkJCW5ld19wYXJlbnRzPSIkbmV3X3BhcmVudHMgJHAiCisJCQlpZiB0ZXN0IC1mICIkRFJPUFBFRCIvJHAKKwkJCXRoZW4KKwkJCQlmYXN0X2ZvcndhcmQ9ZgorCQkJCXBlbmQ9IiAkKGNhdCAiJERST1BQRUQiLyRwKSRwZW5kIgorCQkJZWxzZQorCQkJCW5ld19wYXJlbnRzPSIkbmV3X3BhcmVudHMgJHAiCisJCQlmaQogCQlmaQogCWRvbmUKIAljYXNlICRmYXN0X2ZvcndhcmQgaW4KQEAgLTIwMywxNSArMjQwLDE5IEBACiAJCQlkaWUgIkNhbm5vdCBmYXN0IGZvcndhcmQgdG8gJHNoYTEiCiAJCTs7CiAJZikKLQkJdGVzdCAiYSQxIiA9IGEtbiAmJiBkaWUgIlJlZnVzaW5nIHRvIHNxdWFzaCBhIG1lcmdlOiAkc2hhMSIKLQogCQlmaXJzdF9wYXJlbnQ9JChleHByICIkbmV3X3BhcmVudHMiIDogJyBcKFteIF0qXCknKQotCQkjIGRldGFjaCBIRUFEIHRvIGN1cnJlbnQgcGFyZW50Ci0JCW91dHB1dCBnaXQgY2hlY2tvdXQgJGZpcnN0X3BhcmVudCAyPiAvZGV2L251bGwgfHwKLQkJCWRpZSAiQ2Fubm90IG1vdmUgSEVBRCB0byAkZmlyc3RfcGFyZW50IgorCisJCWlmIFsgIiQxIiAhPSAiLW4iIF0KKwkJdGhlbgorCQkJIyBkZXRhY2ggSEVBRCB0byBjdXJyZW50IHBhcmVudAorCQkJb3V0cHV0IGdpdCBjaGVja291dCAkZmlyc3RfcGFyZW50IDI+IC9kZXYvbnVsbCB8fAorCQkJCWRpZSAiQ2Fubm90IG1vdmUgSEVBRCB0byAkZmlyc3RfcGFyZW50IgorCQlmaQogCiAJCWNhc2UgIiRuZXdfcGFyZW50cyIgaW4KIAkJJyAnKicgJyopCisJCQl0ZXN0ICJhJDEiID0gYS1uICYmIGRpZSAiUmVmdXNpbmcgdG8gc3F1YXNoIGEgbWVyZ2U6ICRzaGExIgorCiAJCQkjIHJlZG8gbWVyZ2UKIAkJCWF1dGhvcl9zY3JpcHQ9JChnZXRfYXV0aG9yX2lkZW50X2Zyb21fY29tbWl0ICRzaGExKQogCQkJZXZhbCAiJGF1dGhvcl9zY3JpcHQiCkBAIC0yMjQsOSArMjY1LDggQEAKIAkJCQlvdXRwdXQgZ2l0IG1lcmdlICRTVFJBVEVHWSAtbSAiJG1zZyIgXAogCQkJCQkkbmV3X3BhcmVudHMKIAkJCXRoZW4KLQkJCQlnaXQgcmVyZXJlCiAJCQkJcHJpbnRmICIlc1xuIiAiJG1zZyIgPiAiJEdJVF9ESVIiL01FUkdFX01TRwotCQkJCWRpZSBFcnJvciByZWRvaW5nIG1lcmdlICRzaGExCisJCQkJZGllX3dpdGhfcGF0Y2ggJHNoYTEgIkVycm9yIHJlZG9pbmcgbWVyZ2UgJHNoYTEiCiAJCQlmaQogCQkJOzsKIAkJKikKQEAgLTMyMCwxNyArMzYwLDE1IEBACiAJCXBpY2tfb25lIC1uICRzaGExIHx8IGZhaWxlZD10CiAJCWNhc2UgIiQocGVla19uZXh0X2NvbW1hbmQpIiBpbgogCQlzcXVhc2h8cykKLQkJCUVESVRfQ09NTUlUPQogCQkJVVNFX09VVFBVVD1vdXRwdXQKIAkJCU1TR19PUFQ9LUYKLQkJCU1TR19GSUxFPSIkTVNHIgorCQkJRURJVF9PUl9GSUxFPSIkTVNHIgogCQkJY3AgIiRNU0ciICIkU1FVQVNIX01TRyIKIAkJCTs7CiAJCSopCi0JCQlFRElUX0NPTU1JVD0tZQogCQkJVVNFX09VVFBVVD0KIAkJCU1TR19PUFQ9Ci0JCQlNU0dfRklMRT0KKwkJCUVESVRfT1JfRklMRT0tZQogCQkJcm0gLWYgIiRTUVVBU0hfTVNHIiB8fCBleGl0CiAJCQljcCAiJE1TRyIgIiRHSVRfRElSIi9TUVVBU0hfTVNHCiAJCQlybSAtZiAiJEdJVF9ESVIiL01FUkdFX01TRyB8fCBleGl0CkBAIC0zNDQsNyArMzgyLDggQEAKIAkJCUdJVF9BVVRIT1JfTkFNRT0iJEdJVF9BVVRIT1JfTkFNRSIgXAogCQkJR0lUX0FVVEhPUl9FTUFJTD0iJEdJVF9BVVRIT1JfRU1BSUwiIFwKIAkJCUdJVF9BVVRIT1JfREFURT0iJEdJVF9BVVRIT1JfREFURSIgXAotCQkJJFVTRV9PVVRQVVQgZ2l0IGNvbW1pdCAtLW5vLXZlcmlmeSAkTVNHX09QVCAiJE1TR19GSUxFIiAkRURJVF9DT01NSVQgfHwgZmFpbGVkPXQKKwkJCSRVU0VfT1VUUFVUIGdpdCBjb21taXQgLS1uby12ZXJpZnkgXAorCQkJCSRNU0dfT1BUICIkRURJVF9PUl9GSUxFIiB8fCBmYWlsZWQ9dAogCQlmaQogCQlpZiB0ZXN0ICRmYWlsZWQgPSB0CiAJCXRoZW4KQEAgLTM2NSwyMCArNDA0LDcgQEAKIAlIRUFETkFNRT0kKGNhdCAiJERPVEVTVCIvaGVhZC1uYW1lKSAmJgogCU9MREhFQUQ9JChjYXQgIiRET1RFU1QiL2hlYWQpICYmCiAJU0hPUlRPTlRPPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0ICQoY2F0ICIkRE9URVNUIi9vbnRvKSkgJiYKLQlpZiB0ZXN0IC1kICIkUkVXUklUVEVOIgotCXRoZW4KLQkJdGVzdCAtZiAiJERPVEVTVCIvY3VycmVudC1jb21taXQgJiYKLQkJCWN1cnJlbnRfY29tbWl0PSQoY2F0ICIkRE9URVNUIi9jdXJyZW50LWNvbW1pdCkgJiYKLQkJCWdpdCByZXYtcGFyc2UgSEVBRCA+ICIkUkVXUklUVEVOIi8kY3VycmVudF9jb21taXQKLQkJaWYgdGVzdCAtZiAiJFJFV1JJVFRFTiIvJE9MREhFQUQKLQkJdGhlbgotCQkJTkVXSEVBRD0kKGNhdCAiJFJFV1JJVFRFTiIvJE9MREhFQUQpCi0JCWVsc2UKLQkJCU5FV0hFQUQ9JE9MREhFQUQKLQkJZmkKLQllbHNlCi0JCU5FV0hFQUQ9JChnaXQgcmV2LXBhcnNlIEhFQUQpCi0JZmkgJiYKKwlORVdIRUFEPSQoZ2l0IHJldi1wYXJzZSBIRUFEKSAmJgogCWNhc2UgJEhFQUROQU1FIGluCiAJcmVmcy8qKQogCQltZXNzYWdlPSIkR0lUX1JFRkxPR19BQ1RJT046ICRIRUFETkFNRSBvbnRvICRTSE9SVE9OVE8pIiAmJgpAQCAtNDIxLDYgKzQ0NywxMSBAQAogd2hpbGUgdGVzdCAkIyAhPSAwCiBkbwogCWNhc2UgIiQxIiBpbgorCS0tbm8tdmVyaWZ5KQorCQlPS19UT19TS0lQX1BSRV9SRUJBU0U9eWVzCisJCTs7CisJLS12ZXJpZnkpCisJCTs7CiAJLS1jb250aW51ZSkKIAkJaXNfc3RhbmRhbG9uZSAiJEAiIHx8IHVzYWdlCiAJCWdldF9zYXZlZF9vcHRpb25zCkBAIC01NzIsMTggKzYwMyw2OSBAQAogCQkJCWVjaG8gJE9OVE8gPiAiJFJFV1JJVFRFTiIvJGMgfHwKIAkJCQkJZGllICJDb3VsZCBub3QgaW5pdCByZXdyaXR0ZW4gY29tbWl0cyIKIAkJCWRvbmUKKwkJCSMgTm8gY2hlcnJ5LXBpY2sgYmVjYXVzZSBvdXIgZmlyc3QgcGFzcyBpcyB0byBkZXRlcm1pbmUKKwkJCSMgcGFyZW50cyB0byByZXdyaXRlIGFuZCBza2lwcGluZyBkcm9wcGVkIGNvbW1pdHMgd291bGQKKwkJCSMgcHJlbWF0dXJlbHkgZW5kIG91ciBwcm9iZQogCQkJTUVSR0VTX09QVElPTj0KKwkJCWZpcnN0X2FmdGVyX3Vwc3RyZWFtPSIkKGdpdCByZXYtbGlzdCAtLXJldmVyc2UgLS1maXJzdC1wYXJlbnQgJFVQU1RSRUFNLi4kSEVBRCB8IGhlYWQgLW4gMSkiCiAJCWVsc2UKLQkJCU1FUkdFU19PUFRJT049LS1uby1tZXJnZXMKKwkJCU1FUkdFU19PUFRJT049Ii0tbm8tbWVyZ2VzIC0tY2hlcnJ5LXBpY2siCiAJCWZpCiAKIAkJU0hPUlRVUFNUUkVBTT0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCAkVVBTVFJFQU0pCiAJCVNIT1JUSEVBRD0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCAkSEVBRCkKIAkJU0hPUlRPTlRPPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0ICRPTlRPKQogCQlnaXQgcmV2LWxpc3QgJE1FUkdFU19PUFRJT04gLS1wcmV0dHk9b25lbGluZSAtLWFiYnJldi1jb21taXQgXAotCQkJLS1hYmJyZXY9NyAtLXJldmVyc2UgLS1sZWZ0LXJpZ2h0IC0tY2hlcnJ5LXBpY2sgXAorCQkJLS1hYmJyZXY9NyAtLXJldmVyc2UgLS1sZWZ0LXJpZ2h0IC0tdG9wby1vcmRlciBcCiAJCQkkVVBTVFJFQU0uLi4kSEVBRCB8IFwKLQkJCXNlZCAtbiAicy9ePi9waWNrIC9wIiA+ICIkVE9ETyIKKwkJCXNlZCAtbiAicy9ePi8vcCIgfCB3aGlsZSByZWFkIHNob3J0c2hhMSByZXN0CisJCWRvCisJCQlpZiB0ZXN0IHQgIT0gIiRQUkVTRVJWRV9NRVJHRVMiCisJCQl0aGVuCisJCQkJZWNobyAicGljayAkc2hvcnRzaGExICRyZXN0IiA+PiAiJFRPRE8iCisJCQllbHNlCisJCQkJc2hhMT0kKGdpdCByZXYtcGFyc2UgJHNob3J0c2hhMSkKKwkJCQlwcmVzZXJ2ZT10CisJCQkJZm9yIHAgaW4gJChnaXQgcmV2LWxpc3QgLS1wYXJlbnRzIC0xICRzaGExIHwgY3V0IC1kJyAnIC1mMi0pCisJCQkJZG8KKwkJCQkJaWYgdGVzdCAtZiAiJFJFV1JJVFRFTiIvJHAgLWEgXCggJHAgIT0gJFVQU1RSRUFNIC1vICRzaGExID0gJGZpcnN0X2FmdGVyX3Vwc3RyZWFtIFwpCisJCQkJCXRoZW4KKwkJCQkJCXByZXNlcnZlPWYKKwkJCQkJZmkKKwkJCQlkb25lCisJCQkJaWYgdGVzdCBmID0gIiRwcmVzZXJ2ZSIKKwkJCQl0aGVuCisJCQkJCXRvdWNoICIkUkVXUklUVEVOIi8kc2hhMQorCQkJCQllY2hvICJwaWNrICRzaG9ydHNoYTEgJHJlc3QiID4+ICIkVE9ETyIKKwkJCQlmaQorCQkJZmkKKwkJZG9uZQorCisJCSMgV2F0Y2ggZm9yIGNvbW1pdHMgdGhhdCBiZWVuIGRyb3BwZWQgYnkgLS1jaGVycnktcGljaworCQlpZiB0ZXN0IHQgPSAiJFBSRVNFUlZFX01FUkdFUyIKKwkJdGhlbgorCQkJbWtkaXIgIiREUk9QUEVEIgorCQkJIyBTYXZlIGFsbCBub24tY2hlcnJ5LXBpY2tlZCBjaGFuZ2VzCisJCQlnaXQgcmV2LWxpc3QgJFVQU1RSRUFNLi4uJEhFQUQgLS1sZWZ0LXJpZ2h0IC0tY2hlcnJ5LXBpY2sgfCBcCisJCQkJc2VkIC1uICJzL14+Ly9wIiA+ICIkRE9URVNUIi9ub3QtY2hlcnJ5LXBpY2tzCisJCQkjIE5vdyBhbGwgY29tbWl0cyBhbmQgbm90ZSB3aGljaCBvbmVzIGFyZSBtaXNzaW5nIGluCisJCQkjIG5vdC1jaGVycnktcGlja3MgYW5kIGhlbmNlIGJlaW5nIGRyb3BwZWQKKwkJCWdpdCByZXYtbGlzdCAkVVBTVFJFQU0uLiRIRUFEIHwKKwkJCXdoaWxlIHJlYWQgcmV2CisJCQlkbworCQkJCWlmIHRlc3QgLWYgIiRSRVdSSVRURU4iLyRyZXYgLWEgIiQoZ3JlcCAiJHJldiIgIiRET1RFU1QiL25vdC1jaGVycnktcGlja3MpIiA9ICIiCisJCQkJdGhlbgorCQkJCQkjIFVzZSAtZjIgYmVjYXVzZSBpZiByZXYtbGlzdCBpcyB0ZWxsaW5nIHVzIHRoaXMgY29tbWl0IGlzCisJCQkJCSMgbm90IHdvcnRod2hpbGUsIHdlIGRvbid0IHdhbnQgdG8gdHJhY2sgaXRzIG11bHRpcGxlIGhlYWRzLAorCQkJCQkjIGp1c3QgdGhlIGhpc3Rvcnkgb2YgaXRzIGZpcnN0LXBhcmVudCBmb3Igb3RoZXJzIHRoYXQgd2lsbAorCQkJCQkjIGJlIHJlYmFzaW5nIG9uIHRvcCBvZiBpdAorCQkJCQlnaXQgcmV2LWxpc3QgLS1wYXJlbnRzIC0xICRyZXYgfCBjdXQgLWQnICcgLWYyID4gIiREUk9QUEVEIi8kcmV2CisJCQkJCXNob3J0PSQoZ2l0IHJldi1saXN0IC0xIC0tYWJicmV2LWNvbW1pdCAtLWFiYnJldj03ICRyZXYpCisJCQkJCWdyZXAgLXYgIl5bYS16XVthLXpdKiAkc2hvcnQiIDwiJFRPRE8iID4gIiR7VE9ET30yIiA7IG12ICIke1RPRE99MiIgIiRUT0RPIgorCQkJCQlybSAiJFJFV1JJVFRFTiIvJHJldgorCQkJCWZpCisJCQlkb25lCisJCWZpCiAJCXRlc3QgLXMgIiRUT0RPIiB8fCBlY2hvIG5vb3AgPj4gIiRUT0RPIgogCQljYXQgPj4gIiRUT0RPIiA8PCBFT0YKIApkaWZmIC0tZ2l0IGEvZ2l0LXJlYmFzZS5zaCBiL2dpdC1yZWJhc2Uuc2gKaW5kZXggYTMwZDQwYy4uZWJkNGRmMyAxMDA3NTUKLS0tIGEvZ2l0LXJlYmFzZS5zaAorKysgYi9naXQtcmViYXNlLnNoCkBAIC0zNCw2ICszNCw3IEBACiByZXF1aXJlX3dvcmtfdHJlZQogY2RfdG9fdG9wbGV2ZWwKIAorT0tfVE9fU0tJUF9QUkVfUkVCQVNFPQogUkVTT0xWRU1TRz0iCiBXaGVuIHlvdSBoYXZlIHJlc29sdmVkIHRoaXMgcHJvYmxlbSBydW4gXCJnaXQgcmViYXNlIC0tY29udGludWVcIi4KIElmIHlvdSB3b3VsZCBwcmVmZXIgdG8gc2tpcCB0aGlzIHBhdGNoLCBpbnN0ZWFkIHJ1biBcImdpdCByZWJhc2UgLS1za2lwXCIuCkBAIC0xMzgsMTQgKzEzOSwzMSBAQAogfQogCiBpc19pbnRlcmFjdGl2ZSAoKSB7Ci0JdGVzdCAtZiAiJGRvdGVzdCIvaW50ZXJhY3RpdmUgfHwKLQl3aGlsZSA6OyBkbyBjYXNlICQjLCIkMSIgaW4gMCx8KiwtaXwqLC0taW50ZXJhY3RpdmUpIGJyZWFrIDs7IGVzYWMKKwl3aGlsZSB0ZXN0ICQjICE9IDAKKwlkbworCQljYXNlICIkMSIgaW4KKwkJCS1pfC0taW50ZXJhY3RpdmUpCisJCQkJaW50ZXJhY3RpdmVfcmViYXNlPWV4cGxpY2l0CisJCQkJYnJlYWsKKwkJCTs7CisJCQktcHwtLXByZXNlcnZlLW1lcmdlcykKKwkJCQlpbnRlcmFjdGl2ZV9yZWJhc2U9aW1wbGllZAorCQkJOzsKKwkJZXNhYwogCQlzaGlmdAotCWRvbmUgJiYgdGVzdCAtbiAiJDEiCisJZG9uZQorCisJaWYgWyAiJGludGVyYWN0aXZlX3JlYmFzZSIgPSBpbXBsaWVkIF07IHRoZW4KKwkJR0lUX0VESVRPUj06CisJCWV4cG9ydCBHSVRfRURJVE9SCisJZmkKKworCXRlc3QgLW4gIiRpbnRlcmFjdGl2ZV9yZWJhc2UiIHx8IHRlc3QgLWYgIiRkb3Rlc3QiL2ludGVyYWN0aXZlCiB9CiAKIHJ1bl9wcmVfcmViYXNlX2hvb2sgKCkgewotCWlmIHRlc3QgLXggIiRHSVRfRElSL2hvb2tzL3ByZS1yZWJhc2UiCisJaWYgdGVzdCAteiAiJE9LX1RPX1NLSVBfUFJFX1JFQkFTRSIgJiYKKwkgICB0ZXN0IC14ICIkR0lUX0RJUi9ob29rcy9wcmUtcmViYXNlIgogCXRoZW4KIAkJIiRHSVRfRElSL2hvb2tzL3ByZS1yZWJhc2UiICR7MSsiJEAifSB8fCB7CiAJCQllY2hvID4mMiAiVGhlIHByZS1yZWJhc2UgaG9vayByZWZ1c2VkIHRvIHJlYmFzZS4iCkBAIC0xNzAsNiArMTg4LDkgQEAKIHdoaWxlIHRlc3QgJCMgIT0gMAogZG8KIAljYXNlICIkMSIgaW4KKwktLW5vLXZlcmlmeSkKKwkJT0tfVE9fU0tJUF9QUkVfUkVCQVNFPXllcworCQk7OwogCS0tY29udGludWUpCiAJCXRlc3QgLWQgIiRkb3Rlc3QiIC1vIC1kICIkR0lUX0RJUiIvcmViYXNlLWFwcGx5IHx8CiAJCQlkaWUgIk5vIHJlYmFzZSBpbiBwcm9ncmVzcz8iCkBAIC0zMTEsMTEgKzMzMiwxNCBAQAogZmkKIAogIyBUaGUgdHJlZSBtdXN0IGJlIHJlYWxseSByZWFsbHkgY2xlYW4uCi1naXQgdXBkYXRlLWluZGV4IC0taWdub3JlLXN1Ym1vZHVsZXMgLS1yZWZyZXNoIHx8IGV4aXQKK2lmICEgZ2l0IHVwZGF0ZS1pbmRleCAtLWlnbm9yZS1zdWJtb2R1bGVzIC0tcmVmcmVzaDsgdGhlbgorCWVjaG8gPiYyICJjYW5ub3QgcmViYXNlOiB5b3UgaGF2ZSB1bnN0YWdlZCBjaGFuZ2VzIgorCWV4aXQgMQorZmkKIGRpZmY9JChnaXQgZGlmZi1pbmRleCAtLWNhY2hlZCAtLW5hbWUtc3RhdHVzIC1yIC0taWdub3JlLXN1Ym1vZHVsZXMgSEVBRCAtLSkKIGNhc2UgIiRkaWZmIiBpbgotPyopCWVjaG8gImNhbm5vdCByZWJhc2U6IHlvdXIgaW5kZXggaXMgbm90IHVwLXRvLWRhdGUiCi0JZWNobyAiJGRpZmYiCis/KikJZWNobyA+JjIgImNhbm5vdCByZWJhc2U6IHlvdXIgaW5kZXggY29udGFpbnMgdW5jb21taXR0ZWQgY2hhbmdlcyIKKwllY2hvID4mMiAiJGRpZmYiCiAJZXhpdCAxCiAJOzsKIGVzYWMKQEAgLTM0NCwxMCArMzY4LDEwIEBACiAJc3dpdGNoX3RvPSIkMiIKIAogCWlmIGdpdCBzaG93LXJlZiAtLXZlcmlmeSAtLXF1aWV0IC0tICJyZWZzL2hlYWRzLyQyIiAmJgotCSAgIGJyYW5jaD0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgInJlZnMvaGVhZHMvJDIiIDI+L2Rldi9udWxsKQorCSAgIGJyYW5jaD0kKGdpdCByZXYtcGFyc2UgLXEgLS12ZXJpZnkgInJlZnMvaGVhZHMvJDIiKQogCXRoZW4KIAkJaGVhZF9uYW1lPSJyZWZzL2hlYWRzLyQyIgotCWVsaWYgYnJhbmNoPSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAiJDIiIDI+L2Rldi9udWxsKQorCWVsaWYgYnJhbmNoPSQoZ2l0IHJldi1wYXJzZSAtcSAtLXZlcmlmeSAiJDIiKQogCXRoZW4KIAkJaGVhZF9uYW1lPSJkZXRhY2hlZCBIRUFEIgogCWVsc2UKZGlmZiAtLWdpdCBhL2dpdC1zZW5kLWVtYWlsLnBlcmwgYi9naXQtc2VuZC1lbWFpbC5wZXJsCmluZGV4IDQ0OWQ5MzguLjc3Y2E4ZmUgMTAwNzU1Ci0tLSBhL2dpdC1zZW5kLWVtYWlsLnBlcmwKKysrIGIvZ2l0LXNlbmQtZW1haWwucGVybApAQCAtMjMsOCArMjMsMTIgQEAKIHVzZSBUZXh0OjpQYXJzZVdvcmRzOwogdXNlIERhdGE6OkR1bXBlcjsKIHVzZSBUZXJtOjpBTlNJQ29sb3I7Cit1c2UgRmlsZTo6VGVtcCBxdy8gdGVtcGRpciAvOwordXNlIEVycm9yIHF3KDp0cnkpOwogdXNlIEdpdDsKIAorR2V0b3B0OjpMb25nOjpDb25maWd1cmUgcXcvIHBhc3NfdGhyb3VnaCAvOworCiBwYWNrYWdlIEZha2VUZXJtOwogc3ViIG5ldyB7CiAJbXkgKCRjbGFzcywgJHJlYXNvbikgPSBAXzsKQEAgLTM5LDc2ICs0Myw0NCBAQAogCiBzdWIgdXNhZ2UgewogCXByaW50IDw8RU9UOwotZ2l0IHNlbmQtZW1haWwgW29wdGlvbnNdIDxmaWxlIHwgZGlyZWN0b3J5Pi4uLgotT3B0aW9uczoKLSAgIC0tZnJvbSAgICAgICAgIFNwZWNpZnkgdGhlICJGcm9tOiIgbGluZSBvZiB0aGUgZW1haWwgdG8gYmUgc2VudC4KK2dpdCBzZW5kLWVtYWlsIFtvcHRpb25zXSA8ZmlsZSB8IGRpcmVjdG9yeSB8IHJldi1saXN0IG9wdGlvbnMgPgogCi0gICAtLXRvICAgICAgICAgICBTcGVjaWZ5IHRoZSBwcmltYXJ5ICJUbzoiIGxpbmUgb2YgdGhlIGVtYWlsLgorICBDb21wb3Npbmc6CisgICAgLS1mcm9tICAgICAgICAgICAgICAgICAgPHN0cj4gICogRW1haWwgRnJvbToKKyAgICAtLXRvICAgICAgICAgICAgICAgICAgICA8c3RyPiAgKiBFbWFpbCBUbzoKKyAgICAtLWNjICAgICAgICAgICAgICAgICAgICA8c3RyPiAgKiBFbWFpbCBDYzoKKyAgICAtLWJjYyAgICAgICAgICAgICAgICAgICA8c3RyPiAgKiBFbWFpbCBCY2M6CisgICAgLS1zdWJqZWN0ICAgICAgICAgICAgICAgPHN0cj4gICogRW1haWwgIlN1YmplY3Q6IgorICAgIC0taW4tcmVwbHktdG8gICAgICAgICAgIDxzdHI+ICAqIEVtYWlsICJJbi1SZXBseS1UbzoiCisgICAgLS1hbm5vdGF0ZSAgICAgICAgICAgICAgICAgICAgICogUmV2aWV3IGVhY2ggcGF0Y2ggdGhhdCB3aWxsIGJlIHNlbnQgaW4gYW4gZWRpdG9yLgorICAgIC0tY29tcG9zZSAgICAgICAgICAgICAgICAgICAgICAqIE9wZW4gYW4gZWRpdG9yIGZvciBpbnRyb2R1Y3Rpb24uCiAKLSAgIC0tY2MgICAgICAgICAgIFNwZWNpZnkgYW4gaW5pdGlhbCAiQ2M6IiBsaXN0IGZvciB0aGUgZW50aXJlIHNlcmllcwotICAgICAgICAgICAgICAgICAgb2YgZW1haWxzLgorICBTZW5kaW5nOgorICAgIC0tZW52ZWxvcGUtc2VuZGVyICAgICAgIDxzdHI+ICAqIEVtYWlsIGVudmVsb3BlIHNlbmRlci4KKyAgICAtLXNtdHAtc2VydmVyICAgICAgIDxzdHI6aW50PiAgKiBPdXRnb2luZyBTTVRQIHNlcnZlciB0byB1c2UuIFRoZSBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgb3B0aW9uYWwuIERlZmF1bHQgJ2xvY2FsaG9zdCcuCisgICAgLS1zbXRwLXNlcnZlci1wb3J0ICAgICAgPGludD4gICogT3V0Z29pbmcgU01UUCBzZXJ2ZXIgcG9ydC4KKyAgICAtLXNtdHAtdXNlciAgICAgICAgICAgICA8c3RyPiAgKiBVc2VybmFtZSBmb3IgU01UUC1BVVRILgorICAgIC0tc210cC1wYXNzICAgICAgICAgICAgIDxzdHI+ICAqIFBhc3N3b3JkIGZvciBTTVRQLUFVVEg7IG5vdCBuZWNlc3NhcnkuCisgICAgLS1zbXRwLWVuY3J5cHRpb24gICAgICAgPHN0cj4gICogdGxzIG9yIHNzbDsgYW55dGhpbmcgZWxzZSBkaXNhYmxlcy4KKyAgICAtLXNtdHAtc3NsICAgICAgICAgICAgICAgICAgICAgKiBEZXByZWNhdGVkLiBVc2UgJy0tc210cC1lbmNyeXB0aW9uIHNzbCcuCiAKLSAgIC0tY2MtY21kICAgICAgIFNwZWNpZnkgYSBjb21tYW5kIHRvIGV4ZWN1dGUgcGVyIGZpbGUgd2hpY2ggYWRkcwotICAgICAgICAgICAgICAgICAgcGVyIGZpbGUgc3BlY2lmaWMgY2MgYWRkcmVzcyBlbnRyaWVzCisgIEF1dG9tYXRpbmc6CisgICAgLS1pZGVudGl0eSAgICAgICAgICAgICAgPHN0cj4gICogVXNlIHRoZSBzZW5kZW1haWwuPGlkPiBvcHRpb25zLgorICAgIC0tY2MtY21kICAgICAgICAgICAgICAgIDxzdHI+ICAqIEVtYWlsIENjOiB2aWEgYDxzdHI+IFwkcGF0Y2hfcGF0aGAKKyAgICAtLXN1cHByZXNzLWNjICAgICAgICAgICA8c3RyPiAgKiBhdXRob3IsIHNlbGYsIHNvYiwgY2NjbWQsIGFsbC4KKyAgICAtLVtuby1dc2lnbmVkLW9mZi1ieS1jYyAgICAgICAgKiBTZW5kIHRvIENjOiBhbmQgU2lnbmVkLW9mZi1ieToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZXMuIERlZmF1bHQgb24uCisgICAgLS1bbm8tXXN1cHByZXNzLWZyb20gICAgICAgICAgICogU2VuZCB0byBzZWxmLiBEZWZhdWx0IG9mZi4KKyAgICAtLVtuby1dY2hhaW4tcmVwbHktdG8gICAgICAgICAgKiBDaGFpbiBJbi1SZXBseS1UbzogZmllbGRzLiBEZWZhdWx0IG9uLgorICAgIC0tW25vLV10aHJlYWQgICAgICAgICAgICAgICAgICAqIFVzZSBJbi1SZXBseS1UbzogZmllbGQuIERlZmF1bHQgb24uCiAKLSAgIC0tYmNjICAgICAgICAgIFNwZWNpZnkgYSBsaXN0IG9mIGVtYWlsIGFkZHJlc3NlcyB0aGF0IHNob3VsZCBiZSBCY2M6Ci0JCSAgb24gYWxsIHRoZSBlbWFpbHMuCi0KLSAgIC0tY29tcG9zZSAgICAgIFVzZSBcJEdJVF9FRElUT1IsIGNvcmUuZWRpdG9yLCBcJEVESVRPUiwgb3IgXCRWSVNVQUwgdG8gZWRpdAotCQkgIGFuIGludHJvZHVjdG9yeSBtZXNzYWdlIGZvciB0aGUgcGF0Y2ggc2VyaWVzLgotCi0gICAtLXN1YmplY3QgICAgICBTcGVjaWZ5IHRoZSBpbml0aWFsICJTdWJqZWN0OiIgbGluZS4KLSAgICAgICAgICAgICAgICAgIE9ubHkgbmVjZXNzYXJ5IGlmIC0tY29tcG9zZSBpcyBhbHNvIHNldC4gIElmIC0tY29tcG9zZQotCQkgIGlzIG5vdCBzZXQsIHRoaXMgd2lsbCBiZSBwcm9tcHRlZCBmb3IuCi0KLSAgIC0taW4tcmVwbHktdG8gIFNwZWNpZnkgdGhlIGZpcnN0ICJJbi1SZXBseS1UbzoiIGhlYWRlciBsaW5lLgotICAgICAgICAgICAgICAgICAgT25seSB1c2VkIGlmIC0tY29tcG9zZSBpcyBhbHNvIHNldC4gIElmIC0tY29tcG9zZSBpcyBub3QKLQkJICBzZXQsIHRoaXMgd2lsbCBiZSBwcm9tcHRlZCBmb3IuCi0KLSAgIC0tY2hhaW4tcmVwbHktdG8gSWYgc2V0LCB0aGUgcmVwbGllcyB3aWxsIGFsbCBiZSB0byB0aGUgcHJldmlvdXMKLSAgICAgICAgICAgICAgICAgIGVtYWlsIHNlbnQsIHJhdGhlciB0aGFuIHRvIHRoZSBmaXJzdCBlbWFpbCBzZW50LgotICAgICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gb24uCi0KLSAgIC0tc2lnbmVkLW9mZi1jYyBBdXRvbWF0aWNhbGx5IGFkZCBlbWFpbCBhZGRyZXNzZXMgdGhhdCBhcHBlYXIgaW4KLSAgICAgICAgICAgICAgICAgU2lnbmVkLW9mZi1ieTogb3IgQ2M6IGxpbmVzIHRvIHRoZSBjYzogbGlzdC4gRGVmYXVsdHMgdG8gb24uCi0KLSAgIC0taWRlbnRpdHkgICAgIFRoZSBjb25maWd1cmF0aW9uIGlkZW50aXR5LCBhIHN1YnNlY3Rpb24gdG8gcHJpb3JpdGlzZSBvdmVyCi0gICAgICAgICAgICAgICAgICB0aGUgZGVmYXVsdCBzZWN0aW9uLgotCi0gICAtLXNtdHAtc2VydmVyICBJZiBzZXQsIHNwZWNpZmllcyB0aGUgb3V0Z29pbmcgU01UUCBzZXJ2ZXIgdG8gdXNlLgotICAgICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gbG9jYWxob3N0LiAgUG9ydCBudW1iZXIgY2FuIGJlIHNwZWNpZmllZCBoZXJlIHdpdGgKLSAgICAgICAgICAgICAgICAgIGhvc3RuYW1lOnBvcnQgZm9ybWF0IG9yIGJ5IHVzaW5nIC0tc210cC1zZXJ2ZXItcG9ydCBvcHRpb24uCi0KLSAgIC0tc210cC1zZXJ2ZXItcG9ydCBTcGVjaWZ5IGEgcG9ydCBvbiB0aGUgb3V0Z29pbmcgU01UUCBzZXJ2ZXIgdG8gY29ubmVjdCB0by4KLQotICAgLS1zbXRwLXVzZXIgICAgVGhlIHVzZXJuYW1lIGZvciBTTVRQLUFVVEguCi0KLSAgIC0tc210cC1wYXNzICAgIFRoZSBwYXNzd29yZCBmb3IgU01UUC1BVVRILgotCi0gICAtLXNtdHAtZW5jcnlwdGlvbiBTcGVjaWZ5ICd0bHMnIGZvciBTVEFSVFRMUyBlbmNyeXB0aW9uLCBvciAnc3NsJyBmb3IgU1NMLgotICAgICAgICAgICAgICAgICAgQW55IG90aGVyIHZhbHVlIGRpc2FibGVzIHRoZSBmZWF0dXJlLgotCi0gICAtLXNtdHAtc3NsICAgICBTeW5vbnltIGZvciAnLS1zbXRwLWVuY3J5cHRpb249c3NsJy4gIERlcHJlY2F0ZWQuCi0KLSAgIC0tc3VwcHJlc3MtY2MgIFN1cHByZXNzIHRoZSBzcGVjaWZpZWQgY2F0ZWdvcnkgb2YgYXV0by1DQy4gIFRoZSBjYXRlZ29yeQotCQkgIGNhbiBiZSBvbmUgb2YgJ2F1dGhvcicgZm9yIHRoZSBwYXRjaCBhdXRob3IsICdzZWxmJyB0bwotCQkgIGF2b2lkIGNvcHlpbmcgeW91cnNlbGYsICdzb2InIGZvciBTaWduZWQtb2ZmLWJ5IGxpbmVzLAotCQkgICdjY2NtZCcgZm9yIHRoZSBvdXRwdXQgb2YgdGhlIGNjY21kLCBvciAnYWxsJyB0byBzdXBwcmVzcwotCQkgIGFsbCBvZiB0aGVzZS4KLQotICAgLS1zdXBwcmVzcy1mcm9tIFN1cHByZXNzIHNlbmRpbmcgZW1haWxzIHRvIHlvdXJzZWxmLiBEZWZhdWx0cyB0byBvZmYuCi0KLSAgIC0tdGhyZWFkICAgICAgIFNwZWNpZnkgdGhhdCB0aGUgIkluLVJlcGx5LVRvOiIgaGVhZGVyIHNob3VsZCBiZSBzZXQgb24gYWxsCi0gICAgICAgICAgICAgICAgICBlbWFpbHMuIERlZmF1bHRzIHRvIG9uLgotCi0gICAtLXF1aWV0CSAgTWFrZSBnaXQtc2VuZC1lbWFpbCBsZXNzIHZlcmJvc2UuICBPbmUgbGluZSBwZXIgZW1haWwKLSAgICAgICAgICAgICAgICAgIHNob3VsZCBiZSBhbGwgdGhhdCBpcyBvdXRwdXQuCi0KLSAgIC0tZHJ5LXJ1bgkgIERvIGV2ZXJ5dGhpbmcgZXhjZXB0IGFjdHVhbGx5IHNlbmQgdGhlIGVtYWlscy4KLQotICAgLS1lbnZlbG9wZS1zZW5kZXIJU3BlY2lmeSB0aGUgZW52ZWxvcGUgc2VuZGVyIHVzZWQgdG8gc2VuZCB0aGUgZW1haWxzLgotCi0gICAtLW5vLXZhbGlkYXRlCURvbid0IHBlcmZvcm0gYW55IHNhbml0eSBjaGVja3Mgb24gcGF0Y2hlcy4KKyAgQWRtaW5pc3RlcmluZzoKKyAgICAtLXF1aWV0ICAgICAgICAgICAgICAgICAgICAgICAgKiBPdXRwdXQgb25lIGxpbmUgb2YgaW5mbyBwZXIgZW1haWwuCisgICAgLS1kcnktcnVuICAgICAgICAgICAgICAgICAgICAgICogRG9uJ3QgYWN0dWFsbHkgc2VuZCB0aGUgZW1haWxzLgorICAgIC0tW25vLV12YWxpZGF0ZSAgICAgICAgICAgICAgICAqIFBlcmZvcm0gcGF0Y2ggc2FuaXR5IGNoZWNrcy4gRGVmYXVsdCBvbi4KKyAgICAtLVtuby1dZm9ybWF0LXBhdGNoICAgICAgICAgICAgKiB1bmRlcnN0YW5kIGFueSBub24gb3B0aW9uYWwgYXJndW1lbnRzIGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGdpdCBmb3JtYXQtcGF0Y2hgIG9uZXMuCiAKIEVPVAogCWV4aXQoMSk7CkBAIC0xNjAsMTIgKzEzMiwxMCBAQAogc3ViIHVuaXF1ZV9lbWFpbF9saXN0KEApOwogc3ViIGNsZWFudXBfY29tcG9zZV9maWxlcygpOwogCi0jIENvbnN0YW50cyAoZXNzZW50aWFsbHkpCi1teSAkY29tcG9zZV9maWxlbmFtZSA9ICIubXNnLiQkIjsKLQogIyBWYXJpYWJsZXMgd2UgZmlsbCBpbiBhdXRvbWF0aWNhbGx5LCBvciB2aWEgcHJvbXB0aW5nOgogbXkgKEB0byxAY2MsQGluaXRpYWxfY2MsQGJjY2xpc3QsQHhoLAotCSRpbml0aWFsX3JlcGx5X3RvLCRpbml0aWFsX3N1YmplY3QsQGZpbGVzLCRhdXRob3IsJHNlbmRlciwkc210cF9hdXRocGFzcywkY29tcG9zZSwkdGltZSk7CisJJGluaXRpYWxfcmVwbHlfdG8sJGluaXRpYWxfc3ViamVjdCxAZmlsZXMsCisJJGF1dGhvciwkc2VuZGVyLCRzbXRwX2F1dGhwYXNzLCRhbm5vdGF0ZSwkY29tcG9zZSwkdGltZSk7CiAKIG15ICRlbnZlbG9wZV9zZW5kZXI7CiAKQEAgLTE4NSwxOSArMTU1LDQyIEBACiAKICMgQmVoYXZpb3IgbW9kaWZpY2F0aW9uIHZhcmlhYmxlcwogbXkgKCRxdWlldCwgJGRyeV9ydW4pID0gKDAsIDApOworbXkgJGZvcm1hdF9wYXRjaDsKK215ICRjb21wb3NlX2ZpbGVuYW1lID0gJHJlcG8tPnJlcG9fcGF0aCgpIC4gIi8uZ2l0c2VuZGVtYWlsLm1zZy4kJCI7CisKKyMgSGFuZGxlIGludGVyYWN0aXZlIGVkaXRpb24gb2YgZmlsZXMuCitteSAkbXVsdGllZGl0OworbXkgJGVkaXRvciA9ICRFTlZ7R0lUX0VESVRPUn0gfHwgR2l0Ojpjb25maWcoQHJlcG8sICJjb3JlLmVkaXRvciIpIHx8ICRFTlZ7VklTVUFMfSB8fCAkRU5We0VESVRPUn0gfHwgInZpIjsKK3N1YiBkb19lZGl0IHsKKwlpZiAoZGVmaW5lZCgkbXVsdGllZGl0KSAmJiAhJG11bHRpZWRpdCkgeworCQltYXAgeworCQkJc3lzdGVtKCdzaCcsICctYycsICRlZGl0b3IuJyAiJEAiJywgJGVkaXRvciwgJF8pOworCQkJaWYgKCgkPyAmIDEyNykgfHwgKCQ/ID4+IDgpKSB7CisJCQkJZGllKCJ0aGUgZWRpdG9yIGV4aXRlZCB1bmNsZWFubHksIGFib3J0aW5nIGV2ZXJ5dGhpbmciKTsKKwkJCX0KKwkJfSBAXzsKKwl9IGVsc2UgeworCQlzeXN0ZW0oJ3NoJywgJy1jJywgJGVkaXRvci4nICIkQCInLCAkZWRpdG9yLCBAXyk7CisJCWlmICgoJD8gJiAxMjcpIHx8ICgkPyA+PiA4KSkgeworCQkJZGllKCJ0aGUgZWRpdG9yIGV4aXRlZCB1bmNsZWFubHksIGFib3J0aW5nIGV2ZXJ5dGhpbmciKTsKKwkJfQorCX0KK30KIAogIyBWYXJpYWJsZXMgd2l0aCBjb3JyZXNwb25kaW5nIGNvbmZpZyBzZXR0aW5ncwotbXkgKCR0aHJlYWQsICRjaGFpbl9yZXBseV90bywgJHN1cHByZXNzX2Zyb20sICRzaWduZWRfb2ZmX2NjLCAkY2NfY21kKTsKK215ICgkdGhyZWFkLCAkY2hhaW5fcmVwbHlfdG8sICRzdXBwcmVzc19mcm9tLCAkc2lnbmVkX29mZl9ieV9jYywgJGNjX2NtZCk7CiBteSAoJHNtdHBfc2VydmVyLCAkc210cF9zZXJ2ZXJfcG9ydCwgJHNtdHBfYXV0aHVzZXIsICRzbXRwX2VuY3J5cHRpb24pOwogbXkgKCRpZGVudGl0eSwgJGFsaWFzZmlsZXR5cGUsIEBhbGlhc19maWxlcywgQHNtdHBfaG9zdF9wYXJ0cyk7Ci1teSAoJG5vX3ZhbGlkYXRlKTsKK215ICgkdmFsaWRhdGUpOwogbXkgKEBzdXBwcmVzc19jYyk7CiAKIG15ICVjb25maWdfYm9vbF9zZXR0aW5ncyA9ICgKICAgICAidGhyZWFkIiA9PiBbXCR0aHJlYWQsIDFdLAogICAgICJjaGFpbnJlcGx5dG8iID0+IFtcJGNoYWluX3JlcGx5X3RvLCAxXSwKICAgICAic3VwcHJlc3Nmcm9tIiA9PiBbXCRzdXBwcmVzc19mcm9tLCB1bmRlZl0sCi0gICAgInNpZ25lZG9mZmNjIiA9PiBbXCRzaWduZWRfb2ZmX2NjLCB1bmRlZl0sCisgICAgInNpZ25lZG9mZmJ5Y2MiID0+IFtcJHNpZ25lZF9vZmZfYnlfY2MsIHVuZGVmXSwKKyAgICAic2lnbmVkb2ZmY2MiID0+IFtcJHNpZ25lZF9vZmZfYnlfY2MsIHVuZGVmXSwgICAgICAjIERlcHJlY2F0ZWQKKyAgICAidmFsaWRhdGUiID0+IFtcJHZhbGlkYXRlLCAxXSwKICk7CiAKIG15ICVjb25maWdfc2V0dGluZ3MgPSAoCkBAIC0yMTMsNiArMjA2LDcgQEAKICAgICAiYWxpYXNlc2ZpbGUiID0+IFxAYWxpYXNfZmlsZXMsCiAgICAgInN1cHByZXNzY2MiID0+IFxAc3VwcHJlc3NfY2MsCiAgICAgImVudmVsb3Blc2VuZGVyIiA9PiBcJGVudmVsb3BlX3NlbmRlciwKKyAgICAibXVsdGllZGl0IiA9PiBcJG11bHRpZWRpdCwKICk7CiAKICMgSGFuZGxlIFVuY291dGggVGVybWluYXRpb24KQEAgLTI1NSwxNiArMjQ5LDE4IEBACiAJCSAgICAic210cC1zc2wiID0+IHN1YiB7ICRzbXRwX2VuY3J5cHRpb24gPSAnc3NsJyB9LAogCQkgICAgInNtdHAtZW5jcnlwdGlvbj1zIiA9PiBcJHNtdHBfZW5jcnlwdGlvbiwKIAkJICAgICJpZGVudGl0eT1zIiA9PiBcJGlkZW50aXR5LAorCQkgICAgImFubm90YXRlIiA9PiBcJGFubm90YXRlLAogCQkgICAgImNvbXBvc2UiID0+IFwkY29tcG9zZSwKIAkJICAgICJxdWlldCIgPT4gXCRxdWlldCwKIAkJICAgICJjYy1jbWQ9cyIgPT4gXCRjY19jbWQsCiAJCSAgICAic3VwcHJlc3MtZnJvbSEiID0+IFwkc3VwcHJlc3NfZnJvbSwKIAkJICAgICJzdXBwcmVzcy1jYz1zIiA9PiBcQHN1cHByZXNzX2NjLAotCQkgICAgInNpZ25lZC1vZmYtY2N8c2lnbmVkLW9mZi1ieS1jYyEiID0+IFwkc2lnbmVkX29mZl9jYywKKwkJICAgICJzaWduZWQtb2ZmLWNjfHNpZ25lZC1vZmYtYnktY2MhIiA9PiBcJHNpZ25lZF9vZmZfYnlfY2MsCiAJCSAgICAiZHJ5LXJ1biIgPT4gXCRkcnlfcnVuLAogCQkgICAgImVudmVsb3BlLXNlbmRlcj1zIiA9PiBcJGVudmVsb3BlX3NlbmRlciwKIAkJICAgICJ0aHJlYWQhIiA9PiBcJHRocmVhZCwKLQkJICAgICJuby12YWxpZGF0ZSIgPT4gXCRub192YWxpZGF0ZSwKKwkJICAgICJ2YWxpZGF0ZSEiID0+IFwkdmFsaWRhdGUsCisJCSAgICAiZm9ybWF0LXBhdGNoISIgPT4gXCRmb3JtYXRfcGF0Y2gsCiAJICk7CiAKIHVubGVzcyAoJHJjKSB7CkBAIC0zMzYsNyArMzMyLDcgQEAKIAogIyBJZiBleHBsaWNpdCBvbGQtc3R5bGUgb25lcyBhcmUgc3BlY2lmaWVkLCB0aGV5IHRydW1wIC0tc3VwcHJlc3MtY2MuCiAkc3VwcHJlc3NfY2N7J3NlbGYnfSA9ICRzdXBwcmVzc19mcm9tIGlmIGRlZmluZWQgJHN1cHByZXNzX2Zyb207Ci0kc3VwcHJlc3NfY2N7J3NvYid9ID0gISRzaWduZWRfb2ZmX2NjIGlmIGRlZmluZWQgJHNpZ25lZF9vZmZfY2M7Ciskc3VwcHJlc3NfY2N7J3NvYid9ID0gISRzaWduZWRfb2ZmX2J5X2NjIGlmIGRlZmluZWQgJHNpZ25lZF9vZmZfYnlfY2M7CiAKICMgRGVidWdnaW5nLCBwcmludCBvdXQgdGhlIHN1cHByZXNzaW9ucy4KIGlmICgwKSB7CkBAIC0zNjUsNyArMzYxLDcgQEAKIH0KIAogc3ViIHNwbGl0X2FkZHJzIHsKLQlyZXR1cm4gcGFyc2VfbGluZSgnXHMqLFxzKicsIDEsIEBfKTsKKwlyZXR1cm4gcXVvdGV3b3JkcygnXHMqLFxzKicsIDEsIEBfKTsKIH0KIAogbXkgJWFsaWFzZXM7CkBAIC0zODMsMTAgKzM3OSwxMyBAQAogCQkJIyBzcGFjZXMgZGVsaW1pdCBtdWx0aXBsZSBhZGRyZXNzZXMKIAkJCSRhbGlhc2VzeyQxfSA9IFsgc3BsaXQoL1xzKy8sICQyKSBdOwogCQl9fX0sCi0JcGluZSA9PiBzdWIgeyBteSAkZmggPSBzaGlmdDsgd2hpbGUgKDwkZmg+KSB7Ci0JCWlmICgvXihcUyspXHQuKlx0KC4qKSQvKSB7CisJcGluZSA9PiBzdWIgeyBteSAkZmggPSBzaGlmdDsgbXkgJGY9J1x0W15cdF0qJzsKKwkgICAgICAgIGZvciAobXkgJHggPSAnJzsgZGVmaW5lZCgkeCk7ICR4ID0gJF8pIHsKKwkJCWNob21wICR4OworCQkgICAgICAgICR4IC49ICQxIHdoaWxlKGRlZmluZWQoJF8gPSA8JGZoPikgJiYgL14gKyguKikkLyk7CisJCQkkeCA9fiAvXihcUyspJGZcdFwoPyhbXlx0XSs/KVwpPyg6PyRmKXswLDJ9JC8gb3IgbmV4dDsKIAkJCSRhbGlhc2VzeyQxfSA9IFsgc3BsaXRfYWRkcnMoJDIpIF07Ci0JCX19fSwKKwkJfX0sCiAJZ251cyA9PiBzdWIgeyBteSAkZmggPSBzaGlmdDsgd2hpbGUgKDwkZmg+KSB7CiAJCWlmICgvXChkZWZpbmUtbWFpbC1hbGlhc1xzKyIoXFMrPykiXHMrIihcUys/KSJcKS8pIHsKIAkJCSRhbGlhc2VzeyQxfSA9IFsgJDIgXTsKQEAgLTQwMywyNCArNDAyLDUzIEBACiAKICgkc2VuZGVyKSA9IGV4cGFuZF9hbGlhc2VzKCRzZW5kZXIpIGlmIGRlZmluZWQgJHNlbmRlcjsKIAorIyByZXR1cm5zIDEgaWYgdGhlIGNvbmZsaWN0IG11c3QgYmUgc29sdmVkIHVzaW5nIGl0IGFzIGEgZm9ybWF0LXBhdGNoIGFyZ3VtZW50CitzdWIgY2hlY2tfZmlsZV9yZXZfY29uZmxpY3QoJCkgeworCW15ICRmID0gc2hpZnQ7CisJdHJ5IHsKKwkJJHJlcG8tPmNvbW1hbmQoJ3Jldi1wYXJzZScsICctLXZlcmlmeScsICctLXF1aWV0JywgJGYpOworCQlpZiAoZGVmaW5lZCgkZm9ybWF0X3BhdGNoKSkgeworCQkJcHJpbnQgImZvb1xuIjsKKwkJCXJldHVybiAkZm9ybWF0X3BhdGNoOworCQl9CisJCWRpZSg8PEVPRik7CitGaWxlICckZicgZXhpc3RzIGJ1dCBpdCBjb3VsZCBhbHNvIGJlIHRoZSByYW5nZSBvZiBjb21taXRzCit0byBwcm9kdWNlIHBhdGNoZXMgZm9yLiAgUGxlYXNlIGRpc2FtYmlndWF0ZSBieS4uLgorCisgICAgKiBTYXlpbmcgIi4vJGYiIGlmIHlvdSBtZWFuIGEgZmlsZTsgb3IKKyAgICAqIEdpdmluZyAtLWZvcm1hdC1wYXRjaCBvcHRpb24gaWYgeW91IG1lYW4gYSByYW5nZS4KK0VPRgorCX0gY2F0Y2ggR2l0OjpFcnJvcjo6Q29tbWFuZCB3aXRoIHsKKwkJcmV0dXJuIDA7CisJfQorfQorCiAjIE5vdyB0aGF0IGFsbCB0aGUgZGVmYXVsdHMgYXJlIHNldCwgcHJvY2VzcyB0aGUgcmVzdCBvZiB0aGUgY29tbWFuZCBsaW5lCiAjIGFyZ3VtZW50cyBhbmQgY29sbGVjdCB1cCB0aGUgZmlsZXMgdGhhdCBuZWVkIHRvIGJlIHByb2Nlc3NlZC4KLWZvciBteSAkZiAoQEFSR1YpIHsKLQlpZiAoLWQgJGYpIHsKK215IEByZXZfbGlzdF9vcHRzOword2hpbGUgKGRlZmluZWQobXkgJGYgPSBzaGlmdCBAQVJHVikpIHsKKwlpZiAoJGYgZXEgIi0tIikgeworCQlwdXNoIEByZXZfbGlzdF9vcHRzLCAiLS0iLCBAQVJHVjsKKwkJQEFSR1YgPSAoKTsKKwl9IGVsc2lmICgtZCAkZiBhbmQgIWNoZWNrX2ZpbGVfcmV2X2NvbmZsaWN0KCRmKSkgewogCQlvcGVuZGlyKERILCRmKQogCQkJb3IgZGllICJGYWlsZWQgdG8gb3BlbmRpciAkZjogJCEiOwogCiAJCXB1c2ggQGZpbGVzLCBncmVwIHsgLWYgJF8gfSBtYXAgeyArJGYgLiAiLyIgLiAkXyB9CiAJCQkJc29ydCByZWFkZGlyKERIKTsKIAkJY2xvc2VkaXIoREgpOwotCX0gZWxzaWYgKC1mICRmIG9yIC1wICRmKSB7CisJfSBlbHNpZiAoKC1mICRmIG9yIC1wICRmKSBhbmQgIWNoZWNrX2ZpbGVfcmV2X2NvbmZsaWN0KCRmKSkgewogCQlwdXNoIEBmaWxlcywgJGY7CiAJfSBlbHNlIHsKLQkJcHJpbnQgU1RERVJSICJTa2lwcGluZyAkZiAtIG5vdCBmb3VuZC5cbiI7CisJCXB1c2ggQHJldl9saXN0X29wdHMsICRmOwogCX0KIH0KIAotaWYgKCEkbm9fdmFsaWRhdGUpIHsKK2lmIChAcmV2X2xpc3Rfb3B0cykgeworCXB1c2ggQGZpbGVzLCAkcmVwby0+Y29tbWFuZCgnZm9ybWF0LXBhdGNoJywgJy1vJywgdGVtcGRpcihDTEVBTlVQID0+IDEpLCBAcmV2X2xpc3Rfb3B0cyk7Cit9CisKK2lmICgkdmFsaWRhdGUpIHsKIAlmb3JlYWNoIG15ICRmIChAZmlsZXMpIHsKIAkJdW5sZXNzICgtcCAkZikgewogCQkJbXkgJGVycm9yID0gdmFsaWRhdGVfcGF0Y2goJGYpOwpAQCAtNDM4LDYgKzQ2NiwxMDggQEAKIAl1c2FnZSgpOwogfQogCitzdWIgZ2V0X3BhdGNoX3N1YmplY3QoJCkgeworCW15ICRmbiA9IHNoaWZ0OworCW9wZW4gKG15ICRmaCwgJzwnLCAkZm4pOworCXdoaWxlIChteSAkbGluZSA9IDwkZmg+KSB7CisJCW5leHQgdW5sZXNzICgkbGluZSA9fiAvXlN1YmplY3Q6ICguKikkLyk7CisJCWNsb3NlICRmaDsKKwkJcmV0dXJuICJHSVQ6ICQxXG4iOworCX0KKwljbG9zZSAkZmg7CisJZGllICJObyBzdWJqZWN0IGxpbmUgaW4gJGZuID8iOworfQorCitpZiAoJGNvbXBvc2UpIHsKKwkjIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IG5lZWQgdG8gYmUgc2VjdXJlLCBidXQgd2Ugd2lsbCBtYWtlIGEgc21hbGwKKwkjIGVmZm9ydCB0byBoYXZlIGl0IGJlIHVuaXF1ZQorCW9wZW4oQywiPiIsJGNvbXBvc2VfZmlsZW5hbWUpCisJCW9yIGRpZSAiRmFpbGVkIHRvIG9wZW4gZm9yIHdyaXRpbmcgJGNvbXBvc2VfZmlsZW5hbWU6ICQhIjsKKworCisJbXkgJHRwbF9zZW5kZXIgPSAkc2VuZGVyIHx8ICRyZXBvYXV0aG9yIHx8ICRyZXBvY29tbWl0dGVyIHx8ICcnOworCW15ICR0cGxfc3ViamVjdCA9ICRpbml0aWFsX3N1YmplY3QgfHwgJyc7CisJbXkgJHRwbF9yZXBseV90byA9ICRpbml0aWFsX3JlcGx5X3RvIHx8ICcnOworCisJcHJpbnQgQyA8PEVPVDsKK0Zyb20gJHRwbF9zZW5kZXIgIyBUaGlzIGxpbmUgaXMgaWdub3JlZC4KK0dJVDogTGluZXMgYmVnaW5uaW5nIGluICJHSVQ6ICIgd2lsbCBiZSByZW1vdmVkLgorR0lUOiBDb25zaWRlciBpbmNsdWRpbmcgYW4gb3ZlcmFsbCBkaWZmc3RhdCBvciB0YWJsZSBvZiBjb250ZW50cworR0lUOiBmb3IgdGhlIHBhdGNoIHlvdSBhcmUgd3JpdGluZy4KK0dJVDoKK0dJVDogQ2xlYXIgdGhlIGJvZHkgY29udGVudCBpZiB5b3UgZG9uJ3Qgd2lzaCB0byBzZW5kIGEgc3VtbWFyeS4KK0Zyb206ICR0cGxfc2VuZGVyCitTdWJqZWN0OiAkdHBsX3N1YmplY3QKK0luLVJlcGx5LVRvOiAkdHBsX3JlcGx5X3RvCisKK0VPVAorCWZvciBteSAkZiAoQGZpbGVzKSB7CisJCXByaW50IEMgZ2V0X3BhdGNoX3N1YmplY3QoJGYpOworCX0KKwljbG9zZShDKTsKKworCW15ICRlZGl0b3IgPSAkRU5We0dJVF9FRElUT1J9IHx8IEdpdDo6Y29uZmlnKEByZXBvLCAiY29yZS5lZGl0b3IiKSB8fCAkRU5We1ZJU1VBTH0gfHwgJEVOVntFRElUT1J9IHx8ICJ2aSI7CisKKwlpZiAoJGFubm90YXRlKSB7CisJCWRvX2VkaXQoJGNvbXBvc2VfZmlsZW5hbWUsIEBmaWxlcyk7CisJfSBlbHNlIHsKKwkJZG9fZWRpdCgkY29tcG9zZV9maWxlbmFtZSk7CisJfQorCisJb3BlbihDMiwiPiIsJGNvbXBvc2VfZmlsZW5hbWUgLiAiLmZpbmFsIikKKwkJb3IgZGllICJGYWlsZWQgdG8gb3BlbiAkY29tcG9zZV9maWxlbmFtZS5maW5hbCA6ICIgLiAkITsKKworCW9wZW4oQywiPCIsJGNvbXBvc2VfZmlsZW5hbWUpCisJCW9yIGRpZSAiRmFpbGVkIHRvIG9wZW4gJGNvbXBvc2VfZmlsZW5hbWUgOiAiIC4gJCE7CisKKwlteSAkbmVlZF84Yml0X2N0ZSA9IGZpbGVfaGFzX25vbmFzY2lpKCRjb21wb3NlX2ZpbGVuYW1lKTsKKwlteSAkaW5fYm9keSA9IDA7CisJbXkgJHN1bW1hcnlfZW1wdHkgPSAxOworCXdoaWxlKDxDPikgeworCQluZXh0IGlmIG0vXkdJVDogLzsKKwkJaWYgKCRpbl9ib2R5KSB7CisJCQkkc3VtbWFyeV9lbXB0eSA9IDAgdW5sZXNzICgvXlxuJC8pOworCQl9IGVsc2lmICgvXlxuJC8pIHsKKwkJCSRpbl9ib2R5ID0gMTsKKwkJCWlmICgkbmVlZF84Yml0X2N0ZSkgeworCQkJCXByaW50IEMyICJNSU1FLVZlcnNpb246IDEuMFxuIiwKKwkJCQkJICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47ICIsCisJCQkJCSAgICJjaGFyc2V0PXV0Zi04XG4iLAorCQkJCQkgIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiI7CisJCQl9CisJCX0gZWxzaWYgKC9eTUlNRS1WZXJzaW9uOi9pKSB7CisJCQkkbmVlZF84Yml0X2N0ZSA9IDA7CisJCX0gZWxzaWYgKC9eU3ViamVjdDpccyooLispXHMqJC9pKSB7CisJCQkkaW5pdGlhbF9zdWJqZWN0ID0gJDE7CisJCQlteSAkc3ViamVjdCA9ICRpbml0aWFsX3N1YmplY3Q7CisJCQkkXyA9ICJTdWJqZWN0OiAiIC4KKwkJCQkoJHN1YmplY3QgPX4gL1teWzphc2NpaTpdXS8gPworCQkJCSBxdW90ZV9yZmMyMDQ3KCRzdWJqZWN0KSA6CisJCQkJICRzdWJqZWN0KSAuCisJCQkJIlxuIjsKKwkJfSBlbHNpZiAoL15Jbi1SZXBseS1UbzpccyooLispXHMqJC9pKSB7CisJCQkkaW5pdGlhbF9yZXBseV90byA9ICQxOworCQkJbmV4dDsKKwkJfSBlbHNpZiAoL15Gcm9tOlxzKiguKylccyokL2kpIHsKKwkJCSRzZW5kZXIgPSAkMTsKKwkJCW5leHQ7CisJCX0gZWxzaWYgKC9eKD86VG98Q2N8QmNjKTovaSkgeworCQkJcHJpbnQgIlRvL0NjL0JjYyBmaWVsZHMgYXJlIG5vdCBpbnRlcnByZXRlZCB5ZXQsIHRoZXkgaGF2ZSBiZWVuIGlnbm9yZWRcbiI7CisJCQluZXh0OworCQl9CisJCXByaW50IEMyICRfOworCX0KKwljbG9zZShDKTsKKwljbG9zZShDMik7CisKKwlpZiAoJHN1bW1hcnlfZW1wdHkpIHsKKwkJcHJpbnQgIlN1bW1hcnkgZW1haWwgaXMgZW1wdHksIHNraXBwaW5nIGl0XG4iOworCQkkY29tcG9zZSA9IC0xOworCX0KK30gZWxzaWYgKCRhbm5vdGF0ZSkgeworCWRvX2VkaXQoQGZpbGVzKTsKK30KKwogbXkgJHByb21wdGluZyA9IDA7CiBpZiAoIWRlZmluZWQgJHNlbmRlcikgewogCSRzZW5kZXIgPSAkcmVwb2F1dGhvciB8fCAkcmVwb2NvbW1pdHRlciB8fCAnJzsKQEAgLTQ4MiwxNyArNjEyLDYgQEAKIEBpbml0aWFsX2NjID0gZXhwYW5kX2FsaWFzZXMoQGluaXRpYWxfY2MpOwogQGJjY2xpc3QgPSBleHBhbmRfYWxpYXNlcyhAYmNjbGlzdCk7CiAKLWlmICghZGVmaW5lZCAkaW5pdGlhbF9zdWJqZWN0ICYmICRjb21wb3NlKSB7Ci0Jd2hpbGUgKDEpIHsKLQkJJF8gPSAkdGVybS0+cmVhZGxpbmUoIldoYXQgc3ViamVjdCBzaG91bGQgdGhlIGluaXRpYWwgZW1haWwgc3RhcnQgd2l0aD8gIiwgJGluaXRpYWxfc3ViamVjdCk7Ci0JCWxhc3QgaWYgZGVmaW5lZCAkXzsKLQkJcHJpbnQgIlxuIjsKLQl9Ci0KLQkkaW5pdGlhbF9zdWJqZWN0ID0gJF87Ci0JJHByb21wdGluZysrOwotfQotCiBpZiAoJHRocmVhZCAmJiAhZGVmaW5lZCAkaW5pdGlhbF9yZXBseV90byAmJiAkcHJvbXB0aW5nKSB7CiAJd2hpbGUgKDEpIHsKIAkJJF89ICR0ZXJtLT5yZWFkbGluZSgiTWVzc2FnZS1JRCB0byBiZSB1c2VkIGFzIEluLVJlcGx5LVRvIGZvciB0aGUgZmlyc3QgZW1haWw/ICIsICRpbml0aWFsX3JlcGx5X3RvKTsKQEAgLTUxOSw1OSArNjM4LDYgQEAKIH0KIAogaWYgKCRjb21wb3NlKSB7Ci0JIyBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBuZWVkIHRvIGJlIHNlY3VyZSwgYnV0IHdlIHdpbGwgbWFrZSBhIHNtYWxsCi0JIyBlZmZvcnQgdG8gaGF2ZSBpdCBiZSB1bmlxdWUKLQlvcGVuKEMsIj4iLCRjb21wb3NlX2ZpbGVuYW1lKQotCQlvciBkaWUgIkZhaWxlZCB0byBvcGVuIGZvciB3cml0aW5nICRjb21wb3NlX2ZpbGVuYW1lOiAkISI7Ci0JcHJpbnQgQyAiRnJvbSAkc2VuZGVyICMgVGhpcyBsaW5lIGlzIGlnbm9yZWQuXG4iOwotCXByaW50ZiBDICJTdWJqZWN0OiAlc1xuXG4iLCAkaW5pdGlhbF9zdWJqZWN0OwotCXByaW50ZiBDIDw8RU9UOwotR0lUOiBQbGVhc2UgZW50ZXIgeW91ciBlbWFpbCBiZWxvdy4KLUdJVDogTGluZXMgYmVnaW5uaW5nIGluICJHSVQ6ICIgd2lsbCBiZSByZW1vdmVkLgotR0lUOiBDb25zaWRlciBpbmNsdWRpbmcgYW4gb3ZlcmFsbCBkaWZmc3RhdCBvciB0YWJsZSBvZiBjb250ZW50cwotR0lUOiBmb3IgdGhlIHBhdGNoIHlvdSBhcmUgd3JpdGluZy4KLQotRU9UCi0JY2xvc2UoQyk7Ci0KLQlteSAkZWRpdG9yID0gJEVOVntHSVRfRURJVE9SfSB8fCBHaXQ6OmNvbmZpZyhAcmVwbywgImNvcmUuZWRpdG9yIikgfHwgJEVOVntWSVNVQUx9IHx8ICRFTlZ7RURJVE9SfSB8fCAidmkiOwotCXN5c3RlbSgnc2gnLCAnLWMnLCAkZWRpdG9yLicgIiRAIicsICRlZGl0b3IsICRjb21wb3NlX2ZpbGVuYW1lKTsKLQotCW9wZW4oQzIsIj4iLCRjb21wb3NlX2ZpbGVuYW1lIC4gIi5maW5hbCIpCi0JCW9yIGRpZSAiRmFpbGVkIHRvIG9wZW4gJGNvbXBvc2VfZmlsZW5hbWUuZmluYWwgOiAiIC4gJCE7Ci0KLQlvcGVuKEMsIjwiLCRjb21wb3NlX2ZpbGVuYW1lKQotCQlvciBkaWUgIkZhaWxlZCB0byBvcGVuICRjb21wb3NlX2ZpbGVuYW1lIDogIiAuICQhOwotCi0JbXkgJG5lZWRfOGJpdF9jdGUgPSBmaWxlX2hhc19ub25hc2NpaSgkY29tcG9zZV9maWxlbmFtZSk7Ci0JbXkgJGluX2JvZHkgPSAwOwotCXdoaWxlKDxDPikgewotCQluZXh0IGlmIG0vXkdJVDogLzsKLQkJaWYgKCEkaW5fYm9keSAmJiAvXlxuJC8pIHsKLQkJCSRpbl9ib2R5ID0gMTsKLQkJCWlmICgkbmVlZF84Yml0X2N0ZSkgewotCQkJCXByaW50IEMyICJNSU1FLVZlcnNpb246IDEuMFxuIiwKLQkJCQkJICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47ICIsCi0JCQkJCSAgICJjaGFyc2V0PXV0Zi04XG4iLAotCQkJCQkgIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiI7Ci0JCQl9Ci0JCX0KLQkJaWYgKCEkaW5fYm9keSAmJiAvXk1JTUUtVmVyc2lvbjovaSkgewotCQkJJG5lZWRfOGJpdF9jdGUgPSAwOwotCQl9Ci0JCWlmICghJGluX2JvZHkgJiYgL15TdWJqZWN0OiA/KC4qKS9pKSB7Ci0JCQlteSAkc3ViamVjdCA9ICQxOwotCQkJJF8gPSAiU3ViamVjdDogIiAuCi0JCQkJKCRzdWJqZWN0ID1+IC9bXls6YXNjaWk6XV0vID8KLQkJCQkgcXVvdGVfcmZjMjA0Nygkc3ViamVjdCkgOgotCQkJCSAkc3ViamVjdCkgLgotCQkJCSJcbiI7Ci0JCX0KLQkJcHJpbnQgQzIgJF87Ci0JfQotCWNsb3NlKEMpOwotCWNsb3NlKEMyKTsKLQogCXdoaWxlICgxKSB7CiAJCSRfID0gJHRlcm0tPnJlYWRsaW5lKCJTZW5kIHRoaXMgZW1haWw/ICh5fG4pICIpOwogCQlsYXN0IGlmIGRlZmluZWQgJF87CkBAIC01ODMsNyArNjQ5LDkgQEAKIAkJZXhpdCgwKTsKIAl9CiAKLQlAZmlsZXMgPSAoJGNvbXBvc2VfZmlsZW5hbWUgLiAiLmZpbmFsIiwgQGZpbGVzKTsKKwlpZiAoJGNvbXBvc2UgPiAwKSB7CisJCUBmaWxlcyA9ICgkY29tcG9zZV9maWxlbmFtZSAuICIuZmluYWwiLCBAZmlsZXMpOworCX0KIH0KIAogIyBWYXJpYWJsZXMgd2Ugc2V0IGFzIHBhcnQgb2YgdGhlIGxvb3Agb3ZlciBmaWxlcwpkaWZmIC0tZ2l0IGEvZ2l0LXNoLXNldHVwLnNoIGIvZ2l0LXNoLXNldHVwLnNoCmluZGV4IGRiZGYyMDkuLjIxNDIzMDggMTAwNzU1Ci0tLSBhL2dpdC1zaC1zZXR1cC5zaAorKysgYi9naXQtc2gtc2V0dXAuc2gKQEAgLTg1LDggKzg1LDI3IEBACiAJY2R1cD0kKGdpdCByZXYtcGFyc2UgLS1zaG93LWNkdXApCiAJaWYgdGVzdCAhIC16ICIkY2R1cCIKIAl0aGVuCi0JCWNkICIkY2R1cCIgfHwgewotCQkJZWNobyA+JjIgIkNhbm5vdCBjaGRpciB0byAkY2R1cCwgdGhlIHRvcGxldmVsIG9mIHRoZSB3b3JraW5nIHRyZWUiCisJCWNhc2UgIiRjZHVwIiBpbgorCQkvKikKKwkJCSMgTm90IHF1aXRlIHRoZSBzYW1lIGFzIGlmIHdlIGRpZCAiY2QgLVAgJyRjZHVwJyIgd2hlbgorCQkJIyAkY2R1cCBjb250YWlucyAiLi4iIGFmdGVyIHN5bWxpbmsgcGF0aCBjb21wb25lbnRzLgorCQkJIyBEb24ndCBmaXggdGhhdCBjYXNlIGF0IGxlYXN0IHVudGlsIEdpdCBzd2l0Y2hlcyB0bworCQkJIyAiY2QgLVAiIGFjcm9zcyB0aGUgYm9hcmQuCisJCQlwaHlzPSIkY2R1cCIKKwkJCTs7CisJCS4ufC4uLyp8Ki8uLnwqLy4uLyopCisJCQkjIEludGVycHJldCAkY2R1cCByZWxhdGl2ZSB0byB0aGUgcGh5c2ljYWwsIG5vdCBsb2dpY2FsLCBjd2QuCisJCQkjIFByb2JhYmx5IC9iaW4vcHdkIGlzIG1vcmUgcG9ydGFibGUgdGhhbiBwYXNzaW5nIC1QIHRvIGNkIG9yIHB3ZC4KKwkJCXBoeXM9IiQodW5zZXQgUFdEOyAvYmluL3B3ZCkvJGNkdXAiCisJCQk7OworCQkqKQorCQkJIyBUaGVyZSdzIG5vICIuLiIsIHNvIG5vIG5lZWQgdG8gbWFrZSB0aGluZ3MgYWJzb2x1dGUuCisJCQlwaHlzPSIkY2R1cCIKKwkJCTs7CisJCWVzYWMKKworCQljZCAiJHBoeXMiIHx8IHsKKwkJCWVjaG8gPiYyICJDYW5ub3QgY2hkaXIgdG8gJHBoeXMsIHRoZSB0b3BsZXZlbCBvZiB0aGUgd29ya2luZyB0cmVlIgogCQkJZXhpdCAxCiAJCX0KIAlmaQpkaWZmIC0tZ2l0IGEvZ2l0LXN1Ym1vZHVsZS5zaCBiL2dpdC1zdWJtb2R1bGUuc2gKaW5kZXggOTdlNGQ5YS4uMmY0N2UwNiAxMDA3NTUKLS0tIGEvZ2l0LXN1Ym1vZHVsZS5zaAorKysgYi9naXQtc3VibW9kdWxlLnNoCkBAIC02LDkgKzYsMTAgQEAKIAogVVNBR0U9IlstLXF1aWV0XSBbLS1jYWNoZWRdIFwKIFthZGQgPHJlcG8+IFstYiBicmFuY2hdIDxwYXRoPl18W3N0YXR1c3xpbml0fHVwZGF0ZSBbLWl8LS1pbml0XXxzdW1tYXJ5IFstbnwtLXN1bW1hcnktbGltaXQgPG4+XSBbPGNvbW1pdD5dXSBcCi1bLS1dIFs8cGF0aD4uLi5dIgorWy0tXSBbPHBhdGg+Li4uXXxbZm9yZWFjaCA8Y29tbWFuZD5dfFtzeW5jIFstLV0gWzxwYXRoPi4uLl1dIgogT1BUSU9OU19TUEVDPQogLiBnaXQtc2gtc2V0dXAKKy4gZ2l0LXBhcnNlLXJlbW90ZQogcmVxdWlyZV93b3JrX3RyZWUKIAogY29tbWFuZD0KQEAgLTMwLDEyICszMSwxMSBAQAogIyBSZXNvbHZlIHJlbGF0aXZlIHVybCBieSBhcHBlbmRpbmcgdG8gcGFyZW50J3MgdXJsCiByZXNvbHZlX3JlbGF0aXZlX3VybCAoKQogewotCWJyYW5jaD0iJChnaXQgc3ltYm9saWMtcmVmIEhFQUQgMj4vZGV2L251bGwpIgotCXJlbW90ZT0iJChnaXQgY29uZmlnIGJyYW5jaC4ke2JyYW5jaCNyZWZzL2hlYWRzL30ucmVtb3RlKSIKLQlyZW1vdGU9IiR7cmVtb3RlOi1vcmlnaW59IgorCXJlbW90ZT0kKGdldF9kZWZhdWx0X3JlbW90ZSkKIAlyZW1vdGV1cmw9JChnaXQgY29uZmlnICJyZW1vdGUuJHJlbW90ZS51cmwiKSB8fAogCQlkaWUgInJlbW90ZSAoJHJlbW90ZSkgZG9lcyBub3QgaGF2ZSBhIHVybCBkZWZpbmVkIGluIC5naXQvY29uZmlnIgogCXVybD0iJDEiCisJcmVtb3RldXJsPSR7cmVtb3RldXJsJS99CiAJd2hpbGUgdGVzdCAtbiAiJHVybCIKIAlkbwogCQljYXNlICIkdXJsIiBpbgpAQCAtNTAsNyArNTAsMTYgQEAKIAkJCWJyZWFrOzsKIAkJZXNhYwogCWRvbmUKLQllY2hvICIkcmVtb3RldXJsLyR1cmwiCisJZWNobyAiJHJlbW90ZXVybC8ke3VybCUvfSIKK30KKworIworIyBHZXQgc3VibW9kdWxlIGluZm8gZm9yIHJlZ2lzdGVyZWQgc3VibW9kdWxlcworIyAkQCA9IHBhdGggdG8gbGltaXQgc3VibW9kdWxlIGxpc3QKKyMKK21vZHVsZV9saXN0KCkKK3sKKwlnaXQgbHMtZmlsZXMgLS1zdGFnZSAtLSAiJEAiIHwgZ3JlcCAnXjE2MDAwMCAnCiB9CiAKICMKQEAgLTE5OSw2ICsyMDgsMjYgQEAKIH0KIAogIworIyBFeGVjdXRlIGFuIGFyYml0cmFyeSBjb21tYW5kIHNlcXVlbmNlIGluIGVhY2ggY2hlY2tlZCBvdXQKKyMgc3VibW9kdWxlCisjCisjICRAID0gY29tbWFuZCB0byBleGVjdXRlCisjCitjbWRfZm9yZWFjaCgpCit7CisJbW9kdWxlX2xpc3QgfAorCXdoaWxlIHJlYWQgbW9kZSBzaGExIHN0YWdlIHBhdGgKKwlkbworCQlpZiB0ZXN0IC1lICIkcGF0aCIvLmdpdAorCQl0aGVuCisJCQlzYXkgIkVudGVyaW5nICckcGF0aCciCisJCQkoY2QgIiRwYXRoIiAmJiBldmFsICIkQCIpIHx8CisJCQlkaWUgIlN0b3BwaW5nIGF0ICckcGF0aCc7IHNjcmlwdCByZXR1cm5lZCBub24temVybyBzdGF0dXMuIgorCQlmaQorCWRvbmUKK30KKworIwogIyBSZWdpc3RlciBzdWJtb2R1bGVzIGluIC5naXQvY29uZmlnCiAjCiAjICRAID0gcmVxdWVzdGVkIHBhdGhzIChkZWZhdWx0IHRvIGFsbCkKQEAgLTIyNiw3ICsyNTUsNyBAQAogCQlzaGlmdAogCWRvbmUKIAotCWdpdCBscy1maWxlcyAtLXN0YWdlIC0tICIkQCIgfCBncmVwICdeMTYwMDAwICcgfAorCW1vZHVsZV9saXN0ICIkQCIgfAogCXdoaWxlIHJlYWQgbW9kZSBzaGExIHN0YWdlIHBhdGgKIAlkbwogCQkjIFNraXAgYWxyZWFkeSByZWdpc3RlcmVkIHBhdGhzCkBAIC0yODQsNyArMzEzLDcgQEAKIAkJZXNhYwogCWRvbmUKIAotCWdpdCBscy1maWxlcyAtLXN0YWdlIC0tICIkQCIgfCBncmVwICdeMTYwMDAwICcgfAorCW1vZHVsZV9saXN0ICIkQCIgfAogCXdoaWxlIHJlYWQgbW9kZSBzaGExIHN0YWdlIHBhdGgKIAlkbwogCQluYW1lPSQobW9kdWxlX25hbWUgIiRwYXRoIikgfHwgZXhpdApAQCAtMzg0LDcgKzQxMyw3IEBACiAKIAl0ZXN0ICRzdW1tYXJ5X2xpbWl0ID0gMCAmJiByZXR1cm4KIAotCWlmIHJldj0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgIiQxXjAiIDI+L2Rldi9udWxsKQorCWlmIHJldj0kKGdpdCByZXYtcGFyc2UgLXEgLS12ZXJpZnkgIiQxXjAiKQogCXRoZW4KIAkJaGVhZD0kcmV2CiAJCXNoaWZ0CkBAIC0zOTUsNyArNDI0LDcgQEAKIAljZF90b190b3BsZXZlbAogCSMgR2V0IG1vZGlmaWVkIG1vZHVsZXMgY2FyZWQgYnkgdXNlcgogCW1vZHVsZXM9JChnaXQgZGlmZi1pbmRleCAkY2FjaGVkIC0tcmF3ICRoZWFkIC0tICIkQCIgfAotCQlncmVwIC1lICdeOjE2MDAwMCcgLWUgJ146WzAtN10qIDE2MDAwMCcgfAorCQllZ3JlcCAnXjooWzAtN10qICk/MTYwMDAwJyB8CiAJCXdoaWxlIHJlYWQgbW9kX3NyYyBtb2RfZHN0IHNoYTFfc3JjIHNoYTFfZHN0IHN0YXR1cyBuYW1lCiAJCWRvCiAJCQkjIEFsd2F5cyBzaG93IG1vZHVsZXMgZGVsZXRlZCBvciB0eXBlLWNoYW5nZWQgKGJsb2I8LT5tb2R1bGUpCkBAIC00MDksNyArNDM4LDcgQEAKIAl0ZXN0IC16ICIkbW9kdWxlcyIgJiYgcmV0dXJuCiAKIAlnaXQgZGlmZi1pbmRleCAkY2FjaGVkIC0tcmF3ICRoZWFkIC0tICRtb2R1bGVzIHwKLQlncmVwIC1lICdeOjE2MDAwMCcgLWUgJ146WzAtN10qIDE2MDAwMCcgfAorCWVncmVwICdeOihbMC03XSogKT8xNjAwMDAnIHwKIAljdXQgLWMyLSB8CiAJd2hpbGUgcmVhZCBtb2Rfc3JjIG1vZF9kc3Qgc2hhMV9zcmMgc2hhMV9kc3Qgc3RhdHVzIG5hbWUKIAlkbwpAQCAtNDM1LDExICs0NjQsMTEgQEAKIAkJbWlzc2luZ19kc3Q9CiAKIAkJdGVzdCAkbW9kX3NyYyA9IDE2MDAwMCAmJgotCQkhIEdJVF9ESVI9IiRuYW1lLy5naXQiIGdpdC1yZXYtcGFyc2UgLS12ZXJpZnkgJHNoYTFfc3JjXjAgPi9kZXYvbnVsbCAyPiYxICYmCisJCSEgR0lUX0RJUj0iJG5hbWUvLmdpdCIgZ2l0LXJldi1wYXJzZSAtcSAtLXZlcmlmeSAkc2hhMV9zcmNeMCA+L2Rldi9udWxsICYmCiAJCW1pc3Npbmdfc3JjPXQKIAogCQl0ZXN0ICRtb2RfZHN0ID0gMTYwMDAwICYmCi0JCSEgR0lUX0RJUj0iJG5hbWUvLmdpdCIgZ2l0LXJldi1wYXJzZSAtLXZlcmlmeSAkc2hhMV9kc3ReMCA+L2Rldi9udWxsIDI+JjEgJiYKKwkJISBHSVRfRElSPSIkbmFtZS8uZ2l0IiBnaXQtcmV2LXBhcnNlIC1xIC0tdmVyaWZ5ICRzaGExX2RzdF4wID4vZGV2L251bGwgJiYKIAkJbWlzc2luZ19kc3Q9dAogCiAJCXRvdGFsX2NvbW1pdHM9CkBAIC01NTQsNyArNTgzLDcgQEAKIAkJc2hpZnQKIAlkb25lCiAKLQlnaXQgbHMtZmlsZXMgLS1zdGFnZSAtLSAiJEAiIHwgZ3JlcCAnXjE2MDAwMCAnIHwKKwltb2R1bGVfbGlzdCAiJEAiIHwKIAl3aGlsZSByZWFkIG1vZGUgc2hhMSBzdGFnZSBwYXRoCiAJZG8KIAkJbmFtZT0kKG1vZHVsZV9uYW1lICIkcGF0aCIpIHx8IGV4aXQKQEAgLTU3OCw2ICs2MDcsNTggQEAKIAkJZmkKIAlkb25lCiB9CisjCisjIFN5bmMgcmVtb3RlIHVybHMgZm9yIHN1Ym1vZHVsZXMKKyMgVGhpcyBtYWtlcyB0aGUgdmFsdWUgZm9yIHJlbW90ZS4kcmVtb3RlLnVybCBtYXRjaCB0aGUgdmFsdWUKKyMgc3BlY2lmaWVkIGluIC5naXRtb2R1bGVzLgorIworY21kX3N5bmMoKQoreworCXdoaWxlIHRlc3QgJCMgLW5lIDAKKwlkbworCQljYXNlICIkMSIgaW4KKwkJLXF8LS1xdWlldCkKKwkJCXF1aWV0PTEKKwkJCXNoaWZ0CisJCQk7OworCQktLSkKKwkJCXNoaWZ0CisJCQlicmVhaworCQkJOzsKKwkJLSopCisJCQl1c2FnZQorCQkJOzsKKwkJKikKKwkJCWJyZWFrCisJCQk7OworCQllc2FjCisJZG9uZQorCWNkX3RvX3RvcGxldmVsCisJbW9kdWxlX2xpc3QgIiRAIiB8CisJd2hpbGUgcmVhZCBtb2RlIHNoYTEgc3RhZ2UgcGF0aAorCWRvCisJCW5hbWU9JChtb2R1bGVfbmFtZSAiJHBhdGgiKQorCQl1cmw9JChnaXQgY29uZmlnIC1mIC5naXRtb2R1bGVzIC0tZ2V0IHN1Ym1vZHVsZS4iJG5hbWUiLnVybCkKKworCQkjIFBvc3NpYmx5IGEgdXJsIHJlbGF0aXZlIHRvIHBhcmVudAorCQljYXNlICIkdXJsIiBpbgorCQkuLyp8Li4vKikKKwkJCXVybD0kKHJlc29sdmVfcmVsYXRpdmVfdXJsICIkdXJsIikgfHwgZXhpdAorCQkJOzsKKwkJZXNhYworCisJCWlmIHRlc3QgLWUgIiRwYXRoIi8uZ2l0CisJCXRoZW4KKwkJKAorCQkJdW5zZXQgR0lUX0RJUgorCQkJY2QgIiRwYXRoIgorCQkJcmVtb3RlPSQoZ2V0X2RlZmF1bHRfcmVtb3RlKQorCQkJc2F5ICJTeW5jaHJvbml6aW5nIHN1Ym1vZHVsZSB1cmwgZm9yICckbmFtZSciCisJCQlnaXQgY29uZmlnIHJlbW90ZS4iJHJlbW90ZSIudXJsICIkdXJsIgorCQkpCisJCWZpCisJZG9uZQorfQogCiAjIFRoaXMgbG9vcCBwYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgdG8gZmluZCB0aGUKICMgc3ViY29tbWFuZCBuYW1lIHRvIGRpc3BhdGNoLiAgUGFyc2luZyBvZiB0aGUgc3ViY29tbWFuZCBzcGVjaWZpYwpAQCAtNTg4LDcgKzY2OSw3IEBACiB3aGlsZSB0ZXN0ICQjICE9IDAgJiYgdGVzdCAteiAiJGNvbW1hbmQiCiBkbwogCWNhc2UgIiQxIiBpbgotCWFkZCB8IGluaXQgfCB1cGRhdGUgfCBzdGF0dXMgfCBzdW1tYXJ5KQorCWFkZCB8IGZvcmVhY2ggfCBpbml0IHwgdXBkYXRlIHwgc3RhdHVzIHwgc3VtbWFyeSB8IHN5bmMpCiAJCWNvbW1hbmQ9JDEKIAkJOzsKIAktcXwtLXF1aWV0KQpkaWZmIC0tZ2l0IGEvZ2l0LXN2bi5wZXJsIGIvZ2l0LXN2bi5wZXJsCmluZGV4IDI1ZWQyZjQuLmFkMDFlMTggMTAwNzU1Ci0tLSBhL2dpdC1zdm4ucGVybAorKysgYi9naXQtc3ZuLnBlcmwKQEAgLTY2LDcgKzY2LDcgQEAKIAkkX3ZlcnNpb24sICRfZmV0Y2hfYWxsLCAkX25vX3JlYmFzZSwKIAkkX21lcmdlLCAkX3N0cmF0ZWd5LCAkX2RyeV9ydW4sICRfbG9jYWwsCiAJJF9wcmVmaXgsICRfbm9fY2hlY2tvdXQsICRfdXJsLCAkX3ZlcmJvc2UsCi0JJF9naXRfZm9ybWF0LCAkX2NvbW1pdF91cmwpOworCSRfZ2l0X2Zvcm1hdCwgJF9jb21taXRfdXJsLCAkX3RhZyk7CiAkR2l0OjpTVk46Ol9mb2xsb3dfcGFyZW50ID0gMTsKIG15ICVyZW1vdGVfb3B0cyA9ICggJ3VzZXJuYW1lPXMnID0+IFwkR2l0OjpTVk46OlByb21wdDo6X3VzZXJuYW1lLAogICAgICAgICAgICAgICAgICAgICAnY29uZmlnLWRpcj1zJyA9PiBcJEdpdDo6U1ZOOjpSYTo6Y29uZmlnX2RpciwKQEAgLTEzMSw2ICsxMzEsMTUgQEAKIAkJCSAgJ3JldmlzaW9ufHI9aScgPT4gXCRfcmV2aXNpb24sCiAJCQkgICduby1yZWJhc2UnID0+IFwkX25vX3JlYmFzZSwKIAkJCSVjbXRfb3B0cywgJWZjX29wdHMgfSBdLAorCWJyYW5jaCA9PiBbIFwmY21kX2JyYW5jaCwKKwkgICAgICAgICAgICAnQ3JlYXRlIGEgYnJhbmNoIGluIHRoZSBTVk4gcmVwb3NpdG9yeScsCisJICAgICAgICAgICAgeyAnbWVzc2FnZXxtPXMnID0+IFwkX21lc3NhZ2UsCisJICAgICAgICAgICAgICAnZHJ5LXJ1bnxuJyA9PiBcJF9kcnlfcnVuLAorCQkgICAgICAndGFnfHQnID0+IFwkX3RhZyB9IF0sCisJdGFnID0+IFsgc3ViIHsgJF90YWcgPSAxOyBjbWRfYnJhbmNoKEBfKSB9LAorCSAgICAgICAgICdDcmVhdGUgYSB0YWcgaW4gdGhlIFNWTiByZXBvc2l0b3J5JywKKwkgICAgICAgICB7ICdtZXNzYWdlfG09cycgPT4gXCRfbWVzc2FnZSwKKwkgICAgICAgICAgICdkcnktcnVufG4nID0+IFwkX2RyeV9ydW4gfSBdLAogCSdzZXQtdHJlZScgPT4gWyBcJmNtZF9zZXRfdHJlZSwKIAkgICAgICAgICAgICAgICAgIlNldCBhbiBTVk4gcmVwb3NpdG9yeSB0byBhIGdpdCB0cmVlLWlzaCIsCiAJCQl7ICdzdGRpbnwnID0+IFwkX3N0ZGluLCAlY210X29wdHMsICVmY19vcHRzLCB9IF0sCkBAIC0yMTQsMTEgKzIyMywxMyBAQAogCQkJICAgICJidXQgaXQgaXMgbm90IGEgZGlyZWN0b3J5XG4iOwogCQl9CiAJCW15ICRnaXRfZGlyID0gZGVsZXRlICRFTlZ7R0lUX0RJUn07Ci0JCWNob21wKG15ICRjZHVwID0gY29tbWFuZF9vbmVsaW5lKHF3L3Jldi1wYXJzZSAtLXNob3ctY2R1cC8pKTsKLQkJdW5sZXNzIChsZW5ndGggJGNkdXApIHsKLQkJCWRpZSAiQWxyZWFkeSBhdCB0b3BsZXZlbCwgYnV0ICRnaXRfZGlyICIsCi0JCQkgICAgIm5vdCBmb3VuZCAnJGNkdXAnXG4iOwotCQl9CisJCW15ICRjZHVwID0gdW5kZWY7CisJCWdpdF9jbWRfdHJ5IHsKKwkJCSRjZHVwID0gY29tbWFuZF9vbmVsaW5lKHF3L3Jldi1wYXJzZSAtLXNob3ctY2R1cC8pOworCQkJJGdpdF9kaXIgPSAnLicgdW5sZXNzICgkY2R1cCk7CisJCQljaG9tcCAkY2R1cCBpZiAoJGNkdXApOworCQkJJGNkdXAgPSAiLiIgdW5sZXNzICgkY2R1cCAmJiBsZW5ndGggJGNkdXApOworCQl9ICJBbHJlYWR5IGF0IHRvcGxldmVsLCBidXQgJGdpdF9kaXIgbm90IGZvdW5kXG4iOwogCQljaGRpciAkY2R1cCBvciBkaWUgIlVuYWJsZSB0byBjaGRpciB1cCB0byAnJGNkdXAnXG4iOwogCQl1bmxlc3MgKC1kICRnaXRfZGlyKSB7CiAJCQlkaWUgIiRnaXRfZGlyIHN0aWxsIG5vdCBmb3VuZCBhZnRlciBnb2luZyB0byAiLApAQCAtNDIxLDE1ICs0MzIsMTUgQEAKIAkkaGVhZCB8fD0gJ0hFQUQnOwogCW15IEByZWZzOwogCW15ICgkdXJsLCAkcmV2LCAkdXVpZCwgJGdzKSA9IHdvcmtpbmdfaGVhZF9pbmZvKCRoZWFkLCBcQHJlZnMpOworCXVubGVzcyAoJGdzKSB7CisJCWRpZSAiVW5hYmxlIHRvIGRldGVybWluZSB1cHN0cmVhbSBTVk4gaW5mb3JtYXRpb24gZnJvbSAiLAorCQkgICAgIiRoZWFkIGhpc3RvcnkuXG5QZXJoYXBzIHRoZSByZXBvc2l0b3J5IGlzIGVtcHR5LiI7CisJfQogCSR1cmwgPSBkZWZpbmVkICRfY29tbWl0X3VybCA/ICRfY29tbWl0X3VybCA6ICRncy0+ZnVsbF91cmw7CiAJbXkgJGxhc3RfcmV2ID0gJF9yZXZpc2lvbiBpZiBkZWZpbmVkICRfcmV2aXNpb247CiAJaWYgKCR1cmwpIHsKIAkJcHJpbnQgIkNvbW1pdHRpbmcgdG8gJHVybCAuLi5cbiI7CiAJfQotCXVubGVzcyAoJGdzKSB7Ci0JCWRpZSAiVW5hYmxlIHRvIGRldGVybWluZSB1cHN0cmVhbSBTVk4gaW5mb3JtYXRpb24gZnJvbSAiLAotCQkgICAgIiRoZWFkIGhpc3RvcnkuXG5QZXJoYXBzIHRoZSByZXBvc2l0b3J5IGlzIGVtcHR5LiI7Ci0JfQogCW15ICgkbGluZWFyX3JlZnMsICRwYXJlbnRzKSA9IGxpbmVhcml6ZV9oaXN0b3J5KCRncywgXEByZWZzKTsKIAlpZiAoJF9ub19yZWJhc2UgJiYgc2NhbGFyKEAkbGluZWFyX3JlZnMpID4gMSkgewogCQl3YXJuICJBdHRlbXB0aW5nIHRvIGNvbW1pdCBtb3JlIHRoYW4gb25lIGNoYW5nZSB3aGlsZSAiLApAQCAtNTM3LDYgKzU0OCw0MiBAQAogCXVubGluayAkZ3MtPntpbmRleH07CiB9CiAKK3N1YiBjbWRfYnJhbmNoIHsKKwlteSAoJGJyYW5jaF9uYW1lLCAkaGVhZCkgPSBAXzsKKworCXVubGVzcyAoZGVmaW5lZCAkYnJhbmNoX25hbWUgJiYgbGVuZ3RoICRicmFuY2hfbmFtZSkgeworCQlkaWUoKCRfdGFnID8gInRhZyIgOiAiYnJhbmNoIikgLiAiIG5hbWUgcmVxdWlyZWRcbiIpOworCX0KKwkkaGVhZCB8fD0gJ0hFQUQnOworCisJbXkgKCRzcmMsICRyZXYsIHVuZGVmLCAkZ3MpID0gd29ya2luZ19oZWFkX2luZm8oJGhlYWQpOworCisJbXkgJHJlbW90ZSA9IEdpdDo6U1ZOOjpyZWFkX2FsbF9yZW1vdGVzKCktPnskZ3MtPntyZXBvX2lkfX07CisJbXkgJGdsb2IgPSAkcmVtb3RlLT57ICRfdGFnID8gJ3RhZ3MnIDogJ2JyYW5jaGVzJyB9OworCW15ICgkbGZ0LCAkcmd0KSA9IEB7ICRnbG9iLT57cGF0aH0gfXtxdy9sZWZ0IHJpZ2h0L307CisJbXkgJGRzdCA9IGpvaW4gJy8nLCAkcmVtb3RlLT57dXJsfSwgJGxmdCwgJGJyYW5jaF9uYW1lLCAoJHJndCB8fCAoKSk7CisKKwlteSAkY3R4ID0gU1ZOOjpDbGllbnQtPm5ldygKKwkJYXV0aCAgICA9PiBHaXQ6OlNWTjo6UmE6Ol9hdXRoX3Byb3ZpZGVycygpLAorCQlsb2dfbXNnID0+IHN1YiB7CisJCQkkeyAkX1swXSB9ID0gZGVmaW5lZCAkX21lc3NhZ2UKKwkJCQk/ICRfbWVzc2FnZQorCQkJCTogJ0NyZWF0ZSAnIC4gKCRfdGFnID8gJ3RhZyAnIDogJ2JyYW5jaCAnICkKKwkJCQkuICRicmFuY2hfbmFtZTsKKwkJfSwKKwkpOworCisJZXZhbCB7CisJCSRjdHgtPmxzKCRkc3QsICdIRUFEJywgMCk7CisJfSBhbmQgZGllICJicmFuY2ggJHticmFuY2hfbmFtZX0gYWxyZWFkeSBleGlzdHNcbiI7CisKKwlwcmludCAiQ29weWluZyAke3NyY30gYXQgciR7cmV2fSB0byAke2RzdH0uLi5cbiI7CisJJGN0eC0+Y29weSgkc3JjLCAkcmV2LCAkZHN0KQorCQl1bmxlc3MgJF9kcnlfcnVuOworCisJJGdzLT5mZXRjaF9hbGw7Cit9CisKIHN1YiBjbWRfZmluZF9yZXYgewogCW15ICRyZXZpc2lvbl9vcl9oYXNoID0gc2hpZnQgb3IgZGllICJTVk4gb3IgZ2l0IHJldmlzaW9uIHJlcXVpcmVkICIsCiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFzIGEgY29tbWFuZC1saW5lIGFyZ3VtZW50XG4iOwpAQCAtODAzLDggKzg1MCwyOCBAQAogCX0KIH0KIAorc3ViIGVzY2FwZV91cmlfb25seSB7CisJbXkgKCR1cmkpID0gQF87CisJbXkgQHRtcDsKKwlmb3JlYWNoIChzcGxpdCBtey99LCAkdXJpKSB7CisJCXMvKFteflx3LiUrLV18JSg/IVthLWZBLUYwLTldezJ9KSkvc3ByaW50ZigiJSUlMDJYIixvcmQoJDEpKS9lZzsKKwkJcHVzaCBAdG1wLCAkXzsKKwl9CisJam9pbignLycsIEB0bXApOworfQorCitzdWIgZXNjYXBlX3VybCB7CisJbXkgKCR1cmwpID0gQF87CisJaWYgKCR1cmwgPX4gbSNeKFteOl0rKTovLyhbXi9dKikoLiopJCMpIHsKKwkJbXkgKCRzY2hlbWUsICRkb21haW4sICR1cmkpID0gKCQxLCAkMiwgZXNjYXBlX3VyaV9vbmx5KCQzKSk7CisJCSR1cmwgPSAiJHNjaGVtZTovLyRkb21haW4kdXJpIjsKKwl9CisJJHVybDsKK30KKwogc3ViIGNtZF9pbmZvIHsKIAlteSAkcGF0aCA9IGNhbm9uaWNhbGl6ZV9wYXRoKGRlZmluZWQoJF9bMF0pID8gJF9bMF0gOiAiLiIpOworCW15ICRmdWxscGF0aCA9IGNhbm9uaWNhbGl6ZV9wYXRoKCRjbWRfZGlyX3ByZWZpeCAuICRwYXRoKTsKIAlpZiAoZXhpc3RzICRfWzFdKSB7CiAJCWRpZSAiVG9vIG1hbnkgYXJndW1lbnRzIHNwZWNpZmllZFxuIjsKIAl9CkBAIC04MTIsOCArODc5LDggQEAKIAlteSAoJGZpbGVfdHlwZSwgJGRpZmZfc3RhdHVzKSA9IGZpbmRfZmlsZV90eXBlX2FuZF9kaWZmX3N0YXR1cygkcGF0aCk7CiAKIAlpZiAoISRmaWxlX3R5cGUgJiYgISRkaWZmX3N0YXR1cykgewotCQlwcmludCBTVERFUlIgIiRwYXRoOiAgKE5vdCBhIHZlcnNpb25lZCByZXNvdXJjZSlcblxuIjsKLQkJcmV0dXJuOworCQlwcmludCBTVERFUlIgInN2bjogJyRwYXRoJyBpcyBub3QgdW5kZXIgdmVyc2lvbiBjb250cm9sXG4iOworCQlleGl0IDE7CiAJfQogCiAJbXkgKCR1cmwsICRyZXYsICR1dWlkLCAkZ3MpID0gd29ya2luZ19oZWFkX2luZm8oJ0hFQUQnKTsKQEAgLTgyNSwyMSArODkyLDIxIEBACiAJIyBjYW5vbmljYWxpemVfcGF0aCgpIHdpbGwgcmV0dXJuICIiIHRvIG1ha2UgbGlic3ZuIDEuNS54IGhhcHB5LAogCSRwYXRoID0gIi4iIGlmICRwYXRoIGVxICIiOwogCi0JbXkgJGZ1bGxfdXJsID0gJHVybCAuICgkcGF0aCBlcSAiLiIgPyAiIiA6ICIvJHBhdGgiKTsKKwlteSAkZnVsbF91cmwgPSAkdXJsIC4gKCRmdWxscGF0aCBlcSAiIiA/ICIiIDogIi8kZnVsbHBhdGgiKTsKIAogCWlmICgkX3VybCkgewotCQlwcmludCAkZnVsbF91cmwsICJcbiI7CisJCXByaW50IGVzY2FwZV91cmwoJGZ1bGxfdXJsKSwgIlxuIjsKIAkJcmV0dXJuOwogCX0KIAogCW15ICRyZXN1bHQgPSAiUGF0aDogJHBhdGhcbiI7CiAJJHJlc3VsdCAuPSAiTmFtZTogIiAuIGJhc2VuYW1lKCRwYXRoKSAuICJcbiIgaWYgJGZpbGVfdHlwZSBuZSAiZGlyIjsKLQkkcmVzdWx0IC49ICJVUkw6ICIgLiAkZnVsbF91cmwgLiAiXG4iOworCSRyZXN1bHQgLj0gIlVSTDogIiAuIGVzY2FwZV91cmwoJGZ1bGxfdXJsKSAuICJcbiI7CiAKIAlldmFsIHsKIAkJbXkgJHJlcG9zX3Jvb3QgPSAkZ3MtPnJlcG9zX3Jvb3Q7CiAJCUdpdDo6U1ZOOjpyZW1vdmVfdXNlcm5hbWUoJHJlcG9zX3Jvb3QpOwotCQkkcmVzdWx0IC49ICJSZXBvc2l0b3J5IFJvb3Q6ICRyZXBvc19yb290XG4iOworCQkkcmVzdWx0IC49ICJSZXBvc2l0b3J5IFJvb3Q6ICIgLiBlc2NhcGVfdXJsKCRyZXBvc19yb290KSAuICJcbiI7CiAJfTsKIAlpZiAoJEApIHsKIAkJJHJlc3VsdCAuPSAiUmVwb3NpdG9yeSBSb290OiAob2ZmbGluZSlcbiI7CkBAIC04NjEsNyArOTI4LDcgQEAKIAl9CiAKIAlteSAoJGxjX2F1dGhvciwgJGxjX3JldiwgJGxjX2RhdGVfdXRjKTsKLQlteSBAYXJncyA9IEdpdDo6U1ZOOjpMb2c6OmdpdF9zdm5fbG9nX2NtZCgkcmV2LCAkcmV2LCAiLS0iLCAkcGF0aCk7CisJbXkgQGFyZ3MgPSBHaXQ6OlNWTjo6TG9nOjpnaXRfc3ZuX2xvZ19jbWQoJHJldiwgJHJldiwgIi0tIiwgJGZ1bGxwYXRoKTsKIAlteSAkbG9nID0gY29tbWFuZF9vdXRwdXRfcGlwZShAYXJncyk7CiAJbXkgJGVzY19jb2xvciA9IHFyLyg/OlwwMzNcWyg/Oig/OlxkKzspKlxkKik/bSkqLzsKIAl3aGlsZSAoPCRsb2c+KSB7CkBAIC0xMDcxLDkgKzExMzgsMTkgQEAKIAkJc3lzdGVtKCRlZGl0b3IsICRjb21taXRfZWRpdG1zZyk7CiAJfQogCXJlbmFtZSAkY29tbWl0X2VkaXRtc2csICRjb21taXRfbXNnIG9yIGNyb2FrICQhOwotCW9wZW4gJGxvZ19maCwgJzwnLCAkY29tbWl0X21zZyBvciBjcm9hayAkITsKLQl7IGxvY2FsICQvOyBjaG9tcCgkbG9nX2VudHJ5e2xvZ30gPSA8JGxvZ19maD4pOyB9Ci0JY2xvc2UgJGxvZ19maCBvciBjcm9hayAkITsKKwl7CisJCSMgU1ZOIHJlcXVpcmVzIG1lc3NhZ2VzIHRvIGJlIFVURi04IHdoZW4gZW50ZXJpbmcgdGhlIHJlcG8KKwkJbG9jYWwgJC87CisJCW9wZW4gJGxvZ19maCwgJzwnLCAkY29tbWl0X21zZyBvciBjcm9hayAkITsKKwkJYmlubW9kZSAkbG9nX2ZoOworCQljaG9tcCgkbG9nX2VudHJ5e2xvZ30gPSA8JGxvZ19maD4pOworCisJCWlmIChteSAkZW5jID0gR2l0Ojpjb25maWcoJ2kxOG4uY29tbWl0ZW5jb2RpbmcnKSkgeworCQkJcmVxdWlyZSBFbmNvZGU7CisJCQlFbmNvZGU6OmZyb21fdG8oJGxvZ19lbnRyeXtsb2d9LCAkZW5jLCAnVVRGLTgnKTsKKwkJfQorCQljbG9zZSAkbG9nX2ZoIG9yIGNyb2FrICQhOworCX0KIAl1bmxpbmsgJGNvbW1pdF9tc2c7CiAJXCVsb2dfZW50cnk7CiB9CkBAIC0yMjA4LDYgKzIyODUsMTQgQEAKIAl9CiAJZGVmaW5lZChteSAkcGlkID0gb3BlbjMobXkgJG1zZ19maCwgbXkgJG91dF9maCwgJz4mU1RERVJSJywgQGV4ZWMpKQogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgY3JvYWsgJCE7CisJYmlubW9kZSAkbXNnX2ZoOworCisJIyB3ZSBhbHdheXMgZ2V0IFVURi04IGZyb20gU1ZOLCBidXQgd2UgbWF5IHdhbnQgb3VyIGNvbW1pdHMgaW4KKwkjIGEgZGlmZmVyZW50IGVuY29kaW5nLgorCWlmIChteSAkZW5jID0gR2l0Ojpjb25maWcoJ2kxOG4uY29tbWl0ZW5jb2RpbmcnKSkgeworCQlyZXF1aXJlIEVuY29kZTsKKwkJRW5jb2RlOjpmcm9tX3RvKCRsb2dfZW50cnktPntsb2d9LCAnVVRGLTgnLCAkZW5jKTsKKwl9CiAJcHJpbnQgJG1zZ19maCAkbG9nX2VudHJ5LT57bG9nfSBvciBjcm9hayAkITsKIAlyZXN0b3JlX2NvbW1pdF9oZWFkZXJfZW52KCRvbGRfZW52KTsKIAl1bmxlc3MgKCRzZWxmLT5ub19tZXRhZGF0YSkgewpAQCAtMjYxNCw5ICsyNjk5LDkgQEAKIHN1YiByZWJ1aWxkIHsKIAlteSAoJHNlbGYpID0gQF87CiAJbXkgJG1hcF9wYXRoID0gJHNlbGYtPm1hcF9wYXRoOwotCXJldHVybiBpZiAoLWUgJG1hcF9wYXRoICYmICEgLXogJG1hcF9wYXRoKTsKKwlteSAkcGFydGlhbCA9ICgtZSAkbWFwX3BhdGggJiYgISAteiAkbWFwX3BhdGgpOwogCXJldHVybiB1bmxlc3MgOjp2ZXJpZnlfcmVmKCRzZWxmLT5yZWZuYW1lLideMCcpOwotCWlmICgkc2VsZi0+dXNlX3N2bV9wcm9wcyB8fCAkc2VsZi0+bm9fbWV0YWRhdGEpIHsKKwlpZiAoISRwYXJ0aWFsICYmICgkc2VsZi0+dXNlX3N2bV9wcm9wcyB8fCAkc2VsZi0+bm9fbWV0YWRhdGEpKSB7CiAJCW15ICRyZXZfZGIgPSAkc2VsZi0+cmV2X2RiX3BhdGg7CiAJCSRzZWxmLT5yZWJ1aWxkX2Zyb21fcmV2X2RiKCRyZXZfZGIpOwogCQlpZiAoJHNlbGYtPnVzZV9zdm1fcHJvcHMpIHsKQEAgLTI2MjYsMTAgKzI3MTEsMTMgQEAKIAkJJHNlbGYtPnVubGlua19yZXZfZGJfc3ltbGluazsKIAkJcmV0dXJuOwogCX0KLQlwcmludCAiUmVidWlsZGluZyAkbWFwX3BhdGggLi4uXG4iOworCXByaW50ICJSZWJ1aWxkaW5nICRtYXBfcGF0aCAuLi5cbiIgaWYgKCEkcGFydGlhbCk7CisJbXkgKCRiYXNlX3JldiwgJGhlYWQpID0gKCRwYXJ0aWFsID8gJHNlbGYtPnJldl9tYXBfbWF4X25vcmVidWlsZCgxKSA6CisJCSh1bmRlZiwgdW5kZWYpKTsKIAlteSAoJGxvZywgJGN0eCkgPQogCSAgICBjb21tYW5kX291dHB1dF9waXBlKHF3L3Jldi1saXN0IC0tcHJldHR5PXJhdyAtLW5vLWNvbG9yIC0tcmV2ZXJzZS8sCi0JICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYtPnJlZm5hbWUsICctLScpOworCQkJCSgkaGVhZCA/ICIkaGVhZC4uIiA6ICIiKSAuICRzZWxmLT5yZWZuYW1lLAorCQkJCSctLScpOwogCW15ICRtZXRhZGF0YV91cmwgPSAkc2VsZi0+bWV0YWRhdGFfdXJsOwogCXJlbW92ZV91c2VybmFtZSgkbWV0YWRhdGFfdXJsKTsKIAlteSAkc3ZuX3V1aWQgPSAkc2VsZi0+cmFfdXVpZDsKQEAgLTI2NTIsMTIgKzI3NDAsMTcgQEAKIAkJICAgICgkbWV0YWRhdGFfdXJsICYmICR1cmwgJiYgKCR1cmwgbmUgJG1ldGFkYXRhX3VybCkpKSB7CiAJCQluZXh0OwogCQl9CisJCWlmICgkcGFydGlhbCAmJiAkaGVhZCkgeworCQkJcHJpbnQgIlBhcnRpYWwtcmVidWlsZGluZyAkbWFwX3BhdGggLi4uXG4iOworCQkJcHJpbnQgIkN1cnJlbnRseSBhdCAkYmFzZV9yZXYgPSAkaGVhZFxuIjsKKwkJCSRoZWFkID0gdW5kZWY7CisJCX0KIAogCQkkc2VsZi0+cmV2X21hcF9zZXQoJHJldiwgJGMpOwogCQlwcmludCAiciRyZXYgPSAkY1xuIjsKIAl9CiAJY29tbWFuZF9jbG9zZV9waXBlKCRsb2csICRjdHgpOwotCXByaW50ICJEb25lIHJlYnVpbGRpbmcgJG1hcF9wYXRoXG4iOworCXByaW50ICJEb25lIHJlYnVpbGRpbmcgJG1hcF9wYXRoXG4iIGlmICghJHBhcnRpYWwgfHwgISRoZWFkKTsKIAlteSAkcmV2X2RiX3BhdGggPSAkc2VsZi0+cmV2X2RiX3BhdGg7CiAJaWYgKC1mICRzZWxmLT5yZXZfZGJfcGF0aCkgewogCQl1bmxpbmsgJHNlbGYtPnJldl9kYl9wYXRoIG9yIGNyb2FrICJ1bmxpbms6ICQhIjsKQEAgLTI3OTcsNiArMjg5MCwxMiBAQAogc3ViIHJldl9tYXBfbWF4IHsKIAlteSAoJHNlbGYsICR3YW50X2NvbW1pdCkgPSBAXzsKIAkkc2VsZi0+cmVidWlsZDsKKwlteSAoJHIsICRjKSA9ICRzZWxmLT5yZXZfbWFwX21heF9ub3JlYnVpbGQoJHdhbnRfY29tbWl0KTsKKwkkd2FudF9jb21taXQgPyAoJHIsICRjKSA6ICRyOworfQorCitzdWIgcmV2X21hcF9tYXhfbm9yZWJ1aWxkIHsKKwlteSAoJHNlbGYsICR3YW50X2NvbW1pdCkgPSBAXzsKIAlteSAkbWFwX3BhdGggPSAkc2VsZi0+bWFwX3BhdGg7CiAJc3RhdCAkbWFwX3BhdGggb3IgcmV0dXJuICR3YW50X2NvbW1pdCA/ICgwLCB1bmRlZikgOiAwOwogCXN5c29wZW4obXkgJGZoLCAkbWFwX3BhdGgsIE9fUkRPTkxZKSBvciBjcm9hayAib3BlbjogJCEiOwpAQCAtMzI0MSwxMSArMzM0MCwxMSBAQAogCiBzdWIgYXBwbHlfdGV4dGRlbHRhIHsKIAlteSAoJHNlbGYsICRmYiwgJGV4cCkgPSBAXzsKLQlteSAkZmggPSBHaXQ6OnRlbXBfYWNxdWlyZSgnc3ZuX2RlbHRhJyk7CisJbXkgJGZoID0gJDo6X3JlcG9zaXRvcnktPnRlbXBfYWNxdWlyZSgnc3ZuX2RlbHRhJyk7CiAJIyAkZmggZ2V0cyBhdXRvLWNsb3NlZCgpIGJ5IFNWTjo6VHhEZWx0YTo6YXBwbHkoKSwKIAkjIChidXQgJGJhc2UgZG9lcyBub3QsKSBzbyBkdXAoKSBpdCBmb3IgcmVhZGluZyBpbiBjbG9zZV9maWxlCiAJb3BlbiBteSAkZHVwLCAnPCYnLCAkZmggb3IgY3JvYWsgJCE7Ci0JbXkgJGJhc2UgPSBHaXQ6OnRlbXBfYWNxdWlyZSgnZ2l0X2Jsb2InKTsKKwlteSAkYmFzZSA9ICQ6Ol9yZXBvc2l0b3J5LT50ZW1wX2FjcXVpcmUoJ2dpdF9ibG9iJyk7CiAJaWYgKCRmYi0+e2Jsb2J9KSB7CiAJCXByaW50ICRiYXNlICdsaW5rICcgaWYgKCRmYi0+e21vZGVfYX0gPT0gMTIwMDAwKTsKIAkJbXkgJHNpemUgPSAkOjpfcmVwb3NpdG9yeS0+Y2F0X2Jsb2IoJGZiLT57YmxvYn0sICRiYXNlKTsKQEAgLTMyODYsNyArMzM4NSw4IEBACiAJCQkJd2FybiAiJHBhdGggaGFzIG1vZGUgMTIwMDAwIiwKIAkJCQkJCSIgYnV0IGlzIG5vdCBhIGxpbmtcbiI7CiAJCQl9IGVsc2UgewotCQkJCW15ICR0bXBfZmggPSBHaXQ6OnRlbXBfYWNxdWlyZSgnc3ZuX2hhc2gnKTsKKwkJCQlteSAkdG1wX2ZoID0gJDo6X3JlcG9zaXRvcnktPnRlbXBfYWNxdWlyZSgKKwkJCQkJJ3N2bl9oYXNoJyk7CiAJCQkJbXkgJHJlczsKIAkJCQl3aGlsZSAoJHJlcyA9IHN5c3JlYWQoJGZoLCBteSAkc3RyLCAxMDI0KSkgewogCQkJCQlteSAkb3V0ID0gc3lzd3JpdGUoJHRtcF9maCwgJHN0ciwgJHJlcyk7CkBAIC0zMzg4LDExICszNDg4LDEyIEBACiAJd2hpbGUgKDwkZGlmZl9maD4pIHsKIAkJY2hvbXAgJF87ICMgdGhpcyBnZXRzIHJpZCBvZiB0aGUgdHJhaWxpbmcgIlwwIgogCQlpZiAoJHN0YXRlIGVxICdtZXRhJyAmJiAvXjooXGR7Nn0pXHMoXGR7Nn0pXHMKLQkJCQkJJDo6c2hhMVxzKCQ6OnNoYTEpXHMKKwkJCQkJKCQ6OnNoYTEpXHMoJDo6c2hhMSlccwogCQkJCQkoW01UQ1JBRF0pXGQqJC94bykgewogCQkJcHVzaCBAbW9kcywgewltb2RlX2EgPT4gJDEsIG1vZGVfYiA9PiAkMiwKLQkJCQkJc2hhMV9iID0+ICQzLCBjaGcgPT4gJDQgfTsKLQkJCWlmICgkNCA9fiAvXig/OkN8UikkLykgeworCQkJCQlzaGExX2EgPT4gJDMsIHNoYTFfYiA9PiAkNCwKKwkJCQkJY2hnID0+ICQ1IH07CisJCQlpZiAoJDUgPX4gL14oPzpDfFIpJC8pIHsKIAkJCQkkc3RhdGUgPSAnZmlsZV9hJzsKIAkJCX0gZWxzZSB7CiAJCQkJJHN0YXRlID0gJ2ZpbGVfYic7CkBAIC0zNDY1LDcgKzM1NjYsNyBAQAogc3ViIHVybF9wYXRoIHsKIAlteSAoJHNlbGYsICRwYXRoKSA9IEBfOwogCWlmICgkc2VsZi0+e3VybH0gPX4gbSNeaHR0cHM/Oi8vIykgewotCQkkcGF0aCA9fiBzLyhbXmEtekEtWjAtOV8uLV0pL3VjIHNwcmludGYoIiUlJTAyeCIsb3JkKCQxKSkvZWc7CisJCSRwYXRoID1+IHMvKFtefmEtekEtWjAtOV8uLV0pL3VjIHNwcmludGYoIiUlJTAyeCIsb3JkKCQxKSkvZWc7CiAJfQogCSRzZWxmLT57dXJsfSAuICcvJyAuICRzZWxmLT5yZXBvX3BhdGgoJHBhdGgpOwogfQpAQCAtMzY0NCw2ICszNzQ1LDcgQEAKIAlteSAkZmJhdCA9ICRzZWxmLT5hZGRfZmlsZSgkc2VsZi0+cmVwb19wYXRoKCRtLT57ZmlsZV9ifSksICRwYmF0LAogCQkJCSRzZWxmLT51cmxfcGF0aCgkbS0+e2ZpbGVfYX0pLCAkc2VsZi0+e3J9KTsKIAlwcmludCAiXHRSXHQkbS0+e2ZpbGVfYX0gPT4gJG0tPntmaWxlX2J9XG4iIHVubGVzcyAkOjpfcTsKKwkkc2VsZi0+YXBwbHlfYXV0b3Byb3BzKCRmaWxlLCAkZmJhdCk7CiAJJHNlbGYtPmNoZ19maWxlKCRmYmF0LCAkbSk7CiAJJHNlbGYtPmNsb3NlX2ZpbGUoJGZiYXQsdW5kZWYsJHNlbGYtPntwb29sfSk7CiAKQEAgLTM2NzAsNiArMzc3MiwyNyBAQAogCSRzZWxmLT5TVVBFUjo6Y2hhbmdlX2ZpbGVfcHJvcCgkZmJhdCwgJHBuYW1lLCAkcHZhbCwgJHNlbGYtPntwb29sfSk7CiB9CiAKK3N1YiBfY2hnX2ZpbGVfZ2V0X2Jsb2IgKCQkJCQpIHsKKwlteSAoJHNlbGYsICRmYmF0LCAkbSwgJHdoaWNoKSA9IEBfOworCW15ICRmaCA9ICQ6Ol9yZXBvc2l0b3J5LT50ZW1wX2FjcXVpcmUoImdpdF9ibG9iXyR3aGljaCIpOworCWlmICgkbS0+eyJtb2RlXyR3aGljaCJ9ID1+IC9eMTIwLykgeworCQlwcmludCAkZmggJ2xpbmsgJyBvciBjcm9hayAkITsKKwkJJHNlbGYtPmNoYW5nZV9maWxlX3Byb3AoJGZiYXQsJ3N2bjpzcGVjaWFsJywnKicpOworCX0gZWxzaWYgKCRtLT57bW9kZV9hfSA9fiAvXjEyMC8gJiYgJG0tPnsibW9kZV8kd2hpY2gifSAhfiAvXjEyMC8pIHsKKwkJJHNlbGYtPmNoYW5nZV9maWxlX3Byb3AoJGZiYXQsJ3N2bjpzcGVjaWFsJyx1bmRlZik7CisJfQorCW15ICRibG9iID0gJG0tPnsic2hhMV8kd2hpY2gifTsKKwlyZXR1cm4gKCRmaCwpIGlmICgkYmxvYiA9fiAvXjB7NDB9JC8pOworCW15ICRzaXplID0gJDo6X3JlcG9zaXRvcnktPmNhdF9ibG9iKCRibG9iLCAkZmgpOworCWNyb2FrICJGYWlsZWQgdG8gcmVhZCBvYmplY3QgJGJsb2IiIGlmICgkc2l6ZSA8IDApOworCSRmaC0+Zmx1c2ggPT0gMCBvciBjcm9hayAkITsKKwlzZWVrICRmaCwgMCwgMCBvciBjcm9hayAkITsKKworCW15ICRleHAgPSA6Om1kNXN1bSgkZmgpOworCXNlZWsgJGZoLCAwLCAwIG9yIGNyb2FrICQhOworCXJldHVybiAoJGZoLCAkZXhwKTsKK30KKwogc3ViIGNoZ19maWxlIHsKIAlteSAoJHNlbGYsICRmYmF0LCAkbSkgPSBAXzsKIAlpZiAoJG0tPnttb2RlX2J9ID1+IC83NTUkLyAmJiAkbS0+e21vZGVfYX0gIX4gLzc1NSQvKSB7CkBAIC0zNjc3LDI2ICszODAwLDI0IEBACiAJfSBlbHNpZiAoJG0tPnttb2RlX2J9ICF+IC83NTUkLyAmJiAkbS0+e21vZGVfYX0gPX4gLzc1NSQvKSB7CiAJCSRzZWxmLT5jaGFuZ2VfZmlsZV9wcm9wKCRmYmF0LCdzdm46ZXhlY3V0YWJsZScsdW5kZWYpOwogCX0KLQlteSAkZmggPSBHaXQ6OnRlbXBfYWNxdWlyZSgnZ2l0X2Jsb2InKTsKLQlpZiAoJG0tPnttb2RlX2J9ID1+IC9eMTIwLykgewotCQlwcmludCAkZmggJ2xpbmsgJyBvciBjcm9hayAkITsKLQkJJHNlbGYtPmNoYW5nZV9maWxlX3Byb3AoJGZiYXQsJ3N2bjpzcGVjaWFsJywnKicpOwotCX0gZWxzaWYgKCRtLT57bW9kZV9hfSA9fiAvXjEyMC8gJiYgJG0tPnttb2RlX2J9ICF+IC9eMTIwLykgewotCQkkc2VsZi0+Y2hhbmdlX2ZpbGVfcHJvcCgkZmJhdCwnc3ZuOnNwZWNpYWwnLHVuZGVmKTsKLQl9Ci0JbXkgJHNpemUgPSAkOjpfcmVwb3NpdG9yeS0+Y2F0X2Jsb2IoJG0tPntzaGExX2J9LCAkZmgpOwotCWNyb2FrICJGYWlsZWQgdG8gcmVhZCBvYmplY3QgJG0tPntzaGExX2J9IiBpZiAoJHNpemUgPCAwKTsKLQkkZmgtPmZsdXNoID09IDAgb3IgY3JvYWsgJCE7Ci0Jc2VlayAkZmgsIDAsIDAgb3IgY3JvYWsgJCE7Ci0KLQlteSAkZXhwID0gOjptZDVzdW0oJGZoKTsKLQlzZWVrICRmaCwgMCwgMCBvciBjcm9hayAkITsKLQorCW15ICgkZmhfYSwgJGV4cF9hKSA9IF9jaGdfZmlsZV9nZXRfYmxvYiAkc2VsZiwgJGZiYXQsICRtLCAnYSc7CisJbXkgKCRmaF9iLCAkZXhwX2IpID0gX2NoZ19maWxlX2dldF9ibG9iICRzZWxmLCAkZmJhdCwgJG0sICdiJzsKIAlteSAkcG9vbCA9IFNWTjo6UG9vbC0+bmV3OwotCW15ICRhdGQgPSAkc2VsZi0+YXBwbHlfdGV4dGRlbHRhKCRmYmF0LCB1bmRlZiwgJHBvb2wpOwotCW15ICRnb3QgPSBTVk46OlR4RGVsdGE6OnNlbmRfc3RyZWFtKCRmaCwgQCRhdGQsICRwb29sKTsKLQlkaWUgIkNoZWNrc3VtIG1pc21hdGNoXG5leHBlY3RlZDogJGV4cFxuZ290OiAkZ290XG4iIGlmICgkZ290IG5lICRleHApOwotCUdpdDo6dGVtcF9yZWxlYXNlKCRmaCwgMSk7CisJbXkgJGF0ZCA9ICRzZWxmLT5hcHBseV90ZXh0ZGVsdGEoJGZiYXQsICRleHBfYSwgJHBvb2wpOworCWlmICgtcyAkZmhfYSkgeworCQlteSAkdHhzdHJlYW0gPSBTVk46OlR4RGVsdGE6Om5ldyAoJGZoX2EsICRmaF9iLCAkcG9vbCk7CisJCW15ICRyZXMgPSBTVk46OlR4RGVsdGE6OnNlbmRfdHhzdHJlYW0oJHR4c3RyZWFtLCBAJGF0ZCwgJHBvb2wpOworCQlpZiAoZGVmaW5lZCAkcmVzKSB7CisJCQlkaWUgIlVuZXhwZWN0ZWQgcmVzdWx0IGZyb20gc2VuZF90eHN0cmVhbTogJHJlc1xuIiwKKwkJCSAgICAiKFNWTjo6Q29yZTo6VkVSU0lPTjogJFNWTjo6Q29yZTo6VkVSU0lPTilcbiI7CisJCX0KKwl9IGVsc2UgeworCQlteSAkZ290ID0gU1ZOOjpUeERlbHRhOjpzZW5kX3N0cmVhbSgkZmhfYiwgQCRhdGQsICRwb29sKTsKKwkJZGllICJDaGVja3N1bSBtaXNtYXRjaFxuZXhwZWN0ZWQ6ICRleHBfYlxuZ290OiAkZ290XG4iCisJCSAgICBpZiAoJGdvdCBuZSAkZXhwX2IpOworCX0KKwlHaXQ6OnRlbXBfcmVsZWFzZSgkZmhfYiwgMSk7CisJR2l0Ojp0ZW1wX3JlbGVhc2UoJGZoX2EsIDEpOwogCSRwb29sLT5jbGVhcjsKIH0KIApAQCAtMzc5OCw3ICszOTE5LDcgQEAKIAlteSAoJHVyaSkgPSBAXzsKIAlteSBAdG1wOwogCWZvcmVhY2ggKHNwbGl0IG17L30sICR1cmkpIHsKLQkJcy8oW15cdy4lKy1dfCUoPyFbYS1mQS1GMC05XXsyfSkpL3NwcmludGYoIiUlJTAyWCIsb3JkKCQxKSkvZWc7CisJCXMvKFteflx3LiUrLV18JSg/IVthLWZBLUYwLTldezJ9KSkvc3ByaW50ZigiJSUlMDJYIixvcmQoJDEpKS9lZzsKIAkJcHVzaCBAdG1wLCAkXzsKIAl9CiAJam9pbignLycsIEB0bXApOwpAQCAtNDg5NCw4ICs1MDE1LDcgQEAKIAkJfQogCX0KIAlpZiAoQGVtcHRpZWQpIHsKLQkJbXkgJGZpbGUgPSAkRU5We0dJVF9DT05GSUd9IHx8ICRFTlZ7R0lUX0NPTkZJR19MT0NBTH0gfHwKLQkJICAgICAgICAgICAiJEVOVntHSVRfRElSfS9jb25maWciOworCQlteSAkZmlsZSA9ICRFTlZ7R0lUX0NPTkZJR30gfHwgIiRFTlZ7R0lUX0RJUn0vY29uZmlnIjsKIAkJcHJpbnQgU1RERVJSIDw8RU9GOwogVGhlIGZvbGxvd2luZyBbc3ZuLXJlbW90ZV0gc2VjdGlvbnMgaW4geW91ciBjb25maWcgZmlsZSAoJGZpbGUpIGFyZSBlbXB0eQogYW5kIGNhbiBiZSBzYWZlbHkgcmVtb3ZlZDoKZGlmZiAtLWdpdCBhL2dpdC13ZWItLWJyb3dzZS5zaCBiL2dpdC13ZWItLWJyb3dzZS5zaAppbmRleCAzODQxNDhhLi43OGQyMzZiIDEwMDc1NQotLS0gYS9naXQtd2ViLS1icm93c2Uuc2gKKysrIGIvZ2l0LXdlYi0tYnJvd3NlLnNoCkBAIC0zMSw3ICszMSw3IEBACiAKIHZhbGlkX3Rvb2woKSB7CiAJY2FzZSAiJDEiIGluCi0JCWZpcmVmb3ggfCBpY2V3ZWFzZWwgfCBrb25xdWVyb3IgfCB3M20gfCBsaW5rcyB8IGx5bnggfCBkaWxsbyB8IG9wZW4pCisJCWZpcmVmb3ggfCBpY2V3ZWFzZWwgfCBrb25xdWVyb3IgfCB3M20gfCBsaW5rcyB8IGx5bnggfCBkaWxsbyB8IG9wZW4gfCBzdGFydCkKIAkJCTs7ICMgaGFwcHkKIAkJKikKIAkJCXZhbGlkX2N1c3RvbV90b29sICIkMSIgfHwgcmV0dXJuIDEKQEAgLTExNCw2ICsxMTQsMTAgQEAKICAgICBpZiB0ZXN0IC1uICIkU0VDVVJJVFlTRVNTSU9OSUQiOyB0aGVuCiAJYnJvd3Nlcl9jYW5kaWRhdGVzPSJvcGVuICRicm93c2VyX2NhbmRpZGF0ZXMiCiAgICAgZmkKKyAgICAjIC9iaW4vc3RhcnQgaW5kaWNhdGVzIE1pbkdXCisgICAgaWYgdGVzdCAtbiAvYmluL3N0YXJ0OyB0aGVuCisJYnJvd3Nlcl9jYW5kaWRhdGVzPSJzdGFydCAkYnJvd3Nlcl9jYW5kaWRhdGVzIgorICAgIGZpCiAKICAgICBmb3IgaSBpbiAkYnJvd3Nlcl9jYW5kaWRhdGVzOyBkbwogCWluaXRfYnJvd3Nlcl9wYXRoICRpCkBAIC0xNTcsNyArMTYxLDcgQEAKIAkJOzsKIAllc2FjCiAJOzsKLSAgICB3M218bGlua3N8bHlueHxvcGVuKQorICAgIHczbXxsaW5rc3xseW54fG9wZW58c3RhcnQpCiAJZXZhbCAiJGJyb3dzZXJfcGF0aCIgIiRAIgogCTs7CiAgICAgZGlsbG8pCmRpZmYgLS1naXQgYS9naXQuYyBiL2dpdC5jCmluZGV4IDU1ODJjNTEuLmFmNzQ3NjEgMTAwNjQ0Ci0tLSBhL2dpdC5jCisrKyBiL2dpdC5jCkBAIC0yLDYgKzIsNyBAQAogI2luY2x1ZGUgImV4ZWNfY21kLmgiCiAjaW5jbHVkZSAiY2FjaGUuaCIKICNpbmNsdWRlICJxdW90ZS5oIgorI2luY2x1ZGUgInJ1bi1jb21tYW5kLmgiCiAKIGNvbnN0IGNoYXIgZ2l0X3VzYWdlX3N0cmluZ1tdID0KIAkiZ2l0IFstLXZlcnNpb25dIFstLWV4ZWMtcGF0aFs9R0lUX0VYRUNfUEFUSF1dIFstcHwtLXBhZ2luYXRlfC0tbm8tcGFnZXJdIFstLWJhcmVdIFstLWdpdC1kaXI9R0lUX0RJUl0gWy0td29yay10cmVlPUdJVF9XT1JLX1RSRUVdIFstLWhlbHBdIENPTU1BTkQgW0FSR1NdIjsKQEAgLTE5NSw4ICsxOTYsOCBAQAogCQlyZXQgPSAxOwogCX0KIAotCWlmIChzdWJkaXIpCi0JCWNoZGlyKHN1YmRpcik7CisJaWYgKHN1YmRpciAmJiBjaGRpcihzdWJkaXIpKQorCQlkaWUoIkNhbm5vdCBjaGFuZ2UgdG8gJXM6ICVzIiwgc3ViZGlyLCBzdHJlcnJvcihlcnJubykpOwogCiAJZXJybm8gPSBzYXZlZF9lcnJubzsKIApAQCAtMjE5LDcgKzIyMCw3IEBACiAJaW50IG9wdGlvbjsKIH07CiAKLXN0YXRpYyBpbnQgcnVuX2NvbW1hbmQoc3RydWN0IGNtZF9zdHJ1Y3QgKnAsIGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKK3N0YXRpYyBpbnQgcnVuX2J1aWx0aW4oc3RydWN0IGNtZF9zdHJ1Y3QgKnAsIGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKIHsKIAlpbnQgc3RhdHVzOwogCXN0cnVjdCBzdGF0IHN0OwpAQCAtMjY2LDYgKzI2Nyw3IEBACiAJY29uc3QgY2hhciAqY21kID0gYXJndlswXTsKIAlzdGF0aWMgc3RydWN0IGNtZF9zdHJ1Y3QgY29tbWFuZHNbXSA9IHsKIAkJeyAiYWRkIiwgY21kX2FkZCwgUlVOX1NFVFVQIHwgTkVFRF9XT1JLX1RSRUUgfSwKKwkJeyAic3RhZ2UiLCBjbWRfYWRkLCBSVU5fU0VUVVAgfCBORUVEX1dPUktfVFJFRSB9LAogCQl7ICJhbm5vdGF0ZSIsIGNtZF9hbm5vdGF0ZSwgUlVOX1NFVFVQIH0sCiAJCXsgImFwcGx5IiwgY21kX2FwcGx5IH0sCiAJCXsgImFyY2hpdmUiLCBjbWRfYXJjaGl2ZSB9LApAQCAtMzMwLDYgKzMzMiw3IEBACiAJCXsgInBydW5lLXBhY2tlZCIsIGNtZF9wcnVuZV9wYWNrZWQsIFJVTl9TRVRVUCB9LAogCQl7ICJwdXNoIiwgY21kX3B1c2gsIFJVTl9TRVRVUCB9LAogCQl7ICJyZWFkLXRyZWUiLCBjbWRfcmVhZF90cmVlLCBSVU5fU0VUVVAgfSwKKwkJeyAicmVjZWl2ZS1wYWNrIiwgY21kX3JlY2VpdmVfcGFjayB9LAogCQl7ICJyZWZsb2ciLCBjbWRfcmVmbG9nLCBSVU5fU0VUVVAgfSwKIAkJeyAicmVtb3RlIiwgY21kX3JlbW90ZSwgUlVOX1NFVFVQIH0sCiAJCXsgInJlcG8tY29uZmlnIiwgY21kX2NvbmZpZyB9LApAQCAtMzY2LDcgKzM2OSw3IEBACiAJaWYgKHNpemVvZihleHQpID4gMSkgewogCQlpID0gc3RybGVuKGFyZ3ZbMF0pIC0gc3RybGVuKGV4dCk7CiAJCWlmIChpID4gMCAmJiAhc3RyY21wKGFyZ3ZbMF0gKyBpLCBleHQpKSB7Ci0JCQljaGFyICphcmd2MCA9IHN0cmR1cChhcmd2WzBdKTsKKwkJCWNoYXIgKmFyZ3YwID0geHN0cmR1cChhcmd2WzBdKTsKIAkJCWFyZ3ZbMF0gPSBjbWQgPSBhcmd2MDsKIAkJCWFyZ3YwW2ldID0gJ1wwJzsKIAkJfQpAQCAtMzgyLDE2ICszODUsMTYgQEAKIAkJc3RydWN0IGNtZF9zdHJ1Y3QgKnAgPSBjb21tYW5kcytpOwogCQlpZiAoc3RyY21wKHAtPmNtZCwgY21kKSkKIAkJCWNvbnRpbnVlOwotCQlleGl0KHJ1bl9jb21tYW5kKHAsIGFyZ2MsIGFyZ3YpKTsKKwkJZXhpdChydW5fYnVpbHRpbihwLCBhcmdjLCBhcmd2KSk7CiAJfQogfQogCiBzdGF0aWMgdm9pZCBleGVjdl9kYXNoZWRfZXh0ZXJuYWwoY29uc3QgY2hhciAqKmFyZ3YpCiB7Ci0Jc3RydWN0IHN0cmJ1ZiBjbWQ7CisJc3RydWN0IHN0cmJ1ZiBjbWQgPSBTVFJCVUZfSU5JVDsKIAljb25zdCBjaGFyICp0bXA7CisJaW50IHN0YXR1czsKIAotCXN0cmJ1Zl9pbml0KCZjbWQsIDApOwogCXN0cmJ1Zl9hZGRmKCZjbWQsICJnaXQtJXMiLCBhcmd2WzBdKTsKIAogCS8qCkBAIC00MDUsMTAgKzQwOCwxNyBAQAogCiAJdHJhY2VfYXJndl9wcmludGYoYXJndiwgInRyYWNlOiBleGVjOiIpOwogCi0JLyogZXhlY3ZwKCkgY2FuIG9ubHkgZXZlciByZXR1cm4gaWYgaXQgZmFpbHMgKi8KLQlleGVjdnAoY21kLmJ1ZiwgKGNoYXIgKiopYXJndik7Ci0KLQl0cmFjZV9wcmludGYoInRyYWNlOiBleGVjIGZhaWxlZDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7CisJLyoKKwkgKiBpZiB3ZSBmYWlsIGJlY2F1c2UgdGhlIGNvbW1hbmQgaXMgbm90IGZvdW5kLCBpdCBpcworCSAqIE9LIHRvIHJldHVybi4gT3RoZXJ3aXNlLCB3ZSBqdXN0IHBhc3MgYWxvbmcgdGhlIHN0YXR1cyBjb2RlLgorCSAqLworCXN0YXR1cyA9IHJ1bl9jb21tYW5kX3Zfb3B0KGFyZ3YsIDApOworCWlmIChzdGF0dXMgIT0gLUVSUl9SVU5fQ09NTUFORF9FWEVDKSB7CisJCWlmIChJU19SVU5fQ09NTUFORF9FUlIoc3RhdHVzKSkKKwkJCWRpZSgidW5hYmxlIHRvIHJ1biAnJXMnIiwgYXJndlswXSk7CisJCWV4aXQoLXN0YXR1cyk7CisJfQorCWVycm5vID0gRU5PRU5UOyAvKiBhcyBpZiB3ZSBjYWxsZWQgZXhlY3ZwICovCiAKIAlhcmd2WzBdID0gdG1wOwogCkBAIC01MDEsNyArNTExLDkgQEAKIAkJCQljbWQsIGFyZ3ZbMF0pOwogCQkJZXhpdCgxKTsKIAkJfQotCQloZWxwX3Vua25vd25fY21kKGNtZCk7CisJCWFyZ3ZbMF0gPSBoZWxwX3Vua25vd25fY21kKGNtZCk7CisJCWhhbmRsZV9pbnRlcm5hbF9jb21tYW5kKGFyZ2MsIGFyZ3YpOworCQlleGVjdl9kYXNoZWRfZXh0ZXJuYWwoYXJndik7CiAJfQogCiAJZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gcnVuIGNvbW1hbmQgJyVzJzogJXNcbiIsCmRpZmYgLS1naXQgYS9naXQuc3BlYy5pbiBiL2dpdC5zcGVjLmluCmluZGV4IDAzMTljODIuLjRiZTA4MzQgMTAwNjQ0Ci0tLSBhL2dpdC5zcGVjLmluCisrKyBiL2dpdC5zcGVjLmluCkBAIC0xNjgsNiArMTY4LDcgQEAKICVkZWZhdHRyKC0scm9vdCxyb290KQogJXtfbGliZXhlY2Rpcn0vZ2l0LWNvcmUvZ2l0LWd1aQogJXtfbGliZXhlY2Rpcn0vZ2l0LWNvcmUvZ2l0LWNpdG9vbAorJXtfbGliZXhlY2Rpcn0vZ2l0LWNvcmUvZ2l0LWd1aS0tYXNrcGFzcwogJXtfZGF0YWRpcn0vZ2l0LWd1aS8KICV7IT9fd2l0aG91dF9kb2NzOiAle19tYW5kaXJ9L21hbjEvZ2l0LWd1aS4xKn0KICV7IT9fd2l0aG91dF9kb2NzOiAlZG9jIERvY3VtZW50YXRpb24vZ2l0LWd1aS5odG1sfQpkaWZmIC0tZ2l0IGEvZ2l0ay1naXQvZ2l0ayBiL2dpdGstZ2l0L2dpdGsKaW5kZXggMDg3YzRhYy4uZGMyYTQzOSAxMDA2NDQKLS0tIGEvZ2l0ay1naXQvZ2l0aworKysgYi9naXRrLWdpdC9naXRrCkBAIC0xNTUsMTggKzE1NSwxNiBAQAogCQlzZXQgb3JpZ2FyZ3MgW2xyZXBsYWNlICRvcmlnYXJncyAkaSAkaV0KIAkJaW5jciBpIC0xCiAJICAgIH0KLQkgICAgIyBUaGVzZSByZXF1ZXN0IG9yIGFmZmVjdCBkaWZmIG91dHB1dCwgd2hpY2ggd2UgZG9uJ3Qgd2FudC4KLQkgICAgIyBTb21lIGNvdWxkIGJlIHVzZWQgdG8gc2V0IG91ciBkZWZhdWx0cyBmb3IgZGlmZiBkaXNwbGF5LgogCSAgICAiLVtwdWFid2NyUkJNQ10iIC0KIAkgICAgIi0tbm8tcmVuYW1lcyIgLSAiLS1mdWxsLWluZGV4IiAtICItLWJpbmFyeSIgLSAiLS1hYmJyZXY9KiIgLQogCSAgICAiLS1maW5kLWNvcGllcy1oYXJkZXIiIC0gIi1sKiIgLSAiLS1leHQtZGlmZiIgLSAiLS1uby1leHQtZGlmZiIgLQogCSAgICAiLS1zcmMtcHJlZml4PSoiIC0gIi0tZHN0LXByZWZpeD0qIiAtICItLW5vLXByZWZpeCIgLQogCSAgICAiLU8qIiAtICItLXRleHQiIC0gIi0tZnVsbC1kaWZmIiAtICItLWlnbm9yZS1zcGFjZS1hdC1lb2wiIC0KIAkgICAgIi0taWdub3JlLXNwYWNlLWNoYW5nZSIgLSAiLVUqIiAtICItLXVuaWZpZWQ9KiIgeworCQkjIFRoZXNlIHJlcXVlc3Qgb3IgYWZmZWN0IGRpZmYgb3V0cHV0LCB3aGljaCB3ZSBkb24ndCB3YW50LgorCQkjIFNvbWUgY291bGQgYmUgdXNlZCB0byBzZXQgb3VyIGRlZmF1bHRzIGZvciBkaWZmIGRpc3BsYXkuCiAJCWxhcHBlbmQgZGlmZmFyZ3MgJGFyZwogCSAgICB9Ci0JICAgICMgVGhlc2UgY2F1c2Ugb3VyIHBhcnNpbmcgb2YgZ2l0IGxvZydzIG91dHB1dCB0byBmYWlsLCBvciBlbHNlCi0JICAgICMgdGhleSdyZSBvcHRpb25zIHdlIHdhbnQgdG8gc2V0IG91cnNlbHZlcywgc28gaWdub3JlIHRoZW0uCiAJICAgICItLXJhdyIgLSAiLS1wYXRjaC13aXRoLXJhdyIgLSAiLS1wYXRjaC13aXRoLXN0YXQiIC0KIAkgICAgIi0tbmFtZS1vbmx5IiAtICItLW5hbWUtc3RhdHVzIiAtICItLWNvbG9yIiAtICItLWNvbG9yLXdvcmRzIiAtCiAJICAgICItLWxvZy1zaXplIiAtICItLXByZXR0eT0qIiAtICItLWRlY29yYXRlIiAtICItLWFiYnJldi1jb21taXQiIC0KQEAgLTE3NCwzNiArMTcyLDM0IEBACiAJICAgICItLW5vLWNvbG9yIiAtICItZyIgLSAiLS13YWxrLXJlZmxvZ3MiIC0gIi0tbm8td2FsayIgLQogCSAgICAiLS10aW1lc3RhbXAiIC0gInJlbGF0aXZlLWRhdGUiIC0gIi0tZGF0ZT0qIiAtICItLXN0ZGluIiAtCiAJICAgICItLW9iamVjdHMiIC0gIi0tb2JqZWN0cy1lZGdlIiAtICItLXJldmVyc2UiIHsKKwkJIyBUaGVzZSBjYXVzZSBvdXIgcGFyc2luZyBvZiBnaXQgbG9nJ3Mgb3V0cHV0IHRvIGZhaWwsIG9yIGVsc2UKKwkJIyB0aGV5J3JlIG9wdGlvbnMgd2Ugd2FudCB0byBzZXQgb3Vyc2VsdmVzLCBzbyBpZ25vcmUgdGhlbS4KIAkgICAgfQotCSAgICAjIFRoZXNlIGFyZSBoYXJtbGVzcywgYW5kIHNvbWUgYXJlIGV2ZW4gdXNlZnVsCiAJICAgICItLXN0YXQ9KiIgLSAiLS1udW1zdGF0IiAtICItLXNob3J0c3RhdCIgLSAiLS1zdW1tYXJ5IiAtCiAJICAgICItLWNoZWNrIiAtICItLWV4aXQtY29kZSIgLSAiLS1xdWlldCIgLSAiLS10b3BvLW9yZGVyIiAtCiAJICAgICItLWZ1bGwtaGlzdG9yeSIgLSAiLS1kZW5zZSIgLSAiLS1zcGFyc2UiIC0KIAkgICAgIi0tZm9sbG93IiAtICItLWxlZnQtcmlnaHQiIC0gIi0tZW5jb2Rpbmc9KiIgeworCQkjIFRoZXNlIGFyZSBoYXJtbGVzcywgYW5kIHNvbWUgYXJlIGV2ZW4gdXNlZnVsCiAJCWxhcHBlbmQgZ2xmbGFncyAkYXJnCiAJICAgIH0KLQkgICAgIyBUaGVzZSBtZWFuIHRoYXQgd2UgZ2V0IGEgc3Vic2V0IG9mIHRoZSBjb21taXRzCiAJICAgICItLWRpZmYtZmlsdGVyPSoiIC0gIi0tbm8tbWVyZ2VzIiAtICItLXVucGFja2VkIiAtCiAJICAgICItLW1heC1jb3VudD0qIiAtICItLXNraXA9KiIgLSAiLS1zaW5jZT0qIiAtICItLWFmdGVyPSoiIC0KIAkgICAgIi0tdW50aWw9KiIgLSAiLS1iZWZvcmU9KiIgLSAiLS1tYXgtYWdlPSoiIC0gIi0tbWluLWFnZT0qIiAtCiAJICAgICItLWF1dGhvcj0qIiAtICItLWNvbW1pdHRlcj0qIiAtICItLWdyZXA9KiIgLSAiLVtpRV0iIC0KIAkgICAgIi0tcmVtb3ZlLWVtcHR5IiAtICItLWZpcnN0LXBhcmVudCIgLSAiLS1jaGVycnktcGljayIgLQotCSAgICAiLVMqIiAtICItLXBpY2theGUtYWxsIiAtICItLXBpY2theGUtcmVnZXgiIC0geworCSAgICAiLVMqIiAtICItLXBpY2theGUtYWxsIiAtICItLXBpY2theGUtcmVnZXgiIHsKKwkJIyBUaGVzZSBtZWFuIHRoYXQgd2UgZ2V0IGEgc3Vic2V0IG9mIHRoZSBjb21taXRzCiAJCXNldCBmaWx0ZXJlZCAxCiAJCWxhcHBlbmQgZ2xmbGFncyAkYXJnCiAJICAgIH0KLQkgICAgIyBUaGlzIGFwcGVhcnMgdG8gYmUgdGhlIG9ubHkgb25lIHRoYXQgaGFzIGEgdmFsdWUgYXMgYQotCSAgICAjIHNlcGFyYXRlIHdvcmQgZm9sbG93aW5nIGl0CiAJICAgICItbiIgeworCQkjIFRoaXMgYXBwZWFycyB0byBiZSB0aGUgb25seSBvbmUgdGhhdCBoYXMgYSB2YWx1ZSBhcyBhCisJCSMgc2VwYXJhdGUgd29yZCBmb2xsb3dpbmcgaXQKIAkJc2V0IGZpbHRlcmVkIDEKIAkJc2V0IG5leHRpc3ZhbCAxCiAJCWxhcHBlbmQgZ2xmbGFncyAkYXJnCiAJICAgIH0KLQkgICAgIi0tbm90IiB7Ci0JCXNldCBub3RmbGFnIFtleHByIHshJG5vdGZsYWd9XQotCQlsYXBwZW5kIHJldmFyZ3MgJGFyZwotCSAgICB9Ci0JICAgICItLWFsbCIgeworCSAgICAiLS1ub3QiIC0gIi0tYWxsIiB7CiAJCWxhcHBlbmQgcmV2YXJncyAkYXJnCiAJICAgIH0KIAkgICAgIi0tbWVyZ2UiIHsKQEAgLTIxMSw4ICsyMDcsOCBAQAogCQkjIGdpdCByZXYtcGFyc2UgZG9lc24ndCB1bmRlcnN0YW5kIC0tbWVyZ2UKIAkJbGFwcGVuZCByZXZhcmdzIC0tZ2l0ay1zeW1tZXRyaWMtZGlmZi1tYXJrZXIgTUVSR0VfSEVBRC4uLkhFQUQKIAkgICAgfQotCSAgICAjIE90aGVyIGZsYWcgYXJndW1lbnRzIGluY2x1ZGluZyAtPG4+CiAJICAgICItKiIgeworCQkjIE90aGVyIGZsYWcgYXJndW1lbnRzIGluY2x1ZGluZyAtPG4+CiAJCWlmIHtbc3RyaW5nIGlzIGRpZ2l0IC1zdHJpY3QgW3N0cmluZyByYW5nZSAkYXJnIDEgZW5kXV19IHsKIAkJICAgIHNldCBmaWx0ZXJlZCAxCiAJCX0gZWxzZSB7CkBAIC0yMjIsOCArMjE4LDggQEAKIAkJfQogCQlsYXBwZW5kIGdsZmxhZ3MgJGFyZwogCSAgICB9Ci0JICAgICMgTm9uLWZsYWcgYXJndW1lbnRzIHNwZWNpZnkgY29tbWl0cyBvciByYW5nZXMgb2YgY29tbWl0cwogCSAgICBkZWZhdWx0IHsKKwkJIyBOb24tZmxhZyBhcmd1bWVudHMgc3BlY2lmeSBjb21taXRzIG9yIHJhbmdlcyBvZiBjb21taXRzCiAJCWlmIHtbc3RyaW5nIG1hdGNoICIqLi4uKiIgJGFyZ119IHsKIAkJICAgIGxhcHBlbmQgcmV2YXJncyAtLWdpdGstc3ltbWV0cmljLWRpZmYtbWFya2VyCiAJCX0KQEAgLTI2OSw3ICsyNjUsNyBAQAogCQlsYXBwZW5kIGJhZHJldiAkbGluZQogCSAgICB9CiAJfQkJICAgIAotCWVycm9yX3BvcHVwICJFcnJvciBwYXJzaW5nIHJldmlzaW9uczogJGVyciIKKwllcnJvcl9wb3B1cCAiW21jICJFcnJvciBwYXJzaW5nIHJldmlzaW9uczoiXSAkZXJyIgogCXJldHVybiB7fQogICAgIH0KICAgICBzZXQgcmV0IHt9CkBAIC0zMDcsOSArMzAzLDkgQEAKICAgICBnbG9iYWwgc3RhcnRtc2VjcyBjb21taXRpZHggdmlld2NvbXBsZXRlIGN1cnZpZXcKICAgICBnbG9iYWwgdGNsZW5jb2RpbmcKICAgICBnbG9iYWwgdmlld2FyZ3Mgdmlld2FyZ3NjbWQgdmlld2ZpbGVzIHZmaWxlbGltaXQKLSAgICBnbG9iYWwgc2hvd2xvY2FsY2hhbmdlcyBjb21taXRpbnRlcmVzdAorICAgIGdsb2JhbCBzaG93bG9jYWxjaGFuZ2VzCiAgICAgZ2xvYmFsIHZpZXdhY3RpdmUgdmlld2luc3RhbmNlcyB2bWVyZ2Vvbmx5Ci0gICAgZ2xvYmFsIG1haW5oZWFkaWQKKyAgICBnbG9iYWwgbWFpbmhlYWRpZCB2aWV3bWFpbmhlYWRpZCB2aWV3bWFpbmhlYWRpZF9vcmlnCiAgICAgZ2xvYmFsIHZjYW5vcHQgdmZsYWdzIHZyZXZzIHZvcmlnYXJncwogCiAgICAgc2V0IHN0YXJ0bXNlY3MgW2Nsb2NrIGNsaWNrcyAtbWlsbGlzZWNvbmRzXQpAQCAtMzI0LDcgKzMyMCw3IEBACiAJaWYge1tjYXRjaCB7CiAJICAgIHNldCBzdHIgW2V4ZWMgc2ggLWMgJHZpZXdhcmdzY21kKCR2aWV3KV0KIAl9IGVycl19IHsKLQkgICAgZXJyb3JfcG9wdXAgIkVycm9yIGV4ZWN1dGluZyAtLWFyZ3NjbWQgY29tbWFuZDogJGVyciIKKwkgICAgZXJyb3JfcG9wdXAgIlttYyAiRXJyb3IgZXhlY3V0aW5nIC0tYXJnc2NtZCBjb21tYW5kOiJdICRlcnIiCiAJICAgIHJldHVybiAwCiAJfQogCXNldCBhcmdzIFtjb25jYXQgJGFyZ3MgW3NwbGl0ICRzdHIgIlxuIl1dCkBAIC0zNjcsOCArMzYzLDEzIEBACiAgICAgfQogICAgIHNldCBpIFtyZWdfaW5zdGFuY2UgJGZkXQogICAgIHNldCB2aWV3aW5zdGFuY2VzKCR2aWV3KSBbbGlzdCAkaV0KLSAgICBpZiB7JHNob3dsb2NhbGNoYW5nZXMgJiYgJG1haW5oZWFkaWQgbmUge319IHsKLQlsYXBwZW5kIGNvbW1pdGludGVyZXN0KCRtYWluaGVhZGlkKSB7ZG9kaWZmaW5kZXh9CisgICAgc2V0IHZpZXdtYWluaGVhZGlkKCR2aWV3KSAkbWFpbmhlYWRpZAorICAgIHNldCB2aWV3bWFpbmhlYWRpZF9vcmlnKCR2aWV3KSAkbWFpbmhlYWRpZAorICAgIGlmIHskZmlsZXMgbmUge30gJiYgJG1haW5oZWFkaWQgbmUge319IHsKKwlnZXRfdmlld21haW5oZWFkICR2aWV3CisgICAgfQorICAgIGlmIHskc2hvd2xvY2FsY2hhbmdlcyAmJiAkdmlld21haW5oZWFkaWQoJHZpZXcpIG5lIHt9fSB7CisJaW50ZXJlc3RlZGluICR2aWV3bWFpbmhlYWRpZCgkdmlldykgZG9kaWZmaW5kZXgKICAgICB9CiAgICAgZmNvbmZpZ3VyZSAkZmQgLWJsb2NraW5nIDAgLXRyYW5zbGF0aW9uIGxmIC1lb2ZjaGFyIHt9CiAgICAgaWYgeyR0Y2xlbmNvZGluZyAhPSB7fX0gewpAQCAtNDE4LDEwICs0MTksMTIgQEAKIH0KIAogcHJvYyByZXNldF9wZW5kaW5nX3NlbGVjdCB7c2VsaWR9IHsKLSAgICBnbG9iYWwgcGVuZGluZ19zZWxlY3QgbWFpbmhlYWRpZAorICAgIGdsb2JhbCBwZW5kaW5nX3NlbGVjdCBtYWluaGVhZGlkIHNlbGVjdGhlYWRpZAogCiAgICAgaWYgeyRzZWxpZCBuZSB7fX0gewogCXNldCBwZW5kaW5nX3NlbGVjdCAkc2VsaWQKKyAgICB9IGVsc2VpZiB7JHNlbGVjdGhlYWRpZCBuZSB7fX0geworCXNldCBwZW5kaW5nX3NlbGVjdCAkc2VsZWN0aGVhZGlkCiAgICAgfSBlbHNlIHsKIAlzZXQgcGVuZGluZ19zZWxlY3QgJG1haW5oZWFkaWQKICAgICB9CkBAIC00NDQsMjIgKzQ0NywyNiBAQAogICAgIGdsb2JhbCBjdXJ2aWV3IHZjYW5vcHQgdm9yaWdhcmdzIHZmaWxlbGltaXQgdmlld2luc3RhbmNlcwogICAgIGdsb2JhbCB2aWV3YWN0aXZlIHZpZXdjb21wbGV0ZSB0Y2xlbmNvZGluZwogICAgIGdsb2JhbCBzdGFydG1zZWNzIHNob3duZWFydGFncyBzaG93bG9jYWxjaGFuZ2VzCi0gICAgZ2xvYmFsIG1haW5oZWFkaWQgcGVuZGluZ19zZWxlY3QKKyAgICBnbG9iYWwgbWFpbmhlYWRpZCB2aWV3bWFpbmhlYWRpZCB2aWV3bWFpbmhlYWRpZF9vcmlnIHBlbmRpbmdfc2VsZWN0CiAgICAgZ2xvYmFsIGlzd29ya3RyZWUKICAgICBnbG9iYWwgdmFyY2lkIHZwb3NpZHMgdm5lZ2lkcyB2ZmxhZ3MgdnJldnMKIAogICAgIHNldCBpc3dvcmt0cmVlIFtleHByIHtbZXhlYyBnaXQgcmV2LXBhcnNlIC0taXMtaW5zaWRlLXdvcmstdHJlZV0gPT0gInRydWUifV0KLSAgICBzZXQgb2xkbWFpbmlkICRtYWluaGVhZGlkCiAgICAgcmVyZWFkcmVmcwotICAgIGlmIHskc2hvd2xvY2FsY2hhbmdlc30gewotCWlmIHskbWFpbmhlYWRpZCBuZSAkb2xkbWFpbmlkfSB7CisgICAgc2V0IHZpZXcgJGN1cnZpZXcKKyAgICBpZiB7JG1haW5oZWFkaWQgbmUgJHZpZXdtYWluaGVhZGlkX29yaWcoJHZpZXcpfSB7CisJaWYgeyRzaG93bG9jYWxjaGFuZ2VzfSB7CiAJICAgIGRvaGlkZWxvY2FsY2hhbmdlcwogCX0KLQlpZiB7W2NvbW1pdGludmlldyAkbWFpbmhlYWRpZCAkY3Vydmlld119IHsKLQkgICAgZG9kaWZmaW5kZXgKKwlzZXQgdmlld21haW5oZWFkaWQoJHZpZXcpICRtYWluaGVhZGlkCisJc2V0IHZpZXdtYWluaGVhZGlkX29yaWcoJHZpZXcpICRtYWluaGVhZGlkCisJaWYgeyR2ZmlsZWxpbWl0KCR2aWV3KSBuZSB7fX0geworCSAgICBnZXRfdmlld21haW5oZWFkICR2aWV3CiAJfQogICAgIH0KLSAgICBzZXQgdmlldyAkY3VydmlldworICAgIGlmIHskc2hvd2xvY2FsY2hhbmdlc30geworCWRvc2hvd2xvY2FsY2hhbmdlcworICAgIH0KICAgICBpZiB7JHZjYW5vcHQoJHZpZXcpfSB7CiAJc2V0IG9sZHBvcyAkdnBvc2lkcygkdmlldykKIAlzZXQgb2xkbmVnICR2bmVnaWRzKCR2aWV3KQpAQCAtNDk4LDcgKzUwNSw3IEBACiAJc2V0IGZkIFtvcGVuIFtjb25jYXQgfCBnaXQgbG9nIC0tbm8tY29sb3IgLXogLS1wcmV0dHk9cmF3IC0tcGFyZW50cyBcCiAJCQkgIC0tYm91bmRhcnkgJGFyZ3MgIi0tIiAkdmZpbGVsaW1pdCgkdmlldyldIHJdCiAgICAgfSBlcnJdfSB7Ci0JZXJyb3JfcG9wdXAgIkVycm9yIGV4ZWN1dGluZyBnaXQgbG9nOiAkZXJyIgorCWVycm9yX3BvcHVwICJbbWMgIkVycm9yIGV4ZWN1dGluZyBnaXQgbG9nOiJdICRlcnIiCiAJcmV0dXJuCiAgICAgfQogICAgIGlmIHskdmlld2FjdGl2ZSgkdmlldykgPT0gMH0gewpAQCAtMTIyOSw3ICsxMjM2LDcgQEAKIAogcHJvYyBjbG9zZXZhcmNzIHt2fSB7CiAgICAgZ2xvYmFsIHZhcmN0b2sgdmFyY2NvbW1pdHMgdmFyY2lkIHBhcmVudHMgY2hpbGRyZW4KLSAgICBnbG9iYWwgY21pdGxpc3RlZCBjb21taXRpZHggY29tbWl0aW50ZXJlc3QgdnRva21vZAorICAgIGdsb2JhbCBjbWl0bGlzdGVkIGNvbW1pdGlkeCB2dG9rbW9kCiAKICAgICBzZXQgbWlzc2luZ19wYXJlbnRzIDAKICAgICBzZXQgc2NyaXB0cyB7fQpAQCAtMTI1NCwxMiArMTI2MSw3IEBACiAJICAgIH0KIAkgICAgbGFwcGVuZCB2YXJjY29tbWl0cygkdiwkYikgJHAKIAkgICAgaW5jciBjb21taXRpZHgoJHYpCi0JICAgIGlmIHtbaW5mbyBleGlzdHMgY29tbWl0aW50ZXJlc3QoJHApXX0gewotCQlmb3JlYWNoIHNjcmlwdCAkY29tbWl0aW50ZXJlc3QoJHApIHsKLQkJICAgIGxhcHBlbmQgc2NyaXB0cyBbc3RyaW5nIG1hcCBbbGlzdCAiJUkiICRwXSAkc2NyaXB0XQotCQl9Ci0JCXVuc2V0IGNvbW1pdGludGVyZXN0KCRpZCkKLQkgICAgfQorCSAgICBzZXQgc2NyaXB0cyBbY2hlY2tfaW50ZXJlc3QgJHAgJHNjcmlwdHNdCiAJfQogICAgIH0KICAgICBpZiB7JG1pc3NpbmdfcGFyZW50cyA+IDB9IHsKQEAgLTEyOTUsOCArMTI5Nyw0MSBAQAogICAgIH0KIH0KIAorIyBNZWNoYW5pc20gZm9yIHJlZ2lzdGVyaW5nIGEgY29tbWFuZCB0byBiZSBleGVjdXRlZCB3aGVuIHdlIGNvbWUKKyMgYWNyb3NzIGEgcGFydGljdWxhciBjb21taXQuICBUbyBoYW5kbGUgdGhlIGNhc2Ugd2hlbiBvbmx5IHRoZQorIyBwcmVmaXggb2YgdGhlIGNvbW1pdCBpcyBrbm93biwgdGhlIGNvbW1pdGludGVyZXN0IGFycmF5IGlzIG5vdworIyBpbmRleGVkIGJ5IHRoZSBmaXJzdCA0IGNoYXJhY3RlcnMgb2YgdGhlIElELiAgRWFjaCBlbGVtZW50IGlzIGEKKyMgbGlzdCBvZiBpZCwgY21kIHBhaXJzLgorcHJvYyBpbnRlcmVzdGVkaW4ge2lkIGNtZH0geworICAgIGdsb2JhbCBjb21taXRpbnRlcmVzdAorCisgICAgbGFwcGVuZCBjb21taXRpbnRlcmVzdChbc3RyaW5nIHJhbmdlICRpZCAwIDNdKSAkaWQgJGNtZAorfQorCitwcm9jIGNoZWNrX2ludGVyZXN0IHtpZCBzY3JpcHRzfSB7CisgICAgZ2xvYmFsIGNvbW1pdGludGVyZXN0CisKKyAgICBzZXQgcHJlZml4IFtzdHJpbmcgcmFuZ2UgJGlkIDAgM10KKyAgICBpZiB7W2luZm8gZXhpc3RzIGNvbW1pdGludGVyZXN0KCRwcmVmaXgpXX0geworCXNldCBuZXdsaXN0IHt9CisJZm9yZWFjaCB7aSBzY3JpcHR9ICRjb21taXRpbnRlcmVzdCgkcHJlZml4KSB7CisJICAgIGlmIHtbc3RyaW5nIG1hdGNoICIkaSoiICRpZF19IHsKKwkJbGFwcGVuZCBzY3JpcHRzIFtzdHJpbmcgbWFwIFtsaXN0ICIlSSIgJGlkICIlUCIgJGldICRzY3JpcHRdCisJICAgIH0gZWxzZSB7CisJCWxhcHBlbmQgbmV3bGlzdCAkaSAkc2NyaXB0CisJICAgIH0KKwl9CisJaWYgeyRuZXdsaXN0IG5lIHt9fSB7CisJICAgIHNldCBjb21taXRpbnRlcmVzdCgkcHJlZml4KSAkbmV3bGlzdAorCX0gZWxzZSB7CisJICAgIHVuc2V0IGNvbW1pdGludGVyZXN0KCRwcmVmaXgpCisJfQorICAgIH0KKyAgICByZXR1cm4gJHNjcmlwdHMKK30KKwogcHJvYyBnZXRjb21taXRsaW5lcyB7ZmQgaW5zdCB2aWV3IHVwZGF0aW5nfSAgewotICAgIGdsb2JhbCBjbWl0bGlzdGVkIGNvbW1pdGludGVyZXN0IGxlZnRvdmVyCisgICAgZ2xvYmFsIGNtaXRsaXN0ZWQgbGVmdG92ZXIKICAgICBnbG9iYWwgY29tbWl0aWR4IGNvbW1pdGRhdGEgdmRhdGVtb2RlCiAgICAgZ2xvYmFsIHBhcmVudHMgY2hpbGRyZW4gY3VydmlldyBobHZpZXcKICAgICBnbG9iYWwgaWRwZW5kaW5nIG9yZGVydG9rCkBAIC0xNDcyLDEyICsxNTA3LDcgQEAKIAkgICAgaW5jciBpCiAJfQogCi0JaWYge1tpbmZvIGV4aXN0cyBjb21taXRpbnRlcmVzdCgkaWQpXX0gewotCSAgICBmb3JlYWNoIHNjcmlwdCAkY29tbWl0aW50ZXJlc3QoJGlkKSB7Ci0JCWxhcHBlbmQgc2NyaXB0cyBbc3RyaW5nIG1hcCBbbGlzdCAiJUkiICRpZF0gJHNjcmlwdF0KLQkgICAgfQotCSAgICB1bnNldCBjb21taXRpbnRlcmVzdCgkaWQpCi0JfQorCXNldCBzY3JpcHRzIFtjaGVja19pbnRlcmVzdCAkaWQgJHNjcmlwdHNdCiAJc2V0IGdvdHNvbWUgMQogICAgIH0KICAgICBpZiB7JGdvdHNvbWV9IHsKQEAgLTE1MzAsOSArMTU2MCwyNyBAQAogICAgIHJldHVybiAwCiB9CiAKK3Byb2MgZG9fcmVhZGNvbW1pdCB7aWR9IHsKKyAgICBnbG9iYWwgdGNsZW5jb2RpbmcKKworICAgICMgSW52b2tlIGdpdC1sb2cgdG8gaGFuZGxlIGF1dG9tYXRpYyBlbmNvZGluZyBjb252ZXJzaW9uCisgICAgc2V0IGZkIFtvcGVuIFtjb25jYXQgfCBnaXQgbG9nIC0tbm8tY29sb3IgLS1wcmV0dHk9cmF3IC0xICRpZF0gcl0KKyAgICAjIFJlYWQgdGhlIHJlc3VsdHMgdXNpbmcgaTE4bi5sb2dvdXRwdXRlbmNvZGluZworICAgIGZjb25maWd1cmUgJGZkIC10cmFuc2xhdGlvbiBsZiAtZW9mY2hhciB7fQorICAgIGlmIHskdGNsZW5jb2RpbmcgIT0ge319IHsKKwlmY29uZmlndXJlICRmZCAtZW5jb2RpbmcgJHRjbGVuY29kaW5nCisgICAgfQorICAgIHNldCBjb250ZW50cyBbcmVhZCAkZmRdCisgICAgY2xvc2UgJGZkCisgICAgIyBSZW1vdmUgdGhlIGhlYWRpbmcgbGluZQorICAgIHJlZ3N1YiB7XmNvbW1pdCBbMC05YS1mXStcbn0gJGNvbnRlbnRzIHt9IGNvbnRlbnRzCisKKyAgICByZXR1cm4gJGNvbnRlbnRzCit9CisKIHByb2MgcmVhZGNvbW1pdCB7aWR9IHsKLSAgICBpZiB7W2NhdGNoIHtzZXQgY29udGVudHMgW2V4ZWMgZ2l0IGNhdC1maWxlIGNvbW1pdCAkaWRdfV19IHJldHVybgotICAgIHBhcnNlY29tbWl0ICRpZCAkY29udGVudHMgMAorICAgIGlmIHtbY2F0Y2gge3NldCBjb250ZW50cyBbZG9fcmVhZGNvbW1pdCAkaWRdfV19IHJldHVybgorICAgIHBhcnNlY29tbWl0ICRpZCAkY29udGVudHMgMQogfQogCiBwcm9jIHBhcnNlY29tbWl0IHtpZCBjb250ZW50cyBsaXN0ZWR9IHsKQEAgLTE1NTMsMTMgKzE2MDEsMTQgQEAKICAgICBzZXQgaGVhZGVyIFtzdHJpbmcgcmFuZ2UgJGNvbnRlbnRzIDAgW2V4cHIgeyRoZHJlbmQgLSAxfV1dCiAgICAgc2V0IGNvbW1lbnQgW3N0cmluZyByYW5nZSAkY29udGVudHMgW2V4cHIgeyRoZHJlbmQgKyAyfV0gZW5kXQogICAgIGZvcmVhY2ggbGluZSBbc3BsaXQgJGhlYWRlciAiXG4iXSB7CisJc2V0IGxpbmUgW3NwbGl0ICRsaW5lICIgIl0KIAlzZXQgdGFnIFtsaW5kZXggJGxpbmUgMF0KIAlpZiB7JHRhZyA9PSAiYXV0aG9yIn0gewogCSAgICBzZXQgYXVkYXRlIFtsaW5kZXggJGxpbmUgZW5kLTFdCi0JICAgIHNldCBhdW5hbWUgW2xyYW5nZSAkbGluZSAxIGVuZC0yXQorCSAgICBzZXQgYXVuYW1lIFtqb2luIFtscmFuZ2UgJGxpbmUgMSBlbmQtMl0gIiAiXQogCX0gZWxzZWlmIHskdGFnID09ICJjb21taXR0ZXIifSB7CiAJICAgIHNldCBjb21kYXRlIFtsaW5kZXggJGxpbmUgZW5kLTFdCi0JICAgIHNldCBjb21uYW1lIFtscmFuZ2UgJGxpbmUgMSBlbmQtMl0KKwkgICAgc2V0IGNvbW5hbWUgW2pvaW4gW2xyYW5nZSAkbGluZSAxIGVuZC0yXSAiICJdCiAJfQogICAgIH0KICAgICBzZXQgaGVhZGxpbmUge30KQEAgLTE2MDYsOSArMTY1NSwyMyBAQAogICAgIHJldHVybiAxCiB9CiAKKyMgRXhwYW5kIGFuIGFiYnJldmlhdGVkIGNvbW1pdCBJRCB0byBhIGxpc3Qgb2YgZnVsbCA0MC1jaGFyIElEcyB0aGF0IG1hdGNoCisjIGFuZCBhcmUgcHJlc2VudCBpbiB0aGUgY3VycmVudCB2aWV3LgorIyBUaGlzIGlzIGZhaXJseSBzbG93Li4uCitwcm9jIGxvbmdpZCB7cHJlZml4fSB7CisgICAgZ2xvYmFsIHZhcmNpZCBjdXJ2aWV3CisKKyAgICBzZXQgaWRzIHt9CisgICAgZm9yZWFjaCBtYXRjaCBbYXJyYXkgbmFtZXMgdmFyY2lkICIkY3VydmlldywkcHJlZml4KiJdIHsKKwlsYXBwZW5kIGlkcyBbbGluZGV4IFtzcGxpdCAkbWF0Y2ggIiwiXSAxXQorICAgIH0KKyAgICByZXR1cm4gJGlkcworfQorCiBwcm9jIHJlYWRyZWZzIHt9IHsKICAgICBnbG9iYWwgdGFnaWRzIGlkdGFncyBoZWFkaWRzIGlkaGVhZHMgdGFnb2JqaWQKICAgICBnbG9iYWwgb3RoZXJyZWZpZHMgaWRvdGhlcnJlZnMgbWFpbmhlYWQgbWFpbmhlYWRpZAorICAgIGdsb2JhbCBzZWxlY3RoZWFkIHNlbGVjdGhlYWRpZAogCiAgICAgZm9yZWFjaCB2IHt0YWdpZHMgaWR0YWdzIGhlYWRpZHMgaWRoZWFkcyBvdGhlcnJlZmlkcyBpZG90aGVycmVmc30gewogCWNhdGNoIHt1bnNldCAkdn0KQEAgLTE2NTUsNiArMTcxOCwxMiBAQAogCSAgICBzZXQgbWFpbmhlYWQgW3N0cmluZyByYW5nZSAkdGhlaGVhZCAxMSBlbmRdCiAJfQogICAgIH0KKyAgICBzZXQgc2VsZWN0aGVhZGlkIHt9CisgICAgaWYgeyRzZWxlY3RoZWFkIG5lIHt9fSB7CisJY2F0Y2ggeworCSAgICBzZXQgc2VsZWN0aGVhZGlkIFtleGVjIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgJHNlbGVjdGhlYWRdCisJfQorICAgIH0KIH0KIAogIyBza2lwIG92ZXIgZmFrZSBjb21taXRzCkBAIC0xNjk0LDYgKzE3NjMsMjQgQEAKICAgICB1bnNldCBoZWFkaWRzKCRuYW1lKQogfQogCitwcm9jIG1ha2VfdHJhbnNpZW50IHt3aW5kb3cgb3JpZ2lufSB7CisgICAgZ2xvYmFsIGhhdmVfdGs4NQorCisgICAgIyBJbiBNYWNPUyBUayA4LjQgdHJhbnNpZW50IGFwcGVhcnMgdG8gd29yayBieSBzZXR0aW5nCisgICAgIyBvdmVycmlkZXJlZGlyZWN0LCB3aGljaCBpcyB1dHRlcmx5IHVzZWxlc3MsIHNpbmNlIHRoZQorICAgICMgd2luZG93cyBnZXQgbm8gYm9yZGVyLCBhbmQgYXJlIG5vdCBldmVuIGtlcHQgYWJvdmUKKyAgICAjIHRoZSBwYXJlbnQuCisgICAgaWYgeyEkaGF2ZV90azg1ICYmIFt0ayB3aW5kb3dpbmdzeXN0ZW1dIGVxIHthcXVhfX0gcmV0dXJuCisKKyAgICB3bSB0cmFuc2llbnQgJHdpbmRvdyAkb3JpZ2luCisKKyAgICAjIFdpbmRvd3MgZmFpbHMgdG8gcGxhY2UgdHJhbnNpZW50IHdpbmRvd3Mgbm9ybWFsbHksIHNvCisgICAgIyBzY2hlZHVsZSBhIGNhbGxiYWNrIHRvIGNlbnRlciB0aGVtIG9uIHRoZSBwYXJlbnQuCisgICAgaWYge1t0ayB3aW5kb3dpbmdzeXN0ZW1dIGVxIHt3aW4zMn19IHsKKwlhZnRlciBpZGxlIFtsaXN0IHRrOjpQbGFjZVdpbmRvdyAkd2luZG93IHdpZGdldCAkb3JpZ2luXQorICAgIH0KK30KKwogcHJvYyBzaG93X2Vycm9yIHt3IHRvcCBtc2d9IHsKICAgICBtZXNzYWdlICR3Lm0gLXRleHQgJG1zZyAtanVzdGlmeSBjZW50ZXIgLWFzcGVjdCA0MDAKICAgICBwYWNrICR3Lm0gLXNpZGUgdG9wIC1maWxsIHggLXBhZHggMjAgLXBhZHkgMjAKQEAgLTE3MDEsMjIgKzE3ODgsMjQgQEAKICAgICBwYWNrICR3Lm9rIC1zaWRlIGJvdHRvbSAtZmlsbCB4CiAgICAgYmluZCAkdG9wIDxWaXNpYmlsaXR5PiAiZ3JhYiAkdG9wOyBmb2N1cyAkdG9wIgogICAgIGJpbmQgJHRvcCA8S2V5LVJldHVybj4gImRlc3Ryb3kgJHRvcCIKKyAgICBiaW5kICR0b3AgPEtleS1zcGFjZT4gICJkZXN0cm95ICR0b3AiCisgICAgYmluZCAkdG9wIDxLZXktRXNjYXBlPiAiZGVzdHJveSAkdG9wIgogICAgIHRrd2FpdCB3aW5kb3cgJHRvcAogfQogCi1wcm9jIGVycm9yX3BvcHVwIG1zZyB7Citwcm9jIGVycm9yX3BvcHVwIHttc2cge293bmVyIC59fSB7CiAgICAgc2V0IHcgLmVycm9yCiAgICAgdG9wbGV2ZWwgJHcKLSAgICB3bSB0cmFuc2llbnQgJHcgLgorICAgIG1ha2VfdHJhbnNpZW50ICR3ICRvd25lcgogICAgIHNob3dfZXJyb3IgJHcgJHcgJG1zZwogfQogCi1wcm9jIGNvbmZpcm1fcG9wdXAgbXNnIHsKK3Byb2MgY29uZmlybV9wb3B1cCB7bXNnIHtvd25lciAufX0gewogICAgIGdsb2JhbCBjb25maXJtX29rCiAgICAgc2V0IGNvbmZpcm1fb2sgMAogICAgIHNldCB3IC5jb25maXJtCiAgICAgdG9wbGV2ZWwgJHcKLSAgICB3bSB0cmFuc2llbnQgJHcgLgorICAgIG1ha2VfdHJhbnNpZW50ICR3ICRvd25lcgogICAgIG1lc3NhZ2UgJHcubSAtdGV4dCAkbXNnIC1qdXN0aWZ5IGNlbnRlciAtYXNwZWN0IDQwMAogICAgIHBhY2sgJHcubSAtc2lkZSB0b3AgLWZpbGwgeCAtcGFkeCAyMCAtcGFkeSAyMAogICAgIGJ1dHRvbiAkdy5vayAtdGV4dCBbbWMgT0tdIC1jb21tYW5kICJzZXQgY29uZmlybV9vayAxOyBkZXN0cm95ICR3IgpAQCAtMTcyNCw2ICsxODEzLDkgQEAKICAgICBidXR0b24gJHcuY2FuY2VsIC10ZXh0IFttYyBDYW5jZWxdIC1jb21tYW5kICJkZXN0cm95ICR3IgogICAgIHBhY2sgJHcuY2FuY2VsIC1zaWRlIHJpZ2h0IC1maWxsIHgKICAgICBiaW5kICR3IDxWaXNpYmlsaXR5PiAiZ3JhYiAkdzsgZm9jdXMgJHciCisgICAgYmluZCAkdyA8S2V5LVJldHVybj4gInNldCBjb25maXJtX29rIDE7IGRlc3Ryb3kgJHciCisgICAgYmluZCAkdyA8S2V5LXNwYWNlPiAgInNldCBjb25maXJtX29rIDE7IGRlc3Ryb3kgJHciCisgICAgYmluZCAkdyA8S2V5LUVzY2FwZT4gImRlc3Ryb3kgJHciCiAgICAgdGt3YWl0IHdpbmRvdyAkdwogICAgIHJldHVybiAkY29uZmlybV9vawogfQpAQCAtMTc0MSw2ICsxODMzLDYwIEBACiAgICAgb3B0aW9uIGFkZCAqRW50cnkuZm9udCB1aWZvbnQgc3RhcnR1cEZpbGUKIH0KIAorIyBNYWtlIGEgbWVudSBhbmQgc3VibWVudXMuCisjIG0gaXMgdGhlIHdpbmRvdyBuYW1lIGZvciB0aGUgbWVudSwgaXRlbXMgaXMgdGhlIGxpc3Qgb2YgbWVudSBpdGVtcyB0byBhZGQuCisjIEVhY2ggaXRlbSBpcyBhIGxpc3Qge21jIGxhYmVsIHR5cGUgZGVzY3JpcHRpb24gb3B0aW9ucy4uLn0KKyMgbWMgaXMgaWdub3JlZDsgaXQncyBzbyB3ZSBjYW4gcHV0IG1jIHRoZXJlIHRvIGFsZXJ0IHhnZXR0ZXh0CisjIGxhYmVsIGlzIHRoZSBzdHJpbmcgdGhhdCBhcHBlYXJzIGluIHRoZSBtZW51CisjIHR5cGUgaXMgY2FzY2FkZSwgY29tbWFuZCBvciByYWRpb2J1dHRvbiAoc2hvdWxkIGFkZCBjaGVja2J1dHRvbikKKyMgZGVzY3JpcHRpb24gZGVwZW5kcyBvbiB0eXBlOyBpdCdzIHRoZSBzdWJsaXN0IGZvciBjYXNjYWRlLCB0aGUKKyMgY29tbWFuZCB0byBpbnZva2UgZm9yIGNvbW1hbmQsIG9yIHt2YXJpYWJsZSB2YWx1ZX0gZm9yIHJhZGlvYnV0dG9uCitwcm9jIG1ha2VtZW51IHttIGl0ZW1zfSB7CisgICAgbWVudSAkbQorICAgIGlmIHtbdGsgd2luZG93aW5nc3lzdGVtXSBlcSB7YXF1YX19IHsKKwlzZXQgTWV0YTEgQ21kCisgICAgfSBlbHNlIHsKKwlzZXQgTWV0YTEgQ3RybAorICAgIH0KKyAgICBmb3JlYWNoIGkgJGl0ZW1zIHsKKwlzZXQgbmFtZSBbbWMgW2xpbmRleCAkaSAxXV0KKwlzZXQgdHlwZSBbbGluZGV4ICRpIDJdCisJc2V0IHRoaW5nIFtsaW5kZXggJGkgM10KKwlzZXQgcGFyYW1zIFtsaXN0ICR0eXBlXQorCWlmIHskbmFtZSBuZSB7fX0geworCSAgICBzZXQgdSBbc3RyaW5nIGZpcnN0ICImIiBbc3RyaW5nIG1hcCB7JiYgeH0gJG5hbWVdXQorCSAgICBsYXBwZW5kIHBhcmFtcyAtbGFiZWwgW3N0cmluZyBtYXAgeyYmICYgJiB7fX0gJG5hbWVdCisJICAgIGlmIHskdSA+PSAwfSB7CisJCWxhcHBlbmQgcGFyYW1zIC11bmRlcmxpbmUgJHUKKwkgICAgfQorCX0KKwlzd2l0Y2ggLS0gJHR5cGUgeworCSAgICAiY2FzY2FkZSIgeworCQlzZXQgc3VibWVudSBbc3RyaW5nIHRvbG93ZXIgW3N0cmluZyBtYXAgeyYgIiJ9IFtsaW5kZXggJGkgMV1dXQorCQlsYXBwZW5kIHBhcmFtcyAtbWVudSAkbS4kc3VibWVudQorCSAgICB9CisJICAgICJjb21tYW5kIiB7CisJCWxhcHBlbmQgcGFyYW1zIC1jb21tYW5kICR0aGluZworCSAgICB9CisJICAgICJyYWRpb2J1dHRvbiIgeworCQlsYXBwZW5kIHBhcmFtcyAtdmFyaWFibGUgW2xpbmRleCAkdGhpbmcgMF0gXAorCQkgICAgLXZhbHVlIFtsaW5kZXggJHRoaW5nIDFdCisJICAgIH0KKwl9CisJc2V0IHRhaWwgW2xyYW5nZSAkaSA0IGVuZF0KKwlyZWdzdWIgLWFsbCB7XHlNZXRhMVx5fSAkdGFpbCAkTWV0YTEgdGFpbAorCWV2YWwgJG0gYWRkICRwYXJhbXMgJHRhaWwKKwlpZiB7JHR5cGUgZXEgImNhc2NhZGUifSB7CisJICAgIG1ha2VtZW51ICRtLiRzdWJtZW51ICR0aGluZworCX0KKyAgICB9Cit9CisKKyMgdHJhbnNsYXRlIHN0cmluZyBhbmQgcmVtb3ZlIGFtcGVyc2FuZHMKK3Byb2MgbWNhIHtzdHJ9IHsKKyAgICByZXR1cm4gW3N0cmluZyBtYXAgeyYmICYgJiB7fX0gW21jICRzdHJdXQorfQorCiBwcm9jIG1ha2V3aW5kb3cge30gewogICAgIGdsb2JhbCBjYW52IGNhbnYyIGNhbnYzIGxpbmVzcGMgY2hhcnNwYyBjdGV4dCBjZmxpc3QgY3Njcm9sbAogICAgIGdsb2JhbCB0YWJzdG9wCkBAIC0xNzU4LDMzICsxOTA0LDM0IEBACiAgICAgZ2xvYmFsIHJwcm9naXRlbSBycHJvZ2Nvb3JkIHJvd251bXNlbCBudW1jb21taXRzCiAgICAgZ2xvYmFsIGhhdmVfdGs4NQogCi0gICAgbWVudSAuYmFyCi0gICAgLmJhciBhZGQgY2FzY2FkZSAtbGFiZWwgW21jICJGaWxlIl0gLW1lbnUgLmJhci5maWxlCi0gICAgbWVudSAuYmFyLmZpbGUKLSAgICAuYmFyLmZpbGUgYWRkIGNvbW1hbmQgLWxhYmVsIFttYyAiVXBkYXRlIl0gLWNvbW1hbmQgdXBkYXRlY29tbWl0cwotICAgIC5iYXIuZmlsZSBhZGQgY29tbWFuZCAtbGFiZWwgW21jICJSZWxvYWQiXSAtY29tbWFuZCByZWxvYWRjb21taXRzCi0gICAgLmJhci5maWxlIGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIlJlcmVhZCByZWZlcmVuY2VzIl0gLWNvbW1hbmQgcmVyZWFkcmVmcwotICAgIC5iYXIuZmlsZSBhZGQgY29tbWFuZCAtbGFiZWwgW21jICJMaXN0IHJlZmVyZW5jZXMiXSAtY29tbWFuZCBzaG93cmVmcwotICAgIC5iYXIuZmlsZSBhZGQgY29tbWFuZCAtbGFiZWwgW21jICJRdWl0Il0gLWNvbW1hbmQgZG9xdWl0Ci0gICAgbWVudSAuYmFyLmVkaXQKLSAgICAuYmFyIGFkZCBjYXNjYWRlIC1sYWJlbCBbbWMgIkVkaXQiXSAtbWVudSAuYmFyLmVkaXQKLSAgICAuYmFyLmVkaXQgYWRkIGNvbW1hbmQgLWxhYmVsIFttYyAiUHJlZmVyZW5jZXMiXSAtY29tbWFuZCBkb3ByZWZzCi0KLSAgICBtZW51IC5iYXIudmlldwotICAgIC5iYXIgYWRkIGNhc2NhZGUgLWxhYmVsIFttYyAiVmlldyJdIC1tZW51IC5iYXIudmlldwotICAgIC5iYXIudmlldyBhZGQgY29tbWFuZCAtbGFiZWwgW21jICJOZXcgdmlldy4uLiJdIC1jb21tYW5kIHtuZXd2aWV3IDB9Ci0gICAgLmJhci52aWV3IGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIkVkaXQgdmlldy4uLiJdIC1jb21tYW5kIGVkaXR2aWV3IFwKLQktc3RhdGUgZGlzYWJsZWQKLSAgICAuYmFyLnZpZXcgYWRkIGNvbW1hbmQgLWxhYmVsIFttYyAiRGVsZXRlIHZpZXciXSAtY29tbWFuZCBkZWx2aWV3IC1zdGF0ZSBkaXNhYmxlZAotICAgIC5iYXIudmlldyBhZGQgc2VwYXJhdG9yCi0gICAgLmJhci52aWV3IGFkZCByYWRpb2J1dHRvbiAtbGFiZWwgW21jICJBbGwgZmlsZXMiXSAtY29tbWFuZCB7c2hvd3ZpZXcgMH0gXAotCS12YXJpYWJsZSBzZWxlY3RlZHZpZXcgLXZhbHVlIDAKLQotICAgIG1lbnUgLmJhci5oZWxwCi0gICAgLmJhciBhZGQgY2FzY2FkZSAtbGFiZWwgW21jICJIZWxwIl0gLW1lbnUgLmJhci5oZWxwCi0gICAgLmJhci5oZWxwIGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIkFib3V0IGdpdGsiXSAtY29tbWFuZCBhYm91dAotICAgIC5iYXIuaGVscCBhZGQgY29tbWFuZCAtbGFiZWwgW21jICJLZXkgYmluZGluZ3MiXSAtY29tbWFuZCBrZXlzCi0gICAgLmJhci5oZWxwIGNvbmZpZ3VyZQorICAgICMgVGhlICJtYyIgYXJndW1lbnRzIGhlcmUgYXJlIHB1cmVseSBzbyB0aGF0IHhnZXR0ZXh0CisgICAgIyBzZWVzIHRoZSBmb2xsb3dpbmcgc3RyaW5nIGFzIG5lZWRpbmcgdG8gYmUgdHJhbnNsYXRlZAorICAgIG1ha2VtZW51IC5iYXIgeworCXttYyAiRmlsZSIgY2FzY2FkZSB7CisJICAgIHttYyAiVXBkYXRlIiBjb21tYW5kIHVwZGF0ZWNvbW1pdHMgLWFjY2VsZXJhdG9yIEY1fQorCSAgICB7bWMgIlJlbG9hZCIgY29tbWFuZCByZWxvYWRjb21taXRzIC1hY2NlbGVyYXRvciBNZXRhMS1GNX0KKwkgICAge21jICJSZXJlYWQgcmVmZXJlbmNlcyIgY29tbWFuZCByZXJlYWRyZWZzfQorCSAgICB7bWMgIkxpc3QgcmVmZXJlbmNlcyIgY29tbWFuZCBzaG93cmVmcyAtYWNjZWxlcmF0b3IgRjJ9CisJICAgIHt4eCAiIiBzZXBhcmF0b3J9CisJICAgIHttYyAiU3RhcnQgZ2l0IGd1aSIgY29tbWFuZCB7ZXhlYyBnaXQgZ3VpICZ9fQorCSAgICB7eHggIiIgc2VwYXJhdG9yfQorCSAgICB7bWMgIlF1aXQiIGNvbW1hbmQgZG9xdWl0IC1hY2NlbGVyYXRvciBNZXRhMS1RfQorCX19CisJe21jICJFZGl0IiBjYXNjYWRlIHsKKwkgICAge21jICJQcmVmZXJlbmNlcyIgY29tbWFuZCBkb3ByZWZzfQorCX19CisJe21jICJWaWV3IiBjYXNjYWRlIHsKKwkgICAge21jICJOZXcgdmlldy4uLiIgY29tbWFuZCB7bmV3dmlldyAwfSAtYWNjZWxlcmF0b3IgU2hpZnQtRjR9CisJICAgIHttYyAiRWRpdCB2aWV3Li4uIiBjb21tYW5kIGVkaXR2aWV3IC1zdGF0ZSBkaXNhYmxlZCAtYWNjZWxlcmF0b3IgRjR9CisJICAgIHttYyAiRGVsZXRlIHZpZXciIGNvbW1hbmQgZGVsdmlldyAtc3RhdGUgZGlzYWJsZWR9CisJICAgIHt4eCAiIiBzZXBhcmF0b3J9CisJICAgIHttYyAiQWxsIGZpbGVzIiByYWRpb2J1dHRvbiB7c2VsZWN0ZWR2aWV3IDB9IC1jb21tYW5kIHtzaG93dmlldyAwfX0KKwl9fQorCXttYyAiSGVscCIgY2FzY2FkZSB7CisJICAgIHttYyAiQWJvdXQgZ2l0ayIgY29tbWFuZCBhYm91dH0KKwkgICAge21jICJLZXkgYmluZGluZ3MiIGNvbW1hbmQga2V5c30KKwl9fQorICAgIH0KICAgICAuIGNvbmZpZ3VyZSAtbWVudSAuYmFyCiAKICAgICAjIHRoZSBndWkgaGFzIHVwcGVyIGFuZCBsb3dlciBoYWxmLCBwYXJ0cyBvZiBhIHBhbmVkIHdpbmRvdy4KQEAgLTIwMDgsNyArMjE1NSw3IEBACiAgICAgJGN0ZXh0IHRhZyBjb25mIGZpbGVzZXAgLWZvbnQgdGV4dGZvbnRib2xkIC1iYWNrICIjYWFhYWFhIgogICAgICRjdGV4dCB0YWcgY29uZiBodW5rc2VwIC1mb3JlIFtsaW5kZXggJGRpZmZjb2xvcnMgMl0KICAgICAkY3RleHQgdGFnIGNvbmYgZDAgLWZvcmUgW2xpbmRleCAkZGlmZmNvbG9ycyAwXQotICAgICRjdGV4dCB0YWcgY29uZiBkMSAtZm9yZSBbbGluZGV4ICRkaWZmY29sb3JzIDFdCisgICAgJGN0ZXh0IHRhZyBjb25mIGRyZXN1bHQgLWZvcmUgW2xpbmRleCAkZGlmZmNvbG9ycyAxXQogICAgICRjdGV4dCB0YWcgY29uZiBtMCAtZm9yZSByZWQKICAgICAkY3RleHQgdGFnIGNvbmYgbTEgLWZvcmUgYmx1ZQogICAgICRjdGV4dCB0YWcgY29uZiBtMiAtZm9yZSBncmVlbgpAQCAtMjEzMywxMSArMjI4MCwxNiBAQAogICAgIGJpbmRrZXkgYiBwcmV2ZmlsZQogICAgIGJpbmRrZXkgZCAiJGN0ZXh0IHl2aWV3IHNjcm9sbCAxOCB1bml0cyIKICAgICBiaW5ka2V5IHUgIiRjdGV4dCB5dmlldyBzY3JvbGwgLTE4IHVuaXRzIgotICAgIGJpbmRrZXkgLyB7ZG9maW5kIDEgMX0KKyAgICBiaW5ka2V5IC8ge2ZvY3VzICRmc3RyaW5nfQogICAgIGJpbmRrZXkgPEtleS1SZXR1cm4+IHtkb2ZpbmQgMSAxfQogICAgIGJpbmRrZXkgPyB7ZG9maW5kIC0xIDF9CiAgICAgYmluZGtleSBmIG5leHRmaWxlCi0gICAgYmluZGtleSA8RjU+IHVwZGF0ZWNvbW1pdHMKKyAgICBiaW5kIC4gPEY1PiB1cGRhdGVjb21taXRzCisgICAgYmluZCAuIDwkTTFCLUY1PiByZWxvYWRjb21taXRzCisgICAgYmluZCAuIDxGMj4gc2hvd3JlZnMKKyAgICBiaW5kIC4gPFNoaWZ0LUY0PiB7bmV3dmlldyAwfQorICAgIGNhdGNoIHsgYmluZCAuIDxTaGlmdC1LZXktWEY4Nl9Td2l0Y2hfVlRfND4ge25ld3ZpZXcgMH0gfQorICAgIGJpbmQgLiA8RjQ+IGVkaXRfb3JfbmV3dmlldwogICAgIGJpbmQgLiA8JE0xQi1xPiBkb3F1aXQKICAgICBiaW5kIC4gPCRNMUItZj4ge2RvZmluZCAxIDF9CiAgICAgYmluZCAuIDwkTTFCLWc+IHtkb2ZpbmQgMSAwfQpAQCAtMjE1Miw1OSArMjMwNCw2NCBAQAogICAgIGJpbmQgLiA8RGVzdHJveT4ge3N0b3BfYmFja2VuZHN9CiAgICAgYmluZCAuIDxCdXR0b24tMT4gImNsaWNrICVXIgogICAgIGJpbmQgJGZzdHJpbmcgPEtleS1SZXR1cm4+IHtkb2ZpbmQgMSAxfQotICAgIGJpbmQgJHNoYTFlbnRyeSA8S2V5LVJldHVybj4gZ290b2NvbW1pdAorICAgIGJpbmQgJHNoYTFlbnRyeSA8S2V5LVJldHVybj4ge2dvdG9jb21taXQ7IGJyZWFrfQogICAgIGJpbmQgJHNoYTFlbnRyeSA8PFBhc3RlU2VsZWN0aW9uPj4gY2xlYXJzaGExCiAgICAgYmluZCAkY2ZsaXN0IDwxPiB7c2VsX2ZsaXN0ICVXICV4ICV5OyBicmVha30KICAgICBiaW5kICRjZmxpc3QgPEIxLU1vdGlvbj4ge3NlbF9mbGlzdCAlVyAleCAleTsgYnJlYWt9CiAgICAgYmluZCAkY2ZsaXN0IDxCdXR0b25SZWxlYXNlLTE+IHt0cmVlY2xpY2sgJVcgJXggJXl9Ci0gICAgYmluZCAkY2ZsaXN0IDxCdXR0b24tMz4ge3BvcF9mbGlzdF9tZW51ICVXICVYICVZICV4ICV5fQorICAgIGdsb2JhbCBjdHhidXQKKyAgICBiaW5kICRjZmxpc3QgJGN0eGJ1dCB7cG9wX2ZsaXN0X21lbnUgJVcgJVggJVkgJXggJXl9CisgICAgYmluZCAkY3RleHQgJGN0eGJ1dCB7cG9wX2RpZmZfbWVudSAlVyAlWCAlWSAleCAleX0KIAogICAgIHNldCBtYWluY3Vyc29yIFsuIGNnZXQgLWN1cnNvcl0KICAgICBzZXQgdGV4dGN1cnNvciBbJGN0ZXh0IGNnZXQgLWN1cnNvcl0KICAgICBzZXQgY3VydGV4dGN1cnNvciAkdGV4dGN1cnNvcgogCiAgICAgc2V0IHJvd2N0eG1lbnUgLnJvd2N0eG1lbnUKLSAgICBtZW51ICRyb3djdHhtZW51IC10ZWFyb2ZmIDAKLSAgICAkcm93Y3R4bWVudSBhZGQgY29tbWFuZCAtbGFiZWwgW21jICJEaWZmIHRoaXMgLT4gc2VsZWN0ZWQiXSBcCi0JLWNvbW1hbmQge2RpZmZ2c3NlbCAwfQotICAgICRyb3djdHhtZW51IGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIkRpZmYgc2VsZWN0ZWQgLT4gdGhpcyJdIFwKLQktY29tbWFuZCB7ZGlmZnZzc2VsIDF9Ci0gICAgJHJvd2N0eG1lbnUgYWRkIGNvbW1hbmQgLWxhYmVsIFttYyAiTWFrZSBwYXRjaCJdIC1jb21tYW5kIG1rcGF0Y2gKLSAgICAkcm93Y3R4bWVudSBhZGQgY29tbWFuZCAtbGFiZWwgW21jICJDcmVhdGUgdGFnIl0gLWNvbW1hbmQgbWt0YWcKLSAgICAkcm93Y3R4bWVudSBhZGQgY29tbWFuZCAtbGFiZWwgW21jICJXcml0ZSBjb21taXQgdG8gZmlsZSJdIC1jb21tYW5kIHdyaXRlY29tbWl0Ci0gICAgJHJvd2N0eG1lbnUgYWRkIGNvbW1hbmQgLWxhYmVsIFttYyAiQ3JlYXRlIG5ldyBicmFuY2giXSAtY29tbWFuZCBta2JyYW5jaAotICAgICRyb3djdHhtZW51IGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIkNoZXJyeS1waWNrIHRoaXMgY29tbWl0Il0gXAotCS1jb21tYW5kIGNoZXJyeXBpY2sKLSAgICAkcm93Y3R4bWVudSBhZGQgY29tbWFuZCAtbGFiZWwgW21jICJSZXNldCBIRUFEIGJyYW5jaCB0byBoZXJlIl0gXAotCS1jb21tYW5kIHJlc2V0aGVhZAorICAgIG1ha2VtZW51ICRyb3djdHhtZW51IHsKKwl7bWMgIkRpZmYgdGhpcyAtPiBzZWxlY3RlZCIgY29tbWFuZCB7ZGlmZnZzc2VsIDB9fQorCXttYyAiRGlmZiBzZWxlY3RlZCAtPiB0aGlzIiBjb21tYW5kIHtkaWZmdnNzZWwgMX19CisJe21jICJNYWtlIHBhdGNoIiBjb21tYW5kIG1rcGF0Y2h9CisJe21jICJDcmVhdGUgdGFnIiBjb21tYW5kIG1rdGFnfQorCXttYyAiV3JpdGUgY29tbWl0IHRvIGZpbGUiIGNvbW1hbmQgd3JpdGVjb21taXR9CisJe21jICJDcmVhdGUgbmV3IGJyYW5jaCIgY29tbWFuZCBta2JyYW5jaH0KKwl7bWMgIkNoZXJyeS1waWNrIHRoaXMgY29tbWl0IiBjb21tYW5kIGNoZXJyeXBpY2t9CisJe21jICJSZXNldCBIRUFEIGJyYW5jaCB0byBoZXJlIiBjb21tYW5kIHJlc2V0aGVhZH0KKyAgICB9CisgICAgJHJvd2N0eG1lbnUgY29uZmlndXJlIC10ZWFyb2ZmIDAKIAogICAgIHNldCBmYWtlcm93bWVudSAuZmFrZXJvd21lbnUKLSAgICBtZW51ICRmYWtlcm93bWVudSAtdGVhcm9mZiAwCi0gICAgJGZha2Vyb3dtZW51IGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIkRpZmYgdGhpcyAtPiBzZWxlY3RlZCJdIFwKLQktY29tbWFuZCB7ZGlmZnZzc2VsIDB9Ci0gICAgJGZha2Vyb3dtZW51IGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIkRpZmYgc2VsZWN0ZWQgLT4gdGhpcyJdIFwKLQktY29tbWFuZCB7ZGlmZnZzc2VsIDF9Ci0gICAgJGZha2Vyb3dtZW51IGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIk1ha2UgcGF0Y2giXSAtY29tbWFuZCBta3BhdGNoCi0jICAgICRmYWtlcm93bWVudSBhZGQgY29tbWFuZCAtbGFiZWwgW21jICJDb21taXQiXSAtY29tbWFuZCB7bWtjb21taXQgMH0KLSMgICAgJGZha2Vyb3dtZW51IGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIkNvbW1pdCBhbGwiXSAtY29tbWFuZCB7bWtjb21taXQgMX0KLSMgICAgJGZha2Vyb3dtZW51IGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIlJldmVydCBsb2NhbCBjaGFuZ2VzIl0gLWNvbW1hbmQgcmV2ZXJ0bG9jYWwKKyAgICBtYWtlbWVudSAkZmFrZXJvd21lbnUgeworCXttYyAiRGlmZiB0aGlzIC0+IHNlbGVjdGVkIiBjb21tYW5kIHtkaWZmdnNzZWwgMH19CisJe21jICJEaWZmIHNlbGVjdGVkIC0+IHRoaXMiIGNvbW1hbmQge2RpZmZ2c3NlbCAxfX0KKwl7bWMgIk1ha2UgcGF0Y2giIGNvbW1hbmQgbWtwYXRjaH0KKyAgICB9CisgICAgJGZha2Vyb3dtZW51IGNvbmZpZ3VyZSAtdGVhcm9mZiAwCiAKICAgICBzZXQgaGVhZGN0eG1lbnUgLmhlYWRjdHhtZW51Ci0gICAgbWVudSAkaGVhZGN0eG1lbnUgLXRlYXJvZmYgMAotICAgICRoZWFkY3R4bWVudSBhZGQgY29tbWFuZCAtbGFiZWwgW21jICJDaGVjayBvdXQgdGhpcyBicmFuY2giXSBcCi0JLWNvbW1hbmQgY29icmFuY2gKLSAgICAkaGVhZGN0eG1lbnUgYWRkIGNvbW1hbmQgLWxhYmVsIFttYyAiUmVtb3ZlIHRoaXMgYnJhbmNoIl0gXAotCS1jb21tYW5kIHJtYnJhbmNoCisgICAgbWFrZW1lbnUgJGhlYWRjdHhtZW51IHsKKwl7bWMgIkNoZWNrIG91dCB0aGlzIGJyYW5jaCIgY29tbWFuZCBjb2JyYW5jaH0KKwl7bWMgIlJlbW92ZSB0aGlzIGJyYW5jaCIgY29tbWFuZCBybWJyYW5jaH0KKyAgICB9CisgICAgJGhlYWRjdHhtZW51IGNvbmZpZ3VyZSAtdGVhcm9mZiAwCiAKICAgICBnbG9iYWwgZmxpc3RfbWVudQogICAgIHNldCBmbGlzdF9tZW51IC5mbGlzdGN0eG1lbnUKLSAgICBtZW51ICRmbGlzdF9tZW51IC10ZWFyb2ZmIDAKLSAgICAkZmxpc3RfbWVudSBhZGQgY29tbWFuZCAtbGFiZWwgW21jICJIaWdobGlnaHQgdGhpcyB0b28iXSBcCi0JLWNvbW1hbmQge2ZsaXN0X2hsIDB9Ci0gICAgJGZsaXN0X21lbnUgYWRkIGNvbW1hbmQgLWxhYmVsIFttYyAiSGlnaGxpZ2h0IHRoaXMgb25seSJdIFwKLQktY29tbWFuZCB7Zmxpc3RfaGwgMX0KLSAgICAkZmxpc3RfbWVudSBhZGQgY29tbWFuZCAtbGFiZWwgW21jICJFeHRlcm5hbCBkaWZmIl0gXAotICAgICAgICAtY29tbWFuZCB7ZXh0ZXJuYWxfZGlmZn0KKyAgICBtYWtlbWVudSAkZmxpc3RfbWVudSB7CisJe21jICJIaWdobGlnaHQgdGhpcyB0b28iIGNvbW1hbmQge2ZsaXN0X2hsIDB9fQorCXttYyAiSGlnaGxpZ2h0IHRoaXMgb25seSIgY29tbWFuZCB7Zmxpc3RfaGwgMX19CisJe21jICJFeHRlcm5hbCBkaWZmIiBjb21tYW5kIHtleHRlcm5hbF9kaWZmfX0KKwl7bWMgIkJsYW1lIHBhcmVudCBjb21taXQiIGNvbW1hbmQge2V4dGVybmFsX2JsYW1lIDF9fQorICAgIH0KKyAgICAkZmxpc3RfbWVudSBjb25maWd1cmUgLXRlYXJvZmYgMAorCisgICAgZ2xvYmFsIGRpZmZfbWVudQorICAgIHNldCBkaWZmX21lbnUgLmRpZmZjdHhtZW51CisgICAgbWFrZW1lbnUgJGRpZmZfbWVudSB7CisJe21jICJTaG93IG9yaWdpbiBvZiB0aGlzIGxpbmUiIGNvbW1hbmQgc2hvd19saW5lX3NvdXJjZX0KKwl7bWMgIlJ1biBnaXQgZ3VpIGJsYW1lIG9uIHRoaXMgbGluZSIgY29tbWFuZCB7ZXh0ZXJuYWxfYmxhbWVfZGlmZn19CisgICAgfQorICAgICRkaWZmX21lbnUgY29uZmlndXJlIC10ZWFyb2ZmIDAKIH0KIAogIyBXaW5kb3dzIHNlbmRzIGFsbCBtb3VzZSB3aGVlbCBldmVudHMgdG8gdGhlIGN1cnJlbnQgZm9jdXNlZCB3aW5kb3csIG5vdApAQCAtMjMyMCw3ICsyNDc3LDcgQEAKICAgICBnbG9iYWwgdmlld25hbWUgdmlld2ZpbGVzIHZpZXdhcmdzIHZpZXdhcmdzY21kIHZpZXdwZXJtIG5leHR2aWV3bnVtCiAgICAgZ2xvYmFsIGNtaXRtb2RlIHdyYXBjb21tZW50IGRhdGV0aW1lZm9ybWF0IGxpbWl0ZGlmZnMKICAgICBnbG9iYWwgY29sb3JzIGJnY29sb3IgZmdjb2xvciBkaWZmY29sb3JzIGRpZmZjb250ZXh0IHNlbGVjdGJnY29sb3IKLSAgICBnbG9iYWwgYXV0b3NlbGVjdCBleHRkaWZmdG9vbAorICAgIGdsb2JhbCBhdXRvc2VsZWN0IGV4dGRpZmZ0b29sIHBlcmZpbGVfYXR0cnMgbWFya2JnY29sb3IKIAogICAgIGlmIHskc3R1ZmZzYXZlZH0gcmV0dXJuCiAgICAgaWYgeyFbd2luZm8gdmlld2FibGUgLl19IHJldHVybgpAQCAtMjM0NCw5ICsyNTAxLDExIEBACiAJcHV0cyAkZiBbbGlzdCBzZXQgZmdjb2xvciAkZmdjb2xvcl0KIAlwdXRzICRmIFtsaXN0IHNldCBjb2xvcnMgJGNvbG9yc10KIAlwdXRzICRmIFtsaXN0IHNldCBkaWZmY29sb3JzICRkaWZmY29sb3JzXQorCXB1dHMgJGYgW2xpc3Qgc2V0IG1hcmtiZ2NvbG9yICRtYXJrYmdjb2xvcl0KIAlwdXRzICRmIFtsaXN0IHNldCBkaWZmY29udGV4dCAkZGlmZmNvbnRleHRdCiAJcHV0cyAkZiBbbGlzdCBzZXQgc2VsZWN0Ymdjb2xvciAkc2VsZWN0Ymdjb2xvcl0KIAlwdXRzICRmIFtsaXN0IHNldCBleHRkaWZmdG9vbCAkZXh0ZGlmZnRvb2xdCisJcHV0cyAkZiBbbGlzdCBzZXQgcGVyZmlsZV9hdHRycyAkcGVyZmlsZV9hdHRyc10KIAogCXB1dHMgJGYgInNldCBnZW9tZXRyeShtYWluKSBbd20gZ2VvbWV0cnkgLl0iCiAJcHV0cyAkZiAic2V0IGdlb21ldHJ5KHRvcHdpZHRoKSBbd2luZm8gd2lkdGggLnRmXSIKQEAgLTI0NDQsNiArMjYwMyw3IEBACiAgICAgfQogICAgIHRvcGxldmVsICR3CiAgICAgd20gdGl0bGUgJHcgW21jICJBYm91dCBnaXRrIl0KKyAgICBtYWtlX3RyYW5zaWVudCAkdyAuCiAgICAgbWVzc2FnZSAkdy5tIC10ZXh0IFttYyAiCiBHaXRrIC0gYSBjb21taXQgdmlld2VyIGZvciBnaXQKIApAQCAtMjQ3Miw2ICsyNjMyLDcgQEAKICAgICB9CiAgICAgdG9wbGV2ZWwgJHcKICAgICB3bSB0aXRsZSAkdyBbbWMgIkdpdGsga2V5IGJpbmRpbmdzIl0KKyAgICBtYWtlX3RyYW5zaWVudCAkdyAuCiAgICAgbWVzc2FnZSAkdy5tIC10ZXh0ICIKIFttYyAiR2l0ayBrZXkgYmluZGluZ3M6Il0KIApAQCAtMjUwMCw3ICsyNjYxLDcgQEAKIFttYyAiPCVzLUY+CQlGaW5kIiAkTTFUXQogW21jICI8JXMtRz4JCU1vdmUgdG8gbmV4dCBmaW5kIGhpdCIgJE0xVF0KIFttYyAiPFJldHVybj4JTW92ZSB0byBuZXh0IGZpbmQgaGl0Il0KLVttYyAiLwkJTW92ZSB0byBuZXh0IGZpbmQgaGl0LCBvciByZWRvIGZpbmQiXQorW21jICIvCQlGb2N1cyB0aGUgc2VhcmNoIGJveCJdCiBbbWMgIj8JCU1vdmUgdG8gcHJldmlvdXMgZmluZCBoaXQiXQogW21jICJmCQlTY3JvbGwgZGlmZiB2aWV3IHRvIG5leHQgZmlsZSJdCiBbbWMgIjwlcy1TPgkJU2VhcmNoIGZvciBuZXh0IGhpdCBpbiBkaWZmIHZpZXciICRNMVRdCkBAIC0yNTE0LDYgKzI2NzUsNyBAQAogCSAgICAtanVzdGlmeSBsZWZ0IC1iZyB3aGl0ZSAtYm9yZGVyIDIgLXJlbGllZiBncm9vdmUKICAgICBwYWNrICR3Lm0gLXNpZGUgdG9wIC1maWxsIGJvdGggLXBhZHggMiAtcGFkeSAyCiAgICAgYnV0dG9uICR3Lm9rIC10ZXh0IFttYyAiQ2xvc2UiXSAtY29tbWFuZCAiZGVzdHJveSAkdyIgLWRlZmF1bHQgYWN0aXZlCisgICAgYmluZCAkdyA8S2V5LUVzY2FwZT4gW2xpc3QgZGVzdHJveSAkd10KICAgICBwYWNrICR3Lm9rIC1zaWRlIGJvdHRvbQogICAgIGJpbmQgJHcgPFZpc2liaWxpdHk+ICJmb2N1cyAkdy5vayIKICAgICBiaW5kICR3IDxLZXktRXNjYXBlPiAiZGVzdHJveSAkdyIKQEAgLTI2OTQsNyArMjg1Niw3IEBACiAJICAgICR3IGluc2VydCBlOiRpeCAkZSBbaGlnaGxpZ2h0X3RhZyAkZGVdCiAJfQogICAgIH0KLSAgICAkdyBtYXJrIGdyYXZpdHkgZTokaXggbGVmdAorICAgICR3IG1hcmsgZ3Jhdml0eSBlOiRpeCByaWdodAogICAgICR3IGNvbmYgLXN0YXRlIGRpc2FibGVkCiAgICAgc2V0IHRyZWVkaXJvcGVuKCRkaXIpIDEKICAgICBzZXQgdG9wIFtsaW5kZXggW3NwbGl0IFskdyBpbmRleCBAMCwwXSAuXSAwXQpAQCAtMjczNSw5ICsyODk3LDE1IEBACiB9CiAKIHByb2Mgc2V0ZmlsZWxpc3Qge2lkfSB7Ci0gICAgZ2xvYmFsIHRyZWVmaWxlbGlzdCBjZmxpc3QKKyAgICBnbG9iYWwgdHJlZWZpbGVsaXN0IGNmbGlzdCBqdW1wX3RvX2hlcmUKIAogICAgIHRyZWV2aWV3ICRjZmxpc3QgJHRyZWVmaWxlbGlzdCgkaWQpIDAKKyAgICBpZiB7JGp1bXBfdG9faGVyZSBuZSB7fX0geworCXNldCBmIFtsaW5kZXggJGp1bXBfdG9faGVyZSAwXQorCWlmIHtbbHNlYXJjaCAtZXhhY3QgJHRyZWVmaWxlbGlzdCgkaWQpICRmXSA+PSAwfSB7CisJICAgIHNob3dmaWxlICRmCisJfQorICAgIH0KIH0KIAogaW1hZ2UgY3JlYXRlIGJpdG1hcCB0cmktcnQgLWJhY2tncm91bmQgYmxhY2sgLWZvcmVncm91bmQgYmx1ZSAtZGF0YSB7CkBAIC0yOTA2LDYgKzMwNzQsMzggQEAKICAgICB0a19wb3B1cCAkZmxpc3RfbWVudSAkWCAkWQogfQogCitwcm9jIGZpbmRfY3RleHRfZmlsZWluZm8ge2xpbmV9IHsKKyAgICBnbG9iYWwgY3RleHRfZmlsZV9uYW1lcyBjdGV4dF9maWxlX2xpbmVzCisKKyAgICBzZXQgb2sgW2JzZWFyY2ggJGN0ZXh0X2ZpbGVfbGluZXMgJGxpbmVdCisgICAgc2V0IHRsaW5lIFtsaW5kZXggJGN0ZXh0X2ZpbGVfbGluZXMgJG9rXQorCisgICAgaWYgeyRvayA+PSBbbGxlbmd0aCAkY3RleHRfZmlsZV9saW5lc10gfHwgJGxpbmUgPCAkdGxpbmV9IHsKKyAgICAgICAgcmV0dXJuIHt9CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIFtsaXN0IFtsaW5kZXggJGN0ZXh0X2ZpbGVfbmFtZXMgJG9rXSAkdGxpbmVdCisgICAgfQorfQorCitwcm9jIHBvcF9kaWZmX21lbnUge3cgWCBZIHggeX0geworICAgIGdsb2JhbCBjdGV4dCBkaWZmX21lbnUgZmxpc3RfbWVudV9maWxlCisgICAgZ2xvYmFsIGRpZmZfbWVudV90eHRwb3MgZGlmZl9tZW51X2xpbmUKKyAgICBnbG9iYWwgZGlmZl9tZW51X2ZpbGViYXNlCisKKyAgICBzZXQgZGlmZl9tZW51X3R4dHBvcyBbc3BsaXQgWyR3IGluZGV4ICJAJHgsJHkiXSAiLiJdCisgICAgc2V0IGRpZmZfbWVudV9saW5lIFtsaW5kZXggJGRpZmZfbWVudV90eHRwb3MgMF0KKyAgICAjIGRvbid0IHBvcCB1cCB0aGUgbWVudSBvbiBodW5rLXNlcGFyYXRvciBvciBmaWxlLXNlcGFyYXRvciBsaW5lcworICAgIGlmIHtbbHNlYXJjaCAtZ2xvYiBbJGN0ZXh0IHRhZyBuYW1lcyAkZGlmZl9tZW51X2xpbmUuMF0gIipzZXAiXSA+PSAwfSB7CisJcmV0dXJuCisgICAgfQorICAgIHN0b3BmaW5kaW5nCisgICAgc2V0IGYgW2ZpbmRfY3RleHRfZmlsZWluZm8gJGRpZmZfbWVudV9saW5lXQorICAgIGlmIHskZiBlcSB7fX0gcmV0dXJuCisgICAgc2V0IGZsaXN0X21lbnVfZmlsZSBbbGluZGV4ICRmIDBdCisgICAgc2V0IGRpZmZfbWVudV9maWxlYmFzZSBbbGluZGV4ICRmIDFdCisgICAgdGtfcG9wdXAgJGRpZmZfbWVudSAkWCAkWQorfQorCiBwcm9jIGZsaXN0X2hsIHtvbmx5fSB7CiAgICAgZ2xvYmFsIGZsaXN0X21lbnVfZmlsZSBmaW5kc3RyaW5nIGdkdHR5cGUKIApAQCAtMjkyNSw3ICszMTI1LDcgQEAKIAlpZiB7W3N0cmluZyBtYXRjaCAiZmF0YWw6IGJhZCByZXZpc2lvbiAqIiAkZXJyXX0gewogCSAgICByZXR1cm4gJG51bGxmaWxlCiAJfQotCWVycm9yX3BvcHVwICJFcnJvciBnZXR0aW5nIFwiJGZpbGVuYW1lXCIgZnJvbSAkd2hhdDogJGVyciIKKwllcnJvcl9wb3B1cCAiW21jICJFcnJvciBnZXR0aW5nIFwiJXNcIiBmcm9tICVzOiIgJGZpbGVuYW1lICR3aGF0XSAkZXJyIgogCXJldHVybiB7fQogICAgIH0KICAgICByZXR1cm4gJG91dHB1dApAQCAtMjk4Miw3ICszMTgyLDcgQEAKIAlzZXQgZ2l0a3RtcGRpciBbZmlsZSBqb2luIFtmaWxlIGRpcm5hbWUgJGdpdGRpcl0gXAogCQkJICAgIFtmb3JtYXQgIi5naXRrLXRtcC4lcyIgW3BpZF1dXQogCWlmIHtbY2F0Y2gge2ZpbGUgbWtkaXIgJGdpdGt0bXBkaXJ9IGVycl19IHsKLQkgICAgZXJyb3JfcG9wdXAgIkVycm9yIGNyZWF0aW5nIHRlbXBvcmFyeSBkaXJlY3RvcnkgJGdpdGt0bXBkaXI6ICRlcnIiCisJICAgIGVycm9yX3BvcHVwICJbbWMgIkVycm9yIGNyZWF0aW5nIHRlbXBvcmFyeSBkaXJlY3RvcnkgJXM6IiAkZ2l0a3RtcGRpcl0gJGVyciIKIAkgICAgdW5zZXQgZ2l0a3RtcGRpcgogCSAgICByZXR1cm4KIAl9CkBAIC0yOTkxLDcgKzMxOTEsNyBAQAogICAgIGluY3IgZGlmZm51bQogICAgIHNldCBkaWZmZGlyIFtmaWxlIGpvaW4gJGdpdGt0bXBkaXIgJGRpZmZudW1dCiAgICAgaWYge1tjYXRjaCB7ZmlsZSBta2RpciAkZGlmZmRpcn0gZXJyXX0gewotCWVycm9yX3BvcHVwICJFcnJvciBjcmVhdGluZyB0ZW1wb3JhcnkgZGlyZWN0b3J5ICRkaWZmZGlyOiAkZXJyIgorCWVycm9yX3BvcHVwICJbbWMgIkVycm9yIGNyZWF0aW5nIHRlbXBvcmFyeSBkaXJlY3RvcnkgJXM6IiAkZGlmZmRpcl0gJGVyciIKIAlyZXR1cm4KICAgICB9CiAKQEAgLTMwMDQsNyArMzIwNCw3IEBACiAJCSAgICAgW2xpc3QgJGRpZmZmcm9tZmlsZSAkZGlmZnRvZmlsZV1dCiAgICAgICAgIGlmIHtbY2F0Y2gge3NldCBmbCBbb3BlbiAkY21kIHJdfSBlcnJdfSB7CiAgICAgICAgICAgICBmaWxlIGRlbGV0ZSAtZm9yY2UgJGRpZmZkaXIKLSAgICAgICAgICAgIGVycm9yX3BvcHVwIFttYyAiJGV4dGRpZmZ0b29sOiBjb21tYW5kIGZhaWxlZDogJGVyciJdCisgICAgICAgICAgICBlcnJvcl9wb3B1cCAiJGV4dGRpZmZ0b29sOiBbbWMgImNvbW1hbmQgZmFpbGVkOiJdICRlcnIiCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBmY29uZmlndXJlICRmbCAtYmxvY2tpbmcgMAogICAgICAgICAgICAgZmlsZXJ1biAkZmwgW2xpc3QgZGVsZXRlX2F0X2VvZiAkZmwgJGRpZmZkaXJdCkBAIC0zMDEyLDEyICszMjEyLDMwMSBAQAogICAgIH0KIH0KIAorcHJvYyBmaW5kX2h1bmtfYmxhbWVzcGVjIHtiYXNlIGxpbmV9IHsKKyAgICBnbG9iYWwgY3RleHQKKworICAgICMgRmluZCBhbmQgcGFyc2UgdGhlIGh1bmsgaGVhZGVyCisgICAgc2V0IHNfbGl4IFskY3RleHQgc2VhcmNoIC1iYWNrd2FyZHMgLXJlZ2V4cCBeQEAgIiRsaW5lLjAgbGluZWVuZCIgJGJhc2UuMF0KKyAgICBpZiB7JHNfbGl4IGVxIHt9fSByZXR1cm4KKworICAgIHNldCBzX2xpbmUgWyRjdGV4dCBnZXQgJHNfbGl4ICIkc19saXggKyAxIGxpbmVzIl0KKyAgICBpZiB7IVtyZWdleHAge15AQEAqKCggLVxkKygsXGQrKT8pKykgXCsoXGQrKSgsXGQrKT8gQEB9ICRzX2xpbmUgXAorCSAgICBzX2xpbmUgb2xkX3NwZWNzIG9zeiBvc3oxIG5ld19saW5lIG5zel19IHsKKwlyZXR1cm4KKyAgICB9CisKKyAgICAjIGJhc2UgbGluZXMgZm9yIHRoZSBwYXJlbnRzCisgICAgc2V0IGJhc2VfbGluZXMgW2xpc3QgJG5ld19saW5lXQorICAgIGZvcmVhY2ggb2xkX3NwZWMgW2xyYW5nZSBbc3BsaXQgJG9sZF9zcGVjcyAiICJdIDEgZW5kXSB7CisJaWYgeyFbcmVnZXhwIC0tIHstKFxkKykoLFxkKyk/fSAkb2xkX3NwZWMgXAorCSAgICAgICAgb2xkX3NwZWMgb2xkX2xpbmUgb3N6XX0geworCSAgICByZXR1cm4KKwl9CisJbGFwcGVuZCBiYXNlX2xpbmVzICRvbGRfbGluZQorICAgIH0KKworICAgICMgTm93IHNjYW4gdGhlIGxpbmVzIHRvIGRldGVybWluZSBvZmZzZXQgd2l0aGluIHRoZSBodW5rCisgICAgc2V0IG1heF9wYXJlbnQgW2V4cHIge1tsbGVuZ3RoICRiYXNlX2xpbmVzXS0yfV0KKyAgICBzZXQgZGxpbmUgMAorICAgIHNldCBzX2xubyBbbGluZGV4IFtzcGxpdCAkc19saXggIi4iXSAwXQorCisgICAgIyBEZXRlcm1pbmUgaWYgdGhlIGxpbmUgaXMgcmVtb3ZlZAorICAgIHNldCBjaHVuayBbJGN0ZXh0IGdldCAkbGluZS4wICIkbGluZS4xICsgJG1heF9wYXJlbnQgY2hhcnMiXQorICAgIGlmIHtbc3RyaW5nIG1hdGNoIHtbLSsgXSp9ICRjaHVua119IHsKKwlzZXQgcmVtb3ZlZF9pZHggW3N0cmluZyBmaXJzdCAiLSIgJGNodW5rXQorCSMgQ2hvb3NlIGEgcGFyZW50IGluZGV4CisJaWYgeyRyZW1vdmVkX2lkeCA+PSAwfSB7CisJICAgIHNldCBwYXJlbnQgJHJlbW92ZWRfaWR4CisJfSBlbHNlIHsKKwkgICAgc2V0IHVuY2hhbmdlZF9pZHggW3N0cmluZyBmaXJzdCAiICIgJGNodW5rXQorCSAgICBpZiB7JHVuY2hhbmdlZF9pZHggPj0gMH0geworCQlzZXQgcGFyZW50ICR1bmNoYW5nZWRfaWR4CisJICAgIH0gZWxzZSB7CisJCSMgYmxhbWUgdGhlIGN1cnJlbnQgY29tbWl0CisJCXNldCBwYXJlbnQgLTEKKwkgICAgfQorCX0KKwkjIHRoZW4gY291bnQgb3RoZXIgbGluZXMgdGhhdCBiZWxvbmcgdG8gaXQKKwlmb3Ige3NldCBpICRsaW5lfSB7W2luY3IgaSAtMV0gPiAkc19sbm99IHt9IHsKKwkgICAgc2V0IGNodW5rIFskY3RleHQgZ2V0ICRpLjAgIiRpLjEgKyAkbWF4X3BhcmVudCBjaGFycyJdCisJICAgICMgRGV0ZXJtaW5lIGlmIHRoZSBsaW5lIGlzIHJlbW92ZWQKKwkgICAgc2V0IHJlbW92ZWRfaWR4IFtzdHJpbmcgZmlyc3QgIi0iICRjaHVua10KKwkgICAgaWYgeyRwYXJlbnQgPj0gMH0geworCQlzZXQgY29kZSBbc3RyaW5nIGluZGV4ICRjaHVuayAkcGFyZW50XQorCQlpZiB7JGNvZGUgZXEgIi0iIHx8ICgkcmVtb3ZlZF9pZHggPCAwICYmICRjb2RlIG5lICIrIil9IHsKKwkJICAgIGluY3IgZGxpbmUKKwkJfQorCSAgICB9IGVsc2UgeworCQlpZiB7JHJlbW92ZWRfaWR4IDwgMH0geworCQkgICAgaW5jciBkbGluZQorCQl9CisJICAgIH0KKwl9CisJaW5jciBwYXJlbnQKKyAgICB9IGVsc2UgeworCXNldCBwYXJlbnQgMAorICAgIH0KKworICAgIGluY3IgZGxpbmUgW2xpbmRleCAkYmFzZV9saW5lcyAkcGFyZW50XQorICAgIHJldHVybiBbbGlzdCAkcGFyZW50ICRkbGluZV0KK30KKworcHJvYyBleHRlcm5hbF9ibGFtZV9kaWZmIHt9IHsKKyAgICBnbG9iYWwgY3VycmVudGlkIGNtaXRtb2RlCisgICAgZ2xvYmFsIGRpZmZfbWVudV90eHRwb3MgZGlmZl9tZW51X2xpbmUKKyAgICBnbG9iYWwgZGlmZl9tZW51X2ZpbGViYXNlIGZsaXN0X21lbnVfZmlsZQorCisgICAgaWYgeyRjbWl0bW9kZSBlcSAidHJlZSJ9IHsKKwlzZXQgcGFyZW50X2lkeCAwCisJc2V0IGxpbmUgW2V4cHIgeyRkaWZmX21lbnVfbGluZSAtICRkaWZmX21lbnVfZmlsZWJhc2V9XQorICAgIH0gZWxzZSB7CisJc2V0IGhpbmZvIFtmaW5kX2h1bmtfYmxhbWVzcGVjICRkaWZmX21lbnVfZmlsZWJhc2UgJGRpZmZfbWVudV9saW5lXQorCWlmIHskaGluZm8gbmUge319IHsKKwkgICAgc2V0IHBhcmVudF9pZHggW2xpbmRleCAkaGluZm8gMF0KKwkgICAgc2V0IGxpbmUgW2xpbmRleCAkaGluZm8gMV0KKwl9IGVsc2UgeworCSAgICBzZXQgcGFyZW50X2lkeCAwCisJICAgIHNldCBsaW5lIDAKKwl9CisgICAgfQorCisgICAgZXh0ZXJuYWxfYmxhbWUgJHBhcmVudF9pZHggJGxpbmUKK30KKworIyBGaW5kIHRoZSBTSEExIElEIG9mIHRoZSBibG9iIGZvciBmaWxlICRmbmFtZSBpbiB0aGUgaW5kZXgKKyMgYXQgc3RhZ2UgMCBvciAyCitwcm9jIGluZGV4X3NoYTEge2ZuYW1lfSB7CisgICAgc2V0IGYgW29wZW4gW2xpc3QgfCBnaXQgbHMtZmlsZXMgLXMgJGZuYW1lXSByXQorICAgIHdoaWxlIHtbZ2V0cyAkZiBsaW5lXSA+PSAwfSB7CisJc2V0IGluZm8gW2xpbmRleCBbc3BsaXQgJGxpbmUgIlx0Il0gMF0KKwlzZXQgc3RhZ2UgW2xpbmRleCAkaW5mbyAyXQorCWlmIHskc3RhZ2UgZXEgIjAiIHx8ICRzdGFnZSBlcSAiMiJ9IHsKKwkgICAgY2xvc2UgJGYKKwkgICAgcmV0dXJuIFtsaW5kZXggJGluZm8gMV0KKwl9CisgICAgfQorICAgIGNsb3NlICRmCisgICAgcmV0dXJuIHt9Cit9CisKKyMgVHVybiBhbiBhYnNvbHV0ZSBwYXRoIGludG8gb25lIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeQorcHJvYyBtYWtlX3JlbGF0aXZlIHtmfSB7CisgICAgc2V0IGVsdHMgW2ZpbGUgc3BsaXQgJGZdCisgICAgc2V0IGhlcmUgW2ZpbGUgc3BsaXQgW3B3ZF1dCisgICAgc2V0IGVpIDAKKyAgICBzZXQgaGkgMAorICAgIHNldCByZXMge30KKyAgICBmb3JlYWNoIGQgJGhlcmUgeworCWlmIHskZWkgPCAkaGkgfHwgJGVpID49IFtsbGVuZ3RoICRlbHRzXSB8fCBbbGluZGV4ICRlbHRzICRlaV0gbmUgJGR9IHsKKwkgICAgbGFwcGVuZCByZXMgIi4uIgorCX0gZWxzZSB7CisJICAgIGluY3IgZWkKKwl9CisJaW5jciBoaQorICAgIH0KKyAgICBzZXQgZWx0cyBbY29uY2F0ICRyZXMgW2xyYW5nZSAkZWx0cyAkZWkgZW5kXV0KKyAgICByZXR1cm4gW2V2YWwgZmlsZSBqb2luICRlbHRzXQorfQorCitwcm9jIGV4dGVybmFsX2JsYW1lIHtwYXJlbnRfaWR4IHtsaW5lIHt9fX0geworICAgIGdsb2JhbCBmbGlzdF9tZW51X2ZpbGUgZ2l0ZGlyCisgICAgZ2xvYmFsIG51bGxpZCBudWxsaWQyCisgICAgZ2xvYmFsIHBhcmVudGxpc3Qgc2VsZWN0ZWRsaW5lIGN1cnJlbnRpZAorCisgICAgaWYgeyRwYXJlbnRfaWR4ID4gMH0geworCXNldCBiYXNlX2NvbW1pdCBbbGluZGV4ICRwYXJlbnRsaXN0ICRzZWxlY3RlZGxpbmUgW2V4cHIgeyRwYXJlbnRfaWR4LTF9XV0KKyAgICB9IGVsc2UgeworCXNldCBiYXNlX2NvbW1pdCAkY3VycmVudGlkCisgICAgfQorCisgICAgaWYgeyRiYXNlX2NvbW1pdCBlcSB7fSB8fCAkYmFzZV9jb21taXQgZXEgJG51bGxpZCB8fCAkYmFzZV9jb21taXQgZXEgJG51bGxpZDJ9IHsKKwllcnJvcl9wb3B1cCBbbWMgIk5vIHN1Y2ggY29tbWl0Il0KKwlyZXR1cm4KKyAgICB9CisKKyAgICBzZXQgY21kbGluZSBbbGlzdCBnaXQgZ3VpIGJsYW1lXQorICAgIGlmIHskbGluZSBuZSB7fSAmJiAkbGluZSA+IDF9IHsKKwlsYXBwZW5kIGNtZGxpbmUgIi0tbGluZT0kbGluZSIKKyAgICB9CisgICAgc2V0IGYgW2ZpbGUgam9pbiBbZmlsZSBkaXJuYW1lICRnaXRkaXJdICRmbGlzdF9tZW51X2ZpbGVdCisgICAgIyBVbmZvcnR1bmF0ZWx5IGl0IHNlZW1zIGdpdCBndWkgYmxhbWUgZG9lc24ndCBsaWtlCisgICAgIyBiZWluZyBnaXZlbiBhbiBhYnNvbHV0ZSBwYXRoLi4uCisgICAgc2V0IGYgW21ha2VfcmVsYXRpdmUgJGZdCisgICAgbGFwcGVuZCBjbWRsaW5lICRiYXNlX2NvbW1pdCAkZgorICAgIHB1dHMgImNtZGxpbmU9eyRjbWRsaW5lfSIKKyAgICBpZiB7W2NhdGNoIHtldmFsIGV4ZWMgJGNtZGxpbmUgJn0gZXJyXX0geworCWVycm9yX3BvcHVwICJbbWMgImdpdCBndWkgYmxhbWU6IGNvbW1hbmQgZmFpbGVkOiJdICRlcnIiCisgICAgfQorfQorCitwcm9jIHNob3dfbGluZV9zb3VyY2Uge30geworICAgIGdsb2JhbCBjbWl0bW9kZSBjdXJyZW50aWQgcGFyZW50cyBjdXJ2aWV3IGJsYW1lc3R1ZmYgYmxhbWVpbnN0CisgICAgZ2xvYmFsIGRpZmZfbWVudV9saW5lIGRpZmZfbWVudV9maWxlYmFzZSBmbGlzdF9tZW51X2ZpbGUKKyAgICBnbG9iYWwgbnVsbGlkIG51bGxpZDIgZ2l0ZGlyCisKKyAgICBzZXQgZnJvbV9pbmRleCB7fQorICAgIGlmIHskY21pdG1vZGUgZXEgInRyZWUifSB7CisJc2V0IGlkICRjdXJyZW50aWQKKwlzZXQgbGluZSBbZXhwciB7JGRpZmZfbWVudV9saW5lIC0gJGRpZmZfbWVudV9maWxlYmFzZX1dCisgICAgfSBlbHNlIHsKKwlzZXQgaCBbZmluZF9odW5rX2JsYW1lc3BlYyAkZGlmZl9tZW51X2ZpbGViYXNlICRkaWZmX21lbnVfbGluZV0KKwlpZiB7JGggZXEge319IHJldHVybgorCXNldCBwaSBbbGluZGV4ICRoIDBdCisJaWYgeyRwaSA9PSAwfSB7CisJICAgIG1hcmtfY3RleHRfbGluZSAkZGlmZl9tZW51X2xpbmUKKwkgICAgcmV0dXJuCisJfQorCWluY3IgcGkgLTEKKwlpZiB7JGN1cnJlbnRpZCBlcSAkbnVsbGlkfSB7CisJICAgIGlmIHskcGkgPiAwfSB7CisJCSMgbXVzdCBiZSBhIG1lcmdlIGluIHByb2dyZXNzLi4uCisJCWlmIHtbY2F0Y2ggeworCQkgICAgIyBnZXQgdGhlIGxhc3QgbGluZSBmcm9tIC5naXQvTUVSR0VfSEVBRAorCQkgICAgc2V0IGYgW29wZW4gW2ZpbGUgam9pbiAkZ2l0ZGlyIE1FUkdFX0hFQURdIHJdCisJCSAgICBzZXQgaWQgW2xpbmRleCBbc3BsaXQgW3JlYWQgJGZdICJcbiJdIGVuZC0xXQorCQkgICAgY2xvc2UgJGYKKwkJfSBlcnJdfSB7CisJCSAgICBlcnJvcl9wb3B1cCBbbWMgIkNvdWxkbid0IHJlYWQgbWVyZ2UgaGVhZDogJXMiICRlcnJdCisJCSAgICByZXR1cm4KKwkJfQorCSAgICB9IGVsc2VpZiB7JHBhcmVudHMoJGN1cnZpZXcsJGN1cnJlbnRpZCkgZXEgJG51bGxpZDJ9IHsKKwkJIyBuZWVkIHRvIGRvIHRoZSBibGFtZSBmcm9tIHRoZSBpbmRleAorCQlpZiB7W2NhdGNoIHsKKwkJICAgIHNldCBmcm9tX2luZGV4IFtpbmRleF9zaGExICRmbGlzdF9tZW51X2ZpbGVdCisJCX0gZXJyXX0geworCQkgICAgZXJyb3JfcG9wdXAgW21jICJFcnJvciByZWFkaW5nIGluZGV4OiAlcyIgJGVycl0KKwkJICAgIHJldHVybgorCQl9CisJICAgIH0gZWxzZSB7CisJCXNldCBpZCAkcGFyZW50cygkY3VydmlldywkY3VycmVudGlkKQorCSAgICB9CisJfSBlbHNlIHsKKwkgICAgc2V0IGlkIFtsaW5kZXggJHBhcmVudHMoJGN1cnZpZXcsJGN1cnJlbnRpZCkgJHBpXQorCX0KKwlzZXQgbGluZSBbbGluZGV4ICRoIDFdCisgICAgfQorICAgIHNldCBibGFtZWFyZ3Mge30KKyAgICBpZiB7JGZyb21faW5kZXggbmUge319IHsKKwlsYXBwZW5kIGJsYW1lYXJncyB8IGdpdCBjYXQtZmlsZSBibG9iICRmcm9tX2luZGV4CisgICAgfQorICAgIGxhcHBlbmQgYmxhbWVhcmdzIHwgZ2l0IGJsYW1lIC1wIC1MJGxpbmUsKzEKKyAgICBpZiB7JGZyb21faW5kZXggbmUge319IHsKKwlsYXBwZW5kIGJsYW1lYXJncyAtLWNvbnRlbnRzIC0KKyAgICB9IGVsc2UgeworCWxhcHBlbmQgYmxhbWVhcmdzICRpZAorICAgIH0KKyAgICBsYXBwZW5kIGJsYW1lYXJncyAtLSBbZmlsZSBqb2luIFtmaWxlIGRpcm5hbWUgJGdpdGRpcl0gJGZsaXN0X21lbnVfZmlsZV0KKyAgICBpZiB7W2NhdGNoIHsKKwlzZXQgZiBbb3BlbiAkYmxhbWVhcmdzIHJdCisgICAgfSBlcnJdfSB7CisJZXJyb3JfcG9wdXAgW21jICJDb3VsZG4ndCBzdGFydCBnaXQgYmxhbWU6ICVzIiAkZXJyXQorCXJldHVybgorICAgIH0KKyAgICBub3didXN5IGJsYW1pbmcgW21jICJTZWFyY2hpbmciXQorICAgIGZjb25maWd1cmUgJGYgLWJsb2NraW5nIDAKKyAgICBzZXQgaSBbcmVnX2luc3RhbmNlICRmXQorICAgIHNldCBibGFtZXN0dWZmKCRpKSB7fQorICAgIHNldCBibGFtZWluc3QgJGkKKyAgICBmaWxlcnVuICRmIFtsaXN0IHJlYWRfbGluZV9zb3VyY2UgJGYgJGldCit9CisKK3Byb2Mgc3RvcGJsYW1pbmcge30geworICAgIGdsb2JhbCBibGFtZWluc3QKKworICAgIGlmIHtbaW5mbyBleGlzdHMgYmxhbWVpbnN0XX0geworCXN0b3BfaW5zdGFuY2UgJGJsYW1laW5zdAorCXVuc2V0IGJsYW1laW5zdAorCW5vdGJ1c3kgYmxhbWluZworICAgIH0KK30KKworcHJvYyByZWFkX2xpbmVfc291cmNlIHtmZCBpbnN0fSB7CisgICAgZ2xvYmFsIGJsYW1lc3R1ZmYgY3VydmlldyBjb21tZmQgYmxhbWVpbnN0IG51bGxpZCBudWxsaWQyCisKKyAgICB3aGlsZSB7W2dldHMgJGZkIGxpbmVdID49IDB9IHsKKwlsYXBwZW5kIGJsYW1lc3R1ZmYoJGluc3QpICRsaW5lCisgICAgfQorICAgIGlmIHshW2VvZiAkZmRdfSB7CisJcmV0dXJuIDEKKyAgICB9CisgICAgdW5zZXQgY29tbWZkKCRpbnN0KQorICAgIHVuc2V0IGJsYW1laW5zdAorICAgIG5vdGJ1c3kgYmxhbWluZworICAgIGZjb25maWd1cmUgJGZkIC1ibG9ja2luZyAxCisgICAgaWYge1tjYXRjaCB7Y2xvc2UgJGZkfSBlcnJdfSB7CisJZXJyb3JfcG9wdXAgW21jICJFcnJvciBydW5uaW5nIGdpdCBibGFtZTogJXMiICRlcnJdCisJcmV0dXJuIDAKKyAgICB9CisKKyAgICBzZXQgZm5hbWUge30KKyAgICBzZXQgbGluZSBbc3BsaXQgW2xpbmRleCAkYmxhbWVzdHVmZigkaW5zdCkgMF0gIiAiXQorICAgIHNldCBpZCBbbGluZGV4ICRsaW5lIDBdCisgICAgc2V0IGxudW0gW2xpbmRleCAkbGluZSAxXQorICAgIGlmIHtbc3RyaW5nIGxlbmd0aCAkaWRdID09IDQwICYmIFtzdHJpbmcgaXMgeGRpZ2l0ICRpZF0gJiYKKwlbc3RyaW5nIGlzIGRpZ2l0IC1zdHJpY3QgJGxudW1dfSB7CisJIyBsb29rIGZvciAiZmlsZW5hbWUiIGxpbmUKKwlmb3JlYWNoIGwgJGJsYW1lc3R1ZmYoJGluc3QpIHsKKwkgICAgaWYge1tzdHJpbmcgbWF0Y2ggImZpbGVuYW1lICoiICRsXX0geworCQlzZXQgZm5hbWUgW3N0cmluZyByYW5nZSAkbCA5IGVuZF0KKwkJYnJlYWsKKwkgICAgfQorCX0KKyAgICB9CisgICAgaWYgeyRmbmFtZSBuZSB7fX0geworCSMgYWxsIGxvb2tzIGdvb2QsIHNlbGVjdCBpdAorCWlmIHskaWQgZXEgJG51bGxpZH0geworCSAgICAjIGJsYW1lIHVzZXMgYWxsLXplcm9lcyB0byBtZWFuIG5vdCBjb21taXR0ZWQsCisJICAgICMgd2hpY2ggd291bGQgbWVhbiBhIGNoYW5nZSBpbiB0aGUgaW5kZXgKKwkgICAgc2V0IGlkICRudWxsaWQyCisJfQorCWlmIHtbY29tbWl0aW52aWV3ICRpZCAkY3Vydmlld119IHsKKwkgICAgc2VsZWN0bGluZSBbcm93b2Zjb21taXQgJGlkXSAxIFtsaXN0ICRmbmFtZSAkbG51bV0KKwl9IGVsc2UgeworCSAgICBlcnJvcl9wb3B1cCBbbWMgIlRoYXQgbGluZSBjb21lcyBmcm9tIGNvbW1pdCAlcywgXAorCQkJICAgICB3aGljaCBpcyBub3QgaW4gdGhpcyB2aWV3IiBbc2hvcnRpZHMgJGlkXV0KKwl9CisgICAgfSBlbHNlIHsKKwlwdXRzICJvb3BzIGNvdWxkbid0IHBhcnNlIGdpdCBibGFtZSBvdXRwdXQiCisgICAgfQorICAgIHJldHVybiAwCit9CisKICMgZGVsZXRlICRkaXIgd2hlbiB3ZSBzZWUgZW9mIG9uICRmIChwcmVzdW1hYmx5IGJlY2F1c2UgdGhlIGNoaWxkIGhhcyBleGl0ZWQpCiBwcm9jIGRlbGV0ZV9hdF9lb2Yge2YgZGlyfSB7CiAgICAgd2hpbGUge1tnZXRzICRmIGxpbmVdID49IDB9IHt9CiAgICAgaWYge1tlb2YgJGZdfSB7CiAJaWYge1tjYXRjaCB7Y2xvc2UgJGZ9IGVycl19IHsKLQkgICAgZXJyb3JfcG9wdXAgIkV4dGVybmFsIGRpZmYgdmlld2VyIGZhaWxlZDogJGVyciIKKwkgICAgZXJyb3JfcG9wdXAgIlttYyAiRXh0ZXJuYWwgZGlmZiB2aWV3ZXIgZmFpbGVkOiJdICRlcnIiCiAJfQogCWZpbGUgZGVsZXRlIC1mb3JjZSAkZGlyCiAJcmV0dXJuIDAKQEAgLTMxMjIsOCArMzYxMSw4IEBACiAjIENvZGUgdG8gaW1wbGVtZW50IG11bHRpcGxlIHZpZXdzCiAKIHByb2MgbmV3dmlldyB7aXNoaWdobGlnaHR9IHsKLSAgICBnbG9iYWwgbmV4dHZpZXdudW0gbmV3dmlld25hbWUgbmV3dmlld3Blcm0gbmV3aXNoaWdobGlnaHQKLSAgICBnbG9iYWwgbmV3dmlld2FyZ3MgcmV2dHJlZWFyZ3Mgdmlld2FyZ3NjbWQgbmV3dmlld2FyZ3NjbWQgY3VydmlldworICAgIGdsb2JhbCBuZXh0dmlld251bSBuZXd2aWV3bmFtZSBuZXdpc2hpZ2hsaWdodAorICAgIGdsb2JhbCByZXZ0cmVlYXJncyB2aWV3YXJnc2NtZCBuZXd2aWV3b3B0cyBjdXJ2aWV3CiAKICAgICBzZXQgbmV3aXNoaWdobGlnaHQgJGlzaGlnaGxpZ2h0CiAgICAgc2V0IHRvcCAuZ2l0a3ZpZXcKQEAgLTMxMzIsNTggKzM2MjEsMTgzIEBACiAJcmV0dXJuCiAgICAgfQogICAgIHNldCBuZXd2aWV3bmFtZSgkbmV4dHZpZXdudW0pICJbbWMgIlZpZXciXSAkbmV4dHZpZXdudW0iCi0gICAgc2V0IG5ld3ZpZXdwZXJtKCRuZXh0dmlld251bSkgMAotICAgIHNldCBuZXd2aWV3YXJncygkbmV4dHZpZXdudW0pIFtzaGVsbGFyZ2xpc3QgJHJldnRyZWVhcmdzXQotICAgIHNldCBuZXd2aWV3YXJnc2NtZCgkbmV4dHZpZXdudW0pICR2aWV3YXJnc2NtZCgkY3VydmlldykKKyAgICBzZXQgbmV3dmlld29wdHMoJG5leHR2aWV3bnVtLHBlcm0pIDAKKyAgICBzZXQgbmV3dmlld29wdHMoJG5leHR2aWV3bnVtLGNtZCkgICR2aWV3YXJnc2NtZCgkY3VydmlldykKKyAgICBkZWNvZGVfdmlld19vcHRzICRuZXh0dmlld251bSAkcmV2dHJlZWFyZ3MKICAgICB2aWV3ZWRpdG9yICR0b3AgJG5leHR2aWV3bnVtIFttYyAiR2l0ayB2aWV3IGRlZmluaXRpb24iXQogfQogCitzZXQga25vd25fdmlld19vcHRpb25zIHsKKyAgICB7cGVybSAgICBiICAgIC4ge30gICAgICAgICAgICAgICB7bWMgIlJlbWVtYmVyIHRoaXMgdmlldyJ9fQorICAgIHthcmdzICAgIHQ1MD0gKyB7fSAgICAgICAgICAgICAgIHttYyAiQ29tbWl0cyB0byBpbmNsdWRlIChhcmd1bWVudHMgdG8gZ2l0IGxvZyk6In19CisgICAge2FsbCAgICAgYiAgICAqICItLWFsbCIgICAgICAgICAge21jICJVc2UgYWxsIHJlZnMifX0KKyAgICB7ZG9yZGVyICBiICAgIC4geyItLWRhdGUtb3JkZXIiICItZCJ9ICAgICAge21jICJTdHJpY3RseSBzb3J0IGJ5IGRhdGUifX0KKyAgICB7bHJpZ2h0ICBiICAgIC4gIi0tbGVmdC1yaWdodCIgICB7bWMgIk1hcmsgYnJhbmNoIHNpZGVzIn19CisgICAge3NpbmNlICAgdDE1ICArIHsiLS1zaW5jZT0qIiAiLS1hZnRlcj0qIn0gIHttYyAiU2luY2UgZGF0ZToifX0KKyAgICB7dW50aWwgICB0MTUgIC4geyItLXVudGlsPSoiICItLWJlZm9yZT0qIn0ge21jICJVbnRpbCBkYXRlOiJ9fQorICAgIHtsaW1pdCAgIHQxMCAgKyAiLS1tYXgtY291bnQ9KiIgIHttYyAiTWF4IGNvdW50OiJ9fQorICAgIHtza2lwICAgIHQxMCAgLiAiLS1za2lwPSoiICAgICAgIHttYyAiU2tpcDoifX0KKyAgICB7Zmlyc3QgICBiICAgIC4gIi0tZmlyc3QtcGFyZW50IiB7bWMgIkxpbWl0IHRvIGZpcnN0IHBhcmVudCJ9fQorICAgIHtjbWQgICAgIHQ1MD0gKyB7fSAgICAgICAgICAgICAgIHttYyAiQ29tbWFuZCB0byBnZW5lcmF0ZSBtb3JlIGNvbW1pdHMgdG8gaW5jbHVkZToifX0KKyAgICB9CisKK3Byb2MgZW5jb2RlX3ZpZXdfb3B0cyB7bn0geworICAgIGdsb2JhbCBrbm93bl92aWV3X29wdGlvbnMgbmV3dmlld29wdHMKKworICAgIHNldCByYXJncyBbbGlzdF0KKyAgICBmb3JlYWNoIG9wdCAka25vd25fdmlld19vcHRpb25zIHsKKwlzZXQgcGF0dGVybnMgW2xpbmRleCAkb3B0IDNdCisJaWYgeyRwYXR0ZXJucyBlcSB7fX0gY29udGludWUKKwlzZXQgcGF0dGVybiBbbGluZGV4ICRwYXR0ZXJucyAwXQorCisJc2V0IHZhbCAkbmV3dmlld29wdHMoJG4sW2xpbmRleCAkb3B0IDBdKQorCQorCWlmIHtbbGluZGV4ICRvcHQgMV0gZXEgImIifSB7CisJICAgIGlmIHskdmFsfSB7CisJCWxhcHBlbmQgcmFyZ3MgJHBhdHRlcm4KKwkgICAgfQorCX0gZWxzZSB7CisJICAgIHNldCB2YWwgW3N0cmluZyB0cmltICR2YWxdCisJICAgIGlmIHskdmFsIG5lIHt9fSB7CisJCXNldCBwZml4IFtzdHJpbmcgcmFuZ2UgJHBhdHRlcm4gMCBlbmQtMV0KKwkJbGFwcGVuZCByYXJncyAkcGZpeCR2YWwKKwkgICAgfQorCX0KKyAgICB9CisgICAgcmV0dXJuIFtjb25jYXQgJHJhcmdzIFtzaGVsbHNwbGl0ICRuZXd2aWV3b3B0cygkbixhcmdzKV1dCit9CisKK3Byb2MgZGVjb2RlX3ZpZXdfb3B0cyB7biB2aWV3X2FyZ3N9IHsKKyAgICBnbG9iYWwga25vd25fdmlld19vcHRpb25zIG5ld3ZpZXdvcHRzCisKKyAgICBmb3JlYWNoIG9wdCAka25vd25fdmlld19vcHRpb25zIHsKKwlpZiB7W2xpbmRleCAkb3B0IDFdIGVxICJiIn0geworCSAgICBzZXQgdmFsIDAKKwl9IGVsc2UgeworCSAgICBzZXQgdmFsIHt9CisJfQorCXNldCBuZXd2aWV3b3B0cygkbixbbGluZGV4ICRvcHQgMF0pICR2YWwKKyAgICB9CisgICAgc2V0IG9hcmdzIFtsaXN0XQorICAgIGZvcmVhY2ggYXJnICR2aWV3X2FyZ3MgeworCWlmIHtbcmVnZXhwIC0tIHteLShbMC05XSspJH0gJGFyZyBhcmcgY250XQorCSAgICAmJiAhW2luZm8gZXhpc3RzIGZvdW5kKGxpbWl0KV19IHsKKwkgICAgc2V0IG5ld3ZpZXdvcHRzKCRuLGxpbWl0KSAkY250CisJICAgIHNldCBmb3VuZChsaW1pdCkgMQorCSAgICBjb250aW51ZQorCX0KKwljYXRjaCB7IHVuc2V0IHZhbCB9CisJZm9yZWFjaCBvcHQgJGtub3duX3ZpZXdfb3B0aW9ucyB7CisJICAgIHNldCBpZCBbbGluZGV4ICRvcHQgMF0KKwkgICAgaWYge1tpbmZvIGV4aXN0cyBmb3VuZCgkaWQpXX0gY29udGludWUKKwkgICAgZm9yZWFjaCBwYXR0ZXJuIFtsaW5kZXggJG9wdCAzXSB7CisJCWlmIHshW3N0cmluZyBtYXRjaCAkcGF0dGVybiAkYXJnXX0gY29udGludWUKKwkJaWYge1tsaW5kZXggJG9wdCAxXSBuZSAiYiJ9IHsKKwkJICAgIHNldCBzaXplIFtzdHJpbmcgbGVuZ3RoICRwYXR0ZXJuXQorCQkgICAgc2V0IHZhbCBbc3RyaW5nIHJhbmdlICRhcmcgW2V4cHIgeyRzaXplLTF9XSBlbmRdCisJCX0gZWxzZSB7CisJCSAgICBzZXQgdmFsIDEKKwkJfQorCQlzZXQgbmV3dmlld29wdHMoJG4sJGlkKSAkdmFsCisJCXNldCBmb3VuZCgkaWQpIDEKKwkJYnJlYWsKKwkgICAgfQorCSAgICBpZiB7W2luZm8gZXhpc3RzIHZhbF19IGJyZWFrCisJfQorCWlmIHtbaW5mbyBleGlzdHMgdmFsXX0gY29udGludWUKKwlsYXBwZW5kIG9hcmdzICRhcmcKKyAgICB9CisgICAgc2V0IG5ld3ZpZXdvcHRzKCRuLGFyZ3MpIFtzaGVsbGFyZ2xpc3QgJG9hcmdzXQorfQorCitwcm9jIGVkaXRfb3JfbmV3dmlldyB7fSB7CisgICAgZ2xvYmFsIGN1cnZpZXcKKworICAgIGlmIHskY3VydmlldyA+IDB9IHsKKwllZGl0dmlldworICAgIH0gZWxzZSB7CisJbmV3dmlldyAwCisgICAgfQorfQorCiBwcm9jIGVkaXR2aWV3IHt9IHsKICAgICBnbG9iYWwgY3VydmlldwotICAgIGdsb2JhbCB2aWV3bmFtZSB2aWV3cGVybSBuZXd2aWV3bmFtZSBuZXd2aWV3cGVybQotICAgIGdsb2JhbCB2aWV3YXJncyBuZXd2aWV3YXJncyB2aWV3YXJnc2NtZCBuZXd2aWV3YXJnc2NtZAorICAgIGdsb2JhbCB2aWV3bmFtZSB2aWV3cGVybSBuZXd2aWV3bmFtZSBuZXd2aWV3b3B0cworICAgIGdsb2JhbCB2aWV3YXJncyB2aWV3YXJnc2NtZAogCiAgICAgc2V0IHRvcCAuZ2l0a3ZlZGl0LSRjdXJ2aWV3CiAgICAgaWYge1t3aW5mbyBleGlzdHMgJHRvcF19IHsKIAlyYWlzZSAkdG9wCiAJcmV0dXJuCiAgICAgfQotICAgIHNldCBuZXd2aWV3bmFtZSgkY3VydmlldykgJHZpZXduYW1lKCRjdXJ2aWV3KQotICAgIHNldCBuZXd2aWV3cGVybSgkY3VydmlldykgJHZpZXdwZXJtKCRjdXJ2aWV3KQotICAgIHNldCBuZXd2aWV3YXJncygkY3VydmlldykgW3NoZWxsYXJnbGlzdCAkdmlld2FyZ3MoJGN1cnZpZXcpXQotICAgIHNldCBuZXd2aWV3YXJnc2NtZCgkY3VydmlldykgJHZpZXdhcmdzY21kKCRjdXJ2aWV3KQorICAgIHNldCBuZXd2aWV3bmFtZSgkY3VydmlldykgICAgICAkdmlld25hbWUoJGN1cnZpZXcpCisgICAgc2V0IG5ld3ZpZXdvcHRzKCRjdXJ2aWV3LHBlcm0pICR2aWV3cGVybSgkY3VydmlldykKKyAgICBzZXQgbmV3dmlld29wdHMoJGN1cnZpZXcsY21kKSAgJHZpZXdhcmdzY21kKCRjdXJ2aWV3KQorICAgIGRlY29kZV92aWV3X29wdHMgJGN1cnZpZXcgJHZpZXdhcmdzKCRjdXJ2aWV3KQogICAgIHZpZXdlZGl0b3IgJHRvcCAkY3VydmlldyAiR2l0azogZWRpdCB2aWV3ICR2aWV3bmFtZSgkY3VydmlldykiCiB9CiAKIHByb2Mgdmlld2VkaXRvciB7dG9wIG4gdGl0bGV9IHsKLSAgICBnbG9iYWwgbmV3dmlld25hbWUgbmV3dmlld3Blcm0gdmlld2ZpbGVzIGJnY29sb3IKKyAgICBnbG9iYWwgbmV3dmlld25hbWUgbmV3dmlld29wdHMgdmlld2ZpbGVzIGJnY29sb3IKKyAgICBnbG9iYWwga25vd25fdmlld19vcHRpb25zCiAKICAgICB0b3BsZXZlbCAkdG9wCiAgICAgd20gdGl0bGUgJHRvcCAkdGl0bGUKKyAgICBtYWtlX3RyYW5zaWVudCAkdG9wIC4KKworICAgICMgVmlldyBuYW1lCisgICAgZnJhbWUgJHRvcC5uZnIKICAgICBsYWJlbCAkdG9wLm5sIC10ZXh0IFttYyAiTmFtZSJdCiAgICAgZW50cnkgJHRvcC5uYW1lIC13aWR0aCAyMCAtdGV4dHZhcmlhYmxlIG5ld3ZpZXduYW1lKCRuKQotICAgIGdyaWQgJHRvcC5ubCAkdG9wLm5hbWUgLXN0aWNreSB3IC1wYWR5IDUKLSAgICBjaGVja2J1dHRvbiAkdG9wLnBlcm0gLXRleHQgW21jICJSZW1lbWJlciB0aGlzIHZpZXciXSBcCi0JLXZhcmlhYmxlIG5ld3ZpZXdwZXJtKCRuKQotICAgIGdyaWQgJHRvcC5wZXJtIC0gLXBhZHkgNSAtc3RpY2t5IHcKLSAgICBtZXNzYWdlICR0b3AuYWwgLWFzcGVjdCAxMDAwIFwKLQktdGV4dCBbbWMgIkNvbW1pdHMgdG8gaW5jbHVkZSAoYXJndW1lbnRzIHRvIGdpdCBsb2cpOiJdCi0gICAgZ3JpZCAkdG9wLmFsIC0gLXN0aWNreSB3IC1wYWR5IDUKLSAgICBlbnRyeSAkdG9wLmFyZ3MgLXdpZHRoIDUwIC10ZXh0dmFyaWFibGUgbmV3dmlld2FyZ3MoJG4pIFwKLQktYmFja2dyb3VuZCAkYmdjb2xvcgotICAgIGdyaWQgJHRvcC5hcmdzIC0gLXN0aWNreSBldyAtcGFkeCA1CisgICAgcGFjayAkdG9wLm5mciAtaW4gJHRvcCAtZmlsbCB4IC1wYWR5IDUgLXBhZHggMworICAgIHBhY2sgJHRvcC5ubCAtaW4gJHRvcC5uZnIgLXNpZGUgbGVmdCAtcGFkeCB7MCAzMH0KKyAgICBwYWNrICR0b3AubmFtZSAtaW4gJHRvcC5uZnIgLXNpZGUgbGVmdAogCi0gICAgbWVzc2FnZSAkdG9wLmFjIC1hc3BlY3QgMTAwMCBcCi0JLXRleHQgW21jICJDb21tYW5kIHRvIGdlbmVyYXRlIG1vcmUgY29tbWl0cyB0byBpbmNsdWRlOiJdCi0gICAgZ3JpZCAkdG9wLmFjIC0gLXN0aWNreSB3IC1wYWR5IDUKLSAgICBlbnRyeSAkdG9wLmFyZ3NjbWQgLXdpZHRoIDUwIC10ZXh0dmFyaWFibGUgbmV3dmlld2FyZ3NjbWQoJG4pIFwKLQktYmFja2dyb3VuZCB3aGl0ZQotICAgIGdyaWQgJHRvcC5hcmdzY21kIC0gLXN0aWNreSBldyAtcGFkeCA1CisgICAgIyBWaWV3IG9wdGlvbnMKKyAgICBzZXQgY2ZyYW1lICR0b3AubmZyCisgICAgc2V0IGNleHBhbmQgMAorICAgIHNldCBjbnQgMAorICAgIGZvcmVhY2ggb3B0ICRrbm93bl92aWV3X29wdGlvbnMgeworCXNldCBpZCBbbGluZGV4ICRvcHQgMF0KKwlzZXQgdHlwZSBbbGluZGV4ICRvcHQgMV0KKwlzZXQgZmxhZ3MgW2xpbmRleCAkb3B0IDJdCisJc2V0IHRpdGxlIFtldmFsIFtsaW5kZXggJG9wdCA0XV0KKwlzZXQgbHhwYWQgMAogCi0gICAgbWVzc2FnZSAkdG9wLmwgLWFzcGVjdCAxMDAwIFwKKwlpZiB7JGZsYWdzIGVxICIrIiB8fCAkZmxhZ3MgZXEgIioifSB7CisJICAgIHNldCBjZnJhbWUgJHRvcC5mciRjbnQKKwkgICAgaW5jciBjbnQKKwkgICAgZnJhbWUgJGNmcmFtZQorCSAgICBwYWNrICRjZnJhbWUgLWluICR0b3AgLWZpbGwgeCAtcGFkeSAzIC1wYWR4IDMKKwkgICAgc2V0IGNleHBhbmQgW2V4cHIgeyRmbGFncyBlcSAiKiJ9XQorCX0gZWxzZSB7CisJICAgIHNldCBseHBhZCA1CisJfQorCisJaWYgeyR0eXBlIGVxICJiIn0geworCSAgICBjaGVja2J1dHRvbiAkY2ZyYW1lLmNfJGlkIC10ZXh0ICR0aXRsZSAtdmFyaWFibGUgbmV3dmlld29wdHMoJG4sJGlkKQorCSAgICBwYWNrICRjZnJhbWUuY18kaWQgLWluICRjZnJhbWUgLXNpZGUgbGVmdCBcCisJCS1wYWR4IFtsaXN0ICRseHBhZCAwXSAtZXhwYW5kICRjZXhwYW5kIC1hbmNob3IgdworCX0gZWxzZWlmIHtbcmVnZXhwIHtedChcZCspJH0gJHR5cGUgdHlwZSBzel19IHsKKwkgICAgbWVzc2FnZSAkY2ZyYW1lLmxfJGlkIC1hc3BlY3QgMTUwMCAtdGV4dCAkdGl0bGUKKwkgICAgZW50cnkgJGNmcmFtZS5lXyRpZCAtd2lkdGggJHN6IC1iYWNrZ3JvdW5kICRiZ2NvbG9yIFwKKwkJLXRleHR2YXJpYWJsZSBuZXd2aWV3b3B0cygkbiwkaWQpCisJICAgIHBhY2sgJGNmcmFtZS5sXyRpZCAtaW4gJGNmcmFtZSAtc2lkZSBsZWZ0IC1wYWR4IFtsaXN0ICRseHBhZCAwXQorCSAgICBwYWNrICRjZnJhbWUuZV8kaWQgLWluICRjZnJhbWUgLXNpZGUgbGVmdCAtZXhwYW5kIDEgLWZpbGwgeAorCX0gZWxzZWlmIHtbcmVnZXhwIHtedChcZCspPSR9ICR0eXBlIHR5cGUgc3pdfSB7CisJICAgIG1lc3NhZ2UgJGNmcmFtZS5sXyRpZCAtYXNwZWN0IDE1MDAgLXRleHQgJHRpdGxlCisJICAgIGVudHJ5ICRjZnJhbWUuZV8kaWQgLXdpZHRoICRzeiAtYmFja2dyb3VuZCAkYmdjb2xvciBcCisJCS10ZXh0dmFyaWFibGUgbmV3dmlld29wdHMoJG4sJGlkKQorCSAgICBwYWNrICRjZnJhbWUubF8kaWQgLWluICRjZnJhbWUgLXNpZGUgdG9wIC1wYWR5IFtsaXN0IDMgMF0gLWFuY2hvciB3CisJICAgIHBhY2sgJGNmcmFtZS5lXyRpZCAtaW4gJGNmcmFtZSAtc2lkZSB0b3AgLWZpbGwgeAorCX0KKyAgICB9CisKKyAgICAjIFBhdGggbGlzdAorICAgIG1lc3NhZ2UgJHRvcC5sIC1hc3BlY3QgMTUwMCBcCiAJLXRleHQgW21jICJFbnRlciBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdG8gaW5jbHVkZSwgb25lIHBlciBsaW5lOiJdCi0gICAgZ3JpZCAkdG9wLmwgLSAtc3RpY2t5IHcKLSAgICB0ZXh0ICR0b3AudCAtd2lkdGggNDAgLWhlaWdodCAxMCAtYmFja2dyb3VuZCAkYmdjb2xvciAtZm9udCB1aWZvbnQKKyAgICBwYWNrICR0b3AubCAtaW4gJHRvcCAtc2lkZSB0b3AgLXBhZHkgW2xpc3QgNyAwXSAtYW5jaG9yIHcgLXBhZHggMworICAgIHRleHQgJHRvcC50IC13aWR0aCA0MCAtaGVpZ2h0IDUgLWJhY2tncm91bmQgJGJnY29sb3IgLWZvbnQgdWlmb250CiAgICAgaWYge1tpbmZvIGV4aXN0cyB2aWV3ZmlsZXMoJG4pXX0gewogCWZvcmVhY2ggZiAkdmlld2ZpbGVzKCRuKSB7CiAJICAgICR0b3AudCBpbnNlcnQgZW5kICRmCkBAIC0zMTkyLDE0ICszODA2LDE5IEBACiAJJHRvcC50IGRlbGV0ZSB7ZW5kIC0gMWN9IGVuZAogCSR0b3AudCBtYXJrIHNldCBpbnNlcnQgMC4wCiAgICAgfQotICAgIGdyaWQgJHRvcC50IC0gLXN0aWNreSBldyAtcGFkeCA1CisgICAgcGFjayAkdG9wLnQgLWluICR0b3AgLXNpZGUgdG9wIC1wYWR5IFtsaXN0IDAgNV0gLWZpbGwgYm90aCAtZXhwYW5kIDEgLXBhZHggMwogICAgIGZyYW1lICR0b3AuYnV0cwogICAgIGJ1dHRvbiAkdG9wLmJ1dHMub2sgLXRleHQgW21jICJPSyJdIC1jb21tYW5kIFtsaXN0IG5ld3ZpZXdvayAkdG9wICRuXQorICAgIGJ1dHRvbiAkdG9wLmJ1dHMuYXBwbHkgLXRleHQgW21jICJBcHBseSAoRjUpIl0gLWNvbW1hbmQgW2xpc3QgbmV3dmlld29rICR0b3AgJG4gMV0KICAgICBidXR0b24gJHRvcC5idXRzLmNhbiAtdGV4dCBbbWMgIkNhbmNlbCJdIC1jb21tYW5kIFtsaXN0IGRlc3Ryb3kgJHRvcF0KLSAgICBncmlkICR0b3AuYnV0cy5vayAkdG9wLmJ1dHMuY2FuCisgICAgYmluZCAkdG9wIDxDb250cm9sLVJldHVybj4gW2xpc3QgbmV3dmlld29rICR0b3AgJG5dCisgICAgYmluZCAkdG9wIDxGNT4gW2xpc3QgbmV3dmlld29rICR0b3AgJG4gMV0KKyAgICBiaW5kICR0b3AgPEVzY2FwZT4gW2xpc3QgZGVzdHJveSAkdG9wXQorICAgIGdyaWQgJHRvcC5idXRzLm9rICR0b3AuYnV0cy5hcHBseSAkdG9wLmJ1dHMuY2FuCiAgICAgZ3JpZCBjb2x1bW5jb25maWd1cmUgJHRvcC5idXRzIDAgLXdlaWdodCAxIC11bmlmb3JtIGEKICAgICBncmlkIGNvbHVtbmNvbmZpZ3VyZSAkdG9wLmJ1dHMgMSAtd2VpZ2h0IDEgLXVuaWZvcm0gYQotICAgIGdyaWQgJHRvcC5idXRzIC0gLXBhZHkgMTAgLXN0aWNreSBldworICAgIGdyaWQgY29sdW1uY29uZmlndXJlICR0b3AuYnV0cyAyIC13ZWlnaHQgMSAtdW5pZm9ybSBhCisgICAgcGFjayAkdG9wLmJ1dHMgLWluICR0b3AgLXNpZGUgdG9wIC1maWxsIHgKICAgICBmb2N1cyAkdG9wLnQKIH0KIApAQCAtMzIyMCwxNyArMzgzOSwxNSBAQAogICAgICMgZG92aWV3bWVudSAkdmlld2hsbWVudSAxIFtsaXN0IGFkZHZoaWdobGlnaHQgJG5dICRvcCAkYXJncwogfQogCi1wcm9jIG5ld3ZpZXdvayB7dG9wIG59IHsKK3Byb2MgbmV3dmlld29rIHt0b3AgbiB7YXBwbHkgMH19IHsKICAgICBnbG9iYWwgbmV4dHZpZXdudW0gbmV3dmlld3Blcm0gbmV3dmlld25hbWUgbmV3aXNoaWdobGlnaHQKICAgICBnbG9iYWwgdmlld25hbWUgdmlld2ZpbGVzIHZpZXdwZXJtIHNlbGVjdGVkdmlldyBjdXJ2aWV3Ci0gICAgZ2xvYmFsIHZpZXdhcmdzIG5ld3ZpZXdhcmdzIHZpZXdhcmdzY21kIG5ld3ZpZXdhcmdzY21kIHZpZXdobG1lbnUKKyAgICBnbG9iYWwgdmlld2FyZ3Mgdmlld2FyZ3NjbWQgbmV3dmlld29wdHMgdmlld2hsbWVudQogCiAgICAgaWYge1tjYXRjaCB7Ci0Jc2V0IG5ld2FyZ3MgW3NoZWxsc3BsaXQgJG5ld3ZpZXdhcmdzKCRuKV0KKwlzZXQgbmV3YXJncyBbZW5jb2RlX3ZpZXdfb3B0cyAkbl0KICAgICB9IGVycl19IHsKLQllcnJvcl9wb3B1cCAiW21jICJFcnJvciBpbiBjb21taXQgc2VsZWN0aW9uIGFyZ3VtZW50czoiXSAkZXJyIgotCXdtIHJhaXNlICR0b3AKLQlmb2N1cyAkdG9wCisJZXJyb3JfcG9wdXAgIlttYyAiRXJyb3IgaW4gY29tbWl0IHNlbGVjdGlvbiBhcmd1bWVudHM6Il0gJGVyciIgJHRvcAogCXJldHVybgogICAgIH0KICAgICBzZXQgZmlsZXMge30KQEAgLTMyNDQsMTAgKzM4NjEsMTAgQEAKIAkjIGNyZWF0aW5nIGEgbmV3IHZpZXcKIAlpbmNyIG5leHR2aWV3bnVtCiAJc2V0IHZpZXduYW1lKCRuKSAkbmV3dmlld25hbWUoJG4pCi0Jc2V0IHZpZXdwZXJtKCRuKSAkbmV3dmlld3Blcm0oJG4pCisJc2V0IHZpZXdwZXJtKCRuKSAkbmV3dmlld29wdHMoJG4scGVybSkKIAlzZXQgdmlld2ZpbGVzKCRuKSAkZmlsZXMKIAlzZXQgdmlld2FyZ3MoJG4pICRuZXdhcmdzCi0Jc2V0IHZpZXdhcmdzY21kKCRuKSAkbmV3dmlld2FyZ3NjbWQoJG4pCisJc2V0IHZpZXdhcmdzY21kKCRuKSAkbmV3dmlld29wdHMoJG4sY21kKQogCWFkZHZpZXdtZW51ICRuCiAJaWYgeyEkbmV3aXNoaWdobGlnaHR9IHsKIAkgICAgcnVuIHNob3d2aWV3ICRuCkBAIC0zMjU2LDcgKzM4NzMsNyBAQAogCX0KICAgICB9IGVsc2UgewogCSMgZWRpdGluZyBhbiBleGlzdGluZyB2aWV3Ci0Jc2V0IHZpZXdwZXJtKCRuKSAkbmV3dmlld3Blcm0oJG4pCisJc2V0IHZpZXdwZXJtKCRuKSAkbmV3dmlld29wdHMoJG4scGVybSkKIAlpZiB7JG5ld3ZpZXduYW1lKCRuKSBuZSAkdmlld25hbWUoJG4pfSB7CiAJICAgIHNldCB2aWV3bmFtZSgkbikgJG5ld3ZpZXduYW1lKCRuKQogCSAgICBkb3ZpZXdtZW51IC5iYXIudmlldyA1IFtsaXN0IHNob3d2aWV3ICRuXSBcCkBAIC0zMjY1LDE1ICszODgyLDE2IEBACiAJCSMgZW50cnljb25mIFtsaXN0IC1sYWJlbCAkdmlld25hbWUoJG4pIC12YWx1ZSAkdmlld25hbWUoJG4pXQogCX0KIAlpZiB7JGZpbGVzIG5lICR2aWV3ZmlsZXMoJG4pIHx8ICRuZXdhcmdzIG5lICR2aWV3YXJncygkbikgfHwgXAotCQkkbmV3dmlld2FyZ3NjbWQoJG4pIG5lICR2aWV3YXJnc2NtZCgkbil9IHsKKwkJJG5ld3ZpZXdvcHRzKCRuLGNtZCkgbmUgJHZpZXdhcmdzY21kKCRuKX0gewogCSAgICBzZXQgdmlld2ZpbGVzKCRuKSAkZmlsZXMKIAkgICAgc2V0IHZpZXdhcmdzKCRuKSAkbmV3YXJncwotCSAgICBzZXQgdmlld2FyZ3NjbWQoJG4pICRuZXd2aWV3YXJnc2NtZCgkbikKKwkgICAgc2V0IHZpZXdhcmdzY21kKCRuKSAkbmV3dmlld29wdHMoJG4sY21kKQogCSAgICBpZiB7JGN1cnZpZXcgPT0gJG59IHsKIAkJcnVuIHJlbG9hZGNvbW1pdHMKIAkgICAgfQogCX0KICAgICB9CisgICAgaWYgeyRhcHBseX0gcmV0dXJuCiAgICAgY2F0Y2gge2Rlc3Ryb3kgJHRvcH0KIH0KIApAQCAtMzM0Miw4ICszOTYwLDggQEAKIAogICAgIHNldCBjdXJ2aWV3ICRuCiAgICAgc2V0IHNlbGVjdGVkdmlldyAkbgotICAgIC5iYXIudmlldyBlbnRyeWNvbmYgW21jICJFZGl0IHZpZXcuLi4iXSAtc3RhdGUgW2V4cHIgeyRuID09IDA/ICJkaXNhYmxlZCI6ICJub3JtYWwifV0KLSAgICAuYmFyLnZpZXcgZW50cnljb25mIFttYyAiRGVsZXRlIHZpZXciXSAtc3RhdGUgW2V4cHIgeyRuID09IDA/ICJkaXNhYmxlZCI6ICJub3JtYWwifV0KKyAgICAuYmFyLnZpZXcgZW50cnljb25mIFttY2EgIkVkaXQgdmlldy4uLiJdIC1zdGF0ZSBbZXhwciB7JG4gPT0gMD8gImRpc2FibGVkIjogIm5vcm1hbCJ9XQorICAgIC5iYXIudmlldyBlbnRyeWNvbmYgW21jYSAiRGVsZXRlIHZpZXciXSAtc3RhdGUgW2V4cHIgeyRuID09IDA/ICJkaXNhYmxlZCI6ICJub3JtYWwifV0KIAogICAgIHJ1biByZWZpbGxfcmVmbGlzdAogICAgIGlmIHshW2luZm8gZXhpc3RzIHZpZXdjb21wbGV0ZSgkbildfSB7CkBAIC0zNDI0LDI4ICs0MDQyLDMxIEBACiAgICAgcmV0dXJuIDAKIH0KIAotcHJvYyBib2xkZW4ge3JvdyBmb250fSB7Ci0gICAgZ2xvYmFsIGNhbnYgbGluZWh0YWcgc2VsZWN0ZWRsaW5lIGJvbGRyb3dzCitwcm9jIGJvbGRlbiB7aWQgZm9udH0geworICAgIGdsb2JhbCBjYW52IGxpbmVodGFnIGN1cnJlbnRpZCBib2xkaWRzIG5lZWRfcmVkaXNwbGF5CiAKLSAgICBsYXBwZW5kIGJvbGRyb3dzICRyb3cKLSAgICAkY2FudiBpdGVtY29uZiAkbGluZWh0YWcoJHJvdykgLWZvbnQgJGZvbnQKLSAgICBpZiB7JHJvdyA9PSAkc2VsZWN0ZWRsaW5lfSB7CisgICAgIyBuZWVkX3JlZGlzcGxheSA9IDEgbWVhbnMgdGhlIGRpc3BsYXkgaXMgc3RhbGUgYW5kIGFib3V0IHRvIGJlIHJlZHJhd24KKyAgICBpZiB7JG5lZWRfcmVkaXNwbGF5fSByZXR1cm4KKyAgICBsYXBwZW5kIGJvbGRpZHMgJGlkCisgICAgJGNhbnYgaXRlbWNvbmYgJGxpbmVodGFnKCRpZCkgLWZvbnQgJGZvbnQKKyAgICBpZiB7W2luZm8gZXhpc3RzIGN1cnJlbnRpZF0gJiYgJGlkIGVxICRjdXJyZW50aWR9IHsKIAkkY2FudiBkZWxldGUgc2Vjc2VsCi0Jc2V0IHQgW2V2YWwgJGNhbnYgY3JlYXRlIHJlY3QgWyRjYW52IGJib3ggJGxpbmVodGFnKCRyb3cpXSBcCisJc2V0IHQgW2V2YWwgJGNhbnYgY3JlYXRlIHJlY3QgWyRjYW52IGJib3ggJGxpbmVodGFnKCRpZCldIFwKIAkJICAgLW91dGxpbmUge3t9fSAtdGFncyBzZWNzZWwgXAogCQkgICAtZmlsbCBbJGNhbnYgY2dldCAtc2VsZWN0YmFja2dyb3VuZF1dCiAJJGNhbnYgbG93ZXIgJHQKICAgICB9CiB9CiAKLXByb2MgYm9sZGVuX25hbWUge3JvdyBmb250fSB7Ci0gICAgZ2xvYmFsIGNhbnYyIGxpbmVudGFnIHNlbGVjdGVkbGluZSBib2xkbmFtZXJvd3MKK3Byb2MgYm9sZGVuX25hbWUge2lkIGZvbnR9IHsKKyAgICBnbG9iYWwgY2FudjIgbGluZW50YWcgY3VycmVudGlkIGJvbGRuYW1laWRzIG5lZWRfcmVkaXNwbGF5CiAKLSAgICBsYXBwZW5kIGJvbGRuYW1lcm93cyAkcm93Ci0gICAgJGNhbnYyIGl0ZW1jb25mICRsaW5lbnRhZygkcm93KSAtZm9udCAkZm9udAotICAgIGlmIHskcm93ID09ICRzZWxlY3RlZGxpbmV9IHsKKyAgICBpZiB7JG5lZWRfcmVkaXNwbGF5fSByZXR1cm4KKyAgICBsYXBwZW5kIGJvbGRuYW1laWRzICRpZAorICAgICRjYW52MiBpdGVtY29uZiAkbGluZW50YWcoJGlkKSAtZm9udCAkZm9udAorICAgIGlmIHtbaW5mbyBleGlzdHMgY3VycmVudGlkXSAmJiAkaWQgZXEgJGN1cnJlbnRpZH0gewogCSRjYW52MiBkZWxldGUgc2Vjc2VsCi0Jc2V0IHQgW2V2YWwgJGNhbnYyIGNyZWF0ZSByZWN0IFskY2FudjIgYmJveCAkbGluZW50YWcoJHJvdyldIFwKKwlzZXQgdCBbZXZhbCAkY2FudjIgY3JlYXRlIHJlY3QgWyRjYW52MiBiYm94ICRsaW5lbnRhZygkaWQpXSBcCiAJCSAgIC1vdXRsaW5lIHt7fX0gLXRhZ3Mgc2Vjc2VsIFwKIAkJICAgLWZpbGwgWyRjYW52MiBjZ2V0IC1zZWxlY3RiYWNrZ3JvdW5kXV0KIAkkY2FudjIgbG93ZXIgJHQKQEAgLTM0NTMsMTcgKzQwNzQsMTcgQEAKIH0KIAogcHJvYyB1bmJvbGRlbiB7fSB7Ci0gICAgZ2xvYmFsIGJvbGRyb3dzCisgICAgZ2xvYmFsIGJvbGRpZHMKIAogICAgIHNldCBzdGlsbGJvbGQge30KLSAgICBmb3JlYWNoIHJvdyAkYm9sZHJvd3MgewotCWlmIHshW2lzaGlnaGxpZ2h0ZWQgW2NvbW1pdG9ucm93ICRyb3ddXX0gewotCSAgICBib2xkZW4gJHJvdyBtYWluZm9udAorICAgIGZvcmVhY2ggaWQgJGJvbGRpZHMgeworCWlmIHshW2lzaGlnaGxpZ2h0ZWQgJGlkXX0geworCSAgICBib2xkZW4gJGlkIG1haW5mb250CiAJfSBlbHNlIHsKLQkgICAgbGFwcGVuZCBzdGlsbGJvbGQgJHJvdworCSAgICBsYXBwZW5kIHN0aWxsYm9sZCAkaWQKIAl9CiAgICAgfQotICAgIHNldCBib2xkcm93cyAkc3RpbGxib2xkCisgICAgc2V0IGJvbGRpZHMgJHN0aWxsYm9sZAogfQogCiBwcm9jIGFkZHZoaWdobGlnaHQge259IHsKQEAgLTM1MDQsNyArNDEyNSw3IEBACiAJICAgIHNldCByb3cgW3Jvd29mY29tbWl0ICRpZF0KIAkgICAgaWYgeyRyMCA8PSAkcm93ICYmICRyb3cgPD0gJHIxfSB7CiAJCWlmIHshW2hpZ2hsaWdodGVkICRyb3ddfSB7Ci0JCSAgICBib2xkZW4gJHJvdyBtYWluZm9udGJvbGQKKwkJICAgIGJvbGRlbiAkaWQgbWFpbmZvbnRib2xkCiAJCX0KIAkJc2V0IHZoaWdobGlnaHRzKCRpZCkgMQogCSAgICB9CkBAIC0zNTE5LDcgKzQxNDAsNyBAQAogCiAgICAgaWYge1tjb21taXRpbnZpZXcgJGlkICRobHZpZXddfSB7CiAJaWYge1tpbmZvIGV4aXN0cyBpZGRyYXduKCRpZCldICYmICFbaXNoaWdobGlnaHRlZCAkaWRdfSB7Ci0JICAgIGJvbGRlbiAkcm93IG1haW5mb250Ym9sZAorCSAgICBib2xkZW4gJGlkIG1haW5mb250Ym9sZAogCX0KIAlzZXQgdmhpZ2hsaWdodHMoJGlkKSAxCiAgICAgfSBlbHNlIHsKQEAgLTM1MjksNyArNDE1MCw3IEBACiAKIHByb2MgaGZpbGVzX2NoYW5nZSB7fSB7CiAgICAgZ2xvYmFsIGhpZ2hsaWdodF9maWxlcyBmaWxlaGlnaGxpZ2h0IGZoaWdobGlnaHRzIGZoX3NlcmlhbAotICAgIGdsb2JhbCBoaWdobGlnaHRfcGF0aHMgZ2R0dHlwZQorICAgIGdsb2JhbCBoaWdobGlnaHRfcGF0aHMKIAogICAgIGlmIHtbaW5mbyBleGlzdHMgZmlsZWhpZ2hsaWdodF19IHsKIAkjIGRlbGV0ZSBwcmV2aW91cyBoaWdobGlnaHRzCkBAIC0zNTg3LDE1ICs0MjA4LDE1IEBACiB9CiAKIHByb2MgZmluZGNvbV9jaGFuZ2UgYXJncyB7Ci0gICAgZ2xvYmFsIG5oaWdobGlnaHRzIGJvbGRuYW1lcm93cworICAgIGdsb2JhbCBuaGlnaGxpZ2h0cyBib2xkbmFtZWlkcwogICAgIGdsb2JhbCBmaW5kcGF0dGVybiBmaW5kdHlwZSBmaW5kc3RyaW5nIGdkdHR5cGUKIAogICAgIHN0b3BmaW5kaW5nCiAgICAgIyBkZWxldGUgcHJldmlvdXMgaGlnaGxpZ2h0cywgaWYgYW55Ci0gICAgZm9yZWFjaCByb3cgJGJvbGRuYW1lcm93cyB7Ci0JYm9sZGVuX25hbWUgJHJvdyBtYWluZm9udAorICAgIGZvcmVhY2ggaWQgJGJvbGRuYW1laWRzIHsKKwlib2xkZW5fbmFtZSAkaWQgbWFpbmZvbnQKICAgICB9Ci0gICAgc2V0IGJvbGRuYW1lcm93cyB7fQorICAgIHNldCBib2xkbmFtZWlkcyB7fQogICAgIGNhdGNoIHt1bnNldCBuaGlnaGxpZ2h0c30KICAgICB1bmJvbGRlbgogICAgIHVubWFya21hdGNoZXMKQEAgLTM2ODQsOSArNDMwNSw4IEBACiAJc2V0IGZobF9saXN0IFtscmFuZ2UgJGZobF9saXN0IFtleHByIHskaSsxfV0gZW5kXQogCWlmIHskbGluZSBlcSB7fX0gY29udGludWUKIAlpZiB7IVtjb21taXRpbnZpZXcgJGxpbmUgJGN1cnZpZXddfSBjb250aW51ZQotCXNldCByb3cgW3Jvd29mY29tbWl0ICRsaW5lXQogCWlmIHtbaW5mbyBleGlzdHMgaWRkcmF3bigkbGluZSldICYmICFbaXNoaWdobGlnaHRlZCAkbGluZV19IHsKLQkgICAgYm9sZGVuICRyb3cgbWFpbmZvbnRib2xkCisJICAgIGJvbGRlbiAkbGluZSBtYWluZm9udGJvbGQKIAl9CiAJc2V0IGZoaWdobGlnaHRzKCRsaW5lKSAxCiAgICAgfQpAQCAtMzczOCw5ICs0MzU4LDkgQEAKICAgICB9CiAgICAgaWYgeyRpc2JvbGQgJiYgW2luZm8gZXhpc3RzIGlkZHJhd24oJGlkKV19IHsKIAlpZiB7IVtpc2hpZ2hsaWdodGVkICRpZF19IHsKLQkgICAgYm9sZGVuICRyb3cgbWFpbmZvbnRib2xkCisJICAgIGJvbGRlbiAkaWQgbWFpbmZvbnRib2xkCiAJICAgIGlmIHskaXNib2xkID4gMX0gewotCQlib2xkZW5fbmFtZSAkcm93IG1haW5mb250Ym9sZAorCQlib2xkZW5fbmFtZSAkaWQgbWFpbmZvbnRib2xkCiAJICAgIH0KIAl9CiAJaWYgeyRtYXJraW5nbWF0Y2hlc30gewpAQCAtMzc2MCwxNSArNDM4MCwxNSBAQAogICAgIGlmIHskZmluZGxvYyBlcSBbbWMgIkFsbCBmaWVsZHMiXSB8fCAkZmluZGxvYyBlcSBbbWMgIkhlYWRsaW5lIl19IHsKIAlzZXQgbSBbZmluZG1hdGNoZXMgJGhlYWRsaW5lXQogCWlmIHskbSBuZSB7fX0gewotCSAgICBtYXJrbWF0Y2hlcyAkY2FudiAkcm93ICRoZWFkbGluZSAkbGluZWh0YWcoJHJvdykgJG0gXAotCQlbJGNhbnYgaXRlbWNnZXQgJGxpbmVodGFnKCRyb3cpIC1mb250XSAkcm93CisJICAgIG1hcmttYXRjaGVzICRjYW52ICRyb3cgJGhlYWRsaW5lICRsaW5laHRhZygkaWQpICRtIFwKKwkJWyRjYW52IGl0ZW1jZ2V0ICRsaW5laHRhZygkaWQpIC1mb250XSAkcm93CiAJfQogICAgIH0KICAgICBpZiB7JGZpbmRsb2MgZXEgW21jICJBbGwgZmllbGRzIl0gfHwgJGZpbmRsb2MgZXEgW21jICJBdXRob3IiXX0gewogCXNldCBtIFtmaW5kbWF0Y2hlcyAkYXV0aG9yXQogCWlmIHskbSBuZSB7fX0gewotCSAgICBtYXJrbWF0Y2hlcyAkY2FudjIgJHJvdyAkYXV0aG9yICRsaW5lbnRhZygkcm93KSAkbSBcCi0JCVskY2FudjIgaXRlbWNnZXQgJGxpbmVudGFnKCRyb3cpIC1mb250XSAkcm93CisJICAgIG1hcmttYXRjaGVzICRjYW52MiAkcm93ICRhdXRob3IgJGxpbmVudGFnKCRpZCkgJG0gXAorCQlbJGNhbnYyIGl0ZW1jZ2V0ICRsaW5lbnRhZygkaWQpIC1mb250XSAkcm93CiAJfQogICAgIH0KIH0KQEAgLTM4OTMsNyArNDUxMyw3IEBACiAgICAgfQogICAgIGlmIHtbaW5mbyBleGlzdHMgaWRkcmF3bigkaWQpXX0gewogCWlmIHskaXNib2xkICYmICFbaXNoaWdobGlnaHRlZCAkaWRdfSB7Ci0JICAgIGJvbGRlbiAkcm93IG1haW5mb250Ym9sZAorCSAgICBib2xkZW4gJGlkIG1haW5mb250Ym9sZAogCX0KICAgICB9CiAgICAgc2V0IHJoaWdobGlnaHRzKCRpZCkgJGlzYm9sZApAQCAtNDA0Nyw3ICs0NjY3LDcgQEAKIHByb2MgbGF5b3V0bW9yZSB7fSB7CiAgICAgZ2xvYmFsIGNvbW1pdGlkeCB2aWV3Y29tcGxldGUgY3VydmlldwogICAgIGdsb2JhbCBudW1jb21taXRzIHBlbmRpbmdfc2VsZWN0IGN1cnZpZXcKLSAgICBnbG9iYWwgbGFzdHNjcm9sbHNldCBsYXN0c2Nyb2xscm93cyBjb21taXRpbnRlcmVzdAorICAgIGdsb2JhbCBsYXN0c2Nyb2xsc2V0IGxhc3RzY3JvbGxyb3dzCiAKICAgICBpZiB7JGxhc3RzY3JvbGxyb3dzIDwgMTAwIHx8ICR2aWV3Y29tcGxldGUoJGN1cnZpZXcpIHx8CiAJW2Nsb2NrIGNsaWNrcyAtbWlsbGlzZWNvbmRzXSAtICRsYXN0c2Nyb2xsc2V0ID4gNTAwfSB7CkBAIC00MDYxLDE0ICs0NjgxLDU2IEBACiAgICAgZHJhd3Zpc2libGUKIH0KIAotcHJvYyBkb3Nob3dsb2NhbGNoYW5nZXMge30gewotICAgIGdsb2JhbCBjdXJ2aWV3IG1haW5oZWFkaWQKKyMgV2l0aCBwYXRoIGxpbWl0aW5nLCB3ZSBtaWdodG4ndCBnZXQgdGhlIGFjdHVhbCBIRUFEIGNvbW1pdCwKKyMgc28gYXNrIGdpdCByZXYtbGlzdCB3aGF0IGlzIHRoZSBmaXJzdCBhbmNlc3RvciBvZiBIRUFEIHRoYXQKKyMgdG91Y2hlcyBhIGZpbGUgaW4gdGhlIHBhdGggbGltaXQuCitwcm9jIGdldF92aWV3bWFpbmhlYWQge3ZpZXd9IHsKKyAgICBnbG9iYWwgdmlld21haW5oZWFkaWQgdmZpbGVsaW1pdCB2aWV3aW5zdGFuY2VzIG1haW5oZWFkaWQKIAotICAgIGlmIHskbWFpbmhlYWRpZCBlcSB7fX0gcmV0dXJuCi0gICAgaWYge1tjb21taXRpbnZpZXcgJG1haW5oZWFkaWQgJGN1cnZpZXddfSB7CisgICAgY2F0Y2ggeworCXNldCByZmQgW29wZW4gW2NvbmNhdCB8IGdpdCByZXYtbGlzdCAtMSAkbWFpbmhlYWRpZCBcCisJCQkgICAtLSAkdmZpbGVsaW1pdCgkdmlldyldIHJdCisJc2V0IGogW3JlZ19pbnN0YW5jZSAkcmZkXQorCWxhcHBlbmQgdmlld2luc3RhbmNlcygkdmlldykgJGoKKwlmY29uZmlndXJlICRyZmQgLWJsb2NraW5nIDAKKwlmaWxlcnVuICRyZmQgW2xpc3QgZ2V0dmlld2hlYWQgJHJmZCAkaiAkdmlld10KKwlzZXQgdmlld21haW5oZWFkaWQoJGN1cnZpZXcpIHt9CisgICAgfQorfQorCisjIGdpdCByZXYtbGlzdCBzaG91bGQgZ2l2ZSB1cyBqdXN0IDEgbGluZSB0byB1c2UgYXMgdmlld21haW5oZWFkaWQoJHZpZXcpCitwcm9jIGdldHZpZXdoZWFkIHtmZCBpbnN0IHZpZXd9IHsKKyAgICBnbG9iYWwgdmlld21haW5oZWFkaWQgY29tbWZkIGN1cnZpZXcgdmlld2luc3RhbmNlcyBzaG93bG9jYWxjaGFuZ2VzCisKKyAgICBzZXQgaWQge30KKyAgICBpZiB7W2dldHMgJGZkIGxpbmVdIDwgMH0geworCWlmIHshW2VvZiAkZmRdfSB7CisJICAgIHJldHVybiAxCisJfQorICAgIH0gZWxzZWlmIHtbc3RyaW5nIGxlbmd0aCAkbGluZV0gPT0gNDAgJiYgW3N0cmluZyBpcyB4ZGlnaXQgJGxpbmVdfSB7CisJc2V0IGlkICRsaW5lCisgICAgfQorICAgIHNldCB2aWV3bWFpbmhlYWRpZCgkdmlldykgJGlkCisgICAgY2xvc2UgJGZkCisgICAgdW5zZXQgY29tbWZkKCRpbnN0KQorICAgIHNldCBpIFtsc2VhcmNoIC1leGFjdCAkdmlld2luc3RhbmNlcygkdmlldykgJGluc3RdCisgICAgaWYgeyRpID49IDB9IHsKKwlzZXQgdmlld2luc3RhbmNlcygkdmlldykgW2xyZXBsYWNlICR2aWV3aW5zdGFuY2VzKCR2aWV3KSAkaSAkaV0KKyAgICB9CisgICAgaWYgeyRzaG93bG9jYWxjaGFuZ2VzICYmICRpZCBuZSB7fSAmJiAkdmlldyA9PSAkY3Vydmlld30geworCWRvc2hvd2xvY2FsY2hhbmdlcworICAgIH0KKyAgICByZXR1cm4gMAorfQorCitwcm9jIGRvc2hvd2xvY2FsY2hhbmdlcyB7fSB7CisgICAgZ2xvYmFsIGN1cnZpZXcgdmlld21haW5oZWFkaWQKKworICAgIGlmIHskdmlld21haW5oZWFkaWQoJGN1cnZpZXcpIGVxIHt9fSByZXR1cm4KKyAgICBpZiB7W2NvbW1pdGludmlldyAkdmlld21haW5oZWFkaWQoJGN1cnZpZXcpICRjdXJ2aWV3XX0gewogCWRvZGlmZmluZGV4CiAgICAgfSBlbHNlIHsKLQlsYXBwZW5kIGNvbW1pdGludGVyZXN0KCRtYWluaGVhZGlkKSB7ZG9kaWZmaW5kZXh9CisJaW50ZXJlc3RlZGluICR2aWV3bWFpbmhlYWRpZCgkY3VydmlldykgZG9kaWZmaW5kZXgKICAgICB9CiB9CiAKQEAgLTQwODYsMTkgKzQ3NDgsMjQgQEAKIAogIyBzcGF3biBvZmYgYSBwcm9jZXNzIHRvIGRvIGdpdCBkaWZmLWluZGV4IC0tY2FjaGVkIEhFQUQKIHByb2MgZG9kaWZmaW5kZXgge30gewotICAgIGdsb2JhbCBsc2VyaWFsIHNob3dsb2NhbGNoYW5nZXMKKyAgICBnbG9iYWwgbHNlcmlhbCBzaG93bG9jYWxjaGFuZ2VzIHZmaWxlbGltaXQgY3VydmlldwogICAgIGdsb2JhbCBpc3dvcmt0cmVlCiAKICAgICBpZiB7ISRzaG93bG9jYWxjaGFuZ2VzIHx8ICEkaXN3b3JrdHJlZX0gcmV0dXJuCiAgICAgaW5jciBsc2VyaWFsCi0gICAgc2V0IGZkIFtvcGVuICJ8Z2l0IGRpZmYtaW5kZXggLS1jYWNoZWQgSEVBRCIgcl0KKyAgICBzZXQgY21kICJ8Z2l0IGRpZmYtaW5kZXggLS1jYWNoZWQgSEVBRCIKKyAgICBpZiB7JHZmaWxlbGltaXQoJGN1cnZpZXcpIG5lIHt9fSB7CisJc2V0IGNtZCBbY29uY2F0ICRjbWQgLS0gJHZmaWxlbGltaXQoJGN1cnZpZXcpXQorICAgIH0KKyAgICBzZXQgZmQgW29wZW4gJGNtZCByXQogICAgIGZjb25maWd1cmUgJGZkIC1ibG9ja2luZyAwCiAgICAgc2V0IGkgW3JlZ19pbnN0YW5jZSAkZmRdCiAgICAgZmlsZXJ1biAkZmQgW2xpc3QgcmVhZGRpZmZpbmRleCAkZmQgJGxzZXJpYWwgJGldCiB9CiAKIHByb2MgcmVhZGRpZmZpbmRleCB7ZmQgc2VyaWFsIGluc3R9IHsKLSAgICBnbG9iYWwgbWFpbmhlYWRpZCBudWxsaWQgbnVsbGlkMiBjdXJ2aWV3IGNvbW1pdGluZm8gY29tbWl0ZGF0YSBsc2VyaWFsCisgICAgZ2xvYmFsIHZpZXdtYWluaGVhZGlkIG51bGxpZCBudWxsaWQyIGN1cnZpZXcgY29tbWl0aW5mbyBjb21taXRkYXRhIGxzZXJpYWwKKyAgICBnbG9iYWwgdmZpbGVsaW1pdAogCiAgICAgc2V0IGlzZGlmZiAxCiAgICAgaWYge1tnZXRzICRmZCBsaW5lXSA8IDB9IHsKQEAgLTQxMTUsNyArNDc4MiwxMSBAQAogICAgIH0KIAogICAgICMgbm93IHNlZSBpZiB0aGVyZSBhcmUgYW55IGxvY2FsIGNoYW5nZXMgbm90IGNoZWNrZWQgaW4gdG8gdGhlIGluZGV4Ci0gICAgc2V0IGZkIFtvcGVuICJ8Z2l0IGRpZmYtZmlsZXMiIHJdCisgICAgc2V0IGNtZCAifGdpdCBkaWZmLWZpbGVzIgorICAgIGlmIHskdmZpbGVsaW1pdCgkY3VydmlldykgbmUge319IHsKKwlzZXQgY21kIFtjb25jYXQgJGNtZCAtLSAkdmZpbGVsaW1pdCgkY3VydmlldyldCisgICAgfQorICAgIHNldCBmZCBbb3BlbiAkY21kIHJdCiAgICAgZmNvbmZpZ3VyZSAkZmQgLWJsb2NraW5nIDAKICAgICBzZXQgaSBbcmVnX2luc3RhbmNlICRmZF0KICAgICBmaWxlcnVuICRmZCBbbGlzdCByZWFkZGlmZmZpbGVzICRmZCAkc2VyaWFsICRpXQpAQCAtNDEyOCwxNSArNDc5OSwxOCBAQAogCWlmIHtbY29tbWl0aW52aWV3ICRudWxsaWQgJGN1cnZpZXddfSB7CiAJICAgIHJlbW92ZWZha2Vyb3cgJG51bGxpZAogCX0KLQlpbnNlcnRmYWtlcm93ICRudWxsaWQyICRtYWluaGVhZGlkCisJaW5zZXJ0ZmFrZXJvdyAkbnVsbGlkMiAkdmlld21haW5oZWFkaWQoJGN1cnZpZXcpCiAgICAgfSBlbHNlaWYgeyEkaXNkaWZmICYmIFtjb21taXRpbnZpZXcgJG51bGxpZDIgJGN1cnZpZXddfSB7CisJaWYge1tjb21taXRpbnZpZXcgJG51bGxpZCAkY3Vydmlld119IHsKKwkgICAgcmVtb3ZlZmFrZXJvdyAkbnVsbGlkCisJfQogCXJlbW92ZWZha2Vyb3cgJG51bGxpZDIKICAgICB9CiAgICAgcmV0dXJuIDAKIH0KIAogcHJvYyByZWFkZGlmZmZpbGVzIHtmZCBzZXJpYWwgaW5zdH0gewotICAgIGdsb2JhbCBtYWluaGVhZGlkIG51bGxpZCBudWxsaWQyIGN1cnZpZXcKKyAgICBnbG9iYWwgdmlld21haW5oZWFkaWQgbnVsbGlkIG51bGxpZDIgY3VydmlldwogICAgIGdsb2JhbCBjb21taXRpbmZvIGNvbW1pdGRhdGEgbHNlcmlhbAogCiAgICAgc2V0IGlzZGlmZiAxCkBAIC00MTYxLDcgKzQ4MzUsNyBAQAogCWlmIHtbY29tbWl0aW52aWV3ICRudWxsaWQyICRjdXJ2aWV3XX0gewogCSAgICBzZXQgcCAkbnVsbGlkMgogCX0gZWxzZSB7Ci0JICAgIHNldCBwICRtYWluaGVhZGlkCisJICAgIHNldCBwICR2aWV3bWFpbmhlYWRpZCgkY3VydmlldykKIAl9CiAJaW5zZXJ0ZmFrZXJvdyAkbnVsbGlkICRwCiAgICAgfSBlbHNlaWYgeyEkaXNkaWZmICYmIFtjb21taXRpbnZpZXcgJG51bGxpZCAkY3Vydmlld119IHsKQEAgLTQ4ODYsOCArNTU2MCw4IEBACiAgICAgZ2xvYmFsIGNtaXRsaXN0ZWQgY29tbWl0aW5mbyByb3dpZGxpc3QgcGFyZW50bGlzdAogICAgIGdsb2JhbCByb3d0ZXh0eCBpZHBvcyBpZHRhZ3MgaWRoZWFkcyBpZG90aGVycmVmcwogICAgIGdsb2JhbCBsaW5laHRhZyBsaW5lbnRhZyBsaW5lZHRhZyBzZWxlY3RlZGxpbmUKLSAgICBnbG9iYWwgY2FudnhtYXggYm9sZHJvd3MgYm9sZG5hbWVyb3dzIGZnY29sb3IKLSAgICBnbG9iYWwgbWFpbmhlYWRpZCBudWxsaWQgbnVsbGlkMiBjaXJjbGVpdGVtIGNpcmNsZWNvbG9ycworICAgIGdsb2JhbCBjYW52eG1heCBib2xkaWRzIGJvbGRuYW1laWRzIGZnY29sb3IKKyAgICBnbG9iYWwgbWFpbmhlYWRpZCBudWxsaWQgbnVsbGlkMiBjaXJjbGVpdGVtIGNpcmNsZWNvbG9ycyBjdHhidXQKIAogICAgICMgbGlzdGVkIGlzIDAgZm9yIGJvdW5kYXJ5LCAxIGZvciBub3JtYWwsIDIgZm9yIG5lZ2F0aXZlLCAzIGZvciBsZWZ0LCA0IGZvciByaWdodAogICAgIHNldCBsaXN0ZWQgJGNtaXRsaXN0ZWQoJGN1cnZpZXcsJGlkKQpAQCAtNDk1MSwyMiArNTYyNSwyMiBAQAogICAgIHNldCBuZm9udCBtYWluZm9udAogICAgIHNldCBpc2JvbGQgW2lzaGlnaGxpZ2h0ZWQgJGlkXQogICAgIGlmIHskaXNib2xkID4gMH0gewotCWxhcHBlbmQgYm9sZHJvd3MgJHJvdworCWxhcHBlbmQgYm9sZGlkcyAkaWQKIAlzZXQgZm9udCBtYWluZm9udGJvbGQKIAlpZiB7JGlzYm9sZCA+IDF9IHsKLQkgICAgbGFwcGVuZCBib2xkbmFtZXJvd3MgJHJvdworCSAgICBsYXBwZW5kIGJvbGRuYW1laWRzICRpZAogCSAgICBzZXQgbmZvbnQgbWFpbmZvbnRib2xkCiAJfQogICAgIH0KLSAgICBzZXQgbGluZWh0YWcoJHJvdykgWyRjYW52IGNyZWF0ZSB0ZXh0ICR4dCAkeSAtYW5jaG9yIHcgLWZpbGwgJGZnY29sb3IgXAotCQkJICAgIC10ZXh0ICRoZWFkbGluZSAtZm9udCAkZm9udCAtdGFncyB0ZXh0XQotICAgICRjYW52IGJpbmQgJGxpbmVodGFnKCRyb3cpIDxCdXR0b24tMz4gInJvd21lbnUgJVggJVkgJGlkIgotICAgIHNldCBsaW5lbnRhZygkcm93KSBbJGNhbnYyIGNyZWF0ZSB0ZXh0IDMgJHkgLWFuY2hvciB3IC1maWxsICRmZ2NvbG9yIFwKLQkJCSAgICAtdGV4dCAkbmFtZSAtZm9udCAkbmZvbnQgLXRhZ3MgdGV4dF0KLSAgICBzZXQgbGluZWR0YWcoJHJvdykgWyRjYW52MyBjcmVhdGUgdGV4dCAzICR5IC1hbmNob3IgdyAtZmlsbCAkZmdjb2xvciBcCi0JCQkgICAgLXRleHQgJGRhdGUgLWZvbnQgbWFpbmZvbnQgLXRhZ3MgdGV4dF0KKyAgICBzZXQgbGluZWh0YWcoJGlkKSBbJGNhbnYgY3JlYXRlIHRleHQgJHh0ICR5IC1hbmNob3IgdyAtZmlsbCAkZmdjb2xvciBcCisJCQkgICAtdGV4dCAkaGVhZGxpbmUgLWZvbnQgJGZvbnQgLXRhZ3MgdGV4dF0KKyAgICAkY2FudiBiaW5kICRsaW5laHRhZygkaWQpICRjdHhidXQgInJvd21lbnUgJVggJVkgJGlkIgorICAgIHNldCBsaW5lbnRhZygkaWQpIFskY2FudjIgY3JlYXRlIHRleHQgMyAkeSAtYW5jaG9yIHcgLWZpbGwgJGZnY29sb3IgXAorCQkJICAgLXRleHQgJG5hbWUgLWZvbnQgJG5mb250IC10YWdzIHRleHRdCisgICAgc2V0IGxpbmVkdGFnKCRpZCkgWyRjYW52MyBjcmVhdGUgdGV4dCAzICR5IC1hbmNob3IgdyAtZmlsbCAkZmdjb2xvciBcCisJCQkgICAtdGV4dCAkZGF0ZSAtZm9udCBtYWluZm9udCAtdGFncyB0ZXh0XQogICAgIGlmIHskc2VsZWN0ZWRsaW5lID09ICRyb3d9IHsKLQltYWtlX3NlY3NlbCAkcm93CisJbWFrZV9zZWNzZWwgJGlkCiAgICAgfQogICAgIHNldCB4ciBbZXhwciB7JHh0ICsgW2ZvbnQgbWVhc3VyZSAkZm9udCAkaGVhZGxpbmVdfV0KICAgICBpZiB7JHhyID4gJGNhbnZ4bWF4fSB7CkBAIC01MTc0LDcgKzU4NDgsNyBAQAogcHJvYyBjbGVhcl9kaXNwbGF5IHt9IHsKICAgICBnbG9iYWwgaWRkcmF3biBsaW5lc2VncyBuZWVkX3JlZGlzcGxheSBucm93c19kcmF3bgogICAgIGdsb2JhbCB2aGlnaGxpZ2h0cyBmaGlnaGxpZ2h0cyBuaGlnaGxpZ2h0cyByaGlnaGxpZ2h0cwotICAgIGdsb2JhbCBsaW5laHRhZyBsaW5lbnRhZyBsaW5lZHRhZyBib2xkcm93cyBib2xkbmFtZXJvd3MKKyAgICBnbG9iYWwgbGluZWh0YWcgbGluZW50YWcgbGluZWR0YWcgYm9sZGlkcyBib2xkbmFtZWlkcwogCiAgICAgYWxsY2FudnMgZGVsZXRlIGFsbAogICAgIGNhdGNoIHt1bnNldCBpZGRyYXdufQpAQCAtNTE4Miw4ICs1ODU2LDggQEAKICAgICBjYXRjaCB7dW5zZXQgbGluZWh0YWd9CiAgICAgY2F0Y2gge3Vuc2V0IGxpbmVudGFnfQogICAgIGNhdGNoIHt1bnNldCBsaW5lZHRhZ30KLSAgICBzZXQgYm9sZHJvd3Mge30KLSAgICBzZXQgYm9sZG5hbWVyb3dzIHt9CisgICAgc2V0IGJvbGRpZHMge30KKyAgICBzZXQgYm9sZG5hbWVpZHMge30KICAgICBjYXRjaCB7dW5zZXQgdmhpZ2hsaWdodHN9CiAgICAgY2F0Y2gge3Vuc2V0IGZoaWdobGlnaHRzfQogICAgIGNhdGNoIHt1bnNldCBuaGlnaGxpZ2h0c30KQEAgLTUzMDIsNyArNTk3Niw3IEBACiBwcm9jIGRyYXd0YWdzIHtpZCB4IHh0IHkxfSB7CiAgICAgZ2xvYmFsIGlkdGFncyBpZGhlYWRzIGlkb3RoZXJyZWZzIG1haW5oZWFkCiAgICAgZ2xvYmFsIGxpbmVzcGMgbHRoaWNrbmVzcwotICAgIGdsb2JhbCBjYW52IHJvd3RleHR4IGN1cnZpZXcgZmdjb2xvciBiZ2NvbG9yCisgICAgZ2xvYmFsIGNhbnYgcm93dGV4dHggY3VydmlldyBmZ2NvbG9yIGJnY29sb3IgY3R4YnV0CiAKICAgICBzZXQgbWFya3Mge30KICAgICBzZXQgbnRhZ3MgMApAQCAtNTM4MCw3ICs2MDU0LDcgQEAKIAlpZiB7JG50YWdzID49IDB9IHsKIAkgICAgJGNhbnYgYmluZCAkdCA8MT4gW2xpc3Qgc2hvd3RhZyAkdGFnIDFdCiAJfSBlbHNlaWYgeyRuaGVhZHMgPj0gMH0gewotCSAgICAkY2FudiBiaW5kICR0IDxCdXR0b24tMz4gW2xpc3QgaGVhZG1lbnUgJVggJVkgJGlkICR0YWddCisJICAgICRjYW52IGJpbmQgJHQgJGN0eGJ1dCBbbGlzdCBoZWFkbWVudSAlWCAlWSAkaWQgJHRhZ10KIAl9CiAgICAgfQogICAgIHJldHVybiAkeHQKQEAgLTU1MDQsNiArNjE3OCw3IEBACiAJc2V0IGZwcm9nY29vcmQgMAogCWFkanVzdHByb2dyZXNzCiAgICAgfQorICAgIHN0b3BibGFtaW5nCiB9CiAKIHByb2MgZmluZG1vcmUge30gewpAQCAtNTY0MCwxMCArNjMxNSwxMSBAQAogcHJvYyBmaW5kc2VsZWN0bGluZSB7bH0gewogICAgIGdsb2JhbCBmaW5kbG9jIGNvbW1lbnRlbmQgY3RleHQgZmluZGN1cmxpbmUgbWFya2luZ21hdGNoZXMgZ2R0dHlwZQogCi0gICAgc2V0IG1hcmtpbmdtYXRjaGVzIDEKKyAgICBzZXQgbWFya2luZ21hdGNoZXMgW2V4cHIgeyRnZHR0eXBlIGVxIFttYyAiY29udGFpbmluZzoiXX1dCiAgICAgc2V0IGZpbmRjdXJsaW5lICRsCiAgICAgc2VsZWN0bGluZSAkbCAxCi0gICAgaWYgeyRmaW5kbG9jID09IFttYyAiQWxsIGZpZWxkcyJdIHx8ICRmaW5kbG9jID09IFttYyAiQ29tbWVudHMiXX0geworICAgIGlmIHskbWFya2luZ21hdGNoZXMgJiYKKwkoJGZpbmRsb2MgZXEgW21jICJBbGwgZmllbGRzIl0gfHwgJGZpbmRsb2MgZXEgW21jICJDb21tZW50cyJdKX0gewogCSMgaGlnaGxpZ2h0IHRoZSBtYXRjaGVzIGluIHRoZSBjb21tZW50cwogCXNldCBmIFskY3RleHQgZ2V0IDEuMCAkY29tbWVudGVuZF0KIAlzZXQgbWF0Y2hlcyBbZmluZG1hdGNoZXMgJGZdCkBAIC01NzIzLDExICs2Mzk5LDExIEBACiAjIGFwcGVuZCBzb21lIHRleHQgdG8gdGhlIGN0ZXh0IHdpZGdldCwgYW5kIG1ha2UgYW55IFNIQTEgSUQKICMgdGhhdCB3ZSBrbm93IGFib3V0IGJlIGEgY2xpY2thYmxlIGxpbmsuCiBwcm9jIGFwcGVuZHdpdGhsaW5rcyB7dGV4dCB0YWdzfSB7Ci0gICAgZ2xvYmFsIGN0ZXh0IGxpbmtudW0gY3VydmlldyBwZW5kaW5nbGlua3MKKyAgICBnbG9iYWwgY3RleHQgbGlua251bSBjdXJ2aWV3CiAKICAgICBzZXQgc3RhcnQgWyRjdGV4dCBpbmRleCAiZW5kIC0gMWMiXQogICAgICRjdGV4dCBpbnNlcnQgZW5kICR0ZXh0ICR0YWdzCi0gICAgc2V0IGxpbmtzIFtyZWdleHAgLWluZGljZXMgLWFsbCAtaW5saW5lIHtbMC05YS1mXXs0MH19ICR0ZXh0XQorICAgIHNldCBsaW5rcyBbcmVnZXhwIC1pbmRpY2VzIC1hbGwgLWlubGluZSB7XG1bMC05YS1mXXs2LDQwfVxNfSAkdGV4dF0KICAgICBmb3JlYWNoIGwgJGxpbmtzIHsKIAlzZXQgcyBbbGluZGV4ICRsIDBdCiAJc2V0IGUgW2xpbmRleCAkbCAxXQpAQCAtNTc0MSwxNiArNjQxNywyNyBAQAogfQogCiBwcm9jIHNldGxpbmsge2lkIGxrfSB7Ci0gICAgZ2xvYmFsIGN1cnZpZXcgY3RleHQgcGVuZGluZ2xpbmtzIGNvbW1pdGludGVyZXN0CisgICAgZ2xvYmFsIGN1cnZpZXcgY3RleHQgcGVuZGluZ2xpbmtzCiAKLSAgICBpZiB7W2NvbW1pdGludmlldyAkaWQgJGN1cnZpZXddfSB7CisgICAgc2V0IGtub3duIDAKKyAgICBpZiB7W3N0cmluZyBsZW5ndGggJGlkXSA8IDQwfSB7CisJc2V0IG1hdGNoZXMgW2xvbmdpZCAkaWRdCisJaWYge1tsbGVuZ3RoICRtYXRjaGVzXSA+IDB9IHsKKwkgICAgaWYge1tsbGVuZ3RoICRtYXRjaGVzXSA+IDF9IHJldHVybgorCSAgICBzZXQga25vd24gMQorCSAgICBzZXQgaWQgW2xpbmRleCAkbWF0Y2hlcyAwXQorCX0KKyAgICB9IGVsc2UgeworCXNldCBrbm93biBbY29tbWl0aW52aWV3ICRpZCAkY3Vydmlld10KKyAgICB9CisgICAgaWYgeyRrbm93bn0gewogCSRjdGV4dCB0YWcgY29uZiAkbGsgLWZvcmVncm91bmQgYmx1ZSAtdW5kZXJsaW5lIDEKLQkkY3RleHQgdGFnIGJpbmQgJGxrIDwxPiBbbGlzdCBzZWxlY3RsaW5lIFtyb3dvZmNvbW1pdCAkaWRdIDFdCisJJGN0ZXh0IHRhZyBiaW5kICRsayA8MT4gW2xpc3Qgc2VsYnlpZCAkaWRdCiAJJGN0ZXh0IHRhZyBiaW5kICRsayA8RW50ZXI+IHtsaW5rY3Vyc29yICVXIDF9CiAJJGN0ZXh0IHRhZyBiaW5kICRsayA8TGVhdmU+IHtsaW5rY3Vyc29yICVXIC0xfQogICAgIH0gZWxzZSB7CiAJbGFwcGVuZCBwZW5kaW5nbGlua3MoJGlkKSAkbGsKLQlsYXBwZW5kIGNvbW1pdGludGVyZXN0KCRpZCkge21ha2VsaW5rICVJfQorCWludGVyZXN0ZWRpbiAkaWQge21ha2VsaW5rICVQfQogICAgIH0KIH0KIApAQCAtNTg3OSwyNSArNjU2NiwyNSBAQAogICAgIH0KIH0KIAotcHJvYyBtYWtlX3NlY3NlbCB7bH0geworcHJvYyBtYWtlX3NlY3NlbCB7aWR9IHsKICAgICBnbG9iYWwgbGluZWh0YWcgbGluZW50YWcgbGluZWR0YWcgY2FudiBjYW52MiBjYW52MwogCi0gICAgaWYgeyFbaW5mbyBleGlzdHMgbGluZWh0YWcoJGwpXX0gcmV0dXJuCisgICAgaWYgeyFbaW5mbyBleGlzdHMgbGluZWh0YWcoJGlkKV19IHJldHVybgogICAgICRjYW52IGRlbGV0ZSBzZWNzZWwKLSAgICBzZXQgdCBbZXZhbCAkY2FudiBjcmVhdGUgcmVjdCBbJGNhbnYgYmJveCAkbGluZWh0YWcoJGwpXSAtb3V0bGluZSB7e319IFwKKyAgICBzZXQgdCBbZXZhbCAkY2FudiBjcmVhdGUgcmVjdCBbJGNhbnYgYmJveCAkbGluZWh0YWcoJGlkKV0gLW91dGxpbmUge3t9fSBcCiAJICAgICAgIC10YWdzIHNlY3NlbCAtZmlsbCBbJGNhbnYgY2dldCAtc2VsZWN0YmFja2dyb3VuZF1dCiAgICAgJGNhbnYgbG93ZXIgJHQKICAgICAkY2FudjIgZGVsZXRlIHNlY3NlbAotICAgIHNldCB0IFtldmFsICRjYW52MiBjcmVhdGUgcmVjdCBbJGNhbnYyIGJib3ggJGxpbmVudGFnKCRsKV0gLW91dGxpbmUge3t9fSBcCisgICAgc2V0IHQgW2V2YWwgJGNhbnYyIGNyZWF0ZSByZWN0IFskY2FudjIgYmJveCAkbGluZW50YWcoJGlkKV0gLW91dGxpbmUge3t9fSBcCiAJICAgICAgIC10YWdzIHNlY3NlbCAtZmlsbCBbJGNhbnYyIGNnZXQgLXNlbGVjdGJhY2tncm91bmRdXQogICAgICRjYW52MiBsb3dlciAkdAogICAgICRjYW52MyBkZWxldGUgc2Vjc2VsCi0gICAgc2V0IHQgW2V2YWwgJGNhbnYzIGNyZWF0ZSByZWN0IFskY2FudjMgYmJveCAkbGluZWR0YWcoJGwpXSAtb3V0bGluZSB7e319IFwKKyAgICBzZXQgdCBbZXZhbCAkY2FudjMgY3JlYXRlIHJlY3QgWyRjYW52MyBiYm94ICRsaW5lZHRhZygkaWQpXSAtb3V0bGluZSB7e319IFwKIAkgICAgICAgLXRhZ3Mgc2Vjc2VsIC1maWxsIFskY2FudjMgY2dldCAtc2VsZWN0YmFja2dyb3VuZF1dCiAgICAgJGNhbnYzIGxvd2VyICR0CiB9CiAKLXByb2Mgc2VsZWN0bGluZSB7bCBpc25ld30geworcHJvYyBzZWxlY3RsaW5lIHtsIGlzbmV3IHtkZXNpcmVkX2xvYyB7fX19IHsKICAgICBnbG9iYWwgY2FudiBjdGV4dCBjb21taXRpbmZvIHNlbGVjdGVkbGluZQogICAgIGdsb2JhbCBjYW52eTAgbGluZXNwYyBwYXJlbnRzIGNoaWxkcmVuIGN1cnZpZXcKICAgICBnbG9iYWwgY3VycmVudGlkIHNoYTFlbnRyeQpAQCAtNTkwNSw3ICs2NTkyLDcgQEAKICAgICBnbG9iYWwgbWVyZ2VtYXggbnVtY29tbWl0cyBwZW5kaW5nX3NlbGVjdAogICAgIGdsb2JhbCBjbWl0bW9kZSBzaG93bmVhcnRhZ3MgYWxsY29tbWl0cwogICAgIGdsb2JhbCB0YXJnZXRyb3cgdGFyZ2V0aWQgbGFzdHNjcm9sbHJvd3MKLSAgICBnbG9iYWwgYXV0b3NlbGVjdAorICAgIGdsb2JhbCBhdXRvc2VsZWN0IGp1bXBfdG9faGVyZQogCiAgICAgY2F0Y2gge3Vuc2V0IHBlbmRpbmdfc2VsZWN0fQogICAgICRjYW52IGRlbGV0ZSBob3ZlcgpAQCAtNTk1OCw3ICs2NjQ1LDcgQEAKIAlkcmF3dmlzaWJsZQogICAgIH0KIAotICAgIG1ha2Vfc2Vjc2VsICRsCisgICAgbWFrZV9zZWNzZWwgJGlkCiAKICAgICBpZiB7JGlzbmV3fSB7CiAJYWRkdG9oaXN0b3J5IFtsaXN0IHNlbGJ5aWQgJGlkXQpAQCAtNjA0NCw2ICs2NzMxLDcgQEAKICAgICAkY3RleHQgY29uZiAtc3RhdGUgZGlzYWJsZWQKICAgICBzZXQgY29tbWVudGVuZCBbJGN0ZXh0IGluZGV4ICJlbmQgLSAxYyJdCiAKKyAgICBzZXQganVtcF90b19oZXJlICRkZXNpcmVkX2xvYwogICAgIGluaXRfZmxpc3QgW21jICJDb21tZW50cyJdCiAgICAgaWYgeyRjbWl0bW9kZSBlcSAidHJlZSJ9IHsKIAlnZXR0cmVlICRpZApAQCAtNjE5Niw3ICs2ODg0LDcgQEAKIAkgICAgc2V0IHRyZWVwZW5kaW5nICRpZAogCSAgICBzZXQgdHJlZWZpbGVsaXN0KCRpZCkge30KIAkgICAgc2V0IHRyZWVpZGxpc3QoJGlkKSB7fQotCSAgICBmY29uZmlndXJlICRndGYgLWJsb2NraW5nIDAKKwkgICAgZmNvbmZpZ3VyZSAkZ3RmIC1ibG9ja2luZyAwIC1lbmNvZGluZyBiaW5hcnkKIAkgICAgZmlsZXJ1biAkZ3RmIFtsaXN0IGdldHRyZWVsaW5lICRndGYgJGlkXQogCX0KICAgICB9IGVsc2UgewpAQCAtNjIxOCwxMSArNjkwNiwxMiBAQAogCSAgICBzZXQgbGluZSBbc3RyaW5nIHJhbmdlICRsaW5lIDAgW2V4cHIgeyRpLTF9XV0KIAkgICAgaWYgeyRkaWZmaWRzIG5lICRudWxsaWQyICYmIFtsaW5kZXggJGxpbmUgMV0gbmUgImJsb2IifSBjb250aW51ZQogCSAgICBzZXQgc2hhMSBbbGluZGV4ICRsaW5lIDJdCi0JICAgIGlmIHtbc3RyaW5nIGluZGV4ICRmbmFtZSAwXSBlcSAiXCIifSB7Ci0JCXNldCBmbmFtZSBbbGluZGV4ICRmbmFtZSAwXQotCSAgICB9CiAJICAgIGxhcHBlbmQgdHJlZWlkbGlzdCgkaWQpICRzaGExCiAJfQorCWlmIHtbc3RyaW5nIGluZGV4ICRmbmFtZSAwXSBlcSAiXCIifSB7CisJICAgIHNldCBmbmFtZSBbbGluZGV4ICRmbmFtZSAwXQorCX0KKwlzZXQgZm5hbWUgW2VuY29kaW5nIGNvbnZlcnRmcm9tICRmbmFtZV0KIAlsYXBwZW5kIHRyZWVmaWxlbGlzdCgkaWQpICRmbmFtZQogICAgIH0KICAgICBpZiB7IVtlb2YgJGd0Zl19IHsKQEAgLTYyNDQsNiArNjkzMyw3IEBACiAKIHByb2Mgc2hvd2ZpbGUge2Z9IHsKICAgICBnbG9iYWwgdHJlZWZpbGVsaXN0IHRyZWVpZGxpc3QgZGlmZmlkcyBudWxsaWQgbnVsbGlkMgorICAgIGdsb2JhbCBjdGV4dF9maWxlX25hbWVzIGN0ZXh0X2ZpbGVfbGluZXMKICAgICBnbG9iYWwgY3RleHQgY29tbWVudGVuZAogCiAgICAgc2V0IGkgW2xzZWFyY2ggLWV4YWN0ICR0cmVlZmlsZWxpc3QoJGRpZmZpZHMpICRmXQpAQCAtNjI2MywxMCArNjk1MywxMiBAQAogCSAgICByZXR1cm4KIAl9CiAgICAgfQotICAgIGZjb25maWd1cmUgJGJmIC1ibG9ja2luZyAwCisgICAgZmNvbmZpZ3VyZSAkYmYgLWJsb2NraW5nIDAgLWVuY29kaW5nIFtnZXRfcGF0aF9lbmNvZGluZyAkZl0KICAgICBmaWxlcnVuICRiZiBbbGlzdCBnZXRibG9ibGluZSAkYmYgJGRpZmZpZHNdCiAgICAgJGN0ZXh0IGNvbmZpZyAtc3RhdGUgbm9ybWFsCiAgICAgY2xlYXJfY3RleHQgJGNvbW1lbnRlbmQKKyAgICBsYXBwZW5kIGN0ZXh0X2ZpbGVfbmFtZXMgJGYKKyAgICBsYXBwZW5kIGN0ZXh0X2ZpbGVfbGluZXMgW2xpbmRleCBbc3BsaXQgJGNvbW1lbnRlbmQgIi4iXSAwXQogICAgICRjdGV4dCBpbnNlcnQgZW5kICJcbiIKICAgICAkY3RleHQgaW5zZXJ0IGVuZCAiJGZcbiIgZmlsZXNlcAogICAgICRjdGV4dCBjb25maWcgLXN0YXRlIGRpc2FibGVkCkBAIC02Mjg3LDEwOSArNjk3OSw0MyBAQAogCSRjdGV4dCBpbnNlcnQgZW5kICIkbGluZVxuIgogICAgIH0KICAgICBpZiB7W2VvZiAkYmZdfSB7CisJZ2xvYmFsIGp1bXBfdG9faGVyZSBjdGV4dF9maWxlX25hbWVzIGNvbW1lbnRlbmQKKwogCSMgZGVsZXRlIGxhc3QgbmV3bGluZQogCSRjdGV4dCBkZWxldGUgImVuZCAtIDJjIiAiZW5kIC0gMWMiCiAJY2xvc2UgJGJmCisJaWYgeyRqdW1wX3RvX2hlcmUgbmUge30gJiYKKwkgICAgW2xpbmRleCAkanVtcF90b19oZXJlIDBdIGVxIFtsaW5kZXggJGN0ZXh0X2ZpbGVfbmFtZXMgMF19IHsKKwkgICAgc2V0IGxudW0gW2V4cHIge1tsaW5kZXggJGp1bXBfdG9faGVyZSAxXSArCisJCQkgICAgW2xpbmRleCBbc3BsaXQgJGNvbW1lbnRlbmQgLl0gMF19XQorCSAgICBtYXJrX2N0ZXh0X2xpbmUgJGxudW0KKwl9CiAJcmV0dXJuIDAKICAgICB9CiAgICAgJGN0ZXh0IGNvbmZpZyAtc3RhdGUgZGlzYWJsZWQKICAgICByZXR1cm4gW2V4cHIgeyRubCA+PSAxMDAwPyAyOiAxfV0KIH0KIAorcHJvYyBtYXJrX2N0ZXh0X2xpbmUge2xudW19IHsKKyAgICBnbG9iYWwgY3RleHQgbWFya2JnY29sb3IKKworICAgICRjdGV4dCB0YWcgZGVsZXRlIG9tYXJrCisgICAgJGN0ZXh0IHRhZyBhZGQgb21hcmsgJGxudW0uMCAiJGxudW0uMCArIDEgbGluZSIKKyAgICAkY3RleHQgdGFnIGNvbmYgb21hcmsgLWJhY2tncm91bmQgJG1hcmtiZ2NvbG9yCisgICAgJGN0ZXh0IHNlZSAkbG51bS4wCit9CisKIHByb2MgbWVyZ2VkaWZmIHtpZH0gewotICAgIGdsb2JhbCBkaWZmbWVyZ2VpZCBtZGlmZmZkCi0gICAgZ2xvYmFsIGRpZmZpZHMKLSAgICBnbG9iYWwgcGFyZW50cwotICAgIGdsb2JhbCBkaWZmY29udGV4dAotICAgIGdsb2JhbCBsaW1pdGRpZmZzIHZmaWxlbGltaXQgY3VydmlldworICAgIGdsb2JhbCBkaWZmbWVyZ2VpZAorICAgIGdsb2JhbCBkaWZmaWRzIHRyZWVkaWZmcworICAgIGdsb2JhbCBwYXJlbnRzIGN1cnZpZXcKIAogICAgIHNldCBkaWZmbWVyZ2VpZCAkaWQKICAgICBzZXQgZGlmZmlkcyAkaWQKLSAgICAjIHRoaXMgZG9lc24ndCBzZWVtIHRvIGFjdHVhbGx5IGFmZmVjdCBhbnl0aGluZy4uLgotICAgIHNldCBjbWQgW2NvbmNhdCB8IGdpdCBkaWZmLXRyZWUgLS1uby1jb21taXQtaWQgLS1jYyAtVSRkaWZmY29udGV4dCAkaWRdCi0gICAgaWYgeyRsaW1pdGRpZmZzICYmICR2ZmlsZWxpbWl0KCRjdXJ2aWV3KSBuZSB7fX0gewotCXNldCBjbWQgW2NvbmNhdCAkY21kIC0tICR2ZmlsZWxpbWl0KCRjdXJ2aWV3KV0KLSAgICB9Ci0gICAgaWYge1tjYXRjaCB7c2V0IG1kZiBbb3BlbiAkY21kIHJdfSBlcnJdfSB7Ci0JZXJyb3JfcG9wdXAgIlttYyAiRXJyb3IgZ2V0dGluZyBtZXJnZSBkaWZmczoiXSAkZXJyIgotCXJldHVybgotICAgIH0KLSAgICBmY29uZmlndXJlICRtZGYgLWJsb2NraW5nIDAKLSAgICBzZXQgbWRpZmZmZCgkaWQpICRtZGYKKyAgICBzZXQgdHJlZWRpZmZzKCRpZCkge30KICAgICBzZXQgbnAgW2xsZW5ndGggJHBhcmVudHMoJGN1cnZpZXcsJGlkKV0KICAgICBzZXR0YWJzICRucAotICAgIGZpbGVydW4gJG1kZiBbbGlzdCBnZXRtZXJnZWRpZmZsaW5lICRtZGYgJGlkICRucF0KLX0KLQotcHJvYyBnZXRtZXJnZWRpZmZsaW5lIHttZGYgaWQgbnB9IHsKLSAgICBnbG9iYWwgZGlmZm1lcmdlaWQgY3RleHQgY2ZsaXN0IG1lcmdlbWF4Ci0gICAgZ2xvYmFsIGRpZmZmaWxlc3RhcnQgbWRpZmZmZAotCi0gICAgJGN0ZXh0IGNvbmYgLXN0YXRlIG5vcm1hbAotICAgIHNldCBuciAwCi0gICAgd2hpbGUge1tpbmNyIG5yXSA8PSAxMDAwICYmIFtnZXRzICRtZGYgbGluZV0gPj0gMH0gewotCWlmIHshW2luZm8gZXhpc3RzIGRpZmZtZXJnZWlkXSB8fCAkaWQgIT0gJGRpZmZtZXJnZWlkCi0JICAgIHx8ICRtZGYgIT0gJG1kaWZmZmQoJGlkKX0gewotCSAgICBjbG9zZSAkbWRmCi0JICAgIHJldHVybiAwCi0JfQotCWlmIHtbcmVnZXhwIHteZGlmZiAtLWNjICguKil9ICRsaW5lIG1hdGNoIGZuYW1lXX0gewotCSAgICAjIHN0YXJ0IG9mIGEgbmV3IGZpbGUKLQkgICAgJGN0ZXh0IGluc2VydCBlbmQgIlxuIgotCSAgICBzZXQgaGVyZSBbJGN0ZXh0IGluZGV4ICJlbmQgLSAxYyJdCi0JICAgIGxhcHBlbmQgZGlmZmZpbGVzdGFydCAkaGVyZQotCSAgICBhZGRfZmxpc3QgW2xpc3QgJGZuYW1lXQotCSAgICBzZXQgbCBbZXhwciB7KDc4IC0gW3N0cmluZyBsZW5ndGggJGZuYW1lXSkgLyAyfV0KLQkgICAgc2V0IHBhZCBbc3RyaW5nIHJhbmdlICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiAxICRsXQotCSAgICAkY3RleHQgaW5zZXJ0IGVuZCAiJHBhZCAkZm5hbWUgJHBhZFxuIiBmaWxlc2VwCi0JfSBlbHNlaWYge1tyZWdleHAge15AQH0gJGxpbmVdfSB7Ci0JICAgICRjdGV4dCBpbnNlcnQgZW5kICIkbGluZVxuIiBodW5rc2VwCi0JfSBlbHNlaWYge1tyZWdleHAge15bMC05YS1mXXs0MH0kfSAkbGluZV0gfHwgW3JlZ2V4cCB7XmluZGV4fSAkbGluZV19IHsKLQkgICAgIyBkbyBub3RoaW5nCi0JfSBlbHNlIHsKLQkgICAgIyBwYXJzZSB0aGUgcHJlZml4IC0gb25lICcgJywgJy0nIG9yICcrJyBmb3IgZWFjaCBwYXJlbnQKLQkgICAgc2V0IHNwYWNlcyB7fQotCSAgICBzZXQgbWludXNlcyB7fQotCSAgICBzZXQgcGx1c2VzIHt9Ci0JICAgIHNldCBpc2JhZCAwCi0JICAgIGZvciB7c2V0IGogMH0geyRqIDwgJG5wfSB7aW5jciBqfSB7Ci0JCXNldCBjIFtzdHJpbmcgcmFuZ2UgJGxpbmUgJGogJGpdCi0JCWlmIHskYyA9PSAiICJ9IHsKLQkJICAgIGxhcHBlbmQgc3BhY2VzICRqCi0JCX0gZWxzZWlmIHskYyA9PSAiLSJ9IHsKLQkJICAgIGxhcHBlbmQgbWludXNlcyAkagotCQl9IGVsc2VpZiB7JGMgPT0gIisifSB7Ci0JCSAgICBsYXBwZW5kIHBsdXNlcyAkagotCQl9IGVsc2UgewotCQkgICAgc2V0IGlzYmFkIDEKLQkJICAgIGJyZWFrCi0JCX0KLQkgICAgfQotCSAgICBzZXQgdGFncyB7fQotCSAgICBzZXQgbnVtIHt9Ci0JICAgIGlmIHshJGlzYmFkICYmICRtaW51c2VzIG5lIHt9ICYmICRwbHVzZXMgZXEge319IHsKLQkJIyBsaW5lIGRvZXNuJ3QgYXBwZWFyIGluIHJlc3VsdCwgcGFyZW50cyBpbiAkbWludXNlcyBoYXZlIHRoZSBsaW5lCi0JCXNldCBudW0gW2xpbmRleCAkbWludXNlcyAwXQotCSAgICB9IGVsc2VpZiB7ISRpc2JhZCAmJiAkcGx1c2VzIG5lIHt9ICYmICRtaW51c2VzIGVxIHt9fSB7Ci0JCSMgbGluZSBhcHBlYXJzIGluIHJlc3VsdCwgcGFyZW50cyBpbiAkcGx1c2VzIGRvbid0IGhhdmUgdGhlIGxpbmUKLQkJbGFwcGVuZCB0YWdzIG1yZXN1bHQKLQkJc2V0IG51bSBbbGluZGV4ICRzcGFjZXMgMF0KLQkgICAgfQotCSAgICBpZiB7JG51bSBuZSB7fX0gewotCQlpZiB7JG51bSA+PSAkbWVyZ2VtYXh9IHsKLQkJICAgIHNldCBudW0gIm1heCIKLQkJfQotCQlsYXBwZW5kIHRhZ3MgbSRudW0KLQkgICAgfQotCSAgICAkY3RleHQgaW5zZXJ0IGVuZCAiJGxpbmVcbiIgJHRhZ3MKLQl9Ci0gICAgfQotICAgICRjdGV4dCBjb25mIC1zdGF0ZSBkaXNhYmxlZAotICAgIGlmIHtbZW9mICRtZGZdfSB7Ci0JY2xvc2UgJG1kZgotCXJldHVybiAwCi0gICAgfQotICAgIHJldHVybiBbZXhwciB7JG5yID49IDEwMDA/IDI6IDF9XQorICAgIGdldGJsb2JkaWZmcyAkaWQKIH0KIAogcHJvYyBzdGFydGRpZmYge2lkc30gewpAQCAtNjQ4MSwyNyArNzEwNyw0NCBAQAogCiAgICAgc2V0IHRyZWVwZW5kaW5nICRpZHMKICAgICBzZXQgdHJlZWRpZmYge30KLSAgICBmY29uZmlndXJlICRnZHRmIC1ibG9ja2luZyAwCisgICAgZmNvbmZpZ3VyZSAkZ2R0ZiAtYmxvY2tpbmcgMCAtZW5jb2RpbmcgYmluYXJ5CiAgICAgZmlsZXJ1biAkZ2R0ZiBbbGlzdCBnZXR0cmVlZGlmZmxpbmUgJGdkdGYgJGlkc10KIH0KIAogcHJvYyBnZXR0cmVlZGlmZmxpbmUge2dkdGYgaWRzfSB7CiAgICAgZ2xvYmFsIHRyZWVkaWZmIHRyZWVkaWZmcyB0cmVlcGVuZGluZyBkaWZmaWRzIGRpZmZtZXJnZWlkCi0gICAgZ2xvYmFsIGNtaXRtb2RlIHZmaWxlbGltaXQgY3VydmlldyBsaW1pdGRpZmZzCisgICAgZ2xvYmFsIGNtaXRtb2RlIHZmaWxlbGltaXQgY3VydmlldyBsaW1pdGRpZmZzIHBlcmZpbGVfYXR0cnMKIAogICAgIHNldCBuciAwCi0gICAgd2hpbGUge1tpbmNyIG5yXSA8PSAxMDAwICYmIFtnZXRzICRnZHRmIGxpbmVdID49IDB9IHsKKyAgICBzZXQgc3VibGlzdCB7fQorICAgIHNldCBtYXggMTAwMAorICAgIGlmIHskcGVyZmlsZV9hdHRyc30geworCSMgY2FjaGVfZ2l0YXR0ciBpcyBzbG93LCBhbmQgZXZlbiBzbG93ZXIgb24gd2luMzIgd2hlcmUgd2UKKwkjIGhhdmUgdG8gaW52b2tlIGl0IGZvciBvbmx5IGFib3V0IDMwIHBhdGhzIGF0IGEgdGltZQorCXNldCBtYXggNTAwCisJaWYge1t0ayB3aW5kb3dpbmdzeXN0ZW1dID09ICJ3aW4zMiJ9IHsKKwkgICAgc2V0IG1heCAxMjAKKwl9CisgICAgfQorICAgIHdoaWxlIHtbaW5jciBucl0gPD0gJG1heCAmJiBbZ2V0cyAkZ2R0ZiBsaW5lXSA+PSAwfSB7CiAJc2V0IGkgW3N0cmluZyBmaXJzdCAiXHQiICRsaW5lXQogCWlmIHskaSA+PSAwfSB7CiAJICAgIHNldCBmaWxlIFtzdHJpbmcgcmFuZ2UgJGxpbmUgW2V4cHIgeyRpKzF9XSBlbmRdCiAJICAgIGlmIHtbc3RyaW5nIGluZGV4ICRmaWxlIDBdIGVxICJcIiJ9IHsKIAkJc2V0IGZpbGUgW2xpbmRleCAkZmlsZSAwXQogCSAgICB9Ci0JICAgIGxhcHBlbmQgdHJlZWRpZmYgJGZpbGUKKwkgICAgc2V0IGZpbGUgW2VuY29kaW5nIGNvbnZlcnRmcm9tICRmaWxlXQorCSAgICBpZiB7JGZpbGUgbmUgW2xpbmRleCAkdHJlZWRpZmYgZW5kXX0geworCQlsYXBwZW5kIHRyZWVkaWZmICRmaWxlCisJCWxhcHBlbmQgc3VibGlzdCAkZmlsZQorCSAgICB9CiAJfQogICAgIH0KKyAgICBpZiB7JHBlcmZpbGVfYXR0cnN9IHsKKwljYWNoZV9naXRhdHRyIGVuY29kaW5nICRzdWJsaXN0CisgICAgfQogICAgIGlmIHshW2VvZiAkZ2R0Zl19IHsKLQlyZXR1cm4gW2V4cHIgeyRuciA+PSAxMDAwPyAyOiAxfV0KKwlyZXR1cm4gW2V4cHIgeyRuciA+PSAkbWF4PyAyOiAxfV0KICAgICB9CiAgICAgY2xvc2UgJGdkdGYKICAgICBpZiB7JGxpbWl0ZGlmZnMgJiYgJHZmaWxlbGltaXQoJGN1cnZpZXcpIG5lIHt9fSB7CkBAIC02NTE2LDcgKzcxNTksNyBAQAogCXNldCB0cmVlZGlmZnMoJGlkcykgJHRyZWVkaWZmCiAgICAgfQogICAgIHVuc2V0IHRyZWVwZW5kaW5nCi0gICAgaWYgeyRjbWl0bW9kZSBlcSAidHJlZSJ9IHsKKyAgICBpZiB7JGNtaXRtb2RlIGVxICJ0cmVlIiAmJiBbbGxlbmd0aCAkZGlmZmlkc10gPT0gMX0gewogCWdldHRyZWUgJGRpZmZpZHMKICAgICB9IGVsc2VpZiB7JGlkcyAhPSAkZGlmZmlkc30gewogCWlmIHshW2luZm8gZXhpc3RzIGRpZmZtZXJnZWlkXX0gewpAQCAtNjU1NCw4ICs3MTk3LDkgQEAKICAgICBnbG9iYWwgZGlmZmNvbnRleHQKICAgICBnbG9iYWwgaWdub3Jlc3BhY2UKICAgICBnbG9iYWwgbGltaXRkaWZmcyB2ZmlsZWxpbWl0IGN1cnZpZXcKKyAgICBnbG9iYWwgZGlmZmVuY29kaW5nIHRhcmdldGxpbmUgZGlmZm5wYXJlbnRzCiAKLSAgICBzZXQgY21kIFtkaWZmY21kICRpZHMgIi1wIC1DIC0tbm8tY29tbWl0LWlkIC1VJGRpZmZjb250ZXh0Il0KKyAgICBzZXQgY21kIFtkaWZmY21kICRpZHMgIi1wIC1DIC0tY2MgLS1uby1jb21taXQtaWQgLVUkZGlmZmNvbnRleHQiXQogICAgIGlmIHskaWdub3Jlc3BhY2V9IHsKIAlhcHBlbmQgY21kICIgLXciCiAgICAgfQpAQCAtNjU2MywxMSArNzIwNywxNCBAQAogCXNldCBjbWQgW2NvbmNhdCAkY21kIC0tICR2ZmlsZWxpbWl0KCRjdXJ2aWV3KV0KICAgICB9CiAgICAgaWYge1tjYXRjaCB7c2V0IGJkZiBbb3BlbiAkY21kIHJdfSBlcnJdfSB7Ci0JcHV0cyAiZXJyb3IgZ2V0dGluZyBkaWZmczogJGVyciIKKwllcnJvcl9wb3B1cCBbbWMgIkVycm9yIGdldHRpbmcgZGlmZnM6ICVzIiAkZXJyXQogCXJldHVybgogICAgIH0KKyAgICBzZXQgdGFyZ2V0bGluZSB7fQorICAgIHNldCBkaWZmbnBhcmVudHMgMAogICAgIHNldCBkaWZmaW5oZHIgMAotICAgIGZjb25maWd1cmUgJGJkZiAtYmxvY2tpbmcgMAorICAgIHNldCBkaWZmZW5jb2RpbmcgW2dldF9wYXRoX2VuY29kaW5nIHt9XQorICAgIGZjb25maWd1cmUgJGJkZiAtYmxvY2tpbmcgMCAtZW5jb2RpbmcgYmluYXJ5CiAgICAgc2V0IGJsb2JkaWZmZmQoJGlkcykgJGJkZgogICAgIGZpbGVydW4gJGJkZiBbbGlzdCBnZXRibG9iZGlmZmxpbmUgJGJkZiAkZGlmZmlkc10KIH0KQEAgLTY1ODYsMjEgKzcyMzMsMzIgQEAKIH0KIAogcHJvYyBtYWtlZGlmZmhkciB7Zm5hbWUgaWRzfSB7Ci0gICAgZ2xvYmFsIGN0ZXh0IGN1cmRpZmZzdGFydCB0cmVlZGlmZnMKKyAgICBnbG9iYWwgY3RleHQgY3VyZGlmZnN0YXJ0IHRyZWVkaWZmcyBkaWZmZW5jb2RpbmcKKyAgICBnbG9iYWwgY3RleHRfZmlsZV9uYW1lcyBqdW1wX3RvX2hlcmUgdGFyZ2V0bGluZSBkaWZmbGluZQogCisgICAgc2V0IGZuYW1lIFtlbmNvZGluZyBjb252ZXJ0ZnJvbSAkZm5hbWVdCisgICAgc2V0IGRpZmZlbmNvZGluZyBbZ2V0X3BhdGhfZW5jb2RpbmcgJGZuYW1lXQogICAgIHNldCBpIFtsc2VhcmNoIC1leGFjdCAkdHJlZWRpZmZzKCRpZHMpICRmbmFtZV0KICAgICBpZiB7JGkgPj0gMH0gewogCXNldGlubGlzdCBkaWZmZmlsZXN0YXJ0ICRpICRjdXJkaWZmc3RhcnQKICAgICB9CisgICAgbHNldCBjdGV4dF9maWxlX25hbWVzIGVuZCAkZm5hbWUKICAgICBzZXQgbCBbZXhwciB7KDc4IC0gW3N0cmluZyBsZW5ndGggJGZuYW1lXSkgLyAyfV0KICAgICBzZXQgcGFkIFtzdHJpbmcgcmFuZ2UgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIDEgJGxdCiAgICAgJGN0ZXh0IGluc2VydCAkY3VyZGlmZnN0YXJ0ICIkcGFkICRmbmFtZSAkcGFkIiBmaWxlc2VwCisgICAgc2V0IHRhcmdldGxpbmUge30KKyAgICBpZiB7JGp1bXBfdG9faGVyZSBuZSB7fSAmJiBbbGluZGV4ICRqdW1wX3RvX2hlcmUgMF0gZXEgJGZuYW1lfSB7CisJc2V0IHRhcmdldGxpbmUgW2xpbmRleCAkanVtcF90b19oZXJlIDFdCisgICAgfQorICAgIHNldCBkaWZmbGluZSAwCiB9CiAKIHByb2MgZ2V0YmxvYmRpZmZsaW5lIHtiZGYgaWRzfSB7CiAgICAgZ2xvYmFsIGRpZmZpZHMgYmxvYmRpZmZmZCBjdGV4dCBjdXJkaWZmc3RhcnQKICAgICBnbG9iYWwgZGlmZm5leHRoZWFkIGRpZmZuZXh0bm90ZSBkaWZmZmlsZXN0YXJ0Ci0gICAgZ2xvYmFsIGRpZmZpbmhkciB0cmVlZGlmZnMKKyAgICBnbG9iYWwgY3RleHRfZmlsZV9uYW1lcyBjdGV4dF9maWxlX2xpbmVzCisgICAgZ2xvYmFsIGRpZmZpbmhkciB0cmVlZGlmZnMgbWVyZ2VtYXggZGlmZm5wYXJlbnRzCisgICAgZ2xvYmFsIGRpZmZlbmNvZGluZyBqdW1wX3RvX2hlcmUgdGFyZ2V0bGluZSBkaWZmbGluZQogCiAgICAgc2V0IG5yIDAKICAgICAkY3RleHQgY29uZiAtc3RhdGUgbm9ybWFsCkBAIC02NjA5LDQwICs3MjY3LDc0IEBACiAJICAgIGNsb3NlICRiZGYKIAkgICAgcmV0dXJuIDAKIAl9Ci0JaWYgeyFbc3RyaW5nIGNvbXBhcmUgLWxlbmd0aCAxMSAiZGlmZiAtLWdpdCAiICRsaW5lXX0gewotCSAgICAjIHRyaW0gb2ZmICJkaWZmIC0tZ2l0ICIKLQkgICAgc2V0IGxpbmUgW3N0cmluZyByYW5nZSAkbGluZSAxMSBlbmRdCi0JICAgIHNldCBkaWZmaW5oZHIgMQotCSAgICAjIHN0YXJ0IG9mIGEgbmV3IGZpbGUKLQkgICAgJGN0ZXh0IGluc2VydCBlbmQgIlxuIgotCSAgICBzZXQgY3VyZGlmZnN0YXJ0IFskY3RleHQgaW5kZXggImVuZCAtIDFjIl0KLQkgICAgJGN0ZXh0IGluc2VydCBlbmQgIlxuIiBmaWxlc2VwCi0JICAgICMgSWYgdGhlIG5hbWUgaGFzbid0IGNoYW5nZWQgdGhlIGxlbmd0aCB3aWxsIGJlIG9kZCwKLQkgICAgIyB0aGUgbWlkZGxlIGNoYXIgd2lsbCBiZSBhIHNwYWNlLCBhbmQgdGhlIHR3byBiaXRzIGVpdGhlcgotCSAgICAjIHNpZGUgd2lsbCBiZSBhL25hbWUgYW5kIGIvbmFtZSwgb3IgImEvbmFtZSIgYW5kICJiL25hbWUiLgotCSAgICAjIElmIHRoZSBuYW1lIGhhcyBjaGFuZ2VkIHdlJ2xsIGdldCAicmVuYW1lIGZyb20iIGFuZAotCSAgICAjICJyZW5hbWUgdG8iIG9yICJjb3B5IGZyb20iIGFuZCAiY29weSB0byIgbGluZXMgZm9sbG93aW5nIHRoaXMsCi0JICAgICMgYW5kIHdlJ2xsIHVzZSB0aGVtIHRvIGdldCB0aGUgZmlsZW5hbWVzLgotCSAgICAjIFRoaXMgY29tcGxleGl0eSBpcyBuZWNlc3NhcnkgYmVjYXVzZSBzcGFjZXMgaW4gdGhlIGZpbGVuYW1lKHMpCi0JICAgICMgZG9uJ3QgZ2V0IGVzY2FwZWQuCi0JICAgIHNldCBsIFtzdHJpbmcgbGVuZ3RoICRsaW5lXQotCSAgICBzZXQgaSBbZXhwciB7JGwgLyAyfV0KLQkgICAgaWYgeyEoKCRsICYgMSkgJiYgW3N0cmluZyBpbmRleCAkbGluZSAkaV0gZXEgIiAiICYmCi0JCSAgW3N0cmluZyByYW5nZSAkbGluZSAyIFtleHByIHskaSAtIDF9XV0gZXEgXAotCQkgICAgICBbc3RyaW5nIHJhbmdlICRsaW5lIFtleHByIHskaSArIDN9XSBlbmRdKX0geworCWlmIHshW3N0cmluZyBjb21wYXJlIC1sZW5ndGggNSAiZGlmZiAiICRsaW5lXX0geworCSAgICBpZiB7IVtyZWdleHAge15kaWZmICgtLWNjfC0tZ2l0KSB9ICRsaW5lIG0gdHlwZV19IHsKKwkJc2V0IGxpbmUgW2VuY29kaW5nIGNvbnZlcnRmcm9tICRsaW5lXQorCQkkY3RleHQgaW5zZXJ0IGVuZCAiJGxpbmVcbiIgaHVua3NlcAogCQljb250aW51ZQogCSAgICB9Ci0JICAgICMgdW5lc2NhcGUgaWYgcXVvdGVkIGFuZCBjaG9wIG9mZiB0aGUgYS8gZnJvbSB0aGUgZnJvbnQKLQkgICAgaWYge1tzdHJpbmcgaW5kZXggJGxpbmUgMF0gZXEgIlwiIn0gewotCQlzZXQgZm5hbWUgW3N0cmluZyByYW5nZSBbbGluZGV4ICRsaW5lIDBdIDIgZW5kXQorCSAgICAjIHN0YXJ0IG9mIGEgbmV3IGZpbGUKKwkgICAgc2V0IGRpZmZpbmhkciAxCisJICAgICRjdGV4dCBpbnNlcnQgZW5kICJcbiIKKwkgICAgc2V0IGN1cmRpZmZzdGFydCBbJGN0ZXh0IGluZGV4ICJlbmQgLSAxYyJdCisJICAgIGxhcHBlbmQgY3RleHRfZmlsZV9uYW1lcyAiIgorCSAgICBsYXBwZW5kIGN0ZXh0X2ZpbGVfbGluZXMgW2xpbmRleCBbc3BsaXQgJGN1cmRpZmZzdGFydCAiLiJdIDBdCisJICAgICRjdGV4dCBpbnNlcnQgZW5kICJcbiIgZmlsZXNlcAorCisJICAgIGlmIHskdHlwZSBlcSAiLS1jYyJ9IHsKKwkJIyBzdGFydCBvZiBhIG5ldyBmaWxlIGluIGEgbWVyZ2UgZGlmZgorCQlzZXQgZm5hbWUgW3N0cmluZyByYW5nZSAkbGluZSAxMCBlbmRdCisJCWlmIHtbbHNlYXJjaCAtZXhhY3QgJHRyZWVkaWZmcygkaWRzKSAkZm5hbWVdIDwgMH0geworCQkgICAgbGFwcGVuZCB0cmVlZGlmZnMoJGlkcykgJGZuYW1lCisJCSAgICBhZGRfZmxpc3QgW2xpc3QgJGZuYW1lXQorCQl9CisKIAkgICAgfSBlbHNlIHsKLQkJc2V0IGZuYW1lIFtzdHJpbmcgcmFuZ2UgJGxpbmUgMiBbZXhwciB7JGkgLSAxfV1dCisJCXNldCBsaW5lIFtzdHJpbmcgcmFuZ2UgJGxpbmUgMTEgZW5kXQorCQkjIElmIHRoZSBuYW1lIGhhc24ndCBjaGFuZ2VkIHRoZSBsZW5ndGggd2lsbCBiZSBvZGQsCisJCSMgdGhlIG1pZGRsZSBjaGFyIHdpbGwgYmUgYSBzcGFjZSwgYW5kIHRoZSB0d28gYml0cyBlaXRoZXIKKwkJIyBzaWRlIHdpbGwgYmUgYS9uYW1lIGFuZCBiL25hbWUsIG9yICJhL25hbWUiIGFuZCAiYi9uYW1lIi4KKwkJIyBJZiB0aGUgbmFtZSBoYXMgY2hhbmdlZCB3ZSdsbCBnZXQgInJlbmFtZSBmcm9tIiBhbmQKKwkJIyAicmVuYW1lIHRvIiBvciAiY29weSBmcm9tIiBhbmQgImNvcHkgdG8iIGxpbmVzIGZvbGxvd2luZworCQkjIHRoaXMsIGFuZCB3ZSdsbCB1c2UgdGhlbSB0byBnZXQgdGhlIGZpbGVuYW1lcy4KKwkJIyBUaGlzIGNvbXBsZXhpdHkgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugc3BhY2VzIGluIHRoZQorCQkjIGZpbGVuYW1lKHMpIGRvbid0IGdldCBlc2NhcGVkLgorCQlzZXQgbCBbc3RyaW5nIGxlbmd0aCAkbGluZV0KKwkJc2V0IGkgW2V4cHIgeyRsIC8gMn1dCisJCWlmIHshKCgkbCAmIDEpICYmIFtzdHJpbmcgaW5kZXggJGxpbmUgJGldIGVxICIgIiAmJgorCQkgICAgICBbc3RyaW5nIHJhbmdlICRsaW5lIDIgW2V4cHIgeyRpIC0gMX1dXSBlcSBcCisJCQkgIFtzdHJpbmcgcmFuZ2UgJGxpbmUgW2V4cHIgeyRpICsgM31dIGVuZF0pfSB7CisJCSAgICBjb250aW51ZQorCQl9CisJCSMgdW5lc2NhcGUgaWYgcXVvdGVkIGFuZCBjaG9wIG9mZiB0aGUgYS8gZnJvbSB0aGUgZnJvbnQKKwkJaWYge1tzdHJpbmcgaW5kZXggJGxpbmUgMF0gZXEgIlwiIn0geworCQkgICAgc2V0IGZuYW1lIFtzdHJpbmcgcmFuZ2UgW2xpbmRleCAkbGluZSAwXSAyIGVuZF0KKwkJfSBlbHNlIHsKKwkJICAgIHNldCBmbmFtZSBbc3RyaW5nIHJhbmdlICRsaW5lIDIgW2V4cHIgeyRpIC0gMX1dXQorCQl9CiAJICAgIH0KIAkgICAgbWFrZWRpZmZoZHIgJGZuYW1lICRpZHMKIAotCX0gZWxzZWlmIHtbcmVnZXhwIHteQEAgLShbMC05XSspKCxbMC05XSspPyBcKyhbMC05XSspKCxbMC05XSspPyBAQCguKil9IFwKLQkJICAgICAgICRsaW5lIG1hdGNoIGYxbCBmMWMgZjJsIGYyYyByZXN0XX0geworCX0gZWxzZWlmIHshW3N0cmluZyBjb21wYXJlIC1sZW5ndGggMTYgIiogVW5tZXJnZWQgcGF0aCAiICRsaW5lXX0geworCSAgICBzZXQgZm5hbWUgW2VuY29kaW5nIGNvbnZlcnRmcm9tIFtzdHJpbmcgcmFuZ2UgJGxpbmUgMTYgZW5kXV0KKwkgICAgJGN0ZXh0IGluc2VydCBlbmQgIlxuIgorCSAgICBzZXQgY3VyZGlmZnN0YXJ0IFskY3RleHQgaW5kZXggImVuZCAtIDFjIl0KKwkgICAgbGFwcGVuZCBjdGV4dF9maWxlX25hbWVzICRmbmFtZQorCSAgICBsYXBwZW5kIGN0ZXh0X2ZpbGVfbGluZXMgW2xpbmRleCBbc3BsaXQgJGN1cmRpZmZzdGFydCAiLiJdIDBdCisJICAgICRjdGV4dCBpbnNlcnQgZW5kICIkbGluZVxuIiBmaWxlc2VwCisJICAgIHNldCBpIFtsc2VhcmNoIC1leGFjdCAkdHJlZWRpZmZzKCRpZHMpICRmbmFtZV0KKwkgICAgaWYgeyRpID49IDB9IHsKKwkJc2V0aW5saXN0IGRpZmZmaWxlc3RhcnQgJGkgJGN1cmRpZmZzdGFydAorCSAgICB9CisKKwl9IGVsc2VpZiB7IVtzdHJpbmcgY29tcGFyZSAtbGVuZ3RoIDIgIkBAIiAkbGluZV19IHsKKwkgICAgcmVnZXhwIHteQEArfSAkbGluZSBhdHMKKwkgICAgc2V0IGxpbmUgW2VuY29kaW5nIGNvbnZlcnRmcm9tICRkaWZmZW5jb2RpbmcgJGxpbmVdCiAJICAgICRjdGV4dCBpbnNlcnQgZW5kICIkbGluZVxuIiBodW5rc2VwCisJICAgIGlmIHtbcmVnZXhwIHsgXCsoXGQrKSxcZCsgQEB9ICRsaW5lIG0gbmxdfSB7CisJCXNldCBkaWZmbGluZSAkbmwKKwkgICAgfQorCSAgICBzZXQgZGlmZm5wYXJlbnRzIFtleHByIHtbc3RyaW5nIGxlbmd0aCAkYXRzXSAtIDF9XQogCSAgICBzZXQgZGlmZmluaGRyIDAKIAogCX0gZWxzZWlmIHskZGlmZmluaGRyfSB7CkBAIC02NjUxLDYgKzczNDMsNyBAQAogCQlpZiB7W3N0cmluZyBpbmRleCAkZm5hbWUgMF0gZXEgIlwiIn0gewogCQkgICAgc2V0IGZuYW1lIFtsaW5kZXggJGZuYW1lIDBdCiAJCX0KKwkJc2V0IGZuYW1lIFtlbmNvZGluZyBjb252ZXJ0ZnJvbSAkZm5hbWVdCiAJCXNldCBpIFtsc2VhcmNoIC1leGFjdCAkdHJlZWRpZmZzKCRpZHMpICRmbmFtZV0KIAkJaWYgeyRpID49IDB9IHsKIAkJICAgIHNldGlubGlzdCBkaWZmZmlsZXN0YXJ0ICRpICRjdXJkaWZmc3RhcnQKQEAgLTY2NzIsMTIgKzczNjUsNDQgQEAKIAkgICAgJGN0ZXh0IGluc2VydCBlbmQgIiRsaW5lXG4iIGZpbGVzZXAKIAogCX0gZWxzZSB7Ci0JICAgIHNldCB4IFtzdHJpbmcgcmFuZ2UgJGxpbmUgMCAwXQotCSAgICBpZiB7JHggPT0gIi0iIHx8ICR4ID09ICIrIn0gewotCQlzZXQgdGFnIFtleHByIHskeCA9PSAiKyJ9XQotCQkkY3RleHQgaW5zZXJ0IGVuZCAiJGxpbmVcbiIgZCR0YWcKLQkgICAgfSBlbHNlaWYgeyR4ID09ICIgIn0gewotCQkkY3RleHQgaW5zZXJ0IGVuZCAiJGxpbmVcbiIKKwkgICAgc2V0IGxpbmUgW2VuY29kaW5nIGNvbnZlcnRmcm9tICRkaWZmZW5jb2RpbmcgJGxpbmVdCisJICAgICMgcGFyc2UgdGhlIHByZWZpeCAtIG9uZSAnICcsICctJyBvciAnKycgZm9yIGVhY2ggcGFyZW50CisJICAgIHNldCBwcmVmaXggW3N0cmluZyByYW5nZSAkbGluZSAwIFtleHByIHskZGlmZm5wYXJlbnRzIC0gMX1dXQorCSAgICBzZXQgdGFnIFtleHByIHskZGlmZm5wYXJlbnRzID4gMT8gIm0iOiAiZCJ9XQorCSAgICBpZiB7W3N0cmluZyB0cmltICRwcmVmaXggIiAtKyJdIGVxIHt9fSB7CisJCSMgcHJlZml4IG9ubHkgaGFzICIgIiwgIi0iIGFuZCAiKyIgaW4gaXQ6IG5vcm1hbCBkaWZmIGxpbmUKKwkJc2V0IG51bSBbc3RyaW5nIGZpcnN0ICItIiAkcHJlZml4XQorCQlpZiB7JG51bSA+PSAwfSB7CisJCSAgICAjIHJlbW92ZWQgbGluZSwgZmlyc3QgcGFyZW50IHdpdGggbGluZSBpcyAkbnVtCisJCSAgICBpZiB7JG51bSA+PSAkbWVyZ2VtYXh9IHsKKwkJCXNldCBudW0gIm1heCIKKwkJICAgIH0KKwkJICAgICRjdGV4dCBpbnNlcnQgZW5kICIkbGluZVxuIiAkdGFnJG51bQorCQl9IGVsc2UgeworCQkgICAgc2V0IHRhZ3Mge30KKwkJICAgIGlmIHtbc3RyaW5nIGZpcnN0ICIrIiAkcHJlZml4XSA+PSAwfSB7CisJCQkjIGFkZGVkIGxpbmUKKwkJCWxhcHBlbmQgdGFncyAke3RhZ31yZXN1bHQKKwkJCWlmIHskZGlmZm5wYXJlbnRzID4gMX0geworCQkJICAgIHNldCBudW0gW3N0cmluZyBmaXJzdCAiICIgJHByZWZpeF0KKwkJCSAgICBpZiB7JG51bSA+PSAwfSB7CisJCQkJaWYgeyRudW0gPj0gJG1lcmdlbWF4fSB7CisJCQkJICAgIHNldCBudW0gIm1heCIKKwkJCQl9CisJCQkJbGFwcGVuZCB0YWdzIG0kbnVtCisJCQkgICAgfQorCQkJfQorCQkgICAgfQorCQkgICAgaWYgeyR0YXJnZXRsaW5lIG5lIHt9fSB7CisJCQlpZiB7JGRpZmZsaW5lID09ICR0YXJnZXRsaW5lfSB7CisJCQkgICAgc2V0IHNlZWhlcmUgWyRjdGV4dCBpbmRleCAiZW5kIC0gMSBjaGFycyJdCisJCQkgICAgc2V0IHRhcmdldGxpbmUge30KKwkJCX0gZWxzZSB7CisJCQkgICAgaW5jciBkaWZmbGluZQorCQkJfQorCQkgICAgfQorCQkgICAgJGN0ZXh0IGluc2VydCBlbmQgIiRsaW5lXG4iICR0YWdzCisJCX0KIAkgICAgfSBlbHNlIHsKIAkJIyAiXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlIiwKIAkJIyBvciBzb21ldGhpbmcgZWxzZSB3ZSBkb24ndCByZWNvZ25pemUKQEAgLTY2ODUsNiArNzQxMCw5IEBACiAJICAgIH0KIAl9CiAgICAgfQorICAgIGlmIHtbaW5mbyBleGlzdHMgc2VlaGVyZV19IHsKKwltYXJrX2N0ZXh0X2xpbmUgW2xpbmRleCBbc3BsaXQgJHNlZWhlcmUgLl0gMF0KKyAgICB9CiAgICAgJGN0ZXh0IGNvbmYgLXN0YXRlIGRpc2FibGVkCiAgICAgaWYge1tlb2YgJGJkZl19IHsKIAljbG9zZSAkYmRmCkBAIC02Njk3LDcgKzc0MjUsNyBAQAogICAgIGdsb2JhbCBjdGV4dCBkaWZmZWxpZGUKIAogICAgICRjdGV4dCB0YWcgY29uZiBkMCAtZWxpZGUgW2xpbmRleCAkZGlmZmVsaWRlIDBdCi0gICAgJGN0ZXh0IHRhZyBjb25mIGQxIC1lbGlkZSBbbGluZGV4ICRkaWZmZWxpZGUgMV0KKyAgICAkY3RleHQgdGFnIGNvbmYgZHJlc3VsdCAtZWxpZGUgW2xpbmRleCAkZGlmZmVsaWRlIDFdCiB9CiAKIHByb2MgaGlnaGxpZ2h0ZmlsZSB7bG9jIGNsaW5lfSB7CkBAIC02NzQ1LDYgKzc0NzMsNyBAQAogCiBwcm9jIGNsZWFyX2N0ZXh0IHt7Zmlyc3QgMS4wfX0gewogICAgIGdsb2JhbCBjdGV4dCBzbWFya3RvcCBzbWFya2JvdAorICAgIGdsb2JhbCBjdGV4dF9maWxlX25hbWVzIGN0ZXh0X2ZpbGVfbGluZXMKICAgICBnbG9iYWwgcGVuZGluZ2xpbmtzCiAKICAgICBzZXQgbCBbbGluZGV4IFtzcGxpdCAkZmlyc3QgLl0gMF0KQEAgLTY3NTgsNiArNzQ4Nyw4IEBACiAgICAgaWYgeyRmaXJzdCBlcSAiMS4wIn0gewogCWNhdGNoIHt1bnNldCBwZW5kaW5nbGlua3N9CiAgICAgfQorICAgIHNldCBjdGV4dF9maWxlX25hbWVzIHt9CisgICAgc2V0IGN0ZXh0X2ZpbGVfbGluZXMge30KIH0KIAogcHJvYyBzZXR0YWJzIHt7Zmlyc3RhYiB7fX19IHsKQEAgLTcwMzMsMTMgKzc3NjQsMTMgQEAKICAgICB9IGVsc2UgewogCXNldCBpZCBbc3RyaW5nIHRvbG93ZXIgJHNoYTFzdHJpbmddCiAJaWYge1tyZWdleHAge15bMC05YS1mXXs0LDM5fSR9ICRpZF19IHsKLQkgICAgc2V0IG1hdGNoZXMgW2FycmF5IG5hbWVzIHZhcmNpZCAiJGN1cnZpZXcsJGlkKiJdCisJICAgIHNldCBtYXRjaGVzIFtsb25naWQgJGlkXQogCSAgICBpZiB7JG1hdGNoZXMgbmUge319IHsKIAkJaWYge1tsbGVuZ3RoICRtYXRjaGVzXSA+IDF9IHsKIAkJICAgIGVycm9yX3BvcHVwIFttYyAiU2hvcnQgU0hBMSBpZCAlcyBpcyBhbWJpZ3VvdXMiICRpZF0KIAkJICAgIHJldHVybgogCQl9Ci0JCXNldCBpZCBbbGluZGV4IFtzcGxpdCBbbGluZGV4ICRtYXRjaGVzIDBdICIsIl0gMV0KKwkJc2V0IGlkIFtsaW5kZXggJG1hdGNoZXMgMF0KIAkgICAgfQogCX0KICAgICB9CkBAIC03MjQ5LDE2ICs3OTgwLDE2IEBACiAgICAgaWYgeyRpZCBuZSAkbnVsbGlkICYmICRpZCBuZSAkbnVsbGlkMn0gewogCXNldCBtZW51ICRyb3djdHhtZW51CiAJaWYgeyRtYWluaGVhZCBuZSB7fX0gewotCSAgICAkbWVudSBlbnRyeWNvbmZpZ3VyZSA3IC1sYWJlbCBbbWMgIlJlc2V0ICVzIGJyYW5jaCB0byBoZXJlIiAkbWFpbmhlYWRdCisJICAgICRtZW51IGVudHJ5Y29uZmlndXJlIDcgLWxhYmVsIFttYyAiUmVzZXQgJXMgYnJhbmNoIHRvIGhlcmUiICRtYWluaGVhZF0gLXN0YXRlIG5vcm1hbAogCX0gZWxzZSB7CiAJICAgICRtZW51IGVudHJ5Y29uZmlndXJlIDcgLWxhYmVsIFttYyAiRGV0YWNoZWQgaGVhZDogY2FuJ3QgcmVzZXQiICRtYWluaGVhZF0gLXN0YXRlIGRpc2FibGVkCiAJfQogICAgIH0gZWxzZSB7CiAJc2V0IG1lbnUgJGZha2Vyb3dtZW51CiAgICAgfQotICAgICRtZW51IGVudHJ5Y29uZmlndXJlIFttYyAiRGlmZiB0aGlzIC0+IHNlbGVjdGVkIl0gLXN0YXRlICRzdGF0ZQotICAgICRtZW51IGVudHJ5Y29uZmlndXJlIFttYyAiRGlmZiBzZWxlY3RlZCAtPiB0aGlzIl0gLXN0YXRlICRzdGF0ZQotICAgICRtZW51IGVudHJ5Y29uZmlndXJlIFttYyAiTWFrZSBwYXRjaCJdIC1zdGF0ZSAkc3RhdGUKKyAgICAkbWVudSBlbnRyeWNvbmZpZ3VyZSBbbWNhICJEaWZmIHRoaXMgLT4gc2VsZWN0ZWQiXSAtc3RhdGUgJHN0YXRlCisgICAgJG1lbnUgZW50cnljb25maWd1cmUgW21jYSAiRGlmZiBzZWxlY3RlZCAtPiB0aGlzIl0gLXN0YXRlICRzdGF0ZQorICAgICRtZW51IGVudHJ5Y29uZmlndXJlIFttY2EgIk1ha2UgcGF0Y2giXSAtc3RhdGUgJHN0YXRlCiAgICAgdGtfcG9wdXAgJG1lbnUgJHggJHkKIH0KIApAQCAtNzMxMiw2ICs4MDQzLDcgQEAKICAgICBzZXQgcGF0Y2h0b3AgJHRvcAogICAgIGNhdGNoIHtkZXN0cm95ICR0b3B9CiAgICAgdG9wbGV2ZWwgJHRvcAorICAgIG1ha2VfdHJhbnNpZW50ICR0b3AgLgogICAgIGxhYmVsICR0b3AudGl0bGUgLXRleHQgW21jICJHZW5lcmF0ZSBwYXRjaCJdCiAgICAgZ3JpZCAkdG9wLnRpdGxlIC0gLXBhZHkgMTAKICAgICBsYWJlbCAkdG9wLmZyb20gLXRleHQgW21jICJGcm9tOiJdCkBAIC03MzQyLDYgKzgwNzQsOCBAQAogICAgIGZyYW1lICR0b3AuYnV0cwogICAgIGJ1dHRvbiAkdG9wLmJ1dHMuZ2VuIC10ZXh0IFttYyAiR2VuZXJhdGUiXSAtY29tbWFuZCBta3BhdGNoZ28KICAgICBidXR0b24gJHRvcC5idXRzLmNhbiAtdGV4dCBbbWMgIkNhbmNlbCJdIC1jb21tYW5kIG1rcGF0Y2hjYW4KKyAgICBiaW5kICR0b3AgPEtleS1SZXR1cm4+IG1rcGF0Y2hnbworICAgIGJpbmQgJHRvcCA8S2V5LUVzY2FwZT4gbWtwYXRjaGNhbgogICAgIGdyaWQgJHRvcC5idXRzLmdlbiAkdG9wLmJ1dHMuY2FuCiAgICAgZ3JpZCBjb2x1bW5jb25maWd1cmUgJHRvcC5idXRzIDAgLXdlaWdodCAxIC11bmlmb3JtIGEKICAgICBncmlkIGNvbHVtbmNvbmZpZ3VyZSAkdG9wLmJ1dHMgMSAtd2VpZ2h0IDEgLXVuaWZvcm0gYQpAQCAtNzM3Niw3ICs4MTEwLDcgQEAKICAgICBzZXQgY21kIFtscmFuZ2UgJGNtZCAxIGVuZF0KICAgICBsYXBwZW5kIGNtZCA+JGZuYW1lICYKICAgICBpZiB7W2NhdGNoIHtldmFsIGV4ZWMgJGNtZH0gZXJyXX0gewotCWVycm9yX3BvcHVwICJbbWMgIkVycm9yIGNyZWF0aW5nIHBhdGNoOiJdICRlcnIiCisJZXJyb3JfcG9wdXAgIlttYyAiRXJyb3IgY3JlYXRpbmcgcGF0Y2g6Il0gJGVyciIgJHBhdGNodG9wCiAgICAgfQogICAgIGNhdGNoIHtkZXN0cm95ICRwYXRjaHRvcH0KICAgICB1bnNldCBwYXRjaHRvcApAQCAtNzM5Niw2ICs4MTMwLDcgQEAKICAgICBzZXQgbWt0YWd0b3AgJHRvcAogICAgIGNhdGNoIHtkZXN0cm95ICR0b3B9CiAgICAgdG9wbGV2ZWwgJHRvcAorICAgIG1ha2VfdHJhbnNpZW50ICR0b3AgLgogICAgIGxhYmVsICR0b3AudGl0bGUgLXRleHQgW21jICJDcmVhdGUgdGFnIl0KICAgICBncmlkICR0b3AudGl0bGUgLSAtcGFkeSAxMAogICAgIGxhYmVsICR0b3AuaWQgLXRleHQgW21jICJJRDoiXQpAQCAtNzQxMyw2ICs4MTQ4LDggQEAKICAgICBmcmFtZSAkdG9wLmJ1dHMKICAgICBidXR0b24gJHRvcC5idXRzLmdlbiAtdGV4dCBbbWMgIkNyZWF0ZSJdIC1jb21tYW5kIG1rdGFnZ28KICAgICBidXR0b24gJHRvcC5idXRzLmNhbiAtdGV4dCBbbWMgIkNhbmNlbCJdIC1jb21tYW5kIG1rdGFnY2FuCisgICAgYmluZCAkdG9wIDxLZXktUmV0dXJuPiBta3RhZ2dvCisgICAgYmluZCAkdG9wIDxLZXktRXNjYXBlPiBta3RhZ2NhbgogICAgIGdyaWQgJHRvcC5idXRzLmdlbiAkdG9wLmJ1dHMuY2FuCiAgICAgZ3JpZCBjb2x1bW5jb25maWd1cmUgJHRvcC5idXRzIDAgLXdlaWdodCAxIC11bmlmb3JtIGEKICAgICBncmlkIGNvbHVtbmNvbmZpZ3VyZSAkdG9wLmJ1dHMgMSAtd2VpZ2h0IDEgLXVuaWZvcm0gYQpAQCAtNzQyNiwxOCArODE2MywxOCBAQAogICAgIHNldCBpZCBbJG1rdGFndG9wLnNoYTEgZ2V0XQogICAgIHNldCB0YWcgWyRta3RhZ3RvcC50YWcgZ2V0XQogICAgIGlmIHskdGFnID09IHt9fSB7Ci0JZXJyb3JfcG9wdXAgW21jICJObyB0YWcgbmFtZSBzcGVjaWZpZWQiXQotCXJldHVybgorCWVycm9yX3BvcHVwIFttYyAiTm8gdGFnIG5hbWUgc3BlY2lmaWVkIl0gJG1rdGFndG9wCisJcmV0dXJuIDAKICAgICB9CiAgICAgaWYge1tpbmZvIGV4aXN0cyB0YWdpZHMoJHRhZyldfSB7Ci0JZXJyb3JfcG9wdXAgW21jICJUYWcgXCIlc1wiIGFscmVhZHkgZXhpc3RzIiAkdGFnXQotCXJldHVybgorCWVycm9yX3BvcHVwIFttYyAiVGFnIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIgJHRhZ10gJG1rdGFndG9wCisJcmV0dXJuIDAKICAgICB9CiAgICAgaWYge1tjYXRjaCB7CiAJZXhlYyBnaXQgdGFnICR0YWcgJGlkCiAgICAgfSBlcnJdfSB7Ci0JZXJyb3JfcG9wdXAgIlttYyAiRXJyb3IgY3JlYXRpbmcgdGFnOiJdICRlcnIiCi0JcmV0dXJuCisJZXJyb3JfcG9wdXAgIlttYyAiRXJyb3IgY3JlYXRpbmcgdGFnOiJdICRlcnIiICRta3RhZ3RvcAorCXJldHVybiAwCiAgICAgfQogCiAgICAgc2V0IHRhZ2lkcygkdGFnKSAkaWQKQEAgLTc0NDYsNiArODE4Myw3IEBACiAgICAgYWRkZWR0YWcgJGlkCiAgICAgZGlzcG5lYXJ0YWdzIDAKICAgICBydW4gcmVmaWxsX3JlZmxpc3QKKyAgICByZXR1cm4gMQogfQogCiBwcm9jIHJlZHJhd3RhZ3Mge2lkfSB7CkBAIC03NDYzLDE2ICs4MjAxLDE2IEBACiAgICAgJGNhbnYgaXRlbWNvbmYgJGNpcmNsZWl0ZW0oJHJvdykgLWZpbGwgJG9maWxsCiAgICAgJGNhbnYgZGVsZXRlIHRhZy4kaWQKICAgICBzZXQgeHQgW2V2YWwgZHJhd3RhZ3MgJGlkICRpZHBvcygkaWQpXQotICAgICRjYW52IGNvb3JkcyAkbGluZWh0YWcoJHJvdykgJHh0IFtsaW5kZXggJGlkcG9zKCRpZCkgMl0KLSAgICBzZXQgdGV4dCBbJGNhbnYgaXRlbWNnZXQgJGxpbmVodGFnKCRyb3cpIC10ZXh0XQotICAgIHNldCBmb250IFskY2FudiBpdGVtY2dldCAkbGluZWh0YWcoJHJvdykgLWZvbnRdCisgICAgJGNhbnYgY29vcmRzICRsaW5laHRhZygkaWQpICR4dCBbbGluZGV4ICRpZHBvcygkaWQpIDJdCisgICAgc2V0IHRleHQgWyRjYW52IGl0ZW1jZ2V0ICRsaW5laHRhZygkaWQpIC10ZXh0XQorICAgIHNldCBmb250IFskY2FudiBpdGVtY2dldCAkbGluZWh0YWcoJGlkKSAtZm9udF0KICAgICBzZXQgeHIgW2V4cHIgeyR4dCArIFtmb250IG1lYXN1cmUgJGZvbnQgJHRleHRdfV0KICAgICBpZiB7JHhyID4gJGNhbnZ4bWF4fSB7CiAJc2V0IGNhbnZ4bWF4ICR4cgogCXNldGNhbnZzY3JvbGwKICAgICB9CiAgICAgaWYge1tpbmZvIGV4aXN0cyBjdXJyZW50aWRdICYmICRjdXJyZW50aWQgPT0gJGlkfSB7Ci0JbWFrZV9zZWNzZWwgJHJvdworCW1ha2Vfc2Vjc2VsICRpZAogICAgIH0KIH0KIApAQCAtNzQ4NCw3ICs4MjIyLDcgQEAKIH0KIAogcHJvYyBta3RhZ2dvIHt9IHsKLSAgICBkb21rdGFnCisgICAgaWYgeyFbZG9ta3RhZ119IHJldHVybgogICAgIG1rdGFnY2FuCiB9CiAKQEAgLTc0OTUsNiArODIzMyw3IEBACiAgICAgc2V0IHdyY29tdG9wICR0b3AKICAgICBjYXRjaCB7ZGVzdHJveSAkdG9wfQogICAgIHRvcGxldmVsICR0b3AKKyAgICBtYWtlX3RyYW5zaWVudCAkdG9wIC4KICAgICBsYWJlbCAkdG9wLnRpdGxlIC10ZXh0IFttYyAiV3JpdGUgY29tbWl0IHRvIGZpbGUiXQogICAgIGdyaWQgJHRvcC50aXRsZSAtIC1wYWR5IDEwCiAgICAgbGFiZWwgJHRvcC5pZCAtdGV4dCBbbWMgIklEOiJdCkBAIC03NTE2LDYgKzgyNTUsOCBAQAogICAgIGZyYW1lICR0b3AuYnV0cwogICAgIGJ1dHRvbiAkdG9wLmJ1dHMuZ2VuIC10ZXh0IFttYyAiV3JpdGUiXSAtY29tbWFuZCB3cmNvbWdvCiAgICAgYnV0dG9uICR0b3AuYnV0cy5jYW4gLXRleHQgW21jICJDYW5jZWwiXSAtY29tbWFuZCB3cmNvbWNhbgorICAgIGJpbmQgJHRvcCA8S2V5LVJldHVybj4gd3Jjb21nbworICAgIGJpbmQgJHRvcCA8S2V5LUVzY2FwZT4gd3Jjb21jYW4KICAgICBncmlkICR0b3AuYnV0cy5nZW4gJHRvcC5idXRzLmNhbgogICAgIGdyaWQgY29sdW1uY29uZmlndXJlICR0b3AuYnV0cyAwIC13ZWlnaHQgMSAtdW5pZm9ybSBhCiAgICAgZ3JpZCBjb2x1bW5jb25maWd1cmUgJHRvcC5idXRzIDEgLXdlaWdodCAxIC11bmlmb3JtIGEKQEAgLTc1MzAsNyArODI3MSw3IEBACiAgICAgc2V0IGNtZCAiZWNobyAkaWQgfCBbJHdyY29tdG9wLmNtZCBnZXRdIgogICAgIHNldCBmbmFtZSBbJHdyY29tdG9wLmZuYW1lIGdldF0KICAgICBpZiB7W2NhdGNoIHtleGVjIHNoIC1jICRjbWQgPiRmbmFtZSAmfSBlcnJdfSB7Ci0JZXJyb3JfcG9wdXAgIlttYyAiRXJyb3Igd3JpdGluZyBjb21taXQ6Il0gJGVyciIKKwllcnJvcl9wb3B1cCAiW21jICJFcnJvciB3cml0aW5nIGNvbW1pdDoiXSAkZXJyIiAkd3Jjb210b3AKICAgICB9CiAgICAgY2F0Y2gge2Rlc3Ryb3kgJHdyY29tdG9wfQogICAgIHVuc2V0IHdyY29tdG9wCkBAIC03NTQ5LDYgKzgyOTAsNyBAQAogICAgIHNldCB0b3AgLm1ha2VicmFuY2gKICAgICBjYXRjaCB7ZGVzdHJveSAkdG9wfQogICAgIHRvcGxldmVsICR0b3AKKyAgICBtYWtlX3RyYW5zaWVudCAkdG9wIC4KICAgICBsYWJlbCAkdG9wLnRpdGxlIC10ZXh0IFttYyAiQ3JlYXRlIG5ldyBicmFuY2giXQogICAgIGdyaWQgJHRvcC50aXRsZSAtIC1wYWR5IDEwCiAgICAgbGFiZWwgJHRvcC5pZCAtdGV4dCBbbWMgIklEOiJdCkBAIC03NTYyLDYgKzgzMDQsOCBAQAogICAgIGZyYW1lICR0b3AuYnV0cwogICAgIGJ1dHRvbiAkdG9wLmJ1dHMuZ28gLXRleHQgW21jICJDcmVhdGUiXSAtY29tbWFuZCBbbGlzdCBta2JyZ28gJHRvcF0KICAgICBidXR0b24gJHRvcC5idXRzLmNhbiAtdGV4dCBbbWMgIkNhbmNlbCJdIC1jb21tYW5kICJjYXRjaCB7ZGVzdHJveSAkdG9wfSIKKyAgICBiaW5kICR0b3AgPEtleS1SZXR1cm4+IFtsaXN0IG1rYnJnbyAkdG9wXQorICAgIGJpbmQgJHRvcCA8S2V5LUVzY2FwZT4gImNhdGNoIHtkZXN0cm95ICR0b3B9IgogICAgIGdyaWQgJHRvcC5idXRzLmdvICR0b3AuYnV0cy5jYW4KICAgICBncmlkIGNvbHVtbmNvbmZpZ3VyZSAkdG9wLmJ1dHMgMCAtd2VpZ2h0IDEgLXVuaWZvcm0gYQogICAgIGdyaWQgY29sdW1uY29uZmlndXJlICR0b3AuYnV0cyAxIC13ZWlnaHQgMSAtdW5pZm9ybSBhCkBAIC03NTc0LDI5ICs4MzE4LDczIEBACiAKICAgICBzZXQgbmFtZSBbJHRvcC5uYW1lIGdldF0KICAgICBzZXQgaWQgWyR0b3Auc2hhMSBnZXRdCisgICAgc2V0IGNtZGFyZ3Mge30KKyAgICBzZXQgb2xkX2lkIHt9CiAgICAgaWYgeyRuYW1lIGVxIHt9fSB7Ci0JZXJyb3JfcG9wdXAgW21jICJQbGVhc2Ugc3BlY2lmeSBhIG5hbWUgZm9yIHRoZSBuZXcgYnJhbmNoIl0KKwllcnJvcl9wb3B1cCBbbWMgIlBsZWFzZSBzcGVjaWZ5IGEgbmFtZSBmb3IgdGhlIG5ldyBicmFuY2giXSAkdG9wCiAJcmV0dXJuCiAgICAgfQorICAgIGlmIHtbaW5mbyBleGlzdHMgaGVhZGlkcygkbmFtZSldfSB7CisJaWYgeyFbY29uZmlybV9wb3B1cCBbbWMgXAorCQkiQnJhbmNoICclcycgYWxyZWFkeSBleGlzdHMuIE92ZXJ3cml0ZT8iICRuYW1lXSAkdG9wXX0geworCSAgICByZXR1cm4KKwl9CisJc2V0IG9sZF9pZCAkaGVhZGlkcygkbmFtZSkKKwlsYXBwZW5kIGNtZGFyZ3MgLWYKKyAgICB9CiAgICAgY2F0Y2gge2Rlc3Ryb3kgJHRvcH0KKyAgICBsYXBwZW5kIGNtZGFyZ3MgJG5hbWUgJGlkCiAgICAgbm93YnVzeSBuZXdicmFuY2gKICAgICB1cGRhdGUKICAgICBpZiB7W2NhdGNoIHsKLQlleGVjIGdpdCBicmFuY2ggJG5hbWUgJGlkCisJZXZhbCBleGVjIGdpdCBicmFuY2ggJGNtZGFyZ3MKICAgICB9IGVycl19IHsKIAlub3RidXN5IG5ld2JyYW5jaAogCWVycm9yX3BvcHVwICRlcnIKICAgICB9IGVsc2UgewotCXNldCBoZWFkaWRzKCRuYW1lKSAkaWQKLQlsYXBwZW5kIGlkaGVhZHMoJGlkKSAkbmFtZQotCWFkZGVkaGVhZCAkaWQgJG5hbWUKIAlub3RidXN5IG5ld2JyYW5jaAotCXJlZHJhd3RhZ3MgJGlkCisJaWYgeyRvbGRfaWQgbmUge319IHsKKwkgICAgbW92ZWhlYWQgJGlkICRuYW1lCisJICAgIG1vdmVkaGVhZCAkaWQgJG5hbWUKKwkgICAgcmVkcmF3dGFncyAkb2xkX2lkCisJICAgIHJlZHJhd3RhZ3MgJGlkCisJfSBlbHNlIHsKKwkgICAgc2V0IGhlYWRpZHMoJG5hbWUpICRpZAorCSAgICBsYXBwZW5kIGlkaGVhZHMoJGlkKSAkbmFtZQorCSAgICBhZGRlZGhlYWQgJGlkICRuYW1lCisJICAgIHJlZHJhd3RhZ3MgJGlkCisJfQogCWRpc3BuZWFydGFncyAwCiAJcnVuIHJlZmlsbF9yZWZsaXN0CiAgICAgfQogfQogCitwcm9jIGV4ZWNfY2l0b29sIHt0b29sX2FyZ3Mge2Jhc2VpZCB7fX19IHsKKyAgICBnbG9iYWwgY29tbWl0aW5mbyBlbnYKKworICAgIHNldCBzYXZlX2VudiBbYXJyYXkgZ2V0IGVudiBHSVRfQVVUSE9SXypdCisKKyAgICBpZiB7JGJhc2VpZCBuZSB7fX0geworCWlmIHshW2luZm8gZXhpc3RzIGNvbW1pdGluZm8oJGJhc2VpZCldfSB7CisJICAgIGdldGNvbW1pdCAkYmFzZWlkCisJfQorCXNldCBhdXRob3IgW2xpbmRleCAkY29tbWl0aW5mbygkYmFzZWlkKSAxXQorCXNldCBkYXRlIFtsaW5kZXggJGNvbW1pdGluZm8oJGJhc2VpZCkgMl0KKwlpZiB7W3JlZ2V4cCB7XlxzKihcUy4qXFN8XFMpXHMqPCguKik+XHMqJH0gXAorCSAgICAgICAgICAgICRhdXRob3IgYXV0aG9yIG5hbWUgZW1haWxdCisJICAgICYmICRkYXRlIG5lIHt9fSB7CisJICAgIHNldCBlbnYoR0lUX0FVVEhPUl9OQU1FKSAkbmFtZQorCSAgICBzZXQgZW52KEdJVF9BVVRIT1JfRU1BSUwpICRlbWFpbAorCSAgICBzZXQgZW52KEdJVF9BVVRIT1JfREFURSkgJGRhdGUKKwl9CisgICAgfQorCisgICAgZXZhbCBleGVjIGdpdCBjaXRvb2wgJHRvb2xfYXJncyAmCisKKyAgICBhcnJheSB1bnNldCBlbnYgR0lUX0FVVEhPUl8qCisgICAgYXJyYXkgc2V0IGVudiAkc2F2ZV9lbnYKK30KKwogcHJvYyBjaGVycnlwaWNrIHt9IHsKICAgICBnbG9iYWwgcm93bWVudWlkIGN1cnZpZXcKICAgICBnbG9iYWwgbWFpbmhlYWQgbWFpbmhlYWRpZApAQCAtNzYxNSw3ICs4NDAzLDI2IEBACiAgICAgIyBubyBlcnJvciBvY2N1cnMsIGFuZCBleGVjIHRha2VzIHRoYXQgYXMgYW4gaW5kaWNhdGlvbiBvZiBlcnJvci4uLgogICAgIGlmIHtbY2F0Y2gge2V4ZWMgc2ggLWMgImdpdCBjaGVycnktcGljayAtciAkcm93bWVudWlkIDI+JjEifSBlcnJdfSB7CiAJbm90YnVzeSBjaGVycnlwaWNrCi0JZXJyb3JfcG9wdXAgJGVycgorCWlmIHtbcmVnZXhwIC1saW5lIFwKKwkJIHtFbnRyeSAnKC4qKScgKHdvdWxkIGJlIG92ZXJ3cml0dGVuIGJ5IG1lcmdlfG5vdCB1cHRvZGF0ZSl9IFwKKwkJICRlcnIgbXNnIGZuYW1lXX0geworCSAgICBlcnJvcl9wb3B1cCBbbWMgIkNoZXJyeS1waWNrIGZhaWxlZCBiZWNhdXNlIG9mIGxvY2FsIGNoYW5nZXNcCisJCQl0byBmaWxlICclcycuXG5QbGVhc2UgY29tbWl0LCByZXNldCBvciBzdGFzaFwKKwkJCXlvdXIgY2hhbmdlcyBhbmQgdHJ5IGFnYWluLiIgJGZuYW1lXQorCX0gZWxzZWlmIHtbcmVnZXhwIC1saW5lIFwKKwkJICAgICAgIHteKENPTkZMSUNUIFwoLipcKTp8QXV0b21hdGljIGNoZXJyeS1waWNrIGZhaWxlZCl9IFwKKwkJICAgICAgICRlcnJdfSB7CisJICAgIGlmIHtbY29uZmlybV9wb3B1cCBbbWMgIkNoZXJyeS1waWNrIGZhaWxlZCBiZWNhdXNlIG9mIG1lcmdlXAorCQkJY29uZmxpY3QuXG5EbyB5b3Ugd2lzaCB0byBydW4gZ2l0IGNpdG9vbCB0b1wKKwkJCXJlc29sdmUgaXQ/Il1dfSB7CisJCSMgRm9yY2UgY2l0b29sIHRvIHJlYWQgTUVSR0VfTVNHCisJCWZpbGUgZGVsZXRlIFtmaWxlIGpvaW4gW2dpdGRpcl0gIkdJVEdVSV9NU0ciXQorCQlleGVjX2NpdG9vbCB7fSAkcm93bWVudWlkCisJICAgIH0KKwl9IGVsc2UgeworCSAgICBlcnJvcl9wb3B1cCAkZXJyCisJfQorCXJ1biB1cGRhdGVjb21taXRzCiAJcmV0dXJuCiAgICAgfQogICAgIHNldCBuZXdoZWFkIFtleGVjIGdpdCByZXYtcGFyc2UgSEVBRF0KQEAgLTc2MjYsNiArODQzMyw3IEBACiAgICAgfQogICAgIGFkZG5ld2NoaWxkICRuZXdoZWFkICRvbGRoZWFkCiAgICAgaWYge1tjb21taXRpbnZpZXcgJG9sZGhlYWQgJGN1cnZpZXddfSB7CisJIyBYWFggdGhpcyBpc24ndCByaWdodCBpZiB3ZSBoYXZlIGEgcGF0aCBsaW1pdC4uLgogCWluc2VydHJvdyAkbmV3aGVhZCAkb2xkaGVhZCAkY3VydmlldwogCWlmIHskbWFpbmhlYWQgbmUge319IHsKIAkgICAgbW92ZWhlYWQgJG5ld2hlYWQgJG1haW5oZWFkCkBAIC03NjQ1LDcgKzg0NTMsNyBAQAogICAgIHNldCBjb25maXJtX29rIDAKICAgICBzZXQgdyAiLmNvbmZpcm1yZXNldCIKICAgICB0b3BsZXZlbCAkdwotICAgIHdtIHRyYW5zaWVudCAkdyAuCisgICAgbWFrZV90cmFuc2llbnQgJHcgLgogICAgIHdtIHRpdGxlICR3IFttYyAiQ29uZmlybSByZXNldCJdCiAgICAgbWVzc2FnZSAkdy5tIC10ZXh0IFwKIAlbbWMgIlJlc2V0IGJyYW5jaCAlcyB0byAlcz8iICRtYWluaGVhZCBbc3RyaW5nIHJhbmdlICRyb3dtZW51aWQgMCA3XV0gXApAQCAtNzY2OCw2ICs4NDc2LDcgQEAKICAgICBidXR0b24gJHcub2sgLXRleHQgW21jIE9LXSAtY29tbWFuZCAic2V0IGNvbmZpcm1fb2sgMTsgZGVzdHJveSAkdyIKICAgICBwYWNrICR3Lm9rIC1zaWRlIGxlZnQgLWZpbGwgeCAtcGFkeCAyMCAtcGFkeSAyMAogICAgIGJ1dHRvbiAkdy5jYW5jZWwgLXRleHQgW21jIENhbmNlbF0gLWNvbW1hbmQgImRlc3Ryb3kgJHciCisgICAgYmluZCAkdyA8S2V5LUVzY2FwZT4gW2xpc3QgZGVzdHJveSAkd10KICAgICBwYWNrICR3LmNhbmNlbCAtc2lkZSByaWdodCAtZmlsbCB4IC1wYWR4IDIwIC1wYWR5IDIwCiAgICAgYmluZCAkdyA8VmlzaWJpbGl0eT4gImdyYWIgJHc7IGZvY3VzICR3IgogICAgIHRrd2FpdCB3aW5kb3cgJHcKQEAgLTc3MzIsNyArODU0MSw3IEBACiAKIHByb2MgY29icmFuY2gge30gewogICAgIGdsb2JhbCBoZWFkbWVudWlkIGhlYWRtZW51aGVhZCBoZWFkaWRzCi0gICAgZ2xvYmFsIHNob3dsb2NhbGNoYW5nZXMgbWFpbmhlYWRpZAorICAgIGdsb2JhbCBzaG93bG9jYWxjaGFuZ2VzCiAKICAgICAjIGNoZWNrIHRoZSB0cmVlIGlzIGNsZWFuIGZpcnN0Pz8KICAgICBub3didXN5IGNoZWNrb3V0IFttYyAiQ2hlY2tpbmcgb3V0Il0KQEAgLTc3NTMsNiArODU2Miw3IEBACiAKIHByb2MgcmVhZGNoZWNrb3V0c3RhdCB7ZmQgbmV3aGVhZCBuZXdoZWFkaWR9IHsKICAgICBnbG9iYWwgbWFpbmhlYWQgbWFpbmhlYWRpZCBoZWFkaWRzIHNob3dsb2NhbGNoYW5nZXMgcHJvZ3Jlc3Njb29yZHMKKyAgICBnbG9iYWwgdmlld21haW5oZWFkaWQgY3VydmlldwogCiAgICAgaWYge1tnZXRzICRmZCBsaW5lXSA+PSAwfSB7CiAJaWYge1tyZWdleHAgeyhbMC05XSspJSBcKChbMC05XSspLyhbMC05XSspXCl9ICRsaW5lIG1hdGNoIHAgbSBuXX0gewpAQCAtNzc3MCw2ICs4NTgwLDcgQEAKICAgICBzZXQgb2xkbWFpbmlkICRtYWluaGVhZGlkCiAgICAgc2V0IG1haW5oZWFkICRuZXdoZWFkCiAgICAgc2V0IG1haW5oZWFkaWQgJG5ld2hlYWRpZAorICAgIHNldCB2aWV3bWFpbmhlYWRpZCgkY3VydmlldykgJG5ld2hlYWRpZAogICAgIHJlZHJhd3RhZ3MgJG9sZG1haW5pZAogICAgIHJlZHJhd3RhZ3MgJG5ld2hlYWRpZAogICAgIHNlbGJ5aWQgJG5ld2hlYWRpZApAQCAtNzgyNCw2ICs4NjM1LDcgQEAKICAgICB9CiAgICAgdG9wbGV2ZWwgJHRvcAogICAgIHdtIHRpdGxlICR0b3AgW21jICJUYWdzIGFuZCBoZWFkczogJXMiIFtmaWxlIHRhaWwgW3B3ZF1dXQorICAgIG1ha2VfdHJhbnNpZW50ICR0b3AgLgogICAgIHRleHQgJHRvcC5saXN0IC1iYWNrZ3JvdW5kICRiZ2NvbG9yIC1mb3JlZ3JvdW5kICRmZ2NvbG9yIFwKIAktc2VsZWN0YmFja2dyb3VuZCAkc2VsZWN0Ymdjb2xvciAtZm9udCBtYWluZm9udCBcCiAJLXhzY3JvbGxjb21tYW5kICIkdG9wLnhzYiBzZXQiIC15c2Nyb2xsY29tbWFuZCAiJHRvcC55c2Igc2V0IiBcCkBAIC03ODQ1LDYgKzg2NTcsNyBAQAogICAgIHBhY2sgJHRvcC5mLmwgLXNpZGUgbGVmdAogICAgIGdyaWQgJHRvcC5mIC0gLXN0aWNreSBldyAtcGFkeSAyCiAgICAgYnV0dG9uICR0b3AuY2xvc2UgLWNvbW1hbmQgW2xpc3QgZGVzdHJveSAkdG9wXSAtdGV4dCBbbWMgIkNsb3NlIl0KKyAgICBiaW5kICR0b3AgPEtleS1Fc2NhcGU+IFtsaXN0IGRlc3Ryb3kgJHRvcF0KICAgICBncmlkICR0b3AuY2xvc2UgLQogICAgIGdyaWQgY29sdW1uY29uZmlndXJlICR0b3AgMCAtd2VpZ2h0IDEKICAgICBncmlkIHJvd2NvbmZpZ3VyZSAkdG9wIDAgLXdlaWdodCAxCkBAIC03ODg2LDcgKzg2OTksNyBAQAogCiBwcm9jIHJlZmlsbF9yZWZsaXN0IHt9IHsKICAgICBnbG9iYWwgcmVmbGlzdCByZWZsaXN0ZmlsdGVyIHNob3dyZWZzdG9wIGhlYWRpZHMgdGFnaWRzIG90aGVycmVmaWRzCi0gICAgZ2xvYmFsIGN1cnZpZXcgY29tbWl0aW50ZXJlc3QKKyAgICBnbG9iYWwgY3VydmlldwogCiAgICAgaWYgeyFbaW5mbyBleGlzdHMgc2hvd3JlZnN0b3BdIHx8ICFbd2luZm8gZXhpc3RzICRzaG93cmVmc3RvcF19IHJldHVybgogICAgIHNldCByZWZzIHt9CkBAIC03ODk1LDcgKzg3MDgsNyBAQAogCSAgICBpZiB7W2NvbW1pdGludmlldyAkaGVhZGlkcygkbikgJGN1cnZpZXddfSB7CiAJCWxhcHBlbmQgcmVmcyBbbGlzdCAkbiBIXQogCSAgICB9IGVsc2UgewotCQlzZXQgY29tbWl0aW50ZXJlc3QoJGhlYWRpZHMoJG4pKSB7cnVuIHJlZmlsbF9yZWZsaXN0fQorCQlpbnRlcmVzdGVkaW4gJGhlYWRpZHMoJG4pIHtydW4gcmVmaWxsX3JlZmxpc3R9CiAJICAgIH0KIAl9CiAgICAgfQpAQCAtNzkwNCw3ICs4NzE3LDcgQEAKIAkgICAgaWYge1tjb21taXRpbnZpZXcgJHRhZ2lkcygkbikgJGN1cnZpZXddfSB7CiAJCWxhcHBlbmQgcmVmcyBbbGlzdCAkbiBUXQogCSAgICB9IGVsc2UgewotCQlzZXQgY29tbWl0aW50ZXJlc3QoJHRhZ2lkcygkbikpIHtydW4gcmVmaWxsX3JlZmxpc3R9CisJCWludGVyZXN0ZWRpbiAkdGFnaWRzKCRuKSB7cnVuIHJlZmlsbF9yZWZsaXN0fQogCSAgICB9CiAJfQogICAgIH0KQEAgLTc5MTMsNyArODcyNiw3IEBACiAJICAgIGlmIHtbY29tbWl0aW52aWV3ICRvdGhlcnJlZmlkcygkbikgJGN1cnZpZXddfSB7CiAJCWxhcHBlbmQgcmVmcyBbbGlzdCAkbiBvXQogCSAgICB9IGVsc2UgewotCQlzZXQgY29tbWl0aW50ZXJlc3QoJG90aGVycmVmaWRzKCRuKSkge3J1biByZWZpbGxfcmVmbGlzdH0KKwkJaW50ZXJlc3RlZGluICRvdGhlcnJlZmlkcygkbikge3J1biByZWZpbGxfcmVmbGlzdH0KIAkgICAgfQogCX0KICAgICB9CkBAIC05MTUwLDYgKzk5NjMsNyBAQAogCiBwcm9jIGNob29zZWZvbnQge2ZvbnQgd2hpY2h9IHsKICAgICBnbG9iYWwgZm9udHBhcmFtIGZvbnRsaXN0IGZvbnR0b3AgZm9udGF0dHIKKyAgICBnbG9iYWwgcHJlZnN0b3AKIAogICAgIHNldCBmb250cGFyYW0od2hpY2gpICR3aGljaAogICAgIHNldCBmb250cGFyYW0oZm9udCkgJGZvbnQKQEAgLTkxNjMsNiArOTk3Nyw3IEBACiAJZm9udCBjcmVhdGUgc2FtcGxlCiAJZXZhbCBmb250IGNvbmZpZyBzYW1wbGUgW2ZvbnQgYWN0dWFsICRmb250XQogCXRvcGxldmVsICR0b3AKKwltYWtlX3RyYW5zaWVudCAkdG9wICRwcmVmc3RvcAogCXdtIHRpdGxlICR0b3AgW21jICJHaXRrIGZvbnQgY2hvb3NlciJdCiAJbGFiZWwgJHRvcC5sIC10ZXh0dmFyaWFibGUgZm9udHBhcmFtKHdoaWNoKQogCXBhY2sgJHRvcC5sIC1zaWRlIHRvcApAQCAtOTE5Niw2ICsxMDAxMSw4IEBACiAJZnJhbWUgJHRvcC5idXRzCiAJYnV0dG9uICR0b3AuYnV0cy5vayAtdGV4dCBbbWMgIk9LIl0gLWNvbW1hbmQgZm9udG9rIC1kZWZhdWx0IGFjdGl2ZQogCWJ1dHRvbiAkdG9wLmJ1dHMuY2FuIC10ZXh0IFttYyAiQ2FuY2VsIl0gLWNvbW1hbmQgZm9udGNhbiAtZGVmYXVsdCBub3JtYWwKKwliaW5kICR0b3AgPEtleS1SZXR1cm4+IGZvbnRvaworCWJpbmQgJHRvcCA8S2V5LUVzY2FwZT4gZm9udGNhbgogCWdyaWQgJHRvcC5idXRzLm9rICR0b3AuYnV0cy5jYW4KIAlncmlkIGNvbHVtbmNvbmZpZ3VyZSAkdG9wLmJ1dHMgMCAtd2VpZ2h0IDEgLXVuaWZvcm0gYQogCWdyaWQgY29sdW1uY29uZmlndXJlICR0b3AuYnV0cyAxIC13ZWlnaHQgMSAtdW5pZm9ybSBhCkBAIC05MjYyLDggKzEwMDc5LDggQEAKIHByb2MgZG9wcmVmcyB7fSB7CiAgICAgZ2xvYmFsIG1heHdpZHRoIG1heGdyYXBocGN0CiAgICAgZ2xvYmFsIG9sZHByZWZzIHByZWZzdG9wIHNob3duZWFydGFncyBzaG93bG9jYWxjaGFuZ2VzCi0gICAgZ2xvYmFsIGJnY29sb3IgZmdjb2xvciBjdGV4dCBkaWZmY29sb3JzIHNlbGVjdGJnY29sb3IKLSAgICBnbG9iYWwgdGFic3RvcCBsaW1pdGRpZmZzIGF1dG9zZWxlY3QgZXh0ZGlmZnRvb2wKKyAgICBnbG9iYWwgYmdjb2xvciBmZ2NvbG9yIGN0ZXh0IGRpZmZjb2xvcnMgc2VsZWN0Ymdjb2xvciBtYXJrYmdjb2xvcgorICAgIGdsb2JhbCB0YWJzdG9wIGxpbWl0ZGlmZnMgYXV0b3NlbGVjdCBleHRkaWZmdG9vbCBwZXJmaWxlX2F0dHJzCiAKICAgICBzZXQgdG9wIC5naXRrcHJlZnMKICAgICBzZXQgcHJlZnN0b3AgJHRvcApAQCAtOTI3MiwxMSArMTAwODksMTIgQEAKIAlyZXR1cm4KICAgICB9CiAgICAgZm9yZWFjaCB2IHttYXh3aWR0aCBtYXhncmFwaHBjdCBzaG93bmVhcnRhZ3Mgc2hvd2xvY2FsY2hhbmdlcyBcCi0JCSAgIGxpbWl0ZGlmZnMgdGFic3RvcH0geworCQkgICBsaW1pdGRpZmZzIHRhYnN0b3AgcGVyZmlsZV9hdHRyc30gewogCXNldCBvbGRwcmVmcygkdikgW3NldCAkdl0KICAgICB9CiAgICAgdG9wbGV2ZWwgJHRvcAogICAgIHdtIHRpdGxlICR0b3AgW21jICJHaXRrIHByZWZlcmVuY2VzIl0KKyAgICBtYWtlX3RyYW5zaWVudCAkdG9wIC4KICAgICBsYWJlbCAkdG9wLmxkaXNwIC10ZXh0IFttYyAiQ29tbWl0IGxpc3QgZGlzcGxheSBvcHRpb25zIl0KICAgICBncmlkICR0b3AubGRpc3AgLSAtc3RpY2t5IHcgLXBhZHkgMTAKICAgICBsYWJlbCAkdG9wLnNwYWNlciAtdGV4dCAiICIKQEAgLTkyODgsMTUgKzEwMTA2LDExIEBACiAJLWZvbnQgb3B0aW9uZm9udAogICAgIHNwaW5ib3ggJHRvcC5tYXhwY3QgLWZyb20gMSAtdG8gMTAwIC13aWR0aCA0IC10ZXh0dmFyaWFibGUgbWF4Z3JhcGhwY3QKICAgICBncmlkIHggJHRvcC5tYXhwY3RsICR0b3AubWF4cGN0IC1zdGlja3kgdwotICAgIGZyYW1lICR0b3Auc2hvd2xvY2FsCi0gICAgbGFiZWwgJHRvcC5zaG93bG9jYWwubCAtdGV4dCBbbWMgIlNob3cgbG9jYWwgY2hhbmdlcyJdIC1mb250IG9wdGlvbmZvbnQKLSAgICBjaGVja2J1dHRvbiAkdG9wLnNob3dsb2NhbC5iIC12YXJpYWJsZSBzaG93bG9jYWxjaGFuZ2VzCi0gICAgcGFjayAkdG9wLnNob3dsb2NhbC5iICR0b3Auc2hvd2xvY2FsLmwgLXNpZGUgbGVmdAorICAgIGNoZWNrYnV0dG9uICR0b3Auc2hvd2xvY2FsIC10ZXh0IFttYyAiU2hvdyBsb2NhbCBjaGFuZ2VzIl0gXAorCS1mb250IG9wdGlvbmZvbnQgLXZhcmlhYmxlIHNob3dsb2NhbGNoYW5nZXMKICAgICBncmlkIHggJHRvcC5zaG93bG9jYWwgLXN0aWNreSB3Ci0gICAgZnJhbWUgJHRvcC5hdXRvc2VsZWN0Ci0gICAgbGFiZWwgJHRvcC5hdXRvc2VsZWN0LmwgLXRleHQgW21jICJBdXRvLXNlbGVjdCBTSEExIl0gLWZvbnQgb3B0aW9uZm9udAotICAgIGNoZWNrYnV0dG9uICR0b3AuYXV0b3NlbGVjdC5iIC12YXJpYWJsZSBhdXRvc2VsZWN0Ci0gICAgcGFjayAkdG9wLmF1dG9zZWxlY3QuYiAkdG9wLmF1dG9zZWxlY3QubCAtc2lkZSBsZWZ0CisgICAgY2hlY2tidXR0b24gJHRvcC5hdXRvc2VsZWN0IC10ZXh0IFttYyAiQXV0by1zZWxlY3QgU0hBMSJdIFwKKwktZm9udCBvcHRpb25mb250IC12YXJpYWJsZSBhdXRvc2VsZWN0CiAgICAgZ3JpZCB4ICR0b3AuYXV0b3NlbGVjdCAtc3RpY2t5IHcKIAogICAgIGxhYmVsICR0b3AuZGRpc3AgLXRleHQgW21jICJEaWZmIGRpc3BsYXkgb3B0aW9ucyJdCkBAIC05MzA0LDE2ICsxMDExOCwxNSBAQAogICAgIGxhYmVsICR0b3AudGFic3RvcGwgLXRleHQgW21jICJUYWIgc3BhY2luZyJdIC1mb250IG9wdGlvbmZvbnQKICAgICBzcGluYm94ICR0b3AudGFic3RvcCAtZnJvbSAxIC10byAyMCAtd2lkdGggNCAtdGV4dHZhcmlhYmxlIHRhYnN0b3AKICAgICBncmlkIHggJHRvcC50YWJzdG9wbCAkdG9wLnRhYnN0b3AgLXN0aWNreSB3Ci0gICAgZnJhbWUgJHRvcC5udGFnCi0gICAgbGFiZWwgJHRvcC5udGFnLmwgLXRleHQgW21jICJEaXNwbGF5IG5lYXJieSB0YWdzIl0gLWZvbnQgb3B0aW9uZm9udAotICAgIGNoZWNrYnV0dG9uICR0b3AubnRhZy5iIC12YXJpYWJsZSBzaG93bmVhcnRhZ3MKLSAgICBwYWNrICR0b3AubnRhZy5iICR0b3AubnRhZy5sIC1zaWRlIGxlZnQKKyAgICBjaGVja2J1dHRvbiAkdG9wLm50YWcgLXRleHQgW21jICJEaXNwbGF5IG5lYXJieSB0YWdzIl0gXAorCS1mb250IG9wdGlvbmZvbnQgLXZhcmlhYmxlIHNob3duZWFydGFncwogICAgIGdyaWQgeCAkdG9wLm50YWcgLXN0aWNreSB3Ci0gICAgZnJhbWUgJHRvcC5sZGlmZgotICAgIGxhYmVsICR0b3AubGRpZmYubCAtdGV4dCBbbWMgIkxpbWl0IGRpZmZzIHRvIGxpc3RlZCBwYXRocyJdIC1mb250IG9wdGlvbmZvbnQKLSAgICBjaGVja2J1dHRvbiAkdG9wLmxkaWZmLmIgLXZhcmlhYmxlIGxpbWl0ZGlmZnMKLSAgICBwYWNrICR0b3AubGRpZmYuYiAkdG9wLmxkaWZmLmwgLXNpZGUgbGVmdAorICAgIGNoZWNrYnV0dG9uICR0b3AubGRpZmYgLXRleHQgW21jICJMaW1pdCBkaWZmcyB0byBsaXN0ZWQgcGF0aHMiXSBcCisJLWZvbnQgb3B0aW9uZm9udCAtdmFyaWFibGUgbGltaXRkaWZmcwogICAgIGdyaWQgeCAkdG9wLmxkaWZmIC1zdGlja3kgdworICAgIGNoZWNrYnV0dG9uICR0b3AubGF0dHIgLXRleHQgW21jICJTdXBwb3J0IHBlci1maWxlIGVuY29kaW5ncyJdIFwKKwktZm9udCBvcHRpb25mb250IC12YXJpYWJsZSBwZXJmaWxlX2F0dHJzCisgICAgZ3JpZCB4ICR0b3AubGF0dHIgLXN0aWNreSB3CiAKICAgICBlbnRyeSAkdG9wLmV4dGRpZmZ0IC10ZXh0dmFyaWFibGUgZXh0ZGlmZnRvb2wKICAgICBmcmFtZSAkdG9wLmV4dGRpZmZmCkBAIC05MzI4LDMxICsxMDE0MSwzNyBAQAogICAgIGdyaWQgJHRvcC5jZGlzcCAtIC1zdGlja3kgdyAtcGFkeSAxMAogICAgIGxhYmVsICR0b3AuYmcgLXBhZHggNDAgLXJlbGllZiBzdW5rIC1iYWNrZ3JvdW5kICRiZ2NvbG9yCiAgICAgYnV0dG9uICR0b3AuYmdidXQgLXRleHQgW21jICJCYWNrZ3JvdW5kIl0gLWZvbnQgb3B0aW9uZm9udCBcCi0JLWNvbW1hbmQgW2xpc3QgY2hvb3NlY29sb3IgYmdjb2xvciB7fSAkdG9wLmJnIGJhY2tncm91bmQgc2V0YmddCisJLWNvbW1hbmQgW2xpc3QgY2hvb3NlY29sb3IgYmdjb2xvciB7fSAkdG9wLmJnIFttYyAiYmFja2dyb3VuZCJdIHNldGJnXQogICAgIGdyaWQgeCAkdG9wLmJnYnV0ICR0b3AuYmcgLXN0aWNreSB3CiAgICAgbGFiZWwgJHRvcC5mZyAtcGFkeCA0MCAtcmVsaWVmIHN1bmsgLWJhY2tncm91bmQgJGZnY29sb3IKICAgICBidXR0b24gJHRvcC5mZ2J1dCAtdGV4dCBbbWMgIkZvcmVncm91bmQiXSAtZm9udCBvcHRpb25mb250IFwKLQktY29tbWFuZCBbbGlzdCBjaG9vc2Vjb2xvciBmZ2NvbG9yIHt9ICR0b3AuZmcgZm9yZWdyb3VuZCBzZXRmZ10KKwktY29tbWFuZCBbbGlzdCBjaG9vc2Vjb2xvciBmZ2NvbG9yIHt9ICR0b3AuZmcgW21jICJmb3JlZ3JvdW5kIl0gc2V0ZmddCiAgICAgZ3JpZCB4ICR0b3AuZmdidXQgJHRvcC5mZyAtc3RpY2t5IHcKICAgICBsYWJlbCAkdG9wLmRpZmZvbGQgLXBhZHggNDAgLXJlbGllZiBzdW5rIC1iYWNrZ3JvdW5kIFtsaW5kZXggJGRpZmZjb2xvcnMgMF0KICAgICBidXR0b24gJHRvcC5kaWZmb2xkYnV0IC10ZXh0IFttYyAiRGlmZjogb2xkIGxpbmVzIl0gLWZvbnQgb3B0aW9uZm9udCBcCi0JLWNvbW1hbmQgW2xpc3QgY2hvb3NlY29sb3IgZGlmZmNvbG9ycyAwICR0b3AuZGlmZm9sZCAiZGlmZiBvbGQgbGluZXMiIFwKKwktY29tbWFuZCBbbGlzdCBjaG9vc2Vjb2xvciBkaWZmY29sb3JzIDAgJHRvcC5kaWZmb2xkIFttYyAiZGlmZiBvbGQgbGluZXMiXSBcCiAJCSAgICAgIFtsaXN0ICRjdGV4dCB0YWcgY29uZiBkMCAtZm9yZWdyb3VuZF1dCiAgICAgZ3JpZCB4ICR0b3AuZGlmZm9sZGJ1dCAkdG9wLmRpZmZvbGQgLXN0aWNreSB3CiAgICAgbGFiZWwgJHRvcC5kaWZmbmV3IC1wYWR4IDQwIC1yZWxpZWYgc3VuayAtYmFja2dyb3VuZCBbbGluZGV4ICRkaWZmY29sb3JzIDFdCiAgICAgYnV0dG9uICR0b3AuZGlmZm5ld2J1dCAtdGV4dCBbbWMgIkRpZmY6IG5ldyBsaW5lcyJdIC1mb250IG9wdGlvbmZvbnQgXAotCS1jb21tYW5kIFtsaXN0IGNob29zZWNvbG9yIGRpZmZjb2xvcnMgMSAkdG9wLmRpZmZuZXcgImRpZmYgbmV3IGxpbmVzIiBcCi0JCSAgICAgIFtsaXN0ICRjdGV4dCB0YWcgY29uZiBkMSAtZm9yZWdyb3VuZF1dCisJLWNvbW1hbmQgW2xpc3QgY2hvb3NlY29sb3IgZGlmZmNvbG9ycyAxICR0b3AuZGlmZm5ldyBbbWMgImRpZmYgbmV3IGxpbmVzIl0gXAorCQkgICAgICBbbGlzdCAkY3RleHQgdGFnIGNvbmYgZHJlc3VsdCAtZm9yZWdyb3VuZF1dCiAgICAgZ3JpZCB4ICR0b3AuZGlmZm5ld2J1dCAkdG9wLmRpZmZuZXcgLXN0aWNreSB3CiAgICAgbGFiZWwgJHRvcC5odW5rc2VwIC1wYWR4IDQwIC1yZWxpZWYgc3VuayAtYmFja2dyb3VuZCBbbGluZGV4ICRkaWZmY29sb3JzIDJdCiAgICAgYnV0dG9uICR0b3AuaHVua3NlcGJ1dCAtdGV4dCBbbWMgIkRpZmY6IGh1bmsgaGVhZGVyIl0gLWZvbnQgb3B0aW9uZm9udCBcCiAJLWNvbW1hbmQgW2xpc3QgY2hvb3NlY29sb3IgZGlmZmNvbG9ycyAyICR0b3AuaHVua3NlcCBcCi0JCSAgICAgICJkaWZmIGh1bmsgaGVhZGVyIiBcCisJCSAgICAgIFttYyAiZGlmZiBodW5rIGhlYWRlciJdIFwKIAkJICAgICAgW2xpc3QgJGN0ZXh0IHRhZyBjb25mIGh1bmtzZXAgLWZvcmVncm91bmRdXQogICAgIGdyaWQgeCAkdG9wLmh1bmtzZXBidXQgJHRvcC5odW5rc2VwIC1zdGlja3kgdworICAgIGxhYmVsICR0b3AubWFya2Jnc2VwIC1wYWR4IDQwIC1yZWxpZWYgc3VuayAtYmFja2dyb3VuZCAkbWFya2JnY29sb3IKKyAgICBidXR0b24gJHRvcC5tYXJrYmdidXQgLXRleHQgW21jICJNYXJrZWQgbGluZSBiZyJdIC1mb250IG9wdGlvbmZvbnQgXAorCS1jb21tYW5kIFtsaXN0IGNob29zZWNvbG9yIG1hcmtiZ2NvbG9yIHt9ICR0b3AubWFya2Jnc2VwIFwKKwkJICAgICAgW21jICJtYXJrZWQgbGluZSBiYWNrZ3JvdW5kIl0gXAorCQkgICAgICBbbGlzdCAkY3RleHQgdGFnIGNvbmYgb21hcmsgLWJhY2tncm91bmRdXQorICAgIGdyaWQgeCAkdG9wLm1hcmtiZ2J1dCAkdG9wLm1hcmtiZ3NlcCAtc3RpY2t5IHcKICAgICBsYWJlbCAkdG9wLnNlbGJnc2VwIC1wYWR4IDQwIC1yZWxpZWYgc3VuayAtYmFja2dyb3VuZCAkc2VsZWN0Ymdjb2xvcgogICAgIGJ1dHRvbiAkdG9wLnNlbGJnYnV0IC10ZXh0IFttYyAiU2VsZWN0IGJnIl0gLWZvbnQgb3B0aW9uZm9udCBcCi0JLWNvbW1hbmQgW2xpc3QgY2hvb3NlY29sb3Igc2VsZWN0Ymdjb2xvciB7fSAkdG9wLnNlbGJnc2VwIGJhY2tncm91bmQgc2V0c2VsYmddCisJLWNvbW1hbmQgW2xpc3QgY2hvb3NlY29sb3Igc2VsZWN0Ymdjb2xvciB7fSAkdG9wLnNlbGJnc2VwIFttYyAiYmFja2dyb3VuZCJdIHNldHNlbGJnXQogICAgIGdyaWQgeCAkdG9wLnNlbGJnYnV0ICR0b3Auc2VsYmdzZXAgLXN0aWNreSB3CiAKICAgICBsYWJlbCAkdG9wLmNmb250IC10ZXh0IFttYyAiRm9udHM6IHByZXNzIHRvIGNob29zZSJdCkBAIC05MzY0LDYgKzEwMTgzLDggQEAKICAgICBmcmFtZSAkdG9wLmJ1dHMKICAgICBidXR0b24gJHRvcC5idXRzLm9rIC10ZXh0IFttYyAiT0siXSAtY29tbWFuZCBwcmVmc29rIC1kZWZhdWx0IGFjdGl2ZQogICAgIGJ1dHRvbiAkdG9wLmJ1dHMuY2FuIC10ZXh0IFttYyAiQ2FuY2VsIl0gLWNvbW1hbmQgcHJlZnNjYW4gLWRlZmF1bHQgbm9ybWFsCisgICAgYmluZCAkdG9wIDxLZXktUmV0dXJuPiBwcmVmc29rCisgICAgYmluZCAkdG9wIDxLZXktRXNjYXBlPiBwcmVmc2NhbgogICAgIGdyaWQgJHRvcC5idXRzLm9rICR0b3AuYnV0cy5jYW4KICAgICBncmlkIGNvbHVtbmNvbmZpZ3VyZSAkdG9wLmJ1dHMgMCAtd2VpZ2h0IDEgLXVuaWZvcm0gYQogICAgIGdyaWQgY29sdW1uY29uZmlndXJlICR0b3AuYnV0cyAxIC13ZWlnaHQgMSAtdW5pZm9ybSBhCkBAIC05NDIzLDcgKzEwMjQ0LDcgQEAKICAgICBnbG9iYWwgb2xkcHJlZnMgcHJlZnN0b3AKIAogICAgIGZvcmVhY2ggdiB7bWF4d2lkdGggbWF4Z3JhcGhwY3Qgc2hvd25lYXJ0YWdzIHNob3dsb2NhbGNoYW5nZXMgXAotCQkgICBsaW1pdGRpZmZzIHRhYnN0b3B9IHsKKwkJICAgbGltaXRkaWZmcyB0YWJzdG9wIHBlcmZpbGVfYXR0cnN9IHsKIAlnbG9iYWwgJHYKIAlzZXQgJHYgJG9sZHByZWZzKCR2KQogICAgIH0KQEAgLTk0MzYsNyArMTAyNTcsNyBAQAogICAgIGdsb2JhbCBtYXh3aWR0aCBtYXhncmFwaHBjdAogICAgIGdsb2JhbCBvbGRwcmVmcyBwcmVmc3RvcCBzaG93bmVhcnRhZ3Mgc2hvd2xvY2FsY2hhbmdlcwogICAgIGdsb2JhbCBmb250cHJlZiBtYWluZm9udCB0ZXh0Zm9udCB1aWZvbnQKLSAgICBnbG9iYWwgbGltaXRkaWZmcyB0cmVlZGlmZnMKKyAgICBnbG9iYWwgbGltaXRkaWZmcyB0cmVlZGlmZnMgcGVyZmlsZV9hdHRycwogCiAgICAgY2F0Y2gge2Rlc3Ryb3kgJHByZWZzdG9wfQogICAgIHVuc2V0IHByZWZzdG9wCkBAIC05NDY5LDggKzEwMjkwLDEwIEBACiAJICAgIGRvaGlkZWxvY2FsY2hhbmdlcwogCX0KICAgICB9Ci0gICAgaWYgeyRsaW1pdGRpZmZzICE9ICRvbGRwcmVmcyhsaW1pdGRpZmZzKX0gewotCSMgdHJlZWRpZmZzIGVsZW1lbnRzIGFyZSBsaW1pdGVkIGJ5IHBhdGgKKyAgICBpZiB7JGxpbWl0ZGlmZnMgIT0gJG9sZHByZWZzKGxpbWl0ZGlmZnMpIHx8CisJKCRwZXJmaWxlX2F0dHJzICYmICEkb2xkcHJlZnMocGVyZmlsZV9hdHRycykpfSB7CisJIyB0cmVlZGlmZnMgZWxlbWVudHMgYXJlIGxpbWl0ZWQgYnkgcGF0aDsKKwkjIHdvbid0IGhhdmUgZW5jb2RpbmdzIGNhY2hlZCBpZiBwZXJmaWxlX2F0dHJzIHdhcyBqdXN0IHR1cm5lZCBvbgogCWNhdGNoIHt1bnNldCB0cmVlZGlmZnN9CiAgICAgfQogICAgIGlmIHskZm9udGNoYW5nZWQgfHwgJG1heHdpZHRoICE9ICRvbGRwcmVmcyhtYXh3aWR0aCkKQEAgLTk2OTQsNyArMTA1MTcsNyBAQAogICAgIHsgSVNPLTg4NTktMTYgaXNvLWlyLTIyNiBJU09fODg1OS0xNjoyMDAxIElTT184ODU5LTE2IGxhdGluMTAgbDEwIH0KICAgICB7IEdCSyBDUDkzNiBNUzkzNiB3aW5kb3dzLTkzNiB9CiAgICAgeyBKSVNfRW5jb2RpbmcgY3NKSVNFbmNvZGluZyB9Ci0gICAgeyBTaGlmdF9KSVMgTVNfS2FuamkgY3NTaGlmdEpJUyB9CisgICAgeyBTaGlmdF9KSVMgTVNfS2FuamkgY3NTaGlmdEpJUyBTaGlmdEpJUyBTaGlmdC1KSVMgfQogICAgIHsgRXh0ZW5kZWRfVU5JWF9Db2RlX1BhY2tlZF9Gb3JtYXRfZm9yX0phcGFuZXNlIGNzRVVDUGtkRm10SmFwYW5lc2UKICAgICAgIEVVQy1KUCB9CiAgICAgeyBFeHRlbmRlZF9VTklYX0NvZGVfRml4ZWRfV2lkdGhfZm9yX0phcGFuZXNlIGNzRVVDRml4V2lkSmFwYW5lc2UgfQpAQCAtOTcyOSwxNCArMTA1NTIsMTcgQEAKIH0KIAogcHJvYyB0Y2xfZW5jb2Rpbmcge2VuY30gewotICAgIGdsb2JhbCBlbmNvZGluZ19hbGlhc2VzCisgICAgZ2xvYmFsIGVuY29kaW5nX2FsaWFzZXMgdGNsX2VuY29kaW5nX2NhY2hlCisgICAgaWYge1tpbmZvIGV4aXN0cyB0Y2xfZW5jb2RpbmdfY2FjaGUoJGVuYyldfSB7CisJcmV0dXJuICR0Y2xfZW5jb2RpbmdfY2FjaGUoJGVuYykKKyAgICB9CiAgICAgc2V0IG5hbWVzIFtlbmNvZGluZyBuYW1lc10KICAgICBzZXQgbGNuYW1lcyBbc3RyaW5nIHRvbG93ZXIgJG5hbWVzXQogICAgIHNldCBlbmMgW3N0cmluZyB0b2xvd2VyICRlbmNdCiAgICAgc2V0IGkgW2xzZWFyY2ggLWV4YWN0ICRsY25hbWVzICRlbmNdCiAgICAgaWYgeyRpIDwgMH0gewogCSMgbG9vayBmb3IgImlzb25ubiIgaW5zdGVhZCBvZiAiaXNvLW5ubiIgb3IgImlzb19ubm4iCi0JaWYge1tyZWdzdWIge15pc29bLV9dfSAkZW5jIGlzbyBlbmN4XX0geworCWlmIHtbcmVnc3ViIHteKGlzb3xjcHxpYm18amlzKVstX119ICRlbmMge1wxfSBlbmN4XX0gewogCSAgICBzZXQgaSBbbHNlYXJjaCAtZXhhY3QgJGxjbmFtZXMgJGVuY3hdCiAJfQogICAgIH0KQEAgLTk3NDgsNyArMTA1NzQsNyBAQAogCSAgICBmb3JlYWNoIGUgJGxsIHsKIAkJc2V0IGkgW2xzZWFyY2ggLWV4YWN0ICRsY25hbWVzICRlXQogCQlpZiB7JGkgPCAwfSB7Ci0JCSAgICBpZiB7W3JlZ3N1YiB7Xmlzb1stX119ICRlIGlzbyBleF19IHsKKwkJICAgIGlmIHtbcmVnc3ViIHteKGlzb3xjcHxpYm18amlzKVstX119ICRlIHtcMX0gZXhdfSB7CiAJCQlzZXQgaSBbbHNlYXJjaCAtZXhhY3QgJGxjbmFtZXMgJGV4XQogCQkgICAgfQogCQl9CkBAIC05NzU3LDEwICsxMDU4Myw3MCBAQAogCSAgICBicmVhawogCX0KICAgICB9CisgICAgc2V0IHRjbGVuYyB7fQogICAgIGlmIHskaSA+PSAwfSB7Ci0JcmV0dXJuIFtsaW5kZXggJG5hbWVzICRpXQorCXNldCB0Y2xlbmMgW2xpbmRleCAkbmFtZXMgJGldCiAgICAgfQotICAgIHJldHVybiB7fQorICAgIHNldCB0Y2xfZW5jb2RpbmdfY2FjaGUoJGVuYykgJHRjbGVuYworICAgIHJldHVybiAkdGNsZW5jCit9CisKK3Byb2MgZ2l0YXR0ciB7cGF0aCBhdHRyIGRlZmF1bHR9IHsKKyAgICBnbG9iYWwgcGF0aF9hdHRyX2NhY2hlCisgICAgaWYge1tpbmZvIGV4aXN0cyBwYXRoX2F0dHJfY2FjaGUoJGF0dHIsJHBhdGgpXX0geworCXNldCByICRwYXRoX2F0dHJfY2FjaGUoJGF0dHIsJHBhdGgpCisgICAgfSBlbHNlIHsKKwlzZXQgciAidW5zcGVjaWZpZWQiCisJaWYgeyFbY2F0Y2gge3NldCBsaW5lIFtleGVjIGdpdCBjaGVjay1hdHRyICRhdHRyIC0tICRwYXRoXX1dfSB7CisJICAgIHJlZ2V4cCAiKC4qKTogZW5jb2Rpbmc6ICguKikiICRsaW5lIG0gZiByCisJfQorCXNldCBwYXRoX2F0dHJfY2FjaGUoJGF0dHIsJHBhdGgpICRyCisgICAgfQorICAgIGlmIHskciBlcSAidW5zcGVjaWZpZWQifSB7CisJcmV0dXJuICRkZWZhdWx0CisgICAgfQorICAgIHJldHVybiAkcgorfQorCitwcm9jIGNhY2hlX2dpdGF0dHIge2F0dHIgcGF0aGxpc3R9IHsKKyAgICBnbG9iYWwgcGF0aF9hdHRyX2NhY2hlCisgICAgc2V0IG5ld2xpc3Qge30KKyAgICBmb3JlYWNoIHBhdGggJHBhdGhsaXN0IHsKKwlpZiB7IVtpbmZvIGV4aXN0cyBwYXRoX2F0dHJfY2FjaGUoJGF0dHIsJHBhdGgpXX0geworCSAgICBsYXBwZW5kIG5ld2xpc3QgJHBhdGgKKwl9CisgICAgfQorICAgIHNldCBsaW0gMTAwMAorICAgIGlmIHtbdGsgd2luZG93aW5nc3lzdGVtXSA9PSAid2luMzIifSB7CisJIyB3aW5kb3dzIGhhcyBhIDMyayBsaW1pdCBvbiB0aGUgYXJndW1lbnRzIHRvIGEgY29tbWFuZC4uLgorCXNldCBsaW0gMzAKKyAgICB9CisgICAgd2hpbGUgeyRuZXdsaXN0IG5lIHt9fSB7CisJc2V0IGhlYWQgW2xyYW5nZSAkbmV3bGlzdCAwIFtleHByIHskbGltIC0gMX1dXQorCXNldCBuZXdsaXN0IFtscmFuZ2UgJG5ld2xpc3QgJGxpbSBlbmRdCisJaWYgeyFbY2F0Y2gge3NldCBybGlzdCBbZXZhbCBleGVjIGdpdCBjaGVjay1hdHRyICRhdHRyIC0tICRoZWFkXX1dfSB7CisJICAgIGZvcmVhY2ggcm93IFtzcGxpdCAkcmxpc3QgIlxuIl0geworCQlpZiB7W3JlZ2V4cCAiKC4qKTogZW5jb2Rpbmc6ICguKikiICRyb3cgbSBwYXRoIHZhbHVlXX0geworCQkgICAgaWYge1tzdHJpbmcgaW5kZXggJHBhdGggMF0gZXEgIlwiIn0geworCQkJc2V0IHBhdGggW2VuY29kaW5nIGNvbnZlcnRmcm9tIFtsaW5kZXggJHBhdGggMF1dCisJCSAgICB9CisJCSAgICBzZXQgcGF0aF9hdHRyX2NhY2hlKCRhdHRyLCRwYXRoKSAkdmFsdWUKKwkJfQorCSAgICB9CisJfQorICAgIH0KK30KKworcHJvYyBnZXRfcGF0aF9lbmNvZGluZyB7cGF0aH0geworICAgIGdsb2JhbCBndWlfZW5jb2RpbmcgcGVyZmlsZV9hdHRycworICAgIHNldCB0Y2xfZW5jICRndWlfZW5jb2RpbmcKKyAgICBpZiB7JHBhdGggbmUge30gJiYgJHBlcmZpbGVfYXR0cnN9IHsKKwlzZXQgZW5jMiBbdGNsX2VuY29kaW5nIFtnaXRhdHRyICRwYXRoIGVuY29kaW5nICR0Y2xfZW5jXV0KKwlpZiB7JGVuYzIgbmUge319IHsKKwkgICAgc2V0IHRjbF9lbmMgJGVuYzIKKwl9CisgICAgfQorICAgIHJldHVybiAkdGNsX2VuYwogfQogCiAjIEZpcnN0IGNoZWNrIHRoYXQgVGNsL1RrIGlzIHJlY2VudCBlbm91Z2gKQEAgLTk3NzcsNiArMTA2NjMsOSBAQAogY2F0Y2ggewogICAgIHNldCBnaXRlbmNvZGluZyBbZXhlYyBnaXQgY29uZmlnIC0tZ2V0IGkxOG4uY29tbWl0ZW5jb2RpbmddCiB9CitjYXRjaCB7CisgICAgc2V0IGdpdGVuY29kaW5nIFtleGVjIGdpdCBjb25maWcgLS1nZXQgaTE4bi5sb2dvdXRwdXRlbmNvZGluZ10KK30KIGlmIHskZ2l0ZW5jb2RpbmcgPT0gIiJ9IHsKICAgICBzZXQgZ2l0ZW5jb2RpbmcgInV0Zi04IgogfQpAQCAtOTc4NSw2ICsxMDY3NCwxOSBAQAogICAgIHB1dHMgc3RkZXJyICJXYXJuaW5nOiBlbmNvZGluZyAkZ2l0ZW5jb2RpbmcgaXMgbm90IHN1cHBvcnRlZCBieSBUY2wvVGsiCiB9CiAKK3NldCBndWlfZW5jb2RpbmcgW2VuY29kaW5nIHN5c3RlbV0KK2NhdGNoIHsKKyAgICBzZXQgZW5jIFtleGVjIGdpdCBjb25maWcgLS1nZXQgZ3VpLmVuY29kaW5nXQorICAgIGlmIHskZW5jIG5lIHt9fSB7CisJc2V0IHRjbGVuYyBbdGNsX2VuY29kaW5nICRlbmNdCisJaWYgeyR0Y2xlbmMgbmUge319IHsKKwkgICAgc2V0IGd1aV9lbmNvZGluZyAkdGNsZW5jCisJfSBlbHNlIHsKKwkgICAgcHV0cyBzdGRlcnIgIldhcm5pbmc6IGVuY29kaW5nICRlbmMgaXMgbm90IHN1cHBvcnRlZCBieSBUY2wvVGsiCisJfQorICAgIH0KK30KKwogc2V0IG1haW5mb250IHtIZWx2ZXRpY2EgOX0KIHNldCB0ZXh0Zm9udCB7Q291cmllciA5fQogc2V0IHVpZm9udCB7SGVsdmV0aWNhIDkgYm9sZH0KQEAgLTk4MDYsNiArMTA3MDgsNyBAQAogc2V0IGxpbWl0ZGlmZnMgMQogc2V0IGRhdGV0aW1lZm9ybWF0ICIlWS0lbS0lZCAlSDolTTolUyIKIHNldCBhdXRvc2VsZWN0IDEKK3NldCBwZXJmaWxlX2F0dHJzIDAKIAogc2V0IGV4dGRpZmZ0b29sICJtZWxkIgogCkBAIC05ODE2LDkgKzEwNzE5LDE3IEBACiBzZXQgZGlmZmNvbnRleHQgMwogc2V0IGlnbm9yZXNwYWNlIDAKIHNldCBzZWxlY3RiZ2NvbG9yIGdyYXk4NQorc2V0IG1hcmtiZ2NvbG9yICIjZTBlMGZmIgogCiBzZXQgY2lyY2xlY29sb3JzIHt3aGl0ZSBibHVlIGdyYXkgYmx1ZSBibHVlfQogCisjIGJ1dHRvbiBmb3IgcG9wcGluZyB1cCBjb250ZXh0IG1lbnVzCitpZiB7W3RrIHdpbmRvd2luZ3N5c3RlbV0gZXEgImFxdWEifSB7CisgICAgc2V0IGN0eGJ1dCA8QnV0dG9uLTI+Cit9IGVsc2UgeworICAgIHNldCBjdHhidXQgPEJ1dHRvbi0zPgorfQorCiAjIyBGb3IgbXNnY2F0IGxvYWRpbmcsIGZpcnN0IGxvY2F0ZSB0aGUgaW5zdGFsbGF0aW9uIGxvY2F0aW9uLgogaWYgeyBbaW5mbyBleGlzdHMgOjplbnYoR0lUS19NU0dTRElSKV0gfSB7CiAgICAgIyMgTXNnc2RpciB3YXMgbWFudWFsbHkgc2V0IGluIHRoZSBlbnZpcm9ubWVudC4KQEAgLTk4NjUsNiArMTA3NzYsOSBAQAogICAgIGV4aXQgMQogfQogCitzZXQgc2VsZWN0aGVhZCB7fQorc2V0IHNlbGVjdGhlYWRpZCB7fQorCiBzZXQgcmV2dHJlZWFyZ3Mge30KIHNldCBjbWRsaW5lX2ZpbGVzIHt9CiBzZXQgaSAwCkBAIC05ODc2LDYgKzEwNzkwLDkgQEAKIAkgICAgc2V0IGNtZGxpbmVfZmlsZXMgW2xyYW5nZSAkYXJndiBbZXhwciB7JGkgKyAxfV0gZW5kXQogCSAgICBicmVhawogCX0KKwkiLS1zZWxlY3QtY29tbWl0PSoiIHsKKwkgICAgc2V0IHNlbGVjdGhlYWQgW3N0cmluZyByYW5nZSAkYXJnIDE2IGVuZF0KKwl9CiAJIi0tYXJnc2NtZD0qIiB7CiAJICAgIHNldCByZXZ0cmVlYXJnc2NtZCBbc3RyaW5nIHJhbmdlICRhcmcgMTAgZW5kXQogCX0KQEAgLTk4ODYsNiArMTA4MDMsMTAgQEAKICAgICBpbmNyIGkKIH0KIAoraWYgeyRzZWxlY3RoZWFkIGVxICJIRUFEIn0geworICAgIHNldCBzZWxlY3RoZWFkIHt9Cit9CisKIGlmIHskaSA+PSBbbGxlbmd0aCAkYXJndl0gJiYgJHJldnRyZWVhcmdzIG5lIHt9fSB7CiAgICAgIyBubyAtLSBvbiBjb21tYW5kIGxpbmUsIGJ1dCBzb21lIGFyZ3VtZW50cyAob3RoZXIgdGhhbiAtLWFyZ3NjbWQpCiAgICAgaWYge1tjYXRjaCB7CkBAIC05OTI5LDggKzEwODUwLDggQEAKIHNldCBoaWdobGlnaHRfcGF0aHMge30KIHNldCBmaW5kcGF0dGVybiB7fQogc2V0IHNlYXJjaGRpcm4gLWZvcndhcmRzCi1zZXQgYm9sZHJvd3Mge30KLXNldCBib2xkbmFtZXJvd3Mge30KK3NldCBib2xkaWRzIHt9CitzZXQgYm9sZG5hbWVpZHMge30KIHNldCBkaWZmZWxpZGUgezAgMH0KIHNldCBtYXJraW5nbWF0Y2hlcyAwCiBzZXQgbGlua2VudGVyY291bnQgMApAQCAtOTk3Nyw4ICsxMDg5OCw4IEBACiAgICAgc2V0IHZpZXdwZXJtKDEpIDAKICAgICBzZXQgdmRhdGVtb2RlKDEpIDAKICAgICBhZGR2aWV3bWVudSAxCi0gICAgLmJhci52aWV3IGVudHJ5Y29uZiBbbWMgIkVkaXQgdmlldy4uLiJdIC1zdGF0ZSBub3JtYWwKLSAgICAuYmFyLnZpZXcgZW50cnljb25mIFttYyAiRGVsZXRlIHZpZXciXSAtc3RhdGUgbm9ybWFsCisgICAgLmJhci52aWV3IGVudHJ5Y29uZiBbbWNhICJFZGl0IHZpZXcuLi4iXSAtc3RhdGUgbm9ybWFsCisgICAgLmJhci52aWV3IGVudHJ5Y29uZiBbbWNhICJEZWxldGUgdmlldyJdIC1zdGF0ZSBub3JtYWwKIH0KIAogaWYge1tpbmZvIGV4aXN0cyBwZXJtdmlld3NdfSB7CkBAIC05OTkzLDQgKzEwOTE0LDkgQEAKIAlhZGR2aWV3bWVudSAkbgogICAgIH0KIH0KKworaWYge1t0ayB3aW5kb3dpbmdzeXN0ZW1dIGVxICJ3aW4zMiJ9IHsKKyAgICBmb2N1cyAtZm9yY2UgLgorfQorCiBnZXRjb21taXRzIHt9CmRpZmYgLS1naXQgYS9naXRrLWdpdC9wby9kZS5wbyBiL2dpdGstZ2l0L3BvL2RlLnBvCmluZGV4IDA0ZWU1NzAuLjgyNWRjOTggMTAwNjQ0Ci0tLSBhL2dpdGstZ2l0L3BvL2RlLnBvCisrKyBiL2dpdGstZ2l0L3BvL2RlLnBvCkBAIC03LDI1ICs3LDMzIEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdpdC1ndWlcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMDgtMDUtMjQgMjI6MzIrMDIwMFxuIgotIlBPLVJldmlzaW9uLURhdGU6IDIwMDgtMDUtMjQgMjI6NDArMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA4LTEyLTA2IDIwOjQwKzAxMDBcbiIKKyJQTy1SZXZpc2lvbi1EYXRlOiAyMDA4LTEyLTA2IDIwOjQ1KzAxMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IENocmlzdGlhbiBTdGltbWluZyA8c3RpbW1pbmdAdHVoaC5kZT5cbiIKICJMYW5ndWFnZS1UZWFtOiBHZXJtYW5cbiIKICJNSU1FLVZlcnNpb246IDEuMFxuIgogIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOFxuIgogIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKIAotIzogZ2l0azoxMDIKKyM6IGdpdGs6MTEzCiBtc2dpZCAiQ291bGRuJ3QgZ2V0IGxpc3Qgb2YgdW5tZXJnZWQgZmlsZXM6IgogbXNnc3RyICJMaXN0ZSBkZXIgbmljaHQtenVzYW1tZW5nZWbDvGhydGVuIERhdGVpZW4gbmljaHQgZ2VmdW5kZW46IgogCi0jOiBnaXRrOjMyOQorIzogZ2l0azoyNzIKK21zZ2lkICJFcnJvciBwYXJzaW5nIHJldmlzaW9uczoiCittc2dzdHIgIkZlaGxlciBiZWltIExhZGVuIGRlciBWZXJzaW9uZW46IgorCisjOiBnaXRrOjMyNworbXNnaWQgIkVycm9yIGV4ZWN1dGluZyAtLWFyZ3NjbWQgY29tbWFuZDoiCittc2dzdHIgIkZlaGxlciBiZWltIC0tYXJnc2NtZCBLb21tYW5kbzoiCisKKyM6IGdpdGs6MzQwCiBtc2dpZCAiTm8gZmlsZXMgc2VsZWN0ZWQ6IC0tbWVyZ2Ugc3BlY2lmaWVkIGJ1dCBubyBmaWxlcyBhcmUgdW5tZXJnZWQuIgogbXNnc3RyICIiCiAiS2VpbmUgRGF0ZWllbiBhdXNnZXfDpGhsdDogLS1tZXJnZSBhbmdlZ2ViZW4sIGVzIGV4aXN0aWVyZW4gYWJlciBrZWluZSBuaWNodC0iCiAienVzYW1tZW5nZWbDvGhydGVuIERhdGVpZW4uIgogCi0jOiBnaXRrOjMzMgorIzogZ2l0azozNDMKIG1zZ2lkICIiCiAiTm8gZmlsZXMgc2VsZWN0ZWQ6IC0tbWVyZ2Ugc3BlY2lmaWVkIGJ1dCBubyB1bm1lcmdlZCBmaWxlcyBhcmUgd2l0aGluIGZpbGUgIgogImxpbWl0LiIKQEAgLTMzLDI1NyArNDEsMjczIEBACiAiS2VpbmUgRGF0ZWllbiBhdXNnZXfDpGhsZTogLS1tZXJnZSBhbmdlZ2ViZW4sIGFiZXIga2VpbmUgbmljaHQtIgogInp1c2FtbWVuZ2Vmw7xocnRlbiBEYXRlaWVuIHNpbmQgaW4gZGVyIERhdGVpYXVzd2FobC4iCiAKLSM6IGdpdGs6MzU0CisjOiBnaXRrOjM2NSBnaXRrOjUwMwogbXNnaWQgIkVycm9yIGV4ZWN1dGluZyBnaXQgbG9nOiIKIG1zZ3N0ciAiRmVobGVyIGJlaW0gQXVzZsO8aHJlbiB2b24gZ2l0LWxvZzoiCiAKLSM6IGdpdGs6MzY5CisjOiBnaXRrOjM3OAogbXNnaWQgIlJlYWRpbmciCiBtc2dzdHIgIkxlc2VuIgogCi0jOiBnaXRrOjE1MSBnaXRrOjIxOTEKKyM6IGdpdGs6NDM4IGdpdGs6MzQ2MgogbXNnaWQgIlJlYWRpbmcgY29tbWl0cy4uLiIKIG1zZ3N0ciAiVmVyc2lvbmVuIGxlc2VuLi4uIgogCi0jOiBnaXRrOjI3NQotbXNnaWQgIkNhbid0IHBhcnNlIGdpdCBsb2cgb3V0cHV0OiIKLW1zZ3N0ciAiQXVzZ2FiZSB2b24gZ2l0LWxvZyBrYW5uIG5pY2h0IGVya2FubnQgd2VyZGVuOiIKLQotIzogZ2l0azozODYgZ2l0azoyMTk1CisjOiBnaXRrOjQ0MSBnaXRrOjE1MjggZ2l0azozNDY1CiBtc2dpZCAiTm8gY29tbWl0cyBzZWxlY3RlZCIKIG1zZ3N0ciAiS2VpbmUgVmVyc2lvbmVuIGF1c2dld8OkaGx0LiIKIAotIzogZ2l0azo1MDAKKyM6IGdpdGs6MTM5OQorbXNnaWQgIkNhbid0IHBhcnNlIGdpdCBsb2cgb3V0cHV0OiIKK21zZ3N0ciAiQXVzZ2FiZSB2b24gZ2l0LWxvZyBrYW5uIG5pY2h0IGVya2FubnQgd2VyZGVuOiIKKworIzogZ2l0azoxNjA1CiBtc2dpZCAiTm8gY29tbWl0IGluZm9ybWF0aW9uIGF2YWlsYWJsZSIKIG1zZ3N0ciAiS2VpbmUgVmVyc2lvbnNpbmZvcm1hdGlvbiB2ZXJmw7xnYmFyIgogCi0jOiBnaXRrOjU5OSBnaXRrOjYyMSBnaXRrOjE5NTUgZ2l0azo2NDI0IGdpdGs6NzkyNCBnaXRrOjgwODMKKyM6IGdpdGs6MTcwOSBnaXRrOjE3MzEgZ2l0azozMjU5IGdpdGs6Nzc2NCBnaXRrOjkyOTMgZ2l0azo5NDY2CiBtc2dpZCAiT0siCiBtc2dzdHIgIk9rIgogCi0jOiBnaXRrOjYyMyBnaXRrOjE5NTYgZ2l0azo2MTA4IGdpdGs6NjE3OSBnaXRrOjYyNzYgZ2l0azo2MzIyIGdpdGs6NjQyNgotIzogZ2l0azo3OTI1IGdpdGs6ODA4NAorIzogZ2l0azoxNzMzIGdpdGs6MzI2MCBnaXRrOjc0MzkgZ2l0azo3NTEwIGdpdGs6NzYxMyBnaXRrOjc2NjAgZ2l0azo3NzY2CisjOiBnaXRrOjkyOTQgZ2l0azo5NDY3CiBtc2dpZCAiQ2FuY2VsIgogbXNnc3RyICJBYmJyZWNoZW4iCiAKLSM6IGdpdGs6NjYxCi1tc2dpZCAiRmlsZSIKLW1zZ3N0ciAiRGF0ZWkiCi0KLSM6IGdpdGs6NjYzCisjOiBnaXRrOjE4MTEKIG1zZ2lkICJVcGRhdGUiCiBtc2dzdHIgIkFrdHVhbGlzaWVyZW4iCiAKLSM6IGdpdGs6MTcyMgorIzogZ2l0azoxODEyCiBtc2dpZCAiUmVsb2FkIgogbXNnc3RyICJOZXUgbGFkZW4iCiAKLSM6IGdpdGs6MTcyMworIzogZ2l0azoxODEzCiBtc2dpZCAiUmVyZWFkIHJlZmVyZW5jZXMiCiBtc2dzdHIgIlp3ZWlnZSBuZXUgbGFkZW4iCiAKLSM6IGdpdGs6NjY1CisjOiBnaXRrOjE4MTQKIG1zZ2lkICJMaXN0IHJlZmVyZW5jZXMiCiBtc2dzdHIgIlp3ZWlnZS9NYXJraWVydW5nZW4gYXVmbGlzdGVuIgogCi0jOiBnaXRrOjY2NgorIzogZ2l0azoxOTE1Cittc2dpZCAiU3RhcnQgZ2l0IGd1aSIKK21zZ3N0ciAiwrtnaXQgZ3Vpwqsgc3RhcnRlbiIKKworIzogZ2l0azoxOTE3CiBtc2dpZCAiUXVpdCIKIG1zZ3N0ciAiQmVlbmRlbiIKIAotIzogZ2l0azo2NjgKLW1zZ2lkICJFZGl0IgotbXNnc3RyICJCZWFyYmVpdGVuIgorIzogZ2l0azoxODEwCittc2dpZCAiRmlsZSIKK21zZ3N0ciAiRGF0ZWkiCiAKLSM6IGdpdGs6NjY5CisjOiBnaXRrOjE4MTgKIG1zZ2lkICJQcmVmZXJlbmNlcyIKIG1zZ3N0ciAiRWluc3RlbGx1bmdlbiIKIAotIzogZ2l0azo2NzIgZ2l0azoxODkyCi1tc2dpZCAiVmlldyIKLW1zZ3N0ciAiQW5zaWNodCIKKyM6IGdpdGs6MTgxNworbXNnaWQgIkVkaXQiCittc2dzdHIgIkJlYXJiZWl0ZW4iCiAKLSM6IGdpdGs6NjczCisjOiBnaXRrOjE4MjEKIG1zZ2lkICJOZXcgdmlldy4uLiIKIG1zZ3N0ciAiTmV1ZSBBbnNpY2h0Li4uIgogCi0jOiBnaXRrOjY3NCBnaXRrOjIxMzMgZ2l0azo4NzIzCisjOiBnaXRrOjE4MjIKIG1zZ2lkICJFZGl0IHZpZXcuLi4iCiBtc2dzdHIgIkFuc2ljaHQgYmVhcmJlaXRlbi4uLiIKIAotIzogZ2l0azo2NzYgZ2l0azoyMTM0IGdpdGs6ODcyNAorIzogZ2l0azoxODIzCiBtc2dpZCAiRGVsZXRlIHZpZXciCiBtc2dzdHIgIkFuc2ljaHQgbMO2c2NoZW4iCiAKLSM6IGdpdGs6Njc4CisjOiBnaXRrOjE4MjUKIG1zZ2lkICJBbGwgZmlsZXMiCiBtc2dzdHIgIkFsbGUgRGF0ZWllbiIKIAotIzogZ2l0azo2ODIKLW1zZ2lkICJIZWxwIgotbXNnc3RyICJIaWxmZSIKKyM6IGdpdGs6MTgyMCBnaXRrOjMxOTYKK21zZ2lkICJWaWV3IgorbXNnc3RyICJBbnNpY2h0IgogCi0jOiBnaXRrOjY4MyBnaXRrOjEzMTcKKyM6IGdpdGs6MTgyOCBnaXRrOjI0ODcKIG1zZ2lkICJBYm91dCBnaXRrIgogbXNnc3RyICLDnGJlciBnaXRrIgogCi0jOiBnaXRrOjY4NAorIzogZ2l0azoxODI5CiBtc2dpZCAiS2V5IGJpbmRpbmdzIgogbXNnc3RyICJUYXN0ZW5rw7xyemVsIgogCi0jOiBnaXRrOjc0MQorIzogZ2l0azoxODI3Cittc2dpZCAiSGVscCIKK21zZ3N0ciAiSGlsZmUiCisKKyM6IGdpdGs6MTg4NwogbXNnaWQgIlNIQTEgSUQ6ICIKIG1zZ3N0ciAiU0hBMToiCiAKLSM6IGdpdGs6MTgzMQorIzogZ2l0azoxOTE4CiBtc2dpZCAiUm93IgogbXNnc3RyICJaZWlsZSIKIAotIzogZ2l0azoxODYyCisjOiBnaXRrOjE5NDkKIG1zZ2lkICJGaW5kIgogbXNnc3RyICJTdWNoZSIKIAotIzogZ2l0azo3OTIKKyM6IGdpdGs6MTk1MAogbXNnaWQgIm5leHQiCiBtc2dzdHIgIm7DpGNoc3RlIgogCi0jOiBnaXRrOjc5MworIzogZ2l0azoxOTUxCiBtc2dpZCAicHJldiIKIG1zZ3N0ciAidm9yaWdlIgogCi0jOiBnaXRrOjc5NAorIzogZ2l0azoxOTUyCiBtc2dpZCAiY29tbWl0IgogbXNnc3RyICJWZXJzaW9uIG5hY2giCiAKLSM6IGdpdGs6Nzk3IGdpdGs6Nzk5IGdpdGs6MjM1NiBnaXRrOjIzNzkgZ2l0azoyNDAzIGdpdGs6NDMwNiBnaXRrOjQzNjkKKyM6IGdpdGs6MTk1NSBnaXRrOjE5NTcgZ2l0azozNjE3IGdpdGs6MzY0MCBnaXRrOjM2NjQgZ2l0azo1NTUwIGdpdGs6NTYyMQogbXNnaWQgImNvbnRhaW5pbmc6IgogbXNnc3RyICJCZXNjaHJlaWJ1bmc6IgogCi0jOiBnaXRrOjgwMCBnaXRrOjE3NzggZ2l0azoxNzgzIGdpdGs6MjQzMQorIzogZ2l0azoxOTU4IGdpdGs6Mjk1NCBnaXRrOjI5NTkgZ2l0azozNjkyCiBtc2dpZCAidG91Y2hpbmcgcGF0aHM6IgogbXNnc3RyICJEYXRlaWVuOiIKIAotIzogZ2l0azo4MDEgZ2l0azoyNDM2CisjOiBnaXRrOjE5NTkgZ2l0azozNjk3CiBtc2dpZCAiYWRkaW5nL3JlbW92aW5nIHN0cmluZzoiCiBtc2dzdHIgIsOEbmRlcnVuZ2VuOiIKIAotIzogZ2l0azo4MTAgZ2l0azo4MTIKKyM6IGdpdGs6MTk2OCBnaXRrOjE5NzAKIG1zZ2lkICJFeGFjdCIKIG1zZ3N0ciAiRXhha3QiCiAKLSM6IGdpdGs6ODEyIGdpdGs6MjUxNCBnaXRrOjQyNzQKKyM6IGdpdGs6MTk3MCBnaXRrOjM3NzMgZ2l0azo1NTE4CiBtc2dpZCAiSWduQ2FzZSIKIG1zZ3N0ciAiS2VpbiBHcm/Dny9LbGVpbiIKIAotIzogZ2l0azo4MTIgZ2l0azoyNDA1IGdpdGs6MjUxMiBnaXRrOjQyNzAKKyM6IGdpdGs6MTk3MCBnaXRrOjM2NjYgZ2l0azozNzcxIGdpdGs6NTUxNAogbXNnaWQgIlJlZ2V4cCIKIG1zZ3N0ciAiUmVnZXhwIgogCi0jOiBnaXRrOjgxNCBnaXRrOjgxNSBnaXRrOjI1MzMgZ2l0azoyNTYzIGdpdGs6MjU3MCBnaXRrOjQzODAgZ2l0azo0NDM2CisjOiBnaXRrOjE5NzIgZ2l0azoxOTczIGdpdGs6Mzc5MiBnaXRrOjM4MjIgZ2l0azozODI5IGdpdGs6NTY0MSBnaXRrOjU3MDgKIG1zZ2lkICJBbGwgZmllbGRzIgogbXNnc3RyICJBbGxlIEZlbGRlciIKIAotIzogZ2l0azo4MTUgZ2l0azoyNTMxIGdpdGs6MjU2MyBnaXRrOjQzMzYKKyM6IGdpdGs6MTk3MyBnaXRrOjM3OTAgZ2l0azozODIyIGdpdGs6NTU4MAogbXNnaWQgIkhlYWRsaW5lIgogbXNnc3RyICLDnGJlcnNjaHJpZnQiCiAKLSM6IGdpdGs6ODE2IGdpdGs6MjUzMSBnaXRrOjQzMzYgZ2l0azo0NDM2IGdpdGs6NDgyNworIzogZ2l0azoxOTc0IGdpdGs6Mzc5MCBnaXRrOjU1ODAgZ2l0azo1NzA4IGdpdGs6NjEwOQogbXNnaWQgIkNvbW1lbnRzIgogbXNnc3RyICJCZXNjaHJlaWJ1bmciCiAKLSM6IGdpdGs6ODE2IGdpdGs6MjUzMSBnaXRrOjI1MzUgZ2l0azoyNTcwIGdpdGs6NDMzNiBnaXRrOjQ3NjMgZ2l0azo1OTU3Ci0jOiBnaXRrOjU5NzIKKyM6IGdpdGs6MTk3NCBnaXRrOjM3OTAgZ2l0azozNzk0IGdpdGs6MzgyOSBnaXRrOjU1ODAgZ2l0azo2MDQ1IGdpdGs6NzI4NQorIzogZ2l0azo3MzAwCiBtc2dpZCAiQXV0aG9yIgogbXNnc3RyICJBdXRvciIKIAotIzogZ2l0azo4MTYgZ2l0azoyNTMxIGdpdGs6NDMzNiBnaXRrOjQ3NjUKKyM6IGdpdGs6MTk3NCBnaXRrOjM3OTAgZ2l0azo1NTgwIGdpdGs6NjA0NwogbXNnaWQgIkNvbW1pdHRlciIKIG1zZ3N0ciAiRWludHJhZ2VuZGVyIgogCi0jOiBnaXRrOjg0NQorIzogZ2l0azoyMDAzCiBtc2dpZCAiU2VhcmNoIgogbXNnc3RyICJTdWNoZSIKIAotIzogZ2l0azo4NTIKKyM6IGdpdGs6MjAxMAogbXNnaWQgIkRpZmYiCiBtc2dzdHIgIlZlcmdsZWljaCIKIAotIzogZ2l0azo4NTQKKyM6IGdpdGs6MjAxMgogbXNnaWQgIk9sZCB2ZXJzaW9uIgogbXNnc3RyICJBbHRlIFZlcnNpb24iCiAKLSM6IGdpdGs6ODU2CisjOiBnaXRrOjIwMTQKIG1zZ2lkICJOZXcgdmVyc2lvbiIKIG1zZ3N0ciAiTmV1ZSBWZXJzaW9uIgogCi0jOiBnaXRrOjg1OAorIzogZ2l0azoyMDE2CiBtc2dpZCAiTGluZXMgb2YgY29udGV4dCIKIG1zZ3N0ciAiS29udGV4dHplaWxlbiIKIAotIzogZ2l0azo4NjgKKyM6IGdpdGs6MjAyNgogbXNnaWQgIklnbm9yZSBzcGFjZSBjaGFuZ2UiCiBtc2dzdHIgIkxlZXJ6ZWljaGVuw6RuZGVydW5nZW4gaWdub3JpZXJlbiIKIAotIzogZ2l0azo5MjYKKyM6IGdpdGs6MjA4NAogbXNnaWQgIlBhdGNoIgogbXNnc3RyICJQYXRjaCIKIAotIzogZ2l0azo5MjgKKyM6IGdpdGs6MjA4NgogbXNnaWQgIlRyZWUiCiBtc2dzdHIgIkJhdW0iCiAKLSM6IGdpdGs6MTA1MyBnaXRrOjEwNjggZ2l0azo2MDIzCisjOiBnaXRrOjIyMTMgZ2l0azoyMjI2CiBtc2dpZCAiRGlmZiB0aGlzIC0+IHNlbGVjdGVkIgogbXNnc3RyICJWZXJnbGVpY2ggZGllc2UgLT4gZ2V3w6RobHRlIgogCi0jOiBnaXRrOjEwNTUgZ2l0azoxMDcwIGdpdGs6NjAyNAorIzogZ2l0azoyMjE0IGdpdGs6MjIyNwogbXNnaWQgIkRpZmYgc2VsZWN0ZWQgLT4gdGhpcyIKIG1zZ3N0ciAiVmVyZ2xlaWNoIGdld8OkaGx0ZSAtPiBkaWVzZSIKIAotIzogZ2l0azoxMDU3IGdpdGs6MTA3MiBnaXRrOjYwMjUKKyM6IGdpdGs6MjIxNSBnaXRrOjIyMjgKIG1zZ2lkICJNYWtlIHBhdGNoIgogbXNnc3RyICJQYXRjaCBlcnN0ZWxsZW4iCiAKLSM6IGdpdGs6MTA1OCBnaXRrOjYxNjMKKyM6IGdpdGs6MjIxNiBnaXRrOjc0OTQKIG1zZ2lkICJDcmVhdGUgdGFnIgogbXNnc3RyICJNYXJraWVydW5nIGVyc3RlbGxlbiIKIAotIzogZ2l0azoxMDU5IGdpdGs6NjI1NgorIzogZ2l0azoyMjE3IGdpdGs6NzU5MwogbXNnaWQgIldyaXRlIGNvbW1pdCB0byBmaWxlIgogbXNnc3RyICJWZXJzaW9uIGluIERhdGVpIHNjaHJlaWJlbiIKIAotIzogZ2l0azoxMDYwIGdpdGs6NjMxMAorIzogZ2l0azoyMjE4IGdpdGs6NzY0NwogbXNnaWQgIkNyZWF0ZSBuZXcgYnJhbmNoIgogbXNnc3RyICJOZXVlbiBad2VpZyBlcnN0ZWxsZW4iCiAKLSM6IGdpdGs6MTA2MQorIzogZ2l0azoyMjE5CiBtc2dpZCAiQ2hlcnJ5LXBpY2sgdGhpcyBjb21taXQiCiBtc2dzdHIgIkRpZXNlIFZlcnNpb24gcGZsw7xja2VuIgogCi0jOiBnaXRrOjEwNjMKKyM6IGdpdGs6MjIyMAogbXNnaWQgIlJlc2V0IEhFQUQgYnJhbmNoIHRvIGhlcmUiCiBtc2dzdHIgIkhFQUQtWndlaWcgYXVmIGRpZXNlIFZlcnNpb24genVyw7xja3NldHplbiIKIAotIzogZ2l0azoxMDc5CisjOiBnaXRrOjIyMzQKIG1zZ2lkICJDaGVjayBvdXQgdGhpcyBicmFuY2giCiBtc2dzdHIgIkF1ZiBkaWVzZW4gWndlaWcgdW1zdGVsbGVuIgogCi0jOiBnaXRrOjEwODEKKyM6IGdpdGs6MjIzNQogbXNnaWQgIlJlbW92ZSB0aGlzIGJyYW5jaCIKIG1zZ3N0ciAiWndlaWcgbMO2c2NoZW4iCiAKLSM6IGdpdGs6MTA4NworIzogZ2l0azoyMjQyCiBtc2dpZCAiSGlnaGxpZ2h0IHRoaXMgdG9vIgogbXNnc3RyICJEaWVzZW4gYXVjaCBoZXJ2b3JoZWJlbiIKIAotIzogZ2l0azoxMDg5CisjOiBnaXRrOjIyNDMKIG1zZ2lkICJIaWdobGlnaHQgdGhpcyBvbmx5IgogbXNnc3RyICJOdXIgZGllc2VuIGhlcnZvcmhlYmVuIgogCi0jOiBnaXRrOjIxNjIKKyM6IGdpdGs6MjI0NAogbXNnaWQgIkV4dGVybmFsIGRpZmYiCiBtc2dzdHIgIkV4dGVybmVyIFZlcmdsZWljaCIKIAotIzogZ2l0azoyNDAzCisjOiBnaXRrOjIyNTUKK21zZ2lkICJCbGFtZSBwYXJlbnQgY29tbWl0IgorbXNnc3RyICJBbm5vdGllcmVuIGRlciBFbHRlcm52ZXJzaW9uIgorCisjOiBnaXRrOjIzNjAKK21zZ2lkICJTaG93IG9yaWdpbiBvZiB0aGlzIGxpbmUiCittc2dzdHIgIkhlcmt1bmZ0IGRpZXNlciBaZWlsZSBhbnplaWdlbiIKKworIzogZ2l0azoyMzYxCittc2dpZCAiUnVuIGdpdCBndWkgYmxhbWUgb24gdGhpcyBsaW5lIgorbXNnc3RyICJBbm5vdGllcmVuICjCu2dpdCBndWkgYmxhbWXCqykgdm9uIGRpZXNlciBaZWlsZSIKKworIzogZ2l0azoyNjA2CiBtc2dpZCAiIgogIlxuIgogIkdpdGsgLSBhIGNvbW1pdCB2aWV3ZXIgZm9yIGdpdFxuIgpAQCAtMjk3LDQzMSArMzIxLDU0NiBAQAogIlxuIgogIkNvcHlyaWdodCDCqSAyMDA1LTIwMDggUGF1bCBNYWNrZXJyYXNcbiIKICJcbiIKLSJCZW51dHp1bmcgdW5kIFdlaXRlcnZlcmJyZWl0dW5nIGdlbcOkw58gZGVuIEJlZGluZ3VuZ2VuIGRlciBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSIKKyJCZW51dHp1bmcgdW5kIFdlaXRlcnZlcmJyZWl0dW5nIGdlbcOkw58gZGVuIEJlZGluZ3VuZ2VuIGRlciBHTlUgR2VuZXJhbCBQdWJsaWMgIgorIkxpY2Vuc2UiCiAKLSM6IGdpdGs6MTMyNiBnaXRrOjEzODcgZ2l0azo2NTgyCisjOiBnaXRrOjI0OTYgZ2l0azoyNTU3IGdpdGs6Nzk0MwogbXNnaWQgIkNsb3NlIgogbXNnc3RyICJTY2hsaWXDn2VuIgogCi0jOiBnaXRrOjEzNDUKKyM6IGdpdGs6MjUxNQogbXNnaWQgIkdpdGsga2V5IGJpbmRpbmdzIgogbXNnc3RyICJHaXRrIFRhc3RhdHVyYmVsZWd1bmciCiAKLSM6IGdpdGs6MTM0NworIzogZ2l0azoyNTE3CiBtc2dpZCAiR2l0ayBrZXkgYmluZGluZ3M6IgogbXNnc3RyICJHaXRrIFRhc3RhdHVyYmVsZWd1bmc6IgogCi0jOiBnaXRrOjEzNDkKKyM6IGdpdGs6MjUxOQogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1RPlx0XHRRdWl0IgogbXNnc3RyICI8JXMtUT5cdFx0QmVlbmRlbiIKIAotIzogZ2l0azoxMzUwCisjOiBnaXRrOjI1MjAKIG1zZ2lkICI8SG9tZT5cdFx0TW92ZSB0byBmaXJzdCBjb21taXQiCiBtc2dzdHIgIjxQb3MxPlx0XHRadXIgbmV1ZXN0ZW4gVmVyc2lvbiBzcHJpbmdlbiIKIAotIzogZ2l0azoxMzUxCisjOiBnaXRrOjI1MjEKIG1zZ2lkICI8RW5kPlx0XHRNb3ZlIHRvIGxhc3QgY29tbWl0IgogbXNnc3RyICI8RW5kZT5cdFx0WnVyIMOkbHRlc3RlbiBWZXJzaW9uIHNwcmluZ2VuIgogCi0jOiBnaXRrOjEzNTIKKyM6IGdpdGs6MjUyMgogbXNnaWQgIjxVcD4sIHAsIGlcdE1vdmUgdXAgb25lIGNvbW1pdCIKIG1zZ3N0ciAiPEhvY2g+LCBwLCBpXHROw6RjaHN0ZSBuZXVlcmUgVmVyc2lvbiIKIAotIzogZ2l0azoxMzUzCisjOiBnaXRrOjI1MjMKIG1zZ2lkICI8RG93bj4sIG4sIGtcdE1vdmUgZG93biBvbmUgY29tbWl0IgogbXNnc3RyICI8UnVudGVyPiwgbiwga1x0TsOkY2hzdGUgw6RsdGVyZSBWZXJzaW9uIgogCi0jOiBnaXRrOjEzNTQKKyM6IGdpdGs6MjUyNAogbXNnaWQgIjxMZWZ0Piwgeiwgalx0R28gYmFjayBpbiBoaXN0b3J5IGxpc3QiCiBtc2dzdHIgIjxMaW5rcz4sIHosIGpcdEVpbmUgVmVyc2lvbiB6dXLDvGNrZ2VoZW4iCiAKLSM6IGdpdGs6MTM1NQorIzogZ2l0azoyNTI1CiBtc2dpZCAiPFJpZ2h0PiwgeCwgbFx0R28gZm9yd2FyZCBpbiBoaXN0b3J5IGxpc3QiCiBtc2dzdHIgIjxSZWNodHM+LCB4LCBsXHRFaW5lIFZlcnNpb24gd2VpdGVyZ2VoZW4iCiAKLSM6IGdpdGs6MTM1NgorIzogZ2l0azoyNTI2CiBtc2dpZCAiPFBhZ2VVcD5cdE1vdmUgdXAgb25lIHBhZ2UgaW4gY29tbWl0IGxpc3QiCiBtc2dzdHIgIjxCaWxkSG9jaD5cdEVpbmUgU2VpdGUgbmFjaCBvYmVuIGJsw6R0dGVybiIKIAotIzogZ2l0azoxMzU3CisjOiBnaXRrOjI1MjcKIG1zZ2lkICI8UGFnZURvd24+XHRNb3ZlIGRvd24gb25lIHBhZ2UgaW4gY29tbWl0IGxpc3QiCiBtc2dzdHIgIjxCaWxkUnVudGVyPlx0RWluZSBTZWl0ZSBuYWNoIHVudGVuIGJsw6R0dGVybiIKIAotIzogZ2l0azoxMzU4CisjOiBnaXRrOjI1MjgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtSG9tZT5cdFNjcm9sbCB0byB0b3Agb2YgY29tbWl0IGxpc3QiCiBtc2dzdHIgIjwlcy1Qb3MxPlx0WnVtIG9iZXJlbiBFbmRlIGRlciBWZXJzaW9uc2xpc3RlIGJsw6R0dGVybiIKIAotIzogZ2l0azoxMzU5CisjOiBnaXRrOjI1MjkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtRW5kPlx0U2Nyb2xsIHRvIGJvdHRvbSBvZiBjb21taXQgbGlzdCIKIG1zZ3N0ciAiPCVzLUVuZGU+XHRadW0gdW50ZXJlbiBFbmRlIGRlciBWZXJzaW9uc2xpc3RlIGJsw6R0dGVybiIKIAotIzogZ2l0azoxMzYwCisjOiBnaXRrOjI1MzAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtVXA+XHRTY3JvbGwgY29tbWl0IGxpc3QgdXAgb25lIGxpbmUiCiBtc2dzdHIgIjwlcy1Ib2NoPlx0VmVyc2lvbnNsaXN0ZSBlaW5lIFplaWxlIG5hY2ggb2JlbiBibMOkdHRlcm4iCiAKLSM6IGdpdGs6MTM2MQorIzogZ2l0azoyNTMxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLURvd24+XHRTY3JvbGwgY29tbWl0IGxpc3QgZG93biBvbmUgbGluZSIKIG1zZ3N0ciAiPCVzLVJ1bnRlcj5cdFZlcnNpb25zbGlzdGUgZWluZSBaZWlsZSBuYWNoIHVudGVuIGJsw6R0dGVybiIKIAotIzogZ2l0azoxMzYyCisjOiBnaXRrOjI1MzIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtUGFnZVVwPlx0U2Nyb2xsIGNvbW1pdCBsaXN0IHVwIG9uZSBwYWdlIgogbXNnc3RyICI8JXMtQmlsZEhvY2g+XHRWZXJzaW9uc2xpc3RlIGVpbmUgU2VpdGUgaG9jaCBibMOkdHRlcm4iCiAKLSM6IGdpdGs6MTM2MworIzogZ2l0azoyNTMzCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLVBhZ2VEb3duPlx0U2Nyb2xsIGNvbW1pdCBsaXN0IGRvd24gb25lIHBhZ2UiCiBtc2dzdHIgIjwlcy1CaWxkUnVudGVyPlx0VmVyc2lvbnNsaXN0ZSBlaW5lIFNlaXRlIG5hY2ggdW50ZW4gYmzDpHR0ZXJuIgogCi0jOiBnaXRrOjEzNjQKKyM6IGdpdGs6MjUzNAogbXNnaWQgIjxTaGlmdC1VcD5cdEZpbmQgYmFja3dhcmRzICh1cHdhcmRzLCBsYXRlciBjb21taXRzKSIKIG1zZ3N0ciAiPFVtc2NoYWx0LUhvY2g+XHRSw7xja3fDpHJ0cyBzdWNoZW4gKG5hY2ggb2JlbjsgbmV1ZXJlIFZlcnNpb25lbikiCiAKLSM6IGdpdGs6MTM2NQorIzogZ2l0azoyNTM1CiBtc2dpZCAiPFNoaWZ0LURvd24+XHRGaW5kIGZvcndhcmRzIChkb3dud2FyZHMsIGVhcmxpZXIgY29tbWl0cykiCiBtc2dzdHIgIjxVbXNjaGFsdC1SdW50ZXI+IFN1Y2hlbiAobmFjaCB1bnRlbjsgw6RsdGVyZSBWZXJzaW9uZW4pIgogCi0jOiBnaXRrOjEzNjYKKyM6IGdpdGs6MjUzNgogbXNnaWQgIjxEZWxldGU+LCBiXHRTY3JvbGwgZGlmZiB2aWV3IHVwIG9uZSBwYWdlIgogbXNnc3RyICI8RW50Zj4sIGJcdFx0VmVyZ2xlaWNoIGVpbmUgU2VpdGUgbmFjaCBvYmVuIGJsw6R0dGVybiIKIAotIzogZ2l0azoxMzY3CisjOiBnaXRrOjI1MzcKIG1zZ2lkICI8QmFja3NwYWNlPlx0U2Nyb2xsIGRpZmYgdmlldyB1cCBvbmUgcGFnZSIKIG1zZ3N0ciAiPEzDtnNjaHRhc3RlPlx0VmVyZ2xlaWNoIGVpbmUgU2VpdGUgbmFjaCBvYmVuIGJsw6R0dGVybiIKIAotIzogZ2l0azoxMzY4CisjOiBnaXRrOjI1MzgKIG1zZ2lkICI8U3BhY2U+XHRcdFNjcm9sbCBkaWZmIHZpZXcgZG93biBvbmUgcGFnZSIKIG1zZ3N0ciAiPExlZXJ0YXN0ZT5cdFZlcmdsZWljaCBlaW5lIFNlaXRlIG5hY2ggdW50ZW4gYmzDpHR0ZXJuIgogCi0jOiBnaXRrOjEzNjkKKyM6IGdpdGs6MjUzOQogbXNnaWQgInVcdFx0U2Nyb2xsIGRpZmYgdmlldyB1cCAxOCBsaW5lcyIKIG1zZ3N0ciAidVx0XHRWZXJnbGVpY2ggdW0gMTggWmVpbGVuIG5hY2ggb2JlbiAowrt1cMKrKSBibMOkdHRlcm4iCiAKLSM6IGdpdGs6MTM3MAorIzogZ2l0azoyNTQwCiBtc2dpZCAiZFx0XHRTY3JvbGwgZGlmZiB2aWV3IGRvd24gMTggbGluZXMiCiBtc2dzdHIgImRcdFx0VmVyZ2xlaWNoIHVtIDE4IFplaWxlbiBuYWNoIHVudGVuICjCu2Rvd27CqykgYmzDpHR0ZXJuIgogCi0jOiBnaXRrOjEzNzEKKyM6IGdpdGs6MjU0MQogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1GPlx0XHRGaW5kIgogbXNnc3RyICI8JXMtRj5cdFx0U3VjaGVuIgogCi0jOiBnaXRrOjEzNzIKKyM6IGdpdGs6MjU0MgogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1HPlx0XHRNb3ZlIHRvIG5leHQgZmluZCBoaXQiCiBtc2dzdHIgIjwlcy1HPlx0XHRXZWl0ZXJzdWNoZW4iCiAKLSM6IGdpdGs6MTM3MworIzogZ2l0azoyNTQzCiBtc2dpZCAiPFJldHVybj5cdE1vdmUgdG8gbmV4dCBmaW5kIGhpdCIKIG1zZ3N0ciAiPEVpbmdhYmV0YXN0ZT5cdFdlaXRlcnN1Y2hlbiIKIAotIzogZ2l0azoxMzc0CisjOiBnaXRrOjI1NDQKIG1zZ2lkICIvXHRcdE1vdmUgdG8gbmV4dCBmaW5kIGhpdCwgb3IgcmVkbyBmaW5kIgogbXNnc3RyICIvXHRcdFdlaXRlcnN1Y2hlbiBvZGVyIG5ldWUgU3VjaGUgYmVnaW5uZW4iCiAKLSM6IGdpdGs6MTM3NQorIzogZ2l0azoyNTQ1CiBtc2dpZCAiP1x0XHRNb3ZlIHRvIHByZXZpb3VzIGZpbmQgaGl0IgogbXNnc3RyICI/XHRcdFLDvGNrd8OkcnRzIHdlaXRlcnN1Y2hlbiIKIAotIzogZ2l0azoxMzc2CisjOiBnaXRrOjI1NDYKIG1zZ2lkICJmXHRcdFNjcm9sbCBkaWZmIHZpZXcgdG8gbmV4dCBmaWxlIgogbXNnc3RyICJmXHRcdFZlcmdsZWljaCB6dXIgbsOkY2hzdGVuIERhdGVpICjCu2ZpbGXCqykgYmzDpHR0ZXJuIgogCi0jOiBnaXRrOjEzNzcKKyM6IGdpdGs6MjU0NwogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1TPlx0XHRTZWFyY2ggZm9yIG5leHQgaGl0IGluIGRpZmYgdmlldyIKIG1zZ3N0ciAiPCVzLVM+XHRcdFdlaXRlcnN1Y2hlbiBpbSBWZXJnbGVpY2giCiAKLSM6IGdpdGs6MTM3OAorIzogZ2l0azoyNTQ4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLVI+XHRcdFNlYXJjaCBmb3IgcHJldmlvdXMgaGl0IGluIGRpZmYgdmlldyIKIG1zZ3N0ciAiPCVzLVI+XHRcdFLDvGNrd8OkcnRzIHdlaXRlcnN1Y2hlbiBpbSBWZXJnbGVpY2giCiAKLSM6IGdpdGs6MTM3OQorIzogZ2l0azoyNTQ5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLUtQKz5cdEluY3JlYXNlIGZvbnQgc2l6ZSIKIG1zZ3N0ciAiPCVzLU51bW1lcmJsb2NrLVBsdXM+XHRTY2hyaWZ0Z3LDtsOfZSB2ZXJncsO2w59lcm4iCiAKLSM6IGdpdGs6MTM4MAorIzogZ2l0azoyNTUwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLXBsdXM+XHRJbmNyZWFzZSBmb250IHNpemUiCiBtc2dzdHIgIjwlcy1QbHVzPlx0U2NocmlmdGdyw7bDn2UgdmVyZ3LDtsOfZXJuIgogCi0jOiBnaXRrOjEzODEKKyM6IGdpdGs6MjU1MQogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1LUC0+XHREZWNyZWFzZSBmb250IHNpemUiCiBtc2dzdHIgIjwlcy1OdW1tZXJuYmxvY2stPiBTY2hyaWZ0Z3LDtsOfZSB2ZXJrbGVpbmVybiIKIAotIzogZ2l0azoxMzgyCisjOiBnaXRrOjI1NTIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtbWludXM+XHREZWNyZWFzZSBmb250IHNpemUiCiBtc2dzdHIgIjwlcy1NaW51cz5cdFNjaHJpZnRncsO2w59lIHZlcmtsZWluZXJuIgogCi0jOiBnaXRrOjEzODMKKyM6IGdpdGs6MjU1MwogbXNnaWQgIjxGNT5cdFx0VXBkYXRlIgogbXNnc3RyICI8RjU+XHRcdEFrdHVhbGlzaWVyZW4iCiAKLSM6IGdpdGs6MTg5NgotbXNnaWQgIkdpdGsgdmlldyBkZWZpbml0aW9uIgotbXNnc3RyICJHaXRrIEFuc2ljaHRlbiIKKyM6IGdpdGs6Mjk3OQorIywgdGNsLWZvcm1hdAorbXNnaWQgIkVycm9yIGdldHRpbmcgXCIlc1wiIGZyb20gJXM6IgorbXNnc3RyICJGZWhsZXIgYmVpbSBIb2xlbiB2b24gwrslc8KrIHZvbiDCuyVzwqs6IgogCi0jOiBnaXRrOjE5MjEKLW1zZ2lkICJOYW1lIgotbXNnc3RyICJOYW1lIgorIzogZ2l0azozMDM2IGdpdGs6MzA0NQorIywgdGNsLWZvcm1hdAorbXNnaWQgIkVycm9yIGNyZWF0aW5nIHRlbXBvcmFyeSBkaXJlY3RvcnkgJXM6IgorbXNnc3RyICJGZWhsZXIgYmVpbSBFcnpldWdlbiBlaW5lcyB0ZW1wb3LDpHJlbiBWZXJ6ZWljaG5pc3NlcyDCuyVzwqs6IgogCi0jOiBnaXRrOjE5MjQKLW1zZ2lkICJSZW1lbWJlciB0aGlzIHZpZXciCi1tc2dzdHIgIkRpZXNlIEFuc2ljaHQgc3BlaWNoZXJuIgorIzogZ2l0azozMDU4Cittc2dpZCAiY29tbWFuZCBmYWlsZWQ6IgorbXNnc3RyICJLb21tYW5kbyBmZWhsZ2VzY2hsYWdlbjoiCiAKLSM6IGdpdGs6MzEyNgotbXNnaWQgIkNvbW1pdHMgdG8gaW5jbHVkZSAoYXJndW1lbnRzIHRvIGdpdCBsb2cpOiIKLW1zZ3N0ciAiVmVyc2lvbmVuIGFuemVpZ2VuIChBcmd1bWVudGUgdm9uIGdpdC1sb2cpOiIKKyM6IGdpdGs6MzA3OAorbXNnaWQgIk5vIHN1Y2ggY29tbWl0IgorbXNnc3RyICJWZXJzaW9uIG5pY2h0IGdlZnVuZGVuIgogCi0jOiBnaXRrOjMxMzMKLW1zZ2lkICJDb21tYW5kIHRvIGdlbmVyYXRlIG1vcmUgY29tbWl0cyB0byBpbmNsdWRlOiIKLW1zZ3N0ciAiVmVyc2lvbnNsaXN0ZSBkdXJjaCBmb2xnZW5kZXMgS29tbWFuZG8gZXJ6ZXVnZW4gbGFzc2VuOiIKKyM6IGdpdGs6MzA4MworbXNnaWQgImdpdCBndWkgYmxhbWU6IGNvbW1hbmQgZmFpbGVkOiIKK21zZ3N0ciAiZ2l0IGd1aSBibGFtZTogS29tbWFuZG8gZmVobGdlc2NobGFnZW46IgogCi0jOiBnaXRrOjE5NDIKLW1zZ2lkICJFbnRlciBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdG8gaW5jbHVkZSwgb25lIHBlciBsaW5lOiIKLW1zZ3N0ciAiRm9sZ2VuZGUgRGF0ZWllbiB1bmQgVmVyemVpY2huaXNzZSBhbnplaWdlbiAoZWluZSBwcm8gWmVpbGUpOiIKKyM6IGdpdGs6MzM5OAorIywgdGNsLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IHJlYWQgbWVyZ2UgaGVhZDogJXMiCittc2dzdHIgIlp1c2FtbWVuZsO8aHJ1bmdzLVNwaXR6ZSBrb25udGUgbmljaHQgZ2VsZXNlbiB3ZXJkZW46ICVzIgogCi0jOiBnaXRrOjE5ODkKLW1zZ2lkICJFcnJvciBpbiBjb21taXQgc2VsZWN0aW9uIGFyZ3VtZW50czoiCi1tc2dzdHIgIkZlaGxlciBpbiBkZW4gYXVzZ2V3w6RobHRlbiBWZXJzaW9uZW46IgorIzogZ2l0azozNDA2CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRXJyb3IgcmVhZGluZyBpbmRleDogJXMiCittc2dzdHIgIkZlaGxlciBiZWltIExlc2VuIGRlciBCZXJlaXRzdGVsbHVuZyAowrtpbmRleMKrKTogJXMiCiAKLSM6IGdpdGs6MjA0MyBnaXRrOjIxMjcgZ2l0azoyNTgzIGdpdGs6MjU5NyBnaXRrOjM3ODEgZ2l0azo4Njg5IGdpdGs6ODY5MAotbXNnaWQgIk5vbmUiCi1tc2dzdHIgIktlaW5lIgorIzogZ2l0azozNDMxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3Qgc3RhcnQgZ2l0IGJsYW1lOiAlcyIKK21zZ3N0ciAiwrtnaXQgYmxhbWXCqyBrb25udGUgbmljaHQgZ2VzdGFydGV0IHdlcmRlbjogJXMiCiAKLSM6IGdpdGs6MjUzMSBnaXRrOjQzMzYgZ2l0azo1OTU5IGdpdGs6NTk3NAotbXNnaWQgIkRhdGUiCi1tc2dzdHIgIkRhdHVtIgotCi0jOiBnaXRrOjI1MzEgZ2l0azo0MzM2Ci1tc2dpZCAiQ0RhdGUiCi1tc2dzdHIgIkVpbnRyYWdlZGF0dW0iCi0KLSM6IGdpdGs6MjY4MCBnaXRrOjI2ODUKLW1zZ2lkICJEZXNjZW5kYW50IgotbXNnc3RyICJBYmvDtm1tbGluZyIKLQotIzogZ2l0azoyNjgxCi1tc2dpZCAiTm90IGRlc2NlbmRhbnQiCi1tc2dzdHIgIk5pY2h0IEFia8O2bW1saW5nIgotCi0jOiBnaXRrOjI2ODggZ2l0azoyNjkzCi1tc2dpZCAiQW5jZXN0b3IiCi1tc2dzdHIgIlZvcmfDpG5nZXIiCi0KLSM6IGdpdGs6MjY4OQotbXNnaWQgIk5vdCBhbmNlc3RvciIKLW1zZ3N0ciAiTmljaHQgVm9yZ8OkbmdlciIKLQotIzogZ2l0azoyOTI0Ci1tc2dpZCAiTG9jYWwgY2hhbmdlcyBjaGVja2VkIGluIHRvIGluZGV4IGJ1dCBub3QgY29tbWl0dGVkIgotbXNnc3RyICJMb2thbGUgw4RuZGVydW5nZW4gYmVyZWl0Z2VzdGVsbHQsIGFiZXIgbmljaHQgZWluZ2V0cmFnZW4iCi0KLSM6IGdpdGs6Mjk1NAotbXNnaWQgIkxvY2FsIHVuY29tbWl0dGVkIGNoYW5nZXMsIG5vdCBjaGVja2VkIGluIHRvIGluZGV4IgotbXNnc3RyICJMb2thbGUgw4RuZGVydW5nZW4sIG5pY2h0IGJlcmVpdGdlc3RlbGx0IgotCi0jOiBnaXRrOjQzMDUKKyM6IGdpdGs6MzQzNCBnaXRrOjYxNjAKIG1zZ2lkICJTZWFyY2hpbmciCiBtc2dzdHIgIlN1Y2hlbiIKIAotIzogZ2l0azo0NzY3CisjOiBnaXRrOjM0NjYKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJFcnJvciBydW5uaW5nIGdpdCBibGFtZTogJXMiCittc2dzdHIgIkZlaGxlciBiZWltIEF1c2bDvGhyZW4gdm9uIMK7Z2l0IGJsYW1lwqs6ICVzIgorCisjOiBnaXRrOjM0OTQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJUaGF0IGxpbmUgY29tZXMgZnJvbSBjb21taXQgJXMsICB3aGljaCBpcyBub3QgaW4gdGhpcyB2aWV3IgorbXNnc3RyICIiCisiRGllc2UgWmVpbGUgc3RhbW10IGF1cyBWZXJzaW9uICVzLCB3ZWxjaGUgbmljaHQgaW4gZGllc2VyIEFuc2ljaHQgZ2V6ZWlndCAiCisid2lyZC4iCisKKyM6IGdpdGs6MzUwOAorbXNnaWQgIkV4dGVybmFsIGRpZmYgdmlld2VyIGZhaWxlZDoiCittc2dzdHIgIkV4dGVybmVzIFZlcmdsZWljaC0oRGlmZi0pUHJvZ3JhbW0gZmVobGdlc2NobGFnZW46IgorCisjOiBnaXRrOjMyMTAKK21zZ2lkICJHaXRrIHZpZXcgZGVmaW5pdGlvbiIKK21zZ3N0ciAiR2l0ayBBbnNpY2h0ZW4iCisKKyM6IGdpdGs6MzYzMAorbXNnaWQgIlJlbWVtYmVyIHRoaXMgdmlldyIKK21zZ3N0ciAiRGllc2UgQW5zaWNodCBzcGVpY2hlcm4iCisKKyM6IGdpdGs6MzIzMgorbXNnaWQgIkNvbW1pdHMgdG8gaW5jbHVkZSAoYXJndW1lbnRzIHRvIGdpdCBsb2cpOiIKK21zZ3N0ciAiVmVyc2lvbmVuIGFuemVpZ2VuIChBcmd1bWVudGUgdm9uIGdpdC1sb2cpOiIKKworIzogZ2l0azozNjMyCittc2dpZCAiVXNlIGFsbCByZWZzIgorbXNnc3RyICJBbGxlIFp3ZWlnZSB2ZXJ3ZW5kZW4iCisKKyM6IGdpdGs6MzYzMworbXNnaWQgIlN0cmljdGx5IHNvcnQgYnkgZGF0ZSIKK21zZ3N0ciAiU3RyZW5nIG5hY2ggRGF0dW0gc29ydGllcmVuIgorCisjOiBnaXRrOjM2MzQKK21zZ2lkICJNYXJrIGJyYW5jaCBzaWRlcyIKK21zZ3N0ciAiWndlaWctU2VpdGVuIG1hcmtpZXJlbiIKKworIzogZ2l0azozNjM1Cittc2dpZCAiU2luY2UgZGF0ZToiCittc2dzdHIgIlZvbiBEYXR1bToiCisKKyM6IGdpdGs6MzYzNgorbXNnaWQgIlVudGlsIGRhdGU6IgorbXNnc3RyICJCaXMgRGF0dW06IgorCisjOiBnaXRrOjM2MzcKK21zZ2lkICJNYXggY291bnQ6IgorbXNnc3RyICJNYXguIEFuemFobDoiCisKKyM6IGdpdGs6MzYzOAorbXNnaWQgIlNraXA6IgorbXNnc3RyICLDnGJlcnNwcmluZ2VuOiIKKworIzogZ2l0azozNjM5Cittc2dpZCAiTGltaXQgdG8gZmlyc3QgcGFyZW50IgorbXNnc3RyICJBdWYgZXJzdGUgRWx0ZXJudmVyc2lvbiBiZXNjaHLDpG5rZW4iCisKKyM6IGdpdGs6MzY0MAorbXNnaWQgIkNvbW1hbmQgdG8gZ2VuZXJhdGUgbW9yZSBjb21taXRzIHRvIGluY2x1ZGU6IgorbXNnc3RyICJWZXJzaW9uc2xpc3RlIGR1cmNoIGZvbGdlbmRlcyBLb21tYW5kbyBlcnpldWdlbiBsYXNzZW46IgorCisjOiBnaXRrOjM3NDkKK21zZ2lkICJOYW1lIgorbXNnc3RyICJOYW1lIgorCisjOiBnaXRrOjM3OTcKK21zZ2lkICJFbnRlciBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdG8gaW5jbHVkZSwgb25lIHBlciBsaW5lOiIKK21zZ3N0ciAiRm9sZ2VuZGUgRGF0ZWllbiB1bmQgVmVyemVpY2huaXNzZSBhbnplaWdlbiAoZWluZSBwcm8gWmVpbGUpOiIKKworIzogZ2l0azozODExCittc2dpZCAiQXBwbHkgKEY1KSIKK21zZ3N0ciAiQW53ZW5kZW4gKEY1KSIKKworIzogZ2l0azozODQ5Cittc2dpZCAiRXJyb3IgaW4gY29tbWl0IHNlbGVjdGlvbiBhcmd1bWVudHM6IgorbXNnc3RyICJGZWhsZXIgaW4gZGVuIGF1c2dld8OkaGx0ZW4gVmVyc2lvbmVuOiIKKworIzogZ2l0azozMzQ3IGdpdGs6MzM5OSBnaXRrOjM4NDIgZ2l0azozODU2IGdpdGs6NTA2MCBnaXRrOjEwMTQxIGdpdGs6MTAxNDIKK21zZ2lkICJOb25lIgorbXNnc3RyICJLZWluZSIKKworIzogZ2l0azozNzkwIGdpdGs6NTU4MCBnaXRrOjcyODcgZ2l0azo3MzAyCittc2dpZCAiRGF0ZSIKK21zZ3N0ciAiRGF0dW0iCisKKyM6IGdpdGs6Mzc5MCBnaXRrOjU1ODAKK21zZ2lkICJDRGF0ZSIKK21zZ3N0ciAiRWludHJhZ2VkYXR1bSIKKworIzogZ2l0azozOTM5IGdpdGs6Mzk0NAorbXNnaWQgIkRlc2NlbmRhbnQiCittc2dzdHIgIkFia8O2bW1saW5nIgorCisjOiBnaXRrOjM5NDAKK21zZ2lkICJOb3QgZGVzY2VuZGFudCIKK21zZ3N0ciAiTmljaHQgQWJrw7ZtbWxpbmciCisKKyM6IGdpdGs6Mzk0NyBnaXRrOjM5NTIKK21zZ2lkICJBbmNlc3RvciIKK21zZ3N0ciAiVm9yZ8OkbmdlciIKKworIzogZ2l0azozOTQ4Cittc2dpZCAiTm90IGFuY2VzdG9yIgorbXNnc3RyICJOaWNodCBWb3Jnw6RuZ2VyIgorCisjOiBnaXRrOjQxODcKK21zZ2lkICJMb2NhbCBjaGFuZ2VzIGNoZWNrZWQgaW4gdG8gaW5kZXggYnV0IG5vdCBjb21taXR0ZWQiCittc2dzdHIgIkxva2FsZSDDhG5kZXJ1bmdlbiBiZXJlaXRnZXN0ZWxsdCwgYWJlciBuaWNodCBlaW5nZXRyYWdlbiIKKworIzogZ2l0azo0MjIwCittc2dpZCAiTG9jYWwgdW5jb21taXR0ZWQgY2hhbmdlcywgbm90IGNoZWNrZWQgaW4gdG8gaW5kZXgiCittc2dzdHIgIkxva2FsZSDDhG5kZXJ1bmdlbiwgbmljaHQgYmVyZWl0Z2VzdGVsbHQiCisKKyM6IGdpdGs6NjY3MwogbXNnaWQgIlRhZ3M6IgogbXNnc3RyICJNYXJraWVydW5nZW46IgogCi0jOiBnaXRrOjQ3ODQgZ2l0azo0NzkwIGdpdGs6NTk1MgorIzogZ2l0azo2MDY2IGdpdGs6NjA3MiBnaXRrOjcyODAKIG1zZ2lkICJQYXJlbnQiCiBtc2dzdHIgIkVsdGVybiIKIAotIzogZ2l0azo0Nzk1CisjOiBnaXRrOjYwNzcKIG1zZ2lkICJDaGlsZCIKIG1zZ3N0ciAiS2luZCIKIAotIzogZ2l0azo0ODA0CisjOiBnaXRrOjYwODYKIG1zZ2lkICJCcmFuY2giCiBtc2dzdHIgIlp3ZWlnIgogCi0jOiBnaXRrOjQ4MDcKKyM6IGdpdGs6NjA4OQogbXNnaWQgIkZvbGxvd3MiCiBtc2dzdHIgIkZvbGd0IGF1ZiIKIAotIzogZ2l0azo0ODEwCisjOiBnaXRrOjYwOTIKIG1zZ2lkICJQcmVjZWRlcyIKIG1zZ3N0ciAiVm9yZ8OkbmdlciB2b24iCiAKLSM6IGdpdGs6NTA5NAotbXNnaWQgIkVycm9yIGdldHRpbmcgbWVyZ2UgZGlmZnM6IgotbXNnc3RyICJGZWhsZXIgYmVpbSBMYWRlbiBkZXMgVmVyZ2xlaWNoczoiCisjOiBnaXRrOjcyMDkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJFcnJvciBnZXR0aW5nIGRpZmZzOiAlcyIKK21zZ3N0ciAiRmVobGVyIGJlaW0gTGFkZW4gZGVzIFZlcmdsZWljaHM6ICVzIgogCi0jOiBnaXRrOjU3NzkKKyM6IGdpdGs6Nzc0OAogbXNnaWQgIkdvdG86IgogbXNnc3RyICJHZWhlIHp1OiIKIAotIzogZ2l0azo1NzgxCisjOiBnaXRrOjcxMTUKIG1zZ2lkICJTSEExIElEOiIKIG1zZ3N0ciAiU0hBMS1IYXNod2VydDoiCiAKLSM6IGdpdGs6NTgwNgorIzogZ2l0azo3MTM0CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiU2hvcnQgU0hBMSBpZCAlcyBpcyBhbWJpZ3VvdXMiCiBtc2dzdHIgIkt1cnplciBTSEExLUhhc2h3ZXJ0IMK7JXPCqyBpc3QgbWVocmRldXRpZyIKIAotIzogZ2l0azo1ODE4CisjOiBnaXRrOjcxNDYKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJTSEExIGlkICVzIGlzIG5vdCBrbm93biIKIG1zZ3N0ciAiU0hBMS1IYXNod2VydCDCuyVzwqsgdW5iZWthbm50IgogCi0jOiBnaXRrOjU4MjAKKyM6IGdpdGs6NzE0OAogIywgdGNsLWZvcm1hdAogbXNnaWQgIlRhZy9IZWFkICVzIGlzIG5vdCBrbm93biIKIG1zZ3N0ciAiTWFya2llcnVuZy9ad2VpZyDCuyVzwqsgaXN0IHVuYmVrYW5udCIKIAotIzogZ2l0azo1OTYyCisjOiBnaXRrOjcyOTAKIG1zZ2lkICJDaGlsZHJlbiIKIG1zZ3N0ciAiS2luZGVyIgogCi0jOiBnaXRrOjYwMTkKKyM6IGdpdGs6NzM0NwogIywgdGNsLWZvcm1hdAogbXNnaWQgIlJlc2V0ICVzIGJyYW5jaCB0byBoZXJlIgogbXNnc3RyICJad2VpZyDCuyVzwqsgaGllcmhlciB6dXLDvGNrc2V0emVuIgogCi0jOiBnaXRrOjcyMDQKKyM6IGdpdGs6NzM0OQogbXNnaWQgIkRldGFjaGVkIGhlYWQ6IGNhbid0IHJlc2V0IgogbXNnc3RyICJad2VpZ3NwaXR6ZSBpc3QgYWJnZXRyZW5udDogWnVyw7xja3NldHplbiBuaWNodCBtw7ZnbGljaCIKIAotIzogZ2l0azo3MjM2CisjOiBnaXRrOjczODEKIG1zZ2lkICJUb3AiCiBtc2dzdHIgIk9iZW4iCiAKLSM6IGdpdGs6NjA1MQorIzogZ2l0azo3MzgyCiBtc2dpZCAiRnJvbSIKIG1zZ3N0ciAiVm9uIgogCi0jOiBnaXRrOjYwNTYKKyM6IGdpdGs6NzM4NwogbXNnaWQgIlRvIgogbXNnc3RyICJiaXMiCiAKLSM6IGdpdGs6NjA3OQorIzogZ2l0azo3NDEwCiBtc2dpZCAiR2VuZXJhdGUgcGF0Y2giCiBtc2dzdHIgIlBhdGNoIGVyc3RlbGxlbiIKIAotIzogZ2l0azo2MDgxCisjOiBnaXRrOjc0MTIKIG1zZ2lkICJGcm9tOiIKIG1zZ3N0ciAiVm9uOiIKIAotIzogZ2l0azo2MDkwCisjOiBnaXRrOjc0MjEKIG1zZ2lkICJUbzoiCiBtc2dzdHIgImJpczoiCiAKLSM6IGdpdGs6NjA5OQorIzogZ2l0azo3NDMwCiBtc2dpZCAiUmV2ZXJzZSIKIG1zZ3N0ciAiVW1nZWtlaHJ0IgogCi0jOiBnaXRrOjYxMDEgZ2l0azo2MjcwCisjOiBnaXRrOjc0MzIgZ2l0azo3NjA3CiBtc2dpZCAiT3V0cHV0IGZpbGU6IgogbXNnc3RyICJBdXNnYWJlZGF0ZWk6IgogCi0jOiBnaXRrOjYxMDcKKyM6IGdpdGs6NzQzOAogbXNnaWQgIkdlbmVyYXRlIgogbXNnc3RyICJFcnpldWdlbiIKIAotIzogZ2l0azo2MTQzCisjOiBnaXRrOjc0NzQKIG1zZ2lkICJFcnJvciBjcmVhdGluZyBwYXRjaDoiCiBtc2dzdHIgIkZlaGxlciBiZWltIFBhdGNoIGVyemV1Z2VuOiIKIAotIzogZ2l0azo2MTY1IGdpdGs6NjI1OCBnaXRrOjYzMTIKKyM6IGdpdGs6NzQ5NiBnaXRrOjc1OTUgZ2l0azo3NjQ5CiBtc2dpZCAiSUQ6IgogbXNnc3RyICJJRDoiCiAKLSM6IGdpdGs6NjE3NAorIzogZ2l0azo3NTA1CiBtc2dpZCAiVGFnIG5hbWU6IgogbXNnc3RyICJNYXJraWVydW5nc25hbWU6IgogCi0jOiBnaXRrOjYxNzggZ2l0azo2MzIxCisjOiBnaXRrOjc1MDkgZ2l0azo3NjU5CiBtc2dpZCAiQ3JlYXRlIgogbXNnc3RyICJFcnN0ZWxsZW4iCiAKLSM6IGdpdGs6NjE5MworIzogZ2l0azo3NTI0CiBtc2dpZCAiTm8gdGFnIG5hbWUgc3BlY2lmaWVkIgogbXNnc3RyICJLZWluIE1hcmtpZXJ1bmdzbmFtZSBhbmdlZ2ViZW4iCiAKLSM6IGdpdGs6NjE5NworIzogZ2l0azo3NTI4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVGFnIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIKIG1zZ3N0ciAiTWFya2llcnVuZyDCuyVzwqsgZXhpc3RpZXJ0IGJlcmVpdHMuIgogCi0jOiBnaXRrOjYyMDMKKyM6IGdpdGs6NzUzNAogbXNnaWQgIkVycm9yIGNyZWF0aW5nIHRhZzoiCiBtc2dzdHIgIkZlaGxlciBiZWkgTWFya2llcnVuZyBlcnN0ZWxsZW46IgogCi0jOiBnaXRrOjYyNjcKKyM6IGdpdGs6NzYwNAogbXNnaWQgIkNvbW1hbmQ6IgogbXNnc3RyICJLb21tYW5kbzoiCiAKLSM6IGdpdGs6NjI3NQorIzogZ2l0azo3NjEyCiBtc2dpZCAiV3JpdGUiCiBtc2dzdHIgIlNjaHJlaWJlbiIKIAotIzogZ2l0azo2MjkxCisjOiBnaXRrOjc2MjgKIG1zZ2lkICJFcnJvciB3cml0aW5nIGNvbW1pdDoiCiBtc2dzdHIgIkZlaGxlciBiZWltIFNjaHJlaWJlbiBkZXIgVmVyc2lvbjoiCiAKLSM6IGdpdGs6NjMxNworIzogZ2l0azo3NjU0CiBtc2dpZCAiTmFtZToiCiBtc2dzdHIgIk5hbWU6IgogCi0jOiBnaXRrOjYzMzYKKyM6IGdpdGs6NzY3NAogbXNnaWQgIlBsZWFzZSBzcGVjaWZ5IGEgbmFtZSBmb3IgdGhlIG5ldyBicmFuY2giCiBtc2dzdHIgIkJpdHRlIGdlYmVuIFNpZSBlaW5lbiBOYW1lbiBmw7xyIGRlbiBuZXVlbiBad2VpZyBhbi4iCiAKLSM6IGdpdGs6NjM2NQorIzogZ2l0azo4MzI4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQnJhbmNoICclcycgYWxyZWFkeSBleGlzdHMuIE92ZXJ3cml0ZT8iCittc2dzdHIgIlp3ZWlnIMK7JXPCqyBleGlzdGllcnQgYmVyZWl0cy4gU29sbCBlciDDvGJlcnNjaHJpZWJlbiB3ZXJkZW4/IgorCisjOiBnaXRrOjgzOTQKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJDb21taXQgJXMgaXMgYWxyZWFkeSBpbmNsdWRlZCBpbiBicmFuY2ggJXMgLS0gcmVhbGx5IHJlLWFwcGx5IGl0PyIKIG1zZ3N0ciAiIgogIlZlcnNpb24gwrslc8KrIGlzdCBiZXJlaXRzIGltIFp3ZWlnIMK7JXPCqyBlbnRoYWx0ZW4gLS0gdHJvdHpkZW0gZXJuZXV0ICIKICJlaW50cmFnZW4/IgogCi0jOiBnaXRrOjYzNzAKKyM6IGdpdGs6NzcxOAogbXNnaWQgIkNoZXJyeS1waWNraW5nIgogbXNnc3RyICJWZXJzaW9uIHBmbMO8Y2tlbiIKIAotIzogZ2l0azo2MzgyCisjOiBnaXRrOjg0MDgKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiQ2hlcnJ5LXBpY2sgZmFpbGVkIGJlY2F1c2Ugb2YgbG9jYWwgY2hhbmdlcyB0byBmaWxlICclcycuXG4iCisiUGxlYXNlIGNvbW1pdCwgcmVzZXQgb3Igc3Rhc2ggeW91ciBjaGFuZ2VzIGFuZCB0cnkgYWdhaW4uIgorbXNnc3RyICIiCisiUGZsw7xja2VuIGZlaGxnZXNjaGxhZ2VuLCBkYSBub2NoIGxva2FsZSDDhG5kZXJ1bmdlbiBpbiBEYXRlaSDCuyVzwqtcbiIKKyJ2b3JsaWVnZW4uIEJpdHRlIGRpZXNlIMOEbmRlcnVuZ2VuIGVpbnRyYWdlbiwgenVyw7xja3NldHplbiBvZGVyXG4iCisiendpc2NoZW5zcGVpY2hlcm4gKMK7Z2l0IHN0YXNowrspIHVuZCBkYW5uIGVybmV1dCB2ZXJzdWNoZW4uIgorCisjOiBnaXRrOjg0MTQKK21zZ2lkICIiCisiQ2hlcnJ5LXBpY2sgZmFpbGVkIGJlY2F1c2Ugb2YgbWVyZ2UgY29uZmxpY3QuXG4iCisiRG8geW91IHdpc2ggdG8gcnVuIGdpdCBjaXRvb2wgdG8gcmVzb2x2ZSBpdD8iCittc2dzdHIgIiIKKyJQZmzDvGNrZW4gZmVobGdlc2NobGFnZW4sIGRhIGVpbiBadXNhbW1lbmbDvGhydW5ncy1Lb25mbGlrdCBhdWZnZXRyZXRlblxuIgorImlzdC4gU29sbCBkYXMgwrtnaXQgY2l0b29swqsgKFp1c2FtbWVuZsO8aHJ1bmdzLVdlcmt6ZXVnKSBhdWZnZXJ1ZmVuXG4iCisid2VyZGVuLCB1bSBkaWVzZW4gS29uZmxpa3QgYXVmenVsw7ZzZW4/IgorCisjOiBnaXRrOjg0MzAKIG1zZ2lkICJObyBjaGFuZ2VzIGNvbW1pdHRlZCIKIG1zZ3N0ciAiS2VpbmUgw4RuZGVydW5nZW4gZWluZ2V0cmFnZW4iCiAKLSM6IGdpdGs6NjQwNQorIzogZ2l0azo3NzQ1CiBtc2dpZCAiQ29uZmlybSByZXNldCIKIG1zZ3N0ciAiWnVyw7xja3NldHplbiBiZXN0w6R0aWdlbiIKIAotIzogZ2l0azo2NDA3CisjOiBnaXRrOjc3NDcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJSZXNldCBicmFuY2ggJXMgdG8gJXM/IgogbXNnc3RyICJad2VpZyDCuyVzwqsgYXVmIMK7JXPCqyB6dXLDvGNrc2V0emVuPyIKIAotIzogZ2l0azo2NDExCisjOiBnaXRrOjc3NTEKIG1zZ2lkICJSZXNldCB0eXBlOiIKIG1zZ3N0ciAiQXJ0IGRlcyBadXLDvGNrc2V0emVuczoiCiAKLSM6IGdpdGs6NjQxNQorIzogZ2l0azo3NzU1CiBtc2dpZCAiU29mdDogTGVhdmUgd29ya2luZyB0cmVlIGFuZCBpbmRleCB1bnRvdWNoZWQiCiBtc2dzdHIgIkhhcm1sb3M6IEFyYmVpdHNrb3BpZSB1bmQgQmVyZWl0c3RlbGx1bmcgdW52ZXLDpG5kZXJ0IgogCi0jOiBnaXRrOjY0MTgKKyM6IGdpdGs6Nzc1OAogbXNnaWQgIk1peGVkOiBMZWF2ZSB3b3JraW5nIHRyZWUgdW50b3VjaGVkLCByZXNldCBpbmRleCIKIG1zZ3N0ciAiIgogIkdlbWlzY2h0OiBBcmJlaXRza29waWUgdW52ZXLDpG5kZXJ0LFxuIgogIkJlcmVpdHN0ZWxsdW5nIHp1csO8Y2tnZXNldHp0IgogCi0jOiBnaXRrOjY0MjEKKyM6IGdpdGs6Nzc2MQogbXNnaWQgIiIKICJIYXJkOiBSZXNldCB3b3JraW5nIHRyZWUgYW5kIGluZGV4XG4iCiAiKGRpc2NhcmQgQUxMIGxvY2FsIGNoYW5nZXMpIgpAQCAtNzI5LDIxICs4NjgsMjEgQEAKICJIYXJ0OiBBcmJlaXRza29waWUgdW5kIEJlcmVpdHN0ZWxsdW5nXG4iCiAiKEFsbGUgbG9rYWxlbiDDhG5kZXJ1bmdlbiB3ZXJkZW4gZ2Vsw7ZzY2h0KSIKIAotIzogZ2l0azo2NDM3CisjOiBnaXRrOjc3NzcKIG1zZ2lkICJSZXNldHRpbmciCiBtc2dzdHIgIlp1csO8Y2tzZXR6ZW4iCiAKLSM6IGdpdGs6NjQ5NAorIzogZ2l0azo3ODM0CiBtc2dpZCAiQ2hlY2tpbmcgb3V0IgogbXNnc3RyICJVbXN0ZWxsZW4iCiAKLSM6IGdpdGs6NjUyNAorIzogZ2l0azo3ODg1CiBtc2dpZCAiQ2Fubm90IGRlbGV0ZSB0aGUgY3VycmVudGx5IGNoZWNrZWQtb3V0IGJyYW5jaCIKIG1zZ3N0ciAiIgogIkRlciBad2VpZywgYXVmIGRlbiBkaWUgQXJiZWl0c2tvcGllIG1vbWVudGFuIHVtZ2VzdGVsbHQgaXN0LCBrYW5uIG5pY2h0ICIKICJnZWzDtnNjaHQgd2VyZGVuLiIKIAotIzogZ2l0azo2NTMwCisjOiBnaXRrOjc4OTEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiVGhlIGNvbW1pdHMgb24gYnJhbmNoICVzIGFyZW4ndCBvbiBhbnkgb3RoZXIgYnJhbmNoLlxuIgpAQCAtNzUyLDE2ICs4OTEsMTYgQEAKICJEaWUgVmVyc2lvbmVuIGF1ZiBad2VpZyDCuyVzwqsgZXhpc3RpZXJlbiBhdWYga2VpbmVtIGFuZGVyZW4gWndlaWcuXG4iCiAiWndlaWcgwrslc8KrIHRyb3R6ZGVtIGzDtnNjaGVuPyIKIAotIzogZ2l0azo2NTYxCisjOiBnaXRrOjc5MjIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJUYWdzIGFuZCBoZWFkczogJXMiCiBtc2dzdHIgIk1hcmtpZXJ1bmdlbiB1bmQgWndlaWdlOiAlcyIKIAotIzogZ2l0azo2NTc1CisjOiBnaXRrOjc5MzYKIG1zZ2lkICJGaWx0ZXIiCiBtc2dzdHIgIkZpbHRlcm4iCiAKLSM6IGdpdGs6Njg2OQorIzogZ2l0azo4MjMwCiBtc2dpZCAiIgogIkVycm9yIHJlYWRpbmcgY29tbWl0IHRvcG9sb2d5IGluZm9ybWF0aW9uOyBicmFuY2ggYW5kIHByZWNlZGluZy9mb2xsb3dpbmcgIgogInRhZyBpbmZvcm1hdGlvbiB3aWxsIGJlIGluY29tcGxldGUuIgpAQCAtNzY5LDEyNSArOTA4LDE1NyBAQAogIkZlaGxlciBiZWltIExlc2VuIGRlciBTdHJ1a3R1cmluZm9ybWF0aW9uZW47IFp3ZWlnZSB1bmQgVm9yZ8Okbmdlci9OYWNoZm9sZ2VyICIKICJJbmZvcm1hdGlvbmVuIHdlcmRlbiB1bnZvbGxzdMOkbmRpZyBzZWluLiIKIAotIzogZ2l0azo3ODUzCisjOiBnaXRrOjkyMTYKIG1zZ2lkICJUYWciCiBtc2dzdHIgIk1hcmtpZXJ1bmciCiAKLSM6IGdpdGs6Nzg1MworIzogZ2l0azo5MjE2CiBtc2dpZCAiSWQiCiBtc2dzdHIgIklkIgogCi0jOiBnaXRrOjc4OTMKKyM6IGdpdGs6OTI2MgogbXNnaWQgIkdpdGsgZm9udCBjaG9vc2VyIgogbXNnc3RyICJHaXRrIFNjaHJpZnRlbiB3w6RobGVuIgogCi0jOiBnaXRrOjc5MTAKKyM6IGdpdGs6OTI3OQogbXNnaWQgIkIiCiBtc2dzdHIgIkYiCiAKLSM6IGdpdGs6NzkxMworIzogZ2l0azo5MjgyCiBtc2dpZCAiSSIKIG1zZ3N0ciAiSyIKIAotIzogZ2l0azo4MDA2CisjOiBnaXRrOjkzNzUKIG1zZ2lkICJHaXRrIHByZWZlcmVuY2VzIgogbXNnc3RyICJHaXRrIEVpbnN0ZWxsdW5nZW4iCiAKLSM6IGdpdGs6ODAwNworIzogZ2l0azo5Mzc2CiBtc2dpZCAiQ29tbWl0IGxpc3QgZGlzcGxheSBvcHRpb25zIgogbXNnc3RyICJBbnplaWdlIFZlcnNpb25zbGlzdGUiCiAKLSM6IGdpdGs6ODAxMAorIzogZ2l0azo5Mzc5CiBtc2dpZCAiTWF4aW11bSBncmFwaCB3aWR0aCAobGluZXMpIgogbXNnc3RyICJNYXhpbWFsZSBHcmFwaGVuYnJlaXRlIChaZWlsZW4pIgogCi0jOiBnaXRrOjgwMTQKKyM6IGdpdGs6OTM4MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIk1heGltdW0gZ3JhcGggd2lkdGggKCUgb2YgcGFuZSkiCiBtc2dzdHIgIk1heGltYWxlIEdyYXBoZW5icmVpdGUgKCUgZGVzIEZlbnN0ZXJzKSIKIAotIzogZ2l0azo4MDE5CisjOiBnaXRrOjkzODgKIG1zZ2lkICJTaG93IGxvY2FsIGNoYW5nZXMiCiBtc2dzdHIgIkxva2FsZSDDhG5kZXJ1bmdlbiBhbnplaWdlbiIKIAotIzogZ2l0azo4MDI0CisjOiBnaXRrOjkzOTMKIG1zZ2lkICJBdXRvLXNlbGVjdCBTSEExIgogbXNnc3RyICJTSEExLUhhc2h3ZXJ0IGF1dG9tYXRpc2NoIG1hcmtpZXJlbiIKIAotIzogZ2l0azo4MDI5CisjOiBnaXRrOjkzOTgKIG1zZ2lkICJEaWZmIGRpc3BsYXkgb3B0aW9ucyIKIG1zZ3N0ciAiQW56ZWlnZSBWZXJnbGVpY2giCiAKLSM6IGdpdGs6ODAzMQorIzogZ2l0azo5NDAwCiBtc2dpZCAiVGFiIHNwYWNpbmciCiBtc2dzdHIgIlRhYnVsYXRvcmJyZWl0ZSIKIAotIzogZ2l0azo4MDM1CisjOiBnaXRrOjk0MDQKIG1zZ2lkICJEaXNwbGF5IG5lYXJieSB0YWdzIgogbXNnc3RyICJOYWhlbGllZ2VuZGUgw5xiZXJzY2hyaWZ0ZW4gYW56ZWlnZW4iCiAKLSM6IGdpdGs6ODA0MAorIzogZ2l0azo5NDA5CiBtc2dpZCAiTGltaXQgZGlmZnMgdG8gbGlzdGVkIHBhdGhzIgogbXNnc3RyICJWZXJnbGVpY2ggbnVyIGbDvHIgYW5nZXplaWd0ZSBQZmFkZSIKIAotIzogZ2l0azo5MjY0CisjOiBnaXRrOjk0MTQKK21zZ2lkICJTdXBwb3J0IHBlci1maWxlIGVuY29kaW5ncyIKK21zZ3N0ciAiWmVpY2hlbmtvZGllcnVuZyBwcm8gRGF0ZWkgZXJtaXR0ZWxuIgorCisjOiBnaXRrOjk0MjEKIG1zZ2lkICJFeHRlcm5hbCBkaWZmIHRvb2wiCiBtc2dzdHIgIkV4dGVybmVzIFZlcmdsZWljaC0oRGlmZi0pUHJvZ3JhbW0iCiAKLSM6IGdpdGs6OTI2NgorIzogZ2l0azo5NDIzCiBtc2dpZCAiQ2hvb3NlLi4uIgogbXNnc3RyICJXw6RobGVuLi4uIgogCi0jOiBnaXRrOjkyNzEKKyM6IGdpdGs6OTQyOAogbXNnaWQgIkNvbG9yczogcHJlc3MgdG8gY2hvb3NlIgogbXNnc3RyICJGYXJiZW46IEtsaWNrZW4genVtIFfDpGhsZW4iCiAKLSM6IGdpdGs6ODA0OAorIzogZ2l0azo5NDMxCiBtc2dpZCAiQmFja2dyb3VuZCIKIG1zZ3N0ciAiSGludGVyZ3J1bmQiCiAKLSM6IGdpdGs6ODA1MgorIzogZ2l0azoxMDE1MyBnaXRrOjEwMTgzCittc2dpZCAiYmFja2dyb3VuZCIKK21zZ3N0ciAiSGludGVyZ3J1bmQiCisKKyM6IGdpdGs6MTAxNTYKIG1zZ2lkICJGb3JlZ3JvdW5kIgogbXNnc3RyICJWb3JkZXJncnVuZCIKIAotIzogZ2l0azo4MDU2CisjOiBnaXRrOjEwMTU3Cittc2dpZCAiZm9yZWdyb3VuZCIKK21zZ3N0ciAiVm9yZGVyZ3J1bmQiCisKKyM6IGdpdGs6MTAxNjAKIG1zZ2lkICJEaWZmOiBvbGQgbGluZXMiCiBtc2dzdHIgIlZlcmdsZWljaDogQWx0ZSBaZWlsZW4iCiAKLSM6IGdpdGs6ODA2MQorIzogZ2l0azoxMDE2MQorbXNnaWQgImRpZmYgb2xkIGxpbmVzIgorbXNnc3RyICJWZXJnbGVpY2ggLSBBbHRlIFplaWxlbiIKKworIzogZ2l0azoxMDE2NQogbXNnaWQgIkRpZmY6IG5ldyBsaW5lcyIKIG1zZ3N0ciAiVmVyZ2xlaWNoOiBOZXVlIFplaWxlbiIKIAotIzogZ2l0azo4MDY2CisjOiBnaXRrOjEwMTY2Cittc2dpZCAiZGlmZiBuZXcgbGluZXMiCittc2dzdHIgIlZlcmdsZWljaCAtIE5ldWUgWmVpbGVuIgorCisjOiBnaXRrOjEwMTcwCiBtc2dpZCAiRGlmZjogaHVuayBoZWFkZXIiCiBtc2dzdHIgIlZlcmdsZWljaDogw4RuZGVydW5nc3RpdGVsIgogCi0jOiBnaXRrOjgwNzIKKyM6IGdpdGs6MTAxNzIKK21zZ2lkICJkaWZmIGh1bmsgaGVhZGVyIgorbXNnc3RyICJWZXJnbGVpY2ggLSDDhG5kZXJ1bmdzdGl0ZWwiCisKKyM6IGdpdGs6MTAxNzYKK21zZ2lkICJNYXJrZWQgbGluZSBiZyIKK21zZ3N0ciAiTWFya2llcnRlIFplaWxlIEhpbnRlcmdydW5kIgorCisjOiBnaXRrOjEwMTc4Cittc2dpZCAibWFya2VkIGxpbmUgYmFja2dyb3VuZCIKK21zZ3N0ciAibWFya2llcnRlIFplaWxlIEhpbnRlcmdydW5kIgorCisjOiBnaXRrOjEwMTgyCiBtc2dpZCAiU2VsZWN0IGJnIgogbXNnc3RyICJIaW50ZXJncnVuZGZhcmJlIEF1c3fDpGhsZW4iCiAKLSM6IGdpdGs6ODA3NgorIzogZ2l0azo5NDU5CiBtc2dpZCAiRm9udHM6IHByZXNzIHRvIGNob29zZSIKIG1zZ3N0ciAiU2NocmlmdGFydDogS2xpY2tlbiB6dW0gV8OkaGxlbiIKIAotIzogZ2l0azo4MDc4CisjOiBnaXRrOjk0NjEKIG1zZ2lkICJNYWluIGZvbnQiCiBtc2dzdHIgIlByb2dyYW1tc2NocmlmdGFydCIKIAotIzogZ2l0azo4MDc5CisjOiBnaXRrOjk0NjIKIG1zZ2lkICJEaWZmIGRpc3BsYXkgZm9udCIKIG1zZ3N0ciAiVmVyZ2xlaWNoIgogCi0jOiBnaXRrOjgwODAKKyM6IGdpdGs6OTQ2MwogbXNnaWQgIlVzZXIgaW50ZXJmYWNlIGZvbnQiCiBtc2dzdHIgIkJlc2NocmlmdHVuZ2VuIgogCi0jOiBnaXRrOjgwOTYKKyM6IGdpdGs6OTQ4OAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkdpdGs6IGNob29zZSBjb2xvciBmb3IgJXMiCiBtc2dzdHIgIkdpdGs6IEZhcmJlIHfDpGhsZW4gZsO8ciAlcyIKIAotIzogZ2l0azo4NDc3CisjOiBnaXRrOjk5MzQKIG1zZ2lkICIiCiAiU29ycnksIGdpdGsgY2Fubm90IHJ1biB3aXRoIHRoaXMgdmVyc2lvbiBvZiBUY2wvVGsuXG4iCiAiIEdpdGsgcmVxdWlyZXMgYXQgbGVhc3QgVGNsL1RrIDguNC4iCkBAIC04OTUsMjQgKzEwNjYsMjQgQEAKICJHaXRrIGzDpHVmdCBuaWNodCBtaXQgZGllc2VyIFZlcnNpb24gdm9uIFRjbC9Uay5cbiIKICJHaXRrIGJlbsO2dGlndCBtaW5kZXN0ZW5zIFRjbC9UayA4LjQuIgogCi0jOiBnaXRrOjg1NjYKKyM6IGdpdGs6MTAwNDcKIG1zZ2lkICJDYW5ub3QgZmluZCBhIGdpdCByZXBvc2l0b3J5IGhlcmUuIgogbXNnc3RyICJLZWluIEdpdC1Qcm9qZWt0YXJjaGl2IGdlZnVuZGVuLiIKIAotIzogZ2l0azo4NTcwCisjOiBnaXRrOjEwMDUxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IGZpbmQgdGhlIGdpdCBkaXJlY3RvcnkgXCIlc1wiLiIKIG1zZ3N0ciAiR2l0LVZlcnplaWNobmlzIMK7JXPCqyB3dXJkZSBuaWNodCBnZWZ1bmRlbi4iCiAKLSM6IGdpdGs6ODYxMworIzogZ2l0azoxMDA5OAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkFtYmlndW91cyBhcmd1bWVudCAnJXMnOiBib3RoIHJldmlzaW9uIGFuZCBmaWxlbmFtZSIKIG1zZ3N0ciAiTWVocmRldXRpZ2UgQW5nYWJlIMK7JXPCqzogU293b2hsIFZlcnNpb24gYWxzIGF1Y2ggRGF0ZWluYW1lIGV4aXN0aWVydC4iCiAKLSM6IGdpdGs6ODYyNQorIzogZ2l0azoxMDExMAogbXNnaWQgIkJhZCBhcmd1bWVudHMgdG8gZ2l0azoiCiBtc2dzdHIgIkZhbHNjaGUgS29tbWFuZG96ZWlsZW4tUGFyYW1ldGVyIGbDvHIgZ2l0azoiCiAKLSM6IGdpdGs6OTkxNQorIzogZ2l0azoxMDE3MAogbXNnaWQgIkNvbW1hbmQgbGluZSIKIG1zZ3N0ciAiS29tbWFuZG96ZWlsZSIKZGlmZiAtLWdpdCBhL2dpdGstZ2l0L3BvL2VzLnBvIGIvZ2l0ay1naXQvcG8vZXMucG8KaW5kZXggMmNiMTQ4Ni4uMGUxOWI1ZSAxMDA2NDQKLS0tIGEvZ2l0ay1naXQvcG8vZXMucG8KKysrIGIvZ2l0ay1naXQvcG8vZXMucG8KQEAgLTgsNyArOCw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdpdGtcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMDgtMDMtMTMgMTc6MjkrMDEwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA4LTEwLTE4IDIyOjAzKzExMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDA4LTAzLTI1IDExOjIwKzAxMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IFNhbnRpYWdvIEdhbGEgPHNhbnRpYWdvLmdhbGFAZ21haWwuY29tPlxuIgogIkxhbmd1YWdlLVRlYW06IFNwYW5pc2hcbiIKQEAgLTE2LDY3NiArMTYsNzAyIEBACiAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCiAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgogCi0jOiBnaXRrOjExMQotbXNnaWQgIkVycm9yIGV4ZWN1dGluZyBnaXQgcmV2LWxpc3Q6IgotbXNnc3RyICJFcnJvciBhbCBlamVjdXRhciBnaXQgcmV2LWxpc3Q6IgorIzogZ2l0azoxMTMKK21zZ2lkICJDb3VsZG4ndCBnZXQgbGlzdCBvZiB1bm1lcmdlZCBmaWxlczoiCittc2dzdHIgIkltcG9zaWJsZSBvYnRlbmVyIGxhIGxpc3RhIGRlIGFyY2hpdm9zIHBlbmRpZW50ZXMgZGUgZnVzacOzbjoiCiAKLSM6IGdpdGs6MTI0CisjOiBnaXRrOjM0MAorbXNnaWQgIk5vIGZpbGVzIHNlbGVjdGVkOiAtLW1lcmdlIHNwZWNpZmllZCBidXQgbm8gZmlsZXMgYXJlIHVubWVyZ2VkLiIKK21zZ3N0ciAiIgorIk5vIGhheSBhcmNoaXZvcyBzZWxlY2Npb25hZG9zOiBzZSBzZWxlY2Npb27DsyBsYSBvcGNpw7NuIC0tbWVyZ2UgcGVybyBubyBoYXkgIgorImFyY2hpdm9zIHBlbmRpZW50ZXMgZGUgZnVzacOzbi4iCisKKyM6IGdpdGs6MzQzCittc2dpZCAiIgorIk5vIGZpbGVzIHNlbGVjdGVkOiAtLW1lcmdlIHNwZWNpZmllZCBidXQgbm8gdW5tZXJnZWQgZmlsZXMgYXJlIHdpdGhpbiBmaWxlICIKKyJsaW1pdC4iCittc2dzdHIgIiIKKyJObyBoYXkgYXJjaGl2b3Mgc2VsZWNjaW9uYWRvczogc2Ugc2VsZWNjaW9uw7MgbGEgb3BjacOzbiAtLW1lcmdlIHBlcm8gbG9zICIKKyJhcmNoaXZvcyBlc3BlY2lmaWNhZG9zIG5vIG5lY2VzaXRhbiBmdXNpw7NuLiIKKworIzogZ2l0azozNzgKIG1zZ2lkICJSZWFkaW5nIgogbXNnc3RyICJMZXllbmRvIgogCi0jOiBnaXRrOjE1MSBnaXRrOjIxOTEKKyM6IGdpdGs6NDM4IGdpdGs6MzQ2MgogbXNnaWQgIlJlYWRpbmcgY29tbWl0cy4uLiIKIG1zZ3N0ciAiTGV5ZW5kbyByZXZpc2lvbmVzLi4uIgogCi0jOiBnaXRrOjI3NQotbXNnaWQgIkNhbid0IHBhcnNlIGdpdCBsb2cgb3V0cHV0OiIKLW1zZ3N0ciAiRXJyb3IgYW5hbGl6YW5kbyBsYSBzYWxpZGEgZGUgZ2l0IGxvZzoiCi0KLSM6IGdpdGs6Mzg2IGdpdGs6MjE5NQorIzogZ2l0azo0NDEgZ2l0azoxNTI4IGdpdGs6MzQ2NQogbXNnaWQgIk5vIGNvbW1pdHMgc2VsZWN0ZWQiCiBtc2dzdHIgIk5vIHNlIHNlbGVjY2lvbmFyb24gcmV2aXNpb25lcyIKIAotIzogZ2l0azo1MDAKKyM6IGdpdGs6MTM5OQorbXNnaWQgIkNhbid0IHBhcnNlIGdpdCBsb2cgb3V0cHV0OiIKK21zZ3N0ciAiRXJyb3IgYW5hbGl6YW5kbyBsYSBzYWxpZGEgZGUgZ2l0IGxvZzoiCisKKyM6IGdpdGs6MTYwNQogbXNnaWQgIk5vIGNvbW1pdCBpbmZvcm1hdGlvbiBhdmFpbGFibGUiCiBtc2dzdHIgIkZhbHRhIGluZm9ybWFjacOzbiBzb2JyZSBsYXMgcmV2aXNpb25lcyIKIAotIzogZ2l0azo1OTkgZ2l0azo2MjEgZ2l0azoxOTU1IGdpdGs6NjQyMyBnaXRrOjc5MjMgZ2l0azo4MDgyCisjOiBnaXRrOjE3MDkgZ2l0azoxNzMxIGdpdGs6MzI1OSBnaXRrOjc3NjQgZ2l0azo5MjkzIGdpdGs6OTQ2NgogbXNnaWQgIk9LIgogbXNnc3RyICJBY2VwdGFyIgogCi0jOiBnaXRrOjYyMyBnaXRrOjE5NTYgZ2l0azo2MTA3IGdpdGs6NjE3OCBnaXRrOjYyNzUgZ2l0azo2MzIxIGdpdGs6NjQyNQotIzogZ2l0azo3OTI0IGdpdGs6ODA4MworIzogZ2l0azoxNzMzIGdpdGs6MzI2MCBnaXRrOjc0MzkgZ2l0azo3NTEwIGdpdGs6NzYxMyBnaXRrOjc2NjAgZ2l0azo3NzY2CisjOiBnaXRrOjkyOTQgZ2l0azo5NDY3CiBtc2dpZCAiQ2FuY2VsIgogbXNnc3RyICJDYW5jZWxhciIKIAotIzogZ2l0azo2NjEKLW1zZ2lkICJGaWxlIgotbXNnc3RyICJBcmNoaXZvIgotCi0jOiBnaXRrOjY2MworIzogZ2l0azoxODExCiBtc2dpZCAiVXBkYXRlIgogbXNnc3RyICJBY3R1YWxpemFyIgogCi0jOiBnaXRrOjY2NAorIzogZ2l0azoxODEzCiBtc2dpZCAiUmVyZWFkIHJlZmVyZW5jZXMiCiBtc2dzdHIgIlJlbGVlciByZWZlcmVuY2lhcyIKIAotIzogZ2l0azo2NjUKKyM6IGdpdGs6MTgxNAogbXNnaWQgIkxpc3QgcmVmZXJlbmNlcyIKIG1zZ3N0ciAiTGlzdGEgZGUgcmVmZXJlbmNpYXMiCiAKLSM6IGdpdGs6NjY2CisjOiBnaXRrOjE4MTUKIG1zZ2lkICJRdWl0IgogbXNnc3RyICJTYWxpciIKIAotIzogZ2l0azo2NjgKLW1zZ2lkICJFZGl0IgotbXNnc3RyICJFZGl0YXIiCisjOiBnaXRrOjE4MTAKK21zZ2lkICJGaWxlIgorbXNnc3RyICJBcmNoaXZvIgogCi0jOiBnaXRrOjY2OQorIzogZ2l0azoxODE4CiBtc2dpZCAiUHJlZmVyZW5jZXMiCiBtc2dzdHIgIlByZWZlcmVuY2lhcyIKIAotIzogZ2l0azo2NzIgZ2l0azoxODkyCi1tc2dpZCAiVmlldyIKLW1zZ3N0ciAiVmlzdGEiCisjOiBnaXRrOjE4MTcKK21zZ2lkICJFZGl0IgorbXNnc3RyICJFZGl0YXIiCiAKLSM6IGdpdGs6NjczCisjOiBnaXRrOjE4MjEKIG1zZ2lkICJOZXcgdmlldy4uLiIKIG1zZ3N0ciAiTnVldmEgdmlzdGEuLi4iCiAKLSM6IGdpdGs6Njc0IGdpdGs6MjEzMyBnaXRrOjg3MjIKKyM6IGdpdGs6MTgyMgogbXNnaWQgIkVkaXQgdmlldy4uLiIKIG1zZ3N0ciAiTW9kaWZpY2FyIHZpc3RhLi4uIgogCi0jOiBnaXRrOjY3NiBnaXRrOjIxMzQgZ2l0azo4NzIzCisjOiBnaXRrOjE4MjMKIG1zZ2lkICJEZWxldGUgdmlldyIKIG1zZ3N0ciAiRWxpbWluYXIgdmlzdGEiCiAKLSM6IGdpdGs6Njc4CisjOiBnaXRrOjE4MjUKIG1zZ2lkICJBbGwgZmlsZXMiCiBtc2dzdHIgIlRvZG9zIGxvcyBhcmNoaXZvcyIKIAotIzogZ2l0azo2ODIKLW1zZ2lkICJIZWxwIgotbXNnc3RyICJBeXVkYSIKKyM6IGdpdGs6MTgyMCBnaXRrOjMxOTYKK21zZ2lkICJWaWV3IgorbXNnc3RyICJWaXN0YSIKIAotIzogZ2l0azo2ODMgZ2l0azoxMzE3CisjOiBnaXRrOjE4MjggZ2l0azoyNDg3CiBtc2dpZCAiQWJvdXQgZ2l0ayIKIG1zZ3N0ciAiQWNlcmNhIGRlIGdpdGsiCiAKLSM6IGdpdGs6Njg0CisjOiBnaXRrOjE4MjkKIG1zZ2lkICJLZXkgYmluZGluZ3MiCiBtc2dzdHIgIkNvbWJpbmFjaW9uZXMgZGUgdGVjbGFzIgogCi0jOiBnaXRrOjc0MQorIzogZ2l0azoxODI3Cittc2dpZCAiSGVscCIKK21zZ3N0ciAiQXl1ZGEiCisKKyM6IGdpdGs6MTg4NwogbXNnaWQgIlNIQTEgSUQ6ICIKIG1zZ3N0ciAiU0hBMSBJRDogIgogCi0jOiBnaXRrOjc5MQorIzogZ2l0azoxOTE4Cittc2dpZCAiUm93IgorbXNnc3RyICIiCisKKyM6IGdpdGs6MTk0OQogbXNnaWQgIkZpbmQiCiBtc2dzdHIgIkJ1c2NhciIKIAotIzogZ2l0azo3OTIKKyM6IGdpdGs6MTk1MAogbXNnaWQgIm5leHQiCiBtc2dzdHIgIjw8IgogCi0jOiBnaXRrOjc5MworIzogZ2l0azoxOTUxCiBtc2dpZCAicHJldiIKIG1zZ3N0ciAiPj4iCiAKLSM6IGdpdGs6Nzk0CisjOiBnaXRrOjE5NTIKIG1zZ2lkICJjb21taXQiCiBtc2dzdHIgInJldmlzacOzbiIKIAotIzogZ2l0azo3OTcgZ2l0azo3OTkgZ2l0azoyMzU2IGdpdGs6MjM3OSBnaXRrOjI0MDMgZ2l0azo0MzA2IGdpdGs6NDM2OQorIzogZ2l0azoxOTU1IGdpdGs6MTk1NyBnaXRrOjM2MTcgZ2l0azozNjQwIGdpdGs6MzY2NCBnaXRrOjU1NTAgZ2l0azo1NjIxCiBtc2dpZCAiY29udGFpbmluZzoiCiBtc2dzdHIgInF1ZSBjb250aWVuZToiCiAKLSM6IGdpdGs6ODAwIGdpdGs6MTc3OCBnaXRrOjE3ODMgZ2l0azoyNDMxCisjOiBnaXRrOjE5NTggZ2l0azoyOTU0IGdpdGs6Mjk1OSBnaXRrOjM2OTIKIG1zZ2lkICJ0b3VjaGluZyBwYXRoczoiCiBtc2dzdHIgInF1ZSBtb2RpZmljYSBsYSBydXRhOiIKIAotIzogZ2l0azo4MDEgZ2l0azoyNDM2CisjOiBnaXRrOjE5NTkgZ2l0azozNjk3CiBtc2dpZCAiYWRkaW5nL3JlbW92aW5nIHN0cmluZzoiCiBtc2dzdHIgInF1ZSBhw7FhZGUvZWxpbWluYSBjYWRlbmE6IgogCi0jOiBnaXRrOjgxMCBnaXRrOjgxMgorIzogZ2l0azoxOTY4IGdpdGs6MTk3MAogbXNnaWQgIkV4YWN0IgogbXNnc3RyICJFeGFjdG8iCiAKLSM6IGdpdGs6ODEyIGdpdGs6MjUxNCBnaXRrOjQyNzQKKyM6IGdpdGs6MTk3MCBnaXRrOjM3NzMgZ2l0azo1NTE4CiBtc2dpZCAiSWduQ2FzZSIKIG1zZ3N0ciAiTm9NYXnDunMiCiAKLSM6IGdpdGs6ODEyIGdpdGs6MjQwNSBnaXRrOjI1MTIgZ2l0azo0MjcwCisjOiBnaXRrOjE5NzAgZ2l0azozNjY2IGdpdGs6Mzc3MSBnaXRrOjU1MTQKIG1zZ2lkICJSZWdleHAiCiBtc2dzdHIgIlJlZ2V4IgogCi0jOiBnaXRrOjgxNCBnaXRrOjgxNSBnaXRrOjI1MzMgZ2l0azoyNTYzIGdpdGs6MjU3MCBnaXRrOjQzODAgZ2l0azo0NDM2CisjOiBnaXRrOjE5NzIgZ2l0azoxOTczIGdpdGs6Mzc5MiBnaXRrOjM4MjIgZ2l0azozODI5IGdpdGs6NTY0MSBnaXRrOjU3MDgKIG1zZ2lkICJBbGwgZmllbGRzIgogbXNnc3RyICJUb2RvcyBsb3MgY2FtcG9zIgogCi0jOiBnaXRrOjgxNSBnaXRrOjI1MzEgZ2l0azoyNTYzIGdpdGs6NDMzNgorIzogZ2l0azoxOTczIGdpdGs6Mzc5MCBnaXRrOjM4MjIgZ2l0azo1NTgwCiBtc2dpZCAiSGVhZGxpbmUiCiBtc2dzdHIgIlTDrXR1bG8iCiAKLSM6IGdpdGs6ODE2IGdpdGs6MjUzMSBnaXRrOjQzMzYgZ2l0azo0NDM2IGdpdGs6NDgyNworIzogZ2l0azoxOTc0IGdpdGs6Mzc5MCBnaXRrOjU1ODAgZ2l0azo1NzA4IGdpdGs6NjEwOQogbXNnaWQgIkNvbW1lbnRzIgogbXNnc3RyICJDb21lbnRhcmlvcyIKIAotIzogZ2l0azo4MTYgZ2l0azoyNTMxIGdpdGs6MjUzNSBnaXRrOjI1NzAgZ2l0azo0MzM2IGdpdGs6NDc2MyBnaXRrOjU5NTYKLSM6IGdpdGs6NTk3MQorIzogZ2l0azoxOTc0IGdpdGs6Mzc5MCBnaXRrOjM3OTQgZ2l0azozODI5IGdpdGs6NTU4MCBnaXRrOjYwNDUgZ2l0azo3Mjg1CisjOiBnaXRrOjczMDAKIG1zZ2lkICJBdXRob3IiCiBtc2dzdHIgIkF1dG9yIgogCi0jOiBnaXRrOjgxNiBnaXRrOjI1MzEgZ2l0azo0MzM2IGdpdGs6NDc2NQorIzogZ2l0azoxOTc0IGdpdGs6Mzc5MCBnaXRrOjU1ODAgZ2l0azo2MDQ3CiBtc2dpZCAiQ29tbWl0dGVyIgogbXNnc3RyICIiCiAKLSM6IGdpdGs6ODQ1CisjOiBnaXRrOjIwMDMKIG1zZ2lkICJTZWFyY2giCiBtc2dzdHIgIkJ1c2NhciIKIAotIzogZ2l0azo4NTIKKyM6IGdpdGs6MjAxMAogbXNnaWQgIkRpZmYiCiBtc2dzdHIgIkRpZmVyZW5jaWEiCiAKLSM6IGdpdGs6ODU0CisjOiBnaXRrOjIwMTIKIG1zZ2lkICJPbGQgdmVyc2lvbiIKIG1zZ3N0ciAiVmVyc2nDs24gYW50aWd1YSIKIAotIzogZ2l0azo4NTYKKyM6IGdpdGs6MjAxNAogbXNnaWQgIk5ldyB2ZXJzaW9uIgogbXNnc3RyICJWZXJzacOzbiBudWV2YSIKIAotIzogZ2l0azo4NTgKKyM6IGdpdGs6MjAxNgogbXNnaWQgIkxpbmVzIG9mIGNvbnRleHQiCiBtc2dzdHIgIkzDrW5lYXMgZGUgY29udGV4dG8iCiAKLSM6IGdpdGs6ODY4CisjOiBnaXRrOjIwMjYKIG1zZ2lkICJJZ25vcmUgc3BhY2UgY2hhbmdlIgogbXNnc3RyICJJZ25vcmEgY2FtYmlvcyBkZSBlc3BhY2lhZG8iCiAKLSM6IGdpdGs6OTI2CisjOiBnaXRrOjIwODQKIG1zZ2lkICJQYXRjaCIKIG1zZ3N0ciAiUGFyY2hlIgogCi0jOiBnaXRrOjkyOAorIzogZ2l0azoyMDg2CiBtc2dpZCAiVHJlZSIKIG1zZ3N0ciAiw4FyYm9sIgogCi0jOiBnaXRrOjEwNTMgZ2l0azoxMDY4IGdpdGs6NjAyMgorIzogZ2l0azoyMjEzIGdpdGs6MjIyNgogbXNnaWQgIkRpZmYgdGhpcyAtPiBzZWxlY3RlZCIKIG1zZ3N0ciAiRGlmZXJlbmNpYSBkZSBlc3RhIC0+IHNlbGVjY2lvbmFkYSIKIAotIzogZ2l0azoxMDU1IGdpdGs6MTA3MCBnaXRrOjYwMjMKKyM6IGdpdGs6MjIxNCBnaXRrOjIyMjcKIG1zZ2lkICJEaWZmIHNlbGVjdGVkIC0+IHRoaXMiCiBtc2dzdHIgIkRpZmVyZW5jaWEgZGUgc2VsZWNjaW9uYWRhIC0+IGVzdGEiCiAKLSM6IGdpdGs6MTA1NyBnaXRrOjEwNzIgZ2l0azo2MDI0CisjOiBnaXRrOjIyMTUgZ2l0azoyMjI4CiBtc2dpZCAiTWFrZSBwYXRjaCIKIG1zZ3N0ciAiQ3JlYXIgcGF0Y2giCiAKLSM6IGdpdGs6MTA1OCBnaXRrOjYxNjIKKyM6IGdpdGs6MjIxNiBnaXRrOjc0OTQKIG1zZ2lkICJDcmVhdGUgdGFnIgogbXNnc3RyICJDcmVhciBldGlxdWV0YSIKIAotIzogZ2l0azoxMDU5IGdpdGs6NjI1NQorIzogZ2l0azoyMjE3IGdpdGs6NzU5MwogbXNnaWQgIldyaXRlIGNvbW1pdCB0byBmaWxlIgogbXNnc3RyICJFc2NyaWJpciByZXZpc2lvbmVzIGEgYXJjaGl2byIKIAotIzogZ2l0azoxMDYwIGdpdGs6NjMwOQorIzogZ2l0azoyMjE4IGdpdGs6NzY0NwogbXNnaWQgIkNyZWF0ZSBuZXcgYnJhbmNoIgogbXNnc3RyICJDcmVhciBudWV2YSByYW1hIgogCi0jOiBnaXRrOjEwNjEKKyM6IGdpdGs6MjIxOQogbXNnaWQgIkNoZXJyeS1waWNrIHRoaXMgY29tbWl0IgogbXNnc3RyICJBw7FhZGlyIGVzdGEgcmV2aXNpw7NuIGEgbGEgcmFtYSBhY3R1YWwgKGNoZXJyeS1waWNrKSIKIAotIzogZ2l0azoxMDYzCisjOiBnaXRrOjIyMjAKIG1zZ2lkICJSZXNldCBIRUFEIGJyYW5jaCB0byBoZXJlIgogbXNnc3RyICJUcmFlciBsYSByYW1hIEhFQUQgYXF1w60iCiAKLSM6IGdpdGs6MTA3OQorIzogZ2l0azoyMjM0CiBtc2dpZCAiQ2hlY2sgb3V0IHRoaXMgYnJhbmNoIgogbXNnc3RyICJDYW1iaWFyIGEgZXN0YSByYW1hIgogCi0jOiBnaXRrOjEwODEKKyM6IGdpdGs6MjIzNQogbXNnaWQgIlJlbW92ZSB0aGlzIGJyYW5jaCIKIG1zZ3N0ciAiRWxpbWluYXIgZXN0YSByYW1hIgogCi0jOiBnaXRrOjEwODcKKyM6IGdpdGs6MjI0MgogbXNnaWQgIkhpZ2hsaWdodCB0aGlzIHRvbyIKIG1zZ3N0ciAiU2VsZWNjaW9uYXIgdGFtYmnDqW4iCiAKLSM6IGdpdGs6MTA4OQorIzogZ2l0azoyMjQzCiBtc2dpZCAiSGlnaGxpZ2h0IHRoaXMgb25seSIKIG1zZ3N0ciAiU2VsZWNjaW9uYXIgc8OzbG8iCiAKLSM6IGdpdGs6MTMxOAorIzogZ2l0azoyMjQ1Cittc2dpZCAiQmxhbWUgcGFyZW50IGNvbW1pdCIKK21zZ3N0ciAiIgorCisjOiBnaXRrOjI0ODgKIG1zZ2lkICIiCiAiXG4iCiAiR2l0ayAtIGEgY29tbWl0IHZpZXdlciBmb3IgZ2l0XG4iCiAiXG4iCi0iQ29weXJpZ2h0IMKpIDIwMDUtMjAwNiBQYXVsIE1hY2tlcnJhc1xuIgorIkNvcHlyaWdodCDCqSAyMDA1LTIwMDggUGF1bCBNYWNrZXJyYXNcbiIKICJcbiIKICJVc2UgYW5kIHJlZGlzdHJpYnV0ZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIgogbXNnc3RyICIiCiAiXG4iCiAiR2l0ayAtIHVuIHZpc3VhbGl6YWRvciBkZSByZXZpc2lvbmVzIHBhcmEgZ2l0XG4iCiAiXG4iCi0iQ29weXJpZ2h0IMKpIDIwMDUtMjAwNiBQYXVsIE1hY2tlcnJhc1xuIgorIkNvcHlyaWdodCDCqSAyMDA1LTIwMDggUGF1bCBNYWNrZXJyYXNcbiIKICJcbiIKLSJVc28geSByZWRpc3RyaWJ1Y2nDs24gcGVybWl0aWRvcyBzZWfDum4gbG9zIHTDqXJtaW5vcyBkZSBsYSBMaWNlbmNpYSBQw7pibGljYSBHZW5lcmFsIGRlICIKLSJHTlUgKEdOVSBHUEwpIgorIlVzbyB5IHJlZGlzdHJpYnVjacOzbiBwZXJtaXRpZG9zIHNlZ8O6biBsb3MgdMOpcm1pbm9zIGRlIGxhIExpY2VuY2lhIFDDumJsaWNhICIKKyJHZW5lcmFsIGRlIEdOVSAoR05VIEdQTCkiCiAKLSM6IGdpdGs6MTMyNiBnaXRrOjEzODcgZ2l0azo2NTgxCisjOiBnaXRrOjI0OTYgZ2l0azoyNTU3IGdpdGs6Nzk0MwogbXNnaWQgIkNsb3NlIgogbXNnc3RyICJDZXJyYXIiCiAKLSM6IGdpdGs6MTM0NQorIzogZ2l0azoyNTE1CiBtc2dpZCAiR2l0ayBrZXkgYmluZGluZ3MiCiBtc2dzdHIgIkNvbWJpbmFjaW9uZXMgZGUgdGVjbGEgZGUgR2l0ayIKIAotIzogZ2l0azoxMzQ3CisjOiBnaXRrOjI1MTcKIG1zZ2lkICJHaXRrIGtleSBiaW5kaW5nczoiCiBtc2dzdHIgIkNvbWJpbmFjaW9uZXMgZGUgdGVjbGEgZGUgR2l0azoiCiAKLSM6IGdpdGs6MTM0OQorIzogZ2l0azoyNTE5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLVE+XHRcdFF1aXQiCiBtc2dzdHIgIjwlcy1RPlx0XHRTYWxpciIKIAotIzogZ2l0azoxMzUwCisjOiBnaXRrOjI1MjAKIG1zZ2lkICI8SG9tZT5cdFx0TW92ZSB0byBmaXJzdCBjb21taXQiCiBtc2dzdHIgIjxIb21lPlx0XHRJciBhIGxhIHByaW1lcmEgcmV2aXNpw7NuIgogCi0jOiBnaXRrOjEzNTEKKyM6IGdpdGs6MjUyMQogbXNnaWQgIjxFbmQ+XHRcdE1vdmUgdG8gbGFzdCBjb21taXQiCiBtc2dzdHIgIjxFbmQ+XHRcdElyIGEgbGEgw7psdGltYSByZXZpc2nDs24iCiAKLSM6IGdpdGs6MTM1MgorIzogZ2l0azoyNTIyCiBtc2dpZCAiPFVwPiwgcCwgaVx0TW92ZSB1cCBvbmUgY29tbWl0IgogbXNnc3RyICI8VXA+LCBwLCBpXHRTdWJpciB1bmEgcmV2aXNpw7NuIgogCi0jOiBnaXRrOjEzNTMKKyM6IGdpdGs6MjUyMwogbXNnaWQgIjxEb3duPiwgbiwga1x0TW92ZSBkb3duIG9uZSBjb21taXQiCiBtc2dzdHIgIjxEb3duPiwgbiwga1x0QmFqYXIgdW5hIHJldmlzacOzbiIKIAotIzogZ2l0azoxMzU0CisjOiBnaXRrOjI1MjQKIG1zZ2lkICI8TGVmdD4sIHosIGpcdEdvIGJhY2sgaW4gaGlzdG9yeSBsaXN0IgogbXNnc3RyICI8TGVmdD4sIHosIGpcdFJldHJvY2VkZXIgZW4gbGEgaGlzdG9yaWEiCiAKLSM6IGdpdGs6MTM1NQorIzogZ2l0azoyNTI1CiBtc2dpZCAiPFJpZ2h0PiwgeCwgbFx0R28gZm9yd2FyZCBpbiBoaXN0b3J5IGxpc3QiCiBtc2dzdHIgIjxSaWdodD4sIHgsIGxcdEF2YW56YXIgZW4gbGEgaGlzdG9yaWEiCiAKLSM6IGdpdGs6MTM1NgorIzogZ2l0azoyNTI2CiBtc2dpZCAiPFBhZ2VVcD5cdE1vdmUgdXAgb25lIHBhZ2UgaW4gY29tbWl0IGxpc3QiCiBtc2dzdHIgIjxQYWdlVXA+XHRTdWJpciB1bmEgcMOhZ2luYSBlbiBsYSBsaXN0YSBkZSByZXZpc2lvbmVzIgogCi0jOiBnaXRrOjEzNTcKKyM6IGdpdGs6MjUyNwogbXNnaWQgIjxQYWdlRG93bj5cdE1vdmUgZG93biBvbmUgcGFnZSBpbiBjb21taXQgbGlzdCIKIG1zZ3N0ciAiPFBhZ2VEb3duPlx0QmFqYXIgdW5hIHDDoWdpbmEgZW4gbGEgbGlzdGEgZGUgcmV2aXNpb25lcyIKIAotIzogZ2l0azoxMzU4CisjOiBnaXRrOjI1MjgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtSG9tZT5cdFNjcm9sbCB0byB0b3Agb2YgY29tbWl0IGxpc3QiCiBtc2dzdHIgIjwlcy1Ib21lPlx0RGVzcGxhemFyc2UgYWwgaW5pY2lvIGRlIGxhIGxpc3RhIGRlIHJldmlzaW9uZXMiCiAKLSM6IGdpdGs6MTM1OQorIzogZ2l0azoyNTI5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLUVuZD5cdFNjcm9sbCB0byBib3R0b20gb2YgY29tbWl0IGxpc3QiCiBtc2dzdHIgIjwlcy1FbmQ+XHREZXNwbGF6YXJzZSBhbCBmaW5hbCBkZSBsYSBsaXN0YSBkZSByZXZpc2lvbmVzIgogCi0jOiBnaXRrOjEzNjAKKyM6IGdpdGs6MjUzMAogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1VcD5cdFNjcm9sbCBjb21taXQgbGlzdCB1cCBvbmUgbGluZSIKIG1zZ3N0ciAiPCVzLVVwPlx0RGVzcGxhemFyIHVuYSBsw61uZWEgaGFjaWEgYXJyaWJhIGxhIGxpc3RhIGRlIHJldmlzaW9uZXMiCiAKLSM6IGdpdGs6MTM2MQorIzogZ2l0azoyNTMxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLURvd24+XHRTY3JvbGwgY29tbWl0IGxpc3QgZG93biBvbmUgbGluZSIKIG1zZ3N0ciAiPCVzLURvd24+XHREZXNwbGF6YXIgdW5hIGzDrW5lYSBoYWNpYSBhYmFqbyBsYSBsaXN0YSBkZSByZXZpc2lvbmVzIgogCi0jOiBnaXRrOjEzNjIKKyM6IGdpdGs6MjUzMgogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1QYWdlVXA+XHRTY3JvbGwgY29tbWl0IGxpc3QgdXAgb25lIHBhZ2UiCiBtc2dzdHIgIjwlcy1QYWdlVXA+XHREZXNwbGF6YXIgdW5hIHDDoWdpbmEgaGFjaWEgYXJyaWJhIGxhIGxpc3RhIGRlIHJldmlzaW9uZXMiCiAKLSM6IGdpdGs6MTM2MworIzogZ2l0azoyNTMzCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLVBhZ2VEb3duPlx0U2Nyb2xsIGNvbW1pdCBsaXN0IGRvd24gb25lIHBhZ2UiCiBtc2dzdHIgIjwlcy1QYWdlRG93bj5cdERlc3BsYXphciB1bmEgcMOhZ2luYSBoYWNpYSBhYmFqbyBsYSBsaXN0YSBkZSByZXZpc2lvbmVzIgogCi0jOiBnaXRrOjEzNjQKKyM6IGdpdGs6MjUzNAogbXNnaWQgIjxTaGlmdC1VcD5cdEZpbmQgYmFja3dhcmRzICh1cHdhcmRzLCBsYXRlciBjb21taXRzKSIKIG1zZ3N0ciAiPFNoaWZ0LVVwPlx0QnVzY2FyIGhhY2lhIGF0csOhcyAoYXJyaWJhLCByZXZpc2lvbmVzIHNpZ3VpZW50ZXMpIgogCi0jOiBnaXRrOjEzNjUKKyM6IGdpdGs6MjUzNQogbXNnaWQgIjxTaGlmdC1Eb3duPlx0RmluZCBmb3J3YXJkcyAoZG93bndhcmRzLCBlYXJsaWVyIGNvbW1pdHMpIgogbXNnc3RyICI8U2hpZnQtRG93bj5cdEJ1c2NhciBoYWNpYSBhZGVsYW50ZSAoYWJham8sIHJldmlzaW9uZXMgYW50ZXJpb3JlcykiCiAKLSM6IGdpdGs6MTM2NgorIzogZ2l0azoyNTM2CiBtc2dpZCAiPERlbGV0ZT4sIGJcdFNjcm9sbCBkaWZmIHZpZXcgdXAgb25lIHBhZ2UiCiBtc2dzdHIgIjxEZWxldGU+LCBiXHREZXNwbGF6YSBoYWNpYSBhcnJpYmEgdW5hIHDDoWdpbmEgbGEgdmlzdGEgZGUgZGlmZXJlbmNpYXMiCiAKLSM6IGdpdGs6MTM2NworIzogZ2l0azoyNTM3CiBtc2dpZCAiPEJhY2tzcGFjZT5cdFNjcm9sbCBkaWZmIHZpZXcgdXAgb25lIHBhZ2UiCiBtc2dzdHIgIjxCYWNrc3BhY2U+XHREZXNwbGF6YSBoYWNpYSBhcnJpYmEgdW5hIHDDoWdpbmEgbGEgdmlzdGEgZGUgZGlmZXJlbmNpYXMiCiAKLSM6IGdpdGs6MTM2OAorIzogZ2l0azoyNTM4CiBtc2dpZCAiPFNwYWNlPlx0XHRTY3JvbGwgZGlmZiB2aWV3IGRvd24gb25lIHBhZ2UiCiBtc2dzdHIgIjxTcGFjZT5cdFx0RGVzcGxhemEgaGFjaWEgYWJham8gdW5hIHDDoWdpbmEgbGEgdmlzdGEgZGUgZGlmZXJlbmNpYXMiCiAKLSM6IGdpdGs6MTM2OQorIzogZ2l0azoyNTM5CiBtc2dpZCAidVx0XHRTY3JvbGwgZGlmZiB2aWV3IHVwIDE4IGxpbmVzIgogbXNnc3RyICJ1XHRcdERlc3BsYXphIGhhY2lhIGFycmliYSAxOCBsw61uZWFzIGxhIHZpc3RhIGRlIGRpZmVyZW5jaWFzIgogCi0jOiBnaXRrOjEzNzAKKyM6IGdpdGs6MjU0MAogbXNnaWQgImRcdFx0U2Nyb2xsIGRpZmYgdmlldyBkb3duIDE4IGxpbmVzIgogbXNnc3RyICJkXHRcdERlc3BsYXphIGhhY2lhIGFiYWpvIDE4IGzDrW5lYXMgbGEgdmlzdGEgZGUgZGlmZXJlbmNpYXMiCiAKLSM6IGdpdGs6MTM3MQorIzogZ2l0azoyNTQxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLUY+XHRcdEZpbmQiCiBtc2dzdHIgIjwlcy1GPlx0XHRCdXNjYXIiCiAKLSM6IGdpdGs6MTM3MgorIzogZ2l0azoyNTQyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLUc+XHRcdE1vdmUgdG8gbmV4dCBmaW5kIGhpdCIKIG1zZ3N0ciAiPCVzLUc+XHRcdEJ1c2NhciBlbCBzaWd1aWVudGUiCiAKLSM6IGdpdGs6MTM3MworIzogZ2l0azoyNTQzCiBtc2dpZCAiPFJldHVybj5cdE1vdmUgdG8gbmV4dCBmaW5kIGhpdCIKIG1zZ3N0ciAiPFJldHVybj5cdEJ1c2NhciBlbCBzaWd1aWVudGUiCiAKLSM6IGdpdGs6MTM3NAorIzogZ2l0azoyNTQ0CiBtc2dpZCAiL1x0XHRNb3ZlIHRvIG5leHQgZmluZCBoaXQsIG9yIHJlZG8gZmluZCIKIG1zZ3N0ciAiL1x0XHRCdXNjYXIgZWwgc2lndWllbnRlLCBvIHJlaW5pY2lhciBsYSBiw7pzcXVlZGEiCiAKLSM6IGdpdGs6MTM3NQorIzogZ2l0azoyNTQ1CiBtc2dpZCAiP1x0XHRNb3ZlIHRvIHByZXZpb3VzIGZpbmQgaGl0IgogbXNnc3RyICI/XHRcdEJ1c2NhciBlbCBhbnRlcmlvciIKIAotIzogZ2l0azoxMzc2CisjOiBnaXRrOjI1NDYKIG1zZ2lkICJmXHRcdFNjcm9sbCBkaWZmIHZpZXcgdG8gbmV4dCBmaWxlIgogbXNnc3RyICJmXHRcdERlc3BsYXphciBsYSB2aXN0YSBkZSBkaWZlcmVuY2lhcyBhbCBhcmNoaXZvIHNpZ3VpZW50ZSIKIAotIzogZ2l0azoxMzc3CisjOiBnaXRrOjI1NDcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtUz5cdFx0U2VhcmNoIGZvciBuZXh0IGhpdCBpbiBkaWZmIHZpZXciCiBtc2dzdHIgIjwlcy1TPlx0XHRCdXNjYXIgc2lndWllbnRlIGVuIGxhIHZpc3RhIGRlIGRpZmVyZW5jaWFzIgogCi0jOiBnaXRrOjEzNzgKKyM6IGdpdGs6MjU0OAogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1SPlx0XHRTZWFyY2ggZm9yIHByZXZpb3VzIGhpdCBpbiBkaWZmIHZpZXciCiBtc2dzdHIgIjwlcy1SPlx0XHRCdXNjYXIgYW50ZXJpb3IgZW4gbGEgdmlzdGEgZGUgZGlmZXJlbmNpYXMiCiAKLSM6IGdpdGs6MTM3OQorIzogZ2l0azoyNTQ5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLUtQKz5cdEluY3JlYXNlIGZvbnQgc2l6ZSIKIG1zZ3N0ciAiPCVzLUtQKz5cdEF1bWVudGFyIHRhbWHDsW8gZGVsIHRleHRvIgogCi0jOiBnaXRrOjEzODAKKyM6IGdpdGs6MjU1MAogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1wbHVzPlx0SW5jcmVhc2UgZm9udCBzaXplIgogbXNnc3RyICI8JXMtcGx1cz5cdEF1bWVudGFyIHRhbWHDsW8gZGVsIHRleHRvIgogCi0jOiBnaXRrOjEzODEKKyM6IGdpdGs6MjU1MQogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1LUC0+XHREZWNyZWFzZSBmb250IHNpemUiCiBtc2dzdHIgIjwlcy1LUC0+XHREaXNtaW51aXIgdGFtYcOxbyBkZWwgdGV4dG8iCiAKLSM6IGdpdGs6MTM4MgorIzogZ2l0azoyNTUyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLW1pbnVzPlx0RGVjcmVhc2UgZm9udCBzaXplIgogbXNnc3RyICI8JXMtbWludXM+XHREaXNtaW51aXIgdGFtYcOxbyBkZWwgdGV4dG8iCiAKLSM6IGdpdGs6MTM4MworIzogZ2l0azoyNTUzCiBtc2dpZCAiPEY1Plx0XHRVcGRhdGUiCiBtc2dzdHIgIjxGNT5cdFx0QWN0dWFsaXphciIKIAotIzogZ2l0azoxODk2CisjOiBnaXRrOjMyMDAKIG1zZ2lkICJHaXRrIHZpZXcgZGVmaW5pdGlvbiIKIG1zZ3N0ciAiRGVmaW5pY2nDs24gZGUgdmlzdGFzIGRlIEdpdGsiCiAKLSM6IGdpdGs6MTkyMQorIzogZ2l0azozMjI1CiBtc2dpZCAiTmFtZSIKIG1zZ3N0ciAiTm9tYnJlIgogCi0jOiBnaXRrOjE5MjQKKyM6IGdpdGs6MzIyOAogbXNnaWQgIlJlbWVtYmVyIHRoaXMgdmlldyIKIG1zZ3N0ciAiUmVjb3JkYXIgZXN0YSB2aXN0YSIKIAotIzogZ2l0azoxOTI4Ci1tc2dpZCAiQ29tbWl0cyB0byBpbmNsdWRlIChhcmd1bWVudHMgdG8gZ2l0IHJldi1saXN0KToiCi1tc2dzdHIgIlJldmlzaW9uZXMgYSBpbmNsdWlyIChhcmd1bWVudG9zIGEgZ2l0IHJldi1saXN0KToiCisjOiBnaXRrOjMyMzIKK21zZ2lkICJDb21taXRzIHRvIGluY2x1ZGUgKGFyZ3VtZW50cyB0byBnaXQgbG9nKToiCittc2dzdHIgIlJldmlzaW9uZXMgYSBpbmNsdWlyIChhcmd1bWVudG9zIGEgZ2l0IGxvZyk6IgogCi0jOiBnaXRrOjE5MzUKKyM6IGdpdGs6MzIzOQogbXNnaWQgIkNvbW1hbmQgdG8gZ2VuZXJhdGUgbW9yZSBjb21taXRzIHRvIGluY2x1ZGU6IgogbXNnc3RyICJDb21hbmRvIHF1ZSBnZW5lcmEgbcOhcyByZXZpc2lvbmVzIGEgaW5jbHVpcjoiCiAKLSM6IGdpdGs6MTk0MgorIzogZ2l0azozMjQ2CiBtc2dpZCAiRW50ZXIgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRvIGluY2x1ZGUsIG9uZSBwZXIgbGluZToiCiBtc2dzdHIgIkludHJvZHVjaXIgYXJjaGl2b3MgeSBkaXJlY3RvcmlvcyBhIGluY2x1aXIsIHVubyBwb3IgbMOtbmVhOiIKIAotIzogZ2l0azoxOTg5CisjOiBnaXRrOjMyOTMKIG1zZ2lkICJFcnJvciBpbiBjb21taXQgc2VsZWN0aW9uIGFyZ3VtZW50czoiCiBtc2dzdHIgIkVycm9yIGVuIGxvcyBhcmd1bWVudG9zIGRlIHNlbGVjY2nDs24gZGUgbGFzIHJldmlzaW9uZXM6IgogCi0jOiBnaXRrOjIwNDMgZ2l0azoyMTI3IGdpdGs6MjU4MyBnaXRrOjI1OTcgZ2l0azozNzgxIGdpdGs6ODY4OCBnaXRrOjg2ODkKKyM6IGdpdGs6MzM0NyBnaXRrOjMzOTkgZ2l0azozODQyIGdpdGs6Mzg1NiBnaXRrOjUwNjAgZ2l0azoxMDE0MSBnaXRrOjEwMTQyCiBtc2dpZCAiTm9uZSIKIG1zZ3N0ciAiTmluZ3VubyIKIAotIzogZ2l0azoyNTMxIGdpdGs6NDMzNiBnaXRrOjU5NTggZ2l0azo1OTczCisjOiBnaXRrOjM3OTAgZ2l0azo1NTgwIGdpdGs6NzI4NyBnaXRrOjczMDIKIG1zZ2lkICJEYXRlIgogbXNnc3RyICJGZWNoYSIKIAotIzogZ2l0azoyNTMxIGdpdGs6NDMzNgorIzogZ2l0azozNzkwIGdpdGs6NTU4MAogbXNnaWQgIkNEYXRlIgogbXNnc3RyICJGZWNoYSBkZSBjcmVhY2nDs24iCiAKLSM6IGdpdGs6MjY4MCBnaXRrOjI2ODUKKyM6IGdpdGs6MzkzOSBnaXRrOjM5NDQKIG1zZ2lkICJEZXNjZW5kYW50IgogbXNnc3RyICJEZXNjZW5kaWVudGUiCiAKLSM6IGdpdGs6MjY4MQorIzogZ2l0azozOTQwCiBtc2dpZCAiTm90IGRlc2NlbmRhbnQiCiBtc2dzdHIgIk5vIGRlc2NlbmRpZW50ZSIKIAotIzogZ2l0azoyNjg4IGdpdGs6MjY5MworIzogZ2l0azozOTQ3IGdpdGs6Mzk1MgogbXNnaWQgIkFuY2VzdG9yIgogbXNnc3RyICJBbnRlcGFzYWRvIgogCi0jOiBnaXRrOjI2ODkKKyM6IGdpdGs6Mzk0OAogbXNnaWQgIk5vdCBhbmNlc3RvciIKIG1zZ3N0ciAiTm8gYW50ZXBhc2FkbyIKIAotIzogZ2l0azoyOTI0CisjOiBnaXRrOjQxODcKIG1zZ2lkICJMb2NhbCBjaGFuZ2VzIGNoZWNrZWQgaW4gdG8gaW5kZXggYnV0IG5vdCBjb21taXR0ZWQiCiBtc2dzdHIgIkNhbWJpb3MgbG9jYWxlcyBhw7FhZGlkb3MgYWwgw61uZGljZSBwZXJvIHNpbiBjb21wbGV0YXIgcmV2aXNpw7NuIgogCi0jOiBnaXRrOjI5NTQKKyM6IGdpdGs6NDIyMAogbXNnaWQgIkxvY2FsIHVuY29tbWl0dGVkIGNoYW5nZXMsIG5vdCBjaGVja2VkIGluIHRvIGluZGV4IgogbXNnc3RyICJDYW1iaW9zIGxvY2FsZXMgc2luIGHDsWFkaXIgYWwgw61uZGljZSIKIAotIzogZ2l0azo0MzA1CisjOiBnaXRrOjU1NDkKIG1zZ2lkICJTZWFyY2hpbmciCiBtc2dzdHIgIkJ1c2NhbmRvIgogCi0jOiBnaXRrOjQ3NjcKKyM6IGdpdGs6NjA0OQogbXNnaWQgIlRhZ3M6IgogbXNnc3RyICJFdGlxdWV0YXM6IgogCi0jOiBnaXRrOjQ3ODQgZ2l0azo0NzkwIGdpdGs6NTk1MQorIzogZ2l0azo2MDY2IGdpdGs6NjA3MiBnaXRrOjcyODAKIG1zZ2lkICJQYXJlbnQiCiBtc2dzdHIgIlBhZHJlIgogCi0jOiBnaXRrOjQ3OTUKKyM6IGdpdGs6NjA3NwogbXNnaWQgIkNoaWxkIgogbXNnc3RyICJIaWphIgogCi0jOiBnaXRrOjQ4MDQKKyM6IGdpdGs6NjA4NgogbXNnaWQgIkJyYW5jaCIKIG1zZ3N0ciAiUmFtYSIKIAotIzogZ2l0azo0ODA3CisjOiBnaXRrOjYwODkKIG1zZ2lkICJGb2xsb3dzIgogbXNnc3RyICJTaWd1ZS1hIgogCi0jOiBnaXRrOjQ4MTAKKyM6IGdpdGs6NjA5MgogbXNnaWQgIlByZWNlZGVzIgogbXNnc3RyICJQcmVjZWRlLWEiCiAKLSM6IGdpdGs6NTA5MworIzogZ2l0azo2Mzc4CiBtc2dpZCAiRXJyb3IgZ2V0dGluZyBtZXJnZSBkaWZmczoiCiBtc2dzdHIgIkVycm9yIGFsIGxlZXIgbGFzIGRpZmVyZW5jaWFzIGRlIGZ1c2nDs246IgogCi0jOiBnaXRrOjU3NzgKKyM6IGdpdGs6NzExMwogbXNnaWQgIkdvdG86IgogbXNnc3RyICJJciBhOiIKIAotIzogZ2l0azo1NzgwCisjOiBnaXRrOjcxMTUKIG1zZ2lkICJTSEExIElEOiIKIG1zZ3N0ciAiU0hBMSBJRDoiCiAKLSM6IGdpdGs6NTgwNQorIzogZ2l0azo3MTM0CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiU2hvcnQgU0hBMSBpZCAlcyBpcyBhbWJpZ3VvdXMiCiBtc2dzdHIgIkxhIGlkIFNIQTEgYWJyZXZpYWRhICVzIGVzIGFtYmlndWEiCiAKLSM6IGdpdGs6NTgxNworIzogZ2l0azo3MTQ2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiU0hBMSBpZCAlcyBpcyBub3Qga25vd24iCiBtc2dzdHIgIkxhIGlkIFNIQTEgJXMgZXMgZGVzY29ub2NpZGEiCiAKLSM6IGdpdGs6NTgxOQorIzogZ2l0azo3MTQ4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVGFnL0hlYWQgJXMgaXMgbm90IGtub3duIgogbXNnc3RyICJMYSBldGlxdWV0YS9yYW1hICVzIGVzIGRlY29ub2NpZGEiCiAKLSM6IGdpdGs6NTk2MQorIzogZ2l0azo3MjkwCiBtc2dpZCAiQ2hpbGRyZW4iCiBtc2dzdHIgIkhpamFzIgogCi0jOiBnaXRrOjYwMTgKKyM6IGdpdGs6NzM0NwogIywgdGNsLWZvcm1hdAogbXNnaWQgIlJlc2V0ICVzIGJyYW5jaCB0byBoZXJlIgogbXNnc3RyICJQb25lciBsYSByYW1hICVzIGVuIGVzdGEgcmV2aXNpw7NuIgogCi0jOiBnaXRrOjYwNDkKKyM6IGdpdGs6NzM0OQorbXNnaWQgIkRldGFjaGVkIGhlYWQ6IGNhbid0IHJlc2V0IgorbXNnc3RyICIiCisKKyM6IGdpdGs6NzM4MQogbXNnaWQgIlRvcCIKIG1zZ3N0ciAiT3JpZ2VuIgogCi0jOiBnaXRrOjYwNTAKKyM6IGdpdGs6NzM4MgogbXNnaWQgIkZyb20iCiBtc2dzdHIgIkRlIgogCi0jOiBnaXRrOjYwNTUKKyM6IGdpdGs6NzM4NwogbXNnaWQgIlRvIgogbXNnc3RyICJBIgogCi0jOiBnaXRrOjYwNzgKKyM6IGdpdGs6NzQxMAogbXNnaWQgIkdlbmVyYXRlIHBhdGNoIgogbXNnc3RyICJHZW5lcmFyIHBhcmNoZSIKIAotIzogZ2l0azo2MDgwCisjOiBnaXRrOjc0MTIKIG1zZ2lkICJGcm9tOiIKIG1zZ3N0ciAiRGU6IgogCi0jOiBnaXRrOjYwODkKKyM6IGdpdGs6NzQyMQogbXNnaWQgIlRvOiIKIG1zZ3N0ciAiUGFyYToiCiAKLSM6IGdpdGs6NjA5OAorIzogZ2l0azo3NDMwCiBtc2dpZCAiUmV2ZXJzZSIKIG1zZ3N0ciAiSW52ZXJ0aXIiCiAKLSM6IGdpdGs6NjEwMCBnaXRrOjYyNjkKKyM6IGdpdGs6NzQzMiBnaXRrOjc2MDcKIG1zZ2lkICJPdXRwdXQgZmlsZToiCiBtc2dzdHIgIkVzY3JpYmlyIGEgYXJjaGl2bzoiCiAKLSM6IGdpdGs6NjEwNgorIzogZ2l0azo3NDM4CiBtc2dpZCAiR2VuZXJhdGUiCiBtc2dzdHIgIkdlbmVyYXIiCiAKLSM6IGdpdGs6NjE0MgorIzogZ2l0azo3NDc0CiBtc2dpZCAiRXJyb3IgY3JlYXRpbmcgcGF0Y2g6IgogbXNnc3RyICJFcnJvciBlbiBsYSBjcmVhY2nDs24gZGVsIHBhcmNoZToiCiAKLSM6IGdpdGs6NjE2NCBnaXRrOjYyNTcgZ2l0azo2MzExCisjOiBnaXRrOjc0OTYgZ2l0azo3NTk1IGdpdGs6NzY0OQogbXNnaWQgIklEOiIKIG1zZ3N0ciAiSUQ6IgogCi0jOiBnaXRrOjYxNzMKKyM6IGdpdGs6NzUwNQogbXNnaWQgIlRhZyBuYW1lOiIKIG1zZ3N0ciAiTm9tYnJlIGRlIGV0aXF1ZXRhOiIKIAotIzogZ2l0azo2MTc3IGdpdGs6NjMyMAorIzogZ2l0azo3NTA5IGdpdGs6NzY1OQogbXNnaWQgIkNyZWF0ZSIKIG1zZ3N0ciAiQ3JlYXIiCiAKLSM6IGdpdGs6NjE5MgorIzogZ2l0azo3NTI0CiBtc2dpZCAiTm8gdGFnIG5hbWUgc3BlY2lmaWVkIgogbXNnc3RyICJObyBzZSBoYSBlc3BlY2lmaWNhZG8gZXRpcXVldGEiCiAKLSM6IGdpdGs6NjE5NgorIzogZ2l0azo3NTI4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVGFnIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIKIG1zZ3N0ciAiTGEgZXRpcXVldGEgXCIlc1wiIHlhIGV4aXN0ZSIKIAotIzogZ2l0azo2MjAyCisjOiBnaXRrOjc1MzQKIG1zZ2lkICJFcnJvciBjcmVhdGluZyB0YWc6IgogbXNnc3RyICJFcnJvciBhbCBjcmVhciBsYSBldGlxdWV0YToiCiAKLSM6IGdpdGs6NjI2NgorIzogZ2l0azo3NjA0CiBtc2dpZCAiQ29tbWFuZDoiCiBtc2dzdHIgIkNvbWFuZG86IgogCi0jOiBnaXRrOjYyNzQKKyM6IGdpdGs6NzYxMgogbXNnaWQgIldyaXRlIgogbXNnc3RyICJFc2NyaWJpciIKIAotIzogZ2l0azo2MjkwCisjOiBnaXRrOjc2MjgKIG1zZ2lkICJFcnJvciB3cml0aW5nIGNvbW1pdDoiCiBtc2dzdHIgIkVycm9yIGFsIGVzY3JpYmlyIHJldmlzacOzbjoiCiAKLSM6IGdpdGs6NjMxNgorIzogZ2l0azo3NjU0CiBtc2dpZCAiTmFtZToiCiBtc2dzdHIgIk5vbWJyZToiCiAKLSM6IGdpdGs6NjMzNQorIzogZ2l0azo3Njc0CiBtc2dpZCAiUGxlYXNlIHNwZWNpZnkgYSBuYW1lIGZvciB0aGUgbmV3IGJyYW5jaCIKIG1zZ3N0ciAiRXNwZWNpZmlxdWUgdW4gbm9tYnJlIHBhcmEgbGEgbnVldmEgcmFtYSIKIAotIzogZ2l0azo2MzY0CisjOiBnaXRrOjc3MDMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJDb21taXQgJXMgaXMgYWxyZWFkeSBpbmNsdWRlZCBpbiBicmFuY2ggJXMgLS0gcmVhbGx5IHJlLWFwcGx5IGl0PyIKIG1zZ3N0ciAiTGEgcmV2aXNpw7NuICVzIHlhIGVzdMOhIGluY2x1aWRhIGVuIGxhIHJhbWEgJXMgLS0gwr9Wb2x2ZXIgYSBhcGxpY2FybGE/IgogCi0jOiBnaXRrOjYzNjkKKyM6IGdpdGs6NzcwOAogbXNnaWQgIkNoZXJyeS1waWNraW5nIgogbXNnc3RyICJFbGlnaWVuZG8gcmV2aXNpb25lcyAoY2hlcnJ5LXBpY2tpbmcpIgogCi0jOiBnaXRrOjYzODEKKyM6IGdpdGs6NzcyMAogbXNnaWQgIk5vIGNoYW5nZXMgY29tbWl0dGVkIgogbXNnc3RyICJObyBzZSBoYW4gZ3VhcmRhZG8gY2FtYmlvcyIKIAotIzogZ2l0azo2NDA0CisjOiBnaXRrOjc3NDUKIG1zZ2lkICJDb25maXJtIHJlc2V0IgogbXNnc3RyICJDb25maXJtYXIgZ2l0IHJlc2V0IgogCi0jOiBnaXRrOjY0MDYKKyM6IGdpdGs6Nzc0NwogIywgdGNsLWZvcm1hdAogbXNnaWQgIlJlc2V0IGJyYW5jaCAlcyB0byAlcz8iCiBtc2dzdHIgIsK/UmVwb25lciBsYSByYW1hICVzIGEgJXM/IgogCi0jOiBnaXRrOjY0MTAKKyM6IGdpdGs6Nzc1MQogbXNnaWQgIlJlc2V0IHR5cGU6IgogbXNnc3RyICJUaXBvIGRlIHJlcG9zaWNpw7NuOiIKIAotIzogZ2l0azo2NDE0CisjOiBnaXRrOjc3NTUKIG1zZ2lkICJTb2Z0OiBMZWF2ZSB3b3JraW5nIHRyZWUgYW5kIGluZGV4IHVudG91Y2hlZCIKIG1zZ3N0ciAiU3VhdmU6IE5vIGFsdGVyYSBsYSBjb3BpYSBkZSB0cmFiYWpvIG5pIGVsIMOtbmRpY2UiCiAKLSM6IGdpdGs6NjQxNworIzogZ2l0azo3NzU4CiBtc2dpZCAiTWl4ZWQ6IExlYXZlIHdvcmtpbmcgdHJlZSB1bnRvdWNoZWQsIHJlc2V0IGluZGV4IgogbXNnc3RyICJNaXh0YTogQWN0dWFsaXphIGVsIMOtbmRpY2UsIG5vIGFsdGVyYSBsYSBjb3BpYSBkZSB0cmFiYWpvIgogCi0jOiBnaXRrOjY0MjAKKyM6IGdpdGs6Nzc2MQogbXNnaWQgIiIKICJIYXJkOiBSZXNldCB3b3JraW5nIHRyZWUgYW5kIGluZGV4XG4iCiAiKGRpc2NhcmQgQUxMIGxvY2FsIGNoYW5nZXMpIgpAQCAtNjkzLDE5ICs3MTksMTkgQEAKICJEdXJhOiBBY3R1YWxpemEgZWwgw61uZGljZSB5IGxhIGNvcGlhIGRlIHRyYWJham9cbiIKICIoYWJhbmRvbmEgVE9EQVMgbGFzIG1vZGlmaWNhY2lvbmVzIGxvY2FsZXMpIgogCi0jOiBnaXRrOjY0MzYKKyM6IGdpdGs6Nzc3NwogbXNnaWQgIlJlc2V0dGluZyIKIG1zZ3N0ciAiUmVwb25pZW5kbyIKIAotIzogZ2l0azo2NDkzCisjOiBnaXRrOjc4MzQKIG1zZ2lkICJDaGVja2luZyBvdXQiCiBtc2dzdHIgIkNyZWFuZG8gY29waWEgZGUgdHJhYmFqbyIKIAotIzogZ2l0azo2NTIzCisjOiBnaXRrOjc4ODUKIG1zZ2lkICJDYW5ub3QgZGVsZXRlIHRoZSBjdXJyZW50bHkgY2hlY2tlZC1vdXQgYnJhbmNoIgogbXNnc3RyICJObyBzZSBwdWVkZSBib3JyYXIgbGEgcmFtYSBhY3R1YWwiCiAKLSM6IGdpdGs6NjUyOQorIzogZ2l0azo3ODkxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIlRoZSBjb21taXRzIG9uIGJyYW5jaCAlcyBhcmVuJ3Qgb24gYW55IG90aGVyIGJyYW5jaC5cbiIKQEAgLTcxNCwxMzQgKzc0MCwxNDYgQEAKICJMYXMgcmV2aXNpb25lcyBkZSBsYSByYW1hICVzIG5vIGVzdMOhbiBwcmVzZW50ZXMgZW4gb3RyYXMgcmFtYXMuXG4iCiAiwr9Cb3JyYXIgbGEgcmFtYSAlcz8iCiAKLSM6IGdpdGs6NjU2MAorIzogZ2l0azo3OTIyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVGFncyBhbmQgaGVhZHM6ICVzIgogbXNnc3RyICJFdGlxdWV0YXMgeSByYW1hczogJXMiCiAKLSM6IGdpdGs6NjU3NAorIzogZ2l0azo3OTM2CiBtc2dpZCAiRmlsdGVyIgogbXNnc3RyICJGaWx0cm8iCiAKLSM6IGdpdGs6Njg2OAorIzogZ2l0azo4MjMwCiBtc2dpZCAiIgogIkVycm9yIHJlYWRpbmcgY29tbWl0IHRvcG9sb2d5IGluZm9ybWF0aW9uOyBicmFuY2ggYW5kIHByZWNlZGluZy9mb2xsb3dpbmcgIgogInRhZyBpbmZvcm1hdGlvbiB3aWxsIGJlIGluY29tcGxldGUuIgogbXNnc3RyICIiCi0iRXJyb3IgYWwgbGVlciBsYSB0b3BvbG9nw61hIGRlIHJldmlzaW9uZXM6IGxhIGluZm9ybWFjacOzbiBzb2JyZSAiCi0ibGFzIHJhbWFzIHkgZXRpcXVldGFzIHByZWNlZGVudGVzIHkgc2lndWllbnRlcyBzZXLDoSBpbmNvbXBsZXRhLiIKKyJFcnJvciBhbCBsZWVyIGxhIHRvcG9sb2fDrWEgZGUgcmV2aXNpb25lczogbGEgaW5mb3JtYWNpw7NuIHNvYnJlIGxhcyByYW1hcyB5ICIKKyJldGlxdWV0YXMgcHJlY2VkZW50ZXMgeSBzaWd1aWVudGVzIHNlcsOhIGluY29tcGxldGEuIgogCi0jOiBnaXRrOjc4NTIKKyM6IGdpdGs6OTIxNgogbXNnaWQgIlRhZyIKIG1zZ3N0ciAiRXRpcXVldGEiCiAKLSM6IGdpdGs6Nzg1MgorIzogZ2l0azo5MjE2CiBtc2dpZCAiSWQiCiBtc2dzdHIgIklkIgogCi0jOiBnaXRrOjc4OTIKKyM6IGdpdGs6OTI2MgogbXNnaWQgIkdpdGsgZm9udCBjaG9vc2VyIgogbXNnc3RyICJTZWxlY3RvciBkZSB0aXBvZ3JhZsOtYXMgZ2l0ayIKIAotIzogZ2l0azo3OTA5CisjOiBnaXRrOjkyNzkKIG1zZ2lkICJCIgogbXNnc3RyICJCIgogCi0jOiBnaXRrOjc5MTIKKyM6IGdpdGs6OTI4MgogbXNnaWQgIkkiCiBtc2dzdHIgIkkiCiAKLSM6IGdpdGs6ODAwNQorIzogZ2l0azo5Mzc1CiBtc2dpZCAiR2l0ayBwcmVmZXJlbmNlcyIKIG1zZ3N0ciAiUHJlZmVyZW5jaWFzIGRlIGdpdGsiCiAKLSM6IGdpdGs6ODAwNgorIzogZ2l0azo5Mzc2CiBtc2dpZCAiQ29tbWl0IGxpc3QgZGlzcGxheSBvcHRpb25zIgogbXNnc3RyICJPcGNpb25lcyBkZSB2aXN1YWxpemFjacOzbiBkZSBsYSBsaXN0YSBkZSByZXZpc2lvbmVzIgogCi0jOiBnaXRrOjgwMDkKKyM6IGdpdGs6OTM3OQogbXNnaWQgIk1heGltdW0gZ3JhcGggd2lkdGggKGxpbmVzKSIKIG1zZ3N0ciAiQW5jaG8gbcOheGltbyBkZWwgZ3LDoWZpY28gKGVuIGzDrW5lYXMpIgogCi0jOiBnaXRrOjgwMTMKKyM6IGdpdGs6OTM4MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIk1heGltdW0gZ3JhcGggd2lkdGggKCUgb2YgcGFuZSkiCiBtc2dzdHIgIkFuY2hvIG3DoXhpbW8gZGVsIGdyw6FmaWNvIChlbiAlIGRlbCBwYW5lbCkiCiAKLSM6IGdpdGs6ODAxOAorIzogZ2l0azo5Mzg4CiBtc2dpZCAiU2hvdyBsb2NhbCBjaGFuZ2VzIgogbXNnc3RyICJNb3N0cmFyIGNhbWJpb3MgbG9jYWxlcyIKIAotIzogZ2l0azo4MDIzCisjOiBnaXRrOjkzOTMKIG1zZ2lkICJBdXRvLXNlbGVjdCBTSEExIgogbXNnc3RyICJTZWxlY2Npb25hciBhdXRvbcOhdGljYW1lbnRlIFNIQTEgaGFzaCIKIAotIzogZ2l0azo4MDI4CisjOiBnaXRrOjkzOTgKIG1zZ2lkICJEaWZmIGRpc3BsYXkgb3B0aW9ucyIKIG1zZ3N0ciAiT3BjaW9uZXMgZGUgdmlzdWFsaXphY2nDs24gZGUgZGlmZXJlbmNpYXMiCiAKLSM6IGdpdGs6ODAzMAorIzogZ2l0azo5NDAwCiBtc2dpZCAiVGFiIHNwYWNpbmciCiBtc2dzdHIgIkVzcGFjaWFkbyBkZSB0YWJ1bGFkb3IiCiAKLSM6IGdpdGs6ODAzNAorIzogZ2l0azo5NDA0CiBtc2dpZCAiRGlzcGxheSBuZWFyYnkgdGFncyIKIG1zZ3N0ciAiTW9zdHJhciBldGlxdWV0YXMgY2VyY2FuYXMiCiAKLSM6IGdpdGs6ODAzOQorIzogZ2l0azo5NDA5CiBtc2dpZCAiTGltaXQgZGlmZnMgdG8gbGlzdGVkIHBhdGhzIgogbXNnc3RyICJMaW1pdGFyIGxhcyBkaWZlcmVuY2lhcyBhIGxhcyBydXRhcyBzZWxlY2Npb25hZGFzIgogCi0jOiBnaXRrOjgwNDQKKyM6IGdpdGs6OTQxNAorbXNnaWQgIlN1cHBvcnQgcGVyLWZpbGUgZW5jb2RpbmdzIgorbXNnc3RyICIiCisKKyM6IGdpdGs6OTQyMQorbXNnaWQgIkV4dGVybmFsIGRpZmYgdG9vbCIKK21zZ3N0ciAiIgorCisjOiBnaXRrOjk0MjMKK21zZ2lkICJDaG9vc2UuLi4iCittc2dzdHIgIiIKKworIzogZ2l0azo5NDI4CiBtc2dpZCAiQ29sb3JzOiBwcmVzcyB0byBjaG9vc2UiCiBtc2dzdHIgIkNvbG9yZXM6IHB1bHNlIHBhcmEgc2VsZWNjaW9uYXIiCiAKLSM6IGdpdGs6ODA0NworIzogZ2l0azo5NDMxCiBtc2dpZCAiQmFja2dyb3VuZCIKIG1zZ3N0ciAiRm9uZG8iCiAKLSM6IGdpdGs6ODA1MQorIzogZ2l0azo5NDM1CiBtc2dpZCAiRm9yZWdyb3VuZCIKIG1zZ3N0ciAiUHJpbWVyIHBsYW5vIgogCi0jOiBnaXRrOjgwNTUKKyM6IGdpdGs6OTQzOQogbXNnaWQgIkRpZmY6IG9sZCBsaW5lcyIKIG1zZ3N0ciAiRGlmZjogbMOtbmVhcyB2aWVqYXMiCiAKLSM6IGdpdGs6ODA2MAorIzogZ2l0azo5NDQ0CiBtc2dpZCAiRGlmZjogbmV3IGxpbmVzIgogbXNnc3RyICJEaWZmOiBsw61uZWFzIG51ZXZhcyIKIAotIzogZ2l0azo4MDY1CisjOiBnaXRrOjk0NDkKIG1zZ2lkICJEaWZmOiBodW5rIGhlYWRlciIKIG1zZ3N0ciAiRGlmZjogY2FiZWNlcmEgZGUgZnJhZ21lbnRvIgogCi0jOiBnaXRrOjgwNzEKKyM6IGdpdGs6OTQ1NQogbXNnaWQgIlNlbGVjdCBiZyIKIG1zZ3N0ciAiQ29sb3IgZGUgZm9uZG8gZGUgbGEgc2VsZWNjacOzbiIKIAotIzogZ2l0azo4MDc1CisjOiBnaXRrOjk0NTkKIG1zZ2lkICJGb250czogcHJlc3MgdG8gY2hvb3NlIgogbXNnc3RyICJUaXBvZ3JhZsOtYXM6IHB1bHNlIHBhcmEgZWxlZ2lyIgogCi0jOiBnaXRrOjgwNzcKKyM6IGdpdGs6OTQ2MQogbXNnaWQgIk1haW4gZm9udCIKIG1zZ3N0ciAiVGlwb2dyYWbDrWEgcHJpbmNpcGFsIgogCi0jOiBnaXRrOjgwNzgKKyM6IGdpdGs6OTQ2MgogbXNnaWQgIkRpZmYgZGlzcGxheSBmb250IgogbXNnc3RyICJUaXBvZ3JhZsOtYSBwYXJhIGRpZmVyZW5jaWFzIgogCi0jOiBnaXRrOjgwNzkKKyM6IGdpdGs6OTQ2MwogbXNnaWQgIlVzZXIgaW50ZXJmYWNlIGZvbnQiCiBtc2dzdHIgIlRpcG9ncmFmw61hIHBhcmEgaW50ZXJmYXogZGUgdXN1YXJpbyIKIAotIzogZ2l0azo4MDk1CisjOiBnaXRrOjk0ODgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJHaXRrOiBjaG9vc2UgY29sb3IgZm9yICVzIgogbXNnc3RyICJHaXRrOiBlbGVnaXIgY29sb3IgcGFyYSAlcyIKIAotIzogZ2l0azo4NDc2CisjOiBnaXRrOjk5MzQKIG1zZ2lkICIiCiAiU29ycnksIGdpdGsgY2Fubm90IHJ1biB3aXRoIHRoaXMgdmVyc2lvbiBvZiBUY2wvVGsuXG4iCiAiIEdpdGsgcmVxdWlyZXMgYXQgbGVhc3QgVGNsL1RrIDguNC4iCkBAIC04NDksNDIgKzg4NywyNSBAQAogIkVzdGEgdmVyc2nDs24gZGUgVGNsL1RrIGVzIGRlbWFzaWFkbyBhbnRpZ3VhLlxuIgogIiBHaXRrIHJlcXVpZXJlIFRjbC9UayB2ZXJzacOzbiA4LjQgbyBzdXBlcmlvci4iCiAKLSM6IGdpdGs6ODU2NQorIzogZ2l0azoxMDA0NwogbXNnaWQgIkNhbm5vdCBmaW5kIGEgZ2l0IHJlcG9zaXRvcnkgaGVyZS4iCiBtc2dzdHIgIk5vIGhheSB1biByZXBvc2l0b3JpbyBnaXQgYXF1w60uIgogCi0jOiBnaXRrOjg1NjkKKyM6IGdpdGs6MTAwNTEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgZmluZCB0aGUgZ2l0IGRpcmVjdG9yeSBcIiVzXCIuIgogbXNnc3RyICJObyBoYXkgZGlyZWN0b3JpbyBnaXQgXCIlc1wiLiIKIAotIzogZ2l0azo4NjEyCisjOiBnaXRrOjEwMDk4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQW1iaWd1b3VzIGFyZ3VtZW50ICclcyc6IGJvdGggcmV2aXNpb24gYW5kIGZpbGVuYW1lIgotbXNnc3RyICJBcmd1bWVudG8gYW1iaWd1bzogJyVzJyBlcyB0YW50byB1bmEgcmV2aXNpw7NuIGNvbW8gdW4gbm9tYnJlIGRlIGFyY2hpdm8iCittc2dzdHIgIiIKKyJBcmd1bWVudG8gYW1iaWd1bzogJyVzJyBlcyB0YW50byB1bmEgcmV2aXNpw7NuIGNvbW8gdW4gbm9tYnJlIGRlIGFyY2hpdm8iCiAKLSM6IGdpdGs6ODYyNAorIzogZ2l0azoxMDExMAogbXNnaWQgIkJhZCBhcmd1bWVudHMgdG8gZ2l0azoiCiBtc2dzdHIgIkFyZ3VtZW50b3MgaW5jb3JyZWN0b3MgYSBHaXRrOiIKIAotIzogZ2l0azo4NjM2Ci1tc2dpZCAiQ291bGRuJ3QgZ2V0IGxpc3Qgb2YgdW5tZXJnZWQgZmlsZXM6IgotbXNnc3RyICJJbXBvc2libGUgb2J0ZW5lciBsYSBsaXN0YSBkZSBhcmNoaXZvcyBwZW5kaWVudGVzIGRlIGZ1c2nDs246IgotCi0jOiBnaXRrOjg2NTIKLW1zZ2lkICJObyBmaWxlcyBzZWxlY3RlZDogLS1tZXJnZSBzcGVjaWZpZWQgYnV0IG5vIGZpbGVzIGFyZSB1bm1lcmdlZC4iCi1tc2dzdHIgIiIKLSJObyBoYXkgYXJjaGl2b3Mgc2VsZWNjaW9uYWRvczogc2Ugc2VsZWNjaW9uw7MgbGEgb3BjacOzbiAtLW1lcmdlIHBlcm8gbm8gaGF5ICIKLSJhcmNoaXZvcyBwZW5kaWVudGVzIGRlIGZ1c2nDs24uIgotCi0jOiBnaXRrOjg2NTUKLW1zZ2lkICIiCi0iTm8gZmlsZXMgc2VsZWN0ZWQ6IC0tbWVyZ2Ugc3BlY2lmaWVkIGJ1dCBubyB1bm1lcmdlZCBmaWxlcyBhcmUgd2l0aGluIGZpbGUgIgotImxpbWl0LiIKLW1zZ3N0ciAiIgotIk5vIGhheSBhcmNoaXZvcyBzZWxlY2Npb25hZG9zOiBzZSBzZWxlY2Npb27DsyBsYSBvcGNpw7NuIC0tbWVyZ2UgcGVybyBsb3MgYXJjaGl2b3MgIgotImVzcGVjaWZpY2Fkb3Mgbm8gbmVjZXNpdGFuIGZ1c2nDs24uIgotCi0jOiBnaXRrOjg3MTYKKyM6IGdpdGs6MTAxNzAKIG1zZ2lkICJDb21tYW5kIGxpbmUiCiBtc2dzdHIgIkzDrW5lYSBkZSBjb21hbmRvcyIKZGlmZiAtLWdpdCBhL2dpdGstZ2l0L3BvL2l0LnBvIGIvZ2l0ay1naXQvcG8vaXQucG8KaW5kZXggZDBmNGMyZS4uZTg5Yzk1NyAxMDA2NDQKLS0tIGEvZ2l0ay1naXQvcG8vaXQucG8KKysrIGIvZ2l0ay1naXQvcG8vaXQucG8KQEAgLTgsNyArOCw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdpdGtcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMDgtMDMtMTMgMTc6MjkrMDEwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA4LTEwLTE4IDIyOjAzKzExMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDA4LTAzLTEzIDE3OjM0KzAxMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IE1pY2hlbGUgQmFsbGFiaW8gPGJhcnJhX2N1ZGFAa2F0YW1haWwuY29tPlxuIgogIkxhbmd1YWdlLVRlYW06IEl0YWxpYW5cbiIKQEAgLTE2LDY3NiArMTYsNzA2IEBACiAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCiAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgogCi0jOiBnaXRrOjExMQotbXNnaWQgIkVycm9yIGV4ZWN1dGluZyBnaXQgcmV2LWxpc3Q6IgotbXNnc3RyICJFcnJvcmUgbmVsbCdlc2VjdXppb25lIGRpIGdpdCByZXYtbGlzdDoiCisjOiBnaXRrOjExMworbXNnaWQgIkNvdWxkbid0IGdldCBsaXN0IG9mIHVubWVyZ2VkIGZpbGVzOiIKK21zZ3N0ciAiSW1wb3NzaWJpbGUgb3R0ZW5lcmUgbCdlbGVuY28gZGVpIGZpbGUgaW4gYXR0ZXNhIGRpIGZ1c2lvbmU6IgogCi0jOiBnaXRrOjEyNAorIzogZ2l0azozNDAKK21zZ2lkICJObyBmaWxlcyBzZWxlY3RlZDogLS1tZXJnZSBzcGVjaWZpZWQgYnV0IG5vIGZpbGVzIGFyZSB1bm1lcmdlZC4iCittc2dzdHIgIiIKKyJOZXNzdW4gZmlsZSBzZWxlemlvbmF0bzogw6ggc3RhdGEgc3BlY2lmaWNhdGEgbCdvcHppb25lIC0tbWVyZ2UgbWEgbm9uIGNpICIKKyJzb25vIGZpbGUgaW4gYXR0ZXNhIGRpIGZ1c2lvbmUuIgorCisjOiBnaXRrOjM0MworbXNnaWQgIiIKKyJObyBmaWxlcyBzZWxlY3RlZDogLS1tZXJnZSBzcGVjaWZpZWQgYnV0IG5vIHVubWVyZ2VkIGZpbGVzIGFyZSB3aXRoaW4gZmlsZSAiCisibGltaXQuIgorbXNnc3RyICIiCisiTmVzc3VuIGZpbGUgc2VsZXppb25hdG86IMOoIHN0YXRhIHNwZWNpZmljYXRhIGwnb3B6aW9uZSAtLW1lcmdlIG1hIGkgZmlsZSAiCisic3BlY2lmaWNhdGkgbm9uIHNvbm8gaW4gYXR0ZXNhIGRpIGZ1c2lvbmUuIgorCisjOiBnaXRrOjM2NSBnaXRrOjUwMworbXNnaWQgIkVycm9yIGV4ZWN1dGluZyBnaXQgbG9nOiIKK21zZ3N0ciAiRXJyb3JlIG5lbGwnZXNlY3V6aW9uZSBkaSBnaXQgbG9nOiIKKworIzogZ2l0azozNzgKIG1zZ2lkICJSZWFkaW5nIgogbXNnc3RyICJMZXR0dXJhIGluIGNvcnNvIgogCi0jOiBnaXRrOjE1MSBnaXRrOjIxOTEKKyM6IGdpdGs6NDM4IGdpdGs6MzQ2MgogbXNnaWQgIlJlYWRpbmcgY29tbWl0cy4uLiIKIG1zZ3N0ciAiTGV0dHVyYSBkZWxsZSByZXZpc2lvbmkgaW4gY29yc28uLi4iCiAKLSM6IGdpdGs6Mjc1Ci1tc2dpZCAiQ2FuJ3QgcGFyc2UgZ2l0IGxvZyBvdXRwdXQ6IgotbXNnc3RyICJJbXBvc3NpYmlsZSBlbGFib3JhcmUgaSBkYXRpIGRpIGdpdCBsb2c6IgotCi0jOiBnaXRrOjM4NiBnaXRrOjIxOTUKKyM6IGdpdGs6NDQxIGdpdGs6MTUyOCBnaXRrOjM0NjUKIG1zZ2lkICJObyBjb21taXRzIHNlbGVjdGVkIgogbXNnc3RyICJOZXNzdW5hIHJldmlzaW9uZSBzZWxlemlvbmF0YSIKIAotIzogZ2l0azo1MDAKKyM6IGdpdGs6MTM5OQorbXNnaWQgIkNhbid0IHBhcnNlIGdpdCBsb2cgb3V0cHV0OiIKK21zZ3N0ciAiSW1wb3NzaWJpbGUgZWxhYm9yYXJlIGkgZGF0aSBkaSBnaXQgbG9nOiIKKworIzogZ2l0azoxNjA1CiBtc2dpZCAiTm8gY29tbWl0IGluZm9ybWF0aW9uIGF2YWlsYWJsZSIKIG1zZ3N0ciAiTmVzc3VuYSBpbmZvcm1hemlvbmUgZGlzcG9uaWJpbGUgc3VsbGUgcmV2aXNpb25pIgogCi0jOiBnaXRrOjU5OSBnaXRrOjYyMSBnaXRrOjE5NTUgZ2l0azo2NDIzIGdpdGs6NzkyMyBnaXRrOjgwODIKKyM6IGdpdGs6MTcwOSBnaXRrOjE3MzEgZ2l0azozMjU5IGdpdGs6Nzc2NCBnaXRrOjkyOTMgZ2l0azo5NDY2CiBtc2dpZCAiT0siCiBtc2dzdHIgIk9LIgogCi0jOiBnaXRrOjYyMyBnaXRrOjE5NTYgZ2l0azo2MTA3IGdpdGs6NjE3OCBnaXRrOjYyNzUgZ2l0azo2MzIxIGdpdGs6NjQyNQotIzogZ2l0azo3OTI0IGdpdGs6ODA4MworIzogZ2l0azoxNzMzIGdpdGs6MzI2MCBnaXRrOjc0MzkgZ2l0azo3NTEwIGdpdGs6NzYxMyBnaXRrOjc2NjAgZ2l0azo3NzY2CisjOiBnaXRrOjkyOTQgZ2l0azo5NDY3CiBtc2dpZCAiQ2FuY2VsIgogbXNnc3RyICJBbm51bGxhIgogCi0jOiBnaXRrOjY2MQotbXNnaWQgIkZpbGUiCi1tc2dzdHIgIkZpbGUiCi0KLSM6IGdpdGs6NjYzCisjOiBnaXRrOjE4MTEKIG1zZ2lkICJVcGRhdGUiCiBtc2dzdHIgIkFnZ2lvcm5hIgogCi0jOiBnaXRrOjY2NAorIzogZ2l0azoxODEzCiBtc2dpZCAiUmVyZWFkIHJlZmVyZW5jZXMiCiBtc2dzdHIgIlJpbGVnZ2kgcmlmZXJpbWVudGkiCiAKLSM6IGdpdGs6NjY1CisjOiBnaXRrOjE4MTQKIG1zZ2lkICJMaXN0IHJlZmVyZW5jZXMiCiBtc2dzdHIgIkVsZW5jYSByaWZlcmltZW50aSIKIAotIzogZ2l0azo2NjYKKyM6IGdpdGs6MTgxNQogbXNnaWQgIlF1aXQiCiBtc2dzdHIgIkVzY2kiCiAKLSM6IGdpdGs6NjY4Ci1tc2dpZCAiRWRpdCIKLW1zZ3N0ciAiTW9kaWZpY2EiCisjOiBnaXRrOjE4MTAKK21zZ2lkICJGaWxlIgorbXNnc3RyICJGaWxlIgogCi0jOiBnaXRrOjY2OQorIzogZ2l0azoxODE4CiBtc2dpZCAiUHJlZmVyZW5jZXMiCiBtc2dzdHIgIlByZWZlcmVuemUiCiAKLSM6IGdpdGs6NjcyIGdpdGs6MTg5MgotbXNnaWQgIlZpZXciCi1tc2dzdHIgIlZpc3RhIgorIzogZ2l0azoxODE3Cittc2dpZCAiRWRpdCIKK21zZ3N0ciAiTW9kaWZpY2EiCiAKLSM6IGdpdGs6NjczCisjOiBnaXRrOjE4MjEKIG1zZ2lkICJOZXcgdmlldy4uLiIKIG1zZ3N0ciAiTnVvdmEgdmlzdGEuLi4iCiAKLSM6IGdpdGs6Njc0IGdpdGs6MjEzMyBnaXRrOjg3MjIKKyM6IGdpdGs6MTgyMgogbXNnaWQgIkVkaXQgdmlldy4uLiIKIG1zZ3N0ciAiTW9kaWZpY2EgdmlzdGEuLi4iCiAKLSM6IGdpdGs6Njc2IGdpdGs6MjEzNCBnaXRrOjg3MjMKKyM6IGdpdGs6MTgyMwogbXNnaWQgIkRlbGV0ZSB2aWV3IgogbXNnc3RyICJFbGltaW5hIHZpc3RhIgogCi0jOiBnaXRrOjY3OAorIzogZ2l0azoxODI1CiBtc2dpZCAiQWxsIGZpbGVzIgogbXNnc3RyICJUdXR0aSBpIGZpbGUiCiAKLSM6IGdpdGs6NjgyCi1tc2dpZCAiSGVscCIKLW1zZ3N0ciAiQWl1dG8iCisjOiBnaXRrOjE4MjAgZ2l0azozMTk2Cittc2dpZCAiVmlldyIKK21zZ3N0ciAiVmlzdGEiCiAKLSM6IGdpdGs6NjgzIGdpdGs6MTMxNworIzogZ2l0azoxODI4IGdpdGs6MjQ4NwogbXNnaWQgIkFib3V0IGdpdGsiCiBtc2dzdHIgIkluZm9ybWF6aW9uaSBzdSBnaXRrIgogCi0jOiBnaXRrOjY4NAorIzogZ2l0azoxODI5CiBtc2dpZCAiS2V5IGJpbmRpbmdzIgogbXNnc3RyICJTY29yY2lhdG9pZSBkYSB0YXN0aWVyYSIKIAotIzogZ2l0azo3NDEKKyM6IGdpdGs6MTgyNworbXNnaWQgIkhlbHAiCittc2dzdHIgIkFpdXRvIgorCisjOiBnaXRrOjE4ODcKIG1zZ2lkICJTSEExIElEOiAiCiBtc2dzdHIgIlNIQTEgSUQ6ICIKIAotIzogZ2l0azo3OTEKKyM6IGdpdGs6MTkxOAorbXNnaWQgIlJvdyIKK21zZ3N0ciAiIgorCisjOiBnaXRrOjE5NDkKIG1zZ2lkICJGaW5kIgogbXNnc3RyICJUcm92YSIKIAotIzogZ2l0azo3OTIKKyM6IGdpdGs6MTk1MAogbXNnaWQgIm5leHQiCiBtc2dzdHIgInN1Y2MiCiAKLSM6IGdpdGs6NzkzCisjOiBnaXRrOjE5NTEKIG1zZ2lkICJwcmV2IgogbXNnc3RyICJwcmVjIgogCi0jOiBnaXRrOjc5NAorIzogZ2l0azoxOTUyCiBtc2dpZCAiY29tbWl0IgogbXNnc3RyICJyZXZpc2lvbmUiCiAKLSM6IGdpdGs6Nzk3IGdpdGs6Nzk5IGdpdGs6MjM1NiBnaXRrOjIzNzkgZ2l0azoyNDAzIGdpdGs6NDMwNiBnaXRrOjQzNjkKKyM6IGdpdGs6MTk1NSBnaXRrOjE5NTcgZ2l0azozNjE3IGdpdGs6MzY0MCBnaXRrOjM2NjQgZ2l0azo1NTUwIGdpdGs6NTYyMQogbXNnaWQgImNvbnRhaW5pbmc6IgogbXNnc3RyICJjb250ZW5lbnRlOiIKIAotIzogZ2l0azo4MDAgZ2l0azoxNzc4IGdpdGs6MTc4MyBnaXRrOjI0MzEKKyM6IGdpdGs6MTk1OCBnaXRrOjI5NTQgZ2l0azoyOTU5IGdpdGs6MzY5MgogbXNnaWQgInRvdWNoaW5nIHBhdGhzOiIKIG1zZ3N0ciAiY2hlIHJpZ3VhcmRhIGkgcGVyY29yc2k6IgogCi0jOiBnaXRrOjgwMSBnaXRrOjI0MzYKKyM6IGdpdGs6MTk1OSBnaXRrOjM2OTcKIG1zZ2lkICJhZGRpbmcvcmVtb3Zpbmcgc3RyaW5nOiIKIG1zZ3N0ciAiY2hlIGFnZ2l1bmdlL3JpbXVvdmUgbGEgc3RyaW5nYToiCiAKLSM6IGdpdGs6ODEwIGdpdGs6ODEyCisjOiBnaXRrOjE5NjggZ2l0azoxOTcwCiBtc2dpZCAiRXhhY3QiCiBtc2dzdHIgIkVzYXR0byIKIAotIzogZ2l0azo4MTIgZ2l0azoyNTE0IGdpdGs6NDI3NAorIzogZ2l0azoxOTcwIGdpdGs6Mzc3MyBnaXRrOjU1MTgKIG1zZ2lkICJJZ25DYXNlIgogbXNnc3RyICIiCiAKLSM6IGdpdGs6ODEyIGdpdGs6MjQwNSBnaXRrOjI1MTIgZ2l0azo0MjcwCisjOiBnaXRrOjE5NzAgZ2l0azozNjY2IGdpdGs6Mzc3MSBnaXRrOjU1MTQKIG1zZ2lkICJSZWdleHAiCiBtc2dzdHIgIiIKIAotIzogZ2l0azo4MTQgZ2l0azo4MTUgZ2l0azoyNTMzIGdpdGs6MjU2MyBnaXRrOjI1NzAgZ2l0azo0MzgwIGdpdGs6NDQzNgorIzogZ2l0azoxOTcyIGdpdGs6MTk3MyBnaXRrOjM3OTIgZ2l0azozODIyIGdpdGs6MzgyOSBnaXRrOjU2NDEgZ2l0azo1NzA4CiBtc2dpZCAiQWxsIGZpZWxkcyIKIG1zZ3N0ciAiVHV0dGkgaSBjYW1waSIKIAotIzogZ2l0azo4MTUgZ2l0azoyNTMxIGdpdGs6MjU2MyBnaXRrOjQzMzYKKyM6IGdpdGs6MTk3MyBnaXRrOjM3OTAgZ2l0azozODIyIGdpdGs6NTU4MAogbXNnaWQgIkhlYWRsaW5lIgogbXNnc3RyICJUaXRvbG8iCiAKLSM6IGdpdGs6ODE2IGdpdGs6MjUzMSBnaXRrOjQzMzYgZ2l0azo0NDM2IGdpdGs6NDgyNworIzogZ2l0azoxOTc0IGdpdGs6Mzc5MCBnaXRrOjU1ODAgZ2l0azo1NzA4IGdpdGs6NjEwOQogbXNnaWQgIkNvbW1lbnRzIgogbXNnc3RyICJDb21tZW50aSIKIAotIzogZ2l0azo4MTYgZ2l0azoyNTMxIGdpdGs6MjUzNSBnaXRrOjI1NzAgZ2l0azo0MzM2IGdpdGs6NDc2MyBnaXRrOjU5NTYKLSM6IGdpdGs6NTk3MQorIzogZ2l0azoxOTc0IGdpdGs6Mzc5MCBnaXRrOjM3OTQgZ2l0azozODI5IGdpdGs6NTU4MCBnaXRrOjYwNDUgZ2l0azo3Mjg1CisjOiBnaXRrOjczMDAKIG1zZ2lkICJBdXRob3IiCiBtc2dzdHIgIkF1dG9yZSIKIAotIzogZ2l0azo4MTYgZ2l0azoyNTMxIGdpdGs6NDMzNiBnaXRrOjQ3NjUKKyM6IGdpdGs6MTk3NCBnaXRrOjM3OTAgZ2l0azo1NTgwIGdpdGs6NjA0NwogbXNnaWQgIkNvbW1pdHRlciIKIG1zZ3N0ciAiUmV2aXNpb25lIGNyZWF0YSBkYSIKIAotIzogZ2l0azo4NDUKKyM6IGdpdGs6MjAwMwogbXNnaWQgIlNlYXJjaCIKIG1zZ3N0ciAiQ2VyY2EiCiAKLSM6IGdpdGs6ODUyCisjOiBnaXRrOjIwMTAKIG1zZ2lkICJEaWZmIgogbXNnc3RyICIiCiAKLSM6IGdpdGs6ODU0CisjOiBnaXRrOjIwMTIKIG1zZ2lkICJPbGQgdmVyc2lvbiIKIG1zZ3N0ciAiVmVjY2hpYSB2ZXJzaW9uZSIKIAotIzogZ2l0azo4NTYKKyM6IGdpdGs6MjAxNAogbXNnaWQgIk5ldyB2ZXJzaW9uIgogbXNnc3RyICJOdW92YSB2ZXJzaW9uZSIKIAotIzogZ2l0azo4NTgKKyM6IGdpdGs6MjAxNgogbXNnaWQgIkxpbmVzIG9mIGNvbnRleHQiCiBtc2dzdHIgIkxpbmVlIGRpIGNvbnRlc3RvIgogCi0jOiBnaXRrOjg2OAorIzogZ2l0azoyMDI2CiBtc2dpZCAiSWdub3JlIHNwYWNlIGNoYW5nZSIKIG1zZ3N0ciAiSWdub3JhIG1vZGlmaWNoZSBhZ2xpIHNwYXppIgogCi0jOiBnaXRrOjkyNgorIzogZ2l0azoyMDg0CiBtc2dpZCAiUGF0Y2giCiBtc2dzdHIgIk1vZGlmaWNoZSIKIAotIzogZ2l0azo5MjgKKyM6IGdpdGs6MjA4NgogbXNnaWQgIlRyZWUiCiBtc2dzdHIgIkRpcmVjdG9yeSIKIAotIzogZ2l0azoxMDUzIGdpdGs6MTA2OCBnaXRrOjYwMjIKKyM6IGdpdGs6MjIxMyBnaXRrOjIyMjYKIG1zZ2lkICJEaWZmIHRoaXMgLT4gc2VsZWN0ZWQiCiBtc2dzdHIgIkRpZmYgcXVlc3RvIC0+IHNlbGV6aW9uYXRvIgogCi0jOiBnaXRrOjEwNTUgZ2l0azoxMDcwIGdpdGs6NjAyMworIzogZ2l0azoyMjE0IGdpdGs6MjIyNwogbXNnaWQgIkRpZmYgc2VsZWN0ZWQgLT4gdGhpcyIKIG1zZ3N0ciAiRGlmZiBzZWxlemlvbmF0byAtPiBxdWVzdG8iCiAKLSM6IGdpdGs6MTA1NyBnaXRrOjEwNzIgZ2l0azo2MDI0CisjOiBnaXRrOjIyMTUgZ2l0azoyMjI4CiBtc2dpZCAiTWFrZSBwYXRjaCIKIG1zZ3N0ciAiQ3JlYSBwYXRjaCIKIAotIzogZ2l0azoxMDU4IGdpdGs6NjE2MgorIzogZ2l0azoyMjE2IGdpdGs6NzQ5NAogbXNnaWQgIkNyZWF0ZSB0YWciCiBtc2dzdHIgIkNyZWEgZXRpY2hldHRhIgogCi0jOiBnaXRrOjEwNTkgZ2l0azo2MjU1CisjOiBnaXRrOjIyMTcgZ2l0azo3NTkzCiBtc2dpZCAiV3JpdGUgY29tbWl0IHRvIGZpbGUiCiBtc2dzdHIgIlNjcml2aSByZXZpc2lvbmUgaW4gdW4gZmlsZSIKIAotIzogZ2l0azoxMDYwIGdpdGs6NjMwOQorIzogZ2l0azoyMjE4IGdpdGs6NzY0NwogbXNnaWQgIkNyZWF0ZSBuZXcgYnJhbmNoIgogbXNnc3RyICJDcmVhIHVuIG51b3ZvIHJhbW8iCiAKLSM6IGdpdGs6MTA2MQorIzogZ2l0azoyMjE5CiBtc2dpZCAiQ2hlcnJ5LXBpY2sgdGhpcyBjb21taXQiCiBtc2dzdHIgIlBvcnRhIHF1ZXN0YSByZXZpc2lvbmUgaW4gY2ltYSBhbCByYW1vIGF0dHVhbGUiCiAKLSM6IGdpdGs6MTA2MworIzogZ2l0azoyMjIwCiBtc2dpZCAiUmVzZXQgSEVBRCBicmFuY2ggdG8gaGVyZSIKIG1zZ3N0ciAiQWdnaW9ybmEgaWwgcmFtbyBIRUFEIGEgcXVlc3RhIHJldmlzaW9uZSIKIAotIzogZ2l0azoxMDc5CisjOiBnaXRrOjIyMzQKIG1zZ2lkICJDaGVjayBvdXQgdGhpcyBicmFuY2giCiBtc2dzdHIgIkF0dGl2YSBxdWVzdG8gcmFtbyIKIAotIzogZ2l0azoxMDgxCisjOiBnaXRrOjIyMzUKIG1zZ2lkICJSZW1vdmUgdGhpcyBicmFuY2giCiBtc2dzdHIgIkVsaW1pbmEgcXVlc3RvIHJhbW8iCiAKLSM6IGdpdGs6MTA4NworIzogZ2l0azoyMjQyCiBtc2dpZCAiSGlnaGxpZ2h0IHRoaXMgdG9vIgogbXNnc3RyICJFdmlkZW56aWEgYW5jaGUgcXVlc3RvIgogCi0jOiBnaXRrOjEwODkKKyM6IGdpdGs6MjI0MwogbXNnaWQgIkhpZ2hsaWdodCB0aGlzIG9ubHkiCiBtc2dzdHIgIkV2aWRlbnppYSBzb2xvIHF1ZXN0byIKIAotIzogZ2l0azoxMzE4CisjOiBnaXRrOjIyNDUKK21zZ2lkICJCbGFtZSBwYXJlbnQgY29tbWl0IgorbXNnc3RyICIiCisKKyM6IGdpdGs6MjQ4OAogbXNnaWQgIiIKICJcbiIKICJHaXRrIC0gYSBjb21taXQgdmlld2VyIGZvciBnaXRcbiIKICJcbiIKLSJDb3B5cmlnaHQgwqkgMjAwNS0yMDA2IFBhdWwgTWFja2VycmFzXG4iCisiQ29weXJpZ2h0IMKpIDIwMDUtMjAwOCBQYXVsIE1hY2tlcnJhc1xuIgogIlxuIgogIlVzZSBhbmQgcmVkaXN0cmlidXRlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UiCiBtc2dzdHIgIiIKICJcbiIKICJHaXRrIC0gdW4gdmlzdWFsaXp6YXRvcmUgZGkgcmV2aXNpb25pIHBlciBnaXRcbiIKICJcbiIKLSJDb3B5cmlnaHQgwqkgMjAwNS0yMDA2IFBhdWwgTWFja2VycmFzXG4iCisiQ29weXJpZ2h0IMKpIDIwMDUtMjAwOCBQYXVsIE1hY2tlcnJhc1xuIgogIlxuIgogIlV0aWxpenpvIGUgcmVkaXN0cmlidXppb25lIHBlcm1lc3NpIHNvdHRvIGkgdGVybWluaSBkZWxsYSBHTlUgR2VuZXJhbCBQdWJsaWMgIgogIkxpY2Vuc2UiCiAKLSM6IGdpdGs6MTMyNiBnaXRrOjEzODcgZ2l0azo2NTgxCisjOiBnaXRrOjI0OTYgZ2l0azoyNTU3IGdpdGs6Nzk0MwogbXNnaWQgIkNsb3NlIgogbXNnc3RyICJDaGl1ZGkiCiAKLSM6IGdpdGs6MTM0NQorIzogZ2l0azoyNTE1CiBtc2dpZCAiR2l0ayBrZXkgYmluZGluZ3MiCiBtc2dzdHIgIlNjb3JjaWF0b2llIGRhIHRhc3RpZXJhIGRpIEdpdGsiCiAKLSM6IGdpdGs6MTM0NworIzogZ2l0azoyNTE3CiBtc2dpZCAiR2l0ayBrZXkgYmluZGluZ3M6IgogbXNnc3RyICJTY29yY2lhdG9pZSBkYSB0YXN0aWVyYSBkaSBHaXRrOiIKIAotIzogZ2l0azoxMzQ5CisjOiBnaXRrOjI1MTkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtUT5cdFx0UXVpdCIKIG1zZ3N0ciAiPCVzLVE+XHRcdEVzY2kiCiAKLSM6IGdpdGs6MTM1MAorIzogZ2l0azoyNTIwCiBtc2dpZCAiPEhvbWU+XHRcdE1vdmUgdG8gZmlyc3QgY29tbWl0IgogbXNnc3RyICI8SG9tZT5cdFx0VmFpIGFsbGEgcHJpbWEgcmV2aXNpb25lIgogCi0jOiBnaXRrOjEzNTEKKyM6IGdpdGs6MjUyMQogbXNnaWQgIjxFbmQ+XHRcdE1vdmUgdG8gbGFzdCBjb21taXQiCiBtc2dzdHIgIjxFbmQ+XHRcdFZhaSBhbGwndWx0aW1hIHJldmlzaW9uZSIKIAotIzogZ2l0azoxMzUyCisjOiBnaXRrOjI1MjIKIG1zZ2lkICI8VXA+LCBwLCBpXHRNb3ZlIHVwIG9uZSBjb21taXQiCiBtc2dzdHIgIjxVcD4sIHAsIGlcdFZhaSBwacO5IGluIGFsdG8gZGkgdW5hIHJldmlzaW9uZSIKIAotIzogZ2l0azoxMzUzCisjOiBnaXRrOjI1MjMKIG1zZ2lkICI8RG93bj4sIG4sIGtcdE1vdmUgZG93biBvbmUgY29tbWl0IgogbXNnc3RyICI8RG93bj4sIG4sIGtcdFZhaSBwacO5IGluIGJhc3NvIGRpIHVuYSByZXZpc2lvbmUiCiAKLSM6IGdpdGs6MTM1NAorIzogZ2l0azoyNTI0CiBtc2dpZCAiPExlZnQ+LCB6LCBqXHRHbyBiYWNrIGluIGhpc3RvcnkgbGlzdCIKIG1zZ3N0ciAiPExlZnQ+LCB6LCBqXHRUb3JuYSBpbmRpZXRybyBuZWxsYSBjcm9ub2xvZ2lhIgogCi0jOiBnaXRrOjEzNTUKKyM6IGdpdGs6MjUyNQogbXNnaWQgIjxSaWdodD4sIHgsIGxcdEdvIGZvcndhcmQgaW4gaGlzdG9yeSBsaXN0IgogbXNnc3RyICI8UmlnaHQ+LCB4LCBsXHRWYWkgYXZhbnRpIG5lbGxhIGNyb25vbG9naWEiCiAKLSM6IGdpdGs6MTM1NgorIzogZ2l0azoyNTI2CiBtc2dpZCAiPFBhZ2VVcD5cdE1vdmUgdXAgb25lIHBhZ2UgaW4gY29tbWl0IGxpc3QiCiBtc2dzdHIgIjxQYWdlVXA+XHRWYWkgcGnDuSBpbiBhbHRvIGRpIHVuYSBwYWdpbmEgbmVsbGEgbGlzdGEgZGVsbGUgcmV2aXNpb25pIgogCi0jOiBnaXRrOjEzNTcKKyM6IGdpdGs6MjUyNwogbXNnaWQgIjxQYWdlRG93bj5cdE1vdmUgZG93biBvbmUgcGFnZSBpbiBjb21taXQgbGlzdCIKIG1zZ3N0ciAiPFBhZ2VEb3duPlx0VmFpIHBpw7kgaW4gYmFzc28gZGkgdW5hIHBhZ2luYSBuZWxsYSBsaXN0YSBkZWxsZSByZXZpc2lvbmkiCiAKLSM6IGdpdGs6MTM1OAorIzogZ2l0azoyNTI4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLUhvbWU+XHRTY3JvbGwgdG8gdG9wIG9mIGNvbW1pdCBsaXN0IgogbXNnc3RyICI8JXMtSG9tZT5cdFNjb3JyaSBhbGxhIGNpbWEgZGVsbGEgbGlzdGEgZGVsbGUgcmV2aXNpb25pIgogCi0jOiBnaXRrOjEzNTkKKyM6IGdpdGs6MjUyOQogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1FbmQ+XHRTY3JvbGwgdG8gYm90dG9tIG9mIGNvbW1pdCBsaXN0IgogbXNnc3RyICI8JXMtRW5kPlx0U2NvcnJpIGFsbGEgZmluZSBkZWxsYSBsaXN0YSBkZWxsZSByZXZpc2lvbmkiCiAKLSM6IGdpdGs6MTM2MAorIzogZ2l0azoyNTMwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLVVwPlx0U2Nyb2xsIGNvbW1pdCBsaXN0IHVwIG9uZSBsaW5lIgogbXNnc3RyICI8JXMtVXA+XHRTY29ycmkgbGEgbGlzdGEgZGVsbGUgcmV2aXNpb25pIGluIGFsdG8gZGkgdW5hIHJpZ2EiCiAKLSM6IGdpdGs6MTM2MQorIzogZ2l0azoyNTMxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLURvd24+XHRTY3JvbGwgY29tbWl0IGxpc3QgZG93biBvbmUgbGluZSIKIG1zZ3N0ciAiPCVzLURvd24+XHRTY29ycmkgbGEgbGlzdGEgZGVsbGUgcmV2aXNpb25pIGluIGJhc3NvIGRpIHVuYSByaWdhIgogCi0jOiBnaXRrOjEzNjIKKyM6IGdpdGs6MjUzMgogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1QYWdlVXA+XHRTY3JvbGwgY29tbWl0IGxpc3QgdXAgb25lIHBhZ2UiCiBtc2dzdHIgIjwlcy1QYWdlVXA+XHRTY29ycmkgbGEgbGlzdGEgZGVsbGUgcmV2aXNpb25pIGluIGFsdG8gZGkgdW5hIHBhZ2luYSIKIAotIzogZ2l0azoxMzYzCisjOiBnaXRrOjI1MzMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtUGFnZURvd24+XHRTY3JvbGwgY29tbWl0IGxpc3QgZG93biBvbmUgcGFnZSIKIG1zZ3N0ciAiPCVzLVBhZ2VEb3duPlx0U2NvcnJpIGxhIGxpc3RhIGRlbGxlIHJldmlzaW9uaSBpbiBiYXNzbyBkaSB1bmEgcGFnaW5hIgogCi0jOiBnaXRrOjEzNjQKKyM6IGdpdGs6MjUzNAogbXNnaWQgIjxTaGlmdC1VcD5cdEZpbmQgYmFja3dhcmRzICh1cHdhcmRzLCBsYXRlciBjb21taXRzKSIKIG1zZ3N0ciAiPFNoaWZ0LVVwPlx0VHJvdmEgYWxsJ2luZGlldHJvICh2ZXJzbyBsJ2FsdG8sIHJldmlzaW9uaSBzdWNjZXNzaXZlKSIKIAotIzogZ2l0azoxMzY1CisjOiBnaXRrOjI1MzUKIG1zZ2lkICI8U2hpZnQtRG93bj5cdEZpbmQgZm9yd2FyZHMgKGRvd253YXJkcywgZWFybGllciBjb21taXRzKSIKIG1zZ3N0ciAiPFNoaWZ0LURvd24+XHRUcm92YSBpbiBhdmFudGkgKHZlcnNvIGlsIGJhc3NvLCByZXZpc2lvbmkgcHJlY2VkZW50aSkiCiAKLSM6IGdpdGs6MTM2NgorIzogZ2l0azoyNTM2CiBtc2dpZCAiPERlbGV0ZT4sIGJcdFNjcm9sbCBkaWZmIHZpZXcgdXAgb25lIHBhZ2UiCiBtc2dzdHIgIjxEZWxldGU+LCBiXHRTY29ycmkgbGEgdmlzdGEgZGVsbGUgZGlmZmVyZW56ZSBpbiBhbHRvIGRpIHVuYSBwYWdpbmEiCiAKLSM6IGdpdGs6MTM2NworIzogZ2l0azoyNTM3CiBtc2dpZCAiPEJhY2tzcGFjZT5cdFNjcm9sbCBkaWZmIHZpZXcgdXAgb25lIHBhZ2UiCiBtc2dzdHIgIjxCYWNrc3BhY2U+XHRTY29ycmkgbGEgdmlzdGEgZGVsbGUgZGlmZmVyZW56ZSBpbiBhbHRvIGRpIHVuYSBwYWdpbmEiCiAKLSM6IGdpdGs6MTM2OAorIzogZ2l0azoyNTM4CiBtc2dpZCAiPFNwYWNlPlx0XHRTY3JvbGwgZGlmZiB2aWV3IGRvd24gb25lIHBhZ2UiCiBtc2dzdHIgIjxTcGFjZT5cdFx0U2NvcnJpIGxhIHZpc3RhIGRlbGxlIGRpZmZlcmVuemUgaW4gYmFzc28gZGkgdW5hIHBhZ2luYSIKIAotIzogZ2l0azoxMzY5CisjOiBnaXRrOjI1MzkKIG1zZ2lkICJ1XHRcdFNjcm9sbCBkaWZmIHZpZXcgdXAgMTggbGluZXMiCiBtc2dzdHIgInVcdFx0U2NvcnJpIGxhIHZpc3RhIGRlbGxlIGRpZmZlcmVuemUgaW4gYWx0byBkaSAxOCBsaW5lZSIKIAotIzogZ2l0azoxMzcwCisjOiBnaXRrOjI1NDAKIG1zZ2lkICJkXHRcdFNjcm9sbCBkaWZmIHZpZXcgZG93biAxOCBsaW5lcyIKIG1zZ3N0ciAiZFx0XHRTY29ycmkgbGEgdmlzdGEgZGVsbGUgZGlmZmVyZW56ZSBpbiBiYXNzbyBkaSAxOCBsaW5lZSIKIAotIzogZ2l0azoxMzcxCisjOiBnaXRrOjI1NDEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtRj5cdFx0RmluZCIKIG1zZ3N0ciAiPCVzLUY+XHRcdFRyb3ZhIgogCi0jOiBnaXRrOjEzNzIKKyM6IGdpdGs6MjU0MgogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1HPlx0XHRNb3ZlIHRvIG5leHQgZmluZCBoaXQiCiBtc2dzdHIgIjwlcy1HPlx0XHRUcm92YSBpbiBhdmFudGkiCiAKLSM6IGdpdGs6MTM3MworIzogZ2l0azoyNTQzCiBtc2dpZCAiPFJldHVybj5cdE1vdmUgdG8gbmV4dCBmaW5kIGhpdCIKIG1zZ3N0ciAiPFJldHVybj5cdFRyb3ZhIGluIGF2YW50aSIKIAotIzogZ2l0azoxMzc0CisjOiBnaXRrOjI1NDQKIG1zZ2lkICIvXHRcdE1vdmUgdG8gbmV4dCBmaW5kIGhpdCwgb3IgcmVkbyBmaW5kIgogbXNnc3RyICIvXHRcdFRyb3ZhIGluIGF2YW50aSwgbyBjZXJjYSBkaSBudW92byIKIAotIzogZ2l0azoxMzc1CisjOiBnaXRrOjI1NDUKIG1zZ2lkICI/XHRcdE1vdmUgdG8gcHJldmlvdXMgZmluZCBoaXQiCiBtc2dzdHIgIj9cdFx0VHJvdmEgYWxsJ2luZGlldHJvIgogCi0jOiBnaXRrOjEzNzYKKyM6IGdpdGs6MjU0NgogbXNnaWQgImZcdFx0U2Nyb2xsIGRpZmYgdmlldyB0byBuZXh0IGZpbGUiCiBtc2dzdHIgImZcdFx0U2NvcnJpIGxhIHZpc3RhIGRlbGxlIGRpZmZlcmVuemUgYWwgZmlsZSBzdWNjZXNzaXZvIgogCi0jOiBnaXRrOjEzNzcKKyM6IGdpdGs6MjU0NwogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1TPlx0XHRTZWFyY2ggZm9yIG5leHQgaGl0IGluIGRpZmYgdmlldyIKIG1zZ3N0ciAiPCVzLVM+XHRcdENlcmNhIGluIGF2YW50aSBuZWxsYSB2aXN0YSBkZWxsZSBkaWZmZXJlbnplIgogCi0jOiBnaXRrOjEzNzgKKyM6IGdpdGs6MjU0OAogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1SPlx0XHRTZWFyY2ggZm9yIHByZXZpb3VzIGhpdCBpbiBkaWZmIHZpZXciCiBtc2dzdHIgIjwlcy1SPlx0XHRDZXJjYSBhbGwnaW5kaWV0cm8gbmVsbGEgdmlzdGEgZGVsbGUgZGlmZmVyZW56ZSIKIAotIzogZ2l0azoxMzc5CisjOiBnaXRrOjI1NDkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtS1ArPlx0SW5jcmVhc2UgZm9udCBzaXplIgogbXNnc3RyICI8JXMtS1ArPlx0QXVtZW50YSBncmFuZGV6emEgY2FyYXR0ZXJlIgogCi0jOiBnaXRrOjEzODAKKyM6IGdpdGs6MjU1MAogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1wbHVzPlx0SW5jcmVhc2UgZm9udCBzaXplIgogbXNnc3RyICI8JXMtcGx1cz5cdEF1bWVudGEgZ3JhbmRlenphIGNhcmF0dGVyZSIKIAotIzogZ2l0azoxMzgxCisjOiBnaXRrOjI1NTEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtS1AtPlx0RGVjcmVhc2UgZm9udCBzaXplIgogbXNnc3RyICI8JXMtS1AtPlx0RGltaW51aXNjaSBncmFuZGV6emEgY2FyYXR0ZXJlIgogCi0jOiBnaXRrOjEzODIKKyM6IGdpdGs6MjU1MgogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1taW51cz5cdERlY3JlYXNlIGZvbnQgc2l6ZSIKIG1zZ3N0ciAiPCVzLW1pbnVzPlx0RGltaW51aXNjaSBncmFuZGV6emEgY2FyYXR0ZXJlIgogCi0jOiBnaXRrOjEzODMKKyM6IGdpdGs6MjU1MwogbXNnaWQgIjxGNT5cdFx0VXBkYXRlIgogbXNnc3RyICI8RjU+XHRcdEFnZ2lvcm5hIgogCi0jOiBnaXRrOjE4OTYKKyM6IGdpdGs6MzIwMAogbXNnaWQgIkdpdGsgdmlldyBkZWZpbml0aW9uIgogbXNnc3RyICJTY2VsdGEgdmlzdGEgR2l0ayIKIAotIzogZ2l0azoxOTIxCisjOiBnaXRrOjMyMjUKIG1zZ2lkICJOYW1lIgogbXNnc3RyICJOb21lIgogCi0jOiBnaXRrOjE5MjQKKyM6IGdpdGs6MzIyOAogbXNnaWQgIlJlbWVtYmVyIHRoaXMgdmlldyIKIG1zZ3N0ciAiUmljb3JkYSBxdWVzdGEgdmlzdGEiCiAKLSM6IGdpdGs6MTkyOAotbXNnaWQgIkNvbW1pdHMgdG8gaW5jbHVkZSAoYXJndW1lbnRzIHRvIGdpdCByZXYtbGlzdCk6IgotbXNnc3RyICJSZXZpc2lvbmkgZGEgaW5jbHVkZXJlIChhcmdvbWVudGkgZGkgZ2l0IHJldi1saXN0KToiCisjOiBnaXRrOjMyMzIKK21zZ2lkICJDb21taXRzIHRvIGluY2x1ZGUgKGFyZ3VtZW50cyB0byBnaXQgbG9nKToiCittc2dzdHIgIlJldmlzaW9uaSBkYSBpbmNsdWRlcmUgKGFyZ29tZW50aSBkaSBnaXQgbG9nKToiCiAKLSM6IGdpdGs6MTkzNQorIzogZ2l0azozMjM5CiBtc2dpZCAiQ29tbWFuZCB0byBnZW5lcmF0ZSBtb3JlIGNvbW1pdHMgdG8gaW5jbHVkZToiCiBtc2dzdHIgIkNvbWFuZG8gY2hlIGdlbmVyYSBhbHRyZSByZXZpc2lvbmkgZGEgdmlzdWFsaXp6YXJlOiIKIAotIzogZ2l0azoxOTQyCisjOiBnaXRrOjMyNDYKIG1zZ2lkICJFbnRlciBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdG8gaW5jbHVkZSwgb25lIHBlciBsaW5lOiIKIG1zZ3N0ciAiSW5zZXJpcmUgZmlsZSBlIGRpcmVjdG9yeSBkYSBpbmNsdWRlcmUsIHVubyBwZXIgcmlnYToiCiAKLSM6IGdpdGs6MTk4OQorIzogZ2l0azozMjkzCiBtc2dpZCAiRXJyb3IgaW4gY29tbWl0IHNlbGVjdGlvbiBhcmd1bWVudHM6IgogbXNnc3RyICJFcnJvcmUgbmVnbGkgYXJnb21lbnRpIGRpIHNlbGV6aW9uZSBkZWxsZSByZXZpc2lvbmk6IgogCi0jOiBnaXRrOjIwNDMgZ2l0azoyMTI3IGdpdGs6MjU4MyBnaXRrOjI1OTcgZ2l0azozNzgxIGdpdGs6ODY4OCBnaXRrOjg2ODkKKyM6IGdpdGs6MzM0NyBnaXRrOjMzOTkgZ2l0azozODQyIGdpdGs6Mzg1NiBnaXRrOjUwNjAgZ2l0azoxMDE0MSBnaXRrOjEwMTQyCiBtc2dpZCAiTm9uZSIKIG1zZ3N0ciAiTmVzc3VubyIKIAotIzogZ2l0azoyNTMxIGdpdGs6NDMzNiBnaXRrOjU5NTggZ2l0azo1OTczCisjOiBnaXRrOjM3OTAgZ2l0azo1NTgwIGdpdGs6NzI4NyBnaXRrOjczMDIKIG1zZ2lkICJEYXRlIgogbXNnc3RyICJEYXRhIgogCi0jOiBnaXRrOjI1MzEgZ2l0azo0MzM2CisjOiBnaXRrOjM3OTAgZ2l0azo1NTgwCiBtc2dpZCAiQ0RhdGUiCiBtc2dzdHIgIiIKIAotIzogZ2l0azoyNjgwIGdpdGs6MjY4NQorIzogZ2l0azozOTM5IGdpdGs6Mzk0NAogbXNnaWQgIkRlc2NlbmRhbnQiCiBtc2dzdHIgIkRpc2NlbmRlbnRlIgogCi0jOiBnaXRrOjI2ODEKKyM6IGdpdGs6Mzk0MAogbXNnaWQgIk5vdCBkZXNjZW5kYW50IgogbXNnc3RyICJOb24gZGlzY2VuZGVudGUiCiAKLSM6IGdpdGs6MjY4OCBnaXRrOjI2OTMKKyM6IGdpdGs6Mzk0NyBnaXRrOjM5NTIKIG1zZ2lkICJBbmNlc3RvciIKIG1zZ3N0ciAiQXNjZW5kZW50ZSIKIAotIzogZ2l0azoyNjg5CisjOiBnaXRrOjM5NDgKIG1zZ2lkICJOb3QgYW5jZXN0b3IiCiBtc2dzdHIgIk5vbiBhc2NlbmRlbnRlIgogCi0jOiBnaXRrOjI5MjQKKyM6IGdpdGs6NDE4NwogbXNnaWQgIkxvY2FsIGNoYW5nZXMgY2hlY2tlZCBpbiB0byBpbmRleCBidXQgbm90IGNvbW1pdHRlZCIKIG1zZ3N0ciAiTW9kaWZpY2hlIGxvY2FsaSBwcmVzZW50aSBuZWxsJ2luZGljZSBtYSBub24gbmVsbCdhcmNoaXZpbyIKIAotIzogZ2l0azoyOTU0CisjOiBnaXRrOjQyMjAKIG1zZ2lkICJMb2NhbCB1bmNvbW1pdHRlZCBjaGFuZ2VzLCBub3QgY2hlY2tlZCBpbiB0byBpbmRleCIKIG1zZ3N0ciAiTW9kaWZpY2hlIGxvY2FsaSBub24gcHJlc2VudGkgbsOpIG5lbGwnYXJjaGl2aW8gbsOpIG5lbGwnaW5kaWNlIgogCi0jOiBnaXRrOjQzMDUKKyM6IGdpdGs6NTU0OQogbXNnaWQgIlNlYXJjaGluZyIKIG1zZ3N0ciAiUmljZXJjYSBpbiBjb3JzbyIKIAotIzogZ2l0azo0NzY3CisjOiBnaXRrOjYwNDkKIG1zZ2lkICJUYWdzOiIKIG1zZ3N0ciAiRXRpY2hldHRlOiIKIAotIzogZ2l0azo0Nzg0IGdpdGs6NDc5MCBnaXRrOjU5NTEKKyM6IGdpdGs6NjA2NiBnaXRrOjYwNzIgZ2l0azo3MjgwCiBtc2dpZCAiUGFyZW50IgogbXNnc3RyICJHZW5pdG9yZSIKIAotIzogZ2l0azo0Nzk1CisjOiBnaXRrOjYwNzcKIG1zZ2lkICJDaGlsZCIKIG1zZ3N0ciAiRmlnbGlvIgogCi0jOiBnaXRrOjQ4MDQKKyM6IGdpdGs6NjA4NgogbXNnaWQgIkJyYW5jaCIKIG1zZ3N0ciAiUmFtbyIKIAotIzogZ2l0azo0ODA3CisjOiBnaXRrOjYwODkKIG1zZ2lkICJGb2xsb3dzIgogbXNnc3RyICJTZWd1ZSIKIAotIzogZ2l0azo0ODEwCisjOiBnaXRrOjYwOTIKIG1zZ2lkICJQcmVjZWRlcyIKIG1zZ3N0ciAiUHJlY2VkZSIKIAotIzogZ2l0azo1MDkzCisjOiBnaXRrOjYzNzgKIG1zZ2lkICJFcnJvciBnZXR0aW5nIG1lcmdlIGRpZmZzOiIKIG1zZ3N0ciAiRXJyb3JlIG5lbGxhIGxldHR1cmEgZGVsbGUgZGlmZmVyZW56ZSBkaSBmdXNpb25lOiIKIAotIzogZ2l0azo1Nzc4CisjOiBnaXRrOjcxMTMKIG1zZ2lkICJHb3RvOiIKIG1zZ3N0ciAiVmFpIGE6IgogCi0jOiBnaXRrOjU3ODAKKyM6IGdpdGs6NzExNQogbXNnaWQgIlNIQTEgSUQ6IgogbXNnc3RyICJTSEExIElEOiIKIAotIzogZ2l0azo1ODA1CisjOiBnaXRrOjcxMzQKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJTaG9ydCBTSEExIGlkICVzIGlzIGFtYmlndW91cyIKIG1zZ3N0ciAiTGEgU0hBMSBpZCBhYmJyZXZpYXRhICVzIMOoIGFtYmlndWEiCiAKLSM6IGdpdGs6NTgxNworIzogZ2l0azo3MTQ2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiU0hBMSBpZCAlcyBpcyBub3Qga25vd24iCiBtc2dzdHIgIkxhIFNIQTEgaWQgJXMgw6ggc2Nvbm9zY2l1dGEiCiAKLSM6IGdpdGs6NTgxOQorIzogZ2l0azo3MTQ4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVGFnL0hlYWQgJXMgaXMgbm90IGtub3duIgogbXNnc3RyICJMJ2V0aWNoZXR0YS9yYW1vICVzIMOoIHNjb25vc2NpdXRvIgogCi0jOiBnaXRrOjU5NjEKKyM6IGdpdGs6NzI5MAogbXNnaWQgIkNoaWxkcmVuIgogbXNnc3RyICJGaWdsaSIKIAotIzogZ2l0azo2MDE4CisjOiBnaXRrOjczNDcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJSZXNldCAlcyBicmFuY2ggdG8gaGVyZSIKIG1zZ3N0ciAiQWdnaW9ybmEgaWwgcmFtbyAlcyBhIHF1ZXN0YSByZXZpc2lvbmUiCiAKLSM6IGdpdGs6NjA0OQorIzogZ2l0azo3MzQ5Cittc2dpZCAiRGV0YWNoZWQgaGVhZDogY2FuJ3QgcmVzZXQiCittc2dzdHIgIiIKKworIzogZ2l0azo3MzgxCiBtc2dpZCAiVG9wIgogbXNnc3RyICJJbml6aW8iCiAKLSM6IGdpdGs6NjA1MAorIzogZ2l0azo3MzgyCiBtc2dpZCAiRnJvbSIKIG1zZ3N0ciAiRGEiCiAKLSM6IGdpdGs6NjA1NQorIzogZ2l0azo3Mzg3CiBtc2dpZCAiVG8iCiBtc2dzdHIgIkEiCiAKLSM6IGdpdGs6NjA3OAorIzogZ2l0azo3NDEwCiBtc2dpZCAiR2VuZXJhdGUgcGF0Y2giCiBtc2dzdHIgIkdlbmVyYSBwYXRjaCIKIAotIzogZ2l0azo2MDgwCisjOiBnaXRrOjc0MTIKIG1zZ2lkICJGcm9tOiIKIG1zZ3N0ciAiRGE6IgogCi0jOiBnaXRrOjYwODkKKyM6IGdpdGs6NzQyMQogbXNnaWQgIlRvOiIKIG1zZ3N0ciAiQToiCiAKLSM6IGdpdGs6NjA5OAorIzogZ2l0azo3NDMwCiBtc2dpZCAiUmV2ZXJzZSIKIG1zZ3N0ciAiSW52ZXJ0aSIKIAotIzogZ2l0azo2MTAwIGdpdGs6NjI2OQorIzogZ2l0azo3NDMyIGdpdGs6NzYwNwogbXNnaWQgIk91dHB1dCBmaWxlOiIKIG1zZ3N0ciAiU2NyaXZpIHN1bCBmaWxlOiIKIAotIzogZ2l0azo2MTA2CisjOiBnaXRrOjc0MzgKIG1zZ2lkICJHZW5lcmF0ZSIKIG1zZ3N0ciAiR2VuZXJhIgogCi0jOiBnaXRrOjYxNDIKKyM6IGdpdGs6NzQ3NAogbXNnaWQgIkVycm9yIGNyZWF0aW5nIHBhdGNoOiIKIG1zZ3N0ciAiRXJyb3JlIG5lbGxhIGNyZWF6aW9uZSBkZWxsYSBwYXRjaDoiCiAKLSM6IGdpdGs6NjE2NCBnaXRrOjYyNTcgZ2l0azo2MzExCisjOiBnaXRrOjc0OTYgZ2l0azo3NTk1IGdpdGs6NzY0OQogbXNnaWQgIklEOiIKIG1zZ3N0ciAiSUQ6IgogCi0jOiBnaXRrOjYxNzMKKyM6IGdpdGs6NzUwNQogbXNnaWQgIlRhZyBuYW1lOiIKIG1zZ3N0ciAiTm9tZSBldGljaGV0dGE6IgogCi0jOiBnaXRrOjYxNzcgZ2l0azo2MzIwCisjOiBnaXRrOjc1MDkgZ2l0azo3NjU5CiBtc2dpZCAiQ3JlYXRlIgogbXNnc3RyICJDcmVhIgogCi0jOiBnaXRrOjYxOTIKKyM6IGdpdGs6NzUyNAogbXNnaWQgIk5vIHRhZyBuYW1lIHNwZWNpZmllZCIKIG1zZ3N0ciAiTmVzc3VuYSBldGljaGV0dGEgc3BlY2lmaWNhdGEiCiAKLSM6IGdpdGs6NjE5NgorIzogZ2l0azo3NTI4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVGFnIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIKIG1zZ3N0ciAiTCdldGljaGV0dGEgXCIlc1wiIGVzaXN0ZSBnacOgIgogCi0jOiBnaXRrOjYyMDIKKyM6IGdpdGs6NzUzNAogbXNnaWQgIkVycm9yIGNyZWF0aW5nIHRhZzoiCiBtc2dzdHIgIkVycm9yZSBuZWxsYSBjcmVhemlvbmUgZGVsbCdldGljaGV0dGE6IgogCi0jOiBnaXRrOjYyNjYKKyM6IGdpdGs6NzYwNAogbXNnaWQgIkNvbW1hbmQ6IgogbXNnc3RyICJDb21hbmRvOiIKIAotIzogZ2l0azo2Mjc0CisjOiBnaXRrOjc2MTIKIG1zZ2lkICJXcml0ZSIKIG1zZ3N0ciAiU2NyaXZpIgogCi0jOiBnaXRrOjYyOTAKKyM6IGdpdGs6NzYyOAogbXNnaWQgIkVycm9yIHdyaXRpbmcgY29tbWl0OiIKIG1zZ3N0ciAiRXJyb3JlIG5lbGxhIHNjcml0dHVyYSBkZWxsYSByZXZpc2lvbmU6IgogCi0jOiBnaXRrOjYzMTYKKyM6IGdpdGs6NzY1NAogbXNnaWQgIk5hbWU6IgogbXNnc3RyICJOb21lOiIKIAotIzogZ2l0azo2MzM1CisjOiBnaXRrOjc2NzQKIG1zZ2lkICJQbGVhc2Ugc3BlY2lmeSBhIG5hbWUgZm9yIHRoZSBuZXcgYnJhbmNoIgogbXNnc3RyICJTcGVjaWZpY2FyZSB1biBub21lIHBlciBpbCBudW92byByYW1vIgogCi0jOiBnaXRrOjYzNjQKKyM6IGdpdGs6NzcwMwogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNvbW1pdCAlcyBpcyBhbHJlYWR5IGluY2x1ZGVkIGluIGJyYW5jaCAlcyAtLSByZWFsbHkgcmUtYXBwbHkgaXQ/IgogbXNnc3RyICJMYSByZXZpc2lvbmUgJXMgw6ggZ2nDoCBpbmNsdXNhIG5lbCByYW1vICVzIC0tIGFwcGxpY2FybGEgZGkgbnVvdm8/IgogCi0jOiBnaXRrOjYzNjkKKyM6IGdpdGs6NzcwOAogbXNnaWQgIkNoZXJyeS1waWNraW5nIgogbXNnc3RyICIiCiAKLSM6IGdpdGs6NjM4MQorIzogZ2l0azo3NzIwCiBtc2dpZCAiTm8gY2hhbmdlcyBjb21taXR0ZWQiCiBtc2dzdHIgIk5lc3N1bmEgbW9kaWZpY2EgYXJjaGl2aWF0YSIKIAotIzogZ2l0azo2NDA0CisjOiBnaXRrOjc3NDUKIG1zZ2lkICJDb25maXJtIHJlc2V0IgogbXNnc3RyICJDb25mZXJtYSBnaXQgcmVzZXQiCiAKLSM6IGdpdGs6NjQwNgorIzogZ2l0azo3NzQ3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmVzZXQgYnJhbmNoICVzIHRvICVzPyIKIG1zZ3N0ciAiQWdnaW9ybmFyZSBpbCByYW1vICVzIGEgJXM/IgogCi0jOiBnaXRrOjY0MTAKKyM6IGdpdGs6Nzc1MQogbXNnaWQgIlJlc2V0IHR5cGU6IgogbXNnc3RyICJUaXBvIGRpIGFnZ2lvcm5hbWVudG86IgogCi0jOiBnaXRrOjY0MTQKKyM6IGdpdGs6Nzc1NQogbXNnaWQgIlNvZnQ6IExlYXZlIHdvcmtpbmcgdHJlZSBhbmQgaW5kZXggdW50b3VjaGVkIgogbXNnc3RyICJTb2Z0OiBMYXNjaWEgbGEgZGlyZWNvcnkgZGkgbGF2b3JvIGUgbCdpbmRpY2UgY29tZSBzb25vIgogCi0jOiBnaXRrOjY0MTcKKyM6IGdpdGs6Nzc1OAogbXNnaWQgIk1peGVkOiBMZWF2ZSB3b3JraW5nIHRyZWUgdW50b3VjaGVkLCByZXNldCBpbmRleCIKIG1zZ3N0ciAiTWl4ZWQ6IExhc2NpYSBsYSBkaXJlY3RvcnkgZGkgbGF2b3JvIGNvbWUgw6gsIGFnZ2lvcm5hIGwnaW5kaWNlIgogCi0jOiBnaXRrOjY0MjAKKyM6IGdpdGs6Nzc2MQogbXNnaWQgIiIKICJIYXJkOiBSZXNldCB3b3JraW5nIHRyZWUgYW5kIGluZGV4XG4iCiAiKGRpc2NhcmQgQUxMIGxvY2FsIGNoYW5nZXMpIgpAQCAtNjkzLDE5ICs3MjMsMTkgQEAKICJIYXJkOiBBZ2dpb3JuYSBsYSBkaXJlY3RvcnkgZGkgbGF2b3JvIGUgbCdpbmRpY2VcbiIKICIoYWJiYW5kb25hIFRVVFRFIGxlIG1vZGlmaWNoZSBsb2NhbGkpIgogCi0jOiBnaXRrOjY0MzYKKyM6IGdpdGs6Nzc3NwogbXNnaWQgIlJlc2V0dGluZyIKIG1zZ3N0ciAiZ2l0IHJlc2V0IGluIGNvcnNvIgogCi0jOiBnaXRrOjY0OTMKKyM6IGdpdGs6NzgzNAogbXNnaWQgIkNoZWNraW5nIG91dCIKIG1zZ3N0ciAiQXR0aXZhemlvbmUgaW4gY29yc28iCiAKLSM6IGdpdGs6NjUyMworIzogZ2l0azo3ODg1CiBtc2dpZCAiQ2Fubm90IGRlbGV0ZSB0aGUgY3VycmVudGx5IGNoZWNrZWQtb3V0IGJyYW5jaCIKIG1zZ3N0ciAiSW1wb3NzaWJpbGUgY2FuY2VsbGFyZSBpbCByYW1vIGF0dHVhbG1lbnRlIGF0dGl2byIKIAotIzogZ2l0azo2NTI5CisjOiBnaXRrOjc4OTEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiVGhlIGNvbW1pdHMgb24gYnJhbmNoICVzIGFyZW4ndCBvbiBhbnkgb3RoZXIgYnJhbmNoLlxuIgpAQCAtNzE0LDE2ICs3NDQsMTYgQEAKICJMZSByZXZpc2lvbmkgbmVsIHJhbW8gJXMgbm9uIHNvbm8gcHJlc2VudGkgc3UgYWx0cmkgcmFtaS5cbiIKICJDYW5jZWxsYXJlIGlsIHJhbW8gJXM/IgogCi0jOiBnaXRrOjY1NjAKKyM6IGdpdGs6NzkyMgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlRhZ3MgYW5kIGhlYWRzOiAlcyIKIG1zZ3N0ciAiRXRpY2hldHRlIGUgcmFtaTogJXMiCiAKLSM6IGdpdGs6NjU3NAorIzogZ2l0azo3OTM2CiBtc2dpZCAiRmlsdGVyIgogbXNnc3RyICJGaWx0cm8iCiAKLSM6IGdpdGs6Njg2OAorIzogZ2l0azo4MjMwCiBtc2dpZCAiIgogIkVycm9yIHJlYWRpbmcgY29tbWl0IHRvcG9sb2d5IGluZm9ybWF0aW9uOyBicmFuY2ggYW5kIHByZWNlZGluZy9mb2xsb3dpbmcgIgogInRhZyBpbmZvcm1hdGlvbiB3aWxsIGJlIGluY29tcGxldGUuIgpAQCAtNzMxLDExNyArNzYxLDEyOSBAQAogIkVycm9yZSBuZWxsYSBsZXR0dXJhIGRlbGxhIHRvcG9sb2dpYSBkZWxsZSByZXZpc2lvbmk6IGxlIGluZm9ybWF6aW9uaSBzdWwgIgogInJhbW8gZSBsZSBldGljaGV0dGUgcHJlY2VkZW50aSBlIHNlZ3VlbnRpIHNhcmFubm8gaW5jb21wbGV0ZS4iCiAKLSM6IGdpdGs6Nzg1MgorIzogZ2l0azo5MjE2CiBtc2dpZCAiVGFnIgogbXNnc3RyICJFdGljaGV0dGEiCiAKLSM6IGdpdGs6Nzg1MgorIzogZ2l0azo5MjE2CiBtc2dpZCAiSWQiCiBtc2dzdHIgIklkIgogCi0jOiBnaXRrOjc4OTIKKyM6IGdpdGs6OTI2MgogbXNnaWQgIkdpdGsgZm9udCBjaG9vc2VyIgogbXNnc3RyICJTY2VsdGEgY2FyYXR0ZXJpIGdpdGsiCiAKLSM6IGdpdGs6NzkwOQorIzogZ2l0azo5Mjc5CiBtc2dpZCAiQiIKIG1zZ3N0ciAiQiIKIAotIzogZ2l0azo3OTEyCisjOiBnaXRrOjkyODIKIG1zZ2lkICJJIgogbXNnc3RyICJJIgogCi0jOiBnaXRrOjgwMDUKKyM6IGdpdGs6OTM3NQogbXNnaWQgIkdpdGsgcHJlZmVyZW5jZXMiCiBtc2dzdHIgIlByZWZlcmVuemUgZ2l0ayIKIAotIzogZ2l0azo4MDA2CisjOiBnaXRrOjkzNzYKIG1zZ2lkICJDb21taXQgbGlzdCBkaXNwbGF5IG9wdGlvbnMiCiBtc2dzdHIgIk9wemlvbmkgdmlzdWFsaXp6YXppb25lIGRlbGwnZWxlbmNvIHJldmlzaW9uaSIKIAotIzogZ2l0azo4MDA5CisjOiBnaXRrOjkzNzkKIG1zZ2lkICJNYXhpbXVtIGdyYXBoIHdpZHRoIChsaW5lcykiCiBtc2dzdHIgIkxhcmdoZXp6YSBtYXNzaW1hIGRlbCBncmFmaWNvIChpbiBsaW5lZSkiCiAKLSM6IGdpdGs6ODAxMworIzogZ2l0azo5MzgzCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiTWF4aW11bSBncmFwaCB3aWR0aCAoJSBvZiBwYW5lKSIKIG1zZ3N0ciAiTGFyZ2hlenphIG1hc3NpbWEgZGVsIGdyYWZpY28gKCUgZGVsIHBhbm5lbGxvKSIKIAotIzogZ2l0azo4MDE4CisjOiBnaXRrOjkzODgKIG1zZ2lkICJTaG93IGxvY2FsIGNoYW5nZXMiCiBtc2dzdHIgIk1vc3RyYSBtb2RpZmljaGUgbG9jYWxpIgogCi0jOiBnaXRrOjgwMjMKKyM6IGdpdGs6OTM5MwogbXNnaWQgIkF1dG8tc2VsZWN0IFNIQTEiCiBtc2dzdHIgIlNlbGV6aW9uYSBhdXRvbWF0aWNhbWVudGUgU0hBMSBoYXNoIgogCi0jOiBnaXRrOjgwMjgKKyM6IGdpdGs6OTM5OAogbXNnaWQgIkRpZmYgZGlzcGxheSBvcHRpb25zIgogbXNnc3RyICJPcHppb25pIGRpIHZpc3VhbGl6emF6aW9uZSBkZWxsZSBkaWZmZXJlbnplIgogCi0jOiBnaXRrOjgwMzAKKyM6IGdpdGs6OTQwMAogbXNnaWQgIlRhYiBzcGFjaW5nIgogbXNnc3RyICJTcGF6aWF0dXJhIHRhYnVsYXppb25pIgogCi0jOiBnaXRrOjgwMzQKKyM6IGdpdGs6OTQwNAogbXNnaWQgIkRpc3BsYXkgbmVhcmJ5IHRhZ3MiCiBtc2dzdHIgIk1vc3RyYSBldGljaGV0dGUgdmljaW5lIgogCi0jOiBnaXRrOjgwMzkKKyM6IGdpdGs6OTQwOQogbXNnaWQgIkxpbWl0IGRpZmZzIHRvIGxpc3RlZCBwYXRocyIKIG1zZ3N0ciAiTGltaXRhIGxlIGRpZmZlcmVuemUgYWkgcGVyY29yc2kgZWxlbmNhdGkiCiAKLSM6IGdpdGs6ODA0NAorIzogZ2l0azo5NDE0Cittc2dpZCAiU3VwcG9ydCBwZXItZmlsZSBlbmNvZGluZ3MiCittc2dzdHIgIiIKKworIzogZ2l0azo5NDIxCittc2dpZCAiRXh0ZXJuYWwgZGlmZiB0b29sIgorbXNnc3RyICIiCisKKyM6IGdpdGs6OTQyMworbXNnaWQgIkNob29zZS4uLiIKK21zZ3N0ciAiIgorCisjOiBnaXRrOjk0MjgKIG1zZ2lkICJDb2xvcnM6IHByZXNzIHRvIGNob29zZSIKIG1zZ3N0ciAiQ29sb3JpOiBwcmVtZXJlIHBlciBzY2VnbGllcmUiCiAKLSM6IGdpdGs6ODA0NworIzogZ2l0azo5NDMxCiBtc2dpZCAiQmFja2dyb3VuZCIKIG1zZ3N0ciAiU2ZvbmRvIgogCi0jOiBnaXRrOjgwNTEKKyM6IGdpdGs6OTQzNQogbXNnaWQgIkZvcmVncm91bmQiCiBtc2dzdHIgIlByaW1vIHBpYW5vIgogCi0jOiBnaXRrOjgwNTUKKyM6IGdpdGs6OTQzOQogbXNnaWQgIkRpZmY6IG9sZCBsaW5lcyIKIG1zZ3N0ciAiRGlmZjogdmVjY2hpZSBsaW5lZSIKIAotIzogZ2l0azo4MDYwCisjOiBnaXRrOjk0NDQKIG1zZ2lkICJEaWZmOiBuZXcgbGluZXMiCiBtc2dzdHIgIkRpZmY6IG51b3ZlIGxpbmVlIgogCi0jOiBnaXRrOjgwNjUKKyM6IGdpdGs6OTQ0OQogbXNnaWQgIkRpZmY6IGh1bmsgaGVhZGVyIgogbXNnc3RyICJEaWZmOiBpbnRlc3RhemlvbmUgZGVsbGEgc2V6aW9uZSIKIAotIzogZ2l0azo4MDcxCisjOiBnaXRrOjk0NTUKIG1zZ2lkICJTZWxlY3QgYmciCiBtc2dzdHIgIlNmb25kbyBzZWxlemlvbmUiCiAKLSM6IGdpdGs6ODA3NQorIzogZ2l0azo5NDU5CiBtc2dpZCAiRm9udHM6IHByZXNzIHRvIGNob29zZSIKIG1zZ3N0ciAiQ2FyYXR0ZXJlOiBwcmVtZXJlIHBlciBzY2VnbGllcmUiCiAKLSM6IGdpdGs6ODA3NworIzogZ2l0azo5NDYxCiBtc2dpZCAiTWFpbiBmb250IgogbXNnc3RyICJDYXJhdHRlcmUgcHJpbmNpcGFsZSIKIAotIzogZ2l0azo4MDc4CisjOiBnaXRrOjk0NjIKIG1zZ2lkICJEaWZmIGRpc3BsYXkgZm9udCIKIG1zZ3N0ciAiQ2FyYXR0ZXJlIHBlciBkaWZmZXJlbnplIgogCi0jOiBnaXRrOjgwNzkKKyM6IGdpdGs6OTQ2MwogbXNnaWQgIlVzZXIgaW50ZXJmYWNlIGZvbnQiCiBtc2dzdHIgIkNhcmF0dGVyZSBwZXIgaW50ZXJmYWNjaWEgdXRlbnRlIgogCi0jOiBnaXRrOjgwOTUKKyM6IGdpdGs6OTQ4OAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkdpdGs6IGNob29zZSBjb2xvciBmb3IgJXMiCiBtc2dzdHIgIkdpdGs6IHNjZWdsaWVyZSB1biBjb2xvcmUgcGVyICVzIgogCi0jOiBnaXRrOjg0NzYKKyM6IGdpdGs6OTkzNAogbXNnaWQgIiIKICJTb3JyeSwgZ2l0ayBjYW5ub3QgcnVuIHdpdGggdGhpcyB2ZXJzaW9uIG9mIFRjbC9Uay5cbiIKICIgR2l0ayByZXF1aXJlcyBhdCBsZWFzdCBUY2wvVGsgOC40LiIKQEAgLTg0OSw0MiArODkxLDI0IEBACiAiUXVlc3RhIHZlcnNpb25lIGRpIFRjbC9UayBub24gcHXDsiBhdnZpYXJlIGdpdGsuXG4iCiAiIEdpdGsgcmljaGllZGUgVGNsL1RrIHZlcnNpb25lIDguNCBvIHN1cGVyaW9yZS4iCiAKLSM6IGdpdGs6ODU2NQorIzogZ2l0azoxMDA0NwogbXNnaWQgIkNhbm5vdCBmaW5kIGEgZ2l0IHJlcG9zaXRvcnkgaGVyZS4iCiBtc2dzdHIgIkFyY2hpdmlvIGdpdCBub24gdHJvdmF0by4iCiAKLSM6IGdpdGs6ODU2OQorIzogZ2l0azoxMDA1MQogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBmaW5kIHRoZSBnaXQgZGlyZWN0b3J5IFwiJXNcIi4iCiBtc2dzdHIgIkRpcmVjdG9yeSBnaXQgXCIlc1wiIG5vbiB0cm92YXRhLiIKIAotIzogZ2l0azo4NjEyCisjOiBnaXRrOjEwMDk4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQW1iaWd1b3VzIGFyZ3VtZW50ICclcyc6IGJvdGggcmV2aXNpb24gYW5kIGZpbGVuYW1lIgogbXNnc3RyICJBcmdvbWVudG8gYW1iaWd1bzogJyVzJyDDqCBzaWEgcmV2aXNpb25lIGNoZSBub21lIGRpIGZpbGUiCiAKLSM6IGdpdGs6ODYyNAorIzogZ2l0azoxMDExMAogbXNnaWQgIkJhZCBhcmd1bWVudHMgdG8gZ2l0azoiCiBtc2dzdHIgIkdpdGs6IGFyZ29tZW50aSBlcnJhdGk6IgogCi0jOiBnaXRrOjg2MzYKLW1zZ2lkICJDb3VsZG4ndCBnZXQgbGlzdCBvZiB1bm1lcmdlZCBmaWxlczoiCi1tc2dzdHIgIkltcG9zc2liaWxlIG90dGVuZXJlIGwnZWxlbmNvIGRlaSBmaWxlIGluIGF0dGVzYSBkaSBmdXNpb25lOiIKLQotIzogZ2l0azo4NjUyCi1tc2dpZCAiTm8gZmlsZXMgc2VsZWN0ZWQ6IC0tbWVyZ2Ugc3BlY2lmaWVkIGJ1dCBubyBmaWxlcyBhcmUgdW5tZXJnZWQuIgotbXNnc3RyICIiCi0iTmVzc3VuIGZpbGUgc2VsZXppb25hdG86IMOoIHN0YXRhIHNwZWNpZmljYXRhIGwnb3B6aW9uZSAtLW1lcmdlIG1hIG5vbiBjaSAiCi0ic29ubyBmaWxlIGluIGF0dGVzYSBkaSBmdXNpb25lLiIKLQotIzogZ2l0azo4NjU1Ci1tc2dpZCAiIgotIk5vIGZpbGVzIHNlbGVjdGVkOiAtLW1lcmdlIHNwZWNpZmllZCBidXQgbm8gdW5tZXJnZWQgZmlsZXMgYXJlIHdpdGhpbiBmaWxlICIKLSJsaW1pdC4iCi1tc2dzdHIgIiIKLSJOZXNzdW4gZmlsZSBzZWxlemlvbmF0bzogw6ggc3RhdGEgc3BlY2lmaWNhdGEgbCdvcHppb25lIC0tbWVyZ2UgbWEgaSBmaWxlICIKLSJzcGVjaWZpY2F0aSBub24gc29ubyBpbiBhdHRlc2EgZGkgZnVzaW9uZS4iCi0KLSM6IGdpdGs6ODcxNgorIzogZ2l0azoxMDE3MAogbXNnaWQgIkNvbW1hbmQgbGluZSIKIG1zZ3N0ciAiTGluZWEgZGkgY29tYW5kbyIKZGlmZiAtLWdpdCBhL2dpdGstZ2l0L3BvL3N2LnBvIGIvZ2l0ay1naXQvcG8vc3YucG8KaW5kZXggZTFlY2ZiNy4uOTQ3YjUzZiAxMDA2NDQKLS0tIGEvZ2l0ay1naXQvcG8vc3YucG8KKysrIGIvZ2l0ay1naXQvcG8vc3YucG8KQEAgLTgsNyArOCw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IHN2XG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IFxuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA4LTA4LTAzIDE4OjU4KzAyMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwOC0xMC0xOCAyMjowMysxMTAwXG4iCiAiUE8tUmV2aXNpb24tRGF0ZTogMjAwOC0wOC0wMyAxOTowMyswMjAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBNaWthZWwgTWFnbnVzc29uIDxtaWthY2h1QGdtYWlsLmNvbT5cbiIKICJMYW5ndWFnZS1UZWFtOiBTd2VkaXNoIDxzdkBsaS5vcmc+XG4iCkBAIC0xNiwxNyArMTYsMTcgQEAKICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLThcbiIKICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiAKLSM6IGdpdGs6MTAyCisjOiBnaXRrOjExMwogbXNnaWQgIkNvdWxkbid0IGdldCBsaXN0IG9mIHVubWVyZ2VkIGZpbGVzOiIKIG1zZ3N0ciAiS3VuZGUgaW50YSBow6RtdGEgbGlzdGEgw7Z2ZXIgZWogc2FtbWFuc2xhZ25hIGZpbGVyOiIKIAotIzogZ2l0azozMjkKKyM6IGdpdGs6MzQwCiBtc2dpZCAiTm8gZmlsZXMgc2VsZWN0ZWQ6IC0tbWVyZ2Ugc3BlY2lmaWVkIGJ1dCBubyBmaWxlcyBhcmUgdW5tZXJnZWQuIgogbXNnc3RyICIiCiAiSW5nYSBmaWxlciB2YWxkZXM6IC0tbWVyZ2UgYW5nYXZzIG1lbiBkZXQgZmlubnMgaW5nYSBmaWxlciBzb20gaW50ZSBoYXIgIgogInNsYWdpdHMgc2FtbWFuLiIKIAotIzogZ2l0azozMzIKKyM6IGdpdGs6MzQzCiBtc2dpZCAiIgogIk5vIGZpbGVzIHNlbGVjdGVkOiAtLW1lcmdlIHNwZWNpZmllZCBidXQgbm8gdW5tZXJnZWQgZmlsZXMgYXJlIHdpdGhpbiBmaWxlICIKICJsaW1pdC4iCkBAIC0zNCwyNTcgKzM0LDI2MSBAQAogIkluZ2EgZmlsZXIgdmFsZGVzOiAtLW1lcmdlIGFuZ2F2cyBtZW4gZGV0IGZpbm5zIGluZ2EgZmlsZXIgaW5vbSAiCiAiZmlsYmVncsOkbnNuaW5nZW4uIgogCi0jOiBnaXRrOjM1NAorIzogZ2l0azozNjUgZ2l0azo1MDMKIG1zZ2lkICJFcnJvciBleGVjdXRpbmcgZ2l0IGxvZzoiCiBtc2dzdHIgIkZlbCB2aWQga8O2cm5pbmcgYXYgZ2l0IGxvZzoiCiAKLSM6IGdpdGs6MzY5CisjOiBnaXRrOjM3OAogbXNnaWQgIlJlYWRpbmciCiBtc2dzdHIgIkzDpHNlciIKIAotIzogZ2l0azo0MDAgZ2l0azozMzU2CisjOiBnaXRrOjQzOCBnaXRrOjM0NjIKIG1zZ2lkICJSZWFkaW5nIGNvbW1pdHMuLi4iCiBtc2dzdHIgIkzDpHNlciBpbmNoZWNrbmluZ2FyLi4uIgogCi0jOiBnaXRrOjQwMyBnaXRrOjE0ODAgZ2l0azozMzU5CisjOiBnaXRrOjQ0MSBnaXRrOjE1MjggZ2l0azozNDY1CiBtc2dpZCAiTm8gY29tbWl0cyBzZWxlY3RlZCIKIG1zZ3N0ciAiSW5nYSBpbmNoZWNrbmluZ2FyIG1hcmtlcmFkZSIKIAotIzogZ2l0azoxMzU4CisjOiBnaXRrOjEzOTkKIG1zZ2lkICJDYW4ndCBwYXJzZSBnaXQgbG9nIG91dHB1dDoiCiBtc2dzdHIgIkthbiBpbnRlIHRvbGthIHV0ZGF0YSBmcsOlbiBnaXQgbG9nOiIKIAotIzogZ2l0azoxNTU3CisjOiBnaXRrOjE2MDUKIG1zZ2lkICJObyBjb21taXQgaW5mb3JtYXRpb24gYXZhaWxhYmxlIgogbXNnc3RyICJJbmdlbiBpbmNoZWNrbmluZ3NpbmZvcm1hdGlvbiDDpHIgdGlsbGfDpG5nbGlnIgogCi0jOiBnaXRrOjE2NTQgZ2l0azoxNjc2IGdpdGs6MzE1MCBnaXRrOjc2MjAgZ2l0azo5MTQ5IGdpdGs6OTMxNworIzogZ2l0azoxNzA5IGdpdGs6MTczMSBnaXRrOjMyNTkgZ2l0azo3NzY0IGdpdGs6OTI5MyBnaXRrOjk0NjYKIG1zZ2lkICJPSyIKIG1zZ3N0ciAiT0siCiAKLSM6IGdpdGs6MTY3OCBnaXRrOjMxNTEgZ2l0azo3Mjk2IGdpdGs6NzM2NyBnaXRrOjc0NzAgZ2l0azo3NTE2IGdpdGs6NzYyMgotIzogZ2l0azo5MTUwIGdpdGs6OTMxOAorIzogZ2l0azoxNzMzIGdpdGs6MzI2MCBnaXRrOjc0MzkgZ2l0azo3NTEwIGdpdGs6NzYxMyBnaXRrOjc2NjAgZ2l0azo3NzY2CisjOiBnaXRrOjkyOTQgZ2l0azo5NDY3CiBtc2dpZCAiQ2FuY2VsIgogbXNnc3RyICJBdmJyeXQiCiAKLSM6IGdpdGs6MTcxNgotbXNnaWQgIkZpbGUiCi1tc2dzdHIgIkFya2l2IgotCi0jOiBnaXRrOjE3MTgKKyM6IGdpdGs6MTgxMQogbXNnaWQgIlVwZGF0ZSIKIG1zZ3N0ciAiVXBwZGF0ZXJhIgogCi0jOiBnaXRrOjE3MTkKKyM6IGdpdGs6MTgxMgogbXNnaWQgIlJlbG9hZCIKIG1zZ3N0ciAiTGFkZGEgb20iCiAKLSM6IGdpdGs6MTcyMAorIzogZ2l0azoxODEzCiBtc2dpZCAiUmVyZWFkIHJlZmVyZW5jZXMiCiBtc2dzdHIgIkzDpHMgb20gcmVmZXJlbnNlciIKIAotIzogZ2l0azoxNzIxCisjOiBnaXRrOjE4MTQKIG1zZ2lkICJMaXN0IHJlZmVyZW5jZXMiCiBtc2dzdHIgIlZpc2EgcmVmZXJlbnNlciIKIAotIzogZ2l0azoxNzIyCisjOiBnaXRrOjE4MTUKIG1zZ2lkICJRdWl0IgogbXNnc3RyICJBdnNsdXRhIgogCi0jOiBnaXRrOjE3MjQKLW1zZ2lkICJFZGl0IgotbXNnc3RyICJSZWRpZ2VyYSIKKyM6IGdpdGs6MTgxMAorbXNnaWQgIkZpbGUiCittc2dzdHIgIkFya2l2IgogCi0jOiBnaXRrOjE3MjUKKyM6IGdpdGs6MTgxOAogbXNnaWQgIlByZWZlcmVuY2VzIgogbXNnc3RyICJJbnN0w6RsbG5pbmdhciIKIAotIzogZ2l0azoxNzI4IGdpdGs6MzA4NwotbXNnaWQgIlZpZXciCi1tc2dzdHIgIlZpc2EiCisjOiBnaXRrOjE4MTcKK21zZ2lkICJFZGl0IgorbXNnc3RyICJSZWRpZ2VyYSIKIAotIzogZ2l0azoxNzI5CisjOiBnaXRrOjE4MjEKIG1zZ2lkICJOZXcgdmlldy4uLiIKIG1zZ3N0ciAiTnkgdnkuLi4iCiAKLSM6IGdpdGs6MTczMCBnaXRrOjMyOTggZ2l0azo5OTMyCisjOiBnaXRrOjE4MjIKIG1zZ2lkICJFZGl0IHZpZXcuLi4iCiBtc2dzdHIgIsOEbmRyYSB2eS4uLiIKIAotIzogZ2l0azoxNzMyIGdpdGs6MzI5OSBnaXRrOjk5MzMKKyM6IGdpdGs6MTgyMwogbXNnaWQgIkRlbGV0ZSB2aWV3IgogbXNnc3RyICJUYSBib3J0IHZ5IgogCi0jOiBnaXRrOjE3MzQKKyM6IGdpdGs6MTgyNQogbXNnaWQgIkFsbCBmaWxlcyIKIG1zZ3N0ciAiQWxsYSBmaWxlciIKIAotIzogZ2l0azoxNzM4Ci1tc2dpZCAiSGVscCIKLW1zZ3N0ciAiSGrDpGxwIgorIzogZ2l0azoxODIwIGdpdGs6MzE5NgorbXNnaWQgIlZpZXciCittc2dzdHIgIlZpc2EiCiAKLSM6IGdpdGs6MTczOSBnaXRrOjIzOTkKKyM6IGdpdGs6MTgyOCBnaXRrOjI0ODcKIG1zZ2lkICJBYm91dCBnaXRrIgogbXNnc3RyICJPbSBnaXRrIgogCi0jOiBnaXRrOjE3NDAKKyM6IGdpdGs6MTgyOQogbXNnaWQgIktleSBiaW5kaW5ncyIKIG1zZ3N0ciAiVGFuZ2VudGJvcmRzYmluZG5pbmdhciIKIAotIzogZ2l0azoxNzk3CisjOiBnaXRrOjE4MjcKK21zZ2lkICJIZWxwIgorbXNnc3RyICJIasOkbHAiCisKKyM6IGdpdGs6MTg4NwogbXNnaWQgIlNIQTEgSUQ6ICIKIG1zZ3N0ciAiU0hBMS1pZDogIgogCi0jOiBnaXRrOjE4MjgKKyM6IGdpdGs6MTkxOAogbXNnaWQgIlJvdyIKIG1zZ3N0ciAiUmFkIgogCi0jOiBnaXRrOjE4NTkKKyM6IGdpdGs6MTk0OQogbXNnaWQgIkZpbmQiCiBtc2dzdHIgIlPDtmsiCiAKLSM6IGdpdGs6MTg2MAorIzogZ2l0azoxOTUwCiBtc2dpZCAibmV4dCIKIG1zZ3N0ciAibsOkc3RhIgogCi0jOiBnaXRrOjE4NjEKKyM6IGdpdGs6MTk1MQogbXNnaWQgInByZXYiCiBtc2dzdHIgImbDtnJlZyIKIAotIzogZ2l0azoxODYyCisjOiBnaXRrOjE5NTIKIG1zZ2lkICJjb21taXQiCiBtc2dzdHIgImluY2hlY2tuaW5nIgogCi0jOiBnaXRrOjE4NjUgZ2l0azoxODY3IGdpdGs6MzUxMSBnaXRrOjM1MzQgZ2l0azozNTU4IGdpdGs6NTQ0MSBnaXRrOjU1MTIKKyM6IGdpdGs6MTk1NSBnaXRrOjE5NTcgZ2l0azozNjE3IGdpdGs6MzY0MCBnaXRrOjM2NjQgZ2l0azo1NTUwIGdpdGs6NTYyMQogbXNnaWQgImNvbnRhaW5pbmc6IgogbXNnc3RyICJzb20gaW5uZWjDpWxsZXI6IgogCi0jOiBnaXRrOjE4NjggZ2l0azoyODY2IGdpdGs6Mjg3MSBnaXRrOjM1ODYKKyM6IGdpdGs6MTk1OCBnaXRrOjI5NTQgZ2l0azoyOTU5IGdpdGs6MzY5MgogbXNnaWQgInRvdWNoaW5nIHBhdGhzOiIKIG1zZ3N0ciAic29tIHLDtnIgc8O2a3bDpGc6IgogCi0jOiBnaXRrOjE4NjkgZ2l0azozNTkxCisjOiBnaXRrOjE5NTkgZ2l0azozNjk3CiBtc2dpZCAiYWRkaW5nL3JlbW92aW5nIHN0cmluZzoiCiBtc2dzdHIgInNvbSBsw6RnZ2VyL3RpbGwgdGFyIGJvcnQgc3Ryw6RuZzoiCiAKLSM6IGdpdGs6MTg3OCBnaXRrOjE4ODAKKyM6IGdpdGs6MTk2OCBnaXRrOjE5NzAKIG1zZ2lkICJFeGFjdCIKIG1zZ3N0ciAiRXhha3QiCiAKLSM6IGdpdGs6MTg4MCBnaXRrOjM2NjcgZ2l0azo1NDA5CisjOiBnaXRrOjE5NzAgZ2l0azozNzczIGdpdGs6NTUxOAogbXNnaWQgIklnbkNhc2UiCiBtc2dzdHIgIklnblZlcnNhbGVyIgogCi0jOiBnaXRrOjE4ODAgZ2l0azozNTYwIGdpdGs6MzY2NSBnaXRrOjU0MDUKKyM6IGdpdGs6MTk3MCBnaXRrOjM2NjYgZ2l0azozNzcxIGdpdGs6NTUxNAogbXNnaWQgIlJlZ2V4cCIKIG1zZ3N0ciAiUmVnLnV0dHIuIgogCi0jOiBnaXRrOjE4ODIgZ2l0azoxODgzIGdpdGs6MzY4NiBnaXRrOjM3MTYgZ2l0azozNzIzIGdpdGs6NTUzMiBnaXRrOjU1OTkKKyM6IGdpdGs6MTk3MiBnaXRrOjE5NzMgZ2l0azozNzkyIGdpdGs6MzgyMiBnaXRrOjM4MjkgZ2l0azo1NjQxIGdpdGs6NTcwOAogbXNnaWQgIkFsbCBmaWVsZHMiCiBtc2dzdHIgIkFsbGEgZsOkbHQiCiAKLSM6IGdpdGs6MTg4MyBnaXRrOjM2ODQgZ2l0azozNzE2IGdpdGs6NTQ3MQorIzogZ2l0azoxOTczIGdpdGs6Mzc5MCBnaXRrOjM4MjIgZ2l0azo1NTgwCiBtc2dpZCAiSGVhZGxpbmUiCiBtc2dzdHIgIlJ1YnJpayIKIAotIzogZ2l0azoxODg0IGdpdGs6MzY4NCBnaXRrOjU0NzEgZ2l0azo1NTk5IGdpdGs6NjAwMAorIzogZ2l0azoxOTc0IGdpdGs6Mzc5MCBnaXRrOjU1ODAgZ2l0azo1NzA4IGdpdGs6NjEwOQogbXNnaWQgIkNvbW1lbnRzIgogbXNnc3RyICJLb21tZW50YXJlciIKIAotIzogZ2l0azoxODg0IGdpdGs6MzY4NCBnaXRrOjM2ODggZ2l0azozNzIzIGdpdGs6NTQ3MSBnaXRrOjU5MzYgZ2l0azo3MTQyCi0jOiBnaXRrOjcxNTcKKyM6IGdpdGs6MTk3NCBnaXRrOjM3OTAgZ2l0azozNzk0IGdpdGs6MzgyOSBnaXRrOjU1ODAgZ2l0azo2MDQ1IGdpdGs6NzI4NQorIzogZ2l0azo3MzAwCiBtc2dpZCAiQXV0aG9yIgogbXNnc3RyICJGw7ZyZmF0dGFyZSIKIAotIzogZ2l0azoxODg0IGdpdGs6MzY4NCBnaXRrOjU0NzEgZ2l0azo1OTM4CisjOiBnaXRrOjE5NzQgZ2l0azozNzkwIGdpdGs6NTU4MCBnaXRrOjYwNDcKIG1zZ2lkICJDb21taXR0ZXIiCiBtc2dzdHIgIkluY2hlY2thcmUiCiAKLSM6IGdpdGs6MTkxMworIzogZ2l0azoyMDAzCiBtc2dpZCAiU2VhcmNoIgogbXNnc3RyICJTw7ZrIgogCi0jOiBnaXRrOjE5MjAKKyM6IGdpdGs6MjAxMAogbXNnaWQgIkRpZmYiCiBtc2dzdHIgIkRpZmYiCiAKLSM6IGdpdGs6MTkyMgorIzogZ2l0azoyMDEyCiBtc2dpZCAiT2xkIHZlcnNpb24iCiBtc2dzdHIgIkdhbW1hbCB2ZXJzaW9uIgogCi0jOiBnaXRrOjE5MjQKKyM6IGdpdGs6MjAxNAogbXNnaWQgIk5ldyB2ZXJzaW9uIgogbXNnc3RyICJOeSB2ZXJzaW9uIgogCi0jOiBnaXRrOjE5MjYKKyM6IGdpdGs6MjAxNgogbXNnaWQgIkxpbmVzIG9mIGNvbnRleHQiCiBtc2dzdHIgIlJhZGVyIHNhbW1hbmhhbmciCiAKLSM6IGdpdGs6MTkzNgorIzogZ2l0azoyMDI2CiBtc2dpZCAiSWdub3JlIHNwYWNlIGNoYW5nZSIKIG1zZ3N0ciAiSWdub3JlcmEgw6RuZHJpbmdhciBpIGJsYW5rc3RlZyIKIAotIzogZ2l0azoxOTk0CisjOiBnaXRrOjIwODQKIG1zZ2lkICJQYXRjaCIKIG1zZ3N0ciAiUGF0Y2giCiAKLSM6IGdpdGs6MTk5NgorIzogZ2l0azoyMDg2CiBtc2dpZCAiVHJlZSIKIG1zZ3N0ciAiVHLDpGQiCiAKLSM6IGdpdGs6MjEyMSBnaXRrOjIxMzYgZ2l0azo3MjExCisjOiBnaXRrOjIyMTMgZ2l0azoyMjI2CiBtc2dpZCAiRGlmZiB0aGlzIC0+IHNlbGVjdGVkIgogbXNnc3RyICJEaWZmIGRlbm5hIC0+IG1hcmtlcmFkIgogCi0jOiBnaXRrOjIxMjMgZ2l0azoyMTM4IGdpdGs6NzIxMgorIzogZ2l0azoyMjE0IGdpdGs6MjIyNwogbXNnaWQgIkRpZmYgc2VsZWN0ZWQgLT4gdGhpcyIKIG1zZ3N0ciAiRGlmZiBtYXJrZXJhZCAtPiBkZW5uYSIKIAotIzogZ2l0azoyMTI1IGdpdGs6MjE0MCBnaXRrOjcyMTMKKyM6IGdpdGs6MjIxNSBnaXRrOjIyMjgKIG1zZ2lkICJNYWtlIHBhdGNoIgogbXNnc3RyICJTa2FwYSBwYXRjaCIKIAotIzogZ2l0azoyMTI2IGdpdGs6NzM1MQorIzogZ2l0azoyMjE2IGdpdGs6NzQ5NAogbXNnaWQgIkNyZWF0ZSB0YWciCiBtc2dzdHIgIlNrYXBhIHRhZ2ciCiAKLSM6IGdpdGs6MjEyNyBnaXRrOjc0NTAKKyM6IGdpdGs6MjIxNyBnaXRrOjc1OTMKIG1zZ2lkICJXcml0ZSBjb21taXQgdG8gZmlsZSIKIG1zZ3N0ciAiU2tyaXYgaW5jaGVja25pbmcgdGlsbCBmaWwiCiAKLSM6IGdpdGs6MjEyOCBnaXRrOjc1MDQKKyM6IGdpdGs6MjIxOCBnaXRrOjc2NDcKIG1zZ2lkICJDcmVhdGUgbmV3IGJyYW5jaCIKIG1zZ3N0ciAiU2thcGEgbnkgZ3JlbiIKIAotIzogZ2l0azoyMTI5CisjOiBnaXRrOjIyMTkKIG1zZ2lkICJDaGVycnktcGljayB0aGlzIGNvbW1pdCIKIG1zZ3N0ciAiUGxvY2thIGRlbm5hIGluY2hlY2tuaW5nIgogCi0jOiBnaXRrOjIxMzEKKyM6IGdpdGs6MjIyMAogbXNnaWQgIlJlc2V0IEhFQUQgYnJhbmNoIHRvIGhlcmUiCiBtc2dzdHIgIsOFdGVyc3TDpGxsIEhFQUQtZ3JlbmVuIGhpdCIKIAotIzogZ2l0azoyMTQ3CisjOiBnaXRrOjIyMzQKIG1zZ2lkICJDaGVjayBvdXQgdGhpcyBicmFuY2giCiBtc2dzdHIgIkNoZWNrYSB1dCBkZW5uYSBncmVuIgogCi0jOiBnaXRrOjIxNDkKKyM6IGdpdGs6MjIzNQogbXNnaWQgIlJlbW92ZSB0aGlzIGJyYW5jaCIKIG1zZ3N0ciAiVGEgYm9ydCBkZW5uYSBncmVuIgogCi0jOiBnaXRrOjIxNTUKKyM6IGdpdGs6MjI0MgogbXNnaWQgIkhpZ2hsaWdodCB0aGlzIHRvbyIKIG1zZ3N0ciAiTWFya2VyYSDDpHZlbiBkZXR0YSIKIAotIzogZ2l0azoyMTU3CisjOiBnaXRrOjIyNDMKIG1zZ2lkICJIaWdobGlnaHQgdGhpcyBvbmx5IgogbXNnc3RyICJNYXJrZXJhIGJhcmEgZGV0dGEiCiAKLSM6IGdpdGs6MjE1OQorIzogZ2l0azoyMjQ0CiBtc2dpZCAiRXh0ZXJuYWwgZGlmZiIKIG1zZ3N0ciAiRXh0ZXJuIGRpZmYiCiAKLSM6IGdpdGs6MjQwMAorIzogZ2l0azoyMjQ1Cittc2dpZCAiQmxhbWUgcGFyZW50IGNvbW1pdCIKK21zZ3N0ciAiIgorCisjOiBnaXRrOjI0ODgKIG1zZ2lkICIiCiAiXG4iCiAiR2l0ayAtIGEgY29tbWl0IHZpZXdlciBmb3IgZ2l0XG4iCkBAIC0zMDAsNDI3ICszMDQsNDI3IEBACiAiXG4iCiAiQW52w6RuZCBvY2ggdmlkYXJlZsO2cm1lZGxhIGVubGlndCB2aWxsa29yZW4gaSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSIKIAotIzogZ2l0azoyNDA4IGdpdGs6MjQ2OSBnaXRrOjc3OTkKKyM6IGdpdGs6MjQ5NiBnaXRrOjI1NTcgZ2l0azo3OTQzCiBtc2dpZCAiQ2xvc2UiCiBtc2dzdHIgIlN0w6RuZyIKIAotIzogZ2l0azoyNDI3CisjOiBnaXRrOjI1MTUKIG1zZ2lkICJHaXRrIGtleSBiaW5kaW5ncyIKIG1zZ3N0ciAiVGFuZ2VudGJvcmRzYmluZG5pbmdhciBmw7ZyIEdpdGsiCiAKLSM6IGdpdGs6MjQyOQorIzogZ2l0azoyNTE3CiBtc2dpZCAiR2l0ayBrZXkgYmluZGluZ3M6IgogbXNnc3RyICJUYW5nZW50Ym9yZHNiaW5kbmluZ2FyIGbDtnIgR2l0azoiCiAKLSM6IGdpdGs6MjQzMQorIzogZ2l0azoyNTE5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLVE+XHRcdFF1aXQiCiBtc2dzdHIgIjwlcy1RPlx0XHRBdnNsdXRhIgogCi0jOiBnaXRrOjI0MzIKKyM6IGdpdGs6MjUyMAogbXNnaWQgIjxIb21lPlx0XHRNb3ZlIHRvIGZpcnN0IGNvbW1pdCIKIG1zZ3N0ciAiPEhvbWU+XHRcdEfDpSB0aWxsIGbDtnJzdGEgaW5jaGVja25pbmciCiAKLSM6IGdpdGs6MjQzMworIzogZ2l0azoyNTIxCiBtc2dpZCAiPEVuZD5cdFx0TW92ZSB0byBsYXN0IGNvbW1pdCIKIG1zZ3N0ciAiPEVuZD5cdFx0R8OlIHRpbGwgc2lzdGEgaW5jaGVja25pbmciCiAKLSM6IGdpdGs6MjQzNAorIzogZ2l0azoyNTIyCiBtc2dpZCAiPFVwPiwgcCwgaVx0TW92ZSB1cCBvbmUgY29tbWl0IgogbXNnc3RyICI8VXBwPiwgcCwgaVx0R8OlIGVuIGluY2hlY2tuaW5nIHVwcCIKIAotIzogZ2l0azoyNDM1CisjOiBnaXRrOjI1MjMKIG1zZ2lkICI8RG93bj4sIG4sIGtcdE1vdmUgZG93biBvbmUgY29tbWl0IgogbXNnc3RyICI8TmVkPiwgbiwga1x0R8OlIGVuIGluY2hlY2tuaW5nIG5lZCIKIAotIzogZ2l0azoyNDM2CisjOiBnaXRrOjI1MjQKIG1zZ2lkICI8TGVmdD4sIHosIGpcdEdvIGJhY2sgaW4gaGlzdG9yeSBsaXN0IgogbXNnc3RyICI8VsOkbnN0ZXI+LCB6LCBqXHRHw6UgYmFrw6V0IGkgaGlzdG9yaWtlbiIKIAotIzogZ2l0azoyNDM3CisjOiBnaXRrOjI1MjUKIG1zZ2lkICI8UmlnaHQ+LCB4LCBsXHRHbyBmb3J3YXJkIGluIGhpc3RvcnkgbGlzdCIKIG1zZ3N0ciAiPEjDtmdlcj4sIHgsIGxcdEfDpSBmcmFtw6V0IGkgaGlzdG9yaWtlbiIKIAotIzogZ2l0azoyNDM4CisjOiBnaXRrOjI1MjYKIG1zZ2lkICI8UGFnZVVwPlx0TW92ZSB1cCBvbmUgcGFnZSBpbiBjb21taXQgbGlzdCIKIG1zZ3N0ciAiPFBhZ2VVcD5cdEfDpSB1cHAgZW4gc2lkYSBpIGluY2hlY2tuaW5nc2xpc3RhbiIKIAotIzogZ2l0azoyNDM5CisjOiBnaXRrOjI1MjcKIG1zZ2lkICI8UGFnZURvd24+XHRNb3ZlIGRvd24gb25lIHBhZ2UgaW4gY29tbWl0IGxpc3QiCiBtc2dzdHIgIjxQYWdlRG93bj5cdEfDpSBuZWQgZW4gc2lkYSBpIGluY2hlY2tuaW5nc2xpc3RhbiIKIAotIzogZ2l0azoyNDQwCisjOiBnaXRrOjI1MjgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtSG9tZT5cdFNjcm9sbCB0byB0b3Agb2YgY29tbWl0IGxpc3QiCiBtc2dzdHIgIjwlcy1Ib21lPlx0UnVsbGEgdGlsbCBiw7ZyamFuIGF2IGluY2hlY2tuaW5nc2xpc3RhbiIKIAotIzogZ2l0azoyNDQxCisjOiBnaXRrOjI1MjkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtRW5kPlx0U2Nyb2xsIHRvIGJvdHRvbSBvZiBjb21taXQgbGlzdCIKIG1zZ3N0ciAiPCVzLUVuZD5cdFJ1bGxhIHRpbGwgc2x1dGV0IGF2IGluY2hlY2tuaW5nc2xpc3RhbiIKIAotIzogZ2l0azoyNDQyCisjOiBnaXRrOjI1MzAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtVXA+XHRTY3JvbGwgY29tbWl0IGxpc3QgdXAgb25lIGxpbmUiCiBtc2dzdHIgIjwlcy1VcHA+XHRSdWxsYSBpbmNoZWNrbmluZ3NsaXN0YW4gdXBwIGV0dCBzdGVnIgogCi0jOiBnaXRrOjI0NDMKKyM6IGdpdGs6MjUzMQogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1Eb3duPlx0U2Nyb2xsIGNvbW1pdCBsaXN0IGRvd24gb25lIGxpbmUiCiBtc2dzdHIgIjwlcy1OZWQ+XHRSdWxsYSBpbmNoZWNrbmluZ3NsaXN0YW4gbmVkIGV0dCBzdGVnIgogCi0jOiBnaXRrOjI0NDQKKyM6IGdpdGs6MjUzMgogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1QYWdlVXA+XHRTY3JvbGwgY29tbWl0IGxpc3QgdXAgb25lIHBhZ2UiCiBtc2dzdHIgIjwlcy1QYWdlVXA+XHRSdWxsYSBpbmNoZWNrbmluZ3NsaXN0YW4gdXBwIGVuIHNpZGEiCiAKLSM6IGdpdGs6MjQ0NQorIzogZ2l0azoyNTMzCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLVBhZ2VEb3duPlx0U2Nyb2xsIGNvbW1pdCBsaXN0IGRvd24gb25lIHBhZ2UiCiBtc2dzdHIgIjwlcy1QYWdlRG93bj5cdFJ1bGxhIGluY2hlY2tuaW5nc2xpc3RhbiBuZWQgZW4gc2lkYSIKIAotIzogZ2l0azoyNDQ2CisjOiBnaXRrOjI1MzQKIG1zZ2lkICI8U2hpZnQtVXA+XHRGaW5kIGJhY2t3YXJkcyAodXB3YXJkcywgbGF0ZXIgY29tbWl0cykiCiBtc2dzdHIgIjxTa2lmdC1VcHA+XHRTw7ZrIGJha8OldCAodXBww6V0LCBzZW5hcmUgaW5jaGVja25pbmdhcikiCiAKLSM6IGdpdGs6MjQ0NworIzogZ2l0azoyNTM1CiBtc2dpZCAiPFNoaWZ0LURvd24+XHRGaW5kIGZvcndhcmRzIChkb3dud2FyZHMsIGVhcmxpZXIgY29tbWl0cykiCiBtc2dzdHIgIjxTa2lmdC1OZWQ+XHRTw7ZrIGZyYW3DpXQgKG5lZMOldCwgdGlkaWdhcmUgaW5jaGVja25pbmdhcikiCiAKLSM6IGdpdGs6MjQ0OAorIzogZ2l0azoyNTM2CiBtc2dpZCAiPERlbGV0ZT4sIGJcdFNjcm9sbCBkaWZmIHZpZXcgdXAgb25lIHBhZ2UiCiBtc2dzdHIgIjxEZWxldGU+LCBiXHRSdWxsYSBkaWZmdmlzbmluZ2VuIHVwcCBlbiBzaWRhIgogCi0jOiBnaXRrOjI0NDkKKyM6IGdpdGs6MjUzNwogbXNnaWQgIjxCYWNrc3BhY2U+XHRTY3JvbGwgZGlmZiB2aWV3IHVwIG9uZSBwYWdlIgogbXNnc3RyICI8QmFrc3RlZz5cdFJ1bGxhIGRpZmZ2aXNuaW5nZW4gdXBwIGVuIHNpZGEiCiAKLSM6IGdpdGs6MjQ1MAorIzogZ2l0azoyNTM4CiBtc2dpZCAiPFNwYWNlPlx0XHRTY3JvbGwgZGlmZiB2aWV3IGRvd24gb25lIHBhZ2UiCiBtc2dzdHIgIjxCbGFua3N0ZWc+XHRSdWxsYSBkaWZmdmlzbmluZ2VuIG5lZCBlbiBzaWRhIgogCi0jOiBnaXRrOjI0NTEKKyM6IGdpdGs6MjUzOQogbXNnaWQgInVcdFx0U2Nyb2xsIGRpZmYgdmlldyB1cCAxOCBsaW5lcyIKIG1zZ3N0ciAidVx0XHRSdWxsYSBkaWZmdmlzbmluZ2VuIHVwcCAxOCByYWRlciIKIAotIzogZ2l0azoyNDUyCisjOiBnaXRrOjI1NDAKIG1zZ2lkICJkXHRcdFNjcm9sbCBkaWZmIHZpZXcgZG93biAxOCBsaW5lcyIKIG1zZ3N0ciAiZFx0XHRSdWxsYSBkaWZmdmlzbmluZ2VuIG5lZCAxOCByYWRlciIKIAotIzogZ2l0azoyNDUzCisjOiBnaXRrOjI1NDEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtRj5cdFx0RmluZCIKIG1zZ3N0ciAiPCVzLUY+XHRcdFPDtmsiCiAKLSM6IGdpdGs6MjQ1NAorIzogZ2l0azoyNTQyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLUc+XHRcdE1vdmUgdG8gbmV4dCBmaW5kIGhpdCIKIG1zZ3N0ciAiPCVzLUc+XHRcdEfDpSB0aWxsIG7DpHN0YSBzw7ZrdHLDpGZmIgogCi0jOiBnaXRrOjI0NTUKKyM6IGdpdGs6MjU0MwogbXNnaWQgIjxSZXR1cm4+XHRNb3ZlIHRvIG5leHQgZmluZCBoaXQiCiBtc2dzdHIgIjxSZXR1cm4+XHRcdEfDpSB0aWxsIG7DpHN0YSBzw7ZrdHLDpGZmIgogCi0jOiBnaXRrOjI0NTYKKyM6IGdpdGs6MjU0NAogbXNnaWQgIi9cdFx0TW92ZSB0byBuZXh0IGZpbmQgaGl0LCBvciByZWRvIGZpbmQiCiBtc2dzdHIgIi9cdFx0R8OlIHRpbGwgbsOkc3RhIHPDtmt0csOkZmYsIGVsbGVyIHPDtmsgcMOlIG55dHQiCiAKLSM6IGdpdGs6MjQ1NworIzogZ2l0azoyNTQ1CiBtc2dpZCAiP1x0XHRNb3ZlIHRvIHByZXZpb3VzIGZpbmQgaGl0IgogbXNnc3RyICI/XHRcdEfDpSB0aWxsIGbDtnJlZ8OlZW5kZSBzw7ZrdHLDpGZmIgogCi0jOiBnaXRrOjI0NTgKKyM6IGdpdGs6MjU0NgogbXNnaWQgImZcdFx0U2Nyb2xsIGRpZmYgdmlldyB0byBuZXh0IGZpbGUiCiBtc2dzdHIgImZcdFx0UnVsbGEgZGlmZnZpc25pbmdlbiB0aWxsIG7DpHN0YSBmaWwiCiAKLSM6IGdpdGs6MjQ1OQorIzogZ2l0azoyNTQ3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLVM+XHRcdFNlYXJjaCBmb3IgbmV4dCBoaXQgaW4gZGlmZiB2aWV3IgogbXNnc3RyICI8JXMtUz5cdFx0R8OlIHRpbGwgbsOkc3RhIHPDtmt0csOkZmYgaSBkaWZmdmlzbmluZ2VuIgogCi0jOiBnaXRrOjI0NjAKKyM6IGdpdGs6MjU0OAogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1SPlx0XHRTZWFyY2ggZm9yIHByZXZpb3VzIGhpdCBpbiBkaWZmIHZpZXciCiBtc2dzdHIgIjwlcy1SPlx0XHRHw6UgdGlsbCBmw7ZyZWfDpWVuZGUgc8O2a3Ryw6RmZiBpIGRpZmZ2aXNuaW5nZW4iCiAKLSM6IGdpdGs6MjQ2MQorIzogZ2l0azoyNTQ5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLUtQKz5cdEluY3JlYXNlIGZvbnQgc2l6ZSIKIG1zZ3N0ciAiPCVzLU51bSs+XHTDlmthIHRlY2tlbnN0b3JsZWsiCiAKLSM6IGdpdGs6MjQ2MgorIzogZ2l0azoyNTUwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLXBsdXM+XHRJbmNyZWFzZSBmb250IHNpemUiCiBtc2dzdHIgIjwlcy1wbHVzPlx0w5ZrYSB0ZWNrZW5zdG9ybGVrIgogCi0jOiBnaXRrOjI0NjMKKyM6IGdpdGs6MjU1MQogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1LUC0+XHREZWNyZWFzZSBmb250IHNpemUiCiBtc2dzdHIgIjwlcy1OdW0tPlx0TWluc2thIHRlY2tlbnN0b3JsZWsiCiAKLSM6IGdpdGs6MjQ2NAorIzogZ2l0azoyNTUyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLW1pbnVzPlx0RGVjcmVhc2UgZm9udCBzaXplIgogbXNnc3RyICI8JXMtbWludXM+XHRNaW5za2EgdGVja2Vuc3RvcmxlayIKIAotIzogZ2l0azoyNDY1CisjOiBnaXRrOjI1NTMKIG1zZ2lkICI8RjU+XHRcdFVwZGF0ZSIKIG1zZ3N0ciAiPEY1Plx0XHRVcHBkYXRlcmEiCiAKLSM6IGdpdGs6MzA5MQorIzogZ2l0azozMjAwCiBtc2dpZCAiR2l0ayB2aWV3IGRlZmluaXRpb24iCiBtc2dzdHIgIkRlZmluaXRpb24gYXYgR2l0ay12eSIKIAotIzogZ2l0azozMTE2CisjOiBnaXRrOjMyMjUKIG1zZ2lkICJOYW1lIgogbXNnc3RyICJOYW1uIgogCi0jOiBnaXRrOjMxMTkKKyM6IGdpdGs6MzIyOAogbXNnaWQgIlJlbWVtYmVyIHRoaXMgdmlldyIKIG1zZ3N0ciAiU3BhcmEgZGVubmEgdnkiCiAKLSM6IGdpdGs6MzEyMworIzogZ2l0azozMjMyCiBtc2dpZCAiQ29tbWl0cyB0byBpbmNsdWRlIChhcmd1bWVudHMgdG8gZ2l0IGxvZyk6IgogbXNnc3RyICJJbmNoZWNrbmluZ2FyIGF0dCB0YSBtZWQgKGFyZ3VtZW50IHRpbGwgZ2l0IGxvZyk6IgogCi0jOiBnaXRrOjMxMzAKKyM6IGdpdGs6MzIzOQogbXNnaWQgIkNvbW1hbmQgdG8gZ2VuZXJhdGUgbW9yZSBjb21taXRzIHRvIGluY2x1ZGU6IgogbXNnc3RyICJLb21tYW5kbyBmw7ZyIGF0dCBnZW5lcmVyYSBmbGVyIGluY2hlY2tuaW5nYXIgYXR0IHRhIG1lZDoiCiAKLSM6IGdpdGs6MzEzNworIzogZ2l0azozMjQ2CiBtc2dpZCAiRW50ZXIgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRvIGluY2x1ZGUsIG9uZSBwZXIgbGluZToiCiBtc2dzdHIgIkFuZ2UgZmlsZXIgb2NoIGthdGFsb2dlciBhdHQgdGEgbWVkLCBlbiBwZXIgcmFkOiIKIAotIzogZ2l0azozMTg0CisjOiBnaXRrOjMyOTMKIG1zZ2lkICJFcnJvciBpbiBjb21taXQgc2VsZWN0aW9uIGFyZ3VtZW50czoiCiBtc2dzdHIgIkZlbCBpIGFyZ3VtZW50IGbDtnIgdmFsIGF2IGluY2hlY2tuaW5nYXI6IgogCi0jOiBnaXRrOjMyMzggZ2l0azozMjkwIGdpdGs6MzczNiBnaXRrOjM3NTAgZ2l0azo0OTUxIGdpdGs6OTg5NiBnaXRrOjk4OTcKKyM6IGdpdGs6MzM0NyBnaXRrOjMzOTkgZ2l0azozODQyIGdpdGs6Mzg1NiBnaXRrOjUwNjAgZ2l0azoxMDE0MSBnaXRrOjEwMTQyCiBtc2dpZCAiTm9uZSIKIG1zZ3N0ciAiSW5nZXQiCiAKLSM6IGdpdGs6MzY4NCBnaXRrOjU0NzEgZ2l0azo3MTQ0IGdpdGs6NzE1OQorIzogZ2l0azozNzkwIGdpdGs6NTU4MCBnaXRrOjcyODcgZ2l0azo3MzAyCiBtc2dpZCAiRGF0ZSIKIG1zZ3N0ciAiRGF0dW0iCiAKLSM6IGdpdGs6MzY4NCBnaXRrOjU0NzEKKyM6IGdpdGs6Mzc5MCBnaXRrOjU1ODAKIG1zZ2lkICJDRGF0ZSIKIG1zZ3N0ciAiU2thcGF0IGRhdHVtIgogCi0jOiBnaXRrOjM4MzMgZ2l0azozODM4CisjOiBnaXRrOjM5MzkgZ2l0azozOTQ0CiBtc2dpZCAiRGVzY2VuZGFudCIKIG1zZ3N0ciAiQXZrb21saW5nIgogCi0jOiBnaXRrOjM4MzQKKyM6IGdpdGs6Mzk0MAogbXNnaWQgIk5vdCBkZXNjZW5kYW50IgogbXNnc3RyICJJbnRlIGF2a29tbGluZyIKIAotIzogZ2l0azozODQxIGdpdGs6Mzg0NgorIzogZ2l0azozOTQ3IGdpdGs6Mzk1MgogbXNnaWQgIkFuY2VzdG9yIgogbXNnc3RyICJGw7ZyZmFkZXIiCiAKLSM6IGdpdGs6Mzg0MgorIzogZ2l0azozOTQ4CiBtc2dpZCAiTm90IGFuY2VzdG9yIgogbXNnc3RyICJJbnRlIGbDtnJmYWRlciIKIAotIzogZ2l0azo0MDc4CisjOiBnaXRrOjQxODcKIG1zZ2lkICJMb2NhbCBjaGFuZ2VzIGNoZWNrZWQgaW4gdG8gaW5kZXggYnV0IG5vdCBjb21taXR0ZWQiCiBtc2dzdHIgIkxva2FsYSDDpG5kcmluZ2FyIHNwYXJhZGUgaSBpbmRleGV0IG1lbiBpbnRlIGluY2hlY2thZGUiCiAKLSM6IGdpdGs6NDExMQorIzogZ2l0azo0MjIwCiBtc2dpZCAiTG9jYWwgdW5jb21taXR0ZWQgY2hhbmdlcywgbm90IGNoZWNrZWQgaW4gdG8gaW5kZXgiCiBtc2dzdHIgIkxva2FsYSDDpG5kcmluZ2FyLCBlaiBzcGFyYWRlIGkgaW5kZXhldCIKIAotIzogZ2l0azo1NDQwCisjOiBnaXRrOjU1NDkKIG1zZ2lkICJTZWFyY2hpbmciCiBtc2dzdHIgIlPDtmtlciIKIAotIzogZ2l0azo1OTQwCisjOiBnaXRrOjYwNDkKIG1zZ2lkICJUYWdzOiIKIG1zZ3N0ciAiVGFnZ2FyOiIKIAotIzogZ2l0azo1OTU3IGdpdGs6NTk2MyBnaXRrOjcxMzcKKyM6IGdpdGs6NjA2NiBnaXRrOjYwNzIgZ2l0azo3MjgwCiBtc2dpZCAiUGFyZW50IgogbXNnc3RyICJGw7Zyw6RsZGVyIgogCi0jOiBnaXRrOjU5NjgKKyM6IGdpdGs6NjA3NwogbXNnaWQgIkNoaWxkIgogbXNnc3RyICJCYXJuIgogCi0jOiBnaXRrOjU5NzcKKyM6IGdpdGs6NjA4NgogbXNnaWQgIkJyYW5jaCIKIG1zZ3N0ciAiR3JlbiIKIAotIzogZ2l0azo1OTgwCisjOiBnaXRrOjYwODkKIG1zZ2lkICJGb2xsb3dzIgogbXNnc3RyICJGw7ZsamVyIgogCi0jOiBnaXRrOjU5ODMKKyM6IGdpdGs6NjA5MgogbXNnaWQgIlByZWNlZGVzIgogbXNnc3RyICJGw7ZyZWfDpXIiCiAKLSM6IGdpdGs6NjI2NworIzogZ2l0azo2Mzc4CiBtc2dpZCAiRXJyb3IgZ2V0dGluZyBtZXJnZSBkaWZmczoiCiBtc2dzdHIgIkZlbCB2aWQgaMOkbXRuaW5nIGF2IHNhbW1hbnNsYWduaW5nc2RpZmY6IgogCi0jOiBnaXRrOjY5NzAKKyM6IGdpdGs6NzExMwogbXNnaWQgIkdvdG86IgogbXNnc3RyICJHw6UgdGlsbDoiCiAKLSM6IGdpdGs6Njk3MgorIzogZ2l0azo3MTE1CiBtc2dpZCAiU0hBMSBJRDoiCiBtc2dzdHIgIlNIQTEtaWQ6IgogCi0jOiBnaXRrOjY5OTEKKyM6IGdpdGs6NzEzNAogIywgdGNsLWZvcm1hdAogbXNnaWQgIlNob3J0IFNIQTEgaWQgJXMgaXMgYW1iaWd1b3VzIgogbXNnc3RyICJGw7Zya29ydGF0IFNIQTEtaWQgJXMgw6RyIHR2ZXR5ZGlndCIKIAotIzogZ2l0azo3MDAzCisjOiBnaXRrOjcxNDYKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJTSEExIGlkICVzIGlzIG5vdCBrbm93biIKIG1zZ3N0ciAiU0hBLWlkOnQgJXMgw6RyIGludGUga8OkbnQiCiAKLSM6IGdpdGs6NzAwNQorIzogZ2l0azo3MTQ4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVGFnL0hlYWQgJXMgaXMgbm90IGtub3duIgogbXNnc3RyICJUYWdnL2h1dnVkICVzIMOkciBva8OkbnQiCiAKLSM6IGdpdGs6NzE0NworIzogZ2l0azo3MjkwCiBtc2dpZCAiQ2hpbGRyZW4iCiBtc2dzdHIgIkJhcm4iCiAKLSM6IGdpdGs6NzIwNAorIzogZ2l0azo3MzQ3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmVzZXQgJXMgYnJhbmNoIHRvIGhlcmUiCiBtc2dzdHIgIsOFdGVyc3TDpGxsIGdyZW5lbiAlcyBoaXQiCiAKLSM6IGdpdGs6NzIwNgorIzogZ2l0azo3MzQ5CiBtc2dpZCAiRGV0YWNoZWQgaGVhZDogY2FuJ3QgcmVzZXQiCiBtc2dzdHIgIkZyw6Vua29wcGxhZCBoZWFkOiBrYW4gaW50ZSDDpXRlcnN0w6RsbGEiCiAKLSM6IGdpdGs6NzIzOAorIzogZ2l0azo3MzgxCiBtc2dpZCAiVG9wIgogbXNnc3RyICJUb3BwIgogCi0jOiBnaXRrOjcyMzkKKyM6IGdpdGs6NzM4MgogbXNnaWQgIkZyb20iCiBtc2dzdHIgIkZyw6VuIgogCi0jOiBnaXRrOjcyNDQKKyM6IGdpdGs6NzM4NwogbXNnaWQgIlRvIgogbXNnc3RyICJUaWxsIgogCi0jOiBnaXRrOjcyNjcKKyM6IGdpdGs6NzQxMAogbXNnaWQgIkdlbmVyYXRlIHBhdGNoIgogbXNnc3RyICJHZW5lcmVyYSBwYXRjaCIKIAotIzogZ2l0azo3MjY5CisjOiBnaXRrOjc0MTIKIG1zZ2lkICJGcm9tOiIKIG1zZ3N0ciAiRnLDpW46IgogCi0jOiBnaXRrOjcyNzgKKyM6IGdpdGs6NzQyMQogbXNnaWQgIlRvOiIKIG1zZ3N0ciAiVGlsbDoiCiAKLSM6IGdpdGs6NzI4NworIzogZ2l0azo3NDMwCiBtc2dpZCAiUmV2ZXJzZSIKIG1zZ3N0ciAiVsOkbmQiCiAKLSM6IGdpdGs6NzI4OSBnaXRrOjc0NjQKKyM6IGdpdGs6NzQzMiBnaXRrOjc2MDcKIG1zZ2lkICJPdXRwdXQgZmlsZToiCiBtc2dzdHIgIlV0ZGF0YWZpbDoiCiAKLSM6IGdpdGs6NzI5NQorIzogZ2l0azo3NDM4CiBtc2dpZCAiR2VuZXJhdGUiCiBtc2dzdHIgIkdlbmVyZXJhIgogCi0jOiBnaXRrOjczMzEKKyM6IGdpdGs6NzQ3NAogbXNnaWQgIkVycm9yIGNyZWF0aW5nIHBhdGNoOiIKIG1zZ3N0ciAiRmVsIHZpZCBnZW5lcmVyaW5nIGF2IHBhdGNoOiIKIAotIzogZ2l0azo3MzUzIGdpdGs6NzQ1MiBnaXRrOjc1MDYKKyM6IGdpdGs6NzQ5NiBnaXRrOjc1OTUgZ2l0azo3NjQ5CiBtc2dpZCAiSUQ6IgogbXNnc3RyICJJZDoiCiAKLSM6IGdpdGs6NzM2MgorIzogZ2l0azo3NTA1CiBtc2dpZCAiVGFnIG5hbWU6IgogbXNnc3RyICJUYWdnbmFtbjoiCiAKLSM6IGdpdGs6NzM2NiBnaXRrOjc1MTUKKyM6IGdpdGs6NzUwOSBnaXRrOjc2NTkKIG1zZ2lkICJDcmVhdGUiCiBtc2dzdHIgIlNrYXBhIgogCi0jOiBnaXRrOjczODEKKyM6IGdpdGs6NzUyNAogbXNnaWQgIk5vIHRhZyBuYW1lIHNwZWNpZmllZCIKIG1zZ3N0ciAiSW5nZXQgdGFnZ25hbW4gYW5nYXZzIgogCi0jOiBnaXRrOjczODUKKyM6IGdpdGs6NzUyOAogIywgdGNsLWZvcm1hdAogbXNnaWQgIlRhZyBcIiVzXCIgYWxyZWFkeSBleGlzdHMiCiBtc2dzdHIgIlRhZ2dlbiBcIiVzXCIgZmlubnMgcmVkYW4iCiAKLSM6IGdpdGs6NzM5MQorIzogZ2l0azo3NTM0CiBtc2dpZCAiRXJyb3IgY3JlYXRpbmcgdGFnOiIKIG1zZ3N0ciAiRmVsIHZpZCBza2FwYW5kZSBhdiB0YWdnOiIKIAotIzogZ2l0azo3NDYxCisjOiBnaXRrOjc2MDQKIG1zZ2lkICJDb21tYW5kOiIKIG1zZ3N0ciAiS29tbWFuZG86IgogCi0jOiBnaXRrOjc0NjkKKyM6IGdpdGs6NzYxMgogbXNnaWQgIldyaXRlIgogbXNnc3RyICJTa3JpdiIKIAotIzogZ2l0azo3NDg1CisjOiBnaXRrOjc2MjgKIG1zZ2lkICJFcnJvciB3cml0aW5nIGNvbW1pdDoiCiBtc2dzdHIgIkZlbCB2aWQgc2tyaXZuaW5nIGF2IGluY2hlY2tuaW5nOiIKIAotIzogZ2l0azo3NTExCisjOiBnaXRrOjc2NTQKIG1zZ2lkICJOYW1lOiIKIG1zZ3N0ciAiTmFtbjoiCiAKLSM6IGdpdGs6NzUzMAorIzogZ2l0azo3Njc0CiBtc2dpZCAiUGxlYXNlIHNwZWNpZnkgYSBuYW1lIGZvciB0aGUgbmV3IGJyYW5jaCIKIG1zZ3N0ciAiQW5nZSBldHQgbmFtbiBmw7ZyIGRlbiBueWEgZ3JlbmVuIgogCi0jOiBnaXRrOjc1NTkKKyM6IGdpdGs6NzcwMwogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNvbW1pdCAlcyBpcyBhbHJlYWR5IGluY2x1ZGVkIGluIGJyYW5jaCAlcyAtLSByZWFsbHkgcmUtYXBwbHkgaXQ/IgogbXNnc3RyICIiCiAiSW5jaGVja25pbmdlbiAlcyBmaW5ucyByZWRhbiBww6UgZ3JlbmVuICVzIC0tIHNrYWxsIGRlbiB2ZXJrbGlnZW4gYXBwbGljZXJhcyAiCiAicMOlIG55dHQ/IgogCi0jOiBnaXRrOjc1NjQKKyM6IGdpdGs6NzcwOAogbXNnaWQgIkNoZXJyeS1waWNraW5nIgogbXNnc3RyICJQbG9ja2FyIgogCi0jOiBnaXRrOjc1NzYKKyM6IGdpdGs6NzcyMAogbXNnaWQgIk5vIGNoYW5nZXMgY29tbWl0dGVkIgogbXNnc3RyICJJbmdhIMOkbmRyaW5nYXIgaW5jaGVja2FkZSIKIAotIzogZ2l0azo3NjAxCisjOiBnaXRrOjc3NDUKIG1zZ2lkICJDb25maXJtIHJlc2V0IgogbXNnc3RyICJCZWtyw6RmdGEgw6V0ZXJzdMOkbGxuaW5nIgogCi0jOiBnaXRrOjc2MDMKKyM6IGdpdGs6Nzc0NwogIywgdGNsLWZvcm1hdAogbXNnaWQgIlJlc2V0IGJyYW5jaCAlcyB0byAlcz8iCiBtc2dzdHIgIsOFdGVyc3TDpGxsYSBncmVuZW4gJXMgdGlsbCAlcz8iCiAKLSM6IGdpdGs6NzYwNworIzogZ2l0azo3NzUxCiBtc2dpZCAiUmVzZXQgdHlwZToiCiBtc2dzdHIgIlR5cCBhdiDDpXRlcnN0w6RsbG5pbmc6IgogCi0jOiBnaXRrOjc2MTEKKyM6IGdpdGs6Nzc1NQogbXNnaWQgIlNvZnQ6IExlYXZlIHdvcmtpbmcgdHJlZSBhbmQgaW5kZXggdW50b3VjaGVkIgogbXNnc3RyICJNanVrOiBSw7ZyIGludGUgdXRjaGVja25pbmcgb2NoIGluZGV4IgogCi0jOiBnaXRrOjc2MTQKKyM6IGdpdGs6Nzc1OAogbXNnaWQgIk1peGVkOiBMZWF2ZSB3b3JraW5nIHRyZWUgdW50b3VjaGVkLCByZXNldCBpbmRleCIKIG1zZ3N0ciAiQmxhbmRhZDogUsO2ciBpbnRlIHV0Y2hlY2tuaW5nLCDDpXRlcnN0w6RsbCBpbmRleCIKIAotIzogZ2l0azo3NjE3CisjOiBnaXRrOjc3NjEKIG1zZ2lkICIiCiAiSGFyZDogUmVzZXQgd29ya2luZyB0cmVlIGFuZCBpbmRleFxuIgogIihkaXNjYXJkIEFMTCBsb2NhbCBjaGFuZ2VzKSIKQEAgLTcyOCwxOSArNzMyLDE5IEBACiAiSMOlcmQ6IMOFdGVyc3TDpGxsIHV0Y2hlY2tuaW5nIG9jaCBpbmRleFxuIgogIihmw7Zya2FzdGFyIEFMTEEgbG9rYWxhIMOkbmRyaW5nYXIpIgogCi0jOiBnaXRrOjc2MzMKKyM6IGdpdGs6Nzc3NwogbXNnaWQgIlJlc2V0dGluZyIKIG1zZ3N0ciAiw4V0ZXJzdMOkbGxlciIKIAotIzogZ2l0azo3NjkwCisjOiBnaXRrOjc4MzQKIG1zZ2lkICJDaGVja2luZyBvdXQiCiBtc2dzdHIgIkNoZWNrYXIgdXQiCiAKLSM6IGdpdGs6Nzc0MQorIzogZ2l0azo3ODg1CiBtc2dpZCAiQ2Fubm90IGRlbGV0ZSB0aGUgY3VycmVudGx5IGNoZWNrZWQtb3V0IGJyYW5jaCIKIG1zZ3N0ciAiS2FuIGludGUgdGEgYm9ydCBkZW4ganVzdCBudSB1dGNoZWNrYWRlIGdyZW5lbiIKIAotIzogZ2l0azo3NzQ3CisjOiBnaXRrOjc4OTEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiVGhlIGNvbW1pdHMgb24gYnJhbmNoICVzIGFyZW4ndCBvbiBhbnkgb3RoZXIgYnJhbmNoLlxuIgpAQCAtNzQ5LDE2ICs3NTMsMTYgQEAKICJJbmNoZWNrbmluZ2FybmEgcMOlIGdyZW5lbiAlcyBleGlzdGVyYXIgaW50ZSBww6UgbsOlZ29uIGFubmFuIGdyZW4uXG4iCiAiVmlsbCBkdSB2ZXJrbGlnZW4gdGEgYm9ydCBncmVuZW4gJXM/IgogCi0jOiBnaXRrOjc3NzgKKyM6IGdpdGs6NzkyMgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlRhZ3MgYW5kIGhlYWRzOiAlcyIKIG1zZ3N0ciAiVGFnZ2FyIG9jaCBodXZ1ZGVuOiAlcyIKIAotIzogZ2l0azo3NzkyCisjOiBnaXRrOjc5MzYKIG1zZ2lkICJGaWx0ZXIiCiBtc2dzdHIgIkZpbHRlciIKIAotIzogZ2l0azo4MDg2CisjOiBnaXRrOjgyMzAKIG1zZ2lkICIiCiAiRXJyb3IgcmVhZGluZyBjb21taXQgdG9wb2xvZ3kgaW5mb3JtYXRpb247IGJyYW5jaCBhbmQgcHJlY2VkaW5nL2ZvbGxvd2luZyAiCiAidGFnIGluZm9ybWF0aW9uIHdpbGwgYmUgaW5jb21wbGV0ZS4iCkBAIC03NjYsMTI1ICs3NzAsMTI5IEBACiAiRmVsIHZpZCBsw6RzbmluZyBhdiBpbmZvcm1hdGlvbiBvbSBpbmNoZWNrbmluZ3N0b3BvbG9naTsgaW5mb3JtYXRpb24gb20gIgogImdyZW5hciBvY2ggZsO2cmVnw6VlbmRlL3NlbmFyZSB0YWdnYXIga29tbWVyIGludGUgdmFyYSBrb21wbGV0dC4iCiAKLSM6IGdpdGs6OTA3MgorIzogZ2l0azo5MjE2CiBtc2dpZCAiVGFnIgogbXNnc3RyICJUYWdnIgogCi0jOiBnaXRrOjkwNzIKKyM6IGdpdGs6OTIxNgogbXNnaWQgIklkIgogbXNnc3RyICJJZCIKIAotIzogZ2l0azo5MTE4CisjOiBnaXRrOjkyNjIKIG1zZ2lkICJHaXRrIGZvbnQgY2hvb3NlciIKIG1zZ3N0ciAiVGVja2Vuc25pdHRzdsOkbGphcmUgZsO2ciBHaXRrIgogCi0jOiBnaXRrOjkxMzUKKyM6IGdpdGs6OTI3OQogbXNnaWQgIkIiCiBtc2dzdHIgIkYiCiAKLSM6IGdpdGs6OTEzOAorIzogZ2l0azo5MjgyCiBtc2dpZCAiSSIKIG1zZ3N0ciAiSyIKIAotIzogZ2l0azo5MjMxCisjOiBnaXRrOjkzNzUKIG1zZ2lkICJHaXRrIHByZWZlcmVuY2VzIgogbXNnc3RyICJJbnN0w6RsbG5pbmdhciBmw7ZyIEdpdGsiCiAKLSM6IGdpdGs6OTIzMgorIzogZ2l0azo5Mzc2CiBtc2dpZCAiQ29tbWl0IGxpc3QgZGlzcGxheSBvcHRpb25zIgogbXNnc3RyICJBbHRlcm5hdGl2IGbDtnIgaW5jaGVja25pbmdzbGlzdHZ5IgogCi0jOiBnaXRrOjkyMzUKKyM6IGdpdGs6OTM3OQogbXNnaWQgIk1heGltdW0gZ3JhcGggd2lkdGggKGxpbmVzKSIKIG1zZ3N0ciAiTWF4aW1hbCBncmFmYnJlZGQgKHJhZGVyKSIKIAotIzogZ2l0azo5MjM5CisjOiBnaXRrOjkzODMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJNYXhpbXVtIGdyYXBoIHdpZHRoICglIG9mIHBhbmUpIgogbXNnc3RyICJNYXhpbWFsIGdyYWZicmVkZCAoJSBhdiBydXRhKSIKIAotIzogZ2l0azo5MjQ0CisjOiBnaXRrOjkzODgKIG1zZ2lkICJTaG93IGxvY2FsIGNoYW5nZXMiCiBtc2dzdHIgIlZpc2EgbG9rYWxhIMOkbmRyaW5nYXIiCiAKLSM6IGdpdGs6OTI0OQorIzogZ2l0azo5MzkzCiBtc2dpZCAiQXV0by1zZWxlY3QgU0hBMSIKIG1zZ3N0ciAiVsOkbGogU0hBMSBhdXRvbWF0aXNrdCIKIAotIzogZ2l0azo5MjU0CisjOiBnaXRrOjkzOTgKIG1zZ2lkICJEaWZmIGRpc3BsYXkgb3B0aW9ucyIKIG1zZ3N0ciAiQWx0ZXJuYXRpdiBmw7ZyIGRpZmZ2eSIKIAotIzogZ2l0azo5MjU2CisjOiBnaXRrOjk0MDAKIG1zZ2lkICJUYWIgc3BhY2luZyIKIG1zZ3N0ciAiQmxhbmtzdGVnIGbDtnIgdGFidWxhdG9ydGVja2VuIgogCi0jOiBnaXRrOjkyNjAKKyM6IGdpdGs6OTQwNAogbXNnaWQgIkRpc3BsYXkgbmVhcmJ5IHRhZ3MiCiBtc2dzdHIgIlZpc2EgbsOkcmxpZ2dhbmRlIHRhZ2dhciIKIAotIzogZ2l0azo5MjY1CisjOiBnaXRrOjk0MDkKIG1zZ2lkICJMaW1pdCBkaWZmcyB0byBsaXN0ZWQgcGF0aHMiCiBtc2dzdHIgIkJlZ3LDpG5zYSBkaWZmIHRpbGwgbGlzdGFkZSBzw7ZrdsOkZ2FyIgogCi0jOiBnaXRrOjkyNzIKKyM6IGdpdGs6OTQxNAorbXNnaWQgIlN1cHBvcnQgcGVyLWZpbGUgZW5jb2RpbmdzIgorbXNnc3RyICIiCisKKyM6IGdpdGs6OTQyMQogbXNnaWQgIkV4dGVybmFsIGRpZmYgdG9vbCIKIG1zZ3N0ciAiRXh0ZXJudCBkaWZmLXZlcmt0eWciCiAKLSM6IGdpdGs6OTI3NAorIzogZ2l0azo5NDIzCiBtc2dpZCAiQ2hvb3NlLi4uIgogbXNnc3RyICJWw6Rsai4uLiIKIAotIzogZ2l0azo5Mjc5CisjOiBnaXRrOjk0MjgKIG1zZ2lkICJDb2xvcnM6IHByZXNzIHRvIGNob29zZSIKIG1zZ3N0ciAiRsOkcmdlcjogdHJ5Y2sgZsO2ciBhdHQgdsOkbGphIgogCi0jOiBnaXRrOjkyODIKKyM6IGdpdGs6OTQzMQogbXNnaWQgIkJhY2tncm91bmQiCiBtc2dzdHIgIkJha2dydW5kIgogCi0jOiBnaXRrOjkyODYKKyM6IGdpdGs6OTQzNQogbXNnaWQgIkZvcmVncm91bmQiCiBtc2dzdHIgIkbDtnJncnVuZCIKIAotIzogZ2l0azo5MjkwCisjOiBnaXRrOjk0MzkKIG1zZ2lkICJEaWZmOiBvbGQgbGluZXMiCiBtc2dzdHIgIkRpZmY6IGdhbWxhIHJhZGVyIgogCi0jOiBnaXRrOjkyOTUKKyM6IGdpdGs6OTQ0NAogbXNnaWQgIkRpZmY6IG5ldyBsaW5lcyIKIG1zZ3N0ciAiRGlmZjogbnlhIHJhZGVyIgogCi0jOiBnaXRrOjkzMDAKKyM6IGdpdGs6OTQ0OQogbXNnaWQgIkRpZmY6IGh1bmsgaGVhZGVyIgogbXNnc3RyICJEaWZmOiBkZWxodXZ1ZCIKIAotIzogZ2l0azo5MzA2CisjOiBnaXRrOjk0NTUKIG1zZ2lkICJTZWxlY3QgYmciCiBtc2dzdHIgIk1hcmtlcmFkIGJha2dydW5kIgogCi0jOiBnaXRrOjkzMTAKKyM6IGdpdGs6OTQ1OQogbXNnaWQgIkZvbnRzOiBwcmVzcyB0byBjaG9vc2UiCiBtc2dzdHIgIlRlY2tlbnNuaXR0OiB0cnljayBmw7ZyIGF0dCB2w6RsamEiCiAKLSM6IGdpdGs6OTMxMgorIzogZ2l0azo5NDYxCiBtc2dpZCAiTWFpbiBmb250IgogbXNnc3RyICJIdXZ1ZHRlY2tlbnNuaXR0IgogCi0jOiBnaXRrOjkzMTMKKyM6IGdpdGs6OTQ2MgogbXNnaWQgIkRpZmYgZGlzcGxheSBmb250IgogbXNnc3RyICJUZWNrZW5zbml0dCBmw7ZyIGRpZmZ2aXNuaW5nIgogCi0jOiBnaXRrOjkzMTQKKyM6IGdpdGs6OTQ2MwogbXNnaWQgIlVzZXIgaW50ZXJmYWNlIGZvbnQiCiBtc2dzdHIgIlRlY2tlbnNuaXR0IGbDtnIgYW52w6RuZGFyZ3LDpG5zc25pdHQiCiAKLSM6IGdpdGs6OTMzOQorIzogZ2l0azo5NDg4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiR2l0azogY2hvb3NlIGNvbG9yIGZvciAlcyIKIG1zZ3N0ciAiR2l0azogdsOkbGogZsOkcmcgZsO2ciAlcyIKIAotIzogZ2l0azo5NzIwCisjOiBnaXRrOjk5MzQKIG1zZ2lkICIiCiAiU29ycnksIGdpdGsgY2Fubm90IHJ1biB3aXRoIHRoaXMgdmVyc2lvbiBvZiBUY2wvVGsuXG4iCiAiIEdpdGsgcmVxdWlyZXMgYXQgbGVhc3QgVGNsL1RrIDguNC4iCkBAIC04OTIsMjQgKzkwMCwyNCBAQAogIkdpdGsga2FuIHR5dsOkcnIgaW50ZSBrw7ZyYSBtZWQgZGVubmEgdmVyc2lvbiBhdiBUY2wvVGsuXG4iCiAiIEdpdGsga3LDpHZlciDDpXRtaW5zdG9uZSBUY2wvVGsgOC40LiIKIAotIzogZ2l0azo5ODEyCisjOiBnaXRrOjEwMDQ3CiBtc2dpZCAiQ2Fubm90IGZpbmQgYSBnaXQgcmVwb3NpdG9yeSBoZXJlLiIKIG1zZ3N0ciAiSGl0dGFyIGluZ2V0IGdpdGstYXJraXYgaMOkci4iCiAKLSM6IGdpdGs6OTgxNgorIzogZ2l0azoxMDA1MQogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBmaW5kIHRoZSBnaXQgZGlyZWN0b3J5IFwiJXNcIi4iCiBtc2dzdHIgIkhpdHRhciBpbnRlIGdpdC1rYXRhbG9nZW4gXCIlc1wiLiIKIAotIzogZ2l0azo5ODUzCisjOiBnaXRrOjEwMDk4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQW1iaWd1b3VzIGFyZ3VtZW50ICclcyc6IGJvdGggcmV2aXNpb24gYW5kIGZpbGVuYW1lIgogbXNnc3RyICJUdmV0eWRpZ3QgYXJndW1lbnQgXCIlc1wiOiBiw6VkZSByZXZpc2lvbiBvY2ggZmlsbmFtbiIKIAotIzogZ2l0azo5ODY1CisjOiBnaXRrOjEwMTEwCiBtc2dpZCAiQmFkIGFyZ3VtZW50cyB0byBnaXRrOiIKIG1zZ3N0ciAiRmVsYWt0aWdhIGFyZ3VtZW50IHRpbGwgZ2l0azoiCiAKLSM6IGdpdGs6OTkyNQorIzogZ2l0azoxMDE3MAogbXNnaWQgIkNvbW1hbmQgbGluZSIKIG1zZ3N0ciAiS29tbWFuZG9yYWQiCmRpZmYgLS1naXQgYS9naXR3ZWIvSU5TVEFMTCBiL2dpdHdlYi9JTlNUQUxMCmluZGV4IDI2OTY3ZTIuLjE4YzljZTMgMTAwNjQ0Ci0tLSBhL2dpdHdlYi9JTlNUQUxMCisrKyBiL2dpdHdlYi9JTlNUQUxMCkBAIC0xNjYsNiArMTY2LDI3IEBACiAgIHNob3dzIHJlcG9zaXRvcmllcyBvbmx5IGlmIHRoaXMgZmlsZSBleGlzdHMgaW4gaXRzIG9iamVjdCBkYXRhYmFzZQogICAoaWYgZGlyZWN0b3J5IGhhcyB0aGUgbWFnaWMgZmlsZSBuYW1lZCAkZXhwb3J0X29rKS4KIAorLSBGaW5hbGx5LCBpdCBpcyBwb3NzaWJsZSB0byBzcGVjaWZ5IGFuIGFyYml0cmFyeSBwZXJsIHN1YnJvdXRpbmUgdGhhdAorICB3aWxsIGJlIGNhbGxlZCBmb3IgZWFjaCBwcm9qZWN0IHRvIGRldGVybWluZSBpZiBpdCBjYW4gYmUgZXhwb3J0ZWQuCisgIFRoZSBzdWJyb3V0aW5lIHJlY2VpdmVzIGFuIGFic29sdXRlIHBhdGggdG8gdGhlIHByb2plY3QgYXMgaXRzIG9ubHkKKyAgcGFyYW1ldGVyLgorCisgIEZvciBleGFtcGxlLCBpZiB5b3UgdXNlIG1vZF9wZXJsIHRvIHJ1biB0aGUgc2NyaXB0LCBhbmQgaGF2ZSBkdW1iCisgIGh0dHAgcHJvdG9jb2wgYXV0aGVudGljYXRpb24gY29uZmlndXJlZCBmb3IgeW91ciByZXBvc2l0b3JpZXMsIHlvdQorICBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgaG9vayB0byBhbGxvdyBhY2Nlc3Mgb25seSBpZiB0aGUgdXNlciBpcworICBhdXRob3JpemVkIHRvIHJlYWQgdGhlIGZpbGVzOgorCisgICAgJGV4cG9ydF9hdXRoX2hvb2sgPSBzdWIgeworICAgICAgICB1c2UgQXBhY2hlMjo6U3ViUmVxdWVzdCAoKTsKKyAgICAgICAgdXNlIEFwYWNoZTI6OkNvbnN0IC1jb21waWxlID0+IHF3KEhUVFBfT0spOworICAgICAgICBteSAkcGF0aCA9ICIkX1swXS9IRUFEIjsKKyAgICAgICAgbXkgJHIgICAgPSBBcGFjaGUyOjpSZXF1ZXN0VXRpbC0+cmVxdWVzdDsKKyAgICAgICAgbXkgJHN1YiAgPSAkci0+bG9va3VwX2ZpbGUoJHBhdGgpOworICAgICAgICByZXR1cm4gJHN1Yi0+ZmlsZW5hbWUgZXEgJHBhdGgKKyAgICAgICAgICAgICYmICRzdWItPnN0YXR1cyA9PSBBcGFjaGUyOjpDb25zdDo6SFRUUF9PSzsKKyAgICB9OworCisKIEdlbmVyYXRpbmcgcHJvamVjdHMgbGlzdCB1c2luZyBnaXR3ZWIKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KIApkaWZmIC0tZ2l0IGEvZ2l0d2ViL1JFQURNRSBiL2dpdHdlYi9SRUFETUUKaW5kZXggODI1MTYyYS4uMTlhZTI4ZSAxMDA2NDQKLS0tIGEvZ2l0d2ViL1JFQURNRQorKysgYi9naXR3ZWIvUkVBRE1FCkBAIC0yMTQsNiArMjE0LDExIEBACiAgICBSZW5hbWUgZGV0ZWN0aW9uIG9wdGlvbnMgZm9yIGdpdC1kaWZmIGFuZCBnaXQtZGlmZi10cmVlLiBCeSBkZWZhdWx0CiAgICAoJy1NJyk7IHNldCBpdCB0byAoJy1DJykgb3IgKCctQycsICctQycpIHRvIGFsc28gZGV0ZWN0IGNvcGllcywgb3IKICAgIHNldCBpdCB0byAoKSBpZiB5b3UgZG9uJ3Qgd2FudCB0byBoYXZlIHJlbmFtZXMgZGV0ZWN0aW9uLgorICogJHByZXZlbnRfeHNzCisgICBJZiB0cnVlLCBzb21lIGdpdHdlYiBmZWF0dXJlcyBhcmUgZGlzYWJsZWQgdG8gcHJldmVudCBjb250ZW50IGluCisgICByZXBvc2l0b3JpZXMgZnJvbSBsYXVuY2hpbmcgY3Jvc3Mtc2l0ZSBzY3JpcHRpbmcgKFhTUykgYXR0YWNrcy4gIFNldCB0aGlzCisgICB0byB0cnVlIGlmIHlvdSBkb24ndCB0cnVzdCB0aGUgY29udGVudCBvZiB5b3VyIHJlcG9zaXRvcmllcy4gVGhlIGRlZmF1bHQKKyAgIGlzIGZhbHNlLgogCiAKIFByb2plY3RzIGxpc3QgZmlsZSBmb3JtYXQKQEAgLTI2MCw3ICsyNjUsOSBAQAogICAgQSAuaHRtbCBmaWxlIChIVE1MIGZyYWdtZW50KSB3aGljaCBpcyBpbmNsdWRlZCBvbiB0aGUgZ2l0d2ViIHByb2plY3QKICAgIHN1bW1hcnkgcGFnZSBpbnNpZGUgPGRpdj4gYmxvY2sgZWxlbWVudC4gWW91IGNhbiB1c2UgaXQgZm9yIGxvbmdlcgogICAgZGVzY3JpcHRpb24gb2YgYSBwcm9qZWN0LCB0byBwcm92aWRlIGxpbmtzIChmb3IgZXhhbXBsZSB0byBwcm9qZWN0J3MKLSAgIGhvbWVwYWdlKSwgZXRjLgorICAgaG9tZXBhZ2UpLCBldGMuIFRoaXMgaXMgcmVjb2duaXplZCBvbmx5IGlmIFhTUyBwcmV2ZW50aW9uIGlzIG9mZgorICAgKCRwcmV2ZW50X3hzcyBpcyBmYWxzZSk7IGEgd2F5IHRvIGluY2x1ZGUgYSByZWFkbWUgc2FmZWx5IHdoZW4gWFNTCisgICBwcmV2ZW50aW9uIGlzIG9uIG1heSBiZSB3b3JrZWQgb3V0IGluIHRoZSBmdXR1cmUuCiAgKiBkZXNjcmlwdGlvbiAob3IgZ2l0d2ViLmRlc2NyaXB0aW9uKQogICAgU2hvcnQgKHNob3J0ZW5lZCBieSBkZWZhdWx0IHRvIDI1IGNoYXJhY3RlcnMgaW4gdGhlIHByb2plY3RzIGxpc3QgcGFnZSkKICAgIHNpbmdsZSBsaW5lIGRlc2NyaXB0aW9uIG9mIGEgcHJvamVjdCAob2YgYSByZXBvc2l0b3J5KS4gUGxhaW4gdGV4dCBmaWxlOwpkaWZmIC0tZ2l0IGEvZ2l0d2ViL2dpdHdlYi5jc3MgYi9naXR3ZWIvZ2l0d2ViLmNzcwppbmRleCBhYTBlZWNhLi5hMDFlYWM4IDEwMDY0NAotLS0gYS9naXR3ZWIvZ2l0d2ViLmNzcworKysgYi9naXR3ZWIvZ2l0d2ViLmNzcwpAQCAtNDM1LDYgKzQzNSwxMCBAQAogCXJpZ2h0OiAxMnB4CiB9CiAKK3AucHJvanNlYXJjaCB7CisJdGV4dC1hbGlnbjogY2VudGVyOworfQorCiB0ZC5saW5lbnIgewogCXRleHQtYWxpZ246IHJpZ2h0OwogfQpAQCAtNDgxLDYgKzQ4NSwxOSBAQAogCWJvcmRlci1jb2xvcjogI2ZmY2NmZiAjZmYwMGVlICNmZjAwZWUgI2ZmY2NmZjsKIH0KIAorc3Bhbi5yZWZzIHNwYW4gYSB7CisJdGV4dC1kZWNvcmF0aW9uOiBub25lOworCWNvbG9yOiBpbmhlcml0OworfQorCitzcGFuLnJlZnMgc3BhbiBhOmhvdmVyIHsKKwl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKK30KKworc3Bhbi5yZWZzIHNwYW4uaW5kaXJlY3QgeworCWZvbnQtc3R5bGU6IGl0YWxpYzsKK30KKwogc3Bhbi5yZWZzIHNwYW4ucmVmIHsKIAliYWNrZ3JvdW5kLWNvbG9yOiAjYWFhYWZmOwogCWJvcmRlci1jb2xvcjogI2NjY2NmZiAjMDAzM2NjICMwMDMzY2MgI2NjY2NmZjsKZGlmZiAtLWdpdCBhL2dpdHdlYi9naXR3ZWIucGVybCBiL2dpdHdlYi9naXR3ZWIucGVybAppbmRleCA4MDQ2NzBjLi5iZGFhNGU5IDEwMDc1NQotLS0gYS9naXR3ZWIvZ2l0d2ViLnBlcmwKKysrIGIvZ2l0d2ViL2dpdHdlYi5wZXJsCkBAIC0yOSw3ICsyOSw5IEBACiAKICMgaWYgd2UncmUgY2FsbGVkIHdpdGggUEFUSF9JTkZPLCB3ZSBoYXZlIHRvIHN0cmlwIHRoYXQKICMgZnJvbSB0aGUgVVJMIHRvIGZpbmQgb3VyIHJlYWwgVVJMCi1pZiAobXkgJHBhdGhfaW5mbyA9ICRFTlZ7IlBBVEhfSU5GTyJ9KSB7CisjIHdlIG1ha2UgJHBhdGhfaW5mbyBnbG9iYWwgYmVjYXVzZSBpdCdzIGFsc28gdXNlZCBsYXRlciBvbgorb3VyICRwYXRoX2luZm8gPSAkRU5WeyJQQVRIX0lORk8ifTsKK2lmICgkcGF0aF9pbmZvKSB7CiAJJG15X3VybCA9fiBzLFxRJHBhdGhfaW5mb1xFJCwsOwogCSRteV91cmkgPX4gcyxcUSRwYXRoX2luZm9cRSQsLDsKIH0KQEAgLTkzLDYgKzk1LDExIEBACiAjIChvbmx5IGVmZmVjdGl2ZSBpZiB0aGlzIHZhcmlhYmxlIGV2YWx1YXRlcyB0byB0cnVlKQogb3VyICRleHBvcnRfb2sgPSAiKytHSVRXRUJfRVhQT1JUX09LKysiOwogCisjIHNob3cgcmVwb3NpdG9yeSBvbmx5IGlmIHRoaXMgc3Vicm91dGluZSByZXR1cm5zIHRydWUKKyMgd2hlbiBnaXZlbiB0aGUgcGF0aCB0byB0aGUgcHJvamVjdCwgZm9yIGV4YW1wbGU6CisjICAgIHN1YiB7IHJldHVybiAtZSAiJF9bMF0vZ2l0LWRhZW1vbi1leHBvcnQtb2siOyB9CitvdXIgJGV4cG9ydF9hdXRoX2hvb2sgPSB1bmRlZjsKKwogIyBvbmx5IGFsbG93IHZpZXdpbmcgb2YgcmVwb3NpdG9yaWVzIGFsc28gc2hvd24gb24gdGhlIG92ZXJ2aWV3IHBhZ2UKIG91ciAkc3RyaWN0X2V4cG9ydCA9ICIrK0dJVFdFQl9TVFJJQ1RfRVhQT1JUKysiOwogCkBAIC0xMjUsNiArMTMyLDEwIEBACiAjIC0gb25lIG1pZ2h0IHdhbnQgdG8gaW5jbHVkZSAnLUInIG9wdGlvbiwgZS5nLiAnLUInLCAnLU0nCiBvdXIgQGRpZmZfb3B0cyA9ICgnLU0nKTsgIyB0YWtlbiBmcm9tIGdpdF9jb21taXQKIAorIyBEaXNhYmxlcyBmZWF0dXJlcyB0aGF0IHdvdWxkIGFsbG93IHJlcG9zaXRvcnkgb3duZXJzIHRvIGluamVjdCBzY3JpcHQgaW50bworIyB0aGUgZ2l0d2ViIGRvbWFpbi4KK291ciAkcHJldmVudF94c3MgPSAwOworCiAjIGluZm9ybWF0aW9uIGFib3V0IHNuYXBzaG90IGZvcm1hdHMgdGhhdCBnaXR3ZWIgaXMgY2FwYWJsZSBvZiBzZXJ2aW5nCiBvdXIgJWtub3duX3NuYXBzaG90X2Zvcm1hdHMgPSAoCiAJIyBuYW1lID0+IHsKQEAgLTE4Myw3ICsxOTQsOSBAQAogCSMgaWYgdGhlcmUgaXMgbm8gJ3N1Yicga2V5IChubyBmZWF0dXJlLXN1YiksIHRoZW4gZmVhdHVyZSBjYW5ub3QgYmUKIAkjIG92ZXJyaWRlbgogCSMKLQkjIHVzZSBnaXR3ZWJfY2hlY2tfZmVhdHVyZSg8ZmVhdHVyZT4pIHRvIGNoZWNrIGlmIDxmZWF0dXJlPiBpcyBlbmFibGVkCisJIyB1c2UgZ2l0d2ViX2dldF9mZWF0dXJlKDxmZWF0dXJlPikgdG8gcmV0cmlldmUgdGhlIDxmZWF0dXJlPiB2YWx1ZQorCSMgKGFuIGFycmF5KSBvciBnaXR3ZWJfY2hlY2tfZmVhdHVyZSg8ZmVhdHVyZT4pIHRvIGNoZWNrIGlmIDxmZWF0dXJlPgorCSMgaXMgZW5hYmxlZAogCiAJIyBFbmFibGUgdGhlICdibGFtZScgYmxvYiB2aWV3LCBzaG93aW5nIHRoZSBsYXN0IGNvbW1pdCB0aGF0IG1vZGlmaWVkCiAJIyBlYWNoIGxpbmUgaW4gdGhlIGZpbGUuIFRoaXMgY2FuIGJlIHZlcnkgQ1BVLWludGVuc2l2ZS4KQEAgLTI4Myw5ICsyOTYsNDcgQEAKIAknZm9ya3MnID0+IHsKIAkJJ292ZXJyaWRlJyA9PiAwLAogCQknZGVmYXVsdCcgPT4gWzBdfSwKKworCSMgSW5zZXJ0IGN1c3RvbSBsaW5rcyB0byB0aGUgYWN0aW9uIGJhciBvZiBhbGwgcHJvamVjdCBwYWdlcy4KKwkjIFRoaXMgZW5hYmxlcyB5b3UgbWFpbmx5IHRvIGxpbmsgdG8gdGhpcmQtcGFydHkgc2NyaXB0cyBpbnRlZ3JhdGluZworCSMgaW50byBnaXR3ZWI7IGUuZy4gZ2l0LWJyb3dzZXIgZm9yIGdyYXBoaWNhbCBoaXN0b3J5IHJlcHJlc2VudGF0aW9uCisJIyBvciBjdXN0b20gd2ViLWJhc2VkIHJlcG9zaXRvcnkgYWRtaW5pc3RyYXRpb24gaW50ZXJmYWNlLgorCisJIyBUaGUgJ2RlZmF1bHQnIHZhbHVlIGNvbnNpc3RzIG9mIGEgbGlzdCBvZiB0cmlwbGV0cyBpbiB0aGUgZm9ybQorCSMgKGxhYmVsLCBsaW5rLCBwb3NpdGlvbikgd2hlcmUgcG9zaXRpb24gaXMgdGhlIGxhYmVsIGFmdGVyIHdoaWNoCisJIyB0byBpbnNlcnQgdGhlIGxpbmsgYW5kIGxpbmsgaXMgYSBmb3JtYXQgc3RyaW5nIHdoZXJlICVuIGV4cGFuZHMKKwkjIHRvIHRoZSBwcm9qZWN0IG5hbWUsICVmIHRvIHRoZSBwcm9qZWN0IHBhdGggd2l0aGluIHRoZSBmaWxlc3lzdGVtLAorCSMgJWggdG8gdGhlIGN1cnJlbnQgaGFzaCAoaCBnaXR3ZWIgcGFyYW1ldGVyKSBhbmQgJWIgdG8gdGhlIGN1cnJlbnQKKwkjIGhhc2ggYmFzZSAoaGIgZ2l0d2ViIHBhcmFtZXRlcik7ICUlIGV4cGFuZHMgdG8gJS4KKworCSMgVG8gZW5hYmxlIHN5c3RlbSB3aWRlIGhhdmUgaW4gJEdJVFdFQl9DT05GSUcgZS5nLgorCSMgJGZlYXR1cmV7J2FjdGlvbnMnfXsnZGVmYXVsdCd9ID0gWygnZ3JhcGhpY2xvZycsCisJIyAJJy9naXQtYnJvd3Nlci9ieS1jb21taXQuaHRtbD9yPSVuJywgJ3N1bW1hcnknKV07CisJIyBQcm9qZWN0IHNwZWNpZmljIG92ZXJyaWRlIGlzIG5vdCBzdXBwb3J0ZWQuCisJJ2FjdGlvbnMnID0+IHsKKwkJJ292ZXJyaWRlJyA9PiAwLAorCQknZGVmYXVsdCcgPT4gW119LAorCisJIyBBbGxvdyBnaXR3ZWIgc2NhbiBwcm9qZWN0IGNvbnRlbnQgdGFncyBkZXNjcmliZWQgaW4gY3RhZ3MvCisJIyBvZiBwcm9qZWN0IHJlcG9zaXRvcnksIGFuZCBkaXNwbGF5IHRoZSBwb3B1bGFyIFdlYiAyLjAtaXNoCisJIyAidGFnIGNsb3VkIiBuZWFyIHRoZSBwcm9qZWN0IGxpc3QuIE5vdGUgdGhhdCB0aGlzIGlzIHNvbWV0aGluZworCSMgQ09NUExFVEVMWSBkaWZmZXJlbnQgZnJvbSB0aGUgbm9ybWFsIEdpdCB0YWdzLgorCisJIyBnaXR3ZWIgYnkgaXRzZWxmIGNhbiBzaG93IGV4aXN0aW5nIHRhZ3MsIGJ1dCBpdCBkb2VzIG5vdCBoYW5kbGUKKwkjIHRhZ2dpbmcgaXRzZWxmOyB5b3UgbmVlZCBhbiBleHRlcm5hbCBhcHBsaWNhdGlvbiBmb3IgdGhhdC4KKwkjIEZvciBhbiBleGFtcGxlIHNjcmlwdCwgY2hlY2sgR2lyb2NjbydzIGNnaS90YWdwcm9qLmNnaS4KKwkjIFlvdSBtYXkgd2FudCB0byBpbnN0YWxsIHRoZSBIVE1MOjpUYWdDbG91ZCBQZXJsIG1vZHVsZSB0byBnZXQKKwkjIGEgcHJldHR5IHRhZyBjbG91ZCBpbnN0ZWFkIG9mIGp1c3QgYSBsaXN0IG9mIHRhZ3MuCisKKwkjIFRvIGVuYWJsZSBzeXN0ZW0gd2lkZSBoYXZlIGluICRHSVRXRUJfQ09ORklHCisJIyAkZmVhdHVyZXsnY3RhZ3MnfXsnZGVmYXVsdCd9ID0gWydwYXRoX3RvX3RhZ19zY3JpcHQnXTsKKwkjIFByb2plY3Qgc3BlY2lmaWMgb3ZlcnJpZGUgaXMgbm90IHN1cHBvcnRlZC4KKwknY3RhZ3MnID0+IHsKKwkJJ292ZXJyaWRlJyA9PiAwLAorCQknZGVmYXVsdCcgPT4gWzBdfSwKICk7CiAKLXN1YiBnaXR3ZWJfY2hlY2tfZmVhdHVyZSB7CitzdWIgZ2l0d2ViX2dldF9mZWF0dXJlIHsKIAlteSAoJG5hbWUpID0gQF87CiAJcmV0dXJuIHVubGVzcyBleGlzdHMgJGZlYXR1cmV7JG5hbWV9OwogCW15ICgkc3ViLCAkb3ZlcnJpZGUsIEBkZWZhdWx0cykgPSAoCkBAIC0zMDAsNiArMzUxLDIyIEBACiAJcmV0dXJuICRzdWItPihAZGVmYXVsdHMpOwogfQogCisjIEEgd3JhcHBlciB0byBjaGVjayBpZiBhIGdpdmVuIGZlYXR1cmUgaXMgZW5hYmxlZC4KKyMgV2l0aCB0aGlzLCB5b3UgY2FuIHNheQorIworIyAgIG15ICRib29sX2ZlYXQgPSBnaXR3ZWJfY2hlY2tfZmVhdHVyZSgnYm9vbF9mZWF0Jyk7CisjICAgZ2l0d2ViX2NoZWNrX2ZlYXR1cmUoJ2Jvb2xfZmVhdCcpIG9yIHNvbWVjb2RlOworIworIyBpbnN0ZWFkIG9mCisjCisjICAgbXkgKCRib29sX2ZlYXQpID0gZ2l0d2ViX2dldF9mZWF0dXJlKCdib29sX2ZlYXQnKTsKKyMgICAoZ2l0d2ViX2dldF9mZWF0dXJlKCdib29sX2ZlYXQnKSlbMF0gb3Igc29tZWNvZGU7CisjCitzdWIgZ2l0d2ViX2NoZWNrX2ZlYXR1cmUgeworCXJldHVybiAoZ2l0d2ViX2dldF9mZWF0dXJlKEBfKSlbMF07Cit9CisKKwogc3ViIGZlYXR1cmVfYmxhbWUgewogCW15ICgkdmFsKSA9IGdpdF9nZXRfcHJvamVjdF9jb25maWcoJ2JsYW1lJywgJy0tYm9vbCcpOwogCkBAIC0zNjEsNyArNDI4LDggQEAKIHN1YiBjaGVja19leHBvcnRfb2sgewogCW15ICgkZGlyKSA9IEBfOwogCXJldHVybiAoY2hlY2tfaGVhZF9saW5rKCRkaXIpICYmCi0JCSghJGV4cG9ydF9vayB8fCAtZSAiJGRpci8kZXhwb3J0X29rIikpOworCQkoISRleHBvcnRfb2sgfHwgLWUgIiRkaXIvJGV4cG9ydF9vayIpICYmCisJCSghJGV4cG9ydF9hdXRoX2hvb2sgfHwgJGV4cG9ydF9hdXRoX2hvb2stPigkZGlyKSkpOwogfQogCiAjIHByb2Nlc3MgYWx0ZXJuYXRlIG5hbWVzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CkBAIC0zOTEsMTYyICs0NTksNDMgQEAKIAogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIGlucHV0IHZhbGlkYXRpb24gYW5kIGRpc3BhdGNoCi1vdXIgJGFjdGlvbiA9ICRjZ2ktPnBhcmFtKCdhJyk7Ci1pZiAoZGVmaW5lZCAkYWN0aW9uKSB7Ci0JaWYgKCRhY3Rpb24gPX4gbS9bXjAtOWEtekEtWlwuXC1fXS8pIHsKLQkJZGllX2Vycm9yKDQwMCwgIkludmFsaWQgYWN0aW9uIHBhcmFtZXRlciIpOwotCX0KLX0KIAotIyBwYXJhbWV0ZXJzIHdoaWNoIGFyZSBwYXRobmFtZXMKLW91ciAkcHJvamVjdCA9ICRjZ2ktPnBhcmFtKCdwJyk7Ci1pZiAoZGVmaW5lZCAkcHJvamVjdCkgewotCWlmICghdmFsaWRhdGVfcGF0aG5hbWUoJHByb2plY3QpIHx8Ci0JICAgICEoLWQgIiRwcm9qZWN0cm9vdC8kcHJvamVjdCIpIHx8Ci0JICAgICFjaGVja19oZWFkX2xpbmsoIiRwcm9qZWN0cm9vdC8kcHJvamVjdCIpIHx8Ci0JICAgICgkZXhwb3J0X29rICYmICEoLWUgIiRwcm9qZWN0cm9vdC8kcHJvamVjdC8kZXhwb3J0X29rIikpIHx8Ci0JICAgICgkc3RyaWN0X2V4cG9ydCAmJiAhcHJvamVjdF9pbl9saXN0KCRwcm9qZWN0KSkpIHsKLQkJdW5kZWYgJHByb2plY3Q7Ci0JCWRpZV9lcnJvcig0MDQsICJObyBzdWNoIHByb2plY3QiKTsKLQl9Ci19CisjIGlucHV0IHBhcmFtZXRlcnMgY2FuIGJlIGNvbGxlY3RlZCBmcm9tIGEgdmFyaWV0eSBvZiBzb3VyY2VzIChwcmVzZW50bHksIENHSQorIyBhbmQgUEFUSF9JTkZPKSwgc28gd2UgZGVmaW5lIGFuICVpbnB1dF9wYXJhbXMgaGFzaCB0aGF0IGNvbGxlY3RzIHRoZW0gYWxsCisjIHRvZ2V0aGVyIGR1cmluZyB2YWxpZGF0aW9uOiB0aGlzIGFsbG93cyBzdWJzZXF1ZW50IHVzZXMgKGUuZy4gaHJlZigpKSB0byBiZQorIyBhZ25vc3RpYyBvZiB0aGUgcGFyYW1ldGVyIG9yaWdpbgogCi1vdXIgJGZpbGVfbmFtZSA9ICRjZ2ktPnBhcmFtKCdmJyk7Ci1pZiAoZGVmaW5lZCAkZmlsZV9uYW1lKSB7Ci0JaWYgKCF2YWxpZGF0ZV9wYXRobmFtZSgkZmlsZV9uYW1lKSkgewotCQlkaWVfZXJyb3IoNDAwLCAiSW52YWxpZCBmaWxlIHBhcmFtZXRlciIpOwotCX0KLX0KK291ciAlaW5wdXRfcGFyYW1zID0gKCk7CiAKLW91ciAkZmlsZV9wYXJlbnQgPSAkY2dpLT5wYXJhbSgnZnAnKTsKLWlmIChkZWZpbmVkICRmaWxlX3BhcmVudCkgewotCWlmICghdmFsaWRhdGVfcGF0aG5hbWUoJGZpbGVfcGFyZW50KSkgewotCQlkaWVfZXJyb3IoNDAwLCAiSW52YWxpZCBmaWxlIHBhcmVudCBwYXJhbWV0ZXIiKTsKLQl9Ci19CisjIGlucHV0IHBhcmFtZXRlcnMgYXJlIHN0b3JlZCB3aXRoIHRoZSBsb25nIHBhcmFtZXRlciBuYW1lIGFzIGtleS4gVGhpcyB3aWxsCisjIGFsc28gYmUgdXNlZCBpbiB0aGUgaHJlZiBzdWJyb3V0aW5lIHRvIGNvbnZlcnQgcGFyYW1ldGVycyB0byB0aGVpciBDR0kKKyMgZXF1aXZhbGVudCwgYW5kIHNpbmNlIHRoZSBocmVmKCkgdXNhZ2UgaXMgdGhlIG1vc3QgZnJlcXVlbnQgb25lLCB3ZSBzdG9yZQorIyB0aGUgbmFtZSAtPiBDR0kga2V5IG1hcHBpbmcgaGVyZSwgaW5zdGVhZCBvZiB0aGUgcmV2ZXJzZS4KKyMKKyMgWFhYOiBXYXJuaW5nOiBJZiB5b3UgdG91Y2ggdGhpcywgY2hlY2sgdGhlIHNlYXJjaCBmb3JtIGZvciB1cGRhdGluZywKKyMgdG9vLgogCi0jIHBhcmFtZXRlcnMgd2hpY2ggYXJlIHJlZm5hbWVzCi1vdXIgJGhhc2ggPSAkY2dpLT5wYXJhbSgnaCcpOwotaWYgKGRlZmluZWQgJGhhc2gpIHsKLQlpZiAoIXZhbGlkYXRlX3JlZm5hbWUoJGhhc2gpKSB7Ci0JCWRpZV9lcnJvcig0MDAsICJJbnZhbGlkIGhhc2ggcGFyYW1ldGVyIik7Ci0JfQotfQotCi1vdXIgJGhhc2hfcGFyZW50ID0gJGNnaS0+cGFyYW0oJ2hwJyk7Ci1pZiAoZGVmaW5lZCAkaGFzaF9wYXJlbnQpIHsKLQlpZiAoIXZhbGlkYXRlX3JlZm5hbWUoJGhhc2hfcGFyZW50KSkgewotCQlkaWVfZXJyb3IoNDAwLCAiSW52YWxpZCBoYXNoIHBhcmVudCBwYXJhbWV0ZXIiKTsKLQl9Ci19Ci0KLW91ciAkaGFzaF9iYXNlID0gJGNnaS0+cGFyYW0oJ2hiJyk7Ci1pZiAoZGVmaW5lZCAkaGFzaF9iYXNlKSB7Ci0JaWYgKCF2YWxpZGF0ZV9yZWZuYW1lKCRoYXNoX2Jhc2UpKSB7Ci0JCWRpZV9lcnJvcig0MDAsICJJbnZhbGlkIGhhc2ggYmFzZSBwYXJhbWV0ZXIiKTsKLQl9Ci19Ci0KLW15ICVhbGxvd2VkX29wdGlvbnMgPSAoCi0JIi0tbm8tbWVyZ2VzIiA9PiBbIHF3KHJzcyBhdG9tIGxvZyBzaG9ydGxvZyBoaXN0b3J5KSBdLAorb3VyIEBjZ2lfcGFyYW1fbWFwcGluZyA9ICgKKwlwcm9qZWN0ID0+ICJwIiwKKwlhY3Rpb24gPT4gImEiLAorCWZpbGVfbmFtZSA9PiAiZiIsCisJZmlsZV9wYXJlbnQgPT4gImZwIiwKKwloYXNoID0+ICJoIiwKKwloYXNoX3BhcmVudCA9PiAiaHAiLAorCWhhc2hfYmFzZSA9PiAiaGIiLAorCWhhc2hfcGFyZW50X2Jhc2UgPT4gImhwYiIsCisJcGFnZSA9PiAicGciLAorCW9yZGVyID0+ICJvIiwKKwlzZWFyY2h0ZXh0ID0+ICJzIiwKKwlzZWFyY2h0eXBlID0+ICJzdCIsCisJc25hcHNob3RfZm9ybWF0ID0+ICJzZiIsCisJZXh0cmFfb3B0aW9ucyA9PiAib3B0IiwKKwlzZWFyY2hfdXNlX3JlZ2V4cCA9PiAic3IiLAogKTsKK291ciAlY2dpX3BhcmFtX21hcHBpbmcgPSBAY2dpX3BhcmFtX21hcHBpbmc7CiAKLW91ciBAZXh0cmFfb3B0aW9ucyA9ICRjZ2ktPnBhcmFtKCdvcHQnKTsKLWlmIChkZWZpbmVkIEBleHRyYV9vcHRpb25zKSB7Ci0JZm9yZWFjaCBteSAkb3B0IChAZXh0cmFfb3B0aW9ucykgewotCQlpZiAobm90IGV4aXN0cyAkYWxsb3dlZF9vcHRpb25zeyRvcHR9KSB7Ci0JCQlkaWVfZXJyb3IoNDAwLCAiSW52YWxpZCBvcHRpb24gcGFyYW1ldGVyIik7Ci0JCX0KLQkJaWYgKG5vdCBncmVwKC9eJGFjdGlvbiQvLCBAeyRhbGxvd2VkX29wdGlvbnN7JG9wdH19KSkgewotCQkJZGllX2Vycm9yKDQwMCwgIkludmFsaWQgb3B0aW9uIHBhcmFtZXRlciBmb3IgdGhpcyBhY3Rpb24iKTsKLQkJfQotCX0KLX0KLQotb3VyICRoYXNoX3BhcmVudF9iYXNlID0gJGNnaS0+cGFyYW0oJ2hwYicpOwotaWYgKGRlZmluZWQgJGhhc2hfcGFyZW50X2Jhc2UpIHsKLQlpZiAoIXZhbGlkYXRlX3JlZm5hbWUoJGhhc2hfcGFyZW50X2Jhc2UpKSB7Ci0JCWRpZV9lcnJvcig0MDAsICJJbnZhbGlkIGhhc2ggcGFyZW50IGJhc2UgcGFyYW1ldGVyIik7Ci0JfQotfQotCi0jIG90aGVyIHBhcmFtZXRlcnMKLW91ciAkcGFnZSA9ICRjZ2ktPnBhcmFtKCdwZycpOwotaWYgKGRlZmluZWQgJHBhZ2UpIHsKLQlpZiAoJHBhZ2UgPX4gbS9bXjAtOV0vKSB7Ci0JCWRpZV9lcnJvcig0MDAsICJJbnZhbGlkIHBhZ2UgcGFyYW1ldGVyIik7Ci0JfQotfQotCi1vdXIgJHNlYXJjaHR5cGUgPSAkY2dpLT5wYXJhbSgnc3QnKTsKLWlmIChkZWZpbmVkICRzZWFyY2h0eXBlKSB7Ci0JaWYgKCRzZWFyY2h0eXBlID1+IG0vW15hLXpdLykgewotCQlkaWVfZXJyb3IoNDAwLCAiSW52YWxpZCBzZWFyY2h0eXBlIHBhcmFtZXRlciIpOwotCX0KLX0KLQotb3VyICRzZWFyY2hfdXNlX3JlZ2V4cCA9ICRjZ2ktPnBhcmFtKCdzcicpOwotCi1vdXIgJHNlYXJjaHRleHQgPSAkY2dpLT5wYXJhbSgncycpOwotb3VyICRzZWFyY2hfcmVnZXhwOwotaWYgKGRlZmluZWQgJHNlYXJjaHRleHQpIHsKLQlpZiAobGVuZ3RoKCRzZWFyY2h0ZXh0KSA8IDIpIHsKLQkJZGllX2Vycm9yKDQwMywgIkF0IGxlYXN0IHR3byBjaGFyYWN0ZXJzIGFyZSByZXF1aXJlZCBmb3Igc2VhcmNoIHBhcmFtZXRlciIpOwotCX0KLQkkc2VhcmNoX3JlZ2V4cCA9ICRzZWFyY2hfdXNlX3JlZ2V4cCA/ICRzZWFyY2h0ZXh0IDogcXVvdGVtZXRhICRzZWFyY2h0ZXh0OwotfQotCi0jIG5vdyByZWFkIFBBVEhfSU5GTyBhbmQgdXNlIGl0IGFzIGFsdGVybmF0aXZlIHRvIHBhcmFtZXRlcnMKLXN1YiBldmFsdWF0ZV9wYXRoX2luZm8gewotCXJldHVybiBpZiBkZWZpbmVkICRwcm9qZWN0OwotCW15ICRwYXRoX2luZm8gPSAkRU5WeyJQQVRIX0lORk8ifTsKLQlyZXR1cm4gaWYgISRwYXRoX2luZm87Ci0JJHBhdGhfaW5mbyA9fiBzLF4vKywsOwotCXJldHVybiBpZiAhJHBhdGhfaW5mbzsKLQkjIGZpbmQgd2hpY2ggcGFydCBvZiBQQVRIX0lORk8gaXMgcHJvamVjdAotCSRwcm9qZWN0ID0gJHBhdGhfaW5mbzsKLQkkcHJvamVjdCA9fiBzLC8rJCwsOwotCXdoaWxlICgkcHJvamVjdCAmJiAhY2hlY2tfaGVhZF9saW5rKCIkcHJvamVjdHJvb3QvJHByb2plY3QiKSkgewotCQkkcHJvamVjdCA9fiBzLC8qW14vXSokLCw7Ci0JfQotCSMgdmFsaWRhdGUgcHJvamVjdAotCSRwcm9qZWN0ID0gdmFsaWRhdGVfcGF0aG5hbWUoJHByb2plY3QpOwotCWlmICghJHByb2plY3QgfHwKLQkgICAgKCRleHBvcnRfb2sgJiYgIS1lICIkcHJvamVjdHJvb3QvJHByb2plY3QvJGV4cG9ydF9vayIpIHx8Ci0JICAgICgkc3RyaWN0X2V4cG9ydCAmJiAhcHJvamVjdF9pbl9saXN0KCRwcm9qZWN0KSkpIHsKLQkJdW5kZWYgJHByb2plY3Q7Ci0JCXJldHVybjsKLQl9Ci0JIyBkbyBub3QgY2hhbmdlIGFueSBwYXJhbWV0ZXJzIGlmIGFuIGFjdGlvbiBpcyBnaXZlbiB1c2luZyB0aGUgcXVlcnkgc3RyaW5nCi0JcmV0dXJuIGlmICRhY3Rpb247Ci0JJHBhdGhfaW5mbyA9fiBzLF5cUSRwcm9qZWN0XEUvKiwsOwotCW15ICgkcmVmbmFtZSwgJHBhdGhuYW1lKSA9IHNwbGl0KC86LywgJHBhdGhfaW5mbywgMik7Ci0JaWYgKGRlZmluZWQgJHBhdGhuYW1lKSB7Ci0JCSMgd2UgZ290ICJwcm9qZWN0LmdpdC9icmFuY2g6ZmlsZW5hbWUiIG9yICJwcm9qZWN0LmdpdC9icmFuY2g6ZGlyLyIKLQkJIyB3ZSBjb3VsZCB1c2UgZ2l0X2dldF90eXBlKGJyYW5jaDpwYXRobmFtZSksIGJ1dCBpdCBuZWVkcyAkZ2l0X2RpcgotCQkkcGF0aG5hbWUgPX4gcyxeLyssLDsKLQkJaWYgKCEkcGF0aG5hbWUgfHwgc3Vic3RyKCRwYXRobmFtZSwgLTEpIGVxICIvIikgewotCQkJJGFjdGlvbiAgfHw9ICJ0cmVlIjsKLQkJCSRwYXRobmFtZSA9fiBzLC8kLCw7Ci0JCX0gZWxzZSB7Ci0JCQkkYWN0aW9uICB8fD0gImJsb2JfcGxhaW4iOwotCQl9Ci0JCSRoYXNoX2Jhc2UgfHw9IHZhbGlkYXRlX3JlZm5hbWUoJHJlZm5hbWUpOwotCQkkZmlsZV9uYW1lIHx8PSB2YWxpZGF0ZV9wYXRobmFtZSgkcGF0aG5hbWUpOwotCX0gZWxzaWYgKGRlZmluZWQgJHJlZm5hbWUpIHsKLQkJIyB3ZSBnb3QgInByb2plY3QuZ2l0L2JyYW5jaCIKLQkJJGFjdGlvbiB8fD0gInNob3J0bG9nIjsKLQkJJGhhc2ggICB8fD0gdmFsaWRhdGVfcmVmbmFtZSgkcmVmbmFtZSk7Ci0JfQotfQotZXZhbHVhdGVfcGF0aF9pbmZvKCk7Ci0KLSMgcGF0aCB0byB0aGUgY3VycmVudCBnaXQgcmVwb3NpdG9yeQotb3VyICRnaXRfZGlyOwotJGdpdF9kaXIgPSAiJHByb2plY3Ryb290LyRwcm9qZWN0IiBpZiAkcHJvamVjdDsKLQotIyBkaXNwYXRjaAotbXkgJWFjdGlvbnMgPSAoCisjIHdlIHdpbGwgYWxzbyBuZWVkIHRvIGtub3cgdGhlIHBvc3NpYmxlIGFjdGlvbnMsIGZvciB2YWxpZGF0aW9uCitvdXIgJWFjdGlvbnMgPSAoCiAJImJsYW1lIiA9PiBcJmdpdF9ibGFtZSwKIAkiYmxvYmRpZmYiID0+IFwmZ2l0X2Jsb2JkaWZmLAogCSJibG9iZGlmZl9wbGFpbiIgPT4gXCZnaXRfYmxvYmRpZmZfcGxhaW4sCkBAIC01NzYsNiArNTI1LDI3NSBAQAogCSJwcm9qZWN0X2luZGV4IiA9PiBcJmdpdF9wcm9qZWN0X2luZGV4LAogKTsKIAorIyBmaW5hbGx5LCB3ZSBoYXZlIHRoZSBoYXNoIG9mIGFsbG93ZWQgZXh0cmFfb3B0aW9ucyBmb3IgdGhlIGNvbW1hbmRzIHRoYXQKKyMgYWxsb3cgdGhlbQorb3VyICVhbGxvd2VkX29wdGlvbnMgPSAoCisJIi0tbm8tbWVyZ2VzIiA9PiBbIHF3KHJzcyBhdG9tIGxvZyBzaG9ydGxvZyBoaXN0b3J5KSBdLAorKTsKKworIyBmaWxsICVpbnB1dF9wYXJhbXMgd2l0aCB0aGUgQ0dJIHBhcmFtZXRlcnMuIEFsbCB2YWx1ZXMgZXhjZXB0IGZvciAnb3B0JworIyBzaG91bGQgYmUgc2luZ2xlIHZhbHVlcywgYnV0IG9wdCBjYW4gYmUgYW4gYXJyYXkuIFdlIHNob3VsZCBwcm9iYWJseQorIyBidWlsZCBhbiBhcnJheSBvZiBwYXJhbWV0ZXJzIHRoYXQgY2FuIGJlIG11bHRpLXZhbHVlZCwgYnV0IHNpbmNlIGZvciB0aGUgdGltZQorIyBiZWluZyBpdCdzIG9ubHkgdGhpcyBvbmUsIHdlIGp1c3Qgc2luZ2xlIGl0IG91dAord2hpbGUgKG15ICgkbmFtZSwgJHN5bWJvbCkgPSBlYWNoICVjZ2lfcGFyYW1fbWFwcGluZykgeworCWlmICgkc3ltYm9sIGVxICdvcHQnKSB7CisJCSRpbnB1dF9wYXJhbXN7JG5hbWV9ID0gWyAkY2dpLT5wYXJhbSgkc3ltYm9sKSBdOworCX0gZWxzZSB7CisJCSRpbnB1dF9wYXJhbXN7JG5hbWV9ID0gJGNnaS0+cGFyYW0oJHN5bWJvbCk7CisJfQorfQorCisjIG5vdyByZWFkIFBBVEhfSU5GTyBhbmQgdXBkYXRlIHRoZSBwYXJhbWV0ZXIgbGlzdCBmb3IgbWlzc2luZyBwYXJhbWV0ZXJzCitzdWIgZXZhbHVhdGVfcGF0aF9pbmZvIHsKKwlyZXR1cm4gaWYgZGVmaW5lZCAkaW5wdXRfcGFyYW1zeydwcm9qZWN0J307CisJcmV0dXJuIGlmICEkcGF0aF9pbmZvOworCSRwYXRoX2luZm8gPX4gcyxeLyssLDsKKwlyZXR1cm4gaWYgISRwYXRoX2luZm87CisKKwkjIGZpbmQgd2hpY2ggcGFydCBvZiBQQVRIX0lORk8gaXMgcHJvamVjdAorCW15ICRwcm9qZWN0ID0gJHBhdGhfaW5mbzsKKwkkcHJvamVjdCA9fiBzLC8rJCwsOworCXdoaWxlICgkcHJvamVjdCAmJiAhY2hlY2tfaGVhZF9saW5rKCIkcHJvamVjdHJvb3QvJHByb2plY3QiKSkgeworCQkkcHJvamVjdCA9fiBzLC8qW14vXSokLCw7CisJfQorCXJldHVybiB1bmxlc3MgJHByb2plY3Q7CisJJGlucHV0X3BhcmFtc3sncHJvamVjdCd9ID0gJHByb2plY3Q7CisKKwkjIGRvIG5vdCBjaGFuZ2UgYW55IHBhcmFtZXRlcnMgaWYgYW4gYWN0aW9uIGlzIGdpdmVuIHVzaW5nIHRoZSBxdWVyeSBzdHJpbmcKKwlyZXR1cm4gaWYgJGlucHV0X3BhcmFtc3snYWN0aW9uJ307CisJJHBhdGhfaW5mbyA9fiBzLF5cUSRwcm9qZWN0XEUvKiwsOworCisJIyBuZXh0LCBjaGVjayBpZiB3ZSBoYXZlIGFuIGFjdGlvbgorCW15ICRhY3Rpb24gPSAkcGF0aF9pbmZvOworCSRhY3Rpb24gPX4gcywvLiokLCw7CisJaWYgKGV4aXN0cyAkYWN0aW9uc3skYWN0aW9ufSkgeworCQkkcGF0aF9pbmZvID1+IHMsXiRhY3Rpb24vKiwsOworCQkkaW5wdXRfcGFyYW1zeydhY3Rpb24nfSA9ICRhY3Rpb247CisJfQorCisJIyBsaXN0IG9mIGFjdGlvbnMgdGhhdCB3YW50IGhhc2hfYmFzZSBpbnN0ZWFkIG9mIGhhc2gsIGJ1dCBjYW4gaGF2ZSBubworCSMgcGF0aG5hbWUgKGYpIHBhcmFtZXRlcgorCW15IEB3YW50c19iYXNlID0gKAorCQkndHJlZScsCisJCSdoaXN0b3J5JywKKwkpOworCisJIyB3ZSB3YW50IHRvIGNhdGNoCisJIyBbJGhhc2hfcGFyZW50X2Jhc2VbOiRmaWxlX3BhcmVudF0uLl0kaGFzaF9wYXJlbnRbOiRmaWxlX25hbWVdCisJbXkgKCRwYXJlbnRyZWZuYW1lLCAkcGFyZW50cGF0aG5hbWUsICRyZWZuYW1lLCAkcGF0aG5hbWUpID0KKwkJKCRwYXRoX2luZm8gPX4gL14oPzooLis/KSg/OjooLispKT9cLlwuKT8oLis/KSg/OjooLispKT8kLyk7CisKKwkjIGZpcnN0LCBhbmFseXplIHRoZSAnY3VycmVudCcgcGFydAorCWlmIChkZWZpbmVkICRwYXRobmFtZSkgeworCQkjIHdlIGdvdCAiYnJhbmNoOmZpbGVuYW1lIiBvciAiYnJhbmNoOmRpci8iCisJCSMgd2UgY291bGQgdXNlIGdpdF9nZXRfdHlwZShicmFuY2g6cGF0aG5hbWUpLCBidXQ6CisJCSMgLSBpdCBuZWVkcyAkZ2l0X2RpcgorCQkjIC0gaXQgZG9lcyBhIGdpdCgpIGNhbGwKKwkJIyAtIHRoZSBjb252ZW50aW9uIG9mIHRlcm1pbmF0aW5nIGRpcmVjdG9yaWVzIHdpdGggYSBzbGFzaAorCQkjICAgbWFrZXMgaXQgc3VwZXJmbHVvdXMKKwkJIyAtIGVtYmVkZGluZyB0aGUgYWN0aW9uIGluIHRoZSBQQVRIX0lORk8gd291bGQgbWFrZSBpdCBldmVuCisJCSMgICBtb3JlIHN1cGVyZmx1b3VzCisJCSRwYXRobmFtZSA9fiBzLF4vKywsOworCQlpZiAoISRwYXRobmFtZSB8fCBzdWJzdHIoJHBhdGhuYW1lLCAtMSkgZXEgIi8iKSB7CisJCQkkaW5wdXRfcGFyYW1zeydhY3Rpb24nfSB8fD0gInRyZWUiOworCQkJJHBhdGhuYW1lID1+IHMsLyQsLDsKKwkJfSBlbHNlIHsKKwkJCSMgdGhlIGRlZmF1bHQgYWN0aW9uIGRlcGVuZHMgb24gd2hldGhlciB3ZSBoYWQgcGFyZW50IGluZm8KKwkJCSMgb3Igbm90CisJCQlpZiAoJHBhcmVudHJlZm5hbWUpIHsKKwkJCQkkaW5wdXRfcGFyYW1zeydhY3Rpb24nfSB8fD0gImJsb2JkaWZmX3BsYWluIjsKKwkJCX0gZWxzZSB7CisJCQkJJGlucHV0X3BhcmFtc3snYWN0aW9uJ30gfHw9ICJibG9iX3BsYWluIjsKKwkJCX0KKwkJfQorCQkkaW5wdXRfcGFyYW1zeydoYXNoX2Jhc2UnfSB8fD0gJHJlZm5hbWU7CisJCSRpbnB1dF9wYXJhbXN7J2ZpbGVfbmFtZSd9IHx8PSAkcGF0aG5hbWU7CisJfSBlbHNpZiAoZGVmaW5lZCAkcmVmbmFtZSkgeworCQkjIHdlIGdvdCAiYnJhbmNoIi4gSW4gdGhpcyBjYXNlIHdlIGhhdmUgdG8gY2hvb3NlIGlmIHdlIGhhdmUgdG8KKwkJIyBzZXQgaGFzaCBvciBoYXNoX2Jhc2UuCisJCSMKKwkJIyBNb3N0IG9mIHRoZSBhY3Rpb25zIHdpdGhvdXQgYSBwYXRobmFtZSBvbmx5IHdhbnQgaGFzaCB0byBiZQorCQkjIHNldCwgZXhjZXB0IGZvciB0aGUgb25lcyBzcGVjaWZpZWQgaW4gQHdhbnRzX2Jhc2UgdGhhdCB3YW50CisJCSMgaGFzaF9iYXNlIGluc3RlYWQuIEl0IHNob3VsZCBhbHNvIGJlIG5vdGVkIHRoYXQgaGFuZC1jcmFmdGVkCisJCSMgbGlua3MgaGF2aW5nICdoaXN0b3J5JyBhcyBhbiBhY3Rpb24gYW5kIG5vIHBhdGhuYW1lIG9yIGhhc2gKKwkJIyBzZXQgd2lsbCBmYWlsLCBidXQgdGhhdCBoYXBwZW5zIHJlZ2FyZGxlc3Mgb2YgUEFUSF9JTkZPLgorCQkkaW5wdXRfcGFyYW1zeydhY3Rpb24nfSB8fD0gInNob3J0bG9nIjsKKwkJaWYgKGdyZXAgeyAkXyBlcSAkaW5wdXRfcGFyYW1zeydhY3Rpb24nfSB9IEB3YW50c19iYXNlKSB7CisJCQkkaW5wdXRfcGFyYW1zeydoYXNoX2Jhc2UnfSB8fD0gJHJlZm5hbWU7CisJCX0gZWxzZSB7CisJCQkkaW5wdXRfcGFyYW1zeydoYXNoJ30gfHw9ICRyZWZuYW1lOworCQl9CisJfQorCisJIyBuZXh0LCBoYW5kbGUgdGhlICdwYXJlbnQnIHBhcnQsIGlmIHByZXNlbnQKKwlpZiAoZGVmaW5lZCAkcGFyZW50cmVmbmFtZSkgeworCQkjIGEgbWlzc2luZyBwYXRoc3BlYyBkZWZhdWx0cyB0byB0aGUgJ2N1cnJlbnQnIGZpbGVuYW1lLCBhbGxvd2luZyBlLmcuCisJCSMgc29tZXByb2plY3QvYmxvYmRpZmYvb2xkcmV2Li5uZXdyZXY6L2ZpbGVuYW1lCisJCWlmICgkcGFyZW50cGF0aG5hbWUpIHsKKwkJCSRwYXJlbnRwYXRobmFtZSA9fiBzLF4vKywsOworCQkJJHBhcmVudHBhdGhuYW1lID1+IHMsLyQsLDsKKwkJCSRpbnB1dF9wYXJhbXN7J2ZpbGVfcGFyZW50J30gfHw9ICRwYXJlbnRwYXRobmFtZTsKKwkJfSBlbHNlIHsKKwkJCSRpbnB1dF9wYXJhbXN7J2ZpbGVfcGFyZW50J30gfHw9ICRpbnB1dF9wYXJhbXN7J2ZpbGVfbmFtZSd9OworCQl9CisJCSMgd2UgYXNzdW1lIHRoYXQgaGFzaF9wYXJlbnRfYmFzZSBpcyB3YW50ZWQgaWYgYSBwYXRoIHdhcyBzcGVjaWZpZWQsCisJCSMgb3IgaWYgdGhlIGFjdGlvbiB3YW50cyBoYXNoX2Jhc2UgaW5zdGVhZCBvZiBoYXNoCisJCWlmIChkZWZpbmVkICRpbnB1dF9wYXJhbXN7J2ZpbGVfcGFyZW50J30gfHwKKwkJCWdyZXAgeyAkXyBlcSAkaW5wdXRfcGFyYW1zeydhY3Rpb24nfSB9IEB3YW50c19iYXNlKSB7CisJCQkkaW5wdXRfcGFyYW1zeydoYXNoX3BhcmVudF9iYXNlJ30gfHw9ICRwYXJlbnRyZWZuYW1lOworCQl9IGVsc2UgeworCQkJJGlucHV0X3BhcmFtc3snaGFzaF9wYXJlbnQnfSB8fD0gJHBhcmVudHJlZm5hbWU7CisJCX0KKwl9CisKKwkjIGZvciB0aGUgc25hcHNob3QgYWN0aW9uLCB3ZSBhbGxvdyBVUkxzIGluIHRoZSBmb3JtCisJIyAkcHJvamVjdC9zbmFwc2hvdC8kaGFzaC5leHQKKwkjIHdoZXJlIC5leHQgZGV0ZXJtaW5lcyB0aGUgc25hcHNob3QgYW5kIGdldHMgcmVtb3ZlZCBmcm9tIHRoZQorCSMgcGFzc2VkICRyZWZuYW1lIHRvIHByb3ZpZGUgdGhlICRoYXNoLgorCSMKKwkjIFRvIGJlIGFibGUgdG8gdGVsbCB0aGF0ICRyZWZuYW1lIGluY2x1ZGVzIHRoZSBmb3JtYXQgZXh0ZW5zaW9uLCB3ZQorCSMgcmVxdWlyZSB0aGUgZm9sbG93aW5nIHR3byBjb25kaXRpb25zIHRvIGJlIHNhdGlzZmllZDoKKwkjIC0gdGhlIGhhc2ggaW5wdXQgcGFyYW1ldGVyIE1VU1QgaGF2ZSBiZWVuIHNldCBmcm9tIHRoZSAkcmVmbmFtZSBwYXJ0CisJIyAgIG9mIHRoZSBVUkwgKGkuZS4gdGhleSBtdXN0IGJlIGVxdWFsKQorCSMgLSB0aGUgc25hcHNob3QgZm9ybWF0IE1VU1QgTk9UIGhhdmUgYmVlbiBkZWZpbmVkIGFscmVhZHkgKGUuZy4gZnJvbQorCSMgICBDR0kgcGFyYW1ldGVyIHNmKQorCSMgSXQncyBhbHNvIHVzZWxlc3MgdG8gdHJ5IGFueSBtYXRjaGluZyB1bmxlc3MgJHJlZm5hbWUgaGFzIGEgZG90LAorCSMgc28gd2UgY2hlY2sgZm9yIHRoYXQgdG9vCisJaWYgKGRlZmluZWQgJGlucHV0X3BhcmFtc3snYWN0aW9uJ30gJiYKKwkJJGlucHV0X3BhcmFtc3snYWN0aW9uJ30gZXEgJ3NuYXBzaG90JyAmJgorCQlkZWZpbmVkICRyZWZuYW1lICYmIGluZGV4KCRyZWZuYW1lLCAnLicpICE9IC0xICYmCisJCSRyZWZuYW1lIGVxICRpbnB1dF9wYXJhbXN7J2hhc2gnfSAmJgorCQkhZGVmaW5lZCAkaW5wdXRfcGFyYW1zeydzbmFwc2hvdF9mb3JtYXQnfSkgeworCQkjIFdlIGxvb3Agb3ZlciB0aGUga25vd24gc25hcHNob3QgZm9ybWF0cywgY2hlY2tpbmcgZm9yCisJCSMgZXh0ZW5zaW9ucy4gQWxsb3dlZCBleHRlbnNpb25zIGFyZSBib3RoIHRoZSBkZWZpbmVkIHN1ZmZpeAorCQkjICh3aGljaCBpbmNsdWRlcyB0aGUgaW5pdGlhbCBkb3QgYWxyZWFkeSkgYW5kIHRoZSBzbmFwc2hvdAorCQkjIGZvcm1hdCBrZXkgaXRzZWxmLCB3aXRoIGEgcHJlcGVuZGVkIGRvdAorCQl3aGlsZSAobXkgKCRmbXQsICVvcHQpID0gZWFjaCAla25vd25fc25hcHNob3RfZm9ybWF0cykgeworCQkJbXkgJGhhc2ggPSAkcmVmbmFtZTsKKwkJCW15ICRzZng7CisJCQkkaGFzaCA9fiBzLyhcUSRvcHR7J3N1ZmZpeCd9XEV8XFEuJGZtdFxFKSQvLzsKKwkJCW5leHQgdW5sZXNzICRzZnggPSAkMTsKKwkJCSMgYSB2YWxpZCBzdWZmaXggd2FzIGZvdW5kLCBzbyBzZXQgdGhlIHNuYXBzaG90IGZvcm1hdAorCQkJIyBhbmQgcmVzZXQgdGhlIGhhc2ggcGFyYW1ldGVyCisJCQkkaW5wdXRfcGFyYW1zeydzbmFwc2hvdF9mb3JtYXQnfSA9ICRmbXQ7CisJCQkkaW5wdXRfcGFyYW1zeydoYXNoJ30gPSAkaGFzaDsKKwkJCSMgd2UgYWxzbyBzZXQgdGhlIGZvcm1hdCBzdWZmaXggdG8gdGhlIG9uZSByZXF1ZXN0ZWQKKwkJCSMgaW4gdGhlIFVSTDogdGhpcyB3YXkgYSByZXF1ZXN0IGZvciBlLmcuIC50Z3ogcmV0dXJucworCQkJIyBhIC50Z3ogaW5zdGVhZCBvZiBhIC50YXIuZ3oKKwkJCSRrbm93bl9zbmFwc2hvdF9mb3JtYXRzeyRmbXR9eydzdWZmaXgnfSA9ICRzZng7CisJCQlsYXN0OworCQl9CisJfQorfQorZXZhbHVhdGVfcGF0aF9pbmZvKCk7CisKK291ciAkYWN0aW9uID0gJGlucHV0X3BhcmFtc3snYWN0aW9uJ307CitpZiAoZGVmaW5lZCAkYWN0aW9uKSB7CisJaWYgKCF2YWxpZGF0ZV9hY3Rpb24oJGFjdGlvbikpIHsKKwkJZGllX2Vycm9yKDQwMCwgIkludmFsaWQgYWN0aW9uIHBhcmFtZXRlciIpOworCX0KK30KKworIyBwYXJhbWV0ZXJzIHdoaWNoIGFyZSBwYXRobmFtZXMKK291ciAkcHJvamVjdCA9ICRpbnB1dF9wYXJhbXN7J3Byb2plY3QnfTsKK2lmIChkZWZpbmVkICRwcm9qZWN0KSB7CisJaWYgKCF2YWxpZGF0ZV9wcm9qZWN0KCRwcm9qZWN0KSkgeworCQl1bmRlZiAkcHJvamVjdDsKKwkJZGllX2Vycm9yKDQwNCwgIk5vIHN1Y2ggcHJvamVjdCIpOworCX0KK30KKworb3VyICRmaWxlX25hbWUgPSAkaW5wdXRfcGFyYW1zeydmaWxlX25hbWUnfTsKK2lmIChkZWZpbmVkICRmaWxlX25hbWUpIHsKKwlpZiAoIXZhbGlkYXRlX3BhdGhuYW1lKCRmaWxlX25hbWUpKSB7CisJCWRpZV9lcnJvcig0MDAsICJJbnZhbGlkIGZpbGUgcGFyYW1ldGVyIik7CisJfQorfQorCitvdXIgJGZpbGVfcGFyZW50ID0gJGlucHV0X3BhcmFtc3snZmlsZV9wYXJlbnQnfTsKK2lmIChkZWZpbmVkICRmaWxlX3BhcmVudCkgeworCWlmICghdmFsaWRhdGVfcGF0aG5hbWUoJGZpbGVfcGFyZW50KSkgeworCQlkaWVfZXJyb3IoNDAwLCAiSW52YWxpZCBmaWxlIHBhcmVudCBwYXJhbWV0ZXIiKTsKKwl9Cit9CisKKyMgcGFyYW1ldGVycyB3aGljaCBhcmUgcmVmbmFtZXMKK291ciAkaGFzaCA9ICRpbnB1dF9wYXJhbXN7J2hhc2gnfTsKK2lmIChkZWZpbmVkICRoYXNoKSB7CisJaWYgKCF2YWxpZGF0ZV9yZWZuYW1lKCRoYXNoKSkgeworCQlkaWVfZXJyb3IoNDAwLCAiSW52YWxpZCBoYXNoIHBhcmFtZXRlciIpOworCX0KK30KKworb3VyICRoYXNoX3BhcmVudCA9ICRpbnB1dF9wYXJhbXN7J2hhc2hfcGFyZW50J307CitpZiAoZGVmaW5lZCAkaGFzaF9wYXJlbnQpIHsKKwlpZiAoIXZhbGlkYXRlX3JlZm5hbWUoJGhhc2hfcGFyZW50KSkgeworCQlkaWVfZXJyb3IoNDAwLCAiSW52YWxpZCBoYXNoIHBhcmVudCBwYXJhbWV0ZXIiKTsKKwl9Cit9CisKK291ciAkaGFzaF9iYXNlID0gJGlucHV0X3BhcmFtc3snaGFzaF9iYXNlJ307CitpZiAoZGVmaW5lZCAkaGFzaF9iYXNlKSB7CisJaWYgKCF2YWxpZGF0ZV9yZWZuYW1lKCRoYXNoX2Jhc2UpKSB7CisJCWRpZV9lcnJvcig0MDAsICJJbnZhbGlkIGhhc2ggYmFzZSBwYXJhbWV0ZXIiKTsKKwl9Cit9CisKK291ciBAZXh0cmFfb3B0aW9ucyA9IEB7JGlucHV0X3BhcmFtc3snZXh0cmFfb3B0aW9ucyd9fTsKKyMgQGV4dHJhX29wdGlvbnMgaXMgYWx3YXlzIGRlZmluZWQsIHNpbmNlIGl0IGNhbiBvbmx5IGJlIChjdXJyZW50bHkpIHNldCBmcm9tCisjIENHSSwgYW5kICRjZ2ktPnBhcmFtKCkgcmV0dXJucyB0aGUgZW1wdHkgYXJyYXkgaW4gYXJyYXkgY29udGV4dCBpZiB0aGUgcGFyYW0KKyMgaXMgbm90IHNldAorZm9yZWFjaCBteSAkb3B0IChAZXh0cmFfb3B0aW9ucykgeworCWlmIChub3QgZXhpc3RzICRhbGxvd2VkX29wdGlvbnN7JG9wdH0pIHsKKwkJZGllX2Vycm9yKDQwMCwgIkludmFsaWQgb3B0aW9uIHBhcmFtZXRlciIpOworCX0KKwlpZiAobm90IGdyZXAoL14kYWN0aW9uJC8sIEB7JGFsbG93ZWRfb3B0aW9uc3skb3B0fX0pKSB7CisJCWRpZV9lcnJvcig0MDAsICJJbnZhbGlkIG9wdGlvbiBwYXJhbWV0ZXIgZm9yIHRoaXMgYWN0aW9uIik7CisJfQorfQorCitvdXIgJGhhc2hfcGFyZW50X2Jhc2UgPSAkaW5wdXRfcGFyYW1zeydoYXNoX3BhcmVudF9iYXNlJ307CitpZiAoZGVmaW5lZCAkaGFzaF9wYXJlbnRfYmFzZSkgeworCWlmICghdmFsaWRhdGVfcmVmbmFtZSgkaGFzaF9wYXJlbnRfYmFzZSkpIHsKKwkJZGllX2Vycm9yKDQwMCwgIkludmFsaWQgaGFzaCBwYXJlbnQgYmFzZSBwYXJhbWV0ZXIiKTsKKwl9Cit9CisKKyMgb3RoZXIgcGFyYW1ldGVycworb3VyICRwYWdlID0gJGlucHV0X3BhcmFtc3sncGFnZSd9OworaWYgKGRlZmluZWQgJHBhZ2UpIHsKKwlpZiAoJHBhZ2UgPX4gbS9bXjAtOV0vKSB7CisJCWRpZV9lcnJvcig0MDAsICJJbnZhbGlkIHBhZ2UgcGFyYW1ldGVyIik7CisJfQorfQorCitvdXIgJHNlYXJjaHR5cGUgPSAkaW5wdXRfcGFyYW1zeydzZWFyY2h0eXBlJ307CitpZiAoZGVmaW5lZCAkc2VhcmNodHlwZSkgeworCWlmICgkc2VhcmNodHlwZSA9fiBtL1teYS16XS8pIHsKKwkJZGllX2Vycm9yKDQwMCwgIkludmFsaWQgc2VhcmNodHlwZSBwYXJhbWV0ZXIiKTsKKwl9Cit9CisKK291ciAkc2VhcmNoX3VzZV9yZWdleHAgPSAkaW5wdXRfcGFyYW1zeydzZWFyY2hfdXNlX3JlZ2V4cCd9OworCitvdXIgJHNlYXJjaHRleHQgPSAkaW5wdXRfcGFyYW1zeydzZWFyY2h0ZXh0J307CitvdXIgJHNlYXJjaF9yZWdleHA7CitpZiAoZGVmaW5lZCAkc2VhcmNodGV4dCkgeworCWlmIChsZW5ndGgoJHNlYXJjaHRleHQpIDwgMikgeworCQlkaWVfZXJyb3IoNDAzLCAiQXQgbGVhc3QgdHdvIGNoYXJhY3RlcnMgYXJlIHJlcXVpcmVkIGZvciBzZWFyY2ggcGFyYW1ldGVyIik7CisJfQorCSRzZWFyY2hfcmVnZXhwID0gJHNlYXJjaF91c2VfcmVnZXhwID8gJHNlYXJjaHRleHQgOiBxdW90ZW1ldGEgJHNlYXJjaHRleHQ7Cit9CisKKyMgcGF0aCB0byB0aGUgY3VycmVudCBnaXQgcmVwb3NpdG9yeQorb3VyICRnaXRfZGlyOworJGdpdF9kaXIgPSAiJHByb2plY3Ryb290LyRwcm9qZWN0IiBpZiAkcHJvamVjdDsKKworIyBsaXN0IG9mIHN1cHBvcnRlZCBzbmFwc2hvdCBmb3JtYXRzCitvdXIgQHNuYXBzaG90X2ZtdHMgPSBnaXR3ZWJfZ2V0X2ZlYXR1cmUoJ3NuYXBzaG90Jyk7CitAc25hcHNob3RfZm10cyA9IGZpbHRlcl9zbmFwc2hvdF9mbXRzKEBzbmFwc2hvdF9mbXRzKTsKKworIyBkaXNwYXRjaAogaWYgKCFkZWZpbmVkICRhY3Rpb24pIHsKIAlpZiAoZGVmaW5lZCAkaGFzaCkgewogCQkkYWN0aW9uID0gZ2l0X2dldF90eXBlKCRoYXNoKTsKQEAgLTYwNSw1NSArODIzLDk2IEBACiAJIyBkZWZhdWx0IGlzIHRvIHVzZSAtYWJzb2x1dGUgdXJsKCkgaS5lLiAkbXlfdXJpCiAJbXkgJGhyZWYgPSAkcGFyYW1zey1mdWxsfSA/ICRteV91cmwgOiAkbXlfdXJpOwogCi0JIyBYWFg6IFdhcm5pbmc6IElmIHlvdSB0b3VjaCB0aGlzLCBjaGVjayB0aGUgc2VhcmNoIGZvcm0gZm9yIHVwZGF0aW5nLAotCSMgdG9vLgotCi0JbXkgQG1hcHBpbmcgPSAoCi0JCXByb2plY3QgPT4gInAiLAotCQlhY3Rpb24gPT4gImEiLAotCQlmaWxlX25hbWUgPT4gImYiLAotCQlmaWxlX3BhcmVudCA9PiAiZnAiLAotCQloYXNoID0+ICJoIiwKLQkJaGFzaF9wYXJlbnQgPT4gImhwIiwKLQkJaGFzaF9iYXNlID0+ICJoYiIsCi0JCWhhc2hfcGFyZW50X2Jhc2UgPT4gImhwYiIsCi0JCXBhZ2UgPT4gInBnIiwKLQkJb3JkZXIgPT4gIm8iLAotCQlzZWFyY2h0ZXh0ID0+ICJzIiwKLQkJc2VhcmNodHlwZSA9PiAic3QiLAotCQlzbmFwc2hvdF9mb3JtYXQgPT4gInNmIiwKLQkJZXh0cmFfb3B0aW9ucyA9PiAib3B0IiwKLQkJc2VhcmNoX3VzZV9yZWdleHAgPT4gInNyIiwKLQkpOwotCW15ICVtYXBwaW5nID0gQG1hcHBpbmc7Ci0KIAkkcGFyYW1zeydwcm9qZWN0J30gPSAkcHJvamVjdCB1bmxlc3MgZXhpc3RzICRwYXJhbXN7J3Byb2plY3QnfTsKIAogCWlmICgkcGFyYW1zey1yZXBsYXl9KSB7Ci0JCXdoaWxlIChteSAoJG5hbWUsICRzeW1ib2wpID0gZWFjaCAlbWFwcGluZykgeworCQl3aGlsZSAobXkgKCRuYW1lLCAkc3ltYm9sKSA9IGVhY2ggJWNnaV9wYXJhbV9tYXBwaW5nKSB7CiAJCQlpZiAoIWV4aXN0cyAkcGFyYW1zeyRuYW1lfSkgewotCQkJCSMgdG8gYWxsb3cgZm9yIG11bHRpdmFsdWVkIHBhcmFtcyB3ZSB1c2UgYXJyYXlyZWYgZm9ybQotCQkJCSRwYXJhbXN7JG5hbWV9ID0gWyAkY2dpLT5wYXJhbSgkc3ltYm9sKSBdOworCQkJCSRwYXJhbXN7JG5hbWV9ID0gJGlucHV0X3BhcmFtc3skbmFtZX07CiAJCQl9CiAJCX0KIAl9CiAKLQlteSAoJHVzZV9wYXRoaW5mbykgPSBnaXR3ZWJfY2hlY2tfZmVhdHVyZSgncGF0aGluZm8nKTsKKwlteSAkdXNlX3BhdGhpbmZvID0gZ2l0d2ViX2NoZWNrX2ZlYXR1cmUoJ3BhdGhpbmZvJyk7CiAJaWYgKCR1c2VfcGF0aGluZm8pIHsKLQkJIyB1c2UgUEFUSF9JTkZPIGZvciBwcm9qZWN0IG5hbWUKKwkJIyB0cnkgdG8gcHV0IGFzIG1hbnkgcGFyYW1ldGVycyBhcyBwb3NzaWJsZSBpbiBQQVRIX0lORk86CisJCSMgICAtIHByb2plY3QgbmFtZQorCQkjICAgLSBhY3Rpb24KKwkJIyAgIC0gaGFzaF9wYXJlbnQgb3IgaGFzaF9wYXJlbnRfYmFzZTovZmlsZV9wYXJlbnQKKwkJIyAgIC0gaGFzaCBvciBoYXNoX2Jhc2U6L2ZpbGVuYW1lCisJCSMgICAtIHRoZSBzbmFwc2hvdF9mb3JtYXQgYXMgYW4gYXBwcm9wcmlhdGUgc3VmZml4CisKKwkJIyBXaGVuIHRoZSBzY3JpcHQgaXMgdGhlIHJvb3QgRGlyZWN0b3J5SW5kZXggZm9yIHRoZSBkb21haW4sCisJCSMgJGhyZWYgaGVyZSB3b3VsZCBiZSBzb21ldGhpbmcgbGlrZSBodHRwOi8vZ2l0d2ViLmV4YW1wbGUuY29tLworCQkjIFRodXMsIHdlIHN0cmlwIGFueSB0cmFpbGluZyAvIGZyb20gJGhyZWYsIHRvIHNwYXJlIHVzIGRvdWJsZQorCQkjIHNsYXNoZXMgaW4gdGhlIGZpbmFsIFVSTAorCQkkaHJlZiA9fiBzLC8kLCw7CisKKwkJIyBUaGVuIGFkZCB0aGUgcHJvamVjdCBuYW1lLCBpZiBwcmVzZW50CiAJCSRocmVmIC49ICIvIi5lc2NfdXJsKCRwYXJhbXN7J3Byb2plY3QnfSkgaWYgZGVmaW5lZCAkcGFyYW1zeydwcm9qZWN0J307CiAJCWRlbGV0ZSAkcGFyYW1zeydwcm9qZWN0J307CiAKLQkJIyBTdW1tYXJ5IGp1c3QgdXNlcyB0aGUgcHJvamVjdCBwYXRoIFVSTAotCQlpZiAoZGVmaW5lZCAkcGFyYW1zeydhY3Rpb24nfSAmJiAkcGFyYW1zeydhY3Rpb24nfSBlcSAnc3VtbWFyeScpIHsKKwkJIyBzaW5jZSB3ZSBkZXN0cnVjdGl2ZWx5IGFic29yYiBwYXJhbWV0ZXJzLCB3ZSBrZWVwIHRoaXMKKwkJIyBib29sZWFuIHRoYXQgcmVtZW1iZXJzIGlmIHdlJ3JlIGhhbmRsaW5nIGEgc25hcHNob3QKKwkJbXkgJGlzX3NuYXBzaG90ID0gJHBhcmFtc3snYWN0aW9uJ30gZXEgJ3NuYXBzaG90JzsKKworCQkjIFN1bW1hcnkganVzdCB1c2VzIHRoZSBwcm9qZWN0IHBhdGggVVJMLCBhbnkgb3RoZXIgYWN0aW9uIGlzCisJCSMgYWRkZWQgdG8gdGhlIFVSTAorCQlpZiAoZGVmaW5lZCAkcGFyYW1zeydhY3Rpb24nfSkgeworCQkJJGhyZWYgLj0gIi8iLmVzY191cmwoJHBhcmFtc3snYWN0aW9uJ30pIHVubGVzcyAkcGFyYW1zeydhY3Rpb24nfSBlcSAnc3VtbWFyeSc7CiAJCQlkZWxldGUgJHBhcmFtc3snYWN0aW9uJ307CiAJCX0KKworCQkjIE5leHQsIHdlIHB1dCBoYXNoX3BhcmVudF9iYXNlOi9maWxlX3BhcmVudC4uaGFzaF9iYXNlOi9maWxlX25hbWUsCisJCSMgc3RyaXBwaW5nIG5vbmV4aXN0ZW50IG9yIHVzZWxlc3MgcGllY2VzCisJCSRocmVmIC49ICIvIiBpZiAoJHBhcmFtc3snaGFzaF9iYXNlJ30gfHwgJHBhcmFtc3snaGFzaF9wYXJlbnRfYmFzZSd9CisJCQl8fCAkcGFyYW1zeydoYXNoX3BhcmVudCd9IHx8ICRwYXJhbXN7J2hhc2gnfSk7CisJCWlmIChkZWZpbmVkICRwYXJhbXN7J2hhc2hfYmFzZSd9KSB7CisJCQlpZiAoZGVmaW5lZCAkcGFyYW1zeydoYXNoX3BhcmVudF9iYXNlJ30pIHsKKwkJCQkkaHJlZiAuPSBlc2NfdXJsKCRwYXJhbXN7J2hhc2hfcGFyZW50X2Jhc2UnfSk7CisJCQkJIyBza2lwIHRoZSBmaWxlX3BhcmVudCBpZiBpdCdzIHRoZSBzYW1lIGFzIHRoZSBmaWxlX25hbWUKKwkJCQlkZWxldGUgJHBhcmFtc3snZmlsZV9wYXJlbnQnfSBpZiAkcGFyYW1zeydmaWxlX3BhcmVudCd9IGVxICRwYXJhbXN7J2ZpbGVfbmFtZSd9OworCQkJCWlmIChkZWZpbmVkICRwYXJhbXN7J2ZpbGVfcGFyZW50J30gJiYgJHBhcmFtc3snZmlsZV9wYXJlbnQnfSAhfiAvXC5cLi8pIHsKKwkJCQkJJGhyZWYgLj0gIjovIi5lc2NfdXJsKCRwYXJhbXN7J2ZpbGVfcGFyZW50J30pOworCQkJCQlkZWxldGUgJHBhcmFtc3snZmlsZV9wYXJlbnQnfTsKKwkJCQl9CisJCQkJJGhyZWYgLj0gIi4uIjsKKwkJCQlkZWxldGUgJHBhcmFtc3snaGFzaF9wYXJlbnQnfTsKKwkJCQlkZWxldGUgJHBhcmFtc3snaGFzaF9wYXJlbnRfYmFzZSd9OworCQkJfSBlbHNpZiAoZGVmaW5lZCAkcGFyYW1zeydoYXNoX3BhcmVudCd9KSB7CisJCQkJJGhyZWYgLj0gZXNjX3VybCgkcGFyYW1zeydoYXNoX3BhcmVudCd9KS4gIi4uIjsKKwkJCQlkZWxldGUgJHBhcmFtc3snaGFzaF9wYXJlbnQnfTsKKwkJCX0KKworCQkJJGhyZWYgLj0gZXNjX3VybCgkcGFyYW1zeydoYXNoX2Jhc2UnfSk7CisJCQlpZiAoZGVmaW5lZCAkcGFyYW1zeydmaWxlX25hbWUnfSAmJiAkcGFyYW1zeydmaWxlX25hbWUnfSAhfiAvXC5cLi8pIHsKKwkJCQkkaHJlZiAuPSAiOi8iLmVzY191cmwoJHBhcmFtc3snZmlsZV9uYW1lJ30pOworCQkJCWRlbGV0ZSAkcGFyYW1zeydmaWxlX25hbWUnfTsKKwkJCX0KKwkJCWRlbGV0ZSAkcGFyYW1zeydoYXNoJ307CisJCQlkZWxldGUgJHBhcmFtc3snaGFzaF9iYXNlJ307CisJCX0gZWxzaWYgKGRlZmluZWQgJHBhcmFtc3snaGFzaCd9KSB7CisJCQkkaHJlZiAuPSBlc2NfdXJsKCRwYXJhbXN7J2hhc2gnfSk7CisJCQlkZWxldGUgJHBhcmFtc3snaGFzaCd9OworCQl9CisKKwkJIyBJZiB0aGUgYWN0aW9uIHdhcyBhIHNuYXBzaG90LCB3ZSBjYW4gYWJzb3JiIHRoZQorCQkjIHNuYXBzaG90X2Zvcm1hdCBwYXJhbWV0ZXIgdG9vCisJCWlmICgkaXNfc25hcHNob3QpIHsKKwkJCW15ICRmbXQgPSAkcGFyYW1zeydzbmFwc2hvdF9mb3JtYXQnfTsKKwkJCSMgc25hcHNob3RfZm9ybWF0IHNob3VsZCBhbHdheXMgYmUgZGVmaW5lZCB3aGVuIGhyZWYoKQorCQkJIyBpcyBjYWxsZWQsIGJ1dCBqdXN0IGluIGNhc2Ugc29tZSBjb2RlIGZvcmdldHMsIHdlCisJCQkjIGZhbGwgYmFjayB0byB0aGUgZGVmYXVsdAorCQkJJGZtdCB8fD0gJHNuYXBzaG90X2ZtdHNbMF07CisJCQkkaHJlZiAuPSAka25vd25fc25hcHNob3RfZm9ybWF0c3skZm10fXsnc3VmZml4J307CisJCQlkZWxldGUgJHBhcmFtc3snc25hcHNob3RfZm9ybWF0J307CisJCX0KIAl9CiAKIAkjIG5vdyBlbmNvZGUgdGhlIHBhcmFtZXRlcnMgZXhwbGljaXRseQogCW15IEByZXN1bHQgPSAoKTsKLQlmb3IgKG15ICRpID0gMDsgJGkgPCBAbWFwcGluZzsgJGkgKz0gMikgewotCQlteSAoJG5hbWUsICRzeW1ib2wpID0gKCRtYXBwaW5nWyRpXSwgJG1hcHBpbmdbJGkrMV0pOworCWZvciAobXkgJGkgPSAwOyAkaSA8IEBjZ2lfcGFyYW1fbWFwcGluZzsgJGkgKz0gMikgeworCQlteSAoJG5hbWUsICRzeW1ib2wpID0gKCRjZ2lfcGFyYW1fbWFwcGluZ1skaV0sICRjZ2lfcGFyYW1fbWFwcGluZ1skaSsxXSk7CiAJCWlmIChkZWZpbmVkICRwYXJhbXN7JG5hbWV9KSB7CiAJCQlpZiAocmVmKCRwYXJhbXN7JG5hbWV9KSBlcSAiQVJSQVkiKSB7CiAJCQkJZm9yZWFjaCBteSAkcGFyIChAeyRwYXJhbXN7JG5hbWV9fSkgewpAQCAtNjczLDYgKzkzMiwyNCBAQAogIyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIyMgdmFsaWRhdGlvbiwgcXVvdGluZy91bnF1b3RpbmcgYW5kIGVzY2FwaW5nCiAKK3N1YiB2YWxpZGF0ZV9hY3Rpb24geworCW15ICRpbnB1dCA9IHNoaWZ0IHx8IHJldHVybiB1bmRlZjsKKwlyZXR1cm4gdW5kZWYgdW5sZXNzIGV4aXN0cyAkYWN0aW9uc3skaW5wdXR9OworCXJldHVybiAkaW5wdXQ7Cit9CisKK3N1YiB2YWxpZGF0ZV9wcm9qZWN0IHsKKwlteSAkaW5wdXQgPSBzaGlmdCB8fCByZXR1cm4gdW5kZWY7CisJaWYgKCF2YWxpZGF0ZV9wYXRobmFtZSgkaW5wdXQpIHx8CisJCSEoLWQgIiRwcm9qZWN0cm9vdC8kaW5wdXQiKSB8fAorCQkhY2hlY2tfZXhwb3J0X29rKCIkcHJvamVjdHJvb3QvJGlucHV0IikgfHwKKwkJKCRzdHJpY3RfZXhwb3J0ICYmICFwcm9qZWN0X2luX2xpc3QoJGlucHV0KSkpIHsKKwkJcmV0dXJuIHVuZGVmOworCX0gZWxzZSB7CisJCXJldHVybiAkaW5wdXQ7CisJfQorfQorCiBzdWIgdmFsaWRhdGVfcGF0aG5hbWUgewogCW15ICRpbnB1dCA9IHNoaWZ0IHx8IHJldHVybiB1bmRlZjsKIApAQCAtNzgzLDcgKzEwNjAsNyBAQAogCSk7CiAJbXkgJGNociA9ICggKGV4aXN0cyAkZXN7JGNudHJsfSkKIAkJICAgID8gJGVzeyRjbnRybH0KLQkJICAgIDogc3ByaW50ZignXCUwM28nLCBvcmQoJGNudHJsKSkgKTsKKwkJICAgIDogc3ByaW50ZignXCUyeCcsIG9yZCgkY250cmwpKSApOwogCWlmICgkb3B0c3stbm9odG1sfSkgewogCQlyZXR1cm4gJGNocjsKIAl9IGVsc2UgewpAQCAtMTA5OCwxMyArMTM3NSwyMyBAQAogfQogCiAjIGZvcm1hdCBtYXJrZXIgb2YgcmVmcyBwb2ludGluZyB0byBnaXZlbiBvYmplY3QKKworIyB0aGUgZGVzdGluYXRpb24gYWN0aW9uIGlzIGNob3NlbiBiYXNlZCBvbiBvYmplY3QgdHlwZSBhbmQgY3VycmVudCBjb250ZXh0OgorIyAtIGZvciBhbm5vdGF0ZWQgdGFncywgd2UgY2hvb3NlIHRoZSB0YWcgdmlldyB1bmxlc3MgaXQncyB0aGUgY3VycmVudCB2aWV3CisjICAgYWxyZWFkeSwgaW4gd2hpY2ggY2FzZSB3ZSBnbyB0byBzaG9ydGxvZyB2aWV3CisjIC0gZm9yIG90aGVyIHJlZnMsIHdlIGtlZXAgdGhlIGN1cnJlbnQgdmlldyBpZiB3ZSdyZSBpbiBoaXN0b3J5LCBzaG9ydGxvZyBvcgorIyAgIGxvZyB2aWV3LCBhbmQgc2VsZWN0IHNob3J0bG9nIG90aGVyd2lzZQogc3ViIGZvcm1hdF9yZWZfbWFya2VyIHsKIAlteSAoJHJlZnMsICRpZCkgPSBAXzsKIAlteSAkbWFya2VycyA9ICcnOwogCiAJaWYgKGRlZmluZWQgJHJlZnMtPnskaWR9KSB7CiAJCWZvcmVhY2ggbXkgJHJlZiAoQHskcmVmcy0+eyRpZH19KSB7CisJCQkjIHRoaXMgY29kZSBleHBsb2l0cyB0aGUgZmFjdCB0aGF0IG5vbi1saWdodHdlaWdodCB0YWdzIGFyZSB0aGUKKwkJCSMgb25seSBpbmRpcmVjdCBvYmplY3RzLCBhbmQgdGhhdCB0aGV5IGFyZSB0aGUgb25seSBvYmplY3RzIGZvciB3aGljaAorCQkJIyB3ZSB3YW50IHRvIHVzZSB0YWcgaW5zdGVhZCBvZiBzaG9ydGxvZyBhcyBhY3Rpb24KIAkJCW15ICgkdHlwZSwgJG5hbWUpID0gcXcoKTsKKwkJCW15ICRpbmRpcmVjdCA9ICgkcmVmID1+IHMvXF5ce1x9JC8vKTsKIAkJCSMgZS5nLiB0YWdzL3YyLjYuMTEgb3IgaGVhZHMvbmV4dAogCQkJaWYgKCRyZWYgPX4gbSFeKC4qPylzPy8oLiopJCEpIHsKIAkJCQkkdHlwZSA9ICQxOwpAQCAtMTExNCw4ICsxNDAxLDI5IEBACiAJCQkJJG5hbWUgPSAkcmVmOwogCQkJfQogCi0JCQkkbWFya2VycyAuPSAiIDxzcGFuIGNsYXNzPVwiJHR5cGVcIiB0aXRsZT1cIiRyZWZcIj4iIC4KLQkJCSAgICAgICAgICAgIGVzY19odG1sKCRuYW1lKSAuICI8L3NwYW4+IjsKKwkJCW15ICRjbGFzcyA9ICR0eXBlOworCQkJJGNsYXNzIC49ICIgaW5kaXJlY3QiIGlmICRpbmRpcmVjdDsKKworCQkJbXkgJGRlc3RfYWN0aW9uID0gInNob3J0bG9nIjsKKworCQkJaWYgKCRpbmRpcmVjdCkgeworCQkJCSRkZXN0X2FjdGlvbiA9ICJ0YWciIHVubGVzcyAkYWN0aW9uIGVxICJ0YWciOworCQkJfSBlbHNpZiAoJGFjdGlvbiA9fiAvXihoaXN0b3J5fChzaG9ydCk/bG9nKSQvKSB7CisJCQkJJGRlc3RfYWN0aW9uID0gJGFjdGlvbjsKKwkJCX0KKworCQkJbXkgJGRlc3QgPSAiIjsKKwkJCSRkZXN0IC49ICJyZWZzLyIgdW5sZXNzICRyZWYgPX4gbSFecmVmcy8hOworCQkJJGRlc3QgLj0gJHJlZjsKKworCQkJbXkgJGxpbmsgPSAkY2dpLT5hKHsKKwkJCQktaHJlZiA9PiBocmVmKAorCQkJCQlhY3Rpb249PiRkZXN0X2FjdGlvbiwKKwkJCQkJaGFzaD0+JGRlc3QKKwkJCQkpfSwgJG5hbWUpOworCisJCQkkbWFya2VycyAuPSAiIDxzcGFuIGNsYXNzPVwiJGNsYXNzXCIgdGl0bGU9XCIkcmVmXCI+IiAuCisJCQkJJGxpbmsgLiAiPC9zcGFuPiI7CiAJCX0KIAl9CiAKQEAgLTE0MjcsOCArMTczNSw2IEBACiAjIGxpbmtlZC4gIFBhc3MgdGhlIGhhc2ggb2YgdGhlIHRyZWUvY29tbWl0IHRvIHNuYXBzaG90Lgogc3ViIGZvcm1hdF9zbmFwc2hvdF9saW5rcyB7CiAJbXkgKCRoYXNoKSA9IEBfOwotCW15IEBzbmFwc2hvdF9mbXRzID0gZ2l0d2ViX2NoZWNrX2ZlYXR1cmUoJ3NuYXBzaG90Jyk7Ci0JQHNuYXBzaG90X2ZtdHMgPSBmaWx0ZXJfc25hcHNob3RfZm10cyhAc25hcHNob3RfZm10cyk7CiAJbXkgJG51bV9mbXRzID0gQHNuYXBzaG90X2ZtdHM7CiAJaWYgKCRudW1fZm10cyA+IDEpIHsKIAkJIyBBIHBhcmVudGhlc2l6ZWQgbGlzdCBvZiBsaW5rcyBiZWFyaW5nIGZvcm1hdCBuYW1lcy4KQEAgLTE3MzIsNiArMjAzOCw3MSBAQAogCXJldHVybiAkZGVzY3I7CiB9CiAKK3N1YiBnaXRfZ2V0X3Byb2plY3RfY3RhZ3MgeworCW15ICRwYXRoID0gc2hpZnQ7CisJbXkgJGN0YWdzID0ge307CisKKwkkZ2l0X2RpciA9ICIkcHJvamVjdHJvb3QvJHBhdGgiOworCXVubGVzcyAob3BlbmRpciBELCAiJGdpdF9kaXIvY3RhZ3MiKSB7CisJCXJldHVybiAkY3RhZ3M7CisJfQorCWZvcmVhY2ggKGdyZXAgeyAtZiAkXyB9IG1hcCB7ICIkZ2l0X2Rpci9jdGFncy8kXyIgfSByZWFkZGlyKEQpKSB7CisJCW9wZW4gQ1QsICRfIG9yIG5leHQ7CisJCW15ICR2YWwgPSA8Q1Q+OworCQljaG9tcCAkdmFsOworCQljbG9zZSBDVDsKKwkJbXkgJGN0YWcgPSAkXzsgJGN0YWcgPX4gcyMuKi8jIzsKKwkJJGN0YWdzLT57JGN0YWd9ID0gJHZhbDsKKwl9CisJY2xvc2VkaXIgRDsKKwkkY3RhZ3M7Cit9CisKK3N1YiBnaXRfcG9wdWxhdGVfcHJvamVjdF90YWdjbG91ZCB7CisJbXkgJGN0YWdzID0gc2hpZnQ7CisKKwkjIEZpcnN0LCBtZXJnZSBkaWZmZXJlbnQtY2FzZWQgdGFnczsgdGFncyB2b3RlIG9uIGNhc2luZworCW15ICVjdGFnc19sYzsKKwlmb3JlYWNoIChrZXlzICUkY3RhZ3MpIHsKKwkJJGN0YWdzX2xje2xjICRffS0+e2NvdW50fSArPSAkY3RhZ3MtPnskX307CisJCWlmIChub3QgJGN0YWdzX2xje2xjICRffS0+e3RvcGNvdW50fQorCQkgICAgb3IgJGN0YWdzX2xje2xjICRffS0+e3RvcGNvdW50fSA8ICRjdGFncy0+eyRffSkgeworCQkJJGN0YWdzX2xje2xjICRffS0+e3RvcGNvdW50fSA9ICRjdGFncy0+eyRffTsKKwkJCSRjdGFnc19sY3tsYyAkX30tPnt0b3BuYW1lfSA9ICRfOworCQl9CisJfQorCisJbXkgJGNsb3VkOworCWlmIChldmFsIHsgcmVxdWlyZSBIVE1MOjpUYWdDbG91ZDsgMTsgfSkgeworCQkkY2xvdWQgPSBIVE1MOjpUYWdDbG91ZC0+bmV3OworCQlmb3JlYWNoIChzb3J0IGtleXMgJWN0YWdzX2xjKSB7CisJCQkjIFBhZCB0aGUgdGl0bGUgd2l0aCBzcGFjZXMgc28gdGhhdCB0aGUgY2xvdWQgbG9va3MKKwkJCSMgbGVzcyBjcmFtbWVkLgorCQkJbXkgJHRpdGxlID0gJGN0YWdzX2xjeyRffS0+e3RvcG5hbWV9OworCQkJJHRpdGxlID1+IHMvIC8mbmJzcDsvZzsKKwkJCSR0aXRsZSA9fiBzL14vJm5ic3A7L2c7CisJCQkkdGl0bGUgPX4gcy8kLyZuYnNwOy9nOworCQkJJGNsb3VkLT5hZGQoJHRpdGxlLCAkaG9tZV9saW5rLiI/YnlfdGFnPSIuJF8sICRjdGFnc19sY3skX30tPntjb3VudH0pOworCQl9CisJfSBlbHNlIHsKKwkJJGNsb3VkID0gXCVjdGFnc19sYzsKKwl9CisJJGNsb3VkOworfQorCitzdWIgZ2l0X3Nob3dfcHJvamVjdF90YWdjbG91ZCB7CisJbXkgKCRjbG91ZCwgJGNvdW50KSA9IEBfOworCXByaW50IFNUREVSUiByZWYoJGNsb3VkKS4iLi5cbiI7CisJaWYgKHJlZiAkY2xvdWQgZXEgJ0hUTUw6OlRhZ0Nsb3VkJykgeworCQlyZXR1cm4gJGNsb3VkLT5odG1sX2FuZF9jc3MoJGNvdW50KTsKKwl9IGVsc2UgeworCQlteSBAdGFncyA9IHNvcnQgeyAkY2xvdWQtPnskYX0tPntjb3VudH0gPD0+ICRjbG91ZC0+eyRifS0+e2NvdW50fSB9IGtleXMgJSRjbG91ZDsKKwkJcmV0dXJuICc8cCBhbGlnbj0iY2VudGVyIj4nIC4gam9pbiAoJywgJywgbWFwIHsKKwkJCSI8YSBocmVmPVwiJGhvbWVfbGluaz9ieV90YWc9JF9cIj4kY2xvdWQtPnskX30tPnt0b3BuYW1lfTwvYT4iCisJCX0gc3BsaWNlKEB0YWdzLCAwLCAkY291bnQpKSAuICc8L3A+JzsKKwl9Cit9CisKIHN1YiBnaXRfZ2V0X3Byb2plY3RfdXJsX2xpc3QgewogCW15ICRwYXRoID0gc2hpZnQ7CiAKQEAgLTE3NTMsNyArMjEyNCw3IEBACiAJJGZpbHRlciB8fD0gJyc7CiAJJGZpbHRlciA9fiBzL1wuZ2l0JC8vOwogCi0JbXkgKCRjaGVja19mb3JrcykgPSBnaXR3ZWJfY2hlY2tfZmVhdHVyZSgnZm9ya3MnKTsKKwlteSAkY2hlY2tfZm9ya3MgPSBnaXR3ZWJfY2hlY2tfZmVhdHVyZSgnZm9ya3MnKTsKIAogCWlmICgtZCAkcHJvamVjdHNfbGlzdCkgewogCQkjIHNlYXJjaCBpbiBkaXJlY3RvcnkKQEAgLTE3ODAsMTAgKzIxNTEsOSBAQAogCiAJCQkJbXkgJHN1YmRpciA9IHN1YnN0cigkRmlsZTo6RmluZDo6bmFtZSwgJHBmeGxlbiArIDEpOwogCQkJCSMgd2UgY2hlY2sgcmVsYXRlZCBmaWxlIGluICRwcm9qZWN0cm9vdAotCQkJCWlmICgkY2hlY2tfZm9ya3MgYW5kICRzdWJkaXIgPX4gbSMvLiMpIHsKLQkJCQkJJEZpbGU6OkZpbmQ6OnBydW5lID0gMTsKLQkJCQl9IGVsc2lmIChjaGVja19leHBvcnRfb2soIiRwcm9qZWN0cm9vdC8kZmlsdGVyLyRzdWJkaXIiKSkgewotCQkJCQlwdXNoIEBsaXN0LCB7IHBhdGggPT4gKCRmaWx0ZXIgPyAiJGZpbHRlci8iIDogJycpIC4gJHN1YmRpciB9OworCQkJCW15ICRwYXRoID0gKCRmaWx0ZXIgPyAiJGZpbHRlci8iIDogJycpIC4gJHN1YmRpcjsKKwkJCQlpZiAoY2hlY2tfZXhwb3J0X29rKCIkcHJvamVjdHJvb3QvJHBhdGgiKSkgeworCQkJCQlwdXNoIEBsaXN0LCB7IHBhdGggPT4gJHBhdGggfTsKIAkJCQkJJEZpbGU6OkZpbmQ6OnBydW5lID0gMTsKIAkJCQl9CiAJCQl9LApAQCAtMTkyNiw3ICsyMjk2LDcgQEAKIAogCXdoaWxlIChteSAkbGluZSA9IDwkZmQ+KSB7CiAJCWNob21wICRsaW5lOwotCQlpZiAoJGxpbmUgPX4gbSFeKFswLTlhLWZBLUZdezQwfSlcc3JlZnMvKCR0eXBlLz9bXl5dKykhKSB7CisJCWlmICgkbGluZSA9fiBtIV4oWzAtOWEtZkEtRl17NDB9KVxzcmVmcy8oJHR5cGUuKikkISkgewogCQkJaWYgKGRlZmluZWQgJHJlZnN7JDF9KSB7CiAJCQkJcHVzaCBAeyRyZWZzeyQxfX0sICQyOwogCQkJfSBlbHNlIHsKQEAgLTIzOTQsNiArMjc2NCwxNSBAQAogCXJldHVybiB0b191dGY4KCRvd25lcik7CiB9CiAKKyMgYXNzdW1lIHRoYXQgZmlsZSBleGlzdHMKK3N1YiBpbnNlcnRfZmlsZSB7CisJbXkgJGZpbGVuYW1lID0gc2hpZnQ7CisKKwlvcGVuIG15ICRmZCwgJzwnLCAkZmlsZW5hbWU7CisJcHJpbnQgbWFwIHsgdG9fdXRmOCgkXykgfSA8JGZkPjsKKwljbG9zZSAkZmQ7Cit9CisKICMjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KICMjIG1pbWV0eXBlIHJlbGF0ZWQgZnVuY3Rpb25zCiAKQEAgLTI1ODIsOSArMjk2MSw3IEBACiAJICAgICAgIjxib2R5PlxuIjsKIAogCWlmICgtZiAkc2l0ZV9oZWFkZXIpIHsKLQkJb3BlbiAobXkgJGZkLCAkc2l0ZV9oZWFkZXIpOwotCQlwcmludCA8JGZkPjsKLQkJY2xvc2UgJGZkOworCQlpbnNlcnRfZmlsZSgkc2l0ZV9oZWFkZXIpOwogCX0KIAogCXByaW50ICI8ZGl2IGNsYXNzPVwicGFnZV9oZWFkZXJcIj5cbiIgLgpAQCAtMjYwMSw3ICsyOTc4LDcgQEAKIAl9CiAJcHJpbnQgIjwvZGl2PlxuIjsKIAotCW15ICgkaGF2ZV9zZWFyY2gpID0gZ2l0d2ViX2NoZWNrX2ZlYXR1cmUoJ3NlYXJjaCcpOworCW15ICRoYXZlX3NlYXJjaCA9IGdpdHdlYl9jaGVja19mZWF0dXJlKCdzZWFyY2gnKTsKIAlpZiAoZGVmaW5lZCAkcHJvamVjdCAmJiAkaGF2ZV9zZWFyY2gpIHsKIAkJaWYgKCFkZWZpbmVkICRzZWFyY2h0ZXh0KSB7CiAJCQkkc2VhcmNodGV4dCA9ICIiOwpAQCAtMjYxNSw3ICsyOTkyLDcgQEAKIAkJCSRzZWFyY2hfaGFzaCA9ICJIRUFEIjsKIAkJfQogCQlteSAkYWN0aW9uID0gJG15X3VyaTsKLQkJbXkgKCR1c2VfcGF0aGluZm8pID0gZ2l0d2ViX2NoZWNrX2ZlYXR1cmUoJ3BhdGhpbmZvJyk7CisJCW15ICR1c2VfcGF0aGluZm8gPSBnaXR3ZWJfY2hlY2tfZmVhdHVyZSgncGF0aGluZm8nKTsKIAkJaWYgKCR1c2VfcGF0aGluZm8pIHsKIAkJCSRhY3Rpb24gLj0gIi8iLmVzY191cmwoJHByb2plY3QpOwogCQl9CkBAIC0yNjcxLDkgKzMwNDgsNyBAQAogCXByaW50ICI8L2Rpdj5cbiI7ICMgY2xhc3M9InBhZ2VfZm9vdGVyIgogCiAJaWYgKC1mICRzaXRlX2Zvb3RlcikgewotCQlvcGVuIChteSAkZmQsICRzaXRlX2Zvb3Rlcik7Ci0JCXByaW50IDwkZmQ+OwotCQljbG9zZSAkZmQ7CisJCWluc2VydF9maWxlKCRzaXRlX2Zvb3Rlcik7CiAJfQogCiAJcHJpbnQgIjwvYm9keT5cbiIgLgpAQCAtMjczNCwxMyArMzEwOSwzMSBAQAogCQkJfQogCQl9CiAJfQorCiAJJGFyZ3sndHJlZSd9eydoYXNoJ30gPSAkdHJlZWhlYWQgaWYgZGVmaW5lZCAkdHJlZWhlYWQ7CiAJJGFyZ3sndHJlZSd9eydoYXNoX2Jhc2UnfSA9ICR0cmVlYmFzZSBpZiBkZWZpbmVkICR0cmVlYmFzZTsKIAorCW15IEBhY3Rpb25zID0gZ2l0d2ViX2dldF9mZWF0dXJlKCdhY3Rpb25zJyk7CisJbXkgJXJlcGwgPSAoCisJCSclJyA9PiAnJScsCisJCSduJyA9PiAkcHJvamVjdCwgICAgICAgICAjIHByb2plY3QgbmFtZQorCQknZicgPT4gJGdpdF9kaXIsICAgICAgICAgIyBwcm9qZWN0IHBhdGggd2l0aGluIGZpbGVzeXN0ZW0KKwkJJ2gnID0+ICR0cmVlaGVhZCB8fCAnJywgICMgY3VycmVudCBoYXNoICgnaCcgcGFyYW1ldGVyKQorCQknYicgPT4gJHRyZWViYXNlIHx8ICcnLCAgIyBoYXNoIGJhc2UgKCdoYicgcGFyYW1ldGVyKQorCSk7CisJd2hpbGUgKEBhY3Rpb25zKSB7CisJCW15ICgkbGFiZWwsICRsaW5rLCAkcG9zKSA9IHNwbGljZShAYWN0aW9ucywwLDMpOworCQkjIGluc2VydAorCQlAbmF2cyA9IG1hcCB7ICRfIGVxICRwb3MgPyAoJF8sICRsYWJlbCkgOiAkXyB9IEBuYXZzOworCQkjIG11bmNoIG11bmNoCisJCSRsaW5rID1+IHMvJShbJW5maGJdKS8kcmVwbHskMX0vZzsKKwkJJGFyZ3skbGFiZWx9eydfaHJlZid9ID0gJGxpbms7CisJfQorCiAJcHJpbnQgIjxkaXYgY2xhc3M9XCJwYWdlX25hdlwiPlxuIiAuCiAJCShqb2luICIgfCAiLAogCQkgbWFwIHsgJF8gZXEgJGN1cnJlbnQgPwotCQkgICAgICAgJF8gOiAkY2dpLT5hKHstaHJlZiA9PiBocmVmKCV7JGFyZ3skX319KX0sICIkXyIpCisJCSAgICAgICAkXyA6ICRjZ2ktPmEoey1ocmVmID0+ICgkYXJneyRffXtfaHJlZn0gPyAkYXJneyRffXtfaHJlZn0gOiBocmVmKCV7JGFyZ3skX319KSl9LCAiJF8iKQogCQkgfSBAbmF2cyk7CiAJcHJpbnQgIjxici8+XG4kZXh0cmE8YnIvPlxuIiAuCiAJICAgICAgIjwvZGl2PlxuIjsKQEAgLTMwOTAsNyArMzQ4Myw3IEBACiBzdWIgZ2l0X2RpZmZ0cmVlX2JvZHkgewogCW15ICgkZGlmZnRyZWUsICRoYXNoLCBAcGFyZW50cykgPSBAXzsKIAlteSAoJHBhcmVudCkgPSAkcGFyZW50c1swXTsKLQlteSAoJGhhdmVfYmxhbWUpID0gZ2l0d2ViX2NoZWNrX2ZlYXR1cmUoJ2JsYW1lJyk7CisJbXkgJGhhdmVfYmxhbWUgPSBnaXR3ZWJfY2hlY2tfZmVhdHVyZSgnYmxhbWUnKTsKIAlwcmludCAiPGRpdiBjbGFzcz1cImxpc3RfaGVhZFwiPlxuIjsKIAlpZiAoJCN7JGRpZmZ0cmVlfSA+IDEwKSB7CiAJCXByaW50KCgkI3skZGlmZnRyZWV9ICsgMSkgLiAiIGZpbGVzIGNoYW5nZWQ6XG4iKTsKQEAgLTM1NTAsNiArMzk0Myw3IEBACiAJbXkgKCRwcm9qbGlzdCwgJGNoZWNrX2ZvcmtzKSA9IEBfOwogCW15IEBwcm9qZWN0czsKIAorCW15ICRzaG93X2N0YWdzID0gZ2l0d2ViX2NoZWNrX2ZlYXR1cmUoJ2N0YWdzJyk7CiAgUFJPSkVDVDoKIAlmb3JlYWNoIG15ICRwciAoQCRwcm9qbGlzdCkgewogCQlteSAoQGFjdGl2aXR5KSA9IGdpdF9nZXRfbGFzdF9hY3Rpdml0eSgkcHItPnsncGF0aCd9KTsKQEAgLTM1NzYsMjUgKzM5NzAsMjAgQEAKIAkJCQkkcHItPnsnZm9ya3MnfSA9IDA7CiAJCQl9CiAJCX0KKwkJJHNob3dfY3RhZ3MgYW5kICRwci0+eydjdGFncyd9ID0gZ2l0X2dldF9wcm9qZWN0X2N0YWdzKCRwci0+eydwYXRoJ30pOwogCQlwdXNoIEBwcm9qZWN0cywgJHByOwogCX0KIAogCXJldHVybiBAcHJvamVjdHM7CiB9CiAKLSMgcHJpbnQgJ3NvcnQgYnknIDx0aD4gZWxlbWVudCwgZWl0aGVyIHNvcnRpbmcgYnkgJGtleSBpZiAkbmFtZSBlcSAkb3JkZXIKLSMgKGNoYW5naW5nICRsaXN0KSwgb3IgZ2VuZXJhdGluZyAnc29ydCBieSAkbmFtZScgcmVwbGF5IGxpbmsgb3RoZXJ3aXNlCisjIHByaW50ICdzb3J0IGJ5JyA8dGg+IGVsZW1lbnQsIGdlbmVyYXRpbmcgJ3NvcnQgYnkgJG5hbWUnIHJlcGxheSBsaW5rCisjIGlmIHRoYXQgb3JkZXIgaXMgbm90IHNlbGVjdGVkCiBzdWIgcHJpbnRfc29ydF90aCB7Ci0JbXkgKCRzdHJfc29ydCwgJG5hbWUsICRvcmRlciwgJGtleSwgJGhlYWRlciwgJGxpc3QpID0gQF87Ci0JJGtleSAgICB8fD0gJG5hbWU7CisJbXkgKCRuYW1lLCAkb3JkZXIsICRoZWFkZXIpID0gQF87CiAJJGhlYWRlciB8fD0gdWNmaXJzdCgkbmFtZSk7CiAKIAlpZiAoJG9yZGVyIGVxICRuYW1lKSB7Ci0JCWlmICgkc3RyX3NvcnQpIHsKLQkJCUAkbGlzdCA9IHNvcnQgeyRhLT57JGtleX0gY21wICRiLT57JGtleX19IEAkbGlzdDsKLQkJfSBlbHNlIHsKLQkJCUAkbGlzdCA9IHNvcnQgeyRhLT57JGtleX0gPD0+ICRiLT57JGtleX19IEAkbGlzdDsKLQkJfQogCQlwcmludCAiPHRoPiRoZWFkZXI8L3RoPlxuIjsKIAl9IGVsc2UgewogCQlwcmludCAiPHRoPiIgLgpAQCAtMzYwNCw0NCArMzk5Myw3MSBAQAogCX0KIH0KIAotc3ViIHByaW50X3NvcnRfdGhfc3RyIHsKLQlwcmludF9zb3J0X3RoKDEsIEBfKTsKLX0KLQotc3ViIHByaW50X3NvcnRfdGhfbnVtIHsKLQlwcmludF9zb3J0X3RoKDAsIEBfKTsKLX0KLQogc3ViIGdpdF9wcm9qZWN0X2xpc3RfYm9keSB7CisJIyBhY3R1YWxseSB1c2VzIGdsb2JhbCB2YXJpYWJsZSAkcHJvamVjdAogCW15ICgkcHJvamxpc3QsICRvcmRlciwgJGZyb20sICR0bywgJGV4dHJhLCAkbm9faGVhZGVyKSA9IEBfOwogCi0JbXkgKCRjaGVja19mb3JrcykgPSBnaXR3ZWJfY2hlY2tfZmVhdHVyZSgnZm9ya3MnKTsKKwlteSAkY2hlY2tfZm9ya3MgPSBnaXR3ZWJfY2hlY2tfZmVhdHVyZSgnZm9ya3MnKTsKIAlteSBAcHJvamVjdHMgPSBmaWxsX3Byb2plY3RfbGlzdF9pbmZvKCRwcm9qbGlzdCwgJGNoZWNrX2ZvcmtzKTsKIAogCSRvcmRlciB8fD0gJGRlZmF1bHRfcHJvamVjdHNfb3JkZXI7CiAJJGZyb20gPSAwIHVubGVzcyBkZWZpbmVkICRmcm9tOwogCSR0byA9ICQjcHJvamVjdHMgaWYgKCFkZWZpbmVkICR0byB8fCAkI3Byb2plY3RzIDwgJHRvKTsKIAorCW15ICVvcmRlcl9pbmZvID0gKAorCQlwcm9qZWN0ID0+IHsga2V5ID0+ICdwYXRoJywgdHlwZSA9PiAnc3RyJyB9LAorCQlkZXNjciA9PiB7IGtleSA9PiAnZGVzY3JfbG9uZycsIHR5cGUgPT4gJ3N0cicgfSwKKwkJb3duZXIgPT4geyBrZXkgPT4gJ293bmVyJywgdHlwZSA9PiAnc3RyJyB9LAorCQlhZ2UgPT4geyBrZXkgPT4gJ2FnZScsIHR5cGUgPT4gJ251bScgfQorCSk7CisJbXkgJG9pID0gJG9yZGVyX2luZm97JG9yZGVyfTsKKwlpZiAoJG9pLT57J3R5cGUnfSBlcSAnc3RyJykgeworCQlAcHJvamVjdHMgPSBzb3J0IHskYS0+eyRvaS0+eydrZXknfX0gY21wICRiLT57JG9pLT57J2tleSd9fX0gQHByb2plY3RzOworCX0gZWxzZSB7CisJCUBwcm9qZWN0cyA9IHNvcnQgeyRhLT57JG9pLT57J2tleSd9fSA8PT4gJGItPnskb2ktPnsna2V5J319fSBAcHJvamVjdHM7CisJfQorCisJbXkgJHNob3dfY3RhZ3MgPSBnaXR3ZWJfY2hlY2tfZmVhdHVyZSgnY3RhZ3MnKTsKKwlpZiAoJHNob3dfY3RhZ3MpIHsKKwkJbXkgJWN0YWdzOworCQlmb3JlYWNoIG15ICRwIChAcHJvamVjdHMpIHsKKwkJCWZvcmVhY2ggbXkgJGN0IChrZXlzICV7JHAtPnsnY3RhZ3MnfX0pIHsKKwkJCQkkY3RhZ3N7JGN0fSArPSAkcC0+eydjdGFncyd9LT57JGN0fTsKKwkJCX0KKwkJfQorCQlteSAkY2xvdWQgPSBnaXRfcG9wdWxhdGVfcHJvamVjdF90YWdjbG91ZChcJWN0YWdzKTsKKwkJcHJpbnQgZ2l0X3Nob3dfcHJvamVjdF90YWdjbG91ZCgkY2xvdWQsIDY0KTsKKwl9CisKIAlwcmludCAiPHRhYmxlIGNsYXNzPVwicHJvamVjdF9saXN0XCI+XG4iOwogCXVubGVzcyAoJG5vX2hlYWRlcikgewogCQlwcmludCAiPHRyPlxuIjsKIAkJaWYgKCRjaGVja19mb3JrcykgewogCQkJcHJpbnQgIjx0aD48L3RoPlxuIjsKIAkJfQotCQlwcmludF9zb3J0X3RoX3N0cigncHJvamVjdCcsICRvcmRlciwgJ3BhdGgnLAotCQkgICAgICAgICAgICAgICAgICAnUHJvamVjdCcsIFxAcHJvamVjdHMpOwotCQlwcmludF9zb3J0X3RoX3N0cignZGVzY3InLCAkb3JkZXIsICdkZXNjcl9sb25nJywKLQkJICAgICAgICAgICAgICAgICAgJ0Rlc2NyaXB0aW9uJywgXEBwcm9qZWN0cyk7Ci0JCXByaW50X3NvcnRfdGhfc3RyKCdvd25lcicsICRvcmRlciwgJ293bmVyJywKLQkJICAgICAgICAgICAgICAgICAgJ093bmVyJywgXEBwcm9qZWN0cyk7Ci0JCXByaW50X3NvcnRfdGhfbnVtKCdhZ2UnLCAkb3JkZXIsICdhZ2UnLAotCQkgICAgICAgICAgICAgICAgICAnTGFzdCBDaGFuZ2UnLCBcQHByb2plY3RzKTsKKwkJcHJpbnRfc29ydF90aCgncHJvamVjdCcsICRvcmRlciwgJ1Byb2plY3QnKTsKKwkJcHJpbnRfc29ydF90aCgnZGVzY3InLCAkb3JkZXIsICdEZXNjcmlwdGlvbicpOworCQlwcmludF9zb3J0X3RoKCdvd25lcicsICRvcmRlciwgJ093bmVyJyk7CisJCXByaW50X3NvcnRfdGgoJ2FnZScsICRvcmRlciwgJ0xhc3QgQ2hhbmdlJyk7CiAJCXByaW50ICI8dGg+PC90aD5cbiIgLiAjIGZvciBsaW5rcwogCQkgICAgICAiPC90cj5cbiI7CiAJfQogCW15ICRhbHRlcm5hdGUgPSAxOworCW15ICR0YWdmaWx0ZXIgPSAkY2dpLT5wYXJhbSgnYnlfdGFnJyk7CiAJZm9yIChteSAkaSA9ICRmcm9tOyAkaSA8PSAkdG87ICRpKyspIHsKIAkJbXkgJHByID0gJHByb2plY3RzWyRpXTsKKworCQluZXh0IGlmICR0YWdmaWx0ZXIgYW5kICRzaG93X2N0YWdzIGFuZCBub3QgZ3JlcCB7IGxjICRfIGVxIGxjICR0YWdmaWx0ZXIgfSBrZXlzICV7JHByLT57J2N0YWdzJ319OworCQluZXh0IGlmICRzZWFyY2h0ZXh0IGFuZCBub3QgJHByLT57J3BhdGgnfSA9fiAvJHNlYXJjaHRleHQvCisJCQlhbmQgbm90ICRwci0+eydkZXNjcl9sb25nJ30gPX4gLyRzZWFyY2h0ZXh0LzsKKwkJIyBXZWVkIG91dCBmb3JrcyBvciBub24tbWF0Y2hpbmcgZW50cmllcyBvZiBzZWFyY2gKKwkJaWYgKCRjaGVja19mb3JrcykgeworCQkJbXkgJGZvcmtiYXNlID0gJHByb2plY3Q7ICRmb3JrYmFzZSB8fD0gJyc7ICRmb3JrYmFzZSA9fiBzI1wuZ2l0JCMvIzsKKwkJCSRmb3JrYmFzZT0iXiRmb3JrYmFzZSIgaWYgJGZvcmtiYXNlOworCQkJbmV4dCBpZiBub3QgJHNlYXJjaHRleHQgYW5kIG5vdCAkdGFnZmlsdGVyIGFuZCAkc2hvd19jdGFncworCQkJCWFuZCAkcHItPnsncGF0aCd9ID1+IG0jJGZvcmtiYXNlLiovLiojOyAjIHJlZ2V4cC1zYWZlCisJCX0KKwogCQlpZiAoJGFsdGVybmF0ZSkgewogCQkJcHJpbnQgIjx0ciBjbGFzcz1cImRhcmtcIj5cbiI7CiAJCX0gZWxzZSB7CkBAIC0zOTU4LDcgKzQzNzQsNyBAQAogIyMgYWN0aW9ucwogCiBzdWIgZ2l0X3Byb2plY3RfbGlzdCB7Ci0JbXkgJG9yZGVyID0gJGNnaS0+cGFyYW0oJ28nKTsKKwlteSAkb3JkZXIgPSAkaW5wdXRfcGFyYW1zeydvcmRlcid9OwogCWlmIChkZWZpbmVkICRvcmRlciAmJiAkb3JkZXIgIX4gbS9ub25lfHByb2plY3R8ZGVzY3J8b3duZXJ8YWdlLykgewogCQlkaWVfZXJyb3IoNDAwLCAiVW5rbm93biBvcmRlciBwYXJhbWV0ZXIiKTsKIAl9CkBAIC0zOTcxLDE3ICs0Mzg3LDIwIEBACiAJZ2l0X2hlYWRlcl9odG1sKCk7CiAJaWYgKC1mICRob21lX3RleHQpIHsKIAkJcHJpbnQgIjxkaXYgY2xhc3M9XCJpbmRleF9pbmNsdWRlXCI+XG4iOwotCQlvcGVuIChteSAkZmQsICRob21lX3RleHQpOwotCQlwcmludCA8JGZkPjsKLQkJY2xvc2UgJGZkOworCQlpbnNlcnRfZmlsZSgkaG9tZV90ZXh0KTsKIAkJcHJpbnQgIjwvZGl2PlxuIjsKIAl9CisJcHJpbnQgJGNnaS0+c3RhcnRmb3JtKC1tZXRob2QgPT4gImdldCIpIC4KKwkgICAgICAiPHAgY2xhc3M9XCJwcm9qc2VhcmNoXCI+U2VhcmNoOlxuIiAuCisJICAgICAgJGNnaS0+dGV4dGZpZWxkKC1uYW1lID0+ICJzIiwgLXZhbHVlID0+ICRzZWFyY2h0ZXh0KSAuICJcbiIgLgorCSAgICAgICI8L3A+IiAuCisJICAgICAgJGNnaS0+ZW5kX2Zvcm0oKSAuICJcbiI7CiAJZ2l0X3Byb2plY3RfbGlzdF9ib2R5KFxAbGlzdCwgJG9yZGVyKTsKIAlnaXRfZm9vdGVyX2h0bWwoKTsKIH0KIAogc3ViIGdpdF9mb3JrcyB7Ci0JbXkgJG9yZGVyID0gJGNnaS0+cGFyYW0oJ28nKTsKKwlteSAkb3JkZXIgPSAkaW5wdXRfcGFyYW1zeydvcmRlcid9OwogCWlmIChkZWZpbmVkICRvcmRlciAmJiAkb3JkZXIgIX4gbS9ub25lfHByb2plY3R8ZGVzY3J8b3duZXJ8YWdlLykgewogCQlkaWVfZXJyb3IoNDAwLCAiVW5rbm93biBvcmRlciBwYXJhbWV0ZXIiKTsKIAl9CkBAIC00MDM2LDcgKzQ0NTUsNyBAQAogCW15IEB0YWdsaXN0ICA9IGdpdF9nZXRfdGFnc19saXN0KDE2KTsKIAlteSBAaGVhZGxpc3QgPSBnaXRfZ2V0X2hlYWRzX2xpc3QoMTYpOwogCW15IEBmb3JrbGlzdDsKLQlteSAoJGNoZWNrX2ZvcmtzKSA9IGdpdHdlYl9jaGVja19mZWF0dXJlKCdmb3JrcycpOworCW15ICRjaGVja19mb3JrcyA9IGdpdHdlYl9jaGVja19mZWF0dXJlKCdmb3JrcycpOwogCiAJaWYgKCRjaGVja19mb3JrcykgewogCQlAZm9ya2xpc3QgPSBnaXRfZ2V0X3Byb2plY3RzX2xpc3QoJHByb2plY3QpOwpAQCAtNDA0NywxMCArNDQ2NiwxMCBAQAogCiAJcHJpbnQgIjxkaXYgY2xhc3M9XCJ0aXRsZVwiPiZuYnNwOzwvZGl2PlxuIjsKIAlwcmludCAiPHRhYmxlIGNsYXNzPVwicHJvamVjdHNfbGlzdFwiPlxuIiAuCi0JICAgICAgIjx0cj48dGQ+ZGVzY3JpcHRpb248L3RkPjx0ZD4iIC4gZXNjX2h0bWwoJGRlc2NyKSAuICI8L3RkPjwvdHI+XG4iIC4KLQkgICAgICAiPHRyPjx0ZD5vd25lcjwvdGQ+PHRkPiIgLiBlc2NfaHRtbCgkb3duZXIpIC4gIjwvdGQ+PC90cj5cbiI7CisJICAgICAgIjx0ciBpZD1cIm1ldGFkYXRhX2Rlc2NcIj48dGQ+ZGVzY3JpcHRpb248L3RkPjx0ZD4iIC4gZXNjX2h0bWwoJGRlc2NyKSAuICI8L3RkPjwvdHI+XG4iIC4KKwkgICAgICAiPHRyIGlkPVwibWV0YWRhdGFfb3duZXJcIj48dGQ+b3duZXI8L3RkPjx0ZD4iIC4gZXNjX2h0bWwoJG93bmVyKSAuICI8L3RkPjwvdHI+XG4iOwogCWlmIChkZWZpbmVkICRjZHsncmZjMjgyMid9KSB7Ci0JCXByaW50ICI8dHI+PHRkPmxhc3QgY2hhbmdlPC90ZD48dGQ+JGNkeydyZmMyODIyJ308L3RkPjwvdHI+XG4iOworCQlwcmludCAiPHRyIGlkPVwibWV0YWRhdGFfbGNoYW5nZVwiPjx0ZD5sYXN0IGNoYW5nZTwvdGQ+PHRkPiRjZHsncmZjMjgyMid9PC90ZD48L3RyPlxuIjsKIAl9CiAKIAkjIHVzZSBwZXIgcHJvamVjdCBnaXQgVVJMIGxpc3QgaW4gJHByb2plY3Ryb290LyRwcm9qZWN0L2Nsb25ldXJsCkBAIC00MDYwLDE5ICs0NDc5LDMyIEBACiAJQHVybF9saXN0ID0gbWFwIHsgIiRfLyRwcm9qZWN0IiB9IEBnaXRfYmFzZV91cmxfbGlzdCB1bmxlc3MgQHVybF9saXN0OwogCWZvcmVhY2ggbXkgJGdpdF91cmwgKEB1cmxfbGlzdCkgewogCQluZXh0IHVubGVzcyAkZ2l0X3VybDsKLQkJcHJpbnQgIjx0cj48dGQ+JHVybF90YWc8L3RkPjx0ZD4kZ2l0X3VybDwvdGQ+PC90cj5cbiI7CisJCXByaW50ICI8dHIgY2xhc3M9XCJtZXRhZGF0YV91cmxcIj48dGQ+JHVybF90YWc8L3RkPjx0ZD4kZ2l0X3VybDwvdGQ+PC90cj5cbiI7CiAJCSR1cmxfdGFnID0gIiI7CiAJfQorCisJIyBUYWcgY2xvdWQKKwlteSAkc2hvd19jdGFncyA9IGdpdHdlYl9jaGVja19mZWF0dXJlKCdjdGFncycpOworCWlmICgkc2hvd19jdGFncykgeworCQlteSAkY3RhZ3MgPSBnaXRfZ2V0X3Byb2plY3RfY3RhZ3MoJHByb2plY3QpOworCQlteSAkY2xvdWQgPSBnaXRfcG9wdWxhdGVfcHJvamVjdF90YWdjbG91ZCgkY3RhZ3MpOworCQlwcmludCAiPHRyIGlkPVwibWV0YWRhdGFfY3RhZ3NcIj48dGQ+Q29udGVudCB0YWdzOjxiciAvPiI7CisJCXByaW50ICI8L3RkPlxuPHRkPiIgdW5sZXNzICUkY3RhZ3M7CisJCXByaW50ICI8Zm9ybSBhY3Rpb249XCIkc2hvd19jdGFnc1wiIG1ldGhvZD1cInBvc3RcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJwXCIgdmFsdWU9XCIkcHJvamVjdFwiIC8+QWRkOiA8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwidFwiIHNpemU9XCI4XCIgLz48L2Zvcm0+IjsKKwkJcHJpbnQgIjwvdGQ+XG48dGQ+IiBpZiAlJGN0YWdzOworCQlwcmludCBnaXRfc2hvd19wcm9qZWN0X3RhZ2Nsb3VkKCRjbG91ZCwgNDgpOworCQlwcmludCAiPC90ZD48L3RyPiI7CisJfQorCiAJcHJpbnQgIjwvdGFibGU+XG4iOwogCi0JaWYgKC1zICIkcHJvamVjdHJvb3QvJHByb2plY3QvUkVBRE1FLmh0bWwiKSB7Ci0JCWlmIChvcGVuIG15ICRmZCwgIiRwcm9qZWN0cm9vdC8kcHJvamVjdC9SRUFETUUuaHRtbCIpIHsKLQkJCXByaW50ICI8ZGl2IGNsYXNzPVwidGl0bGVcIj5yZWFkbWU8L2Rpdj5cbiIgLgotCQkJICAgICAgIjxkaXYgY2xhc3M9XCJyZWFkbWVcIj5cbiI7Ci0JCQlwcmludCAkXyB3aGlsZSAoPCRmZD4pOwotCQkJcHJpbnQgIlxuPC9kaXY+XG4iOyAjIGNsYXNzPSJyZWFkbWUiCi0JCQljbG9zZSAkZmQ7Ci0JCX0KKwkjIElmIFhTUyBwcmV2ZW50aW9uIGlzIG9uLCB3ZSBkb24ndCBpbmNsdWRlIFJFQURNRS5odG1sLgorCSMgVE9ETzogQWxsb3cgYSByZWFkbWUgaW4gc29tZSBzYWZlIGZvcm1hdC4KKwlpZiAoISRwcmV2ZW50X3hzcyAmJiAtcyAiJHByb2plY3Ryb290LyRwcm9qZWN0L1JFQURNRS5odG1sIikgeworCQlwcmludCAiPGRpdiBjbGFzcz1cInRpdGxlXCI+cmVhZG1lPC9kaXY+XG4iIC4KKwkJICAgICAgIjxkaXYgY2xhc3M9XCJyZWFkbWVcIj5cbiI7CisJCWluc2VydF9maWxlKCIkcHJvamVjdHJvb3QvJHByb2plY3QvUkVBRE1FLmh0bWwiKTsKKwkJcHJpbnQgIlxuPC9kaXY+XG4iOyAjIGNsYXNzPSJyZWFkbWUiCiAJfQogCiAJIyB3ZSBuZWVkIHRvIHJlcXVlc3Qgb25lIG1vcmUgdGhhbiAxNiAoMC4uMTUpIHRvIGNoZWNrIGlmCkBAIC00MTAxLDEwICs0NTMzLDEwIEBACiAKIAlpZiAoQGZvcmtsaXN0KSB7CiAJCWdpdF9wcmludF9oZWFkZXJfZGl2KCdmb3JrcycpOwotCQlnaXRfcHJvamVjdF9saXN0X2JvZHkoXEBmb3JrbGlzdCwgdW5kZWYsIDAsIDE1LAorCQlnaXRfcHJvamVjdF9saXN0X2JvZHkoXEBmb3JrbGlzdCwgJ2FnZScsIDAsIDE1LAogCQkgICAgICAgICAgICAgICAgICAgICAgJCNmb3JrbGlzdCA8PSAxNSA/IHVuZGVmIDoKIAkJICAgICAgICAgICAgICAgICAgICAgICRjZ2ktPmEoey1ocmVmID0+IGhyZWYoYWN0aW9uPT4iZm9ya3MiKX0sICIuLi4iKSwKLQkJICAgICAgICAgICAgICAgICAgICAgICdub2hlYWRlcicpOworCQkgICAgICAgICAgICAgICAgICAgICAgJ25vX2hlYWRlcicpOwogCX0KIAogCWdpdF9mb290ZXJfaHRtbCgpOwpAQCAtNDMxMywxMCArNDc0NSwyMSBAQAogCQkkc2F2ZV9hcyAuPSAnLnR4dCc7CiAJfQogCisJIyBXaXRoIFhTUyBwcmV2ZW50aW9uIG9uLCBibG9icyBvZiBhbGwgdHlwZXMgZXhjZXB0IGEgZmV3IGtub3duIHNhZmUKKwkjIG9uZXMgYXJlIHNlcnZlZCB3aXRoICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50IiB0byBtYWtlIHN1cmUKKwkjIHRoZXkgZG9uJ3QgcnVuIGluIG91ciBzZWN1cml0eSBkb21haW4uICBGb3IgY2VydGFpbiBpbWFnZSB0eXBlcywKKwkjIGJsb2IgdmlldyB3cml0ZXMgYW4gPGltZz4gdGFnIHJlZmVycmluZyB0byBibG9iX3BsYWluIHZpZXcsIGFuZCB3ZQorCSMgd2FudCB0byBiZSBzdXJlIG5vdCB0byBicmVhayB0aGF0IGJ5IHNlcnZpbmcgdGhlIGltYWdlIGFzIGFuCisJIyBhdHRhY2htZW50ICh0aG91Z2ggRmlyZWZveCAzIGRvZXNuJ3Qgc2VlbSB0byBjYXJlKS4KKwlteSAkc2FuZGJveCA9ICRwcmV2ZW50X3hzcyAmJgorCQkkdHlwZSAhfiBtIV4oPzp0ZXh0L3BsYWlufGltYWdlLyg/OmdpZnxwbmd8anBlZykpJCE7CisKIAlwcmludCAkY2dpLT5oZWFkZXIoCiAJCS10eXBlID0+ICR0eXBlLAogCQktZXhwaXJlcyA9PiAkZXhwaXJlcywKLQkJLWNvbnRlbnRfZGlzcG9zaXRpb24gPT4gJ2lubGluZTsgZmlsZW5hbWU9IicgLiAkc2F2ZV9hcyAuICciJyk7CisJCS1jb250ZW50X2Rpc3Bvc2l0aW9uID0+CisJCQkoJHNhbmRib3ggPyAnYXR0YWNobWVudCcgOiAnaW5saW5lJykKKwkJCS4gJzsgZmlsZW5hbWU9IicgLiAkc2F2ZV9hcyAuICciJyk7CiAJdW5kZWYgJC87CiAJYmlubW9kZSBTVERPVVQsICc6cmF3JzsKIAlwcmludCA8JGZkPjsKQEAgLTQzNDEsNyArNDc4NCw3IEBACiAJCSRleHBpcmVzID0gIisxZCI7CiAJfQogCi0JbXkgKCRoYXZlX2JsYW1lKSA9IGdpdHdlYl9jaGVja19mZWF0dXJlKCdibGFtZScpOworCW15ICRoYXZlX2JsYW1lID0gZ2l0d2ViX2NoZWNrX2ZlYXR1cmUoJ2JsYW1lJyk7CiAJb3BlbiBteSAkZmQsICItfCIsIGdpdF9jbWQoKSwgImNhdC1maWxlIiwgImJsb2IiLCAkaGFzaAogCQlvciBkaWVfZXJyb3IoNTAwLCAiQ291bGRuJ3QgY2F0ICRmaWxlX25hbWUsICRoYXNoIik7CiAJbXkgJG1pbWV0eXBlID0gYmxvYl9taW1ldHlwZSgkZmQsICRmaWxlX25hbWUpOwpAQCAtNDQzNCw3ICs0ODc3LDcgQEAKIAlteSAkcmVmID0gZm9ybWF0X3JlZl9tYXJrZXIoJHJlZnMsICRoYXNoX2Jhc2UpOwogCWdpdF9oZWFkZXJfaHRtbCgpOwogCW15ICRiYXNlZGlyID0gJyc7Ci0JbXkgKCRoYXZlX2JsYW1lKSA9IGdpdHdlYl9jaGVja19mZWF0dXJlKCdibGFtZScpOworCW15ICRoYXZlX2JsYW1lID0gZ2l0d2ViX2NoZWNrX2ZlYXR1cmUoJ2JsYW1lJyk7CiAJaWYgKGRlZmluZWQgJGhhc2hfYmFzZSAmJiAobXkgJWNvID0gcGFyc2VfY29tbWl0KCRoYXNoX2Jhc2UpKSkgewogCQlteSBAdmlld3NfbmF2ID0gKCk7CiAJCWlmIChkZWZpbmVkICRmaWxlX25hbWUpIHsKQEAgLTQ1MTIsMjAgKzQ5NTUsMTcgQEAKIH0KIAogc3ViIGdpdF9zbmFwc2hvdCB7Ci0JbXkgQHN1cHBvcnRlZF9mbXRzID0gZ2l0d2ViX2NoZWNrX2ZlYXR1cmUoJ3NuYXBzaG90Jyk7Ci0JQHN1cHBvcnRlZF9mbXRzID0gZmlsdGVyX3NuYXBzaG90X2ZtdHMoQHN1cHBvcnRlZF9mbXRzKTsKLQotCW15ICRmb3JtYXQgPSAkY2dpLT5wYXJhbSgnc2YnKTsKLQlpZiAoIUBzdXBwb3J0ZWRfZm10cykgeworCW15ICRmb3JtYXQgPSAkaW5wdXRfcGFyYW1zeydzbmFwc2hvdF9mb3JtYXQnfTsKKwlpZiAoIUBzbmFwc2hvdF9mbXRzKSB7CiAJCWRpZV9lcnJvcig0MDMsICJTbmFwc2hvdHMgbm90IGFsbG93ZWQiKTsKIAl9CiAJIyBkZWZhdWx0IHRvIGZpcnN0IHN1cHBvcnRlZCBzbmFwc2hvdCBmb3JtYXQKLQkkZm9ybWF0IHx8PSAkc3VwcG9ydGVkX2ZtdHNbMF07CisJJGZvcm1hdCB8fD0gJHNuYXBzaG90X2ZtdHNbMF07CiAJaWYgKCRmb3JtYXQgIX4gbS9eW2EtejAtOV0rJC8pIHsKIAkJZGllX2Vycm9yKDQwMCwgIkludmFsaWQgc25hcHNob3QgZm9ybWF0IHBhcmFtZXRlciIpOwogCX0gZWxzaWYgKCFleGlzdHMoJGtub3duX3NuYXBzaG90X2Zvcm1hdHN7JGZvcm1hdH0pKSB7CiAJCWRpZV9lcnJvcig0MDAsICJVbmtub3duIHNuYXBzaG90IGZvcm1hdCIpOwotCX0gZWxzaWYgKCFncmVwKCRfIGVxICRmb3JtYXQsIEBzdXBwb3J0ZWRfZm10cykpIHsKKwl9IGVsc2lmICghZ3JlcCgkXyBlcSAkZm9ybWF0LCBAc25hcHNob3RfZm10cykpIHsKIAkJZGllX2Vycm9yKDQwMywgIlVuc3VwcG9ydGVkIHNuYXBzaG90IGZvcm1hdCIpOwogCX0KIApAQCAtNTQwMSw3ICs1ODQxLDcgQEAKIDxkdD48Yj5jb21taXQ8L2I+PC9kdD4KIDxkZD5UaGUgY29tbWl0IG1lc3NhZ2VzIGFuZCBhdXRob3JzaGlwIGluZm9ybWF0aW9uIHdpbGwgYmUgc2Nhbm5lZCBmb3IgdGhlIGdpdmVuIHBhdHRlcm4uPC9kZD4KIEVPVAotCW15ICgkaGF2ZV9ncmVwKSA9IGdpdHdlYl9jaGVja19mZWF0dXJlKCdncmVwJyk7CisJbXkgJGhhdmVfZ3JlcCA9IGdpdHdlYl9jaGVja19mZWF0dXJlKCdncmVwJyk7CiAJaWYgKCRoYXZlX2dyZXApIHsKIAkJcHJpbnQgPDxFT1Q7CiA8ZHQ+PGI+Z3JlcDwvYj48L2R0PgpAQCAtNTQxOCw3ICs1ODU4LDcgQEAKIDxkdD48Yj5jb21taXR0ZXI8L2I+PC9kdD4KIDxkZD5OYW1lIGFuZCBlLW1haWwgb2YgdGhlIGNvbW1pdHRlciBhbmQgZGF0ZSBvZiBjb21taXQgd2lsbCBiZSBzY2FubmVkIGZvciB0aGUgZ2l2ZW4gcGF0dGVybi48L2RkPgogRU9UCi0JbXkgKCRoYXZlX3BpY2theGUpID0gZ2l0d2ViX2NoZWNrX2ZlYXR1cmUoJ3BpY2theGUnKTsKKwlteSAkaGF2ZV9waWNrYXhlID0gZ2l0d2ViX2NoZWNrX2ZlYXR1cmUoJ3BpY2theGUnKTsKIAlpZiAoJGhhdmVfcGlja2F4ZSkgewogCQlwcmludCA8PEVPVDsKIDxkdD48Yj5waWNrYXhlPC9iPjwvZHQ+CkBAIC01NDQyLDcgKzU4ODIsMTEgQEAKIAl9CiAJbXkgJHJlZnMgPSBnaXRfZ2V0X3JlZmVyZW5jZXMoKTsKIAotCW15IEBjb21taXRsaXN0ID0gcGFyc2VfY29tbWl0cygkaGFzaCwgMTAxLCAoMTAwICogJHBhZ2UpKTsKKwlteSAkY29tbWl0X2hhc2ggPSAkaGFzaDsKKwlpZiAoZGVmaW5lZCAkaGFzaF9wYXJlbnQpIHsKKwkJJGNvbW1pdF9oYXNoID0gIiRoYXNoX3BhcmVudC4uJGhhc2giOworCX0KKwlteSBAY29tbWl0bGlzdCA9IHBhcnNlX2NvbW1pdHMoJGNvbW1pdF9oYXNoLCAxMDEsICgxMDAgKiAkcGFnZSkpOwogCiAJbXkgJHBhZ2luZ19uYXYgPSBmb3JtYXRfcGFnaW5nX25hdignc2hvcnRsb2cnLCAkaGFzaCwgJGhlYWQsICRwYWdlLCAkI2NvbW1pdGxpc3QgPj0gMTAwKTsKIAlteSAkbmV4dF9saW5rID0gJyc7CkBAIC01NDY2LDcgKzU5MTAsNyBAQAogCiBzdWIgZ2l0X2ZlZWQgewogCW15ICRmb3JtYXQgPSBzaGlmdCB8fCAnYXRvbSc7Ci0JbXkgKCRoYXZlX2JsYW1lKSA9IGdpdHdlYl9jaGVja19mZWF0dXJlKCdibGFtZScpOworCW15ICRoYXZlX2JsYW1lID0gZ2l0d2ViX2NoZWNrX2ZlYXR1cmUoJ2JsYW1lJyk7CiAKIAkjIEF0b206IGh0dHA6Ly93d3cuYXRvbWVuYWJsZWQub3JnL2RldmVsb3BlcnMvc3luZGljYXRpb24vCiAJIyBSU1M6ICBodHRwOi8vd3d3Lm5vdGVzdGlwcy5jb20vODAyNTZCM0EwMDdGMjY5Mi8xL05BTU81UDlVUFEKZGlmZiAtLWdpdCBhL2dyYXBoLmMgYi9ncmFwaC5jCmluZGV4IGUyNjMzZjguLjE2MmE1MTYgMTAwNjQ0Ci0tLSBhL2dyYXBoLmMKKysrIGIvZ3JhcGguYwpAQCAtNCw2ICs0LDQzIEBACiAjaW5jbHVkZSAiZGlmZi5oIgogI2luY2x1ZGUgInJldmlzaW9uLmgiCiAKKy8qIEludGVybmFsIEFQSSAqLworCisvKgorICogT3V0cHV0IHRoZSBuZXh0IGxpbmUgZm9yIGEgZ3JhcGguCisgKiBUaGlzIGZvcm1hdHMgdGhlIG5leHQgZ3JhcGggbGluZSBpbnRvIHRoZSBzcGVjaWZpZWQgc3RyYnVmLiAgSXQgaXMgbm90CisgKiB0ZXJtaW5hdGVkIHdpdGggYSBuZXdsaW5lLgorICoKKyAqIFJldHVybnMgMSBpZiB0aGUgbGluZSBpbmNsdWRlcyB0aGUgY3VycmVudCBjb21taXQsIGFuZCAwIG90aGVyd2lzZS4KKyAqIGdyYXBoX25leHRfbGluZSgpIHdpbGwgcmV0dXJuIDEgZXhhY3RseSBvbmNlIGZvciBlYWNoIHRpbWUKKyAqIGdyYXBoX3VwZGF0ZSgpIGlzIGNhbGxlZC4KKyAqLworc3RhdGljIGludCBncmFwaF9uZXh0X2xpbmUoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgsIHN0cnVjdCBzdHJidWYgKnNiKTsKKworLyoKKyAqIE91dHB1dCBhIHBhZGRpbmcgbGluZSBpbiB0aGUgZ3JhcGguCisgKiBUaGlzIGlzIHNpbWlsYXIgdG8gZ3JhcGhfbmV4dF9saW5lKCkuICBIb3dldmVyLCBpdCBpcyBndWFyYW50ZWVkIHRvCisgKiBuZXZlciBwcmludCB0aGUgY3VycmVudCBjb21taXQgbGluZS4gIEluc3RlYWQsIGlmIHRoZSBjb21taXQgbGluZSBpcworICogbmV4dCwgaXQgd2lsbCBzaW1wbHkgb3V0cHV0IGEgbGluZSBvZiB2ZXJ0aWNhbCBwYWRkaW5nLCBleHRlbmRpbmcgdGhlCisgKiBicmFuY2ggbGluZXMgZG93bndhcmRzLCBidXQgbGVhdmluZyB0aGVtIG90aGVyd2lzZSB1bmNoYW5nZWQuCisgKi8KK3N0YXRpYyB2b2lkIGdyYXBoX3BhZGRpbmdfbGluZShzdHJ1Y3QgZ2l0X2dyYXBoICpncmFwaCwgc3RydWN0IHN0cmJ1ZiAqc2IpOworCisvKgorICogUHJpbnQgYSBzdHJidWYgdG8gc3Rkb3V0LiAgSWYgdGhlIGdyYXBoIGlzIG5vbi1OVUxMLCBhbGwgbGluZXMgYnV0IHRoZQorICogZmlyc3Qgd2lsbCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBncmFwaCBvdXRwdXQuCisgKgorICogSWYgdGhlIHN0cmJ1ZiBlbmRzIHdpdGggYSBuZXdsaW5lLCB0aGUgb3V0cHV0IHdpbGwgZW5kIGFmdGVyIHRoaXMKKyAqIG5ld2xpbmUuICBBIG5ldyBncmFwaCBsaW5lIHdpbGwgbm90IGJlIHByaW50ZWQgYWZ0ZXIgdGhlIGZpbmFsIG5ld2xpbmUuCisgKiBJZiB0aGUgc3RyYnVmIGlzIGVtcHR5LCBubyBvdXRwdXQgd2lsbCBiZSBwcmludGVkLgorICoKKyAqIFNpbmNlIHRoZSBmaXJzdCBsaW5lIHdpbGwgbm90IGluY2x1ZGUgdGhlIGdyYXBoIG91cHV0LCB0aGUgY2FsbGVyIGlzCisgKiByZXNwb25zaWJsZSBmb3IgcHJpbnRpbmcgdGhpcyBsaW5lJ3MgZ3JhcGggKHBlcmhhcHMgdmlhCisgKiBncmFwaF9zaG93X2NvbW1pdCgpIG9yIGdyYXBoX3Nob3dfb25lbGluZSgpKSBiZWZvcmUgY2FsbGluZworICogZ3JhcGhfc2hvd19zdHJidWYoKS4KKyAqLworc3RhdGljIHZvaWQgZ3JhcGhfc2hvd19zdHJidWYoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgsIHN0cnVjdCBzdHJidWYgY29uc3QgKnNiKTsKKwogLyoKICAqIFRPRE86CiAgKiAtIEFkZCBjb2xvcnMgdG8gdGhlIGdyYXBoLgpAQCAtMTgwLDE0ICsyMTcsNiBAQAogCXJldHVybiBncmFwaDsKIH0KIAotdm9pZCBncmFwaF9yZWxlYXNlKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoKQotewotCWZyZWUoZ3JhcGgtPmNvbHVtbnMpOwotCWZyZWUoZ3JhcGgtPm5ld19jb2x1bW5zKTsKLQlmcmVlKGdyYXBoLT5tYXBwaW5nKTsKLQlmcmVlKGdyYXBoKTsKLX0KLQogc3RhdGljIHZvaWQgZ3JhcGhfdXBkYXRlX3N0YXRlKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLCBlbnVtIGdyYXBoX3N0YXRlIHMpCiB7CiAJZ3JhcGgtPnByZXZfc3RhdGUgPSBncmFwaC0+c3RhdGU7CkBAIC02ODUsNyArNzE0LDcgQEAKIAlzdHJidWZfYWRkY2goc2IsICcqJyk7CiB9CiAKLXZvaWQgZ3JhcGhfb3V0cHV0X2NvbW1pdF9saW5lKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLCBzdHJ1Y3Qgc3RyYnVmICpzYikKK3N0YXRpYyB2b2lkIGdyYXBoX291dHB1dF9jb21taXRfbGluZShzdHJ1Y3QgZ2l0X2dyYXBoICpncmFwaCwgc3RydWN0IHN0cmJ1ZiAqc2IpCiB7CiAJaW50IHNlZW5fdGhpcyA9IDA7CiAJaW50IGksIGo7CkBAIC03NjAsNyArNzg5LDcgQEAKIAkJZ3JhcGhfdXBkYXRlX3N0YXRlKGdyYXBoLCBHUkFQSF9DT0xMQVBTSU5HKTsKIH0KIAotdm9pZCBncmFwaF9vdXRwdXRfcG9zdF9tZXJnZV9saW5lKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLCBzdHJ1Y3Qgc3RyYnVmICpzYikKK3N0YXRpYyB2b2lkIGdyYXBoX291dHB1dF9wb3N0X21lcmdlX2xpbmUoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgsIHN0cnVjdCBzdHJidWYgKnNiKQogewogCWludCBzZWVuX3RoaXMgPSAwOwogCWludCBpLCBqOwpAQCAtODAxLDcgKzgzMCw3IEBACiAJCWdyYXBoX3VwZGF0ZV9zdGF0ZShncmFwaCwgR1JBUEhfQ09MTEFQU0lORyk7CiB9CiAKLXZvaWQgZ3JhcGhfb3V0cHV0X2NvbGxhcHNpbmdfbGluZShzdHJ1Y3QgZ2l0X2dyYXBoICpncmFwaCwgc3RydWN0IHN0cmJ1ZiAqc2IpCitzdGF0aWMgdm9pZCBncmFwaF9vdXRwdXRfY29sbGFwc2luZ19saW5lKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLCBzdHJ1Y3Qgc3RyYnVmICpzYikKIHsKIAlpbnQgaTsKIAlpbnQgKnRtcF9tYXBwaW5nOwpAQCAtOTA2LDcgKzkzNSw3IEBACiAJCWdyYXBoX3VwZGF0ZV9zdGF0ZShncmFwaCwgR1JBUEhfUEFERElORyk7CiB9CiAKLWludCBncmFwaF9uZXh0X2xpbmUoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgsIHN0cnVjdCBzdHJidWYgKnNiKQorc3RhdGljIGludCBncmFwaF9uZXh0X2xpbmUoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgsIHN0cnVjdCBzdHJidWYgKnNiKQogewogCXN3aXRjaCAoZ3JhcGgtPnN0YXRlKSB7CiAJY2FzZSBHUkFQSF9QQURESU5HOgpAQCAtOTMzLDcgKzk2Miw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLXZvaWQgZ3JhcGhfcGFkZGluZ19saW5lKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLCBzdHJ1Y3Qgc3RyYnVmICpzYikKK3N0YXRpYyB2b2lkIGdyYXBoX3BhZGRpbmdfbGluZShzdHJ1Y3QgZ2l0X2dyYXBoICpncmFwaCwgc3RydWN0IHN0cmJ1ZiAqc2IpCiB7CiAJaW50IGksIGo7CiAKQEAgLTk4MSwxNCArMTAxMCwxMiBAQAogCiB2b2lkIGdyYXBoX3Nob3dfY29tbWl0KHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoKQogewotCXN0cnVjdCBzdHJidWYgbXNnYnVmOworCXN0cnVjdCBzdHJidWYgbXNnYnVmID0gU1RSQlVGX0lOSVQ7CiAJaW50IHNob3duX2NvbW1pdF9saW5lID0gMDsKIAogCWlmICghZ3JhcGgpCiAJCXJldHVybjsKIAotCXN0cmJ1Zl9pbml0KCZtc2didWYsIDApOwotCiAJd2hpbGUgKCFzaG93bl9jb21taXRfbGluZSkgewogCQlzaG93bl9jb21taXRfbGluZSA9IGdyYXBoX25leHRfbGluZShncmFwaCwgJm1zZ2J1Zik7CiAJCWZ3cml0ZShtc2didWYuYnVmLCBzaXplb2YoY2hhciksIG1zZ2J1Zi5sZW4sIHN0ZG91dCk7CkBAIC0xMDAyLDEyICsxMDI5LDExIEBACiAKIHZvaWQgZ3JhcGhfc2hvd19vbmVsaW5lKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoKQogewotCXN0cnVjdCBzdHJidWYgbXNnYnVmOworCXN0cnVjdCBzdHJidWYgbXNnYnVmID0gU1RSQlVGX0lOSVQ7CiAKIAlpZiAoIWdyYXBoKQogCQlyZXR1cm47CiAKLQlzdHJidWZfaW5pdCgmbXNnYnVmLCAwKTsKIAlncmFwaF9uZXh0X2xpbmUoZ3JhcGgsICZtc2didWYpOwogCWZ3cml0ZShtc2didWYuYnVmLCBzaXplb2YoY2hhciksIG1zZ2J1Zi5sZW4sIHN0ZG91dCk7CiAJc3RyYnVmX3JlbGVhc2UoJm1zZ2J1Zik7CkBAIC0xMDE1LDEyICsxMDQxLDExIEBACiAKIHZvaWQgZ3JhcGhfc2hvd19wYWRkaW5nKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoKQogewotCXN0cnVjdCBzdHJidWYgbXNnYnVmOworCXN0cnVjdCBzdHJidWYgbXNnYnVmID0gU1RSQlVGX0lOSVQ7CiAKIAlpZiAoIWdyYXBoKQogCQlyZXR1cm47CiAKLQlzdHJidWZfaW5pdCgmbXNnYnVmLCAwKTsKIAlncmFwaF9wYWRkaW5nX2xpbmUoZ3JhcGgsICZtc2didWYpOwogCWZ3cml0ZShtc2didWYuYnVmLCBzaXplb2YoY2hhciksIG1zZ2J1Zi5sZW4sIHN0ZG91dCk7CiAJc3RyYnVmX3JlbGVhc2UoJm1zZ2J1Zik7CkBAIC0xMDI4LDcgKzEwNTMsNyBAQAogCiBpbnQgZ3JhcGhfc2hvd19yZW1haW5kZXIoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgpCiB7Ci0Jc3RydWN0IHN0cmJ1ZiBtc2didWY7CisJc3RydWN0IHN0cmJ1ZiBtc2didWYgPSBTVFJCVUZfSU5JVDsKIAlpbnQgc2hvd24gPSAwOwogCiAJaWYgKCFncmFwaCkKQEAgLTEwMzcsNyArMTA2Miw2IEBACiAJaWYgKGdyYXBoX2lzX2NvbW1pdF9maW5pc2hlZChncmFwaCkpCiAJCXJldHVybiAwOwogCi0Jc3RyYnVmX2luaXQoJm1zZ2J1ZiwgMCk7CiAJZm9yICg7OykgewogCQlncmFwaF9uZXh0X2xpbmUoZ3JhcGgsICZtc2didWYpOwogCQlmd3JpdGUobXNnYnVmLmJ1Ziwgc2l6ZW9mKGNoYXIpLCBtc2didWYubGVuLCBzdGRvdXQpOwpAQCAtMTA1NSw3ICsxMDc5LDcgQEAKIH0KIAogCi12b2lkIGdyYXBoX3Nob3dfc3RyYnVmKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLCBzdHJ1Y3Qgc3RyYnVmIGNvbnN0ICpzYikKK3N0YXRpYyB2b2lkIGdyYXBoX3Nob3dfc3RyYnVmKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLCBzdHJ1Y3Qgc3RyYnVmIGNvbnN0ICpzYikKIHsKIAljaGFyICpwOwogCmRpZmYgLS1naXQgYS9ncmFwaC5oIGIvZ3JhcGguaAppbmRleCBlYWI0ZTNkLi5iYzMwZDY4IDEwMDY0NAotLS0gYS9ncmFwaC5oCisrKyBiL2dyYXBoLmgKQEAgLTExLDExICsxMSw2IEBACiBzdHJ1Y3QgZ2l0X2dyYXBoICpncmFwaF9pbml0KHN0cnVjdCByZXZfaW5mbyAqb3B0KTsKIAogLyoKLSAqIERlc3Ryb3kgYSBzdHJ1Y3QgZ2l0X2dyYXBoIGFuZCBmcmVlIGFzc29jaWF0ZWQgbWVtb3J5LgotICovCi12b2lkIGdyYXBoX3JlbGVhc2Uoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgpOwotCi0vKgogICogVXBkYXRlIGEgZ2l0X2dyYXBoIHdpdGggYSBuZXcgY29tbWl0LgogICogVGhpcyB3aWxsIGNhdXNlIHRoZSBncmFwaCB0byBiZWdpbiBvdXRwdXR0aW5nIGxpbmVzIGZvciB0aGUgbmV3IGNvbW1pdAogICogdGhlIG5leHQgdGltZSBncmFwaF9uZXh0X2xpbmUoKSBpcyBjYWxsZWQuCkBAIC0yNywyNiArMjIsNiBAQAogdm9pZCBncmFwaF91cGRhdGUoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgsIHN0cnVjdCBjb21taXQgKmNvbW1pdCk7CiAKIC8qCi0gKiBPdXRwdXQgdGhlIG5leHQgbGluZSBmb3IgYSBncmFwaC4KLSAqIFRoaXMgZm9ybWF0cyB0aGUgbmV4dCBncmFwaCBsaW5lIGludG8gdGhlIHNwZWNpZmllZCBzdHJidWYuICBJdCBpcyBub3QKLSAqIHRlcm1pbmF0ZWQgd2l0aCBhIG5ld2xpbmUuCi0gKgotICogUmV0dXJucyAxIGlmIHRoZSBsaW5lIGluY2x1ZGVzIHRoZSBjdXJyZW50IGNvbW1pdCwgYW5kIDAgb3RoZXJ3aXNlLgotICogZ3JhcGhfbmV4dF9saW5lKCkgd2lsbCByZXR1cm4gMSBleGFjdGx5IG9uY2UgZm9yIGVhY2ggdGltZQotICogZ3JhcGhfdXBkYXRlKCkgaXMgY2FsbGVkLgotICovCi1pbnQgZ3JhcGhfbmV4dF9saW5lKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLCBzdHJ1Y3Qgc3RyYnVmICpzYik7Ci0KLS8qCi0gKiBPdXRwdXQgYSBwYWRkaW5nIGxpbmUgaW4gdGhlIGdyYXBoLgotICogVGhpcyBpcyBzaW1pbGFyIHRvIGdyYXBoX25leHRfbGluZSgpLiAgSG93ZXZlciwgaXQgaXMgZ3VhcmFudGVlZCB0bwotICogbmV2ZXIgcHJpbnQgdGhlIGN1cnJlbnQgY29tbWl0IGxpbmUuICBJbnN0ZWFkLCBpZiB0aGUgY29tbWl0IGxpbmUgaXMKLSAqIG5leHQsIGl0IHdpbGwgc2ltcGx5IG91dHB1dCBhIGxpbmUgb2YgdmVydGljYWwgcGFkZGluZywgZXh0ZW5kaW5nIHRoZQotICogYnJhbmNoIGxpbmVzIGRvd253YXJkcywgYnV0IGxlYXZpbmcgdGhlbSBvdGhlcndpc2UgdW5jaGFuZ2VkLgotICovCi12b2lkIGdyYXBoX3BhZGRpbmdfbGluZShzdHJ1Y3QgZ2l0X2dyYXBoICpncmFwaCwgc3RydWN0IHN0cmJ1ZiAqc2IpOwotCi0vKgogICogRGV0ZXJtaW5lIGlmIGEgZ3JhcGggaGFzIGZpbmlzaGVkIG91dHB1dHRpbmcgbGluZXMgZm9yIHRoZSBjdXJyZW50CiAgKiBjb21taXQuCiAgKgpAQCAtOTAsMjEgKzY1LDYgQEAKIGludCBncmFwaF9zaG93X3JlbWFpbmRlcihzdHJ1Y3QgZ2l0X2dyYXBoICpncmFwaCk7CiAKIC8qCi0gKiBQcmludCBhIHN0cmJ1ZiB0byBzdGRvdXQuICBJZiB0aGUgZ3JhcGggaXMgbm9uLU5VTEwsIGFsbCBsaW5lcyBidXQgdGhlCi0gKiBmaXJzdCB3aWxsIGJlIHByZWZpeGVkIHdpdGggdGhlIGdyYXBoIG91dHB1dC4KLSAqCi0gKiBJZiB0aGUgc3RyYnVmIGVuZHMgd2l0aCBhIG5ld2xpbmUsIHRoZSBvdXRwdXQgd2lsbCBlbmQgYWZ0ZXIgdGhpcwotICogbmV3bGluZS4gIEEgbmV3IGdyYXBoIGxpbmUgd2lsbCBub3QgYmUgcHJpbnRlZCBhZnRlciB0aGUgZmluYWwgbmV3bGluZS4KLSAqIElmIHRoZSBzdHJidWYgaXMgZW1wdHksIG5vIG91dHB1dCB3aWxsIGJlIHByaW50ZWQuCi0gKgotICogU2luY2UgdGhlIGZpcnN0IGxpbmUgd2lsbCBub3QgaW5jbHVkZSB0aGUgZ3JhcGggb3VwdXQsIHRoZSBjYWxsZXIgaXMKLSAqIHJlc3BvbnNpYmxlIGZvciBwcmludGluZyB0aGlzIGxpbmUncyBncmFwaCAocGVyaGFwcyB2aWEKLSAqIGdyYXBoX3Nob3dfY29tbWl0KCkgb3IgZ3JhcGhfc2hvd19vbmVsaW5lKCkpIGJlZm9yZSBjYWxsaW5nCi0gKiBncmFwaF9zaG93X3N0cmJ1ZigpLgotICovCi12b2lkIGdyYXBoX3Nob3dfc3RyYnVmKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLCBzdHJ1Y3Qgc3RyYnVmIGNvbnN0ICpzYik7Ci0KLS8qCiAgKiBQcmludCBhIGNvbW1pdCBtZXNzYWdlIHN0cmJ1ZiBhbmQgdGhlIHJlbWFpbmRlciBvZiB0aGUgZ3JhcGggdG8gc3Rkb3V0LgogICoKICAqIFRoaXMgaXMgc2ltaWxhciB0byBncmFwaF9zaG93X3N0cmJ1ZigpLCBidXQgaXQgYWx3YXlzIHByaW50cyB0aGUKZGlmZiAtLWdpdCBhL2dyZXAuYyBiL2dyZXAuYwppbmRleCAxM2MxOGZmLi42MDBmNjlmIDEwMDY0NAotLS0gYS9ncmVwLmMKKysrIGIvZ3JlcC5jCkBAIC0yMzksNiArMjM5LDggQEAKIHN0YXRpYyB2b2lkIHNob3dfbGluZShzdHJ1Y3QgZ3JlcF9vcHQgKm9wdCwgY29uc3QgY2hhciAqYm9sLCBjb25zdCBjaGFyICplb2wsCiAJCSAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGxubywgY2hhciBzaWduKQogeworCWlmIChvcHQtPm51bGxfZm9sbG93aW5nX25hbWUpCisJCXNpZ24gPSAnXDAnOwogCWlmIChvcHQtPnBhdGhuYW1lKQogCQlwcmludGYoIiVzJWMiLCBuYW1lLCBzaWduKTsKIAlpZiAob3B0LT5saW5lbnVtKQpAQCAtMjQ2LDYgKzI0OCwxMSBAQAogCXByaW50ZigiJS4qc1xuIiwgKGludCkoZW9sLWJvbCksIGJvbCk7CiB9CiAKK3N0YXRpYyB2b2lkIHNob3dfbmFtZShzdHJ1Y3QgZ3JlcF9vcHQgKm9wdCwgY29uc3QgY2hhciAqbmFtZSkKK3sKKwlwcmludGYoIiVzJWMiLCBuYW1lLCBvcHQtPm51bGxfZm9sbG93aW5nX25hbWUgPyAnXDAnIDogJ1xuJyk7Cit9CisKIHN0YXRpYyBpbnQgZml4bWF0Y2goY29uc3QgY2hhciAqcGF0dGVybiwgY2hhciAqbGluZSwgcmVnbWF0Y2hfdCAqbWF0Y2gpCiB7CiAJY2hhciAqaGl0ID0gc3Ryc3RyKGxpbmUsIHBhdHRlcm4pOwpAQCAtNDg5LDcgKzQ5Niw3IEBACiAJCQkJcmV0dXJuIDE7CiAJCQl9CiAJCQlpZiAob3B0LT5uYW1lX29ubHkpIHsKLQkJCQlwcmludGYoIiVzXG4iLCBuYW1lKTsKKwkJCQlzaG93X25hbWUob3B0LCBuYW1lKTsKIAkJCQlyZXR1cm4gMTsKIAkJCX0KIAkJCS8qIEhpdCBhdCB0aGlzIGxpbmUuICBJZiB3ZSBoYXZlbid0IHNob3duIHRoZQpAQCAtNTU1LDcgKzU2Miw3IEBACiAJCXJldHVybiAwOwogCWlmIChvcHQtPnVubWF0Y2hfbmFtZV9vbmx5KSB7CiAJCS8qIFdlIGRpZCBub3Qgc2VlIGFueSBoaXQsIHNvIHdlIHdhbnQgdG8gc2hvdyB0aGlzICovCi0JCXByaW50ZigiJXNcbiIsIG5hbWUpOworCQlzaG93X25hbWUob3B0LCBuYW1lKTsKIAkJcmV0dXJuIDE7CiAJfQogCkBAIC01NjUsNyArNTcyLDggQEAKIAkgKiBtYWtlIGl0IGFub3RoZXIgb3B0aW9uPyAgRm9yIG5vdyBzdXBwcmVzcyB0aGVtLgogCSAqLwogCWlmIChvcHQtPmNvdW50ICYmIGNvdW50KQotCQlwcmludGYoIiVzOiV1XG4iLCBuYW1lLCBjb3VudCk7CisJCXByaW50ZigiJXMlYyV1XG4iLCBuYW1lLAorCQkgICAgICAgb3B0LT5udWxsX2ZvbGxvd2luZ19uYW1lID8gJ1wwJyA6ICc6JywgY291bnQpOwogCXJldHVybiAhIWxhc3RfaGl0OwogfQogCmRpZmYgLS1naXQgYS9ncmVwLmggYi9ncmVwLmgKaW5kZXggNTliM2Y4Ny4uNDVhMjIyZCAxMDA2NDQKLS0tIGEvZ3JlcC5oCisrKyBiL2dyZXAuaApAQCAtNzQsNiArNzQsNyBAQAogCXVuc2lnbmVkIGV4dGVuZGVkOjE7CiAJdW5zaWduZWQgcmVsYXRpdmU6MTsKIAl1bnNpZ25lZCBwYXRobmFtZToxOworCXVuc2lnbmVkIG51bGxfZm9sbG93aW5nX25hbWU6MTsKIAlpbnQgcmVnZmxhZ3M7CiAJdW5zaWduZWQgcHJlX2NvbnRleHQ7CiAJdW5zaWduZWQgcG9zdF9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvaGFzaC1vYmplY3QuYyBiL2hhc2gtb2JqZWN0LmMKaW5kZXggNDZjMDZhOS4uYWRmZDUzMyAxMDA2NDQKLS0tIGEvaGFzaC1vYmplY3QuYworKysgYi9oYXNoLW9iamVjdC5jCkBAIC03LDE2ICs3LDE0IEBACiAjaW5jbHVkZSAiY2FjaGUuaCIKICNpbmNsdWRlICJibG9iLmgiCiAjaW5jbHVkZSAicXVvdGUuaCIKKyNpbmNsdWRlICJwYXJzZS1vcHRpb25zLmgiCiAKLXN0YXRpYyB2b2lkIGhhc2hfb2JqZWN0KGNvbnN0IGNoYXIgKnBhdGgsIGVudW0gb2JqZWN0X3R5cGUgdHlwZSwgaW50IHdyaXRlX29iamVjdCkKK3N0YXRpYyB2b2lkIGhhc2hfZmQoaW50IGZkLCBjb25zdCBjaGFyICp0eXBlLCBpbnQgd3JpdGVfb2JqZWN0LCBjb25zdCBjaGFyICpwYXRoKQogewotCWludCBmZDsKIAlzdHJ1Y3Qgc3RhdCBzdDsKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwotCWZkID0gb3BlbihwYXRoLCBPX1JET05MWSk7Ci0JaWYgKGZkIDwgMCB8fAotCSAgICBmc3RhdChmZCwgJnN0KSA8IDAgfHwKLQkgICAgaW5kZXhfZmQoc2hhMSwgZmQsICZzdCwgd3JpdGVfb2JqZWN0LCB0eXBlLCBwYXRoKSkKKwlpZiAoZnN0YXQoZmQsICZzdCkgPCAwIHx8CisJICAgIGluZGV4X2ZkKHNoYTEsIGZkLCAmc3QsIHdyaXRlX29iamVjdCwgdHlwZV9mcm9tX3N0cmluZyh0eXBlKSwgcGF0aCkpCiAJCWRpZSh3cml0ZV9vYmplY3QKIAkJICAgID8gIlVuYWJsZSB0byBhZGQgJXMgdG8gZGF0YWJhc2UiCiAJCSAgICA6ICJVbmFibGUgdG8gaGFzaCAlcyIsIHBhdGgpOwpAQCAtMjQsMjAgKzIyLDIwIEBACiAJbWF5YmVfZmx1c2hfb3JfZGllKHN0ZG91dCwgImhhc2ggdG8gc3Rkb3V0Iik7CiB9CiAKLXN0YXRpYyB2b2lkIGhhc2hfc3RkaW4oY29uc3QgY2hhciAqdHlwZSwgaW50IHdyaXRlX29iamVjdCkKK3N0YXRpYyB2b2lkIGhhc2hfb2JqZWN0KGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKnR5cGUsIGludCB3cml0ZV9vYmplY3QsCisJCQljb25zdCBjaGFyICp2cGF0aCkKIHsKLQl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwotCWlmIChpbmRleF9waXBlKHNoYTEsIDAsIHR5cGUsIHdyaXRlX29iamVjdCkpCi0JCWRpZSgiVW5hYmxlIHRvIGFkZCBzdGRpbiB0byBkYXRhYmFzZSIpOwotCXByaW50ZigiJXNcbiIsIHNoYTFfdG9faGV4KHNoYTEpKTsKKwlpbnQgZmQ7CisJZmQgPSBvcGVuKHBhdGgsIE9fUkRPTkxZKTsKKwlpZiAoZmQgPCAwKQorCQlkaWUoIkNhbm5vdCBvcGVuICVzIiwgcGF0aCk7CisJaGFzaF9mZChmZCwgdHlwZSwgd3JpdGVfb2JqZWN0LCB2cGF0aCk7CiB9CiAKIHN0YXRpYyB2b2lkIGhhc2hfc3RkaW5fcGF0aHMoY29uc3QgY2hhciAqdHlwZSwgaW50IHdyaXRlX29iamVjdHMpCiB7Ci0Jc3RydWN0IHN0cmJ1ZiBidWYsIG5idWY7CisJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVCwgbmJ1ZiA9IFNUUkJVRl9JTklUOwogCi0Jc3RyYnVmX2luaXQoJmJ1ZiwgMCk7Ci0Jc3RyYnVmX2luaXQoJm5idWYsIDApOwogCXdoaWxlIChzdHJidWZfZ2V0bGluZSgmYnVmLCBzdGRpbiwgJ1xuJykgIT0gRU9GKSB7CiAJCWlmIChidWYuYnVmWzBdID09ICciJykgewogCQkJc3RyYnVmX3Jlc2V0KCZuYnVmKTsKQEAgLTQ1LDkyICs0Myw5MSBAQAogCQkJCWRpZSgibGluZSBpcyBiYWRseSBxdW90ZWQiKTsKIAkJCXN0cmJ1Zl9zd2FwKCZidWYsICZuYnVmKTsKIAkJfQotCQloYXNoX29iamVjdChidWYuYnVmLCB0eXBlX2Zyb21fc3RyaW5nKHR5cGUpLCB3cml0ZV9vYmplY3RzKTsKKwkJaGFzaF9vYmplY3QoYnVmLmJ1ZiwgdHlwZSwgd3JpdGVfb2JqZWN0cywgYnVmLmJ1Zik7CiAJfQogCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOwogCXN0cmJ1Zl9yZWxlYXNlKCZuYnVmKTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIgaGFzaF9vYmplY3RfdXNhZ2VbXSA9Ci0iZ2l0IGhhc2gtb2JqZWN0IFsgWy10IDx0eXBlPl0gWy13XSBbLS1zdGRpbl0gPGZpbGU+Li4uIHwgLS1zdGRpbi1wYXRocyA8IDxsaXN0LW9mLXBhdGhzPiBdIjsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgaGFzaF9vYmplY3RfdXNhZ2VbXSA9IHsKKwkiZ2l0IGhhc2gtb2JqZWN0IFstdCA8dHlwZT5dIFstd10gWy0tcGF0aD08ZmlsZT58LS1uby1maWx0ZXJzXSBbLS1zdGRpbl0gWy0tXSA8ZmlsZT4uLi4iLAorCSJnaXQgaGFzaC1vYmplY3QgIC0tc3RkaW4tcGF0aHMgPCA8bGlzdC1vZi1wYXRocz4iLAorCU5VTEwKK307CiAKLWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3N0YXRpYyBjb25zdCBjaGFyICp0eXBlOworc3RhdGljIGludCB3cml0ZV9vYmplY3Q7CitzdGF0aWMgaW50IGhhc2hzdGRpbjsKK3N0YXRpYyBpbnQgc3RkaW5fcGF0aHM7CitzdGF0aWMgaW50IG5vX2ZpbHRlcnM7CitzdGF0aWMgY29uc3QgY2hhciAqdnBhdGg7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb3B0aW9uIGhhc2hfb2JqZWN0X29wdGlvbnNbXSA9IHsKKwlPUFRfU1RSSU5HKCd0JywgTlVMTCwgJnR5cGUsICJ0eXBlIiwgIm9iamVjdCB0eXBlIiksCisJT1BUX0JPT0xFQU4oJ3cnLCBOVUxMLCAmd3JpdGVfb2JqZWN0LCAid3JpdGUgdGhlIG9iamVjdCBpbnRvIHRoZSBvYmplY3QgZGF0YWJhc2UiKSwKKwlPUFRfQk9PTEVBTiggMCAsICJzdGRpbiIsICZoYXNoc3RkaW4sICJyZWFkIHRoZSBvYmplY3QgZnJvbSBzdGRpbiIpLAorCU9QVF9CT09MRUFOKCAwICwgInN0ZGluLXBhdGhzIiwgJnN0ZGluX3BhdGhzLCAicmVhZCBmaWxlIG5hbWVzIGZyb20gc3RkaW4iKSwKKwlPUFRfQk9PTEVBTiggMCAsICJuby1maWx0ZXJzIiwgJm5vX2ZpbHRlcnMsICJzdG9yZSBmaWxlIGFzIGlzIHdpdGhvdXQgZmlsdGVycyIpLAorCU9QVF9TVFJJTkcoIDAgLCAicGF0aCIsICZ2cGF0aCwgImZpbGUiLCAicHJvY2VzcyBmaWxlIGFzIGl0IHdlcmUgZnJvbSB0aGlzIHBhdGgiKSwKKwlPUFRfRU5EKCkKK307CisKK2ludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKIHsKIAlpbnQgaTsKLQljb25zdCBjaGFyICp0eXBlID0gYmxvYl90eXBlOwotCWludCB3cml0ZV9vYmplY3QgPSAwOwogCWNvbnN0IGNoYXIgKnByZWZpeCA9IE5VTEw7CiAJaW50IHByZWZpeF9sZW5ndGggPSAtMTsKLQlpbnQgbm9fbW9yZV9mbGFncyA9IDA7Ci0JaW50IGhhc2hzdGRpbiA9IDA7Ci0JaW50IHN0ZGluX3BhdGhzID0gMDsKKwljb25zdCBjaGFyICplcnJzdHIgPSBOVUxMOworCisJdHlwZSA9IGJsb2JfdHlwZTsKKworCWFyZ2MgPSBwYXJzZV9vcHRpb25zKGFyZ2MsIGFyZ3YsIGhhc2hfb2JqZWN0X29wdGlvbnMsIGhhc2hfb2JqZWN0X3VzYWdlLCAwKTsKKworCWlmICh3cml0ZV9vYmplY3QpIHsKKwkJcHJlZml4ID0gc2V0dXBfZ2l0X2RpcmVjdG9yeSgpOworCQlwcmVmaXhfbGVuZ3RoID0gcHJlZml4ID8gc3RybGVuKHByZWZpeCkgOiAwOworCQlpZiAodnBhdGggJiYgcHJlZml4KQorCQkJdnBhdGggPSBwcmVmaXhfZmlsZW5hbWUocHJlZml4LCBwcmVmaXhfbGVuZ3RoLCB2cGF0aCk7CisJfQogCiAJZ2l0X2NvbmZpZyhnaXRfZGVmYXVsdF9jb25maWcsIE5VTEwpOwogCi0JZm9yIChpID0gMSA7IGkgPCBhcmdjOyBpKyspIHsKLQkJaWYgKCFub19tb3JlX2ZsYWdzICYmIGFyZ3ZbaV1bMF0gPT0gJy0nKSB7Ci0JCQlpZiAoIXN0cmNtcChhcmd2W2ldLCAiLXQiKSkgewotCQkJCWlmIChhcmdjIDw9ICsraSkKLQkJCQkJdXNhZ2UoaGFzaF9vYmplY3RfdXNhZ2UpOwotCQkJCXR5cGUgPSBhcmd2W2ldOwotCQkJfQotCQkJZWxzZSBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLXciKSkgewotCQkJCWlmIChwcmVmaXhfbGVuZ3RoIDwgMCkgewotCQkJCQlwcmVmaXggPSBzZXR1cF9naXRfZGlyZWN0b3J5KCk7Ci0JCQkJCXByZWZpeF9sZW5ndGggPQotCQkJCQkJcHJlZml4ID8gc3RybGVuKHByZWZpeCkgOiAwOwotCQkJCX0KLQkJCQl3cml0ZV9vYmplY3QgPSAxOwotCQkJfQotCQkJZWxzZSBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLS0iKSkgewotCQkJCW5vX21vcmVfZmxhZ3MgPSAxOwotCQkJfQotCQkJZWxzZSBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLS1oZWxwIikpCi0JCQkJdXNhZ2UoaGFzaF9vYmplY3RfdXNhZ2UpOwotCQkJZWxzZSBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLS1zdGRpbi1wYXRocyIpKSB7Ci0JCQkJaWYgKGhhc2hzdGRpbikgewotCQkJCQllcnJvcigiQ2FuJ3QgdXNlIC0tc3RkaW4tcGF0aHMgd2l0aCAtLXN0ZGluIik7Ci0JCQkJCXVzYWdlKGhhc2hfb2JqZWN0X3VzYWdlKTsKLQkJCQl9Ci0JCQkJc3RkaW5fcGF0aHMgPSAxOworCWlmIChzdGRpbl9wYXRocykgeworCQlpZiAoaGFzaHN0ZGluKQorCQkJZXJyc3RyID0gIkNhbid0IHVzZSAtLXN0ZGluLXBhdGhzIHdpdGggLS1zdGRpbiI7CisJCWVsc2UgaWYgKGFyZ2MpCisJCQllcnJzdHIgPSAiQ2FuJ3Qgc3BlY2lmeSBmaWxlcyB3aXRoIC0tc3RkaW4tcGF0aHMiOworCQllbHNlIGlmICh2cGF0aCkKKwkJCWVycnN0ciA9ICJDYW4ndCB1c2UgLS1zdGRpbi1wYXRocyB3aXRoIC0tcGF0aCI7CisJCWVsc2UgaWYgKG5vX2ZpbHRlcnMpCisJCQllcnJzdHIgPSAiQ2FuJ3QgdXNlIC0tc3RkaW4tcGF0aHMgd2l0aCAtLW5vLWZpbHRlcnMiOworCX0KKwllbHNlIHsKKwkJaWYgKGhhc2hzdGRpbiA+IDEpCisJCQllcnJzdHIgPSAiTXVsdGlwbGUgLS1zdGRpbiBhcmd1bWVudHMgYXJlIG5vdCBzdXBwb3J0ZWQiOworCQlpZiAodnBhdGggJiYgbm9fZmlsdGVycykKKwkJCWVycnN0ciA9ICJDYW4ndCB1c2UgLS1wYXRoIHdpdGggLS1uby1maWx0ZXJzIjsKKwl9CiAKLQkJCX0KLQkJCWVsc2UgaWYgKCFzdHJjbXAoYXJndltpXSwgIi0tc3RkaW4iKSkgewotCQkJCWlmIChzdGRpbl9wYXRocykgewotCQkJCQllcnJvcigiQ2FuJ3QgdXNlICVzIHdpdGggLS1zdGRpbi1wYXRocyIsIGFyZ3ZbaV0pOwotCQkJCQl1c2FnZShoYXNoX29iamVjdF91c2FnZSk7Ci0JCQkJfQotCQkJCWlmIChoYXNoc3RkaW4pCi0JCQkJCWRpZSgiTXVsdGlwbGUgLS1zdGRpbiBhcmd1bWVudHMgYXJlIG5vdCBzdXBwb3J0ZWQiKTsKLQkJCQloYXNoc3RkaW4gPSAxOwotCQkJfQotCQkJZWxzZQotCQkJCXVzYWdlKGhhc2hfb2JqZWN0X3VzYWdlKTsKLQkJfQotCQllbHNlIHsKLQkJCWNvbnN0IGNoYXIgKmFyZyA9IGFyZ3ZbaV07CisJaWYgKGVycnN0cikgeworCQllcnJvcigiJXMiLCBlcnJzdHIpOworCQl1c2FnZV93aXRoX29wdGlvbnMoaGFzaF9vYmplY3RfdXNhZ2UsIGhhc2hfb2JqZWN0X29wdGlvbnMpOworCX0KIAotCQkJaWYgKHN0ZGluX3BhdGhzKSB7Ci0JCQkJZXJyb3IoIkNhbid0IHNwZWNpZnkgZmlsZXMgKHN1Y2ggYXMgXCIlc1wiKSB3aXRoIC0tc3RkaW4tcGF0aHMiLCBhcmcpOwotCQkJCXVzYWdlKGhhc2hfb2JqZWN0X3VzYWdlKTsKLQkJCX0KKwlpZiAoaGFzaHN0ZGluKQorCQloYXNoX2ZkKDAsIHR5cGUsIHdyaXRlX29iamVjdCwgdnBhdGgpOwogCi0JCQlpZiAoaGFzaHN0ZGluKSB7Ci0JCQkJaGFzaF9zdGRpbih0eXBlLCB3cml0ZV9vYmplY3QpOwotCQkJCWhhc2hzdGRpbiA9IDA7Ci0JCQl9Ci0JCQlpZiAoMCA8PSBwcmVmaXhfbGVuZ3RoKQotCQkJCWFyZyA9IHByZWZpeF9maWxlbmFtZShwcmVmaXgsIHByZWZpeF9sZW5ndGgsCi0JCQkJCQkgICAgICBhcmcpOwotCQkJaGFzaF9vYmplY3QoYXJnLCB0eXBlX2Zyb21fc3RyaW5nKHR5cGUpLCB3cml0ZV9vYmplY3QpOwotCQkJbm9fbW9yZV9mbGFncyA9IDE7Ci0JCX0KKwlmb3IgKGkgPSAwIDsgaSA8IGFyZ2M7IGkrKykgeworCQljb25zdCBjaGFyICphcmcgPSBhcmd2W2ldOworCisJCWlmICgwIDw9IHByZWZpeF9sZW5ndGgpCisJCQlhcmcgPSBwcmVmaXhfZmlsZW5hbWUocHJlZml4LCBwcmVmaXhfbGVuZ3RoLCBhcmcpOworCQloYXNoX29iamVjdChhcmcsIHR5cGUsIHdyaXRlX29iamVjdCwKKwkJCSAgICBub19maWx0ZXJzID8gTlVMTCA6IHZwYXRoID8gdnBhdGggOiBhcmcpOwogCX0KIAogCWlmIChzdGRpbl9wYXRocykKIAkJaGFzaF9zdGRpbl9wYXRocyh0eXBlLCB3cml0ZV9vYmplY3QpOwogCi0JaWYgKGhhc2hzdGRpbikKLQkJaGFzaF9zdGRpbih0eXBlLCB3cml0ZV9vYmplY3QpOwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvaGVscC5jIGIvaGVscC5jCmluZGV4IGRjMDc4NmQuLmZkODdiYjUgMTAwNjQ0Ci0tLSBhL2hlbHAuYworKysgYi9oZWxwLmMKQEAgLTEsMjc2ICsxLDggQEAKLS8qCi0gKiBidWlsdGluLWhlbHAuYwotICoKLSAqIEJ1aWx0aW4gaGVscC1yZWxhdGVkIGNvbW1hbmRzIChoZWxwLCB1c2FnZSwgdmVyc2lvbikKLSAqLwogI2luY2x1ZGUgImNhY2hlLmgiCiAjaW5jbHVkZSAiYnVpbHRpbi5oIgogI2luY2x1ZGUgImV4ZWNfY21kLmgiCi0jaW5jbHVkZSAiY29tbW9uLWNtZHMuaCIKLSNpbmNsdWRlICJwYXJzZS1vcHRpb25zLmgiCi0jaW5jbHVkZSAicnVuLWNvbW1hbmQuaCIKLQotc3RhdGljIHN0cnVjdCBtYW5fdmlld2VyX2xpc3QgewotCXN0cnVjdCBtYW5fdmlld2VyX2xpc3QgKm5leHQ7Ci0JY2hhciBuYW1lW0ZMRVhfQVJSQVldOwotfSAqbWFuX3ZpZXdlcl9saXN0OwotCi1zdGF0aWMgc3RydWN0IG1hbl92aWV3ZXJfaW5mb19saXN0IHsKLQlzdHJ1Y3QgbWFuX3ZpZXdlcl9pbmZvX2xpc3QgKm5leHQ7Ci0JY29uc3QgY2hhciAqaW5mbzsKLQljaGFyIG5hbWVbRkxFWF9BUlJBWV07Ci19ICptYW5fdmlld2VyX2luZm9fbGlzdDsKLQotZW51bSBoZWxwX2Zvcm1hdCB7Ci0JSEVMUF9GT1JNQVRfTUFOLAotCUhFTFBfRk9STUFUX0lORk8sCi0JSEVMUF9GT1JNQVRfV0VCLAotfTsKLQotc3RhdGljIGludCBzaG93X2FsbCA9IDA7Ci1zdGF0aWMgZW51bSBoZWxwX2Zvcm1hdCBoZWxwX2Zvcm1hdCA9IEhFTFBfRk9STUFUX01BTjsKLXN0YXRpYyBzdHJ1Y3Qgb3B0aW9uIGJ1aWx0aW5faGVscF9vcHRpb25zW10gPSB7Ci0JT1BUX0JPT0xFQU4oJ2EnLCAiYWxsIiwgJnNob3dfYWxsLCAicHJpbnQgYWxsIGF2YWlsYWJsZSBjb21tYW5kcyIpLAotCU9QVF9TRVRfSU5UKCdtJywgIm1hbiIsICZoZWxwX2Zvcm1hdCwgInNob3cgbWFuIHBhZ2UiLCBIRUxQX0ZPUk1BVF9NQU4pLAotCU9QVF9TRVRfSU5UKCd3JywgIndlYiIsICZoZWxwX2Zvcm1hdCwgInNob3cgbWFudWFsIGluIHdlYiBicm93c2VyIiwKLQkJCUhFTFBfRk9STUFUX1dFQiksCi0JT1BUX1NFVF9JTlQoJ2knLCAiaW5mbyIsICZoZWxwX2Zvcm1hdCwgInNob3cgaW5mbyBwYWdlIiwKLQkJCUhFTFBfRk9STUFUX0lORk8pLAotCU9QVF9FTkQoKSwKLX07Ci0KLXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYnVpbHRpbl9oZWxwX3VzYWdlW10gPSB7Ci0JImdpdCBoZWxwIFstLWFsbF0gWy0tbWFufC0td2VifC0taW5mb10gW2NvbW1hbmRdIiwKLQlOVUxMCi19OwotCi1zdGF0aWMgZW51bSBoZWxwX2Zvcm1hdCBwYXJzZV9oZWxwX2Zvcm1hdChjb25zdCBjaGFyICpmb3JtYXQpCi17Ci0JaWYgKCFzdHJjbXAoZm9ybWF0LCAibWFuIikpCi0JCXJldHVybiBIRUxQX0ZPUk1BVF9NQU47Ci0JaWYgKCFzdHJjbXAoZm9ybWF0LCAiaW5mbyIpKQotCQlyZXR1cm4gSEVMUF9GT1JNQVRfSU5GTzsKLQlpZiAoIXN0cmNtcChmb3JtYXQsICJ3ZWIiKSB8fCAhc3RyY21wKGZvcm1hdCwgImh0bWwiKSkKLQkJcmV0dXJuIEhFTFBfRk9STUFUX1dFQjsKLQlkaWUoInVucmVjb2duaXplZCBoZWxwIGZvcm1hdCAnJXMnIiwgZm9ybWF0KTsKLX0KLQotc3RhdGljIGNvbnN0IGNoYXIgKmdldF9tYW5fdmlld2VyX2luZm8oY29uc3QgY2hhciAqbmFtZSkKLXsKLQlzdHJ1Y3QgbWFuX3ZpZXdlcl9pbmZvX2xpc3QgKnZpZXdlcjsKLQotCWZvciAodmlld2VyID0gbWFuX3ZpZXdlcl9pbmZvX2xpc3Q7IHZpZXdlcjsgdmlld2VyID0gdmlld2VyLT5uZXh0KQotCXsKLQkJaWYgKCFzdHJjYXNlY21wKG5hbWUsIHZpZXdlci0+bmFtZSkpCi0JCQlyZXR1cm4gdmlld2VyLT5pbmZvOwotCX0KLQlyZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIGludCBjaGVja19lbWFjc2NsaWVudF92ZXJzaW9uKHZvaWQpCi17Ci0Jc3RydWN0IHN0cmJ1ZiBidWZmZXIgPSBTVFJCVUZfSU5JVDsKLQlzdHJ1Y3QgY2hpbGRfcHJvY2VzcyBlY19wcm9jZXNzOwotCWNvbnN0IGNoYXIgKmFyZ3ZfZWNbXSA9IHsgImVtYWNzY2xpZW50IiwgIi0tdmVyc2lvbiIsIE5VTEwgfTsKLQlpbnQgdmVyc2lvbjsKLQotCS8qIGVtYWNzY2xpZW50IHByaW50cyBpdHMgdmVyc2lvbiBudW1iZXIgb24gc3RkZXJyICovCi0JbWVtc2V0KCZlY19wcm9jZXNzLCAwLCBzaXplb2YoZWNfcHJvY2VzcykpOwotCWVjX3Byb2Nlc3MuYXJndiA9IGFyZ3ZfZWM7Ci0JZWNfcHJvY2Vzcy5lcnIgPSAtMTsKLQllY19wcm9jZXNzLnN0ZG91dF90b19zdGRlcnIgPSAxOwotCWlmIChzdGFydF9jb21tYW5kKCZlY19wcm9jZXNzKSkgewotCQlmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBzdGFydCBlbWFjc2NsaWVudC5cbiIpOwotCQlyZXR1cm4gLTE7Ci0JfQotCXN0cmJ1Zl9yZWFkKCZidWZmZXIsIGVjX3Byb2Nlc3MuZXJyLCAyMCk7Ci0JY2xvc2UoZWNfcHJvY2Vzcy5lcnIpOwotCi0JLyoKLQkgKiBEb24ndCBib3RoZXIgY2hlY2tpbmcgcmV0dXJuIHZhbHVlLCBiZWNhdXNlICJlbWFjc2NsaWVudCAtLXZlcnNpb24iCi0JICogc2VlbXMgdG8gYWx3YXlzIGV4aXRzIHdpdGggY29kZSAxLgotCSAqLwotCWZpbmlzaF9jb21tYW5kKCZlY19wcm9jZXNzKTsKLQotCWlmIChwcmVmaXhjbXAoYnVmZmVyLmJ1ZiwgImVtYWNzY2xpZW50IikpIHsKLQkJZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gcGFyc2UgZW1hY3NjbGllbnQgdmVyc2lvbi5cbiIpOwotCQlzdHJidWZfcmVsZWFzZSgmYnVmZmVyKTsKLQkJcmV0dXJuIC0xOwotCX0KLQotCXN0cmJ1Zl9yZW1vdmUoJmJ1ZmZlciwgMCwgc3RybGVuKCJlbWFjc2NsaWVudCIpKTsKLQl2ZXJzaW9uID0gYXRvaShidWZmZXIuYnVmKTsKLQotCWlmICh2ZXJzaW9uIDwgMjIpIHsKLQkJZnByaW50ZihzdGRlcnIsCi0JCQkiZW1hY3NjbGllbnQgdmVyc2lvbiAnJWQnIHRvbyBvbGQgKDwgMjIpLlxuIiwKLQkJCXZlcnNpb24pOwotCQlzdHJidWZfcmVsZWFzZSgmYnVmZmVyKTsKLQkJcmV0dXJuIC0xOwotCX0KLQotCXN0cmJ1Zl9yZWxlYXNlKCZidWZmZXIpOwotCXJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZCBleGVjX3dvbWFuX2VtYWNzKGNvbnN0IGNoYXIqIHBhdGgsIGNvbnN0IGNoYXIgKnBhZ2UpCi17Ci0JaWYgKCFjaGVja19lbWFjc2NsaWVudF92ZXJzaW9uKCkpIHsKLQkJLyogVGhpcyB3b3JrcyBvbmx5IHdpdGggZW1hY3NjbGllbnQgdmVyc2lvbiA+PSAyMi4gKi8KLQkJc3RydWN0IHN0cmJ1ZiBtYW5fcGFnZSA9IFNUUkJVRl9JTklUOwotCi0JCWlmICghcGF0aCkKLQkJCXBhdGggPSAiZW1hY3NjbGllbnQiOwotCQlzdHJidWZfYWRkZigmbWFuX3BhZ2UsICIod29tYW4gXCIlc1wiKSIsIHBhZ2UpOwotCQlleGVjbHAocGF0aCwgImVtYWNzY2xpZW50IiwgIi1lIiwgbWFuX3BhZ2UuYnVmLCBOVUxMKTsKLQkJd2FybmluZygiZmFpbGVkIHRvIGV4ZWMgJyVzJzogJXMiLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOwotCX0KLX0KLQotc3RhdGljIHZvaWQgZXhlY19tYW5fa29ucXVlcm9yKGNvbnN0IGNoYXIqIHBhdGgsIGNvbnN0IGNoYXIgKnBhZ2UpCi17Ci0JY29uc3QgY2hhciAqZGlzcGxheSA9IGdldGVudigiRElTUExBWSIpOwotCWlmIChkaXNwbGF5ICYmICpkaXNwbGF5KSB7Ci0JCXN0cnVjdCBzdHJidWYgbWFuX3BhZ2UgPSBTVFJCVUZfSU5JVDsKLQkJY29uc3QgY2hhciAqZmlsZW5hbWUgPSAia2ZtY2xpZW50IjsKLQotCQkvKiBJdCdzIHNpbXBsZXIgdG8gbGF1bmNoIGtvbnF1ZXJvciB1c2luZyBrZm1jbGllbnQuICovCi0JCWlmIChwYXRoKSB7Ci0JCQljb25zdCBjaGFyICpmaWxlID0gc3RycmNocihwYXRoLCAnLycpOwotCQkJaWYgKGZpbGUgJiYgIXN0cmNtcChmaWxlICsgMSwgImtvbnF1ZXJvciIpKSB7Ci0JCQkJY2hhciAqbmV3ID0geHN0cmR1cChwYXRoKTsKLQkJCQljaGFyICpkZXN0ID0gc3RycmNocihuZXcsICcvJyk7Ci0KLQkJCQkvKiBzdHJsZW4oImtvbnF1ZXJvciIpID09IHN0cmxlbigia2ZtY2xpZW50IikgKi8KLQkJCQlzdHJjcHkoZGVzdCArIDEsICJrZm1jbGllbnQiKTsKLQkJCQlwYXRoID0gbmV3OwotCQkJfQotCQkJaWYgKGZpbGUpCi0JCQkJZmlsZW5hbWUgPSBmaWxlOwotCQl9IGVsc2UKLQkJCXBhdGggPSAia2ZtY2xpZW50IjsKLQkJc3RyYnVmX2FkZGYoJm1hbl9wYWdlLCAibWFuOiVzKDEpIiwgcGFnZSk7Ci0JCWV4ZWNscChwYXRoLCBmaWxlbmFtZSwgIm5ld1RhYiIsIG1hbl9wYWdlLmJ1ZiwgTlVMTCk7Ci0JCXdhcm5pbmcoImZhaWxlZCB0byBleGVjICclcyc6ICVzIiwgcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKLQl9Ci19Ci0KLXN0YXRpYyB2b2lkIGV4ZWNfbWFuX21hbihjb25zdCBjaGFyKiBwYXRoLCBjb25zdCBjaGFyICpwYWdlKQotewotCWlmICghcGF0aCkKLQkJcGF0aCA9ICJtYW4iOwotCWV4ZWNscChwYXRoLCAibWFuIiwgcGFnZSwgTlVMTCk7Ci0Jd2FybmluZygiZmFpbGVkIHRvIGV4ZWMgJyVzJzogJXMiLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOwotfQotCi1zdGF0aWMgdm9pZCBleGVjX21hbl9jbWQoY29uc3QgY2hhciAqY21kLCBjb25zdCBjaGFyICpwYWdlKQotewotCXN0cnVjdCBzdHJidWYgc2hlbGxfY21kID0gU1RSQlVGX0lOSVQ7Ci0Jc3RyYnVmX2FkZGYoJnNoZWxsX2NtZCwgIiVzICVzIiwgY21kLCBwYWdlKTsKLQlleGVjbCgiL2Jpbi9zaCIsICJzaCIsICItYyIsIHNoZWxsX2NtZC5idWYsIE5VTEwpOwotCXdhcm5pbmcoImZhaWxlZCB0byBleGVjICclcyc6ICVzIiwgY21kLCBzdHJlcnJvcihlcnJubykpOwotfQotCi1zdGF0aWMgdm9pZCBhZGRfbWFuX3ZpZXdlcihjb25zdCBjaGFyICpuYW1lKQotewotCXN0cnVjdCBtYW5fdmlld2VyX2xpc3QgKipwID0gJm1hbl92aWV3ZXJfbGlzdDsKLQlzaXplX3QgbGVuID0gc3RybGVuKG5hbWUpOwotCi0Jd2hpbGUgKCpwKQotCQlwID0gJigoKnApLT5uZXh0KTsKLQkqcCA9IHhjYWxsb2MoMSwgKHNpemVvZigqKnApICsgbGVuICsgMSkpOwotCXN0cm5jcHkoKCpwKS0+bmFtZSwgbmFtZSwgbGVuKTsKLX0KLQotc3RhdGljIGludCBzdXBwb3J0ZWRfbWFuX3ZpZXdlcihjb25zdCBjaGFyICpuYW1lLCBzaXplX3QgbGVuKQotewotCXJldHVybiAoIXN0cm5jYXNlY21wKCJtYW4iLCBuYW1lLCBsZW4pIHx8Ci0JCSFzdHJuY2FzZWNtcCgid29tYW4iLCBuYW1lLCBsZW4pIHx8Ci0JCSFzdHJuY2FzZWNtcCgia29ucXVlcm9yIiwgbmFtZSwgbGVuKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRvX2FkZF9tYW5fdmlld2VyX2luZm8oY29uc3QgY2hhciAqbmFtZSwKLQkJCQkgICBzaXplX3QgbGVuLAotCQkJCSAgIGNvbnN0IGNoYXIgKnZhbHVlKQotewotCXN0cnVjdCBtYW5fdmlld2VyX2luZm9fbGlzdCAqbmV3ID0geGNhbGxvYygxLCBzaXplb2YoKm5ldykgKyBsZW4gKyAxKTsKLQotCXN0cm5jcHkobmV3LT5uYW1lLCBuYW1lLCBsZW4pOwotCW5ldy0+aW5mbyA9IHhzdHJkdXAodmFsdWUpOwotCW5ldy0+bmV4dCA9IG1hbl92aWV3ZXJfaW5mb19saXN0OwotCW1hbl92aWV3ZXJfaW5mb19saXN0ID0gbmV3OwotfQotCi1zdGF0aWMgaW50IGFkZF9tYW5fdmlld2VyX3BhdGgoY29uc3QgY2hhciAqbmFtZSwKLQkJCSAgICAgICBzaXplX3QgbGVuLAotCQkJICAgICAgIGNvbnN0IGNoYXIgKnZhbHVlKQotewotCWlmIChzdXBwb3J0ZWRfbWFuX3ZpZXdlcihuYW1lLCBsZW4pKQotCQlkb19hZGRfbWFuX3ZpZXdlcl9pbmZvKG5hbWUsIGxlbiwgdmFsdWUpOwotCWVsc2UKLQkJd2FybmluZygiJyVzJzogcGF0aCBmb3IgdW5zdXBwb3J0ZWQgbWFuIHZpZXdlci5cbiIKLQkJCSJQbGVhc2UgY29uc2lkZXIgdXNpbmcgJ21hbi48dG9vbD4uY21kJyBpbnN0ZWFkLiIsCi0JCQluYW1lKTsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IGFkZF9tYW5fdmlld2VyX2NtZChjb25zdCBjaGFyICpuYW1lLAotCQkJICAgICAgc2l6ZV90IGxlbiwKLQkJCSAgICAgIGNvbnN0IGNoYXIgKnZhbHVlKQotewotCWlmIChzdXBwb3J0ZWRfbWFuX3ZpZXdlcihuYW1lLCBsZW4pKQotCQl3YXJuaW5nKCInJXMnOiBjbWQgZm9yIHN1cHBvcnRlZCBtYW4gdmlld2VyLlxuIgotCQkJIlBsZWFzZSBjb25zaWRlciB1c2luZyAnbWFuLjx0b29sPi5wYXRoJyBpbnN0ZWFkLiIsCi0JCQluYW1lKTsKLQllbHNlCi0JCWRvX2FkZF9tYW5fdmlld2VyX2luZm8obmFtZSwgbGVuLCB2YWx1ZSk7Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCBhZGRfbWFuX3ZpZXdlcl9pbmZvKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUpCi17Ci0JY29uc3QgY2hhciAqbmFtZSA9IHZhciArIDQ7Ci0JY29uc3QgY2hhciAqc3Via2V5ID0gc3RycmNocihuYW1lLCAnLicpOwotCi0JaWYgKCFzdWJrZXkpCi0JCXJldHVybiBlcnJvcigiQ29uZmlnIHdpdGggbm8ga2V5IGZvciBtYW4gdmlld2VyOiAlcyIsIG5hbWUpOwotCi0JaWYgKCFzdHJjbXAoc3Via2V5LCAiLnBhdGgiKSkgewotCQlpZiAoIXZhbHVlKQotCQkJcmV0dXJuIGNvbmZpZ19lcnJvcl9ub25ib29sKHZhcik7Ci0JCXJldHVybiBhZGRfbWFuX3ZpZXdlcl9wYXRoKG5hbWUsIHN1YmtleSAtIG5hbWUsIHZhbHVlKTsKLQl9Ci0JaWYgKCFzdHJjbXAoc3Via2V5LCAiLmNtZCIpKSB7Ci0JCWlmICghdmFsdWUpCi0JCQlyZXR1cm4gY29uZmlnX2Vycm9yX25vbmJvb2wodmFyKTsKLQkJcmV0dXJuIGFkZF9tYW5fdmlld2VyX2NtZChuYW1lLCBzdWJrZXkgLSBuYW1lLCB2YWx1ZSk7Ci0JfQotCi0Jd2FybmluZygiJyVzJzogdW5zdXBwb3J0ZWQgbWFuIHZpZXdlciBzdWIga2V5LiIsIHN1YmtleSk7Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgZ2l0X2hlbHBfY29uZmlnKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUsIHZvaWQgKmNiKQotewotCWlmICghc3RyY21wKHZhciwgImhlbHAuZm9ybWF0IikpIHsKLQkJaWYgKCF2YWx1ZSkKLQkJCXJldHVybiBjb25maWdfZXJyb3Jfbm9uYm9vbCh2YXIpOwotCQloZWxwX2Zvcm1hdCA9IHBhcnNlX2hlbHBfZm9ybWF0KHZhbHVlKTsKLQkJcmV0dXJuIDA7Ci0JfQotCWlmICghc3RyY21wKHZhciwgIm1hbi52aWV3ZXIiKSkgewotCQlpZiAoIXZhbHVlKQotCQkJcmV0dXJuIGNvbmZpZ19lcnJvcl9ub25ib29sKHZhcik7Ci0JCWFkZF9tYW5fdmlld2VyKHZhbHVlKTsKLQkJcmV0dXJuIDA7Ci0JfQotCWlmICghcHJlZml4Y21wKHZhciwgIm1hbi4iKSkKLQkJcmV0dXJuIGFkZF9tYW5fdmlld2VyX2luZm8odmFyLCB2YWx1ZSk7Ci0KLQlyZXR1cm4gZ2l0X2RlZmF1bHRfY29uZmlnKHZhciwgdmFsdWUsIGNiKTsKLX0KKyNpbmNsdWRlICJsZXZlbnNodGVpbi5oIgorI2luY2x1ZGUgImhlbHAuaCIKIAogLyogbW9zdCBHVUkgdGVybWluYWxzIHNldCBDT0xVTU5TIChhbHRob3VnaCBzb21lIGRvbid0IGV4cG9ydCBpdCkgKi8KIHN0YXRpYyBpbnQgdGVybV9jb2x1bW5zKHZvaWQpCkBAIC0yOTQsMjQgKzI2LDkgQEAKIAlyZXR1cm4gODA7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBtcHV0X2NoYXIoY2hhciBjLCB1bnNpZ25lZCBpbnQgbnVtKQordm9pZCBhZGRfY21kbmFtZShzdHJ1Y3QgY21kbmFtZXMgKmNtZHMsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBsZW4pCiB7Ci0Jd2hpbGUobnVtLS0pCi0JCXB1dGNoYXIoYyk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgY21kbmFtZXMgewotCWludCBhbGxvYzsKLQlpbnQgY250OwotCXN0cnVjdCBjbWRuYW1lIHsKLQkJc2l6ZV90IGxlbjsKLQkJY2hhciBuYW1lWzFdOwotCX0gKipuYW1lczsKLX0gbWFpbl9jbWRzLCBvdGhlcl9jbWRzOwotCi1zdGF0aWMgdm9pZCBhZGRfY21kbmFtZShzdHJ1Y3QgY21kbmFtZXMgKmNtZHMsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBsZW4pCi17Ci0Jc3RydWN0IGNtZG5hbWUgKmVudCA9IHhtYWxsb2Moc2l6ZW9mKCplbnQpICsgbGVuKTsKKwlzdHJ1Y3QgY21kbmFtZSAqZW50ID0geG1hbGxvYyhzaXplb2YoKmVudCkgKyBsZW4gKyAxKTsKIAogCWVudC0+bGVuID0gbGVuOwogCW1lbWNweShlbnQtPm5hbWUsIG5hbWUsIGxlbik7CkBAIC0zMjEsNiArMzgsMTYgQEAKIAljbWRzLT5uYW1lc1tjbWRzLT5jbnQrK10gPSBlbnQ7CiB9CiAKK3N0YXRpYyB2b2lkIGNsZWFuX2NtZG5hbWVzKHN0cnVjdCBjbWRuYW1lcyAqY21kcykKK3sKKwlpbnQgaTsKKwlmb3IgKGkgPSAwOyBpIDwgY21kcy0+Y250OyArK2kpCisJCWZyZWUoY21kcy0+bmFtZXNbaV0pOworCWZyZWUoY21kcy0+bmFtZXMpOworCWNtZHMtPmNudCA9IDA7CisJY21kcy0+YWxsb2MgPSAwOworfQorCiBzdGF0aWMgaW50IGNtZG5hbWVfY29tcGFyZShjb25zdCB2b2lkICphXywgY29uc3Qgdm9pZCAqYl8pCiB7CiAJc3RydWN0IGNtZG5hbWUgKmEgPSAqKHN0cnVjdCBjbWRuYW1lICoqKWFfOwpAQCAtMzQyLDcgKzY5LDcgQEAKIAljbWRzLT5jbnQgPSBqOwogfQogCi1zdGF0aWMgdm9pZCBleGNsdWRlX2NtZHMoc3RydWN0IGNtZG5hbWVzICpjbWRzLCBzdHJ1Y3QgY21kbmFtZXMgKmV4Y2x1ZGVzKQordm9pZCBleGNsdWRlX2NtZHMoc3RydWN0IGNtZG5hbWVzICpjbWRzLCBzdHJ1Y3QgY21kbmFtZXMgKmV4Y2x1ZGVzKQogewogCWludCBjaSwgY2osIGVpOwogCWludCBjbXA7CkBAIC00MTcsMTkgKzE0NCwyMSBAQAogCXJldHVybiBzdC5zdF9tb2RlICYgU19JWFVTUjsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGludCBsaXN0X2NvbW1hbmRzX2luX2RpcihzdHJ1Y3QgY21kbmFtZXMgKmNtZHMsCi0JCQkJCSBjb25zdCBjaGFyICpwYXRoKQorc3RhdGljIHZvaWQgbGlzdF9jb21tYW5kc19pbl9kaXIoc3RydWN0IGNtZG5hbWVzICpjbWRzLAorCQkJCQkgY29uc3QgY2hhciAqcGF0aCwKKwkJCQkJIGNvbnN0IGNoYXIgKnByZWZpeCkKIHsKLQl1bnNpZ25lZCBpbnQgbG9uZ2VzdCA9IDA7Ci0JY29uc3QgY2hhciAqcHJlZml4ID0gImdpdC0iOwotCWludCBwcmVmaXhfbGVuID0gc3RybGVuKHByZWZpeCk7CisJaW50IHByZWZpeF9sZW47CiAJRElSICpkaXIgPSBvcGVuZGlyKHBhdGgpOwogCXN0cnVjdCBkaXJlbnQgKmRlOwogCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAJaW50IGxlbjsKIAogCWlmICghZGlyKQotCQlyZXR1cm4gMDsKKwkJcmV0dXJuOworCWlmICghcHJlZml4KQorCQlwcmVmaXggPSAiZ2l0LSI7CisJcHJlZml4X2xlbiA9IHN0cmxlbihwcmVmaXgpOwogCiAJc3RyYnVmX2FkZGYoJmJ1ZiwgIiVzLyIsIHBhdGgpOwogCWxlbiA9IGJ1Zi5sZW47CkBAIC00NDksMTAwICsxNzgsODEgQEAKIAkJaWYgKGhhc19leHRlbnNpb24oZGUtPmRfbmFtZSwgIi5leGUiKSkKIAkJCWVudGxlbiAtPSA0OwogCi0JCWlmIChsb25nZXN0IDwgZW50bGVuKQotCQkJbG9uZ2VzdCA9IGVudGxlbjsKLQogCQlhZGRfY21kbmFtZShjbWRzLCBkZS0+ZF9uYW1lICsgcHJlZml4X2xlbiwgZW50bGVuKTsKIAl9CiAJY2xvc2VkaXIoZGlyKTsKIAlzdHJidWZfcmVsZWFzZSgmYnVmKTsKLQotCXJldHVybiBsb25nZXN0OwogfQogCi1zdGF0aWMgdW5zaWduZWQgaW50IGxvYWRfY29tbWFuZF9saXN0KHZvaWQpCit2b2lkIGxvYWRfY29tbWFuZF9saXN0KGNvbnN0IGNoYXIgKnByZWZpeCwKKwkJc3RydWN0IGNtZG5hbWVzICptYWluX2NtZHMsCisJCXN0cnVjdCBjbWRuYW1lcyAqb3RoZXJfY21kcykKIHsKLQl1bnNpZ25lZCBpbnQgbG9uZ2VzdCA9IDA7Ci0JdW5zaWduZWQgaW50IGxlbjsKIAljb25zdCBjaGFyICplbnZfcGF0aCA9IGdldGVudigiUEFUSCIpOwotCWNoYXIgKnBhdGhzLCAqcGF0aCwgKmNvbG9uOwogCWNvbnN0IGNoYXIgKmV4ZWNfcGF0aCA9IGdpdF9leGVjX3BhdGgoKTsKIAotCWlmIChleGVjX3BhdGgpCi0JCWxvbmdlc3QgPSBsaXN0X2NvbW1hbmRzX2luX2RpcigmbWFpbl9jbWRzLCBleGVjX3BhdGgpOwotCi0JaWYgKCFlbnZfcGF0aCkgewotCQlmcHJpbnRmKHN0ZGVyciwgIlBBVEggbm90IHNldFxuIik7Ci0JCWV4aXQoMSk7CisJaWYgKGV4ZWNfcGF0aCkgeworCQlsaXN0X2NvbW1hbmRzX2luX2RpcihtYWluX2NtZHMsIGV4ZWNfcGF0aCwgcHJlZml4KTsKKwkJcXNvcnQobWFpbl9jbWRzLT5uYW1lcywgbWFpbl9jbWRzLT5jbnQsCisJCSAgICAgIHNpemVvZigqbWFpbl9jbWRzLT5uYW1lcyksIGNtZG5hbWVfY29tcGFyZSk7CisJCXVuaXEobWFpbl9jbWRzKTsKIAl9CiAKLQlwYXRoID0gcGF0aHMgPSB4c3RyZHVwKGVudl9wYXRoKTsKLQl3aGlsZSAoMSkgewotCQlpZiAoKGNvbG9uID0gc3RyY2hyKHBhdGgsIFBBVEhfU0VQKSkpCi0JCQkqY29sb24gPSAwOworCWlmIChlbnZfcGF0aCkgeworCQljaGFyICpwYXRocywgKnBhdGgsICpjb2xvbjsKKwkJcGF0aCA9IHBhdGhzID0geHN0cmR1cChlbnZfcGF0aCk7CisJCXdoaWxlICgxKSB7CisJCQlpZiAoKGNvbG9uID0gc3RyY2hyKHBhdGgsIFBBVEhfU0VQKSkpCisJCQkJKmNvbG9uID0gMDsKKwkJCWlmICghZXhlY19wYXRoIHx8IHN0cmNtcChwYXRoLCBleGVjX3BhdGgpKQorCQkJCWxpc3RfY29tbWFuZHNfaW5fZGlyKG90aGVyX2NtZHMsIHBhdGgsIHByZWZpeCk7CiAKLQkJbGVuID0gbGlzdF9jb21tYW5kc19pbl9kaXIoJm90aGVyX2NtZHMsIHBhdGgpOwotCQlpZiAobGVuID4gbG9uZ2VzdCkKLQkJCWxvbmdlc3QgPSBsZW47CisJCQlpZiAoIWNvbG9uKQorCQkJCWJyZWFrOworCQkJcGF0aCA9IGNvbG9uICsgMTsKKwkJfQorCQlmcmVlKHBhdGhzKTsKIAotCQlpZiAoIWNvbG9uKQotCQkJYnJlYWs7Ci0JCXBhdGggPSBjb2xvbiArIDE7CisJCXFzb3J0KG90aGVyX2NtZHMtPm5hbWVzLCBvdGhlcl9jbWRzLT5jbnQsCisJCSAgICAgIHNpemVvZigqb3RoZXJfY21kcy0+bmFtZXMpLCBjbWRuYW1lX2NvbXBhcmUpOworCQl1bmlxKG90aGVyX2NtZHMpOwogCX0KLQlmcmVlKHBhdGhzKTsKLQotCXFzb3J0KG1haW5fY21kcy5uYW1lcywgbWFpbl9jbWRzLmNudCwKLQkgICAgICBzaXplb2YoKm1haW5fY21kcy5uYW1lcyksIGNtZG5hbWVfY29tcGFyZSk7Ci0JdW5pcSgmbWFpbl9jbWRzKTsKLQotCXFzb3J0KG90aGVyX2NtZHMubmFtZXMsIG90aGVyX2NtZHMuY250LAotCSAgICAgIHNpemVvZigqb3RoZXJfY21kcy5uYW1lcyksIGNtZG5hbWVfY29tcGFyZSk7Ci0JdW5pcSgmb3RoZXJfY21kcyk7Ci0JZXhjbHVkZV9jbWRzKCZvdGhlcl9jbWRzLCAmbWFpbl9jbWRzKTsKLQotCXJldHVybiBsb25nZXN0OworCWV4Y2x1ZGVfY21kcyhvdGhlcl9jbWRzLCBtYWluX2NtZHMpOwogfQogCi1zdGF0aWMgdm9pZCBsaXN0X2NvbW1hbmRzKHZvaWQpCi17Ci0JdW5zaWduZWQgaW50IGxvbmdlc3QgPSBsb2FkX2NvbW1hbmRfbGlzdCgpOwotCWNvbnN0IGNoYXIgKmV4ZWNfcGF0aCA9IGdpdF9leGVjX3BhdGgoKTsKLQotCWlmIChtYWluX2NtZHMuY250KSB7Ci0JCXByaW50ZigiYXZhaWxhYmxlIGdpdCBjb21tYW5kcyBpbiAnJXMnXG4iLCBleGVjX3BhdGgpOwotCQlwcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKLQkJbXB1dF9jaGFyKCctJywgc3RybGVuKGV4ZWNfcGF0aCkpOwotCQlwdXRjaGFyKCdcbicpOwotCQlwcmV0dHlfcHJpbnRfc3RyaW5nX2xpc3QoJm1haW5fY21kcywgbG9uZ2VzdCk7Ci0JCXB1dGNoYXIoJ1xuJyk7Ci0JfQotCi0JaWYgKG90aGVyX2NtZHMuY250KSB7Ci0JCXByaW50ZigiZ2l0IGNvbW1hbmRzIGF2YWlsYWJsZSBmcm9tIGVsc2V3aGVyZSBvbiB5b3VyICRQQVRIXG4iKTsKLQkJcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwotCQlwcmV0dHlfcHJpbnRfc3RyaW5nX2xpc3QoJm90aGVyX2NtZHMsIGxvbmdlc3QpOwotCQlwdXRjaGFyKCdcbicpOwotCX0KLX0KLQotdm9pZCBsaXN0X2NvbW1vbl9jbWRzX2hlbHAodm9pZCkKK3ZvaWQgbGlzdF9jb21tYW5kcyhjb25zdCBjaGFyICp0aXRsZSwgc3RydWN0IGNtZG5hbWVzICptYWluX2NtZHMsCisJCSAgIHN0cnVjdCBjbWRuYW1lcyAqb3RoZXJfY21kcykKIHsKIAlpbnQgaSwgbG9uZ2VzdCA9IDA7CiAKLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjb21tb25fY21kcyk7IGkrKykgewotCQlpZiAobG9uZ2VzdCA8IHN0cmxlbihjb21tb25fY21kc1tpXS5uYW1lKSkKLQkJCWxvbmdlc3QgPSBzdHJsZW4oY29tbW9uX2NtZHNbaV0ubmFtZSk7CisJZm9yIChpID0gMDsgaSA8IG1haW5fY21kcy0+Y250OyBpKyspCisJCWlmIChsb25nZXN0IDwgbWFpbl9jbWRzLT5uYW1lc1tpXS0+bGVuKQorCQkJbG9uZ2VzdCA9IG1haW5fY21kcy0+bmFtZXNbaV0tPmxlbjsKKwlmb3IgKGkgPSAwOyBpIDwgb3RoZXJfY21kcy0+Y250OyBpKyspCisJCWlmIChsb25nZXN0IDwgb3RoZXJfY21kcy0+bmFtZXNbaV0tPmxlbikKKwkJCWxvbmdlc3QgPSBvdGhlcl9jbWRzLT5uYW1lc1tpXS0+bGVuOworCisJaWYgKG1haW5fY21kcy0+Y250KSB7CisJCWNvbnN0IGNoYXIgKmV4ZWNfcGF0aCA9IGdpdF9leGVjX3BhdGgoKTsKKwkJcHJpbnRmKCJhdmFpbGFibGUgJXMgaW4gJyVzJ1xuIiwgdGl0bGUsIGV4ZWNfcGF0aCk7CisJCXByaW50ZigiLS0tLS0tLS0tLS0tLS0tLSIpOworCQltcHV0X2NoYXIoJy0nLCBzdHJsZW4odGl0bGUpICsgc3RybGVuKGV4ZWNfcGF0aCkpOworCQlwdXRjaGFyKCdcbicpOworCQlwcmV0dHlfcHJpbnRfc3RyaW5nX2xpc3QobWFpbl9jbWRzLCBsb25nZXN0KTsKKwkJcHV0Y2hhcignXG4nKTsKIAl9CiAKLQlwdXRzKCJUaGUgbW9zdCBjb21tb25seSB1c2VkIGdpdCBjb21tYW5kcyBhcmU6Iik7Ci0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY29tbW9uX2NtZHMpOyBpKyspIHsKLQkJcHJpbnRmKCIgICAlcyAgICIsIGNvbW1vbl9jbWRzW2ldLm5hbWUpOwotCQltcHV0X2NoYXIoJyAnLCBsb25nZXN0IC0gc3RybGVuKGNvbW1vbl9jbWRzW2ldLm5hbWUpKTsKLQkJcHV0cyhjb21tb25fY21kc1tpXS5oZWxwKTsKKwlpZiAob3RoZXJfY21kcy0+Y250KSB7CisJCXByaW50ZigiJXMgYXZhaWxhYmxlIGZyb20gZWxzZXdoZXJlIG9uIHlvdXIgJFBBVEhcbiIsIHRpdGxlKTsKKwkJcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKKwkJbXB1dF9jaGFyKCctJywgc3RybGVuKHRpdGxlKSk7CisJCXB1dGNoYXIoJ1xuJyk7CisJCXByZXR0eV9wcmludF9zdHJpbmdfbGlzdChvdGhlcl9jbWRzLCBsb25nZXN0KTsKKwkJcHV0Y2hhcignXG4nKTsKIAl9CiB9CiAKLXN0YXRpYyBpbnQgaXNfaW5fY21kbGlzdChzdHJ1Y3QgY21kbmFtZXMgKmMsIGNvbnN0IGNoYXIgKnMpCitpbnQgaXNfaW5fY21kbGlzdChzdHJ1Y3QgY21kbmFtZXMgKmMsIGNvbnN0IGNoYXIgKnMpCiB7CiAJaW50IGk7CiAJZm9yIChpID0gMDsgaSA8IGMtPmNudDsgaSsrKQpAQCAtNTUxLDEzMyArMjYxLDEwMSBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGlzX2dpdF9jb21tYW5kKGNvbnN0IGNoYXIgKnMpCitzdGF0aWMgaW50IGF1dG9jb3JyZWN0Oworc3RhdGljIHN0cnVjdCBjbWRuYW1lcyBhbGlhc2VzOworCitzdGF0aWMgaW50IGdpdF91bmtub3duX2NtZF9jb25maWcoY29uc3QgY2hhciAqdmFyLCBjb25zdCBjaGFyICp2YWx1ZSwgdm9pZCAqY2IpCiB7Ci0JbG9hZF9jb21tYW5kX2xpc3QoKTsKLQlyZXR1cm4gaXNfaW5fY21kbGlzdCgmbWFpbl9jbWRzLCBzKSB8fAotCQlpc19pbl9jbWRsaXN0KCZvdGhlcl9jbWRzLCBzKSB8fAotCQkhc3RyY21wKHMsICJoZWxwIik7CisJaWYgKCFzdHJjbXAodmFyLCAiaGVscC5hdXRvY29ycmVjdCIpKQorCQlhdXRvY29ycmVjdCA9IGdpdF9jb25maWdfaW50KHZhcix2YWx1ZSk7CisJLyogQWxzbyB1c2UgYWxpYXNlcyBmb3IgY29tbWFuZCBsb29rdXAgKi8KKwlpZiAoIXByZWZpeGNtcCh2YXIsICJhbGlhcy4iKSkKKwkJYWRkX2NtZG5hbWUoJmFsaWFzZXMsIHZhciArIDYsIHN0cmxlbih2YXIgKyA2KSk7CisKKwlyZXR1cm4gZ2l0X2RlZmF1bHRfY29uZmlnKHZhciwgdmFsdWUsIGNiKTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIgKnByZXBlbmQoY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICpjbWQpCitzdGF0aWMgaW50IGxldmVuc2h0ZWluX2NvbXBhcmUoY29uc3Qgdm9pZCAqcDEsIGNvbnN0IHZvaWQgKnAyKQogewotCXNpemVfdCBwcmVfbGVuID0gc3RybGVuKHByZWZpeCk7Ci0Jc2l6ZV90IGNtZF9sZW4gPSBzdHJsZW4oY21kKTsKLQljaGFyICpwID0geG1hbGxvYyhwcmVfbGVuICsgY21kX2xlbiArIDEpOwotCW1lbWNweShwLCBwcmVmaXgsIHByZV9sZW4pOwotCXN0cmNweShwICsgcHJlX2xlbiwgY21kKTsKLQlyZXR1cm4gcDsKKwljb25zdCBzdHJ1Y3QgY21kbmFtZSAqY29uc3QgKmMxID0gcDEsICpjb25zdCAqYzIgPSBwMjsKKwljb25zdCBjaGFyICpzMSA9ICgqYzEpLT5uYW1lLCAqczIgPSAoKmMyKS0+bmFtZTsKKwlpbnQgbDEgPSAoKmMxKS0+bGVuOworCWludCBsMiA9ICgqYzIpLT5sZW47CisJcmV0dXJuIGwxICE9IGwyID8gbDEgLSBsMiA6IHN0cmNtcChzMSwgczIpOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciAqY21kX3RvX3BhZ2UoY29uc3QgY2hhciAqZ2l0X2NtZCkKK3N0YXRpYyB2b2lkIGFkZF9jbWRfbGlzdChzdHJ1Y3QgY21kbmFtZXMgKmNtZHMsIHN0cnVjdCBjbWRuYW1lcyAqb2xkKQogewotCWlmICghZ2l0X2NtZCkKLQkJcmV0dXJuICJnaXQiOwotCWVsc2UgaWYgKCFwcmVmaXhjbXAoZ2l0X2NtZCwgImdpdCIpKQotCQlyZXR1cm4gZ2l0X2NtZDsKLQllbHNlIGlmIChpc19naXRfY29tbWFuZChnaXRfY21kKSkKLQkJcmV0dXJuIHByZXBlbmQoImdpdC0iLCBnaXRfY21kKTsKLQllbHNlCi0JCXJldHVybiBwcmVwZW5kKCJnaXQiLCBnaXRfY21kKTsKKwlpbnQgaTsKKwlBTExPQ19HUk9XKGNtZHMtPm5hbWVzLCBjbWRzLT5jbnQgKyBvbGQtPmNudCwgY21kcy0+YWxsb2MpOworCisJZm9yIChpID0gMDsgaSA8IG9sZC0+Y250OyBpKyspCisJCWNtZHMtPm5hbWVzW2NtZHMtPmNudCsrXSA9IG9sZC0+bmFtZXNbaV07CisJZnJlZShvbGQtPm5hbWVzKTsKKwlvbGQtPmNudCA9IDA7CisJb2xkLT5uYW1lcyA9IE5VTEw7CiB9CiAKLXN0YXRpYyB2b2lkIHNldHVwX21hbl9wYXRoKHZvaWQpCitjb25zdCBjaGFyICpoZWxwX3Vua25vd25fY21kKGNvbnN0IGNoYXIgKmNtZCkKIHsKLQlzdHJ1Y3Qgc3RyYnVmIG5ld19wYXRoOwotCWNvbnN0IGNoYXIgKm9sZF9wYXRoID0gZ2V0ZW52KCJNQU5QQVRIIik7CisJaW50IGksIG4sIGJlc3Rfc2ltaWxhcml0eSA9IDA7CisJc3RydWN0IGNtZG5hbWVzIG1haW5fY21kcywgb3RoZXJfY21kczsKIAotCXN0cmJ1Zl9pbml0KCZuZXdfcGF0aCwgMCk7CisJbWVtc2V0KCZtYWluX2NtZHMsIDAsIHNpemVvZihtYWluX2NtZHMpKTsKKwltZW1zZXQoJm90aGVyX2NtZHMsIDAsIHNpemVvZihtYWluX2NtZHMpKTsKKwltZW1zZXQoJmFsaWFzZXMsIDAsIHNpemVvZihhbGlhc2VzKSk7CiAKLQkvKiBXZSBzaG91bGQgYWx3YXlzIHB1dCAnOicgYWZ0ZXIgb3VyIHBhdGguIElmIHRoZXJlIGlzIG5vCi0JICogb2xkX3BhdGgsIHRoZSAnOicgYXQgdGhlIGVuZCB3aWxsIGxldCAnbWFuJyB0byB0cnkKLQkgKiBzeXN0ZW0td2lkZSBwYXRocyBhZnRlciBvdXJzIHRvIGZpbmQgdGhlIG1hbnVhbCBwYWdlLiBJZgotCSAqIHRoZXJlIGlzIG9sZF9wYXRoLCB3ZSBuZWVkICc6JyBhcyBkZWxpbWl0ZXIuICovCi0Jc3RyYnVmX2FkZHN0cigmbmV3X3BhdGgsIEdJVF9NQU5fUEFUSCk7Ci0Jc3RyYnVmX2FkZGNoKCZuZXdfcGF0aCwgJzonKTsKLQlpZiAob2xkX3BhdGgpCi0JCXN0cmJ1Zl9hZGRzdHIoJm5ld19wYXRoLCBvbGRfcGF0aCk7CisJZ2l0X2NvbmZpZyhnaXRfdW5rbm93bl9jbWRfY29uZmlnLCBOVUxMKTsKIAotCXNldGVudigiTUFOUEFUSCIsIG5ld19wYXRoLmJ1ZiwgMSk7CisJbG9hZF9jb21tYW5kX2xpc3QoImdpdC0iLCAmbWFpbl9jbWRzLCAmb3RoZXJfY21kcyk7CiAKLQlzdHJidWZfcmVsZWFzZSgmbmV3X3BhdGgpOwotfQorCWFkZF9jbWRfbGlzdCgmbWFpbl9jbWRzLCAmYWxpYXNlcyk7CisJYWRkX2NtZF9saXN0KCZtYWluX2NtZHMsICZvdGhlcl9jbWRzKTsKKwlxc29ydChtYWluX2NtZHMubmFtZXMsIG1haW5fY21kcy5jbnQsCisJICAgICAgc2l6ZW9mKG1haW5fY21kcy5uYW1lcyksIGNtZG5hbWVfY29tcGFyZSk7CisJdW5pcSgmbWFpbl9jbWRzKTsKIAotc3RhdGljIHZvaWQgZXhlY192aWV3ZXIoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqcGFnZSkKLXsKLQljb25zdCBjaGFyICppbmZvID0gZ2V0X21hbl92aWV3ZXJfaW5mbyhuYW1lKTsKKwkvKiBUaGlzIHJldXNlcyBjbWRuYW1lLT5sZW4gZm9yIHNpbWlsYXJpdHkgaW5kZXggKi8KKwlmb3IgKGkgPSAwOyBpIDwgbWFpbl9jbWRzLmNudDsgKytpKQorCQltYWluX2NtZHMubmFtZXNbaV0tPmxlbiA9CisJCQlsZXZlbnNodGVpbihjbWQsIG1haW5fY21kcy5uYW1lc1tpXS0+bmFtZSwgMCwgMiwgMSwgNCk7CiAKLQlpZiAoIXN0cmNhc2VjbXAobmFtZSwgIm1hbiIpKQotCQlleGVjX21hbl9tYW4oaW5mbywgcGFnZSk7Ci0JZWxzZSBpZiAoIXN0cmNhc2VjbXAobmFtZSwgIndvbWFuIikpCi0JCWV4ZWNfd29tYW5fZW1hY3MoaW5mbywgcGFnZSk7Ci0JZWxzZSBpZiAoIXN0cmNhc2VjbXAobmFtZSwgImtvbnF1ZXJvciIpKQotCQlleGVjX21hbl9rb25xdWVyb3IoaW5mbywgcGFnZSk7Ci0JZWxzZSBpZiAoaW5mbykKLQkJZXhlY19tYW5fY21kKGluZm8sIHBhZ2UpOwotCWVsc2UKLQkJd2FybmluZygiJyVzJzogdW5rbm93biBtYW4gdmlld2VyLiIsIG5hbWUpOwotfQorCXFzb3J0KG1haW5fY21kcy5uYW1lcywgbWFpbl9jbWRzLmNudCwKKwkgICAgICBzaXplb2YoKm1haW5fY21kcy5uYW1lcyksIGxldmVuc2h0ZWluX2NvbXBhcmUpOwogCi1zdGF0aWMgdm9pZCBzaG93X21hbl9wYWdlKGNvbnN0IGNoYXIgKmdpdF9jbWQpCi17Ci0Jc3RydWN0IG1hbl92aWV3ZXJfbGlzdCAqdmlld2VyOwotCWNvbnN0IGNoYXIgKnBhZ2UgPSBjbWRfdG9fcGFnZShnaXRfY21kKTsKKwlpZiAoIW1haW5fY21kcy5jbnQpCisJCWRpZSAoIlVoIG9oLiBZb3VyIHN5c3RlbSByZXBvcnRzIG5vIEdpdCBjb21tYW5kcyBhdCBhbGwuIik7CiAKLQlzZXR1cF9tYW5fcGF0aCgpOwotCWZvciAodmlld2VyID0gbWFuX3ZpZXdlcl9saXN0OyB2aWV3ZXI7IHZpZXdlciA9IHZpZXdlci0+bmV4dCkKLQl7Ci0JCWV4ZWNfdmlld2VyKHZpZXdlci0+bmFtZSwgcGFnZSk7IC8qIHdpbGwgcmV0dXJuIHdoZW4gdW5hYmxlICovCisJYmVzdF9zaW1pbGFyaXR5ID0gbWFpbl9jbWRzLm5hbWVzWzBdLT5sZW47CisJbiA9IDE7CisJd2hpbGUgKG4gPCBtYWluX2NtZHMuY250ICYmIGJlc3Rfc2ltaWxhcml0eSA9PSBtYWluX2NtZHMubmFtZXNbbl0tPmxlbikKKwkJKytuOworCWlmIChhdXRvY29ycmVjdCAmJiBuID09IDEpIHsKKwkJY29uc3QgY2hhciAqYXNzdW1lZCA9IG1haW5fY21kcy5uYW1lc1swXS0+bmFtZTsKKwkJbWFpbl9jbWRzLm5hbWVzWzBdID0gTlVMTDsKKwkJY2xlYW5fY21kbmFtZXMoJm1haW5fY21kcyk7CisJCWZwcmludGYoc3RkZXJyLCAiV0FSTklORzogWW91IGNhbGxlZCBhIEdpdCBwcm9ncmFtIG5hbWVkICclcycsICIKKwkJCSJ3aGljaCBkb2VzIG5vdCBleGlzdC5cbiIKKwkJCSJDb250aW51aW5nIHVuZGVyIHRoZSBhc3N1bXB0aW9uIHRoYXQgeW91IG1lYW50ICclcydcbiIsCisJCQljbWQsIGFzc3VtZWQpOworCQlpZiAoYXV0b2NvcnJlY3QgPiAwKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgImluICUwLjFmIHNlY29uZHMgYXV0b21hdGljYWxseS4uLlxuIiwKKwkJCQkoZmxvYXQpYXV0b2NvcnJlY3QvMTAuMCk7CisJCQlwb2xsKE5VTEwsIDAsIGF1dG9jb3JyZWN0ICogMTAwKTsKKwkJfQorCQlyZXR1cm4gYXNzdW1lZDsKIAl9Ci0JZXhlY192aWV3ZXIoIm1hbiIsIHBhZ2UpOwotCWRpZSgibm8gbWFuIHZpZXdlciBoYW5kbGVkIHRoZSByZXF1ZXN0Iik7Ci19CiAKLXN0YXRpYyB2b2lkIHNob3dfaW5mb19wYWdlKGNvbnN0IGNoYXIgKmdpdF9jbWQpCi17Ci0JY29uc3QgY2hhciAqcGFnZSA9IGNtZF90b19wYWdlKGdpdF9jbWQpOwotCXNldGVudigiSU5GT1BBVEgiLCBHSVRfSU5GT19QQVRILCAxKTsKLQlleGVjbHAoImluZm8iLCAiaW5mbyIsICJnaXRtYW4iLCBwYWdlLCBOVUxMKTsKLX0KLQotc3RhdGljIHZvaWQgZ2V0X2h0bWxfcGFnZV9wYXRoKHN0cnVjdCBzdHJidWYgKnBhZ2VfcGF0aCwgY29uc3QgY2hhciAqcGFnZSkKLXsKLQlzdHJ1Y3Qgc3RhdCBzdDsKLQljb25zdCBjaGFyICpodG1sX3BhdGggPSBzeXN0ZW1fcGF0aChHSVRfSFRNTF9QQVRIKTsKLQotCS8qIENoZWNrIHRoYXQgd2UgaGF2ZSBhIGdpdCBkb2N1bWVudGF0aW9uIGRpcmVjdG9yeS4gKi8KLQlpZiAoc3RhdChta3BhdGgoIiVzL2dpdC5odG1sIiwgaHRtbF9wYXRoKSwgJnN0KQotCSAgICB8fCAhU19JU1JFRyhzdC5zdF9tb2RlKSkKLQkJZGllKCInJXMnOiBub3QgYSBkb2N1bWVudGF0aW9uIGRpcmVjdG9yeS4iLCBodG1sX3BhdGgpOwotCi0Jc3RyYnVmX2luaXQocGFnZV9wYXRoLCAwKTsKLQlzdHJidWZfYWRkZihwYWdlX3BhdGgsICIlcy8lcy5odG1sIiwgaHRtbF9wYXRoLCBwYWdlKTsKLX0KLQotLyoKLSAqIElmIG9wZW5faHRtbCBpcyBub3QgZGVmaW5lZCBpbiBhIHBsYXRmb3JtLXNwZWNpZmljIHdheSAoc2VlIGZvcgotICogZXhhbXBsZSBjb21wYXQvbWluZ3cuaCksIHdlIHVzZSB0aGUgc2NyaXB0IHdlYi0tYnJvd3NlIHRvIGRpc3BsYXkKLSAqIEhUTUwuCi0gKi8KLSNpZm5kZWYgb3Blbl9odG1sCi12b2lkIG9wZW5faHRtbChjb25zdCBjaGFyICpwYXRoKQotewotCWV4ZWNsX2dpdF9jbWQoIndlYi0tYnJvd3NlIiwgIi1jIiwgImhlbHAuYnJvd3NlciIsIHBhdGgsIE5VTEwpOwotfQotI2VuZGlmCi0KLXN0YXRpYyB2b2lkIHNob3dfaHRtbF9wYWdlKGNvbnN0IGNoYXIgKmdpdF9jbWQpCi17Ci0JY29uc3QgY2hhciAqcGFnZSA9IGNtZF90b19wYWdlKGdpdF9jbWQpOwotCXN0cnVjdCBzdHJidWYgcGFnZV9wYXRoOyAvKiBpdCBsZWFrcyBidXQgd2UgZXhlYyBiZWxsb3cgKi8KLQotCWdldF9odG1sX3BhZ2VfcGF0aCgmcGFnZV9wYXRoLCBwYWdlKTsKLQotCW9wZW5faHRtbChwYWdlX3BhdGguYnVmKTsKLX0KLQotdm9pZCBoZWxwX3Vua25vd25fY21kKGNvbnN0IGNoYXIgKmNtZCkKLXsKIAlmcHJpbnRmKHN0ZGVyciwgImdpdDogJyVzJyBpcyBub3QgYSBnaXQtY29tbWFuZC4gU2VlICdnaXQgLS1oZWxwJy5cbiIsIGNtZCk7CisKKwlpZiAoYmVzdF9zaW1pbGFyaXR5IDwgNikgeworCQlmcHJpbnRmKHN0ZGVyciwgIlxuRGlkIHlvdSBtZWFuICVzP1xuIiwKKwkJCW4gPCAyID8gInRoaXMiOiAib25lIG9mIHRoZXNlIik7CisKKwkJZm9yIChpID0gMDsgaSA8IG47IGkrKykKKwkJCWZwcmludGYoc3RkZXJyLCAiXHQlc1xuIiwgbWFpbl9jbWRzLm5hbWVzW2ldLT5uYW1lKTsKKwl9CisKIAlleGl0KDEpOwogfQogCkBAIC02ODYsNDkgKzM2NCwzIEBACiAJcHJpbnRmKCJnaXQgdmVyc2lvbiAlc1xuIiwgZ2l0X3ZlcnNpb25fc3RyaW5nKTsKIAlyZXR1cm4gMDsKIH0KLQotaW50IGNtZF9oZWxwKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQotewotCWludCBub25naXQ7Ci0JY29uc3QgY2hhciAqYWxpYXM7Ci0KLQlzZXR1cF9naXRfZGlyZWN0b3J5X2dlbnRseSgmbm9uZ2l0KTsKLQlnaXRfY29uZmlnKGdpdF9oZWxwX2NvbmZpZywgTlVMTCk7Ci0KLQlhcmdjID0gcGFyc2Vfb3B0aW9ucyhhcmdjLCBhcmd2LCBidWlsdGluX2hlbHBfb3B0aW9ucywKLQkJCWJ1aWx0aW5faGVscF91c2FnZSwgMCk7Ci0KLQlpZiAoc2hvd19hbGwpIHsKLQkJcHJpbnRmKCJ1c2FnZTogJXNcblxuIiwgZ2l0X3VzYWdlX3N0cmluZyk7Ci0JCWxpc3RfY29tbWFuZHMoKTsKLQkJcHJpbnRmKCIlc1xuIiwgZ2l0X21vcmVfaW5mb19zdHJpbmcpOwotCQlyZXR1cm4gMDsKLQl9Ci0KLQlpZiAoIWFyZ3ZbMF0pIHsKLQkJcHJpbnRmKCJ1c2FnZTogJXNcblxuIiwgZ2l0X3VzYWdlX3N0cmluZyk7Ci0JCWxpc3RfY29tbW9uX2NtZHNfaGVscCgpOwotCQlwcmludGYoIlxuJXNcbiIsIGdpdF9tb3JlX2luZm9fc3RyaW5nKTsKLQkJcmV0dXJuIDA7Ci0JfQotCi0JYWxpYXMgPSBhbGlhc19sb29rdXAoYXJndlswXSk7Ci0JaWYgKGFsaWFzICYmICFpc19naXRfY29tbWFuZChhcmd2WzBdKSkgewotCQlwcmludGYoImBnaXQgJXMnIGlzIGFsaWFzZWQgdG8gYCVzJ1xuIiwgYXJndlswXSwgYWxpYXMpOwotCQlyZXR1cm4gMDsKLQl9Ci0KLQlzd2l0Y2ggKGhlbHBfZm9ybWF0KSB7Ci0JY2FzZSBIRUxQX0ZPUk1BVF9NQU46Ci0JCXNob3dfbWFuX3BhZ2UoYXJndlswXSk7Ci0JCWJyZWFrOwotCWNhc2UgSEVMUF9GT1JNQVRfSU5GTzoKLQkJc2hvd19pbmZvX3BhZ2UoYXJndlswXSk7Ci0JCWJyZWFrOwotCWNhc2UgSEVMUF9GT1JNQVRfV0VCOgotCQlzaG93X2h0bWxfcGFnZShhcmd2WzBdKTsKLQkJYnJlYWs7Ci0JfQotCi0JcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS9oZWxwLmggYi9oZWxwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZiYzE1NAotLS0gL2Rldi9udWxsCisrKyBiL2hlbHAuaApAQCAtMCwwICsxLDI5IEBACisjaWZuZGVmIEhFTFBfSAorI2RlZmluZSBIRUxQX0gKKworc3RydWN0IGNtZG5hbWVzIHsKKwlpbnQgYWxsb2M7CisJaW50IGNudDsKKwlzdHJ1Y3QgY21kbmFtZSB7CisJCXNpemVfdCBsZW47IC8qIGFsc28gdXNlZCBmb3Igc2ltaWxhcml0eSBpbmRleCBpbiBoZWxwLmMgKi8KKwkJY2hhciBuYW1lW0ZMRVhfQVJSQVldOworCX0gKipuYW1lczsKK307CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBtcHV0X2NoYXIoY2hhciBjLCB1bnNpZ25lZCBpbnQgbnVtKQoreworCXdoaWxlKG51bS0tKQorCQlwdXRjaGFyKGMpOworfQorCit2b2lkIGxvYWRfY29tbWFuZF9saXN0KGNvbnN0IGNoYXIgKnByZWZpeCwKKwkJc3RydWN0IGNtZG5hbWVzICptYWluX2NtZHMsCisJCXN0cnVjdCBjbWRuYW1lcyAqb3RoZXJfY21kcyk7Cit2b2lkIGFkZF9jbWRuYW1lKHN0cnVjdCBjbWRuYW1lcyAqY21kcywgY29uc3QgY2hhciAqbmFtZSwgaW50IGxlbik7CisvKiBIZXJlIHdlIHJlcXVpcmUgdGhhdCBleGNsdWRlcyBpcyBhIHNvcnRlZCBsaXN0LiAqLwordm9pZCBleGNsdWRlX2NtZHMoc3RydWN0IGNtZG5hbWVzICpjbWRzLCBzdHJ1Y3QgY21kbmFtZXMgKmV4Y2x1ZGVzKTsKK2ludCBpc19pbl9jbWRsaXN0KHN0cnVjdCBjbWRuYW1lcyAqYywgY29uc3QgY2hhciAqcyk7Cit2b2lkIGxpc3RfY29tbWFuZHMoY29uc3QgY2hhciAqdGl0bGUsIHN0cnVjdCBjbWRuYW1lcyAqbWFpbl9jbWRzLAorCQkgICBzdHJ1Y3QgY21kbmFtZXMgKm90aGVyX2NtZHMpOworCisjZW5kaWYgLyogSEVMUF9IICovCmRpZmYgLS1naXQgYS9odHRwLXB1c2guYyBiL2h0dHAtcHVzaC5jCmluZGV4IDY4MDUyODguLmNiNWJmOTUgMTAwNjQ0Ci0tLSBhL2h0dHAtcHVzaC5jCisrKyBiL2h0dHAtcHVzaC5jCkBAIC04Nyw2ICs4Nyw3IEBACiBzdHJ1Y3QgcmVwbwogewogCWNoYXIgKnVybDsKKwljaGFyICpwYXRoOwogCWludCBwYXRoX2xlbjsKIAlpbnQgaGFzX2luZm9fcmVmczsKIAlpbnQgY2FuX3VwZGF0ZV9pbmZvX3JlZnM7CkBAIC0xMjYsNyArMTI3LDcgQEAKIAljaGFyIGVycm9yc3RyW0NVUkxfRVJST1JfU0laRV07CiAJbG9uZyBodHRwX2NvZGU7CiAJdW5zaWduZWQgY2hhciByZWFsX3NoYTFbMjBdOwotCVNIQV9DVFggYzsKKwlnaXRfU0hBX0NUWCBjOwogCXpfc3RyZWFtIHN0cmVhbTsKIAlpbnQgenJldDsKIAlpbnQgcmVuYW1lOwpAQCAtMjA4LDggKzIwOSw4IEBACiAJZG8gewogCQlyZXF1ZXN0LT5zdHJlYW0ubmV4dF9vdXQgPSBleHBuOwogCQlyZXF1ZXN0LT5zdHJlYW0uYXZhaWxfb3V0ID0gc2l6ZW9mKGV4cG4pOwotCQlyZXF1ZXN0LT56cmV0ID0gaW5mbGF0ZSgmcmVxdWVzdC0+c3RyZWFtLCBaX1NZTkNfRkxVU0gpOwotCQlTSEExX1VwZGF0ZSgmcmVxdWVzdC0+YywgZXhwbiwKKwkJcmVxdWVzdC0+enJldCA9IGdpdF9pbmZsYXRlKCZyZXF1ZXN0LT5zdHJlYW0sIFpfU1lOQ19GTFVTSCk7CisJCWdpdF9TSEExX1VwZGF0ZSgmcmVxdWVzdC0+YywgZXhwbiwKIAkJCSAgICBzaXplb2YoZXhwbikgLSByZXF1ZXN0LT5zdHJlYW0uYXZhaWxfb3V0KTsKIAl9IHdoaWxlIChyZXF1ZXN0LT5zdHJlYW0uYXZhaWxfaW4gJiYgcmVxdWVzdC0+enJldCA9PSBaX09LKTsKIAlkYXRhX3JlY2VpdmVkKys7CkBAIC0yNjgsOSArMjY5LDkgQEAKIAogCW1lbXNldCgmcmVxdWVzdC0+c3RyZWFtLCAwLCBzaXplb2YocmVxdWVzdC0+c3RyZWFtKSk7CiAKLQlpbmZsYXRlSW5pdCgmcmVxdWVzdC0+c3RyZWFtKTsKKwlnaXRfaW5mbGF0ZV9pbml0KCZyZXF1ZXN0LT5zdHJlYW0pOwogCi0JU0hBMV9Jbml0KCZyZXF1ZXN0LT5jKTsKKwlnaXRfU0hBMV9Jbml0KCZyZXF1ZXN0LT5jKTsKIAogCXVybCA9IHhtYWxsb2Moc3RybGVuKHJlbW90ZS0+dXJsKSArIDUwKTsKIAlyZXF1ZXN0LT51cmwgPSB4bWFsbG9jKHN0cmxlbihyZW1vdGUtPnVybCkgKyA1MCk7CkBAIC0zMDksOCArMzEwLDggQEAKIAkgICBmaWxlOyBhbHNvIHJld2luZCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsb2NhbCBmaWxlLiAqLwogCWlmIChwcmV2X3JlYWQgPT0gLTEpIHsKIAkJbWVtc2V0KCZyZXF1ZXN0LT5zdHJlYW0sIDAsIHNpemVvZihyZXF1ZXN0LT5zdHJlYW0pKTsKLQkJaW5mbGF0ZUluaXQoJnJlcXVlc3QtPnN0cmVhbSk7Ci0JCVNIQTFfSW5pdCgmcmVxdWVzdC0+Yyk7CisJCWdpdF9pbmZsYXRlX2luaXQoJnJlcXVlc3QtPnN0cmVhbSk7CisJCWdpdF9TSEExX0luaXQoJnJlcXVlc3QtPmMpOwogCQlpZiAocHJldl9wb3NuPjApIHsKIAkJCXByZXZfcG9zbiA9IDA7CiAJCQlsc2VlayhyZXF1ZXN0LT5sb2NhbF9maWxlbm8sIDAsIFNFRUtfU0VUKTsKQEAgLTU5NSw3ICs1OTYsNyBAQAogCWxvY2stPnJlZnJlc2hpbmcgPSAxOwogCiAJaWZfaGVhZGVyID0geG1hbGxvYyhzdHJsZW4obG9jay0+dG9rZW4pICsgMjUpOwotCXNwcmludGYoaWZfaGVhZGVyLCAiSWY6ICg8b3BhcXVlbG9ja3Rva2VuOiVzPikiLCBsb2NrLT50b2tlbik7CisJc3ByaW50ZihpZl9oZWFkZXIsICJJZjogKDwlcz4pIiwgbG9jay0+dG9rZW4pOwogCXNwcmludGYodGltZW91dF9oZWFkZXIsICJUaW1lb3V0OiBTZWNvbmQtJWxkIiwgbG9jay0+dGltZW91dCk7CiAJZGF2X2hlYWRlcnMgPSBjdXJsX3NsaXN0X2FwcGVuZChkYXZfaGVhZGVycywgaWZfaGVhZGVyKTsKIAlkYXZfaGVhZGVycyA9IGN1cmxfc2xpc3RfYXBwZW5kKGRhdl9oZWFkZXJzLCB0aW1lb3V0X2hlYWRlcik7CkBAIC03NDEsOCArNzQyLDggQEAKIAkJCWlmIChyZXF1ZXN0LT5odHRwX2NvZGUgPT0gNDE2KQogCQkJCWZwcmludGYoc3RkZXJyLCAiV2FybmluZzogcmVxdWVzdGVkIHJhbmdlIGludmFsaWQ7IHdlIG1heSBhbHJlYWR5IGhhdmUgYWxsIHRoZSBkYXRhLlxuIik7CiAKLQkJCWluZmxhdGVFbmQoJnJlcXVlc3QtPnN0cmVhbSk7Ci0JCQlTSEExX0ZpbmFsKHJlcXVlc3QtPnJlYWxfc2hhMSwgJnJlcXVlc3QtPmMpOworCQkJZ2l0X2luZmxhdGVfZW5kKCZyZXF1ZXN0LT5zdHJlYW0pOworCQkJZ2l0X1NIQTFfRmluYWwocmVxdWVzdC0+cmVhbF9zaGExLCAmcmVxdWVzdC0+Yyk7CiAJCQlpZiAocmVxdWVzdC0+enJldCAhPSBaX1NUUkVBTV9FTkQpIHsKIAkJCQl1bmxpbmsocmVxdWVzdC0+dG1wZmlsZSk7CiAJCQl9IGVsc2UgaWYgKGhhc2hjbXAocmVxdWVzdC0+b2JqLT5zaGExLCByZXF1ZXN0LT5yZWFsX3NoYTEpKSB7CkBAIC0xMTIwLDEwICsxMTIxLDggQEAKIAkJCQlsb2NrLT50aW1lb3V0ID0KIAkJCQkJc3RydG9sKGN0eC0+Y2RhdGEgKyA3LCBOVUxMLCAxMCk7CiAJCX0gZWxzZSBpZiAoIXN0cmNtcChjdHgtPm5hbWUsIERBVl9BQ1RJVkVMT0NLX1RPS0VOKSkgewotCQkJaWYgKCFwcmVmaXhjbXAoY3R4LT5jZGF0YSwgIm9wYXF1ZWxvY2t0b2tlbjoiKSkgewotCQkJCWxvY2stPnRva2VuID0geG1hbGxvYyhzdHJsZW4oY3R4LT5jZGF0YSkgLSAxNSk7Ci0JCQkJc3RyY3B5KGxvY2stPnRva2VuLCBjdHgtPmNkYXRhICsgMTYpOwotCQkJfQorCQkJbG9jay0+dG9rZW4gPSB4bWFsbG9jKHN0cmxlbihjdHgtPmNkYXRhKSArIDEpOworCQkJc3RyY3B5KGxvY2stPnRva2VuLCBjdHgtPmNkYXRhKTsKIAkJfQogCX0KIH0KQEAgLTEyMDIsNyArMTIwMSw4IEBACiAJLyogTWFrZSBzdXJlIGxlYWRpbmcgZGlyZWN0b3JpZXMgZXhpc3QgZm9yIHRoZSByZW1vdGUgcmVmICovCiAJZXAgPSBzdHJjaHIodXJsICsgc3RybGVuKHJlbW90ZS0+dXJsKSArIDEsICcvJyk7CiAJd2hpbGUgKGVwKSB7Ci0JCSplcCA9IDA7CisJCWNoYXIgc2F2ZWRfY2hhcmFjdGVyID0gZXBbMV07CisJCWVwWzFdID0gJ1wwJzsKIAkJc2xvdCA9IGdldF9hY3RpdmVfc2xvdCgpOwogCQlzbG90LT5yZXN1bHRzID0gJnJlc3VsdHM7CiAJCWN1cmxfZWFzeV9zZXRvcHQoc2xvdC0+Y3VybCwgQ1VSTE9QVF9IVFRQR0VULCAxKTsKQEAgLTEyMjQsNyArMTIyNCw3IEBACiAJCQlmcmVlKHVybCk7CiAJCQlyZXR1cm4gTlVMTDsKIAkJfQotCQkqZXAgPSAnLyc7CisJCWVwWzFdID0gc2F2ZWRfY2hhcmFjdGVyOwogCQllcCA9IHN0cmNocihlcCArIDEsICcvJyk7CiAJfQogCkBAIC0xMzA4LDcgKzEzMDgsNyBAQAogCWludCByYyA9IDA7CiAKIAlsb2NrX3Rva2VuX2hlYWRlciA9IHhtYWxsb2Moc3RybGVuKGxvY2stPnRva2VuKSArIDMxKTsKLQlzcHJpbnRmKGxvY2tfdG9rZW5faGVhZGVyLCAiTG9jay1Ub2tlbjogPG9wYXF1ZWxvY2t0b2tlbjolcz4iLAorCXNwcmludGYobG9ja190b2tlbl9oZWFkZXIsICJMb2NrLVRva2VuOiA8JXM+IiwKIAkJbG9jay0+dG9rZW4pOwogCWRhdl9oZWFkZXJzID0gY3VybF9zbGlzdF9hcHBlbmQoZGF2X2hlYWRlcnMsIGxvY2tfdG9rZW5faGVhZGVyKTsKIApAQCAtMTQyNiw5ICsxNDI2LDE3IEBACiAJCQkJbHMtPnVzZXJGdW5jKGxzKTsKIAkJCX0KIAkJfSBlbHNlIGlmICghc3RyY21wKGN0eC0+bmFtZSwgREFWX1BST1BGSU5EX05BTUUpICYmIGN0eC0+Y2RhdGEpIHsKLQkJCWxzLT5kZW50cnlfbmFtZSA9IHhtYWxsb2Moc3RybGVuKGN0eC0+Y2RhdGEpIC0KLQkJCQkJCSAgcmVtb3RlLT5wYXRoX2xlbiArIDEpOwotCQkJc3RyY3B5KGxzLT5kZW50cnlfbmFtZSwgY3R4LT5jZGF0YSArIHJlbW90ZS0+cGF0aF9sZW4pOworCQkJY2hhciAqcGF0aCA9IGN0eC0+Y2RhdGE7CisJCQlpZiAoKmN0eC0+Y2RhdGEgPT0gJ2gnKSB7CisJCQkJcGF0aCA9IHN0cnN0cihwYXRoLCAiLy8iKTsKKwkJCQlpZiAocGF0aCkgeworCQkJCQlwYXRoID0gc3RyY2hyKHBhdGgrMiwgJy8nKTsKKwkJCQl9CisJCQl9CisJCQlpZiAocGF0aCkgeworCQkJCXBhdGggKz0gcmVtb3RlLT5wYXRoX2xlbjsKKwkJCQlscy0+ZGVudHJ5X25hbWUgPSB4c3RyZHVwKHBhdGgpOworCQkJfQogCQl9IGVsc2UgaWYgKCFzdHJjbXAoY3R4LT5uYW1lLCBEQVZfUFJPUEZJTkRfQ09MTEVDVElPTikpIHsKIAkJCWxzLT5kZW50cnlfZmxhZ3MgfD0gSVNfRElSOwogCQl9CkBAIC0xNDM5LDYgKzE0NDcsMTIgQEAKIAl9CiB9CiAKKy8qCisgKiBORUVEU1dPUks6IHJlbW90ZV9scygpIGlnbm9yZXMgaW5mby9yZWZzIG9uIHRoZSByZW1vdGUgc2lkZS4gIEJ1dCBpdAorICogc2hvdWxkIF9vbmx5XyBoZWVkIHRoZSBpbmZvcm1hdGlvbiBmcm9tIHRoYXQgZmlsZSwgaW5zdGVhZCBvZiB0cnlpbmcgdG8KKyAqIGRldGVybWluZSB0aGUgcmVmcyBmcm9tIHRoZSByZW1vdGUgZmlsZSBzeXN0ZW0gKGJhZGx5OiBpdCBkb2VzIG5vdCBldmVuCisgKiBrbm93IGFib3V0IHBhY2tlZC1yZWZzKS4KKyAqLwogc3RhdGljIHZvaWQgcmVtb3RlX2xzKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywKIAkJICAgICAgdm9pZCAoKnVzZXJGdW5jKShzdHJ1Y3QgcmVtb3RlX2xzX2N0eCAqbHMpLAogCQkgICAgICB2b2lkICp1c2VyRGF0YSkKQEAgLTE3MjIsNyArMTczNiw3IEBACiAJc3RydWN0IGN1cmxfc2xpc3QgKmRhdl9oZWFkZXJzID0gTlVMTDsKIAogCWlmX2hlYWRlciA9IHhtYWxsb2Moc3RybGVuKGxvY2stPnRva2VuKSArIDI1KTsKLQlzcHJpbnRmKGlmX2hlYWRlciwgIklmOiAoPG9wYXF1ZWxvY2t0b2tlbjolcz4pIiwgbG9jay0+dG9rZW4pOworCXNwcmludGYoaWZfaGVhZGVyLCAiSWY6ICg8JXM+KSIsIGxvY2stPnRva2VuKTsKIAlkYXZfaGVhZGVycyA9IGN1cmxfc2xpc3RfYXBwZW5kKGRhdl9oZWFkZXJzLCBpZl9oZWFkZXIpOwogCiAJc3RyYnVmX2FkZGYoJm91dF9idWZmZXIuYnVmLCAiJXNcbiIsIHNoYTFfdG9faGV4KHNoYTEpKTsKQEAgLTE3ODAsNyArMTc5NCw3IEBACiAJc3RydWN0IHJlZiAqcmVmOwogCXN0cnVjdCBvYmplY3QgKm9iajsKIAotCXJlZiA9IGFsbG9jX3JlZl9mcm9tX3N0cihyZWZuYW1lKTsKKwlyZWYgPSBhbGxvY19yZWYocmVmbmFtZSk7CiAKIAlpZiAoaHR0cF9mZXRjaF9yZWYocmVtb3RlLT51cmwsIHJlZikgIT0gMCkgewogCQlmcHJpbnRmKHN0ZGVyciwKQEAgLTE4ODcsNyArMTkwMSw3IEBACiAJY2hhciAqcmVmX2luZm87CiAJc3RydWN0IHJlZiAqcmVmOwogCi0JcmVmID0gYWxsb2NfcmVmX2Zyb21fc3RyKGxzLT5kZW50cnlfbmFtZSk7CisJcmVmID0gYWxsb2NfcmVmKGxzLT5kZW50cnlfbmFtZSk7CiAKIAlpZiAoaHR0cF9mZXRjaF9yZWYocmVtb3RlLT51cmwsIHJlZikgIT0gMCkgewogCQlmcHJpbnRmKHN0ZGVyciwKQEAgLTE5NDEsNyArMTk1NSw3IEBACiAJCSAgYWRkX3JlbW90ZV9pbmZvX3JlZiwgJmJ1ZmZlci5idWYpOwogCWlmICghYWJvcnRlZCkgewogCQlpZl9oZWFkZXIgPSB4bWFsbG9jKHN0cmxlbihsb2NrLT50b2tlbikgKyAyNSk7Ci0JCXNwcmludGYoaWZfaGVhZGVyLCAiSWY6ICg8b3BhcXVlbG9ja3Rva2VuOiVzPikiLCBsb2NrLT50b2tlbik7CisJCXNwcmludGYoaWZfaGVhZGVyLCAiSWY6ICg8JXM+KSIsIGxvY2stPnRva2VuKTsKIAkJZGF2X2hlYWRlcnMgPSBjdXJsX3NsaXN0X2FwcGVuZChkYXZfaGVhZGVycywgaWZfaGVhZGVyKTsKIAogCQlzbG90ID0gZ2V0X2FjdGl2ZV9zbG90KCk7CkBAIC0yMjA4LDEwICsyMjIyLDExIEBACiAJCWlmICghcmVtb3RlLT51cmwpIHsKIAkJCWNoYXIgKnBhdGggPSBzdHJzdHIoYXJnLCAiLy8iKTsKIAkJCXJlbW90ZS0+dXJsID0gYXJnOworCQkJcmVtb3RlLT5wYXRoX2xlbiA9IHN0cmxlbihhcmcpOwogCQkJaWYgKHBhdGgpIHsKLQkJCQlwYXRoID0gc3RyY2hyKHBhdGgrMiwgJy8nKTsKLQkJCQlpZiAocGF0aCkKLQkJCQkJcmVtb3RlLT5wYXRoX2xlbiA9IHN0cmxlbihwYXRoKTsKKwkJCQlyZW1vdGUtPnBhdGggPSBzdHJjaHIocGF0aCsyLCAnLycpOworCQkJCWlmIChyZW1vdGUtPnBhdGgpCisJCQkJCXJlbW90ZS0+cGF0aF9sZW4gPSBzdHJsZW4ocmVtb3RlLT5wYXRoKTsKIAkJCX0KIAkJCWNvbnRpbnVlOwogCQl9CkBAIC0yMjM3LDExICsyMjUyLDEyIEBACiAJbm9fcHJhZ21hX2hlYWRlciA9IGN1cmxfc2xpc3RfYXBwZW5kKG5vX3ByYWdtYV9oZWFkZXIsICJQcmFnbWE6Iik7CiAKIAlpZiAocmVtb3RlLT51cmwgJiYgcmVtb3RlLT51cmxbc3RybGVuKHJlbW90ZS0+dXJsKS0xXSAhPSAnLycpIHsKLQkJcmV3cml0dGVuX3VybCA9IG1hbGxvYyhzdHJsZW4ocmVtb3RlLT51cmwpKzIpOworCQlyZXdyaXR0ZW5fdXJsID0geG1hbGxvYyhzdHJsZW4ocmVtb3RlLT51cmwpKzIpOwogCQlzdHJjcHkocmV3cml0dGVuX3VybCwgcmVtb3RlLT51cmwpOwogCQlzdHJjYXQocmV3cml0dGVuX3VybCwgIi8iKTsKKwkJcmVtb3RlLT5wYXRoID0gcmV3cml0dGVuX3VybCArIChyZW1vdGUtPnBhdGggLSByZW1vdGUtPnVybCk7CisJCXJlbW90ZS0+cGF0aF9sZW4rKzsKIAkJcmVtb3RlLT51cmwgPSByZXdyaXR0ZW5fdXJsOwotCQkrK3JlbW90ZS0+cGF0aF9sZW47CiAJfQogCiAJLyogVmVyaWZ5IERBViBjb21wbGlhbmNlL2xvY2sgc3VwcG9ydCAqLwpkaWZmIC0tZ2l0IGEvaHR0cC13YWxrZXIuYyBiL2h0dHAtd2Fsa2VyLmMKaW5kZXggOWRjNmIyNy4uMGRiYWQzYyAxMDA2NDQKLS0tIGEvaHR0cC13YWxrZXIuYworKysgYi9odHRwLXdhbGtlci5jCkBAIC0zNiw3ICszNiw3IEBACiAJY2hhciBlcnJvcnN0cltDVVJMX0VSUk9SX1NJWkVdOwogCWxvbmcgaHR0cF9jb2RlOwogCXVuc2lnbmVkIGNoYXIgcmVhbF9zaGExWzIwXTsKLQlTSEFfQ1RYIGM7CisJZ2l0X1NIQV9DVFggYzsKIAl6X3N0cmVhbSBzdHJlYW07CiAJaW50IHpyZXQ7CiAJaW50IHJlbmFtZTsKQEAgLTgyLDggKzgyLDggQEAKIAlkbyB7CiAJCW9ial9yZXEtPnN0cmVhbS5uZXh0X291dCA9IGV4cG47CiAJCW9ial9yZXEtPnN0cmVhbS5hdmFpbF9vdXQgPSBzaXplb2YoZXhwbik7Ci0JCW9ial9yZXEtPnpyZXQgPSBpbmZsYXRlKCZvYmpfcmVxLT5zdHJlYW0sIFpfU1lOQ19GTFVTSCk7Ci0JCVNIQTFfVXBkYXRlKCZvYmpfcmVxLT5jLCBleHBuLAorCQlvYmpfcmVxLT56cmV0ID0gZ2l0X2luZmxhdGUoJm9ial9yZXEtPnN0cmVhbSwgWl9TWU5DX0ZMVVNIKTsKKwkJZ2l0X1NIQTFfVXBkYXRlKCZvYmpfcmVxLT5jLCBleHBuLAogCQkJICAgIHNpemVvZihleHBuKSAtIG9ial9yZXEtPnN0cmVhbS5hdmFpbF9vdXQpOwogCX0gd2hpbGUgKG9ial9yZXEtPnN0cmVhbS5hdmFpbF9pbiAmJiBvYmpfcmVxLT56cmV0ID09IFpfT0spOwogCWRhdGFfcmVjZWl2ZWQrKzsKQEAgLTE0Miw5ICsxNDIsOSBAQAogCiAJbWVtc2V0KCZvYmpfcmVxLT5zdHJlYW0sIDAsIHNpemVvZihvYmpfcmVxLT5zdHJlYW0pKTsKIAotCWluZmxhdGVJbml0KCZvYmpfcmVxLT5zdHJlYW0pOworCWdpdF9pbmZsYXRlX2luaXQoJm9ial9yZXEtPnN0cmVhbSk7CiAKLQlTSEExX0luaXQoJm9ial9yZXEtPmMpOworCWdpdF9TSEExX0luaXQoJm9ial9yZXEtPmMpOwogCiAJdXJsID0geG1hbGxvYyhzdHJsZW4ob2JqX3JlcS0+cmVwby0+YmFzZSkgKyA1MSk7CiAJb2JqX3JlcS0+dXJsID0geG1hbGxvYyhzdHJsZW4ob2JqX3JlcS0+cmVwby0+YmFzZSkgKyA1MSk7CkBAIC0xODMsOCArMTgzLDggQEAKIAkgICBmaWxlOyBhbHNvIHJld2luZCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsb2NhbCBmaWxlLiAqLwogCWlmIChwcmV2X3JlYWQgPT0gLTEpIHsKIAkJbWVtc2V0KCZvYmpfcmVxLT5zdHJlYW0sIDAsIHNpemVvZihvYmpfcmVxLT5zdHJlYW0pKTsKLQkJaW5mbGF0ZUluaXQoJm9ial9yZXEtPnN0cmVhbSk7Ci0JCVNIQTFfSW5pdCgmb2JqX3JlcS0+Yyk7CisJCWdpdF9pbmZsYXRlX2luaXQoJm9ial9yZXEtPnN0cmVhbSk7CisJCWdpdF9TSEExX0luaXQoJm9ial9yZXEtPmMpOwogCQlpZiAocHJldl9wb3NuPjApIHsKIAkJCXByZXZfcG9zbiA9IDA7CiAJCQlsc2VlayhvYmpfcmVxLT5sb2NhbCwgMCwgU0VFS19TRVQpOwpAQCAtMjQzLDggKzI0Myw4IEBACiAJCXJldHVybjsKIAl9CiAKLQlpbmZsYXRlRW5kKCZvYmpfcmVxLT5zdHJlYW0pOwotCVNIQTFfRmluYWwob2JqX3JlcS0+cmVhbF9zaGExLCAmb2JqX3JlcS0+Yyk7CisJZ2l0X2luZmxhdGVfZW5kKCZvYmpfcmVxLT5zdHJlYW0pOworCWdpdF9TSEExX0ZpbmFsKG9ial9yZXEtPnJlYWxfc2hhMSwgJm9ial9yZXEtPmMpOwogCWlmIChvYmpfcmVxLT56cmV0ICE9IFpfU1RSRUFNX0VORCkgewogCQl1bmxpbmsob2JqX3JlcS0+dG1wZmlsZSk7CiAJCXJldHVybjsKZGlmZiAtLWdpdCBhL2h0dHAuYyBiL2h0dHAuYwppbmRleCBjMThlMzBhLi5lZTU4Nzk5IDEwMDY0NAotLS0gYS9odHRwLmMKKysrIGIvaHR0cC5jCkBAIC00MDgsNyArNDA4LDcgQEAKIAogdm9pZCBhZGRfZmlsbF9mdW5jdGlvbih2b2lkICpkYXRhLCBpbnQgKCpmaWxsKSh2b2lkICopKQogewotCXN0cnVjdCBmaWxsX2NoYWluICpuZXcgPSBtYWxsb2Moc2l6ZW9mKCpuZXcpKTsKKwlzdHJ1Y3QgZmlsbF9jaGFpbiAqbmV3ID0geG1hbGxvYyhzaXplb2YoKm5ldykpOwogCXN0cnVjdCBmaWxsX2NoYWluICoqbGlua3AgPSAmZmlsbF9jZmc7CiAJbmV3LT5kYXRhID0gZGF0YTsKIAluZXctPmZpbGwgPSBmaWxsOwpkaWZmIC0tZ2l0IGEvaWRlbnQuYyBiL2lkZW50LmMKaW5kZXggMDljZjBjOS4uOTlmMWM4NSAxMDA2NDQKLS0tIGEvaWRlbnQuYworKysgYi9pZGVudC5jCkBAIC0xMjEsNiArMTIxLDcgQEAKIAkJYyA9PSAnPCcgfHwKIAkJYyA9PSAnPicgfHwKIAkJYyA9PSAnIicgfHwKKwkJYyA9PSAnXFwnIHx8CiAJCWMgPT0gJ1wnJzsKIH0KIApkaWZmIC0tZ2l0IGEvaW1hcC1zZW5kLmMgYi9pbWFwLXNlbmQuYwppbmRleCAxZWMxMzEwLi4zNzAzZGJkIDEwMDY0NAotLS0gYS9pbWFwLXNlbmQuYworKysgYi9pbWFwLXNlbmQuYwpAQCAtMjMsNzEgKzIzLDc0IEBACiAgKi8KIAogI2luY2x1ZGUgImNhY2hlLmgiCisjaWZkZWYgTk9fT1BFTlNTTAordHlwZWRlZiB2b2lkICpTU0w7CisjZW5kaWYKIAotdHlwZWRlZiBzdHJ1Y3Qgc3RvcmVfY29uZiB7CitzdHJ1Y3Qgc3RvcmVfY29uZiB7CiAJY2hhciAqbmFtZTsKIAljb25zdCBjaGFyICpwYXRoOyAvKiBzaG91bGQgdGhpcyBiZSBoZXJlPyBpdHMgaW50ZXJwcmV0YXRpb24gaXMgZHJpdmVyLXNwZWNpZmljICovCiAJY2hhciAqbWFwX2luYm94OwogCWNoYXIgKnRyYXNoOwogCXVuc2lnbmVkIG1heF9zaXplOyAvKiBvZmZfdCBpcyBvdmVya2lsbCAqLwogCXVuc2lnbmVkIHRyYXNoX3JlbW90ZV9uZXc6MSwgdHJhc2hfb25seV9uZXc6MTsKLX0gc3RvcmVfY29uZl90OworfTsKIAotdHlwZWRlZiBzdHJ1Y3Qgc3RyaW5nX2xpc3Qgeworc3RydWN0IHN0cmluZ19saXN0IHsKIAlzdHJ1Y3Qgc3RyaW5nX2xpc3QgKm5leHQ7CiAJY2hhciBzdHJpbmdbMV07Ci19IHN0cmluZ19saXN0X3Q7Cit9OwogCi10eXBlZGVmIHN0cnVjdCBjaGFubmVsX2NvbmYgeworc3RydWN0IGNoYW5uZWxfY29uZiB7CiAJc3RydWN0IGNoYW5uZWxfY29uZiAqbmV4dDsKIAljaGFyICpuYW1lOwotCXN0b3JlX2NvbmZfdCAqbWFzdGVyLCAqc2xhdmU7CisJc3RydWN0IHN0b3JlX2NvbmYgKm1hc3RlciwgKnNsYXZlOwogCWNoYXIgKm1hc3Rlcl9uYW1lLCAqc2xhdmVfbmFtZTsKIAljaGFyICpzeW5jX3N0YXRlOwotCXN0cmluZ19saXN0X3QgKnBhdHRlcm5zOworCXN0cnVjdCBzdHJpbmdfbGlzdCAqcGF0dGVybnM7CiAJaW50IG1vcHMsIHNvcHM7CiAJdW5zaWduZWQgbWF4X21lc3NhZ2VzOyAvKiBmb3Igc2xhdmUgb25seSAqLwotfSBjaGFubmVsX2NvbmZfdDsKK307CiAKLXR5cGVkZWYgc3RydWN0IGdyb3VwX2NvbmYgeworc3RydWN0IGdyb3VwX2NvbmYgewogCXN0cnVjdCBncm91cF9jb25mICpuZXh0OwogCWNoYXIgKm5hbWU7Ci0Jc3RyaW5nX2xpc3RfdCAqY2hhbm5lbHM7Ci19IGdyb3VwX2NvbmZfdDsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmNoYW5uZWxzOworfTsKIAogLyogRm9yIG1lc3NhZ2UtPnN0YXR1cyAqLwogI2RlZmluZSBNX1JFQ0VOVCAgICAgICAoMTw8MCkgLyogdW5zeW5jYWJsZSBmbGFnOyBtYWlsZGlyXyogZGVwZW5kIG9uIHRoaXMgYmVpbmcgMTw8MCAqLwogI2RlZmluZSBNX0RFQUQgICAgICAgICAoMTw8MSkgLyogZXhwdW5nZWQgKi8KICNkZWZpbmUgTV9GTEFHUyAgICAgICAgKDE8PDIpIC8qIGZsYWdzIGZldGNoZWQgKi8KIAotdHlwZWRlZiBzdHJ1Y3QgbWVzc2FnZSB7CitzdHJ1Y3QgbWVzc2FnZSB7CiAJc3RydWN0IG1lc3NhZ2UgKm5leHQ7Ci0JLyogc3RyaW5nX2xpc3RfdCAqa2V5d29yZHM7ICovCisJLyogc3RydWN0IHN0cmluZ19saXN0ICprZXl3b3JkczsgKi8KIAlzaXplX3Qgc2l6ZTsgLyogemVybyBpbXBsaWVzICJub3QgZmV0Y2hlZCIgKi8KIAlpbnQgdWlkOwogCXVuc2lnbmVkIGNoYXIgZmxhZ3MsIHN0YXR1czsKLX0gbWVzc2FnZV90OworfTsKIAotdHlwZWRlZiBzdHJ1Y3Qgc3RvcmUgewotCXN0b3JlX2NvbmZfdCAqY29uZjsgLyogZm9yZWlnbiAqLworc3RydWN0IHN0b3JlIHsKKwlzdHJ1Y3Qgc3RvcmVfY29uZiAqY29uZjsgLyogZm9yZWlnbiAqLwogCiAJLyogY3VycmVudGx5IG9wZW4gbWFpbGJveCAqLwogCWNvbnN0IGNoYXIgKm5hbWU7IC8qIGZvcmVpZ24hIG1heWJlIHByZXNldD8gKi8KIAljaGFyICpwYXRoOyAvKiBvd24gKi8KLQltZXNzYWdlX3QgKm1zZ3M7IC8qIG93biAqLworCXN0cnVjdCBtZXNzYWdlICptc2dzOyAvKiBvd24gKi8KIAlpbnQgdWlkdmFsaWRpdHk7CiAJdW5zaWduZWQgY2hhciBvcHRzOyAvKiBtYXliZSBwcmVzZXQ/ICovCiAJLyogbm90ZSB0aGF0IHRoZSBmb2xsb3dpbmcgZG8gX25vdF8gcmVmbGVjdCBzdGF0cyBmcm9tIG1zZ3MsIGJ1dCBtYWlsYm94IHRvdGFscyAqLwogCWludCBjb3VudDsgLyogIyBvZiBtZXNzYWdlcyAqLwogCWludCByZWNlbnQ7IC8qICMgb2YgcmVjZW50IG1lc3NhZ2VzIC0gZG9uJ3QgdHJ1c3QgdGhpcyBiZXlvbmQgdGhlIGluaXRpYWwgcmVhZCAqLwotfSBzdG9yZV90OworfTsKIAotdHlwZWRlZiBzdHJ1Y3Qgeworc3RydWN0IG1zZ19kYXRhIHsKIAljaGFyICpkYXRhOwogCWludCBsZW47CiAJdW5zaWduZWQgY2hhciBmbGFnczsKIAl1bnNpZ25lZCBpbnQgY3JsZjoxOwotfSBtc2dfZGF0YV90OworfTsKIAogI2RlZmluZSBEUlZfT0sgICAgICAgICAgMAogI2RlZmluZSBEUlZfTVNHX0JBRCAgICAgLTEKQEAgLTk2LDE0ICs5OSwxNCBAQAogCiBzdGF0aWMgaW50IFZlcmJvc2UsIFF1aWV0OwogCi1zdGF0aWMgdm9pZCBpbWFwX2luZm8oIGNvbnN0IGNoYXIgKiwgLi4uICk7Ci1zdGF0aWMgdm9pZCBpbWFwX3dhcm4oIGNvbnN0IGNoYXIgKiwgLi4uICk7CitzdGF0aWMgdm9pZCBpbWFwX2luZm8oY29uc3QgY2hhciAqLCAuLi4pOworc3RhdGljIHZvaWQgaW1hcF93YXJuKGNvbnN0IGNoYXIgKiwgLi4uKTsKIAotc3RhdGljIGNoYXIgKm5leHRfYXJnKCBjaGFyICoqICk7CitzdGF0aWMgY2hhciAqbmV4dF9hcmcoY2hhciAqKik7CiAKLXN0YXRpYyB2b2lkIGZyZWVfZ2VuZXJpY19tZXNzYWdlcyggbWVzc2FnZV90ICogKTsKK3N0YXRpYyB2b2lkIGZyZWVfZ2VuZXJpY19tZXNzYWdlcyhzdHJ1Y3QgbWVzc2FnZSAqKTsKIAotc3RhdGljIGludCBuZnNucHJpbnRmKCBjaGFyICpidWYsIGludCBibGVuLCBjb25zdCBjaGFyICpmbXQsIC4uLiApOworc3RhdGljIGludCBuZnNucHJpbnRmKGNoYXIgKmJ1ZiwgaW50IGJsZW4sIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKIAogc3RhdGljIGludCBuZnZhc3ByaW50ZihjaGFyICoqc3RycCwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFwKQogewpAQCAtMTE5LDY3ICsxMjIsNzAgQEAKIAlyZXR1cm4gbGVuOwogfQogCi1zdGF0aWMgdm9pZCBhcmM0X2luaXQoIHZvaWQgKTsKLXN0YXRpYyB1bnNpZ25lZCBjaGFyIGFyYzRfZ2V0Ynl0ZSggdm9pZCApOworc3RhdGljIHZvaWQgYXJjNF9pbml0KHZvaWQpOworc3RhdGljIHVuc2lnbmVkIGNoYXIgYXJjNF9nZXRieXRlKHZvaWQpOwogCi10eXBlZGVmIHN0cnVjdCBpbWFwX3NlcnZlcl9jb25mIHsKK3N0cnVjdCBpbWFwX3NlcnZlcl9jb25mIHsKIAljaGFyICpuYW1lOwogCWNoYXIgKnR1bm5lbDsKIAljaGFyICpob3N0OwogCWludCBwb3J0OwogCWNoYXIgKnVzZXI7CiAJY2hhciAqcGFzczsKLX0gaW1hcF9zZXJ2ZXJfY29uZl90OworCWludCB1c2Vfc3NsOworCWludCBzc2xfdmVyaWZ5OworfTsKIAotdHlwZWRlZiBzdHJ1Y3QgaW1hcF9zdG9yZV9jb25mIHsKLQlzdG9yZV9jb25mX3QgZ2VuOwotCWltYXBfc2VydmVyX2NvbmZfdCAqc2VydmVyOworc3RydWN0IGltYXBfc3RvcmVfY29uZiB7CisJc3RydWN0IHN0b3JlX2NvbmYgZ2VuOworCXN0cnVjdCBpbWFwX3NlcnZlcl9jb25mICpzZXJ2ZXI7CiAJdW5zaWduZWQgdXNlX25hbWVzcGFjZToxOwotfSBpbWFwX3N0b3JlX2NvbmZfdDsKK307CiAKLSNkZWZpbmUgTklMCSh2b2lkKikweDEKLSNkZWZpbmUgTElTVAkodm9pZCopMHgyCisjZGVmaW5lIE5JTAkodm9pZCAqKTB4MQorI2RlZmluZSBMSVNUCSh2b2lkICopMHgyCiAKLXR5cGVkZWYgc3RydWN0IF9saXN0IHsKLQlzdHJ1Y3QgX2xpc3QgKm5leHQsICpjaGlsZDsKK3N0cnVjdCBpbWFwX2xpc3QgeworCXN0cnVjdCBpbWFwX2xpc3QgKm5leHQsICpjaGlsZDsKIAljaGFyICp2YWw7CiAJaW50IGxlbjsKLX0gbGlzdF90OworfTsKIAotdHlwZWRlZiBzdHJ1Y3Qgeworc3RydWN0IGltYXBfc29ja2V0IHsKIAlpbnQgZmQ7Ci19IFNvY2tldF90OworCVNTTCAqc3NsOworfTsKIAotdHlwZWRlZiBzdHJ1Y3QgewotCVNvY2tldF90IHNvY2s7CitzdHJ1Y3QgaW1hcF9idWZmZXIgeworCXN0cnVjdCBpbWFwX3NvY2tldCBzb2NrOwogCWludCBieXRlczsKIAlpbnQgb2Zmc2V0OwogCWNoYXIgYnVmWzEwMjRdOwotfSBidWZmZXJfdDsKK307CiAKIHN0cnVjdCBpbWFwX2NtZDsKIAotdHlwZWRlZiBzdHJ1Y3QgaW1hcCB7CitzdHJ1Y3QgaW1hcCB7CiAJaW50IHVpZG5leHQ7IC8qIGZyb20gU0VMRUNUIHJlc3BvbnNlcyAqLwotCWxpc3RfdCAqbnNfcGVyc29uYWwsICpuc19vdGhlciwgKm5zX3NoYXJlZDsgLyogTkFNRVNQQUNFIGluZm8gKi8KKwlzdHJ1Y3QgaW1hcF9saXN0ICpuc19wZXJzb25hbCwgKm5zX290aGVyLCAqbnNfc2hhcmVkOyAvKiBOQU1FU1BBQ0UgaW5mbyAqLwogCXVuc2lnbmVkIGNhcHMsIHJjYXBzOyAvKiBDQVBBQklMSVRZIHJlc3VsdHMgKi8KIAkvKiBjb21tYW5kIHF1ZXVlICovCiAJaW50IG5leHR0YWcsIG51bV9pbl9wcm9ncmVzcywgbGl0ZXJhbF9wZW5kaW5nOwogCXN0cnVjdCBpbWFwX2NtZCAqaW5fcHJvZ3Jlc3MsICoqaW5fcHJvZ3Jlc3NfYXBwZW5kOwotCWJ1ZmZlcl90IGJ1ZjsgLyogdGhpcyBpcyBCSUcsIHNvIHB1dCBpdCBsYXN0ICovCi19IGltYXBfdDsKKwlzdHJ1Y3QgaW1hcF9idWZmZXIgYnVmOyAvKiB0aGlzIGlzIEJJRywgc28gcHV0IGl0IGxhc3QgKi8KK307CiAKLXR5cGVkZWYgc3RydWN0IGltYXBfc3RvcmUgewotCXN0b3JlX3QgZ2VuOworc3RydWN0IGltYXBfc3RvcmUgeworCXN0cnVjdCBzdG9yZSBnZW47CiAJaW50IHVpZHZhbGlkaXR5OwotCWltYXBfdCAqaW1hcDsKKwlzdHJ1Y3QgaW1hcCAqaW1hcDsKIAljb25zdCBjaGFyICpwcmVmaXg7CiAJdW5zaWduZWQgLypjdXJyZW50bmM6MSwqLyB0cmFzaG5jOjE7Ci19IGltYXBfc3RvcmVfdDsKK307CiAKIHN0cnVjdCBpbWFwX2NtZF9jYiB7Ci0JaW50ICgqY29udCkoIGltYXBfc3RvcmVfdCAqY3R4LCBzdHJ1Y3QgaW1hcF9jbWQgKmNtZCwgY29uc3QgY2hhciAqcHJvbXB0ICk7Ci0Jdm9pZCAoKmRvbmUpKCBpbWFwX3N0b3JlX3QgKmN0eCwgc3RydWN0IGltYXBfY21kICpjbWQsIGludCByZXNwb25zZSk7CisJaW50ICgqY29udCkoc3RydWN0IGltYXBfc3RvcmUgKmN0eCwgc3RydWN0IGltYXBfY21kICpjbWQsIGNvbnN0IGNoYXIgKnByb21wdCk7CisJdm9pZCAoKmRvbmUpKHN0cnVjdCBpbWFwX3N0b3JlICpjdHgsIHN0cnVjdCBpbWFwX2NtZCAqY21kLCBpbnQgcmVzcG9uc2UpOwogCXZvaWQgKmN0eDsKIAljaGFyICpkYXRhOwogCWludCBkbGVuOwpAQCAtMjAxLDYgKzIwNyw3IEBACiAJVUlEUExVUywKIAlMSVRFUkFMUExVUywKIAlOQU1FU1BBQ0UsCisJU1RBUlRUTFMsCiB9OwogCiBzdGF0aWMgY29uc3QgY2hhciAqY2FwX2xpc3RbXSA9IHsKQEAgLTIwOCwxMyArMjE1LDE0IEBACiAJIlVJRFBMVVMiLAogCSJMSVRFUkFMKyIsCiAJIk5BTUVTUEFDRSIsCisJIlNUQVJUVExTIiwKIH07CiAKICNkZWZpbmUgUkVTUF9PSyAgICAwCiAjZGVmaW5lIFJFU1BfTk8gICAgMQogI2RlZmluZSBSRVNQX0JBRCAgIDIKIAotc3RhdGljIGludCBnZXRfY21kX3Jlc3VsdCggaW1hcF9zdG9yZV90ICpjdHgsIHN0cnVjdCBpbWFwX2NtZCAqdGNtZCApOworc3RhdGljIGludCBnZXRfY21kX3Jlc3VsdChzdHJ1Y3QgaW1hcF9zdG9yZSAqY3R4LCBzdHJ1Y3QgaW1hcF9jbWQgKnRjbWQpOwogCiAKIHN0YXRpYyBjb25zdCBjaGFyICpGbGFnc1tdID0gewpAQCAtMjI1LDQyICsyMzMsMTM3IEBACiAJIkRlbGV0ZWQiLAogfTsKIAotc3RhdGljIHZvaWQKLXNvY2tldF9wZXJyb3IoIGNvbnN0IGNoYXIgKmZ1bmMsIFNvY2tldF90ICpzb2NrLCBpbnQgcmV0ICkKKyNpZm5kZWYgTk9fT1BFTlNTTAorc3RhdGljIHZvaWQgc3NsX3NvY2tldF9wZXJyb3IoY29uc3QgY2hhciAqZnVuYykKIHsKLQlpZiAocmV0IDwgMCkKLQkJcGVycm9yKCBmdW5jICk7CisJZnByaW50ZihzdGRlcnIsICIlczogJXNcbiIsIGZ1bmMsIEVSUl9lcnJvcl9zdHJpbmcoRVJSX2dldF9lcnJvcigpLCAwKSk7Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQgc29ja2V0X3BlcnJvcihjb25zdCBjaGFyICpmdW5jLCBzdHJ1Y3QgaW1hcF9zb2NrZXQgKnNvY2ssIGludCByZXQpCit7CisjaWZuZGVmIE5PX09QRU5TU0wKKwlpZiAoc29jay0+c3NsKSB7CisJCWludCBzc2xlcnIgPSBTU0xfZ2V0X2Vycm9yKHNvY2stPnNzbCwgcmV0KTsKKwkJc3dpdGNoIChzc2xlcnIpIHsKKwkJY2FzZSBTU0xfRVJST1JfTk9ORToKKwkJCWJyZWFrOworCQljYXNlIFNTTF9FUlJPUl9TWVNDQUxMOgorCQkJcGVycm9yKCJTU0xfY29ubmVjdCIpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlzc2xfc29ja2V0X3BlcnJvcigiU1NMX2Nvbm5lY3QiKTsKKwkJCWJyZWFrOworCQl9CisJfSBlbHNlCisjZW5kaWYKKwl7CisJCWlmIChyZXQgPCAwKQorCQkJcGVycm9yKGZ1bmMpOworCQllbHNlCisJCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiB1bmV4cGVjdGVkIEVPRlxuIiwgZnVuYyk7CisJfQorfQorCitzdGF0aWMgaW50IHNzbF9zb2NrZXRfY29ubmVjdChzdHJ1Y3QgaW1hcF9zb2NrZXQgKnNvY2ssIGludCB1c2VfdGxzX29ubHksIGludCB2ZXJpZnkpCit7CisjaWZkZWYgTk9fT1BFTlNTTAorCWZwcmludGYoc3RkZXJyLCAiU1NMIHJlcXVlc3RlZCBidXQgU1NMIHN1cHBvcnQgbm90IGNvbXBpbGVkIGluXG4iKTsKKwlyZXR1cm4gLTE7CisjZWxzZQorCVNTTF9NRVRIT0QgKm1ldGg7CisJU1NMX0NUWCAqY3R4OworCWludCByZXQ7CisKKwlTU0xfbGlicmFyeV9pbml0KCk7CisJU1NMX2xvYWRfZXJyb3Jfc3RyaW5ncygpOworCisJaWYgKHVzZV90bHNfb25seSkKKwkJbWV0aCA9IFRMU3YxX21ldGhvZCgpOwogCWVsc2UKLQkJZnByaW50Ziggc3RkZXJyLCAiJXM6IHVuZXhwZWN0ZWQgRU9GXG4iLCBmdW5jICk7CisJCW1ldGggPSBTU0x2MjNfbWV0aG9kKCk7CisKKwlpZiAoIW1ldGgpIHsKKwkJc3NsX3NvY2tldF9wZXJyb3IoIlNTTHYyM19tZXRob2QiKTsKKwkJcmV0dXJuIC0xOworCX0KKworCWN0eCA9IFNTTF9DVFhfbmV3KG1ldGgpOworCisJaWYgKHZlcmlmeSkKKwkJU1NMX0NUWF9zZXRfdmVyaWZ5KGN0eCwgU1NMX1ZFUklGWV9QRUVSLCBOVUxMKTsKKworCWlmICghU1NMX0NUWF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoY3R4KSkgeworCQlzc2xfc29ja2V0X3BlcnJvcigiU1NMX0NUWF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMiKTsKKwkJcmV0dXJuIC0xOworCX0KKwlzb2NrLT5zc2wgPSBTU0xfbmV3KGN0eCk7CisJaWYgKCFzb2NrLT5zc2wpIHsKKwkJc3NsX3NvY2tldF9wZXJyb3IoIlNTTF9uZXciKTsKKwkJcmV0dXJuIC0xOworCX0KKwlpZiAoIVNTTF9zZXRfZmQoc29jay0+c3NsLCBzb2NrLT5mZCkpIHsKKwkJc3NsX3NvY2tldF9wZXJyb3IoIlNTTF9zZXRfZmQiKTsKKwkJcmV0dXJuIC0xOworCX0KKworCXJldCA9IFNTTF9jb25uZWN0KHNvY2stPnNzbCk7CisJaWYgKHJldCA8PSAwKSB7CisJCXNvY2tldF9wZXJyb3IoIlNTTF9jb25uZWN0Iiwgc29jaywgcmV0KTsKKwkJcmV0dXJuIC0xOworCX0KKworCXJldHVybiAwOworI2VuZGlmCiB9CiAKLXN0YXRpYyBpbnQKLXNvY2tldF9yZWFkKCBTb2NrZXRfdCAqc29jaywgY2hhciAqYnVmLCBpbnQgbGVuICkKK3N0YXRpYyBpbnQgc29ja2V0X3JlYWQoc3RydWN0IGltYXBfc29ja2V0ICpzb2NrLCBjaGFyICpidWYsIGludCBsZW4pCiB7Ci0Jc3NpemVfdCBuID0geHJlYWQoIHNvY2stPmZkLCBidWYsIGxlbiApOworCXNzaXplX3QgbjsKKyNpZm5kZWYgTk9fT1BFTlNTTAorCWlmIChzb2NrLT5zc2wpCisJCW4gPSBTU0xfcmVhZChzb2NrLT5zc2wsIGJ1ZiwgbGVuKTsKKwllbHNlCisjZW5kaWYKKwkJbiA9IHhyZWFkKHNvY2stPmZkLCBidWYsIGxlbik7CiAJaWYgKG4gPD0gMCkgewotCQlzb2NrZXRfcGVycm9yKCAicmVhZCIsIHNvY2ssIG4gKTsKLQkJY2xvc2UoIHNvY2stPmZkICk7CisJCXNvY2tldF9wZXJyb3IoInJlYWQiLCBzb2NrLCBuKTsKKwkJY2xvc2Uoc29jay0+ZmQpOwogCQlzb2NrLT5mZCA9IC0xOwogCX0KIAlyZXR1cm4gbjsKIH0KIAotc3RhdGljIGludAotc29ja2V0X3dyaXRlKCBTb2NrZXRfdCAqc29jaywgY29uc3QgY2hhciAqYnVmLCBpbnQgbGVuICkKK3N0YXRpYyBpbnQgc29ja2V0X3dyaXRlKHN0cnVjdCBpbWFwX3NvY2tldCAqc29jaywgY29uc3QgY2hhciAqYnVmLCBpbnQgbGVuKQogewotCWludCBuID0gd3JpdGVfaW5fZnVsbCggc29jay0+ZmQsIGJ1ZiwgbGVuICk7CisJaW50IG47CisjaWZuZGVmIE5PX09QRU5TU0wKKwlpZiAoc29jay0+c3NsKQorCQluID0gU1NMX3dyaXRlKHNvY2stPnNzbCwgYnVmLCBsZW4pOworCWVsc2UKKyNlbmRpZgorCQluID0gd3JpdGVfaW5fZnVsbChzb2NrLT5mZCwgYnVmLCBsZW4pOwogCWlmIChuICE9IGxlbikgewotCQlzb2NrZXRfcGVycm9yKCAid3JpdGUiLCBzb2NrLCBuICk7Ci0JCWNsb3NlKCBzb2NrLT5mZCApOworCQlzb2NrZXRfcGVycm9yKCJ3cml0ZSIsIHNvY2ssIG4pOworCQljbG9zZShzb2NrLT5mZCk7CiAJCXNvY2stPmZkID0gLTE7CiAJfQogCXJldHVybiBuOwogfQogCitzdGF0aWMgdm9pZCBzb2NrZXRfc2h1dGRvd24oc3RydWN0IGltYXBfc29ja2V0ICpzb2NrKQoreworI2lmbmRlZiBOT19PUEVOU1NMCisJaWYgKHNvY2stPnNzbCkgeworCQlTU0xfc2h1dGRvd24oc29jay0+c3NsKTsKKwkJU1NMX2ZyZWUoc29jay0+c3NsKTsKKwl9CisjZW5kaWYKKwljbG9zZShzb2NrLT5mZCk7Cit9CisKIC8qIHNpbXBsZSBsaW5lIGJ1ZmZlcmluZyAqLwotc3RhdGljIGludAotYnVmZmVyX2dldHMoIGJ1ZmZlcl90ICogYiwgY2hhciAqKnMgKQorc3RhdGljIGludCBidWZmZXJfZ2V0cyhzdHJ1Y3QgaW1hcF9idWZmZXIgKmIsIGNoYXIgKipzKQogewogCWludCBuOwogCWludCBzdGFydCA9IGItPm9mZnNldDsKQEAgLTI3NCw3ICszNzcsNyBAQAogCQkJCS8qIHNoaWZ0IGRvd24gdXNlZCBieXRlcyAqLwogCQkJCSpzID0gYi0+YnVmOwogCi0JCQkJYXNzZXJ0KCBzdGFydCA8PSBiLT5ieXRlcyApOworCQkJCWFzc2VydChzdGFydCA8PSBiLT5ieXRlcyk7CiAJCQkJbiA9IGItPmJ5dGVzIC0gc3RhcnQ7CiAKIAkJCQlpZiAobikKQEAgLTI4NCw4ICszODcsOCBAQAogCQkJCXN0YXJ0ID0gMDsKIAkJCX0KIAotCQkJbiA9IHNvY2tldF9yZWFkKCAmYi0+c29jaywgYi0+YnVmICsgYi0+Ynl0ZXMsCi0JCQkJCSBzaXplb2YoYi0+YnVmKSAtIGItPmJ5dGVzICk7CisJCQluID0gc29ja2V0X3JlYWQoJmItPnNvY2ssIGItPmJ1ZiArIGItPmJ5dGVzLAorCQkJCQkgc2l6ZW9mKGItPmJ1ZikgLSBiLT5ieXRlcyk7CiAKIAkJCWlmIChuIDw9IDApCiAJCQkJcmV0dXJuIC0xOwpAQCAtMjk0LDEyICszOTcsMTIgQEAKIAkJfQogCiAJCWlmIChiLT5idWZbYi0+b2Zmc2V0XSA9PSAnXHInKSB7Ci0JCQlhc3NlcnQoIGItPm9mZnNldCArIDEgPCBiLT5ieXRlcyApOworCQkJYXNzZXJ0KGItPm9mZnNldCArIDEgPCBiLT5ieXRlcyk7CiAJCQlpZiAoYi0+YnVmW2ItPm9mZnNldCArIDFdID09ICdcbicpIHsKIAkJCQliLT5idWZbYi0+b2Zmc2V0XSA9IDA7ICAvKiB0ZXJtaW5hdGUgdGhlIHN0cmluZyAqLwogCQkJCWItPm9mZnNldCArPSAyOyAvKiBuZXh0IGxpbmUgKi8KIAkJCQlpZiAoVmVyYm9zZSkKLQkJCQkJcHV0cyggKnMgKTsKKwkJCQkJcHV0cygqcyk7CiAJCQkJcmV0dXJuIDA7CiAJCQl9CiAJCX0KQEAgLTMwOSwzOSArNDEyLDM2IEBACiAJLyogbm90IHJlYWNoZWQgKi8KIH0KIAotc3RhdGljIHZvaWQKLWltYXBfaW5mbyggY29uc3QgY2hhciAqbXNnLCAuLi4gKQorc3RhdGljIHZvaWQgaW1hcF9pbmZvKGNvbnN0IGNoYXIgKm1zZywgLi4uKQogewogCXZhX2xpc3QgdmE7CiAKIAlpZiAoIVF1aWV0KSB7Ci0JCXZhX3N0YXJ0KCB2YSwgbXNnICk7Ci0JCXZwcmludGYoIG1zZywgdmEgKTsKLQkJdmFfZW5kKCB2YSApOwotCQlmZmx1c2goIHN0ZG91dCApOworCQl2YV9zdGFydCh2YSwgbXNnKTsKKwkJdnByaW50Zihtc2csIHZhKTsKKwkJdmFfZW5kKHZhKTsKKwkJZmZsdXNoKHN0ZG91dCk7CiAJfQogfQogCi1zdGF0aWMgdm9pZAotaW1hcF93YXJuKCBjb25zdCBjaGFyICptc2csIC4uLiApCitzdGF0aWMgdm9pZCBpbWFwX3dhcm4oY29uc3QgY2hhciAqbXNnLCAuLi4pCiB7CiAJdmFfbGlzdCB2YTsKIAogCWlmIChRdWlldCA8IDIpIHsKLQkJdmFfc3RhcnQoIHZhLCBtc2cgKTsKLQkJdmZwcmludGYoIHN0ZGVyciwgbXNnLCB2YSApOwotCQl2YV9lbmQoIHZhICk7CisJCXZhX3N0YXJ0KHZhLCBtc2cpOworCQl2ZnByaW50ZihzdGRlcnIsIG1zZywgdmEpOworCQl2YV9lbmQodmEpOwogCX0KIH0KIAotc3RhdGljIGNoYXIgKgotbmV4dF9hcmcoIGNoYXIgKipzICkKK3N0YXRpYyBjaGFyICpuZXh0X2FyZyhjaGFyICoqcykKIHsKIAljaGFyICpyZXQ7CiAKIAlpZiAoIXMgfHwgISpzKQogCQlyZXR1cm4gTlVMTDsKLQl3aGlsZSAoaXNzcGFjZSggKHVuc2lnbmVkIGNoYXIpICoqcyApKQorCXdoaWxlIChpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSAqKnMpKQogCQkoKnMpKys7CiAJaWYgKCEqKnMpIHsKIAkJKnMgPSBOVUxMOwpAQCAtMzUwLDEwICs0NTAsMTAgQEAKIAlpZiAoKipzID09ICciJykgewogCQkrKypzOwogCQlyZXQgPSAqczsKLQkJKnMgPSBzdHJjaHIoICpzLCAnIicgKTsKKwkJKnMgPSBzdHJjaHIoKnMsICciJyk7CiAJfSBlbHNlIHsKIAkJcmV0ID0gKnM7Ci0JCXdoaWxlICgqKnMgJiYgIWlzc3BhY2UoICh1bnNpZ25lZCBjaGFyKSAqKnMgKSkKKwkJd2hpbGUgKCoqcyAmJiAhaXNzcGFjZSgodW5zaWduZWQgY2hhcikgKipzKSkKIAkJCSgqcykrKzsKIAl9CiAJaWYgKCpzKSB7CkBAIC0zNjUsMjcgKzQ2NSwyNSBAQAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB2b2lkCi1mcmVlX2dlbmVyaWNfbWVzc2FnZXMoIG1lc3NhZ2VfdCAqbXNncyApCitzdGF0aWMgdm9pZCBmcmVlX2dlbmVyaWNfbWVzc2FnZXMoc3RydWN0IG1lc3NhZ2UgKm1zZ3MpCiB7Ci0JbWVzc2FnZV90ICp0bXNnOworCXN0cnVjdCBtZXNzYWdlICp0bXNnOwogCiAJZm9yICg7IG1zZ3M7IG1zZ3MgPSB0bXNnKSB7CiAJCXRtc2cgPSBtc2dzLT5uZXh0OwotCQlmcmVlKCBtc2dzICk7CisJCWZyZWUobXNncyk7CiAJfQogfQogCi1zdGF0aWMgaW50Ci1uZnNucHJpbnRmKCBjaGFyICpidWYsIGludCBibGVuLCBjb25zdCBjaGFyICpmbXQsIC4uLiApCitzdGF0aWMgaW50IG5mc25wcmludGYoY2hhciAqYnVmLCBpbnQgYmxlbiwgY29uc3QgY2hhciAqZm10LCAuLi4pCiB7CiAJaW50IHJldDsKIAl2YV9saXN0IHZhOwogCi0JdmFfc3RhcnQoIHZhLCBmbXQgKTsKLQlpZiAoYmxlbiA8PSAwIHx8ICh1bnNpZ25lZCkocmV0ID0gdnNucHJpbnRmKCBidWYsIGJsZW4sIGZtdCwgdmEgKSkgPj0gKHVuc2lnbmVkKWJsZW4pCi0JCWRpZSggIkZhdGFsOiBidWZmZXIgdG9vIHNtYWxsLiBQbGVhc2UgcmVwb3J0IGEgYnVnLlxuIik7Ci0JdmFfZW5kKCB2YSApOworCXZhX3N0YXJ0KHZhLCBmbXQpOworCWlmIChibGVuIDw9IDAgfHwgKHVuc2lnbmVkKShyZXQgPSB2c25wcmludGYoYnVmLCBibGVuLCBmbXQsIHZhKSkgPj0gKHVuc2lnbmVkKWJsZW4pCisJCWRpZSgiRmF0YWw6IGJ1ZmZlciB0b28gc21hbGwuIFBsZWFzZSByZXBvcnQgYSBidWcuXG4iKTsKKwl2YV9lbmQodmEpOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTM5MywyMSArNDkxLDIwIEBACiAJdW5zaWduZWQgY2hhciBpLCBqLCBzWzI1Nl07CiB9IHJzOwogCi1zdGF0aWMgdm9pZAotYXJjNF9pbml0KCB2b2lkICkKK3N0YXRpYyB2b2lkIGFyYzRfaW5pdCh2b2lkKQogewogCWludCBpLCBmZDsKIAl1bnNpZ25lZCBjaGFyIGosIHNpLCBkYXRbMTI4XTsKIAotCWlmICgoZmQgPSBvcGVuKCAiL2Rldi91cmFuZG9tIiwgT19SRE9OTFkgKSkgPCAwICYmIChmZCA9IG9wZW4oICIvZGV2L3JhbmRvbSIsIE9fUkRPTkxZICkpIDwgMCkgewotCQlmcHJpbnRmKCBzdGRlcnIsICJGYXRhbDogbm8gcmFuZG9tIG51bWJlciBzb3VyY2UgYXZhaWxhYmxlLlxuIiApOwotCQlleGl0KCAzICk7CisJaWYgKChmZCA9IG9wZW4oIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKSkgPCAwICYmIChmZCA9IG9wZW4oIi9kZXYvcmFuZG9tIiwgT19SRE9OTFkpKSA8IDApIHsKKwkJZnByaW50ZihzdGRlcnIsICJGYXRhbDogbm8gcmFuZG9tIG51bWJlciBzb3VyY2UgYXZhaWxhYmxlLlxuIik7CisJCWV4aXQoMyk7CiAJfQotCWlmIChyZWFkX2luX2Z1bGwoIGZkLCBkYXQsIDEyOCApICE9IDEyOCkgewotCQlmcHJpbnRmKCBzdGRlcnIsICJGYXRhbDogY2Fubm90IHJlYWQgcmFuZG9tIG51bWJlciBzb3VyY2UuXG4iICk7Ci0JCWV4aXQoIDMgKTsKKwlpZiAocmVhZF9pbl9mdWxsKGZkLCBkYXQsIDEyOCkgIT0gMTI4KSB7CisJCWZwcmludGYoc3RkZXJyLCAiRmF0YWw6IGNhbm5vdCByZWFkIHJhbmRvbSBudW1iZXIgc291cmNlLlxuIik7CisJCWV4aXQoMyk7CiAJfQotCWNsb3NlKCBmZCApOworCWNsb3NlKGZkKTsKIAogCWZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykKIAkJcnMuc1tpXSA9IGk7CkBAIC00MjMsOCArNTIwLDcgQEAKIAkJYXJjNF9nZXRieXRlKCk7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBjaGFyCi1hcmM0X2dldGJ5dGUoIHZvaWQgKQorc3RhdGljIHVuc2lnbmVkIGNoYXIgYXJjNF9nZXRieXRlKHZvaWQpCiB7CiAJdW5zaWduZWQgY2hhciBzaSwgc2o7CiAKQEAgLTQzNyw1NCArNTMzLDUzIEBACiAJcmV0dXJuIHJzLnNbKHNpICsgc2opICYgMHhmZl07CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgaW1hcF9jbWQgKgotdl9pc3N1ZV9pbWFwX2NtZCggaW1hcF9zdG9yZV90ICpjdHgsIHN0cnVjdCBpbWFwX2NtZF9jYiAqY2IsCi0JCSAgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFwICkKK3N0YXRpYyBzdHJ1Y3QgaW1hcF9jbWQgKnZfaXNzdWVfaW1hcF9jbWQoc3RydWN0IGltYXBfc3RvcmUgKmN0eCwKKwkJCQkJIHN0cnVjdCBpbWFwX2NtZF9jYiAqY2IsCisJCQkJCSBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXApCiB7Ci0JaW1hcF90ICppbWFwID0gY3R4LT5pbWFwOworCXN0cnVjdCBpbWFwICppbWFwID0gY3R4LT5pbWFwOwogCXN0cnVjdCBpbWFwX2NtZCAqY21kOwogCWludCBuLCBidWZsOwogCWNoYXIgYnVmWzEwMjRdOwogCi0JY21kID0geG1hbGxvYyggc2l6ZW9mKHN0cnVjdCBpbWFwX2NtZCkgKTsKLQluZnZhc3ByaW50ZiggJmNtZC0+Y21kLCBmbXQsIGFwICk7CisJY21kID0geG1hbGxvYyhzaXplb2Yoc3RydWN0IGltYXBfY21kKSk7CisJbmZ2YXNwcmludGYoJmNtZC0+Y21kLCBmbXQsIGFwKTsKIAljbWQtPnRhZyA9ICsraW1hcC0+bmV4dHRhZzsKIAogCWlmIChjYikKIAkJY21kLT5jYiA9ICpjYjsKIAllbHNlCi0JCW1lbXNldCggJmNtZC0+Y2IsIDAsIHNpemVvZihjbWQtPmNiKSApOworCQltZW1zZXQoJmNtZC0+Y2IsIDAsIHNpemVvZihjbWQtPmNiKSk7CiAKIAl3aGlsZSAoaW1hcC0+bGl0ZXJhbF9wZW5kaW5nKQotCQlnZXRfY21kX3Jlc3VsdCggY3R4LCBOVUxMICk7CisJCWdldF9jbWRfcmVzdWx0KGN0eCwgTlVMTCk7CiAKLQlidWZsID0gbmZzbnByaW50ZiggYnVmLCBzaXplb2YoYnVmKSwgY21kLT5jYi5kYXRhID8gQ0FQKExJVEVSQUxQTFVTKSA/CisJYnVmbCA9IG5mc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgY21kLT5jYi5kYXRhID8gQ0FQKExJVEVSQUxQTFVTKSA/CiAJCQkgICAiJWQgJXN7JWQrfVxyXG4iIDogIiVkICVzeyVkfVxyXG4iIDogIiVkICVzXHJcbiIsCi0JCQkgICBjbWQtPnRhZywgY21kLT5jbWQsIGNtZC0+Y2IuZGxlbiApOworCQkJICAgY21kLT50YWcsIGNtZC0+Y21kLCBjbWQtPmNiLmRsZW4pOwogCWlmIChWZXJib3NlKSB7CiAJCWlmIChpbWFwLT5udW1faW5fcHJvZ3Jlc3MpCi0JCQlwcmludGYoICIoJWQgaW4gcHJvZ3Jlc3MpICIsIGltYXAtPm51bV9pbl9wcm9ncmVzcyApOwotCQlpZiAobWVtY21wKCBjbWQtPmNtZCwgIkxPR0lOIiwgNSApKQotCQkJcHJpbnRmKCAiPj4+ICVzIiwgYnVmICk7CisJCQlwcmludGYoIiglZCBpbiBwcm9ncmVzcykgIiwgaW1hcC0+bnVtX2luX3Byb2dyZXNzKTsKKwkJaWYgKG1lbWNtcChjbWQtPmNtZCwgIkxPR0lOIiwgNSkpCisJCQlwcmludGYoIj4+PiAlcyIsIGJ1Zik7CiAJCWVsc2UKLQkJCXByaW50ZiggIj4+PiAlZCBMT0dJTiA8dXNlcj4gPHBhc3M+XG4iLCBjbWQtPnRhZyApOworCQkJcHJpbnRmKCI+Pj4gJWQgTE9HSU4gPHVzZXI+IDxwYXNzPlxuIiwgY21kLT50YWcpOwogCX0KLQlpZiAoc29ja2V0X3dyaXRlKCAmaW1hcC0+YnVmLnNvY2ssIGJ1ZiwgYnVmbCApICE9IGJ1ZmwpIHsKLQkJZnJlZSggY21kLT5jbWQgKTsKLQkJZnJlZSggY21kICk7CisJaWYgKHNvY2tldF93cml0ZSgmaW1hcC0+YnVmLnNvY2ssIGJ1ZiwgYnVmbCkgIT0gYnVmbCkgeworCQlmcmVlKGNtZC0+Y21kKTsKKwkJZnJlZShjbWQpOwogCQlpZiAoY2IpCi0JCQlmcmVlKCBjYi0+ZGF0YSApOworCQkJZnJlZShjYi0+ZGF0YSk7CiAJCXJldHVybiBOVUxMOwogCX0KIAlpZiAoY21kLT5jYi5kYXRhKSB7CiAJCWlmIChDQVAoTElURVJBTFBMVVMpKSB7Ci0JCQluID0gc29ja2V0X3dyaXRlKCAmaW1hcC0+YnVmLnNvY2ssIGNtZC0+Y2IuZGF0YSwgY21kLT5jYi5kbGVuICk7Ci0JCQlmcmVlKCBjbWQtPmNiLmRhdGEgKTsKKwkJCW4gPSBzb2NrZXRfd3JpdGUoJmltYXAtPmJ1Zi5zb2NrLCBjbWQtPmNiLmRhdGEsIGNtZC0+Y2IuZGxlbik7CisJCQlmcmVlKGNtZC0+Y2IuZGF0YSk7CiAJCQlpZiAobiAhPSBjbWQtPmNiLmRsZW4gfHwKLQkJCSAgICAobiA9IHNvY2tldF93cml0ZSggJmltYXAtPmJ1Zi5zb2NrLCAiXHJcbiIsIDIgKSkgIT0gMikKLQkJCXsKLQkJCQlmcmVlKCBjbWQtPmNtZCApOwotCQkJCWZyZWUoIGNtZCApOworCQkJICAgIChuID0gc29ja2V0X3dyaXRlKCZpbWFwLT5idWYuc29jaywgIlxyXG4iLCAyKSkgIT0gMikgeworCQkJCWZyZWUoY21kLT5jbWQpOworCQkJCWZyZWUoY21kKTsKIAkJCQlyZXR1cm4gTlVMTDsKIAkJCX0KIAkJCWNtZC0+Y2IuZGF0YSA9IE5VTEw7CkBAIC00OTksMTA5ICs1OTQsMTA2IEBACiAJcmV0dXJuIGNtZDsKIH0KIAotc3RhdGljIHN0cnVjdCBpbWFwX2NtZCAqCi1pc3N1ZV9pbWFwX2NtZCggaW1hcF9zdG9yZV90ICpjdHgsIHN0cnVjdCBpbWFwX2NtZF9jYiAqY2IsIGNvbnN0IGNoYXIgKmZtdCwgLi4uICkKK3N0YXRpYyBzdHJ1Y3QgaW1hcF9jbWQgKmlzc3VlX2ltYXBfY21kKHN0cnVjdCBpbWFwX3N0b3JlICpjdHgsCisJCQkJICAgICAgIHN0cnVjdCBpbWFwX2NtZF9jYiAqY2IsCisJCQkJICAgICAgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQogewogCXN0cnVjdCBpbWFwX2NtZCAqcmV0OwogCXZhX2xpc3QgYXA7CiAKLQl2YV9zdGFydCggYXAsIGZtdCApOwotCXJldCA9IHZfaXNzdWVfaW1hcF9jbWQoIGN0eCwgY2IsIGZtdCwgYXAgKTsKLQl2YV9lbmQoIGFwICk7CisJdmFfc3RhcnQoYXAsIGZtdCk7CisJcmV0ID0gdl9pc3N1ZV9pbWFwX2NtZChjdHgsIGNiLCBmbXQsIGFwKTsKKwl2YV9lbmQoYXApOwogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQKLWltYXBfZXhlYyggaW1hcF9zdG9yZV90ICpjdHgsIHN0cnVjdCBpbWFwX2NtZF9jYiAqY2IsIGNvbnN0IGNoYXIgKmZtdCwgLi4uICkKK3N0YXRpYyBpbnQgaW1hcF9leGVjKHN0cnVjdCBpbWFwX3N0b3JlICpjdHgsIHN0cnVjdCBpbWFwX2NtZF9jYiAqY2IsCisJCSAgICAgY29uc3QgY2hhciAqZm10LCAuLi4pCiB7CiAJdmFfbGlzdCBhcDsKIAlzdHJ1Y3QgaW1hcF9jbWQgKmNtZHA7CiAKLQl2YV9zdGFydCggYXAsIGZtdCApOwotCWNtZHAgPSB2X2lzc3VlX2ltYXBfY21kKCBjdHgsIGNiLCBmbXQsIGFwICk7Ci0JdmFfZW5kKCBhcCApOworCXZhX3N0YXJ0KGFwLCBmbXQpOworCWNtZHAgPSB2X2lzc3VlX2ltYXBfY21kKGN0eCwgY2IsIGZtdCwgYXApOworCXZhX2VuZChhcCk7CiAJaWYgKCFjbWRwKQogCQlyZXR1cm4gUkVTUF9CQUQ7CiAKLQlyZXR1cm4gZ2V0X2NtZF9yZXN1bHQoIGN0eCwgY21kcCApOworCXJldHVybiBnZXRfY21kX3Jlc3VsdChjdHgsIGNtZHApOwogfQogCi1zdGF0aWMgaW50Ci1pbWFwX2V4ZWNfbSggaW1hcF9zdG9yZV90ICpjdHgsIHN0cnVjdCBpbWFwX2NtZF9jYiAqY2IsIGNvbnN0IGNoYXIgKmZtdCwgLi4uICkKK3N0YXRpYyBpbnQgaW1hcF9leGVjX20oc3RydWN0IGltYXBfc3RvcmUgKmN0eCwgc3RydWN0IGltYXBfY21kX2NiICpjYiwKKwkJICAgICAgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQogewogCXZhX2xpc3QgYXA7CiAJc3RydWN0IGltYXBfY21kICpjbWRwOwogCi0JdmFfc3RhcnQoIGFwLCBmbXQgKTsKLQljbWRwID0gdl9pc3N1ZV9pbWFwX2NtZCggY3R4LCBjYiwgZm10LCBhcCApOwotCXZhX2VuZCggYXAgKTsKKwl2YV9zdGFydChhcCwgZm10KTsKKwljbWRwID0gdl9pc3N1ZV9pbWFwX2NtZChjdHgsIGNiLCBmbXQsIGFwKTsKKwl2YV9lbmQoYXApOwogCWlmICghY21kcCkKIAkJcmV0dXJuIERSVl9TVE9SRV9CQUQ7CiAKLQlzd2l0Y2ggKGdldF9jbWRfcmVzdWx0KCBjdHgsIGNtZHAgKSkgeworCXN3aXRjaCAoZ2V0X2NtZF9yZXN1bHQoY3R4LCBjbWRwKSkgewogCWNhc2UgUkVTUF9CQUQ6IHJldHVybiBEUlZfU1RPUkVfQkFEOwogCWNhc2UgUkVTUF9OTzogcmV0dXJuIERSVl9NU0dfQkFEOwogCWRlZmF1bHQ6IHJldHVybiBEUlZfT0s7CiAJfQogfQogCi1zdGF0aWMgaW50Ci1pc19hdG9tKCBsaXN0X3QgKmxpc3QgKQorc3RhdGljIGludCBpc19hdG9tKHN0cnVjdCBpbWFwX2xpc3QgKmxpc3QpCiB7CiAJcmV0dXJuIGxpc3QgJiYgbGlzdC0+dmFsICYmIGxpc3QtPnZhbCAhPSBOSUwgJiYgbGlzdC0+dmFsICE9IExJU1Q7CiB9CiAKLXN0YXRpYyBpbnQKLWlzX2xpc3QoIGxpc3RfdCAqbGlzdCApCitzdGF0aWMgaW50IGlzX2xpc3Qoc3RydWN0IGltYXBfbGlzdCAqbGlzdCkKIHsKIAlyZXR1cm4gbGlzdCAmJiBsaXN0LT52YWwgPT0gTElTVDsKIH0KIAotc3RhdGljIHZvaWQKLWZyZWVfbGlzdCggbGlzdF90ICpsaXN0ICkKK3N0YXRpYyB2b2lkIGZyZWVfbGlzdChzdHJ1Y3QgaW1hcF9saXN0ICpsaXN0KQogewotCWxpc3RfdCAqdG1wOworCXN0cnVjdCBpbWFwX2xpc3QgKnRtcDsKIAogCWZvciAoOyBsaXN0OyBsaXN0ID0gdG1wKSB7CiAJCXRtcCA9IGxpc3QtPm5leHQ7Ci0JCWlmIChpc19saXN0KCBsaXN0ICkpCi0JCQlmcmVlX2xpc3QoIGxpc3QtPmNoaWxkICk7Ci0JCWVsc2UgaWYgKGlzX2F0b20oIGxpc3QgKSkKLQkJCWZyZWUoIGxpc3QtPnZhbCApOwotCQlmcmVlKCBsaXN0ICk7CisJCWlmIChpc19saXN0KGxpc3QpKQorCQkJZnJlZV9saXN0KGxpc3QtPmNoaWxkKTsKKwkJZWxzZSBpZiAoaXNfYXRvbShsaXN0KSkKKwkJCWZyZWUobGlzdC0+dmFsKTsKKwkJZnJlZShsaXN0KTsKIAl9CiB9CiAKLXN0YXRpYyBpbnQKLXBhcnNlX2ltYXBfbGlzdF9sKCBpbWFwX3QgKmltYXAsIGNoYXIgKipzcCwgbGlzdF90ICoqY3VycCwgaW50IGxldmVsICkKK3N0YXRpYyBpbnQgcGFyc2VfaW1hcF9saXN0X2woc3RydWN0IGltYXAgKmltYXAsIGNoYXIgKipzcCwgc3RydWN0IGltYXBfbGlzdCAqKmN1cnAsIGludCBsZXZlbCkKIHsKLQlsaXN0X3QgKmN1cjsKKwlzdHJ1Y3QgaW1hcF9saXN0ICpjdXI7CiAJY2hhciAqcyA9ICpzcCwgKnA7CiAJaW50IG4sIGJ5dGVzOwogCiAJZm9yICg7OykgewotCQl3aGlsZSAoaXNzcGFjZSggKHVuc2lnbmVkIGNoYXIpKnMgKSkKKwkJd2hpbGUgKGlzc3BhY2UoKHVuc2lnbmVkIGNoYXIpKnMpKQogCQkJcysrOwogCQlpZiAobGV2ZWwgJiYgKnMgPT0gJyknKSB7CiAJCQlzKys7CiAJCQlicmVhazsKIAkJfQotCQkqY3VycCA9IGN1ciA9IHhtYWxsb2MoIHNpemVvZigqY3VyKSApOworCQkqY3VycCA9IGN1ciA9IHhtYWxsb2Moc2l6ZW9mKCpjdXIpKTsKIAkJY3VycCA9ICZjdXItPm5leHQ7CiAJCWN1ci0+dmFsID0gTlVMTDsgLyogZm9yIGNsZWFuIGJhaWwgKi8KIAkJaWYgKCpzID09ICcoJykgewogCQkJLyogc3VibGlzdCAqLwogCQkJcysrOwogCQkJY3VyLT52YWwgPSBMSVNUOwotCQkJaWYgKHBhcnNlX2ltYXBfbGlzdF9sKCBpbWFwLCAmcywgJmN1ci0+Y2hpbGQsIGxldmVsICsgMSApKQorCQkJaWYgKHBhcnNlX2ltYXBfbGlzdF9sKGltYXAsICZzLCAmY3VyLT5jaGlsZCwgbGV2ZWwgKyAxKSkKIAkJCQlnb3RvIGJhaWw7CiAJCX0gZWxzZSBpZiAoaW1hcCAmJiAqcyA9PSAneycpIHsKIAkJCS8qIGxpdGVyYWwgKi8KLQkJCWJ5dGVzID0gY3VyLT5sZW4gPSBzdHJ0b2woIHMgKyAxLCAmcywgMTAgKTsKKwkJCWJ5dGVzID0gY3VyLT5sZW4gPSBzdHJ0b2wocyArIDEsICZzLCAxMCk7CiAJCQlpZiAoKnMgIT0gJ30nKQogCQkJCWdvdG8gYmFpbDsKIAotCQkJcyA9IGN1ci0+dmFsID0geG1hbGxvYyggY3VyLT5sZW4gKTsKKwkJCXMgPSBjdXItPnZhbCA9IHhtYWxsb2MoY3VyLT5sZW4pOwogCiAJCQkvKiBkdW1wIHdoYXRzIGxlZnQgb3ZlciBpbiB0aGUgaW5wdXQgYnVmZmVyICovCiAJCQluID0gaW1hcC0+YnVmLmJ5dGVzIC0gaW1hcC0+YnVmLm9mZnNldDsKQEAgLTYxMCw3ICs3MDIsNyBAQAogCQkJCS8qIHRoZSBlbnRpcmUgbWVzc2FnZSBmaXQgaW4gdGhlIGJ1ZmZlciAqLwogCQkJCW4gPSBieXRlczsKIAotCQkJbWVtY3B5KCBzLCBpbWFwLT5idWYuYnVmICsgaW1hcC0+YnVmLm9mZnNldCwgbiApOworCQkJbWVtY3B5KHMsIGltYXAtPmJ1Zi5idWYgKyBpbWFwLT5idWYub2Zmc2V0LCBuKTsKIAkJCXMgKz0gbjsKIAkJCWJ5dGVzIC09IG47CiAKQEAgLTYxOSwxMyArNzExLDEzIEBACiAKIAkJCS8qIG5vdyByZWFkIHRoZSByZXN0IG9mIHRoZSBtZXNzYWdlICovCiAJCQl3aGlsZSAoYnl0ZXMgPiAwKSB7Ci0JCQkJaWYgKChuID0gc29ja2V0X3JlYWQgKCZpbWFwLT5idWYuc29jaywgcywgYnl0ZXMpKSA8PSAwKQorCQkJCWlmICgobiA9IHNvY2tldF9yZWFkKCZpbWFwLT5idWYuc29jaywgcywgYnl0ZXMpKSA8PSAwKQogCQkJCQlnb3RvIGJhaWw7CiAJCQkJcyArPSBuOwogCQkJCWJ5dGVzIC09IG47CiAJCQl9CiAKLQkJCWlmIChidWZmZXJfZ2V0cyggJmltYXAtPmJ1ZiwgJnMgKSkKKwkJCWlmIChidWZmZXJfZ2V0cygmaW1hcC0+YnVmLCAmcykpCiAJCQkJZ290byBiYWlsOwogCQl9IGVsc2UgaWYgKCpzID09ICciJykgewogCQkJLyogcXVvdGVkIHN0cmluZyAqLwpAQCAtNjQwLDE1ICs3MzIsMTQgQEAKIAkJfSBlbHNlIHsKIAkJCS8qIGF0b20gKi8KIAkJCXAgPSBzOwotCQkJZm9yICg7ICpzICYmICFpc3NwYWNlKCAodW5zaWduZWQgY2hhcikqcyApOyBzKyspCisJCQlmb3IgKDsgKnMgJiYgIWlzc3BhY2UoKHVuc2lnbmVkIGNoYXIpKnMpOyBzKyspCiAJCQkJaWYgKGxldmVsICYmICpzID09ICcpJykKIAkJCQkJYnJlYWs7CiAJCQljdXItPmxlbiA9IHMgLSBwOwotCQkJaWYgKGN1ci0+bGVuID09IDMgJiYgIW1lbWNtcCAoIk5JTCIsIHAsIDMpKSB7CisJCQlpZiAoY3VyLT5sZW4gPT0gMyAmJiAhbWVtY21wKCJOSUwiLCBwLCAzKSkKIAkJCQljdXItPnZhbCA9IE5JTDsKLQkJCX0gZWxzZSB7CisJCQllbHNlCiAJCQkJY3VyLT52YWwgPSB4bWVtZHVweihwLCBjdXItPmxlbik7Ci0JCQl9CiAJCX0KIAogCQlpZiAoIWxldmVsKQpAQCAtNjYwLDEyNyArNzUxLDEyMiBAQAogCSpjdXJwID0gTlVMTDsKIAlyZXR1cm4gMDsKIAotICBiYWlsOgorYmFpbDoKIAkqY3VycCA9IE5VTEw7CiAJcmV0dXJuIC0xOwogfQogCi1zdGF0aWMgbGlzdF90ICoKLXBhcnNlX2ltYXBfbGlzdCggaW1hcF90ICppbWFwLCBjaGFyICoqc3AgKQorc3RhdGljIHN0cnVjdCBpbWFwX2xpc3QgKnBhcnNlX2ltYXBfbGlzdChzdHJ1Y3QgaW1hcCAqaW1hcCwgY2hhciAqKnNwKQogewotCWxpc3RfdCAqaGVhZDsKKwlzdHJ1Y3QgaW1hcF9saXN0ICpoZWFkOwogCi0JaWYgKCFwYXJzZV9pbWFwX2xpc3RfbCggaW1hcCwgc3AsICZoZWFkLCAwICkpCisJaWYgKCFwYXJzZV9pbWFwX2xpc3RfbChpbWFwLCBzcCwgJmhlYWQsIDApKQogCQlyZXR1cm4gaGVhZDsKLQlmcmVlX2xpc3QoIGhlYWQgKTsKKwlmcmVlX2xpc3QoaGVhZCk7CiAJcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBsaXN0X3QgKgotcGFyc2VfbGlzdCggY2hhciAqKnNwICkKK3N0YXRpYyBzdHJ1Y3QgaW1hcF9saXN0ICpwYXJzZV9saXN0KGNoYXIgKipzcCkKIHsKLQlyZXR1cm4gcGFyc2VfaW1hcF9saXN0KCBOVUxMLCBzcCApOworCXJldHVybiBwYXJzZV9pbWFwX2xpc3QoTlVMTCwgc3ApOwogfQogCi1zdGF0aWMgdm9pZAotcGFyc2VfY2FwYWJpbGl0eSggaW1hcF90ICppbWFwLCBjaGFyICpjbWQgKQorc3RhdGljIHZvaWQgcGFyc2VfY2FwYWJpbGl0eShzdHJ1Y3QgaW1hcCAqaW1hcCwgY2hhciAqY21kKQogewogCWNoYXIgKmFyZzsKIAl1bnNpZ25lZCBpOwogCiAJaW1hcC0+Y2FwcyA9IDB4ODAwMDAwMDA7Ci0Jd2hpbGUgKChhcmcgPSBuZXh0X2FyZyggJmNtZCApKSkKKwl3aGlsZSAoKGFyZyA9IG5leHRfYXJnKCZjbWQpKSkKIAkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY2FwX2xpc3QpOyBpKyspCi0JCQlpZiAoIXN0cmNtcCggY2FwX2xpc3RbaV0sIGFyZyApKQorCQkJaWYgKCFzdHJjbXAoY2FwX2xpc3RbaV0sIGFyZykpCiAJCQkJaW1hcC0+Y2FwcyB8PSAxIDw8IGk7CiAJaW1hcC0+cmNhcHMgPSBpbWFwLT5jYXBzOwogfQogCi1zdGF0aWMgaW50Ci1wYXJzZV9yZXNwb25zZV9jb2RlKCBpbWFwX3N0b3JlX3QgKmN0eCwgc3RydWN0IGltYXBfY21kX2NiICpjYiwgY2hhciAqcyApCitzdGF0aWMgaW50IHBhcnNlX3Jlc3BvbnNlX2NvZGUoc3RydWN0IGltYXBfc3RvcmUgKmN0eCwgc3RydWN0IGltYXBfY21kX2NiICpjYiwKKwkJCSAgICAgICBjaGFyICpzKQogewotCWltYXBfdCAqaW1hcCA9IGN0eC0+aW1hcDsKKwlzdHJ1Y3QgaW1hcCAqaW1hcCA9IGN0eC0+aW1hcDsKIAljaGFyICphcmcsICpwOwogCiAJaWYgKCpzICE9ICdbJykKIAkJcmV0dXJuIFJFU1BfT0s7CQkvKiBubyByZXNwb25zZSBjb2RlICovCiAJcysrOwotCWlmICghKHAgPSBzdHJjaHIoIHMsICddJyApKSkgewotCQlmcHJpbnRmKCBzdGRlcnIsICJJTUFQIGVycm9yOiBtYWxmb3JtZWQgcmVzcG9uc2UgY29kZVxuIiApOworCWlmICghKHAgPSBzdHJjaHIocywgJ10nKSkpIHsKKwkJZnByaW50ZihzdGRlcnIsICJJTUFQIGVycm9yOiBtYWxmb3JtZWQgcmVzcG9uc2UgY29kZVxuIik7CiAJCXJldHVybiBSRVNQX0JBRDsKIAl9CiAJKnArKyA9IDA7Ci0JYXJnID0gbmV4dF9hcmcoICZzICk7Ci0JaWYgKCFzdHJjbXAoICJVSURWQUxJRElUWSIsIGFyZyApKSB7Ci0JCWlmICghKGFyZyA9IG5leHRfYXJnKCAmcyApKSB8fCAhKGN0eC0+Z2VuLnVpZHZhbGlkaXR5ID0gYXRvaSggYXJnICkpKSB7Ci0JCQlmcHJpbnRmKCBzdGRlcnIsICJJTUFQIGVycm9yOiBtYWxmb3JtZWQgVUlEVkFMSURJVFkgc3RhdHVzXG4iICk7CisJYXJnID0gbmV4dF9hcmcoJnMpOworCWlmICghc3RyY21wKCJVSURWQUxJRElUWSIsIGFyZykpIHsKKwkJaWYgKCEoYXJnID0gbmV4dF9hcmcoJnMpKSB8fCAhKGN0eC0+Z2VuLnVpZHZhbGlkaXR5ID0gYXRvaShhcmcpKSkgeworCQkJZnByaW50ZihzdGRlcnIsICJJTUFQIGVycm9yOiBtYWxmb3JtZWQgVUlEVkFMSURJVFkgc3RhdHVzXG4iKTsKIAkJCXJldHVybiBSRVNQX0JBRDsKIAkJfQotCX0gZWxzZSBpZiAoIXN0cmNtcCggIlVJRE5FWFQiLCBhcmcgKSkgewotCQlpZiAoIShhcmcgPSBuZXh0X2FyZyggJnMgKSkgfHwgIShpbWFwLT51aWRuZXh0ID0gYXRvaSggYXJnICkpKSB7Ci0JCQlmcHJpbnRmKCBzdGRlcnIsICJJTUFQIGVycm9yOiBtYWxmb3JtZWQgTkVYVFVJRCBzdGF0dXNcbiIgKTsKKwl9IGVsc2UgaWYgKCFzdHJjbXAoIlVJRE5FWFQiLCBhcmcpKSB7CisJCWlmICghKGFyZyA9IG5leHRfYXJnKCZzKSkgfHwgIShpbWFwLT51aWRuZXh0ID0gYXRvaShhcmcpKSkgeworCQkJZnByaW50ZihzdGRlcnIsICJJTUFQIGVycm9yOiBtYWxmb3JtZWQgTkVYVFVJRCBzdGF0dXNcbiIpOwogCQkJcmV0dXJuIFJFU1BfQkFEOwogCQl9Ci0JfSBlbHNlIGlmICghc3RyY21wKCAiQ0FQQUJJTElUWSIsIGFyZyApKSB7Ci0JCXBhcnNlX2NhcGFiaWxpdHkoIGltYXAsIHMgKTsKLQl9IGVsc2UgaWYgKCFzdHJjbXAoICJBTEVSVCIsIGFyZyApKSB7CisJfSBlbHNlIGlmICghc3RyY21wKCJDQVBBQklMSVRZIiwgYXJnKSkgeworCQlwYXJzZV9jYXBhYmlsaXR5KGltYXAsIHMpOworCX0gZWxzZSBpZiAoIXN0cmNtcCgiQUxFUlQiLCBhcmcpKSB7CiAJCS8qIFJGQzIwNjAgc2F5cyB0aGF0IHRoZXNlIG1lc3NhZ2VzIE1VU1QgYmUgZGlzcGxheWVkCiAJCSAqIHRvIHRoZSB1c2VyCiAJCSAqLwotCQlmb3IgKDsgaXNzcGFjZSggKHVuc2lnbmVkIGNoYXIpKnAgKTsgcCsrKTsKLQkJZnByaW50Ziggc3RkZXJyLCAiKioqIElNQVAgQUxFUlQgKioqICVzXG4iLCBwICk7Ci0JfSBlbHNlIGlmIChjYiAmJiBjYi0+Y3R4ICYmICFzdHJjbXAoICJBUFBFTkRVSUQiLCBhcmcgKSkgewotCQlpZiAoIShhcmcgPSBuZXh0X2FyZyggJnMgKSkgfHwgIShjdHgtPmdlbi51aWR2YWxpZGl0eSA9IGF0b2koIGFyZyApKSB8fAotCQkgICAgIShhcmcgPSBuZXh0X2FyZyggJnMgKSkgfHwgISgqKGludCAqKWNiLT5jdHggPSBhdG9pKCBhcmcgKSkpCi0JCXsKLQkJCWZwcmludGYoIHN0ZGVyciwgIklNQVAgZXJyb3I6IG1hbGZvcm1lZCBBUFBFTkRVSUQgc3RhdHVzXG4iICk7CisJCWZvciAoOyBpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSpwKTsgcCsrKTsKKwkJZnByaW50ZihzdGRlcnIsICIqKiogSU1BUCBBTEVSVCAqKiogJXNcbiIsIHApOworCX0gZWxzZSBpZiAoY2IgJiYgY2ItPmN0eCAmJiAhc3RyY21wKCJBUFBFTkRVSUQiLCBhcmcpKSB7CisJCWlmICghKGFyZyA9IG5leHRfYXJnKCZzKSkgfHwgIShjdHgtPmdlbi51aWR2YWxpZGl0eSA9IGF0b2koYXJnKSkgfHwKKwkJICAgICEoYXJnID0gbmV4dF9hcmcoJnMpKSB8fCAhKCooaW50ICopY2ItPmN0eCA9IGF0b2koYXJnKSkpIHsKKwkJCWZwcmludGYoc3RkZXJyLCAiSU1BUCBlcnJvcjogbWFsZm9ybWVkIEFQUEVORFVJRCBzdGF0dXNcbiIpOwogCQkJcmV0dXJuIFJFU1BfQkFEOwogCQl9CiAJfQogCXJldHVybiBSRVNQX09LOwogfQogCi1zdGF0aWMgaW50Ci1nZXRfY21kX3Jlc3VsdCggaW1hcF9zdG9yZV90ICpjdHgsIHN0cnVjdCBpbWFwX2NtZCAqdGNtZCApCitzdGF0aWMgaW50IGdldF9jbWRfcmVzdWx0KHN0cnVjdCBpbWFwX3N0b3JlICpjdHgsIHN0cnVjdCBpbWFwX2NtZCAqdGNtZCkKIHsKLQlpbWFwX3QgKmltYXAgPSBjdHgtPmltYXA7CisJc3RydWN0IGltYXAgKmltYXAgPSBjdHgtPmltYXA7CiAJc3RydWN0IGltYXBfY21kICpjbWRwLCAqKnBjbWRwLCAqbmNtZHA7CiAJY2hhciAqY21kLCAqYXJnLCAqYXJnMSwgKnA7CiAJaW50IG4sIHJlc3AsIHJlc3AyLCB0YWc7CiAKIAlmb3IgKDs7KSB7Ci0JCWlmIChidWZmZXJfZ2V0cyggJmltYXAtPmJ1ZiwgJmNtZCApKQorCQlpZiAoYnVmZmVyX2dldHMoJmltYXAtPmJ1ZiwgJmNtZCkpCiAJCQlyZXR1cm4gUkVTUF9CQUQ7CiAKLQkJYXJnID0gbmV4dF9hcmcoICZjbWQgKTsKKwkJYXJnID0gbmV4dF9hcmcoJmNtZCk7CiAJCWlmICgqYXJnID09ICcqJykgewotCQkJYXJnID0gbmV4dF9hcmcoICZjbWQgKTsKKwkJCWFyZyA9IG5leHRfYXJnKCZjbWQpOwogCQkJaWYgKCFhcmcpIHsKLQkJCQlmcHJpbnRmKCBzdGRlcnIsICJJTUFQIGVycm9yOiB1bmFibGUgdG8gcGFyc2UgdW50YWdnZWQgcmVzcG9uc2VcbiIgKTsKKwkJCQlmcHJpbnRmKHN0ZGVyciwgIklNQVAgZXJyb3I6IHVuYWJsZSB0byBwYXJzZSB1bnRhZ2dlZCByZXNwb25zZVxuIik7CiAJCQkJcmV0dXJuIFJFU1BfQkFEOwogCQkJfQogCi0JCQlpZiAoIXN0cmNtcCggIk5BTUVTUEFDRSIsIGFyZyApKSB7Ci0JCQkJaW1hcC0+bnNfcGVyc29uYWwgPSBwYXJzZV9saXN0KCAmY21kICk7Ci0JCQkJaW1hcC0+bnNfb3RoZXIgPSBwYXJzZV9saXN0KCAmY21kICk7Ci0JCQkJaW1hcC0+bnNfc2hhcmVkID0gcGFyc2VfbGlzdCggJmNtZCApOwotCQkJfSBlbHNlIGlmICghc3RyY21wKCAiT0siLCBhcmcgKSB8fCAhc3RyY21wKCAiQkFEIiwgYXJnICkgfHwKLQkJCQkgICAhc3RyY21wKCAiTk8iLCBhcmcgKSB8fCAhc3RyY21wKCAiQllFIiwgYXJnICkpIHsKLQkJCQlpZiAoKHJlc3AgPSBwYXJzZV9yZXNwb25zZV9jb2RlKCBjdHgsIE5VTEwsIGNtZCApKSAhPSBSRVNQX09LKQorCQkJaWYgKCFzdHJjbXAoIk5BTUVTUEFDRSIsIGFyZykpIHsKKwkJCQlpbWFwLT5uc19wZXJzb25hbCA9IHBhcnNlX2xpc3QoJmNtZCk7CisJCQkJaW1hcC0+bnNfb3RoZXIgPSBwYXJzZV9saXN0KCZjbWQpOworCQkJCWltYXAtPm5zX3NoYXJlZCA9IHBhcnNlX2xpc3QoJmNtZCk7CisJCQl9IGVsc2UgaWYgKCFzdHJjbXAoIk9LIiwgYXJnKSB8fCAhc3RyY21wKCJCQUQiLCBhcmcpIHx8CisJCQkJICAgIXN0cmNtcCgiTk8iLCBhcmcpIHx8ICFzdHJjbXAoIkJZRSIsIGFyZykpIHsKKwkJCQlpZiAoKHJlc3AgPSBwYXJzZV9yZXNwb25zZV9jb2RlKGN0eCwgTlVMTCwgY21kKSkgIT0gUkVTUF9PSykKIAkJCQkJcmV0dXJuIHJlc3A7Ci0JCQl9IGVsc2UgaWYgKCFzdHJjbXAoICJDQVBBQklMSVRZIiwgYXJnICkpCi0JCQkJcGFyc2VfY2FwYWJpbGl0eSggaW1hcCwgY21kICk7Ci0JCQllbHNlIGlmICgoYXJnMSA9IG5leHRfYXJnKCAmY21kICkpKSB7Ci0JCQkJaWYgKCFzdHJjbXAoICJFWElTVFMiLCBhcmcxICkpCi0JCQkJCWN0eC0+Z2VuLmNvdW50ID0gYXRvaSggYXJnICk7Ci0JCQkJZWxzZSBpZiAoIXN0cmNtcCggIlJFQ0VOVCIsIGFyZzEgKSkKLQkJCQkJY3R4LT5nZW4ucmVjZW50ID0gYXRvaSggYXJnICk7CisJCQl9IGVsc2UgaWYgKCFzdHJjbXAoIkNBUEFCSUxJVFkiLCBhcmcpKQorCQkJCXBhcnNlX2NhcGFiaWxpdHkoaW1hcCwgY21kKTsKKwkJCWVsc2UgaWYgKChhcmcxID0gbmV4dF9hcmcoJmNtZCkpKSB7CisJCQkJaWYgKCFzdHJjbXAoIkVYSVNUUyIsIGFyZzEpKQorCQkJCQljdHgtPmdlbi5jb3VudCA9IGF0b2koYXJnKTsKKwkJCQllbHNlIGlmICghc3RyY21wKCJSRUNFTlQiLCBhcmcxKSkKKwkJCQkJY3R4LT5nZW4ucmVjZW50ID0gYXRvaShhcmcpOwogCQkJfSBlbHNlIHsKLQkJCQlmcHJpbnRmKCBzdGRlcnIsICJJTUFQIGVycm9yOiB1bmFibGUgdG8gcGFyc2UgdW50YWdnZWQgcmVzcG9uc2VcbiIgKTsKKwkJCQlmcHJpbnRmKHN0ZGVyciwgIklNQVAgZXJyb3I6IHVuYWJsZSB0byBwYXJzZSB1bnRhZ2dlZCByZXNwb25zZVxuIik7CiAJCQkJcmV0dXJuIFJFU1BfQkFEOwogCQkJfQogCQl9IGVsc2UgaWYgKCFpbWFwLT5pbl9wcm9ncmVzcykgewotCQkJZnByaW50Ziggc3RkZXJyLCAiSU1BUCBlcnJvcjogdW5leHBlY3RlZCByZXBseTogJXMgJXNcbiIsIGFyZywgY21kID8gY21kIDogIiIgKTsKKwkJCWZwcmludGYoc3RkZXJyLCAiSU1BUCBlcnJvcjogdW5leHBlY3RlZCByZXBseTogJXMgJXNcbiIsIGFyZywgY21kID8gY21kIDogIiIpOwogCQkJcmV0dXJuIFJFU1BfQkFEOwogCQl9IGVsc2UgaWYgKCphcmcgPT0gJysnKSB7CiAJCQkvKiBUaGlzIGNhbiBoYXBwZW4gb25seSB3aXRoIHRoZSBsYXN0IGNvbW1hbmQgdW5kZXJ3YXksIGFzCkBAIC03ODgsNTcgKzg3NCw1NyBAQAogCQkJY21kcCA9IChzdHJ1Y3QgaW1hcF9jbWQgKikoKGNoYXIgKilpbWFwLT5pbl9wcm9ncmVzc19hcHBlbmQgLQogCQkJICAgICAgIG9mZnNldG9mKHN0cnVjdCBpbWFwX2NtZCwgbmV4dCkpOwogCQkJaWYgKGNtZHAtPmNiLmRhdGEpIHsKLQkJCQluID0gc29ja2V0X3dyaXRlKCAmaW1hcC0+YnVmLnNvY2ssIGNtZHAtPmNiLmRhdGEsIGNtZHAtPmNiLmRsZW4gKTsKLQkJCQlmcmVlKCBjbWRwLT5jYi5kYXRhICk7CisJCQkJbiA9IHNvY2tldF93cml0ZSgmaW1hcC0+YnVmLnNvY2ssIGNtZHAtPmNiLmRhdGEsIGNtZHAtPmNiLmRsZW4pOworCQkJCWZyZWUoY21kcC0+Y2IuZGF0YSk7CiAJCQkJY21kcC0+Y2IuZGF0YSA9IE5VTEw7CiAJCQkJaWYgKG4gIT0gKGludCljbWRwLT5jYi5kbGVuKQogCQkJCQlyZXR1cm4gUkVTUF9CQUQ7CiAJCQl9IGVsc2UgaWYgKGNtZHAtPmNiLmNvbnQpIHsKLQkJCQlpZiAoY21kcC0+Y2IuY29udCggY3R4LCBjbWRwLCBjbWQgKSkKKwkJCQlpZiAoY21kcC0+Y2IuY29udChjdHgsIGNtZHAsIGNtZCkpCiAJCQkJCXJldHVybiBSRVNQX0JBRDsKIAkJCX0gZWxzZSB7Ci0JCQkJZnByaW50Ziggc3RkZXJyLCAiSU1BUCBlcnJvcjogdW5leHBlY3RlZCBjb21tYW5kIGNvbnRpbnVhdGlvbiByZXF1ZXN0XG4iICk7CisJCQkJZnByaW50ZihzdGRlcnIsICJJTUFQIGVycm9yOiB1bmV4cGVjdGVkIGNvbW1hbmQgY29udGludWF0aW9uIHJlcXVlc3RcbiIpOwogCQkJCXJldHVybiBSRVNQX0JBRDsKIAkJCX0KLQkJCWlmIChzb2NrZXRfd3JpdGUoICZpbWFwLT5idWYuc29jaywgIlxyXG4iLCAyICkgIT0gMikKKwkJCWlmIChzb2NrZXRfd3JpdGUoJmltYXAtPmJ1Zi5zb2NrLCAiXHJcbiIsIDIpICE9IDIpCiAJCQkJcmV0dXJuIFJFU1BfQkFEOwogCQkJaWYgKCFjbWRwLT5jYi5jb250KQogCQkJCWltYXAtPmxpdGVyYWxfcGVuZGluZyA9IDA7CiAJCQlpZiAoIXRjbWQpCiAJCQkJcmV0dXJuIERSVl9PSzsKIAkJfSBlbHNlIHsKLQkJCXRhZyA9IGF0b2koIGFyZyApOworCQkJdGFnID0gYXRvaShhcmcpOwogCQkJZm9yIChwY21kcCA9ICZpbWFwLT5pbl9wcm9ncmVzczsgKGNtZHAgPSAqcGNtZHApOyBwY21kcCA9ICZjbWRwLT5uZXh0KQogCQkJCWlmIChjbWRwLT50YWcgPT0gdGFnKQogCQkJCQlnb3RvIGdvdHRhZzsKLQkJCWZwcmludGYoIHN0ZGVyciwgIklNQVAgZXJyb3I6IHVuZXhwZWN0ZWQgdGFnICVzXG4iLCBhcmcgKTsKKwkJCWZwcmludGYoc3RkZXJyLCAiSU1BUCBlcnJvcjogdW5leHBlY3RlZCB0YWcgJXNcbiIsIGFyZyk7CiAJCQlyZXR1cm4gUkVTUF9CQUQ7Ci0JCSAgZ290dGFnOgorCQlnb3R0YWc6CiAJCQlpZiAoISgqcGNtZHAgPSBjbWRwLT5uZXh0KSkKIAkJCQlpbWFwLT5pbl9wcm9ncmVzc19hcHBlbmQgPSBwY21kcDsKIAkJCWltYXAtPm51bV9pbl9wcm9ncmVzcy0tOwogCQkJaWYgKGNtZHAtPmNiLmNvbnQgfHwgY21kcC0+Y2IuZGF0YSkKIAkJCQlpbWFwLT5saXRlcmFsX3BlbmRpbmcgPSAwOwotCQkJYXJnID0gbmV4dF9hcmcoICZjbWQgKTsKLQkJCWlmICghc3RyY21wKCAiT0siLCBhcmcgKSkKKwkJCWFyZyA9IG5leHRfYXJnKCZjbWQpOworCQkJaWYgKCFzdHJjbXAoIk9LIiwgYXJnKSkKIAkJCQlyZXNwID0gRFJWX09LOwogCQkJZWxzZSB7Ci0JCQkJaWYgKCFzdHJjbXAoICJOTyIsIGFyZyApKSB7Ci0JCQkJCWlmIChjbWRwLT5jYi5jcmVhdGUgJiYgY21kICYmIChjbWRwLT5jYi50cnljcmVhdGUgfHwgIW1lbWNtcCggY21kLCAiW1RSWUNSRUFURV0iLCAxMSApKSkgeyAvKiBTRUxFQ1QsIEFQUEVORCBvciBVSUQgQ09QWSAqLwotCQkJCQkJcCA9IHN0cmNociggY21kcC0+Y21kLCAnIicgKTsKLQkJCQkJCWlmICghaXNzdWVfaW1hcF9jbWQoIGN0eCwgTlVMTCwgIkNSRUFURSBcIiUuKnNcIiIsIHN0cmNociggcCArIDEsICciJyApIC0gcCArIDEsIHAgKSkgeworCQkJCWlmICghc3RyY21wKCJOTyIsIGFyZykpIHsKKwkJCQkJaWYgKGNtZHAtPmNiLmNyZWF0ZSAmJiBjbWQgJiYgKGNtZHAtPmNiLnRyeWNyZWF0ZSB8fCAhbWVtY21wKGNtZCwgIltUUllDUkVBVEVdIiwgMTEpKSkgeyAvKiBTRUxFQ1QsIEFQUEVORCBvciBVSUQgQ09QWSAqLworCQkJCQkJcCA9IHN0cmNocihjbWRwLT5jbWQsICciJyk7CisJCQkJCQlpZiAoIWlzc3VlX2ltYXBfY21kKGN0eCwgTlVMTCwgIkNSRUFURSBcIiUuKnNcIiIsIHN0cmNocihwICsgMSwgJyInKSAtIHAgKyAxLCBwKSkgewogCQkJCQkJCXJlc3AgPSBSRVNQX0JBRDsKIAkJCQkJCQlnb3RvIG5vcm1hbDsKIAkJCQkJCX0KIAkJCQkJCS8qIG5vdCB3YWl0aW5nIGhlcmUgdmlvbGF0ZXMgdGhlIHNwZWMsIGJ1dCBhIHNlcnZlciB0aGF0IGRvZXMgbm90CiAJCQkJCQkgICBncm9rIHRoaXMgbm9uZXRoZWxlc3MgdmlvbGF0ZXMgaXQgdG9vLiAqLwogCQkJCQkJY21kcC0+Y2IuY3JlYXRlID0gMDsKLQkJCQkJCWlmICghKG5jbWRwID0gaXNzdWVfaW1hcF9jbWQoIGN0eCwgJmNtZHAtPmNiLCAiJXMiLCBjbWRwLT5jbWQgKSkpIHsKKwkJCQkJCWlmICghKG5jbWRwID0gaXNzdWVfaW1hcF9jbWQoY3R4LCAmY21kcC0+Y2IsICIlcyIsIGNtZHAtPmNtZCkpKSB7CiAJCQkJCQkJcmVzcCA9IFJFU1BfQkFEOwogCQkJCQkJCWdvdG8gbm9ybWFsOwogCQkJCQkJfQotCQkJCQkJZnJlZSggY21kcC0+Y21kICk7Ci0JCQkJCQlmcmVlKCBjbWRwICk7CisJCQkJCQlmcmVlKGNtZHAtPmNtZCk7CisJCQkJCQlmcmVlKGNtZHApOwogCQkJCQkJaWYgKCF0Y21kKQogCQkJCQkJCXJldHVybiAwOwkvKiBpZ25vcmVkICovCiAJCQkJCQlpZiAoY21kcCA9PSB0Y21kKQpAQCAtODQ2LDIxICs5MzIsMjEgQEAKIAkJCQkJCWNvbnRpbnVlOwogCQkJCQl9CiAJCQkJCXJlc3AgPSBSRVNQX05POwotCQkJCX0gZWxzZSAvKmlmICghc3RyY21wKCAiQkFEIiwgYXJnICkpKi8KKwkJCQl9IGVsc2UgLyppZiAoIXN0cmNtcCgiQkFEIiwgYXJnKSkqLwogCQkJCQlyZXNwID0gUkVTUF9CQUQ7Ci0JCQkJZnByaW50Ziggc3RkZXJyLCAiSU1BUCBjb21tYW5kICclcycgcmV0dXJuZWQgcmVzcG9uc2UgKCVzKSAtICVzXG4iLAotCQkJCQkgbWVtY21wIChjbWRwLT5jbWQsICJMT0dJTiIsIDUpID8KKwkJCQlmcHJpbnRmKHN0ZGVyciwgIklNQVAgY29tbWFuZCAnJXMnIHJldHVybmVkIHJlc3BvbnNlICglcykgLSAlc1xuIiwKKwkJCQkJIG1lbWNtcChjbWRwLT5jbWQsICJMT0dJTiIsIDUpID8KIAkJCQkJCQljbWRwLT5jbWQgOiAiTE9HSU4gPHVzZXI+IDxwYXNzPiIsCiAJCQkJCQkJYXJnLCBjbWQgPyBjbWQgOiAiIik7CiAJCQl9Ci0JCQlpZiAoKHJlc3AyID0gcGFyc2VfcmVzcG9uc2VfY29kZSggY3R4LCAmY21kcC0+Y2IsIGNtZCApKSA+IHJlc3ApCisJCQlpZiAoKHJlc3AyID0gcGFyc2VfcmVzcG9uc2VfY29kZShjdHgsICZjbWRwLT5jYiwgY21kKSkgPiByZXNwKQogCQkJCXJlc3AgPSByZXNwMjsKLQkJICBub3JtYWw6CisJCW5vcm1hbDoKIAkJCWlmIChjbWRwLT5jYi5kb25lKQotCQkJCWNtZHAtPmNiLmRvbmUoIGN0eCwgY21kcCwgcmVzcCApOwotCQkJZnJlZSggY21kcC0+Y2IuZGF0YSApOwotCQkJZnJlZSggY21kcC0+Y21kICk7Ci0JCQlmcmVlKCBjbWRwICk7CisJCQkJY21kcC0+Y2IuZG9uZShjdHgsIGNtZHAsIHJlc3ApOworCQkJZnJlZShjbWRwLT5jYi5kYXRhKTsKKwkJCWZyZWUoY21kcC0+Y21kKTsKKwkJCWZyZWUoY21kcCk7CiAJCQlpZiAoIXRjbWQgfHwgdGNtZCA9PSBjbWRwKQogCQkJCXJldHVybiByZXNwOwogCQl9CkBAIC04NjgsMTcwICs5NTQsMTg0IEBACiAJLyogbm90IHJlYWNoZWQgKi8KIH0KIAotc3RhdGljIHZvaWQKLWltYXBfY2xvc2Vfc2VydmVyKCBpbWFwX3N0b3JlX3QgKmljdHggKQorc3RhdGljIHZvaWQgaW1hcF9jbG9zZV9zZXJ2ZXIoc3RydWN0IGltYXBfc3RvcmUgKmljdHgpCiB7Ci0JaW1hcF90ICppbWFwID0gaWN0eC0+aW1hcDsKKwlzdHJ1Y3QgaW1hcCAqaW1hcCA9IGljdHgtPmltYXA7CiAKIAlpZiAoaW1hcC0+YnVmLnNvY2suZmQgIT0gLTEpIHsKLQkJaW1hcF9leGVjKCBpY3R4LCBOVUxMLCAiTE9HT1VUIiApOwotCQljbG9zZSggaW1hcC0+YnVmLnNvY2suZmQgKTsKKwkJaW1hcF9leGVjKGljdHgsIE5VTEwsICJMT0dPVVQiKTsKKwkJc29ja2V0X3NodXRkb3duKCZpbWFwLT5idWYuc29jayk7CiAJfQotCWZyZWVfbGlzdCggaW1hcC0+bnNfcGVyc29uYWwgKTsKLQlmcmVlX2xpc3QoIGltYXAtPm5zX290aGVyICk7Ci0JZnJlZV9saXN0KCBpbWFwLT5uc19zaGFyZWQgKTsKLQlmcmVlKCBpbWFwICk7CisJZnJlZV9saXN0KGltYXAtPm5zX3BlcnNvbmFsKTsKKwlmcmVlX2xpc3QoaW1hcC0+bnNfb3RoZXIpOworCWZyZWVfbGlzdChpbWFwLT5uc19zaGFyZWQpOworCWZyZWUoaW1hcCk7CiB9CiAKLXN0YXRpYyB2b2lkCi1pbWFwX2Nsb3NlX3N0b3JlKCBzdG9yZV90ICpjdHggKQorc3RhdGljIHZvaWQgaW1hcF9jbG9zZV9zdG9yZShzdHJ1Y3Qgc3RvcmUgKmN0eCkKIHsKLQlpbWFwX2Nsb3NlX3NlcnZlciggKGltYXBfc3RvcmVfdCAqKWN0eCApOwotCWZyZWVfZ2VuZXJpY19tZXNzYWdlcyggY3R4LT5tc2dzICk7Ci0JZnJlZSggY3R4ICk7CisJaW1hcF9jbG9zZV9zZXJ2ZXIoKHN0cnVjdCBpbWFwX3N0b3JlICopY3R4KTsKKwlmcmVlX2dlbmVyaWNfbWVzc2FnZXMoY3R4LT5tc2dzKTsKKwlmcmVlKGN0eCk7CiB9CiAKLXN0YXRpYyBzdG9yZV90ICoKLWltYXBfb3Blbl9zdG9yZSggaW1hcF9zZXJ2ZXJfY29uZl90ICpzcnZjICkKK3N0YXRpYyBzdHJ1Y3Qgc3RvcmUgKmltYXBfb3Blbl9zdG9yZShzdHJ1Y3QgaW1hcF9zZXJ2ZXJfY29uZiAqc3J2YykKIHsKLQlpbWFwX3N0b3JlX3QgKmN0eDsKLQlpbWFwX3QgKmltYXA7CisJc3RydWN0IGltYXBfc3RvcmUgKmN0eDsKKwlzdHJ1Y3QgaW1hcCAqaW1hcDsKIAljaGFyICphcmcsICpyc3A7CiAJc3RydWN0IGhvc3RlbnQgKmhlOwogCXN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOwogCWludCBzLCBhWzJdLCBwcmVhdXRoOwogCXBpZF90IHBpZDsKIAotCWN0eCA9IHhjYWxsb2MoIHNpemVvZigqY3R4KSwgMSApOworCWN0eCA9IHhjYWxsb2Moc2l6ZW9mKCpjdHgpLCAxKTsKIAotCWN0eC0+aW1hcCA9IGltYXAgPSB4Y2FsbG9jKCBzaXplb2YoKmltYXApLCAxICk7CisJY3R4LT5pbWFwID0gaW1hcCA9IHhjYWxsb2Moc2l6ZW9mKCppbWFwKSwgMSk7CiAJaW1hcC0+YnVmLnNvY2suZmQgPSAtMTsKIAlpbWFwLT5pbl9wcm9ncmVzc19hcHBlbmQgPSAmaW1hcC0+aW5fcHJvZ3Jlc3M7CiAKIAkvKiBvcGVuIGNvbm5lY3Rpb24gdG8gSU1BUCBzZXJ2ZXIgKi8KIAogCWlmIChzcnZjLT50dW5uZWwpIHsKLQkJaW1hcF9pbmZvKCAiU3RhcnRpbmcgdHVubmVsICclcycuLi4gIiwgc3J2Yy0+dHVubmVsICk7CisJCWltYXBfaW5mbygiU3RhcnRpbmcgdHVubmVsICclcycuLi4gIiwgc3J2Yy0+dHVubmVsKTsKIAotCQlpZiAoc29ja2V0cGFpciggUEZfVU5JWCwgU09DS19TVFJFQU0sIDAsIGEgKSkgewotCQkJcGVycm9yKCAic29ja2V0cGFpciIgKTsKLQkJCWV4aXQoIDEgKTsKKwkJaWYgKHNvY2tldHBhaXIoUEZfVU5JWCwgU09DS19TVFJFQU0sIDAsIGEpKSB7CisJCQlwZXJyb3IoInNvY2tldHBhaXIiKTsKKwkJCWV4aXQoMSk7CiAJCX0KIAogCQlwaWQgPSBmb3JrKCk7CiAJCWlmIChwaWQgPCAwKQotCQkJX2V4aXQoIDEyNyApOworCQkJX2V4aXQoMTI3KTsKIAkJaWYgKCFwaWQpIHsKLQkJCWlmIChkdXAyKCBhWzBdLCAwICkgPT0gLTEgfHwgZHVwMiggYVswXSwgMSApID09IC0xKQotCQkJCV9leGl0KCAxMjcgKTsKLQkJCWNsb3NlKCBhWzBdICk7Ci0JCQljbG9zZSggYVsxXSApOwotCQkJZXhlY2woICIvYmluL3NoIiwgInNoIiwgIi1jIiwgc3J2Yy0+dHVubmVsLCBOVUxMICk7Ci0JCQlfZXhpdCggMTI3ICk7CisJCQlpZiAoZHVwMihhWzBdLCAwKSA9PSAtMSB8fCBkdXAyKGFbMF0sIDEpID09IC0xKQorCQkJCV9leGl0KDEyNyk7CisJCQljbG9zZShhWzBdKTsKKwkJCWNsb3NlKGFbMV0pOworCQkJZXhlY2woIi9iaW4vc2giLCAic2giLCAiLWMiLCBzcnZjLT50dW5uZWwsIE5VTEwpOworCQkJX2V4aXQoMTI3KTsKIAkJfQogCi0JCWNsb3NlIChhWzBdKTsKKwkJY2xvc2UoYVswXSk7CiAKIAkJaW1hcC0+YnVmLnNvY2suZmQgPSBhWzFdOwogCi0JCWltYXBfaW5mbyggIm9rXG4iICk7CisJCWltYXBfaW5mbygib2tcbiIpOwogCX0gZWxzZSB7Ci0JCW1lbXNldCggJmFkZHIsIDAsIHNpemVvZihhZGRyKSApOwotCQlhZGRyLnNpbl9wb3J0ID0gaHRvbnMoIHNydmMtPnBvcnQgKTsKKwkJbWVtc2V0KCZhZGRyLCAwLCBzaXplb2YoYWRkcikpOworCQlhZGRyLnNpbl9wb3J0ID0gaHRvbnMoc3J2Yy0+cG9ydCk7CiAJCWFkZHIuc2luX2ZhbWlseSA9IEFGX0lORVQ7CiAKLQkJaW1hcF9pbmZvKCAiUmVzb2x2aW5nICVzLi4uICIsIHNydmMtPmhvc3QgKTsKLQkJaGUgPSBnZXRob3N0YnluYW1lKCBzcnZjLT5ob3N0ICk7CisJCWltYXBfaW5mbygiUmVzb2x2aW5nICVzLi4uICIsIHNydmMtPmhvc3QpOworCQloZSA9IGdldGhvc3RieW5hbWUoc3J2Yy0+aG9zdCk7CiAJCWlmICghaGUpIHsKLQkJCXBlcnJvciggImdldGhvc3RieW5hbWUiICk7CisJCQlwZXJyb3IoImdldGhvc3RieW5hbWUiKTsKIAkJCWdvdG8gYmFpbDsKIAkJfQotCQlpbWFwX2luZm8oICJva1xuIiApOworCQlpbWFwX2luZm8oIm9rXG4iKTsKIAogCQlhZGRyLnNpbl9hZGRyLnNfYWRkciA9ICooKGludCAqKSBoZS0+aF9hZGRyX2xpc3RbMF0pOwogCi0JCXMgPSBzb2NrZXQoIFBGX0lORVQsIFNPQ0tfU1RSRUFNLCAwICk7CisJCXMgPSBzb2NrZXQoUEZfSU5FVCwgU09DS19TVFJFQU0sIDApOwogCi0JCWltYXBfaW5mbyggIkNvbm5lY3RpbmcgdG8gJXM6JWh1Li4uICIsIGluZXRfbnRvYSggYWRkci5zaW5fYWRkciApLCBudG9ocyggYWRkci5zaW5fcG9ydCApICk7Ci0JCWlmIChjb25uZWN0KCBzLCAoc3RydWN0IHNvY2thZGRyICopJmFkZHIsIHNpemVvZihhZGRyKSApKSB7Ci0JCQljbG9zZSggcyApOwotCQkJcGVycm9yKCAiY29ubmVjdCIgKTsKKwkJaW1hcF9pbmZvKCJDb25uZWN0aW5nIHRvICVzOiVodS4uLiAiLCBpbmV0X250b2EoYWRkci5zaW5fYWRkciksIG50b2hzKGFkZHIuc2luX3BvcnQpKTsKKwkJaWYgKGNvbm5lY3QocywgKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyLCBzaXplb2YoYWRkcikpKSB7CisJCQljbG9zZShzKTsKKwkJCXBlcnJvcigiY29ubmVjdCIpOwogCQkJZ290byBiYWlsOwogCQl9Ci0JCWltYXBfaW5mbyggIm9rXG4iICk7CiAKIAkJaW1hcC0+YnVmLnNvY2suZmQgPSBzOwogCisJCWlmIChzcnZjLT51c2Vfc3NsICYmCisJCSAgICBzc2xfc29ja2V0X2Nvbm5lY3QoJmltYXAtPmJ1Zi5zb2NrLCAwLCBzcnZjLT5zc2xfdmVyaWZ5KSkgeworCQkJY2xvc2Uocyk7CisJCQlnb3RvIGJhaWw7CisJCX0KKwkJaW1hcF9pbmZvKCJva1xuIik7CiAJfQogCiAJLyogcmVhZCB0aGUgZ3JlZXRpbmcgc3RyaW5nICovCi0JaWYgKGJ1ZmZlcl9nZXRzKCAmaW1hcC0+YnVmLCAmcnNwICkpIHsKLQkJZnByaW50Ziggc3RkZXJyLCAiSU1BUCBlcnJvcjogbm8gZ3JlZXRpbmcgcmVzcG9uc2VcbiIgKTsKKwlpZiAoYnVmZmVyX2dldHMoJmltYXAtPmJ1ZiwgJnJzcCkpIHsKKwkJZnByaW50ZihzdGRlcnIsICJJTUFQIGVycm9yOiBubyBncmVldGluZyByZXNwb25zZVxuIik7CiAJCWdvdG8gYmFpbDsKIAl9Ci0JYXJnID0gbmV4dF9hcmcoICZyc3AgKTsKLQlpZiAoIWFyZyB8fCAqYXJnICE9ICcqJyB8fCAoYXJnID0gbmV4dF9hcmcoICZyc3AgKSkgPT0gTlVMTCkgewotCQlmcHJpbnRmKCBzdGRlcnIsICJJTUFQIGVycm9yOiBpbnZhbGlkIGdyZWV0aW5nIHJlc3BvbnNlXG4iICk7CisJYXJnID0gbmV4dF9hcmcoJnJzcCk7CisJaWYgKCFhcmcgfHwgKmFyZyAhPSAnKicgfHwgKGFyZyA9IG5leHRfYXJnKCZyc3ApKSA9PSBOVUxMKSB7CisJCWZwcmludGYoc3RkZXJyLCAiSU1BUCBlcnJvcjogaW52YWxpZCBncmVldGluZyByZXNwb25zZVxuIik7CiAJCWdvdG8gYmFpbDsKIAl9CiAJcHJlYXV0aCA9IDA7Ci0JaWYgKCFzdHJjbXAoICJQUkVBVVRIIiwgYXJnICkpCisJaWYgKCFzdHJjbXAoIlBSRUFVVEgiLCBhcmcpKQogCQlwcmVhdXRoID0gMTsKLQllbHNlIGlmIChzdHJjbXAoICJPSyIsIGFyZyApICE9IDApIHsKLQkJZnByaW50Ziggc3RkZXJyLCAiSU1BUCBlcnJvcjogdW5rbm93biBncmVldGluZyByZXNwb25zZVxuIiApOworCWVsc2UgaWYgKHN0cmNtcCgiT0siLCBhcmcpICE9IDApIHsKKwkJZnByaW50ZihzdGRlcnIsICJJTUFQIGVycm9yOiB1bmtub3duIGdyZWV0aW5nIHJlc3BvbnNlXG4iKTsKIAkJZ290byBiYWlsOwogCX0KLQlwYXJzZV9yZXNwb25zZV9jb2RlKCBjdHgsIE5VTEwsIHJzcCApOwotCWlmICghaW1hcC0+Y2FwcyAmJiBpbWFwX2V4ZWMoIGN0eCwgTlVMTCwgIkNBUEFCSUxJVFkiICkgIT0gUkVTUF9PSykKKwlwYXJzZV9yZXNwb25zZV9jb2RlKGN0eCwgTlVMTCwgcnNwKTsKKwlpZiAoIWltYXAtPmNhcHMgJiYgaW1hcF9leGVjKGN0eCwgTlVMTCwgIkNBUEFCSUxJVFkiKSAhPSBSRVNQX09LKQogCQlnb3RvIGJhaWw7CiAKIAlpZiAoIXByZWF1dGgpIHsKLQotCQlpbWFwX2luZm8gKCJMb2dnaW5nIGluLi4uXG4iKTsKKyNpZm5kZWYgTk9fT1BFTlNTTAorCQlpZiAoIXNydmMtPnVzZV9zc2wgJiYgQ0FQKFNUQVJUVExTKSkgeworCQkJaWYgKGltYXBfZXhlYyhjdHgsIDAsICJTVEFSVFRMUyIpICE9IFJFU1BfT0spCisJCQkJZ290byBiYWlsOworCQkJaWYgKHNzbF9zb2NrZXRfY29ubmVjdCgmaW1hcC0+YnVmLnNvY2ssIDEsCisJCQkJCSAgICAgICBzcnZjLT5zc2xfdmVyaWZ5KSkKKwkJCQlnb3RvIGJhaWw7CisJCQkvKiBjYXBhYmlsaXRpZXMgbWF5IGhhdmUgY2hhbmdlZCwgc28gZ2V0IHRoZSBuZXcgY2FwYWJpbGl0aWVzICovCisJCQlpZiAoaW1hcF9leGVjKGN0eCwgMCwgIkNBUEFCSUxJVFkiKSAhPSBSRVNQX09LKQorCQkJCWdvdG8gYmFpbDsKKwkJfQorI2VuZGlmCisJCWltYXBfaW5mbygiTG9nZ2luZyBpbi4uLlxuIik7CiAJCWlmICghc3J2Yy0+dXNlcikgewotCQkJZnByaW50Ziggc3RkZXJyLCAiU2tpcHBpbmcgc2VydmVyICVzLCBubyB1c2VyXG4iLCBzcnZjLT5ob3N0ICk7CisJCQlmcHJpbnRmKHN0ZGVyciwgIlNraXBwaW5nIHNlcnZlciAlcywgbm8gdXNlclxuIiwgc3J2Yy0+aG9zdCk7CiAJCQlnb3RvIGJhaWw7CiAJCX0KIAkJaWYgKCFzcnZjLT5wYXNzKSB7CiAJCQljaGFyIHByb21wdFs4MF07Ci0JCQlzcHJpbnRmKCBwcm9tcHQsICJQYXNzd29yZCAoJXNAJXMpOiAiLCBzcnZjLT51c2VyLCBzcnZjLT5ob3N0ICk7Ci0JCQlhcmcgPSBnZXRwYXNzKCBwcm9tcHQgKTsKKwkJCXNwcmludGYocHJvbXB0LCAiUGFzc3dvcmQgKCVzQCVzKTogIiwgc3J2Yy0+dXNlciwgc3J2Yy0+aG9zdCk7CisJCQlhcmcgPSBnZXRwYXNzKHByb21wdCk7CiAJCQlpZiAoIWFyZykgewotCQkJCXBlcnJvciggImdldHBhc3MiICk7Ci0JCQkJZXhpdCggMSApOworCQkJCXBlcnJvcigiZ2V0cGFzcyIpOworCQkJCWV4aXQoMSk7CiAJCQl9CiAJCQlpZiAoISphcmcpIHsKLQkJCQlmcHJpbnRmKCBzdGRlcnIsICJTa2lwcGluZyBhY2NvdW50ICVzQCVzLCBubyBwYXNzd29yZFxuIiwgc3J2Yy0+dXNlciwgc3J2Yy0+aG9zdCApOworCQkJCWZwcmludGYoc3RkZXJyLCAiU2tpcHBpbmcgYWNjb3VudCAlc0Alcywgbm8gcGFzc3dvcmRcbiIsIHNydmMtPnVzZXIsIHNydmMtPmhvc3QpOwogCQkJCWdvdG8gYmFpbDsKIAkJCX0KIAkJCS8qCiAJCQkgKiBnZXRwYXNzKCkgcmV0dXJucyBhIHBvaW50ZXIgdG8gYSBzdGF0aWMgYnVmZmVyLiAgbWFrZSBhIGNvcHkKIAkJCSAqIGZvciBsb25nIHRlcm0gc3RvcmFnZS4KIAkJCSAqLwotCQkJc3J2Yy0+cGFzcyA9IHhzdHJkdXAoIGFyZyApOworCQkJc3J2Yy0+cGFzcyA9IHhzdHJkdXAoYXJnKTsKIAkJfQogCQlpZiAoQ0FQKE5PTE9HSU4pKSB7Ci0JCQlmcHJpbnRmKCBzdGRlcnIsICJTa2lwcGluZyBhY2NvdW50ICVzQCVzLCBzZXJ2ZXIgZm9yYmlkcyBMT0dJTlxuIiwgc3J2Yy0+dXNlciwgc3J2Yy0+aG9zdCApOworCQkJZnByaW50ZihzdGRlcnIsICJTa2lwcGluZyBhY2NvdW50ICVzQCVzLCBzZXJ2ZXIgZm9yYmlkcyBMT0dJTlxuIiwgc3J2Yy0+dXNlciwgc3J2Yy0+aG9zdCk7CiAJCQlnb3RvIGJhaWw7CiAJCX0KLQkJaW1hcF93YXJuKCAiKioqIElNQVAgV2FybmluZyAqKiogUGFzc3dvcmQgaXMgYmVpbmcgc2VudCBpbiB0aGUgY2xlYXJcbiIgKTsKLQkJaWYgKGltYXBfZXhlYyggY3R4LCBOVUxMLCAiTE9HSU4gXCIlc1wiIFwiJXNcIiIsIHNydmMtPnVzZXIsIHNydmMtPnBhc3MgKSAhPSBSRVNQX09LKSB7Ci0JCQlmcHJpbnRmKCBzdGRlcnIsICJJTUFQIGVycm9yOiBMT0dJTiBmYWlsZWRcbiIgKTsKKwkJaWYgKCFpbWFwLT5idWYuc29jay5zc2wpCisJCQlpbWFwX3dhcm4oIioqKiBJTUFQIFdhcm5pbmcgKioqIFBhc3N3b3JkIGlzIGJlaW5nICIKKwkJCQkgICJzZW50IGluIHRoZSBjbGVhclxuIik7CisJCWlmIChpbWFwX2V4ZWMoY3R4LCBOVUxMLCAiTE9HSU4gXCIlc1wiIFwiJXNcIiIsIHNydmMtPnVzZXIsIHNydmMtPnBhc3MpICE9IFJFU1BfT0spIHsKKwkJCWZwcmludGYoc3RkZXJyLCAiSU1BUCBlcnJvcjogTE9HSU4gZmFpbGVkXG4iKTsKIAkJCWdvdG8gYmFpbDsKIAkJfQogCX0gLyogIXByZWF1dGggKi8KIAogCWN0eC0+cHJlZml4ID0gIiI7CiAJY3R4LT50cmFzaG5jID0gMTsKLQlyZXR1cm4gKHN0b3JlX3QgKiljdHg7CisJcmV0dXJuIChzdHJ1Y3Qgc3RvcmUgKiljdHg7CiAKLSAgYmFpbDoKLQlpbWFwX2Nsb3NlX3N0b3JlKCAmY3R4LT5nZW4gKTsKK2JhaWw6CisJaW1hcF9jbG9zZV9zdG9yZSgmY3R4LT5nZW4pOwogCXJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgaW50Ci1pbWFwX21ha2VfZmxhZ3MoIGludCBmbGFncywgY2hhciAqYnVmICkKK3N0YXRpYyBpbnQgaW1hcF9tYWtlX2ZsYWdzKGludCBmbGFncywgY2hhciAqYnVmKQogewogCWNvbnN0IGNoYXIgKnM7CiAJdW5zaWduZWQgaSwgZDsKQEAgLTEwNTAsMTEgKzExNTAsMTAgQEAKIAogI2RlZmluZSBUVUlETCA4CiAKLXN0YXRpYyBpbnQKLWltYXBfc3RvcmVfbXNnKCBzdG9yZV90ICpnY3R4LCBtc2dfZGF0YV90ICpkYXRhLCBpbnQgKnVpZCApCitzdGF0aWMgaW50IGltYXBfc3RvcmVfbXNnKHN0cnVjdCBzdG9yZSAqZ2N0eCwgc3RydWN0IG1zZ19kYXRhICpkYXRhLCBpbnQgKnVpZCkKIHsKLQlpbWFwX3N0b3JlX3QgKmN0eCA9IChpbWFwX3N0b3JlX3QgKilnY3R4OwotCWltYXBfdCAqaW1hcCA9IGN0eC0+aW1hcDsKKwlzdHJ1Y3QgaW1hcF9zdG9yZSAqY3R4ID0gKHN0cnVjdCBpbWFwX3N0b3JlICopZ2N0eDsKKwlzdHJ1Y3QgaW1hcCAqaW1hcCA9IGN0eC0+aW1hcDsKIAlzdHJ1Y3QgaW1hcF9jbWRfY2IgY2I7CiAJY2hhciAqZm1hcCwgKmJ1ZjsKIAljb25zdCBjaGFyICpwcmVmaXgsICpib3g7CkBAIC0xMDYyLDE0ICsxMTYxLDE0IEBACiAJaW50IHN0YXJ0LCBzYnJlYWsgPSAwLCBlYnJlYWsgPSAwOwogCWNoYXIgZmxhZ3N0clsxMjhdLCB0dWlkW1RVSURMICogMiArIDFdOwogCi0JbWVtc2V0KCAmY2IsIDAsIHNpemVvZihjYikgKTsKKwltZW1zZXQoJmNiLCAwLCBzaXplb2YoY2IpKTsKIAogCWZtYXAgPSBkYXRhLT5kYXRhOwogCWxlbiA9IGRhdGEtPmxlbjsKIAlub2NyID0gIWRhdGEtPmNybGY7CiAJZXh0cmEgPSAwLCBpID0gMDsKIAlpZiAoIUNBUChVSURQTFVTKSAmJiB1aWQpIHsKLQkgIG5sb29wOgorCW5sb29wOgogCQlzdGFydCA9IGk7CiAJCXdoaWxlIChpIDwgbGVuKQogCQkJaWYgKGZtYXBbaSsrXSA9PSAnXG4nKSB7CkBAIC0xMDc4LDE4ICsxMTc3LDE4IEBACiAJCQkJCXNicmVhayA9IGVicmVhayA9IGkgLSAyICsgbm9jcjsKIAkJCQkJZ290byBta3RpZDsKIAkJCQl9Ci0JCQkJaWYgKCFtZW1jbXAoIGZtYXAgKyBzdGFydCwgIlgtVFVJRDogIiwgOCApKSB7CisJCQkJaWYgKCFtZW1jbXAoZm1hcCArIHN0YXJ0LCAiWC1UVUlEOiAiLCA4KSkgewogCQkJCQlleHRyYSAtPSAoZWJyZWFrID0gaSkgLSAoc2JyZWFrID0gc3RhcnQpICsgbm9jcjsKIAkJCQkJZ290byBta3RpZDsKIAkJCQl9CiAJCQkJZ290byBubG9vcDsKIAkJCX0KIAkJLyogaW52YWxpZCBtZXNzYWdlICovCi0JCWZyZWUoIGZtYXAgKTsKKwkJZnJlZShmbWFwKTsKIAkJcmV0dXJuIERSVl9NU0dfQkFEOwotCSBta3RpZDoKKwlta3RpZDoKIAkJZm9yIChqID0gMDsgaiA8IFRVSURMOyBqKyspCi0JCQlzcHJpbnRmKCB0dWlkICsgaiAqIDIsICIlMDJ4IiwgYXJjNF9nZXRieXRlKCkgKTsKKwkJCXNwcmludGYodHVpZCArIGogKiAyLCAiJTAyeCIsIGFyYzRfZ2V0Ynl0ZSgpKTsKIAkJZXh0cmEgKz0gOCArIFRVSURMICogMiArIDI7CiAJfQogCWlmIChub2NyKQpAQCAtMTA5OCw3ICsxMTk3LDcgQEAKIAkJCQlleHRyYSsrOwogCiAJY2IuZGxlbiA9IGxlbiArIGV4dHJhOwotCWJ1ZiA9IGNiLmRhdGEgPSB4bWFsbG9jKCBjYi5kbGVuICk7CisJYnVmID0gY2IuZGF0YSA9IHhtYWxsb2MoY2IuZGxlbik7CiAJaSA9IDA7CiAJaWYgKCFDQVAoVUlEUExVUykgJiYgdWlkKSB7CiAJCWlmIChub2NyKSB7CkBAIC0xMTA5LDEyICsxMjA4LDEyIEBACiAJCQkJfSBlbHNlCiAJCQkJCSpidWYrKyA9IGZtYXBbaV07CiAJCX0gZWxzZSB7Ci0JCQltZW1jcHkoIGJ1ZiwgZm1hcCwgc2JyZWFrICk7CisJCQltZW1jcHkoYnVmLCBmbWFwLCBzYnJlYWspOwogCQkJYnVmICs9IHNicmVhazsKIAkJfQotCQltZW1jcHkoIGJ1ZiwgIlgtVFVJRDogIiwgOCApOworCQltZW1jcHkoYnVmLCAiWC1UVUlEOiAiLCA4KTsKIAkJYnVmICs9IDg7Ci0JCW1lbWNweSggYnVmLCB0dWlkLCBUVUlETCAqIDIgKTsKKwkJbWVtY3B5KGJ1ZiwgdHVpZCwgVFVJREwgKiAyKTsKIAkJYnVmICs9IFRVSURMICogMjsKIAkJKmJ1ZisrID0gJ1xyJzsKIAkJKmJ1ZisrID0gJ1xuJzsKQEAgLTExMjgsMTMgKzEyMjcsMTMgQEAKIAkJCX0gZWxzZQogCQkJCSpidWYrKyA9IGZtYXBbaV07CiAJfSBlbHNlCi0JCW1lbWNweSggYnVmLCBmbWFwICsgaSwgbGVuIC0gaSApOworCQltZW1jcHkoYnVmLCBmbWFwICsgaSwgbGVuIC0gaSk7CiAKLQlmcmVlKCBmbWFwICk7CisJZnJlZShmbWFwKTsKIAogCWQgPSAwOwogCWlmIChkYXRhLT5mbGFncykgewotCQlkID0gaW1hcF9tYWtlX2ZsYWdzKCBkYXRhLT5mbGFncywgZmxhZ3N0ciApOworCQlkID0gaW1hcF9tYWtlX2ZsYWdzKGRhdGEtPmZsYWdzLCBmbGFnc3RyKTsKIAkJZmxhZ3N0cltkKytdID0gJyAnOwogCX0KIAlmbGFnc3RyW2RdID0gMDsKQEAgLTExNDcsMTEgKzEyNDYsMTEgQEAKIAkJCWltYXAtPmNhcHMgPSBpbWFwLT5yY2FwcyAmIH4oMSA8PCBMSVRFUkFMUExVUyk7CiAJfSBlbHNlIHsKIAkJYm94ID0gZ2N0eC0+bmFtZTsKLQkJcHJlZml4ID0gIXN0cmNtcCggYm94LCAiSU5CT1giICkgPyAiIiA6IGN0eC0+cHJlZml4OworCQlwcmVmaXggPSAhc3RyY21wKGJveCwgIklOQk9YIikgPyAiIiA6IGN0eC0+cHJlZml4OwogCQljYi5jcmVhdGUgPSAwOwogCX0KIAljYi5jdHggPSB1aWQ7Ci0JcmV0ID0gaW1hcF9leGVjX20oIGN0eCwgJmNiLCAiQVBQRU5EIFwiJXMlc1wiICVzIiwgcHJlZml4LCBib3gsIGZsYWdzdHIgKTsKKwlyZXQgPSBpbWFwX2V4ZWNfbShjdHgsICZjYiwgIkFQUEVORCBcIiVzJXNcIiAlcyIsIHByZWZpeCwgYm94LCBmbGFnc3RyKTsKIAlpbWFwLT5jYXBzID0gaW1hcC0+cmNhcHM7CiAJaWYgKHJldCAhPSBEUlZfT0spCiAJCXJldHVybiByZXQ7CkBAIC0xMTY1LDEzICsxMjY0LDExIEBACiAKICNkZWZpbmUgQ0hVTktTSVpFIDB4MTAwMAogCi1zdGF0aWMgaW50Ci1yZWFkX21lc3NhZ2UoIEZJTEUgKmYsIG1zZ19kYXRhX3QgKm1zZyApCitzdGF0aWMgaW50IHJlYWRfbWVzc2FnZShGSUxFICpmLCBzdHJ1Y3QgbXNnX2RhdGEgKm1zZykKIHsKLQlzdHJ1Y3Qgc3RyYnVmIGJ1ZjsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCiAJbWVtc2V0KG1zZywgMCwgc2l6ZW9mKCptc2cpKTsKLQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKIAogCWRvIHsKIAkJaWYgKHN0cmJ1Zl9mcmVhZCgmYnVmLCBDSFVOS1NJWkUsIGYpIDw9IDApCkBAIC0xMTgzLDggKzEyODAsNyBAQAogCXJldHVybiBtc2ctPmxlbjsKIH0KIAotc3RhdGljIGludAotY291bnRfbWVzc2FnZXMoIG1zZ19kYXRhX3QgKm1zZyApCitzdGF0aWMgaW50IGNvdW50X21lc3NhZ2VzKHN0cnVjdCBtc2dfZGF0YSAqbXNnKQogewogCWludCBjb3VudCA9IDA7CiAJY2hhciAqcCA9IG1zZy0+ZGF0YTsKQEAgLTExOTQsNyArMTI5MCw3IEBACiAJCQljb3VudCsrOwogCQkJcCArPSA1OwogCQl9Ci0JCXAgPSBzdHJzdHIoIHArNSwgIlxuRnJvbSAiKTsKKwkJcCA9IHN0cnN0cihwKzUsICJcbkZyb20gIik7CiAJCWlmICghcCkKIAkJCWJyZWFrOwogCQlwKys7CkBAIC0xMjAyLDIyICsxMjk4LDIxIEBACiAJcmV0dXJuIGNvdW50OwogfQogCi1zdGF0aWMgaW50Ci1zcGxpdF9tc2coIG1zZ19kYXRhX3QgKmFsbF9tc2dzLCBtc2dfZGF0YV90ICptc2csIGludCAqb2ZzICkKK3N0YXRpYyBpbnQgc3BsaXRfbXNnKHN0cnVjdCBtc2dfZGF0YSAqYWxsX21zZ3MsIHN0cnVjdCBtc2dfZGF0YSAqbXNnLCBpbnQgKm9mcykKIHsKIAljaGFyICpwLCAqZGF0YTsKIAotCW1lbXNldCggbXNnLCAwLCBzaXplb2YgKm1zZyApOworCW1lbXNldChtc2csIDAsIHNpemVvZiAqbXNnKTsKIAlpZiAoKm9mcyA+PSBhbGxfbXNncy0+bGVuKQogCQlyZXR1cm4gMDsKIAotCWRhdGEgPSAmYWxsX21zZ3MtPmRhdGFbICpvZnMgXTsKKwlkYXRhID0gJmFsbF9tc2dzLT5kYXRhWypvZnNdOwogCW1zZy0+bGVuID0gYWxsX21zZ3MtPmxlbiAtICpvZnM7CiAKIAlpZiAobXNnLT5sZW4gPCA1IHx8IHByZWZpeGNtcChkYXRhLCAiRnJvbSAiKSkKIAkJcmV0dXJuIDA7CiAKLQlwID0gc3RyY2hyKCBkYXRhLCAnXG4nICk7CisJcCA9IHN0cmNocihkYXRhLCAnXG4nKTsKIAlpZiAocCkgewogCQlwID0gJnBbMV07CiAJCW1zZy0+bGVuIC09IHAtZGF0YTsKQEAgLTEyMjUsNyArMTMyMCw3IEBACiAJCWRhdGEgPSBwOwogCX0KIAotCXAgPSBzdHJzdHIoIGRhdGEsICJcbkZyb20gIiApOworCXAgPSBzdHJzdHIoZGF0YSwgIlxuRnJvbSAiKTsKIAlpZiAocCkKIAkJbXNnLT5sZW4gPSAmcFsxXSAtIGRhdGE7CiAKQEAgLTEyMzQsMjQgKzEzMjksMjQgQEAKIAlyZXR1cm4gMTsKIH0KIAotc3RhdGljIGltYXBfc2VydmVyX2NvbmZfdCBzZXJ2ZXIgPQoteworc3RhdGljIHN0cnVjdCBpbWFwX3NlcnZlcl9jb25mIHNlcnZlciA9IHsKIAlOVUxMLAkvKiBuYW1lICovCiAJTlVMTCwJLyogdHVubmVsICovCiAJTlVMTCwJLyogaG9zdCAqLwogCTAsCS8qIHBvcnQgKi8KIAlOVUxMLAkvKiB1c2VyICovCiAJTlVMTCwJLyogcGFzcyAqLworCTAsICAgCS8qIHVzZV9zc2wgKi8KKwkxLCAgIAkvKiBzc2xfdmVyaWZ5ICovCiB9OwogCiBzdGF0aWMgY2hhciAqaW1hcF9mb2xkZXI7CiAKLXN0YXRpYyBpbnQKLWdpdF9pbWFwX2NvbmZpZyhjb25zdCBjaGFyICprZXksIGNvbnN0IGNoYXIgKnZhbCwgdm9pZCAqY2IpCitzdGF0aWMgaW50IGdpdF9pbWFwX2NvbmZpZyhjb25zdCBjaGFyICprZXksIGNvbnN0IGNoYXIgKnZhbCwgdm9pZCAqY2IpCiB7CiAJY2hhciBpbWFwX2tleVtdID0gImltYXAuIjsKIAotCWlmIChzdHJuY21wKCBrZXksIGltYXBfa2V5LCBzaXplb2YgaW1hcF9rZXkgLSAxICkpCisJaWYgKHN0cm5jbXAoa2V5LCBpbWFwX2tleSwgc2l6ZW9mIGltYXBfa2V5IC0gMSkpCiAJCXJldHVybiAwOwogCiAJaWYgKCF2YWwpCkBAIC0xMjU5LDkwICsxMzU0LDk2IEBACiAKIAlrZXkgKz0gc2l6ZW9mIGltYXBfa2V5IC0gMTsKIAotCWlmICghc3RyY21wKCAiZm9sZGVyIiwga2V5ICkpIHsKLQkJaW1hcF9mb2xkZXIgPSB4c3RyZHVwKCB2YWwgKTsKLQl9IGVsc2UgaWYgKCFzdHJjbXAoICJob3N0Iiwga2V5ICkpIHsKLQkJewotCQkJaWYgKCFwcmVmaXhjbXAodmFsLCAiaW1hcDoiKSkKLQkJCQl2YWwgKz0gNTsKLQkJCWlmICghc2VydmVyLnBvcnQpCi0JCQkJc2VydmVyLnBvcnQgPSAxNDM7CisJaWYgKCFzdHJjbXAoImZvbGRlciIsIGtleSkpIHsKKwkJaW1hcF9mb2xkZXIgPSB4c3RyZHVwKHZhbCk7CisJfSBlbHNlIGlmICghc3RyY21wKCJob3N0Iiwga2V5KSkgeworCQlpZiAoIXByZWZpeGNtcCh2YWwsICJpbWFwOiIpKQorCQkJdmFsICs9IDU7CisJCWVsc2UgaWYgKCFwcmVmaXhjbXAodmFsLCAiaW1hcHM6IikpIHsKKwkJCXZhbCArPSA2OworCQkJc2VydmVyLnVzZV9zc2wgPSAxOwogCQl9CiAJCWlmICghcHJlZml4Y21wKHZhbCwgIi8vIikpCiAJCQl2YWwgKz0gMjsKLQkJc2VydmVyLmhvc3QgPSB4c3RyZHVwKCB2YWwgKTsKLQl9Ci0JZWxzZSBpZiAoIXN0cmNtcCggInVzZXIiLCBrZXkgKSkKLQkJc2VydmVyLnVzZXIgPSB4c3RyZHVwKCB2YWwgKTsKLQllbHNlIGlmICghc3RyY21wKCAicGFzcyIsIGtleSApKQotCQlzZXJ2ZXIucGFzcyA9IHhzdHJkdXAoIHZhbCApOwotCWVsc2UgaWYgKCFzdHJjbXAoICJwb3J0Iiwga2V5ICkpCi0JCXNlcnZlci5wb3J0ID0gZ2l0X2NvbmZpZ19pbnQoIGtleSwgdmFsICk7Ci0JZWxzZSBpZiAoIXN0cmNtcCggInR1bm5lbCIsIGtleSApKQotCQlzZXJ2ZXIudHVubmVsID0geHN0cmR1cCggdmFsICk7CisJCXNlcnZlci5ob3N0ID0geHN0cmR1cCh2YWwpOworCX0gZWxzZSBpZiAoIXN0cmNtcCgidXNlciIsIGtleSkpCisJCXNlcnZlci51c2VyID0geHN0cmR1cCh2YWwpOworCWVsc2UgaWYgKCFzdHJjbXAoInBhc3MiLCBrZXkpKQorCQlzZXJ2ZXIucGFzcyA9IHhzdHJkdXAodmFsKTsKKwllbHNlIGlmICghc3RyY21wKCJwb3J0Iiwga2V5KSkKKwkJc2VydmVyLnBvcnQgPSBnaXRfY29uZmlnX2ludChrZXksIHZhbCk7CisJZWxzZSBpZiAoIXN0cmNtcCgidHVubmVsIiwga2V5KSkKKwkJc2VydmVyLnR1bm5lbCA9IHhzdHJkdXAodmFsKTsKKwllbHNlIGlmICghc3RyY21wKCJzc2x2ZXJpZnkiLCBrZXkpKQorCQlzZXJ2ZXIuc3NsX3ZlcmlmeSA9IGdpdF9jb25maWdfYm9vbChrZXksIHZhbCk7CiAJcmV0dXJuIDA7CiB9CiAKLWludAotbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7Ci0JbXNnX2RhdGFfdCBhbGxfbXNncywgbXNnOwotCXN0b3JlX3QgKmN0eCA9IE5VTEw7CisJc3RydWN0IG1zZ19kYXRhIGFsbF9tc2dzLCBtc2c7CisJc3RydWN0IHN0b3JlICpjdHggPSBOVUxMOwogCWludCB1aWQgPSAwOwogCWludCBvZnMgPSAwOwogCWludCByOwogCWludCB0b3RhbCwgbiA9IDA7CisJaW50IG5vbmdpdF9vazsKIAogCS8qIGluaXQgdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yICovCiAJYXJjNF9pbml0KCk7CiAKKwlzZXR1cF9naXRfZGlyZWN0b3J5X2dlbnRseSgmbm9uZ2l0X29rKTsKIAlnaXRfY29uZmlnKGdpdF9pbWFwX2NvbmZpZywgTlVMTCk7CiAKKwlpZiAoIXNlcnZlci5wb3J0KQorCQlzZXJ2ZXIucG9ydCA9IHNlcnZlci51c2Vfc3NsID8gOTkzIDogMTQzOworCiAJaWYgKCFpbWFwX2ZvbGRlcikgewotCQlmcHJpbnRmKCBzdGRlcnIsICJubyBpbWFwIHN0b3JlIHNwZWNpZmllZFxuIiApOworCQlmcHJpbnRmKHN0ZGVyciwgIm5vIGltYXAgc3RvcmUgc3BlY2lmaWVkXG4iKTsKIAkJcmV0dXJuIDE7CiAJfQogCWlmICghc2VydmVyLmhvc3QpIHsKIAkJaWYgKCFzZXJ2ZXIudHVubmVsKSB7Ci0JCQlmcHJpbnRmKCBzdGRlcnIsICJubyBpbWFwIGhvc3Qgc3BlY2lmaWVkXG4iICk7CisJCQlmcHJpbnRmKHN0ZGVyciwgIm5vIGltYXAgaG9zdCBzcGVjaWZpZWRcbiIpOwogCQkJcmV0dXJuIDE7CiAJCX0KIAkJc2VydmVyLmhvc3QgPSAidHVubmVsIjsKIAl9CiAKIAkvKiByZWFkIHRoZSBtZXNzYWdlcyAqLwotCWlmICghcmVhZF9tZXNzYWdlKCBzdGRpbiwgJmFsbF9tc2dzICkpIHsKLQkJZnByaW50ZihzdGRlcnIsIm5vdGhpbmcgdG8gc2VuZFxuIik7CisJaWYgKCFyZWFkX21lc3NhZ2Uoc3RkaW4sICZhbGxfbXNncykpIHsKKwkJZnByaW50ZihzdGRlcnIsICJub3RoaW5nIHRvIHNlbmRcbiIpOwogCQlyZXR1cm4gMTsKIAl9CiAKLQl0b3RhbCA9IGNvdW50X21lc3NhZ2VzKCAmYWxsX21zZ3MgKTsKKwl0b3RhbCA9IGNvdW50X21lc3NhZ2VzKCZhbGxfbXNncyk7CiAJaWYgKCF0b3RhbCkgewotCQlmcHJpbnRmKHN0ZGVyciwibm8gbWVzc2FnZXMgdG8gc2VuZFxuIik7CisJCWZwcmludGYoc3RkZXJyLCAibm8gbWVzc2FnZXMgdG8gc2VuZFxuIik7CiAJCXJldHVybiAxOwogCX0KIAogCS8qIHdyaXRlIGl0IHRvIHRoZSBpbWFwIHNlcnZlciAqLwotCWN0eCA9IGltYXBfb3Blbl9zdG9yZSggJnNlcnZlciApOworCWN0eCA9IGltYXBfb3Blbl9zdG9yZSgmc2VydmVyKTsKIAlpZiAoIWN0eCkgewotCQlmcHJpbnRmKCBzdGRlcnIsImZhaWxlZCB0byBvcGVuIHN0b3JlXG4iKTsKKwkJZnByaW50ZihzdGRlcnIsICJmYWlsZWQgdG8gb3BlbiBzdG9yZVxuIik7CiAJCXJldHVybiAxOwogCX0KIAotCWZwcmludGYoIHN0ZGVyciwgInNlbmRpbmcgJWQgbWVzc2FnZSVzXG4iLCB0b3RhbCwgKHRvdGFsIT0xKT8icyI6IiIgKTsKKwlmcHJpbnRmKHN0ZGVyciwgInNlbmRpbmcgJWQgbWVzc2FnZSVzXG4iLCB0b3RhbCwgKHRvdGFsICE9IDEpID8gInMiIDogIiIpOwogCWN0eC0+bmFtZSA9IGltYXBfZm9sZGVyOwogCXdoaWxlICgxKSB7CiAJCXVuc2lnbmVkIHBlcmNlbnQgPSBuICogMTAwIC8gdG90YWw7Ci0JCWZwcmludGYoIHN0ZGVyciwgIiU0dSUlICglZC8lZCkgZG9uZVxyIiwgcGVyY2VudCwgbiwgdG90YWwgKTsKLQkJaWYgKCFzcGxpdF9tc2coICZhbGxfbXNncywgJm1zZywgJm9mcyApKQorCQlmcHJpbnRmKHN0ZGVyciwgIiU0dSUlICglZC8lZCkgZG9uZVxyIiwgcGVyY2VudCwgbiwgdG90YWwpOworCQlpZiAoIXNwbGl0X21zZygmYWxsX21zZ3MsICZtc2csICZvZnMpKQogCQkJYnJlYWs7Ci0JCXIgPSBpbWFwX3N0b3JlX21zZyggY3R4LCAmbXNnLCAmdWlkICk7Ci0JCWlmIChyICE9IERSVl9PSykgYnJlYWs7CisJCXIgPSBpbWFwX3N0b3JlX21zZyhjdHgsICZtc2csICZ1aWQpOworCQlpZiAociAhPSBEUlZfT0spCisJCQlicmVhazsKIAkJbisrOwogCX0KLQlmcHJpbnRmKCBzdGRlcnIsIlxuIiApOworCWZwcmludGYoc3RkZXJyLCAiXG4iKTsKIAotCWltYXBfY2xvc2Vfc3RvcmUoIGN0eCApOworCWltYXBfY2xvc2Vfc3RvcmUoY3R4KTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvaW5kZXgtcGFjay5jIGIvaW5kZXgtcGFjay5jCmluZGV4IGM5OWExYTEuLmMwYTNkOTcgMTAwNjQ0Ci0tLSBhL2luZGV4LXBhY2suYworKysgYi9pbmRleC1wYWNrLmMKQEAgLTY3LDcgKzY3LDcgQEAKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGlucHV0X2J1ZmZlcls0MDk2XTsKIHN0YXRpYyB1bnNpZ25lZCBpbnQgaW5wdXRfb2Zmc2V0LCBpbnB1dF9sZW47CiBzdGF0aWMgb2ZmX3QgY29uc3VtZWRfYnl0ZXM7Ci1zdGF0aWMgU0hBX0NUWCBpbnB1dF9jdHg7CitzdGF0aWMgZ2l0X1NIQV9DVFggaW5wdXRfY3R4Owogc3RhdGljIHVpbnQzMl90IGlucHV0X2NyYzMyOwogc3RhdGljIGludCBpbnB1dF9mZCwgb3V0cHV0X2ZkLCBwYWNrX2ZkOwogCkBAIC0xMTksNyArMTE5LDcgQEAKIAlpZiAoaW5wdXRfb2Zmc2V0KSB7CiAJCWlmIChvdXRwdXRfZmQgPj0gMCkKIAkJCXdyaXRlX29yX2RpZShvdXRwdXRfZmQsIGlucHV0X2J1ZmZlciwgaW5wdXRfb2Zmc2V0KTsKLQkJU0hBMV9VcGRhdGUoJmlucHV0X2N0eCwgaW5wdXRfYnVmZmVyLCBpbnB1dF9vZmZzZXQpOworCQlnaXRfU0hBMV9VcGRhdGUoJmlucHV0X2N0eCwgaW5wdXRfYnVmZmVyLCBpbnB1dF9vZmZzZXQpOwogCQltZW1tb3ZlKGlucHV0X2J1ZmZlciwgaW5wdXRfYnVmZmVyICsgaW5wdXRfb2Zmc2V0LCBpbnB1dF9sZW4pOwogCQlpbnB1dF9vZmZzZXQgPSAwOwogCX0KQEAgLTE4OCw3ICsxODgsNyBAQAogCQlvdXRwdXRfZmQgPSAtMTsKIAkJcGFja19mZCA9IGlucHV0X2ZkOwogCX0KLQlTSEExX0luaXQoJmlucHV0X2N0eCk7CisJZ2l0X1NIQTFfSW5pdCgmaW5wdXRfY3R4KTsKIAlyZXR1cm4gcGFja19uYW1lOwogfQogCkBAIC0yMjEsMTcgKzIyMSwyMyBAQAogCWRpZSgicGFjayBoYXMgYmFkIG9iamVjdCBhdCBvZmZzZXQgJWx1OiAlcyIsIG9mZnNldCwgYnVmKTsKIH0KIAorc3RhdGljIHZvaWQgZnJlZV9iYXNlX2RhdGEoc3RydWN0IGJhc2VfZGF0YSAqYykKK3sKKwlpZiAoYy0+ZGF0YSkgeworCQlmcmVlKGMtPmRhdGEpOworCQljLT5kYXRhID0gTlVMTDsKKwkJYmFzZV9jYWNoZV91c2VkIC09IGMtPnNpemU7CisJfQorfQorCiBzdGF0aWMgdm9pZCBwcnVuZV9iYXNlX2RhdGEoc3RydWN0IGJhc2VfZGF0YSAqcmV0YWluKQogewogCXN0cnVjdCBiYXNlX2RhdGEgKmIgPSBiYXNlX2NhY2hlOwogCWZvciAoYiA9IGJhc2VfY2FjaGU7CiAJICAgICBiYXNlX2NhY2hlX3VzZWQgPiBkZWx0YV9iYXNlX2NhY2hlX2xpbWl0ICYmIGI7CiAJICAgICBiID0gYi0+Y2hpbGQpIHsKLQkJaWYgKGItPmRhdGEgJiYgYiAhPSByZXRhaW4pIHsKLQkJCWZyZWUoYi0+ZGF0YSk7Ci0JCQliLT5kYXRhID0gTlVMTDsKLQkJCWJhc2VfY2FjaGVfdXNlZCAtPSBiLT5zaXplOwotCQl9CisJCWlmIChiLT5kYXRhICYmIGIgIT0gcmV0YWluKQorCQkJZnJlZV9iYXNlX2RhdGEoYik7CiAJfQogfQogCkBAIC0yNDQsNyArMjUwLDggQEAKIAogCWMtPmJhc2UgPSBiYXNlOwogCWMtPmNoaWxkID0gTlVMTDsKLQliYXNlX2NhY2hlX3VzZWQgKz0gYy0+c2l6ZTsKKwlpZiAoYy0+ZGF0YSkKKwkJYmFzZV9jYWNoZV91c2VkICs9IGMtPnNpemU7CiAJcHJ1bmVfYmFzZV9kYXRhKGMpOwogfQogCkBAIC0yNTUsMTAgKzI2Miw3IEBACiAJCWJhc2UtPmNoaWxkID0gTlVMTDsKIAllbHNlCiAJCWJhc2VfY2FjaGUgPSBOVUxMOwotCWlmIChjLT5kYXRhKSB7Ci0JCWZyZWUoYy0+ZGF0YSk7Ci0JCWJhc2VfY2FjaGVfdXNlZCAtPSBjLT5zaXplOwotCX0KKwlmcmVlX2Jhc2VfZGF0YShjKTsKIH0KIAogc3RhdGljIHZvaWQgKnVucGFja19lbnRyeV9kYXRhKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIHNpemUpCkBAIC0yNzEsMTAgKzI3NSwxMCBAQAogCXN0cmVhbS5hdmFpbF9vdXQgPSBzaXplOwogCXN0cmVhbS5uZXh0X2luID0gZmlsbCgxKTsKIAlzdHJlYW0uYXZhaWxfaW4gPSBpbnB1dF9sZW47Ci0JaW5mbGF0ZUluaXQoJnN0cmVhbSk7CisJZ2l0X2luZmxhdGVfaW5pdCgmc3RyZWFtKTsKIAogCWZvciAoOzspIHsKLQkJaW50IHJldCA9IGluZmxhdGUoJnN0cmVhbSwgMCk7CisJCWludCByZXQgPSBnaXRfaW5mbGF0ZSgmc3RyZWFtLCAwKTsKIAkJdXNlKGlucHV0X2xlbiAtIHN0cmVhbS5hdmFpbF9pbik7CiAJCWlmIChzdHJlYW0udG90YWxfb3V0ID09IHNpemUgJiYgcmV0ID09IFpfU1RSRUFNX0VORCkKIAkJCWJyZWFrOwpAQCAtMjgzLDcgKzI4Nyw3IEBACiAJCXN0cmVhbS5uZXh0X2luID0gZmlsbCgxKTsKIAkJc3RyZWFtLmF2YWlsX2luID0gaW5wdXRfbGVuOwogCX0KLQlpbmZsYXRlRW5kKCZzdHJlYW0pOworCWdpdF9pbmZsYXRlX2VuZCgmc3RyZWFtKTsKIAlyZXR1cm4gYnVmOwogfQogCkBAIC0zMzQsNyArMzM4LDcgQEAKIAkJCWJhc2Vfb2Zmc2V0ID0gKGJhc2Vfb2Zmc2V0IDw8IDcpICsgKGMgJiAxMjcpOwogCQl9CiAJCWRlbHRhX2Jhc2UtPm9mZnNldCA9IG9iai0+aWR4Lm9mZnNldCAtIGJhc2Vfb2Zmc2V0OwotCQlpZiAoZGVsdGFfYmFzZS0+b2Zmc2V0ID49IG9iai0+aWR4Lm9mZnNldCkKKwkJaWYgKGRlbHRhX2Jhc2UtPm9mZnNldCA8PSAwIHx8IGRlbHRhX2Jhc2UtPm9mZnNldCA+PSBvYmotPmlkeC5vZmZzZXQpCiAJCQliYWRfb2JqZWN0KG9iai0+aWR4Lm9mZnNldCwgImRlbHRhIGJhc2Ugb2Zmc2V0IGlzIG91dCBvZiBib3VuZCIpOwogCQlicmVhazsKIAljYXNlIE9CSl9DT01NSVQ6CkBAIC0zNzgsOSArMzgyLDkgQEAKIAlzdHJlYW0uYXZhaWxfb3V0ID0gb2JqLT5zaXplOwogCXN0cmVhbS5uZXh0X2luID0gc3JjOwogCXN0cmVhbS5hdmFpbF9pbiA9IGxlbjsKLQlpbmZsYXRlSW5pdCgmc3RyZWFtKTsKLQl3aGlsZSAoKHN0ID0gaW5mbGF0ZSgmc3RyZWFtLCBaX0ZJTklTSCkpID09IFpfT0spOwotCWluZmxhdGVFbmQoJnN0cmVhbSk7CisJZ2l0X2luZmxhdGVfaW5pdCgmc3RyZWFtKTsKKwl3aGlsZSAoKHN0ID0gZ2l0X2luZmxhdGUoJnN0cmVhbSwgWl9GSU5JU0gpKSA9PSBaX09LKTsKKwlnaXRfaW5mbGF0ZV9lbmQoJnN0cmVhbSk7CiAJaWYgKHN0ICE9IFpfU1RSRUFNX0VORCB8fCBzdHJlYW0udG90YWxfb3V0ICE9IG9iai0+c2l6ZSkKIAkJZGllKCJzZXJpb3VzIGluZmxhdGUgaW5jb25zaXN0ZW5jeSIpOwogCWZyZWUoc3JjKTsKQEAgLTQwOCwyMiArNDEyLDI0IEBACiAgICAgICAgIHJldHVybiAtZmlyc3QtMTsKIH0KIAotc3RhdGljIGludCBmaW5kX2RlbHRhX2NoaWxkcmVuKGNvbnN0IHVuaW9uIGRlbHRhX2Jhc2UgKmJhc2UsCi0JCQkgICAgICAgaW50ICpmaXJzdF9pbmRleCwgaW50ICpsYXN0X2luZGV4KQorc3RhdGljIHZvaWQgZmluZF9kZWx0YV9jaGlsZHJlbihjb25zdCB1bmlvbiBkZWx0YV9iYXNlICpiYXNlLAorCQkJCWludCAqZmlyc3RfaW5kZXgsIGludCAqbGFzdF9pbmRleCkKIHsKIAlpbnQgZmlyc3QgPSBmaW5kX2RlbHRhKGJhc2UpOwogCWludCBsYXN0ID0gZmlyc3Q7CiAJaW50IGVuZCA9IG5yX2RlbHRhcyAtIDE7CiAKLQlpZiAoZmlyc3QgPCAwKQotCQlyZXR1cm4gLTE7CisJaWYgKGZpcnN0IDwgMCkgeworCQkqZmlyc3RfaW5kZXggPSAwOworCQkqbGFzdF9pbmRleCA9IC0xOworCQlyZXR1cm47CisJfQogCXdoaWxlIChmaXJzdCA+IDAgJiYgIW1lbWNtcCgmZGVsdGFzW2ZpcnN0IC0gMV0uYmFzZSwgYmFzZSwgVU5JT05fQkFTRV9TWikpCiAJCS0tZmlyc3Q7CiAJd2hpbGUgKGxhc3QgPCBlbmQgJiYgIW1lbWNtcCgmZGVsdGFzW2xhc3QgKyAxXS5iYXNlLCBiYXNlLCBVTklPTl9CQVNFX1NaKSkKIAkJKytsYXN0OwogCSpmaXJzdF9pbmRleCA9IGZpcnN0OwogCSpsYXN0X2luZGV4ID0gbGFzdDsKLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgc2hhMV9vYmplY3QoY29uc3Qgdm9pZCAqZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplLApAQCAtNDk0LDggKzUwMCwxMCBAQAogCQkJZnJlZShyYXcpOwogCQkJaWYgKCFjLT5kYXRhKQogCQkJCWJhZF9vYmplY3Qob2JqLT5pZHgub2Zmc2V0LCAiZmFpbGVkIHRvIGFwcGx5IGRlbHRhIik7Ci0JCX0gZWxzZQorCQl9IGVsc2UgewogCQkJYy0+ZGF0YSA9IGdldF9kYXRhX2Zyb21fcGFjayhvYmopOworCQkJYy0+c2l6ZSA9IG9iai0+c2l6ZTsKKwkJfQogCiAJCWJhc2VfY2FjaGVfdXNlZCArPSBjLT5zaXplOwogCQlwcnVuZV9iYXNlX2RhdGEoYyk7CkBAIC01MDQsNDkgKzUxMiw3NCBAQAogfQogCiBzdGF0aWMgdm9pZCByZXNvbHZlX2RlbHRhKHN0cnVjdCBvYmplY3RfZW50cnkgKmRlbHRhX29iaiwKLQkJCSAgc3RydWN0IGJhc2VfZGF0YSAqYmFzZV9vYmosIGVudW0gb2JqZWN0X3R5cGUgdHlwZSkKKwkJCSAgc3RydWN0IGJhc2VfZGF0YSAqYmFzZSwgc3RydWN0IGJhc2VfZGF0YSAqcmVzdWx0KQogewotCXZvaWQgKmRlbHRhX2RhdGE7Ci0JdW5zaWduZWQgbG9uZyBkZWx0YV9zaXplOwotCXVuaW9uIGRlbHRhX2Jhc2UgZGVsdGFfYmFzZTsKLQlpbnQgaiwgZmlyc3QsIGxhc3Q7Ci0Jc3RydWN0IGJhc2VfZGF0YSByZXN1bHQ7CisJdm9pZCAqYmFzZV9kYXRhLCAqZGVsdGFfZGF0YTsKIAotCWRlbHRhX29iai0+cmVhbF90eXBlID0gdHlwZTsKKwlkZWx0YV9vYmotPnJlYWxfdHlwZSA9IGJhc2UtPm9iai0+cmVhbF90eXBlOwogCWRlbHRhX2RhdGEgPSBnZXRfZGF0YV9mcm9tX3BhY2soZGVsdGFfb2JqKTsKLQlkZWx0YV9zaXplID0gZGVsdGFfb2JqLT5zaXplOwotCXJlc3VsdC5kYXRhID0gcGF0Y2hfZGVsdGEoZ2V0X2Jhc2VfZGF0YShiYXNlX29iaiksIGJhc2Vfb2JqLT5zaXplLAotCQkJICAgICBkZWx0YV9kYXRhLCBkZWx0YV9zaXplLAotCQkJICAgICAmcmVzdWx0LnNpemUpOworCWJhc2VfZGF0YSA9IGdldF9iYXNlX2RhdGEoYmFzZSk7CisJcmVzdWx0LT5vYmogPSBkZWx0YV9vYmo7CisJcmVzdWx0LT5kYXRhID0gcGF0Y2hfZGVsdGEoYmFzZV9kYXRhLCBiYXNlLT5zaXplLAorCQkJCSAgIGRlbHRhX2RhdGEsIGRlbHRhX29iai0+c2l6ZSwgJnJlc3VsdC0+c2l6ZSk7CiAJZnJlZShkZWx0YV9kYXRhKTsKLQlpZiAoIXJlc3VsdC5kYXRhKQorCWlmICghcmVzdWx0LT5kYXRhKQogCQliYWRfb2JqZWN0KGRlbHRhX29iai0+aWR4Lm9mZnNldCwgImZhaWxlZCB0byBhcHBseSBkZWx0YSIpOwotCXNoYTFfb2JqZWN0KHJlc3VsdC5kYXRhLCByZXN1bHQuc2l6ZSwgdHlwZSwgZGVsdGFfb2JqLT5pZHguc2hhMSk7CisJc2hhMV9vYmplY3QocmVzdWx0LT5kYXRhLCByZXN1bHQtPnNpemUsIGRlbHRhX29iai0+cmVhbF90eXBlLAorCQkgICAgZGVsdGFfb2JqLT5pZHguc2hhMSk7CiAJbnJfcmVzb2x2ZWRfZGVsdGFzKys7Cit9CiAKLQlyZXN1bHQub2JqID0gZGVsdGFfb2JqOwotCWxpbmtfYmFzZV9kYXRhKGJhc2Vfb2JqLCAmcmVzdWx0KTsKK3N0YXRpYyB2b2lkIGZpbmRfdW5yZXNvbHZlZF9kZWx0YXMoc3RydWN0IGJhc2VfZGF0YSAqYmFzZSwKKwkJCQkgICBzdHJ1Y3QgYmFzZV9kYXRhICpwcmV2X2Jhc2UpCit7CisJaW50IGksIHJlZl9maXJzdCwgcmVmX2xhc3QsIG9mc19maXJzdCwgb2ZzX2xhc3Q7CiAKLQloYXNoY3B5KGRlbHRhX2Jhc2Uuc2hhMSwgZGVsdGFfb2JqLT5pZHguc2hhMSk7Ci0JaWYgKCFmaW5kX2RlbHRhX2NoaWxkcmVuKCZkZWx0YV9iYXNlLCAmZmlyc3QsICZsYXN0KSkgewotCQlmb3IgKGogPSBmaXJzdDsgaiA8PSBsYXN0OyBqKyspIHsKLQkJCXN0cnVjdCBvYmplY3RfZW50cnkgKmNoaWxkID0gb2JqZWN0cyArIGRlbHRhc1tqXS5vYmpfbm87Ci0JCQlpZiAoY2hpbGQtPnJlYWxfdHlwZSA9PSBPQkpfUkVGX0RFTFRBKQotCQkJCXJlc29sdmVfZGVsdGEoY2hpbGQsICZyZXN1bHQsIHR5cGUpOworCS8qCisJICogVGhpcyBpcyBhIHJlY3Vyc2l2ZSBmdW5jdGlvbi4gVGhvc2UgYnJhY2tldHMgc2hvdWxkIGhlbHAgcmVkdWNpbmcKKwkgKiBzdGFjayB1c2FnZSBieSBsaW1pdGluZyB0aGUgc2NvcGUgb2YgdGhlIGRlbHRhX2Jhc2UgdW5pb24uCisJICovCisJeworCQl1bmlvbiBkZWx0YV9iYXNlIGJhc2Vfc3BlYzsKKworCQloYXNoY3B5KGJhc2Vfc3BlYy5zaGExLCBiYXNlLT5vYmotPmlkeC5zaGExKTsKKwkJZmluZF9kZWx0YV9jaGlsZHJlbigmYmFzZV9zcGVjLCAmcmVmX2ZpcnN0LCAmcmVmX2xhc3QpOworCisJCW1lbXNldCgmYmFzZV9zcGVjLCAwLCBzaXplb2YoYmFzZV9zcGVjKSk7CisJCWJhc2Vfc3BlYy5vZmZzZXQgPSBiYXNlLT5vYmotPmlkeC5vZmZzZXQ7CisJCWZpbmRfZGVsdGFfY2hpbGRyZW4oJmJhc2Vfc3BlYywgJm9mc19maXJzdCwgJm9mc19sYXN0KTsKKwl9CisKKwlpZiAocmVmX2xhc3QgPT0gLTEgJiYgb2ZzX2xhc3QgPT0gLTEpIHsKKwkJZnJlZShiYXNlLT5kYXRhKTsKKwkJcmV0dXJuOworCX0KKworCWxpbmtfYmFzZV9kYXRhKHByZXZfYmFzZSwgYmFzZSk7CisKKwlmb3IgKGkgPSByZWZfZmlyc3Q7IGkgPD0gcmVmX2xhc3Q7IGkrKykgeworCQlzdHJ1Y3Qgb2JqZWN0X2VudHJ5ICpjaGlsZCA9IG9iamVjdHMgKyBkZWx0YXNbaV0ub2JqX25vOworCQlpZiAoY2hpbGQtPnJlYWxfdHlwZSA9PSBPQkpfUkVGX0RFTFRBKSB7CisJCQlzdHJ1Y3QgYmFzZV9kYXRhIHJlc3VsdDsKKwkJCXJlc29sdmVfZGVsdGEoY2hpbGQsIGJhc2UsICZyZXN1bHQpOworCQkJaWYgKGkgPT0gcmVmX2xhc3QgJiYgb2ZzX2xhc3QgPT0gLTEpCisJCQkJZnJlZV9iYXNlX2RhdGEoYmFzZSk7CisJCQlmaW5kX3VucmVzb2x2ZWRfZGVsdGFzKCZyZXN1bHQsIGJhc2UpOwogCQl9CiAJfQogCi0JbWVtc2V0KCZkZWx0YV9iYXNlLCAwLCBzaXplb2YoZGVsdGFfYmFzZSkpOwotCWRlbHRhX2Jhc2Uub2Zmc2V0ID0gZGVsdGFfb2JqLT5pZHgub2Zmc2V0OwotCWlmICghZmluZF9kZWx0YV9jaGlsZHJlbigmZGVsdGFfYmFzZSwgJmZpcnN0LCAmbGFzdCkpIHsKLQkJZm9yIChqID0gZmlyc3Q7IGogPD0gbGFzdDsgaisrKSB7Ci0JCQlzdHJ1Y3Qgb2JqZWN0X2VudHJ5ICpjaGlsZCA9IG9iamVjdHMgKyBkZWx0YXNbal0ub2JqX25vOwotCQkJaWYgKGNoaWxkLT5yZWFsX3R5cGUgPT0gT0JKX09GU19ERUxUQSkKLQkJCQlyZXNvbHZlX2RlbHRhKGNoaWxkLCAmcmVzdWx0LCB0eXBlKTsKKwlmb3IgKGkgPSBvZnNfZmlyc3Q7IGkgPD0gb2ZzX2xhc3Q7IGkrKykgeworCQlzdHJ1Y3Qgb2JqZWN0X2VudHJ5ICpjaGlsZCA9IG9iamVjdHMgKyBkZWx0YXNbaV0ub2JqX25vOworCQlpZiAoY2hpbGQtPnJlYWxfdHlwZSA9PSBPQkpfT0ZTX0RFTFRBKSB7CisJCQlzdHJ1Y3QgYmFzZV9kYXRhIHJlc3VsdDsKKwkJCXJlc29sdmVfZGVsdGEoY2hpbGQsIGJhc2UsICZyZXN1bHQpOworCQkJaWYgKGkgPT0gb2ZzX2xhc3QpCisJCQkJZnJlZV9iYXNlX2RhdGEoYmFzZSk7CisJCQlmaW5kX3VucmVzb2x2ZWRfZGVsdGFzKCZyZXN1bHQsIGJhc2UpOwogCQl9CiAJfQogCi0JdW5saW5rX2Jhc2VfZGF0YSgmcmVzdWx0KTsKKwl1bmxpbmtfYmFzZV9kYXRhKGJhc2UpOwogfQogCiBzdGF0aWMgaW50IGNvbXBhcmVfZGVsdGFfZW50cnkoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKQEAgLTU5MSw3ICs2MjQsNyBAQAogCiAJLyogQ2hlY2sgcGFjayBpbnRlZ3JpdHkgKi8KIAlmbHVzaCgpOwotCVNIQTFfRmluYWwoc2hhMSwgJmlucHV0X2N0eCk7CisJZ2l0X1NIQTFfRmluYWwoc2hhMSwgJmlucHV0X2N0eCk7CiAJaWYgKGhhc2hjbXAoZmlsbCgyMCksIHNoYTEpKQogCQlkaWUoInBhY2sgaXMgY29ycnVwdGVkIChTSEExIG1pc21hdGNoKSIpOwogCXVzZSgyMCk7CkBAIC02MjIsMzcgKzY1NSwxMyBAQAogCQlwcm9ncmVzcyA9IHN0YXJ0X3Byb2dyZXNzKCJSZXNvbHZpbmcgZGVsdGFzIiwgbnJfZGVsdGFzKTsKIAlmb3IgKGkgPSAwOyBpIDwgbnJfb2JqZWN0czsgaSsrKSB7CiAJCXN0cnVjdCBvYmplY3RfZW50cnkgKm9iaiA9ICZvYmplY3RzW2ldOwotCQl1bmlvbiBkZWx0YV9iYXNlIGJhc2U7Ci0JCWludCBqLCByZWYsIHJlZl9maXJzdCwgcmVmX2xhc3QsIG9mcywgb2ZzX2ZpcnN0LCBvZnNfbGFzdDsKIAkJc3RydWN0IGJhc2VfZGF0YSBiYXNlX29iajsKIAogCQlpZiAob2JqLT50eXBlID09IE9CSl9SRUZfREVMVEEgfHwgb2JqLT50eXBlID09IE9CSl9PRlNfREVMVEEpCiAJCQljb250aW51ZTsKLQkJaGFzaGNweShiYXNlLnNoYTEsIG9iai0+aWR4LnNoYTEpOwotCQlyZWYgPSAhZmluZF9kZWx0YV9jaGlsZHJlbigmYmFzZSwgJnJlZl9maXJzdCwgJnJlZl9sYXN0KTsKLQkJbWVtc2V0KCZiYXNlLCAwLCBzaXplb2YoYmFzZSkpOwotCQliYXNlLm9mZnNldCA9IG9iai0+aWR4Lm9mZnNldDsKLQkJb2ZzID0gIWZpbmRfZGVsdGFfY2hpbGRyZW4oJmJhc2UsICZvZnNfZmlyc3QsICZvZnNfbGFzdCk7Ci0JCWlmICghcmVmICYmICFvZnMpCi0JCQljb250aW51ZTsKLQkJYmFzZV9vYmouZGF0YSA9IGdldF9kYXRhX2Zyb21fcGFjayhvYmopOwotCQliYXNlX29iai5zaXplID0gb2JqLT5zaXplOwogCQliYXNlX29iai5vYmogPSBvYmo7Ci0JCWxpbmtfYmFzZV9kYXRhKE5VTEwsICZiYXNlX29iaik7Ci0KLQkJaWYgKHJlZikKLQkJCWZvciAoaiA9IHJlZl9maXJzdDsgaiA8PSByZWZfbGFzdDsgaisrKSB7Ci0JCQkJc3RydWN0IG9iamVjdF9lbnRyeSAqY2hpbGQgPSBvYmplY3RzICsgZGVsdGFzW2pdLm9ial9ubzsKLQkJCQlpZiAoY2hpbGQtPnJlYWxfdHlwZSA9PSBPQkpfUkVGX0RFTFRBKQotCQkJCQlyZXNvbHZlX2RlbHRhKGNoaWxkLCAmYmFzZV9vYmosIG9iai0+dHlwZSk7Ci0JCQl9Ci0JCWlmIChvZnMpCi0JCQlmb3IgKGogPSBvZnNfZmlyc3Q7IGogPD0gb2ZzX2xhc3Q7IGorKykgewotCQkJCXN0cnVjdCBvYmplY3RfZW50cnkgKmNoaWxkID0gb2JqZWN0cyArIGRlbHRhc1tqXS5vYmpfbm87Ci0JCQkJaWYgKGNoaWxkLT5yZWFsX3R5cGUgPT0gT0JKX09GU19ERUxUQSkKLQkJCQkJcmVzb2x2ZV9kZWx0YShjaGlsZCwgJmJhc2Vfb2JqLCBvYmotPnR5cGUpOwotCQkJfQotCQl1bmxpbmtfYmFzZV9kYXRhKCZiYXNlX29iaik7CisJCWJhc2Vfb2JqLmRhdGEgPSBOVUxMOworCQlmaW5kX3VucmVzb2x2ZWRfZGVsdGFzKCZiYXNlX29iaiwgTlVMTCk7CiAJCWRpc3BsYXlfcHJvZ3Jlc3MocHJvZ3Jlc3MsIG5yX3Jlc29sdmVkX2RlbHRhcyk7CiAJfQogfQpAQCAtNzQ1LDcgKzc1NCw2IEBACiAJZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogCQlzdHJ1Y3QgZGVsdGFfZW50cnkgKmQgPSBzb3J0ZWRfYnlfcG9zW2ldOwogCQllbnVtIG9iamVjdF90eXBlIHR5cGU7Ci0JCWludCBqLCBmaXJzdCwgbGFzdDsKIAkJc3RydWN0IGJhc2VfZGF0YSBiYXNlX29iajsKIAogCQlpZiAob2JqZWN0c1tkLT5vYmpfbm9dLnJlYWxfdHlwZSAhPSBPQkpfUkVGX0RFTFRBKQpAQCAtNzU5LDE2ICs3NjcsNyBAQAogCQkJZGllKCJsb2NhbCBvYmplY3QgJXMgaXMgY29ycnVwdCIsIHNoYTFfdG9faGV4KGQtPmJhc2Uuc2hhMSkpOwogCQliYXNlX29iai5vYmogPSBhcHBlbmRfb2JqX3RvX3BhY2soZiwgZC0+YmFzZS5zaGExLAogCQkJCQliYXNlX29iai5kYXRhLCBiYXNlX29iai5zaXplLCB0eXBlKTsKLQkJbGlua19iYXNlX2RhdGEoTlVMTCwgJmJhc2Vfb2JqKTsKLQotCQlmaW5kX2RlbHRhX2NoaWxkcmVuKCZkLT5iYXNlLCAmZmlyc3QsICZsYXN0KTsKLQkJZm9yIChqID0gZmlyc3Q7IGogPD0gbGFzdDsgaisrKSB7Ci0JCQlzdHJ1Y3Qgb2JqZWN0X2VudHJ5ICpjaGlsZCA9IG9iamVjdHMgKyBkZWx0YXNbal0ub2JqX25vOwotCQkJaWYgKGNoaWxkLT5yZWFsX3R5cGUgPT0gT0JKX1JFRl9ERUxUQSkKLQkJCQlyZXNvbHZlX2RlbHRhKGNoaWxkLCAmYmFzZV9vYmosIHR5cGUpOwotCQl9Ci0KLQkJdW5saW5rX2Jhc2VfZGF0YSgmYmFzZV9vYmopOworCQlmaW5kX3VucmVzb2x2ZWRfZGVsdGFzKCZiYXNlX29iaiwgTlVMTCk7CiAJCWRpc3BsYXlfcHJvZ3Jlc3MocHJvZ3Jlc3MsIG5yX3Jlc29sdmVkX2RlbHRhcyk7CiAJfQogCWZyZWUoc29ydGVkX2J5X3Bvcyk7CkBAIC03OTAsNyArNzg5LDYgQEAKIAkJZXJyID0gY2xvc2Uob3V0cHV0X2ZkKTsKIAkJaWYgKGVycikKIAkJCWRpZSgiZXJyb3Igd2hpbGUgY2xvc2luZyBwYWNrIGZpbGU6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKLQkJY2htb2QoY3Vycl9wYWNrX25hbWUsIDA0NDQpOwogCX0KIAogCWlmIChrZWVwX21zZykgewpAQCAtODI0LDggKzgyMiw5IEBACiAJCWlmIChtb3ZlX3RlbXBfdG9fZmlsZShjdXJyX3BhY2tfbmFtZSwgZmluYWxfcGFja19uYW1lKSkKIAkJCWRpZSgiY2Fubm90IHN0b3JlIHBhY2sgZmlsZSIpOwogCX0KKwlpZiAoZnJvbV9zdGRpbikKKwkJY2htb2QoZmluYWxfcGFja19uYW1lLCAwNDQ0KTsKIAotCWNobW9kKGN1cnJfaW5kZXhfbmFtZSwgMDQ0NCk7CiAJaWYgKGZpbmFsX2luZGV4X25hbWUgIT0gY3Vycl9pbmRleF9uYW1lKSB7CiAJCWlmICghZmluYWxfaW5kZXhfbmFtZSkgewogCQkJc25wcmludGYobmFtZSwgc2l6ZW9mKG5hbWUpLCAiJXMvcGFjay9wYWNrLSVzLmlkeCIsCkBAIC04MzUsNiArODM0LDcgQEAKIAkJaWYgKG1vdmVfdGVtcF90b19maWxlKGN1cnJfaW5kZXhfbmFtZSwgZmluYWxfaW5kZXhfbmFtZSkpCiAJCQlkaWUoImNhbm5vdCBzdG9yZSBpbmRleCBmaWxlIik7CiAJfQorCWNobW9kKGZpbmFsX2luZGV4X25hbWUsIDA0NDQpOwogCiAJaWYgKCFmcm9tX3N0ZGluKSB7CiAJCXByaW50ZigiJXNcbiIsIHNoYTFfdG9faGV4KHNoYTEpKTsKZGlmZiAtLWdpdCBhL2ludGVycG9sYXRlLmMgYi9pbnRlcnBvbGF0ZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjAzYmQ5Li4wMDAwMDAwCi0tLSBhL2ludGVycG9sYXRlLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAyMDA2IEpvbiBMb2VsaWdlcgotICovCi0KLSNpbmNsdWRlICJnaXQtY29tcGF0LXV0aWwuaCIKLSNpbmNsdWRlICJpbnRlcnBvbGF0ZS5oIgotCi0KLXZvaWQgaW50ZXJwX3NldF9lbnRyeShzdHJ1Y3QgaW50ZXJwICp0YWJsZSwgaW50IHNsb3QsIGNvbnN0IGNoYXIgKnZhbHVlKQotewotCWNoYXIgKm9sZHZhbCA9IHRhYmxlW3Nsb3RdLnZhbHVlOwotCWNoYXIgKm5ld3ZhbCA9IE5VTEw7Ci0KLQlmcmVlKG9sZHZhbCk7Ci0KLQlpZiAodmFsdWUpCi0JCW5ld3ZhbCA9IHhzdHJkdXAodmFsdWUpOwotCi0JdGFibGVbc2xvdF0udmFsdWUgPSBuZXd2YWw7Ci19Ci0KLQotdm9pZCBpbnRlcnBfY2xlYXJfdGFibGUoc3RydWN0IGludGVycCAqdGFibGUsIGludCBuaW50ZXJwcykKLXsKLQlpbnQgaTsKLQotCWZvciAoaSA9IDA7IGkgPCBuaW50ZXJwczsgaSsrKSB7Ci0JCWludGVycF9zZXRfZW50cnkodGFibGUsIGksIE5VTEwpOwotCX0KLX0KLQotCi0vKgotICogQ29udmVydCBhIE5VTC10ZXJtaW5hdGVkIHN0cmluZyBpbiBidWZmZXIgb3JpZwotICogaW50byB0aGUgc3VwcGxpZWQgYnVmZmVyLCByZXN1bHQsIHdob3NlIGxlbmd0aCBpcyByZXNsZW4sCi0gKiBwZXJmb3JtaW5nIHN1YnN0aXR1dGlvbnMgb24gJS1uYW1lZCBzdWItc3RyaW5ncyBmcm9tCi0gKiB0aGUgdGFibGUsIGludGVycHMsIHdpdGggbmludGVycHMgZW50cmllcy4KLSAqCi0gKiBFeGFtcGxlIGludGVycHM6Ci0gKiAgICB7Ci0gKiAgICAgICAgeyAiJUgiLCAiZXhhbXBsZS5vcmcifSwKLSAqICAgICAgICB7ICIlcG9ydCIsICIxMjMifSwKLSAqICAgICAgICB7ICIlJSIsICIlIn0sCi0gKiAgICB9Ci0gKgotICogUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSBzdWJzdGl0dXRlZCBzdHJpbmcgKG5vdCBpbmNsdWRpbmcgdGhlIGZpbmFsIFwwKS4KLSAqIExpa2Ugd2l0aCBzbnByaW50ZiwgaWYgdGhlIHJlc3VsdCBpcyA+PSByZXNsZW4sIHRoZW4gaXQgb3ZlcmZsb3dlZC4KLSAqLwotCi11bnNpZ25lZCBsb25nIGludGVycG9sYXRlKGNoYXIgKnJlc3VsdCwgdW5zaWduZWQgbG9uZyByZXNsZW4sCi0JCWNvbnN0IGNoYXIgKm9yaWcsCi0JCWNvbnN0IHN0cnVjdCBpbnRlcnAgKmludGVycHMsIGludCBuaW50ZXJwcykKLXsKLQljb25zdCBjaGFyICpzcmMgPSBvcmlnOwotCWNoYXIgKmRlc3QgPSByZXN1bHQ7Ci0JdW5zaWduZWQgbG9uZyBuZXdsZW4gPSAwOwotCWNvbnN0IGNoYXIgKm5hbWUsICp2YWx1ZTsKLQl1bnNpZ25lZCBsb25nIG5hbWVsZW4sIHZhbHVlbGVuOwotCWludCBpOwotCWNoYXIgYzsKLQotCXdoaWxlICgoYyA9ICpzcmMpKSB7Ci0JCWlmIChjID09ICclJykgewotCQkJLyogVHJ5IHRvIG1hdGNoIGFuIGludGVycG9sYXRpb24gc3RyaW5nLiAqLwotCQkJZm9yIChpID0gMDsgaSA8IG5pbnRlcnBzOyBpKyspIHsKLQkJCQluYW1lID0gaW50ZXJwc1tpXS5uYW1lOwotCQkJCW5hbWVsZW4gPSBzdHJsZW4obmFtZSk7Ci0JCQkJaWYgKHN0cm5jbXAoc3JjLCBuYW1lLCBuYW1lbGVuKSA9PSAwKQotCQkJCQlicmVhazsKLQkJCX0KLQotCQkJLyogQ2hlY2sgZm9yIHZhbGlkIGludGVycG9sYXRpb24uICovCi0JCQlpZiAoaSA8IG5pbnRlcnBzKSB7Ci0JCQkJdmFsdWUgPSBpbnRlcnBzW2ldLnZhbHVlOwotCQkJCWlmICghdmFsdWUpIHsKLQkJCQkJc3JjICs9IG5hbWVsZW47Ci0JCQkJCWNvbnRpbnVlOwotCQkJCX0KLQotCQkJCXZhbHVlbGVuID0gc3RybGVuKHZhbHVlKTsKLQkJCQlpZiAobmV3bGVuICsgdmFsdWVsZW4gPCByZXNsZW4pIHsKLQkJCQkJLyogU3Vic3RpdHV0ZS4gKi8KLQkJCQkJbWVtY3B5KGRlc3QsIHZhbHVlLCB2YWx1ZWxlbik7Ci0JCQkJCWRlc3QgKz0gdmFsdWVsZW47Ci0JCQkJfQotCQkJCW5ld2xlbiArPSB2YWx1ZWxlbjsKLQkJCQlzcmMgKz0gbmFtZWxlbjsKLQkJCQljb250aW51ZTsKLQkJCX0KLQkJfQotCQkvKiBTdHJhaWdodCBjb3B5IG9uZSBub24taW50ZXJwb2xhdGlvbiBjaGFyYWN0ZXIuICovCi0JCWlmIChuZXdsZW4gKyAxIDwgcmVzbGVuKQotCQkJKmRlc3QrKyA9ICpzcmM7Ci0JCXNyYysrOwotCQluZXdsZW4rKzsKLQl9Ci0KLQkvKiBYWFg6IHRoZSBwcmV2aW91cyBsb29wIGFsd2F5cyBrZWVwIHJvb20gZm9yIHRoZSBlbmRpbmcgTlVMLAotCSAgIHdlIGp1c3QgbmVlZCB0byBjaGVjayBpZiB0aGVyZSB3YXMgcm9vbSBmb3IgYSBOVUwgaW4gdGhlIGZpcnN0IHBsYWNlICovCi0JaWYgKHJlc2xlbiA+IDApCi0JCSpkZXN0ID0gJ1wwJzsKLQlyZXR1cm4gbmV3bGVuOwotfQpkaWZmIC0tZ2l0IGEvaW50ZXJwb2xhdGUuaCBiL2ludGVycG9sYXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3NDA3ZTYuLjAwMDAwMDAKLS0tIGEvaW50ZXJwb2xhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgMjAwNiBKb24gTG9lbGlnZXIKLSAqLwotCi0jaWZuZGVmIElOVEVSUE9MQVRFX0gKLSNkZWZpbmUgSU5URVJQT0xBVEVfSAotCi0vKgotICogQ29udmVydCBhIE5VTC10ZXJtaW5hdGVkIHN0cmluZyBpbiBidWZmZXIgb3JpZywKLSAqIHBlcmZvcm1pbmcgc3Vic3RpdHV0aW9ucyBvbiAlLW5hbWVkIHN1Yi1zdHJpbmdzIGZyb20KLSAqIHRoZSBpbnRlcnByZXRhdGlvbiB0YWJsZS4KLSAqLwotCi1zdHJ1Y3QgaW50ZXJwIHsKLQljb25zdCBjaGFyICpuYW1lOwotCWNoYXIgKnZhbHVlOwotfTsKLQotZXh0ZXJuIHZvaWQgaW50ZXJwX3NldF9lbnRyeShzdHJ1Y3QgaW50ZXJwICp0YWJsZSwgaW50IHNsb3QsIGNvbnN0IGNoYXIgKnZhbHVlKTsKLWV4dGVybiB2b2lkIGludGVycF9jbGVhcl90YWJsZShzdHJ1Y3QgaW50ZXJwICp0YWJsZSwgaW50IG5pbnRlcnBzKTsKLQotZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50ZXJwb2xhdGUoY2hhciAqcmVzdWx0LCB1bnNpZ25lZCBsb25nIHJlc2xlbiwKLQkJCQkgY29uc3QgY2hhciAqb3JpZywKLQkJCQkgY29uc3Qgc3RydWN0IGludGVycCAqaW50ZXJwcywgaW50IG5pbnRlcnBzKTsKLQotI2VuZGlmIC8qIElOVEVSUE9MQVRFX0ggKi8KZGlmZiAtLWdpdCBhL2xldmVuc2h0ZWluLmMgYi9sZXZlbnNodGVpbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzMmY0Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9sZXZlbnNodGVpbi5jCkBAIC0wLDAgKzEsODQgQEAKKyNpbmNsdWRlICJjYWNoZS5oIgorI2luY2x1ZGUgImxldmVuc2h0ZWluLmgiCisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIERhbWVyYXUtTGV2ZW5zaHRlaW4gYWxnb3JpdGhtIHRvCisgKiBjYWxjdWxhdGUgYSBkaXN0YW5jZSBiZXR3ZWVuIHN0cmluZ3MuCisgKgorICogQmFzaWNhbGx5LCBpdCBzYXlzIGhvdyBtYW55IGxldHRlcnMgbmVlZCB0byBiZSBzd2FwcGVkLCBzdWJzdGl0dXRlZCwKKyAqIGRlbGV0ZWQgZnJvbSwgb3IgYWRkZWQgdG8gc3RyaW5nMSwgYXQgbGVhc3QsIHRvIGdldCBzdHJpbmcyLgorICoKKyAqIFRoZSBpZGVhIGlzIHRvIGJ1aWxkIGEgZGlzdGFuY2UgbWF0cml4IGZvciB0aGUgc3Vic3RyaW5ncyBvZiBib3RoCisgKiBzdHJpbmdzLiAgVG8gYXZvaWQgYSBsYXJnZSBzcGFjZSBjb21wbGV4aXR5LCBvbmx5IHRoZSBsYXN0IHRocmVlIHJvd3MKKyAqIGFyZSBrZXB0IGluIG1lbW9yeSAoaWYgc3dhcHMgaGFkIHRoZSBzYW1lIG9yIGhpZ2hlciBjb3N0IGFzIG9uZSBkZWxldGlvbgorICogcGx1cyBvbmUgaW5zZXJ0aW9uLCBvbmx5IHR3byByb3dzIHdvdWxkIGJlIG5lZWRlZCkuCisgKgorICogQXQgYW55IHN0YWdlLCAiaSArIDEiIGRlbm90ZXMgdGhlIGxlbmd0aCBvZiB0aGUgY3VycmVudCBzdWJzdHJpbmcgb2YKKyAqIHN0cmluZzEgdGhhdCB0aGUgZGlzdGFuY2UgaXMgY2FsY3VsYXRlZCBmb3IuCisgKgorICogcm93MiBob2xkcyB0aGUgY3VycmVudCByb3csIHJvdzEgdGhlIHByZXZpb3VzIHJvdyAoaS5lLiBmb3IgdGhlIHN1YnN0cmluZworICogb2Ygc3RyaW5nMSBvZiBsZW5ndGggImkiKSwgYW5kIHJvdzAgdGhlIHJvdyBiZWZvcmUgdGhhdC4KKyAqCisgKiBJbiBvdGhlciB3b3JkcywgYXQgdGhlIHN0YXJ0IG9mIHRoZSBiaWcgbG9vcCwgcm93MltqICsgMV0gY29udGFpbnMgdGhlCisgKiBEYW1lcmF1LUxldmVuc2h0ZWluIGRpc3RhbmNlIGJldHdlZW4gdGhlIHN1YnN0cmluZyBvZiBzdHJpbmcxIG9mIGxlbmd0aAorICogImkiIGFuZCB0aGUgc3Vic3RyaW5nIG9mIHN0cmluZzIgb2YgbGVuZ3RoICJqICsgMSIuCisgKgorICogQWxsIHRoZSBiaWcgbG9vcCBkb2VzIGlzIGRldGVybWluZSB0aGUgcGFydGlhbCBtaW5pbXVtLWNvc3QgcGF0aHMuCisgKgorICogSXQgZG9lcyBzbyBieSBjYWxjdWxhdGluZyB0aGUgY29zdHMgb2YgdGhlIHBhdGggZW5kaW5nIGluIGNoYXJhY3RlcnMKKyAqIGkgKGluIHN0cmluZzEpIGFuZCBqIChpbiBzdHJpbmcyKSwgcmVzcGVjdGl2ZWx5LCBnaXZlbiB0aGF0IHRoZSBsYXN0CisgKiBvcGVyYXRpb24gaXMgYSBzdWJzdGl0aW9uLCBhIHN3YXAsIGEgZGVsZXRpb24sIG9yIGFuIGluc2VydGlvbi4KKyAqCisgKiBUaGlzIGltcGxlbWVudGF0aW9uIGFsbG93cyB0aGUgY29zdHMgdG8gYmUgd2VpZ2h0ZWQ6CisgKgorICogLSB3IChhcyBpbiAic1dhcCIpCisgKiAtIHMgKGFzIGluICJTdWJzdGl0dXRpb24iKQorICogLSBhIChmb3IgaW5zZXJ0aW9uLCBBS0EgIkFkZCIpCisgKiAtIGQgKGFzIGluICJEZWxldGlvbiIpCisgKgorICogTm90ZSB0aGF0IHRoaXMgYWxnb3JpdGhtIGNhbGN1bGF0ZXMgYSBkaXN0YW5jZSBfaWZmXyBkID09IGEuCisgKi8KK2ludCBsZXZlbnNodGVpbihjb25zdCBjaGFyICpzdHJpbmcxLCBjb25zdCBjaGFyICpzdHJpbmcyLAorCQlpbnQgdywgaW50IHMsIGludCBhLCBpbnQgZCkKK3sKKwlpbnQgbGVuMSA9IHN0cmxlbihzdHJpbmcxKSwgbGVuMiA9IHN0cmxlbihzdHJpbmcyKTsKKwlpbnQgKnJvdzAgPSB4bWFsbG9jKHNpemVvZihpbnQpICogKGxlbjIgKyAxKSk7CisJaW50ICpyb3cxID0geG1hbGxvYyhzaXplb2YoaW50KSAqIChsZW4yICsgMSkpOworCWludCAqcm93MiA9IHhtYWxsb2Moc2l6ZW9mKGludCkgKiAobGVuMiArIDEpKTsKKwlpbnQgaSwgajsKKworCWZvciAoaiA9IDA7IGogPD0gbGVuMjsgaisrKQorCQlyb3cxW2pdID0gaiAqIGE7CisJZm9yIChpID0gMDsgaSA8IGxlbjE7IGkrKykgeworCQlpbnQgKmR1bW15OworCisJCXJvdzJbMF0gPSAoaSArIDEpICogZDsKKwkJZm9yIChqID0gMDsgaiA8IGxlbjI7IGorKykgeworCQkJLyogc3Vic3RpdHV0aW9uICovCisJCQlyb3cyW2ogKyAxXSA9IHJvdzFbal0gKyBzICogKHN0cmluZzFbaV0gIT0gc3RyaW5nMltqXSk7CisJCQkvKiBzd2FwICovCisJCQlpZiAoaSA+IDAgJiYgaiA+IDAgJiYgc3RyaW5nMVtpIC0gMV0gPT0gc3RyaW5nMltqXSAmJgorCQkJCQlzdHJpbmcxW2ldID09IHN0cmluZzJbaiAtIDFdICYmCisJCQkJCXJvdzJbaiArIDFdID4gcm93MFtqIC0gMV0gKyB3KQorCQkJCXJvdzJbaiArIDFdID0gcm93MFtqIC0gMV0gKyB3OworCQkJLyogZGVsZXRpb24gKi8KKwkJCWlmIChyb3cyW2ogKyAxXSA+IHJvdzFbaiArIDFdICsgZCkKKwkJCQlyb3cyW2ogKyAxXSA9IHJvdzFbaiArIDFdICsgZDsKKwkJCS8qIGluc2VydGlvbiAqLworCQkJaWYgKHJvdzJbaiArIDFdID4gcm93MltqXSArIGEpCisJCQkJcm93MltqICsgMV0gPSByb3cyW2pdICsgYTsKKwkJfQorCisJCWR1bW15ID0gcm93MDsKKwkJcm93MCA9IHJvdzE7CisJCXJvdzEgPSByb3cyOworCQlyb3cyID0gZHVtbXk7CisJfQorCisJaSA9IHJvdzFbbGVuMl07CisJZnJlZShyb3cwKTsKKwlmcmVlKHJvdzEpOworCWZyZWUocm93Mik7CisKKwlyZXR1cm4gaTsKK30KZGlmZiAtLWdpdCBhL2xldmVuc2h0ZWluLmggYi9sZXZlbnNodGVpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNzNhYmUKLS0tIC9kZXYvbnVsbAorKysgYi9sZXZlbnNodGVpbi5oCkBAIC0wLDAgKzEsOCBAQAorI2lmbmRlZiBMRVZFTlNIVEVJTl9ICisjZGVmaW5lIExFVkVOU0hURUlOX0gKKworaW50IGxldmVuc2h0ZWluKGNvbnN0IGNoYXIgKnN0cmluZzEsIGNvbnN0IGNoYXIgKnN0cmluZzIsCisJaW50IHN3YXBfcGVuYWx0eSwgaW50IHN1YnN0aXRpb25fcGVuYWx0eSwKKwlpbnQgaW5zZXJ0aW9uX3BlbmFsdHksIGludCBkZWxldGlvbl9wZW5hbHR5KTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9sbC1tZXJnZS5jIGIvbGwtbWVyZ2UuYwppbmRleCA5ODM3Yzg0Li5mYTJjYTUyIDEwMDY0NAotLS0gYS9sbC1tZXJnZS5jCisrKyBiL2xsLW1lcmdlLmMKQEAgLTgsNyArOCw2IEBACiAjaW5jbHVkZSAiYXR0ci5oIgogI2luY2x1ZGUgInhkaWZmLWludGVyZmFjZS5oIgogI2luY2x1ZGUgInJ1bi1jb21tYW5kLmgiCi0jaW5jbHVkZSAiaW50ZXJwb2xhdGUuaCIKICNpbmNsdWRlICJsbC1tZXJnZS5oIgogCiBzdHJ1Y3QgbGxfbWVyZ2VfZHJpdmVyOwpAQCAtNjMsNiArNjIsNyBAQAogCQkJaW50IHZpcnR1YWxfYW5jZXN0b3IpCiB7CiAJeHBwYXJhbV90IHhwcDsKKwlpbnQgc3R5bGUgPSAwOwogCiAJaWYgKGJ1ZmZlcl9pc19iaW5hcnkob3JpZy0+cHRyLCBvcmlnLT5zaXplKSB8fAogCSAgICBidWZmZXJfaXNfYmluYXJ5KHNyYzEtPnB0ciwgc3JjMS0+c2l6ZSkgfHwKQEAgLTc3LDEwICs3NywxMiBAQAogCX0KIAogCW1lbXNldCgmeHBwLCAwLCBzaXplb2YoeHBwKSk7CisJaWYgKGdpdF94bWVyZ2Vfc3R5bGUgPj0gMCkKKwkJc3R5bGUgPSBnaXRfeG1lcmdlX3N0eWxlOwogCXJldHVybiB4ZGxfbWVyZ2Uob3JpZywKIAkJCSBzcmMxLCBuYW1lMSwKIAkJCSBzcmMyLCBuYW1lMiwKLQkJCSAmeHBwLCBYRExfTUVSR0VfWkVBTE9VUywKKwkJCSAmeHBwLCBYRExfTUVSR0VfWkVBTE9VUyB8IHN0eWxlLAogCQkJIHJlc3VsdCk7CiB9CiAKQEAgLTk1LDEwICs5NywxNSBAQAogCWNoYXIgKnNyYywgKmRzdDsKIAlsb25nIHNpemU7CiAJY29uc3QgaW50IG1hcmtlcl9zaXplID0gNzsKKwlpbnQgc3RhdHVzLCBzYXZlZF9zdHlsZTsKIAotCWludCBzdGF0dXMgPSBsbF94ZGxfbWVyZ2UoZHJ2X3VudXNlZCwgcmVzdWx0LCBwYXRoX3VudXNlZCwKLQkJCQkgIG9yaWcsIHNyYzEsIE5VTEwsIHNyYzIsIE5VTEwsCi0JCQkJICB2aXJ0dWFsX2FuY2VzdG9yKTsKKwkvKiBXZSBoYXZlIHRvIGZvcmNlIHRoZSBSQ1MgIm1lcmdlIiBzdHlsZSAqLworCXNhdmVkX3N0eWxlID0gZ2l0X3htZXJnZV9zdHlsZTsKKwlnaXRfeG1lcmdlX3N0eWxlID0gMDsKKwlzdGF0dXMgPSBsbF94ZGxfbWVyZ2UoZHJ2X3VudXNlZCwgcmVzdWx0LCBwYXRoX3VudXNlZCwKKwkJCSAgICAgIG9yaWcsIHNyYzEsIE5VTEwsIHNyYzIsIE5VTEwsCisJCQkgICAgICB2aXJ0dWFsX2FuY2VzdG9yKTsKKwlnaXRfeG1lcmdlX3N0eWxlID0gc2F2ZWRfc3R5bGU7CiAJaWYgKHN0YXR1cyA8PSAwKQogCQlyZXR1cm4gc3RhdHVzOwogCXNpemUgPSByZXN1bHQtPnNpemU7CkBAIC0xNjEsMTEgKzE2OCwxMiBAQAogCQkJaW50IHZpcnR1YWxfYW5jZXN0b3IpCiB7CiAJY2hhciB0ZW1wWzNdWzUwXTsKLQljaGFyIGNtZGJ1ZlsyMDQ4XTsKLQlzdHJ1Y3QgaW50ZXJwIHRhYmxlW10gPSB7Ci0JCXsgIiVPIiB9LAotCQl7ICIlQSIgfSwKLQkJeyAiJUIiIH0sCisJc3RydWN0IHN0cmJ1ZiBjbWQgPSBTVFJCVUZfSU5JVDsKKwlzdHJ1Y3Qgc3RyYnVmX2V4cGFuZF9kaWN0X2VudHJ5IGRpY3RbXSA9IHsKKwkJeyAiTyIsIHRlbXBbMF0gfSwKKwkJeyAiQSIsIHRlbXBbMV0gfSwKKwkJeyAiQiIsIHRlbXBbMl0gfSwKKwkJeyBOVUxMIH0KIAl9OwogCXN0cnVjdCBjaGlsZF9wcm9jZXNzIGNoaWxkOwogCWNvbnN0IGNoYXIgKmFyZ3NbMjBdOwpAQCAtMTgxLDE3ICsxODksMTMgQEAKIAljcmVhdGVfdGVtcChzcmMxLCB0ZW1wWzFdKTsKIAljcmVhdGVfdGVtcChzcmMyLCB0ZW1wWzJdKTsKIAotCWludGVycF9zZXRfZW50cnkodGFibGUsIDAsIHRlbXBbMF0pOwotCWludGVycF9zZXRfZW50cnkodGFibGUsIDEsIHRlbXBbMV0pOwotCWludGVycF9zZXRfZW50cnkodGFibGUsIDIsIHRlbXBbMl0pOwotCi0JaW50ZXJwb2xhdGUoY21kYnVmLCBzaXplb2YoY21kYnVmKSwgZm4tPmNtZGxpbmUsIHRhYmxlLCAzKTsKKwlzdHJidWZfZXhwYW5kKCZjbWQsIGZuLT5jbWRsaW5lLCBzdHJidWZfZXhwYW5kX2RpY3RfY2IsICZkaWN0KTsKIAogCW1lbXNldCgmY2hpbGQsIDAsIHNpemVvZihjaGlsZCkpOwogCWNoaWxkLmFyZ3YgPSBhcmdzOwogCWFyZ3NbMF0gPSAic2giOwogCWFyZ3NbMV0gPSAiLWMiOwotCWFyZ3NbMl0gPSBjbWRidWY7CisJYXJnc1syXSA9IGNtZC5idWY7CiAJYXJnc1szXSA9IE5VTEw7CiAKIAlzdGF0dXMgPSBydW5fY29tbWFuZCgmY2hpbGQpOwpAQCAtMjE2LDYgKzIyMCw3IEBACiAgYmFkOgogCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspCiAJCXVubGluayh0ZW1wW2ldKTsKKwlzdHJidWZfcmVsZWFzZSgmY21kKTsKIAlyZXR1cm4gc3RhdHVzOwogfQogCmRpZmYgLS1naXQgYS9sb2NrZmlsZS5jIGIvbG9ja2ZpbGUuYwppbmRleCA2ZDc1NjA4Li44ZTU1NmZmIDEwMDY0NAotLS0gYS9sb2NrZmlsZS5jCisrKyBiL2xvY2tmaWxlLmMKQEAgLTE0MCw2ICsxNDAsNyBAQAogCQkJc2lnbmFsKFNJR0hVUCwgcmVtb3ZlX2xvY2tfZmlsZV9vbl9zaWduYWwpOwogCQkJc2lnbmFsKFNJR1RFUk0sIHJlbW92ZV9sb2NrX2ZpbGVfb25fc2lnbmFsKTsKIAkJCXNpZ25hbChTSUdRVUlULCByZW1vdmVfbG9ja19maWxlX29uX3NpZ25hbCk7CisJCQlzaWduYWwoU0lHUElQRSwgcmVtb3ZlX2xvY2tfZmlsZV9vbl9zaWduYWwpOwogCQkJYXRleGl0KHJlbW92ZV9sb2NrX2ZpbGUpOwogCQl9CiAJCWxrLT5vd25lciA9IGdldHBpZCgpOwpAQCAtMTU3LDExICsxNTgsMjUgQEAKIAlyZXR1cm4gbGstPmZkOwogfQogCisKK05PUkVUVVJOIHZvaWQgdW5hYmxlX3RvX2xvY2tfaW5kZXhfZGllKGNvbnN0IGNoYXIgKnBhdGgsIGludCBlcnIpCit7CisJaWYgKGVycm5vID09IEVFWElTVCkgeworCQlkaWUoIlVuYWJsZSB0byBjcmVhdGUgJyVzLmxvY2snOiAlcy5cblxuIgorCQkgICAgIklmIG5vIG90aGVyIGdpdCBwcm9jZXNzIGlzIGN1cnJlbnRseSBydW5uaW5nLCB0aGlzIHByb2JhYmx5IG1lYW5zIGFcbiIKKwkJICAgICJnaXQgcHJvY2VzcyBjcmFzaGVkIGluIHRoaXMgcmVwb3NpdG9yeSBlYXJsaWVyLiBNYWtlIHN1cmUgbm8gb3RoZXIgZ2l0XG4iCisJCSAgICAicHJvY2VzcyBpcyBydW5uaW5nIGFuZCByZW1vdmUgdGhlIGZpbGUgbWFudWFsbHkgdG8gY29udGludWUuIiwKKwkJICAgIHBhdGgsIHN0cmVycm9yKGVycikpOworCX0gZWxzZSB7CisJCWRpZSgiVW5hYmxlIHRvIGNyZWF0ZSAnJXMubG9jayc6ICVzIiwgcGF0aCwgc3RyZXJyb3IoZXJyKSk7CisJfQorfQorCiBpbnQgaG9sZF9sb2NrX2ZpbGVfZm9yX3VwZGF0ZShzdHJ1Y3QgbG9ja19maWxlICpsaywgY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzKQogewogCWludCBmZCA9IGxvY2tfZmlsZShsaywgcGF0aCwgZmxhZ3MpOwogCWlmIChmZCA8IDAgJiYgKGZsYWdzICYgTE9DS19ESUVfT05fRVJST1IpKQotCQlkaWUoInVuYWJsZSB0byBjcmVhdGUgJyVzLmxvY2snOiAlcyIsIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJCXVuYWJsZV90b19sb2NrX2luZGV4X2RpZShwYXRoLCBlcnJubyk7CiAJcmV0dXJuIGZkOwogfQogCmRpZmYgLS1naXQgYS9sb2ctdHJlZS5jIGIvbG9nLXRyZWUuYwppbmRleCBiZDhiOWU0Li4xOTRkZGIxIDEwMDY0NAotLS0gYS9sb2ctdHJlZS5jCisrKyBiL2xvZy10cmVlLmMKQEAgLTEsMTIgKzEsNDggQEAKICNpbmNsdWRlICJjYWNoZS5oIgogI2luY2x1ZGUgImRpZmYuaCIKICNpbmNsdWRlICJjb21taXQuaCIKKyNpbmNsdWRlICJ0YWcuaCIKICNpbmNsdWRlICJncmFwaC5oIgogI2luY2x1ZGUgImxvZy10cmVlLmgiCiAjaW5jbHVkZSAicmVmbG9nLXdhbGsuaCIKKyNpbmNsdWRlICJyZWZzLmgiCiAKIHN0cnVjdCBkZWNvcmF0aW9uIG5hbWVfZGVjb3JhdGlvbiA9IHsgIm9iamVjdCBuYW1lcyIgfTsKIAorc3RhdGljIHZvaWQgYWRkX25hbWVfZGVjb3JhdGlvbihjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBvYmplY3QgKm9iaikKK3sKKwlpbnQgcGxlbiA9IHN0cmxlbihwcmVmaXgpOworCWludCBubGVuID0gc3RybGVuKG5hbWUpOworCXN0cnVjdCBuYW1lX2RlY29yYXRpb24gKnJlcyA9IHhtYWxsb2Moc2l6ZW9mKHN0cnVjdCBuYW1lX2RlY29yYXRpb24pICsgcGxlbiArIG5sZW4pOworCW1lbWNweShyZXMtPm5hbWUsIHByZWZpeCwgcGxlbik7CisJbWVtY3B5KHJlcy0+bmFtZSArIHBsZW4sIG5hbWUsIG5sZW4gKyAxKTsKKwlyZXMtPm5leHQgPSBhZGRfZGVjb3JhdGlvbigmbmFtZV9kZWNvcmF0aW9uLCBvYmosIHJlcyk7Cit9CisKK3N0YXRpYyBpbnQgYWRkX3JlZl9kZWNvcmF0aW9uKGNvbnN0IGNoYXIgKnJlZm5hbWUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIGludCBmbGFncywgdm9pZCAqY2JfZGF0YSkKK3sKKwlzdHJ1Y3Qgb2JqZWN0ICpvYmogPSBwYXJzZV9vYmplY3Qoc2hhMSk7CisJaWYgKCFvYmopCisJCXJldHVybiAwOworCWFkZF9uYW1lX2RlY29yYXRpb24oIiIsIHJlZm5hbWUsIG9iaik7CisJd2hpbGUgKG9iai0+dHlwZSA9PSBPQkpfVEFHKSB7CisJCW9iaiA9ICgoc3RydWN0IHRhZyAqKW9iaiktPnRhZ2dlZDsKKwkJaWYgKCFvYmopCisJCQlicmVhazsKKwkJYWRkX25hbWVfZGVjb3JhdGlvbigidGFnOiAiLCByZWZuYW1lLCBvYmopOworCX0KKwlyZXR1cm4gMDsKK30KKwordm9pZCBsb2FkX3JlZl9kZWNvcmF0aW9ucyh2b2lkKQoreworCXN0YXRpYyBpbnQgbG9hZGVkOworCWlmICghbG9hZGVkKSB7CisJCWxvYWRlZCA9IDE7CisJCWZvcl9lYWNoX3JlZihhZGRfcmVmX2RlY29yYXRpb24sIE5VTEwpOworCX0KK30KKwogc3RhdGljIHZvaWQgc2hvd19wYXJlbnRzKHN0cnVjdCBjb21taXQgKmNvbW1pdCwgaW50IGFiYnJldikKIHsKIAlzdHJ1Y3QgY29tbWl0X2xpc3QgKnA7CkBAIC0xNiwxMSArNTIsMTUgQEAKIAl9CiB9CiAKLXZvaWQgc2hvd19kZWNvcmF0aW9ucyhzdHJ1Y3QgY29tbWl0ICpjb21taXQpCit2b2lkIHNob3dfZGVjb3JhdGlvbnMoc3RydWN0IHJldl9pbmZvICpvcHQsIHN0cnVjdCBjb21taXQgKmNvbW1pdCkKIHsKIAljb25zdCBjaGFyICpwcmVmaXg7CiAJc3RydWN0IG5hbWVfZGVjb3JhdGlvbiAqZGVjb3JhdGlvbjsKIAorCWlmIChvcHQtPnNob3dfc291cmNlICYmIGNvbW1pdC0+dXRpbCkKKwkJcHJpbnRmKCJcdCVzIiwgKGNoYXIgKikgY29tbWl0LT51dGlsKTsKKwlpZiAoIW9wdC0+c2hvd19kZWNvcmF0aW9ucykKKwkJcmV0dXJuOwogCWRlY29yYXRpb24gPSBsb29rdXBfZGVjb3JhdGlvbigmbmFtZV9kZWNvcmF0aW9uLCAmY29tbWl0LT5vYmplY3QpOwogCWlmICghZGVjb3JhdGlvbikKIAkJcmV0dXJuOwpAQCAtMjE2LDcgKzI1Niw3IEBACiAKIHZvaWQgc2hvd19sb2coc3RydWN0IHJldl9pbmZvICpvcHQpCiB7Ci0Jc3RydWN0IHN0cmJ1ZiBtc2didWY7CisJc3RydWN0IHN0cmJ1ZiBtc2didWYgPSBTVFJCVUZfSU5JVDsKIAlzdHJ1Y3QgbG9nX2luZm8gKmxvZyA9IG9wdC0+bG9naW5mbzsKIAlzdHJ1Y3QgY29tbWl0ICpjb21taXQgPSBsb2ctPmNvbW1pdCwgKnBhcmVudCA9IGxvZy0+cGFyZW50OwogCWludCBhYmJyZXYgPSBvcHQtPmRpZmZvcHQuYWJicmV2OwpAQCAtMjQzLDcgKzI4Myw3IEBACiAJCWZwdXRzKGRpZmZfdW5pcXVlX2FiYnJldihjb21taXQtPm9iamVjdC5zaGExLCBhYmJyZXZfY29tbWl0KSwgc3Rkb3V0KTsKIAkJaWYgKG9wdC0+cHJpbnRfcGFyZW50cykKIAkJCXNob3dfcGFyZW50cyhjb21taXQsIGFiYnJldl9jb21taXQpOwotCQlzaG93X2RlY29yYXRpb25zKGNvbW1pdCk7CisJCXNob3dfZGVjb3JhdGlvbnMob3B0LCBjb21taXQpOwogCQlpZiAob3B0LT5ncmFwaCAmJiAhZ3JhcGhfaXNfY29tbWl0X2ZpbmlzaGVkKG9wdC0+Z3JhcGgpKSB7CiAJCQlwdXRjaGFyKCdcbicpOwogCQkJZ3JhcGhfc2hvd19yZW1haW5kZXIob3B0LT5ncmFwaCk7CkBAIC0zMTYsNyArMzU2LDcgQEAKIAkJCXByaW50ZigiIChmcm9tICVzKSIsCiAJCQkgICAgICAgZGlmZl91bmlxdWVfYWJicmV2KHBhcmVudC0+b2JqZWN0LnNoYTEsCiAJCQkJCQkgIGFiYnJldl9jb21taXQpKTsKLQkJc2hvd19kZWNvcmF0aW9ucyhjb21taXQpOworCQlzaG93X2RlY29yYXRpb25zKG9wdCwgY29tbWl0KTsKIAkJcHJpbnRmKCIlcyIsIGRpZmZfZ2V0X2NvbG9yX29wdCgmb3B0LT5kaWZmb3B0LCBESUZGX1JFU0VUKSk7CiAJCWlmIChvcHQtPmNvbW1pdF9mb3JtYXQgPT0gQ01JVF9GTVRfT05FTElORSkgewogCQkJcHV0Y2hhcignICcpOwpAQCAtMzQ1LDcgKzM4NSw2IEBACiAJLyoKIAkgKiBBbmQgdGhlbiB0aGUgcHJldHR5LXByaW50ZWQgbWVzc2FnZSBpdHNlbGYKIAkgKi8KLQlzdHJidWZfaW5pdCgmbXNnYnVmLCAwKTsKIAlpZiAobmVlZF84Yml0X2N0ZSA+PSAwKQogCQluZWVkXzhiaXRfY3RlID0gaGFzX25vbl9hc2NpaShvcHQtPmFkZF9zaWdub2ZmKTsKIAlwcmV0dHlfcHJpbnRfY29tbWl0KG9wdC0+Y29tbWl0X2Zvcm1hdCwgY29tbWl0LCAmbXNnYnVmLApAQCAtNDMyLDcgKzQ3MSw3IEBACiAJc3RydWN0IGNvbW1pdF9saXN0ICpwYXJlbnRzOwogCXVuc2lnbmVkIGNvbnN0IGNoYXIgKnNoYTEgPSBjb21taXQtPm9iamVjdC5zaGExOwogCi0JaWYgKCFvcHQtPmRpZmYpCisJaWYgKCFvcHQtPmRpZmYgJiYgIURJRkZfT1BUX1RTVCgmb3B0LT5kaWZmb3B0LCBFWElUX1dJVEhfU1RBVFVTKSkKIAkJcmV0dXJuIDA7CiAKIAkvKiBSb290IGNvbW1pdD8gKi8KZGlmZiAtLWdpdCBhL2xvZy10cmVlLmggYi9sb2ctdHJlZS5oCmluZGV4IDU5YmE0YzQuLmYyYTkwMDggMTAwNjQ0Ci0tLSBhL2xvZy10cmVlLmgKKysrIGIvbG9nLXRyZWUuaApAQCAtMTIsMTAgKzEyLDExIEBACiBpbnQgbG9nX3RyZWVfY29tbWl0KHN0cnVjdCByZXZfaW5mbyAqLCBzdHJ1Y3QgY29tbWl0ICopOwogaW50IGxvZ190cmVlX29wdF9wYXJzZShzdHJ1Y3QgcmV2X2luZm8gKiwgY29uc3QgY2hhciAqKiwgaW50KTsKIHZvaWQgc2hvd19sb2coc3RydWN0IHJldl9pbmZvICpvcHQpOwotdm9pZCBzaG93X2RlY29yYXRpb25zKHN0cnVjdCBjb21taXQgKmNvbW1pdCk7Cit2b2lkIHNob3dfZGVjb3JhdGlvbnMoc3RydWN0IHJldl9pbmZvICpvcHQsIHN0cnVjdCBjb21taXQgKmNvbW1pdCk7CiB2b2lkIGxvZ193cml0ZV9lbWFpbF9oZWFkZXJzKHN0cnVjdCByZXZfaW5mbyAqb3B0LCBjb25zdCBjaGFyICpuYW1lLAogCQkJICAgICBjb25zdCBjaGFyICoqc3ViamVjdF9wLAogCQkJICAgICBjb25zdCBjaGFyICoqZXh0cmFfaGVhZGVyc19wLAogCQkJICAgICBpbnQgKm5lZWRfOGJpdF9jdGVfcCk7Cit2b2lkIGxvYWRfcmVmX2RlY29yYXRpb25zKHZvaWQpOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL21lcmdlLWZpbGUuYyBiL21lcmdlLWZpbGUuYwppbmRleCAyYTkzOWM5Li4zMTIwYTk1IDEwMDY0NAotLS0gYS9tZXJnZS1maWxlLmMKKysrIGIvbWVyZ2UtZmlsZS5jCkBAIC02MSw2ICs2MSw3IEBACiAJeGRlbWl0Y29uZl90IHhlY2ZnOwogCXhkZW1pdGNiX3QgZWNiOwogCisJbWVtc2V0KCZ4cHAsIDAsIHNpemVvZih4cHApKTsKIAl4cHAuZmxhZ3MgPSBYREZfTkVFRF9NSU5JTUFMOwogCW1lbXNldCgmeGVjZmcsIDAsIHNpemVvZih4ZWNmZykpOwogCXhlY2ZnLmN0eGxlbiA9IDM7CmRpZmYgLS1naXQgYS9tZXJnZS1yZWN1cnNpdmUuYyBiL21lcmdlLXJlY3Vyc2l2ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5NzAyNmIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXJnZS1yZWN1cnNpdmUuYwpAQCAtMCwwICsxLDEzOTMgQEAKKy8qCisgKiBSZWN1cnNpdmUgTWVyZ2UgYWxnb3JpdGhtIHN0b2xlbiBmcm9tIGdpdC1tZXJnZS1yZWN1cnNpdmUucHkgYnkKKyAqIEZyZWRyaWsgS3VpdmluZW4uCisgKiBUaGUgdGhpZXZlcyB3ZXJlIEFsZXggUmllc2VuIGFuZCBKb2hhbm5lcyBTY2hpbmRlbGluLCBpbiBKdW5lL0p1bHkgMjAwNgorICovCisjaW5jbHVkZSAiY2FjaGUuaCIKKyNpbmNsdWRlICJjYWNoZS10cmVlLmgiCisjaW5jbHVkZSAiY29tbWl0LmgiCisjaW5jbHVkZSAiYmxvYi5oIgorI2luY2x1ZGUgImJ1aWx0aW4uaCIKKyNpbmNsdWRlICJ0cmVlLXdhbGsuaCIKKyNpbmNsdWRlICJkaWZmLmgiCisjaW5jbHVkZSAiZGlmZmNvcmUuaCIKKyNpbmNsdWRlICJ0YWcuaCIKKyNpbmNsdWRlICJ1bnBhY2stdHJlZXMuaCIKKyNpbmNsdWRlICJzdHJpbmctbGlzdC5oIgorI2luY2x1ZGUgInhkaWZmLWludGVyZmFjZS5oIgorI2luY2x1ZGUgImxsLW1lcmdlLmgiCisjaW5jbHVkZSAiYXR0ci5oIgorI2luY2x1ZGUgIm1lcmdlLXJlY3Vyc2l2ZS5oIgorI2luY2x1ZGUgImRpci5oIgorCitzdGF0aWMgc3RydWN0IHRyZWUgKnNoaWZ0X3RyZWVfb2JqZWN0KHN0cnVjdCB0cmVlICpvbmUsIHN0cnVjdCB0cmVlICp0d28pCit7CisJdW5zaWduZWQgY2hhciBzaGlmdGVkWzIwXTsKKworCS8qCisJICogTkVFRFNXT1JLOiB0aGlzIGxpbWl0cyB0aGUgcmVjdXJzaW9uIGRlcHRoIHRvIGhhcmRjb2RlZAorCSAqIHZhbHVlICcyJyB0byBhdm9pZCBleGNlc3NpdmUgb3ZlcmhlYWQuCisJICovCisJc2hpZnRfdHJlZShvbmUtPm9iamVjdC5zaGExLCB0d28tPm9iamVjdC5zaGExLCBzaGlmdGVkLCAyKTsKKwlpZiAoIWhhc2hjbXAodHdvLT5vYmplY3Quc2hhMSwgc2hpZnRlZCkpCisJCXJldHVybiB0d287CisJcmV0dXJuIGxvb2t1cF90cmVlKHNoaWZ0ZWQpOworfQorCisvKgorICogQSB2aXJ0dWFsIGNvbW1pdCBoYXMgKGNvbnN0IGNoYXIgKiljb21taXQtPnV0aWwgc2V0IHRvIHRoZSBuYW1lLgorICovCisKK3N0cnVjdCBjb21taXQgKm1ha2VfdmlydHVhbF9jb21taXQoc3RydWN0IHRyZWUgKnRyZWUsIGNvbnN0IGNoYXIgKmNvbW1lbnQpCit7CisJc3RydWN0IGNvbW1pdCAqY29tbWl0ID0geGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IGNvbW1pdCkpOworCWNvbW1pdC0+dHJlZSA9IHRyZWU7CisJY29tbWl0LT51dGlsID0gKHZvaWQqKWNvbW1lbnQ7CisJLyogYXZvaWQgd2FybmluZ3MgKi8KKwljb21taXQtPm9iamVjdC5wYXJzZWQgPSAxOworCXJldHVybiBjb21taXQ7Cit9CisKKy8qCisgKiBTaW5jZSB3ZSB1c2UgZ2V0X3RyZWVfZW50cnkoKSwgd2hpY2ggZG9lcyBub3QgcHV0IHRoZSByZWFkIG9iamVjdCBpbnRvCisgKiB0aGUgb2JqZWN0IHBvb2wsIHdlIGNhbm5vdCByZWx5IG9uIGEgPT0gYi4KKyAqLworc3RhdGljIGludCBzaGFfZXEoY29uc3QgdW5zaWduZWQgY2hhciAqYSwgY29uc3QgdW5zaWduZWQgY2hhciAqYikKK3sKKwlpZiAoIWEgJiYgIWIpCisJCXJldHVybiAyOworCXJldHVybiBhICYmIGIgJiYgaGFzaGNtcChhLCBiKSA9PSAwOworfQorCisvKgorICogU2luY2Ugd2Ugd2FudCB0byB3cml0ZSB0aGUgaW5kZXggZXZlbnR1YWxseSwgd2UgY2Fubm90IHJldXNlIHRoZSBpbmRleAorICogZm9yIHRoZXNlICh0ZW1wb3JhcnkpIGRhdGEuCisgKi8KK3N0cnVjdCBzdGFnZV9kYXRhCit7CisJc3RydWN0CisJeworCQl1bnNpZ25lZCBtb2RlOworCQl1bnNpZ25lZCBjaGFyIHNoYVsyMF07CisJfSBzdGFnZXNbNF07CisJdW5zaWduZWQgcHJvY2Vzc2VkOjE7Cit9OworCitzdGF0aWMgaW50IHNob3coc3RydWN0IG1lcmdlX29wdGlvbnMgKm8sIGludCB2KQoreworCXJldHVybiAoIW8tPmNhbGxfZGVwdGggJiYgby0+dmVyYm9zaXR5ID49IHYpIHx8IG8tPnZlcmJvc2l0eSA+PSA1OworfQorCitzdGF0aWMgdm9pZCBmbHVzaF9vdXRwdXQoc3RydWN0IG1lcmdlX29wdGlvbnMgKm8pCit7CisJaWYgKG8tPm9idWYubGVuKSB7CisJCWZwdXRzKG8tPm9idWYuYnVmLCBzdGRvdXQpOworCQlzdHJidWZfcmVzZXQoJm8tPm9idWYpOworCX0KK30KKworc3RhdGljIHZvaWQgb3V0cHV0KHN0cnVjdCBtZXJnZV9vcHRpb25zICpvLCBpbnQgdiwgY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJaW50IGxlbjsKKwl2YV9saXN0IGFwOworCisJaWYgKCFzaG93KG8sIHYpKQorCQlyZXR1cm47CisKKwlzdHJidWZfZ3Jvdygmby0+b2J1Ziwgby0+Y2FsbF9kZXB0aCAqIDIgKyAyKTsKKwltZW1zZXQoby0+b2J1Zi5idWYgKyBvLT5vYnVmLmxlbiwgJyAnLCBvLT5jYWxsX2RlcHRoICogMik7CisJc3RyYnVmX3NldGxlbigmby0+b2J1Ziwgby0+b2J1Zi5sZW4gKyBvLT5jYWxsX2RlcHRoICogMik7CisKKwl2YV9zdGFydChhcCwgZm10KTsKKwlsZW4gPSB2c25wcmludGYoby0+b2J1Zi5idWYgKyBvLT5vYnVmLmxlbiwgc3RyYnVmX2F2YWlsKCZvLT5vYnVmKSwgZm10LCBhcCk7CisJdmFfZW5kKGFwKTsKKworCWlmIChsZW4gPCAwKQorCQlsZW4gPSAwOworCWlmIChsZW4gPj0gc3RyYnVmX2F2YWlsKCZvLT5vYnVmKSkgeworCQlzdHJidWZfZ3Jvdygmby0+b2J1ZiwgbGVuICsgMik7CisJCXZhX3N0YXJ0KGFwLCBmbXQpOworCQlsZW4gPSB2c25wcmludGYoby0+b2J1Zi5idWYgKyBvLT5vYnVmLmxlbiwgc3RyYnVmX2F2YWlsKCZvLT5vYnVmKSwgZm10LCBhcCk7CisJCXZhX2VuZChhcCk7CisJCWlmIChsZW4gPj0gc3RyYnVmX2F2YWlsKCZvLT5vYnVmKSkgeworCQkJZGllKCJ0aGlzIHNob3VsZCBub3QgaGFwcGVuLCB5b3VyIHNucHJpbnRmIGlzIGJyb2tlbiIpOworCQl9CisJfQorCXN0cmJ1Zl9zZXRsZW4oJm8tPm9idWYsIG8tPm9idWYubGVuICsgbGVuKTsKKwlzdHJidWZfYWRkKCZvLT5vYnVmLCAiXG4iLCAxKTsKKwlpZiAoIW8tPmJ1ZmZlcl9vdXRwdXQpCisJCWZsdXNoX291dHB1dChvKTsKK30KKworc3RhdGljIHZvaWQgb3V0cHV0X2NvbW1pdF90aXRsZShzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyAqbywgc3RydWN0IGNvbW1pdCAqY29tbWl0KQoreworCWludCBpOworCWZsdXNoX291dHB1dChvKTsKKwlmb3IgKGkgPSBvLT5jYWxsX2RlcHRoOyBpLS07KQorCQlmcHV0cygiICAiLCBzdGRvdXQpOworCWlmIChjb21taXQtPnV0aWwpCisJCXByaW50ZigidmlydHVhbCAlc1xuIiwgKGNoYXIgKiljb21taXQtPnV0aWwpOworCWVsc2UgeworCQlwcmludGYoIiVzICIsIGZpbmRfdW5pcXVlX2FiYnJldihjb21taXQtPm9iamVjdC5zaGExLCBERUZBVUxUX0FCQlJFVikpOworCQlpZiAocGFyc2VfY29tbWl0KGNvbW1pdCkgIT0gMCkKKwkJCXByaW50ZigiKGJhZCBjb21taXQpXG4iKTsKKwkJZWxzZSB7CisJCQljb25zdCBjaGFyICpzOworCQkJaW50IGxlbjsKKwkJCWZvciAocyA9IGNvbW1pdC0+YnVmZmVyOyAqczsgcysrKQorCQkJCWlmICgqcyA9PSAnXG4nICYmIHNbMV0gPT0gJ1xuJykgeworCQkJCQlzICs9IDI7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCWZvciAobGVuID0gMDsgc1tsZW5dICYmICdcbicgIT0gc1tsZW5dOyBsZW4rKykKKwkJCQk7IC8qIGRvIG5vdGhpbmcgKi8KKwkJCXByaW50ZigiJS4qc1xuIiwgbGVuLCBzKTsKKwkJfQorCX0KK30KKworc3RhdGljIGludCBhZGRfY2FjaGVpbmZvKHVuc2lnbmVkIGludCBtb2RlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLAorCQljb25zdCBjaGFyICpwYXRoLCBpbnQgc3RhZ2UsIGludCByZWZyZXNoLCBpbnQgb3B0aW9ucykKK3sKKwlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlOworCWNlID0gbWFrZV9jYWNoZV9lbnRyeShtb2RlLCBzaGExID8gc2hhMSA6IG51bGxfc2hhMSwgcGF0aCwgc3RhZ2UsIHJlZnJlc2gpOworCWlmICghY2UpCisJCXJldHVybiBlcnJvcigiYWRkaW5mb19jYWNoZSBmYWlsZWQgZm9yIHBhdGggJyVzJyIsIHBhdGgpOworCXJldHVybiBhZGRfY2FjaGVfZW50cnkoY2UsIG9wdGlvbnMpOworfQorCitzdGF0aWMgdm9pZCBpbml0X3RyZWVfZGVzY19mcm9tX3RyZWUoc3RydWN0IHRyZWVfZGVzYyAqZGVzYywgc3RydWN0IHRyZWUgKnRyZWUpCit7CisJcGFyc2VfdHJlZSh0cmVlKTsKKwlpbml0X3RyZWVfZGVzYyhkZXNjLCB0cmVlLT5idWZmZXIsIHRyZWUtPnNpemUpOworfQorCitzdGF0aWMgaW50IGdpdF9tZXJnZV90cmVlcyhpbnQgaW5kZXhfb25seSwKKwkJCSAgIHN0cnVjdCB0cmVlICpjb21tb24sCisJCQkgICBzdHJ1Y3QgdHJlZSAqaGVhZCwKKwkJCSAgIHN0cnVjdCB0cmVlICptZXJnZSkKK3sKKwlpbnQgcmM7CisJc3RydWN0IHRyZWVfZGVzYyB0WzNdOworCXN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyBvcHRzOworCisJbWVtc2V0KCZvcHRzLCAwLCBzaXplb2Yob3B0cykpOworCWlmIChpbmRleF9vbmx5KQorCQlvcHRzLmluZGV4X29ubHkgPSAxOworCWVsc2UKKwkJb3B0cy51cGRhdGUgPSAxOworCW9wdHMubWVyZ2UgPSAxOworCW9wdHMuaGVhZF9pZHggPSAyOworCW9wdHMuZm4gPSB0aHJlZXdheV9tZXJnZTsKKwlvcHRzLnNyY19pbmRleCA9ICZ0aGVfaW5kZXg7CisJb3B0cy5kc3RfaW5kZXggPSAmdGhlX2luZGV4OworCisJaW5pdF90cmVlX2Rlc2NfZnJvbV90cmVlKHQrMCwgY29tbW9uKTsKKwlpbml0X3RyZWVfZGVzY19mcm9tX3RyZWUodCsxLCBoZWFkKTsKKwlpbml0X3RyZWVfZGVzY19mcm9tX3RyZWUodCsyLCBtZXJnZSk7CisKKwlyYyA9IHVucGFja190cmVlcygzLCB0LCAmb3B0cyk7CisJY2FjaGVfdHJlZV9mcmVlKCZhY3RpdmVfY2FjaGVfdHJlZSk7CisJcmV0dXJuIHJjOworfQorCitzdHJ1Y3QgdHJlZSAqd3JpdGVfdHJlZV9mcm9tX21lbW9yeShzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyAqbykKK3sKKwlzdHJ1Y3QgdHJlZSAqcmVzdWx0ID0gTlVMTDsKKworCWlmICh1bm1lcmdlZF9jYWNoZSgpKSB7CisJCWludCBpOworCQlvdXRwdXQobywgMCwgIlRoZXJlIGFyZSB1bm1lcmdlZCBpbmRleCBlbnRyaWVzOiIpOworCQlmb3IgKGkgPSAwOyBpIDwgYWN0aXZlX25yOyBpKyspIHsKKwkJCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBhY3RpdmVfY2FjaGVbaV07CisJCQlpZiAoY2Vfc3RhZ2UoY2UpKQorCQkJCW91dHB1dChvLCAwLCAiJWQgJS4qcyIsIGNlX3N0YWdlKGNlKSwgY2VfbmFtZWxlbihjZSksIGNlLT5uYW1lKTsKKwkJfQorCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlpZiAoIWFjdGl2ZV9jYWNoZV90cmVlKQorCQlhY3RpdmVfY2FjaGVfdHJlZSA9IGNhY2hlX3RyZWUoKTsKKworCWlmICghY2FjaGVfdHJlZV9mdWxseV92YWxpZChhY3RpdmVfY2FjaGVfdHJlZSkgJiYKKwkgICAgY2FjaGVfdHJlZV91cGRhdGUoYWN0aXZlX2NhY2hlX3RyZWUsCisJCQkgICAgICBhY3RpdmVfY2FjaGUsIGFjdGl2ZV9uciwgMCwgMCkgPCAwKQorCQlkaWUoImVycm9yIGJ1aWxkaW5nIHRyZWVzIik7CisKKwlyZXN1bHQgPSBsb29rdXBfdHJlZShhY3RpdmVfY2FjaGVfdHJlZS0+c2hhMSk7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50IHNhdmVfZmlsZXNfZGlycyhjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLAorCQljb25zdCBjaGFyICpiYXNlLCBpbnQgYmFzZWxlbiwgY29uc3QgY2hhciAqcGF0aCwKKwkJdW5zaWduZWQgaW50IG1vZGUsIGludCBzdGFnZSwgdm9pZCAqY29udGV4dCkKK3sKKwlpbnQgbGVuID0gc3RybGVuKHBhdGgpOworCWNoYXIgKm5ld3BhdGggPSB4bWFsbG9jKGJhc2VsZW4gKyBsZW4gKyAxKTsKKwlzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyAqbyA9IGNvbnRleHQ7CisKKwltZW1jcHkobmV3cGF0aCwgYmFzZSwgYmFzZWxlbik7CisJbWVtY3B5KG5ld3BhdGggKyBiYXNlbGVuLCBwYXRoLCBsZW4pOworCW5ld3BhdGhbYmFzZWxlbiArIGxlbl0gPSAnXDAnOworCisJaWYgKFNfSVNESVIobW9kZSkpCisJCXN0cmluZ19saXN0X2luc2VydChuZXdwYXRoLCAmby0+Y3VycmVudF9kaXJlY3Rvcnlfc2V0KTsKKwllbHNlCisJCXN0cmluZ19saXN0X2luc2VydChuZXdwYXRoLCAmby0+Y3VycmVudF9maWxlX3NldCk7CisJZnJlZShuZXdwYXRoKTsKKworCXJldHVybiBSRUFEX1RSRUVfUkVDVVJTSVZFOworfQorCitzdGF0aWMgaW50IGdldF9maWxlc19kaXJzKHN0cnVjdCBtZXJnZV9vcHRpb25zICpvLCBzdHJ1Y3QgdHJlZSAqdHJlZSkKK3sKKwlpbnQgbjsKKwlpZiAocmVhZF90cmVlX3JlY3Vyc2l2ZSh0cmVlLCAiIiwgMCwgMCwgTlVMTCwgc2F2ZV9maWxlc19kaXJzLCBvKSkKKwkJcmV0dXJuIDA7CisJbiA9IG8tPmN1cnJlbnRfZmlsZV9zZXQubnIgKyBvLT5jdXJyZW50X2RpcmVjdG9yeV9zZXQubnI7CisJcmV0dXJuIG47Cit9CisKKy8qCisgKiBSZXR1cm5zIGFuIGluZGV4X2VudHJ5IGluc3RhbmNlIHdoaWNoIGRvZXNuJ3QgaGF2ZSB0byBjb3JyZXNwb25kIHRvCisgKiBhIHJlYWwgY2FjaGUgZW50cnkgaW4gR2l0J3MgaW5kZXguCisgKi8KK3N0YXRpYyBzdHJ1Y3Qgc3RhZ2VfZGF0YSAqaW5zZXJ0X3N0YWdlX2RhdGEoY29uc3QgY2hhciAqcGF0aCwKKwkJc3RydWN0IHRyZWUgKm8sIHN0cnVjdCB0cmVlICphLCBzdHJ1Y3QgdHJlZSAqYiwKKwkJc3RydWN0IHN0cmluZ19saXN0ICplbnRyaWVzKQoreworCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdGVtOworCXN0cnVjdCBzdGFnZV9kYXRhICplID0geGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IHN0YWdlX2RhdGEpKTsKKwlnZXRfdHJlZV9lbnRyeShvLT5vYmplY3Quc2hhMSwgcGF0aCwKKwkJCWUtPnN0YWdlc1sxXS5zaGEsICZlLT5zdGFnZXNbMV0ubW9kZSk7CisJZ2V0X3RyZWVfZW50cnkoYS0+b2JqZWN0LnNoYTEsIHBhdGgsCisJCQllLT5zdGFnZXNbMl0uc2hhLCAmZS0+c3RhZ2VzWzJdLm1vZGUpOworCWdldF90cmVlX2VudHJ5KGItPm9iamVjdC5zaGExLCBwYXRoLAorCQkJZS0+c3RhZ2VzWzNdLnNoYSwgJmUtPnN0YWdlc1szXS5tb2RlKTsKKwlpdGVtID0gc3RyaW5nX2xpc3RfaW5zZXJ0KHBhdGgsIGVudHJpZXMpOworCWl0ZW0tPnV0aWwgPSBlOworCXJldHVybiBlOworfQorCisvKgorICogQ3JlYXRlIGEgZGljdGlvbmFyeSBtYXBwaW5nIGZpbGUgbmFtZXMgdG8gc3RhZ2VfZGF0YSBvYmplY3RzLiBUaGUKKyAqIGRpY3Rpb25hcnkgY29udGFpbnMgb25lIGVudHJ5IGZvciBldmVyeSBwYXRoIHdpdGggYSBub24temVybyBzdGFnZSBlbnRyeS4KKyAqLworc3RhdGljIHN0cnVjdCBzdHJpbmdfbGlzdCAqZ2V0X3VubWVyZ2VkKHZvaWQpCit7CisJc3RydWN0IHN0cmluZ19saXN0ICp1bm1lcmdlZCA9IHhjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBzdHJpbmdfbGlzdCkpOworCWludCBpOworCisJdW5tZXJnZWQtPnN0cmR1cF9zdHJpbmdzID0gMTsKKworCWZvciAoaSA9IDA7IGkgPCBhY3RpdmVfbnI7IGkrKykgeworCQlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXRlbTsKKwkJc3RydWN0IHN0YWdlX2RhdGEgKmU7CisJCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBhY3RpdmVfY2FjaGVbaV07CisJCWlmICghY2Vfc3RhZ2UoY2UpKQorCQkJY29udGludWU7CisKKwkJaXRlbSA9IHN0cmluZ19saXN0X2xvb2t1cChjZS0+bmFtZSwgdW5tZXJnZWQpOworCQlpZiAoIWl0ZW0pIHsKKwkJCWl0ZW0gPSBzdHJpbmdfbGlzdF9pbnNlcnQoY2UtPm5hbWUsIHVubWVyZ2VkKTsKKwkJCWl0ZW0tPnV0aWwgPSB4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3Qgc3RhZ2VfZGF0YSkpOworCQl9CisJCWUgPSBpdGVtLT51dGlsOworCQllLT5zdGFnZXNbY2Vfc3RhZ2UoY2UpXS5tb2RlID0gY2UtPmNlX21vZGU7CisJCWhhc2hjcHkoZS0+c3RhZ2VzW2NlX3N0YWdlKGNlKV0uc2hhLCBjZS0+c2hhMSk7CisJfQorCisJcmV0dXJuIHVubWVyZ2VkOworfQorCitzdHJ1Y3QgcmVuYW1lCit7CisJc3RydWN0IGRpZmZfZmlsZXBhaXIgKnBhaXI7CisJc3RydWN0IHN0YWdlX2RhdGEgKnNyY19lbnRyeTsKKwlzdHJ1Y3Qgc3RhZ2VfZGF0YSAqZHN0X2VudHJ5OworCXVuc2lnbmVkIHByb2Nlc3NlZDoxOworfTsKKworLyoKKyAqIEdldCBpbmZvcm1hdGlvbiBvZiBhbGwgcmVuYW1lcyB3aGljaCBvY2N1cnJlZCBiZXR3ZWVuICdvX3RyZWUnIGFuZAorICogJ3RyZWUnLiBXZSBuZWVkIHRoZSB0aHJlZSB0cmVlcyBpbiB0aGUgbWVyZ2UgKCdvX3RyZWUnLCAnYV90cmVlJyBhbmQKKyAqICdiX3RyZWUnKSB0byBiZSBhYmxlIHRvIGFzc29jaWF0ZSB0aGUgY29ycmVjdCBjYWNoZSBlbnRyaWVzIHdpdGgKKyAqIHRoZSByZW5hbWUgaW5mb3JtYXRpb24uICd0cmVlJyBpcyBhbHdheXMgZXF1YWwgdG8gZWl0aGVyIGFfdHJlZSBvciBiX3RyZWUuCisgKi8KK3N0YXRpYyBzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmdldF9yZW5hbWVzKHN0cnVjdCBtZXJnZV9vcHRpb25zICpvLAorCQkJCSAgICAgICBzdHJ1Y3QgdHJlZSAqdHJlZSwKKwkJCQkgICAgICAgc3RydWN0IHRyZWUgKm9fdHJlZSwKKwkJCQkgICAgICAgc3RydWN0IHRyZWUgKmFfdHJlZSwKKwkJCQkgICAgICAgc3RydWN0IHRyZWUgKmJfdHJlZSwKKwkJCQkgICAgICAgc3RydWN0IHN0cmluZ19saXN0ICplbnRyaWVzKQoreworCWludCBpOworCXN0cnVjdCBzdHJpbmdfbGlzdCAqcmVuYW1lczsKKwlzdHJ1Y3QgZGlmZl9vcHRpb25zIG9wdHM7CisKKwlyZW5hbWVzID0geGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IHN0cmluZ19saXN0KSk7CisJZGlmZl9zZXR1cCgmb3B0cyk7CisJRElGRl9PUFRfU0VUKCZvcHRzLCBSRUNVUlNJVkUpOworCW9wdHMuZGV0ZWN0X3JlbmFtZSA9IERJRkZfREVURUNUX1JFTkFNRTsKKwlvcHRzLnJlbmFtZV9saW1pdCA9IG8tPm1lcmdlX3JlbmFtZV9saW1pdCA+PSAwID8gby0+bWVyZ2VfcmVuYW1lX2xpbWl0IDoKKwkJCSAgICBvLT5kaWZmX3JlbmFtZV9saW1pdCA+PSAwID8gby0+ZGlmZl9yZW5hbWVfbGltaXQgOgorCQkJICAgIDUwMDsKKwlvcHRzLndhcm5fb25fdG9vX2xhcmdlX3JlbmFtZSA9IDE7CisJb3B0cy5vdXRwdXRfZm9ybWF0ID0gRElGRl9GT1JNQVRfTk9fT1VUUFVUOworCWlmIChkaWZmX3NldHVwX2RvbmUoJm9wdHMpIDwgMCkKKwkJZGllKCJkaWZmIHNldHVwIGZhaWxlZCIpOworCWRpZmZfdHJlZV9zaGExKG9fdHJlZS0+b2JqZWN0LnNoYTEsIHRyZWUtPm9iamVjdC5zaGExLCAiIiwgJm9wdHMpOworCWRpZmZjb3JlX3N0ZCgmb3B0cyk7CisJZm9yIChpID0gMDsgaSA8IGRpZmZfcXVldWVkX2RpZmYubnI7ICsraSkgeworCQlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXRlbTsKKwkJc3RydWN0IHJlbmFtZSAqcmU7CisJCXN0cnVjdCBkaWZmX2ZpbGVwYWlyICpwYWlyID0gZGlmZl9xdWV1ZWRfZGlmZi5xdWV1ZVtpXTsKKwkJaWYgKHBhaXItPnN0YXR1cyAhPSAnUicpIHsKKwkJCWRpZmZfZnJlZV9maWxlcGFpcihwYWlyKTsKKwkJCWNvbnRpbnVlOworCQl9CisJCXJlID0geG1hbGxvYyhzaXplb2YoKnJlKSk7CisJCXJlLT5wcm9jZXNzZWQgPSAwOworCQlyZS0+cGFpciA9IHBhaXI7CisJCWl0ZW0gPSBzdHJpbmdfbGlzdF9sb29rdXAocmUtPnBhaXItPm9uZS0+cGF0aCwgZW50cmllcyk7CisJCWlmICghaXRlbSkKKwkJCXJlLT5zcmNfZW50cnkgPSBpbnNlcnRfc3RhZ2VfZGF0YShyZS0+cGFpci0+b25lLT5wYXRoLAorCQkJCQlvX3RyZWUsIGFfdHJlZSwgYl90cmVlLCBlbnRyaWVzKTsKKwkJZWxzZQorCQkJcmUtPnNyY19lbnRyeSA9IGl0ZW0tPnV0aWw7CisKKwkJaXRlbSA9IHN0cmluZ19saXN0X2xvb2t1cChyZS0+cGFpci0+dHdvLT5wYXRoLCBlbnRyaWVzKTsKKwkJaWYgKCFpdGVtKQorCQkJcmUtPmRzdF9lbnRyeSA9IGluc2VydF9zdGFnZV9kYXRhKHJlLT5wYWlyLT50d28tPnBhdGgsCisJCQkJCW9fdHJlZSwgYV90cmVlLCBiX3RyZWUsIGVudHJpZXMpOworCQllbHNlCisJCQlyZS0+ZHN0X2VudHJ5ID0gaXRlbS0+dXRpbDsKKwkJaXRlbSA9IHN0cmluZ19saXN0X2luc2VydChwYWlyLT5vbmUtPnBhdGgsIHJlbmFtZXMpOworCQlpdGVtLT51dGlsID0gcmU7CisJfQorCW9wdHMub3V0cHV0X2Zvcm1hdCA9IERJRkZfRk9STUFUX05PX09VVFBVVDsKKwlkaWZmX3F1ZXVlZF9kaWZmLm5yID0gMDsKKwlkaWZmX2ZsdXNoKCZvcHRzKTsKKwlyZXR1cm4gcmVuYW1lczsKK30KKworc3RhdGljIGludCB1cGRhdGVfc3RhZ2VzKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBkaWZmX2ZpbGVzcGVjICpvLAorCQkJIHN0cnVjdCBkaWZmX2ZpbGVzcGVjICphLCBzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqYiwKKwkJCSBpbnQgY2xlYXIpCit7CisJaW50IG9wdGlvbnMgPSBBRERfQ0FDSEVfT0tfVE9fQUREIHwgQUREX0NBQ0hFX09LX1RPX1JFUExBQ0U7CisJaWYgKGNsZWFyKQorCQlpZiAocmVtb3ZlX2ZpbGVfZnJvbV9jYWNoZShwYXRoKSkKKwkJCXJldHVybiAtMTsKKwlpZiAobykKKwkJaWYgKGFkZF9jYWNoZWluZm8oby0+bW9kZSwgby0+c2hhMSwgcGF0aCwgMSwgMCwgb3B0aW9ucykpCisJCQlyZXR1cm4gLTE7CisJaWYgKGEpCisJCWlmIChhZGRfY2FjaGVpbmZvKGEtPm1vZGUsIGEtPnNoYTEsIHBhdGgsIDIsIDAsIG9wdGlvbnMpKQorCQkJcmV0dXJuIC0xOworCWlmIChiKQorCQlpZiAoYWRkX2NhY2hlaW5mbyhiLT5tb2RlLCBiLT5zaGExLCBwYXRoLCAzLCAwLCBvcHRpb25zKSkKKwkJCXJldHVybiAtMTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCByZW1vdmVfZmlsZShzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyAqbywgaW50IGNsZWFuLAorCQkgICAgICAgY29uc3QgY2hhciAqcGF0aCwgaW50IG5vX3dkKQoreworCWludCB1cGRhdGVfY2FjaGUgPSBvLT5jYWxsX2RlcHRoIHx8IGNsZWFuOworCWludCB1cGRhdGVfd29ya2luZ19kaXJlY3RvcnkgPSAhby0+Y2FsbF9kZXB0aCAmJiAhbm9fd2Q7CisKKwlpZiAodXBkYXRlX2NhY2hlKSB7CisJCWlmIChyZW1vdmVfZmlsZV9mcm9tX2NhY2hlKHBhdGgpKQorCQkJcmV0dXJuIC0xOworCX0KKwlpZiAodXBkYXRlX3dvcmtpbmdfZGlyZWN0b3J5KSB7CisJCWlmIChyZW1vdmVfcGF0aChwYXRoKSAmJiBlcnJubyAhPSBFTk9FTlQpCisJCQlyZXR1cm4gLTE7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgY2hhciAqdW5pcXVlX3BhdGgoc3RydWN0IG1lcmdlX29wdGlvbnMgKm8sIGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKmJyYW5jaCkKK3sKKwljaGFyICpuZXdwYXRoID0geG1hbGxvYyhzdHJsZW4ocGF0aCkgKyAxICsgc3RybGVuKGJyYW5jaCkgKyA4ICsgMSk7CisJaW50IHN1ZmZpeCA9IDA7CisJc3RydWN0IHN0YXQgc3Q7CisJY2hhciAqcCA9IG5ld3BhdGggKyBzdHJsZW4ocGF0aCk7CisJc3RyY3B5KG5ld3BhdGgsIHBhdGgpOworCSoocCsrKSA9ICd+JzsKKwlzdHJjcHkocCwgYnJhbmNoKTsKKwlmb3IgKDsgKnA7ICsrcCkKKwkJaWYgKCcvJyA9PSAqcCkKKwkJCSpwID0gJ18nOworCXdoaWxlIChzdHJpbmdfbGlzdF9oYXNfc3RyaW5nKCZvLT5jdXJyZW50X2ZpbGVfc2V0LCBuZXdwYXRoKSB8fAorCSAgICAgICBzdHJpbmdfbGlzdF9oYXNfc3RyaW5nKCZvLT5jdXJyZW50X2RpcmVjdG9yeV9zZXQsIG5ld3BhdGgpIHx8CisJICAgICAgIGxzdGF0KG5ld3BhdGgsICZzdCkgPT0gMCkKKwkJc3ByaW50ZihwLCAiXyVkIiwgc3VmZml4KyspOworCisJc3RyaW5nX2xpc3RfaW5zZXJ0KG5ld3BhdGgsICZvLT5jdXJyZW50X2ZpbGVfc2V0KTsKKwlyZXR1cm4gbmV3cGF0aDsKK30KKworc3RhdGljIHZvaWQgZmx1c2hfYnVmZmVyKGludCBmZCwgY29uc3QgY2hhciAqYnVmLCB1bnNpZ25lZCBsb25nIHNpemUpCit7CisJd2hpbGUgKHNpemUgPiAwKSB7CisJCWxvbmcgcmV0ID0gd3JpdGVfaW5fZnVsbChmZCwgYnVmLCBzaXplKTsKKwkJaWYgKHJldCA8IDApIHsKKwkJCS8qIElnbm9yZSBlcGlwZSAqLworCQkJaWYgKGVycm5vID09IEVQSVBFKQorCQkJCWJyZWFrOworCQkJZGllKCJtZXJnZS1yZWN1cnNpdmU6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKwkJfSBlbHNlIGlmICghcmV0KSB7CisJCQlkaWUoIm1lcmdlLXJlY3Vyc2l2ZTogZGlzayBmdWxsPyIpOworCQl9CisJCXNpemUgLT0gcmV0OworCQlidWYgKz0gcmV0OworCX0KK30KKworc3RhdGljIGludCB3b3VsZF9sb3NlX3VudHJhY2tlZChjb25zdCBjaGFyICpwYXRoKQoreworCWludCBwb3MgPSBjYWNoZV9uYW1lX3BvcyhwYXRoLCBzdHJsZW4ocGF0aCkpOworCisJaWYgKHBvcyA8IDApCisJCXBvcyA9IC0xIC0gcG9zOworCXdoaWxlIChwb3MgPCBhY3RpdmVfbnIgJiYKKwkgICAgICAgIXN0cmNtcChwYXRoLCBhY3RpdmVfY2FjaGVbcG9zXS0+bmFtZSkpIHsKKwkJLyoKKwkJICogSWYgc3RhZ2UgIzAsIGl0IGlzIGRlZmluaXRlbHkgdHJhY2tlZC4KKwkJICogSWYgaXQgaGFzIHN0YWdlICMyIHRoZW4gaXQgd2FzIHRyYWNrZWQKKwkJICogYmVmb3JlIHRoaXMgbWVyZ2Ugc3RhcnRlZC4gIEFsbCBvdGhlcgorCQkgKiBjYXNlcyB0aGUgcGF0aCB3YXMgbm90IHRyYWNrZWQuCisJCSAqLworCQlzd2l0Y2ggKGNlX3N0YWdlKGFjdGl2ZV9jYWNoZVtwb3NdKSkgeworCQljYXNlIDA6CisJCWNhc2UgMjoKKwkJCXJldHVybiAwOworCQl9CisJCXBvcysrOworCX0KKwlyZXR1cm4gZmlsZV9leGlzdHMocGF0aCk7Cit9CisKK3N0YXRpYyBpbnQgbWFrZV9yb29tX2Zvcl9wYXRoKGNvbnN0IGNoYXIgKnBhdGgpCit7CisJaW50IHN0YXR1czsKKwljb25zdCBjaGFyICptc2cgPSAiZmFpbGVkIHRvIGNyZWF0ZSBwYXRoICclcyclcyI7CisKKwlzdGF0dXMgPSBzYWZlX2NyZWF0ZV9sZWFkaW5nX2RpcmVjdG9yaWVzX2NvbnN0KHBhdGgpOworCWlmIChzdGF0dXMpIHsKKwkJaWYgKHN0YXR1cyA9PSAtMykgeworCQkJLyogc29tZXRoaW5nIGVsc2UgZXhpc3RzICovCisJCQllcnJvcihtc2csIHBhdGgsICI6IHBlcmhhcHMgYSBEL0YgY29uZmxpY3Q/Iik7CisJCQlyZXR1cm4gLTE7CisJCX0KKwkJZGllKG1zZywgcGF0aCwgIiIpOworCX0KKworCS8qCisJICogRG8gbm90IHVubGluayBhIGZpbGUgaW4gdGhlIHdvcmsgdHJlZSBpZiB3ZSBhcmUgbm90CisJICogdHJhY2tpbmcgaXQuCisJICovCisJaWYgKHdvdWxkX2xvc2VfdW50cmFja2VkKHBhdGgpKQorCQlyZXR1cm4gZXJyb3IoInJlZnVzaW5nIHRvIGxvc2UgdW50cmFja2VkIGZpbGUgYXQgJyVzJyIsCisJCQkgICAgIHBhdGgpOworCisJLyogU3VjY2Vzc2Z1bCB1bmxpbmsgaXMgZ29vZC4uICovCisJaWYgKCF1bmxpbmsocGF0aCkpCisJCXJldHVybiAwOworCS8qIC4uIGFuZCBzbyBpcyBubyBleGlzdGluZyBmaWxlICovCisJaWYgKGVycm5vID09IEVOT0VOVCkKKwkJcmV0dXJuIDA7CisJLyogLi4gYnV0IG5vdCBzb21lIG90aGVyIGVycm9yICh3aG8gcmVhbGx5IGNhcmVzIHdoYXQ/KSAqLworCXJldHVybiBlcnJvcihtc2csIHBhdGgsICI6IHBlcmhhcHMgYSBEL0YgY29uZmxpY3Q/Iik7Cit9CisKK3N0YXRpYyB2b2lkIHVwZGF0ZV9maWxlX2ZsYWdzKHN0cnVjdCBtZXJnZV9vcHRpb25zICpvLAorCQkJICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhLAorCQkJICAgICAgdW5zaWduZWQgbW9kZSwKKwkJCSAgICAgIGNvbnN0IGNoYXIgKnBhdGgsCisJCQkgICAgICBpbnQgdXBkYXRlX2NhY2hlLAorCQkJICAgICAgaW50IHVwZGF0ZV93ZCkKK3sKKwlpZiAoby0+Y2FsbF9kZXB0aCkKKwkJdXBkYXRlX3dkID0gMDsKKworCWlmICh1cGRhdGVfd2QpIHsKKwkJZW51bSBvYmplY3RfdHlwZSB0eXBlOworCQl2b2lkICpidWY7CisJCXVuc2lnbmVkIGxvbmcgc2l6ZTsKKworCQlpZiAoU19JU0dJVExJTksobW9kZSkpCisJCQlkaWUoImNhbm5vdCByZWFkIG9iamVjdCAlcyAnJXMnOiBJdCBpcyBhIHN1Ym1vZHVsZSEiLAorCQkJICAgIHNoYTFfdG9faGV4KHNoYSksIHBhdGgpOworCisJCWJ1ZiA9IHJlYWRfc2hhMV9maWxlKHNoYSwgJnR5cGUsICZzaXplKTsKKwkJaWYgKCFidWYpCisJCQlkaWUoImNhbm5vdCByZWFkIG9iamVjdCAlcyAnJXMnIiwgc2hhMV90b19oZXgoc2hhKSwgcGF0aCk7CisJCWlmICh0eXBlICE9IE9CSl9CTE9CKQorCQkJZGllKCJibG9iIGV4cGVjdGVkIGZvciAlcyAnJXMnIiwgc2hhMV90b19oZXgoc2hhKSwgcGF0aCk7CisJCWlmIChTX0lTUkVHKG1vZGUpKSB7CisJCQlzdHJ1Y3Qgc3RyYnVmIHN0cmJ1ZiA9IFNUUkJVRl9JTklUOworCQkJaWYgKGNvbnZlcnRfdG9fd29ya2luZ190cmVlKHBhdGgsIGJ1Ziwgc2l6ZSwgJnN0cmJ1ZikpIHsKKwkJCQlmcmVlKGJ1Zik7CisJCQkJc2l6ZSA9IHN0cmJ1Zi5sZW47CisJCQkJYnVmID0gc3RyYnVmX2RldGFjaCgmc3RyYnVmLCBOVUxMKTsKKwkJCX0KKwkJfQorCisJCWlmIChtYWtlX3Jvb21fZm9yX3BhdGgocGF0aCkgPCAwKSB7CisJCQl1cGRhdGVfd2QgPSAwOworCQkJZnJlZShidWYpOworCQkJZ290byB1cGRhdGVfaW5kZXg7CisJCX0KKwkJaWYgKFNfSVNSRUcobW9kZSkgfHwgKCFoYXNfc3ltbGlua3MgJiYgU19JU0xOSyhtb2RlKSkpIHsKKwkJCWludCBmZDsKKwkJCWlmIChtb2RlICYgMDEwMCkKKwkJCQltb2RlID0gMDc3NzsKKwkJCWVsc2UKKwkJCQltb2RlID0gMDY2NjsKKwkJCWZkID0gb3BlbihwYXRoLCBPX1dST05MWSB8IE9fVFJVTkMgfCBPX0NSRUFULCBtb2RlKTsKKwkJCWlmIChmZCA8IDApCisJCQkJZGllKCJmYWlsZWQgdG8gb3BlbiAlczogJXMiLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQkJZmx1c2hfYnVmZmVyKGZkLCBidWYsIHNpemUpOworCQkJY2xvc2UoZmQpOworCQl9IGVsc2UgaWYgKFNfSVNMTksobW9kZSkpIHsKKwkJCWNoYXIgKmxuayA9IHhtZW1kdXB6KGJ1Ziwgc2l6ZSk7CisJCQlzYWZlX2NyZWF0ZV9sZWFkaW5nX2RpcmVjdG9yaWVzX2NvbnN0KHBhdGgpOworCQkJdW5saW5rKHBhdGgpOworCQkJaWYgKHN5bWxpbmsobG5rLCBwYXRoKSkKKwkJCQlkaWUoImZhaWxlZCB0byBzeW1saW5rICVzOiAlcyIsIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJCQlmcmVlKGxuayk7CisJCX0gZWxzZQorCQkJZGllKCJkbyBub3Qga25vdyB3aGF0IHRvIGRvIHdpdGggJTA2byAlcyAnJXMnIiwKKwkJCSAgICBtb2RlLCBzaGExX3RvX2hleChzaGEpLCBwYXRoKTsKKwkJZnJlZShidWYpOworCX0KKyB1cGRhdGVfaW5kZXg6CisJaWYgKHVwZGF0ZV9jYWNoZSkKKwkJYWRkX2NhY2hlaW5mbyhtb2RlLCBzaGEsIHBhdGgsIDAsIHVwZGF0ZV93ZCwgQUREX0NBQ0hFX09LX1RPX0FERCk7Cit9CisKK3N0YXRpYyB2b2lkIHVwZGF0ZV9maWxlKHN0cnVjdCBtZXJnZV9vcHRpb25zICpvLAorCQkJaW50IGNsZWFuLAorCQkJY29uc3QgdW5zaWduZWQgY2hhciAqc2hhLAorCQkJdW5zaWduZWQgbW9kZSwKKwkJCWNvbnN0IGNoYXIgKnBhdGgpCit7CisJdXBkYXRlX2ZpbGVfZmxhZ3Mobywgc2hhLCBtb2RlLCBwYXRoLCBvLT5jYWxsX2RlcHRoIHx8IGNsZWFuLCAhby0+Y2FsbF9kZXB0aCk7Cit9CisKKy8qIExvdyBsZXZlbCBmaWxlIG1lcmdpbmcsIHVwZGF0ZSBhbmQgcmVtb3ZhbCAqLworCitzdHJ1Y3QgbWVyZ2VfZmlsZV9pbmZvCit7CisJdW5zaWduZWQgY2hhciBzaGFbMjBdOworCXVuc2lnbmVkIG1vZGU7CisJdW5zaWduZWQgY2xlYW46MSwKKwkJIG1lcmdlOjE7Cit9OworCitzdGF0aWMgdm9pZCBmaWxsX21tKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIG1tZmlsZV90ICptbSkKK3sKKwl1bnNpZ25lZCBsb25nIHNpemU7CisJZW51bSBvYmplY3RfdHlwZSB0eXBlOworCisJaWYgKCFoYXNoY21wKHNoYTEsIG51bGxfc2hhMSkpIHsKKwkJbW0tPnB0ciA9IHhzdHJkdXAoIiIpOworCQltbS0+c2l6ZSA9IDA7CisJCXJldHVybjsKKwl9CisKKwltbS0+cHRyID0gcmVhZF9zaGExX2ZpbGUoc2hhMSwgJnR5cGUsICZzaXplKTsKKwlpZiAoIW1tLT5wdHIgfHwgdHlwZSAhPSBPQkpfQkxPQikKKwkJZGllKCJ1bmFibGUgdG8gcmVhZCBibG9iIG9iamVjdCAlcyIsIHNoYTFfdG9faGV4KHNoYTEpKTsKKwltbS0+c2l6ZSA9IHNpemU7Cit9CisKK3N0YXRpYyBpbnQgbWVyZ2VfM3dheShzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyAqbywKKwkJICAgICAgbW1idWZmZXJfdCAqcmVzdWx0X2J1ZiwKKwkJICAgICAgc3RydWN0IGRpZmZfZmlsZXNwZWMgKm9uZSwKKwkJICAgICAgc3RydWN0IGRpZmZfZmlsZXNwZWMgKmEsCisJCSAgICAgIHN0cnVjdCBkaWZmX2ZpbGVzcGVjICpiLAorCQkgICAgICBjb25zdCBjaGFyICpicmFuY2gxLAorCQkgICAgICBjb25zdCBjaGFyICpicmFuY2gyKQoreworCW1tZmlsZV90IG9yaWcsIHNyYzEsIHNyYzI7CisJY2hhciAqbmFtZTEsICpuYW1lMjsKKwlpbnQgbWVyZ2Vfc3RhdHVzOworCisJbmFtZTEgPSB4c3RyZHVwKG1rcGF0aCgiJXM6JXMiLCBicmFuY2gxLCBhLT5wYXRoKSk7CisJbmFtZTIgPSB4c3RyZHVwKG1rcGF0aCgiJXM6JXMiLCBicmFuY2gyLCBiLT5wYXRoKSk7CisKKwlmaWxsX21tKG9uZS0+c2hhMSwgJm9yaWcpOworCWZpbGxfbW0oYS0+c2hhMSwgJnNyYzEpOworCWZpbGxfbW0oYi0+c2hhMSwgJnNyYzIpOworCisJbWVyZ2Vfc3RhdHVzID0gbGxfbWVyZ2UocmVzdWx0X2J1ZiwgYS0+cGF0aCwgJm9yaWcsCisJCQkJJnNyYzEsIG5hbWUxLCAmc3JjMiwgbmFtZTIsCisJCQkJby0+Y2FsbF9kZXB0aCk7CisKKwlmcmVlKG5hbWUxKTsKKwlmcmVlKG5hbWUyKTsKKwlmcmVlKG9yaWcucHRyKTsKKwlmcmVlKHNyYzEucHRyKTsKKwlmcmVlKHNyYzIucHRyKTsKKwlyZXR1cm4gbWVyZ2Vfc3RhdHVzOworfQorCitzdGF0aWMgc3RydWN0IG1lcmdlX2ZpbGVfaW5mbyBtZXJnZV9maWxlKHN0cnVjdCBtZXJnZV9vcHRpb25zICpvLAorCQkJCSAgICAgICAgIHN0cnVjdCBkaWZmX2ZpbGVzcGVjICpvbmUsCisJCQkJCSBzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqYSwKKwkJCQkJIHN0cnVjdCBkaWZmX2ZpbGVzcGVjICpiLAorCQkJCQkgY29uc3QgY2hhciAqYnJhbmNoMSwKKwkJCQkJIGNvbnN0IGNoYXIgKmJyYW5jaDIpCit7CisJc3RydWN0IG1lcmdlX2ZpbGVfaW5mbyByZXN1bHQ7CisJcmVzdWx0Lm1lcmdlID0gMDsKKwlyZXN1bHQuY2xlYW4gPSAxOworCisJaWYgKChTX0lGTVQgJiBhLT5tb2RlKSAhPSAoU19JRk1UICYgYi0+bW9kZSkpIHsKKwkJcmVzdWx0LmNsZWFuID0gMDsKKwkJaWYgKFNfSVNSRUcoYS0+bW9kZSkpIHsKKwkJCXJlc3VsdC5tb2RlID0gYS0+bW9kZTsKKwkJCWhhc2hjcHkocmVzdWx0LnNoYSwgYS0+c2hhMSk7CisJCX0gZWxzZSB7CisJCQlyZXN1bHQubW9kZSA9IGItPm1vZGU7CisJCQloYXNoY3B5KHJlc3VsdC5zaGEsIGItPnNoYTEpOworCQl9CisJfSBlbHNlIHsKKwkJaWYgKCFzaGFfZXEoYS0+c2hhMSwgb25lLT5zaGExKSAmJiAhc2hhX2VxKGItPnNoYTEsIG9uZS0+c2hhMSkpCisJCQlyZXN1bHQubWVyZ2UgPSAxOworCisJCS8qCisJCSAqIE1lcmdlIG1vZGVzCisJCSAqLworCQlpZiAoYS0+bW9kZSA9PSBiLT5tb2RlIHx8IGEtPm1vZGUgPT0gb25lLT5tb2RlKQorCQkJcmVzdWx0Lm1vZGUgPSBiLT5tb2RlOworCQllbHNlIHsKKwkJCXJlc3VsdC5tb2RlID0gYS0+bW9kZTsKKwkJCWlmIChiLT5tb2RlICE9IG9uZS0+bW9kZSkgeworCQkJCXJlc3VsdC5jbGVhbiA9IDA7CisJCQkJcmVzdWx0Lm1lcmdlID0gMTsKKwkJCX0KKwkJfQorCisJCWlmIChzaGFfZXEoYS0+c2hhMSwgYi0+c2hhMSkgfHwgc2hhX2VxKGEtPnNoYTEsIG9uZS0+c2hhMSkpCisJCQloYXNoY3B5KHJlc3VsdC5zaGEsIGItPnNoYTEpOworCQllbHNlIGlmIChzaGFfZXEoYi0+c2hhMSwgb25lLT5zaGExKSkKKwkJCWhhc2hjcHkocmVzdWx0LnNoYSwgYS0+c2hhMSk7CisJCWVsc2UgaWYgKFNfSVNSRUcoYS0+bW9kZSkpIHsKKwkJCW1tYnVmZmVyX3QgcmVzdWx0X2J1ZjsKKwkJCWludCBtZXJnZV9zdGF0dXM7CisKKwkJCW1lcmdlX3N0YXR1cyA9IG1lcmdlXzN3YXkobywgJnJlc3VsdF9idWYsIG9uZSwgYSwgYiwKKwkJCQkJCSAgYnJhbmNoMSwgYnJhbmNoMik7CisKKwkJCWlmICgobWVyZ2Vfc3RhdHVzIDwgMCkgfHwgIXJlc3VsdF9idWYucHRyKQorCQkJCWRpZSgiRmFpbGVkIHRvIGV4ZWN1dGUgaW50ZXJuYWwgbWVyZ2UiKTsKKworCQkJaWYgKHdyaXRlX3NoYTFfZmlsZShyZXN1bHRfYnVmLnB0ciwgcmVzdWx0X2J1Zi5zaXplLAorCQkJCQkgICAgYmxvYl90eXBlLCByZXN1bHQuc2hhKSkKKwkJCQlkaWUoIlVuYWJsZSB0byBhZGQgJXMgdG8gZGF0YWJhc2UiLAorCQkJCSAgICBhLT5wYXRoKTsKKworCQkJZnJlZShyZXN1bHRfYnVmLnB0cik7CisJCQlyZXN1bHQuY2xlYW4gPSAobWVyZ2Vfc3RhdHVzID09IDApOworCQl9IGVsc2UgaWYgKFNfSVNHSVRMSU5LKGEtPm1vZGUpKSB7CisJCQlyZXN1bHQuY2xlYW4gPSAwOworCQkJaGFzaGNweShyZXN1bHQuc2hhLCBhLT5zaGExKTsKKwkJfSBlbHNlIGlmIChTX0lTTE5LKGEtPm1vZGUpKSB7CisJCQloYXNoY3B5KHJlc3VsdC5zaGEsIGEtPnNoYTEpOworCisJCQlpZiAoIXNoYV9lcShhLT5zaGExLCBiLT5zaGExKSkKKwkJCQlyZXN1bHQuY2xlYW4gPSAwOworCQl9IGVsc2UgeworCQkJZGllKCJ1bnN1cHBvcnRlZCBvYmplY3QgdHlwZSBpbiB0aGUgdHJlZSIpOworCQl9CisJfQorCisJcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQgY29uZmxpY3RfcmVuYW1lX3JlbmFtZShzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyAqbywKKwkJCQkgICBzdHJ1Y3QgcmVuYW1lICpyZW4xLAorCQkJCSAgIGNvbnN0IGNoYXIgKmJyYW5jaDEsCisJCQkJICAgc3RydWN0IHJlbmFtZSAqcmVuMiwKKwkJCQkgICBjb25zdCBjaGFyICpicmFuY2gyKQoreworCWNoYXIgKmRlbFsyXTsKKwlpbnQgZGVscCA9IDA7CisJY29uc3QgY2hhciAqcmVuMV9kc3QgPSByZW4xLT5wYWlyLT50d28tPnBhdGg7CisJY29uc3QgY2hhciAqcmVuMl9kc3QgPSByZW4yLT5wYWlyLT50d28tPnBhdGg7CisJY29uc3QgY2hhciAqZHN0X25hbWUxID0gcmVuMV9kc3Q7CisJY29uc3QgY2hhciAqZHN0X25hbWUyID0gcmVuMl9kc3Q7CisJaWYgKHN0cmluZ19saXN0X2hhc19zdHJpbmcoJm8tPmN1cnJlbnRfZGlyZWN0b3J5X3NldCwgcmVuMV9kc3QpKSB7CisJCWRzdF9uYW1lMSA9IGRlbFtkZWxwKytdID0gdW5pcXVlX3BhdGgobywgcmVuMV9kc3QsIGJyYW5jaDEpOworCQlvdXRwdXQobywgMSwgIiVzIGlzIGEgZGlyZWN0b3J5IGluICVzIGFkZGluZyBhcyAlcyBpbnN0ZWFkIiwKKwkJICAgICAgIHJlbjFfZHN0LCBicmFuY2gyLCBkc3RfbmFtZTEpOworCQlyZW1vdmVfZmlsZShvLCAwLCByZW4xX2RzdCwgMCk7CisJfQorCWlmIChzdHJpbmdfbGlzdF9oYXNfc3RyaW5nKCZvLT5jdXJyZW50X2RpcmVjdG9yeV9zZXQsIHJlbjJfZHN0KSkgeworCQlkc3RfbmFtZTIgPSBkZWxbZGVscCsrXSA9IHVuaXF1ZV9wYXRoKG8sIHJlbjJfZHN0LCBicmFuY2gyKTsKKwkJb3V0cHV0KG8sIDEsICIlcyBpcyBhIGRpcmVjdG9yeSBpbiAlcyBhZGRpbmcgYXMgJXMgaW5zdGVhZCIsCisJCSAgICAgICByZW4yX2RzdCwgYnJhbmNoMSwgZHN0X25hbWUyKTsKKwkJcmVtb3ZlX2ZpbGUobywgMCwgcmVuMl9kc3QsIDApOworCX0KKwlpZiAoby0+Y2FsbF9kZXB0aCkgeworCQlyZW1vdmVfZmlsZV9mcm9tX2NhY2hlKGRzdF9uYW1lMSk7CisJCXJlbW92ZV9maWxlX2Zyb21fY2FjaGUoZHN0X25hbWUyKTsKKwkJLyoKKwkJICogVW5jb21tZW50IHRvIGxlYXZlIHRoZSBjb25mbGljdGluZyBuYW1lcyBpbiB0aGUgcmVzdWx0aW5nIHRyZWUKKwkJICoKKwkJICogdXBkYXRlX2ZpbGUobywgMCwgcmVuMS0+cGFpci0+dHdvLT5zaGExLCByZW4xLT5wYWlyLT50d28tPm1vZGUsIGRzdF9uYW1lMSk7CisJCSAqIHVwZGF0ZV9maWxlKG8sIDAsIHJlbjItPnBhaXItPnR3by0+c2hhMSwgcmVuMi0+cGFpci0+dHdvLT5tb2RlLCBkc3RfbmFtZTIpOworCQkgKi8KKwl9IGVsc2UgeworCQl1cGRhdGVfc3RhZ2VzKGRzdF9uYW1lMSwgTlVMTCwgcmVuMS0+cGFpci0+dHdvLCBOVUxMLCAxKTsKKwkJdXBkYXRlX3N0YWdlcyhkc3RfbmFtZTIsIE5VTEwsIE5VTEwsIHJlbjItPnBhaXItPnR3bywgMSk7CisJfQorCXdoaWxlIChkZWxwLS0pCisJCWZyZWUoZGVsW2RlbHBdKTsKK30KKworc3RhdGljIHZvaWQgY29uZmxpY3RfcmVuYW1lX2RpcihzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyAqbywKKwkJCQlzdHJ1Y3QgcmVuYW1lICpyZW4xLAorCQkJCWNvbnN0IGNoYXIgKmJyYW5jaDEpCit7CisJY2hhciAqbmV3X3BhdGggPSB1bmlxdWVfcGF0aChvLCByZW4xLT5wYWlyLT50d28tPnBhdGgsIGJyYW5jaDEpOworCW91dHB1dChvLCAxLCAiUmVuYW1pbmcgJXMgdG8gJXMgaW5zdGVhZCIsIHJlbjEtPnBhaXItPm9uZS0+cGF0aCwgbmV3X3BhdGgpOworCXJlbW92ZV9maWxlKG8sIDAsIHJlbjEtPnBhaXItPnR3by0+cGF0aCwgMCk7CisJdXBkYXRlX2ZpbGUobywgMCwgcmVuMS0+cGFpci0+dHdvLT5zaGExLCByZW4xLT5wYWlyLT50d28tPm1vZGUsIG5ld19wYXRoKTsKKwlmcmVlKG5ld19wYXRoKTsKK30KKworc3RhdGljIHZvaWQgY29uZmxpY3RfcmVuYW1lX3JlbmFtZV8yKHN0cnVjdCBtZXJnZV9vcHRpb25zICpvLAorCQkJCSAgICAgc3RydWN0IHJlbmFtZSAqcmVuMSwKKwkJCQkgICAgIGNvbnN0IGNoYXIgKmJyYW5jaDEsCisJCQkJICAgICBzdHJ1Y3QgcmVuYW1lICpyZW4yLAorCQkJCSAgICAgY29uc3QgY2hhciAqYnJhbmNoMikKK3sKKwljaGFyICpuZXdfcGF0aDEgPSB1bmlxdWVfcGF0aChvLCByZW4xLT5wYWlyLT50d28tPnBhdGgsIGJyYW5jaDEpOworCWNoYXIgKm5ld19wYXRoMiA9IHVuaXF1ZV9wYXRoKG8sIHJlbjItPnBhaXItPnR3by0+cGF0aCwgYnJhbmNoMik7CisJb3V0cHV0KG8sIDEsICJSZW5hbWluZyAlcyB0byAlcyBhbmQgJXMgdG8gJXMgaW5zdGVhZCIsCisJICAgICAgIHJlbjEtPnBhaXItPm9uZS0+cGF0aCwgbmV3X3BhdGgxLAorCSAgICAgICByZW4yLT5wYWlyLT5vbmUtPnBhdGgsIG5ld19wYXRoMik7CisJcmVtb3ZlX2ZpbGUobywgMCwgcmVuMS0+cGFpci0+dHdvLT5wYXRoLCAwKTsKKwl1cGRhdGVfZmlsZShvLCAwLCByZW4xLT5wYWlyLT50d28tPnNoYTEsIHJlbjEtPnBhaXItPnR3by0+bW9kZSwgbmV3X3BhdGgxKTsKKwl1cGRhdGVfZmlsZShvLCAwLCByZW4yLT5wYWlyLT50d28tPnNoYTEsIHJlbjItPnBhaXItPnR3by0+bW9kZSwgbmV3X3BhdGgyKTsKKwlmcmVlKG5ld19wYXRoMik7CisJZnJlZShuZXdfcGF0aDEpOworfQorCitzdGF0aWMgaW50IHByb2Nlc3NfcmVuYW1lcyhzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyAqbywKKwkJCSAgIHN0cnVjdCBzdHJpbmdfbGlzdCAqYV9yZW5hbWVzLAorCQkJICAgc3RydWN0IHN0cmluZ19saXN0ICpiX3JlbmFtZXMpCit7CisJaW50IGNsZWFuX21lcmdlID0gMSwgaSwgajsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3QgYV9ieV9kc3QgPSB7TlVMTCwgMCwgMCwgMH0sIGJfYnlfZHN0ID0ge05VTEwsIDAsIDAsIDB9OworCWNvbnN0IHN0cnVjdCByZW5hbWUgKnNyZTsKKworCWZvciAoaSA9IDA7IGkgPCBhX3JlbmFtZXMtPm5yOyBpKyspIHsKKwkJc3JlID0gYV9yZW5hbWVzLT5pdGVtc1tpXS51dGlsOworCQlzdHJpbmdfbGlzdF9pbnNlcnQoc3JlLT5wYWlyLT50d28tPnBhdGgsICZhX2J5X2RzdCktPnV0aWwKKwkJCT0gc3JlLT5kc3RfZW50cnk7CisJfQorCWZvciAoaSA9IDA7IGkgPCBiX3JlbmFtZXMtPm5yOyBpKyspIHsKKwkJc3JlID0gYl9yZW5hbWVzLT5pdGVtc1tpXS51dGlsOworCQlzdHJpbmdfbGlzdF9pbnNlcnQoc3JlLT5wYWlyLT50d28tPnBhdGgsICZiX2J5X2RzdCktPnV0aWwKKwkJCT0gc3JlLT5kc3RfZW50cnk7CisJfQorCisJZm9yIChpID0gMCwgaiA9IDA7IGkgPCBhX3JlbmFtZXMtPm5yIHx8IGogPCBiX3JlbmFtZXMtPm5yOykgeworCQlpbnQgY29tcGFyZTsKKwkJY2hhciAqc3JjOworCQlzdHJ1Y3Qgc3RyaW5nX2xpc3QgKnJlbmFtZXMxLCAqcmVuYW1lczIsICpyZW5hbWVzMkRzdDsKKwkJc3RydWN0IHJlbmFtZSAqcmVuMSA9IE5VTEwsICpyZW4yID0gTlVMTDsKKwkJY29uc3QgY2hhciAqYnJhbmNoMSwgKmJyYW5jaDI7CisJCWNvbnN0IGNoYXIgKnJlbjFfc3JjLCAqcmVuMV9kc3Q7CisKKwkJaWYgKGkgPj0gYV9yZW5hbWVzLT5ucikgeworCQkJY29tcGFyZSA9IDE7CisJCQlyZW4yID0gYl9yZW5hbWVzLT5pdGVtc1tqKytdLnV0aWw7CisJCX0gZWxzZSBpZiAoaiA+PSBiX3JlbmFtZXMtPm5yKSB7CisJCQljb21wYXJlID0gLTE7CisJCQlyZW4xID0gYV9yZW5hbWVzLT5pdGVtc1tpKytdLnV0aWw7CisJCX0gZWxzZSB7CisJCQljb21wYXJlID0gc3RyY21wKGFfcmVuYW1lcy0+aXRlbXNbaV0uc3RyaW5nLAorCQkJCQliX3JlbmFtZXMtPml0ZW1zW2pdLnN0cmluZyk7CisJCQlpZiAoY29tcGFyZSA8PSAwKQorCQkJCXJlbjEgPSBhX3JlbmFtZXMtPml0ZW1zW2krK10udXRpbDsKKwkJCWlmIChjb21wYXJlID49IDApCisJCQkJcmVuMiA9IGJfcmVuYW1lcy0+aXRlbXNbaisrXS51dGlsOworCQl9CisKKwkJLyogVE9ETzogcmVmYWN0b3IsIHNvIHRoYXQgMS8yIGFyZSBub3QgbmVlZGVkICovCisJCWlmIChyZW4xKSB7CisJCQlyZW5hbWVzMSA9IGFfcmVuYW1lczsKKwkJCXJlbmFtZXMyID0gYl9yZW5hbWVzOworCQkJcmVuYW1lczJEc3QgPSAmYl9ieV9kc3Q7CisJCQlicmFuY2gxID0gby0+YnJhbmNoMTsKKwkJCWJyYW5jaDIgPSBvLT5icmFuY2gyOworCQl9IGVsc2UgeworCQkJc3RydWN0IHJlbmFtZSAqdG1wOworCQkJcmVuYW1lczEgPSBiX3JlbmFtZXM7CisJCQlyZW5hbWVzMiA9IGFfcmVuYW1lczsKKwkJCXJlbmFtZXMyRHN0ID0gJmFfYnlfZHN0OworCQkJYnJhbmNoMSA9IG8tPmJyYW5jaDI7CisJCQlicmFuY2gyID0gby0+YnJhbmNoMTsKKwkJCXRtcCA9IHJlbjI7CisJCQlyZW4yID0gcmVuMTsKKwkJCXJlbjEgPSB0bXA7CisJCX0KKwkJc3JjID0gcmVuMS0+cGFpci0+b25lLT5wYXRoOworCisJCXJlbjEtPmRzdF9lbnRyeS0+cHJvY2Vzc2VkID0gMTsKKwkJcmVuMS0+c3JjX2VudHJ5LT5wcm9jZXNzZWQgPSAxOworCisJCWlmIChyZW4xLT5wcm9jZXNzZWQpCisJCQljb250aW51ZTsKKwkJcmVuMS0+cHJvY2Vzc2VkID0gMTsKKworCQlyZW4xX3NyYyA9IHJlbjEtPnBhaXItPm9uZS0+cGF0aDsKKwkJcmVuMV9kc3QgPSByZW4xLT5wYWlyLT50d28tPnBhdGg7CisKKwkJaWYgKHJlbjIpIHsKKwkJCWNvbnN0IGNoYXIgKnJlbjJfc3JjID0gcmVuMi0+cGFpci0+b25lLT5wYXRoOworCQkJY29uc3QgY2hhciAqcmVuMl9kc3QgPSByZW4yLT5wYWlyLT50d28tPnBhdGg7CisJCQkvKiBSZW5hbWVkIGluIDEgYW5kIHJlbmFtZWQgaW4gMiAqLworCQkJaWYgKHN0cmNtcChyZW4xX3NyYywgcmVuMl9zcmMpICE9IDApCisJCQkJZGllKCJyZW4xLnNyYyAhPSByZW4yLnNyYyIpOworCQkJcmVuMi0+ZHN0X2VudHJ5LT5wcm9jZXNzZWQgPSAxOworCQkJcmVuMi0+cHJvY2Vzc2VkID0gMTsKKwkJCWlmIChzdHJjbXAocmVuMV9kc3QsIHJlbjJfZHN0KSAhPSAwKSB7CisJCQkJY2xlYW5fbWVyZ2UgPSAwOworCQkJCW91dHB1dChvLCAxLCAiQ09ORkxJQ1QgKHJlbmFtZS9yZW5hbWUpOiAiCisJCQkJICAgICAgICJSZW5hbWUgXCIlc1wiLT5cIiVzXCIgaW4gYnJhbmNoIFwiJXNcIiAiCisJCQkJICAgICAgICJyZW5hbWUgXCIlc1wiLT5cIiVzXCIgaW4gXCIlc1wiJXMiLAorCQkJCSAgICAgICBzcmMsIHJlbjFfZHN0LCBicmFuY2gxLAorCQkJCSAgICAgICBzcmMsIHJlbjJfZHN0LCBicmFuY2gyLAorCQkJCSAgICAgICBvLT5jYWxsX2RlcHRoID8gIiAobGVmdCB1bnJlc29sdmVkKSI6ICIiKTsKKwkJCQlpZiAoby0+Y2FsbF9kZXB0aCkgeworCQkJCQlyZW1vdmVfZmlsZV9mcm9tX2NhY2hlKHNyYyk7CisJCQkJCXVwZGF0ZV9maWxlKG8sIDAsIHJlbjEtPnBhaXItPm9uZS0+c2hhMSwKKwkJCQkJCSAgICByZW4xLT5wYWlyLT5vbmUtPm1vZGUsIHNyYyk7CisJCQkJfQorCQkJCWNvbmZsaWN0X3JlbmFtZV9yZW5hbWUobywgcmVuMSwgYnJhbmNoMSwgcmVuMiwgYnJhbmNoMik7CisJCQl9IGVsc2UgeworCQkJCXN0cnVjdCBtZXJnZV9maWxlX2luZm8gbWZpOworCQkJCXJlbW92ZV9maWxlKG8sIDEsIHJlbjFfc3JjLCAxKTsKKwkJCQltZmkgPSBtZXJnZV9maWxlKG8sCisJCQkJCQkgcmVuMS0+cGFpci0+b25lLAorCQkJCQkJIHJlbjEtPnBhaXItPnR3bywKKwkJCQkJCSByZW4yLT5wYWlyLT50d28sCisJCQkJCQkgYnJhbmNoMSwKKwkJCQkJCSBicmFuY2gyKTsKKwkJCQlpZiAobWZpLm1lcmdlIHx8ICFtZmkuY2xlYW4pCisJCQkJCW91dHB1dChvLCAxLCAiUmVuYW1pbmcgJXMtPiVzIiwgc3JjLCByZW4xX2RzdCk7CisKKwkJCQlpZiAobWZpLm1lcmdlKQorCQkJCQlvdXRwdXQobywgMiwgIkF1dG8tbWVyZ2luZyAlcyIsIHJlbjFfZHN0KTsKKworCQkJCWlmICghbWZpLmNsZWFuKSB7CisJCQkJCW91dHB1dChvLCAxLCAiQ09ORkxJQ1QgKGNvbnRlbnQpOiBtZXJnZSBjb25mbGljdCBpbiAlcyIsCisJCQkJCSAgICAgICByZW4xX2RzdCk7CisJCQkJCWNsZWFuX21lcmdlID0gMDsKKworCQkJCQlpZiAoIW8tPmNhbGxfZGVwdGgpCisJCQkJCQl1cGRhdGVfc3RhZ2VzKHJlbjFfZHN0LAorCQkJCQkJCSAgICAgIHJlbjEtPnBhaXItPm9uZSwKKwkJCQkJCQkgICAgICByZW4xLT5wYWlyLT50d28sCisJCQkJCQkJICAgICAgcmVuMi0+cGFpci0+dHdvLAorCQkJCQkJCSAgICAgIDEgLyogY2xlYXIgKi8pOworCQkJCX0KKwkJCQl1cGRhdGVfZmlsZShvLCBtZmkuY2xlYW4sIG1maS5zaGEsIG1maS5tb2RlLCByZW4xX2RzdCk7CisJCQl9CisJCX0gZWxzZSB7CisJCQkvKiBSZW5hbWVkIGluIDEsIG1heWJlIGNoYW5nZWQgaW4gMiAqLworCQkJc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKml0ZW07CisJCQkvKiB3ZSBvbmx5IHVzZSBzaGExIGFuZCBtb2RlIG9mIHRoZXNlICovCisJCQlzdHJ1Y3QgZGlmZl9maWxlc3BlYyBzcmNfb3RoZXIsIGRzdF9vdGhlcjsKKwkJCWludCB0cnlfbWVyZ2UsIHN0YWdlID0gYV9yZW5hbWVzID09IHJlbmFtZXMxID8gMzogMjsKKworCQkJcmVtb3ZlX2ZpbGUobywgMSwgcmVuMV9zcmMsIG8tPmNhbGxfZGVwdGggfHwgc3RhZ2UgPT0gMyk7CisKKwkJCWhhc2hjcHkoc3JjX290aGVyLnNoYTEsIHJlbjEtPnNyY19lbnRyeS0+c3RhZ2VzW3N0YWdlXS5zaGEpOworCQkJc3JjX290aGVyLm1vZGUgPSByZW4xLT5zcmNfZW50cnktPnN0YWdlc1tzdGFnZV0ubW9kZTsKKwkJCWhhc2hjcHkoZHN0X290aGVyLnNoYTEsIHJlbjEtPmRzdF9lbnRyeS0+c3RhZ2VzW3N0YWdlXS5zaGEpOworCQkJZHN0X290aGVyLm1vZGUgPSByZW4xLT5kc3RfZW50cnktPnN0YWdlc1tzdGFnZV0ubW9kZTsKKworCQkJdHJ5X21lcmdlID0gMDsKKworCQkJaWYgKHN0cmluZ19saXN0X2hhc19zdHJpbmcoJm8tPmN1cnJlbnRfZGlyZWN0b3J5X3NldCwgcmVuMV9kc3QpKSB7CisJCQkJY2xlYW5fbWVyZ2UgPSAwOworCQkJCW91dHB1dChvLCAxLCAiQ09ORkxJQ1QgKHJlbmFtZS9kaXJlY3RvcnkpOiBSZW5hbWUgJXMtPiVzIGluICVzICIKKwkJCQkgICAgICAgIiBkaXJlY3RvcnkgJXMgYWRkZWQgaW4gJXMiLAorCQkJCSAgICAgICByZW4xX3NyYywgcmVuMV9kc3QsIGJyYW5jaDEsCisJCQkJICAgICAgIHJlbjFfZHN0LCBicmFuY2gyKTsKKwkJCQljb25mbGljdF9yZW5hbWVfZGlyKG8sIHJlbjEsIGJyYW5jaDEpOworCQkJfSBlbHNlIGlmIChzaGFfZXEoc3JjX290aGVyLnNoYTEsIG51bGxfc2hhMSkpIHsKKwkJCQljbGVhbl9tZXJnZSA9IDA7CisJCQkJb3V0cHV0KG8sIDEsICJDT05GTElDVCAocmVuYW1lL2RlbGV0ZSk6IFJlbmFtZSAlcy0+JXMgaW4gJXMgIgorCQkJCSAgICAgICAiYW5kIGRlbGV0ZWQgaW4gJXMiLAorCQkJCSAgICAgICByZW4xX3NyYywgcmVuMV9kc3QsIGJyYW5jaDEsCisJCQkJICAgICAgIGJyYW5jaDIpOworCQkJCXVwZGF0ZV9maWxlKG8sIDAsIHJlbjEtPnBhaXItPnR3by0+c2hhMSwgcmVuMS0+cGFpci0+dHdvLT5tb2RlLCByZW4xX2RzdCk7CisJCQkJdXBkYXRlX3N0YWdlcyhyZW4xX2RzdCwgTlVMTCwKKwkJCQkJCWJyYW5jaDEgPT0gby0+YnJhbmNoMSA/CisJCQkJCQlyZW4xLT5wYWlyLT50d28gOiBOVUxMLAorCQkJCQkJYnJhbmNoMSA9PSBvLT5icmFuY2gxID8KKwkJCQkJCU5VTEwgOiByZW4xLT5wYWlyLT50d28sIDEpOworCQkJfSBlbHNlIGlmICghc2hhX2VxKGRzdF9vdGhlci5zaGExLCBudWxsX3NoYTEpKSB7CisJCQkJY29uc3QgY2hhciAqbmV3X3BhdGg7CisJCQkJY2xlYW5fbWVyZ2UgPSAwOworCQkJCXRyeV9tZXJnZSA9IDE7CisJCQkJb3V0cHV0KG8sIDEsICJDT05GTElDVCAocmVuYW1lL2FkZCk6IFJlbmFtZSAlcy0+JXMgaW4gJXMuICIKKwkJCQkgICAgICAgIiVzIGFkZGVkIGluICVzIiwKKwkJCQkgICAgICAgcmVuMV9zcmMsIHJlbjFfZHN0LCBicmFuY2gxLAorCQkJCSAgICAgICByZW4xX2RzdCwgYnJhbmNoMik7CisJCQkJbmV3X3BhdGggPSB1bmlxdWVfcGF0aChvLCByZW4xX2RzdCwgYnJhbmNoMik7CisJCQkJb3V0cHV0KG8sIDEsICJBZGRpbmcgYXMgJXMgaW5zdGVhZCIsIG5ld19wYXRoKTsKKwkJCQl1cGRhdGVfZmlsZShvLCAwLCBkc3Rfb3RoZXIuc2hhMSwgZHN0X290aGVyLm1vZGUsIG5ld19wYXRoKTsKKwkJCX0gZWxzZSBpZiAoKGl0ZW0gPSBzdHJpbmdfbGlzdF9sb29rdXAocmVuMV9kc3QsIHJlbmFtZXMyRHN0KSkpIHsKKwkJCQlyZW4yID0gaXRlbS0+dXRpbDsKKwkJCQljbGVhbl9tZXJnZSA9IDA7CisJCQkJcmVuMi0+cHJvY2Vzc2VkID0gMTsKKwkJCQlvdXRwdXQobywgMSwgIkNPTkZMSUNUIChyZW5hbWUvcmVuYW1lKTogIgorCQkJCSAgICAgICAiUmVuYW1lICVzLT4lcyBpbiAlcy4gIgorCQkJCSAgICAgICAiUmVuYW1lICVzLT4lcyBpbiAlcyIsCisJCQkJICAgICAgIHJlbjFfc3JjLCByZW4xX2RzdCwgYnJhbmNoMSwKKwkJCQkgICAgICAgcmVuMi0+cGFpci0+b25lLT5wYXRoLCByZW4yLT5wYWlyLT50d28tPnBhdGgsIGJyYW5jaDIpOworCQkJCWNvbmZsaWN0X3JlbmFtZV9yZW5hbWVfMihvLCByZW4xLCBicmFuY2gxLCByZW4yLCBicmFuY2gyKTsKKwkJCX0gZWxzZQorCQkJCXRyeV9tZXJnZSA9IDE7CisKKwkJCWlmICh0cnlfbWVyZ2UpIHsKKwkJCQlzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqb25lLCAqYSwgKmI7CisJCQkJc3RydWN0IG1lcmdlX2ZpbGVfaW5mbyBtZmk7CisJCQkJc3JjX290aGVyLnBhdGggPSAoY2hhciAqKXJlbjFfc3JjOworCisJCQkJb25lID0gcmVuMS0+cGFpci0+b25lOworCQkJCWlmIChhX3JlbmFtZXMgPT0gcmVuYW1lczEpIHsKKwkJCQkJYSA9IHJlbjEtPnBhaXItPnR3bzsKKwkJCQkJYiA9ICZzcmNfb3RoZXI7CisJCQkJfSBlbHNlIHsKKwkJCQkJYiA9IHJlbjEtPnBhaXItPnR3bzsKKwkJCQkJYSA9ICZzcmNfb3RoZXI7CisJCQkJfQorCQkJCW1maSA9IG1lcmdlX2ZpbGUobywgb25lLCBhLCBiLAorCQkJCQkJby0+YnJhbmNoMSwgby0+YnJhbmNoMik7CisKKwkJCQlpZiAobWZpLmNsZWFuICYmCisJCQkJICAgIHNoYV9lcShtZmkuc2hhLCByZW4xLT5wYWlyLT50d28tPnNoYTEpICYmCisJCQkJICAgIG1maS5tb2RlID09IHJlbjEtPnBhaXItPnR3by0+bW9kZSkKKwkJCQkJLyoKKwkJCQkJICogVGhpcyBtZXNzYWdlZCBpcyBwYXJ0IG9mCisJCQkJCSAqIHQ2MDIyIHRlc3QuIElmIHlvdSBjaGFuZ2UKKwkJCQkJICogaXQgdXBkYXRlIHRoZSB0ZXN0IHRvby4KKwkJCQkJICovCisJCQkJCW91dHB1dChvLCAzLCAiU2tpcHBlZCAlcyAobWVyZ2VkIHNhbWUgYXMgZXhpc3RpbmcpIiwgcmVuMV9kc3QpOworCQkJCWVsc2UgeworCQkJCQlpZiAobWZpLm1lcmdlIHx8ICFtZmkuY2xlYW4pCisJCQkJCQlvdXRwdXQobywgMSwgIlJlbmFtaW5nICVzID0+ICVzIiwgcmVuMV9zcmMsIHJlbjFfZHN0KTsKKwkJCQkJaWYgKG1maS5tZXJnZSkKKwkJCQkJCW91dHB1dChvLCAyLCAiQXV0by1tZXJnaW5nICVzIiwgcmVuMV9kc3QpOworCQkJCQlpZiAoIW1maS5jbGVhbikgeworCQkJCQkJb3V0cHV0KG8sIDEsICJDT05GTElDVCAocmVuYW1lL21vZGlmeSk6IE1lcmdlIGNvbmZsaWN0IGluICVzIiwKKwkJCQkJCSAgICAgICByZW4xX2RzdCk7CisJCQkJCQljbGVhbl9tZXJnZSA9IDA7CisKKwkJCQkJCWlmICghby0+Y2FsbF9kZXB0aCkKKwkJCQkJCQl1cGRhdGVfc3RhZ2VzKHJlbjFfZHN0LAorCQkJCQkJCQkgICAgICBvbmUsIGEsIGIsIDEpOworCQkJCQl9CisJCQkJCXVwZGF0ZV9maWxlKG8sIG1maS5jbGVhbiwgbWZpLnNoYSwgbWZpLm1vZGUsIHJlbjFfZHN0KTsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisJc3RyaW5nX2xpc3RfY2xlYXIoJmFfYnlfZHN0LCAwKTsKKwlzdHJpbmdfbGlzdF9jbGVhcigmYl9ieV9kc3QsIDApOworCisJcmV0dXJuIGNsZWFuX21lcmdlOworfQorCitzdGF0aWMgdW5zaWduZWQgY2hhciAqc3RhZ2Vfc2hhKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYSwgdW5zaWduZWQgbW9kZSkKK3sKKwlyZXR1cm4gKGlzX251bGxfc2hhMShzaGEpIHx8IG1vZGUgPT0gMCkgPyBOVUxMOiAodW5zaWduZWQgY2hhciAqKXNoYTsKK30KKworLyogUGVyIGVudHJ5IG1lcmdlIGZ1bmN0aW9uICovCitzdGF0aWMgaW50IHByb2Nlc3NfZW50cnkoc3RydWN0IG1lcmdlX29wdGlvbnMgKm8sCisJCQkgY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YWdlX2RhdGEgKmVudHJ5KQoreworCS8qCisJcHJpbnRmKCJwcm9jZXNzaW5nIGVudHJ5LCBjbGVhbiBjYWNoZTogJXNcbiIsIGluZGV4X29ubHkgPyAieWVzIjogIm5vIik7CisJcHJpbnRfaW5kZXhfZW50cnkoIlx0cGF0aDogIiwgZW50cnkpOworCSovCisJaW50IGNsZWFuX21lcmdlID0gMTsKKwl1bnNpZ25lZCBvX21vZGUgPSBlbnRyeS0+c3RhZ2VzWzFdLm1vZGU7CisJdW5zaWduZWQgYV9tb2RlID0gZW50cnktPnN0YWdlc1syXS5tb2RlOworCXVuc2lnbmVkIGJfbW9kZSA9IGVudHJ5LT5zdGFnZXNbM10ubW9kZTsKKwl1bnNpZ25lZCBjaGFyICpvX3NoYSA9IHN0YWdlX3NoYShlbnRyeS0+c3RhZ2VzWzFdLnNoYSwgb19tb2RlKTsKKwl1bnNpZ25lZCBjaGFyICphX3NoYSA9IHN0YWdlX3NoYShlbnRyeS0+c3RhZ2VzWzJdLnNoYSwgYV9tb2RlKTsKKwl1bnNpZ25lZCBjaGFyICpiX3NoYSA9IHN0YWdlX3NoYShlbnRyeS0+c3RhZ2VzWzNdLnNoYSwgYl9tb2RlKTsKKworCWlmIChvX3NoYSAmJiAoIWFfc2hhIHx8ICFiX3NoYSkpIHsKKwkJLyogQ2FzZSBBOiBEZWxldGVkIGluIG9uZSAqLworCQlpZiAoKCFhX3NoYSAmJiAhYl9zaGEpIHx8CisJCSAgICAoc2hhX2VxKGFfc2hhLCBvX3NoYSkgJiYgIWJfc2hhKSB8fAorCQkgICAgKCFhX3NoYSAmJiBzaGFfZXEoYl9zaGEsIG9fc2hhKSkpIHsKKwkJCS8qIERlbGV0ZWQgaW4gYm90aCBvciBkZWxldGVkIGluIG9uZSBhbmQKKwkJCSAqIHVuY2hhbmdlZCBpbiB0aGUgb3RoZXIgKi8KKwkJCWlmIChhX3NoYSkKKwkJCQlvdXRwdXQobywgMiwgIlJlbW92aW5nICVzIiwgcGF0aCk7CisJCQkvKiBkbyBub3QgdG91Y2ggd29ya2luZyBmaWxlIGlmIGl0IGRpZCBub3QgZXhpc3QgKi8KKwkJCXJlbW92ZV9maWxlKG8sIDEsIHBhdGgsICFhX3NoYSk7CisJCX0gZWxzZSB7CisJCQkvKiBEZWxldGVkIGluIG9uZSBhbmQgY2hhbmdlZCBpbiB0aGUgb3RoZXIgKi8KKwkJCWNsZWFuX21lcmdlID0gMDsKKwkJCWlmICghYV9zaGEpIHsKKwkJCQlvdXRwdXQobywgMSwgIkNPTkZMSUNUIChkZWxldGUvbW9kaWZ5KTogJXMgZGVsZXRlZCBpbiAlcyAiCisJCQkJICAgICAgICJhbmQgbW9kaWZpZWQgaW4gJXMuIFZlcnNpb24gJXMgb2YgJXMgbGVmdCBpbiB0cmVlLiIsCisJCQkJICAgICAgIHBhdGgsIG8tPmJyYW5jaDEsCisJCQkJICAgICAgIG8tPmJyYW5jaDIsIG8tPmJyYW5jaDIsIHBhdGgpOworCQkJCXVwZGF0ZV9maWxlKG8sIDAsIGJfc2hhLCBiX21vZGUsIHBhdGgpOworCQkJfSBlbHNlIHsKKwkJCQlvdXRwdXQobywgMSwgIkNPTkZMSUNUIChkZWxldGUvbW9kaWZ5KTogJXMgZGVsZXRlZCBpbiAlcyAiCisJCQkJICAgICAgICJhbmQgbW9kaWZpZWQgaW4gJXMuIFZlcnNpb24gJXMgb2YgJXMgbGVmdCBpbiB0cmVlLiIsCisJCQkJICAgICAgIHBhdGgsIG8tPmJyYW5jaDIsCisJCQkJICAgICAgIG8tPmJyYW5jaDEsIG8tPmJyYW5jaDEsIHBhdGgpOworCQkJCXVwZGF0ZV9maWxlKG8sIDAsIGFfc2hhLCBhX21vZGUsIHBhdGgpOworCQkJfQorCQl9CisKKwl9IGVsc2UgaWYgKCghb19zaGEgJiYgYV9zaGEgJiYgIWJfc2hhKSB8fAorCQkgICAoIW9fc2hhICYmICFhX3NoYSAmJiBiX3NoYSkpIHsKKwkJLyogQ2FzZSBCOiBBZGRlZCBpbiBvbmUuICovCisJCWNvbnN0IGNoYXIgKmFkZF9icmFuY2g7CisJCWNvbnN0IGNoYXIgKm90aGVyX2JyYW5jaDsKKwkJdW5zaWduZWQgbW9kZTsKKwkJY29uc3QgdW5zaWduZWQgY2hhciAqc2hhOworCQljb25zdCBjaGFyICpjb25mOworCisJCWlmIChhX3NoYSkgeworCQkJYWRkX2JyYW5jaCA9IG8tPmJyYW5jaDE7CisJCQlvdGhlcl9icmFuY2ggPSBvLT5icmFuY2gyOworCQkJbW9kZSA9IGFfbW9kZTsKKwkJCXNoYSA9IGFfc2hhOworCQkJY29uZiA9ICJmaWxlL2RpcmVjdG9yeSI7CisJCX0gZWxzZSB7CisJCQlhZGRfYnJhbmNoID0gby0+YnJhbmNoMjsKKwkJCW90aGVyX2JyYW5jaCA9IG8tPmJyYW5jaDE7CisJCQltb2RlID0gYl9tb2RlOworCQkJc2hhID0gYl9zaGE7CisJCQljb25mID0gImRpcmVjdG9yeS9maWxlIjsKKwkJfQorCQlpZiAoc3RyaW5nX2xpc3RfaGFzX3N0cmluZygmby0+Y3VycmVudF9kaXJlY3Rvcnlfc2V0LCBwYXRoKSkgeworCQkJY29uc3QgY2hhciAqbmV3X3BhdGggPSB1bmlxdWVfcGF0aChvLCBwYXRoLCBhZGRfYnJhbmNoKTsKKwkJCWNsZWFuX21lcmdlID0gMDsKKwkJCW91dHB1dChvLCAxLCAiQ09ORkxJQ1QgKCVzKTogVGhlcmUgaXMgYSBkaXJlY3Rvcnkgd2l0aCBuYW1lICVzIGluICVzLiAiCisJCQkgICAgICAgIkFkZGluZyAlcyBhcyAlcyIsCisJCQkgICAgICAgY29uZiwgcGF0aCwgb3RoZXJfYnJhbmNoLCBwYXRoLCBuZXdfcGF0aCk7CisJCQlyZW1vdmVfZmlsZShvLCAwLCBwYXRoLCAwKTsKKwkJCXVwZGF0ZV9maWxlKG8sIDAsIHNoYSwgbW9kZSwgbmV3X3BhdGgpOworCQl9IGVsc2UgeworCQkJb3V0cHV0KG8sIDIsICJBZGRpbmcgJXMiLCBwYXRoKTsKKwkJCXVwZGF0ZV9maWxlKG8sIDEsIHNoYSwgbW9kZSwgcGF0aCk7CisJCX0KKwl9IGVsc2UgaWYgKGFfc2hhICYmIGJfc2hhKSB7CisJCS8qIENhc2UgQzogQWRkZWQgaW4gYm90aCAoY2hlY2sgZm9yIHNhbWUgcGVybWlzc2lvbnMpIGFuZCAqLworCQkvKiBjYXNlIEQ6IE1vZGlmaWVkIGluIGJvdGgsIGJ1dCBkaWZmZXJlbnRseS4gKi8KKwkJY29uc3QgY2hhciAqcmVhc29uID0gImNvbnRlbnQiOworCQlzdHJ1Y3QgbWVyZ2VfZmlsZV9pbmZvIG1maTsKKwkJc3RydWN0IGRpZmZfZmlsZXNwZWMgb25lLCBhLCBiOworCisJCWlmICghb19zaGEpIHsKKwkJCXJlYXNvbiA9ICJhZGQvYWRkIjsKKwkJCW9fc2hhID0gKHVuc2lnbmVkIGNoYXIgKiludWxsX3NoYTE7CisJCX0KKwkJb3V0cHV0KG8sIDIsICJBdXRvLW1lcmdpbmcgJXMiLCBwYXRoKTsKKwkJb25lLnBhdGggPSBhLnBhdGggPSBiLnBhdGggPSAoY2hhciAqKXBhdGg7CisJCWhhc2hjcHkob25lLnNoYTEsIG9fc2hhKTsKKwkJb25lLm1vZGUgPSBvX21vZGU7CisJCWhhc2hjcHkoYS5zaGExLCBhX3NoYSk7CisJCWEubW9kZSA9IGFfbW9kZTsKKwkJaGFzaGNweShiLnNoYTEsIGJfc2hhKTsKKwkJYi5tb2RlID0gYl9tb2RlOworCisJCW1maSA9IG1lcmdlX2ZpbGUobywgJm9uZSwgJmEsICZiLAorCQkJCSBvLT5icmFuY2gxLCBvLT5icmFuY2gyKTsKKworCQljbGVhbl9tZXJnZSA9IG1maS5jbGVhbjsKKwkJaWYgKG1maS5jbGVhbikKKwkJCXVwZGF0ZV9maWxlKG8sIDEsIG1maS5zaGEsIG1maS5tb2RlLCBwYXRoKTsKKwkJZWxzZSBpZiAoU19JU0dJVExJTksobWZpLm1vZGUpKQorCQkJb3V0cHV0KG8sIDEsICJDT05GTElDVCAoc3VibW9kdWxlKTogTWVyZ2UgY29uZmxpY3QgaW4gJXMgIgorCQkJICAgICAgICItIG5lZWRzICVzIiwgcGF0aCwgc2hhMV90b19oZXgoYi5zaGExKSk7CisJCWVsc2UgeworCQkJb3V0cHV0KG8sIDEsICJDT05GTElDVCAoJXMpOiBNZXJnZSBjb25mbGljdCBpbiAlcyIsCisJCQkJCXJlYXNvbiwgcGF0aCk7CisKKwkJCWlmIChvLT5jYWxsX2RlcHRoKQorCQkJCXVwZGF0ZV9maWxlKG8sIDAsIG1maS5zaGEsIG1maS5tb2RlLCBwYXRoKTsKKwkJCWVsc2UKKwkJCQl1cGRhdGVfZmlsZV9mbGFncyhvLCBtZmkuc2hhLCBtZmkubW9kZSwgcGF0aCwKKwkJCQkJICAgICAgMCAvKiB1cGRhdGVfY2FjaGUgKi8sIDEgLyogdXBkYXRlX3dvcmtpbmdfZGlyZWN0b3J5ICovKTsKKwkJfQorCX0gZWxzZSBpZiAoIW9fc2hhICYmICFhX3NoYSAmJiAhYl9zaGEpIHsKKwkJLyoKKwkJICogdGhpcyBlbnRyeSB3YXMgZGVsZXRlZCBhbHRvZ2V0aGVyLiBhX21vZGUgPT0gMCBtZWFucworCQkgKiB3ZSBoYWQgdGhhdCBwYXRoIGFuZCB3YW50IHRvIGFjdGl2ZWx5IHJlbW92ZSBpdC4KKwkJICovCisJCXJlbW92ZV9maWxlKG8sIDEsIHBhdGgsICFhX21vZGUpOworCX0gZWxzZQorCQlkaWUoIkZhdGFsIG1lcmdlIGZhaWx1cmUsIHNob3VsZG4ndCBoYXBwZW4uIik7CisKKwlyZXR1cm4gY2xlYW5fbWVyZ2U7Cit9CisKK2ludCBtZXJnZV90cmVlcyhzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyAqbywKKwkJc3RydWN0IHRyZWUgKmhlYWQsCisJCXN0cnVjdCB0cmVlICptZXJnZSwKKwkJc3RydWN0IHRyZWUgKmNvbW1vbiwKKwkJc3RydWN0IHRyZWUgKipyZXN1bHQpCit7CisJaW50IGNvZGUsIGNsZWFuOworCisJaWYgKG8tPnN1YnRyZWVfbWVyZ2UpIHsKKwkJbWVyZ2UgPSBzaGlmdF90cmVlX29iamVjdChoZWFkLCBtZXJnZSk7CisJCWNvbW1vbiA9IHNoaWZ0X3RyZWVfb2JqZWN0KGhlYWQsIGNvbW1vbik7CisJfQorCisJaWYgKHNoYV9lcShjb21tb24tPm9iamVjdC5zaGExLCBtZXJnZS0+b2JqZWN0LnNoYTEpKSB7CisJCW91dHB1dChvLCAwLCAiQWxyZWFkeSB1cHRvZGF0ZSEiKTsKKwkJKnJlc3VsdCA9IGhlYWQ7CisJCXJldHVybiAxOworCX0KKworCWNvZGUgPSBnaXRfbWVyZ2VfdHJlZXMoby0+Y2FsbF9kZXB0aCwgY29tbW9uLCBoZWFkLCBtZXJnZSk7CisKKwlpZiAoY29kZSAhPSAwKQorCQlkaWUoIm1lcmdpbmcgb2YgdHJlZXMgJXMgYW5kICVzIGZhaWxlZCIsCisJCSAgICBzaGExX3RvX2hleChoZWFkLT5vYmplY3Quc2hhMSksCisJCSAgICBzaGExX3RvX2hleChtZXJnZS0+b2JqZWN0LnNoYTEpKTsKKworCWlmICh1bm1lcmdlZF9jYWNoZSgpKSB7CisJCXN0cnVjdCBzdHJpbmdfbGlzdCAqZW50cmllcywgKnJlX2hlYWQsICpyZV9tZXJnZTsKKwkJaW50IGk7CisJCXN0cmluZ19saXN0X2NsZWFyKCZvLT5jdXJyZW50X2ZpbGVfc2V0LCAxKTsKKwkJc3RyaW5nX2xpc3RfY2xlYXIoJm8tPmN1cnJlbnRfZGlyZWN0b3J5X3NldCwgMSk7CisJCWdldF9maWxlc19kaXJzKG8sIGhlYWQpOworCQlnZXRfZmlsZXNfZGlycyhvLCBtZXJnZSk7CisKKwkJZW50cmllcyA9IGdldF91bm1lcmdlZCgpOworCQlyZV9oZWFkICA9IGdldF9yZW5hbWVzKG8sIGhlYWQsIGNvbW1vbiwgaGVhZCwgbWVyZ2UsIGVudHJpZXMpOworCQlyZV9tZXJnZSA9IGdldF9yZW5hbWVzKG8sIG1lcmdlLCBjb21tb24sIGhlYWQsIG1lcmdlLCBlbnRyaWVzKTsKKwkJY2xlYW4gPSBwcm9jZXNzX3JlbmFtZXMobywgcmVfaGVhZCwgcmVfbWVyZ2UpOworCQlmb3IgKGkgPSAwOyBpIDwgZW50cmllcy0+bnI7IGkrKykgeworCQkJY29uc3QgY2hhciAqcGF0aCA9IGVudHJpZXMtPml0ZW1zW2ldLnN0cmluZzsKKwkJCXN0cnVjdCBzdGFnZV9kYXRhICplID0gZW50cmllcy0+aXRlbXNbaV0udXRpbDsKKwkJCWlmICghZS0+cHJvY2Vzc2VkCisJCQkJJiYgIXByb2Nlc3NfZW50cnkobywgcGF0aCwgZSkpCisJCQkJY2xlYW4gPSAwOworCQl9CisKKwkJc3RyaW5nX2xpc3RfY2xlYXIocmVfbWVyZ2UsIDApOworCQlzdHJpbmdfbGlzdF9jbGVhcihyZV9oZWFkLCAwKTsKKwkJc3RyaW5nX2xpc3RfY2xlYXIoZW50cmllcywgMSk7CisKKwl9CisJZWxzZQorCQljbGVhbiA9IDE7CisKKwlpZiAoby0+Y2FsbF9kZXB0aCkKKwkJKnJlc3VsdCA9IHdyaXRlX3RyZWVfZnJvbV9tZW1vcnkobyk7CisKKwlyZXR1cm4gY2xlYW47Cit9CisKK3N0YXRpYyBzdHJ1Y3QgY29tbWl0X2xpc3QgKnJldmVyc2VfY29tbWl0X2xpc3Qoc3RydWN0IGNvbW1pdF9saXN0ICpsaXN0KQoreworCXN0cnVjdCBjb21taXRfbGlzdCAqbmV4dCA9IE5VTEwsICpjdXJyZW50LCAqYmFja3VwOworCWZvciAoY3VycmVudCA9IGxpc3Q7IGN1cnJlbnQ7IGN1cnJlbnQgPSBiYWNrdXApIHsKKwkJYmFja3VwID0gY3VycmVudC0+bmV4dDsKKwkJY3VycmVudC0+bmV4dCA9IG5leHQ7CisJCW5leHQgPSBjdXJyZW50OworCX0KKwlyZXR1cm4gbmV4dDsKK30KKworLyoKKyAqIE1lcmdlIHRoZSBjb21taXRzIGgxIGFuZCBoMiwgcmV0dXJuIHRoZSByZXN1bHRpbmcgdmlydHVhbAorICogY29tbWl0IG9iamVjdCBhbmQgYSBmbGFnIGluZGljYXRpbmcgdGhlIGNsZWFubmVzcyBvZiB0aGUgbWVyZ2UuCisgKi8KK2ludCBtZXJnZV9yZWN1cnNpdmUoc3RydWN0IG1lcmdlX29wdGlvbnMgKm8sCisJCSAgICBzdHJ1Y3QgY29tbWl0ICpoMSwKKwkJICAgIHN0cnVjdCBjb21taXQgKmgyLAorCQkgICAgc3RydWN0IGNvbW1pdF9saXN0ICpjYSwKKwkJICAgIHN0cnVjdCBjb21taXQgKipyZXN1bHQpCit7CisJc3RydWN0IGNvbW1pdF9saXN0ICppdGVyOworCXN0cnVjdCBjb21taXQgKm1lcmdlZF9jb21tb25fYW5jZXN0b3JzOworCXN0cnVjdCB0cmVlICptcnRyZWUgPSBtcnRyZWU7CisJaW50IGNsZWFuOworCisJaWYgKHNob3cobywgNCkpIHsKKwkJb3V0cHV0KG8sIDQsICJNZXJnaW5nOiIpOworCQlvdXRwdXRfY29tbWl0X3RpdGxlKG8sIGgxKTsKKwkJb3V0cHV0X2NvbW1pdF90aXRsZShvLCBoMik7CisJfQorCisJaWYgKCFjYSkgeworCQljYSA9IGdldF9tZXJnZV9iYXNlcyhoMSwgaDIsIDEpOworCQljYSA9IHJldmVyc2VfY29tbWl0X2xpc3QoY2EpOworCX0KKworCWlmIChzaG93KG8sIDUpKSB7CisJCW91dHB1dChvLCA1LCAiZm91bmQgJXUgY29tbW9uIGFuY2VzdG9yKHMpOiIsIGNvbW1pdF9saXN0X2NvdW50KGNhKSk7CisJCWZvciAoaXRlciA9IGNhOyBpdGVyOyBpdGVyID0gaXRlci0+bmV4dCkKKwkJCW91dHB1dF9jb21taXRfdGl0bGUobywgaXRlci0+aXRlbSk7CisJfQorCisJbWVyZ2VkX2NvbW1vbl9hbmNlc3RvcnMgPSBwb3BfY29tbWl0KCZjYSk7CisJaWYgKG1lcmdlZF9jb21tb25fYW5jZXN0b3JzID09IE5VTEwpIHsKKwkJLyogaWYgdGhlcmUgaXMgbm8gY29tbW9uIGFuY2VzdG9yLCBtYWtlIGFuIGVtcHR5IHRyZWUgKi8KKwkJc3RydWN0IHRyZWUgKnRyZWUgPSB4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgdHJlZSkpOworCisJCXRyZWUtPm9iamVjdC5wYXJzZWQgPSAxOworCQl0cmVlLT5vYmplY3QudHlwZSA9IE9CSl9UUkVFOworCQlwcmV0ZW5kX3NoYTFfZmlsZShOVUxMLCAwLCBPQkpfVFJFRSwgdHJlZS0+b2JqZWN0LnNoYTEpOworCQltZXJnZWRfY29tbW9uX2FuY2VzdG9ycyA9IG1ha2VfdmlydHVhbF9jb21taXQodHJlZSwgImFuY2VzdG9yIik7CisJfQorCisJZm9yIChpdGVyID0gY2E7IGl0ZXI7IGl0ZXIgPSBpdGVyLT5uZXh0KSB7CisJCWNvbnN0IGNoYXIgKnNhdmVkX2IxLCAqc2F2ZWRfYjI7CisJCW8tPmNhbGxfZGVwdGgrKzsKKwkJLyoKKwkJICogV2hlbiB0aGUgbWVyZ2UgZmFpbHMsIHRoZSByZXN1bHQgY29udGFpbnMgZmlsZXMKKwkJICogd2l0aCBjb25mbGljdCBtYXJrZXJzLiBUaGUgY2xlYW5uZXNzIGZsYWcgaXMKKwkJICogaWdub3JlZCwgaXQgd2FzIG5ldmVyIGFjdHVhbGx5IHVzZWQsIGFzIHJlc3VsdCBvZgorCQkgKiBtZXJnZV90cmVlcyBoYXMgYWx3YXlzIG92ZXJ3cml0dGVuIGl0OiB0aGUgY29tbWl0dGVkCisJCSAqICJjb25mbGljdHMiIHdlcmUgYWxyZWFkeSByZXNvbHZlZC4KKwkJICovCisJCWRpc2NhcmRfY2FjaGUoKTsKKwkJc2F2ZWRfYjEgPSBvLT5icmFuY2gxOworCQlzYXZlZF9iMiA9IG8tPmJyYW5jaDI7CisJCW8tPmJyYW5jaDEgPSAiVGVtcG9yYXJ5IG1lcmdlIGJyYW5jaCAxIjsKKwkJby0+YnJhbmNoMiA9ICJUZW1wb3JhcnkgbWVyZ2UgYnJhbmNoIDIiOworCQltZXJnZV9yZWN1cnNpdmUobywgbWVyZ2VkX2NvbW1vbl9hbmNlc3RvcnMsIGl0ZXItPml0ZW0sCisJCQkJTlVMTCwgJm1lcmdlZF9jb21tb25fYW5jZXN0b3JzKTsKKwkJby0+YnJhbmNoMSA9IHNhdmVkX2IxOworCQlvLT5icmFuY2gyID0gc2F2ZWRfYjI7CisJCW8tPmNhbGxfZGVwdGgtLTsKKworCQlpZiAoIW1lcmdlZF9jb21tb25fYW5jZXN0b3JzKQorCQkJZGllKCJtZXJnZSByZXR1cm5lZCBubyBjb21taXQiKTsKKwl9CisKKwlkaXNjYXJkX2NhY2hlKCk7CisJaWYgKCFvLT5jYWxsX2RlcHRoKQorCQlyZWFkX2NhY2hlKCk7CisKKwljbGVhbiA9IG1lcmdlX3RyZWVzKG8sIGgxLT50cmVlLCBoMi0+dHJlZSwgbWVyZ2VkX2NvbW1vbl9hbmNlc3RvcnMtPnRyZWUsCisJCQkgICAgJm1ydHJlZSk7CisKKwlpZiAoby0+Y2FsbF9kZXB0aCkgeworCQkqcmVzdWx0ID0gbWFrZV92aXJ0dWFsX2NvbW1pdChtcnRyZWUsICJtZXJnZWQgdHJlZSIpOworCQljb21taXRfbGlzdF9pbnNlcnQoaDEsICYoKnJlc3VsdCktPnBhcmVudHMpOworCQljb21taXRfbGlzdF9pbnNlcnQoaDIsICYoKnJlc3VsdCktPnBhcmVudHMtPm5leHQpOworCX0KKwlmbHVzaF9vdXRwdXQobyk7CisJcmV0dXJuIGNsZWFuOworfQorCitzdGF0aWMgc3RydWN0IGNvbW1pdCAqZ2V0X3JlZihjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBjb25zdCBjaGFyICpuYW1lKQoreworCXN0cnVjdCBvYmplY3QgKm9iamVjdDsKKworCW9iamVjdCA9IGRlcmVmX3RhZyhwYXJzZV9vYmplY3Qoc2hhMSksIG5hbWUsIHN0cmxlbihuYW1lKSk7CisJaWYgKCFvYmplY3QpCisJCXJldHVybiBOVUxMOworCWlmIChvYmplY3QtPnR5cGUgPT0gT0JKX1RSRUUpCisJCXJldHVybiBtYWtlX3ZpcnR1YWxfY29tbWl0KChzdHJ1Y3QgdHJlZSopb2JqZWN0LCBuYW1lKTsKKwlpZiAob2JqZWN0LT50eXBlICE9IE9CSl9DT01NSVQpCisJCXJldHVybiBOVUxMOworCWlmIChwYXJzZV9jb21taXQoKHN0cnVjdCBjb21taXQgKilvYmplY3QpKQorCQlyZXR1cm4gTlVMTDsKKwlyZXR1cm4gKHN0cnVjdCBjb21taXQgKilvYmplY3Q7Cit9CisKK2ludCBtZXJnZV9yZWN1cnNpdmVfZ2VuZXJpYyhzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyAqbywKKwkJCSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpoZWFkLAorCQkJICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm1lcmdlLAorCQkJICAgIGludCBudW1fYmFzZV9saXN0LAorCQkJICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKipiYXNlX2xpc3QsCisJCQkgICAgc3RydWN0IGNvbW1pdCAqKnJlc3VsdCkKK3sKKwlpbnQgY2xlYW4sIGluZGV4X2ZkOworCXN0cnVjdCBsb2NrX2ZpbGUgKmxvY2sgPSB4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgbG9ja19maWxlKSk7CisJc3RydWN0IGNvbW1pdCAqaGVhZF9jb21taXQgPSBnZXRfcmVmKGhlYWQsIG8tPmJyYW5jaDEpOworCXN0cnVjdCBjb21taXQgKm5leHRfY29tbWl0ID0gZ2V0X3JlZihtZXJnZSwgby0+YnJhbmNoMik7CisJc3RydWN0IGNvbW1pdF9saXN0ICpjYSA9IE5VTEw7CisKKwlpZiAoYmFzZV9saXN0KSB7CisJCWludCBpOworCQlmb3IgKGkgPSAwOyBpIDwgbnVtX2Jhc2VfbGlzdDsgKytpKSB7CisJCQlzdHJ1Y3QgY29tbWl0ICpiYXNlOworCQkJaWYgKCEoYmFzZSA9IGdldF9yZWYoYmFzZV9saXN0W2ldLCBzaGExX3RvX2hleChiYXNlX2xpc3RbaV0pKSkpCisJCQkJcmV0dXJuIGVycm9yKCJDb3VsZCBub3QgcGFyc2Ugb2JqZWN0ICclcyciLAorCQkJCQlzaGExX3RvX2hleChiYXNlX2xpc3RbaV0pKTsKKwkJCWNvbW1pdF9saXN0X2luc2VydChiYXNlLCAmY2EpOworCQl9CisJfQorCisJaW5kZXhfZmQgPSBob2xkX2xvY2tlZF9pbmRleChsb2NrLCAxKTsKKwljbGVhbiA9IG1lcmdlX3JlY3Vyc2l2ZShvLCBoZWFkX2NvbW1pdCwgbmV4dF9jb21taXQsIGNhLAorCQkJcmVzdWx0KTsKKwlpZiAoYWN0aXZlX2NhY2hlX2NoYW5nZWQgJiYKKwkJCSh3cml0ZV9jYWNoZShpbmRleF9mZCwgYWN0aXZlX2NhY2hlLCBhY3RpdmVfbnIpIHx8CisJCQkgY29tbWl0X2xvY2tlZF9pbmRleChsb2NrKSkpCisJCXJldHVybiBlcnJvcigiVW5hYmxlIHRvIHdyaXRlIGluZGV4LiIpOworCisJcmV0dXJuIGNsZWFuID8gMCA6IDE7Cit9CisKK3N0YXRpYyBpbnQgbWVyZ2VfcmVjdXJzaXZlX2NvbmZpZyhjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlLCB2b2lkICpjYikKK3sKKwlzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyAqbyA9IGNiOworCWlmICghc3RyY2FzZWNtcCh2YXIsICJtZXJnZS52ZXJib3NpdHkiKSkgeworCQlvLT52ZXJib3NpdHkgPSBnaXRfY29uZmlnX2ludCh2YXIsIHZhbHVlKTsKKwkJcmV0dXJuIDA7CisJfQorCWlmICghc3RyY2FzZWNtcCh2YXIsICJkaWZmLnJlbmFtZWxpbWl0IikpIHsKKwkJby0+ZGlmZl9yZW5hbWVfbGltaXQgPSBnaXRfY29uZmlnX2ludCh2YXIsIHZhbHVlKTsKKwkJcmV0dXJuIDA7CisJfQorCWlmICghc3RyY2FzZWNtcCh2YXIsICJtZXJnZS5yZW5hbWVsaW1pdCIpKSB7CisJCW8tPm1lcmdlX3JlbmFtZV9saW1pdCA9IGdpdF9jb25maWdfaW50KHZhciwgdmFsdWUpOworCQlyZXR1cm4gMDsKKwl9CisJcmV0dXJuIGdpdF94bWVyZ2VfY29uZmlnKHZhciwgdmFsdWUsIGNiKTsKK30KKwordm9pZCBpbml0X21lcmdlX29wdGlvbnMoc3RydWN0IG1lcmdlX29wdGlvbnMgKm8pCit7CisJbWVtc2V0KG8sIDAsIHNpemVvZihzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucykpOworCW8tPnZlcmJvc2l0eSA9IDI7CisJby0+YnVmZmVyX291dHB1dCA9IDE7CisJby0+ZGlmZl9yZW5hbWVfbGltaXQgPSAtMTsKKwlvLT5tZXJnZV9yZW5hbWVfbGltaXQgPSAtMTsKKwlnaXRfY29uZmlnKG1lcmdlX3JlY3Vyc2l2ZV9jb25maWcsIG8pOworCWlmIChnZXRlbnYoIkdJVF9NRVJHRV9WRVJCT1NJVFkiKSkKKwkJby0+dmVyYm9zaXR5ID0KKwkJCXN0cnRvbChnZXRlbnYoIkdJVF9NRVJHRV9WRVJCT1NJVFkiKSwgTlVMTCwgMTApOworCWlmIChvLT52ZXJib3NpdHkgPj0gNSkKKwkJby0+YnVmZmVyX291dHB1dCA9IDA7CisJc3RyYnVmX2luaXQoJm8tPm9idWYsIDApOworCW1lbXNldCgmby0+Y3VycmVudF9maWxlX3NldCwgMCwgc2l6ZW9mKHN0cnVjdCBzdHJpbmdfbGlzdCkpOworCW8tPmN1cnJlbnRfZmlsZV9zZXQuc3RyZHVwX3N0cmluZ3MgPSAxOworCW1lbXNldCgmby0+Y3VycmVudF9kaXJlY3Rvcnlfc2V0LCAwLCBzaXplb2Yoc3RydWN0IHN0cmluZ19saXN0KSk7CisJby0+Y3VycmVudF9kaXJlY3Rvcnlfc2V0LnN0cmR1cF9zdHJpbmdzID0gMTsKK30KZGlmZiAtLWdpdCBhL21lcmdlLXJlY3Vyc2l2ZS5oIGIvbWVyZ2UtcmVjdXJzaXZlLmgKaW5kZXggZjM3NjMwYS4uZmQxMzhjYSAxMDA2NDQKLS0tIGEvbWVyZ2UtcmVjdXJzaXZlLmgKKysrIGIvbWVyZ2UtcmVjdXJzaXZlLmgKQEAgLTEsMjAgKzEsNDggQEAKICNpZm5kZWYgTUVSR0VfUkVDVVJTSVZFX0gKICNkZWZpbmUgTUVSR0VfUkVDVVJTSVZFX0gKIAotaW50IG1lcmdlX3JlY3Vyc2l2ZShzdHJ1Y3QgY29tbWl0ICpoMSwKKyNpbmNsdWRlICJzdHJpbmctbGlzdC5oIgorCitzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyB7CisJY29uc3QgY2hhciAqYnJhbmNoMTsKKwljb25zdCBjaGFyICpicmFuY2gyOworCXVuc2lnbmVkIHN1YnRyZWVfbWVyZ2UgOiAxOworCXVuc2lnbmVkIGJ1ZmZlcl9vdXRwdXQgOiAxOworCWludCB2ZXJib3NpdHk7CisJaW50IGRpZmZfcmVuYW1lX2xpbWl0OworCWludCBtZXJnZV9yZW5hbWVfbGltaXQ7CisJaW50IGNhbGxfZGVwdGg7CisJc3RydWN0IHN0cmJ1ZiBvYnVmOworCXN0cnVjdCBzdHJpbmdfbGlzdCBjdXJyZW50X2ZpbGVfc2V0OworCXN0cnVjdCBzdHJpbmdfbGlzdCBjdXJyZW50X2RpcmVjdG9yeV9zZXQ7Cit9OworCisvKiBtZXJnZV90cmVlcygpIGJ1dCB3aXRoIHJlY3Vyc2l2ZSBhbmNlc3RvciBjb25zb2xpZGF0aW9uICovCitpbnQgbWVyZ2VfcmVjdXJzaXZlKHN0cnVjdCBtZXJnZV9vcHRpb25zICpvLAorCQkgICAgc3RydWN0IGNvbW1pdCAqaDEsCiAJCSAgICBzdHJ1Y3QgY29tbWl0ICpoMiwKLQkJICAgIGNvbnN0IGNoYXIgKmJyYW5jaDEsCi0JCSAgICBjb25zdCBjaGFyICpicmFuY2gyLAogCQkgICAgc3RydWN0IGNvbW1pdF9saXN0ICphbmNlc3RvcnMsCiAJCSAgICBzdHJ1Y3QgY29tbWl0ICoqcmVzdWx0KTsKIAotaW50IG1lcmdlX3RyZWVzKHN0cnVjdCB0cmVlICpoZWFkLAorLyogcmVuYW1lLWRldGVjdGluZyB0aHJlZS13YXkgbWVyZ2UsIG5vIHJlY3Vyc2lvbiAqLworaW50IG1lcmdlX3RyZWVzKHN0cnVjdCBtZXJnZV9vcHRpb25zICpvLAorCQlzdHJ1Y3QgdHJlZSAqaGVhZCwKIAkJc3RydWN0IHRyZWUgKm1lcmdlLAogCQlzdHJ1Y3QgdHJlZSAqY29tbW9uLAotCQljb25zdCBjaGFyICpicmFuY2gxLAotCQljb25zdCBjaGFyICpicmFuY2gyLAogCQlzdHJ1Y3QgdHJlZSAqKnJlc3VsdCk7CiAKLXN0cnVjdCB0cmVlICp3cml0ZV90cmVlX2Zyb21fbWVtb3J5KHZvaWQpOworLyoKKyAqICJnaXQtbWVyZ2UtcmVjdXJzaXZlIiBjYW4gYmUgZmVkIHRyZWVzOyB3cmFwIHRoZW0gaW50bworICogdmlydHVhbCBjb21taXRzIGFuZCBjYWxsIG1lcmdlX3JlY3Vyc2l2ZSgpIHByb3Blci4KKyAqLworaW50IG1lcmdlX3JlY3Vyc2l2ZV9nZW5lcmljKHN0cnVjdCBtZXJnZV9vcHRpb25zICpvLAorCQkJICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmhlYWQsCisJCQkgICAgY29uc3QgdW5zaWduZWQgY2hhciAqbWVyZ2UsCisJCQkgICAgaW50IG51bV9jYSwKKwkJCSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICoqY2EsCisJCQkgICAgc3RydWN0IGNvbW1pdCAqKnJlc3VsdCk7CisKK3ZvaWQgaW5pdF9tZXJnZV9vcHRpb25zKHN0cnVjdCBtZXJnZV9vcHRpb25zICpvKTsKK3N0cnVjdCB0cmVlICp3cml0ZV90cmVlX2Zyb21fbWVtb3J5KHN0cnVjdCBtZXJnZV9vcHRpb25zICpvKTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9tZXJnZS10cmVlLmMgYi9tZXJnZS10cmVlLmMKaW5kZXggMDJmYzEwZi4uMmQxNDEzZSAxMDA2NDQKLS0tIGEvbWVyZ2UtdHJlZS5jCisrKyBiL21lcmdlLXRyZWUuYwpAQCAtMTU4LDkgKzE1OCw4IEBACiAKIHN0YXRpYyBzdHJ1Y3QgbWVyZ2VfbGlzdCAqY3JlYXRlX2VudHJ5KHVuc2lnbmVkIHN0YWdlLCB1bnNpZ25lZCBtb2RlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBjb25zdCBjaGFyICpwYXRoKQogewotCXN0cnVjdCBtZXJnZV9saXN0ICpyZXMgPSB4bWFsbG9jKHNpemVvZigqcmVzKSk7CisJc3RydWN0IG1lcmdlX2xpc3QgKnJlcyA9IHhjYWxsb2MoMSwgc2l6ZW9mKCpyZXMpKTsKIAotCW1lbXNldChyZXMsIDAsIHNpemVvZigqcmVzKSk7CiAJcmVzLT5zdGFnZSA9IHN0YWdlOwogCXJlcy0+cGF0aCA9IHBhdGg7CiAJcmVzLT5tb2RlID0gbW9kZTsKZGlmZiAtLWdpdCBhL21rdGFnLmMgYi9ta3RhZy5jCmluZGV4IDBiMzQzNDEuLmJhM2Q0OTUgMTAwNjQ0Ci0tLSBhL21rdGFnLmMKKysrIGIvbWt0YWcuYwpAQCAtMTUzLDcgKzE1Myw3IEBACiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIHsKLQlzdHJ1Y3Qgc3RyYnVmIGJ1ZjsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCXVuc2lnbmVkIGNoYXIgcmVzdWx0X3NoYTFbMjBdOwogCiAJaWYgKGFyZ2MgIT0gMSkKQEAgLTE2MSw3ICsxNjEsNiBAQAogCiAJc2V0dXBfZ2l0X2RpcmVjdG9yeSgpOwogCi0Jc3RyYnVmX2luaXQoJmJ1ZiwgMCk7CiAJaWYgKHN0cmJ1Zl9yZWFkKCZidWYsIDAsIDQwOTYpIDwgMCkgewogCQlkaWUoImNvdWxkIG5vdCByZWFkIGZyb20gc3RkaW4iKTsKIAl9CmRpZmYgLS1naXQgYS9ta3RyZWUuYyBiL21rdHJlZS5jCmluZGV4IGUwZGExMTAuLjUxNGZkOWIgMTAwNjQ0Ci0tLSBhL21rdHJlZS5jCisrKyBiL21rdHJlZS5jCkBAIC02NSw4ICs2NSw4IEBACiAKIGludCBtYWluKGludCBhYywgY2hhciAqKmF2KQogewotCXN0cnVjdCBzdHJidWYgc2I7Ci0Jc3RydWN0IHN0cmJ1ZiBwX3VxOworCXN0cnVjdCBzdHJidWYgc2IgPSBTVFJCVUZfSU5JVDsKKwlzdHJ1Y3Qgc3RyYnVmIHBfdXEgPSBTVFJCVUZfSU5JVDsKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwogCWludCBsaW5lX3Rlcm1pbmF0aW9uID0gJ1xuJzsKIApAQCAtODIsOCArODIsNiBAQAogCQlhdisrOwogCX0KIAotCXN0cmJ1Zl9pbml0KCZzYiwgMCk7Ci0Jc3RyYnVmX2luaXQoJnBfdXEsIDApOwogCXdoaWxlIChzdHJidWZfZ2V0bGluZSgmc2IsIHN0ZGluLCBsaW5lX3Rlcm1pbmF0aW9uKSAhPSBFT0YpIHsKIAkJY2hhciAqcHRyLCAqbnRyOwogCQl1bnNpZ25lZCBtb2RlOwpkaWZmIC0tZ2l0IGEvbW96aWxsYS1zaGExL3NoYTEuYyBiL21vemlsbGEtc2hhMS9zaGExLmMKaW5kZXggM2YwNmI4My4uOTVhNGViZiAxMDA2NDQKLS0tIGEvbW96aWxsYS1zaGExL3NoYTEuYworKysgYi9tb3ppbGxhLXNoYTEvc2hhMS5jCkBAIC0zNSw5ICszNSw5IEBACiAKICNpbmNsdWRlICJzaGExLmgiCiAKLXN0YXRpYyB2b2lkIHNoYUhhc2hCbG9jayhTSEFfQ1RYICpjdHgpOworc3RhdGljIHZvaWQgc2hhSGFzaEJsb2NrKG1vel9TSEFfQ1RYICpjdHgpOwogCi12b2lkIFNIQTFfSW5pdChTSEFfQ1RYICpjdHgpIHsKK3ZvaWQgbW96X1NIQTFfSW5pdChtb3pfU0hBX0NUWCAqY3R4KSB7CiAgIGludCBpOwogCiAgIGN0eC0+bGVuVyA9IDA7CkBAIC01Niw3ICs1Niw3IEBACiB9CiAKIAotdm9pZCBTSEExX1VwZGF0ZShTSEFfQ1RYICpjdHgsIGNvbnN0IHZvaWQgKl9kYXRhSW4sIGludCBsZW4pIHsKK3ZvaWQgbW96X1NIQTFfVXBkYXRlKG1vel9TSEFfQ1RYICpjdHgsIGNvbnN0IHZvaWQgKl9kYXRhSW4sIGludCBsZW4pIHsKICAgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YUluID0gX2RhdGFJbjsKICAgaW50IGk7CiAKQEAgLTc1LDcgKzc1LDcgQEAKIH0KIAogCi12b2lkIFNIQTFfRmluYWwodW5zaWduZWQgY2hhciBoYXNob3V0WzIwXSwgU0hBX0NUWCAqY3R4KSB7Cit2b2lkIG1vel9TSEExX0ZpbmFsKHVuc2lnbmVkIGNoYXIgaGFzaG91dFsyMF0sIG1vel9TSEFfQ1RYICpjdHgpIHsKICAgdW5zaWduZWQgY2hhciBwYWQweDgwID0gMHg4MDsKICAgdW5zaWduZWQgY2hhciBwYWQweDAwID0gMHgwMDsKICAgdW5zaWduZWQgY2hhciBwYWRsZW5bOF07CkBAIC05MSwxMCArOTEsMTAgQEAKICAgcGFkbGVuWzVdID0gKHVuc2lnbmVkIGNoYXIpKChjdHgtPnNpemVMbyA+PiAxNikgJiAyNTUpOwogICBwYWRsZW5bNl0gPSAodW5zaWduZWQgY2hhcikoKGN0eC0+c2l6ZUxvID4+IDgpICYgMjU1KTsKICAgcGFkbGVuWzddID0gKHVuc2lnbmVkIGNoYXIpKChjdHgtPnNpemVMbyA+PiAwKSAmIDI1NSk7Ci0gIFNIQTFfVXBkYXRlKGN0eCwgJnBhZDB4ODAsIDEpOworICBtb3pfU0hBMV9VcGRhdGUoY3R4LCAmcGFkMHg4MCwgMSk7CiAgIHdoaWxlIChjdHgtPmxlblcgIT0gNTYpCi0gICAgU0hBMV9VcGRhdGUoY3R4LCAmcGFkMHgwMCwgMSk7Ci0gIFNIQTFfVXBkYXRlKGN0eCwgcGFkbGVuLCA4KTsKKyAgICBtb3pfU0hBMV9VcGRhdGUoY3R4LCAmcGFkMHgwMCwgMSk7CisgIG1vel9TSEExX1VwZGF0ZShjdHgsIHBhZGxlbiwgOCk7CiAKICAgLyogT3V0cHV0IGhhc2gKICAgICovCkBAIC0xMDYsMTMgKzEwNiwxMyBAQAogICAvKgogICAgKiAgUmUtaW5pdGlhbGl6ZSB0aGUgY29udGV4dCAoYWxzbyB6ZXJvaXplcyBjb250ZW50cykKICAgICovCi0gIFNIQTFfSW5pdChjdHgpOworICBtb3pfU0hBMV9Jbml0KGN0eCk7CiB9CiAKIAogI2RlZmluZSBTSEFfUk9UKFgsbikgKCgoWCkgPDwgKG4pKSB8ICgoWCkgPj4gKDMyLShuKSkpKQogCi1zdGF0aWMgdm9pZCBzaGFIYXNoQmxvY2soU0hBX0NUWCAqY3R4KSB7CitzdGF0aWMgdm9pZCBzaGFIYXNoQmxvY2sobW96X1NIQV9DVFggKmN0eCkgewogICBpbnQgdDsKICAgdW5zaWduZWQgaW50IEEsQixDLEQsRSxURU1QOwogCmRpZmYgLS1naXQgYS9tb3ppbGxhLXNoYTEvc2hhMS5oIGIvbW96aWxsYS1zaGExL3NoYTEuaAppbmRleCAxNmYyZDNkLi5hYTQ4YTQ2IDEwMDY0NAotLS0gYS9tb3ppbGxhLXNoYTEvc2hhMS5oCisrKyBiL21vemlsbGEtc2hhMS9zaGExLmgKQEAgLTM4LDggKzM4LDEzIEBACiAgIHVuc2lnbmVkIGludCBXWzgwXTsKICAgaW50IGxlblc7CiAgIHVuc2lnbmVkIGludCBzaXplSGksc2l6ZUxvOwotfSBTSEFfQ1RYOworfSBtb3pfU0hBX0NUWDsKIAotdm9pZCBTSEExX0luaXQoU0hBX0NUWCAqY3R4KTsKLXZvaWQgU0hBMV9VcGRhdGUoU0hBX0NUWCAqY3R4LCBjb25zdCB2b2lkICpkYXRhSW4sIGludCBsZW4pOwotdm9pZCBTSEExX0ZpbmFsKHVuc2lnbmVkIGNoYXIgaGFzaG91dFsyMF0sIFNIQV9DVFggKmN0eCk7Cit2b2lkIG1vel9TSEExX0luaXQobW96X1NIQV9DVFggKmN0eCk7Cit2b2lkIG1vel9TSEExX1VwZGF0ZShtb3pfU0hBX0NUWCAqY3R4LCBjb25zdCB2b2lkICpkYXRhSW4sIGludCBsZW4pOwordm9pZCBtb3pfU0hBMV9GaW5hbCh1bnNpZ25lZCBjaGFyIGhhc2hvdXRbMjBdLCBtb3pfU0hBX0NUWCAqY3R4KTsKKworI2RlZmluZSBnaXRfU0hBX0NUWAltb3pfU0hBX0NUWAorI2RlZmluZSBnaXRfU0hBMV9Jbml0CW1vel9TSEExX0luaXQKKyNkZWZpbmUgZ2l0X1NIQTFfVXBkYXRlCW1vel9TSEExX1VwZGF0ZQorI2RlZmluZSBnaXRfU0hBMV9GaW5hbAltb3pfU0hBMV9GaW5hbApkaWZmIC0tZ2l0IGEvb2JqZWN0LmMgYi9vYmplY3QuYwppbmRleCA1MGI2NTI4Li43ZTZhOTJjIDEwMDY0NAotLS0gYS9vYmplY3QuYworKysgYi9vYmplY3QuYwpAQCAtMjY4LDMgKzI2OCwyMiBAQAogCW9iamVjdHNbbnJdLm1vZGUgPSBtb2RlOwogCWFycmF5LT5uciA9ICsrbnI7CiB9CisKK3ZvaWQgb2JqZWN0X2FycmF5X3JlbW92ZV9kdXBsaWNhdGVzKHN0cnVjdCBvYmplY3RfYXJyYXkgKmFycmF5KQoreworCWludCByZWYsIHNyYywgZHN0OworCXN0cnVjdCBvYmplY3RfYXJyYXlfZW50cnkgKm9iamVjdHMgPSBhcnJheS0+b2JqZWN0czsKKworCWZvciAocmVmID0gMDsgcmVmIDwgYXJyYXktPm5yIC0gMTsgcmVmKyspIHsKKwkJZm9yIChzcmMgPSByZWYgKyAxLCBkc3QgPSBzcmM7CisJCSAgICAgc3JjIDwgYXJyYXktPm5yOworCQkgICAgIHNyYysrKSB7CisJCQlpZiAoIXN0cmNtcChvYmplY3RzW3JlZl0ubmFtZSwgb2JqZWN0c1tzcmNdLm5hbWUpKQorCQkJCWNvbnRpbnVlOworCQkJaWYgKHNyYyAhPSBkc3QpCisJCQkJb2JqZWN0c1tkc3RdID0gb2JqZWN0c1tzcmNdOworCQkJZHN0Kys7CisJCX0KKwkJYXJyYXktPm5yID0gZHN0OworCX0KK30KZGlmZiAtLWdpdCBhL29iamVjdC5oIGIvb2JqZWN0LmgKaW5kZXggMDM2YmQ2Ni4uODlkZDBjNCAxMDA2NDQKLS0tIGEvb2JqZWN0LmgKKysrIGIvb2JqZWN0LmgKQEAgLTQxLDcgKzQxLDE4IEBACiBleHRlcm4gdW5zaWduZWQgaW50IGdldF9tYXhfb2JqZWN0X2luZGV4KHZvaWQpOwogZXh0ZXJuIHN0cnVjdCBvYmplY3QgKmdldF9pbmRleGVkX29iamVjdCh1bnNpZ25lZCBpbnQpOwogCi0vKiogSW50ZXJuYWwgb25seSAqKi8KKy8qCisgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIHNlZSBpZiB3ZSBoYXZlIGhlYXJkIG9mIHRoZSBvYmplY3QgYmVmb3JlLCBidXQKKyAqIGl0IGNhbiByZXR1cm4gInllcyB3ZSBoYXZlLCBhbmQgaGVyZSBpcyBhIGhhbGYtaW5pdGlhbGlzZWQgb2JqZWN0IgorICogZm9yIGFuIG9iamVjdCB0aGF0IHdlIGhhdmVuJ3QgbG9hZGVkL3BhcnNlZCB5ZXQuCisgKgorICogV2hlbiBwYXJzaW5nIGEgY29tbWl0IHRvIGNyZWF0ZSBhbiBpbi1jb3JlIGNvbW1pdCBvYmplY3QsIGl0cworICogcGFyZW50cyBsaXN0IGhvbGRzIGNvbW1pdCBvYmplY3RzIHRoYXQgcmVwcmVzZW50IGl0cyBwYXJlbnRzLCBidXQKKyAqIHRoZXkgYXJlIGV4cGVjdGVkIHRvIGJlIGxhemlseSBpbml0aWFsaXplZCBhbmQgZG8gbm90IGtub3cgd2hhdAorICogdGhlaXIgdHJlZXMgb3IgcGFyZW50cyBhcmUgeWV0LiAgV2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgc3VjaCBhCisgKiBoYWxmLWluaXRpYWxpc2VkIG9iamVjdHMsIHRoZSBjYWxsZXIgaXMgZXhwZWN0ZWQgdG8gaW5pdGlhbGl6ZSB0aGVtCisgKiBieSBjYWxsaW5nIHBhcnNlX29iamVjdCgpIG9uIHRoZW0uCisgKi8KIHN0cnVjdCBvYmplY3QgKmxvb2t1cF9vYmplY3QoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSk7CiAKIGV4dGVybiB2b2lkICpjcmVhdGVfb2JqZWN0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIGludCB0eXBlLCB2b2lkICpvYmopOwpAQCAtNzEsNSArODIsNiBAQAogLyogT2JqZWN0IGFycmF5IGhhbmRsaW5nIC4uICovCiB2b2lkIGFkZF9vYmplY3RfYXJyYXkoc3RydWN0IG9iamVjdCAqb2JqLCBjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3Qgb2JqZWN0X2FycmF5ICphcnJheSk7CiB2b2lkIGFkZF9vYmplY3RfYXJyYXlfd2l0aF9tb2RlKHN0cnVjdCBvYmplY3QgKm9iaiwgY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IG9iamVjdF9hcnJheSAqYXJyYXksIHVuc2lnbmVkIG1vZGUpOwordm9pZCBvYmplY3RfYXJyYXlfcmVtb3ZlX2R1cGxpY2F0ZXMoc3RydWN0IG9iamVjdF9hcnJheSAqKTsKIAogI2VuZGlmIC8qIE9CSkVDVF9IICovCmRpZmYgLS1naXQgYS9wYWNrLWNoZWNrLmMgYi9wYWNrLWNoZWNrLmMKaW5kZXggZjU5NmJmMi4uOTBjMzNiMSAxMDA2NDQKLS0tIGEvcGFjay1jaGVjay5jCisrKyBiL3BhY2stY2hlY2suYwpAQCAtNDcsNyArNDcsNyBAQAogewogCW9mZl90IGluZGV4X3NpemUgPSBwLT5pbmRleF9zaXplOwogCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmluZGV4X2Jhc2UgPSBwLT5pbmRleF9kYXRhOwotCVNIQV9DVFggY3R4OworCWdpdF9TSEFfQ1RYIGN0eDsKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdLCAqcGFja19zaWc7CiAJb2ZmX3Qgb2Zmc2V0ID0gMCwgcGFja19zaWdfb2ZzID0gcC0+cGFja19zaXplIC0gMjA7CiAJdWludDMyX3QgbnJfb2JqZWN0cywgaTsKQEAgLTYwLDE2ICs2MCwxNiBAQAogCSAqIGltbWVkaWF0ZWx5LgogCSAqLwogCi0JU0hBMV9Jbml0KCZjdHgpOworCWdpdF9TSEExX0luaXQoJmN0eCk7CiAJd2hpbGUgKG9mZnNldCA8IHBhY2tfc2lnX29mcykgewogCQl1bnNpZ25lZCBpbnQgcmVtYWluaW5nOwogCQl1bnNpZ25lZCBjaGFyICppbiA9IHVzZV9wYWNrKHAsIHdfY3Vycywgb2Zmc2V0LCAmcmVtYWluaW5nKTsKIAkJb2Zmc2V0ICs9IHJlbWFpbmluZzsKIAkJaWYgKG9mZnNldCA+IHBhY2tfc2lnX29mcykKIAkJCXJlbWFpbmluZyAtPSAodW5zaWduZWQgaW50KShvZmZzZXQgLSBwYWNrX3NpZ19vZnMpOwotCQlTSEExX1VwZGF0ZSgmY3R4LCBpbiwgcmVtYWluaW5nKTsKKwkJZ2l0X1NIQTFfVXBkYXRlKCZjdHgsIGluLCByZW1haW5pbmcpOwogCX0KLQlTSEExX0ZpbmFsKHNoYTEsICZjdHgpOworCWdpdF9TSEExX0ZpbmFsKHNoYTEsICZjdHgpOwogCXBhY2tfc2lnID0gdXNlX3BhY2socCwgd19jdXJzLCBwYWNrX3NpZ19vZnMsIE5VTEwpOwogCWlmIChoYXNoY21wKHNoYTEsIHBhY2tfc2lnKSkKIAkJZXJyID0gZXJyb3IoIiVzIFNIQTEgY2hlY2tzdW0gbWlzbWF0Y2giLApAQCAtMTM1LDcgKzEzNSw3IEBACiB7CiAJb2ZmX3QgaW5kZXhfc2l6ZTsKIAljb25zdCB1bnNpZ25lZCBjaGFyICppbmRleF9iYXNlOwotCVNIQV9DVFggY3R4OworCWdpdF9TSEFfQ1RYIGN0eDsKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwogCWludCBlcnIgPSAwOwogCXN0cnVjdCBwYWNrX3dpbmRvdyAqd19jdXJzID0gTlVMTDsKQEAgLTE0Niw5ICsxNDYsOSBAQAogCWluZGV4X2Jhc2UgPSBwLT5pbmRleF9kYXRhOwogCiAJLyogVmVyaWZ5IFNIQTEgc3VtIG9mIHRoZSBpbmRleCBmaWxlICovCi0JU0hBMV9Jbml0KCZjdHgpOwotCVNIQTFfVXBkYXRlKCZjdHgsIGluZGV4X2Jhc2UsICh1bnNpZ25lZCBpbnQpKGluZGV4X3NpemUgLSAyMCkpOwotCVNIQTFfRmluYWwoc2hhMSwgJmN0eCk7CisJZ2l0X1NIQTFfSW5pdCgmY3R4KTsKKwlnaXRfU0hBMV9VcGRhdGUoJmN0eCwgaW5kZXhfYmFzZSwgKHVuc2lnbmVkIGludCkoaW5kZXhfc2l6ZSAtIDIwKSk7CisJZ2l0X1NIQTFfRmluYWwoc2hhMSwgJmN0eCk7CiAJaWYgKGhhc2hjbXAoc2hhMSwgaW5kZXhfYmFzZSArIGluZGV4X3NpemUgLSAyMCkpCiAJCWVyciA9IGVycm9yKCJQYWNrZmlsZSBpbmRleCBmb3IgJXMgU0hBMSBtaXNtYXRjaCIsCiAJCQkgICAgcC0+cGFja19uYW1lKTsKZGlmZiAtLWdpdCBhL3BhY2stcmV2aW5kZXguYyBiL3BhY2stcmV2aW5kZXguYwppbmRleCA2MDk2YjYyLi4xZGU1M2M4IDEwMDY0NAotLS0gYS9wYWNrLXJldmluZGV4LmMKKysrIGIvcGFjay1yZXZpbmRleC5jCkBAIC0xNDAsNyArMTQwLDggQEAKIAkJZWxzZQogCQkJbG8gPSBtaSArIDE7CiAJfSB3aGlsZSAobG8gPCBoaSk7Ci0JZGllKCJpbnRlcm5hbCBlcnJvcjogcGFjayByZXZpbmRleCBjb3JydXB0Iik7CisJZXJyb3IoImJhZCBvZmZzZXQgZm9yIHJldmluZGV4Iik7CisJcmV0dXJuIE5VTEw7CiB9CiAKIHZvaWQgZGlzY2FyZF9yZXZpbmRleCh2b2lkKQpkaWZmIC0tZ2l0IGEvcGFjay13cml0ZS5jIGIvcGFjay13cml0ZS5jCmluZGV4IDM2MjFmMWQuLmI0MjYwMDYgMTAwNjQ0Ci0tLSBhL3BhY2std3JpdGUuYworKysgYi9wYWNrLXdyaXRlLmMKQEAgLTI1LDcgKzI1LDcgQEAKIAlvZmZfdCBsYXN0X29ial9vZmZzZXQgPSAwOwogCXVpbnQzMl90IGFycmF5WzI1Nl07CiAJaW50IGksIGZkOwotCVNIQV9DVFggY3R4OworCWdpdF9TSEFfQ1RYIGN0eDsKIAl1aW50MzJfdCBpbmRleF92ZXJzaW9uOwogCiAJaWYgKG5yX29iamVjdHMpIHsKQEAgLTg2LDcgKzg2LDcgQEAKIAlzaGExd3JpdGUoZiwgYXJyYXksIDI1NiAqIDQpOwogCiAJLyogY29tcHV0ZSB0aGUgU0hBMSBoYXNoIG9mIHNvcnRlZCBvYmplY3QgbmFtZXMuICovCi0JU0hBMV9Jbml0KCZjdHgpOworCWdpdF9TSEExX0luaXQoJmN0eCk7CiAKIAkvKgogCSAqIFdyaXRlIHRoZSBhY3R1YWwgU0hBMSBlbnRyaWVzLi4KQEAgLTk5LDcgKzk5LDcgQEAKIAkJCXNoYTF3cml0ZShmLCAmb2Zmc2V0LCA0KTsKIAkJfQogCQlzaGExd3JpdGUoZiwgb2JqLT5zaGExLCAyMCk7Ci0JCVNIQTFfVXBkYXRlKCZjdHgsIG9iai0+c2hhMSwgMjApOworCQlnaXRfU0hBMV9VcGRhdGUoJmN0eCwgb2JqLT5zaGExLCAyMCk7CiAJfQogCiAJaWYgKGluZGV4X3ZlcnNpb24gPj0gMikgewpAQCAtMTQwLDcgKzE0MCw3IEBACiAKIAlzaGExd3JpdGUoZiwgc2hhMSwgMjApOwogCXNoYTFjbG9zZShmLCBOVUxMLCBDU1VNX0ZTWU5DKTsKLQlTSEExX0ZpbmFsKHNoYTEsICZjdHgpOworCWdpdF9TSEExX0ZpbmFsKHNoYTEsICZjdHgpOwogCXJldHVybiBpbmRleF9uYW1lOwogfQogCkBAIC0xNjgsMTIgKzE2OCwxMiBAQAogCQkJIG9mZl90IHBhcnRpYWxfcGFja19vZmZzZXQpCiB7CiAJaW50IGFsaWduZWRfc3osIGJ1Zl9zeiA9IDggKiAxMDI0OwotCVNIQV9DVFggb2xkX3NoYTFfY3R4LCBuZXdfc2hhMV9jdHg7CisJZ2l0X1NIQV9DVFggb2xkX3NoYTFfY3R4LCBuZXdfc2hhMV9jdHg7CiAJc3RydWN0IHBhY2tfaGVhZGVyIGhkcjsKIAljaGFyICpidWY7CiAKLQlTSEExX0luaXQoJm9sZF9zaGExX2N0eCk7Ci0JU0hBMV9Jbml0KCZuZXdfc2hhMV9jdHgpOworCWdpdF9TSEExX0luaXQoJm9sZF9zaGExX2N0eCk7CisJZ2l0X1NIQTFfSW5pdCgmbmV3X3NoYTFfY3R4KTsKIAogCWlmIChsc2VlayhwYWNrX2ZkLCAwLCBTRUVLX1NFVCkgIT0gMCkKIAkJZGllKCJGYWlsZWQgc2Vla2luZyB0byBzdGFydCBvZiAlczogJXMiLCBwYWNrX25hbWUsIHN0cmVycm9yKGVycm5vKSk7CkBAIC0xODEsOSArMTgxLDkgQEAKIAkJZGllKCJVbmFibGUgdG8gcmVyZWFkIGhlYWRlciBvZiAlczogJXMiLCBwYWNrX25hbWUsIHN0cmVycm9yKGVycm5vKSk7CiAJaWYgKGxzZWVrKHBhY2tfZmQsIDAsIFNFRUtfU0VUKSAhPSAwKQogCQlkaWUoIkZhaWxlZCBzZWVraW5nIHRvIHN0YXJ0IG9mICVzOiAlcyIsIHBhY2tfbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKLQlTSEExX1VwZGF0ZSgmb2xkX3NoYTFfY3R4LCAmaGRyLCBzaXplb2YoaGRyKSk7CisJZ2l0X1NIQTFfVXBkYXRlKCZvbGRfc2hhMV9jdHgsICZoZHIsIHNpemVvZihoZHIpKTsKIAloZHIuaGRyX2VudHJpZXMgPSBodG9ubChvYmplY3RfY291bnQpOwotCVNIQTFfVXBkYXRlKCZuZXdfc2hhMV9jdHgsICZoZHIsIHNpemVvZihoZHIpKTsKKwlnaXRfU0hBMV9VcGRhdGUoJm5ld19zaGExX2N0eCwgJmhkciwgc2l6ZW9mKGhkcikpOwogCXdyaXRlX29yX2RpZShwYWNrX2ZkLCAmaGRyLCBzaXplb2YoaGRyKSk7CiAJcGFydGlhbF9wYWNrX29mZnNldCAtPSBzaXplb2YoaGRyKTsKIApAQCAtMTk4LDcgKzE5OCw3IEBACiAJCQlicmVhazsKIAkJaWYgKG4gPCAwKQogCQkJZGllKCJGYWlsZWQgdG8gY2hlY2tzdW0gJXM6ICVzIiwgcGFja19uYW1lLCBzdHJlcnJvcihlcnJubykpOwotCQlTSEExX1VwZGF0ZSgmbmV3X3NoYTFfY3R4LCBidWYsIG4pOworCQlnaXRfU0hBMV9VcGRhdGUoJm5ld19zaGExX2N0eCwgYnVmLCBuKTsKIAogCQlhbGlnbmVkX3N6IC09IG47CiAJCWlmICghYWxpZ25lZF9zeikKQEAgLTIwNywxMSArMjA3LDExIEBACiAJCWlmICghcGFydGlhbF9wYWNrX3NoYTEpCiAJCQljb250aW51ZTsKIAotCQlTSEExX1VwZGF0ZSgmb2xkX3NoYTFfY3R4LCBidWYsIG4pOworCQlnaXRfU0hBMV9VcGRhdGUoJm9sZF9zaGExX2N0eCwgYnVmLCBuKTsKIAkJcGFydGlhbF9wYWNrX29mZnNldCAtPSBuOwogCQlpZiAocGFydGlhbF9wYWNrX29mZnNldCA9PSAwKSB7CiAJCQl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwotCQkJU0hBMV9GaW5hbChzaGExLCAmb2xkX3NoYTFfY3R4KTsKKwkJCWdpdF9TSEExX0ZpbmFsKHNoYTEsICZvbGRfc2hhMV9jdHgpOwogCQkJaWYgKGhhc2hjbXAoc2hhMSwgcGFydGlhbF9wYWNrX3NoYTEpICE9IDApCiAJCQkJZGllKCJVbmV4cGVjdGVkIGNoZWNrc3VtIGZvciAlcyAiCiAJCQkJICAgICIoZGlzayBjb3JydXB0aW9uPykiLCBwYWNrX25hbWUpOwpAQCAtMjIwLDcgKzIyMCw3IEBACiAJCQkgKiBwYWNrLCB3aGljaCBhbHNvIG1lYW5zIG1ha2luZyBwYXJ0aWFsX3BhY2tfb2Zmc2V0CiAJCQkgKiBiaWcgZW5vdWdoIG5vdCB0byBtYXR0ZXIgYW55bW9yZS4KIAkJCSAqLwotCQkJU0hBMV9Jbml0KCZvbGRfc2hhMV9jdHgpOworCQkJZ2l0X1NIQTFfSW5pdCgmb2xkX3NoYTFfY3R4KTsKIAkJCXBhcnRpYWxfcGFja19vZmZzZXQgPSB+cGFydGlhbF9wYWNrX29mZnNldDsKIAkJCXBhcnRpYWxfcGFja19vZmZzZXQgLT0gTVNCKHBhcnRpYWxfcGFja19vZmZzZXQsIDEpOwogCQl9CkBAIC0yMjgsOCArMjI4LDggQEAKIAlmcmVlKGJ1Zik7CiAKIAlpZiAocGFydGlhbF9wYWNrX3NoYTEpCi0JCVNIQTFfRmluYWwocGFydGlhbF9wYWNrX3NoYTEsICZvbGRfc2hhMV9jdHgpOwotCVNIQTFfRmluYWwobmV3X3BhY2tfc2hhMSwgJm5ld19zaGExX2N0eCk7CisJCWdpdF9TSEExX0ZpbmFsKHBhcnRpYWxfcGFja19zaGExLCAmb2xkX3NoYTFfY3R4KTsKKwlnaXRfU0hBMV9GaW5hbChuZXdfcGFja19zaGExLCAmbmV3X3NoYTFfY3R4KTsKIAl3cml0ZV9vcl9kaWUocGFja19mZCwgbmV3X3BhY2tfc2hhMSwgMjApOwogCWZzeW5jX29yX2RpZShwYWNrX2ZkLCBwYWNrX25hbWUpOwogfQpkaWZmIC0tZ2l0IGEvcGFnZXIuYyBiL3BhZ2VyLmMKaW5kZXggMGI3ZTU1Zi4uZjE5ZGRiYyAxMDA2NDQKLS0tIGEvcGFnZXIuYworKysgYi9wYWdlci5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgImNhY2hlLmgiCisjaW5jbHVkZSAicnVuLWNvbW1hbmQuaCIKIAogLyoKICAqIFRoaXMgaXMgc3BsaXQgdXAgZnJvbSB0aGUgcmVzdCBvZiBnaXQgc28gdGhhdCB3ZSBjYW4gZG8KQEAgLTgsNyArOSw3IEBACiBzdGF0aWMgaW50IHNwYXduZWRfcGFnZXI7CiAKICNpZm5kZWYgX19NSU5HVzMyX18KLXN0YXRpYyB2b2lkIHJ1bl9wYWdlcihjb25zdCBjaGFyICpwYWdlcikKK3N0YXRpYyB2b2lkIHBhZ2VyX3ByZWV4ZWModm9pZCkKIHsKIAkvKgogCSAqIFdvcmsgYXJvdW5kIGJ1ZyBpbiAibGVzcyIgYnkgbm90IHN0YXJ0aW5nIGl0IHVudGlsIHdlCkBAIC0yMCwxNyArMjEsMTMgQEAKIAlGRF9TRVQoMCwgJmluKTsKIAlzZWxlY3QoMSwgJmluLCBOVUxMLCAmaW4sIE5VTEwpOwogCi0JZXhlY2xwKHBhZ2VyLCBwYWdlciwgTlVMTCk7Ci0JZXhlY2woIi9iaW4vc2giLCAic2giLCAiLWMiLCBwYWdlciwgTlVMTCk7CisJc2V0ZW52KCJMRVNTIiwgIkZSU1giLCAwKTsKIH0KLSNlbHNlCi0jaW5jbHVkZSAicnVuLWNvbW1hbmQuaCIKKyNlbmRpZgogCiBzdGF0aWMgY29uc3QgY2hhciAqcGFnZXJfYXJndltdID0geyAic2giLCAiLWMiLCBOVUxMLCBOVUxMIH07Ci1zdGF0aWMgc3RydWN0IGNoaWxkX3Byb2Nlc3MgcGFnZXJfcHJvY2VzcyA9IHsKLQkuYXJndiA9IHBhZ2VyX2FyZ3YsCi0JLmluID0gLTEKLX07CitzdGF0aWMgc3RydWN0IGNoaWxkX3Byb2Nlc3MgcGFnZXJfcHJvY2VzczsKKwogc3RhdGljIHZvaWQgd2FpdF9mb3JfcGFnZXIodm9pZCkKIHsKIAlmZmx1c2goc3Rkb3V0KTsKQEAgLTQwLDE0ICszNyw5IEBACiAJY2xvc2UoMik7CiAJZmluaXNoX2NvbW1hbmQoJnBhZ2VyX3Byb2Nlc3MpOwogfQotI2VuZGlmCiAKIHZvaWQgc2V0dXBfcGFnZXIodm9pZCkKIHsKLSNpZm5kZWYgX19NSU5HVzMyX18KLQlwaWRfdCBwaWQ7Ci0JaW50IGZkWzJdOwotI2VuZGlmCiAJY29uc3QgY2hhciAqcGFnZXIgPSBnZXRlbnYoIkdJVF9QQUdFUiIpOwogCiAJaWYgKCFpc2F0dHkoMSkpCkBAIC02NiwzNyArNTgsMTMgQEAKIAogCXNwYXduZWRfcGFnZXIgPSAxOyAvKiBtZWFucyB3ZSBhcmUgZW1pdHRpbmcgdG8gdGVybWluYWwgKi8KIAotI2lmbmRlZiBfX01JTkdXMzJfXwotCWlmIChwaXBlKGZkKSA8IDApCi0JCXJldHVybjsKLQlwaWQgPSBmb3JrKCk7Ci0JaWYgKHBpZCA8IDApIHsKLQkJY2xvc2UoZmRbMF0pOwotCQljbG9zZShmZFsxXSk7Ci0JCXJldHVybjsKLQl9Ci0KLQkvKiByZXR1cm4gaW4gdGhlIGNoaWxkICovCi0JaWYgKCFwaWQpIHsKLQkJZHVwMihmZFsxXSwgMSk7Ci0JCWR1cDIoZmRbMV0sIDIpOwotCQljbG9zZShmZFswXSk7Ci0JCWNsb3NlKGZkWzFdKTsKLQkJcmV0dXJuOwotCX0KLQotCS8qIFRoZSBvcmlnaW5hbCBwcm9jZXNzIHR1cm5zIGludG8gdGhlIFBBR0VSICovCi0JZHVwMihmZFswXSwgMCk7Ci0JY2xvc2UoZmRbMF0pOwotCWNsb3NlKGZkWzFdKTsKLQotCXNldGVudigiTEVTUyIsICJGUlNYIiwgMCk7Ci0JcnVuX3BhZ2VyKHBhZ2VyKTsKLQlkaWUoInVuYWJsZSB0byBleGVjdXRlIHBhZ2VyICclcyciLCBwYWdlcik7Ci0JZXhpdCgyNTUpOwotI2Vsc2UKIAkvKiBzcGF3biB0aGUgcGFnZXIgKi8KIAlwYWdlcl9hcmd2WzJdID0gcGFnZXI7CisJcGFnZXJfcHJvY2Vzcy5hcmd2ID0gcGFnZXJfYXJndjsKKwlwYWdlcl9wcm9jZXNzLmluID0gLTE7CisjaWZuZGVmIF9fTUlOR1czMl9fCisJcGFnZXJfcHJvY2Vzcy5wcmVleGVjX2NiID0gcGFnZXJfcHJlZXhlYzsKKyNlbmRpZgogCWlmIChzdGFydF9jb21tYW5kKCZwYWdlcl9wcm9jZXNzKSkKIAkJcmV0dXJuOwogCkBAIC0xMDgsNyArNzYsNiBAQAogCiAJLyogdGhpcyBtYWtlcyBzdXJlIHRoYXQgdGhlIHBhcmVudCB0ZXJtaW5hdGVzIGFmdGVyIHRoZSBwYWdlciAqLwogCWF0ZXhpdCh3YWl0X2Zvcl9wYWdlcik7Ci0jZW5kaWYKIH0KIAogaW50IHBhZ2VyX2luX3VzZSh2b2lkKQpkaWZmIC0tZ2l0IGEvcGFyc2Utb3B0aW9ucy5jIGIvcGFyc2Utb3B0aW9ucy5jCmluZGV4IGZkMDhiYjQuLjllYjU1Y2MgMTAwNjQ0Ci0tLSBhL3BhcnNlLW9wdGlvbnMuYworKysgYi9wYXJzZS1vcHRpb25zLmMKQEAgLTQ4NCw2ICs0ODQsMjggQEAKIAlyZXR1cm4gMDsKIH0KIAoraW50IHBhcnNlX29wdF92ZXJib3NpdHlfY2IoY29uc3Qgc3RydWN0IG9wdGlvbiAqb3B0LCBjb25zdCBjaGFyICphcmcsCisJCQkgICBpbnQgdW5zZXQpCit7CisJaW50ICp0YXJnZXQgPSBvcHQtPnZhbHVlOworCisJaWYgKHVuc2V0KQorCQkvKiAtLW5vLXF1aWV0LCAtLW5vLXZlcmJvc2UgKi8KKwkJKnRhcmdldCA9IDA7CisJZWxzZSBpZiAob3B0LT5zaG9ydF9uYW1lID09ICd2JykgeworCQlpZiAoKnRhcmdldCA+PSAwKQorCQkJKCp0YXJnZXQpKys7CisJCWVsc2UKKwkJCSp0YXJnZXQgPSAxOworCX0gZWxzZSB7CisJCWlmICgqdGFyZ2V0IDw9IDApCisJCQkoKnRhcmdldCktLTsKKwkJZWxzZQorCQkJKnRhcmdldCA9IC0xOworCX0KKwlyZXR1cm4gMDsKK30KKwogLyoKICAqIFRoaXMgc2hvdWxkIHJlYWxseSBiZSBPUFRJT05fRklMRU5BTUUgdHlwZSBhcyBhIHBhcnQgb2YKICAqIHBhcnNlX29wdGlvbnMgdGhhdCB0YWtlIHByZWZpeCB0byBkbyB0aGlzIHdoaWxlIHBhcnNpbmcuCmRpZmYgLS1naXQgYS9wYXJzZS1vcHRpb25zLmggYi9wYXJzZS1vcHRpb25zLmgKaW5kZXggNTE5OTk1MC4uMDM0MTYyZSAxMDA2NDQKLS0tIGEvcGFyc2Utb3B0aW9ucy5oCisrKyBiL3BhcnNlLW9wdGlvbnMuaApAQCAtMTUwLDkgKzE1MCwxNSBAQAogLyotLS0tLSBzb21lIG9mdGVuIHVzZWQgb3B0aW9ucyAtLS0tLSovCiBleHRlcm4gaW50IHBhcnNlX29wdF9hYmJyZXZfY2IoY29uc3Qgc3RydWN0IG9wdGlvbiAqLCBjb25zdCBjaGFyICosIGludCk7CiBleHRlcm4gaW50IHBhcnNlX29wdF9hcHByb3hpZGF0ZV9jYihjb25zdCBzdHJ1Y3Qgb3B0aW9uICosIGNvbnN0IGNoYXIgKiwgaW50KTsKK2V4dGVybiBpbnQgcGFyc2Vfb3B0X3ZlcmJvc2l0eV9jYihjb25zdCBzdHJ1Y3Qgb3B0aW9uICosIGNvbnN0IGNoYXIgKiwgaW50KTsKIAogI2RlZmluZSBPUFRfX1ZFUkJPU0UodmFyKSAgT1BUX0JPT0xFQU4oJ3YnLCAidmVyYm9zZSIsICh2YXIpLCAiYmUgdmVyYm9zZSIpCiAjZGVmaW5lIE9QVF9fUVVJRVQodmFyKSAgICBPUFRfQk9PTEVBTigncScsICJxdWlldCIsICAgKHZhciksICJiZSBxdWlldCIpCisjZGVmaW5lIE9QVF9fVkVSQk9TSVRZKHZhcikgXAorCXsgT1BUSU9OX0NBTExCQUNLLCAndicsICJ2ZXJib3NlIiwgKHZhciksIE5VTEwsICJiZSBtb3JlIHZlcmJvc2UiLCBcCisJICBQQVJTRV9PUFRfTk9BUkcsICZwYXJzZV9vcHRfdmVyYm9zaXR5X2NiLCAwIH0sIFwKKwl7IE9QVElPTl9DQUxMQkFDSywgJ3EnLCAicXVpZXQiLCAodmFyKSwgTlVMTCwgImJlIG1vcmUgcXVpZXQiLCBcCisJICBQQVJTRV9PUFRfTk9BUkcsICZwYXJzZV9vcHRfdmVyYm9zaXR5X2NiLCAwIH0KICNkZWZpbmUgT1BUX19EUllfUlVOKHZhcikgIE9QVF9CT09MRUFOKCduJywgImRyeS1ydW4iLCAodmFyKSwgImRyeSBydW4iKQogI2RlZmluZSBPUFRfX0FCQlJFVih2YXIpICBcCiAJeyBPUFRJT05fQ0FMTEJBQ0ssIDAsICJhYmJyZXYiLCAodmFyKSwgIm4iLCBcCmRpZmYgLS1naXQgYS9wYXRjaC1pZC5jIGIvcGF0Y2gtaWQuYwppbmRleCA5MzQ5YmM1Li44NzFmMWQyIDEwMDY0NAotLS0gYS9wYXRjaC1pZC5jCisrKyBiL3BhdGNoLWlkLmMKQEAgLTEsNiArMSw2IEBACiAjaW5jbHVkZSAiY2FjaGUuaCIKIAotc3RhdGljIHZvaWQgZmx1c2hfY3VycmVudF9pZChpbnQgcGF0Y2hsZW4sIHVuc2lnbmVkIGNoYXIgKmlkLCBTSEFfQ1RYICpjKQorc3RhdGljIHZvaWQgZmx1c2hfY3VycmVudF9pZChpbnQgcGF0Y2hsZW4sIHVuc2lnbmVkIGNoYXIgKmlkLCBnaXRfU0hBX0NUWCAqYykKIHsKIAl1bnNpZ25lZCBjaGFyIHJlc3VsdFsyMF07CiAJY2hhciBuYW1lWzUwXTsKQEAgLTgsMTAgKzgsMTAgQEAKIAlpZiAoIXBhdGNobGVuKQogCQlyZXR1cm47CiAKLQlTSEExX0ZpbmFsKHJlc3VsdCwgYyk7CisJZ2l0X1NIQTFfRmluYWwocmVzdWx0LCBjKTsKIAltZW1jcHkobmFtZSwgc2hhMV90b19oZXgoaWQpLCA0MSk7CiAJcHJpbnRmKCIlcyAlc1xuIiwgc2hhMV90b19oZXgocmVzdWx0KSwgbmFtZSk7Ci0JU0hBMV9Jbml0KGMpOworCWdpdF9TSEExX0luaXQoYyk7CiB9CiAKIHN0YXRpYyBpbnQgcmVtb3ZlX3NwYWNlKGNoYXIgKmxpbmUpCkBAIC0zMSwxMCArMzEsMTAgQEAKIHsKIAlzdGF0aWMgdW5zaWduZWQgY2hhciBzaGExWzIwXTsKIAlzdGF0aWMgY2hhciBsaW5lWzEwMDBdOwotCVNIQV9DVFggY3R4OworCWdpdF9TSEFfQ1RYIGN0eDsKIAlpbnQgcGF0Y2hsZW4gPSAwOwogCi0JU0hBMV9Jbml0KCZjdHgpOworCWdpdF9TSEExX0luaXQoJmN0eCk7CiAJd2hpbGUgKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgc3RkaW4pICE9IE5VTEwpIHsKIAkJdW5zaWduZWQgY2hhciBuWzIwXTsKIAkJY2hhciAqcCA9IGxpbmU7CkBAIC02Nyw3ICs2Nyw3IEBACiAJCS8qIENvbXB1dGUgdGhlIHNoYSB3aXRob3V0IHdoaXRlc3BhY2UgKi8KIAkJbGVuID0gcmVtb3ZlX3NwYWNlKGxpbmUpOwogCQlwYXRjaGxlbiArPSBsZW47Ci0JCVNIQTFfVXBkYXRlKCZjdHgsIGxpbmUsIGxlbik7CisJCWdpdF9TSEExX1VwZGF0ZSgmY3R4LCBsaW5lLCBsZW4pOwogCX0KIAlmbHVzaF9jdXJyZW50X2lkKHBhdGNobGVuLCBzaGExLCAmY3R4KTsKIH0KZGlmZiAtLWdpdCBhL3BlcmwvR2l0LnBtIGIvcGVybC9HaXQucG0KaW5kZXggMjlhMTc4My4uN2Q3ZjJiMSAxMDA2NDQKLS0tIGEvcGVybC9HaXQucG0KKysrIGIvcGVybC9HaXQucG0KQEAgLTE2NiwxMSArMTY2LDEyIEBACiAJCX0KIAl9CiAKLQlpZiAobm90IGRlZmluZWQgJG9wdHN7UmVwb3NpdG9yeX0gYW5kIG5vdCBkZWZpbmVkICRvcHRze1dvcmtpbmdDb3B5fSkgewotCQkkb3B0c3tEaXJlY3Rvcnl9IHx8PSAnLic7CisJaWYgKG5vdCBkZWZpbmVkICRvcHRze1JlcG9zaXRvcnl9IGFuZCBub3QgZGVmaW5lZCAkb3B0c3tXb3JraW5nQ29weX0KKwkJYW5kIG5vdCBkZWZpbmVkICRvcHRze0RpcmVjdG9yeX0pIHsKKwkJJG9wdHN7RGlyZWN0b3J5fSA9ICcuJzsKIAl9CiAKLQlpZiAoJG9wdHN7RGlyZWN0b3J5fSkgeworCWlmIChkZWZpbmVkICRvcHRze0RpcmVjdG9yeX0pIHsKIAkJLWQgJG9wdHN7RGlyZWN0b3J5fSBvciB0aHJvdyBFcnJvcjo6U2ltcGxlKCJEaXJlY3Rvcnkgbm90IGZvdW5kOiAkISIpOwogCiAJCW15ICRzZWFyY2ggPSBHaXQtPnJlcG9zaXRvcnkoV29ya2luZ0NvcHkgPT4gJG9wdHN7RGlyZWN0b3J5fSk7CkBAIC0yMDQsMTQgKzIwNSwxNCBAQAogCiAJCQl1bmxlc3MgKC1kICIkZGlyL3JlZnMiIGFuZCAtZCAiJGRpci9vYmplY3RzIiBhbmQgLWUgIiRkaXIvSEVBRCIpIHsKIAkJCQkjIE1pbWljayBnaXQtcmV2LXBhcnNlIC0tZ2l0LWRpciBlcnJvciBtZXNzYWdlOgotCQkJCXRocm93IEVycm9yOjpTaW1wbGUoJ2ZhdGFsOiBOb3QgYSBnaXQgcmVwb3NpdG9yeScpOworCQkJCXRocm93IEVycm9yOjpTaW1wbGUoImZhdGFsOiBOb3QgYSBnaXQgcmVwb3NpdG9yeTogJGRpciIpOwogCQkJfQogCQkJbXkgJHNlYXJjaCA9IEdpdC0+cmVwb3NpdG9yeShSZXBvc2l0b3J5ID0+ICRkaXIpOwogCQkJdHJ5IHsKIAkJCQkkc2VhcmNoLT5jb21tYW5kKCdzeW1ib2xpYy1yZWYnLCAnSEVBRCcpOwogCQkJfSBjYXRjaCBHaXQ6OkVycm9yOjpDb21tYW5kIHdpdGggewogCQkJCSMgTWltaWNrIGdpdC1yZXYtcGFyc2UgLS1naXQtZGlyIGVycm9yIG1lc3NhZ2U6Ci0JCQkJdGhyb3cgRXJyb3I6OlNpbXBsZSgnZmF0YWw6IE5vdCBhIGdpdCByZXBvc2l0b3J5Jyk7CisJCQkJdGhyb3cgRXJyb3I6OlNpbXBsZSgiZmF0YWw6IE5vdCBhIGdpdCByZXBvc2l0b3J5OiAkZGlyIik7CiAJCQl9CiAKIAkJCSRvcHRze1JlcG9zaXRvcnl9ID0gYWJzX3BhdGgoJGRpcik7CkBAIC05NjEsOSArOTYyLDcgQEAKID1jdXQKIAogc3ViIHRlbXBfYWNxdWlyZSB7Ci0JbXkgKCRzZWxmLCAkbmFtZSkgPSBfbWF5YmVfc2VsZihAXyk7Ci0KLQlteSAkdGVtcF9mZCA9IF90ZW1wX2NhY2hlKCRuYW1lKTsKKwlteSAkdGVtcF9mZCA9IF90ZW1wX2NhY2hlKEBfKTsKIAogCSRURU1QX0ZJTEVTeyR0ZW1wX2ZkfXtsb2NrZWR9ID0gMTsKIAkkdGVtcF9mZDsKQEAgLTEwMDUsNyArMTAwNCw3IEBACiB9CiAKIHN1YiBfdGVtcF9jYWNoZSB7Ci0JbXkgKCRuYW1lKSA9IEBfOworCW15ICgkc2VsZiwgJG5hbWUpID0gX21heWJlX3NlbGYoQF8pOwogCiAJX3ZlcmlmeV9yZXF1aXJlKCk7CiAKQEAgLTEwMjIsOSArMTAyMSwxNiBAQAogCQkJCSInIHdhcyBjbG9zZWQuIE9wZW5pbmcgcmVwbGFjZW1lbnQuIjsKIAkJfQogCQlteSAkZm5hbWU7CisKKwkJbXkgJHRtcGRpcjsKKwkJaWYgKGRlZmluZWQgJHNlbGYpIHsKKwkJCSR0bXBkaXIgPSAkc2VsZi0+cmVwb19wYXRoKCk7CisJCX0KKwogCQkoJCR0ZW1wX2ZkLCAkZm5hbWUpID0gRmlsZTo6VGVtcC0+dGVtcGZpbGUoCi0JCQknR2l0X1hYWFhYWCcsIFVOTElOSyA9PiAxCisJCQknR2l0X1hYWFhYWCcsIFVOTElOSyA9PiAxLCBESVIgPT4gJHRtcGRpciwKIAkJCSkgb3IgdGhyb3cgRXJyb3I6OlNpbXBsZSgiY291bGRuJ3Qgb3BlbiBuZXcgdGVtcCBmaWxlIik7CisKIAkJJCR0ZW1wX2ZkLT5hdXRvZmx1c2g7CiAJCWJpbm1vZGUgJCR0ZW1wX2ZkOwogCQkkVEVNUF9GSUxFU3skJHRlbXBfZmR9e2ZuYW1lfSA9ICRmbmFtZTsKZGlmZiAtLWdpdCBhL3BwYy9zaGExLmMgYi9wcGMvc2hhMS5jCmluZGV4IDczOGUzNmMuLmVjNmExOTIgMTAwNjQ0Ci0tLSBhL3BwYy9zaGExLmMKKysrIGIvcHBjL3NoYTEuYwpAQCAtMTAsMTAgKzEwLDEwIEBACiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSAic2hhMS5oIgogCi1leHRlcm4gdm9pZCBzaGExX2NvcmUodWludDMyX3QgKmhhc2gsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAsCi0JCSAgICAgIHVuc2lnbmVkIGludCBuYmxvY2tzKTsKK2V4dGVybiB2b2lkIHBwY19zaGExX2NvcmUodWludDMyX3QgKmhhc2gsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAsCisJCQkgIHVuc2lnbmVkIGludCBuYmxvY2tzKTsKIAotaW50IFNIQTFfSW5pdChTSEFfQ1RYICpjKQoraW50IHBwY19TSEExX0luaXQocHBjX1NIQV9DVFggKmMpCiB7CiAJYy0+aGFzaFswXSA9IDB4Njc0NTIzMDE7CiAJYy0+aGFzaFsxXSA9IDB4RUZDREFCODk7CkBAIC0yNSw3ICsyNSw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLWludCBTSEExX1VwZGF0ZShTSEFfQ1RYICpjLCBjb25zdCB2b2lkICpwdHIsIHVuc2lnbmVkIGxvbmcgbikKK2ludCBwcGNfU0hBMV9VcGRhdGUocHBjX1NIQV9DVFggKmMsIGNvbnN0IHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyBuKQogewogCXVuc2lnbmVkIGxvbmcgbmI7CiAJY29uc3QgdW5zaWduZWQgY2hhciAqcCA9IHB0cjsKQEAgLTM4LDEyICszOCwxMiBAQAogCQkJCW5iID0gbjsKIAkJCW1lbWNweSgmYy0+YnVmLmJbYy0+Y250XSwgcCwgbmIpOwogCQkJaWYgKChjLT5jbnQgKz0gbmIpID09IDY0KSB7Ci0JCQkJc2hhMV9jb3JlKGMtPmhhc2gsIGMtPmJ1Zi5iLCAxKTsKKwkJCQlwcGNfc2hhMV9jb3JlKGMtPmhhc2gsIGMtPmJ1Zi5iLCAxKTsKIAkJCQljLT5jbnQgPSAwOwogCQkJfQogCQl9IGVsc2UgewogCQkJbmIgPSBuID4+IDY7Ci0JCQlzaGExX2NvcmUoYy0+aGFzaCwgcCwgbmIpOworCQkJcHBjX3NoYTFfY29yZShjLT5oYXNoLCBwLCBuYik7CiAJCQluYiA8PD0gNjsKIAkJfQogCQluIC09IG5iOwpAQCAtNTIsNyArNTIsNyBAQAogCXJldHVybiAwOwogfQogCi1pbnQgU0hBMV9GaW5hbCh1bnNpZ25lZCBjaGFyICpoYXNoLCBTSEFfQ1RYICpjKQoraW50IHBwY19TSEExX0ZpbmFsKHVuc2lnbmVkIGNoYXIgKmhhc2gsIHBwY19TSEFfQ1RYICpjKQogewogCXVuc2lnbmVkIGludCBjbnQgPSBjLT5jbnQ7CiAKQEAgLTYwLDEzICs2MCwxMyBAQAogCWlmIChjbnQgPiA1NikgewogCQlpZiAoY250IDwgNjQpCiAJCQltZW1zZXQoJmMtPmJ1Zi5iW2NudF0sIDAsIDY0IC0gY250KTsKLQkJc2hhMV9jb3JlKGMtPmhhc2gsIGMtPmJ1Zi5iLCAxKTsKKwkJcHBjX3NoYTFfY29yZShjLT5oYXNoLCBjLT5idWYuYiwgMSk7CiAJCWNudCA9IDA7CiAJfQogCWlmIChjbnQgPCA1NikKIAkJbWVtc2V0KCZjLT5idWYuYltjbnRdLCAwLCA1NiAtIGNudCk7CiAJYy0+YnVmLmxbN10gPSBjLT5sZW47Ci0Jc2hhMV9jb3JlKGMtPmhhc2gsIGMtPmJ1Zi5iLCAxKTsKKwlwcGNfc2hhMV9jb3JlKGMtPmhhc2gsIGMtPmJ1Zi5iLCAxKTsKIAltZW1jcHkoaGFzaCwgYy0+aGFzaCwgMjApOwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvcHBjL3NoYTEuaCBiL3BwYy9zaGExLmgKaW5kZXggYzNjNTFhYS4uYzQwNWY3MyAxMDA2NDQKLS0tIGEvcHBjL3NoYTEuaAorKysgYi9wcGMvc2hhMS5oCkBAIC01LDcgKzUsNyBAQAogICovCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAKLXR5cGVkZWYgc3RydWN0IHNoYV9jb250ZXh0IHsKK3R5cGVkZWYgc3RydWN0IHsKIAl1aW50MzJfdCBoYXNoWzVdOwogCXVpbnQzMl90IGNudDsKIAl1aW50NjRfdCBsZW47CkBAIC0xMyw4ICsxMywxMyBAQAogCQl1bnNpZ25lZCBjaGFyIGJbNjRdOwogCQl1aW50NjRfdCBsWzhdOwogCX0gYnVmOwotfSBTSEFfQ1RYOworfSBwcGNfU0hBX0NUWDsKIAotaW50IFNIQTFfSW5pdChTSEFfQ1RYICpjKTsKLWludCBTSEExX1VwZGF0ZShTSEFfQ1RYICpjLCBjb25zdCB2b2lkICpwLCB1bnNpZ25lZCBsb25nIG4pOwotaW50IFNIQTFfRmluYWwodW5zaWduZWQgY2hhciAqaGFzaCwgU0hBX0NUWCAqYyk7CitpbnQgcHBjX1NIQTFfSW5pdChwcGNfU0hBX0NUWCAqYyk7CitpbnQgcHBjX1NIQTFfVXBkYXRlKHBwY19TSEFfQ1RYICpjLCBjb25zdCB2b2lkICpwLCB1bnNpZ25lZCBsb25nIG4pOworaW50IHBwY19TSEExX0ZpbmFsKHVuc2lnbmVkIGNoYXIgKmhhc2gsIHBwY19TSEFfQ1RYICpjKTsKKworI2RlZmluZSBnaXRfU0hBX0NUWAlwcGNfU0hBX0NUWAorI2RlZmluZSBnaXRfU0hBMV9Jbml0CXBwY19TSEExX0luaXQKKyNkZWZpbmUgZ2l0X1NIQTFfVXBkYXRlCXBwY19TSEExX1VwZGF0ZQorI2RlZmluZSBnaXRfU0hBMV9GaW5hbAlwcGNfU0hBMV9GaW5hbApkaWZmIC0tZ2l0IGEvcHBjL3NoYTFwcGMuUyBiL3BwYy9zaGExcHBjLlMKaW5kZXggZjEzMjY5Ni4uMTcxMWVlZiAxMDA2NDQKLS0tIGEvcHBjL3NoYTFwcGMuUworKysgYi9wcGMvc2hhMXBwYy5TCkBAIC0xNjIsOCArMTYyLDggQEAKIAlTVEVQVVA0KGZuLCAodCkrMTIsIChzKSsxMiwpOwlcCiAJU1RFUFVQNChmbiwgKHQpKzE2LCAocykrMTYsIGxvYWRrKQogCi0JLmdsb2JsCXNoYTFfY29yZQotc2hhMV9jb3JlOgorCS5nbG9ibAlwcGNfc2hhMV9jb3JlCitwcGNfc2hhMV9jb3JlOgogCXN0d3UJJXIxLC04MCglcjEpCiAJc3RtdwklcjEzLDQoJXIxKQogCmRpZmYgLS1naXQgYS9wcmVsb2FkLWluZGV4LmMgYi9wcmVsb2FkLWluZGV4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhlZGM1ZgotLS0gL2Rldi9udWxsCisrKyBiL3ByZWxvYWQtaW5kZXguYwpAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBMaW51cyBUb3J2YWxkcworICovCisjaW5jbHVkZSAiY2FjaGUuaCIKKworI2lmZGVmIE5PX1BUSFJFQURTCitzdGF0aWMgdm9pZCBwcmVsb2FkX2luZGV4KHN0cnVjdCBpbmRleF9zdGF0ZSAqaW5kZXgsIGNvbnN0IGNoYXIgKipwYXRoc3BlYykKK3sKKwk7IC8qIG5vdGhpbmcgKi8KK30KKyNlbHNlCisKKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisKKy8qCisgKiBNb3N0bHkgcmFuZG9tbHkgY2hvc2VuIG1heGltdW0gdGhyZWFkIGNvdW50czogd2UKKyAqIGNhcCB0aGUgcGFyYWxsZWxpc20gdG8gMjAgdGhyZWFkcywgYW5kIHdlIHdhbnQKKyAqIHRvIGhhdmUgYXQgbGVhc3QgNTAwIGxzdGF0J3MgcGVyIHRocmVhZCBmb3IgaXQgdG8KKyAqIGJlIHdvcnRoIHN0YXJ0aW5nIGEgdGhyZWFkLgorICovCisjZGVmaW5lIE1BWF9QQVJBTExFTCAoMjApCisjZGVmaW5lIFRIUkVBRF9DT1NUICg1MDApCisKK3N0cnVjdCB0aHJlYWRfZGF0YSB7CisJcHRocmVhZF90IHB0aHJlYWQ7CisJc3RydWN0IGluZGV4X3N0YXRlICppbmRleDsKKwljb25zdCBjaGFyICoqcGF0aHNwZWM7CisJaW50IG9mZnNldCwgbnI7Cit9OworCitzdGF0aWMgdm9pZCAqcHJlbG9hZF90aHJlYWQodm9pZCAqX2RhdGEpCit7CisJaW50IG5yOworCXN0cnVjdCB0aHJlYWRfZGF0YSAqcCA9IF9kYXRhOworCXN0cnVjdCBpbmRleF9zdGF0ZSAqaW5kZXggPSBwLT5pbmRleDsKKwlzdHJ1Y3QgY2FjaGVfZW50cnkgKipjZXAgPSBpbmRleC0+Y2FjaGUgKyBwLT5vZmZzZXQ7CisKKwluciA9IHAtPm5yOworCWlmIChuciArIHAtPm9mZnNldCA+IGluZGV4LT5jYWNoZV9ucikKKwkJbnIgPSBpbmRleC0+Y2FjaGVfbnIgLSBwLT5vZmZzZXQ7CisKKwlkbyB7CisJCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSAqY2VwKys7CisJCXN0cnVjdCBzdGF0IHN0OworCisJCWlmIChjZV9zdGFnZShjZSkpCisJCQljb250aW51ZTsKKwkJaWYgKGNlX3VwdG9kYXRlKGNlKSkKKwkJCWNvbnRpbnVlOworCQlpZiAoIWNlX3BhdGhfbWF0Y2goY2UsIHAtPnBhdGhzcGVjKSkKKwkJCWNvbnRpbnVlOworCQlpZiAobHN0YXQoY2UtPm5hbWUsICZzdCkpCisJCQljb250aW51ZTsKKwkJaWYgKGllX21hdGNoX3N0YXQoaW5kZXgsIGNlLCAmc3QsIENFX01BVENIX1JBQ1lfSVNfRElSVFkpKQorCQkJY29udGludWU7CisJCWNlX21hcmtfdXB0b2RhdGUoY2UpOworCX0gd2hpbGUgKC0tbnIgPiAwKTsKKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHZvaWQgcHJlbG9hZF9pbmRleChzdHJ1Y3QgaW5kZXhfc3RhdGUgKmluZGV4LCBjb25zdCBjaGFyICoqcGF0aHNwZWMpCit7CisJaW50IHRocmVhZHMsIGksIHdvcmssIG9mZnNldDsKKwlzdHJ1Y3QgdGhyZWFkX2RhdGEgZGF0YVtNQVhfUEFSQUxMRUxdOworCisJaWYgKCFjb3JlX3ByZWxvYWRfaW5kZXgpCisJCXJldHVybjsKKworCXRocmVhZHMgPSBpbmRleC0+Y2FjaGVfbnIgLyBUSFJFQURfQ09TVDsKKwlpZiAodGhyZWFkcyA8IDIpCisJCXJldHVybjsKKwlpZiAodGhyZWFkcyA+IE1BWF9QQVJBTExFTCkKKwkJdGhyZWFkcyA9IE1BWF9QQVJBTExFTDsKKwlvZmZzZXQgPSAwOworCXdvcmsgPSAoaW5kZXgtPmNhY2hlX25yICsgdGhyZWFkcyAtIDEpIC8gdGhyZWFkczsKKwlmb3IgKGkgPSAwOyBpIDwgdGhyZWFkczsgaSsrKSB7CisJCXN0cnVjdCB0aHJlYWRfZGF0YSAqcCA9IGRhdGEraTsKKwkJcC0+aW5kZXggPSBpbmRleDsKKwkJcC0+cGF0aHNwZWMgPSBwYXRoc3BlYzsKKwkJcC0+b2Zmc2V0ID0gb2Zmc2V0OworCQlwLT5uciA9IHdvcms7CisJCW9mZnNldCArPSB3b3JrOworCQlpZiAocHRocmVhZF9jcmVhdGUoJnAtPnB0aHJlYWQsIE5VTEwsIHByZWxvYWRfdGhyZWFkLCBwKSkKKwkJCWRpZSgidW5hYmxlIHRvIGNyZWF0ZSB0aHJlYWRlZCBsc3RhdCIpOworCX0KKwlmb3IgKGkgPSAwOyBpIDwgdGhyZWFkczsgaSsrKSB7CisJCXN0cnVjdCB0aHJlYWRfZGF0YSAqcCA9IGRhdGEraTsKKwkJaWYgKHB0aHJlYWRfam9pbihwLT5wdGhyZWFkLCBOVUxMKSkKKwkJCWRpZSgidW5hYmxlIHRvIGpvaW4gdGhyZWFkZWQgbHN0YXQiKTsKKwl9Cit9CisjZW5kaWYKKworaW50IHJlYWRfaW5kZXhfcHJlbG9hZChzdHJ1Y3QgaW5kZXhfc3RhdGUgKmluZGV4LCBjb25zdCBjaGFyICoqcGF0aHNwZWMpCit7CisJaW50IHJldHZhbCA9IHJlYWRfaW5kZXgoaW5kZXgpOworCisJcHJlbG9hZF9pbmRleChpbmRleCwgcGF0aHNwZWMpOworCXJldHVybiByZXR2YWw7Cit9CmRpZmYgLS1naXQgYS9wcmV0dHkuYyBiL3ByZXR0eS5jCmluZGV4IGEyOWMyOTAuLjQyMWQ5YzUgMTAwNjQ0Ci0tLSBhL3ByZXR0eS5jCisrKyBiL3ByZXR0eS5jCkBAIC01LDYgKzUsNyBAQAogI2luY2x1ZGUgInJldmlzaW9uLmgiCiAjaW5jbHVkZSAic3RyaW5nLWxpc3QuaCIKICNpbmNsdWRlICJtYWlsbWFwLmgiCisjaW5jbHVkZSAibG9nLXRyZWUuaCIKIAogc3RhdGljIGNoYXIgKnVzZXJfZm9ybWF0OwogCkBAIC0xODAsNiArMTgxLDIwIEBACiAJcmV0dXJuICFsZW47CiB9CiAKK3N0YXRpYyBjb25zdCBjaGFyICpza2lwX2VtcHR5X2xpbmVzKGNvbnN0IGNoYXIgKm1zZykKK3sKKwlmb3IgKDs7KSB7CisJCWludCBsaW5lbGVuID0gZ2V0X29uZV9saW5lKG1zZyk7CisJCWludCBsbCA9IGxpbmVsZW47CisJCWlmICghbGluZWxlbikKKwkJCWJyZWFrOworCQlpZiAoIWlzX2VtcHR5X2xpbmUobXNnLCAmbGwpKQorCQkJYnJlYWs7CisJCW1zZyArPSBsaW5lbGVuOworCX0KKwlyZXR1cm4gbXNnOworfQorCiBzdGF0aWMgdm9pZCBhZGRfbWVyZ2VfaW5mbyhlbnVtIGNtaXRfZm10IGZtdCwgc3RydWN0IHN0cmJ1ZiAqc2IsCiAJCQljb25zdCBzdHJ1Y3QgY29tbWl0ICpjb21taXQsIGludCBhYmJyZXYpCiB7CkBAIC0yMzMsNyArMjQ4LDcgQEAKIAogc3RhdGljIGNoYXIgKnJlcGxhY2VfZW5jb2RpbmdfaGVhZGVyKGNoYXIgKmJ1ZiwgY29uc3QgY2hhciAqZW5jb2RpbmcpCiB7Ci0Jc3RydWN0IHN0cmJ1ZiB0bXA7CisJc3RydWN0IHN0cmJ1ZiB0bXAgPSBTVFJCVUZfSU5JVDsKIAlzaXplX3Qgc3RhcnQsIGxlbjsKIAljaGFyICpjcCA9IGJ1ZjsKIApAQCAtMjQ5LDcgKzI2NCw2IEBACiAJCXJldHVybiBidWY7IC8qIHNob3VsZCBub3QgaGFwcGVuIGJ1dCBiZSBkZWZlbnNpdmUgKi8KIAlsZW4gPSBjcCArIDEgLSAoYnVmICsgc3RhcnQpOwogCi0Jc3RyYnVmX2luaXQoJnRtcCwgMCk7CiAJc3RyYnVmX2F0dGFjaCgmdG1wLCBidWYsIHN0cmxlbihidWYpLCBzdHJsZW4oYnVmKSArIDEpOwogCWlmIChpc19lbmNvZGluZ191dGY4KGVuY29kaW5nKSkgewogCQkvKiB3ZSBoYXZlIHJlLWNvZGVkIHRvIFVURi04OyBkcm9wIHRoZSBoZWFkZXIgKi8KQEAgLTQxMCwxMyArNDI0LDE1IEBACiBzdHJ1Y3QgZm9ybWF0X2NvbW1pdF9jb250ZXh0IHsKIAljb25zdCBzdHJ1Y3QgY29tbWl0ICpjb21taXQ7CiAJZW51bSBkYXRlX21vZGUgZG1vZGU7CisJdW5zaWduZWQgY29tbWl0X2hlYWRlcl9wYXJzZWQ6MTsKKwl1bnNpZ25lZCBjb21taXRfbWVzc2FnZV9wYXJzZWQ6MTsKIAogCS8qIFRoZXNlIG9mZnNldHMgYXJlIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgY29tbWl0IG1lc3NhZ2UuICovCi0JaW50IGNvbW1pdF9oZWFkZXJfcGFyc2VkOwotCXN0cnVjdCBjaHVuayBzdWJqZWN0OwogCXN0cnVjdCBjaHVuayBhdXRob3I7CiAJc3RydWN0IGNodW5rIGNvbW1pdHRlcjsKIAlzdHJ1Y3QgY2h1bmsgZW5jb2Rpbmc7CisJc2l6ZV90IG1lc3NhZ2Vfb2ZmOworCXNpemVfdCBzdWJqZWN0X29mZjsKIAlzaXplX3QgYm9keV9vZmY7CiAKIAkvKiBUaGUgZm9sbG93aW5nIG9uZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSByZXN1bHQgc3RydWN0IHN0cmJ1Zi4gKi8KQEAgLTQ0NiwyMyArNDYyLDE0IEBACiB7CiAJY29uc3QgY2hhciAqbXNnID0gY29udGV4dC0+Y29tbWl0LT5idWZmZXI7CiAJaW50IGk7Ci0JZW51bSB7IEhFQURFUiwgU1VCSkVDVCwgQk9EWSB9IHN0YXRlOwogCi0JZm9yIChpID0gMCwgc3RhdGUgPSBIRUFERVI7IG1zZ1tpXSAmJiBzdGF0ZSA8IEJPRFk7IGkrKykgeworCWZvciAoaSA9IDA7IG1zZ1tpXTsgaSsrKSB7CiAJCWludCBlb2w7CiAJCWZvciAoZW9sID0gaTsgbXNnW2VvbF0gJiYgbXNnW2VvbF0gIT0gJ1xuJzsgZW9sKyspCiAJCQk7IC8qIGRvIG5vdGhpbmcgKi8KIAotCQlpZiAoc3RhdGUgPT0gU1VCSkVDVCkgewotCQkJY29udGV4dC0+c3ViamVjdC5vZmYgPSBpOwotCQkJY29udGV4dC0+c3ViamVjdC5sZW4gPSBlb2wgLSBpOwotCQkJaSA9IGVvbDsKLQkJfQogCQlpZiAoaSA9PSBlb2wpIHsKLQkJCXN0YXRlKys7Ci0JCQkvKiBzdHJpcCBlbXB0eSBsaW5lcyAqLwotCQkJd2hpbGUgKG1zZ1tlb2xdID09ICdcbicgJiYgbXNnW2VvbCArIDFdID09ICdcbicpCi0JCQkJZW9sKys7CisJCQlicmVhazsKIAkJfSBlbHNlIGlmICghcHJlZml4Y21wKG1zZyArIGksICJhdXRob3IgIikpIHsKIAkJCWNvbnRleHQtPmF1dGhvci5vZmYgPSBpICsgNzsKIAkJCWNvbnRleHQtPmF1dGhvci5sZW4gPSBlb2wgLSBpIC0gNzsKQEAgLTQ3NCwxMyArNDgxLDY3IEBACiAJCQljb250ZXh0LT5lbmNvZGluZy5sZW4gPSBlb2wgLSBpIC0gOTsKIAkJfQogCQlpID0gZW9sOwotCQlpZiAoIW1zZ1tpXSkKLQkJCWJyZWFrOwogCX0KLQljb250ZXh0LT5ib2R5X29mZiA9IGk7CisJY29udGV4dC0+bWVzc2FnZV9vZmYgPSBpOwogCWNvbnRleHQtPmNvbW1pdF9oZWFkZXJfcGFyc2VkID0gMTsKIH0KIAorY29uc3QgY2hhciAqZm9ybWF0X3N1YmplY3Qoc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IGNoYXIgKm1zZywKKwkJCSAgIGNvbnN0IGNoYXIgKmxpbmVfc2VwYXJhdG9yKQoreworCWludCBmaXJzdCA9IDE7CisKKwlmb3IgKDs7KSB7CisJCWNvbnN0IGNoYXIgKmxpbmUgPSBtc2c7CisJCWludCBsaW5lbGVuID0gZ2V0X29uZV9saW5lKGxpbmUpOworCisJCW1zZyArPSBsaW5lbGVuOworCQlpZiAoIWxpbmVsZW4gfHwgaXNfZW1wdHlfbGluZShsaW5lLCAmbGluZWxlbikpCisJCQlicmVhazsKKworCQlpZiAoIXNiKQorCQkJY29udGludWU7CisJCXN0cmJ1Zl9ncm93KHNiLCBsaW5lbGVuICsgMik7CisJCWlmICghZmlyc3QpCisJCQlzdHJidWZfYWRkc3RyKHNiLCBsaW5lX3NlcGFyYXRvcik7CisJCXN0cmJ1Zl9hZGQoc2IsIGxpbmUsIGxpbmVsZW4pOworCQlmaXJzdCA9IDA7CisJfQorCXJldHVybiBtc2c7Cit9CisKK3N0YXRpYyB2b2lkIHBhcnNlX2NvbW1pdF9tZXNzYWdlKHN0cnVjdCBmb3JtYXRfY29tbWl0X2NvbnRleHQgKmMpCit7CisJY29uc3QgY2hhciAqbXNnID0gYy0+Y29tbWl0LT5idWZmZXIgKyBjLT5tZXNzYWdlX29mZjsKKwljb25zdCBjaGFyICpzdGFydCA9IGMtPmNvbW1pdC0+YnVmZmVyOworCisJbXNnID0gc2tpcF9lbXB0eV9saW5lcyhtc2cpOworCWMtPnN1YmplY3Rfb2ZmID0gbXNnIC0gc3RhcnQ7CisKKwltc2cgPSBmb3JtYXRfc3ViamVjdChOVUxMLCBtc2csIE5VTEwpOworCW1zZyA9IHNraXBfZW1wdHlfbGluZXMobXNnKTsKKwljLT5ib2R5X29mZiA9IG1zZyAtIHN0YXJ0OworCisJYy0+Y29tbWl0X21lc3NhZ2VfcGFyc2VkID0gMTsKK30KKworc3RhdGljIHZvaWQgZm9ybWF0X2RlY29yYXRpb24oc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IHN0cnVjdCBjb21taXQgKmNvbW1pdCkKK3sKKwlzdHJ1Y3QgbmFtZV9kZWNvcmF0aW9uICpkOworCWNvbnN0IGNoYXIgKnByZWZpeCA9ICIgKCI7CisKKwlsb2FkX3JlZl9kZWNvcmF0aW9ucygpOworCWQgPSBsb29rdXBfZGVjb3JhdGlvbigmbmFtZV9kZWNvcmF0aW9uLCAmY29tbWl0LT5vYmplY3QpOworCXdoaWxlIChkKSB7CisJCXN0cmJ1Zl9hZGRzdHIoc2IsIHByZWZpeCk7CisJCXByZWZpeCA9ICIsICI7CisJCXN0cmJ1Zl9hZGRzdHIoc2IsIGQtPm5hbWUpOworCQlkID0gZC0+bmV4dDsKKwl9CisJaWYgKHByZWZpeFswXSA9PSAnLCcpCisJCXN0cmJ1Zl9hZGRjaChzYiwgJyknKTsKK30KKwogc3RhdGljIHNpemVfdCBmb3JtYXRfY29tbWl0X2l0ZW0oc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IGNoYXIgKnBsYWNlaG9sZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNvbnRleHQpCiB7CkBAIC01NzMsNiArNjM0LDkgQEAKIAkJICAgICAgICAgICAgICAgICA/ICc8JwogCQkgICAgICAgICAgICAgICAgIDogJz4nKTsKIAkJcmV0dXJuIDE7CisJY2FzZSAnZCc6CisJCWZvcm1hdF9kZWNvcmF0aW9uKHNiLCBjb21taXQpOworCQlyZXR1cm4gMTsKIAl9CiAKIAkvKiBGb3IgdGhlIHJlc3Qgd2UgaGF2ZSB0byBwYXJzZSB0aGUgY29tbWl0IGhlYWRlci4gKi8KQEAgLTU4MCw5ICs2NDQsNiBAQAogCQlwYXJzZV9jb21taXRfaGVhZGVyKGMpOwogCiAJc3dpdGNoIChwbGFjZWhvbGRlclswXSkgewotCWNhc2UgJ3MnOgkvKiBzdWJqZWN0ICovCi0JCXN0cmJ1Zl9hZGQoc2IsIG1zZyArIGMtPnN1YmplY3Qub2ZmLCBjLT5zdWJqZWN0Lmxlbik7Ci0JCXJldHVybiAxOwogCWNhc2UgJ2EnOgkvKiBhdXRob3IgLi4uICovCiAJCXJldHVybiBmb3JtYXRfcGVyc29uX3BhcnQoc2IsIHBsYWNlaG9sZGVyWzFdLAogCQkJCSAgIG1zZyArIGMtPmF1dGhvci5vZmYsIGMtPmF1dGhvci5sZW4sCkBAIC01OTQsNiArNjU1LDE2IEBACiAJY2FzZSAnZSc6CS8qIGVuY29kaW5nICovCiAJCXN0cmJ1Zl9hZGQoc2IsIG1zZyArIGMtPmVuY29kaW5nLm9mZiwgYy0+ZW5jb2RpbmcubGVuKTsKIAkJcmV0dXJuIDE7CisJfQorCisJLyogTm93IHdlIG5lZWQgdG8gcGFyc2UgdGhlIGNvbW1pdCBtZXNzYWdlLiAqLworCWlmICghYy0+Y29tbWl0X21lc3NhZ2VfcGFyc2VkKQorCQlwYXJzZV9jb21taXRfbWVzc2FnZShjKTsKKworCXN3aXRjaCAocGxhY2Vob2xkZXJbMF0pIHsKKwljYXNlICdzJzoJLyogc3ViamVjdCAqLworCQlmb3JtYXRfc3ViamVjdChzYiwgbXNnICsgYy0+c3ViamVjdF9vZmYsICIgIik7CisJCXJldHVybiAxOwogCWNhc2UgJ2InOgkvKiBib2R5ICovCiAJCXN0cmJ1Zl9hZGRzdHIoc2IsIG1zZyArIGMtPmJvZHlfb2ZmKTsKIAkJcmV0dXJuIDE7CkBAIC02ODQsMjcgKzc1NSwxMSBAQAogCQkgICBjb25zdCBjaGFyICplbmNvZGluZywKIAkJICAgaW50IG5lZWRfOGJpdF9jdGUpCiB7CisJY29uc3QgY2hhciAqbGluZV9zZXBhcmF0b3IgPSAoZm10ID09IENNSVRfRk1UX0VNQUlMKSA/ICJcbiAiIDogIiAiOwogCXN0cnVjdCBzdHJidWYgdGl0bGU7CiAKIAlzdHJidWZfaW5pdCgmdGl0bGUsIDgwKTsKLQotCWZvciAoOzspIHsKLQkJY29uc3QgY2hhciAqbGluZSA9ICptc2dfcDsKLQkJaW50IGxpbmVsZW4gPSBnZXRfb25lX2xpbmUobGluZSk7Ci0KLQkJKm1zZ19wICs9IGxpbmVsZW47Ci0JCWlmICghbGluZWxlbiB8fCBpc19lbXB0eV9saW5lKGxpbmUsICZsaW5lbGVuKSkKLQkJCWJyZWFrOwotCi0JCXN0cmJ1Zl9ncm93KCZ0aXRsZSwgbGluZWxlbiArIDIpOwotCQlpZiAodGl0bGUubGVuKSB7Ci0JCQlpZiAoZm10ID09IENNSVRfRk1UX0VNQUlMKSB7Ci0JCQkJc3RyYnVmX2FkZGNoKCZ0aXRsZSwgJ1xuJyk7Ci0JCQl9Ci0JCQlzdHJidWZfYWRkY2goJnRpdGxlLCAnICcpOwotCQl9Ci0JCXN0cmJ1Zl9hZGQoJnRpdGxlLCBsaW5lLCBsaW5lbGVuKTsKLQl9CisJKm1zZ19wID0gZm9ybWF0X3N1YmplY3QoJnRpdGxlLCAqbXNnX3AsIGxpbmVfc2VwYXJhdG9yKTsKIAogCXN0cmJ1Zl9ncm93KHNiLCB0aXRsZS5sZW4gKyAxMDI0KTsKIAlpZiAoc3ViamVjdCkgewpAQCAtNzYzLDYgKzgxOCwyMCBAQAogCX0KIH0KIAorY2hhciAqcmVlbmNvZGVfY29tbWl0X21lc3NhZ2UoY29uc3Qgc3RydWN0IGNvbW1pdCAqY29tbWl0LCBjb25zdCBjaGFyICoqZW5jb2RpbmdfcCkKK3sKKwljb25zdCBjaGFyICplbmNvZGluZzsKKworCWVuY29kaW5nID0gKGdpdF9sb2dfb3V0cHV0X2VuY29kaW5nCisJCSAgICA/IGdpdF9sb2dfb3V0cHV0X2VuY29kaW5nCisJCSAgICA6IGdpdF9jb21taXRfZW5jb2RpbmcpOworCWlmICghZW5jb2RpbmcpCisJCWVuY29kaW5nID0gInV0Zi04IjsKKwlpZiAoZW5jb2RpbmdfcCkKKwkJKmVuY29kaW5nX3AgPSBlbmNvZGluZzsKKwlyZXR1cm4gbG9nbXNnX3JlZW5jb2RlKGNvbW1pdCwgZW5jb2RpbmcpOworfQorCiB2b2lkIHByZXR0eV9wcmludF9jb21taXQoZW51bSBjbWl0X2ZtdCBmbXQsIGNvbnN0IHN0cnVjdCBjb21taXQgKmNvbW1pdCwKIAkJCSBzdHJ1Y3Qgc3RyYnVmICpzYiwgaW50IGFiYnJldiwKIAkJCSBjb25zdCBjaGFyICpzdWJqZWN0LCBjb25zdCBjaGFyICphZnRlcl9zdWJqZWN0LApAQCAtNzc5LDEyICs4NDgsNyBAQAogCQlyZXR1cm47CiAJfQogCi0JZW5jb2RpbmcgPSAoZ2l0X2xvZ19vdXRwdXRfZW5jb2RpbmcKLQkJICAgID8gZ2l0X2xvZ19vdXRwdXRfZW5jb2RpbmcKLQkJICAgIDogZ2l0X2NvbW1pdF9lbmNvZGluZyk7Ci0JaWYgKCFlbmNvZGluZykKLQkJZW5jb2RpbmcgPSAidXRmLTgiOwotCXJlZW5jb2RlZCA9IGxvZ21zZ19yZWVuY29kZShjb21taXQsIGVuY29kaW5nKTsKKwlyZWVuY29kZWQgPSByZWVuY29kZV9jb21taXRfbWVzc2FnZShjb21taXQsICZlbmNvZGluZyk7CiAJaWYgKHJlZW5jb2RlZCkgewogCQltc2cgPSByZWVuY29kZWQ7CiAJfQpAQCAtODIxLDE1ICs4ODUsNyBAQAogCX0KIAogCS8qIFNraXAgZXhjZXNzIGJsYW5rIGxpbmVzIGF0IHRoZSBiZWdpbm5pbmcgb2YgYm9keSwgaWYgYW55Li4uICovCi0JZm9yICg7OykgewotCQlpbnQgbGluZWxlbiA9IGdldF9vbmVfbGluZShtc2cpOwotCQlpbnQgbGwgPSBsaW5lbGVuOwotCQlpZiAoIWxpbmVsZW4pCi0JCQlicmVhazsKLQkJaWYgKCFpc19lbXB0eV9saW5lKG1zZywgJmxsKSkKLQkJCWJyZWFrOwotCQltc2cgKz0gbGluZWxlbjsKLQl9CisJbXNnID0gc2tpcF9lbXB0eV9saW5lcyhtc2cpOwogCiAJLyogVGhlc2UgZm9ybWF0cyB0cmVhdCB0aGUgdGl0bGUgbGluZSBzcGVjaWFsbHkuICovCiAJaWYgKGZtdCA9PSBDTUlUX0ZNVF9PTkVMSU5FIHx8IGZtdCA9PSBDTUlUX0ZNVF9FTUFJTCkKZGlmZiAtLWdpdCBhL3JlYWQtY2FjaGUuYyBiL3JlYWQtY2FjaGUuYwppbmRleCA1MjVkMTM4Li45NDBlYzc2IDEwMDY0NAotLS0gYS9yZWFkLWNhY2hlLmMKKysrIGIvcmVhZC1jYWNoZS5jCkBAIC04LDYgKzgsMTIgQEAKICNpbmNsdWRlICJjYWNoZS10cmVlLmgiCiAjaW5jbHVkZSAicmVmcy5oIgogI2luY2x1ZGUgImRpci5oIgorI2luY2x1ZGUgInRyZWUuaCIKKyNpbmNsdWRlICJjb21taXQuaCIKKyNpbmNsdWRlICJkaWZmLmgiCisjaW5jbHVkZSAiZGlmZmNvcmUuaCIKKyNpbmNsdWRlICJyZXZpc2lvbi5oIgorI2luY2x1ZGUgImJsb2IuaCIKIAogLyogSW5kZXggZXh0ZW5zaW9ucy4KICAqCkBAIC05MywyNyArOTksMjEgQEAKIHN0YXRpYyBpbnQgY2VfY29tcGFyZV9saW5rKHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIHNpemVfdCBleHBlY3RlZF9zaXplKQogewogCWludCBtYXRjaCA9IC0xOwotCWNoYXIgKnRhcmdldDsKIAl2b2lkICpidWZmZXI7CiAJdW5zaWduZWQgbG9uZyBzaXplOwogCWVudW0gb2JqZWN0X3R5cGUgdHlwZTsKLQlpbnQgbGVuOworCXN0cnVjdCBzdHJidWYgc2IgPSBTVFJCVUZfSU5JVDsKIAotCXRhcmdldCA9IHhtYWxsb2MoZXhwZWN0ZWRfc2l6ZSk7Ci0JbGVuID0gcmVhZGxpbmsoY2UtPm5hbWUsIHRhcmdldCwgZXhwZWN0ZWRfc2l6ZSk7Ci0JaWYgKGxlbiAhPSBleHBlY3RlZF9zaXplKSB7Ci0JCWZyZWUodGFyZ2V0KTsKKwlpZiAoc3RyYnVmX3JlYWRsaW5rKCZzYiwgY2UtPm5hbWUsIGV4cGVjdGVkX3NpemUpKQogCQlyZXR1cm4gLTE7Ci0JfQorCiAJYnVmZmVyID0gcmVhZF9zaGExX2ZpbGUoY2UtPnNoYTEsICZ0eXBlLCAmc2l6ZSk7Ci0JaWYgKCFidWZmZXIpIHsKLQkJZnJlZSh0YXJnZXQpOwotCQlyZXR1cm4gLTE7CisJaWYgKGJ1ZmZlcikgeworCQlpZiAoc2l6ZSA9PSBzYi5sZW4pCisJCQltYXRjaCA9IG1lbWNtcChidWZmZXIsIHNiLmJ1Ziwgc2l6ZSk7CisJCWZyZWUoYnVmZmVyKTsKIAl9Ci0JaWYgKHNpemUgPT0gZXhwZWN0ZWRfc2l6ZSkKLQkJbWF0Y2ggPSBtZW1jbXAoYnVmZmVyLCB0YXJnZXQsIHNpemUpOwotCWZyZWUoYnVmZmVyKTsKLQlmcmVlKHRhcmdldCk7CisJc3RyYnVmX3JlbGVhc2UoJnNiKTsKIAlyZXR1cm4gbWF0Y2g7CiB9CiAKQEAgLTE1NCw3ICsxNTQsNyBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGlzX2VtcHR5X2Jsb2Jfc2hhMShjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExKQoraW50IGlzX2VtcHR5X2Jsb2Jfc2hhMShjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExKQogewogCXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGVtcHR5X2Jsb2Jfc2hhMVsyMF0gPSB7CiAJCTB4ZTYsMHg5ZCwweGUyLDB4OWIsMHhiMiwweGQxLDB4ZDYsMHg0MywweDRiLDB4OGIsCkBAIC0yNTEsNiArMjUxLDE0IEBACiAJaWYgKCFpZ25vcmVfdmFsaWQgJiYgKGNlLT5jZV9mbGFncyAmIENFX1ZBTElEKSkKIAkJcmV0dXJuIDA7CiAKKwkvKgorCSAqIEludGVudC10by1hZGQgZW50cmllcyBoYXZlIG5vdCBiZWVuIGFkZGVkLCBzbyB0aGUgaW5kZXggZW50cnkKKwkgKiBieSBkZWZpbml0aW9uIG5ldmVyIG1hdGNoZXMgd2hhdCBpcyBpbiB0aGUgd29yayB0cmVlIHVudGlsIGl0CisJICogYWN0dWFsbHkgZ2V0cyBhZGRlZC4KKwkgKi8KKwlpZiAoY2UtPmNlX2ZsYWdzICYgQ0VfSU5URU5UX1RPX0FERCkKKwkJcmV0dXJuIERBVEFfQ0hBTkdFRCB8IFRZUEVfQ0hBTkdFRCB8IE1PREVfQ0hBTkdFRDsKKwogCWNoYW5nZWQgPSBjZV9tYXRjaF9zdGF0X2Jhc2ljKGNlLCBzdCk7CiAKIAkvKgpAQCAtNTA2LDYgKzUxNCwxNCBAQAogCXJldHVybiBuZXc7CiB9CiAKK3N0YXRpYyB2b2lkIHJlY29yZF9pbnRlbnRfdG9fYWRkKHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UpCit7CisJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKKwlpZiAod3JpdGVfc2hhMV9maWxlKCIiLCAwLCBibG9iX3R5cGUsIHNoYTEpKQorCQlkaWUoImNhbm5vdCBjcmVhdGUgYW4gZW1wdHkgYmxvYiBpbiB0aGUgb2JqZWN0IGRhdGFiYXNlIik7CisJaGFzaGNweShjZS0+c2hhMSwgc2hhMSk7Cit9CisKIGludCBhZGRfdG9faW5kZXgoc3RydWN0IGluZGV4X3N0YXRlICppc3RhdGUsIGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ICpzdCwgaW50IGZsYWdzKQogewogCWludCBzaXplLCBuYW1lbGVuLCB3YXNfc2FtZTsKQEAgLTUxNCw2ICs1MzAsOSBAQAogCXVuc2lnbmVkIGNlX29wdGlvbiA9IENFX01BVENIX0lHTk9SRV9WQUxJRHxDRV9NQVRDSF9SQUNZX0lTX0RJUlRZOwogCWludCB2ZXJib3NlID0gZmxhZ3MgJiAoQUREX0NBQ0hFX1ZFUkJPU0UgfCBBRERfQ0FDSEVfUFJFVEVORCk7CiAJaW50IHByZXRlbmQgPSBmbGFncyAmIEFERF9DQUNIRV9QUkVURU5EOworCWludCBpbnRlbnRfb25seSA9IGZsYWdzICYgQUREX0NBQ0hFX0lOVEVOVDsKKwlpbnQgYWRkX29wdGlvbiA9IChBRERfQ0FDSEVfT0tfVE9fQUREfEFERF9DQUNIRV9PS19UT19SRVBMQUNFfAorCQkJICAoaW50ZW50X29ubHkgPyBBRERfQ0FDSEVfTkVXX09OTFkgOiAwKSk7CiAKIAlpZiAoIVNfSVNSRUcoc3RfbW9kZSkgJiYgIVNfSVNMTksoc3RfbW9kZSkgJiYgIVNfSVNESVIoc3RfbW9kZSkpCiAJCXJldHVybiBlcnJvcigiJXM6IGNhbiBvbmx5IGFkZCByZWd1bGFyIGZpbGVzLCBzeW1ib2xpYyBsaW5rcyBvciBnaXQtZGlyZWN0b3JpZXMiLCBwYXRoKTsKQEAgLTUyNyw3ICs1NDYsMTAgQEAKIAljZSA9IHhjYWxsb2MoMSwgc2l6ZSk7CiAJbWVtY3B5KGNlLT5uYW1lLCBwYXRoLCBuYW1lbGVuKTsKIAljZS0+Y2VfZmxhZ3MgPSBuYW1lbGVuOwotCWZpbGxfc3RhdF9jYWNoZV9pbmZvKGNlLCBzdCk7CisJaWYgKCFpbnRlbnRfb25seSkKKwkJZmlsbF9zdGF0X2NhY2hlX2luZm8oY2UsIHN0KTsKKwllbHNlCisJCWNlLT5jZV9mbGFncyB8PSBDRV9JTlRFTlRfVE9fQUREOwogCiAJaWYgKHRydXN0X2V4ZWN1dGFibGVfYml0ICYmIGhhc19zeW1saW5rcykKIAkJY2UtPmNlX21vZGUgPSBjcmVhdGVfY2VfbW9kZShzdF9tb2RlKTsKQEAgLTU1MCw4ICs1NzIsMTIgQEAKIAkJYWxpYXMtPmNlX2ZsYWdzIHw9IENFX0FEREVEOwogCQlyZXR1cm4gMDsKIAl9Ci0JaWYgKGluZGV4X3BhdGgoY2UtPnNoYTEsIHBhdGgsIHN0LCAxKSkKLQkJcmV0dXJuIGVycm9yKCJ1bmFibGUgdG8gaW5kZXggZmlsZSAlcyIsIHBhdGgpOworCWlmICghaW50ZW50X29ubHkpIHsKKwkJaWYgKGluZGV4X3BhdGgoY2UtPnNoYTEsIHBhdGgsIHN0LCAxKSkKKwkJCXJldHVybiBlcnJvcigidW5hYmxlIHRvIGluZGV4IGZpbGUgJXMiLCBwYXRoKTsKKwl9IGVsc2UKKwkJcmVjb3JkX2ludGVudF90b19hZGQoY2UpOworCiAJaWYgKGlnbm9yZV9jYXNlICYmIGFsaWFzICYmIGRpZmZlcmVudF9uYW1lKGNlLCBhbGlhcykpCiAJCWNlID0gY3JlYXRlX2FsaWFzX2NlKGNlLCBhbGlhcyk7CiAJY2UtPmNlX2ZsYWdzIHw9IENFX0FEREVEOwpAQCAtNTY0LDcgKzU5MCw3IEBACiAKIAlpZiAocHJldGVuZCkKIAkJOwotCWVsc2UgaWYgKGFkZF9pbmRleF9lbnRyeShpc3RhdGUsIGNlLCBBRERfQ0FDSEVfT0tfVE9fQUREfEFERF9DQUNIRV9PS19UT19SRVBMQUNFKSkKKwllbHNlIGlmIChhZGRfaW5kZXhfZW50cnkoaXN0YXRlLCBjZSwgYWRkX29wdGlvbikpCiAJCXJldHVybiBlcnJvcigidW5hYmxlIHRvIGFkZCAlcyB0byBpbmRleCIscGF0aCk7CiAJaWYgKHZlcmJvc2UgJiYgIXdhc19zYW1lKQogCQlwcmludGYoImFkZCAnJXMnXG4iLCBwYXRoKTsKQEAgLTU4Niw4ICs2MTIsMTAgQEAKIAlpbnQgc2l6ZSwgbGVuOwogCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2U7CiAKLQlpZiAoIXZlcmlmeV9wYXRoKHBhdGgpKQorCWlmICghdmVyaWZ5X3BhdGgocGF0aCkpIHsKKwkJZXJyb3IoIkludmFsaWQgcGF0aCAnJXMnIiwgcGF0aCk7CiAJCXJldHVybiBOVUxMOworCX0KIAogCWxlbiA9IHN0cmxlbihwYXRoKTsKIAlzaXplID0gY2FjaGVfZW50cnlfc2l6ZShsZW4pOwpAQCAtODQzLDEzICs4NzEsMTUgQEAKIAlpbnQgb2tfdG9fYWRkID0gb3B0aW9uICYgQUREX0NBQ0hFX09LX1RPX0FERDsKIAlpbnQgb2tfdG9fcmVwbGFjZSA9IG9wdGlvbiAmIEFERF9DQUNIRV9PS19UT19SRVBMQUNFOwogCWludCBza2lwX2RmX2NoZWNrID0gb3B0aW9uICYgQUREX0NBQ0hFX1NLSVBfREZDSEVDSzsKKwlpbnQgbmV3X29ubHkgPSBvcHRpb24gJiBBRERfQ0FDSEVfTkVXX09OTFk7CiAKIAljYWNoZV90cmVlX2ludmFsaWRhdGVfcGF0aChpc3RhdGUtPmNhY2hlX3RyZWUsIGNlLT5uYW1lKTsKIAlwb3MgPSBpbmRleF9uYW1lX3Bvcyhpc3RhdGUsIGNlLT5uYW1lLCBjZS0+Y2VfZmxhZ3MpOwogCiAJLyogZXhpc3RpbmcgbWF0Y2g/IEp1c3QgcmVwbGFjZSBpdC4gKi8KIAlpZiAocG9zID49IDApIHsKLQkJcmVwbGFjZV9pbmRleF9lbnRyeShpc3RhdGUsIHBvcywgY2UpOworCQlpZiAoIW5ld19vbmx5KQorCQkJcmVwbGFjZV9pbmRleF9lbnRyeShpc3RhdGUsIHBvcywgY2UpOwogCQlyZXR1cm4gMDsKIAl9CiAJcG9zID0gLXBvcy0xOwpAQCAtODY5LDcgKzg5OSw3IEBACiAJaWYgKCFva190b19hZGQpCiAJCXJldHVybiAtMTsKIAlpZiAoIXZlcmlmeV9wYXRoKGNlLT5uYW1lKSkKLQkJcmV0dXJuIC0xOworCQlyZXR1cm4gZXJyb3IoIkludmFsaWQgcGF0aCAnJXMnIiwgY2UtPm5hbWUpOwogCiAJaWYgKCFza2lwX2RmX2NoZWNrICYmCiAJICAgIGNoZWNrX2ZpbGVfZGlyZWN0b3J5X2NvbmZsaWN0KGlzdGF0ZSwgY2UsIHBvcywgb2tfdG9fcmVwbGFjZSkpIHsKQEAgLTEwNjcsMTYgKzEwOTcsMTYgQEAKIAogc3RhdGljIGludCB2ZXJpZnlfaGRyKHN0cnVjdCBjYWNoZV9oZWFkZXIgKmhkciwgdW5zaWduZWQgbG9uZyBzaXplKQogewotCVNIQV9DVFggYzsKKwlnaXRfU0hBX0NUWCBjOwogCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CiAKIAlpZiAoaGRyLT5oZHJfc2lnbmF0dXJlICE9IGh0b25sKENBQ0hFX1NJR05BVFVSRSkpCiAJCXJldHVybiBlcnJvcigiYmFkIHNpZ25hdHVyZSIpOwotCWlmIChoZHItPmhkcl92ZXJzaW9uICE9IGh0b25sKDIpKQorCWlmIChoZHItPmhkcl92ZXJzaW9uICE9IGh0b25sKDIpICYmIGhkci0+aGRyX3ZlcnNpb24gIT0gaHRvbmwoMykpCiAJCXJldHVybiBlcnJvcigiYmFkIGluZGV4IHZlcnNpb24iKTsKLQlTSEExX0luaXQoJmMpOwotCVNIQTFfVXBkYXRlKCZjLCBoZHIsIHNpemUgLSAyMCk7Ci0JU0hBMV9GaW5hbChzaGExLCAmYyk7CisJZ2l0X1NIQTFfSW5pdCgmYyk7CisJZ2l0X1NIQTFfVXBkYXRlKCZjLCBoZHIsIHNpemUgLSAyMCk7CisJZ2l0X1NIQTFfRmluYWwoc2hhMSwgJmMpOwogCWlmIChoYXNoY21wKHNoYTEsICh1bnNpZ25lZCBjaGFyICopaGRyICsgc2l6ZSAtIDIwKSkKIAkJcmV0dXJuIGVycm9yKCJiYWQgaW5kZXggZmlsZSBzaGExIHNpZ25hdHVyZSIpOwogCXJldHVybiAwOwpAQCAtMTEwNyw2ICsxMTM3LDcgQEAKIHN0YXRpYyB2b2lkIGNvbnZlcnRfZnJvbV9kaXNrKHN0cnVjdCBvbmRpc2tfY2FjaGVfZW50cnkgKm9uZGlzaywgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSkKIHsKIAlzaXplX3QgbGVuOworCWNvbnN0IGNoYXIgKm5hbWU7CiAKIAljZS0+Y2VfY3RpbWUgPSBudG9obChvbmRpc2stPmN0aW1lLnNlYyk7CiAJY2UtPmNlX210aW1lID0gbnRvaGwob25kaXNrLT5tdGltZS5zZWMpOwpAQCAtMTExOCwxNiArMTE0OSwzMiBAQAogCWNlLT5jZV9zaXplICA9IG50b2hsKG9uZGlzay0+c2l6ZSk7CiAJLyogT24tZGlzayBmbGFncyBhcmUganVzdCAxNiBiaXRzICovCiAJY2UtPmNlX2ZsYWdzID0gbnRvaHMob25kaXNrLT5mbGFncyk7CisKIAloYXNoY3B5KGNlLT5zaGExLCBvbmRpc2stPnNoYTEpOwogCiAJbGVuID0gY2UtPmNlX2ZsYWdzICYgQ0VfTkFNRU1BU0s7CisKKwlpZiAoY2UtPmNlX2ZsYWdzICYgQ0VfRVhURU5ERUQpIHsKKwkJc3RydWN0IG9uZGlza19jYWNoZV9lbnRyeV9leHRlbmRlZCAqb25kaXNrMjsKKwkJaW50IGV4dGVuZGVkX2ZsYWdzOworCQlvbmRpc2syID0gKHN0cnVjdCBvbmRpc2tfY2FjaGVfZW50cnlfZXh0ZW5kZWQgKilvbmRpc2s7CisJCWV4dGVuZGVkX2ZsYWdzID0gbnRvaHMob25kaXNrMi0+ZmxhZ3MyKSA8PCAxNjsKKwkJLyogV2UgZG8gbm90IHlldCB1bmRlcnN0YW5kIGFueSBiaXQgb3V0IG9mIENFX0VYVEVOREVEX0ZMQUdTICovCisJCWlmIChleHRlbmRlZF9mbGFncyAmIH5DRV9FWFRFTkRFRF9GTEFHUykKKwkJCWRpZSgiVW5rbm93biBpbmRleCBlbnRyeSBmb3JtYXQgJTA4eCIsIGV4dGVuZGVkX2ZsYWdzKTsKKwkJY2UtPmNlX2ZsYWdzIHw9IGV4dGVuZGVkX2ZsYWdzOworCQluYW1lID0gb25kaXNrMi0+bmFtZTsKKwl9CisJZWxzZQorCQluYW1lID0gb25kaXNrLT5uYW1lOworCiAJaWYgKGxlbiA9PSBDRV9OQU1FTUFTSykKLQkJbGVuID0gc3RybGVuKG9uZGlzay0+bmFtZSk7CisJCWxlbiA9IHN0cmxlbihuYW1lKTsKIAkvKgogCSAqIE5FRURTV09SSzogSWYgdGhlIG9yaWdpbmFsIGluZGV4IGlzIGNyYWZ0ZWQsIHRoaXMgY29weSBjb3VsZAogCSAqIGdvIHVuY2hlY2tlZC4KIAkgKi8KLQltZW1jcHkoY2UtPm5hbWUsIG9uZGlzay0+bmFtZSwgbGVuICsgMSk7CisJbWVtY3B5KGNlLT5uYW1lLCBuYW1lLCBsZW4gKyAxKTsKIH0KIAogc3RhdGljIGlubGluZSBzaXplX3QgZXN0aW1hdGVfY2FjaGVfc2l6ZShzaXplX3Qgb25kaXNrX3NpemUsIHVuc2lnbmVkIGludCBlbnRyaWVzKQpAQCAtMTI3NCwxMSArMTMyMSwxMSBAQAogc3RhdGljIHVuc2lnbmVkIGNoYXIgd3JpdGVfYnVmZmVyW1dSSVRFX0JVRkZFUl9TSVpFXTsKIHN0YXRpYyB1bnNpZ25lZCBsb25nIHdyaXRlX2J1ZmZlcl9sZW47CiAKLXN0YXRpYyBpbnQgY2Vfd3JpdGVfZmx1c2goU0hBX0NUWCAqY29udGV4dCwgaW50IGZkKQorc3RhdGljIGludCBjZV93cml0ZV9mbHVzaChnaXRfU0hBX0NUWCAqY29udGV4dCwgaW50IGZkKQogewogCXVuc2lnbmVkIGludCBidWZmZXJlZCA9IHdyaXRlX2J1ZmZlcl9sZW47CiAJaWYgKGJ1ZmZlcmVkKSB7Ci0JCVNIQTFfVXBkYXRlKGNvbnRleHQsIHdyaXRlX2J1ZmZlciwgYnVmZmVyZWQpOworCQlnaXRfU0hBMV9VcGRhdGUoY29udGV4dCwgd3JpdGVfYnVmZmVyLCBidWZmZXJlZCk7CiAJCWlmICh3cml0ZV9pbl9mdWxsKGZkLCB3cml0ZV9idWZmZXIsIGJ1ZmZlcmVkKSAhPSBidWZmZXJlZCkKIAkJCXJldHVybiAtMTsKIAkJd3JpdGVfYnVmZmVyX2xlbiA9IDA7CkBAIC0xMjg2LDcgKzEzMzMsNyBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGNlX3dyaXRlKFNIQV9DVFggKmNvbnRleHQsIGludCBmZCwgdm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGxlbikKK3N0YXRpYyBpbnQgY2Vfd3JpdGUoZ2l0X1NIQV9DVFggKmNvbnRleHQsIGludCBmZCwgdm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGxlbikKIHsKIAl3aGlsZSAobGVuKSB7CiAJCXVuc2lnbmVkIGludCBidWZmZXJlZCA9IHdyaXRlX2J1ZmZlcl9sZW47CkBAIC0xMzA4LDcgKzEzNTUsNyBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHdyaXRlX2luZGV4X2V4dF9oZWFkZXIoU0hBX0NUWCAqY29udGV4dCwgaW50IGZkLAorc3RhdGljIGludCB3cml0ZV9pbmRleF9leHRfaGVhZGVyKGdpdF9TSEFfQ1RYICpjb250ZXh0LCBpbnQgZmQsCiAJCQkJICB1bnNpZ25lZCBpbnQgZXh0LCB1bnNpZ25lZCBpbnQgc3opCiB7CiAJZXh0ID0gaHRvbmwoZXh0KTsKQEAgLTEzMTcsMTMgKzEzNjQsMTMgQEAKIAkJKGNlX3dyaXRlKGNvbnRleHQsIGZkLCAmc3osIDQpIDwgMCkpID8gLTEgOiAwOwogfQogCi1zdGF0aWMgaW50IGNlX2ZsdXNoKFNIQV9DVFggKmNvbnRleHQsIGludCBmZCkKK3N0YXRpYyBpbnQgY2VfZmx1c2goZ2l0X1NIQV9DVFggKmNvbnRleHQsIGludCBmZCkKIHsKIAl1bnNpZ25lZCBpbnQgbGVmdCA9IHdyaXRlX2J1ZmZlcl9sZW47CiAKIAlpZiAobGVmdCkgewogCQl3cml0ZV9idWZmZXJfbGVuID0gMDsKLQkJU0hBMV9VcGRhdGUoY29udGV4dCwgd3JpdGVfYnVmZmVyLCBsZWZ0KTsKKwkJZ2l0X1NIQTFfVXBkYXRlKGNvbnRleHQsIHdyaXRlX2J1ZmZlciwgbGVmdCk7CiAJfQogCiAJLyogRmx1c2ggZmlyc3QgaWYgbm90IGVub3VnaCBzcGFjZSBmb3IgU0hBMSBzaWduYXR1cmUgKi8KQEAgLTEzMzQsNyArMTM4MSw3IEBACiAJfQogCiAJLyogQXBwZW5kIHRoZSBTSEExIHNpZ25hdHVyZSBhdCB0aGUgZW5kICovCi0JU0hBMV9GaW5hbCh3cml0ZV9idWZmZXIgKyBsZWZ0LCBjb250ZXh0KTsKKwlnaXRfU0hBMV9GaW5hbCh3cml0ZV9idWZmZXIgKyBsZWZ0LCBjb250ZXh0KTsKIAlsZWZ0ICs9IDIwOwogCXJldHVybiAod3JpdGVfaW5fZnVsbChmZCwgd3JpdGVfYnVmZmVyLCBsZWZ0KSAhPSBsZWZ0KSA/IC0xIDogMDsKIH0KQEAgLTEzODgsMTAgKzE0MzUsMTEgQEAKIAl9CiB9CiAKLXN0YXRpYyBpbnQgY2Vfd3JpdGVfZW50cnkoU0hBX0NUWCAqYywgaW50IGZkLCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlKQorc3RhdGljIGludCBjZV93cml0ZV9lbnRyeShnaXRfU0hBX0NUWCAqYywgaW50IGZkLCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlKQogewogCWludCBzaXplID0gb25kaXNrX2NlX3NpemUoY2UpOwogCXN0cnVjdCBvbmRpc2tfY2FjaGVfZW50cnkgKm9uZGlzayA9IHhjYWxsb2MoMSwgc2l6ZSk7CisJY2hhciAqbmFtZTsKIAogCW9uZGlzay0+Y3RpbWUuc2VjID0gaHRvbmwoY2UtPmNlX2N0aW1lKTsKIAlvbmRpc2stPmN0aW1lLm5zZWMgPSAwOwpAQCAtMTQwNSwyOCArMTQ1Myw0NSBAQAogCW9uZGlzay0+c2l6ZSA9IGh0b25sKGNlLT5jZV9zaXplKTsKIAloYXNoY3B5KG9uZGlzay0+c2hhMSwgY2UtPnNoYTEpOwogCW9uZGlzay0+ZmxhZ3MgPSBodG9ucyhjZS0+Y2VfZmxhZ3MpOwotCW1lbWNweShvbmRpc2stPm5hbWUsIGNlLT5uYW1lLCBjZV9uYW1lbGVuKGNlKSk7CisJaWYgKGNlLT5jZV9mbGFncyAmIENFX0VYVEVOREVEKSB7CisJCXN0cnVjdCBvbmRpc2tfY2FjaGVfZW50cnlfZXh0ZW5kZWQgKm9uZGlzazI7CisJCW9uZGlzazIgPSAoc3RydWN0IG9uZGlza19jYWNoZV9lbnRyeV9leHRlbmRlZCAqKW9uZGlzazsKKwkJb25kaXNrMi0+ZmxhZ3MyID0gaHRvbnMoKGNlLT5jZV9mbGFncyAmIENFX0VYVEVOREVEX0ZMQUdTKSA+PiAxNik7CisJCW5hbWUgPSBvbmRpc2syLT5uYW1lOworCX0KKwllbHNlCisJCW5hbWUgPSBvbmRpc2stPm5hbWU7CisJbWVtY3B5KG5hbWUsIGNlLT5uYW1lLCBjZV9uYW1lbGVuKGNlKSk7CiAKIAlyZXR1cm4gY2Vfd3JpdGUoYywgZmQsIG9uZGlzaywgc2l6ZSk7CiB9CiAKIGludCB3cml0ZV9pbmRleChjb25zdCBzdHJ1Y3QgaW5kZXhfc3RhdGUgKmlzdGF0ZSwgaW50IG5ld2ZkKQogewotCVNIQV9DVFggYzsKKwlnaXRfU0hBX0NUWCBjOwogCXN0cnVjdCBjYWNoZV9oZWFkZXIgaGRyOwotCWludCBpLCBlcnIsIHJlbW92ZWQ7CisJaW50IGksIGVyciwgcmVtb3ZlZCwgZXh0ZW5kZWQ7CiAJc3RydWN0IGNhY2hlX2VudHJ5ICoqY2FjaGUgPSBpc3RhdGUtPmNhY2hlOwogCWludCBlbnRyaWVzID0gaXN0YXRlLT5jYWNoZV9ucjsKIAotCWZvciAoaSA9IHJlbW92ZWQgPSAwOyBpIDwgZW50cmllczsgaSsrKQorCWZvciAoaSA9IHJlbW92ZWQgPSBleHRlbmRlZCA9IDA7IGkgPCBlbnRyaWVzOyBpKyspIHsKIAkJaWYgKGNhY2hlW2ldLT5jZV9mbGFncyAmIENFX1JFTU9WRSkKIAkJCXJlbW92ZWQrKzsKIAorCQkvKiByZWR1Y2UgZXh0ZW5kZWQgZW50cmllcyBpZiBwb3NzaWJsZSAqLworCQljYWNoZVtpXS0+Y2VfZmxhZ3MgJj0gfkNFX0VYVEVOREVEOworCQlpZiAoY2FjaGVbaV0tPmNlX2ZsYWdzICYgQ0VfRVhURU5ERURfRkxBR1MpIHsKKwkJCWV4dGVuZGVkKys7CisJCQljYWNoZVtpXS0+Y2VfZmxhZ3MgfD0gQ0VfRVhURU5ERUQ7CisJCX0KKwl9CisKIAloZHIuaGRyX3NpZ25hdHVyZSA9IGh0b25sKENBQ0hFX1NJR05BVFVSRSk7Ci0JaGRyLmhkcl92ZXJzaW9uID0gaHRvbmwoMik7CisJLyogZm9yIGV4dGVuZGVkIGZvcm1hdCwgaW5jcmVhc2UgdmVyc2lvbiBzbyBvbGRlciBnaXQgd29uJ3QgdHJ5IHRvIHJlYWQgaXQgKi8KKwloZHIuaGRyX3ZlcnNpb24gPSBodG9ubChleHRlbmRlZCA/IDMgOiAyKTsKIAloZHIuaGRyX2VudHJpZXMgPSBodG9ubChlbnRyaWVzIC0gcmVtb3ZlZCk7CiAKLQlTSEExX0luaXQoJmMpOworCWdpdF9TSEExX0luaXQoJmMpOwogCWlmIChjZV93cml0ZSgmYywgbmV3ZmQsICZoZHIsIHNpemVvZihoZHIpKSA8IDApCiAJCXJldHVybiAtMTsKIApAQCAtMTQ0Miw5ICsxNTA3LDggQEAKIAogCS8qIFdyaXRlIGV4dGVuc2lvbiBkYXRhIGhlcmUgKi8KIAlpZiAoaXN0YXRlLT5jYWNoZV90cmVlKSB7Ci0JCXN0cnVjdCBzdHJidWYgc2I7CisJCXN0cnVjdCBzdHJidWYgc2IgPSBTVFJCVUZfSU5JVDsKIAotCQlzdHJidWZfaW5pdCgmc2IsIDApOwogCQljYWNoZV90cmVlX3dyaXRlKCZzYiwgaXN0YXRlLT5jYWNoZV90cmVlKTsKIAkJZXJyID0gd3JpdGVfaW5kZXhfZXh0X2hlYWRlcigmYywgbmV3ZmQsIENBQ0hFX0VYVF9UUkVFLCBzYi5sZW4pIDwgMAogCQkJfHwgY2Vfd3JpdGUoJmMsIG5ld2ZkLCBzYi5idWYsIHNiLmxlbikgPCAwOwpAQCAtMTQ1Nyw3ICsxNTIxLDcgQEAKIAogLyoKICAqIFJlYWQgdGhlIGluZGV4IGZpbGUgdGhhdCBpcyBwb3RlbnRpYWxseSB1bm1lcmdlZCBpbnRvIGdpdmVuCi0gKiBpbmRleF9zdGF0ZSwgZHJvcHBpbmcgYW55IHVubWVyZ2VkIGVudHJpZXMuICBSZXR1cm5zIHRydWUgaXMKKyAqIGluZGV4X3N0YXRlLCBkcm9wcGluZyBhbnkgdW5tZXJnZWQgZW50cmllcy4gIFJldHVybnMgdHJ1ZSBpZgogICogdGhlIGluZGV4IGlzIHVubWVyZ2VkLiAgQ2FsbGVycyB3aG8gd2FudCB0byByZWZ1c2UgdG8gd29yawogICogZnJvbSBhbiB1bm1lcmdlZCBzdGF0ZSBjYW4gY2FsbCB0aGlzIGFuZCBjaGVjayBpdHMgcmV0dXJuIHZhbHVlLAogICogaW5zdGVhZCBvZiBjYWxsaW5nIHJlYWRfY2FjaGUoKS4KQEAgLTE0OTEsNiArMTU1NSw4MSBAQAogCXJldHVybiB1bm1lcmdlZDsKIH0KIAorc3RydWN0IHVwZGF0ZV9jYWxsYmFja19kYXRhCit7CisJaW50IGZsYWdzOworCWludCBhZGRfZXJyb3JzOworfTsKKworc3RhdGljIHZvaWQgdXBkYXRlX2NhbGxiYWNrKHN0cnVjdCBkaWZmX3F1ZXVlX3N0cnVjdCAqcSwKKwkJCSAgICBzdHJ1Y3QgZGlmZl9vcHRpb25zICpvcHQsIHZvaWQgKmNiZGF0YSkKK3sKKwlpbnQgaTsKKwlzdHJ1Y3QgdXBkYXRlX2NhbGxiYWNrX2RhdGEgKmRhdGEgPSBjYmRhdGE7CisKKwlmb3IgKGkgPSAwOyBpIDwgcS0+bnI7IGkrKykgeworCQlzdHJ1Y3QgZGlmZl9maWxlcGFpciAqcCA9IHEtPnF1ZXVlW2ldOworCQljb25zdCBjaGFyICpwYXRoID0gcC0+b25lLT5wYXRoOworCQlzd2l0Y2ggKHAtPnN0YXR1cykgeworCQlkZWZhdWx0OgorCQkJZGllKCJ1bmV4cGVjdGVkIGRpZmYgc3RhdHVzICVjIiwgcC0+c3RhdHVzKTsKKwkJY2FzZSBESUZGX1NUQVRVU19VTk1FUkdFRDoKKwkJCS8qCisJCQkgKiBBRERfQ0FDSEVfSUdOT1JFX1JFTU9WQUwgaXMgdW5zZXQgaWYgImdpdAorCQkJICogYWRkIC11IiBpcyBjYWxsaW5nIHVzLCBJbiBzdWNoIGEgY2FzZSwgYQorCQkJICogbWlzc2luZyB3b3JrIHRyZWUgZmlsZSBuZWVkcyB0byBiZSByZW1vdmVkCisJCQkgKiBpZiB0aGVyZSBpcyBhbiB1bm1lcmdlZCBlbnRyeSBhdCBzdGFnZSAjMiwKKwkJCSAqIGJ1dCBzdWNoIGEgZGlmZiByZWNvcmQgaXMgZm9sbG93ZWQgYnkKKwkJCSAqIGFub3RoZXIgd2l0aCBESUZGX1NUQVRVU19ERUxFVEVEIChhbmQgaWYKKwkJCSAqIHRoZXJlIGlzIG5vIHN0YWdlICMyLCB3ZSB3b24ndCBzZWUgREVMRVRFRAorCQkJICogbm9yIE1PRElGSUVEKS4gIFdlIGNhbiBzaW1wbHkgY29udGludWUKKwkJCSAqIGVpdGhlciB3YXkuCisJCQkgKi8KKwkJCWlmICghKGRhdGEtPmZsYWdzICYgQUREX0NBQ0hFX0lHTk9SRV9SRU1PVkFMKSkKKwkJCQljb250aW51ZTsKKwkJCS8qCisJCQkgKiBPdGhlcndpc2UsIGl0IGlzICJnaXQgYWRkIHBhdGgiIGlzIGFza2luZworCQkJICogdG8gZXhwbGljaXRseSBhZGQgaXQ7IHdlIGZhbGwgdGhyb3VnaC4gIEEKKwkJCSAqIG1pc3Npbmcgd29yayB0cmVlIGZpbGUgaXMgYW4gZXJyb3IgYW5kIGlzCisJCQkgKiBjYXVnaHQgYnkgYWRkX2ZpbGVfdG9faW5kZXgoKSBpbiBzdWNoIGEKKwkJCSAqIGNhc2UuCisJCQkgKi8KKwkJY2FzZSBESUZGX1NUQVRVU19NT0RJRklFRDoKKwkJY2FzZSBESUZGX1NUQVRVU19UWVBFX0NIQU5HRUQ6CisJCQlpZiAoYWRkX2ZpbGVfdG9faW5kZXgoJnRoZV9pbmRleCwgcGF0aCwgZGF0YS0+ZmxhZ3MpKSB7CisJCQkJaWYgKCEoZGF0YS0+ZmxhZ3MgJiBBRERfQ0FDSEVfSUdOT1JFX0VSUk9SUykpCisJCQkJCWRpZSgidXBkYXRpbmcgZmlsZXMgZmFpbGVkIik7CisJCQkJZGF0YS0+YWRkX2Vycm9ycysrOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgRElGRl9TVEFUVVNfREVMRVRFRDoKKwkJCWlmIChkYXRhLT5mbGFncyAmIEFERF9DQUNIRV9JR05PUkVfUkVNT1ZBTCkKKwkJCQlicmVhazsKKwkJCWlmICghKGRhdGEtPmZsYWdzICYgQUREX0NBQ0hFX1BSRVRFTkQpKQorCQkJCXJlbW92ZV9maWxlX2Zyb21faW5kZXgoJnRoZV9pbmRleCwgcGF0aCk7CisJCQlpZiAoZGF0YS0+ZmxhZ3MgJiAoQUREX0NBQ0hFX1BSRVRFTkR8QUREX0NBQ0hFX1ZFUkJPU0UpKQorCQkJCXByaW50ZigicmVtb3ZlICclcydcbiIsIHBhdGgpOworCQkJYnJlYWs7CisJCX0KKwl9Cit9CisKK2ludCBhZGRfZmlsZXNfdG9fY2FjaGUoY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICoqcGF0aHNwZWMsIGludCBmbGFncykKK3sKKwlzdHJ1Y3QgdXBkYXRlX2NhbGxiYWNrX2RhdGEgZGF0YTsKKwlzdHJ1Y3QgcmV2X2luZm8gcmV2OworCWluaXRfcmV2aXNpb25zKCZyZXYsIHByZWZpeCk7CisJc2V0dXBfcmV2aXNpb25zKDAsIE5VTEwsICZyZXYsIE5VTEwpOworCXJldi5wcnVuZV9kYXRhID0gcGF0aHNwZWM7CisJcmV2LmRpZmZvcHQub3V0cHV0X2Zvcm1hdCA9IERJRkZfRk9STUFUX0NBTExCQUNLOworCXJldi5kaWZmb3B0LmZvcm1hdF9jYWxsYmFjayA9IHVwZGF0ZV9jYWxsYmFjazsKKwlkYXRhLmZsYWdzID0gZmxhZ3M7CisJZGF0YS5hZGRfZXJyb3JzID0gMDsKKwlyZXYuZGlmZm9wdC5mb3JtYXRfY2FsbGJhY2tfZGF0YSA9ICZkYXRhOworCXJ1bl9kaWZmX2ZpbGVzKCZyZXYsIERJRkZfUkFDWV9JU19NT0RJRklFRCk7CisJcmV0dXJuICEhZGF0YS5hZGRfZXJyb3JzOworfQorCiAvKgogICogUmV0dXJucyAxIGlmIHRoZSBwYXRoIGlzIGFuICJvdGhlciIgcGF0aCB3aXRoIHJlc3BlY3QgdG8KICAqIHRoZSBpbmRleDsgdGhhdCBpcywgdGhlIHBhdGggaXMgbm90IG1lbnRpb25lZCBpbiB0aGUgaW5kZXggYXQgYWxsLApkaWZmIC0tZ2l0IGEvcmVmcy5jIGIvcmVmcy5jCmluZGV4IGJlMDk1Y2IuLjMzY2VkNjUgMTAwNjQ0Ci0tLSBhL3JlZnMuYworKysgYi9yZWZzLmMKQEAgLTM5MCw2ICszOTAsMTggQEAKIAlyZXR1cm4gcmV0dmFsOwogfQogCisvKgorICogSWYgdGhlICJyZWFkaW5nIiBhcmd1bWVudCBpcyBzZXQsIHRoaXMgZnVuY3Rpb24gZmluZHMgb3V0IHdoYXQgX29iamVjdF8KKyAqIHRoZSByZWYgcG9pbnRzIGF0IGJ5ICJyZWFkaW5nIiB0aGUgcmVmLiAgVGhlIHJlZiwgaWYgaXQgaXMgbm90IHN5bWJvbGljLAorICogaGFzIHRvIGV4aXN0LCBhbmQgaWYgaXQgaXMgc3ltYm9saWMsIGl0IGhhcyB0byBwb2ludCBhdCBhbiBleGlzdGluZyByZWYsCisgKiBiZWNhdXNlIHRoZSAicmVhZCIgZ29lcyB0aHJvdWdoIHRoZSBzeW1yZWYgdG8gdGhlIHJlZiBpdCBwb2ludHMgYXQuCisgKgorICogVGhlIGFjY2VzcyB0aGF0IGlzIG5vdCAicmVhZGluZyIgbWF5IG9mdGVuIGJlICJ3cml0aW5nIiwgYnV0IGRvZXMgbm90CisgKiBoYXZlIHRvOyBpdCBjYW4gYmUgbWVyZWx5IGNoZWNraW5nIF93aGVyZSBpdCBsZWFkcyB0b18uIElmIGl0IGlzIGEKKyAqIHByZWx1ZGUgdG8gIndyaXRpbmciIHRvIHRoZSByZWYsIGEgd3JpdGUgdG8gYSBzeW1yZWYgdGhhdCBwb2ludHMgYXQKKyAqIHlldC10by1iZS1ib3JuIHJlZiB3aWxsIGNyZWF0ZSB0aGUgcmVhbCByZWYgcG9pbnRlZCBieSB0aGUgc3ltcmVmLgorICogcmVhZGluZz0wIGFsbG93cyB0aGUgY2FsbGVyIHRvIGNoZWNrIHdoZXJlIHN1Y2ggYSBzeW1yZWYgbGVhZHMgdG8uCisgKi8KIGNvbnN0IGNoYXIgKnJlc29sdmVfcmVmKGNvbnN0IGNoYXIgKnJlZiwgdW5zaWduZWQgY2hhciAqc2hhMSwgaW50IHJlYWRpbmcsIGludCAqZmxhZykKIHsKIAlpbnQgZGVwdGggPSBNQVhERVBUSDsKQEAgLTQxMCwxMyArNDIyLDcgQEAKIAkJCXJldHVybiBOVUxMOwogCiAJCWdpdF9zbnBhdGgocGF0aCwgc2l6ZW9mKHBhdGgpLCAiJXMiLCByZWYpOwotCQkvKiBTcGVjaWFsIGNhc2U6IG5vbi1leGlzdGluZyBmaWxlLgotCQkgKiBOb3QgaGF2aW5nIHRoZSByZWZzL2hlYWRzL25ldy1icmFuY2ggaXMgT0sKLQkJICogaWYgd2UgYXJlIHdyaXRpbmcgaW50byBpdCwgc28gaXMgLmdpdC9IRUFECi0JCSAqIHRoYXQgcG9pbnRzIGF0IHJlZnMvaGVhZHMvbWFzdGVyIHN0aWxsIHRvIGJlCi0JCSAqIGJvcm4uICBJdCBpcyBOT1QgT0sgaWYgd2UgYXJlIHJlc29sdmluZyBmb3IKLQkJICogcmVhZGluZy4KLQkJICovCisJCS8qIFNwZWNpYWwgY2FzZTogbm9uLWV4aXN0aW5nIGZpbGUuICovCiAJCWlmIChsc3RhdChwYXRoLCAmc3QpIDwgMCkgewogCQkJc3RydWN0IHJlZl9saXN0ICpsaXN0ID0gZ2V0X3BhY2tlZF9yZWZzKCk7CiAJCQl3aGlsZSAobGlzdCkgewpkaWZmIC0tZ2l0IGEvcmVtb3RlLmMgYi9yZW1vdGUuYwppbmRleCA5MWYxYjdjLi41NzBlMTEyIDEwMDY0NAotLS0gYS9yZW1vdGUuYworKysgYi9yZW1vdGUuYwpAQCAtNjksNyArNjksNyBAQAogCWlmICghbG9uZ2VzdCkKIAkJcmV0dXJuIHVybDsKIAotCXJldCA9IG1hbGxvYyhyZXdyaXRlW2xvbmdlc3RfaV0tPmJhc2VsZW4gKworCXJldCA9IHhtYWxsb2MocmV3cml0ZVtsb25nZXN0X2ldLT5iYXNlbGVuICsKIAkJICAgICAoc3RybGVuKHVybCkgLSBsb25nZXN0LT5sZW4pICsgMSk7CiAJc3RyY3B5KHJldCwgcmV3cml0ZVtsb25nZXN0X2ldLT5iYXNlKTsKIAlzdHJjcHkocmV0ICsgcmV3cml0ZVtsb25nZXN0X2ldLT5iYXNlbGVuLCB1cmwgKyBsb25nZXN0LT5sZW4pOwpAQCAtMTUyLDcgKzE1Miw3IEBACiAJCXJldC0+bmFtZSA9IHhzdHJuZHVwKG5hbWUsIGxlbik7CiAJZWxzZQogCQlyZXQtPm5hbWUgPSB4c3RyZHVwKG5hbWUpOwotCXJlZm5hbWUgPSBtYWxsb2Moc3RybGVuKG5hbWUpICsgc3RybGVuKCJyZWZzL2hlYWRzLyIpICsgMSk7CisJcmVmbmFtZSA9IHhtYWxsb2Moc3RybGVuKG5hbWUpICsgc3RybGVuKCJyZWZzL2hlYWRzLyIpICsgMSk7CiAJc3RyY3B5KHJlZm5hbWUsICJyZWZzL2hlYWRzLyIpOwogCXN0cmNweShyZWZuYW1lICsgc3RybGVuKCJyZWZzL2hlYWRzLyIpLCByZXQtPm5hbWUpOwogCXJldC0+cmVmbmFtZSA9IHJlZm5hbWU7CkBAIC0yMDEsNiArMjAxLDcgQEAKIAogCWlmICghZikKIAkJcmV0dXJuOworCXJlbW90ZS0+b3JpZ2luID0gUkVNT1RFX1JFTU9URVM7CiAJd2hpbGUgKGZnZXRzKGJ1ZmZlciwgQlVGX1NJWkUsIGYpKSB7CiAJCWludCB2YWx1ZV9saXN0OwogCQljaGFyICpzLCAqcDsKQEAgLTI0NSw3ICsyNDYsNyBAQAogewogCWNvbnN0IGNoYXIgKnNsYXNoID0gc3RyY2hyKHJlbW90ZS0+bmFtZSwgJy8nKTsKIAljaGFyICpmcmFnOwotCXN0cnVjdCBzdHJidWYgYnJhbmNoOworCXN0cnVjdCBzdHJidWYgYnJhbmNoID0gU1RSQlVGX0lOSVQ7CiAJaW50IG4gPSBzbGFzaCA/IHNsYXNoIC0gcmVtb3RlLT5uYW1lIDogMTAwMDsKIAlGSUxFICpmID0gZm9wZW4oZ2l0X3BhdGgoImJyYW5jaGVzLyUuKnMiLCBuLCByZW1vdGUtPm5hbWUpLCAiciIpOwogCWNoYXIgKnMsICpwOwpAQCAtMjYxLDYgKzI2Miw3IEBACiAJCXMrKzsKIAlpZiAoISpzKQogCQlyZXR1cm47CisJcmVtb3RlLT5vcmlnaW4gPSBSRU1PVEVfQlJBTkNIRVM7CiAJcCA9IHMgKyBzdHJsZW4ocyk7CiAJd2hpbGUgKGlzc3BhY2UocFstMV0pKQogCQkqLS1wID0gMDsKQEAgLTI4Myw3ICsyODUsNiBAQAogCSAqICNicmFuY2ggc3BlY2lmaWVkLiAgVGhlICJtYXN0ZXIiIChvciBzcGVjaWZpZWQpIGJyYW5jaCBpcwogCSAqIGZldGNoZWQgYW5kIHN0b3JlZCBpbiB0aGUgbG9jYWwgYnJhbmNoIG9mIHRoZSBzYW1lIG5hbWUuCiAJICovCi0Jc3RyYnVmX2luaXQoJmJyYW5jaCwgMCk7CiAJZnJhZyA9IHN0cmNocihwLCAnIycpOwogCWlmIChmcmFnKSB7CiAJCSooZnJhZysrKSA9ICdcMCc7CkBAIC0zNjIsNiArMzYzLDcgQEAKIAlpZiAoIXN1YmtleSkKIAkJcmV0dXJuIGVycm9yKCJDb25maWcgd2l0aCBubyBrZXkgZm9yIHJlbW90ZSAlcyIsIG5hbWUpOwogCXJlbW90ZSA9IG1ha2VfcmVtb3RlKG5hbWUsIHN1YmtleSAtIG5hbWUpOworCXJlbW90ZS0+b3JpZ2luID0gUkVNT1RFX0NPTkZJRzsKIAlpZiAoIXN0cmNtcChzdWJrZXksICIubWlycm9yIikpCiAJCXJlbW90ZS0+bWlycm9yID0gZ2l0X2NvbmZpZ19ib29sKGtleSwgdmFsdWUpOwogCWVsc2UgaWYgKCFzdHJjbXAoc3Via2V5LCAiLnNraXBkZWZhdWx0dXBkYXRlIikpCkBAIC00NjEsNiArNDYzLDI2IEBACiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIFRoaXMgZnVuY3Rpb24gZnJlZXMgYSByZWZzcGVjIGFycmF5LgorICogV2FybmluZzogY29kZSBwYXRocyBzaG91bGQgYmUgY2hlY2tlZCB0byBlbnN1cmUgdGhhdCB0aGUgc3JjCisgKiAgICAgICAgICBhbmQgZHN0IHBvaW50ZXJzIGFyZSBhbHdheXMgZnJlZWFibGUgcG9pbnRlcnMgYXMgd2VsbAorICogICAgICAgICAgYXMgdGhlIHJlZnNwZWMgcG9pbnRlciBpdHNlbGYuCisgKi8KK3N0YXRpYyB2b2lkIGZyZWVfcmVmc3BlY3Moc3RydWN0IHJlZnNwZWMgKnJlZnNwZWMsIGludCBucl9yZWZzcGVjKQoreworCWludCBpOworCisJaWYgKCFyZWZzcGVjKQorCQlyZXR1cm47CisKKwlmb3IgKGkgPSAwOyBpIDwgbnJfcmVmc3BlYzsgaSsrKSB7CisJCWZyZWUocmVmc3BlY1tpXS5zcmMpOworCQlmcmVlKHJlZnNwZWNbaV0uZHN0KTsKKwl9CisJZnJlZShyZWZzcGVjKTsKK30KKwogc3RhdGljIHN0cnVjdCByZWZzcGVjICpwYXJzZV9yZWZzcGVjX2ludGVybmFsKGludCBucl9yZWZzcGVjLCBjb25zdCBjaGFyICoqcmVmc3BlYywgaW50IGZldGNoLCBpbnQgdmVyaWZ5KQogewogCWludCBpOwpAQCAtNTc5LDcgKzYwMSwxMiBAQAogCiAgaW52YWxpZDoKIAlpZiAodmVyaWZ5KSB7Ci0JCWZyZWUocnMpOworCQkvKgorCQkgKiBucl9yZWZzcGVjIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8gYW5kIGkgbXVzdCBiZSB2YWxpZAorCQkgKiBzaW5jZSBpdCBpcyBvbmx5IHBvc3NpYmxlIHRvIHJlYWNoIHRoaXMgcG9pbnQgZnJvbSB3aXRoaW4KKwkJICogdGhlIGZvciBsb29wIGFib3ZlLgorCQkgKi8KKwkJZnJlZV9yZWZzcGVjcyhycywgaSsxKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCWRpZSgiSW52YWxpZCByZWZzcGVjICclcyciLCByZWZzcGVjW2ldKTsKQEAgLTU5MSw3ICs2MTgsNyBAQAogCXN0cnVjdCByZWZzcGVjICpyZWZzcGVjOwogCiAJcmVmc3BlYyA9IHBhcnNlX3JlZnNwZWNfaW50ZXJuYWwoMSwgZmV0Y2hfcmVmc3BlYywgMSwgMSk7Ci0JZnJlZShyZWZzcGVjKTsKKwlmcmVlX3JlZnNwZWNzKHJlZnNwZWMsIDEpOwogCXJldHVybiAhIXJlZnNwZWM7CiB9CiAKQEAgLTYwMCw3ICs2MjcsNyBAQAogCXJldHVybiBwYXJzZV9yZWZzcGVjX2ludGVybmFsKG5yX3JlZnNwZWMsIHJlZnNwZWMsIDEsIDApOwogfQogCi1zdHJ1Y3QgcmVmc3BlYyAqcGFyc2VfcHVzaF9yZWZzcGVjKGludCBucl9yZWZzcGVjLCBjb25zdCBjaGFyICoqcmVmc3BlYykKK3N0YXRpYyBzdHJ1Y3QgcmVmc3BlYyAqcGFyc2VfcHVzaF9yZWZzcGVjKGludCBucl9yZWZzcGVjLCBjb25zdCBjaGFyICoqcmVmc3BlYykKIHsKIAlyZXR1cm4gcGFyc2VfcmVmc3BlY19pbnRlcm5hbChucl9yZWZzcGVjLCByZWZzcGVjLCAwLCAwKTsKIH0KQEAgLTczNiwxOCArNzYzLDE5IEBACiAJcmV0dXJuIC0xOwogfQogCi1zdHJ1Y3QgcmVmICphbGxvY19yZWYodW5zaWduZWQgbmFtZWxlbikKK3N0YXRpYyBzdHJ1Y3QgcmVmICphbGxvY19yZWZfd2l0aF9wcmVmaXgoY29uc3QgY2hhciAqcHJlZml4LCBzaXplX3QgcHJlZml4bGVuLAorCQljb25zdCBjaGFyICpuYW1lKQogewotCXN0cnVjdCByZWYgKnJldCA9IHhtYWxsb2Moc2l6ZW9mKHN0cnVjdCByZWYpICsgbmFtZWxlbik7Ci0JbWVtc2V0KHJldCwgMCwgc2l6ZW9mKHN0cnVjdCByZWYpICsgbmFtZWxlbik7Ci0JcmV0dXJuIHJldDsKKwlzaXplX3QgbGVuID0gc3RybGVuKG5hbWUpOworCXN0cnVjdCByZWYgKnJlZiA9IHhjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCByZWYpICsgcHJlZml4bGVuICsgbGVuICsgMSk7CisJbWVtY3B5KHJlZi0+bmFtZSwgcHJlZml4LCBwcmVmaXhsZW4pOworCW1lbWNweShyZWYtPm5hbWUgKyBwcmVmaXhsZW4sIG5hbWUsIGxlbik7CisJcmV0dXJuIHJlZjsKIH0KIAotc3RydWN0IHJlZiAqYWxsb2NfcmVmX2Zyb21fc3RyKGNvbnN0IGNoYXIqIHN0cikKK3N0cnVjdCByZWYgKmFsbG9jX3JlZihjb25zdCBjaGFyICpuYW1lKQogewotCXN0cnVjdCByZWYgKnJldCA9IGFsbG9jX3JlZihzdHJsZW4oc3RyKSArIDEpOwotCXN0cmNweShyZXQtPm5hbWUsIHN0cik7Ci0JcmV0dXJuIHJldDsKKwlyZXR1cm4gYWxsb2NfcmVmX3dpdGhfcHJlZml4KCIiLCAwLCBuYW1lKTsKIH0KIAogc3RhdGljIHN0cnVjdCByZWYgKmNvcHlfcmVmKGNvbnN0IHN0cnVjdCByZWYgKnJlZikKQEAgLTc3MCw3ICs3OTgsNyBAQAogCXJldHVybiByZXQ7CiB9CiAKLXZvaWQgZnJlZV9yZWYoc3RydWN0IHJlZiAqcmVmKQorc3RhdGljIHZvaWQgZnJlZV9yZWYoc3RydWN0IHJlZiAqcmVmKQogewogCWlmICghcmVmKQogCQlyZXR1cm47CkBAIC04NTgsMjEgKzg4NiwyMCBAQAogCXN0cnVjdCByZWYgKnJlZjsKIAogCWlmICghKm5hbWUpIHsKLQkJcmVmID0gYWxsb2NfcmVmKDIwKTsKLQkJc3RyY3B5KHJlZi0+bmFtZSwgIihkZWxldGUpIik7CisJCXJlZiA9IGFsbG9jX3JlZigiKGRlbGV0ZSkiKTsKIAkJaGFzaGNscihyZWYtPm5ld19zaGExKTsKIAkJcmV0dXJuIHJlZjsKIAl9CiAJaWYgKGdldF9zaGExKG5hbWUsIHNoYTEpKQogCQlyZXR1cm4gTlVMTDsKLQlyZWYgPSBhbGxvY19yZWZfZnJvbV9zdHIobmFtZSk7CisJcmVmID0gYWxsb2NfcmVmKG5hbWUpOwogCWhhc2hjcHkocmVmLT5uZXdfc2hhMSwgc2hhMSk7CiAJcmV0dXJuIHJlZjsKIH0KIAogc3RhdGljIHN0cnVjdCByZWYgKm1ha2VfbGlua2VkX3JlZihjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgcmVmICoqKnRhaWwpCiB7Ci0Jc3RydWN0IHJlZiAqcmV0ID0gYWxsb2NfcmVmX2Zyb21fc3RyKG5hbWUpOworCXN0cnVjdCByZWYgKnJldCA9IGFsbG9jX3JlZihuYW1lKTsKIAl0YWlsX2xpbmtfcmVmKHJldCwgdGFpbCk7CiAJcmV0dXJuIHJldDsKIH0KQEAgLTExNDAsMTAgKzExNjcsOCBAQAogCQkJc3RydWN0IHJlZiAqY3B5ID0gY29weV9yZWYocmVmKTsKIAkJCW1hdGNoID0gcmVmLT5uYW1lICsgcmVtb3RlX3ByZWZpeF9sZW47CiAKLQkJCWNweS0+cGVlcl9yZWYgPSBhbGxvY19yZWYobG9jYWxfcHJlZml4X2xlbiArCi0JCQkJCQkgIHN0cmxlbihtYXRjaCkgKyAxKTsKLQkJCXNwcmludGYoY3B5LT5wZWVyX3JlZi0+bmFtZSwgIiVzJXMiLAotCQkJCXJlZnNwZWMtPmRzdCwgbWF0Y2gpOworCQkJY3B5LT5wZWVyX3JlZiA9IGFsbG9jX3JlZl93aXRoX3ByZWZpeChyZWZzcGVjLT5kc3QsCisJCQkJCWxvY2FsX3ByZWZpeF9sZW4sIG1hdGNoKTsKIAkJCWlmIChyZWZzcGVjLT5mb3JjZSkKIAkJCQljcHktPnBlZXJfcmVmLT5mb3JjZSA9IDE7CiAJCQkqdGFpbCA9IGNweTsKQEAgLTExNzYsMjUgKzEyMDEsMTggQEAKIAogc3RhdGljIHN0cnVjdCByZWYgKmdldF9sb2NhbF9yZWYoY29uc3QgY2hhciAqbmFtZSkKIHsKLQlzdHJ1Y3QgcmVmICpyZXQ7CiAJaWYgKCFuYW1lKQogCQlyZXR1cm4gTlVMTDsKIAotCWlmICghcHJlZml4Y21wKG5hbWUsICJyZWZzLyIpKSB7Ci0JCXJldHVybiBhbGxvY19yZWZfZnJvbV9zdHIobmFtZSk7Ci0JfQorCWlmICghcHJlZml4Y21wKG5hbWUsICJyZWZzLyIpKQorCQlyZXR1cm4gYWxsb2NfcmVmKG5hbWUpOwogCiAJaWYgKCFwcmVmaXhjbXAobmFtZSwgImhlYWRzLyIpIHx8CiAJICAgICFwcmVmaXhjbXAobmFtZSwgInRhZ3MvIikgfHwKLQkgICAgIXByZWZpeGNtcChuYW1lLCAicmVtb3Rlcy8iKSkgewotCQlyZXQgPSBhbGxvY19yZWYoc3RybGVuKG5hbWUpICsgNik7Ci0JCXNwcmludGYocmV0LT5uYW1lLCAicmVmcy8lcyIsIG5hbWUpOwotCQlyZXR1cm4gcmV0OwotCX0KKwkgICAgIXByZWZpeGNtcChuYW1lLCAicmVtb3Rlcy8iKSkKKwkJcmV0dXJuIGFsbG9jX3JlZl93aXRoX3ByZWZpeCgicmVmcy8iLCA1LCBuYW1lKTsKIAotCXJldCA9IGFsbG9jX3JlZihzdHJsZW4obmFtZSkgKyAxMik7Ci0Jc3ByaW50ZihyZXQtPm5hbWUsICJyZWZzL2hlYWRzLyVzIiwgbmFtZSk7Ci0JcmV0dXJuIHJldDsKKwlyZXR1cm4gYWxsb2NfcmVmX3dpdGhfcHJlZml4KCJyZWZzL2hlYWRzLyIsIDExLCBuYW1lKTsKIH0KIAogaW50IGdldF9mZXRjaF9tYXAoY29uc3Qgc3RydWN0IHJlZiAqcmVtb3RlX3JlZnMsCmRpZmYgLS1naXQgYS9yZW1vdGUuaCBiL3JlbW90ZS5oCmluZGV4IDA5MWIxZDAuLmE0NmE1YmUgMTAwNjQ0Ci0tLSBhL3JlbW90ZS5oCisrKyBiL3JlbW90ZS5oCkBAIC0xLDggKzEsMTUgQEAKICNpZm5kZWYgUkVNT1RFX0gKICNkZWZpbmUgUkVNT1RFX0gKIAorZW51bSB7CisJUkVNT1RFX0NPTkZJRywKKwlSRU1PVEVfUkVNT1RFUywKKwlSRU1PVEVfQlJBTkNIRVMKK307CisKIHN0cnVjdCByZW1vdGUgewogCWNvbnN0IGNoYXIgKm5hbWU7CisJaW50IG9yaWdpbjsKIAogCWNvbnN0IGNoYXIgKip1cmw7CiAJaW50IHVybF9ucjsKQEAgLTU1LDkgKzYyLDcgQEAKIAogZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWZzcGVjICp0YWdfcmVmc3BlYzsKIAotc3RydWN0IHJlZiAqYWxsb2NfcmVmKHVuc2lnbmVkIG5hbWVsZW4pOwotCi1zdHJ1Y3QgcmVmICphbGxvY19yZWZfZnJvbV9zdHIoY29uc3QgY2hhciogc3RyKTsKK3N0cnVjdCByZWYgKmFsbG9jX3JlZihjb25zdCBjaGFyICpuYW1lKTsKIAogc3RydWN0IHJlZiAqY29weV9yZWZfbGlzdChjb25zdCBzdHJ1Y3QgcmVmICpyZWYpOwogCkBAIC03Nyw3ICs4Miw2IEBACiAKIGludCB2YWxpZF9mZXRjaF9yZWZzcGVjKGNvbnN0IGNoYXIgKnJlZnNwZWMpOwogc3RydWN0IHJlZnNwZWMgKnBhcnNlX2ZldGNoX3JlZnNwZWMoaW50IG5yX3JlZnNwZWMsIGNvbnN0IGNoYXIgKipyZWZzcGVjKTsKLXN0cnVjdCByZWZzcGVjICpwYXJzZV9wdXNoX3JlZnNwZWMoaW50IG5yX3JlZnNwZWMsIGNvbnN0IGNoYXIgKipyZWZzcGVjKTsKIAogaW50IG1hdGNoX3JlZnMoc3RydWN0IHJlZiAqc3JjLCBzdHJ1Y3QgcmVmICpkc3QsIHN0cnVjdCByZWYgKioqZHN0X3RhaWwsCiAJICAgICAgIGludCBucl9yZWZzcGVjLCBjb25zdCBjaGFyICoqcmVmc3BlYywgaW50IGFsbCk7CmRpZmYgLS1naXQgYS9yZXJlcmUuYyBiL3JlcmVyZS5jCmluZGV4IGEwZDQ3N2EuLjcxOGZiNTIgMTAwNjQ0Ci0tLSBhL3JlcmVyZS5jCisrKyBiL3JlcmVyZS5jCkBAIC03MCwxNSArNzAsMzIgQEAKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIHZvaWQgZmVycl93cml0ZShjb25zdCB2b2lkICpwLCBzaXplX3QgY291bnQsIEZJTEUgKmZwLCBpbnQgKmVycikKK3sKKwlpZiAoIWNvdW50IHx8ICplcnIpCisJCXJldHVybjsKKwlpZiAoZndyaXRlKHAsIGNvdW50LCAxLCBmcCkgIT0gMSkKKwkJKmVyciA9IGVycm5vOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZmVycl9wdXRzKGNvbnN0IGNoYXIgKnMsIEZJTEUgKmZwLCBpbnQgKmVycikKK3sKKwlmZXJyX3dyaXRlKHMsIHN0cmxlbihzKSwgZnAsIGVycik7Cit9CisKIHN0YXRpYyBpbnQgaGFuZGxlX2ZpbGUoY29uc3QgY2hhciAqcGF0aCwKIAkgdW5zaWduZWQgY2hhciAqc2hhMSwgY29uc3QgY2hhciAqb3V0cHV0KQogewotCVNIQV9DVFggY3R4OworCWdpdF9TSEFfQ1RYIGN0eDsKIAljaGFyIGJ1ZlsxMDI0XTsKLQlpbnQgaHVuayA9IDAsIGh1bmtfbm8gPSAwOwotCXN0cnVjdCBzdHJidWYgb25lLCB0d287CisJaW50IGh1bmtfbm8gPSAwOworCWVudW0geworCQlSUl9DT05URVhUID0gMCwgUlJfU0lERV8xLCBSUl9TSURFXzIsIFJSX09SSUdJTkFMLAorCX0gaHVuayA9IFJSX0NPTlRFWFQ7CisJc3RydWN0IHN0cmJ1ZiBvbmUgPSBTVFJCVUZfSU5JVCwgdHdvID0gU1RSQlVGX0lOSVQ7CiAJRklMRSAqZiA9IGZvcGVuKHBhdGgsICJyIik7CiAJRklMRSAqb3V0ID0gTlVMTDsKKwlpbnQgd3JlcnJvciA9IDA7CiAKIAlpZiAoIWYpCiAJCXJldHVybiBlcnJvcigiQ291bGQgbm90IG9wZW4gJXMiLCBwYXRoKTsKQEAgLTkyLDQ3ICsxMDksNTEgQEAKIAl9CiAKIAlpZiAoc2hhMSkKLQkJU0hBMV9Jbml0KCZjdHgpOworCQlnaXRfU0hBMV9Jbml0KCZjdHgpOwogCi0Jc3RyYnVmX2luaXQoJm9uZSwgMCk7Ci0Jc3RyYnVmX2luaXQoJnR3bywgIDApOwogCXdoaWxlIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmKSkgewogCQlpZiAoIXByZWZpeGNtcChidWYsICI8PDw8PDw8ICIpKSB7Ci0JCQlpZiAoaHVuaykKKwkJCWlmIChodW5rICE9IFJSX0NPTlRFWFQpCiAJCQkJZ290byBiYWQ7Ci0JCQlodW5rID0gMTsKKwkJCWh1bmsgPSBSUl9TSURFXzE7CisJCX0gZWxzZSBpZiAoIXByZWZpeGNtcChidWYsICJ8fHx8fHx8IikgJiYgaXNzcGFjZShidWZbN10pKSB7CisJCQlpZiAoaHVuayAhPSBSUl9TSURFXzEpCisJCQkJZ290byBiYWQ7CisJCQlodW5rID0gUlJfT1JJR0lOQUw7CiAJCX0gZWxzZSBpZiAoIXByZWZpeGNtcChidWYsICI9PT09PT09IikgJiYgaXNzcGFjZShidWZbN10pKSB7Ci0JCQlpZiAoaHVuayAhPSAxKQorCQkJaWYgKGh1bmsgIT0gUlJfU0lERV8xICYmIGh1bmsgIT0gUlJfT1JJR0lOQUwpCiAJCQkJZ290byBiYWQ7Ci0JCQlodW5rID0gMjsKKwkJCWh1bmsgPSBSUl9TSURFXzI7CiAJCX0gZWxzZSBpZiAoIXByZWZpeGNtcChidWYsICI+Pj4+Pj4+ICIpKSB7Ci0JCQlpZiAoaHVuayAhPSAyKQorCQkJaWYgKGh1bmsgIT0gUlJfU0lERV8yKQogCQkJCWdvdG8gYmFkOwogCQkJaWYgKHN0cmJ1Zl9jbXAoJm9uZSwgJnR3bykgPiAwKQogCQkJCXN0cmJ1Zl9zd2FwKCZvbmUsICZ0d28pOwogCQkJaHVua19ubysrOwotCQkJaHVuayA9IDA7CisJCQlodW5rID0gUlJfQ09OVEVYVDsKIAkJCWlmIChvdXQpIHsKLQkJCQlmcHV0cygiPDw8PDw8PFxuIiwgb3V0KTsKLQkJCQlmd3JpdGUob25lLmJ1Ziwgb25lLmxlbiwgMSwgb3V0KTsKLQkJCQlmcHV0cygiPT09PT09PVxuIiwgb3V0KTsKLQkJCQlmd3JpdGUodHdvLmJ1ZiwgdHdvLmxlbiwgMSwgb3V0KTsKLQkJCQlmcHV0cygiPj4+Pj4+PlxuIiwgb3V0KTsKKwkJCQlmZXJyX3B1dHMoIjw8PDw8PDxcbiIsIG91dCwgJndyZXJyb3IpOworCQkJCWZlcnJfd3JpdGUob25lLmJ1Ziwgb25lLmxlbiwgb3V0LCAmd3JlcnJvcik7CisJCQkJZmVycl9wdXRzKCI9PT09PT09XG4iLCBvdXQsICZ3cmVycm9yKTsKKwkJCQlmZXJyX3dyaXRlKHR3by5idWYsIHR3by5sZW4sIG91dCwgJndyZXJyb3IpOworCQkJCWZlcnJfcHV0cygiPj4+Pj4+PlxuIiwgb3V0LCAmd3JlcnJvcik7CiAJCQl9CiAJCQlpZiAoc2hhMSkgewotCQkJCVNIQTFfVXBkYXRlKCZjdHgsIG9uZS5idWYgPyBvbmUuYnVmIDogIiIsCisJCQkJZ2l0X1NIQTFfVXBkYXRlKCZjdHgsIG9uZS5idWYgPyBvbmUuYnVmIDogIiIsCiAJCQkJCSAgICBvbmUubGVuICsgMSk7Ci0JCQkJU0hBMV9VcGRhdGUoJmN0eCwgdHdvLmJ1ZiA/IHR3by5idWYgOiAiIiwKKwkJCQlnaXRfU0hBMV9VcGRhdGUoJmN0eCwgdHdvLmJ1ZiA/IHR3by5idWYgOiAiIiwKIAkJCQkJICAgIHR3by5sZW4gKyAxKTsKIAkJCX0KIAkJCXN0cmJ1Zl9yZXNldCgmb25lKTsKIAkJCXN0cmJ1Zl9yZXNldCgmdHdvKTsKLQkJfSBlbHNlIGlmIChodW5rID09IDEpCisJCX0gZWxzZSBpZiAoaHVuayA9PSBSUl9TSURFXzEpCiAJCQlzdHJidWZfYWRkc3RyKCZvbmUsIGJ1Zik7Ci0JCWVsc2UgaWYgKGh1bmsgPT0gMikKKwkJZWxzZSBpZiAoaHVuayA9PSBSUl9PUklHSU5BTCkKKwkJCTsgLyogZGlzY2FyZCAqLworCQllbHNlIGlmIChodW5rID09IFJSX1NJREVfMikKIAkJCXN0cmJ1Zl9hZGRzdHIoJnR3bywgYnVmKTsKIAkJZWxzZSBpZiAob3V0KQotCQkJZnB1dHMoYnVmLCBvdXQpOworCQkJZmVycl9wdXRzKGJ1Ziwgb3V0LCAmd3JlcnJvcik7CiAJCWNvbnRpbnVlOwogCWJhZDoKIAkJaHVuayA9IDk5OyAvKiBmb3JjZSBlcnJvciBleGl0ICovCkBAIC0xNDIsMTUgKzE2MywyMSBAQAogCXN0cmJ1Zl9yZWxlYXNlKCZ0d28pOwogCiAJZmNsb3NlKGYpOwotCWlmIChvdXQpCi0JCWZjbG9zZShvdXQpOworCWlmICh3cmVycm9yKQorCQllcnJvcigiVGhlcmUgd2VyZSBlcnJvcnMgd2hpbGUgd3JpdGluZyAlcyAoJXMpIiwKKwkJICAgICAgcGF0aCwgc3RyZXJyb3Iod3JlcnJvcikpOworCWlmIChvdXQgJiYgZmNsb3NlKG91dCkpCisJCXdyZXJyb3IgPSBlcnJvcigiRmFpbGVkIHRvIGZsdXNoICVzOiAlcyIsCisJCQkJcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKIAlpZiAoc2hhMSkKLQkJU0hBMV9GaW5hbChzaGExLCAmY3R4KTsKLQlpZiAoaHVuaykgeworCQlnaXRfU0hBMV9GaW5hbChzaGExLCAmY3R4KTsKKwlpZiAoaHVuayAhPSBSUl9DT05URVhUKSB7CiAJCWlmIChvdXRwdXQpCiAJCQl1bmxpbmsob3V0cHV0KTsKIAkJcmV0dXJuIGVycm9yKCJDb3VsZCBub3QgcGFyc2UgY29uZmxpY3QgaHVua3MgaW4gJXMiLCBwYXRoKTsKIAl9CisJaWYgKHdyZXJyb3IpCisJCXJldHVybiAtMTsKIAlyZXR1cm4gaHVua19ubzsKIH0KIApAQCAtMTkzLDkgKzIyMCwxMyBAQAogCWlmICghcmV0KSB7CiAJCUZJTEUgKmYgPSBmb3BlbihwYXRoLCAidyIpOwogCQlpZiAoIWYpCi0JCQlyZXR1cm4gZXJyb3IoIkNvdWxkIG5vdCB3cml0ZSB0byAlcyIsIHBhdGgpOwotCQlmd3JpdGUocmVzdWx0LnB0ciwgcmVzdWx0LnNpemUsIDEsIGYpOwotCQlmY2xvc2UoZik7CisJCQlyZXR1cm4gZXJyb3IoIkNvdWxkIG5vdCBvcGVuICVzOiAlcyIsIHBhdGgsCisJCQkJICAgICBzdHJlcnJvcihlcnJubykpOworCQlpZiAoZndyaXRlKHJlc3VsdC5wdHIsIHJlc3VsdC5zaXplLCAxLCBmKSAhPSAxKQorCQkJZXJyb3IoIkNvdWxkIG5vdCB3cml0ZSAlczogJXMiLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQlpZiAoZmNsb3NlKGYpKQorCQkJcmV0dXJuIGVycm9yKCJXcml0aW5nICVzIGZhaWxlZDogJXMiLCBwYXRoLAorCQkJCSAgICAgc3RyZXJyb3IoZXJybm8pKTsKIAl9CiAKIAlmcmVlKGN1ci5wdHIpOwpAQCAtMzE5LDcgKzM1MCw2IEBACiAKIHN0YXRpYyBpbnQgaXNfcmVyZXJlX2VuYWJsZWQodm9pZCkKIHsKLQlzdHJ1Y3Qgc3RhdCBzdDsKIAljb25zdCBjaGFyICpycl9jYWNoZTsKIAlpbnQgcnJfY2FjaGVfZXhpc3RzOwogCkBAIC0zMjcsNyArMzU3LDcgQEAKIAkJcmV0dXJuIDA7CiAKIAlycl9jYWNoZSA9IGdpdF9wYXRoKCJyci1jYWNoZSIpOwotCXJyX2NhY2hlX2V4aXN0cyA9ICFzdGF0KHJyX2NhY2hlLCAmc3QpICYmIFNfSVNESVIoc3Quc3RfbW9kZSk7CisJcnJfY2FjaGVfZXhpc3RzID0gaXNfZGlyZWN0b3J5KHJyX2NhY2hlKTsKIAlpZiAocmVyZXJlX2VuYWJsZWQgPCAwKQogCQlyZXR1cm4gcnJfY2FjaGVfZXhpc3RzOwogCmRpZmYgLS1naXQgYS9yZXZpc2lvbi5jIGIvcmV2aXNpb24uYwppbmRleCA0NWZkN2EzLi4yODZlNDE2IDEwMDY0NAotLS0gYS9yZXZpc2lvbi5jCisrKyBiL3JldmlzaW9uLmMKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlICJyZWZsb2ctd2Fsay5oIgogI2luY2x1ZGUgInBhdGNoLWlkcy5oIgogI2luY2x1ZGUgImRlY29yYXRlLmgiCisjaW5jbHVkZSAibG9nLXRyZWUuaCIKIAogdm9sYXRpbGUgc2hvd19lYXJseV9vdXRwdXRfZm5fdCBzaG93X2Vhcmx5X291dHB1dDsKIApAQCAtMTgyLDggKzE4MywxMSBAQAogCQlpZiAoIXRhZy0+dGFnZ2VkKQogCQkJZGllKCJiYWQgdGFnIik7CiAJCW9iamVjdCA9IHBhcnNlX29iamVjdCh0YWctPnRhZ2dlZC0+c2hhMSk7Ci0JCWlmICghb2JqZWN0KQorCQlpZiAoIW9iamVjdCkgeworCQkJaWYgKGZsYWdzICYgVU5JTlRFUkVTVElORykKKwkJCQlyZXR1cm4gTlVMTDsKIAkJCWRpZSgiYmFkIG9iamVjdCAlcyIsIHNoYTFfdG9faGV4KHRhZy0+dGFnZ2VkLT5zaGExKSk7CisJCX0KIAl9CiAKIAkvKgpAQCAtMTk5LDYgKzIwMyw4IEBACiAJCQltYXJrX3BhcmVudHNfdW5pbnRlcmVzdGluZyhjb21taXQpOwogCQkJcmV2cy0+bGltaXRlZCA9IDE7CiAJCX0KKwkJaWYgKHJldnMtPnNob3dfc291cmNlICYmICFjb21taXQtPnV0aWwpCisJCQljb21taXQtPnV0aWwgPSAodm9pZCAqKSBuYW1lOwogCQlyZXR1cm4gY29tbWl0OwogCX0KIApAQCAtMjkyLDEwICsyOTgsMzEgQEAKIAlESUZGX09QVF9TRVQob3B0aW9ucywgSEFTX0NIQU5HRVMpOwogfQogCi1zdGF0aWMgaW50IHJldl9jb21wYXJlX3RyZWUoc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3QgdHJlZSAqdDEsIHN0cnVjdCB0cmVlICp0MikKK3N0YXRpYyBpbnQgcmV2X2NvbXBhcmVfdHJlZShzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIHN0cnVjdCBjb21taXQgKnBhcmVudCwgc3RydWN0IGNvbW1pdCAqY29tbWl0KQogeworCXN0cnVjdCB0cmVlICp0MSA9IHBhcmVudC0+dHJlZTsKKwlzdHJ1Y3QgdHJlZSAqdDIgPSBjb21taXQtPnRyZWU7CisKIAlpZiAoIXQxKQogCQlyZXR1cm4gUkVWX1RSRUVfTkVXOworCisJaWYgKHJldnMtPnNpbXBsaWZ5X2J5X2RlY29yYXRpb24pIHsKKwkJLyoKKwkJICogSWYgd2UgYXJlIHNpbXBsaWZ5aW5nIGJ5IGRlY29yYXRpb24sIHRoZW4gdGhlIGNvbW1pdAorCQkgKiBpcyB3b3J0aCBzaG93aW5nIGlmIGl0IGhhcyBhIHRhZyBwb2ludGluZyBhdCBpdC4KKwkJICovCisJCWlmIChsb29rdXBfZGVjb3JhdGlvbigmbmFtZV9kZWNvcmF0aW9uLCAmY29tbWl0LT5vYmplY3QpKQorCQkJcmV0dXJuIFJFVl9UUkVFX0RJRkZFUkVOVDsKKwkJLyoKKwkJICogQSBjb21taXQgdGhhdCBpcyBub3QgcG9pbnRlZCBieSBhIHRhZyBpcyB1bmludGVyZXN0aW5nCisJCSAqIGlmIHdlIGFyZSBub3QgbGltaXRlZCBieSBwYXRoLiAgVGhpcyBtZWFucyB0aGF0IHlvdSB3aWxsCisJCSAqIHNlZSB0aGUgdXN1YWwgImNvbW1pdHMgdGhhdCB0b3VjaCB0aGUgcGF0aHMiIHBsdXMgYW55CisJCSAqIHRhZ2dlZCBjb21taXQgYnkgc3BlY2lmeWluZyBib3RoIC0tc2ltcGxpZnktYnktZGVjb3JhdGlvbgorCQkgKiBhbmQgcGF0aHNwZWMuCisJCSAqLworCQlpZiAoIXJldnMtPnBydW5lX2RhdGEpCisJCQlyZXR1cm4gUkVWX1RSRUVfU0FNRTsKKwl9CiAJaWYgKCF0MikKIAkJcmV0dXJuIFJFVl9UUkVFX0RJRkZFUkVOVDsKIAl0cmVlX2RpZmZlcmVuY2UgPSBSRVZfVFJFRV9TQU1FOwpAQCAtMzA2LDEyICszMzMsMTMgQEAKIAlyZXR1cm4gdHJlZV9kaWZmZXJlbmNlOwogfQogCi1zdGF0aWMgaW50IHJldl9zYW1lX3RyZWVfYXNfZW1wdHkoc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3QgdHJlZSAqdDEpCitzdGF0aWMgaW50IHJldl9zYW1lX3RyZWVfYXNfZW1wdHkoc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3QgY29tbWl0ICpjb21taXQpCiB7CiAJaW50IHJldHZhbDsKIAl2b2lkICp0cmVlOwogCXVuc2lnbmVkIGxvbmcgc2l6ZTsKIAlzdHJ1Y3QgdHJlZV9kZXNjIGVtcHR5LCByZWFsOworCXN0cnVjdCB0cmVlICp0MSA9IGNvbW1pdC0+dHJlZTsKIAogCWlmICghdDEpCiAJCXJldHVybiAwOwpAQCAtMzQ1LDcgKzM3Myw3IEBACiAJCXJldHVybjsKIAogCWlmICghY29tbWl0LT5wYXJlbnRzKSB7Ci0JCWlmIChyZXZfc2FtZV90cmVlX2FzX2VtcHR5KHJldnMsIGNvbW1pdC0+dHJlZSkpCisJCWlmIChyZXZfc2FtZV90cmVlX2FzX2VtcHR5KHJldnMsIGNvbW1pdCkpCiAJCQljb21taXQtPm9iamVjdC5mbGFncyB8PSBUUkVFU0FNRTsKIAkJcmV0dXJuOwogCX0KQEAgLTM2NSw3ICszOTMsNyBAQAogCQkJZGllKCJjYW5ub3Qgc2ltcGxpZnkgY29tbWl0ICVzIChiZWNhdXNlIG9mICVzKSIsCiAJCQkgICAgc2hhMV90b19oZXgoY29tbWl0LT5vYmplY3Quc2hhMSksCiAJCQkgICAgc2hhMV90b19oZXgocC0+b2JqZWN0LnNoYTEpKTsKLQkJc3dpdGNoIChyZXZfY29tcGFyZV90cmVlKHJldnMsIHAtPnRyZWUsIGNvbW1pdC0+dHJlZSkpIHsKKwkJc3dpdGNoIChyZXZfY29tcGFyZV90cmVlKHJldnMsIHAsIGNvbW1pdCkpIHsKIAkJY2FzZSBSRVZfVFJFRV9TQU1FOgogCQkJdHJlZV9zYW1lID0gMTsKIAkJCWlmICghcmV2cy0+c2ltcGxpZnlfaGlzdG9yeSB8fCAocC0+b2JqZWN0LmZsYWdzICYgVU5JTlRFUkVTVElORykpIHsKQEAgLTM4NSw3ICs0MTMsNyBAQAogCiAJCWNhc2UgUkVWX1RSRUVfTkVXOgogCQkJaWYgKHJldnMtPnJlbW92ZV9lbXB0eV90cmVlcyAmJgotCQkJICAgIHJldl9zYW1lX3RyZWVfYXNfZW1wdHkocmV2cywgcC0+dHJlZSkpIHsKKwkJCSAgICByZXZfc2FtZV90cmVlX2FzX2VtcHR5KHJldnMsIHApKSB7CiAJCQkJLyogV2UgYXJlIGFkZGluZyBhbGwgdGhlIHNwZWNpZmllZAogCQkJCSAqIHBhdGhzIGZyb20gdGhpcyBwYXJlbnQsIHNvIHRoZQogCQkJCSAqIGhpc3RvcnkgYmV5b25kIHRoaXMgcGFyZW50IGlzIG5vdApAQCAtNDU0LDkgKzQ4MiwxMCBAQAogCQl3aGlsZSAocGFyZW50KSB7CiAJCQlzdHJ1Y3QgY29tbWl0ICpwID0gcGFyZW50LT5pdGVtOwogCQkJcGFyZW50ID0gcGFyZW50LT5uZXh0OworCQkJaWYgKHApCisJCQkJcC0+b2JqZWN0LmZsYWdzIHw9IFVOSU5URVJFU1RJTkc7CiAJCQlpZiAocGFyc2VfY29tbWl0KHApIDwgMCkKLQkJCQlyZXR1cm4gLTE7Ci0JCQlwLT5vYmplY3QuZmxhZ3MgfD0gVU5JTlRFUkVTVElORzsKKwkJCQljb250aW51ZTsKIAkJCWlmIChwLT5wYXJlbnRzKQogCQkJCW1hcmtfcGFyZW50c191bmludGVyZXN0aW5nKHApOwogCQkJaWYgKHAtPm9iamVjdC5mbGFncyAmIFNFRU4pCkBAIC00ODQsMTIgKzUxMywxNCBAQAogCiAJCWlmIChwYXJzZV9jb21taXQocCkgPCAwKQogCQkJcmV0dXJuIC0xOworCQlpZiAocmV2cy0+c2hvd19zb3VyY2UgJiYgIXAtPnV0aWwpCisJCQlwLT51dGlsID0gY29tbWl0LT51dGlsOwogCQlwLT5vYmplY3QuZmxhZ3MgfD0gbGVmdF9mbGFnOwogCQlpZiAoIShwLT5vYmplY3QuZmxhZ3MgJiBTRUVOKSkgewogCQkJcC0+b2JqZWN0LmZsYWdzIHw9IFNFRU47CiAJCQlpbnNlcnRfYnlfZGF0ZV9jYWNoZWQocCwgbGlzdCwgY2FjaGVkX2Jhc2UsIGNhY2hlX3B0cik7CiAJCX0KLQkJaWYocmV2cy0+Zmlyc3RfcGFyZW50X29ubHkpCisJCWlmIChyZXZzLT5maXJzdF9wYXJlbnRfb25seSkKIAkJCWJyZWFrOwogCX0KIAlyZXR1cm4gMDsKQEAgLTEwMjgsNiArMTA1OSwxOSBAQAogCX0gZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLXRvcG8tb3JkZXIiKSkgewogCQlyZXZzLT5saWZvID0gMTsKIAkJcmV2cy0+dG9wb19vcmRlciA9IDE7CisJfSBlbHNlIGlmICghc3RyY21wKGFyZywgIi0tc2ltcGxpZnktbWVyZ2VzIikpIHsKKwkJcmV2cy0+c2ltcGxpZnlfbWVyZ2VzID0gMTsKKwkJcmV2cy0+cmV3cml0ZV9wYXJlbnRzID0gMTsKKwkJcmV2cy0+c2ltcGxpZnlfaGlzdG9yeSA9IDA7CisJCXJldnMtPmxpbWl0ZWQgPSAxOworCX0gZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLXNpbXBsaWZ5LWJ5LWRlY29yYXRpb24iKSkgeworCQlyZXZzLT5zaW1wbGlmeV9tZXJnZXMgPSAxOworCQlyZXZzLT5yZXdyaXRlX3BhcmVudHMgPSAxOworCQlyZXZzLT5zaW1wbGlmeV9oaXN0b3J5ID0gMDsKKwkJcmV2cy0+c2ltcGxpZnlfYnlfZGVjb3JhdGlvbiA9IDE7CisJCXJldnMtPmxpbWl0ZWQgPSAxOworCQlyZXZzLT5wcnVuZSA9IDE7CisJCWxvYWRfcmVmX2RlY29yYXRpb25zKCk7CiAJfSBlbHNlIGlmICghc3RyY21wKGFyZywgIi0tZGF0ZS1vcmRlciIpKSB7CiAJCXJldnMtPmxpZm8gPSAwOwogCQlyZXZzLT50b3BvX29yZGVyID0gMTsKQEAgLTEyMjMsNiArMTI2Nyw3IEBACiAKIAkJCWlmICghc3RyY21wKGFyZywgIi0tYWxsIikpIHsKIAkJCQloYW5kbGVfcmVmcyhyZXZzLCBmbGFncywgZm9yX2VhY2hfcmVmKTsKKwkJCQloYW5kbGVfcmVmcyhyZXZzLCBmbGFncywgaGVhZF9yZWYpOwogCQkJCWNvbnRpbnVlOwogCQkJfQogCQkJaWYgKCFzdHJjbXAoYXJnLCAiLS1icmFuY2hlcyIpKSB7CkBAIC0xMzU1LDYgKzE0MDAsMTc5IEBACiAJbC0+bmV4dCA9IGFkZF9kZWNvcmF0aW9uKCZyZXZzLT5jaGlsZHJlbiwgJnBhcmVudC0+b2JqZWN0LCBsKTsKIH0KIAorc3RhdGljIGludCByZW1vdmVfZHVwbGljYXRlX3BhcmVudHMoc3RydWN0IGNvbW1pdCAqY29tbWl0KQoreworCXN0cnVjdCBjb21taXRfbGlzdCAqKnBwLCAqcDsKKwlpbnQgc3Vydml2aW5nX3BhcmVudHM7CisKKwkvKiBFeGFtaW5lIGV4aXN0aW5nIHBhcmVudHMgd2hpbGUgbWFya2luZyBvbmVzIHdlIGhhdmUgc2Vlbi4uLiAqLworCXBwID0gJmNvbW1pdC0+cGFyZW50czsKKwl3aGlsZSAoKHAgPSAqcHApICE9IE5VTEwpIHsKKwkJc3RydWN0IGNvbW1pdCAqcGFyZW50ID0gcC0+aXRlbTsKKwkJaWYgKHBhcmVudC0+b2JqZWN0LmZsYWdzICYgVE1QX01BUkspIHsKKwkJCSpwcCA9IHAtPm5leHQ7CisJCQljb250aW51ZTsKKwkJfQorCQlwYXJlbnQtPm9iamVjdC5mbGFncyB8PSBUTVBfTUFSSzsKKwkJcHAgPSAmcC0+bmV4dDsKKwl9CisJLyogY291bnQgdGhlbSB3aGlsZSBjbGVhcmluZyB0aGUgdGVtcG9yYXJ5IG1hcmsgKi8KKwlzdXJ2aXZpbmdfcGFyZW50cyA9IDA7CisJZm9yIChwID0gY29tbWl0LT5wYXJlbnRzOyBwOyBwID0gcC0+bmV4dCkgeworCQlwLT5pdGVtLT5vYmplY3QuZmxhZ3MgJj0gflRNUF9NQVJLOworCQlzdXJ2aXZpbmdfcGFyZW50cysrOworCX0KKwlyZXR1cm4gc3Vydml2aW5nX3BhcmVudHM7Cit9CisKK3N0cnVjdCBtZXJnZV9zaW1wbGlmeV9zdGF0ZSB7CisJc3RydWN0IGNvbW1pdCAqc2ltcGxpZmllZDsKK307CisKK3N0YXRpYyBzdHJ1Y3QgbWVyZ2Vfc2ltcGxpZnlfc3RhdGUgKmxvY2F0ZV9zaW1wbGlmeV9zdGF0ZShzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIHN0cnVjdCBjb21taXQgKmNvbW1pdCkKK3sKKwlzdHJ1Y3QgbWVyZ2Vfc2ltcGxpZnlfc3RhdGUgKnN0OworCisJc3QgPSBsb29rdXBfZGVjb3JhdGlvbigmcmV2cy0+bWVyZ2Vfc2ltcGxpZmljYXRpb24sICZjb21taXQtPm9iamVjdCk7CisJaWYgKCFzdCkgeworCQlzdCA9IHhjYWxsb2MoMSwgc2l6ZW9mKCpzdCkpOworCQlhZGRfZGVjb3JhdGlvbigmcmV2cy0+bWVyZ2Vfc2ltcGxpZmljYXRpb24sICZjb21taXQtPm9iamVjdCwgc3QpOworCX0KKwlyZXR1cm4gc3Q7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgY29tbWl0X2xpc3QgKipzaW1wbGlmeV9vbmUoc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3QgY29tbWl0ICpjb21taXQsIHN0cnVjdCBjb21taXRfbGlzdCAqKnRhaWwpCit7CisJc3RydWN0IGNvbW1pdF9saXN0ICpwOworCXN0cnVjdCBtZXJnZV9zaW1wbGlmeV9zdGF0ZSAqc3QsICpwc3Q7CisJaW50IGNudDsKKworCXN0ID0gbG9jYXRlX3NpbXBsaWZ5X3N0YXRlKHJldnMsIGNvbW1pdCk7CisKKwkvKgorCSAqIEhhdmUgd2UgaGFuZGxlZCB0aGlzIG9uZT8KKwkgKi8KKwlpZiAoc3QtPnNpbXBsaWZpZWQpCisJCXJldHVybiB0YWlsOworCisJLyoKKwkgKiBBbiBVTklOVEVSRVNUSU5HIGNvbW1pdCBzaW1wbGlmaWVzIHRvIGl0c2VsZiwgc28gZG9lcyBhCisJICogcm9vdCBjb21taXQuICBXZSBkbyBub3QgcmV3cml0ZSBwYXJlbnRzIG9mIHN1Y2ggY29tbWl0CisJICogYW55d2F5LgorCSAqLworCWlmICgoY29tbWl0LT5vYmplY3QuZmxhZ3MgJiBVTklOVEVSRVNUSU5HKSB8fCAhY29tbWl0LT5wYXJlbnRzKSB7CisJCXN0LT5zaW1wbGlmaWVkID0gY29tbWl0OworCQlyZXR1cm4gdGFpbDsKKwl9CisKKwkvKgorCSAqIERvIHdlIGtub3cgd2hhdCBjb21taXQgYWxsIG9mIG91ciBwYXJlbnRzIHNob3VsZCBiZSByZXdyaXR0ZW4gdG8/CisJICogT3RoZXJ3aXNlIHdlIGFyZSBub3QgcmVhZHkgdG8gcmV3cml0ZSB0aGlzIG9uZSB5ZXQuCisJICovCisJZm9yIChjbnQgPSAwLCBwID0gY29tbWl0LT5wYXJlbnRzOyBwOyBwID0gcC0+bmV4dCkgeworCQlwc3QgPSBsb2NhdGVfc2ltcGxpZnlfc3RhdGUocmV2cywgcC0+aXRlbSk7CisJCWlmICghcHN0LT5zaW1wbGlmaWVkKSB7CisJCQl0YWlsID0gJmNvbW1pdF9saXN0X2luc2VydChwLT5pdGVtLCB0YWlsKS0+bmV4dDsKKwkJCWNudCsrOworCQl9CisJfQorCWlmIChjbnQpIHsKKwkJdGFpbCA9ICZjb21taXRfbGlzdF9pbnNlcnQoY29tbWl0LCB0YWlsKS0+bmV4dDsKKwkJcmV0dXJuIHRhaWw7CisJfQorCisJLyoKKwkgKiBSZXdyaXRlIG91ciBsaXN0IG9mIHBhcmVudHMuCisJICovCisJZm9yIChwID0gY29tbWl0LT5wYXJlbnRzOyBwOyBwID0gcC0+bmV4dCkgeworCQlwc3QgPSBsb2NhdGVfc2ltcGxpZnlfc3RhdGUocmV2cywgcC0+aXRlbSk7CisJCXAtPml0ZW0gPSBwc3QtPnNpbXBsaWZpZWQ7CisJfQorCWNudCA9IHJlbW92ZV9kdXBsaWNhdGVfcGFyZW50cyhjb21taXQpOworCisJLyoKKwkgKiBJdCBpcyBwb3NzaWJsZSB0aGF0IHdlIGFyZSBhIG1lcmdlIGFuZCBvbmUgc2lkZSBicmFuY2gKKwkgKiBkb2VzIG5vdCBoYXZlIGFueSBjb21taXQgdGhhdCB0b3VjaGVzIHRoZSBnaXZlbiBwYXRoczsKKwkgKiBpbiBzdWNoIGEgY2FzZSwgdGhlIGltbWVkaWF0ZSBwYXJlbnRzIHdpbGwgYmUgcmV3cml0dGVuCisJICogdG8gZGlmZmVyZW50IGNvbW1pdHMuCisJICoKKwkgKiAgICAgIG8tLS0tWAkJWDogdGhlIGNvbW1pdCB3ZSBhcmUgbG9va2luZyBhdDsKKwkgKiAgICAgLyAgICAvCQlvOiBhIGNvbW1pdCB0aGF0IHRvdWNoZXMgdGhlIHBhdGhzOworCSAqIC0tLW8tLS0tJworCSAqCisJICogRnVydGhlciByZWR1Y2UgdGhlIHBhcmVudHMgYnkgcmVtb3ZpbmcgcmVkdW5kYW50IHBhcmVudHMuCisJICovCisJaWYgKDEgPCBjbnQpIHsKKwkJc3RydWN0IGNvbW1pdF9saXN0ICpoID0gcmVkdWNlX2hlYWRzKGNvbW1pdC0+cGFyZW50cyk7CisJCWNudCA9IGNvbW1pdF9saXN0X2NvdW50KGgpOworCQlmcmVlX2NvbW1pdF9saXN0KGNvbW1pdC0+cGFyZW50cyk7CisJCWNvbW1pdC0+cGFyZW50cyA9IGg7CisJfQorCisJLyoKKwkgKiBBIGNvbW1pdCBzaW1wbGlmaWVzIHRvIGl0c2VsZiBpZiBpdCBpcyBhIHJvb3QsIGlmIGl0IGlzCisJICogVU5JTlRFUkVTVElORywgaWYgaXQgdG91Y2hlcyB0aGUgZ2l2ZW4gcGF0aHMsIG9yIGlmIGl0IGlzIGEKKwkgKiBtZXJnZSBhbmQgaXRzIHBhcmVudHMgc2ltcGxpZmllcyB0byBtb3JlIHRoYW4gb25lIGNvbW1pdHMKKwkgKiAodGhlIGZpcnN0IHR3byBjYXNlcyBhcmUgYWxyZWFkeSBoYW5kbGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YKKwkgKiB0aGlzIGZ1bmN0aW9uKS4KKwkgKgorCSAqIE90aGVyd2lzZSwgaXQgc2ltcGxpZmllcyB0byB3aGF0IGl0cyBzb2xlIHBhcmVudCBzaW1wbGlmaWVzIHRvLgorCSAqLworCWlmICghY250IHx8CisJICAgIChjb21taXQtPm9iamVjdC5mbGFncyAmIFVOSU5URVJFU1RJTkcpIHx8CisJICAgICEoY29tbWl0LT5vYmplY3QuZmxhZ3MgJiBUUkVFU0FNRSkgfHwKKwkgICAgKDEgPCBjbnQpKQorCQlzdC0+c2ltcGxpZmllZCA9IGNvbW1pdDsKKwllbHNlIHsKKwkJcHN0ID0gbG9jYXRlX3NpbXBsaWZ5X3N0YXRlKHJldnMsIGNvbW1pdC0+cGFyZW50cy0+aXRlbSk7CisJCXN0LT5zaW1wbGlmaWVkID0gcHN0LT5zaW1wbGlmaWVkOworCX0KKwlyZXR1cm4gdGFpbDsKK30KKworc3RhdGljIHZvaWQgc2ltcGxpZnlfbWVyZ2VzKHN0cnVjdCByZXZfaW5mbyAqcmV2cykKK3sKKwlzdHJ1Y3QgY29tbWl0X2xpc3QgKmxpc3Q7CisJc3RydWN0IGNvbW1pdF9saXN0ICp5ZXRfdG9fZG8sICoqdGFpbDsKKworCWlmICghcmV2cy0+dG9wb19vcmRlcikKKwkJc29ydF9pbl90b3BvbG9naWNhbF9vcmRlcigmcmV2cy0+Y29tbWl0cywgcmV2cy0+bGlmbyk7CisJaWYgKCFyZXZzLT5wcnVuZSkKKwkJcmV0dXJuOworCisJLyogZmVlZCB0aGUgbGlzdCByZXZlcnNlZCAqLworCXlldF90b19kbyA9IE5VTEw7CisJZm9yIChsaXN0ID0gcmV2cy0+Y29tbWl0czsgbGlzdDsgbGlzdCA9IGxpc3QtPm5leHQpCisJCWNvbW1pdF9saXN0X2luc2VydChsaXN0LT5pdGVtLCAmeWV0X3RvX2RvKTsKKwl3aGlsZSAoeWV0X3RvX2RvKSB7CisJCWxpc3QgPSB5ZXRfdG9fZG87CisJCXlldF90b19kbyA9IE5VTEw7CisJCXRhaWwgPSAmeWV0X3RvX2RvOworCQl3aGlsZSAobGlzdCkgeworCQkJc3RydWN0IGNvbW1pdCAqY29tbWl0ID0gbGlzdC0+aXRlbTsKKwkJCXN0cnVjdCBjb21taXRfbGlzdCAqbmV4dCA9IGxpc3QtPm5leHQ7CisJCQlmcmVlKGxpc3QpOworCQkJbGlzdCA9IG5leHQ7CisJCQl0YWlsID0gc2ltcGxpZnlfb25lKHJldnMsIGNvbW1pdCwgdGFpbCk7CisJCX0KKwl9CisKKwkvKiBjbGVhbiB1cCB0aGUgcmVzdWx0LCByZW1vdmluZyB0aGUgc2ltcGxpZmllZCBvbmVzICovCisJbGlzdCA9IHJldnMtPmNvbW1pdHM7CisJcmV2cy0+Y29tbWl0cyA9IE5VTEw7CisJdGFpbCA9ICZyZXZzLT5jb21taXRzOworCXdoaWxlIChsaXN0KSB7CisJCXN0cnVjdCBjb21taXQgKmNvbW1pdCA9IGxpc3QtPml0ZW07CisJCXN0cnVjdCBjb21taXRfbGlzdCAqbmV4dCA9IGxpc3QtPm5leHQ7CisJCXN0cnVjdCBtZXJnZV9zaW1wbGlmeV9zdGF0ZSAqc3Q7CisJCWZyZWUobGlzdCk7CisJCWxpc3QgPSBuZXh0OworCQlzdCA9IGxvY2F0ZV9zaW1wbGlmeV9zdGF0ZShyZXZzLCBjb21taXQpOworCQlpZiAoc3QtPnNpbXBsaWZpZWQgPT0gY29tbWl0KQorCQkJdGFpbCA9ICZjb21taXRfbGlzdF9pbnNlcnQoY29tbWl0LCB0YWlsKS0+bmV4dDsKKwl9Cit9CisKIHN0YXRpYyB2b2lkIHNldF9jaGlsZHJlbihzdHJ1Y3QgcmV2X2luZm8gKnJldnMpCiB7CiAJc3RydWN0IGNvbW1pdF9saXN0ICpsOwpAQCAtMTM5NSw2ICsxNjEzLDggQEAKIAkJCXJldHVybiAtMTsKIAlpZiAocmV2cy0+dG9wb19vcmRlcikKIAkJc29ydF9pbl90b3BvbG9naWNhbF9vcmRlcigmcmV2cy0+Y29tbWl0cywgcmV2cy0+bGlmbyk7CisJaWYgKHJldnMtPnNpbXBsaWZ5X21lcmdlcykKKwkJc2ltcGxpZnlfbWVyZ2VzKHJldnMpOwogCWlmIChyZXZzLT5jaGlsZHJlbi5uYW1lKQogCQlzZXRfY2hpbGRyZW4ocmV2cyk7CiAJcmV0dXJuIDA7CkBAIC0xNDI3LDI2ICsxNjQ3LDYgQEAKIAl9CiB9CiAKLXN0YXRpYyB2b2lkIHJlbW92ZV9kdXBsaWNhdGVfcGFyZW50cyhzdHJ1Y3QgY29tbWl0ICpjb21taXQpCi17Ci0Jc3RydWN0IGNvbW1pdF9saXN0ICoqcHAsICpwOwotCi0JLyogRXhhbWluZSBleGlzdGluZyBwYXJlbnRzIHdoaWxlIG1hcmtpbmcgb25lcyB3ZSBoYXZlIHNlZW4uLi4gKi8KLQlwcCA9ICZjb21taXQtPnBhcmVudHM7Ci0Jd2hpbGUgKChwID0gKnBwKSAhPSBOVUxMKSB7Ci0JCXN0cnVjdCBjb21taXQgKnBhcmVudCA9IHAtPml0ZW07Ci0JCWlmIChwYXJlbnQtPm9iamVjdC5mbGFncyAmIFRNUF9NQVJLKSB7Ci0JCQkqcHAgPSBwLT5uZXh0OwotCQkJY29udGludWU7Ci0JCX0KLQkJcGFyZW50LT5vYmplY3QuZmxhZ3MgfD0gVE1QX01BUks7Ci0JCXBwID0gJnAtPm5leHQ7Ci0JfQotCS8qIC4uLiBhbmQgY2xlYXIgdGhlIHRlbXBvcmFyeSBtYXJrICovCi0JZm9yIChwID0gY29tbWl0LT5wYXJlbnRzOyBwOyBwID0gcC0+bmV4dCkKLQkJcC0+aXRlbS0+b2JqZWN0LmZsYWdzICY9IH5UTVBfTUFSSzsKLX0KLQogc3RhdGljIGludCByZXdyaXRlX3BhcmVudHMoc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3QgY29tbWl0ICpjb21taXQpCiB7CiAJc3RydWN0IGNvbW1pdF9saXN0ICoqcHAgPSAmY29tbWl0LT5wYXJlbnRzOwpAQCAtMTUzOCwxNCArMTczOCwxNiBAQAogCQkJICAgIChjb21taXQtPmRhdGUgPCByZXZzLT5tYXhfYWdlKSkKIAkJCQljb250aW51ZTsKIAkJCWlmIChhZGRfcGFyZW50c190b19saXN0KHJldnMsIGNvbW1pdCwgJnJldnMtPmNvbW1pdHMsIE5VTEwpIDwgMCkKLQkJCQlyZXR1cm4gTlVMTDsKKwkJCQlkaWUoIkZhaWxlZCB0byB0cmF2ZXJzZSBwYXJlbnRzIG9mIGNvbW1pdCAlcyIsCisJCQkJICAgIHNoYTFfdG9faGV4KGNvbW1pdC0+b2JqZWN0LnNoYTEpKTsKIAkJfQogCiAJCXN3aXRjaCAoc2ltcGxpZnlfY29tbWl0KHJldnMsIGNvbW1pdCkpIHsKIAkJY2FzZSBjb21taXRfaWdub3JlOgogCQkJY29udGludWU7CiAJCWNhc2UgY29tbWl0X2Vycm9yOgotCQkJcmV0dXJuIE5VTEw7CisJCQlkaWUoIkZhaWxlZCB0byBzaW1wbGlmeSBwYXJlbnRzIG9mIGNvbW1pdCAlcyIsCisJCQkgICAgc2hhMV90b19oZXgoY29tbWl0LT5vYmplY3Quc2hhMSkpOwogCQlkZWZhdWx0OgogCQkJcmV0dXJuIGNvbW1pdDsKIAkJfQpAQCAtMTYzMywyNiArMTgzNSw2IEBACiAJCXJldHVybiBjOwogCX0KIAotCWlmIChyZXZzLT5yZXZlcnNlKSB7Ci0JCWludCBsaW1pdCA9IC0xOwotCi0JCWlmICgwIDw9IHJldnMtPm1heF9jb3VudCkgewotCQkJbGltaXQgPSByZXZzLT5tYXhfY291bnQ7Ci0JCQlpZiAoMCA8IHJldnMtPnNraXBfY291bnQpCi0JCQkJbGltaXQgKz0gcmV2cy0+c2tpcF9jb3VudDsKLQkJfQotCQlsID0gTlVMTDsKLQkJd2hpbGUgKChjID0gZ2V0X3JldmlzaW9uXzEocmV2cykpKSB7Ci0JCQljb21taXRfbGlzdF9pbnNlcnQoYywgJmwpOwotCQkJaWYgKCgwIDwgbGltaXQpICYmICEtLWxpbWl0KQotCQkJCWJyZWFrOwotCQl9Ci0JCXJldnMtPmNvbW1pdHMgPSBsOwotCQlyZXZzLT5yZXZlcnNlID0gMDsKLQkJcmV2cy0+bWF4X2NvdW50ID0gLTE7Ci0JCWMgPSBOVUxMOwotCX0KLQogCS8qCiAJICogTm93IHBpY2sgdXAgd2hhdCB0aGV5IHdhbnQgdG8gZ2l2ZSB1cwogCSAqLwpAQCAtMTcyNSw3ICsxOTA3LDIzIEBACiAKIHN0cnVjdCBjb21taXQgKmdldF9yZXZpc2lvbihzdHJ1Y3QgcmV2X2luZm8gKnJldnMpCiB7Ci0Jc3RydWN0IGNvbW1pdCAqYyA9IGdldF9yZXZpc2lvbl9pbnRlcm5hbChyZXZzKTsKKwlzdHJ1Y3QgY29tbWl0ICpjOworCXN0cnVjdCBjb21taXRfbGlzdCAqcmV2ZXJzZWQ7CisKKwlpZiAocmV2cy0+cmV2ZXJzZSkgeworCQlyZXZlcnNlZCA9IE5VTEw7CisJCXdoaWxlICgoYyA9IGdldF9yZXZpc2lvbl9pbnRlcm5hbChyZXZzKSkpIHsKKwkJCWNvbW1pdF9saXN0X2luc2VydChjLCAmcmV2ZXJzZWQpOworCQl9CisJCXJldnMtPmNvbW1pdHMgPSByZXZlcnNlZDsKKwkJcmV2cy0+cmV2ZXJzZSA9IDA7CisJCXJldnMtPnJldmVyc2Vfb3V0cHV0X3N0YWdlID0gMTsKKwl9CisKKwlpZiAocmV2cy0+cmV2ZXJzZV9vdXRwdXRfc3RhZ2UpCisJCXJldHVybiBwb3BfY29tbWl0KCZyZXZzLT5jb21taXRzKTsKKworCWMgPSBnZXRfcmV2aXNpb25faW50ZXJuYWwocmV2cyk7CiAJaWYgKGMgJiYgcmV2cy0+Z3JhcGgpCiAJCWdyYXBoX3VwZGF0ZShyZXZzLT5ncmFwaCwgYyk7CiAJcmV0dXJuIGM7CmRpZmYgLS1naXQgYS9yZXZpc2lvbi5oIGIvcmV2aXNpb24uaAppbmRleCA5MWYxOTQ0Li43Y2Y4NDg3IDEwMDY0NAotLS0gYS9yZXZpc2lvbi5oCisrKyBiL3JldmlzaW9uLmgKQEAgLTQyLDYgKzQyLDggQEAKIAkJCXNpbXBsaWZ5X2hpc3Rvcnk6MSwKIAkJCWxpZm86MSwKIAkJCXRvcG9fb3JkZXI6MSwKKwkJCXNpbXBsaWZ5X21lcmdlczoxLAorCQkJc2ltcGxpZnlfYnlfZGVjb3JhdGlvbjoxLAogCQkJdGFnX29iamVjdHM6MSwKIAkJCXRyZWVfb2JqZWN0czoxLAogCQkJYmxvYl9vYmplY3RzOjEsCkBAIC01Miw3ICs1NCwxMCBAQAogCQkJbGVmdF9yaWdodDoxLAogCQkJcmV3cml0ZV9wYXJlbnRzOjEsCiAJCQlwcmludF9wYXJlbnRzOjEsCisJCQlzaG93X3NvdXJjZToxLAorCQkJc2hvd19kZWNvcmF0aW9uczoxLAogCQkJcmV2ZXJzZToxLAorCQkJcmV2ZXJzZV9vdXRwdXRfc3RhZ2U6MSwKIAkJCWNoZXJyeV9waWNrOjEsCiAJCQlmaXJzdF9wYXJlbnRfb25seToxOwogCkBAIC0xMTAsNiArMTE1LDcgQEAKIAogCXN0cnVjdCByZWZsb2dfd2Fsa19pbmZvICpyZWZsb2dfaW5mbzsKIAlzdHJ1Y3QgZGVjb3JhdGlvbiBjaGlsZHJlbjsKKwlzdHJ1Y3QgZGVjb3JhdGlvbiBtZXJnZV9zaW1wbGlmaWNhdGlvbjsKIH07CiAKICNkZWZpbmUgUkVWX1RSRUVfU0FNRQkJMApkaWZmIC0tZ2l0IGEvcnVuLWNvbW1hbmQuYyBiL3J1bi1jb21tYW5kLmMKaW5kZXggYmJiOWM3Ny4uNDRmY2NjOSAxMDA2NDQKLS0tIGEvcnVuLWNvbW1hbmQuYworKysgYi9ydW4tY29tbWFuZC5jCkBAIC0xMTEsMTIgKzExMSwxNiBAQAogCQkJCQl1bnNldGVudigqY21kLT5lbnYpOwogCQkJfQogCQl9CisJCWlmIChjbWQtPnByZWV4ZWNfY2IpCisJCQljbWQtPnByZWV4ZWNfY2IoKTsKIAkJaWYgKGNtZC0+Z2l0X2NtZCkgewogCQkJZXhlY3ZfZ2l0X2NtZChjbWQtPmFyZ3YpOwogCQl9IGVsc2UgewogCQkJZXhlY3ZwKGNtZC0+YXJndlswXSwgKGNoYXIgKmNvbnN0KikgY21kLT5hcmd2KTsKIAkJfQotCQlkaWUoImV4ZWMgJXMgZmFpbGVkLiIsIGNtZC0+YXJndlswXSk7CisJCXRyYWNlX3ByaW50ZigidHJhY2U6IGV4ZWMgJyVzJyBmYWlsZWQ6ICVzXG4iLCBjbWQtPmFyZ3ZbMF0sCisJCQkJc3RyZXJyb3IoZXJybm8pKTsKKwkJZXhpdCgxMjcpOwogCX0KICNlbHNlCiAJaW50IHMwID0gLTEsIHMxID0gLTEsIHMyID0gLTE7CS8qIGJhY2t1cHMgb2Ygc3RkaW4sIHN0ZG91dCwgc3RkZXJyICovCkBAIC0xODUsNiArMTg5LDcgQEAKICNlbmRpZgogCiAJaWYgKGNtZC0+cGlkIDwgMCkgeworCQlpbnQgZXJyID0gZXJybm87CiAJCWlmIChuZWVkX2luKQogCQkJY2xvc2VfcGFpcihmZGluKTsKIAkJZWxzZSBpZiAoY21kLT5pbikKQEAgLTE5NSw3ICsyMDAsOSBAQAogCQkJY2xvc2UoY21kLT5vdXQpOwogCQlpZiAobmVlZF9lcnIpCiAJCQljbG9zZV9wYWlyKGZkZXJyKTsKLQkJcmV0dXJuIC1FUlJfUlVOX0NPTU1BTkRfRk9SSzsKKwkJcmV0dXJuIGVyciA9PSBFTk9FTlQgPworCQkJLUVSUl9SVU5fQ09NTUFORF9FWEVDIDoKKwkJCS1FUlJfUlVOX0NPTU1BTkRfRk9SSzsKIAl9CiAKIAlpZiAobmVlZF9pbikKQEAgLTIzNCw5ICsyNDEsMTQgQEAKIAkJaWYgKCFXSUZFWElURUQoc3RhdHVzKSkKIAkJCXJldHVybiAtRVJSX1JVTl9DT01NQU5EX1dBSVRQSURfTk9FWElUOwogCQljb2RlID0gV0VYSVRTVEFUVVMoc3RhdHVzKTsKLQkJaWYgKGNvZGUpCisJCXN3aXRjaCAoY29kZSkgeworCQljYXNlIDEyNzoKKwkJCXJldHVybiAtRVJSX1JVTl9DT01NQU5EX0VYRUM7CisJCWNhc2UgMDoKKwkJCXJldHVybiAwOworCQlkZWZhdWx0OgogCQkJcmV0dXJuIC1jb2RlOwotCQlyZXR1cm4gMDsKKwkJfQogCX0KIH0KIApAQCAtMjcxLDE0ICsyODMsNiBAQAogCXJldHVybiBydW5fY29tbWFuZCgmY21kKTsKIH0KIAotaW50IHJ1bl9jb21tYW5kX3Zfb3B0X2NkKGNvbnN0IGNoYXIgKiphcmd2LCBpbnQgb3B0LCBjb25zdCBjaGFyICpkaXIpCi17Ci0Jc3RydWN0IGNoaWxkX3Byb2Nlc3MgY21kOwotCXByZXBhcmVfcnVuX2NvbW1hbmRfdl9vcHQoJmNtZCwgYXJndiwgb3B0KTsKLQljbWQuZGlyID0gZGlyOwotCXJldHVybiBydW5fY29tbWFuZCgmY21kKTsKLX0KLQogaW50IHJ1bl9jb21tYW5kX3Zfb3B0X2NkX2Vudihjb25zdCBjaGFyICoqYXJndiwgaW50IG9wdCwgY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpjb25zdCAqZW52KQogewogCXN0cnVjdCBjaGlsZF9wcm9jZXNzIGNtZDsKZGlmZiAtLWdpdCBhL3J1bi1jb21tYW5kLmggYi9ydW4tY29tbWFuZC5oCmluZGV4IDUyMDNhOWUuLmU5MGQ5MjggMTAwNjQ0Ci0tLSBhL3J1bi1jb21tYW5kLmgKKysrIGIvcnVuLWNvbW1hbmQuaApAQCAtMTAsNiArMTAsNyBAQAogCUVSUl9SVU5fQ09NTUFORF9XQUlUUElEX1NJR05BTCwKIAlFUlJfUlVOX0NPTU1BTkRfV0FJVFBJRF9OT0VYSVQsCiB9OworI2RlZmluZSBJU19SVU5fQ09NTUFORF9FUlIoeCkgKCh4KSA8PSAtRVJSX1JVTl9DT01NQU5EX0ZPUkspCiAKIHN0cnVjdCBjaGlsZF9wcm9jZXNzIHsKIAljb25zdCBjaGFyICoqYXJndjsKQEAgLTQyLDYgKzQzLDcgQEAKIAl1bnNpZ25lZCBub19zdGRlcnI6MTsKIAl1bnNpZ25lZCBnaXRfY21kOjE7IC8qIGlmIHRoaXMgaXMgdG8gYmUgZ2l0IHN1Yi1jb21tYW5kICovCiAJdW5zaWduZWQgc3Rkb3V0X3RvX3N0ZGVycjoxOworCXZvaWQgKCpwcmVleGVjX2NiKSh2b2lkKTsKIH07CiAKIGludCBzdGFydF9jb21tYW5kKHN0cnVjdCBjaGlsZF9wcm9jZXNzICopOwpAQCAtNTIsNyArNTQsNiBAQAogI2RlZmluZSBSVU5fR0lUX0NNRAkgICAgIDIJLypJZiB0aGlzIGlzIHRvIGJlIGdpdCBzdWItY29tbWFuZCAqLwogI2RlZmluZSBSVU5fQ09NTUFORF9TVERPVVRfVE9fU1RERVJSIDQKIGludCBydW5fY29tbWFuZF92X29wdChjb25zdCBjaGFyICoqYXJndiwgaW50IG9wdCk7Ci1pbnQgcnVuX2NvbW1hbmRfdl9vcHRfY2QoY29uc3QgY2hhciAqKmFyZ3YsIGludCBvcHQsIGNvbnN0IGNoYXIgKmRpcik7CiAKIC8qCiAgKiBlbnYgKHRoZSBlbnZpcm9ubWVudCkgaXMgdG8gYmUgZm9ybWF0dGVkIGxpa2UgZW52aXJvbjogIlZBUj1WQUxVRSIuCmRpZmYgLS1naXQgYS9zZXR1cC5jIGIvc2V0dXAuYwppbmRleCA3OGE4MDQxLi5kZmRhNTMyIDEwMDY0NAotLS0gYS9zZXR1cC5jCisrKyBiL3NldHVwLmMKQEAgLTQ1Niw3ICs0NTYsMTEgQEAKIAkJCWluc2lkZV9naXRfZGlyID0gMTsKIAkJCWlmICghd29ya190cmVlX2VudikKIAkJCQlpbnNpZGVfd29ya190cmVlID0gMDsKLQkJCXNldGVudihHSVRfRElSX0VOVklST05NRU5ULCAiLiIsIDEpOworCQkJaWYgKG9mZnNldCAhPSBsZW4pIHsKKwkJCQljd2Rbb2Zmc2V0XSA9ICdcMCc7CisJCQkJc2V0ZW52KEdJVF9ESVJfRU5WSVJPTk1FTlQsIGN3ZCwgMSk7CisJCQl9IGVsc2UKKwkJCQlzZXRlbnYoR0lUX0RJUl9FTlZJUk9OTUVOVCwgIi4iLCAxKTsKIAkJCWNoZWNrX3JlcG9zaXRvcnlfZm9ybWF0X2dlbnRseShub25naXRfb2spOwogCQkJcmV0dXJuIE5VTEw7CiAJCX0KQEAgLTQ2OCw5ICs0NzIsMTAgQEAKIAkJCQkqbm9uZ2l0X29rID0gMTsKIAkJCQlyZXR1cm4gTlVMTDsKIAkJCX0KLQkJCWRpZSgiTm90IGEgZ2l0IHJlcG9zaXRvcnkiKTsKKwkJCWRpZSgiTm90IGEgZ2l0IHJlcG9zaXRvcnkgKG9yIGFueSBvZiB0aGUgcGFyZW50IGRpcmVjdG9yaWVzKTogJXMiLCBERUZBVUxUX0dJVF9ESVJfRU5WSVJPTk1FTlQpOwogCQl9Ci0JCWNoZGlyKCIuLiIpOworCQlpZiAoY2hkaXIoIi4uIikpCisJCQlkaWUoIkNhbm5vdCBjaGFuZ2UgdG8gJXMvLi46ICVzIiwgY3dkLCBzdHJlcnJvcihlcnJubykpOwogCX0KIAogCWluc2lkZV9naXRfZGlyID0gMDsKZGlmZiAtLWdpdCBhL3NoYTFfZmlsZS5jIGIvc2hhMV9maWxlLmMKaW5kZXggYmVhOTU4ZS4uYjYzZjg0MiAxMDA2NDQKLS0tIGEvc2hhMV9maWxlLmMKKysrIGIvc2hhMV9maWxlLmMKQEAgLTk5LDcgKzk5LDExIEBACiAJCXBvcyA9IHN0cmNocihwb3MsICcvJyk7CiAJCWlmICghcG9zKQogCQkJYnJlYWs7Ci0JCSpwb3MgPSAwOworCQl3aGlsZSAoKisrcG9zID09ICcvJykKKwkJCTsKKwkJaWYgKCEqcG9zKQorCQkJYnJlYWs7CisJCSotLXBvcyA9ICdcMCc7CiAJCWlmICghc3RhdChwYXRoLCAmc3QpKSB7CiAJCQkvKiBwYXRoIGV4aXN0cyAqLwogCQkJaWYgKCFTX0lTRElSKHN0LnN0X21vZGUpKSB7CkBAIC0yNTAsNyArMjU0LDYgQEAKICAqLwogc3RhdGljIGludCBsaW5rX2FsdF9vZGJfZW50cnkoY29uc3QgY2hhciAqIGVudHJ5LCBpbnQgbGVuLCBjb25zdCBjaGFyICogcmVsYXRpdmVfYmFzZSwgaW50IGRlcHRoKQogewotCXN0cnVjdCBzdGF0IHN0OwogCWNvbnN0IGNoYXIgKm9iamRpciA9IGdldF9vYmplY3RfZGlyZWN0b3J5KCk7CiAJc3RydWN0IGFsdGVybmF0ZV9vYmplY3RfZGF0YWJhc2UgKmVudDsKIAlzdHJ1Y3QgYWx0ZXJuYXRlX29iamVjdF9kYXRhYmFzZSAqYWx0OwpAQCAtMjgxLDcgKzI4NCw3IEBACiAJZW50LT5iYXNlW3BmeGxlbl0gPSBlbnQtPmJhc2VbZW50bGVuLTFdID0gMDsKIAogCS8qIERldGVjdCBjYXNlcyB3aGVyZSBhbHRlcm5hdGUgZGlzYXBwZWFyZWQgKi8KLQlpZiAoc3RhdChlbnQtPmJhc2UsICZzdCkgfHwgIVNfSVNESVIoc3Quc3RfbW9kZSkpIHsKKwlpZiAoIWlzX2RpcmVjdG9yeShlbnQtPmJhc2UpKSB7CiAJCWVycm9yKCJvYmplY3QgZGlyZWN0b3J5ICVzIGRvZXMgbm90IGV4aXN0OyAiCiAJCSAgICAgICJjaGVjayAuZ2l0L29iamVjdHMvaW5mby9hbHRlcm5hdGVzLiIsCiAJCSAgICAgIGVudC0+YmFzZSk7CkBAIC0zOTQsNiArMzk3LDE2IEBACiAJCWxpbmtfYWx0X29kYl9lbnRyaWVzKGFsdCwgYWx0ICsgc3RybGVuKGFsdCksICdcbicsIE5VTEwsIDApOwogfQogCit2b2lkIGZvcmVhY2hfYWx0X29kYihhbHRfb2RiX2ZuIGZuLCB2b2lkICpjYikKK3sKKwlzdHJ1Y3QgYWx0ZXJuYXRlX29iamVjdF9kYXRhYmFzZSAqZW50OworCisJcHJlcGFyZV9hbHRfb2RiKCk7CisJZm9yIChlbnQgPSBhbHRfb2RiX2xpc3Q7IGVudDsgZW50ID0gZW50LT5uZXh0KQorCQlpZiAoZm4oZW50LCBjYikpCisJCQlyZXR1cm47Cit9CisKIHZvaWQgcHJlcGFyZV9hbHRfb2RiKHZvaWQpCiB7CiAJY29uc3QgY2hhciAqYWx0OwpAQCAtMTE0MSw3ICsxMTU0LDggQEAKIAkJcmV0dXJuIDA7CiB9CiAKLXVuc2lnbmVkIGxvbmcgdW5wYWNrX29iamVjdF9oZWFkZXJfZ2VudGx5KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZiwgdW5zaWduZWQgbG9uZyBsZW4sIGVudW0gb2JqZWN0X3R5cGUgKnR5cGUsIHVuc2lnbmVkIGxvbmcgKnNpemVwKQordW5zaWduZWQgbG9uZyB1bnBhY2tfb2JqZWN0X2hlYWRlcl9idWZmZXIoY29uc3QgdW5zaWduZWQgY2hhciAqYnVmLAorCQl1bnNpZ25lZCBsb25nIGxlbiwgZW51bSBvYmplY3RfdHlwZSAqdHlwZSwgdW5zaWduZWQgbG9uZyAqc2l6ZXApCiB7CiAJdW5zaWduZWQgc2hpZnQ7CiAJdW5zaWduZWQgY2hhciBjOwpAQCAtMTE1MywxMCArMTE2NywxMCBAQAogCXNpemUgPSBjICYgMTU7CiAJc2hpZnQgPSA0OwogCXdoaWxlIChjICYgMHg4MCkgewotCQlpZiAobGVuIDw9IHVzZWQpCisJCWlmIChsZW4gPD0gdXNlZCB8fCBzaXplb2YobG9uZykgKiA4IDw9IHNoaWZ0KSB7CisJCQllcnJvcigiYmFkIG9iamVjdCBoZWFkZXIiKTsKIAkJCXJldHVybiAwOwotCQlpZiAoc2l6ZW9mKGxvbmcpICogOCA8PSBzaGlmdCkKLQkJCXJldHVybiAwOworCQl9CiAJCWMgPSBidWZbdXNlZCsrXTsKIAkJc2l6ZSArPSAoYyAmIDB4N2YpIDw8IHNoaWZ0OwogCQlzaGlmdCArPSA3OwpAQCAtMTE4Myw4ICsxMTk3LDggQEAKIAlzdHJlYW0tPmF2YWlsX291dCA9IGJ1ZnNpejsKIAogCWlmIChsZWdhY3lfbG9vc2Vfb2JqZWN0KG1hcCkpIHsKLQkJaW5mbGF0ZUluaXQoc3RyZWFtKTsKLQkJcmV0dXJuIGluZmxhdGUoc3RyZWFtLCAwKTsKKwkJZ2l0X2luZmxhdGVfaW5pdChzdHJlYW0pOworCQlyZXR1cm4gZ2l0X2luZmxhdGUoc3RyZWFtLCAwKTsKIAl9CiAKIApAQCAtMTE5NSw3ICsxMjA5LDcgQEAKIAkgKiByZWFsbHkgd29ydGggaXQgYW5kIHdlIGRvbid0IHdyaXRlIGl0IGFueSBsb25nZXIuICBCdXQgd2UKIAkgKiBjYW4gc3RpbGwgcmVhZCBpdC4KIAkgKi8KLQl1c2VkID0gdW5wYWNrX29iamVjdF9oZWFkZXJfZ2VudGx5KG1hcCwgbWFwc2l6ZSwgJnR5cGUsICZzaXplKTsKKwl1c2VkID0gdW5wYWNrX29iamVjdF9oZWFkZXJfYnVmZmVyKG1hcCwgbWFwc2l6ZSwgJnR5cGUsICZzaXplKTsKIAlpZiAoIXVzZWQgfHwgIXZhbGlkX2xvb3NlX29iamVjdF90eXBlW3R5cGVdKQogCQlyZXR1cm4gLTE7CiAJbWFwICs9IHVzZWQ7CkBAIC0xMjA0LDcgKzEyMTgsNyBAQAogCS8qIFNldCB1cCB0aGUgc3RyZWFtIGZvciB0aGUgcmVzdC4uICovCiAJc3RyZWFtLT5uZXh0X2luID0gbWFwOwogCXN0cmVhbS0+YXZhaWxfaW4gPSBtYXBzaXplOwotCWluZmxhdGVJbml0KHN0cmVhbSk7CisJZ2l0X2luZmxhdGVfaW5pdChzdHJlYW0pOwogCiAJLyogQW5kIGdlbmVyYXRlIHRoZSBmYWtlIHRyYWRpdGlvbmFsIGhlYWRlciAqLwogCXN0cmVhbS0+dG90YWxfb3V0ID0gMSArIHNucHJpbnRmKGJ1ZmZlciwgYnVmc2l6LCAiJXMgJWx1IiwKQEAgLTEyNDEsMTEgKzEyNTUsMTEgQEAKIAkJc3RyZWFtLT5uZXh0X291dCA9IGJ1ZiArIGJ5dGVzOwogCQlzdHJlYW0tPmF2YWlsX291dCA9IHNpemUgLSBieXRlczsKIAkJd2hpbGUgKHN0YXR1cyA9PSBaX09LKQotCQkJc3RhdHVzID0gaW5mbGF0ZShzdHJlYW0sIFpfRklOSVNIKTsKKwkJCXN0YXR1cyA9IGdpdF9pbmZsYXRlKHN0cmVhbSwgWl9GSU5JU0gpOwogCX0KIAlidWZbc2l6ZV0gPSAwOwogCWlmIChzdGF0dXMgPT0gWl9TVFJFQU1fRU5EICYmICFzdHJlYW0tPmF2YWlsX2luKSB7Ci0JCWluZmxhdGVFbmQoc3RyZWFtKTsKKwkJZ2l0X2luZmxhdGVfZW5kKHN0cmVhbSk7CiAJCXJldHVybiBidWY7CiAJfQogCkBAIC0xMzM1LDE3ICsxMzQ5LDE5IEBACiAJc3RyZWFtLm5leHRfb3V0ID0gZGVsdGFfaGVhZDsKIAlzdHJlYW0uYXZhaWxfb3V0ID0gc2l6ZW9mKGRlbHRhX2hlYWQpOwogCi0JaW5mbGF0ZUluaXQoJnN0cmVhbSk7CisJZ2l0X2luZmxhdGVfaW5pdCgmc3RyZWFtKTsKIAlkbyB7CiAJCWluID0gdXNlX3BhY2socCwgd19jdXJzLCBjdXJwb3MsICZzdHJlYW0uYXZhaWxfaW4pOwogCQlzdHJlYW0ubmV4dF9pbiA9IGluOwotCQlzdCA9IGluZmxhdGUoJnN0cmVhbSwgWl9GSU5JU0gpOworCQlzdCA9IGdpdF9pbmZsYXRlKCZzdHJlYW0sIFpfRklOSVNIKTsKIAkJY3VycG9zICs9IHN0cmVhbS5uZXh0X2luIC0gaW47CiAJfSB3aGlsZSAoKHN0ID09IFpfT0sgfHwgc3QgPT0gWl9CVUZfRVJST1IpICYmCiAJCSBzdHJlYW0udG90YWxfb3V0IDwgc2l6ZW9mKGRlbHRhX2hlYWQpKTsKLQlpbmZsYXRlRW5kKCZzdHJlYW0pOwotCWlmICgoc3QgIT0gWl9TVFJFQU1fRU5EKSAmJiBzdHJlYW0udG90YWxfb3V0ICE9IHNpemVvZihkZWx0YV9oZWFkKSkKLQkJZGllKCJkZWx0YSBkYXRhIHVucGFjay1pbml0aWFsIGZhaWxlZCIpOworCWdpdF9pbmZsYXRlX2VuZCgmc3RyZWFtKTsKKwlpZiAoKHN0ICE9IFpfU1RSRUFNX0VORCkgJiYgc3RyZWFtLnRvdGFsX291dCAhPSBzaXplb2YoZGVsdGFfaGVhZCkpIHsKKwkJZXJyb3IoImRlbHRhIGRhdGEgdW5wYWNrLWluaXRpYWwgZmFpbGVkIik7CisJCXJldHVybiAwOworCX0KIAogCS8qIEV4YW1pbmUgdGhlIGluaXRpYWwgcGFydCBvZiB0aGUgZGVsdGEgdG8gZmlndXJlIG91dAogCSAqIHRoZSByZXN1bHQgc2l6ZS4KQEAgLTEzODYsNyArMTQwMiw3IEBACiAJCQliYXNlX29mZnNldCA9IChiYXNlX29mZnNldCA8PCA3KSArIChjICYgMTI3KTsKIAkJfQogCQliYXNlX29mZnNldCA9IGRlbHRhX29ial9vZmZzZXQgLSBiYXNlX29mZnNldDsKLQkJaWYgKGJhc2Vfb2Zmc2V0ID49IGRlbHRhX29ial9vZmZzZXQpCisJCWlmIChiYXNlX29mZnNldCA8PSAwIHx8IGJhc2Vfb2Zmc2V0ID49IGRlbHRhX29ial9vZmZzZXQpCiAJCQlyZXR1cm4gMDsgIC8qIG91dCBvZiBib3VuZCAqLwogCQkqY3VycG9zICs9IHVzZWQ7CiAJfSBlbHNlIGlmICh0eXBlID09IE9CSl9SRUZfREVMVEEpIHsKQEAgLTE0MTIsMTUgKzE0MjgsMzIgQEAKIAlvZmZfdCBiYXNlX29mZnNldDsKIAogCWJhc2Vfb2Zmc2V0ID0gZ2V0X2RlbHRhX2Jhc2UocCwgd19jdXJzLCAmY3VycG9zLCB0eXBlLCBvYmpfb2Zmc2V0KTsKKwlpZiAoIWJhc2Vfb2Zmc2V0KQorCQlyZXR1cm4gT0JKX0JBRDsKIAl0eXBlID0gcGFja2VkX29iamVjdF9pbmZvKHAsIGJhc2Vfb2Zmc2V0LCBOVUxMKTsKKwlpZiAodHlwZSA8PSBPQkpfTk9ORSkgeworCQlzdHJ1Y3QgcmV2aW5kZXhfZW50cnkgKnJldmlkeDsKKwkJY29uc3QgdW5zaWduZWQgY2hhciAqYmFzZV9zaGExOworCQlyZXZpZHggPSBmaW5kX3BhY2tfcmV2aW5kZXgocCwgYmFzZV9vZmZzZXQpOworCQlpZiAoIXJldmlkeCkKKwkJCXJldHVybiBPQkpfQkFEOworCQliYXNlX3NoYTEgPSBudGhfcGFja2VkX29iamVjdF9zaGExKHAsIHJldmlkeC0+bnIpOworCQltYXJrX2JhZF9wYWNrZWRfb2JqZWN0KHAsIGJhc2Vfc2hhMSk7CisJCXR5cGUgPSBzaGExX29iamVjdF9pbmZvKGJhc2Vfc2hhMSwgTlVMTCk7CisJCWlmICh0eXBlIDw9IE9CSl9OT05FKQorCQkJcmV0dXJuIE9CSl9CQUQ7CisJfQogCiAJLyogV2UgY2hvb3NlIHRvIG9ubHkgZ2V0IHRoZSB0eXBlIG9mIHRoZSBiYXNlIG9iamVjdCBhbmQKIAkgKiBpZ25vcmUgcG90ZW50aWFsbHkgY29ycnVwdCBwYWNrIGZpbGUgdGhhdCBleHBlY3RzIHRoZSBkZWx0YQogCSAqIGJhc2VkIG9uIGEgYmFzZSB3aXRoIGEgd3Jvbmcgc2l6ZS4gIFRoaXMgc2F2ZXMgdG9ucyBvZgogCSAqIGluZmxhdGUoKSBjYWxscy4KIAkgKi8KLQlpZiAoc2l6ZXApCisJaWYgKHNpemVwKSB7CiAJCSpzaXplcCA9IGdldF9zaXplX2Zyb21fZGVsdGEocCwgd19jdXJzLCBjdXJwb3MpOworCQlpZiAoKnNpemVwID09IDApCisJCQl0eXBlID0gT0JKX0JBRDsKKwl9CiAKIAlyZXR1cm4gdHlwZTsKIH0KQEAgLTE0NDIsMTAgKzE0NzUsMTEgQEAKIAkgKiBpbnNhbmUsIHNvIHdlIGtub3cgd29uJ3QgZXhjZWVkIHdoYXQgd2UgaGF2ZSBiZWVuIGdpdmVuLgogCSAqLwogCWJhc2UgPSB1c2VfcGFjayhwLCB3X2N1cnMsICpjdXJwb3MsICZsZWZ0KTsKLQl1c2VkID0gdW5wYWNrX29iamVjdF9oZWFkZXJfZ2VudGx5KGJhc2UsIGxlZnQsICZ0eXBlLCBzaXplcCk7Ci0JaWYgKCF1c2VkKQotCQlkaWUoIm9iamVjdCBvZmZzZXQgb3V0c2lkZSBvZiBwYWNrIGZpbGUiKTsKLQkqY3VycG9zICs9IHVzZWQ7CisJdXNlZCA9IHVucGFja19vYmplY3RfaGVhZGVyX2J1ZmZlcihiYXNlLCBsZWZ0LCAmdHlwZSwgc2l6ZXApOworCWlmICghdXNlZCkgeworCQl0eXBlID0gT0JKX0JBRDsKKwl9IGVsc2UKKwkJKmN1cnBvcyArPSB1c2VkOwogCiAJcmV0dXJuIHR5cGU7CiB9CkBAIC0xNTI5LDggKzE1NjMsOSBAQAogCQkJKnNpemVwID0gc2l6ZTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJZGllKCJwYWNrICVzIGNvbnRhaW5zIHVua25vd24gb2JqZWN0IHR5cGUgJWQiLAotCQkgICAgcC0+cGFja19uYW1lLCB0eXBlKTsKKwkJZXJyb3IoInVua25vd24gb2JqZWN0IHR5cGUgJWkgYXQgb2Zmc2V0ICUiUFJJdU1BWCIgaW4gJXMiLAorCQkgICAgICB0eXBlLCAodWludG1heF90KW9ial9vZmZzZXQsIHAtPnBhY2tfbmFtZSk7CisJCXR5cGUgPSBPQkpfQkFEOwogCX0KIAl1bnVzZV9wYWNrKCZ3X2N1cnMpOwogCXJldHVybiB0eXBlOwpAQCAtMTU1MSwxNCArMTU4NiwxNCBAQAogCXN0cmVhbS5uZXh0X291dCA9IGJ1ZmZlcjsKIAlzdHJlYW0uYXZhaWxfb3V0ID0gc2l6ZTsKIAotCWluZmxhdGVJbml0KCZzdHJlYW0pOworCWdpdF9pbmZsYXRlX2luaXQoJnN0cmVhbSk7CiAJZG8gewogCQlpbiA9IHVzZV9wYWNrKHAsIHdfY3VycywgY3VycG9zLCAmc3RyZWFtLmF2YWlsX2luKTsKIAkJc3RyZWFtLm5leHRfaW4gPSBpbjsKLQkJc3QgPSBpbmZsYXRlKCZzdHJlYW0sIFpfRklOSVNIKTsKKwkJc3QgPSBnaXRfaW5mbGF0ZSgmc3RyZWFtLCBaX0ZJTklTSCk7CiAJCWN1cnBvcyArPSBzdHJlYW0ubmV4dF9pbiAtIGluOwogCX0gd2hpbGUgKHN0ID09IFpfT0sgfHwgc3QgPT0gWl9CVUZfRVJST1IpOwotCWluZmxhdGVFbmQoJnN0cmVhbSk7CisJZ2l0X2luZmxhdGVfZW5kKCZzdHJlYW0pOwogCWlmICgoc3QgIT0gWl9TVFJFQU1fRU5EKSB8fCBzdHJlYW0udG90YWxfb3V0ICE9IHNpemUpIHsKIAkJZnJlZShidWZmZXIpOwogCQlyZXR1cm4gTlVMTDsKQEAgLTE2MDIsMTEgKzE2MzcsOSBAQAogCXN0cnVjdCBkZWx0YV9iYXNlX2NhY2hlX2VudHJ5ICplbnQgPSBkZWx0YV9iYXNlX2NhY2hlICsgaGFzaDsKIAogCXJldCA9IGVudC0+ZGF0YTsKLQlpZiAocmV0ICYmIGVudC0+cCA9PSBwICYmIGVudC0+YmFzZV9vZmZzZXQgPT0gYmFzZV9vZmZzZXQpCi0JCWdvdG8gZm91bmRfY2FjaGVfZW50cnk7Ci0JcmV0dXJuIHVucGFja19lbnRyeShwLCBiYXNlX29mZnNldCwgdHlwZSwgYmFzZV9zaXplKTsKKwlpZiAoIXJldCB8fCBlbnQtPnAgIT0gcCB8fCBlbnQtPmJhc2Vfb2Zmc2V0ICE9IGJhc2Vfb2Zmc2V0KQorCQlyZXR1cm4gdW5wYWNrX2VudHJ5KHAsIGJhc2Vfb2Zmc2V0LCB0eXBlLCBiYXNlX3NpemUpOwogCi1mb3VuZF9jYWNoZV9lbnRyeToKIAlpZiAoIWtlZXBfY2FjaGUpIHsKIAkJZW50LT5kYXRhID0gTlVMTDsKIAkJZW50LT5scnUubmV4dC0+cHJldiA9IGVudC0+bHJ1LnByZXY7CkBAIC0xNzAzLDkgKzE3MzYsMTIgQEAKIAkJICogVGhpcyBpcyBjb3N0bHkgYnV0IHNob3VsZCBoYXBwZW4gb25seSBpbiB0aGUgcHJlc2VuY2UKIAkJICogb2YgYSBjb3JydXB0ZWQgcGFjaywgYW5kIGlzIGJldHRlciB0aGFuIGZhaWxpbmcgb3V0cmlnaHQuCiAJCSAqLwotCQlzdHJ1Y3QgcmV2aW5kZXhfZW50cnkgKnJldmlkeCA9IGZpbmRfcGFja19yZXZpbmRleChwLCBiYXNlX29mZnNldCk7Ci0JCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmJhc2Vfc2hhMSA9Ci0JCQkJCW50aF9wYWNrZWRfb2JqZWN0X3NoYTEocCwgcmV2aWR4LT5ucik7CisJCXN0cnVjdCByZXZpbmRleF9lbnRyeSAqcmV2aWR4OworCQljb25zdCB1bnNpZ25lZCBjaGFyICpiYXNlX3NoYTE7CisJCXJldmlkeCA9IGZpbmRfcGFja19yZXZpbmRleChwLCBiYXNlX29mZnNldCk7CisJCWlmICghcmV2aWR4KQorCQkJcmV0dXJuIE5VTEw7CisJCWJhc2Vfc2hhMSA9IG50aF9wYWNrZWRfb2JqZWN0X3NoYTEocCwgcmV2aWR4LT5ucik7CiAJCWVycm9yKCJmYWlsZWQgdG8gcmVhZCBkZWx0YSBiYXNlIG9iamVjdCAlcyIKIAkJICAgICAgIiBhdCBvZmZzZXQgJSJQUkl1TUFYIiBmcm9tICVzIiwKIAkJICAgICAgc2hhMV90b19oZXgoYmFzZV9zaGExKSwgKHVpbnRtYXhfdCliYXNlX29mZnNldCwKQEAgLTE3MzQsNiArMTc3MCw4IEBACiAJcmV0dXJuIHJlc3VsdDsKIH0KIAoraW50IGRvX2NoZWNrX3BhY2tlZF9vYmplY3RfY3JjOworCiB2b2lkICp1bnBhY2tfZW50cnkoc3RydWN0IHBhY2tlZF9naXQgKnAsIG9mZl90IG9ial9vZmZzZXQsCiAJCSAgIGVudW0gb2JqZWN0X3R5cGUgKnR5cGUsIHVuc2lnbmVkIGxvbmcgKnNpemVwKQogewpAQCAtMTc0MSw2ICsxNzc5LDIwIEBACiAJb2ZmX3QgY3VycG9zID0gb2JqX29mZnNldDsKIAl2b2lkICpkYXRhOwogCisJaWYgKGRvX2NoZWNrX3BhY2tlZF9vYmplY3RfY3JjICYmIHAtPmluZGV4X3ZlcnNpb24gPiAxKSB7CisJCXN0cnVjdCByZXZpbmRleF9lbnRyeSAqcmV2aWR4ID0gZmluZF9wYWNrX3JldmluZGV4KHAsIG9ial9vZmZzZXQpOworCQl1bnNpZ25lZCBsb25nIGxlbiA9IHJldmlkeFsxXS5vZmZzZXQgLSBvYmpfb2Zmc2V0OworCQlpZiAoY2hlY2tfcGFja19jcmMocCwgJndfY3Vycywgb2JqX29mZnNldCwgbGVuLCByZXZpZHgtPm5yKSkgeworCQkJY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSA9CisJCQkJbnRoX3BhY2tlZF9vYmplY3Rfc2hhMShwLCByZXZpZHgtPm5yKTsKKwkJCWVycm9yKCJiYWQgcGFja2VkIG9iamVjdCBDUkMgZm9yICVzIiwKKwkJCSAgICAgIHNoYTFfdG9faGV4KHNoYTEpKTsKKwkJCW1hcmtfYmFkX3BhY2tlZF9vYmplY3QocCwgc2hhMSk7CisJCQl1bnVzZV9wYWNrKCZ3X2N1cnMpOworCQkJcmV0dXJuIE5VTEw7CisJCX0KKwl9CisKIAkqdHlwZSA9IHVucGFja19vYmplY3RfaGVhZGVyKHAsICZ3X2N1cnMsICZjdXJwb3MsIHNpemVwKTsKIAlzd2l0Y2ggKCp0eXBlKSB7CiAJY2FzZSBPQkpfT0ZTX0RFTFRBOgpAQCAtMTk3Myw3ICsyMDI1LDcgQEAKIAkJc3RhdHVzID0gZXJyb3IoInVuYWJsZSB0byBwYXJzZSAlcyBoZWFkZXIiLCBzaGExX3RvX2hleChzaGExKSk7CiAJZWxzZSBpZiAoc2l6ZXApCiAJCSpzaXplcCA9IHNpemU7Ci0JaW5mbGF0ZUVuZCgmc3RyZWFtKTsKKwlnaXRfaW5mbGF0ZV9lbmQoJnN0cmVhbSk7CiAJbXVubWFwKG1hcCwgbWFwc2l6ZSk7CiAJcmV0dXJuIHN0YXR1czsKIH0KQEAgLTE5OTQsNyArMjA0NiwxNCBAQAogCQlpZiAoIWZpbmRfcGFja19lbnRyeShzaGExLCAmZSwgTlVMTCkpCiAJCQlyZXR1cm4gc3RhdHVzOwogCX0KLQlyZXR1cm4gcGFja2VkX29iamVjdF9pbmZvKGUucCwgZS5vZmZzZXQsIHNpemVwKTsKKworCXN0YXR1cyA9IHBhY2tlZF9vYmplY3RfaW5mbyhlLnAsIGUub2Zmc2V0LCBzaXplcCk7CisJaWYgKHN0YXR1cyA8IDApIHsKKwkJbWFya19iYWRfcGFja2VkX29iamVjdChlLnAsIHNoYTEpOworCQlzdGF0dXMgPSBzaGExX29iamVjdF9pbmZvKHNoYTEsIHNpemVwKTsKKwl9CisKKwlyZXR1cm4gc3RhdHVzOwogfQogCiBzdGF0aWMgdm9pZCAqcmVhZF9wYWNrZWRfc2hhMShjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLApAQCAtMjAzNiw5ICsyMDk1LDcgQEAKIHN0YXRpYyBpbnQgY2FjaGVkX29iamVjdF9uciwgY2FjaGVkX29iamVjdF9hbGxvYzsKIAogc3RhdGljIHN0cnVjdCBjYWNoZWRfb2JqZWN0IGVtcHR5X3RyZWUgPSB7Ci0JLyogZW1wdHkgdHJlZSBzaGExOiA0YjgyNWRjNjQyY2I2ZWI5YTA2MGU1NGJmOGQ2OTI4OGZiZWU0OTA0ICovCi0JIlx4NGJceDgyXHg1ZFx4YzZceDQyXHhjYlx4NmVceGI5XHhhMFx4NjAiCi0JIlx4ZTVceDRiXHhmOFx4ZDZceDkyXHg4OFx4ZmJceGVlXHg0OVx4MDQiLAorCUVNUFRZX1RSRUVfU0hBMV9CSU4sCiAJT0JKX1RSRUUsCiAJIiIsCiAJMApAQCAtMjE3MCwxNiArMjIyNywxNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdHlwZSwgdW5zaWduZWQgY2hhciAqc2hhMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmhkciwgaW50ICpoZHJsZW4pCiB7Ci0JU0hBX0NUWCBjOworCWdpdF9TSEFfQ1RYIGM7CiAKIAkvKiBHZW5lcmF0ZSB0aGUgaGVhZGVyICovCiAJKmhkcmxlbiA9IHNwcmludGYoaGRyLCAiJXMgJWx1IiwgdHlwZSwgbGVuKSsxOwogCiAJLyogU2hhMS4uICovCi0JU0hBMV9Jbml0KCZjKTsKLQlTSEExX1VwZGF0ZSgmYywgaGRyLCAqaGRybGVuKTsKLQlTSEExX1VwZGF0ZSgmYywgYnVmLCBsZW4pOwotCVNIQTFfRmluYWwoc2hhMSwgJmMpOworCWdpdF9TSEExX0luaXQoJmMpOworCWdpdF9TSEExX1VwZGF0ZSgmYywgaGRyLCAqaGRybGVuKTsKKwlnaXRfU0hBMV9VcGRhdGUoJmMsIGJ1ZiwgbGVuKTsKKwlnaXRfU0hBMV9GaW5hbChzaGExLCAmYyk7CiB9CiAKIC8qCkBAIC0yNDE5LDUxICsyNDc2LDIxIEBACiAJcmV0dXJuIGhhc19sb29zZV9vYmplY3Qoc2hhMSk7CiB9CiAKLWludCBpbmRleF9waXBlKHVuc2lnbmVkIGNoYXIgKnNoYTEsIGludCBmZCwgY29uc3QgY2hhciAqdHlwZSwgaW50IHdyaXRlX29iamVjdCkKK3N0YXRpYyBpbnQgaW5kZXhfbWVtKHVuc2lnbmVkIGNoYXIgKnNoYTEsIHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUsCisJCSAgICAgaW50IHdyaXRlX29iamVjdCwgZW51bSBvYmplY3RfdHlwZSB0eXBlLCBjb25zdCBjaGFyICpwYXRoKQogewotCXN0cnVjdCBzdHJidWYgYnVmOwotCWludCByZXQ7Ci0KLQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKLQlpZiAoc3RyYnVmX3JlYWQoJmJ1ZiwgZmQsIDQwOTYpIDwgMCkgewotCQlzdHJidWZfcmVsZWFzZSgmYnVmKTsKLQkJcmV0dXJuIC0xOwotCX0KLQotCWlmICghdHlwZSkKLQkJdHlwZSA9IGJsb2JfdHlwZTsKLQlpZiAod3JpdGVfb2JqZWN0KQotCQlyZXQgPSB3cml0ZV9zaGExX2ZpbGUoYnVmLmJ1ZiwgYnVmLmxlbiwgdHlwZSwgc2hhMSk7Ci0JZWxzZQotCQlyZXQgPSBoYXNoX3NoYTFfZmlsZShidWYuYnVmLCBidWYubGVuLCB0eXBlLCBzaGExKTsKLQlzdHJidWZfcmVsZWFzZSgmYnVmKTsKLQotCXJldHVybiByZXQ7Ci19Ci0KLWludCBpbmRleF9mZCh1bnNpZ25lZCBjaGFyICpzaGExLCBpbnQgZmQsIHN0cnVjdCBzdGF0ICpzdCwgaW50IHdyaXRlX29iamVjdCwKLQkgICAgIGVudW0gb2JqZWN0X3R5cGUgdHlwZSwgY29uc3QgY2hhciAqcGF0aCkKLXsKLQlzaXplX3Qgc2l6ZSA9IHhzaXplX3Qoc3QtPnN0X3NpemUpOwotCXZvaWQgKmJ1ZiA9IE5VTEw7CiAJaW50IHJldCwgcmVfYWxsb2NhdGVkID0gMDsKIAotCWlmIChzaXplKQotCQlidWYgPSB4bW1hcChOVUxMLCBzaXplLCBQUk9UX1JFQUQsIE1BUF9QUklWQVRFLCBmZCwgMCk7Ci0JY2xvc2UoZmQpOwotCiAJaWYgKCF0eXBlKQogCQl0eXBlID0gT0JKX0JMT0I7CiAKIAkvKgogCSAqIENvbnZlcnQgYmxvYnMgdG8gZ2l0IGludGVybmFsIGZvcm1hdAogCSAqLwotCWlmICgodHlwZSA9PSBPQkpfQkxPQikgJiYgU19JU1JFRyhzdC0+c3RfbW9kZSkpIHsKLQkJc3RydWN0IHN0cmJ1ZiBuYnVmOwotCQlzdHJidWZfaW5pdCgmbmJ1ZiwgMCk7CisJaWYgKCh0eXBlID09IE9CSl9CTE9CKSAmJiBwYXRoKSB7CisJCXN0cnVjdCBzdHJidWYgbmJ1ZiA9IFNUUkJVRl9JTklUOwogCQlpZiAoY29udmVydF90b19naXQocGF0aCwgYnVmLCBzaXplLCAmbmJ1ZiwKIAkJICAgICAgICAgICAgICAgICAgIHdyaXRlX29iamVjdCA/IHNhZmVfY3JsZiA6IDApKSB7Ci0JCQltdW5tYXAoYnVmLCBzaXplKTsKIAkJCWJ1ZiA9IHN0cmJ1Zl9kZXRhY2goJm5idWYsICZzaXplKTsKIAkJCXJlX2FsbG9jYXRlZCA9IDE7CiAJCX0KQEAgLTI0NzMsMjAgKzI1MDAsMzkgQEAKIAkJcmV0ID0gd3JpdGVfc2hhMV9maWxlKGJ1Ziwgc2l6ZSwgdHlwZW5hbWUodHlwZSksIHNoYTEpOwogCWVsc2UKIAkJcmV0ID0gaGFzaF9zaGExX2ZpbGUoYnVmLCBzaXplLCB0eXBlbmFtZSh0eXBlKSwgc2hhMSk7Ci0JaWYgKHJlX2FsbG9jYXRlZCkgeworCWlmIChyZV9hbGxvY2F0ZWQpCiAJCWZyZWUoYnVmKTsKLQkJcmV0dXJuIHJldDsKLQl9Ci0JaWYgKHNpemUpCisJcmV0dXJuIHJldDsKK30KKworaW50IGluZGV4X2ZkKHVuc2lnbmVkIGNoYXIgKnNoYTEsIGludCBmZCwgc3RydWN0IHN0YXQgKnN0LCBpbnQgd3JpdGVfb2JqZWN0LAorCSAgICAgZW51bSBvYmplY3RfdHlwZSB0eXBlLCBjb25zdCBjaGFyICpwYXRoKQoreworCWludCByZXQ7CisJc2l6ZV90IHNpemUgPSB4c2l6ZV90KHN0LT5zdF9zaXplKTsKKworCWlmICghU19JU1JFRyhzdC0+c3RfbW9kZSkpIHsKKwkJc3RydWN0IHN0cmJ1ZiBzYnVmID0gU1RSQlVGX0lOSVQ7CisJCWlmIChzdHJidWZfcmVhZCgmc2J1ZiwgZmQsIDQwOTYpID49IDApCisJCQlyZXQgPSBpbmRleF9tZW0oc2hhMSwgc2J1Zi5idWYsIHNidWYubGVuLCB3cml0ZV9vYmplY3QsCisJCQkJCXR5cGUsIHBhdGgpOworCQllbHNlCisJCQlyZXQgPSAtMTsKKwkJc3RyYnVmX3JlbGVhc2UoJnNidWYpOworCX0gZWxzZSBpZiAoc2l6ZSkgeworCQl2b2lkICpidWYgPSB4bW1hcChOVUxMLCBzaXplLCBQUk9UX1JFQUQsIE1BUF9QUklWQVRFLCBmZCwgMCk7CisJCXJldCA9IGluZGV4X21lbShzaGExLCBidWYsIHNpemUsIHdyaXRlX29iamVjdCwgdHlwZSwgcGF0aCk7CiAJCW11bm1hcChidWYsIHNpemUpOworCX0gZWxzZQorCQlyZXQgPSBpbmRleF9tZW0oc2hhMSwgTlVMTCwgc2l6ZSwgd3JpdGVfb2JqZWN0LCB0eXBlLCBwYXRoKTsKKwljbG9zZShmZCk7CiAJcmV0dXJuIHJldDsKIH0KIAogaW50IGluZGV4X3BhdGgodW5zaWduZWQgY2hhciAqc2hhMSwgY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKnN0LCBpbnQgd3JpdGVfb2JqZWN0KQogewogCWludCBmZDsKLQljaGFyICp0YXJnZXQ7Ci0Jc2l6ZV90IGxlbjsKKwlzdHJ1Y3Qgc3RyYnVmIHNiID0gU1RSQlVGX0lOSVQ7CiAKIAlzd2l0Y2ggKHN0LT5zdF9tb2RlICYgU19JRk1UKSB7CiAJY2FzZSBTX0lGUkVHOgpAQCAtMjQ5OSwyMCArMjU0NSwxNyBAQAogCQkJCSAgICAgcGF0aCk7CiAJCWJyZWFrOwogCWNhc2UgU19JRkxOSzoKLQkJbGVuID0geHNpemVfdChzdC0+c3Rfc2l6ZSk7Ci0JCXRhcmdldCA9IHhtYWxsb2MobGVuICsgMSk7Ci0JCWlmIChyZWFkbGluayhwYXRoLCB0YXJnZXQsIGxlbiArIDEpICE9IHN0LT5zdF9zaXplKSB7CisJCWlmIChzdHJidWZfcmVhZGxpbmsoJnNiLCBwYXRoLCBzdC0+c3Rfc2l6ZSkpIHsKIAkJCWNoYXIgKmVycnN0ciA9IHN0cmVycm9yKGVycm5vKTsKLQkJCWZyZWUodGFyZ2V0KTsKIAkJCXJldHVybiBlcnJvcigicmVhZGxpbmsoXCIlc1wiKTogJXMiLCBwYXRoLAogCQkJICAgICAgICAgICAgIGVycnN0cik7CiAJCX0KIAkJaWYgKCF3cml0ZV9vYmplY3QpCi0JCQloYXNoX3NoYTFfZmlsZSh0YXJnZXQsIGxlbiwgYmxvYl90eXBlLCBzaGExKTsKLQkJZWxzZSBpZiAod3JpdGVfc2hhMV9maWxlKHRhcmdldCwgbGVuLCBibG9iX3R5cGUsIHNoYTEpKQorCQkJaGFzaF9zaGExX2ZpbGUoc2IuYnVmLCBzYi5sZW4sIGJsb2JfdHlwZSwgc2hhMSk7CisJCWVsc2UgaWYgKHdyaXRlX3NoYTFfZmlsZShzYi5idWYsIHNiLmxlbiwgYmxvYl90eXBlLCBzaGExKSkKIAkJCXJldHVybiBlcnJvcigiJXM6IGZhaWxlZCB0byBpbnNlcnQgaW50byBkYXRhYmFzZSIsCiAJCQkJICAgICBwYXRoKTsKLQkJZnJlZSh0YXJnZXQpOworCQlzdHJidWZfcmVsZWFzZSgmc2IpOwogCQlicmVhazsKIAljYXNlIFNfSUZESVI6CiAJCXJldHVybiByZXNvbHZlX2dpdGxpbmtfcmVmKHBhdGgsICJIRUFEIiwgc2hhMSk7CmRpZmYgLS1naXQgYS9zaGExX25hbWUuYyBiL3NoYTFfbmFtZS5jCmluZGV4IGM0ZmRhZGUuLjcyMmZjMzUgMTAwNjQ0Ci0tLSBhL3NoYTFfbmFtZS5jCisrKyBiL3NoYTFfbmFtZS5jCkBAIC0zNTEsNyArMzUxLDEwIEBACiAJCQllbHNlCiAJCQkJbnRoID0gLTE7CiAJCX0KLQkJaWYgKDAgPD0gbnRoKQorCQlpZiAoMTAwMDAwMDAwIDw9IG50aCkgeworCQkJYXRfdGltZSA9IG50aDsKKwkJCW50aCA9IC0xOworCQl9IGVsc2UgaWYgKDAgPD0gbnRoKQogCQkJYXRfdGltZSA9IDA7CiAJCWVsc2UgewogCQkJY2hhciAqdG1wID0geHN0cm5kdXAoc3RyICsgYXQgKyAyLCByZWZsb2dfbGVuKTsKZGlmZiAtLWdpdCBhL3N0cmJ1Zi5jIGIvc3RyYnVmLmMKaW5kZXggNzIwNzM3ZC4uYmRmNDk1NCAxMDA2NDQKLS0tIGEvc3RyYnVmLmMKKysrIGIvc3RyYnVmLmMKQEAgLTIzNyw2ICsyMzcsMjIgQEAKIAl9CiB9CiAKK3NpemVfdCBzdHJidWZfZXhwYW5kX2RpY3RfY2Ioc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IGNoYXIgKnBsYWNlaG9sZGVyLAorCQl2b2lkICpjb250ZXh0KQoreworCXN0cnVjdCBzdHJidWZfZXhwYW5kX2RpY3RfZW50cnkgKmUgPSBjb250ZXh0OworCXNpemVfdCBsZW47CisKKwlmb3IgKDsgZS0+cGxhY2Vob2xkZXIgJiYgKGxlbiA9IHN0cmxlbihlLT5wbGFjZWhvbGRlcikpOyBlKyspIHsKKwkJaWYgKCFzdHJuY21wKHBsYWNlaG9sZGVyLCBlLT5wbGFjZWhvbGRlciwgbGVuKSkgeworCQkJaWYgKGUtPnZhbHVlKQorCQkJCXN0cmJ1Zl9hZGRzdHIoc2IsIGUtPnZhbHVlKTsKKwkJCXJldHVybiBsZW47CisJCX0KKwl9CisJcmV0dXJuIDA7Cit9CisKIHNpemVfdCBzdHJidWZfZnJlYWQoc3RydWN0IHN0cmJ1ZiAqc2IsIHNpemVfdCBzaXplLCBGSUxFICpmKQogewogCXNpemVfdCByZXM7CkBAIC0yNzIsNiArMjg4LDMzIEBACiAJcmV0dXJuIHNiLT5sZW4gLSBvbGRsZW47CiB9CiAKKyNkZWZpbmUgU1RSQlVGX01BWExJTksgKDIqUEFUSF9NQVgpCisKK2ludCBzdHJidWZfcmVhZGxpbmsoc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IGNoYXIgKnBhdGgsIHNpemVfdCBoaW50KQoreworCWlmIChoaW50IDwgMzIpCisJCWhpbnQgPSAzMjsKKworCXdoaWxlIChoaW50IDwgU1RSQlVGX01BWExJTkspIHsKKwkJaW50IGxlbjsKKworCQlzdHJidWZfZ3JvdyhzYiwgaGludCk7CisJCWxlbiA9IHJlYWRsaW5rKHBhdGgsIHNiLT5idWYsIGhpbnQpOworCQlpZiAobGVuIDwgMCkgeworCQkJaWYgKGVycm5vICE9IEVSQU5HRSkKKwkJCQlicmVhazsKKwkJfSBlbHNlIGlmIChsZW4gPCBoaW50KSB7CisJCQlzdHJidWZfc2V0bGVuKHNiLCBsZW4pOworCQkJcmV0dXJuIDA7CisJCX0KKworCQkvKiAuLiB0aGUgYnVmZmVyIHdhcyB0b28gc21hbGwgLSB0cnkgYWdhaW4gKi8KKwkJaGludCAqPSAyOworCX0KKwlzdHJidWZfcmVsZWFzZShzYik7CisJcmV0dXJuIC0xOworfQorCiBpbnQgc3RyYnVmX2dldGxpbmUoc3RydWN0IHN0cmJ1ZiAqc2IsIEZJTEUgKmZwLCBpbnQgdGVybSkKIHsKIAlpbnQgY2g7CmRpZmYgLS1naXQgYS9zdHJidWYuaCBiL3N0cmJ1Zi5oCmluZGV4IGViYTdiYTQuLjg5YmQzNmUgMTAwNjQ0Ci0tLSBhL3N0cmJ1Zi5oCisrKyBiL3N0cmJ1Zi5oCkBAIC0xMTEsNiArMTExLDExIEBACiAKIHR5cGVkZWYgc2l6ZV90ICgqZXhwYW5kX2ZuX3QpIChzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgY2hhciAqcGxhY2Vob2xkZXIsIHZvaWQgKmNvbnRleHQpOwogZXh0ZXJuIHZvaWQgc3RyYnVmX2V4cGFuZChzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgY2hhciAqZm9ybWF0LCBleHBhbmRfZm5fdCBmbiwgdm9pZCAqY29udGV4dCk7CitzdHJ1Y3Qgc3RyYnVmX2V4cGFuZF9kaWN0X2VudHJ5IHsKKwljb25zdCBjaGFyICpwbGFjZWhvbGRlcjsKKwljb25zdCBjaGFyICp2YWx1ZTsKK307CitleHRlcm4gc2l6ZV90IHN0cmJ1Zl9leHBhbmRfZGljdF9jYihzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgY2hhciAqcGxhY2Vob2xkZXIsIHZvaWQgKmNvbnRleHQpOwogCiBfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLDIsMykpKQogZXh0ZXJuIHZvaWQgc3RyYnVmX2FkZGYoc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKQEAgLTExOSw2ICsxMjQsNyBAQAogLyogWFhYOiBpZiByZWFkIGZhaWxzLCBhbnkgcGFydGlhbCByZWFkIGlzIHVuZG9uZSAqLwogZXh0ZXJuIHNzaXplX3Qgc3RyYnVmX3JlYWQoc3RydWN0IHN0cmJ1ZiAqLCBpbnQgZmQsIHNpemVfdCBoaW50KTsKIGV4dGVybiBpbnQgc3RyYnVmX3JlYWRfZmlsZShzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgY2hhciAqcGF0aCwgc2l6ZV90IGhpbnQpOworZXh0ZXJuIGludCBzdHJidWZfcmVhZGxpbmsoc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IGNoYXIgKnBhdGgsIHNpemVfdCBoaW50KTsKIAogZXh0ZXJuIGludCBzdHJidWZfZ2V0bGluZShzdHJ1Y3Qgc3RyYnVmICosIEZJTEUgKiwgaW50KTsKIApkaWZmIC0tZ2l0IGEvdC8uZ2l0aWdub3JlIGIvdC8uZ2l0aWdub3JlCmluZGV4IGIyN2UyODAuLjdkY2JiMjMgMTAwNjQ0Ci0tLSBhL3QvLmdpdGlnbm9yZQorKysgYi90Ly5naXRpZ25vcmUKQEAgLTEsMiArMSwyIEBACi0vdHJhc2ggZGlyZWN0b3J5CisvdHJhc2ggZGlyZWN0b3J5KgogL3Rlc3QtcmVzdWx0cwpkaWZmIC0tZ2l0IGEvdC9NYWtlZmlsZSBiL3QvTWFrZWZpbGUKaW5kZXggMGQ2NWNlZC4uZWQ0OWMyMCAxMDA2NDQKLS0tIGEvdC9NYWtlZmlsZQorKysgYi90L01ha2VmaWxlCkBAIC0xNCw3ICsxNCw4IEBACiBUID0gJCh3aWxkY2FyZCB0WzAtOV1bMC05XVswLTldWzAtOV0tKi5zaCkKIFRTVk4gPSAkKHdpbGRjYXJkIHQ5MVswLTldWzAtOV0tKi5zaCkKIAotYWxsOiBwcmUtY2xlYW4gJChUKSBhZ2dyZWdhdGUtcmVzdWx0cyBjbGVhbgorYWxsOiBwcmUtY2xlYW4KKwkkKE1BS0UpIGFnZ3JlZ2F0ZS1yZXN1bHRzLWFuZC1jbGVhbnVwCiAKICQoVCk6CiAJQGVjaG8gIioqKiAkQCAqKioiOyBHSVRfQ09ORklHPS5naXQvY29uZmlnICckKFNIRUxMX1BBVEhfU1EpJyAkQCAkKEdJVF9URVNUX09QVFMpCkBAIC0yNSw2ICsyNiwxMCBAQAogY2xlYW46CiAJJChSTSkgLXIgJ3RyYXNoIGRpcmVjdG9yeScgdGVzdC1yZXN1bHRzCiAKK2FnZ3JlZ2F0ZS1yZXN1bHRzLWFuZC1jbGVhbnVwOiAkKFQpCisJJChNQUtFKSBhZ2dyZWdhdGUtcmVzdWx0cworCSQoTUFLRSkgY2xlYW4KKwogYWdncmVnYXRlLXJlc3VsdHM6CiAJJyQoU0hFTExfUEFUSF9TUSknIC4vYWdncmVnYXRlLXJlc3VsdHMuc2ggdGVzdC1yZXN1bHRzL3QqLSoKIApAQCAtMzQsNCArMzksMyBAQAogCSQoTUFLRSkgJChUU1ZOKSBHSVRfU1ZOX05PX09QVElNSVpFX0NPTU1JVFM9MCBMQ19BTEw9ZW5fVVMuVVRGLTgKIAogLlBIT05ZOiBwcmUtY2xlYW4gJChUKSBhZ2dyZWdhdGUtcmVzdWx0cyBjbGVhbgotLk5PVFBBUkFMTEVMOgpkaWZmIC0tZ2l0IGEvdC9saWItZ2l0LXN2bi5zaCBiL3QvbGliLWdpdC1zdm4uc2gKaW5kZXggNWI1ZjI4OC4uNjdjNDMxZCAxMDA2NDQKLS0tIGEvdC9saWItZ2l0LXN2bi5zaAorKysgYi90L2xpYi1naXQtc3ZuLnNoCkBAIC0xLDggKzEsMTEgQEAKIC4gLi90ZXN0LWxpYi5zaAogCityZW1vdGVzX2dpdF9zdm49cmVtb3Rlcy9naXQiIi1zdm4KK2dpdF9zdm5faWQ9Z2l0IiItc3ZuLWlkCisKIGlmIHRlc3QgLW4gIiROT19TVk5fVEVTVFMiCiB0aGVuCi0JdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2tpcHBpbmcgZ2l0LXN2biB0ZXN0cywgTk9fU1ZOX1RFU1RTIGRlZmluZWQnIDoKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICdza2lwcGluZyBnaXQgc3ZuIHRlc3RzLCBOT19TVk5fVEVTVFMgZGVmaW5lZCcgOgogCXRlc3RfZG9uZQogCWV4aXQKIGZpCkBAIC0xNCw3ICsxNyw3IEBACiBzdm4gPi9kZXYvbnVsbCAyPiYxCiBpZiB0ZXN0ICQ/IC1uZSAxCiB0aGVuCi0gICAgdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2tpcHBpbmcgZ2l0LXN2biB0ZXN0cywgc3ZuIG5vdCBmb3VuZCcgOgorICAgIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NraXBwaW5nIGdpdCBzdm4gdGVzdHMsIHN2biBub3QgZm91bmQnIDoKICAgICB0ZXN0X2RvbmUKICAgICBleGl0CiBmaQpAQCAtODgsNyArOTEsNyBAQAogCW1rZGlyICIkR0lUX0RJUiIvbG9ncwogCiAJY2F0ID4gIiRHSVRfRElSL2h0dHBkLmNvbmYiIDw8RU9GCi1TZXJ2ZXJOYW1lICJnaXQtc3ZuIHRlc3QiCitTZXJ2ZXJOYW1lICJnaXQgc3ZuIHRlc3QiCiBTZXJ2ZXJSb290ICIkR0lUX0RJUiIKIERvY3VtZW50Um9vdCAiJEdJVF9ESVIiCiBQaWRGaWxlICIkR0lUX0RJUi9odHRwZC5waWQiCmRpZmYgLS1naXQgYS90L2xpYi1odHRwZC5zaCBiL3QvbGliLWh0dHBkLnNoCmluZGV4IGRjNDczZGYuLjZhYzMxMmIgMTAwNjQ0Ci0tLSBhL3QvbGliLWh0dHBkLnNoCisrKyBiL3QvbGliLWh0dHBkLnNoCkBAIC0xNCw3ICsxNCw3IEBACiBMSUJfSFRUUERfUEFUSD0ke0xJQl9IVFRQRF9QQVRILScvdXNyL3NiaW4vYXBhY2hlMid9CiBMSUJfSFRUUERfUE9SVD0ke0xJQl9IVFRQRF9QT1JULSc4MTExJ30KIAotVEVTVF9QQVRIPSIkUFdEIi8uLi9saWItaHR0cGQKK1RFU1RfUEFUSD0iJFRFU1RfRElSRUNUT1JZIi9saWItaHR0cGQKIEhUVFBEX1JPT1RfUEFUSD0iJFBXRCIvaHR0cGQKIEhUVFBEX0RPQ1VNRU5UX1JPT1RfUEFUSD0kSFRUUERfUk9PVF9QQVRIL3d3dwogCmRpZmYgLS1naXQgYS90L2xpYi1odHRwZC9hcGFjaGUuY29uZiBiL3QvbGliLWh0dHBkL2FwYWNoZS5jb25mCmluZGV4IDQ3MTdjMmQuLmZkYjE5YTUgMTAwNjQ0Ci0tLSBhL3QvbGliLWh0dHBkL2FwYWNoZS5jb25mCisrKyBiL3QvbGliLWh0dHBkL2FwYWNoZS5jb25mCkBAIC0xLDYgKzEsOCBAQAogU2VydmVyTmFtZSBkdW1teQogUGlkRmlsZSBodHRwZC5waWQKIERvY3VtZW50Um9vdCB3d3cKK0xvZ0Zvcm1hdCAiJWggJWwgJXUgJXQgXCIlclwiICU+cyAlYiIgY29tbW9uCitDdXN0b21Mb2cgYWNjZXNzLmxvZyBjb21tb24KIEVycm9yTG9nIGVycm9yLmxvZwogCiA8SWZEZWZpbmUgU1NMPgpkaWZmIC0tZ2l0IGEvdC90MDAwMi1naXRmaWxlLnNoIGIvdC90MDAwMi1naXRmaWxlLnNoCmluZGV4IDRkYjRhYzQuLmNiMTQ0MjUgMTAwNzU1Ci0tLSBhL3QvdDAwMDItZ2l0ZmlsZS5zaAorKysgYi90L3QwMDAyLWdpdGZpbGUuc2gKQEAgLTMyLDcgKzMyLDcgQEAKIAkJZWNobyAiZ2l0IHJldi1wYXJzZSBhY2NlcHRlZCBhbiBpbnZhbGlkIC5naXQgZmlsZSIKIAkJZmFsc2UKIAlmaSAmJgotCWlmICEgZ3JlcCAtcWUgIkludmFsaWQgZ2l0ZmlsZSBmb3JtYXQiIC5lcnIKKwlpZiAhIGdyZXAgIkludmFsaWQgZ2l0ZmlsZSBmb3JtYXQiIC5lcnIKIAl0aGVuCiAJCWVjaG8gImdpdCByZXYtcGFyc2UgcmV0dXJuZWQgd3JvbmcgZXJyb3IiCiAJCWZhbHNlCkBAIC00Niw3ICs0Niw3IEBACiAJCWVjaG8gImdpdCByZXYtcGFyc2UgYWNjZXB0ZWQgYW4gaW52YWxpZCAuZ2l0IGZpbGUgcGF0aCIKIAkJZmFsc2UKIAlmaSAmJgotCWlmICEgZ3JlcCAtcWUgIk5vdCBhIGdpdCByZXBvc2l0b3J5IiAuZXJyCisJaWYgISBncmVwICJOb3QgYSBnaXQgcmVwb3NpdG9yeSIgLmVycgogCXRoZW4KIAkJZWNobyAiZ2l0IHJldi1wYXJzZSByZXR1cm5lZCB3cm9uZyBlcnJvciIKIAkJZmFsc2UKZGlmZiAtLWdpdCBhL3QvdDAwMDMtYXR0cmlidXRlcy5zaCBiL3QvdDAwMDMtYXR0cmlidXRlcy5zaAppbmRleCAzZDhlMDZhLi4xYzc3MTkyIDEwMDc1NQotLS0gYS90L3QwMDAzLWF0dHJpYnV0ZXMuc2gKKysrIGIvdC90MDAwMy1hdHRyaWJ1dGVzLnNoCkBAIC00Nyw2ICs0NywyMyBAQAogCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2F0dHJpYnV0ZSB0ZXN0OiByZWFkIHBhdGhzIGZyb20gc3RkaW4nICcKKworCWNhdCA8PEVPRiA+IGV4cGVjdAorZjogdGVzdDogZgorYS9mOiB0ZXN0OiBmCithL2MvZjogdGVzdDogZgorYS9nOiB0ZXN0OiBhL2cKK2EvYi9nOiB0ZXN0OiBhL2IvZworYi9nOiB0ZXN0OiB1bnNwZWNpZmllZAorYS9iL2g6IHRlc3Q6IGEvYi9oCithL2IvZC9nOiB0ZXN0OiBhL2IvZC8qCitFT0YKKworCXNlZCAtZSAicy86LiovLyIgPCBleHBlY3QgfCBnaXQgY2hlY2stYXR0ciAtLXN0ZGluIHRlc3QgPiBhY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jvb3Qgc3ViZGlyIGF0dHJpYnV0ZSB0ZXN0JyAnCiAKIAlhdHRyX2NoZWNrIGEvaSBhL2kgJiYKZGlmZiAtLWdpdCBhL3QvdDAwMjItY3JsZi1yZW5hbWUuc2ggYi90L3QwMDIyLWNybGYtcmVuYW1lLnNoCmluZGV4IDdkMWNlMmQuLmYxZTFkNDggMTAwNzU1Ci0tLSBhL3QvdDAwMjItY3JsZi1yZW5hbWUuc2gKKysrIGIvdC90MDAyMi1jcmxmLXJlbmFtZS5zaApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90L3QwMDU1LWJleW9uZC1zeW1saW5rcy5zaCBiL3QvdDAwNTUtYmV5b25kLXN5bWxpbmtzLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmIyOWMzN2EKLS0tIC9kZXYvbnVsbAorKysgYi90L3QwMDU1LWJleW9uZC1zeW1saW5rcy5zaApAQCAtMCwwICsxLDI1IEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0ndXBkYXRlLWluZGV4IGFuZCBhZGQgcmVmdXNlIHRvIGFkZCBiZXlvbmQgc3ltbGlua3MnCisKKy4gLi90ZXN0LWxpYi5zaAorCit0ZXN0X2V4cGVjdF9zdWNjZXNzIHNldHVwICcKKwk+YSAmJgorCW1rZGlyIGIgJiYKKwlsbiAtcyBiIGMgJiYKKwk+Yy9kICYmCisJZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCBhIGIvZAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd1cGRhdGUtaW5kZXggLS1hZGQgYmV5b25kIHN5bWxpbmtzJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCBjL2QgJiYKKwkhICggZ2l0IGxzLWZpbGVzIHwgZ3JlcCBjL2QgKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgYmV5b25kIHN5bWxpbmtzJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGFkZCBjL2QgJiYKKwkhICggZ2l0IGxzLWZpbGVzIHwgZ3JlcCBjL2QgKQorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDEwMDAtcmVhZC10cmVlLW0tM3dheS5zaCBiL3QvdDEwMDAtcmVhZC10cmVlLW0tM3dheS5zaAppbmRleCA4MDdmYjgzLi4yMmJhN2E1IDEwMDc1NQotLS0gYS90L3QxMDAwLXJlYWQtdHJlZS1tLTN3YXkuc2gKKysrIGIvdC90MTAwMC1yZWFkLXRyZWUtbS0zd2F5LnNoCkBAIC03Miw3ICs3Miw3IEBACiAKICcKIC4gLi90ZXN0LWxpYi5zaAotLiAuLi9saWItcmVhZC10cmVlLW0tM3dheS5zaAorLiAiJFRFU1RfRElSRUNUT1JZIi9saWItcmVhZC10cmVlLW0tM3dheS5zaAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRyaXZpYWwgIm1ham9yaXR5IHdoZW4gMyBzdGFnZXMgZXhpc3QiIG1lcmdlIHBsdXMgIzJBTFQsICMzQUxUCmRpZmYgLS1naXQgYS90L3QxMDAxLXJlYWQtdHJlZS1tLTJ3YXkuc2ggYi90L3QxMDAxLXJlYWQtdHJlZS1tLTJ3YXkuc2gKaW5kZXggNGI0NGUxMy4uMjcxYmM0ZSAxMDA3NTUKLS0tIGEvdC90MTAwMS1yZWFkLXRyZWUtbS0yd2F5LnNoCisrKyBiL3QvdDEwMDEtcmVhZC10cmVlLW0tMndheS5zaApAQCAtMzQxLDQgKzM0MSw1NSBAQAogICAgICBjaGVja19jYWNoZV9hdCBERi9ERiBkaXJ0eSAmJgogICAgICA6JwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKKyAgICAnYS9iICh1bnRyYWNrZWQpIHZzIGEgY2FzZSBzZXR1cC4nIFwKKyAgICAncm0gLWYgLmdpdC9pbmRleCAmJgorICAgICA6ID5hICYmCisgICAgIGdpdCB1cGRhdGUtaW5kZXggLS1hZGQgYSAmJgorICAgICB0cmVlTT1gZ2l0IHdyaXRlLXRyZWVgICYmCisgICAgIGVjaG8gdHJlZU0gJHRyZWVNICYmCisgICAgIGdpdCBscy10cmVlICR0cmVlTSAmJgorICAgICBnaXQgbHMtZmlsZXMgLS1zdGFnZSA+dHJlZU0ub3V0ICYmCisKKyAgICAgcm0gLWYgYSAmJgorICAgICBnaXQgdXBkYXRlLWluZGV4IC0tcmVtb3ZlIGEgJiYKKyAgICAgbWtkaXIgYSAmJgorICAgICA6ID5hL2IgJiYKKyAgICAgdHJlZUg9YGdpdCB3cml0ZS10cmVlYCAmJgorICAgICBlY2hvIHRyZWVIICR0cmVlSCAmJgorICAgICBnaXQgbHMtdHJlZSAkdHJlZUgnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAorICAgICdhL2IgKHVudHJhY2tlZCkgdnMgYSwgcGx1cyBjL2QgY2FzZSB0ZXN0LicgXAorICAgICchIGdpdCByZWFkLXRyZWUgLXUgLW0gIiR0cmVlSCIgIiR0cmVlTSIgJiYKKyAgICAgZ2l0IGxzLWZpbGVzIC0tc3RhZ2UgJiYKKyAgICAgdGVzdCAtZiBhL2InCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAorICAgICdhL2IgdnMgYSwgcGx1cyBjL2QgY2FzZSBzZXR1cC4nIFwKKyAgICAncm0gLWYgLmdpdC9pbmRleCAmJgorICAgICBybSAtZnIgYSAmJgorICAgICA6ID5hICYmCisgICAgIG1rZGlyIGMgJiYKKyAgICAgOiA+Yy9kICYmCisgICAgIGdpdCB1cGRhdGUtaW5kZXggLS1hZGQgYSBjL2QgJiYKKyAgICAgdHJlZU09YGdpdCB3cml0ZS10cmVlYCAmJgorICAgICBlY2hvIHRyZWVNICR0cmVlTSAmJgorICAgICBnaXQgbHMtdHJlZSAkdHJlZU0gJiYKKyAgICAgZ2l0IGxzLWZpbGVzIC0tc3RhZ2UgPnRyZWVNLm91dCAmJgorCisgICAgIHJtIC1mIGEgJiYKKyAgICAgbWtkaXIgYQorICAgICA6ID5hL2IgJiYKKyAgICAgZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCAtLXJlbW92ZSBhIGEvYiAmJgorICAgICB0cmVlSD1gZ2l0IHdyaXRlLXRyZWVgICYmCisgICAgIGVjaG8gdHJlZUggJHRyZWVIICYmCisgICAgIGdpdCBscy10cmVlICR0cmVlSCcKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBcCisgICAgJ2EvYiB2cyBhLCBwbHVzIGMvZCBjYXNlIHRlc3QuJyBcCisgICAgJ2dpdCByZWFkLXRyZWUgLXUgLW0gIiR0cmVlSCIgIiR0cmVlTSIgJiYKKyAgICAgZ2l0IGxzLWZpbGVzIC0tc3RhZ2UgfCB0ZWUgPnRyZWVNY2hlY2sub3V0ICYmCisgICAgIHRlc3RfY21wIHRyZWVNLm91dCB0cmVlTWNoZWNrLm91dCcKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QxMDA3LWhhc2gtb2JqZWN0LnNoIGIvdC90MTAwNy1oYXNoLW9iamVjdC5zaAppbmRleCAwNzZiMDgyLi5mZDk4ZTQ0IDEwMDc1NQotLS0gYS90L3QxMDA3LWhhc2gtb2JqZWN0LnNoCisrKyBiL3QvdDEwMDctaGFzaC1vYmplY3Quc2gKQEAgLTQ5LDE2ICs0OSwyOCBAQAogIyBBcmd1bWVudCBjaGVja2luZwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICJtdWx0aXBsZSAnLS1zdGRpbidzIGFyZSByZWplY3RlZCIgJwotCXRlc3RfbXVzdF9mYWlsIGdpdCBoYXNoLW9iamVjdCAtLXN0ZGluIC0tc3RkaW4gPCBleGFtcGxlCisJZWNobyBleGFtcGxlIHwgdGVzdF9tdXN0X2ZhaWwgZ2l0IGhhc2gtb2JqZWN0IC0tc3RkaW4gLS1zdGRpbgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICJDYW4ndCB1c2UgLS1zdGRpbiBhbmQgLS1zdGRpbi1wYXRocyB0b2dldGhlciIgJwotCXRlc3RfbXVzdF9mYWlsIGdpdCBoYXNoLW9iamVjdCAtLXN0ZGluIC0tc3RkaW4tcGF0aHMgJiYKLQl0ZXN0X211c3RfZmFpbCBnaXQgaGFzaC1vYmplY3QgLS1zdGRpbi1wYXRocyAtLXN0ZGluCisJZWNobyBleGFtcGxlIHwgdGVzdF9tdXN0X2ZhaWwgZ2l0IGhhc2gtb2JqZWN0IC0tc3RkaW4gLS1zdGRpbi1wYXRocyAmJgorCWVjaG8gZXhhbXBsZSB8IHRlc3RfbXVzdF9mYWlsIGdpdCBoYXNoLW9iamVjdCAtLXN0ZGluLXBhdGhzIC0tc3RkaW4KICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAiQ2FuJ3QgcGFzcyBmaWxlbmFtZXMgYXMgYXJndW1lbnRzIHdpdGggLS1zdGRpbi1wYXRocyIgJwotCXRlc3RfbXVzdF9mYWlsIGdpdCBoYXNoLW9iamVjdCAtLXN0ZGluLXBhdGhzIGhlbGxvIDwgZXhhbXBsZQorCWVjaG8gZXhhbXBsZSB8IHRlc3RfbXVzdF9mYWlsIGdpdCBoYXNoLW9iamVjdCAtLXN0ZGluLXBhdGhzIGhlbGxvCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgIkNhbid0IHVzZSAtLXBhdGggd2l0aCAtLXN0ZGluLXBhdGhzIiAnCisJZWNobyBleGFtcGxlIHwgdGVzdF9tdXN0X2ZhaWwgZ2l0IGhhc2gtb2JqZWN0IC0tc3RkaW4tcGF0aHMgLS1wYXRoPWZvbworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICJDYW4ndCB1c2UgLS1zdGRpbi1wYXRocyB3aXRoIC0tbm8tZmlsdGVycyIgJworCWVjaG8gZXhhbXBsZSB8IHRlc3RfbXVzdF9mYWlsIGdpdCBoYXNoLW9iamVjdCAtLXN0ZGluLXBhdGhzIC0tbm8tZmlsdGVycworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICJDYW4ndCB1c2UgLS1wYXRoIHdpdGggLS1uby1maWx0ZXJzIiAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGhhc2gtb2JqZWN0IC0tbm8tZmlsdGVycyAtLXBhdGg9Zm9vCiAnCiAKICMgQmVoYXZpb3IKQEAgLTkzLDYgKzEwNSw0MiBAQAogCXRlc3QgIiRvYm5hbWUxIiA9ICIkb2JuYW1lMW5ldyIKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2sgdGhhdCBhcHByb3ByaWF0ZSBmaWx0ZXIgaXMgaW52b2tlIHdoZW4gLS1wYXRoIGlzIHVzZWQnICcKKwllY2hvIGZvb1EgfCB0ciBRICJcXDAxNSIgPmZpbGUwICYmCisJY3AgZmlsZTAgZmlsZTEgJiYKKwllY2hvICJmaWxlMCAtY3JsZiIgPi5naXRhdHRyaWJ1dGVzICYmCisJZWNobyAiZmlsZTEgY3JsZiIgPj4uZ2l0YXR0cmlidXRlcyAmJgorCWdpdCBjb25maWcgY29yZS5hdXRvY3JsZiB0cnVlICYmCisJZmlsZTBfc2hhPSQoZ2l0IGhhc2gtb2JqZWN0IGZpbGUwKSAmJgorCWZpbGUxX3NoYT0kKGdpdCBoYXNoLW9iamVjdCBmaWxlMSkgJiYKKwl0ZXN0ICIkZmlsZTBfc2hhIiAhPSAiJGZpbGUxX3NoYSIgJiYKKwlwYXRoMV9zaGE9JChnaXQgaGFzaC1vYmplY3QgLS1wYXRoPWZpbGUxIGZpbGUwKSAmJgorCXBhdGgwX3NoYT0kKGdpdCBoYXNoLW9iamVjdCAtLXBhdGg9ZmlsZTAgZmlsZTEpICYmCisJdGVzdCAiJGZpbGUwX3NoYSIgPSAiJHBhdGgwX3NoYSIgJiYKKwl0ZXN0ICIkZmlsZTFfc2hhIiA9ICIkcGF0aDFfc2hhIiAmJgorCXBhdGgxX3NoYT0kKGNhdCBmaWxlMCB8IGdpdCBoYXNoLW9iamVjdCAtLXBhdGg9ZmlsZTEgLS1zdGRpbikgJiYKKwlwYXRoMF9zaGE9JChjYXQgZmlsZTEgfCBnaXQgaGFzaC1vYmplY3QgLS1wYXRoPWZpbGUwIC0tc3RkaW4pICYmCisJdGVzdCAiJGZpbGUwX3NoYSIgPSAiJHBhdGgwX3NoYSIgJiYKKwl0ZXN0ICIkZmlsZTFfc2hhIiA9ICIkcGF0aDFfc2hhIiAmJgorCWdpdCBjb25maWcgLS11bnNldCBjb3JlLmF1dG9jcmxmCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrIHRoYXQgLS1uby1maWx0ZXJzIG9wdGlvbiB3b3JrcycgJworCWVjaG8gZm9vUSB8IHRyIFEgIlxcMDE1IiA+ZmlsZTAgJiYKKwljcCBmaWxlMCBmaWxlMSAmJgorCWVjaG8gImZpbGUwIC1jcmxmIiA+LmdpdGF0dHJpYnV0ZXMgJiYKKwllY2hvICJmaWxlMSBjcmxmIiA+Pi5naXRhdHRyaWJ1dGVzICYmCisJZ2l0IGNvbmZpZyBjb3JlLmF1dG9jcmxmIHRydWUgJiYKKwlmaWxlMF9zaGE9JChnaXQgaGFzaC1vYmplY3QgZmlsZTApICYmCisJZmlsZTFfc2hhPSQoZ2l0IGhhc2gtb2JqZWN0IGZpbGUxKSAmJgorCXRlc3QgIiRmaWxlMF9zaGEiICE9ICIkZmlsZTFfc2hhIiAmJgorCW5vZmlsdGVyc19maWxlMT0kKGdpdCBoYXNoLW9iamVjdCAtLW5vLWZpbHRlcnMgZmlsZTEpICYmCisJdGVzdCAiJGZpbGUwX3NoYSIgPSAiJG5vZmlsdGVyc19maWxlMSIgJiYKKwlub2ZpbHRlcnNfZmlsZTE9JChjYXQgZmlsZTEgfCBnaXQgaGFzaC1vYmplY3QgLS1zdGRpbikgJiYKKwl0ZXN0ICIkZmlsZTBfc2hhIiA9ICIkbm9maWx0ZXJzX2ZpbGUxIiAmJgorCWdpdCBjb25maWcgLS11bnNldCBjb3JlLmF1dG9jcmxmCisnCisKIHBvcF9yZXBvCiAKIGZvciBhcmdzIGluICItdyAtLXN0ZGluIiAiLS1zdGRpbiAtdyI7IGRvCmRpZmYgLS1naXQgYS90L3QxNTAxLXdvcmt0cmVlLnNoIGIvdC90MTUwMS13b3JrdHJlZS5zaAppbmRleCBjMDM5ZWUzLi4yN2RjNmM1IDEwMDc1NQotLS0gYS90L3QxNTAxLXdvcmt0cmVlLnNoCisrKyBiL3QvdDE1MDEtd29ya3RyZWUuc2gKQEAgLTkyLDYgKzkyLDEzIEBACiB0ZXN0X3Jldl9wYXJzZSAnaW4gcmVwby5naXQvc3ViL2RpcicgZmFsc2UgdHJ1ZSB0cnVlIHN1Yi9kaXIvCiBjZCAuLi8uLi8uLi8uLiB8fCBleGl0IDEKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnZGV0ZWN0aW5nIGdpdGRpciB3aGVuIGN3ZCBpcyBpbiBhIHN1YmRpciBvZiBnaXRkaXInICcKKwkoZXhwZWN0ZWQ9JChwd2QpL3JlcG8uZ2l0ICYmCisJIGNkIHJlcG8uZ2l0L3JlZnMgJiYKKwkgdW5zZXQgR0lUX0RJUiAmJgorCSB0ZXN0ICIkZXhwZWN0ZWQiID0gIiQoZ2l0IHJldi1wYXJzZSAtLWdpdC1kaXIpIikKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmVwbyBmaW5kcyBpdHMgd29yayB0cmVlJyAnCiAJKGNkIHJlcG8uZ2l0ICYmCiAJIDogPiB3b3JrL3N1Yi9kaXIvdW50cmFja2VkICYmCkBAIC0xNzEsNyArMTc4LDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGdyZXAnICcKIAkoY2QgcmVwby5naXQvd29yay9zdWIgJiYKLQlHSVRfRElSPS4uLy4uIEdJVF9XT1JLX1RSRUU9Li4gZ2l0IGdyZXAgLWwgY2hhbmdlZCB8IGdyZXAgLXEgZGlyL3RyYWNrZWQpCisJR0lUX0RJUj0uLi8uLiBHSVRfV09SS19UUkVFPS4uIGdpdCBncmVwIC1sIGNoYW5nZWQgfCBncmVwIGRpci90cmFja2VkKQogJwogCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDIwMDUtY2hlY2tvdXQtaW5kZXgtc3ltbGlua3Muc2ggYi90L3QyMDA1LWNoZWNrb3V0LWluZGV4LXN5bWxpbmtzLnNoCmluZGV4IGVkMTJjNGQuLjlmYTU2MTAgMTAwNzU1Ci0tLSBhL3QvdDIwMDUtY2hlY2tvdXQtaW5kZXgtc3ltbGlua3Muc2gKKysrIGIvdC90MjAwNS1jaGVja291dC1pbmRleC1zeW1saW5rcy5zaApAQCAtMTMsNyArMTMsNyBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAncHJlcGFyYXRpb24nICcKIGdpdCBjb25maWcgY29yZS5zeW1saW5rcyBmYWxzZSAmJgotbD0kKGVjaG8gLW4gZmlsZSB8IGdpdCBoYXNoLW9iamVjdCAtdCBibG9iIC13IC0tc3RkaW4pICYmCitsPSQocHJpbnRmIGZpbGUgfCBnaXQgaGFzaC1vYmplY3QgLXQgYmxvYiAtdyAtLXN0ZGluKSAmJgogZWNobyAiMTIwMDAwICRsCXN5bWxpbmsiIHwgZ2l0IHVwZGF0ZS1pbmRleCAtLWluZGV4LWluZm8nCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXApkaWZmIC0tZ2l0IGEvdC90MjAxMS1jaGVja291dC1pbnZhbGlkLWhlYWQuc2ggYi90L3QyMDExLWNoZWNrb3V0LWludmFsaWQtaGVhZC5zaAppbmRleCA3NjRiYjBhLi4xNWViZGMyIDEwMDc1NQotLS0gYS90L3QyMDExLWNoZWNrb3V0LWludmFsaWQtaGVhZC5zaAorKysgYi90L3QyMDExLWNoZWNrb3V0LWludmFsaWQtaGVhZC5zaApAQCAtMTAsNiArMTAsMTAgQEAKIAlnaXQgY29tbWl0IC1tIGluaXRpYWwKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2tvdXQgc2hvdWxkIG5vdCBzdGFydCBicmFuY2ggZnJvbSBhIHRyZWUnICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgY2hlY2tvdXQgLWIgbmV3YnJhbmNoIG1hc3Rlcl57dHJlZX0KKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2tvdXQgbWFzdGVyIGZyb20gaW52YWxpZCBIRUFEJyAnCiAJZWNobyAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwID4uZ2l0L0hFQUQgJiYKIAlnaXQgY2hlY2tvdXQgbWFzdGVyIC0tCmRpZmYgLS1naXQgYS90L3QyMTAyLXVwZGF0ZS1pbmRleC1zeW1saW5rcy5zaCBiL3QvdDIxMDItdXBkYXRlLWluZGV4LXN5bWxpbmtzLnNoCmluZGV4IGYxOTVhZWYuLjFlZDQ0ZWUgMTAwNzU1Ci0tLSBhL3QvdDIxMDItdXBkYXRlLWluZGV4LXN5bWxpbmtzLnNoCisrKyBiL3QvdDIxMDItdXBkYXRlLWluZGV4LXN5bWxpbmtzLnNoCkBAIC0xMywxMiArMTMsMTIgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogJ3ByZXBhcmF0aW9uJyAnCiBnaXQgY29uZmlnIGNvcmUuc3ltbGlua3MgZmFsc2UgJiYKLWw9JChlY2hvIC1uIGZpbGUgfCBnaXQgaGFzaC1vYmplY3QgLXQgYmxvYiAtdyAtLXN0ZGluKSAmJgorbD0kKHByaW50ZiBmaWxlIHwgZ2l0IGhhc2gtb2JqZWN0IC10IGJsb2IgLXcgLS1zdGRpbikgJiYKIGVjaG8gIjEyMDAwMCAkbAlzeW1saW5rIiB8IGdpdCB1cGRhdGUtaW5kZXggLS1pbmRleC1pbmZvJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICdtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsnICcKLWVjaG8gLW4gbmV3LWZpbGUgPiBzeW1saW5rICYmCitwcmludGYgbmV3LWZpbGUgPiBzeW1saW5rICYmCiBnaXQgdXBkYXRlLWluZGV4IHN5bWxpbmsnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXApkaWZmIC0tZ2l0IGEvdC90MjIwMC1hZGQtdXBkYXRlLnNoIGIvdC90MjIwMC1hZGQtdXBkYXRlLnNoCmluZGV4IGNkOTIzMWMuLmIyZGRmNWEgMTAwNzU1Ci0tLSBhL3QvdDIyMDAtYWRkLXVwZGF0ZS5zaAorKysgYi90L3QyMjAwLWFkZC11cGRhdGUuc2gKQEAgLTEyLDcgKzEyLDcgQEAKIG9ubHkgdGhlIHVwZGF0ZXMgdG8gZGlyL3N1Yi4KIAogQWxzbyB0ZXN0ZWQgYXJlICJnaXQgYWRkIC11IiB3aXRob3V0IGxpbWl0aW5nLCBhbmQgImdpdCBhZGQgLXUiCi13aXRob3V0IGNvbnRlbnRzIGNoYW5nZXMuJword2l0aG91dCBjb250ZW50cyBjaGFuZ2VzLCBhbmQgb3RoZXIgY29uZGl0aW9ucycKIAogLiAuL3Rlc3QtbGliLnNoCiAKQEAgLTEyOCw0ICsxMjgsNTIgQEAKIAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgLXUgcmVzb2x2ZXMgdW5tZXJnZWQgcGF0aHMnICcKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJb25lPSQoZWNobyAxIHwgZ2l0IGhhc2gtb2JqZWN0IC13IC0tc3RkaW4pICYmCisJdHdvPSQoZWNobyAyIHwgZ2l0IGhhc2gtb2JqZWN0IC13IC0tc3RkaW4pICYmCisJdGhyZWU9JChlY2hvIDMgfCBnaXQgaGFzaC1vYmplY3QgLXcgLS1zdGRpbikgJiYKKwl7CisJCWZvciBwYXRoIGluIHBhdGgxIHBhdGgyCisJCWRvCisJCQllY2hvICIxMDA2NDQgJG9uZSAxCSRwYXRoIgorCQkJZWNobyAiMTAwNjQ0ICR0d28gMgkkcGF0aCIKKwkJCWVjaG8gIjEwMDY0NCAkdGhyZWUgMwkkcGF0aCIKKwkJZG9uZQorCQllY2hvICIxMDA2NDQgJG9uZSAxCXBhdGgzIgorCQllY2hvICIxMDA2NDQgJG9uZSAxCXBhdGg0IgorCQllY2hvICIxMDA2NDQgJG9uZSAzCXBhdGg1IgorCQllY2hvICIxMDA2NDQgJG9uZSAzCXBhdGg2IgorCX0gfAorCWdpdCB1cGRhdGUtaW5kZXggLS1pbmRleC1pbmZvICYmCisJZWNobyAzID5wYXRoMSAmJgorCWVjaG8gMiA+cGF0aDMgJiYKKwllY2hvIDIgPnBhdGg1ICYmCisJZ2l0IGFkZCAtdSAmJgorCWdpdCBscy1maWxlcyAtcyAicGF0aD8iID5hY3R1YWwgJiYKKwl7CisJCWVjaG8gIjEwMDY0NCAkdGhyZWUgMAlwYXRoMSIKKwkJZWNobyAiMTAwNjQ0ICRvbmUgMQlwYXRoMyIKKwkJZWNobyAiMTAwNjQ0ICRvbmUgMQlwYXRoNCIKKwkJZWNobyAiMTAwNjQ0ICRvbmUgMwlwYXRoNSIKKwkJZWNobyAiMTAwNjQ0ICRvbmUgMwlwYXRoNiIKKwl9ID5leHBlY3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCisKKwkjIEJvbnVzIHRlc3RzLiAgRXhwbGljaXQgcmVzb2x2aW5nCisJZ2l0IGFkZCBwYXRoMyBwYXRoNSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBhZGQgcGF0aDQgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgYWRkIHBhdGg2ICYmCisJZ2l0IHJtIHBhdGg0ICYmCisJZ2l0IHJtIHBhdGg2ICYmCisKKwlnaXQgbHMtZmlsZXMgLXMgInBhdGg/IiA+YWN0dWFsICYmCisJeworCQllY2hvICIxMDA2NDQgJHRocmVlIDAJcGF0aDEiCisJCWVjaG8gIjEwMDY0NCAkdHdvIDAJcGF0aDMiCisJCWVjaG8gIjEwMDY0NCAkdHdvIDAJcGF0aDUiCisJfSA+ZXhwZWN0CisKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QyMjAzLWFkZC1pbnRlbnQuc2ggYi90L3QyMjAzLWFkZC1pbnRlbnQuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNThhMzI5OQotLS0gL2Rldi9udWxsCisrKyBiL3QvdDIyMDMtYWRkLWludGVudC5zaApAQCAtMCwwICsxLDY0IEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0nSW50ZW50IHRvIGFkZCcKKworLiAuL3Rlc3QtbGliLnNoCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ludGVudCB0byBhZGQnICcKKwllY2hvIGhlbGxvID5maWxlICYmCisJZWNobyBoZWxsbyA+ZWxpZiAmJgorCWdpdCBhZGQgLU4gZmlsZSAmJgorCWdpdCBhZGQgZWxpZgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVjayByZXN1bHQgb2YgImFkZCAtTiInICcKKwlnaXQgbHMtZmlsZXMgLXMgZmlsZSA+YWN0dWFsICYmCisJZW1wdHk9JChnaXQgaGFzaC1vYmplY3QgLS1zdGRpbiA8L2Rldi9udWxsKSAmJgorCWVjaG8gIjEwMDY0NCAkZW1wdHkgMAlmaWxlIiA+ZXhwZWN0ICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbnRlbnQgdG8gYWRkIGlzIGp1c3QgYW4gb3JkaW5hcnkgZW1wdHkgYmxvYicgJworCWdpdCBhZGQgLXUgJiYKKwlnaXQgbHMtZmlsZXMgLXMgZmlsZSA+YWN0dWFsICYmCisJZ2l0IGxzLWZpbGVzIC1zIGVsaWYgfCBzZWQgLWUgInMvZWxpZi9maWxlLyIgPmV4cGVjdCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnaW50ZW50IHRvIGFkZCBkb2VzIG5vdCBjbG9iYmVyIGV4aXN0aW5nIHBhdGhzJyAnCisJZ2l0IGFkZCAtTiBmaWxlIGVsaWYgJiYKKwllbXB0eT0kKGdpdCBoYXNoLW9iamVjdCAtLXN0ZGluIDwvZGV2L251bGwpICYmCisJZ2l0IGxzLWZpbGVzIC1zID5hY3R1YWwgJiYKKwkhIGdyZXAgIiRlbXB0eSIgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nhbm5vdCBjb21taXQgd2l0aCBpLXQtYSBlbnRyeScgJworCXRlc3RfdGljayAmJgorCWdpdCBjb21taXQgLWEgLW0gaW5pdGlhbCAmJgorCWdpdCByZXNldCAtLWhhcmQgJiYKKworCWVjaG8geHl6enkgPnJlenJvdiAmJgorCWVjaG8gZnJvdHogPm5pdGZvbCAmJgorCWdpdCBhZGQgcmV6cm92ICYmCisJZ2l0IGFkZCAtTiBuaXRmb2wgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgY29tbWl0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NhbiBjb21taXQgd2l0aCBhbiB1bnJlbGF0ZWQgaS10LWEgZW50cnkgaW4gaW5kZXgnICcKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZWNobyB4eXp6eSA+cmV6cm92ICYmCisJZWNobyBmcm90eiA+bml0Zm9sICYmCisJZ2l0IGFkZCByZXpyb3YgJiYKKwlnaXQgYWRkIC1OIG5pdGZvbCAmJgorCWdpdCBjb21taXQgLW0gcGFydGlhbCByZXpyb3YKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2FuICJjb21taXQgLWEiIHdpdGggYW4gaS10LWEgZW50cnknICcKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJOiA+bml0Zm9sICYmCisJZ2l0IGFkZCAtTiBuaXRmb2wgJiYKKwlnaXQgY29tbWl0IC1hIC1tIGFsbAorJworCit0ZXN0X2RvbmUKKwpkaWZmIC0tZ2l0IGEvdC90MjMwMC1jZC10by10b3BsZXZlbC5zaCBiL3QvdDIzMDAtY2QtdG8tdG9wbGV2ZWwuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZTQyY2JmZQotLS0gL2Rldi9udWxsCisrKyBiL3QvdDIzMDAtY2QtdG8tdG9wbGV2ZWwuc2gKQEAgLTAsMCArMSwzNyBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J2NkX3RvX3RvcGxldmVsJworCisuIC4vdGVzdC1saWIuc2gKKwordGVzdF9jZF90b190b3BsZXZlbCAoKSB7CisJdGVzdF9leHBlY3Rfc3VjY2VzcyAiJDIiICcKKwkJKAorCQkJY2QgJyInJDEnIicgJiYKKwkJCS4gZ2l0LXNoLXNldHVwICYmCisJCQljZF90b190b3BsZXZlbCAmJgorCQkJWyAiJCh1bnNldCBQV0Q7IC9iaW4vcHdkKSIgPSAiJFRPUExFVkVMIiBdCisJCSkKKwknCit9CisKK1RPUExFVkVMPSIkKHVuc2V0IFBXRDsgL2Jpbi9wd2QpL3JlcG8iCitta2RpciAtcCByZXBvL3N1Yi9kaXIKK212IC5naXQgcmVwby8KK1NVQkRJUkVDVE9SWV9PSz0xCisKK3Rlc3RfY2RfdG9fdG9wbGV2ZWwgcmVwbyAnYXQgcGh5c2ljYWwgcm9vdCcKKwordGVzdF9jZF90b190b3BsZXZlbCByZXBvL3N1Yi9kaXIgJ2F0IHBoeXNpY2FsIHN1YmRpcicKKworbG4gLXMgcmVwbyBzeW1yZXBvCit0ZXN0X2NkX3RvX3RvcGxldmVsIHN5bXJlcG8gJ2F0IHN5bWJvbGljIHJvb3QnCisKK2xuIC1zIHJlcG8vc3ViL2RpciBzdWJkaXItbGluawordGVzdF9jZF90b190b3BsZXZlbCBzdWJkaXItbGluayAnYXQgc3ltYm9saWMgc3ViZGlyJworCitjZCByZXBvCitsbiAtcyBzdWIvZGlyIGludGVybmFsLWxpbmsKK3Rlc3RfY2RfdG9fdG9wbGV2ZWwgaW50ZXJuYWwtbGluayAnYXQgaW50ZXJuYWwgc3ltYm9saWMgc3ViZGlyJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDMwMDEtbHMtZmlsZXMtb3RoZXJzLWV4Y2x1ZGUuc2ggYi90L3QzMDAxLWxzLWZpbGVzLW90aGVycy1leGNsdWRlLnNoCmluZGV4IDZhMTcxMTMuLmM2NWJjYTggMTAwNzU1Ci0tLSBhL3QvdDMwMDEtbHMtZmlsZXMtb3RoZXJzLWV4Y2x1ZGUuc2gKKysrIGIvdC90MzAwMS1scy1maWxlcy1vdGhlcnMtZXhjbHVkZS5zaApAQCAtMTQ3LDQgKzE0NywxMCBAQAogCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ25lZ2F0ZWQgZXhjbHVkZSBtYXRjaGVzIGNhbiBvdmVycmlkZSBwcmV2aW91cyBvbmVzJyAnCisKKwlnaXQgbHMtZmlsZXMgLS1vdGhlcnMgLS1leGNsdWRlPSJhLioiIC0tZXhjbHVkZT0iIWEuMSIgPm91dHB1dCAmJgorCWdyZXAgIl5hLjEiIG91dHB1dAorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDMyMDAtYnJhbmNoLnNoIGIvdC90MzIwMC1icmFuY2guc2gKaW5kZXggMjVlOTk3MS4uNjFhMjAxMCAxMDA3NTUKLS0tIGEvdC90MzIwMC1icmFuY2guc2gKKysrIGIvdC90MzIwMC1icmFuY2guc2gKQEAgLTE5NCw3ICsxOTQsOCBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IGRlbGV0aW5nIGJyYW5jaCB3aXRob3V0IGNvbmZpZycgXAogICAgICdnaXQgYnJhbmNoIG15NyBzICYmCi0gICAgIHRlc3QgIiQoZ2l0IGJyYW5jaCAtZCBteTcgMj4mMSkiID0gIkRlbGV0ZWQgYnJhbmNoIG15Ny4iJworICAgICBzaGExPSQoZ2l0IHJldi1wYXJzZSBteTcgfCBjdXQgLWMgMS03KSAmJgorICAgICB0ZXN0ICIkKGdpdCBicmFuY2ggLWQgbXk3IDI+JjEpIiA9ICJEZWxldGVkIGJyYW5jaCBteTcgKCRzaGExKS4iJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IC0tdHJhY2sgd2l0aG91dCAuZmV0Y2ggZW50cmllcycgXAogICAgICdnaXQgYnJhbmNoIC0tdHJhY2sgbXk4ICYmCmRpZmYgLS1naXQgYS90L3QzNDA0LXJlYmFzZS1pbnRlcmFjdGl2ZS5zaCBiL3QvdDM0MDQtcmViYXNlLWludGVyYWN0aXZlLnNoCmluZGV4IDJjYzhlN2EuLjRiZWNjNTUgMTAwNzU1Ci0tLSBhL3QvdDM0MDQtcmViYXNlLWludGVyYWN0aXZlLnNoCisrKyBiL3QvdDM0MDQtcmViYXNlLWludGVyYWN0aXZlLnNoCkBAIC00NjIsNCArNDYyLDMwIEBACiAKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIHJlYmFzZSBzZXR1cCcgJworCWdpdCBjaGVja291dCBBICYmCisJbWtkaXIgc3ViICYmCisJKAorCQljZCBzdWIgJiYgZ2l0IGluaXQgJiYgPmVsaWYgJiYKKwkJZ2l0IGFkZCBlbGlmICYmIGdpdCBjb21taXQgLW0gInN1Ym1vZHVsZSBpbml0aWFsIgorCSkgJiYKKwllY2hvIDEgPmZpbGUxICYmCisJZ2l0IGFkZCBmaWxlMSBzdWIKKwl0ZXN0X3RpY2sgJiYKKwlnaXQgY29tbWl0IC1tICJPbmUiICYmCisJZWNobyAyID5maWxlMSAmJgorCXRlc3RfdGljayAmJgorCWdpdCBjb21taXQgLWEgLW0gIlR3byIgJiYKKwkoCisJCWNkIHN1YiAmJiBlY2hvIDMgPmVsaWYgJiYKKwkJZ2l0IGNvbW1pdCAtYSAtbSAic3VibW9kdWxlIHNlY29uZCIKKwkpICYmCisJdGVzdF90aWNrICYmCisJZ2l0IGNvbW1pdCAtYSAtbSAiVGhyZWUgY2hhbmdlcyBzdWJtb2R1bGUiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Ym1vZHVsZSByZWJhc2UgLWknICcKKwlGQUtFX0xJTkVTPSIxIHNxdWFzaCAyIDMiIGdpdCByZWJhc2UgLWkgQQorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDM0MDktcmViYXNlLWhvb2suc2ggYi90L3QzNDA5LXJlYmFzZS1ob29rLnNoCmluZGV4IGJjOTNkZGEuLjFmMWI4NTAgMTAwNzU1Ci0tLSBhL3QvdDM0MDktcmViYXNlLWhvb2suc2gKKysrIGIvdC90MzQwOS1yZWJhc2UtaG9vay5zaApAQCAtMTIzLDQgKzEyMywyMCBAQAogCXRlc3QgMCA9ICQoZ2l0IHJldi1saXN0IEhFQUQuLi5zaWRlIHwgd2MgLWwpCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtLW5vLXZlcmlmeSBvdmVycmlkZXMgcHJlLXJlYmFzZSAoMSknICcKKwlnaXQgY2hlY2tvdXQgdGVzdCAmJgorCWdpdCByZXNldCAtLWhhcmQgc2lkZSAmJgorCWdpdCByZWJhc2UgLS1uby12ZXJpZnkgbWFzdGVyICYmCisJdGVzdCAieiQoZ2l0IHN5bWJvbGljLXJlZiBIRUFEKSIgPSB6cmVmcy9oZWFkcy90ZXN0ICYmCisJdGVzdCAieiQoY2F0IGdpdCkiID0gendvcmxkCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtLW5vLXZlcmlmeSBvdmVycmlkZXMgcHJlLXJlYmFzZSAoMiknICcKKwlnaXQgY2hlY2tvdXQgdGVzdCAmJgorCWdpdCByZXNldCAtLWhhcmQgc2lkZSAmJgorCUVESVRPUj10cnVlIGdpdCByZWJhc2UgLS1uby12ZXJpZnkgLWkgbWFzdGVyICYmCisJdGVzdCAieiQoZ2l0IHN5bWJvbGljLXJlZiBIRUFEKSIgPSB6cmVmcy9oZWFkcy90ZXN0ICYmCisJdGVzdCAieiQoY2F0IGdpdCkiID0gendvcmxkCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MzQwOS1yZWJhc2UtcHJlc2VydmUtbWVyZ2VzLnNoIGIvdC90MzQwOS1yZWJhc2UtcHJlc2VydmUtbWVyZ2VzLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmU2YzgzMjcKLS0tIC9kZXYvbnVsbAorKysgYi90L3QzNDA5LXJlYmFzZS1wcmVzZXJ2ZS1tZXJnZXMuc2gKQEAgLTAsMCArMSw5NSBAQAorIyEvYmluL3NoCisjCisjIENvcHlyaWdodChDKSAyMDA4IFN0ZXBoZW4gSGFiZXJtYW5uICYgQW5kcmVhcyBFcmljc3NvbgorIwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHJlYmFzZSAtcCBzaG91bGQgcHJlc2VydmUgbWVyZ2VzCisKK1J1biAiZ2l0IHJlYmFzZSAtcCIgYW5kIGNoZWNrIHRoYXQgbWVyZ2VzIGFyZSBwcm9wZXJseSBjYXJyaWVkIGFsb25nCisnCisuIC4vdGVzdC1saWIuc2gKKworR0lUX0FVVEhPUl9FTUFJTD1ib2d1c19lbWFpbF9hZGRyZXNzCitleHBvcnQgR0lUX0FVVEhPUl9FTUFJTAorCisjIENsb25lIDEgKHRyaXZpYWwgbWVyZ2UpOgorIworIyBBMS0tQTIgIDwtLSBvcmlnaW4vbWFzdGVyCisjICBcICAgXAorIyAgIEIxLS1NICA8LS0gdG9waWMKKyMgICAgXAorIyAgICAgQjIgIDwtLSBvcmlnaW4vdG9waWMKKyMKKyMgQ2xvbmUgMiAoY29uZmxpY3RpbmcgbWVyZ2UpOgorIworIyBBMS0tQTItLUIzICAgPC0tIG9yaWdpbi9tYXN0ZXIKKyMgIFwgICAgICAgXAorIyAgIEIxLS0tLS0tTSAgPC0tIHRvcGljCisjICAgIFwKKyMgICAgIEIyICAgICAgIDwtLSBvcmlnaW4vdG9waWMKKyMKKyMgSW4gYm90aCBjYXNlcywgJ3RvcGljJyBpcyByZWJhc2VkIG9udG8gJ29yaWdpbi90b3BpYycuCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIGZvciBtZXJnZS1wcmVzZXJ2aW5nIHJlYmFzZScgXAorCSdlY2hvIEZpcnN0ID4gQSAmJgorCWdpdCBhZGQgQSAmJgorCWdpdC1jb21taXQgLW0gIkFkZCBBMSIgJiYKKwlnaXQgY2hlY2tvdXQgLWIgdG9waWMgJiYKKwllY2hvIFNlY29uZCA+IEIgJiYKKwlnaXQgYWRkIEIgJiYKKwlnaXQtY29tbWl0IC1tICJBZGQgQjEiICYmCisJZ2l0IGNoZWNrb3V0IC1mIG1hc3RlciAmJgorCWVjaG8gVGhpcmQgPj4gQSAmJgorCWdpdC1jb21taXQgLWEgLW0gIk1vZGlmeSBBMiIgJiYKKworCWdpdCBjbG9uZSAuLy4gY2xvbmUxICYmCisJY2QgY2xvbmUxICYmCisJZ2l0IGNoZWNrb3V0IC1iIHRvcGljIG9yaWdpbi90b3BpYyAmJgorCWdpdCBtZXJnZSBvcmlnaW4vbWFzdGVyICYmCisJY2QgLi4gJiYKKworCWVjaG8gRmlmdGggPiBCICYmCisJZ2l0IGFkZCBCICYmCisJZ2l0IGNvbW1pdCAtbSAiQWRkIGRpZmZlcmVudCBCIiAmJgorCisJZ2l0IGNsb25lIC4vLiBjbG9uZTIgJiYKKwljZCBjbG9uZTIgJiYKKwlnaXQgY2hlY2tvdXQgLWIgdG9waWMgb3JpZ2luL3RvcGljICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIG9yaWdpbi9tYXN0ZXIgJiYKKwllY2hvIFJlc29sdmVkID4gQiAmJgorCWdpdCBhZGQgQiAmJgorCWdpdCBjb21taXQgLW0gIk1lcmdlIG9yaWdpbi9tYXN0ZXIgaW50byB0b3BpYyIgJiYKKwljZCAuLiAmJgorCisJZ2l0IGNoZWNrb3V0IHRvcGljICYmCisJZWNobyBGb3VydGggPj4gQiAmJgorCWdpdCBjb21taXQgLWEgLW0gIk1vZGlmeSBCMiIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIC1wIGZha2VzIGludGVyYWN0aXZlIHJlYmFzZScgJworCSgKKwljZCBjbG9uZTEgJiYKKwlnaXQgZmV0Y2ggJiYKKwlnaXQgcmViYXNlIC1wIG9yaWdpbi90b3BpYyAmJgorCXRlc3QgMSA9ICQoZ2l0IHJldi1saXN0IC0tYWxsIC0tcHJldHR5PW9uZWxpbmUgfCBncmVwICJNb2RpZnkgQSIgfCB3YyAtbCkgJiYKKwl0ZXN0IDEgPSAkKGdpdCByZXYtbGlzdCAtLWFsbCAtLXByZXR0eT1vbmVsaW5lIHwgZ3JlcCAiTWVyZ2UgY29tbWl0IiB8IHdjIC1sKQorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1jb250aW51ZSB3b3JrcyBhZnRlciBhIGNvbmZsaWN0JyAnCisJKAorCWNkIGNsb25lMiAmJgorCWdpdCBmZXRjaCAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UgLXAgb3JpZ2luL3RvcGljICYmCisJdGVzdCAyID0gJChnaXQgbHMtZmlsZXMgQiB8IHdjIC1sKSAmJgorCWVjaG8gUmVzb2x2ZWQgYWdhaW4gPiBCICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlYmFzZSAtLWNvbnRpbnVlICYmCisJZ3JlcCAiXkBAQCAiIC5naXQvcmViYXNlLW1lcmdlL3BhdGNoICYmCisJZ2l0IGFkZCBCICYmCisJZ2l0IHJlYmFzZSAtLWNvbnRpbnVlICYmCisJdGVzdCAxID0gJChnaXQgcmV2LWxpc3QgLS1hbGwgLS1wcmV0dHk9b25lbGluZSB8IGdyZXAgIk1vZGlmeSBBIiB8IHdjIC1sKSAmJgorCXRlc3QgMSA9ICQoZ2l0IHJldi1saXN0IC0tYWxsIC0tcHJldHR5PW9uZWxpbmUgfCBncmVwICJBZGQgZGlmZmVyZW50IiB8IHdjIC1sKSAmJgorCXRlc3QgMSA9ICQoZ2l0IHJldi1saXN0IC0tYWxsIC0tcHJldHR5PW9uZWxpbmUgfCBncmVwICJNZXJnZSBvcmlnaW4iIHwgd2MgLWwpCisJKQorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDM0MTAtcmViYXNlLXByZXNlcnZlLWRyb3BwZWQtbWVyZ2VzLnNoIGIvdC90MzQxMC1yZWJhc2UtcHJlc2VydmUtZHJvcHBlZC1tZXJnZXMuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTgxNjQxNQotLS0gL2Rldi9udWxsCisrKyBiL3QvdDM0MTAtcmViYXNlLXByZXNlcnZlLWRyb3BwZWQtbWVyZ2VzLnNoCkBAIC0wLDAgKzEsMTM5IEBACisjIS9iaW4vc2gKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDA4IFN0ZXBoZW4gSGFiZXJtYW4KKyMKKwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHJlYmFzZSBwcmVzZXJ2ZSBtZXJnZXMKKworVGhpcyB0ZXN0IHJ1bnMgZ2l0IHJlYmFzZSB3aXRoIHByZXNlcnZlIG1lcmdlcyBhbmQgZW5zdXJlcyBjb21taXRzCitkcm9wcGVkIGJ5IHRoZSAtLWNoZXJyeS1waWNrIGZsYWcgaGF2ZSB0aGVpciBjaGlsZHJlbnMgcGFyZW50cworcmV3cml0dGVuLgorJworLiAuL3Rlc3QtbGliLnNoCisKKyMgc2V0IHVwIHR3byBicmFuY2hlcyBsaWtlIHRoaXM6CisjCisjIEEgLSBCIC0gQyAtIEQgLSBFCisjICAgXAorIyAgICAgRiAtIEcgLSBICisjICAgICAgIFwKKyMgICAgICAgICBJCisjCisjIHdoZXJlIEIsIEQgYW5kIEcgdG91Y2ggdGhlIHNhbWUgZmlsZS4KKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAnICcKKwk6ID4gZmlsZTEgJiYKKwlnaXQgYWRkIGZpbGUxICYmCisJdGVzdF90aWNrICYmCisJZ2l0IGNvbW1pdCAtbSBBICYmCisJZ2l0IHRhZyBBICYmCisJZWNobyAxID4gZmlsZTEgJiYKKwl0ZXN0X3RpY2sgJiYKKwlnaXQgY29tbWl0IC1tIEIgZmlsZTEgJiYKKwk6ID4gZmlsZTIgJiYKKwlnaXQgYWRkIGZpbGUyICYmCisJdGVzdF90aWNrICYmCisJZ2l0IGNvbW1pdCAtbSBDICYmCisJZWNobyAyID4gZmlsZTEgJiYKKwl0ZXN0X3RpY2sgJiYKKwlnaXQgY29tbWl0IC1tIEQgZmlsZTEgJiYKKwk6ID4gZmlsZTMgJiYKKwlnaXQgYWRkIGZpbGUzICYmCisJdGVzdF90aWNrICYmCisJZ2l0IGNvbW1pdCAtbSBFICYmCisJZ2l0IHRhZyBFICYmCisJZ2l0IGNoZWNrb3V0IC1iIGJyYW5jaDEgQSAmJgorCTogPiBmaWxlNCAmJgorCWdpdCBhZGQgZmlsZTQgJiYKKwl0ZXN0X3RpY2sgJiYKKwlnaXQgY29tbWl0IC1tIEYgJiYKKwlnaXQgdGFnIEYgJiYKKwllY2hvIDMgPiBmaWxlMSAmJgorCXRlc3RfdGljayAmJgorCWdpdCBjb21taXQgLW0gRyBmaWxlMSAmJgorCWdpdCB0YWcgRyAmJgorCTogPiBmaWxlNSAmJgorCWdpdCBhZGQgZmlsZTUgJiYKKwl0ZXN0X3RpY2sgJiYKKwlnaXQgY29tbWl0IC1tIEggJiYKKwlnaXQgdGFnIEggJiYKKwlnaXQgY2hlY2tvdXQgLWIgYnJhbmNoMiBGICYmCisJOiA+IGZpbGU2ICYmCisJZ2l0IGFkZCBmaWxlNiAmJgorCXRlc3RfdGljayAmJgorCWdpdCBjb21taXQgLW0gSSAmJgorCWdpdCB0YWcgSQorJworCisjIEEgLSBCIC0gQyAtIEQgLSBFCisjICAgXCAgICAgICAgICAgICBcIFwKKyMgICAgIEYgLSBHIC0gSCAtLSBMIFwgICAgICAgIC0tPiAgIEwKKyMgICAgICAgXCAgICAgICAgICAgIHwgICAgICAgICAgICAgICBcCisjICAgICAgICAgSSAtLSBHMiAtLSBKIC0tIEsgICAgICAgICAgIEkgLS0gSworIyBHMiA9IHNhbWUgY2hhbmdlcyBhcyBHCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdza2lwIHNhbWUtcmVzb2x1dGlvbiBtZXJnZXMgd2l0aCAtcCcgJworCWdpdCBjaGVja291dCBicmFuY2gxICYmCisJISBnaXQgbWVyZ2UgRSAmJgorCWVjaG8gMjMgPiBmaWxlMSAmJgorCWdpdCBhZGQgZmlsZTEgJiYKKwlnaXQgY29tbWl0IC1tIEwgJiYKKwlnaXQgY2hlY2tvdXQgYnJhbmNoMiAmJgorCWVjaG8gMyA+IGZpbGUxICYmCisJZ2l0IGNvbW1pdCAtYSAtbSBHMiAmJgorCSEgZ2l0IG1lcmdlIEUgJiYKKwllY2hvIDIzID4gZmlsZTEgJiYKKwlnaXQgYWRkIGZpbGUxICYmCisJZ2l0IGNvbW1pdCAtbSBKICYmCisJZWNobyBmaWxlNyA+IGZpbGU3ICYmCisJZ2l0IGFkZCBmaWxlNyAmJgorCWdpdCBjb21taXQgLW0gSyAmJgorCUdJVF9FRElUT1I9OiBnaXQgcmViYXNlIC1pIC1wIGJyYW5jaDEgJiYKKwl0ZXN0ICQoZ2l0IHJldi1wYXJzZSBicmFuY2gyXl4pID0gJChnaXQgcmV2LXBhcnNlIGJyYW5jaDEpICYmCisJdGVzdCAiMjMiID0gIiQoY2F0IGZpbGUxKSIgJiYKKwl0ZXN0ICIiID0gIiQoY2F0IGZpbGU2KSIgJiYKKwl0ZXN0ICJmaWxlNyIgPSAiJChjYXQgZmlsZTcpIiAmJgorCisJZ2l0IGNoZWNrb3V0IGJyYW5jaDEgJiYKKwlnaXQgcmVzZXQgLS1oYXJkIEggJiYKKwlnaXQgY2hlY2tvdXQgYnJhbmNoMiAmJgorCWdpdCByZXNldCAtLWhhcmQgSQorJworCisjIEEgLSBCIC0gQyAtIEQgLSBFCisjICAgXCAgICAgICAgICAgICBcIFwKKyMgICAgIEYgLSBHIC0gSCAtLSBMIFwgICAgICAgIC0tPiAgIEwKKyMgICAgICAgXCAgICAgICAgICAgIHwgICAgICAgICAgICAgICBcCisjICAgICAgICAgSSAtLSBHMiAtLSBKIC0tIEsgICAgICAgICAgIEkgLS0gRzIgLS0gSworIyBHMiA9IGRpZmZlcmVudCBjaGFuZ2VzIGFzIEcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2tlZXAgZGlmZmVyZW50LXJlc29sdXRpb24gbWVyZ2VzIHdpdGggLXAnICcKKwlnaXQgY2hlY2tvdXQgYnJhbmNoMSAmJgorCSEgZ2l0IG1lcmdlIEUgJiYKKwllY2hvIDIzID4gZmlsZTEgJiYKKwlnaXQgYWRkIGZpbGUxICYmCisJZ2l0IGNvbW1pdCAtbSBMICYmCisJZ2l0IGNoZWNrb3V0IGJyYW5jaDIgJiYKKwllY2hvIDQgPiBmaWxlMSAmJgorCWdpdCBjb21taXQgLWEgLW0gRzIgJiYKKwkhIGdpdCBtZXJnZSBFICYmCisJZWNobyAyNCA+IGZpbGUxICYmCisJZ2l0IGFkZCBmaWxlMSAmJgorCWdpdCBjb21taXQgLW0gSiAmJgorCWVjaG8gZmlsZTcgPiBmaWxlNyAmJgorCWdpdCBhZGQgZmlsZTcgJiYKKwlnaXQgY29tbWl0IC1tIEsgJiYKKwkhIEdJVF9FRElUT1I9OiBnaXQgcmViYXNlIC1pIC1wIGJyYW5jaDEgJiYKKwllY2hvIDIzNCA+IGZpbGUxICYmCisJZ2l0IGFkZCBmaWxlMSAmJgorCUdJVF9FRElUT1I9OiBnaXQgcmViYXNlIC0tY29udGludWUgJiYKKwl0ZXN0ICQoZ2l0IHJldi1wYXJzZSBicmFuY2gyXl5eKSA9ICQoZ2l0IHJldi1wYXJzZSBicmFuY2gxKSAmJgorCXRlc3QgIjIzNCIgPSAiJChjYXQgZmlsZTEpIiAmJgorCXRlc3QgIiIgPSAiJChjYXQgZmlsZTYpIiAmJgorCXRlc3QgImZpbGU3IiA9ICIkKGNhdCBmaWxlNykiICYmCisKKwlnaXQgY2hlY2tvdXQgYnJhbmNoMSAmJgorCWdpdCByZXNldCAtLWhhcmQgSCAmJgorCWdpdCBjaGVja291dCBicmFuY2gyICYmCisJZ2l0IHJlc2V0IC0taGFyZCBJCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MzQxMS1yZWJhc2UtcHJlc2VydmUtYXJvdW5kLW1lcmdlcy5zaCBiL3QvdDM0MTEtcmViYXNlLXByZXNlcnZlLWFyb3VuZC1tZXJnZXMuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWFjZmFhZQotLS0gL2Rldi9udWxsCisrKyBiL3QvdDM0MTEtcmViYXNlLXByZXNlcnZlLWFyb3VuZC1tZXJnZXMuc2gKQEAgLTAsMCArMSwxMzUgQEAKKyMhL2Jpbi9zaAorIworIyBDb3B5cmlnaHQgKGMpIDIwMDggU3RlcGhlbiBIYWJlcm1hbgorIworCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgcmViYXNlIHByZXNlcnZlIG1lcmdlcworCitUaGlzIHRlc3QgcnVucyBnaXQgcmViYXNlIHdpdGggYW5kIHRyaWVzIHRvIHNxdWFzaCBhIGNvbW1pdCBmcm9tIGFmdGVyIGEgbWVyZ2UKK3RvIGJlZm9yZSB0aGUgbWVyZ2UuCisnCisuIC4vdGVzdC1saWIuc2gKKworIyBDb3B5L3Bhc3RlIGZyb20gdDM0MDQtcmViYXNlLWludGVyYWN0aXZlLnNoCitlY2hvICIjISRTSEVMTF9QQVRIIiA+ZmFrZS1lZGl0b3Iuc2gKK2NhdCA+PiBmYWtlLWVkaXRvci5zaCA8PFxFT0YKK2Nhc2UgIiQxIiBpbgorKi9DT01NSVRfRURJVE1TRykKKwl0ZXN0IC16ICIkRkFLRV9DT01NSVRfTUVTU0FHRSIgfHwgZWNobyAiJEZBS0VfQ09NTUlUX01FU1NBR0UiID4gIiQxIgorCXRlc3QgLXogIiRGQUtFX0NPTU1JVF9BTUVORCIgfHwgZWNobyAiJEZBS0VfQ09NTUlUX0FNRU5EIiA+PiAiJDEiCisJZXhpdAorCTs7Citlc2FjCit0ZXN0IC16ICIkRVhQRUNUX0NPVU5UIiB8fAorCXRlc3QgIiRFWFBFQ1RfQ09VTlQiID0gJChzZWQgLWUgJy9eIy9kJyAtZSAnL14kL2QnIDwgIiQxIiB8IHdjIC1sKSB8fAorCWV4aXQKK3Rlc3QgLXogIiRGQUtFX0xJTkVTIiAmJiBleGl0CitncmVwIC12ICdeIycgPCAiJDEiID4gIiQxIi50bXAKK3JtIC1mICIkMSIKK2NhdCAiJDEiLnRtcAorYWN0aW9uPXBpY2sKK2ZvciBsaW5lIGluICRGQUtFX0xJTkVTOyBkbworCWNhc2UgJGxpbmUgaW4KKwlzcXVhc2h8ZWRpdCkKKwkJYWN0aW9uPSIkbGluZSI7OworCSopCisJCWVjaG8gc2VkIC1uICIke2xpbmV9cy9ecGljay8kYWN0aW9uL3AiCisJCXNlZCAtbiAiJHtsaW5lfXAiIDwgIiQxIi50bXAKKwkJc2VkIC1uICIke2xpbmV9cy9ecGljay8kYWN0aW9uL3AiIDwgIiQxIi50bXAgPj4gIiQxIgorCQlhY3Rpb249cGljazs7CisJZXNhYworZG9uZQorRU9GCisKK3Rlc3Rfc2V0X2VkaXRvciAiJChwd2QpL2Zha2UtZWRpdG9yLnNoIgorY2htb2QgYSt4IGZha2UtZWRpdG9yLnNoCisKKyMgc2V0IHVwIHR3byBicmFuY2hlcyBsaWtlIHRoaXM6CisjCisjIEExIC0gQjEgLSBEMSAtIEUxIC0gRjEKKyMgICAgICAgXCAgICAgICAgLworIyAgICAgICAgLS0gQzEgLS0KKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAnICcKKwl0b3VjaCBhICYmCisJdG91Y2ggYiAmJgorCWdpdCBhZGQgYSAmJgorCWdpdCBjb21taXQgLW0gQTEgJiYKKwlnaXQgdGFnIEExCisJZ2l0IGFkZCBiICYmCisJZ2l0IGNvbW1pdCAtbSBCMSAmJgorCWdpdCB0YWcgQjEgJiYKKwlnaXQgY2hlY2tvdXQgLWIgYnJhbmNoICYmCisJdG91Y2ggYyAmJgorCWdpdCBhZGQgYyAmJgorCWdpdCBjb21taXQgLW0gQzEgJiYKKwlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJdG91Y2ggZCAmJgorCWdpdCBhZGQgZCAmJgorCWdpdCBjb21taXQgLW0gRDEgJiYKKwlnaXQgbWVyZ2UgYnJhbmNoICYmCisJdG91Y2ggZiAmJgorCWdpdCBhZGQgZiAmJgorCWdpdCBjb21taXQgLW0gRjEgJiYKKwlnaXQgdGFnIEYxCisnCisKKyMgU2hvdWxkIHJlc3VsdCBpbjoKKyMKKyMgQTEgLSBCMSAtIEQyIC0gRTIKKyMgICAgICAgXCAgICAgICAgLworIyAgICAgICAgLS0gQzEgLS0KKyMKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NxdWFzaCBGMSBpbnRvIEQxJyAnCisJRkFLRV9MSU5FUz0iMSBzcXVhc2ggMyAyIiBnaXQgcmViYXNlIC1pIC1wIEIxICYmCisJdGVzdCAiJChnaXQgcmV2LXBhcnNlIEhFQUReMikiID0gIiQoZ2l0IHJldi1wYXJzZSBicmFuY2gpIiAmJgorCXRlc3QgIiQoZ2l0IHJldi1wYXJzZSBIRUFEfjIpIiA9ICIkKGdpdCByZXYtcGFyc2UgQjEpIiAmJgorCWdpdCB0YWcgRTIKKycKKworIyBTdGFydCB3aXRoOgorIworIyBBMSAtIEIxIC0gRDIgLSBFMgorIyAgXAorIyAgIEcxIC0tLS0gTDEgLS0tLSBNMQorIyAgICBcICAgICAgICAgICAgIC8KKyMgICAgIEgxIC0tIEoxIC0tIEsxCisjICAgICAgXCAgICAgICAgIC8KKyMgICAgICAgIC0tIEkxIC0tCisjCisjIEFuZCByZWJhc2UgRzEuLk0xIG9udG8gRTIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIHR3byBsZXZlbHMgb2YgbWVyZ2UnICcKKwlnaXQgY2hlY2tvdXQgLWIgYnJhbmNoMiBBMSAmJgorCXRvdWNoIGcgJiYKKwlnaXQgYWRkIGcgJiYKKwlnaXQgY29tbWl0IC1tIEcxICYmCisJZ2l0IGNoZWNrb3V0IC1iIGJyYW5jaDMgJiYKKwl0b3VjaCBoCisJZ2l0IGFkZCBoICYmCisJZ2l0IGNvbW1pdCAtbSBIMSAmJgorCWdpdCBjaGVja291dCAtYiBicmFuY2g0ICYmCisJdG91Y2ggaSAmJgorCWdpdCBhZGQgaSAmJgorCWdpdCBjb21taXQgLW0gSTEgJiYKKwlnaXQgdGFnIEkxICYmCisJZ2l0IGNoZWNrb3V0IGJyYW5jaDMgJiYKKwl0b3VjaCBqICYmCisJZ2l0IGFkZCBqICYmCisJZ2l0IGNvbW1pdCAtbSBKMSAmJgorCWdpdCBtZXJnZSBJMSAtLW5vLWNvbW1pdCAmJgorCWdpdCBjb21taXQgLW0gSzEgJiYKKwlnaXQgdGFnIEsxICYmCisJZ2l0IGNoZWNrb3V0IGJyYW5jaDIgJiYKKwl0b3VjaCBsICYmCisJZ2l0IGFkZCBsICYmCisJZ2l0IGNvbW1pdCAtbSBMMSAmJgorCWdpdCBtZXJnZSBLMSAtLW5vLWNvbW1pdCAmJgorCWdpdCBjb21taXQgLW0gTTEgJiYKKwlHSVRfRURJVE9SPTogZ2l0IHJlYmFzZSAtaSAtcCBFMiAmJgorCXRlc3QgIiQoZ2l0IHJldi1wYXJzZSBIRUFEfjMpIiA9ICIkKGdpdCByZXYtcGFyc2UgRTIpIiAmJgorCXRlc3QgIiQoZ2l0IHJldi1wYXJzZSBIRUFEfjIpIiA9ICIkKGdpdCByZXYtcGFyc2UgSEVBRF4yXjJ+MikiICYmCisJdGVzdCAiJChnaXQgcmV2LXBhcnNlIEhFQUReMl4xXjEpIiA9ICIkKGdpdCByZXYtcGFyc2UgSEVBRF4yXjJeMSkiCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MzUwNC1jaGVycnktcGljay1yZXJlcmUuc2ggYi90L3QzNTA0LWNoZXJyeS1waWNrLXJlcmVyZS5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mN2IzNTE4Ci0tLSAvZGV2L251bGwKKysrIGIvdC90MzUwNC1jaGVycnktcGljay1yZXJlcmUuc2gKQEAgLTAsMCArMSw0NSBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J2NoZXJyeS1waWNrIHNob3VsZCByZXJlcmUgZm9yIGNvbmZsaWN0cycKKworLiAuL3Rlc3QtbGliLnNoCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3Mgc2V0dXAgJworCWVjaG8gZm9vID5mb28gJiYKKwlnaXQgYWRkIGZvbyAmJiB0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtcSAtbSAxICYmCisJZWNobyBmb28tbWFzdGVyID5mb28gJiYKKwlnaXQgYWRkIGZvbyAmJiB0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtcSAtbSAyICYmCisKKwlnaXQgY2hlY2tvdXQgLWIgZGV2IEhFQUReICYmCisJZWNobyBmb28tZGV2ID5mb28gJiYKKwlnaXQgYWRkIGZvbyAmJiB0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtcSAtbSAzICYmCisJZ2l0IGNvbmZpZyByZXJlcmUuZW5hYmxlZCB0cnVlCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbmZsaWN0aW5nIG1lcmdlJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIG1hc3RlcgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmaXh1cCcgJworCWVjaG8gZm9vLWRldiA+Zm9vICYmCisJZ2l0IGFkZCBmb28gJiYgdGVzdF90aWNrICYmIGdpdCBjb21taXQgLXEgLW0gNCAmJgorCWdpdCByZXNldCAtLWhhcmQgSEVBRF4KKwllY2hvIGZvby1kZXYgPmV4cGVjdAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVycnktcGljayBjb25mbGljdCcgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBjaGVycnktcGljayBtYXN0ZXIgJiYKKwl0ZXN0X2NtcCBleHBlY3QgZm9vCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlY29uZmlndXJlJyAnCisJZ2l0IGNvbmZpZyByZXJlcmUuZW5hYmxlZCBmYWxzZQorCWdpdCByZXNldCAtLWhhcmQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlcnJ5LXBpY2sgY29uZmxpY3Qgd2l0aG91dCByZXJlcmUnICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgY2hlcnJ5LXBpY2sgbWFzdGVyICYmCisJdGVzdF9tdXN0X2ZhaWwgdGVzdF9jbXAgZXhwZWN0IGZvbworJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDM1MDUtY2hlcnJ5LXBpY2stZW1wdHkuc2ggYi90L3QzNTA1LWNoZXJyeS1waWNrLWVtcHR5LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjlhYWVhYmQKLS0tIC9kZXYvbnVsbAorKysgYi90L3QzNTA1LWNoZXJyeS1waWNrLWVtcHR5LnNoCkBAIC0wLDAgKzEsMzMgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSd0ZXN0IGNoZXJyeS1waWNraW5nIGFuIGVtcHR5IGNvbW1pdCcKKworLiAuL3Rlc3QtbGliLnNoCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3Mgc2V0dXAgJworCisJZWNobyBmaXJzdCA+IGZpbGUxICYmCisJZ2l0IGFkZCBmaWxlMSAmJgorCXRlc3RfdGljayAmJgorCWdpdCBjb21taXQgLW0gImZpcnN0IiAmJgorCisJZ2l0IGNoZWNrb3V0IC1iIGVtcHR5LWJyYW5jaCAmJgorCXRlc3RfdGljayAmJgorCWdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSAiZW1wdHkiCisKKycKKwordGVzdF9leHBlY3RfY29kZSAxICdjaGVycnktcGljayBhbiBlbXB0eSBjb21taXQnICcKKworCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwlnaXQgY2hlcnJ5LXBpY2sgZW1wdHktYnJhbmNoCisKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5kZXggbG9ja2ZpbGUgd2FzIHJlbW92ZWQnICcKKworCXRlc3QgISAtZiAuZ2l0L2luZGV4LmxvY2sKKworJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDM2MDAtcm0uc2ggYi90L3QzNjAwLXJtLnNoCmluZGV4IDY2YWNhOTkuLjk1NTQyZTkgMTAwNzU1Ci0tLSBhL3QvdDM2MDAtcm0uc2gKKysrIGIvdC90MzYwMC1ybS5zaApAQCAtMTg3LDYgKzE4NywxOSBAQAogCXRlc3RfbXVzdF9mYWlsIGdpdCBscy1maWxlcyAtLWVycm9yLXVubWF0Y2ggYmF6CiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlZnVzZSB0byByZW1vdmUgY2FjaGVkIGVtcHR5IGZpbGUgd2l0aCBtb2RpZmljYXRpb25zJyAnCisJPmVtcHR5ICYmCisJZ2l0IGFkZCBlbXB0eSAmJgorCWVjaG8gY29udGVudCA+ZW1wdHkgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgcm0gLS1jYWNoZWQgZW1wdHkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVtb3ZlIGludGVudC10by1hZGQgZmlsZSB3aXRob3V0IC0tZm9yY2UnICcKKwllY2hvIGNvbnRlbnQgPmludGVudC10by1hZGQgJiYKKwlnaXQgYWRkIC1OIGludGVudC10by1hZGQKKwlnaXQgcm0gLS1jYWNoZWQgaW50ZW50LXRvLWFkZAorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdSZWN1cnNpdmUgdGVzdCBzZXR1cCcgJwogCW1rZGlyIC1wIGZyb3R6ICYmCiAJZWNobyBxZndmcSA+ZnJvdHovbml0Zm9sICYmCkBAIC0yMzgsNCArMjUxLDIxIEBACiAKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hva2luZyAiZ2l0IHJtIiBzaG91bGQgbm90IGxldCBpdCBkaWUgd2l0aCBjcnVmdCcgJworCWdpdCByZXNldCAtcSAtLWhhcmQgJiYKKwlIPTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgJiYKKwlpPTAgJiYKKwl3aGlsZSB0ZXN0ICRpIC1sdCAxMjAwMAorCWRvCisJICAgIGVjaG8gIjEwMDY0NCAkSCAwCXNvbWUtZmlsZS0kaSIKKwkgICAgaT0kKCggJGkgKyAxICkpCisJZG9uZSB8IGdpdCB1cGRhdGUtaW5kZXggLS1pbmRleC1pbmZvICYmCisJZ2l0IHJtIC1uICJzb21lLWZpbGUtKiIgfCA6OworCXRlc3QgLWYgLmdpdC9pbmRleC5sb2NrCisJc3RhdHVzPSQ/CisJcm0gLWYgLmdpdC9pbmRleC5sb2NrCisJZ2l0IHJlc2V0IC1xIC0taGFyZAorCXRlc3QgIiRzdGF0dXMiICE9IDAKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QzNzAwLWFkZC5zaCBiL3QvdDM3MDAtYWRkLnNoCmluZGV4IDJhYzkzYTMuLjlmNjQ1NGQgMTAwNzU1Ci0tLSBhL3QvdDM3MDAtYWRkLnNoCisrKyBiL3QvdDM3MDAtYWRkLnNoCkBAIC0yMjYsNyArMjI2LDcgQEAKIAlnaXQgcmVzZXQgLS1oYXJkICYmCiAJdG91Y2ggZm9cW291XF1iYXIgZm9vYmFyICYmCiAJZ2l0IGFkZCAnXCcnZm9cW291XF1iYXInXCcnICYmCi0JZ2l0IGxzLWZpbGVzIGZvXFtvdVxdYmFyIHwgZ3JlcCAtRiBmb1xbb3VcXWJhciAmJgorCWdpdCBscy1maWxlcyBmb1xbb3VcXWJhciB8IGZncmVwIGZvXFtvdVxdYmFyICYmCiAJISAoIGdpdCBscy1maWxlcyBmb29iYXIgfCBncmVwIGZvb2JhciApCiAnCiAKZGlmZiAtLWdpdCBhL3QvdDM5MDAtaTE4bi1jb21taXQuc2ggYi90L3QzOTAwLWkxOG4tY29tbWl0LnNoCmluZGV4IGYzMTM1MzMuLjc4NGMzMWEgMTAwNzU1Ci0tLSBhL3QvdDM5MDAtaTE4bi1jb21taXQuc2gKKysrIGIvdC90MzkwMC1pMThuLWNvbW1pdC5zaApAQCAtMTYsNyArMTYsNyBAQAogCTogPkYgJiYKIAlnaXQgYWRkIEYgJiYKIAlUPSQoZ2l0IHdyaXRlLXRyZWUpICYmCi0JQz0kKGdpdCBjb21taXQtdHJlZSAkVCA8Li4vdDM5MDAvMS1VVEYtOC50eHQpICYmCisJQz0kKGdpdCBjb21taXQtdHJlZSAkVCA8IiRURVNUX0RJUkVDVE9SWSIvdDM5MDAvMS1VVEYtOC50eHQpICYmCiAJZ2l0IHVwZGF0ZS1yZWYgSEVBRCAkQyAmJgogCWdpdCB0YWcgQzAKICcKQEAgLTMyLDcgKzMyLDcgQEAKIAkJZ2l0IGNvbmZpZyBpMThuLmNvbW1pdGVuY29kaW5nICRIICYmCiAJCWdpdCBjaGVja291dCAtYiAkSCBDMCAmJgogCQllY2hvICRIID5GICYmCi0JCWdpdCBjb21taXQgLWEgLUYgLi4vdDM5MDAvJEgudHh0CisJCWdpdCBjb21taXQgLWEgLUYgIiRURVNUX0RJUkVDVE9SWSIvdDM5MDAvJEgudHh0CiAJJwogZG9uZQogCkBAIC01NywxMyArNTcsMTMgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnSVNPLTg4NTktMSBzaG91bGQgYmUgc2hvd24gaW4gVVRGLTggbm93JyAnCi0JY29tcGFyZV93aXRoIElTTy04ODU5LTEgLi4vdDM5MDAvMS1VVEYtOC50eHQKKwljb21wYXJlX3dpdGggSVNPLTg4NTktMSAiJFRFU1RfRElSRUNUT1JZIi90MzkwMC8xLVVURi04LnR4dAogJwogCiBmb3IgSCBpbiBFVUNKUCBJU08tMjAyMi1KUAogZG8KIAl0ZXN0X2V4cGVjdF9zdWNjZXNzICIkSCBzaG91bGQgYmUgc2hvd24gaW4gVVRGLTggbm93IiAnCi0JCWNvbXBhcmVfd2l0aCAnJEgnIC4uL3QzOTAwLzItVVRGLTgudHh0CisJCWNvbXBhcmVfd2l0aCAnJEgnICIkVEVTVF9ESVJFQ1RPUlkiL3QzOTAwLzItVVRGLTgudHh0CiAJJwogZG9uZQogCkBAIC04Miw3ICs4Miw3IEBACiBkbwogCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgIiRIIHNob3VsZCBiZSBzaG93biBpbiBpdHNlbGYgbm93IiAnCiAJCWdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyAnJEgnICYmCi0JCWNvbXBhcmVfd2l0aCAnJEgnIC4uL3QzOTAwLyckSCcudHh0CisJCWNvbXBhcmVfd2l0aCAnJEgnICIkVEVTVF9ESVJFQ1RPUlkiL3QzOTAwLyckSCcudHh0CiAJJwogZG9uZQogCkBAIC05MSwxMyArOTEsMTMgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnSVNPLTg4NTktMSBzaG91bGQgYmUgc2hvd24gaW4gVVRGLTggbm93JyAnCi0JY29tcGFyZV93aXRoIElTTy04ODU5LTEgLi4vdDM5MDAvMS1VVEYtOC50eHQKKwljb21wYXJlX3dpdGggSVNPLTg4NTktMSAiJFRFU1RfRElSRUNUT1JZIi90MzkwMC8xLVVURi04LnR4dAogJwogCiBmb3IgSCBpbiBFVUNKUCBJU08tMjAyMi1KUAogZG8KIAl0ZXN0X2V4cGVjdF9zdWNjZXNzICIkSCBzaG91bGQgYmUgc2hvd24gaW4gVVRGLTggbm93IiAnCi0JCWNvbXBhcmVfd2l0aCAnJEgnIC4uL3QzOTAwLzItVVRGLTgudHh0CisJCWNvbXBhcmVfd2l0aCAnJEgnICIkVEVTVF9ESVJFQ1RPUlkiL3QzOTAwLzItVVRGLTgudHh0CiAJJwogZG9uZQogCkBAIC0xMDcsNyArMTA3LDcgQEAKIAlmb3IgSCBpbiBFVUNKUCBJU08tMjAyMi1KUAogCWRvCiAJCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgIiRIIHNob3VsZCBiZSBzaG93biBpbiAkSiBub3ciICcKLQkJCWNvbXBhcmVfd2l0aCAnJEgnIC4uL3QzOTAwLyckSicudHh0CisJCQljb21wYXJlX3dpdGggJyRIJyAiJFRFU1RfRElSRUNUT1JZIi90MzkwMC8nJEonLnR4dAogCQknCiAJZG9uZQogZG9uZQpAQCAtMTE1LDcgKzExNSw3IEBACiBmb3IgSCBpbiBJU08tODg1OS0xIEVVQ0pQIElTTy0yMDIyLUpQCiBkbwogCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgIk5vIGNvbnZlcnNpb24gd2l0aCAkSCIgJwotCQljb21wYXJlX3dpdGggIi0tZW5jb2Rpbmc9bm9uZSAnJEgnIiAuLi90MzkwMC8nJEgnLnR4dAorCQljb21wYXJlX3dpdGggIi0tZW5jb2Rpbmc9bm9uZSAnJEgnIiAiJFRFU1RfRElSRUNUT1JZIi90MzkwMC8nJEgnLnR4dAogCScKIGRvbmUKIApkaWZmIC0tZ2l0IGEvdC90MzkwMS1pMThuLXBhdGNoLnNoIGIvdC90MzkwMS1pMThuLXBhdGNoLnNoCmluZGV4IDU2Nzc2MGUuLjc2NTVkYTMgMTAwNzU1Ci0tLSBhL3QvdDM5MDEtaTE4bi1wYXRjaC5zaAorKysgYi90L3QzOTAxLWkxOG4tcGF0Y2guc2gKQEAgLTM1LDcgKzM1LDcgQEAKIAogCSMgdXNlIFVURi04IGluIGF1dGhvciBhbmQgY29tbWl0dGVyIG5hbWUgdG8gbWF0Y2ggdGhlCiAJIyBpMThuLmNvbW1pdGVuY29kaW5nIHNldHRpbmdzCi0JLiAuLi90MzkwMS11dGY4LnR4dCAmJgorCS4gIiRURVNUX0RJUkVDVE9SWSIvdDM5MDEtdXRmOC50eHQgJiYKIAogCXRlc3RfdGljayAmJgogCWVjaG8gIiRHSVRfQVVUSE9SX05BTUUiID5taW5lICYmCkBAIC01Nyw3ICs1Nyw3IEBACiAJIyB0aGUgc2Vjb25kIG9uZSBvbiB0aGUgc2lkZSBicmFuY2ggaXMgSVNPLTg4NTktMQogCWdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyBJU08tODg1OS0xICYmCiAJIyB1c2UgYXV0aG9yIGFuZCBjb21taXR0ZXIgbmFtZSBpbiBJU08tODg1OS0xIHRvIG1hdGNoIGl0LgotCS4gLi4vdDM5MDEtODg1OS0xLnR4dCAmJgorCS4gIiRURVNUX0RJUkVDVE9SWSIvdDM5MDEtODg1OS0xLnR4dCAmJgogCXRlc3RfdGljayAmJgogCWVjaG8gWWV0IGFub3RoZXIgPnRoZWlycyAmJgogCWdpdCBhZGQgdGhlaXJzICYmCkBAIC0xMDEsNyArMTAxLDcgQEAKIAogCSMgVGhlIHJlc3VsdCB3aWxsIGJlIGNvbW1pdHRlZCBieSBHSVRfQ09NTUlUVEVSX05BTUUgLS0KIAkjIHdlIHdhbnQgVVRGLTggZW5jb2RlZCBuYW1lLgotCS4gLi4vdDM5MDEtdXRmOC50eHQgJiYKKwkuICIkVEVTVF9ESVJFQ1RPUlkiL3QzOTAxLXV0ZjgudHh0ICYmCiAJZ2l0IGNoZWNrb3V0IC1iIHRlc3QgJiYKIAlnaXQgcmViYXNlIG1hc3RlciAmJgogCkBAIC0xMTEsNyArMTExLDcgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAoVS9MKScgJwogCWdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyBVVEYtOCAmJgogCWdpdCBjb25maWcgaTE4bi5sb2dvdXRwdXRlbmNvZGluZyBJU08tODg1OS0xICYmCi0JLiAuLi90MzkwMS11dGY4LnR4dCAmJgorCS4gIiRURVNUX0RJUkVDVE9SWSIvdDM5MDEtdXRmOC50eHQgJiYKIAogCWdpdCByZXNldCAtLWhhcmQgc2lkZSAmJgogCWdpdCByZWJhc2UgbWFzdGVyICYmCkBAIC0xMjMsNyArMTIzLDcgQEAKIAkjIEluIHRoaXMgdGVzdCB3ZSB3YW50IElTTy04ODU5LTEgZW5jb2RlZCBjb21taXRzIGFzIHRoZSByZXN1bHQKIAlnaXQgY29uZmlnIGkxOG4uY29tbWl0ZW5jb2RpbmcgSVNPLTg4NTktMSAmJgogCWdpdCBjb25maWcgaTE4bi5sb2dvdXRwdXRlbmNvZGluZyBJU08tODg1OS0xICYmCi0JLiAuLi90MzkwMS04ODU5LTEudHh0ICYmCisJLiAiJFRFU1RfRElSRUNUT1JZIi90MzkwMS04ODU5LTEudHh0ICYmCiAKIAlnaXQgcmVzZXQgLS1oYXJkIHNpZGUgJiYKIAlnaXQgcmViYXNlIG1hc3RlciAmJgpAQCAtMTM2LDcgKzEzNiw3IEBACiAJIyB0byBnZXQgSVNPLTg4NTktMSByZXN1bHRzLgogCWdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyBJU08tODg1OS0xICYmCiAJZ2l0IGNvbmZpZyBpMThuLmxvZ291dHB1dGVuY29kaW5nIFVURi04ICYmCi0JLiAuLi90MzkwMS04ODU5LTEudHh0ICYmCisJLiAiJFRFU1RfRElSRUNUT1JZIi90MzkwMS04ODU5LTEudHh0ICYmCiAKIAlnaXQgcmVzZXQgLS1oYXJkIHNpZGUgJiYKIAlnaXQgcmViYXNlIG1hc3RlciAmJgpAQCAtMTQ5LDcgKzE0OSw3IEBACiAKIAlnaXQgY29uZmlnIGkxOG4uY29tbWl0ZW5jb2RpbmcgVVRGLTggJiYKIAlnaXQgY29uZmlnIGkxOG4ubG9nb3V0cHV0ZW5jb2RpbmcgVVRGLTggJiYKLQkuIC4uL3QzOTAxLXV0ZjgudHh0ICYmCisJLiAiJFRFU1RfRElSRUNUT1JZIi90MzkwMS11dGY4LnR4dCAmJgogCiAJZ2l0IHJlc2V0IC0taGFyZCBtYXN0ZXIgJiYKIAlnaXQgY2hlcnJ5LXBpY2sgc2lkZV4gJiYKQEAgLTE2NCw3ICsxNjQsNyBAQAogCiAJZ2l0IGNvbmZpZyBpMThuLmNvbW1pdGVuY29kaW5nIElTTy04ODU5LTEgJiYKIAlnaXQgY29uZmlnIGkxOG4ubG9nb3V0cHV0ZW5jb2RpbmcgSVNPLTg4NTktMSAmJgotCS4gLi4vdDM5MDEtODg1OS0xLnR4dCAmJgorCS4gIiRURVNUX0RJUkVDVE9SWSIvdDM5MDEtODg1OS0xLnR4dCAmJgogCiAJZ2l0IHJlc2V0IC0taGFyZCBtYXN0ZXIgJiYKIAlnaXQgY2hlcnJ5LXBpY2sgc2lkZV4gJiYKQEAgLTE3OSw3ICsxNzksNyBAQAogCiAJZ2l0IGNvbmZpZyBpMThuLmNvbW1pdGVuY29kaW5nIFVURi04ICYmCiAJZ2l0IGNvbmZpZyBpMThuLmxvZ291dHB1dGVuY29kaW5nIElTTy04ODU5LTEgJiYKLQkuIC4uL3QzOTAxLXV0ZjgudHh0ICYmCisJLiAiJFRFU1RfRElSRUNUT1JZIi90MzkwMS11dGY4LnR4dCAmJgogCiAJZ2l0IHJlc2V0IC0taGFyZCBtYXN0ZXIgJiYKIAlnaXQgY2hlcnJ5LXBpY2sgc2lkZV4gJiYKQEAgLTE5NSw3ICsxOTUsNyBAQAogCiAJZ2l0IGNvbmZpZyBpMThuLmNvbW1pdGVuY29kaW5nIElTTy04ODU5LTEgJiYKIAlnaXQgY29uZmlnIGkxOG4ubG9nb3V0cHV0ZW5jb2RpbmcgVVRGLTggJiYKLQkuIC4uL3QzOTAxLTg4NTktMS50eHQgJiYKKwkuICIkVEVTVF9ESVJFQ1RPUlkiL3QzOTAxLTg4NTktMS50eHQgJiYKIAogCWdpdCByZXNldCAtLWhhcmQgbWFzdGVyICYmCiAJZ2l0IGNoZXJyeS1waWNrIHNpZGVeICYmCkBAIC0yMDgsNyArMjA4LDcgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtLW1lcmdlIChVL1UpJyAnCiAJZ2l0IGNvbmZpZyBpMThuLmNvbW1pdGVuY29kaW5nIFVURi04ICYmCiAJZ2l0IGNvbmZpZyBpMThuLmxvZ291dHB1dGVuY29kaW5nIFVURi04ICYmCi0JLiAuLi90MzkwMS11dGY4LnR4dCAmJgorCS4gIiRURVNUX0RJUkVDVE9SWSIvdDM5MDEtdXRmOC50eHQgJiYKIAogCWdpdCByZXNldCAtLWhhcmQgc2lkZSAmJgogCWdpdCByZWJhc2UgLS1tZXJnZSBtYXN0ZXIgJiYKQEAgLTIxOSw3ICsyMTksNyBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIC0tbWVyZ2UgKFUvTCknICcKIAlnaXQgY29uZmlnIGkxOG4uY29tbWl0ZW5jb2RpbmcgVVRGLTggJiYKIAlnaXQgY29uZmlnIGkxOG4ubG9nb3V0cHV0ZW5jb2RpbmcgSVNPLTg4NTktMSAmJgotCS4gLi4vdDM5MDEtdXRmOC50eHQgJiYKKwkuICIkVEVTVF9ESVJFQ1RPUlkiL3QzOTAxLXV0ZjgudHh0ICYmCiAKIAlnaXQgcmVzZXQgLS1oYXJkIHNpZGUgJiYKIAlnaXQgcmViYXNlIC0tbWVyZ2UgbWFzdGVyICYmCkBAIC0yMzEsNyArMjMxLDcgQEAKIAkjIEluIHRoaXMgdGVzdCB3ZSB3YW50IElTTy04ODU5LTEgZW5jb2RlZCBjb21taXRzIGFzIHRoZSByZXN1bHQKIAlnaXQgY29uZmlnIGkxOG4uY29tbWl0ZW5jb2RpbmcgSVNPLTg4NTktMSAmJgogCWdpdCBjb25maWcgaTE4bi5sb2dvdXRwdXRlbmNvZGluZyBJU08tODg1OS0xICYmCi0JLiAuLi90MzkwMS04ODU5LTEudHh0ICYmCisJLiAiJFRFU1RfRElSRUNUT1JZIi90MzkwMS04ODU5LTEudHh0ICYmCiAKIAlnaXQgcmVzZXQgLS1oYXJkIHNpZGUgJiYKIAlnaXQgcmViYXNlIC0tbWVyZ2UgbWFzdGVyICYmCkBAIC0yNDQsNyArMjQ0LDcgQEAKIAkjIHRvIGdldCBJU08tODg1OS0xIHJlc3VsdHMuCiAJZ2l0IGNvbmZpZyBpMThuLmNvbW1pdGVuY29kaW5nIElTTy04ODU5LTEgJiYKIAlnaXQgY29uZmlnIGkxOG4ubG9nb3V0cHV0ZW5jb2RpbmcgVVRGLTggJiYKLQkuIC4uL3QzOTAxLTg4NTktMS50eHQgJiYKKwkuICIkVEVTVF9ESVJFQ1RPUlkiL3QzOTAxLTg4NTktMS50eHQgJiYKIAogCWdpdCByZXNldCAtLWhhcmQgc2lkZSAmJgogCWdpdCByZWJhc2UgLS1tZXJnZSBtYXN0ZXIgJiYKZGlmZiAtLWdpdCBhL3QvdDQwMDAtZGlmZi1mb3JtYXQuc2ggYi90L3Q0MDAwLWRpZmYtZm9ybWF0LnNoCmluZGV4IGM0NGIyN2EuLjZkZGQ0NjkgMTAwNzU1Ci0tLSBhL3QvdDQwMDAtZGlmZi1mb3JtYXQuc2gKKysrIGIvdC90NDAwMC1kaWZmLWZvcm1hdC5zaApAQCAtNyw3ICs3LDcgQEAKIAogJwogLiAuL3Rlc3QtbGliLnNoCi0uIC4uL2RpZmYtbGliLnNoCisuICIkVEVTVF9ESVJFQ1RPUlkiL2RpZmYtbGliLnNoCiAKIGVjaG8gPnBhdGgwICdMaW5lIDEKIExpbmUgMgpkaWZmIC0tZ2l0IGEvdC90NDAwMS1kaWZmLXJlbmFtZS5zaCBiL3QvdDQwMDEtZGlmZi1yZW5hbWUuc2gKaW5kZXggYTMyNjkyNC4uNzFiYWM4MyAxMDA3NTUKLS0tIGEvdC90NDAwMS1kaWZmLXJlbmFtZS5zaAorKysgYi90L3Q0MDAxLWRpZmYtcmVuYW1lLnNoCkBAIC03LDcgKzcsNyBAQAogCiAnCiAuIC4vdGVzdC1saWIuc2gKLS4gLi4vZGlmZi1saWIuc2gKKy4gIiRURVNUX0RJUkVDVE9SWSIvZGlmZi1saWIuc2gKIAogZWNobyA+cGF0aDAgJ0xpbmUgMQogTGluZSAyCmRpZmYgLS1naXQgYS90L3Q0MDAyLWRpZmYtYmFzaWMuc2ggYi90L3Q0MDAyLWRpZmYtYmFzaWMuc2gKaW5kZXggYTRjZmRlNi4uY2MzNjgxZiAxMDA3NTUKLS0tIGEvdC90NDAwMi1kaWZmLWJhc2ljLnNoCisrKyBiL3QvdDQwMDItZGlmZi1iYXNpYy5zaApAQCAtNyw3ICs3LDcgQEAKIAogJwogLiAuL3Rlc3QtbGliLnNoCi0uIC4uL2xpYi1yZWFkLXRyZWUtbS0zd2F5LnNoCisuICIkVEVTVF9ESVJFQ1RPUlkiL2xpYi1yZWFkLXRyZWUtbS0zd2F5LnNoCiAKIGNhdCA+LnRlc3QtcGxhaW4tT0EgPDxcRU9GCiA6MDAwMDAwIDEwMDY0NCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIGNjYmE3MmFkMzg4OGEzNTIwYjM5ZWZjZjc4MGI5ZWU2NDE2NzUzNWQgQQlBQQpAQCAtMTY5LDYgKzE2OSwyMCBAQAogICAgICBjbXAgLXMgLnRlc3QtYSAudGVzdC1yZWN1cnNpdmUtQUInCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAorICAgICdkaWZmLXRyZWUgLS1zdGRpbiBvZiBrbm93biB0cmVlcy4nIFwKKyAgICAnZWNobyAkdHJlZV9BICR0cmVlX0IgfCBnaXQgZGlmZi10cmVlIC0tc3RkaW4gPiAudGVzdC1hICYmCisgICAgIGVjaG8gJHRyZWVfQSAkdHJlZV9CID4gLnRlc3QtcGxhaW4tQUJ4ICYmCisgICAgIGNhdCAudGVzdC1wbGFpbi1BQiA+PiAudGVzdC1wbGFpbi1BQnggJiYKKyAgICAgY21wIC1zIC50ZXN0LWEgLnRlc3QtcGxhaW4tQUJ4JworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKKyAgICAnZGlmZi10cmVlIC0tc3RkaW4gb2Yga25vd24gdHJlZXMuJyBcCisgICAgJ2VjaG8gJHRyZWVfQSAkdHJlZV9CIHwgZ2l0IGRpZmYtdHJlZSAtciAtLXN0ZGluID4gLnRlc3QtYSAmJgorICAgICBlY2hvICR0cmVlX0EgJHRyZWVfQiA+IC50ZXN0LXJlY3Vyc2l2ZS1BQnggJiYKKyAgICAgY2F0IC50ZXN0LXJlY3Vyc2l2ZS1BQiA+PiAudGVzdC1yZWN1cnNpdmUtQUJ4ICYmCisgICAgIGNtcCAtcyAudGVzdC1hIC50ZXN0LXJlY3Vyc2l2ZS1BQngnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdkaWZmLWNhY2hlIE8gd2l0aCBBIGluIGNhY2hlJyBcCiAgICAgJ2dpdCByZWFkLXRyZWUgJHRyZWVfQSAmJgogICAgICBnaXQgZGlmZi1pbmRleCAtLWNhY2hlZCAkdHJlZV9PID4udGVzdC1hICYmCmRpZmYgLS1naXQgYS90L3Q0MDAzLWRpZmYtcmVuYW1lLTEuc2ggYi90L3Q0MDAzLWRpZmYtcmVuYW1lLTEuc2gKaW5kZXggOGIxZjg3NS4uYzYxMzBjNCAxMDA3NTUKLS0tIGEvdC90NDAwMy1kaWZmLXJlbmFtZS0xLnNoCisrKyBiL3QvdDQwMDMtZGlmZi1yZW5hbWUtMS5zaApAQCAtNywxMSArNywxMSBAQAogCiAnCiAuIC4vdGVzdC1saWIuc2gKLS4gLi4vZGlmZi1saWIuc2ggOyMgdGVzdC1saWIgY2hkaXIncyBpbnRvIHRyYXNoCisuICIkVEVTVF9ESVJFQ1RPUlkiL2RpZmYtbGliLnNoIDsjIHRlc3QtbGliIGNoZGlyJ3MgaW50byB0cmFzaAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAncHJlcGFyZSByZWZlcmVuY2UgdHJlZScgXAotICAgICdjYXQgLi4vLi4vQ09QWUlORyA+Q09QWUlORyAmJgorICAgICdjYXQgIiRURVNUX0RJUkVDVE9SWSIvLi4vQ09QWUlORyA+Q09QWUlORyAmJgogICAgICBlY2hvIGZyb3R6ID5yZXpyb3YgJiYKICAgICBnaXQgdXBkYXRlLWluZGV4IC0tYWRkIENPUFlJTkcgcmV6cm92ICYmCiAgICAgdHJlZT0kKGdpdCB3cml0ZS10cmVlKSAmJgpAQCAtOTksNyArOTksNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAncHJlcGFyZSB3b3JrIHRyZWUgb25jZSBhZ2FpbicgXAotICAgICdjYXQgLi4vLi4vQ09QWUlORyA+Q09QWUlORyAmJgorICAgICdjYXQgIiRURVNUX0RJUkVDVE9SWSIvLi4vQ09QWUlORyA+Q09QWUlORyAmJgogICAgICBnaXQgdXBkYXRlLWluZGV4IC0tYWRkIC0tcmVtb3ZlIENPUFlJTkcgQ09QWUlORy4xJwogCiAjIHRyZWUgaGFzIENPUFlJTkcgYW5kIHJlenJvdi4gIHdvcmsgdHJlZSBoYXMgQ09QWUlORyBhbmQgQ09QWUlORy4xLApkaWZmIC0tZ2l0IGEvdC90NDAwNC1kaWZmLXJlbmFtZS1zeW1saW5rLnNoIGIvdC90NDAwNC1kaWZmLXJlbmFtZS1zeW1saW5rLnNoCmluZGV4IDNkMjViZTcuLmIzNWFmOWIgMTAwNzU1Ci0tLSBhL3QvdDQwMDQtZGlmZi1yZW5hbWUtc3ltbGluay5zaAorKysgYi90L3Q0MDA0LWRpZmYtcmVuYW1lLXN5bWxpbmsuc2gKQEAgLTEwLDcgKzEwLDcgQEAKIGJ5IGFuIGVkaXQgZm9yIHRoZW0uCiAnCiAuIC4vdGVzdC1saWIuc2gKLS4gLi4vZGlmZi1saWIuc2gKKy4gIiRURVNUX0RJUkVDVE9SWSIvZGlmZi1saWIuc2gKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ3ByZXBhcmUgcmVmZXJlbmNlIHRyZWUnIFwKZGlmZiAtLWdpdCBhL3QvdDQwMDUtZGlmZi1yZW5hbWUtMi5zaCBiL3QvdDQwMDUtZGlmZi1yZW5hbWUtMi5zaAppbmRleCA2NjMwMDE3Li4xYmEzNTlkIDEwMDc1NQotLS0gYS90L3Q0MDA1LWRpZmYtcmVuYW1lLTIuc2gKKysrIGIvdC90NDAwNS1kaWZmLXJlbmFtZS0yLnNoCkBAIC03LDExICs3LDExIEBACiAKICcKIC4gLi90ZXN0LWxpYi5zaAotLiAuLi9kaWZmLWxpYi5zaCA7IyB0ZXN0LWxpYiBjaGRpcidzIGludG8gdHJhc2gKKy4gIiRURVNUX0RJUkVDVE9SWSIvZGlmZi1saWIuc2ggOyMgdGVzdC1saWIgY2hkaXIncyBpbnRvIHRyYXNoCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdwcmVwYXJlIHJlZmVyZW5jZSB0cmVlJyBcCi0gICAgJ2NhdCAuLi8uLi9DT1BZSU5HID5DT1BZSU5HICYmCisgICAgJ2NhdCAiJFRFU1RfRElSRUNUT1JZIi8uLi9DT1BZSU5HID5DT1BZSU5HICYmCiAgICAgIGVjaG8gZnJvdHogPnJlenJvdiAmJgogICAgIGdpdCB1cGRhdGUtaW5kZXggLS1hZGQgQ09QWUlORyByZXpyb3YgJiYKICAgICB0cmVlPSQoZ2l0IHdyaXRlLXRyZWUpICYmCkBAIC03MSw3ICs3MSw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdwcmVwYXJlIHdvcmsgdHJlZSBvbmNlIGFnYWluJyBcCi0gICAgJ2NhdCAuLi8uLi9DT1BZSU5HID5DT1BZSU5HICYmCisgICAgJ2NhdCAiJFRFU1RfRElSRUNUT1JZIi8uLi9DT1BZSU5HID5DT1BZSU5HICYmCiAgICAgIGdpdCB1cGRhdGUtaW5kZXggLS1hZGQgLS1yZW1vdmUgQ09QWUlORyBDT1BZSU5HLjEnCiAKIGdpdCBkaWZmLWluZGV4IC1DIC0tZmluZC1jb3BpZXMtaGFyZGVyICR0cmVlID5jdXJyZW50CmRpZmYgLS1naXQgYS90L3Q0MDA3LXJlbmFtZS0zLnNoIGIvdC90NDAwNy1yZW5hbWUtMy5zaAppbmRleCAxMDRhNGUxLi40MjA3MmQ3IDEwMDc1NQotLS0gYS90L3Q0MDA3LXJlbmFtZS0zLnNoCisrKyBiL3QvdDQwMDctcmVuYW1lLTMuc2gKQEAgLTcsMTIgKzcsMTIgQEAKIAogJwogLiAuL3Rlc3QtbGliLnNoCi0uIC4uL2RpZmYtbGliLnNoIDsjIHRlc3QtbGliIGNoZGlyJ3MgaW50byB0cmFzaAorLiAiJFRFU1RfRElSRUNUT1JZIi9kaWZmLWxpYi5zaCA7IyB0ZXN0LWxpYiBjaGRpcidzIGludG8gdHJhc2gKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ3ByZXBhcmUgcmVmZXJlbmNlIHRyZWUnIFwKICAgICAnbWtkaXIgcGF0aDAgcGF0aDEgJiYKLSAgICAgY3AgLi4vLi4vQ09QWUlORyBwYXRoMC9DT1BZSU5HICYmCisgICAgIGNwICIkVEVTVF9ESVJFQ1RPUlkiLy4uL0NPUFlJTkcgcGF0aDAvQ09QWUlORyAmJgogICAgICBnaXQgdXBkYXRlLWluZGV4IC0tYWRkIHBhdGgwL0NPUFlJTkcgJiYKICAgICB0cmVlPSQoZ2l0IHdyaXRlLXRyZWUpICYmCiAgICAgZWNobyAkdHJlZScKZGlmZiAtLWdpdCBhL3QvdDQwMDgtZGlmZi1icmVhay1yZXdyaXRlLnNoIGIvdC90NDAwOC1kaWZmLWJyZWFrLXJld3JpdGUuc2gKaW5kZXggMjZjMmU0YS4uN2UzNDNhOSAxMDA3NTUKLS0tIGEvdC90NDAwOC1kaWZmLWJyZWFrLXJld3JpdGUuc2gKKysrIGIvdC90NDAwOC1kaWZmLWJyZWFrLXJld3JpdGUuc2gKQEAgLTIyLDEyICsyMiwxMiBAQAogRnVydGhlciwgd2l0aCAtQiBhbmQgLU0gdG9nZXRoZXIsIHRoZXNlIHNob3VsZCB0dXJuIGludG8gdHdvIHJlbmFtZXMuCiAnCiAuIC4vdGVzdC1saWIuc2gKLS4gLi4vZGlmZi1saWIuc2ggOyMgdGVzdC1saWIgY2hkaXIncyBpbnRvIHRyYXNoCisuICIkVEVTVF9ESVJFQ1RPUlkiL2RpZmYtbGliLnNoIDsjIHRlc3QtbGliIGNoZGlyJ3MgaW50byB0cmFzaAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICBzZXR1cCBcCi0gICAgJ2NhdCAuLi8uLi9SRUFETUUgPmZpbGUwICYmCi0gICAgIGNhdCAuLi8uLi9DT1BZSU5HID5maWxlMSAmJgorICAgICdjYXQgIiRURVNUX0RJUkVDVE9SWSIvLi4vUkVBRE1FID5maWxlMCAmJgorICAgICBjYXQgIiRURVNUX0RJUkVDVE9SWSIvLi4vQ09QWUlORyA+ZmlsZTEgJiYKICAgICBnaXQgdXBkYXRlLWluZGV4IC0tYWRkIGZpbGUwIGZpbGUxICYmCiAgICAgdHJlZT0kKGdpdCB3cml0ZS10cmVlKSAmJgogICAgIGVjaG8gIiR0cmVlIicKZGlmZiAtLWdpdCBhL3QvdDQwMDktZGlmZi1yZW5hbWUtNC5zaCBiL3QvdDQwMDktZGlmZi1yZW5hbWUtNC5zaAppbmRleCBkMmI0NWU3Li5kZTNmMTc0IDEwMDc1NQotLS0gYS90L3Q0MDA5LWRpZmYtcmVuYW1lLTQuc2gKKysrIGIvdC90NDAwOS1kaWZmLXJlbmFtZS00LnNoCkBAIC03LDExICs3LDExIEBACiAKICcKIC4gLi90ZXN0LWxpYi5zaAotLiAuLi9kaWZmLWxpYi5zaCA7IyB0ZXN0LWxpYiBjaGRpcidzIGludG8gdHJhc2gKKy4gIiRURVNUX0RJUkVDVE9SWSIvZGlmZi1saWIuc2ggOyMgdGVzdC1saWIgY2hkaXIncyBpbnRvIHRyYXNoCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdwcmVwYXJlIHJlZmVyZW5jZSB0cmVlJyBcCi0gICAgJ2NhdCAuLi8uLi9DT1BZSU5HID5DT1BZSU5HICYmCisgICAgJ2NhdCAiJFRFU1RfRElSRUNUT1JZIi8uLi9DT1BZSU5HID5DT1BZSU5HICYmCiAgICAgIGVjaG8gZnJvdHogPnJlenJvdiAmJgogICAgIGdpdCB1cGRhdGUtaW5kZXggLS1hZGQgQ09QWUlORyByZXpyb3YgJiYKICAgICB0cmVlPSQoZ2l0IHdyaXRlLXRyZWUpICYmCkBAIC03OCw3ICs3OCw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdwcmVwYXJlIHdvcmsgdHJlZSBvbmNlIGFnYWluJyBcCi0gICAgJ2NhdCAuLi8uLi9DT1BZSU5HID5DT1BZSU5HICYmCisgICAgJ2NhdCAiJFRFU1RfRElSRUNUT1JZIi8uLi9DT1BZSU5HID5DT1BZSU5HICYmCiAgICAgIGdpdCB1cGRhdGUtaW5kZXggLS1hZGQgLS1yZW1vdmUgQ09QWUlORyBDT1BZSU5HLjEnCiAKIGdpdCBkaWZmLWluZGV4IC16IC1DIC0tZmluZC1jb3BpZXMtaGFyZGVyICR0cmVlID5jdXJyZW50CmRpZmYgLS1naXQgYS90L3Q0MDEwLWRpZmYtcGF0aHNwZWMuc2ggYi90L3Q0MDEwLWRpZmYtcGF0aHNwZWMuc2gKaW5kZXggYWQzZDllNC4uOTMyMjI5OCAxMDA3NTUKLS0tIGEvdC90NDAxMC1kaWZmLXBhdGhzcGVjLnNoCisrKyBiL3QvdDQwMTAtZGlmZi1wYXRoc3BlYy5zaApAQCAtMTAsNyArMTAsNyBAQAogICAgICAgICBwYXRoMS9maWxlMQogJwogLiAuL3Rlc3QtbGliLnNoCi0uIC4uL2RpZmYtbGliLnNoIDsjIHRlc3QtbGliIGNoZGlyJ3MgaW50byB0cmFzaAorLiAiJFRFU1RfRElSRUNUT1JZIi9kaWZmLWxpYi5zaCA7IyB0ZXN0LWxpYiBjaGRpcidzIGludG8gdHJhc2gKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgc2V0dXAgXApkaWZmIC0tZ2l0IGEvdC90NDAxMS1kaWZmLXN5bWxpbmsuc2ggYi90L3Q0MDExLWRpZmYtc3ltbGluay5zaAppbmRleCBjNmQxMzY5Li4wMmVmZWNhIDEwMDc1NQotLS0gYS90L3Q0MDExLWRpZmYtc3ltbGluay5zaAorKysgYi90L3Q0MDExLWRpZmYtc3ltbGluay5zaApAQCAtNyw3ICs3LDcgQEAKIAogJwogLiAuL3Rlc3QtbGliLnNoCi0uIC4uL2RpZmYtbGliLnNoCisuICIkVEVTVF9ESVJFQ1RPUlkiL2RpZmYtbGliLnNoCiAKIGNhdCA+IGV4cGVjdGVkIDw8IEVPRgogZGlmZiAtLWdpdCBhL2Zyb3R6IGIvZnJvdHoKZGlmZiAtLWdpdCBhL3QvdDQwMTItZGlmZi1iaW5hcnkuc2ggYi90L3Q0MDEyLWRpZmYtYmluYXJ5LnNoCmluZGV4IGVhYzEyNzEuLjNjZjViNWMgMTAwNzU1Ci0tLSBhL3QvdDQwMTItZGlmZi1iaW5hcnkuc2gKKysrIGIvdC90NDAxMi1kaWZmLWJpbmFyeS5zaApAQCAtMTIsNyArMTIsNyBAQAogCSdlY2hvIEFJVCA+YSAmJiBlY2hvIEJJVCA+YiAmJiBlY2hvIENJVCA+YyAmJiBlY2hvIERJVCA+ZCAmJgogCSBnaXQgdXBkYXRlLWluZGV4IC0tYWRkIGEgYiBjIGQgJiYKIAkgZWNobyBnaXQgPmEgJiYKLQkgY2F0IC4uL3Rlc3Q0MDEyLnBuZyA+YiAmJgorCSBjYXQgIiRURVNUX0RJUkVDVE9SWSIvdGVzdDQwMTIucG5nID5iICYmCiAJIGVjaG8gZ2l0ID5jICYmCiAJIGNhdCBiIGIgPmQnCiAKQEAgLTI1LDExICsyNSwxMSBAQAogRU9GCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdkaWZmIHdpdGhvdXQgLS1iaW5hcnknIFwKIAknZ2l0IGRpZmYgfCBnaXQgYXBwbHkgLS1zdGF0IC0tc3VtbWFyeSA+Y3VycmVudCAmJgotCSBjbXAgY3VycmVudCBleHBlY3RlZCcKKwkgdGVzdF9jbXAgZXhwZWN0ZWQgY3VycmVudCcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZGlmZiB3aXRoIC0tYmluYXJ5JyBcCiAJJ2dpdCBkaWZmIC0tYmluYXJ5IHwgZ2l0IGFwcGx5IC0tc3RhdCAtLXN1bW1hcnkgPmN1cnJlbnQgJiYKLQkgY21wIGN1cnJlbnQgZXhwZWN0ZWQnCisJIHRlc3RfY21wIGV4cGVjdGVkIGN1cnJlbnQnCiAKICMgYXBwbHkgbmVlZHMgdG8gYmUgYWJsZSB0byBza2lwIHRoZSBiaW5hcnkgbWF0ZXJpYWwgY29ycmVjdGx5CiAjIGluIG9yZGVyIHRvIHJlcG9ydCB0aGUgbGluZSBudW1iZXIgb2YgYSBjb3JydXB0IHBhdGNoLgpkaWZmIC0tZ2l0IGEvdC90NDAxMy1kaWZmLXZhcmlvdXMuc2ggYi90L3Q0MDEzLWRpZmYtdmFyaW91cy5zaAppbmRleCA5OWQ5ZTBiLi45YzcwOTAyIDEwMDc1NQotLS0gYS90L3Q0MDEzLWRpZmYtdmFyaW91cy5zaAorKysgYi90L3Q0MDEzLWRpZmYtdmFyaW91cy5zaApAQCAtNzQsNiArNzQsMTAgQEAKIAlmb3IgaSBpbiAxIDI7IGRvIGVjaG8gJGk7IGRvbmUgPj5kaXIvc3ViICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCBmaWxlMCBkaXIvc3ViICYmCiAKKwlta2RpciBkaXIzICYmCisJY3AgZGlyL3N1YiBkaXIzL3N1YiAmJgorCXRlc3QtY2htdGltZSArMSBkaXIzL3N1YiAmJgorCiAJZ2l0IGNvbmZpZyBsb2cuc2hvd3Jvb3QgZmFsc2UgJiYKIAlnaXQgY29tbWl0IC0tYW1lbmQgJiYKIAlnaXQgc2hvdy1icmFuY2gKQEAgLTk5LDcgKzEwMyw3IEBACiAJdGVzdD1gZWNobyAiJGNtZCIgfCBzZWQgLWUgJ3N8Wy8gXVsvIF0qfF98ZydgCiAJY250PWBleHByICR0ZXN0X2NvdW50ICsgMWAKIAlwZng9YHByaW50ZiAiJTA0ZCIgJGNudGAKLQlleHBlY3Q9Ii4uL3Q0MDEzL2RpZmYuJHRlc3QiCisJZXhwZWN0PSIkVEVTVF9ESVJFQ1RPUlkvdDQwMTMvZGlmZi4kdGVzdCIKIAlhY3R1YWw9IiRwZngtZGlmZi4kdGVzdCIKIAogCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgImdpdCAkY21kIiAnCkBAIC0yMzYsMTIgKzI0MCwxNSBAQAogZm9ybWF0LXBhdGNoIC0tc3Rkb3V0IGluaXRpYWwuLnNpZGUKIGZvcm1hdC1wYXRjaCAtLXN0ZG91dCBpbml0aWFsLi5tYXN0ZXJeCiBmb3JtYXQtcGF0Y2ggLS1zdGRvdXQgaW5pdGlhbC4ubWFzdGVyCitmb3JtYXQtcGF0Y2ggLS1zdGRvdXQgLS1uby1udW1iZXJlZCBpbml0aWFsLi5tYXN0ZXIKK2Zvcm1hdC1wYXRjaCAtLXN0ZG91dCAtLW51bWJlcmVkIGluaXRpYWwuLm1hc3RlcgogZm9ybWF0LXBhdGNoIC0tYXR0YWNoIC0tc3Rkb3V0IGluaXRpYWwuLnNpZGUKIGZvcm1hdC1wYXRjaCAtLWF0dGFjaCAtLXN0ZG91dCBpbml0aWFsLi5tYXN0ZXJeCiBmb3JtYXQtcGF0Y2ggLS1hdHRhY2ggLS1zdGRvdXQgaW5pdGlhbC4ubWFzdGVyCiBmb3JtYXQtcGF0Y2ggLS1pbmxpbmUgLS1zdGRvdXQgaW5pdGlhbC4uc2lkZQogZm9ybWF0LXBhdGNoIC0taW5saW5lIC0tc3Rkb3V0IGluaXRpYWwuLm1hc3Rlcl4KIGZvcm1hdC1wYXRjaCAtLWlubGluZSAtLXN0ZG91dCBpbml0aWFsLi5tYXN0ZXIKK2Zvcm1hdC1wYXRjaCAtLWlubGluZSAtLXN0ZG91dCBpbml0aWFsLi5tYXN0ZXIKIGZvcm1hdC1wYXRjaCAtLWlubGluZSAtLXN0ZG91dCAtLXN1YmplY3QtcHJlZml4PVRFU1RDQVNFIGluaXRpYWwuLm1hc3RlcgogY29uZmlnIGZvcm1hdC5zdWJqZWN0cHJlZml4IERJRkZFUkVOVF9QUkVGSVgKIGZvcm1hdC1wYXRjaCAtLWlubGluZSAtLXN0ZG91dCBpbml0aWFsLi5tYXN0ZXJeXgpAQCAtMjU4LDYgKzI2NSw4IEBACiBkaWZmIC0tcGF0Y2gtd2l0aC1yYXcgLXIgaW5pdGlhbC4uc2lkZQogZGlmZiAtLW5hbWUtc3RhdHVzIGRpcjIgZGlyCiBkaWZmIC0tbm8taW5kZXggLS1uYW1lLXN0YXR1cyBkaXIyIGRpcgorZGlmZiAtLW5vLWluZGV4IC0tbmFtZS1zdGF0dXMgLS0gZGlyMiBkaXIKK2RpZmYgLS1uby1pbmRleCBkaXIgZGlyMwogZGlmZiBtYXN0ZXIgbWFzdGVyXiBzaWRlCiBFT0YKIApkaWZmIC0tZ2l0IGEvdC90NDAxMy9kaWZmLmRpZmZfLS1uby1pbmRleF8tLW5hbWUtc3RhdHVzXy0tX2RpcjJfZGlyIGIvdC90NDAxMy9kaWZmLmRpZmZfLS1uby1pbmRleF8tLW5hbWUtc3RhdHVzXy0tX2RpcjJfZGlyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3NTZmOGQKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MDEzL2RpZmYuZGlmZl8tLW5vLWluZGV4Xy0tbmFtZS1zdGF0dXNfLS1fZGlyMl9kaXIKQEAgLTAsMCArMSwzIEBACiskIGdpdCBkaWZmIC0tbm8taW5kZXggLS1uYW1lLXN0YXR1cyAtLSBkaXIyIGRpcgorQQlkaXIvc3ViCiskCmRpZmYgLS1naXQgYS90L3Q0MDEzL2RpZmYuZGlmZl8tLW5vLWluZGV4X2Rpcl9kaXIzIGIvdC90NDAxMy9kaWZmLmRpZmZfLS1uby1pbmRleF9kaXJfZGlyMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTQyYzJiCi0tLSAvZGV2L251bGwKKysrIGIvdC90NDAxMy9kaWZmLmRpZmZfLS1uby1pbmRleF9kaXJfZGlyMwpAQCAtMCwwICsxLDIgQEAKKyQgZ2l0IGRpZmYgLS1uby1pbmRleCBkaXIgZGlyMworJApkaWZmIC0tZ2l0IGEvdC90NDAxMy9kaWZmLmZvcm1hdC1wYXRjaF8tLWF0dGFjaF8tLXN0ZG91dF9pbml0aWFsLi5tYXN0ZXIgYi90L3Q0MDEzL2RpZmYuZm9ybWF0LXBhdGNoXy0tYXR0YWNoXy0tc3Rkb3V0X2luaXRpYWwuLm1hc3RlcgppbmRleCA0MzM0NmI5Li5lNWFiNzQ0IDEwMDY0NAotLS0gYS90L3Q0MDEzL2RpZmYuZm9ybWF0LXBhdGNoXy0tYXR0YWNoXy0tc3Rkb3V0X2luaXRpYWwuLm1hc3RlcgorKysgYi90L3Q0MDEzL2RpZmYuZm9ybWF0LXBhdGNoXy0tYXR0YWNoXy0tc3Rkb3V0X2luaXRpYWwuLm1hc3RlcgpAQCAtMiw3ICsyLDcgQEAKIEZyb20gMWJkZTRhZTVmMzZjOGQ5YWJlM2EwZmNlMGM2YWFiM2M0YTEyZmU0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CiBEYXRlOiBNb24sIDI2IEp1biAyMDA2IDAwOjAxOjAwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFNlY29uZAorU3ViamVjdDogW1BBVENIIDEvM10gU2Vjb25kCiBNSU1FLVZlcnNpb246IDEuMAogQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PSItLS0tLS0tLS0tLS1nLWktdC0tdi1lLXItcy1pLW8tbiIKIApAQCAtNjMsNyArNjMsNyBAQAogRnJvbSA5YTZkNDk0OWI2Yjc2OTU2ZDlkNWUyNmYyNzkxZWMyY2VmZjVmZGMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KIERhdGU6IE1vbiwgMjYgSnVuIDIwMDYgMDA6MDI6MDAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gVGhpcmQKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIFRoaXJkCiBNSU1FLVZlcnNpb246IDEuMAogQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PSItLS0tLS0tLS0tLS1nLWktdC0tdi1lLXItcy1pLW8tbiIKIApAQCAtMTExLDcgKzExMSw3IEBACiBGcm9tIGM3YTJhYjllOGVhYzdiMTE3NDQyYTYwN2Q1YTliMzk1MGFlMzRkNWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPgogRGF0ZTogTW9uLCAyNiBKdW4gMjAwNiAwMDowMzowMCArMDAwMAotU3ViamVjdDogW1BBVENIXSBTaWRlCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBTaWRlCiBNSU1FLVZlcnNpb246IDEuMAogQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PSItLS0tLS0tLS0tLS1nLWktdC0tdi1lLXItcy1pLW8tbiIKIApkaWZmIC0tZ2l0IGEvdC90NDAxMy9kaWZmLmZvcm1hdC1wYXRjaF8tLWF0dGFjaF8tLXN0ZG91dF9pbml0aWFsLi5tYXN0ZXJeIGIvdC90NDAxMy9kaWZmLmZvcm1hdC1wYXRjaF8tLWF0dGFjaF8tLXN0ZG91dF9pbml0aWFsLi5tYXN0ZXJeCmluZGV4IGQ3NDkwYTkuLjJjNzFkMjAgMTAwNjQ0Ci0tLSBhL3QvdDQwMTMvZGlmZi5mb3JtYXQtcGF0Y2hfLS1hdHRhY2hfLS1zdGRvdXRfaW5pdGlhbC4ubWFzdGVyXgorKysgYi90L3Q0MDEzL2RpZmYuZm9ybWF0LXBhdGNoXy0tYXR0YWNoXy0tc3Rkb3V0X2luaXRpYWwuLm1hc3Rlcl4KQEAgLTIsNyArMiw3IEBACiBGcm9tIDFiZGU0YWU1ZjM2YzhkOWFiZTNhMGZjZTBjNmFhYjNjNGExMmZlNDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPgogRGF0ZTogTW9uLCAyNiBKdW4gMjAwNiAwMDowMTowMCArMDAwMAotU3ViamVjdDogW1BBVENIXSBTZWNvbmQKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIFNlY29uZAogTUlNRS1WZXJzaW9uOiAxLjAKIENvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkOyBib3VuZGFyeT0iLS0tLS0tLS0tLS0tZy1pLXQtLXYtZS1yLXMtaS1vLW4iCiAKQEAgLTYzLDcgKzYzLDcgQEAKIEZyb20gOWE2ZDQ5NDliNmI3Njk1NmQ5ZDVlMjZmMjc5MWVjMmNlZmY1ZmRjMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CiBEYXRlOiBNb24sIDI2IEp1biAyMDA2IDAwOjAyOjAwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFRoaXJkCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBUaGlyZAogTUlNRS1WZXJzaW9uOiAxLjAKIENvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkOyBib3VuZGFyeT0iLS0tLS0tLS0tLS0tZy1pLXQtLXYtZS1yLXMtaS1vLW4iCiAKZGlmZiAtLWdpdCBhL3QvdDQwMTMvZGlmZi5mb3JtYXQtcGF0Y2hfLS1pbmxpbmVfLS1zdGRvdXRfLS1zdWJqZWN0LXByZWZpeD1URVNUQ0FTRV9pbml0aWFsLi5tYXN0ZXIgYi90L3Q0MDEzL2RpZmYuZm9ybWF0LXBhdGNoXy0taW5saW5lXy0tc3Rkb3V0Xy0tc3ViamVjdC1wcmVmaXg9VEVTVENBU0VfaW5pdGlhbC4ubWFzdGVyCmluZGV4IGZjYTVjY2UuLjU4ZjhhN2IgMTAwNjQ0Ci0tLSBhL3QvdDQwMTMvZGlmZi5mb3JtYXQtcGF0Y2hfLS1pbmxpbmVfLS1zdGRvdXRfLS1zdWJqZWN0LXByZWZpeD1URVNUQ0FTRV9pbml0aWFsLi5tYXN0ZXIKKysrIGIvdC90NDAxMy9kaWZmLmZvcm1hdC1wYXRjaF8tLWlubGluZV8tLXN0ZG91dF8tLXN1YmplY3QtcHJlZml4PVRFU1RDQVNFX2luaXRpYWwuLm1hc3RlcgpAQCAtMiw3ICsyLDcgQEAKIEZyb20gMWJkZTRhZTVmMzZjOGQ5YWJlM2EwZmNlMGM2YWFiM2M0YTEyZmU0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CiBEYXRlOiBNb24sIDI2IEp1biAyMDA2IDAwOjAxOjAwICswMDAwCi1TdWJqZWN0OiBbVEVTVENBU0VdIFNlY29uZAorU3ViamVjdDogW1RFU1RDQVNFIDEvM10gU2Vjb25kCiBNSU1FLVZlcnNpb246IDEuMAogQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PSItLS0tLS0tLS0tLS1nLWktdC0tdi1lLXItcy1pLW8tbiIKIApAQCAtNjMsNyArNjMsNyBAQAogRnJvbSA5YTZkNDk0OWI2Yjc2OTU2ZDlkNWUyNmYyNzkxZWMyY2VmZjVmZGMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KIERhdGU6IE1vbiwgMjYgSnVuIDIwMDYgMDA6MDI6MDAgKzAwMDAKLVN1YmplY3Q6IFtURVNUQ0FTRV0gVGhpcmQKK1N1YmplY3Q6IFtURVNUQ0FTRSAyLzNdIFRoaXJkCiBNSU1FLVZlcnNpb246IDEuMAogQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PSItLS0tLS0tLS0tLS1nLWktdC0tdi1lLXItcy1pLW8tbiIKIApAQCAtMTExLDcgKzExMSw3IEBACiBGcm9tIGM3YTJhYjllOGVhYzdiMTE3NDQyYTYwN2Q1YTliMzk1MGFlMzRkNWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPgogRGF0ZTogTW9uLCAyNiBKdW4gMjAwNiAwMDowMzowMCArMDAwMAotU3ViamVjdDogW1RFU1RDQVNFXSBTaWRlCitTdWJqZWN0OiBbVEVTVENBU0UgMy8zXSBTaWRlCiBNSU1FLVZlcnNpb246IDEuMAogQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PSItLS0tLS0tLS0tLS1nLWktdC0tdi1lLXItcy1pLW8tbiIKIApkaWZmIC0tZ2l0IGEvdC90NDAxMy9kaWZmLmZvcm1hdC1wYXRjaF8tLWlubGluZV8tLXN0ZG91dF9pbml0aWFsLi5tYXN0ZXIgYi90L3Q0MDEzL2RpZmYuZm9ybWF0LXBhdGNoXy0taW5saW5lXy0tc3Rkb3V0X2luaXRpYWwuLm1hc3RlcgppbmRleCA2ZDZmYWMzLi45ZTdiYmRmIDEwMDY0NAotLS0gYS90L3Q0MDEzL2RpZmYuZm9ybWF0LXBhdGNoXy0taW5saW5lXy0tc3Rkb3V0X2luaXRpYWwuLm1hc3RlcgorKysgYi90L3Q0MDEzL2RpZmYuZm9ybWF0LXBhdGNoXy0taW5saW5lXy0tc3Rkb3V0X2luaXRpYWwuLm1hc3RlcgpAQCAtMiw3ICsyLDcgQEAKIEZyb20gMWJkZTRhZTVmMzZjOGQ5YWJlM2EwZmNlMGM2YWFiM2M0YTEyZmU0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CiBEYXRlOiBNb24sIDI2IEp1biAyMDA2IDAwOjAxOjAwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFNlY29uZAorU3ViamVjdDogW1BBVENIIDEvM10gU2Vjb25kCiBNSU1FLVZlcnNpb246IDEuMAogQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PSItLS0tLS0tLS0tLS1nLWktdC0tdi1lLXItcy1pLW8tbiIKIApAQCAtNjMsNyArNjMsNyBAQAogRnJvbSA5YTZkNDk0OWI2Yjc2OTU2ZDlkNWUyNmYyNzkxZWMyY2VmZjVmZGMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KIERhdGU6IE1vbiwgMjYgSnVuIDIwMDYgMDA6MDI6MDAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gVGhpcmQKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIFRoaXJkCiBNSU1FLVZlcnNpb246IDEuMAogQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PSItLS0tLS0tLS0tLS1nLWktdC0tdi1lLXItcy1pLW8tbiIKIApAQCAtMTExLDcgKzExMSw3IEBACiBGcm9tIGM3YTJhYjllOGVhYzdiMTE3NDQyYTYwN2Q1YTliMzk1MGFlMzRkNWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPgogRGF0ZTogTW9uLCAyNiBKdW4gMjAwNiAwMDowMzowMCArMDAwMAotU3ViamVjdDogW1BBVENIXSBTaWRlCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBTaWRlCiBNSU1FLVZlcnNpb246IDEuMAogQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PSItLS0tLS0tLS0tLS1nLWktdC0tdi1lLXItcy1pLW8tbiIKIApkaWZmIC0tZ2l0IGEvdC90NDAxMy9kaWZmLmZvcm1hdC1wYXRjaF8tLWlubGluZV8tLXN0ZG91dF9pbml0aWFsLi5tYXN0ZXJeIGIvdC90NDAxMy9kaWZmLmZvcm1hdC1wYXRjaF8tLWlubGluZV8tLXN0ZG91dF9pbml0aWFsLi5tYXN0ZXJeCmluZGV4IDE4YTExMTAuLmY4ODFmNjQgMTAwNjQ0Ci0tLSBhL3QvdDQwMTMvZGlmZi5mb3JtYXQtcGF0Y2hfLS1pbmxpbmVfLS1zdGRvdXRfaW5pdGlhbC4ubWFzdGVyXgorKysgYi90L3Q0MDEzL2RpZmYuZm9ybWF0LXBhdGNoXy0taW5saW5lXy0tc3Rkb3V0X2luaXRpYWwuLm1hc3Rlcl4KQEAgLTIsNyArMiw3IEBACiBGcm9tIDFiZGU0YWU1ZjM2YzhkOWFiZTNhMGZjZTBjNmFhYjNjNGExMmZlNDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPgogRGF0ZTogTW9uLCAyNiBKdW4gMjAwNiAwMDowMTowMCArMDAwMAotU3ViamVjdDogW1BBVENIXSBTZWNvbmQKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIFNlY29uZAogTUlNRS1WZXJzaW9uOiAxLjAKIENvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkOyBib3VuZGFyeT0iLS0tLS0tLS0tLS0tZy1pLXQtLXYtZS1yLXMtaS1vLW4iCiAKQEAgLTYzLDcgKzYzLDcgQEAKIEZyb20gOWE2ZDQ5NDliNmI3Njk1NmQ5ZDVlMjZmMjc5MWVjMmNlZmY1ZmRjMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CiBEYXRlOiBNb24sIDI2IEp1biAyMDA2IDAwOjAyOjAwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFRoaXJkCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBUaGlyZAogTUlNRS1WZXJzaW9uOiAxLjAKIENvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkOyBib3VuZGFyeT0iLS0tLS0tLS0tLS0tZy1pLXQtLXYtZS1yLXMtaS1vLW4iCiAKZGlmZiAtLWdpdCBhL3QvdDQwMTMvZGlmZi5mb3JtYXQtcGF0Y2hfLS1zdGRvdXRfLS1uby1udW1iZXJlZF9pbml0aWFsLi5tYXN0ZXIgYi90L3Q0MDEzL2RpZmYuZm9ybWF0LXBhdGNoXy0tc3Rkb3V0Xy0tbm8tbnVtYmVyZWRfaW5pdGlhbC4ubWFzdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3NzUyZWIKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MDEzL2RpZmYuZm9ybWF0LXBhdGNoXy0tc3Rkb3V0Xy0tbm8tbnVtYmVyZWRfaW5pdGlhbC4ubWFzdGVyCkBAIC0wLDAgKzEsMTI3IEBACiskIGdpdCBmb3JtYXQtcGF0Y2ggLS1zdGRvdXQgLS1uby1udW1iZXJlZCBpbml0aWFsLi5tYXN0ZXIKK0Zyb20gMWJkZTRhZTVmMzZjOGQ5YWJlM2EwZmNlMGM2YWFiM2M0YTEyZmU0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CitEYXRlOiBNb24sIDI2IEp1biAyMDA2IDAwOjAxOjAwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFNlY29uZAorCitUaGlzIGlzIHRoZSBzZWNvbmQgY29tbWl0LgorLS0tCisgZGlyL3N1YiB8ICAgIDIgKysKKyBmaWxlMCAgIHwgICAgMyArKysKKyBmaWxlMiAgIHwgICAgMyAtLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKyBkZWxldGUgbW9kZSAxMDA2NDQgZmlsZTIKKworZGlmZiAtLWdpdCBhL2Rpci9zdWIgYi9kaXIvc3ViCitpbmRleCAzNWQyNDJiLi44NDIyZDQwIDEwMDY0NAorLS0tIGEvZGlyL3N1YgorKysrIGIvZGlyL3N1YgorQEAgLTEsMiArMSw0IEBACisgQQorIEIKKytDCisrRAorZGlmZiAtLWdpdCBhL2ZpbGUwIGIvZmlsZTAKK2luZGV4IDAxZTc5YzMuLmI0MTQxMDggMTAwNjQ0CistLS0gYS9maWxlMAorKysrIGIvZmlsZTAKK0BAIC0xLDMgKzEsNiBAQAorIDEKKyAyCisgMworKzQKKys1CisrNgorZGlmZiAtLWdpdCBhL2ZpbGUyIGIvZmlsZTIKK2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDFlNzljMy4uMDAwMDAwMAorLS0tIGEvZmlsZTIKKysrKyAvZGV2L251bGwKK0BAIC0xLDMgKzAsMCBAQAorLTEKKy0yCistMworLS0gCitnLWktdC0tdi1lLXItcy1pLW8tbgorCisKK0Zyb20gOWE2ZDQ5NDliNmI3Njk1NmQ5ZDVlMjZmMjc5MWVjMmNlZmY1ZmRjMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CitEYXRlOiBNb24sIDI2IEp1biAyMDA2IDAwOjAyOjAwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFRoaXJkCisKKy0tLQorIGRpci9zdWIgfCAgICAyICsrCisgZmlsZTEgICB8ICAgIDMgKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGZpbGUxCisKK2RpZmYgLS1naXQgYS9kaXIvc3ViIGIvZGlyL3N1YgoraW5kZXggODQyMmQ0MC4uY2VhZDMyZSAxMDA2NDQKKy0tLSBhL2Rpci9zdWIKKysrKyBiL2Rpci9zdWIKK0BAIC0yLDMgKzIsNSBAQCBBCisgQgorIEMKKyBECisrRQorK0YKK2RpZmYgLS1naXQgYS9maWxlMSBiL2ZpbGUxCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uYjFlNjcyMgorLS0tIC9kZXYvbnVsbAorKysrIGIvZmlsZTEKK0BAIC0wLDAgKzEsMyBAQAorK0EKKytCCisrQworLS0gCitnLWktdC0tdi1lLXItcy1pLW8tbgorCisKK0Zyb20gYzdhMmFiOWU4ZWFjN2IxMTc0NDJhNjA3ZDVhOWIzOTUwYWUzNGQ1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CitEYXRlOiBNb24sIDI2IEp1biAyMDA2IDAwOjAzOjAwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFNpZGUKKworLS0tCisgZGlyL3N1YiB8ICAgIDIgKysKKyBmaWxlMCAgIHwgICAgMyArKysKKyBmaWxlMyAgIHwgICAgNCArKysrCisgMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGZpbGUzCisKK2RpZmYgLS1naXQgYS9kaXIvc3ViIGIvZGlyL3N1YgoraW5kZXggMzVkMjQyYi4uNzI4OWUzNSAxMDA2NDQKKy0tLSBhL2Rpci9zdWIKKysrKyBiL2Rpci9zdWIKK0BAIC0xLDIgKzEsNCBAQAorIEEKKyBCCisrMQorKzIKK2RpZmYgLS1naXQgYS9maWxlMCBiL2ZpbGUwCitpbmRleCAwMWU3OWMzLi5mNDYxNWRhIDEwMDY0NAorLS0tIGEvZmlsZTAKKysrKyBiL2ZpbGUwCitAQCAtMSwzICsxLDYgQEAKKyAxCisgMgorIDMKKytBCisrQgorK0MKK2RpZmYgLS1naXQgYS9maWxlMyBiL2ZpbGUzCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNzI4OWUzNQorLS0tIC9kZXYvbnVsbAorKysrIGIvZmlsZTMKK0BAIC0wLDAgKzEsNCBAQAorK0EKKytCCisrMQorKzIKKy0tIAorZy1pLXQtLXYtZS1yLXMtaS1vLW4KKworJApkaWZmIC0tZ2l0IGEvdC90NDAxMy9kaWZmLmZvcm1hdC1wYXRjaF8tLXN0ZG91dF8tLW51bWJlcmVkX2luaXRpYWwuLm1hc3RlciBiL3QvdDQwMTMvZGlmZi5mb3JtYXQtcGF0Y2hfLS1zdGRvdXRfLS1udW1iZXJlZF9pbml0aWFsLi5tYXN0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU2N2RiZgotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQwMTMvZGlmZi5mb3JtYXQtcGF0Y2hfLS1zdGRvdXRfLS1udW1iZXJlZF9pbml0aWFsLi5tYXN0ZXIKQEAgLTAsMCArMSwxMjcgQEAKKyQgZ2l0IGZvcm1hdC1wYXRjaCAtLXN0ZG91dCAtLW51bWJlcmVkIGluaXRpYWwuLm1hc3RlcgorRnJvbSAxYmRlNGFlNWYzNmM4ZDlhYmUzYTBmY2UwYzZhYWIzYzRhMTJmZTQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KK0RhdGU6IE1vbiwgMjYgSnVuIDIwMDYgMDA6MDE6MDAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzNdIFNlY29uZAorCitUaGlzIGlzIHRoZSBzZWNvbmQgY29tbWl0LgorLS0tCisgZGlyL3N1YiB8ICAgIDIgKysKKyBmaWxlMCAgIHwgICAgMyArKysKKyBmaWxlMiAgIHwgICAgMyAtLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKyBkZWxldGUgbW9kZSAxMDA2NDQgZmlsZTIKKworZGlmZiAtLWdpdCBhL2Rpci9zdWIgYi9kaXIvc3ViCitpbmRleCAzNWQyNDJiLi44NDIyZDQwIDEwMDY0NAorLS0tIGEvZGlyL3N1YgorKysrIGIvZGlyL3N1YgorQEAgLTEsMiArMSw0IEBACisgQQorIEIKKytDCisrRAorZGlmZiAtLWdpdCBhL2ZpbGUwIGIvZmlsZTAKK2luZGV4IDAxZTc5YzMuLmI0MTQxMDggMTAwNjQ0CistLS0gYS9maWxlMAorKysrIGIvZmlsZTAKK0BAIC0xLDMgKzEsNiBAQAorIDEKKyAyCisgMworKzQKKys1CisrNgorZGlmZiAtLWdpdCBhL2ZpbGUyIGIvZmlsZTIKK2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDFlNzljMy4uMDAwMDAwMAorLS0tIGEvZmlsZTIKKysrKyAvZGV2L251bGwKK0BAIC0xLDMgKzAsMCBAQAorLTEKKy0yCistMworLS0gCitnLWktdC0tdi1lLXItcy1pLW8tbgorCisKK0Zyb20gOWE2ZDQ5NDliNmI3Njk1NmQ5ZDVlMjZmMjc5MWVjMmNlZmY1ZmRjMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CitEYXRlOiBNb24sIDI2IEp1biAyMDA2IDAwOjAyOjAwICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBUaGlyZAorCistLS0KKyBkaXIvc3ViIHwgICAgMiArKworIGZpbGUxICAgfCAgICAzICsrKworIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBmaWxlMQorCitkaWZmIC0tZ2l0IGEvZGlyL3N1YiBiL2Rpci9zdWIKK2luZGV4IDg0MjJkNDAuLmNlYWQzMmUgMTAwNjQ0CistLS0gYS9kaXIvc3ViCisrKysgYi9kaXIvc3ViCitAQCAtMiwzICsyLDUgQEAgQQorIEIKKyBDCisgRAorK0UKKytGCitkaWZmIC0tZ2l0IGEvZmlsZTEgYi9maWxlMQorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmIxZTY3MjIKKy0tLSAvZGV2L251bGwKKysrKyBiL2ZpbGUxCitAQCAtMCwwICsxLDMgQEAKKytBCisrQgorK0MKKy0tIAorZy1pLXQtLXYtZS1yLXMtaS1vLW4KKworCitGcm9tIGM3YTJhYjllOGVhYzdiMTE3NDQyYTYwN2Q1YTliMzk1MGFlMzRkNWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPgorRGF0ZTogTW9uLCAyNiBKdW4gMjAwNiAwMDowMzowMCArMDAwMAorU3ViamVjdDogW1BBVENIIDMvM10gU2lkZQorCistLS0KKyBkaXIvc3ViIHwgICAgMiArKworIGZpbGUwICAgfCAgICAzICsrKworIGZpbGUzICAgfCAgICA0ICsrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZmlsZTMKKworZGlmZiAtLWdpdCBhL2Rpci9zdWIgYi9kaXIvc3ViCitpbmRleCAzNWQyNDJiLi43Mjg5ZTM1IDEwMDY0NAorLS0tIGEvZGlyL3N1YgorKysrIGIvZGlyL3N1YgorQEAgLTEsMiArMSw0IEBACisgQQorIEIKKysxCisrMgorZGlmZiAtLWdpdCBhL2ZpbGUwIGIvZmlsZTAKK2luZGV4IDAxZTc5YzMuLmY0NjE1ZGEgMTAwNjQ0CistLS0gYS9maWxlMAorKysrIGIvZmlsZTAKK0BAIC0xLDMgKzEsNiBAQAorIDEKKyAyCisgMworK0EKKytCCisrQworZGlmZiAtLWdpdCBhL2ZpbGUzIGIvZmlsZTMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi43Mjg5ZTM1CistLS0gL2Rldi9udWxsCisrKysgYi9maWxlMworQEAgLTAsMCArMSw0IEBACisrQQorK0IKKysxCisrMgorLS0gCitnLWktdC0tdi1lLXItcy1pLW8tbgorCiskCmRpZmYgLS1naXQgYS90L3Q0MDEzL2RpZmYuZm9ybWF0LXBhdGNoXy0tc3Rkb3V0X2luaXRpYWwuLm1hc3RlciBiL3QvdDQwMTMvZGlmZi5mb3JtYXQtcGF0Y2hfLS1zdGRvdXRfaW5pdGlhbC4ubWFzdGVyCmluZGV4IDhiODhjYTQuLjdiODk5NzggMTAwNjQ0Ci0tLSBhL3QvdDQwMTMvZGlmZi5mb3JtYXQtcGF0Y2hfLS1zdGRvdXRfaW5pdGlhbC4ubWFzdGVyCisrKyBiL3QvdDQwMTMvZGlmZi5mb3JtYXQtcGF0Y2hfLS1zdGRvdXRfaW5pdGlhbC4ubWFzdGVyCkBAIC0yLDcgKzIsNyBAQAogRnJvbSAxYmRlNGFlNWYzNmM4ZDlhYmUzYTBmY2UwYzZhYWIzYzRhMTJmZTQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KIERhdGU6IE1vbiwgMjYgSnVuIDIwMDYgMDA6MDE6MDAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gU2Vjb25kCitTdWJqZWN0OiBbUEFUQ0ggMS8zXSBTZWNvbmQKIAogVGhpcyBpcyB0aGUgc2Vjb25kIGNvbW1pdC4KIC0tLQpAQCAtNDgsNyArNDgsNyBAQAogRnJvbSA5YTZkNDk0OWI2Yjc2OTU2ZDlkNWUyNmYyNzkxZWMyY2VmZjVmZGMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KIERhdGU6IE1vbiwgMjYgSnVuIDIwMDYgMDA6MDI6MDAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gVGhpcmQKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIFRoaXJkCiAKIC0tLQogIGRpci9zdWIgfCAgICAyICsrCkBAIC04Miw3ICs4Miw3IEBACiBGcm9tIGM3YTJhYjllOGVhYzdiMTE3NDQyYTYwN2Q1YTliMzk1MGFlMzRkNWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPgogRGF0ZTogTW9uLCAyNiBKdW4gMjAwNiAwMDowMzowMCArMDAwMAotU3ViamVjdDogW1BBVENIXSBTaWRlCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBTaWRlCiAKIC0tLQogIGRpci9zdWIgfCAgICAyICsrCmRpZmYgLS1naXQgYS90L3Q0MDEzL2RpZmYuZm9ybWF0LXBhdGNoXy0tc3Rkb3V0X2luaXRpYWwuLm1hc3Rlcl4gYi90L3Q0MDEzL2RpZmYuZm9ybWF0LXBhdGNoXy0tc3Rkb3V0X2luaXRpYWwuLm1hc3Rlcl4KaW5kZXggNDdhNGI4OC4uYjdmOTcyNSAxMDA2NDQKLS0tIGEvdC90NDAxMy9kaWZmLmZvcm1hdC1wYXRjaF8tLXN0ZG91dF9pbml0aWFsLi5tYXN0ZXJeCisrKyBiL3QvdDQwMTMvZGlmZi5mb3JtYXQtcGF0Y2hfLS1zdGRvdXRfaW5pdGlhbC4ubWFzdGVyXgpAQCAtMiw3ICsyLDcgQEAKIEZyb20gMWJkZTRhZTVmMzZjOGQ5YWJlM2EwZmNlMGM2YWFiM2M0YTEyZmU0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CiBEYXRlOiBNb24sIDI2IEp1biAyMDA2IDAwOjAxOjAwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFNlY29uZAorU3ViamVjdDogW1BBVENIIDEvMl0gU2Vjb25kCiAKIFRoaXMgaXMgdGhlIHNlY29uZCBjb21taXQuCiAtLS0KQEAgLTQ4LDcgKzQ4LDcgQEAKIEZyb20gOWE2ZDQ5NDliNmI3Njk1NmQ5ZDVlMjZmMjc5MWVjMmNlZmY1ZmRjMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CiBEYXRlOiBNb24sIDI2IEp1biAyMDA2IDAwOjAyOjAwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFRoaXJkCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBUaGlyZAogCiAtLS0KICBkaXIvc3ViIHwgICAgMiArKwpkaWZmIC0tZ2l0IGEvdC90NDAxNC1mb3JtYXQtcGF0Y2guc2ggYi90L3Q0MDE0LWZvcm1hdC1wYXRjaC5zaAppbmRleCA3ZmU4NTNjLi5mMDQ1ODk4IDEwMDc1NQotLS0gYS90L3Q0MDE0LWZvcm1hdC1wYXRjaC5zaAorKysgYi90L3Q0MDE0LWZvcm1hdC1wYXRjaC5zaApAQCAtMyw3ICszLDcgQEAKICMgQ29weXJpZ2h0IChjKSAyMDA2IEp1bmlvIEMgSGFtYW5vCiAjCiAKLXRlc3RfZGVzY3JpcHRpb249J0Zvcm1hdC1wYXRjaCBza2lwcGluZyBhbHJlYWR5IGluY29ycG9yYXRlZCBwYXRjaGVzJwordGVzdF9kZXNjcmlwdGlvbj0ndmFyaW91cyBmb3JtYXQtcGF0Y2ggdGVzdHMnCiAKIC4gLi90ZXN0LWxpYi5zaAogCkBAIC0yMzAsNCArMjMwLDc5IEBACiAKICcKIAorY2F0ID4gZXhwZWN0IDw8IEVPRgorLS0tCisgZmlsZSB8ICAgMTYgKysrKysrKysrKysrKysrKworIDEgZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2ZpbGUgYi9maWxlCitpbmRleCA0MGYzNmM2Li4yZGM1YzIzIDEwMDY0NAorLS0tIGEvZmlsZQorKysrIGIvZmlsZQorQEAgLTEzLDQgKzEzLDIwIEBAIEMKKyAxMAorIEQKKyBFCisgRgorKzUKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmb3JtYXQtcGF0Y2ggcmVzcGVjdHMgLVUnICcKKworCWdpdCBmb3JtYXQtcGF0Y2ggLVU0IC0yICYmCisJc2VkIC1lICIxLC9eJC9kIiAtZSAiL14rNS9xIiA8IDAwMDEtVGhpcy1pcy1hbi1leGNlc3NpdmVseS1sb25nLXN1YmplY3QtbGluZS1mb3ItYS1tZXNzYS5wYXRjaCA+IG91dHB1dCAmJgorCXRlc3RfY21wIGV4cGVjdCBvdXRwdXQKKworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmb3JtYXQtcGF0Y2ggZnJvbSBhIHN1YmRpcmVjdG9yeSAoMSknICcKKwlmaWxlbmFtZT0kKAorCQlybSAtcmYgc3ViICYmCisJCW1rZGlyIC1wIHN1Yi9kaXIgJiYKKwkJY2Qgc3ViL2RpciAmJgorCQlnaXQgZm9ybWF0LXBhdGNoIC0xCisJKSAmJgorCWNhc2UgIiRmaWxlbmFtZSIgaW4KKwkwKikKKwkJOzsgIyBvaworCSopCisJCWVjaG8gIk9vcHM/ICRmaWxlbmFtZSIKKwkJZmFsc2UKKwkJOzsKKwllc2FjICYmCisJdGVzdCAtZiAiJGZpbGVuYW1lIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmb3JtYXQtcGF0Y2ggZnJvbSBhIHN1YmRpcmVjdG9yeSAoMiknICcKKwlmaWxlbmFtZT0kKAorCQlybSAtcmYgc3ViICYmCisJCW1rZGlyIC1wIHN1Yi9kaXIgJiYKKwkJY2Qgc3ViL2RpciAmJgorCQlnaXQgZm9ybWF0LXBhdGNoIC0xIC1vIC4uCisJKSAmJgorCWNhc2UgIiRmaWxlbmFtZSIgaW4KKwkuLi8wKikKKwkJOzsgIyBvaworCSopCisJCWVjaG8gIk9vcHM/ICRmaWxlbmFtZSIKKwkJZmFsc2UKKwkJOzsKKwllc2FjICYmCisJYmFzZW5hbWU9JChleHByICIkZmlsZW5hbWUiIDogIi4qL1woLipcKSIpICYmCisJdGVzdCAtZiAic3ViLyRiYXNlbmFtZSIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZm9ybWF0LXBhdGNoIGZyb20gYSBzdWJkaXJlY3RvcnkgKDMpJyAnCisJaGVyZT0iJFRFU1RfRElSRUNUT1JZLyR0ZXN0IiAmJgorCXJtIC1mIDAqICYmCisJZmlsZW5hbWU9JCgKKwkJcm0gLXJmIHN1YiAmJgorCQlta2RpciAtcCBzdWIvZGlyICYmCisJCWNkIHN1Yi9kaXIgJiYKKwkJZ2l0IGZvcm1hdC1wYXRjaCAtMSAtbyAiJGhlcmUiCisJKSAmJgorCWJhc2VuYW1lPSQoZXhwciAiJGZpbGVuYW1lIiA6ICIuKi9cKC4qXCkiKSAmJgorCXRlc3QgLWYgIiRiYXNlbmFtZSIKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q0MDE1LWRpZmYtd2hpdGVzcGFjZS5zaCBiL3QvdDQwMTUtZGlmZi13aGl0ZXNwYWNlLnNoCmluZGV4IGIxY2JkMzYuLjZkMTNkYTMgMTAwNzU1Ci0tLSBhL3QvdDQwMTUtZGlmZi13aGl0ZXNwYWNlLnNoCisrKyBiL3QvdDQwMTUtZGlmZi13aGl0ZXNwYWNlLnNoCkBAIC03LDcgKzcsNyBAQAogCiAnCiAuIC4vdGVzdC1saWIuc2gKLS4gLi4vZGlmZi1saWIuc2gKKy4gIiRURVNUX0RJUkVDVE9SWSIvZGlmZi1saWIuc2gKIAogIyBSYXkgTGVodGluaWVtaSdzIGV4YW1wbGUKIApAQCAtOTgsNiArOTgsMTIgQEAKIEVPRgogZ2l0IGRpZmYgLXcgPiBvdXQKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Fub3RoZXIgdGVzdCwgd2l0aCAtdycgJ3Rlc3RfY21wIGV4cGVjdCBvdXQnCitnaXQgZGlmZiAtdyAtYiA+IG91dAordGVzdF9leHBlY3Rfc3VjY2VzcyAnYW5vdGhlciB0ZXN0LCB3aXRoIC13IC1iJyAndGVzdF9jbXAgZXhwZWN0IG91dCcKK2dpdCBkaWZmIC13IC0taWdub3JlLXNwYWNlLWF0LWVvbCA+IG91dAordGVzdF9leHBlY3Rfc3VjY2VzcyAnYW5vdGhlciB0ZXN0LCB3aXRoIC13IC0taWdub3JlLXNwYWNlLWF0LWVvbCcgJ3Rlc3RfY21wIGV4cGVjdCBvdXQnCitnaXQgZGlmZiAtdyAtYiAtLWlnbm9yZS1zcGFjZS1hdC1lb2wgPiBvdXQKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Fub3RoZXIgdGVzdCwgd2l0aCAtdyAtYiAtLWlnbm9yZS1zcGFjZS1hdC1lb2wnICd0ZXN0X2NtcCBleHBlY3Qgb3V0JwogCiB0ciAnUScgJ1wwMTUnIDw8IEVPRiA+IGV4cGVjdAogZGlmZiAtLWdpdCBhL3ggYi94CkBAIC0xMTYsNiArMTIyLDI3IEBACiBFT0YKIGdpdCBkaWZmIC1iID4gb3V0CiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhbm90aGVyIHRlc3QsIHdpdGggLWInICd0ZXN0X2NtcCBleHBlY3Qgb3V0JworZ2l0IGRpZmYgLWIgLS1pZ25vcmUtc3BhY2UtYXQtZW9sID4gb3V0Cit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhbm90aGVyIHRlc3QsIHdpdGggLWIgLS1pZ25vcmUtc3BhY2UtYXQtZW9sJyAndGVzdF9jbXAgZXhwZWN0IG91dCcKKwordHIgJ1EnICdcMDE1JyA8PCBFT0YgPiBleHBlY3QKK2RpZmYgLS1naXQgYS94IGIveAoraW5kZXggZDk5YWYyMy4uOGIzMmZiNSAxMDA2NDQKKy0tLSBhL3gKKysrKyBiL3gKK0BAIC0xLDYgKzEsNiBAQAorLXdoaXRlc3BhY2UgYXQgYmVnaW5uaW5nCistd2hpdGVzcGFjZSBjaGFuZ2UKKy13aGl0ZXNwYWNlIGluIHRoZSBtaWRkbGUKKysJd2hpdGVzcGFjZSBhdCBiZWdpbm5pbmcKKyt3aGl0ZXNwYWNlIAkgY2hhbmdlCisrd2hpdGUgc3BhY2UgaW4gdGhlIG1pZGRsZQorIHdoaXRlc3BhY2UgYXQgZW5kCisgdW5jaGFuZ2VkIGxpbmUKKyBDUiBhdCBlbmRRCitFT0YKK2dpdCBkaWZmIC0taWdub3JlLXNwYWNlLWF0LWVvbCA+IG91dAordGVzdF9leHBlY3Rfc3VjY2VzcyAnYW5vdGhlciB0ZXN0LCB3aXRoIC0taWdub3JlLXNwYWNlLWF0LWVvbCcgJ3Rlc3RfY21wIGV4cGVjdCBvdXQnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrIG1peGVkIHNwYWNlcyBhbmQgdGFicyBpbiBpbmRlbnQnICcKIApkaWZmIC0tZ2l0IGEvdC90NDAxOC1kaWZmLWZ1bmNuYW1lLnNoIGIvdC90NDAxOC1kaWZmLWZ1bmNuYW1lLnNoCmluZGV4IDM5OGJmNGIuLmJlNTQxMzQgMTAwNzU1Ci0tLSBhL3QvdDQwMTgtZGlmZi1mdW5jbmFtZS5zaAorKysgYi90L3Q0MDE4LWRpZmYtZnVuY25hbWUuc2gKQEAgLTMyLDcgKzMyLDcgQEAKIAogc2VkICdzL2JlZXJcXC9iZWVyLFxcLycgPCBCZWVyLmphdmEgPiBCZWVyLWNvcnJlY3QuamF2YQogCi1idWlsdGluX3BhdHRlcm5zPSJiaWJ0ZXggamF2YSBwYXNjYWwgcnVieSB0ZXgiCitidWlsdGluX3BhdHRlcm5zPSJiaWJ0ZXggaHRtbCBqYXZhIG9iamMgcGFzY2FsIHBocCBweXRob24gcnVieSB0ZXgiCiBmb3IgcCBpbiAkYnVpbHRpbl9wYXR0ZXJucwogZG8KIAl0ZXN0X2V4cGVjdF9zdWNjZXNzICJidWlsdGluICRwIHBhdHRlcm4gY29tcGlsZXMiICcKZGlmZiAtLWdpdCBhL3QvdDQwMjAtZGlmZi1leHRlcm5hbC5zaCBiL3QvdDQwMjAtZGlmZi1leHRlcm5hbC5zaAppbmRleCAyMmVmN2Q0Li5jYWVhMjkyIDEwMDc1NQotLS0gYS90L3Q0MDIwLWRpZmYtZXh0ZXJuYWwuc2gKKysrIGIvdC90NDAyMC1kaWZmLWV4dGVybmFsLnNoCkBAIC0xMjUsNyArMTI1LDcgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZvcmNlIGRpZmYgd2l0aCAiZGlmZiInICcKIAllY2hvID4uZ2l0YXR0cmlidXRlcyAiZmlsZSBkaWZmIiAmJgogCWdpdCBkaWZmID5hY3R1YWwgJiYKLQl0ZXN0X2NtcCAuLi90NDAyMC9kaWZmLk5VTCBhY3R1YWwKKwl0ZXN0X2NtcCAiJFRFU1RfRElSRUNUT1JZIi90NDAyMC9kaWZmLk5VTCBhY3R1YWwKICcKIAogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q0MDIxLWZvcm1hdC1wYXRjaC1udW1iZXJlZC5zaCBiL3QvdDQwMjEtZm9ybWF0LXBhdGNoLW51bWJlcmVkLnNoCmluZGV4IDQzZDY0YmIuLjM5MGFmMjMgMTAwNzU1Ci0tLSBhL3QvdDQwMjEtZm9ybWF0LXBhdGNoLW51bWJlcmVkLnNoCisrKyBiL3QvdDQwMjEtZm9ybWF0LXBhdGNoLW51bWJlcmVkLnNoCkBAIC00NSwxNyArNDUsMjIgQEAKIAlncmVwICJeU3ViamVjdDogXFtQQVRDSCAyLzJcXSIgJDEKIH0KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnRGVmYXVsdDogbm8gbnVtYmVyZWQnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NpbmdsZSBwYXRjaCBkZWZhdWx0cyB0byBubyBudW1iZXJzJyAnCisJZ2l0IGZvcm1hdC1wYXRjaCAtLXN0ZG91dCBIRUFEfjEgPnBhdGNoMC5zaW5nbGUgJiYKKwl0ZXN0X3NpbmdsZV9ub19udW1iZXJlZCBwYXRjaDAuc2luZ2xlCisnCiAKLQlnaXQgZm9ybWF0LXBhdGNoIC0tc3Rkb3V0IEhFQUR+MiA+cGF0Y2gwICYmCi0JdGVzdF9ub19udW1iZXJlZCBwYXRjaDAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ211bHRpcGxlIHBhdGNoIGRlZmF1bHRzIHRvIG51bWJlcmVkJyAnCisKKwlnaXQgZm9ybWF0LXBhdGNoIC0tc3Rkb3V0IEhFQUR+MiA+cGF0Y2gwLm11bHRpcGxlICYmCisJdGVzdF9udW1iZXJlZCBwYXRjaDAubXVsdGlwbGUKIAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdVc2UgLS1udW1iZXJlZCcgJwogCi0JZ2l0IGZvcm1hdC1wYXRjaCAtLW51bWJlcmVkIC0tc3Rkb3V0IEhFQUR+MiA+cGF0Y2gxICYmCi0JdGVzdF9udW1iZXJlZCBwYXRjaDEKKwlnaXQgZm9ybWF0LXBhdGNoIC0tbnVtYmVyZWQgLS1zdGRvdXQgSEVBRH4xID5wYXRjaDEgJiYKKwl0ZXN0X3NpbmdsZV9udW1iZXJlZCBwYXRjaDEKIAogJwogCmRpZmYgLS1naXQgYS90L3Q0MDIyLWRpZmYtcmV3cml0ZS5zaCBiL3QvdDQwMjItZGlmZi1yZXdyaXRlLnNoCmluZGV4IGJmOTk2ZmMuLjJhNTM3YTIgMTAwNzU1Ci0tLSBhL3QvdDQwMjItZGlmZi1yZXdyaXRlLnNoCisrKyBiL3QvdDQwMjItZGlmZi1yZXdyaXRlLnNoCkBAIC02LDEyICs2LDEyIEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3Mgc2V0dXAgJwogCi0JY2F0IC4uLy4uL0NPUFlJTkcgPnRlc3QgJiYKKwljYXQgIiRURVNUX0RJUkVDVE9SWSIvLi4vQ09QWUlORyA+dGVzdCAmJgogCWdpdCBhZGQgdGVzdCAmJgogCXRyIFwKIAkgICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIiBcCiAJICAibm9wcXJzdHV2d3h5emFiY2RlZmdoaWprbG1OT1BRUlNUVVZXWFlaQUJDREVGR0hJSktMTSIgXAotCSAgPC4uLy4uL0NPUFlJTkcgPnRlc3QKKwkgIDwiJFRFU1RfRElSRUNUT1JZIi8uLi9DT1BZSU5HID50ZXN0CiAKICcKIApkaWZmIC0tZ2l0IGEvdC90NDAyMy1kaWZmLXJlbmFtZS10eXBlY2hhbmdlLnNoIGIvdC90NDAyMy1kaWZmLXJlbmFtZS10eXBlY2hhbmdlLnNoCmluZGV4IDRkYmZjNmUuLjI5N2RkYjUgMTAwNzU1Ci0tLSBhL3QvdDQwMjMtZGlmZi1yZW5hbWUtdHlwZWNoYW5nZS5zaAorKysgYi90L3Q0MDIzLWRpZmYtcmVuYW1lLXR5cGVjaGFuZ2Uuc2gKQEAgLTcsMjEgKzcsMjEgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3Mgc2V0dXAgJwogCiAJcm0gLWYgZm9vIGJhciAmJgotCWNhdCAuLi8uLi9DT1BZSU5HID5mb28gJiYKKwljYXQgIiRURVNUX0RJUkVDVE9SWSIvLi4vQ09QWUlORyA+Zm9vICYmCiAJbG4gLXMgbGlua2xpbmsgYmFyICYmCiAJZ2l0IGFkZCBmb28gYmFyICYmCiAJZ2l0IGNvbW1pdCAtYSAtbSBJbml0aWFsICYmCiAJZ2l0IHRhZyBvbmUgJiYKIAogCXJtIC1mIGZvbyBiYXIgJiYKLQljYXQgLi4vLi4vQ09QWUlORyA+YmFyICYmCisJY2F0ICIkVEVTVF9ESVJFQ1RPUlkiLy4uL0NPUFlJTkcgPmJhciAmJgogCWxuIC1zIGxpbmtsaW5rIGZvbyAmJgogCWdpdCBhZGQgZm9vIGJhciAmJgogCWdpdCBjb21taXQgLWEgLW0gU2Vjb25kICYmCiAJZ2l0IHRhZyB0d28gJiYKIAogCXJtIC1mIGZvbyBiYXIgJiYKLQljYXQgLi4vLi4vQ09QWUlORyA+Zm9vICYmCisJY2F0ICIkVEVTVF9ESVJFQ1RPUlkiLy4uL0NPUFlJTkcgPmZvbyAmJgogCWdpdCBhZGQgZm9vICYmCiAJZ2l0IGNvbW1pdCAtYSAtbSBUaGlyZCAmJgogCWdpdCB0YWcgdGhyZWUgJiYKQEAgLTM1LDE1ICszNSwxNSBAQAogCSMgVGhpcyBpcyBwdXJlbHkgZm9yIHNhbml0eSBjaGVjawogCiAJcm0gLWYgZm9vIGJhciAmJgotCWNhdCAuLi8uLi9DT1BZSU5HID5mb28gJiYKLQljYXQgLi4vLi4vTWFrZWZpbGUgPmJhciAmJgorCWNhdCAiJFRFU1RfRElSRUNUT1JZIi8uLi9DT1BZSU5HID5mb28gJiYKKwljYXQgIiRURVNUX0RJUkVDVE9SWSIvLi4vTWFrZWZpbGUgPmJhciAmJgogCWdpdCBhZGQgZm9vIGJhciAmJgogCWdpdCBjb21taXQgLWEgLW0gRmlmdGggJiYKIAlnaXQgdGFnIGZpdmUgJiYKIAogCXJtIC1mIGZvbyBiYXIgJiYKLQljYXQgLi4vLi4vTWFrZWZpbGUgPmZvbyAmJgotCWNhdCAuLi8uLi9DT1BZSU5HID5iYXIgJiYKKwljYXQgIiRURVNUX0RJUkVDVE9SWSIvLi4vTWFrZWZpbGUgPmZvbyAmJgorCWNhdCAiJFRFU1RfRElSRUNUT1JZIi8uLi9DT1BZSU5HID5iYXIgJiYKIAlnaXQgYWRkIGZvbyBiYXIgJiYKIAlnaXQgY29tbWl0IC1hIC1tIFNpeHRoICYmCiAJZ2l0IHRhZyBzaXgKZGlmZiAtLWdpdCBhL3QvdDQwMjctZGlmZi1zdWJtb2R1bGUuc2ggYi90L3Q0MDI3LWRpZmYtc3VibW9kdWxlLnNoCmluZGV4IGJhNjY3OWMuLjFjMmVkZWIgMTAwNzU1Ci0tLSBhL3QvdDQwMjctZGlmZi1zdWJtb2R1bGUuc2gKKysrIGIvdC90NDAyNy1kaWZmLXN1Ym1vZHVsZS5zaApAQCAtMyw3ICszLDcgQEAKIHRlc3RfZGVzY3JpcHRpb249J2RpZmZlcmVuY2UgaW4gc3VibW9kdWxlcycKIAogLiAuL3Rlc3QtbGliLnNoCi0uIC4uL2RpZmYtbGliLnNoCisuICIkVEVTVF9ESVJFQ1RPUlkiL2RpZmYtbGliLnNoCiAKIF96NDA9MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAogdGVzdF9leHBlY3Rfc3VjY2VzcyBzZXR1cCAnCmRpZmYgLS1naXQgYS90L3Q0MDI5LWRpZmYtdHJhaWxpbmctc3BhY2Uuc2ggYi90L3Q0MDI5LWRpZmYtdHJhaWxpbmctc3BhY2Uuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWRkYmJjZAotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQwMjktZGlmZi10cmFpbGluZy1zcGFjZS5zaApAQCAtMCwwICsxLDM5IEBACisjIS9iaW4vYmFzaAorIworIyBDb3B5cmlnaHQgKGMpIEppbSBNZXllcmluZworIwordGVzdF9kZXNjcmlwdGlvbj0nZGlmZiBob25vcnMgY29uZmlnIG9wdGlvbiwgZGlmZi5zdXBwcmVzc0JsYW5rRW1wdHknCisKKy4gLi90ZXN0LWxpYi5zaAorCitjYXQgPDxcRU9GID4gZXhwIHx8CitkaWZmIC0tZ2l0IGEvZiBiL2YKK2luZGV4IDVmNmEyNjMuLjhjYjhiYWUgMTAwNjQ0CistLS0gYS9mCisrKysgYi9mCitAQCAtMSwyICsxLDIgQEAKKworLXgKKyt5CitFT0YKK2V4aXQgMQorCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKKyAgICAiJHRlc3RfZGVzY3JpcHRpb24iIFwKKyAgICAncHJpbnRmICJcbnhcbiIgPiBmICYmCisgICAgIGdpdCBhZGQgZiAmJgorICAgICBnaXQgY29tbWl0IC1xIC1tLiBmICYmCisgICAgIHByaW50ZiAiXG55XG4iID4gZiAmJgorICAgICBnaXQgY29uZmlnIC0tYm9vbCBkaWZmLnN1cHByZXNzQmxhbmtFbXB0eSB0cnVlICYmCisgICAgIGdpdCBkaWZmIGYgPiBhY3R1YWwgJiYKKyAgICAgdGVzdF9jbXAgZXhwIGFjdHVhbCAmJgorICAgICBwZXJsIC1pLmJhayAtcCAtZSAicy9eXCQvIC8iIGV4cCAmJgorICAgICBnaXQgY29uZmlnIC0tYm9vbCBkaWZmLnN1cHByZXNzQmxhbmtFbXB0eSBmYWxzZSAmJgorICAgICBnaXQgZGlmZiBmID4gYWN0dWFsICYmCisgICAgIHRlc3RfY21wIGV4cCBhY3R1YWwgJiYKKyAgICAgZ2l0IGNvbmZpZyAtLWJvb2wgLS11bnNldCBkaWZmLnN1cHByZXNzQmxhbmtFbXB0eSAmJgorICAgICBnaXQgZGlmZiBmID4gYWN0dWFsICYmCisgICAgIHRlc3RfY21wIGV4cCBhY3R1YWwKKyAgICAgJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDQwMzAtZGlmZi10ZXh0Y29udi5zaCBiL3QvdDQwMzAtZGlmZi10ZXh0Y29udi5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hM2YwODk3Ci0tLSAvZGV2L251bGwKKysrIGIvdC90NDAzMC1kaWZmLXRleHRjb252LnNoCkBAIC0wLDAgKzEsMTI2IEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0nZGlmZi4qLnRleHRjb252IHRlc3RzJworLiAuL3Rlc3QtbGliLnNoCisKK2ZpbmRfZGlmZigpIHsKKwlzZWQgJzEsL15pbmRleCAvZCcgfCBzZWQgJy9eLS0gJC8sJGQnCit9CisKK2NhdCA+ZXhwZWN0LmJpbmFyeSA8PCdFT0YnCitCaW5hcnkgZmlsZXMgYS9maWxlIGFuZCBiL2ZpbGUgZGlmZmVyCitFT0YKKworY2F0ID5leHBlY3QudGV4dCA8PCdFT0YnCistLS0gYS9maWxlCisrKysgYi9maWxlCitAQCAtMSArMSwyIEBACisgMAorKzEKK0VPRgorCitjYXQgPmhleGR1bXAgPDwnRU9GJworIyEvYmluL3NoCitwZXJsIC1lICckLyA9IHVuZGVmOyAkXyA9IDw+OyBzLy4vb3JkKCQmKS9nZTsgcHJpbnQgJF8nIDwgIiQxIgorRU9GCitjaG1vZCAreCBoZXhkdW1wCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIGJpbmFyeSBmaWxlIHdpdGggaGlzdG9yeScgJworCXByaW50ZiAiXFwwXFxuIiA+ZmlsZSAmJgorCWdpdCBhZGQgZmlsZSAmJgorCWdpdCBjb21taXQgLW0gb25lICYmCisJcHJpbnRmICJcXDAxXFxuIiA+PmZpbGUgJiYKKwlnaXQgYWRkIGZpbGUgJiYKKwlnaXQgY29tbWl0IC1tIHR3bworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmaWxlIGlzIGNvbnNpZGVyZWQgYmluYXJ5IGJ5IHBvcmNlbGFpbicgJworCWdpdCBkaWZmIEhFQUReIEhFQUQgPmRpZmYgJiYKKwlmaW5kX2RpZmYgPGRpZmYgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdC5iaW5hcnkgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZpbGUgaXMgY29uc2lkZXJlZCBiaW5hcnkgYnkgcGx1bWJpbmcnICcKKwlnaXQgZGlmZi10cmVlIC1wIEhFQUReIEhFQUQgPmRpZmYgJiYKKwlmaW5kX2RpZmYgPGRpZmYgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdC5iaW5hcnkgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIHRleHRjb252IGZpbHRlcnMnICcKKwllY2hvIGZpbGUgZGlmZj1mb28gPi5naXRhdHRyaWJ1dGVzICYmCisJZ2l0IGNvbmZpZyBkaWZmLmZvby50ZXh0Y29udiAiJFBXRCIvaGV4ZHVtcCAmJgorCWdpdCBjb25maWcgZGlmZi5mYWlsLnRleHRjb252IGZhbHNlCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RpZmYgcHJvZHVjZXMgdGV4dCcgJworCWdpdCBkaWZmIEhFQUReIEhFQUQgPmRpZmYgJiYKKwlmaW5kX2RpZmYgPGRpZmYgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdC50ZXh0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdkaWZmLXRyZWUgcHJvZHVjZXMgYmluYXJ5JyAnCisJZ2l0IGRpZmYtdHJlZSAtcCBIRUFEXiBIRUFEID5kaWZmICYmCisJZmluZF9kaWZmIDxkaWZmID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QuYmluYXJ5IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2cgcHJvZHVjZXMgdGV4dCcgJworCWdpdCBsb2cgLTEgLXAgPmxvZyAmJgorCWZpbmRfZGlmZiA8bG9nID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QudGV4dCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZm9ybWF0LXBhdGNoIHByb2R1Y2VzIGJpbmFyeScgJworCWdpdCBmb3JtYXQtcGF0Y2ggLS1uby1iaW5hcnkgLS1zdGRvdXQgSEVBRF4gPnBhdGNoICYmCisJZmluZF9kaWZmIDxwYXRjaCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0LmJpbmFyeSBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIC12IHByb2R1Y2VzIHRleHQnICcKKwlnaXQgcmVzZXQgLS1zb2Z0IEhFQUReICYmCisJZ2l0IHN0YXR1cyAtdiA+ZGlmZiAmJgorCWZpbmRfZGlmZiA8ZGlmZiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0LnRleHQgYWN0dWFsICYmCisJZ2l0IHJlc2V0IC0tc29mdCBIRUFEQHsxfQorJworCitjYXQgPmV4cGVjdC5zdGF0IDw8J0VPRicKKyBmaWxlIHwgIEJpbiAyIC0+IDQgYnl0ZXMKKyAxIGZpbGVzIGNoYW5nZWQsIDAgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKK0VPRgordGVzdF9leHBlY3Rfc3VjY2VzcyAnZGlmZnN0YXQgZG9lcyBub3QgcnVuIHRleHRjb252JyAnCisJZWNobyBmaWxlIGRpZmY9ZmFpbCA+LmdpdGF0dHJpYnV0ZXMgJiYKKwlnaXQgZGlmZiAtLXN0YXQgSEVBRF4gSEVBRCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0LnN0YXQgYWN0dWFsCisnCisjIHJlc3RvcmUgd29ya2luZyBzZXR1cAorZWNobyBmaWxlIGRpZmY9Zm9vID4uZ2l0YXR0cmlidXRlcworCitjYXQgPmV4cGVjdC50eXBlY2hhbmdlIDw8J0VPRicKKy0tLSBhL2ZpbGUKKysrKyAvZGV2L251bGwKK0BAIC0xLDIgKzAsMCBAQAorLTAKKy0xCitkaWZmIC0tZ2l0IGEvZmlsZSBiL2ZpbGUKK25ldyBmaWxlIG1vZGUgMTIwMDAwCitpbmRleCAwMDAwMDAwLi42N2JlNDIxCistLS0gL2Rldi9udWxsCisrKysgYi9maWxlCitAQCAtMCwwICsxIEBACisrZnJvdHoKK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorRU9GCisjIG1ha2UgYSBzeW1saW5rIHRoZSBoYXJkIHdheSB0aGF0IHdvcmtzIG9uIHN5bWxpbmstY2hhbGxlbmdlZCBmaWxlIHN5c3RlbXMKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3RleHRjb252IGRvZXMgbm90IGFjdCBvbiBzeW1saW5rcycgJworCXByaW50ZiBmcm90eiA+IGZpbGUgJiYKKwlnaXQgYWRkIGZpbGUgJiYKKwlnaXQgbHMtZmlsZXMgLXMgfCBzZWQgLWUgcy8xMDA2NDQvMTIwMDAwLyB8CisJCWdpdCB1cGRhdGUtaW5kZXggLS1pbmRleC1pbmZvICYmCisJZ2l0IGNvbW1pdCAtbSB0eXBlY2hhbmdlICYmCisJZ2l0IHNob3cgPmRpZmYgJiYKKwlmaW5kX2RpZmYgPGRpZmYgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdC50eXBlY2hhbmdlIGFjdHVhbAorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDQwMzEtZGlmZi1yZXdyaXRlLWJpbmFyeS5zaCBiL3QvdDQwMzEtZGlmZi1yZXdyaXRlLWJpbmFyeS5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hODk0YzYwCi0tLSAvZGV2L251bGwKKysrIGIvdC90NDAzMS1kaWZmLXJld3JpdGUtYmluYXJ5LnNoCkBAIC0wLDAgKzEsNjcgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSdyZXdyaXRlIGRpZmYgb24gYmluYXJ5IGZpbGUnCisKKy4gLi90ZXN0LWxpYi5zaAorCisjIFdlIG11c3QgYmUgbGFyZ2UgZW5vdWdoIHRvIG1lZXQgdGhlIE1JTklNVU1fQlJFQUtfU0laRQorIyByZXF1aXJlbWVudC4KK21ha2VfZmlsZSgpIHsKKwkjIGNvbW1vbiBmaXJzdCBsaW5lIHRvIGhlbHAgaWRlbnRpZnkgcmV3cml0ZSB2ZXJzdXMgcmVndWxhciBkaWZmCisJcHJpbnRmICI9XG4iID5maWxlCisJZm9yIGkgaW4gMSAyIDMgNCA1IDYgNyA4IDkgMTAKKwlkbworCQlmb3IgaiBpbiAxIDIgMyA0IDUgNiA3IDggOQorCQlkbworCQkJZm9yIGsgaW4gMSAyIDMgNCA1CisJCQlkbworCQkJCXByaW50ZiAiJDFcbiIKKwkJCWRvbmUKKwkJZG9uZQorCWRvbmUgPj5maWxlCit9CisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NyZWF0ZSBiaW5hcnkgZmlsZSB3aXRoIGNoYW5nZXMnICcKKwltYWtlX2ZpbGUgIlxcMCIgJiYKKwlnaXQgYWRkIGZpbGUgJiYKKwltYWtlX2ZpbGUgIlxcMDEiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ZhbmlsbGEgZGlmZiBpcyBiaW5hcnknICcKKwlnaXQgZGlmZiA+ZGlmZiAmJgorCWdyZXAgIkJpbmFyeSBmaWxlcyBhL2ZpbGUgYW5kIGIvZmlsZSBkaWZmZXIiIGRpZmYKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmV3cml0ZSBkaWZmIGlzIGJpbmFyeScgJworCWdpdCBkaWZmIC1CID5kaWZmICYmCisJZ3JlcCAiZGlzc2ltaWxhcml0eSBpbmRleCIgZGlmZiAmJgorCWdyZXAgIkJpbmFyeSBmaWxlcyBhL2ZpbGUgYW5kIGIvZmlsZSBkaWZmZXIiIGRpZmYKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmV3cml0ZSBkaWZmIGNhbiBzaG93IGJpbmFyeSBwYXRjaCcgJworCWdpdCBkaWZmIC1CIC0tYmluYXJ5ID5kaWZmICYmCisJZ3JlcCAiZGlzc2ltaWxhcml0eSBpbmRleCIgZGlmZiAmJgorCWdyZXAgIkdJVCBiaW5hcnkgcGF0Y2giIGRpZmYKKycKKworeworCWVjaG8gIiMhJFNIRUxMX1BBVEgiCisJY2F0IDw8J0VPRicKK3BlcmwgLWUgJyQvID0gdW5kZWY7ICRfID0gPD47IHMvLi9vcmQoJCYpL2dlOyBwcmludCAkXycgPCAiJDEiCitFT0YKK30gPmR1bXAKK2NobW9kICt4IGR1bXAKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgdGV4dGNvbnYnICcKKwllY2hvIGZpbGUgZGlmZj1mb28gPi5naXRhdHRyaWJ1dGVzICYmCisJZ2l0IGNvbmZpZyBkaWZmLmZvby50ZXh0Y29udiAiJFBXRCIvZHVtcAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXdyaXRlIGRpZmYgcmVzcGVjdHMgdGV4dGNvbnYnICcKKwlnaXQgZGlmZiAtQiA+ZGlmZiAmJgorCWdyZXAgImRpc3NpbWlsYXJpdHkgaW5kZXgiIGRpZmYgJiYKKwlncmVwICJeLTYxIiBkaWZmICYmCisJZ3JlcCAiXi0wIiBkaWZmCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NDEwMC1hcHBseS1zdGF0LnNoIGIvdC90NDEwMC1hcHBseS1zdGF0LnNoCmluZGV4IGUwYzY3NzQuLjliNDMzZGUgMTAwNzU1Ci0tLSBhL3QvdDQxMDAtYXBwbHktc3RhdC5zaAorKysgYi90L3Q0MTAwLWFwcGx5LXN0YXQuc2gKQEAgLTE3LDEzICsxNywxMyBAQAogCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgIiR0aXRsZSIgJwogCQlnaXQgYXBwbHkgLS1zdGF0IC0tc3VtbWFyeSBcCiAJCQk8IiRURVNUX0RJUkVDVE9SWS90NDEwMC90LWFwcGx5LSRudW0ucGF0Y2giID5jdXJyZW50ICYmCi0JCXRlc3RfY21wIC4uL3Q0MTAwL3QtYXBwbHktJG51bS5leHBlY3QgY3VycmVudAorCQl0ZXN0X2NtcCAiJFRFU1RfRElSRUNUT1JZIi90NDEwMC90LWFwcGx5LSRudW0uZXhwZWN0IGN1cnJlbnQKIAknCiAKIAl0ZXN0X2V4cGVjdF9zdWNjZXNzICIkdGl0bGUgd2l0aCByZWNvdW50IiAnCiAJCXNlZCAtZSAiJFVOQyIgPCIkVEVTVF9ESVJFQ1RPUlkvdDQxMDAvdC1hcHBseS0kbnVtLnBhdGNoIiB8CiAJCWdpdCBhcHBseSAtLXJlY291bnQgLS1zdGF0IC0tc3VtbWFyeSA+Y3VycmVudCAmJgotCQl0ZXN0X2NtcCAuLi90NDEwMC90LWFwcGx5LSRudW0uZXhwZWN0IGN1cnJlbnQKKwkJdGVzdF9jbXAgIiRURVNUX0RJUkVDVE9SWSIvdDQxMDAvdC1hcHBseS0kbnVtLmV4cGVjdCBjdXJyZW50CiAJJwogZG9uZSA8PFxFT0YKIHJlbmFtZQpkaWZmIC0tZ2l0IGEvdC90NDEwMS1hcHBseS1ub25sLnNoIGIvdC90NDEwMS1hcHBseS1ub25sLnNoCmluZGV4IGRhOGFiY2YuLmUzNDQzZDAgMTAwNzU1Ci0tLSBhL3QvdDQxMDEtYXBwbHktbm9ubC5zaAorKysgYi90L3Q0MTAxLWFwcGx5LW5vbmwuc2gKQEAgLTIxLDkgKzIxLDEwIEBACiAgIGRvCiAgICAgdGVzdCAkaSAtZXEgJGogJiYgY29udGludWUKICAgICBjYXQgZnJvdHouJGkgPmZyb3R6Ci0gICAgdGVzdF9leHBlY3Rfc3VjY2VzcyBcCi0gICAgICAgICJhcHBseSBkaWZmIGJldHdlZW4gJGkgYW5kICRqIiBcCi0JImdpdCBhcHBseSA8Li4vdDQxMDEvZGlmZi4kaS0kaiAmJiBkaWZmIGZyb3R6LiRqIGZyb3R6IgorICAgIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgImFwcGx5IGRpZmYgYmV0d2VlbiAkaSBhbmQgJGoiICcKKwlnaXQgYXBwbHkgPCIkVEVTVF9ESVJFQ1RPUlkiL3Q0MTAxL2RpZmYuJGktJGogJiYKKwl0ZXN0X2NtcCBmcm90ei4kaiBmcm90egorICAgICcKICAgZG9uZQogZG9uZQogCmRpZmYgLS1naXQgYS90L3Q0MTI5LWFwcGx5LXNhbWVtb2RlLnNoIGIvdC90NDEyOS1hcHBseS1zYW1lbW9kZS5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hZGZjYmI1Ci0tLSAvZGV2L251bGwKKysrIGIvdC90NDEyOS1hcHBseS1zYW1lbW9kZS5zaApAQCAtMCwwICsxLDYyIEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0nYXBwbHlpbmcgcGF0Y2ggd2l0aCBtb2RlIGJpdHMnCisKKy4gLi90ZXN0LWxpYi5zaAorCit0ZXN0X2V4cGVjdF9zdWNjZXNzIHNldHVwICcKKwllY2hvIG9yaWdpbmFsID5maWxlICYmCisJZ2l0IGFkZCBmaWxlICYmCisJdGVzdF90aWNrICYmCisJZ2l0IGNvbW1pdCAtbSBpbml0aWFsICYmCisJZ2l0IHRhZyBpbml0aWFsICYmCisJZWNobyBtb2RpZmllZCA+ZmlsZSAmJgorCWdpdCBkaWZmIC0tc3RhdCAtcCA+cGF0Y2gtMC50eHQgJiYKKwljaG1vZCAreCBmaWxlICYmCisJZ2l0IGRpZmYgLS1zdGF0IC1wID5wYXRjaC0xLnR4dAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzYW1lIG1vZGUgKG5vIGluZGV4KScgJworCWdpdCByZXNldCAtLWhhcmQgJiYKKwljaG1vZCAreCBmaWxlICYmCisJZ2l0IGFwcGx5IHBhdGNoLTAudHh0ICYmCisJdGVzdCAteCBmaWxlCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NhbWUgbW9kZSAod2l0aCBpbmRleCknICcKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJY2htb2QgK3ggZmlsZSAmJgorCWdpdCBhZGQgZmlsZSAmJgorCWdpdCBhcHBseSAtLWluZGV4IHBhdGNoLTAudHh0ICYmCisJdGVzdCAteCBmaWxlICYmCisJZ2l0IGRpZmYgLS1leGl0LWNvZGUKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2FtZSBtb2RlIChpbmRleCBvbmx5KScgJworCWdpdCByZXNldCAtLWhhcmQgJiYKKwljaG1vZCAreCBmaWxlICYmCisJZ2l0IGFkZCBmaWxlICYmCisJZ2l0IGFwcGx5IC0tY2FjaGVkIHBhdGNoLTAudHh0ICYmCisJZ2l0IGxzLWZpbGVzIC1zIGZpbGUgfCBncmVwICJeMTAwNzU1IgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtb2RlIHVwZGF0ZSAobm8gaW5kZXgpJyAnCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCWdpdCBhcHBseSBwYXRjaC0xLnR4dCAmJgorCXRlc3QgLXggZmlsZQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtb2RlIHVwZGF0ZSAod2l0aCBpbmRleCknICcKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZ2l0IGFwcGx5IC0taW5kZXggcGF0Y2gtMS50eHQgJiYKKwl0ZXN0IC14IGZpbGUgJiYKKwlnaXQgZGlmZiAtLWV4aXQtY29kZQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtb2RlIHVwZGF0ZSAoaW5kZXggb25seSknICcKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZ2l0IGFwcGx5IC0tY2FjaGVkIHBhdGNoLTEudHh0ICYmCisJZ2l0IGxzLWZpbGVzIC1zIGZpbGUgfCBncmVwICJeMTAwNzU1IgorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDQxNTAtYW0uc2ggYi90L3Q0MTUwLWFtLnNoCmluZGV4IDFiZTVmYjMuLjc5NmY3OTUgMTAwNzU1Ci0tLSBhL3QvdDQxNTAtYW0uc2gKKysrIGIvdC90NDE1MC1hbS5zaApAQCAtMTY1LDcgKzE2NSw3IEBACiAJZ2l0IGFtIC0ta2VlcCBwYXRjaDQgJiYKIAkhIHRlc3QgLWQgLmdpdC9yZWJhc2UtYXBwbHkgJiYKIAlnaXQgY2F0LWZpbGUgY29tbWl0IEhFQUQgfAotCQlncmVwIC1xIC1GICJSZTogUmU6IFJlOiBbUEFUQ0ggMS81IHYyXSB0aGlyZCIKKwkJZmdyZXAgIlJlOiBSZTogUmU6IFtQQVRDSCAxLzUgdjJdIHRoaXJkIgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhbSAtMyBmYWxscyBiYWNrIHRvIDMtd2F5IG1lcmdlJyAnCmRpZmYgLS1naXQgYS90L3Q0MTUxLWFtLWFib3J0LnNoIGIvdC90NDE1MS1hbS1hYm9ydC5zaAppbmRleCA0NDQ4YWJhLi4yYjkxMmQ3IDEwMDc1NQotLS0gYS90L3Q0MTUxLWFtLWFib3J0LnNoCisrKyBiL3QvdDQxNTEtYW0tYWJvcnQuc2gKQEAgLTIyLDcgKzIyLDcgQEAKIAkJdGVzdF90aWNrICYmCiAJCWdpdCBjb21taXQgLWEgLW0gJGkgfHwgYnJlYWsKIAlkb25lICYmCi0JZ2l0IGZvcm1hdC1wYXRjaCBpbml0aWFsICYmCisJZ2l0IGZvcm1hdC1wYXRjaCAtLW5vLW51bWJlcmVkIGluaXRpYWwgJiYKIAlnaXQgY2hlY2tvdXQgLWIgc2lkZSBpbml0aWFsICYmCiAJZWNobyBsb2NhbCBjaGFuZ2UgPmZpbGUtMi1leHBlY3QKICcKZGlmZiAtLWdpdCBhL3QvdDQyNTItYW0tb3B0aW9ucy5zaCBiL3QvdDQyNTItYW0tb3B0aW9ucy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zYWI5ZThlCi0tLSAvZGV2L251bGwKKysrIGIvdC90NDI1Mi1hbS1vcHRpb25zLnNoCkBAIC0wLDAgKzEsNTMgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgYW0gbm90IGxvc2luZyBvcHRpb25zJworLiAuL3Rlc3QtbGliLnNoCisKK3RtPSIkVEVTVF9ESVJFQ1RPUlkvdDQyNTIiCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3Mgc2V0dXAgJworCWNwICIkdG0vZmlsZS0xLTAiIGZpbGUtMSAmJgorCWNwICIkdG0vZmlsZS0yLTAiIGZpbGUtMiAmJgorCWdpdCBhZGQgZmlsZS0xIGZpbGUtMiAmJgorCXRlc3RfdGljayAmJgorCWdpdCBjb21taXQgLW0gaW5pdGlhbCAmJgorCWdpdCB0YWcgaW5pdGlhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbnRlcnJ1cHRlZCBhbSAtLXdoaXRlc3BhY2U9Zml4JyAnCisJcm0gLXJmIC5naXQvcmViYXNlLWFwcGx5ICYmCisJZ2l0IHJlc2V0IC0taGFyZCBpbml0aWFsICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGFtIC0td2hpdGVzcGFjZT1maXggIiR0bSIvYW0tdGVzdC0xLT8gJiYKKwlnaXQgYW0gLS1za2lwICYmCisJZ3JlcCAzIGZpbGUtMSAmJgorCWdyZXAgIl5TaXgkIiBmaWxlLTIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnaW50ZXJydXB0ZWQgYW0gLUMxJyAnCisJcm0gLXJmIC5naXQvcmViYXNlLWFwcGx5ICYmCisJZ2l0IHJlc2V0IC0taGFyZCBpbml0aWFsICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGFtIC1DMSAiJHRtIi9hbS10ZXN0LTItPyAmJgorCWdpdCBhbSAtLXNraXAgJiYKKwlncmVwIDMgZmlsZS0xICYmCisJZ3JlcCAiXlRocmVlJCIgZmlsZS0yCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ludGVycnVwdGVkIGFtIC1wMicgJworCXJtIC1yZiAuZ2l0L3JlYmFzZS1hcHBseSAmJgorCWdpdCByZXNldCAtLWhhcmQgaW5pdGlhbCAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBhbSAtcDIgIiR0bSIvYW0tdGVzdC0zLT8gJiYKKwlnaXQgYW0gLS1za2lwICYmCisJZ3JlcCAzIGZpbGUtMSAmJgorCWdyZXAgIl5UaHJlZSQiIGZpbGUtMgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbnRlcnJ1cHRlZCBhbSAtQzEgLXAyJyAnCisJcm0gLXJmIC5naXQvcmViYXNlLWFwcGx5ICYmCisJZ2l0IHJlc2V0IC0taGFyZCBpbml0aWFsICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGFtIC1wMiAtQzEgIiR0bSIvYW0tdGVzdC00LT8gJiYKKwlnaXQgYW0gLS1za2lwICYmCisJZ3JlcCAzIGZpbGUtMSAmJgorCWdyZXAgIl5UaHJlZSQiIGZpbGUtMgorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDQyNTIvYW0tdGVzdC0xLTEgYi90L3Q0MjUyL2FtLXRlc3QtMS0xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwYzA5ZGMKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MjUyL2FtLXRlc3QtMS0xCkBAIC0wLDAgKzEsMTkgQEAKK0Zyb206IEEgVSBUaG9yIDxhdS50aG9yQGV4YW1wbGUuY29tPgorRGF0ZTogVGh1IERlYyA0IDE2OjAwOjAwIDIwMDggLTA4MDAKK1N1YmplY3Q6IFRocmVlCisKK0FwcGxpY2F0aW9uIG9mIHRoaXMgc2hvdWxkIGJlIHJlamVjdGVkIGJlY2F1c2UgdGhlIGZpcnN0IGxpbmUgaW4gdGhlCitjb250ZXh0IGRvZXMgbm90IG1hdGNoLgorCitkaWZmIC0tZ2l0IGkvZmlsZS0xIHcvZmlsZS0xCitpbmRleCAwNmU1NjdiLi4xMGY4MzQyIDEwMDY0NAorLS0tIGkvZmlsZS0xCisrKysgdy9maWxlLTEKK0BAIC0xLDYgKzEsNiBAQAorIE9uZQorIDIKKy0zCisrVGhyZWUgCisgNAorIDUKKyA2CmRpZmYgLS1naXQgYS90L3Q0MjUyL2FtLXRlc3QtMS0yIGIvdC90NDI1Mi9hbS10ZXN0LTEtMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjg3NGFlCi0tLSAvZGV2L251bGwKKysrIGIvdC90NDI1Mi9hbS10ZXN0LTEtMgpAQCAtMCwwICsxLDIxIEBACitGcm9tOiBBIFUgVGhvciA8YXUudGhvckBleGFtcGxlLmNvbT4KK0RhdGU6IFRodSBEZWMgNCAxNjowMDowMCAyMDA4IC0wODAwCitTdWJqZWN0OiBTaXgKKworQXBwbHlpbmcgdGhpcyBwYXRjaCB3aXRoIC0td2hpdGVzcGFjZT1maXggc2hvdWxkIGxvc2UgCit0aGUgdHJhaWxpbmcgd2hpdGVzcGFjZSBhZnRlciAiU2l4Ii4KKworZGlmZiAtLWdpdCBpL2ZpbGUtMiB3L2ZpbGUtMgoraW5kZXggMDZlNTY3Yi4uYjZmM2ExNiAxMDA2NDQKKy0tLSBpL2ZpbGUtMgorKysrIHcvZmlsZS0yCitAQCAtMSw3ICsxLDcgQEAKKyAxCisgMgorLTMKKytUaHJlZQorIDQKKyA1CistNgorK1NpeCAKKyA3CmRpZmYgLS1naXQgYS90L3Q0MjUyL2FtLXRlc3QtMi0xIGIvdC90NDI1Mi9hbS10ZXN0LTItMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWRhOTRhCi0tLSAvZGV2L251bGwKKysrIGIvdC90NDI1Mi9hbS10ZXN0LTItMQpAQCAtMCwwICsxLDE5IEBACitGcm9tOiBBIFUgVGhvciA8YXUudGhvckBleGFtcGxlLmNvbT4KK0RhdGU6IFRodSBEZWMgNCAxNjowMDowMCAyMDA4IC0wODAwCitTdWJqZWN0OiBUaHJlZQorCitBcHBsaWNhdGlvbiBvZiB0aGlzIHNob3VsZCBiZSByZWplY3RlZCBldmVuIHdpdGggLUMxIGJlY2F1c2UgdGhlCitwcmVpbWFnZSBsaW5lIGluIHRoZSBjb250ZXh0IGRvZXMgbm90IG1hdGNoLgorCitkaWZmIC0tZ2l0IGkvZmlsZS0xIHcvZmlsZS0xCitpbmRleCAwNmU1NjdiLi4xMGY4MzQyIDEwMDY0NAorLS0tIGkvZmlsZS0xCisrKysgdy9maWxlLTEKK0BAIC0xLDYgKzEsNiBAQAorIDEKKyAyCistVHJlcworK1RocmVlIAorIDQKKyA1CisgNgpkaWZmIC0tZ2l0IGEvdC90NDI1Mi9hbS10ZXN0LTItMiBiL3QvdDQyNTIvYW0tdGVzdC0yLTIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFjNjYwMAotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQyNTIvYW0tdGVzdC0yLTIKQEAgLTAsMCArMSwyMSBAQAorRnJvbTogQSBVIFRob3IgPGF1LnRob3JAZXhhbXBsZS5jb20+CitEYXRlOiBUaHUgRGVjIDQgMTY6MDA6MDAgMjAwOCAtMDgwMAorU3ViamVjdDogU2l4CisKK0FwcGx5aW5nIHRoaXMgcGF0Y2ggd2l0aCAtQzEgc2hvdWxkIGJlIHN1Y2Nlc3NmdWwgZXZlbiB0aG91Z2ggCit0aGUgZmlyc3QgbGluZSBpbiB0aGUgY29udGV4dCBkb2VzIG5vdCBtYXRjaC4KKworZGlmZiAtLWdpdCBpL2ZpbGUtMiB3L2ZpbGUtMgoraW5kZXggMDZlNTY3Yi4uYjZmM2ExNiAxMDA2NDQKKy0tLSBpL2ZpbGUtMgorKysrIHcvZmlsZS0yCitAQCAtMSw3ICsxLDcgQEAKKyBPbmUKKyAyCistMworK1RocmVlCisgNAorIDUKKy02CisrU2l4CisgNwpkaWZmIC0tZ2l0IGEvdC90NDI1Mi9hbS10ZXN0LTMtMSBiL3QvdDQyNTIvYW0tdGVzdC0zLTEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA4ZTVhYgotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQyNTIvYW0tdGVzdC0zLTEKQEAgLTAsMCArMSwxOSBAQAorRnJvbTogQSBVIFRob3IgPGF1LnRob3JAZXhhbXBsZS5jb20+CitEYXRlOiBUaHUgRGVjIDQgMTY6MDA6MDAgMjAwOCAtMDgwMAorU3ViamVjdDogVGhyZWUKKworQXBwbGljYXRpb24gb2YgdGhpcyBzaG91bGQgYmUgcmVqZWN0ZWQgZXZlbiB3aXRoIC1wMiBiZWNhdXNlIHRoZQorcHJlaW1hZ2UgbGluZSBpbiB0aGUgY29udGV4dCBkb2VzIG5vdCBtYXRjaC4KKworZGlmZiAtLWdpdCBpL2p1bmsvZmlsZS0xIHcvanVuay9maWxlLTEKK2luZGV4IDA2ZTU2N2IuLjEwZjgzNDIgMTAwNjQ0CistLS0gaS9qdW5rL2ZpbGUtMQorKysrIHcvanVuay9maWxlLTEKK0BAIC0xLDYgKzEsNiBAQAorIDEKKyAyCistVHJlcworK1RocmVlIAorIDQKKyA1CisgNgpkaWZmIC0tZ2l0IGEvdC90NDI1Mi9hbS10ZXN0LTMtMiBiL3QvdDQyNTIvYW0tdGVzdC0zLTIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA4MWI5NgotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQyNTIvYW0tdGVzdC0zLTIKQEAgLTAsMCArMSwyMSBAQAorRnJvbTogQSBVIFRob3IgPGF1LnRob3JAZXhhbXBsZS5jb20+CitEYXRlOiBUaHUgRGVjIDQgMTY6MDA6MDAgMjAwOCAtMDgwMAorU3ViamVjdDogU2l4CisKK0FwcGx5aW5nIHRoaXMgcGF0Y2ggd2l0aCAtcDIgc2hvdWxkIGJlIHN1Y2Nlc3NmdWwgZXZlbiB0aG91Z2gKK3RoZSBwYXRjaCBpcyBhZ2FpbnN0IGEgd3JvbmcgbGV2ZWwuCisKK2RpZmYgLS1naXQgaS9qdW5rL2ZpbGUtMiB3L2p1bmsvZmlsZS0yCitpbmRleCAwNmU1NjdiLi5iNmYzYTE2IDEwMDY0NAorLS0tIGkvanVuay9maWxlLTIKKysrKyB3L2p1bmsvZmlsZS0yCitAQCAtMSw3ICsxLDcgQEAKKyAxCisgMgorLTMKKytUaHJlZQorIDQKKyA1CistNgorK1NpeAorIDcKZGlmZiAtLWdpdCBhL3QvdDQyNTIvYW0tdGVzdC00LTEgYi90L3Q0MjUyL2FtLXRlc3QtNC0xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0OGNkNmMKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MjUyL2FtLXRlc3QtNC0xCkBAIC0wLDAgKzEsMTkgQEAKK0Zyb206IEEgVSBUaG9yIDxhdS50aG9yQGV4YW1wbGUuY29tPgorRGF0ZTogVGh1IERlYyA0IDE2OjAwOjAwIDIwMDggLTA4MDAKK1N1YmplY3Q6IFRocmVlCisKK0FwcGxpY2F0aW9uIG9mIHRoaXMgc2hvdWxkIGJlIHJlamVjdGVkIGV2ZW4gd2l0aCAtQzEgLXAyIGJlY2F1c2UKK3RoZSBwcmVpbWFnZSBsaW5lIGluIHRoZSBjb250ZXh0IGRvZXMgbm90IG1hdGNoLgorCitkaWZmIC0tZ2l0IGkvanVuay9maWxlLTEgdy9qdW5rL2ZpbGUtMQoraW5kZXggMDZlNTY3Yi4uMTBmODM0MiAxMDA2NDQKKy0tLSBpL2p1bmsvZmlsZS0xCisrKysgdy9qdW5rL2ZpbGUtMQorQEAgLTEsNiArMSw2IEBACisgMQorIDIKKy1UcmVzCisrVGhyZWUgCisgNAorIDUKKyA2CmRpZmYgLS1naXQgYS90L3Q0MjUyL2FtLXRlc3QtNC0yIGIvdC90NDI1Mi9hbS10ZXN0LTQtMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTY5YmZhCi0tLSAvZGV2L251bGwKKysrIGIvdC90NDI1Mi9hbS10ZXN0LTQtMgpAQCAtMCwwICsxLDIyIEBACitGcm9tOiBBIFUgVGhvciA8YXUudGhvckBleGFtcGxlLmNvbT4KK0RhdGU6IFRodSBEZWMgNCAxNjowMDowMCAyMDA4IC0wODAwCitTdWJqZWN0OiBTaXgKKworQXBwbHlpbmcgdGhpcyBwYXRjaCB3aXRoIC1DMSAtcDIgc2hvdWxkIGJlIHN1Y2Nlc3NmdWwgZXZlbiB0aG91Z2gKK3RoZSBwYXRjaCBpcyBhZ2FpbnN0IGEgd3JvbmcgbGV2ZWwgYW5kIHRoZSBmaXJzdCBjb250ZXh0IGxpbmUgZG9lcworbm90IG1hdGNoLgorCitkaWZmIC0tZ2l0IGkvanVuay9maWxlLTIgdy9qdW5rL2ZpbGUtMgoraW5kZXggMDZlNTY3Yi4uYjZmM2ExNiAxMDA2NDQKKy0tLSBpL2p1bmsvZmlsZS0yCisrKysgdy9qdW5rL2ZpbGUtMgorQEAgLTEsNyArMSw3IEBACisgT25lCisgMgorLTMKKytUaHJlZQorIDQKKyA1CistNgorK1NpeAorIDcKZGlmZiAtLWdpdCBhL3QvdDQyNTIvZmlsZS0xLTAgYi90L3Q0MjUyL2ZpbGUtMS0wCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2ZTU2N2IKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MjUyL2ZpbGUtMS0wCkBAIC0wLDAgKzEsNyBAQAorMQorMgorMworNAorNQorNgorNwpkaWZmIC0tZ2l0IGEvdC90NDI1Mi9maWxlLTItMCBiL3QvdDQyNTIvZmlsZS0yLTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZlNTY3YgotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQyNTIvZmlsZS0yLTAKQEAgLTAsMCArMSw3IEBACisxCisyCiszCis0Cis1Cis2Cis3CmRpZmYgLS1naXQgYS90L3Q1MTAwLW1haWxpbmZvLnNoIGIvdC90NTEwMC1tYWlsaW5mby5zaAppbmRleCBiODUxYjNhLi5lNzBlYTk0IDEwMDc1NQotLS0gYS90L3Q1MTAwLW1haWxpbmZvLnNoCisrKyBiL3QvdDUxMDAtbWFpbGluZm8uc2gKQEAgLTgsMjEgKzgsMjIgQEAKIC4gLi90ZXN0LWxpYi5zaAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzcGxpdCBzYW1wbGUgYm94JyBcCi0JJ2dpdCBtYWlsc3BsaXQgLW8uIC4uL3Q1MTAwL3NhbXBsZS5tYm94ID5sYXN0ICYmCisJJ2dpdCBtYWlsc3BsaXQgLW8uICIkVEVTVF9ESVJFQ1RPUlkiL3Q1MTAwL3NhbXBsZS5tYm94ID5sYXN0ICYmCiAJbGFzdD1gY2F0IGxhc3RgICYmCiAJZWNobyB0b3RhbCBpcyAkbGFzdCAmJgogCXRlc3QgYGNhdCBsYXN0YCA9IDEzJwogCiBmb3IgbWFpbCBpbiBgZWNobyAwMCpgCiBkbwotCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgIm1haWxpbmZvICRtYWlsIiBcCi0JCSJnaXQgbWFpbGluZm8gLXUgbXNnJG1haWwgcGF0Y2gkbWFpbCA8JG1haWwgPmluZm8kbWFpbCAmJgorCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgIm1haWxpbmZvICRtYWlsIiAnCisJCWdpdCBtYWlsaW5mbyAtdSBtc2ckbWFpbCBwYXRjaCRtYWlsIDwkbWFpbCA+aW5mbyRtYWlsICYmCiAJCWVjaG8gbXNnICYmCi0JCWRpZmYgLi4vdDUxMDAvbXNnJG1haWwgbXNnJG1haWwgJiYKKwkJdGVzdF9jbXAgIiRURVNUX0RJUkVDVE9SWSIvdDUxMDAvbXNnJG1haWwgbXNnJG1haWwgJiYKIAkJZWNobyBwYXRjaCAmJgotCQlkaWZmIC4uL3Q1MTAwL3BhdGNoJG1haWwgcGF0Y2gkbWFpbCAmJgorCQl0ZXN0X2NtcCAiJFRFU1RfRElSRUNUT1JZIi90NTEwMC9wYXRjaCRtYWlsIHBhdGNoJG1haWwgJiYKIAkJZWNobyBpbmZvICYmCi0JCWRpZmYgLi4vdDUxMDAvaW5mbyRtYWlsIGluZm8kbWFpbCIKKwkJdGVzdF9jbXAgIiRURVNUX0RJUkVDVE9SWSIvdDUxMDAvaW5mbyRtYWlsIGluZm8kbWFpbAorCScKIGRvbmUKIAogCkBAIC00OSw4ICs1MCw4IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jlc3BlY3QgTlVMcycgJwogCi0JZ2l0IG1haWxzcGxpdCAtZDMgLW8uIC4uL3Q1MTAwL251bC1wbGFpbiAmJgotCWNtcCAuLi90NTEwMC9udWwtcGxhaW4gMDAxICYmCisJZ2l0IG1haWxzcGxpdCAtZDMgLW8uICIkVEVTVF9ESVJFQ1RPUlkiL3Q1MTAwL251bC1wbGFpbiAmJgorCXRlc3RfY21wICIkVEVTVF9ESVJFQ1RPUlkiL3Q1MTAwL251bC1wbGFpbiAwMDEgJiYKIAkoY2F0IDAwMSB8IGdpdCBtYWlsaW5mbyBtc2cgcGF0Y2gpICYmCiAJdGVzdCA0ID0gJCh3YyAtbCA8IHBhdGNoKQogCkBAIC01OCwxMCArNTksMTAgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnUHJlc2VydmUgTlVMcyBvdXQgb2YgTUlNRSBlbmNvZGVkIG1lc3NhZ2UnICcKIAotCWdpdCBtYWlsc3BsaXQgLWQ1IC1vLiAuLi90NTEwMC9udWwtYjY0LmluICYmCi0JY21wIC4uL3Q1MTAwL251bC1iNjQuaW4gMDAwMDEgJiYKKwlnaXQgbWFpbHNwbGl0IC1kNSAtby4gIiRURVNUX0RJUkVDVE9SWSIvdDUxMDAvbnVsLWI2NC5pbiAmJgorCXRlc3RfY21wICIkVEVTVF9ESVJFQ1RPUlkiL3Q1MTAwL251bC1iNjQuaW4gMDAwMDEgJiYKIAlnaXQgbWFpbGluZm8gbXNnIHBhdGNoIDwwMDAwMSAmJgotCWNtcCAuLi90NTEwMC9udWwtYjY0LmV4cGVjdCBwYXRjaAorCXRlc3RfY21wICIkVEVTVF9ESVJFQ1RPUlkiL3Q1MTAwL251bC1iNjQuZXhwZWN0IHBhdGNoCiAKICcKIApkaWZmIC0tZ2l0IGEvdC90NTMwMC1wYWNrLW9iamVjdC5zaCBiL3QvdDUzMDAtcGFjay1vYmplY3Quc2gKaW5kZXggMjg1MmEwMy4uMDQ1MjI4NSAxMDA3NTUKLS0tIGEvdC90NTMwMC1wYWNrLW9iamVjdC5zaAorKysgYi90L3Q1MzAwLXBhY2stb2JqZWN0LnNoCkBAIC0yNzIsNyArMjcyLDggQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ21ha2Ugc3VyZSBpbmRleC1wYWNrIGRldGVjdHMgdGhlIFNIQTEgY29sbGlzaW9uJyBcCi0gICAgJ3Rlc3RfbXVzdF9mYWlsIGdpdCBpbmRleC1wYWNrIC1vIGJhZC5pZHggdGVzdC0zLnBhY2snCisgICAgJ3Rlc3RfbXVzdF9mYWlsIGdpdCBpbmRleC1wYWNrIC1vIGJhZC5pZHggdGVzdC0zLnBhY2sgMj5tc2cgJiYKKyAgICAgZ3JlcCAiU0hBMSBDT0xMSVNJT04gRk9VTkQiIG1zZycKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ2hvbm9yIHBhY2sucGFja1NpemVMaW1pdCcgXApkaWZmIC0tZ2l0IGEvdC90NTMwMi1wYWNrLWluZGV4LnNoIGIvdC90NTMwMi1wYWNrLWluZGV4LnNoCmluZGV4IDM0NGFiMjUuLjg4NGUyNDIgMTAwNzU1Ci0tLSBhL3QvdDUzMDItcGFjay1pbmRleC5zaAorKysgYi90L3Q1MzAyLXBhY2staW5kZXguc2gKQEAgLTExLDEzICsxMSwxOCBAQAogICAgICdybSAtcmYgLmdpdAogICAgICBnaXQgaW5pdCAmJgogICAgICBpPTEgJiYKLQkgd2hpbGUgdGVzdCAkaSAtbGUgMTAwCisgICAgIHdoaWxlIHRlc3QgJGkgLWxlIDEwMAogICAgICBkbwotCQkgaT1gcHJpbnRmICclMDNpJyAkaWAKLSAgICAgICAgIGVjaG8gJGkgPmZpbGVfJGkgJiYKLSAgICAgICAgIHRlc3QtZ2VucmFuZG9tICIkaSIgODE5MiA+PmZpbGVfJGkgJiYKLSAgICAgICAgIGdpdCB1cGRhdGUtaW5kZXggLS1hZGQgZmlsZV8kaSAmJgotCQkgaT1gZXhwciAkaSArIDFgIHx8IHJldHVybiAxCisgICAgICAgICBpaWk9YHByaW50ZiAnJTAzaScgJGlgCisgICAgICAgICB0ZXN0LWdlbnJhbmRvbSAiYmFyIiAyMDAgPiB3aWRlX2RlbHRhXyRpaWkgJiYKKyAgICAgICAgIHRlc3QtZ2VucmFuZG9tICJiYXogJGlpaSIgNTAgPj4gd2lkZV9kZWx0YV8kaWlpICYmCisgICAgICAgICB0ZXN0LWdlbnJhbmRvbSAiZm9vIiRpIDEwMCA+IGRlZXBfZGVsdGFfJGlpaSAmJgorICAgICAgICAgdGVzdC1nZW5yYW5kb20gImZvbyJgZXhwciAkaSArIDFgIDEwMCA+PiBkZWVwX2RlbHRhXyRpaWkgJiYKKyAgICAgICAgIHRlc3QtZ2VucmFuZG9tICJmb28iYGV4cHIgJGkgKyAyYCAxMDAgPj4gZGVlcF9kZWx0YV8kaWlpICYmCisgICAgICAgICBlY2hvICRpaWkgPmZpbGVfJGlpaSAmJgorICAgICAgICAgdGVzdC1nZW5yYW5kb20gIiRpaWkiIDgxOTIgPj5maWxlXyRpaWkgJiYKKyAgICAgICAgIGdpdCB1cGRhdGUtaW5kZXggLS1hZGQgZmlsZV8kaWlpIGRlZXBfZGVsdGFfJGlpaSB3aWRlX2RlbHRhXyRpaWkgJiYKKyAgICAgICAgIGk9YGV4cHIgJGkgKyAxYCB8fCByZXR1cm4gMQogICAgICBkb25lICYmCiAgICAgIHsgZWNobyAxMDEgJiYgdGVzdC1nZW5yYW5kb20gMTAwIDgxOTI7IH0gPmZpbGVfMTAxICYmCiAgICAgIGdpdCB1cGRhdGUtaW5kZXggLS1hZGQgZmlsZV8xMDEgJiYKQEAgLTkyLDYgKzk3LDMxIEBACiAgICAgJzY0LWJpdCBvZmZzZXRzOiBpbmRleC1wYWNrIHJlc3VsdCBzaG91bGQgbWF0Y2ggcGFjay1vYmplY3RzIG9uZScgXAogICAgICdjbXAgInRlc3QtMy0ke3BhY2szfS5pZHgiICIzLmlkeCInCiAKKyMgcmV0dXJucyB0aGUgb2JqZWN0IG51bWJlciBmb3IgZ2l2ZW4gb2JqZWN0IGluIGdpdmVuIHBhY2sgaW5kZXgKK2luZGV4X29ial9ucigpCit7CisgICAgaWR4X2ZpbGU9JDEKKyAgICBvYmplY3Rfc2hhMT0kMgorICAgIG5yPTAKKyAgICBnaXQgc2hvdy1pbmRleCA8ICRpZHhfZmlsZSB8CisgICAgd2hpbGUgcmVhZCBvZmZzIHNoYTEgZXh0cmEKKyAgICBkbworICAgICAgbnI9JCgoJG5yICsgMSkpCisgICAgICB0ZXN0ICIkc2hhMSIgPSAiJG9iamVjdF9zaGExIiB8fCBjb250aW51ZQorICAgICAgZWNobyAiJCgoJG5yIC0gMSkpIgorICAgICAgYnJlYWsKKyAgICBkb25lCit9CisKKyMgcmV0dXJucyB0aGUgcGFjayBvZmZzZXQgZm9yIGdpdmVuIG9iamVjdCBhcyBmb3VuZCBpbiBnaXZlbiBwYWNrIGluZGV4CitpbmRleF9vYmpfb2Zmc2V0KCkKK3sKKyAgICBpZHhfZmlsZT0kMQorICAgIG9iamVjdF9zaGExPSQyCisgICAgZ2l0IHNob3ctaW5kZXggPCAkaWR4X2ZpbGUgfCBncmVwICRvYmplY3Rfc2hhMSB8CisgICAgKCByZWFkIG9mZnMgZXh0cmEgJiYgZWNobyAiJG9mZnMiICkKK30KKwogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ1tpbmRleCB2MV0gMSkgc3RyZWFtIHBhY2sgdG8gcmVwb3NpdG9yeScgXAogICAgICdnaXQgaW5kZXgtcGFjayAtLWluZGV4LXZlcnNpb249MSAtLXN0ZGluIDwgInRlc3QtMS0ke3BhY2sxfS5wYWNrIiAmJgpAQCAtMTAyLDE5ICsxMzIsMjIgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ1tpbmRleCB2MV0gMikgY3JlYXRlIGEgc3RlYWx0aCBjb3JydXB0aW9uIGluIGEgZGVsdGEgYmFzZSByZWZlcmVuY2UnIFwKLSAgICAnIyB0aGlzIHRlc3QgYXNzdW1lcyBhIGRlbHRhIHNtYWxsZXIgdGhhbiAxNiBieXRlcyBhdCB0aGUgZW5kIG9mIHRoZSBwYWNrCi0gICAgIGdpdCBzaG93LWluZGV4IDwxLmlkeCB8IHNvcnQgLW4gfCBzZWQgLW5lIFwkcCB8ICgKLSAgICAgICByZWFkIGRlbHRhX29mZnMgZGVsdGFfc2hhMSAmJgotICAgICAgIGdpdCBjYXQtZmlsZSBibG9iICIkZGVsdGFfc2hhMSIgPiBibG9iXzEgJiYKLSAgICAgICBjaG1vZCArdyAiLmdpdC9vYmplY3RzL3BhY2svcGFjay0ke3BhY2sxfS5wYWNrIiAmJgotICAgICAgIGRkIG9mPSIuZ2l0L29iamVjdHMvcGFjay9wYWNrLSR7cGFjazF9LnBhY2siIHNlZWs9JCgoJGRlbHRhX29mZnMgKyAxKSkgXAotCSAgaWY9Ii5naXQvb2JqZWN0cy9wYWNrL3BhY2stJHtwYWNrMX0uaWR4IiBza2lwPSQoKDI1NiAqIDQgKyA0KSkgXAotCSAgYnM9MSBjb3VudD0yMCBjb252PW5vdHJ1bmMgJiYKLSAgICAgICBnaXQgY2F0LWZpbGUgYmxvYiAiJGRlbHRhX3NoYTEiID4gYmxvYl8yICknCisgICAgJyMgVGhpcyB0ZXN0IGFzc3VtZXMgZmlsZV8xMDEgaXMgYSBkZWx0YSBzbWFsbGVyIHRoYW4gMTYgYnl0ZXMuCisgICAgICMgSXQgc2hvdWxkIGJlIGFnYWluc3QgZmlsZV8xMDAgYnV0IHdlIHN1YnN0aXR1dGUgaXRzIGJhc2UgZm9yIGZpbGVfMDk5CisgICAgIHNoYTFfMTAxPWBnaXQgaGFzaC1vYmplY3QgZmlsZV8xMDFgICYmCisgICAgIHNoYTFfMDk5PWBnaXQgaGFzaC1vYmplY3QgZmlsZV8wOTlgICYmCisgICAgIG9mZnNfMTAxPWBpbmRleF9vYmpfb2Zmc2V0IDEuaWR4ICRzaGExXzEwMWAgJiYKKyAgICAgbnJfMDk5PWBpbmRleF9vYmpfbnIgMS5pZHggJHNoYTFfMDk5YCAmJgorICAgICBjaG1vZCArdyAiLmdpdC9vYmplY3RzL3BhY2svcGFjay0ke3BhY2sxfS5wYWNrIiAmJgorICAgICBkZCBvZj0iLmdpdC9vYmplY3RzL3BhY2svcGFjay0ke3BhY2sxfS5wYWNrIiBzZWVrPSQoKCRvZmZzXzEwMSArIDEpKSBcCisgICAgICAgIGlmPSIuZ2l0L29iamVjdHMvcGFjay9wYWNrLSR7cGFjazF9LmlkeCIgXAorICAgICAgICBza2lwPSQoKDQgKyAyNTYgKiA0ICsgJG5yXzA5OSAqIDI0KSkgXAorICAgICAgICBicz0xIGNvdW50PTIwIGNvbnY9bm90cnVuYyAmJgorICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkc2hhMV8xMDEgPiBmaWxlXzEwMV9mb28xJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnW2luZGV4IHYxXSAzKSBjb3JydXB0ZWQgZGVsdGEgaGFwcGlseSByZXR1cm5lZCB3cm9uZyBkYXRhJyBcCi0gICAgJyEgY21wIGJsb2JfMSBibG9iXzInCisgICAgJ3Rlc3QgLWYgZmlsZV8xMDFfZm9vMSAmJiAhIGNtcCBmaWxlXzEwMSBmaWxlXzEwMV9mb28xJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnW2luZGV4IHYxXSA0KSBjb25maXJtIHRoYXQgdGhlIHBhY2sgaXMgYWN0dWFsbHkgY29ycnVwdGVkJyBcCkBAIC0xNDAsMTkgKzE3MywyMiBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnW2luZGV4IHYyXSAyKSBjcmVhdGUgYSBzdGVhbHRoIGNvcnJ1cHRpb24gaW4gYSBkZWx0YSBiYXNlIHJlZmVyZW5jZScgXAotICAgICcjIHRoaXMgdGVzdCBhc3N1bWVzIGEgZGVsdGEgc21hbGxlciB0aGFuIDE2IGJ5dGVzIGF0IHRoZSBlbmQgb2YgdGhlIHBhY2sKLSAgICAgZ2l0IHNob3ctaW5kZXggPDEuaWR4IHwgc29ydCAtbiB8IHNlZCAtbmUgXCRwIHwgKAotICAgICAgIHJlYWQgZGVsdGFfb2ZmcyBkZWx0YV9zaGExIGRlbHRhX2NyYyAmJgotICAgICAgIGdpdCBjYXQtZmlsZSBibG9iICIkZGVsdGFfc2hhMSIgPiBibG9iXzMgJiYKLSAgICAgICBjaG1vZCArdyAiLmdpdC9vYmplY3RzL3BhY2svcGFjay0ke3BhY2sxfS5wYWNrIiAmJgotICAgICAgIGRkIG9mPSIuZ2l0L29iamVjdHMvcGFjay9wYWNrLSR7cGFjazF9LnBhY2siIHNlZWs9JCgoJGRlbHRhX29mZnMgKyAxKSkgXAotCSAgaWY9Ii5naXQvb2JqZWN0cy9wYWNrL3BhY2stJHtwYWNrMX0uaWR4IiBza2lwPSQoKDggKyAyNTYgKiA0KSkgXAotCSAgYnM9MSBjb3VudD0yMCBjb252PW5vdHJ1bmMgJiYKLSAgICAgICBnaXQgY2F0LWZpbGUgYmxvYiAiJGRlbHRhX3NoYTEiID4gYmxvYl80ICknCisgICAgJyMgVGhpcyB0ZXN0IGFzc3VtZXMgZmlsZV8xMDEgaXMgYSBkZWx0YSBzbWFsbGVyIHRoYW4gMTYgYnl0ZXMuCisgICAgICMgSXQgc2hvdWxkIGJlIGFnYWluc3QgZmlsZV8xMDAgYnV0IHdlIHN1YnN0aXR1dGUgaXRzIGJhc2UgZm9yIGZpbGVfMDk5CisgICAgIHNoYTFfMTAxPWBnaXQgaGFzaC1vYmplY3QgZmlsZV8xMDFgICYmCisgICAgIHNoYTFfMDk5PWBnaXQgaGFzaC1vYmplY3QgZmlsZV8wOTlgICYmCisgICAgIG9mZnNfMTAxPWBpbmRleF9vYmpfb2Zmc2V0IDEuaWR4ICRzaGExXzEwMWAgJiYKKyAgICAgbnJfMDk5PWBpbmRleF9vYmpfbnIgMS5pZHggJHNoYTFfMDk5YCAmJgorICAgICBjaG1vZCArdyAiLmdpdC9vYmplY3RzL3BhY2svcGFjay0ke3BhY2sxfS5wYWNrIiAmJgorICAgICBkZCBvZj0iLmdpdC9vYmplY3RzL3BhY2svcGFjay0ke3BhY2sxfS5wYWNrIiBzZWVrPSQoKCRvZmZzXzEwMSArIDEpKSBcCisgICAgICAgIGlmPSIuZ2l0L29iamVjdHMvcGFjay9wYWNrLSR7cGFjazF9LmlkeCIgXAorICAgICAgICBza2lwPSQoKDggKyAyNTYgKiA0ICsgJG5yXzA5OSAqIDIwKSkgXAorICAgICAgICBicz0xIGNvdW50PTIwIGNvbnY9bm90cnVuYyAmJgorICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkc2hhMV8xMDEgPiBmaWxlXzEwMV9mb28yJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnW2luZGV4IHYyXSAzKSBjb3JydXB0ZWQgZGVsdGEgaGFwcGlseSByZXR1cm5lZCB3cm9uZyBkYXRhJyBcCi0gICAgJyEgY21wIGJsb2JfMyBibG9iXzQnCisgICAgJ3Rlc3QgLWYgZmlsZV8xMDFfZm9vMiAmJiAhIGNtcCBmaWxlXzEwMSBmaWxlXzEwMV9mb28yJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnW2luZGV4IHYyXSA0KSBjb25maXJtIHRoYXQgdGhlIHBhY2sgaXMgYWN0dWFsbHkgY29ycnVwdGVkJyBcCkBAIC0xNjAsMTYgKzE5NiwxOSBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnW2luZGV4IHYyXSA1KSBwYWNrLW9iamVjdHMgcmVmdXNlcyB0byByZXVzZSBjb3JydXB0ZWQgZGF0YScgXAotICAgICd0ZXN0X211c3RfZmFpbCBnaXQgcGFjay1vYmplY3RzIHRlc3QtNSA8b2JqLWxpc3QnCisgICAgJ3Rlc3RfbXVzdF9mYWlsIGdpdCBwYWNrLW9iamVjdHMgdGVzdC01IDxvYmotbGlzdCAmJgorICAgICB0ZXN0X211c3RfZmFpbCBnaXQgcGFjay1vYmplY3RzIC0tbm8tcmV1c2Utb2JqZWN0IHRlc3QtNiA8b2JqLWxpc3QnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdbaW5kZXggdjJdIDYpIHZlcmlmeS1wYWNrIGRldGVjdHMgQ1JDIG1pc21hdGNoJyBcCiAgICAgJ3JtIC1mIC5naXQvb2JqZWN0cy9wYWNrLyogJiYKICAgICAgZ2l0IGluZGV4LXBhY2sgLS1pbmRleC12ZXJzaW9uPTIgLS1zdGRpbiA8ICJ0ZXN0LTEtJHtwYWNrMX0ucGFjayIgJiYKICAgICAgZ2l0IHZlcmlmeS1wYWNrICIuZ2l0L29iamVjdHMvcGFjay9wYWNrLSR7cGFjazF9LnBhY2siICYmCisgICAgIG9iaj1gZ2l0IGhhc2gtb2JqZWN0IGZpbGVfMDAxYCAmJgorICAgICBucj1gaW5kZXhfb2JqX25yICIuZ2l0L29iamVjdHMvcGFjay9wYWNrLSR7cGFjazF9LmlkeCIgJG9iamAgJiYKICAgICAgY2htb2QgK3cgIi5naXQvb2JqZWN0cy9wYWNrL3BhY2stJHtwYWNrMX0uaWR4IiAmJgogICAgICBkZCBpZj0vZGV2L3plcm8gb2Y9Ii5naXQvb2JqZWN0cy9wYWNrL3BhY2stJHtwYWNrMX0uaWR4IiBjb252PW5vdHJ1bmMgXAotICAgICAgICBicz0xIGNvdW50PTQgc2Vlaz0kKCg4ICsgMjU2ICogNCArIGB3YyAtbCA8b2JqLWxpc3RgICogMjAgKyAwKSkgJiYKKyAgICAgICAgYnM9MSBjb3VudD00IHNlZWs9JCgoOCArIDI1NiAqIDQgKyBgd2MgLWwgPG9iai1saXN0YCAqIDIwICsgJG5yICogNCkpICYmCiAgICAgICggd2hpbGUgcmVhZCBvYmoKICAgICAgICBkbyBnaXQgY2F0LWZpbGUgLXAgJG9iaiA+L2Rldi9udWxsIHx8IGV4aXQgMQogICAgICAgIGRvbmUgPG9iai1saXN0ICkgJiYKZGlmZiAtLWdpdCBhL3QvdDUzMDMtcGFjay1jb3JydXB0aW9uLXJlc2lsaWVuY2Uuc2ggYi90L3Q1MzAzLXBhY2stY29ycnVwdGlvbi1yZXNpbGllbmNlLnNoCmluZGV4IDMxYjIwYjIuLmQ0ZTMwZmMgMTAwNzU1Ci0tLSBhL3QvdDUzMDMtcGFjay1jb3JydXB0aW9uLXJlc2lsaWVuY2Uuc2gKKysrIGIvdC90NTMwMy1wYWNrLWNvcnJ1cHRpb24tcmVzaWxpZW5jZS5zaApAQCAtNDEsMTEgKzQxLDE3IEBACiAgICAgZ2l0IHZlcmlmeS1wYWNrIC12ICR7cGFja30ucGFjawogfQogCitkb19yZXBhY2soKSB7CisgICAgcGFjaz1gcHJpbnRmICIkYmxvYl8xXG4kYmxvYl8yXG4kYmxvYl8zXG4iIHwKKyAgICAgICAgICBnaXQgcGFjay1vYmplY3RzICRAIC5naXQvb2JqZWN0cy9wYWNrL3BhY2tgICYmCisgICAgcGFjaz0iLmdpdC9vYmplY3RzL3BhY2svcGFjay0ke3BhY2t9IgorfQorCiBkb19jb3JydXB0X29iamVjdCgpIHsKICAgICBvZnM9YGdpdCBzaG93LWluZGV4IDwgJHtwYWNrfS5pZHggfCBncmVwICQxIHwgY3V0IC1mMSAtZCIgImAgJiYKICAgICBvZnM9JCgoJG9mcyArICQyKSkgJiYKICAgICBjaG1vZCArdyAke3BhY2t9LnBhY2sgJiYKLSAgICBkZCBpZj0vZGV2L3plcm8gb2Y9JHtwYWNrfS5wYWNrIGNvdW50PTEgYnM9MSBjb252PW5vdHJ1bmMgc2Vlaz0kb2ZzICYmCisgICAgZGQgb2Y9JHtwYWNrfS5wYWNrIGNvdW50PTEgYnM9MSBjb252PW5vdHJ1bmMgc2Vlaz0kb2ZzICYmCiAgICAgdGVzdF9tdXN0X2ZhaWwgZ2l0IHZlcmlmeS1wYWNrICR7cGFja30ucGFjawogfQogCkBAIC02MCw3ICs2Niw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdjcmVhdGUgY29ycnVwdGlvbiBpbiBoZWFkZXIgb2YgZmlyc3Qgb2JqZWN0JyBcCi0gICAgJ2RvX2NvcnJ1cHRfb2JqZWN0ICRibG9iXzEgMCAmJgorICAgICdkb19jb3JydXB0X29iamVjdCAkYmxvYl8xIDAgPCAvZGV2L3plcm8gJiYKICAgICAgdGVzdF9tdXN0X2ZhaWwgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMSA+IC9kZXYvbnVsbCAmJgogICAgICB0ZXN0X211c3RfZmFpbCBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8yID4gL2Rldi9udWxsICYmCiAgICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzMgPiAvZGV2L251bGwnCkBAIC0xMTksNyArMTI1LDcgQEAKICAgICAnY3JlYXRlIGNvcnJ1cHRpb24gaW4gaGVhZGVyIG9mIGZpcnN0IGRlbHRhJyBcCiAgICAgJ2NyZWF0ZV9uZXdfcGFjayAmJgogICAgICBnaXQgcHJ1bmUtcGFja2VkICYmCi0gICAgIGRvX2NvcnJ1cHRfb2JqZWN0ICRibG9iXzIgMCAmJgorICAgICBkb19jb3JydXB0X29iamVjdCAkYmxvYl8yIDAgPCAvZGV2L3plcm8gJiYKICAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMSA+IC9kZXYvbnVsbCAmJgogICAgICB0ZXN0X211c3RfZmFpbCBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8yID4gL2Rldi9udWxsICYmCiAgICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzMgPiAvZGV2L251bGwnCkBAIC0xMzQsNiArMTQwLDE1IEBACiAgICAgIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzMgPiAvZGV2L251bGwnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAorICAgICcuLi4gYW5kIHRoZW4gYSByZXBhY2sgImNsZWFycyIgdGhlIGNvcnJ1cHRpb24nIFwKKyAgICAnZG9fcmVwYWNrICYmCisgICAgIGdpdCBwcnVuZS1wYWNrZWQgJiYKKyAgICAgZ2l0IHZlcmlmeS1wYWNrICR7cGFja30ucGFjayAmJgorICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8xID4gL2Rldi9udWxsICYmCisgICAgIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzIgPiAvZGV2L251bGwgJiYKKyAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMyA+IC9kZXYvbnVsbCcKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ2NyZWF0ZSBjb3JydXB0aW9uIGluIGRhdGEgb2YgZmlyc3QgZGVsdGEnIFwKICAgICAnY3JlYXRlX25ld19wYWNrICYmCiAgICAgIGdpdCBwcnVuZS1wYWNrZWQgJiYKQEAgLTE1MywxMCArMTY4LDE5IEBACiAgICAgIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzMgPiAvZGV2L251bGwnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAorICAgICcuLi4gYW5kIHRoZW4gYSByZXBhY2sgImNsZWFycyIgdGhlIGNvcnJ1cHRpb24nIFwKKyAgICAnZG9fcmVwYWNrICYmCisgICAgIGdpdCBwcnVuZS1wYWNrZWQgJiYKKyAgICAgZ2l0IHZlcmlmeS1wYWNrICR7cGFja30ucGFjayAmJgorICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8xID4gL2Rldi9udWxsICYmCisgICAgIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzIgPiAvZGV2L251bGwgJiYKKyAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMyA+IC9kZXYvbnVsbCcKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ2NvcnJ1cHRpb24gaW4gZGVsdGEgYmFzZSByZWZlcmVuY2Ugb2YgZmlyc3QgZGVsdGEgKE9CSl9SRUZfREVMVEEpJyBcCiAgICAgJ2NyZWF0ZV9uZXdfcGFjayAmJgogICAgICBnaXQgcHJ1bmUtcGFja2VkICYmCi0gICAgIGRvX2NvcnJ1cHRfb2JqZWN0ICRibG9iXzIgMiAmJgorICAgICBkb19jb3JydXB0X29iamVjdCAkYmxvYl8yIDIgPCAvZGV2L3plcm8gJiYKICAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMSA+IC9kZXYvbnVsbCAmJgogICAgICB0ZXN0X211c3RfZmFpbCBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8yID4gL2Rldi9udWxsICYmCiAgICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzMgPiAvZGV2L251bGwnCkBAIC0xNzEsMTcgKzE5NSw3NSBAQAogICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8zID4gL2Rldi9udWxsJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAnY29ycnVwdGlvbiBpbiBkZWx0YSBiYXNlIHJlZmVyZW5jZSBvZiBmaXJzdCBkZWx0YSAoT0JKX09GU19ERUxUQSknIFwKKyAgICAnLi4uIGFuZCB0aGVuIGEgcmVwYWNrICJjbGVhcnMiIHRoZSBjb3JydXB0aW9uJyBcCisgICAgJ2RvX3JlcGFjayAmJgorICAgICBnaXQgcHJ1bmUtcGFja2VkICYmCisgICAgIGdpdCB2ZXJpZnktcGFjayAke3BhY2t9LnBhY2sgJiYKKyAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMSA+IC9kZXYvbnVsbCAmJgorICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8yID4gL2Rldi9udWxsICYmCisgICAgIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzMgPiAvZGV2L251bGwnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAorICAgICdjb3JydXB0aW9uICMwIGluIGRlbHRhIGJhc2UgcmVmZXJlbmNlIG9mIGZpcnN0IGRlbHRhIChPQkpfT0ZTX0RFTFRBKScgXAogICAgICdjcmVhdGVfbmV3X3BhY2sgLS1kZWx0YS1iYXNlLW9mZnNldCAmJgogICAgICBnaXQgcHJ1bmUtcGFja2VkICYmCi0gICAgIGRvX2NvcnJ1cHRfb2JqZWN0ICRibG9iXzIgMiAmJgorICAgICBkb19jb3JydXB0X29iamVjdCAkYmxvYl8yIDIgPCAvZGV2L3plcm8gJiYKICAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMSA+IC9kZXYvbnVsbCAmJgogICAgICB0ZXN0X211c3RfZmFpbCBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8yID4gL2Rldi9udWxsICYmCiAgICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzMgPiAvZGV2L251bGwnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICcuLi4gYW5kIGEgcmVkdW5kYW50IHBhY2sgYWxsb3dzIGZvciBmdWxsIHJlY292ZXJ5IHRvbycgXAorICAgICcuLi4gYnV0IGhhdmluZyBhIGxvb3NlIGNvcHkgYWxsb3dzIGZvciBmdWxsIHJlY292ZXJ5JyBcCiAgICAgJ212ICR7cGFja30uaWR4IHRtcCAmJgorICAgICBnaXQgaGFzaC1vYmplY3QgLXQgYmxvYiAtdyBmaWxlXzIgJiYKKyAgICAgbXYgdG1wICR7cGFja30uaWR4ICYmCisgICAgIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzEgPiAvZGV2L251bGwgJiYKKyAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMiA+IC9kZXYvbnVsbCAmJgorICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8zID4gL2Rldi9udWxsJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKKyAgICAnLi4uIGFuZCB0aGVuIGEgcmVwYWNrICJjbGVhcnMiIHRoZSBjb3JydXB0aW9uJyBcCisgICAgJ2RvX3JlcGFjayAtLWRlbHRhLWJhc2Utb2Zmc2V0ICYmCisgICAgIGdpdCBwcnVuZS1wYWNrZWQgJiYKKyAgICAgZ2l0IHZlcmlmeS1wYWNrICR7cGFja30ucGFjayAmJgorICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8xID4gL2Rldi9udWxsICYmCisgICAgIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzIgPiAvZGV2L251bGwgJiYKKyAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMyA+IC9kZXYvbnVsbCcKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBcCisgICAgJ2NvcnJ1cHRpb24gIzEgaW4gZGVsdGEgYmFzZSByZWZlcmVuY2Ugb2YgZmlyc3QgZGVsdGEgKE9CSl9PRlNfREVMVEEpJyBcCisgICAgJ2NyZWF0ZV9uZXdfcGFjayAtLWRlbHRhLWJhc2Utb2Zmc2V0ICYmCisgICAgIGdpdCBwcnVuZS1wYWNrZWQgJiYKKyAgICAgcHJpbnRmICJcMDAxIiB8IGRvX2NvcnJ1cHRfb2JqZWN0ICRibG9iXzIgMiAmJgorICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8xID4gL2Rldi9udWxsICYmCisgICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzIgPiAvZGV2L251bGwgJiYKKyAgICAgdGVzdF9tdXN0X2ZhaWwgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMyA+IC9kZXYvbnVsbCcKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBcCisgICAgJy4uLiBidXQgaGF2aW5nIGEgbG9vc2UgY29weSBhbGxvd3MgZm9yIGZ1bGwgcmVjb3ZlcnknIFwKKyAgICAnbXYgJHtwYWNrfS5pZHggdG1wICYmCisgICAgIGdpdCBoYXNoLW9iamVjdCAtdCBibG9iIC13IGZpbGVfMiAmJgorICAgICBtdiB0bXAgJHtwYWNrfS5pZHggJiYKKyAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMSA+IC9kZXYvbnVsbCAmJgorICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8yID4gL2Rldi9udWxsICYmCisgICAgIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzMgPiAvZGV2L251bGwnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAorICAgICcuLi4gYW5kIHRoZW4gYSByZXBhY2sgImNsZWFycyIgdGhlIGNvcnJ1cHRpb24nIFwKKyAgICAnZG9fcmVwYWNrIC0tZGVsdGEtYmFzZS1vZmZzZXQgJiYKKyAgICAgZ2l0IHBydW5lLXBhY2tlZCAmJgorICAgICBnaXQgdmVyaWZ5LXBhY2sgJHtwYWNrfS5wYWNrICYmCisgICAgIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzEgPiAvZGV2L251bGwgJiYKKyAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMiA+IC9kZXYvbnVsbCAmJgorICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8zID4gL2Rldi9udWxsJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKKyAgICAnLi4uIGFuZCBhIHJlZHVuZGFudCBwYWNrIGFsbG93cyBmb3IgZnVsbCByZWNvdmVyeSB0b28nIFwKKyAgICAnZG9fY29ycnVwdF9vYmplY3QgJGJsb2JfMiAyIDwgL2Rldi96ZXJvICYmCisgICAgIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzEgPiAvZGV2L251bGwgJiYKKyAgICAgdGVzdF9tdXN0X2ZhaWwgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMiA+IC9kZXYvbnVsbCAmJgorICAgICB0ZXN0X211c3RfZmFpbCBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8zID4gL2Rldi9udWxsICYmCisgICAgIG12ICR7cGFja30uaWR4IHRtcCAmJgogICAgICBnaXQgaGFzaC1vYmplY3QgLXQgYmxvYiAtdyBmaWxlXzEgJiYKICAgICAgZ2l0IGhhc2gtb2JqZWN0IC10IGJsb2IgLXcgZmlsZV8yICYmCiAgICAgIHByaW50ZiAiJGJsb2JfMVxuJGJsb2JfMlxuIiB8IGdpdCBwYWNrLW9iamVjdHMgLmdpdC9vYmplY3RzL3BhY2svcGFjayAmJgpkaWZmIC0tZ2l0IGEvdC90NTMwNy1wYWNrLW1pc3NpbmctY29tbWl0LnNoIGIvdC90NTMwNy1wYWNrLW1pc3NpbmctY29tbWl0LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmFlNTJhMTgKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q1MzA3LXBhY2stbWlzc2luZy1jb21taXQuc2gKQEAgLTAsMCArMSwzOSBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J3BhY2sgc2hvdWxkIG5vdGljZSBtaXNzaW5nIGNvbW1pdCBvYmplY3RzJworCisuIC4vdGVzdC1saWIuc2gKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBzZXR1cCAnCisJZm9yIGkgaW4gMSAyIDMgNCA1CisJZG8KKwkJZWNobyAiJGkiID4iZmlsZSRpIiAmJgorCQlnaXQgYWRkICJmaWxlJGkiICYmCisJCXRlc3RfdGljayAmJgorCQlnaXQgY29tbWl0IC1tICIkaSIgJiYKKwkJZ2l0IHRhZyAidGFnJGkiCisJZG9uZSAmJgorCW9iaj0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgdGFnMykgJiYKKwlmYW5vdXQ9JChleHByICIkb2JqIiA6ICJcKC4uXCkiKSAmJgorCXJlbWFpbmRlcj0kKGV4cHIgIiRvYmoiIDogIi4uXCguKlwpIikgJiYKKwlybSAtZiAiLmdpdC9vYmplY3RzLyRmYW5vdXQvJHJlbWFpbmRlciIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2sgY29ycnVwdGlvbicgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBmc2NrCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jldi1saXN0IG5vdGljZXMgY29ycnVwdGlvbiAoMSknICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgcmV2LWxpc3QgSEVBRAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXYtbGlzdCBub3RpY2VzIGNvcnJ1cHRpb24gKDIpJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1saXN0IC0tb2JqZWN0cyBIRUFECisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3BhY2stb2JqZWN0cyBub3RpY2VzIGNvcnJ1cHRpb24nICcKKwllY2hvIEhFQUQgfAorCXRlc3RfbXVzdF9mYWlsIGdpdCBwYWNrLW9iamVjdHMgLS1yZXZzIHBhY2sKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q1NDAwLXNlbmQtcGFjay5zaCBiL3QvdDU0MDAtc2VuZC1wYWNrLnNoCmluZGV4IDU0NDc3MWQuLmIyMTMxN2QgMTAwNzU1Ci0tLSBhL3QvdDU0MDAtc2VuZC1wYWNrLnNoCisrKyBiL3QvdDU0MDAtc2VuZC1wYWNrLnNoCkBAIC05OSwxMSArOTksMjIgQEAKIAkhIHRlc3QgLWYgdmljdGltLy5naXQvcmVmcy9oZWFkcy9leHRyYQogJwogCi11bnNldCBHSVRfQ09ORklHIEdJVF9DT05GSUdfTE9DQUwKK3Vuc2V0IEdJVF9DT05GSUcKIEhPTUU9YHB3ZGAvbm8tc3VjaC1kaXJlY3RvcnkKIGV4cG9ydCBIT01FIDsjIHRoaXMgd2F5IHdlIGZvcmNlIHRoZSB2aWN0aW0vLmdpdC9jb25maWcgdG8gYmUgdXNlZC4KIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCisJJ3B1c2hpbmcgYSBkZWxldGUgc2hvdWxkIGJlIGRlbmllZCB3aXRoIGRlbnlEZWxldGVzJyAnCisJY2QgdmljdGltICYmCisJZ2l0IGNvbmZpZyByZWNlaXZlLmRlbnlEZWxldGVzIHRydWUgJiYKKwlnaXQgYnJhbmNoIGV4dHJhIG1hc3RlciAmJgorCWNkIC4uICYmCisJdGVzdCAtZiB2aWN0aW0vLmdpdC9yZWZzL2hlYWRzL2V4dHJhICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHNlbmQtcGFjayAuL3ZpY3RpbS8uZ2l0LyA6ZXh0cmEgbWFzdGVyCisnCitybSAtZiB2aWN0aW0vLmdpdC9yZWZzL2hlYWRzL2V4dHJhCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICAgICAncHVzaGluZyB3aXRoIC0tZm9yY2Ugc2hvdWxkIGJlIGRlbmllZCB3aXRoIGRlbnlOb25GYXN0Zm9yd2FyZHMnICcKIAljZCB2aWN0aW0gJiYKIAlnaXQgY29uZmlnIHJlY2VpdmUuZGVueU5vbkZhc3Rmb3J3YXJkcyB0cnVlICYmCmRpZmYgLS1naXQgYS90L3Q1NTAwLWZldGNoLXBhY2suc2ggYi90L3Q1NTAwLWZldGNoLXBhY2suc2gKaW5kZXggNDQ4ZWM3MS4uYzQ1MGYzMyAxMDA3NTUKLS0tIGEvdC90NTUwMC1mZXRjaC1wYWNrLnNoCisrKyBiL3QvdDU1MDAtZmV0Y2gtcGFjay5zaApAQCAtMTM3LDcgKzEzNyw3IEBACiAJInRlc3QgXCJpbi1wYWNrOiAxOFwiID0gXCIkKGdyZXAgaW4tcGFjayBjb3VudC5zaGFsbG93KVwiIgogCiBjb3VudF9vdXRwdXQgKCkgewotCXNlZCAtZSAnL15pbi1wYWNrOi9kJyAtZSAnL15wYWNrczovZCcgLWUgJy86IDAkL2QnICIkMSIKKwlzZWQgLWUgJy9eaW4tcGFjazovZCcgLWUgJy9ecGFja3M6L2QnIC1lICcvXnNpemUtcGFjazovZCcgLWUgJy86IDAkL2QnICIkMSIKIH0KIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAiY2xvbmUgc2hhbGxvdyBvYmplY3QgY291bnQgKHBhcnQgMikiICcKZGlmZiAtLWdpdCBhL3QvdDU1MDUtcmVtb3RlLnNoIGIvdC90NTUwNS1yZW1vdGUuc2gKaW5kZXggMDEwM2UxYS4uYmM1YjdjZSAxMDA3NTUKLS0tIGEvdC90NTUwNS1yZW1vdGUuc2gKKysrIGIvdC90NTUwNS1yZW1vdGUuc2gKQEAgLTI4LDcgKzI4LDcgQEAKIH0KIAogY2hlY2tfcmVtb3RlX3RyYWNrICgpIHsKLQlhY3R1YWw9JChnaXQgcmVtb3RlIHNob3cgIiQxIiB8IHNlZCAtbiAtZSAnJHAnKSAmJgorCWFjdHVhbD0kKGdpdCByZW1vdGUgc2hvdyAiJDEiIHwgc2VkIC1lICcxLC9UcmFja2VkL2QnKSAmJgogCXNoaWZ0ICYmCiAJdG9rZW5zX21hdGNoICIkKiIgIiRhY3R1YWwiCiB9CkBAIC0xMDcsNiArMTA3LDMyIEBACiApCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlbW92ZSByZW1vdGUgcHJvdGVjdHMgbm9uLXJlbW90ZSBicmFuY2hlcycgJworKAorCWNkIHRlc3QgJiYKKwkoY2F0ID5leHBlY3QxIDw8RU9GCitOb3RlOiBBIG5vbi1yZW1vdGUgYnJhbmNoIHdhcyBub3QgcmVtb3ZlZDsgdG8gZGVsZXRlIGl0LCB1c2U6CisgIGdpdCBicmFuY2ggLWQgbWFzdGVyCitFT0YKKyAgICBjYXQgPmV4cGVjdDIgPDxFT0YKK05vdGU6IE5vbi1yZW1vdGUgYnJhbmNoZXMgd2VyZSBub3QgcmVtb3ZlZDsgdG8gZGVsZXRlIHRoZW0sIHVzZToKKyAgZ2l0IGJyYW5jaCAtZCBmb29icmFuY2gKKyAgZ2l0IGJyYW5jaCAtZCBtYXN0ZXIKK0VPRgorKSAmJgorCWdpdCB0YWcgZm9vdGFnCisJZ2l0IGNvbmZpZyAtLWFkZCByZW1vdGUub29wcy5mZXRjaCAiK3JlZnMvKjpyZWZzLyoiICYmCisJZ2l0IHJlbW90ZSBybSBvb3BzIDI+YWN0dWFsMSAmJgorCWdpdCBicmFuY2ggZm9vYnJhbmNoICYmCisJZ2l0IGNvbmZpZyAtLWFkZCByZW1vdGUub29wcy5mZXRjaCAiK3JlZnMvKjpyZWZzLyoiICYmCisJZ2l0IHJlbW90ZSBybSBvb3BzIDI+YWN0dWFsMiAmJgorCWdpdCBicmFuY2ggLWQgZm9vYnJhbmNoICYmCisJZ2l0IHRhZyAtZCBmb290YWcgJiYKKwl0ZXN0X2NtcCBleHBlY3QxIGFjdHVhbDEgJiYKKwl0ZXN0X2NtcCBleHBlY3QyIGFjdHVhbDIKKykKKycKKwogY2F0ID4gdGVzdC9leHBlY3QgPDwgRU9GCiAqIHJlbW90ZSBvcmlnaW4KICAgVVJMOiAkKHB3ZCkvb25lCkBAIC0xMTUsOSArMTQxLDExIEBACiAgIE5ldyByZW1vdGUgYnJhbmNoIChuZXh0IGZldGNoIHdpbGwgc3RvcmUgaW4gcmVtb3Rlcy9vcmlnaW4pCiAgICAgbWFzdGVyCiAgIFRyYWNrZWQgcmVtb3RlIGJyYW5jaGVzCi0gICAgc2lkZSBtYXN0ZXIKKyAgICBzaWRlCisgICAgbWFzdGVyCiAgIExvY2FsIGJyYW5jaGVzIHB1c2hlZCB3aXRoICdnaXQgcHVzaCcKLSAgICBtYXN0ZXI6dXBzdHJlYW0gK3JlZnMvdGFncy9sYXN0YmFja3VwCisgICAgbWFzdGVyOnVwc3RyZWFtCisgICAgK3JlZnMvdGFncy9sYXN0YmFja3VwCiBFT0YKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2hvdycgJwpAQCAtMTQ0LDkgKzE3MiwxMSBAQAogICBSZW1vdGUgYnJhbmNoIG1lcmdlZCB3aXRoICdnaXQgcHVsbCcgd2hpbGUgb24gYnJhbmNoIG1hc3RlcgogICAgIG1hc3RlcgogICBUcmFja2VkIHJlbW90ZSBicmFuY2hlcwotICAgIG1hc3RlciBzaWRlCisgICAgbWFzdGVyCisgICAgc2lkZQogICBMb2NhbCBicmFuY2hlcyBwdXNoZWQgd2l0aCAnZ2l0IHB1c2gnCi0gICAgbWFzdGVyOnVwc3RyZWFtICtyZWZzL3RhZ3MvbGFzdGJhY2t1cAorICAgIG1hc3Rlcjp1cHN0cmVhbQorICAgICtyZWZzL3RhZ3MvbGFzdGJhY2t1cAogRU9GCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3cgLW4nICcKQEAgLTMyNCw0ICszNTQsNTIgQEAKIAogJwogCisjIFRoZSBmaXJzdCB0aHJlZSB0ZXN0IGlmIHRoZSB0cmFja2luZyBicmFuY2hlcyBhcmUgcHJvcGVybHkgcmVuYW1lZCwKKyMgdGhlIGxhc3QgdHdvIG9uZXMgY2hlY2sgaWYgdGhlIGNvbmZpZyBpcyB1cGRhdGVkLgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZW5hbWUgYSByZW1vdGUnICcKKworCWdpdCBjbG9uZSBvbmUgZm91ciAmJgorCShjZCBmb3VyICYmCisJIGdpdCByZW1vdGUgcmVuYW1lIG9yaWdpbiB1cHN0cmVhbSAmJgorCSBybWRpciAuZ2l0L3JlZnMvcmVtb3Rlcy9vcmlnaW4gJiYKKwkgdGVzdCAiJChnaXQgc3ltYm9saWMtcmVmIHJlZnMvcmVtb3Rlcy91cHN0cmVhbS9IRUFEKSIgPSAicmVmcy9yZW1vdGVzL3Vwc3RyZWFtL21hc3RlciIgJiYKKwkgdGVzdCAiJChnaXQgcmV2LXBhcnNlIHVwc3RyZWFtL21hc3RlcikiID0gIiQoZ2l0IHJldi1wYXJzZSBtYXN0ZXIpIiAmJgorCSB0ZXN0ICIkKGdpdCBjb25maWcgcmVtb3RlLnVwc3RyZWFtLmZldGNoKSIgPSAiK3JlZnMvaGVhZHMvKjpyZWZzL3JlbW90ZXMvdXBzdHJlYW0vKiIgJiYKKwkgdGVzdCAiJChnaXQgY29uZmlnIGJyYW5jaC5tYXN0ZXIucmVtb3RlKSIgPSAidXBzdHJlYW0iKQorCisnCisKK2NhdCA+IHJlbW90ZXNfb3JpZ2luIDw8IEVPRgorVVJMOiAkKHB3ZCkvb25lCitQdXNoOiByZWZzL2hlYWRzL21hc3RlcjpyZWZzL2hlYWRzL3Vwc3RyZWFtCitQdWxsOiByZWZzL2hlYWRzL21hc3RlcjpyZWZzL2hlYWRzL29yaWdpbgorRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21pZ3JhdGUgYSByZW1vdGUgZnJvbSBuYW1lZCBmaWxlIGluICRHSVRfRElSL3JlbW90ZXMnICcKKwlnaXQgY2xvbmUgb25lIGZpdmUgJiYKKwlvcmlnaW5fdXJsPSQocHdkKS9vbmUgJiYKKwkoY2QgZml2ZSAmJgorCSBnaXQgcmVtb3RlIHJtIG9yaWdpbiAmJgorCSBta2RpciAtcCAuZ2l0L3JlbW90ZXMgJiYKKwkgY2F0IC4uL3JlbW90ZXNfb3JpZ2luID4gLmdpdC9yZW1vdGVzL29yaWdpbiAmJgorCSBnaXQgcmVtb3RlIHJlbmFtZSBvcmlnaW4gb3JpZ2luICYmCisJICEgdGVzdCAtZiAuZ2l0L3JlbW90ZXMvb3JpZ2luICYmCisJIHRlc3QgIiQoZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnVybCkiID0gIiRvcmlnaW5fdXJsIiAmJgorCSB0ZXN0ICIkKGdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi5wdXNoKSIgPSAicmVmcy9oZWFkcy9tYXN0ZXI6cmVmcy9oZWFkcy91cHN0cmVhbSIgJiYKKwkgdGVzdCAiJChnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4uZmV0Y2gpIiA9ICJyZWZzL2hlYWRzL21hc3RlcjpyZWZzL2hlYWRzL29yaWdpbiIpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21pZ3JhdGUgYSByZW1vdGUgZnJvbSBuYW1lZCBmaWxlIGluICRHSVRfRElSL2JyYW5jaGVzJyAnCisJZ2l0IGNsb25lIG9uZSBzaXggJiYKKwlvcmlnaW5fdXJsPSQocHdkKS9vbmUgJiYKKwkoY2Qgc2l4ICYmCisJIGdpdCByZW1vdGUgcm0gb3JpZ2luICYmCisJIGVjaG8gIiRvcmlnaW5fdXJsIiA+IC5naXQvYnJhbmNoZXMvb3JpZ2luICYmCisJIGdpdCByZW1vdGUgcmVuYW1lIG9yaWdpbiBvcmlnaW4gJiYKKwkgISB0ZXN0IC1mIC5naXQvYnJhbmNoZXMvb3JpZ2luICYmCisJIHRlc3QgIiQoZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnVybCkiID0gIiRvcmlnaW5fdXJsIiAmJgorCSB0ZXN0ICIkKGdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi5mZXRjaCkiID0gInJlZnMvaGVhZHMvbWFzdGVyOnJlZnMvaGVhZHMvb3JpZ2luIikKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q1NTEwLWZldGNoLnNoIGIvdC90NTUxMC1mZXRjaC5zaAppbmRleCA1MjA5NGU3Li45ZTY3OWI0IDEwMDc1NQotLS0gYS90L3Q1NTEwLWZldGNoLnNoCisrKyBiL3QvdDU1MTAtZmV0Y2guc2gKQEAgLTMwMyw2ICszMDMsMjYgQEAKIAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhdXRvIHRhZyBmb2xsb3dpbmcgZmV0Y2hlcyBtaW5pbXVtJyAnCisKKwljZCAiJEQiICYmCisJZ2l0IGNsb25lIC5naXQgZm9sbG93ICYmCisJZ2l0IGNoZWNrb3V0IEhFQUReMCAmJgorCSgKKwkJZm9yIGkgaW4gMSAyIDMgNCA1IDYgNworCQlkbworCQkJZWNobyAkaSA+PmZpbGUgJiYKKwkJCWdpdCBjb21taXQgLW0gJGkgLWEgJiYKKwkJCWdpdCB0YWcgLWEgLW0gJGkgZXhjZXNzLSRpIHx8IGV4aXQgMQorCQlkb25lCisJKSAmJgorCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwkoCisJCWNkIGZvbGxvdyAmJgorCQlnaXQgZmV0Y2gKKwkpCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlZnVzZSB0byBmZXRjaCBpbnRvIHRoZSBjdXJyZW50IGJyYW5jaCcgJwogCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IGZldGNoIC4gc2lkZTptYXN0ZXIKZGlmZiAtLWdpdCBhL3QvdDU1MTUtZmV0Y2gtbWVyZ2UtbG9naWMuc2ggYi90L3Q1NTE1LWZldGNoLW1lcmdlLWxvZ2ljLnNoCmluZGV4IDhiZWNiYzMuLjFmNDYwOGQgMTAwNzU1Ci0tLSBhL3QvdDU1MTUtZmV0Y2gtbWVyZ2UtbG9naWMuc2gKKysrIGIvdC90NTUxNS1mZXRjaC1tZXJnZS1sb2dpYy5zaApAQCAtMTMxLDkgKzEzMSw5IEBACiAJdGVzdD1gZWNobyAiJGNtZCIgfCBzZWQgLWUgJ3N8Wy8gXVsvIF0qfF98ZydgCiAJY250PWBleHByICR0ZXN0X2NvdW50ICsgMWAKIAlwZng9YHByaW50ZiAiJTA0ZCIgJGNudGAKLQlleHBlY3RfZj0iLi4vLi4vdDU1MTUvZmV0Y2guJHRlc3QiCisJZXhwZWN0X2Y9IiRURVNUX0RJUkVDVE9SWS90NTUxNS9mZXRjaC4kdGVzdCIKIAlhY3R1YWxfZj0iJHBmeC1mZXRjaC4kdGVzdCIKLQlleHBlY3Rfcj0iLi4vLi4vdDU1MTUvcmVmcy4kdGVzdCIKKwlleHBlY3Rfcj0iJFRFU1RfRElSRUNUT1JZL3Q1NTE1L3JlZnMuJHRlc3QiCiAJYWN0dWFsX3I9IiRwZngtcmVmcy4kdGVzdCIKIAogCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgIiRjbWQiICcKZGlmZiAtLWdpdCBhL3QvdDU1MTYtZmV0Y2gtcHVzaC5zaCBiL3QvdDU1MTYtZmV0Y2gtcHVzaC5zaAppbmRleCBmOWU4NzgwLi40NDI2ZGY5IDEwMDc1NQotLS0gYS90L3Q1NTE2LWZldGNoLXB1c2guc2gKKysrIGIvdC90NTUxNi1mZXRjaC1wdXNoLnNoCkBAIC0zOSw2ICszOSwxMSBAQAogCSkKIH0KIAorbWtfY2hpbGQoKSB7CisJcm0gLXJmICIkMSIgJiYKKwlnaXQgY2xvbmUgdGVzdHJlcG8gIiQxIgorfQorCiBjaGVja19wdXNoX3Jlc3VsdCAoKSB7CiAJKAogCQljZCB0ZXN0cmVwbyAmJgpAQCAtNDI1LDEzICs0MzAsMTAgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB1cGRhdGVzIGxvY2FsIHJlZnMnICcKIAotCXJtIC1yZiBwYXJlbnQgY2hpbGQgJiYKLQlta2RpciBwYXJlbnQgJiYKLQkoY2QgcGFyZW50ICYmIGdpdCBpbml0ICYmCi0JCWVjaG8gb25lID5mb28gJiYgZ2l0IGFkZCBmb28gJiYgZ2l0IGNvbW1pdCAtbSBvbmUpICYmCi0JZ2l0IGNsb25lIHBhcmVudCBjaGlsZCAmJgorCW1rX3Rlc3QgaGVhZHMvbWFzdGVyICYmCisJbWtfY2hpbGQgY2hpbGQgJiYKIAkoY2QgY2hpbGQgJiYKLQkJZWNobyB0d28gPmZvbyAmJiBnaXQgY29tbWl0IC1hIC1tIHR3byAmJgorCQlnaXQgcHVsbCAuLiBtYXN0ZXIgJiYKIAkJZ2l0IHB1c2ggJiYKIAl0ZXN0ICQoZ2l0IHJldi1wYXJzZSBtYXN0ZXIpID0gJChnaXQgcmV2LXBhcnNlIHJlbW90ZXMvb3JpZ2luL21hc3RlcikpCiAKQEAgLTQzOSwxNSArNDQxLDEwIEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggdXBkYXRlcyB1cC10by1kYXRlIGxvY2FsIHJlZnMnICcKIAotCXJtIC1yZiBwYXJlbnQgY2hpbGQgJiYKLQlta2RpciBwYXJlbnQgJiYKLQkoY2QgcGFyZW50ICYmIGdpdCBpbml0ICYmCi0JCWVjaG8gb25lID5mb28gJiYgZ2l0IGFkZCBmb28gJiYgZ2l0IGNvbW1pdCAtbSBvbmUpICYmCi0JZ2l0IGNsb25lIHBhcmVudCBjaGlsZDEgJiYKLQlnaXQgY2xvbmUgcGFyZW50IGNoaWxkMiAmJgotCShjZCBjaGlsZDEgJiYKLQkJZWNobyB0d28gPmZvbyAmJiBnaXQgY29tbWl0IC1hIC1tIHR3byAmJgotCQlnaXQgcHVzaCkgJiYKKwlta190ZXN0IGhlYWRzL21hc3RlciAmJgorCW1rX2NoaWxkIGNoaWxkMSAmJgorCW1rX2NoaWxkIGNoaWxkMiAmJgorCShjZCBjaGlsZDEgJiYgZ2l0IHB1bGwgLi4gbWFzdGVyICYmIGdpdCBwdXNoKSAmJgogCShjZCBjaGlsZDIgJiYKIAkJZ2l0IHB1bGwgLi4vY2hpbGQxIG1hc3RlciAmJgogCQlnaXQgcHVzaCAmJgpAQCAtNDU3LDExICs0NTQsOCBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHByZXNlcnZlcyB1cC10by1kYXRlIHBhY2tlZCByZWZzJyAnCiAKLQlybSAtcmYgcGFyZW50IGNoaWxkICYmCi0JbWtkaXIgcGFyZW50ICYmCi0JKGNkIHBhcmVudCAmJiBnaXQgaW5pdCAmJgotCQllY2hvIG9uZSA+Zm9vICYmIGdpdCBhZGQgZm9vICYmIGdpdCBjb21taXQgLW0gb25lKSAmJgotCWdpdCBjbG9uZSBwYXJlbnQgY2hpbGQgJiYKKwlta190ZXN0IGhlYWRzL21hc3RlciAmJgorCW1rX2NoaWxkIGNoaWxkICYmCiAJKGNkIGNoaWxkICYmCiAJCWdpdCBwdXNoICYmCiAJISB0ZXN0IC1mIC5naXQvcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIpCkBAIC00NzAsMTUgKzQ2NCwxMyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIGRvZXMgbm90IHVwZGF0ZSBsb2NhbCByZWZzIG9uIGZhaWx1cmUnICcKIAotCXJtIC1yZiBwYXJlbnQgY2hpbGQgJiYKLQlta2RpciBwYXJlbnQgJiYKLQkoY2QgcGFyZW50ICYmIGdpdCBpbml0ICYmCi0JCWVjaG8gb25lID5mb28gJiYgZ2l0IGFkZCBmb28gJiYgZ2l0IGNvbW1pdCAtbSBvbmUgJiYKLQkJZWNobyBleGl0IDEgPi5naXQvaG9va3MvcHJlLXJlY2VpdmUgJiYKLQkJY2htb2QgK3ggLmdpdC9ob29rcy9wcmUtcmVjZWl2ZSkgJiYKLQlnaXQgY2xvbmUgcGFyZW50IGNoaWxkICYmCisJbWtfdGVzdCBoZWFkcy9tYXN0ZXIgJiYKKwlta19jaGlsZCBjaGlsZCAmJgorCW1rZGlyIHRlc3RyZXBvLy5naXQvaG9va3MgJiYKKwllY2hvIGV4aXQgMSA+dGVzdHJlcG8vLmdpdC9ob29rcy9wcmUtcmVjZWl2ZSAmJgorCWNobW9kICt4IHRlc3RyZXBvLy5naXQvaG9va3MvcHJlLXJlY2VpdmUgJiYKIAkoY2QgY2hpbGQgJiYKLQkJZWNobyB0d28gPmZvbyAmJiBnaXQgY29tbWl0IC1hIC1tIHR3byAmJgorCQlnaXQgcHVsbCAuLiBtYXN0ZXIKIAkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHB1c2ggJiYKIAkJdGVzdCAkKGdpdCByZXYtcGFyc2UgbWFzdGVyKSAhPSBcCiAJCQkkKGdpdCByZXYtcGFyc2UgcmVtb3Rlcy9vcmlnaW4vbWFzdGVyKSkKQEAgLTQ4NywxMyArNDc5LDUwIEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FsbG93IGRlbGV0aW5nIGFuIGludmFsaWQgcmVtb3RlIHJlZicgJwogCi0JcHdkICYmCisJbWtfdGVzdCBoZWFkcy9tYXN0ZXIgJiYKIAlybSAtZiB0ZXN0cmVwby8uZ2l0L29iamVjdHMvPz8vKiAmJgogCWdpdCBwdXNoIHRlc3RyZXBvIDpyZWZzL2hlYWRzL21hc3RlciAmJgogCShjZCB0ZXN0cmVwbyAmJiB0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvaGVhZHMvbWFzdGVyKQogCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3dhcm4gb24gcHVzaCB0byBIRUFEIG9mIG5vbi1iYXJlIHJlcG9zaXRvcnknICcKKwlta190ZXN0IGhlYWRzL21hc3RlcgorCShjZCB0ZXN0cmVwbyAmJgorCQlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJCWdpdCBjb25maWcgcmVjZWl2ZS5kZW55Q3VycmVudEJyYW5jaCB3YXJuKSAmJgorCWdpdCBwdXNoIHRlc3RyZXBvIG1hc3RlciAyPnN0ZGVyciAmJgorCWdyZXAgIndhcm5pbmcuKnRoaXMgbWF5IGNhdXNlIGNvbmZ1c2lvbiIgc3RkZXJyCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RlbnkgcHVzaCB0byBIRUFEIG9mIG5vbi1iYXJlIHJlcG9zaXRvcnknICcKKwlta190ZXN0IGhlYWRzL21hc3RlcgorCShjZCB0ZXN0cmVwbyAmJgorCQlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJCWdpdCBjb25maWcgcmVjZWl2ZS5kZW55Q3VycmVudEJyYW5jaCB0cnVlKSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBwdXNoIHRlc3RyZXBvIG1hc3RlcgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhbGxvdyBwdXNoIHRvIEhFQUQgb2YgYmFyZSByZXBvc2l0b3J5IChiYXJlKScgJworCW1rX3Rlc3QgaGVhZHMvbWFzdGVyCisJKGNkIHRlc3RyZXBvICYmCisJCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwkJZ2l0IGNvbmZpZyByZWNlaXZlLmRlbnlDdXJyZW50QnJhbmNoIHRydWUgJiYKKwkJZ2l0IGNvbmZpZyBjb3JlLmJhcmUgdHJ1ZSkgJiYKKwlnaXQgcHVzaCB0ZXN0cmVwbyBtYXN0ZXIgMj5zdGRlcnIgJiYKKwkhIGdyZXAgIndhcm5pbmcuKnRoaXMgbWF5IGNhdXNlIGNvbmZ1c2lvbiIgc3RkZXJyCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FsbG93IHB1c2ggdG8gSEVBRCBvZiBub24tYmFyZSByZXBvc2l0b3J5IChjb25maWcpJyAnCisJbWtfdGVzdCBoZWFkcy9tYXN0ZXIKKwkoY2QgdGVzdHJlcG8gJiYKKwkJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgorCQlnaXQgY29uZmlnIHJlY2VpdmUuZGVueUN1cnJlbnRCcmFuY2ggZmFsc2UKKwkpICYmCisJZ2l0IHB1c2ggdGVzdHJlcG8gbWFzdGVyIDI+c3RkZXJyICYmCisJISBncmVwICJ3YXJuaW5nLip0aGlzIG1heSBjYXVzZSBjb25mdXNpb24iIHN0ZGVycgorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdmZXRjaCB3aXRoIGJyYW5jaGVzJyAnCiAJbWtfZW1wdHkgJiYKIAlnaXQgYnJhbmNoIHNlY29uZCAkdGhlX2ZpcnN0X2NvbW1pdCAmJgpkaWZmIC0tZ2l0IGEvdC90NTUxOS1wdXNoLWFsdGVybmF0ZXMuc2ggYi90L3Q1NTE5LXB1c2gtYWx0ZXJuYXRlcy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45NmJlNTIzCi0tLSAvZGV2L251bGwKKysrIGIvdC90NTUxOS1wdXNoLWFsdGVybmF0ZXMuc2gKQEAgLTAsMCArMSwxNDMgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSdwdXNoIHRvIGEgcmVwb3NpdG9yeSB0aGF0IGJvcnJvd3MgZnJvbSBlbHNld2hlcmUnCisKKy4gLi90ZXN0LWxpYi5zaAorCit0ZXN0X2V4cGVjdF9zdWNjZXNzIHNldHVwICcKKwlta2RpciBhbGljZS1wdWIgJiYKKwkoCisJCWNkIGFsaWNlLXB1YiAmJgorCQlHSVRfRElSPS4gZ2l0IGluaXQKKwkpICYmCisJbWtkaXIgYWxpY2Utd29yayAmJgorCSgKKwkJY2QgYWxpY2Utd29yayAmJgorCQlnaXQgaW5pdCAmJgorCQk+ZmlsZSAmJgorCQlnaXQgYWRkIC4gJiYKKwkJZ2l0IGNvbW1pdCAtbSBpbml0aWFsICYmCisJCWdpdCBwdXNoIC4uL2FsaWNlLXB1YiBtYXN0ZXIKKwkpICYmCisKKwkjIFByb2plY3QgQm9iIGlzIGEgZm9yayBvZiBwcm9qZWN0IEFsaWNlCisJbWtkaXIgYm9iLXB1YiAmJgorCSgKKwkJY2QgYm9iLXB1YiAmJgorCQlHSVRfRElSPS4gZ2l0IGluaXQgJiYKKwkJbWtkaXIgLXAgb2JqZWN0cy9pbmZvICYmCisJCWVjaG8gLi4vLi4vYWxpY2UtcHViL29iamVjdHMgPm9iamVjdHMvaW5mby9hbHRlcm5hdGVzCisJKSAmJgorCWdpdCBjbG9uZSBhbGljZS1wdWIgYm9iLXdvcmsgJiYKKwkoCisJCWNkIGJvYi13b3JrICYmCisJCWdpdCBwdXNoIC4uL2JvYi1wdWIgbWFzdGVyCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhbGljZSB3b3JrcyBhbmQgcHVzaGVzJyAnCisJKAorCQljZCBhbGljZS13b3JrICYmCisJCWVjaG8gbW9yZSA+ZmlsZSAmJgorCQlnaXQgY29tbWl0IC1hIC1tIHNlY29uZCAmJgorCQlnaXQgcHVzaCAuLi9hbGljZS1wdWIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2JvYiBmZXRjaGVzIGZyb20gYWxpY2UsIHdvcmtzIGFuZCBwdXNoZXMnICcKKwkoCisJCSMgQm9iIGFjcXVpcmVzIHdoYXQgQWxpY2UgZGlkIGluIGhpcyB3b3JrIHRyZWUgZmlyc3QuCisJCSMgRXZlbiB0aG91Z2ggdGhlc2Ugb2JqZWN0cyBhcmUgbm90IGRpcmVjdGx5IGluCisJCSMgdGhlIHB1YmxpYyByZXBvc2l0b3J5IG9mIEJvYiwgdGhpcyBwdXNoIGRvZXMgbm90CisJCSMgbmVlZCB0byBzZW5kIHRoZSBjb21taXQgQm9iIHJlY2VpdmVkIGZyb20gQWxpY2UKKwkJIyB0byBoaXMgcHVibGljIHJlcG9zaXRvcnksIGFzIGFsbCB0aGUgb2JqZWN0IEFsaWNlCisJCSMgaGFzIGF0IGhlciBwdWJsaWMgcmVwb3NpdG9yeSBhcmUgYXZhaWxhYmxlIHRvIGl0CisJCSMgdmlhIGl0cyBhbHRlcm5hdGVzLgorCQljZCBib2Itd29yayAmJgorCQlnaXQgcHVsbCAuLi9hbGljZS1wdWIgbWFzdGVyICYmCisJCWVjaG8gbW9yZSBib2IgPmZpbGUgJiYKKwkJZ2l0IGNvbW1pdCAtYSAtbSB0aGlyZCAmJgorCQlnaXQgcHVzaCAuLi9ib2ItcHViCisJKSAmJgorCisJIyBDaGVjayB0aGF0IHRoZSBzZWNvbmQgY29tbWl0IGJ5IEFsaWNlIGlzIG5vdCBzZW50CisJIyB0byAuLi9ib2ItcHViCisJKAorCQljZCBib2ItcHViICYmCisJCXNlY29uZD0kKGdpdCByZXYtcGFyc2UgSEVBRF4pICYmCisJCXJtIC1mIG9iamVjdHMvaW5mby9hbHRlcm5hdGVzICYmCisJCXRlc3RfbXVzdF9mYWlsIGdpdCBjYXQtZmlsZSAtdCAkc2Vjb25kICYmCisJCWVjaG8gLi4vLi4vYWxpY2UtcHViL29iamVjdHMgPm9iamVjdHMvaW5mby9hbHRlcm5hdGVzCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbGVhbi11cCBpbiBjYXNlIHRoZSBwcmV2aW91cyBmYWlsZWQnICcKKwkoCisJCWNkIGJvYi1wdWIgJiYKKwkJZWNobyAuLi8uLi9hbGljZS1wdWIvb2JqZWN0cyA+b2JqZWN0cy9pbmZvL2FsdGVybmF0ZXMKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FsaWNlIHdvcmtzIGFuZCBwdXNoZXMgYWdhaW4nICcKKwkoCisJCSMgQWxpY2UgZG9lcyBub3QgY2FyZSB3aGF0IEJvYiBkb2VzLiAgU2hlIGRvZXMgbm90CisJCSMgZXZlbiBoYXZlIHRvIGJlIGF3YXJlIG9mIGhpcyBleGlzdGVuY2UuICBTaGUganVzdAorCQkjIGtlZXBzIHdvcmtpbmcgYW5kIHB1c2hpbmcKKwkJY2QgYWxpY2Utd29yayAmJgorCQllY2hvIG1vcmUgYWxpY2UgPmZpbGUgJiYKKwkJZ2l0IGNvbW1pdCAtYSAtbSBmb3VydGggJiYKKwkJZ2l0IHB1c2ggLi4vYWxpY2UtcHViCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdib2Igd29ya3MgYW5kIHB1c2hlcycgJworCSgKKwkJIyBUaGlzIHRpbWUgQm9iIGRvZXMgbm90IHB1bGwgZnJvbSBBbGljZSwgYW5kCisJCSMgdGhlIG1hc3RlciBicmFuY2ggYXQgaGVyIHB1YmxpYyByZXBvc2l0b3J5IHBvaW50cworCQkjIGF0IGEgY29tbWl0IEJvYiBkb2VzIG5vdCBrbm93IGFib3V0LiAgVGhpcyBzaG91bGQKKwkJIyBub3QgcHJldmVudCB0aGUgcHVzaCBieSBCb2IgZnJvbSBzdWNjZWVkaW5nLgorCQljZCBib2Itd29yayAmJgorCQllY2hvIHlldCBtb3JlIGJvYiA+ZmlsZSAmJgorCQlnaXQgY29tbWl0IC1hIC1tIGZpZnRoICYmCisJCWdpdCBwdXNoIC4uL2JvYi1wdWIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FsaWNlIHdvcmtzIGFuZCBwdXNoZXMgeWV0IGFnYWluJyAnCisJKAorCQkjIEFsaWNlIGRvZXMgbm90IGNhcmUgd2hhdCBCb2IgZG9lcy4gIFNoZSBkb2VzIG5vdAorCQkjIGV2ZW4gaGF2ZSB0byBiZSBhd2FyZSBvZiBoaXMgZXhpc3RlbmNlLiAgU2hlIGp1c3QKKwkJIyBrZWVwcyB3b3JraW5nIGFuZCBwdXNoaW5nCisJCWNkIGFsaWNlLXdvcmsgJiYKKwkJZWNobyBtb3JlIGFuZCBtb3JlIGFsaWNlID5maWxlICYmCisJCWdpdCBjb21taXQgLWEgLW0gc2l4dGguMSAmJgorCQllY2hvIG1vcmUgYW5kIG1vcmUgYWxpY2UgPj5maWxlICYmCisJCWdpdCBjb21taXQgLWEgLW0gc2l4dGguMiAmJgorCQllY2hvIG1vcmUgYW5kIG1vcmUgYWxpY2UgPj5maWxlICYmCisJCWdpdCBjb21taXQgLWEgLW0gc2l4dGguMyAmJgorCQlnaXQgcHVzaCAuLi9hbGljZS1wdWIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2JvYiB3b3JrcyBhbmQgcHVzaGVzIGFnYWluJyAnCisJKAorCQljZCBhbGljZS1wdWIgJiYKKwkJZ2l0IGNhdC1maWxlIGNvbW1pdCBtYXN0ZXIgPi4uL2JvYi13b3JrL2NvbW1pdAorCSkKKwkoCisJCSMgVGhpcyB0aW1lIEJvYiBkb2VzIG5vdCBwdWxsIGZyb20gQWxpY2UsIGFuZAorCQkjIHRoZSBtYXN0ZXIgYnJhbmNoIGF0IGhlciBwdWJsaWMgcmVwb3NpdG9yeSBwb2ludHMKKwkJIyBhdCBhIGNvbW1pdCBCb2IgZG9lcyBub3QgZnVsbHkga25vdyBhYm91dCwgYnV0CisJCSMgaGUgaGFwcGVucyB0byBoYXZlIHRoZSBjb21taXQgb2JqZWN0IChidXQgbm90IHRoZQorCQkjIG5lY2Vzc2FyeSB0cmVlKSBpbiBoaXMgcmVwb3NpdG9yeSBmcm9tIEFsaWNlLgorCQkjIFRoaXMgc2hvdWxkIG5vdCBwcmV2ZW50IHRoZSBwdXNoIGJ5IEJvYiBmcm9tCisJCSMgc3VjY2VlZGluZy4KKwkJY2QgYm9iLXdvcmsgJiYKKwkJZ2l0IGhhc2gtb2JqZWN0IC10IGNvbW1pdCAtdyBjb21taXQgJiYKKwkJZWNobyBldmVuIG1vcmUgYm9iID5maWxlICYmCisJCWdpdCBjb21taXQgLWEgLW0gc2V2ZW50aCAmJgorCQlnaXQgcHVzaCAuLi9ib2ItcHViCisJKQorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDU1MjEtcHVsbC1vcHRpb25zLnNoIGIvdC90NTUyMS1wdWxsLW9wdGlvbnMuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uODNlMmU4YQotLS0gL2Rldi9udWxsCisrKyBiL3QvdDU1MjEtcHVsbC1vcHRpb25zLnNoCkBAIC0wLDAgKzEsNjAgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSdwdWxsIG9wdGlvbnMnCisKKy4gLi90ZXN0LWxpYi5zaAorCitEPWBwd2RgCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwJyAnCisJbWtkaXIgcGFyZW50ICYmCisJKGNkIHBhcmVudCAmJiBnaXQgaW5pdCAmJgorCSBlY2hvIG9uZSA+ZmlsZSAmJiBnaXQgYWRkIGZpbGUgJiYKKwkgZ2l0IGNvbW1pdCAtbSBvbmUpCisnCisKK2NkICIkRCIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHB1bGwgLXEnICcKKwlta2RpciBjbG9uZWRxICYmCisJY2QgY2xvbmVkcSAmJgorCWdpdCBwdWxsIC1xICIkRC9wYXJlbnQiID5vdXQgMj5lcnIgJiYKKwl0ZXN0ICEgLXMgb3V0CisnCisKK2NkICIkRCIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHB1bGwnICcKKwlta2RpciBjbG9uZWQgJiYKKwljZCBjbG9uZWQgJiYKKwlnaXQgcHVsbCAiJEQvcGFyZW50IiA+b3V0IDI+ZXJyICYmCisJdGVzdCAtcyBvdXQKKycKK2NkICIkRCIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHB1bGwgLXYnICcKKwlta2RpciBjbG9uZWR2ICYmCisJY2QgY2xvbmVkdiAmJgorCWdpdCBwdWxsIC12ICIkRC9wYXJlbnQiID5vdXQgMj5lcnIgJiYKKwl0ZXN0IC1zIG91dAorJworCitjZCAiJEQiCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBwdWxsIC12IC1xJyAnCisJbWtkaXIgY2xvbmVkdnEgJiYKKwljZCBjbG9uZWR2cSAmJgorCWdpdCBwdWxsIC12IC1xICIkRC9wYXJlbnQiID5vdXQgMj5lcnIgJiYKKwl0ZXN0ICEgLXMgb3V0CisnCisKK2NkICIkRCIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHB1bGwgLXEgLXYnICcKKwlta2RpciBjbG9uZWRxdiAmJgorCWNkIGNsb25lZHF2ICYmCisJZ2l0IHB1bGwgLXEgLXYgIiREL3BhcmVudCIgPm91dCAyPmVyciAmJgorCXRlc3QgLXMgb3V0CisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NTUyMS1wdWxsLXN5bWxpbmsuc2ggYi90L3Q1NTIxLXB1bGwtc3ltbGluay5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41NjcyYjUxCi0tLSAvZGV2L251bGwKKysrIGIvdC90NTUyMS1wdWxsLXN5bWxpbmsuc2gKQEAgLTAsMCArMSw3OCBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J3B1bGxpbmcgZnJvbSBzeW1saW5rZWQgc3ViZGlyJworCisuIC4vdGVzdC1saWIuc2gKKworIyBUaGUgc2NlbmFyaW8gd2UgYXJlIGJ1aWxkaW5nOgorIworIyAgIHRyYXNoXCBkaXJlY3RvcnkvCisjICAgICBjbG9uZS1yZXBvLworIyAgICAgICBzdWJkaXIvCisjICAgICAgICAgYmFyCisjICAgICBzdWJkaXItbGluayAtPiBjbG9uZS1yZXBvL3N1YmRpci8KKyMKKyMgVGhlIHdvcmtpbmcgZGlyZWN0b3J5IGlzIHN1YmRpci1saW5rLgorCitta2RpciBzdWJkaXIKK2VjaG8gZmlsZSA+c3ViZGlyL2ZpbGUKK2dpdCBhZGQgc3ViZGlyL2ZpbGUKK2dpdCBjb21taXQgLXEgLW0gZmlsZQorZ2l0IGNsb25lIC1xIC4gY2xvbmUtcmVwbworbG4gLXMgY2xvbmUtcmVwby9zdWJkaXIvIHN1YmRpci1saW5rCisKKworIyBEZW1vbnN0cmF0ZSB0aGF0IHRoaW5ncyB3b3JrIGlmIHdlIGp1c3QgYXZvaWQgdGhlIHN5bWxpbmsKKyMKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1bGxpbmcgZnJvbSByZWFsIHN1YmRpcicgJworCSgKKwkJZWNobyByZWFsID5zdWJkaXIvZmlsZSAmJgorCQlnaXQgY29tbWl0IC1tIHJlYWwgc3ViZGlyL2ZpbGUgJiYKKwkJY2QgY2xvbmUtcmVwby9zdWJkaXIvICYmCisJCWdpdCBwdWxsICYmCisJCXRlc3QgcmVhbCA9ICQoY2F0IGZpbGUpCisJKQorJworCisjIEZyb20gc3ViZGlyLWxpbmssIHB1bGxpbmcgc2hvdWxkIHdvcmsgYXMgaXQgZG9lcyBmcm9tCisjIGNsb25lLXJlcG8vc3ViZGlyLy4KKyMKKyMgSW5zdGVhZCwgdGhlIGVycm9yIHB1bGwgZ2F2ZSB3YXM6CisjCisjICAgZmF0YWw6ICdvcmlnaW4nOiB1bmFibGUgdG8gY2hkaXIgb3Igbm90IGEgZ2l0IGFyY2hpdmUKKyMgICBmYXRhbDogVGhlIHJlbW90ZSBlbmQgaHVuZyB1cCB1bmV4cGVjdGVkbHkKKyMKKyMgYmVjYXVzZSBnaXQgd291bGQgZmluZCB0aGUgLmdpdC9jb25maWcgZm9yIHRoZSAidHJhc2ggZGlyZWN0b3J5IgorIyByZXBvLCBub3QgZm9yIHRoZSBjbG9uZS1yZXBvIHJlcG8uICBUaGUgInRyYXNoIGRpcmVjdG9yeSIgcmVwbworIyBoYWQgbm8gZW50cnkgZm9yIG9yaWdpbi4gIEdpdCBmb3VuZCB0aGUgd3JvbmcgLmdpdCBiZWNhdXNlCisjIGdpdCByZXYtcGFyc2UgLS1zaG93LWNkdXAgcHJpbnRlZCBhIHBhdGggcmVsYXRpdmUgdG8KKyMgY2xvbmUtcmVwby9zdWJkaXIvLCBub3Qgc3ViZGlyLWxpbmsvLiAgR2l0IHJldi1wYXJzZSAtLXNob3ctY2R1cAorIyB1c2VkIHRoZSBjb3JyZWN0IC5naXQsIGJ1dCB3aGVuIHRoZSBnaXQgcHVsbCBzaGVsbCBzY3JpcHQgZGlkCisjICJjZCBgZ2l0IHJldi1wYXJzZSAtLXNob3ctY2R1cGAiLCBpdCBlbmRlZCB1cCBpbiB0aGUgd3JvbmcKKyMgZGlyZWN0b3J5LiAgQSBQT1NJWCBzaGVsbCdzICJjZCIgd29ya3MgYSBsaXR0bGUgZGlmZmVyZW50bHkKKyMgdGhhbiBjaGRpcigpIGluIEM7ICJjZCAtUCIgaXMgbXVjaCBjbG9zZXIgdG8gY2hkaXIoKS4KKyMKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1bGxpbmcgZnJvbSBzeW1saW5rZWQgc3ViZGlyJyAnCisJKAorCQllY2hvIGxpbmsgPnN1YmRpci9maWxlICYmCisJCWdpdCBjb21taXQgLW0gbGluayBzdWJkaXIvZmlsZSAmJgorCQljZCBzdWJkaXItbGluay8gJiYKKwkJZ2l0IHB1bGwgJiYKKwkJdGVzdCBsaW5rID0gJChjYXQgZmlsZSkKKwkpCisnCisKKyMgUHJvdmUgdGhhdCB0aGUgcmVtb3RlIGVuZCByZWFsbHkgaXMgYSByZXBvLCBhbmQgb3RoZXIgY29tbWFuZHMKKyMgd29yayBmaW5lIGluIHRoaXMgY29udGV4dC4gIEl0J3MganVzdCB0aGF0ICJnaXQgcHVsbCIgYnJlYWtzLgorIwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaGluZyBmcm9tIHN5bWxpbmtlZCBzdWJkaXInICcKKwkoCisJCWNkIHN1YmRpci1saW5rLyAmJgorCQllY2hvIHB1c2ggPmZpbGUgJiYKKwkJZ2l0IGNvbW1pdCAtbSBwdXNoIC4vZmlsZSAmJgorCQlnaXQgcHVzaAorCSkgJiYKKwl0ZXN0IHB1c2ggPSAkKGdpdCBzaG93IEhFQUQ6c3ViZGlyL2ZpbGUpCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NTU0MC1odHRwLXB1c2guc2ggYi90L3Q1NTQwLWh0dHAtcHVzaC5zaAppbmRleCBiMGQyNDJlLi5jMjM2YjVlIDEwMDc1NQotLS0gYS90L3Q1NTQwLWh0dHAtcHVzaC5zaAorKysgYi90L3Q1NTQwLWh0dHAtcHVzaC5zaApAQCAtMTksNyArMTksNyBAQAogCWV4aXQKIGZpCiAKLS4gLi4vbGliLWh0dHBkLnNoCisuICIkVEVTVF9ESVJFQ1RPUlkiL2xpYi1odHRwZC5zaAogCiBpZiAhIHN0YXJ0X2h0dHBkID4mMyAyPiY0CiB0aGVuCkBAIC01MSwxNyArNTEsMjkgQEAKIAlnaXQgY2xvbmUgJEhUVFBEX1VSTC90ZXN0X3JlcG8uZ2l0IHRlc3RfcmVwb19jbG9uZQogJwogCi10ZXN0X2V4cGVjdF9mYWlsdXJlICdwdXNoIHRvIHJlbW90ZSByZXBvc2l0b3J5JyAnCit0ZXN0X2V4cGVjdF9mYWlsdXJlICdwdXNoIHRvIHJlbW90ZSByZXBvc2l0b3J5IHdpdGggcGFja2VkIHJlZnMnICcKIAljZCAiJFJPT1RfUEFUSCIvdGVzdF9yZXBvX2Nsb25lICYmCiAJOiA+cGF0aDIgJiYKIAlnaXQgYWRkIHBhdGgyICYmCiAJdGVzdF90aWNrICYmCiAJZ2l0IGNvbW1pdCAtbSBwYXRoMiAmJgorCUhFQUQ9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQpICYmCiAJZ2l0IHB1c2ggJiYKLQlbIC1mICIkSFRUUERfRE9DVU1FTlRfUk9PVF9QQVRIL3Rlc3RfcmVwby5naXQvcmVmcy9oZWFkcy9tYXN0ZXIiIF0KKwkoY2QgIiRIVFRQRF9ET0NVTUVOVF9ST09UX1BBVEgiL3Rlc3RfcmVwby5naXQgJiYKKwkgdGVzdCAkSEVBRCA9ICQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEKSkKICcKIAotdGVzdF9leHBlY3RfZmFpbHVyZSAnY3JlYXRlIGFuZCBkZWxldGUgcmVtb3RlIGJyYW5jaCcgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnIHB1c2ggdG8gcmVtb3RlIHJlcG9zaXRvcnkgd2l0aCB1bnBhY2tlZCByZWZzJyAnCisJKGNkICIkSFRUUERfRE9DVU1FTlRfUk9PVF9QQVRIIi90ZXN0X3JlcG8uZ2l0ICYmCisJIHJtIHBhY2tlZC1yZWZzICYmCisJIGdpdCB1cGRhdGUtcmVmIHJlZnMvaGVhZHMvbWFzdGVyIFwKKwkJMGM5NzNhZTliZDUxOTAyYTI4NDY2ZjM4NTBiNTQzZmE2NmE2YWFmNCkgJiYKKwlnaXQgcHVzaCAmJgorCShjZCAiJEhUVFBEX0RPQ1VNRU5UX1JPT1RfUEFUSCIvdGVzdF9yZXBvLmdpdCAmJgorCSB0ZXN0ICRIRUFEID0gJChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQpKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjcmVhdGUgYW5kIGRlbGV0ZSByZW1vdGUgYnJhbmNoJyAnCiAJY2QgIiRST09UX1BBVEgiL3Rlc3RfcmVwb19jbG9uZSAmJgogCWdpdCBjaGVja291dCAtYiBkZXYgJiYKIAk6ID5wYXRoMyAmJgpAQCAtNzYsNiArODgsMTIgQEAKIAl0ZXN0X211c3RfZmFpbCBnaXQgc2hvdy1yZWYgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL29yaWdpbi9kZXYKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnTUtDT0wgc2VuZHMgZGlyZWN0b3J5IG5hbWVzIHdpdGggdHJhaWxpbmcgc2xhc2hlcycgJworCisJISBncmVwICJcIk1LQ09MLipbXi9dIEhUVFAvW14gXSpcIiIgPCAiJEhUVFBEX1JPT1RfUEFUSCIvYWNjZXNzLmxvZworCisnCisKIHN0b3BfaHR0cGQKIAogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q1NzAxLWNsb25lLWxvY2FsLnNoIGIvdC90NTcwMS1jbG9uZS1sb2NhbC5zaAppbmRleCA4ZGZhYWE0Li5mZTBmZGEyIDEwMDc1NQotLS0gYS90L3Q1NzAxLWNsb25lLWxvY2FsLnNoCisrKyBiL3QvdDU3MDEtY2xvbmUtbG9jYWwuc2gKQEAgLTExLDggKzExLDggQEAKIAlnaXQgY2xvbmUgLS1iYXJlIC4geCAmJgogCXRlc3QgIiQoR0lUX0NPTkZJRz1hLmdpdC9jb25maWcgZ2l0IGNvbmZpZyAtLWJvb2wgY29yZS5iYXJlKSIgPSB0cnVlICYmCiAJdGVzdCAiJChHSVRfQ09ORklHPXgvY29uZmlnIGdpdCBjb25maWcgLS1ib29sIGNvcmUuYmFyZSkiID0gdHJ1ZQotCWdpdCBidW5kbGUgY3JlYXRlIGIxLmJ1bmRsZSAtLWFsbCBIRUFEICYmCi0JZ2l0IGJ1bmRsZSBjcmVhdGUgYjIuYnVuZGxlIC0tYWxsICYmCisJZ2l0IGJ1bmRsZSBjcmVhdGUgYjEuYnVuZGxlIC0tYWxsICYmCisJZ2l0IGJ1bmRsZSBjcmVhdGUgYjIuYnVuZGxlIG1hc3RlciAmJgogCW1rZGlyIGRpciAmJgogCWNwIGIxLmJ1bmRsZSBkaXIvYjMKIAljcCBiMS5idW5kbGUgYjQKZGlmZiAtLWdpdCBhL3QvdDU3MDItY2xvbmUtb3B0aW9ucy5zaCBiL3QvdDU3MDItY2xvbmUtb3B0aW9ucy5zaAppbmRleCAzMjhlNGQ5Li4yNzgyNWY1IDEwMDc1NQotLS0gYS90L3Q1NzAyLWNsb25lLW9wdGlvbnMuc2gKKysrIGIvdC90NTcwMi1jbG9uZS1vcHRpb25zLnNoCkBAIC0xOSw0ICsxOSwxNyBAQAogCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlZGlyZWN0ZWQgY2xvbmUnICcKKworCWdpdCBjbG9uZSAiZmlsZTovLyQocHdkKS9wYXJlbnQiIGNsb25lLXJlZGlyZWN0ZWQgPm91dCAyPmVyciAmJgorCXRlc3QgISAtcyBlcnIKKworJwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVkaXJlY3RlZCBjbG9uZSAtdicgJworCisJZ2l0IGNsb25lIC12ICJmaWxlOi8vJChwd2QpL3BhcmVudCIgY2xvbmUtcmVkaXJlY3RlZC12ID5vdXQgMj5lcnIgJiYKKwl0ZXN0IC1zIGVycgorCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NjAwMi1yZXYtbGlzdC1iaXNlY3Quc2ggYi90L3Q2MDAyLXJldi1saXN0LWJpc2VjdC5zaAppbmRleCA4ZjVkZTA5Li5iNGU4ZmJhIDEwMDc1NQotLS0gYS90L3Q2MDAyLXJldi1saXN0LWJpc2VjdC5zaAorKysgYi90L3Q2MDAyLXJldi1saXN0LWJpc2VjdC5zaApAQCAtNSw3ICs1LDcgQEAKIHRlc3RfZGVzY3JpcHRpb249J1Rlc3RzIGdpdCByZXYtbGlzdCAtLWJpc2VjdCBmdW5jdGlvbmFsaXR5JwogCiAuIC4vdGVzdC1saWIuc2gKLS4gLi4vdDYwMDBsaWIuc2ggIyB0Nnh4eCBzcGVjaWZpYyBmdW5jdGlvbnMKKy4gIiRURVNUX0RJUkVDVE9SWSIvdDYwMDBsaWIuc2ggIyB0Nnh4eCBzcGVjaWZpYyBmdW5jdGlvbnMKIAogIyB1c2FnZTogdGVzdF9iaXNlY3Rpb24gbWF4LWRpZmYgYmlzZWN0LW9wdGlvbiBoZWFkIF5wcnVuZS4uLgogIwpkaWZmIC0tZ2l0IGEvdC90NjAwMy1yZXYtbGlzdC10b3BvLW9yZGVyLnNoIGIvdC90NjAwMy1yZXYtbGlzdC10b3BvLW9yZGVyLnNoCmluZGV4IDVkYWEwYmUuLjJjNzNmMmQgMTAwNzU1Ci0tLSBhL3QvdDYwMDMtcmV2LWxpc3QtdG9wby1vcmRlci5zaAorKysgYi90L3Q2MDAzLXJldi1saXN0LXRvcG8tb3JkZXIuc2gKQEAgLTYsNyArNiw3IEBACiB0ZXN0X2Rlc2NyaXB0aW9uPSdUZXN0cyBnaXQgcmV2LWxpc3QgLS10b3BvLW9yZGVyIGZ1bmN0aW9uYWxpdHknCiAKIC4gLi90ZXN0LWxpYi5zaAotLiAuLi90NjAwMGxpYi5zaCAjIHQ2eHh4IHNwZWNpZmljIGZ1bmN0aW9ucworLiAiJFRFU1RfRElSRUNUT1JZIi90NjAwMGxpYi5zaCAjIHQ2eHh4IHNwZWNpZmljIGZ1bmN0aW9ucwogCiBsaXN0X2R1cGxpY2F0ZXMoKQogewpkaWZmIC0tZ2l0IGEvdC90NjAxMC1tZXJnZS1iYXNlLnNoIGIvdC90NjAxMC1tZXJnZS1iYXNlLnNoCmluZGV4IGI2ZTU3YjIuLjA0ZTRiN2MgMTAwNzU1Ci0tLSBhL3QvdDYwMTAtbWVyZ2UtYmFzZS5zaAorKysgYi90L3Q2MDEwLW1lcmdlLWJhc2Uuc2gKQEAgLTEwOCw0ICsxMDgsNTIgQEAKICAgICAnTUI9JChnaXQgbWVyZ2UtYmFzZSAtLWFsbCBQTCBQUikgJiYKICAgICAgZXhwciAiJChnaXQgbmFtZS1yZXYgIiRNQiIpIiA6ICJbMC05YS1mXSogdGFncy9DMiInCiAKKyMgQW5vdGhlciBzZXQgdG8gZGVtb25zdHJhdGUgYmFzZSBiZXR3ZWVuIG9uZSBjb21taXQgYW5kIGEgbWVyZ2UKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24uCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlLWJhc2UgZm9yIG9jdG9wdXMtc3RlcCAoc2V0dXApJyAnCisJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSByb290ICYmIGdpdCB0YWcgTU1SICYmCisJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSAxICYmIGdpdCB0YWcgTU0xICYmCisJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSBvICYmCisJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSBvICYmCisJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSBvICYmCisJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSBBICYmIGdpdCB0YWcgTU1BICYmCisJZ2l0IGNoZWNrb3V0IE1NMSAmJgorCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gbyAmJgorCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gbyAmJgorCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gbyAmJgorCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gQiAmJiBnaXQgdGFnIE1NQiAmJgorCWdpdCBjaGVja291dCBNTVIgJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIG8gJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIG8gJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIG8gJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIG8gJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIEMgJiYgZ2l0IHRhZyBNTUMKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbWVyZ2UtYmFzZSBBIEIgQycgJworCU1CPSQoZ2l0IG1lcmdlLWJhc2UgLS1hbGwgTU1BIE1NQiBNTUMpICYmCisJTU0xPSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBNTTEpICYmCisJdGVzdCAiJE1NMSIgPSAiJE1CIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjcmlzcy1jcm9zcyBtZXJnZS1iYXNlIGZvciBvY3RvcHVzLXN0ZXAgKHNldHVwKScgJworCWdpdCByZXNldCAtLWhhcmQgTU1SICYmCisJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSAxICYmIGdpdCB0YWcgQ0MxICYmCisJZ2l0IHJlc2V0IC0taGFyZCBFICYmCisJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSAyICYmIGdpdCB0YWcgQ0MyICYmCisJdGVzdF90aWNrICYmIGdpdCBtZXJnZSAtcyBvdXJzIENDMSAmJgorCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gbyAmJgorCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gQiAmJiBnaXQgdGFnIENDQiAmJgorCWdpdCByZXNldCAtLWhhcmQgQ0MxICYmCisJdGVzdF90aWNrICYmIGdpdCBtZXJnZSAtcyBvdXJzIENDMiAmJgorCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gQSAmJiBnaXQgdGFnIENDQQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZS1iYXNlIEIgQV5eIEFeXjInICcKKwlNQjA9JChnaXQgbWVyZ2UtYmFzZSAtLWFsbCBDQ0IgQ0NBXl4gQ0NBXl4yIHwgc29ydCkgJiYKKwlNQjE9JChnaXQgcmV2LXBhcnNlIENDMSBDQzIgfCBzb3J0KSAmJgorCXRlc3QgIiRNQjAiID0gIiRNQjEiCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NjAxMi1yZXYtbGlzdC1zaW1wbGlmeS5zaCBiL3QvdDYwMTItcmV2LWxpc3Qtc2ltcGxpZnkuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTEwYmI5NgotLS0gL2Rldi9udWxsCisrKyBiL3QvdDYwMTItcmV2LWxpc3Qtc2ltcGxpZnkuc2gKQEAgLTAsMCArMSw5MyBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J21lcmdlIHNpbXBsaWZpY2F0aW9uJworCisuIC4vdGVzdC1saWIuc2gKKworbm90ZSAoKSB7CisJZ2l0IHRhZyAiJDEiCit9CisKK194NDA9J1swLTlhLWZdWzAtOWEtZl1bMC05YS1mXVswLTlhLWZdWzAtOWEtZl0nCitfeDQwPSIkX3g0MCRfeDQwJF94NDAkX3g0MCRfeDQwJF94NDAkX3g0MCRfeDQwIgorCit1bm5vdGUgKCkgeworCWdpdCBuYW1lLXJldiAtLXRhZ3MgLS1zdGRpbiB8IHNlZCAtZSAic3wkX3g0MCAodGFncy9cKFteKV0qXCkpIHxcMSB8ZyIKK30KKwordGVzdF9leHBlY3Rfc3VjY2VzcyBzZXR1cCAnCisJZWNobyAiSGkgdGhlcmUiID5maWxlICYmCisJZ2l0IGFkZCBmaWxlICYmCisJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLW0gIkluaXRpYWwgZmlsZSIgJiYKKwlub3RlIEEgJiYKKworCWdpdCBicmFuY2ggb3RoZXItYnJhbmNoICYmCisKKwllY2hvICJIZWxsbyIgPmZpbGUgJiYKKwlnaXQgYWRkIGZpbGUgJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtbSAiTW9kaWZpZWQgZmlsZSIgJiYKKwlub3RlIEIgJiYKKworCWdpdCBjaGVja291dCBvdGhlci1icmFuY2ggJiYKKworCWVjaG8gIkhlbGxvIiA+ZmlsZSAmJgorCWdpdCBhZGQgZmlsZSAmJgorCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC1tICJNb2RpZmllZCB0aGUgZmlsZSBpZGVudGljYWxseSIgJiYKKwlub3RlIEMgJiYKKworCWVjaG8gIlRoaXMgaXMgYSBzdHVwaWQgZXhhbXBsZSIgPmFub3RoZXItZmlsZSAmJgorCWdpdCBhZGQgYW5vdGhlci1maWxlICYmCisJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLW0gIkFkZCBhbm90aGVyIGZpbGUiICYmCisJbm90ZSBEICYmCisKKwl0ZXN0X3RpY2sgJiYgZ2l0IG1lcmdlIC1tICJtZXJnZSIgbWFzdGVyICYmCisJbm90ZSBFICYmCisKKwllY2hvICJZZXQgYW5vdGhlciIgPmVsaWYgJiYKKwlnaXQgYWRkIGVsaWYgJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtbSAiSXJyZWxldmFudCBjaGFuZ2UiICYmCisJbm90ZSBGICYmCisKKwlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJZWNobyAiWWV0IGFub3RoZXIiID5lbGlmICYmCisJZ2l0IGFkZCBlbGlmICYmCisJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLW0gIkFub3RoZXIgaXJyZWxldmFudCBjaGFuZ2UiICYmCisJbm90ZSBHICYmCisKKwl0ZXN0X3RpY2sgJiYgZ2l0IG1lcmdlIC1tICJtZXJnZSIgb3RoZXItYnJhbmNoICYmCisJbm90ZSBIICYmCisKKwllY2hvICJGaW5hbCBjaGFuZ2UiID5maWxlICYmCisJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLWEgLW0gIkZpbmFsIGNoYW5nZSIgJiYKKwlub3RlIEkKKycKKworRk1UPSd0Zm9ybWF0OiVQIAklSCB8ICVzJworCitjaGVja19yZXN1bHQgKCkgeworCWZvciBjIGluICQxCisJZG8KKwkJZWNobyAiJGMiCisJZG9uZSA+ZXhwZWN0ICYmCisJc2hpZnQgJiYKKwlwYXJhbT0iJCoiICYmCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAibG9nICRwYXJhbSIgJworCQlnaXQgbG9nIC0tcHJldHR5PSIkRk1UIiAtLXBhcmVudHMgJHBhcmFtIHwKKwkJdW5ub3RlID5hY3R1YWwgJiYKKwkJc2VkIC1lICJzL14uKglcKFteIF0qXCkgLiovXDEvIiA+Y2hlY2sgPGFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgY2hlY2sgfHwgeworCQkJY2F0IGFjdHVhbAorCQkJZmFsc2UKKwkJfQorCScKK30KKworY2hlY2tfcmVzdWx0ICdJIEggRyBGIEUgRCBDIEIgQScgLS1mdWxsLWhpc3RvcnkKK2NoZWNrX3Jlc3VsdCAnSSBIIEUgQyBCIEEnIC0tZnVsbC1oaXN0b3J5IC0tIGZpbGUKK2NoZWNrX3Jlc3VsdCAnSSBIIEUgQyBCIEEnIC0tZnVsbC1oaXN0b3J5IC0tdG9wby1vcmRlciAtLSBmaWxlCitjaGVja19yZXN1bHQgJ0kgSCBFIEMgQiBBJyAtLWZ1bGwtaGlzdG9yeSAtLWRhdGUtb3JkZXIgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICdJIEUgQyBCIEEnIC0tc2ltcGxpZnktbWVyZ2VzIC0tIGZpbGUKK2NoZWNrX3Jlc3VsdCAnSSBCIEEnIC0tIGZpbGUKK2NoZWNrX3Jlc3VsdCAnSSBCIEEnIC0tdG9wby1vcmRlciAtLSBmaWxlCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NjAxMy1yZXYtbGlzdC1yZXZlcnNlLXBhcmVudHMuc2ggYi90L3Q2MDEzLXJldi1saXN0LXJldmVyc2UtcGFyZW50cy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41OWZjMmYwCi0tLSAvZGV2L251bGwKKysrIGIvdC90NjAxMy1yZXYtbGlzdC1yZXZlcnNlLXBhcmVudHMuc2gKQEAgLTAsMCArMSw0MiBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249Jy0tcmV2ZXJzZSBjb21iaW5lcyB3aXRoIC0tcGFyZW50cycKKworLiAuL3Rlc3QtbGliLnNoCisKKworY29tbWl0ICgpIHsKKwl0ZXN0X3RpY2sgJiYKKwllY2hvICQxID4gZm9vICYmCisJZ2l0IGFkZCBmb28gJiYKKwlnaXQgY29tbWl0IC1tICIkMSIKK30KKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0IHVwIC0tcmV2ZXJzZSBleGFtcGxlJyAnCisJY29tbWl0IG9uZSAmJgorCWdpdCB0YWcgcm9vdCAmJgorCWNvbW1pdCB0d28gJiYKKwlnaXQgY2hlY2tvdXQgLWIgc2lkZSBIRUFEXiAmJgorCWNvbW1pdCB0aHJlZSAmJgorCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwlnaXQgbWVyZ2UgLXMgb3VycyBzaWRlICYmCisJY29tbWl0IGZpdmUKKwknCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tcmV2ZXJzZSAtLXBhcmVudHMgLS1mdWxsLWhpc3RvcnkgY29tYmluZXMgY29ycmVjdGx5JyAnCisJZ2l0IHJldi1saXN0IC0tcGFyZW50cyAtLWZ1bGwtaGlzdG9yeSBtYXN0ZXIgLS0gZm9vIHwKKwkJcGVybCAtZSAicHJpbnQgcmV2ZXJzZSA8PiIgPiBleHBlY3RlZCAmJgorCWdpdCByZXYtbGlzdCAtLXJldmVyc2UgLS1wYXJlbnRzIC0tZnVsbC1oaXN0b3J5IG1hc3RlciAtLSBmb28gXAorCQk+IGFjdHVhbCAmJgorCXRlc3RfY21wIGFjdHVhbCBleHBlY3RlZAorCScKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1ib3VuZGFyeSBkb2VzIHRvbycgJworCWdpdCByZXYtbGlzdCAtLWJvdW5kYXJ5IC0tcGFyZW50cyAtLWZ1bGwtaGlzdG9yeSBtYXN0ZXIgXnJvb3QgLS0gZm9vIHwKKwkJcGVybCAtZSAicHJpbnQgcmV2ZXJzZSA8PiIgPiBleHBlY3RlZCAmJgorCWdpdCByZXYtbGlzdCAtLWJvdW5kYXJ5IC0tcmV2ZXJzZSAtLXBhcmVudHMgLS1mdWxsLWhpc3RvcnkgXAorCQltYXN0ZXIgXnJvb3QgLS0gZm9vID4gYWN0dWFsICYmCisJdGVzdF9jbXAgYWN0dWFsIGV4cGVjdGVkCisJJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDYwMTQtcmV2LWxpc3QtYWxsLnNoIGIvdC90NjAxNC1yZXYtbGlzdC1hbGwuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTkxYWI0YQotLS0gL2Rldi9udWxsCisrKyBiL3QvdDYwMTQtcmV2LWxpc3QtYWxsLnNoCkBAIC0wLDAgKzEsMzggQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSctLWFsbCBpbmNsdWRlcyBkZXRhY2hlZCBIRUFEcycKKworLiAuL3Rlc3QtbGliLnNoCisKKworY29tbWl0ICgpIHsKKwl0ZXN0X3RpY2sgJiYKKwllY2hvICQxID4gZm9vICYmCisJZ2l0IGFkZCBmb28gJiYKKwlnaXQgY29tbWl0IC1tICIkMSIKK30KKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAnICcKKworCWNvbW1pdCBvbmUgJiYKKwljb21taXQgdHdvICYmCisJZ2l0IGNoZWNrb3V0IEhFQUReICYmCisJY29tbWl0IGRldGFjaGVkCisKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmV2LWxpc3QgLS1hbGwgbGlzdHMgZGV0YWNoZWQgSEVBRCcgJworCisJdGVzdCAzID0gJChnaXQgcmV2LWxpc3QgLS1hbGwgfCB3YyAtbCkKKworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXBhY2sgZG9lcyBub3QgbG9zZSBkZXRhY2hlZCBIRUFEJyAnCisKKwlnaXQgZ2MgJiYKKwlnaXQgcHJ1bmUgLS1leHBpcmU9bm93ICYmCisJZ2l0IHNob3cgSEVBRAorCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NjAyMy1tZXJnZS1maWxlLnNoIGIvdC90NjAyMy1tZXJnZS1maWxlLnNoCmluZGV4IGY2NzRjNDguLmY4OTQyYmMgMTAwNzU1Ci0tLSBhL3QvdDYwMjMtbWVyZ2UtZmlsZS5zaAorKysgYi90L3Q2MDIzLW1lcmdlLWZpbGUuc2gKQEAgLTEzNiw3ICsxMzYsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdiaW5hcnkgZmlsZXMgY2Fubm90IGJlIG1lcmdlZCcgJwogCXRlc3RfbXVzdF9mYWlsIGdpdCBtZXJnZS1maWxlIC1wIFwKLQkJb3JpZy50eHQgLi4vdGVzdDQwMTIucG5nIG5ldzEudHh0IDI+IG1lcmdlLmVyciAmJgorCQlvcmlnLnR4dCAiJFRFU1RfRElSRUNUT1JZIi90ZXN0NDAxMi5wbmcgbmV3MS50eHQgMj4gbWVyZ2UuZXJyICYmCiAJZ3JlcCAiQ2Fubm90IG1lcmdlIGJpbmFyeSBmaWxlcyIgbWVyZ2UuZXJyCiAnCiAKQEAgLTE1MCw4ICsxNTAsOCBAQAogCiAnCiAKLXNlZCAtZSAncy9kZWVyaXQuLyZcblxuXG5cbi8nIC1lICJzL2xvY2F2aXQsL2xvY2F2aXQ7LyIgPCBuZXc2LnR4dCA+IG5ldzgudHh0Ci1zZWQgLWUgJ3MvZGVlcml0Li8mXG5cblxuXG4vJyAtZSAicy9sb2Nhdml0LC9sb2Nhdml0IC0tLyIgPCBuZXc3LnR4dCA+IG5ldzkudHh0CitzZWQgLWUgJ3MvZGVlcml0Li8mJSUlJS8nIC1lICJzL2xvY2F2aXQsL2xvY2F2aXQ7LyI8IG5ldzYudHh0IHwgdHIgJyUnICdcMDEyJyA+IG5ldzgudHh0CitzZWQgLWUgJ3MvZGVlcml0Li8mJSUlJS8nIC1lICJzL2xvY2F2aXQsL2xvY2F2aXQgLS0vIiA8IG5ldzcudHh0IHwgdHIgJyUnICdcMDEyJyA+IG5ldzkudHh0CiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ1pFQUxPVVNfQUxOVU0nICcKIApAQCAtMTYxLDQgKzE2MSw0OCBAQAogCiAnCiAKK2NhdCA+ZXhwZWN0IDw8XEVPRgorRG9taW51cyByZWdpdCBtZSwKKzw8PDw8PDwgbmV3OC50eHQKK2V0IG5paGlsIG1paGkgZGVlcml0OworCisKKworCitJbiBsb2NvIHBhc2N1YWUgaWJpIG1lIGNvbGxvY2F2aXQ7CitzdXBlciBhcXVhbSByZWZlY3Rpb25pcyBlZHVjYXZpdCBtZS4KK3x8fHx8fHwKK2V0IG5paGlsIG1paGkgZGVlcml0LgorSW4gbG9jbyBwYXNjdWFlIGliaSBtZSBjb2xsb2Nhdml0LAorc3VwZXIgYXF1YW0gcmVmZWN0aW9uaXMgZWR1Y2F2aXQgbWU7Cis9PT09PT09CitldCBuaWhpbCBtaWhpIGRlZXJpdCwKKworCisKKworSW4gbG9jbyBwYXNjdWFlIGliaSBtZSBjb2xsb2Nhdml0IC0tCitzdXBlciBhcXVhbSByZWZlY3Rpb25pcyBlZHVjYXZpdCBtZSwKKz4+Pj4+Pj4gbmV3OS50eHQKK2FuaW1hbSBtZWFtIGNvbnZlcnRpdCwKK2RlZHV4aXQgbWUgc3VwZXIgc2VtaXRhcyBqdXNpdGlhZSwKK3Byb3B0ZXIgbm9tZW4gc3V1bS4KK05hbSBldCBzaSBhbWJ1bGF2ZXJvIGluIG1lZGlvIHVtYnJhZSBtb3J0aXMsCitub24gdGltZWJvIG1hbGEsIHF1b25pYW0gVFUgbWVjdW0gZXM6Cit2aXJnYSB0dWEgZXQgYmFjdWx1cyB0dXVzIGlwc2EgbWUgY29uc29sYXRhIHN1bnQuCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnImRpZmYzIC1tIiBzdHlsZSBvdXRwdXQgKDEpJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlLWZpbGUgLXAgLS1kaWZmMyBcCisJCW5ldzgudHh0IG5ldzUudHh0IG5ldzkudHh0ID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJyJkaWZmMyAtbSIgc3R5bGUgb3V0cHV0ICgyKScgJworCWdpdCBjb25maWcgbWVyZ2UuY29uZmxpY3RzdHlsZSBkaWZmMyAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBtZXJnZS1maWxlIC1wIFwKKwkJbmV3OC50eHQgbmV3NS50eHQgbmV3OS50eHQgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q2MDI0LXJlY3Vyc2l2ZS1tZXJnZS5zaCBiL3QvdDYwMjQtcmVjdXJzaXZlLW1lcmdlLnNoCmluZGV4IDgwMmQwZDAuLjEyOWZhMzAgMTAwNzU1Ci0tLSBhL3QvdDYwMjQtcmVjdXJzaXZlLW1lcmdlLnNoCisrKyBiL3QvdDYwMjQtcmVjdXJzaXZlLW1lcmdlLnNoCkBAIC05Nyw0ICs5NywyNyBAQAogCQltZXJnZS5lcnIKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnbWFyayByZW5hbWUvZGVsZXRlIGFzIHVubWVyZ2VkJyAnCisKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZ2l0IGNoZWNrb3V0IC1iIGRlbGV0ZSAmJgorCWdpdCBybSBhMSAmJgorCXRlc3RfdGljayAmJgorCWdpdCBjb21taXQgLW0gZGVsZXRlICYmCisJZ2l0IGNoZWNrb3V0IC1iIHJlbmFtZSBIRUFEXiAmJgorCWdpdCBtdiBhMSBhMgorCXRlc3RfdGljayAmJgorCWdpdCBjb21taXQgLW0gcmVuYW1lICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIGRlbGV0ZSAmJgorCXRlc3QgMSA9ICQoZ2l0IGxzLWZpbGVzIC0tdW5tZXJnZWQgfCB3YyAtbCkgJiYKKwlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IDoyOmEyICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSA6MzphMiAmJgorCWdpdCBjaGVja291dCAtZiBkZWxldGUgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2UgcmVuYW1lICYmCisJdGVzdCAxID0gJChnaXQgbHMtZmlsZXMgLS11bm1lcmdlZCB8IHdjIC1sKSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgOjI6YTIgJiYKKwlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IDozOmEyCisKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q2MDI1LW1lcmdlLXN5bWxpbmtzLnNoIGIvdC90NjAyNS1tZXJnZS1zeW1saW5rcy5zaAppbmRleCA1Mzg5MmE1Li40MzNjNGRlIDEwMDc1NQotLS0gYS90L3Q2MDI1LW1lcmdlLXN5bWxpbmtzLnNoCisrKyBiL3QvdDYwMjUtbWVyZ2Utc3ltbGlua3Muc2gKQEAgLTE4LDExICsxOCwxMSBAQAogZ2l0IGNvbW1pdCAtbSBpbml0aWFsICYmCiBnaXQgYnJhbmNoIGItc3ltbGluayAmJgogZ2l0IGJyYW5jaCBiLWZpbGUgJiYKLWw9JChlY2hvIC1uIGZpbGUgfCBnaXQgaGFzaC1vYmplY3QgLXQgYmxvYiAtdyAtLXN0ZGluKSAmJgorbD0kKHByaW50ZiBmaWxlIHwgZ2l0IGhhc2gtb2JqZWN0IC10IGJsb2IgLXcgLS1zdGRpbikgJiYKIGVjaG8gIjEyMDAwMCAkbAlzeW1saW5rIiB8IGdpdCB1cGRhdGUtaW5kZXggLS1pbmRleC1pbmZvICYmCiBnaXQgY29tbWl0IC1tIG1hc3RlciAmJgogZ2l0IGNoZWNrb3V0IGItc3ltbGluayAmJgotbD0kKGVjaG8gLW4gZmlsZS1kaWZmZXJlbnQgfCBnaXQgaGFzaC1vYmplY3QgLXQgYmxvYiAtdyAtLXN0ZGluKSAmJgorbD0kKHByaW50ZiBmaWxlLWRpZmZlcmVudCB8IGdpdCBoYXNoLW9iamVjdCAtdCBibG9iIC13IC0tc3RkaW4pICYmCiBlY2hvICIxMjAwMDAgJGwJc3ltbGluayIgfCBnaXQgdXBkYXRlLWluZGV4IC0taW5kZXgtaW5mbyAmJgogZ2l0IGNvbW1pdCAtbSBiLXN5bWxpbmsgJiYKIGdpdCBjaGVja291dCBiLWZpbGUgJiYKZGlmZiAtLWdpdCBhL3QvdDYwMjYtbWVyZ2UtYXR0ci5zaCBiL3QvdDYwMjYtbWVyZ2UtYXR0ci5zaAppbmRleCA0YjQyM2U5Li4xYmEwYTI1IDEwMDc1NQotLS0gYS90L3Q2MDI2LW1lcmdlLWF0dHIuc2gKKysrIGIvdC90NjAyNi1tZXJnZS1hdHRyLnNoCkBAIC0xNDIsNCArMTQyLDI2IEBACiAJcm0gLWYgJG8gJGEgJGIKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAndXAtdG8tZGF0ZSBtZXJnZSB3aXRob3V0IGNvbW1vbiBhbmNlc3RvcicgJworCXRlc3RfY3JlYXRlX3JlcG8gcmVwbzEgJiYKKwl0ZXN0X2NyZWF0ZV9yZXBvIHJlcG8yICYmCisJdGVzdF90aWNrICYmCisJKAorCQljZCByZXBvMSAmJgorCQk+YSAmJgorCQlnaXQgYWRkIGEgJiYKKwkJZ2l0IGNvbW1pdCAtbSBpbml0aWFsCisJKSAmJgorCXRlc3RfdGljayAmJgorCSgKKwkJY2QgcmVwbzIgJiYKKwkJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIGluaXRpYWwKKwkpICYmCisJdGVzdF90aWNrICYmCisJKAorCQljZCByZXBvMSAmJgorCQlnaXQgcHVsbCAuLi9yZXBvMiBtYXN0ZXIKKwkpCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NjAyNy1tZXJnZS1iaW5hcnkuc2ggYi90L3Q2MDI3LW1lcmdlLWJpbmFyeS5zaAppbmRleCA5MmNhMWYwLi5iNTE5NjI2IDEwMDc1NQotLS0gYS90L3Q2MDI3LW1lcmdlLWJpbmFyeS5zaAorKysgYi90L3Q2MDI3LW1lcmdlLWJpbmFyeS5zaApAQCAtNiw3ICs2LDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBzZXR1cCAnCiAKLQljYXQgLi4vdGVzdDQwMTIucG5nID5tICYmCisJY2F0ICIkVEVTVF9ESVJFQ1RPUlkiL3Rlc3Q0MDEyLnBuZyA+bSAmJgogCWdpdCBhZGQgbSAmJgogCWdpdCBscy1maWxlcyAtcyB8IHNlZCAtZSAicy8gMAkvIDEJLyIgPkUxICYmCiAJdGVzdF90aWNrICYmCmRpZmYgLS1naXQgYS90L3Q2MDMwLWJpc2VjdC1wb3JjZWxhaW4uc2ggYi90L3Q2MDMwLWJpc2VjdC1wb3JjZWxhaW4uc2gKaW5kZXggMGI4MWU2NS4uMDUyYTZjOSAxMDA3NTUKLS0tIGEvdC90NjAzMC1iaXNlY3QtcG9yY2VsYWluLnNoCisrKyBiL3QvdDYwMzAtYmlzZWN0LXBvcmNlbGFpbi5zaApAQCAtMzM4LDggKzMzOCwyNSBAQAogCWdyZXAgIiRIQVNINiBpcyBmaXJzdCBiYWQgY29tbWl0IiBteV9iaXNlY3RfbG9nLnR4dAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdiaXNlY3Qgc3RhcnRpbmcgd2l0aCBhIGRldGFjaGVkIEhFQUQnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Jpc2VjdCBza2lwIG9ubHkgb25lIHJhbmdlJyAnCisJZ2l0IGJpc2VjdCByZXNldCAmJgorCWdpdCBiaXNlY3Qgc3RhcnQgJEhBU0g3ICRIQVNIMSAmJgorCWdpdCBiaXNlY3Qgc2tpcCAkSEFTSDEuLiRIQVNINSAmJgorCXRlc3QgIiRIQVNINiIgPSAiJChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQpIiAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBiaXNlY3QgYmFkID4gbXlfYmlzZWN0X2xvZy50eHQgJiYKKwlncmVwICJmaXJzdCBiYWQgY29tbWl0IGNvdWxkIGJlIGFueSBvZiIgbXlfYmlzZWN0X2xvZy50eHQKKycKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnYmlzZWN0IHNraXAgbWFueSByYW5nZXMnICcKKwlnaXQgYmlzZWN0IHN0YXJ0ICRIQVNINyAkSEFTSDEgJiYKKwl0ZXN0ICIkSEFTSDQiID0gIiQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEKSIgJiYKKwlnaXQgYmlzZWN0IHNraXAgJEhBU0gyICRIQVNIMi4uIC4uJEhBU0g1ICYmCisJdGVzdCAiJEhBU0g2IiA9ICIkKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCkiICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGJpc2VjdCBiYWQgPiBteV9iaXNlY3RfbG9nLnR4dCAmJgorCWdyZXAgImZpcnN0IGJhZCBjb21taXQgY291bGQgYmUgYW55IG9mIiBteV9iaXNlY3RfbG9nLnR4dAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdiaXNlY3Qgc3RhcnRpbmcgd2l0aCBhIGRldGFjaGVkIEhFQUQnICcKIAlnaXQgYmlzZWN0IHJlc2V0ICYmCiAJZ2l0IGNoZWNrb3V0IG1hc3Rlcl4gJiYKIAlIRUFEPSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEKSAmJgpAQCAtMzc1LDYgKzM5MiwxMjAgQEAKIAlnaXQgYnJhbmNoIC1EIGJpc2VjdAogJwogCisjIFRoaXMgY3JlYXRlcyBhICJzaWRlIiBicmFuY2ggdG8gdGVzdCAic2libGluZ3MiIGNhc2VzLgorIworIyBIMS1IMi1IMy1INC1INS1INi1INyAgPC0tb3RoZXIKKyMgICAgICAgICAgICBcCisjICAgICAgICAgICAgIFM1LVM2LVM3ICA8LS1zaWRlCisjCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaWRlIGJyYW5jaCBjcmVhdGlvbicgJworCWdpdCBiaXNlY3QgcmVzZXQgJiYKKwlnaXQgY2hlY2tvdXQgLWIgc2lkZSAkSEFTSDQgJiYKKwlhZGRfbGluZV9pbnRvX2ZpbGUgIjUoc2lkZSk6IGZpcnN0IGxpbmUgb24gYSBzaWRlIGJyYW5jaCIgaGVsbG8yICYmCisJU0lERV9IQVNINT0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCkgJiYKKwlhZGRfbGluZV9pbnRvX2ZpbGUgIjYoc2lkZSk6IHNlY29uZCBsaW5lIG9uIGEgc2lkZSBicmFuY2giIGhlbGxvMiAmJgorCVNJREVfSEFTSDY9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQpICYmCisJYWRkX2xpbmVfaW50b19maWxlICI3KHNpZGUpOiB0aGlyZCBsaW5lIG9uIGEgc2lkZSBicmFuY2giIGhlbGxvMiAmJgorCVNJREVfSEFTSDc9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dvb2QgbWVyZ2UgYmFzZSB3aGVuIGdvb2QgYW5kIGJhZCBhcmUgc2libGluZ3MnICcKKwlnaXQgYmlzZWN0IHN0YXJ0ICIkSEFTSDciICIkU0lERV9IQVNINyIgPiBteV9iaXNlY3RfbG9nLnR4dCAmJgorCWdyZXAgIm1lcmdlIGJhc2UgbXVzdCBiZSB0ZXN0ZWQiIG15X2Jpc2VjdF9sb2cudHh0ICYmCisJZ3JlcCAkSEFTSDQgbXlfYmlzZWN0X2xvZy50eHQgJiYKKwlnaXQgYmlzZWN0IGdvb2QgPiBteV9iaXNlY3RfbG9nLnR4dCAmJgorCXRlc3RfbXVzdF9mYWlsIGdyZXAgIm1lcmdlIGJhc2UgbXVzdCBiZSB0ZXN0ZWQiIG15X2Jpc2VjdF9sb2cudHh0ICYmCisJZ3JlcCAkSEFTSDYgbXlfYmlzZWN0X2xvZy50eHQgJiYKKwlnaXQgYmlzZWN0IHJlc2V0CisnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdza2lwcGVkIG1lcmdlIGJhc2Ugd2hlbiBnb29kIGFuZCBiYWQgYXJlIHNpYmxpbmdzJyAnCisJZ2l0IGJpc2VjdCBzdGFydCAiJFNJREVfSEFTSDciICIkSEFTSDciID4gbXlfYmlzZWN0X2xvZy50eHQgJiYKKwlncmVwICJtZXJnZSBiYXNlIG11c3QgYmUgdGVzdGVkIiBteV9iaXNlY3RfbG9nLnR4dCAmJgorCWdyZXAgJEhBU0g0IG15X2Jpc2VjdF9sb2cudHh0ICYmCisJZ2l0IGJpc2VjdCBza2lwID4gbXlfYmlzZWN0X2xvZy50eHQgMj4mMSAmJgorCWdyZXAgIldhcm5pbmciIG15X2Jpc2VjdF9sb2cudHh0ICYmCisJZ3JlcCAkU0lERV9IQVNINiBteV9iaXNlY3RfbG9nLnR4dCAmJgorCWdpdCBiaXNlY3QgcmVzZXQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYmFkIG1lcmdlIGJhc2Ugd2hlbiBnb29kIGFuZCBiYWQgYXJlIHNpYmxpbmdzJyAnCisJZ2l0IGJpc2VjdCBzdGFydCAiJEhBU0g3IiBIRUFEID4gbXlfYmlzZWN0X2xvZy50eHQgJiYKKwlncmVwICJtZXJnZSBiYXNlIG11c3QgYmUgdGVzdGVkIiBteV9iaXNlY3RfbG9nLnR4dCAmJgorCWdyZXAgJEhBU0g0IG15X2Jpc2VjdF9sb2cudHh0ICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGJpc2VjdCBiYWQgPiBteV9iaXNlY3RfbG9nLnR4dCAyPiYxICYmCisJZ3JlcCAibWVyZ2UgYmFzZSAkSEFTSDQgaXMgYmFkIiBteV9iaXNlY3RfbG9nLnR4dCAmJgorCWdyZXAgImZpeGVkIGJldHdlZW4gJEhBU0g0IGFuZCBcWyRTSURFX0hBU0g3XF0iIG15X2Jpc2VjdF9sb2cudHh0ICYmCisJZ2l0IGJpc2VjdCByZXNldAorJworCisjIFRoaXMgY3JlYXRlcyBhIGZldyBtb3JlIGNvbW1pdHMgKEEgYW5kIEIpIHRvIHRlc3QgInNpYmxpbmdzIiBjYXNlcworIyB3aGVuIGEgZ29vZCBhbmQgYSBiYWQgcmV2IGhhdmUgbWFueSBtZXJnZSBiYXNlcy4KKyMKKyMgV2Ugc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZzoKKyMKKyMgSDEtSDItSDMtSDQtSDUtSDYtSDcKKyMgICAgICAgICAgICBcICBcICAgICBcCisjICAgICAgICAgICAgIFM1LUEgICAgIFwKKyMgICAgICAgICAgICAgIFwgICAgICAgIFwKKyMgICAgICAgICAgICAgICBTNi1TNy0tLS1CCisjCisjIEFuZCB0aGVyZSBBIGFuZCBCIGhhdmUgMiBtZXJnZSBiYXNlcyAoUzUgYW5kIEg1KSB0aGF0IHNob3VsZCBiZQorIyByZXBvcnRlZCBieSAiZ2l0IG1lcmdlLWJhc2UgLS1hbGwgQSBCIi4KKyMKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21hbnkgbWVyZ2UgYmFzZXMgY3JlYXRpb24nICcKKwlnaXQgY2hlY2tvdXQgIiRTSURFX0hBU0g1IiAmJgorCWdpdCBtZXJnZSAtbSAibWVyZ2UgSEFTSDUgYW5kIFNJREVfSEFTSDUiICIkSEFTSDUiICYmCisJQV9IQVNIPSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEKSAmJgorCWdpdCBjaGVja291dCBzaWRlICYmCisJZ2l0IG1lcmdlIC1tICJtZXJnZSBIQVNINyBhbmQgU0lERV9IQVNINyIgIiRIQVNINyIgJiYKKwlCX0hBU0g9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQpICYmCisJZ2l0IG1lcmdlLWJhc2UgLS1hbGwgIiRBX0hBU0giICIkQl9IQVNIIiA+IG1lcmdlX2Jhc2VzLnR4dCAmJgorCXRlc3QgJCh3YyAtbCA8IG1lcmdlX2Jhc2VzLnR4dCkgPSAiMiIgJiYKKwlncmVwICIkSEFTSDUiIG1lcmdlX2Jhc2VzLnR4dCAmJgorCWdyZXAgIiRTSURFX0hBU0g1IiBtZXJnZV9iYXNlcy50eHQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ29vZCBtZXJnZSBiYXNlcyB3aGVuIGdvb2QgYW5kIGJhZCBhcmUgc2libGluZ3MnICcKKwlnaXQgYmlzZWN0IHN0YXJ0ICIkQl9IQVNIIiAiJEFfSEFTSCIgPiBteV9iaXNlY3RfbG9nLnR4dCAmJgorCWdyZXAgIm1lcmdlIGJhc2UgbXVzdCBiZSB0ZXN0ZWQiIG15X2Jpc2VjdF9sb2cudHh0ICYmCisJZ2l0IGJpc2VjdCBnb29kID4gbXlfYmlzZWN0X2xvZzIudHh0ICYmCisJZ3JlcCAibWVyZ2UgYmFzZSBtdXN0IGJlIHRlc3RlZCIgbXlfYmlzZWN0X2xvZzIudHh0ICYmCisJeworCQl7CisJCQlncmVwICIkU0lERV9IQVNINSIgbXlfYmlzZWN0X2xvZy50eHQgJiYKKwkJCWdyZXAgIiRIQVNINSIgbXlfYmlzZWN0X2xvZzIudHh0CisJCX0gfHwgeworCQkJZ3JlcCAiJFNJREVfSEFTSDUiIG15X2Jpc2VjdF9sb2cyLnR4dCAmJgorCQkJZ3JlcCAiJEhBU0g1IiBteV9iaXNlY3RfbG9nLnR4dAorCQl9CisJfSAmJgorCWdpdCBiaXNlY3QgcmVzZXQKKycKKworY2hlY2tfdHJhY2UoKSB7CisJZ3JlcCAiJDEiICIkR0lUX1RSQUNFIiB8IGdyZXAgIlxeJDIiIHwgZ3JlcCAiJDMiID4vZGV2L251bGwKK30KKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnb3B0aW1pemVkIG1lcmdlIGJhc2UgY2hlY2tzJyAnCisJR0lUX1RSQUNFPSIkKHB3ZCkvdHJhY2UubG9nIiAmJgorCWV4cG9ydCBHSVRfVFJBQ0UgJiYKKwlnaXQgYmlzZWN0IHN0YXJ0ICIkSEFTSDciICIkU0lERV9IQVNINyIgPiBteV9iaXNlY3RfbG9nLnR4dCAmJgorCWdyZXAgIm1lcmdlIGJhc2UgbXVzdCBiZSB0ZXN0ZWQiIG15X2Jpc2VjdF9sb2cudHh0ICYmCisJZ3JlcCAiJEhBU0g0IiBteV9iaXNlY3RfbG9nLnR4dCAmJgorCWNoZWNrX3RyYWNlICJyZXYtbGlzdCIgIiRIQVNINyIgIiRTSURFX0hBU0g3IiAmJgorCWdpdCBiaXNlY3QgZ29vZCA+IG15X2Jpc2VjdF9sb2cyLnR4dCAmJgorCXRlc3QgLWYgIi5naXQvQklTRUNUX0FOQ0VTVE9SU19PSyIgJiYKKwl0ZXN0ICIkSEFTSDYiID0gJChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQpICYmCisJOiA+ICIkR0lUX1RSQUNFIiAmJgorCWdpdCBiaXNlY3QgYmFkID4gbXlfYmlzZWN0X2xvZzMudHh0ICYmCisJdGVzdF9tdXN0X2ZhaWwgY2hlY2tfdHJhY2UgInJldi1saXN0IiAiJEhBU0g2IiAiJFNJREVfSEFTSDciICYmCisJZ2l0IGJpc2VjdCBnb29kICIkQV9IQVNIIiA+IG15X2Jpc2VjdF9sb2c0LnR4dCAmJgorCWdyZXAgIm1lcmdlIGJhc2UgbXVzdCBiZSB0ZXN0ZWQiIG15X2Jpc2VjdF9sb2c0LnR4dCAmJgorCXRlc3RfbXVzdF9mYWlsIHRlc3QgLWYgIi5naXQvQklTRUNUX0FOQ0VTVE9SU19PSyIgJiYKKwljaGVja190cmFjZSAicmV2LWxpc3QiICIkSEFTSDYiICIkQV9IQVNIIiAmJgorCXVuc2V0IEdJVF9UUkFDRQorJworCiAjCiAjCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDYwNDAtdHJhY2tpbmctaW5mby5zaCBiL3QvdDYwNDAtdHJhY2tpbmctaW5mby5zaAppbmRleCBhYWMyMTJlLi5iYTkwNjAxIDEwMDc1NQotLS0gYS90L3Q2MDQwLXRyYWNraW5nLWluZm8uc2gKKysrIGIvdC90NjA0MC10cmFja2luZy1pbmZvLnNoCkBAIC01Myw3ICs1Myw3IEBACiAJKAogCQljZCB0ZXN0ICYmIGdpdCBjaGVja291dCBiMQogCSkgPmFjdHVhbCAmJgotCWdyZXAgLWUgImhhdmUgMSBhbmQgMSBkaWZmZXJlbnQiIGFjdHVhbAorCWdyZXAgImhhdmUgMSBhbmQgMSBkaWZmZXJlbnQiIGFjdHVhbAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMnICcKQEAgLTYzLDcgKzYzLDcgQEAKIAkJIyByZXBvcnRzIG5vdGhpbmcgdG8gY29tbWl0CiAJCXRlc3RfbXVzdF9mYWlsIGdpdCBzdGF0dXMKIAkpID5hY3R1YWwgJiYKLQlncmVwIC1lICJoYXZlIDEgYW5kIDEgZGlmZmVyZW50IiBhY3R1YWwKKwlncmVwICJoYXZlIDEgYW5kIDEgZGlmZmVyZW50IiBhY3R1YWwKICcKIAogCmRpZmYgLS1naXQgYS90L3Q2MTAxLXJldi1wYXJzZS1wYXJlbnRzLnNoIGIvdC90NjEwMS1yZXYtcGFyc2UtcGFyZW50cy5zaAppbmRleCA5MTk1NTJhLi5mMTA1ZmFiIDEwMDc1NQotLS0gYS90L3Q2MTAxLXJldi1wYXJzZS1wYXJlbnRzLnNoCisrKyBiL3QvdDYxMDEtcmV2LXBhcnNlLXBhcmVudHMuc2gKQEAgLTYsNyArNiw3IEBACiB0ZXN0X2Rlc2NyaXB0aW9uPSdUZXN0IGdpdCByZXYtcGFyc2Ugd2l0aCBkaWZmZXJlbnQgcGFyZW50IG9wdGlvbnMnCiAKIC4gLi90ZXN0LWxpYi5zaAotLiAuLi90NjAwMGxpYi5zaCAjIHQ2eHh4IHNwZWNpZmljIGZ1bmN0aW9ucworLiAiJFRFU1RfRElSRUNUT1JZIi90NjAwMGxpYi5zaCAjIHQ2eHh4IHNwZWNpZmljIGZ1bmN0aW9ucwogCiBkYXRlID5wYXRoMAogZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCBwYXRoMApkaWZmIC0tZ2l0IGEvdC90NjEyMC1kZXNjcmliZS5zaCBiL3QvdDYxMjAtZGVzY3JpYmUuc2gKaW5kZXggMTZjYzYzNS4uOGM3ZTA4MSAxMDA3NTUKLS0tIGEvdC90NjEyMC1kZXNjcmliZS5zaAorKysgYi90L3Q2MTIwLWRlc2NyaWJlLnNoCkBAIC05MSwxNSArOTEsMjEgQEAKIGNoZWNrX2Rlc2NyaWJlIEEtKiBIRUFEXl4yCiBjaGVja19kZXNjcmliZSBCIEhFQUReXjJeCiAKLWNoZWNrX2Rlc2NyaWJlIEEtKiAtLXRhZ3MgSEVBRAotY2hlY2tfZGVzY3JpYmUgQS0qIC0tdGFncyBIRUFEXgotY2hlY2tfZGVzY3JpYmUgRC0qIC0tdGFncyBIRUFEXl4KLWNoZWNrX2Rlc2NyaWJlIEEtKiAtLXRhZ3MgSEVBRF5eMgorY2hlY2tfZGVzY3JpYmUgYy0qIC0tdGFncyBIRUFECitjaGVja19kZXNjcmliZSBjLSogLS10YWdzIEhFQUReCitjaGVja19kZXNjcmliZSBlLSogLS10YWdzIEhFQUReXgorY2hlY2tfZGVzY3JpYmUgYy0qIC0tdGFncyBIRUFEXl4yCiBjaGVja19kZXNjcmliZSBCIC0tdGFncyBIRUFEXl4yXgogCiBjaGVja19kZXNjcmliZSBCLTAtKiAtLWxvbmcgSEVBRF5eMl4KIGNoZWNrX2Rlc2NyaWJlIEEtMy0qIC0tbG9uZyBIRUFEXl4yCiAKKzogPmVyci5leHBlY3QKK2NoZWNrX2Rlc2NyaWJlIEEgLS1hbGwgQV4wCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdubyB3YXJuaW5nIHdhcyBkaXNwbGF5ZWQgZm9yIEEnICcKKwl0ZXN0X2NtcCBlcnIuZXhwZWN0IGVyci5hY3R1YWwKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmVuYW1lIHRhZyBBIHRvIFEgbG9jYWxseScgJwogCW12IC5naXQvcmVmcy90YWdzL0EgLmdpdC9yZWZzL3RhZ3MvUQogJwpkaWZmIC0tZ2l0IGEvdC90NjIwMC1mbXQtbWVyZ2UtbXNnLnNoIGIvdC90NjIwMC1mbXQtbWVyZ2UtbXNnLnNoCmluZGV4IGJjNzQzNDkuLjhmNWEwNmYgMTAwNzU1Ci0tLSBhL3QvdDYyMDAtZm10LW1lcmdlLW1zZy5zaAorKysgYi90L3Q2MjAwLWZtdC1tZXJnZS1tc2cuc2gKQEAgLTgzLDEzICs4MywxMyBAQAogJwogCiBjYXQgPmV4cGVjdGVkIDw8RU9GCi1NZXJnZSBicmFuY2ggJ2xlZnQnIG9mIC4uLyR0ZXN0CitNZXJnZSBicmFuY2ggJ2xlZnQnIG9mICRURVNUX0RJUkVDVE9SWS8kdGVzdAogRU9GCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlLW1zZyB0ZXN0ICMyJyAnCiAKIAlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCi0JZ2l0IGZldGNoIC4uLyIkdGVzdCIgbGVmdCAmJgorCWdpdCBmZXRjaCAiJFRFU1RfRElSRUNUT1JZLyR0ZXN0IiBsZWZ0ICYmCiAKIAlnaXQgZm10LW1lcmdlLW1zZyA8LmdpdC9GRVRDSF9IRUFEID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKZGlmZiAtLWdpdCBhL3QvdDYzMDAtZm9yLWVhY2gtcmVmLnNoIGIvdC90NjMwMC1mb3ItZWFjaC1yZWYuc2gKaW5kZXggMjY5OTViMy4uOGJmYWU0NCAxMDA3NTUKLS0tIGEvdC90NjMwMC1mb3ItZWFjaC1yZWYuc2gKKysrIGIvdC90NjMwMC1mb3ItZWFjaC1yZWYuc2gKQEAgLTI2Miw2ICsyNjIsNTAgQEAKIAkiCiBkb25lCiAKK2NhdCA+ZXhwZWN0ZWQgPDxcRU9GCittYXN0ZXIKK3Rlc3R0YWcKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdDaGVjayBzaG9ydCByZWZuYW1lIGZvcm1hdCcgJworCShnaXQgZm9yLWVhY2gtcmVmIC0tZm9ybWF0PSIlKHJlZm5hbWU6c2hvcnQpIiByZWZzL2hlYWRzICYmCisJZ2l0IGZvci1lYWNoLXJlZiAtLWZvcm1hdD0iJShyZWZuYW1lOnNob3J0KSIgcmVmcy90YWdzKSA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ0NoZWNrIGZvciBpbnZhbGlkIHJlZm5hbWUgZm9ybWF0JyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGZvci1lYWNoLXJlZiAtLWZvcm1hdD0iJShyZWZuYW1lOklOVkFMSUQpIgorJworCitjYXQgPmV4cGVjdGVkIDw8XEVPRgoraGVhZHMvbWFzdGVyCittYXN0ZXIKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdDaGVjayBhbWJpZ3VvdXMgaGVhZCBhbmQgdGFnIHJlZnMnICcKKwlnaXQgY2hlY2tvdXQgLWIgbmV3dGFnICYmCisJZWNobyAiVXNpbmcgJGRhdGVzdGFtcCIgPiBvbmUgJiYKKwlnaXQgYWRkIG9uZSAmJgorCWdpdCBjb21taXQgLW0gIkJyYW5jaCIgJiYKKwlzZXRkYXRlX2FuZF9pbmNyZW1lbnQgJiYKKwlnaXQgdGFnIC1tICJUYWdnaW5nIGF0ICRkYXRlc3RhbXAiIG1hc3RlciAmJgorCWdpdCBmb3ItZWFjaC1yZWYgLS1mb3JtYXQgIiUocmVmbmFtZTpzaG9ydCkiIHJlZnMvaGVhZHMvbWFzdGVyIHJlZnMvdGFncy9tYXN0ZXIgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCitjYXQgPmV4cGVjdGVkIDw8XEVPRgoraGVhZHMvYW1iaWd1b3VzCithbWJpZ3VvdXMKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdDaGVjayBhbWJpZ3VvdXMgaGVhZCBhbmQgdGFnIHJlZnMgSUknICcKKwlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJZ2l0IHRhZyBhbWJpZ3VvdXMgdGVzdHRhZ14wICYmCisJZ2l0IGJyYW5jaCBhbWJpZ3VvdXMgdGVzdHRhZ14wICYmCisJZ2l0IGZvci1lYWNoLXJlZiAtLWZvcm1hdCAiJShyZWZuYW1lOnNob3J0KSIgcmVmcy9oZWFkcy9hbWJpZ3VvdXMgcmVmcy90YWdzL2FtYmlndW91cyA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FuIHVudXN1YWwgdGFnIHdpdGggYW4gaW5jb21wbGV0ZSBsaW5lJyAnCiAKIAlnaXQgdGFnIC1tICJib2dvIiBib2dvICYmCmRpZmYgLS1naXQgYS90L3Q3MDAxLW12LnNoIGIvdC90NzAwMS1tdi5zaAppbmRleCBkMmVjNTUwLi44ZmIzYTU2IDEwMDc1NQotLS0gYS90L3Q3MDAxLW12LnNoCisrKyBiL3QvdDcwMDEtbXYuc2gKQEAgLTYsNyArNiw3IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAncHJlcGFyZSByZWZlcmVuY2UgdHJlZScgXAogICAgICdta2RpciBwYXRoMCBwYXRoMSAmJgotICAgICBjcCAuLi8uLi9DT1BZSU5HIHBhdGgwL0NPUFlJTkcgJiYKKyAgICAgY3AgIiRURVNUX0RJUkVDVE9SWSIvLi4vQ09QWUlORyBwYXRoMC9DT1BZSU5HICYmCiAgICAgIGdpdCBhZGQgcGF0aDAvQ09QWUlORyAmJgogICAgICBnaXQgY29tbWl0IC1tIGFkZCAtYScKIApAQCAtNzMsNyArNzMsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnYWRkaW5nIGFub3RoZXIgZmlsZScgXAotICAgICdjcCAuLi8uLi9SRUFETUUgcGF0aDAvUkVBRE1FICYmCisgICAgJ2NwICIkVEVTVF9ESVJFQ1RPUlkiLy4uL1JFQURNRSBwYXRoMC9SRUFETUUgJiYKICAgICAgZ2l0IGFkZCBwYXRoMC9SRUFETUUgJiYKICAgICAgZ2l0IGNvbW1pdCAtbSBhZGQyIC1hJwogCmRpZmYgLS1naXQgYS90L3Q3MDAyLWdyZXAuc2ggYi90L3Q3MDAyLWdyZXAuc2gKaW5kZXggNWUzNTljYi4uYzQ5Mzg1NCAxMDA3NTUKLS0tIGEvdC90NzAwMi1ncmVwLnNoCisrKyBiL3QvdDcwMDItZ3JlcC5zaApAQCAtMTA5LDcgKzEwOSw3IEBACiAJJwogCiAJdGVzdF9leHBlY3Rfc3VjY2VzcyAiZ3JlcCAtYyAkTCAobm8gL2Rldi9udWxsKSIgJwotCQkhIGdpdCBncmVwIC1jIHRlc3QgJEggfCBncmVwIC1xIC9kZXYvbnVsbAorCQkhIGdpdCBncmVwIC1jIHRlc3QgJEggfCBncmVwIC9kZXYvbnVsbAogICAgICAgICAnCiAKIGRvbmUKQEAgLTE2MSw3ICsxNjEsMTQgQEAKIAlnaXQgbG9nIC0tYXV0aG9yPS0wNzAwICAtLXByZXR0eT10Zm9ybWF0OiVzID5hY3R1YWwgJiYKIAk+ZXhwZWN0ICYmCiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdncmVwIHdpdGggQ0VfVkFMSUQgZmlsZScgJworCWdpdCB1cGRhdGUtaW5kZXggLS1hc3N1bWUtdW5jaGFuZ2VkIHQvdCAmJgorCXJtIHQvdCAmJgorCXRlc3QgIiQoZ2l0IGdyZXAgLS1uby1leHQtZ3JlcCB0KSIgPSAidC90OnRlc3QiICYmCisJZ2l0IHVwZGF0ZS1pbmRleCAtLW5vLWFzc3VtZS11bmNoYW5nZWQgdC90ICYmCisJZ2l0IGNoZWNrb3V0IHQvdAogJwogCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDcwMDMtZmlsdGVyLWJyYW5jaC5zaCBiL3QvdDcwMDMtZmlsdGVyLWJyYW5jaC5zaAppbmRleCAxODJhZWE0Li42YTk5MzZlIDEwMDc1NQotLS0gYS90L3Q3MDAzLWZpbHRlci1icmFuY2guc2gKKysrIGIvdC90NzAwMy1maWx0ZXItYnJhbmNoLnNoCkBAIC0zOSw3ICszOSw5IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jld3JpdGUgYmFyZSByZXBvc2l0b3J5IGlkZW50aWNhbGx5JyAnCi0JKGdpdCBjb25maWcgY29yZS5iYXJlIHRydWUgJiYgY2QgLmdpdCAmJiBnaXQgZmlsdGVyLWJyYW5jaCBicmFuY2gpCisJKGdpdCBjb25maWcgY29yZS5iYXJlIHRydWUgJiYgY2QgLmdpdCAmJgorCSBnaXQgZmlsdGVyLWJyYW5jaCBicmFuY2ggPiBmaWx0ZXItb3V0cHV0IDI+JjEgJiYKKwkhIGZncmVwIGZhdGFsIGZpbHRlci1vdXRwdXQpCiAnCiBnaXQgY29uZmlnIGNvcmUuYmFyZSBmYWxzZQogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmVzdWx0IGlzIHJlYWxseSBpZGVudGljYWwnICcKQEAgLTk2LDEzICs5OCwxNyBAQAogCXRlc3RfdGljayAmJgogCWdpdCBjb21taXQgLW0gImFnYWluIG5vdCBzdWJkaXIiICYmCiAJZ2l0IGJyYW5jaCBzdWIgJiYKLQlnaXQgZmlsdGVyLWJyYW5jaCAtZiAtLXN1YmRpcmVjdG9yeS1maWx0ZXIgc3ViZGlyIHJlZnMvaGVhZHMvc3ViCisJZ2l0IGJyYW5jaCBzdWItZWFybGllciBIRUFEfjIgJiYKKwlnaXQgZmlsdGVyLWJyYW5jaCAtZiAtLXN1YmRpcmVjdG9yeS1maWx0ZXIgc3ViZGlyIFwKKwkJcmVmcy9oZWFkcy9zdWIgcmVmcy9oZWFkcy9zdWItZWFybGllcgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJkaXJlY3RvcnkgZmlsdGVyIHJlc3VsdCBsb29rcyBva2F5JyAnCiAJdGVzdCAyID0gJChnaXQgcmV2LWxpc3Qgc3ViIHwgd2MgLWwpICYmCiAJZ2l0IHNob3cgc3ViOm5ldyAmJgotCXRlc3RfbXVzdF9mYWlsIGdpdCBzaG93IHN1YjpzdWJkaXIKKwl0ZXN0X211c3RfZmFpbCBnaXQgc2hvdyBzdWI6c3ViZGlyICYmCisJZ2l0IHNob3cgc3ViLWVhcmxpZXI6bmV3ICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHNob3cgc3ViLWVhcmxpZXI6c3ViZGlyCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21vcmUgc2V0dXAnICcKQEAgLTI1MCw0ICsyNTYsMTIgQEAKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ1RhZyBuYW1lIGZpbHRlcmluZyBhbGxvd3Mgc2xhc2hlcyBpbiB0YWcgbmFtZXMnICcKKwlnaXQgdGFnIC1tIHRhZy13aXRoLXNsYXNoIFgvMSAmJgorCWdpdCBjYXQtZmlsZSB0YWcgWC8xIHwgc2VkIC1lIHMsWC8xLFgvMiwgPiBleHBlY3QgJiYKKwlnaXQgZmlsdGVyLWJyYW5jaCAtZiAtLXRhZy1uYW1lLWZpbHRlciAiZWNobyBYLzIiICYmCisJZ2l0IGNhdC1maWxlIHRhZyBYLzIgPiBhY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NzAwNC10YWcuc2ggYi90L3Q3MDA0LXRhZy5zaAppbmRleCBjNjE2ZGViLi5mMzc3ZmVhIDEwMDc1NQotLS0gYS90L3Q3MDA0LXRhZy5zaAorKysgYi90L3Q3MDA0LXRhZy5zaApAQCAtNjI1LDcgKzYyNSw3IEBACiAjIE5hbWUgYW5kIGVtYWlsOiBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CiAjIE5vIHBhc3N3b3JkIGdpdmVuLCB0byBlbmFibGUgbm9uLWludGVyYWN0aXZlIG9wZXJhdGlvbi4KIAotY3AgLVIgLi4vdDcwMDQgLi9ncGdob21lCitjcCAtUiAiJFRFU1RfRElSRUNUT1JZIi90NzAwNCAuL2dwZ2hvbWUKIGNobW9kIDA3MDAgZ3BnaG9tZQogR05VUEdIT01FPSIkKHB3ZCkvZ3BnaG9tZSIKIGV4cG9ydCBHTlVQR0hPTUUKZGlmZiAtLWdpdCBhL3QvdDcxMDEtcmVzZXQuc2ggYi90L3Q3MTAxLXJlc2V0LnNoCmluZGV4IGM0ZWYxOWUuLjk2ZTE2M2YgMTAwNzU1Ci0tLSBhL3QvdDcxMDEtcmVzZXQuc2gKKysrIGIvdC90NzEwMS1yZXNldC5zaApAQCAtOSw3ICs5LDcgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdjcmVhdGluZyBpbml0aWFsIGZpbGVzJyBcCiAgICAgJ21rZGlyIHBhdGgwICYmCi0gICAgIGNwIC4uLy4uL0NPUFlJTkcgcGF0aDAvQ09QWUlORyAmJgorICAgICBjcCAiJFRFU1RfRElSRUNUT1JZIi8uLi9DT1BZSU5HIHBhdGgwL0NPUFlJTkcgJiYKICAgICAgZ2l0IGFkZCBwYXRoMC9DT1BZSU5HICYmCiAgICAgIGdpdCBjb21taXQgLW0gYWRkIC1hJwogCkBAIC0xNywxMCArMTcsMTAgQEAKICAgICAnY3JlYXRpbmcgc2Vjb25kIGZpbGVzJyBcCiAgICAgJ21rZGlyIHBhdGgxICYmCiAgICAgIG1rZGlyIHBhdGgxL3BhdGgyICYmCi0gICAgIGNwIC4uLy4uL0NPUFlJTkcgcGF0aDEvcGF0aDIvQ09QWUlORyAmJgotICAgICBjcCAuLi8uLi9DT1BZSU5HIHBhdGgxL0NPUFlJTkcgJiYKLSAgICAgY3AgLi4vLi4vQ09QWUlORyBDT1BZSU5HICYmCi0gICAgIGNwIC4uLy4uL0NPUFlJTkcgcGF0aDAvQ09QWUlORy1UT08gJiYKKyAgICAgY3AgIiRURVNUX0RJUkVDVE9SWSIvLi4vQ09QWUlORyBwYXRoMS9wYXRoMi9DT1BZSU5HICYmCisgICAgIGNwICIkVEVTVF9ESVJFQ1RPUlkiLy4uL0NPUFlJTkcgcGF0aDEvQ09QWUlORyAmJgorICAgICBjcCAiJFRFU1RfRElSRUNUT1JZIi8uLi9DT1BZSU5HIENPUFlJTkcgJiYKKyAgICAgY3AgIiRURVNUX0RJUkVDVE9SWSIvLi4vQ09QWUlORyBwYXRoMC9DT1BZSU5HLVRPTyAmJgogICAgICBnaXQgYWRkIHBhdGgxL3BhdGgyL0NPUFlJTkcgJiYKICAgICAgZ2l0IGFkZCBwYXRoMS9DT1BZSU5HICYmCiAgICAgIGdpdCBhZGQgQ09QWUlORyAmJgpkaWZmIC0tZ2l0IGEvdC90NzIwMS1jby5zaCBiL3QvdDcyMDEtY28uc2gKaW5kZXggYzlhYmVkNi4uMGUyMTYzMiAxMDA3NTUKLS0tIGEvdC90NzIwMS1jby5zaAorKysgYi90L3Q3MjAxLWNvLnNoCkBAIC0zNTEsNyArMzUxLDM5IEBACiAgICAgdGVzdCAieiQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL2hlYWRzL21hc3RlcikiID0gInokaGVyZSIKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2tvdXQgYW4gdW5tZXJnZWQgcGF0aCBzaG91bGQgZmFpbCcgJwordGVzdF9leHBlY3Rfc3VjY2VzcyBcCisgICAgJ2NoZWNrb3V0IHdpdGggLS10cmFjayBmYWtlcyBhIHNlbnNpYmxlIC1iIDxuYW1lPicgJworICAgIGdpdCB1cGRhdGUtcmVmIHJlZnMvcmVtb3Rlcy9vcmlnaW4va29hbGEvYmVhciByZW5hbWVyICYmCisgICAgZ2l0IHVwZGF0ZS1yZWYgcmVmcy9uZXcva29hbGEvYmVhciByZW5hbWVyICYmCisKKyAgICBnaXQgY2hlY2tvdXQgLS10cmFjayBvcmlnaW4va29hbGEvYmVhciAmJgorICAgIHRlc3QgInJlZnMvaGVhZHMva29hbGEvYmVhciIgPSAiJChnaXQgc3ltYm9saWMtcmVmIEhFQUQpIiAmJgorICAgIHRlc3QgIiQoZ2l0IHJldi1wYXJzZSBIRUFEKSIgPSAiJChnaXQgcmV2LXBhcnNlIHJlbmFtZXIpIiAmJgorCisgICAgZ2l0IGNoZWNrb3V0IG1hc3RlciAmJiBnaXQgYnJhbmNoIC1EIGtvYWxhL2JlYXIgJiYKKworICAgIGdpdCBjaGVja291dCAtLXRyYWNrIHJlZnMvcmVtb3Rlcy9vcmlnaW4va29hbGEvYmVhciAmJgorICAgIHRlc3QgInJlZnMvaGVhZHMva29hbGEvYmVhciIgPSAiJChnaXQgc3ltYm9saWMtcmVmIEhFQUQpIiAmJgorICAgIHRlc3QgIiQoZ2l0IHJldi1wYXJzZSBIRUFEKSIgPSAiJChnaXQgcmV2LXBhcnNlIHJlbmFtZXIpIiAmJgorCisgICAgZ2l0IGNoZWNrb3V0IG1hc3RlciAmJiBnaXQgYnJhbmNoIC1EIGtvYWxhL2JlYXIgJiYKKworICAgIGdpdCBjaGVja291dCAtLXRyYWNrIHJlbW90ZXMvb3JpZ2luL2tvYWxhL2JlYXIgJiYKKyAgICB0ZXN0ICJyZWZzL2hlYWRzL2tvYWxhL2JlYXIiID0gIiQoZ2l0IHN5bWJvbGljLXJlZiBIRUFEKSIgJiYKKyAgICB0ZXN0ICIkKGdpdCByZXYtcGFyc2UgSEVBRCkiID0gIiQoZ2l0IHJldi1wYXJzZSByZW5hbWVyKSIgJiYKKworICAgIGdpdCBjaGVja291dCBtYXN0ZXIgJiYgZ2l0IGJyYW5jaCAtRCBrb2FsYS9iZWFyICYmCisKKyAgICBnaXQgY2hlY2tvdXQgLS10cmFjayByZWZzL25ldy9rb2FsYS9iZWFyICYmCisgICAgdGVzdCAicmVmcy9oZWFkcy9rb2FsYS9iZWFyIiA9ICIkKGdpdCBzeW1ib2xpYy1yZWYgSEVBRCkiICYmCisgICAgdGVzdCAiJChnaXQgcmV2LXBhcnNlIEhFQUQpIiA9ICIkKGdpdCByZXYtcGFyc2UgcmVuYW1lcikiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAorICAgICdjaGVja291dCB3aXRoIC0tdHJhY2ssIGJ1dCB3aXRob3V0IC1iLCBmYWlscyB3aXRoIHRvbyBzaG9ydCB0cmFja2VkIG5hbWUnICcKKyAgICB0ZXN0X211c3RfZmFpbCBnaXQgY2hlY2tvdXQgLS10cmFjayByZW5hbWVyJworCitzZXR1cF9jb25mbGljdGluZ19pbmRleCAoKSB7CiAJcm0gLWYgLmdpdC9pbmRleCAmJgogCU89JChlY2hvIG9yaWdpbmFsIHwgZ2l0IGhhc2gtb2JqZWN0IC13IC0tc3RkaW4pICYmCiAJQT0kKGVjaG8gb3Vyc2lkZSB8IGdpdCBoYXNoLW9iamVjdCAtdyAtLXN0ZGluKSAmJgpAQCAtMzYyLDcgKzM5NCwxMSBAQAogCQllY2hvICIxMDA2NDQgJEEgMglmaWxlIiAmJgogCQllY2hvICIxMDA2NDQgJEIgMwlmaWxlIiAmJgogCQllY2hvICIxMDA2NDQgJEEgMAlmaWxmIgotCSkgfCBnaXQgdXBkYXRlLWluZGV4IC0taW5kZXgtaW5mbyAmJgorCSkgfCBnaXQgdXBkYXRlLWluZGV4IC0taW5kZXgtaW5mbworfQorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVja291dCBhbiB1bm1lcmdlZCBwYXRoIHNob3VsZCBmYWlsJyAnCisJc2V0dXBfY29uZmxpY3RpbmdfaW5kZXggJiYKIAllY2hvICJub25lIG9mIHRoZSBhYm92ZSIgPnNhbXBsZSAmJgogCWNhdCBzYW1wbGUgPmZpbGQgJiYKIAljYXQgc2FtcGxlID5maWxlICYmCkBAIC0zNzMsNiArNDA5LDEyMSBAQAogCXRlc3RfY21wIHNhbXBsZSBmaWxlCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrb3V0IHdpdGggYW4gdW5tZXJnZWQgcGF0aCBjYW4gYmUgaWdub3JlZCcgJworCXNldHVwX2NvbmZsaWN0aW5nX2luZGV4ICYmCisJZWNobyAibm9uZSBvZiB0aGUgYWJvdmUiID5zYW1wbGUgJiYKKwllY2hvIG91cnNpZGUgPmV4cGVjdCAmJgorCWNhdCBzYW1wbGUgPmZpbGQgJiYKKwljYXQgc2FtcGxlID5maWxlICYmCisJY2F0IHNhbXBsZSA+ZmlsZiAmJgorCWdpdCBjaGVja291dCAtZiBmaWxkIGZpbGUgZmlsZiAmJgorCXRlc3RfY21wIGV4cGVjdCBmaWxkICYmCisJdGVzdF9jbXAgZXhwZWN0IGZpbGYgJiYKKwl0ZXN0X2NtcCBzYW1wbGUgZmlsZQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVja291dCB1bm1lcmdlZCBzdGFnZScgJworCXNldHVwX2NvbmZsaWN0aW5nX2luZGV4ICYmCisJZWNobyAibm9uZSBvZiB0aGUgYWJvdmUiID5zYW1wbGUgJiYKKwllY2hvIG91cnNpZGUgPmV4cGVjdCAmJgorCWNhdCBzYW1wbGUgPmZpbGQgJiYKKwljYXQgc2FtcGxlID5maWxlICYmCisJY2F0IHNhbXBsZSA+ZmlsZiAmJgorCWdpdCBjaGVja291dCAtLW91cnMgLiAmJgorCXRlc3RfY21wIGV4cGVjdCBmaWxkICYmCisJdGVzdF9jbXAgZXhwZWN0IGZpbGYgJiYKKwl0ZXN0X2NtcCBleHBlY3QgZmlsZSAmJgorCWdpdCBjaGVja291dCAtLXRoZWlycyBmaWxlICYmCisJdGVzdCB6dGhlaXJzaWRlID0gInokKGNhdCBmaWxlKSIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2tvdXQgd2l0aCAtLW1lcmdlJyAnCisJc2V0dXBfY29uZmxpY3RpbmdfaW5kZXggJiYKKwllY2hvICJub25lIG9mIHRoZSBhYm92ZSIgPnNhbXBsZSAmJgorCWVjaG8gb3Vyc2lkZSA+ZXhwZWN0ICYmCisJY2F0IHNhbXBsZSA+ZmlsZCAmJgorCWNhdCBzYW1wbGUgPmZpbGUgJiYKKwljYXQgc2FtcGxlID5maWxmICYmCisJZ2l0IGNoZWNrb3V0IC1tIC0tIGZpbGQgZmlsZSBmaWxmICYmCisJKAorCQllY2hvICI8PDw8PDw8IG91cnMiCisJCWVjaG8gb3Vyc2lkZQorCQllY2hvICI9PT09PT09IgorCQllY2hvIHRoZWlyc2lkZQorCQllY2hvICI+Pj4+Pj4+IHRoZWlycyIKKwkpID5tZXJnZWQgJiYKKwl0ZXN0X2NtcCBleHBlY3QgZmlsZCAmJgorCXRlc3RfY21wIGV4cGVjdCBmaWxmICYmCisJdGVzdF9jbXAgbWVyZ2VkIGZpbGUKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2tvdXQgd2l0aCAtLW1lcmdlLCBpbiBkaWZmMyAtbSBzdHlsZScgJworCWdpdCBjb25maWcgbWVyZ2UuY29uZmxpY3RzdHlsZSBkaWZmMyAmJgorCXNldHVwX2NvbmZsaWN0aW5nX2luZGV4ICYmCisJZWNobyAibm9uZSBvZiB0aGUgYWJvdmUiID5zYW1wbGUgJiYKKwllY2hvIG91cnNpZGUgPmV4cGVjdCAmJgorCWNhdCBzYW1wbGUgPmZpbGQgJiYKKwljYXQgc2FtcGxlID5maWxlICYmCisJY2F0IHNhbXBsZSA+ZmlsZiAmJgorCWdpdCBjaGVja291dCAtbSAtLSBmaWxkIGZpbGUgZmlsZiAmJgorCSgKKwkJZWNobyAiPDw8PDw8PCBvdXJzIgorCQllY2hvIG91cnNpZGUKKwkJZWNobyAifHx8fHx8fCIKKwkJZWNobyBvcmlnaW5hbAorCQllY2hvICI9PT09PT09IgorCQllY2hvIHRoZWlyc2lkZQorCQllY2hvICI+Pj4+Pj4+IHRoZWlycyIKKwkpID5tZXJnZWQgJiYKKwl0ZXN0X2NtcCBleHBlY3QgZmlsZCAmJgorCXRlc3RfY21wIGV4cGVjdCBmaWxmICYmCisJdGVzdF9jbXAgbWVyZ2VkIGZpbGUKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2tvdXQgLS1jb25mbGljdD1tZXJnZSwgb3ZlcnJpZGluZyBjb25maWcnICcKKwlnaXQgY29uZmlnIG1lcmdlLmNvbmZsaWN0c3R5bGUgZGlmZjMgJiYKKwlzZXR1cF9jb25mbGljdGluZ19pbmRleCAmJgorCWVjaG8gIm5vbmUgb2YgdGhlIGFib3ZlIiA+c2FtcGxlICYmCisJZWNobyBvdXJzaWRlID5leHBlY3QgJiYKKwljYXQgc2FtcGxlID5maWxkICYmCisJY2F0IHNhbXBsZSA+ZmlsZSAmJgorCWNhdCBzYW1wbGUgPmZpbGYgJiYKKwlnaXQgY2hlY2tvdXQgLS1jb25mbGljdD1tZXJnZSAtLSBmaWxkIGZpbGUgZmlsZiAmJgorCSgKKwkJZWNobyAiPDw8PDw8PCBvdXJzIgorCQllY2hvIG91cnNpZGUKKwkJZWNobyAiPT09PT09PSIKKwkJZWNobyB0aGVpcnNpZGUKKwkJZWNobyAiPj4+Pj4+PiB0aGVpcnMiCisJKSA+bWVyZ2VkICYmCisJdGVzdF9jbXAgZXhwZWN0IGZpbGQgJiYKKwl0ZXN0X2NtcCBleHBlY3QgZmlsZiAmJgorCXRlc3RfY21wIG1lcmdlZCBmaWxlCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrb3V0IC0tY29uZmxpY3Q9ZGlmZjMnICcKKwlnaXQgY29uZmlnIC0tdW5zZXQgbWVyZ2UuY29uZmxpY3RzdHlsZQorCXNldHVwX2NvbmZsaWN0aW5nX2luZGV4ICYmCisJZWNobyAibm9uZSBvZiB0aGUgYWJvdmUiID5zYW1wbGUgJiYKKwllY2hvIG91cnNpZGUgPmV4cGVjdCAmJgorCWNhdCBzYW1wbGUgPmZpbGQgJiYKKwljYXQgc2FtcGxlID5maWxlICYmCisJY2F0IHNhbXBsZSA+ZmlsZiAmJgorCWdpdCBjaGVja291dCAtLWNvbmZsaWN0PWRpZmYzIC0tIGZpbGQgZmlsZSBmaWxmICYmCisJKAorCQllY2hvICI8PDw8PDw8IG91cnMiCisJCWVjaG8gb3Vyc2lkZQorCQllY2hvICJ8fHx8fHx8IgorCQllY2hvIG9yaWdpbmFsCisJCWVjaG8gIj09PT09PT0iCisJCWVjaG8gdGhlaXJzaWRlCisJCWVjaG8gIj4+Pj4+Pj4gdGhlaXJzIgorCSkgPm1lcmdlZCAmJgorCXRlc3RfY21wIGV4cGVjdCBmaWxkICYmCisJdGVzdF9jbXAgZXhwZWN0IGZpbGYgJiYKKwl0ZXN0X2NtcCBtZXJnZWQgZmlsZQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdmYWlsaW5nIGNoZWNrb3V0IC1iIHNob3VsZCBub3QgYnJlYWsgd29ya2luZyB0cmVlJyAnCiAJZ2l0IHJlc2V0IC0taGFyZCBtYXN0ZXIgJiYKIAlnaXQgc3ltYm9saWMtcmVmIEhFQUQgcmVmcy9oZWFkcy9tYXN0ZXIgJiYKZGlmZiAtLWdpdCBhL3QvdDc0MDAtc3VibW9kdWxlLWJhc2ljLnNoIGIvdC90NzQwMC1zdWJtb2R1bGUtYmFzaWMuc2gKaW5kZXggYmU3M2Y3Yi4uMmVjN2FjNiAxMDA3NTUKLS0tIGEvdC90NzQwMC1zdWJtb2R1bGUtYmFzaWMuc2gKKysrIGIvdC90NzQwMC1zdWJtb2R1bGUtYmFzaWMuc2gKQEAgLTIwOSw0ICsyMDksMjkgQEAKIAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdkbyBub3QgYWRkIGZpbGVzIGZyb20gYSBzdWJtb2R1bGUnICcKKworCWdpdCByZXNldCAtLWhhcmQgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgYWRkIGluaXQvYQorCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dyYWNlZnVsbHkgYWRkIHN1Ym1vZHVsZSB3aXRoIGEgdHJhaWxpbmcgc2xhc2gnICcKKworCWdpdCByZXNldCAtLWhhcmQgJiYKKwlnaXQgY29tbWl0IC1tICJjb21taXQgc3VicHJvamVjdCIgaW5pdCAmJgorCShjZCBpbml0ICYmCisJIGVjaG8gYiA+IGEpICYmCisJZ2l0IGFkZCBpbml0LyAmJgorCWdpdCBkaWZmIC0tZXhpdC1jb2RlIC0tY2FjaGVkIGluaXQgJiYKKwljb21taXQ9JChjZCBpbml0ICYmCisJIGdpdCBjb21taXQgLW0gdXBkYXRlIGEgPi9kZXYvbnVsbCAmJgorCSBnaXQgcmV2LXBhcnNlIEhFQUQpICYmCisJZ2l0IGFkZCBpbml0LyAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBkaWZmIC0tZXhpdC1jb2RlIC0tY2FjaGVkIGluaXQgJiYKKwl0ZXN0ICRjb21taXQgPSAkKGdpdCBscy1maWxlcyAtLXN0YWdlIHwKKwkJc2VkIC1uICJzL14xNjAwMDAgXChbXiBdKlwpLiovXDEvcCIpCisKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q3NDAzLXN1Ym1vZHVsZS1zeW5jLnNoIGIvdC90NzQwMy1zdWJtb2R1bGUtc3luYy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43NTM4NzU2Ci0tLSAvZGV2L251bGwKKysrIGIvdC90NzQwMy1zdWJtb2R1bGUtc3luYy5zaApAQCAtMCwwICsxLDY0IEBACisjIS9iaW4vc2gKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDA4IERhdmlkIEFndWlsYXIKKyMKKwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHN1Ym1vZHVsZSBzeW5jCisKK1RoZXNlIHRlc3RzIGV4ZXJjaXNlIHRoZSAiZ2l0IHN1Ym1vZHVsZSBzeW5jIiBzdWJjb21tYW5kLgorJworCisuIC4vdGVzdC1saWIuc2gKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBzZXR1cCAnCisJZWNobyBmaWxlID4gZmlsZSAmJgorCWdpdCBhZGQgZmlsZSAmJgorCXRlc3RfdGljayAmJgorCWdpdCBjb21taXQgLW0gdXBzdHJlYW0KKwlnaXQgY2xvbmUgLiBzdXBlciAmJgorCWdpdCBjbG9uZSBzdXBlciBzdWJtb2R1bGUgJiYKKwkoY2Qgc3VwZXIgJiYKKwkgZ2l0IHN1Ym1vZHVsZSBhZGQgLi4vc3VibW9kdWxlIHN1Ym1vZHVsZSAmJgorCSB0ZXN0X3RpY2sgJiYKKwkgZ2l0IGNvbW1pdCAtbSAic3VibW9kdWxlIgorCSkgJiYKKwlnaXQgY2xvbmUgc3VwZXIgc3VwZXItY2xvbmUgJiYKKwkoY2Qgc3VwZXItY2xvbmUgJiYgZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLS1pbml0KQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGFuZ2Ugc3VibW9kdWxlJyAnCisJKGNkIHN1Ym1vZHVsZSAmJgorCSBlY2hvIHNlY29uZCBsaW5lID4+IGZpbGUgJiYKKwkgdGVzdF90aWNrICYmCisJIGdpdCBjb21taXQgLWEgLW0gImNoYW5nZSBzdWJtb2R1bGUiCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGFuZ2Ugc3VibW9kdWxlIHVybCcgJworCShjZCBzdXBlciAmJgorCSBjZCBzdWJtb2R1bGUgJiYKKwkgZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgorCSBnaXQgcHVsbAorCSkgJiYKKwltdiBzdWJtb2R1bGUgbW92ZWQtc3VibW9kdWxlICYmCisJKGNkIHN1cGVyICYmCisJIGdpdCBjb25maWcgLWYgLmdpdG1vZHVsZXMgc3VibW9kdWxlLnN1Ym1vZHVsZS51cmwgLi4vbW92ZWQtc3VibW9kdWxlCisJIHRlc3RfdGljayAmJgorCSBnaXQgY29tbWl0IC1hIC1tIG1vdmVkLXN1Ym1vZHVsZQorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnImdpdCBzdWJtb2R1bGUgc3luYyIgc2hvdWxkIHVwZGF0ZSBzdWJtb2R1bGUgVVJMcycgJworCShjZCBzdXBlci1jbG9uZSAmJgorCSBnaXQgcHVsbCAmJgorCSBnaXQgc3VibW9kdWxlIHN5bmMKKwkpICYmCisJdGVzdCAtZCAiJChnaXQgY29uZmlnIC1mIHN1cGVyLWNsb25lL3N1Ym1vZHVsZS8uZ2l0L2NvbmZpZyBcCisJICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlLm9yaWdpbi51cmwpIiAmJgorCShjZCBzdXBlci1jbG9uZS9zdWJtb2R1bGUgJiYKKwkgZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgorCSBnaXQgcHVsbAorCSkKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q3NTAwLWNvbW1pdC5zaCBiL3QvdDc1MDAtY29tbWl0LnNoCmluZGV4IDBmZTc0NWUuLjZlMThhOTYgMTAwNzU1Ci0tLSBhL3QvdDc1MDAtY29tbWl0LnNoCisrKyBiL3QvdDc1MDAtY29tbWl0LnNoCkBAIC00NiwxNSArNDYsMjQgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYSBTaWduZWQtb2ZmLWJ5IGxpbmUgYnkgaXRzZWxmIHNob3VsZCBub3QgY29tbWl0JyAnCi0JISBHSVRfRURJVE9SPS4uL3Q3NTAwL2FkZC1zaWduZWQtb2ZmIGdpdCBjb21taXQgLS10ZW1wbGF0ZSAiJFRFTVBMQVRFIgorCSgKKwkJdGVzdF9zZXRfZWRpdG9yICIkVEVTVF9ESVJFQ1RPUlkiL3Q3NTAwL2FkZC1zaWduZWQtb2ZmICYmCisJCXRlc3RfbXVzdF9mYWlsIGdpdCBjb21taXQgLS10ZW1wbGF0ZSAiJFRFTVBMQVRFIgorCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWRkaW5nIGNvbW1lbnRzIHRvIGEgdGVtcGxhdGUgc2hvdWxkIG5vdCBjb21taXQnICcKLQkhIEdJVF9FRElUT1I9Li4vdDc1MDAvYWRkLWNvbW1lbnRzIGdpdCBjb21taXQgLS10ZW1wbGF0ZSAiJFRFTVBMQVRFIgorCSgKKwkJdGVzdF9zZXRfZWRpdG9yICIkVEVTVF9ESVJFQ1RPUlkiL3Q3NTAwL2FkZC1jb21tZW50cyAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgY29tbWl0IC0tdGVtcGxhdGUgIiRURU1QTEFURSIKKwkpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FkZGluZyByZWFsIGNvbnRlbnQgdG8gYSB0ZW1wbGF0ZSBzaG91bGQgY29tbWl0JyAnCi0JR0lUX0VESVRPUj0uLi90NzUwMC9hZGQtY29udGVudCBnaXQgY29tbWl0IC0tdGVtcGxhdGUgIiRURU1QTEFURSIgJiYKKwkoCisJCXRlc3Rfc2V0X2VkaXRvciAiJFRFU1RfRElSRUNUT1JZIi90NzUwMC9hZGQtY29udGVudCAmJgorCQlnaXQgY29tbWl0IC0tdGVtcGxhdGUgIiRURU1QTEFURSIKKwkpICYmCiAJY29tbWl0X21zZ19pcyAidGVtcGxhdGUgbGluZWNvbW1pdCBtZXNzYWdlIgogJwogCkBAIC02Miw3ICs3MSwxMCBAQAogCWVjaG8gInNob3J0IHRlbXBsYXRlIiA+ICIkVEVNUExBVEUiICYmCiAJZWNobyAibmV3IGNvbnRlbnQiID4+IGZvbyAmJgogCWdpdCBhZGQgZm9vICYmCi0JR0lUX0VESVRPUj0uLi90NzUwMC9hZGQtY29udGVudCBnaXQgY29tbWl0IC10ICIkVEVNUExBVEUiICYmCisJKAorCQl0ZXN0X3NldF9lZGl0b3IgIiRURVNUX0RJUkVDVE9SWSIvdDc1MDAvYWRkLWNvbnRlbnQgJiYKKwkJZ2l0IGNvbW1pdCAtdCAiJFRFTVBMQVRFIgorCSkgJiYKIAljb21taXRfbXNnX2lzICJzaG9ydCB0ZW1wbGF0ZWNvbW1pdCBtZXNzYWdlIgogJwogCkBAIC03MSw3ICs4MywxMCBAQAogCWdpdCBjb25maWcgY29tbWl0LnRlbXBsYXRlICIkVEVNUExBVEUiICYmCiAJZWNobyAibW9yZSBjb250ZW50IiA+PiBmb28gJiYKIAlnaXQgYWRkIGZvbyAmJgotCUdJVF9FRElUT1I9Li4vdDc1MDAvYWRkLWNvbnRlbnQgZ2l0IGNvbW1pdCAmJgorCSgKKwkJdGVzdF9zZXRfZWRpdG9yICIkVEVTVF9ESVJFQ1RPUlkiL3Q3NTAwL2FkZC1jb250ZW50ICYmCisJCWdpdCBjb21taXQKKwkpICYmCiAJZ2l0IGNvbmZpZyAtLXVuc2V0IGNvbW1pdC50ZW1wbGF0ZSAmJgogCWNvbW1pdF9tc2dfaXMgIm5ldyB0ZW1wbGF0ZWNvbW1pdCBtZXNzYWdlIgogJwpAQCAtNzksNyArOTQsNyBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZXhwbGljaXQgY29tbWl0IG1lc3NhZ2Ugc2hvdWxkIG92ZXJyaWRlIHRlbXBsYXRlJyAnCiAJZWNobyAic3RpbGwgbW9yZSBjb250ZW50IiA+PiBmb28gJiYKIAlnaXQgYWRkIGZvbyAmJgotCUdJVF9FRElUT1I9Li4vdDc1MDAvYWRkLWNvbnRlbnQgZ2l0IGNvbW1pdCAtLXRlbXBsYXRlICIkVEVNUExBVEUiIFwKKwlHSVRfRURJVE9SPSIkVEVTVF9ESVJFQ1RPUlkiL3Q3NTAwL2FkZC1jb250ZW50IGdpdCBjb21taXQgLS10ZW1wbGF0ZSAiJFRFTVBMQVRFIiBcCiAJCS1tICJjb21tYW5kIGxpbmUgbXNnIiAmJgogCWNvbW1pdF9tc2dfaXMgImNvbW1hbmQgbGluZSBtc2ciCiAnCkBAIC04OCw4ICsxMDMsMTAgQEAKIAllY2hvICJjb250ZW50IGdhbG9yZSIgPj4gZm9vICYmCiAJZ2l0IGFkZCBmb28gJiYKIAllY2hvICJzdGFuZGFyZCBpbnB1dCBtc2ciIHwKLQkJR0lUX0VESVRPUj0uLi90NzUwMC9hZGQtY29udGVudCBnaXQgY29tbWl0IFwKLQkJCS0tdGVtcGxhdGUgIiRURU1QTEFURSIgLS1maWxlIC0gJiYKKwkoCisJCXRlc3Rfc2V0X2VkaXRvciAiJFRFU1RfRElSRUNUT1JZIi90NzUwMC9hZGQtY29udGVudCAmJgorCQlnaXQgY29tbWl0IC0tdGVtcGxhdGUgIiRURU1QTEFURSIgLS1maWxlIC0KKwkpICYmCiAJY29tbWl0X21zZ19pcyAic3RhbmRhcmQgaW5wdXQgbXNnIgogJwogCkBAIC0xMzIsMTAgKzE0OSwxMiBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICctLXNpZ25vZmYnICcKIAllY2hvICJ5ZXQgYW5vdGhlciBjb250ZW50ICpuYXJmKiIgPj4gZm9vICYmCi0JZWNobyAiem9ydCIgfAotCQlHSVRfRURJVE9SPS4uL3Q3NTAwL2FkZC1jb250ZW50IGdpdCBjb21taXQgLXMgLUYgLSBmb28gJiYKKwllY2hvICJ6b3J0IiB8ICgKKwkJdGVzdF9zZXRfZWRpdG9yICIkVEVTVF9ESVJFQ1RPUlkiL3Q3NTAwL2FkZC1jb250ZW50ICYmCisJCWdpdCBjb21taXQgLXMgLUYgLSBmb28KKwkpICYmCiAJZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEIHwgc2VkICIxLC9eJC9kIiA+IG91dHB1dCAmJgotCWRpZmYgZXhwZWN0IG91dHB1dAorCXRlc3RfY21wIGV4cGVjdCBvdXRwdXQKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY29tbWl0IG1lc3NhZ2UgZnJvbSBmaWxlICgxKScgJwpkaWZmIC0tZ2l0IGEvdC90NzUwMi1jb21taXQuc2ggYi90L3Q3NTAyLWNvbW1pdC5zaAppbmRleCAzZWI5ZmFlLi5hZDQyYzc4IDEwMDc1NQotLS0gYS90L3Q3NTAyLWNvbW1pdC5zaAorKysgYi90L3Q3NTAyLWNvbW1pdC5zaApAQCAtODksNiArODksMTQgQEAKIAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd2ZXJib3NlIHJlc3BlY3RzIGRpZmYgY29uZmlnJyAnCisKKwlnaXQgY29uZmlnIGNvbG9yLmRpZmYgYWx3YXlzICYmCisJZ2l0IHN0YXR1cyAtdiA+YWN0dWFsICYmCisJZ3JlcCAiXFsxbWRpZmYgLS1naXQiIGFjdHVhbCAmJgorCWdpdCBjb25maWcgLS11bnNldCBjb2xvci5kaWZmCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NsZWFudXAgY29tbWl0IG1lc3NhZ2VzICh2ZXJiYXRpbSwtdCknICcKIAogCWVjaG8gPj5uZWdhdGl2ZSAmJgpkaWZmIC0tZ2l0IGEvdC90NzUwMi1zdGF0dXMuc2ggYi90L3Q3NTAyLXN0YXR1cy5zaAppbmRleCAxODdhMTNlLi45M2Y4NzVmIDEwMDc1NQotLS0gYS90L3Q3NTAyLXN0YXR1cy5zaAorKysgYi90L3Q3NTAyLXN0YXR1cy5zaApAQCAtNDYsNiArNDYsNyBAQAogIwogIyBDaGFuZ2VkIGJ1dCBub3QgdXBkYXRlZDoKICMgICAodXNlICJnaXQgYWRkIDxmaWxlPi4uLiIgdG8gdXBkYXRlIHdoYXQgd2lsbCBiZSBjb21taXR0ZWQpCisjICAgKHVzZSAiZ2l0IGNoZWNrb3V0IC0tIDxmaWxlPi4uLiIgdG8gZGlzY2FyZCBjaGFuZ2VzIGluIHdvcmtpbmcgZGlyZWN0b3J5KQogIwogIwltb2RpZmllZDogICBkaXIxL21vZGlmaWVkCiAjCkBAIC03Niw2ICs3Nyw3IEBACiAjCiAjIENoYW5nZWQgYnV0IG5vdCB1cGRhdGVkOgogIyAgICh1c2UgImdpdCBhZGQgPGZpbGU+Li4uIiB0byB1cGRhdGUgd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkKKyMgICAodXNlICJnaXQgY2hlY2tvdXQgLS0gPGZpbGU+Li4uIiB0byBkaXNjYXJkIGNoYW5nZXMgaW4gd29ya2luZyBkaXJlY3RvcnkpCiAjCiAjCW1vZGlmaWVkOiAgIGRpcjEvbW9kaWZpZWQKICMKQEAgLTEwNCw2ICsxMDYsNyBAQAogIwogIyBDaGFuZ2VkIGJ1dCBub3QgdXBkYXRlZDoKICMgICAodXNlICJnaXQgYWRkIDxmaWxlPi4uLiIgdG8gdXBkYXRlIHdoYXQgd2lsbCBiZSBjb21taXR0ZWQpCisjICAgKHVzZSAiZ2l0IGNoZWNrb3V0IC0tIDxmaWxlPi4uLiIgdG8gZGlzY2FyZCBjaGFuZ2VzIGluIHdvcmtpbmcgZGlyZWN0b3J5KQogIwogIwltb2RpZmllZDogICBkaXIxL21vZGlmaWVkCiAjCkBAIC0xMzgsNiArMTQxLDcgQEAKICMKICMgQ2hhbmdlZCBidXQgbm90IHVwZGF0ZWQ6CiAjICAgKHVzZSAiZ2l0IGFkZCA8ZmlsZT4uLi4iIHRvIHVwZGF0ZSB3aGF0IHdpbGwgYmUgY29tbWl0dGVkKQorIyAgICh1c2UgImdpdCBjaGVja291dCAtLSA8ZmlsZT4uLi4iIHRvIGRpc2NhcmQgY2hhbmdlcyBpbiB3b3JraW5nIGRpcmVjdG9yeSkKICMKICMJbW9kaWZpZWQ6ICAgZGlyMS9tb2RpZmllZAogIwpAQCAtMTc0LDYgKzE3OCw3IEBACiAjCiAjIENoYW5nZWQgYnV0IG5vdCB1cGRhdGVkOgogIyAgICh1c2UgImdpdCBhZGQgPGZpbGU+Li4uIiB0byB1cGRhdGUgd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkKKyMgICAodXNlICJnaXQgY2hlY2tvdXQgLS0gPGZpbGU+Li4uIiB0byBkaXNjYXJkIGNoYW5nZXMgaW4gd29ya2luZyBkaXJlY3RvcnkpCiAjCiAjCW1vZGlmaWVkOiAgIG1vZGlmaWVkCiAjCkBAIC0yMDQsNiArMjA5LDcgQEAKICMKICMgQ2hhbmdlZCBidXQgbm90IHVwZGF0ZWQ6CiAjICAgKHVzZSAiZ2l0IGFkZCA8ZmlsZT4uLi4iIHRvIHVwZGF0ZSB3aGF0IHdpbGwgYmUgY29tbWl0dGVkKQorIyAgICh1c2UgImdpdCBjaGVja291dCAtLSA8ZmlsZT4uLi4iIHRvIGRpc2NhcmQgY2hhbmdlcyBpbiB3b3JraW5nIGRpcmVjdG9yeSkKICMKICMJbW9kaWZpZWQ6ICAgZGlyMS9tb2RpZmllZAogIwpAQCAtMjY3LDYgKzI3Myw3IEBACiAjCiAjIENoYW5nZWQgYnV0IG5vdCB1cGRhdGVkOgogIyAgICh1c2UgImdpdCBhZGQgPGZpbGU+Li4uIiB0byB1cGRhdGUgd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkKKyMgICAodXNlICJnaXQgY2hlY2tvdXQgLS0gPGZpbGU+Li4uIiB0byBkaXNjYXJkIGNoYW5nZXMgaW4gd29ya2luZyBkaXJlY3RvcnkpCiAjCiAjCW1vZGlmaWVkOiAgIGRpcjEvbW9kaWZpZWQKICMKQEAgLTMwMyw2ICszMTAsNyBAQAogIwogIyBDaGFuZ2VkIGJ1dCBub3QgdXBkYXRlZDoKICMgICAodXNlICJnaXQgYWRkIDxmaWxlPi4uLiIgdG8gdXBkYXRlIHdoYXQgd2lsbCBiZSBjb21taXR0ZWQpCisjICAgKHVzZSAiZ2l0IGNoZWNrb3V0IC0tIDxmaWxlPi4uLiIgdG8gZGlzY2FyZCBjaGFuZ2VzIGluIHdvcmtpbmcgZGlyZWN0b3J5KQogIwogIwltb2RpZmllZDogICBkaXIxL21vZGlmaWVkCiAjCkBAIC0zMzIsNiArMzQwLDcgQEAKICMgT24gYnJhbmNoIG1hc3RlcgogIyBDaGFuZ2VkIGJ1dCBub3QgdXBkYXRlZDoKICMgICAodXNlICJnaXQgYWRkIDxmaWxlPi4uLiIgdG8gdXBkYXRlIHdoYXQgd2lsbCBiZSBjb21taXR0ZWQpCisjICAgKHVzZSAiZ2l0IGNoZWNrb3V0IC0tIDxmaWxlPi4uLiIgdG8gZGlzY2FyZCBjaGFuZ2VzIGluIHdvcmtpbmcgZGlyZWN0b3J5KQogIwogIwltb2RpZmllZDogICBkaXIxL21vZGlmaWVkCiAjCkBAIC0zNjMsNiArMzcyLDcgQEAKICMKICMgQ2hhbmdlZCBidXQgbm90IHVwZGF0ZWQ6CiAjICAgKHVzZSAiZ2l0IGFkZCA8ZmlsZT4uLi4iIHRvIHVwZGF0ZSB3aGF0IHdpbGwgYmUgY29tbWl0dGVkKQorIyAgICh1c2UgImdpdCBjaGVja291dCAtLSA8ZmlsZT4uLi4iIHRvIGRpc2NhcmQgY2hhbmdlcyBpbiB3b3JraW5nIGRpcmVjdG9yeSkKICMKICMJbW9kaWZpZWQ6ICAgZGlyMS9tb2RpZmllZAogIwpkaWZmIC0tZ2l0IGEvdC90NzUwNy1jb21taXQtdmVyYm9zZS5zaCBiL3QvdDc1MDctY29tbWl0LXZlcmJvc2Uuc2gKaW5kZXggNTE5YWRiYS4uZGE1YmQzYiAxMDA3NTUKLS0tIGEvdC90NzUwNy1jb21taXQtdmVyYm9zZS5zaAorKysgYi90L3Q3NTA3LWNvbW1pdC12ZXJib3NlLnNoCkBAIC0yMiw3ICsyMiw3IEBACiAJZ2l0IGNvbW1pdCAtRiBtZXNzYWdlCiAnCiAKLXRlc3RfZXhwZWN0X2ZhaWx1cmUgJ2luaXRpYWwgY29tbWl0IHNob3dzIHZlcmJvc2UgZGlmZicgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5pdGlhbCBjb21taXQgc2hvd3MgdmVyYm9zZSBkaWZmJyAnCiAJZ2l0IGNvbW1pdCAtLWFtZW5kIC12CiAnCiAKZGlmZiAtLWdpdCBhL3QvdDc2MDAtbWVyZ2Uuc2ggYi90L3Q3NjAwLW1lcmdlLnNoCmluZGV4IDVhYmNlMzEuLmU1YjIxMGIgMTAwNzU1Ci0tLSBhL3QvdDc2MDAtbWVyZ2Uuc2gKKysrIGIvdC90NzYwMC1tZXJnZS5zaApAQCAtMjMwLDYgKzIzMCwxMCBAQAogCXRlc3RfbXVzdF9mYWlsIGdpdCBtZXJnZQogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWplY3Qgbm9uLXN0cmF0ZWd5IHdpdGggYSBnaXQtbWVyZ2UtZm9vIG5hbWUnICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2UgLXMgaW5kZXggYzEKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbWVyZ2UgYzAgd2l0aCBjMScgJwogCWdpdCByZXNldCAtLWhhcmQgYzAgJiYKIAlnaXQgbWVyZ2UgYzEgJiYKQEAgLTUwNyw2ICs1MTEsMTMgQEAKIAogdGVzdF9kZWJ1ZyAnZ2l0ayAtLWFsbCcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVmcmVzaCB0aGUgaW5kZXggYmVmb3JlIG1lcmdpbmcnICcKKwlnaXQgcmVzZXQgLS1oYXJkIGMxICYmCisJc2xlZXAgMSAmJgorCXRvdWNoIGZpbGUgJiYKKwlnaXQgbWVyZ2UgYzMKKycKKwogY2F0ID5leHBlY3RlZCA8PEVPRgogTWVyZ2UgYnJhbmNoICdjNScgKGVhcmx5IHBhcnQpCiBFT0YKQEAgLTUzMyw0ICs1NDQsMjAgQEAKIAogdGVzdF9kZWJ1ZyAnZ2l0ayAtLWFsbCcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnbWVyZ2UgLS1uby1mZiAtLW5vLWNvbW1pdCAmJiBjb21taXQnICcKKwlnaXQgcmVzZXQgLS1oYXJkIGMwICYmCisJZ2l0IG1lcmdlIC0tbm8tZmYgLS1uby1jb21taXQgYzEgJiYKKwlFRElUT1I9OiBnaXQgY29tbWl0ICYmCisJdmVyaWZ5X3BhcmVudHMgJGMwICRjMQorJworCit0ZXN0X2RlYnVnICdnaXRrIC0tYWxsJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhbWVuZGluZyBuby1mZiBtZXJnZSBjb21taXQnICcKKwlFRElUT1I9OiBnaXQgY29tbWl0IC0tYW1lbmQgJiYKKwl2ZXJpZnlfcGFyZW50cyAkYzAgJGMxCisnCisKK3Rlc3RfZGVidWcgJ2dpdGsgLS1hbGwnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NzYwMy1tZXJnZS1yZWR1Y2UtaGVhZHMuc2ggYi90L3Q3NjAzLW1lcmdlLXJlZHVjZS1oZWFkcy5zaAppbmRleCBiNDdiN2I5Li43ZTE3ZWI0IDEwMDc1NQotLS0gYS90L3Q3NjAzLW1lcmdlLXJlZHVjZS1oZWFkcy5zaAorKysgYi90L3Q3NjAzLW1lcmdlLXJlZHVjZS1oZWFkcy5zaApAQCAtNjAsNCArNjAsNTcgQEAKIAl0ZXN0IC1mIGM1LmMKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAnICcKKwlmb3IgaSBpbiBBIEIgQyBEIEUKKwlkbworCQllY2hvICRpID4gJGkuYyAmJgorCQlnaXQgYWRkICRpLmMgJiYKKwkJZ2l0IGNvbW1pdCAtbSAkaSAmJgorCQlnaXQgdGFnICRpCisJZG9uZSAmJgorCWdpdCByZXNldCAtLWhhcmQgQSAmJgorCWZvciBpIGluIEYgRyBIIEkKKwlkbworCQllY2hvICRpID4gJGkuYyAmJgorCQlnaXQgYWRkICRpLmMgJiYKKwkJZ2l0IGNvbW1pdCAtbSAkaSAmJgorCQlnaXQgdGFnICRpCisJZG9uZQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZSBFIGFuZCBJJyAnCisJZ2l0IHJlc2V0IC0taGFyZCBBICYmCisJZ2l0IG1lcmdlIEUgSQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd2ZXJpZnkgbWVyZ2UgcmVzdWx0JyAnCisJdGVzdCAkKGdpdCByZXYtcGFyc2UgSEVBRF4xKSA9ICQoZ2l0IHJldi1wYXJzZSBFKSAmJgorCXRlc3QgJChnaXQgcmV2LXBhcnNlIEhFQUReMikgPSAkKGdpdCByZXYtcGFyc2UgSSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYWRkIGNvbmZsaWN0cycgJworCWdpdCByZXNldCAtLWhhcmQgRSAmJgorCWVjaG8gZm9vID4gZmlsZS5jICYmCisJZ2l0IGFkZCBmaWxlLmMgJiYKKwlnaXQgY29tbWl0IC1tIEUyICYmCisJZ2l0IHRhZyBFMiAmJgorCWdpdCByZXNldCAtLWhhcmQgSSAmJgorCWVjaG8gYmFyID5maWxlLmMgJiYKKwlnaXQgYWRkIGZpbGUuYyAmJgorCWdpdCBjb21taXQgLW0gSTIgJiYKKwlnaXQgdGFnIEkyCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIEUyIGFuZCBJMiwgY2F1c2luZyBhIGNvbmZsaWN0IGFuZCByZXNvbHZlIGl0JyAnCisJZ2l0IHJlc2V0IC0taGFyZCBBICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIEUyIEkyICYmCisJZWNobyBiYXogPiBmaWxlLmMgJiYKKwlnaXQgYWRkIGZpbGUuYyAmJgorCWdpdCBjb21taXQgLW0gInJlc29sdmUgY29uZmxpY3QiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ZlcmlmeSBtZXJnZSByZXN1bHQnICcKKwl0ZXN0ICQoZ2l0IHJldi1wYXJzZSBIRUFEXjEpID0gJChnaXQgcmV2LXBhcnNlIEUyKSAmJgorCXRlc3QgJChnaXQgcmV2LXBhcnNlIEhFQUReMikgPSAkKGdpdCByZXYtcGFyc2UgSTIpCisnCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDc2MDYtbWVyZ2UtY3VzdG9tLnNoIGIvdC90NzYwNi1tZXJnZS1jdXN0b20uc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTJhNDUxZGQKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q3NjA2LW1lcmdlLWN1c3RvbS5zaApAQCAtMCwwICsxLDQ5IEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IG1lcmdlCisKK1Rlc3RpbmcgYSBjdXN0b20gc3RyYXRlZ3kuJworCisuIC4vdGVzdC1saWIuc2gKKworY2F0ID5naXQtbWVyZ2UtdGhlaXJzIDw8RU9GCisjISRTSEVMTF9QQVRICitldmFsIGdpdCByZWFkLXRyZWUgLS1yZXNldCAtdSBcXFwkXCQjCitFT0YKK2NobW9kICt4IGdpdC1tZXJnZS10aGVpcnMKK1BBVEg9LjokUEFUSAorZXhwb3J0IFBBVEgKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAnICcKKwllY2hvIGMwID5jMC5jICYmCisJZ2l0IGFkZCBjMC5jICYmCisJZ2l0IGNvbW1pdCAtbSBjMCAmJgorCWdpdCB0YWcgYzAgJiYKKwllY2hvIGMxID5jMS5jICYmCisJZ2l0IGFkZCBjMS5jICYmCisJZ2l0IGNvbW1pdCAtbSBjMSAmJgorCWdpdCB0YWcgYzEgJiYKKwlnaXQgcmVzZXQgLS1oYXJkIGMwICYmCisJZWNobyBjMWMxID5jMS5jICYmCisJZWNobyBjMiA+YzIuYyAmJgorCWdpdCBhZGQgYzEuYyBjMi5jICYmCisJZ2l0IGNvbW1pdCAtbSBjMiAmJgorCWdpdCB0YWcgYzIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbWVyZ2UgYzIgd2l0aCBhIGN1c3RvbSBzdHJhdGVneScgJworCWdpdCByZXNldCAtLWhhcmQgYzEgJiYKKwlnaXQgbWVyZ2UgLXMgdGhlaXJzIGMyICYmCisJdGVzdCAiJChnaXQgcmV2LXBhcnNlIGMxKSIgIT0gIiQoZ2l0IHJldi1wYXJzZSBIRUFEKSIgJiYKKwl0ZXN0ICIkKGdpdCByZXYtcGFyc2UgYzEpIiA9ICIkKGdpdCByZXYtcGFyc2UgSEVBRF4xKSIgJiYKKwl0ZXN0ICIkKGdpdCByZXYtcGFyc2UgYzIpIiA9ICIkKGdpdCByZXYtcGFyc2UgSEVBRF4yKSIgJiYKKwl0ZXN0ICIkKGdpdCByZXYtcGFyc2UgYzJee3RyZWV9KSIgPSAiJChnaXQgcmV2LXBhcnNlIEhFQURee3RyZWV9KSIgJiYKKwlnaXQgZGlmZiAtLWV4aXQtY29kZSAmJgorCWdpdCBkaWZmIC0tZXhpdC1jb2RlIGMyIEhFQUQgJiYKKwlnaXQgZGlmZiAtLWV4aXQtY29kZSBjMiAmJgorCXRlc3QgLWYgYzAuYyAmJgorCWdyZXAgYzFjMSBjMS5jICYmCisJdGVzdCAtZiBjMi5jCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NzYwNy1tZXJnZS1vdmVyd3JpdGUuc2ggYi90L3Q3NjA3LW1lcmdlLW92ZXJ3cml0ZS5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40OWY0ZTE1Ci0tLSAvZGV2L251bGwKKysrIGIvdC90NzYwNy1tZXJnZS1vdmVyd3JpdGUuc2gKQEAgLTAsMCArMSw4NyBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J2dpdC1tZXJnZQorCitEbyBub3Qgb3ZlcndyaXRlIGNoYW5nZXMuJworCisuIC4vdGVzdC1saWIuc2gKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAnICcKKwllY2hvIGMwID4gYzAuYyAmJgorCWdpdCBhZGQgYzAuYyAmJgorCWdpdCBjb21taXQgLW0gYzAgJiYKKwlnaXQgdGFnIGMwICYmCisJZWNobyBjMSA+IGMxLmMgJiYKKwlnaXQgYWRkIGMxLmMgJiYKKwlnaXQgY29tbWl0IC1tIGMxICYmCisJZ2l0IHRhZyBjMSAmJgorCWdpdCByZXNldCAtLWhhcmQgYzAgJiYKKwllY2hvIGMyID4gYzIuYyAmJgorCWdpdCBhZGQgYzIuYyAmJgorCWdpdCBjb21taXQgLW0gYzIgJiYKKwlnaXQgdGFnIGMyICYmCisJZ2l0IHJlc2V0IC0taGFyZCBjMSAmJgorCWVjaG8gImMxIGEiID4gYzEuYyAmJgorCWdpdCBhZGQgYzEuYyAmJgorCWdpdCBjb21taXQgLW0gImMxIGEiICYmCisJZ2l0IHRhZyBjMWEgJiYKKwllY2hvICJWRVJZIElNUE9SVEFOVCBDSEFOR0VTIiA+IGltcG9ydGFudAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd3aWxsIG5vdCBvdmVyd3JpdGUgdW50cmFja2VkIGZpbGUnICcKKwlnaXQgcmVzZXQgLS1oYXJkIGMxICYmCisJY2F0IGltcG9ydGFudCA+IGMyLmMgJiYKKwkhIGdpdCBtZXJnZSBjMiAmJgorCXRlc3RfY21wIGltcG9ydGFudCBjMi5jCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3dpbGwgbm90IG92ZXJ3cml0ZSBuZXcgZmlsZScgJworCWdpdCByZXNldCAtLWhhcmQgYzEgJiYKKwljYXQgaW1wb3J0YW50ID4gYzIuYyAmJgorCWdpdCBhZGQgYzIuYyAmJgorCSEgZ2l0IG1lcmdlIGMyICYmCisJdGVzdF9jbXAgaW1wb3J0YW50IGMyLmMKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnd2lsbCBub3Qgb3ZlcndyaXRlIHN0YWdlZCBjaGFuZ2VzJyAnCisJZ2l0IHJlc2V0IC0taGFyZCBjMSAmJgorCWNhdCBpbXBvcnRhbnQgPiBjMi5jICYmCisJZ2l0IGFkZCBjMi5jICYmCisJcm0gYzIuYyAmJgorCSEgZ2l0IG1lcmdlIGMyICYmCisJZ2l0IGNoZWNrb3V0IGMyLmMgJiYKKwl0ZXN0X2NtcCBpbXBvcnRhbnQgYzIuYworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd3aWxsIG5vdCBvdmVyd3JpdGUgcmVtb3ZlZCBmaWxlJyAnCisJZ2l0IHJlc2V0IC0taGFyZCBjMSAmJgorCWdpdCBybSBjMS5jICYmCisJZ2l0IGNvbW1pdCAtbSAicm0gYzEuYyIgJiYKKwljYXQgaW1wb3J0YW50ID4gYzEuYyAmJgorCSEgZ2l0IG1lcmdlIGMxYSAmJgorCXRlc3RfY21wIGltcG9ydGFudCBjMS5jCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3dpbGwgbm90IG92ZXJ3cml0ZSByZS1hZGRlZCBmaWxlJyAnCisJZ2l0IHJlc2V0IC0taGFyZCBjMSAmJgorCWdpdCBybSBjMS5jICYmCisJZ2l0IGNvbW1pdCAtbSAicm0gYzEuYyIgJiYKKwljYXQgaW1wb3J0YW50ID4gYzEuYyAmJgorCWdpdCBhZGQgYzEuYyAmJgorCSEgZ2l0IG1lcmdlIGMxYSAmJgorCXRlc3RfY21wIGltcG9ydGFudCBjMS5jCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3dpbGwgbm90IG92ZXJ3cml0ZSByZW1vdmVkIGZpbGUgd2l0aCBzdGFnZWQgY2hhbmdlcycgJworCWdpdCByZXNldCAtLWhhcmQgYzEgJiYKKwlnaXQgcm0gYzEuYyAmJgorCWdpdCBjb21taXQgLW0gInJtIGMxLmMiICYmCisJY2F0IGltcG9ydGFudCA+IGMxLmMgJiYKKwlnaXQgYWRkIGMxLmMgJiYKKwlybSBjMS5jICYmCisJISBnaXQgbWVyZ2UgYzFhICYmCisJZ2l0IGNoZWNrb3V0IGMxLmMgJiYKKwl0ZXN0X2NtcCBpbXBvcnRhbnQgYzEuYworJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDc3MDEtcmVwYWNrLXVucGFjay11bnJlYWNoYWJsZS5zaCBiL3QvdDc3MDEtcmVwYWNrLXVucGFjay11bnJlYWNoYWJsZS5zaAppbmRleCA5ODEzZjExLi42M2E4MjI1IDEwMDc1NQotLS0gYS90L3Q3NzAxLXJlcGFjay11bnBhY2stdW5yZWFjaGFibGUuc2gKKysrIGIvdC90NzcwMS1yZXBhY2stdW5wYWNrLXVucmVhY2hhYmxlLnNoCkBAIC0yOSw3ICsyOSw3IEBACiAJZ2l0IHJlcGFjayAtQSAtZCAtbCAmJgogCSMgdmVyaWZ5IG9iamVjdHMgYXJlIHBhY2tlZCBpbiByZXBvc2l0b3J5CiAJdGVzdCAzID0gJChnaXQgdmVyaWZ5LXBhY2sgLXYgLS0gLmdpdC9vYmplY3RzL3BhY2svKi5pZHggfAotCQkgICBncmVwIC1lICJeJGZzaGExICIgLWUgIl4kY3NoYTEgIiAtZSAiXiR0c2hhMSAiIHwKKwkJICAgZWdyZXAgIl4oJGZzaGExfCRjc2hhMXwkdHNoYTEpICIgfAogCQkgICBzb3J0IHwgdW5pcSB8IHdjIC1sKSAmJgogCWdpdCBzaG93ICRmc2hhMSAmJgogCWdpdCBzaG93ICRjc2hhMSAmJgpAQCAtNDEsNyArNDEsNyBAQAogCWdpdCByZXBhY2sgLUEgLWQgLWwgJiYKIAkjIHZlcmlmeSBvYmplY3RzIGFyZSByZXRhaW5lZCB1bnBhY2tlZAogCXRlc3QgMCA9ICQoZ2l0IHZlcmlmeS1wYWNrIC12IC0tIC5naXQvb2JqZWN0cy9wYWNrLyouaWR4IHwKLQkJICAgZ3JlcCAtZSAiXiRmc2hhMSAiIC1lICJeJGNzaGExICIgLWUgIl4kdHNoYTEgIiB8CisJCSAgIGVncmVwICJeKCRmc2hhMXwkY3NoYTF8JHRzaGExKSAiIHwKIAkJICAgc29ydCB8IHVuaXEgfCB3YyAtbCkgJiYKIAlnaXQgc2hvdyAkZnNoYTEgJiYKIAlnaXQgc2hvdyAkY3NoYTEgJiYKZGlmZiAtLWdpdCBhL3QvdDgwMDEtYW5ub3RhdGUuc2ggYi90L3Q4MDAxLWFubm90YXRlLnNoCmluZGV4IGVhYmVjMmUuLjQ1Y2I2MGUgMTAwNzU1Ci0tLSBhL3QvdDgwMDEtYW5ub3RhdGUuc2gKKysrIGIvdC90ODAwMS1hbm5vdGF0ZS5zaApAQCAtNCw3ICs0LDcgQEAKIC4gLi90ZXN0LWxpYi5zaAogCiBQUk9HPSdnaXQgYW5ub3RhdGUnCi0uIC4uL2Fubm90YXRlLXRlc3RzLnNoCisuICIkVEVTVF9ESVJFQ1RPUlkiL2Fubm90YXRlLXRlc3RzLnNoCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdBbm5vdGF0aW5nIGFuIG9sZCByZXZpc2lvbiB3b3JrcycgXApkaWZmIC0tZ2l0IGEvdC90ODAwMi1ibGFtZS5zaCBiL3QvdDgwMDItYmxhbWUuc2gKaW5kZXggOTJlY2UzMC4uNTk3Y2YwNCAxMDA3NTUKLS0tIGEvdC90ODAwMi1ibGFtZS5zaAorKysgYi90L3Q4MDAyLWJsYW1lLnNoCkBAIC00LDYgKzQsNiBAQAogLiAuL3Rlc3QtbGliLnNoCiAKIFBST0c9J2dpdCBibGFtZSAtYycKLS4gLi4vYW5ub3RhdGUtdGVzdHMuc2gKKy4gIiRURVNUX0RJUkVDVE9SWSIvYW5ub3RhdGUtdGVzdHMuc2gKIAogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q4MDA1LWJsYW1lLWkxOG4uc2ggYi90L3Q4MDA1LWJsYW1lLWkxOG4uc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDQ3MGE5MgotLS0gL2Rldi9udWxsCisrKyBiL3QvdDgwMDUtYmxhbWUtaTE4bi5zaApAQCAtMCwwICsxLDkyIEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IGJsYW1lIGVuY29kaW5nIGNvbnZlcnNpb24nCisuIC4vdGVzdC1saWIuc2gKKworLiAiJFRFU1RfRElSRUNUT1JZIi90ODAwNS91dGY4LnR4dAorLiAiJFRFU1RfRElSRUNUT1JZIi90ODAwNS9jcDEyNTEudHh0CisuICIkVEVTVF9ESVJFQ1RPUlkiL3Q4MDA1L3NqaXMudHh0CisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIHRoZSByZXBvc2l0b3J5JyAnCisJIyBDcmVhdGUgdGhlIGZpbGUKKwllY2hvICJVVEYtOCBMSU5FIiA+IGZpbGUgJiYKKwlnaXQgYWRkIGZpbGUgJiYKKwlnaXQgY29tbWl0IC0tYXV0aG9yICIkVVRGOF9OQU1FIDx1dGY4QGxvY2FsaG9zdD4iIC1tICIkVVRGOF9NU0ciICYmCisKKwllY2hvICJDUDEyNTEgTElORSIgPj4gZmlsZSAmJgorCWdpdCBhZGQgZmlsZSAmJgorCWdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyBjcDEyNTEgJiYKKwlnaXQgY29tbWl0IC0tYXV0aG9yICIkQ1AxMjUxX05BTUUgPGNwMTI1MUBsb2NhbGhvc3Q+IiAtbSAiJENQMTI1MV9NU0ciICYmCisKKwllY2hvICJTSklTIExJTkUiID4+IGZpbGUgJiYKKwlnaXQgYWRkIGZpbGUgJiYKKwlnaXQgY29uZmlnIGkxOG4uY29tbWl0ZW5jb2Rpbmcgc2hpZnQtamlzICYmCisJZ2l0IGNvbW1pdCAtLWF1dGhvciAiJFNKSVNfTkFNRSA8c2ppc0Bsb2NhbGhvc3Q+IiAtbSAiJFNKSVNfTVNHIgorJworCitjYXQgPmV4cGVjdGVkIDw8RU9GCithdXRob3IgJFNKSVNfTkFNRQorc3VtbWFyeSAkU0pJU19NU0cKK2F1dGhvciAkU0pJU19OQU1FCitzdW1tYXJ5ICRTSklTX01TRworYXV0aG9yICRTSklTX05BTUUKK3N1bW1hcnkgJFNKSVNfTVNHCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBcCisJJ2JsYW1lIHJlc3BlY3RzIGkxOG4uY29tbWl0ZW5jb2RpbmcnICcKKwlnaXQgYmxhbWUgLS1pbmNyZW1lbnRhbCBmaWxlIHwgXAorCQlncmVwICJeXChhdXRob3JcfHN1bW1hcnlcKSAiID4gYWN0dWFsICYmCisJdGVzdF9jbXAgYWN0dWFsIGV4cGVjdGVkCisnCisKK2NhdCA+ZXhwZWN0ZWQgPDxFT0YKK2F1dGhvciAkQ1AxMjUxX05BTUUKK3N1bW1hcnkgJENQMTI1MV9NU0cKK2F1dGhvciAkQ1AxMjUxX05BTUUKK3N1bW1hcnkgJENQMTI1MV9NU0cKK2F1dGhvciAkQ1AxMjUxX05BTUUKK3N1bW1hcnkgJENQMTI1MV9NU0cKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKKwknYmxhbWUgcmVzcGVjdHMgaTE4bi5sb2dvdXRwdXRlbmNvZGluZycgJworCWdpdCBjb25maWcgaTE4bi5sb2dvdXRwdXRlbmNvZGluZyBjcDEyNTEgJiYKKwlnaXQgYmxhbWUgLS1pbmNyZW1lbnRhbCBmaWxlIHwgXAorCQlncmVwICJeXChhdXRob3JcfHN1bW1hcnlcKSAiID4gYWN0dWFsICYmCisJdGVzdF9jbXAgYWN0dWFsIGV4cGVjdGVkCisnCisKK2NhdCA+ZXhwZWN0ZWQgPDxFT0YKK2F1dGhvciAkVVRGOF9OQU1FCitzdW1tYXJ5ICRVVEY4X01TRworYXV0aG9yICRVVEY4X05BTUUKK3N1bW1hcnkgJFVURjhfTVNHCithdXRob3IgJFVURjhfTkFNRQorc3VtbWFyeSAkVVRGOF9NU0cKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKKwknYmxhbWUgcmVzcGVjdHMgLS1lbmNvZGluZz11dGYtOCcgJworCWdpdCBibGFtZSAtLWluY3JlbWVudGFsIC0tZW5jb2Rpbmc9dXRmLTggZmlsZSB8IFwKKwkJZ3JlcCAiXlwoYXV0aG9yXHxzdW1tYXJ5XCkgIiA+IGFjdHVhbCAmJgorCXRlc3RfY21wIGFjdHVhbCBleHBlY3RlZAorJworCitjYXQgPmV4cGVjdGVkIDw8RU9GCithdXRob3IgJFNKSVNfTkFNRQorc3VtbWFyeSAkU0pJU19NU0cKK2F1dGhvciAkQ1AxMjUxX05BTUUKK3N1bW1hcnkgJENQMTI1MV9NU0cKK2F1dGhvciAkVVRGOF9OQU1FCitzdW1tYXJ5ICRVVEY4X01TRworRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAorCSdibGFtZSByZXNwZWN0cyAtLWVuY29kaW5nPW5vbmUnICcKKwlnaXQgYmxhbWUgLS1pbmNyZW1lbnRhbCAtLWVuY29kaW5nPW5vbmUgZmlsZSB8IFwKKwkJZ3JlcCAiXlwoYXV0aG9yXHxzdW1tYXJ5XCkgIiA+IGFjdHVhbCAmJgorCXRlc3RfY21wIGFjdHVhbCBleHBlY3RlZAorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDgwMDUvY3AxMjUxLnR4dCBiL3QvdDgwMDUvY3AxMjUxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTQxZTk4Ci0tLSAvZGV2L251bGwKKysrIGIvdC90ODAwNS9jcDEyNTEudHh0CkBAIC0wLDAgKzEsMiBAQAorQ1AxMjUxX05BTUU9Isji4O0gz+Xy8O7i6Pcg0ejk7vDu4iIKK0NQMTI1MV9NU0c9ItLl8fLu4u7lIPHu7uH55e3o5SIKZGlmZiAtLWdpdCBhL3QvdDgwMDUvc2ppcy50eHQgYi90L3Q4MDA1L3NqaXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjY2ZiYWQKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q4MDA1L3NqaXMudHh0CkBAIC0wLDAgKzEsMiBAQAorU0pJU19OQU1FPSKESYRyhHCEfiCEUIR1hISEgoSAhHKEeYSJIIRShHmEdISAhIKEgIRyIgorU0pJU19NU0c9IoRThHWEg4SEhICEcoSAhHUghIOEgISAhHGEi4R1hH6EeYR1IgpkaWZmIC0tZ2l0IGEvdC90ODAwNS91dGY4LnR4dCBiL3QvdDgwMDUvdXRmOC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ2Y2ZjNQotLS0gL2Rldi9udWxsCisrKyBiL3QvdDgwMDUvdXRmOC50eHQKQEAgLTAsMCArMSwyIEBACitVVEY4X05BTUU9ItCY0LLQsNC9INCf0LXRgtGA0L7QstC40Ycg0KHQuNC00L7RgNC+0LIiCitVVEY4X01TRz0i0KLQtdGB0YLQvtCy0L7QtSDRgdC+0L7QsdGJ0LXQvdC40LUiCmRpZmYgLS1naXQgYS90L3Q5MDAxLXNlbmQtZW1haWwuc2ggYi90L3Q5MDAxLXNlbmQtZW1haWwuc2gKaW5kZXggZDA5OGEwMS4uY2IzZDE4MyAxMDA3NTUKLS0tIGEvdC90OTAwMS1zZW5kLWVtYWlsLnNoCisrKyBiL3QvdDkwMDEtc2VuZC1lbWFpbC5zaApAQCAtMTA5LDcgKzEwOSw3IEBACiAJCS0tZnJvbT0iRXhhbXBsZSA8bm9ib2R5QGV4YW1wbGUuY29tPiIgXAogCQktLXRvPW5vYm9keUBleGFtcGxlLmNvbSBcCiAJCS0tc210cC1zZXJ2ZXI9IiQocHdkKS9mYWtlLnNlbmRtYWlsIiBcCi0JCS0tbm8tdmFsaWRhdGUgXAorCQktLW5vdmFsaWRhdGUgXAogCQkkcGF0Y2hlcyBsb25nbGluZS5wYXRjaCBcCiAJCTI+ZXJyb3JzCiAnCkBAIC0yOTIsNCArMjkyLDI1IEBACiAJZ3JlcCAiXlN1YmplY3Q6ID0/dXRmLTg/cT91dGY4LXM9QzM9QkNiaj1DMz1BQmN0Pz0iIG1zZ3R4dDEKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnZGV0ZWN0cyBhbWJpZ3VvdXMgcmVmZXJlbmNlL2ZpbGUgY29uZmxpY3QnICcKKwllY2hvIG1hc3RlciA+IG1hc3RlciAmJgorCWdpdCBhZGQgbWFzdGVyICYmCisJZ2l0IGNvbW1pdCAtbSJhZGQgbWFzdGVyIiAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBzZW5kLWVtYWlsIC0tZHJ5LXJ1biBtYXN0ZXIgMj5lcnJvcnMgJiYKKwlncmVwIGRpc2FtYmlndWF0ZSBlcnJvcnMKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZmVlZCB0d28gZmlsZXMnICcKKwlybSAtZnIgb3V0ZGlyICYmCisJZ2l0IGZvcm1hdC1wYXRjaCAtMiAtbyBvdXRkaXIgJiYKKwlHSVRfU0VORF9FTUFJTF9OT1RUWT0xIGdpdCBzZW5kLWVtYWlsIFwKKwktLWRyeS1ydW4gXAorCS0tZnJvbT0iRXhhbXBsZSA8bm9ib2R5QGV4YW1wbGUuY29tPiIgXAorCS0tdG89bm9ib2R5QGV4YW1wbGUuY29tIFwKKwlvdXRkaXIvMDAwPy0qLnBhdGNoIDI+ZXJyb3JzID5vdXQgJiYKKwlncmVwICJeU3ViamVjdDogIiBvdXQgPnN1YmplY3RzICYmCisJdGVzdCAieiQoc2VkIC1uIC1lIDFwIHN1YmplY3RzKSIgPSAielN1YmplY3Q6IFtQQVRDSCAxLzJdIFNlY29uZC4iICYmCisJdGVzdCAieiQoc2VkIC1uIC1lIDJwIHN1YmplY3RzKSIgPSAielN1YmplY3Q6IFtQQVRDSCAyLzJdIGFkZCBtYXN0ZXIiCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90OTEwMC1naXQtc3ZuLWJhc2ljLnNoIGIvdC90OTEwMC1naXQtc3ZuLWJhc2ljLnNoCmluZGV4IDg0M2E1MDEuLmJiOTIxYWYgMTAwNzU1Ci0tLSBhL3QvdDkxMDAtZ2l0LXN2bi1iYXNpYy5zaAorKysgYi90L3Q5MTAwLWdpdC1zdm4tYmFzaWMuc2gKQEAgLTMsNyArMyw3IEBACiAjIENvcHlyaWdodCAoYykgMjAwNiBFcmljIFdvbmcKICMKIAotdGVzdF9kZXNjcmlwdGlvbj0nZ2l0LXN2biBiYXNpYyB0ZXN0cycKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBzdm4gYmFzaWMgdGVzdHMnCiBHSVRfU1ZOX0xDX0FMTD0ke0xDX0FMTDotJExBTkd9CiAKIGNhc2UgIiRHSVRfU1ZOX0xDX0FMTCIgaW4KQEAgLTE3LDEwICsxNywxMCBAQAogCiAuIC4vbGliLWdpdC1zdm4uc2gKIAotc2F5ICdkZWZpbmUgTk9fU1ZOX1RFU1RTIHRvIHNraXAgZ2l0LXN2biB0ZXN0cycKK3NheSAnZGVmaW5lIE5PX1NWTl9URVNUUyB0byBza2lwIGdpdCBzdm4gdGVzdHMnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdpbml0aWFsaXplIGdpdC1zdm4nICcKKyAgICAnaW5pdGlhbGl6ZSBnaXQgc3ZuJyAnCiAJbWtkaXIgaW1wb3J0ICYmCiAJY2QgaW1wb3J0ICYmCiAJZWNobyBmb28gPiBmb28gJiYKQEAgLTMxLDI2ICszMSwyNiBAQAogCWVjaG8gInp6eiIgPiBiYXIvenp6ICYmCiAJZWNobyAiIyEvYmluL3NoIiA+IGV4ZWMuc2ggJiYKIAljaG1vZCAreCBleGVjLnNoICYmCi0Jc3ZuIGltcG9ydCAtbSAiaW1wb3J0IGZvciBnaXQtc3ZuIiAuICIkc3ZucmVwbyIgPi9kZXYvbnVsbCAmJgorCXN2biBpbXBvcnQgLW0gImltcG9ydCBmb3IgZ2l0IHN2biIgLiAiJHN2bnJlcG8iID4vZGV2L251bGwgJiYKIAljZCAuLiAmJgogCXJtIC1yZiBpbXBvcnQgJiYKLQlnaXQtc3ZuIGluaXQgIiRzdm5yZXBvIicKKwlnaXQgc3ZuIGluaXQgIiRzdm5yZXBvIicKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ2ltcG9ydCBhbiBTVk4gcmV2aXNpb24gaW50byBnaXQnIFwKLSAgICAnZ2l0LXN2biBmZXRjaCcKKyAgICAnZ2l0IHN2biBmZXRjaCcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAiY2hlY2tvdXQgZnJvbSBzdm4iICdzdm4gY28gIiRzdm5yZXBvIiAiJFNWTl9UUkVFIicKIAogbmFtZT0ndHJ5IGEgZGVlcCAtLXJtZGlyIHdpdGggYSBjb21taXQnCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICIkbmFtZSIgJwotCWdpdCBjaGVja291dCAtZiAtYiBteWJyYW5jaCByZW1vdGVzL2dpdC1zdm4gJiYKKwlnaXQgY2hlY2tvdXQgLWYgLWIgbXlicmFuY2ggJHtyZW1vdGVzX2dpdF9zdm59ICYmCiAJbXYgZGlyL2EvYi9jL2QvZS9maWxlIGRpci9maWxlICYmCiAJY3AgZGlyL2ZpbGUgZmlsZSAmJgogCWdpdCB1cGRhdGUtaW5kZXggLS1hZGQgLS1yZW1vdmUgZGlyL2EvYi9jL2QvZS9maWxlIGRpci9maWxlIGZpbGUgJiYKIAlnaXQgY29tbWl0IC1tICIkbmFtZSIgJiYKLQlnaXQtc3ZuIHNldC10cmVlIC0tZmluZC1jb3BpZXMtaGFyZGVyIC0tcm1kaXIgXAotCQlyZW1vdGVzL2dpdC1zdm4uLm15YnJhbmNoICYmCisJZ2l0IHN2biBzZXQtdHJlZSAtLWZpbmQtY29waWVzLWhhcmRlciAtLXJtZGlyIFwKKwkJJHtyZW1vdGVzX2dpdF9zdm59Li5teWJyYW5jaCAmJgogCXN2biB1cCAiJFNWTl9UUkVFIiAmJgogCXRlc3QgLWQgIiRTVk5fVFJFRSIvZGlyICYmIHRlc3QgISAtZCAiJFNWTl9UUkVFIi9kaXIvYScKIApAQCAtNjMsNjEgKzYzLDYxIEBACiAJZ2l0IHVwZGF0ZS1pbmRleCAtLXJlbW92ZSBkaXIvZmlsZSAmJgogCWdpdCB1cGRhdGUtaW5kZXggLS1hZGQgZGlyL2ZpbGUvZmlsZSAmJgogCWdpdCBjb21taXQgLW0gJyRuYW1lJyAmJgotCXRlc3RfbXVzdF9mYWlsIGdpdC1zdm4gc2V0LXRyZWUgLS1maW5kLWNvcGllcy1oYXJkZXIgLS1ybWRpciBcCi0JCXJlbW90ZXMvZ2l0LXN2bi4ubXlicmFuY2giIHx8IHRydWUKKwl0ZXN0X211c3RfZmFpbCBnaXQgc3ZuIHNldC10cmVlIC0tZmluZC1jb3BpZXMtaGFyZGVyIC0tcm1kaXIgXAorCQkke3JlbW90ZXNfZ2l0X3N2bn0uLm15YnJhbmNoIiB8fCB0cnVlCiAKIAogbmFtZT0nZGV0ZWN0IG5vZGUgY2hhbmdlIGZyb20gZGlyZWN0b3J5IHRvIGZpbGUgIzEnCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICIkbmFtZSIgJwogCXJtIC1yZiBkaXIgIiRHSVRfRElSIi9pbmRleCAmJgotCWdpdCBjaGVja291dCAtZiAtYiBteWJyYW5jaDIgcmVtb3Rlcy9naXQtc3ZuICYmCisJZ2l0IGNoZWNrb3V0IC1mIC1iIG15YnJhbmNoMiAke3JlbW90ZXNfZ2l0X3N2bn0gJiYKIAltdiBiYXIvenp6IHp6eiAmJgogCXJtIC1yZiBiYXIgJiYKIAltdiB6enogYmFyICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCAtLXJlbW92ZSAtLSBiYXIvenp6ICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCAtLSBiYXIgJiYKIAlnaXQgY29tbWl0IC1tICIkbmFtZSIgJiYKLQl0ZXN0X211c3RfZmFpbCBnaXQtc3ZuIHNldC10cmVlIC0tZmluZC1jb3BpZXMtaGFyZGVyIC0tcm1kaXIgXAotCQlyZW1vdGVzL2dpdC1zdm4uLm15YnJhbmNoMicgfHwgdHJ1ZQorCXRlc3RfbXVzdF9mYWlsIGdpdCBzdm4gc2V0LXRyZWUgLS1maW5kLWNvcGllcy1oYXJkZXIgLS1ybWRpciBcCisJCSR7cmVtb3Rlc19naXRfc3ZufS4ubXlicmFuY2gyJyB8fCB0cnVlCiAKIAogbmFtZT0nZGV0ZWN0IG5vZGUgY2hhbmdlIGZyb20gZmlsZSB0byBkaXJlY3RvcnkgIzInCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICIkbmFtZSIgJwogCXJtIC1mICIkR0lUX0RJUiIvaW5kZXggJiYKLQlnaXQgY2hlY2tvdXQgLWYgLWIgbXlicmFuY2gzIHJlbW90ZXMvZ2l0LXN2biAmJgorCWdpdCBjaGVja291dCAtZiAtYiBteWJyYW5jaDMgJHtyZW1vdGVzX2dpdF9zdm59ICYmCiAJcm0gYmFyL3p6eiAmJgogCWdpdCB1cGRhdGUtaW5kZXggLS1yZW1vdmUgYmFyL3p6eiAmJgogCW1rZGlyIGJhci96enogJiYKIAllY2hvIHl5eSA+IGJhci96enoveXl5ICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCBiYXIvenp6L3l5eSAmJgogCWdpdCBjb21taXQgLW0gIiRuYW1lIiAmJgotCXRlc3RfbXVzdF9mYWlsIGdpdC1zdm4gc2V0LXRyZWUgLS1maW5kLWNvcGllcy1oYXJkZXIgLS1ybWRpciBcCi0JCXJlbW90ZXMvZ2l0LXN2bi4ubXlicmFuY2gzJyB8fCB0cnVlCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHN2biBzZXQtdHJlZSAtLWZpbmQtY29waWVzLWhhcmRlciAtLXJtZGlyIFwKKwkJJHtyZW1vdGVzX2dpdF9zdm59Li5teWJyYW5jaDMnIHx8IHRydWUKIAogCiBuYW1lPSdkZXRlY3Qgbm9kZSBjaGFuZ2UgZnJvbSBkaXJlY3RvcnkgdG8gZmlsZSAjMicKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgIiRuYW1lIiAnCiAJcm0gLWYgIiRHSVRfRElSIi9pbmRleCAmJgotCWdpdCBjaGVja291dCAtZiAtYiBteWJyYW5jaDQgcmVtb3Rlcy9naXQtc3ZuICYmCisJZ2l0IGNoZWNrb3V0IC1mIC1iIG15YnJhbmNoNCAke3JlbW90ZXNfZ2l0X3N2bn0gJiYKIAlybSAtcmYgZGlyICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCAtLXJlbW92ZSAtLSBkaXIvZmlsZSAmJgogCXRvdWNoIGRpciAmJgogCWVjaG8gYXNkZiA+IGRpciAmJgogCWdpdCB1cGRhdGUtaW5kZXggLS1hZGQgLS0gZGlyICYmCiAJZ2l0IGNvbW1pdCAtbSAiJG5hbWUiICYmCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0LXN2biBzZXQtdHJlZSAtLWZpbmQtY29waWVzLWhhcmRlciAtLXJtZGlyIFwKLQkJcmVtb3Rlcy9naXQtc3ZuLi5teWJyYW5jaDQnIHx8IHRydWUKKwl0ZXN0X211c3RfZmFpbCBnaXQgc3ZuIHNldC10cmVlIC0tZmluZC1jb3BpZXMtaGFyZGVyIC0tcm1kaXIgXAorCQkke3JlbW90ZXNfZ2l0X3N2bn0uLm15YnJhbmNoNCcgfHwgdHJ1ZQogCiAKIG5hbWU9J3JlbW92ZSBleGVjdXRhYmxlIGJpdCBmcm9tIGEgZmlsZScKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgIiRuYW1lIiAnCiAJcm0gLWYgIiRHSVRfRElSIi9pbmRleCAmJgotCWdpdCBjaGVja291dCAtZiAtYiBteWJyYW5jaDUgcmVtb3Rlcy9naXQtc3ZuICYmCisJZ2l0IGNoZWNrb3V0IC1mIC1iIG15YnJhbmNoNSAke3JlbW90ZXNfZ2l0X3N2bn0gJiYKIAljaG1vZCAteCBleGVjLnNoICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCBleGVjLnNoICYmCiAJZ2l0IGNvbW1pdCAtbSAiJG5hbWUiICYmCi0JZ2l0LXN2biBzZXQtdHJlZSAtLWZpbmQtY29waWVzLWhhcmRlciAtLXJtZGlyIFwKLQkJcmVtb3Rlcy9naXQtc3ZuLi5teWJyYW5jaDUgJiYKKwlnaXQgc3ZuIHNldC10cmVlIC0tZmluZC1jb3BpZXMtaGFyZGVyIC0tcm1kaXIgXAorCQkke3JlbW90ZXNfZ2l0X3N2bn0uLm15YnJhbmNoNSAmJgogCXN2biB1cCAiJFNWTl9UUkVFIiAmJgogCXRlc3QgISAteCAiJFNWTl9UUkVFIi9leGVjLnNoJwogCkBAIC0xMjcsOCArMTI3LDggQEAKIAljaG1vZCAreCBleGVjLnNoICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCBleGVjLnNoICYmCiAJZ2l0IGNvbW1pdCAtbSAiJG5hbWUiICYmCi0JZ2l0LXN2biBzZXQtdHJlZSAtLWZpbmQtY29waWVzLWhhcmRlciAtLXJtZGlyIFwKLQkJcmVtb3Rlcy9naXQtc3ZuLi5teWJyYW5jaDUgJiYKKwlnaXQgc3ZuIHNldC10cmVlIC0tZmluZC1jb3BpZXMtaGFyZGVyIC0tcm1kaXIgXAorCQkke3JlbW90ZXNfZ2l0X3N2bn0uLm15YnJhbmNoNSAmJgogCXN2biB1cCAiJFNWTl9UUkVFIiAmJgogCXRlc3QgLXggIiRTVk5fVFJFRSIvZXhlYy5zaCcKIApAQCAtMTM5LDggKzEzOSw4IEBACiAJbG4gLXMgYmFyL3p6eiBleGVjLnNoICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCBleGVjLnNoICYmCiAJZ2l0IGNvbW1pdCAtbSAiJG5hbWUiICYmCi0JZ2l0LXN2biBzZXQtdHJlZSAtLWZpbmQtY29waWVzLWhhcmRlciAtLXJtZGlyIFwKLQkJcmVtb3Rlcy9naXQtc3ZuLi5teWJyYW5jaDUgJiYKKwlnaXQgc3ZuIHNldC10cmVlIC0tZmluZC1jb3BpZXMtaGFyZGVyIC0tcm1kaXIgXAorCQkke3JlbW90ZXNfZ2l0X3N2bn0uLm15YnJhbmNoNSAmJgogCXN2biB1cCAiJFNWTl9UUkVFIiAmJgogCXRlc3QgLUwgIiRTVk5fVFJFRSIvZXhlYy5zaCcKIApAQCAtMTUxLDggKzE1MSw4IEBACiAJbG4gLXMgYmFyL3p6eiBleGVjLTIuc2ggJiYKIAlnaXQgdXBkYXRlLWluZGV4IC0tYWRkIGJhci96enogZXhlYy0yLnNoICYmCiAJZ2l0IGNvbW1pdCAtbSAiJG5hbWUiICYmCi0JZ2l0LXN2biBzZXQtdHJlZSAtLWZpbmQtY29waWVzLWhhcmRlciAtLXJtZGlyIFwKLQkJcmVtb3Rlcy9naXQtc3ZuLi5teWJyYW5jaDUgJiYKKwlnaXQgc3ZuIHNldC10cmVlIC0tZmluZC1jb3BpZXMtaGFyZGVyIC0tcm1kaXIgXAorCQkke3JlbW90ZXNfZ2l0X3N2bn0uLm15YnJhbmNoNSAmJgogCXN2biB1cCAiJFNWTl9UUkVFIiAmJgogCXRlc3QgLXggIiRTVk5fVFJFRSIvYmFyL3p6eiAmJgogCXRlc3QgLUwgIiRTVk5fVFJFRSIvZXhlYy0yLnNoJwpAQCAtMTY0LDggKzE2NCw4IEBACiAJY3AgaGVscCBleGVjLTIuc2ggJiYKIAlnaXQgdXBkYXRlLWluZGV4IGV4ZWMtMi5zaCAmJgogCWdpdCBjb21taXQgLW0gIiRuYW1lIiAmJgotCWdpdC1zdm4gc2V0LXRyZWUgLS1maW5kLWNvcGllcy1oYXJkZXIgLS1ybWRpciBcCi0JCXJlbW90ZXMvZ2l0LXN2bi4ubXlicmFuY2g1ICYmCisJZ2l0IHN2biBzZXQtdHJlZSAtLWZpbmQtY29waWVzLWhhcmRlciAtLXJtZGlyIFwKKwkJJHtyZW1vdGVzX2dpdF9zdm59Li5teWJyYW5jaDUgJiYKIAlzdm4gdXAgIiRTVk5fVFJFRSIgJiYKIAl0ZXN0IC1mICIkU1ZOX1RSRUUiL2V4ZWMtMi5zaCAmJgogCXRlc3QgISAtTCAiJFNWTl9UUkVFIi9leGVjLTIuc2ggJiYKQEAgLTE4MCw3ICsxODAsNyBAQAogCQllY2hvICcjIGhlbGxvJyA+PiBleGVjLTIuc2ggJiYKIAkJZ2l0IHVwZGF0ZS1pbmRleCBleGVjLTIuc2ggJiYKIAkJZ2l0IGNvbW1pdCAtbSAnw6nDr+KIjycgJiYKLQkJZ2l0LXN2biBzZXQtdHJlZSBIRUFEIgorCQlnaXQgc3ZuIHNldC10cmVlIEhFQUQiCiAJdW5zZXQgTENfQUxMCiBlbHNlCiAJc2F5ICJVVEYtOCBsb2NhbGUgbm90IHNldCwgdGVzdCBza2lwcGVkICgkR0lUX1NWTl9MQ19BTEwpIgpAQCAtMTkwLDggKzE5MCw4IEBACiBHSVRfU1ZOX0lEPWFsdAogZXhwb3J0IEdJVF9TVk5fSUQKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgIiRuYW1lIiBcCi0gICAgJ2dpdC1zdm4gaW5pdCAiJHN2bnJlcG8iICYmIGdpdC1zdm4gZmV0Y2ggJiYKLSAgICAgZ2l0IHJldi1saXN0IC0tcHJldHR5PXJhdyByZW1vdGVzL2dpdC1zdm4gfCBncmVwIF50cmVlIHwgdW5pcSA+IGEgJiYKKyAgICAnZ2l0IHN2biBpbml0ICIkc3ZucmVwbyIgJiYgZ2l0IHN2biBmZXRjaCAmJgorICAgICBnaXQgcmV2LWxpc3QgLS1wcmV0dHk9cmF3ICR7cmVtb3Rlc19naXRfc3ZufSB8IGdyZXAgXnRyZWUgfCB1bmlxID4gYSAmJgogICAgICBnaXQgcmV2LWxpc3QgLS1wcmV0dHk9cmF3IHJlbW90ZXMvYWx0IHwgZ3JlcCBedHJlZSB8IHVuaXEgPiBiICYmCiAgICAgIHRlc3RfY21wIGEgYicKIApAQCAtMjE1LDQ1ICsyMTUsNDUgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZXhpdCBpZiByZW1vdGUgcmVmcyBhcmUgYW1iaWdpb3VzJyAiCiAgICAgICAgIGdpdCBjb25maWcgLS1hZGQgc3ZuLXJlbW90ZS5zdm4uZmV0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyOnJlZnMvcmVtb3Rlcy9naXQtc3ZuICYmCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0LXN2biBtaWdyYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXI6cmVmcy8ke3JlbW90ZXNfZ2l0X3N2bn0gJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgc3ZuIG1pZ3JhdGUKICIKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZXhpdCBpZiBpbml0LWluZyBhIHdvdWxkIGNsb2JiZXIgYSBVUkwnICcKICAgICAgICAgc3ZuYWRtaW4gY3JlYXRlICIke1BXRH0vc3ZucmVwbzIiICYmCiAgICAgICAgIHN2biBta2RpciAtbSAibWtkaXIgYmFyIiAiJHtzdm5yZXBvfTIvYmFyIiAmJgogICAgICAgICBnaXQgY29uZmlnIC0tdW5zZXQgc3ZuLXJlbW90ZS5zdm4uZmV0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXmJhcjpyZWZzL3JlbW90ZXMvZ2l0LXN2biQiICYmCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0LXN2biBpbml0ICIke3N2bnJlcG99Mi9iYXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJeYmFyOnJlZnMvJHtyZW1vdGVzX2dpdF9zdm59JCIgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgc3ZuIGluaXQgIiR7c3ZucmVwb30yL2JhciIKICAgICAgICAgJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgJ2luaXQgYWxsb3dzIHVzIHRvIGNvbm5lY3QgdG8gYW5vdGhlciBkaXJlY3RvcnkgaW4gdGhlIHNhbWUgcmVwbycgJwotICAgICAgICBnaXQtc3ZuIGluaXQgLS1taW5pbWl6ZS11cmwgLWkgYmFyICIkc3ZucmVwby9iYXIiICYmCisgICAgICAgIGdpdCBzdm4gaW5pdCAtLW1pbmltaXplLXVybCAtaSBiYXIgIiRzdm5yZXBvL2JhciIgJiYKICAgICAgICAgZ2l0IGNvbmZpZyAtLWdldCBzdm4tcmVtb3RlLnN2bi5mZXRjaCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXmJhcjpyZWZzL3JlbW90ZXMvYmFyJCIgJiYKICAgICAgICAgZ2l0IGNvbmZpZyAtLWdldCBzdm4tcmVtb3RlLnN2bi5mZXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXjpyZWZzL3JlbW90ZXMvZ2l0LXN2biQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXjpyZWZzLyR7cmVtb3Rlc19naXRfc3ZufSQiCiAgICAgICAgICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWJsZSB0byBkY29tbWl0IHRvIGEgc3ViZGlyZWN0b3J5JyAiCi0JZ2l0LXN2biBmZXRjaCAtaSBiYXIgJiYKKwlnaXQgc3ZuIGZldGNoIC1pIGJhciAmJgogCWdpdCBjaGVja291dCAtYiBteS1iYXIgcmVmcy9yZW1vdGVzL2JhciAmJgogCWVjaG8gYWJjID4gZCAmJgogCWdpdCB1cGRhdGUtaW5kZXggLS1hZGQgZCAmJgogCWdpdCBjb21taXQgLW0gJy9iYXIvZCBzaG91bGQgYmUgaW4gdGhlIGxvZycgJiYKLQlnaXQtc3ZuIGRjb21taXQgLWkgYmFyICYmCisJZ2l0IHN2biBkY29tbWl0IC1pIGJhciAmJgogCXRlc3QgLXogXCJcYGdpdCBkaWZmIHJlZnMvaGVhZHMvbXktYmFyIHJlZnMvcmVtb3Rlcy9iYXJcYFwiICYmCiAJbWtkaXIgbmV3ZGlyICYmCiAJZWNobyBuZXcgPiBuZXdkaXIvZGlyICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCBuZXdkaXIvZGlyICYmCiAJZ2l0IGNvbW1pdCAtbSAnYWRkIGEgbmV3IGRpcmVjdG9yeScgJiYKLQlnaXQtc3ZuIGRjb21taXQgLWkgYmFyICYmCisJZ2l0IHN2biBkY29tbWl0IC1pIGJhciAmJgogCXRlc3QgLXogXCJcYGdpdCBkaWZmIHJlZnMvaGVhZHMvbXktYmFyIHJlZnMvcmVtb3Rlcy9iYXJcYFwiICYmCiAJZWNobyBmb28gPj4gbmV3ZGlyL2RpciAmJgogCWdpdCB1cGRhdGUtaW5kZXggbmV3ZGlyL2RpciAmJgogCWdpdCBjb21taXQgLW0gJ21vZGlmeSBhIGZpbGUgaW4gbmV3IGRpcmVjdG9yeScgJiYKLQlnaXQtc3ZuIGRjb21taXQgLWkgYmFyICYmCisJZ2l0IHN2biBkY29tbWl0IC1pIGJhciAmJgogCXRlc3QgLXogXCJcYGdpdCBkaWZmIHJlZnMvaGVhZHMvbXktYmFyIHJlZnMvcmVtb3Rlcy9iYXJcYFwiCiAJIgogCkBAIC0yNjEsOCArMjYxLDE3IEBACiAJZWNobyBjYmEgPiBkICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCBkICYmCiAJZ2l0IGNvbW1pdCAtbSAndXBkYXRlIC9iYXIvZCcgJiYKLQlnaXQtc3ZuIHNldC10cmVlIC1pIGJhciBIRUFEICYmCisJZ2l0IHN2biBzZXQtdHJlZSAtaSBiYXIgSEVBRCAmJgogCXRlc3QgLXogXCJcYGdpdCBkaWZmIHJlZnMvaGVhZHMvbXktYmFyIHJlZnMvcmVtb3Rlcy9iYXJcYFwiCiAJIgogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQtc3ZuIHdvcmtzIGluIGEgYmFyZSByZXBvc2l0b3J5JyAnCisJbWtkaXIgYmFyZS1yZXBvICYmCisJKCBjZCBiYXJlLXJlcG8gJiYKKwlnaXQgaW5pdCAtLWJhcmUgJiYKKwlHSVRfRElSPS4gZ2l0IHN2biBpbml0ICIkc3ZucmVwbyIgJiYKKwlnaXQgc3ZuIGZldGNoICkgJiYKKwlybSAtcmYgYmFyZS1yZXBvCisJJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDkxMDEtZ2l0LXN2bi1wcm9wcy5zaCBiL3QvdDkxMDEtZ2l0LXN2bi1wcm9wcy5zaAppbmRleCBmNDIwNzk2Li4xZTMxZDZlIDEwMDc1NQotLS0gYS90L3Q5MTAxLWdpdC1zdm4tcHJvcHMuc2gKKysrIGIvdC90OTEwMS1naXQtc3ZuLXByb3BzLnNoCkBAIC0zLDcgKzMsNyBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMDYgRXJpYyBXb25nCiAjCiAKLXRlc3RfZGVzY3JpcHRpb249J2dpdC1zdm4gcHJvcGVydHkgdGVzdHMnCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc3ZuIHByb3BlcnR5IHRlc3RzJwogLiAuL2xpYi1naXQtc3ZuLnNoCiAKIG1rZGlyIGltcG9ydApAQCAtMjYsMjkgKzI2LDI5IEBACiBFT0YKIAogCXByaW50ZiAiSGVsbG9cclxuV29ybGRcclxuIiA+IGNybGYKLQlhX2NybGY9YGdpdC1oYXNoLW9iamVjdCAtdyBjcmxmYAorCWFfY3JsZj1gZ2l0IGhhc2gtb2JqZWN0IC13IGNybGZgCiAJcHJpbnRmICJIZWxsb1xyV29ybGRcciIgPiBjcgotCWFfY3I9YGdpdC1oYXNoLW9iamVjdCAtdyBjcmAKKwlhX2NyPWBnaXQgaGFzaC1vYmplY3QgLXcgY3JgCiAJcHJpbnRmICJIZWxsb1xuV29ybGRcbiIgPiBsZgotCWFfbGY9YGdpdC1oYXNoLW9iamVjdCAtdyBsZmAKKwlhX2xmPWBnaXQgaGFzaC1vYmplY3QgLXcgbGZgCiAKIAlwcmludGYgIkhlbGxvXHJcbldvcmxkIiA+IG5lX2NybGYKLQlhX25lX2NybGY9YGdpdC1oYXNoLW9iamVjdCAtdyBuZV9jcmxmYAorCWFfbmVfY3JsZj1gZ2l0IGhhc2gtb2JqZWN0IC13IG5lX2NybGZgCiAJcHJpbnRmICJIZWxsb1xuV29ybGQiID4gbmVfbGYKLQlhX25lX2xmPWBnaXQtaGFzaC1vYmplY3QgLXcgbmVfbGZgCisJYV9uZV9sZj1gZ2l0IGhhc2gtb2JqZWN0IC13IG5lX2xmYAogCXByaW50ZiAiSGVsbG9ccldvcmxkIiA+IG5lX2NyCi0JYV9uZV9jcj1gZ2l0LWhhc2gtb2JqZWN0IC13IG5lX2NyYAorCWFfbmVfY3I9YGdpdCBoYXNoLW9iamVjdCAtdyBuZV9jcmAKIAogCXRvdWNoIGVtcHR5Ci0JYV9lbXB0eT1gZ2l0LWhhc2gtb2JqZWN0IC13IGVtcHR5YAorCWFfZW1wdHk9YGdpdCBoYXNoLW9iamVjdCAtdyBlbXB0eWAKIAlwcmludGYgIlxuIiA+IGVtcHR5X2xmCi0JYV9lbXB0eV9sZj1gZ2l0LWhhc2gtb2JqZWN0IC13IGVtcHR5X2xmYAorCWFfZW1wdHlfbGY9YGdpdCBoYXNoLW9iamVjdCAtdyBlbXB0eV9sZmAKIAlwcmludGYgIlxyIiA+IGVtcHR5X2NyCi0JYV9lbXB0eV9jcj1gZ2l0LWhhc2gtb2JqZWN0IC13IGVtcHR5X2NyYAorCWFfZW1wdHlfY3I9YGdpdCBoYXNoLW9iamVjdCAtdyBlbXB0eV9jcmAKIAlwcmludGYgIlxyXG4iID4gZW1wdHlfY3JsZgotCWFfZW1wdHlfY3JsZj1gZ2l0LWhhc2gtb2JqZWN0IC13IGVtcHR5X2NybGZgCisJYV9lbXB0eV9jcmxmPWBnaXQgaGFzaC1vYmplY3QgLXcgZW1wdHlfY3JsZmAKIAotCXN2biBpbXBvcnQgLS1uby1hdXRvLXByb3BzIC1tICdpbXBvcnQgZm9yIGdpdC1zdm4nIC4gIiRzdm5yZXBvIiA+L2Rldi9udWxsCisJc3ZuIGltcG9ydCAtLW5vLWF1dG8tcHJvcHMgLW0gJ2ltcG9ydCBmb3IgZ2l0IHN2bicgLiAiJHN2bnJlcG8iID4vZGV2L251bGwKIGNkIC4uCiAKIHJtIC1yZiBpbXBvcnQKQEAgLTY2LDE2ICs2NiwxNiBAQAogCQlzdm4gY29tbWl0IC1tICJQcm9wc2V0IElkIiAmJgogCWNkIC4uJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdpbml0aWFsaXplIGdpdC1zdm4nICdnaXQtc3ZuIGluaXQgIiRzdm5yZXBvIicKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZldGNoIHJldmlzaW9ucyBmcm9tIHN2bicgJ2dpdC1zdm4gZmV0Y2gnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbml0aWFsaXplIGdpdCBzdm4nICdnaXQgc3ZuIGluaXQgIiRzdm5yZXBvIicKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZldGNoIHJldmlzaW9ucyBmcm9tIHN2bicgJ2dpdCBzdm4gZmV0Y2gnCiAKIG5hbWU9J3Rlc3Qgc3ZuOmtleXdvcmRzIGlnbm9yaW5nJwogdGVzdF9leHBlY3Rfc3VjY2VzcyAiJG5hbWUiIFwKLQknZ2l0IGNoZWNrb3V0IC1iIG15YnJhbmNoIHJlbW90ZXMvZ2l0LXN2biAmJgorCSdnaXQgY2hlY2tvdXQgLWIgbXlicmFuY2ggJHtyZW1vdGVzX2dpdF9zdm59ICYmCiAJZWNobyBIaSBhZ2FpbiA+PiBrdy5jICYmCiAJZ2l0IGNvbW1pdCAtYSAtbSAidGVzdCBrZXl3b3JkcyBpZ25vcmluZyIgJiYKLQlnaXQtc3ZuIHNldC10cmVlIHJlbW90ZXMvZ2l0LXN2bi4ubXlicmFuY2ggJiYKLQlnaXQgcHVsbCAuIHJlbW90ZXMvZ2l0LXN2bicKKwlnaXQgc3ZuIHNldC10cmVlICR7cmVtb3Rlc19naXRfc3ZufS4ubXlicmFuY2ggJiYKKwlnaXQgcHVsbCAuICR7cmVtb3Rlc19naXRfc3ZufScKIAogZXhwZWN0PScvKiAkSWQkICovJwogZ290PSJgc2VkIC1uZSAycCBrdy5jYCIKQEAgLTkwLDggKzkwLDggQEAKIAkgY2QgLi4nCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZldGNoIGFuZCBwdWxsIGxhdGVzdCBmcm9tIHN2biBhbmQgY2hlY2tvdXQgYSBuZXcgd2MnIFwKLQknZ2l0LXN2biBmZXRjaCAmJgotCSBnaXQgcHVsbCAuIHJlbW90ZXMvZ2l0LXN2biAmJgorCSdnaXQgc3ZuIGZldGNoICYmCisJIGdpdCBwdWxsIC4gJHtyZW1vdGVzX2dpdF9zdm59ICYmCiAJIHN2biBjbyAiJHN2bnJlcG8iIG5ld193YycKIAogZm9yIGkgaW4gY3JsZiBuZV9jcmxmIGxmIG5lX2xmIGNyIG5lX2NyIGVtcHR5X2NyIGVtcHR5X2xmIGVtcHR5IGVtcHR5X2NybGYKQEAgLTEwMyw4ICsxMDMsOCBAQAogY2QgdGVzdF93YwogCXByaW50ZiAnJElkJFxySGVsbG9ccldvcmxkXHInID4gY3IKIAlwcmludGYgJyRJZCRcckhlbGxvXHJXb3JsZCcgPiBuZV9jcgotCWFfY3I9YHByaW50ZiAnJElkJFxyXG5IZWxsb1xyXG5Xb3JsZFxyXG4nIHwgZ2l0LWhhc2gtb2JqZWN0IC0tc3RkaW5gCi0JYV9uZV9jcj1gcHJpbnRmICckSWQkXHJcbkhlbGxvXHJcbldvcmxkJyB8IGdpdC1oYXNoLW9iamVjdCAtLXN0ZGluYAorCWFfY3I9YHByaW50ZiAnJElkJFxyXG5IZWxsb1xyXG5Xb3JsZFxyXG4nIHwgZ2l0IGhhc2gtb2JqZWN0IC0tc3RkaW5gCisJYV9uZV9jcj1gcHJpbnRmICckSWQkXHJcbkhlbGxvXHJcbldvcmxkJyB8IGdpdCBoYXNoLW9iamVjdCAtLXN0ZGluYAogCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ1NldCBDUkxGIG9uIGNyIGZpbGVzJyBcCiAJJ3N2biBwcm9wc2V0IHN2bjplb2wtc3R5bGUgQ1JMRiBjciAmJgogCSBzdm4gcHJvcHNldCBzdm46ZW9sLXN0eWxlIENSTEYgbmVfY3IgJiYKQEAgLTExMywxMCArMTEzLDEwIEBACiAJIHN2biBjb21taXQgLW0gInByb3BzZXQgQ1JMRiBvbiBjciBmaWxlcyInCiBjZCAuLgogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZmV0Y2ggYW5kIHB1bGwgbGF0ZXN0IGZyb20gc3ZuJyBcCi0JJ2dpdC1zdm4gZmV0Y2ggJiYgZ2l0IHB1bGwgLiByZW1vdGVzL2dpdC1zdm4nCisJJ2dpdCBzdm4gZmV0Y2ggJiYgZ2l0IHB1bGwgLiAke3JlbW90ZXNfZ2l0X3N2bn0nCiAKLWJfY3I9ImBnaXQtaGFzaC1vYmplY3QgY3JgIgotYl9uZV9jcj0iYGdpdC1oYXNoLW9iamVjdCBuZV9jcmAiCitiX2NyPSJgZ2l0IGhhc2gtb2JqZWN0IGNyYCIKK2JfbmVfY3I9ImBnaXQgaGFzaC1vYmplY3QgbmVfY3JgIgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdDUkxGICsgJElkJCcgInRlc3QgJyRhX2NyJyA9ICckYl9jciciCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdDUkxGICsgJElkJCAobm8gbmV3bGluZSknICJ0ZXN0ICckYV9uZV9jcicgPSAnJGJfbmVfY3InIgpAQCAtMTQ1LDcgKzE0NSw3IEBACiAJc3ZuIHByb3BzZXQgLVIgc3ZuOmlnbm9yZSAnbm8tc3VjaC1maWxlKicgLgogCXN2biBjb21taXQgLW0gJ3Byb3BzZXQgc3ZuOmlnbm9yZScKIAljZCAuLiAmJgotCWdpdC1zdm4gc2hvdy1pZ25vcmUgPiBzaG93LWlnbm9yZS5nb3QgJiYKKwlnaXQgc3ZuIHNob3ctaWdub3JlID4gc2hvdy1pZ25vcmUuZ290ICYmCiAJY21wIHNob3ctaWdub3JlLmV4cGVjdCBzaG93LWlnbm9yZS5nb3QKIAkiCiAKQEAgLTE2MSw4ICsxNjEsOCBAQAogRU9GCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgY3JlYXRlLWlnbm9yZScgIgotCWdpdC1zdm4gZmV0Y2ggJiYgZ2l0IHB1bGwgLiByZW1vdGVzL2dpdC1zdm4gJiYKLQlnaXQtc3ZuIGNyZWF0ZS1pZ25vcmUgJiYKKwlnaXQgc3ZuIGZldGNoICYmIGdpdCBwdWxsIC4gJHtyZW1vdGVzX2dpdF9zdm59ICYmCisJZ2l0IHN2biBjcmVhdGUtaWdub3JlICYmCiAJY21wIC4vLmdpdGlnbm9yZSBjcmVhdGUtaWdub3JlLmV4cGVjdCAmJgogCWNtcCAuL2RlZXBseS8uZ2l0aWdub3JlIGNyZWF0ZS1pZ25vcmUuZXhwZWN0ICYmCiAJY21wIC4vZGVlcGx5L25lc3RlZC8uZ2l0aWdub3JlIGNyZWF0ZS1pZ25vcmUuZXhwZWN0ICYmCkBAIC0xODIsMTUgKzE4MiwxNSBAQAogIyBwYXR0ZXJuLCBpdCBjYW4gcGFzcyBldmVuIHRob3VnaCB0aGUgcHJvcGdldCBkaWQgbm90IGV4ZWN1dGUgb24gdGhlCiAjIHJpZ2h0IGRpcmVjdG9yeS4KIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgcHJvcGdldCcgIgotCWdpdC1zdm4gcHJvcGdldCBzdm46aWdub3JlIC4gfCBjbXAgLSBwcm9wLmV4cGVjdCAmJgorCWdpdCBzdm4gcHJvcGdldCBzdm46aWdub3JlIC4gfCBjbXAgLSBwcm9wLmV4cGVjdCAmJgogCWNkIGRlZXBseSAmJgotCWdpdC1zdm4gcHJvcGdldCBzdm46aWdub3JlIC4gfCBjbXAgLSAuLi9wcm9wLmV4cGVjdCAmJgotCWdpdC1zdm4gcHJvcGdldCBzdm46ZW50cnk6Y29tbWl0dGVkLXJldiBuZXN0ZWQvZGlyZWN0b3J5Ly5rZWVwIFwKKwlnaXQgc3ZuIHByb3BnZXQgc3ZuOmlnbm9yZSAuIHwgY21wIC0gLi4vcHJvcC5leHBlY3QgJiYKKwlnaXQgc3ZuIHByb3BnZXQgc3ZuOmVudHJ5OmNvbW1pdHRlZC1yZXYgbmVzdGVkL2RpcmVjdG9yeS8ua2VlcCBcCiAJICB8IGNtcCAtIC4uL3Byb3AyLmV4cGVjdCAmJgotCWdpdC1zdm4gcHJvcGdldCBzdm46aWdub3JlIC4uIHwgY21wIC0gLi4vcHJvcC5leHBlY3QgJiYKLQlnaXQtc3ZuIHByb3BnZXQgc3ZuOmlnbm9yZSBuZXN0ZWQvIHwgY21wIC0gLi4vcHJvcC5leHBlY3QgJiYKLQlnaXQtc3ZuIHByb3BnZXQgc3ZuOmlnbm9yZSAuL25lc3RlZCB8IGNtcCAtIC4uL3Byb3AuZXhwZWN0ICYmCi0JZ2l0LXN2biBwcm9wZ2V0IHN2bjppZ25vcmUgLi4vLi9kZWVwbHkvbmVzdGVkIHwgY21wIC0gLi4vcHJvcC5leHBlY3QKKwlnaXQgc3ZuIHByb3BnZXQgc3ZuOmlnbm9yZSAuLiB8IGNtcCAtIC4uL3Byb3AuZXhwZWN0ICYmCisJZ2l0IHN2biBwcm9wZ2V0IHN2bjppZ25vcmUgbmVzdGVkLyB8IGNtcCAtIC4uL3Byb3AuZXhwZWN0ICYmCisJZ2l0IHN2biBwcm9wZ2V0IHN2bjppZ25vcmUgLi9uZXN0ZWQgfCBjbXAgLSAuLi9wcm9wLmV4cGVjdCAmJgorCWdpdCBzdm4gcHJvcGdldCBzdm46aWdub3JlIC4uLy4vZGVlcGx5L25lc3RlZCB8IGNtcCAtIC4uL3Byb3AuZXhwZWN0CiAJIgogCiBjYXQgPnByb3AuZXhwZWN0IDw8XEVPRgpAQCAtMjEwLDggKzIxMCw4IEBACiBFT0YKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAndGVzdCBwcm9wbGlzdCcgIgotCWdpdC1zdm4gcHJvcGxpc3QgLiB8IGNtcCAtIHByb3AuZXhwZWN0ICYmCi0JZ2l0LXN2biBwcm9wbGlzdCBuZXN0ZWQvZGlyZWN0b3J5Ly5rZWVwIHwgY21wIC0gcHJvcDIuZXhwZWN0CisJZ2l0IHN2biBwcm9wbGlzdCAuIHwgY21wIC0gcHJvcC5leHBlY3QgJiYKKwlnaXQgc3ZuIHByb3BsaXN0IG5lc3RlZC9kaXJlY3RvcnkvLmtlZXAgfCBjbXAgLSBwcm9wMi5leHBlY3QKIAkiCiAKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90OTEwMi1naXQtc3ZuLWRlZXAtcm1kaXIuc2ggYi90L3Q5MTAyLWdpdC1zdm4tZGVlcC1ybWRpci5zaAppbmRleCAwZTdjZTM0Li5lMjIzMjE4IDEwMDc1NQotLS0gYS90L3Q5MTAyLWdpdC1zdm4tZGVlcC1ybWRpci5zaAorKysgYi90L3Q5MTAyLWdpdC1zdm4tZGVlcC1ybWRpci5zaApAQCAtMSw1ICsxLDUgQEAKICMhL2Jpbi9zaAotdGVzdF9kZXNjcmlwdGlvbj0nZ2l0LXN2biBybWRpcicKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBzdm4gcm1kaXInCiAuIC4vbGliLWdpdC1zdm4uc2gKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5pdGlhbGl6ZSByZXBvJyAnCkBAIC05LDIwICs5LDIwIEBACiAJbWtkaXIgLXAgZGVlcGx5L25lc3RlZC9kaXJlY3RvcnkvbnVtYmVyLzIgJiYKIAllY2hvIGZvbyA+IGRlZXBseS9uZXN0ZWQvZGlyZWN0b3J5L251bWJlci8xL2ZpbGUgJiYKIAllY2hvIGZvbyA+IGRlZXBseS9uZXN0ZWQvZGlyZWN0b3J5L251bWJlci8yL2Fub3RoZXIgJiYKLQlzdm4gaW1wb3J0IC1tICJpbXBvcnQgZm9yIGdpdC1zdm4iIC4gIiRzdm5yZXBvIiAmJgorCXN2biBpbXBvcnQgLW0gImltcG9ydCBmb3IgZ2l0IHN2biIgLiAiJHN2bnJlcG8iICYmCiAJY2QgLi4KIAknCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21pcnJvciB2aWEgZ2l0LXN2bicgJwotCWdpdC1zdm4gaW5pdCAiJHN2bnJlcG8iICYmCi0JZ2l0LXN2biBmZXRjaCAmJgotCWdpdCBjaGVja291dCAtZiAtYiB0ZXN0LXJtZGlyIHJlbW90ZXMvZ2l0LXN2bgordGVzdF9leHBlY3Rfc3VjY2VzcyAnbWlycm9yIHZpYSBnaXQgc3ZuJyAnCisJZ2l0IHN2biBpbml0ICIkc3ZucmVwbyIgJiYKKwlnaXQgc3ZuIGZldGNoICYmCisJZ2l0IGNoZWNrb3V0IC1mIC1iIHRlc3Qtcm1kaXIgJHtyZW1vdGVzX2dpdF9zdm59CiAJJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdUcnkgYSBjb21taXQgb24gcm1kaXInICcKIAlnaXQgcm0gLWYgZGVlcGx5L25lc3RlZC9kaXJlY3RvcnkvbnVtYmVyLzIvYW5vdGhlciAmJgogCWdpdCBjb21taXQgLWEgLW0gInJlbW92ZSBhbm90aGVyIiAmJgotCWdpdC1zdm4gc2V0LXRyZWUgLS1ybWRpciBIRUFEICYmCisJZ2l0IHN2biBzZXQtdHJlZSAtLXJtZGlyIEhFQUQgJiYKIAlzdm4gbHMgLVIgIiRzdm5yZXBvIiB8IGdyZXAgXmRlZXBseS9uZXN0ZWQvZGlyZWN0b3J5L251bWJlci8xCiAJJwogCmRpZmYgLS1naXQgYS90L3Q5MTAzLWdpdC1zdm4tdHJhY2tlZC1kaXJlY3RvcnktcmVtb3ZlZC5zaCBiL3QvdDkxMDMtZ2l0LXN2bi10cmFja2VkLWRpcmVjdG9yeS1yZW1vdmVkLnNoCmluZGV4IDlmZmQ4NDUuLjk2M2RkOTUgMTAwNzU1Ci0tLSBhL3QvdDkxMDMtZ2l0LXN2bi10cmFja2VkLWRpcmVjdG9yeS1yZW1vdmVkLnNoCisrKyBiL3QvdDkxMDMtZ2l0LXN2bi10cmFja2VkLWRpcmVjdG9yeS1yZW1vdmVkLnNoCkBAIC0zLDcgKzMsNyBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMDcgRXJpYyBXb25nCiAjCiAKLXRlc3RfZGVzY3JpcHRpb249J2dpdC1zdm4gdHJhY2tpbmcgcmVtb3ZlZCB0b3AtbGV2ZWwgcGF0aCcKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBzdm4gdHJhY2tpbmcgcmVtb3ZlZCB0b3AtbGV2ZWwgcGF0aCcKIC4gLi9saWItZ2l0LXN2bi5zaAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtYWtlIGhpc3RvcnkgZm9yIHRyYWNraW5nJyAnCmRpZmYgLS1naXQgYS90L3Q5MTA0LWdpdC1zdm4tZm9sbG93LXBhcmVudC5zaCBiL3QvdDkxMDQtZ2l0LXN2bi1mb2xsb3ctcGFyZW50LnNoCmluZGV4IGQ4MGVhNjQuLmFiOWZhMzIgMTAwNzU1Ci0tLSBhL3QvdDkxMDQtZ2l0LXN2bi1mb2xsb3ctcGFyZW50LnNoCisrKyBiL3QvdDkxMDQtZ2l0LXN2bi1mb2xsb3ctcGFyZW50LnNoCkBAIC0zLDcgKzMsNyBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMDYgRXJpYyBXb25nCiAjCiAKLXRlc3RfZGVzY3JpcHRpb249J2dpdC1zdm4gZmV0Y2hpbmcnCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc3ZuIGZldGNoaW5nJwogLiAuL2xpYi1naXQtc3ZuLnNoCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luaXRpYWxpemUgcmVwbycgJwpAQCAtMjcsOCArMjcsOCBAQAogCScKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5pdCBhbmQgZmV0Y2ggYSBtb3ZlZCBkaXJlY3RvcnknICcKLQlnaXQtc3ZuIGluaXQgLS1taW5pbWl6ZS11cmwgLWkgdGh1bmsgIiRzdm5yZXBvIi90aHVuayAmJgotCWdpdC1zdm4gZmV0Y2ggLWkgdGh1bmsgJiYKKwlnaXQgc3ZuIGluaXQgLS1taW5pbWl6ZS11cmwgLWkgdGh1bmsgIiRzdm5yZXBvIi90aHVuayAmJgorCWdpdCBzdm4gZmV0Y2ggLWkgdGh1bmsgJiYKIAl0ZXN0ICJgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL3JlbW90ZXMvdGh1bmtAMmAiIFwKICAgICAgICAgICAgPSAiYGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL3RodW5rfjFgIiAmJgogICAgICAgICB0ZXN0ICJgZ2l0IGNhdC1maWxlIGJsb2IgcmVmcy9yZW1vdGVzL3RodW5rOnJlYWRtZSB8XApAQCAtNDMsNyArNDMsNyBAQAogICAgICAgICAgIHRydW5rOnJlZnMvcmVtb3Rlcy9zdm4vdHJ1bmsgJiYKICAgICAgICAgZ2l0IGNvbmZpZyAtLWFkZCBzdm4tcmVtb3RlLnN2bi5mZXRjaCBcCiAgICAgICAgICAgdGh1bms6cmVmcy9yZW1vdGVzL3N2bi90aHVuayAmJgotICAgICAgICBnaXQtc3ZuIGZldGNoIC1pIHN2bi90aHVuayAmJgorICAgICAgICBnaXQgc3ZuIGZldGNoIC1pIHN2bi90aHVuayAmJgogCXRlc3QgImBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy9zdm4vdHJ1bmtgIiBcCiAgICAgICAgICAgID0gImBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy9zdm4vdGh1bmt+MWAiICYmCiAgICAgICAgIHRlc3QgImBnaXQgY2F0LWZpbGUgYmxvYiByZWZzL3JlbW90ZXMvc3ZuL3RodW5rOnJlYWRtZSB8XApAQCAtNTcsOCArNTcsOCBAQAogICAgICAgICAgICAgICAgLXIyICIkc3ZucmVwbyIvdHJ1bmsgIiRzdm5yZXBvIi9qdW5rKSAmJgogICAgICAgICBnaXQgY29uZmlnIC0tYWRkIHN2bi1yZW1vdGUuc3ZuLmZldGNoIFwKICAgICAgICAgICBqdW5rOnJlZnMvcmVtb3Rlcy9zdm4vanVuayAmJgotICAgICAgICBnaXQtc3ZuIGZldGNoIC1pIHN2bi90aHVuayAmJgotICAgICAgICBnaXQtc3ZuIGZldGNoIC1pIHN2bi9qdW5rICYmCisgICAgICAgIGdpdCBzdm4gZmV0Y2ggLWkgc3ZuL3RodW5rICYmCisgICAgICAgIGdpdCBzdm4gZmV0Y2ggLWkgc3ZuL2p1bmsgJiYKICAgICAgICAgdGVzdCAteiAiYGdpdCBkaWZmIHN2bi9qdW5rIHN2bi90cnVua2AiICYmCiAgICAgICAgIHRlc3QgImBnaXQgbWVyZ2UtYmFzZSBzdm4vanVuayBzdm4vdHJ1bmtgIiBcCiAgICAgICAgICAgID0gImBnaXQgcmV2LXBhcnNlIHN2bi90cnVua2AiCkBAIC02OSw5ICs2OSw5IEBACiAgICAgICAgIGVjaG8gaGkgPiBpbXBvcnQvdHJ1bmsvdGh1bmsvYnVtcC90aHVkL2ZpbGUgJiYKICAgICAgICAgc3ZuIGltcG9ydCAtbSAiaW1wb3J0IGEgbGFyZ2VyIHBhcmVudCIgaW1wb3J0ICIkc3ZucmVwbyIvbGFyZ2VyLXBhcmVudCAmJgogICAgICAgICBzdm4gY3AgLW0gImhpIiAiJHN2bnJlcG8iL2xhcmdlci1wYXJlbnQgIiRzdm5yZXBvIi9hbm90aGVyLWxhcmdlciAmJgotICAgICAgICBnaXQtc3ZuIGluaXQgLS1taW5pbWl6ZS11cmwgLWkgbGFyZ2VyIFwKKyAgICAgICAgZ2l0IHN2biBpbml0IC0tbWluaW1pemUtdXJsIC1pIGxhcmdlciBcCiAgICAgICAgICAgIiRzdm5yZXBvIi9hbm90aGVyLWxhcmdlci90cnVuay90aHVuay9idW1wL3RodWQgJiYKLSAgICAgICAgZ2l0LXN2biBmZXRjaCAtaSBsYXJnZXIgJiYKKyAgICAgICAgZ2l0IHN2biBmZXRjaCAtaSBsYXJnZXIgJiYKICAgICAgICAgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL3JlbW90ZXMvbGFyZ2VyICYmCiAgICAgICAgIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgXAogICAgICAgICAgICByZWZzL3JlbW90ZXMvbGFyZ2VyLXBhcmVudC90cnVuay90aHVuay9idW1wL3RodWQgJiYKQEAgLTkyLDE1ICs5MiwxNSBAQAogICAgICAgICAgICAgICAgIGNkIC4uCiAgICAgICAgIHN2biBta2RpciAtbSAibmV3IGdsb2IgYXQgdG9wIGxldmVsIiAiJHN2bnJlcG8iL2dsb2IgJiYKICAgICAgICAgc3ZuIG12IC1tICJtb3ZlIGJsb2IgZG93biBhIGxldmVsIiAiJHN2bnJlcG8iL2Jsb2IgIiRzdm5yZXBvIi9nbG9iL2Jsb2IgJiYKLSAgICAgICAgZ2l0LXN2biBpbml0IC0tbWluaW1pemUtdXJsIC1pIGJsb2IgIiRzdm5yZXBvIi9nbG9iL2Jsb2IgJiYKLSAgICAgICAgZ2l0LXN2biBmZXRjaCAtaSBibG9iCisgICAgICAgIGdpdCBzdm4gaW5pdCAtLW1pbmltaXplLXVybCAtaSBibG9iICIkc3ZucmVwbyIvZ2xvYi9ibG9iICYmCisgICAgICAgIGdpdCBzdm4gZmV0Y2ggLWkgYmxvYgogICAgICAgICAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZvbGxvdyBkZWxldGVkIGRpcmVjdG9yeScgJwogCXN2biBtdiAtbSAiYnllISIgIiRzdm5yZXBvIi9nbG9iL2Jsb2IvaGkgIiRzdm5yZXBvIi9nbG9iL2Jsb2IvYnllICYmCiAJc3ZuIHJtIC1tICJyZW1vdmUgZ2xvYiIgIiRzdm5yZXBvIi9nbG9iICYmCi0JZ2l0LXN2biBpbml0IC0tbWluaW1pemUtdXJsIC1pIGdsb2IgIiRzdm5yZXBvIi9nbG9iICYmCi0JZ2l0LXN2biBmZXRjaCAtaSBnbG9iICYmCisJZ2l0IHN2biBpbml0IC0tbWluaW1pemUtdXJsIC1pIGdsb2IgIiRzdm5yZXBvIi9nbG9iICYmCisJZ2l0IHN2biBmZXRjaCAtaSBnbG9iICYmCiAJdGVzdCAiYGdpdCBjYXQtZmlsZSBibG9iIHJlZnMvcmVtb3Rlcy9nbG9iOmJsb2IvYnllYCIgPSBoaSAmJgogCXRlc3QgImBnaXQgbHMtdHJlZSByZWZzL3JlbW90ZXMvZ2xvYiB8IHdjIC1sIGAiIC1lcSAxCiAJJwpAQCAtMTI5LDkgKzEyOSw5IEBACiAJICBwb2tlIG5hdGl2ZS90L2MudCAmJgogCSAgc3ZuIGNvbW1pdCAtbSAicmVvcmcgdGVzdCIgJiYKIAljZCAuLiAmJgotCWdpdC1zdm4gaW5pdCAtLW1pbmltaXplLXVybCAtaSByOTI3MC10IFwKKwlnaXQgc3ZuIGluaXQgLS1taW5pbWl6ZS11cmwgLWkgcjkyNzAtdCBcCiAJICAiJHN2bnJlcG8iL3I5MjcwL3RydW5rL3N1YnZlcnNpb24vYmluZGluZ3Mvc3dpZy9wZXJsL25hdGl2ZS90ICYmCi0JZ2l0LXN2biBmZXRjaCAtaSByOTI3MC10ICYmCisJZ2l0IHN2biBmZXRjaCAtaSByOTI3MC10ICYmCiAJdGVzdCBgZ2l0IHJldi1saXN0IHI5MjcwLXQgfCB3YyAtbGAgLWVxIDIgJiYKIAl0ZXN0ICJgZ2l0IGxzLXRyZWUgLS1uYW1lLW9ubHkgcjkyNzAtdH4xYCIgPSBcCiAJICAgICAiYGdpdCBscy10cmVlIC0tbmFtZS1vbmx5IHI5MjcwLXRgIgpAQCAtMTM5LDkgKzEzOSw5IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgInRyYWNrIGluaXRpYWwgY2hhbmdlIGlmIGl0IHdhcyBvbmx5IG1hZGUgdG8gcGFyZW50IiAnCiAJc3ZuIGNwIC1tICJ3aGVlZSEiICIkc3ZucmVwbyIvcjkyNzAvdHJ1bmsgIiRzdm5yZXBvIi9yOTI3MC9kcnVuayAmJgotCWdpdC1zdm4gaW5pdCAtLW1pbmltaXplLXVybCAtaSByOTI3MC1kIFwKKwlnaXQgc3ZuIGluaXQgLS1taW5pbWl6ZS11cmwgLWkgcjkyNzAtZCBcCiAJICAiJHN2bnJlcG8iL3I5MjcwL2RydW5rL3N1YnZlcnNpb24vYmluZGluZ3Mvc3dpZy9wZXJsL25hdGl2ZS90ICYmCi0JZ2l0LXN2biBmZXRjaCAtaSByOTI3MC1kICYmCisJZ2l0IHN2biBmZXRjaCAtaSByOTI3MC1kICYmCiAJdGVzdCBgZ2l0IHJldi1saXN0IHI5MjcwLWQgfCB3YyAtbGAgLWVxIDMgJiYKIAl0ZXN0ICJgZ2l0IGxzLXRyZWUgLS1uYW1lLW9ubHkgcjkyNzAtdGAiID0gXAogCSAgICAgImBnaXQgbHMtdHJlZSAtLW5hbWUtb25seSByOTI3MC1kYCIgJiYKQEAgLTE5MywxOSArMTkzLDE5IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgInRyYWNrIG11bHRpLXBhcmVudCBwYXRocyIgJwogCXN2biBjcCAtbSAicmVzdXJyZWN0IC9nbG9iIiAiJHN2bnJlcG8iL3I5MjcwICIkc3ZucmVwbyIvZ2xvYiAmJgotCWdpdC1zdm4gbXVsdGktZmV0Y2ggJiYKKwlnaXQgc3ZuIG11bHRpLWZldGNoICYmCiAJdGVzdCBgZ2l0IGNhdC1maWxlIGNvbW1pdCByZWZzL3JlbW90ZXMvZ2xvYiB8IFwKIAkgICAgICAgZ3JlcCAiXnBhcmVudCAiIHwgd2MgLWxgIC1lcSAyCiAJJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICJtdWx0aS1mZXRjaCBjb250aW51ZXMgdG8gd29yayIgIgotCWdpdC1zdm4gbXVsdGktZmV0Y2gKKwlnaXQgc3ZuIG11bHRpLWZldGNoCiAJIgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICJtdWx0aS1mZXRjaCB3b3JrcyBvZmYgYSAnY2xlYW4nIHJlcG9zaXRvcnkiICcKIAlybSAtciAiJEdJVF9ESVIvc3ZuIiAiJEdJVF9ESVIvcmVmcy9yZW1vdGVzIiAiJEdJVF9ESVIvbG9ncyIgJiYKIAlta2RpciAiJEdJVF9ESVIvc3ZuIiAmJgotCWdpdC1zdm4gbXVsdGktZmV0Y2gKKwlnaXQgc3ZuIG11bHRpLWZldGNoCiAJJwogCiB0ZXN0X2RlYnVnICdnaXRrIC0tYWxsICYnCmRpZmYgLS1naXQgYS90L3Q5MTA1LWdpdC1zdm4tY29tbWl0LWRpZmYuc2ggYi90L3Q5MTA1LWdpdC1zdm4tY29tbWl0LWRpZmYuc2gKaW5kZXggNjMyMzAzNi4uYmE5OWFiYiAxMDA3NTUKLS0tIGEvdC90OTEwNS1naXQtc3ZuLWNvbW1pdC1kaWZmLnNoCisrKyBiL3QvdDkxMDUtZ2l0LXN2bi1jb21taXQtZGlmZi5zaApAQCAtMSw3ICsxLDcgQEAKICMhL2Jpbi9zaAogIwogIyBDb3B5cmlnaHQgKGMpIDIwMDYgRXJpYyBXb25nCi10ZXN0X2Rlc2NyaXB0aW9uPSdnaXQtc3ZuIGNvbW1pdC1kaWZmJwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHN2biBjb21taXQtZGlmZicKIC4gLi9saWItZ2l0LXN2bi5zaAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbml0aWFsaXplIHJlcG8nICcKQEAgLTI2LDE2ICsyNiwxNiBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IHRoZSBjb21taXQtZGlmZiBjb21tYW5kJyAnCiAJdGVzdCAtbiAiJHByZXYiICYmIHRlc3QgLW4gIiRoZWFkIiAmJgotCWdpdC1zdm4gY29tbWl0LWRpZmYgLXIxICIkcHJldiIgIiRoZWFkIiAiJHN2bnJlcG8iICYmCisJZ2l0IHN2biBjb21taXQtZGlmZiAtcjEgIiRwcmV2IiAiJGhlYWQiICIkc3ZucmVwbyIgJiYKIAlzdm4gY28gIiRzdm5yZXBvIiB3YyAmJgogCWNtcCByZWFkbWUgd2MvcmVhZG1lCiAJJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdjb21taXQtZGlmZiB0byBhIHN1Yi1kaXJlY3RvcnkgKHdpdGggZ2l0LXN2biBjb25maWcpJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb21taXQtZGlmZiB0byBhIHN1Yi1kaXJlY3RvcnkgKHdpdGggZ2l0IHN2biBjb25maWcpJyAnCiAJc3ZuIGltcG9ydCAtbSAic3ViLWRpcmVjdG9yeSIgaW1wb3J0ICIkc3ZucmVwbyIvc3ViZGlyICYmCi0JZ2l0LXN2biBpbml0IC0tbWluaW1pemUtdXJsICIkc3ZucmVwbyIvc3ViZGlyICYmCi0JZ2l0LXN2biBmZXRjaCAmJgotCWdpdC1zdm4gY29tbWl0LWRpZmYgLXIzICIkcHJldiIgIiRoZWFkIiAmJgorCWdpdCBzdm4gaW5pdCAtLW1pbmltaXplLXVybCAiJHN2bnJlcG8iL3N1YmRpciAmJgorCWdpdCBzdm4gZmV0Y2ggJiYKKwlnaXQgc3ZuIGNvbW1pdC1kaWZmIC1yMyAiJHByZXYiICIkaGVhZCIgJiYKIAlzdm4gY2F0ICIkc3ZucmVwbyIvc3ViZGlyL3JlYWRtZSA+IHJlYWRtZS4yICYmCiAJY21wIHJlYWRtZSByZWFkbWUuMgogCScKZGlmZiAtLWdpdCBhL3QvdDkxMDYtZ2l0LXN2bi1jb21taXQtZGlmZi1jbG9iYmVyLnNoIGIvdC90OTEwNi1naXQtc3ZuLWNvbW1pdC1kaWZmLWNsb2JiZXIuc2gKaW5kZXggODM4OTZlOS4uNmViMGZkOCAxMDA3NTUKLS0tIGEvdC90OTEwNi1naXQtc3ZuLWNvbW1pdC1kaWZmLWNsb2JiZXIuc2gKKysrIGIvdC90OTEwNi1naXQtc3ZuLWNvbW1pdC1kaWZmLWNsb2JiZXIuc2gKQEAgLTEsNyArMSw3IEBACiAjIS9iaW4vc2gKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2IEVyaWMgV29uZwotdGVzdF9kZXNjcmlwdGlvbj0nZ2l0LXN2biBjb21taXQtZGlmZiBjbG9iYmVyJwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHN2biBjb21taXQtZGlmZiBjbG9iYmVyJwogLiAuL2xpYi1naXQtc3ZuLnNoCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luaXRpYWxpemUgcmVwbycgJwpAQCAtMjcsNyArMjcsNyBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY29tbWl0IGNvbmZsaWN0aW5nIGNoYW5nZSBmcm9tIGdpdCcgJwogCWVjaG8gc2Vjb25kIGxpbmUgZnJvbSBnaXQgPj4gZmlsZSAmJgogCWdpdCBjb21taXQgLWEgLW0gInNlY29uZCBsaW5lIGZyb20gZ2l0IiAmJgotCXRlc3RfbXVzdF9mYWlsIGdpdC1zdm4gY29tbWl0LWRpZmYgLXIxIEhFQUR+MSBIRUFEICIkc3ZucmVwbyIKKwl0ZXN0X211c3RfZmFpbCBnaXQgc3ZuIGNvbW1pdC1kaWZmIC1yMSBIRUFEfjEgSEVBRCAiJHN2bnJlcG8iCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbW1pdCBjb21wbGVtZW50aW5nIGNoYW5nZSBmcm9tIGdpdCcgJwpAQCAtMzYsMTMgKzM2LDEzIEBACiAJZ2l0IGNvbW1pdCAtYSAtbSAic2Vjb25kIGxpbmUgZnJvbSBzdm4iICYmCiAJZWNobyB0aGlyZCBsaW5lIGZyb20gZ2l0ID4+IGZpbGUgJiYKIAlnaXQgY29tbWl0IC1hIC1tICJ0aGlyZCBsaW5lIGZyb20gZ2l0IiAmJgotCWdpdC1zdm4gY29tbWl0LWRpZmYgLXIyIEhFQUR+MSBIRUFEICIkc3ZucmVwbyIKKwlnaXQgc3ZuIGNvbW1pdC1kaWZmIC1yMiBIRUFEfjEgSEVBRCAiJHN2bnJlcG8iCiAJJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdkY29tbWl0IGZhaWxzIHRvIGNvbW1pdCBiZWNhdXNlIG9mIGNvbmZsaWN0JyAnCi0JZ2l0LXN2biBpbml0ICIkc3ZucmVwbyIgJiYKLQlnaXQtc3ZuIGZldGNoICYmCi0JZ2l0IHJlc2V0IC0taGFyZCByZWZzL3JlbW90ZXMvZ2l0LXN2biAmJgorCWdpdCBzdm4gaW5pdCAiJHN2bnJlcG8iICYmCisJZ2l0IHN2biBmZXRjaCAmJgorCWdpdCByZXNldCAtLWhhcmQgcmVmcy8ke3JlbW90ZXNfZ2l0X3N2bn0gJiYKIAlzdm4gY28gIiRzdm5yZXBvIiB0LnN2biAmJgogCWNkIHQuc3ZuICYmCiAJZWNobyBmb3VydGggbGluZSBmcm9tIHN2biA+PiBmaWxlICYmCkBAIC01MiwxOCArNTIsMTggQEAKIAlybSAtcmYgdC5zdm4gJiYKIAllY2hvICJmb3VydGggbGluZSBmcm9tIGdpdCIgPj4gZmlsZSAmJgogCWdpdCBjb21taXQgLWEgLW0gImZvdXJ0aCBsaW5lIGZyb20gZ2l0IiAmJgotCXRlc3RfbXVzdF9mYWlsIGdpdC1zdm4gZGNvbW1pdAorCXRlc3RfbXVzdF9mYWlsIGdpdCBzdm4gZGNvbW1pdAogCScKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZGNvbW1pdCBkb2VzIHRoZSBzdm4gZXF1aXZhbGVudCBvZiBhbiBpbmRleCBtZXJnZScgIgotCWdpdCByZXNldCAtLWhhcmQgcmVmcy9yZW1vdGVzL2dpdC1zdm4gJiYKKwlnaXQgcmVzZXQgLS1oYXJkIHJlZnMvJHtyZW1vdGVzX2dpdF9zdm59ICYmCiAJZWNobyAnaW5kZXggbWVyZ2UnID4gZmlsZTIgJiYKIAlnaXQgdXBkYXRlLWluZGV4IC0tYWRkIGZpbGUyICYmCiAJZ2l0IGNvbW1pdCAtYSAtbSAnaW5kZXggbWVyZ2UnICYmCiAJZWNobyAnbW9yZSBjaGFuZ2VzJyA+PiBmaWxlMiAmJgogCWdpdCB1cGRhdGUtaW5kZXggZmlsZTIgJiYKIAlnaXQgY29tbWl0IC1hIC1tICdtb3JlIGNoYW5nZXMnICYmCi0JZ2l0LXN2biBkY29tbWl0CisJZ2l0IHN2biBkY29tbWl0CiAJIgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb21taXQgYW5vdGhlciBjaGFuZ2UgZnJvbSBzdm4gc2lkZScgJwpAQCAtNzYsOCArNzYsOCBAQAogCXJtIC1yZiB0LnN2bgogCScKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnbXVsdGlwbGUgZGNvbW1pdCBmcm9tIGdpdC1zdm4gd2lsbCBub3QgY2xvYmJlciBzdm4nICIKLQlnaXQgcmVzZXQgLS1oYXJkIHJlZnMvcmVtb3Rlcy9naXQtc3ZuICYmCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtdWx0aXBsZSBkY29tbWl0IGZyb20gZ2l0IHN2biB3aWxsIG5vdCBjbG9iYmVyIHN2bicgIgorCWdpdCByZXNldCAtLWhhcmQgcmVmcy8ke3JlbW90ZXNfZ2l0X3N2bn0gJiYKIAllY2hvIG5ldyBmaWxlID4+IG5ldy1maWxlICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCBuZXctZmlsZSAmJgogCWdpdCBjb21taXQgLWEgLW0gJ25ldyBmaWxlJyAmJgpkaWZmIC0tZ2l0IGEvdC90OTEwNi1naXQtc3ZuLWRjb21taXQtY2xvYmJlci1zZXJpZXMuc2ggYi90L3Q5MTA2LWdpdC1zdm4tZGNvbW1pdC1jbG9iYmVyLXNlcmllcy5zaAppbmRleCBiYzM3ZGI5Li5mZDE4NTAxIDEwMDc1NQotLS0gYS90L3Q5MTA2LWdpdC1zdm4tZGNvbW1pdC1jbG9iYmVyLXNlcmllcy5zaAorKysgYi90L3Q5MTA2LWdpdC1zdm4tZGNvbW1pdC1jbG9iYmVyLXNlcmllcy5zaApAQCAtMSw3ICsxLDcgQEAKICMhL2Jpbi9zaAogIwogIyBDb3B5cmlnaHQgKGMpIDIwMDcgRXJpYyBXb25nCi10ZXN0X2Rlc2NyaXB0aW9uPSdnaXQtc3ZuIGRjb21taXQgY2xvYmJlciBzZXJpZXMnCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc3ZuIGRjb21taXQgY2xvYmJlciBzZXJpZXMnCiAuIC4vbGliLWdpdC1zdm4uc2gKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5pdGlhbGl6ZSByZXBvJyAnCmRpZmYgLS1naXQgYS90L3Q5MTA3LWdpdC1zdm4tbWlncmF0ZS5zaCBiL3QvdDkxMDctZ2l0LXN2bi1taWdyYXRlLnNoCmluZGV4IGQ5YjU1M2EuLmFjYWQxNmEgMTAwNzU1Ci0tLSBhL3QvdDkxMDctZ2l0LXN2bi1taWdyYXRlLnNoCisrKyBiL3QvdDkxMDctZ2l0LXN2bi1taWdyYXRlLnNoCkBAIC0xLDYgKzEsNiBAQAogIyEvYmluL3NoCiAjIENvcHlyaWdodCAoYykgMjAwNiBFcmljIFdvbmcKLXRlc3RfZGVzY3JpcHRpb249J2dpdC1zdm4gbWV0YWRhdGEgbWlncmF0aW9ucyBmcm9tIHByZXZpb3VzIHZlcnNpb25zJwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHN2biBtZXRhZGF0YSBtaWdyYXRpb25zIGZyb20gcHJldmlvdXMgdmVyc2lvbnMnCiAuIC4vbGliLWdpdC1zdm4uc2gKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgb2xkLWxvb2tpbmcgbWV0YWRhdGEnICcKQEAgLTE0LDM0ICsxNCwzNCBAQAogCQlkb25lICYmIFwKIAkJc3ZuIGltcG9ydCAtbSB0ZXN0IC4gIiRzdm5yZXBvIgogCQljZCAuLiAmJgotCWdpdC1zdm4gaW5pdCAiJHN2bnJlcG8iICYmCi0JZ2l0LXN2biBmZXRjaCAmJgorCWdpdCBzdm4gaW5pdCAiJHN2bnJlcG8iICYmCisJZ2l0IHN2biBmZXRjaCAmJgogCW12ICIkR0lUX0RJUiIvc3ZuLyogIiRHSVRfRElSIi8gJiYKIAltdiAiJEdJVF9ESVIiL3N2bi8ubWV0YWRhdGEgIiRHSVRfRElSIi8gJiYKIAlybWRpciAiJEdJVF9ESVIiL3N2biAmJgotCWdpdCB1cGRhdGUtcmVmIHJlZnMvaGVhZHMvZ2l0LXN2bi1IRUFEIHJlZnMvcmVtb3Rlcy9naXQtc3ZuICYmCi0JZ2l0IHVwZGF0ZS1yZWYgcmVmcy9oZWFkcy9zdm4tSEVBRCByZWZzL3JlbW90ZXMvZ2l0LXN2biAmJgotCWdpdCB1cGRhdGUtcmVmIC1kIHJlZnMvcmVtb3Rlcy9naXQtc3ZuIHJlZnMvcmVtb3Rlcy9naXQtc3ZuCisJZ2l0IHVwZGF0ZS1yZWYgcmVmcy9oZWFkcy9naXQtc3ZuLUhFQUQgcmVmcy8ke3JlbW90ZXNfZ2l0X3N2bn0gJiYKKwlnaXQgdXBkYXRlLXJlZiByZWZzL2hlYWRzL3N2bi1IRUFEIHJlZnMvJHtyZW1vdGVzX2dpdF9zdm59ICYmCisJZ2l0IHVwZGF0ZS1yZWYgLWQgcmVmcy8ke3JlbW90ZXNfZ2l0X3N2bn0gcmVmcy8ke3JlbW90ZXNfZ2l0X3N2bn0KIAknCiAKIGhlYWQ9YGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9oZWFkcy9naXQtc3ZuLUhFQUReMGAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdC1zdm4tSEVBRCBpcyBhIHJlYWwgSEVBRCcgInRlc3QgLW4gJyRoZWFkJyIKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5pdGlhbGl6ZSBvbGQtc3R5bGUgKHYwKSBnaXQtc3ZuIGxheW91dCcgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5pdGlhbGl6ZSBvbGQtc3R5bGUgKHYwKSBnaXQgc3ZuIGxheW91dCcgJwogCW1rZGlyIC1wICIkR0lUX0RJUiIvZ2l0LXN2bi9pbmZvICIkR0lUX0RJUiIvc3ZuL2luZm8gJiYKIAllY2hvICIkc3ZucmVwbyIgPiAiJEdJVF9ESVIiL2dpdC1zdm4vaW5mby91cmwgJiYKIAllY2hvICIkc3ZucmVwbyIgPiAiJEdJVF9ESVIiL3N2bi9pbmZvL3VybCAmJgotCWdpdC1zdm4gbWlncmF0ZSAmJgotCSEgdGVzdCAtZCAiJEdJVF9ESVIiL2dpdC1zdm4gJiYKLQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy9naXQtc3ZuXjAgJiYKKwlnaXQgc3ZuIG1pZ3JhdGUgJiYKKwkhIHRlc3QgLWQgIiRHSVRfRElSIi9naXQgc3ZuICYmCisJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzLyR7cmVtb3Rlc19naXRfc3ZufV4wICYmCiAJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL3JlbW90ZXMvc3ZuXjAgJiYKIAl0ZXN0ICIkKGdpdCBjb25maWcgLS1nZXQgc3ZuLXJlbW90ZS5zdm4udXJsKSIgPSAiJHN2bnJlcG8iICYmCiAJdGVzdCBgZ2l0IGNvbmZpZyAtLWdldCBzdm4tcmVtb3RlLnN2bi5mZXRjaGAgPSBcCi0gICAgICAgICAgICAgIjpyZWZzL3JlbW90ZXMvZ2l0LXN2biIKKyAgICAgICAgICAgICAiOnJlZnMvJHtyZW1vdGVzX2dpdF9zdm59IgogCScKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5pdGlhbGl6ZSBhIG11bHRpLXJlcG9zaXRvcnkgcmVwbycgJwotCWdpdC1zdm4gaW5pdCAiJHN2bnJlcG8iIC1UIHRydW5rIC10IHRhZ3MgLWIgYnJhbmNoZXMgJiYKKwlnaXQgc3ZuIGluaXQgIiRzdm5yZXBvIiAtVCB0cnVuayAtdCB0YWdzIC1iIGJyYW5jaGVzICYmCiAJZ2l0IGNvbmZpZyAtLWdldC1hbGwgc3ZuLXJlbW90ZS5zdm4uZmV0Y2ggPiBmZXRjaC5vdXQgJiYKIAlncmVwICJedHJ1bms6cmVmcy9yZW1vdGVzL3RydW5rJCIgZmV0Y2gub3V0ICYmCiAJdGVzdCAtbiAiYGdpdCBjb25maWcgLS1nZXQgc3ZuLXJlbW90ZS5zdm4uYnJhbmNoZXMgXApAQCAtNjEsNyArNjEsNyBAQAogCiAjIHJlZnMgc2hvdWxkIGFsbCBiZSBkaWZmZXJlbnQsIGJ1dCB0aGUgdHJlZXMgc2hvdWxkIGFsbCBiZSB0aGUgc2FtZToKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ211bHRpLWZldGNoIHdvcmtzIG9uIHBhcnRpYWwgdXJscyArIHBhdGhzJyAiCi0JZ2l0LXN2biBtdWx0aS1mZXRjaCAmJgorCWdpdCBzdm4gbXVsdGktZmV0Y2ggJiYKIAlmb3IgaSBpbiB0cnVuayBhIGIgdGFncy8wLjEgdGFncy8wLjIgdGFncy8wLjM7IGRvCiAJCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL1wkaV4wID4+IHJlZnMub3V0IHx8IGV4aXQgMTsKIAkgICAgZG9uZSAmJgpAQCAtODUsNyArODUsNyBAQAogCQkoIG1rZGlyIC1wICIkR0lUX0RJUiIvc3ZuLyRyZWYvaW5mby8gJiYKIAkJZWNobyAiJHN2bnJlcG8iJHBhdGggPiAiJEdJVF9ESVIiL3N2bi8kcmVmL2luZm8vdXJsICkgfHwgZXhpdCAxOwogCWRvbmUgJiYKLQlnaXQtc3ZuIG1pZ3JhdGUgLS1taW5pbWl6ZSAmJgorCWdpdCBzdm4gbWlncmF0ZSAtLW1pbmltaXplICYmCiAJdGVzdCAteiAiYGdpdCBjb25maWcgLWwgfGdyZXAgLXYgIl5zdm4tcmVtb3RlXC5naXQtc3ZuXC4iYCIgJiYKIAlnaXQgY29uZmlnIC0tZ2V0LWFsbCBzdm4tcmVtb3RlLnN2bi5mZXRjaCA+IGZldGNoLm91dCAmJgogCWdyZXAgIl50cnVuazpyZWZzL3JlbW90ZXMvdHJ1bmskIiBmZXRjaC5vdXQgJiYKQEAgLTk0LDExICs5NCwxMSBAQAogCWdyZXAgIl50YWdzLzBcLjE6cmVmcy9yZW1vdGVzL3RhZ3MvMFwuMSQiIGZldGNoLm91dCAmJgogCWdyZXAgIl50YWdzLzBcLjI6cmVmcy9yZW1vdGVzL3RhZ3MvMFwuMiQiIGZldGNoLm91dCAmJgogCWdyZXAgIl50YWdzLzBcLjM6cmVmcy9yZW1vdGVzL3RhZ3MvMFwuMyQiIGZldGNoLm91dAotCWdyZXAgIl46cmVmcy9yZW1vdGVzL2dpdC1zdm4iIGZldGNoLm91dAorCWdyZXAgIl46cmVmcy8ke3JlbW90ZXNfZ2l0X3N2bn0iIGZldGNoLm91dAogCScKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAgIi5yZXZfZGIgYXV0by1jb252ZXJ0ZWQgdG8gLnJldl9tYXAuVVVJRCIgJwotCWdpdC1zdm4gZmV0Y2ggLWkgdHJ1bmsgJiYKKwlnaXQgc3ZuIGZldGNoIC1pIHRydW5rICYmCiAJdGVzdCAteiAiJChscyAiJEdJVF9ESVIiL3N2bi90cnVuay8ucmV2X2RiLiogMj4vZGV2L251bGwpIiAmJgogCWV4cGVjdD0iJChscyAiJEdJVF9ESVIiL3N2bi90cnVuay8ucmV2X21hcC4qKSIgJiYKIAl0ZXN0IC1uICIkZXhwZWN0IiAmJgpAQCAtMTA2LDcgKzEwNiw3IEBACiAJY29udmVydF90b19yZXZfZGIgIiRleHBlY3QiICIkcmV2X2RiIiAmJgogCXJtIC1mICIkZXhwZWN0IiAmJgogCXRlc3QgLWYgIiRyZXZfZGIiICYmCi0JZ2l0LXN2biBmZXRjaCAtaSB0cnVuayAmJgorCWdpdCBzdm4gZmV0Y2ggLWkgdHJ1bmsgJiYKIAl0ZXN0IC16ICIkKGxzICIkR0lUX0RJUiIvc3ZuL3RydW5rLy5yZXZfZGIuKiAyPi9kZXYvbnVsbCkiICYmCiAJdGVzdCAhIC1lICIkR0lUX0RJUiIvc3ZuL3RydW5rLy5yZXZfZGIgJiYKIAl0ZXN0IC1mICIkZXhwZWN0IgpkaWZmIC0tZ2l0IGEvdC90OTEwOC1naXQtc3ZuLWdsb2Iuc2ggYi90L3Q5MTA4LWdpdC1zdm4tZ2xvYi5zaAppbmRleCA4Yjc5MmExLi5kODU4MmIxIDEwMDc1NQotLS0gYS90L3Q5MTA4LWdpdC1zdm4tZ2xvYi5zaAorKysgYi90L3Q5MTA4LWdpdC1zdm4tZ2xvYi5zaApAQCAtMSw2ICsxLDYgQEAKICMhL2Jpbi9zaAogIyBDb3B5cmlnaHQgKGMpIDIwMDcgRXJpYyBXb25nCi10ZXN0X2Rlc2NyaXB0aW9uPSdnaXQtc3ZuIGdsb2JiaW5nIHJlZnNwZWNzJwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHN2biBnbG9iYmluZyByZWZzcGVjcycKIC4gLi9saWItZ2l0LXN2bi5zaAogCiBjYXQgPiBleHBlY3QuZW5kIDw8RU9GCkBAIC00Niw3ICs0Niw3IEBACiAJICAgICAgICAgICAgICAgICAiYnJhbmNoZXMvKi9zcmMvYTpyZWZzL3JlbW90ZXMvYnJhbmNoZXMvKiIgJiYKIAlnaXQgY29uZmlnIC0tYWRkIHN2bi1yZW1vdGUuc3ZuLnRhZ3NcCiAJICAgICAgICAgICAgICAgICAidGFncy8qL3NyYy9hOnJlZnMvcmVtb3Rlcy90YWdzLyoiICYmCi0JZ2l0LXN2biBtdWx0aS1mZXRjaCAmJgorCWdpdCBzdm4gbXVsdGktZmV0Y2ggJiYKIAlnaXQgbG9nIC0tcHJldHR5PW9uZWxpbmUgcmVmcy9yZW1vdGVzL3RhZ3MvZW5kIHwgXAogCSAgICBzZWQgLWUgInMvXi5cezQxXH0vLyIgPiBvdXRwdXQuZW5kICYmCiAJdGVzdF9jbXAgZXhwZWN0LmVuZCBvdXRwdXQuZW5kICYmCkBAIC03NCw3ICs3NCw3IEBACiAJCXBva2UgdGFncy9lbmQvc3JjL2IvcmVhZG1lICYmCiAJCXN2biBjb21taXQgLW0gInRyeSB0byB0cnkiCiAJKSAmJgotCWdpdC1zdm4gZmV0Y2ggdHdvICYmCisJZ2l0IHN2biBmZXRjaCB0d28gJiYKIAl0ZXN0IGBnaXQgcmV2LWxpc3QgcmVmcy9yZW1vdGVzL3R3by90YWdzL2VuZCB8IHdjIC1sYCAtZXEgNiAmJgogCXRlc3QgYGdpdCByZXYtbGlzdCByZWZzL3JlbW90ZXMvdHdvL2JyYW5jaGVzL3N0YXJ0IHwgd2MgLWxgIC1lcSAzICYmCiAJdGVzdCBgZ2l0IHJldi1wYXJzZSByZWZzL3JlbW90ZXMvdHdvL2JyYW5jaGVzL3N0YXJ0fjJgID0gXApAQCAtMTA0LDcgKzEwNCw3IEBACiAJCXBva2UgdGFncy9lbmQvc3JjL2IvcmVhZG1lICYmCiAJCXN2biBjb21taXQgLW0gInRyeSB0byB0cnkiCiAJKSAmJgotCXRlc3RfbXVzdF9mYWlsIGdpdC1zdm4gZmV0Y2ggdGhyZWUgMj4gc3RkZXJyLnRocmVlICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHN2biBmZXRjaCB0aHJlZSAyPiBzdGRlcnIudGhyZWUgJiYKIAl0ZXN0X2NtcCBleHBlY3QudGhyZWUgc3RkZXJyLnRocmVlCiAJJwogCmRpZmYgLS1naXQgYS90L3Q5MTA4LWdpdC1zdm4tbXVsdGktZ2xvYi5zaCBiL3QvdDkxMDgtZ2l0LXN2bi1tdWx0aS1nbG9iLnNoCmluZGV4IDM1ODM3MjEuLjhmNzljM2YgMTAwNzU1Ci0tLSBhL3QvdDkxMDgtZ2l0LXN2bi1tdWx0aS1nbG9iLnNoCisrKyBiL3QvdDkxMDgtZ2l0LXN2bi1tdWx0aS1nbG9iLnNoCkBAIC0xLDYgKzEsNiBAQAogIyEvYmluL3NoCiAjIENvcHlyaWdodCAoYykgMjAwNyBFcmljIFdvbmcKLXRlc3RfZGVzY3JpcHRpb249J2dpdC1zdm4gZ2xvYmJpbmcgcmVmc3BlY3MnCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc3ZuIGdsb2JiaW5nIHJlZnNwZWNzJwogLiAuL2xpYi1naXQtc3ZuLnNoCiAKIGNhdCA+IGV4cGVjdC5lbmQgPDxFT0YKQEAgLTQ2LDcgKzQ2LDcgQEAKIAkgICAgICAgICAgICAgICAgICJicmFuY2hlcy8qLyovc3JjL2E6cmVmcy9yZW1vdGVzL2JyYW5jaGVzLyovKiIgJiYKIAlnaXQgY29uZmlnIC0tYWRkIHN2bi1yZW1vdGUuc3ZuLnRhZ3NcCiAJICAgICAgICAgICAgICAgICAidGFncy8qL3NyYy9hOnJlZnMvcmVtb3Rlcy90YWdzLyoiICYmCi0JZ2l0LXN2biBtdWx0aS1mZXRjaCAmJgorCWdpdCBzdm4gbXVsdGktZmV0Y2ggJiYKIAlnaXQgbG9nIC0tcHJldHR5PW9uZWxpbmUgcmVmcy9yZW1vdGVzL3RhZ3MvZW5kIHwgXAogCSAgICBzZWQgLWUgInMvXi5cezQxXH0vLyIgPiBvdXRwdXQuZW5kICYmCiAJdGVzdF9jbXAgZXhwZWN0LmVuZCBvdXRwdXQuZW5kICYmCkBAIC03NCw3ICs3NCw3IEBACiAJCXBva2UgdGFncy9lbmQvc3JjL2IvcmVhZG1lICYmCiAJCXN2biBjb21taXQgLW0gInRyeSB0byB0cnkiCiAJKSAmJgotCWdpdC1zdm4gZmV0Y2ggdHdvICYmCisJZ2l0IHN2biBmZXRjaCB0d28gJiYKIAl0ZXN0IGBnaXQgcmV2LWxpc3QgcmVmcy9yZW1vdGVzL3R3by90YWdzL2VuZCB8IHdjIC1sYCAtZXEgNiAmJgogCXRlc3QgYGdpdCByZXYtbGlzdCByZWZzL3JlbW90ZXMvdHdvL2JyYW5jaGVzL3YxL3N0YXJ0IHwgd2MgLWxgIC1lcSAzICYmCiAJdGVzdCBgZ2l0IHJldi1wYXJzZSByZWZzL3JlbW90ZXMvdHdvL2JyYW5jaGVzL3YxL3N0YXJ0fjJgID0gXApAQCAtMTIzLDcgKzEyMyw3IEBACiAJICAgICAgICAgICAgICAgICAiYnJhbmNoZXMvKi8qOnJlZnMvcmVtb3Rlcy9mb3VyL2JyYW5jaGVzLyovKiIgJiYKIAlnaXQgY29uZmlnIC0tYWRkIHN2bi1yZW1vdGUuZm91ci50YWdzIFwKIAkgICAgICAgICAgICAgICAgICJ0YWdzLyo6cmVmcy9yZW1vdGVzL2ZvdXIvdGFncy8qIiAmJgotCWdpdC1zdm4gZmV0Y2ggZm91ciAmJgorCWdpdCBzdm4gZmV0Y2ggZm91ciAmJgogCXRlc3QgYGdpdCByZXYtbGlzdCByZWZzL3JlbW90ZXMvZm91ci90YWdzL25leHQgfCB3YyAtbGAgLWVxIDUgJiYKIAl0ZXN0IGBnaXQgcmV2LWxpc3QgcmVmcy9yZW1vdGVzL2ZvdXIvYnJhbmNoZXMvdjIvc3RhcnQgfCB3YyAtbGAgLWVxIDMgJiYKIAl0ZXN0IGBnaXQgcmV2LXBhcnNlIHJlZnMvcmVtb3Rlcy9mb3VyL2JyYW5jaGVzL3YyL3N0YXJ0fjJgID0gXApAQCAtMTUzLDcgKzE1Myw3IEBACiAJCXBva2UgdGFncy9lbmQvc3JjL2IvcmVhZG1lICYmCiAJCXN2biBjb21taXQgLW0gInRyeSB0byB0cnkiCiAJKSAmJgotCXRlc3RfbXVzdF9mYWlsIGdpdC1zdm4gZmV0Y2ggdGhyZWUgMj4gc3RkZXJyLnRocmVlICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHN2biBmZXRjaCB0aHJlZSAyPiBzdGRlcnIudGhyZWUgJiYKIAl0ZXN0X2NtcCBleHBlY3QudGhyZWUgc3RkZXJyLnRocmVlCiAJJwogCmRpZmYgLS1naXQgYS90L3Q5MTEwLWdpdC1zdm4tdXNlLXN2bS1wcm9wcy5zaCBiL3QvdDkxMTAtZ2l0LXN2bi11c2Utc3ZtLXByb3BzLnNoCmluZGV4IDA0ZDJhNjUuLmEwNmU0YzUgMTAwNzU1Ci0tLSBhL3QvdDkxMTAtZ2l0LXN2bi11c2Utc3ZtLXByb3BzLnNoCisrKyBiL3QvdDkxMTAtZ2l0LXN2bi11c2Utc3ZtLXByb3BzLnNoCkBAIC0zLDE4ICszLDE4IEBACiAjIENvcHlyaWdodCAoYykgMjAwNyBFcmljIFdvbmcKICMKIAotdGVzdF9kZXNjcmlwdGlvbj0nZ2l0LXN2biB1c2VTdm1Qcm9wcyB0ZXN0JwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHN2biB1c2VTdm1Qcm9wcyB0ZXN0JwogCiAuIC4vbGliLWdpdC1zdm4uc2gKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbG9hZCBzdm0gcmVwbycgJwotCXN2bmFkbWluIGxvYWQgLXEgIiRyYXdzdm5yZXBvIiA8IC4uL3Q5MTEwL3N2bS5kdW1wICYmCi0JZ2l0LXN2biBpbml0IC0tbWluaW1pemUtdXJsIC1SIGFyciAtaSBiYXIgIiRzdm5yZXBvIi9taXJyb3IvYXJyICYmCi0JZ2l0LXN2biBpbml0IC0tbWluaW1pemUtdXJsIC1SIGFyZ2ggLWkgZGlyICIkc3ZucmVwbyIvbWlycm9yL2FyZ2ggJiYKLQlnaXQtc3ZuIGluaXQgLS1taW5pbWl6ZS11cmwgLVIgYXJnaCAtaSBlIFwKKwlzdm5hZG1pbiBsb2FkIC1xICIkcmF3c3ZucmVwbyIgPCAiJFRFU1RfRElSRUNUT1JZIi90OTExMC9zdm0uZHVtcCAmJgorCWdpdCBzdm4gaW5pdCAtLW1pbmltaXplLXVybCAtUiBhcnIgLWkgYmFyICIkc3ZucmVwbyIvbWlycm9yL2FyciAmJgorCWdpdCBzdm4gaW5pdCAtLW1pbmltaXplLXVybCAtUiBhcmdoIC1pIGRpciAiJHN2bnJlcG8iL21pcnJvci9hcmdoICYmCisJZ2l0IHN2biBpbml0IC0tbWluaW1pemUtdXJsIC1SIGFyZ2ggLWkgZSBcCiAJICAiJHN2bnJlcG8iL21pcnJvci9hcmdoL2EvYi9jL2QvZSAmJgogCWdpdCBjb25maWcgc3ZuLnVzZVN2bVByb3BzIHRydWUgJiYKLQlnaXQtc3ZuIGZldGNoIC0tYWxsCisJZ2l0IHN2biBmZXRjaCAtLWFsbAogCScKIAogdXVpZD0xNjFjZTQyOS1hOWRkLTQ4MjgtYWY0YS01MjAyM2Y5NjhjODkKQEAgLTIyLDQwICsyMiw0MCBAQAogYmFyX3VybD1odHRwOi8vbWF5b25haXNlL3N2bnJlcG8vYmFyCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd2ZXJpZnkgbWV0YWRhdGEgZm9yIC9iYXInICIKIAlnaXQgY2F0LWZpbGUgY29tbWl0IHJlZnMvcmVtb3Rlcy9iYXIgfCBcCi0JICAgZ3JlcCAnXmdpdC1zdm4taWQ6ICRiYXJfdXJsQDEyICR1dWlkJCcgJiYKKwkgICBncmVwICdeJHtnaXRfc3ZuX2lkfTogJGJhcl91cmxAMTIgJHV1aWQkJyAmJgogCWdpdCBjYXQtZmlsZSBjb21taXQgcmVmcy9yZW1vdGVzL2Jhcn4xIHwgXAotCSAgIGdyZXAgJ15naXQtc3ZuLWlkOiAkYmFyX3VybEAxMSAkdXVpZCQnICYmCisJICAgZ3JlcCAnXiR7Z2l0X3N2bl9pZH06ICRiYXJfdXJsQDExICR1dWlkJCcgJiYKIAlnaXQgY2F0LWZpbGUgY29tbWl0IHJlZnMvcmVtb3Rlcy9iYXJ+MiB8IFwKLQkgICBncmVwICdeZ2l0LXN2bi1pZDogJGJhcl91cmxAMTAgJHV1aWQkJyAmJgorCSAgIGdyZXAgJ14ke2dpdF9zdm5faWR9OiAkYmFyX3VybEAxMCAkdXVpZCQnICYmCiAJZ2l0IGNhdC1maWxlIGNvbW1pdCByZWZzL3JlbW90ZXMvYmFyfjMgfCBcCi0JICAgZ3JlcCAnXmdpdC1zdm4taWQ6ICRiYXJfdXJsQDkgJHV1aWQkJyAmJgorCSAgIGdyZXAgJ14ke2dpdF9zdm5faWR9OiAkYmFyX3VybEA5ICR1dWlkJCcgJiYKIAlnaXQgY2F0LWZpbGUgY29tbWl0IHJlZnMvcmVtb3Rlcy9iYXJ+NCB8IFwKLQkgICBncmVwICdeZ2l0LXN2bi1pZDogJGJhcl91cmxANiAkdXVpZCQnICYmCisJICAgZ3JlcCAnXiR7Z2l0X3N2bl9pZH06ICRiYXJfdXJsQDYgJHV1aWQkJyAmJgogCWdpdCBjYXQtZmlsZSBjb21taXQgcmVmcy9yZW1vdGVzL2Jhcn41IHwgXAotCSAgIGdyZXAgJ15naXQtc3ZuLWlkOiAkYmFyX3VybEAxICR1dWlkJCcKKwkgICBncmVwICdeJHtnaXRfc3ZuX2lkfTogJGJhcl91cmxAMSAkdXVpZCQnCiAJIgogCiBlX3VybD1odHRwOi8vbWF5b25haXNlL3N2bnJlcG8vZGlyL2EvYi9jL2QvZQogdGVzdF9leHBlY3Rfc3VjY2VzcyAndmVyaWZ5IG1ldGFkYXRhIGZvciAvZGlyL2EvYi9jL2QvZScgIgogCWdpdCBjYXQtZmlsZSBjb21taXQgcmVmcy9yZW1vdGVzL2UgfCBcCi0JICAgZ3JlcCAnXmdpdC1zdm4taWQ6ICRlX3VybEAxICR1dWlkJCcKKwkgICBncmVwICdeJHtnaXRfc3ZuX2lkfTogJGVfdXJsQDEgJHV1aWQkJwogCSIKIAogZGlyX3VybD1odHRwOi8vbWF5b25haXNlL3N2bnJlcG8vZGlyCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd2ZXJpZnkgbWV0YWRhdGEgZm9yIC9kaXInICIKIAlnaXQgY2F0LWZpbGUgY29tbWl0IHJlZnMvcmVtb3Rlcy9kaXIgfCBcCi0JICAgZ3JlcCAnXmdpdC1zdm4taWQ6ICRkaXJfdXJsQDIgJHV1aWQkJyAmJgorCSAgIGdyZXAgJ14ke2dpdF9zdm5faWR9OiAkZGlyX3VybEAyICR1dWlkJCcgJiYKIAlnaXQgY2F0LWZpbGUgY29tbWl0IHJlZnMvcmVtb3Rlcy9kaXJ+MSB8IFwKLQkgICBncmVwICdeZ2l0LXN2bi1pZDogJGRpcl91cmxAMSAkdXVpZCQnCisJICAgZ3JlcCAnXiR7Z2l0X3N2bl9pZH06ICRkaXJfdXJsQDEgJHV1aWQkJwogCSIKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZmluZCBjb21taXQgYmFzZWQgb24gU1ZOIHJldmlzaW9uIG51bWJlcicgIgotICAgICAgICBnaXQtc3ZuIGZpbmQtcmV2IHIxMiB8CisgICAgICAgIGdpdCBzdm4gZmluZC1yZXYgcjEyIHwKIAkgICAgZ3JlcCBgZ2l0IHJldi1wYXJzZSBIRUFEYAogICAgICAgICAiCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2VtcHR5IHJlYmFzZScgIgotCWdpdC1zdm4gcmViYXNlCisJZ2l0IHN2biByZWJhc2UKIAkiCiAKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90OTExMS1naXQtc3ZuLXVzZS1zdm5zeW5jLXByb3BzLnNoIGIvdC90OTExMS1naXQtc3ZuLXVzZS1zdm5zeW5jLXByb3BzLnNoCmluZGV4IGE4ZDc0ZGMuLmJkMDgxYzIgMTAwNzU1Ci0tLSBhL3QvdDkxMTEtZ2l0LXN2bi11c2Utc3Zuc3luYy1wcm9wcy5zaAorKysgYi90L3Q5MTExLWdpdC1zdm4tdXNlLXN2bnN5bmMtcHJvcHMuc2gKQEAgLTMsMTcgKzMsMTcgQEAKICMgQ29weXJpZ2h0IChjKSAyMDA3IEVyaWMgV29uZwogIwogCi10ZXN0X2Rlc2NyaXB0aW9uPSdnaXQtc3ZuIHVzZVN2bnN5bmNQcm9wcyB0ZXN0JwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHN2biB1c2VTdm5zeW5jUHJvcHMgdGVzdCcKIAogLiAuL2xpYi1naXQtc3ZuLnNoCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvYWQgc3Zuc3luYyByZXBvJyAnCi0Jc3ZuYWRtaW4gbG9hZCAtcSAiJHJhd3N2bnJlcG8iIDwgLi4vdDkxMTEvc3Zuc3luYy5kdW1wICYmCi0JZ2l0LXN2biBpbml0IC0tbWluaW1pemUtdXJsIC1SIGFyciAtaSBiYXIgIiRzdm5yZXBvIi9iYXIgJiYKLQlnaXQtc3ZuIGluaXQgLS1taW5pbWl6ZS11cmwgLVIgYXJnaCAtaSBkaXIgIiRzdm5yZXBvIi9kaXIgJiYKLQlnaXQtc3ZuIGluaXQgLS1taW5pbWl6ZS11cmwgLVIgYXJnaCAtaSBlICIkc3ZucmVwbyIvZGlyL2EvYi9jL2QvZSAmJgorCXN2bmFkbWluIGxvYWQgLXEgIiRyYXdzdm5yZXBvIiA8ICIkVEVTVF9ESVJFQ1RPUlkiL3Q5MTExL3N2bnN5bmMuZHVtcCAmJgorCWdpdCBzdm4gaW5pdCAtLW1pbmltaXplLXVybCAtUiBhcnIgLWkgYmFyICIkc3ZucmVwbyIvYmFyICYmCisJZ2l0IHN2biBpbml0IC0tbWluaW1pemUtdXJsIC1SIGFyZ2ggLWkgZGlyICIkc3ZucmVwbyIvZGlyICYmCisJZ2l0IHN2biBpbml0IC0tbWluaW1pemUtdXJsIC1SIGFyZ2ggLWkgZSAiJHN2bnJlcG8iL2Rpci9hL2IvYy9kL2UgJiYKIAlnaXQgY29uZmlnIHN2bi51c2VTdm5zeW5jUHJvcHMgdHJ1ZSAmJgotCWdpdC1zdm4gZmV0Y2ggLS1hbGwKKwlnaXQgc3ZuIGZldGNoIC0tYWxsCiAJJwogCiB1dWlkPTE2MWNlNDI5LWE5ZGQtNDgyOC1hZjRhLTUyMDIzZjk2OGM4OQpAQCAtMjEsMzEgKzIxLDMxIEBACiBiYXJfdXJsPWh0dHA6Ly9tYXlvbmFpc2Uvc3ZucmVwby9iYXIKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ZlcmlmeSBtZXRhZGF0YSBmb3IgL2JhcicgIgogCWdpdCBjYXQtZmlsZSBjb21taXQgcmVmcy9yZW1vdGVzL2JhciB8IFwKLQkgICBncmVwICdeZ2l0LXN2bi1pZDogJGJhcl91cmxAMTIgJHV1aWQkJyAmJgorCSAgIGdyZXAgJ14ke2dpdF9zdm5faWR9OiAkYmFyX3VybEAxMiAkdXVpZCQnICYmCiAJZ2l0IGNhdC1maWxlIGNvbW1pdCByZWZzL3JlbW90ZXMvYmFyfjEgfCBcCi0JICAgZ3JlcCAnXmdpdC1zdm4taWQ6ICRiYXJfdXJsQDExICR1dWlkJCcgJiYKKwkgICBncmVwICdeJHtnaXRfc3ZuX2lkfTogJGJhcl91cmxAMTEgJHV1aWQkJyAmJgogCWdpdCBjYXQtZmlsZSBjb21taXQgcmVmcy9yZW1vdGVzL2Jhcn4yIHwgXAotCSAgIGdyZXAgJ15naXQtc3ZuLWlkOiAkYmFyX3VybEAxMCAkdXVpZCQnICYmCisJICAgZ3JlcCAnXiR7Z2l0X3N2bl9pZH06ICRiYXJfdXJsQDEwICR1dWlkJCcgJiYKIAlnaXQgY2F0LWZpbGUgY29tbWl0IHJlZnMvcmVtb3Rlcy9iYXJ+MyB8IFwKLQkgICBncmVwICdeZ2l0LXN2bi1pZDogJGJhcl91cmxAOSAkdXVpZCQnICYmCisJICAgZ3JlcCAnXiR7Z2l0X3N2bl9pZH06ICRiYXJfdXJsQDkgJHV1aWQkJyAmJgogCWdpdCBjYXQtZmlsZSBjb21taXQgcmVmcy9yZW1vdGVzL2Jhcn40IHwgXAotCSAgIGdyZXAgJ15naXQtc3ZuLWlkOiAkYmFyX3VybEA2ICR1dWlkJCcgJiYKKwkgICBncmVwICdeJHtnaXRfc3ZuX2lkfTogJGJhcl91cmxANiAkdXVpZCQnICYmCiAJZ2l0IGNhdC1maWxlIGNvbW1pdCByZWZzL3JlbW90ZXMvYmFyfjUgfCBcCi0JICAgZ3JlcCAnXmdpdC1zdm4taWQ6ICRiYXJfdXJsQDEgJHV1aWQkJworCSAgIGdyZXAgJ14ke2dpdF9zdm5faWR9OiAkYmFyX3VybEAxICR1dWlkJCcKIAkiCiAKIGVfdXJsPWh0dHA6Ly9tYXlvbmFpc2Uvc3ZucmVwby9kaXIvYS9iL2MvZC9lCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd2ZXJpZnkgbWV0YWRhdGEgZm9yIC9kaXIvYS9iL2MvZC9lJyAiCiAJZ2l0IGNhdC1maWxlIGNvbW1pdCByZWZzL3JlbW90ZXMvZSB8IFwKLQkgICBncmVwICdeZ2l0LXN2bi1pZDogJGVfdXJsQDEgJHV1aWQkJworCSAgIGdyZXAgJ14ke2dpdF9zdm5faWR9OiAkZV91cmxAMSAkdXVpZCQnCiAJIgogCiBkaXJfdXJsPWh0dHA6Ly9tYXlvbmFpc2Uvc3ZucmVwby9kaXIKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ZlcmlmeSBtZXRhZGF0YSBmb3IgL2RpcicgIgogCWdpdCBjYXQtZmlsZSBjb21taXQgcmVmcy9yZW1vdGVzL2RpciB8IFwKLQkgICBncmVwICdeZ2l0LXN2bi1pZDogJGRpcl91cmxAMiAkdXVpZCQnICYmCisJICAgZ3JlcCAnXiR7Z2l0X3N2bl9pZH06ICRkaXJfdXJsQDIgJHV1aWQkJyAmJgogCWdpdCBjYXQtZmlsZSBjb21taXQgcmVmcy9yZW1vdGVzL2Rpcn4xIHwgXAotCSAgIGdyZXAgJ15naXQtc3ZuLWlkOiAkZGlyX3VybEAxICR1dWlkJCcKKwkgICBncmVwICdeJHtnaXRfc3ZuX2lkfTogJGRpcl91cmxAMSAkdXVpZCQnCiAJIgogCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDkxMTItZ2l0LXN2bi1tZDVsZXNzLWZpbGUuc2ggYi90L3Q5MTEyLWdpdC1zdm4tbWQ1bGVzcy1maWxlLnNoCmluZGV4IGQ0NzBhOTIuLmE2MWQ2NzEgMTAwNzU1Ci0tLSBhL3QvdDkxMTItZ2l0LXN2bi1tZDVsZXNzLWZpbGUuc2gKKysrIGIvdC90OTExMi1naXQtc3ZuLW1kNWxlc3MtZmlsZS5zaApAQCAtNDIsNiArNDIsNiBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2FkIHN2biBkdW1wZmlsZScgJ3N2bmFkbWluIGxvYWQgIiRyYXdzdm5yZXBvIiA8IGR1bXBmaWxlLnN2bicKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5pdGlhbGl6ZSBnaXQtc3ZuJyAnZ2l0LXN2biBpbml0ICIkc3ZucmVwbyInCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdmZXRjaCByZXZpc2lvbnMgZnJvbSBzdm4nICdnaXQtc3ZuIGZldGNoJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5pdGlhbGl6ZSBnaXQgc3ZuJyAnZ2l0IHN2biBpbml0ICIkc3ZucmVwbyInCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmZXRjaCByZXZpc2lvbnMgZnJvbSBzdm4nICdnaXQgc3ZuIGZldGNoJwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q5MTEzLWdpdC1zdm4tZGNvbW1pdC1uZXctZmlsZS5zaCBiL3QvdDkxMTMtZ2l0LXN2bi1kY29tbWl0LW5ldy1maWxlLnNoCmluZGV4IGMyYjI0YTQuLmU5YjYxMjggMTAwNzU1Ci0tLSBhL3QvdDkxMTMtZ2l0LXN2bi1kY29tbWl0LW5ldy1maWxlLnNoCisrKyBiL3QvdDkxMTMtZ2l0LXN2bi1kY29tbWl0LW5ldy1maWxlLnNoCkBAIC04LDcgKzgsNyBAQAogIyBkYWVtb24gcnVubmluZyBvbiBhIHVzZXJzIHN5c3RlbSBpZiB0aGUgdGVzdCBmYWlscy4KICMgTm90IGFsbCBnaXQgdXNlcnMgd2lsbCBuZWVkIHRvIGludGVyYWN0IHdpdGggU1ZOLgogCi10ZXN0X2Rlc2NyaXB0aW9uPSdnaXQtc3ZuIGRjb21taXQgbmV3IGZpbGVzIG92ZXIgc3ZuOi8vIHRlc3QnCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc3ZuIGRjb21taXQgbmV3IGZpbGVzIG92ZXIgc3ZuOi8vIHRlc3QnCiAKIC4gLi9saWItZ2l0LXN2bi5zaAogCmRpZmYgLS1naXQgYS90L3Q5MTE0LWdpdC1zdm4tZGNvbW1pdC1tZXJnZS5zaCBiL3QvdDkxMTQtZ2l0LXN2bi1kY29tbWl0LW1lcmdlLnNoCmluZGV4IDYxZDc3ODEuLjE3YjI4NTUgMTAwNzU1Ci0tLSBhL3QvdDkxMTQtZ2l0LXN2bi1kY29tbWl0LW1lcmdlLnNoCisrKyBiL3QvdDkxMTQtZ2l0LXN2bi1kY29tbWl0LW1lcmdlLnNoCkBAIC0zLDcgKzMsNyBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMDcgRXJpYyBXb25nCiAjIEJhc2VkIG9uIGEgc2NyaXB0IGJ5IEpvYWtpbSBUamVybmx1bmQgPGpvYWtpbS50amVybmx1bmRAdHJhbnNtb2RlLnNlPgogCi10ZXN0X2Rlc2NyaXB0aW9uPSdnaXQtc3ZuIGRjb21taXQgaGFuZGxlcyBtZXJnZXMnCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc3ZuIGRjb21taXQgaGFuZGxlcyBtZXJnZXMnCiAKIC4gLi9saWItZ2l0LXN2bi5zaAogCmRpZmYgLS1naXQgYS90L3Q5MTE1LWdpdC1zdm4tZGNvbW1pdC1mdW5reS1yZW5hbWVzLnNoIGIvdC90OTExNS1naXQtc3ZuLWRjb21taXQtZnVua3ktcmVuYW1lcy5zaAppbmRleCBmMGZiZDNhLi45YmU3YWVmIDEwMDc1NQotLS0gYS90L3Q5MTE1LWdpdC1zdm4tZGNvbW1pdC1mdW5reS1yZW5hbWVzLnNoCisrKyBiL3QvdDkxMTUtZ2l0LXN2bi1kY29tbWl0LWZ1bmt5LXJlbmFtZXMuc2gKQEAgLTMsMTIgKzMsMTIgQEAKICMgQ29weXJpZ2h0IChjKSAyMDA3IEVyaWMgV29uZwogCiAKLXRlc3RfZGVzY3JpcHRpb249J2dpdC1zdm4gZGNvbW1pdCBjYW4gY29tbWl0IHJlbmFtZXMgb2YgZmlsZXMgd2l0aCB1Z2x5IG5hbWVzJwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHN2biBkY29tbWl0IGNhbiBjb21taXQgcmVuYW1lcyBvZiBmaWxlcyB3aXRoIHVnbHkgbmFtZXMnCiAKIC4gLi9saWItZ2l0LXN2bi5zaAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2FkIHJlcG9zaXRvcnkgd2l0aCBzdHJhbmdlIG5hbWVzJyAnCi0Jc3ZuYWRtaW4gbG9hZCAtcSAiJHJhd3N2bnJlcG8iIDwgLi4vdDkxMTUvZnVua3ktbmFtZXMuZHVtcCAmJgorCXN2bmFkbWluIGxvYWQgLXEgIiRyYXdzdm5yZXBvIiA8ICIkVEVTVF9ESVJFQ1RPUlkiL3Q5MTE1L2Z1bmt5LW5hbWVzLmR1bXAgJiYKIAlzdGFydF9odHRwZCBndGsrCiAJJwogCkBAIC03NSw3ICs3NSw3IEBACiAJCWdpdCBzdm4gZGNvbW1pdAogCScKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0LXN2biByZWJhc2Ugd29ya3MgaW5zaWRlIGEgZnJlc2gtY2xvbmVkIHJlcG9zaXRvcnknICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBzdm4gcmViYXNlIHdvcmtzIGluc2lkZSBhIGZyZXNoLWNsb25lZCByZXBvc2l0b3J5JyAnCiAJY2QgdGVzdC1yZWJhc2UgJiYKIAkJZ2l0IHN2biByZWJhc2UgJiYKIAkJdGVzdCAtZSB0ZXN0LXJlYmFzZS1tYWluICYmCmRpZmYgLS1naXQgYS90L3Q5MTE2LWdpdC1zdm4tbG9nLnNoIGIvdC90OTExNi1naXQtc3ZuLWxvZy5zaAppbmRleCA0YjJjYzg3Li5mZDZkMWQyIDEwMDc1NQotLS0gYS90L3Q5MTE2LWdpdC1zdm4tbG9nLnNoCisrKyBiL3QvdDkxMTYtZ2l0LXN2bi1sb2cuc2gKQEAgLTMsNyArMyw3IEBACiAjIENvcHlyaWdodCAoYykgMjAwNyBFcmljIFdvbmcKICMKIAotdGVzdF9kZXNjcmlwdGlvbj0nZ2l0LXN2biBsb2cgdGVzdHMnCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc3ZuIGxvZyB0ZXN0cycKIC4gLi9saWItZ2l0LXN2bi5zaAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCByZXBvc2l0b3J5IGFuZCBpbXBvcnQnICcKQEAgLTE2LDggKzE2LDggQEAKIAkJZG9uZSAmJiBcCiAJCXN2biBpbXBvcnQgLW0gdGVzdCAuICIkc3ZucmVwbyIKIAkJY2QgLi4gJiYKLQlnaXQtc3ZuIGluaXQgIiRzdm5yZXBvIiAtVCB0cnVuayAtYiBicmFuY2hlcyAtdCB0YWdzICYmCi0JZ2l0LXN2biBmZXRjaCAmJgorCWdpdCBzdm4gaW5pdCAiJHN2bnJlcG8iIC1UIHRydW5rIC1iIGJyYW5jaGVzIC10IHRhZ3MgJiYKKwlnaXQgc3ZuIGZldGNoICYmCiAJZ2l0IHJlc2V0IC0taGFyZCB0cnVuayAmJgogCWVjaG8gYnllID4+IFJFQURNRSAmJgogCWdpdCBjb21taXQgLWEgLW0gYnllICYmCmRpZmYgLS1naXQgYS90L3Q5MTE3LWdpdC1zdm4taW5pdC1jbG9uZS5zaCBiL3QvdDkxMTctZ2l0LXN2bi1pbml0LWNsb25lLnNoCmluZGV4IDdhNjg5YmIuLmRkZTQ2Y2QgMTAwNzU1Ci0tLSBhL3QvdDkxMTctZ2l0LXN2bi1pbml0LWNsb25lLnNoCisrKyBiL3QvdDkxMTctZ2l0LXN2bi1pbml0LWNsb25lLnNoCkBAIC0zLDcgKzMsNyBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMDcgRXJpYyBXb25nCiAjCiAKLXRlc3RfZGVzY3JpcHRpb249J2dpdC1zdm4gaW5pdC9jbG9uZSB0ZXN0cycKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBzdm4gaW5pdC9jbG9uZSB0ZXN0cycKIAogLiAuL2xpYi1naXQtc3ZuLnNoCiAKZGlmZiAtLWdpdCBhL3QvdDkxMTgtZ2l0LXN2bi1mdW5reS1icmFuY2gtbmFtZXMuc2ggYi90L3Q5MTE4LWdpdC1zdm4tZnVua3ktYnJhbmNoLW5hbWVzLnNoCmluZGV4IDQzY2ViNzUuLjdhN2MxMjggMTAwNzU1Ci0tLSBhL3QvdDkxMTgtZ2l0LXN2bi1mdW5reS1icmFuY2gtbmFtZXMuc2gKKysrIGIvdC90OTExOC1naXQtc3ZuLWZ1bmt5LWJyYW5jaC1uYW1lcy5zaApAQCAtMyw3ICszLDcgQEAKICMgQ29weXJpZ2h0IChjKSAyMDA3IEVyaWMgV29uZwogIwogCi10ZXN0X2Rlc2NyaXB0aW9uPSdnaXQtc3ZuIGZ1bmt5IGJyYW5jaCBuYW1lcycKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBzdm4gZnVua3kgYnJhbmNoIG5hbWVzJwogLiAuL2xpYi1naXQtc3ZuLnNoCiAKICMgQWJvLVVlYmVybmFobWUgKEJ1ZyAjOTk0KQpkaWZmIC0tZ2l0IGEvdC90OTExOS1naXQtc3ZuLWluZm8uc2ggYi90L3Q5MTE5LWdpdC1zdm4taW5mby5zaAppbmRleCA1ZmQzNmExLi4yN2RkN2MyIDEwMDc1NQotLS0gYS90L3Q5MTE5LWdpdC1zdm4taW5mby5zaAorKysgYi90L3Q5MTE5LWdpdC1zdm4taW5mby5zaApAQCAtMiwxNiArMiwxNCBAQAogIwogIyBDb3B5cmlnaHQgKGMpIDIwMDcgRGF2aWQgRC4gS2lsemVyCiAKLXRlc3RfZGVzY3JpcHRpb249J2dpdC1zdm4gaW5mbycKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBzdm4gaW5mbycKIAogLiAuL2xpYi1naXQtc3ZuLnNoCiAKLXNldCAtZQotCiAjIFRlc3RlZCB3aXRoOiBzdm4sIHZlcnNpb24gMS40LjQgKHIyNTE4OCkKLXY9YHN2biAtLXZlcnNpb24gfCBzZWQgLW4gLWUgJ3MvXnN2biwgdmVyc2lvbiBcKDFcLjRcLlswLTldXCkuKiQvXDEvcCdgCit2PWBzdm4gLS12ZXJzaW9uIHwgc2VkIC1uIC1lICdzL15zdm4sIHZlcnNpb24gXCgxXC5bMC05XSpcLlswLTldKlwpLiokL1wxL3AnYAogY2FzZSAkdiBpbgotMS40LiopCisxLls0NV0uKikKIAk7OwogKikKIAlzYXkgInNraXBwaW5nIHN2bi1pbmZvIHRlc3QgKFNWTiB2ZXJzaW9uOiAkdiBub3Qgc3VwcG9ydGVkKSIKQEAgLTM2LDYgKzM0LDggQEAKIAknICJgc3ZuIGluZm8gJDIgfCBncmVwICdeVGV4dCBMYXN0IFVwZGF0ZWQ6J2AiICIkMSIKIH0KIAorcXVvdGVkX3N2bnJlcG89IiQoZWNobyAkc3ZucmVwbyB8IHNlZCAncy8gLyUyMC8nKSIKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgcmVwb3NpdG9yeSBhbmQgaW1wb3J0JyAnCiAJbWtkaXIgaW5mbyAmJgogCWNkIGluZm8gJiYKQEAgLTQ3LDgwICs0Nyw5MiBAQAogCQlsbiAtcyBkaXJlY3Rvcnkgc3ltbGluay1kaXJlY3RvcnkgJiYKIAkJc3ZuIGltcG9ydCAtbSAiaW5pdGlhbCIgLiAiJHN2bnJlcG8iICYmCiAJY2QgLi4gJiYKKwlzdm4gY28gIiRzdm5yZXBvIiBzdm53YyAmJgorCWNkIHN2bndjICYmCisJCWVjaG8gZm9vID4gZm9vICYmCisJCXN2biBhZGQgZm9vICYmCisJCXN2biBjb21taXQgLW0gImNoYW5nZSBvdXRzaWRlIGRpcmVjdG9yeSIgJiYKKwkJc3ZuIHVwZGF0ZSAmJgorCWNkIC4uICYmCiAJbWtkaXIgZ2l0d2MgJiYKIAljZCBnaXR3YyAmJgotCQlnaXQtc3ZuIGluaXQgIiRzdm5yZXBvIiAmJgotCQlnaXQtc3ZuIGZldGNoICYmCisJCWdpdCBzdm4gaW5pdCAiJHN2bnJlcG8iICYmCisJCWdpdCBzdm4gZmV0Y2ggJiYKIAljZCAuLiAmJgotCXN2biBjbyAiJHN2bnJlcG8iIHN2bndjICYmCi0JcHRvdWNoIHN2bndjL2ZpbGUgZ2l0d2MvZmlsZSAmJgotCXB0b3VjaCBzdm53Yy9kaXJlY3RvcnkgZ2l0d2MvZGlyZWN0b3J5ICYmCi0JcHRvdWNoIHN2bndjL3N5bWxpbmstZmlsZSBnaXR3Yy9zeW1saW5rLWZpbGUgJiYKLQlwdG91Y2ggc3Zud2Mvc3ltbGluay1kaXJlY3RvcnkgZ2l0d2Mvc3ltbGluay1kaXJlY3RvcnkKKwlwdG91Y2ggZ2l0d2MvZmlsZSBzdm53Yy9maWxlICYmCisJcHRvdWNoIGdpdHdjL2RpcmVjdG9yeSBzdm53Yy9kaXJlY3RvcnkgJiYKKwlwdG91Y2ggZ2l0d2Mvc3ltbGluay1maWxlIHN2bndjL3N5bWxpbmstZmlsZSAmJgorCXB0b3VjaCBnaXR3Yy9zeW1saW5rLWRpcmVjdG9yeSBzdm53Yy9zeW1saW5rLWRpcmVjdG9yeQogCScKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5mbycgIgogCShjZCBzdm53Yzsgc3ZuIGluZm8pID4gZXhwZWN0ZWQuaW5mbyAmJgotCShjZCBnaXR3YzsgZ2l0LXN2biBpbmZvKSA+IGFjdHVhbC5pbmZvICYmCi0JZ2l0LWRpZmYgZXhwZWN0ZWQuaW5mbyBhY3R1YWwuaW5mbworCShjZCBnaXR3YzsgZ2l0IHN2biBpbmZvKSA+IGFjdHVhbC5pbmZvICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQuaW5mbyBhY3R1YWwuaW5mbwogCSIKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5mbyAtLXVybCcgJwotCXRlc3QgIiQoY2QgZ2l0d2M7IGdpdC1zdm4gaW5mbyAtLXVybCkiID0gIiRzdm5yZXBvIgorCXRlc3QgIiQoY2QgZ2l0d2M7IGdpdCBzdm4gaW5mbyAtLXVybCkiID0gIiRxdW90ZWRfc3ZucmVwbyIKIAknCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luZm8gLicgIgogCShjZCBzdm53Yzsgc3ZuIGluZm8gLikgPiBleHBlY3RlZC5pbmZvLWRvdCAmJgotCShjZCBnaXR3YzsgZ2l0LXN2biBpbmZvIC4pID4gYWN0dWFsLmluZm8tZG90ICYmCi0JZ2l0LWRpZmYgZXhwZWN0ZWQuaW5mby1kb3QgYWN0dWFsLmluZm8tZG90CisJKGNkIGdpdHdjOyBnaXQgc3ZuIGluZm8gLikgPiBhY3R1YWwuaW5mby1kb3QgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZC5pbmZvLWRvdCBhY3R1YWwuaW5mby1kb3QKIAkiCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luZm8gLS11cmwgLicgJwotCXRlc3QgIiQoY2QgZ2l0d2M7IGdpdC1zdm4gaW5mbyAtLXVybCAuKSIgPSAiJHN2bnJlcG8iCisJdGVzdCAiJChjZCBnaXR3YzsgZ2l0IHN2biBpbmZvIC0tdXJsIC4pIiA9ICIkcXVvdGVkX3N2bnJlcG8iCiAJJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvIGZpbGUnICIKIAkoY2Qgc3Zud2M7IHN2biBpbmZvIGZpbGUpID4gZXhwZWN0ZWQuaW5mby1maWxlICYmCi0JKGNkIGdpdHdjOyBnaXQtc3ZuIGluZm8gZmlsZSkgPiBhY3R1YWwuaW5mby1maWxlICYmCi0JZ2l0LWRpZmYgZXhwZWN0ZWQuaW5mby1maWxlIGFjdHVhbC5pbmZvLWZpbGUKKwkoY2QgZ2l0d2M7IGdpdCBzdm4gaW5mbyBmaWxlKSA+IGFjdHVhbC5pbmZvLWZpbGUgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZC5pbmZvLWZpbGUgYWN0dWFsLmluZm8tZmlsZQogCSIKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5mbyAtLXVybCBmaWxlJyAnCi0JdGVzdCAiJChjZCBnaXR3YzsgZ2l0LXN2biBpbmZvIC0tdXJsIGZpbGUpIiA9ICIkc3ZucmVwby9maWxlIgorCXRlc3QgIiQoY2QgZ2l0d2M7IGdpdCBzdm4gaW5mbyAtLXVybCBmaWxlKSIgPSAiJHF1b3RlZF9zdm5yZXBvL2ZpbGUiCiAJJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvIGRpcmVjdG9yeScgIgogCShjZCBzdm53Yzsgc3ZuIGluZm8gZGlyZWN0b3J5KSA+IGV4cGVjdGVkLmluZm8tZGlyZWN0b3J5ICYmCi0JKGNkIGdpdHdjOyBnaXQtc3ZuIGluZm8gZGlyZWN0b3J5KSA+IGFjdHVhbC5pbmZvLWRpcmVjdG9yeSAmJgotCWdpdC1kaWZmIGV4cGVjdGVkLmluZm8tZGlyZWN0b3J5IGFjdHVhbC5pbmZvLWRpcmVjdG9yeQorCShjZCBnaXR3YzsgZ2l0IHN2biBpbmZvIGRpcmVjdG9yeSkgPiBhY3R1YWwuaW5mby1kaXJlY3RvcnkgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZC5pbmZvLWRpcmVjdG9yeSBhY3R1YWwuaW5mby1kaXJlY3RvcnkKKwkiCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luZm8gaW5zaWRlIGRpcmVjdG9yeScgIgorCShjZCBzdm53Yy9kaXJlY3Rvcnk7IHN2biBpbmZvKSA+IGV4cGVjdGVkLmluZm8taW5zaWRlLWRpcmVjdG9yeSAmJgorCShjZCBnaXR3Yy9kaXJlY3Rvcnk7IGdpdCBzdm4gaW5mbykgPiBhY3R1YWwuaW5mby1pbnNpZGUtZGlyZWN0b3J5ICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQuaW5mby1pbnNpZGUtZGlyZWN0b3J5IGFjdHVhbC5pbmZvLWluc2lkZS1kaXJlY3RvcnkKIAkiCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luZm8gLS11cmwgZGlyZWN0b3J5JyAnCi0JdGVzdCAiJChjZCBnaXR3YzsgZ2l0LXN2biBpbmZvIC0tdXJsIGRpcmVjdG9yeSkiID0gIiRzdm5yZXBvL2RpcmVjdG9yeSIKKwl0ZXN0ICIkKGNkIGdpdHdjOyBnaXQgc3ZuIGluZm8gLS11cmwgZGlyZWN0b3J5KSIgPSAiJHF1b3RlZF9zdm5yZXBvL2RpcmVjdG9yeSIKIAknCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luZm8gc3ltbGluay1maWxlJyAiCiAJKGNkIHN2bndjOyBzdm4gaW5mbyBzeW1saW5rLWZpbGUpID4gZXhwZWN0ZWQuaW5mby1zeW1saW5rLWZpbGUgJiYKLQkoY2QgZ2l0d2M7IGdpdC1zdm4gaW5mbyBzeW1saW5rLWZpbGUpID4gYWN0dWFsLmluZm8tc3ltbGluay1maWxlICYmCi0JZ2l0LWRpZmYgZXhwZWN0ZWQuaW5mby1zeW1saW5rLWZpbGUgYWN0dWFsLmluZm8tc3ltbGluay1maWxlCisJKGNkIGdpdHdjOyBnaXQgc3ZuIGluZm8gc3ltbGluay1maWxlKSA+IGFjdHVhbC5pbmZvLXN5bWxpbmstZmlsZSAmJgorCXRlc3RfY21wIGV4cGVjdGVkLmluZm8tc3ltbGluay1maWxlIGFjdHVhbC5pbmZvLXN5bWxpbmstZmlsZQogCSIKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5mbyAtLXVybCBzeW1saW5rLWZpbGUnICcKLQl0ZXN0ICIkKGNkIGdpdHdjOyBnaXQtc3ZuIGluZm8gLS11cmwgc3ltbGluay1maWxlKSIgXAotCSAgICAgPSAiJHN2bnJlcG8vc3ltbGluay1maWxlIgorCXRlc3QgIiQoY2QgZ2l0d2M7IGdpdCBzdm4gaW5mbyAtLXVybCBzeW1saW5rLWZpbGUpIiBcCisJICAgICA9ICIkcXVvdGVkX3N2bnJlcG8vc3ltbGluay1maWxlIgogCScKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5mbyBzeW1saW5rLWRpcmVjdG9yeScgIgogCShjZCBzdm53Yzsgc3ZuIGluZm8gc3ltbGluay1kaXJlY3RvcnkpIFwKIAkJPiBleHBlY3RlZC5pbmZvLXN5bWxpbmstZGlyZWN0b3J5ICYmCi0JKGNkIGdpdHdjOyBnaXQtc3ZuIGluZm8gc3ltbGluay1kaXJlY3RvcnkpIFwKKwkoY2QgZ2l0d2M7IGdpdCBzdm4gaW5mbyBzeW1saW5rLWRpcmVjdG9yeSkgXAogCQk+IGFjdHVhbC5pbmZvLXN5bWxpbmstZGlyZWN0b3J5ICYmCi0JZ2l0LWRpZmYgZXhwZWN0ZWQuaW5mby1zeW1saW5rLWRpcmVjdG9yeSBhY3R1YWwuaW5mby1zeW1saW5rLWRpcmVjdG9yeQorCXRlc3RfY21wIGV4cGVjdGVkLmluZm8tc3ltbGluay1kaXJlY3RvcnkgYWN0dWFsLmluZm8tc3ltbGluay1kaXJlY3RvcnkKIAkiCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luZm8gLS11cmwgc3ltbGluay1kaXJlY3RvcnknICcKLQl0ZXN0ICIkKGNkIGdpdHdjOyBnaXQtc3ZuIGluZm8gLS11cmwgc3ltbGluay1kaXJlY3RvcnkpIiBcCi0JICAgICA9ICIkc3ZucmVwby9zeW1saW5rLWRpcmVjdG9yeSIKKwl0ZXN0ICIkKGNkIGdpdHdjOyBnaXQgc3ZuIGluZm8gLS11cmwgc3ltbGluay1kaXJlY3RvcnkpIiBcCisJICAgICA9ICIkcXVvdGVkX3N2bnJlcG8vc3ltbGluay1kaXJlY3RvcnkiCiAJJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvIGFkZGVkLWZpbGUnICIKQEAgLTEzNCwxMyArMTQ2LDEzIEBACiAJCXN2biBhZGQgYWRkZWQtZmlsZSA+IC9kZXYvbnVsbCAmJgogCWNkIC4uICYmCiAJKGNkIHN2bndjOyBzdm4gaW5mbyBhZGRlZC1maWxlKSA+IGV4cGVjdGVkLmluZm8tYWRkZWQtZmlsZSAmJgotCShjZCBnaXR3YzsgZ2l0LXN2biBpbmZvIGFkZGVkLWZpbGUpID4gYWN0dWFsLmluZm8tYWRkZWQtZmlsZSAmJgotCWdpdC1kaWZmIGV4cGVjdGVkLmluZm8tYWRkZWQtZmlsZSBhY3R1YWwuaW5mby1hZGRlZC1maWxlCisJKGNkIGdpdHdjOyBnaXQgc3ZuIGluZm8gYWRkZWQtZmlsZSkgPiBhY3R1YWwuaW5mby1hZGRlZC1maWxlICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQuaW5mby1hZGRlZC1maWxlIGFjdHVhbC5pbmZvLWFkZGVkLWZpbGUKIAkiCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luZm8gLS11cmwgYWRkZWQtZmlsZScgJwotCXRlc3QgIiQoY2QgZ2l0d2M7IGdpdC1zdm4gaW5mbyAtLXVybCBhZGRlZC1maWxlKSIgXAotCSAgICAgPSAiJHN2bnJlcG8vYWRkZWQtZmlsZSIKKwl0ZXN0ICIkKGNkIGdpdHdjOyBnaXQgc3ZuIGluZm8gLS11cmwgYWRkZWQtZmlsZSkiIFwKKwkgICAgID0gIiRxdW90ZWRfc3ZucmVwby9hZGRlZC1maWxlIgogCScKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5mbyBhZGRlZC1kaXJlY3RvcnknICIKQEAgLTE1NSwxNCArMTY3LDE0IEBACiAJY2QgLi4gJiYKIAkoY2Qgc3Zud2M7IHN2biBpbmZvIGFkZGVkLWRpcmVjdG9yeSkgXAogCQk+IGV4cGVjdGVkLmluZm8tYWRkZWQtZGlyZWN0b3J5ICYmCi0JKGNkIGdpdHdjOyBnaXQtc3ZuIGluZm8gYWRkZWQtZGlyZWN0b3J5KSBcCisJKGNkIGdpdHdjOyBnaXQgc3ZuIGluZm8gYWRkZWQtZGlyZWN0b3J5KSBcCiAJCT4gYWN0dWFsLmluZm8tYWRkZWQtZGlyZWN0b3J5ICYmCi0JZ2l0LWRpZmYgZXhwZWN0ZWQuaW5mby1hZGRlZC1kaXJlY3RvcnkgYWN0dWFsLmluZm8tYWRkZWQtZGlyZWN0b3J5CisJdGVzdF9jbXAgZXhwZWN0ZWQuaW5mby1hZGRlZC1kaXJlY3RvcnkgYWN0dWFsLmluZm8tYWRkZWQtZGlyZWN0b3J5CiAJIgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvIC0tdXJsIGFkZGVkLWRpcmVjdG9yeScgJwotCXRlc3QgIiQoY2QgZ2l0d2M7IGdpdC1zdm4gaW5mbyAtLXVybCBhZGRlZC1kaXJlY3RvcnkpIiBcCi0JICAgICA9ICIkc3ZucmVwby9hZGRlZC1kaXJlY3RvcnkiCisJdGVzdCAiJChjZCBnaXR3YzsgZ2l0IHN2biBpbmZvIC0tdXJsIGFkZGVkLWRpcmVjdG9yeSkiIFwKKwkgICAgID0gIiRxdW90ZWRfc3ZucmVwby9hZGRlZC1kaXJlY3RvcnkiCiAJJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvIGFkZGVkLXN5bWxpbmstZmlsZScgIgpAQCAtMTc3LDE1ICsxODksMTUgQEAKIAlwdG91Y2ggZ2l0d2MvYWRkZWQtc3ltbGluay1maWxlIHN2bndjL2FkZGVkLXN5bWxpbmstZmlsZSAmJgogCShjZCBzdm53Yzsgc3ZuIGluZm8gYWRkZWQtc3ltbGluay1maWxlKSBcCiAJCT4gZXhwZWN0ZWQuaW5mby1hZGRlZC1zeW1saW5rLWZpbGUgJiYKLQkoY2QgZ2l0d2M7IGdpdC1zdm4gaW5mbyBhZGRlZC1zeW1saW5rLWZpbGUpIFwKKwkoY2QgZ2l0d2M7IGdpdCBzdm4gaW5mbyBhZGRlZC1zeW1saW5rLWZpbGUpIFwKIAkJPiBhY3R1YWwuaW5mby1hZGRlZC1zeW1saW5rLWZpbGUgJiYKLQlnaXQtZGlmZiBleHBlY3RlZC5pbmZvLWFkZGVkLXN5bWxpbmstZmlsZSBcCisJdGVzdF9jbXAgZXhwZWN0ZWQuaW5mby1hZGRlZC1zeW1saW5rLWZpbGUgXAogCQkgYWN0dWFsLmluZm8tYWRkZWQtc3ltbGluay1maWxlCiAJIgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvIC0tdXJsIGFkZGVkLXN5bWxpbmstZmlsZScgJwotCXRlc3QgIiQoY2QgZ2l0d2M7IGdpdC1zdm4gaW5mbyAtLXVybCBhZGRlZC1zeW1saW5rLWZpbGUpIiBcCi0JICAgICA9ICIkc3ZucmVwby9hZGRlZC1zeW1saW5rLWZpbGUiCisJdGVzdCAiJChjZCBnaXR3YzsgZ2l0IHN2biBpbmZvIC0tdXJsIGFkZGVkLXN5bWxpbmstZmlsZSkiIFwKKwkgICAgID0gIiRxdW90ZWRfc3ZucmVwby9hZGRlZC1zeW1saW5rLWZpbGUiCiAJJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvIGFkZGVkLXN5bWxpbmstZGlyZWN0b3J5JyAiCkBAIC0yMDAsMTUgKzIxMiwxNSBAQAogCXB0b3VjaCBnaXR3Yy9hZGRlZC1zeW1saW5rLWRpcmVjdG9yeSBzdm53Yy9hZGRlZC1zeW1saW5rLWRpcmVjdG9yeSAmJgogCShjZCBzdm53Yzsgc3ZuIGluZm8gYWRkZWQtc3ltbGluay1kaXJlY3RvcnkpIFwKIAkJPiBleHBlY3RlZC5pbmZvLWFkZGVkLXN5bWxpbmstZGlyZWN0b3J5ICYmCi0JKGNkIGdpdHdjOyBnaXQtc3ZuIGluZm8gYWRkZWQtc3ltbGluay1kaXJlY3RvcnkpIFwKKwkoY2QgZ2l0d2M7IGdpdCBzdm4gaW5mbyBhZGRlZC1zeW1saW5rLWRpcmVjdG9yeSkgXAogCQk+IGFjdHVhbC5pbmZvLWFkZGVkLXN5bWxpbmstZGlyZWN0b3J5ICYmCi0JZ2l0LWRpZmYgZXhwZWN0ZWQuaW5mby1hZGRlZC1zeW1saW5rLWRpcmVjdG9yeSBcCisJdGVzdF9jbXAgZXhwZWN0ZWQuaW5mby1hZGRlZC1zeW1saW5rLWRpcmVjdG9yeSBcCiAJCSBhY3R1YWwuaW5mby1hZGRlZC1zeW1saW5rLWRpcmVjdG9yeQogCSIKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5mbyAtLXVybCBhZGRlZC1zeW1saW5rLWRpcmVjdG9yeScgJwotCXRlc3QgIiQoY2QgZ2l0d2M7IGdpdC1zdm4gaW5mbyAtLXVybCBhZGRlZC1zeW1saW5rLWRpcmVjdG9yeSkiIFwKLQkgICAgID0gIiRzdm5yZXBvL2FkZGVkLXN5bWxpbmstZGlyZWN0b3J5IgorCXRlc3QgIiQoY2QgZ2l0d2M7IGdpdCBzdm4gaW5mbyAtLXVybCBhZGRlZC1zeW1saW5rLWRpcmVjdG9yeSkiIFwKKwkgICAgID0gIiRxdW90ZWRfc3ZucmVwby9hZGRlZC1zeW1saW5rLWRpcmVjdG9yeSIKIAknCiAKICMgVGhlIG5leHQgZmV3IHRlc3RzIHJlcGxhY2UgdGhlICJUZXh0IExhc3QgVXBkYXRlZCIgdmFsdWUgd2l0aCBhCkBAIC0yMjYsMTUgKzIzOCwxNSBAQAogCShjZCBzdm53Yzsgc3ZuIGluZm8gZmlsZSkgfAogCXNlZCAtZSAncy9eXChUZXh0IExhc3QgVXBkYXRlZDpcKS4qL1wxIFRFWFQtTEFTVC1VUERBVEVELVNUUklORy8nIFwKIAkJPiBleHBlY3RlZC5pbmZvLWRlbGV0ZWQtZmlsZSAmJgotCShjZCBnaXR3YzsgZ2l0LXN2biBpbmZvIGZpbGUpIHwKKwkoY2QgZ2l0d2M7IGdpdCBzdm4gaW5mbyBmaWxlKSB8CiAJc2VkIC1lICdzL15cKFRleHQgTGFzdCBVcGRhdGVkOlwpLiovXDEgVEVYVC1MQVNULVVQREFURUQtU1RSSU5HLycgXAogCQk+IGFjdHVhbC5pbmZvLWRlbGV0ZWQtZmlsZSAmJgotCWdpdC1kaWZmIGV4cGVjdGVkLmluZm8tZGVsZXRlZC1maWxlIGFjdHVhbC5pbmZvLWRlbGV0ZWQtZmlsZQorCXRlc3RfY21wIGV4cGVjdGVkLmluZm8tZGVsZXRlZC1maWxlIGFjdHVhbC5pbmZvLWRlbGV0ZWQtZmlsZQogCSIKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5mbyAtLXVybCBmaWxlIChkZWxldGVkKScgJwotCXRlc3QgIiQoY2QgZ2l0d2M7IGdpdC1zdm4gaW5mbyAtLXVybCBmaWxlKSIgXAotCSAgICAgPSAiJHN2bnJlcG8vZmlsZSIKKwl0ZXN0ICIkKGNkIGdpdHdjOyBnaXQgc3ZuIGluZm8gLS11cmwgZmlsZSkiIFwKKwkgICAgID0gIiRxdW90ZWRfc3ZucmVwby9maWxlIgogCScKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5mbyBkZWxldGVkLWRpcmVjdG9yeScgIgpAQCAtMjQ3LDE1ICsyNTksMTUgQEAKIAkoY2Qgc3Zud2M7IHN2biBpbmZvIGRpcmVjdG9yeSkgfAogCXNlZCAtZSAncy9eXChUZXh0IExhc3QgVXBkYXRlZDpcKS4qL1wxIFRFWFQtTEFTVC1VUERBVEVELVNUUklORy8nIFwKIAkJPiBleHBlY3RlZC5pbmZvLWRlbGV0ZWQtZGlyZWN0b3J5ICYmCi0JKGNkIGdpdHdjOyBnaXQtc3ZuIGluZm8gZGlyZWN0b3J5KSB8CisJKGNkIGdpdHdjOyBnaXQgc3ZuIGluZm8gZGlyZWN0b3J5KSB8CiAJc2VkIC1lICdzL15cKFRleHQgTGFzdCBVcGRhdGVkOlwpLiovXDEgVEVYVC1MQVNULVVQREFURUQtU1RSSU5HLycgXAogCQk+IGFjdHVhbC5pbmZvLWRlbGV0ZWQtZGlyZWN0b3J5ICYmCi0JZ2l0LWRpZmYgZXhwZWN0ZWQuaW5mby1kZWxldGVkLWRpcmVjdG9yeSBhY3R1YWwuaW5mby1kZWxldGVkLWRpcmVjdG9yeQorCXRlc3RfY21wIGV4cGVjdGVkLmluZm8tZGVsZXRlZC1kaXJlY3RvcnkgYWN0dWFsLmluZm8tZGVsZXRlZC1kaXJlY3RvcnkKIAkiCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luZm8gLS11cmwgZGlyZWN0b3J5IChkZWxldGVkKScgJwotCXRlc3QgIiQoY2QgZ2l0d2M7IGdpdC1zdm4gaW5mbyAtLXVybCBkaXJlY3RvcnkpIiBcCi0JICAgICA9ICIkc3ZucmVwby9kaXJlY3RvcnkiCisJdGVzdCAiJChjZCBnaXR3YzsgZ2l0IHN2biBpbmZvIC0tdXJsIGRpcmVjdG9yeSkiIFwKKwkgICAgID0gIiRxdW90ZWRfc3ZucmVwby9kaXJlY3RvcnkiCiAJJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvIGRlbGV0ZWQtc3ltbGluay1maWxlJyAiCkBAIC0yNjgsMTYgKzI4MCwxNiBAQAogCShjZCBzdm53Yzsgc3ZuIGluZm8gc3ltbGluay1maWxlKSB8CiAJc2VkIC1lICdzL15cKFRleHQgTGFzdCBVcGRhdGVkOlwpLiovXDEgVEVYVC1MQVNULVVQREFURUQtU1RSSU5HLycgXAogCQk+IGV4cGVjdGVkLmluZm8tZGVsZXRlZC1zeW1saW5rLWZpbGUgJiYKLQkoY2QgZ2l0d2M7IGdpdC1zdm4gaW5mbyBzeW1saW5rLWZpbGUpIHwKKwkoY2QgZ2l0d2M7IGdpdCBzdm4gaW5mbyBzeW1saW5rLWZpbGUpIHwKIAlzZWQgLWUgJ3MvXlwoVGV4dCBMYXN0IFVwZGF0ZWQ6XCkuKi9cMSBURVhULUxBU1QtVVBEQVRFRC1TVFJJTkcvJyBcCiAJCT4gYWN0dWFsLmluZm8tZGVsZXRlZC1zeW1saW5rLWZpbGUgJiYKLQlnaXQtZGlmZiBleHBlY3RlZC5pbmZvLWRlbGV0ZWQtc3ltbGluay1maWxlIFwKKwl0ZXN0X2NtcCBleHBlY3RlZC5pbmZvLWRlbGV0ZWQtc3ltbGluay1maWxlIFwKIAkJIGFjdHVhbC5pbmZvLWRlbGV0ZWQtc3ltbGluay1maWxlCiAJIgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvIC0tdXJsIHN5bWxpbmstZmlsZSAoZGVsZXRlZCknICcKLQl0ZXN0ICIkKGNkIGdpdHdjOyBnaXQtc3ZuIGluZm8gLS11cmwgc3ltbGluay1maWxlKSIgXAotCSAgICAgPSAiJHN2bnJlcG8vc3ltbGluay1maWxlIgorCXRlc3QgIiQoY2QgZ2l0d2M7IGdpdCBzdm4gaW5mbyAtLXVybCBzeW1saW5rLWZpbGUpIiBcCisJICAgICA9ICIkcXVvdGVkX3N2bnJlcG8vc3ltbGluay1maWxlIgogCScKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5mbyBkZWxldGVkLXN5bWxpbmstZGlyZWN0b3J5JyAiCkBAIC0yOTAsMTYgKzMwMiwxNiBAQAogCShjZCBzdm53Yzsgc3ZuIGluZm8gc3ltbGluay1kaXJlY3RvcnkpIHwKIAlzZWQgLWUgJ3MvXlwoVGV4dCBMYXN0IFVwZGF0ZWQ6XCkuKi9cMSBURVhULUxBU1QtVVBEQVRFRC1TVFJJTkcvJyBcCiAJCSA+IGV4cGVjdGVkLmluZm8tZGVsZXRlZC1zeW1saW5rLWRpcmVjdG9yeSAmJgotCShjZCBnaXR3YzsgZ2l0LXN2biBpbmZvIHN5bWxpbmstZGlyZWN0b3J5KSB8CisJKGNkIGdpdHdjOyBnaXQgc3ZuIGluZm8gc3ltbGluay1kaXJlY3RvcnkpIHwKIAlzZWQgLWUgJ3MvXlwoVGV4dCBMYXN0IFVwZGF0ZWQ6XCkuKi9cMSBURVhULUxBU1QtVVBEQVRFRC1TVFJJTkcvJyBcCiAJCSA+IGFjdHVhbC5pbmZvLWRlbGV0ZWQtc3ltbGluay1kaXJlY3RvcnkgJiYKLQlnaXQtZGlmZiBleHBlY3RlZC5pbmZvLWRlbGV0ZWQtc3ltbGluay1kaXJlY3RvcnkgXAorCXRlc3RfY21wIGV4cGVjdGVkLmluZm8tZGVsZXRlZC1zeW1saW5rLWRpcmVjdG9yeSBcCiAJCSBhY3R1YWwuaW5mby1kZWxldGVkLXN5bWxpbmstZGlyZWN0b3J5CiAJIgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvIC0tdXJsIHN5bWxpbmstZGlyZWN0b3J5IChkZWxldGVkKScgJwotCXRlc3QgIiQoY2QgZ2l0d2M7IGdpdC1zdm4gaW5mbyAtLXVybCBzeW1saW5rLWRpcmVjdG9yeSkiIFwKLQkgICAgID0gIiRzdm5yZXBvL3N5bWxpbmstZGlyZWN0b3J5IgorCXRlc3QgIiQoY2QgZ2l0d2M7IGdpdCBzdm4gaW5mbyAtLXVybCBzeW1saW5rLWRpcmVjdG9yeSkiIFwKKwkgICAgID0gIiRxdW90ZWRfc3ZucmVwby9zeW1saW5rLWRpcmVjdG9yeSIKIAknCiAKICMgTk9URTogZ2l0IGRvZXMgbm90IGhhdmUgdGhlIGNvbmNlcHQgb2YgcmVwbGFjZWQgb2JqZWN0cywKQEAgLTMwNyw4MiArMzE5LDU5IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luZm8gdW5rbm93bi1maWxlJyAiCiAJZWNobyB0d28gPiBnaXR3Yy91bmtub3duLWZpbGUgJiYKLQljcCBnaXR3Yy91bmtub3duLWZpbGUgc3Zud2MvdW5rbm93bi1maWxlICYmCi0JcHRvdWNoIGdpdHdjL3Vua25vd24tZmlsZSBzdm53Yy91bmtub3duLWZpbGUgJiYKLQkoY2Qgc3Zud2M7IHN2biBpbmZvIHVua25vd24tZmlsZSkgMj4gZXhwZWN0ZWQuaW5mby11bmtub3duLWZpbGUgJiYKLQkoY2QgZ2l0d2M7IGdpdC1zdm4gaW5mbyB1bmtub3duLWZpbGUpIDI+IGFjdHVhbC5pbmZvLXVua25vd24tZmlsZSAmJgotCWdpdC1kaWZmIGV4cGVjdGVkLmluZm8tdW5rbm93bi1maWxlIGFjdHVhbC5pbmZvLXVua25vd24tZmlsZQorCShjZCBnaXR3YzsgdGVzdF9tdXN0X2ZhaWwgZ2l0IHN2biBpbmZvIHVua25vd24tZmlsZSkgXAorCQkgMj4gYWN0dWFsLmluZm8tdW5rbm93bi1maWxlICYmCisJZ3JlcCB1bmtub3duLWZpbGUgYWN0dWFsLmluZm8tdW5rbm93bi1maWxlCiAJIgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvIC0tdXJsIHVua25vd24tZmlsZScgJwotCXRlc3QgLXogIiQoY2QgZ2l0d2M7IGdpdC1zdm4gaW5mbyAtLXVybCB1bmtub3duLWZpbGUgXAotCQkJMj4gLi4vYWN0dWFsLmluZm8tLXVybC11bmtub3duLWZpbGUpIiAmJgotCWdpdC1kaWZmIGV4cGVjdGVkLmluZm8tdW5rbm93bi1maWxlIGFjdHVhbC5pbmZvLS11cmwtdW5rbm93bi1maWxlCisJZWNobyB0d28gPiBnaXR3Yy91bmtub3duLWZpbGUgJiYKKwkoY2QgZ2l0d2M7IHRlc3RfbXVzdF9mYWlsIGdpdCBzdm4gaW5mbyAtLXVybCB1bmtub3duLWZpbGUpIFwKKwkJIDI+IGFjdHVhbC5pbmZvLXVybC11bmtub3duLWZpbGUgJiYKKwlncmVwIHVua25vd24tZmlsZSBhY3R1YWwuaW5mby11cmwtdW5rbm93bi1maWxlCiAJJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvIHVua25vd24tZGlyZWN0b3J5JyAiCiAJbWtkaXIgZ2l0d2MvdW5rbm93bi1kaXJlY3Rvcnkgc3Zud2MvdW5rbm93bi1kaXJlY3RvcnkgJiYKLQlwdG91Y2ggZ2l0d2MvdW5rbm93bi1kaXJlY3Rvcnkgc3Zud2MvdW5rbm93bi1kaXJlY3RvcnkgJiYKLQl0b3VjaCBnaXR3Yy91bmtub3duLWRpcmVjdG9yeS8ucGxhY2Vob2xkZXIgJiYKLQkoY2Qgc3Zud2M7IHN2biBpbmZvIHVua25vd24tZGlyZWN0b3J5KSBcCi0JCTI+IGV4cGVjdGVkLmluZm8tdW5rbm93bi1kaXJlY3RvcnkgJiYKLQkoY2QgZ2l0d2M7IGdpdC1zdm4gaW5mbyB1bmtub3duLWRpcmVjdG9yeSkgXAotCQkyPiBhY3R1YWwuaW5mby11bmtub3duLWRpcmVjdG9yeSAmJgotCWdpdC1kaWZmIGV4cGVjdGVkLmluZm8tdW5rbm93bi1kaXJlY3RvcnkgYWN0dWFsLmluZm8tdW5rbm93bi1kaXJlY3RvcnkKKwkoY2QgZ2l0d2M7IHRlc3RfbXVzdF9mYWlsIGdpdCBzdm4gaW5mbyB1bmtub3duLWRpcmVjdG9yeSkgXAorCQkgMj4gYWN0dWFsLmluZm8tdW5rbm93bi1kaXJlY3RvcnkgJiYKKwlncmVwIHVua25vd24tZGlyZWN0b3J5IGFjdHVhbC5pbmZvLXVua25vd24tZGlyZWN0b3J5CiAJIgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvIC0tdXJsIHVua25vd24tZGlyZWN0b3J5JyAnCi0JdGVzdCAteiAiJChjZCBnaXR3YzsgZ2l0LXN2biBpbmZvIC0tdXJsIHVua25vd24tZGlyZWN0b3J5IFwKLQkJCTI+IC4uL2FjdHVhbC5pbmZvLS11cmwtdW5rbm93bi1kaXJlY3RvcnkpIiAmJgotCWdpdC1kaWZmIGV4cGVjdGVkLmluZm8tdW5rbm93bi1kaXJlY3RvcnkgXAotCQkgYWN0dWFsLmluZm8tLXVybC11bmtub3duLWRpcmVjdG9yeQorCShjZCBnaXR3YzsgdGVzdF9tdXN0X2ZhaWwgZ2l0IHN2biBpbmZvIC0tdXJsIHVua25vd24tZGlyZWN0b3J5KSBcCisJCSAyPiBhY3R1YWwuaW5mby11cmwtdW5rbm93bi1kaXJlY3RvcnkgJiYKKwlncmVwIHVua25vd24tZGlyZWN0b3J5IGFjdHVhbC5pbmZvLXVybC11bmtub3duLWRpcmVjdG9yeQogCScKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5mbyB1bmtub3duLXN5bWxpbmstZmlsZScgIgogCWNkIGdpdHdjICYmCiAJCWxuIC1zIHVua25vd24tZmlsZSB1bmtub3duLXN5bWxpbmstZmlsZSAmJgogCWNkIC4uICYmCi0JY2Qgc3Zud2MgJiYKLQkJbG4gLXMgdW5rbm93bi1maWxlIHVua25vd24tc3ltbGluay1maWxlICYmCi0JY2QgLi4gJiYKLQlwdG91Y2ggZ2l0d2MvdW5rbm93bi1zeW1saW5rLWZpbGUgc3Zud2MvdW5rbm93bi1zeW1saW5rLWZpbGUgJiYKLQkoY2Qgc3Zud2M7IHN2biBpbmZvIHVua25vd24tc3ltbGluay1maWxlKSBcCi0JCTI+IGV4cGVjdGVkLmluZm8tdW5rbm93bi1zeW1saW5rLWZpbGUgJiYKLQkoY2QgZ2l0d2M7IGdpdC1zdm4gaW5mbyB1bmtub3duLXN5bWxpbmstZmlsZSkgXAotCQkyPiBhY3R1YWwuaW5mby11bmtub3duLXN5bWxpbmstZmlsZSAmJgotCWdpdC1kaWZmIGV4cGVjdGVkLmluZm8tdW5rbm93bi1zeW1saW5rLWZpbGUgXAotCQkgYWN0dWFsLmluZm8tdW5rbm93bi1zeW1saW5rLWZpbGUKKwkoY2QgZ2l0d2M7IHRlc3RfbXVzdF9mYWlsIGdpdCBzdm4gaW5mbyB1bmtub3duLXN5bWxpbmstZmlsZSkgXAorCQkgMj4gYWN0dWFsLmluZm8tdW5rbm93bi1zeW1saW5rLWZpbGUgJiYKKwlncmVwIHVua25vd24tc3ltbGluay1maWxlIGFjdHVhbC5pbmZvLXVua25vd24tc3ltbGluay1maWxlCiAJIgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvIC0tdXJsIHVua25vd24tc3ltbGluay1maWxlJyAnCi0JdGVzdCAteiAiJChjZCBnaXR3YzsgZ2l0LXN2biBpbmZvIC0tdXJsIHVua25vd24tc3ltbGluay1maWxlIFwKLQkJCTI+IC4uL2FjdHVhbC5pbmZvLS11cmwtdW5rbm93bi1zeW1saW5rLWZpbGUpIiAmJgotCWdpdC1kaWZmIGV4cGVjdGVkLmluZm8tdW5rbm93bi1zeW1saW5rLWZpbGUgXAotCQkgYWN0dWFsLmluZm8tLXVybC11bmtub3duLXN5bWxpbmstZmlsZQorCShjZCBnaXR3YzsgdGVzdF9tdXN0X2ZhaWwgZ2l0IHN2biBpbmZvIC0tdXJsIHVua25vd24tc3ltbGluay1maWxlKSBcCisJCSAyPiBhY3R1YWwuaW5mby11cmwtdW5rbm93bi1zeW1saW5rLWZpbGUgJiYKKwlncmVwIHVua25vd24tc3ltbGluay1maWxlIGFjdHVhbC5pbmZvLXVybC11bmtub3duLXN5bWxpbmstZmlsZQogCScKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5mbyB1bmtub3duLXN5bWxpbmstZGlyZWN0b3J5JyAiCiAJY2QgZ2l0d2MgJiYKIAkJbG4gLXMgdW5rbm93bi1kaXJlY3RvcnkgdW5rbm93bi1zeW1saW5rLWRpcmVjdG9yeSAmJgogCWNkIC4uICYmCi0JY2Qgc3Zud2MgJiYKLQkJbG4gLXMgdW5rbm93bi1kaXJlY3RvcnkgdW5rbm93bi1zeW1saW5rLWRpcmVjdG9yeSAmJgotCWNkIC4uICYmCi0JcHRvdWNoIGdpdHdjL3Vua25vd24tc3ltbGluay1kaXJlY3RvcnkgXAotCSAgICAgICBzdm53Yy91bmtub3duLXN5bWxpbmstZGlyZWN0b3J5ICYmCi0JKGNkIHN2bndjOyBzdm4gaW5mbyB1bmtub3duLXN5bWxpbmstZGlyZWN0b3J5KSBcCi0JCTI+IGV4cGVjdGVkLmluZm8tdW5rbm93bi1zeW1saW5rLWRpcmVjdG9yeSAmJgotCShjZCBnaXR3YzsgZ2l0LXN2biBpbmZvIHVua25vd24tc3ltbGluay1kaXJlY3RvcnkpIFwKLQkJMj4gYWN0dWFsLmluZm8tdW5rbm93bi1zeW1saW5rLWRpcmVjdG9yeSAmJgotCWdpdC1kaWZmIGV4cGVjdGVkLmluZm8tdW5rbm93bi1zeW1saW5rLWRpcmVjdG9yeSBcCi0JCSBhY3R1YWwuaW5mby11bmtub3duLXN5bWxpbmstZGlyZWN0b3J5CisJKGNkIGdpdHdjOyB0ZXN0X211c3RfZmFpbCBnaXQgc3ZuIGluZm8gdW5rbm93bi1zeW1saW5rLWRpcmVjdG9yeSkgXAorCQkgMj4gYWN0dWFsLmluZm8tdW5rbm93bi1zeW1saW5rLWRpcmVjdG9yeSAmJgorCWdyZXAgdW5rbm93bi1zeW1saW5rLWRpcmVjdG9yeSBhY3R1YWwuaW5mby11bmtub3duLXN5bWxpbmstZGlyZWN0b3J5CiAJIgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvIC0tdXJsIHVua25vd24tc3ltbGluay1kaXJlY3RvcnknICcKLQl0ZXN0IC16ICIkKGNkIGdpdHdjOyBnaXQtc3ZuIGluZm8gLS11cmwgdW5rbm93bi1zeW1saW5rLWRpcmVjdG9yeSBcCi0JCQkyPiAuLi9hY3R1YWwuaW5mby0tdXJsLXVua25vd24tc3ltbGluay1kaXJlY3RvcnkpIiAmJgotCWdpdC1kaWZmIGV4cGVjdGVkLmluZm8tdW5rbm93bi1zeW1saW5rLWRpcmVjdG9yeSBcCi0JCSBhY3R1YWwuaW5mby0tdXJsLXVua25vd24tc3ltbGluay1kaXJlY3RvcnkKKwkoY2QgZ2l0d2M7IHRlc3RfbXVzdF9mYWlsIGdpdCBzdm4gaW5mbyAtLXVybCB1bmtub3duLXN5bWxpbmstZGlyZWN0b3J5KSBcCisJCSAyPiBhY3R1YWwuaW5mby11cmwtdW5rbm93bi1zeW1saW5rLWRpcmVjdG9yeSAmJgorCWdyZXAgdW5rbm93bi1zeW1saW5rLWRpcmVjdG9yeSBhY3R1YWwuaW5mby11cmwtdW5rbm93bi1zeW1saW5rLWRpcmVjdG9yeQogCScKIAogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q5MTIwLWdpdC1zdm4tY2xvbmUtd2l0aC1wZXJjZW50LWVzY2FwZXMuc2ggYi90L3Q5MTIwLWdpdC1zdm4tY2xvbmUtd2l0aC1wZXJjZW50LWVzY2FwZXMuc2gKaW5kZXggNTk3OWUxMy4uZWYyYzA1MiAxMDA3NTUKLS0tIGEvdC90OTEyMC1naXQtc3ZuLWNsb25lLXdpdGgtcGVyY2VudC1lc2NhcGVzLnNoCisrKyBiL3QvdDkxMjAtZ2l0LXN2bi1jbG9uZS13aXRoLXBlcmNlbnQtZXNjYXBlcy5zaApAQCAtMyw3ICszLDcgQEAKICMgQ29weXJpZ2h0IChjKSAyMDA4IEtldmluIEJhbGxhcmQKICMKIAotdGVzdF9kZXNjcmlwdGlvbj0nZ2l0LXN2biBjbG9uZSB3aXRoIHBlcmNlbnQgZXNjYXBlcycKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBzdm4gY2xvbmUgd2l0aCBwZXJjZW50IGVzY2FwZXMnCiAuIC4vbGliLWdpdC1zdm4uc2gKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgc3ZucmVwbycgJwpAQCAtMjEsNyArMjEsNyBAQAogCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgY2xvbmUgd2l0aCBwZXJjZW50IGVzY2FwZXMnICcKIAkJZ2l0IHN2biBjbG9uZSAiJHN2bnJlcG8vcHIlMjBqZWN0IiBjbG9uZSAmJgogCQljZCBjbG9uZSAmJgotCQkJZ2l0IHJldi1wYXJzZSByZWZzL3JlbW90ZXMvZ2l0LXN2biAmJgorCQkJZ2l0IHJldi1wYXJzZSByZWZzLyR7cmVtb3Rlc19naXRfc3ZufSAmJgogCQljZCAuLgogCScKIGZpCmRpZmYgLS1naXQgYS90L3Q5MTIxLWdpdC1zdm4tZmV0Y2gtcmVuYW1lZC1kaXIuc2ggYi90L3Q5MTIxLWdpdC1zdm4tZmV0Y2gtcmVuYW1lZC1kaXIuc2gKaW5kZXggOTkyMzBiMC4uMDAwY2FkMyAxMDA3NTUKLS0tIGEvdC90OTEyMS1naXQtc3ZuLWZldGNoLXJlbmFtZWQtZGlyLnNoCisrKyBiL3QvdDkxMjEtZ2l0LXN2bi1mZXRjaC1yZW5hbWVkLWRpci5zaApAQCAtMywxMiArMywxMiBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMDggU2FudGhvc2ggS3VtYXIgTWFuaQogCiAKLXRlc3RfZGVzY3JpcHRpb249J2dpdC1zdm4gY2FuIGZldGNoIHJlbmFtZWQgZGlyZWN0b3JpZXMnCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc3ZuIGNhbiBmZXRjaCByZW5hbWVkIGRpcmVjdG9yaWVzJwogCiAuIC4vbGliLWdpdC1zdm4uc2gKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbG9hZCByZXBvc2l0b3J5IHdpdGggcmVuYW1lZCBkaXJlY3RvcnknICcKLQlzdm5hZG1pbiBsb2FkIC1xICIkcmF3c3ZucmVwbyIgPCAuLi90OTEyMS9yZW5hbWVkLWRpci5kdW1wCisJc3ZuYWRtaW4gbG9hZCAtcSAiJHJhd3N2bnJlcG8iIDwgIiRURVNUX0RJUkVDVE9SWSIvdDkxMjEvcmVuYW1lZC1kaXIuZHVtcAogCScKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5pdCBhbmQgZmV0Y2ggcmVwb3NpdG9yeScgJwpkaWZmIC0tZ2l0IGEvdC90OTEyMi1naXQtc3ZuLWF1dGhvci5zaCBiL3QvdDkxMjItZ2l0LXN2bi1hdXRob3Iuc2gKaW5kZXggMTE5MDU3Ni4uMWIxY2Y0NyAxMDA3NTUKLS0tIGEvdC90OTEyMi1naXQtc3ZuLWF1dGhvci5zaAorKysgYi90L3Q5MTIyLWdpdC1zdm4tYXV0aG9yLnNoCkBAIC0xMyw3ICsxMyw3IEBACiAJKQogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdpbnRlcmFjdCB3aXRoIGl0IHZpYSBnaXQtc3ZuJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbnRlcmFjdCB3aXRoIGl0IHZpYSBnaXQgc3ZuJyAnCiAJbWtkaXIgd29yay5naXQgJiYKIAkoCiAJCWNkIHdvcmsuZ2l0ICYmCmRpZmYgLS1naXQgYS90L3Q5MTIzLWdpdC1zdm4tcmVidWlsZC13aXRoLXJld3JpdGVyb290LnNoIGIvdC90OTEyMy1naXQtc3ZuLXJlYnVpbGQtd2l0aC1yZXdyaXRlcm9vdC5zaAppbmRleCBjMTg4NzhmLi5jZjA0MTUyIDEwMDc1NQotLS0gYS90L3Q5MTIzLWdpdC1zdm4tcmVidWlsZC13aXRoLXJld3JpdGVyb290LnNoCisrKyBiL3QvdDkxMjMtZ2l0LXN2bi1yZWJ1aWxkLXdpdGgtcmV3cml0ZXJvb3Quc2gKQEAgLTMsMjEgKzMsMjEgQEAKICMgQ29weXJpZ2h0IChjKSAyMDA4IEphbiBLcsO8Z2VyCiAjCiAKLXRlc3RfZGVzY3JpcHRpb249J2dpdC1zdm4gcmVzcGVjdHMgcmV3cml0ZVJvb3QgZHVyaW5nIHJlYnVpbGQnCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc3ZuIHJlc3BlY3RzIHJld3JpdGVSb290IGR1cmluZyByZWJ1aWxkJwogCiAuIC4vbGliLWdpdC1zdm4uc2gKIAogbWtkaXIgaW1wb3J0CiBjZCBpbXBvcnQKIAl0b3VjaCBmb28KLQlzdm4gaW1wb3J0IC1tICdpbXBvcnQgZm9yIGdpdC1zdm4nIC4gIiRzdm5yZXBvIiA+L2Rldi9udWxsCisJc3ZuIGltcG9ydCAtbSAnaW1wb3J0IGZvciBnaXQgc3ZuJyAuICIkc3ZucmVwbyIgPi9kZXYvbnVsbAogY2QgLi4KIHJtIC1yZiBpbXBvcnQKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5pdCwgZmV0Y2ggYW5kIGNoZWNrb3V0IHJlcG9zaXRvcnknICcKIAlnaXQgc3ZuIGluaXQgLS1yZXdyaXRlLXJvb3Q9aHR0cDovL2ludmFsaWQuaW52YWxpZC8gIiRzdm5yZXBvIiAmJgogCWdpdCBzdm4gZmV0Y2gKLQlnaXQgY2hlY2tvdXQgLWIgbXlicmFuY2ggcmVtb3Rlcy9naXQtc3ZuCisJZ2l0IGNoZWNrb3V0IC1iIG15YnJhbmNoICR7cmVtb3Rlc19naXRfc3ZufQogCScKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmVtb3ZlIHJldl9tYXAnICcKZGlmZiAtLWdpdCBhL3QvdDkxMjQtZ2l0LXN2bi1kY29tbWl0LWF1dG8tcHJvcHMuc2ggYi90L3Q5MTI0LWdpdC1zdm4tZGNvbW1pdC1hdXRvLXByb3BzLnNoCmluZGV4IDgyMjNjNTkuLjI2M2RiZjUgMTAwNzU1Ci0tLSBhL3QvdDkxMjQtZ2l0LXN2bi1kY29tbWl0LWF1dG8tcHJvcHMuc2gKKysrIGIvdC90OTEyNC1naXQtc3ZuLWRjb21taXQtYXV0by1wcm9wcy5zaApAQCAtMiw3ICsyLDcgQEAKICMKICMgQ29weXJpZ2h0IChjKSAyMDA4IEJyYWQgS2luZwogCi10ZXN0X2Rlc2NyaXB0aW9uPSdnaXQtc3ZuIGRjb21taXQgaG9ub3JzIGF1dG8tcHJvcHMnCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc3ZuIGRjb21taXQgaG9ub3JzIGF1dG8tcHJvcHMnCiAKIC4gLi9saWItZ2l0LXN2bi5zaAogCkBAIC0xNiwyNiArMTYsMjQgQEAKIEVPRgogfQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdpbml0aWFsaXplIGdpdC1zdm4nICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luaXRpYWxpemUgZ2l0IHN2bicgJwogCW1rZGlyIGltcG9ydCAmJgogCSgKIAkJY2QgaW1wb3J0ICYmCiAJCWVjaG8gZm9vID5mb28gJiYKLQkJc3ZuIGltcG9ydCAtbSAiaW1wb3J0IGZvciBnaXQtc3ZuIiAuICIkc3ZucmVwbyIKKwkJc3ZuIGltcG9ydCAtbSAiaW1wb3J0IGZvciBnaXQgc3ZuIiAuICIkc3ZucmVwbyIKIAkpICYmCiAJcm0gLXJmIGltcG9ydCAmJgotCWdpdC1zdm4gaW5pdCAiJHN2bnJlcG8iCi0JZ2l0LXN2biBmZXRjaAorCWdpdCBzdm4gaW5pdCAiJHN2bnJlcG8iCisJZ2l0IHN2biBmZXRjaAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdlbmFibGUgYXV0by1wcm9wcyBjb25maWcnICcKLQljZCAiJGdpdHRlc3RyZXBvIiAmJgogCW1rZGlyIHVzZXIgJiYKIAlnZW5lcmF0ZV9hdXRvX3Byb3BzIHllcyA+dXNlci9jb25maWcKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWRkIGZpbGVzIG1hdGNoaW5nIGF1dG8tcHJvcHMnICcKLQljZCAiJGdpdHRlc3RyZXBvIiAmJgogCWVjaG8gIiMhJFNIRUxMX1BBVEgiID5leGVjMS5zaCAmJgogCWNobW9kICt4IGV4ZWMxLnNoICYmCiAJZWNobyAiaGVsbG8iID5oZWxsby50eHQgJiYKQEAgLTQ2LDEyICs0NCwxMCBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdkaXNhYmxlIGF1dG8tcHJvcHMgY29uZmlnJyAnCi0JY2QgIiRnaXR0ZXN0cmVwbyIgJiYKIAlnZW5lcmF0ZV9hdXRvX3Byb3BzIG5vID51c2VyL2NvbmZpZwogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgZmlsZXMgbWF0Y2hpbmcgZGlzYWJsZWQgYXV0by1wcm9wcycgJwotCWNkICIkZ2l0dGVzdHJlcG8iICYmCiAJZWNobyAiIyRTSEVMTF9QQVRIIiA+ZXhlYzIuc2ggJiYKIAljaG1vZCAreCBleGVjMi5zaCAmJgogCWVjaG8gIndvcmxkIiA+d29ybGQudHh0ICYmCkBAIC02Miw2ICs1OCw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrIHJlc3VsdGluZyBzdm4gcmVwb3NpdG9yeScgJworKAogCW1rZGlyIHdvcmsgJiYKIAljZCB3b3JrICYmCiAJc3ZuIGNvICIkc3ZucmVwbyIgJiYKQEAgLTgxLDYgKzc4LDI0IEBACiAJdGVzdCAieCQoc3ZuIHByb3BnZXQgc3ZuOm1pbWUtdHlwZSB3b3JsZC50eHQpIiA9ICJ4IiAmJgogCXRlc3QgIngkKHN2biBwcm9wZ2V0IHN2bjplb2wtc3R5bGUgd29ybGQudHh0KSIgPSAieCIgJiYKIAl0ZXN0ICJ4JChzdm4gcHJvcGdldCBzdm46bWltZS10eXBlIHpvdCkiID0gIngiCispCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrIHJlbmFtZWQgZmlsZScgJworCXRlc3QgLWQgdXNlciAmJgorCWdlbmVyYXRlX2F1dG9fcHJvcHMgeWVzID4gdXNlci9jb25maWcgJiYKKwlnaXQgbXYgZm9vIGZvby5zaCAmJgorCWdpdCBjb21taXQgLW0gImZvbyA9PiBmb28uc2giICYmCisJZ2l0IHN2biBkY29tbWl0IC0tY29uZmlnLWRpcj11c2VyICYmCisJKAorCQljZCB3b3JrL3N2bnJlcG8gJiYKKwkJc3ZuIHVwICYmCisJCXRlc3QgISAtZSBmb28gJiYKKwkJdGVzdCAtZSBmb28uc2ggJiYKKwkJdGVzdCAieCQoc3ZuIHByb3BnZXQgc3ZuOm1pbWUtdHlwZSBmb28uc2gpIiA9IFwKKwkJICAgICAieGFwcGxpY2F0aW9uL3gtc2hlbGxzY3JpcHQiICYmCisJCXRlc3QgIngkKHN2biBwcm9wZ2V0IHN2bjplb2wtc3R5bGUgZm9vLnNoKSIgPSAieExGIgorCSkKICcKIAogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q5MTI1LWdpdC1zdm4tbXVsdGktZ2xvYi1icmFuY2gtbmFtZXMuc2ggYi90L3Q5MTI1LWdpdC1zdm4tbXVsdGktZ2xvYi1icmFuY2gtbmFtZXMuc2gKaW5kZXggNmI2MmI1Mi4uNDc1Yzc1MSAxMDA3NTUKLS0tIGEvdC90OTEyNS1naXQtc3ZuLW11bHRpLWdsb2ItYnJhbmNoLW5hbWVzLnNoCisrKyBiL3QvdDkxMjUtZ2l0LXN2bi1tdWx0aS1nbG9iLWJyYW5jaC1uYW1lcy5zaApAQCAtMSw3ICsxLDcgQEAKICMhL2Jpbi9zaAogIyBDb3B5cmlnaHQgKGMpIDIwMDggTWFyY3VzIEdyaWVwCiAKLXRlc3RfZGVzY3JpcHRpb249J2dpdC1zdm4gbXVsdGktZ2xvYiBicmFuY2ggbmFtZXMnCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc3ZuIG11bHRpLWdsb2IgYnJhbmNoIG5hbWVzJwogLiAuL2xpYi1naXQtc3ZuLnNoCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIHN2bnJlcG8nICcKZGlmZiAtLWdpdCBhL3QvdDkxMjctZ2l0LXN2bi1wYXJ0aWFsLXJlYnVpbGQuc2ggYi90L3Q5MTI3LWdpdC1zdm4tcGFydGlhbC1yZWJ1aWxkLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjg3Njk2YTkKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q5MTI3LWdpdC1zdm4tcGFydGlhbC1yZWJ1aWxkLnNoCkBAIC0wLDAgKzEsNTkgQEAKKyMhL2Jpbi9zaAorIworIyBDb3B5cmlnaHQgKGMpIDIwMDggRGVza2luIE1pbGxlcgorIworCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc3ZuIHBhcnRpYWwtcmVidWlsZCB0ZXN0cycKKy4gLi9saWItZ2l0LXN2bi5zaAorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbml0aWFsaXplIHN2bnJlcG8nICcKKwlta2RpciBpbXBvcnQgJiYKKwkoCisJCWNkIGltcG9ydCAmJgorCQlta2RpciB0cnVuayBicmFuY2hlcyB0YWdzICYmCisJCWNkIHRydW5rICYmCisJCWVjaG8gZm9vID4gZm9vICYmCisJCWNkIC4uICYmCisJCXN2biBpbXBvcnQgLW0gImltcG9ydCBmb3IgZ2l0LXN2biIgLiAiJHN2bnJlcG8iID4vZGV2L251bGwgJiYKKwkJc3ZuIGNvcHkgIiRzdm5yZXBvIi90cnVuayAiJHN2bnJlcG8iL2JyYW5jaGVzL2EgXAorCQkJLW0gImNyZWF0ZWQgYnJhbmNoIGEiICYmCisJCWNkIC4uICYmCisJCXJtIC1yZiBpbXBvcnQgJiYKKwkJc3ZuIGNvICIkc3ZucmVwbyIvdHJ1bmsgdHJ1bmsgJiYKKwkJY2QgdHJ1bmsgJiYKKwkJZWNobyBiYXIgPj4gZm9vICYmCisJCXN2biBjaSAtbSAidXBkYXRlZCB0cnVuayIgJiYKKwkJY2QgLi4gJiYKKwkJc3ZuIGNvICIkc3ZucmVwbyIvYnJhbmNoZXMvYSBhICYmCisJCWNkIGEgJiYKKwkJZWNobyBiYXogPj4gYSAmJgorCQlzdm4gYWRkIGEgJiYKKwkJc3ZuIGNpIC1tICJ1cGRhdGVkIGEiICYmCisJCWNkIC4uICYmCisJCWdpdCBzdm4gaW5pdCAtLXN0ZGxheW91dCAiJHN2bnJlcG8iCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbXBvcnQgYW4gZWFybHkgU1ZOIHJldmlzaW9uIGludG8gZ2l0JyAnCisJZ2l0IHN2biBmZXRjaCAtcjE6MgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtYWtlIGZ1bGwgZ2l0IG1pcnJvciBvZiBTVk4nICcKKwlta2RpciBtaXJyb3IgJiYKKwkoCisJCWNkIG1pcnJvciAmJgorCQlnaXQgaW5pdCAmJgorCQlnaXQgc3ZuIGluaXQgLS1zdGRsYXlvdXQgIiRzdm5yZXBvIiAmJgorCQlnaXQgc3ZuIGZldGNoICYmCisJCWNkIC4uCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmZXRjaCBmcm9tIGdpdCBtaXJyb3IgYW5kIHBhcnRpYWwtcmVidWlsZCcgJworCWdpdCBjb25maWcgLS1hZGQgcmVtb3RlLm9yaWdpbi51cmwgImZpbGU6Ly8kUFdEL21pcnJvci8uZ2l0IiAmJgorCWdpdCBjb25maWcgLS1hZGQgcmVtb3RlLm9yaWdpbi5mZXRjaCByZWZzL3JlbW90ZXMvKjpyZWZzL3JlbW90ZXMvKiAmJgorCWdpdCBmZXRjaCBvcmlnaW4gJiYKKwlnaXQgc3ZuIGZldGNoCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90OTEyOC1naXQtc3ZuLWNtZC1icmFuY2guc2ggYi90L3Q5MTI4LWdpdC1zdm4tY21kLWJyYW5jaC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yNTJkYWE3Ci0tLSAvZGV2L251bGwKKysrIGIvdC90OTEyOC1naXQtc3ZuLWNtZC1icmFuY2guc2gKQEAgLTAsMCArMSw3OCBAQAorIyEvYmluL3NoCisjCisjIENvcHlyaWdodCAoYykgMjAwOCBEZXNraW4gTWlsbGVyCisjCisKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBzdm4gcGFydGlhbC1yZWJ1aWxkIHRlc3RzJworLiAuL2xpYi1naXQtc3ZuLnNoCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luaXRpYWxpemUgc3ZucmVwbycgJworCW1rZGlyIGltcG9ydCAmJgorCSgKKwkJY2QgaW1wb3J0ICYmCisJCW1rZGlyIHRydW5rIGJyYW5jaGVzIHRhZ3MgJiYKKwkJY2QgdHJ1bmsgJiYKKwkJZWNobyBmb28gPiBmb28gJiYKKwkJY2QgLi4gJiYKKwkJc3ZuIGltcG9ydCAtbSAiaW1wb3J0IGZvciBnaXQtc3ZuIiAuICIkc3ZucmVwbyIgPi9kZXYvbnVsbCAmJgorCQljZCAuLiAmJgorCQlybSAtcmYgaW1wb3J0ICYmCisJCXN2biBjbyAiJHN2bnJlcG8iL3RydW5rIHRydW5rICYmCisJCWNkIHRydW5rICYmCisJCWVjaG8gYmFyID4+IGZvbyAmJgorCQlzdm4gY2kgLW0gInVwZGF0ZWQgdHJ1bmsiICYmCisJCWNkIC4uICYmCisJCXJtIC1yZiB0cnVuaworCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnaW1wb3J0IGludG8gZ2l0JyAnCisJZ2l0IHN2biBpbml0IC0tc3RkbGF5b3V0ICIkc3ZucmVwbyIgJiYKKwlnaXQgc3ZuIGZldGNoICYmCisJZ2l0IGNoZWNrb3V0IHJlbW90ZXMvdHJ1bmsKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHN2biBicmFuY2ggdGVzdHMnICcKKwlnaXQgc3ZuIGJyYW5jaCBhICYmCisJYmFzZT0kKGdpdCByZXYtcGFyc2UgSEVBRDopICYmCisJdGVzdCAkYmFzZSA9ICQoZ2l0IHJldi1wYXJzZSByZW1vdGVzL2E6KSAmJgorCWdpdCBzdm4gYnJhbmNoIC1tICJjcmVhdGVkIGJyYW5jaCBiIGJsYWgiIGIgJiYKKwl0ZXN0ICRiYXNlID0gJChnaXQgcmV2LXBhcnNlIHJlbW90ZXMvYjopICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGJyYW5jaCAtbSAibm8gYnJhbmNobmFtZSIgJiYKKwlnaXQgc3ZuIGJyYW5jaCAtbiBjICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSByZW1vdGVzL2MgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgc3ZuIGJyYW5jaCBhICYmCisJZ2l0IHN2biBicmFuY2ggLXQgdGFnMSAmJgorCXRlc3QgJGJhc2UgPSAkKGdpdCByZXYtcGFyc2UgcmVtb3Rlcy90YWdzL3RhZzE6KSAmJgorCWdpdCBzdm4gYnJhbmNoIC0tdGFnIHRhZzIgJiYKKwl0ZXN0ICRiYXNlID0gJChnaXQgcmV2LXBhcnNlIHJlbW90ZXMvdGFncy90YWcyOikgJiYKKwlnaXQgc3ZuIHRhZyB0YWczICYmCisJdGVzdCAkYmFzZSA9ICQoZ2l0IHJldi1wYXJzZSByZW1vdGVzL3RhZ3MvdGFnMzopICYmCisJZ2l0IHN2biB0YWcgLW0gImNyZWF0ZWQgdGFnNCBmb28iIHRhZzQgJiYKKwl0ZXN0ICRiYXNlID0gJChnaXQgcmV2LXBhcnNlIHJlbW90ZXMvdGFncy90YWc0OikgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgc3ZuIHRhZyAtbSAibm8gdGFnbmFtZSIgJiYKKwlnaXQgc3ZuIHRhZyAtbiB0YWc1ICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSByZW1vdGVzL3RhZ3MvdGFnNSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBzdm4gdGFnIHRhZzEKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYnJhbmNoIHVzZXMgY29ycmVjdCBzdm4tcmVtb3RlJyAnCisJKHN2biBjbyAiJHN2bnJlcG8iIHN2biAmJgorCWNkIHN2biAmJgorCW1rZGlyIG1pcnJvciAmJgorCXN2biBhZGQgbWlycm9yICYmCisJc3ZuIGNvcHkgdHJ1bmsgbWlycm9yLyAmJgorCXN2biBjb3B5IHRhZ3MgbWlycm9yLyAmJgorCXN2biBjb3B5IGJyYW5jaGVzIG1pcnJvci8gJiYKKwlzdm4gY2kgLW0gIm1hZGUgbWlycm9yIiApICYmCisJcm0gLXJmIHN2biAmJgorCWdpdCBzdm4gaW5pdCAtcyAtUiBtaXJyb3IgLS1wcmVmaXg9bWlycm9yLyAiJHN2bnJlcG8iL21pcnJvciAmJgorCWdpdCBzdm4gZmV0Y2ggLVIgbWlycm9yICYmCisJZ2l0IGNoZWNrb3V0IG1pcnJvci90cnVuayAmJgorCWJhc2U9JChnaXQgcmV2LXBhcnNlIEhFQUQ6KSAmJgorCWdpdCBzdm4gYnJhbmNoIC1tICJicmFuY2ggaW4gbWlycm9yIiBkICYmCisJdGVzdCAkYmFzZSA9ICQoZ2l0IHJldi1wYXJzZSByZW1vdGVzL21pcnJvci9kOikgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIHJlbW90ZXMvZAorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDkxMjktZ2l0LXN2bi1pMThuLWNvbW1pdGVuY29kaW5nLnNoIGIvdC90OTEyOS1naXQtc3ZuLWkxOG4tY29tbWl0ZW5jb2Rpbmcuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOGE5ZGRlNAotLS0gL2Rldi9udWxsCisrKyBiL3QvdDkxMjktZ2l0LXN2bi1pMThuLWNvbW1pdGVuY29kaW5nLnNoCkBAIC0wLDAgKzEsODQgQEAKKyMhL2Jpbi9zaAorIworIyBDb3B5cmlnaHQgKGMpIDIwMDggRXJpYyBXb25nCisKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBzdm4gaG9ub3JzIGkxOG4uY29tbWl0RW5jb2RpbmcgaW4gY29uZmlnJworCisuIC4vbGliLWdpdC1zdm4uc2gKKworY29tcGFyZV9naXRfaGVhZF93aXRoICgpIHsKKwlucj1gd2MgLWwgPCAiJDEiYAorCWE9NworCWI9JCgoJGEgKyAkbnIgLSAxKSkKKwlnaXQgY2F0LWZpbGUgY29tbWl0IEhFQUQgfCBzZWQgLW5lICIkYSwke2J9cCIgPmN1cnJlbnQgJiYKKwl0ZXN0X2NtcCBjdXJyZW50ICIkMSIKK30KKworY29tcGFyZV9zdm5faGVhZF93aXRoICgpIHsKKwlMQ19BTEw9ZW5fVVMuVVRGLTggc3ZuIGxvZyAtLWxpbWl0IDEgYGdpdCBzdm4gaW5mbyAtLXVybGAgfCBcCisJCXNlZCAtZSAxLDNkIC1lICIvXi1cezEsXH1cJC9kIiA+Y3VycmVudCAmJgorCXRlc3RfY21wIGN1cnJlbnQgIiQxIgorfQorCitmb3IgSCBpbiBJU08tODg1OS0xIEVVQ0pQIElTTy0yMDIyLUpQCitkbworCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgIiRIIHNldHVwIiAnCisJCW1rZGlyICRIICYmCisJCXN2biBpbXBvcnQgLW0gIiRIIHRlc3QiICRIICIkc3ZucmVwbyIvJEggJiYKKwkJZ2l0IHN2biBjbG9uZSAiJHN2bnJlcG8iLyRIICRICisJJworZG9uZQorCitmb3IgSCBpbiBJU08tODg1OS0xIEVVQ0pQIElTTy0yMDIyLUpQCitkbworCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgIiRIIGNvbW1pdCBvbiBnaXQgc2lkZSIgJworCSgKKwkJY2QgJEggJiYKKwkJZ2l0IGNvbmZpZyBpMThuLmNvbW1pdGVuY29kaW5nICRIICYmCisJCWdpdCBjaGVja291dCAtYiB0IHJlZnMvcmVtb3Rlcy9naXQtc3ZuICYmCisJCWVjaG8gJEggPkYgJiYKKwkJZ2l0IGFkZCBGICYmCisJCWdpdCBjb21taXQgLWEgLUYgIiRURVNUX0RJUkVDVE9SWSIvdDM5MDAvJEgudHh0ICYmCisJCUU9JChnaXQgY2F0LWZpbGUgY29tbWl0IEhFQUQgfCBzZWQgLW5lICJzL15lbmNvZGluZyAvL3AiKSAmJgorCQl0ZXN0ICJ6JEUiID0gInokSCIKKwkJY29tcGFyZV9naXRfaGVhZF93aXRoICIkVEVTVF9ESVJFQ1RPUlkiL3QzOTAwLyRILnR4dAorCSkKKwknCitkb25lCisKK2ZvciBIIGluIElTTy04ODU5LTEgRVVDSlAgSVNPLTIwMjItSlAKK2RvCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAiJEggZGNvbW1pdCB0byBzdm4iICcKKwkoCisJCWNkICRIICYmCisJCWdpdCBzdm4gZGNvbW1pdCAmJgorCQlnaXQgY2F0LWZpbGUgY29tbWl0IEhFQUQgfCBncmVwIGdpdC1zdm4taWQ6ICYmCisJCUU9JChnaXQgY2F0LWZpbGUgY29tbWl0IEhFQUQgfCBzZWQgLW5lICJzL15lbmNvZGluZyAvL3AiKSAmJgorCQl0ZXN0ICJ6JEUiID0gInokSCIgJiYKKwkJY29tcGFyZV9naXRfaGVhZF93aXRoICIkVEVTVF9ESVJFQ1RPUlkiL3QzOTAwLyRILnR4dAorCSkKKwknCitkb25lCisKK2lmIGxvY2FsZSAtYSB8Z3JlcCAtcSBlbl9VUy51dGY4OyB0aGVuCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAnSVNPLTg4NTktMSBzaG91bGQgbWF0Y2ggVVRGLTggaW4gc3ZuJyAnCisJKAorCQljZCBJU08tODg1OS0xICYmCisJCWNvbXBhcmVfc3ZuX2hlYWRfd2l0aCAiJFRFU1RfRElSRUNUT1JZIi90MzkwMC8xLVVURi04LnR4dAorCSkKKwknCisKKwlmb3IgSCBpbiBFVUNKUCBJU08tMjAyMi1KUAorCWRvCisJCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJyRIIHNob3VsZCBtYXRjaCBVVEYtOCBpbiBzdm4nICcKKwkJKAorCQkJY2QgJEggJiYKKwkJCWNvbXBhcmVfc3ZuX2hlYWRfd2l0aCAiJFRFU1RfRElSRUNUT1JZIi90MzkwMC8yLVVURi04LnR4dAorCQkpCisJCScKKwlkb25lCitlbHNlCisJc2F5ICJVVEYtOCBsb2NhbGUgbm90IGF2YWlsYWJsZSwgdGVzdCBza2lwcGVkIgorZmkKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q5MjAwLWdpdC1jdnNleHBvcnRjb21taXQuc2ggYi90L3Q5MjAwLWdpdC1jdnNleHBvcnRjb21taXQuc2gKaW5kZXggM2UzMmU4NC4uMjQ1YTdjMyAxMDA3NTUKLS0tIGEvdC90OTIwMC1naXQtY3ZzZXhwb3J0Y29tbWl0LnNoCisrKyBiL3QvdDkyMDAtZ2l0LWN2c2V4cG9ydGNvbW1pdC5zaApAQCAtOSw3ICs5LDcgQEAKIGN2cyA+L2Rldi9udWxsIDI+JjEKIGlmIHRlc3QgJD8gLW5lIDEKIHRoZW4KLSAgICB0ZXN0X2V4cGVjdF9zdWNjZXNzICdza2lwcGluZyBnaXQtY3ZzZXhwb3J0Y29tbWl0IHRlc3RzLCBjdnMgbm90IGZvdW5kJyA6CisgICAgdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2tpcHBpbmcgZ2l0IGN2c2V4cG9ydGNvbW1pdCB0ZXN0cywgY3ZzIG5vdCBmb3VuZCcgOgogICAgIHRlc3RfZG9uZQogICAgIGV4aXQKIGZpCkBAIC00NSw4ICs0NSw4IEBACiAgICAgJ21rZGlyIEEgQiBDIEQgRSBGICYmCiAgICAgIGVjaG8gaGVsbG8xID5BL25ld2ZpbGUxLnR4dCAmJgogICAgICBlY2hvIGhlbGxvMiA+Qi9uZXdmaWxlMi50eHQgJiYKLSAgICAgY3AgLi4vdGVzdDkyMDBhLnBuZyBDL25ld2ZpbGUzLnBuZyAmJgotICAgICBjcCAuLi90ZXN0OTIwMGEucG5nIEQvbmV3ZmlsZTQucG5nICYmCisgICAgIGNwICIkVEVTVF9ESVJFQ1RPUlkiL3Rlc3Q5MjAwYS5wbmcgQy9uZXdmaWxlMy5wbmcgJiYKKyAgICAgY3AgIiRURVNUX0RJUkVDVE9SWSIvdGVzdDkyMDBhLnBuZyBEL25ld2ZpbGU0LnBuZyAmJgogICAgICBnaXQgYWRkIEEvbmV3ZmlsZTEudHh0ICYmCiAgICAgIGdpdCBhZGQgQi9uZXdmaWxlMi50eHQgJiYKICAgICAgZ2l0IGFkZCBDL25ld2ZpbGUzLnBuZyAmJgpAQCAtNzEsOCArNzEsOCBAQAogICAgICBybSAtZiBCL25ld2ZpbGUyLnR4dCAmJgogICAgICBybSAtZiBDL25ld2ZpbGUzLnBuZyAmJgogICAgICBlY2hvIEhlbGxvNSAgPkUvbmV3ZmlsZTUudHh0ICYmCi0gICAgIGNwIC4uL3Rlc3Q5MjAwYi5wbmcgRC9uZXdmaWxlNC5wbmcgJiYKLSAgICAgY3AgLi4vdGVzdDkyMDBhLnBuZyBGL25ld2ZpbGU2LnBuZyAmJgorICAgICBjcCAiJFRFU1RfRElSRUNUT1JZIi90ZXN0OTIwMGIucG5nIEQvbmV3ZmlsZTQucG5nICYmCisgICAgIGNwICIkVEVTVF9ESVJFQ1RPUlkiL3Rlc3Q5MjAwYS5wbmcgRi9uZXdmaWxlNi5wbmcgJiYKICAgICAgZ2l0IGFkZCBFL25ld2ZpbGU1LnR4dCAmJgogICAgICBnaXQgYWRkIEYvbmV3ZmlsZTYucG5nICYmCiAgICAgIGdpdCBjb21taXQgLWEgLW0gIlRlc3Q6IFJlbW92ZSwgYWRkIGFuZCB1cGRhdGUiICYmCkBAIC05MSw3ICs5MSw3IEBACiAgICAgIGRpZmYgRi9uZXdmaWxlNi5wbmcgLi4vRi9uZXdmaWxlNi5wbmcKICAgICAgKScKIAotIyBTaG91bGQgZmFpbCAoYnV0IG9ubHkgb24gdGhlIGdpdC1jdnNleHBvcnRjb21taXQgc3RhZ2UpCisjIFNob3VsZCBmYWlsIChidXQgb25seSBvbiB0aGUgZ2l0IGN2c2V4cG9ydGNvbW1pdCBzdGFnZSkKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdGYWlsIHRvIGNoYW5nZSBiaW5hcnkgbW9yZSB0aGFuIG9uZSBnZW5lcmF0aW9uIG9sZCcgXAogICAgICdjYXQgRi9uZXdmaWxlNi5wbmcgPj5EL25ld2ZpbGU0LnBuZyAmJgpAQCAtMTYwLDI0ICsxNjAsMjQgQEAKICAgICAgJ21rZGlyICJHIGciICYmCiAgICAgICBlY2hvIG9rIHRoZW4gPiJHIGcvd2l0aCBzcGFjZXMudHh0IiAmJgogICAgICAgZ2l0IGFkZCAiRyBnL3dpdGggc3BhY2VzLnR4dCIgJiYgXAotICAgICAgY3AgLi4vdGVzdDkyMDBhLnBuZyAiRyBnL3dpdGggc3BhY2VzLnBuZyIgJiYgXAorICAgICAgY3AgIiRURVNUX0RJUkVDVE9SWSIvdGVzdDkyMDBhLnBuZyAiRyBnL3dpdGggc3BhY2VzLnBuZyIgJiYgXAogICAgICAgZ2l0IGFkZCAiRyBnL3dpdGggc3BhY2VzLnBuZyIgJiYKICAgICAgIGdpdCBjb21taXQgLWEgLW0gIldpdGggc3BhY2VzIiAmJgogICAgICAgaWQ9JChnaXQgcmV2LWxpc3QgLS1tYXgtY291bnQ9MSBIRUFEKSAmJgogICAgICAgKGNkICIkQ1ZTV09SSyIgJiYKLSAgICAgIGdpdC1jdnNleHBvcnRjb21taXQgLWMgJGlkICYmCisgICAgICBnaXQgY3ZzZXhwb3J0Y29tbWl0IC1jICRpZCAmJgogICAgICAgY2hlY2tfZW50cmllcyAiRyBnIiAid2l0aCBzcGFjZXMucG5nLzEuMS8ta2J8d2l0aCBzcGFjZXMudHh0LzEuMS8iCiAgICAgICApJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAgJ1VwZGF0ZSBmaWxlIHdpdGggc3BhY2VzIGluIGZpbGUgbmFtZScgXAogICAgICAnZWNobyBPayB0aGVuID4+IkcgZy93aXRoIHNwYWNlcy50eHQiICYmCi0gICAgICBjYXQgLi4vdGVzdDkyMDBhLnBuZyA+PiJHIGcvd2l0aCBzcGFjZXMucG5nIiAmJiBcCisgICAgICBjYXQgIiRURVNUX0RJUkVDVE9SWSIvdGVzdDkyMDBhLnBuZyA+PiJHIGcvd2l0aCBzcGFjZXMucG5nIiAmJiBcCiAgICAgICBnaXQgYWRkICJHIGcvd2l0aCBzcGFjZXMucG5nIiAmJgogICAgICAgZ2l0IGNvbW1pdCAtYSAtbSAiVXBkYXRlIHdpdGggc3BhY2VzIiAmJgogICAgICAgaWQ9JChnaXQgcmV2LWxpc3QgLS1tYXgtY291bnQ9MSBIRUFEKSAmJgogICAgICAgKGNkICIkQ1ZTV09SSyIgJiYKLSAgICAgIGdpdC1jdnNleHBvcnRjb21taXQgLWMgJGlkCisgICAgICBnaXQgY3ZzZXhwb3J0Y29tbWl0IC1jICRpZAogICAgICAgY2hlY2tfZW50cmllcyAiRyBnIiAid2l0aCBzcGFjZXMucG5nLzEuMi8ta2J8d2l0aCBzcGFjZXMudHh0LzEuMi8iCiAgICAgICApJwogCkBAIC0xOTcsMTIgKzE5NywxMiBAQAogICAgICAnbWtkaXIgLXAgw4UvZ29vL2EvYi9jL2QvZS9mL2cvaC9pL2ovay9sL20vbi9vL3AvcS9yL3MvdC91L3Yvdy94L3kvei/DpS/DpC/DtiAmJgogICAgICAgZWNobyBGb28gPsOFL2dvby9hL2IvYy9kL2UvZi9nL2gvaS9qL2svbC9tL24vby9wL3Evci9zL3QvdS92L3cveC95L3ovw6Uvw6Qvw7YvZ8OlcmRldHPDpWfDpXJkZXQudHh0ICYmCiAgICAgICBnaXQgYWRkIMOFL2dvby9hL2IvYy9kL2UvZi9nL2gvaS9qL2svbC9tL24vby9wL3Evci9zL3QvdS92L3cveC95L3ovw6Uvw6Qvw7YvZ8OlcmRldHPDpWfDpXJkZXQudHh0ICYmCi0gICAgICBjcCAuLi90ZXN0OTIwMGEucG5nIMOFL2dvby9hL2IvYy9kL2UvZi9nL2gvaS9qL2svbC9tL24vby9wL3Evci9zL3QvdS92L3cveC95L3ovw6Uvw6Qvw7YvZ8OlcmRldHPDpWfDpXJkZXQucG5nICYmCisgICAgICBjcCAiJFRFU1RfRElSRUNUT1JZIi90ZXN0OTIwMGEucG5nIMOFL2dvby9hL2IvYy9kL2UvZi9nL2gvaS9qL2svbC9tL24vby9wL3Evci9zL3QvdS92L3cveC95L3ovw6Uvw6Qvw7YvZ8OlcmRldHPDpWfDpXJkZXQucG5nICYmCiAgICAgICBnaXQgYWRkIMOFL2dvby9hL2IvYy9kL2UvZi9nL2gvaS9qL2svbC9tL24vby9wL3Evci9zL3QvdS92L3cveC95L3ovw6Uvw6Qvw7YvZ8OlcmRldHPDpWfDpXJkZXQucG5nICYmCiAgICAgICBnaXQgY29tbWl0IC1hIC1tICJHw6VyIGRldCBzw6UgZ8OlciBkZXQiICYmIFwKICAgICAgIGlkPSQoZ2l0IHJldi1saXN0IC0tbWF4LWNvdW50PTEgSEVBRCkgJiYKICAgICAgIChjZCAiJENWU1dPUksiICYmCi0gICAgICBnaXQtY3ZzZXhwb3J0Y29tbWl0IC12IC1jICRpZCAmJgorICAgICAgZ2l0IGN2c2V4cG9ydGNvbW1pdCAtdiAtYyAkaWQgJiYKICAgICAgIGNoZWNrX2VudHJpZXMgXAogICAgICAgIsOFL2dvby9hL2IvYy9kL2UvZi9nL2gvaS9qL2svbC9tL24vby9wL3Evci9zL3QvdS92L3cveC95L3ovw6Uvw6Qvw7YiIFwKICAgICAgICJnw6VyZGV0c8OlZ8OlcmRldC5wbmcvMS4xLy1rYnxnw6VyZGV0c8OlZ8OlcmRldC50eHQvMS4xLyIKQEAgLTIyMiw3ICsyMjIsNyBAQAogICAgICAgZ2l0IGNvbW1pdCAtYSAtbSAiVXBkYXRlIHR3byIgJiYKICAgICAgIGlkPSQoZ2l0IHJldi1saXN0IC0tbWF4LWNvdW50PTEgSEVBRCkgJiYKICAgICAgIChjZCAiJENWU1dPUksiICYmCi0gICAgICB0ZXN0X211c3RfZmFpbCBnaXQtY3ZzZXhwb3J0Y29tbWl0IC1jICRpZAorICAgICAgdGVzdF9tdXN0X2ZhaWwgZ2l0IGN2c2V4cG9ydGNvbW1pdCAtYyAkaWQKICAgICAgICknCiAKIGNhc2UgIiQoZ2l0IGNvbmZpZyAtLWJvb2wgY29yZS5maWxlbW9kZSkiIGluCkBAIC0yMzksNyArMjM5LDcgQEAKICAgICAgIGdpdCBhZGQgRy9vZmYgJiYKICAgICAgIGdpdCBjb21taXQgLWEgLW0gIkV4ZWN1dGUgdGVzdCIgJiYKICAgICAgIChjZCAiJENWU1dPUksiICYmCi0gICAgICBnaXQtY3ZzZXhwb3J0Y29tbWl0IC1jIEhFQUQKKyAgICAgIGdpdCBjdnNleHBvcnRjb21taXQgLWMgSEVBRAogICAgICAgdGVzdCAteCBHL29uICYmCiAgICAgICAhIHRlc3QgLXggRy9vZmYKICAgICAgICknCmRpZmYgLS1naXQgYS90L3Q5MzAwLWZhc3QtaW1wb3J0LnNoIGIvdC90OTMwMC1mYXN0LWltcG9ydC5zaAppbmRleCA4Yjc5ZGU1Li44MjFiZTdjIDEwMDc1NQotLS0gYS90L3Q5MzAwLWZhc3QtaW1wb3J0LnNoCisrKyBiL3QvdDkzMDAtZmFzdC1pbXBvcnQuc2gKQEAgLTMsOSArMyw5IEBACiAjIENvcHlyaWdodCAoYykgMjAwNyBTaGF3biBQZWFyY2UKICMKIAotdGVzdF9kZXNjcmlwdGlvbj0ndGVzdCBnaXQtZmFzdC1pbXBvcnQgdXRpbGl0eScKK3Rlc3RfZGVzY3JpcHRpb249J3Rlc3QgZ2l0IGZhc3QtaW1wb3J0IHV0aWxpdHknCiAuIC4vdGVzdC1saWIuc2gKLS4gLi4vZGlmZi1saWIuc2ggOyMgdGVzdC1saWIgY2hkaXIncyBpbnRvIHRyYXNoCisuICIkVEVTVF9ESVJFQ1RPUlkiL2RpZmYtbGliLnNoIDsjIHRlc3QtbGliIGNoZGlyJ3MgaW50byB0cmFzaAogCiBmaWxlMl9kYXRhPSdmaWxlMgogc2Vjb25kIGxpbmUgb2YgRU9GJwpAQCAtNjUsNyArNjUsNyBAQAogSU5QVVRfRU5ECiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnQTogY3JlYXRlIHBhY2sgZnJvbSBzdGRpbicgXAotICAgICdnaXQtZmFzdC1pbXBvcnQgLS1leHBvcnQtbWFya3M9bWFya3Mub3V0IDxpbnB1dCAmJgorICAgICdnaXQgZmFzdC1pbXBvcnQgLS1leHBvcnQtbWFya3M9bWFya3Mub3V0IDxpbnB1dCAmJgogCSBnaXQgd2hhdGNoYW5nZWQgbWFzdGVyJwogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAJJ0E6IHZlcmlmeSBwYWNrJyBcCkBAIC0xMzEsNyArMTMxLDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAJJ0E6IHZlcmlmeSBtYXJrcyBpbXBvcnQnIFwKLQknZ2l0LWZhc3QtaW1wb3J0IFwKKwknZ2l0IGZhc3QtaW1wb3J0IFwKIAkJLS1pbXBvcnQtbWFya3M9bWFya3Mub3V0IFwKIAkJLS1leHBvcnQtbWFya3M9bWFya3MubmV3IFwKIAkJPC9kZXYvbnVsbCAmJgpAQCAtMTUxLDcgKzE1MSw3IEBACiBJTlBVVF9FTkQKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogCSdBOiB2ZXJpZnkgbWFya3MgaW1wb3J0IGRvZXMgbm90IGNyYXNoJyBcCi0JJ2dpdC1mYXN0LWltcG9ydCAtLWltcG9ydC1tYXJrcz1tYXJrcy5vdXQgPGlucHV0ICYmCisJJ2dpdCBmYXN0LWltcG9ydCAtLWltcG9ydC1tYXJrcz1tYXJrcy5vdXQgPGlucHV0ICYmCiAJIGdpdCB3aGF0Y2hhbmdlZCB2ZXJpZnktLWltcG9ydC1tYXJrcycKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogCSdBOiB2ZXJpZnkgcGFjaycgXApAQCAtMTg0LDcgKzE4NCw3IEBACiAKIElOUFVUX0VORAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnQjogZmFpbCBvbiBpbnZhbGlkIGJsb2Igc2hhMScgJwotICAgIHRlc3RfbXVzdF9mYWlsIGdpdC1mYXN0LWltcG9ydCA8aW5wdXQKKyAgICB0ZXN0X211c3RfZmFpbCBnaXQgZmFzdC1pbXBvcnQgPGlucHV0CiAnCiBybSAtZiAuZ2l0L29iamVjdHMvcGFja18qIC5naXQvb2JqZWN0cy9pbmRleF8qCiAKQEAgLTE5OSw3ICsxOTksNyBAQAogCiBJTlBVVF9FTkQKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ0I6IGZhaWwgb24gaW52YWxpZCBicmFuY2ggbmFtZSAiLmJhZGJyYW5jaG5hbWUiJyAnCi0gICAgdGVzdF9tdXN0X2ZhaWwgZ2l0LWZhc3QtaW1wb3J0IDxpbnB1dAorICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBmYXN0LWltcG9ydCA8aW5wdXQKICcKIHJtIC1mIC5naXQvb2JqZWN0cy9wYWNrXyogLmdpdC9vYmplY3RzL2luZGV4XyoKIApAQCAtMjE0LDcgKzIxNCw3IEBACiAKIElOUFVUX0VORAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnQjogZmFpbCBvbiBpbnZhbGlkIGJyYW5jaCBuYW1lICJiYWRbYnJhbmNoXW5hbWUiJyAnCi0gICAgdGVzdF9tdXN0X2ZhaWwgZ2l0LWZhc3QtaW1wb3J0IDxpbnB1dAorICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBmYXN0LWltcG9ydCA8aW5wdXQKICcKIHJtIC1mIC5naXQvb2JqZWN0cy9wYWNrXyogLmdpdC9vYmplY3RzL2luZGV4XyoKIApAQCAtMjMwLDcgKzIzMCw3IEBACiBJTlBVVF9FTkQKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdCOiBhY2NlcHQgYnJhbmNoIG5hbWUgIlRFTVBfVEFHIicgXAotICAgICdnaXQtZmFzdC1pbXBvcnQgPGlucHV0ICYmCisgICAgJ2dpdCBmYXN0LWltcG9ydCA8aW5wdXQgJiYKIAkgdGVzdCAtZiAuZ2l0L1RFTVBfVEFHICYmCiAJIHRlc3QgYGdpdCByZXYtcGFyc2UgbWFzdGVyYCA9IGBnaXQgcmV2LXBhcnNlIFRFTVBfVEFHXmAnCiBybSAtZiAuZ2l0L1RFTVBfVEFHCkBAIC0yMzksNyArMjM5LDcgQEAKICMjIyBzZXJpZXMgQwogIyMjCiAKLW5ld2Y9YGVjaG8gaGkgbmV3ZiB8IGdpdC1oYXNoLW9iamVjdCAtdyAtLXN0ZGluYAorbmV3Zj1gZWNobyBoaSBuZXdmIHwgZ2l0IGhhc2gtb2JqZWN0IC13IC0tc3RkaW5gCiBvbGRmPWBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IG1hc3RlcjpmaWxlMmAKIHRlc3RfdGljawogY2F0ID5pbnB1dCA8PElOUFVUX0VORApAQCAtMjU3LDcgKzI1Nyw3IEBACiBJTlBVVF9FTkQKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdDOiBpbmNyZW1lbnRhbCBpbXBvcnQgY3JlYXRlIHBhY2sgZnJvbSBzdGRpbicgXAotICAgICdnaXQtZmFzdC1pbXBvcnQgPGlucHV0ICYmCisgICAgJ2dpdCBmYXN0LWltcG9ydCA8aW5wdXQgJiYKIAkgZ2l0IHdoYXRjaGFuZ2VkIGJyYW5jaCcKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogCSdDOiB2ZXJpZnkgcGFjaycgXApAQCAtMzE1LDcgKzMxNSw3IEBACiBJTlBVVF9FTkQKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdEOiBpbmxpbmUgZGF0YSBpbiBjb21taXQnIFwKLSAgICAnZ2l0LWZhc3QtaW1wb3J0IDxpbnB1dCAmJgorICAgICdnaXQgZmFzdC1pbXBvcnQgPGlucHV0ICYmCiAJIGdpdCB3aGF0Y2hhbmdlZCBicmFuY2gnCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKIAknRDogdmVyaWZ5IHBhY2snIFwKQEAgLTM1OCwxMSArMzU4LDExIEBACiAKIElOUFVUX0VORAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnRTogcmZjMjgyMiBkYXRlLCAtLWRhdGUtZm9ybWF0PXJhdycgJwotICAgIHRlc3RfbXVzdF9mYWlsIGdpdC1mYXN0LWltcG9ydCAtLWRhdGUtZm9ybWF0PXJhdyA8aW5wdXQKKyAgICB0ZXN0X211c3RfZmFpbCBnaXQgZmFzdC1pbXBvcnQgLS1kYXRlLWZvcm1hdD1yYXcgPGlucHV0CiAnCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnRTogcmZjMjgyMiBkYXRlLCAtLWRhdGUtZm9ybWF0PXJmYzI4MjInIFwKLSAgICAnZ2l0LWZhc3QtaW1wb3J0IC0tZGF0ZS1mb3JtYXQ9cmZjMjgyMiA8aW5wdXQnCisgICAgJ2dpdCBmYXN0LWltcG9ydCAtLWRhdGUtZm9ybWF0PXJmYzI4MjIgPGlucHV0JwogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAJJ0U6IHZlcmlmeSBwYWNrJyBcCiAJJ2ZvciBwIGluIC5naXQvb2JqZWN0cy9wYWNrLyoucGFjaztkbyBnaXQgdmVyaWZ5LXBhY2sgJHB8fGV4aXQ7ZG9uZScKQEAgLTM5OSw3ICszOTksNyBAQAogSU5QVVRfRU5ECiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnRjogbm9uLWZhc3QtZm9yd2FyZCB1cGRhdGUgc2tpcHMnIFwKLSAgICAnaWYgZ2l0LWZhc3QtaW1wb3J0IDxpbnB1dAorICAgICdpZiBnaXQgZmFzdC1pbXBvcnQgPGlucHV0CiAJIHRoZW4KIAkJZWNobyBCQUQgZ2ZpIGRpZCBub3QgZmFpbAogCQlyZXR1cm4gMQpAQCAtNDQ5LDcgKzQ0OSw3IEBACiBJTlBVVF9FTkQKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdHOiBub24tZmFzdC1mb3J3YXJkIHVwZGF0ZSBmb3JjZWQnIFwKLSAgICAnZ2l0LWZhc3QtaW1wb3J0IC0tZm9yY2UgPGlucHV0JworICAgICdnaXQgZmFzdC1pbXBvcnQgLS1mb3JjZSA8aW5wdXQnCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKIAknRzogdmVyaWZ5IHBhY2snIFwKIAknZm9yIHAgaW4gLmdpdC9vYmplY3RzL3BhY2svKi5wYWNrO2RvIGdpdCB2ZXJpZnktcGFjayAkcHx8ZXhpdDtkb25lJwpAQCAtNDg1LDcgKzQ4NSw3IEBACiBJTlBVVF9FTkQKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdIOiBkZWxldGFsbCwgYWRkIDEnIFwKLSAgICAnZ2l0LWZhc3QtaW1wb3J0IDxpbnB1dCAmJgorICAgICdnaXQgZmFzdC1pbXBvcnQgPGlucHV0ICYmCiAJIGdpdCB3aGF0Y2hhbmdlZCBIJwogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAJJ0g6IHZlcmlmeSBwYWNrJyBcCkBAIC01MjUsNyArNTI1LDcgQEAKIElOUFVUX0VORAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ0k6IGV4cG9ydC1wYWNrLWVkZ2VzJyBcCi0gICAgJ2dpdC1mYXN0LWltcG9ydCAtLWV4cG9ydC1wYWNrLWVkZ2VzPWVkZ2VzLmxpc3QgPGlucHV0JworICAgICdnaXQgZmFzdC1pbXBvcnQgLS1leHBvcnQtcGFjay1lZGdlcz1lZGdlcy5saXN0IDxpbnB1dCcKIAogY2F0ID5leHBlY3QgPDxFT0YKIC5naXQvb2JqZWN0cy9wYWNrL3BhY2stLnBhY2s6IGBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IGV4cG9ydC1ib3VuZGFyeWAKQEAgLTU1OSw3ICs1NTksNyBAQAogSU5QVVRfRU5ECiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnSjogcmVzZXQgZXhpc3RpbmcgYnJhbmNoIGNyZWF0ZXMgZW1wdHkgY29tbWl0JyBcCi0gICAgJ2dpdC1mYXN0LWltcG9ydCA8aW5wdXQnCisgICAgJ2dpdCBmYXN0LWltcG9ydCA8aW5wdXQnCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKIAknSjogYnJhbmNoIGhhcyAxIGNvbW1pdCwgZW1wdHkgdHJlZScgXAogCSd0ZXN0IDEgPSBgZ2l0IHJldi1saXN0IEogfCB3YyAtbGAgJiYKQEAgLTU4OSw3ICs1ODksNyBAQAogSU5QVVRfRU5ECiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnSzogcmVpbml0IGJyYW5jaCB3aXRoIGZyb20nIFwKLSAgICAnZ2l0LWZhc3QtaW1wb3J0IDxpbnB1dCcKKyAgICAnZ2l0IGZhc3QtaW1wb3J0IDxpbnB1dCcKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdLOiB2ZXJpZnkgS14xID0gYnJhbmNoXjEnIFwKICAgICAndGVzdCBgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBicmFuY2heMWAgXApAQCAtNjQxLDcgKzY0MSw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdMOiB2ZXJpZnkgaW50ZXJuYWwgdHJlZSBzb3J0aW5nJyBcCi0JJ2dpdC1mYXN0LWltcG9ydCA8aW5wdXQgJiYKKwknZ2l0IGZhc3QtaW1wb3J0IDxpbnB1dCAmJgogCSBnaXQgZGlmZi10cmVlIC0tYWJicmV2IC0tcmF3IExeIEwgPm91dHB1dCAmJgogCSB0ZXN0X2NtcCBleHBlY3Qgb3V0cHV0JwogCkBAIC02NjcsNyArNjY3LDcgQEAKIEVPRgogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAJJ006IHJlbmFtZSBmaWxlIGluIHNhbWUgc3ViZGlyZWN0b3J5JyBcCi0JJ2dpdC1mYXN0LWltcG9ydCA8aW5wdXQgJiYKKwknZ2l0IGZhc3QtaW1wb3J0IDxpbnB1dCAmJgogCSBnaXQgZGlmZi10cmVlIC1NIC1yIE0xXiBNMSA+YWN0dWFsICYmCiAJIGNvbXBhcmVfZGlmZl9yYXcgZXhwZWN0IGFjdHVhbCcKIApAQCAtNjg4LDcgKzY4OCw3IEBACiBFT0YKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogCSdNOiByZW5hbWUgZmlsZSB0byBuZXcgc3ViZGlyZWN0b3J5JyBcCi0JJ2dpdC1mYXN0LWltcG9ydCA8aW5wdXQgJiYKKwknZ2l0IGZhc3QtaW1wb3J0IDxpbnB1dCAmJgogCSBnaXQgZGlmZi10cmVlIC1NIC1yIE0yXiBNMiA+YWN0dWFsICYmCiAJIGNvbXBhcmVfZGlmZl9yYXcgZXhwZWN0IGFjdHVhbCcKIApAQCAtNzA5LDcgKzcwOSw3IEBACiBFT0YKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogCSdNOiByZW5hbWUgc3ViZGlyZWN0b3J5IHRvIG5ldyBzdWJkaXJlY3RvcnknIFwKLQknZ2l0LWZhc3QtaW1wb3J0IDxpbnB1dCAmJgorCSdnaXQgZmFzdC1pbXBvcnQgPGlucHV0ICYmCiAJIGdpdCBkaWZmLXRyZWUgLU0gLXIgTTNeIE0zID5hY3R1YWwgJiYKIAkgY29tcGFyZV9kaWZmX3JhdyBleHBlY3QgYWN0dWFsJwogCkBAIC03MzUsNyArNzM1LDcgQEAKIEVPRgogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAJJ046IGNvcHkgZmlsZSBpbiBzYW1lIHN1YmRpcmVjdG9yeScgXAotCSdnaXQtZmFzdC1pbXBvcnQgPGlucHV0ICYmCisJJ2dpdCBmYXN0LWltcG9ydCA8aW5wdXQgJiYKIAkgZ2l0IGRpZmYtdHJlZSAtQyAtLWZpbmQtY29waWVzLWhhcmRlciAtciBOMV4gTjEgPmFjdHVhbCAmJgogCSBjb21wYXJlX2RpZmZfcmF3IGV4cGVjdCBhY3R1YWwnCiAKQEAgLTc2OSw3ICs3NjksNyBAQAogRU9GCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKIAknTjogY29weSB0aGVuIG1vZGlmeSBzdWJkaXJlY3RvcnknIFwKLQknZ2l0LWZhc3QtaW1wb3J0IDxpbnB1dCAmJgorCSdnaXQgZmFzdC1pbXBvcnQgPGlucHV0ICYmCiAJIGdpdCBkaWZmLXRyZWUgLUMgLS1maW5kLWNvcGllcy1oYXJkZXIgLXIgTjJeXiBOMiA+YWN0dWFsICYmCiAJIGNvbXBhcmVfZGlmZl9yYXcgZXhwZWN0IGFjdHVhbCcKIApAQCAtNzkzLDggKzc5Myw4IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogCSdOOiBjb3B5IGRpcnR5IHN1YmRpcmVjdG9yeScgXAotCSdnaXQtZmFzdC1pbXBvcnQgPGlucHV0ICYmCi0JIHRlc3QgYGdpdC1yZXYtcGFyc2UgTjJee3RyZWV9YCA9IGBnaXQtcmV2LXBhcnNlIE4zXnt0cmVlfWAnCisJJ2dpdCBmYXN0LWltcG9ydCA8aW5wdXQgJiYKKwkgdGVzdCBgZ2l0IHJldi1wYXJzZSBOMl57dHJlZX1gID0gYGdpdCByZXYtcGFyc2UgTjNee3RyZWV9YCcKIAogIyMjCiAjIyMgc2VyaWVzIE8KQEAgLTgzMyw4ICs4MzMsOCBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKIAknTzogY29tbWVudHMgYXJlIGFsbCBza2lwcGVkJyBcCi0JJ2dpdC1mYXN0LWltcG9ydCA8aW5wdXQgJiYKLQkgdGVzdCBgZ2l0LXJldi1wYXJzZSBOM2AgPSBgZ2l0LXJldi1wYXJzZSBPMWAnCisJJ2dpdCBmYXN0LWltcG9ydCA8aW5wdXQgJiYKKwkgdGVzdCBgZ2l0IHJldi1wYXJzZSBOM2AgPSBgZ2l0IHJldi1wYXJzZSBPMWAnCiAKIGNhdCA+aW5wdXQgPDxJTlBVVF9FTkQKIGNvbW1pdCByZWZzL2hlYWRzL08yCkBAIC04NTQsOCArODU0LDggQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAJJ086IGJsYW5rIGxpbmVzIG5vdCBuZWNlc3NhcnkgYWZ0ZXIgZGF0YSBjb21tYW5kcycgXAotCSdnaXQtZmFzdC1pbXBvcnQgPGlucHV0ICYmCi0JIHRlc3QgYGdpdC1yZXYtcGFyc2UgTjNgID0gYGdpdC1yZXYtcGFyc2UgTzJgJworCSdnaXQgZmFzdC1pbXBvcnQgPGlucHV0ICYmCisJIHRlc3QgYGdpdCByZXYtcGFyc2UgTjNgID0gYGdpdCByZXYtcGFyc2UgTzJgJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKIAknTzogcmVwYWNrIGJlZm9yZSBuZXh0IHRlc3QnIFwKQEAgLTg5OSw3ICs4OTksNyBAQAogSU5QVVRfRU5ECiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKIAknTzogYmxhbmsgbGluZXMgbm90IG5lY2Vzc2FyeSBhZnRlciBvdGhlciBjb21tYW5kcycgXAotCSdnaXQtZmFzdC1pbXBvcnQgPGlucHV0ICYmCisJJ2dpdCBmYXN0LWltcG9ydCA8aW5wdXQgJiYKIAkgdGVzdCA4ID0gYGZpbmQgLmdpdC9vYmplY3RzL3BhY2sgLXR5cGUgZiB8IHdjIC1sYCAmJgogCSB0ZXN0IGBnaXQgcmV2LXBhcnNlIHJlZnMvdGFncy9PMy0ybmRgID0gYGdpdCByZXYtcGFyc2UgTzNeYCAmJgogCSBnaXQgbG9nIC0tcmV2ZXJzZSAtLXByZXR0eT1vbmVsaW5lIE8zIHwgc2VkIHMvXi4qei8vID5hY3R1YWwgJiYKQEAgLTkzMiw3ICs5MzIsNyBAQAogSU5QVVRfRU5ECiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKIAknTzogcHJvZ3Jlc3Mgb3V0cHV0cyBhcyByZXF1ZXN0ZWQgYnkgaW5wdXQnIFwKLQknZ2l0LWZhc3QtaW1wb3J0IDxpbnB1dCA+YWN0dWFsICYmCisJJ2dpdCBmYXN0LWltcG9ydCA8aW5wdXQgPmFjdHVhbCAmJgogCSBncmVwICJwcm9ncmVzcyAiIDxpbnB1dCA+ZXhwZWN0ICYmCiAJIHRlc3RfY21wIGV4cGVjdCBhY3R1YWwnCiAKQEAgLTk5Nyw3ICs5OTcsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKIAknUDogc3VwZXJtb2R1bGUgJiBzdWJtb2R1bGUgbWl4JyBcCi0JJ2dpdC1mYXN0LWltcG9ydCA8aW5wdXQgJiYKKwknZ2l0IGZhc3QtaW1wb3J0IDxpbnB1dCAmJgogCSBnaXQgY2hlY2tvdXQgc3VidXNlMSAmJgogCSBybSAtcmYgc3ViICYmIG1rZGlyIHN1YiAmJiBjZCBzdWIgJiYKIAkgZ2l0IGluaXQgJiYKQEAgLTEwMDcsOCArMTAwNyw4IEBACiAJIGdpdCBzdWJtb2R1bGUgaW5pdCAmJgogCSBnaXQgc3VibW9kdWxlIHVwZGF0ZScKIAotU1VCTEFTVD0kKGdpdC1yZXYtcGFyc2UgLS12ZXJpZnkgc3ViKQotU1VCUFJFVj0kKGdpdC1yZXYtcGFyc2UgLS12ZXJpZnkgc3ViXikKK1NVQkxBU1Q9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHN1YikKK1NVQlBSRVY9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHN1Yl4pCiAKIGNhdCA+aW5wdXQgPDxJTlBVVF9FTkQKIGJsb2IKQEAgLTEwNDIsOCArMTA0Miw4IEBACiAJJ1A6IHZlcmJhdGltIFNIQSBnaXRsaW5rcycgXAogCSdnaXQgYnJhbmNoIC1EIHN1YiAmJgogCSBnaXQgZ2MgJiYgZ2l0IHBydW5lICYmCi0JIGdpdC1mYXN0LWltcG9ydCA8aW5wdXQgJiYKLQkgdGVzdCAkKGdpdC1yZXYtcGFyc2UgLS12ZXJpZnkgc3VidXNlMikgPSAkKGdpdC1yZXYtcGFyc2UgLS12ZXJpZnkgc3VidXNlMSknCisJIGdpdCBmYXN0LWltcG9ydCA8aW5wdXQgJiYKKwkgdGVzdCAkKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgc3VidXNlMikgPSAkKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgc3VidXNlMSknCiAKIHRlc3RfdGljawogY2F0ID5pbnB1dCA8PElOUFVUX0VORApAQCAtMTA2Myw3ICsxMDYzLDcgQEAKIElOUFVUX0VORAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdQOiBmYWlsIG9uIGlubGluZSBnaXRsaW5rJyAnCi0gICAgdGVzdF9tdXN0X2ZhaWwgZ2l0LWZhc3QtaW1wb3J0IDxpbnB1dCcKKyAgICB0ZXN0X211c3RfZmFpbCBnaXQgZmFzdC1pbXBvcnQgPGlucHV0JwogCiB0ZXN0X3RpY2sKIGNhdCA+aW5wdXQgPDxJTlBVVF9FTkQKQEAgLTEwODYsNiArMTA4Niw2IEBACiBJTlBVVF9FTkQKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnUDogZmFpbCBvbiBibG9iIG1hcmsgaW4gZ2l0bGluaycgJwotICAgIHRlc3RfbXVzdF9mYWlsIGdpdC1mYXN0LWltcG9ydCA8aW5wdXQnCisgICAgdGVzdF9tdXN0X2ZhaWwgZ2l0IGZhc3QtaW1wb3J0IDxpbnB1dCcKIAogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q5MzAxLWZhc3QtZXhwb3J0LnNoIGIvdC90OTMwMS1mYXN0LWV4cG9ydC5zaAppbmRleCAzYTY1MDlhLi44NmMzNzYwIDEwMDc1NQotLS0gYS90L3Q5MzAxLWZhc3QtZXhwb3J0LnNoCisrKyBiL3QvdDkzMDEtZmFzdC1leHBvcnQuc2gKQEAgLTMsNyArMyw3IEBACiAjIENvcHlyaWdodCAoYykgMjAwNyBKb2hhbm5lcyBFLiBTY2hpbmRlbGluCiAjCiAKLXRlc3RfZGVzY3JpcHRpb249J2dpdC1mYXN0LWV4cG9ydCcKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBmYXN0LWV4cG9ydCcKIC4gLi90ZXN0LWxpYi5zaAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCcgJwpAQCAtNjcsNyArNjcsNyBAQAogCiAJZ2l0IGNvbmZpZyBpMThuLmNvbW1pdGVuY29kaW5nIElTTy04ODU5LTEgJiYKIAkjIHVzZSBhdXRob3IgYW5kIGNvbW1pdHRlciBuYW1lIGluIElTTy04ODU5LTEgdG8gbWF0Y2ggaXQuCi0JLiAuLi90MzkwMS04ODU5LTEudHh0ICYmCisJLiAiJFRFU1RfRElSRUNUT1JZIi90MzkwMS04ODU5LTEudHh0ICYmCiAJdGVzdF90aWNrICYmCiAJZWNobyByb3N0ZW4gPmZpbGUgJiYKIAlnaXQgY29tbWl0IC1zIC1tIGRlbiBmaWxlICYmCkBAIC0xODUsOCArMTg1LDggQEAKIAogJwogCi1leHBvcnQgR0lUX0FVVEhPUl9OQU1FPSdBIFUgVGhvcicKLWV4cG9ydCBHSVRfQ09NTUlUVEVSX05BTUU9J0MgTyBNaXR0ZXInCitHSVRfQVVUSE9SX05BTUU9J0EgVSBUaG9yJzsgZXhwb3J0IEdJVF9BVVRIT1JfTkFNRQorR0lUX0NPTU1JVFRFUl9OQU1FPSdDIE8gTWl0dGVyJzsgZXhwb3J0IEdJVF9DT01NSVRURVJfTkFNRQogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBjb3BpZXMnICcKIApkaWZmIC0tZ2l0IGEvdC90OTQwMC1naXQtY3Zzc2VydmVyLXNlcnZlci5zaCBiL3QvdDk0MDAtZ2l0LWN2c3NlcnZlci1zZXJ2ZXIuc2gKaW5kZXggYzE4NTBkMi4uNmEzN2Y3MSAxMDA3NTUKLS0tIGEvdC90OTQwMC1naXQtY3Zzc2VydmVyLXNlcnZlci5zaAorKysgYi90L3Q5NDAwLWdpdC1jdnNzZXJ2ZXItc2VydmVyLnNoCkBAIC00MjQsNyArNDI0LDcgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2N2cyB1cGRhdGUgKC1wKScgJwogICAgIHRvdWNoIHJlYWxseS1lbXB0eSAmJgogICAgIGVjaG8gTGluZSAxID4gbm8tbGYgJiYKLSAgICBlY2hvIC1uIExpbmUgMiA+PiBuby1sZiAmJgorICAgIHByaW50ZiAiTGluZSAyIiA+PiBuby1sZiAmJgogICAgIGdpdCBhZGQgcmVhbGx5LWVtcHR5IG5vLWxmICYmCiAgICAgZ2l0IGNvbW1pdCAtcSAtbSAiVXBkYXRlIC1wIHRlc3QiICYmCiAgICAgZ2l0IHB1c2ggZ2l0Y3ZzLmdpdCA+L2Rldi9udWxsICYmCmRpZmYgLS1naXQgYS90L3Q5NTAwLWdpdHdlYi1zdGFuZGFsb25lLW5vLWVycm9ycy5zaCBiL3QvdDk1MDAtZ2l0d2ViLXN0YW5kYWxvbmUtbm8tZXJyb3JzLnNoCmluZGV4IGQ4ZjI3OGYuLjQzY2Q2ZWUgMTAwNzU1Ci0tLSBhL3QvdDk1MDAtZ2l0d2ViLXN0YW5kYWxvbmUtbm8tZXJyb3JzLnNoCisrKyBiL3QvdDk1MDAtZ2l0d2ViLXN0YW5kYWxvbmUtbm8tZXJyb3JzLnNoCkBAIC0yNSw5ICsyNSw5IEBACiBvdXIgXCRzaXRlX2hlYWRlciA9ICIiOwogb3VyIFwkc2l0ZV9mb290ZXIgPSAiIjsKIG91ciBcJGhvbWVfdGV4dCA9ICJpbmRleHRleHQuaHRtbCI7Ci1vdXIgQHN0eWxlc2hlZXRzID0gKCJmaWxlOi8vLyRzYWZlX3B3ZC8uLi8uLi9naXR3ZWIvZ2l0d2ViLmNzcyIpOwotb3VyIFwkbG9nbyA9ICJmaWxlOi8vLyRzYWZlX3B3ZC8uLi8uLi9naXR3ZWIvZ2l0LWxvZ28ucG5nIjsKLW91ciBcJGZhdmljb24gPSAiZmlsZTovLy8kc2FmZV9wd2QvLi4vLi4vZ2l0d2ViL2dpdC1mYXZpY29uLnBuZyI7CitvdXIgQHN0eWxlc2hlZXRzID0gKCJmaWxlOi8vLyRURVNUX0RJUkVDVE9SWS8uLi9naXR3ZWIvZ2l0d2ViLmNzcyIpOworb3VyIFwkbG9nbyA9ICJmaWxlOi8vLyRURVNUX0RJUkVDVE9SWS8uLi9naXR3ZWIvZ2l0LWxvZ28ucG5nIjsKK291ciBcJGZhdmljb24gPSAiZmlsZTovLy8kVEVTVF9ESVJFQ1RPUlkvLi4vZ2l0d2ViL2dpdC1mYXZpY29uLnBuZyI7CiBvdXIgXCRwcm9qZWN0c19saXN0ID0gIiI7CiBvdXIgXCRleHBvcnRfb2sgPSAiIjsKIG91ciBcJHN0cmljdF9leHBvcnQgPSAiIjsKQEAgLTU0LDkgKzU0LDkgQEAKIAkjIHdyaXR0ZW4gdG8gd2ViIHNlcnZlciBsb2dzLCBzbyB3ZSBhcmUgbm90IGludGVyZXN0ZWQgaW4gdGhhdDoKIAkjIHdlIGFyZSBpbnRlcmVzdGVkIG9ubHkgaW4gcHJvcGVybHkgZm9ybWF0dGVkIGVycm9ycy93YXJuaW5ncwogCXJtIC1mIGdpdHdlYi5sb2cgJiYKLQlwZXJsIC0tICIkKHB3ZCkvLi4vLi4vZ2l0d2ViL2dpdHdlYi5wZXJsIiBcCisJcGVybCAtLSAiJFRFU1RfRElSRUNUT1JZLy4uL2dpdHdlYi9naXR3ZWIucGVybCIgXAogCQk+L2Rldi9udWxsIDI+Z2l0d2ViLmxvZyAmJgotCWlmIGdyZXAgLXEgLXMgIl5bW10iIGdpdHdlYi5sb2cgPi9kZXYvbnVsbDsgdGhlbiBmYWxzZTsgZWxzZSB0cnVlOyBmaQorCWlmIGdyZXAgIl5bW10iIGdpdHdlYi5sb2cgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIGZhbHNlOyBlbHNlIHRydWU7IGZpCiAKIAkjIGdpdHdlYi5sb2cgaXMgbGVmdCBmb3IgZGVidWdnaW5nCiB9CkBAIC01NzQsMjAgKzU3NCwyMCBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKIAknZW5jb2RlKGNvbW1pdCk6IHV0ZjgnIFwKLQknLiAuLi90MzkwMS11dGY4LnR4dCAmJgorCScuICIkVEVTVF9ESVJFQ1RPUlkiL3QzOTAxLXV0ZjgudHh0ICYmCiAJIGVjaG8gIlVURi04IiA+PiBmaWxlICYmCiAJIGdpdCBhZGQgZmlsZSAmJgotCSBnaXQgY29tbWl0IC1GIC4uL3QzOTAwLzEtVVRGLTgudHh0ICYmCisJIGdpdCBjb21taXQgLUYgIiRURVNUX0RJUkVDVE9SWSIvdDM5MDAvMS1VVEYtOC50eHQgJiYKIAkgZ2l0d2ViX3J1biAicD0uZ2l0O2E9Y29tbWl0IicKIHRlc3RfZGVidWcgJ2NhdCBnaXR3ZWIubG9nJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKIAknZW5jb2RlKGNvbW1pdCk6IGlzby04ODU5LTEnIFwKLQknLiAuLi90MzkwMS04ODU5LTEudHh0ICYmCisJJy4gIiRURVNUX0RJUkVDVE9SWSIvdDM5MDEtODg1OS0xLnR4dCAmJgogCSBlY2hvICJJU08tODg1OS0xIiA+PiBmaWxlICYmCiAJIGdpdCBhZGQgZmlsZSAmJgogCSBnaXQgY29uZmlnIGkxOG4uY29tbWl0ZW5jb2RpbmcgSVNPLTg4NTktMSAmJgotCSBnaXQgY29tbWl0IC1GIC4uL3QzOTAwL0lTTy04ODU5LTEudHh0ICYmCisJIGdpdCBjb21taXQgLUYgIiRURVNUX0RJUkVDVE9SWSIvdDM5MDAvSVNPLTg4NTktMS50eHQgJiYKIAkgZ2l0IGNvbmZpZyAtLXVuc2V0IGkxOG4uY29tbWl0ZW5jb2RpbmcgJiYKIAkgZ2l0d2ViX3J1biAicD0uZ2l0O2E9Y29tbWl0IicKIHRlc3RfZGVidWcgJ2NhdCBnaXR3ZWIubG9nJwpAQCAtNjczLDQgKzY3MywxNCBAQAogCSBnaXR3ZWJfcnVuICJwPS5naXQ7YT10cmVlIicKIHRlc3RfZGVidWcgJ2NhdCBnaXR3ZWIubG9nJwogCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgbm9uLUFTQ0lJIGluIFJFQURNRS5odG1sCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAorCSdSRUFETUUuaHRtbCB3aXRoIG5vbi1BU0NJSSBjaGFyYWN0ZXJzICh1dGYtOCknIFwKKwknZWNobyAiPGI+VVRGLTggZXhhbXBsZTo8L2I+PGJyIC8+IiA+IC5naXQvUkVBRE1FLmh0bWwgJiYKKwkgY2F0ICIkVEVTVF9ESVJFQ1RPUlkiL3QzOTAwLzEtVVRGLTgudHh0ID4+IC5naXQvUkVBRE1FLmh0bWwgJiYKKwkgZ2l0d2ViX3J1biAicD0uZ2l0O2E9c3VtbWFyeSInCit0ZXN0X2RlYnVnICdjYXQgZ2l0d2ViLmxvZycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q5NjAwLWN2c2ltcG9ydC5zaCBiL3QvdDk2MDAtY3ZzaW1wb3J0LnNoCmluZGV4IDBkNzc4NmEuLmQyMzc5ZTcgMTAwNzU1Ci0tLSBhL3QvdDk2MDAtY3ZzaW1wb3J0LnNoCisrKyBiL3QvdDk2MDAtY3ZzaW1wb3J0LnNoCkBAIC0xLDYgKzEsNiBAQAogIyEvYmluL3NoCiAKLXRlc3RfZGVzY3JpcHRpb249J2dpdC1jdnNpbXBvcnQgYmFzaWMgdGVzdHMnCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgY3ZzaW1wb3J0IGJhc2ljIHRlc3RzJwogLiAuL3Rlc3QtbGliLnNoCiAKIENWU1JPT1Q9JChwd2QpL2N2c3Jvb3QKZGlmZiAtLWdpdCBhL3QvdDk3MDAtcGVybC1naXQuc2ggYi90L3Q5NzAwLXBlcmwtZ2l0LnNoCmluZGV4IDk3MDZlZTUuLmI4MWQ1ZGYgMTAwNzU1Ci0tLSBhL3QvdDk3MDAtcGVybC1naXQuc2gKKysrIGIvdC90OTcwMC1wZXJsLWdpdC5zaApAQCAtMjcsMTggKzI3LDE4IEBACiAgICAgIGVjaG8gImNoYW5nZWQgZmlsZSAxIiA+IGZpbGUxICYmCiAgICAgIGdpdCBjb21taXQgLWEgLW0gInNlY29uZCBjb21taXQiICYmCiAKLSAgICAgZ2l0LWNvbmZpZyAtLWFkZCBjb2xvci50ZXN0LnNsb3QxIGdyZWVuICYmCi0gICAgIGdpdC1jb25maWcgLS1hZGQgdGVzdC5zdHJpbmcgdmFsdWUgJiYKLSAgICAgZ2l0LWNvbmZpZyAtLWFkZCB0ZXN0LmR1cHN0cmluZyB2YWx1ZTEgJiYKLSAgICAgZ2l0LWNvbmZpZyAtLWFkZCB0ZXN0LmR1cHN0cmluZyB2YWx1ZTIgJiYKLSAgICAgZ2l0LWNvbmZpZyAtLWFkZCB0ZXN0LmJvb2x0cnVlIHRydWUgJiYKLSAgICAgZ2l0LWNvbmZpZyAtLWFkZCB0ZXN0LmJvb2xmYWxzZSBubyAmJgotICAgICBnaXQtY29uZmlnIC0tYWRkIHRlc3QuYm9vbG90aGVyIG90aGVyICYmCi0gICAgIGdpdC1jb25maWcgLS1hZGQgdGVzdC5pbnQgMmsKKyAgICAgZ2l0IGNvbmZpZyAtLWFkZCBjb2xvci50ZXN0LnNsb3QxIGdyZWVuICYmCisgICAgIGdpdCBjb25maWcgLS1hZGQgdGVzdC5zdHJpbmcgdmFsdWUgJiYKKyAgICAgZ2l0IGNvbmZpZyAtLWFkZCB0ZXN0LmR1cHN0cmluZyB2YWx1ZTEgJiYKKyAgICAgZ2l0IGNvbmZpZyAtLWFkZCB0ZXN0LmR1cHN0cmluZyB2YWx1ZTIgJiYKKyAgICAgZ2l0IGNvbmZpZyAtLWFkZCB0ZXN0LmJvb2x0cnVlIHRydWUgJiYKKyAgICAgZ2l0IGNvbmZpZyAtLWFkZCB0ZXN0LmJvb2xmYWxzZSBubyAmJgorICAgICBnaXQgY29uZmlnIC0tYWRkIHRlc3QuYm9vbG90aGVyIG90aGVyICYmCisgICAgIGdpdCBjb25maWcgLS1hZGQgdGVzdC5pbnQgMmsKICAgICAgJwogCiB0ZXN0X2V4dGVybmFsX3dpdGhvdXRfc3RkZXJyIFwKICAgICAnUGVybCBBUEknIFwKLSAgICBwZXJsIC4uL3Q5NzAwL3Rlc3QucGwKKyAgICBwZXJsICIkVEVTVF9ESVJFQ1RPUlkiL3Q5NzAwL3Rlc3QucGwKIAogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q5NzAwL3Rlc3QucGwgYi90L3Q5NzAwL3Rlc3QucGwKaW5kZXggNTA0Zjk1YS4uNjk3ZGFmMyAxMDA3NTUKLS0tIGEvdC90OTcwMC90ZXN0LnBsCisrKyBiL3QvdDk3MDAvdGVzdC5wbApAQCAtMTMsMTAgKzEzLDcgQEAKIEJFR0lOIHsgdXNlX29rKCdHaXQnKSB9CiAKICMgc2V0IHVwCi1vdXIgJHJlcG9fZGlyID0gInRyYXNoIGRpcmVjdG9yeSI7CiBvdXIgJGFic19yZXBvX2RpciA9IEN3ZC0+Y3dkOwotZGllICJ0aGlzIG11c3QgYmUgcnVuIGJ5IGNhbGxpbmcgdGhlIHQvdDk3KiBzaGVsbCBzY3JpcHQocylcbiIKLSAgICBpZiBiYXNlbmFtZShDd2QtPmN3ZCkgbmUgJHJlcG9fZGlyOwogb2sob3VyICRyID0gR2l0LT5yZXBvc2l0b3J5KERpcmVjdG9yeSA9PiAiLiIpLCAib3BlbiByZXBvc2l0b3J5Iik7CiAKICMgY29uZmlnCmRpZmYgLS1naXQgYS90L3Rlc3QtbGliLnNoIGIvdC90ZXN0LWxpYi5zaAppbmRleCA2ODlhYzJmLi5mYzBlMTkzIDEwMDY0NAotLS0gYS90L3Rlc3QtbGliLnNoCisrKyBiL3QvdGVzdC1saWIuc2gKQEAgLTgyLDcgKzgyLDcgQEAKIAktaXwtLWl8LS1pbXwtLWltbXwtLWltbWV8LS1pbW1lZHwtLWltbWVkaXwtLWltbWVkaWF8LS1pbW1lZGlhdHwtLWltbWVkaWF0ZSkKIAkJaW1tZWRpYXRlPXQ7IHNoaWZ0IDs7CiAJLWx8LS1sfC0tbG98LS1sb258LS1sb25nfC0tbG9uZy18LS1sb25nLXR8LS1sb25nLXRlfC0tbG9uZy10ZXN8LS1sb25nLXRlc3R8LS1sb25nLXRlc3RzKQotCQlleHBvcnQgR0lUX1RFU1RfTE9ORz10OyBzaGlmdCA7OworCQlHSVRfVEVTVF9MT05HPXQ7IGV4cG9ydCBHSVRfVEVTVF9MT05HOyBzaGlmdCA7OwogCS1ofC0taHwtLWhlfC0taGVsfC0taGVscCkKIAkJaGVscD10OyBzaGlmdCA7OwogCS12fC0tdnwtLXZlfC0tdmVyfC0tdmVyYnwtLXZlcmJvfC0tdmVyYm9zfC0tdmVyYm9zZSkKQEAgLTQwNyw3ICs0MDcsNyBAQAogCWVycm9yICJidWcgaW4gdGhlIHRlc3Qgc2NyaXB0OiBub3QgMSBwYXJhbWV0ZXIgdG8gdGVzdC1jcmVhdGUtcmVwbyIKIAlvd2Q9YHB3ZGAKIAlyZXBvPSIkMSIKLQlta2RpciAiJHJlcG8iCisJbWtkaXIgLXAgIiRyZXBvIgogCWNkICIkcmVwbyIgfHwgZXJyb3IgIkNhbm5vdCBzZXR1cCB0ZXN0IGVudmlyb25tZW50IgogCSIkR0lUX0VYRUNfUEFUSC9naXQiIGluaXQgIi0tdGVtcGxhdGU9JEdJVF9FWEVDX1BBVEgvdGVtcGxhdGVzL2JsdC8iID4mMyAyPiY0IHx8CiAJZXJyb3IgImNhbm5vdCBydW4gZ2l0IGluaXQgLS0gaGF2ZSB5b3UgYnVpbHQgdGhpbmdzIHlldD8iCkBAIC00NTAsNiArNDUwLDExIEBACiAJCSMgd2Ugd2lsbCBsZWF2ZSB0aGluZ3MgYXMgdGhleSBhcmUuCiAKIAkJc2F5X2NvbG9yIHBhc3MgInBhc3NlZCBhbGwgJG1zZyIKKworCQl0ZXN0IC1kICIkcmVtb3ZlX3RyYXNoIiAmJgorCQljZCAiJChkaXJuYW1lICIkcmVtb3ZlX3RyYXNoIikiICYmCisJCXJtIC1yZiAiJChiYXNlbmFtZSAiJHJlbW92ZV90cmFzaCIpIgorCiAJCWV4aXQgMCA7OwogCiAJKikKQEAgLTQ2Niw3ICs0NzEsNiBAQAogR0lUX0VYRUNfUEFUSD0kKHB3ZCkvLi4KIEdJVF9URU1QTEFURV9ESVI9JChwd2QpLy4uL3RlbXBsYXRlcy9ibHQKIHVuc2V0IEdJVF9DT05GSUcKLXVuc2V0IEdJVF9DT05GSUdfTE9DQUwKIEdJVF9DT05GSUdfTk9TWVNURU09MQogR0lUX0NPTkZJR19OT0dMT0JBTD0xCiBleHBvcnQgUEFUSCBHSVRfRVhFQ19QQVRIIEdJVF9URU1QTEFURV9ESVIgR0lUX0NPTkZJR19OT1NZU1RFTSBHSVRfQ09ORklHX05PR0xPQkFMCkBAIC00ODYsNyArNDkwLDggQEAKIC4gLi4vR0lULUJVSUxELU9QVElPTlMKIAogIyBUZXN0IHJlcG9zaXRvcnkKLXRlc3Q9InRyYXNoIGRpcmVjdG9yeSIKK3Rlc3Q9InRyYXNoIGRpcmVjdG9yeS4kKGJhc2VuYW1lICIkMCIgLnNoKSIKK3Rlc3QgISAteiAiJGRlYnVnIiB8fCByZW1vdmVfdHJhc2g9IiRURVNUX0RJUkVDVE9SWS8kdGVzdCIKIHJtIC1mciAiJHRlc3QiIHx8IHsKIAl0cmFwIC0gZXhpdAogCWVjaG8gPiY1ICJGQVRBTDogQ2Fubm90IHByZXBhcmUgdGVzdCBhcmVhIgpkaWZmIC0tZ2l0IGEvdGVzdC1zaGExLmMgYi90ZXN0LXNoYTEuYwppbmRleCA3OGQ3ZTk4Li45Yjk4ZDA3IDEwMDY0NAotLS0gYS90ZXN0LXNoYTEuYworKysgYi90ZXN0LXNoYTEuYwpAQCAtMiw3ICsyLDcgQEAKIAogaW50IG1haW4oaW50IGFjLCBjaGFyICoqYXYpCiB7Ci0JU0hBX0NUWCBjdHg7CisJZ2l0X1NIQV9DVFggY3R4OwogCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CiAJdW5zaWduZWQgYnVmc3ogPSA4MTkyOwogCWNoYXIgKmJ1ZmZlcjsKQEAgLTIwLDcgKzIwLDcgQEAKIAkJCWRpZSgiT09QUyIpOwogCX0KIAotCVNIQTFfSW5pdCgmY3R4KTsKKwlnaXRfU0hBMV9Jbml0KCZjdHgpOwogCiAJd2hpbGUgKDEpIHsKIAkJc3NpemVfdCBzeiwgdGhpc19zejsKQEAgLTM5LDkgKzM5LDkgQEAKIAkJfQogCQlpZiAodGhpc19zeiA9PSAwKQogCQkJYnJlYWs7Ci0JCVNIQTFfVXBkYXRlKCZjdHgsIGJ1ZmZlciwgdGhpc19zeik7CisJCWdpdF9TSEExX1VwZGF0ZSgmY3R4LCBidWZmZXIsIHRoaXNfc3opOwogCX0KLQlTSEExX0ZpbmFsKHNoYTEsICZjdHgpOworCWdpdF9TSEExX0ZpbmFsKHNoYTEsICZjdHgpOwogCXB1dHMoc2hhMV90b19oZXgoc2hhMSkpOwogCWV4aXQoMCk7CiB9CmRpZmYgLS1naXQgYS90cmFuc3BvcnQuYyBiL3RyYW5zcG9ydC5jCmluZGV4IDM1Y2FjNDQuLjU2ODMxYzUgMTAwNjQ0Ci0tLSBhL3RyYW5zcG9ydC5jCisrKyBiL3RyYW5zcG9ydC5jCkBAIC03NSw3ICs3NSw3IEBACiAKIAkJCWlmIChmZCA8IDApCiAJCQkJY29udGludWU7Ci0JCQluZXh0ID0gYWxsb2NfcmVmKHBhdGgtPmxlbiAtIG5hbWVfb2Zmc2V0ICsgMSk7CisJCQluZXh0ID0gYWxsb2NfcmVmKHBhdGgtPmJ1ZiArIG5hbWVfb2Zmc2V0KTsKIAkJCWlmIChyZWFkX2luX2Z1bGwoZmQsIGJ1ZmZlciwgNDApICE9IDQwIHx8CiAJCQkJCWdldF9zaGExX2hleChidWZmZXIsIG5leHQtPm9sZF9zaGExKSkgewogCQkJCWNsb3NlKGZkKTsKQEAgLTgzLDcgKzgzLDYgQEAKIAkJCQljb250aW51ZTsKIAkJCX0KIAkJCWNsb3NlKGZkKTsKLQkJCXN0cmNweShuZXh0LT5uYW1lLCBwYXRoLT5idWYgKyBuYW1lX29mZnNldCk7CiAJCQkoKnRhaWwpLT5uZXh0ID0gbmV4dDsKIAkJCSp0YWlsID0gbmV4dDsKIAkJfQpAQCAtMTI3LDE0ICsxMjYsMTMgQEAKIAkJCQkgICAgICAoKmxpc3QpLT5uZXh0LT5uYW1lKSkgPiAwKQogCQkJbGlzdCA9ICYoKmxpc3QpLT5uZXh0OwogCQlpZiAoISgqbGlzdCktPm5leHQgfHwgY21wIDwgMCkgewotCQkJc3RydWN0IHJlZiAqbmV4dCA9IGFsbG9jX3JlZihsZW4gLSA0MCk7CisJCQlzdHJ1Y3QgcmVmICpuZXh0ID0gYWxsb2NfcmVmKGJ1ZmZlciArIDQxKTsKIAkJCWJ1ZmZlcls0MF0gPSAnXDAnOwogCQkJaWYgKGdldF9zaGExX2hleChidWZmZXIsIG5leHQtPm9sZF9zaGExKSkgewogCQkJCXdhcm5pbmcgKCJpbnZhbGlkIFNIQS0xOiAlcyIsIGJ1ZmZlcik7CiAJCQkJZnJlZShuZXh0KTsKIAkJCQljb250aW51ZTsKIAkJCX0KLQkJCXN0cmNweShuZXh0LT5uYW1lLCBidWZmZXIgKyA0MSk7CiAJCQluZXh0LT5uZXh0ID0gKCpsaXN0KS0+bmV4dDsKIAkJCSgqbGlzdCktPm5leHQgPSBuZXh0OwogCQkJbGlzdCA9ICYoKmxpc3QpLT5uZXh0OwpAQCAtNTAxLDcgKzQ5OSw3IEBACiAKIAlzdHJidWZfcmVsZWFzZSgmYnVmZmVyKTsKIAotCXJlZiA9IGFsbG9jX3JlZl9mcm9tX3N0cigiSEVBRCIpOworCXJlZiA9IGFsbG9jX3JlZigiSEVBRCIpOwogCWlmICghd2Fsa2VyLT5mZXRjaF9yZWYod2Fsa2VyLCByZWYpICYmCiAJICAgICFyZXNvbHZlX3JlbW90ZV9zeW1yZWYocmVmLCByZWZzKSkgewogCQlyZWYtPm5leHQgPSByZWZzOwpAQCAtNTQyLDcgKzU0MCw3IEBACiAJCWRpZSAoIkNvdWxkIG5vdCByZWFkIGJ1bmRsZSAnJXMnLiIsIHRyYW5zcG9ydC0+dXJsKTsKIAlmb3IgKGkgPSAwOyBpIDwgZGF0YS0+aGVhZGVyLnJlZmVyZW5jZXMubnI7IGkrKykgewogCQlzdHJ1Y3QgcmVmX2xpc3RfZW50cnkgKmUgPSBkYXRhLT5oZWFkZXIucmVmZXJlbmNlcy5saXN0ICsgaTsKLQkJc3RydWN0IHJlZiAqcmVmID0gYWxsb2NfcmVmX2Zyb21fc3RyKGUtPm5hbWUpOworCQlzdHJ1Y3QgcmVmICpyZWYgPSBhbGxvY19yZWYoZS0+bmFtZSk7CiAJCWhhc2hjcHkocmVmLT5vbGRfc2hhMSwgZS0+c2hhMSk7CiAJCXJlZi0+bmV4dCA9IHJlc3VsdDsKIAkJcmVzdWx0ID0gcmVmOwpAQCAtNjE5LDcgKzYxNyw3IEBACiAJc3RydWN0IHJlZiAqcmVmczsKIAogCWNvbm5lY3Rfc2V0dXAodHJhbnNwb3J0KTsKLQlnZXRfcmVtb3RlX2hlYWRzKGRhdGEtPmZkWzBdLCAmcmVmcywgMCwgTlVMTCwgMCk7CisJZ2V0X3JlbW90ZV9oZWFkcyhkYXRhLT5mZFswXSwgJnJlZnMsIDAsIE5VTEwsIDAsIE5VTEwpOwogCiAJcmV0dXJuIHJlZnM7CiB9CkBAIC02NDQsNyArNjQyLDcgQEAKIAlhcmdzLmluY2x1ZGVfdGFnID0gZGF0YS0+Zm9sbG93dGFnczsKIAlhcmdzLnZlcmJvc2UgPSAodHJhbnNwb3J0LT52ZXJib3NlID4gMCk7CiAJYXJncy5xdWlldCA9ICh0cmFuc3BvcnQtPnZlcmJvc2UgPCAwKTsKLQlhcmdzLm5vX3Byb2dyZXNzID0gYXJncy5xdWlldCB8fCAhaXNhdHR5KDEpOworCWFyZ3Mubm9fcHJvZ3Jlc3MgPSBhcmdzLnF1aWV0IHx8ICghdHJhbnNwb3J0LT5wcm9ncmVzcyAmJiAhaXNhdHR5KDEpKTsKIAlhcmdzLmRlcHRoID0gZGF0YS0+ZGVwdGg7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbnJfaGVhZHM7IGkrKykKQEAgLTY1Miw3ICs2NTAsNyBAQAogCiAJaWYgKCFkYXRhLT5jb25uKSB7CiAJCWNvbm5lY3Rfc2V0dXAodHJhbnNwb3J0KTsKLQkJZ2V0X3JlbW90ZV9oZWFkcyhkYXRhLT5mZFswXSwgJnJlZnNfdG1wLCAwLCBOVUxMLCAwKTsKKwkJZ2V0X3JlbW90ZV9oZWFkcyhkYXRhLT5mZFswXSwgJnJlZnNfdG1wLCAwLCBOVUxMLCAwLCBOVUxMKTsKIAl9CiAKIAlyZWZzID0gZmV0Y2hfcGFjaygmYXJncywgZGF0YS0+ZmQsIGRhdGEtPmNvbm4sCmRpZmYgLS1naXQgYS90cmFuc3BvcnQuaCBiL3RyYW5zcG9ydC5oCmluZGV4IGQwYjUyMDUuLjZiYmMxYTggMTAwNjQ0Ci0tLSBhL3RyYW5zcG9ydC5oCisrKyBiL3RyYW5zcG9ydC5oCkBAIC0yNSw2ICsyNSw4IEBACiAJaW50ICgqZGlzY29ubmVjdCkoc3RydWN0IHRyYW5zcG9ydCAqY29ubmVjdGlvbik7CiAJY2hhciAqcGFja19sb2NrZmlsZTsKIAlzaWduZWQgdmVyYm9zZSA6IDI7CisJLyogRm9yY2UgcHJvZ3Jlc3MgZXZlbiBpZiB0aGUgb3V0cHV0IGlzIG5vdCBhIHR0eSAqLworCXVuc2lnbmVkIHByb2dyZXNzIDogMTsKIH07CiAKICNkZWZpbmUgVFJBTlNQT1JUX1BVU0hfQUxMIDEKZGlmZiAtLWdpdCBhL3VucGFjay10cmVlcy5jIGIvdW5wYWNrLXRyZWVzLmMKaW5kZXggNDIyOWVlYy4uM2E0ZTE4MSAxMDA2NDQKLS0tIGEvdW5wYWNrLXRyZWVzLmMKKysrIGIvdW5wYWNrLXRyZWVzLmMKQEAgLTQ5Nyw3ICs0OTcsNyBAQAogCSAqIGFueXRoaW5nIGluIHRoZSBleGlzdGluZyBkaXJlY3RvcnkgdGhlcmUuCiAJICovCiAJaW50IG5hbWVsZW47Ci0JaW50IHBvcywgaTsKKwlpbnQgaTsKIAlzdHJ1Y3QgZGlyX3N0cnVjdCBkOwogCWNoYXIgKnBhdGhidWY7CiAJaW50IGNudCA9IDA7CkBAIC01MTgsMjQgKzUxOCwyMCBAQAogCSAqIGluIHRoYXQgZGlyZWN0b3J5LgogCSAqLwogCW5hbWVsZW4gPSBzdHJsZW4oY2UtPm5hbWUpOwotCXBvcyA9IGluZGV4X25hbWVfcG9zKG8tPnNyY19pbmRleCwgY2UtPm5hbWUsIG5hbWVsZW4pOwotCWlmICgwIDw9IHBvcykKLQkJcmV0dXJuIGNudDsgLyogd2UgaGF2ZSBpdCBhcyBub25kaXJlY3RvcnkgKi8KLQlwb3MgPSAtcG9zIC0gMTsKLQlmb3IgKGkgPSBwb3M7IGkgPCBvLT5zcmNfaW5kZXgtPmNhY2hlX25yOyBpKyspIHsKLQkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IG8tPnNyY19pbmRleC0+Y2FjaGVbaV07Ci0JCWludCBsZW4gPSBjZV9uYW1lbGVuKGNlKTsKKwlmb3IgKGkgPSBvLT5wb3M7IGkgPCBvLT5zcmNfaW5kZXgtPmNhY2hlX25yOyBpKyspIHsKKwkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZTIgPSBvLT5zcmNfaW5kZXgtPmNhY2hlW2ldOworCQlpbnQgbGVuID0gY2VfbmFtZWxlbihjZTIpOwogCQlpZiAobGVuIDwgbmFtZWxlbiB8fAotCQkgICAgc3RybmNtcChjZS0+bmFtZSwgY2UtPm5hbWUsIG5hbWVsZW4pIHx8Ci0JCSAgICBjZS0+bmFtZVtuYW1lbGVuXSAhPSAnLycpCisJCSAgICBzdHJuY21wKGNlLT5uYW1lLCBjZTItPm5hbWUsIG5hbWVsZW4pIHx8CisJCSAgICBjZTItPm5hbWVbbmFtZWxlbl0gIT0gJy8nKQogCQkJYnJlYWs7CiAJCS8qCi0JCSAqIGNlLT5uYW1lIGlzIGFuIGVudHJ5IGluIHRoZSBzdWJkaXJlY3RvcnkuCisJCSAqIGNlMi0+bmFtZSBpcyBhbiBlbnRyeSBpbiB0aGUgc3ViZGlyZWN0b3J5LgogCQkgKi8KLQkJaWYgKCFjZV9zdGFnZShjZSkpIHsKLQkJCWlmICh2ZXJpZnlfdXB0b2RhdGUoY2UsIG8pKQorCQlpZiAoIWNlX3N0YWdlKGNlMikpIHsKKwkJCWlmICh2ZXJpZnlfdXB0b2RhdGUoY2UyLCBvKSkKIAkJCQlyZXR1cm4gLTE7Ci0JCQlhZGRfZW50cnkobywgY2UsIENFX1JFTU9WRSwgMCk7CisJCQlhZGRfZW50cnkobywgY2UyLCBDRV9SRU1PVkUsIDApOwogCQl9CiAJCWNudCsrOwogCX0KQEAgLTU5MSw3ICs1ODcsNyBAQAogCQlyZXR1cm4gMDsKIAogCWlmICghbHN0YXQoY2UtPm5hbWUsICZzdCkpIHsKLQkJaW50IGNudDsKKwkJaW50IHJldDsKIAkJaW50IGR0eXBlID0gY2VfdG9fZHR5cGUoY2UpOwogCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKnJlc3VsdDsKIApAQCAtNjE5LDEzICs2MTUsMTUgQEAKIAkJCSAqIGZpbGVzIHRoYXQgYXJlIGluICJmb28vIiB3ZSB3b3VsZCBsb3NlCiAJCQkgKiBpdC4KIAkJCSAqLwotCQkJY250ID0gdmVyaWZ5X2NsZWFuX3N1YmRpcmVjdG9yeShjZSwgYWN0aW9uLCBvKTsKKwkJCXJldCA9IHZlcmlmeV9jbGVhbl9zdWJkaXJlY3RvcnkoY2UsIGFjdGlvbiwgbyk7CisJCQlpZiAocmV0IDwgMCkKKwkJCQlyZXR1cm4gcmV0OwogCiAJCQkvKgogCQkJICogSWYgdGhpcyByZW1vdmVkIGVudHJpZXMgZnJvbSB0aGUgaW5kZXgsCiAJCQkgKiB3aGF0IHRoYXQgbWVhbnMgaXM6CiAJCQkgKgotCQkJICogKDEpIHRoZSBjYWxsZXIgdW5wYWNrX3RyZWVzX3JlYygpIHNhdyBwYXRoL2ZvbworCQkJICogKDEpIHRoZSBjYWxsZXIgdW5wYWNrX2NhbGxiYWNrKCkgc2F3IHBhdGgvZm9vCiAJCQkgKiBpbiB0aGUgaW5kZXgsIGFuZCBpdCBoYXMgbm90IHJlbW92ZWQgaXQgYmVjYXVzZQogCQkJICogaXQgdGhpbmtzIGl0IGlzIGhhbmRsaW5nICdwYXRoJyBhcyBibG9iIHdpdGgKIAkJCSAqIEQvRiBjb25mbGljdDsKQEAgLTYzOCw3ICs2MzYsNyBAQAogCQkJICogV2UgbmVlZCB0byBpbmNyZW1lbnQgaXQgYnkgdGhlIG51bWJlciBvZgogCQkJICogZGVsZXRlZCBlbnRyaWVzIGhlcmUuCiAJCQkgKi8KLQkJCW8tPnBvcyArPSBjbnQ7CisJCQlvLT5wb3MgKz0gcmV0OwogCQkJcmV0dXJuIDA7CiAJCX0KIApkaWZmIC0tZ2l0IGEvdXNhZ2UuYyBiL3VzYWdlLmMKaW5kZXggYTVmYzRlYy4uMjRmNWZjMCAxMDA2NDQKLS0tIGEvdXNhZ2UuYworKysgYi91c2FnZS5jCkBAIC00MSwyNyArNDEsMTEgQEAKIHN0YXRpYyB2b2lkICgqZXJyb3Jfcm91dGluZSkoY29uc3QgY2hhciAqZXJyLCB2YV9saXN0IHBhcmFtcykgPSBlcnJvcl9idWlsdGluOwogc3RhdGljIHZvaWQgKCp3YXJuX3JvdXRpbmUpKGNvbnN0IGNoYXIgKmVyciwgdmFfbGlzdCBwYXJhbXMpID0gd2Fybl9idWlsdGluOwogCi12b2lkIHNldF91c2FnZV9yb3V0aW5lKHZvaWQgKCpyb3V0aW5lKShjb25zdCBjaGFyICplcnIpIE5PUkVUVVJOKQotewotCXVzYWdlX3JvdXRpbmUgPSByb3V0aW5lOwotfQotCiB2b2lkIHNldF9kaWVfcm91dGluZSh2b2lkICgqcm91dGluZSkoY29uc3QgY2hhciAqZXJyLCB2YV9saXN0IHBhcmFtcykgTk9SRVRVUk4pCiB7CiAJZGllX3JvdXRpbmUgPSByb3V0aW5lOwogfQogCi12b2lkIHNldF9lcnJvcl9yb3V0aW5lKHZvaWQgKCpyb3V0aW5lKShjb25zdCBjaGFyICplcnIsIHZhX2xpc3QgcGFyYW1zKSkKLXsKLQllcnJvcl9yb3V0aW5lID0gcm91dGluZTsKLX0KLQotdm9pZCBzZXRfd2Fybl9yb3V0aW5lKHZvaWQgKCpyb3V0aW5lKShjb25zdCBjaGFyICp3YXJuLCB2YV9saXN0IHBhcmFtcykpCi17Ci0Jd2Fybl9yb3V0aW5lID0gcm91dGluZTsKLX0KLQotCiB2b2lkIHVzYWdlKGNvbnN0IGNoYXIgKmVycikKIHsKIAl1c2FnZV9yb3V0aW5lKGVycik7CmRpZmYgLS1naXQgYS91c2VyZGlmZi5jIGIvdXNlcmRpZmYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjgxMDYyCi0tLSAvZGV2L251bGwKKysrIGIvdXNlcmRpZmYuYwpAQCAtMCwwICsxLDE2NyBAQAorI2luY2x1ZGUgInVzZXJkaWZmLmgiCisjaW5jbHVkZSAiY2FjaGUuaCIKKyNpbmNsdWRlICJhdHRyLmgiCisKK3N0YXRpYyBzdHJ1Y3QgdXNlcmRpZmZfZHJpdmVyICpkcml2ZXJzOworc3RhdGljIGludCBuZHJpdmVyczsKK3N0YXRpYyBpbnQgZHJpdmVyc19hbGxvYzsKKworI2RlZmluZSBGVU5DTkFNRShuYW1lLCBwYXR0ZXJuKSBcCisJeyBuYW1lLCBOVUxMLCAtMSwgeyBwYXR0ZXJuLCBSRUdfRVhURU5ERUQgfSB9CitzdGF0aWMgc3RydWN0IHVzZXJkaWZmX2RyaXZlciBidWlsdGluX2RyaXZlcnNbXSA9IHsKK0ZVTkNOQU1FKCJodG1sIiwgIl5bIFx0XSooPFtIaF1bMS02XVsgXHRdLio+LiopJCIpLAorRlVOQ05BTUUoImphdmEiLAorCSAiIV5bIFx0XSooY2F0Y2h8ZG98Zm9yfGlmfGluc3RhbmNlb2Z8bmV3fHJldHVybnxzd2l0Y2h8dGhyb3d8d2hpbGUpXG4iCisJICJeWyBcdF0qKChbIFx0XSpbQS1aYS16X11bQS1aYS16XzAtOV0qKXsyLH1bIFx0XSpcXChbXjtdKikkIiksCitGVU5DTkFNRSgib2JqYyIsCisJIC8qIE5lZ2F0ZSBDIHN0YXRlbWVudHMgdGhhdCBjYW4gbG9vayBsaWtlIGZ1bmN0aW9ucyAqLworCSAiIV5bIFx0XSooZG98Zm9yfGlmfGVsc2V8cmV0dXJufHN3aXRjaHx3aGlsZSlcbiIKKwkgLyogT2JqZWN0aXZlLUMgbWV0aG9kcyAqLworCSAiXlsgXHRdKihbLStdWyBcdF0qXFwoWyBcdF0qW0EtWmEtel9dW0EtWmEtel8wLTkqIFx0XSpcXClbIFx0XSpbQS1aYS16X10uKikkXG4iCisJIC8qIEMgZnVuY3Rpb25zICovCisJICJeWyBcdF0qKChbIFx0XSpbQS1aYS16X11bQS1aYS16XzAtOV0qKXsyLH1bIFx0XSpcXChbXjtdKikkXG4iCisJIC8qIE9iamVjdGl2ZS1DIGNsYXNzL3Byb3RvY29sIGRlZmluaXRpb25zICovCisJICJeKEAoaW1wbGVtZW50YXRpb258aW50ZXJmYWNlfHByb3RvY29sKVsgXHRdLiopJCIpLAorRlVOQ05BTUUoInBhc2NhbCIsCisJICJeKChwcm9jZWR1cmV8ZnVuY3Rpb258Y29uc3RydWN0b3J8ZGVzdHJ1Y3RvcnxpbnRlcmZhY2V8IgorCQkiaW1wbGVtZW50YXRpb258aW5pdGlhbGl6YXRpb258ZmluYWxpemF0aW9uKVsgXHRdKi4qKSQiCisJICJcbiIKKwkgIl4oLio9WyBcdF0qKGNsYXNzfHJlY29yZCkuKikkIiksCitGVU5DTkFNRSgicGhwIiwgIl5bXHQgXSooKGZ1bmN0aW9ufGNsYXNzKS4qKSIpLAorRlVOQ05BTUUoInB5dGhvbiIsICJeWyBcdF0qKChjbGFzc3xkZWYpWyBcdF0uKikkIiksCitGVU5DTkFNRSgicnVieSIsICJeWyBcdF0qKChjbGFzc3xtb2R1bGV8ZGVmKVsgXHRdLiopJCIpLAorRlVOQ05BTUUoImJpYnRleCIsICIoQFthLXpBLVpdezEsfVsgXHRdKlxce3swLDF9WyBcdF0qW14gXHRcIkAnLFxcI317fiVdKikuKiQiKSwKK0ZVTkNOQU1FKCJ0ZXgiLCAiXihcXFxcKChzdWIpKnNlY3Rpb258Y2hhcHRlcnxwYXJ0KVxcKnswLDF9XFx7LiopJCIpLAoreyAiZGVmYXVsdCIsIE5VTEwsIC0xLCB7IE5VTEwsIDAgfSB9LAorfTsKKyN1bmRlZiBGVU5DTkFNRQorCitzdGF0aWMgc3RydWN0IHVzZXJkaWZmX2RyaXZlciBkcml2ZXJfdHJ1ZSA9IHsKKwkiZGlmZj10cnVlIiwKKwlOVUxMLAorCTAsCisJeyBOVUxMLCAwIH0KK307CisKK3N0YXRpYyBzdHJ1Y3QgdXNlcmRpZmZfZHJpdmVyIGRyaXZlcl9mYWxzZSA9IHsKKwkiIWRpZmYiLAorCU5VTEwsCisJMSwKKwl7IE5VTEwsIDAgfQorfTsKKworc3RhdGljIHN0cnVjdCB1c2VyZGlmZl9kcml2ZXIgKnVzZXJkaWZmX2ZpbmRfYnlfbmFtZWxlbihjb25zdCBjaGFyICprLCBpbnQgbGVuKQoreworCWludCBpOworCWZvciAoaSA9IDA7IGkgPCBuZHJpdmVyczsgaSsrKSB7CisJCXN0cnVjdCB1c2VyZGlmZl9kcml2ZXIgKmRydiA9IGRyaXZlcnMgKyBpOworCQlpZiAoIXN0cm5jbXAoZHJ2LT5uYW1lLCBrLCBsZW4pICYmICFkcnYtPm5hbWVbbGVuXSkKKwkJCXJldHVybiBkcnY7CisJfQorCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGJ1aWx0aW5fZHJpdmVycyk7IGkrKykgeworCQlzdHJ1Y3QgdXNlcmRpZmZfZHJpdmVyICpkcnYgPSBidWlsdGluX2RyaXZlcnMgKyBpOworCQlpZiAoIXN0cm5jbXAoZHJ2LT5uYW1lLCBrLCBsZW4pICYmICFkcnYtPm5hbWVbbGVuXSkKKwkJCXJldHVybiBkcnY7CisJfQorCXJldHVybiBOVUxMOworfQorCitzdGF0aWMgc3RydWN0IHVzZXJkaWZmX2RyaXZlciAqcGFyc2VfZHJpdmVyKGNvbnN0IGNoYXIgKnZhciwKKwkJY29uc3QgY2hhciAqdmFsdWUsIGNvbnN0IGNoYXIgKnR5cGUpCit7CisJc3RydWN0IHVzZXJkaWZmX2RyaXZlciAqZHJ2OworCWNvbnN0IGNoYXIgKmRvdDsKKwljb25zdCBjaGFyICpuYW1lOworCWludCBuYW1lbGVuOworCisJaWYgKHByZWZpeGNtcCh2YXIsICJkaWZmLiIpKQorCQlyZXR1cm4gTlVMTDsKKwlkb3QgPSBzdHJyY2hyKHZhciwgJy4nKTsKKwlpZiAoZG90ID09IHZhciArIDQpCisJCXJldHVybiBOVUxMOworCWlmIChzdHJjbXAodHlwZSwgZG90KzEpKQorCQlyZXR1cm4gTlVMTDsKKworCW5hbWUgPSB2YXIgKyA1OworCW5hbWVsZW4gPSBkb3QgLSBuYW1lOworCWRydiA9IHVzZXJkaWZmX2ZpbmRfYnlfbmFtZWxlbihuYW1lLCBuYW1lbGVuKTsKKwlpZiAoIWRydikgeworCQlBTExPQ19HUk9XKGRyaXZlcnMsIG5kcml2ZXJzKzEsIGRyaXZlcnNfYWxsb2MpOworCQlkcnYgPSAmZHJpdmVyc1tuZHJpdmVycysrXTsKKwkJbWVtc2V0KGRydiwgMCwgc2l6ZW9mKCpkcnYpKTsKKwkJZHJ2LT5uYW1lID0geG1lbWR1cHoobmFtZSwgbmFtZWxlbik7CisJCWRydi0+YmluYXJ5ID0gLTE7CisJfQorCXJldHVybiBkcnY7Cit9CisKK3N0YXRpYyBpbnQgcGFyc2VfZnVuY25hbWUoc3RydWN0IHVzZXJkaWZmX2Z1bmNuYW1lICpmLCBjb25zdCBjaGFyICprLAorCQljb25zdCBjaGFyICp2LCBpbnQgY2ZsYWdzKQoreworCWlmIChnaXRfY29uZmlnX3N0cmluZygmZi0+cGF0dGVybiwgaywgdikgPCAwKQorCQlyZXR1cm4gLTE7CisJZi0+Y2ZsYWdzID0gY2ZsYWdzOworCXJldHVybiAxOworfQorCitzdGF0aWMgaW50IHBhcnNlX3N0cmluZyhjb25zdCBjaGFyICoqZCwgY29uc3QgY2hhciAqaywgY29uc3QgY2hhciAqdikKK3sKKwlpZiAoZ2l0X2NvbmZpZ19zdHJpbmcoZCwgaywgdikgPCAwKQorCQlyZXR1cm4gLTE7CisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQgcGFyc2VfdHJpc3RhdGUoaW50ICpiLCBjb25zdCBjaGFyICprLCBjb25zdCBjaGFyICp2KQoreworCWlmICh2ICYmICFzdHJjYXNlY21wKHYsICJhdXRvIikpCisJCSpiID0gLTE7CisJZWxzZQorCQkqYiA9IGdpdF9jb25maWdfYm9vbChrLCB2KTsKKwlyZXR1cm4gMTsKK30KKworaW50IHVzZXJkaWZmX2NvbmZpZyhjb25zdCBjaGFyICprLCBjb25zdCBjaGFyICp2KQoreworCXN0cnVjdCB1c2VyZGlmZl9kcml2ZXIgKmRydjsKKworCWlmICgoZHJ2ID0gcGFyc2VfZHJpdmVyKGssIHYsICJmdW5jbmFtZSIpKSkKKwkJcmV0dXJuIHBhcnNlX2Z1bmNuYW1lKCZkcnYtPmZ1bmNuYW1lLCBrLCB2LCAwKTsKKwlpZiAoKGRydiA9IHBhcnNlX2RyaXZlcihrLCB2LCAieGZ1bmNuYW1lIikpKQorCQlyZXR1cm4gcGFyc2VfZnVuY25hbWUoJmRydi0+ZnVuY25hbWUsIGssIHYsIFJFR19FWFRFTkRFRCk7CisJaWYgKChkcnYgPSBwYXJzZV9kcml2ZXIoaywgdiwgImJpbmFyeSIpKSkKKwkJcmV0dXJuIHBhcnNlX3RyaXN0YXRlKCZkcnYtPmJpbmFyeSwgaywgdik7CisJaWYgKChkcnYgPSBwYXJzZV9kcml2ZXIoaywgdiwgImNvbW1hbmQiKSkpCisJCXJldHVybiBwYXJzZV9zdHJpbmcoJmRydi0+ZXh0ZXJuYWwsIGssIHYpOworCWlmICgoZHJ2ID0gcGFyc2VfZHJpdmVyKGssIHYsICJ0ZXh0Y29udiIpKSkKKwkJcmV0dXJuIHBhcnNlX3N0cmluZygmZHJ2LT50ZXh0Y29udiwgaywgdik7CisKKwlyZXR1cm4gMDsKK30KKworc3RydWN0IHVzZXJkaWZmX2RyaXZlciAqdXNlcmRpZmZfZmluZF9ieV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUpIHsKKwlpbnQgbGVuID0gc3RybGVuKG5hbWUpOworCXJldHVybiB1c2VyZGlmZl9maW5kX2J5X25hbWVsZW4obmFtZSwgbGVuKTsKK30KKworc3RydWN0IHVzZXJkaWZmX2RyaXZlciAqdXNlcmRpZmZfZmluZF9ieV9wYXRoKGNvbnN0IGNoYXIgKnBhdGgpCit7CisJc3RhdGljIHN0cnVjdCBnaXRfYXR0ciAqYXR0cjsKKwlzdHJ1Y3QgZ2l0X2F0dHJfY2hlY2sgY2hlY2s7CisKKwlpZiAoIWF0dHIpCisJCWF0dHIgPSBnaXRfYXR0cigiZGlmZiIsIDQpOworCWNoZWNrLmF0dHIgPSBhdHRyOworCisJaWYgKCFwYXRoKQorCQlyZXR1cm4gTlVMTDsKKwlpZiAoZ2l0X2NoZWNrYXR0cihwYXRoLCAxLCAmY2hlY2spKQorCQlyZXR1cm4gTlVMTDsKKworCWlmIChBVFRSX1RSVUUoY2hlY2sudmFsdWUpKQorCQlyZXR1cm4gJmRyaXZlcl90cnVlOworCWlmIChBVFRSX0ZBTFNFKGNoZWNrLnZhbHVlKSkKKwkJcmV0dXJuICZkcml2ZXJfZmFsc2U7CisJaWYgKEFUVFJfVU5TRVQoY2hlY2sudmFsdWUpKQorCQlyZXR1cm4gTlVMTDsKKwlyZXR1cm4gdXNlcmRpZmZfZmluZF9ieV9uYW1lKGNoZWNrLnZhbHVlKTsKK30KZGlmZiAtLWdpdCBhL3VzZXJkaWZmLmggYi91c2VyZGlmZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhMjk0NTcKLS0tIC9kZXYvbnVsbAorKysgYi91c2VyZGlmZi5oCkBAIC0wLDAgKzEsMjEgQEAKKyNpZm5kZWYgVVNFUkRJRkZfSAorI2RlZmluZSBVU0VSRElGRl9ICisKK3N0cnVjdCB1c2VyZGlmZl9mdW5jbmFtZSB7CisJY29uc3QgY2hhciAqcGF0dGVybjsKKwlpbnQgY2ZsYWdzOworfTsKKworc3RydWN0IHVzZXJkaWZmX2RyaXZlciB7CisJY29uc3QgY2hhciAqbmFtZTsKKwljb25zdCBjaGFyICpleHRlcm5hbDsKKwlpbnQgYmluYXJ5OworCXN0cnVjdCB1c2VyZGlmZl9mdW5jbmFtZSBmdW5jbmFtZTsKKwljb25zdCBjaGFyICp0ZXh0Y29udjsKK307CisKK2ludCB1c2VyZGlmZl9jb25maWcoY29uc3QgY2hhciAqaywgY29uc3QgY2hhciAqdik7CitzdHJ1Y3QgdXNlcmRpZmZfZHJpdmVyICp1c2VyZGlmZl9maW5kX2J5X25hbWUoY29uc3QgY2hhciAqbmFtZSk7CitzdHJ1Y3QgdXNlcmRpZmZfZHJpdmVyICp1c2VyZGlmZl9maW5kX2J5X3BhdGgoY29uc3QgY2hhciAqcGF0aCk7CisKKyNlbmRpZiAvKiBVU0VSRElGRiAqLwpkaWZmIC0tZ2l0IGEvdXRmOC5jIGIvdXRmOC5jCmluZGV4IGRjMzczNTMuLmRkZmRjNWUgMTAwNjQ0Ci0tLSBhL3V0ZjguYworKysgYi91dGY4LmMKQEAgLTI0Niw2ICsyNDYsMjUgQEAKIAlyZXR1cm4gZ2l0X3djd2lkdGgoY2gpOwogfQogCisvKgorICogUmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGNvbHVtbnMgcmVxdWlyZWQgYnkgYSBudWxsLXRlcm1pbmF0ZWQKKyAqIHN0cmluZywgYXNzdW1pbmcgdGhhdCB0aGUgc3RyaW5nIGlzIHV0ZjguICBSZXR1cm5zIHN0cmxlbigpIGluc3RlYWQKKyAqIGlmIHRoZSBzdHJpbmcgZG9lcyBub3QgbG9vayBsaWtlIGEgdmFsaWQgdXRmOCBzdHJpbmcuCisgKi8KK2ludCB1dGY4X3N0cndpZHRoKGNvbnN0IGNoYXIgKnN0cmluZykKK3sKKwlpbnQgd2lkdGggPSAwOworCWNvbnN0IGNoYXIgKm9yaWcgPSBzdHJpbmc7CisKKwl3aGlsZSAoMSkgeworCQlpZiAoIXN0cmluZykKKwkJCXJldHVybiBzdHJsZW4ob3JpZyk7CisJCWlmICghKnN0cmluZykKKwkJCXJldHVybiB3aWR0aDsKKwkJd2lkdGggKz0gdXRmOF93aWR0aCgmc3RyaW5nLCBOVUxMKTsKKwl9Cit9CisKIGludCBpc191dGY4KGNvbnN0IGNoYXIgKnRleHQpCiB7CiAJd2hpbGUgKCp0ZXh0KSB7CmRpZmYgLS1naXQgYS91dGY4LmggYi91dGY4LmgKaW5kZXggOThjY2UxYi4uMmYxYjE0ZiAxMDA2NDQKLS0tIGEvdXRmOC5oCisrKyBiL3V0ZjguaApAQCAtNSw2ICs1LDcgQEAKIAogdWNzX2NoYXJfdCBwaWNrX29uZV91dGY4X2NoYXIoY29uc3QgY2hhciAqKnN0YXJ0LCBzaXplX3QgKnJlbWFpbmRlcl9wKTsKIGludCB1dGY4X3dpZHRoKGNvbnN0IGNoYXIgKipzdGFydCwgc2l6ZV90ICpyZW1haW5kZXJfcCk7CitpbnQgdXRmOF9zdHJ3aWR0aChjb25zdCBjaGFyICpzdHJpbmcpOwogaW50IGlzX3V0ZjgoY29uc3QgY2hhciAqdGV4dCk7CiBpbnQgaXNfZW5jb2RpbmdfdXRmOChjb25zdCBjaGFyICpuYW1lKTsKIApkaWZmIC0tZ2l0IGEvd2Fsa2VyLmMgYi93YWxrZXIuYwppbmRleCAwZTY4ZWU2Li42NzlhZGFiIDEwMDY0NAotLS0gYS93YWxrZXIuYworKysgYi93YWxrZXIuYwpAQCAtMTkxLDcgKzE5MSw3IEBACiAJaWYgKCFnZXRfc2hhMV9oZXgodGFyZ2V0LCBzaGExKSkKIAkJcmV0dXJuIDA7CiAJaWYgKCFjaGVja19yZWZfZm9ybWF0KHRhcmdldCkpIHsKLQkJc3RydWN0IHJlZiAqcmVmID0gYWxsb2NfcmVmX2Zyb21fc3RyKHRhcmdldCk7CisJCXN0cnVjdCByZWYgKnJlZiA9IGFsbG9jX3JlZih0YXJnZXQpOwogCQlpZiAoIXdhbGtlci0+ZmV0Y2hfcmVmKHdhbGtlciwgcmVmKSkgewogCQkJaGFzaGNweShzaGExLCByZWYtPm9sZF9zaGExKTsKIAkJCWZyZWUocmVmKTsKQEAgLTIxNSw5ICsyMTUsOCBAQAogaW50IHdhbGtlcl90YXJnZXRzX3N0ZGluKGNoYXIgKioqdGFyZ2V0LCBjb25zdCBjaGFyICoqKndyaXRlX3JlZikKIHsKIAlpbnQgdGFyZ2V0cyA9IDAsIHRhcmdldHNfYWxsb2MgPSAwOwotCXN0cnVjdCBzdHJidWYgYnVmOworCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAJKnRhcmdldCA9IE5VTEw7ICp3cml0ZV9yZWYgPSBOVUxMOwotCXN0cmJ1Zl9pbml0KCZidWYsIDApOwogCXdoaWxlICgxKSB7CiAJCWNoYXIgKnJmX29uZSA9IE5VTEw7CiAJCWNoYXIgKnRnX29uZTsKZGlmZiAtLWdpdCBhL3dyYXBwZXIuYyBiL3dyYXBwZXIuYwppbmRleCA5MzU2MmYwLi5jODVjYTUyIDEwMDY0NAotLS0gYS93cmFwcGVyLmMKKysrIGIvd3JhcHBlci5jCkBAIC0xOTYsMyArMTk2LDYzIEBACiAJCWRpZSgiVW5hYmxlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZTogJXMiLCBzdHJlcnJvcihlcnJubykpOwogCXJldHVybiBmZDsKIH0KKworLyoKKyAqIHpsaWIgd3JhcHBlcnMgdG8gbWFrZSBzdXJlIHdlIGRvbid0IHNpbGVudGx5IG1pc3MgZXJyb3JzCisgKiBhdCBpbml0IHRpbWUuCisgKi8KK3ZvaWQgZ2l0X2luZmxhdGVfaW5pdCh6X3N0cmVhbXAgc3RybSkKK3sKKwljb25zdCBjaGFyICplcnI7CisKKwlzd2l0Y2ggKGluZmxhdGVJbml0KHN0cm0pKSB7CisJY2FzZSBaX09LOgorCQlyZXR1cm47CisKKwljYXNlIFpfTUVNX0VSUk9SOgorCQllcnIgPSAib3V0IG9mIG1lbW9yeSI7CisJCWJyZWFrOworCWNhc2UgWl9WRVJTSU9OX0VSUk9SOgorCQllcnIgPSAid3JvbmcgdmVyc2lvbiI7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWVyciA9ICJlcnJvciI7CisJfQorCWRpZSgiaW5mbGF0ZUluaXQ6ICVzICglcykiLCBlcnIsIHN0cm0tPm1zZyA/IHN0cm0tPm1zZyA6ICJubyBtZXNzYWdlIik7Cit9CisKK3ZvaWQgZ2l0X2luZmxhdGVfZW5kKHpfc3RyZWFtcCBzdHJtKQoreworCWlmIChpbmZsYXRlRW5kKHN0cm0pICE9IFpfT0spCisJCWVycm9yKCJpbmZsYXRlRW5kOiAlcyIsIHN0cm0tPm1zZyA/IHN0cm0tPm1zZyA6ICJmYWlsZWQiKTsKK30KKworaW50IGdpdF9pbmZsYXRlKHpfc3RyZWFtcCBzdHJtLCBpbnQgZmx1c2gpCit7CisJaW50IHJldCA9IGluZmxhdGUoc3RybSwgZmx1c2gpOworCWNvbnN0IGNoYXIgKmVycjsKKworCXN3aXRjaCAocmV0KSB7CisJLyogT3V0IG9mIG1lbW9yeSBpcyBmYXRhbC4gKi8KKwljYXNlIFpfTUVNX0VSUk9SOgorCQlkaWUoImluZmxhdGU6IG91dCBvZiBtZW1vcnkiKTsKKworCS8qIERhdGEgY29ycnVwdGlvbiBlcnJvcnM6IHdlIG1heSB3YW50IHRvIHJlY292ZXIgZnJvbSB0aGVtIChmc2NrKSAqLworCWNhc2UgWl9ORUVEX0RJQ1Q6CisJCWVyciA9ICJuZWVkcyBkaWN0aW9uYXJ5IjsgYnJlYWs7CisJY2FzZSBaX0RBVEFfRVJST1I6CisJCWVyciA9ICJkYXRhIHN0cmVhbSBlcnJvciI7IGJyZWFrOworCWNhc2UgWl9TVFJFQU1fRVJST1I6CisJCWVyciA9ICJzdHJlYW0gY29uc2lzdGVuY3kgZXJyb3IiOyBicmVhazsKKwlkZWZhdWx0OgorCQllcnIgPSAidW5rbm93biBlcnJvciI7IGJyZWFrOworCisJLyogWl9CVUZfRVJST1I6IG5vcm1hbCwgbmVlZHMgbW9yZSBzcGFjZSBpbiB0aGUgb3V0cHV0IGJ1ZmZlciAqLworCWNhc2UgWl9CVUZfRVJST1I6CisJY2FzZSBaX09LOgorCWNhc2UgWl9TVFJFQU1fRU5EOgorCQlyZXR1cm4gcmV0OworCX0KKwllcnJvcigiaW5mbGF0ZTogJXMgKCVzKSIsIGVyciwgc3RybS0+bXNnID8gc3RybS0+bXNnIDogIm5vIG1lc3NhZ2UiKTsKKwlyZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0IGEvd3MuYyBiL3dzLmMKaW5kZXggN2E3ZmYxMy4uYjFlZmNkOSAxMDA2NDQKLS0tIGEvd3MuYworKysgYi93cy5jCkBAIC05OSw4ICs5OSw3IEBACiAvKiBUaGUgcmV0dXJuZWQgc3RyaW5nIHNob3VsZCBiZSBmcmVlZCBieSB0aGUgY2FsbGVyLiAqLwogY2hhciAqd2hpdGVzcGFjZV9lcnJvcl9zdHJpbmcodW5zaWduZWQgd3MpCiB7Ci0Jc3RydWN0IHN0cmJ1ZiBlcnI7Ci0Jc3RyYnVmX2luaXQoJmVyciwgMCk7CisJc3RydWN0IHN0cmJ1ZiBlcnIgPSBTVFJCVUZfSU5JVDsKIAlpZiAod3MgJiBXU19UUkFJTElOR19TUEFDRSkKIAkJc3RyYnVmX2FkZHN0cigmZXJyLCAidHJhaWxpbmcgd2hpdGVzcGFjZSIpOwogCWlmICh3cyAmIFdTX1NQQUNFX0JFRk9SRV9UQUIpIHsKZGlmZiAtLWdpdCBhL3d0LXN0YXR1cy5jIGIvd3Qtc3RhdHVzLmMKaW5kZXggNjRjZWRmYy4uOTZmZjJmOCAxMDA2NDQKLS0tIGEvd3Qtc3RhdHVzLmMKKysrIGIvd3Qtc3RhdHVzLmMKQEAgLTIyLDEyICsyMiw2IEBACiAJIlwwMzNbMzFtIiwgLyogV1RfU1RBVFVTX05PQlJBTkNIOiByZWQgKi8KIH07CiAKLXN0YXRpYyBjb25zdCBjaGFyIHVzZV9hZGRfbXNnW10gPQotInVzZSBcImdpdCBhZGQgPGZpbGU+Li4uXCIgdG8gdXBkYXRlIHdoYXQgd2lsbCBiZSBjb21taXR0ZWQiOwotc3RhdGljIGNvbnN0IGNoYXIgdXNlX2FkZF9ybV9tc2dbXSA9Ci0idXNlIFwiZ2l0IGFkZC9ybSA8ZmlsZT4uLi5cIiB0byB1cGRhdGUgd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCI7Ci1zdGF0aWMgY29uc3QgY2hhciB1c2VfYWRkX3RvX2luY2x1ZGVfbXNnW10gPQotInVzZSBcImdpdCBhZGQgPGZpbGU+Li4uXCIgdG8gaW5jbHVkZSBpbiB3aGF0IHdpbGwgYmUgY29tbWl0dGVkIjsKIGVudW0gdW50cmFja2VkX3N0YXR1c190eXBlIHNob3dfdW50cmFja2VkX2ZpbGVzID0gU0hPV19OT1JNQUxfVU5UUkFDS0VEX0ZJTEVTOwogCiBzdGF0aWMgaW50IHBhcnNlX3N0YXR1c19zbG90KGNvbnN0IGNoYXIgKnZhciwgaW50IG9mZnNldCkKQEAgLTc2LDEyICs3MCwyNCBAQAogCWNvbG9yX2ZwcmludGZfbG4ocy0+ZnAsIGMsICIjIik7CiB9CiAKLXN0YXRpYyB2b2lkIHd0X3N0YXR1c19wcmludF9oZWFkZXIoc3RydWN0IHd0X3N0YXR1cyAqcywKLQkJCQkgICBjb25zdCBjaGFyICptYWluLCBjb25zdCBjaGFyICpzdWIpCitzdGF0aWMgdm9pZCB3dF9zdGF0dXNfcHJpbnRfZGlydHlfaGVhZGVyKHN0cnVjdCB3dF9zdGF0dXMgKnMsCisJCQkJCSBpbnQgaGFzX2RlbGV0ZWQpCiB7CiAJY29uc3QgY2hhciAqYyA9IGNvbG9yKFdUX1NUQVRVU19IRUFERVIpOwotCWNvbG9yX2ZwcmludGZfbG4ocy0+ZnAsIGMsICIjICVzOiIsIG1haW4pOwotCWNvbG9yX2ZwcmludGZfbG4ocy0+ZnAsIGMsICIjICAgKCVzKSIsIHN1Yik7CisJY29sb3JfZnByaW50Zl9sbihzLT5mcCwgYywgIiMgQ2hhbmdlZCBidXQgbm90IHVwZGF0ZWQ6Iik7CisJaWYgKCFoYXNfZGVsZXRlZCkKKwkJY29sb3JfZnByaW50Zl9sbihzLT5mcCwgYywgIiMgICAodXNlIFwiZ2l0IGFkZCA8ZmlsZT4uLi5cIiB0byB1cGRhdGUgd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkiKTsKKwllbHNlCisJCWNvbG9yX2ZwcmludGZfbG4ocy0+ZnAsIGMsICIjICAgKHVzZSBcImdpdCBhZGQvcm0gPGZpbGU+Li4uXCIgdG8gdXBkYXRlIHdoYXQgd2lsbCBiZSBjb21taXR0ZWQpIik7CisJY29sb3JfZnByaW50Zl9sbihzLT5mcCwgYywgIiMgICAodXNlIFwiZ2l0IGNoZWNrb3V0IC0tIDxmaWxlPi4uLlwiIHRvIGRpc2NhcmQgY2hhbmdlcyBpbiB3b3JraW5nIGRpcmVjdG9yeSkiKTsKKwljb2xvcl9mcHJpbnRmX2xuKHMtPmZwLCBjLCAiIyIpOworfQorCitzdGF0aWMgdm9pZCB3dF9zdGF0dXNfcHJpbnRfdW50cmFja2VkX2hlYWRlcihzdHJ1Y3Qgd3Rfc3RhdHVzICpzKQoreworCWNvbnN0IGNoYXIgKmMgPSBjb2xvcihXVF9TVEFUVVNfSEVBREVSKTsKKwljb2xvcl9mcHJpbnRmX2xuKHMtPmZwLCBjLCAiIyBVbnRyYWNrZWQgZmlsZXM6Iik7CisJY29sb3JfZnByaW50Zl9sbihzLT5mcCwgYywgIiMgICAodXNlIFwiZ2l0IGFkZCA8ZmlsZT4uLi5cIiB0byBpbmNsdWRlIGluIHdoYXQgd2lsbCBiZSBjb21taXR0ZWQpIik7CiAJY29sb3JfZnByaW50Zl9sbihzLT5mcCwgYywgIiMiKTsKIH0KIApAQCAtOTcsMTAgKzEwMyw4IEBACiB7CiAJY29uc3QgY2hhciAqYyA9IGNvbG9yKHQpOwogCWNvbnN0IGNoYXIgKm9uZSwgKnR3bzsKLQlzdHJ1Y3Qgc3RyYnVmIG9uZWJ1ZiwgdHdvYnVmOworCXN0cnVjdCBzdHJidWYgb25lYnVmID0gU1RSQlVGX0lOSVQsIHR3b2J1ZiA9IFNUUkJVRl9JTklUOwogCi0Jc3RyYnVmX2luaXQoJm9uZWJ1ZiwgMCk7Ci0Jc3RyYnVmX2luaXQoJnR3b2J1ZiwgMCk7CiAJb25lID0gcXVvdGVfcGF0aChwLT5vbmUtPnBhdGgsIC0xLCAmb25lYnVmLCBzLT5wcmVmaXgpOwogCXR3byA9IHF1b3RlX3BhdGgocC0+dHdvLT5wYXRoLCAtMSwgJnR3b2J1Ziwgcy0+cHJlZml4KTsKIApAQCAtMTY2LDE0ICsxNzAsMTQgQEAKIAlzdHJ1Y3Qgd3Rfc3RhdHVzICpzID0gZGF0YTsKIAlpbnQgaTsKIAlpZiAocS0+bnIpIHsKLQkJY29uc3QgY2hhciAqbXNnID0gdXNlX2FkZF9tc2c7CisJCWludCBoYXNfZGVsZXRlZCA9IDA7CiAJCXMtPndvcmtkaXJfZGlydHkgPSAxOwogCQlmb3IgKGkgPSAwOyBpIDwgcS0+bnI7IGkrKykKIAkJCWlmIChxLT5xdWV1ZVtpXS0+c3RhdHVzID09IERJRkZfU1RBVFVTX0RFTEVURUQpIHsKLQkJCQltc2cgPSB1c2VfYWRkX3JtX21zZzsKKwkJCQloYXNfZGVsZXRlZCA9IDE7CiAJCQkJYnJlYWs7CiAJCQl9Ci0JCXd0X3N0YXR1c19wcmludF9oZWFkZXIocywgIkNoYW5nZWQgYnV0IG5vdCB1cGRhdGVkIiwgbXNnKTsKKwkJd3Rfc3RhdHVzX3ByaW50X2RpcnR5X2hlYWRlcihzLCBoYXNfZGVsZXRlZCk7CiAJfQogCWZvciAoaSA9IDA7IGkgPCBxLT5ucjsgaSsrKQogCQl3dF9zdGF0dXNfcHJpbnRfZmlsZXBhaXIocywgV1RfU1RBVFVTX0NIQU5HRUQsIHEtPnF1ZXVlW2ldKTsKQEAgLTE4MSwzMiArMTg1LDEyIEBACiAJCXd0X3N0YXR1c19wcmludF90cmFpbGVyKHMpOwogfQogCi1zdGF0aWMgdm9pZCB3dF9zdGF0dXNfcHJpbnRfaW5pdGlhbChzdHJ1Y3Qgd3Rfc3RhdHVzICpzKQotewotCWludCBpOwotCXN0cnVjdCBzdHJidWYgYnVmOwotCi0Jc3RyYnVmX2luaXQoJmJ1ZiwgMCk7Ci0JaWYgKGFjdGl2ZV9ucikgewotCQlzLT5jb21taXRhYmxlID0gMTsKLQkJd3Rfc3RhdHVzX3ByaW50X2NhY2hlZF9oZWFkZXIocyk7Ci0JfQotCWZvciAoaSA9IDA7IGkgPCBhY3RpdmVfbnI7IGkrKykgewotCQljb2xvcl9mcHJpbnRmKHMtPmZwLCBjb2xvcihXVF9TVEFUVVNfSEVBREVSKSwgIiNcdCIpOwotCQljb2xvcl9mcHJpbnRmX2xuKHMtPmZwLCBjb2xvcihXVF9TVEFUVVNfVVBEQVRFRCksICJuZXcgZmlsZTogJXMiLAotCQkJCXF1b3RlX3BhdGgoYWN0aXZlX2NhY2hlW2ldLT5uYW1lLCAtMSwKLQkJCQkJICAgJmJ1Ziwgcy0+cHJlZml4KSk7Ci0JfQotCWlmIChhY3RpdmVfbnIpCi0JCXd0X3N0YXR1c19wcmludF90cmFpbGVyKHMpOwotCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOwotfQotCiBzdGF0aWMgdm9pZCB3dF9zdGF0dXNfcHJpbnRfdXBkYXRlZChzdHJ1Y3Qgd3Rfc3RhdHVzICpzKQogewogCXN0cnVjdCByZXZfaW5mbyByZXY7CiAJaW5pdF9yZXZpc2lvbnMoJnJldiwgTlVMTCk7Ci0Jc2V0dXBfcmV2aXNpb25zKDAsIE5VTEwsICZyZXYsIHMtPnJlZmVyZW5jZSk7CisJc2V0dXBfcmV2aXNpb25zKDAsIE5VTEwsICZyZXYsCisJCXMtPmlzX2luaXRpYWwgPyBFTVBUWV9UUkVFX1NIQTFfSEVYIDogcy0+cmVmZXJlbmNlKTsKIAlyZXYuZGlmZm9wdC5vdXRwdXRfZm9ybWF0IHw9IERJRkZfRk9STUFUX0NBTExCQUNLOwogCXJldi5kaWZmb3B0LmZvcm1hdF9jYWxsYmFjayA9IHd0X3N0YXR1c19wcmludF91cGRhdGVkX2NiOwogCXJldi5kaWZmb3B0LmZvcm1hdF9jYWxsYmFja19kYXRhID0gczsKQEAgLTI2Miw5ICsyNDYsOCBAQAogCXN0cnVjdCBkaXJfc3RydWN0IGRpcjsKIAlpbnQgaTsKIAlpbnQgc2hvd25faGVhZGVyID0gMDsKLQlzdHJ1Y3Qgc3RyYnVmIGJ1ZjsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCi0Jc3RyYnVmX2luaXQoJmJ1ZiwgMCk7CiAJbWVtc2V0KCZkaXIsIDAsIHNpemVvZihkaXIpKTsKIAogCWlmICghcy0+dW50cmFja2VkKSB7CkBAIC0yODAsOCArMjYzLDcgQEAKIAkJCWNvbnRpbnVlOwogCQlpZiAoIXNob3duX2hlYWRlcikgewogCQkJcy0+d29ya2Rpcl91bnRyYWNrZWQgPSAxOwotCQkJd3Rfc3RhdHVzX3ByaW50X2hlYWRlcihzLCAiVW50cmFja2VkIGZpbGVzIiwKLQkJCQkJICAgICAgIHVzZV9hZGRfdG9faW5jbHVkZV9tc2cpOworCQkJd3Rfc3RhdHVzX3ByaW50X3VudHJhY2tlZF9oZWFkZXIocyk7CiAJCQlzaG93bl9oZWFkZXIgPSAxOwogCQl9CiAJCWNvbG9yX2ZwcmludGYocy0+ZnAsIGNvbG9yKFdUX1NUQVRVU19IRUFERVIpLCAiI1x0Iik7CkBAIC0yOTcsMTEgKzI3OSwyMSBAQAogCXN0cnVjdCByZXZfaW5mbyByZXY7CiAKIAlpbml0X3JldmlzaW9ucygmcmV2LCBOVUxMKTsKLQlzZXR1cF9yZXZpc2lvbnMoMCwgTlVMTCwgJnJldiwgcy0+cmVmZXJlbmNlKTsKKwlESUZGX09QVF9TRVQoJnJldi5kaWZmb3B0LCBBTExPV19URVhUQ09OVik7CisJc2V0dXBfcmV2aXNpb25zKDAsIE5VTEwsICZyZXYsCisJCXMtPmlzX2luaXRpYWwgPyBFTVBUWV9UUkVFX1NIQTFfSEVYIDogcy0+cmVmZXJlbmNlKTsKIAlyZXYuZGlmZm9wdC5vdXRwdXRfZm9ybWF0IHw9IERJRkZfRk9STUFUX1BBVENIOwogCXJldi5kaWZmb3B0LmRldGVjdF9yZW5hbWUgPSAxOwogCXJldi5kaWZmb3B0LmZpbGUgPSBzLT5mcDsKIAlyZXYuZGlmZm9wdC5jbG9zZV9maWxlID0gMDsKKwkvKgorCSAqIElmIHdlJ3JlIG5vdCBnb2luZyB0byBzdGRvdXQsIHRoZW4gd2UgZGVmaW5pdGVseSBkb24ndAorCSAqIHdhbnQgY29sb3IsIHNpbmNlIHdlIGFyZSBnb2luZyB0byB0aGUgY29tbWl0IG1lc3NhZ2UKKwkgKiBmaWxlIChhbmQgZXZlbiB0aGUgImF1dG8iIHNldHRpbmcgd29uJ3Qgd29yaywgc2luY2UgaXQKKwkgKiB3aWxsIGhhdmUgY2hlY2tlZCBpc2F0dHkgb24gc3Rkb3V0KS4KKwkgKi8KKwlpZiAocy0+ZnAgIT0gc3Rkb3V0KQorCQlESUZGX09QVF9DTFIoJnJldi5kaWZmb3B0LCBDT0xPUl9ESUZGKTsKIAlydW5fZGlmZl9pbmRleCgmcmV2LCAxKTsKIH0KIApAQCAtMzUwLDEyICszNDIsOSBAQAogCQljb2xvcl9mcHJpbnRmX2xuKHMtPmZwLCBjb2xvcihXVF9TVEFUVVNfSEVBREVSKSwgIiMiKTsKIAkJY29sb3JfZnByaW50Zl9sbihzLT5mcCwgY29sb3IoV1RfU1RBVFVTX0hFQURFUiksICIjIEluaXRpYWwgY29tbWl0Iik7CiAJCWNvbG9yX2ZwcmludGZfbG4ocy0+ZnAsIGNvbG9yKFdUX1NUQVRVU19IRUFERVIpLCAiIyIpOwotCQl3dF9zdGF0dXNfcHJpbnRfaW5pdGlhbChzKTsKLQl9Ci0JZWxzZSB7Ci0JCXd0X3N0YXR1c19wcmludF91cGRhdGVkKHMpOwogCX0KIAorCXd0X3N0YXR1c19wcmludF91cGRhdGVkKHMpOwogCXd0X3N0YXR1c19wcmludF9jaGFuZ2VkKHMpOwogCWlmICh3dF9zdGF0dXNfc3VibW9kdWxlX3N1bW1hcnkpCiAJCXd0X3N0YXR1c19wcmludF9zdWJtb2R1bGVfc3VtbWFyeShzKTsKQEAgLTM2NCw3ICszNTMsNyBAQAogCWVsc2UgaWYgKHMtPmNvbW1pdGFibGUpCiAJCSBmcHJpbnRmKHMtPmZwLCAiIyBVbnRyYWNrZWQgZmlsZXMgbm90IGxpc3RlZCAodXNlIC11IG9wdGlvbiB0byBzaG93IHVudHJhY2tlZCBmaWxlcylcbiIpOwogCi0JaWYgKHMtPnZlcmJvc2UgJiYgIXMtPmlzX2luaXRpYWwpCisJaWYgKHMtPnZlcmJvc2UpCiAJCXd0X3N0YXR1c19wcmludF92ZXJib3NlKHMpOwogCWlmICghcy0+Y29tbWl0YWJsZSkgewogCQlpZiAocy0+YW1lbmQpCkBAIC00MjEsNSArNDEwLDUgQEAKIAkJCXJldHVybiBlcnJvcigiSW52YWxpZCB1bnRyYWNrZWQgZmlsZXMgbW9kZSAnJXMnIiwgdik7CiAJCXJldHVybiAwOwogCX0KLQlyZXR1cm4gZ2l0X2NvbG9yX2RlZmF1bHRfY29uZmlnKGssIHYsIGNiKTsKKwlyZXR1cm4gZ2l0X2RpZmZfdWlfY29uZmlnKGssIHYsIGNiKTsKIH0KZGlmZiAtLWdpdCBhL3hkaWZmLWludGVyZmFjZS5jIGIveGRpZmYtaW50ZXJmYWNlLmMKaW5kZXggM2JmODNmOC4uZDc4MmYwNiAxMDA2NDQKLS0tIGEveGRpZmYtaW50ZXJmYWNlLmMKKysrIGIveGRpZmYtaW50ZXJmYWNlLmMKQEAgLTEsNSArMSwxNSBAQAogI2luY2x1ZGUgImNhY2hlLmgiCiAjaW5jbHVkZSAieGRpZmYtaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAieGRpZmYveHR5cGVzLmgiCisjaW5jbHVkZSAieGRpZmYveGRpZmZpLmgiCisjaW5jbHVkZSAieGRpZmYveGVtaXQuaCIKKyNpbmNsdWRlICJ4ZGlmZi94bWFjcm9zLmgiCisKK3N0cnVjdCB4ZGlmZl9lbWl0X3N0YXRlIHsKKwl4ZGlmZl9lbWl0X2NvbnN1bWVfZm4gY29uc3VtZTsKKwl2b2lkICpjb25zdW1lX2NhbGxiYWNrX2RhdGE7CisJc3RydWN0IHN0cmJ1ZiByZW1haW5kZXI7Cit9OwogCiBzdGF0aWMgaW50IHBhcnNlX251bShjaGFyICoqY3BfcCwgaW50ICpudW1fcCkKIHsKQEAgLTU1LDEzICs2NSwxMyBAQAogCQl1bnNpZ25lZCBsb25nIHRoaXNfc2l6ZTsKIAkJZXAgPSBtZW1jaHIocywgJ1xuJywgc2l6ZSk7CiAJCXRoaXNfc2l6ZSA9IChlcCA9PSBOVUxMKSA/IHNpemUgOiAoZXAgLSBzICsgMSk7Ci0JCXByaXYtPmNvbnN1bWUocHJpdiwgcywgdGhpc19zaXplKTsKKwkJcHJpdi0+Y29uc3VtZShwcml2LT5jb25zdW1lX2NhbGxiYWNrX2RhdGEsIHMsIHRoaXNfc2l6ZSk7CiAJCXNpemUgLT0gdGhpc19zaXplOwogCQlzICs9IHRoaXNfc2l6ZTsKIAl9CiB9CiAKLWludCB4ZGlmZl9vdXRmKHZvaWQgKnByaXZfLCBtbWJ1ZmZlcl90ICptYiwgaW50IG5idWYpCitzdGF0aWMgaW50IHhkaWZmX291dGYodm9pZCAqcHJpdl8sIG1tYnVmZmVyX3QgKm1iLCBpbnQgbmJ1ZikKIHsKIAlzdHJ1Y3QgeGRpZmZfZW1pdF9zdGF0ZSAqcHJpdiA9IHByaXZfOwogCWludCBpOwpAQCAtNjksMzYgKzc5LDIyIEBACiAJZm9yIChpID0gMDsgaSA8IG5idWY7IGkrKykgewogCQlpZiAobWJbaV0ucHRyW21iW2ldLnNpemUtMV0gIT0gJ1xuJykgewogCQkJLyogSW5jb21wbGV0ZSBsaW5lICovCi0JCQlwcml2LT5yZW1haW5kZXIgPSB4cmVhbGxvYyhwcml2LT5yZW1haW5kZXIsCi0JCQkJCQkgICBwcml2LT5yZW1haW5kZXJfc2l6ZSArCi0JCQkJCQkgICBtYltpXS5zaXplKTsKLQkJCW1lbWNweShwcml2LT5yZW1haW5kZXIgKyBwcml2LT5yZW1haW5kZXJfc2l6ZSwKLQkJCSAgICAgICBtYltpXS5wdHIsIG1iW2ldLnNpemUpOwotCQkJcHJpdi0+cmVtYWluZGVyX3NpemUgKz0gbWJbaV0uc2l6ZTsKKwkJCXN0cmJ1Zl9hZGQoJnByaXYtPnJlbWFpbmRlciwgbWJbaV0ucHRyLCBtYltpXS5zaXplKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKIAkJLyogd2UgaGF2ZSBhIGNvbXBsZXRlIGxpbmUgKi8KLQkJaWYgKCFwcml2LT5yZW1haW5kZXIpIHsKKwkJaWYgKCFwcml2LT5yZW1haW5kZXIubGVuKSB7CiAJCQljb25zdW1lX29uZShwcml2LCBtYltpXS5wdHIsIG1iW2ldLnNpemUpOwogCQkJY29udGludWU7CiAJCX0KLQkJcHJpdi0+cmVtYWluZGVyID0geHJlYWxsb2MocHJpdi0+cmVtYWluZGVyLAotCQkJCQkgICBwcml2LT5yZW1haW5kZXJfc2l6ZSArCi0JCQkJCSAgIG1iW2ldLnNpemUpOwotCQltZW1jcHkocHJpdi0+cmVtYWluZGVyICsgcHJpdi0+cmVtYWluZGVyX3NpemUsCi0JCSAgICAgICBtYltpXS5wdHIsIG1iW2ldLnNpemUpOwotCQljb25zdW1lX29uZShwcml2LCBwcml2LT5yZW1haW5kZXIsCi0JCQkgICAgcHJpdi0+cmVtYWluZGVyX3NpemUgKyBtYltpXS5zaXplKTsKLQkJZnJlZShwcml2LT5yZW1haW5kZXIpOwotCQlwcml2LT5yZW1haW5kZXIgPSBOVUxMOwotCQlwcml2LT5yZW1haW5kZXJfc2l6ZSA9IDA7CisJCXN0cmJ1Zl9hZGQoJnByaXYtPnJlbWFpbmRlciwgbWJbaV0ucHRyLCBtYltpXS5zaXplKTsKKwkJY29uc3VtZV9vbmUocHJpdiwgcHJpdi0+cmVtYWluZGVyLmJ1ZiwgcHJpdi0+cmVtYWluZGVyLmxlbik7CisJCXN0cmJ1Zl9yZXNldCgmcHJpdi0+cmVtYWluZGVyKTsKIAl9Ci0JaWYgKHByaXYtPnJlbWFpbmRlcikgewotCQljb25zdW1lX29uZShwcml2LCBwcml2LT5yZW1haW5kZXIsIHByaXYtPnJlbWFpbmRlcl9zaXplKTsKLQkJZnJlZShwcml2LT5yZW1haW5kZXIpOwotCQlwcml2LT5yZW1haW5kZXIgPSBOVUxMOwotCQlwcml2LT5yZW1haW5kZXJfc2l6ZSA9IDA7CisJaWYgKHByaXYtPnJlbWFpbmRlci5sZW4pIHsKKwkJY29uc3VtZV9vbmUocHJpdiwgcHJpdi0+cmVtYWluZGVyLmJ1ZiwgcHJpdi0+cmVtYWluZGVyLmxlbik7CisJCXN0cmJ1Zl9yZXNldCgmcHJpdi0+cmVtYWluZGVyKTsKIAl9CiAJcmV0dXJuIDA7CiB9CkBAIC0xNDEsNiArMTM3LDY5IEBACiAJcmV0dXJuIHhkbF9kaWZmKCZhLCAmYiwgeHBwLCB4ZWNmZywgeGVjYik7CiB9CiAKK2ludCB4ZGlfZGlmZl9vdXRmKG1tZmlsZV90ICptZjEsIG1tZmlsZV90ICptZjIsCisJCSAgeGRpZmZfZW1pdF9jb25zdW1lX2ZuIGZuLCB2b2lkICpjb25zdW1lX2NhbGxiYWNrX2RhdGEsCisJCSAgeHBwYXJhbV90IGNvbnN0ICp4cHAsCisJCSAgeGRlbWl0Y29uZl90IGNvbnN0ICp4ZWNmZywgeGRlbWl0Y2JfdCAqeGVjYikKK3sKKwlpbnQgcmV0OworCXN0cnVjdCB4ZGlmZl9lbWl0X3N0YXRlIHN0YXRlOworCisJbWVtc2V0KCZzdGF0ZSwgMCwgc2l6ZW9mKHN0YXRlKSk7CisJc3RhdGUuY29uc3VtZSA9IGZuOworCXN0YXRlLmNvbnN1bWVfY2FsbGJhY2tfZGF0YSA9IGNvbnN1bWVfY2FsbGJhY2tfZGF0YTsKKwl4ZWNiLT5vdXRmID0geGRpZmZfb3V0ZjsKKwl4ZWNiLT5wcml2ID0gJnN0YXRlOworCXN0cmJ1Zl9pbml0KCZzdGF0ZS5yZW1haW5kZXIsIDApOworCXJldCA9IHhkaV9kaWZmKG1mMSwgbWYyLCB4cHAsIHhlY2ZnLCB4ZWNiKTsKKwlzdHJidWZfcmVsZWFzZSgmc3RhdGUucmVtYWluZGVyKTsKKwlyZXR1cm4gcmV0OworfQorCitzdHJ1Y3QgeGRpZmZfZW1pdF9odW5rX3N0YXRlIHsKKwl4ZGlmZl9lbWl0X2h1bmtfY29uc3VtZV9mbiBjb25zdW1lOworCXZvaWQgKmNvbnN1bWVfY2FsbGJhY2tfZGF0YTsKK307CisKK3N0YXRpYyBpbnQgcHJvY2Vzc19kaWZmKHhkZmVudl90ICp4ZSwgeGRjaGFuZ2VfdCAqeHNjciwgeGRlbWl0Y2JfdCAqZWNiLAorCQkJeGRlbWl0Y29uZl90IGNvbnN0ICp4ZWNmZykKK3sKKwlsb25nIHMxLCBzMiwgc2FtZSwgcF9uZXh0LCB0X25leHQ7CisJeGRjaGFuZ2VfdCAqeGNoLCAqeGNoZTsKKwlzdHJ1Y3QgeGRpZmZfZW1pdF9odW5rX3N0YXRlICpzdGF0ZSA9IGVjYi0+cHJpdjsKKwl4ZGlmZl9lbWl0X2h1bmtfY29uc3VtZV9mbiBmbiA9IHN0YXRlLT5jb25zdW1lOworCXZvaWQgKmNvbnN1bWVfY2FsbGJhY2tfZGF0YSA9IHN0YXRlLT5jb25zdW1lX2NhbGxiYWNrX2RhdGE7CisKKwlmb3IgKHhjaCA9IHhzY3I7IHhjaDsgeGNoID0geGNoZS0+bmV4dCkgeworCQl4Y2hlID0geGRsX2dldF9odW5rKHhjaCwgeGVjZmcpOworCisJCXMxID0gWERMX01BWCh4Y2gtPmkxIC0geGVjZmctPmN0eGxlbiwgMCk7CisJCXMyID0gWERMX01BWCh4Y2gtPmkyIC0geGVjZmctPmN0eGxlbiwgMCk7CisJCXNhbWUgPSBzMiArIFhETF9NQVgoeGNoLT5pMSAtIHMxLCAwKTsKKwkJcF9uZXh0ID0geGNoZS0+aTEgKyB4Y2hlLT5jaGcxOworCQl0X25leHQgPSB4Y2hlLT5pMiArIHhjaGUtPmNoZzI7CisKKwkJZm4oY29uc3VtZV9jYWxsYmFja19kYXRhLCBzYW1lLCBwX25leHQsIHRfbmV4dCk7CisJfQorCXJldHVybiAwOworfQorCitpbnQgeGRpX2RpZmZfaHVua3MobW1maWxlX3QgKm1mMSwgbW1maWxlX3QgKm1mMiwKKwkJICAgeGRpZmZfZW1pdF9odW5rX2NvbnN1bWVfZm4gZm4sIHZvaWQgKmNvbnN1bWVfY2FsbGJhY2tfZGF0YSwKKwkJICAgeHBwYXJhbV90IGNvbnN0ICp4cHAsIHhkZW1pdGNvbmZfdCAqeGVjZmcpCit7CisJc3RydWN0IHhkaWZmX2VtaXRfaHVua19zdGF0ZSBzdGF0ZTsKKwl4ZGVtaXRjYl90IGVjYjsKKworCW1lbXNldCgmc3RhdGUsIDAsIHNpemVvZihzdGF0ZSkpOworCW1lbXNldCgmZWNiLCAwLCBzaXplb2YoZWNiKSk7CisJc3RhdGUuY29uc3VtZSA9IGZuOworCXN0YXRlLmNvbnN1bWVfY2FsbGJhY2tfZGF0YSA9IGNvbnN1bWVfY2FsbGJhY2tfZGF0YTsKKwl4ZWNmZy0+ZW1pdF9mdW5jID0gKHZvaWQgKCopKCkpcHJvY2Vzc19kaWZmOworCWVjYi5wcml2ID0gJnN0YXRlOworCXJldHVybiB4ZGlfZGlmZihtZjEsIG1mMiwgeHBwLCB4ZWNmZywgJmVjYik7Cit9CisKIGludCByZWFkX21tZmlsZShtbWZpbGVfdCAqcHRyLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKIHsKIAlzdHJ1Y3Qgc3RhdCBzdDsKQEAgLTE4Miw3ICsyNDEsOCBAQAogCWNoYXIgKmxpbmVfYnVmZmVyOwogCXN0cnVjdCBmZl9yZWdzICpyZWdzID0gcHJpdjsKIAlyZWdtYXRjaF90IHBtYXRjaFsyXTsKLQlpbnQgcmVzdWx0ID0gMCwgaTsKKwlpbnQgaTsKKwlpbnQgcmVzdWx0ID0gLTE7CiAKIAkvKiBFeGNsdWRlIHRlcm1pbmF0aW5nIG5ld2xpbmUgKGFuZCBjcikgZnJvbSBtYXRjaGluZyAqLwogCWlmIChsZW4gPiAwICYmIGxpbmVbbGVuLTFdID09ICdcbicpIHsKQEAgLTE5NiwyMiArMjU2LDI0IEBACiAKIAlmb3IgKGkgPSAwOyBpIDwgcmVncy0+bnI7IGkrKykgewogCQlzdHJ1Y3QgZmZfcmVnICpyZWcgPSByZWdzLT5hcnJheSArIGk7Ci0JCWlmIChyZWctPm5lZ2F0ZSBeICEhcmVnZXhlYygmcmVnLT5yZSwKLQkJCQkJbGluZV9idWZmZXIsIDIsIHBtYXRjaCwgMCkpIHsKLQkJCWZyZWUobGluZV9idWZmZXIpOwotCQkJcmV0dXJuIC0xOworCQlpZiAoIXJlZ2V4ZWMoJnJlZy0+cmUsIGxpbmVfYnVmZmVyLCAyLCBwbWF0Y2gsIDApKSB7CisJCQlpZiAocmVnLT5uZWdhdGUpCisJCQkJZ290byBmYWlsOworCQkJYnJlYWs7CiAJCX0KIAl9CisJaWYgKHJlZ3MtPm5yIDw9IGkpCisJCWdvdG8gZmFpbDsKIAlpID0gcG1hdGNoWzFdLnJtX3NvID49IDAgPyAxIDogMDsKIAlsaW5lICs9IHBtYXRjaFtpXS5ybV9zbzsKIAlyZXN1bHQgPSBwbWF0Y2hbaV0ucm1fZW8gLSBwbWF0Y2hbaV0ucm1fc287CiAJaWYgKHJlc3VsdCA+IGJ1ZmZlcl9zaXplKQogCQlyZXN1bHQgPSBidWZmZXJfc2l6ZTsKIAllbHNlCi0JCXdoaWxlIChyZXN1bHQgPiAwICYmIChpc3NwYWNlKGxpbmVbcmVzdWx0IC0gMV0pIHx8Ci0JCQkJCWxpbmVbcmVzdWx0IC0gMV0gPT0gJ1xuJykpCisJCXdoaWxlIChyZXN1bHQgPiAwICYmIChpc3NwYWNlKGxpbmVbcmVzdWx0IC0gMV0pKSkKIAkJCXJlc3VsdC0tOwogCW1lbWNweShidWZmZXIsIGxpbmUsIHJlc3VsdCk7CisgZmFpbDoKIAlmcmVlKGxpbmVfYnVmZmVyKTsKIAlyZXR1cm4gcmVzdWx0OwogfQpAQCAtMjQ3LDMgKzMwOSwyMiBAQAogCQl2YWx1ZSA9IGVwICsgMTsKIAl9CiB9CisKK2ludCBnaXRfeG1lcmdlX3N0eWxlID0gLTE7CisKK2ludCBnaXRfeG1lcmdlX2NvbmZpZyhjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlLCB2b2lkICpjYikKK3sKKwlpZiAoIXN0cmNhc2VjbXAodmFyLCAibWVyZ2UuY29uZmxpY3RzdHlsZSIpKSB7CisJCWlmICghdmFsdWUpCisJCQlkaWUoIiclcycgaXMgbm90IGEgYm9vbGVhbiIsIHZhcik7CisJCWlmICghc3RyY21wKHZhbHVlLCAiZGlmZjMiKSkKKwkJCWdpdF94bWVyZ2Vfc3R5bGUgPSBYRExfTUVSR0VfRElGRjM7CisJCWVsc2UgaWYgKCFzdHJjbXAodmFsdWUsICJtZXJnZSIpKQorCQkJZ2l0X3htZXJnZV9zdHlsZSA9IDA7CisJCWVsc2UKKwkJCWRpZSgidW5rbm93biBzdHlsZSAnJXMnIGdpdmVuIGZvciAnJXMnIiwKKwkJCSAgICB2YWx1ZSwgdmFyKTsKKwkJcmV0dXJuIDA7CisJfQorCXJldHVybiBnaXRfZGVmYXVsdF9jb25maWcodmFyLCB2YWx1ZSwgY2IpOworfQpkaWZmIC0tZ2l0IGEveGRpZmYtaW50ZXJmYWNlLmggYi94ZGlmZi1pbnRlcmZhY2UuaAppbmRleCAzM2NhYjlkLi43MzUyYjlhIDEwMDY0NAotLS0gYS94ZGlmZi1pbnRlcmZhY2UuaAorKysgYi94ZGlmZi1pbnRlcmZhY2UuaApAQCAtMywxOCArMywxNyBAQAogCiAjaW5jbHVkZSAieGRpZmYveGRpZmYuaCIKIAotc3RydWN0IHhkaWZmX2VtaXRfc3RhdGU7Ci0KIHR5cGVkZWYgdm9pZCAoKnhkaWZmX2VtaXRfY29uc3VtZV9mbikodm9pZCAqLCBjaGFyICosIHVuc2lnbmVkIGxvbmcpOwotCi1zdHJ1Y3QgeGRpZmZfZW1pdF9zdGF0ZSB7Ci0JeGRpZmZfZW1pdF9jb25zdW1lX2ZuIGNvbnN1bWU7Ci0JY2hhciAqcmVtYWluZGVyOwotCXVuc2lnbmVkIGxvbmcgcmVtYWluZGVyX3NpemU7Ci19OwordHlwZWRlZiB2b2lkICgqeGRpZmZfZW1pdF9odW5rX2NvbnN1bWVfZm4pKHZvaWQgKiwgbG9uZywgbG9uZywgbG9uZyk7CiAKIGludCB4ZGlfZGlmZihtbWZpbGVfdCAqbWYxLCBtbWZpbGVfdCAqbWYyLCB4cHBhcmFtX3QgY29uc3QgKnhwcCwgeGRlbWl0Y29uZl90IGNvbnN0ICp4ZWNmZywgeGRlbWl0Y2JfdCAqZWNiKTsKLWludCB4ZGlmZl9vdXRmKHZvaWQgKnByaXZfLCBtbWJ1ZmZlcl90ICptYiwgaW50IG5idWYpOworaW50IHhkaV9kaWZmX291dGYobW1maWxlX3QgKm1mMSwgbW1maWxlX3QgKm1mMiwKKwkJICB4ZGlmZl9lbWl0X2NvbnN1bWVfZm4gZm4sIHZvaWQgKmNvbnN1bWVfY2FsbGJhY2tfZGF0YSwKKwkJICB4cHBhcmFtX3QgY29uc3QgKnhwcCwKKwkJICB4ZGVtaXRjb25mX3QgY29uc3QgKnhlY2ZnLCB4ZGVtaXRjYl90ICp4ZWNiKTsKK2ludCB4ZGlfZGlmZl9odW5rcyhtbWZpbGVfdCAqbWYxLCBtbWZpbGVfdCAqbWYyLAorCQkgICB4ZGlmZl9lbWl0X2h1bmtfY29uc3VtZV9mbiBmbiwgdm9pZCAqY29uc3VtZV9jYWxsYmFja19kYXRhLAorCQkgICB4cHBhcmFtX3QgY29uc3QgKnhwcCwgeGRlbWl0Y29uZl90ICp4ZWNmZyk7CiBpbnQgcGFyc2VfaHVua19oZWFkZXIoY2hhciAqbGluZSwgaW50IGxlbiwKIAkJICAgICAgaW50ICpvYiwgaW50ICpvbiwKIAkJICAgICAgaW50ICpuYiwgaW50ICpubik7CkBAIC0yMiw1ICsyMSw3IEBACiBpbnQgYnVmZmVyX2lzX2JpbmFyeShjb25zdCBjaGFyICpwdHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CiAKIGV4dGVybiB2b2lkIHhkaWZmX3NldF9maW5kX2Z1bmMoeGRlbWl0Y29uZl90ICp4ZWNmZywgY29uc3QgY2hhciAqbGluZSwgaW50IGNmbGFncyk7CitleHRlcm4gaW50IGdpdF94bWVyZ2VfY29uZmlnKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUsIHZvaWQgKmNiKTsKK2V4dGVybiBpbnQgZ2l0X3htZXJnZV9zdHlsZTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS94ZGlmZi94ZGlmZi5oIGIveGRpZmYveGRpZmYuaAppbmRleCA0MTMwODJlLi44NGZmZjU4IDEwMDY0NAotLS0gYS94ZGlmZi94ZGlmZi5oCisrKyBiL3hkaWZmL3hkaWZmLmgKQEAgLTUwLDEwICs1MCwxNiBAQAogI2RlZmluZSBYRExfQkRPUF9DUFkgMgogI2RlZmluZSBYRExfQkRPUF9JTlNCIDMKIAorLyogbWVyZ2Ugc2ltcGxpZmljYXRpb24gbGV2ZWxzICovCiAjZGVmaW5lIFhETF9NRVJHRV9NSU5JTUFMIDAKICNkZWZpbmUgWERMX01FUkdFX0VBR0VSIDEKICNkZWZpbmUgWERMX01FUkdFX1pFQUxPVVMgMgogI2RlZmluZSBYRExfTUVSR0VfWkVBTE9VU19BTE5VTSAzCisjZGVmaW5lIFhETF9NRVJHRV9MRVZFTF9NQVNLIDB4MGYKKworLyogbWVyZ2Ugb3V0cHV0IHN0eWxlcyAqLworI2RlZmluZSBYRExfTUVSR0VfRElGRjMgMHg4MDAwCisjZGVmaW5lIFhETF9NRVJHRV9TVFlMRV9NQVNLIDB4ODAwMAogCiB0eXBlZGVmIHN0cnVjdCBzX21tZmlsZSB7CiAJY2hhciAqcHRyOwpAQCAtODEsNiArODcsNyBAQAogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJZmluZF9mdW5jX3QgZmluZF9mdW5jOwogCXZvaWQgKmZpbmRfZnVuY19wcml2OworCXZvaWQgKCplbWl0X2Z1bmMpKCk7CiB9IHhkZW1pdGNvbmZfdDsKIAogdHlwZWRlZiBzdHJ1Y3Qgc19iZGlmZnBhcmFtIHsKZGlmZiAtLWdpdCBhL3hkaWZmL3hkaWZmaS5jIGIveGRpZmYveGRpZmZpLmMKaW5kZXggMWJhZDg0Ni4uOWQwMzI0YSAxMDA2NDQKLS0tIGEveGRpZmYveGRpZmZpLmMKKysrIGIveGRpZmYveGRpZmZpLmMKQEAgLTUzOCw2ICs1MzgsOCBAQAogCSAgICAgeGRlbWl0Y29uZl90IGNvbnN0ICp4ZWNmZywgeGRlbWl0Y2JfdCAqZWNiKSB7CiAJeGRjaGFuZ2VfdCAqeHNjcjsKIAl4ZGZlbnZfdCB4ZTsKKwllbWl0X2Z1bmNfdCBlZiA9IHhlY2ZnLT5lbWl0X2Z1bmMgPworCQkoZW1pdF9mdW5jX3QpeGVjZmctPmVtaXRfZnVuYyA6IHhkbF9lbWl0X2RpZmY7CiAKIAlpZiAoeGRsX2RvX2RpZmYobWYxLCBtZjIsIHhwcCwgJnhlKSA8IDApIHsKIApAQCAtNTUxLDcgKzU1Myw3IEBACiAJCXJldHVybiAtMTsKIAl9CiAJaWYgKHhzY3IpIHsKLQkJaWYgKHhkbF9lbWl0X2RpZmYoJnhlLCB4c2NyLCBlY2IsIHhlY2ZnKSA8IDApIHsKKwkJaWYgKGVmKCZ4ZSwgeHNjciwgZWNiLCB4ZWNmZykgPCAwKSB7CiAKIAkJCXhkbF9mcmVlX3NjcmlwdCh4c2NyKTsKIAkJCXhkbF9mcmVlX2VudigmeGUpOwpkaWZmIC0tZ2l0IGEveGRpZmYveGVtaXQuYyBiL3hkaWZmL3hlbWl0LmMKaW5kZXggZDNkOWM4NC4uNDYyNWMxYiAxMDA2NDQKLS0tIGEveGRpZmYveGVtaXQuYworKysgYi94ZGlmZi94ZW1pdC5jCkBAIC0yNyw3ICsyNyw2IEBACiAKIHN0YXRpYyBsb25nIHhkbF9nZXRfcmVjKHhkZmlsZV90ICp4ZGYsIGxvbmcgcmksIGNoYXIgY29uc3QgKipyZWMpOwogc3RhdGljIGludCB4ZGxfZW1pdF9yZWNvcmQoeGRmaWxlX3QgKnhkZiwgbG9uZyByaSwgY2hhciBjb25zdCAqcHJlLCB4ZGVtaXRjYl90ICplY2IpOwotc3RhdGljIHhkY2hhbmdlX3QgKnhkbF9nZXRfaHVuayh4ZGNoYW5nZV90ICp4c2NyLCB4ZGVtaXRjb25mX3QgY29uc3QgKnhlY2ZnKTsKIAogCiAKQEAgLTU4LDcgKzU3LDcgQEAKICAqIFN0YXJ0aW5nIGF0IHRoZSBwYXNzZWQgY2hhbmdlIGF0b20sIGZpbmQgdGhlIGxhdGVzdCBjaGFuZ2UgYXRvbSB0byBiZSBpbmNsdWRlZAogICogaW5zaWRlIHRoZSBkaWZmZXJlbnRpYWwgaHVuayBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBjb25maWd1cmF0aW9uLgogICovCi1zdGF0aWMgeGRjaGFuZ2VfdCAqeGRsX2dldF9odW5rKHhkY2hhbmdlX3QgKnhzY3IsIHhkZW1pdGNvbmZfdCBjb25zdCAqeGVjZmcpIHsKK3hkY2hhbmdlX3QgKnhkbF9nZXRfaHVuayh4ZGNoYW5nZV90ICp4c2NyLCB4ZGVtaXRjb25mX3QgY29uc3QgKnhlY2ZnKSB7CiAJeGRjaGFuZ2VfdCAqeGNoLCAqeGNocDsKIAogCWZvciAoeGNocCA9IHhzY3IsIHhjaCA9IHhzY3ItPm5leHQ7IHhjaDsgeGNocCA9IHhjaCwgeGNoID0geGNoLT5uZXh0KQpkaWZmIC0tZ2l0IGEveGRpZmYveGVtaXQuaCBiL3hkaWZmL3hlbWl0LmgKaW5kZXggNDQwYTczOS4uYzJlMmU4MyAxMDA2NDQKLS0tIGEveGRpZmYveGVtaXQuaAorKysgYi94ZGlmZi94ZW1pdC5oCkBAIC0yNCw3ICsyNCwxMCBAQAogI2RlZmluZSBYRU1JVF9ICiAKIAordHlwZWRlZiBpbnQgKCplbWl0X2Z1bmNfdCkoeGRmZW52X3QgKnhlLCB4ZGNoYW5nZV90ICp4c2NyLCB4ZGVtaXRjYl90ICplY2IsCisJCQkgICB4ZGVtaXRjb25mX3QgY29uc3QgKnhlY2ZnKTsKIAoreGRjaGFuZ2VfdCAqeGRsX2dldF9odW5rKHhkY2hhbmdlX3QgKnhzY3IsIHhkZW1pdGNvbmZfdCBjb25zdCAqeGVjZmcpOwogaW50IHhkbF9lbWl0X2RpZmYoeGRmZW52X3QgKnhlLCB4ZGNoYW5nZV90ICp4c2NyLCB4ZGVtaXRjYl90ICplY2IsCiAJCSAgeGRlbWl0Y29uZl90IGNvbnN0ICp4ZWNmZyk7CiAKZGlmZiAtLWdpdCBhL3hkaWZmL3htZXJnZS5jIGIveGRpZmYveG1lcmdlLmMKaW5kZXggODJiMzU3My4uZDk3MzdmMCAxMDA2NDQKLS0tIGEveGRpZmYveG1lcmdlLmMKKysrIGIveGRpZmYveG1lcmdlLmMKQEAgLTMwLDE3ICszMCwzMiBAQAogCSAqIDIgPSBubyBjb25mbGljdCwgdGFrZSBzZWNvbmQuCiAJICovCiAJaW50IG1vZGU7CisJLyoKKwkgKiBUaGVzZSBwb2ludCBhdCB0aGUgcmVzcGVjdGl2ZSBwb3N0aW1hZ2VzLiAgRS5nLiA8aTEsY2hnMT4gaXMKKwkgKiBob3cgc2lkZSAjMSB3YW50cyB0byBjaGFuZ2UgdGhlIGNvbW1vbiBhbmNlc3RvcjsgaWYgdGhlcmUgaXMgbm8KKwkgKiBvdmVybGFwLCBsaW5lcyBiZWZvcmUgaTEgaW4gdGhlIHBvc3RpbWFnZSBvZiBzaWRlICMxIGFwcGVhcgorCSAqIGluIHRoZSBtZXJnZSByZXN1bHQgYXMgYSByZWdpb24gdG91Y2hlZCBieSBuZWl0aGVyIHNpZGUuCisJICovCiAJbG9uZyBpMSwgaTI7CiAJbG9uZyBjaGcxLCBjaGcyOworCS8qCisJICogVGhlc2UgcG9pbnQgYXQgdGhlIHByZWltYWdlOyBvZiBjb3Vyc2UgdGhlcmUgaXMganVzdCBvbmUKKwkgKiBwcmVpbWFnZSwgdGhhdCBpcyBmcm9tIHRoZSBzaGFyZWQgY29tbW9uIGFuY2VzdG9yLgorCSAqLworCWxvbmcgaTA7CisJbG9uZyBjaGcwOwogfSB4ZG1lcmdlX3Q7CiAKIHN0YXRpYyBpbnQgeGRsX2FwcGVuZF9tZXJnZSh4ZG1lcmdlX3QgKiptZXJnZSwgaW50IG1vZGUsCi0JCWxvbmcgaTEsIGxvbmcgY2hnMSwgbG9uZyBpMiwgbG9uZyBjaGcyKQorCQkJICAgIGxvbmcgaTAsIGxvbmcgY2hnMCwKKwkJCSAgICBsb25nIGkxLCBsb25nIGNoZzEsCisJCQkgICAgbG9uZyBpMiwgbG9uZyBjaGcyKQogewogCXhkbWVyZ2VfdCAqbSA9ICptZXJnZTsKIAlpZiAobSAmJiAoaTEgPD0gbS0+aTEgKyBtLT5jaGcxIHx8IGkyIDw9IG0tPmkyICsgbS0+Y2hnMikpIHsKIAkJaWYgKG1vZGUgIT0gbS0+bW9kZSkKIAkJCW0tPm1vZGUgPSAwOworCQltLT5jaGcwID0gaTAgKyBjaGcwIC0gbS0+aTA7CiAJCW0tPmNoZzEgPSBpMSArIGNoZzEgLSBtLT5pMTsKIAkJbS0+Y2hnMiA9IGkyICsgY2hnMiAtIG0tPmkyOwogCX0gZWxzZSB7CkBAIC00OSw2ICs2NCw4IEBACiAJCQlyZXR1cm4gLTE7CiAJCW0tPm5leHQgPSBOVUxMOwogCQltLT5tb2RlID0gbW9kZTsKKwkJbS0+aTAgPSBpMDsKKwkJbS0+Y2hnMCA9IGNoZzA7CiAJCW0tPmkxID0gaTE7CiAJCW0tPmNoZzEgPSBjaGcxOwogCQltLT5pMiA9IGkyOwpAQCAtOTEsMTEgKzEwOCwxMyBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHhkbF9yZWNzX2NvcHkoeGRmZW52X3QgKnhlLCBpbnQgaSwgaW50IGNvdW50LCBpbnQgYWRkX25sLCBjaGFyICpkZXN0KQorc3RhdGljIGludCB4ZGxfcmVjc19jb3B5XzAoaW50IHVzZV9vcmlnLCB4ZGZlbnZfdCAqeGUsIGludCBpLCBpbnQgY291bnQsIGludCBhZGRfbmwsIGNoYXIgKmRlc3QpCiB7Ci0JeHJlY29yZF90ICoqcmVjcyA9IHhlLT54ZGYyLnJlY3MgKyBpOworCXhyZWNvcmRfdCAqKnJlY3M7CiAJaW50IHNpemUgPSAwOwogCisJcmVjcyA9ICh1c2Vfb3JpZyA/IHhlLT54ZGYxLnJlY3MgOiB4ZS0+eGRmMi5yZWNzKSArIGk7CisKIAlpZiAoY291bnQgPCAxKQogCQlyZXR1cm4gMDsKIApAQCAtMTEzLDY1ICsxMzIsMTA5IEBACiAJcmV0dXJuIHNpemU7CiB9CiAKLXN0YXRpYyBpbnQgeGRsX2ZpbGxfbWVyZ2VfYnVmZmVyKHhkZmVudl90ICp4ZTEsIGNvbnN0IGNoYXIgKm5hbWUxLAotCQl4ZGZlbnZfdCAqeGUyLCBjb25zdCBjaGFyICpuYW1lMiwgeGRtZXJnZV90ICptLCBjaGFyICpkZXN0KQorc3RhdGljIGludCB4ZGxfcmVjc19jb3B5KHhkZmVudl90ICp4ZSwgaW50IGksIGludCBjb3VudCwgaW50IGFkZF9ubCwgY2hhciAqZGVzdCkKK3sKKwlyZXR1cm4geGRsX3JlY3NfY29weV8wKDAsIHhlLCBpLCBjb3VudCwgYWRkX25sLCBkZXN0KTsKK30KKworc3RhdGljIGludCB4ZGxfb3JpZ19jb3B5KHhkZmVudl90ICp4ZSwgaW50IGksIGludCBjb3VudCwgaW50IGFkZF9ubCwgY2hhciAqZGVzdCkKK3sKKwlyZXR1cm4geGRsX3JlY3NfY29weV8wKDEsIHhlLCBpLCBjb3VudCwgYWRkX25sLCBkZXN0KTsKK30KKworc3RhdGljIGludCBmaWxsX2NvbmZsaWN0X2h1bmsoeGRmZW52X3QgKnhlMSwgY29uc3QgY2hhciAqbmFtZTEsCisJCQkgICAgICB4ZGZlbnZfdCAqeGUyLCBjb25zdCBjaGFyICpuYW1lMiwKKwkJCSAgICAgIGludCBzaXplLCBpbnQgaSwgaW50IHN0eWxlLAorCQkJICAgICAgeGRtZXJnZV90ICptLCBjaGFyICpkZXN0KQogewogCWNvbnN0IGludCBtYXJrZXJfc2l6ZSA9IDc7CiAJaW50IG1hcmtlcjFfc2l6ZSA9IChuYW1lMSA/IHN0cmxlbihuYW1lMSkgKyAxIDogMCk7CiAJaW50IG1hcmtlcjJfc2l6ZSA9IChuYW1lMiA/IHN0cmxlbihuYW1lMikgKyAxIDogMCk7Ci0JaW50IGNvbmZsaWN0X21hcmtlcl9zaXplID0gMyAqIChtYXJrZXJfc2l6ZSArIDEpCi0JCSsgbWFya2VyMV9zaXplICsgbWFya2VyMl9zaXplOwotCWludCBzaXplLCBpMSwgajsKKwlpbnQgajsKIAotCWZvciAoc2l6ZSA9IGkxID0gMDsgbTsgbSA9IG0tPm5leHQpIHsKLQkJaWYgKG0tPm1vZGUgPT0gMCkgewotCQkJc2l6ZSArPSB4ZGxfcmVjc19jb3B5KHhlMSwgaTEsIG0tPmkxIC0gaTEsIDAsCi0JCQkJCWRlc3QgPyBkZXN0ICsgc2l6ZSA6IE5VTEwpOwotCQkJaWYgKGRlc3QpIHsKLQkJCQlmb3IgKGogPSAwOyBqIDwgbWFya2VyX3NpemU7IGorKykKLQkJCQkJZGVzdFtzaXplKytdID0gJzwnOwotCQkJCWlmIChtYXJrZXIxX3NpemUpIHsKLQkJCQkJZGVzdFtzaXplXSA9ICcgJzsKLQkJCQkJbWVtY3B5KGRlc3QgKyBzaXplICsgMSwgbmFtZTEsCi0JCQkJCQkJbWFya2VyMV9zaXplIC0gMSk7Ci0JCQkJCXNpemUgKz0gbWFya2VyMV9zaXplOwotCQkJCX0KLQkJCQlkZXN0W3NpemUrK10gPSAnXG4nOwotCQkJfSBlbHNlCi0JCQkJc2l6ZSArPSBjb25mbGljdF9tYXJrZXJfc2l6ZTsKLQkJCXNpemUgKz0geGRsX3JlY3NfY29weSh4ZTEsIG0tPmkxLCBtLT5jaGcxLCAxLAotCQkJCQlkZXN0ID8gZGVzdCArIHNpemUgOiBOVUxMKTsKLQkJCWlmIChkZXN0KSB7Ci0JCQkJZm9yIChqID0gMDsgaiA8IG1hcmtlcl9zaXplOyBqKyspCi0JCQkJCWRlc3Rbc2l6ZSsrXSA9ICc9JzsKLQkJCQlkZXN0W3NpemUrK10gPSAnXG4nOwotCQkJfQotCQkJc2l6ZSArPSB4ZGxfcmVjc19jb3B5KHhlMiwgbS0+aTIsIG0tPmNoZzIsIDEsCi0JCQkJCWRlc3QgPyBkZXN0ICsgc2l6ZSA6IE5VTEwpOwotCQkJaWYgKGRlc3QpIHsKLQkJCQlmb3IgKGogPSAwOyBqIDwgbWFya2VyX3NpemU7IGorKykKLQkJCQkJZGVzdFtzaXplKytdID0gJz4nOwotCQkJCWlmIChtYXJrZXIyX3NpemUpIHsKLQkJCQkJZGVzdFtzaXplXSA9ICcgJzsKLQkJCQkJbWVtY3B5KGRlc3QgKyBzaXplICsgMSwgbmFtZTIsCi0JCQkJCQkJbWFya2VyMl9zaXplIC0gMSk7Ci0JCQkJCXNpemUgKz0gbWFya2VyMl9zaXplOwotCQkJCX0KLQkJCQlkZXN0W3NpemUrK10gPSAnXG4nOwotCQkJfQotCQl9IGVsc2UgaWYgKG0tPm1vZGUgPT0gMSkKLQkJCXNpemUgKz0geGRsX3JlY3NfY29weSh4ZTEsIGkxLCBtLT5pMSArIG0tPmNoZzEgLSBpMSwgMCwKLQkJCQkJZGVzdCA/IGRlc3QgKyBzaXplIDogTlVMTCk7CisJLyogQmVmb3JlIGNvbmZsaWN0aW5nIHBhcnQgKi8KKwlzaXplICs9IHhkbF9yZWNzX2NvcHkoeGUxLCBpLCBtLT5pMSAtIGksIDAsCisJCQkgICAgICBkZXN0ID8gZGVzdCArIHNpemUgOiBOVUxMKTsKKworCWlmICghZGVzdCkgeworCQlzaXplICs9IG1hcmtlcl9zaXplICsgMSArIG1hcmtlcjFfc2l6ZTsKKwl9IGVsc2UgeworCQlmb3IgKGogPSAwOyBqIDwgbWFya2VyX3NpemU7IGorKykKKwkJCWRlc3Rbc2l6ZSsrXSA9ICc8JzsKKwkJaWYgKG1hcmtlcjFfc2l6ZSkgeworCQkJZGVzdFtzaXplXSA9ICcgJzsKKwkJCW1lbWNweShkZXN0ICsgc2l6ZSArIDEsIG5hbWUxLCBtYXJrZXIxX3NpemUgLSAxKTsKKwkJCXNpemUgKz0gbWFya2VyMV9zaXplOworCQl9CisJCWRlc3Rbc2l6ZSsrXSA9ICdcbic7CisJfQorCisJLyogUG9zdGltYWdlIGZyb20gc2lkZSAjMSAqLworCXNpemUgKz0geGRsX3JlY3NfY29weSh4ZTEsIG0tPmkxLCBtLT5jaGcxLCAxLAorCQkJICAgICAgZGVzdCA/IGRlc3QgKyBzaXplIDogTlVMTCk7CisKKwlpZiAoc3R5bGUgPT0gWERMX01FUkdFX0RJRkYzKSB7CisJCS8qIFNoYXJlZCBwcmVpbWFnZSAqLworCQlpZiAoIWRlc3QpIHsKKwkJCXNpemUgKz0gbWFya2VyX3NpemUgKyAxOworCQl9IGVsc2UgeworCQkJZm9yIChqID0gMDsgaiA8IG1hcmtlcl9zaXplOyBqKyspCisJCQkJZGVzdFtzaXplKytdID0gJ3wnOworCQkJZGVzdFtzaXplKytdID0gJ1xuJzsKKwkJfQorCQlzaXplICs9IHhkbF9vcmlnX2NvcHkoeGUxLCBtLT5pMCwgbS0+Y2hnMCwgMSwKKwkJCQkgICAgICBkZXN0ID8gZGVzdCArIHNpemUgOiBOVUxMKTsKKwl9CisKKwlpZiAoIWRlc3QpIHsKKwkJc2l6ZSArPSBtYXJrZXJfc2l6ZSArIDE7CisJfSBlbHNlIHsKKwkJZm9yIChqID0gMDsgaiA8IG1hcmtlcl9zaXplOyBqKyspCisJCQlkZXN0W3NpemUrK10gPSAnPSc7CisJCWRlc3Rbc2l6ZSsrXSA9ICdcbic7CisJfQorCisJLyogUG9zdGltYWdlIGZyb20gc2lkZSAjMiAqLworCXNpemUgKz0geGRsX3JlY3NfY29weSh4ZTIsIG0tPmkyLCBtLT5jaGcyLCAxLAorCQkJICAgICAgZGVzdCA/IGRlc3QgKyBzaXplIDogTlVMTCk7CisJaWYgKCFkZXN0KSB7CisJCXNpemUgKz0gbWFya2VyX3NpemUgKyAxICsgbWFya2VyMl9zaXplOworCX0gZWxzZSB7CisJCWZvciAoaiA9IDA7IGogPCBtYXJrZXJfc2l6ZTsgaisrKQorCQkJZGVzdFtzaXplKytdID0gJz4nOworCQlpZiAobWFya2VyMl9zaXplKSB7CisJCQlkZXN0W3NpemVdID0gJyAnOworCQkJbWVtY3B5KGRlc3QgKyBzaXplICsgMSwgbmFtZTIsIG1hcmtlcjJfc2l6ZSAtIDEpOworCQkJc2l6ZSArPSBtYXJrZXIyX3NpemU7CisJCX0KKwkJZGVzdFtzaXplKytdID0gJ1xuJzsKKwl9CisJcmV0dXJuIHNpemU7Cit9CisKK3N0YXRpYyBpbnQgeGRsX2ZpbGxfbWVyZ2VfYnVmZmVyKHhkZmVudl90ICp4ZTEsIGNvbnN0IGNoYXIgKm5hbWUxLAorCQkJCSB4ZGZlbnZfdCAqeGUyLCBjb25zdCBjaGFyICpuYW1lMiwKKwkJCQkgeGRtZXJnZV90ICptLCBjaGFyICpkZXN0LCBpbnQgc3R5bGUpCit7CisJaW50IHNpemUsIGk7CisKKwlmb3IgKHNpemUgPSBpID0gMDsgbTsgbSA9IG0tPm5leHQpIHsKKwkJaWYgKG0tPm1vZGUgPT0gMCkKKwkJCXNpemUgPSBmaWxsX2NvbmZsaWN0X2h1bmsoeGUxLCBuYW1lMSwgeGUyLCBuYW1lMiwKKwkJCQkJCSAgc2l6ZSwgaSwgc3R5bGUsIG0sIGRlc3QpOworCQllbHNlIGlmIChtLT5tb2RlID09IDEpCisJCQlzaXplICs9IHhkbF9yZWNzX2NvcHkoeGUxLCBpLCBtLT5pMSArIG0tPmNoZzEgLSBpLCAwLAorCQkJCQkgICAgICBkZXN0ID8gZGVzdCArIHNpemUgOiBOVUxMKTsKIAkJZWxzZSBpZiAobS0+bW9kZSA9PSAyKQotCQkJc2l6ZSArPSB4ZGxfcmVjc19jb3B5KHhlMiwgbS0+aTIgLSBtLT5pMSArIGkxLAotCQkJCQltLT5pMSArIG0tPmNoZzIgLSBpMSwgMCwKLQkJCQkJZGVzdCA/IGRlc3QgKyBzaXplIDogTlVMTCk7CisJCQlzaXplICs9IHhkbF9yZWNzX2NvcHkoeGUyLCBtLT5pMiAtIG0tPmkxICsgaSwKKwkJCQkJICAgICAgbS0+aTEgKyBtLT5jaGcyIC0gaSwgMCwKKwkJCQkJICAgICAgZGVzdCA/IGRlc3QgKyBzaXplIDogTlVMTCk7CiAJCWVsc2UKIAkJCWNvbnRpbnVlOwotCQlpMSA9IG0tPmkxICsgbS0+Y2hnMTsKKwkJaSA9IG0tPmkxICsgbS0+Y2hnMTsKIAl9Ci0Jc2l6ZSArPSB4ZGxfcmVjc19jb3B5KHhlMSwgaTEsIHhlMS0+eGRmMi5ucmVjIC0gaTEsIDAsCi0JCQlkZXN0ID8gZGVzdCArIHNpemUgOiBOVUxMKTsKKwlzaXplICs9IHhkbF9yZWNzX2NvcHkoeGUxLCBpLCB4ZTEtPnhkZjIubnJlYyAtIGksIDAsCisJCQkgICAgICBkZXN0ID8gZGVzdCArIHNpemUgOiBOVUxMKTsKIAlyZXR1cm4gc2l6ZTsKIH0KIApAQCAtMzIzLDkgKzM4NiwyMCBAQAogICovCiBzdGF0aWMgaW50IHhkbF9kb19tZXJnZSh4ZGZlbnZfdCAqeGUxLCB4ZGNoYW5nZV90ICp4c2NyMSwgY29uc3QgY2hhciAqbmFtZTEsCiAJCXhkZmVudl90ICp4ZTIsIHhkY2hhbmdlX3QgKnhzY3IyLCBjb25zdCBjaGFyICpuYW1lMiwKLQkJaW50IGxldmVsLCB4cHBhcmFtX3QgY29uc3QgKnhwcCwgbW1idWZmZXJfdCAqcmVzdWx0KSB7CisJCWludCBmbGFncywgeHBwYXJhbV90IGNvbnN0ICp4cHAsIG1tYnVmZmVyX3QgKnJlc3VsdCkgewogCXhkbWVyZ2VfdCAqY2hhbmdlcywgKmM7Ci0JaW50IGkxLCBpMiwgY2hnMSwgY2hnMjsKKwlpbnQgaTAsIGkxLCBpMiwgY2hnMCwgY2hnMSwgY2hnMjsKKwlpbnQgbGV2ZWwgPSBmbGFncyAmIFhETF9NRVJHRV9MRVZFTF9NQVNLOworCWludCBzdHlsZSA9IGZsYWdzICYgWERMX01FUkdFX1NUWUxFX01BU0s7CisKKwlpZiAoc3R5bGUgPT0gWERMX01FUkdFX0RJRkYzKSB7CisJCS8qCisJCSAqICJkaWZmMyAtbSIgb3V0cHV0IGRvZXMgbm90IG1ha2Ugc2Vuc2UgZm9yIGFueXRoaW5nCisJCSAqIG1vcmUgYWdncmVzc2l2ZSB0aGFuIFhETF9NRVJHRV9FQUdFUi4KKwkJICovCisJCWlmIChYRExfTUVSR0VfRUFHRVIgPCBsZXZlbCkKKwkJCWxldmVsID0gWERMX01FUkdFX0VBR0VSOworCX0KIAogCWMgPSBjaGFuZ2VzID0gTlVMTDsKIApAQCAtMzMzLDExICs0MDcsMTQgQEAKIAkJaWYgKCFjaGFuZ2VzKQogCQkJY2hhbmdlcyA9IGM7CiAJCWlmICh4c2NyMS0+aTEgKyB4c2NyMS0+Y2hnMSA8IHhzY3IyLT5pMSkgeworCQkJaTAgPSB4c2NyMS0+aTE7CiAJCQlpMSA9IHhzY3IxLT5pMjsKIAkJCWkyID0geHNjcjItPmkyIC0geHNjcjItPmkxICsgeHNjcjEtPmkxOworCQkJY2hnMCA9IHhzY3IxLT5jaGcxOwogCQkJY2hnMSA9IHhzY3IxLT5jaGcyOwogCQkJY2hnMiA9IHhzY3IxLT5jaGcxOwotCQkJaWYgKHhkbF9hcHBlbmRfbWVyZ2UoJmMsIDEsIGkxLCBjaGcxLCBpMiwgY2hnMikpIHsKKwkJCWlmICh4ZGxfYXBwZW5kX21lcmdlKCZjLCAxLAorCQkJCQkgICAgIGkwLCBjaGcwLCBpMSwgY2hnMSwgaTIsIGNoZzIpKSB7CiAJCQkJeGRsX2NsZWFudXBfbWVyZ2UoY2hhbmdlcyk7CiAJCQkJcmV0dXJuIC0xOwogCQkJfQpAQCAtMzQ1LDE4ICs0MjIsMjEgQEAKIAkJCWNvbnRpbnVlOwogCQl9CiAJCWlmICh4c2NyMi0+aTEgKyB4c2NyMi0+Y2hnMSA8IHhzY3IxLT5pMSkgeworCQkJaTAgPSB4c2NyMi0+aTE7CiAJCQlpMSA9IHhzY3IxLT5pMiAtIHhzY3IxLT5pMSArIHhzY3IyLT5pMTsKIAkJCWkyID0geHNjcjItPmkyOworCQkJY2hnMCA9IHhzY3IyLT5jaGcxOwogCQkJY2hnMSA9IHhzY3IyLT5jaGcxOwogCQkJY2hnMiA9IHhzY3IyLT5jaGcyOwotCQkJaWYgKHhkbF9hcHBlbmRfbWVyZ2UoJmMsIDIsIGkxLCBjaGcxLCBpMiwgY2hnMikpIHsKKwkJCWlmICh4ZGxfYXBwZW5kX21lcmdlKCZjLCAyLAorCQkJCQkgICAgIGkwLCBjaGcwLCBpMSwgY2hnMSwgaTIsIGNoZzIpKSB7CiAJCQkJeGRsX2NsZWFudXBfbWVyZ2UoY2hhbmdlcyk7CiAJCQkJcmV0dXJuIC0xOwogCQkJfQogCQkJeHNjcjIgPSB4c2NyMi0+bmV4dDsKIAkJCWNvbnRpbnVlOwogCQl9Ci0JCWlmIChsZXZlbCA8IDEgfHwgeHNjcjEtPmkxICE9IHhzY3IyLT5pMSB8fAorCQlpZiAobGV2ZWwgPT0gWERMX01FUkdFX01JTklNQUwgfHwgeHNjcjEtPmkxICE9IHhzY3IyLT5pMSB8fAogCQkJCXhzY3IxLT5jaGcxICE9IHhzY3IyLT5jaGcxIHx8CiAJCQkJeHNjcjEtPmNoZzIgIT0geHNjcjItPmNoZzIgfHwKIAkJCQl4ZGxfbWVyZ2VfY21wX2xpbmVzKHhlMSwgeHNjcjEtPmkyLApAQCAtMzY2LDE5ICs0NDYsMjUgQEAKIAkJCWludCBvZmYgPSB4c2NyMS0+aTEgLSB4c2NyMi0+aTE7CiAJCQlpbnQgZmZvID0gb2ZmICsgeHNjcjEtPmNoZzEgLSB4c2NyMi0+Y2hnMTsKIAorCQkJaTAgPSB4c2NyMS0+aTE7CiAJCQlpMSA9IHhzY3IxLT5pMjsKIAkJCWkyID0geHNjcjItPmkyOwotCQkJaWYgKG9mZiA+IDApCisJCQlpZiAob2ZmID4gMCkgeworCQkJCWkwIC09IG9mZjsKIAkJCQlpMSAtPSBvZmY7CisJCQl9CiAJCQllbHNlCiAJCQkJaTIgKz0gb2ZmOworCQkJY2hnMCA9IHhzY3IxLT5pMSArIHhzY3IxLT5jaGcxIC0gaTA7CiAJCQljaGcxID0geHNjcjEtPmkyICsgeHNjcjEtPmNoZzIgLSBpMTsKIAkJCWNoZzIgPSB4c2NyMi0+aTIgKyB4c2NyMi0+Y2hnMiAtIGkyOwotCQkJaWYgKGZmbyA+IDApCi0JCQkJY2hnMiArPSBmZm87Ci0JCQllbHNlCisJCQlpZiAoZmZvIDwgMCkgeworCQkJCWNoZzAgLT0gZmZvOwogCQkJCWNoZzEgLT0gZmZvOwotCQkJaWYgKHhkbF9hcHBlbmRfbWVyZ2UoJmMsIDAsIGkxLCBjaGcxLCBpMiwgY2hnMikpIHsKKwkJCX0gZWxzZQorCQkJCWNoZzIgKz0gZmZvOworCQkJaWYgKHhkbF9hcHBlbmRfbWVyZ2UoJmMsIDAsCisJCQkJCSAgICAgaTAsIGNoZzAsIGkxLCBjaGcxLCBpMiwgY2hnMikpIHsKIAkJCQl4ZGxfY2xlYW51cF9tZXJnZShjaGFuZ2VzKTsKIAkJCQlyZXR1cm4gLTE7CiAJCQl9CkBAIC0zOTUsMTEgKzQ4MSwxNCBAQAogCXdoaWxlICh4c2NyMSkgewogCQlpZiAoIWNoYW5nZXMpCiAJCQljaGFuZ2VzID0gYzsKKwkJaTAgPSB4c2NyMS0+aTE7CiAJCWkxID0geHNjcjEtPmkyOwogCQlpMiA9IHhzY3IxLT5pMSArIHhlMi0+eGRmMi5ucmVjIC0geGUyLT54ZGYxLm5yZWM7CisJCWNoZzAgPSB4c2NyMS0+Y2hnMTsKIAkJY2hnMSA9IHhzY3IxLT5jaGcyOwogCQljaGcyID0geHNjcjEtPmNoZzE7Ci0JCWlmICh4ZGxfYXBwZW5kX21lcmdlKCZjLCAxLCBpMSwgY2hnMSwgaTIsIGNoZzIpKSB7CisJCWlmICh4ZGxfYXBwZW5kX21lcmdlKCZjLCAxLAorCQkJCSAgICAgaTAsIGNoZzAsIGkxLCBjaGcxLCBpMiwgY2hnMikpIHsKIAkJCXhkbF9jbGVhbnVwX21lcmdlKGNoYW5nZXMpOwogCQkJcmV0dXJuIC0xOwogCQl9CkBAIC00MDgsMTEgKzQ5NywxNCBAQAogCXdoaWxlICh4c2NyMikgewogCQlpZiAoIWNoYW5nZXMpCiAJCQljaGFuZ2VzID0gYzsKKwkJaTAgPSB4c2NyMi0+aTE7CiAJCWkxID0geHNjcjItPmkxICsgeGUxLT54ZGYyLm5yZWMgLSB4ZTEtPnhkZjEubnJlYzsKIAkJaTIgPSB4c2NyMi0+aTI7CisJCWNoZzAgPSB4c2NyMi0+Y2hnMTsKIAkJY2hnMSA9IHhzY3IyLT5jaGcxOwogCQljaGcyID0geHNjcjItPmNoZzI7Ci0JCWlmICh4ZGxfYXBwZW5kX21lcmdlKCZjLCAyLCBpMSwgY2hnMSwgaTIsIGNoZzIpKSB7CisJCWlmICh4ZGxfYXBwZW5kX21lcmdlKCZjLCAyLAorCQkJCSAgICAgaTAsIGNoZzAsIGkxLCBjaGcxLCBpMiwgY2hnMikpIHsKIAkJCXhkbF9jbGVhbnVwX21lcmdlKGNoYW5nZXMpOwogCQkJcmV0dXJuIC0xOwogCQl9CkBAIC00MjEsMTYgKzUxMywxNyBAQAogCWlmICghY2hhbmdlcykKIAkJY2hhbmdlcyA9IGM7CiAJLyogcmVmaW5lIGNvbmZsaWN0cyAqLwotCWlmIChsZXZlbCA+IDEgJiYKKwlpZiAoWERMX01FUkdFX1pFQUxPVVMgPD0gbGV2ZWwgJiYKIAkgICAgKHhkbF9yZWZpbmVfY29uZmxpY3RzKHhlMSwgeGUyLCBjaGFuZ2VzLCB4cHApIDwgMCB8fAotCSAgICAgeGRsX3NpbXBsaWZ5X25vbl9jb25mbGljdHMoeGUxLCBjaGFuZ2VzLCBsZXZlbCA+IDIpIDwgMCkpIHsKKwkgICAgIHhkbF9zaW1wbGlmeV9ub25fY29uZmxpY3RzKHhlMSwgY2hhbmdlcywKKwkJCQkJWERMX01FUkdFX1pFQUxPVVMgPCBsZXZlbCkgPCAwKSkgewogCQl4ZGxfY2xlYW51cF9tZXJnZShjaGFuZ2VzKTsKIAkJcmV0dXJuIC0xOwogCX0KIAkvKiBvdXRwdXQgKi8KIAlpZiAocmVzdWx0KSB7CiAJCWludCBzaXplID0geGRsX2ZpbGxfbWVyZ2VfYnVmZmVyKHhlMSwgbmFtZTEsIHhlMiwgbmFtZTIsCi0JCQljaGFuZ2VzLCBOVUxMKTsKKwkJCWNoYW5nZXMsIE5VTEwsIHN0eWxlKTsKIAkJcmVzdWx0LT5wdHIgPSB4ZGxfbWFsbG9jKHNpemUpOwogCQlpZiAoIXJlc3VsdC0+cHRyKSB7CiAJCQl4ZGxfY2xlYW51cF9tZXJnZShjaGFuZ2VzKTsKQEAgLTQzOCwxNCArNTMxLDE0IEBACiAJCX0KIAkJcmVzdWx0LT5zaXplID0gc2l6ZTsKIAkJeGRsX2ZpbGxfbWVyZ2VfYnVmZmVyKHhlMSwgbmFtZTEsIHhlMiwgbmFtZTIsIGNoYW5nZXMsCi0JCQkJcmVzdWx0LT5wdHIpOworCQkJCSAgICAgIHJlc3VsdC0+cHRyLCBzdHlsZSk7CiAJfQogCXJldHVybiB4ZGxfY2xlYW51cF9tZXJnZShjaGFuZ2VzKTsKIH0KIAogaW50IHhkbF9tZXJnZShtbWZpbGVfdCAqb3JpZywgbW1maWxlX3QgKm1mMSwgY29uc3QgY2hhciAqbmFtZTEsCiAJCW1tZmlsZV90ICptZjIsIGNvbnN0IGNoYXIgKm5hbWUyLAotCQl4cHBhcmFtX3QgY29uc3QgKnhwcCwgaW50IGxldmVsLCBtbWJ1ZmZlcl90ICpyZXN1bHQpIHsKKwkJeHBwYXJhbV90IGNvbnN0ICp4cHAsIGludCBmbGFncywgbW1idWZmZXJfdCAqcmVzdWx0KSB7CiAJeGRjaGFuZ2VfdCAqeHNjcjEsICp4c2NyMjsKIAl4ZGZlbnZfdCB4ZTEsIHhlMjsKIAlpbnQgc3RhdHVzOwpAQCAtNDgyLDcgKzU3NSw3IEBACiAJCX0gZWxzZSB7CiAJCQlzdGF0dXMgPSB4ZGxfZG9fbWVyZ2UoJnhlMSwgeHNjcjEsIG5hbWUxLAogCQkJCQkgICAgICAmeGUyLCB4c2NyMiwgbmFtZTIsCi0JCQkJCSAgICAgIGxldmVsLCB4cHAsIHJlc3VsdCk7CisJCQkJCSAgICAgIGZsYWdzLCB4cHAsIHJlc3VsdCk7CiAJCX0KIAkJeGRsX2ZyZWVfc2NyaXB0KHhzY3IxKTsKIAkJeGRsX2ZyZWVfc2NyaXB0KHhzY3IyKTsKZGlmZiAtLWdpdCBhL3hkaWZmL3h1dGlscy5jIGIveGRpZmYveHV0aWxzLmMKaW5kZXggZDc5NzRkMS4uMDRhZDQ2OCAxMDA2NDQKLS0tIGEveGRpZmYveHV0aWxzLmMKKysrIGIveGRpZmYveHV0aWxzLmMKQEAgLTI0NSwxMiArMjQ1LDE0IEBACiAJCQl3aGlsZSAocHRyICsgMSA8IHRvcCAmJiBpc3NwYWNlKHB0clsxXSkKIAkJCQkJJiYgcHRyWzFdICE9ICdcbicpCiAJCQkJcHRyKys7Ci0JCQlpZiAoZmxhZ3MgJiBYREZfSUdOT1JFX1dISVRFU1BBQ0VfQ0hBTkdFCisJCQlpZiAoZmxhZ3MgJiBYREZfSUdOT1JFX1dISVRFU1BBQ0UpCisJCQkJOyAvKiBhbHJlYWR5IGhhbmRsZWQgKi8KKwkJCWVsc2UgaWYgKGZsYWdzICYgWERGX0lHTk9SRV9XSElURVNQQUNFX0NIQU5HRQogCQkJCQkmJiBwdHJbMV0gIT0gJ1xuJykgewogCQkJCWhhICs9IChoYSA8PCA1KTsKIAkJCQloYSBePSAodW5zaWduZWQgbG9uZykgJyAnOwogCQkJfQotCQkJaWYgKGZsYWdzICYgWERGX0lHTk9SRV9XSElURVNQQUNFX0FUX0VPTAorCQkJZWxzZSBpZiAoZmxhZ3MgJiBYREZfSUdOT1JFX1dISVRFU1BBQ0VfQVRfRU9MCiAJCQkJCSYmIHB0clsxXSAhPSAnXG4nKSB7CiAJCQkJd2hpbGUgKHB0cjIgIT0gcHRyICsgMSkgewogCQkJCQloYSArPSAoaGEgPDwgNSk7Cg==