[LyX/master] keyboard maps: replace primary/secondary with per-language selection
Udi Fogiel <[email protected]> Sun, 02 Aug 2026 11:22:19 +0000
| Newsgroups | gmane.editors.lyx.cvs |
|---|---|
| Message-ID | <[email protected]> |
Y29tbWl0IDA1NDM3NGNmNGMzYjhhOTg0ZTVmYjY0YWEwYTliNjFiZGQ5YmUzMTQKQXV0aG9yOiBV ZGkgRm9naWVsIDx1Zm9naWVsQGx5eC5vcmc+CkRhdGU6ICAgU3VuIEF1ZyAyIDE0OjIwOjU4IDIw MjYgKzAzMDAKCiAgICBrZXlib2FyZCBtYXBzOiByZXBsYWNlIHByaW1hcnkvc2Vjb25kYXJ5IHdp dGggcGVyLWxhbmd1YWdlIHNlbGVjdGlvbgogICAgCiAgICBUaGUgb2xkIGNvZGUgYXV0by1zd2l0 Y2hlZCBiZXR3ZWVuIGV4YWN0bHkgdHdvIG1hcHMgYmFzZWQgb24gdGhlCiAgICB0ZXh0IGRpcmVj dGlvbiB1bmNvbmRpdGlvbmFsbHkgb24gZXZlcnkga2V5c3Ryb2tlLAogICAgYW55IG1hbnVhbCBz d2l0Y2ggd2FzIHNpbGVudGx5IHJldmVydGVkIG9uIHRoZSB2ZXJ5IG5leHQgY2hhcmFjdGVyIHR5 cGVkLgogICAgCiAgICBrZXltYXAtc2VsZWN0ICI8bmFtZT4iIGlzIGEgbmV3IExGVU4gdG8gc3dp dGNoIHRvIGFueSBjb25maWd1cmVkIG1hcAogICAgYnkgbmFtZSwgb3IgYmFjayB0byB0aGUgY29u ZmlndXJlZCBkZWZhdWx0IHdpdGggbm8gYXJndW1lbnQuCiAgICAKICAgIEZpeGVzICM0MDUxLgot LS0KIGxpYi9SRUxFQVNFLU5PVEVTICAgICAgICAgICAgICAgICAgfCAgMjggKysrKysrKy0KIGxp Yi9iaW5kL2RlL21lbnVzLmJpbmQgICAgICAgICAgICAgfCAgIDMgLQogbGliL2JpbmQvbWVudXMu YmluZCAgICAgICAgICAgICAgICB8ICAgMyAtCiBsaWIvYmluZC9ydS9tZW51cy5iaW5kICAgICAg ICAgICAgIHwgICA2IC0tCiBsaWIvY29uZmlndXJlLnB5ICAgICAgICAgICAgICAgICAgIHwgICAy ICstCiBsaWIvZG9jL1VzZXJHdWlkZS5seXggICAgICAgICAgICAgIHwgIDYxICsrKysrKysrKysr KysrKy0KIGxpYi9zY3JpcHRzL3ByZWZzMnByZWZzX3ByZWZzLnB5ICAgfCAgMzMgKysrKysrKyst CiBzcmMvQnVmZmVyVmlldy5jcHAgICAgICAgICAgICAgICAgIHwgIDMyICsrKy0tLS0tLQogc3Jj L0Z1bmNDb2RlLmggICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL0ludGwuY3BwICAg ICAgICAgICAgICAgICAgICAgICB8IDEwOSArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiBz cmMvSW50bC5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYxICsrKysrKysrKy0tLS0tLS0K IHNyYy9MeVhBY3Rpb24uY3BwICAgICAgICAgICAgICAgICAgfCAgNDEgKysrKystLS0tLS0KIHNy Yy9MeVhSQy5jcHAgICAgICAgICAgICAgICAgICAgICAgfCAgNzAgKysrKysrKysrKysrLS0tLS0t CiBzcmMvTHlYUkMuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEzICsrLS0KIHNyYy9UcmFu cy5jcHAgICAgICAgICAgICAgICAgICAgICAgfCAgNDUgKysrKystLS0tLS0tCiBzcmMvVHJhbnMu aCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE5ICsrKy0tCiBzcmMvZnJvbnRlbmRzL3F0L0d1 aVByZWZzLmNwcCAgICAgIHwgMTM5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t LQogc3JjL2Zyb250ZW5kcy9xdC9HdWlQcmVmcy5oICAgICAgICB8ICAgNyArLQogc3JjL2Zyb250 ZW5kcy9xdC91aS9QcmVmSW5wdXRVaS51aSB8IDE0MSArKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tCiAxOSBmaWxlcyBjaGFuZ2VkLCA1NjkgaW5zZXJ0aW9ucygrKSwgMjQ4IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9SRUxFQVNFLU5PVEVTIGIvbGliL1JFTEVBU0Ut Tk9URVMKaW5kZXggNjcyYzAzZTUzMS4uZTRiMjU4M2U0NSAxMDA2NDQKLS0tIGEvbGliL1JFTEVB U0UtTk9URVMKKysrIGIvbGliL1JFTEVBU0UtTk9URVMKQEAgLTEwLDggKzEwLDIyIEBACiAgIGFy Z3VtZW50IG9mIHRoZSBidWZmZXItbG9hZC1ncmFwaGljcyBsZnVuLgogCiAKKyEhS2V5Ym9hcmQg bWFwcworCistIFRoZSBvbGQgcHJpbWFyeS9zZWNvbmRhcnkga2V5Ym9hcmQgbWFwIHNjaGVtZSBo YXMgYmVlbiByZXBsYWNlZCB3aXRoCisgIGV4cGxpY2l0IHBlci1sYW5ndWFnZSBrZXlib2FyZCBt YXBzLiBJbnN0ZWFkIG9mIHRvZ2dsaW5nIGJldHdlZW4gdHdvCisgIGZpeGVkIG1hcHMsIGEga2V5 Ym9hcmQgbWFwIGNhbiBub3cgYmUgc2VsZWN0ZWQgYnkgbmFtZSAoa2V5bWFwLXNlbGVjdAorICBs ZnVuKSBhbmQsIG9wdGlvbmFsbHksIGNob3NlbiBhdXRvbWF0aWNhbGx5IGFjY29yZGluZyB0byB0 aGUgbGFuZ3VhZ2UKKyAgYXQgdGhlIGN1cnNvciAoUHJlZmVyZW5jZXMgPiBMYW5ndWFnZSA+IEtl eWJvYXJkKS4KKworCiAhISFUaGUgZm9sbG93aW5nIHByZWYgdmFyaWFibGVzIHdlcmUgYWRkZWQg aW4gMi46CiAKKy0gXGtibWFwX2ZvbGxvd19sYW5ndWFnZTogc2VsZWN0IHRoZSBrZXlib2FyZCBt YXAgYXV0b21hdGljYWxseSBhY2NvcmRpbmcKKyAgdG8gdGhlIGxhbmd1YWdlIGF0IHRoZSBjdXJz b3IuCisKKy0gXGtibWFwX2xhbmc6IGFzc2lnbnMgYSBrZXlib2FyZCBtYXAgdG8gYSBnaXZlbiBs YW5ndWFnZSwgdXNlZCB3aGVuCisgIFxrYm1hcF9mb2xsb3dfbGFuZ3VhZ2UgaXMgc2V0LgogCiAK ICEhIVRoZSBmb2xsb3dpbmcgcHJlZiB2YXJpYWJsZXMgd2VyZSBjaGFuZ2VkIGluIDIuNjoKQEAg LTI0LDEyICszOCwyMSBAQAogCiAhISFUaGUgZm9sbG93aW5nIHByZWYgdmFyaWFibGVzIGFyZSBv YnNvbGV0ZWQgaW4gMi42OgogCistIFxrYm1hcF9zZWNvbmRhcnkgaGFzIGJlZW4gcmVwbGFjZWQg YnkgXGtibWFwX2ZvbGxvd19sYW5ndWFnZSBhbmQKKyAgXGtibWFwX2xhbmcgKHNlZSAiS2V5Ym9h cmQgbWFwcyIgYWJvdmUpLgorCiAhISFUaGUgZm9sbG93aW5nIG5ldyBMeVggZnVuY3Rpb25zIGhh dmUgYmVlbiBpbnRyb2R1Y2VkIGluIDIuNjoKIAogLSBidWZmZXItbG9hZC1ncmFwaGljczogdHJp Z2dlcnMgcHJldmlldyBjb252ZXJzaW9uIGZvciBldmVyeSBpbWFnZSBpbgogICB0aGUgY3VycmVu dCBidWZmZXIgYXQgb25jZSwgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciBlYWNoIGltYWdlIHRvIGJl CiAgIHNjcm9sbGVkIGludG8gdmlldy4KIAorLSBrZXltYXAtc2VsZWN0IDxOQU1FPjogdHVybnMg b24gYW5kIHNlbGVjdHMgYSBrZXlib2FyZCBtYXAgYnkgbmFtZQorICAodGhlIGJhc2UgbmFtZSBv ZiBhIC5rbWFwIGZpbGUpLiBJZiBOQU1FIGlzIG9taXR0ZWQsIGFueSBtYW51YWwKKyAgc2VsZWN0 aW9uIGlzIGRyb3BwZWQgYW5kIHRoZSBjb25maWd1cmVkIGRlZmF1bHQgKG9yLCBpZgorICBca2Jt YXBfZm9sbG93X2xhbmd1YWdlIGlzIHNldCwgdGhlIG1hcCBmb3IgdGhlIGxhbmd1YWdlIGF0IHRo ZQorICBjdXJzb3IpIGlzIGFwcGxpZWQgYWdhaW4uCisKICEhIVRoZSBmb2xsb3dpbmcgTHlYIGZ1 bmN0aW9ucyBoYXZlIGJlZW4gY2hhbmdlZCBpbiAyLjY6CiAKIC0gVGhlIGZ1bmN0aW9uIG5ld3Bh Z2UtaW5zZXJ0IGhhcyBiZWVuIHJlbmFtZWQgdG8gdGV4dGJyZWFrLWluc2VydApAQCAtMzcsOSAr NjAsMTIgQEAKIAogLSBUaGUgZnVuY3Rpb24gbGFuZ3VhZ2Ugbm93IGFjY2VwdHMgYW4gYWRkaXRp b25hbCAibG9jYWwiIGFyZ3VtZW50CiAgIHdoaWNoIGVuc3VyZXMgdGhlIGxhbmd1YWdlIHN3aXRj aCBpcyBhbiBpbmxpbmUgb25lIChlLmcuIFxmb3JlaWdubGFuZ3VhZ2UpLgotICAKKwogISEhVGhl IGZvbGxvd2luZyBMeVggZnVuY3Rpb25zIGhhdmUgYmVlbiByZW1vdmVkIGluIDIuNjoKIAorLSBr ZXltYXAtcHJpbWFyeSwga2V5bWFwLXNlY29uZGFyeSBhbmQga2V5bWFwLXRvZ2dsZSBoYXZlIGJl ZW4gcmVtb3ZlZAorICBpbiBmYXZvciBvZiBrZXltYXAtc2VsZWN0IChzZWUgYWJvdmUpLgorCiAh ISFUaGUgZm9sbG93aW5nIEx5WCBmdW5jdGlvbiBoYXMgYmVlbiBhZGRlZCBhbmQgdGhlbiByZW1v dmVkIGluIDIuNiBkZXZlbG9wbWVudCBjeWNsZToKIAogISEhVGhlIGZvbGxvd2luZyBsYXlvdXQt cmVsYXRlZCBjaGFuZ2VzIGhhcyBiZWVuIGRvbmUgaW4gMi42IGRldmVsb3BtZW50IGN5Y2xlOgpk aWZmIC0tZ2l0IGEvbGliL2JpbmQvZGUvbWVudXMuYmluZCBiL2xpYi9iaW5kL2RlL21lbnVzLmJp bmQKaW5kZXggYTE5NGI2NGYyNC4uZmZmNzEzM2U3ZSAxMDA2NDQKLS0tIGEvbGliL2JpbmQvZGUv bWVudXMuYmluZAorKysgYi9saWIvYmluZC9kZS9tZW51cy5iaW5kCkBAIC0xNjIsOCArMTYyLDUg QEAgRm9ybWF0IDUKICMKICMgTWVuw7wgVGFzdGF0dXIKICMKLVxiaW5kICJNLXQgMSIJCQkia2V5 bWFwLXByaW1hcnkiCi1cYmluZCAiTS10IDIiCQkJImtleW1hcC1zZWNvbmRhcnkiCiBcYmluZCAi TS10IG8iCQkJImtleW1hcC1vZmYiCi1cYmluZCAiTS10IHQiCQkJImtleW1hcC10b2dnbGUiCiBc YmluZCAiTS10IHgiCQkJImtleW1hcC1vZmYiCmRpZmYgLS1naXQgYS9saWIvYmluZC9tZW51cy5i aW5kIGIvbGliL2JpbmQvbWVudXMuYmluZAppbmRleCBjZWQzY2Q5ZGYwLi42OTdiNTZkNWZmIDEw MDY0NAotLS0gYS9saWIvYmluZC9tZW51cy5iaW5kCisrKyBiL2xpYi9iaW5kL21lbnVzLmJpbmQK QEAgLTE2NSw4ICsxNjUsNSBAQCBGb3JtYXQgNQogIyBLZXlib2FyZCBtZW51CiAjCiAKLVxiaW5k ICJNLWsgMSIJCQkia2V5bWFwLXByaW1hcnkiCi1cYmluZCAiTS1rIDIiCQkJImtleW1hcC1zZWNv bmRhcnkiCiBcYmluZCAiTS1rIG8iCQkJImtleW1hcC1vZmYiCi1cYmluZCAiTS1rIHQiCQkJImtl eW1hcC10b2dnbGUiCiBcYmluZCAiTS1rIHgiCQkJImtleW1hcC1vZmYiCmRpZmYgLS1naXQgYS9s aWIvYmluZC9ydS9tZW51cy5iaW5kIGIvbGliL2JpbmQvcnUvbWVudXMuYmluZAppbmRleCBjNTM1 YWJlOGI1Li41MGIxNTY4MTY4IDEwMDY0NAotLS0gYS9saWIvYmluZC9ydS9tZW51cy5iaW5kCisr KyBiL2xpYi9iaW5kL3J1L21lbnVzLmJpbmQKQEAgLTI1OCwxNCArMjU4LDggQEAgRm9ybWF0IDUK ICMgS2V5Ym9hcmQgbWVudQogIwogCi1cYmluZCAiTS1rIDEiCQkJImtleW1hcC1wcmltYXJ5Igot XGJpbmQgIk0tayAyIgkJCSJrZXltYXAtc2Vjb25kYXJ5IgogXGJpbmQgIk0tayBvIgkJCSJrZXlt YXAtb2ZmIgotXGJpbmQgIk0tayB0IgkJCSJrZXltYXAtdG9nZ2xlIgogXGJpbmQgIk0tayB4IgkJ CSJrZXltYXAtb2ZmIgogCi1cYmluZCAiTS3QuyAxIgkJCSJrZXltYXAtcHJpbWFyeSIKLVxiaW5k ICJNLdC7IDIiCQkJImtleW1hcC1zZWNvbmRhcnkiCiBcYmluZCAiTS3QuyDRiSIJCQkia2V5bWFw LW9mZiIKLVxiaW5kICJNLdC7INC1IgkJCSJrZXltYXAtdG9nZ2xlIgogXGJpbmQgIk0t0Lsg0Yci CQkJImtleW1hcC1vZmYiCmRpZmYgLS1naXQgYS9saWIvY29uZmlndXJlLnB5IGIvbGliL2NvbmZp Z3VyZS5weQppbmRleCBjMTY4ZDAxZWQ0Li41ZjUzZDEzNWM3IDEwMDY0NAotLS0gYS9saWIvY29u ZmlndXJlLnB5CisrKyBiL2xpYi9jb25maWd1cmUucHkKQEAgLTIxMTEsNyArMjExMSw3IEBAIGlm IF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgbHl4X2NoZWNrX2NvbmZpZyA9IFRydWUKICAg ICBseXhfa3BzZXdoaWNoID0gVHJ1ZQogICAgIG91dGZpbGUgPSAnbHl4cmMuZGVmYXVsdHMnCi0g ICAgbHl4cmNfZmlsZWZvcm1hdCA9IDQyCisgICAgbHl4cmNfZmlsZWZvcm1hdCA9IDQzCiAgICAg cmNfZW50cmllcyA9ICcnCiAgICAgbHl4X2tlZXBfdGVtcHMgPSBGYWxzZQogICAgIHZlcnNpb25f c3VmZml4ID0gJycKZGlmZiAtLWdpdCBhL2xpYi9kb2MvVXNlckd1aWRlLmx5eCBiL2xpYi9kb2Mv VXNlckd1aWRlLmx5eAppbmRleCA4NjIyMTBkZGNhLi5lY2ZkNGVjNWQ1IDEwMDY0NAotLS0gYS9s aWIvZG9jL1VzZXJHdWlkZS5seXgKKysrIGIvbGliL2RvYy9Vc2VyR3VpZGUubHl4CkBAIC0xODYs NiArMTg2LDcgQEAgbG9naWNhbG1rdXAKIFxkb2Nib29rX21hdGhtbF9wcmVmaXggMQogXGRvY2Jv b2tfbWF0aG1sX3ZlcnNpb24gMAogXGF1dGhvciAtNzEyNjk4MzIxICJKw7xyZ2VuIFNwaXR6bcO8 bGxlciIKK1xhdXRob3IgNjczMDg1NjQ4ICJ1Zm9naWVsIgogXGF1dGhvciAxMDY0MzEyNjA1ICJV ZGkgRm9naWVsIgogXGVuZF9oZWFkZXIKIApAQCAtNDM3OTMsNyArNDM3OTQsMTQgQEAgUHJlZmVy ZW5jZXNcU3BlY2lhbENoYXIgbWVudXNlcGFyYXRvcgogRWRpdGluZ1xTcGVjaWFsQ2hhciBtZW51 c2VwYXJhdG9yCiBLZXlib2FyZC9Nb3VzZQogXGZhbWlseSBkZWZhdWx0Ci0gZGlhbG9nIGFsbG93 cyB5b3UgdG8gY2hvb3NlIHVwIHRvIHR3byBrZXlib2FyZCBtYXBwaW5ncywKKyBkaWFsb2cgCitc Y2hhbmdlX2RlbGV0ZWQgNjczMDg1NjQ4IDE3ODUxMzc4NTYKK2FsbG93cyB5b3UgdG8gY2hvb3Nl IHVwIHRvIHR3byBrZXlib2FyZCBtYXBwaW5ncworXGNoYW5nZV9pbnNlcnRlZCA2NzMwODU2NDgg MTc4NTE0MTkwMworbGV0cyB5b3Ugc2V0IGEgZGVmYXVsdCBrZXlib2FyZCBtYXAsCisgb3IgaGF2 ZSBMeVggc2VsZWN0IG9uZSBhdXRvbWF0aWNhbGx5IGFjY29yZGluZyB0byB0aGUgbGFuZ3VhZ2Ug b2YgdGhlIHRleHQgdW5kZXIgdGhlIGN1cnNvcgorXGNoYW5nZV91bmNoYW5nZWQKKywKICBzZWUg c2VjdGlvbgogXGJlZ2luX2luc2V0IHNwYWNlIH4KIFxlbmRfaW5zZXQKQEAgLTQzODA3LDcgKzQz ODE1LDE0IEBAIG5vbGluayAiZmFsc2UiCiBcZW5kX2luc2V0CiAKIC4KKworXGNoYW5nZV9kZWxl dGVkIDY3MzA4NTY0OCAxNzg1MTM3ODkxCiAgWW91IGNhbiBjaG9vc2UgcHJpbWFyeSBhbmQgc2Vj b25kYXJ5IGtleWJvYXJkIGxhbmd1YWdlcyBhbmQgdGhlbiBzZWxlY3Qgd2hpY2ggb25lIHlvdSB3 YW50IHRvIHVzZS4KKworXGNoYW5nZV9pbnNlcnRlZCA2NzMwODU2NDggMTc4NTE0MTgyOQorIAor XGNoYW5nZV91bmNoYW5nZWQKKwogXGVuZF9sYXlvdXQKIAogXGJlZ2luX2xheW91dCBTdGFuZGFy ZApAQCAtNTU4NzYsMTQgKzU1ODkxLDMwIEBAIGtleWJvYXJkCiAKIG1hcAogXGZhbWlseSBkZWZh dWx0Ci0gYW5kIHNlbGVjdCB0aGUga2V5Ym9hcmQgbWFwIGZpbGUgbmFtZWQgCisgYW5kIAorXGNo YW5nZV9kZWxldGVkIDY3MzA4NTY0OCAxNzg1MTQxMDM3CitzZWxlY3QgdGhlIGtleWJvYXJkIG1h cCBmaWxlIG5hbWVkCitcY2hhbmdlX2luc2VydGVkIDY3MzA4NTY0OCAxNzg1MTQxMDc5CitzZXQg dGhlIAorXGZhbWlseSBzYW5zCitEZWZhdWx0CitcZmFtaWx5IGRlZmF1bHQKKyBmaWVsZCB0byB0 aGUga2V5Ym9hcmQgbWFwIG5hbWVkCitcY2hhbmdlX3VuY2hhbmdlZAorIAogXHNoYXBlIGl0YWxp Ywotcm9tYW5pYW4ua21hcAorcm9tYW5pYW4KK1xjaGFuZ2VfZGVsZXRlZCA2NzMwODU2NDggMTc4 NTE0MTA4OQorLmttYXAKK1xjaGFuZ2VfdW5jaGFuZ2VkCisKIFxzaGFwZSBkZWZhdWx0CiAuCiBc ZW5kX2xheW91dAogCiBcYmVnaW5fbGF5b3V0IFN0YW5kYXJkCisKK1xjaGFuZ2VfZGVsZXRlZCA2 NzMwODU2NDggMTc4NTE0MTA5OAogWW91IGNhbiBzcGVjaWZ5IGEgCiBcZmFtaWx5IHNhbnMKIEZp cnN0CkBAIC01NTkxNyw2ICs1NTk0OCwzMCBAQCBhcmcgICAia2V5bWFwLXRvZ2dsZSIKIFxlbmRf aW5zZXQKIAogLgorXGNoYW5nZV9pbnNlcnRlZCA2NzMwODU2NDggMTc4NTE0MTY3MQorSWYgeW91 IHJlZ3VsYXJseSB3b3JrIHdpdGggbW9yZSB0aGFuIG9uZSBsYW5ndWFnZSwKKyB5b3UgY2FuIGlu c3RlYWQgbGV0IFxTcGVjaWFsQ2hhciBMeVgKKyBzZWxlY3QgdGhlIGtleWJvYXJkIG1hcCBhdXRv bWF0aWNhbGx5IGFjY29yZGluZyB0byB0aGUgbGFuZ3VhZ2Ugb2YgdGhlIHRleHQgdW5kZXIgdGhl IGN1cnNvcjoKKyBlbmFibGUgU2VsZWN0IGtleWJvYXJkIG1hcCBhdXRvbWF0aWNhbGx5IGJ5IGxh bmd1YWdlIGFuZCBhc3NpZ24gYSBrZXlib2FyZCBtYXAgdG8gZWFjaCBsYW5ndWFnZSB5b3UgdXNl LAorIGluIGFkZGl0aW9uIHRvIHRoZSAKK1xmYW1pbHkgc2FucworRGVmYXVsdAorXGZhbWlseSBk ZWZhdWx0CisgbWFwIHVzZWQgZm9yIGxhbmd1YWdlcyB0aGF0IGRvbid0IGhhdmUgdGhlaXIgb3du IGFzc2lnbm1lbnQuCisgWW91IGNhbiBhbHNvIHN3aXRjaCB0byBhbnkgY29uZmlndXJlZCBrZXli b2FyZCBtYXAgbWFudWFsbHkgYXQgYW55IHRpbWUsCisgb3IgdHVybiBrZXkgbWFwcGluZyBvZmYs CisgYnkgYmluZGluZyBhIGtleSBvZiB5b3VyIGNob2ljZSB0byB0aGUgCitcZmFtaWx5IHNhbnMK K2tleW1hcC1zZWxlY3QKK1xmYW1pbHkgZGVmYXVsdAorIGFuZCAKK1xmYW1pbHkgc2Fucwora2V5 bWFwLW9mZgorXGZhbWlseSBkZWZhdWx0CisgXFNwZWNpYWxDaGFyIEx5WAorIGZ1bmN0aW9ucyBy ZXNwZWN0aXZlbHkuCitcY2hhbmdlX3VuY2hhbmdlZAorCiBcZW5kX2xheW91dAogCiBcYmVnaW5f bGF5b3V0IFN0YW5kYXJkCmRpZmYgLS1naXQgYS9saWIvc2NyaXB0cy9wcmVmczJwcmVmc19wcmVm cy5weSBiL2xpYi9zY3JpcHRzL3ByZWZzMnByZWZzX3ByZWZzLnB5CmluZGV4IDZmMGJhODAwMmQu LmM3OGZkMzRiOTAgMTAwNjQ0Ci0tLSBhL2xpYi9zY3JpcHRzL3ByZWZzMnByZWZzX3ByZWZzLnB5 CisrKyBiL2xpYi9zY3JpcHRzL3ByZWZzMnByZWZzX3ByZWZzLnB5CkBAIC0xODYsNiArMTg2LDE1 IEBACiAjICAgZGVmYXVsdCBpcyB0cnVlLCBzbyB0aGlzIGtlZXBzIGJlaGF2aW9yIHRoZSBzYW1l IGZvciBleGlzdGluZwogIyAgIHVzZXJzKQogCisjIEluY3JlbWVudGVkIHRvIGZvcm1hdCA0Mywg YnkgdWZvZ2llbAorIyAgIFJlcGxhY2UgXGtibWFwX3NlY29uZGFyeSAodXNlZCBmb3IgdGhlIG9s ZCBhdXRvbWF0aWMgc3dpdGNoIGJldHdlZW4KKyMgICBhIHByaW1hcnkgYW5kIGEgc2Vjb25kYXJ5 IGtleWJvYXJkIG1hcCBkZXBlbmRpbmcgb24gdGhlIGRpcmVjdGlvbgorIyAgIG9mIHRoZSB0ZXh0 IGF0IHRoZSBjdXJzb3IpIHdpdGggXGtibWFwX2ZvbGxvd19sYW5ndWFnZSBhbmQKKyMgICBca2Jt YXBfbGFuZyAoZXhwbGljaXQgcGVyLWxhbmd1YWdlIGtleWJvYXJkLW1hcCBhc3NpZ25tZW50KS4K KyMgICBFeGlzdGluZyBca2JtYXBfc2Vjb25kYXJ5IHNldHRpbmdzIGFyZSBtaWdyYXRlZCB0byBh IFxrYm1hcF9sYW5nCisjICAgYXNzaWdubWVudCBmb3IgZXZlcnkgcmlnaHQtdG8tbGVmdCBsYW5n dWFnZSBpbiBsaWIvbGFuZ3VhZ2VzLCB3aXRoCisjICAgXGtibWFwX2ZvbGxvd19sYW5ndWFnZSB0 dXJuZWQgb24sIHRvIGFwcHJveGltYXRlIHByaW9yIGJlaGF2aW9yLgorCiAjIE5PVEU6IFRoZSBm b3JtYXQgc2hvdWxkIGFsc28gYmUgdXBkYXRlZCBpbiBMWVhSQy5jcHAgYW5kCiAjIGluIGNvbmZp Z3VyZS5weSAoc2VhcmNoIGZvciBseXhyY19maWxlZm9ybWF0KS4KIApAQCAtNTU4LDYgKzU2Nywy NyBAQCBkZWYgYWRkX3Zpc3VhbF9jdXJzb3JfZGVmYXVsdChsaW5lcyk6CiAJbGluZXMuYXBwZW5k KCJcXHZpc3VhbF9jdXJzb3IgZmFsc2UiKQogCiAKKyMgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXMg ZGVmaW5lZCBpbiBsaWIvbGFuZ3VhZ2VzIChSVEwgdHJ1ZSkKK3J0bF9sYW5ndWFnZXMgPSAoImFy YWJpY19hcmFidGV4IiwgImFyYWJpY19hcmFiaSIsICJmYXJzaSIsICJoZWJyZXciLAorCQkgICJu a28iLCAic3lyaWFjIiwgInVyZHUiLCAidXlnaHVyIikKKworZGVmIG1pZ3JhdGVfa2JtYXBfc2Vj b25kYXJ5KGxpbmVzKToKKwlzZWNvbmRhcnkgPSBOb25lCisJbmV3bGluZXMgPSBbXQorCWZvciBs IGluIGxpbmVzOgorCQlpZiBsLnN0cmlwKCkubG93ZXIoKS5zdGFydHN3aXRoKCJcXGtibWFwX3Nl Y29uZGFyeSIpOgorCQkJZW50cmllcyA9IGdldF9mb3JtYXQobCkKKwkJCWlmIGxlbihlbnRyaWVz KSA+IDEgYW5kIGVudHJpZXNbMV06CisJCQkJc2Vjb25kYXJ5ID0gZW50cmllc1sxXQorCQkJY29u dGludWUKKwkJbmV3bGluZXMuYXBwZW5kKGwpCisJaWYgc2Vjb25kYXJ5OgorCQluZXdsaW5lcy5h cHBlbmQoIlxca2JtYXBfZm9sbG93X2xhbmd1YWdlIHRydWUiKQorCQlmb3IgbGFuZyBpbiBydGxf bGFuZ3VhZ2VzOgorCQkJbmV3bGluZXMuYXBwZW5kKCdcXGtibWFwX2xhbmcgIiVzIiAiJXMiJyAl IChsYW5nLCBzZWNvbmRhcnkpKQorCWxpbmVzWzpdID0gbmV3bGluZXMKKworCiAjIEVuZCBjb252 ZXJzaW9ucyBmb3IgTHlYIDIuNSB0byAyLjYKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwogCkBAIC02MTMsNSArNjQzLDYgQEAgY29udmVyc2lvbnMgPSBbCiAJWyAzOSwgW11d LAogICAgIFsgNDAsIFtib29rbWFya3NfdmlzaWJpbGl0eV1dLAogICAgIFsgNDEsIFtyZW5hbWVf bGFuZ3BhY2tdXSwKLQlbIDQyLCBbYWRkX3Zpc3VhbF9jdXJzb3JfZGVmYXVsdF1dCisJWyA0Miwg W2FkZF92aXN1YWxfY3Vyc29yX2RlZmF1bHRdXSwKKwlbIDQzLCBbbWlncmF0ZV9rYm1hcF9zZWNv bmRhcnldXQogXQpkaWZmIC0tZ2l0IGEvc3JjL0J1ZmZlclZpZXcuY3BwIGIvc3JjL0J1ZmZlclZp ZXcuY3BwCmluZGV4IDBjZGY1ZDI0YmIuLjMwNGE5MzljNWIgMTAwNjQ0Ci0tLSBhL3NyYy9CdWZm ZXJWaWV3LmNwcAorKysgYi9zcmMvQnVmZmVyVmlldy5jcHAKQEAgLTEwMDYsMTQgKzEwMDYsNyBA QCBib29sIEJ1ZmZlclZpZXc6Om1vdmVUb1Bvc2l0aW9uKHBpdF90eXBlIGJvdHRvbV9waXQsIHBv c190eXBlIGJvdHRvbV9wb3MsCiAKIHZvaWQgQnVmZmVyVmlldzo6dHJhbnNsYXRlQW5kSW5zZXJ0 KGNoYXJfdHlwZSBjLCBUZXh0ICogdCwgQ3Vyc29yICYgY3VyKQogewotCWlmIChkLT5jdXJzb3Jf LnJlYWxfY3VycmVudF9mb250LmlzUmlnaHRUb0xlZnQoKSkgewotCQlpZiAoZC0+aW50bF8ua2V5 bWFwID09IEludGw6OlBSSU1BUlkpCi0JCQlkLT5pbnRsXy5rZXlNYXBTZWMoKTsKLQl9IGVsc2Ug ewotCQlpZiAoZC0+aW50bF8ua2V5bWFwID09IEludGw6OlNFQ09OREFSWSkKLQkJCWQtPmludGxf LmtleU1hcFByaW0oKTsKLQl9Ci0KKwlkLT5pbnRsXy5zeW5jQWN0aXZlTWFwKGQtPmN1cnNvcl8u cmVhbF9jdXJyZW50X2ZvbnQubGFuZ3VhZ2UoKS0+bGFuZygpKTsKIAlkLT5pbnRsXy5nZXRUcmFu c01hbmFnZXIoKS50cmFuc2xhdGVBbmRJbnNlcnQoYywgdCwgY3VyKTsKIH0KIApAQCAtMTMwOCw5 ICsxMzAxLDcgQEAgYm9vbCBCdWZmZXJWaWV3OjpnZXRTdGF0dXMoRnVuY1JlcXVlc3QgY29uc3Qg JiBjbWQsIEZ1bmNTdGF0dXMgJiBmbGFnKQogCWNhc2UgTEZVTl9CSUJURVhfREFUQUJBU0VfTElT VDoKIAljYXNlIExGVU5fU1RBVElTVElDUzoKIAljYXNlIExGVU5fS0VZTUFQX09GRjoKLQljYXNl IExGVU5fS0VZTUFQX1BSSU1BUlk6Ci0JY2FzZSBMRlVOX0tFWU1BUF9TRUNPTkRBUlk6Ci0JY2Fz ZSBMRlVOX0tFWU1BUF9UT0dHTEU6CisJY2FzZSBMRlVOX0tFWU1BUF9TRUxFQ1Q6CiAJY2FzZSBM RlVOX0lOU0VUX1NFTEVDVF9BTEw6CiAJY2FzZSBMRlVOX1NFUlZFUl9HRVRfWFk6CiAJCWZsYWcu c2V0RW5hYmxlZCh0cnVlKTsKQEAgLTI1MzksMjAgKzI1MzAsMTcgQEAgdm9pZCBCdWZmZXJWaWV3 OjpkaXNwYXRjaChGdW5jUmVxdWVzdCBjb25zdCAmIGNtZCwgRGlzcGF0Y2hSZXN1bHQgJiBkcikK IAl9CiAKIAljYXNlIExGVU5fS0VZTUFQX09GRjoKLQkJZ2V0SW50bCgpLmtleU1hcE9uKGZhbHNl KTsKLQkJYnJlYWs7Ci0KLQljYXNlIExGVU5fS0VZTUFQX1BSSU1BUlk6Ci0JCWdldEludGwoKS5r ZXlNYXBQcmltKCk7CisJCWdldEludGwoKS5kZXNlbGVjdE1hcCgpOwogCQlicmVhazsKIAotCWNh c2UgTEZVTl9LRVlNQVBfU0VDT05EQVJZOgotCQlnZXRJbnRsKCkua2V5TWFwU2VjKCk7Ci0JCWJy ZWFrOwotCi0JY2FzZSBMRlVOX0tFWU1BUF9UT0dHTEU6Ci0JCWdldEludGwoKS50b2dnbGVLZXlN YXAoKTsKKwljYXNlIExGVU5fS0VZTUFQX1NFTEVDVDogeworCQlzdHJpbmcgY29uc3QgbmFtZSA9 IGNtZC5nZXRBcmcoMCk7CisJCWlmIChuYW1lLmVtcHR5KCkpCisJCQlnZXRJbnRsKCkuc2VsZWN0 RGVmYXVsdChkLT5jdXJzb3JfLnJlYWxfY3VycmVudF9mb250Lmxhbmd1YWdlKCktPmxhbmcoKSk7 CisJCWVsc2UgaWYgKCFnZXRJbnRsKCkuc2VsZWN0TWFwKG5hbWUpKQorCQkJbWVzc2FnZShiZm9y bWF0KF8oIktleWJvYXJkIG1hcCBub3QgZm91bmQ6ICUxJHMiKSwgZnJvbV91dGY4KG5hbWUpKSk7 CiAJCWJyZWFrOworCX0KIAogCWNhc2UgTEZVTl9ESUFMT0dfU0hPV19ORVdfSU5TRVQ6IHsKIAkJ c3RyaW5nIGNvbnN0IG5hbWUgPSBjbWQuZ2V0QXJnKDApOwpkaWZmIC0tZ2l0IGEvc3JjL0Z1bmND b2RlLmggYi9zcmMvRnVuY0NvZGUuaAppbmRleCA1YzMyNTlkZDY4Li40Zjc4NTk2YjljIDEwMDY0 NAotLS0gYS9zcmMvRnVuY0NvZGUuaAorKysgYi9zcmMvRnVuY0NvZGUuaApAQCAtMTQ3LDEwICsx NDcsOCBAQCBlbnVtIEZ1bmNDb2RlCiAJTEZVTl9OT1RFX0lOU0VSVCwKIAlMRlVOX1VJX1RPR0dM RSwKIAlMRlVOX0tFWU1BUF9PRkYsCi0JTEZVTl9LRVlNQVBfUFJJTUFSWSwKLQlMRlVOX0tFWU1B UF9TRUNPTkRBUlksCisJTEZVTl9LRVlNQVBfU0VMRUNULAogCS8vIDEwMAotCUxGVU5fS0VZTUFQ X1RPR0dMRSwKIAlMRlVOX01BVEhfSU5TRVJULAogCUxGVU5fTUFUSF9NQVRSSVgsCiAJTEZVTl9N QVRIX0xJTUlUUywKZGlmZiAtLWdpdCBhL3NyYy9JbnRsLmNwcCBiL3NyYy9JbnRsLmNwcAppbmRl eCBmZGFlMGIxYWJhLi44NWYxM2Y4NzljIDEwMDY0NAotLS0gYS9zcmMvSW50bC5jcHAKKysrIGIv c3JjL0ludGwuY3BwCkBAIC0yMiw3NiArMjIsOTkgQEAgbmFtZXNwYWNlIGx5eCB7CiAKIAogSW50 bDo6SW50bCgpCi0JOiBrZXltYXAoSW50bDo6UFJJTUFSWSksIGtleW1hcG9uKGx5eHJjLnVzZV9r Ym1hcCksCi0JcHJpbV9sYW5nKGx5eHJjLnByaW1hcnlfa2JtYXApLCBzZWNfbGFuZyhseXhyYy5z ZWNvbmRhcnlfa2JtYXApCisJOiB1c2Vfa2JtYXBfKGx5eHJjLnVzZV9rYm1hcCksCisJICBkZWZh dWx0X2xhbmdfKGx5eHJjLmRlZmF1bHRfa2JtYXApLAorCSAgZm9sbG93X2xhbmd1YWdlXyhseXhy Yy5rZXltYXBfZm9sbG93X2xhbmd1YWdlKSwKKwkgIGxhbmdfa2V5bWFwc18obHl4cmMua2V5bWFw X2J5X2xhbmd1YWdlKQogewogfQogCiAKLXZvaWQgSW50bDo6a2V5TWFwT24oYm9vbCBvbikKK2Jv b2wgSW50bDo6c2VsZWN0TWFwKHN0ZDo6c3RyaW5nIGNvbnN0ICYgbmFtZSkKIHsKLQlrZXltYXBv biA9IG9uOwotCi0JaWYgKG9uKSB7Ci0JCWlmIChrZXltYXAgPT0gUFJJTUFSWSkKLQkJCWtleU1h cFByaW0oKTsKLQkJZWxzZQotCQkJa2V5TWFwU2VjKCk7Ci0JfSBlbHNlIHsKLQkJdHJhbnMuZGlz YWJsZUtleW1hcCgpOworCWlmIChuYW1lLmVtcHR5KCkpIHsKKwkJZGVzZWxlY3RNYXAoKTsKKwkJ cmV0dXJuIHRydWU7CiAJfQorCisJaWYgKHRyYW5zLnNldEFjdGl2ZShuYW1lKSAhPSAwKQorCQly ZXR1cm4gZmFsc2U7CisKKwlhY3RpdmVfbWFwXyA9IG5hbWU7CisJcmV0dXJuIHRydWU7CiB9CiAK IAotdm9pZCBJbnRsOjp0b2dnbGVLZXlNYXAoKQordm9pZCBJbnRsOjpkZXNlbGVjdE1hcCgpCiB7 Ci0JaWYgKGtleW1hcG9uICYmIChrZXltYXAgPT0gUFJJTUFSWSkpCi0JCWtleU1hcFNlYygpOwot CWVsc2UgaWYgKGtleW1hcG9uKQotCQlrZXlNYXBPbihmYWxzZSk7Ci0JZWxzZQotCQlrZXlNYXBQ cmltKCk7CisJdHJhbnMuZGlzYWJsZUtleW1hcCgpOworCWFjdGl2ZV9tYXBfLmVyYXNlKCk7CiB9 CiAKIAotdm9pZCBJbnRsOjprZXlNYXBQcmltKCkKK3N0ZDo6c3RyaW5nIEludGw6Om1hcEZvckxh bmd1YWdlKHN0ZDo6c3RyaW5nIGNvbnN0ICYgbGFuZ2NvZGUpIGNvbnN0CiB7Ci0JaWYgKCF0cmFu cy5zZXRQcmltYXJ5KHByaW1fbGFuZykpCi0JCXRyYW5zLmVuYWJsZVByaW1hcnkoKTsKLQotCWtl eW1hcG9uID0gdHJ1ZTsKLQlrZXltYXAgPSBQUklNQVJZOworCXN0ZDo6bWFwPHN0ZDo6c3RyaW5n LCBzdGQ6OnN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0KKwkJbGFuZ19rZXltYXBzXy5maW5k KGxhbmdjb2RlKTsKKwlyZXR1cm4gaXQgPT0gbGFuZ19rZXltYXBzXy5lbmQoKSA/IGRlZmF1bHRf bGFuZ18gOiBpdC0+c2Vjb25kOwogfQogCiAKLXZvaWQgSW50bDo6a2V5TWFwU2VjKCkKK3ZvaWQg SW50bDo6c3luY0FjdGl2ZU1hcChzdGQ6OnN0cmluZyBjb25zdCAmIGxhbmdjb2RlKQogewotCWlm ICghdHJhbnMuc2V0U2Vjb25kYXJ5KHNlY19sYW5nKSkKLQkJdHJhbnMuZW5hYmxlU2Vjb25kYXJ5 KCk7CisJaWYgKCF1c2Vfa2JtYXBfKSB7CisJCWRlc2VsZWN0TWFwKCk7CisJCWxhc3Rfc3luY2Vk Xy5lcmFzZSgpOworCQlsYXN0X2xhbmdjb2RlXy5lcmFzZSgpOworCQlyZXR1cm47CisJfQogCi0J a2V5bWFwb24gPSB0cnVlOwotCWtleW1hcCA9IFNFQ09OREFSWTsKKwkvLyBhIGxhbmd1YWdlIGNo YW5nZW11c3QgZm9jcmUgYSByZXN5bmMgZXZlbiBpZiBpdCByZXNvbHZlcyB0byB0aGUKKwkvLyBz YW1lIG1hcCBuYW1lIGFzIGJlZm9yZSAoZS5nLiB0d28gbGFuZ3VhZ2VzIHNoYXJpbmcgdGhlIGRl ZmF1bHQpCisJYm9vbCBjb25zdCBsYW5nX2NoYW5nZWQgPSBmb2xsb3dfbGFuZ3VhZ2VfICYmIGxh bmdjb2RlICE9IGxhc3RfbGFuZ2NvZGVfOworCWxhc3RfbGFuZ2NvZGVfID0gbGFuZ2NvZGU7CisK KwlzdGQ6OnN0cmluZyBjb25zdCB3YW50ZWQgPQorCQlmb2xsb3dfbGFuZ3VhZ2VfID8gbWFwRm9y TGFuZ3VhZ2UobGFuZ2NvZGUpIDogZGVmYXVsdF9sYW5nXzsKKwlpZiAoIWxhbmdfY2hhbmdlZCAm JiB3YW50ZWQgPT0gbGFzdF9zeW5jZWRfKQorCQlyZXR1cm47CisKKwlsYXN0X3N5bmNlZF8gPSB3 YW50ZWQ7CisJaWYgKHdhbnRlZC5lbXB0eSgpKQorCQlkZXNlbGVjdE1hcCgpOworCWVsc2UKKwkJ c2VsZWN0TWFwKHdhbnRlZCk7CiB9CiAKIAotdm9pZCBJbnRsOjppbml0S2V5TWFwcGVyKGJvb2wg b24pCit2b2lkIEludGw6OnNlbGVjdERlZmF1bHQoc3RkOjpzdHJpbmcgY29uc3QgJiBsYW5nY29k ZSkKIHsKLQlMWVhFUlIoRGVidWc6OklOSVQsICJJbml0aWFsaXppbmcga2V5IG1hcHBpbmdzLi4u Iik7Ci0KLQlpZiAodHJhbnMuc2V0UHJpbWFyeShwcmltX2xhbmcpID09IC0xKQotCQlwcmltX2xh bmcuZXJhc2UoKTsKLQlpZiAodHJhbnMuc2V0U2Vjb25kYXJ5KHNlY19sYW5nKSA9PSAtMSkKLQkJ c2VjX2xhbmcuZXJhc2UoKTsKKwlpZiAoIXVzZV9rYm1hcF8pIHsKKwkJZGVzZWxlY3RNYXAoKTsK KwkJbGFzdF9zeW5jZWRfLmVyYXNlKCk7CisJCWxhc3RfbGFuZ2NvZGVfLmVyYXNlKCk7CisJCXJl dHVybjsKKwl9CiAKLQlpZiAocHJpbV9sYW5nLmVtcHR5KCkgJiYgc2VjX2xhbmcuZW1wdHkoKSkK LQkJa2V5bWFwb24gPSBmYWxzZTsKKwlzdGQ6OnN0cmluZyBjb25zdCB3YW50ZWQgPQorCQlmb2xs b3dfbGFuZ3VhZ2VfID8gbWFwRm9yTGFuZ3VhZ2UobGFuZ2NvZGUpIDogZGVmYXVsdF9sYW5nXzsK KwlsYXN0X3N5bmNlZF8gPSB3YW50ZWQ7CisJbGFzdF9sYW5nY29kZV8gPSBsYW5nY29kZTsKKwlp ZiAod2FudGVkLmVtcHR5KCkpCisJCWRlc2VsZWN0TWFwKCk7CiAJZWxzZQotCQlrZXltYXBvbiA9 IG9uOworCQlzZWxlY3RNYXAod2FudGVkKTsKK30KIAotCWtleU1hcE9uKGtleW1hcG9uKTsKIAot CWlmIChrZXltYXBvbikKLQkJa2V5TWFwUHJpbSgpOwordm9pZCBJbnRsOjppbml0S2V5TWFwcGVy KGJvb2wgb24pCit7CisJTFlYRVJSKERlYnVnOjpJTklULCAiSW5pdGlhbGl6aW5nIGtleSBtYXBw aW5ncy4uLiIpOworCisJaWYgKCFvbiB8fCBkZWZhdWx0X2xhbmdfLmVtcHR5KCkgfHwgIXNlbGVj dE1hcChkZWZhdWx0X2xhbmdfKSkKKwkJZGVzZWxlY3RNYXAoKTsKKwlsYXN0X3N5bmNlZF8gPSBh Y3RpdmVfbWFwXzsKKwlsYXN0X2xhbmdjb2RlXy5lcmFzZSgpOwogfQogCiAKZGlmZiAtLWdpdCBh L3NyYy9JbnRsLmggYi9zcmMvSW50bC5oCmluZGV4IDIyOGVhMGQ0OGYuLjJkNTQ4N2ExMjAgMTAw NjQ0Ci0tLSBhL3NyYy9JbnRsLmgKKysrIGIvc3JjL0ludGwuaApAQCAtMTcsNiArMTcsOSBAQAog CiAjaW5jbHVkZSAiVHJhbnMuaCIKIAorI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxzdHJpbmc+ CisKIAogbmFtZXNwYWNlIGx5eCB7CiAKQEAgLTI2LDQyICsyOSw1MiBAQCBuYW1lc3BhY2UgbHl4 IHsKICAqLwogY2xhc3MgSW50bCB7CiBwdWJsaWM6Ci0JLy8vIHdoaWNoIGtleW1hcCBpcyBjdXJy ZW50bHkgdXNlZCA/Ci0JZW51bSBLZXltYXAgewotCQlQUklNQVJZLAotCQlTRUNPTkRBUlkKLQl9 OwotCiAJSW50bCgpOwogCi0JLy8vIHtlbi9kaXN9YWJsZSB0aGUga2V5bWFwCi0Jdm9pZCBrZXlN YXBPbihib29sIG9uKTsKLQotCS8vLyBzZXQgdGhlIHByaW1hcnkgbGFuZ3VhZ2Uga2V5bWFwCi0J dm9pZCBrZXlNYXBQcmltKCk7CisJLy8vIHNlbGVjdCBhIGtleW1hcCBieSBuYW1lIChiYXNlIG5h bWUgb2YgYSAua21hcCBmaWxlKTsgZmFsc2UgaWYgbm90IGZvdW5kCisJYm9vbCBzZWxlY3RNYXAo c3RkOjpzdHJpbmcgY29uc3QgJiBuYW1lKTsKIAotCS8vLyBzZXQgdGhlIHNlY29uZGFyeSBsYW5n dWFnZSBrZXltYXAKLQl2b2lkIGtleU1hcFNlYygpOworCS8vLyBUdXJuIG9mZiBrZXkgbWFwcGlu Zy4KKwl2b2lkIGRlc2VsZWN0TWFwKCk7CiAKLQkvLy8gdHVybiBvbi9vZmYga2V5IG1hcHBpbmdz LCBzdGF0dXMgaW4ga2V5bWFwb24KLQl2b2lkIHRvZ2dsZUtleU1hcCgpOworCS8vLyBmb3JjZS1h cHBseSBsaWtlIHN5bmNBY3RpdmVNYXAoKTsgdXNlZCBieSBrZXltYXAtc2VsZWN0IHdpdGggbm8g YXJndW1lbnQKKwl2b2lkIHNlbGVjdERlZmF1bHQoc3RkOjpzdHJpbmcgY29uc3QgJiBsYW5nY29k ZSk7CiAKIAkvLy8gaW5pdGlhbGl6ZSBrZXkgbWFwcGVyCiAJdm9pZCBpbml0S2V5TWFwcGVyKGJv b2wgb24pOwogCisJLy8vIGlzIGtleWJvYXJkIG1hcHBpbmcgZW5hYmxlZCBhdCBhbGwgKHRoZSAi VXNlIGtleWJvYXJkIG1hcCIgcHJlZmVyZW5jZSk/CisJYm9vbCBlbmFibGVkKCkgY29uc3QgeyBy ZXR1cm4gdXNlX2tibWFwXzsgfQorCisJLy8vIGNob29zZSB0aGUgYWN0aXZlIG1hcCBhdXRvbWF0 aWNhbGx5IGZyb20gdGhlIGxhbmd1YWdlIGF0IHRoZSBjdXJzb3I/CisJYm9vbCBmb2xsb3dMYW5n dWFnZSgpIGNvbnN0IHsgcmV0dXJuIHVzZV9rYm1hcF8gJiYgZm9sbG93X2xhbmd1YWdlXzsgfQor CisJLy8vIGNvbmZpZ3VyZWQga2V5bWFwIGZvciB0aGUgbGFuZ3VhZ2UsIG9yIHRoZSBkZWZhdWx0 OyBlbXB0eSBpZiBuZWl0aGVyIGlzIHNldAorCXN0ZDo6c3RyaW5nIG1hcEZvckxhbmd1YWdlKHN0 ZDo6c3RyaW5nIGNvbnN0ICYgbGFuZ2NvZGUpIGNvbnN0OworCisJLy8vIHJlYXBwbHkgdGhlIHRh cmdldCBtYXAgb25seSBpZiBpdCBjaGFuZ2VkLCBzbyBtYW51YWwgb3ZlcnJpZGVzIHN0aWNrCisJ dm9pZCBzeW5jQWN0aXZlTWFwKHN0ZDo6c3RyaW5nIGNvbnN0ICYgbGFuZ2NvZGUpOworCisJLy8v IG5hbWUgb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBtYXAsIGVtcHR5IGlmIG5vbmUKKwlzdGQ6 OnN0cmluZyBjb25zdCAmIGFjdGl2ZU1hcCgpIGNvbnN0IHsgcmV0dXJuIGFjdGl2ZV9tYXBfOyB9 CisKIAkvLyBHZXQgdGhlIFRyYW5zbGF0aW9uIE1hbmFnZXIKIAlpbmxpbmUgVHJhbnNNYW5hZ2Vy ICYgZ2V0VHJhbnNNYW5hZ2VyKCkgeyByZXR1cm4gdHJhbnM7IH0KIAotCS8vLyB1c2luZyBwcmlt YXJ5IG9yIHNlY29uZGFyeSBrZXltYXAgPwotCUtleW1hcCBrZXltYXA7Ci0KIHByaXZhdGU6Ci0J Ly8vIGlzIGtleSBtYXBwaW5nIGVuYWJsZWQgPwotCWJvb2wga2V5bWFwb247Ci0JLy8vIHRoZSBw cmltYXJ5IGxhbmd1YWdlIGtleW1hcAotCXN0ZDo6c3RyaW5nICYgcHJpbV9sYW5nOwotCS8vLyB0 aGUgc2Vjb25kYXJ5IGxhbmd1YWdlIGtleW1hcAotCXN0ZDo6c3RyaW5nICYgc2VjX2xhbmc7CisJ Ly8vIGN1cnJlbnRseSBzZWxlY3RlZCBtYXAsIGVtcHR5IGlmIG5vbmUKKwlzdGQ6OnN0cmluZyBh Y3RpdmVfbWFwXzsKKwkvLy8gbGFzdCBzeW5jZWQgKG1hcCwgbGFuZ2NvZGUpOyBjYXRjaGVzIHJl YWwgY2hhbmdlcyBldmVuIGlmIHRoZSBtYXAgcmVwZWF0cworCXN0ZDo6c3RyaW5nIGxhc3Rfc3lu Y2VkXzsKKwlzdGQ6OnN0cmluZyBsYXN0X2xhbmdjb2RlXzsKKwkvLy8gdGhlICJVc2Uga2V5Ym9h cmQgbWFwIiBwcmVmZXJlbmNlOiBtYXN0ZXIgb24vb2ZmIHN3aXRjaAorCWJvb2wgJiB1c2Vfa2Jt YXBfOworCS8vLyB0aGUgZGVmYXVsdCBrZXltYXAsIGxvYWRlZCBhdCBzdGFydC11cCBpZiBlbmFi bGVkCisJc3RkOjpzdHJpbmcgJiBkZWZhdWx0X2xhbmdfOworCS8vLyBzZWxlY3QgdGhlIGFjdGl2 ZSBtYXAgYXV0b21hdGljYWxseSBmcm9tIHRoZSBsYW5ndWFnZSBhdCB0aGUgY3Vyc29yPworCWJv b2wgJiBmb2xsb3dfbGFuZ3VhZ2VfOworCS8vLyBwZXItbGFuZ3VhZ2UgbWFwIGFzc2lnbm1lbnRz LCB1c2VkIHdoZW4gZm9sbG93X2xhbmd1YWdlXyBpcyBzZXQKKwlzdGQ6Om1hcDxzdGQ6OnN0cmlu Zywgc3RkOjpzdHJpbmc+ICYgbGFuZ19rZXltYXBzXzsKIAkvLy8gdGhlIHRyYW5zbGF0aW9uIG1h bmFnZXIKIAlUcmFuc01hbmFnZXIgdHJhbnM7CiB9OwpkaWZmIC0tZ2l0IGEvc3JjL0x5WEFjdGlv bi5jcHAgYi9zcmMvTHlYQWN0aW9uLmNwcAppbmRleCA1Y2VhOTExNDc1Li5iZDljOWRmMDU0IDEw MDY0NAotLS0gYS9zcmMvTHlYQWN0aW9uLmNwcAorKysgYi9zcmMvTHlYQWN0aW9uLmNwcApAQCAt MjQyMiwzMyArMjQyMiwyNiBAQCB2b2lkIEx5WEFjdGlvbjo6aW5pdCgpCiAJCXsgTEZVTl9LRVlN QVBfT0ZGLCAia2V5bWFwLW9mZiIsIFJlYWRPbmx5LCBFZGl0IH0sCiAKIC8qIQotICogXHZhciBs eXg6OkZ1bmNDb2RlIGx5eDo6TEZVTl9LRVlNQVBfUFJJTUFSWQotICogXGxpIEFjdGlvbjogVHVy biBvbiB0aGUgcHJpbWFyeSBrZXlib2FyZCBtYXAuCisgKiBcdmFyIGx5eDo6RnVuY0NvZGUgbHl4 OjpMRlVOX0tFWU1BUF9TRUxFQ1QKKyAqIFxsaSBBY3Rpb246IFR1cm4gb24gYW5kIHNlbGVjdCBh IGtleWJvYXJkIG1hcCBieSBuYW1lLgogICogXGxpIE5vdGlvbjogTWFwcyB3ZXJlIHdpZGVseSB1 c2VkIGluIHBhc3QsIHdoZW4gWC13aW5kb3dzIGRpZG4ndCBoYXZlIG5vd2FkYXlzCiAgICAgICAg ICAgICAgICBrZXlib2FyZCBzdXBwb3J0LiBUaGV5IGNhbiBiZSBzdGlsbCB1c2VkIHRvIG1haW50 YWluIHVuaWZvcm0ga2V5Ym9hcmQKICAgICAgICAgICAgICAgIGxheW91dCBhY3Jvc3MgdGhlIHZh cmlvdXMgcGxhdGZvcm1zLlxuCi0gICAgICAgICAgICAgICBUaGUgbGFuZ3VhZ2UgaXMgdG8gYmUg c2V0IGluIHRoZSBQcmVmZXJlbmNlcyBkaWFsb2cuCi0gKiBcbGkgU3ludGF4OiBrZXltYXAtcHJp bWFyeQotICogXGVuZHZhcgotICovCi0JCXsgTEZVTl9LRVlNQVBfUFJJTUFSWSwgImtleW1hcC1w cmltYXJ5IiwgUmVhZE9ubHksIEVkaXQgfSwKLQotLyohCi0gKiBcdmFyIGx5eDo6RnVuY0NvZGUg bHl4OjpMRlVOX0tFWU1BUF9TRUNPTkRBUlkKLSAqIFxsaSBBY3Rpb246IFR1cm4gb24gdGhlIHNl Y29uZGFyeSBrZXlib2FyZCBtYXAuCi0gKiBcbGkgU3ludGF4OiBrZXltYXAtc2Vjb25kYXJ5Ci0g KiBcZW5kdmFyCi0gKi8KLQkJeyBMRlVOX0tFWU1BUF9TRUNPTkRBUlksICJrZXltYXAtc2Vjb25k YXJ5IiwgUmVhZE9ubHksIEVkaXQgfSwKLQotLyohCi0gKiBcdmFyIGx5eDo6RnVuY0NvZGUgbHl4 OjpMRlVOX0tFWU1BUF9UT0dHTEUKLSAqIFxsaSBBY3Rpb246IFRvZ2dsZXMga2V5Ym9hcmQgbWFw cyAoZmlyc3Qvc2Vjb25kL29mZikuCi0gKiBcbGkgU3ludGF4OiBrZXltYXAtdG9nZ2xlCi0gKiBc bGkgT3JpZ2luOiBsZWVtaW5nLCAzMCBNYXIgMjAwNAotICogXGVuZHZhcgotICovCi0JCXsgTEZV Tl9LRVlNQVBfVE9HR0xFLCAia2V5bWFwLXRvZ2dsZSIsIFJlYWRPbmx5LCBFZGl0IH0sCisgICAg ICAgICAgICAgICBUaGUgbmFtZSBpcyB0aGUgYmFzZSBuYW1lIG9mIGEgLmttYXAgZmlsZSwgYXMg Y29uZmlndXJlZCBpbiB0aGUKKyAgICAgICAgICAgICAgIFByZWZlcmVuY2VzIGRpYWxvZyAoZS5n LiAiaGVicmV3IiBmb3IgaGVicmV3LmttYXApLiBLZXlib2FyZCBtYXBzCisgICAgICAgICAgICAg ICBjYW4gYWxzbyBiZSBzZWxlY3RlZCBhdXRvbWF0aWNhbGx5IGFjY29yZGluZyB0byB0aGUgbGFu Z3VhZ2UgYXQKKyAgICAgICAgICAgICAgIHRoZSBjdXJzb3I7IHNlZSB0aGUgUHJlZmVyZW5jZXMg ZGlhbG9nLiBJZiBubyBuYW1lIGlzIGdpdmVuLAorICAgICAgICAgICAgICAgYW55IG1hbnVhbCBz ZWxlY3Rpb24gaXMgZHJvcHBlZCBhbmQgdGhlIG1hcCBjb25maWd1cmVkIGluIHRoZQorICAgICAg ICAgICAgICAgUHJlZmVyZW5jZXMgZGlhbG9nIGlzIChyZS0pYXBwbGllZDogdGhlIGRlZmF1bHQg bWFwLCBvciwgaWYKKyAgICAgICAgICAgICAgIGF1dG9tYXRpYyBzZWxlY3Rpb24gYnkgbGFuZ3Vh Z2UgaXMgZW5hYmxlZCwgdGhlIG1hcCBjb25maWd1cmVkCisgICAgICAgICAgICAgICBmb3IgdGhl IGxhbmd1YWdlIGF0IHRoZSBjdXJzb3IuCisgKiBcbGkgU3ludGF4OiBrZXltYXAtc2VsZWN0IDxO QU1FPgorICogXGxpIFBhcmFtczogPE5BTUU+OiB0aGUgbmFtZSBvZiB0aGUga2V5Ym9hcmQgbWFw IHRvIHNlbGVjdDsgaWYgb21pdHRlZCwKKyAgICAgICAgICAgICAgIHJldHVybiB0byB0aGUgY29u ZmlndXJlZCBkZWZhdWx0LgorICogXGxpIE9yaWdpbjogdWZvZ2llbCwgMjcgSnVseSAyMDI2Cisg KiBcZW5kdmFyCisgKi8KKwkJeyBMRlVOX0tFWU1BUF9TRUxFQ1QsICJrZXltYXAtc2VsZWN0Iiwg UmVhZE9ubHksIEVkaXQgfSwKIAogCiAvKiEKZGlmZiAtLWdpdCBhL3NyYy9MeVhSQy5jcHAgYi9z cmMvTHlYUkMuY3BwCmluZGV4IDk4ZWMxYTQwZWEuLmVhZmFjMGEzNGYgMTAwNjQ0Ci0tLSBhL3Ny Yy9MeVhSQy5jcHAKKysrIGIvc3JjL0x5WFJDLmNwcApAQCAtNjAsNyArNjAsNyBAQCBuYW1lc3Bh Y2UgewogCiAvLyBUaGUgZm9ybWF0IHNob3VsZCBhbHNvIGJlIHVwZGF0ZWQgaW4gY29uZmlndXJl LnB5LCBhbmQgY29udmVyc2lvbiBjb2RlCiAvLyBzaG91bGQgYmUgYWRkZWQgdG8gcHJlZnMycHJl ZnNfcHJlZnMucHkuCi1zdGF0aWMgdW5zaWduZWQgaW50IGNvbnN0IExZWFJDX0ZJTEVGT1JNQVQg PSA0MjsgLy8gQ2hhbmdlIGRlZmF1bHQgb2YgXHZpc3VhbF9jdXJzb3IgdG8gdHJ1ZQorc3RhdGlj IHVuc2lnbmVkIGludCBjb25zdCBMWVhSQ19GSUxFRk9STUFUID0gNDM7IC8vIE1pZ3JhdGUgXGti bWFwX3NlY29uZGFyeSB0byBca2JtYXBfZm9sbG93X2xhbmd1YWdlICsgXGtibWFwX2xhbmcKIC8v IHdoZW4gYWRkaW5nIHNvbWV0aGluZyB0byB0aGlzIGFycmF5IGtlZXAgaXQgc29ydGVkIQogTGV4 ZXJLZXl3b3JkIGx5eHJjVGFnc1tdID0gewogCXsgIlxcYWNjZXB0X2NvbXBvdW5kIiwgTHlYUkM6 OlJDX0FDQ0VQVF9DT01QT1VORCB9LApAQCAtMTMyLDggKzEzMiw5IEBAIExleGVyS2V5d29yZCBs eXhyY1RhZ3NbXSA9IHsKIAl7ICJcXGpiaWJ0ZXhfY29tbWFuZCIsIEx5WFJDOjpSQ19KQklCVEVY X0NPTU1BTkQgfSwKIAl7ICJcXGppbmRleF9jb21tYW5kIiwgTHlYUkM6OlJDX0pJTkRFWF9DT01N QU5EIH0sCiAJeyAiXFxrYm1hcCIsIEx5WFJDOjpSQ19LQk1BUCB9LAorCXsgIlxca2JtYXBfZm9s bG93X2xhbmd1YWdlIiwgTHlYUkM6OlJDX0tCTUFQX0ZPTExPV19MQU5HVUFHRSB9LAorCXsgIlxc a2JtYXBfbGFuZyIsIEx5WFJDOjpSQ19LQk1BUF9MQU5HIH0sCiAJeyAiXFxrYm1hcF9wcmltYXJ5 IiwgTHlYUkM6OlJDX0tCTUFQX1BSSU1BUlkgfSwKLQl7ICJcXGtibWFwX3NlY29uZGFyeSIsIEx5 WFJDOjpSQ19LQk1BUF9TRUNPTkRBUlkgfSwKIAl7ICJcXGxhbmd1YWdlX2F1dG9fYmVnaW4iLCBM eVhSQzo6UkNfTEFOR1VBR0VfQVVUT19CRUdJTiB9LAogCXsgIlxcbGFuZ3VhZ2VfYXV0b19lbmQi LCBMeVhSQzo6UkNfTEFOR1VBR0VfQVVUT19FTkQgfSwKIAl7ICJcXGxhbmd1YWdlX2NvbW1hbmRf YmVnaW4iLCBMeVhSQzo6UkNfTEFOR1VBR0VfQ09NTUFORF9CRUdJTiB9LApAQCAtMzY5LDI0ICsz NzAsMzMgQEAgTHlYUkM6OlJldHVyblZhbHVlcyBMeVhSQzo6cmVhZChMZXhlciAmIGxleHJjLCBi b29sIGNoZWNrX2Zvcm1hdCkKIAkJCQlzdHJpbmcgY29uc3Qga21hcChvczo6aW50ZXJuYWxfcGF0 aChsZXhyYy5nZXRTdHJpbmcoKSkpOwogCQkJCWlmICghbGliRmlsZVNlYXJjaCgia2JkIiwga21h cCwgImttYXAiKS5lbXB0eSgpCiAJCQkJICAgIHx8IGttYXAuZW1wdHkoKSkgewotCQkJCQlwcmlt YXJ5X2tibWFwID0ga21hcDsKKwkJCQkJZGVmYXVsdF9rYm1hcCA9IGttYXA7CiAJCQkJfSBlbHNl IHsKIAkJCQkJbGV4cmMucHJpbnRFcnJvcigiTHlYOiBLZXltYXAgYCQkVG9rZW4nIG5vdCBmb3Vu ZCIpOwogCQkJCX0KIAkJCX0KIAkJCWJyZWFrOwogCi0JCWNhc2UgUkNfS0JNQVBfU0VDT05EQVJZ OgotCQkJaWYgKGxleHJjLm5leHQoKSkgewotCQkJCXN0cmluZyBjb25zdCBrbWFwKG9zOjppbnRl cm5hbF9wYXRoKGxleHJjLmdldFN0cmluZygpKSk7Ci0JCQkJaWYgKCFsaWJGaWxlU2VhcmNoKCJr YmQiLCBrbWFwLCAia21hcCIpLmVtcHR5KCkKLQkJCQkJICB8fCBrbWFwLmVtcHR5KCkpIHsKLQkJ CQkJc2Vjb25kYXJ5X2tibWFwID0ga21hcDsKLQkJCQl9IGVsc2UgewotCQkJCQlsZXhyYy5wcmlu dEVycm9yKCJMeVg6IEtleW1hcCBgJCRUb2tlbicgbm90IGZvdW5kIik7Ci0JCQkJfQorCQljYXNl IFJDX0tCTUFQX0ZPTExPV19MQU5HVUFHRToKKwkJCWxleHJjID4+IGtleW1hcF9mb2xsb3dfbGFu Z3VhZ2U7CisJCQlicmVhazsKKworCQljYXNlIFJDX0tCTUFQX0xBTkc6IHsKKwkJCXN0cmluZyBs YW5nOworCQkJaWYgKGxleHJjLm5leHQoKSkKKwkJCQlsYW5nID0gbGV4cmMuZ2V0U3RyaW5nKCk7 CisJCQlzdHJpbmcga21hcDsKKwkJCWlmIChsZXhyYy5uZXh0KCkpCisJCQkJa21hcCA9IG9zOjpp bnRlcm5hbF9wYXRoKGxleHJjLmdldFN0cmluZygpKTsKKwkJCWlmIChrbWFwLmVtcHR5KCkpIHsK KwkJCQlrZXltYXBfYnlfbGFuZ3VhZ2UuZXJhc2UobGFuZyk7CisJCQl9IGVsc2UgaWYgKCFsaWJG aWxlU2VhcmNoKCJrYmQiLCBrbWFwLCAia21hcCIpLmVtcHR5KCkpIHsKKwkJCQlrZXltYXBfYnlf bGFuZ3VhZ2VbbGFuZ10gPSBrbWFwOworCQkJfSBlbHNlIHsKKwkJCQlsZXhyYy5wcmludEVycm9y KCJMeVg6IEtleW1hcCBgJCRUb2tlbicgbm90IGZvdW5kIik7CiAJCQl9CiAJCQlicmVhazsKKwkJ fQogCiAJCWNhc2UgUkNfUFJJTlRMQU5EU0NBUEVGTEFHOgogCQkJbGV4cmMgPj4gcHJpbnRfbGFu ZHNjYXBlX2ZsYWc7CkBAIC0xNDkyLDE4ICsxNTAyLDMwIEBAIHZvaWQgTHlYUkM6OndyaXRlKG9z dHJlYW0gJiBvcywgYm9vbCBpZ25vcmVfc3lzdGVtX2x5eHJjLCBzdHJpbmcgY29uc3QgJiBuYW1l KSBjCiAJCS8vIGZhbGwgdGhyb3VnaAogCWNhc2UgUkNfS0JNQVBfUFJJTUFSWToKIAkJaWYgKGln bm9yZV9zeXN0ZW1fbHl4cmMgfHwKLQkJICAgIHByaW1hcnlfa2JtYXAgIT0gc3lzdGVtX2x5eHJj LnByaW1hcnlfa2JtYXApIHsKLQkJCXN0cmluZyBjb25zdCBwYXRoID0gb3M6OmV4dGVybmFsX3Bh dGgocHJpbWFyeV9rYm1hcCk7CisJCSAgICBkZWZhdWx0X2tibWFwICE9IHN5c3RlbV9seXhyYy5k ZWZhdWx0X2tibWFwKSB7CisJCQlzdHJpbmcgY29uc3QgcGF0aCA9IG9zOjpleHRlcm5hbF9wYXRo KGRlZmF1bHRfa2JtYXApOwogCQkJb3MgPDwgIlxca2JtYXBfcHJpbWFyeSBcIiIgPDwgcGF0aCA8 PCAiXCJcbiI7CiAJCX0KIAkJaWYgKHRhZyAhPSBSQ19MQVNUKQogCQkJYnJlYWs7CiAJCS8vIGZh bGwgdGhyb3VnaAotCWNhc2UgUkNfS0JNQVBfU0VDT05EQVJZOgorCWNhc2UgUkNfS0JNQVBfRk9M TE9XX0xBTkdVQUdFOgogCQlpZiAoaWdub3JlX3N5c3RlbV9seXhyYyB8fAotCQkgICAgc2Vjb25k YXJ5X2tibWFwICE9IHN5c3RlbV9seXhyYy5zZWNvbmRhcnlfa2JtYXApIHsKLQkJCXN0cmluZyBj b25zdCBwYXRoID0gb3M6OmV4dGVybmFsX3BhdGgoc2Vjb25kYXJ5X2tibWFwKTsKLQkJCW9zIDw8 ICJcXGtibWFwX3NlY29uZGFyeSBcIiIgPDwgcGF0aCA8PCAiXCJcbiI7CisJCSAgICBrZXltYXBf Zm9sbG93X2xhbmd1YWdlICE9IHN5c3RlbV9seXhyYy5rZXltYXBfZm9sbG93X2xhbmd1YWdlKSB7 CisJCQlvcyA8PCAiXFxrYm1hcF9mb2xsb3dfbGFuZ3VhZ2UgIgorCQkJICAgPDwgY29udmVydDxz dHJpbmc+KGtleW1hcF9mb2xsb3dfbGFuZ3VhZ2UpIDw8ICdcbic7CisJCX0KKwkJaWYgKHRhZyAh PSBSQ19MQVNUKQorCQkJYnJlYWs7CisJCS8vIGZhbGwgdGhyb3VnaAorCWNhc2UgUkNfS0JNQVBf TEFORzoKKwkJaWYgKGlnbm9yZV9zeXN0ZW1fbHl4cmMgfHwKKwkJICAgIGtleW1hcF9ieV9sYW5n dWFnZSAhPSBzeXN0ZW1fbHl4cmMua2V5bWFwX2J5X2xhbmd1YWdlKSB7CisJCQlmb3IgKGF1dG8g Y29uc3QgJiBsYW5nX21hcCA6IGtleW1hcF9ieV9sYW5ndWFnZSkgeworCQkJCXN0cmluZyBjb25z dCBwYXRoID0gb3M6OmV4dGVybmFsX3BhdGgobGFuZ19tYXAuc2Vjb25kKTsKKwkJCQlvcyA8PCAi XFxrYm1hcF9sYW5nIFwiIiA8PCBsYW5nX21hcC5maXJzdAorCQkJCSAgIDw8ICJcIiBcIiIgPDwg cGF0aCA8PCAiXCJcbiI7CisJCQl9CiAJCX0KIAkJaWYgKHRhZyAhPSBSQ19MQVNUKQogCQkJYnJl YWs7CkBAIC0yOTg0LDcgKzMwMDYsOCBAQCB2b2lkIGFjdE9uVXBkYXRlZFByZWZzKEx5WFJDIGNv bnN0ICYgbHl4cmNfb3JpZywgTHlYUkMgY29uc3QgJiBseXhyY19uZXcpCiAJY2FzZSBMeVhSQzo6 UkNfSU5QVVQ6CiAJY2FzZSBMeVhSQzo6UkNfS0JNQVA6CiAJY2FzZSBMeVhSQzo6UkNfS0JNQVBf UFJJTUFSWToKLQljYXNlIEx5WFJDOjpSQ19LQk1BUF9TRUNPTkRBUlk6CisJY2FzZSBMeVhSQzo6 UkNfS0JNQVBfRk9MTE9XX0xBTkdVQUdFOgorCWNhc2UgTHlYUkM6OlJDX0tCTUFQX0xBTkc6CiAJ Y2FzZSBMeVhSQzo6UkNfTEFOR1VBR0VfQVVUT19CRUdJTjoKIAljYXNlIEx5WFJDOjpSQ19MQU5H VUFHRV9BVVRPX0VORDoKIAljYXNlIEx5WFJDOjpSQ19MQU5HVUFHRV9DT01NQU5EX0JFR0lOOgpA QCAtMzI3OCwxMCArMzMwMSwxNyBAQCBzdHJpbmcgY29uc3QgTHlYUkM6OmdldERlc2NyaXB0aW9u KEx5WFJDVGFncyB0YWcpCiAKIAljYXNlIFJDX0tCTUFQOgogCWNhc2UgUkNfS0JNQVBfUFJJTUFS WToKLQljYXNlIFJDX0tCTUFQX1NFQ09OREFSWToKIAkJc3RyID0gXygiVXNlIHRoaXMgdG8gc2V0 IHRoZSBjb3JyZWN0IG1hcHBpbmcgZmlsZSBmb3IgeW91ciBrZXlib2FyZC4gWW91J2xsIG5lZWQg dGhpcyBpZiB5b3UgZm9yIGluc3RhbmNlIHdhbnQgdG8gdHlwZSBHZXJtYW4gZG9jdW1lbnRzIG9u IGFuIEFtZXJpY2FuIGtleWJvYXJkLiIpOwogCQlicmVhazsKIAorCWNhc2UgUkNfS0JNQVBfRk9M TE9XX0xBTkdVQUdFOgorCQlzdHIgPSBfKCJTZWxlY3QgdGhlIGtleWJvYXJkIG1hcCBhdXRvbWF0 aWNhbGx5IGFjY29yZGluZyB0byB0aGUgbGFuZ3VhZ2UgYXQgdGhlIGN1cnNvciwgZmFsbGluZyBi YWNrIHRvIHRoZSBkZWZhdWx0IGtleWJvYXJkIG1hcCBmb3IgbGFuZ3VhZ2VzIHdpdGggbm8gYXNz aWdubWVudCBvZiB0aGVpciBvd24uIik7CisJCWJyZWFrOworCisJY2FzZSBSQ19LQk1BUF9MQU5H OgorCQlzdHIgPSBfKCJLZXlib2FyZCBtYXAgdG8gdXNlIGZvciBhIGdpdmVuIGxhbmd1YWdlIHdo ZW4gdGhlIGtleWJvYXJkIG1hcCBpcyBzZWxlY3RlZCBhdXRvbWF0aWNhbGx5IGFjY29yZGluZyB0 byBsYW5ndWFnZS4iKTsKKwkJYnJlYWs7CisKIAljYXNlIFJDX0xBTkdVQUdFX0FVVE9fQkVHSU46 CiAJCXN0ciA9IF8oIlNlbGVjdCBpZiBhIGxhbmd1YWdlIHN3aXRjaGluZyBjb21tYW5kIGlzIG5l ZWRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkb2N1bWVudC4iKTsKIAkJYnJlYWs7CmRpZmYg LS1naXQgYS9zcmMvTHlYUkMuaCBiL3NyYy9MeVhSQy5oCmluZGV4IDgyZGY5NThlNDQuLjQxNzIz MDM1MzEgMTAwNjQ0Ci0tLSBhL3NyYy9MeVhSQy5oCisrKyBiL3NyYy9MeVhSQy5oCkBAIC0xMTEs NyArMTExLDggQEAgcHVibGljOgogCQlSQ19KSU5ERVhfQ09NTUFORCwKIAkJUkNfS0JNQVAsCiAJ CVJDX0tCTUFQX1BSSU1BUlksCi0JCVJDX0tCTUFQX1NFQ09OREFSWSwKKwkJUkNfS0JNQVBfRk9M TE9XX0xBTkdVQUdFLAorCQlSQ19LQk1BUF9MQU5HLAogCQlSQ19MQU5HVUFHRV9BVVRPX0JFR0lO LAogCQlSQ19MQU5HVUFHRV9BVVRPX0VORCwKIAkJUkNfTEFOR1VBR0VfQ09NTUFORF9CRUdJTiwK QEAgLTM4NCwxMCArMzg1LDEyIEBAIHB1YmxpYzoKIAlib29sIHNwZWxsY2hlY2tfbm90ZXMgPSB0 cnVlOwogCS8vLwogCWJvb2wgdXNlX2tibWFwID0gZmFsc2U7Ci0JLy8vCi0Jc3RkOjpzdHJpbmcg cHJpbWFyeV9rYm1hcDsKLQkvLy8KLQlzdGQ6OnN0cmluZyBzZWNvbmRhcnlfa2JtYXA7CisJLy8v IHRoZSBrZXlib2FyZCBtYXAgdG8gbG9hZCBhdCBzdGFydC11cCwgaWYgdXNlX2tibWFwIGlzIHNl dAorCXN0ZDo6c3RyaW5nIGRlZmF1bHRfa2JtYXA7CisJLy8vIHNlbGVjdCB0aGUga2V5Ym9hcmQg bWFwIGJ5IGxhbmd1YWdlIGluc3RlYWQgb2YgZGVmYXVsdF9rYm1hcAorCWJvb2wga2V5bWFwX2Zv bGxvd19sYW5ndWFnZSA9IGZhbHNlOworCS8vLyBrZXlib2FyZCBtYXAgcGVyIGxhbmd1YWdlIGNv ZGUsIHVzZWQgd2hlbiBrZXltYXBfZm9sbG93X2xhbmd1YWdlIGlzIHNldAorCXN0ZDo6bWFwPHN0 ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4ga2V5bWFwX2J5X2xhbmd1YWdlOwogCS8vLwogCXN0ZDo6 c3RyaW5nIGx5eHBpcGVzOwogCS8vLwpkaWZmIC0tZ2l0IGEvc3JjL1RyYW5zLmNwcCBiL3NyYy9U cmFucy5jcHAKaW5kZXggMTIwODY2NThiMS4uNDcwMTg2YjEwZCAxMDA2NDQKLS0tIGEvc3JjL1Ry YW5zLmNwcAorKysgYi9zcmMvVHJhbnMuY3BwCkBAIC0yMyw2ICsyMyw4IEBACiAjaW5jbHVkZSAi c3VwcG9ydC9MZXhlci5oIgogI2luY2x1ZGUgInN1cHBvcnQvbHN0cmluZ3MuaCIKIAorI2luY2x1 ZGUgPHV0aWxpdHk+CisKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiB1c2luZyBuYW1lc3BhY2UgbHl4 OjpzdXBwb3J0OwogCkBAIC01NzksMzggKzU4MSwyNSBAQCBUcmFuc01hbmFnZXI6OlRyYW5zTWFu YWdlcigpCiB7fQogCiAKLWludCBUcmFuc01hbmFnZXI6OnNldFByaW1hcnkoc3RyaW5nIGNvbnN0 ICYgbGFuZ3VhZ2UpCi17Ci0JaWYgKHQxXy5nZXROYW1lKCkgPT0gbGFuZ3VhZ2UpCi0JCXJldHVy biAwOwotCi0JcmV0dXJuIHQxXy5sb2FkKGxhbmd1YWdlKTsKLX0KLQotCi1pbnQgVHJhbnNNYW5h Z2VyOjpzZXRTZWNvbmRhcnkoc3RyaW5nIGNvbnN0ICYgbGFuZ3VhZ2UpCitpbnQgVHJhbnNNYW5h Z2VyOjpzZXRBY3RpdmUoc3RyaW5nIGNvbnN0ICYgbmFtZSkKIHsKLQlpZiAodDJfLmdldE5hbWUo KSA9PSBsYW5ndWFnZSkKKwlpZiAobmFtZS5lbXB0eSgpKSB7CisJCWRpc2FibGVLZXltYXAoKTsK IAkJcmV0dXJuIDA7CisJfQogCi0JcmV0dXJuIHQyXy5sb2FkKGxhbmd1YWdlKTsKLX0KLQotCi12 b2lkIFRyYW5zTWFuYWdlcjo6ZW5hYmxlUHJpbWFyeSgpCi17Ci0JaWYgKHQxXy5pc0RlZmluZWQo KSkKLQkJYWN0aXZlXyA9ICZ0MV87Ci0KLQlMWVhFUlIoRGVidWc6OktCTUFQLCAiRW5hYmxpbmcg cHJpbWFyeSBrZXltYXAiKTsKLX0KLQorCW1hcDxzdHJpbmcsIFRyYW5zPjo6aXRlcmF0b3IgaXQg PSBtYXBzXy5maW5kKG5hbWUpOworCWlmIChpdCA9PSBtYXBzXy5lbmQoKSkgeworCQlUcmFucyB0 OworCQlpbnQgY29uc3QgcmVzID0gdC5sb2FkKG5hbWUpOworCQlpZiAocmVzICE9IDApCisJCQly ZXR1cm4gcmVzOworCQlpdCA9IG1hcHNfLmVtcGxhY2UobmFtZSwgc3RkOjptb3ZlKHQpKS5maXJz dDsKKwl9CiAKLXZvaWQgVHJhbnNNYW5hZ2VyOjplbmFibGVTZWNvbmRhcnkoKQotewotCWlmICh0 Ml8uaXNEZWZpbmVkKCkpCi0JCWFjdGl2ZV8gPSAmdDJfOwotCUxZWEVSUihEZWJ1Zzo6S0JNQVAs ICJFbmFibGluZyBzZWNvbmRhcnkga2V5bWFwIik7CisJYWN0aXZlXyA9ICZpdC0+c2Vjb25kOwor CUxZWEVSUihEZWJ1Zzo6S0JNQVAsICJFbmFibGluZyBrZXltYXAgYCIgPDwgbmFtZSA8PCAnXCcn KTsKKwlyZXR1cm4gMDsKIH0KIAogCmRpZmYgLS1naXQgYS9zcmMvVHJhbnMuaCBiL3NyYy9UcmFu cy5oCmluZGV4IGM4ZDgyOGU3ODUuLjdmNmJkYTQzZmUgMTAwNjQ0Ci0tLSBhL3NyYy9UcmFucy5o CisrKyBiL3NyYy9UcmFucy5oCkBAIC0xMzUsNiArMTM1LDExIEBAIHB1YmxpYzoKIAlUcmFucygp IHt9CiAJLy8vCiAJflRyYW5zKCkgeyBmcmVlS2V5bWFwKCk7IH0KKwkvLy8gZGVmYXVsdGVkIGV4 cGxpY2l0bHk6IHRoZSBkZXN0cnVjdG9yIGFib3ZlIHN1cHByZXNzZXMgdGhlc2UKKwkvLy8gaW1w bGljaXRseSwgd2hpY2ggd291bGQgc2lsZW50bHkgdHVybiBtb3ZlcyBpbnRvIGNvcGllcworCVRy YW5zKFRyYW5zICYmKSA9IGRlZmF1bHQ7CisJLy8vCisJVHJhbnMgJiBvcGVyYXRvcj0oVHJhbnMg JiYpID0gZGVmYXVsdDsKIAogCS8vLwogCWludCBsb2FkKHN0ZDo6c3RyaW5nIGNvbnN0ICYgbGFu Z3VhZ2UpOwpAQCAtMzEzLDkgKzMxOCw3IEBAIHByaXZhdGU6CiAJLy8vCiAJVHJhbnMgKiBhY3Rp dmVfOwogCS8vLwotCVRyYW5zIHQxXzsKLQkvLy8KLQlUcmFucyB0Ml87CisJc3RkOjptYXA8c3Rk OjpzdHJpbmcsIFRyYW5zPiBtYXBzXzsKIAkvLy8KIAlzdGF0aWMgVHJhbnMgZGVmYXVsdF87CiAJ Ly8vCkBAIC0zMjMsMTQgKzMyNiw4IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAJLy8vCiAJVHJhbnNN YW5hZ2VyKCk7Ci0JLy8vCi0JaW50IHNldFByaW1hcnkoc3RkOjpzdHJpbmcgY29uc3QgJik7Ci0J Ly8vCi0JaW50IHNldFNlY29uZGFyeShzdGQ6OnN0cmluZyBjb25zdCAmKTsKLQkvLy8KLQl2b2lk IGVuYWJsZVByaW1hcnkoKTsKLQkvLy8KLQl2b2lkIGVuYWJsZVNlY29uZGFyeSgpOworCS8vLyBs b2FkIChpZiBuZWVkZWQpIGFuZCBhY3RpdmF0ZSB0aGUgbmFtZWQga2V5bWFwOyAwIG9uIHN1Y2Nl c3MsIC0xIGlmIG5vdCBmb3VuZAorCWludCBzZXRBY3RpdmUoc3RkOjpzdHJpbmcgY29uc3QgJik7 CiAJLy8vCiAJdm9pZCBkaXNhYmxlS2V5bWFwKCk7CiAJLy8vCmRpZmYgLS1naXQgYS9zcmMvZnJv bnRlbmRzL3F0L0d1aVByZWZzLmNwcCBiL3NyYy9mcm9udGVuZHMvcXQvR3VpUHJlZnMuY3BwCmlu ZGV4IDY5OTg0MzA3ODAuLmRmNTBiMDg2YzAgMTAwNjQ0Ci0tLSBhL3NyYy9mcm9udGVuZHMvcXQv R3VpUHJlZnMuY3BwCisrKyBiL3NyYy9mcm9udGVuZHMvcXQvR3VpUHJlZnMuY3BwCkBAIC0zMTgs OCArMzE4LDYgQEAgUHJlZklucHV0OjpQcmVmSW5wdXQoR3VpUHJlZmVyZW5jZXMgKiBmb3JtKQog CQl0aGlzLCBTSUdOQUwoY2hhbmdlZCgpKSk7CiAJY29ubmVjdChmaXJzdEtleW1hcEVELCBTSUdO QUwodGV4dENoYW5nZWQoUVN0cmluZykpLAogCQl0aGlzLCBTSUdOQUwoY2hhbmdlZCgpKSk7Ci0J Y29ubmVjdChzZWNvbmRLZXltYXBFRCwgU0lHTkFMKHRleHRDaGFuZ2VkKFFTdHJpbmcpKSwKLQkJ dGhpcywgU0lHTkFMKGNoYW5nZWQoKSkpOwogCWNvbm5lY3QobW91c2VXaGVlbFNwZWVkU0IsIFNJ R05BTCh2YWx1ZUNoYW5nZWQoZG91YmxlKSksCiAJCXRoaXMsIFNJR05BTChjaGFuZ2VkKCkpKTsK IAljb25uZWN0KHNjcm9sbHpvb21FbmFibGVDQiwgU0lHTkFMKGNsaWNrZWQoKSksCkBAIC0zMzAs NiArMzI4LDIxIEBAIFByZWZJbnB1dDo6UHJlZklucHV0KEd1aVByZWZlcmVuY2VzICogZm9ybSkK IAkJdGhpcywgU0lHTkFMKGNoYW5nZWQoKSkpOwogCWNvbm5lY3QobW1QYXN0ZUNCLCBTSUdOQUwo dG9nZ2xlZChib29sKSksCiAJCXRoaXMsIFNJR05BTChjaGFuZ2VkKCkpKTsKKwljb25uZWN0KGtl eW1hcEZvbGxvd0xhbmdDQiwgU0lHTkFMKGNsaWNrZWQoKSksCisJCXRoaXMsIFNJR05BTChjaGFu Z2VkKCkpKTsKKwljb25uZWN0KGtleW1hcExhbmdBZGRQQiwgU0lHTkFMKGNsaWNrZWQoKSksCisJ CXRoaXMsIFNMT1QoYWRkS2V5bWFwTGFuZygpKSk7CisJY29ubmVjdChrZXltYXBMYW5nQWRkUEIs IFNJR05BTChjbGlja2VkKCkpLAorCQl0aGlzLCBTSUdOQUwoY2hhbmdlZCgpKSk7CisJY29ubmVj dChrZXltYXBMYW5nUmVtb3ZlUEIsIFNJR05BTChjbGlja2VkKCkpLAorCQl0aGlzLCBTTE9UKHJl bW92ZUtleW1hcExhbmcoKSkpOworCWNvbm5lY3Qoa2V5bWFwTGFuZ1JlbW92ZVBCLCBTSUdOQUwo Y2xpY2tlZCgpKSwKKwkJdGhpcywgU0lHTkFMKGNoYW5nZWQoKSkpOworCisJa2V5bWFwTGFuZ0VE LT5zZXRWYWxpZGF0b3IobmV3IE5vTmV3TGluZVZhbGlkYXRvcihrZXltYXBMYW5nRUQpKTsKKwor CWtleW1hcExhbmdDTy0+c2V0TW9kZWwoZ3VpQXBwLT5sYW5ndWFnZU1vZGVsKCkpOworCWtleW1h cExhbmdDTy0+c2V0TW9kZWxDb2x1bW4oMCk7CiAKIAkvLyByZXZlYWwgY2hlY2tib3ggZm9yIHN3 aXRjaGluZyBDdHJsIGFuZCBNZXRhIG9uIE1hYzoKICNpZmRlZiBRX09TX01BQwpAQCAtMzQyLDEw ICszNTUsOSBAQCBQcmVmSW5wdXQ6OlByZWZJbnB1dChHdWlQcmVmZXJlbmNlcyAqIGZvcm0pCiAK IHZvaWQgUHJlZklucHV0OjphcHBseVJDKEx5WFJDICYgcmMpIGNvbnN0CiB7Ci0JLy8gRklYTUU6 IGNhbiBkZXJpdmUgQ0IgZnJvbSB0aGUgdHdvIEVEcworCS8vIEZJWE1FOiBjYW4gZGVyaXZlIENC IGZyb20gdGhlIEVECiAJcmMudXNlX2tibWFwID0ga2V5bWFwQ0ItPmlzQ2hlY2tlZCgpOwotCXJj LnByaW1hcnlfa2JtYXAgPSBpbnRlcm5hbF9wYXRoKGZyb21xc3RyKGZpcnN0S2V5bWFwRUQtPnRl eHQoKSkpOwotCXJjLnNlY29uZGFyeV9rYm1hcCA9IGludGVybmFsX3BhdGgoZnJvbXFzdHIoc2Vj b25kS2V5bWFwRUQtPnRleHQoKSkpOworCXJjLmRlZmF1bHRfa2JtYXAgPSBpbnRlcm5hbF9wYXRo KGZyb21xc3RyKGZpcnN0S2V5bWFwRUQtPnRleHQoKSkpOwogCXJjLm1vdXNlX3doZWVsX3NwZWVk ID0gbW91c2VXaGVlbFNwZWVkU0ItPnZhbHVlKCk7CiAJaWYgKHNjcm9sbHpvb21FbmFibGVDQi0+ aXNDaGVja2VkKCkpIHsKIAkJc3dpdGNoIChzY3JvbGx6b29tVmFsdWVDTy0+Y3VycmVudEluZGV4 KCkpIHsKQEAgLTM2NCwxNSArMzc2LDIzIEBAIHZvaWQgUHJlZklucHV0OjphcHBseVJDKEx5WFJD ICYgcmMpIGNvbnN0CiAJfQogCXJjLm1hY19kb250c3dhcF9jdHJsX21ldGEgID0gZG9udHN3YXBD Qi0+aXNDaGVja2VkKCk7CiAJcmMubW91c2VfbWlkZGxlYnV0dG9uX3Bhc3RlID0gbW1QYXN0ZUNC LT5pc0NoZWNrZWQoKTsKKworCXJjLmtleW1hcF9mb2xsb3dfbGFuZ3VhZ2UgPSBrZXltYXBGb2xs b3dMYW5nQ0ItPmlzQ2hlY2tlZCgpOworCXJjLmtleW1hcF9ieV9sYW5ndWFnZS5jbGVhcigpOwor CWZvciAoaW50IGkgPSAwOyBpIDwga2V5bWFwTGFuZ0xXLT5jb3VudCgpOyArK2kpIHsKKwkJUUxp c3RXaWRnZXRJdGVtIGNvbnN0ICogaXRlbSA9IGtleW1hcExhbmdMVy0+aXRlbShpKTsKKwkJc3Ry aW5nIGNvbnN0IGxhbmdjb2RlID0gZnJvbXFzdHIoaXRlbS0+ZGF0YShRdDo6VXNlclJvbGUpLnRv U3RyaW5nKCkpOworCQlzdHJpbmcgY29uc3Qga21hcCA9IGludGVybmFsX3BhdGgoZnJvbXFzdHIo aXRlbS0+ZGF0YShRdDo6VXNlclJvbGUgKyAxKS50b1N0cmluZygpKSk7CisJCXJjLmtleW1hcF9i eV9sYW5ndWFnZVtsYW5nY29kZV0gPSBrbWFwOworCX0KIH0KIAogCiB2b2lkIFByZWZJbnB1dDo6 dXBkYXRlUkMoTHlYUkMgY29uc3QgJiByYykKIHsKLQkvLyBGSVhNRTogY2FuIGRlcml2ZSBDQiBm cm9tIHRoZSB0d28gRURzCisJLy8gRklYTUU6IGNhbiBkZXJpdmUgQ0IgZnJvbSB0aGUgRUQKIAlr ZXltYXBDQi0+c2V0Q2hlY2tlZChyYy51c2Vfa2JtYXApOwotCWZpcnN0S2V5bWFwRUQtPnNldFRl eHQodG9xc3RyKGV4dGVybmFsX3BhdGgocmMucHJpbWFyeV9rYm1hcCkpKTsKLQlzZWNvbmRLZXlt YXBFRC0+c2V0VGV4dCh0b3FzdHIoZXh0ZXJuYWxfcGF0aChyYy5zZWNvbmRhcnlfa2JtYXApKSk7 CisJZmlyc3RLZXltYXBFRC0+c2V0VGV4dCh0b3FzdHIoZXh0ZXJuYWxfcGF0aChyYy5kZWZhdWx0 X2tibWFwKSkpOwogCW1vdXNlV2hlZWxTcGVlZFNCLT5zZXRWYWx1ZShyYy5tb3VzZV93aGVlbF9z cGVlZCk7CiAJc3dpdGNoIChyYy5zY3JvbGxfd2hlZWxfem9vbSkgewogCWNhc2UgTHlYUkM6OlND Uk9MTF9XSEVFTF9aT09NX09GRjoKQEAgLTM5Myw2ICs0MTMsMjAgQEAgdm9pZCBQcmVmSW5wdXQ6 OnVwZGF0ZVJDKEx5WFJDIGNvbnN0ICYgcmMpCiAJfQogCWRvbnRzd2FwQ0ItPnNldENoZWNrZWQo cmMubWFjX2RvbnRzd2FwX2N0cmxfbWV0YSk7CiAJbW1QYXN0ZUNCLT5zZXRDaGVja2VkKHJjLm1v dXNlX21pZGRsZWJ1dHRvbl9wYXN0ZSk7CisKKwlrZXltYXBGb2xsb3dMYW5nQ0ItPnNldENoZWNr ZWQocmMua2V5bWFwX2ZvbGxvd19sYW5ndWFnZSk7CisJa2V5bWFwTGFuZ0xXLT5jbGVhcigpOwor CWZvciAoYXV0byBjb25zdCAmIGxhbmdfbWFwIDogcmMua2V5bWFwX2J5X2xhbmd1YWdlKSB7CisJ CUxhbmd1YWdlIGNvbnN0ICogbGFuZyA9IGxhbmd1YWdlcy5nZXRMYW5ndWFnZShsYW5nX21hcC5m aXJzdCk7CisJCVFTdHJpbmcgY29uc3QgbGFuZ25hbWUgPSBsYW5nID8gcXRfKGxhbmctPmRpc3Bs YXkoKSkKKwkJCTogdG9xc3RyKGxhbmdfbWFwLmZpcnN0KTsKKwkJUVN0cmluZyBjb25zdCBrbWFw ID0gdG9xc3RyKGV4dGVybmFsX3BhdGgobGFuZ19tYXAuc2Vjb25kKSk7CisJCVFMaXN0V2lkZ2V0 SXRlbSAqIGl0ZW0gPQorCQkJbmV3IFFMaXN0V2lkZ2V0SXRlbShsYW5nbmFtZSArICI6ICIgKyBr bWFwLCBrZXltYXBMYW5nTFcpOworCQlpdGVtLT5zZXREYXRhKFF0OjpVc2VyUm9sZSwgdG9xc3Ry KGxhbmdfbWFwLmZpcnN0KSk7CisJCWl0ZW0tPnNldERhdGEoUXQ6OlVzZXJSb2xlICsgMSwga21h cCk7CisJfQorCWtleW1hcExhbmdMVy0+c29ydEl0ZW1zKCk7CiB9CiAKIApAQCAtNDEwLDIyICs0 NDQsMTMgQEAgdm9pZCBQcmVmSW5wdXQ6Om9uX2ZpcnN0S2V5bWFwUEJfY2xpY2tlZChib29sKQog fQogCiAKLXZvaWQgUHJlZklucHV0Ojpvbl9zZWNvbmRLZXltYXBQQl9jbGlja2VkKGJvb2wpCi17 Ci0JUVN0cmluZyBjb25zdCBmaWxlID0gdGVzdEtleW1hcChzZWNvbmRLZXltYXBFRC0+dGV4dCgp KTsKLQlpZiAoIWZpbGUuaXNFbXB0eSgpKQotCQlzZWNvbmRLZXltYXBFRC0+c2V0VGV4dChmaWxl KTsKLX0KLQotCiB2b2lkIFByZWZJbnB1dDo6b25fa2V5bWFwQ0JfdG9nZ2xlZChib29sIGtleW1h cCkKIHsKIAlmaXJzdEtleW1hcExBLT5zZXRFbmFibGVkKGtleW1hcCk7Ci0Jc2Vjb25kS2V5bWFw TEEtPnNldEVuYWJsZWQoa2V5bWFwKTsKIAlmaXJzdEtleW1hcEVELT5zZXRFbmFibGVkKGtleW1h cCk7Ci0Jc2Vjb25kS2V5bWFwRUQtPnNldEVuYWJsZWQoa2V5bWFwKTsKIAlmaXJzdEtleW1hcFBC LT5zZXRFbmFibGVkKGtleW1hcCk7Ci0Jc2Vjb25kS2V5bWFwUEItPnNldEVuYWJsZWQoa2V5bWFw KTsKKwlrZXltYXBGb2xsb3dMYW5nQ0ItPnNldEVuYWJsZWQoa2V5bWFwKTsKKwl1cGRhdGVLZXlt YXBMYW5nRW5hYmxlZCgpOwogfQogCiAKQEAgLTQzNSw2ICs0NjAsODAgQEAgdm9pZCBQcmVmSW5w dXQ6Om9uX3Njcm9sbHpvb21FbmFibGVDQl90b2dnbGVkKGJvb2wgZW5hYmxlZCkKIH0KIAogCit2 b2lkIFByZWZJbnB1dDo6b25fa2V5bWFwRm9sbG93TGFuZ0NCX3RvZ2dsZWQoYm9vbCkKK3sKKwl1 cGRhdGVLZXltYXBMYW5nRW5hYmxlZCgpOworfQorCisKK3ZvaWQgUHJlZklucHV0Ojp1cGRhdGVL ZXltYXBMYW5nRW5hYmxlZCgpCit7CisJYm9vbCBjb25zdCBlbmFibGVkID0ga2V5bWFwQ0ItPmlz Q2hlY2tlZCgpICYmIGtleW1hcEZvbGxvd0xhbmdDQi0+aXNDaGVja2VkKCk7CisJa2V5bWFwTGFu Z0xXLT5zZXRFbmFibGVkKGVuYWJsZWQpOworCWtleW1hcExhbmdDTy0+c2V0RW5hYmxlZChlbmFi bGVkKTsKKwlrZXltYXBMYW5nRUQtPnNldEVuYWJsZWQoZW5hYmxlZCk7CisJa2V5bWFwTGFuZ1BC LT5zZXRFbmFibGVkKGVuYWJsZWQpOworCWtleW1hcExhbmdBZGRQQi0+c2V0RW5hYmxlZChlbmFi bGVkKTsKKwlrZXltYXBMYW5nUmVtb3ZlUEItPnNldEVuYWJsZWQoZW5hYmxlZCAmJiBrZXltYXBM YW5nTFctPmN1cnJlbnRSb3coKSA+PSAwKTsKK30KKworCit2b2lkIFByZWZJbnB1dDo6b25fa2V5 bWFwTGFuZ0xXX2N1cnJlbnRSb3dDaGFuZ2VkKGludCByb3cpCit7CisJa2V5bWFwTGFuZ1JlbW92 ZVBCLT5zZXRFbmFibGVkKHJvdyA+PSAwCisJCSYmIGtleW1hcENCLT5pc0NoZWNrZWQoKSAmJiBr ZXltYXBGb2xsb3dMYW5nQ0ItPmlzQ2hlY2tlZCgpKTsKKwlpZiAocm93IDwgMCkKKwkJcmV0dXJu OworCVFMaXN0V2lkZ2V0SXRlbSBjb25zdCAqIGl0ZW0gPSBrZXltYXBMYW5nTFctPml0ZW0ocm93 KTsKKwlpbnQgY29uc3QgcG9zID0ga2V5bWFwTGFuZ0NPLT5maW5kRGF0YShpdGVtLT5kYXRhKFF0 OjpVc2VyUm9sZSkpOworCWlmIChwb3MgPj0gMCkKKwkJa2V5bWFwTGFuZ0NPLT5zZXRDdXJyZW50 SW5kZXgocG9zKTsKKwlrZXltYXBMYW5nRUQtPnNldFRleHQoaXRlbS0+ZGF0YShRdDo6VXNlclJv bGUgKyAxKS50b1N0cmluZygpKTsKK30KKworCit2b2lkIFByZWZJbnB1dDo6b25fa2V5bWFwTGFu Z1BCX2NsaWNrZWQoYm9vbCkKK3sKKwlRU3RyaW5nIGNvbnN0IGZpbGUgPSB0ZXN0S2V5bWFwKGtl eW1hcExhbmdFRC0+dGV4dCgpKTsKKwlpZiAoIWZpbGUuaXNFbXB0eSgpKQorCQlrZXltYXBMYW5n RUQtPnNldFRleHQoZmlsZSk7Cit9CisKKwordm9pZCBQcmVmSW5wdXQ6OmFkZEtleW1hcExhbmco KQoreworCWludCBjb25zdCBpZHggPSBrZXltYXBMYW5nQ08tPmN1cnJlbnRJbmRleCgpOworCVFT dHJpbmcgY29uc3Qga21hcCA9IGtleW1hcExhbmdFRC0+dGV4dCgpOworCWlmIChpZHggPCAwIHx8 IGttYXAuaXNFbXB0eSgpKQorCQlyZXR1cm47CisKKwlRU3RyaW5nIGNvbnN0IGxhbmdjb2RlID0g a2V5bWFwTGFuZ0NPLT5pdGVtRGF0YShpZHgpLnRvU3RyaW5nKCk7CisJUVN0cmluZyBjb25zdCB0 ZXh0ID0ga2V5bWFwTGFuZ0NPLT5jdXJyZW50VGV4dCgpICsgIjogIiArIGttYXA7CisKKwkvLyBy ZXBsYWNlIGFueSBleGlzdGluZyBlbnRyeSBmb3IgdGhpcyBsYW5ndWFnZQorCWZvciAoaW50IGkg PSAwOyBpIDwga2V5bWFwTGFuZ0xXLT5jb3VudCgpOyArK2kpIHsKKwkJaWYgKGtleW1hcExhbmdM Vy0+aXRlbShpKS0+ZGF0YShRdDo6VXNlclJvbGUpLnRvU3RyaW5nKCkgPT0gbGFuZ2NvZGUpIHsK KwkJCWRlbGV0ZSBrZXltYXBMYW5nTFctPnRha2VJdGVtKGkpOworCQkJYnJlYWs7CisJCX0KKwl9 CisKKwlRTGlzdFdpZGdldEl0ZW0gKiBpdGVtID0gbmV3IFFMaXN0V2lkZ2V0SXRlbSh0ZXh0LCBr ZXltYXBMYW5nTFcpOworCWl0ZW0tPnNldERhdGEoUXQ6OlVzZXJSb2xlLCBsYW5nY29kZSk7CisJ aXRlbS0+c2V0RGF0YShRdDo6VXNlclJvbGUgKyAxLCBrbWFwKTsKKwlrZXltYXBMYW5nTFctPnNv cnRJdGVtcygpOworCWtleW1hcExhbmdMVy0+c2V0Q3VycmVudEl0ZW0oaXRlbSk7Cit9CisKKwor dm9pZCBQcmVmSW5wdXQ6OnJlbW92ZUtleW1hcExhbmcoKQoreworCWludCBjb25zdCByb3cgPSBr ZXltYXBMYW5nTFctPmN1cnJlbnRSb3coKTsKKwlpZiAocm93ID49IDApCisJCWRlbGV0ZSBrZXlt YXBMYW5nTFctPnRha2VJdGVtKHJvdyk7Cit9CisKKwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLwogLy8gUHJl ZkNvbXBsZXRpb24KQEAgLTQ1NzQsNiArNDY3Myw4IEBAIHZvaWQgR3VpUHJlZmVyZW5jZXM6OmRp c3BhdGNoUGFyYW1zKCkKIAogCXRoZU1vdmVycygpID0gbW92ZXJzXzsKIAorCWx5eHJjLmtleW1h cF9ieV9sYW5ndWFnZSA9IHJjXy5rZXltYXBfYnlfbGFuZ3VhZ2U7CisKIAlmb3IgKHN0cmluZyBj b25zdCAmIGNvbG9yIDogY29sb3JzXykKIAkJZGlzcGF0Y2goRnVuY1JlcXVlc3QoTEZVTl9TRVRf Q09MT1IsIGNvbG9yKSk7CiAJY29sb3JzXy5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvc3JjL2Zyb250 ZW5kcy9xdC9HdWlQcmVmcy5oIGIvc3JjL2Zyb250ZW5kcy9xdC9HdWlQcmVmcy5oCmluZGV4IGNh ZTg0ZmVhZTQuLmJhNzRiMTRmYzMgMTAwNjQ0Ci0tLSBhL3NyYy9mcm9udGVuZHMvcXQvR3VpUHJl ZnMuaAorKysgYi9zcmMvZnJvbnRlbmRzL3F0L0d1aVByZWZzLmgKQEAgLTE4MywxMiArMTgzLDE3 IEBAIHB1YmxpYzoKIAogcHJpdmF0ZSBRX1NMT1RTOgogCXZvaWQgb25fZmlyc3RLZXltYXBQQl9j bGlja2VkKGJvb2wpOwotCXZvaWQgb25fc2Vjb25kS2V5bWFwUEJfY2xpY2tlZChib29sKTsKIAl2 b2lkIG9uX2tleW1hcENCX3RvZ2dsZWQoYm9vbCk7CiAJdm9pZCBvbl9zY3JvbGx6b29tRW5hYmxl Q0JfdG9nZ2xlZChib29sKTsKKwl2b2lkIG9uX2tleW1hcEZvbGxvd0xhbmdDQl90b2dnbGVkKGJv b2wpOworCXZvaWQgb25fa2V5bWFwTGFuZ0xXX2N1cnJlbnRSb3dDaGFuZ2VkKGludCk7CisJdm9p ZCBvbl9rZXltYXBMYW5nUEJfY2xpY2tlZChib29sKTsKKwl2b2lkIGFkZEtleW1hcExhbmcoKTsK Kwl2b2lkIHJlbW92ZUtleW1hcExhbmcoKTsKIAogcHJpdmF0ZToKIAlRU3RyaW5nIHRlc3RLZXlt YXAoUVN0cmluZyBjb25zdCAmIGtleW1hcCk7CisJdm9pZCB1cGRhdGVLZXltYXBMYW5nRW5hYmxl ZCgpOwogfTsKIAogCmRpZmYgLS1naXQgYS9zcmMvZnJvbnRlbmRzL3F0L3VpL1ByZWZJbnB1dFVp LnVpIGIvc3JjL2Zyb250ZW5kcy9xdC91aS9QcmVmSW5wdXRVaS51aQppbmRleCBhOTk2MGIyYTJh Li5jYzc4Njc3ZjI2IDEwMDY0NAotLS0gYS9zcmMvZnJvbnRlbmRzL3F0L3VpL1ByZWZJbnB1dFVp LnVpCisrKyBiL3NyYy9mcm9udGVuZHMvcXQvdWkvUHJlZklucHV0VWkudWkKQEAgLTQzLDU5ICs0 MywxNDIgQEAKICAgICAgICAgPC9wcm9wZXJ0eT4KICAgICAgICA8L3dpZGdldD4KICAgICAgIDwv aXRlbT4KLSAgICAgIDxpdGVtIHJvdz0iMiIgY29sdW1uPSIyIj4KLSAgICAgICA8d2lkZ2V0IGNs YXNzPSJRUHVzaEJ1dHRvbiIgbmFtZT0ic2Vjb25kS2V5bWFwUEIiPgorICAgICAgPGl0ZW0gcm93 PSIxIiBjb2x1bW49IjIiPgorICAgICAgIDx3aWRnZXQgY2xhc3M9IlFQdXNoQnV0dG9uIiBuYW1l PSJmaXJzdEtleW1hcFBCIj4KICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImVuYWJsZWQiPgogICAg ICAgICAgPGJvb2w+ZmFsc2U8L2Jvb2w+CiAgICAgICAgIDwvcHJvcGVydHk+CiAgICAgICAgIDxw cm9wZXJ0eSBuYW1lPSJ0ZXh0Ij4KLSAgICAgICAgIDxzdHJpbmc+JmFtcDtCcm93c2UuLi48L3N0 cmluZz4KKyAgICAgICAgIDxzdHJpbmc+QnImYW1wO293c2UuLi48L3N0cmluZz4KICAgICAgICAg PC9wcm9wZXJ0eT4KICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImF1dG9EZWZhdWx0Ij4KICAgICAg ICAgIDxib29sPmZhbHNlPC9ib29sPgogICAgICAgICA8L3Byb3BlcnR5PgogICAgICAgIDwvd2lk Z2V0PgogICAgICAgPC9pdGVtPgotICAgICAgPGl0ZW0gcm93PSIxIiBjb2x1bW49IjIiPgotICAg ICAgIDx3aWRnZXQgY2xhc3M9IlFQdXNoQnV0dG9uIiBuYW1lPSJmaXJzdEtleW1hcFBCIj4KKyAg ICAgIDxpdGVtIHJvdz0iMSIgY29sdW1uPSIwIj4KKyAgICAgICA8d2lkZ2V0IGNsYXNzPSJRTGFi ZWwiIG5hbWU9ImZpcnN0S2V5bWFwTEEiPgogICAgICAgICA8cHJvcGVydHkgbmFtZT0iZW5hYmxl ZCI+CiAgICAgICAgICA8Ym9vbD5mYWxzZTwvYm9vbD4KICAgICAgICAgPC9wcm9wZXJ0eT4KICAg ICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQiPgotICAgICAgICAgPHN0cmluZz5CciZhbXA7b3dz ZS4uLjwvc3RyaW5nPgorICAgICAgICAgPHN0cmluZz4mYW1wO0RlZmF1bHQ6PC9zdHJpbmc+CiAg ICAgICAgIDwvcHJvcGVydHk+Ci0gICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJhdXRvRGVmYXVsdCI+ Ci0gICAgICAgICA8Ym9vbD5mYWxzZTwvYm9vbD4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImJ1 ZGR5Ij4KKyAgICAgICAgIDxjc3RyaW5nPmZpcnN0S2V5bWFwRUQ8L2NzdHJpbmc+CiAgICAgICAg IDwvcHJvcGVydHk+CiAgICAgICAgPC93aWRnZXQ+CiAgICAgICA8L2l0ZW0+Ci0gICAgICA8aXRl bSByb3c9IjIiIGNvbHVtbj0iMCI+Ci0gICAgICAgPHdpZGdldCBjbGFzcz0iUUxhYmVsIiBuYW1l PSJzZWNvbmRLZXltYXBMQSI+CisgICAgICA8aXRlbSByb3c9IjIiIGNvbHVtbj0iMCIgY29sc3Bh bj0iMyI+CisgICAgICAgPHdpZGdldCBjbGFzcz0iUUNoZWNrQm94IiBuYW1lPSJrZXltYXBGb2xs b3dMYW5nQ0IiPgogICAgICAgICA8cHJvcGVydHkgbmFtZT0iZW5hYmxlZCI+CiAgICAgICAgICA8 Ym9vbD5mYWxzZTwvYm9vbD4KICAgICAgICAgPC9wcm9wZXJ0eT4KLSAgICAgICAgPHByb3BlcnR5 IG5hbWU9InRleHQiPgotICAgICAgICAgPHN0cmluZz5TJmFtcDtlY29uZGFyeTo8L3N0cmluZz4K KyAgICAgICAgPHByb3BlcnR5IG5hbWU9InRvb2xUaXAiPgorICAgICAgICAgPHN0cmluZz5JZiBj aGVja2VkLCB0aGUga2V5Ym9hcmQgbWFwIGlzIHNlbGVjdGVkIGF1dG9tYXRpY2FsbHkgYWNjb3Jk aW5nIHRvIHRoZSBsYW5ndWFnZSBhdCB0aGUgY3Vyc29yLCB1c2luZyB0aGUgYXNzaWdubWVudHMg YmVsb3csIGZhbGxpbmcgYmFjayB0byB0aGUgRGVmYXVsdCBtYXAgYWJvdmUgZm9yIGxhbmd1YWdl cyB3aXRob3V0IGFuIGFzc2lnbm1lbnQ8L3N0cmluZz4KICAgICAgICAgPC9wcm9wZXJ0eT4KLSAg ICAgICAgPHByb3BlcnR5IG5hbWU9ImJ1ZGR5Ij4KLSAgICAgICAgIDxjc3RyaW5nPnNlY29uZEtl eW1hcEVEPC9jc3RyaW5nPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0idGV4dCI+CisgICAgICAg ICA8c3RyaW5nPiZhbXA7U2VsZWN0IGtleWJvYXJkIG1hcCBhdXRvbWF0aWNhbGx5IGJ5IGxhbmd1 YWdlPC9zdHJpbmc+CiAgICAgICAgIDwvcHJvcGVydHk+CiAgICAgICAgPC93aWRnZXQ+CiAgICAg ICA8L2l0ZW0+Ci0gICAgICA8aXRlbSByb3c9IjEiIGNvbHVtbj0iMCI+Ci0gICAgICAgPHdpZGdl dCBjbGFzcz0iUUxhYmVsIiBuYW1lPSJmaXJzdEtleW1hcExBIj4KKyAgICAgIDxpdGVtIHJvdz0i MyIgY29sdW1uPSIwIiBjb2xzcGFuPSIyIj4KKyAgICAgICA8d2lkZ2V0IGNsYXNzPSJRTGlzdFdp ZGdldCIgbmFtZT0ia2V5bWFwTGFuZ0xXIj4KICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImVuYWJs ZWQiPgogICAgICAgICAgPGJvb2w+ZmFsc2U8L2Jvb2w+CiAgICAgICAgIDwvcHJvcGVydHk+Ci0g ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0Ij4KLSAgICAgICAgIDxzdHJpbmc+JmFtcDtQcmlt YXJ5Ojwvc3RyaW5nPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2l6ZVBvbGljeSI+CisgICAg ICAgICA8c2l6ZXBvbGljeSBoc2l6ZXR5cGU9IkV4cGFuZGluZyIgdnNpemV0eXBlPSJFeHBhbmRp bmciPgorICAgICAgICAgIDxob3JzdHJldGNoPjA8L2hvcnN0cmV0Y2g+CisgICAgICAgICAgPHZl cnN0cmV0Y2g+MDwvdmVyc3RyZXRjaD4KKyAgICAgICAgIDwvc2l6ZXBvbGljeT4KICAgICAgICAg PC9wcm9wZXJ0eT4KLSAgICAgICAgPHByb3BlcnR5IG5hbWU9ImJ1ZGR5Ij4KLSAgICAgICAgIDxj c3RyaW5nPmZpcnN0S2V5bWFwRUQ8L2NzdHJpbmc+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0 b29sVGlwIj4KKyAgICAgICAgIDxzdHJpbmc+S2V5Ym9hcmQgbWFwIGFzc2lnbmVkIHRvIGVhY2gg bGFuZ3VhZ2U8L3N0cmluZz4KICAgICAgICAgPC9wcm9wZXJ0eT4KICAgICAgICA8L3dpZGdldD4K ICAgICAgIDwvaXRlbT4KLSAgICAgIDxpdGVtIHJvdz0iMyIgY29sdW1uPSIwIiBjb2xzcGFuPSIz Ij4KKyAgICAgIDxpdGVtIHJvdz0iMyIgY29sdW1uPSIyIj4KKyAgICAgICA8bGF5b3V0IGNsYXNz PSJRVkJveExheW91dCIgbmFtZT0idmVydGljYWxMYXlvdXRfa2JtYXBsYW5nIj4KKyAgICAgICAg PGl0ZW0+CisgICAgICAgICA8d2lkZ2V0IGNsYXNzPSJRQ29tYm9Cb3giIG5hbWU9ImtleW1hcExh bmdDTyI+CisgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImVuYWJsZWQiPgorICAgICAgICAgICA8 Ym9vbD5mYWxzZTwvYm9vbD4KKyAgICAgICAgICA8L3Byb3BlcnR5PgorICAgICAgICAgIDxwcm9w ZXJ0eSBuYW1lPSJ0b29sVGlwIj4KKyAgICAgICAgICAgPHN0cmluZz5MYW5ndWFnZSB0byBhc3Np Z24gYSBrZXlib2FyZCBtYXAgdG88L3N0cmluZz4KKyAgICAgICAgICA8L3Byb3BlcnR5PgorICAg ICAgICAgPC93aWRnZXQ+CisgICAgICAgIDwvaXRlbT4KKyAgICAgICAgPGl0ZW0+CisgICAgICAg ICA8bGF5b3V0IGNsYXNzPSJRSEJveExheW91dCIgbmFtZT0iaG9yaXpvbnRhbExheW91dF9rYm1h cGxhbmciPgorICAgICAgICAgIDxpdGVtPgorICAgICAgICAgICA8d2lkZ2V0IGNsYXNzPSJRTGlu ZUVkaXQiIG5hbWU9ImtleW1hcExhbmdFRCI+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0i ZW5hYmxlZCI+CisgICAgICAgICAgICAgPGJvb2w+ZmFsc2U8L2Jvb2w+CisgICAgICAgICAgICA8 L3Byb3BlcnR5PgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRvb2xUaXAiPgorICAgICAg ICAgICAgIDxzdHJpbmc+S2V5Ym9hcmQgbWFwIHRvIHVzZSBmb3IgdGhlIHNlbGVjdGVkIGxhbmd1 YWdlPC9zdHJpbmc+CisgICAgICAgICAgICA8L3Byb3BlcnR5PgorICAgICAgICAgICA8L3dpZGdl dD4KKyAgICAgICAgICA8L2l0ZW0+CisgICAgICAgICAgPGl0ZW0+CisgICAgICAgICAgIDx3aWRn ZXQgY2xhc3M9IlFQdXNoQnV0dG9uIiBuYW1lPSJrZXltYXBMYW5nUEIiPgorICAgICAgICAgICAg PHByb3BlcnR5IG5hbWU9ImVuYWJsZWQiPgorICAgICAgICAgICAgIDxib29sPmZhbHNlPC9ib29s PgorICAgICAgICAgICAgPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0 ZXh0Ij4KKyAgICAgICAgICAgICA8c3RyaW5nPiZhbXA7QnJvd3NlLi4uPC9zdHJpbmc+CisgICAg ICAgICAgICA8L3Byb3BlcnR5PgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImF1dG9EZWZh dWx0Ij4KKyAgICAgICAgICAgICA8Ym9vbD5mYWxzZTwvYm9vbD4KKyAgICAgICAgICAgIDwvcHJv cGVydHk+CisgICAgICAgICAgIDwvd2lkZ2V0PgorICAgICAgICAgIDwvaXRlbT4KKyAgICAgICAg IDwvbGF5b3V0PgorICAgICAgICA8L2l0ZW0+CisgICAgICAgIDxpdGVtPgorICAgICAgICAgPHdp ZGdldCBjbGFzcz0iUVB1c2hCdXR0b24iIG5hbWU9ImtleW1hcExhbmdBZGRQQiI+CisgICAgICAg ICAgPHByb3BlcnR5IG5hbWU9ImVuYWJsZWQiPgorICAgICAgICAgICA8Ym9vbD5mYWxzZTwvYm9v bD4KKyAgICAgICAgICA8L3Byb3BlcnR5PgorICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0 Ij4KKyAgICAgICAgICAgPHN0cmluZz5BJmFtcDtkZDwvc3RyaW5nPgorICAgICAgICAgIDwvcHJv cGVydHk+CisgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImF1dG9EZWZhdWx0Ij4KKyAgICAgICAg ICAgPGJvb2w+ZmFsc2U8L2Jvb2w+CisgICAgICAgICAgPC9wcm9wZXJ0eT4KKyAgICAgICAgIDwv d2lkZ2V0PgorICAgICAgICA8L2l0ZW0+CisgICAgICAgIDxpdGVtPgorICAgICAgICAgPHdpZGdl dCBjbGFzcz0iUVB1c2hCdXR0b24iIG5hbWU9ImtleW1hcExhbmdSZW1vdmVQQiI+CisgICAgICAg ICAgPHByb3BlcnR5IG5hbWU9ImVuYWJsZWQiPgorICAgICAgICAgICA8Ym9vbD5mYWxzZTwvYm9v bD4KKyAgICAgICAgICA8L3Byb3BlcnR5PgorICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0 Ij4KKyAgICAgICAgICAgPHN0cmluZz5SZW1vJmFtcDt2ZTwvc3RyaW5nPgorICAgICAgICAgIDwv cHJvcGVydHk+CisgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImF1dG9EZWZhdWx0Ij4KKyAgICAg ICAgICAgPGJvb2w+ZmFsc2U8L2Jvb2w+CisgICAgICAgICAgPC9wcm9wZXJ0eT4KKyAgICAgICAg IDwvd2lkZ2V0PgorICAgICAgICA8L2l0ZW0+CisgICAgICAgIDxpdGVtPgorICAgICAgICAgPHNw YWNlciBuYW1lPSJ2ZXJ0aWNhbFNwYWNlcl9rYm1hcGxhbmciPgorICAgICAgICAgIDxwcm9wZXJ0 eSBuYW1lPSJvcmllbnRhdGlvbiI+CisgICAgICAgICAgIDxlbnVtPlF0OjpWZXJ0aWNhbDwvZW51 bT4KKyAgICAgICAgICA8L3Byb3BlcnR5PgorICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaXpl SGludCIgc3Rkc2V0PSIwIj4KKyAgICAgICAgICAgPHNpemU+CisgICAgICAgICAgICA8d2lkdGg+ MjA8L3dpZHRoPgorICAgICAgICAgICAgPGhlaWdodD40MDwvaGVpZ2h0PgorICAgICAgICAgICA8 L3NpemU+CisgICAgICAgICAgPC9wcm9wZXJ0eT4KKyAgICAgICAgIDwvc3BhY2VyPgorICAgICAg ICA8L2l0ZW0+CisgICAgICAgPC9sYXlvdXQ+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSBy b3c9IjQiIGNvbHVtbj0iMCIgY29sc3Bhbj0iMyI+CiAgICAgICAgPHdpZGdldCBjbGFzcz0iUUNo ZWNrQm94IiBuYW1lPSJkb250c3dhcENCIj4KICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRvb2xU aXAiPgogICAgICAgICAgPHN0cmluZz5tYWNPUyBzcGVjaWZpYyBzZXR0aW5nIGZvciB1c2Ugd2l0 aCBlbWFjcyBiaW5kaW5ncy4gVGFrZXMgZWZmZWN0IG5leHQgdGltZSBMeVggaXMgbGF1bmNoZWQu PC9zdHJpbmc+CkBAIC0xMDgsMTMgKzE5MSw2IEBACiAgICAgICAgIDwvcHJvcGVydHk+CiAgICAg ICAgPC93aWRnZXQ+CiAgICAgICA8L2l0ZW0+Ci0gICAgICA8aXRlbSByb3c9IjIiIGNvbHVtbj0i MSI+Ci0gICAgICAgPHdpZGdldCBjbGFzcz0iUUxpbmVFZGl0IiBuYW1lPSJzZWNvbmRLZXltYXBF RCI+Ci0gICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJlbmFibGVkIj4KLSAgICAgICAgIDxib29sPmZh bHNlPC9ib29sPgotICAgICAgICA8L3Byb3BlcnR5PgotICAgICAgIDwvd2lkZ2V0PgotICAgICAg PC9pdGVtPgogICAgICA8L2xheW91dD4KICAgICA8L3dpZGdldD4KICAgIDwvaXRlbT4KQEAgLTI5 OSw4ICszNzUsMTMgQEAKICAgPHRhYnN0b3A+a2V5bWFwQ0I8L3RhYnN0b3A+CiAgIDx0YWJzdG9w PmZpcnN0S2V5bWFwRUQ8L3RhYnN0b3A+CiAgIDx0YWJzdG9wPmZpcnN0S2V5bWFwUEI8L3RhYnN0 b3A+Ci0gIDx0YWJzdG9wPnNlY29uZEtleW1hcEVEPC90YWJzdG9wPgotICA8dGFic3RvcD5zZWNv bmRLZXltYXBQQjwvdGFic3RvcD4KKyAgPHRhYnN0b3A+a2V5bWFwRm9sbG93TGFuZ0NCPC90YWJz dG9wPgorICA8dGFic3RvcD5rZXltYXBMYW5nTFc8L3RhYnN0b3A+CisgIDx0YWJzdG9wPmtleW1h cExhbmdDTzwvdGFic3RvcD4KKyAgPHRhYnN0b3A+a2V5bWFwTGFuZ0VEPC90YWJzdG9wPgorICA8 dGFic3RvcD5rZXltYXBMYW5nUEI8L3RhYnN0b3A+CisgIDx0YWJzdG9wPmtleW1hcExhbmdBZGRQ QjwvdGFic3RvcD4KKyAgPHRhYnN0b3A+a2V5bWFwTGFuZ1JlbW92ZVBCPC90YWJzdG9wPgogICA8 dGFic3RvcD5tb3VzZVdoZWVsU3BlZWRTQjwvdGFic3RvcD4KICA8L3RhYnN0b3BzPgogIDxpbmNs dWRlcz4KLS0gCmx5eC1jdnMgbWFpbGluZyBsaXN0Cmx5eC1jdnNAbGlzdHMubHl4Lm9yZwpodHRw czovL2xpc3RzLmx5eC5vcmcvbWFpbG1hbi9saXN0aW5mby9seXgtY3ZzCg==